From c53c7085bc7409a6fbdbd581895ac0d97ebf5a75 Mon Sep 17 00:00:00 2001 From: rasta5man Date: Thu, 7 Aug 2025 21:49:01 +0200 Subject: [PATCH] Initial commit --- config | 10 + databases/backup/tbdata.nosql | 0 databases/bus_departures.js | 190 + databases/departures.table | 2 + databases/pins.table | 14 + databases/settings.table | 2 + databases/tbdata.nosql | 0 databases/zenitel.table | 2 + dayDepartures.txt | 10092 +++++++++++++++++++++++++++ err.txt | 7 + flow/bussdepartures.js | 99 + flow/check_if_new_day.js | 54 + flow/code.js | 90 + flow/comment.js | 11 + flow/csv_import.js | 87 + flow/davkovac.js | 216 + flow/debug.js | 100 + flow/designer.json | 1931 +++++ flow/designer.json_oorig.txt | 1905 +++++ flow/dido_controller_sbs.js | 951 +++ flow/function.js | 137 + flow/get_departures.js | 613 ++ flow/gettemperature.js | 68 + flow/handledepartures.js | 1261 ++++ flow/helper/db_helper.js | 29 + flow/helper/error_reporter.js | 67 + flow/helper/serialport_helper.js | 86 + flow/helper/suncalc.js | 317 + flow/httprequest.js | 238 + flow/httpresponse.js | 76 + flow/httproute.js | 326 + flow/infosender.js | 121 + flow/monitorconsumption.js | 156 + flow/monitordisk.js | 96 + flow/monitormemory.js | 87 + flow/mqtt.js | 441 ++ flow/mqtt_subscribe_temperature.js | 129 + flow/mqttpublish.js | 134 + flow/mqttsubscribe.js | 168 + flow/particulatesensor.js | 267 + flow/rce_modul.js | 634 ++ flow/rce_peoplecount.js | 79 + flow/send_to_display.js | 84 + flow/serialport_helper.js | 86 + flow/sokolovodchody.js | 704 ++ flow/suncalc.js | 317 + flow/tcpipclient.js | 96 + flow/tcpipisend.js | 96 + flow/tcpipserver.js | 169 + flow/timer.js | 87 + flow/timesetter.js | 129 + flow/trigger.js | 79 + flow/variables.txt | 0 flow/virtualwirein.js | 43 + flow/virtualwireout.js | 41 + flow/wsmqttpublish.js | 554 ++ monitor.txt | 0 odchod.js | 65 + package.json | 30 + readme.md | 12 + 60 files changed, 23885 insertions(+) create mode 100644 config create mode 100644 databases/backup/tbdata.nosql create mode 100644 databases/bus_departures.js create mode 100644 databases/departures.table create mode 100644 databases/pins.table create mode 100644 databases/settings.table create mode 100644 databases/tbdata.nosql create mode 100644 databases/zenitel.table create mode 100644 dayDepartures.txt create mode 100644 err.txt create mode 100644 flow/bussdepartures.js create mode 100644 flow/check_if_new_day.js create mode 100644 flow/code.js create mode 100644 flow/comment.js create mode 100644 flow/csv_import.js create mode 100644 flow/davkovac.js create mode 100644 flow/debug.js create mode 100644 flow/designer.json create mode 100644 flow/designer.json_oorig.txt create mode 100644 flow/dido_controller_sbs.js create mode 100644 flow/function.js create mode 100644 flow/get_departures.js create mode 100644 flow/gettemperature.js create mode 100644 flow/handledepartures.js create mode 100644 flow/helper/db_helper.js create mode 100644 flow/helper/error_reporter.js create mode 100644 flow/helper/serialport_helper.js create mode 100644 flow/helper/suncalc.js create mode 100644 flow/httprequest.js create mode 100644 flow/httpresponse.js create mode 100644 flow/httproute.js create mode 100644 flow/infosender.js create mode 100644 flow/monitorconsumption.js create mode 100644 flow/monitordisk.js create mode 100644 flow/monitormemory.js create mode 100644 flow/mqtt.js create mode 100644 flow/mqtt_subscribe_temperature.js create mode 100644 flow/mqttpublish.js create mode 100644 flow/mqttsubscribe.js create mode 100644 flow/particulatesensor.js create mode 100644 flow/rce_modul.js create mode 100644 flow/rce_peoplecount.js create mode 100644 flow/send_to_display.js create mode 100644 flow/serialport_helper.js create mode 100644 flow/sokolovodchody.js create mode 100644 flow/suncalc.js create mode 100644 flow/tcpipclient.js create mode 100644 flow/tcpipisend.js create mode 100644 flow/tcpipserver.js create mode 100644 flow/timer.js create mode 100644 flow/timesetter.js create mode 100644 flow/trigger.js create mode 100644 flow/variables.txt create mode 100644 flow/virtualwirein.js create mode 100644 flow/virtualwireout.js create mode 100644 flow/wsmqttpublish.js create mode 100644 monitor.txt create mode 100644 odchod.js create mode 100644 package.json create mode 100644 readme.md diff --git a/config b/config new file mode 100644 index 0000000..63ab007 --- /dev/null +++ b/config @@ -0,0 +1,10 @@ +name : Total.js Flow +default_timezone: Europe/Bratislava + +// Packages settings +package#flow (Object) : { url: '/', auth: ['admin:aaaAAA111'] } + +table.pins : pin:string|type:string|tbname_demo:string|tbname_qas01:string|tbname_prod01:string|contactor:number +table.settings : temperature_adress:string|latitude:number|longitude:number|projects_id:number +table.zenitel : allCalls:string +table.departures: departures:string diff --git a/databases/backup/tbdata.nosql b/databases/backup/tbdata.nosql new file mode 100644 index 0000000..e69de29 diff --git a/databases/bus_departures.js b/databases/bus_departures.js new file mode 100644 index 0000000..412e4a4 --- /dev/null +++ b/databases/bus_departures.js @@ -0,0 +1,190 @@ +module.exports = [ + ["3","04:09","Závodu míru",["25"]], + ["3","04:29","Závodu míru",["X"]], + ["1","04:50","Březová, aut. st.",["X"]], + ["3","04:52","Závodu míru",["X"]], + ["3","04:56","Závodu míru",["6+","25"]], + ["3","05:02","Závodu míru",["X"]], + ["4","05:05","Závodu míru",["X"]], + ["6","05:07","Sídl.Michal škola",["X","42"]], + ["6","05:07","Závodu míru",["X","32"]], + ["3","05:09","Závodu míru",["X","42"]], + ["3","05:22","Závodu míru",["X"]], + ["1","05:23","Březová, aut. st.",["X"]], + ["6","05:34","Sídl.Michal škola",["X","42"]], + ["4","05:35","Stará Ovčárna",["X"]], + ["3","05:36","sídl.Michal škola",["X","42"]], + ["3","05:38","Sídliště Michal",["X","32"]], + ["1","05:47","Březová, aut. st.",["6+","25"]], + ["1","05:51","Březová, aut. st.",["X"]], + ["3","05:57","Závodu míru",["6+","25"]], + ["3","05:58","Závodu míru",["X"]], + ["6","06:04","Sídl.Michal škola",["X","42"]], + ["1","06:13","Březová, aut. st.",["X"]], + ["3","06:16","Závodu míru",["X","42"]], + ["3","06:19","Závodu míru",["X","32"]], + ["3","06:24","Sídliště Michal",["X"]], + ["3","06:24","Závodu míru",["6+","25"]], + ["4","06:31","Závodu míru",["X","42"]], + ["6","06:32","Sídl.Michal škola",["X","32"]], + ["3","06:34","Závodu míru",["X"]], + ["6","06:34","Sídl.Michal škola",["X","42"]], + ["1","06:46","Březová, aut. st.",["X"]], + ["33","06:49","sídl.Michal škola",["X","42"]], + ["3","06:56","Závodu míru",["X","32"]], + ["3","06:56","Závodu míru",["X","42"]], + ["3","06:56","Závodu míru",["6+"]], + ["1","06:57","Březová, aut. st.",["6+","25"]], + ["3","07:04","Závodu míru",["X"]], + ["1","07:05","Březová, aut. st.",["X"]], + ["3","07:14","Závodu míru",["X"]], + ["3","07:19","Závodu míru",["6+"]], + ["6","07:23","Sídl.Michal škola",["X","42"]], + ["33","07:27","sídl.Michal škola",["17"]], + ["3","07:27","Sídliště Michal",["X","32"]], + ["2","07:31","Sídliště Michal",["X","42"]], + ["3","07:34","Závodu míru",["X","42"]], + ["4","07:34","Závodu míru",["X"]], + ["1","07:35","Březová, aut. st.",["X"]], + ["3","07:45","Sídliště Michal",["X"]], + ["3","07:51","Závodu míru",["6+"]], + ["33","07:54","sídl.Michal škola",["X","42"]], + ["3","07:54","Závodu míru",["17"]], + ["1","07:55","Březová, aut. st.",["X"]], + ["1","07:57","Březová, aut. st.",["6+"]], + ["3","07:58","Závodu míru",["X","42"]], + ["3","08:10","Závodu míru",["X","32"]], + ["3","08:15","Závodu míru",["X","42"]], + ["3","08:15","Závodu míru",["6+"]], + ["1","08:18","Březová, aut. st.",["X"]], + ["33","08:29","sídl.Michal škola",["X"]], + ["3","08:34","Závodu míru",["X"]], + ["3","08:50","Stará Ovčárna",["X"]], + ["3","08:51","Závodu míru",["6+"]], + ["33","08:54","sídl.Michal škola",["X"]], + ["1","08:57","Březová, aut. st.",["6+"]], + ["3","09:04","Závodu míru",["X"]], + ["1","09:09","Březová, aut. st.",["X"]], + ["3","09:20","Závodu míru",["6+"]], + ["3","09:24","Závodu míru",["X"]], + ["33","09:34","sídl.Michal škola",["X"]], + ["4","09:41","Sídliště Michal",["X"]], + ["1","09:44","Březová, aut. st.",["6+"]], + ["3","09:45","Závodu míru",["X"]], + ["3","09:51","Závodu míru",["6+"]], + ["1","09:58","Březová, aut. st.",["X"]], + ["3","09:59","Jezero Michal",["X"]], + ["7","10:14","Březová, aut.st.",["X"]], + ["3","10:19","Závodu míru",["6+"]], + ["33","10:24","sídl.Michal škola",["X"]], + ["3","10:40","Závodu míru",["X"]], + ["1","10:55","Březová, aut. st.",["X"]], + ["3","10:55","Závodu míru",["X"]], + ["1","10:57","Březová, aut. st.",["6+"]], + ["3","11:02","Závodu míru",["6+"]], + ["3","11:17","Závodu míru",["X"]], + ["33","11:29","sídl.Michal škola",["X"]], + ["3","11:29","Závodu míru",["6+"]], + ["3","11:44","Závodu míru",["X"]], + ["1","11:46","Březová, aut. st.",["X"]], + ["1","11:49","Březová, aut. st.",["6+"]], + ["3","11:51","Závodu míru",["6+"]], + ["33","11:56","sídl.Michal škola",["X"]], + ["3","12:05","Závodu míru",["X"]], + ["3","12:19","Závodu míru",["6+"]], + ["3","12:24","Jezero Michal",["X"]], + ["1","12:33","Březová, aut. st.",["X"]], + ["3","12:44","Závodu míru",["X"]], + ["3","12:51","Závodu míru",["6+"]], + ["1","12:57","Březová, aut. st.",["6+"]], + ["3","12:59","Závodu míru",["X"]], + ["6","12:59","Sídl.Michal škola",["X","42"]], + ["33","13:04","sídl.Michal škola",["X"]], + ["1","13:06","Březová, aut. st.",["X"]], + ["3","13:15","Závodu míru",["X"]], + ["2","13:17","Sídliště Michal",["X"]], + ["1","13:22","Březová, aut. st.",["X"]], + ["3","13:24","Stará Ovčárna",["X"]], + ["3","13:28","Závodu míru",["6+"]], + ["33","13:39","sídl.Michal škola",["X"]], + ["1","13:48","Březová, aut. st.",["X"]], + ["3","13:51","Závodu míru",["6+"]], + ["1","13:57","Březová, aut. st.",["6+"]], + ["33","14:04","sídl.Michal škola",["X"]], + ["6","14:04","Sídl.Michal škola",["X"]], + ["4","14:06","Stará Ovčárna",["X"]], + ["3","14:09","Závodu míru",["X"]], + ["1","14:10","Březová, aut. st.",["X"]], + ["3","14:19","Závodu míru",["6+"]], + ["3","14:21","Závodu míru",["X"]], + ["1","14:34","Březová, aut. st.",["X"]], + ["6","14:34","Sídl.Michal škola",["X"]], + ["4","14:42","Závodu míru",["X"]], + ["3","14:43","Závodu míru",["X"]], + ["33","14:46","sídl.Michal škola",["X"]], + ["1","14:49","Březová, aut. st.",["6+"]], + ["3","14:51","Závodu míru",["6+"]], + ["3","14:52","Závodu míru",["X"]], + ["1","15:09","Březová, aut. st.",["X"]], + ["33","15:09","sídl.Michal škola",["X"]], + ["3","15:13","Závodu míru",["X"]], + ["6","15:14","Sídl.Michal škola",["X"]], + ["3","15:19","Závodu míru",["6+"]], + ["3","15:23","Sokolov, Hrušková",["X","42"]], + ["3","15:30","Závodu míru",["X"]], + ["1","15:31","Březová, aut. st.",["X"]], + ["33","15:39","sídl.Michal škola",["X"]], + ["3","15:39","Jezero Michal",["X"]], + ["3","15:51","Závodu míru",["6+"]], + ["7","15:54","Březová, aut.st.",["X"]], + ["1","15:57","Březová, aut. st.",["6+"]], + ["3","16:00","sídl.Michal škola",["X","42"]], + ["4","16:06","Závodu míru",["X"]], + ["33","16:14","sídl.Michal škola",["X"]], + ["3","16:14","Závodu míru",["X"]], + ["1","16:21","Březová, aut. st.",["X"]], + ["3","16:28","Závodu míru",["6+"]], + ["7","16:29","Březová, aut.st.",["X"]], + ["3","16:35","Závodu míru",["X"]], + ["6","16:44","Sídl.Michal škola",["X","42"]], + ["3","16:48","Závodu míru",["X"]], + ["4","16:51","Závodu míru",["X","42"]], + ["3","16:53","Závodu míru",["6+"]], + ["1","16:57","Březová, aut. st.",["6+"]], + ["7","16:59","Březová, aut.st.",["X"]], + ["3","17:09","Jezero Michal",["X"]], + ["3","17:14","Závodu míru",["6+"]], + ["3","17:18","Závodu míru",["X"]], + ["3","17:34","Závodu míru",["X"]], + ["1","17:38","Březová, aut. st.",["X"]], + ["3","17:51","Závodu míru",["6+"]], + ["3","17:57","Závodu míru",["X"]], + ["3","18:14","Závodu míru",["X"]], + ["3","18:21","Závodu míru",["X"]], + ["3","18:21","Stará Ovčárna",["6+"]], + ["1","18:24","Březová, aut. st.",["6+"]], + ["1","18:26","Březová, aut. st.",["X"]], + ["3","18:34","Závodu míru",["X"]], + ["3","18:51","Závodu míru",["6+"]], + ["3","18:54","Závodu míru",["X"]], + ["1","19:08","Březová, aut. st.",["X"]], + ["3","19:14","Závodu míru",["6+","24"]], + ["3","19:19","Závodu míru",["X","31"]], + ["3","19:34","Závodu míru",["X","31"]], + ["1","19:53","Březová, aut. st.",["X","31"]], + ["3","19:54","Závodu míru",["X","31","6+","24"]], + ["1","19:57","Březová, aut. st.",["6+","24"]], + ["3","20:19","Závodu míru",["X","31"]], + ["1","20:28","Březová, aut. st.",["6+","24"]], + ["3","20:49","Závodu míru",["X","31","6+","24"]], + ["1","20:55","Březová, aut. st.",["X","31"]], + ["3","21:09","Závodu míru",["X","31"]], + ["1","21:23","Březová, aut. st.",["6+","24"]], + ["3","21:24","Stará Ovčárna",["X","31"]], + ["3","21:24","Závodu míru",["6+","24"]], + ["1","21:38","Březová, aut. st.",["X","31"]], + ["3","22:04","Závodu míru",["6+","24"]], + ["3","22:12","Stará Ovčárna",["X","31"]], + ["1","22:28","Březová, aut. st.",["X","31"]], + ["3","22:41","Závodu míru",["X","31"]], +]; \ No newline at end of file diff --git a/databases/departures.table b/databases/departures.table new file mode 100644 index 0000000..a7943c1 --- /dev/null +++ b/databases/departures.table @@ -0,0 +1,2 @@ +departures:string +*|Column1;Column2;Column3;Column4;Column5;Column6;Column7%0D%0AExport odjezdů ze dne;09.07.2025;09:29;;;;%0D%0AZastávka;Sokolov,,ul.Jednoty drogerie;;;;;%0D%0AObdobí;09.07.2025;31.08.2025;;;;%0D%0A;;;;;;%0D%0AKód datumové masky;Datumová maska;;;;;%0D%0AX01;111111111111111111111111111111111111111111111111111111;;;;;%0D%0AX02;111001111100111110011111001111100111110011111001111100;;;;;%0D%0AX03;000110000011000001100000110000011000001100000110000011;;;;;%0D%0A;;;;;;%0D%0ALinka;Spoj;Čas odjezdu;Nástupiště;Cílová obec spoje;Čas příjezdu do konečné zastávky spoje;Kód datumové masky%0D%0A3;;4:09;;Sokolov,,Závodu míru;4:20;X01%0D%0A3;;4:24;;Sokolov,,Závodu míru;4:35;X02%0D%0A1;;4:50;;Březová,,aut.st.;5:02;X02%0D%0A3;;4:52;;Sokolov,,Závodu míru;5:03;X02%0D%0A3;;4:56;;Sokolov,,Závodu míru;5:07;X03%0D%0A3;;5:02;;Sokolov,,Závodu míru;5:14;X02%0D%0A4;;5:05;;Sokolov,,Závodu míru;5:19;X02%0D%0A6;;5:07;;Sokolov,,Závodu míru;5:15;X02%0D%0A3;;5:22;;Sokolov,,Závodu míru;5:34;X02%0D%0A1;;5:23;;Březová,,aut.st.;5:36;X02%0D%0A3;;5:40;;Sokolov,,sídl.Michal;5:49;X02%0D%0A4;;5:40;;Sokolov,Stará ovčárna;5:58;X02%0D%0A1;;5:47;;Březová,,aut.st.;5:59;X03%0D%0A1;;5:51;;Březová,,aut.st.;6:10;X02%0D%0A3;;5:57;;Sokolov,,Závodu míru;6:08;X03%0D%0A3;;6:00;;Sokolov,,Závodu míru;6:11;X02%0D%0A1;;6:13;;Březová,,aut.st.;6:26;X02%0D%0A3;;6:19;;Sokolov,,Závodu míru;6:30;X02%0D%0A3;;6:24;;Sokolov,,sídl.Michal;6:33;X02%0D%0A3;;6:24;;Sokolov,,Závodu míru;6:35;X03%0D%0A6;;6:27;;Sokolov,,sídl.Michal škola;6:38;X02%0D%0A3;;6:39;;Sokolov,,Závodu míru;6:50;X02%0D%0A1;;6:46;;Březová,,aut.st.;7:05;X02%0D%0A3;;6:56;;Sokolov,,Závodu míru;7:07;X01%0D%0A3;;6:59;;Sokolov,,Závodu míru;7:10;X02%0D%0A1;;7:01;;Březová,,aut.st.;7:13;X03%0D%0A1;;7:05;;Březová,,aut.st.;7:21;X02%0D%0A3;;7:19;;Sokolov,,Závodu míru;7:30;X01%0D%0A3;;7:27;;Sokolov,,sídl.Michal;7:36;X02%0D%0A1;;7:35;;Březová,,aut.st.;7:48;X02%0D%0A4;;7:36;;Sokolov,,Závodu míru;7:51;X02%0D%0A3;;7:45;;Sokolov,,sídl.Michal;7:53;X02%0D%0A3;;7:51;;Sokolov,,Závodu míru;8:02;X03%0D%0A1;;7:55;;Březová,,aut.st.;8:08;X02%0D%0A1;;7:57;;Březová,,aut.st.;8:09;X03%0D%0A3;;8:13;;Sokolov,,Závodu míru;8:24;X02%0D%0A3;;8:15;;Sokolov,,Závodu míru;8:26;X03%0D%0A1;;8:18;;Březová,,aut.st.;8:31;X02%0D%0A33;;8:29;;Sokolov,Těšovice;8:37;X02%0D%0A3;;8:34;;Sokolov,,Závodu míru;8:45;X02%0D%0A3;;8:50;;Sokolov,Stará ovčárna;9:04;X02%0D%0A3;;8:51;;Sokolov,,Závodu míru;9:02;X03%0D%0A33;;8:54;;Sokolov,Těšovice;9:02;X02%0D%0A1;;8:57;;Březová,,aut.st.;9:09;X03%0D%0A3;;9:04;;Sokolov,,Závodu míru;9:15;X02%0D%0A1;;9:09;;Březová,,aut.st.;9:30;X02%0D%0A3;;9:20;;Sokolov,,Závodu míru;9:31;X03%0D%0A3;;9:24;;Sokolov,,Závodu míru;9:36;X02%0D%0A33;;9:34;;Sokolov,Těšovice;9:42;X02%0D%0A4;;9:43;;Sokolov,,sídl.Michal;9:55;X02%0D%0A1;;9:44;;Březová,,aut.st.;9:56;X03%0D%0A3;;9:45;;Sokolov,,Závodu míru;9:55;X02%0D%0A3;;9:51;;Sokolov,,Závodu míru;10:02;X03%0D%0A1;;9:58;;Březová,,aut.st.;10:11;X02%0D%0A3;;9:59;;Sokolov,,jezero Michal;10:15;X02%0D%0A7;;10:14;;Březová,,aut.st.;10:33;X02%0D%0A3;;10:19;;Sokolov,,Závodu míru;10:30;X03%0D%0A33;;10:24;;Sokolov,Těšovice;10:32;X02%0D%0A3;;10:40;;Sokolov,,Závodu míru;10:51;X02%0D%0A1;;10:55;;Březová,,aut.st.;11:08;X02%0D%0A3;;10:55;;Sokolov,,Závodu míru;11:08;X02%0D%0A1;;10:57;;Březová,,aut.st.;11:09;X03%0D%0A3;;11:02;;Sokolov,,Závodu míru;11:13;X03%0D%0A3;;11:17;;Sokolov,,Závodu míru;11:28;X02%0D%0A3;;11:29;;Sokolov,,Závodu míru;11:40;X03%0D%0A33;;11:29;;Sokolov,Těšovice;11:37;X02%0D%0A3;;11:44;;Sokolov,,Závodu míru;11:55;X02%0D%0A1;;11:46;;Březová,,aut.st.;12:05;X02%0D%0A1;;11:49;;Březová,,aut.st.;12:09;X03%0D%0A3;;11:51;;Sokolov,,Závodu míru;12:02;X03%0D%0A33;;11:56;;Sokolov,Těšovice;12:04;X02%0D%0A3;;12:07;;Sokolov,,Závodu míru;12:17;X02%0D%0A3;;12:19;;Sokolov,,Závodu míru;12:30;X03%0D%0A3;;12:24;;Sokolov,,jezero Michal;12:40;X02%0D%0A1;;12:33;;Březová,,aut.st.;12:46;X02%0D%0A3;;12:44;;Sokolov,,Závodu míru;12:55;X02%0D%0A3;;12:51;;Sokolov,,Závodu míru;13:02;X03%0D%0A1;;12:57;;Březová,,aut.st.;13:09;X03%0D%0A3;;12:59;;Sokolov,,Závodu míru;13:10;X02%0D%0A33;;13:04;;Sokolov,Těšovice;13:12;X02%0D%0A1;;13:06;;Březová,,aut.st.;13:25;X02%0D%0A3;;13:15;;Sokolov,,Závodu míru;13:26;X02%0D%0A2;;13:17;;Sokolov,,sídl.Michal;13:26;X02%0D%0A1;;13:22;;Březová,,aut.st.;13:35;X02%0D%0A3;;13:24;;Sokolov,Stará ovčárna;13:40;X02%0D%0A3;;13:28;;Sokolov,,Závodu míru;13:39;X03%0D%0A33;;13:34;;Sokolov,Těšovice;13:42;X02%0D%0A1;;13:48;;Březová,,aut.st.;14:02;X02%0D%0A3;;13:51;;Sokolov,,Závodu míru;14:02;X03%0D%0A1;;13:59;;Březová,,aut.st.;14:11;X03%0D%0A6;;13:59;;Sokolov,,sídl.Michal škola;14:09;X02%0D%0A4;;14:03;;Sokolov,Stará ovčárna;14:20;X02%0D%0A33;;14:04;;Sokolov,Těšovice;14:12;X02%0D%0A3;;14:09;;Sokolov,,Závodu míru;14:20;X02%0D%0A1;;14:10;;Březová,,aut.st.;14:23;X02%0D%0A3;;14:19;;Sokolov,,Závodu míru;14:31;X03%0D%0A3;;14:21;;Sokolov,,Závodu míru;14:32;X02%0D%0A1;;14:34;;Březová,,aut.st.;14:50;X02%0D%0A6;;14:34;;Sokolov,,sídl.Michal škola;14:45;X02%0D%0A3;;14:43;;Sokolov,,Závodu míru;14:55;X02%0D%0A4;;14:44;;Sokolov,,Závodu míru;14:59;X02%0D%0A33;;14:46;;Sokolov,Těšovice;14:54;X02%0D%0A1;;14:51;;Březová,,aut.st.;15:03;X03%0D%0A3;;14:51;;Sokolov,,Závodu míru;15:02;X03%0D%0A3;;14:52;;Sokolov,,Závodu míru;15:03;X02%0D%0A1;;15:09;;Březová,,aut.st.;15:23;X02%0D%0A33;;15:09;;Sokolov,Těšovice;15:17;X02%0D%0A3;;15:13;;Sokolov,,Závodu míru;15:24;X02%0D%0A6;;15:14;;Sokolov,,sídl.Michal škola;15:25;X02%0D%0A3;;15:20;;Sokolov,,Závodu míru;15:31;X03%0D%0A1;;15:31;;Březová,,aut.st.;15:50;X02%0D%0A3;;15:34;;Sokolov,,Závodu míru;15:44;X02%0D%0A3;;15:39;;Sokolov,,jezero Michal;15:55;X02%0D%0A33;;15:39;;Sokolov,Těšovice;15:47;X02%0D%0A3;;15:51;;Sokolov,,Závodu míru;16:02;X03%0D%0A7;;15:54;;Březová,,aut.st.;16:13;X02%0D%0A1;;15:57;;Březová,,aut.st.;16:09;X03%0D%0A4;;16:05;;Sokolov,,Závodu míru;16:20;X02%0D%0A3;;16:14;;Sokolov,,Závodu míru;16:25;X02%0D%0A33;;16:16;;Sokolov,Těšovice;16:24;X02%0D%0A1;;16:21;;Březová,,aut.st.;16:40;X02%0D%0A3;;16:28;;Sokolov,,Závodu míru;16:39;X03%0D%0A7;;16:29;;Březová,,aut.st.;16:48;X02%0D%0A3;;16:37;;Sokolov,,Závodu míru;16:48;X02%0D%0A3;;16:48;;Sokolov,,Závodu míru;16:59;X02%0D%0A3;;16:50;;Sokolov,,Závodu míru;17:01;X03%0D%0A1;;16:57;;Březová,,aut.st.;17:09;X03%0D%0A7;;16:59;;Březová,,aut.st.;17:18;X02%0D%0A3;;17:12;;Sokolov,,jezero Michal;17:28;X02%0D%0A3;;17:17;;Sokolov,,Závodu míru;17:28;X03%0D%0A3;;17:18;;Sokolov,,Závodu míru;17:28;X02%0D%0A3;;17:34;;Sokolov,,Závodu míru;17:45;X02%0D%0A1;;17:38;;Březová,,aut.st.;17:53;X02%0D%0A3;;17:51;;Sokolov,,Závodu míru;18:02;X03%0D%0A3;;17:57;;Sokolov,,Závodu míru;18:09;X02%0D%0A3;;18:14;;Sokolov,,Závodu míru;18:25;X02%0D%0A3;;18:21;;Sokolov,,Závodu míru;18:33;X02%0D%0A3;;18:21;;Sokolov,Stará ovčárna;18:35;X03%0D%0A1;;18:24;;Březová,,aut.st.;18:36;X03%0D%0A1;;18:26;;Březová,,aut.st.;18:45;X02%0D%0A3;;18:34;;Sokolov,,Závodu míru;18:45;X02%0D%0A3;;18:51;;Sokolov,,Závodu míru;19:02;X03%0D%0A3;;18:54;;Sokolov,,Závodu míru;19:05;X02%0D%0A1;;19:08;;Březová,,aut.st.;19:23;X02%0D%0A3;;19:14;;Sokolov,,Závodu míru;19:25;X03%0D%0A3;;19:19;;Sokolov,,Závodu míru;19:30;X02%0D%0A3;;19:34;;Sokolov,,Závodu míru;19:45;X02%0D%0A1;;19:53;;Březová,,aut.st.;20:07;X02%0D%0A3;;19:54;;Sokolov,,Závodu míru;20:05;X03%0D%0A3;;19:56;;Sokolov,,Závodu míru;20:07;X02%0D%0A1;;19:57;;Březová,,aut.st.;20:09;X03%0D%0A3;;20:19;;Sokolov,,Závodu míru;20:30;X02%0D%0A1;;20:28;;Březová,,aut.st.;20:41;X03%0D%0A3;;20:49;;Sokolov,,Závodu míru;21:00;X01%0D%0A1;;20:55;;Březová,,aut.st.;21:07;X02%0D%0A3;;21:09;;Sokolov,,Závodu míru;21:20;X02%0D%0A1;;21:23;;Březová,,aut.st.;21:36;X03%0D%0A3;;21:24;;Sokolov,Stará ovčárna;21:37;X02%0D%0A3;;21:27;;Sokolov,,Závodu míru;21:38;X03%0D%0A1;;21:38;;Březová,,aut.st.;21:51;X02%0D%0A3;;22:05;;Sokolov,,Závodu míru;22:16;X03%0D%0A3;;22:12;;Sokolov,Stará ovčárna;22:25;X02%0D%0A1;;22:28;;Březová,,aut.st.;22:41;X02%0D%0A3;;22:41;;Sokolov,,Závodu míru;22:52;X02%0D%0A|............................................................................................................................................................................................................................................................................................................................................................................................................................................................... diff --git a/databases/pins.table b/databases/pins.table new file mode 100644 index 0000000..15acb60 --- /dev/null +++ b/databases/pins.table @@ -0,0 +1,14 @@ +pin:string|type:string|tbname_demo:string|tbname_qas01:string|tbname_prod01:string|contactor:number ++|al_osvetlenie|state_of_relay|p2rwdP7aGoOQLJNgAynEdKD6xWXbmMe3nvZqlzkV|o8ZzVA4jrXLmRPnvGBkDDak6ayWbg32Y9KwdxqJN|nJL5lPMwBx23YpqRe0rpZ47damXvWVbOrD4gNzy8|0|............. ++|al_defibrilator|state_of_relay|rQx3NGKgVMRaXYAo9y19OQyZzkWnj1le6bdOLE20|2qKyjDVBNowRvLzWxd5LBRk1JXY4mp9PA3gl6OGZ|XMBbew5z4ELrZa2mRAd3Q978vPN6gy3DdVYlpKjq|0|............. ++|al_poe_switch|state_of_relay|nreBJ6PMqgz20pYEL82JMk8G1jkWwdQxZVNAOlmK|9rKRNEDXVYzWb0qZmlQjnqQn3jByxv42a6LPJ1oM|gYbDLqlyZVoRerQpB72MovkWJnwM5z24POKa8Exj|1|............. ++|al_obrazovka|state_of_relay|klN4JpQAx362o9XYZDNPpQ5grWw1P7GEbdBM0vRV|dYBAenlq4zxv9jEZgaQqLq52ODyLoWKmGR06V1JP|zdQO8GwxDqjRgP4137YVPoANyKlpem2nL65rvVJY|1|............. ++|al_zasuvky|state_of_relay|ZmYXEbw9lVWRv1jLxDeJQYydgAMz4PKQnNJ6eB23|dYBAenlq4zxv9jEZgaQqLq52ODyLoWKmGR06V1JP|WlVJBygjDZMeKX3vnAMR5L08NqdmG2x1Y69LQ4P5|1|............. ++|al_breaker_12v|breaker_12V_on|zXBoWbEZjO0lrpqnRyoO0GykmVeaNAGdL9g4QKxP|6nO4xlGE3zKVJdRXYZkMBK7BA28DoyMLg1pe9bar|E6Kg9oDnLWyzPRMva7v5YykJxp4VG58qO2w1lZYe|0|............. ++|al_breaker_48v|breaker_48V_on|zXBoWbEZjO0lrpqnRyoO0GykmVeaNAGdL9g4QKxP|6nO4xlGE3zKVJdRXYZkMBK7BA28DoyMLg1pe9bar|E6Kg9oDnLWyzPRMva7v5YykJxp4VG58qO2w1lZYe|0|............. ++|al_istic_obrazovka|screen_breaker_on|zXBoWbEZjO0lrpqnRyoO0GykmVeaNAGdL9g4QKxP|6nO4xlGE3zKVJdRXYZkMBK7BA28DoyMLg1pe9bar|E6Kg9oDnLWyzPRMva7v5YykJxp4VG58qO2w1lZYe|0|............. ++|al_istic_socket|socket_breaker_on|zXBoWbEZjO0lrpqnRyoO0GykmVeaNAGdL9g4QKxP|6nO4xlGE3zKVJdRXYZkMBK7BA28DoyMLg1pe9bar|E6Kg9oDnLWyzPRMva7v5YykJxp4VG58qO2w1lZYe|0|............. ++|al_istic_heater|heater_breaker_on|zXBoWbEZjO0lrpqnRyoO0GykmVeaNAGdL9g4QKxP|6nO4xlGE3zKVJdRXYZkMBK7BA28DoyMLg1pe9bar|E6Kg9oDnLWyzPRMva7v5YykJxp4VG58qO2w1lZYe|0|............. ++|al_dverovy_kontakt|door_condition|zXBoWbEZjO0lrpqnRyoO0GykmVeaNAGdL9g4QKxP|6nO4xlGE3zKVJdRXYZkMBK7BA28DoyMLg1pe9bar|E6Kg9oDnLWyzPRMva7v5YykJxp4VG58qO2w1lZYe|0|............. ++|28ACE575D0013CDE|temperature_out|zXBoWbEZjO0lrpqnRyoO0GykmVeaNAGdL9g4QKxP|6nO4xlGE3zKVJdRXYZkMBK7BA28DoyMLg1pe9bar|E6Kg9oDnLWyzPRMva7v5YykJxp4VG58qO2w1lZYe|0|............. ++|28667676E0013C21|temperature|zXBoWbEZjO0lrpqnRyoO0GykmVeaNAGdL9g4QKxP|6nO4xlGE3zKVJdRXYZkMBK7BA28DoyMLg1pe9bar|E6Kg9oDnLWyzPRMva7v5YykJxp4VG58qO2w1lZYe|0|............. diff --git a/databases/settings.table b/databases/settings.table new file mode 100644 index 0000000..7982b81 --- /dev/null +++ b/databases/settings.table @@ -0,0 +1,2 @@ +temperature_adress:string|latitude:number|longitude:number|projects_id:number ++|28.635577911802|49.4366840086877|18.794087022543|39|........... diff --git a/databases/tbdata.nosql b/databases/tbdata.nosql new file mode 100644 index 0000000..e69de29 diff --git a/databases/zenitel.table b/databases/zenitel.table new file mode 100644 index 0000000..19b88a6 --- /dev/null +++ b/databases/zenitel.table @@ -0,0 +1,2 @@ +allCalls:string ++|{"no_of_incoming":12016,"no_of_outgoing":40451}|................... diff --git a/dayDepartures.txt b/dayDepartures.txt new file mode 100644 index 0000000..1134c95 --- /dev/null +++ b/dayDepartures.txt @@ -0,0 +1,10092 @@ +["29.5","Ctvrtek"] +["3","04:29","Závodu míru",["X"]] +["1","04:50","Březová, aut. st.",["X"]] +["3","04:52","Závodu míru",["X"]] +["3","05:02","Závodu míru",["X"]] +["4","05:05","Závodu míru",["X"]] +["6","05:07","Sídl. Michal škola",["X","42"]] +["6","05:07","Závodu míru",["X","32"]] +["3","05:09","Závodu míru",["X","42"]] +["3","05:22","Závodu míru",["X"]] +["1","05:23","Březová, aut. st.",["X"]] +["6","05:34","Sídl. Michal škola",["X","42"]] +["4","05:35","Stará Ovčárna",["X"]] +["3","05:36","Sídl. Michal škola",["X","42"]] +["3","05:38","Sídliště Michal",["X","32"]] +["1","05:51","Březová, aut. st.",["X"]] +["3","05:58","Závodu míru",["X"]] +["6","06:04","Sídl. Michal škola",["X","42"]] +["1","06:13","Březová, aut. st.",["X"]] +["3","06:16","Závodu míru",["X","42"]] +["3","06:19","Závodu míru",["X","32"]] +["3","06:24","Sídliště Michal",["X"]] +["4","06:31","Závodu míru",["X","42"]] +["6","06:32","Sídl. Michal škola",["X","32"]] +["3","06:34","Závodu míru",["X"]] +["6","06:34","Sídl. Michal škola",["X","42"]] +["1","06:46","Březová, aut. st.",["X"]] +["33","06:49","Sídl. Michal škola",["X","42"]] +["3","06:56","Závodu míru",["X","32"]] +["3","06:56","Závodu míru",["X","42"]] +["3","07:04","Závodu míru",["X"]] +["1","07:05","Březová, aut. st.",["X"]] +["3","07:14","Závodu míru",["X"]] +["6","07:23","Sídl. Michal škola",["X","42"]] +["3","07:27","Sídliště Michal",["X","32"]] +["2","07:31","Sídliště Michal",["X","42"]] +["3","07:34","Závodu míru",["X","42"]] +["4","07:34","Závodu míru",["X"]] +["1","07:35","Březová, aut. st.",["X"]] +["3","07:45","Sídliště Michal",["X"]] +["33","07:54","Sídl. Michal škola",["X","42"]] +["1","07:55","Březová, aut. st.",["X"]] +["3","07:58","Závodu míru",["X","42"]] +["3","08:10","Závodu míru",["X","32"]] +["3","08:15","Závodu míru",["X","42"]] +["1","08:18","Březová, aut. st.",["X"]] +["33","08:29","Sídl. Michal škola",["X"]] +["3","08:34","Závodu míru",["X"]] +["3","08:50","Stará Ovčárna",["X"]] +["33","08:54","Sídl. Michal škola",["X"]] +["3","09:04","Závodu míru",["X"]] +["1","09:09","Březová, aut. st.",["X"]] +["3","09:24","Závodu míru",["X"]] +["33","09:34","Sídl. Michal škola",["X"]] +["4","09:41","Sídliště Michal",["X"]] +["3","09:45","Závodu míru",["X"]] +["1","09:58","Březová, aut. st.",["X"]] +["3","09:59","Jezero Michal",["X"]] +["7","10:14","Březová, aut.st.",["X"]] +["33","10:24","Sídl. Michal škola",["X"]] +["3","10:40","Závodu míru",["X"]] +["1","10:55","Březová, aut. st.",["X"]] +["3","10:55","Závodu míru",["X"]] +["3","11:17","Závodu míru",["X"]] +["33","11:29","Sídl. Michal škola",["X"]] +["3","11:44","Závodu míru",["X"]] +["1","11:46","Březová, aut. st.",["X"]] +["33","11:56","Sídl. Michal škola",["X"]] +["3","12:05","Závodu míru",["X"]] +["3","12:24","Jezero Michal",["X"]] +["1","12:33","Březová, aut. st.",["X"]] +["3","12:44","Závodu míru",["X"]] +["3","12:59","Závodu míru",["X"]] +["6","12:59","Sídl. Michal škola",["X","42"]] +["33","13:04","Sídl. Michal škola",["X"]] +["1","13:06","Březová, aut. st.",["X"]] +["3","13:15","Závodu míru",["X"]] +["2","13:17","Sídliště Michal",["X"]] +["1","13:22","Březová, aut. st.",["X"]] +["3","13:24","Stará Ovčárna",["X"]] +["33","13:39","Sídl. Michal škola",["X"]] +["1","13:48","Březová, aut. st.",["X"]] +["33","14:04","Sídl. Michal škola",["X"]] +["6","14:04","Sídl. Michal škola",["X"]] +["4","14:06","Stará Ovčárna",["X"]] +["3","14:09","Závodu míru",["X"]] +["1","14:10","Březová, aut. st.",["X"]] +["3","14:21","Závodu míru",["X"]] +["1","14:34","Březová, aut. st.",["X"]] +["6","14:34","Sídl. Michal škola",["X"]] +["4","14:42","Závodu míru",["X"]] +["3","14:43","Závodu míru",["X"]] +["33","14:46","Sídl. Michal škola",["X"]] +["3","14:52","Závodu míru",["X"]] +["1","15:09","Březová, aut. st.",["X"]] +["33","15:09","Sídl. Michal škola",["X"]] +["3","15:13","Závodu míru",["X"]] +["6","15:14","Sídl. Michal škola",["X"]] +["3","15:23","Sokolov, Hrušková",["X","42"]] +["3","15:30","Závodu míru",["X"]] +["1","15:31","Březová, aut. st.",["X"]] +["33","15:39","Sídl. Michal škola",["X"]] +["3","15:39","Jezero Michal",["X"]] +["7","15:54","Březová, aut.st.",["X"]] +["3","16:00","Sídl. Michal škola",["X","42"]] +["4","16:06","Závodu míru",["X"]] +["33","16:14","Sídl. Michal škola",["X"]] +["3","16:14","Závodu míru",["X"]] +["1","16:21","Březová, aut. st.",["X"]] +["7","16:29","Březová, aut.st.",["X"]] +["3","16:35","Závodu míru",["X"]] +["6","16:44","Sídl. Michal škola",["X","42"]] +["3","16:48","Závodu míru",["X"]] +["4","16:51","Závodu míru",["X","42"]] +["7","16:59","Březová, aut.st.",["X"]] +["3","17:09","Jezero Michal",["X"]] +["3","17:18","Závodu míru",["X"]] +["3","17:34","Závodu míru",["X"]] +["1","17:38","Březová, aut. st.",["X"]] +["3","17:57","Závodu míru",["X"]] +["3","18:14","Závodu míru",["X"]] +["3","18:21","Závodu míru",["X"]] +["1","18:26","Březová, aut. st.",["X"]] +["3","18:34","Závodu míru",["X"]] +["3","18:54","Závodu míru",["X"]] +["1","19:08","Březová, aut. st.",["X"]] +["3","19:19","Závodu míru",["X","31"]] +["3","19:34","Závodu míru",["X","31"]] +["1","19:53","Březová, aut. st.",["X","31"]] +["3","19:54","Závodu míru",["X","31"]] +["3","20:19","Závodu míru",["X","31"]] +["3","20:49","Závodu míru",["X","31"]] +["1","20:55","Březová, aut. st.",["X","31"]] +["3","21:09","Závodu míru",["X","31"]] +["3","21:24","Stará Ovčárna",["X","31"]] +["1","21:38","Březová, aut. st.",["X","31"]] +["3","22:12","Stará Ovčárna",["X","31"]] +["1","22:28","Březová, aut. st.",["X","31"]] +["3","22:41","Závodu míru",["X","31"]] + +["29.5","Ctvrtek"] +["3","04:29","Závodu míru",["X"]] +["1","04:50","Březová, aut. st.",["X"]] +["3","04:52","Závodu míru",["X"]] +["3","05:02","Závodu míru",["X"]] +["4","05:05","Závodu míru",["X"]] +["6","05:07","Sídl. Michal škola",["X","42"]] +["6","05:07","Závodu míru",["X","32"]] +["3","05:09","Závodu míru",["X","42"]] +["3","05:22","Závodu míru",["X"]] +["1","05:23","Březová, aut. st.",["X"]] +["6","05:34","Sídl. Michal škola",["X","42"]] +["4","05:35","Stará Ovčárna",["X"]] +["3","05:36","Sídl. Michal škola",["X","42"]] +["3","05:38","Sídliště Michal",["X","32"]] +["1","05:51","Březová, aut. st.",["X"]] +["3","05:58","Závodu míru",["X"]] +["6","06:04","Sídl. Michal škola",["X","42"]] +["1","06:13","Březová, aut. st.",["X"]] +["3","06:16","Závodu míru",["X","42"]] +["3","06:19","Závodu míru",["X","32"]] +["3","06:24","Sídliště Michal",["X"]] +["4","06:31","Závodu míru",["X","42"]] +["6","06:32","Sídl. Michal škola",["X","32"]] +["3","06:34","Závodu míru",["X"]] +["6","06:34","Sídl. Michal škola",["X","42"]] +["1","06:46","Březová, aut. st.",["X"]] +["33","06:49","Sídl. Michal škola",["X","42"]] +["3","06:56","Závodu míru",["X","32"]] +["3","06:56","Závodu míru",["X","42"]] +["3","07:04","Závodu míru",["X"]] +["1","07:05","Březová, aut. st.",["X"]] +["3","07:14","Závodu míru",["X"]] +["6","07:23","Sídl. Michal škola",["X","42"]] +["3","07:27","Sídliště Michal",["X","32"]] +["2","07:31","Sídliště Michal",["X","42"]] +["3","07:34","Závodu míru",["X","42"]] +["4","07:34","Závodu míru",["X"]] +["1","07:35","Březová, aut. st.",["X"]] +["3","07:45","Sídliště Michal",["X"]] +["33","07:54","Sídl. Michal škola",["X","42"]] +["1","07:55","Březová, aut. st.",["X"]] +["3","07:58","Závodu míru",["X","42"]] +["3","08:10","Závodu míru",["X","32"]] +["3","08:15","Závodu míru",["X","42"]] +["1","08:18","Březová, aut. st.",["X"]] +["33","08:29","Sídl. Michal škola",["X"]] +["3","08:34","Závodu míru",["X"]] +["3","08:50","Stará Ovčárna",["X"]] +["33","08:54","Sídl. Michal škola",["X"]] +["3","09:04","Závodu míru",["X"]] +["1","09:09","Březová, aut. st.",["X"]] +["3","09:24","Závodu míru",["X"]] +["33","09:34","Sídl. Michal škola",["X"]] +["4","09:41","Sídliště Michal",["X"]] +["3","09:45","Závodu míru",["X"]] +["1","09:58","Březová, aut. st.",["X"]] +["3","09:59","Jezero Michal",["X"]] +["7","10:14","Březová, aut.st.",["X"]] +["33","10:24","Sídl. Michal škola",["X"]] +["3","10:40","Závodu míru",["X"]] +["1","10:55","Březová, aut. st.",["X"]] +["3","10:55","Závodu míru",["X"]] +["3","11:17","Závodu míru",["X"]] +["33","11:29","Sídl. Michal škola",["X"]] +["3","11:44","Závodu míru",["X"]] +["1","11:46","Březová, aut. st.",["X"]] +["33","11:56","Sídl. Michal škola",["X"]] +["3","12:05","Závodu míru",["X"]] +["3","12:24","Jezero Michal",["X"]] +["1","12:33","Březová, aut. st.",["X"]] +["3","12:44","Závodu míru",["X"]] +["3","12:59","Závodu míru",["X"]] +["6","12:59","Sídl. Michal škola",["X","42"]] +["33","13:04","Sídl. Michal škola",["X"]] +["1","13:06","Březová, aut. st.",["X"]] +["3","13:15","Závodu míru",["X"]] +["2","13:17","Sídliště Michal",["X"]] +["1","13:22","Březová, aut. st.",["X"]] +["3","13:24","Stará Ovčárna",["X"]] +["33","13:39","Sídl. Michal škola",["X"]] +["1","13:48","Březová, aut. st.",["X"]] +["33","14:04","Sídl. Michal škola",["X"]] +["6","14:04","Sídl. Michal škola",["X"]] +["4","14:06","Stará Ovčárna",["X"]] +["3","14:09","Závodu míru",["X"]] +["1","14:10","Březová, aut. st.",["X"]] +["3","14:21","Závodu míru",["X"]] +["1","14:34","Březová, aut. st.",["X"]] +["6","14:34","Sídl. Michal škola",["X"]] +["4","14:42","Závodu míru",["X"]] +["3","14:43","Závodu míru",["X"]] +["33","14:46","Sídl. Michal škola",["X"]] +["3","14:52","Závodu míru",["X"]] +["1","15:09","Březová, aut. st.",["X"]] +["33","15:09","Sídl. Michal škola",["X"]] +["3","15:13","Závodu míru",["X"]] +["6","15:14","Sídl. Michal škola",["X"]] +["3","15:23","Sokolov, Hrušková",["X","42"]] +["3","15:30","Závodu míru",["X"]] +["1","15:31","Březová, aut. st.",["X"]] +["33","15:39","Sídl. Michal škola",["X"]] +["3","15:39","Jezero Michal",["X"]] +["7","15:54","Březová, aut.st.",["X"]] +["3","16:00","Sídl. Michal škola",["X","42"]] +["4","16:06","Závodu míru",["X"]] +["33","16:14","Sídl. Michal škola",["X"]] +["3","16:14","Závodu míru",["X"]] +["1","16:21","Březová, aut. st.",["X"]] +["7","16:29","Březová, aut.st.",["X"]] +["3","16:35","Závodu míru",["X"]] +["6","16:44","Sídl. Michal škola",["X","42"]] +["3","16:48","Závodu míru",["X"]] +["4","16:51","Závodu míru",["X","42"]] +["7","16:59","Březová, aut.st.",["X"]] +["3","17:09","Jezero Michal",["X"]] +["3","17:18","Závodu míru",["X"]] +["3","17:34","Závodu míru",["X"]] +["1","17:38","Březová, aut. st.",["X"]] +["3","17:57","Závodu míru",["X"]] +["3","18:14","Závodu míru",["X"]] +["3","18:21","Závodu míru",["X"]] +["1","18:26","Březová, aut. st.",["X"]] +["3","18:34","Závodu míru",["X"]] +["3","18:54","Závodu míru",["X"]] +["1","19:08","Březová, aut. st.",["X"]] +["3","19:19","Závodu míru",["X","31"]] +["3","19:34","Závodu míru",["X","31"]] +["1","19:53","Březová, aut. st.",["X","31"]] +["3","19:54","Závodu míru",["X","31"]] +["3","20:19","Závodu míru",["X","31"]] +["3","20:49","Závodu míru",["X","31"]] +["1","20:55","Březová, aut. st.",["X","31"]] +["3","21:09","Závodu míru",["X","31"]] +["3","21:24","Stará Ovčárna",["X","31"]] +["1","21:38","Březová, aut. st.",["X","31"]] +["3","22:12","Stará Ovčárna",["X","31"]] +["1","22:28","Březová, aut. st.",["X","31"]] +["3","22:41","Závodu míru",["X","31"]] + +["29.5","Ctvrtek"] +["3","04:29","Závodu míru",["X"]] +["1","04:50","Březová, aut. st.",["X"]] +["3","04:52","Závodu míru",["X"]] +["3","05:02","Závodu míru",["X"]] +["4","05:05","Závodu míru",["X"]] +["6","05:07","Sídl. Michal škola",["X","42"]] +["6","05:07","Závodu míru",["X","32"]] +["3","05:09","Závodu míru",["X","42"]] +["3","05:22","Závodu míru",["X"]] +["1","05:23","Březová, aut. st.",["X"]] +["6","05:34","Sídl. Michal škola",["X","42"]] +["4","05:35","Stará Ovčárna",["X"]] +["3","05:36","Sídl. Michal škola",["X","42"]] +["3","05:38","Sídliště Michal",["X","32"]] +["1","05:51","Březová, aut. st.",["X"]] +["3","05:58","Závodu míru",["X"]] +["6","06:04","Sídl. Michal škola",["X","42"]] +["1","06:13","Březová, aut. st.",["X"]] +["3","06:16","Závodu míru",["X","42"]] +["3","06:19","Závodu míru",["X","32"]] +["3","06:24","Sídliště Michal",["X"]] +["4","06:31","Závodu míru",["X","42"]] +["6","06:32","Sídl. Michal škola",["X","32"]] +["3","06:34","Závodu míru",["X"]] +["6","06:34","Sídl. Michal škola",["X","42"]] +["1","06:46","Březová, aut. st.",["X"]] +["33","06:49","Sídl. Michal škola",["X","42"]] +["3","06:56","Závodu míru",["X","32"]] +["3","06:56","Závodu míru",["X","42"]] +["3","07:04","Závodu míru",["X"]] +["1","07:05","Březová, aut. st.",["X"]] +["3","07:14","Závodu míru",["X"]] +["6","07:23","Sídl. Michal škola",["X","42"]] +["3","07:27","Sídliště Michal",["X","32"]] +["2","07:31","Sídliště Michal",["X","42"]] +["3","07:34","Závodu míru",["X","42"]] +["4","07:34","Závodu míru",["X"]] +["1","07:35","Březová, aut. st.",["X"]] +["3","07:45","Sídliště Michal",["X"]] +["33","07:54","Sídl. Michal škola",["X","42"]] +["1","07:55","Březová, aut. st.",["X"]] +["3","07:58","Závodu míru",["X","42"]] +["3","08:10","Závodu míru",["X","32"]] +["3","08:15","Závodu míru",["X","42"]] +["1","08:18","Březová, aut. st.",["X"]] +["33","08:29","Sídl. Michal škola",["X"]] +["3","08:34","Závodu míru",["X"]] +["3","08:50","Stará Ovčárna",["X"]] +["33","08:54","Sídl. Michal škola",["X"]] +["3","09:04","Závodu míru",["X"]] +["1","09:09","Březová, aut. st.",["X"]] +["3","09:24","Závodu míru",["X"]] +["33","09:34","Sídl. Michal škola",["X"]] +["4","09:41","Sídliště Michal",["X"]] +["3","09:45","Závodu míru",["X"]] +["1","09:58","Březová, aut. st.",["X"]] +["3","09:59","Jezero Michal",["X"]] +["7","10:14","Březová, aut.st.",["X"]] +["33","10:24","Sídl. Michal škola",["X"]] +["3","10:40","Závodu míru",["X"]] +["1","10:55","Březová, aut. st.",["X"]] +["3","10:55","Závodu míru",["X"]] +["3","11:17","Závodu míru",["X"]] +["33","11:29","Sídl. Michal škola",["X"]] +["3","11:44","Závodu míru",["X"]] +["1","11:46","Březová, aut. st.",["X"]] +["33","11:56","Sídl. Michal škola",["X"]] +["3","12:05","Závodu míru",["X"]] +["3","12:24","Jezero Michal",["X"]] +["1","12:33","Březová, aut. st.",["X"]] +["3","12:44","Závodu míru",["X"]] +["3","12:59","Závodu míru",["X"]] +["6","12:59","Sídl. Michal škola",["X","42"]] +["33","13:04","Sídl. Michal škola",["X"]] +["1","13:06","Březová, aut. st.",["X"]] +["3","13:15","Závodu míru",["X"]] +["2","13:17","Sídliště Michal",["X"]] +["1","13:22","Březová, aut. st.",["X"]] +["3","13:24","Stará Ovčárna",["X"]] +["33","13:39","Sídl. Michal škola",["X"]] +["1","13:48","Březová, aut. st.",["X"]] +["33","14:04","Sídl. Michal škola",["X"]] +["6","14:04","Sídl. Michal škola",["X"]] +["4","14:06","Stará Ovčárna",["X"]] +["3","14:09","Závodu míru",["X"]] +["1","14:10","Březová, aut. st.",["X"]] +["3","14:21","Závodu míru",["X"]] +["1","14:34","Březová, aut. st.",["X"]] +["6","14:34","Sídl. Michal škola",["X"]] +["4","14:42","Závodu míru",["X"]] +["3","14:43","Závodu míru",["X"]] +["33","14:46","Sídl. Michal škola",["X"]] +["3","14:52","Závodu míru",["X"]] +["1","15:09","Březová, aut. st.",["X"]] +["33","15:09","Sídl. Michal škola",["X"]] +["3","15:13","Závodu míru",["X"]] +["6","15:14","Sídl. Michal škola",["X"]] +["3","15:23","Sokolov, Hrušková",["X","42"]] +["3","15:30","Závodu míru",["X"]] +["1","15:31","Březová, aut. st.",["X"]] +["33","15:39","Sídl. Michal škola",["X"]] +["3","15:39","Jezero Michal",["X"]] +["7","15:54","Březová, aut.st.",["X"]] +["3","16:00","Sídl. Michal škola",["X","42"]] +["4","16:06","Závodu míru",["X"]] +["33","16:14","Sídl. Michal škola",["X"]] +["3","16:14","Závodu míru",["X"]] +["1","16:21","Březová, aut. st.",["X"]] +["7","16:29","Březová, aut.st.",["X"]] +["3","16:35","Závodu míru",["X"]] +["6","16:44","Sídl. Michal škola",["X","42"]] +["3","16:48","Závodu míru",["X"]] +["4","16:51","Závodu míru",["X","42"]] +["7","16:59","Březová, aut.st.",["X"]] +["3","17:09","Jezero Michal",["X"]] +["3","17:18","Závodu míru",["X"]] +["3","17:34","Závodu míru",["X"]] +["1","17:38","Březová, aut. st.",["X"]] +["3","17:57","Závodu míru",["X"]] +["3","18:14","Závodu míru",["X"]] +["3","18:21","Závodu míru",["X"]] +["1","18:26","Březová, aut. st.",["X"]] +["3","18:34","Závodu míru",["X"]] +["3","18:54","Závodu míru",["X"]] +["1","19:08","Březová, aut. st.",["X"]] +["3","19:19","Závodu míru",["X","31"]] +["3","19:34","Závodu míru",["X","31"]] +["1","19:53","Březová, aut. st.",["X","31"]] +["3","19:54","Závodu míru",["X","31"]] +["3","20:19","Závodu míru",["X","31"]] +["3","20:49","Závodu míru",["X","31"]] +["1","20:55","Březová, aut. st.",["X","31"]] +["3","21:09","Závodu míru",["X","31"]] +["3","21:24","Stará Ovčárna",["X","31"]] +["1","21:38","Březová, aut. st.",["X","31"]] +["3","22:12","Stará Ovčárna",["X","31"]] +["1","22:28","Březová, aut. st.",["X","31"]] +["3","22:41","Závodu míru",["X","31"]] + +["30.5","Patek"] +["3","04:29","Závodu míru",["X"]] +["1","04:50","Březová, aut. st.",["X"]] +["3","04:52","Závodu míru",["X"]] +["3","05:02","Závodu míru",["X"]] +["4","05:05","Závodu míru",["X"]] +["6","05:07","Sídl. Michal škola",["X","42"]] +["6","05:07","Závodu míru",["X","32"]] +["3","05:09","Závodu míru",["X","42"]] +["3","05:22","Závodu míru",["X"]] +["1","05:23","Březová, aut. st.",["X"]] +["6","05:34","Sídl. Michal škola",["X","42"]] +["4","05:35","Stará Ovčárna",["X"]] +["3","05:36","Sídl. Michal škola",["X","42"]] +["3","05:38","Sídliště Michal",["X","32"]] +["1","05:51","Březová, aut. st.",["X"]] +["3","05:58","Závodu míru",["X"]] +["6","06:04","Sídl. Michal škola",["X","42"]] +["1","06:13","Březová, aut. st.",["X"]] +["3","06:16","Závodu míru",["X","42"]] +["3","06:19","Závodu míru",["X","32"]] +["3","06:24","Sídliště Michal",["X"]] +["4","06:31","Závodu míru",["X","42"]] +["6","06:32","Sídl. Michal škola",["X","32"]] +["3","06:34","Závodu míru",["X"]] +["6","06:34","Sídl. Michal škola",["X","42"]] +["1","06:46","Březová, aut. st.",["X"]] +["33","06:49","Sídl. Michal škola",["X","42"]] +["3","06:56","Závodu míru",["X","32"]] +["3","06:56","Závodu míru",["X","42"]] +["3","07:04","Závodu míru",["X"]] +["1","07:05","Březová, aut. st.",["X"]] +["3","07:14","Závodu míru",["X"]] +["6","07:23","Sídl. Michal škola",["X","42"]] +["3","07:27","Sídliště Michal",["X","32"]] +["2","07:31","Sídliště Michal",["X","42"]] +["3","07:34","Závodu míru",["X","42"]] +["4","07:34","Závodu míru",["X"]] +["1","07:35","Březová, aut. st.",["X"]] +["3","07:45","Sídliště Michal",["X"]] +["33","07:54","Sídl. Michal škola",["X","42"]] +["1","07:55","Březová, aut. st.",["X"]] +["3","07:58","Závodu míru",["X","42"]] +["3","08:10","Závodu míru",["X","32"]] +["3","08:15","Závodu míru",["X","42"]] +["1","08:18","Březová, aut. st.",["X"]] +["33","08:29","Sídl. Michal škola",["X"]] +["3","08:34","Závodu míru",["X"]] +["3","08:50","Stará Ovčárna",["X"]] +["33","08:54","Sídl. Michal škola",["X"]] +["3","09:04","Závodu míru",["X"]] +["1","09:09","Březová, aut. st.",["X"]] +["3","09:24","Závodu míru",["X"]] +["33","09:34","Sídl. Michal škola",["X"]] +["4","09:41","Sídliště Michal",["X"]] +["3","09:45","Závodu míru",["X"]] +["1","09:58","Březová, aut. st.",["X"]] +["3","09:59","Jezero Michal",["X"]] +["7","10:14","Březová, aut.st.",["X"]] +["33","10:24","Sídl. Michal škola",["X"]] +["3","10:40","Závodu míru",["X"]] +["1","10:55","Březová, aut. st.",["X"]] +["3","10:55","Závodu míru",["X"]] +["3","11:17","Závodu míru",["X"]] +["33","11:29","Sídl. Michal škola",["X"]] +["3","11:44","Závodu míru",["X"]] +["1","11:46","Březová, aut. st.",["X"]] +["33","11:56","Sídl. Michal škola",["X"]] +["3","12:05","Závodu míru",["X"]] +["3","12:24","Jezero Michal",["X"]] +["1","12:33","Březová, aut. st.",["X"]] +["3","12:44","Závodu míru",["X"]] +["3","12:59","Závodu míru",["X"]] +["6","12:59","Sídl. Michal škola",["X","42"]] +["33","13:04","Sídl. Michal škola",["X"]] +["1","13:06","Březová, aut. st.",["X"]] +["3","13:15","Závodu míru",["X"]] +["2","13:17","Sídliště Michal",["X"]] +["1","13:22","Březová, aut. st.",["X"]] +["3","13:24","Stará Ovčárna",["X"]] +["33","13:39","Sídl. Michal škola",["X"]] +["1","13:48","Březová, aut. st.",["X"]] +["33","14:04","Sídl. Michal škola",["X"]] +["6","14:04","Sídl. Michal škola",["X"]] +["4","14:06","Stará Ovčárna",["X"]] +["3","14:09","Závodu míru",["X"]] +["1","14:10","Březová, aut. st.",["X"]] +["3","14:21","Závodu míru",["X"]] +["1","14:34","Březová, aut. st.",["X"]] +["6","14:34","Sídl. Michal škola",["X"]] +["4","14:42","Závodu míru",["X"]] +["3","14:43","Závodu míru",["X"]] +["33","14:46","Sídl. Michal škola",["X"]] +["3","14:52","Závodu míru",["X"]] +["1","15:09","Březová, aut. st.",["X"]] +["33","15:09","Sídl. Michal škola",["X"]] +["3","15:13","Závodu míru",["X"]] +["6","15:14","Sídl. Michal škola",["X"]] +["3","15:23","Sokolov, Hrušková",["X","42"]] +["3","15:30","Závodu míru",["X"]] +["1","15:31","Březová, aut. st.",["X"]] +["33","15:39","Sídl. Michal škola",["X"]] +["3","15:39","Jezero Michal",["X"]] +["7","15:54","Březová, aut.st.",["X"]] +["3","16:00","Sídl. Michal škola",["X","42"]] +["4","16:06","Závodu míru",["X"]] +["33","16:14","Sídl. Michal škola",["X"]] +["3","16:14","Závodu míru",["X"]] +["1","16:21","Březová, aut. st.",["X"]] +["7","16:29","Březová, aut.st.",["X"]] +["3","16:35","Závodu míru",["X"]] +["6","16:44","Sídl. Michal škola",["X","42"]] +["3","16:48","Závodu míru",["X"]] +["4","16:51","Závodu míru",["X","42"]] +["7","16:59","Březová, aut.st.",["X"]] +["3","17:09","Jezero Michal",["X"]] +["3","17:18","Závodu míru",["X"]] +["3","17:34","Závodu míru",["X"]] +["1","17:38","Březová, aut. st.",["X"]] +["3","17:57","Závodu míru",["X"]] +["3","18:14","Závodu míru",["X"]] +["3","18:21","Závodu míru",["X"]] +["1","18:26","Březová, aut. st.",["X"]] +["3","18:34","Závodu míru",["X"]] +["3","18:54","Závodu míru",["X"]] +["1","19:08","Březová, aut. st.",["X"]] +["3","19:19","Závodu míru",["X","31"]] +["3","19:34","Závodu míru",["X","31"]] +["1","19:53","Březová, aut. st.",["X","31"]] +["3","19:54","Závodu míru",["X","31"]] +["3","20:19","Závodu míru",["X","31"]] +["3","20:49","Závodu míru",["X","31"]] +["1","20:55","Březová, aut. st.",["X","31"]] +["3","21:09","Závodu míru",["X","31"]] +["3","21:24","Stará Ovčárna",["X","31"]] +["1","21:38","Březová, aut. st.",["X","31"]] +["3","22:12","Stará Ovčárna",["X","31"]] +["1","22:28","Březová, aut. st.",["X","31"]] +["3","22:41","Závodu míru",["X","31"]] + +["30.5","Patek"] +["3","04:29","Závodu míru",["X"]] +["1","04:50","Březová, aut. st.",["X"]] +["3","04:52","Závodu míru",["X"]] +["3","05:02","Závodu míru",["X"]] +["4","05:05","Závodu míru",["X"]] +["6","05:07","Sídl. Michal škola",["X","42"]] +["6","05:07","Závodu míru",["X","32"]] +["3","05:09","Závodu míru",["X","42"]] +["3","05:22","Závodu míru",["X"]] +["1","05:23","Březová, aut. st.",["X"]] +["6","05:34","Sídl. Michal škola",["X","42"]] +["4","05:35","Stará Ovčárna",["X"]] +["3","05:36","Sídl. Michal škola",["X","42"]] +["3","05:38","Sídliště Michal",["X","32"]] +["1","05:51","Březová, aut. st.",["X"]] +["3","05:58","Závodu míru",["X"]] +["6","06:04","Sídl. Michal škola",["X","42"]] +["1","06:13","Březová, aut. st.",["X"]] +["3","06:16","Závodu míru",["X","42"]] +["3","06:19","Závodu míru",["X","32"]] +["3","06:24","Sídliště Michal",["X"]] +["4","06:31","Závodu míru",["X","42"]] +["6","06:32","Sídl. Michal škola",["X","32"]] +["3","06:34","Závodu míru",["X"]] +["6","06:34","Sídl. Michal škola",["X","42"]] +["1","06:46","Březová, aut. st.",["X"]] +["33","06:49","Sídl. Michal škola",["X","42"]] +["3","06:56","Závodu míru",["X","32"]] +["3","06:56","Závodu míru",["X","42"]] +["3","07:04","Závodu míru",["X"]] +["1","07:05","Březová, aut. st.",["X"]] +["3","07:14","Závodu míru",["X"]] +["6","07:23","Sídl. Michal škola",["X","42"]] +["3","07:27","Sídliště Michal",["X","32"]] +["2","07:31","Sídliště Michal",["X","42"]] +["3","07:34","Závodu míru",["X","42"]] +["4","07:34","Závodu míru",["X"]] +["1","07:35","Březová, aut. st.",["X"]] +["3","07:45","Sídliště Michal",["X"]] +["33","07:54","Sídl. Michal škola",["X","42"]] +["1","07:55","Březová, aut. st.",["X"]] +["3","07:58","Závodu míru",["X","42"]] +["3","08:10","Závodu míru",["X","32"]] +["3","08:15","Závodu míru",["X","42"]] +["1","08:18","Březová, aut. st.",["X"]] +["33","08:29","Sídl. Michal škola",["X"]] +["3","08:34","Závodu míru",["X"]] +["3","08:50","Stará Ovčárna",["X"]] +["33","08:54","Sídl. Michal škola",["X"]] +["3","09:04","Závodu míru",["X"]] +["1","09:09","Březová, aut. st.",["X"]] +["3","09:24","Závodu míru",["X"]] +["33","09:34","Sídl. Michal škola",["X"]] +["4","09:41","Sídliště Michal",["X"]] +["3","09:45","Závodu míru",["X"]] +["1","09:58","Březová, aut. st.",["X"]] +["3","09:59","Jezero Michal",["X"]] +["7","10:14","Březová, aut.st.",["X"]] +["33","10:24","Sídl. Michal škola",["X"]] +["3","10:40","Závodu míru",["X"]] +["1","10:55","Březová, aut. st.",["X"]] +["3","10:55","Závodu míru",["X"]] +["3","11:17","Závodu míru",["X"]] +["33","11:29","Sídl. Michal škola",["X"]] +["3","11:44","Závodu míru",["X"]] +["1","11:46","Březová, aut. st.",["X"]] +["33","11:56","Sídl. Michal škola",["X"]] +["3","12:05","Závodu míru",["X"]] +["3","12:24","Jezero Michal",["X"]] +["1","12:33","Březová, aut. st.",["X"]] +["3","12:44","Závodu míru",["X"]] +["3","12:59","Závodu míru",["X"]] +["6","12:59","Sídl. Michal škola",["X","42"]] +["33","13:04","Sídl. Michal škola",["X"]] +["1","13:06","Březová, aut. st.",["X"]] +["3","13:15","Závodu míru",["X"]] +["2","13:17","Sídliště Michal",["X"]] +["1","13:22","Březová, aut. st.",["X"]] +["3","13:24","Stará Ovčárna",["X"]] +["33","13:39","Sídl. Michal škola",["X"]] +["1","13:48","Březová, aut. st.",["X"]] +["33","14:04","Sídl. Michal škola",["X"]] +["6","14:04","Sídl. Michal škola",["X"]] +["4","14:06","Stará Ovčárna",["X"]] +["3","14:09","Závodu míru",["X"]] +["1","14:10","Březová, aut. st.",["X"]] +["3","14:21","Závodu míru",["X"]] +["1","14:34","Březová, aut. st.",["X"]] +["6","14:34","Sídl. Michal škola",["X"]] +["4","14:42","Závodu míru",["X"]] +["3","14:43","Závodu míru",["X"]] +["33","14:46","Sídl. Michal škola",["X"]] +["3","14:52","Závodu míru",["X"]] +["1","15:09","Březová, aut. st.",["X"]] +["33","15:09","Sídl. Michal škola",["X"]] +["3","15:13","Závodu míru",["X"]] +["6","15:14","Sídl. Michal škola",["X"]] +["3","15:23","Sokolov, Hrušková",["X","42"]] +["3","15:30","Závodu míru",["X"]] +["1","15:31","Březová, aut. st.",["X"]] +["33","15:39","Sídl. Michal škola",["X"]] +["3","15:39","Jezero Michal",["X"]] +["7","15:54","Březová, aut.st.",["X"]] +["3","16:00","Sídl. Michal škola",["X","42"]] +["4","16:06","Závodu míru",["X"]] +["33","16:14","Sídl. Michal škola",["X"]] +["3","16:14","Závodu míru",["X"]] +["1","16:21","Březová, aut. st.",["X"]] +["7","16:29","Březová, aut.st.",["X"]] +["3","16:35","Závodu míru",["X"]] +["6","16:44","Sídl. Michal škola",["X","42"]] +["3","16:48","Závodu míru",["X"]] +["4","16:51","Závodu míru",["X","42"]] +["7","16:59","Březová, aut.st.",["X"]] +["3","17:09","Jezero Michal",["X"]] +["3","17:18","Závodu míru",["X"]] +["3","17:34","Závodu míru",["X"]] +["1","17:38","Březová, aut. st.",["X"]] +["3","17:57","Závodu míru",["X"]] +["3","18:14","Závodu míru",["X"]] +["3","18:21","Závodu míru",["X"]] +["1","18:26","Březová, aut. st.",["X"]] +["3","18:34","Závodu míru",["X"]] +["3","18:54","Závodu míru",["X"]] +["1","19:08","Březová, aut. st.",["X"]] +["3","19:19","Závodu míru",["X","31"]] +["3","19:34","Závodu míru",["X","31"]] +["1","19:53","Březová, aut. st.",["X","31"]] +["3","19:54","Závodu míru",["X","31"]] +["3","20:19","Závodu míru",["X","31"]] +["3","20:49","Závodu míru",["X","31"]] +["1","20:55","Březová, aut. st.",["X","31"]] +["3","21:09","Závodu míru",["X","31"]] +["3","21:24","Stará Ovčárna",["X","31"]] +["1","21:38","Březová, aut. st.",["X","31"]] +["3","22:12","Stará Ovčárna",["X","31"]] +["1","22:28","Březová, aut. st.",["X","31"]] +["3","22:41","Závodu míru",["X","31"]] + +["31.5","Sobota"] +["3","04:56","Závodu míru",["6+","25"]] +["1","05:47","Březová, aut. st.",["6+","25"]] +["3","05:57","Závodu míru",["6+","25"]] +["3","06:24","Závodu míru",["6+","25"]] +["3","06:56","Závodu míru",["6+"]] +["1","06:57","Březová, aut. st.",["6+","25"]] +["3","07:19","Závodu míru",["6+"]] +["3","07:51","Závodu míru",["6+"]] +["1","07:57","Březová, aut. st.",["6+"]] +["3","08:15","Závodu míru",["6+"]] +["3","08:51","Závodu míru",["6+"]] +["1","08:57","Březová, aut. st.",["6+"]] +["3","09:20","Závodu míru",["6+"]] +["1","09:44","Březová, aut. st.",["6+"]] +["3","09:51","Závodu míru",["6+"]] +["3","10:19","Závodu míru",["6+"]] +["1","10:57","Březová, aut. st.",["6+"]] +["3","11:02","Závodu míru",["6+"]] +["3","11:29","Závodu míru",["6+"]] +["1","11:49","Březová, aut. st.",["6+"]] +["3","11:51","Závodu míru",["6+"]] +["3","12:19","Závodu míru",["6+"]] +["3","12:51","Závodu míru",["6+"]] +["1","12:57","Březová, aut. st.",["6+"]] +["3","13:28","Závodu míru",["6+"]] +["3","13:51","Závodu míru",["6+"]] +["1","13:57","Březová, aut. st.",["6+"]] +["3","14:19","Závodu míru",["6+"]] +["1","14:49","Březová, aut. st.",["6+"]] +["3","14:51","Závodu míru",["6+"]] +["3","15:19","Závodu míru",["6+"]] +["3","15:51","Závodu míru",["6+"]] +["1","15:57","Březová, aut. st.",["6+"]] +["3","16:28","Závodu míru",["6+"]] +["3","16:53","Závodu míru",["6+"]] +["1","16:57","Březová, aut. st.",["6+"]] +["3","17:14","Závodu míru",["6+"]] +["3","17:51","Závodu míru",["6+"]] +["3","18:21","Stará Ovčárna",["6+"]] +["1","18:24","Březová, aut. st.",["6+"]] +["3","18:51","Závodu míru",["6+"]] +["3","19:14","Závodu míru",["6+","24"]] +["3","19:54","Závodu míru",["6+","24"]] +["1","19:57","Březová, aut. st.",["6+","24"]] +["1","20:28","Březová, aut. st.",["6+","24"]] +["3","20:49","Závodu míru",["6+","24"]] +["1","21:23","Březová, aut. st.",["6+","24"]] +["3","21:24","Závodu míru",["6+","24"]] +["3","22:04","Závodu míru",["6+","24"]] + +["31.5","Sobota"] +["3","04:56","Závodu míru",["6+","25"]] +["1","05:47","Březová, aut. st.",["6+","25"]] +["3","05:57","Závodu míru",["6+","25"]] +["3","06:24","Závodu míru",["6+","25"]] +["3","06:56","Závodu míru",["6+"]] +["1","06:57","Březová, aut. st.",["6+","25"]] +["3","07:19","Závodu míru",["6+"]] +["3","07:51","Závodu míru",["6+"]] +["1","07:57","Březová, aut. st.",["6+"]] +["3","08:15","Závodu míru",["6+"]] +["3","08:51","Závodu míru",["6+"]] +["1","08:57","Březová, aut. st.",["6+"]] +["3","09:20","Závodu míru",["6+"]] +["1","09:44","Březová, aut. st.",["6+"]] +["3","09:51","Závodu míru",["6+"]] +["3","10:19","Závodu míru",["6+"]] +["1","10:57","Březová, aut. st.",["6+"]] +["3","11:02","Závodu míru",["6+"]] +["3","11:29","Závodu míru",["6+"]] +["1","11:49","Březová, aut. st.",["6+"]] +["3","11:51","Závodu míru",["6+"]] +["3","12:19","Závodu míru",["6+"]] +["3","12:51","Závodu míru",["6+"]] +["1","12:57","Březová, aut. st.",["6+"]] +["3","13:28","Závodu míru",["6+"]] +["3","13:51","Závodu míru",["6+"]] +["1","13:57","Březová, aut. st.",["6+"]] +["3","14:19","Závodu míru",["6+"]] +["1","14:49","Březová, aut. st.",["6+"]] +["3","14:51","Závodu míru",["6+"]] +["3","15:19","Závodu míru",["6+"]] +["3","15:51","Závodu míru",["6+"]] +["1","15:57","Březová, aut. st.",["6+"]] +["3","16:28","Závodu míru",["6+"]] +["3","16:53","Závodu míru",["6+"]] +["1","16:57","Březová, aut. st.",["6+"]] +["3","17:14","Závodu míru",["6+"]] +["3","17:51","Závodu míru",["6+"]] +["3","18:21","Stará Ovčárna",["6+"]] +["1","18:24","Březová, aut. st.",["6+"]] +["3","18:51","Závodu míru",["6+"]] +["3","19:14","Závodu míru",["6+","24"]] +["3","19:54","Závodu míru",["6+","24"]] +["1","19:57","Březová, aut. st.",["6+","24"]] +["1","20:28","Březová, aut. st.",["6+","24"]] +["3","20:49","Závodu míru",["6+","24"]] +["1","21:23","Březová, aut. st.",["6+","24"]] +["3","21:24","Závodu míru",["6+","24"]] +["3","22:04","Závodu míru",["6+","24"]] + +["1.6","Nedele"] +["3","04:56","Závodu míru",["6+","25"]] +["1","05:47","Březová, aut. st.",["6+","25"]] +["3","05:57","Závodu míru",["6+","25"]] +["3","06:24","Závodu míru",["6+","25"]] +["3","06:56","Závodu míru",["6+"]] +["1","06:57","Březová, aut. st.",["6+","25"]] +["3","07:19","Závodu míru",["6+"]] +["3","07:51","Závodu míru",["6+"]] +["1","07:57","Březová, aut. st.",["6+"]] +["3","08:15","Závodu míru",["6+"]] +["3","08:51","Závodu míru",["6+"]] +["1","08:57","Březová, aut. st.",["6+"]] +["3","09:20","Závodu míru",["6+"]] +["1","09:44","Březová, aut. st.",["6+"]] +["3","09:51","Závodu míru",["6+"]] +["3","10:19","Závodu míru",["6+"]] +["1","10:57","Březová, aut. st.",["6+"]] +["3","11:02","Závodu míru",["6+"]] +["3","11:29","Závodu míru",["6+"]] +["1","11:49","Březová, aut. st.",["6+"]] +["3","11:51","Závodu míru",["6+"]] +["3","12:19","Závodu míru",["6+"]] +["3","12:51","Závodu míru",["6+"]] +["1","12:57","Březová, aut. st.",["6+"]] +["3","13:28","Závodu míru",["6+"]] +["3","13:51","Závodu míru",["6+"]] +["1","13:57","Březová, aut. st.",["6+"]] +["3","14:19","Závodu míru",["6+"]] +["1","14:49","Březová, aut. st.",["6+"]] +["3","14:51","Závodu míru",["6+"]] +["3","15:19","Závodu míru",["6+"]] +["3","15:51","Závodu míru",["6+"]] +["1","15:57","Březová, aut. st.",["6+"]] +["3","16:28","Závodu míru",["6+"]] +["3","16:53","Závodu míru",["6+"]] +["1","16:57","Březová, aut. st.",["6+"]] +["3","17:14","Závodu míru",["6+"]] +["3","17:51","Závodu míru",["6+"]] +["3","18:21","Stará Ovčárna",["6+"]] +["1","18:24","Březová, aut. st.",["6+"]] +["3","18:51","Závodu míru",["6+"]] +["3","19:14","Závodu míru",["6+","24"]] +["3","19:54","Závodu míru",["6+","24"]] +["1","19:57","Březová, aut. st.",["6+","24"]] +["1","20:28","Březová, aut. st.",["6+","24"]] +["3","20:49","Závodu míru",["6+","24"]] +["1","21:23","Březová, aut. st.",["6+","24"]] +["3","21:24","Závodu míru",["6+","24"]] +["3","22:04","Závodu míru",["6+","24"]] + +["1.6","Nedele"] +["3","04:56","Závodu míru",["6+","25"]] +["1","05:47","Březová, aut. st.",["6+","25"]] +["3","05:57","Závodu míru",["6+","25"]] +["3","06:24","Závodu míru",["6+","25"]] +["3","06:56","Závodu míru",["6+"]] +["1","06:57","Březová, aut. st.",["6+","25"]] +["3","07:19","Závodu míru",["6+"]] +["3","07:51","Závodu míru",["6+"]] +["1","07:57","Březová, aut. st.",["6+"]] +["3","08:15","Závodu míru",["6+"]] +["3","08:51","Závodu míru",["6+"]] +["1","08:57","Březová, aut. st.",["6+"]] +["3","09:20","Závodu míru",["6+"]] +["1","09:44","Březová, aut. st.",["6+"]] +["3","09:51","Závodu míru",["6+"]] +["3","10:19","Závodu míru",["6+"]] +["1","10:57","Březová, aut. st.",["6+"]] +["3","11:02","Závodu míru",["6+"]] +["3","11:29","Závodu míru",["6+"]] +["1","11:49","Březová, aut. st.",["6+"]] +["3","11:51","Závodu míru",["6+"]] +["3","12:19","Závodu míru",["6+"]] +["3","12:51","Závodu míru",["6+"]] +["1","12:57","Březová, aut. st.",["6+"]] +["3","13:28","Závodu míru",["6+"]] +["3","13:51","Závodu míru",["6+"]] +["1","13:57","Březová, aut. st.",["6+"]] +["3","14:19","Závodu míru",["6+"]] +["1","14:49","Březová, aut. st.",["6+"]] +["3","14:51","Závodu míru",["6+"]] +["3","15:19","Závodu míru",["6+"]] +["3","15:51","Závodu míru",["6+"]] +["1","15:57","Březová, aut. st.",["6+"]] +["3","16:28","Závodu míru",["6+"]] +["3","16:53","Závodu míru",["6+"]] +["1","16:57","Březová, aut. st.",["6+"]] +["3","17:14","Závodu míru",["6+"]] +["3","17:51","Závodu míru",["6+"]] +["3","18:21","Stará Ovčárna",["6+"]] +["1","18:24","Březová, aut. st.",["6+"]] +["3","18:51","Závodu míru",["6+"]] +["3","19:14","Závodu míru",["6+","24"]] +["3","19:54","Závodu míru",["6+","24"]] +["1","19:57","Březová, aut. st.",["6+","24"]] +["1","20:28","Březová, aut. st.",["6+","24"]] +["3","20:49","Závodu míru",["6+","24"]] +["1","21:23","Březová, aut. st.",["6+","24"]] +["3","21:24","Závodu míru",["6+","24"]] +["3","22:04","Závodu míru",["6+","24"]] + +["2.6","Pondeli"] +["3","04:29","Závodu míru",["X"]] +["1","04:50","Březová, aut. st.",["X"]] +["3","04:52","Závodu míru",["X"]] +["3","05:02","Závodu míru",["X"]] +["4","05:05","Závodu míru",["X"]] +["6","05:07","Sídl. Michal škola",["X","42"]] +["6","05:07","Závodu míru",["X","32"]] +["3","05:09","Závodu míru",["X","42"]] +["3","05:22","Závodu míru",["X"]] +["1","05:23","Březová, aut. st.",["X"]] +["6","05:34","Sídl. Michal škola",["X","42"]] +["4","05:35","Stará Ovčárna",["X"]] +["3","05:36","Sídl. Michal škola",["X","42"]] +["3","05:38","Sídliště Michal",["X","32"]] +["1","05:51","Březová, aut. st.",["X"]] +["3","05:58","Závodu míru",["X"]] +["6","06:04","Sídl. Michal škola",["X","42"]] +["1","06:13","Březová, aut. st.",["X"]] +["3","06:16","Závodu míru",["X","42"]] +["3","06:19","Závodu míru",["X","32"]] +["3","06:24","Sídliště Michal",["X"]] +["4","06:31","Závodu míru",["X","42"]] +["6","06:32","Sídl. Michal škola",["X","32"]] +["3","06:34","Závodu míru",["X"]] +["6","06:34","Sídl. Michal škola",["X","42"]] +["1","06:46","Březová, aut. st.",["X"]] +["33","06:49","Sídl. Michal škola",["X","42"]] +["3","06:56","Závodu míru",["X","32"]] +["3","06:56","Závodu míru",["X","42"]] +["3","07:04","Závodu míru",["X"]] +["1","07:05","Březová, aut. st.",["X"]] +["3","07:14","Závodu míru",["X"]] +["6","07:23","Sídl. Michal škola",["X","42"]] +["3","07:27","Sídliště Michal",["X","32"]] +["2","07:31","Sídliště Michal",["X","42"]] +["3","07:34","Závodu míru",["X","42"]] +["4","07:34","Závodu míru",["X"]] +["1","07:35","Březová, aut. st.",["X"]] +["3","07:45","Sídliště Michal",["X"]] +["33","07:54","Sídl. Michal škola",["X","42"]] +["1","07:55","Březová, aut. st.",["X"]] +["3","07:58","Závodu míru",["X","42"]] +["3","08:10","Závodu míru",["X","32"]] +["3","08:15","Závodu míru",["X","42"]] +["1","08:18","Březová, aut. st.",["X"]] +["33","08:29","Sídl. Michal škola",["X"]] +["3","08:34","Závodu míru",["X"]] +["3","08:50","Stará Ovčárna",["X"]] +["33","08:54","Sídl. Michal škola",["X"]] +["3","09:04","Závodu míru",["X"]] +["1","09:09","Březová, aut. st.",["X"]] +["3","09:24","Závodu míru",["X"]] +["33","09:34","Sídl. Michal škola",["X"]] +["4","09:41","Sídliště Michal",["X"]] +["3","09:45","Závodu míru",["X"]] +["1","09:58","Březová, aut. st.",["X"]] +["3","09:59","Jezero Michal",["X"]] +["7","10:14","Březová, aut.st.",["X"]] +["33","10:24","Sídl. Michal škola",["X"]] +["3","10:40","Závodu míru",["X"]] +["1","10:55","Březová, aut. st.",["X"]] +["3","10:55","Závodu míru",["X"]] +["3","11:17","Závodu míru",["X"]] +["33","11:29","Sídl. Michal škola",["X"]] +["3","11:44","Závodu míru",["X"]] +["1","11:46","Březová, aut. st.",["X"]] +["33","11:56","Sídl. Michal škola",["X"]] +["3","12:05","Závodu míru",["X"]] +["3","12:24","Jezero Michal",["X"]] +["1","12:33","Březová, aut. st.",["X"]] +["3","12:44","Závodu míru",["X"]] +["3","12:59","Závodu míru",["X"]] +["6","12:59","Sídl. Michal škola",["X","42"]] +["33","13:04","Sídl. Michal škola",["X"]] +["1","13:06","Březová, aut. st.",["X"]] +["3","13:15","Závodu míru",["X"]] +["2","13:17","Sídliště Michal",["X"]] +["1","13:22","Březová, aut. st.",["X"]] +["3","13:24","Stará Ovčárna",["X"]] +["33","13:39","Sídl. Michal škola",["X"]] +["1","13:48","Březová, aut. st.",["X"]] +["33","14:04","Sídl. Michal škola",["X"]] +["6","14:04","Sídl. Michal škola",["X"]] +["4","14:06","Stará Ovčárna",["X"]] +["3","14:09","Závodu míru",["X"]] +["1","14:10","Březová, aut. st.",["X"]] +["3","14:21","Závodu míru",["X"]] +["1","14:34","Březová, aut. st.",["X"]] +["6","14:34","Sídl. Michal škola",["X"]] +["4","14:42","Závodu míru",["X"]] +["3","14:43","Závodu míru",["X"]] +["33","14:46","Sídl. Michal škola",["X"]] +["3","14:52","Závodu míru",["X"]] +["1","15:09","Březová, aut. st.",["X"]] +["33","15:09","Sídl. Michal škola",["X"]] +["3","15:13","Závodu míru",["X"]] +["6","15:14","Sídl. Michal škola",["X"]] +["3","15:23","Sokolov, Hrušková",["X","42"]] +["3","15:30","Závodu míru",["X"]] +["1","15:31","Březová, aut. st.",["X"]] +["33","15:39","Sídl. Michal škola",["X"]] +["3","15:39","Jezero Michal",["X"]] +["7","15:54","Březová, aut.st.",["X"]] +["3","16:00","Sídl. Michal škola",["X","42"]] +["4","16:06","Závodu míru",["X"]] +["33","16:14","Sídl. Michal škola",["X"]] +["3","16:14","Závodu míru",["X"]] +["1","16:21","Březová, aut. st.",["X"]] +["7","16:29","Březová, aut.st.",["X"]] +["3","16:35","Závodu míru",["X"]] +["6","16:44","Sídl. Michal škola",["X","42"]] +["3","16:48","Závodu míru",["X"]] +["4","16:51","Závodu míru",["X","42"]] +["7","16:59","Březová, aut.st.",["X"]] +["3","17:09","Jezero Michal",["X"]] +["3","17:18","Závodu míru",["X"]] +["3","17:34","Závodu míru",["X"]] +["1","17:38","Březová, aut. st.",["X"]] +["3","17:57","Závodu míru",["X"]] +["3","18:14","Závodu míru",["X"]] +["3","18:21","Závodu míru",["X"]] +["1","18:26","Březová, aut. st.",["X"]] +["3","18:34","Závodu míru",["X"]] +["3","18:54","Závodu míru",["X"]] +["1","19:08","Březová, aut. st.",["X"]] +["3","19:19","Závodu míru",["X","31"]] +["3","19:34","Závodu míru",["X","31"]] +["1","19:53","Březová, aut. st.",["X","31"]] +["3","19:54","Závodu míru",["X","31"]] +["3","20:19","Závodu míru",["X","31"]] +["3","20:49","Závodu míru",["X","31"]] +["1","20:55","Březová, aut. st.",["X","31"]] +["3","21:09","Závodu míru",["X","31"]] +["3","21:24","Stará Ovčárna",["X","31"]] +["1","21:38","Březová, aut. st.",["X","31"]] +["3","22:12","Stará Ovčárna",["X","31"]] +["1","22:28","Březová, aut. st.",["X","31"]] +["3","22:41","Závodu míru",["X","31"]] + +["2.6","Pondeli"] +["3","04:29","Závodu míru",["X"]] +["1","04:50","Březová, aut. st.",["X"]] +["3","04:52","Závodu míru",["X"]] +["3","05:02","Závodu míru",["X"]] +["4","05:05","Závodu míru",["X"]] +["6","05:07","Sídl. Michal škola",["X","42"]] +["6","05:07","Závodu míru",["X","32"]] +["3","05:09","Závodu míru",["X","42"]] +["3","05:22","Závodu míru",["X"]] +["1","05:23","Březová, aut. st.",["X"]] +["6","05:34","Sídl. Michal škola",["X","42"]] +["4","05:35","Stará Ovčárna",["X"]] +["3","05:36","Sídl. Michal škola",["X","42"]] +["3","05:38","Sídliště Michal",["X","32"]] +["1","05:51","Březová, aut. st.",["X"]] +["3","05:58","Závodu míru",["X"]] +["6","06:04","Sídl. Michal škola",["X","42"]] +["1","06:13","Březová, aut. st.",["X"]] +["3","06:16","Závodu míru",["X","42"]] +["3","06:19","Závodu míru",["X","32"]] +["3","06:24","Sídliště Michal",["X"]] +["4","06:31","Závodu míru",["X","42"]] +["6","06:32","Sídl. Michal škola",["X","32"]] +["3","06:34","Závodu míru",["X"]] +["6","06:34","Sídl. Michal škola",["X","42"]] +["1","06:46","Březová, aut. st.",["X"]] +["33","06:49","Sídl. Michal škola",["X","42"]] +["3","06:56","Závodu míru",["X","32"]] +["3","06:56","Závodu míru",["X","42"]] +["3","07:04","Závodu míru",["X"]] +["1","07:05","Březová, aut. st.",["X"]] +["3","07:14","Závodu míru",["X"]] +["6","07:23","Sídl. Michal škola",["X","42"]] +["3","07:27","Sídliště Michal",["X","32"]] +["2","07:31","Sídliště Michal",["X","42"]] +["3","07:34","Závodu míru",["X","42"]] +["4","07:34","Závodu míru",["X"]] +["1","07:35","Březová, aut. st.",["X"]] +["3","07:45","Sídliště Michal",["X"]] +["33","07:54","Sídl. Michal škola",["X","42"]] +["1","07:55","Březová, aut. st.",["X"]] +["3","07:58","Závodu míru",["X","42"]] +["3","08:10","Závodu míru",["X","32"]] +["3","08:15","Závodu míru",["X","42"]] +["1","08:18","Březová, aut. st.",["X"]] +["33","08:29","Sídl. Michal škola",["X"]] +["3","08:34","Závodu míru",["X"]] +["3","08:50","Stará Ovčárna",["X"]] +["33","08:54","Sídl. Michal škola",["X"]] +["3","09:04","Závodu míru",["X"]] +["1","09:09","Březová, aut. st.",["X"]] +["3","09:24","Závodu míru",["X"]] +["33","09:34","Sídl. Michal škola",["X"]] +["4","09:41","Sídliště Michal",["X"]] +["3","09:45","Závodu míru",["X"]] +["1","09:58","Březová, aut. st.",["X"]] +["3","09:59","Jezero Michal",["X"]] +["7","10:14","Březová, aut.st.",["X"]] +["33","10:24","Sídl. Michal škola",["X"]] +["3","10:40","Závodu míru",["X"]] +["1","10:55","Březová, aut. st.",["X"]] +["3","10:55","Závodu míru",["X"]] +["3","11:17","Závodu míru",["X"]] +["33","11:29","Sídl. Michal škola",["X"]] +["3","11:44","Závodu míru",["X"]] +["1","11:46","Březová, aut. st.",["X"]] +["33","11:56","Sídl. Michal škola",["X"]] +["3","12:05","Závodu míru",["X"]] +["3","12:24","Jezero Michal",["X"]] +["1","12:33","Březová, aut. st.",["X"]] +["3","12:44","Závodu míru",["X"]] +["3","12:59","Závodu míru",["X"]] +["6","12:59","Sídl. Michal škola",["X","42"]] +["33","13:04","Sídl. Michal škola",["X"]] +["1","13:06","Březová, aut. st.",["X"]] +["3","13:15","Závodu míru",["X"]] +["2","13:17","Sídliště Michal",["X"]] +["1","13:22","Březová, aut. st.",["X"]] +["3","13:24","Stará Ovčárna",["X"]] +["33","13:39","Sídl. Michal škola",["X"]] +["1","13:48","Březová, aut. st.",["X"]] +["33","14:04","Sídl. Michal škola",["X"]] +["6","14:04","Sídl. Michal škola",["X"]] +["4","14:06","Stará Ovčárna",["X"]] +["3","14:09","Závodu míru",["X"]] +["1","14:10","Březová, aut. st.",["X"]] +["3","14:21","Závodu míru",["X"]] +["1","14:34","Březová, aut. st.",["X"]] +["6","14:34","Sídl. Michal škola",["X"]] +["4","14:42","Závodu míru",["X"]] +["3","14:43","Závodu míru",["X"]] +["33","14:46","Sídl. Michal škola",["X"]] +["3","14:52","Závodu míru",["X"]] +["1","15:09","Březová, aut. st.",["X"]] +["33","15:09","Sídl. Michal škola",["X"]] +["3","15:13","Závodu míru",["X"]] +["6","15:14","Sídl. Michal škola",["X"]] +["3","15:23","Sokolov, Hrušková",["X","42"]] +["3","15:30","Závodu míru",["X"]] +["1","15:31","Březová, aut. st.",["X"]] +["33","15:39","Sídl. Michal škola",["X"]] +["3","15:39","Jezero Michal",["X"]] +["7","15:54","Březová, aut.st.",["X"]] +["3","16:00","Sídl. Michal škola",["X","42"]] +["4","16:06","Závodu míru",["X"]] +["33","16:14","Sídl. Michal škola",["X"]] +["3","16:14","Závodu míru",["X"]] +["1","16:21","Březová, aut. st.",["X"]] +["7","16:29","Březová, aut.st.",["X"]] +["3","16:35","Závodu míru",["X"]] +["6","16:44","Sídl. Michal škola",["X","42"]] +["3","16:48","Závodu míru",["X"]] +["4","16:51","Závodu míru",["X","42"]] +["7","16:59","Březová, aut.st.",["X"]] +["3","17:09","Jezero Michal",["X"]] +["3","17:18","Závodu míru",["X"]] +["3","17:34","Závodu míru",["X"]] +["1","17:38","Březová, aut. st.",["X"]] +["3","17:57","Závodu míru",["X"]] +["3","18:14","Závodu míru",["X"]] +["3","18:21","Závodu míru",["X"]] +["1","18:26","Březová, aut. st.",["X"]] +["3","18:34","Závodu míru",["X"]] +["3","18:54","Závodu míru",["X"]] +["1","19:08","Březová, aut. st.",["X"]] +["3","19:19","Závodu míru",["X","31"]] +["3","19:34","Závodu míru",["X","31"]] +["1","19:53","Březová, aut. st.",["X","31"]] +["3","19:54","Závodu míru",["X","31"]] +["3","20:19","Závodu míru",["X","31"]] +["3","20:49","Závodu míru",["X","31"]] +["1","20:55","Březová, aut. st.",["X","31"]] +["3","21:09","Závodu míru",["X","31"]] +["3","21:24","Stará Ovčárna",["X","31"]] +["1","21:38","Březová, aut. st.",["X","31"]] +["3","22:12","Stará Ovčárna",["X","31"]] +["1","22:28","Březová, aut. st.",["X","31"]] +["3","22:41","Závodu míru",["X","31"]] + +["3.6","Uteri"] +["3","04:29","Závodu míru",["X"]] +["1","04:50","Březová, aut. st.",["X"]] +["3","04:52","Závodu míru",["X"]] +["3","05:02","Závodu míru",["X"]] +["4","05:05","Závodu míru",["X"]] +["6","05:07","Sídl. Michal škola",["X","42"]] +["6","05:07","Závodu míru",["X","32"]] +["3","05:09","Závodu míru",["X","42"]] +["3","05:22","Závodu míru",["X"]] +["1","05:23","Březová, aut. st.",["X"]] +["6","05:34","Sídl. Michal škola",["X","42"]] +["4","05:35","Stará Ovčárna",["X"]] +["3","05:36","Sídl. Michal škola",["X","42"]] +["3","05:38","Sídliště Michal",["X","32"]] +["1","05:51","Březová, aut. st.",["X"]] +["3","05:58","Závodu míru",["X"]] +["6","06:04","Sídl. Michal škola",["X","42"]] +["1","06:13","Březová, aut. st.",["X"]] +["3","06:16","Závodu míru",["X","42"]] +["3","06:19","Závodu míru",["X","32"]] +["3","06:24","Sídliště Michal",["X"]] +["4","06:31","Závodu míru",["X","42"]] +["6","06:32","Sídl. Michal škola",["X","32"]] +["3","06:34","Závodu míru",["X"]] +["6","06:34","Sídl. Michal škola",["X","42"]] +["1","06:46","Březová, aut. st.",["X"]] +["33","06:49","Sídl. Michal škola",["X","42"]] +["3","06:56","Závodu míru",["X","32"]] +["3","06:56","Závodu míru",["X","42"]] +["3","07:04","Závodu míru",["X"]] +["1","07:05","Březová, aut. st.",["X"]] +["3","07:14","Závodu míru",["X"]] +["6","07:23","Sídl. Michal škola",["X","42"]] +["3","07:27","Sídliště Michal",["X","32"]] +["2","07:31","Sídliště Michal",["X","42"]] +["3","07:34","Závodu míru",["X","42"]] +["4","07:34","Závodu míru",["X"]] +["1","07:35","Březová, aut. st.",["X"]] +["3","07:45","Sídliště Michal",["X"]] +["33","07:54","Sídl. Michal škola",["X","42"]] +["1","07:55","Březová, aut. st.",["X"]] +["3","07:58","Závodu míru",["X","42"]] +["3","08:10","Závodu míru",["X","32"]] +["3","08:15","Závodu míru",["X","42"]] +["1","08:18","Březová, aut. st.",["X"]] +["33","08:29","Sídl. Michal škola",["X"]] +["3","08:34","Závodu míru",["X"]] +["3","08:50","Stará Ovčárna",["X"]] +["33","08:54","Sídl. Michal škola",["X"]] +["3","09:04","Závodu míru",["X"]] +["1","09:09","Březová, aut. st.",["X"]] +["3","09:24","Závodu míru",["X"]] +["33","09:34","Sídl. Michal škola",["X"]] +["4","09:41","Sídliště Michal",["X"]] +["3","09:45","Závodu míru",["X"]] +["1","09:58","Březová, aut. st.",["X"]] +["3","09:59","Jezero Michal",["X"]] +["7","10:14","Březová, aut.st.",["X"]] +["33","10:24","Sídl. Michal škola",["X"]] +["3","10:40","Závodu míru",["X"]] +["1","10:55","Březová, aut. st.",["X"]] +["3","10:55","Závodu míru",["X"]] +["3","11:17","Závodu míru",["X"]] +["33","11:29","Sídl. Michal škola",["X"]] +["3","11:44","Závodu míru",["X"]] +["1","11:46","Březová, aut. st.",["X"]] +["33","11:56","Sídl. Michal škola",["X"]] +["3","12:05","Závodu míru",["X"]] +["3","12:24","Jezero Michal",["X"]] +["1","12:33","Březová, aut. st.",["X"]] +["3","12:44","Závodu míru",["X"]] +["3","12:59","Závodu míru",["X"]] +["6","12:59","Sídl. Michal škola",["X","42"]] +["33","13:04","Sídl. Michal škola",["X"]] +["1","13:06","Březová, aut. st.",["X"]] +["3","13:15","Závodu míru",["X"]] +["2","13:17","Sídliště Michal",["X"]] +["1","13:22","Březová, aut. st.",["X"]] +["3","13:24","Stará Ovčárna",["X"]] +["33","13:39","Sídl. Michal škola",["X"]] +["1","13:48","Březová, aut. st.",["X"]] +["33","14:04","Sídl. Michal škola",["X"]] +["6","14:04","Sídl. Michal škola",["X"]] +["4","14:06","Stará Ovčárna",["X"]] +["3","14:09","Závodu míru",["X"]] +["1","14:10","Březová, aut. st.",["X"]] +["3","14:21","Závodu míru",["X"]] +["1","14:34","Březová, aut. st.",["X"]] +["6","14:34","Sídl. Michal škola",["X"]] +["4","14:42","Závodu míru",["X"]] +["3","14:43","Závodu míru",["X"]] +["33","14:46","Sídl. Michal škola",["X"]] +["3","14:52","Závodu míru",["X"]] +["1","15:09","Březová, aut. st.",["X"]] +["33","15:09","Sídl. Michal škola",["X"]] +["3","15:13","Závodu míru",["X"]] +["6","15:14","Sídl. Michal škola",["X"]] +["3","15:23","Sokolov, Hrušková",["X","42"]] +["3","15:30","Závodu míru",["X"]] +["1","15:31","Březová, aut. st.",["X"]] +["33","15:39","Sídl. Michal škola",["X"]] +["3","15:39","Jezero Michal",["X"]] +["7","15:54","Březová, aut.st.",["X"]] +["3","16:00","Sídl. Michal škola",["X","42"]] +["4","16:06","Závodu míru",["X"]] +["33","16:14","Sídl. Michal škola",["X"]] +["3","16:14","Závodu míru",["X"]] +["1","16:21","Březová, aut. st.",["X"]] +["7","16:29","Březová, aut.st.",["X"]] +["3","16:35","Závodu míru",["X"]] +["6","16:44","Sídl. Michal škola",["X","42"]] +["3","16:48","Závodu míru",["X"]] +["4","16:51","Závodu míru",["X","42"]] +["7","16:59","Březová, aut.st.",["X"]] +["3","17:09","Jezero Michal",["X"]] +["3","17:18","Závodu míru",["X"]] +["3","17:34","Závodu míru",["X"]] +["1","17:38","Březová, aut. st.",["X"]] +["3","17:57","Závodu míru",["X"]] +["3","18:14","Závodu míru",["X"]] +["3","18:21","Závodu míru",["X"]] +["1","18:26","Březová, aut. st.",["X"]] +["3","18:34","Závodu míru",["X"]] +["3","18:54","Závodu míru",["X"]] +["1","19:08","Březová, aut. st.",["X"]] +["3","19:19","Závodu míru",["X","31"]] +["3","19:34","Závodu míru",["X","31"]] +["1","19:53","Březová, aut. st.",["X","31"]] +["3","19:54","Závodu míru",["X","31"]] +["3","20:19","Závodu míru",["X","31"]] +["3","20:49","Závodu míru",["X","31"]] +["1","20:55","Březová, aut. st.",["X","31"]] +["3","21:09","Závodu míru",["X","31"]] +["3","21:24","Stará Ovčárna",["X","31"]] +["1","21:38","Březová, aut. st.",["X","31"]] +["3","22:12","Stará Ovčárna",["X","31"]] +["1","22:28","Březová, aut. st.",["X","31"]] +["3","22:41","Závodu míru",["X","31"]] + +["3.6","Uteri"] +["3","04:29","Závodu míru",["X"]] +["1","04:50","Březová, aut. st.",["X"]] +["3","04:52","Závodu míru",["X"]] +["3","05:02","Závodu míru",["X"]] +["4","05:05","Závodu míru",["X"]] +["6","05:07","Sídl. Michal škola",["X","42"]] +["6","05:07","Závodu míru",["X","32"]] +["3","05:09","Závodu míru",["X","42"]] +["3","05:22","Závodu míru",["X"]] +["1","05:23","Březová, aut. st.",["X"]] +["6","05:34","Sídl. Michal škola",["X","42"]] +["4","05:35","Stará Ovčárna",["X"]] +["3","05:36","Sídl. Michal škola",["X","42"]] +["3","05:38","Sídliště Michal",["X","32"]] +["1","05:51","Březová, aut. st.",["X"]] +["3","05:58","Závodu míru",["X"]] +["6","06:04","Sídl. Michal škola",["X","42"]] +["1","06:13","Březová, aut. st.",["X"]] +["3","06:16","Závodu míru",["X","42"]] +["3","06:19","Závodu míru",["X","32"]] +["3","06:24","Sídliště Michal",["X"]] +["4","06:31","Závodu míru",["X","42"]] +["6","06:32","Sídl. Michal škola",["X","32"]] +["3","06:34","Závodu míru",["X"]] +["6","06:34","Sídl. Michal škola",["X","42"]] +["1","06:46","Březová, aut. st.",["X"]] +["33","06:49","Sídl. Michal škola",["X","42"]] +["3","06:56","Závodu míru",["X","32"]] +["3","06:56","Závodu míru",["X","42"]] +["3","07:04","Závodu míru",["X"]] +["1","07:05","Březová, aut. st.",["X"]] +["3","07:14","Závodu míru",["X"]] +["6","07:23","Sídl. Michal škola",["X","42"]] +["3","07:27","Sídliště Michal",["X","32"]] +["2","07:31","Sídliště Michal",["X","42"]] +["3","07:34","Závodu míru",["X","42"]] +["4","07:34","Závodu míru",["X"]] +["1","07:35","Březová, aut. st.",["X"]] +["3","07:45","Sídliště Michal",["X"]] +["33","07:54","Sídl. Michal škola",["X","42"]] +["1","07:55","Březová, aut. st.",["X"]] +["3","07:58","Závodu míru",["X","42"]] +["3","08:10","Závodu míru",["X","32"]] +["3","08:15","Závodu míru",["X","42"]] +["1","08:18","Březová, aut. st.",["X"]] +["33","08:29","Sídl. Michal škola",["X"]] +["3","08:34","Závodu míru",["X"]] +["3","08:50","Stará Ovčárna",["X"]] +["33","08:54","Sídl. Michal škola",["X"]] +["3","09:04","Závodu míru",["X"]] +["1","09:09","Březová, aut. st.",["X"]] +["3","09:24","Závodu míru",["X"]] +["33","09:34","Sídl. Michal škola",["X"]] +["4","09:41","Sídliště Michal",["X"]] +["3","09:45","Závodu míru",["X"]] +["1","09:58","Březová, aut. st.",["X"]] +["3","09:59","Jezero Michal",["X"]] +["7","10:14","Březová, aut.st.",["X"]] +["33","10:24","Sídl. Michal škola",["X"]] +["3","10:40","Závodu míru",["X"]] +["1","10:55","Březová, aut. st.",["X"]] +["3","10:55","Závodu míru",["X"]] +["3","11:17","Závodu míru",["X"]] +["33","11:29","Sídl. Michal škola",["X"]] +["3","11:44","Závodu míru",["X"]] +["1","11:46","Březová, aut. st.",["X"]] +["33","11:56","Sídl. Michal škola",["X"]] +["3","12:05","Závodu míru",["X"]] +["3","12:24","Jezero Michal",["X"]] +["1","12:33","Březová, aut. st.",["X"]] +["3","12:44","Závodu míru",["X"]] +["3","12:59","Závodu míru",["X"]] +["6","12:59","Sídl. Michal škola",["X","42"]] +["33","13:04","Sídl. Michal škola",["X"]] +["1","13:06","Březová, aut. st.",["X"]] +["3","13:15","Závodu míru",["X"]] +["2","13:17","Sídliště Michal",["X"]] +["1","13:22","Březová, aut. st.",["X"]] +["3","13:24","Stará Ovčárna",["X"]] +["33","13:39","Sídl. Michal škola",["X"]] +["1","13:48","Březová, aut. st.",["X"]] +["33","14:04","Sídl. Michal škola",["X"]] +["6","14:04","Sídl. Michal škola",["X"]] +["4","14:06","Stará Ovčárna",["X"]] +["3","14:09","Závodu míru",["X"]] +["1","14:10","Březová, aut. st.",["X"]] +["3","14:21","Závodu míru",["X"]] +["1","14:34","Březová, aut. st.",["X"]] +["6","14:34","Sídl. Michal škola",["X"]] +["4","14:42","Závodu míru",["X"]] +["3","14:43","Závodu míru",["X"]] +["33","14:46","Sídl. Michal škola",["X"]] +["3","14:52","Závodu míru",["X"]] +["1","15:09","Březová, aut. st.",["X"]] +["33","15:09","Sídl. Michal škola",["X"]] +["3","15:13","Závodu míru",["X"]] +["6","15:14","Sídl. Michal škola",["X"]] +["3","15:23","Sokolov, Hrušková",["X","42"]] +["3","15:30","Závodu míru",["X"]] +["1","15:31","Březová, aut. st.",["X"]] +["33","15:39","Sídl. Michal škola",["X"]] +["3","15:39","Jezero Michal",["X"]] +["7","15:54","Březová, aut.st.",["X"]] +["3","16:00","Sídl. Michal škola",["X","42"]] +["4","16:06","Závodu míru",["X"]] +["33","16:14","Sídl. Michal škola",["X"]] +["3","16:14","Závodu míru",["X"]] +["1","16:21","Březová, aut. st.",["X"]] +["7","16:29","Březová, aut.st.",["X"]] +["3","16:35","Závodu míru",["X"]] +["6","16:44","Sídl. Michal škola",["X","42"]] +["3","16:48","Závodu míru",["X"]] +["4","16:51","Závodu míru",["X","42"]] +["7","16:59","Březová, aut.st.",["X"]] +["3","17:09","Jezero Michal",["X"]] +["3","17:18","Závodu míru",["X"]] +["3","17:34","Závodu míru",["X"]] +["1","17:38","Březová, aut. st.",["X"]] +["3","17:57","Závodu míru",["X"]] +["3","18:14","Závodu míru",["X"]] +["3","18:21","Závodu míru",["X"]] +["1","18:26","Březová, aut. st.",["X"]] +["3","18:34","Závodu míru",["X"]] +["3","18:54","Závodu míru",["X"]] +["1","19:08","Březová, aut. st.",["X"]] +["3","19:19","Závodu míru",["X","31"]] +["3","19:34","Závodu míru",["X","31"]] +["1","19:53","Březová, aut. st.",["X","31"]] +["3","19:54","Závodu míru",["X","31"]] +["3","20:19","Závodu míru",["X","31"]] +["3","20:49","Závodu míru",["X","31"]] +["1","20:55","Březová, aut. st.",["X","31"]] +["3","21:09","Závodu míru",["X","31"]] +["3","21:24","Stará Ovčárna",["X","31"]] +["1","21:38","Březová, aut. st.",["X","31"]] +["3","22:12","Stará Ovčárna",["X","31"]] +["1","22:28","Březová, aut. st.",["X","31"]] +["3","22:41","Závodu míru",["X","31"]] + +["4.6","Streda"] +["3","04:29","Závodu míru",["X"]] +["1","04:50","Březová, aut. st.",["X"]] +["3","04:52","Závodu míru",["X"]] +["3","05:02","Závodu míru",["X"]] +["4","05:05","Závodu míru",["X"]] +["6","05:07","Sídl. Michal škola",["X","42"]] +["6","05:07","Závodu míru",["X","32"]] +["3","05:09","Závodu míru",["X","42"]] +["3","05:22","Závodu míru",["X"]] +["1","05:23","Březová, aut. st.",["X"]] +["6","05:34","Sídl. Michal škola",["X","42"]] +["4","05:35","Stará Ovčárna",["X"]] +["3","05:36","Sídl. Michal škola",["X","42"]] +["3","05:38","Sídliště Michal",["X","32"]] +["1","05:51","Březová, aut. st.",["X"]] +["3","05:58","Závodu míru",["X"]] +["6","06:04","Sídl. Michal škola",["X","42"]] +["1","06:13","Březová, aut. st.",["X"]] +["3","06:16","Závodu míru",["X","42"]] +["3","06:19","Závodu míru",["X","32"]] +["3","06:24","Sídliště Michal",["X"]] +["4","06:31","Závodu míru",["X","42"]] +["6","06:32","Sídl. Michal škola",["X","32"]] +["3","06:34","Závodu míru",["X"]] +["6","06:34","Sídl. Michal škola",["X","42"]] +["1","06:46","Březová, aut. st.",["X"]] +["33","06:49","Sídl. Michal škola",["X","42"]] +["3","06:56","Závodu míru",["X","32"]] +["3","06:56","Závodu míru",["X","42"]] +["3","07:04","Závodu míru",["X"]] +["1","07:05","Březová, aut. st.",["X"]] +["3","07:14","Závodu míru",["X"]] +["6","07:23","Sídl. Michal škola",["X","42"]] +["3","07:27","Sídliště Michal",["X","32"]] +["2","07:31","Sídliště Michal",["X","42"]] +["3","07:34","Závodu míru",["X","42"]] +["4","07:34","Závodu míru",["X"]] +["1","07:35","Březová, aut. st.",["X"]] +["3","07:45","Sídliště Michal",["X"]] +["33","07:54","Sídl. Michal škola",["X","42"]] +["1","07:55","Březová, aut. st.",["X"]] +["3","07:58","Závodu míru",["X","42"]] +["3","08:10","Závodu míru",["X","32"]] +["3","08:15","Závodu míru",["X","42"]] +["1","08:18","Březová, aut. st.",["X"]] +["33","08:29","Sídl. Michal škola",["X"]] +["3","08:34","Závodu míru",["X"]] +["3","08:50","Stará Ovčárna",["X"]] +["33","08:54","Sídl. Michal škola",["X"]] +["3","09:04","Závodu míru",["X"]] +["1","09:09","Březová, aut. st.",["X"]] +["3","09:24","Závodu míru",["X"]] +["33","09:34","Sídl. Michal škola",["X"]] +["4","09:41","Sídliště Michal",["X"]] +["3","09:45","Závodu míru",["X"]] +["1","09:58","Březová, aut. st.",["X"]] +["3","09:59","Jezero Michal",["X"]] +["7","10:14","Březová, aut.st.",["X"]] +["33","10:24","Sídl. Michal škola",["X"]] +["3","10:40","Závodu míru",["X"]] +["1","10:55","Březová, aut. st.",["X"]] +["3","10:55","Závodu míru",["X"]] +["3","11:17","Závodu míru",["X"]] +["33","11:29","Sídl. Michal škola",["X"]] +["3","11:44","Závodu míru",["X"]] +["1","11:46","Březová, aut. st.",["X"]] +["33","11:56","Sídl. Michal škola",["X"]] +["3","12:05","Závodu míru",["X"]] +["3","12:24","Jezero Michal",["X"]] +["1","12:33","Březová, aut. st.",["X"]] +["3","12:44","Závodu míru",["X"]] +["3","12:59","Závodu míru",["X"]] +["6","12:59","Sídl. Michal škola",["X","42"]] +["33","13:04","Sídl. Michal škola",["X"]] +["1","13:06","Březová, aut. st.",["X"]] +["3","13:15","Závodu míru",["X"]] +["2","13:17","Sídliště Michal",["X"]] +["1","13:22","Březová, aut. st.",["X"]] +["3","13:24","Stará Ovčárna",["X"]] +["33","13:39","Sídl. Michal škola",["X"]] +["1","13:48","Březová, aut. st.",["X"]] +["33","14:04","Sídl. Michal škola",["X"]] +["6","14:04","Sídl. Michal škola",["X"]] +["4","14:06","Stará Ovčárna",["X"]] +["3","14:09","Závodu míru",["X"]] +["1","14:10","Březová, aut. st.",["X"]] +["3","14:21","Závodu míru",["X"]] +["1","14:34","Březová, aut. st.",["X"]] +["6","14:34","Sídl. Michal škola",["X"]] +["4","14:42","Závodu míru",["X"]] +["3","14:43","Závodu míru",["X"]] +["33","14:46","Sídl. Michal škola",["X"]] +["3","14:52","Závodu míru",["X"]] +["1","15:09","Březová, aut. st.",["X"]] +["33","15:09","Sídl. Michal škola",["X"]] +["3","15:13","Závodu míru",["X"]] +["6","15:14","Sídl. Michal škola",["X"]] +["3","15:23","Sokolov, Hrušková",["X","42"]] +["3","15:30","Závodu míru",["X"]] +["1","15:31","Březová, aut. st.",["X"]] +["33","15:39","Sídl. Michal škola",["X"]] +["3","15:39","Jezero Michal",["X"]] +["7","15:54","Březová, aut.st.",["X"]] +["3","16:00","Sídl. Michal škola",["X","42"]] +["4","16:06","Závodu míru",["X"]] +["33","16:14","Sídl. Michal škola",["X"]] +["3","16:14","Závodu míru",["X"]] +["1","16:21","Březová, aut. st.",["X"]] +["7","16:29","Březová, aut.st.",["X"]] +["3","16:35","Závodu míru",["X"]] +["6","16:44","Sídl. Michal škola",["X","42"]] +["3","16:48","Závodu míru",["X"]] +["4","16:51","Závodu míru",["X","42"]] +["7","16:59","Březová, aut.st.",["X"]] +["3","17:09","Jezero Michal",["X"]] +["3","17:18","Závodu míru",["X"]] +["3","17:34","Závodu míru",["X"]] +["1","17:38","Březová, aut. st.",["X"]] +["3","17:57","Závodu míru",["X"]] +["3","18:14","Závodu míru",["X"]] +["3","18:21","Závodu míru",["X"]] +["1","18:26","Březová, aut. st.",["X"]] +["3","18:34","Závodu míru",["X"]] +["3","18:54","Závodu míru",["X"]] +["1","19:08","Březová, aut. st.",["X"]] +["3","19:19","Závodu míru",["X","31"]] +["3","19:34","Závodu míru",["X","31"]] +["1","19:53","Březová, aut. st.",["X","31"]] +["3","19:54","Závodu míru",["X","31"]] +["3","20:19","Závodu míru",["X","31"]] +["3","20:49","Závodu míru",["X","31"]] +["1","20:55","Březová, aut. st.",["X","31"]] +["3","21:09","Závodu míru",["X","31"]] +["3","21:24","Stará Ovčárna",["X","31"]] +["1","21:38","Březová, aut. st.",["X","31"]] +["3","22:12","Stará Ovčárna",["X","31"]] +["1","22:28","Březová, aut. st.",["X","31"]] +["3","22:41","Závodu míru",["X","31"]] + +["4.6","Streda"] +["3","04:29","Závodu míru",["X"]] +["1","04:50","Březová, aut. st.",["X"]] +["3","04:52","Závodu míru",["X"]] +["3","05:02","Závodu míru",["X"]] +["4","05:05","Závodu míru",["X"]] +["6","05:07","Sídl. Michal škola",["X","42"]] +["6","05:07","Závodu míru",["X","32"]] +["3","05:09","Závodu míru",["X","42"]] +["3","05:22","Závodu míru",["X"]] +["1","05:23","Březová, aut. st.",["X"]] +["6","05:34","Sídl. Michal škola",["X","42"]] +["4","05:35","Stará Ovčárna",["X"]] +["3","05:36","Sídl. Michal škola",["X","42"]] +["3","05:38","Sídliště Michal",["X","32"]] +["1","05:51","Březová, aut. st.",["X"]] +["3","05:58","Závodu míru",["X"]] +["6","06:04","Sídl. Michal škola",["X","42"]] +["1","06:13","Březová, aut. st.",["X"]] +["3","06:16","Závodu míru",["X","42"]] +["3","06:19","Závodu míru",["X","32"]] +["3","06:24","Sídliště Michal",["X"]] +["4","06:31","Závodu míru",["X","42"]] +["6","06:32","Sídl. Michal škola",["X","32"]] +["3","06:34","Závodu míru",["X"]] +["6","06:34","Sídl. Michal škola",["X","42"]] +["1","06:46","Březová, aut. st.",["X"]] +["33","06:49","Sídl. Michal škola",["X","42"]] +["3","06:56","Závodu míru",["X","32"]] +["3","06:56","Závodu míru",["X","42"]] +["3","07:04","Závodu míru",["X"]] +["1","07:05","Březová, aut. st.",["X"]] +["3","07:14","Závodu míru",["X"]] +["6","07:23","Sídl. Michal škola",["X","42"]] +["3","07:27","Sídliště Michal",["X","32"]] +["2","07:31","Sídliště Michal",["X","42"]] +["3","07:34","Závodu míru",["X","42"]] +["4","07:34","Závodu míru",["X"]] +["1","07:35","Březová, aut. st.",["X"]] +["3","07:45","Sídliště Michal",["X"]] +["33","07:54","Sídl. Michal škola",["X","42"]] +["1","07:55","Březová, aut. st.",["X"]] +["3","07:58","Závodu míru",["X","42"]] +["3","08:10","Závodu míru",["X","32"]] +["3","08:15","Závodu míru",["X","42"]] +["1","08:18","Březová, aut. st.",["X"]] +["33","08:29","Sídl. Michal škola",["X"]] +["3","08:34","Závodu míru",["X"]] +["3","08:50","Stará Ovčárna",["X"]] +["33","08:54","Sídl. Michal škola",["X"]] +["3","09:04","Závodu míru",["X"]] +["1","09:09","Březová, aut. st.",["X"]] +["3","09:24","Závodu míru",["X"]] +["33","09:34","Sídl. Michal škola",["X"]] +["4","09:41","Sídliště Michal",["X"]] +["3","09:45","Závodu míru",["X"]] +["1","09:58","Březová, aut. st.",["X"]] +["3","09:59","Jezero Michal",["X"]] +["7","10:14","Březová, aut.st.",["X"]] +["33","10:24","Sídl. Michal škola",["X"]] +["3","10:40","Závodu míru",["X"]] +["1","10:55","Březová, aut. st.",["X"]] +["3","10:55","Závodu míru",["X"]] +["3","11:17","Závodu míru",["X"]] +["33","11:29","Sídl. Michal škola",["X"]] +["3","11:44","Závodu míru",["X"]] +["1","11:46","Březová, aut. st.",["X"]] +["33","11:56","Sídl. Michal škola",["X"]] +["3","12:05","Závodu míru",["X"]] +["3","12:24","Jezero Michal",["X"]] +["1","12:33","Březová, aut. st.",["X"]] +["3","12:44","Závodu míru",["X"]] +["3","12:59","Závodu míru",["X"]] +["6","12:59","Sídl. Michal škola",["X","42"]] +["33","13:04","Sídl. Michal škola",["X"]] +["1","13:06","Březová, aut. st.",["X"]] +["3","13:15","Závodu míru",["X"]] +["2","13:17","Sídliště Michal",["X"]] +["1","13:22","Březová, aut. st.",["X"]] +["3","13:24","Stará Ovčárna",["X"]] +["33","13:39","Sídl. Michal škola",["X"]] +["1","13:48","Březová, aut. st.",["X"]] +["33","14:04","Sídl. Michal škola",["X"]] +["6","14:04","Sídl. Michal škola",["X"]] +["4","14:06","Stará Ovčárna",["X"]] +["3","14:09","Závodu míru",["X"]] +["1","14:10","Březová, aut. st.",["X"]] +["3","14:21","Závodu míru",["X"]] +["1","14:34","Březová, aut. st.",["X"]] +["6","14:34","Sídl. Michal škola",["X"]] +["4","14:42","Závodu míru",["X"]] +["3","14:43","Závodu míru",["X"]] +["33","14:46","Sídl. Michal škola",["X"]] +["3","14:52","Závodu míru",["X"]] +["1","15:09","Březová, aut. st.",["X"]] +["33","15:09","Sídl. Michal škola",["X"]] +["3","15:13","Závodu míru",["X"]] +["6","15:14","Sídl. Michal škola",["X"]] +["3","15:23","Sokolov, Hrušková",["X","42"]] +["3","15:30","Závodu míru",["X"]] +["1","15:31","Březová, aut. st.",["X"]] +["33","15:39","Sídl. Michal škola",["X"]] +["3","15:39","Jezero Michal",["X"]] +["7","15:54","Březová, aut.st.",["X"]] +["3","16:00","Sídl. Michal škola",["X","42"]] +["4","16:06","Závodu míru",["X"]] +["33","16:14","Sídl. Michal škola",["X"]] +["3","16:14","Závodu míru",["X"]] +["1","16:21","Březová, aut. st.",["X"]] +["7","16:29","Březová, aut.st.",["X"]] +["3","16:35","Závodu míru",["X"]] +["6","16:44","Sídl. Michal škola",["X","42"]] +["3","16:48","Závodu míru",["X"]] +["4","16:51","Závodu míru",["X","42"]] +["7","16:59","Březová, aut.st.",["X"]] +["3","17:09","Jezero Michal",["X"]] +["3","17:18","Závodu míru",["X"]] +["3","17:34","Závodu míru",["X"]] +["1","17:38","Březová, aut. st.",["X"]] +["3","17:57","Závodu míru",["X"]] +["3","18:14","Závodu míru",["X"]] +["3","18:21","Závodu míru",["X"]] +["1","18:26","Březová, aut. st.",["X"]] +["3","18:34","Závodu míru",["X"]] +["3","18:54","Závodu míru",["X"]] +["1","19:08","Březová, aut. st.",["X"]] +["3","19:19","Závodu míru",["X","31"]] +["3","19:34","Závodu míru",["X","31"]] +["1","19:53","Březová, aut. st.",["X","31"]] +["3","19:54","Závodu míru",["X","31"]] +["3","20:19","Závodu míru",["X","31"]] +["3","20:49","Závodu míru",["X","31"]] +["1","20:55","Březová, aut. st.",["X","31"]] +["3","21:09","Závodu míru",["X","31"]] +["3","21:24","Stará Ovčárna",["X","31"]] +["1","21:38","Březová, aut. st.",["X","31"]] +["3","22:12","Stará Ovčárna",["X","31"]] +["1","22:28","Březová, aut. st.",["X","31"]] +["3","22:41","Závodu míru",["X","31"]] + +["5.6","Ctvrtek"] +["3","04:29","Závodu míru",["X"]] +["1","04:50","Březová, aut. st.",["X"]] +["3","04:52","Závodu míru",["X"]] +["3","05:02","Závodu míru",["X"]] +["4","05:05","Závodu míru",["X"]] +["6","05:07","Sídl. Michal škola",["X","42"]] +["6","05:07","Závodu míru",["X","32"]] +["3","05:09","Závodu míru",["X","42"]] +["3","05:22","Závodu míru",["X"]] +["1","05:23","Březová, aut. st.",["X"]] +["6","05:34","Sídl. Michal škola",["X","42"]] +["4","05:35","Stará Ovčárna",["X"]] +["3","05:36","Sídl. Michal škola",["X","42"]] +["3","05:38","Sídliště Michal",["X","32"]] +["1","05:51","Březová, aut. st.",["X"]] +["3","05:58","Závodu míru",["X"]] +["6","06:04","Sídl. Michal škola",["X","42"]] +["1","06:13","Březová, aut. st.",["X"]] +["3","06:16","Závodu míru",["X","42"]] +["3","06:19","Závodu míru",["X","32"]] +["3","06:24","Sídliště Michal",["X"]] +["4","06:31","Závodu míru",["X","42"]] +["6","06:32","Sídl. Michal škola",["X","32"]] +["3","06:34","Závodu míru",["X"]] +["6","06:34","Sídl. Michal škola",["X","42"]] +["1","06:46","Březová, aut. st.",["X"]] +["33","06:49","Sídl. Michal škola",["X","42"]] +["3","06:56","Závodu míru",["X","32"]] +["3","06:56","Závodu míru",["X","42"]] +["3","07:04","Závodu míru",["X"]] +["1","07:05","Březová, aut. st.",["X"]] +["3","07:14","Závodu míru",["X"]] +["6","07:23","Sídl. Michal škola",["X","42"]] +["3","07:27","Sídliště Michal",["X","32"]] +["2","07:31","Sídliště Michal",["X","42"]] +["3","07:34","Závodu míru",["X","42"]] +["4","07:34","Závodu míru",["X"]] +["1","07:35","Březová, aut. st.",["X"]] +["3","07:45","Sídliště Michal",["X"]] +["33","07:54","Sídl. Michal škola",["X","42"]] +["1","07:55","Březová, aut. st.",["X"]] +["3","07:58","Závodu míru",["X","42"]] +["3","08:10","Závodu míru",["X","32"]] +["3","08:15","Závodu míru",["X","42"]] +["1","08:18","Březová, aut. st.",["X"]] +["33","08:29","Sídl. Michal škola",["X"]] +["3","08:34","Závodu míru",["X"]] +["3","08:50","Stará Ovčárna",["X"]] +["33","08:54","Sídl. Michal škola",["X"]] +["3","09:04","Závodu míru",["X"]] +["1","09:09","Březová, aut. st.",["X"]] +["3","09:24","Závodu míru",["X"]] +["33","09:34","Sídl. Michal škola",["X"]] +["4","09:41","Sídliště Michal",["X"]] +["3","09:45","Závodu míru",["X"]] +["1","09:58","Březová, aut. st.",["X"]] +["3","09:59","Jezero Michal",["X"]] +["7","10:14","Březová, aut.st.",["X"]] +["33","10:24","Sídl. Michal škola",["X"]] +["3","10:40","Závodu míru",["X"]] +["1","10:55","Březová, aut. st.",["X"]] +["3","10:55","Závodu míru",["X"]] +["3","11:17","Závodu míru",["X"]] +["33","11:29","Sídl. Michal škola",["X"]] +["3","11:44","Závodu míru",["X"]] +["1","11:46","Březová, aut. st.",["X"]] +["33","11:56","Sídl. Michal škola",["X"]] +["3","12:05","Závodu míru",["X"]] +["3","12:24","Jezero Michal",["X"]] +["1","12:33","Březová, aut. st.",["X"]] +["3","12:44","Závodu míru",["X"]] +["3","12:59","Závodu míru",["X"]] +["6","12:59","Sídl. Michal škola",["X","42"]] +["33","13:04","Sídl. Michal škola",["X"]] +["1","13:06","Březová, aut. st.",["X"]] +["3","13:15","Závodu míru",["X"]] +["2","13:17","Sídliště Michal",["X"]] +["1","13:22","Březová, aut. st.",["X"]] +["3","13:24","Stará Ovčárna",["X"]] +["33","13:39","Sídl. Michal škola",["X"]] +["1","13:48","Březová, aut. st.",["X"]] +["33","14:04","Sídl. Michal škola",["X"]] +["6","14:04","Sídl. Michal škola",["X"]] +["4","14:06","Stará Ovčárna",["X"]] +["3","14:09","Závodu míru",["X"]] +["1","14:10","Březová, aut. st.",["X"]] +["3","14:21","Závodu míru",["X"]] +["1","14:34","Březová, aut. st.",["X"]] +["6","14:34","Sídl. Michal škola",["X"]] +["4","14:42","Závodu míru",["X"]] +["3","14:43","Závodu míru",["X"]] +["33","14:46","Sídl. Michal škola",["X"]] +["3","14:52","Závodu míru",["X"]] +["1","15:09","Březová, aut. st.",["X"]] +["33","15:09","Sídl. Michal škola",["X"]] +["3","15:13","Závodu míru",["X"]] +["6","15:14","Sídl. Michal škola",["X"]] +["3","15:23","Sokolov, Hrušková",["X","42"]] +["3","15:30","Závodu míru",["X"]] +["1","15:31","Březová, aut. st.",["X"]] +["33","15:39","Sídl. Michal škola",["X"]] +["3","15:39","Jezero Michal",["X"]] +["7","15:54","Březová, aut.st.",["X"]] +["3","16:00","Sídl. Michal škola",["X","42"]] +["4","16:06","Závodu míru",["X"]] +["33","16:14","Sídl. Michal škola",["X"]] +["3","16:14","Závodu míru",["X"]] +["1","16:21","Březová, aut. st.",["X"]] +["7","16:29","Březová, aut.st.",["X"]] +["3","16:35","Závodu míru",["X"]] +["6","16:44","Sídl. Michal škola",["X","42"]] +["3","16:48","Závodu míru",["X"]] +["4","16:51","Závodu míru",["X","42"]] +["7","16:59","Březová, aut.st.",["X"]] +["3","17:09","Jezero Michal",["X"]] +["3","17:18","Závodu míru",["X"]] +["3","17:34","Závodu míru",["X"]] +["1","17:38","Březová, aut. st.",["X"]] +["3","17:57","Závodu míru",["X"]] +["3","18:14","Závodu míru",["X"]] +["3","18:21","Závodu míru",["X"]] +["1","18:26","Březová, aut. st.",["X"]] +["3","18:34","Závodu míru",["X"]] +["3","18:54","Závodu míru",["X"]] +["1","19:08","Březová, aut. st.",["X"]] +["3","19:19","Závodu míru",["X","31"]] +["3","19:34","Závodu míru",["X","31"]] +["1","19:53","Březová, aut. st.",["X","31"]] +["3","19:54","Závodu míru",["X","31"]] +["3","20:19","Závodu míru",["X","31"]] +["3","20:49","Závodu míru",["X","31"]] +["1","20:55","Březová, aut. st.",["X","31"]] +["3","21:09","Závodu míru",["X","31"]] +["3","21:24","Stará Ovčárna",["X","31"]] +["1","21:38","Březová, aut. st.",["X","31"]] +["3","22:12","Stará Ovčárna",["X","31"]] +["1","22:28","Březová, aut. st.",["X","31"]] +["3","22:41","Závodu míru",["X","31"]] + +["6.6","Patek"] +["3","04:29","Závodu míru",["X"]] +["1","04:50","Březová, aut. st.",["X"]] +["3","04:52","Závodu míru",["X"]] +["3","05:02","Závodu míru",["X"]] +["4","05:05","Závodu míru",["X"]] +["6","05:07","Sídl. Michal škola",["X","42"]] +["6","05:07","Závodu míru",["X","32"]] +["3","05:09","Závodu míru",["X","42"]] +["3","05:22","Závodu míru",["X"]] +["1","05:23","Březová, aut. st.",["X"]] +["6","05:34","Sídl. Michal škola",["X","42"]] +["4","05:35","Stará Ovčárna",["X"]] +["3","05:36","Sídl. Michal škola",["X","42"]] +["3","05:38","Sídliště Michal",["X","32"]] +["1","05:51","Březová, aut. st.",["X"]] +["3","05:58","Závodu míru",["X"]] +["6","06:04","Sídl. Michal škola",["X","42"]] +["1","06:13","Březová, aut. st.",["X"]] +["3","06:16","Závodu míru",["X","42"]] +["3","06:19","Závodu míru",["X","32"]] +["3","06:24","Sídliště Michal",["X"]] +["4","06:31","Závodu míru",["X","42"]] +["6","06:32","Sídl. Michal škola",["X","32"]] +["3","06:34","Závodu míru",["X"]] +["6","06:34","Sídl. Michal škola",["X","42"]] +["1","06:46","Březová, aut. st.",["X"]] +["33","06:49","Sídl. Michal škola",["X","42"]] +["3","06:56","Závodu míru",["X","32"]] +["3","06:56","Závodu míru",["X","42"]] +["3","07:04","Závodu míru",["X"]] +["1","07:05","Březová, aut. st.",["X"]] +["3","07:14","Závodu míru",["X"]] +["6","07:23","Sídl. Michal škola",["X","42"]] +["3","07:27","Sídliště Michal",["X","32"]] +["2","07:31","Sídliště Michal",["X","42"]] +["3","07:34","Závodu míru",["X","42"]] +["4","07:34","Závodu míru",["X"]] +["1","07:35","Březová, aut. st.",["X"]] +["3","07:45","Sídliště Michal",["X"]] +["33","07:54","Sídl. Michal škola",["X","42"]] +["1","07:55","Březová, aut. st.",["X"]] +["3","07:58","Závodu míru",["X","42"]] +["3","08:10","Závodu míru",["X","32"]] +["3","08:15","Závodu míru",["X","42"]] +["1","08:18","Březová, aut. st.",["X"]] +["33","08:29","Sídl. Michal škola",["X"]] +["3","08:34","Závodu míru",["X"]] +["3","08:50","Stará Ovčárna",["X"]] +["33","08:54","Sídl. Michal škola",["X"]] +["3","09:04","Závodu míru",["X"]] +["1","09:09","Březová, aut. st.",["X"]] +["3","09:24","Závodu míru",["X"]] +["33","09:34","Sídl. Michal škola",["X"]] +["4","09:41","Sídliště Michal",["X"]] +["3","09:45","Závodu míru",["X"]] +["1","09:58","Březová, aut. st.",["X"]] +["3","09:59","Jezero Michal",["X"]] +["7","10:14","Březová, aut.st.",["X"]] +["33","10:24","Sídl. Michal škola",["X"]] +["3","10:40","Závodu míru",["X"]] +["1","10:55","Březová, aut. st.",["X"]] +["3","10:55","Závodu míru",["X"]] +["3","11:17","Závodu míru",["X"]] +["33","11:29","Sídl. Michal škola",["X"]] +["3","11:44","Závodu míru",["X"]] +["1","11:46","Březová, aut. st.",["X"]] +["33","11:56","Sídl. Michal škola",["X"]] +["3","12:05","Závodu míru",["X"]] +["3","12:24","Jezero Michal",["X"]] +["1","12:33","Březová, aut. st.",["X"]] +["3","12:44","Závodu míru",["X"]] +["3","12:59","Závodu míru",["X"]] +["6","12:59","Sídl. Michal škola",["X","42"]] +["33","13:04","Sídl. Michal škola",["X"]] +["1","13:06","Březová, aut. st.",["X"]] +["3","13:15","Závodu míru",["X"]] +["2","13:17","Sídliště Michal",["X"]] +["1","13:22","Březová, aut. st.",["X"]] +["3","13:24","Stará Ovčárna",["X"]] +["33","13:39","Sídl. Michal škola",["X"]] +["1","13:48","Březová, aut. st.",["X"]] +["33","14:04","Sídl. Michal škola",["X"]] +["6","14:04","Sídl. Michal škola",["X"]] +["4","14:06","Stará Ovčárna",["X"]] +["3","14:09","Závodu míru",["X"]] +["1","14:10","Březová, aut. st.",["X"]] +["3","14:21","Závodu míru",["X"]] +["1","14:34","Březová, aut. st.",["X"]] +["6","14:34","Sídl. Michal škola",["X"]] +["4","14:42","Závodu míru",["X"]] +["3","14:43","Závodu míru",["X"]] +["33","14:46","Sídl. Michal škola",["X"]] +["3","14:52","Závodu míru",["X"]] +["1","15:09","Březová, aut. st.",["X"]] +["33","15:09","Sídl. Michal škola",["X"]] +["3","15:13","Závodu míru",["X"]] +["6","15:14","Sídl. Michal škola",["X"]] +["3","15:23","Sokolov, Hrušková",["X","42"]] +["3","15:30","Závodu míru",["X"]] +["1","15:31","Březová, aut. st.",["X"]] +["33","15:39","Sídl. Michal škola",["X"]] +["3","15:39","Jezero Michal",["X"]] +["7","15:54","Březová, aut.st.",["X"]] +["3","16:00","Sídl. Michal škola",["X","42"]] +["4","16:06","Závodu míru",["X"]] +["33","16:14","Sídl. Michal škola",["X"]] +["3","16:14","Závodu míru",["X"]] +["1","16:21","Březová, aut. st.",["X"]] +["7","16:29","Březová, aut.st.",["X"]] +["3","16:35","Závodu míru",["X"]] +["6","16:44","Sídl. Michal škola",["X","42"]] +["3","16:48","Závodu míru",["X"]] +["4","16:51","Závodu míru",["X","42"]] +["7","16:59","Březová, aut.st.",["X"]] +["3","17:09","Jezero Michal",["X"]] +["3","17:18","Závodu míru",["X"]] +["3","17:34","Závodu míru",["X"]] +["1","17:38","Březová, aut. st.",["X"]] +["3","17:57","Závodu míru",["X"]] +["3","18:14","Závodu míru",["X"]] +["3","18:21","Závodu míru",["X"]] +["1","18:26","Březová, aut. st.",["X"]] +["3","18:34","Závodu míru",["X"]] +["3","18:54","Závodu míru",["X"]] +["1","19:08","Březová, aut. st.",["X"]] +["3","19:19","Závodu míru",["X","31"]] +["3","19:34","Závodu míru",["X","31"]] +["1","19:53","Březová, aut. st.",["X","31"]] +["3","19:54","Závodu míru",["X","31"]] +["3","20:19","Závodu míru",["X","31"]] +["3","20:49","Závodu míru",["X","31"]] +["1","20:55","Březová, aut. st.",["X","31"]] +["3","21:09","Závodu míru",["X","31"]] +["3","21:24","Stará Ovčárna",["X","31"]] +["1","21:38","Březová, aut. st.",["X","31"]] +["3","22:12","Stará Ovčárna",["X","31"]] +["1","22:28","Březová, aut. st.",["X","31"]] +["3","22:41","Závodu míru",["X","31"]] + +["6.6","Patek"] +["3","04:29","Závodu míru",["X"]] +["1","04:50","Březová, aut. st.",["X"]] +["3","04:52","Závodu míru",["X"]] +["3","05:02","Závodu míru",["X"]] +["4","05:05","Závodu míru",["X"]] +["6","05:07","Sídl. Michal škola",["X","42"]] +["6","05:07","Závodu míru",["X","32"]] +["3","05:09","Závodu míru",["X","42"]] +["3","05:22","Závodu míru",["X"]] +["1","05:23","Březová, aut. st.",["X"]] +["6","05:34","Sídl. Michal škola",["X","42"]] +["4","05:35","Stará Ovčárna",["X"]] +["3","05:36","Sídl. Michal škola",["X","42"]] +["3","05:38","Sídliště Michal",["X","32"]] +["1","05:51","Březová, aut. st.",["X"]] +["3","05:58","Závodu míru",["X"]] +["6","06:04","Sídl. Michal škola",["X","42"]] +["1","06:13","Březová, aut. st.",["X"]] +["3","06:16","Závodu míru",["X","42"]] +["3","06:19","Závodu míru",["X","32"]] +["3","06:24","Sídliště Michal",["X"]] +["4","06:31","Závodu míru",["X","42"]] +["6","06:32","Sídl. Michal škola",["X","32"]] +["3","06:34","Závodu míru",["X"]] +["6","06:34","Sídl. Michal škola",["X","42"]] +["1","06:46","Březová, aut. st.",["X"]] +["33","06:49","Sídl. Michal škola",["X","42"]] +["3","06:56","Závodu míru",["X","32"]] +["3","06:56","Závodu míru",["X","42"]] +["3","07:04","Závodu míru",["X"]] +["1","07:05","Březová, aut. st.",["X"]] +["3","07:14","Závodu míru",["X"]] +["6","07:23","Sídl. Michal škola",["X","42"]] +["3","07:27","Sídliště Michal",["X","32"]] +["2","07:31","Sídliště Michal",["X","42"]] +["3","07:34","Závodu míru",["X","42"]] +["4","07:34","Závodu míru",["X"]] +["1","07:35","Březová, aut. st.",["X"]] +["3","07:45","Sídliště Michal",["X"]] +["33","07:54","Sídl. Michal škola",["X","42"]] +["1","07:55","Březová, aut. st.",["X"]] +["3","07:58","Závodu míru",["X","42"]] +["3","08:10","Závodu míru",["X","32"]] +["3","08:15","Závodu míru",["X","42"]] +["1","08:18","Březová, aut. st.",["X"]] +["33","08:29","Sídl. Michal škola",["X"]] +["3","08:34","Závodu míru",["X"]] +["3","08:50","Stará Ovčárna",["X"]] +["33","08:54","Sídl. Michal škola",["X"]] +["3","09:04","Závodu míru",["X"]] +["1","09:09","Březová, aut. st.",["X"]] +["3","09:24","Závodu míru",["X"]] +["33","09:34","Sídl. Michal škola",["X"]] +["4","09:41","Sídliště Michal",["X"]] +["3","09:45","Závodu míru",["X"]] +["1","09:58","Březová, aut. st.",["X"]] +["3","09:59","Jezero Michal",["X"]] +["7","10:14","Březová, aut.st.",["X"]] +["33","10:24","Sídl. Michal škola",["X"]] +["3","10:40","Závodu míru",["X"]] +["1","10:55","Březová, aut. st.",["X"]] +["3","10:55","Závodu míru",["X"]] +["3","11:17","Závodu míru",["X"]] +["33","11:29","Sídl. Michal škola",["X"]] +["3","11:44","Závodu míru",["X"]] +["1","11:46","Březová, aut. st.",["X"]] +["33","11:56","Sídl. Michal škola",["X"]] +["3","12:05","Závodu míru",["X"]] +["3","12:24","Jezero Michal",["X"]] +["1","12:33","Březová, aut. st.",["X"]] +["3","12:44","Závodu míru",["X"]] +["3","12:59","Závodu míru",["X"]] +["6","12:59","Sídl. Michal škola",["X","42"]] +["33","13:04","Sídl. Michal škola",["X"]] +["1","13:06","Březová, aut. st.",["X"]] +["3","13:15","Závodu míru",["X"]] +["2","13:17","Sídliště Michal",["X"]] +["1","13:22","Březová, aut. st.",["X"]] +["3","13:24","Stará Ovčárna",["X"]] +["33","13:39","Sídl. Michal škola",["X"]] +["1","13:48","Březová, aut. st.",["X"]] +["33","14:04","Sídl. Michal škola",["X"]] +["6","14:04","Sídl. Michal škola",["X"]] +["4","14:06","Stará Ovčárna",["X"]] +["3","14:09","Závodu míru",["X"]] +["1","14:10","Březová, aut. st.",["X"]] +["3","14:21","Závodu míru",["X"]] +["1","14:34","Březová, aut. st.",["X"]] +["6","14:34","Sídl. Michal škola",["X"]] +["4","14:42","Závodu míru",["X"]] +["3","14:43","Závodu míru",["X"]] +["33","14:46","Sídl. Michal škola",["X"]] +["3","14:52","Závodu míru",["X"]] +["1","15:09","Březová, aut. st.",["X"]] +["33","15:09","Sídl. Michal škola",["X"]] +["3","15:13","Závodu míru",["X"]] +["6","15:14","Sídl. Michal škola",["X"]] +["3","15:23","Sokolov, Hrušková",["X","42"]] +["3","15:30","Závodu míru",["X"]] +["1","15:31","Březová, aut. st.",["X"]] +["33","15:39","Sídl. Michal škola",["X"]] +["3","15:39","Jezero Michal",["X"]] +["7","15:54","Březová, aut.st.",["X"]] +["3","16:00","Sídl. Michal škola",["X","42"]] +["4","16:06","Závodu míru",["X"]] +["33","16:14","Sídl. Michal škola",["X"]] +["3","16:14","Závodu míru",["X"]] +["1","16:21","Březová, aut. st.",["X"]] +["7","16:29","Březová, aut.st.",["X"]] +["3","16:35","Závodu míru",["X"]] +["6","16:44","Sídl. Michal škola",["X","42"]] +["3","16:48","Závodu míru",["X"]] +["4","16:51","Závodu míru",["X","42"]] +["7","16:59","Březová, aut.st.",["X"]] +["3","17:09","Jezero Michal",["X"]] +["3","17:18","Závodu míru",["X"]] +["3","17:34","Závodu míru",["X"]] +["1","17:38","Březová, aut. st.",["X"]] +["3","17:57","Závodu míru",["X"]] +["3","18:14","Závodu míru",["X"]] +["3","18:21","Závodu míru",["X"]] +["1","18:26","Březová, aut. st.",["X"]] +["3","18:34","Závodu míru",["X"]] +["3","18:54","Závodu míru",["X"]] +["1","19:08","Březová, aut. st.",["X"]] +["3","19:19","Závodu míru",["X","31"]] +["3","19:34","Závodu míru",["X","31"]] +["1","19:53","Březová, aut. st.",["X","31"]] +["3","19:54","Závodu míru",["X","31"]] +["3","20:19","Závodu míru",["X","31"]] +["3","20:49","Závodu míru",["X","31"]] +["1","20:55","Březová, aut. st.",["X","31"]] +["3","21:09","Závodu míru",["X","31"]] +["3","21:24","Stará Ovčárna",["X","31"]] +["1","21:38","Březová, aut. st.",["X","31"]] +["3","22:12","Stará Ovčárna",["X","31"]] +["1","22:28","Březová, aut. st.",["X","31"]] +["3","22:41","Závodu míru",["X","31"]] + +["7.6","Sobota"] +["3","04:56","Závodu míru",["6+","25"]] +["1","05:47","Březová, aut. st.",["6+","25"]] +["3","05:57","Závodu míru",["6+","25"]] +["3","06:24","Závodu míru",["6+","25"]] +["3","06:56","Závodu míru",["6+"]] +["1","06:57","Březová, aut. st.",["6+","25"]] +["3","07:19","Závodu míru",["6+"]] +["3","07:51","Závodu míru",["6+"]] +["1","07:57","Březová, aut. st.",["6+"]] +["3","08:15","Závodu míru",["6+"]] +["3","08:51","Závodu míru",["6+"]] +["1","08:57","Březová, aut. st.",["6+"]] +["3","09:20","Závodu míru",["6+"]] +["1","09:44","Březová, aut. st.",["6+"]] +["3","09:51","Závodu míru",["6+"]] +["3","10:19","Závodu míru",["6+"]] +["1","10:57","Březová, aut. st.",["6+"]] +["3","11:02","Závodu míru",["6+"]] +["3","11:29","Závodu míru",["6+"]] +["1","11:49","Březová, aut. st.",["6+"]] +["3","11:51","Závodu míru",["6+"]] +["3","12:19","Závodu míru",["6+"]] +["3","12:51","Závodu míru",["6+"]] +["1","12:57","Březová, aut. st.",["6+"]] +["3","13:28","Závodu míru",["6+"]] +["3","13:51","Závodu míru",["6+"]] +["1","13:57","Březová, aut. st.",["6+"]] +["3","14:19","Závodu míru",["6+"]] +["1","14:49","Březová, aut. st.",["6+"]] +["3","14:51","Závodu míru",["6+"]] +["3","15:19","Závodu míru",["6+"]] +["3","15:51","Závodu míru",["6+"]] +["1","15:57","Březová, aut. st.",["6+"]] +["3","16:28","Závodu míru",["6+"]] +["3","16:53","Závodu míru",["6+"]] +["1","16:57","Březová, aut. st.",["6+"]] +["3","17:14","Závodu míru",["6+"]] +["3","17:51","Závodu míru",["6+"]] +["3","18:21","Stará Ovčárna",["6+"]] +["1","18:24","Březová, aut. st.",["6+"]] +["3","18:51","Závodu míru",["6+"]] +["3","19:14","Závodu míru",["6+","24"]] +["3","19:54","Závodu míru",["6+","24"]] +["1","19:57","Březová, aut. st.",["6+","24"]] +["1","20:28","Březová, aut. st.",["6+","24"]] +["3","20:49","Závodu míru",["6+","24"]] +["1","21:23","Březová, aut. st.",["6+","24"]] +["3","21:24","Závodu míru",["6+","24"]] +["3","22:04","Závodu míru",["6+","24"]] + +["7.6","Sobota"] +["3","04:56","Závodu míru",["6+","25"]] +["1","05:47","Březová, aut. st.",["6+","25"]] +["3","05:57","Závodu míru",["6+","25"]] +["3","06:24","Závodu míru",["6+","25"]] +["3","06:56","Závodu míru",["6+"]] +["1","06:57","Březová, aut. st.",["6+","25"]] +["3","07:19","Závodu míru",["6+"]] +["3","07:51","Závodu míru",["6+"]] +["1","07:57","Březová, aut. st.",["6+"]] +["3","08:15","Závodu míru",["6+"]] +["3","08:51","Závodu míru",["6+"]] +["1","08:57","Březová, aut. st.",["6+"]] +["3","09:20","Závodu míru",["6+"]] +["1","09:44","Březová, aut. st.",["6+"]] +["3","09:51","Závodu míru",["6+"]] +["3","10:19","Závodu míru",["6+"]] +["1","10:57","Březová, aut. st.",["6+"]] +["3","11:02","Závodu míru",["6+"]] +["3","11:29","Závodu míru",["6+"]] +["1","11:49","Březová, aut. st.",["6+"]] +["3","11:51","Závodu míru",["6+"]] +["3","12:19","Závodu míru",["6+"]] +["3","12:51","Závodu míru",["6+"]] +["1","12:57","Březová, aut. st.",["6+"]] +["3","13:28","Závodu míru",["6+"]] +["3","13:51","Závodu míru",["6+"]] +["1","13:57","Březová, aut. st.",["6+"]] +["3","14:19","Závodu míru",["6+"]] +["1","14:49","Březová, aut. st.",["6+"]] +["3","14:51","Závodu míru",["6+"]] +["3","15:19","Závodu míru",["6+"]] +["3","15:51","Závodu míru",["6+"]] +["1","15:57","Březová, aut. st.",["6+"]] +["3","16:28","Závodu míru",["6+"]] +["3","16:53","Závodu míru",["6+"]] +["1","16:57","Březová, aut. st.",["6+"]] +["3","17:14","Závodu míru",["6+"]] +["3","17:51","Závodu míru",["6+"]] +["3","18:21","Stará Ovčárna",["6+"]] +["1","18:24","Březová, aut. st.",["6+"]] +["3","18:51","Závodu míru",["6+"]] +["3","19:14","Závodu míru",["6+","24"]] +["3","19:54","Závodu míru",["6+","24"]] +["1","19:57","Březová, aut. st.",["6+","24"]] +["1","20:28","Březová, aut. st.",["6+","24"]] +["3","20:49","Závodu míru",["6+","24"]] +["1","21:23","Březová, aut. st.",["6+","24"]] +["3","21:24","Závodu míru",["6+","24"]] +["3","22:04","Závodu míru",["6+","24"]] + +["8.6","Nedele"] +["3","04:56","Závodu míru",["6+","25"]] +["1","05:47","Březová, aut. st.",["6+","25"]] +["3","05:57","Závodu míru",["6+","25"]] +["3","06:24","Závodu míru",["6+","25"]] +["3","06:56","Závodu míru",["6+"]] +["1","06:57","Březová, aut. st.",["6+","25"]] +["3","07:19","Závodu míru",["6+"]] +["3","07:51","Závodu míru",["6+"]] +["1","07:57","Březová, aut. st.",["6+"]] +["3","08:15","Závodu míru",["6+"]] +["3","08:51","Závodu míru",["6+"]] +["1","08:57","Březová, aut. st.",["6+"]] +["3","09:20","Závodu míru",["6+"]] +["1","09:44","Březová, aut. st.",["6+"]] +["3","09:51","Závodu míru",["6+"]] +["3","10:19","Závodu míru",["6+"]] +["1","10:57","Březová, aut. st.",["6+"]] +["3","11:02","Závodu míru",["6+"]] +["3","11:29","Závodu míru",["6+"]] +["1","11:49","Březová, aut. st.",["6+"]] +["3","11:51","Závodu míru",["6+"]] +["3","12:19","Závodu míru",["6+"]] +["3","12:51","Závodu míru",["6+"]] +["1","12:57","Březová, aut. st.",["6+"]] +["3","13:28","Závodu míru",["6+"]] +["3","13:51","Závodu míru",["6+"]] +["1","13:57","Březová, aut. st.",["6+"]] +["3","14:19","Závodu míru",["6+"]] +["1","14:49","Březová, aut. st.",["6+"]] +["3","14:51","Závodu míru",["6+"]] +["3","15:19","Závodu míru",["6+"]] +["3","15:51","Závodu míru",["6+"]] +["1","15:57","Březová, aut. st.",["6+"]] +["3","16:28","Závodu míru",["6+"]] +["3","16:53","Závodu míru",["6+"]] +["1","16:57","Březová, aut. st.",["6+"]] +["3","17:14","Závodu míru",["6+"]] +["3","17:51","Závodu míru",["6+"]] +["3","18:21","Stará Ovčárna",["6+"]] +["1","18:24","Březová, aut. st.",["6+"]] +["3","18:51","Závodu míru",["6+"]] +["3","19:14","Závodu míru",["6+","24"]] +["3","19:54","Závodu míru",["6+","24"]] +["1","19:57","Březová, aut. st.",["6+","24"]] +["1","20:28","Březová, aut. st.",["6+","24"]] +["3","20:49","Závodu míru",["6+","24"]] +["1","21:23","Březová, aut. st.",["6+","24"]] +["3","21:24","Závodu míru",["6+","24"]] +["3","22:04","Závodu míru",["6+","24"]] + +["8.6","Nedele"] +["3","04:56","Závodu míru",["6+","25"]] +["1","05:47","Březová, aut. st.",["6+","25"]] +["3","05:57","Závodu míru",["6+","25"]] +["3","06:24","Závodu míru",["6+","25"]] +["3","06:56","Závodu míru",["6+"]] +["1","06:57","Březová, aut. st.",["6+","25"]] +["3","07:19","Závodu míru",["6+"]] +["3","07:51","Závodu míru",["6+"]] +["1","07:57","Březová, aut. st.",["6+"]] +["3","08:15","Závodu míru",["6+"]] +["3","08:51","Závodu míru",["6+"]] +["1","08:57","Březová, aut. st.",["6+"]] +["3","09:20","Závodu míru",["6+"]] +["1","09:44","Březová, aut. st.",["6+"]] +["3","09:51","Závodu míru",["6+"]] +["3","10:19","Závodu míru",["6+"]] +["1","10:57","Březová, aut. st.",["6+"]] +["3","11:02","Závodu míru",["6+"]] +["3","11:29","Závodu míru",["6+"]] +["1","11:49","Březová, aut. st.",["6+"]] +["3","11:51","Závodu míru",["6+"]] +["3","12:19","Závodu míru",["6+"]] +["3","12:51","Závodu míru",["6+"]] +["1","12:57","Březová, aut. st.",["6+"]] +["3","13:28","Závodu míru",["6+"]] +["3","13:51","Závodu míru",["6+"]] +["1","13:57","Březová, aut. st.",["6+"]] +["3","14:19","Závodu míru",["6+"]] +["1","14:49","Březová, aut. st.",["6+"]] +["3","14:51","Závodu míru",["6+"]] +["3","15:19","Závodu míru",["6+"]] +["3","15:51","Závodu míru",["6+"]] +["1","15:57","Březová, aut. st.",["6+"]] +["3","16:28","Závodu míru",["6+"]] +["3","16:53","Závodu míru",["6+"]] +["1","16:57","Březová, aut. st.",["6+"]] +["3","17:14","Závodu míru",["6+"]] +["3","17:51","Závodu míru",["6+"]] +["3","18:21","Stará Ovčárna",["6+"]] +["1","18:24","Březová, aut. st.",["6+"]] +["3","18:51","Závodu míru",["6+"]] +["3","19:14","Závodu míru",["6+","24"]] +["3","19:54","Závodu míru",["6+","24"]] +["1","19:57","Březová, aut. st.",["6+","24"]] +["1","20:28","Březová, aut. st.",["6+","24"]] +["3","20:49","Závodu míru",["6+","24"]] +["1","21:23","Březová, aut. st.",["6+","24"]] +["3","21:24","Závodu míru",["6+","24"]] +["3","22:04","Závodu míru",["6+","24"]] + +["9.6","Pondeli"] +["3","04:29","Závodu míru",["X"]] +["1","04:50","Březová, aut. st.",["X"]] +["3","04:52","Závodu míru",["X"]] +["3","05:02","Závodu míru",["X"]] +["4","05:05","Závodu míru",["X"]] +["6","05:07","Sídl. Michal škola",["X","42"]] +["6","05:07","Závodu míru",["X","32"]] +["3","05:09","Závodu míru",["X","42"]] +["3","05:22","Závodu míru",["X"]] +["1","05:23","Březová, aut. st.",["X"]] +["6","05:34","Sídl. Michal škola",["X","42"]] +["4","05:35","Stará Ovčárna",["X"]] +["3","05:36","Sídl. Michal škola",["X","42"]] +["3","05:38","Sídliště Michal",["X","32"]] +["1","05:51","Březová, aut. st.",["X"]] +["3","05:58","Závodu míru",["X"]] +["6","06:04","Sídl. Michal škola",["X","42"]] +["1","06:13","Březová, aut. st.",["X"]] +["3","06:16","Závodu míru",["X","42"]] +["3","06:19","Závodu míru",["X","32"]] +["3","06:24","Sídliště Michal",["X"]] +["4","06:31","Závodu míru",["X","42"]] +["6","06:32","Sídl. Michal škola",["X","32"]] +["3","06:34","Závodu míru",["X"]] +["6","06:34","Sídl. Michal škola",["X","42"]] +["1","06:46","Březová, aut. st.",["X"]] +["33","06:49","Sídl. Michal škola",["X","42"]] +["3","06:56","Závodu míru",["X","32"]] +["3","06:56","Závodu míru",["X","42"]] +["3","07:04","Závodu míru",["X"]] +["1","07:05","Březová, aut. st.",["X"]] +["3","07:14","Závodu míru",["X"]] +["6","07:23","Sídl. Michal škola",["X","42"]] +["3","07:27","Sídliště Michal",["X","32"]] +["2","07:31","Sídliště Michal",["X","42"]] +["3","07:34","Závodu míru",["X","42"]] +["4","07:34","Závodu míru",["X"]] +["1","07:35","Březová, aut. st.",["X"]] +["3","07:45","Sídliště Michal",["X"]] +["33","07:54","Sídl. Michal škola",["X","42"]] +["1","07:55","Březová, aut. st.",["X"]] +["3","07:58","Závodu míru",["X","42"]] +["3","08:10","Závodu míru",["X","32"]] +["3","08:15","Závodu míru",["X","42"]] +["1","08:18","Březová, aut. st.",["X"]] +["33","08:29","Sídl. Michal škola",["X"]] +["3","08:34","Závodu míru",["X"]] +["3","08:50","Stará Ovčárna",["X"]] +["33","08:54","Sídl. Michal škola",["X"]] +["3","09:04","Závodu míru",["X"]] +["1","09:09","Březová, aut. st.",["X"]] +["3","09:24","Závodu míru",["X"]] +["33","09:34","Sídl. Michal škola",["X"]] +["4","09:41","Sídliště Michal",["X"]] +["3","09:45","Závodu míru",["X"]] +["1","09:58","Březová, aut. st.",["X"]] +["3","09:59","Jezero Michal",["X"]] +["7","10:14","Březová, aut.st.",["X"]] +["33","10:24","Sídl. Michal škola",["X"]] +["3","10:40","Závodu míru",["X"]] +["1","10:55","Březová, aut. st.",["X"]] +["3","10:55","Závodu míru",["X"]] +["3","11:17","Závodu míru",["X"]] +["33","11:29","Sídl. Michal škola",["X"]] +["3","11:44","Závodu míru",["X"]] +["1","11:46","Březová, aut. st.",["X"]] +["33","11:56","Sídl. Michal škola",["X"]] +["3","12:05","Závodu míru",["X"]] +["3","12:24","Jezero Michal",["X"]] +["1","12:33","Březová, aut. st.",["X"]] +["3","12:44","Závodu míru",["X"]] +["3","12:59","Závodu míru",["X"]] +["6","12:59","Sídl. Michal škola",["X","42"]] +["33","13:04","Sídl. Michal škola",["X"]] +["1","13:06","Březová, aut. st.",["X"]] +["3","13:15","Závodu míru",["X"]] +["2","13:17","Sídliště Michal",["X"]] +["1","13:22","Březová, aut. st.",["X"]] +["3","13:24","Stará Ovčárna",["X"]] +["33","13:39","Sídl. Michal škola",["X"]] +["1","13:48","Březová, aut. st.",["X"]] +["33","14:04","Sídl. Michal škola",["X"]] +["6","14:04","Sídl. Michal škola",["X"]] +["4","14:06","Stará Ovčárna",["X"]] +["3","14:09","Závodu míru",["X"]] +["1","14:10","Březová, aut. st.",["X"]] +["3","14:21","Závodu míru",["X"]] +["1","14:34","Březová, aut. st.",["X"]] +["6","14:34","Sídl. Michal škola",["X"]] +["4","14:42","Závodu míru",["X"]] +["3","14:43","Závodu míru",["X"]] +["33","14:46","Sídl. Michal škola",["X"]] +["3","14:52","Závodu míru",["X"]] +["1","15:09","Březová, aut. st.",["X"]] +["33","15:09","Sídl. Michal škola",["X"]] +["3","15:13","Závodu míru",["X"]] +["6","15:14","Sídl. Michal škola",["X"]] +["3","15:23","Sokolov, Hrušková",["X","42"]] +["3","15:30","Závodu míru",["X"]] +["1","15:31","Březová, aut. st.",["X"]] +["33","15:39","Sídl. Michal škola",["X"]] +["3","15:39","Jezero Michal",["X"]] +["7","15:54","Březová, aut.st.",["X"]] +["3","16:00","Sídl. Michal škola",["X","42"]] +["4","16:06","Závodu míru",["X"]] +["33","16:14","Sídl. Michal škola",["X"]] +["3","16:14","Závodu míru",["X"]] +["1","16:21","Březová, aut. st.",["X"]] +["7","16:29","Březová, aut.st.",["X"]] +["3","16:35","Závodu míru",["X"]] +["6","16:44","Sídl. Michal škola",["X","42"]] +["3","16:48","Závodu míru",["X"]] +["4","16:51","Závodu míru",["X","42"]] +["7","16:59","Březová, aut.st.",["X"]] +["3","17:09","Jezero Michal",["X"]] +["3","17:18","Závodu míru",["X"]] +["3","17:34","Závodu míru",["X"]] +["1","17:38","Březová, aut. st.",["X"]] +["3","17:57","Závodu míru",["X"]] +["3","18:14","Závodu míru",["X"]] +["3","18:21","Závodu míru",["X"]] +["1","18:26","Březová, aut. st.",["X"]] +["3","18:34","Závodu míru",["X"]] +["3","18:54","Závodu míru",["X"]] +["1","19:08","Březová, aut. st.",["X"]] +["3","19:19","Závodu míru",["X","31"]] +["3","19:34","Závodu míru",["X","31"]] +["1","19:53","Březová, aut. st.",["X","31"]] +["3","19:54","Závodu míru",["X","31"]] +["3","20:19","Závodu míru",["X","31"]] +["3","20:49","Závodu míru",["X","31"]] +["1","20:55","Březová, aut. st.",["X","31"]] +["3","21:09","Závodu míru",["X","31"]] +["3","21:24","Stará Ovčárna",["X","31"]] +["1","21:38","Březová, aut. st.",["X","31"]] +["3","22:12","Stará Ovčárna",["X","31"]] +["1","22:28","Březová, aut. st.",["X","31"]] +["3","22:41","Závodu míru",["X","31"]] + +["9.6","Pondeli"] +["3","04:29","Závodu míru",["X"]] +["1","04:50","Březová, aut. st.",["X"]] +["3","04:52","Závodu míru",["X"]] +["3","05:02","Závodu míru",["X"]] +["4","05:05","Závodu míru",["X"]] +["6","05:07","Sídl. Michal škola",["X","42"]] +["6","05:07","Závodu míru",["X","32"]] +["3","05:09","Závodu míru",["X","42"]] +["3","05:22","Závodu míru",["X"]] +["1","05:23","Březová, aut. st.",["X"]] +["6","05:34","Sídl. Michal škola",["X","42"]] +["4","05:35","Stará Ovčárna",["X"]] +["3","05:36","Sídl. Michal škola",["X","42"]] +["3","05:38","Sídliště Michal",["X","32"]] +["1","05:51","Březová, aut. st.",["X"]] +["3","05:58","Závodu míru",["X"]] +["6","06:04","Sídl. Michal škola",["X","42"]] +["1","06:13","Březová, aut. st.",["X"]] +["3","06:16","Závodu míru",["X","42"]] +["3","06:19","Závodu míru",["X","32"]] +["3","06:24","Sídliště Michal",["X"]] +["4","06:31","Závodu míru",["X","42"]] +["6","06:32","Sídl. Michal škola",["X","32"]] +["3","06:34","Závodu míru",["X"]] +["6","06:34","Sídl. Michal škola",["X","42"]] +["1","06:46","Březová, aut. st.",["X"]] +["33","06:49","Sídl. Michal škola",["X","42"]] +["3","06:56","Závodu míru",["X","32"]] +["3","06:56","Závodu míru",["X","42"]] +["3","07:04","Závodu míru",["X"]] +["1","07:05","Březová, aut. st.",["X"]] +["3","07:14","Závodu míru",["X"]] +["6","07:23","Sídl. Michal škola",["X","42"]] +["3","07:27","Sídliště Michal",["X","32"]] +["2","07:31","Sídliště Michal",["X","42"]] +["3","07:34","Závodu míru",["X","42"]] +["4","07:34","Závodu míru",["X"]] +["1","07:35","Březová, aut. st.",["X"]] +["3","07:45","Sídliště Michal",["X"]] +["33","07:54","Sídl. Michal škola",["X","42"]] +["1","07:55","Březová, aut. st.",["X"]] +["3","07:58","Závodu míru",["X","42"]] +["3","08:10","Závodu míru",["X","32"]] +["3","08:15","Závodu míru",["X","42"]] +["1","08:18","Březová, aut. st.",["X"]] +["33","08:29","Sídl. Michal škola",["X"]] +["3","08:34","Závodu míru",["X"]] +["3","08:50","Stará Ovčárna",["X"]] +["33","08:54","Sídl. Michal škola",["X"]] +["3","09:04","Závodu míru",["X"]] +["1","09:09","Březová, aut. st.",["X"]] +["3","09:24","Závodu míru",["X"]] +["33","09:34","Sídl. Michal škola",["X"]] +["4","09:41","Sídliště Michal",["X"]] +["3","09:45","Závodu míru",["X"]] +["1","09:58","Březová, aut. st.",["X"]] +["3","09:59","Jezero Michal",["X"]] +["7","10:14","Březová, aut.st.",["X"]] +["33","10:24","Sídl. Michal škola",["X"]] +["3","10:40","Závodu míru",["X"]] +["1","10:55","Březová, aut. st.",["X"]] +["3","10:55","Závodu míru",["X"]] +["3","11:17","Závodu míru",["X"]] +["33","11:29","Sídl. Michal škola",["X"]] +["3","11:44","Závodu míru",["X"]] +["1","11:46","Březová, aut. st.",["X"]] +["33","11:56","Sídl. Michal škola",["X"]] +["3","12:05","Závodu míru",["X"]] +["3","12:24","Jezero Michal",["X"]] +["1","12:33","Březová, aut. st.",["X"]] +["3","12:44","Závodu míru",["X"]] +["3","12:59","Závodu míru",["X"]] +["6","12:59","Sídl. Michal škola",["X","42"]] +["33","13:04","Sídl. Michal škola",["X"]] +["1","13:06","Březová, aut. st.",["X"]] +["3","13:15","Závodu míru",["X"]] +["2","13:17","Sídliště Michal",["X"]] +["1","13:22","Březová, aut. st.",["X"]] +["3","13:24","Stará Ovčárna",["X"]] +["33","13:39","Sídl. Michal škola",["X"]] +["1","13:48","Březová, aut. st.",["X"]] +["33","14:04","Sídl. Michal škola",["X"]] +["6","14:04","Sídl. Michal škola",["X"]] +["4","14:06","Stará Ovčárna",["X"]] +["3","14:09","Závodu míru",["X"]] +["1","14:10","Březová, aut. st.",["X"]] +["3","14:21","Závodu míru",["X"]] +["1","14:34","Březová, aut. st.",["X"]] +["6","14:34","Sídl. Michal škola",["X"]] +["4","14:42","Závodu míru",["X"]] +["3","14:43","Závodu míru",["X"]] +["33","14:46","Sídl. Michal škola",["X"]] +["3","14:52","Závodu míru",["X"]] +["1","15:09","Březová, aut. st.",["X"]] +["33","15:09","Sídl. Michal škola",["X"]] +["3","15:13","Závodu míru",["X"]] +["6","15:14","Sídl. Michal škola",["X"]] +["3","15:23","Sokolov, Hrušková",["X","42"]] +["3","15:30","Závodu míru",["X"]] +["1","15:31","Březová, aut. st.",["X"]] +["33","15:39","Sídl. Michal škola",["X"]] +["3","15:39","Jezero Michal",["X"]] +["7","15:54","Březová, aut.st.",["X"]] +["3","16:00","Sídl. Michal škola",["X","42"]] +["4","16:06","Závodu míru",["X"]] +["33","16:14","Sídl. Michal škola",["X"]] +["3","16:14","Závodu míru",["X"]] +["1","16:21","Březová, aut. st.",["X"]] +["7","16:29","Březová, aut.st.",["X"]] +["3","16:35","Závodu míru",["X"]] +["6","16:44","Sídl. Michal škola",["X","42"]] +["3","16:48","Závodu míru",["X"]] +["4","16:51","Závodu míru",["X","42"]] +["7","16:59","Březová, aut.st.",["X"]] +["3","17:09","Jezero Michal",["X"]] +["3","17:18","Závodu míru",["X"]] +["3","17:34","Závodu míru",["X"]] +["1","17:38","Březová, aut. st.",["X"]] +["3","17:57","Závodu míru",["X"]] +["3","18:14","Závodu míru",["X"]] +["3","18:21","Závodu míru",["X"]] +["1","18:26","Březová, aut. st.",["X"]] +["3","18:34","Závodu míru",["X"]] +["3","18:54","Závodu míru",["X"]] +["1","19:08","Březová, aut. st.",["X"]] +["3","19:19","Závodu míru",["X","31"]] +["3","19:34","Závodu míru",["X","31"]] +["1","19:53","Březová, aut. st.",["X","31"]] +["3","19:54","Závodu míru",["X","31"]] +["3","20:19","Závodu míru",["X","31"]] +["3","20:49","Závodu míru",["X","31"]] +["1","20:55","Březová, aut. st.",["X","31"]] +["3","21:09","Závodu míru",["X","31"]] +["3","21:24","Stará Ovčárna",["X","31"]] +["1","21:38","Březová, aut. st.",["X","31"]] +["3","22:12","Stará Ovčárna",["X","31"]] +["1","22:28","Březová, aut. st.",["X","31"]] +["3","22:41","Závodu míru",["X","31"]] + +["10.6","Uteri"] +["3","04:29","Závodu míru",["X"]] +["1","04:50","Březová, aut. st.",["X"]] +["3","04:52","Závodu míru",["X"]] +["3","05:02","Závodu míru",["X"]] +["4","05:05","Závodu míru",["X"]] +["6","05:07","Sídl. Michal škola",["X","42"]] +["6","05:07","Závodu míru",["X","32"]] +["3","05:09","Závodu míru",["X","42"]] +["3","05:22","Závodu míru",["X"]] +["1","05:23","Březová, aut. st.",["X"]] +["6","05:34","Sídl. Michal škola",["X","42"]] +["4","05:35","Stará Ovčárna",["X"]] +["3","05:36","Sídl. Michal škola",["X","42"]] +["3","05:38","Sídliště Michal",["X","32"]] +["1","05:51","Březová, aut. st.",["X"]] +["3","05:58","Závodu míru",["X"]] +["6","06:04","Sídl. Michal škola",["X","42"]] +["1","06:13","Březová, aut. st.",["X"]] +["3","06:16","Závodu míru",["X","42"]] +["3","06:19","Závodu míru",["X","32"]] +["3","06:24","Sídliště Michal",["X"]] +["4","06:31","Závodu míru",["X","42"]] +["6","06:32","Sídl. Michal škola",["X","32"]] +["3","06:34","Závodu míru",["X"]] +["6","06:34","Sídl. Michal škola",["X","42"]] +["1","06:46","Březová, aut. st.",["X"]] +["33","06:49","Sídl. Michal škola",["X","42"]] +["3","06:56","Závodu míru",["X","32"]] +["3","06:56","Závodu míru",["X","42"]] +["3","07:04","Závodu míru",["X"]] +["1","07:05","Březová, aut. st.",["X"]] +["3","07:14","Závodu míru",["X"]] +["6","07:23","Sídl. Michal škola",["X","42"]] +["3","07:27","Sídliště Michal",["X","32"]] +["2","07:31","Sídliště Michal",["X","42"]] +["3","07:34","Závodu míru",["X","42"]] +["4","07:34","Závodu míru",["X"]] +["1","07:35","Březová, aut. st.",["X"]] +["3","07:45","Sídliště Michal",["X"]] +["33","07:54","Sídl. Michal škola",["X","42"]] +["1","07:55","Březová, aut. st.",["X"]] +["3","07:58","Závodu míru",["X","42"]] +["3","08:10","Závodu míru",["X","32"]] +["3","08:15","Závodu míru",["X","42"]] +["1","08:18","Březová, aut. st.",["X"]] +["33","08:29","Sídl. Michal škola",["X"]] +["3","08:34","Závodu míru",["X"]] +["3","08:50","Stará Ovčárna",["X"]] +["33","08:54","Sídl. Michal škola",["X"]] +["3","09:04","Závodu míru",["X"]] +["1","09:09","Březová, aut. st.",["X"]] +["3","09:24","Závodu míru",["X"]] +["33","09:34","Sídl. Michal škola",["X"]] +["4","09:41","Sídliště Michal",["X"]] +["3","09:45","Závodu míru",["X"]] +["1","09:58","Březová, aut. st.",["X"]] +["3","09:59","Jezero Michal",["X"]] +["7","10:14","Březová, aut.st.",["X"]] +["33","10:24","Sídl. Michal škola",["X"]] +["3","10:40","Závodu míru",["X"]] +["1","10:55","Březová, aut. st.",["X"]] +["3","10:55","Závodu míru",["X"]] +["3","11:17","Závodu míru",["X"]] +["33","11:29","Sídl. Michal škola",["X"]] +["3","11:44","Závodu míru",["X"]] +["1","11:46","Březová, aut. st.",["X"]] +["33","11:56","Sídl. Michal škola",["X"]] +["3","12:05","Závodu míru",["X"]] +["3","12:24","Jezero Michal",["X"]] +["1","12:33","Březová, aut. st.",["X"]] +["3","12:44","Závodu míru",["X"]] +["3","12:59","Závodu míru",["X"]] +["6","12:59","Sídl. Michal škola",["X","42"]] +["33","13:04","Sídl. Michal škola",["X"]] +["1","13:06","Březová, aut. st.",["X"]] +["3","13:15","Závodu míru",["X"]] +["2","13:17","Sídliště Michal",["X"]] +["1","13:22","Březová, aut. st.",["X"]] +["3","13:24","Stará Ovčárna",["X"]] +["33","13:39","Sídl. Michal škola",["X"]] +["1","13:48","Březová, aut. st.",["X"]] +["33","14:04","Sídl. Michal škola",["X"]] +["6","14:04","Sídl. Michal škola",["X"]] +["4","14:06","Stará Ovčárna",["X"]] +["3","14:09","Závodu míru",["X"]] +["1","14:10","Březová, aut. st.",["X"]] +["3","14:21","Závodu míru",["X"]] +["1","14:34","Březová, aut. st.",["X"]] +["6","14:34","Sídl. Michal škola",["X"]] +["4","14:42","Závodu míru",["X"]] +["3","14:43","Závodu míru",["X"]] +["33","14:46","Sídl. Michal škola",["X"]] +["3","14:52","Závodu míru",["X"]] +["1","15:09","Březová, aut. st.",["X"]] +["33","15:09","Sídl. Michal škola",["X"]] +["3","15:13","Závodu míru",["X"]] +["6","15:14","Sídl. Michal škola",["X"]] +["3","15:23","Sokolov, Hrušková",["X","42"]] +["3","15:30","Závodu míru",["X"]] +["1","15:31","Březová, aut. st.",["X"]] +["33","15:39","Sídl. Michal škola",["X"]] +["3","15:39","Jezero Michal",["X"]] +["7","15:54","Březová, aut.st.",["X"]] +["3","16:00","Sídl. Michal škola",["X","42"]] +["4","16:06","Závodu míru",["X"]] +["33","16:14","Sídl. Michal škola",["X"]] +["3","16:14","Závodu míru",["X"]] +["1","16:21","Březová, aut. st.",["X"]] +["7","16:29","Březová, aut.st.",["X"]] +["3","16:35","Závodu míru",["X"]] +["6","16:44","Sídl. Michal škola",["X","42"]] +["3","16:48","Závodu míru",["X"]] +["4","16:51","Závodu míru",["X","42"]] +["7","16:59","Březová, aut.st.",["X"]] +["3","17:09","Jezero Michal",["X"]] +["3","17:18","Závodu míru",["X"]] +["3","17:34","Závodu míru",["X"]] +["1","17:38","Březová, aut. st.",["X"]] +["3","17:57","Závodu míru",["X"]] +["3","18:14","Závodu míru",["X"]] +["3","18:21","Závodu míru",["X"]] +["1","18:26","Březová, aut. st.",["X"]] +["3","18:34","Závodu míru",["X"]] +["3","18:54","Závodu míru",["X"]] +["1","19:08","Březová, aut. st.",["X"]] +["3","19:19","Závodu míru",["X","31"]] +["3","19:34","Závodu míru",["X","31"]] +["1","19:53","Březová, aut. st.",["X","31"]] +["3","19:54","Závodu míru",["X","31"]] +["3","20:19","Závodu míru",["X","31"]] +["3","20:49","Závodu míru",["X","31"]] +["1","20:55","Březová, aut. st.",["X","31"]] +["3","21:09","Závodu míru",["X","31"]] +["3","21:24","Stará Ovčárna",["X","31"]] +["1","21:38","Březová, aut. st.",["X","31"]] +["3","22:12","Stará Ovčárna",["X","31"]] +["1","22:28","Březová, aut. st.",["X","31"]] +["3","22:41","Závodu míru",["X","31"]] + +["10.6","Uteri"] +["3","04:29","Závodu míru",["X"]] +["1","04:50","Březová, aut. st.",["X"]] +["3","04:52","Závodu míru",["X"]] +["3","05:02","Závodu míru",["X"]] +["4","05:05","Závodu míru",["X"]] +["6","05:07","Sídl. Michal škola",["X","42"]] +["6","05:07","Závodu míru",["X","32"]] +["3","05:09","Závodu míru",["X","42"]] +["3","05:22","Závodu míru",["X"]] +["1","05:23","Březová, aut. st.",["X"]] +["6","05:34","Sídl. Michal škola",["X","42"]] +["4","05:35","Stará Ovčárna",["X"]] +["3","05:36","Sídl. Michal škola",["X","42"]] +["3","05:38","Sídliště Michal",["X","32"]] +["1","05:51","Březová, aut. st.",["X"]] +["3","05:58","Závodu míru",["X"]] +["6","06:04","Sídl. Michal škola",["X","42"]] +["1","06:13","Březová, aut. st.",["X"]] +["3","06:16","Závodu míru",["X","42"]] +["3","06:19","Závodu míru",["X","32"]] +["3","06:24","Sídliště Michal",["X"]] +["4","06:31","Závodu míru",["X","42"]] +["6","06:32","Sídl. Michal škola",["X","32"]] +["3","06:34","Závodu míru",["X"]] +["6","06:34","Sídl. Michal škola",["X","42"]] +["1","06:46","Březová, aut. st.",["X"]] +["33","06:49","Sídl. Michal škola",["X","42"]] +["3","06:56","Závodu míru",["X","32"]] +["3","06:56","Závodu míru",["X","42"]] +["3","07:04","Závodu míru",["X"]] +["1","07:05","Březová, aut. st.",["X"]] +["3","07:14","Závodu míru",["X"]] +["6","07:23","Sídl. Michal škola",["X","42"]] +["3","07:27","Sídliště Michal",["X","32"]] +["2","07:31","Sídliště Michal",["X","42"]] +["3","07:34","Závodu míru",["X","42"]] +["4","07:34","Závodu míru",["X"]] +["1","07:35","Březová, aut. st.",["X"]] +["3","07:45","Sídliště Michal",["X"]] +["33","07:54","Sídl. Michal škola",["X","42"]] +["1","07:55","Březová, aut. st.",["X"]] +["3","07:58","Závodu míru",["X","42"]] +["3","08:10","Závodu míru",["X","32"]] +["3","08:15","Závodu míru",["X","42"]] +["1","08:18","Březová, aut. st.",["X"]] +["33","08:29","Sídl. Michal škola",["X"]] +["3","08:34","Závodu míru",["X"]] +["3","08:50","Stará Ovčárna",["X"]] +["33","08:54","Sídl. Michal škola",["X"]] +["3","09:04","Závodu míru",["X"]] +["1","09:09","Březová, aut. st.",["X"]] +["3","09:24","Závodu míru",["X"]] +["33","09:34","Sídl. Michal škola",["X"]] +["4","09:41","Sídliště Michal",["X"]] +["3","09:45","Závodu míru",["X"]] +["1","09:58","Březová, aut. st.",["X"]] +["3","09:59","Jezero Michal",["X"]] +["7","10:14","Březová, aut.st.",["X"]] +["33","10:24","Sídl. Michal škola",["X"]] +["3","10:40","Závodu míru",["X"]] +["1","10:55","Březová, aut. st.",["X"]] +["3","10:55","Závodu míru",["X"]] +["3","11:17","Závodu míru",["X"]] +["33","11:29","Sídl. Michal škola",["X"]] +["3","11:44","Závodu míru",["X"]] +["1","11:46","Březová, aut. st.",["X"]] +["33","11:56","Sídl. Michal škola",["X"]] +["3","12:05","Závodu míru",["X"]] +["3","12:24","Jezero Michal",["X"]] +["1","12:33","Březová, aut. st.",["X"]] +["3","12:44","Závodu míru",["X"]] +["3","12:59","Závodu míru",["X"]] +["6","12:59","Sídl. Michal škola",["X","42"]] +["33","13:04","Sídl. Michal škola",["X"]] +["1","13:06","Březová, aut. st.",["X"]] +["3","13:15","Závodu míru",["X"]] +["2","13:17","Sídliště Michal",["X"]] +["1","13:22","Březová, aut. st.",["X"]] +["3","13:24","Stará Ovčárna",["X"]] +["33","13:39","Sídl. Michal škola",["X"]] +["1","13:48","Březová, aut. st.",["X"]] +["33","14:04","Sídl. Michal škola",["X"]] +["6","14:04","Sídl. Michal škola",["X"]] +["4","14:06","Stará Ovčárna",["X"]] +["3","14:09","Závodu míru",["X"]] +["1","14:10","Březová, aut. st.",["X"]] +["3","14:21","Závodu míru",["X"]] +["1","14:34","Březová, aut. st.",["X"]] +["6","14:34","Sídl. Michal škola",["X"]] +["4","14:42","Závodu míru",["X"]] +["3","14:43","Závodu míru",["X"]] +["33","14:46","Sídl. Michal škola",["X"]] +["3","14:52","Závodu míru",["X"]] +["1","15:09","Březová, aut. st.",["X"]] +["33","15:09","Sídl. Michal škola",["X"]] +["3","15:13","Závodu míru",["X"]] +["6","15:14","Sídl. Michal škola",["X"]] +["3","15:23","Sokolov, Hrušková",["X","42"]] +["3","15:30","Závodu míru",["X"]] +["1","15:31","Březová, aut. st.",["X"]] +["33","15:39","Sídl. Michal škola",["X"]] +["3","15:39","Jezero Michal",["X"]] +["7","15:54","Březová, aut.st.",["X"]] +["3","16:00","Sídl. Michal škola",["X","42"]] +["4","16:06","Závodu míru",["X"]] +["33","16:14","Sídl. Michal škola",["X"]] +["3","16:14","Závodu míru",["X"]] +["1","16:21","Březová, aut. st.",["X"]] +["7","16:29","Březová, aut.st.",["X"]] +["3","16:35","Závodu míru",["X"]] +["6","16:44","Sídl. Michal škola",["X","42"]] +["3","16:48","Závodu míru",["X"]] +["4","16:51","Závodu míru",["X","42"]] +["7","16:59","Březová, aut.st.",["X"]] +["3","17:09","Jezero Michal",["X"]] +["3","17:18","Závodu míru",["X"]] +["3","17:34","Závodu míru",["X"]] +["1","17:38","Březová, aut. st.",["X"]] +["3","17:57","Závodu míru",["X"]] +["3","18:14","Závodu míru",["X"]] +["3","18:21","Závodu míru",["X"]] +["1","18:26","Březová, aut. st.",["X"]] +["3","18:34","Závodu míru",["X"]] +["3","18:54","Závodu míru",["X"]] +["1","19:08","Březová, aut. st.",["X"]] +["3","19:19","Závodu míru",["X","31"]] +["3","19:34","Závodu míru",["X","31"]] +["1","19:53","Březová, aut. st.",["X","31"]] +["3","19:54","Závodu míru",["X","31"]] +["3","20:19","Závodu míru",["X","31"]] +["3","20:49","Závodu míru",["X","31"]] +["1","20:55","Březová, aut. st.",["X","31"]] +["3","21:09","Závodu míru",["X","31"]] +["3","21:24","Stará Ovčárna",["X","31"]] +["1","21:38","Březová, aut. st.",["X","31"]] +["3","22:12","Stará Ovčárna",["X","31"]] +["1","22:28","Březová, aut. st.",["X","31"]] +["3","22:41","Závodu míru",["X","31"]] + +["11.6","Streda"] +["3","04:29","Závodu míru",["X"]] +["1","04:50","Březová, aut. st.",["X"]] +["3","04:52","Závodu míru",["X"]] +["3","05:02","Závodu míru",["X"]] +["4","05:05","Závodu míru",["X"]] +["6","05:07","Sídl. Michal škola",["X","42"]] +["6","05:07","Závodu míru",["X","32"]] +["3","05:09","Závodu míru",["X","42"]] +["3","05:22","Závodu míru",["X"]] +["1","05:23","Březová, aut. st.",["X"]] +["6","05:34","Sídl. Michal škola",["X","42"]] +["4","05:35","Stará Ovčárna",["X"]] +["3","05:36","Sídl. Michal škola",["X","42"]] +["3","05:38","Sídliště Michal",["X","32"]] +["1","05:51","Březová, aut. st.",["X"]] +["3","05:58","Závodu míru",["X"]] +["6","06:04","Sídl. Michal škola",["X","42"]] +["1","06:13","Březová, aut. st.",["X"]] +["3","06:16","Závodu míru",["X","42"]] +["3","06:19","Závodu míru",["X","32"]] +["3","06:24","Sídliště Michal",["X"]] +["4","06:31","Závodu míru",["X","42"]] +["6","06:32","Sídl. Michal škola",["X","32"]] +["3","06:34","Závodu míru",["X"]] +["6","06:34","Sídl. Michal škola",["X","42"]] +["1","06:46","Březová, aut. st.",["X"]] +["33","06:49","Sídl. Michal škola",["X","42"]] +["3","06:56","Závodu míru",["X","32"]] +["3","06:56","Závodu míru",["X","42"]] +["3","07:04","Závodu míru",["X"]] +["1","07:05","Březová, aut. st.",["X"]] +["3","07:14","Závodu míru",["X"]] +["6","07:23","Sídl. Michal škola",["X","42"]] +["3","07:27","Sídliště Michal",["X","32"]] +["2","07:31","Sídliště Michal",["X","42"]] +["3","07:34","Závodu míru",["X","42"]] +["4","07:34","Závodu míru",["X"]] +["1","07:35","Březová, aut. st.",["X"]] +["3","07:45","Sídliště Michal",["X"]] +["33","07:54","Sídl. Michal škola",["X","42"]] +["1","07:55","Březová, aut. st.",["X"]] +["3","07:58","Závodu míru",["X","42"]] +["3","08:10","Závodu míru",["X","32"]] +["3","08:15","Závodu míru",["X","42"]] +["1","08:18","Březová, aut. st.",["X"]] +["33","08:29","Sídl. Michal škola",["X"]] +["3","08:34","Závodu míru",["X"]] +["3","08:50","Stará Ovčárna",["X"]] +["33","08:54","Sídl. Michal škola",["X"]] +["3","09:04","Závodu míru",["X"]] +["1","09:09","Březová, aut. st.",["X"]] +["3","09:24","Závodu míru",["X"]] +["33","09:34","Sídl. Michal škola",["X"]] +["4","09:41","Sídliště Michal",["X"]] +["3","09:45","Závodu míru",["X"]] +["1","09:58","Březová, aut. st.",["X"]] +["3","09:59","Jezero Michal",["X"]] +["7","10:14","Březová, aut.st.",["X"]] +["33","10:24","Sídl. Michal škola",["X"]] +["3","10:40","Závodu míru",["X"]] +["1","10:55","Březová, aut. st.",["X"]] +["3","10:55","Závodu míru",["X"]] +["3","11:17","Závodu míru",["X"]] +["33","11:29","Sídl. Michal škola",["X"]] +["3","11:44","Závodu míru",["X"]] +["1","11:46","Březová, aut. st.",["X"]] +["33","11:56","Sídl. Michal škola",["X"]] +["3","12:05","Závodu míru",["X"]] +["3","12:24","Jezero Michal",["X"]] +["1","12:33","Březová, aut. st.",["X"]] +["3","12:44","Závodu míru",["X"]] +["3","12:59","Závodu míru",["X"]] +["6","12:59","Sídl. Michal škola",["X","42"]] +["33","13:04","Sídl. Michal škola",["X"]] +["1","13:06","Březová, aut. st.",["X"]] +["3","13:15","Závodu míru",["X"]] +["2","13:17","Sídliště Michal",["X"]] +["1","13:22","Březová, aut. st.",["X"]] +["3","13:24","Stará Ovčárna",["X"]] +["33","13:39","Sídl. Michal škola",["X"]] +["1","13:48","Březová, aut. st.",["X"]] +["33","14:04","Sídl. Michal škola",["X"]] +["6","14:04","Sídl. Michal škola",["X"]] +["4","14:06","Stará Ovčárna",["X"]] +["3","14:09","Závodu míru",["X"]] +["1","14:10","Březová, aut. st.",["X"]] +["3","14:21","Závodu míru",["X"]] +["1","14:34","Březová, aut. st.",["X"]] +["6","14:34","Sídl. Michal škola",["X"]] +["4","14:42","Závodu míru",["X"]] +["3","14:43","Závodu míru",["X"]] +["33","14:46","Sídl. Michal škola",["X"]] +["3","14:52","Závodu míru",["X"]] +["1","15:09","Březová, aut. st.",["X"]] +["33","15:09","Sídl. Michal škola",["X"]] +["3","15:13","Závodu míru",["X"]] +["6","15:14","Sídl. Michal škola",["X"]] +["3","15:23","Sokolov, Hrušková",["X","42"]] +["3","15:30","Závodu míru",["X"]] +["1","15:31","Březová, aut. st.",["X"]] +["33","15:39","Sídl. Michal škola",["X"]] +["3","15:39","Jezero Michal",["X"]] +["7","15:54","Březová, aut.st.",["X"]] +["3","16:00","Sídl. Michal škola",["X","42"]] +["4","16:06","Závodu míru",["X"]] +["33","16:14","Sídl. Michal škola",["X"]] +["3","16:14","Závodu míru",["X"]] +["1","16:21","Březová, aut. st.",["X"]] +["7","16:29","Březová, aut.st.",["X"]] +["3","16:35","Závodu míru",["X"]] +["6","16:44","Sídl. Michal škola",["X","42"]] +["3","16:48","Závodu míru",["X"]] +["4","16:51","Závodu míru",["X","42"]] +["7","16:59","Březová, aut.st.",["X"]] +["3","17:09","Jezero Michal",["X"]] +["3","17:18","Závodu míru",["X"]] +["3","17:34","Závodu míru",["X"]] +["1","17:38","Březová, aut. st.",["X"]] +["3","17:57","Závodu míru",["X"]] +["3","18:14","Závodu míru",["X"]] +["3","18:21","Závodu míru",["X"]] +["1","18:26","Březová, aut. st.",["X"]] +["3","18:34","Závodu míru",["X"]] +["3","18:54","Závodu míru",["X"]] +["1","19:08","Březová, aut. st.",["X"]] +["3","19:19","Závodu míru",["X","31"]] +["3","19:34","Závodu míru",["X","31"]] +["1","19:53","Březová, aut. st.",["X","31"]] +["3","19:54","Závodu míru",["X","31"]] +["3","20:19","Závodu míru",["X","31"]] +["3","20:49","Závodu míru",["X","31"]] +["1","20:55","Březová, aut. st.",["X","31"]] +["3","21:09","Závodu míru",["X","31"]] +["3","21:24","Stará Ovčárna",["X","31"]] +["1","21:38","Březová, aut. st.",["X","31"]] +["3","22:12","Stará Ovčárna",["X","31"]] +["1","22:28","Březová, aut. st.",["X","31"]] +["3","22:41","Závodu míru",["X","31"]] + +["11.6","Streda"] +["3","04:29","Závodu míru",["X"]] +["1","04:50","Březová, aut. st.",["X"]] +["3","04:52","Závodu míru",["X"]] +["3","05:02","Závodu míru",["X"]] +["4","05:05","Závodu míru",["X"]] +["6","05:07","Sídl. Michal škola",["X","42"]] +["6","05:07","Závodu míru",["X","32"]] +["3","05:09","Závodu míru",["X","42"]] +["3","05:22","Závodu míru",["X"]] +["1","05:23","Březová, aut. st.",["X"]] +["6","05:34","Sídl. Michal škola",["X","42"]] +["4","05:35","Stará Ovčárna",["X"]] +["3","05:36","Sídl. Michal škola",["X","42"]] +["3","05:38","Sídliště Michal",["X","32"]] +["1","05:51","Březová, aut. st.",["X"]] +["3","05:58","Závodu míru",["X"]] +["6","06:04","Sídl. Michal škola",["X","42"]] +["1","06:13","Březová, aut. st.",["X"]] +["3","06:16","Závodu míru",["X","42"]] +["3","06:19","Závodu míru",["X","32"]] +["3","06:24","Sídliště Michal",["X"]] +["4","06:31","Závodu míru",["X","42"]] +["6","06:32","Sídl. Michal škola",["X","32"]] +["3","06:34","Závodu míru",["X"]] +["6","06:34","Sídl. Michal škola",["X","42"]] +["1","06:46","Březová, aut. st.",["X"]] +["33","06:49","Sídl. Michal škola",["X","42"]] +["3","06:56","Závodu míru",["X","32"]] +["3","06:56","Závodu míru",["X","42"]] +["3","07:04","Závodu míru",["X"]] +["1","07:05","Březová, aut. st.",["X"]] +["3","07:14","Závodu míru",["X"]] +["6","07:23","Sídl. Michal škola",["X","42"]] +["3","07:27","Sídliště Michal",["X","32"]] +["2","07:31","Sídliště Michal",["X","42"]] +["3","07:34","Závodu míru",["X","42"]] +["4","07:34","Závodu míru",["X"]] +["1","07:35","Březová, aut. st.",["X"]] +["3","07:45","Sídliště Michal",["X"]] +["33","07:54","Sídl. Michal škola",["X","42"]] +["1","07:55","Březová, aut. st.",["X"]] +["3","07:58","Závodu míru",["X","42"]] +["3","08:10","Závodu míru",["X","32"]] +["3","08:15","Závodu míru",["X","42"]] +["1","08:18","Březová, aut. st.",["X"]] +["33","08:29","Sídl. Michal škola",["X"]] +["3","08:34","Závodu míru",["X"]] +["3","08:50","Stará Ovčárna",["X"]] +["33","08:54","Sídl. Michal škola",["X"]] +["3","09:04","Závodu míru",["X"]] +["1","09:09","Březová, aut. st.",["X"]] +["3","09:24","Závodu míru",["X"]] +["33","09:34","Sídl. Michal škola",["X"]] +["4","09:41","Sídliště Michal",["X"]] +["3","09:45","Závodu míru",["X"]] +["1","09:58","Březová, aut. st.",["X"]] +["3","09:59","Jezero Michal",["X"]] +["7","10:14","Březová, aut.st.",["X"]] +["33","10:24","Sídl. Michal škola",["X"]] +["3","10:40","Závodu míru",["X"]] +["1","10:55","Březová, aut. st.",["X"]] +["3","10:55","Závodu míru",["X"]] +["3","11:17","Závodu míru",["X"]] +["33","11:29","Sídl. Michal škola",["X"]] +["3","11:44","Závodu míru",["X"]] +["1","11:46","Březová, aut. st.",["X"]] +["33","11:56","Sídl. Michal škola",["X"]] +["3","12:05","Závodu míru",["X"]] +["3","12:24","Jezero Michal",["X"]] +["1","12:33","Březová, aut. st.",["X"]] +["3","12:44","Závodu míru",["X"]] +["3","12:59","Závodu míru",["X"]] +["6","12:59","Sídl. Michal škola",["X","42"]] +["33","13:04","Sídl. Michal škola",["X"]] +["1","13:06","Březová, aut. st.",["X"]] +["3","13:15","Závodu míru",["X"]] +["2","13:17","Sídliště Michal",["X"]] +["1","13:22","Březová, aut. st.",["X"]] +["3","13:24","Stará Ovčárna",["X"]] +["33","13:39","Sídl. Michal škola",["X"]] +["1","13:48","Březová, aut. st.",["X"]] +["33","14:04","Sídl. Michal škola",["X"]] +["6","14:04","Sídl. Michal škola",["X"]] +["4","14:06","Stará Ovčárna",["X"]] +["3","14:09","Závodu míru",["X"]] +["1","14:10","Březová, aut. st.",["X"]] +["3","14:21","Závodu míru",["X"]] +["1","14:34","Březová, aut. st.",["X"]] +["6","14:34","Sídl. Michal škola",["X"]] +["4","14:42","Závodu míru",["X"]] +["3","14:43","Závodu míru",["X"]] +["33","14:46","Sídl. Michal škola",["X"]] +["3","14:52","Závodu míru",["X"]] +["1","15:09","Březová, aut. st.",["X"]] +["33","15:09","Sídl. Michal škola",["X"]] +["3","15:13","Závodu míru",["X"]] +["6","15:14","Sídl. Michal škola",["X"]] +["3","15:23","Sokolov, Hrušková",["X","42"]] +["3","15:30","Závodu míru",["X"]] +["1","15:31","Březová, aut. st.",["X"]] +["33","15:39","Sídl. Michal škola",["X"]] +["3","15:39","Jezero Michal",["X"]] +["7","15:54","Březová, aut.st.",["X"]] +["3","16:00","Sídl. Michal škola",["X","42"]] +["4","16:06","Závodu míru",["X"]] +["33","16:14","Sídl. Michal škola",["X"]] +["3","16:14","Závodu míru",["X"]] +["1","16:21","Březová, aut. st.",["X"]] +["7","16:29","Březová, aut.st.",["X"]] +["3","16:35","Závodu míru",["X"]] +["6","16:44","Sídl. Michal škola",["X","42"]] +["3","16:48","Závodu míru",["X"]] +["4","16:51","Závodu míru",["X","42"]] +["7","16:59","Březová, aut.st.",["X"]] +["3","17:09","Jezero Michal",["X"]] +["3","17:18","Závodu míru",["X"]] +["3","17:34","Závodu míru",["X"]] +["1","17:38","Březová, aut. st.",["X"]] +["3","17:57","Závodu míru",["X"]] +["3","18:14","Závodu míru",["X"]] +["3","18:21","Závodu míru",["X"]] +["1","18:26","Březová, aut. st.",["X"]] +["3","18:34","Závodu míru",["X"]] +["3","18:54","Závodu míru",["X"]] +["1","19:08","Březová, aut. st.",["X"]] +["3","19:19","Závodu míru",["X","31"]] +["3","19:34","Závodu míru",["X","31"]] +["1","19:53","Březová, aut. st.",["X","31"]] +["3","19:54","Závodu míru",["X","31"]] +["3","20:19","Závodu míru",["X","31"]] +["3","20:49","Závodu míru",["X","31"]] +["1","20:55","Březová, aut. st.",["X","31"]] +["3","21:09","Závodu míru",["X","31"]] +["3","21:24","Stará Ovčárna",["X","31"]] +["1","21:38","Březová, aut. st.",["X","31"]] +["3","22:12","Stará Ovčárna",["X","31"]] +["1","22:28","Březová, aut. st.",["X","31"]] +["3","22:41","Závodu míru",["X","31"]] + +["12.6","Ctvrtek"] +["3","04:29","Závodu míru",["X"]] +["1","04:50","Březová, aut. st.",["X"]] +["3","04:52","Závodu míru",["X"]] +["3","05:02","Závodu míru",["X"]] +["4","05:05","Závodu míru",["X"]] +["6","05:07","Sídl. Michal škola",["X","42"]] +["6","05:07","Závodu míru",["X","32"]] +["3","05:09","Závodu míru",["X","42"]] +["3","05:22","Závodu míru",["X"]] +["1","05:23","Březová, aut. st.",["X"]] +["6","05:34","Sídl. Michal škola",["X","42"]] +["4","05:35","Stará Ovčárna",["X"]] +["3","05:36","Sídl. Michal škola",["X","42"]] +["3","05:38","Sídliště Michal",["X","32"]] +["1","05:51","Březová, aut. st.",["X"]] +["3","05:58","Závodu míru",["X"]] +["6","06:04","Sídl. Michal škola",["X","42"]] +["1","06:13","Březová, aut. st.",["X"]] +["3","06:16","Závodu míru",["X","42"]] +["3","06:19","Závodu míru",["X","32"]] +["3","06:24","Sídliště Michal",["X"]] +["4","06:31","Závodu míru",["X","42"]] +["6","06:32","Sídl. Michal škola",["X","32"]] +["3","06:34","Závodu míru",["X"]] +["6","06:34","Sídl. Michal škola",["X","42"]] +["1","06:46","Březová, aut. st.",["X"]] +["33","06:49","Sídl. Michal škola",["X","42"]] +["3","06:56","Závodu míru",["X","32"]] +["3","06:56","Závodu míru",["X","42"]] +["3","07:04","Závodu míru",["X"]] +["1","07:05","Březová, aut. st.",["X"]] +["3","07:14","Závodu míru",["X"]] +["6","07:23","Sídl. Michal škola",["X","42"]] +["3","07:27","Sídliště Michal",["X","32"]] +["2","07:31","Sídliště Michal",["X","42"]] +["3","07:34","Závodu míru",["X","42"]] +["4","07:34","Závodu míru",["X"]] +["1","07:35","Březová, aut. st.",["X"]] +["3","07:45","Sídliště Michal",["X"]] +["33","07:54","Sídl. Michal škola",["X","42"]] +["1","07:55","Březová, aut. st.",["X"]] +["3","07:58","Závodu míru",["X","42"]] +["3","08:10","Závodu míru",["X","32"]] +["3","08:15","Závodu míru",["X","42"]] +["1","08:18","Březová, aut. st.",["X"]] +["33","08:29","Sídl. Michal škola",["X"]] +["3","08:34","Závodu míru",["X"]] +["3","08:50","Stará Ovčárna",["X"]] +["33","08:54","Sídl. Michal škola",["X"]] +["3","09:04","Závodu míru",["X"]] +["1","09:09","Březová, aut. st.",["X"]] +["3","09:24","Závodu míru",["X"]] +["33","09:34","Sídl. Michal škola",["X"]] +["4","09:41","Sídliště Michal",["X"]] +["3","09:45","Závodu míru",["X"]] +["1","09:58","Březová, aut. st.",["X"]] +["3","09:59","Jezero Michal",["X"]] +["7","10:14","Březová, aut.st.",["X"]] +["33","10:24","Sídl. Michal škola",["X"]] +["3","10:40","Závodu míru",["X"]] +["1","10:55","Březová, aut. st.",["X"]] +["3","10:55","Závodu míru",["X"]] +["3","11:17","Závodu míru",["X"]] +["33","11:29","Sídl. Michal škola",["X"]] +["3","11:44","Závodu míru",["X"]] +["1","11:46","Březová, aut. st.",["X"]] +["33","11:56","Sídl. Michal škola",["X"]] +["3","12:05","Závodu míru",["X"]] +["3","12:24","Jezero Michal",["X"]] +["1","12:33","Březová, aut. st.",["X"]] +["3","12:44","Závodu míru",["X"]] +["3","12:59","Závodu míru",["X"]] +["6","12:59","Sídl. Michal škola",["X","42"]] +["33","13:04","Sídl. Michal škola",["X"]] +["1","13:06","Březová, aut. st.",["X"]] +["3","13:15","Závodu míru",["X"]] +["2","13:17","Sídliště Michal",["X"]] +["1","13:22","Březová, aut. st.",["X"]] +["3","13:24","Stará Ovčárna",["X"]] +["33","13:39","Sídl. Michal škola",["X"]] +["1","13:48","Březová, aut. st.",["X"]] +["33","14:04","Sídl. Michal škola",["X"]] +["6","14:04","Sídl. Michal škola",["X"]] +["4","14:06","Stará Ovčárna",["X"]] +["3","14:09","Závodu míru",["X"]] +["1","14:10","Březová, aut. st.",["X"]] +["3","14:21","Závodu míru",["X"]] +["1","14:34","Březová, aut. st.",["X"]] +["6","14:34","Sídl. Michal škola",["X"]] +["4","14:42","Závodu míru",["X"]] +["3","14:43","Závodu míru",["X"]] +["33","14:46","Sídl. Michal škola",["X"]] +["3","14:52","Závodu míru",["X"]] +["1","15:09","Březová, aut. st.",["X"]] +["33","15:09","Sídl. Michal škola",["X"]] +["3","15:13","Závodu míru",["X"]] +["6","15:14","Sídl. Michal škola",["X"]] +["3","15:23","Sokolov, Hrušková",["X","42"]] +["3","15:30","Závodu míru",["X"]] +["1","15:31","Březová, aut. st.",["X"]] +["33","15:39","Sídl. Michal škola",["X"]] +["3","15:39","Jezero Michal",["X"]] +["7","15:54","Březová, aut.st.",["X"]] +["3","16:00","Sídl. Michal škola",["X","42"]] +["4","16:06","Závodu míru",["X"]] +["33","16:14","Sídl. Michal škola",["X"]] +["3","16:14","Závodu míru",["X"]] +["1","16:21","Březová, aut. st.",["X"]] +["7","16:29","Březová, aut.st.",["X"]] +["3","16:35","Závodu míru",["X"]] +["6","16:44","Sídl. Michal škola",["X","42"]] +["3","16:48","Závodu míru",["X"]] +["4","16:51","Závodu míru",["X","42"]] +["7","16:59","Březová, aut.st.",["X"]] +["3","17:09","Jezero Michal",["X"]] +["3","17:18","Závodu míru",["X"]] +["3","17:34","Závodu míru",["X"]] +["1","17:38","Březová, aut. st.",["X"]] +["3","17:57","Závodu míru",["X"]] +["3","18:14","Závodu míru",["X"]] +["3","18:21","Závodu míru",["X"]] +["1","18:26","Březová, aut. st.",["X"]] +["3","18:34","Závodu míru",["X"]] +["3","18:54","Závodu míru",["X"]] +["1","19:08","Březová, aut. st.",["X"]] +["3","19:19","Závodu míru",["X","31"]] +["3","19:34","Závodu míru",["X","31"]] +["1","19:53","Březová, aut. st.",["X","31"]] +["3","19:54","Závodu míru",["X","31"]] +["3","20:19","Závodu míru",["X","31"]] +["3","20:49","Závodu míru",["X","31"]] +["1","20:55","Březová, aut. st.",["X","31"]] +["3","21:09","Závodu míru",["X","31"]] +["3","21:24","Stará Ovčárna",["X","31"]] +["1","21:38","Březová, aut. st.",["X","31"]] +["3","22:12","Stará Ovčárna",["X","31"]] +["1","22:28","Březová, aut. st.",["X","31"]] +["3","22:41","Závodu míru",["X","31"]] + +["12.6","Ctvrtek"] +["3","04:29","Závodu míru",["X"]] +["1","04:50","Březová, aut. st.",["X"]] +["3","04:52","Závodu míru",["X"]] +["3","05:02","Závodu míru",["X"]] +["4","05:05","Závodu míru",["X"]] +["6","05:07","Sídl. Michal škola",["X","42"]] +["6","05:07","Závodu míru",["X","32"]] +["3","05:09","Závodu míru",["X","42"]] +["3","05:22","Závodu míru",["X"]] +["1","05:23","Březová, aut. st.",["X"]] +["6","05:34","Sídl. Michal škola",["X","42"]] +["4","05:35","Stará Ovčárna",["X"]] +["3","05:36","Sídl. Michal škola",["X","42"]] +["3","05:38","Sídliště Michal",["X","32"]] +["1","05:51","Březová, aut. st.",["X"]] +["3","05:58","Závodu míru",["X"]] +["6","06:04","Sídl. Michal škola",["X","42"]] +["1","06:13","Březová, aut. st.",["X"]] +["3","06:16","Závodu míru",["X","42"]] +["3","06:19","Závodu míru",["X","32"]] +["3","06:24","Sídliště Michal",["X"]] +["4","06:31","Závodu míru",["X","42"]] +["6","06:32","Sídl. Michal škola",["X","32"]] +["3","06:34","Závodu míru",["X"]] +["6","06:34","Sídl. Michal škola",["X","42"]] +["1","06:46","Březová, aut. st.",["X"]] +["33","06:49","Sídl. Michal škola",["X","42"]] +["3","06:56","Závodu míru",["X","32"]] +["3","06:56","Závodu míru",["X","42"]] +["3","07:04","Závodu míru",["X"]] +["1","07:05","Březová, aut. st.",["X"]] +["3","07:14","Závodu míru",["X"]] +["6","07:23","Sídl. Michal škola",["X","42"]] +["3","07:27","Sídliště Michal",["X","32"]] +["2","07:31","Sídliště Michal",["X","42"]] +["3","07:34","Závodu míru",["X","42"]] +["4","07:34","Závodu míru",["X"]] +["1","07:35","Březová, aut. st.",["X"]] +["3","07:45","Sídliště Michal",["X"]] +["33","07:54","Sídl. Michal škola",["X","42"]] +["1","07:55","Březová, aut. st.",["X"]] +["3","07:58","Závodu míru",["X","42"]] +["3","08:10","Závodu míru",["X","32"]] +["3","08:15","Závodu míru",["X","42"]] +["1","08:18","Březová, aut. st.",["X"]] +["33","08:29","Sídl. Michal škola",["X"]] +["3","08:34","Závodu míru",["X"]] +["3","08:50","Stará Ovčárna",["X"]] +["33","08:54","Sídl. Michal škola",["X"]] +["3","09:04","Závodu míru",["X"]] +["1","09:09","Březová, aut. st.",["X"]] +["3","09:24","Závodu míru",["X"]] +["33","09:34","Sídl. Michal škola",["X"]] +["4","09:41","Sídliště Michal",["X"]] +["3","09:45","Závodu míru",["X"]] +["1","09:58","Březová, aut. st.",["X"]] +["3","09:59","Jezero Michal",["X"]] +["7","10:14","Březová, aut.st.",["X"]] +["33","10:24","Sídl. Michal škola",["X"]] +["3","10:40","Závodu míru",["X"]] +["1","10:55","Březová, aut. st.",["X"]] +["3","10:55","Závodu míru",["X"]] +["3","11:17","Závodu míru",["X"]] +["33","11:29","Sídl. Michal škola",["X"]] +["3","11:44","Závodu míru",["X"]] +["1","11:46","Březová, aut. st.",["X"]] +["33","11:56","Sídl. Michal škola",["X"]] +["3","12:05","Závodu míru",["X"]] +["3","12:24","Jezero Michal",["X"]] +["1","12:33","Březová, aut. st.",["X"]] +["3","12:44","Závodu míru",["X"]] +["3","12:59","Závodu míru",["X"]] +["6","12:59","Sídl. Michal škola",["X","42"]] +["33","13:04","Sídl. Michal škola",["X"]] +["1","13:06","Březová, aut. st.",["X"]] +["3","13:15","Závodu míru",["X"]] +["2","13:17","Sídliště Michal",["X"]] +["1","13:22","Březová, aut. st.",["X"]] +["3","13:24","Stará Ovčárna",["X"]] +["33","13:39","Sídl. Michal škola",["X"]] +["1","13:48","Březová, aut. st.",["X"]] +["33","14:04","Sídl. Michal škola",["X"]] +["6","14:04","Sídl. Michal škola",["X"]] +["4","14:06","Stará Ovčárna",["X"]] +["3","14:09","Závodu míru",["X"]] +["1","14:10","Březová, aut. st.",["X"]] +["3","14:21","Závodu míru",["X"]] +["1","14:34","Březová, aut. st.",["X"]] +["6","14:34","Sídl. Michal škola",["X"]] +["4","14:42","Závodu míru",["X"]] +["3","14:43","Závodu míru",["X"]] +["33","14:46","Sídl. Michal škola",["X"]] +["3","14:52","Závodu míru",["X"]] +["1","15:09","Březová, aut. st.",["X"]] +["33","15:09","Sídl. Michal škola",["X"]] +["3","15:13","Závodu míru",["X"]] +["6","15:14","Sídl. Michal škola",["X"]] +["3","15:23","Sokolov, Hrušková",["X","42"]] +["3","15:30","Závodu míru",["X"]] +["1","15:31","Březová, aut. st.",["X"]] +["33","15:39","Sídl. Michal škola",["X"]] +["3","15:39","Jezero Michal",["X"]] +["7","15:54","Březová, aut.st.",["X"]] +["3","16:00","Sídl. Michal škola",["X","42"]] +["4","16:06","Závodu míru",["X"]] +["33","16:14","Sídl. Michal škola",["X"]] +["3","16:14","Závodu míru",["X"]] +["1","16:21","Březová, aut. st.",["X"]] +["7","16:29","Březová, aut.st.",["X"]] +["3","16:35","Závodu míru",["X"]] +["6","16:44","Sídl. Michal škola",["X","42"]] +["3","16:48","Závodu míru",["X"]] +["4","16:51","Závodu míru",["X","42"]] +["7","16:59","Březová, aut.st.",["X"]] +["3","17:09","Jezero Michal",["X"]] +["3","17:18","Závodu míru",["X"]] +["3","17:34","Závodu míru",["X"]] +["1","17:38","Březová, aut. st.",["X"]] +["3","17:57","Závodu míru",["X"]] +["3","18:14","Závodu míru",["X"]] +["3","18:21","Závodu míru",["X"]] +["1","18:26","Březová, aut. st.",["X"]] +["3","18:34","Závodu míru",["X"]] +["3","18:54","Závodu míru",["X"]] +["1","19:08","Březová, aut. st.",["X"]] +["3","19:19","Závodu míru",["X","31"]] +["3","19:34","Závodu míru",["X","31"]] +["1","19:53","Březová, aut. st.",["X","31"]] +["3","19:54","Závodu míru",["X","31"]] +["3","20:19","Závodu míru",["X","31"]] +["3","20:49","Závodu míru",["X","31"]] +["1","20:55","Březová, aut. st.",["X","31"]] +["3","21:09","Závodu míru",["X","31"]] +["3","21:24","Stará Ovčárna",["X","31"]] +["1","21:38","Březová, aut. st.",["X","31"]] +["3","22:12","Stará Ovčárna",["X","31"]] +["1","22:28","Březová, aut. st.",["X","31"]] +["3","22:41","Závodu míru",["X","31"]] + +["13.6","Patek"] +["3","04:29","Závodu míru",["X"]] +["1","04:50","Březová, aut. st.",["X"]] +["3","04:52","Závodu míru",["X"]] +["3","05:02","Závodu míru",["X"]] +["4","05:05","Závodu míru",["X"]] +["6","05:07","Sídl. Michal škola",["X","42"]] +["6","05:07","Závodu míru",["X","32"]] +["3","05:09","Závodu míru",["X","42"]] +["3","05:22","Závodu míru",["X"]] +["1","05:23","Březová, aut. st.",["X"]] +["6","05:34","Sídl. Michal škola",["X","42"]] +["4","05:35","Stará Ovčárna",["X"]] +["3","05:36","Sídl. Michal škola",["X","42"]] +["3","05:38","Sídliště Michal",["X","32"]] +["1","05:51","Březová, aut. st.",["X"]] +["3","05:58","Závodu míru",["X"]] +["6","06:04","Sídl. Michal škola",["X","42"]] +["1","06:13","Březová, aut. st.",["X"]] +["3","06:16","Závodu míru",["X","42"]] +["3","06:19","Závodu míru",["X","32"]] +["3","06:24","Sídliště Michal",["X"]] +["4","06:31","Závodu míru",["X","42"]] +["6","06:32","Sídl. Michal škola",["X","32"]] +["3","06:34","Závodu míru",["X"]] +["6","06:34","Sídl. Michal škola",["X","42"]] +["1","06:46","Březová, aut. st.",["X"]] +["33","06:49","Sídl. Michal škola",["X","42"]] +["3","06:56","Závodu míru",["X","32"]] +["3","06:56","Závodu míru",["X","42"]] +["3","07:04","Závodu míru",["X"]] +["1","07:05","Březová, aut. st.",["X"]] +["3","07:14","Závodu míru",["X"]] +["6","07:23","Sídl. Michal škola",["X","42"]] +["3","07:27","Sídliště Michal",["X","32"]] +["2","07:31","Sídliště Michal",["X","42"]] +["3","07:34","Závodu míru",["X","42"]] +["4","07:34","Závodu míru",["X"]] +["1","07:35","Březová, aut. st.",["X"]] +["3","07:45","Sídliště Michal",["X"]] +["33","07:54","Sídl. Michal škola",["X","42"]] +["1","07:55","Březová, aut. st.",["X"]] +["3","07:58","Závodu míru",["X","42"]] +["3","08:10","Závodu míru",["X","32"]] +["3","08:15","Závodu míru",["X","42"]] +["1","08:18","Březová, aut. st.",["X"]] +["33","08:29","Sídl. Michal škola",["X"]] +["3","08:34","Závodu míru",["X"]] +["3","08:50","Stará Ovčárna",["X"]] +["33","08:54","Sídl. Michal škola",["X"]] +["3","09:04","Závodu míru",["X"]] +["1","09:09","Březová, aut. st.",["X"]] +["3","09:24","Závodu míru",["X"]] +["33","09:34","Sídl. Michal škola",["X"]] +["4","09:41","Sídliště Michal",["X"]] +["3","09:45","Závodu míru",["X"]] +["1","09:58","Březová, aut. st.",["X"]] +["3","09:59","Jezero Michal",["X"]] +["7","10:14","Březová, aut.st.",["X"]] +["33","10:24","Sídl. Michal škola",["X"]] +["3","10:40","Závodu míru",["X"]] +["1","10:55","Březová, aut. st.",["X"]] +["3","10:55","Závodu míru",["X"]] +["3","11:17","Závodu míru",["X"]] +["33","11:29","Sídl. Michal škola",["X"]] +["3","11:44","Závodu míru",["X"]] +["1","11:46","Březová, aut. st.",["X"]] +["33","11:56","Sídl. Michal škola",["X"]] +["3","12:05","Závodu míru",["X"]] +["3","12:24","Jezero Michal",["X"]] +["1","12:33","Březová, aut. st.",["X"]] +["3","12:44","Závodu míru",["X"]] +["3","12:59","Závodu míru",["X"]] +["6","12:59","Sídl. Michal škola",["X","42"]] +["33","13:04","Sídl. Michal škola",["X"]] +["1","13:06","Březová, aut. st.",["X"]] +["3","13:15","Závodu míru",["X"]] +["2","13:17","Sídliště Michal",["X"]] +["1","13:22","Březová, aut. st.",["X"]] +["3","13:24","Stará Ovčárna",["X"]] +["33","13:39","Sídl. Michal škola",["X"]] +["1","13:48","Březová, aut. st.",["X"]] +["33","14:04","Sídl. Michal škola",["X"]] +["6","14:04","Sídl. Michal škola",["X"]] +["4","14:06","Stará Ovčárna",["X"]] +["3","14:09","Závodu míru",["X"]] +["1","14:10","Březová, aut. st.",["X"]] +["3","14:21","Závodu míru",["X"]] +["1","14:34","Březová, aut. st.",["X"]] +["6","14:34","Sídl. Michal škola",["X"]] +["4","14:42","Závodu míru",["X"]] +["3","14:43","Závodu míru",["X"]] +["33","14:46","Sídl. Michal škola",["X"]] +["3","14:52","Závodu míru",["X"]] +["1","15:09","Březová, aut. st.",["X"]] +["33","15:09","Sídl. Michal škola",["X"]] +["3","15:13","Závodu míru",["X"]] +["6","15:14","Sídl. Michal škola",["X"]] +["3","15:23","Sokolov, Hrušková",["X","42"]] +["3","15:30","Závodu míru",["X"]] +["1","15:31","Březová, aut. st.",["X"]] +["33","15:39","Sídl. Michal škola",["X"]] +["3","15:39","Jezero Michal",["X"]] +["7","15:54","Březová, aut.st.",["X"]] +["3","16:00","Sídl. Michal škola",["X","42"]] +["4","16:06","Závodu míru",["X"]] +["33","16:14","Sídl. Michal škola",["X"]] +["3","16:14","Závodu míru",["X"]] +["1","16:21","Březová, aut. st.",["X"]] +["7","16:29","Březová, aut.st.",["X"]] +["3","16:35","Závodu míru",["X"]] +["6","16:44","Sídl. Michal škola",["X","42"]] +["3","16:48","Závodu míru",["X"]] +["4","16:51","Závodu míru",["X","42"]] +["7","16:59","Březová, aut.st.",["X"]] +["3","17:09","Jezero Michal",["X"]] +["3","17:18","Závodu míru",["X"]] +["3","17:34","Závodu míru",["X"]] +["1","17:38","Březová, aut. st.",["X"]] +["3","17:57","Závodu míru",["X"]] +["3","18:14","Závodu míru",["X"]] +["3","18:21","Závodu míru",["X"]] +["1","18:26","Březová, aut. st.",["X"]] +["3","18:34","Závodu míru",["X"]] +["3","18:54","Závodu míru",["X"]] +["1","19:08","Březová, aut. st.",["X"]] +["3","19:19","Závodu míru",["X","31"]] +["3","19:34","Závodu míru",["X","31"]] +["1","19:53","Březová, aut. st.",["X","31"]] +["3","19:54","Závodu míru",["X","31"]] +["3","20:19","Závodu míru",["X","31"]] +["3","20:49","Závodu míru",["X","31"]] +["1","20:55","Březová, aut. st.",["X","31"]] +["3","21:09","Závodu míru",["X","31"]] +["3","21:24","Stará Ovčárna",["X","31"]] +["1","21:38","Březová, aut. st.",["X","31"]] +["3","22:12","Stará Ovčárna",["X","31"]] +["1","22:28","Březová, aut. st.",["X","31"]] +["3","22:41","Závodu míru",["X","31"]] + +["13.6","Patek"] +["3","04:29","Závodu míru",["X"]] +["1","04:50","Březová, aut. st.",["X"]] +["3","04:52","Závodu míru",["X"]] +["3","05:02","Závodu míru",["X"]] +["4","05:05","Závodu míru",["X"]] +["6","05:07","Sídl. Michal škola",["X","42"]] +["6","05:07","Závodu míru",["X","32"]] +["3","05:09","Závodu míru",["X","42"]] +["3","05:22","Závodu míru",["X"]] +["1","05:23","Březová, aut. st.",["X"]] +["6","05:34","Sídl. Michal škola",["X","42"]] +["4","05:35","Stará Ovčárna",["X"]] +["3","05:36","Sídl. Michal škola",["X","42"]] +["3","05:38","Sídliště Michal",["X","32"]] +["1","05:51","Březová, aut. st.",["X"]] +["3","05:58","Závodu míru",["X"]] +["6","06:04","Sídl. Michal škola",["X","42"]] +["1","06:13","Březová, aut. st.",["X"]] +["3","06:16","Závodu míru",["X","42"]] +["3","06:19","Závodu míru",["X","32"]] +["3","06:24","Sídliště Michal",["X"]] +["4","06:31","Závodu míru",["X","42"]] +["6","06:32","Sídl. Michal škola",["X","32"]] +["3","06:34","Závodu míru",["X"]] +["6","06:34","Sídl. Michal škola",["X","42"]] +["1","06:46","Březová, aut. st.",["X"]] +["33","06:49","Sídl. Michal škola",["X","42"]] +["3","06:56","Závodu míru",["X","32"]] +["3","06:56","Závodu míru",["X","42"]] +["3","07:04","Závodu míru",["X"]] +["1","07:05","Březová, aut. st.",["X"]] +["3","07:14","Závodu míru",["X"]] +["6","07:23","Sídl. Michal škola",["X","42"]] +["3","07:27","Sídliště Michal",["X","32"]] +["2","07:31","Sídliště Michal",["X","42"]] +["3","07:34","Závodu míru",["X","42"]] +["4","07:34","Závodu míru",["X"]] +["1","07:35","Březová, aut. st.",["X"]] +["3","07:45","Sídliště Michal",["X"]] +["33","07:54","Sídl. Michal škola",["X","42"]] +["1","07:55","Březová, aut. st.",["X"]] +["3","07:58","Závodu míru",["X","42"]] +["3","08:10","Závodu míru",["X","32"]] +["3","08:15","Závodu míru",["X","42"]] +["1","08:18","Březová, aut. st.",["X"]] +["33","08:29","Sídl. Michal škola",["X"]] +["3","08:34","Závodu míru",["X"]] +["3","08:50","Stará Ovčárna",["X"]] +["33","08:54","Sídl. Michal škola",["X"]] +["3","09:04","Závodu míru",["X"]] +["1","09:09","Březová, aut. st.",["X"]] +["3","09:24","Závodu míru",["X"]] +["33","09:34","Sídl. Michal škola",["X"]] +["4","09:41","Sídliště Michal",["X"]] +["3","09:45","Závodu míru",["X"]] +["1","09:58","Březová, aut. st.",["X"]] +["3","09:59","Jezero Michal",["X"]] +["7","10:14","Březová, aut.st.",["X"]] +["33","10:24","Sídl. Michal škola",["X"]] +["3","10:40","Závodu míru",["X"]] +["1","10:55","Březová, aut. st.",["X"]] +["3","10:55","Závodu míru",["X"]] +["3","11:17","Závodu míru",["X"]] +["33","11:29","Sídl. Michal škola",["X"]] +["3","11:44","Závodu míru",["X"]] +["1","11:46","Březová, aut. st.",["X"]] +["33","11:56","Sídl. Michal škola",["X"]] +["3","12:05","Závodu míru",["X"]] +["3","12:24","Jezero Michal",["X"]] +["1","12:33","Březová, aut. st.",["X"]] +["3","12:44","Závodu míru",["X"]] +["3","12:59","Závodu míru",["X"]] +["6","12:59","Sídl. Michal škola",["X","42"]] +["33","13:04","Sídl. Michal škola",["X"]] +["1","13:06","Březová, aut. st.",["X"]] +["3","13:15","Závodu míru",["X"]] +["2","13:17","Sídliště Michal",["X"]] +["1","13:22","Březová, aut. st.",["X"]] +["3","13:24","Stará Ovčárna",["X"]] +["33","13:39","Sídl. Michal škola",["X"]] +["1","13:48","Březová, aut. st.",["X"]] +["33","14:04","Sídl. Michal škola",["X"]] +["6","14:04","Sídl. Michal škola",["X"]] +["4","14:06","Stará Ovčárna",["X"]] +["3","14:09","Závodu míru",["X"]] +["1","14:10","Březová, aut. st.",["X"]] +["3","14:21","Závodu míru",["X"]] +["1","14:34","Březová, aut. st.",["X"]] +["6","14:34","Sídl. Michal škola",["X"]] +["4","14:42","Závodu míru",["X"]] +["3","14:43","Závodu míru",["X"]] +["33","14:46","Sídl. Michal škola",["X"]] +["3","14:52","Závodu míru",["X"]] +["1","15:09","Březová, aut. st.",["X"]] +["33","15:09","Sídl. Michal škola",["X"]] +["3","15:13","Závodu míru",["X"]] +["6","15:14","Sídl. Michal škola",["X"]] +["3","15:23","Sokolov, Hrušková",["X","42"]] +["3","15:30","Závodu míru",["X"]] +["1","15:31","Březová, aut. st.",["X"]] +["33","15:39","Sídl. Michal škola",["X"]] +["3","15:39","Jezero Michal",["X"]] +["7","15:54","Březová, aut.st.",["X"]] +["3","16:00","Sídl. Michal škola",["X","42"]] +["4","16:06","Závodu míru",["X"]] +["33","16:14","Sídl. Michal škola",["X"]] +["3","16:14","Závodu míru",["X"]] +["1","16:21","Březová, aut. st.",["X"]] +["7","16:29","Březová, aut.st.",["X"]] +["3","16:35","Závodu míru",["X"]] +["6","16:44","Sídl. Michal škola",["X","42"]] +["3","16:48","Závodu míru",["X"]] +["4","16:51","Závodu míru",["X","42"]] +["7","16:59","Březová, aut.st.",["X"]] +["3","17:09","Jezero Michal",["X"]] +["3","17:18","Závodu míru",["X"]] +["3","17:34","Závodu míru",["X"]] +["1","17:38","Březová, aut. st.",["X"]] +["3","17:57","Závodu míru",["X"]] +["3","18:14","Závodu míru",["X"]] +["3","18:21","Závodu míru",["X"]] +["1","18:26","Březová, aut. st.",["X"]] +["3","18:34","Závodu míru",["X"]] +["3","18:54","Závodu míru",["X"]] +["1","19:08","Březová, aut. st.",["X"]] +["3","19:19","Závodu míru",["X","31"]] +["3","19:34","Závodu míru",["X","31"]] +["1","19:53","Březová, aut. st.",["X","31"]] +["3","19:54","Závodu míru",["X","31"]] +["3","20:19","Závodu míru",["X","31"]] +["3","20:49","Závodu míru",["X","31"]] +["1","20:55","Březová, aut. st.",["X","31"]] +["3","21:09","Závodu míru",["X","31"]] +["3","21:24","Stará Ovčárna",["X","31"]] +["1","21:38","Březová, aut. st.",["X","31"]] +["3","22:12","Stará Ovčárna",["X","31"]] +["1","22:28","Březová, aut. st.",["X","31"]] +["3","22:41","Závodu míru",["X","31"]] + +["14.6","Sobota"] +["3","04:56","Závodu míru",["6+","25"]] +["1","05:47","Březová, aut. st.",["6+","25"]] +["3","05:57","Závodu míru",["6+","25"]] +["3","06:24","Závodu míru",["6+","25"]] +["3","06:56","Závodu míru",["6+"]] +["1","06:57","Březová, aut. st.",["6+","25"]] +["3","07:19","Závodu míru",["6+"]] +["3","07:51","Závodu míru",["6+"]] +["1","07:57","Březová, aut. st.",["6+"]] +["3","08:15","Závodu míru",["6+"]] +["3","08:51","Závodu míru",["6+"]] +["1","08:57","Březová, aut. st.",["6+"]] +["3","09:20","Závodu míru",["6+"]] +["1","09:44","Březová, aut. st.",["6+"]] +["3","09:51","Závodu míru",["6+"]] +["3","10:19","Závodu míru",["6+"]] +["1","10:57","Březová, aut. st.",["6+"]] +["3","11:02","Závodu míru",["6+"]] +["3","11:29","Závodu míru",["6+"]] +["1","11:49","Březová, aut. st.",["6+"]] +["3","11:51","Závodu míru",["6+"]] +["3","12:19","Závodu míru",["6+"]] +["3","12:51","Závodu míru",["6+"]] +["1","12:57","Březová, aut. st.",["6+"]] +["3","13:28","Závodu míru",["6+"]] +["3","13:51","Závodu míru",["6+"]] +["1","13:57","Březová, aut. st.",["6+"]] +["3","14:19","Závodu míru",["6+"]] +["1","14:49","Březová, aut. st.",["6+"]] +["3","14:51","Závodu míru",["6+"]] +["3","15:19","Závodu míru",["6+"]] +["3","15:51","Závodu míru",["6+"]] +["1","15:57","Březová, aut. st.",["6+"]] +["3","16:28","Závodu míru",["6+"]] +["3","16:53","Závodu míru",["6+"]] +["1","16:57","Březová, aut. st.",["6+"]] +["3","17:14","Závodu míru",["6+"]] +["3","17:51","Závodu míru",["6+"]] +["3","18:21","Stará Ovčárna",["6+"]] +["1","18:24","Březová, aut. st.",["6+"]] +["3","18:51","Závodu míru",["6+"]] +["3","19:14","Závodu míru",["6+","24"]] +["3","19:54","Závodu míru",["6+","24"]] +["1","19:57","Březová, aut. st.",["6+","24"]] +["1","20:28","Březová, aut. st.",["6+","24"]] +["3","20:49","Závodu míru",["6+","24"]] +["1","21:23","Březová, aut. st.",["6+","24"]] +["3","21:24","Závodu míru",["6+","24"]] +["3","22:04","Závodu míru",["6+","24"]] + +["14.6","Sobota"] +["3","04:56","Závodu míru",["6+","25"]] +["1","05:47","Březová, aut. st.",["6+","25"]] +["3","05:57","Závodu míru",["6+","25"]] +["3","06:24","Závodu míru",["6+","25"]] +["3","06:56","Závodu míru",["6+"]] +["1","06:57","Březová, aut. st.",["6+","25"]] +["3","07:19","Závodu míru",["6+"]] +["3","07:51","Závodu míru",["6+"]] +["1","07:57","Březová, aut. st.",["6+"]] +["3","08:15","Závodu míru",["6+"]] +["3","08:51","Závodu míru",["6+"]] +["1","08:57","Březová, aut. st.",["6+"]] +["3","09:20","Závodu míru",["6+"]] +["1","09:44","Březová, aut. st.",["6+"]] +["3","09:51","Závodu míru",["6+"]] +["3","10:19","Závodu míru",["6+"]] +["1","10:57","Březová, aut. st.",["6+"]] +["3","11:02","Závodu míru",["6+"]] +["3","11:29","Závodu míru",["6+"]] +["1","11:49","Březová, aut. st.",["6+"]] +["3","11:51","Závodu míru",["6+"]] +["3","12:19","Závodu míru",["6+"]] +["3","12:51","Závodu míru",["6+"]] +["1","12:57","Březová, aut. st.",["6+"]] +["3","13:28","Závodu míru",["6+"]] +["3","13:51","Závodu míru",["6+"]] +["1","13:57","Březová, aut. st.",["6+"]] +["3","14:19","Závodu míru",["6+"]] +["1","14:49","Březová, aut. st.",["6+"]] +["3","14:51","Závodu míru",["6+"]] +["3","15:19","Závodu míru",["6+"]] +["3","15:51","Závodu míru",["6+"]] +["1","15:57","Březová, aut. st.",["6+"]] +["3","16:28","Závodu míru",["6+"]] +["3","16:53","Závodu míru",["6+"]] +["1","16:57","Březová, aut. st.",["6+"]] +["3","17:14","Závodu míru",["6+"]] +["3","17:51","Závodu míru",["6+"]] +["3","18:21","Stará Ovčárna",["6+"]] +["1","18:24","Březová, aut. st.",["6+"]] +["3","18:51","Závodu míru",["6+"]] +["3","19:14","Závodu míru",["6+","24"]] +["3","19:54","Závodu míru",["6+","24"]] +["1","19:57","Březová, aut. st.",["6+","24"]] +["1","20:28","Březová, aut. st.",["6+","24"]] +["3","20:49","Závodu míru",["6+","24"]] +["1","21:23","Březová, aut. st.",["6+","24"]] +["3","21:24","Závodu míru",["6+","24"]] +["3","22:04","Závodu míru",["6+","24"]] + +["15.6","Nedele"] +["3","04:56","Závodu míru",["6+","25"]] +["1","05:47","Březová, aut. st.",["6+","25"]] +["3","05:57","Závodu míru",["6+","25"]] +["3","06:24","Závodu míru",["6+","25"]] +["3","06:56","Závodu míru",["6+"]] +["1","06:57","Březová, aut. st.",["6+","25"]] +["3","07:19","Závodu míru",["6+"]] +["3","07:51","Závodu míru",["6+"]] +["1","07:57","Březová, aut. st.",["6+"]] +["3","08:15","Závodu míru",["6+"]] +["3","08:51","Závodu míru",["6+"]] +["1","08:57","Březová, aut. st.",["6+"]] +["3","09:20","Závodu míru",["6+"]] +["1","09:44","Březová, aut. st.",["6+"]] +["3","09:51","Závodu míru",["6+"]] +["3","10:19","Závodu míru",["6+"]] +["1","10:57","Březová, aut. st.",["6+"]] +["3","11:02","Závodu míru",["6+"]] +["3","11:29","Závodu míru",["6+"]] +["1","11:49","Březová, aut. st.",["6+"]] +["3","11:51","Závodu míru",["6+"]] +["3","12:19","Závodu míru",["6+"]] +["3","12:51","Závodu míru",["6+"]] +["1","12:57","Březová, aut. st.",["6+"]] +["3","13:28","Závodu míru",["6+"]] +["3","13:51","Závodu míru",["6+"]] +["1","13:57","Březová, aut. st.",["6+"]] +["3","14:19","Závodu míru",["6+"]] +["1","14:49","Březová, aut. st.",["6+"]] +["3","14:51","Závodu míru",["6+"]] +["3","15:19","Závodu míru",["6+"]] +["3","15:51","Závodu míru",["6+"]] +["1","15:57","Březová, aut. st.",["6+"]] +["3","16:28","Závodu míru",["6+"]] +["3","16:53","Závodu míru",["6+"]] +["1","16:57","Březová, aut. st.",["6+"]] +["3","17:14","Závodu míru",["6+"]] +["3","17:51","Závodu míru",["6+"]] +["3","18:21","Stará Ovčárna",["6+"]] +["1","18:24","Březová, aut. st.",["6+"]] +["3","18:51","Závodu míru",["6+"]] +["3","19:14","Závodu míru",["6+","24"]] +["3","19:54","Závodu míru",["6+","24"]] +["1","19:57","Březová, aut. st.",["6+","24"]] +["1","20:28","Březová, aut. st.",["6+","24"]] +["3","20:49","Závodu míru",["6+","24"]] +["1","21:23","Březová, aut. st.",["6+","24"]] +["3","21:24","Závodu míru",["6+","24"]] +["3","22:04","Závodu míru",["6+","24"]] + +["15.6","Nedele"] +["3","04:56","Závodu míru",["6+","25"]] +["1","05:47","Březová, aut. st.",["6+","25"]] +["3","05:57","Závodu míru",["6+","25"]] +["3","06:24","Závodu míru",["6+","25"]] +["3","06:56","Závodu míru",["6+"]] +["1","06:57","Březová, aut. st.",["6+","25"]] +["3","07:19","Závodu míru",["6+"]] +["3","07:51","Závodu míru",["6+"]] +["1","07:57","Březová, aut. st.",["6+"]] +["3","08:15","Závodu míru",["6+"]] +["3","08:51","Závodu míru",["6+"]] +["1","08:57","Březová, aut. st.",["6+"]] +["3","09:20","Závodu míru",["6+"]] +["1","09:44","Březová, aut. st.",["6+"]] +["3","09:51","Závodu míru",["6+"]] +["3","10:19","Závodu míru",["6+"]] +["1","10:57","Březová, aut. st.",["6+"]] +["3","11:02","Závodu míru",["6+"]] +["3","11:29","Závodu míru",["6+"]] +["1","11:49","Březová, aut. st.",["6+"]] +["3","11:51","Závodu míru",["6+"]] +["3","12:19","Závodu míru",["6+"]] +["3","12:51","Závodu míru",["6+"]] +["1","12:57","Březová, aut. st.",["6+"]] +["3","13:28","Závodu míru",["6+"]] +["3","13:51","Závodu míru",["6+"]] +["1","13:57","Březová, aut. st.",["6+"]] +["3","14:19","Závodu míru",["6+"]] +["1","14:49","Březová, aut. st.",["6+"]] +["3","14:51","Závodu míru",["6+"]] +["3","15:19","Závodu míru",["6+"]] +["3","15:51","Závodu míru",["6+"]] +["1","15:57","Březová, aut. st.",["6+"]] +["3","16:28","Závodu míru",["6+"]] +["3","16:53","Závodu míru",["6+"]] +["1","16:57","Březová, aut. st.",["6+"]] +["3","17:14","Závodu míru",["6+"]] +["3","17:51","Závodu míru",["6+"]] +["3","18:21","Stará Ovčárna",["6+"]] +["1","18:24","Březová, aut. st.",["6+"]] +["3","18:51","Závodu míru",["6+"]] +["3","19:14","Závodu míru",["6+","24"]] +["3","19:54","Závodu míru",["6+","24"]] +["1","19:57","Březová, aut. st.",["6+","24"]] +["1","20:28","Březová, aut. st.",["6+","24"]] +["3","20:49","Závodu míru",["6+","24"]] +["1","21:23","Březová, aut. st.",["6+","24"]] +["3","21:24","Závodu míru",["6+","24"]] +["3","22:04","Závodu míru",["6+","24"]] + +["16.6","Pondeli"] +["3","04:29","Závodu míru",["X"]] +["1","04:50","Březová, aut. st.",["X"]] +["3","04:52","Závodu míru",["X"]] +["3","05:02","Závodu míru",["X"]] +["4","05:05","Závodu míru",["X"]] +["6","05:07","Sídl. Michal škola",["X","42"]] +["6","05:07","Závodu míru",["X","32"]] +["3","05:09","Závodu míru",["X","42"]] +["3","05:22","Závodu míru",["X"]] +["1","05:23","Březová, aut. st.",["X"]] +["6","05:34","Sídl. Michal škola",["X","42"]] +["4","05:35","Stará Ovčárna",["X"]] +["3","05:36","Sídl. Michal škola",["X","42"]] +["3","05:38","Sídliště Michal",["X","32"]] +["1","05:51","Březová, aut. st.",["X"]] +["3","05:58","Závodu míru",["X"]] +["6","06:04","Sídl. Michal škola",["X","42"]] +["1","06:13","Březová, aut. st.",["X"]] +["3","06:16","Závodu míru",["X","42"]] +["3","06:19","Závodu míru",["X","32"]] +["3","06:24","Sídliště Michal",["X"]] +["4","06:31","Závodu míru",["X","42"]] +["6","06:32","Sídl. Michal škola",["X","32"]] +["3","06:34","Závodu míru",["X"]] +["6","06:34","Sídl. Michal škola",["X","42"]] +["1","06:46","Březová, aut. st.",["X"]] +["33","06:49","Sídl. Michal škola",["X","42"]] +["3","06:56","Závodu míru",["X","32"]] +["3","06:56","Závodu míru",["X","42"]] +["3","07:04","Závodu míru",["X"]] +["1","07:05","Březová, aut. st.",["X"]] +["3","07:14","Závodu míru",["X"]] +["6","07:23","Sídl. Michal škola",["X","42"]] +["3","07:27","Sídliště Michal",["X","32"]] +["2","07:31","Sídliště Michal",["X","42"]] +["3","07:34","Závodu míru",["X","42"]] +["4","07:34","Závodu míru",["X"]] +["1","07:35","Březová, aut. st.",["X"]] +["3","07:45","Sídliště Michal",["X"]] +["33","07:54","Sídl. Michal škola",["X","42"]] +["1","07:55","Březová, aut. st.",["X"]] +["3","07:58","Závodu míru",["X","42"]] +["3","08:10","Závodu míru",["X","32"]] +["3","08:15","Závodu míru",["X","42"]] +["1","08:18","Březová, aut. st.",["X"]] +["33","08:29","Sídl. Michal škola",["X"]] +["3","08:34","Závodu míru",["X"]] +["3","08:50","Stará Ovčárna",["X"]] +["33","08:54","Sídl. Michal škola",["X"]] +["3","09:04","Závodu míru",["X"]] +["1","09:09","Březová, aut. st.",["X"]] +["3","09:24","Závodu míru",["X"]] +["33","09:34","Sídl. Michal škola",["X"]] +["4","09:41","Sídliště Michal",["X"]] +["3","09:45","Závodu míru",["X"]] +["1","09:58","Březová, aut. st.",["X"]] +["3","09:59","Jezero Michal",["X"]] +["7","10:14","Březová, aut.st.",["X"]] +["33","10:24","Sídl. Michal škola",["X"]] +["3","10:40","Závodu míru",["X"]] +["1","10:55","Březová, aut. st.",["X"]] +["3","10:55","Závodu míru",["X"]] +["3","11:17","Závodu míru",["X"]] +["33","11:29","Sídl. Michal škola",["X"]] +["3","11:44","Závodu míru",["X"]] +["1","11:46","Březová, aut. st.",["X"]] +["33","11:56","Sídl. Michal škola",["X"]] +["3","12:05","Závodu míru",["X"]] +["3","12:24","Jezero Michal",["X"]] +["1","12:33","Březová, aut. st.",["X"]] +["3","12:44","Závodu míru",["X"]] +["3","12:59","Závodu míru",["X"]] +["6","12:59","Sídl. Michal škola",["X","42"]] +["33","13:04","Sídl. Michal škola",["X"]] +["1","13:06","Březová, aut. st.",["X"]] +["3","13:15","Závodu míru",["X"]] +["2","13:17","Sídliště Michal",["X"]] +["1","13:22","Březová, aut. st.",["X"]] +["3","13:24","Stará Ovčárna",["X"]] +["33","13:39","Sídl. Michal škola",["X"]] +["1","13:48","Březová, aut. st.",["X"]] +["33","14:04","Sídl. Michal škola",["X"]] +["6","14:04","Sídl. Michal škola",["X"]] +["4","14:06","Stará Ovčárna",["X"]] +["3","14:09","Závodu míru",["X"]] +["1","14:10","Březová, aut. st.",["X"]] +["3","14:21","Závodu míru",["X"]] +["1","14:34","Březová, aut. st.",["X"]] +["6","14:34","Sídl. Michal škola",["X"]] +["4","14:42","Závodu míru",["X"]] +["3","14:43","Závodu míru",["X"]] +["33","14:46","Sídl. Michal škola",["X"]] +["3","14:52","Závodu míru",["X"]] +["1","15:09","Březová, aut. st.",["X"]] +["33","15:09","Sídl. Michal škola",["X"]] +["3","15:13","Závodu míru",["X"]] +["6","15:14","Sídl. Michal škola",["X"]] +["3","15:23","Sokolov, Hrušková",["X","42"]] +["3","15:30","Závodu míru",["X"]] +["1","15:31","Březová, aut. st.",["X"]] +["33","15:39","Sídl. Michal škola",["X"]] +["3","15:39","Jezero Michal",["X"]] +["7","15:54","Březová, aut.st.",["X"]] +["3","16:00","Sídl. Michal škola",["X","42"]] +["4","16:06","Závodu míru",["X"]] +["33","16:14","Sídl. Michal škola",["X"]] +["3","16:14","Závodu míru",["X"]] +["1","16:21","Březová, aut. st.",["X"]] +["7","16:29","Březová, aut.st.",["X"]] +["3","16:35","Závodu míru",["X"]] +["6","16:44","Sídl. Michal škola",["X","42"]] +["3","16:48","Závodu míru",["X"]] +["4","16:51","Závodu míru",["X","42"]] +["7","16:59","Březová, aut.st.",["X"]] +["3","17:09","Jezero Michal",["X"]] +["3","17:18","Závodu míru",["X"]] +["3","17:34","Závodu míru",["X"]] +["1","17:38","Březová, aut. st.",["X"]] +["3","17:57","Závodu míru",["X"]] +["3","18:14","Závodu míru",["X"]] +["3","18:21","Závodu míru",["X"]] +["1","18:26","Březová, aut. st.",["X"]] +["3","18:34","Závodu míru",["X"]] +["3","18:54","Závodu míru",["X"]] +["1","19:08","Březová, aut. st.",["X"]] +["3","19:19","Závodu míru",["X","31"]] +["3","19:34","Závodu míru",["X","31"]] +["1","19:53","Březová, aut. st.",["X","31"]] +["3","19:54","Závodu míru",["X","31"]] +["3","20:19","Závodu míru",["X","31"]] +["3","20:49","Závodu míru",["X","31"]] +["1","20:55","Březová, aut. st.",["X","31"]] +["3","21:09","Závodu míru",["X","31"]] +["3","21:24","Stará Ovčárna",["X","31"]] +["1","21:38","Březová, aut. st.",["X","31"]] +["3","22:12","Stará Ovčárna",["X","31"]] +["1","22:28","Březová, aut. st.",["X","31"]] +["3","22:41","Závodu míru",["X","31"]] + +["16.6","Pondeli"] +["3","04:29","Závodu míru",["X"]] +["1","04:50","Březová, aut. st.",["X"]] +["3","04:52","Závodu míru",["X"]] +["3","05:02","Závodu míru",["X"]] +["4","05:05","Závodu míru",["X"]] +["6","05:07","Sídl. Michal škola",["X","42"]] +["6","05:07","Závodu míru",["X","32"]] +["3","05:09","Závodu míru",["X","42"]] +["3","05:22","Závodu míru",["X"]] +["1","05:23","Březová, aut. st.",["X"]] +["6","05:34","Sídl. Michal škola",["X","42"]] +["4","05:35","Stará Ovčárna",["X"]] +["3","05:36","Sídl. Michal škola",["X","42"]] +["3","05:38","Sídliště Michal",["X","32"]] +["1","05:51","Březová, aut. st.",["X"]] +["3","05:58","Závodu míru",["X"]] +["6","06:04","Sídl. Michal škola",["X","42"]] +["1","06:13","Březová, aut. st.",["X"]] +["3","06:16","Závodu míru",["X","42"]] +["3","06:19","Závodu míru",["X","32"]] +["3","06:24","Sídliště Michal",["X"]] +["4","06:31","Závodu míru",["X","42"]] +["6","06:32","Sídl. Michal škola",["X","32"]] +["3","06:34","Závodu míru",["X"]] +["6","06:34","Sídl. Michal škola",["X","42"]] +["1","06:46","Březová, aut. st.",["X"]] +["33","06:49","Sídl. Michal škola",["X","42"]] +["3","06:56","Závodu míru",["X","32"]] +["3","06:56","Závodu míru",["X","42"]] +["3","07:04","Závodu míru",["X"]] +["1","07:05","Březová, aut. st.",["X"]] +["3","07:14","Závodu míru",["X"]] +["6","07:23","Sídl. Michal škola",["X","42"]] +["3","07:27","Sídliště Michal",["X","32"]] +["2","07:31","Sídliště Michal",["X","42"]] +["3","07:34","Závodu míru",["X","42"]] +["4","07:34","Závodu míru",["X"]] +["1","07:35","Březová, aut. st.",["X"]] +["3","07:45","Sídliště Michal",["X"]] +["33","07:54","Sídl. Michal škola",["X","42"]] +["1","07:55","Březová, aut. st.",["X"]] +["3","07:58","Závodu míru",["X","42"]] +["3","08:10","Závodu míru",["X","32"]] +["3","08:15","Závodu míru",["X","42"]] +["1","08:18","Březová, aut. st.",["X"]] +["33","08:29","Sídl. Michal škola",["X"]] +["3","08:34","Závodu míru",["X"]] +["3","08:50","Stará Ovčárna",["X"]] +["33","08:54","Sídl. Michal škola",["X"]] +["3","09:04","Závodu míru",["X"]] +["1","09:09","Březová, aut. st.",["X"]] +["3","09:24","Závodu míru",["X"]] +["33","09:34","Sídl. Michal škola",["X"]] +["4","09:41","Sídliště Michal",["X"]] +["3","09:45","Závodu míru",["X"]] +["1","09:58","Březová, aut. st.",["X"]] +["3","09:59","Jezero Michal",["X"]] +["7","10:14","Březová, aut.st.",["X"]] +["33","10:24","Sídl. Michal škola",["X"]] +["3","10:40","Závodu míru",["X"]] +["1","10:55","Březová, aut. st.",["X"]] +["3","10:55","Závodu míru",["X"]] +["3","11:17","Závodu míru",["X"]] +["33","11:29","Sídl. Michal škola",["X"]] +["3","11:44","Závodu míru",["X"]] +["1","11:46","Březová, aut. st.",["X"]] +["33","11:56","Sídl. Michal škola",["X"]] +["3","12:05","Závodu míru",["X"]] +["3","12:24","Jezero Michal",["X"]] +["1","12:33","Březová, aut. st.",["X"]] +["3","12:44","Závodu míru",["X"]] +["3","12:59","Závodu míru",["X"]] +["6","12:59","Sídl. Michal škola",["X","42"]] +["33","13:04","Sídl. Michal škola",["X"]] +["1","13:06","Březová, aut. st.",["X"]] +["3","13:15","Závodu míru",["X"]] +["2","13:17","Sídliště Michal",["X"]] +["1","13:22","Březová, aut. st.",["X"]] +["3","13:24","Stará Ovčárna",["X"]] +["33","13:39","Sídl. Michal škola",["X"]] +["1","13:48","Březová, aut. st.",["X"]] +["33","14:04","Sídl. Michal škola",["X"]] +["6","14:04","Sídl. Michal škola",["X"]] +["4","14:06","Stará Ovčárna",["X"]] +["3","14:09","Závodu míru",["X"]] +["1","14:10","Březová, aut. st.",["X"]] +["3","14:21","Závodu míru",["X"]] +["1","14:34","Březová, aut. st.",["X"]] +["6","14:34","Sídl. Michal škola",["X"]] +["4","14:42","Závodu míru",["X"]] +["3","14:43","Závodu míru",["X"]] +["33","14:46","Sídl. Michal škola",["X"]] +["3","14:52","Závodu míru",["X"]] +["1","15:09","Březová, aut. st.",["X"]] +["33","15:09","Sídl. Michal škola",["X"]] +["3","15:13","Závodu míru",["X"]] +["6","15:14","Sídl. Michal škola",["X"]] +["3","15:23","Sokolov, Hrušková",["X","42"]] +["3","15:30","Závodu míru",["X"]] +["1","15:31","Březová, aut. st.",["X"]] +["33","15:39","Sídl. Michal škola",["X"]] +["3","15:39","Jezero Michal",["X"]] +["7","15:54","Březová, aut.st.",["X"]] +["3","16:00","Sídl. Michal škola",["X","42"]] +["4","16:06","Závodu míru",["X"]] +["33","16:14","Sídl. Michal škola",["X"]] +["3","16:14","Závodu míru",["X"]] +["1","16:21","Březová, aut. st.",["X"]] +["7","16:29","Březová, aut.st.",["X"]] +["3","16:35","Závodu míru",["X"]] +["6","16:44","Sídl. Michal škola",["X","42"]] +["3","16:48","Závodu míru",["X"]] +["4","16:51","Závodu míru",["X","42"]] +["7","16:59","Březová, aut.st.",["X"]] +["3","17:09","Jezero Michal",["X"]] +["3","17:18","Závodu míru",["X"]] +["3","17:34","Závodu míru",["X"]] +["1","17:38","Březová, aut. st.",["X"]] +["3","17:57","Závodu míru",["X"]] +["3","18:14","Závodu míru",["X"]] +["3","18:21","Závodu míru",["X"]] +["1","18:26","Březová, aut. st.",["X"]] +["3","18:34","Závodu míru",["X"]] +["3","18:54","Závodu míru",["X"]] +["1","19:08","Březová, aut. st.",["X"]] +["3","19:19","Závodu míru",["X","31"]] +["3","19:34","Závodu míru",["X","31"]] +["1","19:53","Březová, aut. st.",["X","31"]] +["3","19:54","Závodu míru",["X","31"]] +["3","20:19","Závodu míru",["X","31"]] +["3","20:49","Závodu míru",["X","31"]] +["1","20:55","Březová, aut. st.",["X","31"]] +["3","21:09","Závodu míru",["X","31"]] +["3","21:24","Stará Ovčárna",["X","31"]] +["1","21:38","Březová, aut. st.",["X","31"]] +["3","22:12","Stará Ovčárna",["X","31"]] +["1","22:28","Březová, aut. st.",["X","31"]] +["3","22:41","Závodu míru",["X","31"]] + +["17.6","Uteri"] +["3","04:29","Závodu míru",["X"]] +["1","04:50","Březová, aut. st.",["X"]] +["3","04:52","Závodu míru",["X"]] +["3","05:02","Závodu míru",["X"]] +["4","05:05","Závodu míru",["X"]] +["6","05:07","Sídl. Michal škola",["X","42"]] +["6","05:07","Závodu míru",["X","32"]] +["3","05:09","Závodu míru",["X","42"]] +["3","05:22","Závodu míru",["X"]] +["1","05:23","Březová, aut. st.",["X"]] +["6","05:34","Sídl. Michal škola",["X","42"]] +["4","05:35","Stará Ovčárna",["X"]] +["3","05:36","Sídl. Michal škola",["X","42"]] +["3","05:38","Sídliště Michal",["X","32"]] +["1","05:51","Březová, aut. st.",["X"]] +["3","05:58","Závodu míru",["X"]] +["6","06:04","Sídl. Michal škola",["X","42"]] +["1","06:13","Březová, aut. st.",["X"]] +["3","06:16","Závodu míru",["X","42"]] +["3","06:19","Závodu míru",["X","32"]] +["3","06:24","Sídliště Michal",["X"]] +["4","06:31","Závodu míru",["X","42"]] +["6","06:32","Sídl. Michal škola",["X","32"]] +["3","06:34","Závodu míru",["X"]] +["6","06:34","Sídl. Michal škola",["X","42"]] +["1","06:46","Březová, aut. st.",["X"]] +["33","06:49","Sídl. Michal škola",["X","42"]] +["3","06:56","Závodu míru",["X","32"]] +["3","06:56","Závodu míru",["X","42"]] +["3","07:04","Závodu míru",["X"]] +["1","07:05","Březová, aut. st.",["X"]] +["3","07:14","Závodu míru",["X"]] +["6","07:23","Sídl. Michal škola",["X","42"]] +["3","07:27","Sídliště Michal",["X","32"]] +["2","07:31","Sídliště Michal",["X","42"]] +["3","07:34","Závodu míru",["X","42"]] +["4","07:34","Závodu míru",["X"]] +["1","07:35","Březová, aut. st.",["X"]] +["3","07:45","Sídliště Michal",["X"]] +["33","07:54","Sídl. Michal škola",["X","42"]] +["1","07:55","Březová, aut. st.",["X"]] +["3","07:58","Závodu míru",["X","42"]] +["3","08:10","Závodu míru",["X","32"]] +["3","08:15","Závodu míru",["X","42"]] +["1","08:18","Březová, aut. st.",["X"]] +["33","08:29","Sídl. Michal škola",["X"]] +["3","08:34","Závodu míru",["X"]] +["3","08:50","Stará Ovčárna",["X"]] +["33","08:54","Sídl. Michal škola",["X"]] +["3","09:04","Závodu míru",["X"]] +["1","09:09","Březová, aut. st.",["X"]] +["3","09:24","Závodu míru",["X"]] +["33","09:34","Sídl. Michal škola",["X"]] +["4","09:41","Sídliště Michal",["X"]] +["3","09:45","Závodu míru",["X"]] +["1","09:58","Březová, aut. st.",["X"]] +["3","09:59","Jezero Michal",["X"]] +["7","10:14","Březová, aut.st.",["X"]] +["33","10:24","Sídl. Michal škola",["X"]] +["3","10:40","Závodu míru",["X"]] +["1","10:55","Březová, aut. st.",["X"]] +["3","10:55","Závodu míru",["X"]] +["3","11:17","Závodu míru",["X"]] +["33","11:29","Sídl. Michal škola",["X"]] +["3","11:44","Závodu míru",["X"]] +["1","11:46","Březová, aut. st.",["X"]] +["33","11:56","Sídl. Michal škola",["X"]] +["3","12:05","Závodu míru",["X"]] +["3","12:24","Jezero Michal",["X"]] +["1","12:33","Březová, aut. st.",["X"]] +["3","12:44","Závodu míru",["X"]] +["3","12:59","Závodu míru",["X"]] +["6","12:59","Sídl. Michal škola",["X","42"]] +["33","13:04","Sídl. Michal škola",["X"]] +["1","13:06","Březová, aut. st.",["X"]] +["3","13:15","Závodu míru",["X"]] +["2","13:17","Sídliště Michal",["X"]] +["1","13:22","Březová, aut. st.",["X"]] +["3","13:24","Stará Ovčárna",["X"]] +["33","13:39","Sídl. Michal škola",["X"]] +["1","13:48","Březová, aut. st.",["X"]] +["33","14:04","Sídl. Michal škola",["X"]] +["6","14:04","Sídl. Michal škola",["X"]] +["4","14:06","Stará Ovčárna",["X"]] +["3","14:09","Závodu míru",["X"]] +["1","14:10","Březová, aut. st.",["X"]] +["3","14:21","Závodu míru",["X"]] +["1","14:34","Březová, aut. st.",["X"]] +["6","14:34","Sídl. Michal škola",["X"]] +["4","14:42","Závodu míru",["X"]] +["3","14:43","Závodu míru",["X"]] +["33","14:46","Sídl. Michal škola",["X"]] +["3","14:52","Závodu míru",["X"]] +["1","15:09","Březová, aut. st.",["X"]] +["33","15:09","Sídl. Michal škola",["X"]] +["3","15:13","Závodu míru",["X"]] +["6","15:14","Sídl. Michal škola",["X"]] +["3","15:23","Sokolov, Hrušková",["X","42"]] +["3","15:30","Závodu míru",["X"]] +["1","15:31","Březová, aut. st.",["X"]] +["33","15:39","Sídl. Michal škola",["X"]] +["3","15:39","Jezero Michal",["X"]] +["7","15:54","Březová, aut.st.",["X"]] +["3","16:00","Sídl. Michal škola",["X","42"]] +["4","16:06","Závodu míru",["X"]] +["33","16:14","Sídl. Michal škola",["X"]] +["3","16:14","Závodu míru",["X"]] +["1","16:21","Březová, aut. st.",["X"]] +["7","16:29","Březová, aut.st.",["X"]] +["3","16:35","Závodu míru",["X"]] +["6","16:44","Sídl. Michal škola",["X","42"]] +["3","16:48","Závodu míru",["X"]] +["4","16:51","Závodu míru",["X","42"]] +["7","16:59","Březová, aut.st.",["X"]] +["3","17:09","Jezero Michal",["X"]] +["3","17:18","Závodu míru",["X"]] +["3","17:34","Závodu míru",["X"]] +["1","17:38","Březová, aut. st.",["X"]] +["3","17:57","Závodu míru",["X"]] +["3","18:14","Závodu míru",["X"]] +["3","18:21","Závodu míru",["X"]] +["1","18:26","Březová, aut. st.",["X"]] +["3","18:34","Závodu míru",["X"]] +["3","18:54","Závodu míru",["X"]] +["1","19:08","Březová, aut. st.",["X"]] +["3","19:19","Závodu míru",["X","31"]] +["3","19:34","Závodu míru",["X","31"]] +["1","19:53","Březová, aut. st.",["X","31"]] +["3","19:54","Závodu míru",["X","31"]] +["3","20:19","Závodu míru",["X","31"]] +["3","20:49","Závodu míru",["X","31"]] +["1","20:55","Březová, aut. st.",["X","31"]] +["3","21:09","Závodu míru",["X","31"]] +["3","21:24","Stará Ovčárna",["X","31"]] +["1","21:38","Březová, aut. st.",["X","31"]] +["3","22:12","Stará Ovčárna",["X","31"]] +["1","22:28","Březová, aut. st.",["X","31"]] +["3","22:41","Závodu míru",["X","31"]] + +["17.6","Uteri"] +["3","04:29","Závodu míru",["X"]] +["1","04:50","Březová, aut. st.",["X"]] +["3","04:52","Závodu míru",["X"]] +["3","05:02","Závodu míru",["X"]] +["4","05:05","Závodu míru",["X"]] +["6","05:07","Sídl. Michal škola",["X","42"]] +["6","05:07","Závodu míru",["X","32"]] +["3","05:09","Závodu míru",["X","42"]] +["3","05:22","Závodu míru",["X"]] +["1","05:23","Březová, aut. st.",["X"]] +["6","05:34","Sídl. Michal škola",["X","42"]] +["4","05:35","Stará Ovčárna",["X"]] +["3","05:36","Sídl. Michal škola",["X","42"]] +["3","05:38","Sídliště Michal",["X","32"]] +["1","05:51","Březová, aut. st.",["X"]] +["3","05:58","Závodu míru",["X"]] +["6","06:04","Sídl. Michal škola",["X","42"]] +["1","06:13","Březová, aut. st.",["X"]] +["3","06:16","Závodu míru",["X","42"]] +["3","06:19","Závodu míru",["X","32"]] +["3","06:24","Sídliště Michal",["X"]] +["4","06:31","Závodu míru",["X","42"]] +["6","06:32","Sídl. Michal škola",["X","32"]] +["3","06:34","Závodu míru",["X"]] +["6","06:34","Sídl. Michal škola",["X","42"]] +["1","06:46","Březová, aut. st.",["X"]] +["33","06:49","Sídl. Michal škola",["X","42"]] +["3","06:56","Závodu míru",["X","32"]] +["3","06:56","Závodu míru",["X","42"]] +["3","07:04","Závodu míru",["X"]] +["1","07:05","Březová, aut. st.",["X"]] +["3","07:14","Závodu míru",["X"]] +["6","07:23","Sídl. Michal škola",["X","42"]] +["3","07:27","Sídliště Michal",["X","32"]] +["2","07:31","Sídliště Michal",["X","42"]] +["3","07:34","Závodu míru",["X","42"]] +["4","07:34","Závodu míru",["X"]] +["1","07:35","Březová, aut. st.",["X"]] +["3","07:45","Sídliště Michal",["X"]] +["33","07:54","Sídl. Michal škola",["X","42"]] +["1","07:55","Březová, aut. st.",["X"]] +["3","07:58","Závodu míru",["X","42"]] +["3","08:10","Závodu míru",["X","32"]] +["3","08:15","Závodu míru",["X","42"]] +["1","08:18","Březová, aut. st.",["X"]] +["33","08:29","Sídl. Michal škola",["X"]] +["3","08:34","Závodu míru",["X"]] +["3","08:50","Stará Ovčárna",["X"]] +["33","08:54","Sídl. Michal škola",["X"]] +["3","09:04","Závodu míru",["X"]] +["1","09:09","Březová, aut. st.",["X"]] +["3","09:24","Závodu míru",["X"]] +["33","09:34","Sídl. Michal škola",["X"]] +["4","09:41","Sídliště Michal",["X"]] +["3","09:45","Závodu míru",["X"]] +["1","09:58","Březová, aut. st.",["X"]] +["3","09:59","Jezero Michal",["X"]] +["7","10:14","Březová, aut.st.",["X"]] +["33","10:24","Sídl. Michal škola",["X"]] +["3","10:40","Závodu míru",["X"]] +["1","10:55","Březová, aut. st.",["X"]] +["3","10:55","Závodu míru",["X"]] +["3","11:17","Závodu míru",["X"]] +["33","11:29","Sídl. Michal škola",["X"]] +["3","11:44","Závodu míru",["X"]] +["1","11:46","Březová, aut. st.",["X"]] +["33","11:56","Sídl. Michal škola",["X"]] +["3","12:05","Závodu míru",["X"]] +["3","12:24","Jezero Michal",["X"]] +["1","12:33","Březová, aut. st.",["X"]] +["3","12:44","Závodu míru",["X"]] +["3","12:59","Závodu míru",["X"]] +["6","12:59","Sídl. Michal škola",["X","42"]] +["33","13:04","Sídl. Michal škola",["X"]] +["1","13:06","Březová, aut. st.",["X"]] +["3","13:15","Závodu míru",["X"]] +["2","13:17","Sídliště Michal",["X"]] +["1","13:22","Březová, aut. st.",["X"]] +["3","13:24","Stará Ovčárna",["X"]] +["33","13:39","Sídl. Michal škola",["X"]] +["1","13:48","Březová, aut. st.",["X"]] +["33","14:04","Sídl. Michal škola",["X"]] +["6","14:04","Sídl. Michal škola",["X"]] +["4","14:06","Stará Ovčárna",["X"]] +["3","14:09","Závodu míru",["X"]] +["1","14:10","Březová, aut. st.",["X"]] +["3","14:21","Závodu míru",["X"]] +["1","14:34","Březová, aut. st.",["X"]] +["6","14:34","Sídl. Michal škola",["X"]] +["4","14:42","Závodu míru",["X"]] +["3","14:43","Závodu míru",["X"]] +["33","14:46","Sídl. Michal škola",["X"]] +["3","14:52","Závodu míru",["X"]] +["1","15:09","Březová, aut. st.",["X"]] +["33","15:09","Sídl. Michal škola",["X"]] +["3","15:13","Závodu míru",["X"]] +["6","15:14","Sídl. Michal škola",["X"]] +["3","15:23","Sokolov, Hrušková",["X","42"]] +["3","15:30","Závodu míru",["X"]] +["1","15:31","Březová, aut. st.",["X"]] +["33","15:39","Sídl. Michal škola",["X"]] +["3","15:39","Jezero Michal",["X"]] +["7","15:54","Březová, aut.st.",["X"]] +["3","16:00","Sídl. Michal škola",["X","42"]] +["4","16:06","Závodu míru",["X"]] +["33","16:14","Sídl. Michal škola",["X"]] +["3","16:14","Závodu míru",["X"]] +["1","16:21","Březová, aut. st.",["X"]] +["7","16:29","Březová, aut.st.",["X"]] +["3","16:35","Závodu míru",["X"]] +["6","16:44","Sídl. Michal škola",["X","42"]] +["3","16:48","Závodu míru",["X"]] +["4","16:51","Závodu míru",["X","42"]] +["7","16:59","Březová, aut.st.",["X"]] +["3","17:09","Jezero Michal",["X"]] +["3","17:18","Závodu míru",["X"]] +["3","17:34","Závodu míru",["X"]] +["1","17:38","Březová, aut. st.",["X"]] +["3","17:57","Závodu míru",["X"]] +["3","18:14","Závodu míru",["X"]] +["3","18:21","Závodu míru",["X"]] +["1","18:26","Březová, aut. st.",["X"]] +["3","18:34","Závodu míru",["X"]] +["3","18:54","Závodu míru",["X"]] +["1","19:08","Březová, aut. st.",["X"]] +["3","19:19","Závodu míru",["X","31"]] +["3","19:34","Závodu míru",["X","31"]] +["1","19:53","Březová, aut. st.",["X","31"]] +["3","19:54","Závodu míru",["X","31"]] +["3","20:19","Závodu míru",["X","31"]] +["3","20:49","Závodu míru",["X","31"]] +["1","20:55","Březová, aut. st.",["X","31"]] +["3","21:09","Závodu míru",["X","31"]] +["3","21:24","Stará Ovčárna",["X","31"]] +["1","21:38","Březová, aut. st.",["X","31"]] +["3","22:12","Stará Ovčárna",["X","31"]] +["1","22:28","Březová, aut. st.",["X","31"]] +["3","22:41","Závodu míru",["X","31"]] + +["18.6","Streda"] +["3","04:29","Závodu míru",["X"]] +["1","04:50","Březová, aut. st.",["X"]] +["3","04:52","Závodu míru",["X"]] +["3","05:02","Závodu míru",["X"]] +["4","05:05","Závodu míru",["X"]] +["6","05:07","Sídl. Michal škola",["X","42"]] +["6","05:07","Závodu míru",["X","32"]] +["3","05:09","Závodu míru",["X","42"]] +["3","05:22","Závodu míru",["X"]] +["1","05:23","Březová, aut. st.",["X"]] +["6","05:34","Sídl. Michal škola",["X","42"]] +["4","05:35","Stará Ovčárna",["X"]] +["3","05:36","Sídl. Michal škola",["X","42"]] +["3","05:38","Sídliště Michal",["X","32"]] +["1","05:51","Březová, aut. st.",["X"]] +["3","05:58","Závodu míru",["X"]] +["6","06:04","Sídl. Michal škola",["X","42"]] +["1","06:13","Březová, aut. st.",["X"]] +["3","06:16","Závodu míru",["X","42"]] +["3","06:19","Závodu míru",["X","32"]] +["3","06:24","Sídliště Michal",["X"]] +["4","06:31","Závodu míru",["X","42"]] +["6","06:32","Sídl. Michal škola",["X","32"]] +["3","06:34","Závodu míru",["X"]] +["6","06:34","Sídl. Michal škola",["X","42"]] +["1","06:46","Březová, aut. st.",["X"]] +["33","06:49","Sídl. Michal škola",["X","42"]] +["3","06:56","Závodu míru",["X","32"]] +["3","06:56","Závodu míru",["X","42"]] +["3","07:04","Závodu míru",["X"]] +["1","07:05","Březová, aut. st.",["X"]] +["3","07:14","Závodu míru",["X"]] +["6","07:23","Sídl. Michal škola",["X","42"]] +["3","07:27","Sídliště Michal",["X","32"]] +["2","07:31","Sídliště Michal",["X","42"]] +["3","07:34","Závodu míru",["X","42"]] +["4","07:34","Závodu míru",["X"]] +["1","07:35","Březová, aut. st.",["X"]] +["3","07:45","Sídliště Michal",["X"]] +["33","07:54","Sídl. Michal škola",["X","42"]] +["1","07:55","Březová, aut. st.",["X"]] +["3","07:58","Závodu míru",["X","42"]] +["3","08:10","Závodu míru",["X","32"]] +["3","08:15","Závodu míru",["X","42"]] +["1","08:18","Březová, aut. st.",["X"]] +["33","08:29","Sídl. Michal škola",["X"]] +["3","08:34","Závodu míru",["X"]] +["3","08:50","Stará Ovčárna",["X"]] +["33","08:54","Sídl. Michal škola",["X"]] +["3","09:04","Závodu míru",["X"]] +["1","09:09","Březová, aut. st.",["X"]] +["3","09:24","Závodu míru",["X"]] +["33","09:34","Sídl. Michal škola",["X"]] +["4","09:41","Sídliště Michal",["X"]] +["3","09:45","Závodu míru",["X"]] +["1","09:58","Březová, aut. st.",["X"]] +["3","09:59","Jezero Michal",["X"]] +["7","10:14","Březová, aut.st.",["X"]] +["33","10:24","Sídl. Michal škola",["X"]] +["3","10:40","Závodu míru",["X"]] +["1","10:55","Březová, aut. st.",["X"]] +["3","10:55","Závodu míru",["X"]] +["3","11:17","Závodu míru",["X"]] +["33","11:29","Sídl. Michal škola",["X"]] +["3","11:44","Závodu míru",["X"]] +["1","11:46","Březová, aut. st.",["X"]] +["33","11:56","Sídl. Michal škola",["X"]] +["3","12:05","Závodu míru",["X"]] +["3","12:24","Jezero Michal",["X"]] +["1","12:33","Březová, aut. st.",["X"]] +["3","12:44","Závodu míru",["X"]] +["3","12:59","Závodu míru",["X"]] +["6","12:59","Sídl. Michal škola",["X","42"]] +["33","13:04","Sídl. Michal škola",["X"]] +["1","13:06","Březová, aut. st.",["X"]] +["3","13:15","Závodu míru",["X"]] +["2","13:17","Sídliště Michal",["X"]] +["1","13:22","Březová, aut. st.",["X"]] +["3","13:24","Stará Ovčárna",["X"]] +["33","13:39","Sídl. Michal škola",["X"]] +["1","13:48","Březová, aut. st.",["X"]] +["33","14:04","Sídl. Michal škola",["X"]] +["6","14:04","Sídl. Michal škola",["X"]] +["4","14:06","Stará Ovčárna",["X"]] +["3","14:09","Závodu míru",["X"]] +["1","14:10","Březová, aut. st.",["X"]] +["3","14:21","Závodu míru",["X"]] +["1","14:34","Březová, aut. st.",["X"]] +["6","14:34","Sídl. Michal škola",["X"]] +["4","14:42","Závodu míru",["X"]] +["3","14:43","Závodu míru",["X"]] +["33","14:46","Sídl. Michal škola",["X"]] +["3","14:52","Závodu míru",["X"]] +["1","15:09","Březová, aut. st.",["X"]] +["33","15:09","Sídl. Michal škola",["X"]] +["3","15:13","Závodu míru",["X"]] +["6","15:14","Sídl. Michal škola",["X"]] +["3","15:23","Sokolov, Hrušková",["X","42"]] +["3","15:30","Závodu míru",["X"]] +["1","15:31","Březová, aut. st.",["X"]] +["33","15:39","Sídl. Michal škola",["X"]] +["3","15:39","Jezero Michal",["X"]] +["7","15:54","Březová, aut.st.",["X"]] +["3","16:00","Sídl. Michal škola",["X","42"]] +["4","16:06","Závodu míru",["X"]] +["33","16:14","Sídl. Michal škola",["X"]] +["3","16:14","Závodu míru",["X"]] +["1","16:21","Březová, aut. st.",["X"]] +["7","16:29","Březová, aut.st.",["X"]] +["3","16:35","Závodu míru",["X"]] +["6","16:44","Sídl. Michal škola",["X","42"]] +["3","16:48","Závodu míru",["X"]] +["4","16:51","Závodu míru",["X","42"]] +["7","16:59","Březová, aut.st.",["X"]] +["3","17:09","Jezero Michal",["X"]] +["3","17:18","Závodu míru",["X"]] +["3","17:34","Závodu míru",["X"]] +["1","17:38","Březová, aut. st.",["X"]] +["3","17:57","Závodu míru",["X"]] +["3","18:14","Závodu míru",["X"]] +["3","18:21","Závodu míru",["X"]] +["1","18:26","Březová, aut. st.",["X"]] +["3","18:34","Závodu míru",["X"]] +["3","18:54","Závodu míru",["X"]] +["1","19:08","Březová, aut. st.",["X"]] +["3","19:19","Závodu míru",["X","31"]] +["3","19:34","Závodu míru",["X","31"]] +["1","19:53","Březová, aut. st.",["X","31"]] +["3","19:54","Závodu míru",["X","31"]] +["3","20:19","Závodu míru",["X","31"]] +["3","20:49","Závodu míru",["X","31"]] +["1","20:55","Březová, aut. st.",["X","31"]] +["3","21:09","Závodu míru",["X","31"]] +["3","21:24","Stará Ovčárna",["X","31"]] +["1","21:38","Březová, aut. st.",["X","31"]] +["3","22:12","Stará Ovčárna",["X","31"]] +["1","22:28","Březová, aut. st.",["X","31"]] +["3","22:41","Závodu míru",["X","31"]] + +["18.6","Streda"] +["3","04:29","Závodu míru",["X"]] +["1","04:50","Březová, aut. st.",["X"]] +["3","04:52","Závodu míru",["X"]] +["3","05:02","Závodu míru",["X"]] +["4","05:05","Závodu míru",["X"]] +["6","05:07","Sídl. Michal škola",["X","42"]] +["6","05:07","Závodu míru",["X","32"]] +["3","05:09","Závodu míru",["X","42"]] +["3","05:22","Závodu míru",["X"]] +["1","05:23","Březová, aut. st.",["X"]] +["6","05:34","Sídl. Michal škola",["X","42"]] +["4","05:35","Stará Ovčárna",["X"]] +["3","05:36","Sídl. Michal škola",["X","42"]] +["3","05:38","Sídliště Michal",["X","32"]] +["1","05:51","Březová, aut. st.",["X"]] +["3","05:58","Závodu míru",["X"]] +["6","06:04","Sídl. Michal škola",["X","42"]] +["1","06:13","Březová, aut. st.",["X"]] +["3","06:16","Závodu míru",["X","42"]] +["3","06:19","Závodu míru",["X","32"]] +["3","06:24","Sídliště Michal",["X"]] +["4","06:31","Závodu míru",["X","42"]] +["6","06:32","Sídl. Michal škola",["X","32"]] +["3","06:34","Závodu míru",["X"]] +["6","06:34","Sídl. Michal škola",["X","42"]] +["1","06:46","Březová, aut. st.",["X"]] +["33","06:49","Sídl. Michal škola",["X","42"]] +["3","06:56","Závodu míru",["X","32"]] +["3","06:56","Závodu míru",["X","42"]] +["3","07:04","Závodu míru",["X"]] +["1","07:05","Březová, aut. st.",["X"]] +["3","07:14","Závodu míru",["X"]] +["6","07:23","Sídl. Michal škola",["X","42"]] +["3","07:27","Sídliště Michal",["X","32"]] +["2","07:31","Sídliště Michal",["X","42"]] +["3","07:34","Závodu míru",["X","42"]] +["4","07:34","Závodu míru",["X"]] +["1","07:35","Březová, aut. st.",["X"]] +["3","07:45","Sídliště Michal",["X"]] +["33","07:54","Sídl. Michal škola",["X","42"]] +["1","07:55","Březová, aut. st.",["X"]] +["3","07:58","Závodu míru",["X","42"]] +["3","08:10","Závodu míru",["X","32"]] +["3","08:15","Závodu míru",["X","42"]] +["1","08:18","Březová, aut. st.",["X"]] +["33","08:29","Sídl. Michal škola",["X"]] +["3","08:34","Závodu míru",["X"]] +["3","08:50","Stará Ovčárna",["X"]] +["33","08:54","Sídl. Michal škola",["X"]] +["3","09:04","Závodu míru",["X"]] +["1","09:09","Březová, aut. st.",["X"]] +["3","09:24","Závodu míru",["X"]] +["33","09:34","Sídl. Michal škola",["X"]] +["4","09:41","Sídliště Michal",["X"]] +["3","09:45","Závodu míru",["X"]] +["1","09:58","Březová, aut. st.",["X"]] +["3","09:59","Jezero Michal",["X"]] +["7","10:14","Březová, aut.st.",["X"]] +["33","10:24","Sídl. Michal škola",["X"]] +["3","10:40","Závodu míru",["X"]] +["1","10:55","Březová, aut. st.",["X"]] +["3","10:55","Závodu míru",["X"]] +["3","11:17","Závodu míru",["X"]] +["33","11:29","Sídl. Michal škola",["X"]] +["3","11:44","Závodu míru",["X"]] +["1","11:46","Březová, aut. st.",["X"]] +["33","11:56","Sídl. Michal škola",["X"]] +["3","12:05","Závodu míru",["X"]] +["3","12:24","Jezero Michal",["X"]] +["1","12:33","Březová, aut. st.",["X"]] +["3","12:44","Závodu míru",["X"]] +["3","12:59","Závodu míru",["X"]] +["6","12:59","Sídl. Michal škola",["X","42"]] +["33","13:04","Sídl. Michal škola",["X"]] +["1","13:06","Březová, aut. st.",["X"]] +["3","13:15","Závodu míru",["X"]] +["2","13:17","Sídliště Michal",["X"]] +["1","13:22","Březová, aut. st.",["X"]] +["3","13:24","Stará Ovčárna",["X"]] +["33","13:39","Sídl. Michal škola",["X"]] +["1","13:48","Březová, aut. st.",["X"]] +["33","14:04","Sídl. Michal škola",["X"]] +["6","14:04","Sídl. Michal škola",["X"]] +["4","14:06","Stará Ovčárna",["X"]] +["3","14:09","Závodu míru",["X"]] +["1","14:10","Březová, aut. st.",["X"]] +["3","14:21","Závodu míru",["X"]] +["1","14:34","Březová, aut. st.",["X"]] +["6","14:34","Sídl. Michal škola",["X"]] +["4","14:42","Závodu míru",["X"]] +["3","14:43","Závodu míru",["X"]] +["33","14:46","Sídl. Michal škola",["X"]] +["3","14:52","Závodu míru",["X"]] +["1","15:09","Březová, aut. st.",["X"]] +["33","15:09","Sídl. Michal škola",["X"]] +["3","15:13","Závodu míru",["X"]] +["6","15:14","Sídl. Michal škola",["X"]] +["3","15:23","Sokolov, Hrušková",["X","42"]] +["3","15:30","Závodu míru",["X"]] +["1","15:31","Březová, aut. st.",["X"]] +["33","15:39","Sídl. Michal škola",["X"]] +["3","15:39","Jezero Michal",["X"]] +["7","15:54","Březová, aut.st.",["X"]] +["3","16:00","Sídl. Michal škola",["X","42"]] +["4","16:06","Závodu míru",["X"]] +["33","16:14","Sídl. Michal škola",["X"]] +["3","16:14","Závodu míru",["X"]] +["1","16:21","Březová, aut. st.",["X"]] +["7","16:29","Březová, aut.st.",["X"]] +["3","16:35","Závodu míru",["X"]] +["6","16:44","Sídl. Michal škola",["X","42"]] +["3","16:48","Závodu míru",["X"]] +["4","16:51","Závodu míru",["X","42"]] +["7","16:59","Březová, aut.st.",["X"]] +["3","17:09","Jezero Michal",["X"]] +["3","17:18","Závodu míru",["X"]] +["3","17:34","Závodu míru",["X"]] +["1","17:38","Březová, aut. st.",["X"]] +["3","17:57","Závodu míru",["X"]] +["3","18:14","Závodu míru",["X"]] +["3","18:21","Závodu míru",["X"]] +["1","18:26","Březová, aut. st.",["X"]] +["3","18:34","Závodu míru",["X"]] +["3","18:54","Závodu míru",["X"]] +["1","19:08","Březová, aut. st.",["X"]] +["3","19:19","Závodu míru",["X","31"]] +["3","19:34","Závodu míru",["X","31"]] +["1","19:53","Březová, aut. st.",["X","31"]] +["3","19:54","Závodu míru",["X","31"]] +["3","20:19","Závodu míru",["X","31"]] +["3","20:49","Závodu míru",["X","31"]] +["1","20:55","Březová, aut. st.",["X","31"]] +["3","21:09","Závodu míru",["X","31"]] +["3","21:24","Stará Ovčárna",["X","31"]] +["1","21:38","Březová, aut. st.",["X","31"]] +["3","22:12","Stará Ovčárna",["X","31"]] +["1","22:28","Březová, aut. st.",["X","31"]] +["3","22:41","Závodu míru",["X","31"]] + +["19.6","Ctvrtek"] +["3","04:29","Závodu míru",["X"]] +["1","04:50","Březová, aut. st.",["X"]] +["3","04:52","Závodu míru",["X"]] +["3","05:02","Závodu míru",["X"]] +["4","05:05","Závodu míru",["X"]] +["6","05:07","Sídl. Michal škola",["X","42"]] +["6","05:07","Závodu míru",["X","32"]] +["3","05:09","Závodu míru",["X","42"]] +["3","05:22","Závodu míru",["X"]] +["1","05:23","Březová, aut. st.",["X"]] +["6","05:34","Sídl. Michal škola",["X","42"]] +["4","05:35","Stará Ovčárna",["X"]] +["3","05:36","Sídl. Michal škola",["X","42"]] +["3","05:38","Sídliště Michal",["X","32"]] +["1","05:51","Březová, aut. st.",["X"]] +["3","05:58","Závodu míru",["X"]] +["6","06:04","Sídl. Michal škola",["X","42"]] +["1","06:13","Březová, aut. st.",["X"]] +["3","06:16","Závodu míru",["X","42"]] +["3","06:19","Závodu míru",["X","32"]] +["3","06:24","Sídliště Michal",["X"]] +["4","06:31","Závodu míru",["X","42"]] +["6","06:32","Sídl. Michal škola",["X","32"]] +["3","06:34","Závodu míru",["X"]] +["6","06:34","Sídl. Michal škola",["X","42"]] +["1","06:46","Březová, aut. st.",["X"]] +["33","06:49","Sídl. Michal škola",["X","42"]] +["3","06:56","Závodu míru",["X","32"]] +["3","06:56","Závodu míru",["X","42"]] +["3","07:04","Závodu míru",["X"]] +["1","07:05","Březová, aut. st.",["X"]] +["3","07:14","Závodu míru",["X"]] +["6","07:23","Sídl. Michal škola",["X","42"]] +["3","07:27","Sídliště Michal",["X","32"]] +["2","07:31","Sídliště Michal",["X","42"]] +["3","07:34","Závodu míru",["X","42"]] +["4","07:34","Závodu míru",["X"]] +["1","07:35","Březová, aut. st.",["X"]] +["3","07:45","Sídliště Michal",["X"]] +["33","07:54","Sídl. Michal škola",["X","42"]] +["1","07:55","Březová, aut. st.",["X"]] +["3","07:58","Závodu míru",["X","42"]] +["3","08:10","Závodu míru",["X","32"]] +["3","08:15","Závodu míru",["X","42"]] +["1","08:18","Březová, aut. st.",["X"]] +["33","08:29","Sídl. Michal škola",["X"]] +["3","08:34","Závodu míru",["X"]] +["3","08:50","Stará Ovčárna",["X"]] +["33","08:54","Sídl. Michal škola",["X"]] +["3","09:04","Závodu míru",["X"]] +["1","09:09","Březová, aut. st.",["X"]] +["3","09:24","Závodu míru",["X"]] +["33","09:34","Sídl. Michal škola",["X"]] +["4","09:41","Sídliště Michal",["X"]] +["3","09:45","Závodu míru",["X"]] +["1","09:58","Březová, aut. st.",["X"]] +["3","09:59","Jezero Michal",["X"]] +["7","10:14","Březová, aut.st.",["X"]] +["33","10:24","Sídl. Michal škola",["X"]] +["3","10:40","Závodu míru",["X"]] +["1","10:55","Březová, aut. st.",["X"]] +["3","10:55","Závodu míru",["X"]] +["3","11:17","Závodu míru",["X"]] +["33","11:29","Sídl. Michal škola",["X"]] +["3","11:44","Závodu míru",["X"]] +["1","11:46","Březová, aut. st.",["X"]] +["33","11:56","Sídl. Michal škola",["X"]] +["3","12:05","Závodu míru",["X"]] +["3","12:24","Jezero Michal",["X"]] +["1","12:33","Březová, aut. st.",["X"]] +["3","12:44","Závodu míru",["X"]] +["3","12:59","Závodu míru",["X"]] +["6","12:59","Sídl. Michal škola",["X","42"]] +["33","13:04","Sídl. Michal škola",["X"]] +["1","13:06","Březová, aut. st.",["X"]] +["3","13:15","Závodu míru",["X"]] +["2","13:17","Sídliště Michal",["X"]] +["1","13:22","Březová, aut. st.",["X"]] +["3","13:24","Stará Ovčárna",["X"]] +["33","13:39","Sídl. Michal škola",["X"]] +["1","13:48","Březová, aut. st.",["X"]] +["33","14:04","Sídl. Michal škola",["X"]] +["6","14:04","Sídl. Michal škola",["X"]] +["4","14:06","Stará Ovčárna",["X"]] +["3","14:09","Závodu míru",["X"]] +["1","14:10","Březová, aut. st.",["X"]] +["3","14:21","Závodu míru",["X"]] +["1","14:34","Březová, aut. st.",["X"]] +["6","14:34","Sídl. Michal škola",["X"]] +["4","14:42","Závodu míru",["X"]] +["3","14:43","Závodu míru",["X"]] +["33","14:46","Sídl. Michal škola",["X"]] +["3","14:52","Závodu míru",["X"]] +["1","15:09","Březová, aut. st.",["X"]] +["33","15:09","Sídl. Michal škola",["X"]] +["3","15:13","Závodu míru",["X"]] +["6","15:14","Sídl. Michal škola",["X"]] +["3","15:23","Sokolov, Hrušková",["X","42"]] +["3","15:30","Závodu míru",["X"]] +["1","15:31","Březová, aut. st.",["X"]] +["33","15:39","Sídl. Michal škola",["X"]] +["3","15:39","Jezero Michal",["X"]] +["7","15:54","Březová, aut.st.",["X"]] +["3","16:00","Sídl. Michal škola",["X","42"]] +["4","16:06","Závodu míru",["X"]] +["33","16:14","Sídl. Michal škola",["X"]] +["3","16:14","Závodu míru",["X"]] +["1","16:21","Březová, aut. st.",["X"]] +["7","16:29","Březová, aut.st.",["X"]] +["3","16:35","Závodu míru",["X"]] +["6","16:44","Sídl. Michal škola",["X","42"]] +["3","16:48","Závodu míru",["X"]] +["4","16:51","Závodu míru",["X","42"]] +["7","16:59","Březová, aut.st.",["X"]] +["3","17:09","Jezero Michal",["X"]] +["3","17:18","Závodu míru",["X"]] +["3","17:34","Závodu míru",["X"]] +["1","17:38","Březová, aut. st.",["X"]] +["3","17:57","Závodu míru",["X"]] +["3","18:14","Závodu míru",["X"]] +["3","18:21","Závodu míru",["X"]] +["1","18:26","Březová, aut. st.",["X"]] +["3","18:34","Závodu míru",["X"]] +["3","18:54","Závodu míru",["X"]] +["1","19:08","Březová, aut. st.",["X"]] +["3","19:19","Závodu míru",["X","31"]] +["3","19:34","Závodu míru",["X","31"]] +["1","19:53","Březová, aut. st.",["X","31"]] +["3","19:54","Závodu míru",["X","31"]] +["3","20:19","Závodu míru",["X","31"]] +["3","20:49","Závodu míru",["X","31"]] +["1","20:55","Březová, aut. st.",["X","31"]] +["3","21:09","Závodu míru",["X","31"]] +["3","21:24","Stará Ovčárna",["X","31"]] +["1","21:38","Březová, aut. st.",["X","31"]] +["3","22:12","Stará Ovčárna",["X","31"]] +["1","22:28","Březová, aut. st.",["X","31"]] +["3","22:41","Závodu míru",["X","31"]] + +["19.6","Ctvrtek"] +["3","04:29","Závodu míru",["X"]] +["1","04:50","Březová, aut. st.",["X"]] +["3","04:52","Závodu míru",["X"]] +["3","05:02","Závodu míru",["X"]] +["4","05:05","Závodu míru",["X"]] +["6","05:07","Sídl. Michal škola",["X","42"]] +["6","05:07","Závodu míru",["X","32"]] +["3","05:09","Závodu míru",["X","42"]] +["3","05:22","Závodu míru",["X"]] +["1","05:23","Březová, aut. st.",["X"]] +["6","05:34","Sídl. Michal škola",["X","42"]] +["4","05:35","Stará Ovčárna",["X"]] +["3","05:36","Sídl. Michal škola",["X","42"]] +["3","05:38","Sídliště Michal",["X","32"]] +["1","05:51","Březová, aut. st.",["X"]] +["3","05:58","Závodu míru",["X"]] +["6","06:04","Sídl. Michal škola",["X","42"]] +["1","06:13","Březová, aut. st.",["X"]] +["3","06:16","Závodu míru",["X","42"]] +["3","06:19","Závodu míru",["X","32"]] +["3","06:24","Sídliště Michal",["X"]] +["4","06:31","Závodu míru",["X","42"]] +["6","06:32","Sídl. Michal škola",["X","32"]] +["3","06:34","Závodu míru",["X"]] +["6","06:34","Sídl. Michal škola",["X","42"]] +["1","06:46","Březová, aut. st.",["X"]] +["33","06:49","Sídl. Michal škola",["X","42"]] +["3","06:56","Závodu míru",["X","32"]] +["3","06:56","Závodu míru",["X","42"]] +["3","07:04","Závodu míru",["X"]] +["1","07:05","Březová, aut. st.",["X"]] +["3","07:14","Závodu míru",["X"]] +["6","07:23","Sídl. Michal škola",["X","42"]] +["3","07:27","Sídliště Michal",["X","32"]] +["2","07:31","Sídliště Michal",["X","42"]] +["3","07:34","Závodu míru",["X","42"]] +["4","07:34","Závodu míru",["X"]] +["1","07:35","Březová, aut. st.",["X"]] +["3","07:45","Sídliště Michal",["X"]] +["33","07:54","Sídl. Michal škola",["X","42"]] +["1","07:55","Březová, aut. st.",["X"]] +["3","07:58","Závodu míru",["X","42"]] +["3","08:10","Závodu míru",["X","32"]] +["3","08:15","Závodu míru",["X","42"]] +["1","08:18","Březová, aut. st.",["X"]] +["33","08:29","Sídl. Michal škola",["X"]] +["3","08:34","Závodu míru",["X"]] +["3","08:50","Stará Ovčárna",["X"]] +["33","08:54","Sídl. Michal škola",["X"]] +["3","09:04","Závodu míru",["X"]] +["1","09:09","Březová, aut. st.",["X"]] +["3","09:24","Závodu míru",["X"]] +["33","09:34","Sídl. Michal škola",["X"]] +["4","09:41","Sídliště Michal",["X"]] +["3","09:45","Závodu míru",["X"]] +["1","09:58","Březová, aut. st.",["X"]] +["3","09:59","Jezero Michal",["X"]] +["7","10:14","Březová, aut.st.",["X"]] +["33","10:24","Sídl. Michal škola",["X"]] +["3","10:40","Závodu míru",["X"]] +["1","10:55","Březová, aut. st.",["X"]] +["3","10:55","Závodu míru",["X"]] +["3","11:17","Závodu míru",["X"]] +["33","11:29","Sídl. Michal škola",["X"]] +["3","11:44","Závodu míru",["X"]] +["1","11:46","Březová, aut. st.",["X"]] +["33","11:56","Sídl. Michal škola",["X"]] +["3","12:05","Závodu míru",["X"]] +["3","12:24","Jezero Michal",["X"]] +["1","12:33","Březová, aut. st.",["X"]] +["3","12:44","Závodu míru",["X"]] +["3","12:59","Závodu míru",["X"]] +["6","12:59","Sídl. Michal škola",["X","42"]] +["33","13:04","Sídl. Michal škola",["X"]] +["1","13:06","Březová, aut. st.",["X"]] +["3","13:15","Závodu míru",["X"]] +["2","13:17","Sídliště Michal",["X"]] +["1","13:22","Březová, aut. st.",["X"]] +["3","13:24","Stará Ovčárna",["X"]] +["33","13:39","Sídl. Michal škola",["X"]] +["1","13:48","Březová, aut. st.",["X"]] +["33","14:04","Sídl. Michal škola",["X"]] +["6","14:04","Sídl. Michal škola",["X"]] +["4","14:06","Stará Ovčárna",["X"]] +["3","14:09","Závodu míru",["X"]] +["1","14:10","Březová, aut. st.",["X"]] +["3","14:21","Závodu míru",["X"]] +["1","14:34","Březová, aut. st.",["X"]] +["6","14:34","Sídl. Michal škola",["X"]] +["4","14:42","Závodu míru",["X"]] +["3","14:43","Závodu míru",["X"]] +["33","14:46","Sídl. Michal škola",["X"]] +["3","14:52","Závodu míru",["X"]] +["1","15:09","Březová, aut. st.",["X"]] +["33","15:09","Sídl. Michal škola",["X"]] +["3","15:13","Závodu míru",["X"]] +["6","15:14","Sídl. Michal škola",["X"]] +["3","15:23","Sokolov, Hrušková",["X","42"]] +["3","15:30","Závodu míru",["X"]] +["1","15:31","Březová, aut. st.",["X"]] +["33","15:39","Sídl. Michal škola",["X"]] +["3","15:39","Jezero Michal",["X"]] +["7","15:54","Březová, aut.st.",["X"]] +["3","16:00","Sídl. Michal škola",["X","42"]] +["4","16:06","Závodu míru",["X"]] +["33","16:14","Sídl. Michal škola",["X"]] +["3","16:14","Závodu míru",["X"]] +["1","16:21","Březová, aut. st.",["X"]] +["7","16:29","Březová, aut.st.",["X"]] +["3","16:35","Závodu míru",["X"]] +["6","16:44","Sídl. Michal škola",["X","42"]] +["3","16:48","Závodu míru",["X"]] +["4","16:51","Závodu míru",["X","42"]] +["7","16:59","Březová, aut.st.",["X"]] +["3","17:09","Jezero Michal",["X"]] +["3","17:18","Závodu míru",["X"]] +["3","17:34","Závodu míru",["X"]] +["1","17:38","Březová, aut. st.",["X"]] +["3","17:57","Závodu míru",["X"]] +["3","18:14","Závodu míru",["X"]] +["3","18:21","Závodu míru",["X"]] +["1","18:26","Březová, aut. st.",["X"]] +["3","18:34","Závodu míru",["X"]] +["3","18:54","Závodu míru",["X"]] +["1","19:08","Březová, aut. st.",["X"]] +["3","19:19","Závodu míru",["X","31"]] +["3","19:34","Závodu míru",["X","31"]] +["1","19:53","Březová, aut. st.",["X","31"]] +["3","19:54","Závodu míru",["X","31"]] +["3","20:19","Závodu míru",["X","31"]] +["3","20:49","Závodu míru",["X","31"]] +["1","20:55","Březová, aut. st.",["X","31"]] +["3","21:09","Závodu míru",["X","31"]] +["3","21:24","Stará Ovčárna",["X","31"]] +["1","21:38","Březová, aut. st.",["X","31"]] +["3","22:12","Stará Ovčárna",["X","31"]] +["1","22:28","Březová, aut. st.",["X","31"]] +["3","22:41","Závodu míru",["X","31"]] + +["20.6","Patek"] +["3","04:29","Závodu míru",["X"]] +["1","04:50","Březová, aut. st.",["X"]] +["3","04:52","Závodu míru",["X"]] +["3","05:02","Závodu míru",["X"]] +["4","05:05","Závodu míru",["X"]] +["6","05:07","Sídl. Michal škola",["X","42"]] +["6","05:07","Závodu míru",["X","32"]] +["3","05:09","Závodu míru",["X","42"]] +["3","05:22","Závodu míru",["X"]] +["1","05:23","Březová, aut. st.",["X"]] +["6","05:34","Sídl. Michal škola",["X","42"]] +["4","05:35","Stará Ovčárna",["X"]] +["3","05:36","Sídl. Michal škola",["X","42"]] +["3","05:38","Sídliště Michal",["X","32"]] +["1","05:51","Březová, aut. st.",["X"]] +["3","05:58","Závodu míru",["X"]] +["6","06:04","Sídl. Michal škola",["X","42"]] +["1","06:13","Březová, aut. st.",["X"]] +["3","06:16","Závodu míru",["X","42"]] +["3","06:19","Závodu míru",["X","32"]] +["3","06:24","Sídliště Michal",["X"]] +["4","06:31","Závodu míru",["X","42"]] +["6","06:32","Sídl. Michal škola",["X","32"]] +["3","06:34","Závodu míru",["X"]] +["6","06:34","Sídl. Michal škola",["X","42"]] +["1","06:46","Březová, aut. st.",["X"]] +["33","06:49","Sídl. Michal škola",["X","42"]] +["3","06:56","Závodu míru",["X","32"]] +["3","06:56","Závodu míru",["X","42"]] +["3","07:04","Závodu míru",["X"]] +["1","07:05","Březová, aut. st.",["X"]] +["3","07:14","Závodu míru",["X"]] +["6","07:23","Sídl. Michal škola",["X","42"]] +["3","07:27","Sídliště Michal",["X","32"]] +["2","07:31","Sídliště Michal",["X","42"]] +["3","07:34","Závodu míru",["X","42"]] +["4","07:34","Závodu míru",["X"]] +["1","07:35","Březová, aut. st.",["X"]] +["3","07:45","Sídliště Michal",["X"]] +["33","07:54","Sídl. Michal škola",["X","42"]] +["1","07:55","Březová, aut. st.",["X"]] +["3","07:58","Závodu míru",["X","42"]] +["3","08:10","Závodu míru",["X","32"]] +["3","08:15","Závodu míru",["X","42"]] +["1","08:18","Březová, aut. st.",["X"]] +["33","08:29","Sídl. Michal škola",["X"]] +["3","08:34","Závodu míru",["X"]] +["3","08:50","Stará Ovčárna",["X"]] +["33","08:54","Sídl. Michal škola",["X"]] +["3","09:04","Závodu míru",["X"]] +["1","09:09","Březová, aut. st.",["X"]] +["3","09:24","Závodu míru",["X"]] +["33","09:34","Sídl. Michal škola",["X"]] +["4","09:41","Sídliště Michal",["X"]] +["3","09:45","Závodu míru",["X"]] +["1","09:58","Březová, aut. st.",["X"]] +["3","09:59","Jezero Michal",["X"]] +["7","10:14","Březová, aut.st.",["X"]] +["33","10:24","Sídl. Michal škola",["X"]] +["3","10:40","Závodu míru",["X"]] +["1","10:55","Březová, aut. st.",["X"]] +["3","10:55","Závodu míru",["X"]] +["3","11:17","Závodu míru",["X"]] +["33","11:29","Sídl. Michal škola",["X"]] +["3","11:44","Závodu míru",["X"]] +["1","11:46","Březová, aut. st.",["X"]] +["33","11:56","Sídl. Michal škola",["X"]] +["3","12:05","Závodu míru",["X"]] +["3","12:24","Jezero Michal",["X"]] +["1","12:33","Březová, aut. st.",["X"]] +["3","12:44","Závodu míru",["X"]] +["3","12:59","Závodu míru",["X"]] +["6","12:59","Sídl. Michal škola",["X","42"]] +["33","13:04","Sídl. Michal škola",["X"]] +["1","13:06","Březová, aut. st.",["X"]] +["3","13:15","Závodu míru",["X"]] +["2","13:17","Sídliště Michal",["X"]] +["1","13:22","Březová, aut. st.",["X"]] +["3","13:24","Stará Ovčárna",["X"]] +["33","13:39","Sídl. Michal škola",["X"]] +["1","13:48","Březová, aut. st.",["X"]] +["33","14:04","Sídl. Michal škola",["X"]] +["6","14:04","Sídl. Michal škola",["X"]] +["4","14:06","Stará Ovčárna",["X"]] +["3","14:09","Závodu míru",["X"]] +["1","14:10","Březová, aut. st.",["X"]] +["3","14:21","Závodu míru",["X"]] +["1","14:34","Březová, aut. st.",["X"]] +["6","14:34","Sídl. Michal škola",["X"]] +["4","14:42","Závodu míru",["X"]] +["3","14:43","Závodu míru",["X"]] +["33","14:46","Sídl. Michal škola",["X"]] +["3","14:52","Závodu míru",["X"]] +["1","15:09","Březová, aut. st.",["X"]] +["33","15:09","Sídl. Michal škola",["X"]] +["3","15:13","Závodu míru",["X"]] +["6","15:14","Sídl. Michal škola",["X"]] +["3","15:23","Sokolov, Hrušková",["X","42"]] +["3","15:30","Závodu míru",["X"]] +["1","15:31","Březová, aut. st.",["X"]] +["33","15:39","Sídl. Michal škola",["X"]] +["3","15:39","Jezero Michal",["X"]] +["7","15:54","Březová, aut.st.",["X"]] +["3","16:00","Sídl. Michal škola",["X","42"]] +["4","16:06","Závodu míru",["X"]] +["33","16:14","Sídl. Michal škola",["X"]] +["3","16:14","Závodu míru",["X"]] +["1","16:21","Březová, aut. st.",["X"]] +["7","16:29","Březová, aut.st.",["X"]] +["3","16:35","Závodu míru",["X"]] +["6","16:44","Sídl. Michal škola",["X","42"]] +["3","16:48","Závodu míru",["X"]] +["4","16:51","Závodu míru",["X","42"]] +["7","16:59","Březová, aut.st.",["X"]] +["3","17:09","Jezero Michal",["X"]] +["3","17:18","Závodu míru",["X"]] +["3","17:34","Závodu míru",["X"]] +["1","17:38","Březová, aut. st.",["X"]] +["3","17:57","Závodu míru",["X"]] +["3","18:14","Závodu míru",["X"]] +["3","18:21","Závodu míru",["X"]] +["1","18:26","Březová, aut. st.",["X"]] +["3","18:34","Závodu míru",["X"]] +["3","18:54","Závodu míru",["X"]] +["1","19:08","Březová, aut. st.",["X"]] +["3","19:19","Závodu míru",["X","31"]] +["3","19:34","Závodu míru",["X","31"]] +["1","19:53","Březová, aut. st.",["X","31"]] +["3","19:54","Závodu míru",["X","31"]] +["3","20:19","Závodu míru",["X","31"]] +["3","20:49","Závodu míru",["X","31"]] +["1","20:55","Březová, aut. st.",["X","31"]] +["3","21:09","Závodu míru",["X","31"]] +["3","21:24","Stará Ovčárna",["X","31"]] +["1","21:38","Březová, aut. st.",["X","31"]] +["3","22:12","Stará Ovčárna",["X","31"]] +["1","22:28","Březová, aut. st.",["X","31"]] +["3","22:41","Závodu míru",["X","31"]] + +["20.6","Patek"] +["3","04:29","Závodu míru",["X"]] +["1","04:50","Březová, aut. st.",["X"]] +["3","04:52","Závodu míru",["X"]] +["3","05:02","Závodu míru",["X"]] +["4","05:05","Závodu míru",["X"]] +["6","05:07","Sídl. Michal škola",["X","42"]] +["6","05:07","Závodu míru",["X","32"]] +["3","05:09","Závodu míru",["X","42"]] +["3","05:22","Závodu míru",["X"]] +["1","05:23","Březová, aut. st.",["X"]] +["6","05:34","Sídl. Michal škola",["X","42"]] +["4","05:35","Stará Ovčárna",["X"]] +["3","05:36","Sídl. Michal škola",["X","42"]] +["3","05:38","Sídliště Michal",["X","32"]] +["1","05:51","Březová, aut. st.",["X"]] +["3","05:58","Závodu míru",["X"]] +["6","06:04","Sídl. Michal škola",["X","42"]] +["1","06:13","Březová, aut. st.",["X"]] +["3","06:16","Závodu míru",["X","42"]] +["3","06:19","Závodu míru",["X","32"]] +["3","06:24","Sídliště Michal",["X"]] +["4","06:31","Závodu míru",["X","42"]] +["6","06:32","Sídl. Michal škola",["X","32"]] +["3","06:34","Závodu míru",["X"]] +["6","06:34","Sídl. Michal škola",["X","42"]] +["1","06:46","Březová, aut. st.",["X"]] +["33","06:49","Sídl. Michal škola",["X","42"]] +["3","06:56","Závodu míru",["X","32"]] +["3","06:56","Závodu míru",["X","42"]] +["3","07:04","Závodu míru",["X"]] +["1","07:05","Březová, aut. st.",["X"]] +["3","07:14","Závodu míru",["X"]] +["6","07:23","Sídl. Michal škola",["X","42"]] +["3","07:27","Sídliště Michal",["X","32"]] +["2","07:31","Sídliště Michal",["X","42"]] +["3","07:34","Závodu míru",["X","42"]] +["4","07:34","Závodu míru",["X"]] +["1","07:35","Březová, aut. st.",["X"]] +["3","07:45","Sídliště Michal",["X"]] +["33","07:54","Sídl. Michal škola",["X","42"]] +["1","07:55","Březová, aut. st.",["X"]] +["3","07:58","Závodu míru",["X","42"]] +["3","08:10","Závodu míru",["X","32"]] +["3","08:15","Závodu míru",["X","42"]] +["1","08:18","Březová, aut. st.",["X"]] +["33","08:29","Sídl. Michal škola",["X"]] +["3","08:34","Závodu míru",["X"]] +["3","08:50","Stará Ovčárna",["X"]] +["33","08:54","Sídl. Michal škola",["X"]] +["3","09:04","Závodu míru",["X"]] +["1","09:09","Březová, aut. st.",["X"]] +["3","09:24","Závodu míru",["X"]] +["33","09:34","Sídl. Michal škola",["X"]] +["4","09:41","Sídliště Michal",["X"]] +["3","09:45","Závodu míru",["X"]] +["1","09:58","Březová, aut. st.",["X"]] +["3","09:59","Jezero Michal",["X"]] +["7","10:14","Březová, aut.st.",["X"]] +["33","10:24","Sídl. Michal škola",["X"]] +["3","10:40","Závodu míru",["X"]] +["1","10:55","Březová, aut. st.",["X"]] +["3","10:55","Závodu míru",["X"]] +["3","11:17","Závodu míru",["X"]] +["33","11:29","Sídl. Michal škola",["X"]] +["3","11:44","Závodu míru",["X"]] +["1","11:46","Březová, aut. st.",["X"]] +["33","11:56","Sídl. Michal škola",["X"]] +["3","12:05","Závodu míru",["X"]] +["3","12:24","Jezero Michal",["X"]] +["1","12:33","Březová, aut. st.",["X"]] +["3","12:44","Závodu míru",["X"]] +["3","12:59","Závodu míru",["X"]] +["6","12:59","Sídl. Michal škola",["X","42"]] +["33","13:04","Sídl. Michal škola",["X"]] +["1","13:06","Březová, aut. st.",["X"]] +["3","13:15","Závodu míru",["X"]] +["2","13:17","Sídliště Michal",["X"]] +["1","13:22","Březová, aut. st.",["X"]] +["3","13:24","Stará Ovčárna",["X"]] +["33","13:39","Sídl. Michal škola",["X"]] +["1","13:48","Březová, aut. st.",["X"]] +["33","14:04","Sídl. Michal škola",["X"]] +["6","14:04","Sídl. Michal škola",["X"]] +["4","14:06","Stará Ovčárna",["X"]] +["3","14:09","Závodu míru",["X"]] +["1","14:10","Březová, aut. st.",["X"]] +["3","14:21","Závodu míru",["X"]] +["1","14:34","Březová, aut. st.",["X"]] +["6","14:34","Sídl. Michal škola",["X"]] +["4","14:42","Závodu míru",["X"]] +["3","14:43","Závodu míru",["X"]] +["33","14:46","Sídl. Michal škola",["X"]] +["3","14:52","Závodu míru",["X"]] +["1","15:09","Březová, aut. st.",["X"]] +["33","15:09","Sídl. Michal škola",["X"]] +["3","15:13","Závodu míru",["X"]] +["6","15:14","Sídl. Michal škola",["X"]] +["3","15:23","Sokolov, Hrušková",["X","42"]] +["3","15:30","Závodu míru",["X"]] +["1","15:31","Březová, aut. st.",["X"]] +["33","15:39","Sídl. Michal škola",["X"]] +["3","15:39","Jezero Michal",["X"]] +["7","15:54","Březová, aut.st.",["X"]] +["3","16:00","Sídl. Michal škola",["X","42"]] +["4","16:06","Závodu míru",["X"]] +["33","16:14","Sídl. Michal škola",["X"]] +["3","16:14","Závodu míru",["X"]] +["1","16:21","Březová, aut. st.",["X"]] +["7","16:29","Březová, aut.st.",["X"]] +["3","16:35","Závodu míru",["X"]] +["6","16:44","Sídl. Michal škola",["X","42"]] +["3","16:48","Závodu míru",["X"]] +["4","16:51","Závodu míru",["X","42"]] +["7","16:59","Březová, aut.st.",["X"]] +["3","17:09","Jezero Michal",["X"]] +["3","17:18","Závodu míru",["X"]] +["3","17:34","Závodu míru",["X"]] +["1","17:38","Březová, aut. st.",["X"]] +["3","17:57","Závodu míru",["X"]] +["3","18:14","Závodu míru",["X"]] +["3","18:21","Závodu míru",["X"]] +["1","18:26","Březová, aut. st.",["X"]] +["3","18:34","Závodu míru",["X"]] +["3","18:54","Závodu míru",["X"]] +["1","19:08","Březová, aut. st.",["X"]] +["3","19:19","Závodu míru",["X","31"]] +["3","19:34","Závodu míru",["X","31"]] +["1","19:53","Březová, aut. st.",["X","31"]] +["3","19:54","Závodu míru",["X","31"]] +["3","20:19","Závodu míru",["X","31"]] +["3","20:49","Závodu míru",["X","31"]] +["1","20:55","Březová, aut. st.",["X","31"]] +["3","21:09","Závodu míru",["X","31"]] +["3","21:24","Stará Ovčárna",["X","31"]] +["1","21:38","Březová, aut. st.",["X","31"]] +["3","22:12","Stará Ovčárna",["X","31"]] +["1","22:28","Březová, aut. st.",["X","31"]] +["3","22:41","Závodu míru",["X","31"]] + +["21.6","Sobota"] +["3","04:56","Závodu míru",["6+","25"]] +["1","05:47","Březová, aut. st.",["6+","25"]] +["3","05:57","Závodu míru",["6+","25"]] +["3","06:24","Závodu míru",["6+","25"]] +["3","06:56","Závodu míru",["6+"]] +["1","06:57","Březová, aut. st.",["6+","25"]] +["3","07:19","Závodu míru",["6+"]] +["3","07:51","Závodu míru",["6+"]] +["1","07:57","Březová, aut. st.",["6+"]] +["3","08:15","Závodu míru",["6+"]] +["3","08:51","Závodu míru",["6+"]] +["1","08:57","Březová, aut. st.",["6+"]] +["3","09:20","Závodu míru",["6+"]] +["1","09:44","Březová, aut. st.",["6+"]] +["3","09:51","Závodu míru",["6+"]] +["3","10:19","Závodu míru",["6+"]] +["1","10:57","Březová, aut. st.",["6+"]] +["3","11:02","Závodu míru",["6+"]] +["3","11:29","Závodu míru",["6+"]] +["1","11:49","Březová, aut. st.",["6+"]] +["3","11:51","Závodu míru",["6+"]] +["3","12:19","Závodu míru",["6+"]] +["3","12:51","Závodu míru",["6+"]] +["1","12:57","Březová, aut. st.",["6+"]] +["3","13:28","Závodu míru",["6+"]] +["3","13:51","Závodu míru",["6+"]] +["1","13:57","Březová, aut. st.",["6+"]] +["3","14:19","Závodu míru",["6+"]] +["1","14:49","Březová, aut. st.",["6+"]] +["3","14:51","Závodu míru",["6+"]] +["3","15:19","Závodu míru",["6+"]] +["3","15:51","Závodu míru",["6+"]] +["1","15:57","Březová, aut. st.",["6+"]] +["3","16:28","Závodu míru",["6+"]] +["3","16:53","Závodu míru",["6+"]] +["1","16:57","Březová, aut. st.",["6+"]] +["3","17:14","Závodu míru",["6+"]] +["3","17:51","Závodu míru",["6+"]] +["3","18:21","Stará Ovčárna",["6+"]] +["1","18:24","Březová, aut. st.",["6+"]] +["3","18:51","Závodu míru",["6+"]] +["3","19:14","Závodu míru",["6+","24"]] +["3","19:54","Závodu míru",["6+","24"]] +["1","19:57","Březová, aut. st.",["6+","24"]] +["1","20:28","Březová, aut. st.",["6+","24"]] +["3","20:49","Závodu míru",["6+","24"]] +["1","21:23","Březová, aut. st.",["6+","24"]] +["3","21:24","Závodu míru",["6+","24"]] +["3","22:04","Závodu míru",["6+","24"]] + +["21.6","Sobota"] +["3","04:56","Závodu míru",["6+","25"]] +["1","05:47","Březová, aut. st.",["6+","25"]] +["3","05:57","Závodu míru",["6+","25"]] +["3","06:24","Závodu míru",["6+","25"]] +["3","06:56","Závodu míru",["6+"]] +["1","06:57","Březová, aut. st.",["6+","25"]] +["3","07:19","Závodu míru",["6+"]] +["3","07:51","Závodu míru",["6+"]] +["1","07:57","Březová, aut. st.",["6+"]] +["3","08:15","Závodu míru",["6+"]] +["3","08:51","Závodu míru",["6+"]] +["1","08:57","Březová, aut. st.",["6+"]] +["3","09:20","Závodu míru",["6+"]] +["1","09:44","Březová, aut. st.",["6+"]] +["3","09:51","Závodu míru",["6+"]] +["3","10:19","Závodu míru",["6+"]] +["1","10:57","Březová, aut. st.",["6+"]] +["3","11:02","Závodu míru",["6+"]] +["3","11:29","Závodu míru",["6+"]] +["1","11:49","Březová, aut. st.",["6+"]] +["3","11:51","Závodu míru",["6+"]] +["3","12:19","Závodu míru",["6+"]] +["3","12:51","Závodu míru",["6+"]] +["1","12:57","Březová, aut. st.",["6+"]] +["3","13:28","Závodu míru",["6+"]] +["3","13:51","Závodu míru",["6+"]] +["1","13:57","Březová, aut. st.",["6+"]] +["3","14:19","Závodu míru",["6+"]] +["1","14:49","Březová, aut. st.",["6+"]] +["3","14:51","Závodu míru",["6+"]] +["3","15:19","Závodu míru",["6+"]] +["3","15:51","Závodu míru",["6+"]] +["1","15:57","Březová, aut. st.",["6+"]] +["3","16:28","Závodu míru",["6+"]] +["3","16:53","Závodu míru",["6+"]] +["1","16:57","Březová, aut. st.",["6+"]] +["3","17:14","Závodu míru",["6+"]] +["3","17:51","Závodu míru",["6+"]] +["3","18:21","Stará Ovčárna",["6+"]] +["1","18:24","Březová, aut. st.",["6+"]] +["3","18:51","Závodu míru",["6+"]] +["3","19:14","Závodu míru",["6+","24"]] +["3","19:54","Závodu míru",["6+","24"]] +["1","19:57","Březová, aut. st.",["6+","24"]] +["1","20:28","Březová, aut. st.",["6+","24"]] +["3","20:49","Závodu míru",["6+","24"]] +["1","21:23","Březová, aut. st.",["6+","24"]] +["3","21:24","Závodu míru",["6+","24"]] +["3","22:04","Závodu míru",["6+","24"]] + +["22.6","Nedele"] +["3","04:56","Závodu míru",["6+","25"]] +["1","05:47","Březová, aut. st.",["6+","25"]] +["3","05:57","Závodu míru",["6+","25"]] +["3","06:24","Závodu míru",["6+","25"]] +["3","06:56","Závodu míru",["6+"]] +["1","06:57","Březová, aut. st.",["6+","25"]] +["3","07:19","Závodu míru",["6+"]] +["3","07:51","Závodu míru",["6+"]] +["1","07:57","Březová, aut. st.",["6+"]] +["3","08:15","Závodu míru",["6+"]] +["3","08:51","Závodu míru",["6+"]] +["1","08:57","Březová, aut. st.",["6+"]] +["3","09:20","Závodu míru",["6+"]] +["1","09:44","Březová, aut. st.",["6+"]] +["3","09:51","Závodu míru",["6+"]] +["3","10:19","Závodu míru",["6+"]] +["1","10:57","Březová, aut. st.",["6+"]] +["3","11:02","Závodu míru",["6+"]] +["3","11:29","Závodu míru",["6+"]] +["1","11:49","Březová, aut. st.",["6+"]] +["3","11:51","Závodu míru",["6+"]] +["3","12:19","Závodu míru",["6+"]] +["3","12:51","Závodu míru",["6+"]] +["1","12:57","Březová, aut. st.",["6+"]] +["3","13:28","Závodu míru",["6+"]] +["3","13:51","Závodu míru",["6+"]] +["1","13:57","Březová, aut. st.",["6+"]] +["3","14:19","Závodu míru",["6+"]] +["1","14:49","Březová, aut. st.",["6+"]] +["3","14:51","Závodu míru",["6+"]] +["3","15:19","Závodu míru",["6+"]] +["3","15:51","Závodu míru",["6+"]] +["1","15:57","Březová, aut. st.",["6+"]] +["3","16:28","Závodu míru",["6+"]] +["3","16:53","Závodu míru",["6+"]] +["1","16:57","Březová, aut. st.",["6+"]] +["3","17:14","Závodu míru",["6+"]] +["3","17:51","Závodu míru",["6+"]] +["3","18:21","Stará Ovčárna",["6+"]] +["1","18:24","Březová, aut. st.",["6+"]] +["3","18:51","Závodu míru",["6+"]] +["3","19:14","Závodu míru",["6+","24"]] +["3","19:54","Závodu míru",["6+","24"]] +["1","19:57","Březová, aut. st.",["6+","24"]] +["1","20:28","Březová, aut. st.",["6+","24"]] +["3","20:49","Závodu míru",["6+","24"]] +["1","21:23","Březová, aut. st.",["6+","24"]] +["3","21:24","Závodu míru",["6+","24"]] +["3","22:04","Závodu míru",["6+","24"]] + +["22.6","Nedele"] +["3","04:56","Závodu míru",["6+","25"]] +["1","05:47","Březová, aut. st.",["6+","25"]] +["3","05:57","Závodu míru",["6+","25"]] +["3","06:24","Závodu míru",["6+","25"]] +["3","06:56","Závodu míru",["6+"]] +["1","06:57","Březová, aut. st.",["6+","25"]] +["3","07:19","Závodu míru",["6+"]] +["3","07:51","Závodu míru",["6+"]] +["1","07:57","Březová, aut. st.",["6+"]] +["3","08:15","Závodu míru",["6+"]] +["3","08:51","Závodu míru",["6+"]] +["1","08:57","Březová, aut. st.",["6+"]] +["3","09:20","Závodu míru",["6+"]] +["1","09:44","Březová, aut. st.",["6+"]] +["3","09:51","Závodu míru",["6+"]] +["3","10:19","Závodu míru",["6+"]] +["1","10:57","Březová, aut. st.",["6+"]] +["3","11:02","Závodu míru",["6+"]] +["3","11:29","Závodu míru",["6+"]] +["1","11:49","Březová, aut. st.",["6+"]] +["3","11:51","Závodu míru",["6+"]] +["3","12:19","Závodu míru",["6+"]] +["3","12:51","Závodu míru",["6+"]] +["1","12:57","Březová, aut. st.",["6+"]] +["3","13:28","Závodu míru",["6+"]] +["3","13:51","Závodu míru",["6+"]] +["1","13:57","Březová, aut. st.",["6+"]] +["3","14:19","Závodu míru",["6+"]] +["1","14:49","Březová, aut. st.",["6+"]] +["3","14:51","Závodu míru",["6+"]] +["3","15:19","Závodu míru",["6+"]] +["3","15:51","Závodu míru",["6+"]] +["1","15:57","Březová, aut. st.",["6+"]] +["3","16:28","Závodu míru",["6+"]] +["3","16:53","Závodu míru",["6+"]] +["1","16:57","Březová, aut. st.",["6+"]] +["3","17:14","Závodu míru",["6+"]] +["3","17:51","Závodu míru",["6+"]] +["3","18:21","Stará Ovčárna",["6+"]] +["1","18:24","Březová, aut. st.",["6+"]] +["3","18:51","Závodu míru",["6+"]] +["3","19:14","Závodu míru",["6+","24"]] +["3","19:54","Závodu míru",["6+","24"]] +["1","19:57","Březová, aut. st.",["6+","24"]] +["1","20:28","Březová, aut. st.",["6+","24"]] +["3","20:49","Závodu míru",["6+","24"]] +["1","21:23","Březová, aut. st.",["6+","24"]] +["3","21:24","Závodu míru",["6+","24"]] +["3","22:04","Závodu míru",["6+","24"]] + +["23.6","Pondeli"] +["3","04:29","Závodu míru",["X"]] +["1","04:50","Březová, aut. st.",["X"]] +["3","04:52","Závodu míru",["X"]] +["3","05:02","Závodu míru",["X"]] +["4","05:05","Závodu míru",["X"]] +["6","05:07","Sídl. Michal škola",["X","42"]] +["6","05:07","Závodu míru",["X","32"]] +["3","05:09","Závodu míru",["X","42"]] +["3","05:22","Závodu míru",["X"]] +["1","05:23","Březová, aut. st.",["X"]] +["6","05:34","Sídl. Michal škola",["X","42"]] +["4","05:35","Stará Ovčárna",["X"]] +["3","05:36","Sídl. Michal škola",["X","42"]] +["3","05:38","Sídliště Michal",["X","32"]] +["1","05:51","Březová, aut. st.",["X"]] +["3","05:58","Závodu míru",["X"]] +["6","06:04","Sídl. Michal škola",["X","42"]] +["1","06:13","Březová, aut. st.",["X"]] +["3","06:16","Závodu míru",["X","42"]] +["3","06:19","Závodu míru",["X","32"]] +["3","06:24","Sídliště Michal",["X"]] +["4","06:31","Závodu míru",["X","42"]] +["6","06:32","Sídl. Michal škola",["X","32"]] +["3","06:34","Závodu míru",["X"]] +["6","06:34","Sídl. Michal škola",["X","42"]] +["1","06:46","Březová, aut. st.",["X"]] +["33","06:49","Sídl. Michal škola",["X","42"]] +["3","06:56","Závodu míru",["X","32"]] +["3","06:56","Závodu míru",["X","42"]] +["3","07:04","Závodu míru",["X"]] +["1","07:05","Březová, aut. st.",["X"]] +["3","07:14","Závodu míru",["X"]] +["6","07:23","Sídl. Michal škola",["X","42"]] +["3","07:27","Sídliště Michal",["X","32"]] +["2","07:31","Sídliště Michal",["X","42"]] +["3","07:34","Závodu míru",["X","42"]] +["4","07:34","Závodu míru",["X"]] +["1","07:35","Březová, aut. st.",["X"]] +["3","07:45","Sídliště Michal",["X"]] +["33","07:54","Sídl. Michal škola",["X","42"]] +["1","07:55","Březová, aut. st.",["X"]] +["3","07:58","Závodu míru",["X","42"]] +["3","08:10","Závodu míru",["X","32"]] +["3","08:15","Závodu míru",["X","42"]] +["1","08:18","Březová, aut. st.",["X"]] +["33","08:29","Sídl. Michal škola",["X"]] +["3","08:34","Závodu míru",["X"]] +["3","08:50","Stará Ovčárna",["X"]] +["33","08:54","Sídl. Michal škola",["X"]] +["3","09:04","Závodu míru",["X"]] +["1","09:09","Březová, aut. st.",["X"]] +["3","09:24","Závodu míru",["X"]] +["33","09:34","Sídl. Michal škola",["X"]] +["4","09:41","Sídliště Michal",["X"]] +["3","09:45","Závodu míru",["X"]] +["1","09:58","Březová, aut. st.",["X"]] +["3","09:59","Jezero Michal",["X"]] +["7","10:14","Březová, aut.st.",["X"]] +["33","10:24","Sídl. Michal škola",["X"]] +["3","10:40","Závodu míru",["X"]] +["1","10:55","Březová, aut. st.",["X"]] +["3","10:55","Závodu míru",["X"]] +["3","11:17","Závodu míru",["X"]] +["33","11:29","Sídl. Michal škola",["X"]] +["3","11:44","Závodu míru",["X"]] +["1","11:46","Březová, aut. st.",["X"]] +["33","11:56","Sídl. Michal škola",["X"]] +["3","12:05","Závodu míru",["X"]] +["3","12:24","Jezero Michal",["X"]] +["1","12:33","Březová, aut. st.",["X"]] +["3","12:44","Závodu míru",["X"]] +["3","12:59","Závodu míru",["X"]] +["6","12:59","Sídl. Michal škola",["X","42"]] +["33","13:04","Sídl. Michal škola",["X"]] +["1","13:06","Březová, aut. st.",["X"]] +["3","13:15","Závodu míru",["X"]] +["2","13:17","Sídliště Michal",["X"]] +["1","13:22","Březová, aut. st.",["X"]] +["3","13:24","Stará Ovčárna",["X"]] +["33","13:39","Sídl. Michal škola",["X"]] +["1","13:48","Březová, aut. st.",["X"]] +["33","14:04","Sídl. Michal škola",["X"]] +["6","14:04","Sídl. Michal škola",["X"]] +["4","14:06","Stará Ovčárna",["X"]] +["3","14:09","Závodu míru",["X"]] +["1","14:10","Březová, aut. st.",["X"]] +["3","14:21","Závodu míru",["X"]] +["1","14:34","Březová, aut. st.",["X"]] +["6","14:34","Sídl. Michal škola",["X"]] +["4","14:42","Závodu míru",["X"]] +["3","14:43","Závodu míru",["X"]] +["33","14:46","Sídl. Michal škola",["X"]] +["3","14:52","Závodu míru",["X"]] +["1","15:09","Březová, aut. st.",["X"]] +["33","15:09","Sídl. Michal škola",["X"]] +["3","15:13","Závodu míru",["X"]] +["6","15:14","Sídl. Michal škola",["X"]] +["3","15:23","Sokolov, Hrušková",["X","42"]] +["3","15:30","Závodu míru",["X"]] +["1","15:31","Březová, aut. st.",["X"]] +["33","15:39","Sídl. Michal škola",["X"]] +["3","15:39","Jezero Michal",["X"]] +["7","15:54","Březová, aut.st.",["X"]] +["3","16:00","Sídl. Michal škola",["X","42"]] +["4","16:06","Závodu míru",["X"]] +["33","16:14","Sídl. Michal škola",["X"]] +["3","16:14","Závodu míru",["X"]] +["1","16:21","Březová, aut. st.",["X"]] +["7","16:29","Březová, aut.st.",["X"]] +["3","16:35","Závodu míru",["X"]] +["6","16:44","Sídl. Michal škola",["X","42"]] +["3","16:48","Závodu míru",["X"]] +["4","16:51","Závodu míru",["X","42"]] +["7","16:59","Březová, aut.st.",["X"]] +["3","17:09","Jezero Michal",["X"]] +["3","17:18","Závodu míru",["X"]] +["3","17:34","Závodu míru",["X"]] +["1","17:38","Březová, aut. st.",["X"]] +["3","17:57","Závodu míru",["X"]] +["3","18:14","Závodu míru",["X"]] +["3","18:21","Závodu míru",["X"]] +["1","18:26","Březová, aut. st.",["X"]] +["3","18:34","Závodu míru",["X"]] +["3","18:54","Závodu míru",["X"]] +["1","19:08","Březová, aut. st.",["X"]] +["3","19:19","Závodu míru",["X","31"]] +["3","19:34","Závodu míru",["X","31"]] +["1","19:53","Březová, aut. st.",["X","31"]] +["3","19:54","Závodu míru",["X","31"]] +["3","20:19","Závodu míru",["X","31"]] +["3","20:49","Závodu míru",["X","31"]] +["1","20:55","Březová, aut. st.",["X","31"]] +["3","21:09","Závodu míru",["X","31"]] +["3","21:24","Stará Ovčárna",["X","31"]] +["1","21:38","Březová, aut. st.",["X","31"]] +["3","22:12","Stará Ovčárna",["X","31"]] +["1","22:28","Březová, aut. st.",["X","31"]] +["3","22:41","Závodu míru",["X","31"]] + +["23.6","Pondeli"] +["3","04:29","Závodu míru",["X"]] +["1","04:50","Březová, aut. st.",["X"]] +["3","04:52","Závodu míru",["X"]] +["3","05:02","Závodu míru",["X"]] +["4","05:05","Závodu míru",["X"]] +["6","05:07","Sídl. Michal škola",["X","42"]] +["6","05:07","Závodu míru",["X","32"]] +["3","05:09","Závodu míru",["X","42"]] +["3","05:22","Závodu míru",["X"]] +["1","05:23","Březová, aut. st.",["X"]] +["6","05:34","Sídl. Michal škola",["X","42"]] +["4","05:35","Stará Ovčárna",["X"]] +["3","05:36","Sídl. Michal škola",["X","42"]] +["3","05:38","Sídliště Michal",["X","32"]] +["1","05:51","Březová, aut. st.",["X"]] +["3","05:58","Závodu míru",["X"]] +["6","06:04","Sídl. Michal škola",["X","42"]] +["1","06:13","Březová, aut. st.",["X"]] +["3","06:16","Závodu míru",["X","42"]] +["3","06:19","Závodu míru",["X","32"]] +["3","06:24","Sídliště Michal",["X"]] +["4","06:31","Závodu míru",["X","42"]] +["6","06:32","Sídl. Michal škola",["X","32"]] +["3","06:34","Závodu míru",["X"]] +["6","06:34","Sídl. Michal škola",["X","42"]] +["1","06:46","Březová, aut. st.",["X"]] +["33","06:49","Sídl. Michal škola",["X","42"]] +["3","06:56","Závodu míru",["X","32"]] +["3","06:56","Závodu míru",["X","42"]] +["3","07:04","Závodu míru",["X"]] +["1","07:05","Březová, aut. st.",["X"]] +["3","07:14","Závodu míru",["X"]] +["6","07:23","Sídl. Michal škola",["X","42"]] +["3","07:27","Sídliště Michal",["X","32"]] +["2","07:31","Sídliště Michal",["X","42"]] +["3","07:34","Závodu míru",["X","42"]] +["4","07:34","Závodu míru",["X"]] +["1","07:35","Březová, aut. st.",["X"]] +["3","07:45","Sídliště Michal",["X"]] +["33","07:54","Sídl. Michal škola",["X","42"]] +["1","07:55","Březová, aut. st.",["X"]] +["3","07:58","Závodu míru",["X","42"]] +["3","08:10","Závodu míru",["X","32"]] +["3","08:15","Závodu míru",["X","42"]] +["1","08:18","Březová, aut. st.",["X"]] +["33","08:29","Sídl. Michal škola",["X"]] +["3","08:34","Závodu míru",["X"]] +["3","08:50","Stará Ovčárna",["X"]] +["33","08:54","Sídl. Michal škola",["X"]] +["3","09:04","Závodu míru",["X"]] +["1","09:09","Březová, aut. st.",["X"]] +["3","09:24","Závodu míru",["X"]] +["33","09:34","Sídl. Michal škola",["X"]] +["4","09:41","Sídliště Michal",["X"]] +["3","09:45","Závodu míru",["X"]] +["1","09:58","Březová, aut. st.",["X"]] +["3","09:59","Jezero Michal",["X"]] +["7","10:14","Březová, aut.st.",["X"]] +["33","10:24","Sídl. Michal škola",["X"]] +["3","10:40","Závodu míru",["X"]] +["1","10:55","Březová, aut. st.",["X"]] +["3","10:55","Závodu míru",["X"]] +["3","11:17","Závodu míru",["X"]] +["33","11:29","Sídl. Michal škola",["X"]] +["3","11:44","Závodu míru",["X"]] +["1","11:46","Březová, aut. st.",["X"]] +["33","11:56","Sídl. Michal škola",["X"]] +["3","12:05","Závodu míru",["X"]] +["3","12:24","Jezero Michal",["X"]] +["1","12:33","Březová, aut. st.",["X"]] +["3","12:44","Závodu míru",["X"]] +["3","12:59","Závodu míru",["X"]] +["6","12:59","Sídl. Michal škola",["X","42"]] +["33","13:04","Sídl. Michal škola",["X"]] +["1","13:06","Březová, aut. st.",["X"]] +["3","13:15","Závodu míru",["X"]] +["2","13:17","Sídliště Michal",["X"]] +["1","13:22","Březová, aut. st.",["X"]] +["3","13:24","Stará Ovčárna",["X"]] +["33","13:39","Sídl. Michal škola",["X"]] +["1","13:48","Březová, aut. st.",["X"]] +["33","14:04","Sídl. Michal škola",["X"]] +["6","14:04","Sídl. Michal škola",["X"]] +["4","14:06","Stará Ovčárna",["X"]] +["3","14:09","Závodu míru",["X"]] +["1","14:10","Březová, aut. st.",["X"]] +["3","14:21","Závodu míru",["X"]] +["1","14:34","Březová, aut. st.",["X"]] +["6","14:34","Sídl. Michal škola",["X"]] +["4","14:42","Závodu míru",["X"]] +["3","14:43","Závodu míru",["X"]] +["33","14:46","Sídl. Michal škola",["X"]] +["3","14:52","Závodu míru",["X"]] +["1","15:09","Březová, aut. st.",["X"]] +["33","15:09","Sídl. Michal škola",["X"]] +["3","15:13","Závodu míru",["X"]] +["6","15:14","Sídl. Michal škola",["X"]] +["3","15:23","Sokolov, Hrušková",["X","42"]] +["3","15:30","Závodu míru",["X"]] +["1","15:31","Březová, aut. st.",["X"]] +["33","15:39","Sídl. Michal škola",["X"]] +["3","15:39","Jezero Michal",["X"]] +["7","15:54","Březová, aut.st.",["X"]] +["3","16:00","Sídl. Michal škola",["X","42"]] +["4","16:06","Závodu míru",["X"]] +["33","16:14","Sídl. Michal škola",["X"]] +["3","16:14","Závodu míru",["X"]] +["1","16:21","Březová, aut. st.",["X"]] +["7","16:29","Březová, aut.st.",["X"]] +["3","16:35","Závodu míru",["X"]] +["6","16:44","Sídl. Michal škola",["X","42"]] +["3","16:48","Závodu míru",["X"]] +["4","16:51","Závodu míru",["X","42"]] +["7","16:59","Březová, aut.st.",["X"]] +["3","17:09","Jezero Michal",["X"]] +["3","17:18","Závodu míru",["X"]] +["3","17:34","Závodu míru",["X"]] +["1","17:38","Březová, aut. st.",["X"]] +["3","17:57","Závodu míru",["X"]] +["3","18:14","Závodu míru",["X"]] +["3","18:21","Závodu míru",["X"]] +["1","18:26","Březová, aut. st.",["X"]] +["3","18:34","Závodu míru",["X"]] +["3","18:54","Závodu míru",["X"]] +["1","19:08","Březová, aut. st.",["X"]] +["3","19:19","Závodu míru",["X","31"]] +["3","19:34","Závodu míru",["X","31"]] +["1","19:53","Březová, aut. st.",["X","31"]] +["3","19:54","Závodu míru",["X","31"]] +["3","20:19","Závodu míru",["X","31"]] +["3","20:49","Závodu míru",["X","31"]] +["1","20:55","Březová, aut. st.",["X","31"]] +["3","21:09","Závodu míru",["X","31"]] +["3","21:24","Stará Ovčárna",["X","31"]] +["1","21:38","Březová, aut. st.",["X","31"]] +["3","22:12","Stará Ovčárna",["X","31"]] +["1","22:28","Březová, aut. st.",["X","31"]] +["3","22:41","Závodu míru",["X","31"]] + +["24.6","Uteri"] +["3","04:29","Závodu míru",["X"]] +["1","04:50","Březová, aut. st.",["X"]] +["3","04:52","Závodu míru",["X"]] +["3","05:02","Závodu míru",["X"]] +["4","05:05","Závodu míru",["X"]] +["6","05:07","Sídl. Michal škola",["X","42"]] +["6","05:07","Závodu míru",["X","32"]] +["3","05:09","Závodu míru",["X","42"]] +["3","05:22","Závodu míru",["X"]] +["1","05:23","Březová, aut. st.",["X"]] +["6","05:34","Sídl. Michal škola",["X","42"]] +["4","05:35","Stará Ovčárna",["X"]] +["3","05:36","Sídl. Michal škola",["X","42"]] +["3","05:38","Sídliště Michal",["X","32"]] +["1","05:51","Březová, aut. st.",["X"]] +["3","05:58","Závodu míru",["X"]] +["6","06:04","Sídl. Michal škola",["X","42"]] +["1","06:13","Březová, aut. st.",["X"]] +["3","06:16","Závodu míru",["X","42"]] +["3","06:19","Závodu míru",["X","32"]] +["3","06:24","Sídliště Michal",["X"]] +["4","06:31","Závodu míru",["X","42"]] +["6","06:32","Sídl. Michal škola",["X","32"]] +["3","06:34","Závodu míru",["X"]] +["6","06:34","Sídl. Michal škola",["X","42"]] +["1","06:46","Březová, aut. st.",["X"]] +["33","06:49","Sídl. Michal škola",["X","42"]] +["3","06:56","Závodu míru",["X","32"]] +["3","06:56","Závodu míru",["X","42"]] +["3","07:04","Závodu míru",["X"]] +["1","07:05","Březová, aut. st.",["X"]] +["3","07:14","Závodu míru",["X"]] +["6","07:23","Sídl. Michal škola",["X","42"]] +["3","07:27","Sídliště Michal",["X","32"]] +["2","07:31","Sídliště Michal",["X","42"]] +["3","07:34","Závodu míru",["X","42"]] +["4","07:34","Závodu míru",["X"]] +["1","07:35","Březová, aut. st.",["X"]] +["3","07:45","Sídliště Michal",["X"]] +["33","07:54","Sídl. Michal škola",["X","42"]] +["1","07:55","Březová, aut. st.",["X"]] +["3","07:58","Závodu míru",["X","42"]] +["3","08:10","Závodu míru",["X","32"]] +["3","08:15","Závodu míru",["X","42"]] +["1","08:18","Březová, aut. st.",["X"]] +["33","08:29","Sídl. Michal škola",["X"]] +["3","08:34","Závodu míru",["X"]] +["3","08:50","Stará Ovčárna",["X"]] +["33","08:54","Sídl. Michal škola",["X"]] +["3","09:04","Závodu míru",["X"]] +["1","09:09","Březová, aut. st.",["X"]] +["3","09:24","Závodu míru",["X"]] +["33","09:34","Sídl. Michal škola",["X"]] +["4","09:41","Sídliště Michal",["X"]] +["3","09:45","Závodu míru",["X"]] +["1","09:58","Březová, aut. st.",["X"]] +["3","09:59","Jezero Michal",["X"]] +["7","10:14","Březová, aut.st.",["X"]] +["33","10:24","Sídl. Michal škola",["X"]] +["3","10:40","Závodu míru",["X"]] +["1","10:55","Březová, aut. st.",["X"]] +["3","10:55","Závodu míru",["X"]] +["3","11:17","Závodu míru",["X"]] +["33","11:29","Sídl. Michal škola",["X"]] +["3","11:44","Závodu míru",["X"]] +["1","11:46","Březová, aut. st.",["X"]] +["33","11:56","Sídl. Michal škola",["X"]] +["3","12:05","Závodu míru",["X"]] +["3","12:24","Jezero Michal",["X"]] +["1","12:33","Březová, aut. st.",["X"]] +["3","12:44","Závodu míru",["X"]] +["3","12:59","Závodu míru",["X"]] +["6","12:59","Sídl. Michal škola",["X","42"]] +["33","13:04","Sídl. Michal škola",["X"]] +["1","13:06","Březová, aut. st.",["X"]] +["3","13:15","Závodu míru",["X"]] +["2","13:17","Sídliště Michal",["X"]] +["1","13:22","Březová, aut. st.",["X"]] +["3","13:24","Stará Ovčárna",["X"]] +["33","13:39","Sídl. Michal škola",["X"]] +["1","13:48","Březová, aut. st.",["X"]] +["33","14:04","Sídl. Michal škola",["X"]] +["6","14:04","Sídl. Michal škola",["X"]] +["4","14:06","Stará Ovčárna",["X"]] +["3","14:09","Závodu míru",["X"]] +["1","14:10","Březová, aut. st.",["X"]] +["3","14:21","Závodu míru",["X"]] +["1","14:34","Březová, aut. st.",["X"]] +["6","14:34","Sídl. Michal škola",["X"]] +["4","14:42","Závodu míru",["X"]] +["3","14:43","Závodu míru",["X"]] +["33","14:46","Sídl. Michal škola",["X"]] +["3","14:52","Závodu míru",["X"]] +["1","15:09","Březová, aut. st.",["X"]] +["33","15:09","Sídl. Michal škola",["X"]] +["3","15:13","Závodu míru",["X"]] +["6","15:14","Sídl. Michal škola",["X"]] +["3","15:23","Sokolov, Hrušková",["X","42"]] +["3","15:30","Závodu míru",["X"]] +["1","15:31","Březová, aut. st.",["X"]] +["33","15:39","Sídl. Michal škola",["X"]] +["3","15:39","Jezero Michal",["X"]] +["7","15:54","Březová, aut.st.",["X"]] +["3","16:00","Sídl. Michal škola",["X","42"]] +["4","16:06","Závodu míru",["X"]] +["33","16:14","Sídl. Michal škola",["X"]] +["3","16:14","Závodu míru",["X"]] +["1","16:21","Březová, aut. st.",["X"]] +["7","16:29","Březová, aut.st.",["X"]] +["3","16:35","Závodu míru",["X"]] +["6","16:44","Sídl. Michal škola",["X","42"]] +["3","16:48","Závodu míru",["X"]] +["4","16:51","Závodu míru",["X","42"]] +["7","16:59","Březová, aut.st.",["X"]] +["3","17:09","Jezero Michal",["X"]] +["3","17:18","Závodu míru",["X"]] +["3","17:34","Závodu míru",["X"]] +["1","17:38","Březová, aut. st.",["X"]] +["3","17:57","Závodu míru",["X"]] +["3","18:14","Závodu míru",["X"]] +["3","18:21","Závodu míru",["X"]] +["1","18:26","Březová, aut. st.",["X"]] +["3","18:34","Závodu míru",["X"]] +["3","18:54","Závodu míru",["X"]] +["1","19:08","Březová, aut. st.",["X"]] +["3","19:19","Závodu míru",["X","31"]] +["3","19:34","Závodu míru",["X","31"]] +["1","19:53","Březová, aut. st.",["X","31"]] +["3","19:54","Závodu míru",["X","31"]] +["3","20:19","Závodu míru",["X","31"]] +["3","20:49","Závodu míru",["X","31"]] +["1","20:55","Březová, aut. st.",["X","31"]] +["3","21:09","Závodu míru",["X","31"]] +["3","21:24","Stará Ovčárna",["X","31"]] +["1","21:38","Březová, aut. st.",["X","31"]] +["3","22:12","Stará Ovčárna",["X","31"]] +["1","22:28","Březová, aut. st.",["X","31"]] +["3","22:41","Závodu míru",["X","31"]] + +["24.6","Uteri"] +["3","04:29","Závodu míru",["X"]] +["1","04:50","Březová, aut. st.",["X"]] +["3","04:52","Závodu míru",["X"]] +["3","05:02","Závodu míru",["X"]] +["4","05:05","Závodu míru",["X"]] +["6","05:07","Sídl. Michal škola",["X","42"]] +["6","05:07","Závodu míru",["X","32"]] +["3","05:09","Závodu míru",["X","42"]] +["3","05:22","Závodu míru",["X"]] +["1","05:23","Březová, aut. st.",["X"]] +["6","05:34","Sídl. Michal škola",["X","42"]] +["4","05:35","Stará Ovčárna",["X"]] +["3","05:36","Sídl. Michal škola",["X","42"]] +["3","05:38","Sídliště Michal",["X","32"]] +["1","05:51","Březová, aut. st.",["X"]] +["3","05:58","Závodu míru",["X"]] +["6","06:04","Sídl. Michal škola",["X","42"]] +["1","06:13","Březová, aut. st.",["X"]] +["3","06:16","Závodu míru",["X","42"]] +["3","06:19","Závodu míru",["X","32"]] +["3","06:24","Sídliště Michal",["X"]] +["4","06:31","Závodu míru",["X","42"]] +["6","06:32","Sídl. Michal škola",["X","32"]] +["3","06:34","Závodu míru",["X"]] +["6","06:34","Sídl. Michal škola",["X","42"]] +["1","06:46","Březová, aut. st.",["X"]] +["33","06:49","Sídl. Michal škola",["X","42"]] +["3","06:56","Závodu míru",["X","32"]] +["3","06:56","Závodu míru",["X","42"]] +["3","07:04","Závodu míru",["X"]] +["1","07:05","Březová, aut. st.",["X"]] +["3","07:14","Závodu míru",["X"]] +["6","07:23","Sídl. Michal škola",["X","42"]] +["3","07:27","Sídliště Michal",["X","32"]] +["2","07:31","Sídliště Michal",["X","42"]] +["3","07:34","Závodu míru",["X","42"]] +["4","07:34","Závodu míru",["X"]] +["1","07:35","Březová, aut. st.",["X"]] +["3","07:45","Sídliště Michal",["X"]] +["33","07:54","Sídl. Michal škola",["X","42"]] +["1","07:55","Březová, aut. st.",["X"]] +["3","07:58","Závodu míru",["X","42"]] +["3","08:10","Závodu míru",["X","32"]] +["3","08:15","Závodu míru",["X","42"]] +["1","08:18","Březová, aut. st.",["X"]] +["33","08:29","Sídl. Michal škola",["X"]] +["3","08:34","Závodu míru",["X"]] +["3","08:50","Stará Ovčárna",["X"]] +["33","08:54","Sídl. Michal škola",["X"]] +["3","09:04","Závodu míru",["X"]] +["1","09:09","Březová, aut. st.",["X"]] +["3","09:24","Závodu míru",["X"]] +["33","09:34","Sídl. Michal škola",["X"]] +["4","09:41","Sídliště Michal",["X"]] +["3","09:45","Závodu míru",["X"]] +["1","09:58","Březová, aut. st.",["X"]] +["3","09:59","Jezero Michal",["X"]] +["7","10:14","Březová, aut.st.",["X"]] +["33","10:24","Sídl. Michal škola",["X"]] +["3","10:40","Závodu míru",["X"]] +["1","10:55","Březová, aut. st.",["X"]] +["3","10:55","Závodu míru",["X"]] +["3","11:17","Závodu míru",["X"]] +["33","11:29","Sídl. Michal škola",["X"]] +["3","11:44","Závodu míru",["X"]] +["1","11:46","Březová, aut. st.",["X"]] +["33","11:56","Sídl. Michal škola",["X"]] +["3","12:05","Závodu míru",["X"]] +["3","12:24","Jezero Michal",["X"]] +["1","12:33","Březová, aut. st.",["X"]] +["3","12:44","Závodu míru",["X"]] +["3","12:59","Závodu míru",["X"]] +["6","12:59","Sídl. Michal škola",["X","42"]] +["33","13:04","Sídl. Michal škola",["X"]] +["1","13:06","Březová, aut. st.",["X"]] +["3","13:15","Závodu míru",["X"]] +["2","13:17","Sídliště Michal",["X"]] +["1","13:22","Březová, aut. st.",["X"]] +["3","13:24","Stará Ovčárna",["X"]] +["33","13:39","Sídl. Michal škola",["X"]] +["1","13:48","Březová, aut. st.",["X"]] +["33","14:04","Sídl. Michal škola",["X"]] +["6","14:04","Sídl. Michal škola",["X"]] +["4","14:06","Stará Ovčárna",["X"]] +["3","14:09","Závodu míru",["X"]] +["1","14:10","Březová, aut. st.",["X"]] +["3","14:21","Závodu míru",["X"]] +["1","14:34","Březová, aut. st.",["X"]] +["6","14:34","Sídl. Michal škola",["X"]] +["4","14:42","Závodu míru",["X"]] +["3","14:43","Závodu míru",["X"]] +["33","14:46","Sídl. Michal škola",["X"]] +["3","14:52","Závodu míru",["X"]] +["1","15:09","Březová, aut. st.",["X"]] +["33","15:09","Sídl. Michal škola",["X"]] +["3","15:13","Závodu míru",["X"]] +["6","15:14","Sídl. Michal škola",["X"]] +["3","15:23","Sokolov, Hrušková",["X","42"]] +["3","15:30","Závodu míru",["X"]] +["1","15:31","Březová, aut. st.",["X"]] +["33","15:39","Sídl. Michal škola",["X"]] +["3","15:39","Jezero Michal",["X"]] +["7","15:54","Březová, aut.st.",["X"]] +["3","16:00","Sídl. Michal škola",["X","42"]] +["4","16:06","Závodu míru",["X"]] +["33","16:14","Sídl. Michal škola",["X"]] +["3","16:14","Závodu míru",["X"]] +["1","16:21","Březová, aut. st.",["X"]] +["7","16:29","Březová, aut.st.",["X"]] +["3","16:35","Závodu míru",["X"]] +["6","16:44","Sídl. Michal škola",["X","42"]] +["3","16:48","Závodu míru",["X"]] +["4","16:51","Závodu míru",["X","42"]] +["7","16:59","Březová, aut.st.",["X"]] +["3","17:09","Jezero Michal",["X"]] +["3","17:18","Závodu míru",["X"]] +["3","17:34","Závodu míru",["X"]] +["1","17:38","Březová, aut. st.",["X"]] +["3","17:57","Závodu míru",["X"]] +["3","18:14","Závodu míru",["X"]] +["3","18:21","Závodu míru",["X"]] +["1","18:26","Březová, aut. st.",["X"]] +["3","18:34","Závodu míru",["X"]] +["3","18:54","Závodu míru",["X"]] +["1","19:08","Březová, aut. st.",["X"]] +["3","19:19","Závodu míru",["X","31"]] +["3","19:34","Závodu míru",["X","31"]] +["1","19:53","Březová, aut. st.",["X","31"]] +["3","19:54","Závodu míru",["X","31"]] +["3","20:19","Závodu míru",["X","31"]] +["3","20:49","Závodu míru",["X","31"]] +["1","20:55","Březová, aut. st.",["X","31"]] +["3","21:09","Závodu míru",["X","31"]] +["3","21:24","Stará Ovčárna",["X","31"]] +["1","21:38","Březová, aut. st.",["X","31"]] +["3","22:12","Stará Ovčárna",["X","31"]] +["1","22:28","Březová, aut. st.",["X","31"]] +["3","22:41","Závodu míru",["X","31"]] + +["25.6","Streda"] +["3","04:29","Závodu míru",["X"]] +["1","04:50","Březová, aut. st.",["X"]] +["3","04:52","Závodu míru",["X"]] +["3","05:02","Závodu míru",["X"]] +["4","05:05","Závodu míru",["X"]] +["6","05:07","Sídl. Michal škola",["X","42"]] +["6","05:07","Závodu míru",["X","32"]] +["3","05:09","Závodu míru",["X","42"]] +["3","05:22","Závodu míru",["X"]] +["1","05:23","Březová, aut. st.",["X"]] +["6","05:34","Sídl. Michal škola",["X","42"]] +["4","05:35","Stará Ovčárna",["X"]] +["3","05:36","Sídl. Michal škola",["X","42"]] +["3","05:38","Sídliště Michal",["X","32"]] +["1","05:51","Březová, aut. st.",["X"]] +["3","05:58","Závodu míru",["X"]] +["6","06:04","Sídl. Michal škola",["X","42"]] +["1","06:13","Březová, aut. st.",["X"]] +["3","06:16","Závodu míru",["X","42"]] +["3","06:19","Závodu míru",["X","32"]] +["3","06:24","Sídliště Michal",["X"]] +["4","06:31","Závodu míru",["X","42"]] +["6","06:32","Sídl. Michal škola",["X","32"]] +["3","06:34","Závodu míru",["X"]] +["6","06:34","Sídl. Michal škola",["X","42"]] +["1","06:46","Březová, aut. st.",["X"]] +["33","06:49","Sídl. Michal škola",["X","42"]] +["3","06:56","Závodu míru",["X","32"]] +["3","06:56","Závodu míru",["X","42"]] +["3","07:04","Závodu míru",["X"]] +["1","07:05","Březová, aut. st.",["X"]] +["3","07:14","Závodu míru",["X"]] +["6","07:23","Sídl. Michal škola",["X","42"]] +["3","07:27","Sídliště Michal",["X","32"]] +["2","07:31","Sídliště Michal",["X","42"]] +["3","07:34","Závodu míru",["X","42"]] +["4","07:34","Závodu míru",["X"]] +["1","07:35","Březová, aut. st.",["X"]] +["3","07:45","Sídliště Michal",["X"]] +["33","07:54","Sídl. Michal škola",["X","42"]] +["1","07:55","Březová, aut. st.",["X"]] +["3","07:58","Závodu míru",["X","42"]] +["3","08:10","Závodu míru",["X","32"]] +["3","08:15","Závodu míru",["X","42"]] +["1","08:18","Březová, aut. st.",["X"]] +["33","08:29","Sídl. Michal škola",["X"]] +["3","08:34","Závodu míru",["X"]] +["3","08:50","Stará Ovčárna",["X"]] +["33","08:54","Sídl. Michal škola",["X"]] +["3","09:04","Závodu míru",["X"]] +["1","09:09","Březová, aut. st.",["X"]] +["3","09:24","Závodu míru",["X"]] +["33","09:34","Sídl. Michal škola",["X"]] +["4","09:41","Sídliště Michal",["X"]] +["3","09:45","Závodu míru",["X"]] +["1","09:58","Březová, aut. st.",["X"]] +["3","09:59","Jezero Michal",["X"]] +["7","10:14","Březová, aut.st.",["X"]] +["33","10:24","Sídl. Michal škola",["X"]] +["3","10:40","Závodu míru",["X"]] +["1","10:55","Březová, aut. st.",["X"]] +["3","10:55","Závodu míru",["X"]] +["3","11:17","Závodu míru",["X"]] +["33","11:29","Sídl. Michal škola",["X"]] +["3","11:44","Závodu míru",["X"]] +["1","11:46","Březová, aut. st.",["X"]] +["33","11:56","Sídl. Michal škola",["X"]] +["3","12:05","Závodu míru",["X"]] +["3","12:24","Jezero Michal",["X"]] +["1","12:33","Březová, aut. st.",["X"]] +["3","12:44","Závodu míru",["X"]] +["3","12:59","Závodu míru",["X"]] +["6","12:59","Sídl. Michal škola",["X","42"]] +["33","13:04","Sídl. Michal škola",["X"]] +["1","13:06","Březová, aut. st.",["X"]] +["3","13:15","Závodu míru",["X"]] +["2","13:17","Sídliště Michal",["X"]] +["1","13:22","Březová, aut. st.",["X"]] +["3","13:24","Stará Ovčárna",["X"]] +["33","13:39","Sídl. Michal škola",["X"]] +["1","13:48","Březová, aut. st.",["X"]] +["33","14:04","Sídl. Michal škola",["X"]] +["6","14:04","Sídl. Michal škola",["X"]] +["4","14:06","Stará Ovčárna",["X"]] +["3","14:09","Závodu míru",["X"]] +["1","14:10","Březová, aut. st.",["X"]] +["3","14:21","Závodu míru",["X"]] +["1","14:34","Březová, aut. st.",["X"]] +["6","14:34","Sídl. Michal škola",["X"]] +["4","14:42","Závodu míru",["X"]] +["3","14:43","Závodu míru",["X"]] +["33","14:46","Sídl. Michal škola",["X"]] +["3","14:52","Závodu míru",["X"]] +["1","15:09","Březová, aut. st.",["X"]] +["33","15:09","Sídl. Michal škola",["X"]] +["3","15:13","Závodu míru",["X"]] +["6","15:14","Sídl. Michal škola",["X"]] +["3","15:23","Sokolov, Hrušková",["X","42"]] +["3","15:30","Závodu míru",["X"]] +["1","15:31","Březová, aut. st.",["X"]] +["33","15:39","Sídl. Michal škola",["X"]] +["3","15:39","Jezero Michal",["X"]] +["7","15:54","Březová, aut.st.",["X"]] +["3","16:00","Sídl. Michal škola",["X","42"]] +["4","16:06","Závodu míru",["X"]] +["33","16:14","Sídl. Michal škola",["X"]] +["3","16:14","Závodu míru",["X"]] +["1","16:21","Březová, aut. st.",["X"]] +["7","16:29","Březová, aut.st.",["X"]] +["3","16:35","Závodu míru",["X"]] +["6","16:44","Sídl. Michal škola",["X","42"]] +["3","16:48","Závodu míru",["X"]] +["4","16:51","Závodu míru",["X","42"]] +["7","16:59","Březová, aut.st.",["X"]] +["3","17:09","Jezero Michal",["X"]] +["3","17:18","Závodu míru",["X"]] +["3","17:34","Závodu míru",["X"]] +["1","17:38","Březová, aut. st.",["X"]] +["3","17:57","Závodu míru",["X"]] +["3","18:14","Závodu míru",["X"]] +["3","18:21","Závodu míru",["X"]] +["1","18:26","Březová, aut. st.",["X"]] +["3","18:34","Závodu míru",["X"]] +["3","18:54","Závodu míru",["X"]] +["1","19:08","Březová, aut. st.",["X"]] +["3","19:19","Závodu míru",["X","31"]] +["3","19:34","Závodu míru",["X","31"]] +["1","19:53","Březová, aut. st.",["X","31"]] +["3","19:54","Závodu míru",["X","31"]] +["3","20:19","Závodu míru",["X","31"]] +["3","20:49","Závodu míru",["X","31"]] +["1","20:55","Březová, aut. st.",["X","31"]] +["3","21:09","Závodu míru",["X","31"]] +["3","21:24","Stará Ovčárna",["X","31"]] +["1","21:38","Březová, aut. st.",["X","31"]] +["3","22:12","Stará Ovčárna",["X","31"]] +["1","22:28","Březová, aut. st.",["X","31"]] +["3","22:41","Závodu míru",["X","31"]] + +["25.6","Streda"] +["3","04:29","Závodu míru",["X"]] +["1","04:50","Březová, aut. st.",["X"]] +["3","04:52","Závodu míru",["X"]] +["3","05:02","Závodu míru",["X"]] +["4","05:05","Závodu míru",["X"]] +["6","05:07","Sídl. Michal škola",["X","42"]] +["6","05:07","Závodu míru",["X","32"]] +["3","05:09","Závodu míru",["X","42"]] +["3","05:22","Závodu míru",["X"]] +["1","05:23","Březová, aut. st.",["X"]] +["6","05:34","Sídl. Michal škola",["X","42"]] +["4","05:35","Stará Ovčárna",["X"]] +["3","05:36","Sídl. Michal škola",["X","42"]] +["3","05:38","Sídliště Michal",["X","32"]] +["1","05:51","Březová, aut. st.",["X"]] +["3","05:58","Závodu míru",["X"]] +["6","06:04","Sídl. Michal škola",["X","42"]] +["1","06:13","Březová, aut. st.",["X"]] +["3","06:16","Závodu míru",["X","42"]] +["3","06:19","Závodu míru",["X","32"]] +["3","06:24","Sídliště Michal",["X"]] +["4","06:31","Závodu míru",["X","42"]] +["6","06:32","Sídl. Michal škola",["X","32"]] +["3","06:34","Závodu míru",["X"]] +["6","06:34","Sídl. Michal škola",["X","42"]] +["1","06:46","Březová, aut. st.",["X"]] +["33","06:49","Sídl. Michal škola",["X","42"]] +["3","06:56","Závodu míru",["X","32"]] +["3","06:56","Závodu míru",["X","42"]] +["3","07:04","Závodu míru",["X"]] +["1","07:05","Březová, aut. st.",["X"]] +["3","07:14","Závodu míru",["X"]] +["6","07:23","Sídl. Michal škola",["X","42"]] +["3","07:27","Sídliště Michal",["X","32"]] +["2","07:31","Sídliště Michal",["X","42"]] +["3","07:34","Závodu míru",["X","42"]] +["4","07:34","Závodu míru",["X"]] +["1","07:35","Březová, aut. st.",["X"]] +["3","07:45","Sídliště Michal",["X"]] +["33","07:54","Sídl. Michal škola",["X","42"]] +["1","07:55","Březová, aut. st.",["X"]] +["3","07:58","Závodu míru",["X","42"]] +["3","08:10","Závodu míru",["X","32"]] +["3","08:15","Závodu míru",["X","42"]] +["1","08:18","Březová, aut. st.",["X"]] +["33","08:29","Sídl. Michal škola",["X"]] +["3","08:34","Závodu míru",["X"]] +["3","08:50","Stará Ovčárna",["X"]] +["33","08:54","Sídl. Michal škola",["X"]] +["3","09:04","Závodu míru",["X"]] +["1","09:09","Březová, aut. st.",["X"]] +["3","09:24","Závodu míru",["X"]] +["33","09:34","Sídl. Michal škola",["X"]] +["4","09:41","Sídliště Michal",["X"]] +["3","09:45","Závodu míru",["X"]] +["1","09:58","Březová, aut. st.",["X"]] +["3","09:59","Jezero Michal",["X"]] +["7","10:14","Březová, aut.st.",["X"]] +["33","10:24","Sídl. Michal škola",["X"]] +["3","10:40","Závodu míru",["X"]] +["1","10:55","Březová, aut. st.",["X"]] +["3","10:55","Závodu míru",["X"]] +["3","11:17","Závodu míru",["X"]] +["33","11:29","Sídl. Michal škola",["X"]] +["3","11:44","Závodu míru",["X"]] +["1","11:46","Březová, aut. st.",["X"]] +["33","11:56","Sídl. Michal škola",["X"]] +["3","12:05","Závodu míru",["X"]] +["3","12:24","Jezero Michal",["X"]] +["1","12:33","Březová, aut. st.",["X"]] +["3","12:44","Závodu míru",["X"]] +["3","12:59","Závodu míru",["X"]] +["6","12:59","Sídl. Michal škola",["X","42"]] +["33","13:04","Sídl. Michal škola",["X"]] +["1","13:06","Březová, aut. st.",["X"]] +["3","13:15","Závodu míru",["X"]] +["2","13:17","Sídliště Michal",["X"]] +["1","13:22","Březová, aut. st.",["X"]] +["3","13:24","Stará Ovčárna",["X"]] +["33","13:39","Sídl. Michal škola",["X"]] +["1","13:48","Březová, aut. st.",["X"]] +["33","14:04","Sídl. Michal škola",["X"]] +["6","14:04","Sídl. Michal škola",["X"]] +["4","14:06","Stará Ovčárna",["X"]] +["3","14:09","Závodu míru",["X"]] +["1","14:10","Březová, aut. st.",["X"]] +["3","14:21","Závodu míru",["X"]] +["1","14:34","Březová, aut. st.",["X"]] +["6","14:34","Sídl. Michal škola",["X"]] +["4","14:42","Závodu míru",["X"]] +["3","14:43","Závodu míru",["X"]] +["33","14:46","Sídl. Michal škola",["X"]] +["3","14:52","Závodu míru",["X"]] +["1","15:09","Březová, aut. st.",["X"]] +["33","15:09","Sídl. Michal škola",["X"]] +["3","15:13","Závodu míru",["X"]] +["6","15:14","Sídl. Michal škola",["X"]] +["3","15:23","Sokolov, Hrušková",["X","42"]] +["3","15:30","Závodu míru",["X"]] +["1","15:31","Březová, aut. st.",["X"]] +["33","15:39","Sídl. Michal škola",["X"]] +["3","15:39","Jezero Michal",["X"]] +["7","15:54","Březová, aut.st.",["X"]] +["3","16:00","Sídl. Michal škola",["X","42"]] +["4","16:06","Závodu míru",["X"]] +["33","16:14","Sídl. Michal škola",["X"]] +["3","16:14","Závodu míru",["X"]] +["1","16:21","Březová, aut. st.",["X"]] +["7","16:29","Březová, aut.st.",["X"]] +["3","16:35","Závodu míru",["X"]] +["6","16:44","Sídl. Michal škola",["X","42"]] +["3","16:48","Závodu míru",["X"]] +["4","16:51","Závodu míru",["X","42"]] +["7","16:59","Březová, aut.st.",["X"]] +["3","17:09","Jezero Michal",["X"]] +["3","17:18","Závodu míru",["X"]] +["3","17:34","Závodu míru",["X"]] +["1","17:38","Březová, aut. st.",["X"]] +["3","17:57","Závodu míru",["X"]] +["3","18:14","Závodu míru",["X"]] +["3","18:21","Závodu míru",["X"]] +["1","18:26","Březová, aut. st.",["X"]] +["3","18:34","Závodu míru",["X"]] +["3","18:54","Závodu míru",["X"]] +["1","19:08","Březová, aut. st.",["X"]] +["3","19:19","Závodu míru",["X","31"]] +["3","19:34","Závodu míru",["X","31"]] +["1","19:53","Březová, aut. st.",["X","31"]] +["3","19:54","Závodu míru",["X","31"]] +["3","20:19","Závodu míru",["X","31"]] +["3","20:49","Závodu míru",["X","31"]] +["1","20:55","Březová, aut. st.",["X","31"]] +["3","21:09","Závodu míru",["X","31"]] +["3","21:24","Stará Ovčárna",["X","31"]] +["1","21:38","Březová, aut. st.",["X","31"]] +["3","22:12","Stará Ovčárna",["X","31"]] +["1","22:28","Březová, aut. st.",["X","31"]] +["3","22:41","Závodu míru",["X","31"]] + +["26.6","Ctvrtek"] +["3","04:29","Závodu míru",["X"]] +["1","04:50","Březová, aut. st.",["X"]] +["3","04:52","Závodu míru",["X"]] +["3","05:02","Závodu míru",["X"]] +["4","05:05","Závodu míru",["X"]] +["6","05:07","Sídl. Michal škola",["X","42"]] +["6","05:07","Závodu míru",["X","32"]] +["3","05:09","Závodu míru",["X","42"]] +["3","05:22","Závodu míru",["X"]] +["1","05:23","Březová, aut. st.",["X"]] +["6","05:34","Sídl. Michal škola",["X","42"]] +["4","05:35","Stará Ovčárna",["X"]] +["3","05:36","Sídl. Michal škola",["X","42"]] +["3","05:38","Sídliště Michal",["X","32"]] +["1","05:51","Březová, aut. st.",["X"]] +["3","05:58","Závodu míru",["X"]] +["6","06:04","Sídl. Michal škola",["X","42"]] +["1","06:13","Březová, aut. st.",["X"]] +["3","06:16","Závodu míru",["X","42"]] +["3","06:19","Závodu míru",["X","32"]] +["3","06:24","Sídliště Michal",["X"]] +["4","06:31","Závodu míru",["X","42"]] +["6","06:32","Sídl. Michal škola",["X","32"]] +["3","06:34","Závodu míru",["X"]] +["6","06:34","Sídl. Michal škola",["X","42"]] +["1","06:46","Březová, aut. st.",["X"]] +["33","06:49","Sídl. Michal škola",["X","42"]] +["3","06:56","Závodu míru",["X","32"]] +["3","06:56","Závodu míru",["X","42"]] +["3","07:04","Závodu míru",["X"]] +["1","07:05","Březová, aut. st.",["X"]] +["3","07:14","Závodu míru",["X"]] +["6","07:23","Sídl. Michal škola",["X","42"]] +["3","07:27","Sídliště Michal",["X","32"]] +["2","07:31","Sídliště Michal",["X","42"]] +["3","07:34","Závodu míru",["X","42"]] +["4","07:34","Závodu míru",["X"]] +["1","07:35","Březová, aut. st.",["X"]] +["3","07:45","Sídliště Michal",["X"]] +["33","07:54","Sídl. Michal škola",["X","42"]] +["1","07:55","Březová, aut. st.",["X"]] +["3","07:58","Závodu míru",["X","42"]] +["3","08:10","Závodu míru",["X","32"]] +["3","08:15","Závodu míru",["X","42"]] +["1","08:18","Březová, aut. st.",["X"]] +["33","08:29","Sídl. Michal škola",["X"]] +["3","08:34","Závodu míru",["X"]] +["3","08:50","Stará Ovčárna",["X"]] +["33","08:54","Sídl. Michal škola",["X"]] +["3","09:04","Závodu míru",["X"]] +["1","09:09","Březová, aut. st.",["X"]] +["3","09:24","Závodu míru",["X"]] +["33","09:34","Sídl. Michal škola",["X"]] +["4","09:41","Sídliště Michal",["X"]] +["3","09:45","Závodu míru",["X"]] +["1","09:58","Březová, aut. st.",["X"]] +["3","09:59","Jezero Michal",["X"]] +["7","10:14","Březová, aut.st.",["X"]] +["33","10:24","Sídl. Michal škola",["X"]] +["3","10:40","Závodu míru",["X"]] +["1","10:55","Březová, aut. st.",["X"]] +["3","10:55","Závodu míru",["X"]] +["3","11:17","Závodu míru",["X"]] +["33","11:29","Sídl. Michal škola",["X"]] +["3","11:44","Závodu míru",["X"]] +["1","11:46","Březová, aut. st.",["X"]] +["33","11:56","Sídl. Michal škola",["X"]] +["3","12:05","Závodu míru",["X"]] +["3","12:24","Jezero Michal",["X"]] +["1","12:33","Březová, aut. st.",["X"]] +["3","12:44","Závodu míru",["X"]] +["3","12:59","Závodu míru",["X"]] +["6","12:59","Sídl. Michal škola",["X","42"]] +["33","13:04","Sídl. Michal škola",["X"]] +["1","13:06","Březová, aut. st.",["X"]] +["3","13:15","Závodu míru",["X"]] +["2","13:17","Sídliště Michal",["X"]] +["1","13:22","Březová, aut. st.",["X"]] +["3","13:24","Stará Ovčárna",["X"]] +["33","13:39","Sídl. Michal škola",["X"]] +["1","13:48","Březová, aut. st.",["X"]] +["33","14:04","Sídl. Michal škola",["X"]] +["6","14:04","Sídl. Michal škola",["X"]] +["4","14:06","Stará Ovčárna",["X"]] +["3","14:09","Závodu míru",["X"]] +["1","14:10","Březová, aut. st.",["X"]] +["3","14:21","Závodu míru",["X"]] +["1","14:34","Březová, aut. st.",["X"]] +["6","14:34","Sídl. Michal škola",["X"]] +["4","14:42","Závodu míru",["X"]] +["3","14:43","Závodu míru",["X"]] +["33","14:46","Sídl. Michal škola",["X"]] +["3","14:52","Závodu míru",["X"]] +["1","15:09","Březová, aut. st.",["X"]] +["33","15:09","Sídl. Michal škola",["X"]] +["3","15:13","Závodu míru",["X"]] +["6","15:14","Sídl. Michal škola",["X"]] +["3","15:23","Sokolov, Hrušková",["X","42"]] +["3","15:30","Závodu míru",["X"]] +["1","15:31","Březová, aut. st.",["X"]] +["33","15:39","Sídl. Michal škola",["X"]] +["3","15:39","Jezero Michal",["X"]] +["7","15:54","Březová, aut.st.",["X"]] +["3","16:00","Sídl. Michal škola",["X","42"]] +["4","16:06","Závodu míru",["X"]] +["33","16:14","Sídl. Michal škola",["X"]] +["3","16:14","Závodu míru",["X"]] +["1","16:21","Březová, aut. st.",["X"]] +["7","16:29","Březová, aut.st.",["X"]] +["3","16:35","Závodu míru",["X"]] +["6","16:44","Sídl. Michal škola",["X","42"]] +["3","16:48","Závodu míru",["X"]] +["4","16:51","Závodu míru",["X","42"]] +["7","16:59","Březová, aut.st.",["X"]] +["3","17:09","Jezero Michal",["X"]] +["3","17:18","Závodu míru",["X"]] +["3","17:34","Závodu míru",["X"]] +["1","17:38","Březová, aut. st.",["X"]] +["3","17:57","Závodu míru",["X"]] +["3","18:14","Závodu míru",["X"]] +["3","18:21","Závodu míru",["X"]] +["1","18:26","Březová, aut. st.",["X"]] +["3","18:34","Závodu míru",["X"]] +["3","18:54","Závodu míru",["X"]] +["1","19:08","Březová, aut. st.",["X"]] +["3","19:19","Závodu míru",["X","31"]] +["3","19:34","Závodu míru",["X","31"]] +["1","19:53","Březová, aut. st.",["X","31"]] +["3","19:54","Závodu míru",["X","31"]] +["3","20:19","Závodu míru",["X","31"]] +["3","20:49","Závodu míru",["X","31"]] +["1","20:55","Březová, aut. st.",["X","31"]] +["3","21:09","Závodu míru",["X","31"]] +["3","21:24","Stará Ovčárna",["X","31"]] +["1","21:38","Březová, aut. st.",["X","31"]] +["3","22:12","Stará Ovčárna",["X","31"]] +["1","22:28","Březová, aut. st.",["X","31"]] +["3","22:41","Závodu míru",["X","31"]] + +["26.6","Ctvrtek"] +["3","04:29","Závodu míru",["X"]] +["1","04:50","Březová, aut. st.",["X"]] +["3","04:52","Závodu míru",["X"]] +["3","05:02","Závodu míru",["X"]] +["4","05:05","Závodu míru",["X"]] +["6","05:07","Sídl. Michal škola",["X","42"]] +["6","05:07","Závodu míru",["X","32"]] +["3","05:09","Závodu míru",["X","42"]] +["3","05:22","Závodu míru",["X"]] +["1","05:23","Březová, aut. st.",["X"]] +["6","05:34","Sídl. Michal škola",["X","42"]] +["4","05:35","Stará Ovčárna",["X"]] +["3","05:36","Sídl. Michal škola",["X","42"]] +["3","05:38","Sídliště Michal",["X","32"]] +["1","05:51","Březová, aut. st.",["X"]] +["3","05:58","Závodu míru",["X"]] +["6","06:04","Sídl. Michal škola",["X","42"]] +["1","06:13","Březová, aut. st.",["X"]] +["3","06:16","Závodu míru",["X","42"]] +["3","06:19","Závodu míru",["X","32"]] +["3","06:24","Sídliště Michal",["X"]] +["4","06:31","Závodu míru",["X","42"]] +["6","06:32","Sídl. Michal škola",["X","32"]] +["3","06:34","Závodu míru",["X"]] +["6","06:34","Sídl. Michal škola",["X","42"]] +["1","06:46","Březová, aut. st.",["X"]] +["33","06:49","Sídl. Michal škola",["X","42"]] +["3","06:56","Závodu míru",["X","32"]] +["3","06:56","Závodu míru",["X","42"]] +["3","07:04","Závodu míru",["X"]] +["1","07:05","Březová, aut. st.",["X"]] +["3","07:14","Závodu míru",["X"]] +["6","07:23","Sídl. Michal škola",["X","42"]] +["3","07:27","Sídliště Michal",["X","32"]] +["2","07:31","Sídliště Michal",["X","42"]] +["3","07:34","Závodu míru",["X","42"]] +["4","07:34","Závodu míru",["X"]] +["1","07:35","Březová, aut. st.",["X"]] +["3","07:45","Sídliště Michal",["X"]] +["33","07:54","Sídl. Michal škola",["X","42"]] +["1","07:55","Březová, aut. st.",["X"]] +["3","07:58","Závodu míru",["X","42"]] +["3","08:10","Závodu míru",["X","32"]] +["3","08:15","Závodu míru",["X","42"]] +["1","08:18","Březová, aut. st.",["X"]] +["33","08:29","Sídl. Michal škola",["X"]] +["3","08:34","Závodu míru",["X"]] +["3","08:50","Stará Ovčárna",["X"]] +["33","08:54","Sídl. Michal škola",["X"]] +["3","09:04","Závodu míru",["X"]] +["1","09:09","Březová, aut. st.",["X"]] +["3","09:24","Závodu míru",["X"]] +["33","09:34","Sídl. Michal škola",["X"]] +["4","09:41","Sídliště Michal",["X"]] +["3","09:45","Závodu míru",["X"]] +["1","09:58","Březová, aut. st.",["X"]] +["3","09:59","Jezero Michal",["X"]] +["7","10:14","Březová, aut.st.",["X"]] +["33","10:24","Sídl. Michal škola",["X"]] +["3","10:40","Závodu míru",["X"]] +["1","10:55","Březová, aut. st.",["X"]] +["3","10:55","Závodu míru",["X"]] +["3","11:17","Závodu míru",["X"]] +["33","11:29","Sídl. Michal škola",["X"]] +["3","11:44","Závodu míru",["X"]] +["1","11:46","Březová, aut. st.",["X"]] +["33","11:56","Sídl. Michal škola",["X"]] +["3","12:05","Závodu míru",["X"]] +["3","12:24","Jezero Michal",["X"]] +["1","12:33","Březová, aut. st.",["X"]] +["3","12:44","Závodu míru",["X"]] +["3","12:59","Závodu míru",["X"]] +["6","12:59","Sídl. Michal škola",["X","42"]] +["33","13:04","Sídl. Michal škola",["X"]] +["1","13:06","Březová, aut. st.",["X"]] +["3","13:15","Závodu míru",["X"]] +["2","13:17","Sídliště Michal",["X"]] +["1","13:22","Březová, aut. st.",["X"]] +["3","13:24","Stará Ovčárna",["X"]] +["33","13:39","Sídl. Michal škola",["X"]] +["1","13:48","Březová, aut. st.",["X"]] +["33","14:04","Sídl. Michal škola",["X"]] +["6","14:04","Sídl. Michal škola",["X"]] +["4","14:06","Stará Ovčárna",["X"]] +["3","14:09","Závodu míru",["X"]] +["1","14:10","Březová, aut. st.",["X"]] +["3","14:21","Závodu míru",["X"]] +["1","14:34","Březová, aut. st.",["X"]] +["6","14:34","Sídl. Michal škola",["X"]] +["4","14:42","Závodu míru",["X"]] +["3","14:43","Závodu míru",["X"]] +["33","14:46","Sídl. Michal škola",["X"]] +["3","14:52","Závodu míru",["X"]] +["1","15:09","Březová, aut. st.",["X"]] +["33","15:09","Sídl. Michal škola",["X"]] +["3","15:13","Závodu míru",["X"]] +["6","15:14","Sídl. Michal škola",["X"]] +["3","15:23","Sokolov, Hrušková",["X","42"]] +["3","15:30","Závodu míru",["X"]] +["1","15:31","Březová, aut. st.",["X"]] +["33","15:39","Sídl. Michal škola",["X"]] +["3","15:39","Jezero Michal",["X"]] +["7","15:54","Březová, aut.st.",["X"]] +["3","16:00","Sídl. Michal škola",["X","42"]] +["4","16:06","Závodu míru",["X"]] +["33","16:14","Sídl. Michal škola",["X"]] +["3","16:14","Závodu míru",["X"]] +["1","16:21","Březová, aut. st.",["X"]] +["7","16:29","Březová, aut.st.",["X"]] +["3","16:35","Závodu míru",["X"]] +["6","16:44","Sídl. Michal škola",["X","42"]] +["3","16:48","Závodu míru",["X"]] +["4","16:51","Závodu míru",["X","42"]] +["7","16:59","Březová, aut.st.",["X"]] +["3","17:09","Jezero Michal",["X"]] +["3","17:18","Závodu míru",["X"]] +["3","17:34","Závodu míru",["X"]] +["1","17:38","Březová, aut. st.",["X"]] +["3","17:57","Závodu míru",["X"]] +["3","18:14","Závodu míru",["X"]] +["3","18:21","Závodu míru",["X"]] +["1","18:26","Březová, aut. st.",["X"]] +["3","18:34","Závodu míru",["X"]] +["3","18:54","Závodu míru",["X"]] +["1","19:08","Březová, aut. st.",["X"]] +["3","19:19","Závodu míru",["X","31"]] +["3","19:34","Závodu míru",["X","31"]] +["1","19:53","Březová, aut. st.",["X","31"]] +["3","19:54","Závodu míru",["X","31"]] +["3","20:19","Závodu míru",["X","31"]] +["3","20:49","Závodu míru",["X","31"]] +["1","20:55","Březová, aut. st.",["X","31"]] +["3","21:09","Závodu míru",["X","31"]] +["3","21:24","Stará Ovčárna",["X","31"]] +["1","21:38","Březová, aut. st.",["X","31"]] +["3","22:12","Stará Ovčárna",["X","31"]] +["1","22:28","Březová, aut. st.",["X","31"]] +["3","22:41","Závodu míru",["X","31"]] + +["27.6","Patek"] +["3","04:29","Závodu míru",["X"]] +["1","04:50","Březová, aut. st.",["X"]] +["3","04:52","Závodu míru",["X"]] +["3","05:02","Závodu míru",["X"]] +["4","05:05","Závodu míru",["X"]] +["6","05:07","Sídl. Michal škola",["X","42"]] +["6","05:07","Závodu míru",["X","32"]] +["3","05:09","Závodu míru",["X","42"]] +["3","05:22","Závodu míru",["X"]] +["1","05:23","Březová, aut. st.",["X"]] +["6","05:34","Sídl. Michal škola",["X","42"]] +["4","05:35","Stará Ovčárna",["X"]] +["3","05:36","Sídl. Michal škola",["X","42"]] +["3","05:38","Sídliště Michal",["X","32"]] +["1","05:51","Březová, aut. st.",["X"]] +["3","05:58","Závodu míru",["X"]] +["6","06:04","Sídl. Michal škola",["X","42"]] +["1","06:13","Březová, aut. st.",["X"]] +["3","06:16","Závodu míru",["X","42"]] +["3","06:19","Závodu míru",["X","32"]] +["3","06:24","Sídliště Michal",["X"]] +["4","06:31","Závodu míru",["X","42"]] +["6","06:32","Sídl. Michal škola",["X","32"]] +["3","06:34","Závodu míru",["X"]] +["6","06:34","Sídl. Michal škola",["X","42"]] +["1","06:46","Březová, aut. st.",["X"]] +["33","06:49","Sídl. Michal škola",["X","42"]] +["3","06:56","Závodu míru",["X","32"]] +["3","06:56","Závodu míru",["X","42"]] +["3","07:04","Závodu míru",["X"]] +["1","07:05","Březová, aut. st.",["X"]] +["3","07:14","Závodu míru",["X"]] +["6","07:23","Sídl. Michal škola",["X","42"]] +["3","07:27","Sídliště Michal",["X","32"]] +["2","07:31","Sídliště Michal",["X","42"]] +["3","07:34","Závodu míru",["X","42"]] +["4","07:34","Závodu míru",["X"]] +["1","07:35","Březová, aut. st.",["X"]] +["3","07:45","Sídliště Michal",["X"]] +["33","07:54","Sídl. Michal škola",["X","42"]] +["1","07:55","Březová, aut. st.",["X"]] +["3","07:58","Závodu míru",["X","42"]] +["3","08:10","Závodu míru",["X","32"]] +["3","08:15","Závodu míru",["X","42"]] +["1","08:18","Březová, aut. st.",["X"]] +["33","08:29","Sídl. Michal škola",["X"]] +["3","08:34","Závodu míru",["X"]] +["3","08:50","Stará Ovčárna",["X"]] +["33","08:54","Sídl. Michal škola",["X"]] +["3","09:04","Závodu míru",["X"]] +["1","09:09","Březová, aut. st.",["X"]] +["3","09:24","Závodu míru",["X"]] +["33","09:34","Sídl. Michal škola",["X"]] +["4","09:41","Sídliště Michal",["X"]] +["3","09:45","Závodu míru",["X"]] +["1","09:58","Březová, aut. st.",["X"]] +["3","09:59","Jezero Michal",["X"]] +["7","10:14","Březová, aut.st.",["X"]] +["33","10:24","Sídl. Michal škola",["X"]] +["3","10:40","Závodu míru",["X"]] +["1","10:55","Březová, aut. st.",["X"]] +["3","10:55","Závodu míru",["X"]] +["3","11:17","Závodu míru",["X"]] +["33","11:29","Sídl. Michal škola",["X"]] +["3","11:44","Závodu míru",["X"]] +["1","11:46","Březová, aut. st.",["X"]] +["33","11:56","Sídl. Michal škola",["X"]] +["3","12:05","Závodu míru",["X"]] +["3","12:24","Jezero Michal",["X"]] +["1","12:33","Březová, aut. st.",["X"]] +["3","12:44","Závodu míru",["X"]] +["3","12:59","Závodu míru",["X"]] +["6","12:59","Sídl. Michal škola",["X","42"]] +["33","13:04","Sídl. Michal škola",["X"]] +["1","13:06","Březová, aut. st.",["X"]] +["3","13:15","Závodu míru",["X"]] +["2","13:17","Sídliště Michal",["X"]] +["1","13:22","Březová, aut. st.",["X"]] +["3","13:24","Stará Ovčárna",["X"]] +["33","13:39","Sídl. Michal škola",["X"]] +["1","13:48","Březová, aut. st.",["X"]] +["33","14:04","Sídl. Michal škola",["X"]] +["6","14:04","Sídl. Michal škola",["X"]] +["4","14:06","Stará Ovčárna",["X"]] +["3","14:09","Závodu míru",["X"]] +["1","14:10","Březová, aut. st.",["X"]] +["3","14:21","Závodu míru",["X"]] +["1","14:34","Březová, aut. st.",["X"]] +["6","14:34","Sídl. Michal škola",["X"]] +["4","14:42","Závodu míru",["X"]] +["3","14:43","Závodu míru",["X"]] +["33","14:46","Sídl. Michal škola",["X"]] +["3","14:52","Závodu míru",["X"]] +["1","15:09","Březová, aut. st.",["X"]] +["33","15:09","Sídl. Michal škola",["X"]] +["3","15:13","Závodu míru",["X"]] +["6","15:14","Sídl. Michal škola",["X"]] +["3","15:23","Sokolov, Hrušková",["X","42"]] +["3","15:30","Závodu míru",["X"]] +["1","15:31","Březová, aut. st.",["X"]] +["33","15:39","Sídl. Michal škola",["X"]] +["3","15:39","Jezero Michal",["X"]] +["7","15:54","Březová, aut.st.",["X"]] +["3","16:00","Sídl. Michal škola",["X","42"]] +["4","16:06","Závodu míru",["X"]] +["33","16:14","Sídl. Michal škola",["X"]] +["3","16:14","Závodu míru",["X"]] +["1","16:21","Březová, aut. st.",["X"]] +["7","16:29","Březová, aut.st.",["X"]] +["3","16:35","Závodu míru",["X"]] +["6","16:44","Sídl. Michal škola",["X","42"]] +["3","16:48","Závodu míru",["X"]] +["4","16:51","Závodu míru",["X","42"]] +["7","16:59","Březová, aut.st.",["X"]] +["3","17:09","Jezero Michal",["X"]] +["3","17:18","Závodu míru",["X"]] +["3","17:34","Závodu míru",["X"]] +["1","17:38","Březová, aut. st.",["X"]] +["3","17:57","Závodu míru",["X"]] +["3","18:14","Závodu míru",["X"]] +["3","18:21","Závodu míru",["X"]] +["1","18:26","Březová, aut. st.",["X"]] +["3","18:34","Závodu míru",["X"]] +["3","18:54","Závodu míru",["X"]] +["1","19:08","Březová, aut. st.",["X"]] +["3","19:19","Závodu míru",["X","31"]] +["3","19:34","Závodu míru",["X","31"]] +["1","19:53","Březová, aut. st.",["X","31"]] +["3","19:54","Závodu míru",["X","31"]] +["3","20:19","Závodu míru",["X","31"]] +["3","20:49","Závodu míru",["X","31"]] +["1","20:55","Březová, aut. st.",["X","31"]] +["3","21:09","Závodu míru",["X","31"]] +["3","21:24","Stará Ovčárna",["X","31"]] +["1","21:38","Březová, aut. st.",["X","31"]] +["3","22:12","Stará Ovčárna",["X","31"]] +["1","22:28","Březová, aut. st.",["X","31"]] +["3","22:41","Závodu míru",["X","31"]] + +["27.6","Patek"] +["3","04:29","Závodu míru",["X"]] +["1","04:50","Březová, aut. st.",["X"]] +["3","04:52","Závodu míru",["X"]] +["3","05:02","Závodu míru",["X"]] +["4","05:05","Závodu míru",["X"]] +["6","05:07","Sídl. Michal škola",["X","42"]] +["6","05:07","Závodu míru",["X","32"]] +["3","05:09","Závodu míru",["X","42"]] +["3","05:22","Závodu míru",["X"]] +["1","05:23","Březová, aut. st.",["X"]] +["6","05:34","Sídl. Michal škola",["X","42"]] +["4","05:35","Stará Ovčárna",["X"]] +["3","05:36","Sídl. Michal škola",["X","42"]] +["3","05:38","Sídliště Michal",["X","32"]] +["1","05:51","Březová, aut. st.",["X"]] +["3","05:58","Závodu míru",["X"]] +["6","06:04","Sídl. Michal škola",["X","42"]] +["1","06:13","Březová, aut. st.",["X"]] +["3","06:16","Závodu míru",["X","42"]] +["3","06:19","Závodu míru",["X","32"]] +["3","06:24","Sídliště Michal",["X"]] +["4","06:31","Závodu míru",["X","42"]] +["6","06:32","Sídl. Michal škola",["X","32"]] +["3","06:34","Závodu míru",["X"]] +["6","06:34","Sídl. Michal škola",["X","42"]] +["1","06:46","Březová, aut. st.",["X"]] +["33","06:49","Sídl. Michal škola",["X","42"]] +["3","06:56","Závodu míru",["X","32"]] +["3","06:56","Závodu míru",["X","42"]] +["3","07:04","Závodu míru",["X"]] +["1","07:05","Březová, aut. st.",["X"]] +["3","07:14","Závodu míru",["X"]] +["6","07:23","Sídl. Michal škola",["X","42"]] +["3","07:27","Sídliště Michal",["X","32"]] +["2","07:31","Sídliště Michal",["X","42"]] +["3","07:34","Závodu míru",["X","42"]] +["4","07:34","Závodu míru",["X"]] +["1","07:35","Březová, aut. st.",["X"]] +["3","07:45","Sídliště Michal",["X"]] +["33","07:54","Sídl. Michal škola",["X","42"]] +["1","07:55","Březová, aut. st.",["X"]] +["3","07:58","Závodu míru",["X","42"]] +["3","08:10","Závodu míru",["X","32"]] +["3","08:15","Závodu míru",["X","42"]] +["1","08:18","Březová, aut. st.",["X"]] +["33","08:29","Sídl. Michal škola",["X"]] +["3","08:34","Závodu míru",["X"]] +["3","08:50","Stará Ovčárna",["X"]] +["33","08:54","Sídl. Michal škola",["X"]] +["3","09:04","Závodu míru",["X"]] +["1","09:09","Březová, aut. st.",["X"]] +["3","09:24","Závodu míru",["X"]] +["33","09:34","Sídl. Michal škola",["X"]] +["4","09:41","Sídliště Michal",["X"]] +["3","09:45","Závodu míru",["X"]] +["1","09:58","Březová, aut. st.",["X"]] +["3","09:59","Jezero Michal",["X"]] +["7","10:14","Březová, aut.st.",["X"]] +["33","10:24","Sídl. Michal škola",["X"]] +["3","10:40","Závodu míru",["X"]] +["1","10:55","Březová, aut. st.",["X"]] +["3","10:55","Závodu míru",["X"]] +["3","11:17","Závodu míru",["X"]] +["33","11:29","Sídl. Michal škola",["X"]] +["3","11:44","Závodu míru",["X"]] +["1","11:46","Březová, aut. st.",["X"]] +["33","11:56","Sídl. Michal škola",["X"]] +["3","12:05","Závodu míru",["X"]] +["3","12:24","Jezero Michal",["X"]] +["1","12:33","Březová, aut. st.",["X"]] +["3","12:44","Závodu míru",["X"]] +["3","12:59","Závodu míru",["X"]] +["6","12:59","Sídl. Michal škola",["X","42"]] +["33","13:04","Sídl. Michal škola",["X"]] +["1","13:06","Březová, aut. st.",["X"]] +["3","13:15","Závodu míru",["X"]] +["2","13:17","Sídliště Michal",["X"]] +["1","13:22","Březová, aut. st.",["X"]] +["3","13:24","Stará Ovčárna",["X"]] +["33","13:39","Sídl. Michal škola",["X"]] +["1","13:48","Březová, aut. st.",["X"]] +["33","14:04","Sídl. Michal škola",["X"]] +["6","14:04","Sídl. Michal škola",["X"]] +["4","14:06","Stará Ovčárna",["X"]] +["3","14:09","Závodu míru",["X"]] +["1","14:10","Březová, aut. st.",["X"]] +["3","14:21","Závodu míru",["X"]] +["1","14:34","Březová, aut. st.",["X"]] +["6","14:34","Sídl. Michal škola",["X"]] +["4","14:42","Závodu míru",["X"]] +["3","14:43","Závodu míru",["X"]] +["33","14:46","Sídl. Michal škola",["X"]] +["3","14:52","Závodu míru",["X"]] +["1","15:09","Březová, aut. st.",["X"]] +["33","15:09","Sídl. Michal škola",["X"]] +["3","15:13","Závodu míru",["X"]] +["6","15:14","Sídl. Michal škola",["X"]] +["3","15:23","Sokolov, Hrušková",["X","42"]] +["3","15:30","Závodu míru",["X"]] +["1","15:31","Březová, aut. st.",["X"]] +["33","15:39","Sídl. Michal škola",["X"]] +["3","15:39","Jezero Michal",["X"]] +["7","15:54","Březová, aut.st.",["X"]] +["3","16:00","Sídl. Michal škola",["X","42"]] +["4","16:06","Závodu míru",["X"]] +["33","16:14","Sídl. Michal škola",["X"]] +["3","16:14","Závodu míru",["X"]] +["1","16:21","Březová, aut. st.",["X"]] +["7","16:29","Březová, aut.st.",["X"]] +["3","16:35","Závodu míru",["X"]] +["6","16:44","Sídl. Michal škola",["X","42"]] +["3","16:48","Závodu míru",["X"]] +["4","16:51","Závodu míru",["X","42"]] +["7","16:59","Březová, aut.st.",["X"]] +["3","17:09","Jezero Michal",["X"]] +["3","17:18","Závodu míru",["X"]] +["3","17:34","Závodu míru",["X"]] +["1","17:38","Březová, aut. st.",["X"]] +["3","17:57","Závodu míru",["X"]] +["3","18:14","Závodu míru",["X"]] +["3","18:21","Závodu míru",["X"]] +["1","18:26","Březová, aut. st.",["X"]] +["3","18:34","Závodu míru",["X"]] +["3","18:54","Závodu míru",["X"]] +["1","19:08","Březová, aut. st.",["X"]] +["3","19:19","Závodu míru",["X","31"]] +["3","19:34","Závodu míru",["X","31"]] +["1","19:53","Březová, aut. st.",["X","31"]] +["3","19:54","Závodu míru",["X","31"]] +["3","20:19","Závodu míru",["X","31"]] +["3","20:49","Závodu míru",["X","31"]] +["1","20:55","Březová, aut. st.",["X","31"]] +["3","21:09","Závodu míru",["X","31"]] +["3","21:24","Stará Ovčárna",["X","31"]] +["1","21:38","Březová, aut. st.",["X","31"]] +["3","22:12","Stará Ovčárna",["X","31"]] +["1","22:28","Březová, aut. st.",["X","31"]] +["3","22:41","Závodu míru",["X","31"]] + +["28.6","Sobota"] +["3","04:56","Závodu míru",["6+","25"]] +["1","05:47","Březová, aut. st.",["6+","25"]] +["3","05:57","Závodu míru",["6+","25"]] +["3","06:24","Závodu míru",["6+","25"]] +["3","06:56","Závodu míru",["6+"]] +["1","06:57","Březová, aut. st.",["6+","25"]] +["3","07:19","Závodu míru",["6+"]] +["3","07:51","Závodu míru",["6+"]] +["1","07:57","Březová, aut. st.",["6+"]] +["3","08:15","Závodu míru",["6+"]] +["3","08:51","Závodu míru",["6+"]] +["1","08:57","Březová, aut. st.",["6+"]] +["3","09:20","Závodu míru",["6+"]] +["1","09:44","Březová, aut. st.",["6+"]] +["3","09:51","Závodu míru",["6+"]] +["3","10:19","Závodu míru",["6+"]] +["1","10:57","Březová, aut. st.",["6+"]] +["3","11:02","Závodu míru",["6+"]] +["3","11:29","Závodu míru",["6+"]] +["1","11:49","Březová, aut. st.",["6+"]] +["3","11:51","Závodu míru",["6+"]] +["3","12:19","Závodu míru",["6+"]] +["3","12:51","Závodu míru",["6+"]] +["1","12:57","Březová, aut. st.",["6+"]] +["3","13:28","Závodu míru",["6+"]] +["3","13:51","Závodu míru",["6+"]] +["1","13:57","Březová, aut. st.",["6+"]] +["3","14:19","Závodu míru",["6+"]] +["1","14:49","Březová, aut. st.",["6+"]] +["3","14:51","Závodu míru",["6+"]] +["3","15:19","Závodu míru",["6+"]] +["3","15:51","Závodu míru",["6+"]] +["1","15:57","Březová, aut. st.",["6+"]] +["3","16:28","Závodu míru",["6+"]] +["3","16:53","Závodu míru",["6+"]] +["1","16:57","Březová, aut. st.",["6+"]] +["3","17:14","Závodu míru",["6+"]] +["3","17:51","Závodu míru",["6+"]] +["3","18:21","Stará Ovčárna",["6+"]] +["1","18:24","Březová, aut. st.",["6+"]] +["3","18:51","Závodu míru",["6+"]] +["3","19:14","Závodu míru",["6+","24"]] +["3","19:54","Závodu míru",["6+","24"]] +["1","19:57","Březová, aut. st.",["6+","24"]] +["1","20:28","Březová, aut. st.",["6+","24"]] +["3","20:49","Závodu míru",["6+","24"]] +["1","21:23","Březová, aut. st.",["6+","24"]] +["3","21:24","Závodu míru",["6+","24"]] +["3","22:04","Závodu míru",["6+","24"]] + +["28.6","Sobota"] +["3","04:56","Závodu míru",["6+","25"]] +["1","05:47","Březová, aut. st.",["6+","25"]] +["3","05:57","Závodu míru",["6+","25"]] +["3","06:24","Závodu míru",["6+","25"]] +["3","06:56","Závodu míru",["6+"]] +["1","06:57","Březová, aut. st.",["6+","25"]] +["3","07:19","Závodu míru",["6+"]] +["3","07:51","Závodu míru",["6+"]] +["1","07:57","Březová, aut. st.",["6+"]] +["3","08:15","Závodu míru",["6+"]] +["3","08:51","Závodu míru",["6+"]] +["1","08:57","Březová, aut. st.",["6+"]] +["3","09:20","Závodu míru",["6+"]] +["1","09:44","Březová, aut. st.",["6+"]] +["3","09:51","Závodu míru",["6+"]] +["3","10:19","Závodu míru",["6+"]] +["1","10:57","Březová, aut. st.",["6+"]] +["3","11:02","Závodu míru",["6+"]] +["3","11:29","Závodu míru",["6+"]] +["1","11:49","Březová, aut. st.",["6+"]] +["3","11:51","Závodu míru",["6+"]] +["3","12:19","Závodu míru",["6+"]] +["3","12:51","Závodu míru",["6+"]] +["1","12:57","Březová, aut. st.",["6+"]] +["3","13:28","Závodu míru",["6+"]] +["3","13:51","Závodu míru",["6+"]] +["1","13:57","Březová, aut. st.",["6+"]] +["3","14:19","Závodu míru",["6+"]] +["1","14:49","Březová, aut. st.",["6+"]] +["3","14:51","Závodu míru",["6+"]] +["3","15:19","Závodu míru",["6+"]] +["3","15:51","Závodu míru",["6+"]] +["1","15:57","Březová, aut. st.",["6+"]] +["3","16:28","Závodu míru",["6+"]] +["3","16:53","Závodu míru",["6+"]] +["1","16:57","Březová, aut. st.",["6+"]] +["3","17:14","Závodu míru",["6+"]] +["3","17:51","Závodu míru",["6+"]] +["3","18:21","Stará Ovčárna",["6+"]] +["1","18:24","Březová, aut. st.",["6+"]] +["3","18:51","Závodu míru",["6+"]] +["3","19:14","Závodu míru",["6+","24"]] +["3","19:54","Závodu míru",["6+","24"]] +["1","19:57","Březová, aut. st.",["6+","24"]] +["1","20:28","Březová, aut. st.",["6+","24"]] +["3","20:49","Závodu míru",["6+","24"]] +["1","21:23","Březová, aut. st.",["6+","24"]] +["3","21:24","Závodu míru",["6+","24"]] +["3","22:04","Závodu míru",["6+","24"]] + +["29.6","Nedele"] +["3","04:56","Závodu míru",["6+","25"]] +["1","05:47","Březová, aut. st.",["6+","25"]] +["3","05:57","Závodu míru",["6+","25"]] +["3","06:24","Závodu míru",["6+","25"]] +["3","06:56","Závodu míru",["6+"]] +["1","06:57","Březová, aut. st.",["6+","25"]] +["3","07:19","Závodu míru",["6+"]] +["3","07:51","Závodu míru",["6+"]] +["1","07:57","Březová, aut. st.",["6+"]] +["3","08:15","Závodu míru",["6+"]] +["3","08:51","Závodu míru",["6+"]] +["1","08:57","Březová, aut. st.",["6+"]] +["3","09:20","Závodu míru",["6+"]] +["1","09:44","Březová, aut. st.",["6+"]] +["3","09:51","Závodu míru",["6+"]] +["3","10:19","Závodu míru",["6+"]] +["1","10:57","Březová, aut. st.",["6+"]] +["3","11:02","Závodu míru",["6+"]] +["3","11:29","Závodu míru",["6+"]] +["1","11:49","Březová, aut. st.",["6+"]] +["3","11:51","Závodu míru",["6+"]] +["3","12:19","Závodu míru",["6+"]] +["3","12:51","Závodu míru",["6+"]] +["1","12:57","Březová, aut. st.",["6+"]] +["3","13:28","Závodu míru",["6+"]] +["3","13:51","Závodu míru",["6+"]] +["1","13:57","Březová, aut. st.",["6+"]] +["3","14:19","Závodu míru",["6+"]] +["1","14:49","Březová, aut. st.",["6+"]] +["3","14:51","Závodu míru",["6+"]] +["3","15:19","Závodu míru",["6+"]] +["3","15:51","Závodu míru",["6+"]] +["1","15:57","Březová, aut. st.",["6+"]] +["3","16:28","Závodu míru",["6+"]] +["3","16:53","Závodu míru",["6+"]] +["1","16:57","Březová, aut. st.",["6+"]] +["3","17:14","Závodu míru",["6+"]] +["3","17:51","Závodu míru",["6+"]] +["3","18:21","Stará Ovčárna",["6+"]] +["1","18:24","Březová, aut. st.",["6+"]] +["3","18:51","Závodu míru",["6+"]] +["3","19:14","Závodu míru",["6+","24"]] +["3","19:54","Závodu míru",["6+","24"]] +["1","19:57","Březová, aut. st.",["6+","24"]] +["1","20:28","Březová, aut. st.",["6+","24"]] +["3","20:49","Závodu míru",["6+","24"]] +["1","21:23","Březová, aut. st.",["6+","24"]] +["3","21:24","Závodu míru",["6+","24"]] +["3","22:04","Závodu míru",["6+","24"]] + +["29.6","Nedele"] +["3","04:56","Závodu míru",["6+","25"]] +["1","05:47","Březová, aut. st.",["6+","25"]] +["3","05:57","Závodu míru",["6+","25"]] +["3","06:24","Závodu míru",["6+","25"]] +["3","06:56","Závodu míru",["6+"]] +["1","06:57","Březová, aut. st.",["6+","25"]] +["3","07:19","Závodu míru",["6+"]] +["3","07:51","Závodu míru",["6+"]] +["1","07:57","Březová, aut. st.",["6+"]] +["3","08:15","Závodu míru",["6+"]] +["3","08:51","Závodu míru",["6+"]] +["1","08:57","Březová, aut. st.",["6+"]] +["3","09:20","Závodu míru",["6+"]] +["1","09:44","Březová, aut. st.",["6+"]] +["3","09:51","Závodu míru",["6+"]] +["3","10:19","Závodu míru",["6+"]] +["1","10:57","Březová, aut. st.",["6+"]] +["3","11:02","Závodu míru",["6+"]] +["3","11:29","Závodu míru",["6+"]] +["1","11:49","Březová, aut. st.",["6+"]] +["3","11:51","Závodu míru",["6+"]] +["3","12:19","Závodu míru",["6+"]] +["3","12:51","Závodu míru",["6+"]] +["1","12:57","Březová, aut. st.",["6+"]] +["3","13:28","Závodu míru",["6+"]] +["3","13:51","Závodu míru",["6+"]] +["1","13:57","Březová, aut. st.",["6+"]] +["3","14:19","Závodu míru",["6+"]] +["1","14:49","Březová, aut. st.",["6+"]] +["3","14:51","Závodu míru",["6+"]] +["3","15:19","Závodu míru",["6+"]] +["3","15:51","Závodu míru",["6+"]] +["1","15:57","Březová, aut. st.",["6+"]] +["3","16:28","Závodu míru",["6+"]] +["3","16:53","Závodu míru",["6+"]] +["1","16:57","Březová, aut. st.",["6+"]] +["3","17:14","Závodu míru",["6+"]] +["3","17:51","Závodu míru",["6+"]] +["3","18:21","Stará Ovčárna",["6+"]] +["1","18:24","Březová, aut. st.",["6+"]] +["3","18:51","Závodu míru",["6+"]] +["3","19:14","Závodu míru",["6+","24"]] +["3","19:54","Závodu míru",["6+","24"]] +["1","19:57","Březová, aut. st.",["6+","24"]] +["1","20:28","Březová, aut. st.",["6+","24"]] +["3","20:49","Závodu míru",["6+","24"]] +["1","21:23","Březová, aut. st.",["6+","24"]] +["3","21:24","Závodu míru",["6+","24"]] +["3","22:04","Závodu míru",["6+","24"]] + +["30.6","Pondeli"] +["3","04:29","Závodu míru",["X"]] +["1","04:50","Březová, aut. st.",["X"]] +["3","04:52","Závodu míru",["X"]] +["3","05:02","Závodu míru",["X"]] +["4","05:05","Závodu míru",["X"]] +["6","05:07","Sídl. Michal škola",["X","42"]] +["6","05:07","Závodu míru",["X","32"]] +["3","05:09","Závodu míru",["X","42"]] +["3","05:22","Závodu míru",["X"]] +["1","05:23","Březová, aut. st.",["X"]] +["6","05:34","Sídl. Michal škola",["X","42"]] +["4","05:35","Stará Ovčárna",["X"]] +["3","05:36","Sídl. Michal škola",["X","42"]] +["3","05:38","Sídliště Michal",["X","32"]] +["1","05:51","Březová, aut. st.",["X"]] +["3","05:58","Závodu míru",["X"]] +["6","06:04","Sídl. Michal škola",["X","42"]] +["1","06:13","Březová, aut. st.",["X"]] +["3","06:16","Závodu míru",["X","42"]] +["3","06:19","Závodu míru",["X","32"]] +["3","06:24","Sídliště Michal",["X"]] +["4","06:31","Závodu míru",["X","42"]] +["6","06:32","Sídl. Michal škola",["X","32"]] +["3","06:34","Závodu míru",["X"]] +["6","06:34","Sídl. Michal škola",["X","42"]] +["1","06:46","Březová, aut. st.",["X"]] +["33","06:49","Sídl. Michal škola",["X","42"]] +["3","06:56","Závodu míru",["X","32"]] +["3","06:56","Závodu míru",["X","42"]] +["3","07:04","Závodu míru",["X"]] +["1","07:05","Březová, aut. st.",["X"]] +["3","07:14","Závodu míru",["X"]] +["6","07:23","Sídl. Michal škola",["X","42"]] +["3","07:27","Sídliště Michal",["X","32"]] +["2","07:31","Sídliště Michal",["X","42"]] +["3","07:34","Závodu míru",["X","42"]] +["4","07:34","Závodu míru",["X"]] +["1","07:35","Březová, aut. st.",["X"]] +["3","07:45","Sídliště Michal",["X"]] +["33","07:54","Sídl. Michal škola",["X","42"]] +["1","07:55","Březová, aut. st.",["X"]] +["3","07:58","Závodu míru",["X","42"]] +["3","08:10","Závodu míru",["X","32"]] +["3","08:15","Závodu míru",["X","42"]] +["1","08:18","Březová, aut. st.",["X"]] +["33","08:29","Sídl. Michal škola",["X"]] +["3","08:34","Závodu míru",["X"]] +["3","08:50","Stará Ovčárna",["X"]] +["33","08:54","Sídl. Michal škola",["X"]] +["3","09:04","Závodu míru",["X"]] +["1","09:09","Březová, aut. st.",["X"]] +["3","09:24","Závodu míru",["X"]] +["33","09:34","Sídl. Michal škola",["X"]] +["4","09:41","Sídliště Michal",["X"]] +["3","09:45","Závodu míru",["X"]] +["1","09:58","Březová, aut. st.",["X"]] +["3","09:59","Jezero Michal",["X"]] +["7","10:14","Březová, aut.st.",["X"]] +["33","10:24","Sídl. Michal škola",["X"]] +["3","10:40","Závodu míru",["X"]] +["1","10:55","Březová, aut. st.",["X"]] +["3","10:55","Závodu míru",["X"]] +["3","11:17","Závodu míru",["X"]] +["33","11:29","Sídl. Michal škola",["X"]] +["3","11:44","Závodu míru",["X"]] +["1","11:46","Březová, aut. st.",["X"]] +["33","11:56","Sídl. Michal škola",["X"]] +["3","12:05","Závodu míru",["X"]] +["3","12:24","Jezero Michal",["X"]] +["1","12:33","Březová, aut. st.",["X"]] +["3","12:44","Závodu míru",["X"]] +["3","12:59","Závodu míru",["X"]] +["6","12:59","Sídl. Michal škola",["X","42"]] +["33","13:04","Sídl. Michal škola",["X"]] +["1","13:06","Březová, aut. st.",["X"]] +["3","13:15","Závodu míru",["X"]] +["2","13:17","Sídliště Michal",["X"]] +["1","13:22","Březová, aut. st.",["X"]] +["3","13:24","Stará Ovčárna",["X"]] +["33","13:39","Sídl. Michal škola",["X"]] +["1","13:48","Březová, aut. st.",["X"]] +["33","14:04","Sídl. Michal škola",["X"]] +["6","14:04","Sídl. Michal škola",["X"]] +["4","14:06","Stará Ovčárna",["X"]] +["3","14:09","Závodu míru",["X"]] +["1","14:10","Březová, aut. st.",["X"]] +["3","14:21","Závodu míru",["X"]] +["1","14:34","Březová, aut. st.",["X"]] +["6","14:34","Sídl. Michal škola",["X"]] +["4","14:42","Závodu míru",["X"]] +["3","14:43","Závodu míru",["X"]] +["33","14:46","Sídl. Michal škola",["X"]] +["3","14:52","Závodu míru",["X"]] +["1","15:09","Březová, aut. st.",["X"]] +["33","15:09","Sídl. Michal škola",["X"]] +["3","15:13","Závodu míru",["X"]] +["6","15:14","Sídl. Michal škola",["X"]] +["3","15:23","Sokolov, Hrušková",["X","42"]] +["3","15:30","Závodu míru",["X"]] +["1","15:31","Březová, aut. st.",["X"]] +["33","15:39","Sídl. Michal škola",["X"]] +["3","15:39","Jezero Michal",["X"]] +["7","15:54","Březová, aut.st.",["X"]] +["3","16:00","Sídl. Michal škola",["X","42"]] +["4","16:06","Závodu míru",["X"]] +["33","16:14","Sídl. Michal škola",["X"]] +["3","16:14","Závodu míru",["X"]] +["1","16:21","Březová, aut. st.",["X"]] +["7","16:29","Březová, aut.st.",["X"]] +["3","16:35","Závodu míru",["X"]] +["6","16:44","Sídl. Michal škola",["X","42"]] +["3","16:48","Závodu míru",["X"]] +["4","16:51","Závodu míru",["X","42"]] +["7","16:59","Březová, aut.st.",["X"]] +["3","17:09","Jezero Michal",["X"]] +["3","17:18","Závodu míru",["X"]] +["3","17:34","Závodu míru",["X"]] +["1","17:38","Březová, aut. st.",["X"]] +["3","17:57","Závodu míru",["X"]] +["3","18:14","Závodu míru",["X"]] +["3","18:21","Závodu míru",["X"]] +["1","18:26","Březová, aut. st.",["X"]] +["3","18:34","Závodu míru",["X"]] +["3","18:54","Závodu míru",["X"]] +["1","19:08","Březová, aut. st.",["X"]] +["3","19:19","Závodu míru",["X","31"]] +["3","19:34","Závodu míru",["X","31"]] +["1","19:53","Březová, aut. st.",["X","31"]] +["3","19:54","Závodu míru",["X","31"]] +["3","20:19","Závodu míru",["X","31"]] +["3","20:49","Závodu míru",["X","31"]] +["1","20:55","Březová, aut. st.",["X","31"]] +["3","21:09","Závodu míru",["X","31"]] +["3","21:24","Stará Ovčárna",["X","31"]] +["1","21:38","Březová, aut. st.",["X","31"]] +["3","22:12","Stará Ovčárna",["X","31"]] +["1","22:28","Březová, aut. st.",["X","31"]] +["3","22:41","Závodu míru",["X","31"]] + +["30.6","Pondeli"] +["3","04:29","Závodu míru",["X"]] +["1","04:50","Březová, aut. st.",["X"]] +["3","04:52","Závodu míru",["X"]] +["3","05:02","Závodu míru",["X"]] +["4","05:05","Závodu míru",["X"]] +["6","05:07","Sídl. Michal škola",["X","42"]] +["6","05:07","Závodu míru",["X","32"]] +["3","05:09","Závodu míru",["X","42"]] +["3","05:22","Závodu míru",["X"]] +["1","05:23","Březová, aut. st.",["X"]] +["6","05:34","Sídl. Michal škola",["X","42"]] +["4","05:35","Stará Ovčárna",["X"]] +["3","05:36","Sídl. Michal škola",["X","42"]] +["3","05:38","Sídliště Michal",["X","32"]] +["1","05:51","Březová, aut. st.",["X"]] +["3","05:58","Závodu míru",["X"]] +["6","06:04","Sídl. Michal škola",["X","42"]] +["1","06:13","Březová, aut. st.",["X"]] +["3","06:16","Závodu míru",["X","42"]] +["3","06:19","Závodu míru",["X","32"]] +["3","06:24","Sídliště Michal",["X"]] +["4","06:31","Závodu míru",["X","42"]] +["6","06:32","Sídl. Michal škola",["X","32"]] +["3","06:34","Závodu míru",["X"]] +["6","06:34","Sídl. Michal škola",["X","42"]] +["1","06:46","Březová, aut. st.",["X"]] +["33","06:49","Sídl. Michal škola",["X","42"]] +["3","06:56","Závodu míru",["X","32"]] +["3","06:56","Závodu míru",["X","42"]] +["3","07:04","Závodu míru",["X"]] +["1","07:05","Březová, aut. st.",["X"]] +["3","07:14","Závodu míru",["X"]] +["6","07:23","Sídl. Michal škola",["X","42"]] +["3","07:27","Sídliště Michal",["X","32"]] +["2","07:31","Sídliště Michal",["X","42"]] +["3","07:34","Závodu míru",["X","42"]] +["4","07:34","Závodu míru",["X"]] +["1","07:35","Březová, aut. st.",["X"]] +["3","07:45","Sídliště Michal",["X"]] +["33","07:54","Sídl. Michal škola",["X","42"]] +["1","07:55","Březová, aut. st.",["X"]] +["3","07:58","Závodu míru",["X","42"]] +["3","08:10","Závodu míru",["X","32"]] +["3","08:15","Závodu míru",["X","42"]] +["1","08:18","Březová, aut. st.",["X"]] +["33","08:29","Sídl. Michal škola",["X"]] +["3","08:34","Závodu míru",["X"]] +["3","08:50","Stará Ovčárna",["X"]] +["33","08:54","Sídl. Michal škola",["X"]] +["3","09:04","Závodu míru",["X"]] +["1","09:09","Březová, aut. st.",["X"]] +["3","09:24","Závodu míru",["X"]] +["33","09:34","Sídl. Michal škola",["X"]] +["4","09:41","Sídliště Michal",["X"]] +["3","09:45","Závodu míru",["X"]] +["1","09:58","Březová, aut. st.",["X"]] +["3","09:59","Jezero Michal",["X"]] +["7","10:14","Březová, aut.st.",["X"]] +["33","10:24","Sídl. Michal škola",["X"]] +["3","10:40","Závodu míru",["X"]] +["1","10:55","Březová, aut. st.",["X"]] +["3","10:55","Závodu míru",["X"]] +["3","11:17","Závodu míru",["X"]] +["33","11:29","Sídl. Michal škola",["X"]] +["3","11:44","Závodu míru",["X"]] +["1","11:46","Březová, aut. st.",["X"]] +["33","11:56","Sídl. Michal škola",["X"]] +["3","12:05","Závodu míru",["X"]] +["3","12:24","Jezero Michal",["X"]] +["1","12:33","Březová, aut. st.",["X"]] +["3","12:44","Závodu míru",["X"]] +["3","12:59","Závodu míru",["X"]] +["6","12:59","Sídl. Michal škola",["X","42"]] +["33","13:04","Sídl. Michal škola",["X"]] +["1","13:06","Březová, aut. st.",["X"]] +["3","13:15","Závodu míru",["X"]] +["2","13:17","Sídliště Michal",["X"]] +["1","13:22","Březová, aut. st.",["X"]] +["3","13:24","Stará Ovčárna",["X"]] +["33","13:39","Sídl. Michal škola",["X"]] +["1","13:48","Březová, aut. st.",["X"]] +["33","14:04","Sídl. Michal škola",["X"]] +["6","14:04","Sídl. Michal škola",["X"]] +["4","14:06","Stará Ovčárna",["X"]] +["3","14:09","Závodu míru",["X"]] +["1","14:10","Březová, aut. st.",["X"]] +["3","14:21","Závodu míru",["X"]] +["1","14:34","Březová, aut. st.",["X"]] +["6","14:34","Sídl. Michal škola",["X"]] +["4","14:42","Závodu míru",["X"]] +["3","14:43","Závodu míru",["X"]] +["33","14:46","Sídl. Michal škola",["X"]] +["3","14:52","Závodu míru",["X"]] +["1","15:09","Březová, aut. st.",["X"]] +["33","15:09","Sídl. Michal škola",["X"]] +["3","15:13","Závodu míru",["X"]] +["6","15:14","Sídl. Michal škola",["X"]] +["3","15:23","Sokolov, Hrušková",["X","42"]] +["3","15:30","Závodu míru",["X"]] +["1","15:31","Březová, aut. st.",["X"]] +["33","15:39","Sídl. Michal škola",["X"]] +["3","15:39","Jezero Michal",["X"]] +["7","15:54","Březová, aut.st.",["X"]] +["3","16:00","Sídl. Michal škola",["X","42"]] +["4","16:06","Závodu míru",["X"]] +["33","16:14","Sídl. Michal škola",["X"]] +["3","16:14","Závodu míru",["X"]] +["1","16:21","Březová, aut. st.",["X"]] +["7","16:29","Březová, aut.st.",["X"]] +["3","16:35","Závodu míru",["X"]] +["6","16:44","Sídl. Michal škola",["X","42"]] +["3","16:48","Závodu míru",["X"]] +["4","16:51","Závodu míru",["X","42"]] +["7","16:59","Březová, aut.st.",["X"]] +["3","17:09","Jezero Michal",["X"]] +["3","17:18","Závodu míru",["X"]] +["3","17:34","Závodu míru",["X"]] +["1","17:38","Březová, aut. st.",["X"]] +["3","17:57","Závodu míru",["X"]] +["3","18:14","Závodu míru",["X"]] +["3","18:21","Závodu míru",["X"]] +["1","18:26","Březová, aut. st.",["X"]] +["3","18:34","Závodu míru",["X"]] +["3","18:54","Závodu míru",["X"]] +["1","19:08","Březová, aut. st.",["X"]] +["3","19:19","Závodu míru",["X","31"]] +["3","19:34","Závodu míru",["X","31"]] +["1","19:53","Březová, aut. st.",["X","31"]] +["3","19:54","Závodu míru",["X","31"]] +["3","20:19","Závodu míru",["X","31"]] +["3","20:49","Závodu míru",["X","31"]] +["1","20:55","Březová, aut. st.",["X","31"]] +["3","21:09","Závodu míru",["X","31"]] +["3","21:24","Stará Ovčárna",["X","31"]] +["1","21:38","Březová, aut. st.",["X","31"]] +["3","22:12","Stará Ovčárna",["X","31"]] +["1","22:28","Březová, aut. st.",["X","31"]] +["3","22:41","Závodu míru",["X","31"]] + +["1.7","Uteri"] +["3","04:29","Závodu míru",["X"]] +["1","04:50","Březová, aut. st.",["X"]] +["3","04:52","Závodu míru",["X"]] +["3","05:02","Závodu míru",["X"]] +["4","05:05","Závodu míru",["X"]] +["6","05:07","Sídl. Michal škola",["X","42"]] +["6","05:07","Závodu míru",["X","32"]] +["3","05:09","Závodu míru",["X","42"]] +["3","05:22","Závodu míru",["X"]] +["1","05:23","Březová, aut. st.",["X"]] +["6","05:34","Sídl. Michal škola",["X","42"]] +["4","05:35","Stará Ovčárna",["X"]] +["3","05:36","Sídl. Michal škola",["X","42"]] +["3","05:38","Sídliště Michal",["X","32"]] +["1","05:51","Březová, aut. st.",["X"]] +["3","05:58","Závodu míru",["X"]] +["6","06:04","Sídl. Michal škola",["X","42"]] +["1","06:13","Březová, aut. st.",["X"]] +["3","06:16","Závodu míru",["X","42"]] +["3","06:19","Závodu míru",["X","32"]] +["3","06:24","Sídliště Michal",["X"]] +["4","06:31","Závodu míru",["X","42"]] +["6","06:32","Sídl. Michal škola",["X","32"]] +["3","06:34","Závodu míru",["X"]] +["6","06:34","Sídl. Michal škola",["X","42"]] +["1","06:46","Březová, aut. st.",["X"]] +["33","06:49","Sídl. Michal škola",["X","42"]] +["3","06:56","Závodu míru",["X","32"]] +["3","06:56","Závodu míru",["X","42"]] +["3","07:04","Závodu míru",["X"]] +["1","07:05","Březová, aut. st.",["X"]] +["3","07:14","Závodu míru",["X"]] +["6","07:23","Sídl. Michal škola",["X","42"]] +["3","07:27","Sídliště Michal",["X","32"]] +["2","07:31","Sídliště Michal",["X","42"]] +["3","07:34","Závodu míru",["X","42"]] +["4","07:34","Závodu míru",["X"]] +["1","07:35","Březová, aut. st.",["X"]] +["3","07:45","Sídliště Michal",["X"]] +["33","07:54","Sídl. Michal škola",["X","42"]] +["1","07:55","Březová, aut. st.",["X"]] +["3","07:58","Závodu míru",["X","42"]] +["3","08:10","Závodu míru",["X","32"]] +["3","08:15","Závodu míru",["X","42"]] +["1","08:18","Březová, aut. st.",["X"]] +["33","08:29","Sídl. Michal škola",["X"]] +["3","08:34","Závodu míru",["X"]] +["3","08:50","Stará Ovčárna",["X"]] +["33","08:54","Sídl. Michal škola",["X"]] +["3","09:04","Závodu míru",["X"]] +["1","09:09","Březová, aut. st.",["X"]] +["3","09:24","Závodu míru",["X"]] +["33","09:34","Sídl. Michal škola",["X"]] +["4","09:41","Sídliště Michal",["X"]] +["3","09:45","Závodu míru",["X"]] +["1","09:58","Březová, aut. st.",["X"]] +["3","09:59","Jezero Michal",["X"]] +["7","10:14","Březová, aut.st.",["X"]] +["33","10:24","Sídl. Michal škola",["X"]] +["3","10:40","Závodu míru",["X"]] +["1","10:55","Březová, aut. st.",["X"]] +["3","10:55","Závodu míru",["X"]] +["3","11:17","Závodu míru",["X"]] +["33","11:29","Sídl. Michal škola",["X"]] +["3","11:44","Závodu míru",["X"]] +["1","11:46","Březová, aut. st.",["X"]] +["33","11:56","Sídl. Michal škola",["X"]] +["3","12:05","Závodu míru",["X"]] +["3","12:24","Jezero Michal",["X"]] +["1","12:33","Březová, aut. st.",["X"]] +["3","12:44","Závodu míru",["X"]] +["3","12:59","Závodu míru",["X"]] +["6","12:59","Sídl. Michal škola",["X","42"]] +["33","13:04","Sídl. Michal škola",["X"]] +["1","13:06","Březová, aut. st.",["X"]] +["3","13:15","Závodu míru",["X"]] +["2","13:17","Sídliště Michal",["X"]] +["1","13:22","Březová, aut. st.",["X"]] +["3","13:24","Stará Ovčárna",["X"]] +["33","13:39","Sídl. Michal škola",["X"]] +["1","13:48","Březová, aut. st.",["X"]] +["33","14:04","Sídl. Michal škola",["X"]] +["6","14:04","Sídl. Michal škola",["X"]] +["4","14:06","Stará Ovčárna",["X"]] +["3","14:09","Závodu míru",["X"]] +["1","14:10","Březová, aut. st.",["X"]] +["3","14:21","Závodu míru",["X"]] +["1","14:34","Březová, aut. st.",["X"]] +["6","14:34","Sídl. Michal škola",["X"]] +["4","14:42","Závodu míru",["X"]] +["3","14:43","Závodu míru",["X"]] +["33","14:46","Sídl. Michal škola",["X"]] +["3","14:52","Závodu míru",["X"]] +["1","15:09","Březová, aut. st.",["X"]] +["33","15:09","Sídl. Michal škola",["X"]] +["3","15:13","Závodu míru",["X"]] +["6","15:14","Sídl. Michal škola",["X"]] +["3","15:23","Sokolov, Hrušková",["X","42"]] +["3","15:30","Závodu míru",["X"]] +["1","15:31","Březová, aut. st.",["X"]] +["33","15:39","Sídl. Michal škola",["X"]] +["3","15:39","Jezero Michal",["X"]] +["7","15:54","Březová, aut.st.",["X"]] +["3","16:00","Sídl. Michal škola",["X","42"]] +["4","16:06","Závodu míru",["X"]] +["33","16:14","Sídl. Michal škola",["X"]] +["3","16:14","Závodu míru",["X"]] +["1","16:21","Březová, aut. st.",["X"]] +["7","16:29","Březová, aut.st.",["X"]] +["3","16:35","Závodu míru",["X"]] +["6","16:44","Sídl. Michal škola",["X","42"]] +["3","16:48","Závodu míru",["X"]] +["4","16:51","Závodu míru",["X","42"]] +["7","16:59","Březová, aut.st.",["X"]] +["3","17:09","Jezero Michal",["X"]] +["3","17:18","Závodu míru",["X"]] +["3","17:34","Závodu míru",["X"]] +["1","17:38","Březová, aut. st.",["X"]] +["3","17:57","Závodu míru",["X"]] +["3","18:14","Závodu míru",["X"]] +["3","18:21","Závodu míru",["X"]] +["1","18:26","Březová, aut. st.",["X"]] +["3","18:34","Závodu míru",["X"]] +["3","18:54","Závodu míru",["X"]] +["1","19:08","Březová, aut. st.",["X"]] +["3","19:19","Závodu míru",["X","31"]] +["3","19:34","Závodu míru",["X","31"]] +["1","19:53","Březová, aut. st.",["X","31"]] +["3","19:54","Závodu míru",["X","31"]] +["3","20:19","Závodu míru",["X","31"]] +["3","20:49","Závodu míru",["X","31"]] +["1","20:55","Březová, aut. st.",["X","31"]] +["3","21:09","Závodu míru",["X","31"]] +["3","21:24","Stará Ovčárna",["X","31"]] +["1","21:38","Březová, aut. st.",["X","31"]] +["3","22:12","Stará Ovčárna",["X","31"]] +["1","22:28","Březová, aut. st.",["X","31"]] +["3","22:41","Závodu míru",["X","31"]] + +["1.7","Uteri"] +["3","04:29","Závodu míru",["X"]] +["1","04:50","Březová, aut. st.",["X"]] +["3","04:52","Závodu míru",["X"]] +["3","05:02","Závodu míru",["X"]] +["4","05:05","Závodu míru",["X"]] +["6","05:07","Sídl. Michal škola",["X","42"]] +["6","05:07","Závodu míru",["X","32"]] +["3","05:09","Závodu míru",["X","42"]] +["3","05:22","Závodu míru",["X"]] +["1","05:23","Březová, aut. st.",["X"]] +["6","05:34","Sídl. Michal škola",["X","42"]] +["4","05:35","Stará Ovčárna",["X"]] +["3","05:36","Sídl. Michal škola",["X","42"]] +["3","05:38","Sídliště Michal",["X","32"]] +["1","05:51","Březová, aut. st.",["X"]] +["3","05:58","Závodu míru",["X"]] +["6","06:04","Sídl. Michal škola",["X","42"]] +["1","06:13","Březová, aut. st.",["X"]] +["3","06:16","Závodu míru",["X","42"]] +["3","06:19","Závodu míru",["X","32"]] +["3","06:24","Sídliště Michal",["X"]] +["4","06:31","Závodu míru",["X","42"]] +["6","06:32","Sídl. Michal škola",["X","32"]] +["3","06:34","Závodu míru",["X"]] +["6","06:34","Sídl. Michal škola",["X","42"]] +["1","06:46","Březová, aut. st.",["X"]] +["33","06:49","Sídl. Michal škola",["X","42"]] +["3","06:56","Závodu míru",["X","32"]] +["3","06:56","Závodu míru",["X","42"]] +["3","07:04","Závodu míru",["X"]] +["1","07:05","Březová, aut. st.",["X"]] +["3","07:14","Závodu míru",["X"]] +["6","07:23","Sídl. Michal škola",["X","42"]] +["3","07:27","Sídliště Michal",["X","32"]] +["2","07:31","Sídliště Michal",["X","42"]] +["3","07:34","Závodu míru",["X","42"]] +["4","07:34","Závodu míru",["X"]] +["1","07:35","Březová, aut. st.",["X"]] +["3","07:45","Sídliště Michal",["X"]] +["33","07:54","Sídl. Michal škola",["X","42"]] +["1","07:55","Březová, aut. st.",["X"]] +["3","07:58","Závodu míru",["X","42"]] +["3","08:10","Závodu míru",["X","32"]] +["3","08:15","Závodu míru",["X","42"]] +["1","08:18","Březová, aut. st.",["X"]] +["33","08:29","Sídl. Michal škola",["X"]] +["3","08:34","Závodu míru",["X"]] +["3","08:50","Stará Ovčárna",["X"]] +["33","08:54","Sídl. Michal škola",["X"]] +["3","09:04","Závodu míru",["X"]] +["1","09:09","Březová, aut. st.",["X"]] +["3","09:24","Závodu míru",["X"]] +["33","09:34","Sídl. Michal škola",["X"]] +["4","09:41","Sídliště Michal",["X"]] +["3","09:45","Závodu míru",["X"]] +["1","09:58","Březová, aut. st.",["X"]] +["3","09:59","Jezero Michal",["X"]] +["7","10:14","Březová, aut.st.",["X"]] +["33","10:24","Sídl. Michal škola",["X"]] +["3","10:40","Závodu míru",["X"]] +["1","10:55","Březová, aut. st.",["X"]] +["3","10:55","Závodu míru",["X"]] +["3","11:17","Závodu míru",["X"]] +["33","11:29","Sídl. Michal škola",["X"]] +["3","11:44","Závodu míru",["X"]] +["1","11:46","Březová, aut. st.",["X"]] +["33","11:56","Sídl. Michal škola",["X"]] +["3","12:05","Závodu míru",["X"]] +["3","12:24","Jezero Michal",["X"]] +["1","12:33","Březová, aut. st.",["X"]] +["3","12:44","Závodu míru",["X"]] +["3","12:59","Závodu míru",["X"]] +["6","12:59","Sídl. Michal škola",["X","42"]] +["33","13:04","Sídl. Michal škola",["X"]] +["1","13:06","Březová, aut. st.",["X"]] +["3","13:15","Závodu míru",["X"]] +["2","13:17","Sídliště Michal",["X"]] +["1","13:22","Březová, aut. st.",["X"]] +["3","13:24","Stará Ovčárna",["X"]] +["33","13:39","Sídl. Michal škola",["X"]] +["1","13:48","Březová, aut. st.",["X"]] +["33","14:04","Sídl. Michal škola",["X"]] +["6","14:04","Sídl. Michal škola",["X"]] +["4","14:06","Stará Ovčárna",["X"]] +["3","14:09","Závodu míru",["X"]] +["1","14:10","Březová, aut. st.",["X"]] +["3","14:21","Závodu míru",["X"]] +["1","14:34","Březová, aut. st.",["X"]] +["6","14:34","Sídl. Michal škola",["X"]] +["4","14:42","Závodu míru",["X"]] +["3","14:43","Závodu míru",["X"]] +["33","14:46","Sídl. Michal škola",["X"]] +["3","14:52","Závodu míru",["X"]] +["1","15:09","Březová, aut. st.",["X"]] +["33","15:09","Sídl. Michal škola",["X"]] +["3","15:13","Závodu míru",["X"]] +["6","15:14","Sídl. Michal škola",["X"]] +["3","15:23","Sokolov, Hrušková",["X","42"]] +["3","15:30","Závodu míru",["X"]] +["1","15:31","Březová, aut. st.",["X"]] +["33","15:39","Sídl. Michal škola",["X"]] +["3","15:39","Jezero Michal",["X"]] +["7","15:54","Březová, aut.st.",["X"]] +["3","16:00","Sídl. Michal škola",["X","42"]] +["4","16:06","Závodu míru",["X"]] +["33","16:14","Sídl. Michal škola",["X"]] +["3","16:14","Závodu míru",["X"]] +["1","16:21","Březová, aut. st.",["X"]] +["7","16:29","Březová, aut.st.",["X"]] +["3","16:35","Závodu míru",["X"]] +["6","16:44","Sídl. Michal škola",["X","42"]] +["3","16:48","Závodu míru",["X"]] +["4","16:51","Závodu míru",["X","42"]] +["7","16:59","Březová, aut.st.",["X"]] +["3","17:09","Jezero Michal",["X"]] +["3","17:18","Závodu míru",["X"]] +["3","17:34","Závodu míru",["X"]] +["1","17:38","Březová, aut. st.",["X"]] +["3","17:57","Závodu míru",["X"]] +["3","18:14","Závodu míru",["X"]] +["3","18:21","Závodu míru",["X"]] +["1","18:26","Březová, aut. st.",["X"]] +["3","18:34","Závodu míru",["X"]] +["3","18:54","Závodu míru",["X"]] +["1","19:08","Březová, aut. st.",["X"]] +["3","19:19","Závodu míru",["X","31"]] +["3","19:34","Závodu míru",["X","31"]] +["1","19:53","Březová, aut. st.",["X","31"]] +["3","19:54","Závodu míru",["X","31"]] +["3","20:19","Závodu míru",["X","31"]] +["3","20:49","Závodu míru",["X","31"]] +["1","20:55","Březová, aut. st.",["X","31"]] +["3","21:09","Závodu míru",["X","31"]] +["3","21:24","Stará Ovčárna",["X","31"]] +["1","21:38","Březová, aut. st.",["X","31"]] +["3","22:12","Stará Ovčárna",["X","31"]] +["1","22:28","Březová, aut. st.",["X","31"]] +["3","22:41","Závodu míru",["X","31"]] + +["2.7","Streda"] +["3","04:29","Závodu míru",["X"]] +["1","04:50","Březová, aut. st.",["X"]] +["3","04:52","Závodu míru",["X"]] +["3","05:02","Závodu míru",["X"]] +["4","05:05","Závodu míru",["X"]] +["6","05:07","Závodu míru",["X","32"]] +["3","05:22","Závodu míru",["X"]] +["1","05:23","Březová, aut. st.",["X"]] +["4","05:35","Stará Ovčárna",["X"]] +["3","05:38","Sídliště Michal",["X","32"]] +["1","05:51","Březová, aut. st.",["X"]] +["3","05:58","Závodu míru",["X"]] +["1","06:13","Březová, aut. st.",["X"]] +["3","06:19","Závodu míru",["X","32"]] +["3","06:24","Sídliště Michal",["X"]] +["6","06:32","Sídl. Michal škola",["X","32"]] +["3","06:34","Závodu míru",["X"]] +["1","06:46","Březová, aut. st.",["X"]] +["3","06:56","Závodu míru",["X","32"]] +["3","07:04","Závodu míru",["X"]] +["1","07:05","Březová, aut. st.",["X"]] +["3","07:14","Závodu míru",["X"]] +["3","07:27","Sídliště Michal",["X","32"]] +["4","07:34","Závodu míru",["X"]] +["1","07:35","Březová, aut. st.",["X"]] +["3","07:45","Sídliště Michal",["X"]] +["1","07:55","Březová, aut. st.",["X"]] +["3","08:10","Závodu míru",["X","32"]] +["1","08:18","Březová, aut. st.",["X"]] +["33","08:29","Sídl. Michal škola",["X"]] +["3","08:34","Závodu míru",["X"]] +["3","08:50","Stará Ovčárna",["X"]] +["33","08:54","Sídl. Michal škola",["X"]] +["3","09:04","Závodu míru",["X"]] +["1","09:09","Březová, aut. st.",["X"]] +["3","09:24","Závodu míru",["X"]] +["33","09:34","Sídl. Michal škola",["X"]] +["4","09:41","Sídliště Michal",["X"]] +["3","09:45","Závodu míru",["X"]] +["1","09:58","Březová, aut. st.",["X"]] +["3","09:59","Jezero Michal",["X"]] +["7","10:14","Březová, aut.st.",["X"]] +["33","10:24","Sídl. Michal škola",["X"]] +["3","10:40","Závodu míru",["X"]] +["1","10:55","Březová, aut. st.",["X"]] +["3","10:55","Závodu míru",["X"]] +["3","11:17","Závodu míru",["X"]] +["33","11:29","Sídl. Michal škola",["X"]] +["3","11:44","Závodu míru",["X"]] +["1","11:46","Březová, aut. st.",["X"]] +["33","11:56","Sídl. Michal škola",["X"]] +["3","12:05","Závodu míru",["X"]] +["3","12:24","Jezero Michal",["X"]] +["1","12:33","Březová, aut. st.",["X"]] +["3","12:44","Závodu míru",["X"]] +["3","12:59","Závodu míru",["X"]] +["33","13:04","Sídl. Michal škola",["X"]] +["1","13:06","Březová, aut. st.",["X"]] +["3","13:15","Závodu míru",["X"]] +["2","13:17","Sídliště Michal",["X"]] +["1","13:22","Březová, aut. st.",["X"]] +["3","13:24","Stará Ovčárna",["X"]] +["33","13:39","Sídl. Michal škola",["X"]] +["1","13:48","Březová, aut. st.",["X"]] +["33","14:04","Sídl. Michal škola",["X"]] +["6","14:04","Sídl. Michal škola",["X"]] +["4","14:06","Stará Ovčárna",["X"]] +["3","14:09","Závodu míru",["X"]] +["1","14:10","Březová, aut. st.",["X"]] +["3","14:21","Závodu míru",["X"]] +["1","14:34","Březová, aut. st.",["X"]] +["6","14:34","Sídl. Michal škola",["X"]] +["4","14:42","Závodu míru",["X"]] +["3","14:43","Závodu míru",["X"]] +["33","14:46","Sídl. Michal škola",["X"]] +["3","14:52","Závodu míru",["X"]] +["1","15:09","Březová, aut. st.",["X"]] +["33","15:09","Sídl. Michal škola",["X"]] +["3","15:13","Závodu míru",["X"]] +["6","15:14","Sídl. Michal škola",["X"]] +["3","15:30","Závodu míru",["X"]] +["1","15:31","Březová, aut. st.",["X"]] +["33","15:39","Sídl. Michal škola",["X"]] +["3","15:39","Jezero Michal",["X"]] +["7","15:54","Březová, aut.st.",["X"]] +["4","16:06","Závodu míru",["X"]] +["33","16:14","Sídl. Michal škola",["X"]] +["3","16:14","Závodu míru",["X"]] +["1","16:21","Březová, aut. st.",["X"]] +["7","16:29","Březová, aut.st.",["X"]] +["3","16:35","Závodu míru",["X"]] +["3","16:48","Závodu míru",["X"]] +["7","16:59","Březová, aut.st.",["X"]] +["3","17:09","Jezero Michal",["X"]] +["3","17:18","Závodu míru",["X"]] +["3","17:34","Závodu míru",["X"]] +["1","17:38","Březová, aut. st.",["X"]] +["3","17:57","Závodu míru",["X"]] +["3","18:14","Závodu míru",["X"]] +["3","18:21","Závodu míru",["X"]] +["1","18:26","Březová, aut. st.",["X"]] +["3","18:34","Závodu míru",["X"]] +["3","18:54","Závodu míru",["X"]] +["1","19:08","Březová, aut. st.",["X"]] +["3","19:19","Závodu míru",["X","31"]] +["3","19:34","Závodu míru",["X","31"]] +["1","19:53","Březová, aut. st.",["X","31"]] +["3","19:54","Závodu míru",["X","31"]] +["3","20:19","Závodu míru",["X","31"]] +["3","20:49","Závodu míru",["X","31"]] +["1","20:55","Březová, aut. st.",["X","31"]] +["3","21:09","Závodu míru",["X","31"]] +["3","21:24","Stará Ovčárna",["X","31"]] +["1","21:38","Březová, aut. st.",["X","31"]] +["3","22:12","Stará Ovčárna",["X","31"]] +["1","22:28","Březová, aut. st.",["X","31"]] +["3","22:41","Závodu míru",["X","31"]] + +["2.7","Streda"] +["3","04:29","Závodu míru",["X"]] +["1","04:50","Březová, aut. st.",["X"]] +["3","04:52","Závodu míru",["X"]] +["3","05:02","Závodu míru",["X"]] +["4","05:05","Závodu míru",["X"]] +["6","05:07","Závodu míru",["X","32"]] +["3","05:22","Závodu míru",["X"]] +["1","05:23","Březová, aut. st.",["X"]] +["4","05:35","Stará Ovčárna",["X"]] +["3","05:38","Sídliště Michal",["X","32"]] +["1","05:51","Březová, aut. st.",["X"]] +["3","05:58","Závodu míru",["X"]] +["1","06:13","Březová, aut. st.",["X"]] +["3","06:19","Závodu míru",["X","32"]] +["3","06:24","Sídliště Michal",["X"]] +["6","06:32","Sídl. Michal škola",["X","32"]] +["3","06:34","Závodu míru",["X"]] +["1","06:46","Březová, aut. st.",["X"]] +["3","06:56","Závodu míru",["X","32"]] +["3","07:04","Závodu míru",["X"]] +["1","07:05","Březová, aut. st.",["X"]] +["3","07:14","Závodu míru",["X"]] +["3","07:27","Sídliště Michal",["X","32"]] +["4","07:34","Závodu míru",["X"]] +["1","07:35","Březová, aut. st.",["X"]] +["3","07:45","Sídliště Michal",["X"]] +["1","07:55","Březová, aut. st.",["X"]] +["3","08:10","Závodu míru",["X","32"]] +["1","08:18","Březová, aut. st.",["X"]] +["33","08:29","Sídl. Michal škola",["X"]] +["3","08:34","Závodu míru",["X"]] +["3","08:50","Stará Ovčárna",["X"]] +["33","08:54","Sídl. Michal škola",["X"]] +["3","09:04","Závodu míru",["X"]] +["1","09:09","Březová, aut. st.",["X"]] +["3","09:24","Závodu míru",["X"]] +["33","09:34","Sídl. Michal škola",["X"]] +["4","09:41","Sídliště Michal",["X"]] +["3","09:45","Závodu míru",["X"]] +["1","09:58","Březová, aut. st.",["X"]] +["3","09:59","Jezero Michal",["X"]] +["7","10:14","Březová, aut.st.",["X"]] +["33","10:24","Sídl. Michal škola",["X"]] +["3","10:40","Závodu míru",["X"]] +["1","10:55","Březová, aut. st.",["X"]] +["3","10:55","Závodu míru",["X"]] +["3","11:17","Závodu míru",["X"]] +["33","11:29","Sídl. Michal škola",["X"]] +["3","11:44","Závodu míru",["X"]] +["1","11:46","Březová, aut. st.",["X"]] +["33","11:56","Sídl. Michal škola",["X"]] +["3","12:05","Závodu míru",["X"]] +["3","12:24","Jezero Michal",["X"]] +["1","12:33","Březová, aut. st.",["X"]] +["3","12:44","Závodu míru",["X"]] +["3","12:59","Závodu míru",["X"]] +["33","13:04","Sídl. Michal škola",["X"]] +["1","13:06","Březová, aut. st.",["X"]] +["3","13:15","Závodu míru",["X"]] +["2","13:17","Sídliště Michal",["X"]] +["1","13:22","Březová, aut. st.",["X"]] +["3","13:24","Stará Ovčárna",["X"]] +["33","13:39","Sídl. Michal škola",["X"]] +["1","13:48","Březová, aut. st.",["X"]] +["33","14:04","Sídl. Michal škola",["X"]] +["6","14:04","Sídl. Michal škola",["X"]] +["4","14:06","Stará Ovčárna",["X"]] +["3","14:09","Závodu míru",["X"]] +["1","14:10","Březová, aut. st.",["X"]] +["3","14:21","Závodu míru",["X"]] +["1","14:34","Březová, aut. st.",["X"]] +["6","14:34","Sídl. Michal škola",["X"]] +["4","14:42","Závodu míru",["X"]] +["3","14:43","Závodu míru",["X"]] +["33","14:46","Sídl. Michal škola",["X"]] +["3","14:52","Závodu míru",["X"]] +["1","15:09","Březová, aut. st.",["X"]] +["33","15:09","Sídl. Michal škola",["X"]] +["3","15:13","Závodu míru",["X"]] +["6","15:14","Sídl. Michal škola",["X"]] +["3","15:30","Závodu míru",["X"]] +["1","15:31","Březová, aut. st.",["X"]] +["33","15:39","Sídl. Michal škola",["X"]] +["3","15:39","Jezero Michal",["X"]] +["7","15:54","Březová, aut.st.",["X"]] +["4","16:06","Závodu míru",["X"]] +["33","16:14","Sídl. Michal škola",["X"]] +["3","16:14","Závodu míru",["X"]] +["1","16:21","Březová, aut. st.",["X"]] +["7","16:29","Březová, aut.st.",["X"]] +["3","16:35","Závodu míru",["X"]] +["3","16:48","Závodu míru",["X"]] +["7","16:59","Březová, aut.st.",["X"]] +["3","17:09","Jezero Michal",["X"]] +["3","17:18","Závodu míru",["X"]] +["3","17:34","Závodu míru",["X"]] +["1","17:38","Březová, aut. st.",["X"]] +["3","17:57","Závodu míru",["X"]] +["3","18:14","Závodu míru",["X"]] +["3","18:21","Závodu míru",["X"]] +["1","18:26","Březová, aut. st.",["X"]] +["3","18:34","Závodu míru",["X"]] +["3","18:54","Závodu míru",["X"]] +["1","19:08","Březová, aut. st.",["X"]] +["3","19:19","Závodu míru",["X","31"]] +["3","19:34","Závodu míru",["X","31"]] +["1","19:53","Březová, aut. st.",["X","31"]] +["3","19:54","Závodu míru",["X","31"]] +["3","20:19","Závodu míru",["X","31"]] +["3","20:49","Závodu míru",["X","31"]] +["1","20:55","Březová, aut. st.",["X","31"]] +["3","21:09","Závodu míru",["X","31"]] +["3","21:24","Stará Ovčárna",["X","31"]] +["1","21:38","Březová, aut. st.",["X","31"]] +["3","22:12","Stará Ovčárna",["X","31"]] +["1","22:28","Březová, aut. st.",["X","31"]] +["3","22:41","Závodu míru",["X","31"]] + +["3.7","Ctvrtek"] +["3","04:29","Závodu míru",["X"]] +["1","04:50","Březová, aut. st.",["X"]] +["3","04:52","Závodu míru",["X"]] +["3","05:02","Závodu míru",["X"]] +["4","05:05","Závodu míru",["X"]] +["6","05:07","Závodu míru",["X","32"]] +["3","05:22","Závodu míru",["X"]] +["1","05:23","Březová, aut. st.",["X"]] +["4","05:35","Stará Ovčárna",["X"]] +["3","05:38","Sídliště Michal",["X","32"]] +["1","05:51","Březová, aut. st.",["X"]] +["3","05:58","Závodu míru",["X"]] +["1","06:13","Březová, aut. st.",["X"]] +["3","06:19","Závodu míru",["X","32"]] +["3","06:24","Sídliště Michal",["X"]] +["6","06:32","Sídl. Michal škola",["X","32"]] +["3","06:34","Závodu míru",["X"]] +["1","06:46","Březová, aut. st.",["X"]] +["3","06:56","Závodu míru",["X","32"]] +["3","07:04","Závodu míru",["X"]] +["1","07:05","Březová, aut. st.",["X"]] +["3","07:14","Závodu míru",["X"]] +["3","07:27","Sídliště Michal",["X","32"]] +["4","07:34","Závodu míru",["X"]] +["1","07:35","Březová, aut. st.",["X"]] +["3","07:45","Sídliště Michal",["X"]] +["1","07:55","Březová, aut. st.",["X"]] +["3","08:10","Závodu míru",["X","32"]] +["1","08:18","Březová, aut. st.",["X"]] +["33","08:29","Sídl. Michal škola",["X"]] +["3","08:34","Závodu míru",["X"]] +["3","08:50","Stará Ovčárna",["X"]] +["33","08:54","Sídl. Michal škola",["X"]] +["3","09:04","Závodu míru",["X"]] +["1","09:09","Březová, aut. st.",["X"]] +["3","09:24","Závodu míru",["X"]] +["33","09:34","Sídl. Michal škola",["X"]] +["4","09:41","Sídliště Michal",["X"]] +["3","09:45","Závodu míru",["X"]] +["1","09:58","Březová, aut. st.",["X"]] +["3","09:59","Jezero Michal",["X"]] +["7","10:14","Březová, aut.st.",["X"]] +["33","10:24","Sídl. Michal škola",["X"]] +["3","10:40","Závodu míru",["X"]] +["1","10:55","Březová, aut. st.",["X"]] +["3","10:55","Závodu míru",["X"]] +["3","11:17","Závodu míru",["X"]] +["33","11:29","Sídl. Michal škola",["X"]] +["3","11:44","Závodu míru",["X"]] +["1","11:46","Březová, aut. st.",["X"]] +["33","11:56","Sídl. Michal škola",["X"]] +["3","12:05","Závodu míru",["X"]] +["3","12:24","Jezero Michal",["X"]] +["1","12:33","Březová, aut. st.",["X"]] +["3","12:44","Závodu míru",["X"]] +["3","12:59","Závodu míru",["X"]] +["33","13:04","Sídl. Michal škola",["X"]] +["1","13:06","Březová, aut. st.",["X"]] +["3","13:15","Závodu míru",["X"]] +["2","13:17","Sídliště Michal",["X"]] +["1","13:22","Březová, aut. st.",["X"]] +["3","13:24","Stará Ovčárna",["X"]] +["33","13:39","Sídl. Michal škola",["X"]] +["1","13:48","Březová, aut. st.",["X"]] +["33","14:04","Sídl. Michal škola",["X"]] +["6","14:04","Sídl. Michal škola",["X"]] +["4","14:06","Stará Ovčárna",["X"]] +["3","14:09","Závodu míru",["X"]] +["1","14:10","Březová, aut. st.",["X"]] +["3","14:21","Závodu míru",["X"]] +["1","14:34","Březová, aut. st.",["X"]] +["6","14:34","Sídl. Michal škola",["X"]] +["4","14:42","Závodu míru",["X"]] +["3","14:43","Závodu míru",["X"]] +["33","14:46","Sídl. Michal škola",["X"]] +["3","14:52","Závodu míru",["X"]] +["1","15:09","Březová, aut. st.",["X"]] +["33","15:09","Sídl. Michal škola",["X"]] +["3","15:13","Závodu míru",["X"]] +["6","15:14","Sídl. Michal škola",["X"]] +["3","15:30","Závodu míru",["X"]] +["1","15:31","Březová, aut. st.",["X"]] +["33","15:39","Sídl. Michal škola",["X"]] +["3","15:39","Jezero Michal",["X"]] +["7","15:54","Březová, aut.st.",["X"]] +["4","16:06","Závodu míru",["X"]] +["33","16:14","Sídl. Michal škola",["X"]] +["3","16:14","Závodu míru",["X"]] +["1","16:21","Březová, aut. st.",["X"]] +["7","16:29","Březová, aut.st.",["X"]] +["3","16:35","Závodu míru",["X"]] +["3","16:48","Závodu míru",["X"]] +["7","16:59","Březová, aut.st.",["X"]] +["3","17:09","Jezero Michal",["X"]] +["3","17:18","Závodu míru",["X"]] +["3","17:34","Závodu míru",["X"]] +["1","17:38","Březová, aut. st.",["X"]] +["3","17:57","Závodu míru",["X"]] +["3","18:14","Závodu míru",["X"]] +["3","18:21","Závodu míru",["X"]] +["1","18:26","Březová, aut. st.",["X"]] +["3","18:34","Závodu míru",["X"]] +["3","18:54","Závodu míru",["X"]] +["1","19:08","Březová, aut. st.",["X"]] +["3","19:19","Závodu míru",["X","31"]] +["3","19:34","Závodu míru",["X","31"]] +["1","19:53","Březová, aut. st.",["X","31"]] +["3","19:54","Závodu míru",["X","31"]] +["3","20:19","Závodu míru",["X","31"]] +["3","20:49","Závodu míru",["X","31"]] +["1","20:55","Březová, aut. st.",["X","31"]] +["3","21:09","Závodu míru",["X","31"]] +["3","21:24","Stará Ovčárna",["X","31"]] +["1","21:38","Březová, aut. st.",["X","31"]] +["3","22:12","Stará Ovčárna",["X","31"]] +["1","22:28","Březová, aut. st.",["X","31"]] +["3","22:41","Závodu míru",["X","31"]] + +["3.7","Ctvrtek"] +["3","04:29","Závodu míru",["X"]] +["1","04:50","Březová, aut. st.",["X"]] +["3","04:52","Závodu míru",["X"]] +["3","05:02","Závodu míru",["X"]] +["4","05:05","Závodu míru",["X"]] +["6","05:07","Závodu míru",["X","32"]] +["3","05:22","Závodu míru",["X"]] +["1","05:23","Březová, aut. st.",["X"]] +["4","05:35","Stará Ovčárna",["X"]] +["3","05:38","Sídliště Michal",["X","32"]] +["1","05:51","Březová, aut. st.",["X"]] +["3","05:58","Závodu míru",["X"]] +["1","06:13","Březová, aut. st.",["X"]] +["3","06:19","Závodu míru",["X","32"]] +["3","06:24","Sídliště Michal",["X"]] +["6","06:32","Sídl. Michal škola",["X","32"]] +["3","06:34","Závodu míru",["X"]] +["1","06:46","Březová, aut. st.",["X"]] +["3","06:56","Závodu míru",["X","32"]] +["3","07:04","Závodu míru",["X"]] +["1","07:05","Březová, aut. st.",["X"]] +["3","07:14","Závodu míru",["X"]] +["3","07:27","Sídliště Michal",["X","32"]] +["4","07:34","Závodu míru",["X"]] +["1","07:35","Březová, aut. st.",["X"]] +["3","07:45","Sídliště Michal",["X"]] +["1","07:55","Březová, aut. st.",["X"]] +["3","08:10","Závodu míru",["X","32"]] +["1","08:18","Březová, aut. st.",["X"]] +["33","08:29","Sídl. Michal škola",["X"]] +["3","08:34","Závodu míru",["X"]] +["3","08:50","Stará Ovčárna",["X"]] +["33","08:54","Sídl. Michal škola",["X"]] +["3","09:04","Závodu míru",["X"]] +["1","09:09","Březová, aut. st.",["X"]] +["3","09:24","Závodu míru",["X"]] +["33","09:34","Sídl. Michal škola",["X"]] +["4","09:41","Sídliště Michal",["X"]] +["3","09:45","Závodu míru",["X"]] +["1","09:58","Březová, aut. st.",["X"]] +["3","09:59","Jezero Michal",["X"]] +["7","10:14","Březová, aut.st.",["X"]] +["33","10:24","Sídl. Michal škola",["X"]] +["3","10:40","Závodu míru",["X"]] +["1","10:55","Březová, aut. st.",["X"]] +["3","10:55","Závodu míru",["X"]] +["3","11:17","Závodu míru",["X"]] +["33","11:29","Sídl. Michal škola",["X"]] +["3","11:44","Závodu míru",["X"]] +["1","11:46","Březová, aut. st.",["X"]] +["33","11:56","Sídl. Michal škola",["X"]] +["3","12:05","Závodu míru",["X"]] +["3","12:24","Jezero Michal",["X"]] +["1","12:33","Březová, aut. st.",["X"]] +["3","12:44","Závodu míru",["X"]] +["3","12:59","Závodu míru",["X"]] +["33","13:04","Sídl. Michal škola",["X"]] +["1","13:06","Březová, aut. st.",["X"]] +["3","13:15","Závodu míru",["X"]] +["2","13:17","Sídliště Michal",["X"]] +["1","13:22","Březová, aut. st.",["X"]] +["3","13:24","Stará Ovčárna",["X"]] +["33","13:39","Sídl. Michal škola",["X"]] +["1","13:48","Březová, aut. st.",["X"]] +["33","14:04","Sídl. Michal škola",["X"]] +["6","14:04","Sídl. Michal škola",["X"]] +["4","14:06","Stará Ovčárna",["X"]] +["3","14:09","Závodu míru",["X"]] +["1","14:10","Březová, aut. st.",["X"]] +["3","14:21","Závodu míru",["X"]] +["1","14:34","Březová, aut. st.",["X"]] +["6","14:34","Sídl. Michal škola",["X"]] +["4","14:42","Závodu míru",["X"]] +["3","14:43","Závodu míru",["X"]] +["33","14:46","Sídl. Michal škola",["X"]] +["3","14:52","Závodu míru",["X"]] +["1","15:09","Březová, aut. st.",["X"]] +["33","15:09","Sídl. Michal škola",["X"]] +["3","15:13","Závodu míru",["X"]] +["6","15:14","Sídl. Michal škola",["X"]] +["3","15:30","Závodu míru",["X"]] +["1","15:31","Březová, aut. st.",["X"]] +["33","15:39","Sídl. Michal škola",["X"]] +["3","15:39","Jezero Michal",["X"]] +["7","15:54","Březová, aut.st.",["X"]] +["4","16:06","Závodu míru",["X"]] +["33","16:14","Sídl. Michal škola",["X"]] +["3","16:14","Závodu míru",["X"]] +["1","16:21","Březová, aut. st.",["X"]] +["7","16:29","Březová, aut.st.",["X"]] +["3","16:35","Závodu míru",["X"]] +["3","16:48","Závodu míru",["X"]] +["7","16:59","Březová, aut.st.",["X"]] +["3","17:09","Jezero Michal",["X"]] +["3","17:18","Závodu míru",["X"]] +["3","17:34","Závodu míru",["X"]] +["1","17:38","Březová, aut. st.",["X"]] +["3","17:57","Závodu míru",["X"]] +["3","18:14","Závodu míru",["X"]] +["3","18:21","Závodu míru",["X"]] +["1","18:26","Březová, aut. st.",["X"]] +["3","18:34","Závodu míru",["X"]] +["3","18:54","Závodu míru",["X"]] +["1","19:08","Březová, aut. st.",["X"]] +["3","19:19","Závodu míru",["X","31"]] +["3","19:34","Závodu míru",["X","31"]] +["1","19:53","Březová, aut. st.",["X","31"]] +["3","19:54","Závodu míru",["X","31"]] +["3","20:19","Závodu míru",["X","31"]] +["3","20:49","Závodu míru",["X","31"]] +["1","20:55","Březová, aut. st.",["X","31"]] +["3","21:09","Závodu míru",["X","31"]] +["3","21:24","Stará Ovčárna",["X","31"]] +["1","21:38","Březová, aut. st.",["X","31"]] +["3","22:12","Stará Ovčárna",["X","31"]] +["1","22:28","Březová, aut. st.",["X","31"]] +["3","22:41","Závodu míru",["X","31"]] + +["4.7","Patek"] +["3","04:29","Závodu míru",["X"]] +["1","04:50","Březová, aut. st.",["X"]] +["3","04:52","Závodu míru",["X"]] +["3","05:02","Závodu míru",["X"]] +["4","05:05","Závodu míru",["X"]] +["6","05:07","Závodu míru",["X","32"]] +["3","05:22","Závodu míru",["X"]] +["1","05:23","Březová, aut. st.",["X"]] +["4","05:35","Stará Ovčárna",["X"]] +["3","05:38","Sídliště Michal",["X","32"]] +["1","05:51","Březová, aut. st.",["X"]] +["3","05:58","Závodu míru",["X"]] +["1","06:13","Březová, aut. st.",["X"]] +["3","06:19","Závodu míru",["X","32"]] +["3","06:24","Sídliště Michal",["X"]] +["6","06:32","Sídl. Michal škola",["X","32"]] +["3","06:34","Závodu míru",["X"]] +["1","06:46","Březová, aut. st.",["X"]] +["3","06:56","Závodu míru",["X","32"]] +["3","07:04","Závodu míru",["X"]] +["1","07:05","Březová, aut. st.",["X"]] +["3","07:14","Závodu míru",["X"]] +["3","07:27","Sídliště Michal",["X","32"]] +["4","07:34","Závodu míru",["X"]] +["1","07:35","Březová, aut. st.",["X"]] +["3","07:45","Sídliště Michal",["X"]] +["1","07:55","Březová, aut. st.",["X"]] +["3","08:10","Závodu míru",["X","32"]] +["1","08:18","Březová, aut. st.",["X"]] +["33","08:29","Sídl. Michal škola",["X"]] +["3","08:34","Závodu míru",["X"]] +["3","08:50","Stará Ovčárna",["X"]] +["33","08:54","Sídl. Michal škola",["X"]] +["3","09:04","Závodu míru",["X"]] +["1","09:09","Březová, aut. st.",["X"]] +["3","09:24","Závodu míru",["X"]] +["33","09:34","Sídl. Michal škola",["X"]] +["4","09:41","Sídliště Michal",["X"]] +["3","09:45","Závodu míru",["X"]] +["1","09:58","Březová, aut. st.",["X"]] +["3","09:59","Jezero Michal",["X"]] +["7","10:14","Březová, aut.st.",["X"]] +["33","10:24","Sídl. Michal škola",["X"]] +["3","10:40","Závodu míru",["X"]] +["1","10:55","Březová, aut. st.",["X"]] +["3","10:55","Závodu míru",["X"]] +["3","11:17","Závodu míru",["X"]] +["33","11:29","Sídl. Michal škola",["X"]] +["3","11:44","Závodu míru",["X"]] +["1","11:46","Březová, aut. st.",["X"]] +["33","11:56","Sídl. Michal škola",["X"]] +["3","12:05","Závodu míru",["X"]] +["3","12:24","Jezero Michal",["X"]] +["1","12:33","Březová, aut. st.",["X"]] +["3","12:44","Závodu míru",["X"]] +["3","12:59","Závodu míru",["X"]] +["33","13:04","Sídl. Michal škola",["X"]] +["1","13:06","Březová, aut. st.",["X"]] +["3","13:15","Závodu míru",["X"]] +["2","13:17","Sídliště Michal",["X"]] +["1","13:22","Březová, aut. st.",["X"]] +["3","13:24","Stará Ovčárna",["X"]] +["33","13:39","Sídl. Michal škola",["X"]] +["1","13:48","Březová, aut. st.",["X"]] +["33","14:04","Sídl. Michal škola",["X"]] +["6","14:04","Sídl. Michal škola",["X"]] +["4","14:06","Stará Ovčárna",["X"]] +["3","14:09","Závodu míru",["X"]] +["1","14:10","Březová, aut. st.",["X"]] +["3","14:21","Závodu míru",["X"]] +["1","14:34","Březová, aut. st.",["X"]] +["6","14:34","Sídl. Michal škola",["X"]] +["4","14:42","Závodu míru",["X"]] +["3","14:43","Závodu míru",["X"]] +["33","14:46","Sídl. Michal škola",["X"]] +["3","14:52","Závodu míru",["X"]] +["1","15:09","Březová, aut. st.",["X"]] +["33","15:09","Sídl. Michal škola",["X"]] +["3","15:13","Závodu míru",["X"]] +["6","15:14","Sídl. Michal škola",["X"]] +["3","15:30","Závodu míru",["X"]] +["1","15:31","Březová, aut. st.",["X"]] +["33","15:39","Sídl. Michal škola",["X"]] +["3","15:39","Jezero Michal",["X"]] +["7","15:54","Březová, aut.st.",["X"]] +["4","16:06","Závodu míru",["X"]] +["33","16:14","Sídl. Michal škola",["X"]] +["3","16:14","Závodu míru",["X"]] +["1","16:21","Březová, aut. st.",["X"]] +["7","16:29","Březová, aut.st.",["X"]] +["3","16:35","Závodu míru",["X"]] +["3","16:48","Závodu míru",["X"]] +["7","16:59","Březová, aut.st.",["X"]] +["3","17:09","Jezero Michal",["X"]] +["3","17:18","Závodu míru",["X"]] +["3","17:34","Závodu míru",["X"]] +["1","17:38","Březová, aut. st.",["X"]] +["3","17:57","Závodu míru",["X"]] +["3","18:14","Závodu míru",["X"]] +["3","18:21","Závodu míru",["X"]] +["1","18:26","Březová, aut. st.",["X"]] +["3","18:34","Závodu míru",["X"]] +["3","18:54","Závodu míru",["X"]] +["1","19:08","Březová, aut. st.",["X"]] +["3","19:19","Závodu míru",["X","31"]] +["3","19:34","Závodu míru",["X","31"]] +["1","19:53","Březová, aut. st.",["X","31"]] +["3","19:54","Závodu míru",["X","31"]] +["3","20:19","Závodu míru",["X","31"]] +["3","20:49","Závodu míru",["X","31"]] +["1","20:55","Březová, aut. st.",["X","31"]] +["3","21:09","Závodu míru",["X","31"]] +["3","21:24","Stará Ovčárna",["X","31"]] +["1","21:38","Březová, aut. st.",["X","31"]] +["3","22:12","Stará Ovčárna",["X","31"]] +["1","22:28","Březová, aut. st.",["X","31"]] +["3","22:41","Závodu míru",["X","31"]] + +["4.7","Patek"] +["3","04:29","Závodu míru",["X"]] +["1","04:50","Březová, aut. st.",["X"]] +["3","04:52","Závodu míru",["X"]] +["3","05:02","Závodu míru",["X"]] +["4","05:05","Závodu míru",["X"]] +["6","05:07","Závodu míru",["X","32"]] +["3","05:22","Závodu míru",["X"]] +["1","05:23","Březová, aut. st.",["X"]] +["4","05:35","Stará Ovčárna",["X"]] +["3","05:38","Sídliště Michal",["X","32"]] +["1","05:51","Březová, aut. st.",["X"]] +["3","05:58","Závodu míru",["X"]] +["1","06:13","Březová, aut. st.",["X"]] +["3","06:19","Závodu míru",["X","32"]] +["3","06:24","Sídliště Michal",["X"]] +["6","06:32","Sídl. Michal škola",["X","32"]] +["3","06:34","Závodu míru",["X"]] +["1","06:46","Březová, aut. st.",["X"]] +["3","06:56","Závodu míru",["X","32"]] +["3","07:04","Závodu míru",["X"]] +["1","07:05","Březová, aut. st.",["X"]] +["3","07:14","Závodu míru",["X"]] +["3","07:27","Sídliště Michal",["X","32"]] +["4","07:34","Závodu míru",["X"]] +["1","07:35","Březová, aut. st.",["X"]] +["3","07:45","Sídliště Michal",["X"]] +["1","07:55","Březová, aut. st.",["X"]] +["3","08:10","Závodu míru",["X","32"]] +["1","08:18","Březová, aut. st.",["X"]] +["33","08:29","Sídl. Michal škola",["X"]] +["3","08:34","Závodu míru",["X"]] +["3","08:50","Stará Ovčárna",["X"]] +["33","08:54","Sídl. Michal škola",["X"]] +["3","09:04","Závodu míru",["X"]] +["1","09:09","Březová, aut. st.",["X"]] +["3","09:24","Závodu míru",["X"]] +["33","09:34","Sídl. Michal škola",["X"]] +["4","09:41","Sídliště Michal",["X"]] +["3","09:45","Závodu míru",["X"]] +["1","09:58","Březová, aut. st.",["X"]] +["3","09:59","Jezero Michal",["X"]] +["7","10:14","Březová, aut.st.",["X"]] +["33","10:24","Sídl. Michal škola",["X"]] +["3","10:40","Závodu míru",["X"]] +["1","10:55","Březová, aut. st.",["X"]] +["3","10:55","Závodu míru",["X"]] +["3","11:17","Závodu míru",["X"]] +["33","11:29","Sídl. Michal škola",["X"]] +["3","11:44","Závodu míru",["X"]] +["1","11:46","Březová, aut. st.",["X"]] +["33","11:56","Sídl. Michal škola",["X"]] +["3","12:05","Závodu míru",["X"]] +["3","12:24","Jezero Michal",["X"]] +["1","12:33","Březová, aut. st.",["X"]] +["3","12:44","Závodu míru",["X"]] +["3","12:59","Závodu míru",["X"]] +["33","13:04","Sídl. Michal škola",["X"]] +["1","13:06","Březová, aut. st.",["X"]] +["3","13:15","Závodu míru",["X"]] +["2","13:17","Sídliště Michal",["X"]] +["1","13:22","Březová, aut. st.",["X"]] +["3","13:24","Stará Ovčárna",["X"]] +["33","13:39","Sídl. Michal škola",["X"]] +["1","13:48","Březová, aut. st.",["X"]] +["33","14:04","Sídl. Michal škola",["X"]] +["6","14:04","Sídl. Michal škola",["X"]] +["4","14:06","Stará Ovčárna",["X"]] +["3","14:09","Závodu míru",["X"]] +["1","14:10","Březová, aut. st.",["X"]] +["3","14:21","Závodu míru",["X"]] +["1","14:34","Březová, aut. st.",["X"]] +["6","14:34","Sídl. Michal škola",["X"]] +["4","14:42","Závodu míru",["X"]] +["3","14:43","Závodu míru",["X"]] +["33","14:46","Sídl. Michal škola",["X"]] +["3","14:52","Závodu míru",["X"]] +["1","15:09","Březová, aut. st.",["X"]] +["33","15:09","Sídl. Michal škola",["X"]] +["3","15:13","Závodu míru",["X"]] +["6","15:14","Sídl. Michal škola",["X"]] +["3","15:30","Závodu míru",["X"]] +["1","15:31","Březová, aut. st.",["X"]] +["33","15:39","Sídl. Michal škola",["X"]] +["3","15:39","Jezero Michal",["X"]] +["7","15:54","Březová, aut.st.",["X"]] +["4","16:06","Závodu míru",["X"]] +["33","16:14","Sídl. Michal škola",["X"]] +["3","16:14","Závodu míru",["X"]] +["1","16:21","Březová, aut. st.",["X"]] +["7","16:29","Březová, aut.st.",["X"]] +["3","16:35","Závodu míru",["X"]] +["3","16:48","Závodu míru",["X"]] +["7","16:59","Březová, aut.st.",["X"]] +["3","17:09","Jezero Michal",["X"]] +["3","17:18","Závodu míru",["X"]] +["3","17:34","Závodu míru",["X"]] +["1","17:38","Březová, aut. st.",["X"]] +["3","17:57","Závodu míru",["X"]] +["3","18:14","Závodu míru",["X"]] +["3","18:21","Závodu míru",["X"]] +["1","18:26","Březová, aut. st.",["X"]] +["3","18:34","Závodu míru",["X"]] +["3","18:54","Závodu míru",["X"]] +["1","19:08","Březová, aut. st.",["X"]] +["3","19:19","Závodu míru",["X","31"]] +["3","19:34","Závodu míru",["X","31"]] +["1","19:53","Březová, aut. st.",["X","31"]] +["3","19:54","Závodu míru",["X","31"]] +["3","20:19","Závodu míru",["X","31"]] +["3","20:49","Závodu míru",["X","31"]] +["1","20:55","Březová, aut. st.",["X","31"]] +["3","21:09","Závodu míru",["X","31"]] +["3","21:24","Stará Ovčárna",["X","31"]] +["1","21:38","Březová, aut. st.",["X","31"]] +["3","22:12","Stará Ovčárna",["X","31"]] +["1","22:28","Březová, aut. st.",["X","31"]] +["3","22:41","Závodu míru",["X","31"]] + +["5.7","Sobota"] +["3","04:56","Závodu míru",["6+","25"]] +["1","05:47","Březová, aut. st.",["6+","25"]] +["3","05:57","Závodu míru",["6+","25"]] +["3","06:24","Závodu míru",["6+","25"]] +["3","06:56","Závodu míru",["6+"]] +["1","06:57","Březová, aut. st.",["6+","25"]] +["3","07:19","Závodu míru",["6+"]] +["3","07:51","Závodu míru",["6+"]] +["1","07:57","Březová, aut. st.",["6+"]] +["3","08:15","Závodu míru",["6+"]] +["3","08:51","Závodu míru",["6+"]] +["1","08:57","Březová, aut. st.",["6+"]] +["3","09:20","Závodu míru",["6+"]] +["3","09:38","Jezero Michal",["6+","33"]] +["1","09:44","Březová, aut. st.",["6+"]] +["3","09:51","Závodu míru",["6+"]] +["3","10:19","Závodu míru",["6+"]] +["3","10:43","Jezero Michal",["6+","33"]] +["1","10:57","Březová, aut. st.",["6+"]] +["3","11:02","Závodu míru",["6+"]] +["3","11:29","Závodu míru",["6+"]] +["1","11:49","Březová, aut. st.",["6+"]] +["3","11:51","Závodu míru",["6+"]] +["3","12:19","Závodu míru",["6+"]] +["3","12:38","Jezero Michal",["6+","33"]] +["3","12:51","Závodu míru",["6+"]] +["1","12:57","Březová, aut. st.",["6+"]] +["3","13:28","Závodu míru",["6+"]] +["3","13:51","Závodu míru",["6+"]] +["1","13:57","Březová, aut. st.",["6+"]] +["3","14:19","Závodu míru",["6+"]] +["1","14:49","Březová, aut. st.",["6+"]] +["3","14:51","Závodu míru",["6+"]] +["3","15:19","Závodu míru",["6+"]] +["3","15:38","Jezero Michal",["6+","33"]] +["3","15:51","Závodu míru",["6+"]] +["1","15:57","Březová, aut. st.",["6+"]] +["3","16:28","Závodu míru",["6+"]] +["3","16:53","Závodu míru",["6+"]] +["1","16:57","Březová, aut. st.",["6+"]] +["3","17:14","Závodu míru",["6+"]] +["3","17:38","Jezero Michal",["6+","33"]] +["3","17:51","Závodu míru",["6+"]] +["3","18:21","Stará Ovčárna",["6+"]] +["1","18:24","Březová, aut. st.",["6+"]] +["3","18:51","Závodu míru",["6+"]] +["3","19:14","Závodu míru",["6+","24"]] +["3","19:54","Závodu míru",["6+","24"]] +["1","19:57","Březová, aut. st.",["6+","24"]] +["1","20:28","Březová, aut. st.",["6+","24"]] +["3","20:49","Závodu míru",["6+","24"]] +["1","21:23","Březová, aut. st.",["6+","24"]] +["3","21:24","Závodu míru",["6+","24"]] +["3","22:04","Závodu míru",["6+","24"]] + +["5.7","Sobota"] +["3","04:56","Závodu míru",["6+","25"]] +["1","05:47","Březová, aut. st.",["6+","25"]] +["3","05:57","Závodu míru",["6+","25"]] +["3","06:24","Závodu míru",["6+","25"]] +["3","06:56","Závodu míru",["6+"]] +["1","06:57","Březová, aut. st.",["6+","25"]] +["3","07:19","Závodu míru",["6+"]] +["3","07:51","Závodu míru",["6+"]] +["1","07:57","Březová, aut. st.",["6+"]] +["3","08:15","Závodu míru",["6+"]] +["3","08:51","Závodu míru",["6+"]] +["1","08:57","Březová, aut. st.",["6+"]] +["3","09:20","Závodu míru",["6+"]] +["3","09:38","Jezero Michal",["6+","33"]] +["1","09:44","Březová, aut. st.",["6+"]] +["3","09:51","Závodu míru",["6+"]] +["3","10:19","Závodu míru",["6+"]] +["3","10:43","Jezero Michal",["6+","33"]] +["1","10:57","Březová, aut. st.",["6+"]] +["3","11:02","Závodu míru",["6+"]] +["3","11:29","Závodu míru",["6+"]] +["1","11:49","Březová, aut. st.",["6+"]] +["3","11:51","Závodu míru",["6+"]] +["3","12:19","Závodu míru",["6+"]] +["3","12:38","Jezero Michal",["6+","33"]] +["3","12:51","Závodu míru",["6+"]] +["1","12:57","Březová, aut. st.",["6+"]] +["3","13:28","Závodu míru",["6+"]] +["3","13:51","Závodu míru",["6+"]] +["1","13:57","Březová, aut. st.",["6+"]] +["3","14:19","Závodu míru",["6+"]] +["1","14:49","Březová, aut. st.",["6+"]] +["3","14:51","Závodu míru",["6+"]] +["3","15:19","Závodu míru",["6+"]] +["3","15:38","Jezero Michal",["6+","33"]] +["3","15:51","Závodu míru",["6+"]] +["1","15:57","Březová, aut. st.",["6+"]] +["3","16:28","Závodu míru",["6+"]] +["3","16:53","Závodu míru",["6+"]] +["1","16:57","Březová, aut. st.",["6+"]] +["3","17:14","Závodu míru",["6+"]] +["3","17:38","Jezero Michal",["6+","33"]] +["3","17:51","Závodu míru",["6+"]] +["3","18:21","Stará Ovčárna",["6+"]] +["1","18:24","Březová, aut. st.",["6+"]] +["3","18:51","Závodu míru",["6+"]] +["3","19:14","Závodu míru",["6+","24"]] +["3","19:54","Závodu míru",["6+","24"]] +["1","19:57","Březová, aut. st.",["6+","24"]] +["1","20:28","Březová, aut. st.",["6+","24"]] +["3","20:49","Závodu míru",["6+","24"]] +["1","21:23","Březová, aut. st.",["6+","24"]] +["3","21:24","Závodu míru",["6+","24"]] +["3","22:04","Závodu míru",["6+","24"]] + +["6.7","Nedele"] +["3","04:56","Závodu míru",["6+","25"]] +["1","05:47","Březová, aut. st.",["6+","25"]] +["3","05:57","Závodu míru",["6+","25"]] +["3","06:24","Závodu míru",["6+","25"]] +["3","06:56","Závodu míru",["6+"]] +["1","06:57","Březová, aut. st.",["6+","25"]] +["3","07:19","Závodu míru",["6+"]] +["3","07:51","Závodu míru",["6+"]] +["1","07:57","Březová, aut. st.",["6+"]] +["3","08:15","Závodu míru",["6+"]] +["3","08:51","Závodu míru",["6+"]] +["1","08:57","Březová, aut. st.",["6+"]] +["3","09:20","Závodu míru",["6+"]] +["3","09:38","Jezero Michal",["6+","33"]] +["1","09:44","Březová, aut. st.",["6+"]] +["3","09:51","Závodu míru",["6+"]] +["3","10:19","Závodu míru",["6+"]] +["3","10:43","Jezero Michal",["6+","33"]] +["1","10:57","Březová, aut. st.",["6+"]] +["3","11:02","Závodu míru",["6+"]] +["3","11:29","Závodu míru",["6+"]] +["1","11:49","Březová, aut. st.",["6+"]] +["3","11:51","Závodu míru",["6+"]] +["3","12:19","Závodu míru",["6+"]] +["3","12:38","Jezero Michal",["6+","33"]] +["3","12:51","Závodu míru",["6+"]] +["1","12:57","Březová, aut. st.",["6+"]] +["3","13:28","Závodu míru",["6+"]] +["3","13:51","Závodu míru",["6+"]] +["1","13:57","Březová, aut. st.",["6+"]] +["3","14:19","Závodu míru",["6+"]] +["1","14:49","Březová, aut. st.",["6+"]] +["3","14:51","Závodu míru",["6+"]] +["3","15:19","Závodu míru",["6+"]] +["3","15:38","Jezero Michal",["6+","33"]] +["3","15:51","Závodu míru",["6+"]] +["1","15:57","Březová, aut. st.",["6+"]] +["3","16:28","Závodu míru",["6+"]] +["3","16:53","Závodu míru",["6+"]] +["1","16:57","Březová, aut. st.",["6+"]] +["3","17:14","Závodu míru",["6+"]] +["3","17:38","Jezero Michal",["6+","33"]] +["3","17:51","Závodu míru",["6+"]] +["3","18:21","Stará Ovčárna",["6+"]] +["1","18:24","Březová, aut. st.",["6+"]] +["3","18:51","Závodu míru",["6+"]] +["3","19:14","Závodu míru",["6+","24"]] +["3","19:54","Závodu míru",["6+","24"]] +["1","19:57","Březová, aut. st.",["6+","24"]] +["1","20:28","Březová, aut. st.",["6+","24"]] +["3","20:49","Závodu míru",["6+","24"]] +["1","21:23","Březová, aut. st.",["6+","24"]] +["3","21:24","Závodu míru",["6+","24"]] +["3","22:04","Závodu míru",["6+","24"]] + +["6.7","Nedele"] +["3","04:56","Závodu míru",["6+","25"]] +["1","05:47","Březová, aut. st.",["6+","25"]] +["3","05:57","Závodu míru",["6+","25"]] +["3","06:24","Závodu míru",["6+","25"]] +["3","06:56","Závodu míru",["6+"]] +["1","06:57","Březová, aut. st.",["6+","25"]] +["3","07:19","Závodu míru",["6+"]] +["3","07:51","Závodu míru",["6+"]] +["1","07:57","Březová, aut. st.",["6+"]] +["3","08:15","Závodu míru",["6+"]] +["3","08:51","Závodu míru",["6+"]] +["1","08:57","Březová, aut. st.",["6+"]] +["3","09:20","Závodu míru",["6+"]] +["3","09:38","Jezero Michal",["6+","33"]] +["1","09:44","Březová, aut. st.",["6+"]] +["3","09:51","Závodu míru",["6+"]] +["3","10:19","Závodu míru",["6+"]] +["3","10:43","Jezero Michal",["6+","33"]] +["1","10:57","Březová, aut. st.",["6+"]] +["3","11:02","Závodu míru",["6+"]] +["3","11:29","Závodu míru",["6+"]] +["1","11:49","Březová, aut. st.",["6+"]] +["3","11:51","Závodu míru",["6+"]] +["3","12:19","Závodu míru",["6+"]] +["3","12:38","Jezero Michal",["6+","33"]] +["3","12:51","Závodu míru",["6+"]] +["1","12:57","Březová, aut. st.",["6+"]] +["3","13:28","Závodu míru",["6+"]] +["3","13:51","Závodu míru",["6+"]] +["1","13:57","Březová, aut. st.",["6+"]] +["3","14:19","Závodu míru",["6+"]] +["1","14:49","Březová, aut. st.",["6+"]] +["3","14:51","Závodu míru",["6+"]] +["3","15:19","Závodu míru",["6+"]] +["3","15:38","Jezero Michal",["6+","33"]] +["3","15:51","Závodu míru",["6+"]] +["1","15:57","Březová, aut. st.",["6+"]] +["3","16:28","Závodu míru",["6+"]] +["3","16:53","Závodu míru",["6+"]] +["1","16:57","Březová, aut. st.",["6+"]] +["3","17:14","Závodu míru",["6+"]] +["3","17:38","Jezero Michal",["6+","33"]] +["3","17:51","Závodu míru",["6+"]] +["3","18:21","Stará Ovčárna",["6+"]] +["1","18:24","Březová, aut. st.",["6+"]] +["3","18:51","Závodu míru",["6+"]] +["3","19:14","Závodu míru",["6+","24"]] +["3","19:54","Závodu míru",["6+","24"]] +["1","19:57","Březová, aut. st.",["6+","24"]] +["1","20:28","Březová, aut. st.",["6+","24"]] +["3","20:49","Závodu míru",["6+","24"]] +["1","21:23","Březová, aut. st.",["6+","24"]] +["3","21:24","Závodu míru",["6+","24"]] +["3","22:04","Závodu míru",["6+","24"]] + +["7.7","Pondeli"] +["3","04:29","Závodu míru",["X"]] +["1","04:50","Březová, aut. st.",["X"]] +["3","04:52","Závodu míru",["X"]] +["3","05:02","Závodu míru",["X"]] +["4","05:05","Závodu míru",["X"]] +["6","05:07","Závodu míru",["X","32"]] +["3","05:22","Závodu míru",["X"]] +["1","05:23","Březová, aut. st.",["X"]] +["4","05:35","Stará Ovčárna",["X"]] +["3","05:38","Sídliště Michal",["X","32"]] +["1","05:51","Březová, aut. st.",["X"]] +["3","05:58","Závodu míru",["X"]] +["1","06:13","Březová, aut. st.",["X"]] +["3","06:19","Závodu míru",["X","32"]] +["3","06:24","Sídliště Michal",["X"]] +["6","06:32","Sídl. Michal škola",["X","32"]] +["3","06:34","Závodu míru",["X"]] +["1","06:46","Březová, aut. st.",["X"]] +["3","06:56","Závodu míru",["X","32"]] +["3","07:04","Závodu míru",["X"]] +["1","07:05","Březová, aut. st.",["X"]] +["3","07:14","Závodu míru",["X"]] +["3","07:27","Sídliště Michal",["X","32"]] +["4","07:34","Závodu míru",["X"]] +["1","07:35","Březová, aut. st.",["X"]] +["3","07:45","Sídliště Michal",["X"]] +["1","07:55","Březová, aut. st.",["X"]] +["3","08:10","Závodu míru",["X","32"]] +["1","08:18","Březová, aut. st.",["X"]] +["33","08:29","Sídl. Michal škola",["X"]] +["3","08:34","Závodu míru",["X"]] +["3","08:50","Stará Ovčárna",["X"]] +["33","08:54","Sídl. Michal škola",["X"]] +["3","09:04","Závodu míru",["X"]] +["1","09:09","Březová, aut. st.",["X"]] +["3","09:24","Závodu míru",["X"]] +["33","09:34","Sídl. Michal škola",["X"]] +["4","09:41","Sídliště Michal",["X"]] +["3","09:45","Závodu míru",["X"]] +["1","09:58","Březová, aut. st.",["X"]] +["3","09:59","Jezero Michal",["X"]] +["7","10:14","Březová, aut.st.",["X"]] +["33","10:24","Sídl. Michal škola",["X"]] +["3","10:40","Závodu míru",["X"]] +["1","10:55","Březová, aut. st.",["X"]] +["3","10:55","Závodu míru",["X"]] +["3","11:17","Závodu míru",["X"]] +["33","11:29","Sídl. Michal škola",["X"]] +["3","11:44","Závodu míru",["X"]] +["1","11:46","Březová, aut. st.",["X"]] +["33","11:56","Sídl. Michal škola",["X"]] +["3","12:05","Závodu míru",["X"]] +["3","12:24","Jezero Michal",["X"]] +["1","12:33","Březová, aut. st.",["X"]] +["3","12:44","Závodu míru",["X"]] +["3","12:59","Závodu míru",["X"]] +["33","13:04","Sídl. Michal škola",["X"]] +["1","13:06","Březová, aut. st.",["X"]] +["3","13:15","Závodu míru",["X"]] +["2","13:17","Sídliště Michal",["X"]] +["1","13:22","Březová, aut. st.",["X"]] +["3","13:24","Stará Ovčárna",["X"]] +["33","13:39","Sídl. Michal škola",["X"]] +["1","13:48","Březová, aut. st.",["X"]] +["33","14:04","Sídl. Michal škola",["X"]] +["6","14:04","Sídl. Michal škola",["X"]] +["4","14:06","Stará Ovčárna",["X"]] +["3","14:09","Závodu míru",["X"]] +["1","14:10","Březová, aut. st.",["X"]] +["3","14:21","Závodu míru",["X"]] +["1","14:34","Březová, aut. st.",["X"]] +["6","14:34","Sídl. Michal škola",["X"]] +["4","14:42","Závodu míru",["X"]] +["3","14:43","Závodu míru",["X"]] +["33","14:46","Sídl. Michal škola",["X"]] +["3","14:52","Závodu míru",["X"]] +["1","15:09","Březová, aut. st.",["X"]] +["33","15:09","Sídl. Michal škola",["X"]] +["3","15:13","Závodu míru",["X"]] +["6","15:14","Sídl. Michal škola",["X"]] +["3","15:30","Závodu míru",["X"]] +["1","15:31","Březová, aut. st.",["X"]] +["33","15:39","Sídl. Michal škola",["X"]] +["3","15:39","Jezero Michal",["X"]] +["7","15:54","Březová, aut.st.",["X"]] +["4","16:06","Závodu míru",["X"]] +["33","16:14","Sídl. Michal škola",["X"]] +["3","16:14","Závodu míru",["X"]] +["1","16:21","Březová, aut. st.",["X"]] +["7","16:29","Březová, aut.st.",["X"]] +["3","16:35","Závodu míru",["X"]] +["3","16:48","Závodu míru",["X"]] +["7","16:59","Březová, aut.st.",["X"]] +["3","17:09","Jezero Michal",["X"]] +["3","17:18","Závodu míru",["X"]] +["3","17:34","Závodu míru",["X"]] +["1","17:38","Březová, aut. st.",["X"]] +["3","17:57","Závodu míru",["X"]] +["3","18:14","Závodu míru",["X"]] +["3","18:21","Závodu míru",["X"]] +["1","18:26","Březová, aut. st.",["X"]] +["3","18:34","Závodu míru",["X"]] +["3","18:54","Závodu míru",["X"]] +["1","19:08","Březová, aut. st.",["X"]] +["3","19:19","Závodu míru",["X","31"]] +["3","19:34","Závodu míru",["X","31"]] +["1","19:53","Březová, aut. st.",["X","31"]] +["3","19:54","Závodu míru",["X","31"]] +["3","20:19","Závodu míru",["X","31"]] +["3","20:49","Závodu míru",["X","31"]] +["1","20:55","Březová, aut. st.",["X","31"]] +["3","21:09","Závodu míru",["X","31"]] +["3","21:24","Stará Ovčárna",["X","31"]] +["1","21:38","Březová, aut. st.",["X","31"]] +["3","22:12","Stará Ovčárna",["X","31"]] +["1","22:28","Březová, aut. st.",["X","31"]] +["3","22:41","Závodu míru",["X","31"]] + +["7.7","Pondeli"] +["3","04:29","Závodu míru",["X"]] +["1","04:50","Březová, aut. st.",["X"]] +["3","04:52","Závodu míru",["X"]] +["3","05:02","Závodu míru",["X"]] +["4","05:05","Závodu míru",["X"]] +["6","05:07","Závodu míru",["X","32"]] +["3","05:22","Závodu míru",["X"]] +["1","05:23","Březová, aut. st.",["X"]] +["4","05:35","Stará Ovčárna",["X"]] +["3","05:38","Sídliště Michal",["X","32"]] +["1","05:51","Březová, aut. st.",["X"]] +["3","05:58","Závodu míru",["X"]] +["1","06:13","Březová, aut. st.",["X"]] +["3","06:19","Závodu míru",["X","32"]] +["3","06:24","Sídliště Michal",["X"]] +["6","06:32","Sídl. Michal škola",["X","32"]] +["3","06:34","Závodu míru",["X"]] +["1","06:46","Březová, aut. st.",["X"]] +["3","06:56","Závodu míru",["X","32"]] +["3","07:04","Závodu míru",["X"]] +["1","07:05","Březová, aut. st.",["X"]] +["3","07:14","Závodu míru",["X"]] +["3","07:27","Sídliště Michal",["X","32"]] +["4","07:34","Závodu míru",["X"]] +["1","07:35","Březová, aut. st.",["X"]] +["3","07:45","Sídliště Michal",["X"]] +["1","07:55","Březová, aut. st.",["X"]] +["3","08:10","Závodu míru",["X","32"]] +["1","08:18","Březová, aut. st.",["X"]] +["33","08:29","Sídl. Michal škola",["X"]] +["3","08:34","Závodu míru",["X"]] +["3","08:50","Stará Ovčárna",["X"]] +["33","08:54","Sídl. Michal škola",["X"]] +["3","09:04","Závodu míru",["X"]] +["1","09:09","Březová, aut. st.",["X"]] +["3","09:24","Závodu míru",["X"]] +["33","09:34","Sídl. Michal škola",["X"]] +["4","09:41","Sídliště Michal",["X"]] +["3","09:45","Závodu míru",["X"]] +["1","09:58","Březová, aut. st.",["X"]] +["3","09:59","Jezero Michal",["X"]] +["7","10:14","Březová, aut.st.",["X"]] +["33","10:24","Sídl. Michal škola",["X"]] +["3","10:40","Závodu míru",["X"]] +["1","10:55","Březová, aut. st.",["X"]] +["3","10:55","Závodu míru",["X"]] +["3","11:17","Závodu míru",["X"]] +["33","11:29","Sídl. Michal škola",["X"]] +["3","11:44","Závodu míru",["X"]] +["1","11:46","Březová, aut. st.",["X"]] +["33","11:56","Sídl. Michal škola",["X"]] +["3","12:05","Závodu míru",["X"]] +["3","12:24","Jezero Michal",["X"]] +["1","12:33","Březová, aut. st.",["X"]] +["3","12:44","Závodu míru",["X"]] +["3","12:59","Závodu míru",["X"]] +["33","13:04","Sídl. Michal škola",["X"]] +["1","13:06","Březová, aut. st.",["X"]] +["3","13:15","Závodu míru",["X"]] +["2","13:17","Sídliště Michal",["X"]] +["1","13:22","Březová, aut. st.",["X"]] +["3","13:24","Stará Ovčárna",["X"]] +["33","13:39","Sídl. Michal škola",["X"]] +["1","13:48","Březová, aut. st.",["X"]] +["33","14:04","Sídl. Michal škola",["X"]] +["6","14:04","Sídl. Michal škola",["X"]] +["4","14:06","Stará Ovčárna",["X"]] +["3","14:09","Závodu míru",["X"]] +["1","14:10","Březová, aut. st.",["X"]] +["3","14:21","Závodu míru",["X"]] +["1","14:34","Březová, aut. st.",["X"]] +["6","14:34","Sídl. Michal škola",["X"]] +["4","14:42","Závodu míru",["X"]] +["3","14:43","Závodu míru",["X"]] +["33","14:46","Sídl. Michal škola",["X"]] +["3","14:52","Závodu míru",["X"]] +["1","15:09","Březová, aut. st.",["X"]] +["33","15:09","Sídl. Michal škola",["X"]] +["3","15:13","Závodu míru",["X"]] +["6","15:14","Sídl. Michal škola",["X"]] +["3","15:30","Závodu míru",["X"]] +["1","15:31","Březová, aut. st.",["X"]] +["33","15:39","Sídl. Michal škola",["X"]] +["3","15:39","Jezero Michal",["X"]] +["7","15:54","Březová, aut.st.",["X"]] +["4","16:06","Závodu míru",["X"]] +["33","16:14","Sídl. Michal škola",["X"]] +["3","16:14","Závodu míru",["X"]] +["1","16:21","Březová, aut. st.",["X"]] +["7","16:29","Březová, aut.st.",["X"]] +["3","16:35","Závodu míru",["X"]] +["3","16:48","Závodu míru",["X"]] +["7","16:59","Březová, aut.st.",["X"]] +["3","17:09","Jezero Michal",["X"]] +["3","17:18","Závodu míru",["X"]] +["3","17:34","Závodu míru",["X"]] +["1","17:38","Březová, aut. st.",["X"]] +["3","17:57","Závodu míru",["X"]] +["3","18:14","Závodu míru",["X"]] +["3","18:21","Závodu míru",["X"]] +["1","18:26","Březová, aut. st.",["X"]] +["3","18:34","Závodu míru",["X"]] +["3","18:54","Závodu míru",["X"]] +["1","19:08","Březová, aut. st.",["X"]] +["3","19:19","Závodu míru",["X","31"]] +["3","19:34","Závodu míru",["X","31"]] +["1","19:53","Březová, aut. st.",["X","31"]] +["3","19:54","Závodu míru",["X","31"]] +["3","20:19","Závodu míru",["X","31"]] +["3","20:49","Závodu míru",["X","31"]] +["1","20:55","Březová, aut. st.",["X","31"]] +["3","21:09","Závodu míru",["X","31"]] +["3","21:24","Stará Ovčárna",["X","31"]] +["1","21:38","Březová, aut. st.",["X","31"]] +["3","22:12","Stará Ovčárna",["X","31"]] +["1","22:28","Březová, aut. st.",["X","31"]] +["3","22:41","Závodu míru",["X","31"]] + +["8.7","Uteri"] +["3","04:29","Závodu míru",["X"]] +["1","04:50","Březová, aut. st.",["X"]] +["3","04:52","Závodu míru",["X"]] +["3","05:02","Závodu míru",["X"]] +["4","05:05","Závodu míru",["X"]] +["6","05:07","Závodu míru",["X","32"]] +["3","05:22","Závodu míru",["X"]] +["1","05:23","Březová, aut. st.",["X"]] +["4","05:35","Stará Ovčárna",["X"]] +["3","05:38","Sídliště Michal",["X","32"]] +["1","05:51","Březová, aut. st.",["X"]] +["3","05:58","Závodu míru",["X"]] +["1","06:13","Březová, aut. st.",["X"]] +["3","06:19","Závodu míru",["X","32"]] +["3","06:24","Sídliště Michal",["X"]] +["6","06:32","Sídl. Michal škola",["X","32"]] +["3","06:34","Závodu míru",["X"]] +["1","06:46","Březová, aut. st.",["X"]] +["3","06:56","Závodu míru",["X","32"]] +["3","07:04","Závodu míru",["X"]] +["1","07:05","Březová, aut. st.",["X"]] +["3","07:14","Závodu míru",["X"]] +["3","07:27","Sídliště Michal",["X","32"]] +["4","07:34","Závodu míru",["X"]] +["1","07:35","Březová, aut. st.",["X"]] +["3","07:45","Sídliště Michal",["X"]] +["1","07:55","Březová, aut. st.",["X"]] +["3","08:10","Závodu míru",["X","32"]] +["1","08:18","Březová, aut. st.",["X"]] +["33","08:29","Sídl. Michal škola",["X"]] +["3","08:34","Závodu míru",["X"]] +["3","08:50","Stará Ovčárna",["X"]] +["33","08:54","Sídl. Michal škola",["X"]] +["3","09:04","Závodu míru",["X"]] +["1","09:09","Březová, aut. st.",["X"]] +["3","09:24","Závodu míru",["X"]] +["33","09:34","Sídl. Michal škola",["X"]] +["4","09:41","Sídliště Michal",["X"]] +["3","09:45","Závodu míru",["X"]] +["1","09:58","Březová, aut. st.",["X"]] +["3","09:59","Jezero Michal",["X"]] +["7","10:14","Březová, aut.st.",["X"]] +["33","10:24","Sídl. Michal škola",["X"]] +["3","10:40","Závodu míru",["X"]] +["1","10:55","Březová, aut. st.",["X"]] +["3","10:55","Závodu míru",["X"]] +["3","11:17","Závodu míru",["X"]] +["33","11:29","Sídl. Michal škola",["X"]] +["3","11:44","Závodu míru",["X"]] +["1","11:46","Březová, aut. st.",["X"]] +["33","11:56","Sídl. Michal škola",["X"]] +["3","12:05","Závodu míru",["X"]] +["3","12:24","Jezero Michal",["X"]] +["1","12:33","Březová, aut. st.",["X"]] +["3","12:44","Závodu míru",["X"]] +["3","12:59","Závodu míru",["X"]] +["33","13:04","Sídl. Michal škola",["X"]] +["1","13:06","Březová, aut. st.",["X"]] +["3","13:15","Závodu míru",["X"]] +["2","13:17","Sídliště Michal",["X"]] +["1","13:22","Březová, aut. st.",["X"]] +["3","13:24","Stará Ovčárna",["X"]] +["33","13:39","Sídl. Michal škola",["X"]] +["1","13:48","Březová, aut. st.",["X"]] +["33","14:04","Sídl. Michal škola",["X"]] +["6","14:04","Sídl. Michal škola",["X"]] +["4","14:06","Stará Ovčárna",["X"]] +["3","14:09","Závodu míru",["X"]] +["1","14:10","Březová, aut. st.",["X"]] +["3","14:21","Závodu míru",["X"]] +["1","14:34","Březová, aut. st.",["X"]] +["6","14:34","Sídl. Michal škola",["X"]] +["4","14:42","Závodu míru",["X"]] +["3","14:43","Závodu míru",["X"]] +["33","14:46","Sídl. Michal škola",["X"]] +["3","14:52","Závodu míru",["X"]] +["1","15:09","Březová, aut. st.",["X"]] +["33","15:09","Sídl. Michal škola",["X"]] +["3","15:13","Závodu míru",["X"]] +["6","15:14","Sídl. Michal škola",["X"]] +["3","15:30","Závodu míru",["X"]] +["1","15:31","Březová, aut. st.",["X"]] +["33","15:39","Sídl. Michal škola",["X"]] +["3","15:39","Jezero Michal",["X"]] +["7","15:54","Březová, aut.st.",["X"]] +["4","16:06","Závodu míru",["X"]] +["33","16:14","Sídl. Michal škola",["X"]] +["3","16:14","Závodu míru",["X"]] +["1","16:21","Březová, aut. st.",["X"]] +["7","16:29","Březová, aut.st.",["X"]] +["3","16:35","Závodu míru",["X"]] +["3","16:48","Závodu míru",["X"]] +["7","16:59","Březová, aut.st.",["X"]] +["3","17:09","Jezero Michal",["X"]] +["3","17:18","Závodu míru",["X"]] +["3","17:34","Závodu míru",["X"]] +["1","17:38","Březová, aut. st.",["X"]] +["3","17:57","Závodu míru",["X"]] +["3","18:14","Závodu míru",["X"]] +["3","18:21","Závodu míru",["X"]] +["1","18:26","Březová, aut. st.",["X"]] +["3","18:34","Závodu míru",["X"]] +["3","18:54","Závodu míru",["X"]] +["1","19:08","Březová, aut. st.",["X"]] +["3","19:19","Závodu míru",["X","31"]] +["3","19:34","Závodu míru",["X","31"]] +["1","19:53","Březová, aut. st.",["X","31"]] +["3","19:54","Závodu míru",["X","31"]] +["3","20:19","Závodu míru",["X","31"]] +["3","20:49","Závodu míru",["X","31"]] +["1","20:55","Březová, aut. st.",["X","31"]] +["3","21:09","Závodu míru",["X","31"]] +["3","21:24","Stará Ovčárna",["X","31"]] +["1","21:38","Březová, aut. st.",["X","31"]] +["3","22:12","Stará Ovčárna",["X","31"]] +["1","22:28","Březová, aut. st.",["X","31"]] +["3","22:41","Závodu míru",["X","31"]] + +["8.7","Uteri"] +["3","04:29","Závodu míru",["X"]] +["1","04:50","Březová, aut. st.",["X"]] +["3","04:52","Závodu míru",["X"]] +["3","05:02","Závodu míru",["X"]] +["4","05:05","Závodu míru",["X"]] +["6","05:07","Závodu míru",["X","32"]] +["3","05:22","Závodu míru",["X"]] +["1","05:23","Březová, aut. st.",["X"]] +["4","05:35","Stará Ovčárna",["X"]] +["3","05:38","Sídliště Michal",["X","32"]] +["1","05:51","Březová, aut. st.",["X"]] +["3","05:58","Závodu míru",["X"]] +["1","06:13","Březová, aut. st.",["X"]] +["3","06:19","Závodu míru",["X","32"]] +["3","06:24","Sídliště Michal",["X"]] +["6","06:32","Sídl. Michal škola",["X","32"]] +["3","06:34","Závodu míru",["X"]] +["1","06:46","Březová, aut. st.",["X"]] +["3","06:56","Závodu míru",["X","32"]] +["3","07:04","Závodu míru",["X"]] +["1","07:05","Březová, aut. st.",["X"]] +["3","07:14","Závodu míru",["X"]] +["3","07:27","Sídliště Michal",["X","32"]] +["4","07:34","Závodu míru",["X"]] +["1","07:35","Březová, aut. st.",["X"]] +["3","07:45","Sídliště Michal",["X"]] +["1","07:55","Březová, aut. st.",["X"]] +["3","08:10","Závodu míru",["X","32"]] +["1","08:18","Březová, aut. st.",["X"]] +["33","08:29","Sídl. Michal škola",["X"]] +["3","08:34","Závodu míru",["X"]] +["3","08:50","Stará Ovčárna",["X"]] +["33","08:54","Sídl. Michal škola",["X"]] +["3","09:04","Závodu míru",["X"]] +["1","09:09","Březová, aut. st.",["X"]] +["3","09:24","Závodu míru",["X"]] +["33","09:34","Sídl. Michal škola",["X"]] +["4","09:41","Sídliště Michal",["X"]] +["3","09:45","Závodu míru",["X"]] +["1","09:58","Březová, aut. st.",["X"]] +["3","09:59","Jezero Michal",["X"]] +["7","10:14","Březová, aut.st.",["X"]] +["33","10:24","Sídl. Michal škola",["X"]] +["3","10:40","Závodu míru",["X"]] +["1","10:55","Březová, aut. st.",["X"]] +["3","10:55","Závodu míru",["X"]] +["3","11:17","Závodu míru",["X"]] +["33","11:29","Sídl. Michal škola",["X"]] +["3","11:44","Závodu míru",["X"]] +["1","11:46","Březová, aut. st.",["X"]] +["33","11:56","Sídl. Michal škola",["X"]] +["3","12:05","Závodu míru",["X"]] +["3","12:24","Jezero Michal",["X"]] +["1","12:33","Březová, aut. st.",["X"]] +["3","12:44","Závodu míru",["X"]] +["3","12:59","Závodu míru",["X"]] +["33","13:04","Sídl. Michal škola",["X"]] +["1","13:06","Březová, aut. st.",["X"]] +["3","13:15","Závodu míru",["X"]] +["2","13:17","Sídliště Michal",["X"]] +["1","13:22","Březová, aut. st.",["X"]] +["3","13:24","Stará Ovčárna",["X"]] +["33","13:39","Sídl. Michal škola",["X"]] +["1","13:48","Březová, aut. st.",["X"]] +["33","14:04","Sídl. Michal škola",["X"]] +["6","14:04","Sídl. Michal škola",["X"]] +["4","14:06","Stará Ovčárna",["X"]] +["3","14:09","Závodu míru",["X"]] +["1","14:10","Březová, aut. st.",["X"]] +["3","14:21","Závodu míru",["X"]] +["1","14:34","Březová, aut. st.",["X"]] +["6","14:34","Sídl. Michal škola",["X"]] +["4","14:42","Závodu míru",["X"]] +["3","14:43","Závodu míru",["X"]] +["33","14:46","Sídl. Michal škola",["X"]] +["3","14:52","Závodu míru",["X"]] +["1","15:09","Březová, aut. st.",["X"]] +["33","15:09","Sídl. Michal škola",["X"]] +["3","15:13","Závodu míru",["X"]] +["6","15:14","Sídl. Michal škola",["X"]] +["3","15:30","Závodu míru",["X"]] +["1","15:31","Březová, aut. st.",["X"]] +["33","15:39","Sídl. Michal škola",["X"]] +["3","15:39","Jezero Michal",["X"]] +["7","15:54","Březová, aut.st.",["X"]] +["4","16:06","Závodu míru",["X"]] +["33","16:14","Sídl. Michal škola",["X"]] +["3","16:14","Závodu míru",["X"]] +["1","16:21","Březová, aut. st.",["X"]] +["7","16:29","Březová, aut.st.",["X"]] +["3","16:35","Závodu míru",["X"]] +["3","16:48","Závodu míru",["X"]] +["7","16:59","Březová, aut.st.",["X"]] +["3","17:09","Jezero Michal",["X"]] +["3","17:18","Závodu míru",["X"]] +["3","17:34","Závodu míru",["X"]] +["1","17:38","Březová, aut. st.",["X"]] +["3","17:57","Závodu míru",["X"]] +["3","18:14","Závodu míru",["X"]] +["3","18:21","Závodu míru",["X"]] +["1","18:26","Březová, aut. st.",["X"]] +["3","18:34","Závodu míru",["X"]] +["3","18:54","Závodu míru",["X"]] +["1","19:08","Březová, aut. st.",["X"]] +["3","19:19","Závodu míru",["X","31"]] +["3","19:34","Závodu míru",["X","31"]] +["1","19:53","Březová, aut. st.",["X","31"]] +["3","19:54","Závodu míru",["X","31"]] +["3","20:19","Závodu míru",["X","31"]] +["3","20:49","Závodu míru",["X","31"]] +["1","20:55","Březová, aut. st.",["X","31"]] +["3","21:09","Závodu míru",["X","31"]] +["3","21:24","Stará Ovčárna",["X","31"]] +["1","21:38","Březová, aut. st.",["X","31"]] +["3","22:12","Stará Ovčárna",["X","31"]] +["1","22:28","Březová, aut. st.",["X","31"]] +["3","22:41","Závodu míru",["X","31"]] + +["9.7","Streda"] +["3","04:29","Závodu míru",["X"]] +["1","04:50","Březová, aut. st.",["X"]] +["3","04:52","Závodu míru",["X"]] +["3","05:02","Závodu míru",["X"]] +["4","05:05","Závodu míru",["X"]] +["6","05:07","Závodu míru",["X","32"]] +["3","05:22","Závodu míru",["X"]] +["1","05:23","Březová, aut. st.",["X"]] +["4","05:35","Stará Ovčárna",["X"]] +["3","05:38","Sídliště Michal",["X","32"]] +["1","05:51","Březová, aut. st.",["X"]] +["3","05:58","Závodu míru",["X"]] +["1","06:13","Březová, aut. st.",["X"]] +["3","06:19","Závodu míru",["X","32"]] +["3","06:24","Sídliště Michal",["X"]] +["6","06:32","Sídl. Michal škola",["X","32"]] +["3","06:34","Závodu míru",["X"]] +["1","06:46","Březová, aut. st.",["X"]] +["3","06:56","Závodu míru",["X","32"]] +["3","07:04","Závodu míru",["X"]] +["1","07:05","Březová, aut. st.",["X"]] +["3","07:14","Závodu míru",["X"]] +["3","07:27","Sídliště Michal",["X","32"]] +["4","07:34","Závodu míru",["X"]] +["1","07:35","Březová, aut. st.",["X"]] +["3","07:45","Sídliště Michal",["X"]] +["1","07:55","Březová, aut. st.",["X"]] +["3","08:10","Závodu míru",["X","32"]] +["1","08:18","Březová, aut. st.",["X"]] +["33","08:29","Sídl. Michal škola",["X"]] +["3","08:34","Závodu míru",["X"]] +["3","08:50","Stará Ovčárna",["X"]] +["33","08:54","Sídl. Michal škola",["X"]] +["3","09:04","Závodu míru",["X"]] +["1","09:09","Březová, aut. st.",["X"]] +["3","09:24","Závodu míru",["X"]] +["33","09:34","Sídl. Michal škola",["X"]] +["4","09:41","Sídliště Michal",["X"]] +["3","09:45","Závodu míru",["X"]] +["1","09:58","Březová, aut. st.",["X"]] +["3","09:59","Jezero Michal",["X"]] +["7","10:14","Březová, aut.st.",["X"]] +["33","10:24","Sídl. Michal škola",["X"]] +["3","10:40","Závodu míru",["X"]] +["1","10:55","Březová, aut. st.",["X"]] +["3","10:55","Závodu míru",["X"]] +["3","11:17","Závodu míru",["X"]] +["33","11:29","Sídl. Michal škola",["X"]] +["3","11:44","Závodu míru",["X"]] +["1","11:46","Březová, aut. st.",["X"]] +["33","11:56","Sídl. Michal škola",["X"]] +["3","12:05","Závodu míru",["X"]] +["3","12:24","Jezero Michal",["X"]] +["1","12:33","Březová, aut. st.",["X"]] +["3","12:44","Závodu míru",["X"]] +["3","12:59","Závodu míru",["X"]] +["33","13:04","Sídl. Michal škola",["X"]] +["1","13:06","Březová, aut. st.",["X"]] +["3","13:15","Závodu míru",["X"]] +["2","13:17","Sídliště Michal",["X"]] +["1","13:22","Březová, aut. st.",["X"]] +["3","13:24","Stará Ovčárna",["X"]] +["33","13:39","Sídl. Michal škola",["X"]] +["1","13:48","Březová, aut. st.",["X"]] +["33","14:04","Sídl. Michal škola",["X"]] +["6","14:04","Sídl. Michal škola",["X"]] +["4","14:06","Stará Ovčárna",["X"]] +["3","14:09","Závodu míru",["X"]] +["1","14:10","Březová, aut. st.",["X"]] +["3","14:21","Závodu míru",["X"]] +["1","14:34","Březová, aut. st.",["X"]] +["6","14:34","Sídl. Michal škola",["X"]] +["4","14:42","Závodu míru",["X"]] +["3","14:43","Závodu míru",["X"]] +["33","14:46","Sídl. Michal škola",["X"]] +["3","14:52","Závodu míru",["X"]] +["1","15:09","Březová, aut. st.",["X"]] +["33","15:09","Sídl. Michal škola",["X"]] +["3","15:13","Závodu míru",["X"]] +["6","15:14","Sídl. Michal škola",["X"]] +["3","15:30","Závodu míru",["X"]] +["1","15:31","Březová, aut. st.",["X"]] +["33","15:39","Sídl. Michal škola",["X"]] +["3","15:39","Jezero Michal",["X"]] +["7","15:54","Březová, aut.st.",["X"]] +["4","16:06","Závodu míru",["X"]] +["33","16:14","Sídl. Michal škola",["X"]] +["3","16:14","Závodu míru",["X"]] +["1","16:21","Březová, aut. st.",["X"]] +["7","16:29","Březová, aut.st.",["X"]] +["3","16:35","Závodu míru",["X"]] +["3","16:48","Závodu míru",["X"]] +["7","16:59","Březová, aut.st.",["X"]] +["3","17:09","Jezero Michal",["X"]] +["3","17:18","Závodu míru",["X"]] +["3","17:34","Závodu míru",["X"]] +["1","17:38","Březová, aut. st.",["X"]] +["3","17:57","Závodu míru",["X"]] +["3","18:14","Závodu míru",["X"]] +["3","18:21","Závodu míru",["X"]] +["1","18:26","Březová, aut. st.",["X"]] +["3","18:34","Závodu míru",["X"]] +["3","18:54","Závodu míru",["X"]] +["1","19:08","Březová, aut. st.",["X"]] +["3","19:19","Závodu míru",["X","31"]] +["3","19:34","Závodu míru",["X","31"]] +["1","19:53","Březová, aut. st.",["X","31"]] +["3","19:54","Závodu míru",["X","31"]] +["3","20:19","Závodu míru",["X","31"]] +["3","20:49","Závodu míru",["X","31"]] +["1","20:55","Březová, aut. st.",["X","31"]] +["3","21:09","Závodu míru",["X","31"]] +["3","21:24","Stará Ovčárna",["X","31"]] +["1","21:38","Březová, aut. st.",["X","31"]] +["3","22:12","Stará Ovčárna",["X","31"]] +["1","22:28","Březová, aut. st.",["X","31"]] +["3","22:41","Závodu míru",["X","31"]] + +["9.7","Streda"] +["3","04:29","Závodu míru",["X"]] +["1","04:50","Březová, aut. st.",["X"]] +["3","04:52","Závodu míru",["X"]] +["3","05:02","Závodu míru",["X"]] +["4","05:05","Závodu míru",["X"]] +["6","05:07","Závodu míru",["X","32"]] +["3","05:22","Závodu míru",["X"]] +["1","05:23","Březová, aut. st.",["X"]] +["4","05:35","Stará Ovčárna",["X"]] +["3","05:38","Sídliště Michal",["X","32"]] +["1","05:51","Březová, aut. st.",["X"]] +["3","05:58","Závodu míru",["X"]] +["1","06:13","Březová, aut. st.",["X"]] +["3","06:19","Závodu míru",["X","32"]] +["3","06:24","Sídliště Michal",["X"]] +["6","06:32","Sídl. Michal škola",["X","32"]] +["3","06:34","Závodu míru",["X"]] +["1","06:46","Březová, aut. st.",["X"]] +["3","06:56","Závodu míru",["X","32"]] +["3","07:04","Závodu míru",["X"]] +["1","07:05","Březová, aut. st.",["X"]] +["3","07:14","Závodu míru",["X"]] +["3","07:27","Sídliště Michal",["X","32"]] +["4","07:34","Závodu míru",["X"]] +["1","07:35","Březová, aut. st.",["X"]] +["3","07:45","Sídliště Michal",["X"]] +["1","07:55","Březová, aut. st.",["X"]] +["3","08:10","Závodu míru",["X","32"]] +["1","08:18","Březová, aut. st.",["X"]] +["33","08:29","Sídl. Michal škola",["X"]] +["3","08:34","Závodu míru",["X"]] +["3","08:50","Stará Ovčárna",["X"]] +["33","08:54","Sídl. Michal škola",["X"]] +["3","09:04","Závodu míru",["X"]] +["1","09:09","Březová, aut. st.",["X"]] +["3","09:24","Závodu míru",["X"]] +["33","09:34","Sídl. Michal škola",["X"]] +["4","09:41","Sídliště Michal",["X"]] +["3","09:45","Závodu míru",["X"]] +["1","09:58","Březová, aut. st.",["X"]] +["3","09:59","Jezero Michal",["X"]] +["7","10:14","Březová, aut.st.",["X"]] +["33","10:24","Sídl. Michal škola",["X"]] +["3","10:40","Závodu míru",["X"]] +["1","10:55","Březová, aut. st.",["X"]] +["3","10:55","Závodu míru",["X"]] +["3","11:17","Závodu míru",["X"]] +["33","11:29","Sídl. Michal škola",["X"]] +["3","11:44","Závodu míru",["X"]] +["1","11:46","Březová, aut. st.",["X"]] +["33","11:56","Sídl. Michal škola",["X"]] +["3","12:05","Závodu míru",["X"]] +["3","12:24","Jezero Michal",["X"]] +["1","12:33","Březová, aut. st.",["X"]] +["3","12:44","Závodu míru",["X"]] +["3","12:59","Závodu míru",["X"]] +["33","13:04","Sídl. Michal škola",["X"]] +["1","13:06","Březová, aut. st.",["X"]] +["3","13:15","Závodu míru",["X"]] +["2","13:17","Sídliště Michal",["X"]] +["1","13:22","Březová, aut. st.",["X"]] +["3","13:24","Stará Ovčárna",["X"]] +["33","13:39","Sídl. Michal škola",["X"]] +["1","13:48","Březová, aut. st.",["X"]] +["33","14:04","Sídl. Michal škola",["X"]] +["6","14:04","Sídl. Michal škola",["X"]] +["4","14:06","Stará Ovčárna",["X"]] +["3","14:09","Závodu míru",["X"]] +["1","14:10","Březová, aut. st.",["X"]] +["3","14:21","Závodu míru",["X"]] +["1","14:34","Březová, aut. st.",["X"]] +["6","14:34","Sídl. Michal škola",["X"]] +["4","14:42","Závodu míru",["X"]] +["3","14:43","Závodu míru",["X"]] +["33","14:46","Sídl. Michal škola",["X"]] +["3","14:52","Závodu míru",["X"]] +["1","15:09","Březová, aut. st.",["X"]] +["33","15:09","Sídl. Michal škola",["X"]] +["3","15:13","Závodu míru",["X"]] +["6","15:14","Sídl. Michal škola",["X"]] +["3","15:30","Závodu míru",["X"]] +["1","15:31","Březová, aut. st.",["X"]] +["33","15:39","Sídl. Michal škola",["X"]] +["3","15:39","Jezero Michal",["X"]] +["7","15:54","Březová, aut.st.",["X"]] +["4","16:06","Závodu míru",["X"]] +["33","16:14","Sídl. Michal škola",["X"]] +["3","16:14","Závodu míru",["X"]] +["1","16:21","Březová, aut. st.",["X"]] +["7","16:29","Březová, aut.st.",["X"]] +["3","16:35","Závodu míru",["X"]] +["3","16:48","Závodu míru",["X"]] +["7","16:59","Březová, aut.st.",["X"]] +["3","17:09","Jezero Michal",["X"]] +["3","17:18","Závodu míru",["X"]] +["3","17:34","Závodu míru",["X"]] +["1","17:38","Březová, aut. st.",["X"]] +["3","17:57","Závodu míru",["X"]] +["3","18:14","Závodu míru",["X"]] +["3","18:21","Závodu míru",["X"]] +["1","18:26","Březová, aut. st.",["X"]] +["3","18:34","Závodu míru",["X"]] +["3","18:54","Závodu míru",["X"]] +["1","19:08","Březová, aut. st.",["X"]] +["3","19:19","Závodu míru",["X","31"]] +["3","19:34","Závodu míru",["X","31"]] +["1","19:53","Březová, aut. st.",["X","31"]] +["3","19:54","Závodu míru",["X","31"]] +["3","20:19","Závodu míru",["X","31"]] +["3","20:49","Závodu míru",["X","31"]] +["1","20:55","Březová, aut. st.",["X","31"]] +["3","21:09","Závodu míru",["X","31"]] +["3","21:24","Stará Ovčárna",["X","31"]] +["1","21:38","Březová, aut. st.",["X","31"]] +["3","22:12","Stará Ovčárna",["X","31"]] +["1","22:28","Březová, aut. st.",["X","31"]] +["3","22:41","Závodu míru",["X","31"]] + +["10.7","Ctvrtek"] +["3","04:29","Závodu míru",["X"]] +["1","04:50","Březová, aut. st.",["X"]] +["3","04:52","Závodu míru",["X"]] +["3","05:02","Závodu míru",["X"]] +["4","05:05","Závodu míru",["X"]] +["6","05:07","Závodu míru",["X","32"]] +["3","05:22","Závodu míru",["X"]] +["1","05:23","Březová, aut. st.",["X"]] +["4","05:35","Stará Ovčárna",["X"]] +["3","05:38","Sídliště Michal",["X","32"]] +["1","05:51","Březová, aut. st.",["X"]] +["3","05:58","Závodu míru",["X"]] +["1","06:13","Březová, aut. st.",["X"]] +["3","06:19","Závodu míru",["X","32"]] +["3","06:24","Sídliště Michal",["X"]] +["6","06:32","Sídl. Michal škola",["X","32"]] +["3","06:34","Závodu míru",["X"]] +["1","06:46","Březová, aut. st.",["X"]] +["3","06:56","Závodu míru",["X","32"]] +["3","07:04","Závodu míru",["X"]] +["1","07:05","Březová, aut. st.",["X"]] +["3","07:14","Závodu míru",["X"]] +["3","07:27","Sídliště Michal",["X","32"]] +["4","07:34","Závodu míru",["X"]] +["1","07:35","Březová, aut. st.",["X"]] +["3","07:45","Sídliště Michal",["X"]] +["1","07:55","Březová, aut. st.",["X"]] +["3","08:10","Závodu míru",["X","32"]] +["1","08:18","Březová, aut. st.",["X"]] +["33","08:29","Sídl. Michal škola",["X"]] +["3","08:34","Závodu míru",["X"]] +["3","08:50","Stará Ovčárna",["X"]] +["33","08:54","Sídl. Michal škola",["X"]] +["3","09:04","Závodu míru",["X"]] +["1","09:09","Březová, aut. st.",["X"]] +["3","09:24","Závodu míru",["X"]] +["33","09:34","Sídl. Michal škola",["X"]] +["4","09:41","Sídliště Michal",["X"]] +["3","09:45","Závodu míru",["X"]] +["1","09:58","Březová, aut. st.",["X"]] +["3","09:59","Jezero Michal",["X"]] +["7","10:14","Březová, aut.st.",["X"]] +["33","10:24","Sídl. Michal škola",["X"]] +["3","10:40","Závodu míru",["X"]] +["1","10:55","Březová, aut. st.",["X"]] +["3","10:55","Závodu míru",["X"]] +["3","11:17","Závodu míru",["X"]] +["33","11:29","Sídl. Michal škola",["X"]] +["3","11:44","Závodu míru",["X"]] +["1","11:46","Březová, aut. st.",["X"]] +["33","11:56","Sídl. Michal škola",["X"]] +["3","12:05","Závodu míru",["X"]] +["3","12:24","Jezero Michal",["X"]] +["1","12:33","Březová, aut. st.",["X"]] +["3","12:44","Závodu míru",["X"]] +["3","12:59","Závodu míru",["X"]] +["33","13:04","Sídl. Michal škola",["X"]] +["1","13:06","Březová, aut. st.",["X"]] +["3","13:15","Závodu míru",["X"]] +["2","13:17","Sídliště Michal",["X"]] +["1","13:22","Březová, aut. st.",["X"]] +["3","13:24","Stará Ovčárna",["X"]] +["33","13:39","Sídl. Michal škola",["X"]] +["1","13:48","Březová, aut. st.",["X"]] +["33","14:04","Sídl. Michal škola",["X"]] +["6","14:04","Sídl. Michal škola",["X"]] +["4","14:06","Stará Ovčárna",["X"]] +["3","14:09","Závodu míru",["X"]] +["1","14:10","Březová, aut. st.",["X"]] +["3","14:21","Závodu míru",["X"]] +["1","14:34","Březová, aut. st.",["X"]] +["6","14:34","Sídl. Michal škola",["X"]] +["4","14:42","Závodu míru",["X"]] +["3","14:43","Závodu míru",["X"]] +["33","14:46","Sídl. Michal škola",["X"]] +["3","14:52","Závodu míru",["X"]] +["1","15:09","Březová, aut. st.",["X"]] +["33","15:09","Sídl. Michal škola",["X"]] +["3","15:13","Závodu míru",["X"]] +["6","15:14","Sídl. Michal škola",["X"]] +["3","15:30","Závodu míru",["X"]] +["1","15:31","Březová, aut. st.",["X"]] +["33","15:39","Sídl. Michal škola",["X"]] +["3","15:39","Jezero Michal",["X"]] +["7","15:54","Březová, aut.st.",["X"]] +["4","16:06","Závodu míru",["X"]] +["33","16:14","Sídl. Michal škola",["X"]] +["3","16:14","Závodu míru",["X"]] +["1","16:21","Březová, aut. st.",["X"]] +["7","16:29","Březová, aut.st.",["X"]] +["3","16:35","Závodu míru",["X"]] +["3","16:48","Závodu míru",["X"]] +["7","16:59","Březová, aut.st.",["X"]] +["3","17:09","Jezero Michal",["X"]] +["3","17:18","Závodu míru",["X"]] +["3","17:34","Závodu míru",["X"]] +["1","17:38","Březová, aut. st.",["X"]] +["3","17:57","Závodu míru",["X"]] +["3","18:14","Závodu míru",["X"]] +["3","18:21","Závodu míru",["X"]] +["1","18:26","Březová, aut. st.",["X"]] +["3","18:34","Závodu míru",["X"]] +["3","18:54","Závodu míru",["X"]] +["1","19:08","Březová, aut. st.",["X"]] +["3","19:19","Závodu míru",["X","31"]] +["3","19:34","Závodu míru",["X","31"]] +["1","19:53","Březová, aut. st.",["X","31"]] +["3","19:54","Závodu míru",["X","31"]] +["3","20:19","Závodu míru",["X","31"]] +["3","20:49","Závodu míru",["X","31"]] +["1","20:55","Březová, aut. st.",["X","31"]] +["3","21:09","Závodu míru",["X","31"]] +["3","21:24","Stará Ovčárna",["X","31"]] +["1","21:38","Březová, aut. st.",["X","31"]] +["3","22:12","Stará Ovčárna",["X","31"]] +["1","22:28","Březová, aut. st.",["X","31"]] +["3","22:41","Závodu míru",["X","31"]] + +["10.7","Ctvrtek"] +["3","04:29","Závodu míru",["X"]] +["1","04:50","Březová, aut. st.",["X"]] +["3","04:52","Závodu míru",["X"]] +["3","05:02","Závodu míru",["X"]] +["4","05:05","Závodu míru",["X"]] +["6","05:07","Závodu míru",["X","32"]] +["3","05:22","Závodu míru",["X"]] +["1","05:23","Březová, aut. st.",["X"]] +["4","05:35","Stará Ovčárna",["X"]] +["3","05:38","Sídliště Michal",["X","32"]] +["1","05:51","Březová, aut. st.",["X"]] +["3","05:58","Závodu míru",["X"]] +["1","06:13","Březová, aut. st.",["X"]] +["3","06:19","Závodu míru",["X","32"]] +["3","06:24","Sídliště Michal",["X"]] +["6","06:32","Sídl. Michal škola",["X","32"]] +["3","06:34","Závodu míru",["X"]] +["1","06:46","Březová, aut. st.",["X"]] +["3","06:56","Závodu míru",["X","32"]] +["3","07:04","Závodu míru",["X"]] +["1","07:05","Březová, aut. st.",["X"]] +["3","07:14","Závodu míru",["X"]] +["3","07:27","Sídliště Michal",["X","32"]] +["4","07:34","Závodu míru",["X"]] +["1","07:35","Březová, aut. st.",["X"]] +["3","07:45","Sídliště Michal",["X"]] +["1","07:55","Březová, aut. st.",["X"]] +["3","08:10","Závodu míru",["X","32"]] +["1","08:18","Březová, aut. st.",["X"]] +["33","08:29","Sídl. Michal škola",["X"]] +["3","08:34","Závodu míru",["X"]] +["3","08:50","Stará Ovčárna",["X"]] +["33","08:54","Sídl. Michal škola",["X"]] +["3","09:04","Závodu míru",["X"]] +["1","09:09","Březová, aut. st.",["X"]] +["3","09:24","Závodu míru",["X"]] +["33","09:34","Sídl. Michal škola",["X"]] +["4","09:41","Sídliště Michal",["X"]] +["3","09:45","Závodu míru",["X"]] +["1","09:58","Březová, aut. st.",["X"]] +["3","09:59","Jezero Michal",["X"]] +["7","10:14","Březová, aut.st.",["X"]] +["33","10:24","Sídl. Michal škola",["X"]] +["3","10:40","Závodu míru",["X"]] +["1","10:55","Březová, aut. st.",["X"]] +["3","10:55","Závodu míru",["X"]] +["3","11:17","Závodu míru",["X"]] +["33","11:29","Sídl. Michal škola",["X"]] +["3","11:44","Závodu míru",["X"]] +["1","11:46","Březová, aut. st.",["X"]] +["33","11:56","Sídl. Michal škola",["X"]] +["3","12:05","Závodu míru",["X"]] +["3","12:24","Jezero Michal",["X"]] +["1","12:33","Březová, aut. st.",["X"]] +["3","12:44","Závodu míru",["X"]] +["3","12:59","Závodu míru",["X"]] +["33","13:04","Sídl. Michal škola",["X"]] +["1","13:06","Březová, aut. st.",["X"]] +["3","13:15","Závodu míru",["X"]] +["2","13:17","Sídliště Michal",["X"]] +["1","13:22","Březová, aut. st.",["X"]] +["3","13:24","Stará Ovčárna",["X"]] +["33","13:39","Sídl. Michal škola",["X"]] +["1","13:48","Březová, aut. st.",["X"]] +["33","14:04","Sídl. Michal škola",["X"]] +["6","14:04","Sídl. Michal škola",["X"]] +["4","14:06","Stará Ovčárna",["X"]] +["3","14:09","Závodu míru",["X"]] +["1","14:10","Březová, aut. st.",["X"]] +["3","14:21","Závodu míru",["X"]] +["1","14:34","Březová, aut. st.",["X"]] +["6","14:34","Sídl. Michal škola",["X"]] +["4","14:42","Závodu míru",["X"]] +["3","14:43","Závodu míru",["X"]] +["33","14:46","Sídl. Michal škola",["X"]] +["3","14:52","Závodu míru",["X"]] +["1","15:09","Březová, aut. st.",["X"]] +["33","15:09","Sídl. Michal škola",["X"]] +["3","15:13","Závodu míru",["X"]] +["6","15:14","Sídl. Michal škola",["X"]] +["3","15:30","Závodu míru",["X"]] +["1","15:31","Březová, aut. st.",["X"]] +["33","15:39","Sídl. Michal škola",["X"]] +["3","15:39","Jezero Michal",["X"]] +["7","15:54","Březová, aut.st.",["X"]] +["4","16:06","Závodu míru",["X"]] +["33","16:14","Sídl. Michal škola",["X"]] +["3","16:14","Závodu míru",["X"]] +["1","16:21","Březová, aut. st.",["X"]] +["7","16:29","Březová, aut.st.",["X"]] +["3","16:35","Závodu míru",["X"]] +["3","16:48","Závodu míru",["X"]] +["7","16:59","Březová, aut.st.",["X"]] +["3","17:09","Jezero Michal",["X"]] +["3","17:18","Závodu míru",["X"]] +["3","17:34","Závodu míru",["X"]] +["1","17:38","Březová, aut. st.",["X"]] +["3","17:57","Závodu míru",["X"]] +["3","18:14","Závodu míru",["X"]] +["3","18:21","Závodu míru",["X"]] +["1","18:26","Březová, aut. st.",["X"]] +["3","18:34","Závodu míru",["X"]] +["3","18:54","Závodu míru",["X"]] +["1","19:08","Březová, aut. st.",["X"]] +["3","19:19","Závodu míru",["X","31"]] +["3","19:34","Závodu míru",["X","31"]] +["1","19:53","Březová, aut. st.",["X","31"]] +["3","19:54","Závodu míru",["X","31"]] +["3","20:19","Závodu míru",["X","31"]] +["3","20:49","Závodu míru",["X","31"]] +["1","20:55","Březová, aut. st.",["X","31"]] +["3","21:09","Závodu míru",["X","31"]] +["3","21:24","Stará Ovčárna",["X","31"]] +["1","21:38","Březová, aut. st.",["X","31"]] +["3","22:12","Stará Ovčárna",["X","31"]] +["1","22:28","Březová, aut. st.",["X","31"]] +["3","22:41","Závodu míru",["X","31"]] + +["11.7","Patek"] +["3","04:29","Závodu míru",["X"]] +["1","04:50","Březová, aut. st.",["X"]] +["3","04:52","Závodu míru",["X"]] +["3","05:02","Závodu míru",["X"]] +["4","05:05","Závodu míru",["X"]] +["6","05:07","Závodu míru",["X","32"]] +["3","05:22","Závodu míru",["X"]] +["1","05:23","Březová, aut. st.",["X"]] +["4","05:35","Stará Ovčárna",["X"]] +["3","05:38","Sídliště Michal",["X","32"]] +["1","05:51","Březová, aut. st.",["X"]] +["3","05:58","Závodu míru",["X"]] +["1","06:13","Březová, aut. st.",["X"]] +["3","06:19","Závodu míru",["X","32"]] +["3","06:24","Sídliště Michal",["X"]] +["6","06:32","Sídl. Michal škola",["X","32"]] +["3","06:34","Závodu míru",["X"]] +["1","06:46","Březová, aut. st.",["X"]] +["3","06:56","Závodu míru",["X","32"]] +["3","07:04","Závodu míru",["X"]] +["1","07:05","Březová, aut. st.",["X"]] +["3","07:14","Závodu míru",["X"]] +["3","07:27","Sídliště Michal",["X","32"]] +["4","07:34","Závodu míru",["X"]] +["1","07:35","Březová, aut. st.",["X"]] +["3","07:45","Sídliště Michal",["X"]] +["1","07:55","Březová, aut. st.",["X"]] +["3","08:10","Závodu míru",["X","32"]] +["1","08:18","Březová, aut. st.",["X"]] +["33","08:29","Sídl. Michal škola",["X"]] +["3","08:34","Závodu míru",["X"]] +["3","08:50","Stará Ovčárna",["X"]] +["33","08:54","Sídl. Michal škola",["X"]] +["3","09:04","Závodu míru",["X"]] +["1","09:09","Březová, aut. st.",["X"]] +["3","09:24","Závodu míru",["X"]] +["33","09:34","Sídl. Michal škola",["X"]] +["4","09:41","Sídliště Michal",["X"]] +["3","09:45","Závodu míru",["X"]] +["1","09:58","Březová, aut. st.",["X"]] +["3","09:59","Jezero Michal",["X"]] +["7","10:14","Březová, aut.st.",["X"]] +["33","10:24","Sídl. Michal škola",["X"]] +["3","10:40","Závodu míru",["X"]] +["1","10:55","Březová, aut. st.",["X"]] +["3","10:55","Závodu míru",["X"]] +["3","11:17","Závodu míru",["X"]] +["33","11:29","Sídl. Michal škola",["X"]] +["3","11:44","Závodu míru",["X"]] +["1","11:46","Březová, aut. st.",["X"]] +["33","11:56","Sídl. Michal škola",["X"]] +["3","12:05","Závodu míru",["X"]] +["3","12:24","Jezero Michal",["X"]] +["1","12:33","Březová, aut. st.",["X"]] +["3","12:44","Závodu míru",["X"]] +["3","12:59","Závodu míru",["X"]] +["33","13:04","Sídl. Michal škola",["X"]] +["1","13:06","Březová, aut. st.",["X"]] +["3","13:15","Závodu míru",["X"]] +["2","13:17","Sídliště Michal",["X"]] +["1","13:22","Březová, aut. st.",["X"]] +["3","13:24","Stará Ovčárna",["X"]] +["33","13:39","Sídl. Michal škola",["X"]] +["1","13:48","Březová, aut. st.",["X"]] +["33","14:04","Sídl. Michal škola",["X"]] +["6","14:04","Sídl. Michal škola",["X"]] +["4","14:06","Stará Ovčárna",["X"]] +["3","14:09","Závodu míru",["X"]] +["1","14:10","Březová, aut. st.",["X"]] +["3","14:21","Závodu míru",["X"]] +["1","14:34","Březová, aut. st.",["X"]] +["6","14:34","Sídl. Michal škola",["X"]] +["4","14:42","Závodu míru",["X"]] +["3","14:43","Závodu míru",["X"]] +["33","14:46","Sídl. Michal škola",["X"]] +["3","14:52","Závodu míru",["X"]] +["1","15:09","Březová, aut. st.",["X"]] +["33","15:09","Sídl. Michal škola",["X"]] +["3","15:13","Závodu míru",["X"]] +["6","15:14","Sídl. Michal škola",["X"]] +["3","15:30","Závodu míru",["X"]] +["1","15:31","Březová, aut. st.",["X"]] +["33","15:39","Sídl. Michal škola",["X"]] +["3","15:39","Jezero Michal",["X"]] +["7","15:54","Březová, aut.st.",["X"]] +["4","16:06","Závodu míru",["X"]] +["33","16:14","Sídl. Michal škola",["X"]] +["3","16:14","Závodu míru",["X"]] +["1","16:21","Březová, aut. st.",["X"]] +["7","16:29","Březová, aut.st.",["X"]] +["3","16:35","Závodu míru",["X"]] +["3","16:48","Závodu míru",["X"]] +["7","16:59","Březová, aut.st.",["X"]] +["3","17:09","Jezero Michal",["X"]] +["3","17:18","Závodu míru",["X"]] +["3","17:34","Závodu míru",["X"]] +["1","17:38","Březová, aut. st.",["X"]] +["3","17:57","Závodu míru",["X"]] +["3","18:14","Závodu míru",["X"]] +["3","18:21","Závodu míru",["X"]] +["1","18:26","Březová, aut. st.",["X"]] +["3","18:34","Závodu míru",["X"]] +["3","18:54","Závodu míru",["X"]] +["1","19:08","Březová, aut. st.",["X"]] +["3","19:19","Závodu míru",["X","31"]] +["3","19:34","Závodu míru",["X","31"]] +["1","19:53","Březová, aut. st.",["X","31"]] +["3","19:54","Závodu míru",["X","31"]] +["3","20:19","Závodu míru",["X","31"]] +["3","20:49","Závodu míru",["X","31"]] +["1","20:55","Březová, aut. st.",["X","31"]] +["3","21:09","Závodu míru",["X","31"]] +["3","21:24","Stará Ovčárna",["X","31"]] +["1","21:38","Březová, aut. st.",["X","31"]] +["3","22:12","Stará Ovčárna",["X","31"]] +["1","22:28","Březová, aut. st.",["X","31"]] +["3","22:41","Závodu míru",["X","31"]] + +["11.7","Patek"] +["3","04:29","Závodu míru",["X"]] +["1","04:50","Březová, aut. st.",["X"]] +["3","04:52","Závodu míru",["X"]] +["3","05:02","Závodu míru",["X"]] +["4","05:05","Závodu míru",["X"]] +["6","05:07","Závodu míru",["X","32"]] +["3","05:22","Závodu míru",["X"]] +["1","05:23","Březová, aut. st.",["X"]] +["4","05:35","Stará Ovčárna",["X"]] +["3","05:38","Sídliště Michal",["X","32"]] +["1","05:51","Březová, aut. st.",["X"]] +["3","05:58","Závodu míru",["X"]] +["1","06:13","Březová, aut. st.",["X"]] +["3","06:19","Závodu míru",["X","32"]] +["3","06:24","Sídliště Michal",["X"]] +["6","06:32","Sídl. Michal škola",["X","32"]] +["3","06:34","Závodu míru",["X"]] +["1","06:46","Březová, aut. st.",["X"]] +["3","06:56","Závodu míru",["X","32"]] +["3","07:04","Závodu míru",["X"]] +["1","07:05","Březová, aut. st.",["X"]] +["3","07:14","Závodu míru",["X"]] +["3","07:27","Sídliště Michal",["X","32"]] +["4","07:34","Závodu míru",["X"]] +["1","07:35","Březová, aut. st.",["X"]] +["3","07:45","Sídliště Michal",["X"]] +["1","07:55","Březová, aut. st.",["X"]] +["3","08:10","Závodu míru",["X","32"]] +["1","08:18","Březová, aut. st.",["X"]] +["33","08:29","Sídl. Michal škola",["X"]] +["3","08:34","Závodu míru",["X"]] +["3","08:50","Stará Ovčárna",["X"]] +["33","08:54","Sídl. Michal škola",["X"]] +["3","09:04","Závodu míru",["X"]] +["1","09:09","Březová, aut. st.",["X"]] +["3","09:24","Závodu míru",["X"]] +["33","09:34","Sídl. Michal škola",["X"]] +["4","09:41","Sídliště Michal",["X"]] +["3","09:45","Závodu míru",["X"]] +["1","09:58","Březová, aut. st.",["X"]] +["3","09:59","Jezero Michal",["X"]] +["7","10:14","Březová, aut.st.",["X"]] +["33","10:24","Sídl. Michal škola",["X"]] +["3","10:40","Závodu míru",["X"]] +["1","10:55","Březová, aut. st.",["X"]] +["3","10:55","Závodu míru",["X"]] +["3","11:17","Závodu míru",["X"]] +["33","11:29","Sídl. Michal škola",["X"]] +["3","11:44","Závodu míru",["X"]] +["1","11:46","Březová, aut. st.",["X"]] +["33","11:56","Sídl. Michal škola",["X"]] +["3","12:05","Závodu míru",["X"]] +["3","12:24","Jezero Michal",["X"]] +["1","12:33","Březová, aut. st.",["X"]] +["3","12:44","Závodu míru",["X"]] +["3","12:59","Závodu míru",["X"]] +["33","13:04","Sídl. Michal škola",["X"]] +["1","13:06","Březová, aut. st.",["X"]] +["3","13:15","Závodu míru",["X"]] +["2","13:17","Sídliště Michal",["X"]] +["1","13:22","Březová, aut. st.",["X"]] +["3","13:24","Stará Ovčárna",["X"]] +["33","13:39","Sídl. Michal škola",["X"]] +["1","13:48","Březová, aut. st.",["X"]] +["33","14:04","Sídl. Michal škola",["X"]] +["6","14:04","Sídl. Michal škola",["X"]] +["4","14:06","Stará Ovčárna",["X"]] +["3","14:09","Závodu míru",["X"]] +["1","14:10","Březová, aut. st.",["X"]] +["3","14:21","Závodu míru",["X"]] +["1","14:34","Březová, aut. st.",["X"]] +["6","14:34","Sídl. Michal škola",["X"]] +["4","14:42","Závodu míru",["X"]] +["3","14:43","Závodu míru",["X"]] +["33","14:46","Sídl. Michal škola",["X"]] +["3","14:52","Závodu míru",["X"]] +["1","15:09","Březová, aut. st.",["X"]] +["33","15:09","Sídl. Michal škola",["X"]] +["3","15:13","Závodu míru",["X"]] +["6","15:14","Sídl. Michal škola",["X"]] +["3","15:30","Závodu míru",["X"]] +["1","15:31","Březová, aut. st.",["X"]] +["33","15:39","Sídl. Michal škola",["X"]] +["3","15:39","Jezero Michal",["X"]] +["7","15:54","Březová, aut.st.",["X"]] +["4","16:06","Závodu míru",["X"]] +["33","16:14","Sídl. Michal škola",["X"]] +["3","16:14","Závodu míru",["X"]] +["1","16:21","Březová, aut. st.",["X"]] +["7","16:29","Březová, aut.st.",["X"]] +["3","16:35","Závodu míru",["X"]] +["3","16:48","Závodu míru",["X"]] +["7","16:59","Březová, aut.st.",["X"]] +["3","17:09","Jezero Michal",["X"]] +["3","17:18","Závodu míru",["X"]] +["3","17:34","Závodu míru",["X"]] +["1","17:38","Březová, aut. st.",["X"]] +["3","17:57","Závodu míru",["X"]] +["3","18:14","Závodu míru",["X"]] +["3","18:21","Závodu míru",["X"]] +["1","18:26","Březová, aut. st.",["X"]] +["3","18:34","Závodu míru",["X"]] +["3","18:54","Závodu míru",["X"]] +["1","19:08","Březová, aut. st.",["X"]] +["3","19:19","Závodu míru",["X","31"]] +["3","19:34","Závodu míru",["X","31"]] +["1","19:53","Březová, aut. st.",["X","31"]] +["3","19:54","Závodu míru",["X","31"]] +["3","20:19","Závodu míru",["X","31"]] +["3","20:49","Závodu míru",["X","31"]] +["1","20:55","Březová, aut. st.",["X","31"]] +["3","21:09","Závodu míru",["X","31"]] +["3","21:24","Stará Ovčárna",["X","31"]] +["1","21:38","Březová, aut. st.",["X","31"]] +["3","22:12","Stará Ovčárna",["X","31"]] +["1","22:28","Březová, aut. st.",["X","31"]] +["3","22:41","Závodu míru",["X","31"]] + +["12.7","Sobota"] +["3","04:56","Závodu míru",["6+","25"]] +["1","05:47","Březová, aut. st.",["6+","25"]] +["3","05:57","Závodu míru",["6+","25"]] +["3","06:24","Závodu míru",["6+","25"]] +["3","06:56","Závodu míru",["6+"]] +["1","06:57","Březová, aut. st.",["6+","25"]] +["3","07:19","Závodu míru",["6+"]] +["3","07:51","Závodu míru",["6+"]] +["1","07:57","Březová, aut. st.",["6+"]] +["3","08:15","Závodu míru",["6+"]] +["3","08:51","Závodu míru",["6+"]] +["1","08:57","Březová, aut. st.",["6+"]] +["3","09:20","Závodu míru",["6+"]] +["3","09:38","Jezero Michal",["6+","33"]] +["1","09:44","Březová, aut. st.",["6+"]] +["3","09:51","Závodu míru",["6+"]] +["3","10:19","Závodu míru",["6+"]] +["3","10:43","Jezero Michal",["6+","33"]] +["1","10:57","Březová, aut. st.",["6+"]] +["3","11:02","Závodu míru",["6+"]] +["3","11:29","Závodu míru",["6+"]] +["1","11:49","Březová, aut. st.",["6+"]] +["3","11:51","Závodu míru",["6+"]] +["3","12:19","Závodu míru",["6+"]] +["3","12:38","Jezero Michal",["6+","33"]] +["3","12:51","Závodu míru",["6+"]] +["1","12:57","Březová, aut. st.",["6+"]] +["3","13:28","Závodu míru",["6+"]] +["3","13:51","Závodu míru",["6+"]] +["1","13:57","Březová, aut. st.",["6+"]] +["3","14:19","Závodu míru",["6+"]] +["1","14:49","Březová, aut. st.",["6+"]] +["3","14:51","Závodu míru",["6+"]] +["3","15:19","Závodu míru",["6+"]] +["3","15:38","Jezero Michal",["6+","33"]] +["3","15:51","Závodu míru",["6+"]] +["1","15:57","Březová, aut. st.",["6+"]] +["3","16:28","Závodu míru",["6+"]] +["3","16:53","Závodu míru",["6+"]] +["1","16:57","Březová, aut. st.",["6+"]] +["3","17:14","Závodu míru",["6+"]] +["3","17:38","Jezero Michal",["6+","33"]] +["3","17:51","Závodu míru",["6+"]] +["3","18:21","Stará Ovčárna",["6+"]] +["1","18:24","Březová, aut. st.",["6+"]] +["3","18:51","Závodu míru",["6+"]] +["3","19:14","Závodu míru",["6+","24"]] +["3","19:54","Závodu míru",["6+","24"]] +["1","19:57","Březová, aut. st.",["6+","24"]] +["1","20:28","Březová, aut. st.",["6+","24"]] +["3","20:49","Závodu míru",["6+","24"]] +["1","21:23","Březová, aut. st.",["6+","24"]] +["3","21:24","Závodu míru",["6+","24"]] +["3","22:04","Závodu míru",["6+","24"]] + +["12.7","Sobota"] +["3","04:56","Závodu míru",["6+","25"]] +["1","05:47","Březová, aut. st.",["6+","25"]] +["3","05:57","Závodu míru",["6+","25"]] +["3","06:24","Závodu míru",["6+","25"]] +["3","06:56","Závodu míru",["6+"]] +["1","06:57","Březová, aut. st.",["6+","25"]] +["3","07:19","Závodu míru",["6+"]] +["3","07:51","Závodu míru",["6+"]] +["1","07:57","Březová, aut. st.",["6+"]] +["3","08:15","Závodu míru",["6+"]] +["3","08:51","Závodu míru",["6+"]] +["1","08:57","Březová, aut. st.",["6+"]] +["3","09:20","Závodu míru",["6+"]] +["3","09:38","Jezero Michal",["6+","33"]] +["1","09:44","Březová, aut. st.",["6+"]] +["3","09:51","Závodu míru",["6+"]] +["3","10:19","Závodu míru",["6+"]] +["3","10:43","Jezero Michal",["6+","33"]] +["1","10:57","Březová, aut. st.",["6+"]] +["3","11:02","Závodu míru",["6+"]] +["3","11:29","Závodu míru",["6+"]] +["1","11:49","Březová, aut. st.",["6+"]] +["3","11:51","Závodu míru",["6+"]] +["3","12:19","Závodu míru",["6+"]] +["3","12:38","Jezero Michal",["6+","33"]] +["3","12:51","Závodu míru",["6+"]] +["1","12:57","Březová, aut. st.",["6+"]] +["3","13:28","Závodu míru",["6+"]] +["3","13:51","Závodu míru",["6+"]] +["1","13:57","Březová, aut. st.",["6+"]] +["3","14:19","Závodu míru",["6+"]] +["1","14:49","Březová, aut. st.",["6+"]] +["3","14:51","Závodu míru",["6+"]] +["3","15:19","Závodu míru",["6+"]] +["3","15:38","Jezero Michal",["6+","33"]] +["3","15:51","Závodu míru",["6+"]] +["1","15:57","Březová, aut. st.",["6+"]] +["3","16:28","Závodu míru",["6+"]] +["3","16:53","Závodu míru",["6+"]] +["1","16:57","Březová, aut. st.",["6+"]] +["3","17:14","Závodu míru",["6+"]] +["3","17:38","Jezero Michal",["6+","33"]] +["3","17:51","Závodu míru",["6+"]] +["3","18:21","Stará Ovčárna",["6+"]] +["1","18:24","Březová, aut. st.",["6+"]] +["3","18:51","Závodu míru",["6+"]] +["3","19:14","Závodu míru",["6+","24"]] +["3","19:54","Závodu míru",["6+","24"]] +["1","19:57","Březová, aut. st.",["6+","24"]] +["1","20:28","Březová, aut. st.",["6+","24"]] +["3","20:49","Závodu míru",["6+","24"]] +["1","21:23","Březová, aut. st.",["6+","24"]] +["3","21:24","Závodu míru",["6+","24"]] +["3","22:04","Závodu míru",["6+","24"]] + +["13.7","Nedele"] +["3","04:56","Závodu míru",["6+","25"]] +["1","05:47","Březová, aut. st.",["6+","25"]] +["3","05:57","Závodu míru",["6+","25"]] +["3","06:24","Závodu míru",["6+","25"]] +["3","06:56","Závodu míru",["6+"]] +["1","06:57","Březová, aut. st.",["6+","25"]] +["3","07:19","Závodu míru",["6+"]] +["3","07:51","Závodu míru",["6+"]] +["1","07:57","Březová, aut. st.",["6+"]] +["3","08:15","Závodu míru",["6+"]] +["3","08:51","Závodu míru",["6+"]] +["1","08:57","Březová, aut. st.",["6+"]] +["3","09:20","Závodu míru",["6+"]] +["3","09:38","Jezero Michal",["6+","33"]] +["1","09:44","Březová, aut. st.",["6+"]] +["3","09:51","Závodu míru",["6+"]] +["3","10:19","Závodu míru",["6+"]] +["3","10:43","Jezero Michal",["6+","33"]] +["1","10:57","Březová, aut. st.",["6+"]] +["3","11:02","Závodu míru",["6+"]] +["3","11:29","Závodu míru",["6+"]] +["1","11:49","Březová, aut. st.",["6+"]] +["3","11:51","Závodu míru",["6+"]] +["3","12:19","Závodu míru",["6+"]] +["3","12:38","Jezero Michal",["6+","33"]] +["3","12:51","Závodu míru",["6+"]] +["1","12:57","Březová, aut. st.",["6+"]] +["3","13:28","Závodu míru",["6+"]] +["3","13:51","Závodu míru",["6+"]] +["1","13:57","Březová, aut. st.",["6+"]] +["3","14:19","Závodu míru",["6+"]] +["1","14:49","Březová, aut. st.",["6+"]] +["3","14:51","Závodu míru",["6+"]] +["3","15:19","Závodu míru",["6+"]] +["3","15:38","Jezero Michal",["6+","33"]] +["3","15:51","Závodu míru",["6+"]] +["1","15:57","Březová, aut. st.",["6+"]] +["3","16:28","Závodu míru",["6+"]] +["3","16:53","Závodu míru",["6+"]] +["1","16:57","Březová, aut. st.",["6+"]] +["3","17:14","Závodu míru",["6+"]] +["3","17:38","Jezero Michal",["6+","33"]] +["3","17:51","Závodu míru",["6+"]] +["3","18:21","Stará Ovčárna",["6+"]] +["1","18:24","Březová, aut. st.",["6+"]] +["3","18:51","Závodu míru",["6+"]] +["3","19:14","Závodu míru",["6+","24"]] +["3","19:54","Závodu míru",["6+","24"]] +["1","19:57","Březová, aut. st.",["6+","24"]] +["1","20:28","Březová, aut. st.",["6+","24"]] +["3","20:49","Závodu míru",["6+","24"]] +["1","21:23","Březová, aut. st.",["6+","24"]] +["3","21:24","Závodu míru",["6+","24"]] +["3","22:04","Závodu míru",["6+","24"]] + +["13.7","Nedele"] +["3","04:56","Závodu míru",["6+","25"]] +["1","05:47","Březová, aut. st.",["6+","25"]] +["3","05:57","Závodu míru",["6+","25"]] +["3","06:24","Závodu míru",["6+","25"]] +["3","06:56","Závodu míru",["6+"]] +["1","06:57","Březová, aut. st.",["6+","25"]] +["3","07:19","Závodu míru",["6+"]] +["3","07:51","Závodu míru",["6+"]] +["1","07:57","Březová, aut. st.",["6+"]] +["3","08:15","Závodu míru",["6+"]] +["3","08:51","Závodu míru",["6+"]] +["1","08:57","Březová, aut. st.",["6+"]] +["3","09:20","Závodu míru",["6+"]] +["3","09:38","Jezero Michal",["6+","33"]] +["1","09:44","Březová, aut. st.",["6+"]] +["3","09:51","Závodu míru",["6+"]] +["3","10:19","Závodu míru",["6+"]] +["3","10:43","Jezero Michal",["6+","33"]] +["1","10:57","Březová, aut. st.",["6+"]] +["3","11:02","Závodu míru",["6+"]] +["3","11:29","Závodu míru",["6+"]] +["1","11:49","Březová, aut. st.",["6+"]] +["3","11:51","Závodu míru",["6+"]] +["3","12:19","Závodu míru",["6+"]] +["3","12:38","Jezero Michal",["6+","33"]] +["3","12:51","Závodu míru",["6+"]] +["1","12:57","Březová, aut. st.",["6+"]] +["3","13:28","Závodu míru",["6+"]] +["3","13:51","Závodu míru",["6+"]] +["1","13:57","Březová, aut. st.",["6+"]] +["3","14:19","Závodu míru",["6+"]] +["1","14:49","Březová, aut. st.",["6+"]] +["3","14:51","Závodu míru",["6+"]] +["3","15:19","Závodu míru",["6+"]] +["3","15:38","Jezero Michal",["6+","33"]] +["3","15:51","Závodu míru",["6+"]] +["1","15:57","Březová, aut. st.",["6+"]] +["3","16:28","Závodu míru",["6+"]] +["3","16:53","Závodu míru",["6+"]] +["1","16:57","Březová, aut. st.",["6+"]] +["3","17:14","Závodu míru",["6+"]] +["3","17:38","Jezero Michal",["6+","33"]] +["3","17:51","Závodu míru",["6+"]] +["3","18:21","Stará Ovčárna",["6+"]] +["1","18:24","Březová, aut. st.",["6+"]] +["3","18:51","Závodu míru",["6+"]] +["3","19:14","Závodu míru",["6+","24"]] +["3","19:54","Závodu míru",["6+","24"]] +["1","19:57","Březová, aut. st.",["6+","24"]] +["1","20:28","Březová, aut. st.",["6+","24"]] +["3","20:49","Závodu míru",["6+","24"]] +["1","21:23","Březová, aut. st.",["6+","24"]] +["3","21:24","Závodu míru",["6+","24"]] +["3","22:04","Závodu míru",["6+","24"]] + diff --git a/err.txt b/err.txt new file mode 100644 index 0000000..de1739b --- /dev/null +++ b/err.txt @@ -0,0 +1,7 @@ +[2025-07-13T19:56:22.298] [ERROR] errLogs - uncaughtException: write EPIPE +[2025-07-13T19:56:22.304] [ERROR] errLogs - Error: write EPIPE + at process.target._send (internal/child_process.js:841:20) + at process.target.send (internal/child_process.js:712:19) + at Framework.F.stop.F.kill (/home/unipi/flowserver/node_modules/total4/index.js:2873:12) + at process.forcestop (/home/unipi/flowserver/node_modules/total4/index.js:18380:4) + at process.emit (events.js:400:28) diff --git a/flow/bussdepartures.js b/flow/bussdepartures.js new file mode 100644 index 0000000..753bea7 --- /dev/null +++ b/flow/bussdepartures.js @@ -0,0 +1,99 @@ +exports.id = 'busdepartures'; +exports.title = 'Bus departures'; +exports.group = 'Worksys'; +exports.color = '#5D9CEC'; +exports.version = '0.0.1'; +exports.output = ['red', 'white']; +exports.input = true; +exports.author = 'Rastislav Kovac'; +exports.icon = 'cloud-upload'; + + +exports.readme = `Handle bus departures`; + + +exports.install = function(instance) { + + // we get start data after 30 seconds we start flow + setTimeout(() => { + instance.send(0, {departures:[]}) + }, 20000) + + setTimeout(() => { + instance.send(1, {delays:[]}) + }, 30000) + + + // let day = new Date().getDay(); + + // function checkIfNewDay() { + // let currentDay = new Date().getDay(); + // console.log('new day check -----',day, currentDay); + // if(currentDay == day) return; + + // instance.send(0, {departures:[]}) + // day = currentDay; + // } + + // //we check if day changed, if yes, we get bus departures + // setInterval(checkIfNewDay, 1800000); + + // we check delays every minute + setInterval(() => { + instance.send(1, {delays:[]}) + }, 60000); + + + // we check departures every 15 minutes + setInterval(() => { + instance.send(0, {departures:[]}) + }, 900000); + + + // instance.on('data', flowdata => { + // console.log('neuspesny departures req ++++++++++++++ ',flowdata.data); + // if(flowdata.data == 'repeatDepartureRequest') + // { + // setTimeout(() => { + // instance.send(0, {departures:[]}) + // }, 60000) + // } + // }) + +} + + + + +// { +// "data": "{\"delays\":[[\"25\",0],[\"94\",0],[\"27\",0],[\"106\",0],[\"84\",0],[\"29\",0],[\"6\",0],[\"96\",0],[\"31\",0],[\"4\",0]]}", +// "status": 200, +// "headers": { +// "cache-control": "private, no-cache, no-store, max-age=0", +// "vary": "Accept-Encoding, Last-Modified, User-Agent", +// "expires": "-1", +// "x-powered-by": "Total.js", +// "content-type": "application/json; charset=utf-8", +// "date": "Mon, 21 Nov 2022 13:23:51 GMT", +// "connection": "close", +// "transfer-encoding": "chunked" +// }, +// "host": "192.168.252.2:8004" +// } + + +// { +// "data": "{\"departures\":[[\"2\",\"3\",\"22.11.22 04:05\",\"Závodu míru\"],[\"290\",\"3\",\"22.11.22 04:25\",\"Závodu míru\"],[\"292\",\"3\",\"22.11.22 04:48\",\"Závodu míru\"],[\"296\",\"3\",\"22.11.22 04:58\",\"Závodu míru\"],[\"6\",\"3\",\"22.11.22 05:05\",\"Závodu míru\"],[\"300\",\"3\",\"22.11.22 05:18\",\"Závodu míru\"],[\"8\",\"3\",\"22.11.22 05:55\",\"Závodu míru\"],[\"16\",\"3\",\"22.11.22 06:30\",\"Závodu míru\"],[\"1\",\"33\",\"22.11.22 06:45\",\"sídl. Michal škola\"],[\"18\",\"3\",\"22.11.22 06:52\",\"Hrušková\"],[\"310\",\"3\",\"22.11.22 07:00\",\"Závodu míru\"],[\"22\",\"3\",\"22.11.22 07:10\",\"Závodu míru\"],[\"5\",\"33\",\"22.11.22 07:50\",\"sídl. Michal škola\"],[\"32\",\"3\",\"22.11.22 08:10\",\"Závodu míru\"],[\"7\",\"33\",\"22.11.22 08:25\",\"sídl. Michal škola\"],[\"100\",\"3\",\"22.11.22 08:30\",\"Závodu míru\"],[\"9\",\"33\",\"22.11.22 08:50\",\"sídl. Michal škola\"],[\"34\",\"3\",\"22.11.22 09:00\",\"Závodu míru\"],[\"38\",\"3\",\"22.11.22 09:20\",\"Závodu míru\"],[\"11\",\"33\",\"22.11.22 09:30\",\"sídl. Michal škola\"],[\"298\",\"3\",\"22.11.22 09:55\",\"Závodu míru\"],[\"2\",\"7\",\"22.11.22 10:10\",\"Březová, aut. st.\"],[\"13\",\"33\",\"22.11.22 10:20\",\"sídl. Michal škola\"],[\"48\",\"3\",\"22.11.22 10:50\",\"Závodu míru\"],[\"50\",\"3\",\"22.11.22 11:13\",\"Závodu míru\"],[\"15\",\"33\",\"22.11.22 11:25\",\"sídl. Michal škola\"],[\"52\",\"3\",\"22.11.22 11:40\",\"Závodu míru\"],[\"17\",\"33\",\"22.11.22 11:52\",\"sídl. Michal škola\"],[\"56\",\"3\",\"22.11.22 12:20\",\"Závodu míru\"],[\"62\",\"3\",\"22.11.22 12:40\",\"Závodu míru\"],[\"64\",\"3\",\"22.11.22 12:55\",\"Závodu míru\"],[\"19\",\"33\",\"22.11.22 13:00\",\"sídl. Michal škola\"],[\"66\",\"3\",\"22.11.22 13:20\",\"Stará ovčárna\"],[\"21\",\"33\",\"22.11.22 13:35\",\"sídl. Michal škola\"],[\"23\",\"33\",\"22.11.22 14:00\",\"sídl. Michal škola\"],[\"72\",\"3\",\"22.11.22 14:05\",\"Závodu míru\"],[\"25\",\"33\",\"22.11.22 14:42\",\"sídl. Michal škola\"],[\"94\",\"3\",\"22.11.22 14:48\",\"Závodu míru\"],[\"27\",\"33\",\"22.11.22 15:05\",\"sídl. Michal škola\"],[\"106\",\"3\",\"22.11.22 15:09\",\"Závodu míru\"],[\"84\",\"3\",\"22.11.22 15:35\",\"Závodu míru\"],[\"29\",\"33\",\"22.11.22 15:35\",\"sídl. Michal škola\"],[\"6\",\"7\",\"22.11.22 15:50\",\"Březová, aut. st.\"],[\"96\",\"3\",\"22.11.22 16:10\",\"Závodu míru\"],[\"31\",\"33\",\"22.11.22 16:10\",\"sídl. Michal škola\"],[\"4\",\"7\",\"22.11.22 16:25\",\"Březová, aut. st.\"],[\"102\",\"3\",\"22.11.22 16:30\",\"Závodu míru\"],[\"302\",\"3\",\"22.11.22 16:44\",\"Závodu míru\"],[\"8\",\"7\",\"22.11.22 16:55\",\"Březová, aut. st.\"],[\"108\",\"3\",\"22.11.22 17:05\",\"Stará ovčárna\"],[\"112\",\"3\",\"22.11.22 17:30\",\"Závodu míru\"],[\"114\",\"3\",\"22.11.22 17:53\",\"Závodu míru\"],[\"118\",\"3\",\"22.11.22 18:10\",\"Závodu míru\"],[\"120\",\"3\",\"22.11.22 18:30\",\"Závodu míru\"],[\"122\",\"3\",\"22.11.22 18:50\",\"Závodu míru\"],[\"124\",\"3\",\"22.11.22 19:15\",\"Závodu míru\"],[\"126\",\"3\",\"22.11.22 19:30\",\"Závodu míru\"],[\"130\",\"3\",\"22.11.22 19:50\",\"Závodu míru\"],[\"132\",\"3\",\"22.11.22 20:15\",\"Závodu míru\"],[\"134\",\"3\",\"22.11.22 20:45\",\"Závodu míru\"],[\"136\",\"3\",\"22.11.22 21:05\",\"Závodu míru\"],[\"256\",\"3\",\"22.11.22 21:20\",\"Stará ovčárna\"],[\"140\",\"3\",\"22.11.22 22:08\",\"Stará ovčárna\"]]}", +// "status": 200, +// "headers": { +// "cache-control": "private, no-cache, no-store, max-age=0", +// "vary": "Accept-Encoding, Last-Modified, User-Agent", +// "expires": "-1", +// "x-powered-by": "Total.js", +// "content-type": "application/json; charset=utf-8", +// "date": "Mon, 21 Nov 2022 13:23:51 GMT", +// "connection": "close", +// "transfer-encoding": "chunked" +// }, +// "host": "192.168.252.2:8004" +// } diff --git a/flow/check_if_new_day.js b/flow/check_if_new_day.js new file mode 100644 index 0000000..6445d52 --- /dev/null +++ b/flow/check_if_new_day.js @@ -0,0 +1,54 @@ +exports.id = 'checknewday'; +exports.title = 'Check if new day'; +exports.group = 'Worksys'; +exports.color = '#5D9CEC'; +exports.version = '0.0.1'; +exports.output = ['white']; +exports.input = true; +exports.author = 'Rastislav Kovac'; +exports.icon = 'cloud-upload'; + +exports.readme = `Checks, if day changed. If yes, it sends it to connected components`; + +const { execSync } = require('child_process'); + +const weekday = ["Nedele","Pondeli","Uteri","Streda","Ctvrtek","Patek","Sobota"]; + +function getDate() { + // for some reason new Date() function does not set month and year in local timezone, so we use "timedatectl" command + let dateFromCommand = execSync("timedatectl", {}).toString(); + + let first = dateFromCommand.search("time:"); + let last = dateFromCommand.search(" CE"); + dateFromCommand = dateFromCommand.slice(first, last); //Thu 2022-04-07 13:38:03 + + const d = new Date(dateFromCommand); + return d; +} + +exports.install = function(instance) { + + let date = null; + + const checkNewDay = () => + { + const d = getDate(); + const today = d.getDate(); //napr 21 (dvadsiateho prveho) + + if(today !== date) + { + date = today; + const month = d.getMonth(); // 0-11 + const day = d.getDay(); // 0-6 (0 = nedela) + const datum = `${today}.${month + 1}`; + + const result = [datum, weekday[day]]; + instance.send(0, result); // ['22.12', 'Streda'] + } + } + + instance.on('data', flowdata => { + checkNewDay(); + }) + +} \ No newline at end of file diff --git a/flow/code.js b/flow/code.js new file mode 100644 index 0000000..63b31bf --- /dev/null +++ b/flow/code.js @@ -0,0 +1,90 @@ +exports.id = 'code'; +exports.title = 'Code'; +exports.group = 'Common'; +exports.color = '#656D78'; +exports.input = true; +exports.output = 1; +exports.author = 'Peter Širka'; +exports.icon = 'code'; +exports.version = '1.2.0'; +exports.options = { outputs: 1, code: 'send(0, value);', keepmessage: true }; + +exports.html = `
+
+
+
@(Number of outputs)
+
@(Minimum is 1)
+
+
+
@(Code)
+
@(Keep message instance)
+
+`; + +exports.readme = `# Code + +This component executes custom JavaScript code as it is and it doesn't contain any secure scope. + +\`\`\`javascript +// value {Object} contains received data +// send(outputIndex, newValue) sends a new value +// error(value) sends an error +// instance {Object} a current component instance +// flowdata {Object} a current flowdata +// repository {Object} a current repository of flowdata +// Example: + +// send() can be execute multiple times +send(0, value); +\`\`\``; + +exports.install = function(instance) { + + var fn; + + instance.on('data', function(response) { + if (fn) { + try { + fn(response.data, instance, response, instance.options, response.repository, require); + } catch (e) { + response.data = e; + instance.throw(response); + } + } + }); + + instance.reconfigure = function() { + try { + if (instance.options.code) { + instance.status(''); + var code = 'var send = function(index, value) { if (options.keepmessage) { flowdata.data = value; instance.send2(index, flowdata); } else instance.send2(index, value);}; var error = function(err) { instance.throw(err); }; ' + instance.options.code; + fn = new Function('value', 'instance', 'flowdata', 'options', 'repository', 'require', code); + } else { + instance.status('Not configured', 'red'); + fn = null; + } + } catch (e) { + fn = null; + instance.error('Code: ' + e.message); + } + }; + + instance.on('options', instance.reconfigure); + instance.reconfigure(); +}; \ No newline at end of file diff --git a/flow/comment.js b/flow/comment.js new file mode 100644 index 0000000..1e0cd13 --- /dev/null +++ b/flow/comment.js @@ -0,0 +1,11 @@ +exports.id = 'comment'; +exports.title = 'Comment'; +exports.group = 'Common'; +exports.color = '#704cff'; +exports.author = 'Martin Smola'; +exports.icon = 'comment'; +exports.traffic = false; +exports.version = '1.0.0'; +exports.readme = '# Comment'; + +exports.install = function() {}; diff --git a/flow/csv_import.js b/flow/csv_import.js new file mode 100644 index 0000000..4b35350 --- /dev/null +++ b/flow/csv_import.js @@ -0,0 +1,87 @@ +exports.id = 'csv_import'; +exports.title = 'CsvImport'; +exports.version = '1.0.0'; +exports.group = 'Worksys'; +exports.color = '#2134B0'; +exports.input = 1; +exports.output = ["red", "white"]; +exports.click = false; +exports.author = 'Daniel Segeš'; +exports.icon = 'file-import'; +exports.options = { edge: "undefined" }; + +exports.html = `
+
+
+
CSV Import
+
+
+
`; + +exports.readme = `# load csv to table db`; + +//config +let delimiter = ";"; +let uniqueColumn = "node"; +let path = "flow/audit_test_panel.csv"; +let startFrom = 1; +let table = "nodes"; +let mapImport = { + 2: "node", + 4: "tbname", + 3: "line" +}; + +const fs = require('fs'); + +exports.install = function(instance) { + + //console.log("csv import installed"); + + instance.on("close", () => { + + }) + + + instance.on("data", (flowdata) => { + + var db = TABLE(table); + db.clear(); + + let keys = Object.keys(mapImport); + + try { + const data = fs.readFileSync(path, 'utf8') + + let lines = data.split("\n"); + + for(let i = startFrom; i < lines.length; i++) + { + let line = lines[i]; + if(line === "") continue; + + let data = line.split(delimiter); + if(data.length == 0) continue; + + let insertData = {}; + + keys.map(function(key){ + let k = mapImport[key]; + insertData[k] = data[key]; + }); + + //console.log(insertData); + db.insert(insertData, true).where(uniqueColumn, insertData[uniqueColumn]); + } + + console.log("csv import finished"); + instance.send(0, "csv import finished"); + + } catch (err) { + console.error(err) + } + }) + +} + + diff --git a/flow/davkovac.js b/flow/davkovac.js new file mode 100644 index 0000000..d29886e --- /dev/null +++ b/flow/davkovac.js @@ -0,0 +1,216 @@ +exports.id = 'davkovac'; +exports.title = 'Davkovac'; +exports.version = '1.0.0'; +exports.group = 'Worksys'; +exports.color = '#5CB36D'; +exports.output = ["red", "white"]; +exports.input = true; +exports.author = 'Rastislav Kovac'; +exports.icon = 'poo'; +exports.options = { ip: '0.0.0.0', port: 8421, edge: "M6ogKQW09bOXewAYvZyvkn5JrV1aRnPGE37p42Nx" }; + +exports.html = `
+
+
+
IP
+
+
+
Port
+
+
+
+
+
Edge TB Name
+
+
+
`; + +exports.readme = `# Davkovac +Prijima tcp spravy od klienta a posiela na TB + + - *Red* - ERROR output + - *White* - Transormed message output +`; + + +exports.install = function(instance) { + + let net = require('net'); + let server = null; + let myip = "0.0.0.0"; + let myport = 8421; + let myedge = "M6ogKQW09bOXewAYvZyvkn5JrV1aRnPGE37p42Nx"; + let dataToTb; + let ERRWEIGHT = { + EMERGENCY: "emergency", // System unusable + ALERT: "alert", // Action must be taken immidiately + CRITICAL: "critical", // Component unable to function + ERROR: "error", // Error, but component able to recover from it + WARNING: "warning", // Possibility of error, system running futher + NOTICE: "notice", // Significant message but not an error, things user might want to know about + INFO: "informational", // Info + DEBUG: "debug" // Debug - only if CONFIG.debug is enabled + } + + + setTimeout(function(){ + if (server !== null){ + if (server.listening){ + instance.status("Listening", "green"); + } else { + instance.status("Not listening", "red"); + } + } + }, 10000); + + + function resetServer(){ + sendError(myedge, "resetServer", ERRWEIGHT.DEBUG, "resetServer called !", {}); + if (server !== null){ + sendError(myedge, "resetServer", ERRWEIGHT.DEBUG, "Server already exists", {}); + server.close(function(){ + sendError(myedge, "resetServer", ERRWEIGHT.DEBUG, "Server closed intentionally", {}); + server = null; + resetServer(); + }); + } else { + sendError(myedge, "resetServer", ERRWEIGHT.DEBUG, "Server doesn’t exist", {}); + server = net.createServer(socket => { + sendError(myedge, "resetServer", ERRWEIGHT.INFO, "New client connected !", {"ip":socket.localAddress, "port":socket.localPort}); + + socket.on("data", (data) => { + console.log('data ', {"ip":socket.localAddress,"port":socket.localPort,"data": data}); + //let bufferL = Buffer.byteLength(data, "utf-8"); + //data = JSON.stringify(data); + //console.log(data, "data"); + //console.log(bufferL, "Bufferlength"); + data = JSON.parse(JSON.stringify(data)); + let value = data.data; + //console.log("value",value) + + if (Array.isArray(value) && value.length == 18) + { + const first = value[0]; + const last = value[value.length-1]; + + if (first == 2 && last ==3) + { + let part1 = String.fromCharCode(value[10]); + let part2 = String.fromCharCode(value[11]); + let part3 = String.fromCharCode(value[12]); + let part4 = String.fromCharCode(value[13]); + let part5 = String.fromCharCode(value[14]); + let result = part1 + part2 + part3 + part4 + part5 + result = parseInt(result); + //send(0, typeof result) + //send(0, result) + + dataToTb = { + "mp93b2nvd7OoqgBeEyE7N18kjlAV1Y4ZNXwW0zLG": [ + { + "ts": Date.now(), + "values": {dispenser_count: result} + } + ] + } + + instance.send(1, dataToTb); + } + } + }); + + socket.on('end', () => { + sendError(myedge, "resetServer", ERRWEIGHT.INFO, "Client disconnected !", {"ip":socket.localAddress, "port":socket.localPort}); + }); + + }).on('error', (err) => { + console.log("[Davkovac error- resetServer] - ", err); + }); + + server.listen(myport, myip); + } + }; + + + instance.reconfigure = function() { + //code + myip = instance.options.ip; + myport = instance.options.port; + myedge = instance.options.edge; + + setTimeout(resetServer, 5000); + }; + + + instance.close = function() { + // close sockets and such + if (server !== null){ + server.close(function(){}); + } + }; + + + function resetCounterToZero() { + + server = net.createServer(socket => { + + socket.write([2,78,49,50,51,52,53,54,55,56,70,51,3]) + + socket.on("data", data => { + console.log({"ip":socket.localAddress,"port":socket.localPort,"data": data}); + socket.end(); + }); + + }).on('error', (err) => { + console.log("[Davkovac error - resetCounterToZero] - ", err); + }); + + server.listen(myport, myip); + } + + + instance.on("data", function(flowdata) { + if(server) + { + server.close(); + resetCounterToZero(); + resetServer(); + } + else + { + resetCounterToZero(); + resetServer(); + } + }); + + + function sendError(device, func, weight, str, extra){ + + let content = { + "type": weight, + "status": "new", + "source": { + "function":func, + "component":instance.id, + "component_name":instance.name + }, + "message":str, + "message_data": extra + }; + + let error = {}; + error[device] = [ + { + "ts": Date.now(), + "values": { + "_event":content + } + } + ]; + + instance.send(0, error); + } + + instance.on('options', instance.reconfigure); + instance.reconfigure(); +}; diff --git a/flow/debug.js b/flow/debug.js new file mode 100644 index 0000000..00cb259 --- /dev/null +++ b/flow/debug.js @@ -0,0 +1,100 @@ +exports.id = 'debug'; +exports.title = 'Debug'; +exports.author = 'Peter Širka'; +exports.color = '#967ADC'; +exports.click = true; +exports.input = true; +exports.icon = 'bug'; +exports.version = '2.0.4'; +exports.options = { enabled: true, repository: false, type: 'data' }; +exports.readme = `# Debug + +Prints data to the debug tab.`; + +exports.html = `
+
+
+
@(Output type)
+
@(Path to the property (leave empty to show the whole data object))
+
@(A group name)
+
@(Enabled)
+
+
+
`; + +exports.install = function(instance) { + + instance.on('data', function(response) { + if (instance.options.enabled) { + + var opt = instance.options; + var rep = response.repository; + var val = response.data; + var id = response.id; + + switch (instance.options.type){ + case 'both': + var data = {}; + data.repository = rep; + data.data = val instanceof Error ? { error: val.message, stack: val.stack } : val; + instance.debug(safeparse(opt.property ? U.get(data, opt.property) : data), undefined, opt.group, id); + break; + case 'repository': + instance.debug(safeparse(opt.property ? U.get(rep, opt.property) : rep), undefined, opt.group, id); + break; + case 'data': + default: + if (val instanceof Error) + instance.debug({ error: val.message, stack: val.stack }, undefined, opt.group, id); + else + instance.debug(safeparse(opt.property ? U.get(val, opt.property) : val), undefined, opt.group, id); + break; + } + } + }); + + instance.on('click', function() { + instance.options.enabled = !instance.options.enabled; + instance.custom.status(); + instance.save(); + }); + + instance.on('options', function() { + instance.custom.status(); + }); + + instance.custom.status = function() { + instance.status(instance.options.enabled ? 'Enabled' : 'Disabled'); + }; + + instance.custom.status(); + + function safeparse(o) { + + if (o instanceof Buffer) + return o; + + if (o === undefined) + return 'undefined'; + + if (o === null) + return 'null'; + + var cache = []; + var str = JSON.stringify(o, function(key, value) { + if (typeof value === 'object' && value !== null) { + if (cache.indexOf(value) !== -1) { + try { + return JSON.parse(JSON.stringify(value)); + } catch (error) { + return; + } + } + cache.push(value); + } + return value; + }); + cache = null; + return JSON.parse(str); + } +}; diff --git a/flow/designer.json b/flow/designer.json new file mode 100644 index 0000000..75a3ee7 --- /dev/null +++ b/flow/designer.json @@ -0,0 +1,1931 @@ +{ + "tabs": [ + { + "id": "1643281906512", + "name": "Main", + "icon": "fa-object-ungroup", + "linker": "main", + "index": 0 + }, + { + "name": "Time setter", + "linker": "time-setter", + "id": "1659090658504", + "index": 1 + }, + { + "name": "Notifications", + "linker": "notifications", + "id": "1660476684351", + "index": 2 + }, + { + "name": "Odchody spojov", + "linker": "odchody-spojov", + "id": "1668080058538", + "index": 3 + } + ], + "components": [ + { + "id": "1643282148763", + "component": "debug", + "tab": "1643281906512", + "name": "dido debug", + "x": 755, + "y": 63, + "connections": {}, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "Enabled", + "color": "gray" + }, + "color": "#967ADC", + "notes": "", + "options": { + "type": "data", + "repository": false, + "enabled": true + } + }, + { + "id": "1645111173142", + "component": "virtualwirein", + "tab": "1643281906512", + "name": "tb-prod01-push", + "x": 84.88333129882812, + "y": 475, + "connections": { + "0": [ + { + "index": "0", + "id": "1660217538796" + }, + { + "index": "0", + "id": "1679493041934" + } + ] + }, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "tb-prod01-push", + "color": "gray" + }, + "color": "#303E4D", + "notes": "", + "options": { + "wirename": "tb-prod01-push" + } + }, + { + "id": "1645111219601", + "component": "virtualwireout", + "tab": "1643281906512", + "name": "tb-prod01-push", + "x": 750.8833312988281, + "y": 156, + "connections": {}, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "tb-prod01-push", + "color": "gray" + }, + "color": "#303E4D", + "notes": "", + "options": { + "wirename": "tb-prod01-push" + } + }, + { + "id": "1645111275235", + "component": "virtualwirein", + "tab": "1643281906512", + "name": "prod01-rpc-call", + "x": 200.88333129882812, + "y": 214, + "connections": { + "0": [ + { + "index": "1", + "id": "1753433837966" + } + ] + }, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "prod01-rpc-call", + "color": "gray" + }, + "color": "#303E4D", + "notes": "", + "options": { + "wirename": "prod01-rpc-call" + } + }, + { + "id": "1645111340298", + "component": "virtualwireout", + "tab": "1643281906512", + "name": "prod01-rpc-call", + "x": 622.8833312988281, + "y": 522, + "connections": {}, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "prod01-rpc-call", + "color": "gray" + }, + "color": "#303E4D", + "notes": "", + "options": { + "wirename": "prod01-rpc-call" + } + }, + { + "id": "1645111384451", + "component": "debug", + "tab": "1643281906512", + "name": "received rpc call", + "x": 620.8833312988281, + "y": 605, + "connections": {}, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "Enabled", + "color": "gray" + }, + "color": "#967ADC", + "notes": "", + "options": { + "type": "data", + "repository": false, + "enabled": true + } + }, + { + "id": "1645111839163", + "component": "trigger", + "tab": "1643281906512", + "name": "Trigger", + "x": 122.88333129882812, + "y": 554, + "connections": { + "0": [ + { + "index": "0", + "id": "1679493041934" + }, + { + "index": "0", + "id": "1660217538796" + } + ] + }, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "", + "color": "gray" + }, + "color": "#F6BB42", + "notes": "", + "options": { + "restart": false, + "datatype": "object", + "data": "{ \"E6Kg9oDnLWyzPRMva7v5YykJxp4VG58qO2w1lZYe\": [ { \"ts\": 1753791515806, \"values\": {\"no_of_outgoing\":0,\"no_of_incoming\":0,\"last_call_length\":0} } ] }" + } + }, + { + "id": "1645179850176", + "component": "trigger", + "tab": "1643281906512", + "name": "OK status for SBS", + "x": 81.88333129882812, + "y": 651, + "connections": { + "0": [ + { + "index": "0", + "id": "1679493041934" + } + ] + }, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "", + "color": "gray" + }, + "color": "#F6BB42", + "notes": "", + "options": { + "data": "{ \"L2jNOVpdARa9XvoeJDPELbybkmPBxqn7Ww3gzGQ1\": [ { \"ts\": 1645111781837, \"values\": { \"status\": \"OK\" } } ] }", + "datatype": "object" + } + }, + { + "id": "1645181561840", + "component": "debug", + "tab": "1643281906512", + "name": "Modbus Errors", + "x": 384.8833312988281, + "y": 933.5, + "connections": {}, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "Enabled", + "color": "gray" + }, + "color": "#E73323", + "notes": "", + "options": { + "type": "data", + "repository": false, + "enabled": true + } + }, + { + "id": "1645181578004", + "component": "debug", + "tab": "1643281906512", + "name": "modbus data", + "x": 385.8833312988281, + "y": 1025.5, + "connections": {}, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "Enabled", + "color": "gray" + }, + "color": "#967ADC", + "notes": "", + "options": { + "type": "data", + "repository": false, + "enabled": true + } + }, + { + "id": "1645181611277", + "component": "virtualwireout", + "tab": "1643281906512", + "name": "tb-prod01-push", + "x": 384.8833312988281, + "y": 1118.5, + "connections": {}, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "tb-prod01-push", + "color": "gray" + }, + "color": "#303E4D", + "notes": "", + "options": { + "wirename": "tb-prod01-push" + } + }, + { + "id": "1645196099616", + "component": "trigger", + "tab": "1643281906512", + "name": "Stykac 1 ON", + "x": 207.88333129882812, + "y": 33, + "connections": { + "0": [ + { + "index": "0", + "id": "1753433837966" + } + ] + }, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "", + "color": "gray" + }, + "color": "#F6BB42", + "notes": "", + "options": { + "datatype": "object", + "data": "{\"cmd\":\"set\", \"dev\":\"relay\", \"circuit\": \"1_01\", \"value\":1}" + } + }, + { + "id": "1645196135911", + "component": "trigger", + "tab": "1643281906512", + "name": "Stykac 1 OFF", + "x": 198.88333129882812, + "y": 110, + "connections": { + "0": [ + { + "index": "0", + "id": "1753433837966" + } + ] + }, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "", + "color": "gray" + }, + "color": "#F6BB42", + "notes": "", + "options": { + "datatype": "object", + "data": "{\"cmd\":\"set\", \"dev\":\"relay\", \"circuit\": \"1_01\", \"value\":0}" + } + }, + { + "id": "1645524368114", + "component": "virtualwirein", + "tab": "1643281906512", + "name": "tb-qas01-push", + "x": 662.8833312988281, + "y": 863, + "connections": {}, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "tb-qas01-push", + "color": "gray" + }, + "color": "#303E4D", + "notes": "", + "options": { + "wirename": "tb-qas01-push" + } + }, + { + "id": "1645524407408", + "component": "virtualwireout", + "tab": "1643281906512", + "name": "qas01-rpc-call", + "x": 1152.8833312988281, + "y": 886, + "connections": {}, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "qas01-rpc-call", + "color": "gray" + }, + "color": "#303E4D", + "notes": "", + "options": { + "wirename": "qas01-rpc-call" + } + }, + { + "id": "1645524441796", + "component": "debug", + "tab": "1643281906512", + "name": "qas01-rpc-call", + "x": 1151.8833312988281, + "y": 975, + "connections": {}, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "Enabled", + "color": "gray" + }, + "color": "#967ADC", + "notes": "", + "options": { + "type": "data", + "repository": false, + "enabled": true + } + }, + { + "id": "1645524494262", + "component": "virtualwirein", + "tab": "1643281906512", + "name": "qas01-rpc-call", + "x": 210.88333129882812, + "y": 311, + "connections": { + "0": [ + { + "index": "1", + "id": "1753433837966" + } + ] + }, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "qas01-rpc-call", + "color": "gray" + }, + "color": "#303E4D", + "notes": "", + "options": { + "wirename": "qas01-rpc-call" + } + }, + { + "id": "1645524545921", + "component": "trigger", + "tab": "1643281906512", + "name": "OK status for SBS", + "x": 643.8833312988281, + "y": 959, + "connections": {}, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "", + "color": "gray" + }, + "color": "#F6BB42", + "notes": "", + "options": { + "datatype": "object", + "data": "{ \"6nO4xlGE3zKVJdRXYZkMBK7BA28DoyMLg1pe9bar\": [ { \"ts\": 1645111781837, \"values\": { \"status\": \"OK\" } } ] }" + } + }, + { + "id": "1645524624979", + "component": "virtualwireout", + "tab": "1643281906512", + "name": "tb-qas01-push", + "x": 750.3333282470703, + "y": 246.78334045410156, + "connections": {}, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "tb-qas01-push", + "color": "gray" + }, + "color": "#303E4D", + "notes": "", + "options": { + "wirename": "tb-qas01-push" + } + }, + { + "id": "1645527398774", + "component": "virtualwireout", + "tab": "1643281906512", + "name": "tb-qas01-push", + "x": 383.46665954589844, + "y": 1207.9500122070312, + "connections": {}, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "tb-qas01-push", + "color": "gray" + }, + "color": "#303E4D", + "notes": "", + "options": { + "wirename": "tb-qas01-push" + } + }, + { + "id": "1645527437853", + "component": "debug", + "tab": "1643281906512", + "name": "to qas01", + "x": 398.46665954589844, + "y": 1292.9500122070312, + "connections": {}, + "disabledio": { + "input": [ + 0 + ], + "output": [] + }, + "state": { + "text": "Enabled", + "color": "gray" + }, + "color": "#967ADC", + "notes": "", + "options": { + "type": "data", + "repository": false, + "enabled": true + } + }, + { + "id": "1645533546363", + "component": "debug", + "tab": "1643281906512", + "name": "Debug", + "x": 1146, + "y": 797, + "connections": {}, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "Enabled", + "color": "gray" + }, + "color": "#967ADC", + "notes": "", + "options": { + "type": "data", + "repository": false, + "enabled": true + } + }, + { + "id": "1659090931907", + "component": "trigger", + "tab": "1659090658504", + "name": "Trigger", + "x": 65, + "y": 153, + "connections": { + "0": [ + { + "index": "0", + "id": "1659098609466" + } + ] + }, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "", + "color": "gray" + }, + "color": "#F6BB42", + "notes": "", + "options": { + "data": "o", + "datatype": "string" + } + }, + { + "id": "1659091025541", + "component": "debug", + "tab": "1659090658504", + "name": "Debug", + "x": 440, + "y": 145, + "connections": {}, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "Enabled", + "color": "gray" + }, + "color": "#967ADC", + "notes": "", + "options": { + "type": "data", + "repository": false, + "enabled": true + } + }, + { + "id": "1659098609466", + "component": "timesetter", + "tab": "1659090658504", + "name": "Timesetter", + "x": 250, + "y": 149, + "connections": { + "0": [ + { + "index": "0", + "id": "1659091025541" + } + ] + }, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "", + "color": "gray" + }, + "color": "#656D78", + "notes": "", + "options": {} + }, + { + "id": "1659128510546", + "component": "timer", + "tab": "1659090658504", + "name": "Timer", + "x": 66, + "y": 231, + "connections": { + "0": [ + { + "index": "0", + "id": "1659098609466" + } + ] + }, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "", + "color": "gray" + }, + "color": "#F6BB42", + "notes": "", + "options": { + "interval": 86400000 + } + }, + { + "id": "1659128692574", + "component": "comment", + "tab": "1659090658504", + "name": "timesetter sets unipi's correct time once a day", + "x": 65, + "y": 77, + "connections": {}, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "", + "color": "gray" + }, + "color": "#704cff", + "notes": "", + "options": {} + }, + { + "id": "1660217538796", + "component": "debug", + "tab": "1643281906512", + "name": "do produkcie", + "x": 363, + "y": 433.5, + "connections": {}, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "Enabled", + "color": "gray" + }, + "color": "#967ADC", + "notes": "", + "options": { + "type": "data", + "repository": false, + "enabled": true + } + }, + { + "id": "1660476748555", + "component": "monitorconsumption", + "tab": "1660476684351", + "name": "Consumption", + "x": 96, + "y": 75, + "connections": { + "0": [ + { + "index": "0", + "id": "1660476771083" + } + ] + }, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "1.1% / 74.99 MB", + "color": "gray" + }, + "color": "#967ADC", + "notes": "", + "options": { + "monitorfiles": true, + "monitorconnections": true, + "monitorsize": true, + "monitorconsumption": true, + "enabled": true, + "interval": 60000 + } + }, + { + "id": "1660476751479", + "component": "monitordisk", + "tab": "1660476684351", + "name": "Disk", + "x": 98, + "y": 269, + "connections": { + "0": [ + { + "index": "0", + "id": "1660476781009" + } + ] + }, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "5.64 GB / 7.26 GB", + "color": "gray" + }, + "color": "#F6BB42", + "notes": "", + "options": { + "enabled": true, + "path": "/", + "interval": 8000 + } + }, + { + "id": "1660476753629", + "component": "monitormemory", + "tab": "1660476684351", + "name": "Memory", + "x": 96, + "y": 169, + "connections": { + "0": [ + { + "index": "0", + "id": "1660476776559" + } + ] + }, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "814.83 MB / 987.80 MB", + "color": "gray" + }, + "color": "#F6BB42", + "notes": "", + "options": { + "enabled": true, + "interval": 60000 + } + }, + { + "id": "1660476771083", + "component": "code", + "tab": "1660476684351", + "name": "Code", + "x": 303, + "y": 70, + "connections": { + "0": [ + { + "index": "0", + "id": "1660476806139" + } + ] + }, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "", + "color": "gray" + }, + "color": "#656D78", + "notes": "", + "options": { + "keepmessage": true, + "code": "let response = {};\nresponse.cpu = value.cpu;\nresponse.uptime = value.uptime;\n\nsend(0, response);", + "outputs": 1 + } + }, + { + "id": "1660476776559", + "component": "code", + "tab": "1660476684351", + "name": "Code", + "x": 300, + "y": 164, + "connections": { + "0": [ + { + "index": "0", + "id": "1660476806139" + } + ] + }, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "", + "color": "gray" + }, + "color": "#656D78", + "notes": "", + "options": { + "keepmessage": true, + "code": "let response = {};\n\nresponse.memory_total = value.total;\nresponse.memory_free = value.free;\nresponse.memory_used = value.used;\n\nsend(0, response);", + "outputs": 1 + } + }, + { + "id": "1660476781009", + "component": "code", + "tab": "1660476684351", + "name": "Code", + "x": 297, + "y": 263, + "connections": { + "0": [ + { + "index": "0", + "id": "1660476806139" + } + ] + }, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "", + "color": "gray" + }, + "color": "#656D78", + "notes": "", + "options": { + "keepmessage": true, + "code": "let response = {};\n\nresponse.hdd_total = value.total;\nresponse.hdd_free = value.free;\nresponse.hdd_used = value.used;\n\nsend(0, response);", + "outputs": 1 + } + }, + { + "id": "1660476806139", + "component": "virtualwireout", + "tab": "1660476684351", + "name": "send-to-services", + "x": 531, + "y": 150, + "connections": {}, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "send-to-services", + "color": "gray" + }, + "color": "#303E4D", + "notes": "", + "options": { + "wirename": "send-to-services" + } + }, + { + "id": "1660477364486", + "component": "virtualwirein", + "tab": "1660476684351", + "name": "send-to-services", + "x": 51, + "y": 438, + "connections": { + "0": [ + { + "index": "0", + "id": "1660477391824" + } + ] + }, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "send-to-services", + "color": "gray" + }, + "color": "#303E4D", + "notes": "", + "options": { + "wirename": "send-to-services" + } + }, + { + "id": "1660477391824", + "component": "infosender", + "tab": "1660476684351", + "name": "Info sender", + "x": 272, + "y": 437, + "connections": { + "0": [ + { + "index": "0", + "id": "1660477412065" + }, + { + "index": "0", + "id": "1660477429580" + } + ] + }, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "", + "color": "gray" + }, + "color": "#2134B0", + "notes": "", + "options": { + "edge": "undefined" + } + }, + { + "id": "1660477412065", + "component": "debug", + "tab": "1660476684351", + "name": "Debug", + "x": 492, + "y": 526, + "connections": {}, + "disabledio": { + "input": [ + 0 + ], + "output": [] + }, + "state": { + "text": "Enabled", + "color": "gray" + }, + "color": "#967ADC", + "notes": "", + "options": { + "type": "data", + "repository": false, + "enabled": true + } + }, + { + "id": "1660477429580", + "component": "httprequest", + "tab": "1660476684351", + "name": "http://192.168.252.2:8004/sentmessage", + "x": 488, + "y": 431, + "connections": { + "0": [ + { + "index": "0", + "id": "1685302783627" + } + ] + }, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "", + "color": "gray" + }, + "color": "#5D9CEC", + "notes": "", + "options": { + "stringify": "json", + "method": "POST", + "url": "http://192.168.252.2:8004/sentmessage", + "type": "json" + } + }, + { + "id": "1660477495564", + "component": "virtualwireout", + "tab": "1643281906512", + "name": "send-to-services", + "x": 615, + "y": 688, + "connections": {}, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "send-to-services", + "color": "gray" + }, + "color": "#303E4D", + "notes": "", + "options": { + "wirename": "send-to-services" + } + }, + { + "id": "1661332732945", + "component": "comment", + "tab": "1643281906512", + "name": "wsmqtt qas01 here:", + "x": 898.75, + "y": 918.5, + "connections": {}, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "", + "color": "gray" + }, + "color": "#704cff", + "notes": "", + "options": {} + }, + { + "id": "1661946950339", + "component": "debug", + "tab": "1643281906512", + "name": "to express", + "x": 798, + "y": 431, + "connections": {}, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "Enabled", + "color": "gray" + }, + "color": "#967ADC", + "notes": "", + "options": { + "type": "data", + "repository": false, + "enabled": true + } + }, + { + "id": "1669037202449", + "component": "httprequest", + "tab": "1668080058538", + "name": "http://192.168.252.2:8004/getdepartures", + "x": 356, + "y": -554, + "connections": {}, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "", + "color": "gray" + }, + "color": "#5D9CEC", + "notes": "", + "options": { + "stringify": "json", + "method": "POST", + "url": "http://192.168.252.2:8004/getdepartures?project_id=30", + "type": "json" + } + }, + { + "id": "1669037225090", + "component": "httprequest", + "tab": "1668080058538", + "name": "http://192.168.252.2:8004/getdepartures", + "x": 356, + "y": -312, + "connections": {}, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "", + "color": "gray" + }, + "color": "#5D9CEC", + "notes": "", + "options": { + "stringify": "json", + "method": "POST", + "url": "http://192.168.252.2:8004/getdepartures?project_id=30", + "type": "json" + } + }, + { + "id": "1669037987641", + "component": "httprequest", + "tab": "1668080058538", + "name": "http://0.0.0.0:3000/setdepartures", + "x": 978, + "y": 544, + "connections": {}, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "", + "color": "gray" + }, + "color": "#5D9CEC", + "notes": "", + "options": { + "stringify": "json", + "method": "POST", + "url": "http://0.0.0.0:3000/setdepartures", + "type": "json" + } + }, + { + "id": "1679493041934", + "component": "wsmqttpublish", + "tab": "1643281906512", + "name": "TB PROD01", + "x": 368.8833312988281, + "y": 538.3999938964844, + "connections": { + "0": [ + { + "index": "0", + "id": "1679573361111" + } + ], + "1": [ + { + "index": "0", + "id": "1645111384451" + }, + { + "index": "0", + "id": "1645111340298" + } + ], + "2": [ + { + "index": "0", + "id": "1660477495564" + } + ] + }, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "Connected", + "color": "green" + }, + "color": "#888600", + "notes": "", + "options": { + "username": "xZfqsV9FjhPiqacsVwr6", + "clientid": "sokolov_SBS2_10_0_0_30", + "port": 1883, + "host": "192.168.252.1" + } + }, + { + "id": "1679573361111", + "component": "debug", + "tab": "1643281906512", + "name": "prod01 debug", + "x": 603, + "y": 441, + "connections": {}, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "Enabled", + "color": "gray" + }, + "color": "#967ADC", + "notes": "", + "options": { + "type": "data", + "repository": false, + "enabled": true + } + }, + { + "id": "1679573682640", + "component": "debug", + "tab": "1668080058538", + "name": "newDay", + "x": 586.5666656494141, + "y": 157, + "connections": {}, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "Enabled", + "color": "gray" + }, + "color": "#967ADC", + "notes": "", + "options": { + "type": "data", + "repository": false, + "enabled": true + } + }, + { + "id": "1679573709784", + "component": "debug", + "tab": "1668080058538", + "name": "setDepartures debug", + "x": 1022.5666656494141, + "y": 339, + "connections": {}, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "Enabled", + "color": "gray" + }, + "color": "#967ADC", + "notes": "", + "options": { + "type": "data", + "repository": false, + "enabled": true + } + }, + { + "id": "1685302783627", + "component": "debug", + "tab": "1660476684351", + "name": "Debug", + "x": 853, + "y": 429, + "connections": {}, + "disabledio": { + "input": [ + 0 + ], + "output": [] + }, + "state": { + "text": "Enabled", + "color": "gray" + }, + "color": "#967ADC", + "notes": "", + "options": { + "type": "data", + "repository": false, + "enabled": true + } + }, + { + "id": "1687778068338", + "component": "checknewday", + "tab": "1668080058538", + "name": "Check if new day", + "x": 313, + "y": 157, + "connections": { + "0": [ + { + "index": "0", + "id": "1687778072229" + }, + { + "index": "0", + "id": "1679573682640" + } + ] + }, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "", + "color": "gray" + }, + "color": "#5D9CEC", + "notes": "", + "options": {} + }, + { + "id": "1687778072229", + "component": "handledepartures", + "tab": "1668080058538", + "name": "Handle departures", + "x": 557, + "y": 324, + "connections": { + "0": [ + { + "index": "0", + "id": "1669037987641" + }, + { + "index": "0", + "id": "1679573709784" + } + ] + }, + "disabledio": { + "input": [ + 0, + 1 + ], + "output": [ + 0 + ] + }, + "state": { + "text": "", + "color": "gray" + }, + "color": "#5D9CEC", + "notes": "", + "options": {} + }, + { + "id": "1687778082109", + "component": "timer", + "tab": "1668080058538", + "name": "Timer", + "x": 114, + "y": 331, + "connections": { + "0": [ + { + "index": "1", + "id": "1687778072229" + } + ] + }, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "", + "color": "gray" + }, + "color": "#F6BB42", + "notes": "", + "options": { + "interval": 60000 + } + }, + { + "id": "1687778119225", + "component": "timer", + "tab": "1668080058538", + "name": "Timer", + "x": 110, + "y": 161, + "connections": { + "0": [ + { + "index": "0", + "id": "1687778068338" + } + ] + }, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "", + "color": "gray" + }, + "color": "#F6BB42", + "notes": "", + "options": { + "interval": 150000 + } + }, + { + "id": "1687794067628", + "component": "trigger", + "tab": "1668080058538", + "name": "Trigger", + "x": 113.33332824707031, + "y": 242, + "connections": { + "0": [ + { + "index": "0", + "id": "1687778068338" + } + ] + }, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "", + "color": "gray" + }, + "color": "#F6BB42", + "notes": "", + "options": { + "restart": true + } + }, + { + "id": "1727349454912", + "component": "trigger", + "tab": "1668080058538", + "name": "Trigger", + "x": 678.75, + "y": 468, + "connections": { + "0": [ + { + "index": "0", + "id": "1669037987641" + }, + { + "index": "0", + "id": "1679573709784" + } + ] + }, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "", + "color": "gray" + }, + "color": "#F6BB42", + "notes": "", + "options": { + "restart": false, + "datatype": "object", + "data": "[]" + } + }, + { + "id": "1727350151751", + "component": "comment", + "tab": "1668080058538", + "name": "Kvoli neaktualnosti spojov ich nezobrazujeme na screen, preto posielam prazdny array", + "x": 105.75, + "y": 79, + "connections": {}, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "", + "color": "gray" + }, + "color": "#704cff", + "notes": "", + "options": {} + }, + { + "id": "1749039333690", + "component": "getdepartures", + "tab": "1668080058538", + "name": "Get departures", + "x": 112.75, + "y": 705, + "connections": { + "0": [ + { + "index": "0", + "id": "1749039346676" + }, + { + "index": "0", + "id": "1749039435416" + } + ] + }, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "", + "color": "gray" + }, + "color": "#5D9CEC", + "notes": "", + "options": {} + }, + { + "id": "1749039346676", + "component": "handledepartures", + "tab": "1668080058538", + "name": "Handle departures", + "x": 408.75, + "y": 763, + "connections": { + "0": [ + { + "index": "0", + "id": "1669037987641" + }, + { + "index": "0", + "id": "1749039462631" + } + ] + }, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "", + "color": "gray" + }, + "color": "#5D9CEC", + "notes": "", + "options": {} + }, + { + "id": "1749039361704", + "component": "timer", + "tab": "1668080058538", + "name": "Timer", + "x": 165, + "y": 820, + "connections": { + "0": [ + { + "index": "1", + "id": "1749039346676" + } + ] + }, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "", + "color": "gray" + }, + "color": "#F6BB42", + "notes": "", + "options": { + "interval": 60000 + } + }, + { + "id": "1749039435416", + "component": "debug", + "tab": "1668080058538", + "name": "DeparturesForToday", + "x": 411.75, + "y": 667, + "connections": {}, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "Enabled", + "color": "gray" + }, + "color": "#967ADC", + "notes": "", + "options": { + "type": "data", + "repository": false, + "enabled": true + } + }, + { + "id": "1749039462631", + "component": "debug", + "tab": "1668080058538", + "name": "depToDisplay", + "x": 721.75, + "y": 789, + "connections": {}, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "Enabled", + "color": "gray" + }, + "color": "#967ADC", + "notes": "", + "options": { + "type": "data", + "repository": false, + "enabled": true + } + }, + { + "id": "1752486374537", + "component": "comment", + "tab": "1668080058538", + "name": "Povodne zobrazovanie spojov zo suboru:", + "x": 106.75, + "y": 18, + "connections": {}, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "", + "color": "gray" + }, + "color": "#704cff", + "notes": "", + "options": {} + }, + { + "id": "1752486488362", + "component": "comment", + "tab": "1668080058538", + "name": "Zobrazovanie spojov na zaklade requestu na http://bezpecne.sokolov.cz:", + "x": 113.75, + "y": 597, + "connections": {}, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "", + "color": "gray" + }, + "color": "#704cff", + "notes": "", + "options": {} + }, + { + "id": "1753100866591", + "component": "mqtt_subscribe_temperature", + "tab": "1668080058538", + "name": "MQTT subscribe temperature", + "x": 96.56666564941406, + "y": 1114, + "connections": { + "0": [ + { + "index": "0", + "id": "1753101111585" + }, + { + "index": "0", + "id": "1753101138958" + } + ], + "1": [ + { + "index": "0", + "id": "1753790164059" + } + ] + }, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "Reconnecting", + "color": "yellow" + }, + "color": "#888600", + "notes": "", + "options": { + "username": "", + "tbname": "E6Kg9oDnLWyzPRMva7v5YykJxp4VG58qO2w1lZYe", + "port": "2765", + "host": "192.168.252.2", + "clientid": "E6Kg9oDnLWyzPRMva7v5YykJxp4VG58qO2w1lZYe", + "topic": "temperature" + } + }, + { + "id": "1753101111585", + "component": "debug", + "tab": "1668080058538", + "name": "temperature", + "x": 482.75, + "y": 1048, + "connections": {}, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "Enabled", + "color": "gray" + }, + "color": "#967ADC", + "notes": "", + "options": { + "type": "data", + "repository": false, + "enabled": true + } + }, + { + "id": "1753101117810", + "component": "debug", + "tab": "1668080058538", + "name": "tempToExpress", + "x": 837.75, + "y": 1171, + "connections": {}, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "Enabled", + "color": "gray" + }, + "color": "#967ADC", + "notes": "", + "options": { + "type": "data", + "repository": false, + "enabled": true + } + }, + { + "id": "1753101138958", + "component": "httprequest", + "tab": "1668080058538", + "name": "http://0.0.0.0:3000/settemperature", + "x": 477, + "y": 1170, + "connections": { + "0": [ + { + "index": "0", + "id": "1753101117810" + } + ] + }, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "", + "color": "gray" + }, + "color": "#5D9CEC", + "notes": "", + "options": { + "type": "json", + "url": "http://0.0.0.0:3000/settemperature", + "method": "POST", + "stringify": "json" + } + }, + { + "id": "1753433837966", + "component": "dido_controller_sbs", + "tab": "1643281906512", + "name": "DI_DO_controller", + "x": 470.75, + "y": 153, + "connections": { + "1": [ + { + "index": "0", + "id": "1643282148763" + }, + { + "index": "0", + "id": "1645111219601" + } + ] + }, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "", + "color": "gray" + }, + "color": "#2134B0", + "notes": "", + "options": {} + }, + { + "id": "1753790164059", + "component": "virtualwireout", + "tab": "1668080058538", + "name": "tb-prod01-push", + "x": 485, + "y": 1290.5, + "connections": {}, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "tb-prod01-push", + "color": "gray" + }, + "color": "#303E4D", + "notes": "", + "options": { + "wirename": "tb-prod01-push" + } + } + ], + "version": 624 +} \ No newline at end of file diff --git a/flow/designer.json_oorig.txt b/flow/designer.json_oorig.txt new file mode 100644 index 0000000..7b5d345 --- /dev/null +++ b/flow/designer.json_oorig.txt @@ -0,0 +1,1905 @@ +{ + "tabs": [ + { + "id": "1643281906512", + "name": "Main", + "icon": "fa-object-ungroup", + "linker": "main", + "index": 0 + }, + { + "name": "Time setter", + "linker": "time-setter", + "id": "1659090658504", + "index": 1 + }, + { + "name": "Notifications", + "linker": "notifications", + "id": "1660476684351", + "index": 2 + }, + { + "name": "Odchody spojov", + "linker": "odchody-spojov", + "id": "1668080058538", + "index": 3 + } + ], + "components": [ + { + "id": "1643282148763", + "component": "debug", + "tab": "1643281906512", + "name": "dido debug", + "x": 755, + "y": 63, + "connections": {}, + "disabledio": { + "input": [ + 0 + ], + "output": [] + }, + "state": { + "text": "Enabled", + "color": "gray" + }, + "color": "#967ADC", + "notes": "", + "options": { + "type": "data", + "repository": false, + "enabled": true + } + }, + { + "id": "1645111173142", + "component": "virtualwirein", + "tab": "1643281906512", + "name": "tb-prod01-push", + "x": 84.88333129882812, + "y": 475, + "connections": { + "0": [ + { + "index": "0", + "id": "1660217538796" + }, + { + "index": "0", + "id": "1679493041934" + } + ] + }, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "tb-prod01-push", + "color": "gray" + }, + "color": "#303E4D", + "notes": "", + "options": { + "wirename": "tb-prod01-push" + } + }, + { + "id": "1645111219601", + "component": "virtualwireout", + "tab": "1643281906512", + "name": "tb-prod01-push", + "x": 750.8833312988281, + "y": 156, + "connections": {}, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "tb-prod01-push", + "color": "gray" + }, + "color": "#303E4D", + "notes": "", + "options": { + "wirename": "tb-prod01-push" + } + }, + { + "id": "1645111275235", + "component": "virtualwirein", + "tab": "1643281906512", + "name": "prod01-rpc-call", + "x": 200.88333129882812, + "y": 214, + "connections": {}, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "prod01-rpc-call", + "color": "gray" + }, + "color": "#303E4D", + "notes": "", + "options": { + "wirename": "prod01-rpc-call" + } + }, + { + "id": "1645111340298", + "component": "virtualwireout", + "tab": "1643281906512", + "name": "prod01-rpc-call", + "x": 622.8833312988281, + "y": 522, + "connections": {}, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "prod01-rpc-call", + "color": "gray" + }, + "color": "#303E4D", + "notes": "", + "options": { + "wirename": "prod01-rpc-call" + } + }, + { + "id": "1645111384451", + "component": "debug", + "tab": "1643281906512", + "name": "received rpc call", + "x": 620.8833312988281, + "y": 605, + "connections": {}, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "Enabled", + "color": "gray" + }, + "color": "#967ADC", + "notes": "", + "options": { + "type": "data", + "repository": false, + "enabled": true + } + }, + { + "id": "1645111839163", + "component": "trigger", + "tab": "1643281906512", + "name": "Trigger", + "x": 122.88333129882812, + "y": 554, + "connections": { + "0": [ + { + "index": "0", + "id": "1679493041934" + } + ] + }, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "", + "color": "gray" + }, + "color": "#F6BB42", + "notes": "", + "options": { + "restart": false, + "datatype": "object", + "data": "{ \"L2jNOVpdARa9XvoeJDPELbybkmPBxqn7Ww3gzGQ1\": [ { \"ts\": 1645111781837, \"values\": { \"status\": \"OK\", \"temperature_out\": 0.1, \"temperature\": 0.1, \"humidity_out\": 0.1 } } ] }" + } + }, + { + "id": "1645179850176", + "component": "trigger", + "tab": "1643281906512", + "name": "OK status for SBS", + "x": 81.88333129882812, + "y": 651, + "connections": { + "0": [ + { + "index": "0", + "id": "1679493041934" + } + ] + }, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "", + "color": "gray" + }, + "color": "#F6BB42", + "notes": "", + "options": { + "data": "{ \"L2jNOVpdARa9XvoeJDPELbybkmPBxqn7Ww3gzGQ1\": [ { \"ts\": 1645111781837, \"values\": { \"status\": \"OK\" } } ] }", + "datatype": "object" + } + }, + { + "id": "1645181561840", + "component": "debug", + "tab": "1643281906512", + "name": "Modbus Errors", + "x": 384.8833312988281, + "y": 933.5, + "connections": {}, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "Enabled", + "color": "gray" + }, + "color": "#E73323", + "notes": "", + "options": { + "type": "data", + "repository": false, + "enabled": true + } + }, + { + "id": "1645181578004", + "component": "debug", + "tab": "1643281906512", + "name": "modbus data", + "x": 385.8833312988281, + "y": 1025.5, + "connections": {}, + "disabledio": { + "input": [ + 0 + ], + "output": [] + }, + "state": { + "text": "Enabled", + "color": "gray" + }, + "color": "#967ADC", + "notes": "", + "options": { + "type": "data", + "repository": false, + "enabled": true + } + }, + { + "id": "1645181611277", + "component": "virtualwireout", + "tab": "1643281906512", + "name": "tb-prod01-push", + "x": 384.8833312988281, + "y": 1118.5, + "connections": {}, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "tb-prod01-push", + "color": "gray" + }, + "color": "#303E4D", + "notes": "", + "options": { + "wirename": "tb-prod01-push" + } + }, + { + "id": "1645196099616", + "component": "trigger", + "tab": "1643281906512", + "name": "Stykac 1 ON", + "x": 207.88333129882812, + "y": 33, + "connections": {}, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "", + "color": "gray" + }, + "color": "#F6BB42", + "notes": "", + "options": { + "datatype": "object", + "data": "{\"cmd\":\"set\", \"dev\":\"relay\", \"circuit\": \"1_01\", \"value\":1}" + } + }, + { + "id": "1645196135911", + "component": "trigger", + "tab": "1643281906512", + "name": "Stykac 1 OFF", + "x": 198.88333129882812, + "y": 110, + "connections": {}, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "", + "color": "gray" + }, + "color": "#F6BB42", + "notes": "", + "options": { + "datatype": "object", + "data": "{\"cmd\":\"set\", \"dev\":\"relay\", \"circuit\": \"1_01\", \"value\":0}" + } + }, + { + "id": "1645524368114", + "component": "virtualwirein", + "tab": "1643281906512", + "name": "tb-qas01-push", + "x": 662.8833312988281, + "y": 863, + "connections": {}, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "tb-qas01-push", + "color": "gray" + }, + "color": "#303E4D", + "notes": "", + "options": { + "wirename": "tb-qas01-push" + } + }, + { + "id": "1645524407408", + "component": "virtualwireout", + "tab": "1643281906512", + "name": "qas01-rpc-call", + "x": 1152.8833312988281, + "y": 886, + "connections": {}, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "qas01-rpc-call", + "color": "gray" + }, + "color": "#303E4D", + "notes": "", + "options": { + "wirename": "qas01-rpc-call" + } + }, + { + "id": "1645524441796", + "component": "debug", + "tab": "1643281906512", + "name": "qas01-rpc-call", + "x": 1151.8833312988281, + "y": 975, + "connections": {}, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "Enabled", + "color": "gray" + }, + "color": "#967ADC", + "notes": "", + "options": { + "type": "data", + "repository": false, + "enabled": true + } + }, + { + "id": "1645524494262", + "component": "virtualwirein", + "tab": "1643281906512", + "name": "qas01-rpc-call", + "x": 210.88333129882812, + "y": 311, + "connections": {}, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "qas01-rpc-call", + "color": "gray" + }, + "color": "#303E4D", + "notes": "", + "options": { + "wirename": "qas01-rpc-call" + } + }, + { + "id": "1645524545921", + "component": "trigger", + "tab": "1643281906512", + "name": "OK status for SBS", + "x": 643.8833312988281, + "y": 959, + "connections": {}, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "", + "color": "gray" + }, + "color": "#F6BB42", + "notes": "", + "options": { + "datatype": "object", + "data": "{ \"6nO4xlGE3zKVJdRXYZkMBK7BA28DoyMLg1pe9bar\": [ { \"ts\": 1645111781837, \"values\": { \"status\": \"OK\" } } ] }" + } + }, + { + "id": "1645524624979", + "component": "virtualwireout", + "tab": "1643281906512", + "name": "tb-qas01-push", + "x": 750.3333282470703, + "y": 246.78334045410156, + "connections": {}, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "tb-qas01-push", + "color": "gray" + }, + "color": "#303E4D", + "notes": "", + "options": { + "wirename": "tb-qas01-push" + } + }, + { + "id": "1645527398774", + "component": "virtualwireout", + "tab": "1643281906512", + "name": "tb-qas01-push", + "x": 383.46665954589844, + "y": 1207.9500122070312, + "connections": {}, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "tb-qas01-push", + "color": "gray" + }, + "color": "#303E4D", + "notes": "", + "options": { + "wirename": "tb-qas01-push" + } + }, + { + "id": "1645527437853", + "component": "debug", + "tab": "1643281906512", + "name": "to qas01", + "x": 398.46665954589844, + "y": 1292.9500122070312, + "connections": {}, + "disabledio": { + "input": [ + 0 + ], + "output": [] + }, + "state": { + "text": "Enabled", + "color": "gray" + }, + "color": "#967ADC", + "notes": "", + "options": { + "type": "data", + "repository": false, + "enabled": true + } + }, + { + "id": "1645533546363", + "component": "debug", + "tab": "1643281906512", + "name": "Debug", + "x": 1146, + "y": 797, + "connections": {}, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "Enabled", + "color": "gray" + }, + "color": "#967ADC", + "notes": "", + "options": { + "type": "data", + "repository": false, + "enabled": true + } + }, + { + "id": "1659090931907", + "component": "trigger", + "tab": "1659090658504", + "name": "Trigger", + "x": 65, + "y": 153, + "connections": { + "0": [ + { + "index": "0", + "id": "1659098609466" + } + ] + }, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "", + "color": "gray" + }, + "color": "#F6BB42", + "notes": "", + "options": { + "data": "o", + "datatype": "string" + } + }, + { + "id": "1659091025541", + "component": "debug", + "tab": "1659090658504", + "name": "Debug", + "x": 440, + "y": 145, + "connections": {}, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "Enabled", + "color": "gray" + }, + "color": "#967ADC", + "notes": "", + "options": { + "type": "data", + "repository": false, + "enabled": true + } + }, + { + "id": "1659098609466", + "component": "timesetter", + "tab": "1659090658504", + "name": "Timesetter", + "x": 250, + "y": 149, + "connections": { + "0": [ + { + "index": "0", + "id": "1659091025541" + } + ] + }, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "", + "color": "gray" + }, + "color": "#656D78", + "notes": "", + "options": {} + }, + { + "id": "1659128510546", + "component": "timer", + "tab": "1659090658504", + "name": "Timer", + "x": 66, + "y": 231, + "connections": { + "0": [ + { + "index": "0", + "id": "1659098609466" + } + ] + }, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "", + "color": "gray" + }, + "color": "#F6BB42", + "notes": "", + "options": { + "interval": 86400000 + } + }, + { + "id": "1659128692574", + "component": "comment", + "tab": "1659090658504", + "name": "timesetter sets unipi's correct time once a day", + "x": 65, + "y": 77, + "connections": {}, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "", + "color": "gray" + }, + "color": "#704cff", + "notes": "", + "options": {} + }, + { + "id": "1659336872711", + "component": "code", + "tab": "1643281906512", + "name": "Code", + "x": 298, + "y": 1453, + "connections": { + "0": [ + { + "index": "0", + "id": "1659336919368" + } + ] + }, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "", + "color": "gray" + }, + "color": "#656D78", + "notes": "", + "options": { + "keepmessage": true, + "code": "//send(0, value);\n\n\nconst a = {\n \"192.168.1.11@5\": 32385,\n \"192.168.1.11@9\": 473407,\n \"192.168.1.11@16\": 2546491,\n \"192.168.1.11@51\": 3017850,\n \"192.168.1.11@6A\": 261928,\n \"192.168.1.11@6B\": 0,\n \"192.168.1.11@7A\": 60477,\n \"192.168.1.11@7B\": 205776,\n \"192.168.1.11@8A\": 56198,\n \"192.168.1.11@8B\": 311195,\n \"192.168.1.11@10A\": 80823,\n \"192.168.1.11@10B\": 5602,\n \"192.168.1.11@11A\": 197467,\n \"192.168.1.11@11B\": 112472,\n \"192.168.1.11@12A\": 126563,\n \"192.168.1.11@12B\": 80222,\n \"192.168.1.11@13A\": 3509,\n \"192.168.1.11@13B\": 660,\n \"192.168.1.11@14A\": 24664,\n \"192.168.1.11@14B\": 291350,\n \"192.168.1.11@15A\": 65163,\n \"192.168.1.11@15B\": 170419,\n \"192.168.1.11@2A\": 0,\n \"192.168.1.11@2B\": 0,\n \"192.168.1.11@3A\": 0,\n \"192.168.1.11@3B\": 0,\n \"192.168.1.11@4A\": 0,\n \"192.168.1.11@4B\": 0,\n \"192.168.1.12@18\": 2642749,\n \"192.168.1.12@2A\": 0,\n \"192.168.1.12@2B\": 409128,\n \"192.168.1.12@3A\": 0,\n \"192.168.1.12@3B\": 0,\n \"192.168.1.12@4A\": 0,\n \"192.168.1.12@4B\": 63780,\n \"192.168.1.12@5A\": 152878,\n \"192.168.1.12@5B\": 119528,\n \"192.168.1.12@6A\": 152078,\n \"192.168.1.12@6B\": 503,\n \"192.168.1.12@7A\": 0,\n \"192.168.1.12@7B\": 0,\n \"192.168.1.12@8A\": 0,\n \"192.168.1.12@8B\": 0,\n \"192.168.1.12@9A\": 0,\n \"192.168.1.12@9B\": 0,\n \"192.168.1.12@10A\": 0,\n \"192.168.1.12@10B\": 0,\n \"192.168.1.12@11A\": 526281,\n \"192.168.1.12@11B\": 0,\n \"192.168.1.12@12A\": 8597,\n \"192.168.1.12@12B\": 76319,\n \"192.168.1.12@13A\": 79416,\n \"192.168.1.12@13B\": 41648,\n \"192.168.1.12@14A\": 56537,\n \"192.168.1.12@14B\": 706,\n \"192.168.1.12@15A\": 7876,\n \"192.168.1.12@15B\": 0,\n \"192.168.1.12@16A\": 14969,\n \"192.168.1.12@16B\": 0,\n \"192.168.1.12@17A\": 0,\n \"192.168.1.12@17B\": 0,\n \"192.168.1.22@10\": 3674835,\n \"192.168.1.21@16\": 4960792,\n \"192.168.1.22@2A\": 534304,\n \"192.168.1.21@2A\": 63886,\n \"192.168.1.22@2B\": 351220,\n \"192.168.1.21@2B\": 23430,\n \"192.168.1.22@3A\": 747418,\n \"192.168.1.21@3A\": 110035,\n \"192.168.1.22@3B\": 1115158,\n \"192.168.1.22@4A\": 0,\n \"192.168.1.21@3B\": 29841,\n \"192.168.1.22@4B\": 25494,\n \"192.168.1.21@4A\": 0,\n \"192.168.1.22@5A\": 26199,\n \"192.168.1.21@4B\": 208786,\n \"192.168.1.22@5B\": 90164,\n \"192.168.1.21@5A\": 0,\n \"192.168.1.22@6A\": 0,\n \"192.168.1.21@5B\": 0,\n \"192.168.1.22@6B\": 95032,\n \"192.168.1.21@6A\": 35642,\n \"192.168.1.22@7A\": 43130,\n \"192.168.1.21@6B\": 30985,\n \"192.168.1.22@7B\": 5209,\n \"192.168.1.21@7A\": 4236,\n \"192.168.1.22@8A\": 230741,\n \"192.168.1.22@8A_48\": 115370.5,\n \"192.168.1.22@8A_64\": 115370.5,\n \"192.168.1.21@7B\": 91583,\n \"192.168.1.22@8B\": 111315,\n \"192.168.1.22@9A\": 186175,\n \"192.168.1.21@8A\": 302813,\n \"192.168.1.21@8B\": 380197,\n \"192.168.1.22@9B\": 0,\n \"192.168.1.21@9A\": 177548,\n \"192.168.1.21@9B\": 540952,\n \"192.168.1.21@10A\": 432041,\n \"192.168.1.21@10B\": 553023,\n \"192.168.1.21@11A\": 32972,\n \"192.168.1.21@11B\": 0,\n \"192.168.1.21@12A\": 0,\n \"192.168.1.21@12B\": 11228,\n \"192.168.1.21@13A\": 0,\n \"192.168.1.21@13B\": 910677,\n \"192.168.1.21@14A\": 0,\n \"192.168.1.21@14B\": 1268689\n };\n\n\n\n const fs = require('fs');\n\nconst all_data = {\"192.168.1.11@16\":{\"value\":2250885,\"tbname\":\"6lQGaY9RDywdVzObj0PZer7Pg4NBn3exEK51LWZq\"},\"192.168.1.11@51\":{\"value\":1598520,\"tbname\":\"1JMYvnx2RzKEo4aWQ7D93vAL8yZV3m9NBePXbrdj\"},\"192.168.1.12@18\":{\"value\":2280707,\"tbname\":\"m6EYyZoJ4gWexdjVPARapL7RDOq9wv2N5XzKGplr\"},\"192.168.1.21@16\":{\"value\":4390986,\"tbname\":\"aw4eELG2DlPMdn1JW0Bz2Z0qQXOZRN3xB5yp8VKr\"},\"192.168.1.22@10\":{\"value\":3266343,\"tbname\":\"ZmRwd93QL4gaezxEbAx1yw01prn2XjlPvGyqJ6BO\"},\"192.168.1.31@3\":{\"value\":204565,\"tbname\":\"JX1ObgmqGZ54DMyYL7aJMlAEVdve38WKRzwjNrQ9\"},\"192.168.1.31@11\":{\"value\":1568696,\"tbname\":\"RvmwNz8QPblKp41GD7l4NY7JrLVYoBO92dMegn6W\"},\"192.168.1.11@6A\":{\"value\":231759,\"zone\":\"vzt\",\"tbname\":\"JzwxZXOvDj1bVrN4nkWeR8A8qdyBl3MRKLpGPgaQ\"},\"192.168.1.11@6B\":{\"value\":0,\"zone\":\"rezerva\",\"tbname\":\"g9OxBZ5KRwNznlY6pApbGmkWXvjdEL4eGQobMDy2\"},\"192.168.1.11@7A\":{\"value\":54086,\"zone\":\"vzt\",\"tbname\":\"OzNMgZ9n43qPbjXmy7zOgGA2DKdYvW5e6pxGRrVa\"},\"192.168.1.11@7B\":{\"value\":182943,\"zone\":\"admin\",\"tbname\":\"JX1ObgmqGZ54DMyYL7aJzJAEVdve38WKRzwjNrQ9\"},\"192.168.1.11@8A\":{\"value\":50585,\"zone\":\"odsav\",\"tbname\":\"RvmwNz8QPblKp41GD7l4WK7JrLVYoBO92dMegn6W\"},\"192.168.1.11@8B\":{\"value\":271968,\"zone\":\"odsav\",\"tbname\":\"RO8rjaBDy21qPQJzW7oKpD7pK3xmNleVZg9Ed4Gw\"},\"192.168.1.11@9\":{\"value\":425231,\"zone\":\"odsav\",\"tbname\":\"3JjOWdylwgNLzxVab7NPjw0Z2vG64rq8PEB5QmDo\"},\"192.168.1.11@10A\":{\"value\":72180,\"zone\":\"kba_rapida\",\"tbname\":\"Z5KyJe9nEg1QNbWlX0wmnM7oDjBLdqzR83VGv624\"},\"192.168.1.11@10B\":{\"value\":5021,\"zone\":\"kba_rapida\",\"tbname\":\"1JMYvnx2RzKEo4aWQ7D9xzAL8yZV3m9NBePXbrdj\"},\"192.168.1.11@11A\":{\"value\":175599,\"zone\":\"kba_rapida\",\"tbname\":\"PjLblDgRBO6WQqnxmkJwga7Jv3ewZN4p5a89yKdY\"},\"192.168.1.11@11B\":{\"value\":101633,\"zone\":\"osvetlenie\",\"tbname\":\"dz4ojlpP85JMgDLZWkQ12jkaKYqQexEr62GXRV1y\"},\"192.168.1.11@12A\":{\"value\":114942,\"zone\":\"heidelberg\",\"tbname\":\"d5xjWYMwEJon6rLlK7yl3wkqgV4DaOeNB9ZX3Gzb\"},\"192.168.1.11@12B\":{\"value\":73171,\"zone\":\"osvetlenie\",\"tbname\":\"gRoJEyXVx4qD9er287LwbOkwBzGldaPjLWQKm3Mv\"},\"192.168.1.11@13A\":{\"value\":3100,\"zone\":\"mechanici\",\"tbname\":\"K94XLav1glVRnyQ6r01V3Wkme3YJwBxM5oOzdP2j\"},\"192.168.1.11@13B\":{\"value\":606,\"zone\":\"co_kryt\",\"tbname\":\"d9x2V5LGYBzXp4mMRAOPr10PloaqJwnQj6DgrNe3\"},\"192.168.1.11@14A\":{\"value\":21804,\"zone\":\"osvetlenie\",\"tbname\":\"B5EoxeMVp4zwr8nqW0Gen57RjvD1PNamOGbLg63Z\"},\"192.168.1.11@14B\":{\"value\":247182,\"zone\":\"vzt\",\"tbname\":\"aw4eELG2DlPMdn1JW0Bz4Z0qQXOZRN3xB5yp8VKr\"},\"192.168.1.11@15A\":{\"value\":58833,\"zone\":\"falcovacky\",\"tbname\":\"ZmRwd93QL4gaezxEbAx1Xw01prn2XjlPvGyqJ6BO\"},\"192.168.1.11@15B\":{\"value\":151256,\"zone\":\"ctp\",\"tbname\":\"eod9aRWLVl34Gx1Dn7VYmDk2rz6qjgmpEXwQJN5Z\"},\"192.168.1.11@5\":{\"value\":20392,\"zone\":\"chladenie\",\"tbname\":\"3a5oqJN1bgnx4Ol9dk8BdqAByE6jQ8mKDWMpGrLV\"},\"192.168.1.11@2A\":{\"value\":0,\"zone\":\"rezerva\",\"tbname\":\"EjgWGnXaLy9opPOz20ngWQk86BlYM3w1deVQvbKr\"},\"192.168.1.11@2B\":{\"value\":0,\"zone\":\"rezerva\",\"tbname\":\"wvKJdZML6mXP4DzWBAXOK87jxNloa5g23Ve9Y1ry\"},\"192.168.1.11@3A\":{\"value\":0,\"zone\":\"rezerva\",\"tbname\":\"Nzp2OoJlqn6r1ZgvdA3RqE7abBwP5G4eE3RQmyxD\"},\"192.168.1.11@3B\":{\"value\":0,\"zone\":\"rezerva\",\"tbname\":\"PLBJzmK1r3Gynd6OW0g2WzAe5wV4vx9bDEqNgYR8\"},\"192.168.1.11@4A\":{\"value\":0,\"zone\":\"rezerva\",\"tbname\":\"52dD6ZlV1QaOpRBmbAqvWb0KnGzWMLj4eJq38Pgo\"},\"192.168.1.11@4B\":{\"value\":0,\"zone\":\"rezerva\",\"tbname\":\"rDbQ84xzwgdqEoPm3kbPWWA9anOZY1RXyBv2LVM6\"},\"192.168.1.12@2A\":{\"value\":0,\"zone\":\"rezerva\",\"tbname\":\"E6Kg9oDnLWyzPRMva7vW8yAJxp4VG58qO2w1lZYe\"},\"192.168.1.12@2B\":{\"value\":374926,\"zone\":\"kba_compacta\",\"tbname\":\"roKgWqY95V3mXMRzyAjrW6AbLjexpJPvaGDBw826\"},\"192.168.1.12@3A\":{\"value\":0,\"zone\":\"rezerva\",\"tbname\":\"nJL5lPMwBx23YpqRe0rqa4AdamXvWVbOrD4gNzy8\"},\"192.168.1.12@3B\":{\"value\":0,\"zone\":\"rezerva\",\"tbname\":\"XMBbew5z4ELrZa2mRAdZW9k8vPN6gy3DdVYlpKjq\"},\"192.168.1.12@4A\":{\"value\":0,\"zone\":\"rezerva\",\"tbname\":\"gYbDLqlyZVoRerQpB72GgvAWJnwM5z24POKa8Exj\"},\"192.168.1.12@4B\":{\"value\":54209,\"zone\":\"chladenie\",\"tbname\":\"zdQO8GwxDqjRgP4137Y5eo7NyKlpem2nL65rvVJY\"},\"192.168.1.12@11A\":{\"value\":445101,\"zone\":\"vzt\",\"tbname\":\"WlVJBygjDZMeKX3vnAMWvLk8NqdmG2x1Y69LQ4P5\"},\"192.168.1.12@5A\":{\"value\":133794,\"zone\":\"kba_compacta\",\"tbname\":\"5dBNwRp9graYJxZn409R28klVov1b2QLPDqGm6XK\"},\"192.168.1.12@6A\":{\"value\":135974,\"zone\":\"kba_compacta\",\"tbname\":\"zrR51V2ajQ9ZLygPKkEPVW0YDq38xOJolENBXGnv\"},\"192.168.1.12@12A\":{\"value\":7575,\"zone\":\"kba_compacta\",\"tbname\":\"BaY3Xpy1EbKGjLq2O7m9W27rx8owgQz9P4dDJRmN\"},\"192.168.1.12@12B\":{\"value\":65413,\"zone\":\"kba_compacta\",\"tbname\":\"DbQY6zyveZRwK5drV0Zl4j7joE4XJM83N9xl2nWq\"},\"192.168.1.12@13A\":{\"value\":69962,\"zone\":\"odsav\",\"tbname\":\"apKVJBwOyrP35m2lv7KEqd0YXbeWNd64En9GxRqg\"},\"192.168.1.12@13B\":{\"value\":36850,\"zone\":\"kba_compacta\",\"tbname\":\"o9vbeQlLMVg8j5dq4kedWy0NxZpEmnXzwYKO1ar2\"},\"192.168.1.12@14A\":{\"value\":50174,\"zone\":\"kba_compacta\",\"tbname\":\"gP1eOZVj3Q9lv5aDEk4MbP7rdpqW8yLm2BbKzJxM\"},\"192.168.1.12@14B\":{\"value\":626,\"zone\":\"kba_compacta\",\"tbname\":\"2O14VBzl8aDmWdNw3A53vOkGyZ5qLJoEMpj6R9ng\"},\"192.168.1.12@15A\":{\"value\":6877,\"zone\":\"kba_compacta\",\"tbname\":\"pE5X8NQPaow6vlOZxk6Yjw0q42ezGBMyWgDVjR3L\"},\"192.168.1.12@16A\":{\"value\":13169,\"zone\":\"kba_compacta\",\"tbname\":\"6lQGaY9RDywdVzObj0PZdr7Pg4NBn3exEK51LWZq\"},\"192.168.1.12@16B\":{\"value\":0,\"zone\":\"kba_compacta\",\"tbname\":\"m6EYyZoJ4gWexdjVPARaYL7RDOq9wv2N5XzKGplr\"},\"192.168.1.12@5B\":{\"value\":72010,\"zone\":\"chladenie\",\"tbname\":\"JzwxZXOvDj1bVrN4nkWeZ8A8qdyBl3MRKLpGPgaQ\"},\"192.168.1.12@6B\":{\"value\":438,\"zone\":\"vzt\",\"tbname\":\"g9OxBZ5KRwNznlY6pApbymkWXvjdEL4eGQobMDy2\"},\"192.168.1.12@7A\":{\"value\":0,\"zone\":\"rezerva\",\"tbname\":\"OzNMgZ9n43qPbjXmy7zOyGA2DKdYvW5e6pxGRrVa\"},\"192.168.1.12@7B\":{\"value\":0,\"zone\":\"rezerva\",\"tbname\":\"JX1ObgmqGZ54DMyYL7aJZJAEVdve38WKRzwjNrQ9\"},\"192.168.1.12@8A\":{\"value\":0,\"zone\":\"rezerva\",\"tbname\":\"RvmwNz8QPblKp41GD7l4yK7JrLVYoBO92dMegn6W\"},\"192.168.1.12@8B\":{\"value\":0,\"zone\":\"rezerva\",\"tbname\":\"RO8rjaBDy21qPQJzW7oKyD7pK3xmNleVZg9Ed4Gw\"},\"192.168.1.12@9A\":{\"value\":0,\"zone\":\"rezerva\",\"tbname\":\"3JjOWdylwgNLzxVab7NPxw0Z2vG64rq8PEB5QmDo\"},\"192.168.1.12@9B\":{\"value\":0,\"zone\":\"rezerva\",\"tbname\":\"Z5KyJe9nEg1QNbWlX0wmyM7oDjBLdqzR83VGv624\"},\"192.168.1.12@10A\":{\"value\":0,\"zone\":\"rezerva\",\"tbname\":\"1JMYvnx2RzKEo4aWQ7D9MzAL8yZV3m9NBePXbrdj\"},\"192.168.1.12@10B\":{\"value\":0,\"zone\":\"rezerva\",\"tbname\":\"PjLblDgRBO6WQqnxmkJwea7Jv3ewZN4p5a89yKdY\"},\"192.168.1.12@11B\":{\"value\":0,\"zone\":\"rezerva\",\"tbname\":\"dz4ojlpP85JMgDLZWkQ1njkaKYqQexEr62GXRV1y\"},\"192.168.1.12@15B\":{\"value\":0,\"zone\":\"rezerva\",\"tbname\":\"d5xjWYMwEJon6rLlK7ylywkqgV4DaOeNB9ZX3Gzb\"},\"192.168.1.12@17A\":{\"value\":0,\"zone\":\"rezerva\",\"tbname\":\"gRoJEyXVx4qD9er287LwBOkwBzGldaPjLWQKm3Mv\"},\"192.168.1.12@17B\":{\"value\":0,\"zone\":\"rezerva\",\"tbname\":\"K94XLav1glVRnyQ6r01VpWkme3YJwBxM5oOzdP2j\"},\"192.168.1.21@2A\":{\"value\":56654,\"zone\":\"ferag\",\"tbname\":\"d9x2V5LGYBzXp4mMRAOPV10PloaqJwnQj6DgrNe3\"},\"192.168.1.21@2B\":{\"value\":20697,\"zone\":\"lithoman_iv_32\",\"tbname\":\"eod9aRWLVl34Gx1Dn7VYbDk2rz6qjgmpEXwQJN5Z\"},\"192.168.1.21@3A\":{\"value\":97250,\"zone\":\"lithoman_iv_32\",\"tbname\":\"3a5oqJN1bgnx4Ol9dk8BnqAByE6jQ8mKDWMpGrLV\"},\"192.168.1.21@3B\":{\"value\":26610,\"zone\":\"lithoman_48\",\"tbname\":\"EjgWGnXaLy9opPOz20ngyQk86BlYM3w1deVQvbKr\"},\"192.168.1.21@4B\":{\"value\":187840,\"zone\":\"lithoman_48\",\"tbname\":\"wvKJdZML6mXP4DzWBAXOj87jxNloa5g23Ve9Y1ry\"},\"192.168.1.21@6A\":{\"value\":29453,\"zone\":\"lithoman_48\",\"tbname\":\"Nzp2OoJlqn6r1ZgvdA3RoE7abBwP5G4eE3RQmyxD\"},\"192.168.1.21@13B\":{\"value\":806242,\"zone\":\"lithoman_48\",\"tbname\":\"PLBJzmK1r3Gynd6OW0g2yzAe5wV4vx9bDEqNgYR8\"},\"192.168.1.21@14A\":{\"value\":0,\"zone\":\"rezerva\",\"tbname\":\"52dD6ZlV1QaOpRBmbAqvyb0KnGzWMLj4eJq38Pgo\"},\"192.168.1.21@6B\":{\"value\":26092,\"zone\":\"lithoman_64\",\"tbname\":\"rDbQ84xzwgdqEoPm3kbPKWA9anOZY1RXyBv2LVM6\"},\"192.168.1.21@7A\":{\"value\":3765,\"zone\":\"odsav\",\"tbname\":\"E6Kg9oDnLWyzPRMva7vWyyAJxp4VG58qO2w1lZYe\"},\"192.168.1.21@7B\":{\"value\":81758,\"zone\":\"osvetlenie\",\"tbname\":\"roKgWqY95V3mXMRzyAjry6AbLjexpJPvaGDBw826\"},\"192.168.1.21@8A\":{\"value\":254824,\"zone\":\"kompresory\",\"tbname\":\"nJL5lPMwBx23YpqRe0rqy4AdamXvWVbOrD4gNzy8\"},\"192.168.1.21@8B\":{\"value\":338371,\"zone\":\"kompresory\",\"tbname\":\"ZmRwd93QL4gaezxEbAx1yb01prn2XjlPvGyqJ6BO\"},\"192.168.1.21@9A\":{\"value\":175867,\"zone\":\"kompresory\",\"tbname\":\"eod9aRWLVl34Gx1Dn7VYb9k2rz6qjgmpEXwQJN5Z\"},\"192.168.1.21@10A\":{\"value\":382484,\"zone\":\"kompresory\",\"tbname\":\"3a5oqJN1bgnx4Ol9dk8Bn1AByE6jQ8mKDWMpGrLV\"},\"192.168.1.21@10B\":{\"value\":486157,\"zone\":\"kompresory\",\"tbname\":\"EjgWGnXaLy9opPOz20ngydk86BlYM3w1deVQvbKr\"},\"192.168.1.21@11B\":{\"value\":0,\"zone\":\"kompresory\",\"tbname\":\"wvKJdZML6mXP4DzWBAXOjV7jxNloa5g23Ve9Y1ry\"},\"192.168.1.21@9B\":{\"value\":473383,\"zone\":\"vzt\",\"tbname\":\"Nzp2OoJlqn6r1ZgvdA3Rov7abBwP5G4eE3RQmyxD\"},\"192.168.1.21@11A\":{\"value\":28829,\"zone\":\"sitma_cmc\",\"tbname\":\"PLBJzmK1r3Gynd6OW0g2yqAe5wV4vx9bDEqNgYR8\"},\"192.168.1.21@12B\":{\"value\":9795,\"zone\":\"kotolna\",\"tbname\":\"52dD6ZlV1QaOpRBmbAqvyN0KnGzWMLj4eJq38Pgo\"},\"192.168.1.21@4A\":{\"value\":0,\"zone\":\"rezerva\",\"tbname\":\"rDbQ84xzwgdqEoPm3kbPKDA9anOZY1RXyBv2LVM6\"},\"192.168.1.21@5A\":{\"value\":0,\"zone\":\"rezerva\",\"tbname\":\"E6Kg9oDnLWyzPRMva7vWy9AJxp4VG58qO2w1lZYe\"},\"192.168.1.21@5B\":{\"value\":0,\"zone\":\"rezerva\",\"tbname\":\"roKgWqY95V3mXMRzyAjrynAbLjexpJPvaGDBw826\"},\"192.168.1.21@12A\":{\"value\":0,\"zone\":\"rezerva\",\"tbname\":\"nJL5lPMwBx23YpqRe0rqybAdamXvWVbOrD4gNzy8\"},\"192.168.1.21@13A\":{\"value\":0,\"zone\":\"rezerva\",\"tbname\":\"XMBbew5z4ELrZa2mRAdZ4xk8vPN6gy3DdVYlpKjq\"},\"192.168.1.21@14B\":{\"value\":1151873,\"zone\":\"lithoman_48\",\"tbname\":\"gYbDLqlyZVoRerQpB72Gp4AWJnwM5z24POKa8Exj\"},\"192.168.1.22@2A\":{\"value\":472477,\"zone\":\"lithoman_iv_32\",\"tbname\":\"B5EoxeMVp4zwr8nqW0GeGG7RjvD1PNamOGbLg63Z\"},\"192.168.1.22@2B\":{\"value\":310985,\"zone\":\"lithoman_iv_32\",\"tbname\":\"WlVJBygjDZMeKX3vnAMW6Pk8NqdmG2x1Y69LQ4P5\"},\"192.168.1.22@5B\":{\"value\":74289,\"zone\":\"lithoman_iv_32\",\"tbname\":\"5dBNwRp9graYJxZn409RBvklVov1b2QLPDqGm6XK\"},\"192.168.1.22@3A\":{\"value\":658862,\"zone\":\"lithoman_64\",\"tbname\":\"zrR51V2ajQ9ZLygPKkEPz10YDq38xOJolENBXGnv\"},\"192.168.1.22@3B\":{\"value\":1028852,\"zone\":\"lithoman_64\",\"tbname\":\"BaY3Xpy1EbKGjLq2O7m9N97rx8owgQz9P4dDJRmN\"},\"192.168.1.22@7B\":{\"value\":2764,\"zone\":\"lithoman_64\",\"tbname\":\"DbQY6zyveZRwK5drV0ZlB87joE4XJM83N9xl2nWq\"},\"192.168.1.22@9A\":{\"value\":164848,\"zone\":\"lithoman_64\",\"tbname\":\"apKVJBwOyrP35m2lv7KEpz0YXbeWNd64En9GxRqg\"},\"192.168.1.22@4B\":{\"value\":22614,\"zone\":\"osvetlenie\",\"tbname\":\"o9vbeQlLMVg8j5dq4kedZK0NxZpEmnXzwYKO1ar2\"},\"192.168.1.22@5A\":{\"value\":23214,\"zone\":\"osvetlenie\",\"tbname\":\"gP1eOZVj3Q9lv5aDEk4M4a7rdpqW8yLm2BbKzJxM\"},\"192.168.1.22@7A\":{\"value\":38294,\"zone\":\"expedicia\",\"tbname\":\"2O14VBzl8aDmWdNw3A535GkGyZ5qLJoEMpj6R9ng\"},\"192.168.1.22@6B\":{\"value\":80856,\"zone\":\"vzt\",\"tbname\":\"pE5X8NQPaow6vlOZxk6Y6z0q42ezGBMyWgDVjR3L\"},\"192.168.1.22@8A\":{\"value\":205613,\"zone\":\"lithoman_48_64\",\"tbname\":\"6lQGaY9RDywdVzObj0PZpb7Pg4NBn3exEK51LWZq\"},\"192.168.1.22@8A_48\":{\"value\":102806.5,\"zone\":\"lithoman_48\",\"tbname\":\"nJL5lPMwBx23YpqRe0rq4bAdamXvWVbOrD4gNzy8\"},\"192.168.1.22@8A_64\":{\"value\":102806.5,\"zone\":\"lithoman_64\",\"tbname\":\"ZmRwd93QL4gaezxEbAx1oK01prn2XjlPvGyqJ6BO\"},\"192.168.1.22@8B\":{\"value\":98255,\"zone\":\"muller_martini\",\"tbname\":\"m6EYyZoJ4gWexdjVPARaxV7RDOq9wv2N5XzKGplr\"},\"192.168.1.22@4A\":{\"value\":0,\"zone\":\"rezerva\",\"tbname\":\"JzwxZXOvDj1bVrN4nkWe3zA8qdyBl3MRKLpGPgaQ\"},\"192.168.1.22@6A\":{\"value\":0,\"zone\":\"rezerva\",\"tbname\":\"g9OxBZ5KRwNznlY6pApbNOkWXvjdEL4eGQobMDy2\"},\"192.168.1.22@9B\":{\"value\":0,\"zone\":\"rezerva\",\"tbname\":\"OzNMgZ9n43qPbjXmy7zONeA2DKdYvW5e6pxGRrVa\"},\"192.168.1.31@2\":{\"value\":87,\"tbname\":\"RO8rjaBDy21qPQJzW7oKN17pK3xmNleVZg9Ed4Gw\"},\"192.168.1.31@12B\":{\"value\":62785,\"zone\":\"vzt\",\"tbname\":\"3JjOWdylwgNLzxVab7NPpJ0Z2vG64rq8PEB5QmDo\"},\"192.168.1.31@13A\":{\"value\":85138,\"zone\":\"kompresory\",\"tbname\":\"Z5KyJe9nEg1QNbWlX0wmNP7oDjBLdqzR83VGv624\"},\"192.168.1.31@15A\":{\"value\":139599,\"zone\":\"vzt\",\"tbname\":\"1JMYvnx2RzKEo4aWQ7D9pXAL8yZV3m9NBePXbrdj\"},\"192.168.1.31@13B\":{\"value\":0,\"zone\":\"vzt\",\"tbname\":\"PjLblDgRBO6WQqnxmkJwpb7Jv3ewZN4p5a89yKdY\"},\"192.168.1.31@14A\":{\"value\":41020,\"zone\":\"kompresory\",\"tbname\":\"dz4ojlpP85JMgDLZWkQ1p3kaKYqQexEr62GXRV1y\"},\"192.168.1.31@15B\":{\"value\":234994,\"zone\":\"kompresory\",\"tbname\":\"d5xjWYMwEJon6rLlK7ylNxkqgV4DaOeNB9ZX3Gzb\"},\"192.168.1.31@16\":{\"value\":154,\"zone\":\"kompresory\",\"tbname\":\"gRoJEyXVx4qD9er287LwpEkwBzGldaPjLWQKm3Mv\"},\"192.168.1.31@12A\":{\"value\":255624,\"tbname\":\"K94XLav1glVRnyQ6r01VZ3kme3YJwBxM5oOzdP2j\"},\"192.168.1.31@14B\":{\"value\":82571,\"zone\":\"odsav\",\"tbname\":\"d9x2V5LGYBzXp4mMRAOPpV0PloaqJwnQj6DgrNe3\"},\"192.168.1.31@21\":{\"value\":3563,\"zone\":\"chladenie\",\"tbname\":\"3JjOWdylwgNLzxVab7NPyn0Z2vG64rq8PEB5QmDo\"},\"192.168.1.31@22A\":{\"value\":6756,\"zone\":\"kolbus\",\"tbname\":\"Z5KyJe9nEg1QNbWlX0wmEB7oDjBLdqzR83VGv624\"},\"192.168.1.31@22B\":{\"value\":523,\"zone\":\"kolbus_km600\",\"tbname\":\"1JMYvnx2RzKEo4aWQ7D9y5AL8yZV3m9NBePXbrdj\"},\"192.168.1.31@23A\":{\"value\":15906,\"zone\":\"lithoman_32\",\"tbname\":\"PjLblDgRBO6WQqnxmkJwyr7Jv3ewZN4p5a89yKdY\"},\"192.168.1.31@23B\":{\"value\":11326,\"zone\":\"lithoman_32\",\"tbname\":\"dz4ojlpP85JMgDLZWkQ1GGkaKYqQexEr62GXRV1y\"},\"192.168.1.31@24A\":{\"value\":120,\"zone\":\"lithoman_32\",\"tbname\":\"d5xjWYMwEJon6rLlK7ylZmkqgV4DaOeNB9ZX3Gzb\"},\"192.168.1.31@24B\":{\"value\":2,\"zone\":\"lithoman_32\",\"tbname\":\"gRoJEyXVx4qD9er287LwyvkwBzGldaPjLWQKm3Mv\"}}\n\n\nconsole.log(Object.keys(a).length);\nlet counter = 0;\n\nObject.keys(a).map(merac => {\n if(all_data.hasOwnProperty(merac))\n {\n counter++;\n const energy_last_month = a[merac];\n const enery_in_db = all_data[merac].value;\n const tbname = all_data[merac].tbname;\n\n const v = energy_last_month - enery_in_db;\n\n\n const dataToTb = {\n [tbname]: [\n {\n \"ts\": 1659304875000,\n \"values\": {\n energy_last_month_delta: v\n }\n }\n ]\n };\n\n\n\t\t if(tbname == \"PLBJzmK1r3Gynd6OW0g2yqAe5wV4vx9bDEqNgYR8\")\n {\n //! to handle two virtual devices, storing half values of one real device no: \"192.168.1.21@11A\" with tbname \"PLBJzmK1r3Gynd6OW0g2yqAe5wV4vx9bDEqNgYR8\"\n for (let tb_name of [\"E6Kg9oDnLWyzPRMva7vWR9AJxp4VG58qO2w1lZYe\", \"roKgWqY95V3mXMRzyAjrYnAbLjexpJPvaGDBw826\"]) {\n\n const half_value = {\n [tb_name]: [\n {\n \"ts\": date,\n \"values\": {\n energy_last_month_delta: v/2\n }\n }\n\n ]\n };\n\n send(0, half_value);\n }\n }\n\n //all_data[merac].value = energy_last_month;\n send(0, dataToTb)\n send(0, counter)\n }\n})", + "outputs": 1 + } + }, + { + "id": "1659336912698", + "component": "trigger", + "tab": "1643281906512", + "name": "Trigger", + "x": 107, + "y": 1451, + "connections": { + "0": [ + { + "index": "0", + "id": "1659336872711" + } + ] + }, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "", + "color": "gray" + }, + "color": "#F6BB42", + "notes": "", + "options": {} + }, + { + "id": "1659336919368", + "component": "debug", + "tab": "1643281906512", + "name": "Debug", + "x": 464, + "y": 1451, + "connections": {}, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "Enabled", + "color": "gray" + }, + "color": "#967ADC", + "notes": "", + "options": { + "type": "data", + "repository": false, + "enabled": true + } + }, + { + "id": "1660217538796", + "component": "debug", + "tab": "1643281906512", + "name": "do produkcie", + "x": 363, + "y": 433.5, + "connections": {}, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "Enabled", + "color": "gray" + }, + "color": "#967ADC", + "notes": "", + "options": { + "type": "data", + "repository": false, + "enabled": true + } + }, + { + "id": "1660476748555", + "component": "monitorconsumption", + "tab": "1660476684351", + "name": "Consumption", + "x": 96, + "y": 75, + "connections": { + "0": [ + { + "index": "0", + "id": "1660476771083" + } + ] + }, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "4.2% / 67.13 MB", + "color": "gray" + }, + "color": "#967ADC", + "notes": "", + "options": { + "monitorfiles": true, + "monitorconnections": true, + "monitorsize": true, + "monitorconsumption": true, + "enabled": true, + "interval": 60000 + } + }, + { + "id": "1660476751479", + "component": "monitordisk", + "tab": "1660476684351", + "name": "Disk", + "x": 98, + "y": 269, + "connections": { + "0": [ + { + "index": "0", + "id": "1660476781009" + } + ] + }, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "5.71 GB / 7.26 GB", + "color": "gray" + }, + "color": "#F6BB42", + "notes": "", + "options": { + "enabled": true, + "path": "/", + "interval": 8000 + } + }, + { + "id": "1660476753629", + "component": "monitormemory", + "tab": "1660476684351", + "name": "Memory", + "x": 96, + "y": 169, + "connections": { + "0": [ + { + "index": "0", + "id": "1660476776559" + } + ] + }, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "818.94 MB / 987.80 MB", + "color": "gray" + }, + "color": "#F6BB42", + "notes": "", + "options": { + "enabled": true, + "interval": 60000 + } + }, + { + "id": "1660476771083", + "component": "code", + "tab": "1660476684351", + "name": "Code", + "x": 303, + "y": 70, + "connections": { + "0": [ + { + "index": "0", + "id": "1660476806139" + } + ] + }, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "", + "color": "gray" + }, + "color": "#656D78", + "notes": "", + "options": { + "keepmessage": true, + "code": "let response = {};\nresponse.cpu = value.cpu;\nresponse.uptime = value.uptime;\n\nsend(0, response);", + "outputs": 1 + } + }, + { + "id": "1660476776559", + "component": "code", + "tab": "1660476684351", + "name": "Code", + "x": 300, + "y": 164, + "connections": { + "0": [ + { + "index": "0", + "id": "1660476806139" + } + ] + }, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "", + "color": "gray" + }, + "color": "#656D78", + "notes": "", + "options": { + "keepmessage": true, + "code": "let response = {};\n\nresponse.memory_total = value.total;\nresponse.memory_free = value.free;\nresponse.memory_used = value.used;\n\nsend(0, response);", + "outputs": 1 + } + }, + { + "id": "1660476781009", + "component": "code", + "tab": "1660476684351", + "name": "Code", + "x": 297, + "y": 263, + "connections": { + "0": [ + { + "index": "0", + "id": "1660476806139" + } + ] + }, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "", + "color": "gray" + }, + "color": "#656D78", + "notes": "", + "options": { + "keepmessage": true, + "code": "let response = {};\n\nresponse.hdd_total = value.total;\nresponse.hdd_free = value.free;\nresponse.hdd_used = value.used;\n\nsend(0, response);", + "outputs": 1 + } + }, + { + "id": "1660476806139", + "component": "virtualwireout", + "tab": "1660476684351", + "name": "send-to-services", + "x": 531, + "y": 150, + "connections": {}, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "send-to-services", + "color": "gray" + }, + "color": "#303E4D", + "notes": "", + "options": { + "wirename": "send-to-services" + } + }, + { + "id": "1660477364486", + "component": "virtualwirein", + "tab": "1660476684351", + "name": "send-to-services", + "x": 51, + "y": 438, + "connections": { + "0": [ + { + "index": "0", + "id": "1660477391824" + } + ] + }, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "send-to-services", + "color": "gray" + }, + "color": "#303E4D", + "notes": "", + "options": { + "wirename": "send-to-services" + } + }, + { + "id": "1660477391824", + "component": "infosender", + "tab": "1660476684351", + "name": "Info sender", + "x": 272, + "y": 437, + "connections": { + "0": [ + { + "index": "0", + "id": "1660477412065" + }, + { + "index": "0", + "id": "1660477429580" + } + ] + }, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "", + "color": "gray" + }, + "color": "#2134B0", + "notes": "", + "options": { + "edge": "undefined" + } + }, + { + "id": "1660477412065", + "component": "debug", + "tab": "1660476684351", + "name": "Debug", + "x": 492, + "y": 526, + "connections": {}, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "Enabled", + "color": "gray" + }, + "color": "#967ADC", + "notes": "", + "options": { + "type": "data", + "repository": false, + "enabled": true + } + }, + { + "id": "1660477429580", + "component": "httprequest", + "tab": "1660476684351", + "name": "http://192.168.252.2:8004/sentmessage", + "x": 488, + "y": 431, + "connections": { + "0": [ + { + "index": "0", + "id": "1685302783627" + } + ] + }, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "", + "color": "gray" + }, + "color": "#5D9CEC", + "notes": "", + "options": { + "stringify": "json", + "method": "POST", + "url": "http://192.168.252.2:8004/sentmessage", + "type": "json" + } + }, + { + "id": "1660477495564", + "component": "virtualwireout", + "tab": "1643281906512", + "name": "send-to-services", + "x": 615, + "y": 688, + "connections": {}, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "send-to-services", + "color": "gray" + }, + "color": "#303E4D", + "notes": "", + "options": { + "wirename": "send-to-services" + } + }, + { + "id": "1661332732945", + "component": "comment", + "tab": "1643281906512", + "name": "wsmqtt qas01 here:", + "x": 898.75, + "y": 918.5, + "connections": {}, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "", + "color": "gray" + }, + "color": "#704cff", + "notes": "", + "options": {} + }, + { + "id": "1661946950339", + "component": "debug", + "tab": "1643281906512", + "name": "to express", + "x": 801, + "y": 435, + "connections": {}, + "disabledio": { + "input": [ + 0 + ], + "output": [] + }, + "state": { + "text": "Enabled", + "color": "gray" + }, + "color": "#967ADC", + "notes": "", + "options": { + "type": "data", + "repository": false, + "enabled": true + } + }, + { + "id": "1661946985452", + "component": "httprequest", + "tab": "1643281906512", + "name": "0.0.0.0:3000/settemperature", + "x": 771, + "y": 327, + "connections": { + "0": [ + { + "index": "0", + "id": "1661947628241" + } + ] + }, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "", + "color": "gray" + }, + "color": "#5D9CEC", + "notes": "", + "options": { + "type": "json", + "stringify": "json", + "method": "POST", + "url": "http://0.0.0.0:3000/settemperature" + } + }, + { + "id": "1661947628241", + "component": "debug", + "tab": "1643281906512", + "name": "request to express", + "x": 1052, + "y": 322, + "connections": {}, + "disabledio": { + "input": [ + 0 + ], + "output": [] + }, + "state": { + "text": "Enabled", + "color": "gray" + }, + "color": "#967ADC", + "notes": "", + "options": { + "type": "data", + "repository": false, + "enabled": true + } + }, + { + "id": "1661953414910", + "component": "trigger", + "tab": "1643281906512", + "name": "Trigger", + "x": 526, + "y": 329, + "connections": { + "0": [ + { + "index": "0", + "id": "1661946985452" + } + ] + }, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "", + "color": "gray" + }, + "color": "#F6BB42", + "notes": "", + "options": { + "datatype": "object", + "data": "{temperature: '17.3'}" + } + }, + { + "id": "1669037202449", + "component": "httprequest", + "tab": "1668080058538", + "name": "http://192.168.252.2:8004/getdepartures", + "x": 356, + "y": -554, + "connections": {}, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "", + "color": "gray" + }, + "color": "#5D9CEC", + "notes": "", + "options": { + "stringify": "json", + "method": "POST", + "url": "http://192.168.252.2:8004/getdepartures?project_id=30", + "type": "json" + } + }, + { + "id": "1669037225090", + "component": "httprequest", + "tab": "1668080058538", + "name": "http://192.168.252.2:8004/getdepartures", + "x": 356, + "y": -312, + "connections": {}, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "", + "color": "gray" + }, + "color": "#5D9CEC", + "notes": "", + "options": { + "stringify": "json", + "method": "POST", + "url": "http://192.168.252.2:8004/getdepartures?project_id=30", + "type": "json" + } + }, + { + "id": "1669037987641", + "component": "httprequest", + "tab": "1668080058538", + "name": "http://0.0.0.0:3000/setdepartures", + "x": 1064, + "y": 162, + "connections": {}, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "", + "color": "gray" + }, + "color": "#5D9CEC", + "notes": "", + "options": { + "stringify": "json", + "method": "POST", + "url": "http://0.0.0.0:3000/setdepartures", + "type": "json" + } + }, + { + "id": "1679493041934", + "component": "wsmqttpublish", + "tab": "1643281906512", + "name": "TB PROD01", + "x": 368.8833312988281, + "y": 538.3999938964844, + "connections": { + "0": [ + { + "index": "0", + "id": "1679573361111" + } + ], + "1": [ + { + "index": "0", + "id": "1645111384451" + }, + { + "index": "0", + "id": "1645111340298" + } + ], + "2": [ + { + "index": "0", + "id": "1660477495564" + } + ] + }, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "Connected", + "color": "green" + }, + "color": "#888600", + "notes": "", + "options": { + "username": "xZfqsV9FjhPiqacsVwr6", + "clientid": "sokolov_SBS1_10_0_0_30", + "port": 1883, + "host": "192.168.252.1" + } + }, + { + "id": "1679573361111", + "component": "debug", + "tab": "1643281906512", + "name": "prod01 debug", + "x": 603, + "y": 441, + "connections": {}, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "Enabled", + "color": "gray" + }, + "color": "#967ADC", + "notes": "", + "options": { + "type": "data", + "repository": false, + "enabled": true + } + }, + { + "id": "1679573682640", + "component": "debug", + "tab": "1668080058538", + "name": "newDay", + "x": 555.5666656494141, + "y": 37, + "connections": {}, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "Enabled", + "color": "gray" + }, + "color": "#967ADC", + "notes": "", + "options": { + "type": "data", + "repository": false, + "enabled": true + } + }, + { + "id": "1679573709784", + "component": "debug", + "tab": "1668080058538", + "name": "setDepartures debug", + "x": 1065.566665649414, + "y": 262, + "connections": {}, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "Enabled", + "color": "gray" + }, + "color": "#967ADC", + "notes": "", + "options": { + "type": "data", + "repository": false, + "enabled": true + } + }, + { + "id": "1685302783627", + "component": "debug", + "tab": "1660476684351", + "name": "Debug", + "x": 853, + "y": 429, + "connections": {}, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "Enabled", + "color": "gray" + }, + "color": "#967ADC", + "notes": "", + "options": { + "type": "data", + "repository": false, + "enabled": true + } + }, + { + "id": "1687778068338", + "component": "checknewday", + "tab": "1668080058538", + "name": "Check if new day", + "x": 289, + "y": 41, + "connections": { + "0": [ + { + "index": "0", + "id": "1687778072229" + }, + { + "index": "0", + "id": "1679573682640" + } + ] + }, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "", + "color": "gray" + }, + "color": "#5D9CEC", + "notes": "", + "options": {} + }, + { + "id": "1687778072229", + "component": "handledepartures", + "tab": "1668080058538", + "name": "Handle departures", + "x": 532, + "y": 157, + "connections": { + "0": [ + { + "index": "0", + "id": "1669037987641" + }, + { + "index": "0", + "id": "1679573709784" + } + ] + }, + "disabledio": { + "input": [ + 0, + 1 + ], + "output": [ + 0 + ] + }, + "state": { + "text": "", + "color": "gray" + }, + "color": "#5D9CEC", + "notes": "", + "options": {} + }, + { + "id": "1687778082109", + "component": "timer", + "tab": "1668080058538", + "name": "Timer", + "x": 120, + "y": 250, + "connections": { + "0": [ + { + "index": "1", + "id": "1687778072229" + } + ] + }, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "", + "color": "gray" + }, + "color": "#F6BB42", + "notes": "", + "options": { + "interval": 60000 + } + }, + { + "id": "1687778119225", + "component": "timer", + "tab": "1668080058538", + "name": "Timer", + "x": 115, + "y": 44, + "connections": { + "0": [ + { + "index": "0", + "id": "1687778068338" + } + ] + }, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "", + "color": "gray" + }, + "color": "#F6BB42", + "notes": "", + "options": { + "interval": 150000 + } + }, + { + "id": "1687794067628", + "component": "trigger", + "tab": "1668080058538", + "name": "Trigger", + "x": 115.33332824707031, + "y": 131, + "connections": { + "0": [ + { + "index": "0", + "id": "1687778068338" + } + ] + }, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "", + "color": "gray" + }, + "color": "#F6BB42", + "notes": "", + "options": { + "restart": true + } + }, + { + "id": "1727349669460", + "component": "trigger", + "tab": "1668080058538", + "name": "Trigger", + "x": 852.75, + "y": 103, + "connections": { + "0": [ + { + "index": "0", + "id": "1669037987641" + }, + { + "index": "0", + "id": "1679573709784" + } + ] + }, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "", + "color": "gray" + }, + "color": "#F6BB42", + "notes": "", + "options": { + "data": "[]", + "datatype": "object", + "restart": true, + "COMPONENT": "trigger", + "NAME": "Trigger" + } + }, + { + "id": "1727349708633", + "component": "comment", + "tab": "1668080058538", + "name": "Kvoli neaktualnosti spojov ich nezobrazujeme na screen, preto posielam prazdny array", + "x": 850.75, + "y": 52, + "connections": {}, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "", + "color": "gray" + }, + "color": "#704cff", + "notes": "", + "options": {} + }, + { + "id": "1748264314486", + "component": "getdepartures", + "tab": "1643281906512", + "name": "Get departures", + "x": 437.75, + "y": 1647.5, + "connections": {}, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "", + "color": "gray" + }, + "color": "#5D9CEC", + "notes": "", + "options": {} + }, + { + "id": "1748264319313", + "component": "trigger", + "tab": "1643281906512", + "name": "Trigger", + "x": 127.75, + "y": 1665.5, + "connections": { + "0": [ + { + "index": "0", + "id": "1748264314486" + } + ] + }, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "", + "color": "gray" + }, + "color": "#F6BB42", + "notes": "", + "options": {} + }, + { + "id": "1752434603801", + "component": "getdepartures", + "tab": "1668080058538", + "name": "Get departures", + "x": 171.75, + "y": 501, + "connections": { + "0": [ + { + "index": "0", + "id": "1752434626014" + } + ], + "1": [ + { + "index": "0", + "id": "1752434672386" + } + ] + }, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "", + "color": "gray" + }, + "color": "#5D9CEC", + "notes": "", + "options": {} + }, + { + "id": "1752434612533", + "component": "timer", + "tab": "1668080058538", + "name": "Timer", + "x": 234.75, + "y": 669, + "connections": { + "0": [ + { + "index": "1", + "id": "1752434672386" + } + ] + }, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "", + "color": "gray" + }, + "color": "#F6BB42", + "notes": "", + "options": { + "interval": 60000 + } + }, + { + "id": "1752434626014", + "component": "debug", + "tab": "1668080058538", + "name": "DeparturesForToday", + "x": 523.75, + "y": 444, + "connections": {}, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "Enabled", + "color": "gray" + }, + "color": "#967ADC", + "notes": "", + "options": { + "type": "data", + "repository": false, + "enabled": true + } + }, + { + "id": "1752434672386", + "component": "handledepartures", + "tab": "1668080058538", + "name": "Handle departures", + "x": 521.75, + "y": 571, + "connections": { + "0": [ + { + "index": "0", + "id": "1752434693873" + }, + { + "index": "0", + "id": "1669037987641" + } + ] + }, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "", + "color": "gray" + }, + "color": "#5D9CEC", + "notes": "", + "options": {} + }, + { + "id": "1752434693873", + "component": "debug", + "tab": "1668080058538", + "name": "depToDisplay", + "x": 820.75, + "y": 651, + "connections": {}, + "disabledio": { + "input": [], + "output": [] + }, + "state": { + "text": "Enabled", + "color": "gray" + }, + "color": "#967ADC", + "notes": "", + "options": { + "type": "data", + "repository": false, + "enabled": true + } + } + ], + "version": 624 +} \ No newline at end of file diff --git a/flow/dido_controller_sbs.js b/flow/dido_controller_sbs.js new file mode 100644 index 0000000..629db95 --- /dev/null +++ b/flow/dido_controller_sbs.js @@ -0,0 +1,951 @@ +// https://medium.com/voodoo-engineering/websockets-on-production-with-node-js-bdc82d07bb9f +// https://evok-14.api-docs.io/1.11/bdymrhx7kgihpxpgm/websocket +exports.id = 'dido_controller_sbs'; +exports.title = 'DI_DO_controller'; +exports.group = 'Worksys'; +exports.color = '#2134B0'; +exports.input = 2; +exports.output = 3; +exports.icon = 'bolt'; +exports.version = '1.0.3'; +exports.readme = `# DI DO controller receives periodically status of digital inputs (state of main switch, rotary switch, state of braker) +It is also able to set new state for contactors (switch it off or on via digital output). Version v1.0.3 - after getting departures from sokolov server and temperature from services-prod01.worksys.io`; + +const SEND_TO = { + debug: 0, + prod01: 1, + qas01: 2, +}; + +exports.install = function(instance) { + + const SerialPort = require('serialport'); + const WebSocket = require('ws'); + const dbPins = TABLE("pins"); + const { exec } = require('child_process'); + const { promisifyBuilder, makeMapFromDbResult } = require('./helper/db_helper'); + const sunCalc = require('./helper/suncalc') + + const WEBSOCKET_ADDRESS = 'ws:/10.0.0.30:1234/ws'; + const WS_RECONNECT_DELAY = 5000; + const RSPORT_RECONNECT_DELAY = 5000; + let ws = null; + let previousValues = {}; + let start; + + let rsPort = null; + let rsPortReceivedData = []; + + let pinsData = {};//key is pin + let tbName_prod; + + + function handleRsPort() { + + if (rsPort) { + rsPort.removeAllListeners(); + rsPort = null; + } + + rsPort = new SerialPort("/dev/ttyACM0", { autoOpen: false }); + + rsPort.on('open', function() { + console.log("Setting up rsPort called !"); + exec("stty -F /dev/ttyACM0 115200 min 1 time 5 ignbrk -brkint -icrnl -imaxbel -opost -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke", (error, stdout, stderr) => { + console.log({ "stdout": stdout, "stderr": stderr, "err": error }); + }); + }); + + rsPort.on('data', function(data) { + rsPortReceivedData = [...rsPortReceivedData, ...data]; + // console.log('rsport -----',rsPortReceivedData); + console.log("rsport ok"); + + if (rsPortReceivedData.length >= 11) { + instance.send(0, { "ADD": rsPortReceivedData.slice(0, 4), "RESP_STATUS": rsPortReceivedData.slice(4, 5), "DATA": rsPortReceivedData.slice(5, 9), "CRC": rsPortReceivedData.slice(9, 11) }); + } + rsPortReceivedData = []; + }); + + rsPort.on('error', function(err) { + console.log("Error on rsPort", err); + }); + + rsPort.on("close", () => { + setTimeout(handleRsPort, RSPORT_RECONNECT_DELAY); + }); + + } + + + // pin:string|type:string|tbname_demo:string|tbname_qas01:string|tbname_prod01:string|contactor:number + // +|al_osvetlenie|state_of_relay|p2rwdP7aGoOQLJNgAynEdKD6xWXbmMe3nvZqlzkV|o8ZzVA4jrXLmRPnvGBkDDak6ayWbg32Y9KwdxqJN|nJL5lPMwBx23YpqRe0rpZ47damXvWVbOrD4gNzy8|1|............. + // +|al_defibrilator|state_of_relay|rQx3NGKgVMRaXYAo9y19OQyZzkWnj1le6bdOLE20|2qKyjDVBNowRvLzWxd5LBRk1JXY4mp9PA3gl6OGZ|XMBbew5z4ELrZa2mRAd3Q978vPN6gy3DdVYlpKjq|0|............. + async function loadAllDb() { + let responsePins = await promisifyBuilder(dbPins.find()); + pinsData = makeMapFromDbResult(responsePins, "pin"); + //console.log("-------pins data",pinsData); + + // main tbname - can be accessed with anything else (breakers, ...) + tbName_prod = pinsData["al_dverovy_kontakt"].tbname_prod01; + handleRsPort(); + + //! for some reason mqtt server connects to tb for about 1 minute. Thats why we start websocket after 30 seconds + setTimeout(handleWebsocket, 15000); + } + + setTimeout(loadAllDb, 15000); + + + function handleWebsocket() { + + console.log("handleWebsocket function called"); + if (ws) { + ws.removeAllListeners(); + ws = null; + } + + ws = new WebSocket(WEBSOCKET_ADDRESS); + + ws.onopen = function open() { + + //console.log('pins data', pinsData); + let relay; + let toSend; + + //we switch off screen, when flow restarts, to make sure touchscreen works fine + //let cmd = { "cmd": "set", "dev": "relay", "circuit": "al_obrazovka", "value": 0 }; + //ws.send(JSON.stringify(cmd)); + + //! turn on "al_poe_switch", "al_zasuvky", "al_obrazovka" + Object.keys(pinsData).map(item => { + + toSend = false; + + //if(["al_poe_switch", "al_zasuvky"].includes(item)) + if (["al_poe_switch", "al_zasuvky", "al_obrazovka"].includes(item)) { + relay = 1; + toSend = true; + } + //else if(["al_osvetlenie", "al_defibrilator", "al_obrazovka"].includes(item)) + else if (["al_osvetlenie", "al_defibrilator"].includes(item)) { + relay = 0; + toSend = true; + } + + if (toSend) { + const values = { + "state_of_relay": relay, + "status": "OK" + } + + let tbName = pinsData[item].tbname_prod01; + previousValues[item] = relay; + + let cmd = { "cmd": "set", "dev": "relay", "circuit": item, "value": relay }; + // console.log("--cmd ---------", cmd); + + if (item == 'al_obrazovka') { + setTimeout(() => { + ws.send(JSON.stringify(cmd)); + sendToTb(values, tbName); + }, 60000) + } + else { + ws.send(JSON.stringify(cmd)); + sendToTb(values, tbName); + } + + } + }) + //ws.send(JSON.stringify({"cmd":"all"})) + startRequests(); + }; + + ws.onmessage = function(data) { + data = JSON.parse(data.data); + //console.log("-------data web socket: ", data); + + if (!Array.isArray(data)) return; + + data.map(item => { + + let value = item['value']; + let alias = item["alias"]; + if (alias == undefined) return; + + switchLogic(alias, value); + }) + } + + ws.on('error', (err) => { + console.log("Dido_controller_sbs: error on websocket, ", err); + }) + + ws.onclose = function() { + stopRequests(); + console.log("ws connection closed, reconnecting in 5 seconds"); + setTimeout(handleWebsocket, WS_RECONNECT_DELAY); + } + } + + const startRequests = () => { + console.log("startRequest function called"); + start = setInterval(() => { + // console.log("data from evok requested"); + ws.send(JSON.stringify({ "cmd": "all" })); + // ws.send(JSON.stringify({"cmd":"filter", "devices":["input", "relay"]})); + }, 120000) + } + + + const stopRequests = () => { + console.log("stopRequests function called") + clearInterval(start); + } + + instance.on("close", () => { + rsPort.close(); + ws.close(); + }); + + + function generateCommand(rpcReceived) { + + let values = deepGetByPaths(rpcReceived, 'content.data.params.entities[0].entity_type', 'content.data.params.entities[0].tb_name', 'content.data.params.payload.value'); + let [entity_type, tb_name, value] = values; + + if (value === undefined || tb_name === undefined || entity_type === undefined) { + console.log("Dido_controller_sbs: bad rpc received"); + return; + } + + value ? value = 1 : value = 0; + + if (entity_type === "generic_relays") { + let entries = Object.entries(pinsData); + for (const [alias, data] of entries) { + + //if(data.tbname_prod01 === tb_name || data.tbname_qas01 === tb_name) { + if (data.tbname_prod01 === tb_name) { + let cmd = { "cmd": "set", "dev": "relay", "circuit": alias, "value": value }; + // console.log("--cmd ---------", cmd); + ws.send(JSON.stringify(cmd)); + } + //} + } + } + } + + //function gets value of a nested property in an object and returns undefined if it does not exists: + function getNested(obj, ...args) { + return args.reduce((obj, level) => obj && obj[level], obj) + } + + const deepGet = (obj, keys) => keys.reduce((xs, x) => xs?.[x] ?? undefined, obj); + + const deepGetByPaths = (obj, ...paths) => + paths.map(path => + deepGet( + obj, + path + .replace(/\[([^\[\]]*)\]/g, '.$1.') + .split('.') + .filter(t => t !== '') + ) + ); + + + instance.on("data", flowdata => { + //console.log('flowdaaata: ', flowdata.data); + if (flowdata.data instanceof Object) { + if (flowdata.data.hasOwnProperty("topic") && flowdata.data.hasOwnProperty("content")) { + + const entity_type = deepGetByPaths(flowdata.data, 'content.data.params.entities[0].entity_type')[0]; + + if (entity_type == "bus_stop_mmcite") { + + if (!rsPort.isOpen) { + handleRsPort();// console.log("openning rsport asyn"); + //rsPort.open(); + } + + console.log("running .."); + let toSend = true; + const beginning = [0, 0, 0, 0, 0, 0, 0]; + let value = getNested(flowdata.data, "content", "data", "params", "payload", "value"); + if (value === undefined) console.log("Dido_controller_sbs: flowdata.data value from platform is undefined"); + + let bytes = []; + + if (value == 0) { + bytes = [0, 0, 0, 1]; + } + else { + value = value * 1000; + bytes[0] = (value >> 24) & 0xFF; + bytes[1] = (value >> 16) & 0xFF; + bytes[2] = (value >> 8) & 0xFF; + bytes[3] = value & 0xFF; + } + + let finalCommand = beginning.concat(bytes); + console.log(finalCommand); + + // maybe not necessary - I started from 1, to make 0,2s delay in execution - just to make sure rsPort is set. + for (let i = 1; i < 4; i++) { + + setTimeout(function timer() { + + finalCommand[6] = i - 1; + rsPort.write(Buffer.from(calculateCRC16(finalCommand)), function(err) { + + if (err === undefined) { + // console.log("data zapisane do rsPortu"); + + if (toSend) { + const values = { dimming: value / 1000 }; + sendToTb(values, tbName_prod); + toSend = false; + } + + } + else { + console.log("rsPort WRITE error", err); + } + }); + + finalCommand.splice(11, 2); + + }, i * 200); + } + + } + else { + generateCommand(flowdata.data); + } + + } + else { + ws.send(JSON.stringify(flowdata.data)); + } + + } + + }); + + + setInterval(reportTimeAndVersion, 300000); + + + function reportTimeAndVersion() { + let values = {}; + + if (previousValues["edge_fw_version"] != exports.version) { + values["edge_fw_version"] = exports.version; + previousValues["edge_fw_version"] = exports.version; + } + + let ts = Date.now(); + values["edge_date_time"] = ts - ts % 60000 //round to full minute + + sendToTb(values, tbName_prod); + } + + + let times = null; + + function getSunriseSunsetTimes() { + const d = new Date(); + //to make sure times are calculated for local timezone with current day and months, we add "d.getFullYear(), d.getMonth(), d.getDate(), 12, 0, 0, 0, 0" + times = sunCalc.getTimes(new Date(d.getFullYear(), d.getMonth(), d.getDate(), 12, 0, 0, 0, 0), '50.10', '12.38'); + console.log("Sunrise and sunset times set: ", times); + } + + + // if new day comes, we get new dusk and dawn times + function checkForNewDay() { + // Get the current date and time + const currentDate = new Date(); + + // Get the date and time from 2 hours ago + const previousDate = new Date(); + previousDate.setHours(currentDate.getHours() - 2); + + // Compare the dates to check if a new day has started + if (currentDate.getDate() !== previousDate.getDate()) { + console.log("A new day has started!"); + getSunriseSunsetTimes(); + } + } + + + getSunriseSunsetTimes(); //to get times right after flow starts + setInterval(checkForNewDay, 2 * 60 * 60 * 1000); + + + function toggleBusLampIfSunriseOrSunset() { + + const lampState = previousValues['al_osvetlenie']; + console.log('lampState', lampState) + + const date = Date.now(); + + const sunrise = new Date(times.sunrise).getTime(); //1680236326458 + const sunset = new Date(times.sunset).getTime(); //1680286387995 + + console.log(sunrise, sunset); + + if (date > sunrise && date < sunset && lampState === 1) { + let cmd = { "cmd": "set", "dev": "relay", "circuit": "al_osvetlenie", "value": 0 }; + ws.send(JSON.stringify(cmd)); + console.log('---- Vypnute osvetlenie'); + } + else if (date > sunset && lampState === 0) { + let cmd = { "cmd": "set", "dev": "relay", "circuit": "al_osvetlenie", "value": 1 }; + ws.send(JSON.stringify(cmd)); + console.log('++++ Zapnute osvetlenie'); + } + else if (date < sunrise && lampState == 0) { + let cmd = { "cmd": "set", "dev": "relay", "circuit": "al_osvetlenie", "value": 1 }; + ws.send(JSON.stringify(cmd)); + console.log('---- Je novy den, nastavil sa novy sunset sunrise a zaplo sa osvetlenie'); + } + else { + console.log('S osvetlenim sa nic nespravilo'); + } + + } + + setTimeout(toggleBusLampIfSunriseOrSunset, 60000); // to switch light on, if neccessarry, after program starts, it must be after websocket started ( 30 seconds and more) + setInterval(toggleBusLampIfSunriseOrSunset, 900000); // than we check every 15 minutes if light needs to be turned on or off + + + const switchLogic = (alias, newValue) => { + + let values = { status: "OK" }; + let pinIndex = alias; + let newPinValue = newValue; + let obj = pinsData[pinIndex]; + + if (obj == undefined) { + previousValues[pinIndex] = newPinValue; + return; + } + + let type = obj.type; + + //default value + let value = true; + if (newPinValue === 0) value = false; + + if (type == "state_of_relay") { + value ? value = 1 : value = 0; + pinsData[pinIndex].contactor = value; + } + + values[obj.type] = value; + + if (pinsData.hasOwnProperty(pinIndex)) { + let insertIntoTb = false; + if (newPinValue != previousValues[pinIndex]) insertIntoTb = true; + + if (insertIntoTb) { + let tbName = obj.tbname_prod01; + + sendToTb(values, tbName); + + //pin was changed + previousValues[pinIndex] = newPinValue; + // console.log("previous ----", previousValues); + } + } + else { + console.log("no pinIndex", pinIndex, pinsData); + } + + }; + + + /** + * @param {object} values - values to be sent to TB qas01 and demo + */ + const sendToTb = (values, tbName) => { + const tbarray = [ + { + "ts": Date.now(), + "values": values + } + ]; + + let dataToTb = { [tbName]: tbarray }; + instance.send(SEND_TO.prod01, dataToTb); + } + +}; + + +function calculateCRC16(bytes) { + let crc = 0; + let out = 0; + let CRC16 = 0x8005; + let bits_read = 0; + let bit_flag = 0; + + for (let i = 0; i < bytes.length; i++) { + for (let j = 0; j < 8; j++) { + bit_flag = out >> 15; + + out = out << 1; + out = out & 0xFFFF; + out = out | ((bytes[i] >> bits_read) & 1); + out = out & 0xFFFF; + + bits_read = bits_read + 1; + if (bit_flag > 0) { + out = out ^ CRC16; + out = out & 0xFFFF; + } + } + + bits_read = 0; + } + + for (let i = 0; i < 16; i++) { + bit_flag = out >> 15; + out = out << 1; + out = out & 0xFFFF; + if (bit_flag > 0) { + out = out ^ CRC16; + out = out & 0xFFFF; + } + } + + let i = 0x8000; + let j = 0x0001; + while (i > 0) { + if ((i & out) > 0) { + crc = crc | j; + } + + i = i >> 1; + j = j << 1; + } + + bytes.push((crc >> 8) & 0xFF); + bytes.push(crc & 0xFF); + + return bytes; +} + + + +const dimmer = { + "topic": "v1/gateway/rpc", + "content": { + "device": "L2jNOVpdARa9XvoeJDPELbybkmPBxqn7Ww3gzGQ1", + "data": { + "id": 11, + "method": "set_command", + "params": { + "entities": [ + { + "entity_type": "bus_stop_mmcite", + "tb_name": "L2jNOVpdARa9XvoeJDPELbybkmPBxqn7Ww3gzGQ1" + } + ], + "command": "dimming", + "payload": { + "value": 8 + } + } + } + } +} + +let rpcReceived = { + "topic": "v1/gateway/rpc", + "content": { + "device": "mp93b2nvd7OoqgBeEyE7N18kjlAV1Y4ZNXwW0zLG", + "data": { + "id": 46, + "method": "set_command", + "params": { + "entities": [ + { + "entity_type": "generic_relays", + "tb_name": "9YkRpoB2vVa0mKqEO8Zr198jW43eXnJML6GxzbwQ" + } + ], + "command": "switch", + "payload": { + "value": 1 + } + } + } + } +} + +const previous = { + al_breaker_12v: 1, + al_breaker_48: 1, + al_istic_obrazovka: 1, + al_istic_socket: 1, + al_dverovy_kontakt: 0, + '28667676E0013C21': 25.8, + temperature_out: 23.6, + '26A33E6802000081': 27.4 +} + + +const pinsddata = { + al_osvetlenie: { + pin: 'al_osvetlenie', + type: 'state_of_relay', + tbname_demo: 'YnBzbeGaAL62jowRv59vVm8Xq9QpZ0K7O1dg4xVl', + tbname_qas01: 'o8ZzVA4jrXLmRPnvGBkDDak6ayWbg32Y9KwdxqJN', + contactor: 1 + }, + al_switch: { + pin: 'al_switch', + type: 'state_of_relay', + tbname_demo: 'zXBoWbEZjO0lrpqnRyoObvykmVeaNAGdL9g4QKxP', + tbname_qas01: '9rKRNEDXVYzWb0qZmlQjnqQn3jByxv42a6LPJ1oM', + contactor: 1 + }, + al_media_player: { + pin: 'al_media_player', + type: 'state_of_relay', + tbname_demo: 'p2rwdP7aGoOQLJNgAynE1wD6xWXbmMe3nvZqlzkV', + tbname_qas01: '2qKyjDVBNowRvLzWxd5LBRk1JXY4mp9PA3gl6OGZ', + contactor: 1 + }, + al_aibox: { + pin: 'al_aibox', + type: 'state_of_relay', + tbname_demo: 'rQx3NGKgVMRaXYAo9y19dpyZzkWnj1le6bdOLE20', + tbname_qas01: '1JD0MvzbwqAoZ36dPO7NBZ7LlmpgxGrBnNEK4Ry9', + contactor: 0 + }, + al_poe_switch1: { + pin: 'al_poe_switch1', + type: 'state_of_relay', + tbname_demo: 'nreBJ6PMqgz20pYEL82JeK8G1jkWwdQxZVNAOlmK', + tbname_qas01: '28LgqDR9braJKYmxd37EB95XBpEnyjNwPGAeO0o6', + contactor: 1 + }, + al_poe_switch2: { + pin: 'al_poe_switch2', + type: 'state_of_relay', + tbname_demo: 'klN4JpQAx362o9XYZDNPQ45grWw1P7GEbdBM0vRV', + tbname_qas01: 'P1Xabdx9AwGJr2WE4zQ2eV5NBmDMlvKoeLOqn8Z6', + contactor: 1 + }, + al_obrazovka1: { + pin: 'al_obrazovka1', + type: 'state_of_relay', + tbname_demo: 'ZmYXEbw9lVWRv1jLxDeJgzydgAMz4PKQnNJ6eB23', + tbname_qas01: 'dYBAenlq4zxv9jEZgaQqLq52ODyLoWKmGR06V1JP', + contactor: 1 + }, + al_obrazovka2: { + pin: 'al_obrazovka2', + type: 'state_of_relay', + tbname_demo: 'EonaKBOGbj9034MgJ8WvWe5qXvxNWVkAPQz21R6L', + tbname_qas01: 'GAqD3MNdpxwXVnj6z17J8yQrlKgZR0m9bB2aOWPY', + contactor: 1 + }, + al_breaker_12v: { + pin: 'al_breaker_12v', + type: 'breaker_12V_on', + tbname_demo: 'L2jNOVpdARa9XvoeJDPELbybkmPBxqn7Ww3gzGQ1', + tbname_qas01: '6nO4xlGE3zKVJdRXYZkMBK7BA28DoyMLg1pe9bar', + contactor: 0 + }, + al_breaker_48v: { + pin: 'al_breaker_48v', + type: 'breaker_48V_on', + tbname_demo: 'L2jNOVpdARa9XvoeJDPELbybkmPBxqn7Ww3gzGQ1', + tbname_qas01: '6nO4xlGE3zKVJdRXYZkMBK7BA28DoyMLg1pe9bar', + contactor: 0 + }, + al_istic_obrazovka: { + pin: 'al_istic_obrazovka', + type: 'screen_breaker_on', + tbname_demo: 'L2jNOVpdARa9XvoeJDPELbybkmPBxqn7Ww3gzGQ1', + tbname_qas01: '6nO4xlGE3zKVJdRXYZkMBK7BA28DoyMLg1pe9bar', + contactor: 0 + }, + al_istic_socket: { + pin: 'al_istic_socket', + type: 'socket_breaker_on', + tbname_demo: 'L2jNOVpdARa9XvoeJDPELbybkmPBxqn7Ww3gzGQ1', + tbname_qas01: '6nO4xlGE3zKVJdRXYZkMBK7BA28DoyMLg1pe9bar', + contactor: 0 + }, + al_dverovy_kontakt: { + pin: 'al_dverovy_kontakt', + type: 'door_condition', + tbname_demo: 'L2jNOVpdARa9XvoeJDPELbybkmPBxqn7Ww3gzGQ1', + tbname_qas01: '6nO4xlGE3zKVJdRXYZkMBK7BA28DoyMLg1pe9bar', + contactor: 0 + }, + '26A33E6802000081': { + pin: '26A33E6802000081', + type: 'humidity_out', + tbname_demo: 'L2jNOVpdARa9XvoeJDPELbybkmPBxqn7Ww3gzGQ1', + tbname_qas01: '6nO4xlGE3zKVJdRXYZkMBK7BA28DoyMLg1pe9bar', + contactor: 0 + }, + '28667676E0013C21': { + pin: '28667676E0013C21', + type: 'temperature', + tbname_demo: 'L2jNOVpdARa9XvoeJDPELbybkmPBxqn7Ww3gzGQ1', + tbname_qas01: '6nO4xlGE3zKVJdRXYZkMBK7BA28DoyMLg1pe9bar', + contactor: 0 + } +} + + +const datawebsocket = [ + { + glob_dev_id: 1, + modes: ['Simple'], + value: 0, + circuit: '1_08', + alias: 'al_obrazovka2', + pending: false, + relay_type: 'physical', + dev: 'relay', + mode: 'Simple' + }, + { + glob_dev_id: 1, + modes: ['Simple'], + value: 0, + circuit: '1_01', + alias: 'al_osvetlenie', + pending: false, + relay_type: 'physical', + dev: 'relay', + mode: 'Simple' + }, + { + glob_dev_id: 1, + modes: ['Simple'], + value: 0, + circuit: '1_02', + alias: 'al_switch', + pending: false, + relay_type: 'physical', + dev: 'relay', + mode: 'Simple' + }, + { + glob_dev_id: 1, + modes: ['Simple'], + value: 1, + circuit: '1_03', + alias: 'al_media_player', + pending: false, + relay_type: 'physical', + dev: 'relay', + mode: 'Simple' + }, + { + glob_dev_id: 1, + modes: ['Simple'], + value: 1, + circuit: '1_04', + alias: 'al_aibox', + pending: false, + relay_type: 'physical', + dev: 'relay', + mode: 'Simple' + }, + { + glob_dev_id: 1, + modes: ['Simple'], + value: 1, + circuit: '1_05', + alias: 'al_poe_switch1', + pending: false, + relay_type: 'physical', + dev: 'relay', + mode: 'Simple' + }, + { + glob_dev_id: 1, + modes: ['Simple'], + value: 1, + circuit: '1_06', + alias: 'al_poe_switch2', + pending: false, + relay_type: 'physical', + dev: 'relay', + mode: 'Simple' + }, + { + glob_dev_id: 1, + modes: ['Simple'], + value: 0, + circuit: '1_07', + alias: 'al_obrazovka1', + pending: false, + relay_type: 'physical', + dev: 'relay', + mode: 'Simple' + }, + { + counter_modes: ['Enabled', 'Disabled'], + glob_dev_id: 1, + modes: ['Simple', 'DirectSwitch'], + value: 0, + circuit: '1_08', + debounce: 50, + counter: 0, + counter_mode: 'Enabled', + dev: 'input', + mode: 'Simple' + }, + { + counter_mode: 'Enabled', + counter_modes: ['Enabled', 'Disabled'], + glob_dev_id: 1, + dev: 'input', + modes: ['Simple', 'DirectSwitch'], + debounce: 50, + counter: 0, + value: 0, + alias: 'al_breaker_12v', + mode: 'Simple', + circuit: '1_01' + }, + { + counter_mode: 'Enabled', + counter_modes: ['Enabled', 'Disabled'], + glob_dev_id: 1, + dev: 'input', + modes: ['Simple', 'DirectSwitch'], + debounce: 50, + counter: 0, + value: 0, + alias: 'al_breaker_48', + mode: 'Simple', + circuit: '1_02' + }, + { + counter_mode: 'Enabled', + counter_modes: ['Enabled', 'Disabled'], + glob_dev_id: 1, + dev: 'input', + modes: ['Simple', 'DirectSwitch'], + debounce: 50, + counter: 0, + value: 0, + alias: 'al_istic_obrazovka', + mode: 'Simple', + circuit: '1_03' + }, + { + counter_mode: 'Enabled', + counter_modes: ['Enabled', 'Disabled'], + glob_dev_id: 1, + dev: 'input', + modes: ['Simple', 'DirectSwitch'], + debounce: 50, + counter: 0, + value: 0, + alias: 'al_istic_socket', + mode: 'Simple', + circuit: '1_04' + }, + { + counter_modes: ['Enabled', 'Disabled'], + glob_dev_id: 1, + modes: ['Simple', 'DirectSwitch'], + value: 0, + circuit: '1_05', + debounce: 50, + counter: 0, + counter_mode: 'Enabled', + dev: 'input', + mode: 'Simple' + }, + { + counter_modes: ['Enabled', 'Disabled'], + glob_dev_id: 1, + modes: ['Simple', 'DirectSwitch'], + value: 0, + circuit: '1_06', + debounce: 50, + counter: 0, + counter_mode: 'Enabled', + dev: 'input', + mode: 'Simple' + }, + { + counter_modes: ['Enabled', 'Disabled'], + glob_dev_id: 1, + modes: ['Simple', 'DirectSwitch'], + value: 0, + circuit: '1_07', + debounce: 50, + counter: 0, + counter_mode: 'Enabled', + dev: 'input', + mode: 'Simple' + }, + { + interval: 3, + value: 24.75, + circuit: '28667676E0013C21', + address: '28667676E0013C21', + time: 1645103817.127406, + typ: 'DS18B20', + lost: false, + dev: 'temp' + }, + { + vis: '0.0209926', + dev: '1wdevice', + typ: 'DS2438', + lost: false, + temp: '24.7812', + interval: 3, + vad: '1.6', + humidity: 23.710019217090384, + vdd: '5.29', + circuit: '26A33E6802000081', + time: 1645103815.074027 + }, + { + bus: '/dev/i2c-2', + interval: 3, + dev: 'owbus', + scan_interval: 300, + circuit: '1', + do_scan: false, + do_reset: false + }, + { + glob_dev_id: 1, + last_comm: 0.012907028198242188, + ver2: '0.1', + sn: 162, + circuit: '1', + model: 'S207', + dev: 'neuron', + board_count: 1 + }, + { + circuit: '1_01', + value: 0, + glob_dev_id: 1, + dev: 'wd', + timeout: 5000, + was_wd_reset: 0, + nv_save: 0 + } +] + diff --git a/flow/function.js b/flow/function.js new file mode 100644 index 0000000..9f33bc6 --- /dev/null +++ b/flow/function.js @@ -0,0 +1,137 @@ +exports.id = 'function'; +exports.title = 'Function'; +exports.group = 'Common'; +exports.color = '#656D78'; +exports.icon = 'code'; +exports.input = true; +exports.output = 1; +exports.version = '1.1.3'; +exports.author = 'Martin Smola'; +exports.options = { + outputs: 1, + code: 'send(\'Hello world!\');' +}; + +exports.readme = `# Function + +Allows you to do sync operation on data. If \`send\` function isn't called the data flow will not continue. + +__Custom function__: + +\`\`\`javascript +data; // received data +send; // send data to next component, optionaly specify output index -> send(0, data); +instance; // ref to value.instance, available methods get, set, rem for storing temporary data related to this instance of Function component and debug, status and error for sending data to designer +global; // ref to value.global, available methods get, set, rem for storing persistent data globally accessible in any component +flowdata; // ref to value.flowdata, instance of FlowData - available methods get, set, rem for storing temporary data related to current flow +flowdata.data; // user defined data recieved from previous component + +// Example: +send('Hello world.'); // sends data to all outputs +send(0, 'Hello world.'); // sends data only to first output + +// Calling send without any argument will pass incomming data to next components +send(); +\`\`\``; + +exports.html = `
+
+
+
@(Number of outputs)
+
@(Minimum is 1)
+
+
+
@(Code)
+
+`; + +exports.install = function(instance) { + + var fn; + var ready = false; + + var VALUE = { + instance: { + get: instance.get.bind(instance), + set: instance.set.bind(instance), + rem: instance.rem.bind(instance), + error: instance.error.bind(instance), + debug: instance.debug.bind(instance), + status: instance.status.bind(instance), + send: function(flowdata, index, data){ + if (data === undefined) { + flowdata = flowdata.clone(); + flowdata.data = index; + instance.send2(flowdata); + } else { + flowdata = flowdata.clone(); + flowdata.data = data; + instance.send2(index, flowdata); + } + } + }, + global: { + get: FLOW.get, + set: FLOW.set, + rem: FLOW.rem, + variable: FLOW.variable + }, + Date: Date, + Object: Object + }; + + instance.custom.reconfigure = function() { + + if (F.is4) { + fn = new Function('value', 'next', 'var model=value;var now=function(){return new Date()};var instance=value.instance;var flowdata=value.flowdata;var data=flowdata.data;var global=value.global;var send=function(index,data){value.instance.send(value.flowdata,index,data)};try{' + instance.options.code + '}catch(e){next(e)}'); + } else { + fn = SCRIPT(` + var instance = value.instance; + var flowdata = value.flowdata; + var data = flowdata.data; + var Date = value.Date; + var Object = value.Object; + var global = value.global; + var send = function(index, data){ + value.instance.send(value.flowdata, index, data); + } + ${instance.options.code} + next(value); + `); + } + + if (typeof(fn) !== 'function') { + ready = false; + instance.error(fn.message); + return; + } + ready = true; + }; + + instance.on('data', function(flowdata) { + VALUE.flowdata = flowdata; + ready && fn(VALUE, function(err) { + if (err) + return instance.error('Error while processing function ' + err); + }); + }); + + instance.on('options', instance.custom.reconfigure); + instance.custom.reconfigure(); +}; diff --git a/flow/get_departures.js b/flow/get_departures.js new file mode 100644 index 0000000..c7c56f7 --- /dev/null +++ b/flow/get_departures.js @@ -0,0 +1,613 @@ +exports.id = 'getdepartures'; +exports.title = 'Get departures'; +exports.group = 'Worksys'; +exports.color = '#5D9CEC'; +exports.version = '0.0.1'; +exports.output = 2; +exports.input = true; +exports.icon = 'cloud-upload'; + +const { promisifyBuilder } = require('./helper/db_helper'); + +exports.install = function(instance) { + + const URL = "https://bezpecne.sokolov.cz/zast/jedn_drogerie.csv"; + //const URL = "https://bezpecne.sokolov.cz/zast/sidl_michal.csv"; + const CHECK_DEPARTURES_INTERVAL = 1 * 60 * 60000; //raz za hodinu + const NUMBER_OF_REQUESTS_BEFORE_LOAD_DEPARTURES_FROM_FILE = 15; + const CHECK_NEW_DAY_DEPARTURES_AT = 1 // at 1 at night we check new departures + let departuresFromFile = null; + let departuresDB = null; + let httpBody = null; + let attempts = 0; + let server_responded = false; + + async function loadDepartures() { + departuresDB = TABLE("departures"); + departuresFromFile = await promisifyBuilder(departuresDB.find()); + departuresFromFile = departuresFromFile[0].departures; + //console.log("cccc", departuresFromFile); + } + + loadDepartures(); + + instance.on('close', function() { + clearInterval(interval1); + }) + + let interval1 = setInterval(getDepartures, CHECK_DEPARTURES_INTERVAL); + + function getDepartures() { + //console.log('getDep called'); + + let d = new Date(); + let hour = d.getHours(); + if (hour === CHECK_NEW_DAY_DEPARTURES_AT) server_responded = false; + if (d.getHours() === CHECK_NEW_DAY_DEPARTURES_AT || !server_responded) { + + attempts++; + //console.log('attempts: ', attempts); + + const opt = { + url: URL + }; + + opt.callback = function(err, response) { + if (err || response.body.includes('Rejected') || response.status === 404) { + console.log('errr', err, response.body); + + //NOTE: if error, we try to refetch departures + if (attempts < NUMBER_OF_REQUESTS_BEFORE_LOAD_DEPARTURES_FROM_FILE) { + setTimeout(getDepartures, 20000); + } else if (attempts === NUMBER_OF_REQUESTS_BEFORE_LOAD_DEPARTURES_FROM_FILE) { + const { departures } = processBusData(departuresFromFile); + console.log('odchody nacitane zo suboru'); + instance.send(0, departures); + } + + return; + } + + attempts = 0; + server_responded = true; + console.log(response); + httpBody = response.body; + + departuresDB.modify({ departures: httpBody }).callback(function(err, response) { + if (err) console.log("Get_departures: error writing to departure.table", err) + console.log("Departures written to db for day: ", new Date()); + }); + + const { departures } = processBusData(httpBody); + console.log(JSON.stringify(departures)); + instance.send(0, departures); + } + + REQUEST(opt); + } + + } + + + setTimeout(getDepartures, 5000); + /** + * Filters a departure array based on date masks and a specific day index. + * + * @param {Array>} rawDepartures - The unfiltered departure array. + * @param {Object} dateMasks - An object containing date masks (e.g., {X01: "111..."}). + * @param {number | null} dayIndex - The 0-based index representing the current day in the mask. + * @param {boolean} isInsideDateRange - True if today's date is inside of the overall date range. + * @returns {Array>} The filtered departure array. + */ + const filterDeparturesByDate = (rawDepartures, dateMasks, dayIndex, isInsideDateRange) => { + // If today's date is not inside of the overall date range, no departures should be shown. + if (!isInsideDateRange) { + return []; + } + + // If dayIndex is invalid or no date masks are provided, return the unfiltered array. + // You might adjust this default behavior based on specific requirements. + if (dayIndex === null || dayIndex < 0 || Object.keys(dateMasks).length === 0) { + console.warn("Filtering conditions not fully met (e.g., current day not calculated or no masks). Returning unfiltered departures."); + return rawDepartures; + } + + const filtered = rawDepartures.filter(departureItem => { + const kodMasky = departureItem[3]; // 'Kód datumové masky' is at index 3 + const dateMask = dateMasks[kodMasky]; // Get the mask string (e.g., "111001...") + + // Check if the mask exists and if the dayIndex is within the mask's length + if (dateMask && dayIndex < dateMask.length) { + const characterForToday = dateMask[dayIndex]; + return characterForToday === '1'; // Keep if the character at the current day's index is '1' + } + + // If mask not found or dayIndex is out of bounds for a specific departure's mask, + // it means this departure doesn't have valid mask data for today. + // Decide default behavior: return false (discard) or true (keep). + // Discarding is safer if valid mask data is required. + console.warn(`Departure with mask '${kodMasky}' has invalid or missing mask data for day index ${dayIndex}. Discarding.`); + return false; + }); + + return filtered; + }; + + + /** + * Processes the raw HTTP body to extract departure data, date range analysis, and date masks. + * + * @param {string} httpBody - The raw HTTP request body string. + * @param {string | null} todayOverride - Optional. A date string (e.g., 'YYYY-MM-DD') to use as "today" for analysis. + * If null, the current system date will be used. + * @returns {Object} An object containing: + * - departure: Filtered array of departure times. + * - dateAnalysis: Analysis of the date range (start, end, days passed, etc.). + * - dateMasks: An object mapping mask codes to their binary strings. + */ + const processBusData = (httpBody, todayOverride = null) => { + // 1. Initial cleanup and splitting of the raw body + const cleanedString = httpBody.startsWith('\ufeff') ? httpBody.substring(1) : httpBody; + const lines = cleanedString.split('\r\n'); + //console.log("*************lines", lines, lines.length, typeof lines); + + + // --- Data structures to be populated --- + const rawDepartures = []; // Collects all departures before filtering + const dateMasks = {}; + let dateAnalysis = { + startDate: null, + endDate: null, + today: null, + daysPassed: null, + isInsideDateRange: null + }; + + // --- Flags and counters for parsing different sections --- + let captureDateMasksMode = false; + let departureSectionStartIndex = -1; + let foundObdobi = false; + + // Define "today" for calculation. + const todayCalc = todayOverride ? new Date(todayOverride) : new Date(); + todayCalc.setUTCHours(0, 0, 0, 0); + + let linka_ = null; + let cas_odjezdu = null; + let cilova_obec_spoje = null; + let kod_datumovej_masky = null; + + // --- Iterate through lines to parse all sections --- + + for (let i = 0; i < lines.length; i++) { + const line = lines[i]; + const trimmedLine = line.trim(); + + // --- 1. Parse 'Období' (Date Range Analysis) --- + if (!foundObdobi && trimmedLine.startsWith('Období;')) { + const parts = trimmedLine.split(';'); + if (parts.length >= 3) { + const startDateStr = parts[1].trim(); + const endDateStr = parts[2].trim(); + + const parseDateString = (dateStr) => { + const [day, month, year] = dateStr.split('.'); + return `${year}-${month}-${day}`; + }; + + const parsedStartDate = new Date(parseDateString(startDateStr)); + const parsedEndDate = new Date(parseDateString(endDateStr)); + + if (!isNaN(parsedStartDate.getTime()) && !isNaN(parsedEndDate.getTime())) { + parsedStartDate.setUTCHours(0, 0, 0, 0); + parsedEndDate.setUTCHours(0, 0, 0, 0); + + const millisecondsPerDay = 1000 * 60 * 60 * 24; + const timeDifference = todayCalc.getTime() - parsedStartDate.getTime(); + const daysPassed = Math.floor(timeDifference / millisecondsPerDay); + + const isInsideDateRange = todayCalc <= parsedEndDate && todayCalc >= parsedStartDate; + console.log("is in date range? ", isInsideDateRange); + + dateAnalysis = { + startDate: parsedStartDate.toLocaleDateString('en-GB'), + endDate: parsedEndDate.toLocaleDateString('en-GB'), + today: todayCalc.toLocaleDateString('en-GB'), + daysPassed: daysPassed >= 0 ? daysPassed : 0, + isInsideDateRange: isInsideDateRange + }; + foundObdobi = true; + } else { + console.error("Warning: Could not parse valid start and/or end dates from 'Období' field."); + } + } + } + + // --- 2. Parse Date Masks --- + if (trimmedLine.includes("Kód datumové masky;Datumová maska")) { + captureDateMasksMode = true; + continue; + } + if (captureDateMasksMode && !trimmedLine) { + captureDateMasksMode = false; + continue; + } + if (captureDateMasksMode) { + const columns = trimmedLine.split(';'); + if (columns.length >= 2) { + const code = columns[0].trim(); + const mask = columns[1].trim(); + if (code && mask) { + dateMasks[code] = mask; + } + } + } + + // --- 3. Find Start of Departure Data --- + if (trimmedLine.includes("Linka") && trimmedLine.includes("Čas odjezdu") && trimmedLine.includes('Cílová obec spoje') && trimmedLine.includes('Kód datumové masky')) { + + let structure = trimmedLine.split(";"); + linka_ = structure.indexOf("Linka"); + cas_odjezdu = structure.indexOf("Čas odjezdu"); + cilova_obec_spoje = structure.indexOf("Cílová obec spoje"); + kod_datumovej_masky = structure.indexOf("Kód datumové masky"); + + + if (linka_ == -1 || cas_odjezdu == -1 || cilova_obec_spoje == -1 || kod_datumovej_masky == -1) { + console.log("subor odchodov neobsahuje pozadovane udaje"); + linka_ = 0; + cas_odjezdu = 2; + cilova_obec_spoje = 4; + kod_datumovej_masky = 5; + } + + departureSectionStartIndex = i + 1; + continue; + } + + // --- 4. Parse Raw Departure Data --- + if (departureSectionStartIndex !== -1 && i >= departureSectionStartIndex) { + if (!trimmedLine) { + continue; + } + + const columns = trimmedLine.split(';'); + + if (columns.length >= 6 && columns[0].trim() !== '') { + //const linka = parseInt(columns[0].trim(), 10); + //let casOdjezdu = columns[2].trim(); + //if (casOdjezdu.length === 4) casOdjezdu = "0" + casOdjezdu; + //let cilovaObecSpoje = columns[4].trim(); + //const kodDatumoveMasky = columns[5].trim(); + + //cilovaObecSpoje = cilovaObecSpoje.replace(/,,/g, ', '); + + const linka = parseInt(columns[linka_].trim(), 10); + let casOdjezdu = columns[cas_odjezdu].trim(); + if (casOdjezdu.length === 4) casOdjezdu = "0" + casOdjezdu; + let cilovaObecSpoje = columns[cilova_obec_spoje].trim(); + const kodDatumoveMasky = columns[kod_datumovej_masky].trim(); + + cilovaObecSpoje = cilovaObecSpoje.replace(/,,/g, ', '); + + if (!isNaN(linka)) { + rawDepartures.push([ + linka, + casOdjezdu, + cilovaObecSpoje, + kodDatumoveMasky + ]); + } + } + } + } + + // --- Final Step: Filter the departures using the new function --- + const finalDepartures = filterDeparturesByDate( + rawDepartures, + dateMasks, + dateAnalysis.daysPassed, + dateAnalysis.isInsideDateRange + ); + + + // console.log('aaaaaaa', JSON.stringify(rawDepartures)); + // console.log('aaaFINALaaaa', JSON.stringify(finalDepartures)); + + return { + departures: finalDepartures, // Now 'departures' holds the filtered array + rawDepartures: rawDepartures, + dateAnalysis: dateAnalysis, + dateMasks: dateMasks + }; + }; + + + //184 total + let allDepartures = [[3, "4:09", "Sokolov, Závodu míru", "X01"], [3, "4:24", "Sokolov, Závodu míru", "X02"], [1, "4:50", "Březová, aut.st.", "X02"], [3, "4:52", "Sokolov, Závodu míru", "X02"], [3, "4:56", "Sokolov, Závodu míru", "X03"], [3, "5:02", "Sokolov, Závodu míru", "X02"], [4, "5:05", "Sokolov, Závodu míru", "X02"], [6, "5:07", "Sokolov, sídl.Michal škola", "X04"], [6, "5:07", "Sokolov, Závodu míru", "X05"], [3, "5:09", "Sokolov, Závodu míru", "X04"], [3, "5:22", "Sokolov, Závodu míru", "X02"], [1, "5:23", "Březová, aut.st.", "X02"], [3, "5:31", "Sokolov, sídl.Michal škola", "X04"], [6, "5:34", "Sokolov, sídl.Michal škola", "X04"], [4, "5:37", "Sokolov,Stará ovčárna", "X02"], [3, "5:40", "Sokolov, sídl.Michal", "X05"], [1, "5:47", "Březová, aut.st.", "X03"], [1, "5:51", "Březová, aut.st.", "X02"], [3, "5:57", "Sokolov, Závodu míru", "X03"], [6, "5:59", "Sokolov, sídl.Michal škola", "X04"], [3, "6:00", "Sokolov, Závodu míru", "X02"], [1, "6:13", "Březová, aut.st.", "X02"], [3, "6:16", "Sokolov, Závodu míru", "X04"], [3, "6:19", "Sokolov, Závodu míru", "X05"], [3, "6:24", "Sokolov, sídl.Michal", "X02"], [3, "6:24", "Sokolov, Závodu míru", "X03"], [6, "6:27", "Sokolov, sídl.Michal škola", "X05"], [6, "6:29", "Sokolov, sídl.Michal škola", "X04"], [4, "6:31", "Sokolov, Závodu míru", "X04"], [3, "6:39", "Sokolov, Závodu míru", "X02"], [1, "6:46", "Březová, aut.st.", "X02"], [33, "6:49", "Sokolov, sídl.Michal škola", "X04"], [3, "6:56", "Sokolov,Hrušková", "X04"], [3, "6:56", "Sokolov, Závodu míru", "X06"], [3, "6:59", "Sokolov, Závodu míru", "X02"], [1, "7:01", "Březová, aut.st.", "X03"], [1, "7:05", "Březová, aut.st.", "X02"], [3, "7:19", "Sokolov, Závodu míru", "X01"], [6, "7:23", "Sokolov, sídl.Michal škola", "X04"], [3, "7:27", "Sokolov, sídl.Michal", "X05"], [2, "7:31", "Sokolov, sídl.Michal", "X04"], [3, "7:34", "Sokolov, Závodu míru", "X04"], [4, "7:34", "Sokolov, Závodu míru", "X02"], [1, "7:35", "Březová, aut.st.", "X02"], [3, "7:45", "Sokolov, sídl.Michal", "X02"], [3, "7:51", "Sokolov, Závodu míru", "X03"], [1, "7:55", "Březová, aut.st.", "X02"], [1, "7:57", "Březová, aut.st.", "X03"], [3, "7:58", "Sokolov, Závodu míru", "X04"], [33, "8:01", "Sokolov, sídl.Michal škola", "X04"], [3, "8:13", "Sokolov, Závodu míru", "X05"], [3, "8:15", "Sokolov, Závodu míru", "X07"], [1, "8:18", "Březová, aut.st.", "X02"], [33, "8:29", "Sokolov, sídl.Michal škola", "X02"], [3, "8:34", "Sokolov, Závodu míru", "X02"], [3, "8:50", "Sokolov,Stará ovčárna", "X02"], [3, "8:51", "Sokolov, Závodu míru", "X03"], [33, "8:54", "Sokolov, sídl.Michal škola", "X02"], [1, "8:57", "Březová, aut.st.", "X03"], [3, "9:04", "Sokolov, Závodu míru", "X02"], [1, "9:09", "Březová, aut.st.", "X02"], [3, "9:20", "Sokolov, Závodu míru", "X03"], [3, "9:24", "Sokolov, Závodu míru", "X02"], [33, "9:34", "Sokolov, sídl.Michal škola", "X02"], [4, "9:41", "Sokolov, sídl.Michal", "X02"], [1, "9:44", "Březová, aut.st.", "X03"], [3, "9:45", "Sokolov, Závodu míru", "X02"], [3, "9:51", "Sokolov, Závodu míru", "X03"], [1, "9:58", "Březová, aut.st.", "X02"], [3, "9:59", "Sokolov, Závodu míru", "X02"], [7, "10:14", "Březová, aut.st.", "X02"], [3, "10:19", "Sokolov, Závodu míru", "X03"], [33, "10:24", "Sokolov, sídl.Michal škola", "X02"], [3, "10:40", "Sokolov, Závodu míru", "X02"], [1, "10:55", "Březová, aut.st.", "X02"], [3, "10:55", "Sokolov, Závodu míru", "X02"], [1, "10:57", "Březová, aut.st.", "X03"], [3, "11:02", "Sokolov, Závodu míru", "X03"], [3, "11:17", "Sokolov, Závodu míru", "X02"], [3, "11:29", "Sokolov, Závodu míru", "X03"], [33, "11:29", "Sokolov, sídl.Michal škola", "X02"], [3, "11:44", "Sokolov, Závodu míru", "X02"], [1, "11:46", "Březová, aut.st.", "X02"], [1, "11:49", "Březová, aut.st.", "X03"], [3, "11:51", "Sokolov, Závodu míru", "X03"], [33, "11:56", "Sokolov, sídl.Michal škola", "X02"], [3, "12:07", "Sokolov, Závodu míru", "X02"], [3, "12:19", "Sokolov, Závodu míru", "X03"], [3, "12:24", "Sokolov, Závodu míru", "X02"], [1, "12:33", "Březová, aut.st.", "X02"], [3, "12:44", "Sokolov, Závodu míru", "X02"], [3, "12:51", "Sokolov, Závodu míru", "X03"], [1, "12:57", "Březová, aut.st.", "X03"], [3, "12:59", "Sokolov, Závodu míru", "X02"], [6, "12:59", "Sokolov, sídl.Michal škola", "X04"], [33, "13:04", "Sokolov, sídl.Michal škola", "X02"], [1, "13:06", "Březová, aut.st.", "X02"], [3, "13:15", "Sokolov, Závodu míru", "X02"], [2, "13:17", "Sokolov, sídl.Michal", "X02"], [1, "13:22", "Březová, aut.st.", "X02"], [3, "13:24", "Sokolov,Stará ovčárna", "X02"], [3, "13:28", "Sokolov, Závodu míru", "X03"], [33, "13:34", "Sokolov, sídl.Michal škola", "X02"], [1, "13:48", "Březová, aut.st.", "X02"], [3, "13:51", "Sokolov, Závodu míru", "X03"], [1, "13:59", "Březová, aut.st.", "X03"], [6, "13:59", "Sokolov, sídl.Michal škola", "X02"], [33, "14:04", "Sokolov, sídl.Michal škola", "X02"], [4, "14:06", "Sokolov,Stará ovčárna", "X02"], [3, "14:09", "Sokolov, Závodu míru", "X02"], [1, "14:10", "Březová, aut.st.", "X02"], [3, "14:19", "Sokolov, Závodu míru", "X03"], [3, "14:21", "Sokolov, Závodu míru", "X02"], [1, "14:34", "Březová, aut.st.", "X02"], [6, "14:34", "Sokolov, sídl.Michal škola", "X02"], [4, "14:42", "Sokolov, Závodu míru", "X02"], [3, "14:43", "Sokolov, Závodu míru", "X02"], [33, "14:46", "Sokolov, sídl.Michal škola", "X02"], [1, "14:51", "Březová, aut.st.", "X03"], [3, "14:51", "Sokolov, Závodu míru", "X03"], [3, "14:52", "Sokolov, Závodu míru", "X02"], [1, "15:09", "Březová, aut.st.", "X02"], [33, "15:09", "Sokolov, sídl.Michal škola", "X02"], [3, "15:13", "Sokolov, Závodu míru", "X02"], [6, "15:14", "Sokolov, sídl.Michal škola", "X02"], [3, "15:20", "Sokolov, Závodu míru", "X03"], [3, "15:26", "Sokolov,Hrušková", "X04"], [1, "15:31", "Březová, aut.st.", "X02"], [3, "15:34", "Sokolov, Závodu míru", "X02"], [3, "15:39", "Sokolov, Závodu míru", "X02"], [33, "15:39", "Sokolov, sídl.Michal škola", "X02"], [3, "15:51", "Sokolov, Závodu míru", "X03"], [7, "15:54", "Březová, aut.st.", "X02"], [1, "15:57", "Březová, aut.st.", "X03"], [3, "16:00", "Sokolov, sídl.Michal škola", "X04"], [4, "16:08", "Sokolov, Závodu míru", "X02"], [3, "16:14", "Sokolov, Závodu míru", "X02"], [33, "16:16", "Sokolov, sídl.Michal škola", "X02"], [1, "16:21", "Březová, aut.st.", "X02"], [3, "16:28", "Sokolov, Závodu míru", "X03"], [7, "16:29", "Březová, aut.st.", "X02"], [3, "16:37", "Sokolov, Závodu míru", "X02"], [6, "16:44", "Sokolov, sídl.Michal škola", "X04"], [3, "16:48", "Sokolov, Závodu míru", "X02"], [3, "16:50", "Sokolov, Závodu míru", "X03"], [4, "16:51", "Sokolov, Závodu míru", "X04"], [1, "16:57", "Březová, aut.st.", "X03"], [7, "16:59", "Březová, aut.st.", "X02"], [3, "17:12", "Sokolov,Stará ovčárna", "X02"], [3, "17:17", "Sokolov, Závodu míru", "X03"], [3, "17:18", "Sokolov, Závodu míru", "X02"], [3, "17:34", "Sokolov, Závodu míru", "X02"], [1, "17:38", "Březová, aut.st.", "X02"], [3, "17:51", "Sokolov, Závodu míru", "X03"], [3, "17:57", "Sokolov, Závodu míru", "X02"], [3, "18:14", "Sokolov, Závodu míru", "X02"], [3, "18:21", "Sokolov, Závodu míru", "X02"], [3, "18:21", "Sokolov,Stará ovčárna", "X03"], [1, "18:24", "Březová, aut.st.", "X03"], [1, "18:26", "Březová, aut.st.", "X02"], [3, "18:34", "Sokolov, Závodu míru", "X02"], [3, "18:51", "Sokolov, Závodu míru", "X03"], [3, "18:54", "Sokolov, Závodu míru", "X02"], [1, "19:08", "Březová, aut.st.", "X02"], [3, "19:14", "Sokolov, Závodu míru", "X03"], [3, "19:19", "Sokolov, Závodu míru", "X02"], [3, "19:34", "Sokolov, Závodu míru", "X02"], [1, "19:53", "Březová, aut.st.", "X02"], [3, "19:54", "Sokolov, Závodu míru", "X03"], [3, "19:56", "Sokolov, Závodu míru", "X02"], [1, "19:57", "Březová, aut.st.", "X03"], [3, "20:19", "Sokolov, Závodu míru", "X02"], [1, "20:28", "Březová, aut.st.", "X03"], [3, "20:49", "Sokolov, Závodu míru", "X01"], [1, "20:55", "Březová, aut.st.", "X02"], [3, "21:09", "Sokolov, Závodu míru", "X02"], [1, "21:23", "Březová, aut.st.", "X03"], [3, "21:24", "Sokolov,Stará ovčárna", "X02"], [3, "21:27", "Sokolov, Závodu míru", "X03"], [1, "21:38", "Březová, aut.st.", "X02"], [3, "22:05", "Sokolov, Závodu míru", "X03"], [3, "22:12", "Sokolov,Stará ovčárna", "X02"], [1, "22:28", "Březová, aut.st.", "X02"], [3, "22:41", "Sokolov, Závodu míru", "X02"]]; + + let httpBody1 = { + + + body: 'Sloupec1;Sloupec2;Sloupec3;Sloupec4;Sloupec5;Sloupec7\r\n' + + 'Export odjezdů ze dne;22.04.2025;08:32;;;\r\n' + + 'Zastávka;Sokolov,,ul.Jednoty drogerie;;;;\r\n' + + 'Období;24.03.2025;31.05.2025;;;\r\n' + + ';;;;;\r\n' + + 'Kód datumové masky;Datumová maska;;;;\r\n' + + 'X01;111111111111111111111111111111111111111111111111111111111111111111111;;;;\r\n' + + 'X02;111110011111001111100111100001111001110100111010011111001111100111110;;;;\r\n' + + 'X03;000001100000110000011000011110000110001011000101100000110000011000001;;;;\r\n' + + 'X04;111110011111001111100111000001111001110100111010011111001111100111110;;;;\r\n' + + 'X05;000000000000000000000000100000000000000000000000000000000000000000000;;;;\r\n' + + 'X06;000001100000110000011000111110000110001011000101100000110000011000001;;;;\r\n' + + 'X07;111111111111111111111111011111111111111111111111111111111111111111111;;;;\r\n' + + ';;;;;\r\n' + + 'Linka;Spoj;Čas odjezdu;Nástupiště;Cílová obec spoje;Kód datumové masky\r\n' + + '3;;4:09;;Sokolov,,Závodu míru;X01\r\n' + + '3;;4:24;;Sokolov,,Závodu míru;X02\r\n' + + '1;;4:50;;Březová,,aut.st.;X02\r\n' + + '3;;4:52;;Sokolov,,Závodu míru;X02\r\n' + + '3;;4:56;;Sokolov,,Závodu míru;X03\r\n' + + '3;;5:02;;Sokolov,,Závodu míru;X02\r\n' + + '4;;5:05;;Sokolov,,Závodu míru;X02\r\n' + + '6;;5:07;;Sokolov,,sídl.Michal škola;X04\r\n' + + '6;;5:07;;Sokolov,,Závodu míru;X05\r\n' + + '3;;5:09;;Sokolov,,Závodu míru;X04\r\n' + + '3;;5:22;;Sokolov,,Závodu míru;X02\r\n' + + '1;;5:23;;Březová,,aut.st.;X02\r\n' + + '3;;5:31;;Sokolov,,sídl.Michal škola;X04\r\n' + + '6;;5:34;;Sokolov,,sídl.Michal škola;X04\r\n' + + '4;;5:37;;Sokolov,Stará ovčárna;X02\r\n' + + '3;;5:40;;Sokolov,,sídl.Michal;X05\r\n' + + '1;;5:47;;Březová,,aut.st.;X03\r\n' + + '1;;5:51;;Březová,,aut.st.;X02\r\n' + + '3;;5:57;;Sokolov,,Závodu míru;X03\r\n' + + '6;;5:59;;Sokolov,,sídl.Michal škola;X04\r\n' + + '3;;6:00;;Sokolov,,Závodu míru;X02\r\n' + + '1;;6:13;;Březová,,aut.st.;X02\r\n' + + '3;;6:16;;Sokolov,,Závodu míru;X04\r\n' + + '3;;6:19;;Sokolov,,Závodu míru;X05\r\n' + + '3;;6:24;;Sokolov,,sídl.Michal;X02\r\n' + + '3;;6:24;;Sokolov,,Závodu míru;X03\r\n' + + '6;;6:27;;Sokolov,,sídl.Michal škola;X05\r\n' + + '6;;6:29;;Sokolov,,sídl.Michal škola;X04\r\n' + + '4;;6:31;;Sokolov,,Závodu míru;X04\r\n' + + '3;;6:39;;Sokolov,,Závodu míru;X02\r\n' + + '1;;6:46;;Březová,,aut.st.;X02\r\n' + + '33;;6:49;;Sokolov,,sídl.Michal škola;X04\r\n' + + '3;;6:56;;Sokolov,Hrušková;X04\r\n' + + '3;;6:56;;Sokolov,,Závodu míru;X06\r\n' + + '3;;6:59;;Sokolov,,Závodu míru;X02\r\n' + + '1;;7:01;;Březová,,aut.st.;X03\r\n' + + '1;;7:05;;Březová,,aut.st.;X02\r\n' + + '3;;7:19;;Sokolov,,Závodu míru;X01\r\n' + + '6;;7:23;;Sokolov,,sídl.Michal škola;X04\r\n' + + '3;;7:27;;Sokolov,,sídl.Michal;X05\r\n' + + '2;;7:31;;Sokolov,,sídl.Michal;X04\r\n' + + '3;;7:34;;Sokolov,,Závodu míru;X04\r\n' + + '4;;7:34;;Sokolov,,Závodu míru;X02\r\n' + + '1;;7:35;;Březová,,aut.st.;X02\r\n' + + '3;;7:45;;Sokolov,,sídl.Michal;X02\r\n' + + '3;;7:51;;Sokolov,,Závodu míru;X03\r\n' + + '1;;7:55;;Březová,,aut.st.;X02\r\n' + + '1;;7:57;;Březová,,aut.st.;X03\r\n' + + '3;;7:58;;Sokolov,,Závodu míru;X04\r\n' + + '33;;8:01;;Sokolov,,sídl.Michal škola;X04\r\n' + + '3;;8:13;;Sokolov,,Závodu míru;X05\r\n' + + '3;;8:15;;Sokolov,,Závodu míru;X07\r\n' + + '1;;8:18;;Březová,,aut.st.;X02\r\n' + + '33;;8:29;;Sokolov,,sídl.Michal škola;X02\r\n' + + '3;;8:34;;Sokolov,,Závodu míru;X02\r\n' + + '3;;8:50;;Sokolov,Stará ovčárna;X02\r\n' + + '3;;8:51;;Sokolov,,Závodu míru;X03\r\n' + + '33;;8:54;;Sokolov,,sídl.Michal škola;X02\r\n' + + '1;;8:57;;Březová,,aut.st.;X03\r\n' + + '3;;9:04;;Sokolov,,Závodu míru;X02\r\n' + + '1;;9:09;;Březová,,aut.st.;X02\r\n' + + '3;;9:20;;Sokolov,,Závodu míru;X03\r\n' + + '3;;9:24;;Sokolov,,Závodu míru;X02\r\n' + + '33;;9:34;;Sokolov,,sídl.Michal škola;X02\r\n' + + '4;;9:41;;Sokolov,,sídl.Michal;X02\r\n' + + '1;;9:44;;Březová,,aut.st.;X03\r\n' + + '3;;9:45;;Sokolov,,Závodu míru;X02\r\n' + + '3;;9:51;;Sokolov,,Závodu míru;X03\r\n' + + '1;;9:58;;Březová,,aut.st.;X02\r\n' + + '3;;9:59;;Sokolov,,Závodu míru;X02\r\n' + + '7;;10:14;;Březová,,aut.st.;X02\r\n' + + '3;;10:19;;Sokolov,,Závodu míru;X03\r\n' + + '33;;10:24;;Sokolov,,sídl.Michal škola;X02\r\n' + + '3;;10:40;;Sokolov,,Závodu míru;X02\r\n' + + '1;;10:55;;Březová,,aut.st.;X02\r\n' + + '3;;10:55;;Sokolov,,Závodu míru;X02\r\n' + + '1;;10:57;;Březová,,aut.st.;X03\r\n' + + '3;;11:02;;Sokolov,,Závodu míru;X03\r\n' + + '3;;11:17;;Sokolov,,Závodu míru;X02\r\n' + + '3;;11:29;;Sokolov,,Závodu míru;X03\r\n' + + '33;;11:29;;Sokolov,,sídl.Michal škola;X02\r\n' + + '3;;11:44;;Sokolov,,Závodu míru;X02\r\n' + + '1;;11:46;;Březová,,aut.st.;X02\r\n' + + '1;;11:49;;Březová,,aut.st.;X03\r\n' + + '3;;11:51;;Sokolov,,Závodu míru;X03\r\n' + + '33;;11:56;;Sokolov,,sídl.Michal škola;X02\r\n' + + '3;;12:07;;Sokolov,,Závodu míru;X02\r\n' + + '3;;12:19;;Sokolov,,Závodu míru;X03\r\n' + + '3;;12:24;;Sokolov,,Závodu míru;X02\r\n' + + '1;;12:33;;Březová,,aut.st.;X02\r\n' + + '3;;12:44;;Sokolov,,Závodu míru;X02\r\n' + + '3;;12:51;;Sokolov,,Závodu míru;X03\r\n' + + '1;;12:57;;Březová,,aut.st.;X03\r\n' + + '3;;12:59;;Sokolov,,Závodu míru;X02\r\n' + + '6;;12:59;;Sokolov,,sídl.Michal škola;X04\r\n' + + '33;;13:04;;Sokolov,,sídl.Michal škola;X02\r\n' + + '1;;13:06;;Březová,,aut.st.;X02\r\n' + + '3;;13:15;;Sokolov,,Závodu míru;X02\r\n' + + '2;;13:17;;Sokolov,,sídl.Michal;X02\r\n' + + '1;;13:22;;Březová,,aut.st.;X02\r\n' + + '3;;13:24;;Sokolov,Stará ovčárna;X02\r\n' + + '3;;13:28;;Sokolov,,Závodu míru;X03\r\n' + + '33;;13:34;;Sokolov,,sídl.Michal škola;X02\r\n' + + '1;;13:48;;Březová,,aut.st.;X02\r\n' + + '3;;13:51;;Sokolov,,Závodu míru;X03\r\n' + + '1;;13:59;;Březová,,aut.st.;X03\r\n' + + '6;;13:59;;Sokolov,,sídl.Michal škola;X02\r\n' + + '33;;14:04;;Sokolov,,sídl.Michal škola;X02\r\n' + + '4;;14:06;;Sokolov,Stará ovčárna;X02\r\n' + + '3;;14:09;;Sokolov,,Závodu míru;X02\r\n' + + '1;;14:10;;Březová,,aut.st.;X02\r\n' + + '3;;14:19;;Sokolov,,Závodu míru;X03\r\n' + + '3;;14:21;;Sokolov,,Závodu míru;X02\r\n' + + '1;;14:34;;Březová,,aut.st.;X02\r\n' + + '6;;14:34;;Sokolov,,sídl.Michal škola;X02\r\n' + + '4;;14:42;;Sokolov,,Závodu míru;X02\r\n' + + '3;;14:43;;Sokolov,,Závodu míru;X02\r\n' + + '33;;14:46;;Sokolov,,sídl.Michal škola;X02\r\n' + + '1;;14:51;;Březová,,aut.st.;X03\r\n' + + '3;;14:51;;Sokolov,,Závodu míru;X03\r\n' + + '3;;14:52;;Sokolov,,Závodu míru;X02\r\n' + + '1;;15:09;;Březová,,aut.st.;X02\r\n' + + '33;;15:09;;Sokolov,,sídl.Michal škola;X02\r\n' + + '3;;15:13;;Sokolov,,Závodu míru;X02\r\n' + + '6;;15:14;;Sokolov,,sídl.Michal škola;X02\r\n' + + '3;;15:20;;Sokolov,,Závodu míru;X03\r\n' + + '3;;15:26;;Sokolov,Hrušková;X04\r\n' + + '1;;15:31;;Březová,,aut.st.;X02\r\n' + + '3;;15:34;;Sokolov,,Závodu míru;X02\r\n' + + '3;;15:39;;Sokolov,,Závodu míru;X02\r\n' + + '33;;15:39;;Sokolov,,sídl.Michal škola;X02\r\n' + + '3;;15:51;;Sokolov,,Závodu míru;X03\r\n' + + '7;;15:54;;Březová,,aut.st.;X02\r\n' + + '1;;15:57;;Březová,,aut.st.;X03\r\n' + + '3;;16:00;;Sokolov,,sídl.Michal škola;X04\r\n' + + '4;;16:08;;Sokolov,,Závodu míru;X02\r\n' + + '3;;16:14;;Sokolov,,Závodu míru;X02\r\n' + + '33;;16:16;;Sokolov,,sídl.Michal škola;X02\r\n' + + '1;;16:21;;Březová,,aut.st.;X02\r\n' + + '3;;16:28;;Sokolov,,Závodu míru;X03\r\n' + + '7;;16:29;;Březová,,aut.st.;X02\r\n' + + '3;;16:37;;Sokolov,,Závodu míru;X02\r\n' + + '6;;16:44;;Sokolov,,sídl.Michal škola;X04\r\n' + + '3;;16:48;;Sokolov,,Závodu míru;X02\r\n' + + '3;;16:50;;Sokolov,,Závodu míru;X03\r\n' + + '4;;16:51;;Sokolov,,Závodu míru;X04\r\n' + + '1;;16:57;;Březová,,aut.st.;X03\r\n' + + '7;;16:59;;Březová,,aut.st.;X02\r\n' + + '3;;17:12;;Sokolov,Stará ovčárna;X02\r\n' + + '3;;17:17;;Sokolov,,Závodu míru;X03\r\n' + + '3;;17:18;;Sokolov,,Závodu míru;X02\r\n' + + '3;;17:34;;Sokolov,,Závodu míru;X02\r\n' + + '1;;17:38;;Březová,,aut.st.;X02\r\n' + + '3;;17:51;;Sokolov,,Závodu míru;X03\r\n' + + '3;;17:57;;Sokolov,,Závodu míru;X02\r\n' + + '3;;18:14;;Sokolov,,Závodu míru;X02\r\n' + + '3;;18:21;;Sokolov,,Závodu míru;X02\r\n' + + '3;;18:21;;Sokolov,Stará ovčárna;X03\r\n' + + '1;;18:24;;Březová,,aut.st.;X03\r\n' + + '1;;18:26;;Březová,,aut.st.;X02\r\n' + + '3;;18:34;;Sokolov,,Závodu míru;X02\r\n' + + '3;;18:51;;Sokolov,,Závodu míru;X03\r\n' + + '3;;18:54;;Sokolov,,Závodu míru;X02\r\n' + + '1;;19:08;;Březová,,aut.st.;X02\r\n' + + '3;;19:14;;Sokolov,,Závodu míru;X03\r\n' + + '3;;19:19;;Sokolov,,Závodu míru;X02\r\n' + + '3;;19:34;;Sokolov,,Závodu míru;X02\r\n' + + '1;;19:53;;Březová,,aut.st.;X02\r\n' + + '3;;19:54;;Sokolov,,Závodu míru;X03\r\n' + + '3;;19:56;;Sokolov,,Závodu míru;X02\r\n' + + '1;;19:57;;Březová,,aut.st.;X03\r\n' + + '3;;20:19;;Sokolov,,Závodu míru;X02\r\n' + + '1;;20:28;;Březová,,aut.st.;X03\r\n' + + '3;;20:49;;Sokolov,,Závodu míru;X01\r\n' + + '1;;20:55;;Březová,,aut.st.;X02\r\n' + + '3;;21:09;;Sokolov,,Závodu míru;X02\r\n' + + '1;;21:23;;Březová,,aut.st.;X03\r\n' + + '3;;21:24;;Sokolov,Stará ovčárna;X02\r\n' + + '3;;21:27;;Sokolov,,Závodu míru;X03\r\n' + + '1;;21:38;;Březová,,aut.st.;X02\r\n' + + '3;;22:05;;Sokolov,,Závodu míru;X03\r\n' + + '3;;22:12;;Sokolov,Stará ovčárna;X02\r\n' + + '1;;22:28;;Březová,,aut.st.;X02\r\n' + + '3;;22:41;;Sokolov,,Závodu míru;X02\r\n', + origin: undefined, + headers: { + 'content-type': 'application/octet-stream', + 'last-modified': 'Mon, 05 May 2025 06:17:00 GMT', + 'accept-ranges': 'bytes', + etag: '"056854f85bddb1:0"', + date: 'Tue, 27 May 2025 08:03:15 GMT', + connection: 'close', + 'content-length': '7779', + 'set-cookie': [ + 'TS01a3e872=013429363de6e56879fa8c0bcc9065ad2fef2ca60e8eea9a5cc44bd80858a4f8586e2d59ae6d8cf9c6126d3b4d2d9738c850914be7; Path=/; Domain=.bezpecne.sokolov.cz;' + ], + 'strict-transport-security': 'max-age=31536000; includeSubdomains; preload', + 'content-security-policy': 'block-all-mixed-content; upgrade-insecure-requests', + 'referrer-policy': 'no-referrer-when-downgrade', + 'permissions-policy': 'accelerometer=(), camera=(), geolocation=(), gyroscope=(), magnetometer=(), microphone=(), midi=()', + 'x-frame-options': 'SAMEORIGIN', + 'x-xss-protection': '1; mode=block', + 'access-control-allow-origin': '*' + }, + status: 200, + host: 'bezpecne.sokolov.cz', + cookies: undefined + } + + + + const departures1 = [ + [3, "4:09", "Sokolov, Závodu míru", "X01"], + [3, "4:24", "Sokolov, Závodu míru", "X02"], + [1, "4:50", "Březová, aut.st.", "X02"], + [3, "4:52", "Sokolov, Závodu míru", "X02"], + [3, "4:56", "Sokolov, Závodu míru", "X03"], + [3, "5:02", "Sokolov, Závodu míru", "X02"], + [4, "5:05", "Sokolov, Závodu míru", "X02"], + [6, "5:07", "Sokolov, sídl.Michal škola", "X04"], + [6, "5:07", "Sokolov, Závodu míru", "X05"], + [3, "5:09", "Sokolov, Závodu míru", "X04"], + [3, "5:22", "Sokolov, Závodu míru", "X02"], + [1, "5:23", "Březová, aut.st.", "X02"], + [3, "5:31", "Sokolov, sídl.Michal škola", "X04"], + [6, "5:34", "Sokolov, sídl.Michal škola", "X04"], + [4, "5:37", "Sokolov,Stará ovčárna", "X02"], + [3, "5:40", "Sokolov, sídl.Michal", "X05"], + [1, "5:47", "Březová, aut.st.", "X03"], + [1, "5:51", "Březová, aut.st.", "X02"], + [3, "5:57", "Sokolov, Závodu míru", "X03"], + [6, "5:59", "Sokolov, sídl.Michal škola", "X04"], + [3, "6:00", "Sokolov, Závodu míru", "X02"], + [1, "6:13", "Březová, aut.st.", "X02"], + [3, "6:16", "Sokolov, Závodu míru", "X04"], + [3, "6:19", "Sokolov, Závodu míru", "X05"], + [3, "6:24", "Sokolov, sídl.Michal", "X02"], + [3, "6:24", "Sokolov, Závodu míru", "X03"], + [6, "6:27", "Sokolov, sídl.Michal škola", "X05"], + [6, "6:29", "Sokolov, sídl.Michal škola", "X04"], + [4, "6:31", "Sokolov, Závodu míru", "X04"], + [3, "6:39", "Sokolov, Závodu míru", "X02"], + [1, "6:46", "Březová, aut.st.", "X02"], + [33, "6:49", "Sokolov, sídl.Michal škola", "X04"], + [3, "6:56", "Sokolov,Hrušková", "X04"], + [3, "6:56", "Sokolov, Závodu míru", "X06"], + [3, "6:59", "Sokolov, Závodu míru", "X02"], + [1, "7:01", "Březová, aut.st.", "X03"], + [1, "7:05", "Březová, aut.st.", "X02"], + [3, "7:19", "Sokolov, Závodu míru", "X01"], + [6, "7:23", "Sokolov, sídl.Michal škola", "X04"], + [3, "7:27", "Sokolov, sídl.Michal", "X05"], + [2, "7:31", "Sokolov, sídl.Michal", "X04"], + [3, "7:34", "Sokolov, Závodu míru", "X04"], + [4, "7:34", "Sokolov, Závodu míru", "X02"], + [1, "7:35", "Březová, aut.st.", "X02"], + [3, "7:45", "Sokolov, sídl.Michal", "X02"], + [3, "7:51", "Sokolov, Závodu míru", "X03"], + [1, "7:55", "Březová, aut.st.", "X02"], + [1, "7:57", "Březová, aut.st.", "X03"], + [3, "7:58", "Sokolov, Závodu míru", "X04"], + // and so on + ]; + + + +} diff --git a/flow/gettemperature.js b/flow/gettemperature.js new file mode 100644 index 0000000..4075374 --- /dev/null +++ b/flow/gettemperature.js @@ -0,0 +1,68 @@ +exports.id = 'gettemperature'; +exports.title = 'Get RVO temperature'; +exports.group = 'Worksys'; +exports.color = '#5CB36D'; +exports.version = '1.0.2'; +exports.output = ["red", "white"]; +exports.author = 'Rastislav Kovac'; +exports.icon = 'thermometer-three-quarters'; + +exports.readme = `# Getting temperature values from RVO`; + + +exports.install = function(instance) { + + const { exec } = require('child_process'); + let startRead; + let dataToTb; + let counter; + + + instance.on("close", function(){ + clearInterval(startRead); + }) + + + const start = function(){ + //console.log("start function called"); + exec("owread -C 28.427B45920702/temperature", (error, stdout, stderr) => { + parseData(stdout); + //instance.send({"Temp":stdout,"stderr":stderr,"err":error}); + }); + } + + + const parseData = function(data) { + data = parseFloat(data); + + if (!isNaN(data)){ + + if ( counter > 290 ) { + instance.send(0, "[Get temperature component] - temperature data are comming again from RVO after more than 1 day break"); + } + + dataToTb = { + "KjbN4q7JPZmexgdnz2yKQ98YAWwO0Q3BMX6ERLoV": [ + { + "ts": Date.now(), + "values": { + "temperature": data.toFixed(2) + } + } + ] + } + + instance.send(1, dataToTb); + counter = 0; + + } else { + counter++; + if ( counter > 288 && counter < 290 ) { + instance.send(0, "[Get temperature component] - no temperature data from RVO for more than 1 day"); + } + } + } + + start(); + startRead = setInterval(start, 300000); +}; \ No newline at end of file diff --git a/flow/handledepartures.js b/flow/handledepartures.js new file mode 100644 index 0000000..0019491 --- /dev/null +++ b/flow/handledepartures.js @@ -0,0 +1,1261 @@ +exports.id = 'handledepartures'; +exports.title = 'Handle departures'; +exports.group = 'Worksys'; +exports.color = '#5D9CEC'; +exports.version = '0.0.1'; +exports.output = ['white']; +exports.input = 2; +exports.author = 'Rastislav Kovac'; +exports.icon = 'cloud-upload'; + +exports.readme = `Handle bus departures responses from service-prod01.worksys.io`; + +const { execSync } = require('child_process'); +const fs = require('fs'); + + +/** +* Calculates Easter in the Gregorian/Western (Catholic and Protestant) calendar +* based on the algorithm by Oudin (1940) from http://www.tondering.dk/claus/cal/easter.php +* @returns {array} [int month, int day] +*/ +function getEaster(year) { + var f = Math.floor, + // Golden Number - 1 + G = year % 19, + C = f(year / 100), + // related to Epact + H = (C - f(C / 4) - f((8 * C + 13) / 25) + 19 * G + 15) % 30, + // number of days from 21 March to the Paschal full moon + I = H - f(H / 28) * (1 - f(29 / (H + 1)) * f((21 - G) / 11)), + // weekday for the Paschal full moon + J = (year + f(year / 4) + I + 2 - C + f(C / 4)) % 7, + // number of days from 21 March to the Sunday on or before the Paschal full moon + L = I - J, + month = 3 + f((L + 40) / 44), + day = L + 28 - 31 * f(month / 4); + + return [month, day]; +} + +const pracovneDni = ['Pondeli', 'Uteri', 'Streda', 'Ctvrtek', 'Patek']; + +const statneSviatky = [ + '1.1', + '7.4', //velky piatok + '10.4', // Veľkonočný pondelok - deň pracovného pokoja + '1.5', '8.5', '5.7', '6.7', '28.9', '28.10', '17.11', '24.12', '25.12', '26.12' +]; + +const v32_42 = [ + '23.12', '24.12', '25.12', '26.12', '27.12', '28.12', '29.12', '30.12', '31.12', + '1.1', '2.1', '6.2', '7.2', '8.2', '9.2', '10.2', '11.2', '12.2', '6.4', '1.9' +]; + + +exports.install = function(instance) { + + let departures = []; + let firstDepartureTime = "00:00"; + + instance.on('0', function(flowdata) { + + firstDepartureTime = "00:00"; + departures = flowdata.data; + //console.log("^^^^^^^^^^^^", departures); + return; + const dnesnyDatum = flowdata.data; // ['22.12', 'streda'] + console.log('++++++++++ densnyDatum', dnesnyDatum) + + let vysvetlivky = new Set(); + + if (statneSviatky.includes(dnesnyDatum[0])) { + vysvetlivky.add('6+'); + if (dnesnyDatum[0] == '17.11') { + vysvetlivky.add('17'); // ide iba 17.11, vysvetlivky = ['6+', '17'] + } + else if (dnesnyDatum[0] == '25.12' || dnesnyDatum[0] == '1.1') { + vysvetlivky.add('25'); // nejede 25.12.2022,1.1.2023,25.12.2023 ['6+', '25'] + } + else if (dnesnyDatum[0] == '31.12') { + vysvetlivky.add('31'); // nejede 31.12 ['6+', '31'] + } + else if (dnesnyDatum[0] == '24.12') { + vysvetlivky.add('24'); // nejede 24.12 ['6+', '24'] + } + } + else if (pracovneDni.includes(dnesnyDatum[1])) { + vysvetlivky.add('X'); + } + else if (dnesnyDatum[1] == 'Sobota' || dnesnyDatum[1] === 'Nedele') { + vysvetlivky.add('6+') + } + + const d = new Date(); + const month = d.getMonth(); + + if (v32_42.includes(dnesnyDatum[0])) { + vysvetlivky.add('32'); + vysvetlivky.add('42'); + } + else if (month == 6 || month == 7) //ked je mesiac jul august + { + vysvetlivky.add('32'); + vysvetlivky.add('42'); + vysvetlivky.add('33'); + } + + console.log('', vysvetlivky); + + // X jede v pracovních dnech + // 6 jede v sobotu + // + jede v neděli a ve státem uznané svátky + // 17 jede jen 17.11.2023 + // 32 jede od 23.12.2022 do 2.1.2023,3.2.2023, od 6.2.2023 do 12.2.2023,6.4.2023, od 1.7.2023 do 1.9.2023, od 26.10.2023 do 27.10.2023, od 23.12.2023 do 31.12.2023 + // 42 nejede od 23.12.2022 do 2.1.2023,3.2.2023, od 6.2.2023 do 12.2.2023,6.4.2023, od 1.7.2023 do 1.9.2023, od 26.10.2023 do 27.10.2023, od 23.12.2023 do 31.12.2023 + // 24 nejede 24.12.2022,24.12.2023 + // 31 nejede 31.12.2022,31.12.2023 + // 25 nejede 25.12.2022,1.1.2023,25.12.2023 + // 33 jede od 1.7.2023 do 1.9.2023 + + departures = []; + + for (let i = 0; i < allDepartures.length; i++) { + departure = allDepartures[i]; + const params = departure[3].length; + + if (params == 1) { + v = departure[3][0] + if (v == 'X' && vysvetlivky.has('X')) departures.push(departure); + else if (v == '6+' && vysvetlivky.has('6+')) departures.push(departure); + else if (v == '25' && vysvetlivky.has('25')) continue; + else if (v == '17' && vysvetlivky.has('17')) departures.push(departure); + else if (v == '24' && vysvetlivky.has('24')) continue; + } + else if (params == 2) { + v1 = departure[3][0]; + v2 = departure[3][1]; + + if (v1 == "X" && vysvetlivky.has('X')) { + if (v2 == "42" && vysvetlivky.has('42')) continue; + if (v2 == "42" && !vysvetlivky.has('42')) departures.push(departure); + if (v2 == "32" && vysvetlivky.has('32')) departures.push(departure); + if (v2 == "32" && !vysvetlivky.has('32')) departures.push(departure); + if (v2 == "31" && vysvetlivky.has('31')) continue; + if (v2 == "31" && !vysvetlivky.has('31')) departures.push(departure); + } + else if (v1 == "6+" && vysvetlivky.has('6+')) { + if (v2 == "25" && vysvetlivky.has('25')) continue; + if (v2 == "24" && vysvetlivky.has('24')) continue; + if (v2 == "25" && !vysvetlivky.has('25')) departures.push(departure); + if (v2 == "24" && !vysvetlivky.has('24')) departures.push(departure); + if (v2 == "33" && vysvetlivky.has('33')) departures.push(departure); + } + } + } + + console.log(departures); + fs.writeFileSync('dayDepartures.txt', JSON.stringify(dnesnyDatum) + '\n', { flag: "a" }); + departures.map(departure => { + fs.writeFileSync('dayDepartures.txt', JSON.stringify(departure) + '\n', { flag: "a" }); + + }) + fs.writeFileSync('dayDepartures.txt', "\n", { flag: "a" }); + }) + + + instance.on('1', function(flowdata) { + + // for some reason new Date() function does not set month and year in local timezone, so we use "timedatectl" command + // let dateFromCommand = execSync("timedatectl", {}).toString(); + + // let first = dateFromCommand.search("time:"); + // let last = dateFromCommand.search(" CE"); + // dateFromCommand = dateFromCommand.slice(first, last); //Thu 2022-04-07 13:38:03 + + // const d = new Date(dateFromCommand); + const d = new Date(); + let hour = d.getHours(); + let minute = d.getMinutes(); + //console.log('******hour, minute', hour, minute) + + if (minute < 10) minute = `0${minute}`; + if (hour < 10) hour = `0${hour}`; + + const now = `${hour}:${minute}`; + + //console.log('******--------', firstDepartureTime, now); + //console.log('******--------', firstDepartureTime < now); + + if (firstDepartureTime < now) { + + departures = departures.filter(departure => { + const timeOfDeparture = departure[1]; + if (now < timeOfDeparture) return true; + return false; + }) + + if (departures.length > 0) firstDepartureTime = departures[0][1]; + else firstDepartureTime = "00:00"; + + instance.send(0, departures.slice(0, 10)); + } + + }) + +} + + + + + + + + + + +// exports.id = 'handledepartures'; +// exports.title = 'Handle departures'; +// exports.group = 'Worksys'; +// exports.color = '#5D9CEC'; +// exports.version = '0.0.1'; +// exports.output = ['white']; +// exports.input = 2; +// exports.author = 'Rastislav Kovac'; +// exports.icon = 'cloud-upload'; + +// exports.readme = `Handle bus departures responses from service-prod01.worksys.io`; + +// const { execSync } = require('child_process'); + +// /** +// * Calculates Easter in the Gregorian/Western (Catholic and Protestant) calendar +// * based on the algorithm by Oudin (1940) from http://www.tondering.dk/claus/cal/easter.php +// * @returns {array} [int month, int day] +// */ +// function getEaster(year) { +// var f = Math.floor, +// // Golden Number - 1 +// G = year % 19, +// C = f(year / 100), +// // related to Epact +// H = (C - f(C / 4) - f((8 * C + 13)/25) + 19 * G + 15) % 30, +// // number of days from 21 March to the Paschal full moon +// I = H - f(H/28) * (1 - f(29/(H + 1)) * f((21-G)/11)), +// // weekday for the Paschal full moon +// J = (year + f(year / 4) + I + 2 - C + f(C / 4)) % 7, +// // number of days from 21 March to the Sunday on or before the Paschal full moon +// L = I - J, +// month = 3 + f((L + 40)/44), +// day = L + 28 - 31 * f(month / 4); + +// return [month,day]; +// } + +// const pracovneDni = ['Pondeli', 'Uteri', 'Streda', 'Ctvrtek', 'Patek']; + +// const statneSviatky = [ +// '1.1', +// '7.4', //velky piatok +// '10.4', // Veľkonočný pondelok - deň pracovného pokoja +// '1.5','8.5','5.7','6.7','28.9','28.10','17.11','24.12','25.12','26.12' +// ]; + +// const v32_42 = [ +// '23.12','24.12','25.12','26.12','27.12','28.12','29.12','30.12','31.12', +// '1.1','2.1','6.2','7.2','8.2','9.2','10.2','11.2','12.2','6.4','1.9' +// ]; + + +// exports.install = function(instance) { + +// let departures = []; +// let departuresToDisplay = []; +// let firstTimeInDisplayedDepartures = "00:00"; + +// instance.on('0', function(flowdata) { + +// firstTimeInDisplayedDepartures = "00:00"; +// const dnesnyDatum = flowdata.data; // ['22.12', 'streda'] +// console.log('++++++++++ densnyDatum', dnesnyDatum) + +// let vysvetlivky = new Set(); + +// const d = new Date(); +// const month = d.getMonth(); + +// if(statneSviatky.includes(dnesnyDatum[0])) +// { +// vysvetlivky.add('6+'); +// if(dnesnyDatum[0] == '17.11') +// { +// vysvetlivky.add('17'); // ide iba 17.11, vysvetlivky = ['6+', '17'] +// } +// else if(dnesnyDatum[0] == '25.12' || dnesnyDatum[0] == '1.1') +// { +// vysvetlivky.add('25'); // nejede 25.12.2022,1.1.2023,25.12.2023 ['6+', '25'] +// } +// else if(dnesnyDatum[0] == '31.12') +// { +// vysvetlivky.add('31'); // nejede 31.12 ['6+', '31'] +// } +// else if(dnesnyDatum[0] == '24.12') +// { +// vysvetlivky.add('24'); // nejede 24.12 ['6+', '24'] +// } +// } +// else if(pracovneDni.includes(dnesnyDatum[1])) +// { +// vysvetlivky.add('X'); +// } +// else if(dnesnyDatum[1] == 'Sobota' || dnesnyDatum[1] === 'Nedele') +// { +// vysvetlivky.add('6+') +// } + + +// if(v32_42.includes(dnesnyDatum[0]) || month == 6 || month == 7) //ked je mesiac jul august +// { +// vysvetlivky.add('32'); +// vysvetlivky.add('42'); +// } + +// console.log('', vysvetlivky); + +// // X jede v pracovních dnech +// // 6 jede v sobotu +// // + jede v neděli a ve státem uznané svátky +// // 17 jede jen 17.11.2023 +// // 32 jede od 23.12.2022 do 2.1.2023,3.2.2023, od 6.2.2023 do 12.2.2023,6.4.2023, od 1.7.2023 do 1.9.2023, od 26.10.2023 do 27.10.2023, od 23.12.2023 do 31.12.2023 +// // 42 nejede od 23.12.2022 do 2.1.2023,3.2.2023, od 6.2.2023 do 12.2.2023,6.4.2023, od 1.7.2023 do 1.9.2023, od 26.10.2023 do 27.10.2023, od 23.12.2023 do 31.12.2023 +// // 24 nejede 24.12.2022,24.12.2023 +// // 31 nejede 31.12.2022,31.12.2023 +// // 25 nejede 25.12.2022,1.1.2023,25.12.2023 + +// departures = []; + +// for(let i = 0; i < allDepartures.length; i++) +// { +// departure = allDepartures[i]; +// const params = departure[3].length; + +// if(params == 1) +// { +// v = departure[3][0] +// if(v == 'X' && vysvetlivky.has('X')) departures.push(departure); +// else if(v == '6+' && vysvetlivky.has('6+')) departures.push(departure); +// else if(v == '25' && vysvetlivky.has('25')) continue; +// else if(v == '17' && vysvetlivky.has('17')) departures.push(departure); +// else if(v == '24' && vysvetlivky.has('24')) continue; +// } +// else if(params == 2) +// { +// v1 = departure[3][0]; +// v2 = departure[3][1]; + +// if(v1 == "X" && vysvetlivky.has('X')) +// { +// if(v2 == "42" && vysvetlivky.has('42')) continue; +// if(v2 == "42" && !vysvetlivky.has('42')) departures.push(departure); +// if(v2 == "32" && vysvetlivky.has('32')) departures.push(departure); +// if(v2 == "32" && !vysvetlivky.has('32')) departures.push(departure); +// if(v2 == "31" && vysvetlivky.has('31')) continue; +// if(v2 == "31" && !vysvetlivky.has('31')) departures.push(departure); +// } +// else if(v1 == "6+" && vysvetlivky.has('6+')) +// { +// if(v2 == "25" && vysvetlivky.has('25')) continue; +// if(v2 == "24" && vysvetlivky.has('24')) continue; +// if(v2 == "25" && !vysvetlivky.has('25')) departures.push(departure);; +// if(v2 == "24" && !vysvetlivky.has('24')) departures.push(departure);; +// } +// } +// } + + +// console.log(departures); +// departuresToDisplay = [...departures]; // to make sure, "departuresToDisplay" is not an empty array after script start + +// }) + + +// instance.on('1', function(flowdata) { + +// // for some reason new Date() function does not set month and year in local timezone, so we use "timedatectl" command +// let dateFromCommand = execSync("timedatectl", {}).toString(); + +// let first = dateFromCommand.search("time:"); +// let last = dateFromCommand.search(" CE"); +// dateFromCommand = dateFromCommand.slice(first, last); //Thu 2022-04-07 13:38:03 + +// const d = new Date(dateFromCommand); +// let hour = d.getHours(); +// let minute = d.getMinutes(); +// console.log('******hour, minute',hour, minute) + +// if(minute < 10) minute = `0${minute}`; +// if(hour < 10) hour = `0${hour}`; + +// const now = `${hour}:${minute}`; + +// console.log('******--------', firstTimeInDisplayedDepartures, now); +// console.log('******--------', firstTimeInDisplayedDepartures < now); +// console.log('******-------- if', firstTimeInDisplayedDepartures < now && departuresToDisplay.length > 0); + +// if(firstTimeInDisplayedDepartures < now && departuresToDisplay.length > 0) +// { + +// //after all buses have departed, "departuresToDisplay" will stay an empty array till the next day +// //so we do not have to repeat iteration through "departures" every minute +// departuresToDisplay = []; + +// departures.map(departure => { +// const timeOfDep = departure[1]; +// if(now < timeOfDep && departuresToDisplay.length < 10) +// { +// departuresToDisplay.push(departure); +// } +// }) + +// if(departuresToDisplay.length > 0) firstTimeInDisplayedDepartures = departuresToDisplay[0][1]; + +// console.log(departuresToDisplay); +// instance.send(0, departuresToDisplay); +// } + +// }) + +// } + + +const allDepartures = [ + ["3", "04:09", "Závodu míru", ["X", "25"]], + ["3", "04:29", "Závodu míru", ["X"]], + ["1", "04:50", "Březová, aut. st.", ["X"]], + ["3", "04:52", "Závodu míru", ["X"]], + ["3", "04:56", "Závodu míru", ["6+", "25"]], + ["3", "05:02", "Závodu míru", ["X"]], + ["4", "05:05", "Závodu míru", ["X"]], + ["6", "05:07", "Sídl. Michal škola", ["X", "42"]], + ["6", "05:07", "Závodu míru", ["X", "32"]], + ["3", "05:09", "Závodu míru", ["X", "42"]], + ["3", "05:22", "Závodu míru", ["X"]], + ["1", "05:23", "Březová, aut. st.", ["X"]], + ["6", "05:34", "Sídl. Michal škola", ["X", "42"]], + ["4", "05:35", "Stará Ovčárna", ["X"]], + ["3", "05:36", "Sídl. Michal škola", ["X", "42"]], + ["3", "05:38", "Sídliště Michal", ["X", "32"]], + ["1", "05:47", "Březová, aut. st.", ["6+", "25"]], + ["1", "05:51", "Březová, aut. st.", ["X"]], + ["3", "05:57", "Závodu míru", ["6+", "25"]], + ["3", "05:58", "Závodu míru", ["X"]], + ["6", "06:04", "Sídl. Michal škola", ["X", "42"]], + ["1", "06:13", "Březová, aut. st.", ["X"]], + ["3", "06:16", "Závodu míru", ["X", "42"]], + ["3", "06:19", "Závodu míru", ["X", "32"]], + ["3", "06:24", "Sídliště Michal", ["X"]], + ["3", "06:24", "Závodu míru", ["6+", "25"]], + ["4", "06:31", "Závodu míru", ["X", "42"]], + ["6", "06:32", "Sídl. Michal škola", ["X", "32"]], + ["3", "06:34", "Závodu míru", ["X"]], + ["6", "06:34", "Sídl. Michal škola", ["X", "42"]], + ["1", "06:46", "Březová, aut. st.", ["X"]], + ["33", "06:49", "Sídl. Michal škola", ["X", "42"]], + ["3", "06:56", "Závodu míru", ["X", "32"]], + ["3", "06:56", "Závodu míru", ["X", "42"]], + ["3", "06:56", "Závodu míru", ["6+"]], + ["1", "06:57", "Březová, aut. st.", ["6+", "25"]], + ["3", "07:04", "Závodu míru", ["X"]], + ["1", "07:05", "Březová, aut. st.", ["X"]], + ["3", "07:14", "Závodu míru", ["X"]], + ["3", "07:19", "Závodu míru", ["6+"]], + ["6", "07:23", "Sídl. Michal škola", ["X", "42"]], + ["33", "07:27", "Sídl. Michal škola", ["17"]], + ["3", "07:27", "Sídliště Michal", ["X", "32"]], + ["3", "07:27", "Sídl. Michal škola", ["17"]], + ["2", "07:31", "Sídliště Michal", ["X", "42"]], + ["3", "07:34", "Závodu míru", ["X", "42"]], + ["4", "07:34", "Závodu míru", ["X"]], + ["1", "07:35", "Březová, aut. st.", ["X"]], + ["3", "07:45", "Sídliště Michal", ["X"]], + ["3", "07:51", "Závodu míru", ["6+"]], + ["33", "07:54", "Sídl. Michal škola", ["X", "42"]], + ["3", "07:54", "Závodu míru", ["17"]], + ["1", "07:55", "Březová, aut. st.", ["X"]], + ["1", "07:57", "Březová, aut. st.", ["6+"]], + ["3", "07:58", "Závodu míru", ["X", "42"]], + ["3", "08:10", "Závodu míru", ["X", "32"]], + ["3", "08:15", "Závodu míru", ["X", "42"]], + ["3", "08:15", "Závodu míru", ["6+"]], + ["1", "08:18", "Březová, aut. st.", ["X"]], + ["33", "08:29", "Sídl. Michal škola", ["X"]], + ["3", "08:34", "Závodu míru", ["X"]], + ["3", "08:50", "Stará Ovčárna", ["X"]], + ["3", "08:51", "Závodu míru", ["6+"]], + ["33", "08:54", "Sídl. Michal škola", ["X"]], + ["1", "08:57", "Březová, aut. st.", ["6+"]], + ["3", "09:04", "Závodu míru", ["X"]], + ["1", "09:09", "Březová, aut. st.", ["X"]], + ["3", "09:20", "Závodu míru", ["6+"]], + ["3", "09:24", "Závodu míru", ["X"]], + ["33", "09:34", "Sídl. Michal škola", ["X"]], + ["3", "09:38", "Jezero Michal", ["6+", "33"]], + ["4", "09:41", "Sídliště Michal", ["X"]], + ["1", "09:44", "Březová, aut. st.", ["6+"]], + ["3", "09:45", "Závodu míru", ["X"]], + ["3", "09:51", "Závodu míru", ["6+"]], + ["1", "09:58", "Březová, aut. st.", ["X"]], + ["3", "09:59", "Jezero Michal", ["X"]], + ["7", "10:14", "Březová, aut.st.", ["X"]], + ["3", "10:19", "Závodu míru", ["6+"]], + ["33", "10:24", "Sídl. Michal škola", ["X"]], + ["3", "10:40", "Závodu míru", ["X"]], + ["3", "10:43", "Jezero Michal", ["6+", "33"]], + ["1", "10:55", "Březová, aut. st.", ["X"]], + ["3", "10:55", "Závodu míru", ["X"]], + ["1", "10:57", "Březová, aut. st.", ["6+"]], + ["3", "11:02", "Závodu míru", ["6+"]], + ["3", "11:17", "Závodu míru", ["X"]], + ["33", "11:29", "Sídl. Michal škola", ["X"]], + ["3", "11:29", "Závodu míru", ["6+"]], + ["3", "11:44", "Závodu míru", ["X"]], + ["1", "11:46", "Březová, aut. st.", ["X"]], + ["1", "11:49", "Březová, aut. st.", ["6+"]], + ["3", "11:51", "Závodu míru", ["6+"]], + ["33", "11:56", "Sídl. Michal škola", ["X"]], + ["3", "12:05", "Závodu míru", ["X"]], + ["3", "12:19", "Závodu míru", ["6+"]], + ["3", "12:24", "Jezero Michal", ["X"]], + ["1", "12:33", "Březová, aut. st.", ["X"]], + ["3", "12:38", "Jezero Michal", ["6+", "33"]], + ["3", "12:44", "Závodu míru", ["X"]], + ["3", "12:51", "Závodu míru", ["6+"]], + ["1", "12:57", "Březová, aut. st.", ["6+"]], + ["3", "12:59", "Závodu míru", ["X"]], + ["6", "12:59", "Sídl. Michal škola", ["X", "42"]], + ["33", "13:04", "Sídl. Michal škola", ["X"]], + ["1", "13:06", "Březová, aut. st.", ["X"]], + ["3", "13:15", "Závodu míru", ["X"]], + ["2", "13:17", "Sídliště Michal", ["X"]], + ["1", "13:22", "Březová, aut. st.", ["X"]], + ["3", "13:24", "Stará Ovčárna", ["X"]], + ["3", "13:28", "Závodu míru", ["6+"]], + ["33", "13:39", "Sídl. Michal škola", ["X"]], + ["1", "13:48", "Březová, aut. st.", ["X"]], + ["3", "13:51", "Závodu míru", ["6+"]], + ["1", "13:57", "Březová, aut. st.", ["6+"]], + ["33", "14:04", "Sídl. Michal škola", ["X"]], + ["6", "14:04", "Sídl. Michal škola", ["X"]], + ["4", "14:06", "Stará Ovčárna", ["X"]], + ["3", "14:09", "Závodu míru", ["X"]], + ["1", "14:10", "Březová, aut. st.", ["X"]], + ["3", "14:19", "Závodu míru", ["6+"]], + ["3", "14:21", "Závodu míru", ["X"]], + ["1", "14:34", "Březová, aut. st.", ["X"]], + ["6", "14:34", "Sídl. Michal škola", ["X"]], + ["4", "14:42", "Závodu míru", ["X"]], + ["3", "14:43", "Závodu míru", ["X"]], + ["33", "14:46", "Sídl. Michal škola", ["X"]], + ["1", "14:49", "Březová, aut. st.", ["6+"]], + ["3", "14:51", "Závodu míru", ["6+"]], + ["3", "14:52", "Závodu míru", ["X"]], + ["1", "15:09", "Březová, aut. st.", ["X"]], + ["33", "15:09", "Sídl. Michal škola", ["X"]], + ["3", "15:13", "Závodu míru", ["X"]], + ["6", "15:14", "Sídl. Michal škola", ["X"]], + ["3", "15:19", "Závodu míru", ["6+"]], + ["3", "15:23", "Sokolov, Hrušková", ["X", "42"]], + ["3", "15:30", "Závodu míru", ["X"]], + ["1", "15:31", "Březová, aut. st.", ["X"]], + ["3", "15:38", "Jezero Michal", ["6+", "33"]], + ["33", "15:39", "Sídl. Michal škola", ["X"]], + ["3", "15:39", "Jezero Michal", ["X"]], + ["3", "15:51", "Závodu míru", ["6+"]], + ["7", "15:54", "Březová, aut.st.", ["X"]], + ["1", "15:57", "Březová, aut. st.", ["6+"]], + ["3", "16:00", "Sídl. Michal škola", ["X", "42"]], + ["4", "16:06", "Závodu míru", ["X"]], + ["33", "16:14", "Sídl. Michal škola", ["X"]], + ["3", "16:14", "Závodu míru", ["X"]], + ["1", "16:21", "Březová, aut. st.", ["X"]], + ["3", "16:28", "Závodu míru", ["6+"]], + ["7", "16:29", "Březová, aut.st.", ["X"]], + ["3", "16:35", "Závodu míru", ["X"]], + ["6", "16:44", "Sídl. Michal škola", ["X", "42"]], + ["3", "16:48", "Závodu míru", ["X"]], + ["4", "16:51", "Závodu míru", ["X", "42"]], + ["3", "16:53", "Závodu míru", ["6+"]], + ["1", "16:57", "Březová, aut. st.", ["6+"]], + ["7", "16:59", "Březová, aut.st.", ["X"]], + ["3", "17:09", "Jezero Michal", ["X"]], + ["3", "17:14", "Závodu míru", ["6+"]], + ["3", "17:18", "Závodu míru", ["X"]], + ["3", "17:34", "Závodu míru", ["X"]], + ["1", "17:38", "Březová, aut. st.", ["X"]], + ["3", "17:38", "Jezero Michal", ["6+", "33"]], + ["3", "17:51", "Závodu míru", ["6+"]], + ["3", "17:57", "Závodu míru", ["X"]], + ["3", "18:14", "Závodu míru", ["X"]], + ["3", "18:21", "Závodu míru", ["X"]], + ["3", "18:21", "Stará Ovčárna", ["6+"]], + ["1", "18:24", "Březová, aut. st.", ["6+"]], + ["1", "18:26", "Březová, aut. st.", ["X"]], + ["3", "18:34", "Závodu míru", ["X"]], + ["3", "18:51", "Závodu míru", ["6+"]], + ["3", "18:54", "Závodu míru", ["X"]], + ["1", "19:08", "Březová, aut. st.", ["X"]], + ["3", "19:14", "Závodu míru", ["6+", "24"]], + ["3", "19:19", "Závodu míru", ["X", "31"]], + ["3", "19:34", "Závodu míru", ["X", "31"]], + ["1", "19:53", "Březová, aut. st.", ["X", "31"]], + ["3", "19:54", "Závodu míru", ["X", "31"]], + ["3", "19:54", "Závodu míru", ["6+", "24"]], + ["1", "19:57", "Březová, aut. st.", ["6+", "24"]], + ["3", "20:19", "Závodu míru", ["X", "31"]], + ["1", "20:28", "Březová, aut. st.", ["6+", "24"]], + ["3", "20:49", "Závodu míru", ["X", "31"]], + ["3", "20:49", "Závodu míru", ["6+", "24"]], + ["1", "20:55", "Březová, aut. st.", ["X", "31"]], + ["3", "21:09", "Závodu míru", ["X", "31"]], + ["1", "21:23", "Březová, aut. st.", ["6+", "24"]], + ["3", "21:24", "Stará Ovčárna", ["X", "31"]], + ["3", "21:24", "Závodu míru", ["6+", "24"]], + ["1", "21:38", "Březová, aut. st.", ["X", "31"]], + ["3", "22:04", "Závodu míru", ["6+", "24"]], + ["3", "22:12", "Stará Ovčárna", ["X", "31"]], + ["1", "22:28", "Březová, aut. st.", ["X", "31"]], + ["3", "22:41", "Závodu míru", ["X", "31"]], +]; + +const allDepartures_24_5_2023 = [ + ["3", "04:09", "Závodu míru", ["25"]], + ["3", "04:29", "Závodu míru", ["X"]], + ["1", "04:50", "Březová, aut. st.", ["X"]], + ["3", "04:52", "Závodu míru", ["X"]], + ["3", "04:56", "Závodu míru", ["6+", "25"]], + ["3", "05:02", "Závodu míru", ["X"]], + ["4", "05:05", "Závodu míru", ["X"]], + ["6", "05:07", "Sídl. Michal škola", ["X", "42"]], + ["6", "05:07", "Závodu míru", ["X", "32"]], + ["3", "05:09", "Závodu míru", ["X", "42"]], + ["3", "05:22", "Závodu míru", ["X"]], + ["1", "05:23", "Březová, aut. st.", ["X"]], + ["6", "05:34", "Sídl. Michal škola", ["X", "42"]], + ["4", "05:35", "Stará Ovčárna", ["X"]], + ["3", "05:36", "Sídl. Michal škola", ["X", "42"]], + ["3", "05:38", "Sídliště Michal", ["X", "32"]], + ["1", "05:47", "Březová, aut. st.", ["6+", "25"]], + ["1", "05:51", "Březová, aut. st.", ["X"]], + ["3", "05:57", "Závodu míru", ["6+", "25"]], + ["3", "05:58", "Závodu míru", ["X"]], + ["6", "06:04", "Sídl. Michal škola", ["X", "42"]], + ["1", "06:13", "Březová, aut. st.", ["X"]], + ["3", "06:16", "Závodu míru", ["X", "42"]], + ["3", "06:19", "Závodu míru", ["X", "32"]], + ["3", "06:24", "Sídliště Michal", ["X"]], + ["3", "06:24", "Závodu míru", ["6+", "25"]], + ["4", "06:31", "Závodu míru", ["X", "42"]], + ["6", "06:32", "Sídl. Michal škola", ["X", "32"]], + ["3", "06:34", "Závodu míru", ["X"]], + ["6", "06:34", "Sídl. Michal škola", ["X", "42"]], + ["1", "06:46", "Březová, aut. st.", ["X"]], + ["33", "06:49", "Sídl. Michal škola", ["X", "42"]], + ["3", "06:56", "Závodu míru", ["X", "32"]], + ["3", "06:56", "Závodu míru", ["X", "42"]], + ["3", "06:56", "Závodu míru", ["6+"]], + ["1", "06:57", "Březová, aut. st.", ["6+", "25"]], + ["3", "07:04", "Závodu míru", ["X"]], + ["1", "07:05", "Březová, aut. st.", ["X"]], + ["3", "07:14", "Závodu míru", ["X"]], + ["3", "07:19", "Závodu míru", ["6+"]], + ["6", "07:23", "Sídl. Michal škola", ["X", "42"]], + ["33", "07:27", "Sídl. Michal škola", ["17"]], + ["3", "07:27", "Sídliště Michal", ["X", "32"]], + ["2", "07:31", "Sídliště Michal", ["X", "42"]], + ["3", "07:34", "Závodu míru", ["X", "42"]], + ["4", "07:34", "Závodu míru", ["X"]], + ["1", "07:35", "Březová, aut. st.", ["X"]], + ["3", "07:45", "Sídliště Michal", ["X"]], + ["3", "07:51", "Závodu míru", ["6+"]], + ["33", "07:54", "Sídl. Michal škola", ["X", "42"]], + ["3", "07:54", "Závodu míru", ["17"]], + ["1", "07:55", "Březová, aut. st.", ["X"]], + ["1", "07:57", "Březová, aut. st.", ["6+"]], + ["3", "07:58", "Závodu míru", ["X", "42"]], + ["3", "08:10", "Závodu míru", ["X", "32"]], + ["3", "08:15", "Závodu míru", ["X", "42"]], + ["3", "08:15", "Závodu míru", ["6+"]], + ["1", "08:18", "Březová, aut. st.", ["X"]], + ["33", "08:29", "Sídl. Michal škola", ["X"]], + ["3", "08:34", "Závodu míru", ["X"]], + ["3", "08:50", "Stará Ovčárna", ["X"]], + ["3", "08:51", "Závodu míru", ["6+"]], + ["33", "08:54", "Sídl. Michal škola", ["X"]], + ["1", "08:57", "Březová, aut. st.", ["6+"]], + ["3", "09:04", "Závodu míru", ["X"]], + ["1", "09:09", "Březová, aut. st.", ["X"]], + ["3", "09:20", "Závodu míru", ["6+"]], + ["3", "09:24", "Závodu míru", ["X"]], + ["33", "09:34", "Sídl. Michal škola", ["X"]], + ["4", "09:41", "Sídliště Michal", ["X"]], + ["1", "09:44", "Březová, aut. st.", ["6+"]], + ["3", "09:45", "Závodu míru", ["X"]], + ["3", "09:51", "Závodu míru", ["6+"]], + ["1", "09:58", "Březová, aut. st.", ["X"]], + ["3", "09:59", "Jezero Michal", ["X"]], + ["7", "10:14", "Březová, aut.st.", ["X"]], + ["3", "10:19", "Závodu míru", ["6+"]], + ["33", "10:24", "Sídl. Michal škola", ["X"]], + ["3", "10:40", "Závodu míru", ["X"]], + ["1", "10:55", "Březová, aut. st.", ["X"]], + ["3", "10:55", "Závodu míru", ["X"]], + ["1", "10:57", "Březová, aut. st.", ["6+"]], + ["3", "11:02", "Závodu míru", ["6+"]], + ["3", "11:17", "Závodu míru", ["X"]], + ["33", "11:29", "Sídl. Michal škola", ["X"]], + ["3", "11:29", "Závodu míru", ["6+"]], + ["3", "11:44", "Závodu míru", ["X"]], + ["1", "11:46", "Březová, aut. st.", ["X"]], + ["1", "11:49", "Březová, aut. st.", ["6+"]], + ["3", "11:51", "Závodu míru", ["6+"]], + ["33", "11:56", "Sídl. Michal škola", ["X"]], + ["3", "12:05", "Závodu míru", ["X"]], + ["3", "12:19", "Závodu míru", ["6+"]], + ["3", "12:24", "Jezero Michal", ["X"]], + ["1", "12:33", "Březová, aut. st.", ["X"]], + ["3", "12:44", "Závodu míru", ["X"]], + ["3", "12:51", "Závodu míru", ["6+"]], + ["1", "12:57", "Březová, aut. st.", ["6+"]], + ["3", "12:59", "Závodu míru", ["X"]], + ["6", "12:59", "Sídl. Michal škola", ["X", "42"]], + ["33", "13:04", "Sídl. Michal škola", ["X"]], + ["1", "13:06", "Březová, aut. st.", ["X"]], + ["3", "13:15", "Závodu míru", ["X"]], + ["2", "13:17", "Sídliště Michal", ["X"]], + ["1", "13:22", "Březová, aut. st.", ["X"]], + ["3", "13:24", "Stará Ovčárna", ["X"]], + ["3", "13:28", "Závodu míru", ["6+"]], + ["33", "13:39", "Sídl. Michal škola", ["X"]], + ["1", "13:48", "Březová, aut. st.", ["X"]], + ["3", "13:51", "Závodu míru", ["6+"]], + ["1", "13:57", "Březová, aut. st.", ["6+"]], + ["33", "14:04", "Sídl. Michal škola", ["X"]], + ["6", "14:04", "Sídl. Michal škola", ["X"]], + ["4", "14:06", "Stará Ovčárna", ["X"]], + ["3", "14:09", "Závodu míru", ["X"]], + ["1", "14:10", "Březová, aut. st.", ["X"]], + ["3", "14:19", "Závodu míru", ["6+"]], + ["3", "14:21", "Závodu míru", ["X"]], + ["1", "14:34", "Březová, aut. st.", ["X"]], + ["6", "14:34", "Sídl. Michal škola", ["X"]], + ["4", "14:42", "Závodu míru", ["X"]], + ["3", "14:43", "Závodu míru", ["X"]], + ["33", "14:46", "Sídl. Michal škola", ["X"]], + ["1", "14:49", "Březová, aut. st.", ["6+"]], + ["3", "14:51", "Závodu míru", ["6+"]], + ["3", "14:52", "Závodu míru", ["X"]], + ["1", "15:09", "Březová, aut. st.", ["X"]], + ["33", "15:09", "Sídl. Michal škola", ["X"]], + ["3", "15:13", "Závodu míru", ["X"]], + ["6", "15:14", "Sídl. Michal škola", ["X"]], + ["3", "15:19", "Závodu míru", ["6+"]], + ["3", "15:23", "Sokolov, Hrušková", ["X", "42"]], + ["3", "15:30", "Závodu míru", ["X"]], + ["1", "15:31", "Březová, aut. st.", ["X"]], + ["33", "15:39", "Sídl. Michal škola", ["X"]], + ["3", "15:39", "Jezero Michal", ["X"]], + ["3", "15:51", "Závodu míru", ["6+"]], + ["7", "15:54", "Březová, aut.st.", ["X"]], + ["1", "15:57", "Březová, aut. st.", ["6+"]], + ["3", "16:00", "Sídl. Michal škola", ["X", "42"]], + ["4", "16:06", "Závodu míru", ["X"]], + ["33", "16:14", "Sídl. Michal škola", ["X"]], + ["3", "16:14", "Závodu míru", ["X"]], + ["1", "16:21", "Březová, aut. st.", ["X"]], + ["3", "16:28", "Závodu míru", ["6+"]], + ["7", "16:29", "Březová, aut.st.", ["X"]], + ["3", "16:35", "Závodu míru", ["X"]], + ["6", "16:44", "Sídl. Michal škola", ["X", "42"]], + ["3", "16:48", "Závodu míru", ["X"]], + ["4", "16:51", "Závodu míru", ["X", "42"]], + ["3", "16:53", "Závodu míru", ["6+"]], + ["1", "16:57", "Březová, aut. st.", ["6+"]], + ["7", "16:59", "Březová, aut.st.", ["X"]], + ["3", "17:09", "Jezero Michal", ["X"]], + ["3", "17:14", "Závodu míru", ["6+"]], + ["3", "17:18", "Závodu míru", ["X"]], + ["3", "17:34", "Závodu míru", ["X"]], + ["1", "17:38", "Březová, aut. st.", ["X"]], + ["3", "17:51", "Závodu míru", ["6+"]], + ["3", "17:57", "Závodu míru", ["X"]], + ["3", "18:14", "Závodu míru", ["X"]], + ["3", "18:21", "Závodu míru", ["X"]], + ["3", "18:21", "Stará Ovčárna", ["6+"]], + ["1", "18:24", "Březová, aut. st.", ["6+"]], + ["1", "18:26", "Březová, aut. st.", ["X"]], + ["3", "18:34", "Závodu míru", ["X"]], + ["3", "18:51", "Závodu míru", ["6+"]], + ["3", "18:54", "Závodu míru", ["X"]], + ["1", "19:08", "Březová, aut. st.", ["X"]], + ["3", "19:14", "Závodu míru", ["6+", "24"]], + ["3", "19:19", "Závodu míru", ["X", "31"]], + ["3", "19:34", "Závodu míru", ["X", "31"]], + ["1", "19:53", "Březová, aut. st.", ["X", "31"]], + ["3", "19:54", "Závodu míru", ["X", "31"]], + ["3", "19:54", "Závodu míru", ["6+", "24"]], + ["1", "19:57", "Březová, aut. st.", ["6+", "24"]], + ["3", "20:19", "Závodu míru", ["X", "31"]], + ["1", "20:28", "Březová, aut. st.", ["6+", "24"]], + ["3", "20:49", "Závodu míru", ["X", "31"]], + ["3", "20:49", "Závodu míru", ["6+", "24"]], + ["1", "20:55", "Březová, aut. st.", ["X", "31"]], + ["3", "21:09", "Závodu míru", ["X", "31"]], + ["1", "21:23", "Březová, aut. st.", ["6+", "24"]], + ["3", "21:24", "Stará Ovčárna", ["X", "31"]], + ["3", "21:24", "Závodu míru", ["6+", "24"]], + ["1", "21:38", "Březová, aut. st.", ["X", "31"]], + ["3", "22:04", "Závodu míru", ["6+", "24"]], + ["3", "22:12", "Stará Ovčárna", ["X", "31"]], + ["1", "22:28", "Březová, aut. st.", ["X", "31"]], + ["3", "22:41", "Závodu míru", ["X", "31"]], +]; + + +// const departures_all = [ +// ["3","04:09","Závodu míru",["25"]], +// ["3","04:29","Závodu míru",["X"]], +// ["1","04:50","Březová, aut. st.",["X"]], +// ["3","04:52","Závodu míru",["X"]], +// ["3","04:56","Závodu míru",["6+","25"]], +// ["3","05:02","Závodu míru",["X"]], +// ["4","05:05","Závodu míru",["X"]], +// ["6","05:07","Sídl. Michal škola",["X","42"]], +// ["6","05:07","Závodu míru",["X","32"]], +// ["3","05:09","Závodu míru",["X","42"]], +// ["3","05:22","Závodu míru",["X"]], +// ["1","05:23","Březová, aut. st.",["X"]], +// ["6","05:34","Sídl.Michal škola",["X","42"]], +// ["4","05:35","Stará Ovčárna",["X"]], +// ["3","05:36","Sídl. Michal škola",["X","42"]], +// ["3","05:38","Sídliště Michal",["X","32"]], +// ["1","05:47","Březová, aut. st.",["6+","25"]], +// ["1","05:51","Březová, aut. st.",["X"]], +// ["3","05:57","Závodu míru",["6+","25"]], +// ["3","05:58","Závodu míru",["X"]], +// ["6","06:04","Sídl.Michal škola",["X","42"]], +// ["1","06:13","Březová, aut. st.",["X"]], +// ["3","06:16","Závodu míru",["X","42"]], +// ["3","06:19","Závodu míru",["X","32"]], +// ["3","06:24","Sídliště Michal",["X"]], +// ["3","06:24","Závodu míru",["6+","25"]], +// ["4","06:31","Závodu míru",["X","42"]], +// ["6","06:32","Sídl.Michal škola",["X","32"]], +// ["3","06:34","Závodu míru",["X"]], +// ["6","06:34","Sídl.Michal škola",["X","42"]], +// ["1","06:46","Březová, aut. st.",["X"]], +// ["33","06:49","sídl.Michal škola",["X","42"]], +// ["3","06:56","Závodu míru",["X","32"]], +// ["3","06:56","Závodu míru",["X","42"]], +// ["3","06:56","Závodu míru",["6+"]], +// ["1","06:57","Březová, aut. st.",["6+","25"]], +// ["3","07:04","Závodu míru",["X"]], +// ["1","07:05","Březová, aut. st.",["X"]], +// ["3","07:14","Závodu míru",["X"]], +// ["3","07:19","Závodu míru",["6+"]], +// ["6","07:23","Sídl.Michal škola",["X","42"]], +// ["33","07:27","sídl.Michal škola",["17"]], +// ["3","07:27","Sídliště Michal",["X","32"]], +// ["2","07:31","Sídliště Michal",["X","42"]], +// ["3","07:34","Závodu míru",["X","42"]], +// ["4","07:34","Závodu míru",["X"]], +// ["1","07:35","Březová, aut. st.",["X"]], +// ["3","07:45","Sídliště Michal",["X"]], +// ["3","07:51","Závodu míru",["6+"]], +// ["33","07:54","sídl.Michal škola",["X","42"]], +// ["3","07:54","Závodu míru",["17"]], +// ["1","07:55","Březová, aut. st.",["X"]], +// ["1","07:57","Březová, aut. st.",["6+"]], +// ["3","07:58","Závodu míru",["X","42"]], +// ["3","08:10","Závodu míru",["X","32"]], +// ["3","08:15","Závodu míru",["X","42"]], +// ["3","08:15","Závodu míru",["6+"]], +// ["1","08:18","Březová, aut. st.",["X"]], +// ["33","08:29","sídl.Michal škola",["X"]], +// ["3","08:34","Závodu míru",["X"]], +// ["3","08:50","Stará Ovčárna",["X"]], +// ["3","08:51","Závodu míru",["6+"]], +// ["33","08:54","sídl.Michal škola",["X"]], +// ["1","08:57","Březová, aut. st.",["6+"]], +// ["3","09:04","Závodu míru",["X"]], +// ["1","09:09","Březová, aut. st.",["X"]], +// ["3","09:20","Závodu míru",["6+"]], +// ["3","09:24","Závodu míru",["X"]], +// ["33","09:34","sídl.Michal škola",["X"]], +// ["4","09:41","Sídliště Michal",["X"]], +// ["1","09:44","Březová, aut. st.",["6+"]], +// ["3","09:45","Závodu míru",["X"]], +// ["3","09:51","Závodu míru",["6+"]], +// ["1","09:58","Březová, aut. st.",["X"]], +// ["3","09:59","Jezero Michal",["X"]], +// ["7","10:14","Březová, aut.st.",["X"]], +// ["3","10:19","Závodu míru",["6+"]], +// ["33","10:24","sídl.Michal škola",["X"]], +// ["3","10:40","Závodu míru",["X"]], +// ["1","10:55","Březová, aut. st.",["X"]], +// ["3","10:55","Závodu míru",["X"]], +// ["1","10:57","Březová, aut. st.",["6+"]], +// ["3","11:02","Závodu míru",["6+"]], +// ["3","11:17","Závodu míru",["X"]], +// ["33","11:29","sídl.Michal škola",["X"]], +// ["3","11:29","Závodu míru",["6+"]], +// ["3","11:44","Závodu míru",["X"]], +// ["1","11:46","Březová, aut. st.",["X"]], +// ["1","11:49","Březová, aut. st.",["6+"]], +// ["3","11:51","Závodu míru",["6+"]], +// ["33","11:56","sídl.Michal škola",["X"]], +// ["3","12:05","Závodu míru",["X"]], +// ["3","12:19","Závodu míru",["6+"]], +// ["3","12:24","Jezero Michal",["X"]], +// ["1","12:33","Březová, aut. st.",["X"]], +// ["3","12:44","Závodu míru",["X"]], +// ["3","12:51","Závodu míru",["6+"]], +// ["1","12:57","Březová, aut. st.",["6+"]], +// ["3","12:59","Závodu míru",["X"]], +// ["6","12:59","Sídl.Michal škola",["X","42"]], +// ["33","13:04","sídl.Michal škola",["X"]], +// ["1","13:06","Březová, aut. st.",["X"]], +// ["3","13:15","Závodu míru",["X"]], +// ["2","13:17","Sídliště Michal",["X"]], +// ["1","13:22","Březová, aut. st.",["X"]], +// ["3","13:24","Stará Ovčárna",["X"]], +// ["3","13:28","Závodu míru",["6+"]], +// ["33","13:39","sídl.Michal škola",["X"]], +// ["1","13:48","Březová, aut. st.",["X"]], +// ["3","13:51","Závodu míru",["6+"]], +// ["1","13:57","Březová, aut. st.",["6+"]], +// ["33","14:04","sídl.Michal škola",["X"]], +// ["6","14:04","Sídl.Michal škola",["X"]], +// ["4","14:06","Stará Ovčárna",["X"]], +// ["3","14:09","Závodu míru",["X"]], +// ["1","14:10","Březová, aut. st.",["X"]], +// ["3","14:19","Závodu míru",["6+"]], +// ["3","14:21","Závodu míru",["X"]], +// ["1","14:34","Březová, aut. st.",["X"]], +// ["6","14:34","Sídl.Michal škola",["X"]], +// ["4","14:42","Závodu míru",["X"]], +// ["3","14:43","Závodu míru",["X"]], +// ["33","14:46","sídl.Michal škola",["X"]], +// ["1","14:49","Březová, aut. st.",["6+"]], +// ["3","14:51","Závodu míru",["6+"]], +// ["3","14:52","Závodu míru",["X"]], +// ["1","15:09","Březová, aut. st.",["X"]], +// ["33","15:09","sídl.Michal škola",["X"]], +// ["3","15:13","Závodu míru",["X"]], +// ["6","15:14","Sídl.Michal škola",["X"]], +// ["3","15:19","Závodu míru",["6+"]], +// ["3","15:23","Sokolov, Hrušková",["X","42"]], +// ["3","15:30","Závodu míru",["X"]], +// ["1","15:31","Březová, aut. st.",["X"]], +// ["33","15:39","sídl.Michal škola",["X"]], +// ["3","15:39","Jezero Michal",["X"]], +// ["3","15:51","Závodu míru",["6+"]], +// ["7","15:54","Březová, aut.st.",["X"]], +// ["1","15:57","Březová, aut. st.",["6+"]], +// ["3","16:00","sídl.Michal škola",["X","42"]], +// ["4","16:06","Závodu míru",["X"]], +// ["33","16:14","sídl.Michal škola",["X"]], +// ["3","16:14","Závodu míru",["X"]], +// ["1","16:21","Březová, aut. st.",["X"]], +// ["3","16:28","Závodu míru",["6+"]], +// ["7","16:29","Březová, aut.st.",["X"]], +// ["3","16:35","Závodu míru",["X"]], +// ["6","16:44","Sídl.Michal škola",["X","42"]], +// ["3","16:48","Závodu míru",["X"]], +// ["4","16:51","Závodu míru",["X","42"]], +// ["3","16:53","Závodu míru",["6+"]], +// ["1","16:57","Březová, aut. st.",["6+"]], +// ["7","16:59","Březová, aut.st.",["X"]], +// ["3","17:09","Jezero Michal",["X"]], +// ["3","17:14","Závodu míru",["6+"]], +// ["3","17:18","Závodu míru",["X"]], +// ["3","17:34","Závodu míru",["X"]], +// ["1","17:38","Březová, aut. st.",["X"]], +// ["3","17:51","Závodu míru",["6+"]], +// ["3","17:57","Závodu míru",["X"]], +// ["3","18:14","Závodu míru",["X"]], +// ["3","18:21","Závodu míru",["X"]], +// ["3","18:21","Stará Ovčárna",["6+"]], +// ["1","18:24","Březová, aut. st.",["6+"]], +// ["1","18:26","Březová, aut. st.",["X"]], +// ["3","18:34","Závodu míru",["X"]], +// ["3","18:51","Závodu míru",["6+"]], +// ["3","18:54","Závodu míru",["X"]], +// ["1","19:08","Březová, aut. st.",["X"]], +// ["3","19:14","Závodu míru",["6+","24"]], +// ["3","19:19","Závodu míru",["X","31"]], +// ["3","19:34","Závodu míru",["X","31"]], +// ["1","19:53","Březová, aut. st.",["X","31"]], +// ["3","19:54","Závodu míru",["X","31"]], +// ["3","19:54","Závodu míru",["6+","24"]], +// ["1","19:57","Březová, aut. st.",["6+","24"]], +// ["3","20:19","Závodu míru",["X","31"]], +// ["1","20:28","Březová, aut. st.",["6+","24"]], +// ["3","20:49","Závodu míru",["X","31","6+","24"]], +// ["1","20:55","Březová, aut. st.",["X","31"]], +// ["3","21:09","Závodu míru",["X","31"]], +// ["1","21:23","Březová, aut. st.",["6+","24"]], +// ["3","21:24","Stará Ovčárna",["X","31"]], +// ["3","21:24","Závodu míru",["6+","24"]], +// ["1","21:38","Březová, aut. st.",["X","31"]], +// ["3","22:04","Závodu míru",["6+","24"]], +// ["3","22:12","Stará Ovčárna",["X","31"]], +// ["1","22:28","Březová, aut. st.",["X","31"]], +// ["3","22:41","Závodu míru",["X","31"]], +// ]; + + + + + + + +/* +exports.id = 'handledepartures'; +exports.title = 'Handle departures'; +exports.group = 'Worksys'; +exports.color = '#5D9CEC'; +exports.version = '0.0.1'; +exports.output = ['red', 'white']; +exports.input = true; +exports.author = 'Rastislav Kovac'; +exports.icon = 'cloud-upload'; + +exports.readme = `Handle bus departures responses from service-prod01.worksys.io`; + +const instanceSendTo = { + sendToExpress: 0, +} + +const timeZoneOffsets = { + '-60': 1, + '-120': 2 +} + + +exports.install = function(instance) { + + let departures = []; + let departureIds = []; + let departuresToDisplay = []; + + + instance.on('data', function(flowdata) { + + if(!typeof flowdata.data === 'object') return; + + console.log('flowdata.data', flowdata.data) + + + let response = flowdata.data; + // if(response.indexOf('"query":{') > -1) + // { + // instance.send(instanceSendTo.repeatRequest, 'repeatDepartureRequest'); + // return; + // } + +//console.log('dep, del ----', response.hasOwnProperty('departures'), response.hasOwnProperty('delays')) + if(response.hasOwnProperty('departures')) + { + + departures = response['departures']; + departureIds = []; + + for (let i = 0; i < departures.length; i++) + { + departureIds.push(departures[i][0]); + } + + } + + else if(response.hasOwnProperty('delays')) + { + + if(departures.length == 0) return; + + const delays = response['delays']; + departuresToDisplay = []; + + if(delays.length == 0) + { + instance.send(instanceSendTo.sendToExpress, departuresToDisplay); + departures = []; + departureIds = []; + return; + } + + console.log('delays', delays) + + const date = new Date(); + const diff = date.getTimezoneOffset(); + + for (let i = 0; i < delays.length; i++) + { + const delayIdInList = departureIds.indexOf(delays[i][0]); + + //console.log('id in list ------', delayIdInList) + if(delayIdInList == -1) continue; + + if(delays[i][1]) // if equals to date string e.g. "2022-11-25T14:04:57" or it is 0 + { + + let currentDeparture = departures[delayIdInList][2].split(':'); //[ '15', '35' ]; + + let updatedDeparture = delays[i][1]; // "2022-11-25T14:04:57" + let temp = [...updatedDeparture.matchAll(/\d\d/g)].map(a => a[0]); //[ '20', '22', '11', '25', '14', '04', '57'] + + currentDeparture = new Date(Date.UTC(parseInt(`20${temp[1]}`), temp[2],temp[3], currentDeparture[0], currentDeparture[1], 0)) + updatedDeparture = new Date(Date.UTC(parseInt(`20${temp[1]}`), temp[2],temp[3], +temp[4] + timeZoneOffsets[diff], temp[5], 0)) + + if(currentDeparture < updatedDeparture) + { + console.log('zmenit cas v odchodoch') + updatedDeparture = new Date(Date.UTC(parseInt(`20${temp[1]}`), temp[2],temp[3], temp[4], temp[5], 0)) + updatedDeparture = updatedDeparture.toLocaleTimeString('sk-SK', { timeZone: 'Europe/Bratislava' }) + console.log('odchod s meskaniim ++++++++',updatedDeparture) + departures[delayIdInList][2] = updatedDeparture.slice(0,5); + } + + } + + departuresToDisplay.push(departures[delayIdInList]) // [ '140', '3', '22:08', 'Stará ovčárna' ] + + } + + // sometimes delays.length is less than 10 (sometimes even 6). in that case we display some more scheduled departures + if(departuresToDisplay.length < 9) + { + let lastDelay = delays[delays.length - 1][0]; + lastDelay = departureIds.indexOf(lastDelay); + + l = departuresToDisplay.length + + // we start from 1 and continue until departuresToDisplay length is nine + for (let i = 1; i < (10 - l); i++) + { + if(departures[lastDelay + i]) departuresToDisplay.push(departures[lastDelay + i]) + } + + } + + instance.send(instanceSendTo.sendToExpress, departuresToDisplay) + //console.log('-----',departures) + + //console.log(delays) + console.log('to display ++++++',departuresToDisplay) + + } + + + }) + +} + + + + +// { +// "data": "{\"delays\":[[\"25\",0],[\"94\",0],[\"27\",0],[\"106\",0],[\"84\",0],[\"29\",0],[\"6\",0],[\"96\",0],[\"31\",0],[\"4\",0]]}", +// "status": 200, +// "headers": { +// "cache-control": "private, no-cache, no-store, max-age=0", +// "vary": "Accept-Encoding, Last-Modified, User-Agent", +// "expires": "-1", +// "x-powered-by": "Total.js", +// "content-type": "application/json; charset=utf-8", +// "date": "Mon, 21 Nov 2022 13:23:51 GMT", +// "connection": "close", +// "transfer-encoding": "chunked" +// }, +// "host": "192.168.252.2:8004" +// } + + +// { +// "data": "{\"departures\":[[\"2\",\"3\",\"22.11.22 04:05\",\"Závodu míru\"],[\"290\",\"3\",\"22.11.22 04:25\",\"Závodu míru\"],[\"292\",\"3\",\"22.11.22 04:48\",\"Závodu míru\"],[\"296\",\"3\",\"22.11.22 04:58\",\"Závodu míru\"],[\"6\",\"3\",\"22.11.22 05:05\",\"Závodu míru\"],[\"300\",\"3\",\"22.11.22 05:18\",\"Závodu míru\"],[\"8\",\"3\",\"22.11.22 05:55\",\"Závodu míru\"],[\"16\",\"3\",\"22.11.22 06:30\",\"Závodu míru\"],[\"1\",\"33\",\"22.11.22 06:45\",\"sídl. Michal škola\"],[\"18\",\"3\",\"22.11.22 06:52\",\"Hrušková\"],[\"310\",\"3\",\"22.11.22 07:00\",\"Závodu míru\"],[\"22\",\"3\",\"22.11.22 07:10\",\"Závodu míru\"],[\"5\",\"33\",\"22.11.22 07:50\",\"sídl. Michal škola\"],[\"32\",\"3\",\"22.11.22 08:10\",\"Závodu míru\"],[\"7\",\"33\",\"22.11.22 08:25\",\"sídl. Michal škola\"],[\"100\",\"3\",\"22.11.22 08:30\",\"Závodu míru\"],[\"9\",\"33\",\"22.11.22 08:50\",\"sídl. Michal škola\"],[\"34\",\"3\",\"22.11.22 09:00\",\"Závodu míru\"],[\"38\",\"3\",\"22.11.22 09:20\",\"Závodu míru\"],[\"11\",\"33\",\"22.11.22 09:30\",\"sídl. Michal škola\"],[\"298\",\"3\",\"22.11.22 09:55\",\"Závodu míru\"],[\"2\",\"7\",\"22.11.22 10:10\",\"Březová, aut. st.\"],[\"13\",\"33\",\"22.11.22 10:20\",\"sídl. Michal škola\"],[\"48\",\"3\",\"22.11.22 10:50\",\"Závodu míru\"],[\"50\",\"3\",\"22.11.22 11:13\",\"Závodu míru\"],[\"15\",\"33\",\"22.11.22 11:25\",\"sídl. Michal škola\"],[\"52\",\"3\",\"22.11.22 11:40\",\"Závodu míru\"],[\"17\",\"33\",\"22.11.22 11:52\",\"sídl. Michal škola\"],[\"56\",\"3\",\"22.11.22 12:20\",\"Závodu míru\"],[\"62\",\"3\",\"22.11.22 12:40\",\"Závodu míru\"],[\"64\",\"3\",\"22.11.22 12:55\",\"Závodu míru\"],[\"19\",\"33\",\"22.11.22 13:00\",\"sídl. Michal škola\"],[\"66\",\"3\",\"22.11.22 13:20\",\"Stará ovčárna\"],[\"21\",\"33\",\"22.11.22 13:35\",\"sídl. Michal škola\"],[\"23\",\"33\",\"22.11.22 14:00\",\"sídl. Michal škola\"],[\"72\",\"3\",\"22.11.22 14:05\",\"Závodu míru\"],[\"25\",\"33\",\"22.11.22 14:42\",\"sídl. Michal škola\"],[\"94\",\"3\",\"22.11.22 14:48\",\"Závodu míru\"],[\"27\",\"33\",\"22.11.22 15:05\",\"sídl. Michal škola\"],[\"106\",\"3\",\"22.11.22 15:09\",\"Závodu míru\"],[\"84\",\"3\",\"22.11.22 15:35\",\"Závodu míru\"],[\"29\",\"33\",\"22.11.22 15:35\",\"sídl. Michal škola\"],[\"6\",\"7\",\"22.11.22 15:50\",\"Březová, aut. st.\"],[\"96\",\"3\",\"22.11.22 16:10\",\"Závodu míru\"],[\"31\",\"33\",\"22.11.22 16:10\",\"sídl. Michal škola\"],[\"4\",\"7\",\"22.11.22 16:25\",\"Březová, aut. st.\"],[\"102\",\"3\",\"22.11.22 16:30\",\"Závodu míru\"],[\"302\",\"3\",\"22.11.22 16:44\",\"Závodu míru\"],[\"8\",\"7\",\"22.11.22 16:55\",\"Březová, aut. st.\"],[\"108\",\"3\",\"22.11.22 17:05\",\"Stará ovčárna\"],[\"112\",\"3\",\"22.11.22 17:30\",\"Závodu míru\"],[\"114\",\"3\",\"22.11.22 17:53\",\"Závodu míru\"],[\"118\",\"3\",\"22.11.22 18:10\",\"Závodu míru\"],[\"120\",\"3\",\"22.11.22 18:30\",\"Závodu míru\"],[\"122\",\"3\",\"22.11.22 18:50\",\"Závodu míru\"],[\"124\",\"3\",\"22.11.22 19:15\",\"Závodu míru\"],[\"126\",\"3\",\"22.11.22 19:30\",\"Závodu míru\"],[\"130\",\"3\",\"22.11.22 19:50\",\"Závodu míru\"],[\"132\",\"3\",\"22.11.22 20:15\",\"Závodu míru\"],[\"134\",\"3\",\"22.11.22 20:45\",\"Závodu míru\"],[\"136\",\"3\",\"22.11.22 21:05\",\"Závodu míru\"],[\"256\",\"3\",\"22.11.22 21:20\",\"Stará ovčárna\"],[\"140\",\"3\",\"22.11.22 22:08\",\"Stará ovčárna\"]]}", +// "status": 200, +// "headers": { +// "cache-control": "private, no-cache, no-store, max-age=0", +// "vary": "Accept-Encoding, Last-Modified, User-Agent", +// "expires": "-1", +// "x-powered-by": "Total.js", +// "content-type": "application/json; charset=utf-8", +// "date": "Mon, 21 Nov 2022 13:23:51 GMT", +// "connection": "close", +// "transfer-encoding": "chunked" +// }, +// "host": "192.168.252.2:8004" +// } + + + + +// flowdata.data +// ~~~~~~~~ z cloudu { +// data: '{"delays":[["13",0],["48",0],["50",0],["15",0],["52",0],["17",0],["56",0],["62",0],["64",0],["19",0]]}', +// status: 200, +// headers: { +// 'cache-control': 'private, no-cache, no-store, max-age=0', +// vary: 'Accept-Encoding, Last-Modified, User-Agent', +// expires: '-1', +// 'x-powered-by': 'Total.js', +// 'content-type': 'application/json; charset=utf-8', +// date: 'Tue, 29 Nov 2022 09:16:14 GMT', +// connection: 'close', +// 'transfer-encoding': 'chunked' +// }, +// host: '192.168.252.2:8004', +// cookies: undefined +// } + + + +// ~~~~~~~~ z cloudu { +// data: `503: Service Unavailable
503
Service Unavailable
`, +// status: 503, +// headers: { +// 'cache-control': 'private, no-cache, no-store, max-age=0', +// vary: 'Accept-Encoding, Last-Modified, User-Agent', +// expires: '-1', +// 'x-powered-by': 'Total.js', +// 'content-type': 'text/html; charset=utf-8', +// date: 'Tue, 29 Nov 2022 09:17:19 GMT', +// connection: 'close', +// 'transfer-encoding': 'chunked' +// }, +// host: '192.168.252.2:8004', +// cookies: undefined +// } + + + +// { +// "data": "{\"query\":{\"project_id\":\"30\"},\"body\":{\"departures\":[]},\"session\":null,\"user\":null,\"files\":[],\"headers\":{\"content-type\":\"application/json\",\"content-length\":\"17\",\"host\":\"192.168.252.2:8004\",\"connection\":\"close\"},\"url\":\"/getdepartures/\",\"params\":{},\"mobile\":false,\"robot\":false,\"referrer\":\"\"}", +// "status": 200, +// "headers": { +// "cache-control": "private, no-cache, no-store, max-age=0", +// "vary": "Accept-Encoding, Last-Modified, User-Agent", +// "expires": "-1", +// "x-powered-by": "Total.js", +// "content-type": "application/json; charset=utf-8", +// "date": "Tue, 29 Nov 2022 13:38:12 GMT", +// "connection": "close", +// "transfer-encoding": "chunked" +// }, +// "host": "192.168.252.2:8004" +// } + + +const odchody = [ + [ '140', '3', '22:08', 'Stará ovčárna' ] +] +*/ diff --git a/flow/helper/db_helper.js b/flow/helper/db_helper.js new file mode 100644 index 0000000..adbd1e1 --- /dev/null +++ b/flow/helper/db_helper.js @@ -0,0 +1,29 @@ + +function promisifyBuilder(builder) +{ + return new Promise((resolve, reject) => { + + builder.callback(function(err, response) { + + if(err != null) reject(err); + resolve(response); + }); + }) +} + +function makeMapFromDbResult(response, key) +{ + let data = {}; + for(let i = 0; i < response.length; i++) + { + let record = response[i]; + data[ record[key] ] = record; + } + + return data; +} + +module.exports = { + promisifyBuilder, + makeMapFromDbResult + } \ No newline at end of file diff --git a/flow/helper/error_reporter.js b/flow/helper/error_reporter.js new file mode 100644 index 0000000..ea9f23f --- /dev/null +++ b/flow/helper/error_reporter.js @@ -0,0 +1,67 @@ + +//key is device, value = str +let sentValues= {}; + +function sendError(func, device, weight, str, extra, tb_output, instance) { + // if ((weight === ERRWEIGHT.DEBUG) && (instance.CONFIG.debug === false)){ + // return; // Allow debug messages only if CONFIG.debug is active + // } + + let sendFlag = true; + if(sentValues.hasOwnProperty(device)) + { + if(sentValues[device] == str) return; + } + + sentValues[device] = str; + + let content = { + "type": weight, + "status": "new", + "source": { + "func":func, + "component":instance.id, + "component_name":instance.name, + "edge":device + }, + "message":str, + "message_data": extra + }; + + let msg = {}; + msg[device] = [ + { + "ts": Date.now(), + "values": { + "_event":content + } + } + ]; + + // Msg can be outputted from components only after configuration + /*if (canSendErrData()){ + sendBufferedErrors(); + } else { + bufferError(msg); + }*/ + instance.send(tb_output, msg); // Even if error server is unavailable, send this message to output, for other possible component connections + +} + + +let ERRWEIGHT = { + EMERGENCY: "emergency", // System unusable + ALERT: "alert", // Action must be taken immidiately + CRITICAL: "critical", // Component unable to function + ERROR: "error", // Error, but component able to recover from it + WARNING: "warning", // Possibility of error, system running futher + NOTICE: "notice", // Significant message but not an error, things user might want to know about + INFO: "informational", // Info + DEBUG: "debug" // Debug - only if CONFIG.debug is enabled +}; + + +module.exports = { + sendError, + ERRWEIGHT +} \ No newline at end of file diff --git a/flow/helper/serialport_helper.js b/flow/helper/serialport_helper.js new file mode 100644 index 0000000..3e54fbf --- /dev/null +++ b/flow/helper/serialport_helper.js @@ -0,0 +1,86 @@ +const { exec } = require('child_process'); + +function openPort(port){ + return new Promise((resolve, reject) => { + + var callbackError = function(err) { + port.removeListener('error', callbackError); + port.removeListener('open', callbackError); + + reject(err.message); + }; + + var callbackOpen = function(data) { + port.removeListener('error', callbackError); + port.removeListener('open', callbackOpen); + + resolve("port open: ok"); + }; + + port.on('error', callbackError); + port.on('open', callbackOpen); + + port.open(); + + }) + } + + function runSyncExec(command){ + return new Promise((resolve, reject) => { + + exec(command, (error, stdout, stderr) => { + if(error == null) resolve(stdout); + reject(error); + }); + + }) + } + + async function writeData(port, data, readbytes, timeout){ + return new Promise((resolve, reject) => { + + if(readbytes == undefined) readbytes = 0; + if(timeout == undefined) timeout = 15000; + + var callback = function(data) { + rsPortReceivedData.push(...data); + let l = rsPortReceivedData.length; + + if(l >= readbytes) + { + port.removeListener('data', callback); + + clearTimeout(t); + resolve(rsPortReceivedData); + } + }; + + let t = setTimeout(() => { + port.removeListener('data', callback); + reject("TIMEOUT READING"); + }, timeout); + + let rsPortReceivedData = []; + + if(readbytes > 0) port.on('data', callback); + + port.write(Buffer.from(data), function(err) { + if (err) { + port.removeListener('data', callback); + reject(err.message); + } + + if(readbytes == 0) + { + resolve(rsPortReceivedData); + } + + }); + }) +} + +module.exports = { + openPort, + runSyncExec, + writeData +} \ No newline at end of file diff --git a/flow/helper/suncalc.js b/flow/helper/suncalc.js new file mode 100644 index 0000000..c9ca56d --- /dev/null +++ b/flow/helper/suncalc.js @@ -0,0 +1,317 @@ +/* + (c) 2011-2015, Vladimir Agafonkin + SunCalc is a JavaScript library for calculating sun/moon position and light phases. + https://github.com/mourner/suncalc +*/ + +(function () { 'use strict'; + +// shortcuts for easier to read formulas + +var PI = Math.PI, + sin = Math.sin, + cos = Math.cos, + tan = Math.tan, + asin = Math.asin, + atan = Math.atan2, + acos = Math.acos, + rad = PI / 180; + +// sun calculations are based on http://aa.quae.nl/en/reken/zonpositie.html formulas + + +// date/time constants and conversions + +var dayMs = 1000 * 60 * 60 * 24, + J1970 = 2440588, + J2000 = 2451545; + +function toJulian(date) { return date.valueOf() / dayMs - 0.5 + J1970; } +function fromJulian(j) { return new Date((j + 0.5 - J1970) * dayMs); } +function toDays(date) { return toJulian(date) - J2000; } + + +// general calculations for position + +var e = rad * 23.4397; // obliquity of the Earth + +function rightAscension(l, b) { return atan(sin(l) * cos(e) - tan(b) * sin(e), cos(l)); } +function declination(l, b) { return asin(sin(b) * cos(e) + cos(b) * sin(e) * sin(l)); } + +function azimuth(H, phi, dec) { return atan(sin(H), cos(H) * sin(phi) - tan(dec) * cos(phi)); } +function altitude(H, phi, dec) { return asin(sin(phi) * sin(dec) + cos(phi) * cos(dec) * cos(H)); } + +function siderealTime(d, lw) { return rad * (280.16 + 360.9856235 * d) - lw; } + +function astroRefraction(h) { + if (h < 0) // the following formula works for positive altitudes only. + h = 0; // if h = -0.08901179 a div/0 would occur. + + // formula 16.4 of "Astronomical Algorithms" 2nd edition by Jean Meeus (Willmann-Bell, Richmond) 1998. + // 1.02 / tan(h + 10.26 / (h + 5.10)) h in degrees, result in arc minutes -> converted to rad: + return 0.0002967 / Math.tan(h + 0.00312536 / (h + 0.08901179)); +} + +// general sun calculations + +function solarMeanAnomaly(d) { return rad * (357.5291 + 0.98560028 * d); } + +function eclipticLongitude(M) { + + var C = rad * (1.9148 * sin(M) + 0.02 * sin(2 * M) + 0.0003 * sin(3 * M)), // equation of center + P = rad * 102.9372; // perihelion of the Earth + + return M + C + P + PI; +} + +function sunCoords(d) { + + var M = solarMeanAnomaly(d), + L = eclipticLongitude(M); + + return { + dec: declination(L, 0), + ra: rightAscension(L, 0) + }; +} + + +var SunCalc = {}; + + +// calculates sun position for a given date and latitude/longitude + +SunCalc.getPosition = function (date, lat, lng) { + + var lw = rad * -lng, + phi = rad * lat, + d = toDays(date), + + c = sunCoords(d), + H = siderealTime(d, lw) - c.ra; + + return { + azimuth: azimuth(H, phi, c.dec), + altitude: altitude(H, phi, c.dec) + }; +}; + + +// sun times configuration (angle, morning name, evening name) + +var times = SunCalc.times = [ + [-0.833, 'sunrise', 'sunset' ], + [ -0.3, 'sunriseEnd', 'sunsetStart' ], + [ -6, 'dawn', 'dusk' ], + [ -12, 'nauticalDawn', 'nauticalDusk'], + [ -18, 'nightEnd', 'night' ], + [ 6, 'goldenHourEnd', 'goldenHour' ] +]; + +// adds a custom time to the times config + +SunCalc.addTime = function (angle, riseName, setName) { + times.push([angle, riseName, setName]); +}; + + +// calculations for sun times + +var J0 = 0.0009; + +function julianCycle(d, lw) { return Math.round(d - J0 - lw / (2 * PI)); } + +function approxTransit(Ht, lw, n) { return J0 + (Ht + lw) / (2 * PI) + n; } +function solarTransitJ(ds, M, L) { return J2000 + ds + 0.0053 * sin(M) - 0.0069 * sin(2 * L); } + +function hourAngle(h, phi, d) { return acos((sin(h) - sin(phi) * sin(d)) / (cos(phi) * cos(d))); } +function observerAngle(height) { return -2.076 * Math.sqrt(height) / 60; } + +// returns set time for the given sun altitude +function getSetJ(h, lw, phi, dec, n, M, L) { + + var w = hourAngle(h, phi, dec), + a = approxTransit(w, lw, n); + return solarTransitJ(a, M, L); +} + + +// calculates sun times for a given date, latitude/longitude, and, optionally, +// the observer height (in meters) relative to the horizon + +SunCalc.getTimes = function (date, lat, lng, height) { + + height = height || 0; + + var lw = rad * -lng, + phi = rad * lat, + + dh = observerAngle(height), + + d = toDays(date), + n = julianCycle(d, lw), + ds = approxTransit(0, lw, n), + + M = solarMeanAnomaly(ds), + L = eclipticLongitude(M), + dec = declination(L, 0), + + Jnoon = solarTransitJ(ds, M, L), + + i, len, time, h0, Jset, Jrise; + + + var result = { + solarNoon: fromJulian(Jnoon), + nadir: fromJulian(Jnoon - 0.5) + }; + + for (i = 0, len = times.length; i < len; i += 1) { + time = times[i]; + h0 = (time[0] + dh) * rad; + + Jset = getSetJ(h0, lw, phi, dec, n, M, L); + Jrise = Jnoon - (Jset - Jnoon); + + result[time[1]] = fromJulian(Jrise); + result[time[2]] = fromJulian(Jset); + } + + return result; +}; + + +// moon calculations, based on http://aa.quae.nl/en/reken/hemelpositie.html formulas + +function moonCoords(d) { // geocentric ecliptic coordinates of the moon + + var L = rad * (218.316 + 13.176396 * d), // ecliptic longitude + M = rad * (134.963 + 13.064993 * d), // mean anomaly + F = rad * (93.272 + 13.229350 * d), // mean distance + + l = L + rad * 6.289 * sin(M), // longitude + b = rad * 5.128 * sin(F), // latitude + dt = 385001 - 20905 * cos(M); // distance to the moon in km + + return { + ra: rightAscension(l, b), + dec: declination(l, b), + dist: dt + }; +} + +SunCalc.getMoonPosition = function (date, lat, lng) { + + var lw = rad * -lng, + phi = rad * lat, + d = toDays(date), + + c = moonCoords(d), + H = siderealTime(d, lw) - c.ra, + h = altitude(H, phi, c.dec), + // formula 14.1 of "Astronomical Algorithms" 2nd edition by Jean Meeus (Willmann-Bell, Richmond) 1998. + pa = atan(sin(H), tan(phi) * cos(c.dec) - sin(c.dec) * cos(H)); + + h = h + astroRefraction(h); // altitude correction for refraction + + return { + azimuth: azimuth(H, phi, c.dec), + altitude: h, + distance: c.dist, + parallacticAngle: pa + }; +}; + + +// calculations for illumination parameters of the moon, +// based on http://idlastro.gsfc.nasa.gov/ftp/pro/astro/mphase.pro formulas and +// Chapter 48 of "Astronomical Algorithms" 2nd edition by Jean Meeus (Willmann-Bell, Richmond) 1998. + +SunCalc.getMoonIllumination = function (date) { + + var d = toDays(date || new Date()), + s = sunCoords(d), + m = moonCoords(d), + + sdist = 149598000, // distance from Earth to Sun in km + + phi = acos(sin(s.dec) * sin(m.dec) + cos(s.dec) * cos(m.dec) * cos(s.ra - m.ra)), + inc = atan(sdist * sin(phi), m.dist - sdist * cos(phi)), + angle = atan(cos(s.dec) * sin(s.ra - m.ra), sin(s.dec) * cos(m.dec) - + cos(s.dec) * sin(m.dec) * cos(s.ra - m.ra)); + + return { + fraction: (1 + cos(inc)) / 2, + phase: 0.5 + 0.5 * inc * (angle < 0 ? -1 : 1) / Math.PI, + angle: angle + }; +}; + + +function hoursLater(date, h) { + return new Date(date.valueOf() + h * dayMs / 24); +} + +// calculations for moon rise/set times are based on http://www.stargazing.net/kepler/moonrise.html article + +SunCalc.getMoonTimes = function (date, lat, lng, inUTC) { + var t = new Date(date); + if (inUTC) t.setUTCHours(0, 0, 0, 0); + else t.setHours(0, 0, 0, 0); + + var hc = 0.133 * rad, + h0 = SunCalc.getMoonPosition(t, lat, lng).altitude - hc, + h1, h2, rise, set, a, b, xe, ye, d, roots, x1, x2, dx; + + // go in 2-hour chunks, each time seeing if a 3-point quadratic curve crosses zero (which means rise or set) + for (var i = 1; i <= 24; i += 2) { + h1 = SunCalc.getMoonPosition(hoursLater(t, i), lat, lng).altitude - hc; + h2 = SunCalc.getMoonPosition(hoursLater(t, i + 1), lat, lng).altitude - hc; + + a = (h0 + h2) / 2 - h1; + b = (h2 - h0) / 2; + xe = -b / (2 * a); + ye = (a * xe + b) * xe + h1; + d = b * b - 4 * a * h1; + roots = 0; + + if (d >= 0) { + dx = Math.sqrt(d) / (Math.abs(a) * 2); + x1 = xe - dx; + x2 = xe + dx; + if (Math.abs(x1) <= 1) roots++; + if (Math.abs(x2) <= 1) roots++; + if (x1 < -1) x1 = x2; + } + + if (roots === 1) { + if (h0 < 0) rise = i + x1; + else set = i + x1; + + } else if (roots === 2) { + rise = i + (ye < 0 ? x2 : x1); + set = i + (ye < 0 ? x1 : x2); + } + + if (rise && set) break; + + h0 = h2; + } + + var result = {}; + + if (rise) result.rise = hoursLater(t, rise); + if (set) result.set = hoursLater(t, set); + + if (!rise && !set) result[ye > 0 ? 'alwaysUp' : 'alwaysDown'] = true; + + return result; +}; + + +// export as Node module / AMD module / browser variable +if (typeof exports === 'object' && typeof module !== 'undefined') module.exports = SunCalc; +else if (typeof define === 'function' && define.amd) define(SunCalc); +else window.SunCalc = SunCalc; + +}()); diff --git a/flow/httprequest.js b/flow/httprequest.js new file mode 100644 index 0000000..f5db5cd --- /dev/null +++ b/flow/httprequest.js @@ -0,0 +1,238 @@ +exports.id = 'httprequest'; +exports.title = 'HTTP Request'; +exports.group = 'HTTP'; +exports.color = '#5D9CEC'; +exports.input = true; +exports.version = '2.0.6'; +exports.output = 1; +exports.author = 'Peter Širka'; +exports.icon = 'cloud-upload'; + +exports.html = `
+
@(URL address)
+
+
+
@(HTTP method)
+
+
+
@(Serialization)
+
+
+
@(Download the content in chunks)
+
@(Keep persistent cookies)
+
@(Disable DNS cache)
+
@(Keep alive connection)
+
@(Keep message instance)
+
+
+
+
@(Custom headers)
+
@(Cookies)
+
+
+
+ +
+
+
+
@(User)
+
+
+
@(Password)
+
+
+
+
+
`; + +exports.readme = `# Request + +This component creates a request with received data. + +__Response:__ +\`\`\`javascript +{ + data: String, + headers: Object, + status: Number, + host: String +} +\`\`\` + +__Dynamic arguments__: +Are performed via FlowData repository and can be used for URL address or for custom headers/cookies/auth. Use \`repository\` component for creating of dynamic arguments. Dynamic values are replaced in the form \`{key}\`: + +- url address e.g. \`https://.../{key}/\` +- headers values e.g. \`{token}\` +- cookies values e.g. \`{token}\``; + +exports.install = function(instance) { + + var can = false; + var flags = null; + var cookies2 = null; + + instance.on('data', function(response) { + can && instance.custom.send(response); + }); + + instance.custom.send = function(flowdata) { + + var options = instance.options; + var headers = null; + var cookies = null; + + if (options.headers) { + headers = {}; + for (var key in options.headers) + headers[key] = flowdata.arg(options.headers[key]); + } + + if (options.username && options.userpassword) { + !headers && (headers = {}); + headers.Authorization = 'Basic ' + U.createBuffer(flowdata.arg(options.username + ':' + options.userpassword)).toString('base64'); + } + + if (options.cookies) { + for (var key in options.cookies) { + !cookies && (cookies = {}); + cookies[key] = flowdata.arg(options.cookies[key]); + } + } + + if (F.is4) { + + var opt = {}; + + opt.method = options.method; + opt.url = options.url; + opt.headers = headers; + opt.cookies = cookies; + + if (options.keepalive) + opt.keepalive = true; + + opt.dnscache = options.nodns ? false : true; + + if (options.chunks) { + opt.custom = true; + opt.callback = function(err, response) { + if (err) + instance.error(err); + else if (response && response.stream) { + response.stream.on('data', function(chunks) { + if (options.keepmessage) { + flowdata.data = chunks; + instance.send2(flowdata); + } else + instance.send2(chunks); + }); + } + }; + } else { + opt.callback = function(err, response) { + if (response && !err) { + var msg = { data: response.body, status: response.status, headers: response.headers, host: response.host, cookies: response.cookies }; + if (options.keepmessage) { + flowdata.data = msg; + instance.send2(flowdata); + } else + instance.send2(msg); + } else if (err) + instance.error(err, response); + }; + } + + switch (options.stringify) { + case 'json': + opt.body = JSON.stringify(flowdata.data); + opt.type = 'json'; + break; + case 'raw': + opt.body = flowdata.data instanceof Buffer ? flowdata.data : Buffer.from(flowdata.data); + opt.type = 'raw'; + break; + case 'encoded': + if (opt.method === 'GET' || opt.method === 'HEAD') { + opt.query = U.toURLEncode(flowdata.data); + } else { + opt.body = U.toURLEncode(flowdata.data); + opt.type = 'urlencoded'; + } + break; + } + + REQUEST(opt); + + } else { + if (options.chunks) { + U.download(flowdata.arg(options.url), flags, options.stringify === 'none' ? null : flowdata.data, function(err, response) { + response.on('data', function(chunks) { + if (options.keepmessage) { + flowdata.data = chunks; + instance.send2(flowdata); + } else + instance.send2(chunks); + }); + }, cookies || cookies2, headers); + } else { + U.request(flowdata.arg(options.url), flags, options.stringify === 'none' ? null : flowdata.data, function(err, data, status, headers, host) { + if (flowdata && !err) { + var msg = { data: data, status: status, headers: headers, host: host }; + if (options.keepmessage) { + flowdata.data = msg; + instance.send2(flowdata); + } else + instance.send2(msg); + } else if (err) + instance.error(err, flowdata); + }, cookies || cookies2, headers); + } + } + }; + + instance.reconfigure = function() { + var options = instance.options; + can = options.url && options.url && options.method && options.stringify ? true : false; + instance.status(can ? '' : 'Not configured', can ? undefined : 'red'); + + if (!can) + return; + + if (F.is4) { + + flags = {}; + flags.method = options.method.toUpperCase(); + + if (!options.nodns) + flags.resolve = true; + + flags.keepalive = options.keepalive; + + if (options.stringify && options.stringify !== 'none') + options.type = options.stringify; + + if (options.persistentcookies) { + flags.cook = true; + cookies2 = {}; + } else + cookies2 = null; + + } else { + flags = []; + flags.push(options.method.toLowerCase()); + options.stringify === 'json' && flags.push('json'); + options.stringify === 'raw' && flags.push('raw'); + options.keepalive && flags.push('keepalive'); + !options.nodns && flags.push('dnscache'); + if (options.persistentcookies) { + flags.push('cookies'); + cookies2 = {}; + } else + cookies2 = null; + } + }; + + instance.on('options', instance.reconfigure); + instance.reconfigure(); +}; \ No newline at end of file diff --git a/flow/httpresponse.js b/flow/httpresponse.js new file mode 100644 index 0000000..160a3bb --- /dev/null +++ b/flow/httpresponse.js @@ -0,0 +1,76 @@ +exports.id = 'httpresponse'; +exports.title = 'HTTP Response'; +exports.group = 'HTTP'; +exports.color = '#5D9CEC'; +exports.icon = 'arrow-right'; +exports.input = true; +exports.output = ['#666D76']; +exports.version = '2.0.0'; +exports.author = 'Martin Smola'; +exports.readme = `# HTTP response + +HTTP response will respond with data recieved using data-type set in Settings form or plain text if not set. Output is the message duration \`Number\` in seconds.`; + +exports.html = `
+
@(Response data-type)
+
JSON is by default.
+
`; + +exports.install = function(instance) { + + var dursum = 0; + var durcount = 0; + + instance.on('data', function(flowdata) { + + var ctrl = flowdata.repository.controller; + var data = flowdata.data; + + if (!ctrl) { + instance.throw('No controller to use for response!'); + return; + } + + durcount++; + dursum += ((new Date() - flowdata.begin) / 1000).floor(2); + setTimeout2(instance.id, instance.custom.duration, 500, 10); + + ctrl.$flowdata = flowdata; + + var datatype = instance.options.datatype || 'json'; + if (datatype === 'emptyresponse') + return ctrl.plain(''); + + if (datatype !== 'json' && typeof(data) !== 'string') { + instance.throw('Incorect type of data, expected string, got ' + typeof(data)); + ctrl.plain(data == null ? '' : data.toString()); + return; + } + + switch(datatype) { + case 'html': + ctrl.content(data, 'text/html'); + break; + case 'plain': + ctrl.plain(data); + break; + case 'xml': + ctrl.content(data, 'text/xml'); + break; + default: + ctrl.json(data); + break; + } + }); + + instance.on('service', function() { + dursum = 0; + durcount = 0; + }); + + instance.custom.duration = function() { + var avg = (dursum / durcount).floor(2); + instance.status(avg + ' sec.'); + instance.send2(0, avg); + }; +}; diff --git a/flow/httproute.js b/flow/httproute.js new file mode 100644 index 0000000..583a19d --- /dev/null +++ b/flow/httproute.js @@ -0,0 +1,326 @@ +exports.id = 'httproute'; +exports.title = 'HTTP Route'; +exports.group = 'HTTP'; +exports.color = '#5D9CEC'; +exports.icon = 'globe'; +exports.input = false; +exports.output = ['#6CAC5A', '#37BC9B']; +exports.version = '1.2.3'; +exports.author = 'Martin Smola'; +exports.cloning = false; +exports.options = { method: 'GET', url: '', size: 5, cacheexpire: '5 minutes', cachepolicy: 0, timeout: 5 }; +exports.dateupdated = '2021-01-21 18:30d'; +exports.readme = `# HTTP route + +__Outputs__: +- first output: raw data (cache is empty or is disabled) +- second output: cached data + +If one of the outputs is disabled then automatic responce with code "503 service unavailable" is sent. + +When a request comes in bellow object is available at \`flowdata.data\`: + +\`\`\`javascript +{ + params: { id: '1' }, // params for dynamic routes, e.g. /test/{id} + query: { msg: 'Hello' }, // parsed query string, e.g. /test/1?msg=Hello + body: { test: 'OK' }, // object if json requests otherwise string + headers: {}, // headers data + session: {}, // session data + user: {}, // user data + files: [], // uploaded files + url: '/users/', // a relative URL address + referrer: '/', // referrer + mobile: false, // determines mobile device + robot: false, // determines search robots/crawlsers + language: 'en' // determines language +} +\`\`\` + +See [documentation for flags](https://docs.totaljs.com/latest/en.html#api~HttpRouteOptionsFlags~unauthorize). These method flags are set automatically e.g. \`get, post, put, patch or delete\` + +--- + +\`id:ROUTE_ID\` flag cannot be used since it's already used by this component internally`; + +exports.html = `
+
+ +
+ +
+
+
@(HTTP method)
+
+
+
@(URL address)
+
+
+
+
+
@(Additional flags)
+
@(Separate flags by comma e.g. json, authorize)
+
+
+
@(Max. request size)
+
@(In kB kilobytes)
+
+
+
@(Timeout)
+
@(In seconds.)
+
+
+
+
+
+
@(Automatically respond with 200 OK?)
+
@(If not checked you need to use HTTP response component to respond to the request.)
+
+
@(Custom headers)
+
@(Cookies)
+
+
+
+
+
+
@(Cache policy)
+
@(User instance must contain id property.)
+
+
+
@(Expiration)
+
@(E.g. 5 minutes)
+
+
+
+`; + +exports.install = function(instance) { + + var route; + + var uninstall = function(id) { + if (F.is4) { + route && route.remove(); + route = null; + } else + UNINSTALL('route', id); + }; + + instance.custom.emptyresponse = function(self) { + self.plain(); + }; + + instance.reconfigure = function() { + + var options = instance.options; + + if (!options.url) { + instance.status('Not configured', 'red'); + return; + } + + if (typeof(options.flags) === 'string') + options.flags = options.flags.split(',').trim(); + + uninstall('id:' + instance.id); + + var flags = options.flags || []; + + flags.push('id:' + instance.id); + + if (!F.is4) + flags.push(options.method.toLowerCase()); + + options.timeout && flags.push(options.timeout * 1000); + + // Make unique values + flags = flags.filter(function(v, i, a) { + if(F.is4 && v.toString().toLowerCase() === options.method.toLowerCase()) + return false; // remove method + return a.indexOf(v) === i; + }); + + options.flags = flags; + var handler = function() { + + if (instance.paused || (instance.isDisabled && (instance.isDisabled('output', 0) || instance.isDisabled('output', 1)))) { + instance.status('503 Service Unavailable'); + this.status = 503; + this.json(); + return; + } + + var key; + var self = this; + + if (instance.options.emptyresponse) { + instance.status('200 OK'); + setTimeout(instance.custom.emptyresponse, 100, self); + + if (instance.hasConnection(0)) { + var data = instance.make({ + query: self.query, + body: self.body, + session: self.session, + user: self.user, + files: self.files, + headers: self.req.headers, + url: self.url, + params: self.params + }); + instance.send2(0, data); + } + + return; + } + + switch (instance.options.cachepolicy) { + case 1: // URL + key = 'rro' + instance.id + self.url.hash(); + break; + case 2: // URL + query + case 3: // URL + query + user + key = self.url; + var keys = Object.keys(self.query); + keys.sort(); + for (var i = 0, length = keys.length; i < length; i++) + key += keys[i] + self.query[keys[i]] + '&'; + if (instance.options.cachepolicy === 3 && self.user) + key += 'iduser' + self.user.id; + key = 'rro' + instance.id + key.hash(); + break; + } + + if (key && F.cache.get2(key)) { + var data = instance.make(F.cache.get2(key)); + data.repository.controller = self; + instance.send2(1, data); + } else { + + var data = instance.make({ + query: self.query, + body: self.body, + session: self.session, + user: self.user, + files: self.files, + headers: self.req.headers, + url: self.url, + params: self.params, + mobile: self.mobile, + robot: self.robot, + referrer: self.referrer, + language: self.language + }); + + data.repository.controller = self; + instance.send2(0, data); + key && FINISHED(self.res, () => F.cache.set(key, self.$flowdata.data, instance.options.cacheexpire)); + } + }; + + if (F.is4) + route = ROUTE(options.method.toUpperCase() + ' ' + options.url, handler, flags, options.size || 5); + else + F.route(options.url, handler, flags, options.size || 5); + + instance.status('Listening', 'green'); + }; + + instance.reconfigure(); + instance.on('options', instance.reconfigure); + instance.on('close', function(){ + uninstall('id:' + instance.id); + }); +}; + +// check url exists +FLOW.trigger('httproutecheckurl', function(next, data) { + var url = data.url; + var method = data.method; + if (url[url.length - 1] !== '/') + url += '/'; + var exists = F.routes.web.findItem(r => r.urlraw === url && r.method === method); + next(exists != null); +}); + +exports.uninstall = function() { + FLOW.trigger('httproutecheckurl', null); +}; diff --git a/flow/infosender.js b/flow/infosender.js new file mode 100644 index 0000000..e95fb6f --- /dev/null +++ b/flow/infosender.js @@ -0,0 +1,121 @@ +exports.id = 'infosender'; +exports.title = 'Info sender'; +exports.version = '1.0.0'; +exports.group = 'Worksys'; +exports.color = '#2134B0'; +exports.input = 1; +exports.output = 1 +exports.click = false; +exports.author = 'oms-is'; +exports.icon = 'bolt'; +exports.options = { edge: "undefined" }; + +const { networkInterfaces } = require('os'); + +exports.html = `
+
+
+
CSV Import
+
+
+
`; + +exports.readme = `# send all data to projects.worksys.io, required to monitor status of controller(unipi)`; + +const { promisifyBuilder, makeMapFromDbResult } = require('./helper/db_helper.js'); +const fs = require('fs'); +var path = require('path'); + +exports.install = async function(instance) { + + let id; + let allValues = {}; + let dbSettings; + + let sendAllValuesInterval; + + let now = new Date(); + console.log(exports.title, "INSTALLED", now.toLocaleString("sk-SK")); + + const nets = networkInterfaces(); + let ipAddresses = Object.create(null); // Or just '{}', an empty object + + for (const name of Object.keys(nets)) { + for (const net of nets[name]) { + // Skip over non-IPv4 and internal (i.e. 127.0.0.1) addresses + if (net.family === 'IPv4' && !net.internal) { + if (!ipAddresses[name]) { + ipAddresses[name] = []; + } + ipAddresses[name].push(net.address); + } + } + } + + try { + let p = path.join(__dirname + "/../databases/", 'settings.table'); + if (fs.existsSync(p)) { + + dbSettings = TABLE("settings"); + let responseSettings = await promisifyBuilder(dbSettings.find()); + id = responseSettings[0]["projects_id"]; + + console.log(exports.title, responseSettings, id); + } + } catch(err) { + console.error(err); + } + + + function sendValues() + { + if(Object.keys(allValues).length > 0) + { + if(id !== undefined) + { + delete allValues.__force__; + let dataToSend = {...allValues}; + dataToSend.id = id; + dataToSend.ipAddresses = ipAddresses; + //dataToSend.notify_date = new Date().toISOString().slice(0, 19).replace('T', ' '); + + //console.log(exports.title, "------------>sendValues", dataToSend); + + instance.send(0, dataToSend); + + allValues = {}; + } + else + { + console.log(exports.title, "unable to send data, id is undefined"); + } + + } + } + + instance.on("close", () => { + clearInterval(sendAllValuesInterval); + }) + + instance.on("data", (flowdata) => { + + allValues = { ...allValues, ...flowdata.data}; + + //console.log("DATA RECEIVED", flowdata.data); + + //__force__ + if(flowdata.data.hasOwnProperty("__force__")) + { + if(flowdata.data.__force__) + { + sendValues(); + } + } + }) + + sendAllValuesInterval = setInterval(() => { + sendValues(); + }, 60000*3); + +} + diff --git a/flow/monitorconsumption.js b/flow/monitorconsumption.js new file mode 100644 index 0000000..04a70c0 --- /dev/null +++ b/flow/monitorconsumption.js @@ -0,0 +1,156 @@ +exports.id = 'monitorconsumption'; +exports.title = 'Consumption'; +exports.version = '1.0.0'; +exports.author = 'Peter Širka'; +exports.group = 'Monitoring'; +exports.color = '#967ADC'; +exports.input = 0; +exports.output = 1; +exports.icon = 'bug'; +exports.options = { interval: 5000, enabled: true, monitorconsumption: true, monitorsize: true, monitorconnections: true, monitorfiles: true }; +exports.click = true; +exports.readme = `# Consumption monitoring + +This component measure CPU and memory consumption, open files and open connections of this application. It uses these Linux commands: \`ps\`, \`lsof\`, \`netstat\` and \`df\`. + +__Data Example__: + +\`\`\`javascript +{ + cpu: 0, // percentage + memory: 4096, // in bytes + size: 34303, // directory size in bytes + files: 34, // count of open files + connections: 343, // count of connections + uptime: '1-12:34:00' +} +\`\`\``; + +exports.html = `
+
+
+
@(Interval in milliseconds)
+
+
+
+
Monitor: Consumption + uptime
+
Monitor: Count of open files
+
Monitor: Count of open connections
+
Monitor: Directory size
+
`; + +exports.install = function(instance) { + + var current = { cpu: 0, memory: 0, files: 0, connections: 0, size: 0, uptime: '', counter: 0 }; + var tproc = null; + var Exec = require('child_process').exec; + var reg_empty = /\s{2,}/g; + var reg_appdisksize = /^[\d.,]+/; + + instance.custom.run = function() { + + if (tproc) { + clearTimeout(tproc); + tproc = null; + } + + var arr = []; + + // Get CPU and Memory consumption + instance.options.monitorconsumption && arr.push(function(next) { + Exec('ps -p {0} -o %cpu,rss,etime'.format(process.pid), function(err, response) { + + if (err) { + instance.throw(err); + } else { + var line = response.split('\n')[1]; + line = line.trim().replace(reg_empty, ' ').split(' '); + var cpu = line[0].parseFloat(); + current.cpu = cpu.floor(1); + current.memory = line[1].parseInt2() * 1024; // kB to bytes + current.uptime = line[2]; + } + + next(); + }); + }); + + // Get count of open files + instance.options.monitorfiles && arr.push(function(next) { + Exec('lsof -a -p {0} | wc -l'.format(process.pid), function(err, response) { + if (err) + instance.throw(err); + else + current.files = response.trim().parseInt2(); + next(); + }); + }); + + // Get count of opened network connections + instance.options.monitorconnections && arr.push(function(next) { + Exec('netstat -an | grep :{0} | wc -l'.format(F.port), function(err, response) { + if (err) { + instance.throw(err); + } else { + current.connections = response.trim().parseInt2() - 1; + if (current.connections < 0) + current.connections = 0; + } + next(); + }); + }); + + // Get directory size + instance.options.monitorsize && current.counter % 5 !== 0 && arr.push(function(next) { + Exec('du -hsb ' + process.cwd(), function(err, response) { + if (err) { + instance.throw(err); + } else { + var match = response.trim().match(reg_appdisksize); + match && (current.size = match.toString().trim().parseInt2()); + } + next(); + }); + }); + + arr.async(function() { + + tproc && clearTimeout(tproc); + + if (instance.options.enabled) { + tproc = setTimeout(instance.custom.run, instance.options.interval); + instance.send2(current); + } + + instance.custom.status(); + current.counter++; + }); + }; + + instance.custom.status = function() { + if (instance.options.enabled) + instance.status('{0}% / {1}'.format(current.cpu, current.memory.filesize())); + else + instance.status('Disabled', 'red'); + }; + + instance.on('click', function() { + instance.options.enabled = !instance.options.enabled; + instance.custom.status(); + + if (instance.options.enabled) { + current.counter = 0; + instance.custom.run(); + } + + }); + + instance.on('close', function() { + if (tproc) { + clearTimeout(tproc); + tproc = null; + } + }); + + setTimeout(instance.custom.run, 1000); +}; \ No newline at end of file diff --git a/flow/monitordisk.js b/flow/monitordisk.js new file mode 100644 index 0000000..1a83fd6 --- /dev/null +++ b/flow/monitordisk.js @@ -0,0 +1,96 @@ +exports.id = 'monitordisk'; +exports.title = 'Disk'; +exports.version = '1.0.0'; +exports.author = 'Peter Širka'; +exports.group = 'Monitoring'; +exports.color = '#F6BB42'; +exports.output = 1; +exports.icon = 'hdd-o'; +exports.click = true; +exports.options = { interval: 8000, path: '/', enabled: true }; +exports.readme = `# Disk monitoring + +This component monitors disk \`bytes\` consumption in Linux systems. It uses \`df\` command. + +__Data Example__: + +\`\`\`javascript +{ + total: 474549649408, + used: 39125245952, + free: 411294994432 +} +\`\`\``; + +exports.html = `
+
+
+
@(Interval in milliseconds)
+
+
+
@(Path)
+
+
+
`; + +exports.install = function(instance) { + + var current = { total: 0, used: 0, free: 0, path: '', type: '', percentUsed: 0 }; + var tproc = null; + + instance.custom.run = function() { + + if (tproc) { + clearTimeout(tproc); + tproc = null; + } + + if (!instance.options.enabled) + return; + + require('child_process').exec('df -hTB1 ' + instance.options.path, function(err, response) { + + tproc = setTimeout(instance.custom.run, instance.options.interval); + + if (err) { + instance.error(err); + return; + } + + response.parseTerminal(function(line) { + if (line[0][0] !== '/') + return; + current.total = line[2].parseInt(); + current.free = line[4].parseInt(); + current.used = line[3].parseInt(); + current.path = instance.options.path || '/'; + current.type = line[1]; + current.percentUsed = line[5]; + instance.custom.status(); + instance.send2(current); + }); + }); + }; + + instance.custom.status = function() { + if (instance.options.enabled) + instance.status(current.free.filesize() + ' / ' + current.total.filesize()); + else + instance.status('Disabled', 'red'); + }; + + instance.on('click', function() { + instance.options.enabled = !instance.options.enabled; + instance.custom.status(); + instance.options.enabled && instance.custom.run(); + }); + + instance.on('close', function() { + if (tproc) { + clearTimeout(tproc); + tproc = null; + } + }); + + setTimeout(instance.custom.run, 1000); +}; \ No newline at end of file diff --git a/flow/monitormemory.js b/flow/monitormemory.js new file mode 100644 index 0000000..98dd34b --- /dev/null +++ b/flow/monitormemory.js @@ -0,0 +1,87 @@ +exports.id = 'monitormemory'; +exports.title = 'Memory'; +exports.version = '1.0.0'; +exports.author = 'Peter Širka'; +exports.group = 'Monitoring'; +exports.color = '#F6BB42'; +exports.output = 1; +exports.click = true; +exports.icon = 'microchip'; +exports.options = { interval: 8000, enabled: true }; +exports.readme = `# Memory monitoring + +This component monitors memory \`bytes\` consumption in Linux systems. It uses \`free\` command. + +__Data Example__: + +\`\`\`javascript +{ + total: 33558769664, + used: 1998868480, + free: 2653708288 +} +\`\`\``; + +exports.html = `
+
+
+
@(Interval in milliseconds)
+
+
+
`; + +exports.install = function(instance) { + + var current = { total: 0, used: 0, free: 0 }; + var tproc = null; + + instance.custom.run = function() { + + if (tproc) { + clearTimeout(tproc); + tproc = null; + } + + if (!instance.options.enabled) + return; + + require('child_process').exec('free -b -t', function(err, response) { + + tproc = setTimeout(instance.custom.run, instance.options.interval); + + if (err) { + instance.error(err); + return; + } + + var memory = response.split('\n')[1].match(/\d+/g); + current.total = memory[0].parseInt(); + current.used = memory[1].parseInt() - memory[3].parseInt(); + current.free = current.total - current.used; + instance.custom.status(); + instance.send2(current); + }); + }; + + instance.custom.status = function() { + if (instance.options.enabled) + instance.status(current.free.filesize() + ' / ' + current.total.filesize()); + else + instance.status('Disabled', 'red'); + }; + + instance.on('click', function() { + instance.options.enabled = !instance.options.enabled; + instance.custom.status(); + instance.options.enabled && instance.custom.run(); + }); + + instance.on('close', function() { + if (tproc) { + clearTimeout(tproc); + tproc = null; + } + }); + + setTimeout(instance.custom.run, 1000); +}; \ No newline at end of file diff --git a/flow/mqtt.js b/flow/mqtt.js new file mode 100644 index 0000000..e34c940 --- /dev/null +++ b/flow/mqtt.js @@ -0,0 +1,441 @@ +exports.id = 'mqtt'; +exports.title = 'MQTT broker'; +exports.group = 'MQTT'; +exports.color = '#888600'; +exports.version = '1.0.1'; +exports.icon = 'exchange'; +exports.input = true; +exports.output = 0; +exports.author = 'Martin Smola'; +exports.variables = true; +exports.options = { host: '127.0.0.1', port: 1883 }; +exports.traffic = false; +exports.npm = ['mqtt']; + +exports.html = `
+
+
+
Hostname or IP address
+
+
+
Port
+
+
+
+
+
@(Client id)
+
@(Supports variables, example: \`client_{device-id}\`)
+
@(Secure (ssl))
+
+
+
+
+
+
@(Require Authorization)
+
+
+
+
+
@(Username)
+
+
+
@(Password)
+
+
+
+
+
+
@(LWT)
+
+
+
+
+
@(Last will topic)
+
@(Supports variables, example: \`lwt/{device-id}\`)
+
+
+
@(Last will message)
+
@(Supports variables, example: \`{device-id} is offline\`)
+
+
+
+`; + +exports.readme = ` +# MQTT Broker + +## Input +Allows to change connection programaticaly +\`\`\`javascipt +{ + host: '1.2.3.4', + port: '', + secure: true/false, + username: 'john', + password: 'X', + lwttopic: '', + lwtmessage: '', + clientid: '' +} +\`\`\` +`; + +var MQTT_BROKERS = []; +var mqtt; + +global.MQTT = {}; + +exports.install = function(instance) { + + var broker; + + mqtt = require('mqtt'); + + instance.on('data', function(flowdata){ + var data= flowdata.data; + var options = instance.options; + + if (data.host && data.port) + return instance.custom.reconfigure(data, options); + + if (data.close === true) + instance.close(NOOP); + }); + + instance.custom.reconfigure = function(o, old_options) { + + if (old_options) + MQTT_BROKERS = MQTT_BROKERS.remove(function(b){ + return b.id === old_options.id; + }); + + var options = instance.options; + + if (!options.host || !options.port) { + instance.status('Not configured', 'red'); + return; + } + + options.id = (options.username || '') + '@' + options.host + ':' + options.port; + + if (broker) { + broker.close(); + EMIT('mqtt.brokers.status', 'reconfigured', old_options.id, options.id); + } + + instance.custom.createBroker(); + }; + + instance.custom.createBroker = function() { + + ON('mqtt.brokers.status', brokerstatus); + + var o = instance.options; + var opts = { + host: o.host, + port: o.port, + id: o.id, + secure: o.secure, + rejectUnauthorized: false, + reconnectPeriod: 3000, + resubscribe: false + }; + + if (o.auth) { + opts.username = o.username; + opts.password = o.password; + } + + if (o.lwt) { + opts.will = { + topic: instance.arg(o.lwttopic), + payload: instance.arg(o.lwtmessage) + } + } + + if (o.clientid) + opts.clientId = instance.arg(o.clientid); + + broker = new Broker(opts); + MQTT_BROKERS.push(broker); + + instance.status('Ready'); + }; + + instance.close = function(done) { + + broker && broker.close(function() { + MQTT_BROKERS = MQTT_BROKERS.remove('id', instance.options.id); + EMIT('mqtt.brokers.status', 'removed', instance.options.id); + }); + + OFF('mqtt.brokers.status', brokerstatus); + + done(); + }; + + function brokerstatus(status, brokerid, err) { + if (brokerid !== instance.options.id) + return; + + switch (status) { + case 'connecting': + instance.status('Connecting', '#a6c3ff'); + break; + case 'connected': + instance.status('Connected', 'green'); + break; + case 'disconnected': + instance.status('Disconnected', 'red'); + break; + case 'connectionfailed': + instance.status('Connection failed', 'red'); + break; + case 'error': + instance.error('MQTT Error, ID: ' + instance.id + '\n ' + err); + break; + } + } + + instance.on('options', instance.custom.reconfigure); + instance.custom.reconfigure(); +}; + +FLOW.trigger('mqtt.brokers', function(next) { + var brokers = ['']; + MQTT_BROKERS.forEach(n => brokers.push(n.id)); + next(brokers); +}); + +MQTT.add = function(brokerid, componentid) { + var broker = MQTT_BROKERS.findItem('id', brokerid); + + if (broker) + broker.add(componentid); +}; + +MQTT.remove = function(brokerid, componentid) { + var broker = MQTT_BROKERS.findItem('id', brokerid); + broker && broker.remove(componentid); +}; + +MQTT.publish = function(brokerid, topic, data, options) { + var broker = MQTT_BROKERS.findItem('id', brokerid); + if (broker) + broker.publish(topic, data, options); + else + EMIT('mqtt.brokers.status', 'error', brokerid, 'No such broker'); +}; + +MQTT.subscribe = function(brokerid, componentid, topic, qos) { + var broker = MQTT_BROKERS.findItem('id', brokerid); + + if (!broker) + return; + + broker.add(componentid); + broker.subscribe(componentid, topic, qos); +}; + +MQTT.unsubscribe = function(brokerid, componentid, topic, qos) { + var broker = MQTT_BROKERS.findItem('id', brokerid); + if (!broker) + return; + + broker.unsubscribe(componentid, topic); + broker.remove(componentid); +}; + +MQTT.broker = function(brokerid) { + return MQTT_BROKERS.findItem('id', brokerid); +}; + +/* + + https://github.com/mqttjs/MQTT.js/blob/master/examples/client/secure-client.js + +*/ + +/* + TODO + + - add `birth` and `last will and testament` messages + - add options to self.client.connect(broker [,options]); - credentials, certificate etc. + + +*/ + +function Broker(options) { + var self = this; + + if (!options.host || !options.port) + return false; + + self.connecting = false; + self.connected = false; + self.closing = false; + self.components = []; + self.subscribtions = {}; + self.id = options.id; + self.options = options; + setTimeout(function() { + EMIT('mqtt.brokers.status', 'new', self.id); + }, 500); + return self; +} + +Broker.prototype.connect = function() { + + var self = this; + if (self.connected || self.connecting) + return EMIT('mqtt.brokers.status', self.connected ? 'connected' : 'connecting', self.id); + + self.connecting = true; + var broker = self.options.secure ? 'mqtts://' : 'mqtt://' + self.options.host + ':' + self.options.port; + + EMIT('mqtt.brokers.status', 'connecting', self.id); + + self.client = mqtt.connect(broker, self.options); + + self.client.on('connect', function() { + self.connecting = false; + self.connected = true; + if (self.reconnecting) { + EMIT('mqtt.brokers.status', 'reconnected', self.id); + self.reconnecting = false; + self.resubscribe(); + } + EMIT('mqtt.brokers.status', 'connected', self.id); + }); + + self.client.on('reconnect', function() { + self.connecting = true; + self.connected = false; + self.reconnecting = true; + EMIT('mqtt.brokers.status', 'connecting', self.id); + }); + + self.client.on('message', function(topic, message) { + message = message.toString(); + if (message[0] === '{') { + TRY(function() { + message = JSON.parse(message); + }, () => FLOW.debug('MQTT: Error parsing data', message)); + } + EMIT('mqtt.brokers.message', self.id, topic, message); + }); + + self.client.on('close', function(err) { + if (err && err.toString().indexOf('Error')) { + self.connecting = false; + self.connected = false; + EMIT('mqtt.brokers.status', 'error', self.id, err.code); + } + + if (self.connected || !self.connecting) { + self.connected = false; + EMIT('mqtt.brokers.status', 'disconnected', self.id); + } else if (self.connecting) { + self.connecting = false; + EMIT('mqtt.brokers.status', 'connectionfailed', self.id); + } + }); + + self.client.on('error', function(err) { + + if (self.connecting) { + self.client.end(); + self.connecting = false; + EMIT('mqtt.brokers.status', 'error', self.id, err); + } + }); + +}; + +Broker.prototype.disconnect = function(reconnect) { + var self = this; + if (!self.closing) + self.close(function(){ + reconnect && self.connect(); + }); +}; + +Broker.prototype.close = function(callback) { + var self = this; + self.closing = true; + + if ((self.connected || self.connecting) && self.client && self.client.end) + self.client.end(true, cb); + else + cb(); + + function cb() { + EMIT('mqtt.brokers.status', 'disconnected', self.id); + self.client && self.client.removeAllListeners(); + self.components = []; + self.client = null; + callback && callback(); + } +}; + +Broker.prototype.subscribe = function(componentid, topic) { + var self = this; + self.subscribtions[topic] = self.subscribtions[topic] || []; + if (self.subscribtions[topic].indexOf(componentid) > -1) + return; + self.client.subscribe(topic); + self.subscribtions[topic].push(componentid); +}; + +Broker.prototype.resubscribe = function() { + var self = this; + var topics = Object.keys(self.subscribtions); + for (var i = 0; i < topics.length; i++) + self.client.subscribe(topics[i]); +}; + +Broker.prototype.unsubscribe = function(componentid, topic) { + var self = this; + var sub = self.subscribtions[topic]; + if (sub) { + self.subscribtions[topic] = sub.remove(componentid); + self.client.connected && !self.subscribtions[topic].length && self.client.unsubscribe(topic); + } +}; + +Broker.prototype.publish = function(topic, data, options) { + var self = this; + if (!self.connected) + return; + + if (typeof(data) === 'object') { + options.qos = parseInt(data.qos || options.qos); + options.retain = data.retain || options.retain; + topic = data.topic || topic; + data.payload && (data = typeof(data.payload) === 'string' ? data.payload : JSON.stringify(data.payload)); + } + + if (options.qos !== 0 || options.qos !== 1 || options.qos !== 2) + options.qos = null; + + if (typeof(data) !== 'string') + data = JSON.stringify(data); + + self.client.publish(topic, data || '', options); +}; + +Broker.prototype.add = function(componentid) { + var self = this; + self.components.indexOf(componentid) === -1 && self.components.push(componentid); + self.connect(); +}; + +Broker.prototype.remove = function(componentid) { + var self = this; + self.components = self.components.remove(componentid); + !self.components.length && self.disconnect(); +}; diff --git a/flow/mqtt_subscribe_temperature.js b/flow/mqtt_subscribe_temperature.js new file mode 100644 index 0000000..b1fafd8 --- /dev/null +++ b/flow/mqtt_subscribe_temperature.js @@ -0,0 +1,129 @@ +exports.id = 'mqtt_subscribe_temperature'; +exports.title = 'MQTT subscribe temperature'; +exports.group = 'MQTT'; +exports.color = '#888600'; +exports.version = '1.0.2'; +exports.icon = 'sign-out'; +exports.output = 2; +exports.options = { host: 'tb-stage.worksys.io', port: 1883, tbname: "", username: "" }; +exports.npm = ['mqtt']; +exports.html = `
+
+
Hostname or IP address (if not empty - setting will override db setting)
+
+
+
Port
+
+
+
+
+
@(SBS thingsboard name)
+
+
+
@(topic)
+
+
+
`; + + +exports.install = function(instance) { + + var mqtt = require('mqtt'); + var client; + var opts; + + + //set opts according to db settings + instance.reconfigure = function() { + + if (instance.options.host !== "") { + //override settings from database + var o = instance.options; + opts = { + host: o.host, + port: o.port, + tbname: o.tbname, + topic: o.topic, + rejectUnauthorized: false, + resubscribe: false + }; + + console.log("wsmqttpublich -> loadSettings from instance.options", instance.options); + } + + connectToTbServer(); + } + + function connectToTbServer() { + var url = "mqtt://" + opts.host + ":" + opts.port; + console.log("MQTT URL: ", url); + + client = mqtt.connect(url, opts); + + client.on('connect', function() { + client.subscribe(`${opts.topic}`, (err) => { + if (!err) { + console.log("MQTT subscribed"); + } + }); + instance.status("Connected", "green"); + }); + + client.on('reconnect', function() { + instance.status("Reconnecting", "yellow"); + }); + + client.on('message', function(topic, message) { + // message is type of buffer + message = message.toString(); + //console.log('messageeee', message, typeof message); + if (message[0] === '{') { + try { + message = JSON.parse(message); + instance.send(0, message); + sendToTb({ temperature_out: message["temperature"] }, opts.tbname); + //console.log("teplota sokolov z cloudu: ", message); + } catch (error) { + console.log("Mqtt_subscribe_temperature: unable to parse mqtt temperature message"); + } + } + + }); + + client.on('close', function(err) { + if (err) console.log('client na mqtt teplotu sa odpojil') + client.reconnect(); + }); + + client.on('error', function(err) { + instance.status("Err: " + err.code, "red"); + }); + + } + + instance.close = function() { + client.end(); + }; + + instance.on('options', instance.reconfigure); + instance.reconfigure(); + + function sendToTb(values, tbName) { + + const dataToTb = { + [tbName]: [ + + { + ts: Date.now(), + values: values + } + ] + }; + + instance.send(1, dataToTb); + } +}; + + + + diff --git a/flow/mqttpublish.js b/flow/mqttpublish.js new file mode 100644 index 0000000..3f6aef0 --- /dev/null +++ b/flow/mqttpublish.js @@ -0,0 +1,134 @@ +exports.id = 'mqttpublish'; +exports.title = 'MQTT publish'; +exports.group = 'MQTT'; +exports.color = '#888600'; +exports.version = '1.1.0'; +exports.icon = 'sign-out'; +exports.input = true; +exports.output = 1; +exports.author = 'Martin Smola'; +exports.options = {}; + +exports.html = `
+
@(Brokers)
+
Topic
+
@(Supports variables, example: \`device/{device-id}\`)
+
Static message(string)
+
@(Supports variables), @(If specified then incoming data are ignored and this message is sent instead. Topic is required if static message is defined.)
+
@(QoS)
+
@(Retain)
+
+`; + +exports.readme = `# MQTT publish + +If the topic field is left empty and the data object does not have a 'topic' property then nothing is send. +Also if data object has a valid topic property it is assumed the object also have data property which is send as a payload; +Example: +\`\`\`javacsript +{ + topic: '/topic', + data: { + hello: 'world' + } +} +// in above case only { hello: 'world' } is published +\`\`\` + +If the topic field is not empty then the entire incomming data object is passed to the output.`; + + +exports.install = function(instance) { + + var PUBLISH_OPTIONS = {}; + + var ready = false; + + instance.custom.reconfigure = function() { + + ready = false; + + if (!MQTT.broker(instance.options.broker)) + return instance.status('No broker', 'red'); + + if (instance.options.broker) { + + MQTT.add(instance.options.broker, instance.id); + ready = true; + PUBLISH_OPTIONS.retain = instance.options.retain || false; + PUBLISH_OPTIONS.qos = parseInt(instance.options.qos || 0); + return; + } + + instance.status('Not configured', 'red'); + }; + + instance.on('options', instance.custom.reconfigure); + + instance.on('data', function(flowdata) { + if (!ready) + return; + var msg = instance.options.staticmessage ? instance.arg(instance.options.staticmessage) : flowdata.data; + var topic = instance.arg(instance.options.topic || msg.topic); + if (topic) { + if (msg.topic) + msg = msg.data; + MQTT.publish(instance.options.broker, topic, msg, PUBLISH_OPTIONS); + } else + instance.debug('MQTT publish no topic'); + + instance.send(flowdata); + }); + + instance.on('close', function() { + MQTT.remove(instance.options.broker, instance.id); + OFF('mqtt.brokers.status', instance.custom.brokerstatus); + }); + + + instance.custom.brokerstatus = function(status, brokerid, msg) { + if (brokerid !== instance.options.broker) + return; + + switch (status) { + case 'connecting': + instance.status('Connecting', '#a6c3ff'); + break; + case 'connected': + instance.status('Connected', 'green'); + break; + case 'disconnected': + instance.status('Disconnected', 'red'); + break; + case 'connectionfailed': + instance.status('Connection failed', 'red'); + break; + case 'new': + !ready && instance.custom.reconfigure(); + break; + case 'removed': + instance.custom.reconfigure(); + break; + case 'error': + instance.status(msg, 'red'); + break; + case 'reconfigured': + instance.options.broker = msg; + instance.reconfig(); + instance.custom.reconfigure(); + break; + } + } + + ON('mqtt.brokers.status', instance.custom.brokerstatus); + + instance.custom.reconfigure(); +}; diff --git a/flow/mqttsubscribe.js b/flow/mqttsubscribe.js new file mode 100644 index 0000000..e866178 --- /dev/null +++ b/flow/mqttsubscribe.js @@ -0,0 +1,168 @@ +exports.id = 'mqttsubscribe'; +exports.title = 'MQTT subscribe'; +exports.group = 'MQTT'; +exports.color = '#888600'; +exports.version = '1.1.0'; +exports.icon = 'sign-in'; +exports.output = 1; +exports.variables = true; +exports.author = 'Martin Smola'; +exports.options = {}; + +exports.html = `
+
@(Select a broker)
+
Topic
+
@(Supports variables, example: \`device/{device-id}\`)
+
@(QoS)
+
+`; + +exports.readme = ` +# MQTT subscribe + +The data recieved are passed to the output as follows: +\`\`\`javascript +{ + topic: '/lights/on', + data: 'kitchen' +} +\`\`\` + +If the topic is wildcard then there's an array of matches in flowdata repository which can be used in Function component like so: +\`\`\`javascript +// wildcard -> /+/status +// topic -> /devicename/status + +var match = flowdata.get('mqtt_wildcard'); +// match === ['devicename'] +\`\`\` + +More on wildcard topics [here](https://mosquitto.org/man/mqtt-7.html) +`; + +exports.install = function(instance) { + + var old_topic; + var ready = false; + + instance.custom.reconfigure = function(o, old_options) { + + + ready = false; + + if (!MQTT.broker(instance.options.broker)) + return instance.status('No broker', 'red'); + + if (instance.options.broker && instance.options.topic) { + + if (old_topic) + MQTT.unsubscribe(instance.options.broker, instance.id, old_topic); + + old_topic = instance.arg(instance.options.topic); + MQTT.subscribe(instance.options.broker, instance.id, old_topic); + ready = true; + return; + } + + instance.status('Not configured', 'red'); + }; + + instance.on('options', instance.custom.reconfigure); + + instance.on('close', function() { + MQTT.unsubscribe(instance.options.broker, instance.id, instance.options.topic); + OFF('mqtt.brokers.message', instance.custom.message); + OFF('mqtt.brokers.status', instance.custom.brokerstatus); + }); + + instance.custom.brokerstatus = function(status, brokerid, msg) { + if (brokerid !== instance.options.broker) + return; + + switch (status) { + case 'connecting': + instance.status('Connecting', '#a6c3ff'); + break; + case 'connected': + instance.status('Connected', 'green'); + break; + case 'disconnected': + instance.status('Disconnected', 'red'); + break; + case 'connectionfailed': + instance.status('Connection failed', 'red'); + break; + case 'new': + !ready && instance.custom.reconfigure(); + break; + case 'removed': + instance.custom.reconfigure(); + break; + case 'error': + instance.status(msg, 'red'); + break; + case 'reconfigured': + instance.options.broker = msg; + instance.reconfig(); + instance.custom.reconfigure(); + break; + } + } + + instance.custom.message = function(brokerid, topic, message) { + if (brokerid !== instance.options.broker) + return; + + var match = mqttWildcard(topic, old_topic); + if (match) { + var flowdata = instance.make({ topic: topic, data: message }) + flowdata.set('mqtt_wildcard', match); + instance.send2(flowdata); + } + } + + ON('mqtt.brokers.message', instance.custom.message); + ON('mqtt.brokers.status', instance.custom.brokerstatus); + + instance.custom.reconfigure(); +}; + +// https://github.com/hobbyquaker/mqtt-wildcard +function mqttWildcard(topic, wildcard) { + if (topic === wildcard) { + return []; + } else if (wildcard === '#') { + return [topic]; + } + + var res = []; + + var t = String(topic).split('/'); + var w = String(wildcard).split('/'); + + var i = 0; + for (var lt = t.length; i < lt; i++) { + if (w[i] === '+') { + res.push(t[i]); + } else if (w[i] === '#') { + res.push(t.slice(i).join('/')); + return res; + } else if (w[i] !== t[i]) { + return null; + } + } + + if (w[i] === '#') { + i += 1; + } + + return (i === w.length) ? res : null; +} diff --git a/flow/particulatesensor.js b/flow/particulatesensor.js new file mode 100644 index 0000000..c9cc2fa --- /dev/null +++ b/flow/particulatesensor.js @@ -0,0 +1,267 @@ +exports.id = 'particulatesensor'; +exports.title = 'Particulate sensor'; +exports.group = 'Worksys'; +exports.color = '#5CB36D'; +exports.version = '1.0.0'; +exports.output = ["red", "white"]; +exports.author = 'Rastislav Kovac'; +exports.icon = 'atom'; + +exports.readme = `# PM sensor`; + +/* + tento command zapne senzor zo stavu idle do stavu Meranie + rsPort.write([0x7E, 0x00, 0x00, 0x02, 0x01, 0x03, 0xF9, 0x7E] + tento command vypne senzor do stavu idle + rsPort.write([0x7E, 0x00, 0x01, 0x00, 0xFE, 0x7E] + tento command cita namerane data zo senzora + rsPort.write([0x7E, 0x00, 0x03, 0x00, 0xFC, 0x7E] +*/ + +const conversionTable = { + 1: "pm1_0", + 2: "pm2_5", + 3: "pm4_0", + 4: "pm10" + // 1: "Mass concentration PM1.0", + // 2: "Mass concentration PM2.5", + // 3: "Mass concentration PM4.0", + // 4: "Mass concentration PM10", + // 5: "Number concentration PM0.5", + // 6: "Number concentration PM1.0", + // 7: "Number concentration PM2.5", + // 8: "Number concentration PM4.0", + // 9: "Number concentration PM10", + // 10: "Typical Particle size", +} + + +exports.install = function(instance) { + + const fs = require("fs"); + const SerialPort = require('serialport'); + const { exec } = require('child_process'); + let rsPort = null; + let startToGetData = null; + const tbName = "mp93b2nvd7OoqgBeEyE7N18kjlAV1Y4ZNXwW0zLG"; + + + function writeToFile(data) + { + try { + if (fs.existsSync("err.txt")) { + let stats = fs.statSync("err.txt") + let fileSizeInBytes = stats.size; + if(fileSizeInBytes > 20000000) + { + fs.unlinkSync("err.txt"); + // file deleted + } + } + } catch(err) { + console.error(err) + } + + fs.writeFile("err.txt", data, {flag: "a"},function (err,data) { + if (err) { + return console.log(err); + } + console.log(data); + }); + } + + + function startRsPort() + { + + rsPort = new SerialPort("/dev/ttyUSB0", { autoOpen: false }); + + rsPort.on('open', function() { + exec("stty -F /dev/ttyUSB0 115200 min 1 time 5 ignbrk -brkint -icrnl -imaxbel -opost -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke", (error, stdout, stderr) => { + //exec("stty -F /dev/ttyUSB0 115200 min 1 time 5 cs8 -cstopb ignbrk -brkint -icrnl -imaxbel -opost -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke", (error, stdout, stderr) => { + instance.send(0,{"stdout":stdout,"stderr":stderr,"err":error}); + instance.send(0, exports.title + " RS USB port is set"); + }); + + setStateToMeasurement(); + + }) + + rsPort.on('error', function(err) { + instance.send(0, err.message); + let d = new Date(); + writeToFile(`${d}, ${err}`); + }) + + + rsPort.on("close", () => { + + clearInterval(startToGetData); + rsPort.close(); + instance.send(0, exports.title + " RS USB port is closed now ---> reopenning in 30 seconds"); + writeToFile(`${d}, RS USB port is closed now ---> reopenning in 30 seconds`); + rsPort = null; + setTimeout(startRsPort, 30000); + + }) + + + /* + RECEIVED BYTES + Byte 1 – 0x7E – start + Byte 2 – 0x00 – adresa + Byte 3 – 0x03 – cmd + Byte 4 – 0x00 – state podľa obr.2 + Byte 5 – 0x28 – počet prijatých dátových bytov + Na konci 0xD4 – CRC + Na konci 0x7E – stop + + STATE STATUS + 0 - 0x00 No error + 1 - 0x01 Wrong data length for this command (too much or little data) + 2 - 0x02 Unknown command + 3 - 0x03 No access right for command + 4 - 0x04 Illegal command parameter or parameter out of allowed range + 40 - 0x28 Internal function argument out of range + 67 - 0x43 Command not allowed in current state + */ + + let rsPortReceivedData = []; + let measuredValues; + + rsPort.on("data", function(data) { + + //console.log("rsPort data function called") + data = JSON.stringify(data); + + try { + data = JSON.parse(data); + } catch(err) { + console.log("[Particulate Sensor] - unable to convert data to JSON"); + return; + } + + // array of received bytes + data = data.data; + + rsPortReceivedData = [...rsPortReceivedData, ...data]; + + //console.log("----rsportALLDATA", rsPortReceivedData); + + if (rsPortReceivedData[0] != 126) { + rsPortReceivedData = []; + return; + } + + if (rsPortReceivedData[rsPortReceivedData.length - 1] != 126) return; + + if (rsPortReceivedData.length === 7) { + if (rsPortReceivedData[2] === 0){ + instance.send(0, "Particulate sensor is in Measurement-Mode now"); + rsPortReceivedData = []; + return; + } + } + + // convert special characters to single byte + rsPortReceivedData = rsPortReceivedData.toString(); + + rsPortReceivedData = rsPortReceivedData.replace(/125,94/g, "126"); + rsPortReceivedData = rsPortReceivedData.replace(/125,93/g, "125"); + rsPortReceivedData = rsPortReceivedData.replace(/125,51/g, "19"); + rsPortReceivedData = rsPortReceivedData.replace(/125,49/g, "17"); + + rsPortReceivedData = rsPortReceivedData.split(","); + + //we only take measured values from received data + measuredValues = rsPortReceivedData.slice(5, rsPortReceivedData.length-2); + + //console.log(measuredValues); + + let l = measuredValues.length; + //console.log("length----", l); + + let i, j, temparray, counter = 0, chunk = 4; + + for ( i = 0, j = l; i < j; i += chunk ) { + + counter++; + temparray = measuredValues.slice(i, i + chunk); + + convertDatabytesToFloat(temparray, conversionTable[counter]); + } + + counter = 0; + rsPortReceivedData = []; + + }) + + rsPort.open(); + } + + + function convertDatabytesToFloat(array, type) { + + //console.log("----", array); + if(array.length < 4 || type == undefined) return; + + let result = Buffer.from(array).readFloatBE(0); + result = parseFloat(result.toFixed(4)); + + //console.log(result, typeof result) + + let dataToTb = { + [tbName]: [ + { + "ts": Date.now(), + "values": { + [type]: result + } + } + ] + } + + instance.send(1, dataToTb); + + } + + + // get data from PM sensor + function getMeasurements() { + + rsPort.write([0x7E, 0x00, 0x03, 0x00, 0xFC, 0x7E], function(err) { + if(err){ + return console.log('[Particulate Sensor] - Error on write: ', err.message) + } + instance.send(0, "Getting data from PM sensor"); + }) + + } + + + // we set the state of sensor to start to measure + function setStateToMeasurement() { + + rsPort.write([0x7E, 0x00, 0x00, 0x02, 0x01, 0x03, 0xF9, 0x7E], function(err) { + if(err){ + return console.log('[Particulate Sensor] - Error on write: ', err.message) + } + instance.send(0, "PM sensor state set to measure"); + }) + + } + + + instance.on("close", function() { + + clearInterval(startToGetData); + rsPort.close(); + + }); + + + setTimeout(startRsPort, 10000); + startToGetData = setInterval(getMeasurements, 300000); + +}; + diff --git a/flow/rce_modul.js b/flow/rce_modul.js new file mode 100644 index 0000000..1796b3b --- /dev/null +++ b/flow/rce_modul.js @@ -0,0 +1,634 @@ +//! IMPORTANT +/** + * THIS IS JUST STATIC CODE FOR TEST PURPOSES OF CAMERA IN THE LAB. + * IT IS USED TO SEND ACTUAL NUMBER OF PEOPLE IN THE ZONE. ZONE IS CREATED IN datafromsky SOFTWARE + * DYNAMIC CODE UNDERNEATH FOR CLIENT PURPOSE + * IN DYNAMIC CODE IT IS NECCESSARY TO ADD "SINK_ID CALCULATION" (IN OUR CASE IT IS SET TO "id": 3 AT THE MOMENT) + * FOR STATIC CODE, YOU NEED TO SET ACCESS_TOKEN, CUBES_ID, ANALYTICS_ID, SEQUENCE_NUMBER AND SINK_ID MANUALLY + * IN OUR CASE NOW IT IS "VTLMQILFQG, 3, 0, 38, 3" + * + * ENABLE ON LINE 55: process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = 0 + */ + +// exports.id = 'rce_modul'; +// exports.title = 'RCE Modul'; +// exports.group = 'Worksys'; +// exports.color = '#5D9CEC'; +// exports.version = '1.0.1'; +// exports.output = ['red', 'white']; +// exports.author = 'Rastislav Kovac'; +// exports.icon = 'cloud-upload'; + +// exports.html = ` +//
+//
+//
+//
RCE MODUL

+//
+//
+//
+//
+//
@(User)
+//
+//
+//
@(Password)
+//
+//
+//
+//
+//
@(IP address)
+//
+//
+//
@(Port)
+//
+//
+//
@(My edge)
+//
+//
+//
+// `; + +// exports.readme = `RCE modul`; + + +// //disabling ssl certification +// //process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = 0 + + +// exports.install = function(instance) { + +// let startRequests; +// let ip; +// let port; +// let counter; +// let previousValue; + + +// let actualDataBody = +// { +// "sequence_number": "38", +// "sinks": [ +// { +// "id": 3 +// } +// ] +// } + +// actualDataBody = JSON.stringify(actualDataBody); + + +// let dataHeaders = { +// "Content-Type": "application/json", +// "Authorization": "Bearer VTLMQILFQG", +// "Accept-Version": 3.17, +// } + + + + + +// const getActualData = function() { + +// U.request(dataUrl, ["post"], actualDataBody , function(err, data, status, headers, host) { + +// if (status !== 200) { +// counter++; +// } + +// if (counter > 100 && counter < 102) { +// instance.reconfigure(); +// } + +// if (counter > 500){ +// instance.send(0, "Error, data are not being updated"); +// counter = 0; +// } + +// let response = JSON.parse(data); +// let value = response.sinks[0].data.value +// let dataToTB = { +// 'tbName': [ +// { +// "ts": Date.now(), +// "values": { +// "event_count": value, +// "event_description":"Pocet osob v miestnosti" +// } +// } +// ] +// }; + +// if (value !== previousValue){ +// instance.send(1, dataToTB); +// console.log(dataToTB.tbName[0]); +// } + +// previousValue = value; + +// }, {}, dataHeaders); +// } + + + + + +// instance.reconfigure = function() { + +// clearInterval(startRequests); + +// options = instance.options; +// can = options.username && options.userpassword && options.edge && options.ip? true : false; +// instance.status(can ? 'Gathering data' : 'Not configured', can ? 'green' : 'red'); + +// ip = options.ip; +// port = options.port; + +// dataUrl = `https://${ip}:${port}/cubes/3/analytics/0/sinks/data`; + + +// if (!can) +// return; + +// startRequests = setInterval(getActualData, 1000); + +// } + + +// instance.on('options', instance.reconfigure); +// setTimeout(instance.reconfigure, 3000); + +// } + + + + + + + +//! DYNAMIC CODE, ALL AUTOMATIC + +exports.id = 'rce_modul'; +exports.title = 'RCE Modul'; +exports.group = 'Worksys'; +exports.color = '#5D9CEC'; +exports.version = '1.0.2'; +exports.output = ['red', 'white']; +exports.author = 'Rastislav Kovac'; +exports.icon = 'cloud-upload'; + +exports.html = ` +
+
+
+
RCE MODUL

+
+
+
+
+
@(User)
+
+
+
@(Password)
+
+
+
+
+
@(IP address)
+
+
+
@(Port)
+
+
+
@(My edge)
+
+
+
+`; + +exports.readme = `RCE modul`; + + +//disabling ssl certification +process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = 0 + + +exports.install = function(instance) { + + let startRequests; + let ip, port, username, password; + let accessToken = "VTLMQILFQG"; + let tokenBody; + let allCubes = [0,1,2]; // tree cameras + let cubeId; + let analyticsId; + let sequence_number; + let counter = 0; + let previousValue; + + let previousValues = {}; + + + + let sinksUrlArray; + let dataUrlArray; + + + // all urls + let tokenUrl, cubesUrl, analyticsUrl, sinksUrl, dataUrl; + + let actualDataBody; + let dataHeaders; + + // all headers + // cubesHeaders === analyticsHeaders === dataHeaders + + const tokenHeaders = { + "Content-Type": "application/json", + "Accept-Version": 3.17, + } + + + dataHeaders = { + "Content-Type": "application/json", + "Authorization": `Bearer ${accessToken}`, + "Accept-Version": 3.17, + } + + + + // all body + // tokenBody === cubesBody === analyticsBody + + + + + // const getToken = function() { + // console.log("------ url",tokenUrl) + + // U.request(tokenUrl, ["post"], tokenBody, function(err, data, status, headers, host) { + // console.log('tokendata',data, err, status, headers, host); + + // if (status !== 200) { + // counter++; + // } + + // if (counter > 50 && counter < 52) { + // instance.reconfigure(); + // instance.debug(0, exports.title + " Somethimg is going wrong, reconfiguring ..."); + // } + + // if (counter > 100){ + // instance.send(0, exports.title + " Error, data are not being updated"); + // instance.debug(0, exports.title + " Error, data are not being updated"); + // counter = 0; + // } + + // const response = JSON.parse(data); + // console.log("ii--ii", response); + // //accessToken = response.access_tokens[0]; + + // console.log(accessToken); + + // dataHeaders = { + // "Content-Type": "application/json", + // "Authorization": `Bearer ${accessToken}`, + // "Accept-Version": 3.17, + // } + + // getCubes(); + + // }, {}, tokenHeaders); + // } + + + + + let cubes = { + "cubes": [ + { + "id": 0, + "name": "camera 1" + }, + { + "id": 1, + "name": "Camera 2" + }, + { + "id": 2, + "name": "Camera 3" + } + ] + } + + + + // const getCubes = function() { + + + // U.request(cubesUrl, ["get"], tokenBody, function(err, data, status, headers, host) { + // //console.log("getcubes data",data, err, status, headers, host); + // if (status !== 200) { + // counter++; + // } + + // const response = JSON.parse(data); + // console.log("getcubes parsed data",response); + // // cubesId = response.cubes[0].id; + + // response.cubes.map( cube => { + // allCubes.push(cube.id); + // }) + + + + // allCubes.map(cubesId => { + // analyticsUrl = `https://${ip}:${port}/cubes/${cubesId}/analytics`; + // getAnalytics(); + + // }) + + + // }, {}, dataHeaders); + // } + + + + + // let sinksUrlArray = [ + // `https://${ip}:${port}/cubes/0/analytics/0/sinks`, + // `https://${ip}:${port}/cubes/1/analytics/0/sinks`, + // `https://${ip}:${port}/cubes/2/analytics/0/sinks`, + // ]; + + + + + // const getAnalytics = function() { + + // U.request(analyticsUrl, ["get"], tokenBody, function(err, data, status, headers, host) { + // //console.log("getAnalytics", data, err, status, headers, host); + // if (status !== 200) { + // counter++; + // } + + // //console.log("rrrrr", err, data, status, headers, host); + // let response = JSON.parse(data); + + // //console.log("response", response); + // //sequence_number = response.analytics[0].sequence_number; + // analyticsId = response.analytics[0].id; + + // //console.log("analyticsid", analyticsId); + + // sinksUrl = `https://${ip}:${port}/cubes/${cubesId}/analytics/${analyticsId}/sinks`; + + + // //getActualData(); + // getSinks(); + + // }, {}, dataHeaders); + + // } + + + + // let dataUrlArray = [ + // `https://${ip}:${port}/cubes/0/analytics/0/sinks/data`, + // `https://${ip}:${port}/cubes/1/analytics/0/sinks/data`, + // `https://${ip}:${port}/cubes/2/analytics/0/sinks/data`, + + // ] + + + + const mapSinks = function() { + sinksUrlArray.map((sinksUrl, index) => { + getSinks(sinksUrl, index); + }) + } + + + + + const getSinks = function(sinksUrl, index) { + + U.request(sinksUrl, ["get"], tokenBody, function(err, data, status, headers, host) { + console.log("getSinks", data, err, status, headers, host); + if (status !== 200) { + counter++; + } + + //console.log("rrrrr", err, data, status, headers, host); + let response = JSON.parse(data); + + //console.log("getSinks response", response); + sequence_number = response.sequence_number; + + actualDataBody = { + "sequence_number": sequence_number, + "sinks": [] + }; + + + + // dataUrl = `https://${ip}:${port}/cubes/${cubesId}/analytics/${analyticsId}/sinks/data`; + dataUrl = dataUrlArray[index]; + + response.sinks.map( item => { + actualDataBody.sinks.push({"id": item.id}) + }) + + + console.log("actualdatabody", index, actualDataBody) + + actualDataBody = JSON.stringify(actualDataBody); + //console.log("actualDataBody", actualDataBody); + + startRequests = setInterval(getActualData, 30000, dataUrl, actualDataBody); + + }, {}, dataHeaders); + + } + + + + let lavyCrossWalk = "A90zgZKXj6nmEMNrpBkX4Ek48y1ReLva3Vbxwqod"; + let outOfTrebicR = "oAVmg6jdlZ0bqKN8Ln70wLkM3WBvRyEeax91OY42" + + + const getActualData = function(dataUrl, actualDataBody) { + + U.request(dataUrl, ["post"], actualDataBody , function(err, data, status, headers, host) { + //console.log(data, err, status, headers, host); + if (status !== 200) { + //counter++; + } + + if(counter > 20) + { + clearInterval(startRequests); + instance.debug(0, exports.title + " 'getActualData function' Error, data are not being updated"); + + } + let response = JSON.parse(data); + + let actualTime = Date.now(); + let values = {}; + + if(dataUrl == `https://${ip}:${port}/cubes/0/analytics/0/sinks/data`) + { + console.log("prva kamera") + response.sinks.map(item => { + + console.log("getActualData", item.id); + console.log("getActualData", item); + if(item.name == 'Prechod-positive') + { + values["people_passing_left"] = item.data.value; + } + if(item.name == 'Prechod-negative') + { + values["people_passing_right"] = item.data.value; + } + if(item.name == 'chodci-zona-l') + { + values["people_left"] = item.data.value; + } + if(item.name == 'chodci-zona-r') + { + values["people_right"] = item.data.value; + } + + + previousValues[item.name] = item.data.value; + }) + + + let dataToTB = { + "Lb6wB2EDpqr1jJdx0R58g07ly9KPoAN3GO4egmvM": [ + { + "ts": actualTime, + "values": values + } + ] + } +// "people_left" +// "people_right" + +// "aggregation_per_5minutes" +// "aggregation_per_15minutes" + } + + + if(dataUrl == `https://${ip}:${port}/cubes/1/analytics/0/sinks/data`) + { + // console.log("druha kamera") + // console.log() + // response.sinks.map(item => { + + // console.log("getActualData", item.id); + // }) + } + + + if(dataUrl == `https://${ip}:${port}/cubes/2/analytics/0/sinks/data`) + { + // console.log("tretia kamera") + // response.sinks.map(item => { + + // console.log("getActualData", item.id); + // console.log("getActualData", item.data); + // }) + } + + + // let value = response.sinks[0].data.value + // let dataToTB = { + // 'tbName': [ + // { + // "ts": Date.now(), + // "values": { + // "event_count": value, + // "event_description":"Pocet osob v miestnosti" + // } + // } + // ] + // }; + + // if (value !== previousValue){ + // instance.send(1, dataToTB); + // console.log(dataToTB.tbName[0]); + // } + + // previousValue = value; + + }, {}, dataHeaders); + } + + + + + + instance.reconfigure = function() { + + clearInterval(startRequests); + + options = instance.options; + username = options.username; + password = options.userpassword; + ip = options.ip; + port = options.port; + edge = options.edge; + + can = username && password && edge && ip && port? true : false; + instance.status(can ? 'Gathering data' : 'Not configured', can ? 'green' : 'red'); + + if (!can) + return; + + tokenUrl = `https://${ip}:${port}/users/auth`; + cubesUrl = `https://${ip}:${port}/cubes`; + + tokenBody = { + "username": username, + "password": password + } + + tokenBody = JSON.stringify(tokenBody); + //console.log("tokenBody", tokenBody); + + + sinksUrlArray = [ + `https://${ip}:${port}/cubes/0/analytics/0/sinks`, + `https://${ip}:${port}/cubes/1/analytics/0/sinks`, + `https://${ip}:${port}/cubes/2/analytics/0/sinks`, + ]; + + dataUrlArray = [ + `https://${ip}:${port}/cubes/0/analytics/0/sinks/data`, + `https://${ip}:${port}/cubes/1/analytics/0/sinks/data`, + `https://${ip}:${port}/cubes/2/analytics/0/sinks/data`, + + ] + + + //startRequests = setInterval(getToken, 10000); + setTimeout(mapSinks, 5000); + //getToken(); + + } + + + instance.on('options', instance.reconfigure); + setTimeout(instance.reconfigure, 5000); + + + + +} + + + + + + diff --git a/flow/rce_peoplecount.js b/flow/rce_peoplecount.js new file mode 100644 index 0000000..cc013dd --- /dev/null +++ b/flow/rce_peoplecount.js @@ -0,0 +1,79 @@ +exports.id = 'rce_peoplecount'; +exports.title = 'RCE people count'; +exports.group = 'Worksys'; +exports.color = '#704cff'; +exports.input = true; +exports.output = 1; +exports.author = 'Rastislav Kovac'; +exports.icon = 'users'; +exports.version = '1.0.0'; +exports.readme = '# Rce people count'; + +exports.install = function(instance) { + + instance.on('data', function(allData) { + + let values = {}; + + allData = allData.data; + let body = allData.body; + + // epoch timestamp + let actualTime = parseInt(body["data_start_timestamp"]); + let value = body.data.value; + + values["people_count"] = value; + // values["status"] = "OK"; + + let tbName = "mp93b2nvd7OoqgBeEyE7N18kjlAV1Y4ZNXwW0zLG"; + + let dataToTB = { + [tbName]: [ + { + "ts": actualTime, + "values": values + } + ] + }; + + instance.send(0, dataToTB); + }); + + +}; + + +let a = { + "query": {}, + "body": { + "analytic_id": 0, + "block_name": "sbs", + "cube_id": 2, + "data": { + "data_validity": "ok", + "object_count": 5, + "value": 5 + }, + "data_end_timestamp": "1632327078920", + "data_start_timestamp": "1632327078920", + "id": 1, + "name": "count", + "operator_attribute": "object_count", + "output_type": "widget", + "output_value_type": "value" + }, + "session": null, + "user": null, + "files": [], + "headers": { + "host": "10.0.0.35:12345", + "content-type": "application/json", + "content-length": "393", + "connection": "Keep-Alive", + "accept-encoding": "gzip, deflate", + "accept-language": "en-US,*", + "user-agent": "Mozilla/5.0" + }, + "url": "/ludia/", + "params": {} +}; \ No newline at end of file diff --git a/flow/send_to_display.js b/flow/send_to_display.js new file mode 100644 index 0000000..69e7531 --- /dev/null +++ b/flow/send_to_display.js @@ -0,0 +1,84 @@ +exports.id = 'sendtodisplay'; +exports.title = 'Send to display'; +exports.group = 'Worksys'; +exports.color = '#5D9CEC'; +exports.version = '0.0.1'; +exports.output = 2; +exports.input = 2; +exports.author = 'Rastislav Kovac'; +exports.icon = 'cloud-upload'; + +const { execSync } = require('child_process'); + +exports.install = function(instance) { + + const getDepartures = setInterval(checkIfWeHaveDepartures, 60000); + let departures = []; + let firstDepartureTime = getCurrentTimeFormatted(); + + function checkIfWeHaveDepartures() { + if (departures.length === 0) instance.send(1, "reload"); + } + + instance.on('1', flowdata => { + departures = flowdata.data; + }) + + instance.on('close', function() { + clearInterval(getDepartures); + }) + + instance.on('0', function(_) { + + // for some reason new Date() function does not set month and year in local timezone, so we use "timedatectl" command + let dateFromCommand = execSync("timedatectl", {}).toString(); + + let first = dateFromCommand.search("time:"); + let last = dateFromCommand.search(" CE"); + dateFromCommand = dateFromCommand.slice(first, last); //Thu 2022-04-07 13:38:03 + + const d = new Date(dateFromCommand); + let hour = d.getHours(); + let minute = d.getMinutes(); + console.log('******hour, minute', hour, minute) + + if (minute < 10) minute = `0${minute}`; + if (hour < 10) hour = `0${hour}`; + + const now = `${hour}:${minute}`; + + console.log('******--------', firstDepartureTime, now); + console.log('******--------', firstDepartureTime < now); + + if (firstDepartureTime < now) { + + let departures_filtered = departures.filter(departure => { + const timeOfDeparture = departure[1]; + if (now < timeOfDeparture) return true; + return false; + }) + + if (departures_filtered.length > 0) firstDepartureTime = departures_filtered[0][1]; + else firstDepartureTime = "00:00"; + + instance.send(0, departures_filtered.slice(0, 10)); + } + + }) + +} + + +function getCurrentTimeFormatted() { + const now = new Date(); // Get the current date and time + + const hours = now.getHours(); // Get the current hour (0-23) + const minutes = now.getMinutes(); // Get the current minute (0-59) + + // Pad with leading zero if the number is less than 10 + const formattedHours = hours < 10 ? '0' + hours : hours; + const formattedMinutes = minutes < 10 ? '0' + minutes : minutes; + + return `${formattedHours}:${formattedMinutes}`; +} + diff --git a/flow/serialport_helper.js b/flow/serialport_helper.js new file mode 100644 index 0000000..d962c56 --- /dev/null +++ b/flow/serialport_helper.js @@ -0,0 +1,86 @@ +const { exec } = require('child_process'); + +function openPort(port){ + return new Promise((resolve, reject) => { + + var callbackError = function(data) { + port.removeListener('error', callbackError); + port.removeListener('open', callbackError); + + reject(err.message); + }; + + var callbackOpen = function(data) { + port.removeListener('error', callbackError); + port.removeListener('open', callbackOpen); + + resolve("port open: ok"); + }; + + port.on('error', callbackError); + port.on('open', callbackOpen); + + port.open(); + + }) + } + + function runSyncExec(command){ + return new Promise((resolve, reject) => { + + exec(command, (error, stdout, stderr) => { + if(error == null) resolve(stdout); + reject(error); + }); + + }) + } + + async function writeData(port, data, readbytes, timeout){ + return new Promise((resolve, reject) => { + + if(readbytes == undefined) readbytes = 0; + if(timeout == undefined) timeout = 10000; + + var callback = function(data) { + rsPortReceivedData.push(...data); + let l = rsPortReceivedData.length; + + if(l >= readbytes) + { + port.removeListener('data', callback); + + clearTimeout(t); + resolve(rsPortReceivedData); + } + }; + + let t = setTimeout(() => { + port.removeListener('data', callback); + reject("TIMEOUT READING"); + }, timeout); + + let rsPortReceivedData = []; + + if(readbytes > 0) port.on('data', callback); + + port.write(Buffer.from(data), function(err) { + if (err) { + port.removeListener('data', callback); + reject(err.message); + } + + if(readbytes == 0) + { + resolve(rsPortReceivedData); + } + + }); + }) +} + +module.exports = { + openPort, + runSyncExec, + writeData +} \ No newline at end of file diff --git a/flow/sokolovodchody.js b/flow/sokolovodchody.js new file mode 100644 index 0000000..c0c1d12 --- /dev/null +++ b/flow/sokolovodchody.js @@ -0,0 +1,704 @@ +exports.id = 'sokolovodchodyspojov'; +exports.title = 'Sokolov odchody spojov'; +exports.version = '1.0.0'; +exports.group = 'Worksys'; +exports.color = '#2134B0'; +exports.input = 1; +exports.output = ["blue", "white", "yellow", "red"]; +exports.click = false; +exports.author = 'Rastislav Kovac'; +exports.options = { edge: "undefined" }; + +exports.readme = `Get bus departures from bus stop in Sokolov`; + +const instanceSendTo = { + debug: 0, + departures: 1, + delays: 2 +}; + + +exports.install = function(instance) { + + const parseString = require('xml2js').parseString; + const fetch = require('node-fetch'); + + const { execSync } = require('child_process'); + + class FetchRequest { + + async getDepartures() { + + // use simpleDate to get bus departures for current day, otherwise use date to get departures for next day + // it must be in format 2022-12-05 + console.log(new Date()) + + //let date = new Date().toLocaleString().split('/'); //[ '12', '6', '2022, 11:47:32 PM' ] + // console.log(date) + // console.log(new Date().toLocaleString('zh', { hour12: false })) + // console.log(new Date().toLocaleString('sk', { hour12: false })) + const date = new Date(new Date().toLocaleString("en-US", {timeZone: "Europe/Bratislava" })) + + + const year = date.getFullYear(); + let month = date.getMonth() + 1; + let day = date.getDate(); + + console.log(year, month, day) + + + + if(('' + month).length == 1) month = '0' + month; + if(('' + day).length == 1) day = '0' + day; + + // if(date[0].length == 1) date[0] = '0' + date[0]; + // if(date[1].length == 1) date[1] = '0' + date[1]; + + // const year = date[2].slice(0,4); // "2022" + // const month = date[0]; + // const day = date[1]; + + const simpleDate = `${year}-${month}-${day}`; + console.log('simple date ~~~~~~', simpleDate) + + const sr = + '' + + ' ' + + '' + + '' + + '411000469' + + '0' + + `${simpleDate}` + + // '2022-12-05' + + `${simpleDate}` + + // '2022-12-05' + + '411' + + '' + + '' + + ''; + + + let response = await fetch('http://62.141.28.141:5533/CPWebSvc2/service.asmx', { + method : "POST", + body: sr, + headers: {'Content-Type':'application/soap+xml'} + }) + + //console.log('bus departures``````````', response) + console.log('response ok ^^^^^^ dep',response.ok); + if (!response.ok) { + const message = `An error has occured: ${response.status}`; + throw new Error(message); + } + + response = await response.text(); + //console.log('bus departures``````````', response) + + const result = this.parseDepartures(response); + return result; + } + + parseDepartures(data) { + + const allRegex = [/tn="[a-z]*/g, /lnt="[a-z]*/g, /td="[a-z]*/g, /ebn="[a-z]*/g]; + let index = 0; + + //we receive all departures for current day + const allDepartures = []; + //we filter just departures which are in future + const futureDepartures = []; + + let value = null; + + //for (const regexp of allRegex) + for (let i = 0; i < allRegex.length; i++) + { + index = 0; + const matches = data.matchAll(allRegex[i]); + // console.log('-----', matches) + + for (const match of matches) { + + if(!allDepartures[index]) allDepartures[index] = []; + + //console.log(`Found ${match[0]} start=${match.index} end=${match.index + match[0].length}.`); + const substr = match.input.slice(match.index + match[0].length, ); + const endOfSearchedString = substr.indexOf('"'); + + if(i == 1) value = substr.slice(4, endOfSearchedString); // bus number e.g. '7' + else if (i == 3) value = substr.slice(13, capitalizeFirstLetter(endOfSearchedString)); //name of buss stop e.g. "Sidlisko Michal skola" + else if (i == 2) { + + // in case date, or time is just 1 number long (5.7.22 4:5), we need to change it to (05.07.22 04:05) + value = substr.slice(0, endOfSearchedString); // "5.11.22 4:5" + + let date = value.slice(0, value.indexOf(' ')); // "5.11.22" + date = date.split('.') // ['5', '11', '22'] + if(date[0].length == 1) date[0] = '0' + date[0]; + if(date[1].length == 1) date[1] = '0' + date[1]; + date = date.join('.') + + let time = value.slice(value.indexOf(' ') + 1, value.length); // "4:5" ==> '04:05' + time = time.split(':'); + if(time[0].length == 1) time[0] = '0' + time[0]; + if(time[1].length == 1) time[1] = '0' + time[1]; + time = time.join(':') + + value = date + ' ' + time; + } + else value = substr.slice(0, endOfSearchedString); + + allDepartures[index].push(value); + index++; + } + } + + //return allDepartures; + // console.log('---',allDepartures); + //instance.send(instanceSendTo.allDepartures, allDepartures); + + //we filter just departures, that are in future + let date = new Date(); + date = date.toISOString(); + console.log('******date', date) + + allDepartures.map(item => { + + let busDeparture = item[2]; + let temp = [...busDeparture.matchAll(/\d\d/g)].map(a => a[0]); //[ '24', '11', '22', '04', '05' ] + + busDeparture = new Date(`20${temp[2]}-${temp[1]}-${temp[0]} ${temp[3]}:${temp[4]}`) + //console.log(busDeparture.toISOString(), date.toISOString()) + + //date je UTC time, preto sa zmenia allDepartures az po 01:00 + //console.log('***********',busDeparture, date) + if(busDeparture.toISOString() > date) + { + item[2] = `${temp[3]}:${temp[4]}` + futureDepartures.push(item); + } + + }) + + return futureDepartures; + } + + + async getDelays() { + + const delays = []; + const d = new Date(); + const date = d.toISOString(); + + const sr = + '' + + ' ' + + '' + + '' + + '411000469' + + `${date}` + + '10' + + '0' + + '411' + + '' + + '' + + ''; + + let response = await fetch('http://62.141.28.141:5533/CPWebSvc2/service.asmx', { + method : "POST", + body: sr, + headers: {'Content-Type':'application/soap+xml'} + }) + + //console.log('delays ------', response); + //console.log('response ok ^^^^^^ dep',response.ok); + if (!response.ok) { + const message = `An error has occured: ${response.status}`; + throw new Error(message); + } + + response = await response.text(); + //console.log('delays ~~~~~', response); + + parseString(response, function (err, result) { + //console.log(result) + //console.log('asd',result['soap:Envelope']['soap:Body'][0].FindAVLDepartureFromBusStopTableResponse[0].departureCollection[0].Departure); + result = result['soap:Envelope']['soap:Body'][0].FindAVLDepartureFromBusStopTableResponse[0].departureCollection[0].Departure; + //console.log(checkNested(result,'soap:Envelope.soap:Body[0].FindAVLDepartureFromBusStopTableResponse[0].departureCollection[0].Departure' )); + //console.log(checkNested(result,'soapEnvelope' )); + // result = result['soap:Envelope']['soap:Body'][0].FindAVLDepartureFromBusStopTableResponse[0].departureCollection[0]; + // console.log('====', result) + if(!result) return; + for (const item of result) + { + let a = null; + //console.log(item) + if(item.Delay[0].Departure[0].startsWith('0001-01')) a = [item.TripNumber[0], 0]; + else a = [item.TripNumber[0], item.Delay[0].Departure[0], item.Delay[0].Arrival[0]]; + delays.push(a); + + } + }); + + return delays; + } + + } + + const departureRequest = new FetchRequest(); + const delaysRequest = new FetchRequest(); + + + const getDepartures = () => { + + departureRequest.getDepartures() + .then(futureDepartures => { + let responseObj = {}; + responseObj["departures"] = futureDepartures; + console.log('future +++++++', responseObj) + + instance.send(instanceSendTo.departures, responseObj); + }).catch(error => { + console.log('Error fetching bus departures - repeating request in 1 minute', error); + setTimeout(() => getDepartures(), 60000) + }); + } + + + function getDelays(){ + + delaysRequest.getDelays() + .then(delays => { + let responseObj = {}; + responseObj["delays"] = delays; + console.log('delays -------', responseObj) + + instance.send(instanceSendTo.delays, responseObj); + }) + .catch(error => { + console.log('Error fetching bus delays data', error); + }); + + } + + + setTimeout(getDepartures, 30000); + setInterval(getDelays, 60000); + + + // let startDay = new Date().getDay(); + let date = new Date().toLocaleString().split('/'); //[ '12', '6', '2022, 11:47:32 PM' ] + let startDay = date[1]; //'6' + + + function checkIfNewDay() { + let currentDay = new Date().toLocaleString().split('/')[1]; + + console.log('new day check -----',startDay, currentDay); + if(currentDay == startDay) return; + + getDepartures(); + startDay = currentDay; + } + + //we check if day changed, if yes, we get bus departures. we check every 15 minutes + setInterval(checkIfNewDay, 900000); + + + function capitalizeFirstLetter(string) { + return string[0].toUpperCase() + string.slice(1); + } + +}; + + + + + + +const aodchody = [ + [ + "2", + "3", + "16.11.22 4:5", + "Závodu míru" + ], + [ + "290", + "3", + "16.11.22 4:25", + "Závodu míru" + ], + [ + "292", + "3", + "16.11.22 4:48", + "Závodu míru" + ], + [ + "296", + "3", + "16.11.22 4:58", + "Závodu míru" + ], + [ + "6", + "3", + "16.11.22 5:5", + "Závodu míru" + ], + [ + "300", + "3", + "16.11.22 5:18", + "Závodu míru" + ], + [ + "8", + "3", + "16.11.22 5:55", + "Závodu míru" + ], + [ + "16", + "3", + "16.11.22 6:30", + "Závodu míru" + ], + [ + "1", + "33", + "16.11.22 6:45", + "sídl. Michal škola" + ], + [ + "18", + "3", + "16.11.22 6:52", + "Hrušková" + ], + [ + "310", + "3", + "16.11.22 7:0", + "Závodu míru" + ], + [ + "22", + "3", + "16.11.22 7:10", + "Závodu míru" + ], + [ + "5", + "33", + "16.11.22 7:50", + "sídl. Michal škola" + ], + [ + "32", + "3", + "16.11.22 8:10", + "Závodu míru" + ], + [ + "7", + "33", + "16.11.22 8:25", + "sídl. Michal škola" + ], + [ + "100", + "3", + "16.11.22 8:30", + "Závodu míru" + ], + [ + "9", + "33", + "16.11.22 8:50", + "sídl. Michal škola" + ], + [ + "34", + "3", + "16.11.22 9:0", + "Závodu míru" + ], + [ + "38", + "3", + "16.11.22 9:20", + "Závodu míru" + ], + [ + "11", + "33", + "16.11.22 9:30", + "sídl. Michal škola" + ], + [ + "298", + "3", + "16.11.22 9:55", + "Závodu míru" + ], + [ + "2", + "7", + "16.11.22 10:10", + "Březová, aut. st." + ], + [ + "13", + "33", + "16.11.22 10:20", + "sídl. Michal škola" + ], + [ + "48", + "3", + "16.11.22 10:50", + "Závodu míru" + ], + [ + "50", + "3", + "16.11.22 11:13", + "Závodu míru" + ], + [ + "15", + "33", + "16.11.22 11:25", + "sídl. Michal škola" + ], + [ + "52", + "3", + "16.11.22 11:40", + "Závodu míru" + ], + [ + "17", + "33", + "16.11.22 11:52", + "sídl. Michal škola" + ], + [ + "56", + "3", + "16.11.22 12:20", + "Závodu míru" + ], + [ + "62", + "3", + "16.11.22 12:40", + "Závodu míru" + ], + [ + "64", + "3", + "16.11.22 12:55", + "Závodu míru" + ], + [ + "19", + "33", + "16.11.22 13:0", + "sídl. Michal škola" + ], + [ + "66", + "3", + "16.11.22 13:20", + "Stará ovčárna" + ], + [ + "21", + "33", + "16.11.22 13:35", + "sídl. Michal škola" + ], + [ + "23", + "33", + "16.11.22 14:0", + "sídl. Michal škola" + ], + [ + "72", + "3", + "16.11.22 14:5", + "Závodu míru" + ], + [ + "25", + "33", + "16.11.22 14:42", + "sídl. Michal škola" + ], + [ + "94", + "3", + "16.11.22 14:48", + "Závodu míru" + ], + [ + "27", + "33", + "16.11.22 15:5", + "sídl. Michal škola" + ], + [ + "106", + "3", + "16.11.22 15:9", + "Závodu míru" + ], + [ + "84", + "3", + "16.11.22 15:35", + "Závodu míru" + ], + [ + "29", + "33", + "16.11.22 15:35", + "sídl. Michal škola" + ], + [ + "6", + "7", + "16.11.22 15:50", + "Březová, aut. st." + ], + [ + "96", + "3", + "16.11.22 16:10", + "Závodu míru" + ], + [ + "31", + "33", + "16.11.22 16:10", + "sídl. Michal škola" + ], + [ + "4", + "7", + "16.11.22 16:25", + "Březová, aut. st." + ], + [ + "102", + "3", + "16.11.22 16:30", + "Závodu míru" + ], + [ + "302", + "3", + "16.11.22 16:44", + "Závodu míru" + ], + [ + "8", + "7", + "16.11.22 16:55", + "Březová, aut. st." + ], + [ + "108", + "3", + "16.11.22 17:5", + "Stará ovčárna" + ], + [ + "112", + "3", + "16.11.22 17:30", + "Závodu míru" + ], + [ + "114", + "3", + "16.11.22 17:53", + "Závodu míru" + ], + [ + "118", + "3", + "16.11.22 18:10", + "Závodu míru" + ], + [ + "120", + "3", + "16.11.22 18:30", + "Závodu míru" + ], + [ + "122", + "3", + "16.11.22 18:50", + "Závodu míru" + ], + [ + "124", + "3", + "16.11.22 19:15", + "Závodu míru" + ], + [ + "126", + "3", + "16.11.22 19:30", + "Závodu míru" + ], + [ + "130", + "3", + "16.11.22 19:50", + "Závodu míru" + ], + [ + "132", + "3", + "16.11.22 20:15", + "Závodu míru" + ], + [ + "134", + "3", + "16.11.22 20:45", + "Závodu míru" + ], + [ + "136", + "3", + "16.11.22 21:5", + "Závodu míru" + ], + [ + "256", + "3", + "16.11.22 21:20", + "Stará ovčárna" + ], + [ + "140", + "3", + "16.11.22 22:8", + "Stará ovčárna" + ] +] diff --git a/flow/suncalc.js b/flow/suncalc.js new file mode 100644 index 0000000..c9ca56d --- /dev/null +++ b/flow/suncalc.js @@ -0,0 +1,317 @@ +/* + (c) 2011-2015, Vladimir Agafonkin + SunCalc is a JavaScript library for calculating sun/moon position and light phases. + https://github.com/mourner/suncalc +*/ + +(function () { 'use strict'; + +// shortcuts for easier to read formulas + +var PI = Math.PI, + sin = Math.sin, + cos = Math.cos, + tan = Math.tan, + asin = Math.asin, + atan = Math.atan2, + acos = Math.acos, + rad = PI / 180; + +// sun calculations are based on http://aa.quae.nl/en/reken/zonpositie.html formulas + + +// date/time constants and conversions + +var dayMs = 1000 * 60 * 60 * 24, + J1970 = 2440588, + J2000 = 2451545; + +function toJulian(date) { return date.valueOf() / dayMs - 0.5 + J1970; } +function fromJulian(j) { return new Date((j + 0.5 - J1970) * dayMs); } +function toDays(date) { return toJulian(date) - J2000; } + + +// general calculations for position + +var e = rad * 23.4397; // obliquity of the Earth + +function rightAscension(l, b) { return atan(sin(l) * cos(e) - tan(b) * sin(e), cos(l)); } +function declination(l, b) { return asin(sin(b) * cos(e) + cos(b) * sin(e) * sin(l)); } + +function azimuth(H, phi, dec) { return atan(sin(H), cos(H) * sin(phi) - tan(dec) * cos(phi)); } +function altitude(H, phi, dec) { return asin(sin(phi) * sin(dec) + cos(phi) * cos(dec) * cos(H)); } + +function siderealTime(d, lw) { return rad * (280.16 + 360.9856235 * d) - lw; } + +function astroRefraction(h) { + if (h < 0) // the following formula works for positive altitudes only. + h = 0; // if h = -0.08901179 a div/0 would occur. + + // formula 16.4 of "Astronomical Algorithms" 2nd edition by Jean Meeus (Willmann-Bell, Richmond) 1998. + // 1.02 / tan(h + 10.26 / (h + 5.10)) h in degrees, result in arc minutes -> converted to rad: + return 0.0002967 / Math.tan(h + 0.00312536 / (h + 0.08901179)); +} + +// general sun calculations + +function solarMeanAnomaly(d) { return rad * (357.5291 + 0.98560028 * d); } + +function eclipticLongitude(M) { + + var C = rad * (1.9148 * sin(M) + 0.02 * sin(2 * M) + 0.0003 * sin(3 * M)), // equation of center + P = rad * 102.9372; // perihelion of the Earth + + return M + C + P + PI; +} + +function sunCoords(d) { + + var M = solarMeanAnomaly(d), + L = eclipticLongitude(M); + + return { + dec: declination(L, 0), + ra: rightAscension(L, 0) + }; +} + + +var SunCalc = {}; + + +// calculates sun position for a given date and latitude/longitude + +SunCalc.getPosition = function (date, lat, lng) { + + var lw = rad * -lng, + phi = rad * lat, + d = toDays(date), + + c = sunCoords(d), + H = siderealTime(d, lw) - c.ra; + + return { + azimuth: azimuth(H, phi, c.dec), + altitude: altitude(H, phi, c.dec) + }; +}; + + +// sun times configuration (angle, morning name, evening name) + +var times = SunCalc.times = [ + [-0.833, 'sunrise', 'sunset' ], + [ -0.3, 'sunriseEnd', 'sunsetStart' ], + [ -6, 'dawn', 'dusk' ], + [ -12, 'nauticalDawn', 'nauticalDusk'], + [ -18, 'nightEnd', 'night' ], + [ 6, 'goldenHourEnd', 'goldenHour' ] +]; + +// adds a custom time to the times config + +SunCalc.addTime = function (angle, riseName, setName) { + times.push([angle, riseName, setName]); +}; + + +// calculations for sun times + +var J0 = 0.0009; + +function julianCycle(d, lw) { return Math.round(d - J0 - lw / (2 * PI)); } + +function approxTransit(Ht, lw, n) { return J0 + (Ht + lw) / (2 * PI) + n; } +function solarTransitJ(ds, M, L) { return J2000 + ds + 0.0053 * sin(M) - 0.0069 * sin(2 * L); } + +function hourAngle(h, phi, d) { return acos((sin(h) - sin(phi) * sin(d)) / (cos(phi) * cos(d))); } +function observerAngle(height) { return -2.076 * Math.sqrt(height) / 60; } + +// returns set time for the given sun altitude +function getSetJ(h, lw, phi, dec, n, M, L) { + + var w = hourAngle(h, phi, dec), + a = approxTransit(w, lw, n); + return solarTransitJ(a, M, L); +} + + +// calculates sun times for a given date, latitude/longitude, and, optionally, +// the observer height (in meters) relative to the horizon + +SunCalc.getTimes = function (date, lat, lng, height) { + + height = height || 0; + + var lw = rad * -lng, + phi = rad * lat, + + dh = observerAngle(height), + + d = toDays(date), + n = julianCycle(d, lw), + ds = approxTransit(0, lw, n), + + M = solarMeanAnomaly(ds), + L = eclipticLongitude(M), + dec = declination(L, 0), + + Jnoon = solarTransitJ(ds, M, L), + + i, len, time, h0, Jset, Jrise; + + + var result = { + solarNoon: fromJulian(Jnoon), + nadir: fromJulian(Jnoon - 0.5) + }; + + for (i = 0, len = times.length; i < len; i += 1) { + time = times[i]; + h0 = (time[0] + dh) * rad; + + Jset = getSetJ(h0, lw, phi, dec, n, M, L); + Jrise = Jnoon - (Jset - Jnoon); + + result[time[1]] = fromJulian(Jrise); + result[time[2]] = fromJulian(Jset); + } + + return result; +}; + + +// moon calculations, based on http://aa.quae.nl/en/reken/hemelpositie.html formulas + +function moonCoords(d) { // geocentric ecliptic coordinates of the moon + + var L = rad * (218.316 + 13.176396 * d), // ecliptic longitude + M = rad * (134.963 + 13.064993 * d), // mean anomaly + F = rad * (93.272 + 13.229350 * d), // mean distance + + l = L + rad * 6.289 * sin(M), // longitude + b = rad * 5.128 * sin(F), // latitude + dt = 385001 - 20905 * cos(M); // distance to the moon in km + + return { + ra: rightAscension(l, b), + dec: declination(l, b), + dist: dt + }; +} + +SunCalc.getMoonPosition = function (date, lat, lng) { + + var lw = rad * -lng, + phi = rad * lat, + d = toDays(date), + + c = moonCoords(d), + H = siderealTime(d, lw) - c.ra, + h = altitude(H, phi, c.dec), + // formula 14.1 of "Astronomical Algorithms" 2nd edition by Jean Meeus (Willmann-Bell, Richmond) 1998. + pa = atan(sin(H), tan(phi) * cos(c.dec) - sin(c.dec) * cos(H)); + + h = h + astroRefraction(h); // altitude correction for refraction + + return { + azimuth: azimuth(H, phi, c.dec), + altitude: h, + distance: c.dist, + parallacticAngle: pa + }; +}; + + +// calculations for illumination parameters of the moon, +// based on http://idlastro.gsfc.nasa.gov/ftp/pro/astro/mphase.pro formulas and +// Chapter 48 of "Astronomical Algorithms" 2nd edition by Jean Meeus (Willmann-Bell, Richmond) 1998. + +SunCalc.getMoonIllumination = function (date) { + + var d = toDays(date || new Date()), + s = sunCoords(d), + m = moonCoords(d), + + sdist = 149598000, // distance from Earth to Sun in km + + phi = acos(sin(s.dec) * sin(m.dec) + cos(s.dec) * cos(m.dec) * cos(s.ra - m.ra)), + inc = atan(sdist * sin(phi), m.dist - sdist * cos(phi)), + angle = atan(cos(s.dec) * sin(s.ra - m.ra), sin(s.dec) * cos(m.dec) - + cos(s.dec) * sin(m.dec) * cos(s.ra - m.ra)); + + return { + fraction: (1 + cos(inc)) / 2, + phase: 0.5 + 0.5 * inc * (angle < 0 ? -1 : 1) / Math.PI, + angle: angle + }; +}; + + +function hoursLater(date, h) { + return new Date(date.valueOf() + h * dayMs / 24); +} + +// calculations for moon rise/set times are based on http://www.stargazing.net/kepler/moonrise.html article + +SunCalc.getMoonTimes = function (date, lat, lng, inUTC) { + var t = new Date(date); + if (inUTC) t.setUTCHours(0, 0, 0, 0); + else t.setHours(0, 0, 0, 0); + + var hc = 0.133 * rad, + h0 = SunCalc.getMoonPosition(t, lat, lng).altitude - hc, + h1, h2, rise, set, a, b, xe, ye, d, roots, x1, x2, dx; + + // go in 2-hour chunks, each time seeing if a 3-point quadratic curve crosses zero (which means rise or set) + for (var i = 1; i <= 24; i += 2) { + h1 = SunCalc.getMoonPosition(hoursLater(t, i), lat, lng).altitude - hc; + h2 = SunCalc.getMoonPosition(hoursLater(t, i + 1), lat, lng).altitude - hc; + + a = (h0 + h2) / 2 - h1; + b = (h2 - h0) / 2; + xe = -b / (2 * a); + ye = (a * xe + b) * xe + h1; + d = b * b - 4 * a * h1; + roots = 0; + + if (d >= 0) { + dx = Math.sqrt(d) / (Math.abs(a) * 2); + x1 = xe - dx; + x2 = xe + dx; + if (Math.abs(x1) <= 1) roots++; + if (Math.abs(x2) <= 1) roots++; + if (x1 < -1) x1 = x2; + } + + if (roots === 1) { + if (h0 < 0) rise = i + x1; + else set = i + x1; + + } else if (roots === 2) { + rise = i + (ye < 0 ? x2 : x1); + set = i + (ye < 0 ? x1 : x2); + } + + if (rise && set) break; + + h0 = h2; + } + + var result = {}; + + if (rise) result.rise = hoursLater(t, rise); + if (set) result.set = hoursLater(t, set); + + if (!rise && !set) result[ye > 0 ? 'alwaysUp' : 'alwaysDown'] = true; + + return result; +}; + + +// export as Node module / AMD module / browser variable +if (typeof exports === 'object' && typeof module !== 'undefined') module.exports = SunCalc; +else if (typeof define === 'function' && define.amd) define(SunCalc); +else window.SunCalc = SunCalc; + +}()); diff --git a/flow/tcpipclient.js b/flow/tcpipclient.js new file mode 100644 index 0000000..d513f63 --- /dev/null +++ b/flow/tcpipclient.js @@ -0,0 +1,96 @@ +exports.id = 'tcpipclient'; +exports.title = 'TCP/IP Client'; +exports.group = 'TCP/IP'; +exports.color = '#888600'; +exports.version = '1.0.0'; +exports.icon = 'exchange'; +exports.input = false; +exports.output = 0; +exports.author = 'Lukas Muransky'; +exports.variables = true; +exports.options = { ip: '127.0.0.1', port: 9999 }; +exports.traffic = false; + +exports.html = `
+
+
+
Hostname or IP address
+
+
+
Port
+
+
+
@(Helvar)
+
+`; + +exports.readme = ` +# TCP/IP Clients`; + +var CLIENTS = []; +var tcpip; + +global.TCPIP_CLIENTS = []; + +exports.install = function(instance) { + + var client; + + instance.custom.reconfigure = function(o, old_options) { + if (old_options) + CLIENTS = CLIENTS.remove(function(b){ + return b.id === old_options.id; + }); + + var options = instance.options; + + if (!options.ip || !options.port) { + instance.status('Not configured', 'red'); + return; + } + + options.id = instance.name; + + instance.custom.createClient(); + TCPIP_CLIENTS = []; + CLIENTS.forEach(n => TCPIP_CLIENTS.push(n)); + }; + + instance.custom.createClient = function () { + + var o = instance.options; + var opts = { + ip: o.ip, + port: o.port, + helvar: o.helvar, + id: o.id + }; + + client = new Client(opts); + + CLIENTS.push(client); + + instance.status('Ready'); + }; + + instance.on('options', instance.custom.reconfigure); + instance.custom.reconfigure(); +}; + +FLOW.trigger('tcpip.clients', function(next) { + var clients = []; + CLIENTS.forEach(n => clients.push(n.id)); + next(clients); +}); + + +function Client(options) { + var self = this; + self.id = options.id; + self.options = options; + return self; +} diff --git a/flow/tcpipisend.js b/flow/tcpipisend.js new file mode 100644 index 0000000..8bd2670 --- /dev/null +++ b/flow/tcpipisend.js @@ -0,0 +1,96 @@ +exports.id = 'tcpipsend'; +exports.title = 'TCP/IP Send'; +exports.group = 'TCP/IP'; +exports.color = '#888600'; +exports.version = '1.0.2'; +exports.icon = 'sign-out'; +exports.input = true; +exports.output = 1; +exports.author = 'Lukas Muransky'; +exports.options = {}; + +exports.html = `
+
@(Clients)
+
+`; + +exports.readme = `# TCPIP Connect`; + + +exports.install = function(instance) { + var net = require('net'); + + instance.on('data', function(flowdata) { + connect(flowdata); + }); + + instance.reconfigure = function() { + if (!instance.options.tcpclient) + return instance.status('Not configured', 'red'); + else + return instance.status('Configured'); + }; + + instance.on('options', instance.reconfigure); + instance.reconfigure(); + + function connect(response) { + //instance.debug('Input data: ' + data); + //let Summary = []; + var client = new net.Socket(); + + var tcpip = TCPIP_CLIENTS.find(obj => obj.id == instance.options.tcpclient); + + var opt = {}; + opt.ip = tcpip.options.ip; + opt.port = tcpip.options.port; + opt.helvar = tcpip.options.helvar; + + client.connect(opt.port, opt.ip, function() { + instance.status('Connected'); + }); + //instance.debug('Response: ' + response.data); + + client.on('close', function() { + //instance.debug('Connection closed (inside)'); + instance.status('Closed'); + }); + + client.on('data', function(answer) { + response.data = answer.toString(); + instance.send2(response); + }); + + if(opt.helvar && response.data.slice(-1) == '*'){ + response.data = response.data.slice(0, -1); //odstrani * + client.write(response.data); + response.data = response.data.slice(0, -1); //odstrani # lebo je prida ma koniec + response.data = '?'+response.data.slice(1) + "=Command sent#"; + instance.send2(response); + //client.destroy(); + } else { + client.write(response.data); + } + + client.end(); + } +}; + +///FLOW.find() najde komponentu instance.connect(data) diff --git a/flow/tcpipserver.js b/flow/tcpipserver.js new file mode 100644 index 0000000..b8a7770 --- /dev/null +++ b/flow/tcpipserver.js @@ -0,0 +1,169 @@ +exports.id = 'tcpserver'; +exports.title = 'TCP/IP Server'; +exports.version = '1.0.4'; +exports.group = 'TCP/IP'; +exports.color = '#888600'; +exports.output = ["red", "white"]; +exports.click = false; +exports.author = 'Jakub Klena'; +exports.icon = 'server'; +exports.options = { ip: '0.0.0.0', port: 8421, edge: "M6ogKQW09bOXewAYvZyvkn5JrV1aRnPGE37p42Nx" }; + +exports.html = `
+
+
+
IP
+
+
+
Port
+
+
+
+
+
Edge TB Name
+
+
+
`; + +exports.readme = `# TCP Server +## Outputs + + - *Red* - ERROR output + - *White* - Incomming message output +`; + + + + +exports.install = function(instance) { + + let net = require('net'); + let server = null; + let myip = "0.0.0.0"; + let myport = 8421; + let myedge = "M6ogKQW09bOXewAYvZyvkn5JrV1aRnPGE37p42Nx"; + let interv = null; + let ERRWEIGHT = { + EMERGENCY: "emergency", // System unusable + ALERT: "alert", // Action must be taken immidiately + CRITICAL: "critical", // Component unable to function + ERROR: "error", // Error, but component able to recover from it + WARNING: "warning", // Possibility of error, system running futher + NOTICE: "notice", // Significant message but not an error, things user might want to know about + INFO: "informational", // Info + DEBUG: "debug" // Debug - only if CONFIG.debug is enabled + } + + setTimeout(function(){ + if (server !== null){ + if (server.listening){ + instance.status("Listening", "green"); + } else { + instance.status("Not listening", "red"); + } + } + }, 5000); + + function resetServer(){ + sendError(myedge, "resetServer", ERRWEIGHT.DEBUG, "resetServer called !", {}); + if (server !== null){ + sendError(myedge, "resetServer", ERRWEIGHT.DEBUG, "Server already exists", {}); + server.close(function(){ + sendError(myedge, "resetServer", ERRWEIGHT.DEBUG, "Server closed intentionally", {}); + server = null; + resetServer(); + }); + } else { + sendError(myedge, "resetServer", ERRWEIGHT.DEBUG, "Server doesn’t exist", {}); + server = net.createServer((c) => { + sendError(myedge, "resetServer", ERRWEIGHT.INFO, "New client connected !", {"ip":c.localAddress, "port":c.localPort}); + c.on("data", (d) => { + sendOutputMsg({ + "ip":c.localAddress, + "port":c.localPort, + "data":d.toString() + }); + }); + c.on('end', () => { + sendError(myedge, "resetServer", ERRWEIGHT.INFO, "Client disconnected !", {"ip":c.localAddress, "port":c.localPort}); + }); + }); + server.listen(myport, myip); + } + }; + + function isJson(str) { + try { + JSON.parse(str); + } catch (e) { + return false; + } + return true; + } + + instance.reconfigure = function() { + + //code + myip = instance.options.ip; + myport = instance.options.port; + myedge = instance.options.edge; + + setTimeout(resetServer, 5000); + + }; + + instance.close = function() { + // close sockets and such + if (server !== null){ + server.close(function(){}); + } + }; + + function sendError(device, func, weight, str, extra){ + + let content = { + "type": weight, + "status": "new", + "source": { + "function":func, + "component":instance.id, + "component_name":instance.name + }, + "message":str, + "message_data": extra + }; + + let error = {}; + error[device] = [ + { + "ts": Date.now(), + "values": { + "_event":content + } + } + ]; + + instance.send(0, error); + } + + function sendOutputMsg(str){ + instance.send(1, str); + } + + instance.on('options', instance.reconfigure); + instance.reconfigure(); + + function humanReadableTimeAndDate(){ + let date_ob = new Date(); + + let date = ("0" + date_ob.getDate()).slice(-2); + let month = ("0" + (date_ob.getMonth() + 1)).slice(-2); + let year = date_ob.getFullYear(); + + let hours = ("0" + date_ob.getHours()).slice(-2); + let minutes = ("0" + date_ob.getMinutes()).slice(-2); + let seconds = ("0" + date_ob.getSeconds()).slice(-2); + + return date+"."+month+"."+year+" "+hours+":"+minutes+":"+seconds; + } +}; diff --git a/flow/timer.js b/flow/timer.js new file mode 100644 index 0000000..db9fe64 --- /dev/null +++ b/flow/timer.js @@ -0,0 +1,87 @@ +exports.id = 'timer'; +exports.title = 'Timer'; +exports.version = '1.0.1'; +exports.group = 'Time'; +exports.color = '#F6BB42'; +exports.output = 1; +exports.click = true; +exports.author = 'Peter Širka'; +exports.icon = 'clock-o'; +exports.options = { interval: 1000 }; + +exports.html = `
+
+
+
@(Interval in milliseconds)
+
+
+
+ +
+
@(Data type (String by default))
+
@(Data)
+
+
+
`; + +exports.readme = `# Timer + +Timer will trigger flow in the given interval (in milliseconds). You can optionally define a data-type of the output and the data.`; + +exports.install = function(instance) { + + var value; + var id; + + instance.on('click', () => value && instance.send2(value)); + + instance.reconfigure = function() { + var options = instance.options; + + if (!options.interval) { + instance.status('Not configured', 'red'); + return; + } + + value = null; + switch (options.datatype) { + case 'string': + value = options.data; + break; + case 'integer': + value = U.parseInt(options.data); + break; + case 'float': + value = U.parseFloat(options.data); + break; + case 'date': + var num = U.parseInt(options.data); + value = num ? new Date(num) : options.data.parseDate(); + break; + case 'object': + try { + value = (new Function('return ' + options.data))(); + } catch (e) { + instance.error(e); + } + break; + case 'boolean': + value = options.data.parseBoolean(); + break; + case 'buffer': + try { + value = F.is4 ? Buffer.from(options.data) : U.createBuffer(options.data); + } catch (e) { + instance.error(e); + } + break; + } + clearInterval(id); + options.interval && (id = setInterval(() => instance.send2(value), options.interval)); + instance.status(''); + }; + + instance.on('close', () => clearInterval(id)); + instance.on('options', instance.reconfigure); + instance.reconfigure(); +}; diff --git a/flow/timesetter.js b/flow/timesetter.js new file mode 100644 index 0000000..e9ecb04 --- /dev/null +++ b/flow/timesetter.js @@ -0,0 +1,129 @@ +exports.id = 'timesetter'; +exports.title = 'Timesetter'; +exports.group = 'Worksys'; +exports.color = '#656D78'; +exports.input = true; +exports.output = 1; +exports.author = 'Rastislav Kovac'; +exports.icon = 'code'; +exports.version = '1.0.0'; +exports.readme = ` + This component can be installed just on controllers without direct internet access! + 'project_id' variable needs to be set for every project!! + + Timesetter sends requests once a day to service-prod01.worksys.io to get + actual date and time. It sets unipi's system timedate +`; + +//! SET project_id +const project_id = 39; +const { exec } = require('child_process'); + + +exports.install = function(instance) { + + instance.on('data', function(flowdata) { + + RESTBuilder.make(function(builder) { + + if(!builder) return; + + builder.method('GET'); + //FLOW.OMS_edge_fw_version + builder.url(`http://192.168.252.2:8004/gettime?projects_id=${project_id}`); + + builder.callback(function(err, response, output) { + + if (err) { + console.log(err); + return; + } + + instance.send(0, "RESTBuilder timedatectl response"); + const res = output.response; + + try { + + const obj = JSON.parse(res); + let d = new Date(obj.date); + + const now = new Date(); + + //offset in minutes - convertUTCDateToLocalDate + let diffInMinutes = now.getTimezoneOffset(); + //d.setMinutes( d.getMinutes() + diffInMinutes ); + + //let converted = convertUTCDateToLocalDate(d); + + console.log("---->TimezoneOffset", diffInMinutes); + + if(d instanceof Date) + { + console.log("current js date:", d, d.getHours()); + + let year = d.getFullYear(); + let month = addZeroBefore(d.getMonth() + 1); + let day = addZeroBefore(d.getDate()); + + //-2 hodiny!!!! + let hours = addZeroBefore( d.getHours() ); + let minutes = addZeroBefore(d.getMinutes() ); + let seconds = addZeroBefore(d.getSeconds()); + + let timestamp = `${year}${month}${day} ${hours}:${minutes}:${seconds}`; + let dstr = `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`; + + + //TODO - poslat notifikaciu a nastav hw cas + //timedatectl set-timezone "Europe/Bratislava" + //hwclock --set --date="2021-08-24 15:02:00" --localtime + + //https://www.tecmint.com/set-time-timezone-and-synchronize-time-using-timedatectl-command/ + + + //timedatectl set-time "2022-04-27 09:13:00" + { + + let year = d.getUTCFullYear(); + let month = addZeroBefore(d.getUTCMonth() + 1); + let day = addZeroBefore(d.getUTCDate()); + + let hours = addZeroBefore( d.getUTCHours() ); + let minutes = addZeroBefore(d.getUTCMinutes() ); + let seconds = addZeroBefore(d.getUTCSeconds()); + + let UTCstr = `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`; + + exec(`sudo timedatectl set-time "${UTCstr}"`, (err, stdout, stderr) => { + if (err || stderr) { + console.error(err); + console.log(stderr); + console.log(UTCstr); + + + } + else + { + console.log(`UTC: timedatectl set-time "${UTCstr}"`); + } + + }); + } + } + } catch(e) { + console.log(e) + } + }) + }) + }) + + function addZeroBefore(n) { + return (n < 10 ? '0' : '') + n; + } + +}; + + + + + diff --git a/flow/trigger.js b/flow/trigger.js new file mode 100644 index 0000000..ea496e2 --- /dev/null +++ b/flow/trigger.js @@ -0,0 +1,79 @@ +exports.id = 'trigger'; +exports.title = 'Trigger'; +exports.group = 'Inputs'; +exports.color = '#F6BB42'; +exports.click = true; +exports.output = 1; +exports.version = '1.1.1'; +exports.author = 'Martin Smola'; +exports.icon = 'play'; + +exports.html = `
+
@(Data type (String by default))
+
@(Data)
+
Trigger 5s after initialization.
+
@(Useful when there's a need to run certain flow when the app restarts, etc.)
+
`; + +exports.readme = `# Trigger + +- Clicking on the component starts the chain +- Settings allows to set a data-type and a value`; + +exports.install = function(instance) { + + var value; + + instance.on('click', () => instance.send2(value)); + + instance.reconfigure = function() { + var options = instance.options; + value = null; + switch (options.datatype) { + case 'integer': + value = options.data.parseInt2('error'); + value = value === 'error' ? NaN : value; + break; + case 'float': + value = options.data.parseFloat2('error'); + value = value === 'error' ? NaN : value; + break; + case 'date': + options.data = options.data.toString(); + var num = options.data.parseInt('error'); + num === 'error' && (num = options.data.parseDate('error')); + num === 'error' && (num = null); + value = num ? new Date(num).toUTCString() : num; + break; + case 'object': + try { + value = (new Function('return ' + options.data))(); + } catch (e) { + instance.error(e); + } + break; + case 'boolean': + value = options.data.parseBoolean(); + break; + case 'buffer': + try { + value = F.is4 ? Buffer.from(options.data) : U.createBuffer(options.data); + } catch (e) { + instance.error(e); + } + break; + case 'string': + default: + value = '' + (options.data || ''); + break; + } + }; + + instance.on('options', instance.reconfigure); + instance.reconfigure(); + + if (instance.options.restart) + setTimeout(function(){ + instance.send2(value); + }, 5000); +}; diff --git a/flow/variables.txt b/flow/variables.txt new file mode 100644 index 0000000..e69de29 diff --git a/flow/virtualwirein.js b/flow/virtualwirein.js new file mode 100644 index 0000000..b2b8a12 --- /dev/null +++ b/flow/virtualwirein.js @@ -0,0 +1,43 @@ +exports.id = 'virtualwirein'; +exports.title = 'Virtual wire in'; +exports.version = '1.0.0'; +exports.author = 'Martin Smola'; +exports.color = '#303E4D'; +exports.icon = 'sign-in'; +exports.input = false; +exports.output = 1; +exports.options = {}; +exports.readme = `# Virtual wire in + +When the wires between the components are mess it's time to use Virtual wire.`; + +exports.html = `
+
@(Wire name)
+
+`; + +exports.install = function(instance) { + + instance.custom.reconfigure = function(){ + if (instance.options.wirename) { + instance.status(instance.options.wirename); + } else + instance.status('Not configured', 'red'); + }; + + ON('virtualwire', function(wirename, flowdata){ + if (instance.options.wirename && instance.options.wirename === wirename) + instance.send(flowdata); + }); + + instance.on('options', instance.custom.reconfigure); + instance.custom.reconfigure(); +}; diff --git a/flow/virtualwireout.js b/flow/virtualwireout.js new file mode 100644 index 0000000..94a1e4f --- /dev/null +++ b/flow/virtualwireout.js @@ -0,0 +1,41 @@ +exports.id = 'virtualwireout'; +exports.title = 'Virtual wire out'; +exports.version = '1.0.0'; +exports.author = 'Martin Smola'; +exports.color = '#303E4D'; +exports.icon = 'sign-out'; +exports.input = true; +exports.options = {}; +exports.readme = `# Virtual wire out + +When the wires between the components are mess it's time to use Virtual wire.`; + +exports.html = `
+
@(Wire name)
+
+`; + +exports.install = function(instance) { + + instance.custom.reconfigure = function(){ + if (instance.options.wirename) { + instance.status(instance.options.wirename); + } else + instance.status('Not configured', 'red'); + }; + + instance.on('data', function(flowdata) { + EMIT('virtualwire', instance.options.wirename, flowdata); + }); + + instance.on('options', instance.custom.reconfigure); + instance.custom.reconfigure(); +}; diff --git a/flow/wsmqttpublish.js b/flow/wsmqttpublish.js new file mode 100644 index 0000000..ff85888 --- /dev/null +++ b/flow/wsmqttpublish.js @@ -0,0 +1,554 @@ +exports.id = 'wsmqttpublish'; +exports.title = 'WS MQTT publish'; +exports.group = 'MQTT'; +exports.color = '#888600'; +exports.version = '1.0.2'; +exports.icon = 'sign-out'; +exports.input = 1; +exports.output = ["red", "white", "blue"]; +exports.author = 'Daniel Segeš'; +exports.options = { host: 'tb-stage.worksys.io', port: 1883, clientid: "", username: "" }; +exports.npm = ['mqtt']; + + +exports.html = `
+
+
+
Hostname or IP address (if not empty - setting will override db setting)
+
+
+
Port
+
+
+
+
+
@(Client id)
+
+
+
@(Username)
+
+
+
`; + + +exports.readme = ` +# WS MQTT Publish + +Version 1.0.3. + +Added: +- database collections, +- rpc response +`; + +const instanceSendTo = { + debug: 0, + rpcCall: 1, + services: 2 +} + +const { promisifyBuilder, makeMapFromDbResult } = require('./helper/db_helper.js'); + +//CONFIG +let useLog4js = true; +let createTelemetryBackup = true; +let saveTelemetryOnError = true;//backup_on_failure overrides this value +//------------------------ + +var fs = require('fs'); +let rollers; +if(createTelemetryBackup) rollers = require('streamroller'); + +const noSqlFileSizeLimit = 4194304;//use 5MB - 4194304 +let insertNoSqlCounter = 0; +let insertBackupNoSqlCounter = 0; +let processingData = false; + +let backup_on_failure = true;//== saveTelemetryOnError - create backup broker send failure +let restore_from_backup = 20; //how many rows process at once? +let restore_backup_wait = 5;//wait seconds +let lastRestoreTime = 0; + +let errLogger; +let logger; +let monitor; + +if(useLog4js) +{ + var path = require('path'); + var log4js = require("log4js"); + + log4js.configure({ + appenders: { + errLogs: { type: 'file', filename: path.join(__dirname + "/../", 'err.txt') }, + monitorLogs: { type: 'file', compress:true, daysToKeep: 2, maxLogSize: 1048576, backups: 1, keepFileExt: true, filename: path.join(__dirname + "/../", 'monitor.txt') }, + console: { type: 'console' } + }, + categories: { + errLogs: { appenders: ['console', 'errLogs'], level: 'error' }, + monitorLogs: { appenders: ['console', 'monitorLogs'], level: 'trace' }, + //another: { appenders: ['console'], level: 'trace' }, + default: { appenders: ['console'], level: 'trace' } + } + }); + + errLogger = log4js.getLogger("errLogs"); + logger = log4js.getLogger(); + monitor = log4js.getLogger("monitorLogs"); + + //USAGE + //logger.debug("text"); + //monitor.info('info'); + //errLogger.error("some error"); +} + +process.on('uncaughtException', function (err) { + + if(errLogger) + { + errLogger.error('uncaughtException:', err.message) + errLogger.error(err.stack); + } + + //TODO + //send to service + + //process.exit(1); +}) + +const nosql = NOSQL('tbdata'); +const nosqlBackup = NOSQL('/backup/tbdata'); + +exports.install = function(instance) { + + var broker; + var opts; + var brokerready = false; + + instance.on('options', loadSettings); + + mqtt = require('mqtt'); + + // wsmqtt status for notification purposes on projects.worksys.io database + let wsmqttName = null; + let sendWsStatusVar = null; + let wsmqtt_status = 'disconnected'; + + function getWsmqttName(host) + { + if(host == "tb-demo.worksys.io" || host == '192.168.252.4') return 'wsmqtt_demo'; + else if(host == "tb-qas01.worksys.io" || host == '192.168.252.5') return 'wsmqtt_qas01'; + else if(host == "tb-prod01.worksys.io" || host == '192.168.252.1') return 'wsmqtt_prod01'; + } + + function sendWsStatus() + { + instance.send(instanceSendTo.services, {[wsmqttName]: wsmqtt_status}); + } + + sendWsStatusVar = setInterval(sendWsStatus, 180000); + + + //set opts according to db settings + async function loadSettings() + { + + if(instance.options.host !== "") + { + //override settings from database + var o = instance.options; + opts = { + host: o.host, + port: o.port, + clientId: o.clientid, + username: o.username, + rejectUnauthorized: false, + resubscribe: false + }; + + wsmqttName = getWsmqttName(o.host); + + console.log("wsmqttpublich -> loadSettings from instance.options", instance.options); + } + else + { + + const dbSettings = TABLE("settings"); + let responseSettings = await promisifyBuilder(dbSettings.find()); + + backup_on_failure = responseSettings[0]["backup_on_failure"]; + saveTelemetryOnError = backup_on_failure; + + restore_from_backup = responseSettings[0]["restore_from_backup"]; + restore_backup_wait = responseSettings[0]["restore_backup_wait"]; + + let mqtt_host = responseSettings[0]["mqtt_host"]; + let mqtt_clientid = responseSettings[0]["mqtt_clientid"]; + let mqtt_username = responseSettings[0]["mqtt_username"]; + let mqtt_port = responseSettings[0]["mqtt_port"]; + + console.log("wsmqttpublich -> loadSettings from db", responseSettings[0]); + + opts = { + host: mqtt_host, + port: mqtt_port, + keepalive: 10, + clientId: mqtt_clientid, + username: mqtt_username, + rejectUnauthorized: false, + resubscribe: false + }; + + wsmqttName = getWsmqttName(mqtt_host); + } + + connectToTbServer(); + + } + + function connectToTbServer() + { + var url = "mqtt://" + opts.host + ":" + opts.port; + console.log("MQTT URL: ", url); + + broker = mqtt.connect(url, opts); + + broker.on('connect', function() { + instance.status("Connected", "green"); + brokerready = true; + FLOW.OMS_brokerready = brokerready; + wsmqtt_status = 'connected'; + }); + + broker.on('reconnect', function() { + instance.status("Reconnecting", "yellow"); + brokerready = false; + + FLOW.OMS_brokerready = brokerready; + }); + + broker.on('message', function(topic, message) { + // message is type of buffer + message = message.toString(); + if (message[0] === '{') { + try { + message = JSON.parse(message); + if (message.hasOwnProperty("device") && message.hasOwnProperty("data") && message.data.hasOwnProperty("id")) { + broker.publish(topic, `{"device": ${message.device}, "id": ${message.data.id}, "data": {"success": true}}`, {qos:1}); + instance.send(instanceSendTo.rpcCall, {"device": message.device, "id": message.data.id, "RPC response": {"success": true}}); + } + + } catch(error) { + instance.send(instanceSendTo.debug, "unable to parse RPC call"); + } + } + + instance.send(instanceSendTo.rpcCall, {"topic":topic, "content":message }); + + }); + + broker.on('close', function(err) { + brokerready = false; + FLOW.OMS_brokerready = brokerready; + wsmqtt_status = 'disconnected'; + + if (err && err.toString().indexOf('Error')) { + instance.status("Err: "+err.code, "red"); + instance.send(instanceSendTo.debug, {"message":"Broker CLOSE signal received !", "error":err, "opt":opts }); + } else { + instance.status("Disconnected", "red"); + instance.send(instanceSendTo.debug, {"message":"Broker CLOSE signal received !", "error":err, "opt":opts }); + } + + broker.reconnect(); + }); + + broker.on('error', function(err) { + instance.status("Err: "+ err.code, "red"); + instance.send(instanceSendTo.debug, {"message":"Broker ERROR signal received !", "error":err, "opt":opts }); + + brokerready = false; + FLOW.OMS_brokerready = brokerready; + wsmqtt_status = 'disconnected'; + + }); + + //broker = new Broker(opts); + //MQTT_BROKERS.push(broker); + + //instance.status('Ready'); + } + + //set opts accortding to options + /* + instance.reconfigure = function() { + + + var o = instance.options; + opts = { + host: o.host, + port: o.port, + keepalive: 10, + clientId: o.clientid, + username: o.username, + rejectUnauthorized: false, + resubscribe: false + }; + + //connectToTbServer(); + }; + */ + + instance.on('data', function(data) { + + if (brokerready) + { + //do we have some data in backup file? + //if any, process data from database + if(saveTelemetryOnError) + { + //read telemetry data and send back to server + if(!processingData) processDataFromDatabase(); + } + + } + + if (brokerready) + { + let stringifiedJson = JSON.stringify(data.data); + broker.publish("v1/gateway/telemetry", stringifiedJson, {qos: 1}); + + //backup telemetry + if(createTelemetryBackup) + { + data.data.id = UID(); + nosqlBackup.insert(data.data); + + insertBackupNoSqlCounter++; + if(insertBackupNoSqlCounter > 150) + { + let options = {compress: true}; + let path = __dirname + "/../databases/backup/tbdata.nosql"; + var stream = new rollers.RollingFileStream(path, noSqlFileSizeLimit, 150, options); + stream.write(""); + stream.end(); + + insertBackupNoSqlCounter = 0; + } + } + + } + else + { + + if(logger) logger.debug("Broker unavailable. Data not sent !", data.data); + instance.send(instanceSendTo.debug, {"message":"Broker unavailable. Data not sent !", "data": data.data }); + + if(saveTelemetryOnError) + { + //create new file from tbdata.nosql, if file size exceeds given limit, and clear tbdata.nosql + makeBackupFromDbFile(); + + //write to tb + data.data.id = UID(); + nosql.insert(data.data); + } + + } + }); + + instance.close = function(done) { + if (brokerready){ + broker.end(); + clearInterval(sendWsStatusVar); + } + }; + + + function getDbBackupFileCounter(type) + { + var files = fs.readdirSync(__dirname + "/../databases"); + + let counter = 0; + for(var i = 0; i < files.length; i++) + { + + if(files[i] == "tbdata.nosql") continue; + + if(files[i].endsWith(".nosql")) + { + + let pos = files[i].indexOf("."); + if(pos > -1) + { + + let fileCounter = counter; + let firstDigit = files[i].slice(0, pos); + + fileCounter = parseInt(firstDigit); + if (isNaN(fileCounter)) fileCounter = 0; + //console.log("getDbBackupFileCounter digit:", files[i], firstDigit, fileCounter, isNaN(fileCounter), type); + + if(type == "max") + { + if(fileCounter > counter) + { + counter = fileCounter; + } + } + else if(type == "min") + { + if(counter == 0) counter = fileCounter; + + if(fileCounter < counter) + { + counter = fileCounter; + } + } + } + } + + } + + if(type == "max") counter++; + + return counter; + } + + const makeBackupFromDbFile = async () => { + + if(!saveTelemetryOnError) return; + + //to avoid large file: tbdata.nosql + + //init value is 0! + if(insertNoSqlCounter > 0) + { + --insertNoSqlCounter; + return; + } + + insertNoSqlCounter = 100; + + let source = __dirname + "/../databases/tbdata.nosql"; + + var stats = fs.statSync(source); + var fileSizeInBytes = stats.size; + + if(fileSizeInBytes > noSqlFileSizeLimit) + { + + let counter = 1; + counter = getDbBackupFileCounter("max"); + + let destination = __dirname + "/../databases/" + counter + "." + "tbdata.nosql"; + + //make backup file + fs.copyFileSync(source, destination); + //fs.renameSync(p, p + "." + counter); + + //clear tbdata.nosql + fs.writeFileSync(source, ""); + fs.truncateSync(source, 0); + + } + + } + + const processDataFromDatabase = async () => { + + if(restore_from_backup <= 0) + { + return; + } + + //calculate diff + const now = new Date(); + let currentTime = now.getTime(); + let diff = currentTime - lastRestoreTime; + + if( (diff / 1000) < restore_backup_wait) + { + //console.log("*********restore_backup_wait", diff, restore_backup_wait); + return; + } + + processingData = true; + + //get filename to process + let counter = getDbBackupFileCounter("min"); + + //we have some backup files + let dataBase = 'tbdata'; + + var nosql; + if(counter == 0) dataBase = 'tbdata'; + else dataBase = counter + "." + 'tbdata'; + + nosql = NOSQL(dataBase); + + //select all data - use limit restore_from_backup + let records = await promisifyBuilder(nosql.find().take(restore_from_backup)); + + for(let i = 0; i < records.length; i++) + { + if (brokerready) { + + let item = records[i]; + let id = item.id; + + if(id !== undefined) + { + //console.log("------------processDataFromDatabase - remove", id, dataBase, i); + + try{ + + let o = JSON.parse(JSON.stringify(item)); + delete o.id; + let message = JSON.stringify(o); + + broker.publish("v1/gateway/telemetry", message, {qos:1}); + + //remove from database + await promisifyBuilder(nosql.remove().where("id", id)); + + } catch (error) { + //process error + console.log("processDataFromDatabase", error); + } + + + } + + } + else + { + processingData = false; + return; + } + } + + if(records.length > 0) + { + //clean backup file + if(counter > 0) nosql.clean(); + } + + //no data in db, remove + if(records.length == 0) + { + if(counter > 0) nosql.drop(); + } + + const d = new Date(); + lastRestoreTime = d.getTime(); + + processingData = false; + + } + + loadSettings(); + + //instance.on('options', instance.reconfigure); + //instance.reconfigure(); +}; diff --git a/monitor.txt b/monitor.txt new file mode 100644 index 0000000..e69de29 diff --git a/odchod.js b/odchod.js new file mode 100644 index 0000000..0a23e57 --- /dev/null +++ b/odchod.js @@ -0,0 +1,65 @@ + +const fetch = require('node-fetch'); // Import node-fetch + +async function getOdchodyData(url) { + try { + const response = await fetch(url); + if (!response.ok) { + throw new Error(`HTTP error! Status: ${response.status}`); + } + const csvData = await response.text(); + return parseOdchodyCSV(csvData); + } catch (error) { + console.error("Error fetching or processing data:", error); + return []; // Or handle the error as appropriate for your application + } +} + +function parseOdchodyCSV(csvData) { + const lines = csvData.split('\n'); + const odchod = []; + let dataStart = -1; + + // Find the line where the actual data starts + for (let i = 0; i < lines.length; i++) { + if (lines[i].startsWith("Linka;Spoj;Čas odjezdu;Nástupiště;Cílová obec spoje;Kód datumové masky")) { + dataStart = i + 1; + break; + } + } + + if (dataStart === -1) { + console.warn("Data header not found in CSV."); + return []; // Or handle this error condition + } + + for (let i = dataStart; i < lines.length; i++) { + const line = lines[i].trim(); + if (line) { // Skip empty lines + const values = line.split(';'); + if (values.length >= 6 && values[0] && values[2] && values[4]) { + odchod.push([ + parseInt(values[0], 10), // Linka (parse to integer) + values[2], // Čas odjezdu + values[4] // Cílová obec spoje + ]); + } + } + } + + return odchod; +} + +// --- Example Usage --- +const csvUrl = "https://bezpecne.sokolov.cz/zast/jedn_drogerie.csv"; + +getOdchodyData(csvUrl) + .then(result => { + console.log("Parsed Odchody Data:", result); + }) + .catch(error => { + // Error already handled in getOdchodyData, but you can add more specific handling here if needed + }); + + + diff --git a/package.json b/package.json new file mode 100644 index 0000000..c3d2fef --- /dev/null +++ b/package.json @@ -0,0 +1,30 @@ +{ + "name": "totalproject", + "description": "Empty project", + "version": "1.0.0", + "main": "index.js", + "dependencies": { + "bitwise": "^2.1.0", + "easy-crc": "^0.0.2", + "jsmodbus": "^4.0.6", + "log4js": "^6.3.0", + "mosca": "^2.8.3", + "mqtt": "^4.2.8", + "node-fetch": "^2.6.7", + "node-schedule": "^2.0.0", + "nodemailer": "^6.7.0", + "serialport": "^9.2.4", + "total.js": "^3.4.10", + "total4": "^0.0.51", + "xml2js": "^0.4.23" + }, + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "keywords": [ + "empty", + "project" + ], + "author": "Peter Širka", + "license": "MIT" +} diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..4fa9418 --- /dev/null +++ b/readme.md @@ -0,0 +1,12 @@ +# Empty project: Flow + +- [Documentation](https://docs.totaljs.com) +- [Join Total.js Telegram](https://t.me/totaljs) +- [Support](https://www.totaljs.com/support/) + +__Instructions__: + +- install the latest version of the __Total.js framework 4__ from NPM `$ npm install total4` +- download example +- run `$ node index.js` +- open browser `http://127.0.0.1:8000`