Improved www.ttss.krakow.pl
Jacek Kowalski
2019-02-02 cbce8b9575696c6a6eacd70d2c7370af3ba44c02
Support for buses on departures page
1 files added
13 files modified
2075 ■■■■ changed files
common.js 5 ●●●●● patch | view | raw | blame | history
index.html 6 ●●●● patch | view | raw | blame | history
index.js 66 ●●●●● patch | view | raw | blame | history
lang_en.js 2 ●●●●● patch | view | raw | blame | history
lang_pl.js 2 ●●●●● patch | view | raw | blame | history
map.html 4 ●●●● patch | view | raw | blame | history
map.js 4 ●●●● patch | view | raw | blame | history
stops.php 2 ●●● patch | view | raw | blame | history
stops/common.php 2 ●●● patch | view | raw | blame | history
stops/download_stops.php 30 ●●●● patch | view | raw | blame | history
stops/index.php 86 ●●●●● patch | view | raw | blame | history
stops/populate_db.php 18 ●●●●● patch | view | raw | blame | history
stops/stops.db patch | view | raw | blame | history
stops/stops.php 1848 ●●●● patch | view | raw | blame | history
common.js
@@ -1,3 +1,8 @@
//var ttss_trams_base = 'http://www.ttss.krakow.pl/internetservice';
var ttss_trams_base = 'proxy_tram.php';
//var ttss_buses_base = 'http://91.223.13.70/internetservice';
var ttss_buses_base = 'proxy_bus.php';
// Special directions
var special_directions = {
    'Zajezdnia Nowa Huta' : 'ZH',
index.html
@@ -134,8 +134,8 @@
            </div>
        </div>
        <script src="https://code.jquery.com/jquery-3.3.1.min.js" integrity="sha384-tsQFqpEReu7ZLhBV2VZlAu7zcOV+rXbYlF2cqB8txI/8aZajjp4Bqd+V6D5IgvKT" crossorigin="anonymous"></script>
        <script type="text/javascript" src="lang_pl.js" id="lang_script"></script>
        <script type="text/javascript" src="common.js"></script>
        <script type="text/javascript" src="index.js"></script>
        <script type="text/javascript" src="lang_pl.js?v3" id="lang_script"></script>
        <script type="text/javascript" src="common.js?v4"></script>
        <script type="text/javascript" src="index.js?v2"></script>
    </body>
</html>
index.js
@@ -1,5 +1,3 @@
//var ttss_base = 'http://www.ttss.krakow.pl/internetservice';
var ttss_base = '/proxy.php';
var ttss_refresh = 20000; // 20 seconds
var page_title = document.getElementsByTagName('title')[0];
@@ -85,16 +83,27 @@
    if(times_xhr) times_xhr.abort();
    
    console.log('loadTimes(' + stopId + ')');
    loading_start();
    var url = ttss_trams_base;
    var stop = stopId.substr(1);
    var prefix = 't';
    if(stopId.startsWith('b')) {
        url = ttss_buses_base;
        stop = stopId.substr(1);
        prefix = 'b';
    }
    stop_id = stopId;
    
    ignore_hashchange = true;
    window.location.hash = '#!' + language + stopId;
    refresh_button.removeAttribute('disabled');
    
    loading_start();
    times_xhr = $.get(
        ttss_base + '/services/passageInfo/stopPassages/stop'
            + '?stop=' + encodeURIComponent(stopId)
        url + '/services/passageInfo/stopPassages/stop'
            + '?stop=' + encodeURIComponent(stop)
            + '&mode=departure'
    ).done(function(data) {
        setText(times_stop_name, data.stopName);
@@ -111,7 +120,7 @@
            var tr = document.createElement('tr');
            addCellWithText(tr, data.old[i].patternText);
            var dir_cell = addCellWithText(tr, data.old[i].direction);
            var vehicle = parseVehicle(data.old[i].vehicleId);
            var vehicle = parseVehicle(prefix + data.old[i].vehicleId);
            dir_cell.appendChild(displayVehicle(vehicle));
            addCellWithText(tr, (vehicle ? vehicle.num : '')).className = 'vehicleData';
            var status = parseStatus(data.old[i]);
@@ -121,7 +130,7 @@
            tr.className = 'active';
            tr.addEventListener('click', function(tripId, vehicleInfo) {
                return function(){ loadRoute(tripId, vehicleInfo); }
            }(data.old[i].tripId, vehicle));
            }(prefix + data.old[i].tripId, vehicle));
            times_table.appendChild(tr);
        }
        
@@ -129,7 +138,7 @@
            var tr = document.createElement('tr');
            addCellWithText(tr, data.actual[i].patternText);
            var dir_cell = addCellWithText(tr, data.actual[i].direction);
            var vehicle = parseVehicle(data.actual[i].vehicleId);
            var vehicle = parseVehicle(prefix + data.actual[i].vehicleId);
            dir_cell.appendChild(displayVehicle(vehicle));
            addCellWithText(tr, (vehicle ? vehicle.num : '')).className = 'vehicleData';
            var status = parseStatus(data.actual[i]);
@@ -151,7 +160,7 @@
            
            tr.addEventListener('click', function(tripId, vehicleInfo) {
                return function(){ loadRoute(tripId, vehicleInfo); }
            }(data.actual[i].tripId, vehicle));
            }(prefix + data.actual[i].tripId, vehicle));
            times_table.appendChild(tr);
        }
        
@@ -179,13 +188,23 @@
    if(vehicleInfo === undefined) vehicleInfo = route_vehicle_info;
    
    console.log('loadRoute(' + tripId + ')');
    var url = ttss_trams_base;
    var trip = tripId.substr(1);
    var prefix = 't';
    if(tripId.startsWith('b')) {
        url = ttss_buses_base;
        trip = tripId.substr(1);
        prefix = 'b';
    }
    route_id = tripId;
    route_vehicle_info = vehicleInfo;
    
    if(route_xhr) route_xhr.abort();
    route_xhr = $.get(
        ttss_base + '/services/tripInfo/tripPassages'
            + '?tripId=' + encodeURIComponent(tripId)
        url + '/services/tripInfo/tripPassages'
            + '?tripId=' + encodeURIComponent(trip)
            + '&mode=departure'
    ).done(function(data) {
        if(!data.routeName || !data.directionText || data.old.length + data.actual.length == 0) {
@@ -212,7 +231,7 @@
            addCellWithText(tr, data.old[i].stop_seq_num + '. ' + data.old[i].stop.name);
            
            tr.className = 'active';
            tr.addEventListener('click', function(stopId){ return function(){ loadTimes(stopId); } }(data.old[i].stop.shortName) );
            tr.addEventListener('click', function(stopId){ return function(){ loadTimes(stopId); } }(prefix + data.old[i].stop.shortName) );
            route_table.appendChild(tr);
        }
        
@@ -224,7 +243,7 @@
            if(data.actual[i].status == 'STOPPING') {
                tr.className = 'success';
            }
            tr.addEventListener('click', function(stopId){ return function(){ loadTimes(stopId); } }(data.actual[i].stop.shortName) );
            tr.addEventListener('click', function(stopId){ return function(){ loadTimes(stopId); } }(prefix + data.actual[i].stop.shortName) );
            route_table.appendChild(tr);
        }
    }).fail(fail_ajax);
@@ -326,13 +345,22 @@
    }
    
    if(window.location.hash.match(/^#![0-9]+$/)) {
        loadTimes(parseInt(window.location.hash.substr(2)));
        loadTimes('t' + window.location.hash.substr(2));
    } else if(window.location.hash.match(/^#![bt][0-9]+$/)) {
        loadTimes(window.location.hash.substr(2));
    } else if(window.location.hash.match(/^#![a-z]{2}[0-9]*$/)) {
        var stop = parseInt(window.location.hash.substr(4));
        var stop = 't' + window.location.hash.substr(4);
        if(stop) stop_id = stop;
        
        if(!change_language(window.location.hash.substr(2, 2))) {
            loadTimes(parseInt(window.location.hash.substr(2)));
            loadTimes(stop);
        }
    } else if(window.location.hash.match(/^#![a-z]{2}[bt][0-9]*$/)) {
        var stop = window.location.hash.substr(4);
        if(stop) stop_id = stop;
        if(!change_language(window.location.hash.substr(2, 2))) {
            loadTimes(stop);
        }
    }
}
@@ -341,15 +369,13 @@
    if(stop_name_autocomplete_xhr) stop_name_autocomplete_xhr.abort();
    
    stop_name_autocomplete_xhr = $.get(
        'stops.php?query=' + encodeURIComponent(stop_name.value)
        'stops/?query=' + encodeURIComponent(stop_name.value)
    ).done(function(data) {
        deleteChildren(stop_name_autocomplete);
        for(var i = 0, il = data.length; i < il; i++) {
            if(data[i].type != 'stop') continue;
            if(data[i].id > 6000) continue;
            var opt = document.createElement('option');
            opt.value = data[i].id;
            setText(opt, data[i].name);
            setText(opt, data[i].id.substr(0,1) == 'b' ? lang.select_stop_bus.replace('$stop', data[i].name) : lang.select_stop_tram.replace('$stop', data[i].name));
            stop_name_autocomplete.appendChild(opt);
        }
        
lang_en.js
@@ -8,6 +8,8 @@
    jquery_not_loaded: 'Required JavaScript jQuery library failed to load. You may try refreshing the page.',
    enter_stop_name_to_begin: 'Enter the stop name to begin.',
    select_stop_click_go: 'Select the stop and click "Go".',
    select_stop_tram: '$stop (tram)',
    select_stop_bus: '$stop (bus)',
    stop_name_placeholder: 'Stop name',
    go_button: 'Go',
    refresh_button: '\u27f3 Refresh',
lang_pl.js
@@ -8,6 +8,8 @@
    jquery_not_loaded: 'Wymagana biblioteka jQuery nie została poprawnie załadowana. Spróbuj odświeżyć stronę.',
    enter_stop_name_to_begin: 'Zacznij wpisywać nazwę przystanku.',
    select_stop_click_go: 'Wyierz przystanek i kliknij "Dalej".',
    select_stop_tram: '$stop (tramwaj)',
    select_stop_bus: '$stop (autobus)',
    stop_name_placeholder: 'Nazwa przystanku',
    go_button: 'Dalej',
    refresh_button: '\u27f3 Odśwież',
map.html
@@ -16,8 +16,8 @@
<script src="https://code.jquery.com/jquery-3.3.1.min.js" integrity="sha384-tsQFqpEReu7ZLhBV2VZlAu7zcOV+rXbYlF2cqB8txI/8aZajjp4Bqd+V6D5IgvKT" crossorigin="anonymous"></script>
<script src="https://cdn.polyfill.io/v2/polyfill.min.js?features=requestAnimationFrame,Element.prototype.classList"></script>
<script src="https://cdn.jsdelivr.net/gh/openlayers/openlayers.github.io@master/en/v5.3.0/build/ol.js" integrity="sha384-iQkGyyH4ioz3m+maM3s9MX1Oq67mACa4B9Z3ovUv3Sv37LJ96fx3WnZfLoiC3Wfl" crossorigin="anonymous"></script>
<script tyle="text/javascript" src="lang_pl.js?v2" id="lang_script"></script>
<script tyle="text/javascript" src="common.js?v3"></script>
<script tyle="text/javascript" src="lang_pl.js?v3" id="lang_script"></script>
<script tyle="text/javascript" src="common.js?v4"></script>
<script tyle="text/javascript" src="map.js?v6"></script>
</body>
</html>
map.js
@@ -1,7 +1,3 @@
//var ttss_trams_base = 'http://www.ttss.krakow.pl/internetservice';
var ttss_trams_base = 'proxy_tram.php';
//var ttss_buses_base = 'http://91.223.13.70/internetservice';
var ttss_buses_base = 'proxy_bus.php';
var ttss_refresh = 10000; // 10 seconds
var ttss_position_type = 'CORRECTED';
stops.php
@@ -12,7 +12,7 @@
    $pdo = new PDO('sqlite:stops/stops.db', NULL, NULL, array(
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
    ));
    $st = $pdo->prepare('SELECT DISTINCT id FROM stop_search WHERE word LIKE ?');
    $st = $pdo->prepare('SELECT DISTINCT id FROM stop_search WHERE word LIKE ? AND id LIKE \'t%\'');
    
    // Split stop name into words
    $words = split_stop_name($_GET['query']);
stops/common.php
@@ -13,5 +13,5 @@
    }
    unset($word);
    
    return $words;
    return array_values($words);
}
stops/download_stops.php
@@ -1,18 +1,30 @@
<?php
if(php_sapi_name() !== 'cli') die();
$json = file_get_contents('http://www.ttss.krakow.pl/internetservice/geoserviceDispatcher/services/stopinfo/stops?left=-648000000&bottom=-324000000&right=648000000&top=324000000');
$elements = json_decode($json, 1);
foreach($elements['stops'] as $element) {
    if($element['category'] == 'other') continue;
    $stops[$element['shortName']] = $element['name'];
function fetchStops($url) {
    $json = file_get_contents($url);
    $elements = json_decode($json, 1);
    $stops = [];
    foreach($elements['stops'] as $element) {
        if($element['category'] == 'other') continue;
        $stops[$element['shortName']] = $element['name'];
    }
    asort($stops);
    return $stops;
}
asort($stops);
function printStops($stops, $prefix) {
    foreach($stops as $id => $stop) {
        echo '  \''.$prefix.str_pad($id."'", 5, ' ', STR_PAD_RIGHT).' => '.var_export($stop, TRUE).','."\n";
    }
}
$stops_tram = fetchStops('http://www.ttss.krakow.pl/internetservice/geoserviceDispatcher/services/stopinfo/stops?left=-648000000&bottom=-324000000&right=648000000&top=324000000');
$stops_bus = fetchStops('http://91.223.13.70/internetservice/geoserviceDispatcher/services/stopinfo/stops?left=-648000000&bottom=-324000000&right=648000000&top=324000000');
echo '<?php'."\n";
echo '$stops = array ('."\n";
foreach($stops as $id => $stop) {
    echo '  '.str_pad($id, 4, ' ', STR_PAD_RIGHT).' => '.var_export($stop, TRUE).','."\n";
}
printStops($stops_tram, 't');
echo "\n";
printStops($stops_bus, 'b');
echo ');'."\n";
stops/index.php
New file
@@ -0,0 +1,86 @@
<?php
include('common.php');
include('stops.php');
try {
    // Reject invalid input
    if(!isset($_GET['query'])) throw new UnexpectedValueException();
    if(empty($_GET['query'])) throw new UnexpectedValueException();
    if(strlen($_GET['query']) > 50) throw new UnexpectedValueException();
    // Split stop name into words
    $words = split_stop_name($_GET['query']);
    $find_ondemand = in_array('nz', $words);
    // Initialize a DB connection and a query
    $pdo = new PDO('sqlite:stops.db', NULL, NULL, array(
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
    ));
    $st = $pdo->prepare('SELECT DISTINCT id FROM stop_search WHERE word LIKE ?'.($find_ondemand ? '' : ' AND word != \'nz\'').' ORDER BY id DESC');
    // Find matching stops (their IDs)
    $ids = NULL;
    foreach($words as $word) {
        if(empty($word)) continue;
        // Find stop IDs with names matching the word
        $st->execute(array($word.'%'));
        $results = $st->fetchAll(PDO::FETCH_COLUMN);
        $st->closeCursor();
        if(is_array($ids)) {
            // Merge results with list for previous words
            $ids = array_intersect($ids, $results);
        } else {
            // First search - initialize results list
            $ids = $results;
        }
        // No results will be found
        if(count($ids) == 0) break;
    }
    // Close a DB connection
    unset($st, $pdo);
    // No query was executed - return empty list
    if(!is_array($ids)) throw new UnexpectedValueException();
    // Build a structure for the UI
    $stop_list = [];
    $query_lower = mb_strtolower($_GET['query'], 'UTF-8');
    foreach($ids as $id) {
        similar_text(
            $query_lower,
            mb_strtolower($stops[$id], 'UTF-8'),
            $percent
        );
        // -5 due to UTF-8
        if(substr($stops[$id], -5) == '(nż)' && !$find_ondemand) {
            $percent /= 2;
        }
        $stop_list[] = [
            'id' => $id,
            'name' => $stops[$id],
            'type' => 'stop',
            'relevance' => $percent,
        ];
    }
    // Sort stops by relevance
    usort($stop_list, function($a, $b) {
        $rel = $b['relevance'] - $a['relevance'];
        if($rel == 0) return strcasecmp($a['name'], $b['name']);
        return $rel;
    });
    // Return JSON
    header('Content-Type: application/json');
    echo json_encode($stop_list);
} catch(UnexpectedValueException $e) {
    header('Content-Type: application/json');
    echo '[]';
} catch(Exception $e) {
    header('HTTP/1.1 503 Service Unavailable');
    echo $e->getMessage();
}
stops/populate_db.php
@@ -9,17 +9,21 @@
$pdo->query('DROP TABLE IF EXISTS stop_search');
$pdo->query('CREATE TABLE stop_search (
    word VARCHAR(60),
    id INT
    id VARCHAR(255)
)');
function processStops($st, $stops) {
    foreach($stops as $id => $name) {
        foreach(split_stop_name($name) as $word) {
            $st->execute([$word, $id]);
            $st->closeCursor();
        }
    }
}
$pdo->beginTransaction();
$st = $pdo->prepare('INSERT INTO stop_search (word, id) VALUES (?, ?)');
foreach($stops as $id => $name) {
    foreach(split_stop_name($name) as $word) {
        $st->execute(array($word, $id));
        $st->closeCursor();
    }
}
processStops($st, $stops);
$pdo->commit();
$pdo->query('CREATE INDEX stop_search_word ON stop_search (word COLLATE NOCASE)');
stops/stops.db
Binary files differ
stops/stops.php
@@ -1,209 +1,1645 @@
<?php
$stops = array (
  113  => 'AWF',
  462  => 'Agencja Kraków Wschód',
# 134  => 'Balicka Wiadukt', # nowa nazwa # 136  => 'Bronowice Wiadukt',
  449  => 'Bardosa',
# 75   => 'Basztowa LOT', # nowa nazwa # 3032 => 'Stary Kleparz',
  78   => 'Batorego',
  130  => 'Białucha',
  867  => 'Bieńczycka',
  630  => 'Bieżanowska',
  84   => 'Biprostal',
  461  => 'Blokowa',
# 2798 => 'Boisko Kabel', # dawny tymczasowy
  747  => 'Borek Fałęcki',
  824  => 'Borek Fałęcki I',
  612  => 'Borsucza',
  451  => 'Brama nr 4',
  453  => 'Brama nr 5',
  61   => 'Bratysławska',
  89   => 'Bronowice',
  135  => 'Bronowice Małe',
  136  => 'Bronowice Wiadukt',
  613  => 'Brożka',
  409  => 'Centralna',
  3039 => 'Centrum Kongresowe ICE',
  2691 => 'Chmieleniec',
  87   => 'Cichy Kącik',
  3037 => 'Cienista',
# 2549 => 'Cmentarz Grębałów Zachód', # nowa nazwa # 2685 => 'Jarzębiny',
  621  => 'Cmentarz Podgórski',
  124  => 'Cmentarz Rakowicki',
# 318  => 'Cracovia', # nowa nazwa # 3141 => 'Muzeum Narodowe',
  129  => 'Cystersów',
  3038 => 'Czerwone Maki P+R',
  407  => 'Czyżyny',
  392  => 'DH Wanda',
  915  => 'Dajwór', # nieczynny - linia muzealna
  435  => 'Darwina',
  632  => 'Dauna',
  388  => 'Dunikowskiego',
  623  => 'Dworcowa',
# 131  => 'Dworzec Główny', # nowa nazwa # 3242 => 'Teatr Słowackiego',
  1173 => 'Dworzec Główny Tunel',
# 8567 => 'Dworzec Główny Tunel', # duplikat # 1173 => 'Dworzec Główny Tunel',
  2608 => 'Dworzec Główny Zachód',
  2870 => 'Dworzec Płaszów Estakada',
  70   => 'Dworzec Towarowy',
# 6685 => 'Dworzec Towarowy', # duplikat # 70   => 'Dworzec Towarowy',
  370  => 'Dąbie',
  464  => 'Elektromontaż',
  368  => 'Fabryczna',
  322  => 'Filharmonia',
  1051 => 'Fort Mogiła',
  367  => 'Francesco Nullo',
  560  => 'Gromadzka',
# 585  => 'Grota Roweckiego', # nowa nazwa # 2687 => 'Grota-Roweckiego',
  2687 => 'Grota-Roweckiego',
  1049 => 'Głowackiego',
  363  => 'Hala Targowa',
# 6990 => 'Hala Targowa', # duplikat # 363  => 'Hala Targowa',
  2685 => 'Jarzębiny',
  452  => 'Jeżynowa',
  319  => 'Jubilat',
  624  => 'Kabel',
  2690 => 'Kampus UJ',
  576  => 'Kapelanka',
  429  => 'Klasztorna',
  382  => 'Kleeberga',
  946  => 'Klimeckiego',
  584  => 'Kobierzyńska',
# 401  => 'Kocmyrzowska', # nowa nazwa # 3037 => 'Cienista',
  457  => 'Koksochemia',
  459  => 'Kombinat',
  313  => 'Komorowskiego',
  450  => 'Kopiec Wandy',
# 2536 => 'Kordylewskiego', # nowa nazwa # 2859 => 'Teatr Variété',
  571  => 'Korona',
# 2803 => 'Kraków Arena Al. Pokoju', # nowa nazwa # 2871 => 'TAURON Arena Kraków Al. Pokoju',
# 959  => 'Kraków Plaza', # nowa nazwa # 3033 => 'Plaza',
  63   => 'Krowodrza Górka',
# 7612 => 'Krowodrza Górka', # duplikat # 63   => 'Krowodrza Górka',
  567  => 'Kuklińskiego',
# 744  => 'Kurdwanów', # nowa nazwa # 3176 => 'Kurdwanów P+R',
  3176 => 'Kurdwanów P+R',
# 7389 => 'Kurdwanów pętla', # nowa nazwa # 744  => 'Kurdwanów',
# 2537 => 'Lema', # nowa nazwa # 2803 => 'Kraków Arena Al. Pokoju'
  569  => 'Limanowskiego',
  2686 => 'Lipińskiego',
  561  => 'Lipska',
  126  => 'Lubicz',
  930  => 'M1 Al. Pokoju',
  1263 => 'Mały Płaszów',
  454  => 'Meksyk',
  362  => 'Miodowa',
# 6989 => 'Miodowa', # duplikat # 362  => 'Miodowa',
  375  => 'Mistrzejowice',
  2538 => 'Miśnieńska',
# 574  => 'Most Grunwaldzki', # nowa nazwa # 3039 => 'Centrum Kongresowe ICE',
  460  => 'Mrozowa',
  2726 => 'Muzeum Inżynierii Miejskiej', # nieczynny - linia muzealna
  2811 => 'Muzeum Lotnictwa',
  3141 => 'Muzeum Narodowe',
  2688 => 'Norymberska',
# 372  => 'Nowohucka', # nowa nazwa # 3041 => 'Rondo 308. Dywizjonu',
  715  => 'Nowosądecka',
# 2580 => 'Nowy Bieżanów', # nowa nazwa # 3175 => 'Nowy Bieżanów P+R',
  3175 => 'Nowy Bieżanów P+R',
  71   => 'Nowy Kleparz',
  2582 => 'Nowy Prokocim',
  369  => 'Ofiar Dąbia',
  823  => 'Oleandry',
  361  => 'Orzeszkowej',
  413  => 'Os.Kolorowe',
  424  => 'Os.Na Skarpie',
  378  => 'Os.Piastów',
  418  => 'Os.Zgody',
  377  => 'Os.Złotego Wieku',
  466  => 'PH',
  614  => 'PT',
  960  => 'Park Jordana',
  716  => 'Piaski Nowe',
  379  => 'Piasta Kołodzieja',
  570  => 'Plac Bohaterów Getta',
# 7207 => 'Plac Bohaterów Getta', # duplikat # 570  => 'Plac Bohaterów Getta',
# 414  => 'Plac Centralny', # nowa nazwa # 2744 => 'Plac Centralny im. R.Reagana',
  2744 => 'Plac Centralny im. R.Reagana',
  79   => 'Plac Inwalidów',
  360  => 'Plac Wolnica',
  1360 => 'Plac Wszystkich Świętych',
  3033 => 'Plaza',
  458  => 'Pleszów',
  357  => 'Poczta Główna',
  3158 => 'Podgórze SKA',
  73   => 'Politechnika',
# 6689 => 'Politechnika', # duplikat # 73   => 'Politechnika',
# 568  => 'Powstańców Wielkopolskich', # nowa nazwa # 3158 => 'Podgórze SKA',
# 7204 => 'Powstańców Wielkopolskich', # duplikat # 568  => 'Powstańców Wielkopolskich',
  637  => 'Prokocim',
# 7279 => 'Prokocim', # duplikat # 637  => 'Prokocim',
  682  => 'Prokocim Szpital',
# 69   => 'Prądnicka', # nowa nazwa # 3036 => 'Szpital Narutowicza',
# 6684 => 'Prądnicka', # duplikat # 69   => 'Prądnicka',
  72   => 'Pędzichów',
  128  => 'Rakowicka',
  320  => 'Reymana',
  3041 => 'Rondo 308. Dywizjonu',
  408  => 'Rondo Czyżyńskie',
  365  => 'Rondo Grzegórzeckie',
# 6992 => 'Rondo Grzegórzeckie', # duplikat # 365  => 'Rondo Grzegórzeckie',
  2539 => 'Rondo Hipokratesa',
# 419  => 'Rondo Kocmyrzowskie', # nowa nazwa # 2745 => 'Rondo Kocmyrzowskie im. Ks. Gorzelanego',
  2745 => 'Rondo Kocmyrzowskie im. Ks. Gorzelanego',
  610  => 'Rondo Matecznego',
  125  => 'Rondo Mogilskie',
# 6747 => 'Rondo Mogilskie', # duplikat # 125  => 'Rondo Mogilskie',
  383  => 'Rondo Piastowskie',
# 587  => 'Rostworowskiego', # nowa nazwa # 589  => 'Ruczaj',
  589  => 'Ruczaj',
# 586  => 'Ruczaj I', # nowa nazwa # 585  => 'Grota Roweckiego',
  1262 => 'Rzebika',
  611  => 'Rzemieślnicza',
  311  => 'Salwator',
  615  => 'Sanktuarium Bożego Miłosierdzia',
  572  => 'Smolki',
  746  => 'Solvay',
  358  => 'Starowiślna',
# 6985 => 'Starowiślna', # duplikat # 358  => 'Starowiślna',
  3032 => 'Stary Kleparz',
  112  => 'Stella-Sawickiego',
  359  => 'Stradom',
  423  => 'Struga',
  2548 => 'Suche Stawy',
  3036 => 'Szpital Narutowicza',
  575  => 'Szwedzka',
  577  => 'Słomiana',
  2871 => 'TAURON Arena Kraków Al. Pokoju',
  3040 => 'TAURON Arena Kraków Wieczysta',
  77   => 'Teatr Bagatela',
  420  => 'Teatr Ludowy',
  3242 => 'Teatr Słowackiego',
  2859 => 'Teatr Variété',
  681  => 'Teligi',
  127  => 'Uniwersytet Ekonomiczny',
  321  => 'Uniwersytet Jagielloński',
  88   => 'Uniwersytet Pedagogiczny',
  83   => 'Urzędnicza',
  463  => 'Walcownia',
  325  => 'Wawel',
  2543 => 'Wańkowicza',
  133  => 'Wesele',
  434  => 'Wiadukty',
# 114  => 'Wieczysta', # nowa nazwa # 3040 => 'TAURON Arena Kraków Wieczysta',
  718  => 'Witosa',
# 7362 => 'Witosa', # duplikat # 718  => 'Witosa',
  634  => 'Wlotowa',
  442  => 'Wzgórza Krzesławickie',
  1154 => 'Zabłocie',
  465  => 'Zajezdnia Nowa Huta',
  679  => 'Ćwiklińskiej',
  922  => 'Łagiewniki',
# 7584 => 'Łagiewniki', # duplikat # 922  => 'Łagiewniki',
  2821 => 'Łagiewniki ZUS',
# 324  => 'Św. Gertrudy', # duplikat # 2741 => 'Św.Gertrudy',
# 364  => 'Św. Wawrzyńca', # duplikat # 2742 => 'Św.Wawrzyńca',
# 8508 => 'Św. Wawrzyńca', # duplikat # 364  => 'Św. Wawrzyńca',
  2741 => 'Św.Gertrudy',
  2742 => 'Św.Wawrzyńca',
  't113'  => 'AWF',
  't462'  => 'Agencja Kraków Wschód',
# 't134'  => 'Balicka Wiadukt', # nowa nazwa # 't136'  => 'Bronowice Wiadukt',
  't449'  => 'Bardosa',
# 't75'   => 'Basztowa LOT', # nowa nazwa # 't3032' => 'Stary Kleparz',
  't78'   => 'Batorego',
  't130'  => 'Białucha',
  't867'  => 'Bieńczycka',
  't630'  => 'Bieżanowska',
  't84'   => 'Biprostal',
  't461'  => 'Blokowa',
# 't2798' => 'Boisko Kabel', # dawny tymczasowy
  't747'  => 'Borek Fałęcki',
  't824'  => 'Borek Fałęcki I',
  't612'  => 'Borsucza',
  't451'  => 'Brama nr 4',
  't453'  => 'Brama nr 5',
  't61'   => 'Bratysławska',
  't89'   => 'Bronowice',
  't135'  => 'Bronowice Małe',
  't136'  => 'Bronowice Wiadukt',
  't613'  => 'Brożka',
  't409'  => 'Centralna',
  't3039' => 'Centrum Kongresowe ICE',
  't2691' => 'Chmieleniec',
  't87'   => 'Cichy Kącik',
  't3037' => 'Cienista',
# 't2549' => 'Cmentarz Grębałów Zachód', # nowa nazwa # 't2685' => 'Jarzębiny',
  't621'  => 'Cmentarz Podgórski',
  't124'  => 'Cmentarz Rakowicki',
# 't318'  => 'Cracovia', # nowa nazwa # 't3141' => 'Muzeum Narodowe',
  't129'  => 'Cystersów',
  't3038' => 'Czerwone Maki P+R',
  't407'  => 'Czyżyny',
  't392'  => 'DH Wanda',
  't915'  => 'Dajwór', # nieczynny - linia muzealna
  't435'  => 'Darwina',
  't632'  => 'Dauna',
  't388'  => 'Dunikowskiego',
  't623'  => 'Dworcowa',
# 't131'  => 'Dworzec Główny', # nowa nazwa # 't3242' => 'Teatr Słowackiego',
  't1173' => 'Dworzec Główny Tunel',
# 't8567' => 'Dworzec Główny Tunel', # duplikat # 't1173' => 'Dworzec Główny Tunel',
  't2608' => 'Dworzec Główny Zachód',
  't2870' => 'Dworzec Płaszów Estakada',
  't70'   => 'Dworzec Towarowy',
# 't6685' => 'Dworzec Towarowy', # duplikat # 't70'   => 'Dworzec Towarowy',
  't370'  => 'Dąbie',
  't464'  => 'Elektromontaż',
  't368'  => 'Fabryczna',
  't322'  => 'Filharmonia',
  't1051' => 'Fort Mogiła',
  't367'  => 'Francesco Nullo',
  't560'  => 'Gromadzka',
# 't585'  => 'Grota Roweckiego', # nowa nazwa # 't2687' => 'Grota-Roweckiego',
  't2687' => 'Grota-Roweckiego',
  't1049' => 'Głowackiego',
  't363'  => 'Hala Targowa',
# 't6990' => 'Hala Targowa', # duplikat # 't363'  => 'Hala Targowa',
  't2685' => 'Jarzębiny',
  't452'  => 'Jeżynowa',
  't319'  => 'Jubilat',
  't624'  => 'Kabel',
  't2690' => 'Kampus UJ',
  't576'  => 'Kapelanka',
  't429'  => 'Klasztorna',
  't382'  => 'Kleeberga',
  't946'  => 'Klimeckiego',
  't584'  => 'Kobierzyńska',
# 't401'  => 'Kocmyrzowska', # nowa nazwa # 't3037' => 'Cienista',
  't457'  => 'Koksochemia',
  't459'  => 'Kombinat',
  't313'  => 'Komorowskiego',
  't450'  => 'Kopiec Wandy',
# 't2536' => 'Kordylewskiego', # nowa nazwa # 't2859' => 'Teatr Variété',
  't571'  => 'Korona',
# 't2803' => 'Kraków Arena Al. Pokoju', # nowa nazwa # 't2871' => 'TAURON Arena Kraków Al. Pokoju',
# 't959'  => 'Kraków Plaza', # nowa nazwa # 't3033' => 'Plaza',
  't63'   => 'Krowodrza Górka',
# 't7612' => 'Krowodrza Górka', # duplikat # 't63'   => 'Krowodrza Górka',
  't567'  => 'Kuklińskiego',
# 't744'  => 'Kurdwanów', # nowa nazwa # 't3176' => 'Kurdwanów P+R',
  't3176' => 'Kurdwanów P+R',
# 't7389' => 'Kurdwanów pętla', # nowa nazwa # 't744'  => 'Kurdwanów',
# 't2537' => 'Lema', # nowa nazwa # 't2803' => 'Kraków Arena Al. Pokoju'
  't569'  => 'Limanowskiego',
  't2686' => 'Lipińskiego',
  't561'  => 'Lipska',
  't126'  => 'Lubicz',
  't930'  => 'M1 Al. Pokoju',
  't1263' => 'Mały Płaszów',
  't454'  => 'Meksyk',
  't362'  => 'Miodowa',
# 't6989' => 'Miodowa', # duplikat # 't362'  => 'Miodowa',
  't375'  => 'Mistrzejowice',
  't2538' => 'Miśnieńska',
# 't574'  => 'Most Grunwaldzki', # nowa nazwa # 't3039' => 'Centrum Kongresowe ICE',
  't460'  => 'Mrozowa',
  't2726' => 'Muzeum Inżynierii Miejskiej', # nieczynny - linia muzealna
  't2811' => 'Muzeum Lotnictwa',
  't3141' => 'Muzeum Narodowe',
  't2688' => 'Norymberska',
# 't372'  => 'Nowohucka', # nowa nazwa # 't3041' => 'Rondo 't308'. Dywizjonu',
  't715'  => 'Nowosądecka',
# 't2580' => 'Nowy Bieżanów', # nowa nazwa # 't3175' => 'Nowy Bieżanów P+R',
  't3175' => 'Nowy Bieżanów P+R',
  't71'   => 'Nowy Kleparz',
  't2582' => 'Nowy Prokocim',
  't369'  => 'Ofiar Dąbia',
  't823'  => 'Oleandry',
  't361'  => 'Orzeszkowej',
  't413'  => 'Os.Kolorowe',
  't424'  => 'Os.Na Skarpie',
  't378'  => 'Os.Piastów',
  't418'  => 'Os.Zgody',
  't377'  => 'Os.Złotego Wieku',
  't466'  => 'PH',
  't614'  => 'PT',
  't960'  => 'Park Jordana',
  't716'  => 'Piaski Nowe',
  't379'  => 'Piasta Kołodzieja',
  't570'  => 'Plac Bohaterów Getta',
# 't7207' => 'Plac Bohaterów Getta', # duplikat # 't570'  => 'Plac Bohaterów Getta',
# 't414'  => 'Plac Centralny', # nowa nazwa # 't2744' => 'Plac Centralny im. R.Reagana',
  't2744' => 'Plac Centralny im. R.Reagana',
  't79'   => 'Plac Inwalidów',
  't360'  => 'Plac Wolnica',
  't1360' => 'Plac Wszystkich Świętych',
  't3033' => 'Plaza',
  't458'  => 'Pleszów',
  't357'  => 'Poczta Główna',
  't3158' => 'Podgórze SKA',
  't73'   => 'Politechnika',
# 't6689' => 'Politechnika', # duplikat # 't73'   => 'Politechnika',
# 't568'  => 'Powstańców Wielkopolskich', # nowa nazwa # 't3158' => 'Podgórze SKA',
# 't7204' => 'Powstańców Wielkopolskich', # duplikat # 't568'  => 'Powstańców Wielkopolskich',
  't637'  => 'Prokocim',
# 't7279' => 'Prokocim', # duplikat # 't637'  => 'Prokocim',
  't682'  => 'Prokocim Szpital',
# 't69'   => 'Prądnicka', # nowa nazwa # 't3036' => 'Szpital Narutowicza',
# 't6684' => 'Prądnicka', # duplikat # 't69'   => 'Prądnicka',
  't72'   => 'Pędzichów',
  't128'  => 'Rakowicka',
  't320'  => 'Reymana',
  't3041' => 'Rondo 308. Dywizjonu',
  't408'  => 'Rondo Czyżyńskie',
  't365'  => 'Rondo Grzegórzeckie',
# 't6992' => 'Rondo Grzegórzeckie', # duplikat # 't365'  => 'Rondo Grzegórzeckie',
  't2539' => 'Rondo Hipokratesa',
# 't419'  => 'Rondo Kocmyrzowskie', # nowa nazwa # 't2745' => 'Rondo Kocmyrzowskie im. Ks. Gorzelanego',
  't2745' => 'Rondo Kocmyrzowskie im. Ks. Gorzelanego',
  't610'  => 'Rondo Matecznego',
  't125'  => 'Rondo Mogilskie',
# 't6747' => 'Rondo Mogilskie', # duplikat # 't125'  => 'Rondo Mogilskie',
  't383'  => 'Rondo Piastowskie',
# 't587'  => 'Rostworowskiego', # nowa nazwa # 't589'  => 'Ruczaj',
  't589'  => 'Ruczaj',
# 't586'  => 'Ruczaj I', # nowa nazwa # 't585'  => 'Grota Roweckiego',
  't1262' => 'Rzebika',
  't611'  => 'Rzemieślnicza',
  't311'  => 'Salwator',
  't615'  => 'Sanktuarium Bożego Miłosierdzia',
  't572'  => 'Smolki',
  't746'  => 'Solvay',
  't358'  => 'Starowiślna',
# 't6985' => 'Starowiślna', # duplikat # 't358'  => 'Starowiślna',
  't3032' => 'Stary Kleparz',
  't112'  => 'Stella-Sawickiego',
  't359'  => 'Stradom',
  't423'  => 'Struga',
  't2548' => 'Suche Stawy',
  't3036' => 'Szpital Narutowicza',
  't575'  => 'Szwedzka',
  't577'  => 'Słomiana',
  't2871' => 'TAURON Arena Kraków Al. Pokoju',
  't3040' => 'TAURON Arena Kraków Wieczysta',
  't77'   => 'Teatr Bagatela',
  't420'  => 'Teatr Ludowy',
  't3242' => 'Teatr Słowackiego',
  't2859' => 'Teatr Variété',
  't681'  => 'Teligi',
  't127'  => 'Uniwersytet Ekonomiczny',
  't321'  => 'Uniwersytet Jagielloński',
  't88'   => 'Uniwersytet Pedagogiczny',
  't83'   => 'Urzędnicza',
  't463'  => 'Walcownia',
  't325'  => 'Wawel',
  't2543' => 'Wańkowicza',
  't133'  => 'Wesele',
  't434'  => 'Wiadukty',
# 't114'  => 'Wieczysta', # nowa nazwa # 't3040' => 'TAURON Arena Kraków Wieczysta',
  't718'  => 'Witosa',
# 't7362' => 'Witosa', # duplikat # 't718'  => 'Witosa',
  't634'  => 'Wlotowa',
  't442'  => 'Wzgórza Krzesławickie',
  't1154' => 'Zabłocie',
  't465'  => 'Zajezdnia Nowa Huta',
  't679'  => 'Ćwiklińskiej',
  't922'  => 'Łagiewniki',
# 't7584' => 'Łagiewniki', # duplikat # 't922'  => 'Łagiewniki',
  't2821' => 'Łagiewniki ZUS',
# 't324'  => 'Św. Gertrudy', # duplikat # 't2741' => 'Św.Gertrudy',
# 't364'  => 'Św. Wawrzyńca', # duplikat # 't2742' => 'Św.Wawrzyńca',
# 't8508' => 'Św. Wawrzyńca', # duplikat # 't364'  => 'Św. Wawrzyńca',
  't2741' => 'Św.Gertrudy',
  't2742' => 'Św.Wawrzyńca',
  'b3111' => 'AGH / UR',
  'b113'  => 'AWF',
  'b1328' => 'Agatowa (nż)',
  'b462'  => 'Agencja Kraków Wschód (nż)',
  'b117'  => 'Akacjowa',
  'b2573' => 'Albatrosów',
  'b415'  => 'Aleja Przyjaźni',
  'b416'  => 'Aleja Róż',
  'b2625' => 'Aleja Waszyngtona (nż)',
  'b235'  => 'Aleksandrowice',
  'b236'  => 'Aleksandrowice Osiedle (nż)',
  'b3150' => 'Aleksandrowicza (nż)',
  'b1122' => 'Aleksandry',
  'b437'  => 'Architektów',
  'b403'  => 'Arka',
  'b2533' => 'Armii Krajowej',
  'b54'   => 'Azory',
  'b145'  => 'Baba Jaga (nż)',
  'b767'  => 'Babińskiego',
  'b1083' => 'Baczyńskiego (nż)',
  'b2565' => 'Bagienna',
  'b2865' => 'Bagry',
  'b221'  => 'Balice Autostrada (nż)',
  'b2635' => 'Balice Grzybów (nż)',
  'b226'  => 'Balice I (nż)',
  'b223'  => 'Balice Instytut (nż)',
  'b2636' => 'Balice Leśna (nż)',
  'b3012' => 'Balice Medweckiego (nż)',
  'b892'  => 'Balice OSP (nż)',
  'b3013' => 'Balice Olszanica Bory',
  'b222'  => 'Balice Szkoła',
  'b2912' => 'Balice Winna Góra (nż)',
  'b2796' => 'Banacha',
  'b541'  => 'Bartnicza (nż)',
  'b2551' => 'Barwna (nż)',
  'b703'  => 'Barycz (nż)',
  'b2528' => 'Batalionu \'Skała\' AK',
  'b78'   => 'Batorego',
  'b2962' => 'Batowice Dłubnia',
  'b352'  => 'Batowice Kapliczka',
  'b2959' => 'Batowice Spławy (nż)',
  'b3121' => 'Bazarowa',
  'b578'  => 'Bałuckiego (nż)',
  'b2633' => 'Belwederczyków (nż)',
  'b2518' => 'Benedyktowicza (nż)',
  'b923'  => 'Beskidzka',
  'b1271' => 'Białoprądnicka',
  'b130'  => 'Białucha',
  'b973'  => 'Biały Kościół (nż)',
  'b330'  => 'Bibice (nż)',
  'b2783' => 'Bibice Cmentarz (nż)',
  'b2960' => 'Bibice Kościuszki',
  'b2995' => 'Bibice Na Czekaj',
  'b2961' => 'Bibice Rynek',
  'b260'  => 'Bielany',
  'b262'  => 'Bielany Klasztor (nż)',
  'b3102' => 'Bielany Obwodnica (nż)',
  'b261'  => 'Bielany Szkoła',
  'b265'  => 'Bielańska (nż)',
  'b272'  => 'Bielańskie Skały (nż)',
  'b867'  => 'Bieńczycka',
  'b630'  => 'Bieżanowska',
  'b667'  => 'Bieżanów',
  'b3183' => 'Bieżanów Drożdżownia SKA',
  'b2725' => 'Bieżanów Granica Miasta',
  'b672'  => 'Bieżanów Kaim',
  'b665'  => 'Bieżanów Pomnik',
  'b670'  => 'Bieżanów Potrzask',
  'b663'  => 'Bieżanów Szkoła',
  'b662'  => 'Bieżanów Trafo',
  'b84'   => 'Biprostal',
  'b122'  => 'Biskupa Prandoty',
  'b3244' => 'Biskupia',
  'b3220' => 'Biskupice I (nż)',
  'b3221' => 'Biskupice II (nż)',
  'b2574' => 'Biskupińska (nż)',
  'b461'  => 'Blokowa (nż)',
  'b2597' => 'Bochenka (nż)',
  'b34'   => 'Bociana',
  'b592'  => 'Bogucianka',
  'b1258' => 'Bojki',
  'b208'  => 'Bolechowice',
  'b2917' => 'Bolechowice Drogi (nż)',
  'b2916' => 'Bolechowice Krzewiny (nż)',
  'b2915' => 'Bolechowice Zielona (nż)',
  'b2920' => 'Bolechowice Zielona Mała (nż)',
  'b2561' => 'Bolesława Śmiałego',
  'b3210' => 'Boleń Pętla',
  'b1255' => 'Bonarka',
  'b810'  => 'Bora-Komorowskiego',
  'b747'  => 'Borek Fałęcki',
  'b1118' => 'Borek Szlachecki I (nż)',
  'b1117' => 'Borek Szlachecki II (nż)',
  'b753'  => 'Borkowska',
  'b612'  => 'Borsucza',
  'b2532' => 'Bosaków',
  'b1071' => 'Bosutów Dziekanowice (nż)',
  'b2769' => 'Bosutów Krakowska (nż)',
  'b3211' => 'Bosutów Remiza',
  'b453'  => 'Brama nr 5 (nż)',
  'b530'  => 'Branice (nż)',
  'b513'  => 'Branice Na Dole (nż)',
  'b2652' => 'Branice Ośrodek Zdrowia (nż)',
  'b512'  => 'Branice Pagórek (nż)',
  'b531'  => 'Branice Szkoła',
  'b61'   => 'Bratysławska',
  'b1165' => 'Brodowicza',
  'b123'  => 'Brogi',
  'b89'   => 'Bronowice',
  'b135'  => 'Bronowice Małe',
  'b136'  => 'Bronowice Wiadukt',
  'b19'   => 'Bronowice Wielkie',
  'b638'  => 'Brzegi',
  'b639'  => 'Brzegi I',
  'b1294' => 'Brzegi III (nż)',
  'b2648' => 'Brzeska (nż)',
  'b1016' => 'Brzezie Działki (nż)',
  'b3209' => 'Brzezie Kluczwody (nż)',
  'b3049' => 'Brzezie Kościół (nż)',
  'b1048' => 'Brzezie Kulka (nż)',
  'b1021' => 'Brzezie Narodowe (nż)',
  'b1028' => 'Brzezinka',
  'b1029' => 'Brzezinka Skrzyżowanie',
  'b1027' => 'Brzezinka Zarzecze (nż)',
  'b1106' => 'Brzeźnica',
  'b1109' => 'Brzeźnica Kuźnia (nż)',
  'b1108' => 'Brzeźnica Pasieka (nż)',
  'b2695' => 'Brzoskwinia Góra (nż)',
  'b240'  => 'Brzoskwinia Kamyk (nż)',
  'b238'  => 'Brzoskwinia Koziary (nż)',
  'b3201' => 'Brzoskwinia Pętla',
  'b239'  => 'Brzoskwinia Sklep',
  'b3271' => 'Brzozówka Oskarówka',
  'b3272' => 'Brzozówka Ośrodek',
  'b2708' => 'Brzyczyna',
  'b765'  => 'Brücknera',
  'b2780' => 'Budzyń Plaża Główna (nż)',
  'b2781' => 'Budzyń Zalew Budzyński (nż)',
  'b2779' => 'Budzyń Zalew na Piaskach (nż)',
  'b743'  => 'Bujaka',
  'b881'  => 'Buków',
  'b882'  => 'Buków Klin (nż)',
  'b883'  => 'Buków Szkoła (nż)',
  'b432'  => 'Bulwarowa (nż)',
  'b2603' => 'Bulwarowa Ogródki Działkowe (nż)',
  'b1346' => 'Bunscha (nż)',
  'b2914' => 'Burów (nż)',
  'b2913' => 'Burów Centrum',
  'b2627' => 'Bystronia (nż)',
  'b978'  => 'Bębło Lasek (nż)',
  'b976'  => 'Bębło Stara Wieś (nż)',
  'b977'  => 'Bębło Łabajowa (nż)',
  'b982'  => 'Będkowice',
  'b981'  => 'Będkowice Borynia (nż)',
  'b3007' => 'Będkowice Cmentarz (nż)',
  'b2869' => 'Będkowice Długa (nż)',
  'b980'  => 'Będkowice Kawiory (nż)',
  'b979'  => 'Będkowice Mosurowa (nż)',
  'b2700' => 'Będkowice Pętla',
  'b505'  => 'Błonia Kościelnickie (nż)',
  'b2595' => 'Cechowa (nż)',
  'b385'  => 'Cedyńska',
  'b409'  => 'Centralna',
  'b2453' => 'Centrum JP II',
  'b3039' => 'Centrum Kongresowe ICE',
  'b40'   => 'Chabrowa',
  'b728'  => 'Chałubińskiego (nż)',
  'b525'  => 'Chałupki',
  'b2651' => 'Chałupki Górne (nż)',
  'b151'  => 'Chełm',
  'b3073' => 'Chełmońskiego Osiedle',
  'b3072' => 'Chełmońskiego Pętla',
  'b152'  => 'Chełmska (nż)',
  'b2691' => 'Chmieleniec',
  'b1274' => 'Chobot (nż)',
  'b1288' => 'Chobot Leśniczówka',
  'b254'  => 'Cholerzyn (nż)',
  'b3056' => 'Cholerzyn Granica (nż)',
  'b253'  => 'Cholerzyn Sklep (nż)',
  'b252'  => 'Cholerzyn Skrzyżowanie (nż)',
  'b3055' => 'Cholerzyn Zagórze (nż)',
  'b2878' => 'Chopina',
  'b886'  => 'Chorowice',
  'b230'  => 'Chrosna Kapliczka (nż)',
  'b2911' => 'Chrosna Pętla',
  'b229'  => 'Chrosna Sklep (nż)',
  'b228'  => 'Chrosna Studnia (nż)',
  'b87'   => 'Cichy Kącik',
  'b2653' => 'Ciekowiec (nż)',
  'b3037' => 'Cienista',
  'b36'   => 'Clepardia',
  'b897'  => 'Cmentarz Batowice',
  'b2699' => 'Cmentarz Batowice Wschód (nż)',
  'b3137' => 'Cmentarz Bielany (nż)',
  'b3126' => 'Cmentarz Bieżanów',
  'b3139' => 'Cmentarz Borek Fałęcki (nż)',
  'b3108' => 'Cmentarz Bronowice (nż)',
  'b448'  => 'Cmentarz Grębałów',
  'b2989' => 'Cmentarz Grębałów Południe (nż)',
  'b3034' => 'Cmentarz Olszanica (nż)',
  'b621'  => 'Cmentarz Podgórski',
  'b2992' => 'Cmentarz Prokocim',
  'b124'  => 'Cmentarz Rakowicki',
  'b2531' => 'Cmentarz Rakowicki Zachód (nż)',
  'b3120' => 'Cmentarz Ruszcza (nż)',
  'b3133' => 'Cmentarz Wróblowice',
  'b822'  => 'Conrada',
  'b2500' => 'Cracovia Błonia',
  'b2501' => 'Cracovia Stadion',
  'b129'  => 'Cystersów',
  'b975'  => 'Czajowice (nż)',
  'b1159' => 'Czarnochowice I (nż)',
  'b81'   => 'Czarnowiejska',
  'b1226' => 'Czernichów Bór (nż)',
  'b1204' => 'Czernichów GS (nż)',
  'b3224' => 'Czernichów Pętla',
  'b2892' => 'Czernichów Ratanice (nż)',
  'b2891' => 'Czernichów Ratanice Most (nż)',
  'b1203' => 'Czernichów Stacja Paliw (nż)',
  'b2890' => 'Czernichów Zakamycze (nż)',
  'b920'  => 'Czerwiakowskiego',
  'b1063' => 'Czerwieńskiego',
  'b3038' => 'Czerwone Maki P+R',
  'b878'  => 'Czulice',
  'b496'  => 'Czulice I (nż)',
  'b2881' => 'Czułów (nż)',
  'b2880' => 'Czułów Droga na Czułówek (nż)',
  'b2879' => 'Czułów Szkoła',
  'b1215' => 'Czułówek (nż)',
  'b1365' => 'Czułówek Kapliczka',
  'b407'  => 'Czyżyny',
  'b965'  => 'Czyżyny Dworzec',
  'b522'  => 'Cło',
  'b392'  => 'DH Wanda',
  'b3122' => 'Danalówka (nż)',
  'b435'  => 'Darwina',
  'b632'  => 'Dauna',
  'b3113' => 'Dobrego Pasterza',
  'b474'  => 'Dojazdów Działki (nż)',
  'b475'  => 'Dojazdów PKS',
  'b686'  => 'Dom Spokojnej Starości',
  'b646'  => 'Domagały',
  'b31'   => 'Dożynkowa',
  'b216'  => 'Droga do Niegoszowic (nż)',
  'b192'  => 'Droga do Rząski (nż)',
  'b2614' => 'Drożdżowa',
  'b518'  => 'Drożyska (nż)',
  'b2590' => 'Drużbackiej',
  'b2922' => 'Dubie Skrzyżowanie (nż)',
  'b388'  => 'Dunikowskiego',
  'b3125' => 'Duża Góra (nż)',
  'b623'  => 'Dworcowa',
  'b1060' => 'Dworzec Główny Wschód',
  'b2608' => 'Dworzec Główny Zachód',
  'b836'  => 'Dwór Czeczów',
  'b2657' => 'Dymarek (nż)',
  'b3193' => 'Dziekanowice Batowice SKA',
  'b3165' => 'Dziekanowice Długa (nż)',
  'b3166' => 'Dziekanowice Kapliczka',
  'b3194' => 'Dziekanowicka (nż)',
  'b370'  => 'Dąbie',
  'b600'  => 'Dąbrowa',
  'b1202' => 'Dąbrowa Szlachecka (nż)',
  'b907'  => 'Dąbrowa Szlachecka Figurka (nż)',
  'b1237' => 'Dąbrowa Szlachecka Krzemiennik (nż)',
  'b910'  => 'Dąbrowa Szlachecka Krzyż (nż)',
  'b3117' => 'Dąbrowskiej',
  'b838'  => 'EC Łęg',
  'b374'  => 'Elektrociepłownia Kraków',
  'b464'  => 'Elektromontaż (nż)',
  'b3116' => 'Fatimska (nż)',
  'b322'  => 'Filharmonia',
  'b1375' => 'Fiszera',
  'b2566' => 'Fort Bodzów (nż)',
  'b1051' => 'Fort Mogiła (nż)',
  'b2587' => 'Fort Swoszowice (nż)',
  'b1371' => 'Fort Winnica (nż)',
  'b754'  => 'Forteczna',
  'b367'  => 'Francesco Nullo',
  'b617'  => 'Fredry',
  'b2615' => 'Gaik (nż)',
  'b2856' => 'Gaj Kwiatowa (nż)',
  'b2857' => 'Gaj Rudawa (nż)',
  'b790'  => 'Gaj Szkoła',
  'b791'  => 'Gaj Zadziele',
  'b2858' => 'Gaj Zgody (nż)',
  'b174'  => 'Garlica Duchowna (nż)',
  'b2957' => 'Garlica Duchowna Droga do Garliczki',
  'b2628' => 'Garlica Duchowna Rozjazd',
  'b175'  => 'Garlica Murowana',
  'b2770' => 'Garlica Murowana Kasztany (nż)',
  'b2958' => 'Garlica Murowana Podskale (nż)',
  'b2629' => 'Garliczka Chochół (nż)',
  'b2588' => 'Geologów (nż)',
  'b1172' => 'Giebułtów',
  'b1177' => 'Giebułtów Morgi',
  'b1176' => 'Giebułtów Plac Zabaw (nż)',
  'b2877' => 'Giebułtów Trojadyn (nż)',
  'b2876' => 'Giebułtów Trojadyn Trafo (nż)',
  'b1352' => 'Giebułtów Zbiornik (nż)',
  'b3174' => 'Giedroycia (nż)',
  'b3178' => 'Giedroycia ZTPO (nż)',
  'b2766' => 'Giełda Balicka P+R (nż)',
  'b276'  => 'Glinnik (nż)',
  'b2751' => 'Glogera (nż)',
  'b2752' => 'Glogera Granica Miasta (nż)',
  'b2993' => 'Gnieźnieńska (nż)',
  'b2909' => 'Godlewskiego',
  'b3059' => 'Golkowice Kościół',
  'b3146' => 'Golkowice Pętla',
  'b3144' => 'Golkowice Sklep',
  'b22'   => 'Gospodarska',
  'b2760' => 'Goszcza',
  'b2763' => 'Goszcza Cmentarz (nż)',
  'b955'  => 'Goszyce (nż)',
  'b954'  => 'Goszyce Remiza (nż)',
  'b1090' => 'Gołuchowice',
  'b1091' => 'Gołuchowice Jurczyce',
  'b1092' => 'Gołuchowice Sklep (nż)',
  'b2493' => 'Grabie',
  'b1293' => 'Grabie Dom Kultury (nż)',
  'b1295' => 'Grabie Kościół (nż)',
  'b2492' => 'Grabie Kuźnia (nż)',
  'b1094' => 'Grabie Polanka (nż)',
  'b1292' => 'Grabie Szczurów (nż)',
  'b3145' => 'Grabówki Pętla',
  'b560'  => 'Gromadzka',
  'b2687' => 'Grota-Roweckiego',
  'b76'   => 'Grottgera',
  'b3186' => 'Grzegorza z Sanoka (nż)',
  'b443'  => 'Grębałów (nż)',
  'b2974' => 'Grębynice (nż)',
  'b1150' => 'Grębynice Mogiełki (nż)',
  'b2973' => 'Grębynice OSP (nż)',
  'b455'  => 'Gwarecka (nż)',
  'b749'  => 'Góra Borkowska (nż)',
  'b35'   => 'Górka Narodowa',
  'b2797' => 'Górka Narodowa Wschód',
  'b2567' => 'Górka Pychowicka (nż)',
  'b170'  => 'Górna Wieś',
  'b876'  => 'Głęboka',
  'b2996' => 'Głęboka Kolonia (nż)',
  'b3046' => 'Głęboka Zakręt (nż)',
  'b552'  => 'Habina (nż)',
  'b2991' => 'Hala Sportowa Piaski Wielkie (nż)',
  'b363'  => 'Hala Targowa',
  'b2583' => 'Hallera (nż)',
  'b741'  => 'Halszki',
  'b2642' => 'Hektary (nż)',
  'b931'  => 'Herberta (nż)',
  'b315'  => 'Hofmana (nż)',
  'b3157' => 'Husarska (nż)',
  'b510'  => 'Igołomska (nż)',
  'b38'   => 'Imbramowska',
  'b685'  => 'Instytut Pediatrii',
  'b317'  => 'Instytut Reumatologii',
  'b840'  => 'Isep (nż)',
  'b933'  => 'Iwanowice',
  'b3243' => 'Jadwigi z Łobzowa',
  'b2626' => 'Jana Kazimierza',
  'b1062' => 'Janasówka (nż)',
  'b185'  => 'Januszowice',
  'b506'  => 'Janówka (nż)',
  'b668'  => 'Jasieńskiego (nż)',
  'b832'  => 'Jasnogórska (nż)',
  'b1110' => 'Jaśkowice (nż)',
  'b1111' => 'Jaśkowice PKP (nż)',
  'b2586' => 'Jerzmanowskiego',
  'b3228' => 'Jeziorzany Górskie Domy (nż)',
  'b2904' => 'Jeziorzany Pętla',
  'b2903' => 'Jeziorzany Rondo (nż)',
  'b655'  => 'Jeżowa',
  'b2617' => 'Jordanowska (nż)',
  'b319'  => 'Jubilat',
  'b758'  => 'Judyma',
  'b2792' => 'Judyma Szkoła',
  'b742'  => 'Jugowicka',
  'b3190' => 'Jurczaka (nż)',
  'b2488' => 'Jurczyce Dom Ludowy',
  'b2490' => 'Jurczyce Podole (nż)',
  'b2489' => 'Jurczyce Szkoła (nż)',
  'b3234' => 'Jędrzejczyka (nż)',
  'b624'  => 'Kabel',
  'b1222' => 'Kamień Dół (nż)',
  'b3279' => 'Kamień Szkoła',
  'b620'  => 'Kamieńskiego',
  'b619'  => 'Kamieńskiego Wiadukt (nż)',
  'b2690' => 'Kampus UJ',
  'b445'  => 'Kantorowice',
  'b576'  => 'Kapelanka',
  'b3206' => 'Karniowice Górki (nż)',
  'b3205' => 'Karniowice Pętla',
  'b877'  => 'Karniów',
  'b546'  => 'Karowa (nż)',
  'b717'  => 'Karpińskiego',
  'b147'  => 'Kasztanowa',
  'b283'  => 'Kaszów',
  'b282'  => 'Kaszów II (nż)',
  'b284'  => 'Kaszów Tyrałówka (nż)',
  'b2886' => 'Kaszów Wyźrał (nż)',
  'b285'  => 'Kaszów Łysa Góra (nż)',
  'b13'   => 'Katowicka',
  'b82'   => 'Kawiory',
  'b945'  => 'Kenara (nż)',
  'b427'  => 'Klasztor Cystersów',
  'b429'  => 'Klasztorna',
  'b382'  => 'Kleeberga',
  'b1054' => 'Kleszczów',
  'b2864' => 'Kleszczów Pod Lipką (nż)',
  'b946'  => 'Klimeckiego',
  'b935'  => 'Kliny Zacisze',
  'b768'  => 'Kobierzyn',
  'b584'  => 'Kobierzyńska',
  'b3207' => 'Kobylany Dworska (nż)',
  'b3204' => 'Kobylany Kwiatowa',
  'b1065' => 'Kobylany Remiza (nż)',
  'b215'  => 'Kochanów',
  'b214'  => 'Kochanów I (nż)',
  'b3042' => 'Kocmyrzów',
  'b3001' => 'Kocmyrzów Biblioteka',
  'b1257' => 'Kocmyrzów Krzyżówka (nż)',
  'b3000' => 'Kocmyrzów Rondo',
  'b3005' => 'Kocmyrzów Sodfiny (nż)',
  'b1158' => 'Kokotów I (nż)',
  'b1162' => 'Kokotów II (nż)',
  'b457'  => 'Koksochemia (nż)',
  'b2563' => 'Kolna (nż)',
  'b459'  => 'Kombinat',
  'b313'  => 'Komorowskiego',
  'b830'  => 'Komuny Paryskiej',
  'b799'  => 'Konary',
  'b3052' => 'Konary Pod Sosenką (nż)',
  'b1347' => 'Konary Sęk (nż)',
  'b805'  => 'Konary Włosań (nż)',
  'b326'  => 'Konopnickiej',
  'b148'  => 'Kopalina (nż)',
  'b2932' => 'Kopanka Druga (nż)',
  'b2484' => 'Kopanka Kapliczka (nż)',
  'b2813' => 'Kopanka Kościół (nż)',
  'b2931' => 'Kopanka Pętla',
  'b2485' => 'Kopanka Szkoła',
  'b242'  => 'Kopiec Kościuszki',
  'b571'  => 'Korona',
  'b2970' => 'Korzkiew Botoja (nż)',
  'b2971' => 'Korzkiew Zamek (nż)',
  'b156'  => 'Kosmowskiej (nż)',
  'b706'  => 'Kosocice',
  'b2585' => 'Kosocicka (nż)',
  'b601'  => 'Kostrze',
  'b597'  => 'Kostrze Kapliczka (nż)',
  'b599'  => 'Kostrze OSP',
  'b605'  => 'Kostrze Szkoła',
  'b2559' => 'Koszykarska',
  'b3063' => 'Kozienicka',
  'b342'  => 'Kozierów Skrzyżowanie (nż)',
  'b1139' => 'Kończyce',
  'b2644' => 'Kościelniki',
  'b2861' => 'Kraków Airport',
  'b2975' => 'Krasieniec Pod Lipą',
  'b346'  => 'Krasieniec Remiza (nż)',
  'b345'  => 'Krasieniec Stary (nż)',
  'b934'  => 'Krasieniec Zakupny',
  'b998'  => 'Krasnowolskiego (nż)',
  'b62'   => 'Krowoderskich Zuchów',
  'b63'   => 'Krowodrza Górka',
  'b2601' => 'Krowodrza Urzędy Skarbowe',
  'b381'  => 'Kruszwicka',
  'b258'  => 'Kryspinów',
  'b257'  => 'Kryspinów Sanka (nż)',
  'b2895' => 'Kryspinów Stopień Wodny (nż)',
  'b702'  => 'Krzemieniecka (nż)',
  'b3250' => 'Krzeszowice Dworzec Autobusowy',
  'b2923' => 'Krzeszowice Krakowska Muzeum (nż)',
  'b1044' => 'Krzeszowice Witaminka (nż)',
  'b3134' => 'Krzesławice Młyn (nż)',
  'b1192' => 'Krzyszkowice Kasztanowa I (nż)',
  'b1193' => 'Krzyszkowice Kasztanowa II (nż)',
  'b1191' => 'Krzyszkowice Kościół (nż)',
  'b2817' => 'Krzyszkowice Krzyszkowicka',
  'b1194' => 'Krzyszkowice Modrzewiowa (nż)',
  'b2740' => 'Krzyszkowice Os.Szymanowskiego (nż)',
  'b1195' => 'Krzyszkowice Różana (nż)',
  'b1248' => 'Krzysztoforzyce Góra (nż)',
  'b3230' => 'Krzysztoforzyce Pętla',
  'b3043' => 'Krzysztoforzyce Sklep (nż)',
  'b1256' => 'Krzysztoforzyce przy Dworze (nż)',
  'b1169' => 'Krzęcin Cmentarz (nż)',
  'b1357' => 'Krzęcin Częsna (nż)',
  'b1098' => 'Krzęcin Kapliczka (nż)',
  'b1096' => 'Krzęcin Kościół',
  'b2928' => 'Krzęcin Pętla',
  'b1095' => 'Krzęcin Sklep',
  'b1099' => 'Krzęcin Szkoła',
  'b150'  => 'Królowej Jadwigi',
  'b2739' => 'Ks.Targosza (nż)',
  'b675'  => 'Ks.Łaczka (nż)',
  'b1140' => 'Książniczki Boisko (nż)',
  'b1142' => 'Książniczki Centrum',
  'b1143' => 'Książniczki Las (nż)',
  'b544'  => 'Kujawy',
  'b567'  => 'Kuklińskiego',
  'b884'  => 'Kulerzów (nż)',
  'b885'  => 'Kulerzów Wąwóz (nż)',
  'b387'  => 'Kupały',
  'b3176' => 'Kurdwanów P+R',
  'b709'  => 'Kurdwanów Szkoła',
  'b3136' => 'Kurzei',
  'b98'   => 'Kuźnicy Kołłątajowskiej',
  'b527'  => 'Kąkolowa (nż)',
  'b759'  => 'Kąpielowa (nż)',
  'b3180' => 'Kępa (nż)',
  'b1220' => 'Kłokoczyn (nż)',
  'b3074' => 'Kłuszyńska',
  'b140'  => 'Lajkonika (nż)',
  'b694'  => 'Landaua',
  'b750'  => 'Las Borkowski (nż)',
  'b2557' => 'Lasek Mogilski',
  'b2790' => 'Lasek Łęgowski (nż)',
  'b337'  => 'Laskowiec (nż)',
  'b3217' => 'Lednica Górna (nż)',
  'b3216' => 'Lednica Górna Chorągwica (nż)',
  'b65'   => 'Lekarska',
  'b554'  => 'Lesisko',
  'b2619' => 'Leszka Białego',
  'b157'  => 'Leśmiana (nż)',
  'b3071' => 'Libertowska (nż)',
  'b2706' => 'Libertów',
  'b2638' => 'Libertów Dolny (nż)',
  'b2925' => 'Libertów Droga do Sidziny (nż)',
  'b2711' => 'Libertów Działy (nż)',
  'b2710' => 'Libertów Krzyżówka',
  'b2707' => 'Libertów Szkoła',
  'b2772' => 'Libertów Zgodna (nż)',
  'b2524' => 'Lindego (nż)',
  'b2686' => 'Lipińskiego',
  'b837'  => 'Lipowskiego (nż)',
  'b561'  => 'Lipska',
  'b289'  => 'Liszki I (nż)',
  'b286'  => 'Liszki Krzyżówka',
  'b2899' => 'Liszki Tyniecka (nż)',
  'b287'  => 'Liszki UG',
  'b2887' => 'Liszki Wołowska Droga (nż)',
  'b126'  => 'Lubicz',
  'b94'   => 'Lublańska',
  'b468'  => 'Lubocza Bugaj (nż)',
  'b467'  => 'Lubocza PKP (nż)',
  'b469'  => 'Lubocza Przychodnia',
  'b470'  => 'Lubocza Szkoła',
  'b471'  => 'Lubocza Trafo (nż)',
  'b472'  => 'Luborzyca',
  'b3002' => 'Luborzyca Szkoła',
  'b937'  => 'Lubostroń (nż)',
  'b2808' => 'Ludwinów',
  'b2905' => 'Lusina (nż)',
  'b2936' => 'Lusina Dobrzyczany (nż)',
  'b722'  => 'Lusina Dolna (nż)',
  'b1003' => 'Lusina Dwór',
  'b2637' => 'Lusina Granica',
  'b801'  => 'Lusina Górka (nż)',
  'b3184' => 'Lusina Krakówka (nż)',
  'b2937' => 'Lusina Kraśnik (nż)',
  'b1000' => 'Lusina Pętla',
  'b1002' => 'Lusina Spacerowa',
  'b1001' => 'Lusina Szkoła',
  'b2938' => 'Lusina Zagrody (nż)',
  'b2935' => 'Lusina Zielona',
  'b1196' => 'Lusina Łany (nż)',
  'b930'  => 'M1 Al. Pokoju',
  'b2736' => 'M1 Nowohucka',
  'b1269' => 'Maciejowice Góra (nż)',
  'b3159' => 'Maciejowice Pętla',
  'b3168' => 'Maciejowice Skrzyżowanie (nż)',
  'b37'   => 'Mackiewicza',
  'b3123' => 'Magazynowa (nż)',
  'b96'   => 'Majora',
  'b626'  => 'Makowa',
  'b56'   => 'Makowskiego',
  'b2542' => 'Makuszyńskiego (nż)',
  'b625'  => 'Malborska',
  'b880'  => 'Malborska Szkoła',
  'b310'  => 'Malczewskiego (nż)',
  'b2589' => 'Malinowskiego (nż)',
  'b1130' => 'Marchołta',
  'b3004' => 'Marszowice (nż)',
  'b3003' => 'Marszowice Centrum (nż)',
  'b1319' => 'Marszowice Góry (nż)',
  'b2983' => 'Maszyce (nż)',
  'b1174' => 'Maszyce Remiza (nż)',
  'b1152' => 'Maszyce Skrzyżowanie (nż)',
  'b2982' => 'Masłomiąca (nż)',
  'b2981' => 'Masłomiąca Staw (nż)',
  'b90'   => 'Mazowiecka',
  'b941'  => 'Mała Góra (nż)',
  'b2496' => 'Mała Wieś (nż)',
  'b1263' => 'Mały Płaszów',
  'b406'  => 'Medweckiego',
  'b3109' => 'Mehoffera',
  'b995'  => 'Meissnera',
  'b3130' => 'Merkuriusza Polskiego',
  'b85'   => 'Miasteczko Studenckie AGH',
  'b331'  => 'Michałowice (nż)',
  'b1058' => 'Michałowice Banasiówka (nż)',
  'b2967' => 'Michałowice Brzozowa (nż)',
  'b2963' => 'Michałowice Gościniec (nż)',
  'b2964' => 'Michałowice Górna (nż)',
  'b333'  => 'Michałowice I',
  'b336'  => 'Michałowice II (nż)',
  'b332'  => 'Michałowice Komora (nż)',
  'b905'  => 'Michałowice Koźlica (nż)',
  'b2506' => 'Michałowice Kwiaty Polne (nż)',
  'b2507' => 'Michałowice Las Michałowski (nż)',
  'b335'  => 'Michałowice Lecznica (nż)',
  'b2965' => 'Michałowice Michałówka (nż)',
  'b1145' => 'Michałowice Ogrodowa (nż)',
  'b2729' => 'Michałowice Ośrodek Zdrowia',
  'b1055' => 'Michałowice Ujęcie Wody (nż)',
  'b104'  => 'Miechowity',
  'b362'  => 'Miodowa',
  'b375'  => 'Mistrzejowice',
  'b2538' => 'Miśnieńska',
  'b2882' => 'Mników Droga do Kaszowa (nż)',
  'b3232' => 'Mników Granica (nż)',
  'b2714' => 'Mników Pańska Góra (nż)',
  'b2715' => 'Mników Skały (nż)',
  'b248'  => 'Mników Sklep (nż)',
  'b3104' => 'Mników Zarynnie (nż)',
  'b2516' => 'Mobilis',
  'b2694' => 'Mochnaniec (nż)',
  'b986'  => 'Modlnica',
  'b968'  => 'Modlnica I Kolonia (nż)',
  'b969'  => 'Modlnica II (nż)',
  'b985'  => 'Modlnica Skrzyżowanie (nż)',
  'b2875' => 'Modlnica Trojadyn Szydło (nż)',
  'b984'  => 'Modlniczka',
  'b983'  => 'Modlniczka I (nż)',
  'b3251' => 'Modlniczka Leroy Merlin (nż)',
  'b197'  => 'Modlniczka Mała',
  'b1353' => 'Modlniczka Poligon (nż)',
  'b1046' => 'Modlniczka Trzcie (nż)',
  'b2499' => 'Mogilany Cicha (nż)',
  'b888'  => 'Mogilany Cmentarz (nż)',
  'b2953' => 'Mogilany Kopce (nż)',
  'b793'  => 'Mogilany Ośrodek Zdrowia (nż)',
  'b792'  => 'Mogilany Rynek',
  'b794'  => 'Mogilany Wiadukt (nż)',
  'b806'  => 'Mogilany Włosań (nż)',
  'b233'  => 'Morawica',
  'b234'  => 'Morawica Cmentarz (nż)',
  'b232'  => 'Morawica Krzyżówka',
  'b231'  => 'Morawica Mostek (nż)',
  'b3105' => 'Morawica Rudki (nż)',
  'b3119' => 'Morcinka (nż)',
  'b1239' => 'Most Kotlarski (nż)',
  'b565'  => 'Motyla',
  'b460'  => 'Mrozowa (nż)',
  'b974'  => 'Murownia (nż)',
  'b3060' => 'Murownia Pętla',
  'b1015' => 'Muzeum Armii Krajowej (nż)',
  'b3141' => 'Muzeum Narodowe',
  'b8'    => 'Mydlniki',
  'b2525' => 'Mydlniki Granica Miasta (nż)',
  'b9'    => 'Mydlniki Stawy (nż)',
  'b740'  => 'Myślenicka (nż)',
  'b3262' => 'Młodej Polski (nż)',
  'b1144' => 'Młodziejowice Młyn (nż)',
  'b1141' => 'Młodziejowice Park',
  'b636'  => 'Młodzieży (nż)',
  'b1040' => 'Młynka (nż)',
  'b218'  => 'Młynka I (nż)',
  'b1'    => 'Młynka Pętla',
  'b2908' => 'Młynówka SKA (nż)',
  'b2616' => 'Na Budzyniu',
  'b273'  => 'Na Krępaku (nż)',
  'b550'  => 'Na Załęczu',
  'b549'  => 'Na Załęczu Szkoła (nż)',
  'b645'  => 'Nad Drwiną',
  'b2541' => 'Nad Dłubnią',
  'b2656' => 'Nadbrzezie (nż)',
  'b2966' => 'Narama Remiza',
  'b121'  => 'Narzymskiego',
  'b2606' => 'Natansona',
  'b1042' => 'Nawojowa Góra I (nż)',
  'b1043' => 'Nawojowa Góra II (nż)',
  'b2775' => 'Nałkowskiej',
  'b2594' => 'Niebieska Autostrada (nż)',
  'b3278' => 'Niebyła (nż)',
  'b1327' => 'Niedźwiedź Felix (nż)',
  'b1326' => 'Niedźwiedź PKP (nż)',
  'b1187' => 'Nielepice',
  'b1235' => 'Nielepice Stadnina (nż)',
  'b1278' => 'Niepołomice Batorego (nż)',
  'b1279' => 'Niepołomice Batorego II (nż)',
  'b1306' => 'Niepołomice Boryczów (nż)',
  'b1300' => 'Niepołomice Diesla (nż)',
  'b1276' => 'Niepołomice Dworzec',
  'b1289' => 'Niepołomice Jazy (nż)',
  'b1290' => 'Niepołomice Jazy II (nż)',
  'b964'  => 'Niepołomice Kolejowa (nż)',
  'b1303' => 'Niepołomice Kościuszki (nż)',
  'b1298' => 'Niepołomice Kątek (nż)',
  'b1275' => 'Niepołomice Moczydło (nż)',
  'b1297' => 'Niepołomice Pasternik (nż)',
  'b1296' => 'Niepołomice Podgrabie (nż)',
  'b1299' => 'Niepołomice Poręby (nż)',
  'b1302' => 'Niepołomice Płaszowska I (nż)',
  'b1277' => 'Niepołomice Rynek',
  'b1307' => 'Niepołomice Wielicka (nż)',
  'b1301' => 'Niepołomice Wodna (nż)',
  'b2688' => 'Norymberska',
  'b280'  => 'Nowa Wieś (nż)',
  'b1197' => 'Nowa Wieś Jesionka (nż)',
  'b281'  => 'Nowa Wieś Kapliczka (nż)',
  'b279'  => 'Nowa Wieś Kościół (nż)',
  'b278'  => 'Nowa Wieś Szlachecka',
  'b395'  => 'Nowolipki (nż)',
  'b715'  => 'Nowosądecka',
  'b3175' => 'Nowy Bieżanów P+R (nż)',
  'b2581' => 'Nowy Bieżanów Południe',
  'b71'   => 'Nowy Kleparz',
  'b2582' => 'Nowy Prokocim',
  'b3068' => 'Obserwatorium (nż)',
  'b1313' => 'Ochmanów Oknoplast (nż)',
  'b2727' => 'Ochmanów Otaczarnia (nż)',
  'b1171' => 'Ochodza',
  'b1329' => 'Ochodza Dom Ludowy (nż)',
  'b1331' => 'Ochodza Odwiśle',
  'b1330' => 'Ochodza Staw (nż)',
  'b2951' => 'Ochojno Dąbrówki',
  'b863'  => 'Ochojno Kamieniec',
  'b861'  => 'Ochojno Remiza',
  'b860'  => 'Ochojno Skrzyżowanie (nż)',
  'b2655' => 'Oczyszczalnia Ścieków \'Kujawy\' (nż)',
  'b553'  => 'Odmętowa',
  'b369'  => 'Ofiar Dąbia',
  'b18'   => 'Ojcowska',
  'b16'   => 'Ojcowska Dworek',
  'b17'   => 'Ojcowska Wągroda',
  'b103'  => 'Olsza II',
  'b161'  => 'Olszanica Bory',
  'b158'  => 'Olszanica Kapliczka (nż)',
  'b2534' => 'Olszanica Ogródki Działkowe (nż)',
  'b102'  => 'Olszecka',
  'b761'  => 'Opatkowice',
  'b760'  => 'Opatkowice Wiadukt (nż)',
  'b2634' => 'Opatkowice Zadworze',
  'b92'   => 'Opolska Estakada',
  'b48'   => 'Opolska Kładka',
  'b431'  => 'Orkana',
  'b3064' => 'Orszy-Broniewskiego',
  'b3187' => 'Orłowskiego (nż)',
  'b3114' => 'Os.Akademickie PK',
  'b111'  => 'Os.Dywizjonu 303',
  'b421'  => 'Os.Górali',
  'b402'  => 'Os.Jagiellońskie',
  'b386'  => 'Os.Kalinowe',
  'b756'  => 'Os.Kliny',
  'b413'  => 'Os.Kolorowe',
  'b404'  => 'Os.Kościuszkowskie',
  'b710'  => 'Os.Kurdwanów',
  'b28'   => 'Os.Marszowiec',
  'b2737' => 'Os.Mistrzejowice Nowe',
  'b391'  => 'Os.Na Lotnisku',
  'b424'  => 'Os.Na Skarpie',
  'b939'  => 'Os.Na Stoku',
  'b436'  => 'Os.Na Stoku Szkoła',
  'b108'  => 'Os.Oświecenia',
  'b378'  => 'Os.Piastów',
  'b2812' => 'Os.Podwawelskie',
  'b582'  => 'Os.Robotnicze',
  'b390'  => 'Os.Strusia',
  'b428'  => 'Os.Wandy',
  'b430'  => 'Os.Willowe',
  'b418'  => 'Os.Zgody',
  'b422'  => 'Os.Zielone',
  'b377'  => 'Os.Złotego Wieku',
  'b1243' => 'Os.Łokietka',
  'b2643' => 'Ostafina',
  'b2969' => 'Owczary (nż)',
  'b2631' => 'Owczary Długa (nż)',
  'b2632' => 'Owczary Gajowa (nż)',
  'b2630' => 'Owczary Górna (nż)',
  'b2968' => 'Owczary Pętla',
  'b817'  => 'PB',
  'b3135' => 'PCK',
  'b819'  => 'PP',
  'b818'  => 'PW',
  'b2526' => 'Pachońskiego',
  'b963'  => 'Panieńskich Skał (nż)',
  'b2560' => 'Park \'Skały Twardowskiego\' (nż)',
  'b143'  => 'Park Decjusza',
  'b1004' => 'Park Wodny',
  'b3149' => 'Park Zdrojowy',
  'b15'   => 'Pasternik (nż)',
  'b2776' => 'Petrażyckiego (nż)',
  'b3070' => 'Petrażyckiego Osiedle (nż)',
  'b3191' => 'Petőfiego (nż)',
  'b716'  => 'Piaski Nowe',
  'b687'  => 'Piaski Wielkie',
  'b3177' => 'Piaskowa (nż)',
  'b379'  => 'Piasta Kołodzieja',
  'b2529' => 'Piaszczysta',
  'b270'  => 'Piekary',
  'b2898' => 'Piekary Borki (nż)',
  'b2900' => 'Piekary Dół (nż)',
  'b868'  => 'Piekary Górne',
  'b2897' => 'Piekary Korea (nż)',
  'b2896' => 'Piekary Na Brzegu (nż)',
  'b1189' => 'Piekary Pałac (nż)',
  'b269'  => 'Piekary Sklep (nż)',
  'b2985' => 'Pielgrzymowice (nż)',
  'b2986' => 'Pielgrzymowice Granica (nż)',
  'b2984' => 'Pielgrzymowice Pętla',
  'b3035' => 'Pielęgniarek',
  'b119'  => 'Pilotów',
  'b1036' => 'Pisary (nż)',
  'b1236' => 'Pisary Dwór (nż)',
  'b2860' => 'Pisary Kasztanowa (nż)',
  'b1037' => 'Pisary Kiosk (nż)',
  'b1038' => 'Pisary Mleczarnia (nż)',
  'b1041' => 'Pisary Skrzyżowanie (nż)',
  'b3263' => 'Plac Axentowicza',
  'b570'  => 'Plac Bohaterów Getta',
  'b2744' => 'Plac Centralny im. R.Reagana',
  'b79'   => 'Plac Inwalidów',
  'b360'  => 'Plac Wolnica',
  'b1360' => 'Plac Wszystkich Świętych',
  'b47'   => 'Pleszowska',
  'b458'  => 'Pleszów',
  'b357'  => 'Poczta Główna',
  'b944'  => 'Pod Fortem',
  'b1014' => 'Pod Lipą (nż)',
  'b812'  => 'Podgaje',
  'b603'  => 'Podgórki Tynieckie',
  'b3158' => 'Podgórze SKA',
  'b517'  => 'Podstawie (nż)',
  'b644'  => 'Podwierzbie',
  'b1311' => 'Podłęże Balachówka (nż)',
  'b1309' => 'Podłęże Centrum (nż)',
  'b2728' => 'Podłęże Przedszkole (nż)',
  'b1310' => 'Podłęże Straż (nż)',
  'b956'  => 'Polana Żywiecka (nż)',
  'b1093' => 'Polanka Hallera Dwór',
  'b1318' => 'Polanowice (nż)',
  'b1323' => 'Polanowice Kolonia (nż)',
  'b73'   => 'Politechnika',
  'b380'  => 'Popielidów',
  'b833'  => 'Poronińska (nż)',
  'b97'   => 'Powstańców',
  'b1155' => 'Powstańców Garaże',
  'b3195' => 'Powstańców Magazyny',
  'b2806' => 'Poziomkowa',
  'b580'  => 'Praska (nż)',
  'b3010' => 'Prawocheńskiego (nż)',
  'b2746' => 'Prokocim Rynek',
  'b682'  => 'Prokocim Szpital',
  'b684'  => 'Prokocim UJ',
  'b633'  => 'Prosta',
  'b479'  => 'Prusy',
  'b478'  => 'Prusy Szkoła (nż)',
  'b477'  => 'Prusy WSR (nż)',
  'b671'  => 'Pruszyńskiego',
  'b3219' => 'Przebieczany',
  'b1214' => 'Przeginia Duchowna (nż)',
  'b1228' => 'Przeginia Duchowna Bar (nż)',
  'b1199' => 'Przeginia Duchowna Centrum',
  'b1198' => 'Przeginia Duchowna Szkoła (nż)',
  'b1227' => 'Przeginia Narodowa (nż)',
  'b2906' => 'Przeginia Narodowa Bonar (nż)',
  'b316'  => 'Przegon',
  'b275'  => 'Przegorzały',
  'b3182' => 'Przegorzały Obwodnica (nż)',
  'b641'  => 'Przewóz',
  'b904'  => 'Przy Kuźni (nż)',
  'b2530' => 'Przybyszewskiego',
  'b190'  => 'Przybysławice I (nż)',
  'b191'  => 'Przybysławice II',
  'b1084' => 'Przybysławice III (nż)',
  'b745'  => 'Przykopy (nż)',
  'b532'  => 'Przylasek Rusiecki',
  'b543'  => 'Przylasek Wyciąski (nż)',
  'b2527' => 'Prądnik Biały',
  'b870'  => 'Prądnik Biały Zachód',
  'b100'  => 'Prądnik Czerwony',
  'b1164' => 'Pszona',
  'b1253' => 'Puszkarska',
  'b2569' => 'Pychowice',
  'b730'  => 'Pytlasińskiego',
  'b3124' => 'Półłanki',
  'b72'   => 'Pędzichów',
  'b2703' => 'Pękowice',
  'b2873' => 'Płaszowska',
  'b564'  => 'Płaszów Szkoła',
  'b660'  => 'Płk. Dąbka',
  'b354'  => 'Raciborowice',
  'b1138' => 'Raciborowice Centrum',
  'b2988' => 'Raciborowice Granica (nż)',
  'b154'  => 'Raczkiewicza (nż)',
  'b1033' => 'Radwanowice I (nż)',
  'b3208' => 'Radwanowice Krzeszowicka (nż)',
  'b1032' => 'Radwanowice Pętla',
  'b132'  => 'Radzikowskiego',
  'b1376' => 'Radzikowskiego Osiedle',
  'b788'  => 'Radziszów Centrum',
  'b2774' => 'Radziszów Cmentarz (nż)',
  'b789'  => 'Radziszów Kamionna (nż)',
  'b1182' => 'Radziszów Kładka (nż)',
  'b797'  => 'Radziszów Leśniczówka (nż)',
  'b1186' => 'Radziszów PKP',
  'b798'  => 'Radziszów Podlesie (nż)',
  'b3233' => 'Radziszów Podlesie Las (nż)',
  'b1184' => 'Radziszów Podwale (nż)',
  'b2477' => 'Radziszów Stare Sanatorium (nż)',
  'b3075' => 'Radziszów Szpital',
  'b786'  => 'Radziszów Włosanka (nż)',
  'b2491' => 'Radziszów Za Mogiłką (nż)',
  'b1183' => 'Radziszów Zacisze (nż)',
  'b787'  => 'Radziszów Zadworze (nż)',
  'b1185' => 'Radziszów Zawodzie (nż)',
  'b695'  => 'Rajsko',
  'b1325' => 'Ratajów Skrzyżowanie (nż)',
  'b3192' => 'Reduta (nż)',
  'b502'  => 'Resztówka',
  'b2568' => 'Rodzinna',
  'b3041' => 'Rondo 308. Dywizjonu',
  'b1066' => 'Rondo Barei',
  'b408'  => 'Rondo Czyżyńskie',
  'b365'  => 'Rondo Grzegórzeckie',
  'b2539' => 'Rondo Hipokratesa',
  'b2745' => 'Rondo Kocmyrzowskie im. Ks. Gorzelanego',
  'b610'  => 'Rondo Matecznego',
  'b125'  => 'Rondo Mogilskie',
  'b118'  => 'Rondo Młyńskie',
  'b12'   => 'Rondo Ofiar Katynia',
  'b383'  => 'Rondo Piastowskie',
  'b2689' => 'Rostworowskiego',
  'b589'  => 'Ruczaj',
  'b217'  => 'Rudawa (nż)',
  'b1030' => 'Rudawa Bloki (nż)',
  'b1031' => 'Rudawa Kościół',
  'b1064' => 'Rudawa Młyn (nż)',
  'b1059' => 'Rudawa PKP',
  'b2924' => 'Rudawa Stadion (nż)',
  'b1039' => 'Rudawa Szkoła',
  'b2894' => 'Rusocice Droga do Kościoła (nż)',
  'b1260' => 'Rusocice Jałowce (nż)',
  'b1229' => 'Rusocice Skład (nż)',
  'b2893' => 'Rusocice Stacja Benzynowa (nż)',
  'b1230' => 'Rusocice Wieś',
  'b1261' => 'Rusocice Załęg (nż)',
  'b1225' => 'Rusocice Łęg (nż)',
  'b520'  => 'Ruszcza',
  'b653'  => 'Rybitwy Dom Kultury',
  'b652'  => 'Rybitwy Rozjazd (nż)',
  'b654'  => 'Rybitwy Sklep (nż)',
  'b1209' => 'Rybna',
  'b1367' => 'Rybna Dolna',
  'b3103' => 'Rybna Droga do Sanki (nż)',
  'b1213' => 'Rybna Dół (nż)',
  'b1368' => 'Rybna Granica (nż)',
  'b1208' => 'Rybna Nowy Świat',
  'b2884' => 'Rybna Nowy Świat Góra (nż)',
  'b1212' => 'Rybna Ośrodek Zdrowia (nż)',
  'b2885' => 'Rybna Szkoła (nż)',
  'b1341' => 'Rybna Zagórze (nż)',
  'b579'  => 'Rynek Dębnicki',
  'b616'  => 'Rynek Fałęcki',
  'b1262' => 'Rzebika',
  'b611'  => 'Rzemieślnicza',
  'b3009' => 'Rzepakowa (nż)',
  'b2654' => 'Rzepakowa Świetlica (nż)',
  'b153'  => 'Rzepichy (nż)',
  'b855'  => 'Rzeszotary',
  'b859'  => 'Rzeszotary Górne (nż)',
  'b2940' => 'Rzeszotary Panciawa (nż)',
  'b2939' => 'Rzeszotary Panciawa Pętla',
  'b2778' => 'Rzeszotary Pod Dębiną (nż)',
  'b858'  => 'Rzeszotary Polanki (nż)',
  'b857'  => 'Rzeszotary Szkoła (nż)',
  'b2732' => 'Rzeszotary Tempo (nż)',
  'b856'  => 'Rzeszotary Trafo (nż)',
  'b842'  => 'Rzeszotary Zalesie (nż)',
  'b1087' => 'Rzozów Baseny (nż)',
  'b1088' => 'Rzozów I (nż)',
  'b1180' => 'Rzozów PKP (nż)',
  'b1179' => 'Rzozów Skotnica (nż)',
  'b1089' => 'Rzozów Szkoła',
  'b1181' => 'Rzozów Zagonnie (nż)',
  'b196'  => 'Rząska Autostrada (nż)',
  'b193'  => 'Rząska Jednostka Wojskowa (nż)',
  'b3199' => 'Rząska Szkoła',
  'b194'  => 'Rząska UR (nż)',
  'b55'   => 'Różyckiego',
  'b3061' => 'Rączna Bażanty (nż)',
  'b2902' => 'Rączna Boisko (nż)',
  'b1217' => 'Rączna Dzikowiec (nż)',
  'b296'  => 'Rączna Kapliczka (nż)',
  'b1370' => 'Rączna Kościół (nż)',
  'b2901' => 'Rączna OSP (nż)',
  'b306'  => 'Rączna Osiedle (nż)',
  'b1216' => 'Rączna Podlas (nż)',
  'b3044' => 'Rżąka',
  'b2762' => 'Sadowie (nż)',
  'b311'  => 'Salwator',
  'b3152' => 'Sapalskiego (nż)',
  'b559'  => 'Saska',
  'b3128' => 'Sawiczewskich',
  'b3261' => 'Sewera (nż)',
  'b772'  => 'Sidzina',
  'b943'  => 'Sieborowice (nż)',
  'b542'  => 'Siejówka (nż)',
  'b142'  => 'Sielanka',
  'b2547' => 'Sieroszewskiego (nż)',
  'b32'   => 'Siewna',
  'b33'   => 'Siewna Wiadukt',
  'b1166' => 'Sikorki',
  'b2556' => 'Siwka (nż)',
  'b264'  => 'Skalna (nż)',
  'b2731' => 'Skarżyńskiego',
  'b779'  => 'Skawina',
  'b1133' => 'Skawina 29 Listopada',
  'b2473' => 'Skawina Ajka',
  'b2854' => 'Skawina Bukowska (nż)',
  'b2863' => 'Skawina Centrum Sportowe',
  'b2475' => 'Skawina Cmentarz',
  'b1137' => 'Skawina Cmentarz Komunalny',
  'b1104' => 'Skawina Elektrownia (nż)',
  'b2487' => 'Skawina Energetyków (nż)',
  'b3008' => 'Skawina Energetyków Przejazd PKP (nż)',
  'b2853' => 'Skawina Graniczna (nż)',
  'b1086' => 'Skawina Koncentraty',
  'b2930' => 'Skawina Kopernika (nż)',
  'b1101' => 'Skawina Korabnicka (nż)',
  'b1102' => 'Skawina Korabnicka Szkoła (nż)',
  'b2481' => 'Skawina Korabniki',
  'b2494' => 'Skawina Nad Potokiem (nż)',
  'b2868' => 'Skawina Ofiar Katynia',
  'b2929' => 'Skawina Ogrody (nż)',
  'b2471' => 'Skawina Os.Radziszowskie (nż)',
  'b2867' => 'Skawina Pileckiego',
  'b1103' => 'Skawina Piłsudskiego',
  'b1107' => 'Skawina Podbory (nż)',
  'b2927' => 'Skawina Podgórki Skawińskie',
  'b2476' => 'Skawina Podlipki',
  'b2474' => 'Skawina Popiełuszki',
  'b2472' => 'Skawina Radziszowska (nż)',
  'b2486' => 'Skawina Robotnicza (nż)',
  'b781'  => 'Skawina Rynek',
  'b785'  => 'Skawina Rzepnik',
  'b2480' => 'Skawina Samborek Most',
  'b1134' => 'Skawina Starostwo Powiatowe',
  'b1007' => 'Skawina Szkoła',
  'b1008' => 'Skawina Sąd',
  'b2479' => 'Skawina Tyniecka',
  'b2478' => 'Skawina Tyniecka Osiedle',
  'b3173' => 'Skawina Tyniecka Rzepnik (nż)',
  'b1011' => 'Skawina Wojska Polskiego',
  'b1100' => 'Skawina Wyspiańskiego',
  'b2820' => 'Skawina Wyspiańskiego Szkoła (nż)',
  'b1105' => 'Skawina Zachodnia (nż)',
  'b219'  => 'Skała Kmity (nż)',
  'b766'  => 'Skotniki',
  'b3181' => 'Skotniki Kościół',
  'b604'  => 'Skotniki Szkoła',
  'b752'  => 'Skośna',
  'b42'   => 'Skrajna (nż)',
  'b953'  => 'Skrzeszowice',
  'b967'  => 'Skrzyżowanie do Podchruścia (nż)',
  'b1153' => 'Smardzowice',
  'b2972' => 'Smardzowice Wołówka (nż)',
  'b816'  => 'Smoleńskiego',
  'b572'  => 'Smolki',
  'b699'  => 'Soboniowice',
  'b746'  => 'Solvay',
  'b2544' => 'Sołtysowska (nż)',
  'b2546' => 'Sołtysowska Osiedle',
  'b2545' => 'Sołtysowska Zakłady',
  'b116'  => 'Spadochroniarzy',
  'b3276' => 'Spławy',
  'b57'   => 'Stachiewicza',
  'b1308' => 'Staniątki Wiadukt (nż)',
  'b144'  => 'Stara Wola',
  'b2558' => 'Stare Wiślisko',
  'b358'  => 'Starowiślna',
  'b3032' => 'Stary Kleparz',
  'b2791' => 'Stawowa',
  'b112'  => 'Stella-Sawickiego',
  'b558'  => 'Stoczniowców',
  'b711'  => 'Stojałowskiego',
  'b359'  => 'Stradom',
  'b423'  => 'Struga',
  'b2874' => 'Strycharska',
  'b101'  => 'Strzelców',
  'b141'  => 'Strzelnica',
  'b618'  => 'Sucha',
  'b666'  => 'Sucharskiego (nż)',
  'b456'  => 'Suchy Jar (nż)',
  'b2602' => 'Sudolska (nż)',
  'b476'  => 'Sulechów (nż)',
  'b2570' => 'Surzyckiego',
  'b2571' => 'Sułkowskiego',
  'b2497' => 'Sułków (nż)',
  'b739'  => 'Swoszowice Autostrada (nż)',
  'b732'  => 'Swoszowice Poczta',
  'b3129' => 'Swoszowice Szkoła',
  'b869'  => 'Szafrańska',
  'b562'  => 'Szczecińska',
  'b2593' => 'Szczegów',
  'b220'  => 'Szczyglice',
  'b3045' => 'Szczyglice Autostrada',
  'b871'  => 'Szczyglice Dom Kultury',
  'b224'  => 'Szczyglice Most (nż)',
  'b2910' => 'Szczyglice Podkamycze',
  'b651'  => 'Szparagowa',
  'b3203' => 'Szpital Jana Pawła II',
  'b3036' => 'Szpital Narutowicza',
  'b2759' => 'Szpital Okulistyczny',
  'b827'  => 'Szpital Rydygiera',
  'b425'  => 'Szpital Żeromskiego',
  'b575'  => 'Szwedzka',
  'b971'  => 'Szyce I (nż)',
  'b970'  => 'Szyce II (nż)',
  'b2646' => 'Szymańskiego (nż)',
  'b628'  => 'Sławka (nż)',
  'b2607' => 'Słomczyńskiego',
  'b577'  => 'Słomiana',
  'b2733' => 'Słomniki Kościuszki',
  'b1315' => 'Słomniki Osiedle',
  'b1316' => 'Słomniki Rynek',
  'b1317' => 'Słomniki Zagłoby (nż)',
  'b2584' => 'Słona Woda',
  'b3138' => 'Słoneckiego',
  'b314'  => 'Słonecznikowa',
  'b2872' => 'TAURON Arena Kraków',
  'b2871' => 'TAURON Arena Kraków Al. Pokoju (nż)',
  'b3040' => 'TAURON Arena Kraków Wieczysta',
  'b2724' => 'TR',
  'b3172' => 'Taklińskiego (nż)',
  'b77'   => 'Teatr Bagatela',
  'b420'  => 'Teatr Ludowy',
  'b3242' => 'Teatr Słowackiego',
  'b681'  => 'Teligi',
  'b919'  => 'Tischnera',
  'b3218' => 'Tomaszkowice',
  'b989'  => 'Tomaszowice',
  'b2697' => 'Tomaszowice Gliniki (nż)',
  'b988'  => 'Tomaszowice I (nż)',
  'b3167' => 'Tomaszowice Kolberga (nż)',
  'b987'  => 'Tomaszowice Wedonka (nż)',
  'b139'  => 'Tondosa (nż)',
  'b21'   => 'Tonie',
  'b990'  => 'Tonie Gliniki (nż)',
  'b25'   => 'Tonie Kąty (nż)',
  'b23'   => 'Tonie Skrzyżowanie',
  'b966'  => 'Tor Kajakowy',
  'b936'  => 'Torfowa',
  'b994'  => 'Trojadyn Skrzyżowanie (nż)',
  'b184'  => 'Trojanowice',
  'b2977' => 'Trojanowice Krakowska (nż)',
  'b178'  => 'Trojanowice Pętla',
  'b183'  => 'Trojanowice Strugi (nż)',
  'b2650' => 'Truskawkowa (nż)',
  'b2720' => 'Trzecia Góra (nż)',
  'b3222' => 'Trąbki I (nż)',
  'b3223' => 'Trąbki OSP',
  'b3245' => 'Trąbki P+R',
  'b714'  => 'Tuchowska',
  'b999'  => 'Turowicza (nż)',
  'b593'  => 'Tyniec',
  'b591'  => 'Tyniec Kamieniołom',
  'b2562' => 'Tyniecka Autostrada (nż)',
  'b3140' => 'UR Aleja 29 Listopada',
  'b5'    => 'UR Balicka',
  'b115'  => 'Ugorek',
  'b1017' => 'Ujazd Pętla',
  'b127'  => 'Uniwersytet Ekonomiczny',
  'b321'  => 'Uniwersytet Jagielloński',
  'b88'   => 'Uniwersytet Pedagogiczny',
  'b67'   => 'Urząd Marszałkowski',
  'b957'  => 'Urząd Skarbowy Nowa Huta',
  'b83'   => 'Urzędnicza',
  'b486'  => 'Wadowska (nż)',
  'b485'  => 'Wadów',
  'b492'  => 'Wadów Działki (nż)',
  'b2554' => 'Wadów Glinik (nż)',
  'b2738' => 'Wadów Os.Kolejowe',
  'b483'  => 'Wadów Osiedle (nż)',
  'b484'  => 'Wadów Szkoła',
  'b463'  => 'Walcownia (nż)',
  'b2599' => 'Warchałowskiego',
  'b3264' => 'Warmijska',
  'b3131' => 'Warszewicza (nż)',
  'b338'  => 'Warszówka (nż)',
  'b2564' => 'Wały Wiślane (nż)',
  'b2543' => 'Wańkowicza',
  'b2639' => 'Ważewskiego',
  'b2578' => 'Weigla',
  'b133'  => 'Wesele',
  'b434'  => 'Wiadukty (nż)',
  'b2722' => 'Wielicka Granica Miasta',
  'b898'  => 'Wieliczka Cmentarz',
  'b3246' => 'Wieliczka Gdowska',
  'b2852' => 'Wieliczka Goliana',
  'b2862' => 'Wieliczka Kampus',
  'b2814' => 'Wieliczka Klaśnieńska (nż)',
  'b1167' => 'Wieliczka Kopalnia Soli',
  'b911'  => 'Wieliczka Kościół',
  'b2730' => 'Wieliczka Niepołomska (nż)',
  'b3006' => 'Wieliczka Os.Asnyka',
  'b2503' => 'Wieliczka Park',
  'b3247' => 'Wieliczka Polna (nż)',
  'b1168' => 'Wieliczka Rynek',
  'b2816' => 'Wieliczka Solne Miasto',
  'b3235' => 'Wieliczka Stacja Paliw',
  'b2815' => 'Wieliczka Sąd',
  'b972'  => 'Wielka Wieś (nż)',
  'b1364' => 'Wielkie Drogi (nż)',
  'b1232' => 'Wielkie Drogi Ośrodek Zdrowia (nż)',
  'b1113' => 'Wielkie Drogi PKP (nż)',
  'b1233' => 'Wielkie Drogi Szkoła (nż)',
  'b1112' => 'Wielkie Drogi Trzebol (nż)',
  'b866'  => 'Wiklinowa (nż)',
  'b1267' => 'Wiktorowice Centrum (nż)',
  'b1264' => 'Wiktorowice Granica (nż)',
  'b3189' => 'Wiktorowice Rozlewnia Wód (nż)',
  'b1266' => 'Wiktorowice Skrzyżowanie (nż)',
  'b2515' => 'Wileńska',
  'b737'  => 'Wilga (nż)',
  'b1372' => 'Winnicka (nż)',
  'b29'   => 'Witkowice',
  'b30'   => 'Witkowice Nowe',
  'b718'  => 'Witosa',
  'b1025' => 'Więckowice (nż)',
  'b2921' => 'Więckowice Lipka (nż)',
  'b348'  => 'Więcławice Stare (nż)',
  'b2987' => 'Więcławice Stare Wysyłek (nż)',
  'b110'  => 'Wiślicka',
  'b634'  => 'Wlotowa',
  'b263'  => 'Wodociągi (nż)',
  'b3115' => 'Wodociągowa (nż)',
  'b1284' => 'Wola Batorska Borek (nż)',
  'b1283' => 'Wola Batorska Cmentarz (nż)',
  'b1282' => 'Wola Batorska Kościół (nż)',
  'b1285' => 'Wola Batorska Mikoniowiec (nż)',
  'b1280' => 'Wola Batorska Ruskie (nż)',
  'b1286' => 'Wola Batorska Zamoglice (nż)',
  'b1281' => 'Wola Batorska Żwirownia (nż)',
  'b629'  => 'Wola Duchacka',
  'b949'  => 'Wola Luborzycka (nż)',
  'b1332' => 'Wola Luborzycka Działki (nż)',
  'b950'  => 'Wola Luborzycka Las (nż)',
  'b1128' => 'Wola Radziszowska',
  'b1127' => 'Wola Radziszowska Centrum',
  'b1129' => 'Wola Radziszowska Chorzyny (nż)',
  'b1126' => 'Wola Radziszowska Lipki (nż)',
  'b1124' => 'Wola Radziszowska Mała Ostra Góra (nż)',
  'b1125' => 'Wola Radziszowska Most (nż)',
  'b1336' => 'Wola Radziszowska Podgaźle (nż)',
  'b1337' => 'Wola Radziszowska Łęg (nż)',
  'b1291' => 'Wola Zabierzowska (nż)',
  'b172'  => 'Wola Zachariaszowska',
  'b2702' => 'Wola Zachariaszowska Kresy',
  'b2976' => 'Wola Zachariaszowska Zakońce',
  'b539'  => 'Wolica (nż)',
  'b538'  => 'Wolica Kościół (nż)',
  'b537'  => 'Wolica Las',
  'b536'  => 'Wolica Most',
  'b540'  => 'Wolica Sklep (nż)',
  'b894'  => 'Wołowice (nż)',
  'b3231' => 'Wołowice Grotowa (nż)',
  'b3227' => 'Wołowice Grotowa Skrzyżowanie (nż)',
  'b909'  => 'Wołowice Kapliczka (nż)',
  'b1207' => 'Wołowice Niwa (nż)',
  'b2907' => 'Wołowice Pichonówka (nż)',
  'b1205' => 'Wołowice Sklep (nż)',
  'b893'  => 'Wołowice Szkoła',
  'b3229' => 'Wołowice Zawierzbie (nż)',
  'b643'  => 'Wrobela',
  'b68'   => 'Wrocławska',
  'b2598' => 'Wrony',
  'b2948' => 'Wrząsowice (nż)',
  'b2946' => 'Wrząsowice Centrum',
  'b1234' => 'Wrząsowice Kowaleca (nż)',
  'b2950' => 'Wrząsowice Nad Wilgą',
  'b2947' => 'Wrząsowice Pileckiego (nż)',
  'b2952' => 'Wrząsowice Pod Skałą (nż)',
  'b3212' => 'Wrząsowice Rondo',
  'b2945' => 'Wrząsowice Wrzosowa (nż)',
  'b2944' => 'Wrząsowice Zielona (nż)',
  'b3148' => 'Wróblowice',
  'b729'  => 'Wróblowice Szkoła',
  'b499'  => 'Wróżenice',
  'b2641' => 'Wróżenice Górka (nż)',
  'b2640' => 'Wróżenicka (nż)',
  'b60'   => 'Wybickiego',
  'b2647' => 'Wyciąska (nż)',
  'b508'  => 'Wyciąże (nż)',
  'b515'  => 'Wyciąże Sklep (nż)',
  'b521'  => 'Wyciąże Wiadukt (nż)',
  'b2645' => 'Wyciąże Zachód (nż)',
  'b683'  => 'Wydział Farmaceutyczny UJ',
  'b43'   => 'Wyki',
  'b2998' => 'Wysiołek Luborzycki (nż)',
  'b2999' => 'Wysiołek Luborzycki Kapkazy (nż)',
  'b1320' => 'Wysiołek Luborzycki Radwany (nż)',
  'b2997' => 'Wysiołek Luborzycki Skrzyżowanie (nż)',
  'b1259' => 'Wysłouchów',
  'b292'  => 'Wyźrał Szkoła (nż)',
  'b293'  => 'Wyźrał Wielka Droga (nż)',
  'b442'  => 'Wzgórza Krzesławickie',
  'b328'  => 'Węgrzce',
  'b2980' => 'Węgrzce Bosutów (nż)',
  'b2979' => 'Węgrzce Bosutów Sudół (nż)',
  'b1079' => 'Węgrzce Błonie',
  'b165'  => 'Węgrzce Centrum',
  'b1074' => 'Węgrzce Centrum Medyczne (nż)',
  'b1073' => 'Węgrzce Magiczne Wzgórze (nż)',
  'b1080' => 'Węgrzce Pętla',
  'b327'  => 'Węgrzce Starostwo Powiatowe',
  'b1163' => 'Węgrzce Wielkie II (nż)',
  'b1161' => 'Węgrzce Wielkie III (nż)',
  'b3270' => 'Węgrzce Wielkie Pętla',
  'b487'  => 'Węgrzynowice',
  'b488'  => 'Węgrzynowice Centrum (nż)',
  'b2552' => 'Węgrzynowice Dół (nż)',
  'b3277' => 'Węgrzynowicka (nż)',
  'b3127' => 'Węzeł Wielicki (nż)',
  'b3118' => 'Władysława Jagiełły',
  'b3110' => 'Władysława Łokietka',
  'b807'  => 'Włosań',
  'b3053' => 'Włosań Dział Wschodni (nż)',
  'b809'  => 'Włosań Kopań (nż)',
  'b808'  => 'Włosań Krzyżówka (nż)',
  'b146'  => 'ZOO',
  'b2495' => 'Zabawa (nż)',
  'b2510' => 'Zabawa I (nż)',
  'b199'  => 'Zabierzów',
  'b1287' => 'Zabierzów Bocheński Centrum (nż)',
  'b198'  => 'Zabierzów Działki (nż)',
  'b3248' => 'Zabierzów Eximius Park',
  'b202'  => 'Zabierzów I',
  'b961'  => 'Zabierzów Młyn',
  'b213'  => 'Zabierzów Ośrodek Zdrowia',
  'b204'  => 'Zabierzów PKP',
  'b203'  => 'Zabierzów Piaski (nż)',
  'b201'  => 'Zabierzów Piekarnia',
  'b3249' => 'Zabierzów Rynek',
  'b200'  => 'Zabierzów Sklep',
  'b503'  => 'Zabłocie Kościelnickie (nż)',
  'b590'  => 'Zachodnia',
  'b2888' => 'Zagacie (nż)',
  'b2889' => 'Zagacie Witkówki (nż)',
  'b916'  => 'Zagórzyce Dworskie',
  'b917'  => 'Zagórzyce Stare (nż)',
  'b397'  => 'Zajezdnia Bieńczyce',
  'b465'  => 'Zajezdnia Nowa Huta',
  'b2576' => 'Zajezdnia Płaszów',
  'b1254' => 'Zajezdnia Wola Duchacka',
  'b155'  => 'Zakamycze',
  'b3179' => 'Zakarnie (nż)',
  'b7'    => 'Zakliki (nż)',
  'b2789' => 'Zakole',
  'b1305' => 'Zakrzów (nż)',
  'b2649' => 'Zakępie (nż)',
  'b511'  => 'Zakład Przeróbki (nż)',
  'b137'  => 'Zarzecze',
  'b274'  => 'Zaskale (nż)',
  'b356'  => 'Zastów',
  'b1265' => 'Zastów Działki (nż)',
  'b839'  => 'Zatyka (nż)',
  'b755'  => 'Zawiszy',
  'b751'  => 'Zawiła (nż)',
  'b721'  => 'Zbydniowice',
  'b3147' => 'Zbydniowicka',
  'b1116' => 'Zelczyna I (nż)',
  'b1115' => 'Zelczyna Sklep',
  'b1170' => 'Zelczyna Szkoła (nż)',
  'b3200' => 'Zelków Kościuszki (nż)',
  'b3198' => 'Zelków Pętla',
  'b2918' => 'Zelków Spławy (nż)',
  'b210'  => 'Zelków Staw',
  'b209'  => 'Zelków Wola (nż)',
  'b447'  => 'Zesławice',
  'b2621' => 'Zesławice Ogródki Działkowe (nż)',
  'b581'  => 'Zielińskiego (nż)',
  'b2784' => 'Zielonki Galicyjska (nż)',
  'b2978' => 'Zielonki Marszowiec Pętla',
  'b177'  => 'Zielonki Rozjazd',
  'b182'  => 'Zielonki Skrzyżowanie',
  'b180'  => 'Zielonki Transformator (nż)',
  'b181'  => 'Zielonki UG',
  'b149'  => 'Zielony Dół',
  'b2577' => 'Złocieniowa',
  'b811'  => 'Złocień',
  'b679'  => 'Ćwiklińskiej',
  'b922'  => 'Łagiewniki',
  'b563'  => 'Łanowa',
  'b3069' => 'Łobzów SKA',
  'b951'  => 'Łososkowice',
  'b952'  => 'Łososkowice Szkoła (nż)',
  'b480'  => 'Łuczanowice',
  'b482'  => 'Łuczanowice Skrzyżowanie',
  'b3066' => 'Łuczanowicka (nż)',
  'b1121' => 'Łuczyce',
  'b1120' => 'Łuczyce Las (nż)',
  'b1231' => 'Łuczyce Zjawienie (nż)',
  'b2761' => 'Łuczyce Zwierzyniec (nż)',
  'b2604' => 'Łuczyńskiego (nż)',
  'b120'  => 'Łukasiewicza',
  'b640'  => 'Łutnia',
  'b2596' => 'Łużycka (nż)',
  'b384'  => 'Łęczycka',
  'b301'  => 'Ściejowice Granica (nż)',
  'b3226' => 'Ściejowice Kościel (nż)',
  'b1246' => 'Ściejowice Na Bagnach (nż)',
  'b3225' => 'Ściejowice Remiza (nż)',
  'b2610' => 'Ślaskiego (nż)',
  'b1374' => 'Śliwiaka (nż)',
  'b2517' => 'Śliwiaka Zakłady',
  'b903'  => 'Ślósarczyka',
  'b2742' => 'Św.Wawrzyńca',
  'b2605' => 'Świdzińskiego (nż)',
  'b2942' => 'Świątniki Bielowicza Szkoła',
  'b2949' => 'Świątniki Buk (nż)',
  'b847'  => 'Świątniki Centrum',
  'b3051' => 'Świątniki Górne Piasna Górka (nż)',
  'b2768' => 'Świątniki Krakowska (nż)',
  'b845'  => 'Świątniki Skrzyżowanie (nż)',
  'b2943' => 'Świątniki Urząd Miasta i Gminy',
  'b2592' => 'Żelazowskiego (nż)',
  'b343'  => 'Żerkowice Kolonia (nż)',
  'b344'  => 'Żerkowice Skrzyżowanie (nż)',
  'b417'  => 'Żeromskiego',
  'b534'  => 'Żwirownia',
  'b748'  => 'Żywiecka',
  'b834'  => 'Żyzna (nż)',
);