diff --git a/.gitignore b/.gitignore index 3424ff0..0e05197 100644 --- a/.gitignore +++ b/.gitignore @@ -37,3 +37,6 @@ next-env.d.ts **/dist .pnpm-store/ + +# generator cache +packages/map/scripts/.cache/ diff --git a/packages/map/components/Map.tsx b/packages/map/components/Map.tsx index 829aba5..6296ea0 100644 --- a/packages/map/components/Map.tsx +++ b/packages/map/components/Map.tsx @@ -33,7 +33,6 @@ import Control from "react-leaflet-custom-control"; import NonPlayableStations from "@/components/NonPlayableStations"; import RemoteStations from "@/components/RemoteStations"; -import SelectedTrainRoute from "@/components/SelectedTrainRoute"; import { TrainsList } from "@/components/TrainsList"; import { useSelectedTrain } from "../contexts/SelectedTrainContext"; @@ -42,6 +41,7 @@ import SelectedTrainPopup from "./SelectedTrainPopup"; import { MainlineSignals, OtherSignals } from "./Signals"; import SneakpeekMarkers from "./Sneakpeeks"; import SpotlightSearch from "./SpotlightSearch"; +import TrainRoute from "./TrainRoute"; import style from "../styles/BottomLeftControls.module.css"; import mapStyles from "../styles/Map.module.css"; @@ -99,15 +99,17 @@ const LeaftletMap = ({ serverId }: MapProps) => { defaultValue: true, }); - const [showSignalInfo, setShowSignalInfo] = useLocalStorage({ - key: "showSignalInfo", - defaultValue: true, - }); - const [isSatellite, setIsSatellite] = useLocalStorage({ key: "isSatellite", defaultValue: false, }); + const { + selectedTrain, + setSelectedTrain, + followTrain, + showSignalInfo, + setShowSignalInfo, + } = useSelectedTrain(); const { toggle: toggleFullscreen, fullscreen } = useFullscreen(); const FullscreenIcon = fullscreen ? MdFullscreenExit : MdFullscreen; @@ -118,7 +120,6 @@ const LeaftletMap = ({ serverId }: MapProps) => { renderPopup === true ? MdSpeakerNotes : MdSpeakerNotesOff; const SatelliteIcon = isSatellite === true ? MdSatellite : MdSatelliteAlt; - const { selectedTrain, setSelectedTrain } = useSelectedTrain(); const [stations, setStations] = useState(null); const [stoppedTrainsSince, setStoppedTrainsSince] = useState< Record @@ -201,12 +202,14 @@ const LeaftletMap = ({ serverId }: MapProps) => { if (updatedTrain !== selectedTrain) { setSelectedTrain(updatedTrain); } - map.panTo( - [updatedTrain.TrainData.Latititute, updatedTrain.TrainData.Longitute], - { animate: true, duration: 0.8, easeLinearity: 0.4 }, - ); + if (followTrain) { + map.panTo( + [updatedTrain.TrainData.Latititute, updatedTrain.TrainData.Longitute], + { animate: true, duration: 0.8, easeLinearity: 0.4 }, + ); + } } - }, [trains, selectedTrain, map, setSelectedTrain]); + }, [trains, selectedTrain, map, setSelectedTrain, followTrain]); useEffect(() => { if (trainId) { @@ -313,7 +316,6 @@ const LeaftletMap = ({ serverId }: MapProps) => { preferCanvas={true} > -
@@ -560,6 +562,7 @@ const LeaftletMap = ({ serverId }: MapProps) => { + diff --git a/packages/map/components/Markers/TrainMarker.tsx b/packages/map/components/Markers/TrainMarker.tsx index f4a3b79..f86bcf2 100644 --- a/packages/map/components/Markers/TrainMarker.tsx +++ b/packages/map/components/Markers/TrainMarker.tsx @@ -7,20 +7,25 @@ import ReactLeafletDriftMarker from "react-leaflet-drift-marker"; import { getSteamProfileOrBot } from "@/components/steam"; -import { useSelectedTrain } from "../../contexts/SelectedTrainContext"; import TrainText from "../TrainText"; type TrainMarkerProps = { train: Train; stoppedSince?: number; + isSelected: boolean; + selectTrain: (train: Train) => void; }; -const TrainMarker = ({ train, stoppedSince }: TrainMarkerProps) => { - const { selectedTrain, setSelectedTrain } = useSelectedTrain(); - +const TrainMarker = ({ + train, + stoppedSince, + isSelected, + selectTrain, +}: TrainMarkerProps) => { const [avatar, setAvatar] = useState(null); const [username, setUsername] = useState(null); const [bearing, setBearing] = useState(null); + const [isPopupOpen, setIsPopupOpen] = useState(false); const previousPosition = useRef<[number, number] | null>(null); useEffect(() => { @@ -84,9 +89,6 @@ const TrainMarker = ({ train, stoppedSince }: TrainMarkerProps) => { const borderAreaClass = train.TrainData.InBorderStationArea ? " in-border-area" : ""; - const isSelected = - (selectedTrain?.id ?? selectedTrain?.TrainNoLocal) === - (train.id ?? train.TrainNoLocal); const avatarUrl = train.TrainData.ControlledBySteamID && avatar ? avatar : botIcon; const escapedAvatarUrl = avatarUrl.replace( @@ -125,17 +127,21 @@ const TrainMarker = ({ train, stoppedSince }: TrainMarkerProps) => { eventHandlers={{ mouseover: (event) => event.target.openPopup(), mouseout: (event) => event.target.closePopup(), - mouseup: () => setSelectedTrain(train), + mouseup: () => selectTrain(train), + popupopen: () => setIsPopupOpen(true), + popupclose: () => setIsPopupOpen(false), }} > - + {isPopupOpen && ( + + )} ; -}; - -const normalizeStationName = (value: string) => - value - .normalize("NFD") - .replace(/[\u0300-\u036f]/g, "") - .toLocaleLowerCase() - .replace(/[^a-z0-9]/g, ""); - -const removeDuplicatePoints = (points: RoutePoint[]) => - points.filter((point, index) => { - if (index === 0) return true; - const previous = points[index - 1]; - const current = point; - return previous[0] !== current[0] || previous[1] !== current[1]; - }); - -const SelectedTrainRoute = ({ - serverId, - stations, -}: SelectedTrainRouteProps) => { - const { selectedTrain } = useSelectedTrain(); - const [routeResult, setRouteResult] = useState<{ - key: string; - points: RoutePoint[]; - }>({ key: "", points: [] }); - const stationIndex = useMemo(() => { - const index = new Map(); - const allStations = [ - ...(localStations as RouteStation[]), - ...(remoteStations as RouteStation[]), - ...(stations as RouteStation[]), - ]; - - for (const station of allStations) { - if ( - !Number.isFinite(station.Latititude) || - !Number.isFinite(station.Longitude) - ) - continue; - - const position: RoutePoint = [station.Latititude, station.Longitude]; - for (const name of [station.Name, station.Prefix, station.id]) { - if (name) index.set(normalizeStationName(name), position); - } - } - - return index; - }, [stations]); - const stationIndexRef = useRef(stationIndex); - - useEffect(() => { - stationIndexRef.current = stationIndex; - }, [stationIndex]); - - const trainNumber = selectedTrain?.TrainNoLocal; - const routeKey = trainNumber ? `${serverId}:${trainNumber}` : ""; - const route = routeResult.key === routeKey ? routeResult.points : []; - - useEffect(() => { - if (!trainNumber) return; - - const controller = new AbortController(); - - const loadRoute = async () => { - try { - const selectedStationIndex = stationIndexRef.current; - const timetableResponse = await fetch( - `https://simrail-edr.emeraldnetwork.xyz/train/${encodeURIComponent(serverId)}/${encodeURIComponent(trainNumber)}`, - { signal: controller.signal }, - ); - if (!timetableResponse.ok) - throw new Error( - `Timetable request failed: ${timetableResponse.status}`, - ); - const timetable = (await timetableResponse.json()) as TimetablePoint[]; - - const waypoints = removeDuplicatePoints( - timetable - .slice() - .sort((a, b) => (a.indexOfPoint ?? 0) - (b.indexOfPoint ?? 0)) - .map((point) => - point.nameOfPoint - ? selectedStationIndex.get( - normalizeStationName(point.nameOfPoint), - ) - : undefined, - ) - .filter((point): point is RoutePoint => point !== undefined), - ); - - if (waypoints.length < 2) return; - - const coordinates = waypoints - .map(([latitude, longitude]) => `${longitude},${latitude}`) - .join(";"); - const routingResponse = await fetch( - `https://routing.simrail-edr.de/route/v1/train/${coordinates}?overview=full&geometries=geojson`, - { signal: controller.signal }, - ); - if (!routingResponse.ok) - throw new Error(`Route request failed: ${routingResponse.status}`); - - const routingData = (await routingResponse.json()) as RoutingResponse; - const routeCoordinates = - routingData.routes?.[0]?.geometry?.coordinates - ?.filter( - (point): point is [number, number] => - Array.isArray(point) && - point.length === 2 && - point.every(Number.isFinite), - ) - .map( - ([longitude, latitude]) => - [latitude, longitude] as [number, number], - ) ?? []; - - if (!controller.signal.aborted) - setRouteResult({ key: routeKey, points: routeCoordinates }); - } catch (error) { - if ((error as Error).name !== "AbortError") - setRouteResult({ key: routeKey, points: [] }); - } - }; - - void loadRoute(); - return () => controller.abort(); - }, [routeKey, serverId, trainNumber]); - - if (route.length < 2) return null; - - return ( - <> - - - - ); -}; - -export default SelectedTrainRoute; diff --git a/packages/map/components/TrainRoute.tsx b/packages/map/components/TrainRoute.tsx new file mode 100644 index 0000000..7ed6626 --- /dev/null +++ b/packages/map/components/TrainRoute.tsx @@ -0,0 +1,196 @@ +import L from "leaflet"; +import { memo, useEffect, useMemo, useState } from "react"; +import { Polyline, Marker, useMap } from "react-leaflet"; + +import { useSelectedTrain } from "../contexts/SelectedTrainContext"; +import { + getTrainRoute, + type ColoredSegment, + type RoutePoint, +} from "../lib/trainRoute"; + +const ROUTE_COLORS = { + green: "#2ecc71", + red: "#e74c3c", + grey: "#888888", +} as const; + +const ARROW_SPACING_KM = 3; +const MAX_VISIBLE_ARROWS = 120; +const arrowIconCache = new Map(); + +function haversineKm(a: [number, number], b: [number, number]): number { + const R = 6371; + const dLat = ((b[0] - a[0]) * Math.PI) / 180; + const dLon = ((b[1] - a[1]) * Math.PI) / 180; + const la1 = (a[0] * Math.PI) / 180; + const la2 = (b[0] * Math.PI) / 180; + const h = + Math.sin(dLat / 2) ** 2 + + Math.cos(la1) * Math.cos(la2) * Math.sin(dLon / 2) ** 2; + return 2 * R * Math.asin(Math.sqrt(h)); +} + +function bearing(a: [number, number], b: [number, number]): number { + const toRad = (deg: number) => (deg * Math.PI) / 180; + const toDeg = (rad: number) => (rad * 180) / Math.PI; + const lat1 = toRad(a[0]); + const lat2 = toRad(b[0]); + const dLon = toRad(b[1] - a[1]); + const y = Math.sin(dLon) * Math.cos(lat2); + const x = + Math.cos(lat1) * Math.sin(lat2) - + Math.sin(lat1) * Math.cos(lat2) * Math.cos(dLon); + return (toDeg(Math.atan2(y, x)) + 360) % 360; +} + +interface ArrowData { + position: [number, number]; + rotation: number; + key: string; +} + +function createArrowIcon(rotation: number, zoom: number): L.DivIcon { + const scale = Math.max(0.5, Math.min(2.5, (zoom - 6) / 5)); + const size = Math.round(18 * scale); + const roundedRotation = Math.round(rotation / 5) * 5; + const cacheKey = `${size}:${roundedRotation}`; + const cachedIcon = arrowIconCache.get(cacheKey); + if (cachedIcon) return cachedIcon; + + // SVG triangle (not a text glyph — font metrics render ">" off-center + // in Firefox). The shape is centered in the viewBox, so the anchor at + // the box center is exact in every browser. + const html = ``; + const icon = L.divIcon({ + className: "route-arrow", + html, + iconSize: [size, size], + iconAnchor: [Math.round(size / 2), Math.round(size / 2)], + }); + arrowIconCache.set(cacheKey, icon); + return icon; +} + +const TrainRoute = () => { + const { selectedTrain, showTrainRoute } = useSelectedTrain(); + const [segments, setSegments] = useState(null); + const map = useMap(); + const [zoom, setZoom] = useState(map.getZoom()); + const [viewportBounds, setViewportBounds] = useState(() => + map.getBounds().pad(0.25), + ); + + useEffect(() => { + const updateViewport = () => { + setZoom(map.getZoom()); + setViewportBounds(map.getBounds().pad(0.25)); + }; + map.on("moveend zoomend", updateViewport); + return () => { + map.off("moveend zoomend", updateViewport); + }; + }, [map]); + + const serverCode = selectedTrain?.ServerCode ?? null; + const trainNo = selectedTrain?.TrainNoLocal ?? null; + const shouldShow = showTrainRoute && !!serverCode && !!trainNo; + + useEffect(() => { + if (!shouldShow || !serverCode || !trainNo) return; + let cancelled = false; + getTrainRoute({ ServerCode: serverCode, TrainNoLocal: trainNo }) + .then((route) => { + if (!cancelled) setSegments(route); + }) + .catch(() => { + if (!cancelled) setSegments(null); + }); + return () => { + cancelled = true; + setSegments(null); + }; + }, [shouldShow, serverCode, trainNo]); + + const arrows = useMemo(() => { + if (!segments) return []; + const result: ArrowData[] = []; + let distSinceLast = ARROW_SPACING_KM; + let prev: RoutePoint | null = null; + for (let si = 0; si < segments.length; si++) { + const pts = segments[si].points; + if (pts.length < 1) continue; + if (!prev || prev[0] !== pts[0][0] || prev[1] !== pts[0][1]) { + prev = pts[0]; + distSinceLast = ARROW_SPACING_KM; + } + for (let i = 1; i < pts.length; i++) { + const a = pts[i - 1]; + const b = pts[i]; + const segLen = haversineKm(a, b); + if (segLen <= 0) continue; + const brng = bearing(a, b); + let consumed = 0; + while (distSinceLast + (segLen - consumed) >= ARROW_SPACING_KM) { + const need = ARROW_SPACING_KM - distSinceLast; + const t = (consumed + need) / segLen; + const pos: RoutePoint = [ + a[0] + (b[0] - a[0]) * t, + a[1] + (b[1] - a[1]) * t, + ]; + result.push({ + position: pos, + rotation: brng - 90, + key: `arrow-${result.length}`, + }); + consumed += need; + distSinceLast = 0; + } + distSinceLast += segLen - consumed; + prev = b; + } + } + return result; + }, [segments]); + + const visibleArrows = useMemo(() => { + const inView = arrows.filter((arrow) => + viewportBounds.contains(arrow.position), + ); + if (inView.length <= MAX_VISIBLE_ARROWS) return inView; + + const step = inView.length / MAX_VISIBLE_ARROWS; + return Array.from( + { length: MAX_VISIBLE_ARROWS }, + (_, index) => inView[Math.floor(index * step)], + ); + }, [arrows, viewportBounds]); + + if (!shouldShow || !segments || segments.length === 0) return null; + + return ( + <> + {segments.map((seg, i) => ( + + ))} + {visibleArrows.map((arrow) => ( + + ))} + + ); +}; + +export default memo(TrainRoute); diff --git a/packages/map/components/TrainText.tsx b/packages/map/components/TrainText.tsx index a3d6ebb..a230ac6 100644 --- a/packages/map/components/TrainText.tsx +++ b/packages/map/components/TrainText.tsx @@ -1,6 +1,5 @@ import { Carousel } from "@mantine/carousel"; import { Image } from "@mantine/core"; -import { readLocalStorageValue } from "@mantine/hooks"; import type { Train } from "@simrail/types"; import { useSelectedTrain } from "contexts/SelectedTrainContext"; import { useRouter } from "next/router"; @@ -28,6 +27,26 @@ interface TrainRailcarInfo { loadWeight: number | null; } +type TrainToggleProps = { + active: boolean; + label: string; + title: string; + onToggle: () => void; +}; + +const TrainToggle = ({ active, label, title, onToggle }: TrainToggleProps) => ( + +); + const railcarsByApiName = new Map( (railcarJson as Railcar[]).map((railcar) => [railcar.apiName, railcar]), ); @@ -80,7 +99,16 @@ const TrainText = ({ }: TrainTextProps) => { const router = useRouter(); const { id, trainId } = router.query; - const { setSelectedTrain } = useSelectedTrain(); + const { + setSelectedTrain, + showSignalInfo, + showTrainRoute, + setShowTrainRoute, + followTrain, + setFollowTrain, + onlySelectedTrain, + setOnlySelectedTrain, + } = useSelectedTrain(); const usedRailcarInfo = useMemo( () => @@ -153,10 +181,6 @@ const TrainText = ({ (minimum, info) => Math.min(minimum, info.railcar.maxSpeed), Number.POSITIVE_INFINITY, ); - const showSignalInfo = readLocalStorageValue({ - key: "showSignalInfo", - defaultValue: true, - }); const displayName = getTrainDisplayName(train.TrainName, train.TrainNoLocal); const displayedMaxSpeed = Number.isFinite(minMaxSpeed) ? `${minMaxSpeed} km/h` @@ -198,8 +222,20 @@ const TrainText = ({
- Train {train.TrainNoLocal} -

{displayName}

+
+ Train {train.TrainNoLocal} +

{displayName}

+
+ {!minified && ( + + Open in EDR + + )}
@@ -208,6 +244,45 @@ const TrainText = ({ {train.EndStation}
+ {!minified && ( +
+ setFollowTrain((enabled) => !enabled)} + /> + setOnlySelectedTrain((enabled) => !enabled)} + /> + setShowTrainRoute((enabled) => !enabled)} + /> + {showTrainRoute && ( +
+ Playable + Unplayable + + No{" "} + + wiki data + + +
+ )} +
+ )} +
{roundedSpeed === 0 ? "Stopped" : "Speed"} @@ -236,12 +311,16 @@ const TrainText = ({
- Locomotive + Loco {tractionUnitInfo || "Unknown"} + {wagons.length > 0 && ( + + + {wagons.length} wagons + + )} {additionalUnits.length > 0 && ( Additional units: {additionalUnits.join(", ")} )} - {wagons.length > 0 && {wagons.length} wagons}
{!minified && locomotiveImages.length > 0 && ( @@ -257,22 +336,12 @@ const TrainText = ({
)} - {!minified && ( -
- Next signal -
- -
- - Open in EDR - +
+ Next signal +
+
- )} +
); }; diff --git a/packages/map/components/TrainUpcomingSignal.tsx b/packages/map/components/TrainUpcomingSignal.tsx index f771bc6..773ff3a 100644 --- a/packages/map/components/TrainUpcomingSignal.tsx +++ b/packages/map/components/TrainUpcomingSignal.tsx @@ -2,6 +2,8 @@ import type { Train } from "@simrail/types"; import type React from "react"; import { useState } from "react"; +import styles from "../styles/TrainDetails.module.css"; + type TrainSignalProps = { train: Train; showMoreInfo: boolean; @@ -18,15 +20,16 @@ const signalStates = { closed: "/signals/signal-closed.png", }; +type SignalState = keyof typeof signalStates; + function formatSignalDistance(distanceMeters: number): string { if (distanceMeters > 5000) { - return "> 5km"; + return ">5 km"; } if (distanceMeters > 1000) { - const distanceKilometers = (distanceMeters / 1000).toFixed(1); - return `${distanceKilometers} km`; + return `${(distanceMeters / 1000).toFixed(1)} km`; } - return `${distanceMeters.toFixed(1)} m`; + return `${Math.round(distanceMeters)} m`; } function formatSignalSpeed(rawSpeedLimit: number): string { @@ -36,7 +39,7 @@ function formatSignalSpeed(rawSpeedLimit: number): string { return `${rawSpeedLimit} km/h`; } -const getSignalState = (signalSpeed: number | string): string | null => { +const getSignalState = (signalSpeed: number | string): SignalState | null => { if (signalSpeed === "vmax" || signalSpeed === 32767) { return "open"; } @@ -49,7 +52,6 @@ const getSignalState = (signalSpeed: number | string): string | null => { return "limited40"; } - // Dedicated icon for exact 50 if (typeof signalSpeed === "number" && signalSpeed === 50) { return "limited50"; } @@ -73,6 +75,13 @@ const getSignalState = (signalSpeed: number | string): string | null => { return null; }; +const getSignalStatus = (state: SignalState | null): string => { + if (state === "open") return "Clear"; + if (state === "closed") return "Stop"; + if (!state) return "Unknown"; + return "Limited"; +}; + const TrainUpcomingSignal: React.FC = ({ train, showMoreInfo, @@ -83,55 +92,53 @@ const TrainUpcomingSignal: React.FC = ({ const signalName = SignalInFront?.split("@")[0]; const signalState = getSignalState(SignalInFrontSpeed); - const signalImageSrc = signalState - ? signalStates[signalState as keyof typeof signalStates] - : null; + const signalImageSrc = signalState ? signalStates[signalState] : null; - // Track last failed src to hide image only when that src fails const [failedSrc, setFailedSrc] = useState(null); const visibleSignalImageSrc = signalImageSrc && failedSrc !== signalImageSrc ? signalImageSrc : null; if (!showMoreInfo) { return ( - <> - Distance to {signalName ? signalName : "next signal"}:{" "} - {SignalInFront - ? formatSignalDistance(DistanceToSignalInFront) - : "Signal too far away"} - +
+ {SignalInFront ? ( + <> + {signalName} + {formatSignalDistance(DistanceToSignalInFront)} ahead + + ) : ( + Signal too far away + )} +
); } + if (!SignalInFront) { + return
Signal too far away
; + } + return ( - <> -
- Distance to {signalName ? signalName : "next signal"}:{" "} - {SignalInFront - ? formatSignalDistance(DistanceToSignalInFront) - : "Signal too far away"} +
+
+ {signalName} + {formatSignalDistance(DistanceToSignalInFront)} ahead +
+
+ {visibleSignalImageSrc && ( + setFailedSrc(signalImageSrc)} + /> + )} +
+ {getSignalStatus(signalState)} + {formatSignalSpeed(SignalInFrontSpeed)} +
- {SignalInFront && ( - <> -
Signal speed: {formatSignalSpeed(SignalInFrontSpeed)}
- {visibleSignalImageSrc ? ( -
- Signal Status : - {signalState - setFailedSrc((e.currentTarget as HTMLImageElement).src) - } - /> -
- ) : null} - - )} - +
); }; diff --git a/packages/map/components/TrainsList.tsx b/packages/map/components/TrainsList.tsx index 688f5fe..53b6261 100644 --- a/packages/map/components/TrainsList.tsx +++ b/packages/map/components/TrainsList.tsx @@ -3,6 +3,8 @@ import type { FC } from "react"; import TrainMarker from "@/components/Markers/TrainMarker"; +import { useSelectedTrain } from "../contexts/SelectedTrainContext"; + type Props = { trains: Train[]; stoppedTrainsSince: Record; @@ -10,14 +12,31 @@ type Props = { const getTrainStopKey = (train: Train) => train.id ?? train.TrainNoLocal; -export const TrainsList: FC = ({ trains, stoppedTrainsSince }) => ( - <> - {trains.map((train) => ( - - ))} - -); +export const TrainsList: FC = ({ trains, stoppedTrainsSince }) => { + const { selectedTrain, setSelectedTrain, onlySelectedTrain } = + useSelectedTrain(); + const selectedTrainKey = selectedTrain + ? getTrainStopKey(selectedTrain) + : null; + + // "Only selected train" hides every other train from the map while a + // train is selected; with no selection, all trains stay visible. + const visibleTrains = + onlySelectedTrain && selectedTrain + ? trains.filter((train) => getTrainStopKey(train) === selectedTrainKey) + : trains; + + return ( + <> + {visibleTrains.map((train) => ( + + ))} + + ); +}; diff --git a/packages/map/components/railData.json b/packages/map/components/railData.json new file mode 100644 index 0000000..2277ebf --- /dev/null +++ b/packages/map/components/railData.json @@ -0,0 +1,1251 @@ +{ + "version": 1, + "knownStations": [ + "baranówka", + "bedoń", + "będzin ksawera", + "będzin miasto", + "bobrowniki", + "borszewice", + "bratoszewice", + "bukowno przymiarki", + "chechło", + "chrusty nowe", + "chruszczobród", + "chrząstowice olkuskie", + "dąbrowa górnicza gołonóg", + "dąbrowa górnicza pogoria", + "dąbrowa górnicza sikorka", + "dąbrowice skierniewickie", + "dobroń", + "domaniewice centrum", + "dziadówki", + "gajówka", + "gawrony", + "glinnik wieś", + "głowno północne", + "goszcza", + "grotniki", + "izabelów", + "jaktorów", + "jarosty", + "jedlicze koło zgierza", + "jesionka", + "jeżówka", + "justynów", + "kamień łowicki", + "kamieńczyce", + "katowice szopienice poludniowe", + "klimontów", + "kolumna", + "kraków grzegórzki", + "krosnowa", + "łaznów", + "lipce reymontowskie", + "łódź andrzejów szosa", + "łódź arturówek", + "łódź dąbrowa", + "łódź niciarniana", + "łódź olechów wiadukt", + "łódź olechów wschód", + "łódź olechów zachód", + "łódź pabianicka", + "łódź radogoszcz wschód", + "łódź radogoszcz zachód", + "łódź retkinia", + "łódź stoki", + "łódź warszawska", + "łódź zarzew", + "łuczyce", + "maków", + "męcka wola", + "międzyborów", + "mokra", + "moszczenica", + "ozorków nowe miasto", + "pabianice północne", + "parzniew", + "przyłęk duży", + "sieradz męka", + "sieradz warta", + "sierakowice skierniewickie", + "sierpów", + "skierniewice rawka", + "słomniki miasto", + "smardzew", + "smroków", + "sosnowiec porąbka", + "stare grudze", + "sucha żyrardowska", + "swędów", + "szczepanowice", + "wągry", + "warszawa powiśle", + "warszawa śródmieście", + "warszawa stadion", + "wiesiółka", + "wolbórka", + "żakowice", + "zarzecze", + "zawiercie borowe pole", + "zgierz jaracza", + "zgierz rudunki", + "bednary", + "florek", + "jackowice", + "krzewie", + "ostrowy", + "stara wieś", + "katowice tow. ktc", + "brynów", + "mysłowice", + "szabelnia", + "staszic", + "stawiska", + "katowice janów", + "żelisławice", + "czarnca", + "sosnowiec dańdówka", + "myszków", + "przemiarki", + "radzice", + "marków", + "warszawa zachodnia", + "warszawa centralna", + "warszawa wschodnia", + "warszawa grochów", + "kozioł", + "dąbrowa górnicza towarowa", + "dąbrowa górnicza strzemieszyce", + "dąbrowa górnicza południowa", + "sosnowiec maczki", + "sosnowiec jęzor", + "olkusz", + "jaroszowiec olkuski", + "zarzecze apo", + "wolbrom", + "charsznica", + "sędziszów", + "gajówka apo", + "warszawa gł. tow.", + "warszawa praga", + "koniecpol", + "dłubnia", + "kraków główny", + "kraków olsza", + "kraków płaszów", + "kraków bonarka", + "borowa górka", + "rokiciny", + "mikołajów", + "łódź olechów", + "łódź chojny", + "łódź fabryczna", + "puszcza mariańska", + "bełchów", + "piotrków trybunalski", + "rozprza", + "kutno", + "dionizów", + "zduńska wola karsznice", + "sieradz", + "sędzice", + "sprowa", + "biała rawska", + "pilichowice", + "józefinów", + "gniewięcin apo", + "klimontów apo", + "radziwiłłów mazowiecki", + "słotwiny", + "łódź andrzejów", + "łódź dąbrowa pbsz", + "łódź marysin", + "dobroń apo", + "kolumna apo", + "borszewice apo", + "męka apo", + "zgierz kontrewers", + "chociszew", + "ozorków", + "łęczyca", + "stryków", + "domaniewice", + "baby", + "będzin", + "bukowno", + "dąbrowa górnicza", + "dąbrowa górnicza huta katowice", + "dąbrowa górnicza wschodnia", + "dąbrowa górnicza ząbkowice", + "dorota", + "gajewniki", + "gałkówek", + "glinnik", + "głowno", + "góra włodowska", + "grodzisk mazowiecki", + "idzikowice", + "juliusz", + "katowice", + "katowice zawodzie", + "knapówka", + "koluszki", + "korytów", + "kozłów", + "kraków batowice", + "kraków przedmieście", + "łask", + "łazy", + "łazy ła", + "łazy łc", + "łódź kaliska", + "łódź lublinek", + "łódź widzew", + "łódź żabieniec", + "łowicz główny", + "łowicz przedmieście", + "miechów", + "niedźwiedź", + "olszamowice", + "opoczno południe", + "pabianice", + "płyćwia", + "pruszków", + "psary", + "raciborowice", + "retkinia", + "rogów", + "skierniewice", + "sławków", + "słomniki", + "sosnowiec główny", + "sosnowiec kazimierz", + "sosnowiec południowy", + "starzyny", + "strzałki", + "szeligi", + "tunel", + "warszawa włochy", + "witonia", + "włoszczowa północ", + "żakowice południowe", + "zastów", + "zawiercie", + "zduńska wola", + "zgierz", + "zgierz północ", + "żyrardów", + "brwinów", + "milanówek", + "myszków mrzygłód", + "piastów", + "warszawa ochota", + "warszawa ursus", + "warszawa ursus niedźwiadek", + "katowice towarowa ktc", + "kraków główny kga", + "kraków zabłocie", + "radzice rd1", + "sędziszów towarowy", + "warszawa gołąbki", + "warszawa główna towarowa woa", + "warszawa podskarbińska", + "warszawa praga wpt m", + "dąbrowa górnicza towarowa dta r5", + "katowice much. kmb", + "katowice muchowiec staszic", + "męka", + "kraków płaszów pzs kpa", + "piotrków trybunalski towarowy", + "koło", + "łódź dąbrowa pbs", + "radzice pzs r31", + "warszawa zachodnia peron 8", + "łódź olechów pzs r82", + "łódź olechów łoc", + "łódź olechów pzs r16", + "łódź olechów pzs r3", + "warszawa ursus północny", + "myszków nowa wieś", + "myszków światowit", + "warszawa główna towarowa", + "mysłowice wesoła" + ], + "stations": { + "baranówka": [50.1465513, 20.0953448], + "bedoń": [51.7319797, 19.6423435], + "będzin ksawera": [50.330655, 19.158452], + "będzin miasto": [50.319012, 19.135451], + "bobrowniki": [52.0575101, 20.0112048], + "borszewice": [51.6098764, 19.0338649], + "bratoszewice": [51.9385499, 19.6527684], + "bukowno przymiarki": [50.2753542, 19.4099597], + "chechło": [51.6444521, 19.2851366], + "chrusty nowe": [51.694788, 19.794322], + "chruszczobród": [50.399604, 19.328349], + "chrząstowice olkuskie": [50.3443643, 19.6856811], + "dąbrowa górnicza gołonóg": [50.343838, 19.226037], + "dąbrowa górnicza pogoria": [50.350237, 19.240319], + "dąbrowa górnicza sikorka": [50.389004, 19.299082], + "dąbrowice skierniewickie": [51.933357, 20.102488], + "dobroń": [51.62937, 19.2408212], + "domaniewice centrum": [52.011937, 19.7918665], + "dziadówki": [50.3993312, 20.008304], + "gajówka": [50.3945896, 19.8789521], + "gawrony": [52.1125446, 19.2198483], + "glinnik wieś": [51.8826783, 19.482078], + "głowno północne": [51.9790616, 19.7219812], + "goszcza": [50.1848818, 20.0609885], + "grotniki": [51.8871008, 19.3111142], + "izabelów": [51.6099964, 18.9118596], + "jaktorów": [52.087289, 20.553817], + "jarosty": [51.46071, 19.69306], + "jedlicze koło zgierza": [51.869226, 19.3209098], + "jesionka": [52.014288, 20.333155], + "jeżówka": [50.3993066, 19.8156448], + "justynów": [51.7309353, 19.6836105], + "kamień łowicki": [51.9887485, 19.7531105], + "kamieńczyce": [50.3273019, 20.0058296], + "katowice szopienice poludniowe": [50.258939642857136, 19.091745171428574], + "klimontów": [50.5252201, 20.0300258], + "kolumna": [51.6149075, 19.1959259], + "kraków grzegórzki": [50.05706910967742, 19.948248961290325], + "krosnowa": [51.86214, 19.922935], + "łaznów": [51.631578, 19.755299], + "lipce reymontowskie": [51.904968, 19.941536], + "łódź andrzejów szosa": [51.7415683, 19.6129333], + "łódź arturówek": [51.8155838, 19.4564138], + "łódź dąbrowa": [51.7359028, 19.5105118], + "łódź niciarniana": [51.7668757, 19.5074416], + "łódź olechów wiadukt": [51.723709, 19.54368], + "łódź olechów wschód": [51.729815, 19.594761], + "łódź olechów zachód": [51.724984, 19.559483], + "łódź pabianicka": [51.726238, 19.445335], + "łódź radogoszcz wschód": [51.826684, 19.4434202], + "łódź radogoszcz zachód": [51.821962, 19.4157797], + "łódź retkinia": [51.7403316, 19.4065924], + "łódź stoki": [51.7765953, 19.5105897], + "łódź warszawska": [51.8078014, 19.4713727], + "łódź zarzew": [51.7517065, 19.5132107], + "łuczyce": [50.1627204, 20.0744128], + "maków": [51.941988, 20.047313], + "męcka wola": [51.6090884, 18.8466629], + "międzyborów": [52.064104, 20.484027], + "mokra": [51.9780281, 20.1009976], + "moszczenica": [51.503484, 19.700385], + "ozorków nowe miasto": [51.9589092, 19.2696778], + "pabianice północne": [51.6699326, 19.3420092], + "parzniew": [52.156474, 20.7634074], + "przyłęk duży": [51.839978, 19.916591], + "sieradz męka": [51.6151908, 18.7765752], + "sieradz warta": [51.6029986, 18.7303875], + "sierakowice skierniewickie": [51.9994066, 20.0602021], + "sierpów": [52.0183434, 19.2225893], + "skierniewice rawka": [51.97806, 20.222803], + "słomniki miasto": [50.2357763, 20.0766057], + "smardzew": [51.8711594, 19.4675247], + "smroków": [50.2745963, 20.046833], + "sosnowiec porąbka": [50.2720763, 19.2162914], + "stare grudze": [52.048301, 19.9013762], + "sucha żyrardowska": [52.023372, 20.360957], + "swędów": [51.905759, 19.5401203], + "szczepanowice": [50.30121, 20.0245475], + "wągry": [51.792048, 19.850209], + "warszawa powiśle": [52.2336891, 21.0281391], + "warszawa śródmieście": [52.2268163, 20.9957829], + "warszawa stadion": [52.2442524, 21.0439984], + "wiesiółka": [50.41458, 19.348087], + "wolbórka": [51.593322, 19.723408], + "żakowice": [51.7324899, 19.792779], + "zarzecze": [50.3633645, 19.6989847], + "zawiercie borowe pole": [50.510796, 19.399036], + "zgierz jaracza": [51.8638125, 19.4224654], + "zgierz rudunki": [51.8612048, 19.4374136], + "bednary": [52.105425, 20.0648738], + "florek": [52.25793230000001, 19.3189092], + "jackowice": [52.156489, 19.797672], + "krzewie": [52.235733, 19.171079], + "ostrowy": [52.300084, 19.190193], + "stara wieś": [52.227524, 19.423094], + "katowice tow. ktc": [50.26514850583024, 18.985295214353926], + "brynów": [50.24781474793173, 18.988202633684438], + "mysłowice": [50.2377849, 19.1416162], + "szabelnia": [50.25921852453205, 19.110331512666356], + "staszic": [50.2185092, 19.0015504], + "stawiska": [50.2516826, 19.1046828], + "katowice janów": [50.2375633, 19.0795012], + "żelisławice": [50.8070182, 19.8696468], + "czarnca": [50.82365750853256, 19.938046723789427], + "sosnowiec dańdówka": [50.2656236, 19.1744767], + "myszków": [50.573785, 19.330974], + "przemiarki": [50.3858426, 19.3402444], + "radzice": [51.4734704, 20.3734172], + "marków": [51.9680077, 20.4987857], + "warszawa zachodnia": [52.219998, 20.964118], + "warszawa centralna": [52.2282727, 21.0007336], + "warszawa wschodnia": [52.2529551, 21.0585454], + "warszawa grochów": [52.25569542546427, 21.08321530028934], + "kozioł": [50.3086134, 19.3829383], + "dąbrowa górnicza towarowa": [50.3292899, 19.3772192], + "dąbrowa górnicza strzemieszyce": [50.3111948, 19.2674549], + "dąbrowa górnicza południowa": [50.3118019, 19.2873408], + "sosnowiec maczki": [50.2585664, 19.2726664], + "sosnowiec jęzor": [50.2653748, 19.1971938], + "olkusz": [50.2750194, 19.5664442], + "jaroszowiec olkuski": [50.3423169, 19.6217697], + "zarzecze apo": [50.3563167, 19.6919101], + "wolbrom": [50.3758608, 19.7724272], + "charsznica": [50.3964022, 19.9348343], + "sędziszów": [50.5658651, 20.0549968], + "gajówka apo": [50.3991802, 19.8576832], + "warszawa gł. tow.": [52.2133153, 20.8969579], + "warszawa praga": [52.2786919, 21.0211558], + "koniecpol": [50.7779877, 19.7110206], + "dłubnia": [50.1024409, 20.0265218], + "kraków główny": [50.0717489, 19.9471738], + "kraków olsza": [50.0800609, 19.9537993], + "kraków płaszów": [50.0376337, 19.9711962], + "kraków bonarka": [50.0291998, 19.9464366], + "borowa górka": [50.2457515, 19.3293388], + "rokiciny": [51.668957, 19.781429], + "mikołajów": [51.70729, 19.860878], + "łódź olechów": [51.731575, 19.600367], + "łódź chojny": [51.725265, 19.495086], + "łódź fabryczna": [51.7695843, 19.4696149], + "puszcza mariańska": [51.9757175, 20.3291426], + "bełchów": [52.0227275, 20.0358665], + "piotrków trybunalski": [51.410379, 19.684733], + "rozprza": [51.301571, 19.660205], + "kutno": [52.2273464, 19.3469387], + "dionizów": [51.6238954, 18.9618302], + "zduńska wola karsznice": [51.588904, 18.994908], + "sieradz": [51.6288322, 18.5700496], + "sędzice": [51.6288322, 18.5700496], + "sprowa": [50.5928548, 19.8827475], + "biała rawska": [51.7943361, 20.4394064], + "pilichowice": [51.255534, 20.122262], + "józefinów": [52.186091, 20.853216], + "gniewięcin apo": [50.5407133, 20.0442128], + "klimontów apo": [50.5096673, 20.0245994], + "radziwiłłów mazowiecki": [52.000292, 20.290428], + "słotwiny": [51.726217, 19.8323151], + "łódź andrzejów": [51.741174, 19.6167956], + "łódź dąbrowa pbsz": [51.749532, 19.513492], + "łódź marysin": [51.8001538, 19.4861385], + "dobroń apo": [51.629363, 19.240834], + "kolumna apo": [51.614231, 19.193488], + "borszewice apo": [51.609461, 19.0395], + "męka apo": [51.609401, 18.787825], + "zgierz kontrewers": [51.8647786, 19.3403229], + "chociszew": [51.9244267, 19.2670788], + "ozorków": [51.9724733, 19.2659008], + "łęczyca": [52.0488396, 19.1936852], + "stryków": [51.910608, 19.5934069], + "domaniewice": [52.020613, 19.8210089], + "baby": [51.538214, 19.717352], + "będzin": [50.309683, 19.140707], + "bukowno": [50.2642404, 19.4527971], + "dąbrowa górnicza": [50.330066, 19.186722], + "dąbrowa górnicza huta katowice": [50.3348137, 19.2601185], + "dąbrowa górnicza wschodnia": [50.3035812, 19.2992962], + "dąbrowa górnicza ząbkowice": [50.362681, 19.261282], + "dorota": [50.2827597, 19.2802615], + "gajewniki": [51.6126401, 18.9832791], + "gałkówek": [51.7302647, 19.7381744], + "glinnik": [51.8864801, 19.495034], + "głowno": [51.9596105, 19.7023042], + "góra włodowska": [50.584838, 19.4637633], + "grodzisk mazowiecki": [52.11039, 20.622632], + "idzikowice": [51.4513162, 20.314863], + "juliusz": [50.2723591, 19.2253232], + "katowice": [50.2572002, 19.0192343], + "katowice zawodzie": [50.2575, 19.055], + "knapówka": [50.8004523, 19.9043886], + "koluszki": [51.745896, 19.819545], + "korytów": [52.0207323, 20.4952086], + "kozłów": [50.4815391, 20.0155617], + "kraków batowice": [50.105436, 19.9874537], + "kraków przedmieście": [50.085232, 19.9501464], + "łask": [51.6040465, 19.1084591], + "łazy": [50.4314788, 19.3937441], + "łazy ła": [50.4549209, 19.4201804], + "łazy łc": [50.4160383, 19.3629156], + "łódź kaliska": [51.7611254, 19.4278092], + "łódź lublinek": [51.7198164, 19.3579216], + "łódź widzew": [51.7642333, 19.5366811], + "łódź żabieniec": [51.7963307, 19.4058366], + "łowicz główny": [52.104484, 19.956327], + "łowicz przedmieście": [52.0934391, 19.9486011], + "miechów": [50.3545392, 20.0112964], + "niedźwiedź": [50.2080982, 20.0826558], + "olszamowice": [51.0953234, 20.0685972], + "opoczno południe": [51.3617013, 20.2353386], + "pabianice": [51.6595443, 19.322187], + "płyćwia": [51.91692, 20.002434], + "pruszków": [52.1666541, 20.7943392], + "psary": [50.7333464, 19.8156698], + "raciborowice": [50.1104728, 20.0272571], + "retkinia": [51.742938, 19.4153611], + "rogów": [51.821831, 19.891602], + "skierniewice": [51.965816, 20.145592], + "sławków": [50.2947074, 19.3749896], + "słomniki": [50.2484671, 20.0641448], + "sosnowiec główny": [50.2759502, 19.120997], + "sosnowiec kazimierz": [50.2897017, 19.2325962], + "sosnowiec południowy": [50.2732817, 19.1209594], + "starzyny": [50.7125208, 19.801415], + "strzałki": [51.6421429, 20.4045625], + "szeligi": [51.9433014, 20.4586874], + "tunel": [50.4324523, 19.9904935], + "warszawa włochy": [52.206754, 20.916761], + "witonia": [52.1568872, 19.2764976], + "włoszczowa północ": [50.8511152, 19.9433871], + "żakowice południowe": [51.729271, 19.79076], + "zastów": [50.1216503, 20.064985], + "zawiercie": [50.473426, 19.423966], + "zduńska wola": [51.6111345, 18.9420577], + "zgierz": [51.8445164, 19.4212242], + "zgierz północ": [51.8691324, 19.3837377], + "żyrardów": [52.053226, 20.451341], + "brwinów": [52.1419599, 20.7193178], + "milanówek": [52.1250509, 20.6680661], + "myszków mrzygłód": [50.544017, 19.377101], + "piastów": [52.1825184, 20.8426063], + "warszawa ochota": [52.2257198, 20.990075], + "warszawa ursus": [52.1966861, 20.8862952], + "warszawa ursus niedźwiadek": [52.1913033, 20.869316], + "katowice towarowa ktc": [50.26555168506183, 18.984058522155077], + "kraków główny kga": [50.0799061, 19.9367001], + "kraków zabłocie": [50.0475183, 19.9579544], + "radzice rd1": [51.48165813004324, 20.34247106598081], + "sędziszów towarowy": [50.5713769, 20.0676007], + "warszawa gołąbki": [52.208117, 20.86122], + "warszawa główna towarowa woa": [52.21101727347063, 20.882946579487534], + "warszawa podskarbińska": [52.25723683904977, 21.073280170163514], + "warszawa praga wpt m": [52.2627351, 21.0576148], + "dąbrowa górnicza towarowa dta r5": [50.3290134, 19.3782002], + "katowice much. kmb": [50.2265011, 19.0100419], + "katowice muchowiec staszic": [50.2254501, 19.041815], + "męka": [51.6092500705406, 18.78817312185351], + "kraków płaszów pzs kpa": [50.0376337, 19.9711962], + "piotrków trybunalski towarowy": [51.410379, 19.684733], + "koło": [51.869226, 19.3209098], + "łódź dąbrowa pbs": [51.7359028, 19.5105118], + "radzice pzs r31": [51.4802427, 20.3618057], + "warszawa zachodnia peron 8": [52.2199517, 20.9620569], + "łódź olechów pzs r82": [51.730661, 19.600515], + "łódź olechów łoc": [51.730661, 19.600515], + "łódź olechów pzs r16": [51.730661, 19.600515], + "łódź olechów pzs r3": [51.730661, 19.600515], + "warszawa ursus północny": [52.1966861, 20.8862952], + "myszków nowa wieś": [50.573785, 19.330974], + "myszków światowit": [50.573785, 19.330974], + "warszawa główna towarowa": [52.2102911, 20.8812915], + "mysłowice wesoła": [50.2377849, 19.1416162] + }, + "segments": { + "warszawa grochów|warszawa wschodnia": "ce}}Hcyt_CM|@[hBQjASpA_@`C]xBWdBU~ASpAIn@Ij@E`@Gj@Gj@KtAEv@Ct@Al@Av@?t@?r@?bA@rA@xB?V@~@?N?X@r@B~@Dx@Dv@Dl@Dj@Fj@@LF`@D`@F`@Hf@Nr@BPH^Nl@Pr@Rn@Rl@fAbDx@~BjAfD~AxEd@|A@Dj@`CLl@R|@RlAPdARzAHp@Hf@\\bBtArK`AnHe@tA", + "warszawa centralna|warszawa wschodnia": "uyw}Hqud_CuAoKGk@uC{T]}AS_BSaBIk@Ee@Ga@Ec@Cc@C]A[Ae@Aa@Ac@?_@@_@?e@@e@@_@B_B@]?c@?a@Ao@A_@A]AYEk@Ci@Gk@Io@kHgk@K{@My@OaAM{@Kq@Ko@sD{TMq@Kk@Ke@Mm@Qq@{@uDYoA[oAk@{BU}@W{@Y}@GQOc@Qi@Sk@Q_@CISc@Se@[s@Yi@We@GKMWQWEGa@o@iCoDS[OWQ[OUO]S_@Ui@Se@q@cBcBcE}FyNoG{OUi@Sc@Qc@S]Yg@GIYa@W]UYSSYYSSWSUOWQWMSIWMWIYKQEMCMCMAUEWCYAUAUAS?S?{HAQ?SAW?Y?WAYAQAOCQAUCWCoAMUCUEUCQCMCMCMCOEECGAECGASIOIQKQMKIKIMMOOMOOQMSKOOYOYKQO[KUo@kBOa@IYKc@[uAe@uBa@oCUgAg@_CqAaGmB_J{BeKs@aFQmAYmBDeBW}AU{AGe@Io@SuA", + "warszawa centralna|warszawa zachodnia": "uyw}Hqud_CHj@Fd@Jn@Lp@Lj@Jd@\\vAp@nC`@dBH^HZFXF^FZDZF`@D\\`@~C\\nCBPF^Fh@H`ALlALfBH~@Fh@Dd@D`@@HPtA|@dHRxAHl@Jp@Hh@Jp@j@rDv@`FFZHh@`@pCTzAJn@Jn@V`BNfA~@nG`AtGd@`DtBtNNdAN|@Hd@F\\F^F\\P~@@FXxABRDTLr@Lx@Jx@\\hCb@rDDZhAjJF\\PvAHp@LbAFn@Dj@Fn@Dr@J`BFl@B^Fn@Hn@Fh@Jt@xAtLLhAR~AHh@@L", + "warszawa włochy|warszawa zachodnia": "ess}Hwht~BiAyEMc@I_@I[I_@Kg@Ke@YuA_@kBw@sBa@sBQ{@Q{@S{@SaAUaAQw@cAoE_Iq]_DiNuAkGGUu@eDS{@i@aCsAaGc@mB?AEOAEESGYIYGYGYEQAGGYGYGYGYCICQGYAAEWGYG[EYGYCMCMEYG[EYG[EYE[GYE[E[EYE[EWCUAIAKCOEYE[E[C[E[E[E[AKAOE[E[AKEc@Ea@?AMgA]yCCYE[E[CYE[E[?EEUC[E[CQAIE[C[E[E[E[C[E[E[EYE[E[C[E[E[E[ACCUE[E[E[E[EYE[CWACE[AICOG[?EEUEYG[EYG[GYEYCIKk@GYGYGYGW?AGYGYIYGYGWIYGYIYGWIYGUm@cCYiAGYIYGYGWQs@GYESI_@G[GYGYEYG[GYEYG[CKCMCUG_@G[EYEUCSCMEYE[a@wC_@gCAEWmBm@gEIo@{AeLGk@CM}AeM", + "józefinów|warszawa włochy": "aro}Hs{g~Ba@eBaDmN{A{GuAaGsAaGsAaG}FeWaAkEQu@sAaGsAcGuAaGsAaGq@wC]}ACKqA{FAEsAaGuAcGsA_Gi@cC[sAMk@Qw@Qw@UiAWiAYqAWsA]}AQw@YsAYmAMo@Mg@Ke@YqA]yAs@}Cg@}BWcAUcA_@aBYgAYkAYmAq@oCYgAWiAgAyE]yA]}ACK[uAAGuAcGw@mD[uAI[o@sCuAgGi@cCsA}Fo@sCS}@Ou@UiAy@{DoAeGWmAYuA]aB_@eBs@yCG]i@_Ca@eBo@qCe@qBQu@Qw@s@mCe@gBm@}BCGCMo@{B[mAOk@Qw@Ss@Mm@Mc@Kg@I]sAaGaAiEMi@YmA\\M[sA", + "józefinów|pruszków": "aro}Hs{g~Bn@vCt@~CVhAFVrA`Gp@tC`@jBjAdFFZl@lCb@vBNp@~@rELl@j@jCR|@BLH^n@rCZlAPt@b@hB^zARt@bAdE@@T`ANl@DPT~@Rz@FVT`Av@jDVhAz@vDf@tB?@l@jCrA`G\\xA?@v@fDl@pCd@nBtAbGh@bCh@`CtAbGrA`GjAdFH^Pt@`AjEtAbGvSj~@tAfGBJtBhJb@hBdAxET~@\\|AR@XhB~AbHLj@`AfEZrAVdATbATdAj@pC`@fBLn@Lj@f@h@~@`EVfA@Dj@hCJd@bDnN", + "grodzisk mazowiecki|pruszków": "}x`}Hmzz|BwCiMm@oCm@mCo@sCeAyE{@yDqA_GyCyM_CoKgBcIkBmIcBwHEQUeAEKYsA_@aBWmAYkAg@yBgG_XiLgg@uLmh@]yAgMej@[qA[sA]yAWgAuQuw@]{Asd@cqB_@{AyRa{@m@iCwDqPkBeI?CiB}HYsA[qAACgByHYkAYmA[sA]{AGYKa@FGkCkLqYsoAmDqO]yAmCqL]wA[wA[mAyAqGwBaJmDkOg@qB?CQs@k@cC[wAa@iBaD}NI]aGsW]yAaGqWyLci@EMwI{_@m@eC[qAAGiAuEg@uBWcAWgAEOg@{BeAsEMk@o@sCoCwL}AwGmGwX{BwJaAkEoCwLwAgGeEqU", + "grodzisk mazowiecki|korytów": "}x`}Hmzz|B\\xALh@\\zAXhABJNl@HX`@`BtB|HFRhAfEl@`C~@~DFXhAbFDLbBtHb@lBrB`JpAtFp@vCBHH\\nCpLjCjLpE|RNj@Jd@d@pBVdAR~@DN@B?B~@~DjA`FrD~OnT|_AfCvKZxAj@~BbSz{@lEhRFT|D~P`Mji@lAjFXnAnCnLJd@Ld@R|@Rz@Nr@Np@Pr@Nr@Jf@Jd@x@tDVpAJd@Jf@Pr@Nr@Nr@Nt@Nt@Nt@Ll@Ln@Ll@Ln@Jn@Ln@Jl@Jj@Jl@Jn@Jn@Jn@DXHh@F^Pf@Lz@Jx@Lx@Jz@Lz@Jz@NpANnAPrANpATrBVtBjAbKRhBRhBJv@Jx@Hx@PtAPtAJv@Jx@Jv@Jv@Lx@Jv@Jv@Lv@Lv@Hf@Hf@Hl@Jj@Lt@Nv@Lt@Lr@Nr@Lr@Nr@Nr@Nt@Nr@Pr@Nt@Pp@Pr@Np@Pp@Pn@Np@Rp@Pn@Pp@Rn@Nj@Tt@HTHXRl@Pl@Pj@Rh@Pf@Pj@Rh@Ph@Th@Rj@Rj@Th@Rj@Th@Tj@Vj@Th@Vl@Vh@Vj@Rd@Td@Zp@Vf@Td@Zl@Vd@Vf@Vd@Vd@Vd@Vb@V`@Tb@V`@PXRXPXPX\\h@TZV`@V^^f@\\f@TZTZX^X\\X\\X^X\\X\\h@n@h@l@Z\\\\^\\\\\\^\\\\^\\\\\\\\\\^Z\\\\^Z\\Z^Z^X^Z`@Z^X`@X^X`@V^X`@V^V`@V`@T`@V`@T`@T`@T`@RZPXLXNRH^P^P\\N|@^`@PTHTHXJXJ^L^L^L\\J^L^J^L^J^Jb@J`@J`@LXF|A^HBh@Lr@PbATVFhIlB|EhArQfETDn]dIr@Pvv@pQTDbUjFvD|@rYzGPDF@jQbE~A^hJvBtt@zP", + "korytów|szeligi": "qho|Ha~a|BjIlB|ItBNBtBf@vBf@nDx@tAZtA\\vDz@dK`CfAVxXrGvg@nLlGxAtb@zJ^HxBh@ZFZHt@Pn@Nn@Nn@Nl@Pn@Nn@Pn@Pl@Nd@NZJZHn@Rl@Rt@Vr@Vt@Vr@Xr@Xr@Xn@Vl@Vp@Zr@Zp@\\p@Zl@Zl@Zl@\\l@Zl@\\l@^PHb@Xd@Xj@\\h@\\n@b@n@`@j@`@j@`@TNXRn@d@r@f@r@f@b@Zb@\\bZjT`At@r@d@p@f@p@d@p@f@p@d@p@d@PJ^Vn@b@TLd@Zf@Zp@`@n@^r@`@p@^r@`@r@^t@\\r@^d@Tf@TXLr@Zr@Zt@Zr@Xt@Zr@Xt@Xr@X`@N^NhM~Ej`@fOnCdAjG`CnEdBbDnAz@\\fHnCd@P`C~@pHtCb`At^", + "biała rawska|szeligi": "sac{Hiaw{B{@CwHU_N_@ch@yAaHS}[_AwEO?KWA}sA{D_ACqx@}BgAEw@Cw@Cu@Cw@Cw@Ew@Ek@Ck@ESAa@Ca@Cc@Ea@Ea@Ca@Ec@E_AKm@Gm@Im@Im@Io@Im@Is@Ks@Kk@IoJsA_AOuOyBkSuC}Eq@cIkA}Eq@{e@}Gy@M{sAoRaAOcAMu@Mw@Ku@KKAk@GUCa@Gw@Iq@I_@CCAYCc@Cc@Ea@Ce@EI?[Ce@Cc@Cc@Cc@CC?c@Ag@C_@As@AQAa@?q@As@As@As@?u@As@?iAAku@SaA?wVGY?w|@W{WGi\\I}CAgBAmB?{AAgA?eAAiC?gVIuC?kLEu@?u@Aw@?u@Au@?w@Aw@Au@Ai@Cg@AYAc@Ac@Cc@CK?YCc@Ce@Cc@Ce@EC?_@Ee@Cc@Ec@Ge@Ec@Ee@Gc@Gc@G_@EEAc@Gc@Ge@Ic@IWEMCc@Ic@Ic@Ic@Ic@Ke@Kc@Kc@Kc@Ke@Ku@Su@Ss@Us@S_@Ma@Mg@Ou@Wu@Ws@Ws@Wu@Ys@Yu@Yu@Ya@Os@YsFuBqJsDoEeBa@OwGiCgHoC", + "biała rawska|strzałki": "sac{Hiaw{BtM`@b@@fLZ~HTlDJdTn@dDHn@Bn@Bv@Bv@Bv@Bx@Bv@Dv@BbB@xBN|BP~Cd@pC^nC^t@LdF~@t@NpCn@rBf@nD`ArH~BdaAr^tAf@zMlFxgBlq@ht@pXxBt@lBp@dCp@jBf@jGvAdB^bC^|B\\xBZ|BT|BNzBD|B@bb@l@`FJpx@bBn@@vV^n@@`e@t@t@@n^j@rdAvArgAlBfELpEZpKtAnHlA^HhATps@vOlAVrDx@n@L|Cp@jh@dLdATfQxDbDr@", + "idzikowice|strzałki": "wa`yH{v~zBsFkKYk@iDsGg@_AyE_JoAaCEGuc@oz@aTca@oQ_]sf@c_AqNiX_EwHc@y@}BkEwLwUmIeOaHoKsDkFcIeJcImIuImHsG_FsGsEuGuE_JoGeAu@}ImG}KgIgJuGgLmImA}@kJyG_JoGaJcGiH_EcFaCqG{BuFgBsF{AkGkA}HkAcKs@wAK{c@yAWA}CQ}I[_Y_AiCIqTw@kCKaV_Ae`@wA{YeAi\\iAgw@mCcGUco@}BaJ]sX_AcEOmLc@kIYYAuHYkb@{AuJ_@oIYkSs@uLc@sn@{BsGUwEQkYgAcVy@sDMgXcAkXcAyCMwHq@wHw@yCc@gIeBeIgBaE{@{Dw@s@OcTuEoAY", + "idzikowice|opoczno południe": "wa`yH{v~zB~NzXz\\ho@f@~@b@z@p@nAt@tAfCzEFJ|BhEz@`BT`@Vz@Zl@v@zAn@lAPXvE|IzAnCrCtE~@zAzBjD~CfEzArBdC`DrCpDxCbDnKbKjEpD~ErD~PhLfUjOlSzMpW~PvUrOjn@na@l`@lWjJdGxRnMvb@fY|DdC|A`A`B~@`B~@dBz@hEpBdCdAtBx@vBt@~OhFlCx@\\JvJ|C\\JzCfAfFrBvL~FrC~A^V|DjC|EnDvDvCdErDvEtEjEvEzF|GrDpExMfP", + "opoczno południe|pilichowice": "sqnxH{eozB`@f@|D|Ej@t@nAzA|KbNfLjNpIjKbFhGnDjEfHzItMnPdHpItJjLlE~EpErErHtGzHbG~g@|_@lmAz}@xs@`i@lg@r_@rGpFvFtFrFzFfHzIzJtNdm@|eAfZ`i@~c@fx@Vd@vBtDdO~WfOxWnD~FpDzFzExGbFnGrFjGxF~FvHxGbHhFhHxEhq@z_@x@d@", + "olszamowice|pilichowice": "wpzvHwsnyBsA?qQ@mX@qJ?sF@qC?u@?gG?qH@_IEqFKoFQcEYcEe@eEk@eEu@eE_AcEeAkE}AyFqB}i@kTwCkASIkd@{QuL{EgSeIqLyE{y@w\\mMeFch@oSe@S{_Aw_@aAa@om@kV_JmDc`@{OiMqEECwC_A{EuA{EkAwGqAsAWyNgBSC_MaA_j@wD}Fa@sgAwHkf@gDmRsAcg@mDaGa@cFa@QCoFo@gEo@wGqAsG}AgFgBcFkBeHaDaHqDgSeLeSiLqBeAaGiD", + "olszamowice|włoszczowa północ": "wpzvHwsnyBfL?vCAvn@CdI?zmAGhVAvJArdDO~F?hS?|QAbA?li@CjKN`FV~E`@xH`AlHpA|LbDnF~AhEnA`OjEnJpCbjA~\\~C~@nu@|T|UdHpYrIlRxF~@XlMvDXHtLjDfGjB`Bf@nOpEdOrEnDpAjDtAlB~@jGxCxElCtExCrFzDpFnEtFbF~S~Sj[l[xBxBlWtWnFpFpXzXfGjG~FvGbM~OlDvEbJzLxn@pz@j\\pc@jA|AbArA~_@dh@j]xd@tP|TvAlB`g@|p@xK~NpKlNDF`DbEfDzDjDtD~BbCdC~BjC|BlCzBhCnBjCjBxE|C|EpCtDnBxDfB|DbB`E~AvHzClTtItShIvEhB|X~Kt@X|GlC|OnGvGjCjGbCzUjJlDtAlNtF", + "knapówka|włoszczowa północ": "y}`uHmqnxBeAw@aDeCoEmD{MgKWSoAeA_E{CcMuJeMyJu[oVwHaGwH_GuLkJ}D}Ce@]go@}f@yJuHaDeCaEaDaK_IcHoFi@c@aBoAaBsA}AmAaBoAmA_AcAw@uB{AoE{Ck@]oAy@aAi@kAq@uAu@iCqAgB{@mBy@yAm@sIiDkBu@wOkGkDuA", + "knapówka|psary": "y}`uHmqnxB~BhB~@r@tT|Pj`@pZ|HdGJHdIrGnDzChD`DvGxGxOlQrOjQ`]l`@xR|Tpt@lz@pQpSxj@ro@pKjMbDnEtHfL`FxIlBpDrDpHPb@rDnIvDxJhFhOlEnOtEpP\\nA~BpIxVd~@lKz_@r@fCHB", + "psary|starzyny": "mzstH}f}wB~BpI^tAlDfMPp@Rn@Pj@x@fCTr@rI`[xDdNv@rCb@bBh@~Av@nBbBbDt@lAx@bAz@`A|@z@|@r@bAr@VNRJj@X~Al@zA\\|ARbADbABvBKx@Kx@OvAa@hM}E~KsEpOuGfAa@pEmA", + "sprowa|starzyny": "ilxsHejjxBw@XEByDtAmI|C{g@lRSHmFpBkBp@wBv@aFhBcFjCgBhAyCjCiBnBwAlBwOzUcMhREFal@h|@KBkXna@}PlWoWh`@o]rh@}JdOkF~HaNdSq@`AuBlCuAvA{AtA}ApA_BdAcB`AcBr@C@gBn@{Ad@{Bd@iBb@}h@bHyVdDovA`R_~@vL}B^iB`@gBf@_Bj@_`@pPoiBtw@mRjIaJzD", + "kozłów|sprowa": "stbsHghdyBuBe@a@IyBg@A?]IyEeAwGyAmAWiB[mB[{AW]DmCe@w@Kq@Ks@Gw@Iu@Es@Cy@Au@Ay@@u@Bs@Bu@Dw@Hm@Fs@Jm@Jg@Ju@Ne@Ls@Pq@Rq@Ti@ROFq@Xo@Xm@Zo@\\s@`@m@^q@d@k@b@o@d@o@h@i@b@o@n@k@j@k@l@m@p@i@n@g@n@g@p@eB|B_ClCaApA_FtGeIbLyHxKo@|@w@hA]f@qApBcAbB_AfBy@bBy@nBYt@_@bAs@tBq@zBo@dCm@`Cc@|Ba@bC]jCe@zDQ`BqFnj@{Grq@}Dv`@gAxKQxB]tC]nCc@rCg@lCk@hCo@fCq@`Cq@pBq@jBq@`Bu@bBy@~A{@zA}@xAcAxAgAvAA@gAnAkElEgKjKqAnAwAjAuAdAyA~@{Av@yAp@aBl@aBf@{DhAg@LmFdBoHzByErByCfByCdCmAlAmBpB}DlEo@r@sGbHMLo}BfeCiLdMwBdC_BvBmAlB}AtCiA|BaA`CwA~DeAlDcAjEqAxGmBfKwVrtA{@~DyArGw@rCqC|H{BxEeChEqCtD}BfCaCrBw@l@EDcBfAeCnA{D|AyAj@cPbGqSxH{f@zQC@mE`Bib@zOuFtB", + "kozłów|tunel": "stbsHghdyBdCh@n@Nb@Jj@P`@L\\LLFHB^Nx@^`EdBDB^N|@`@fAd@vB~@|Ar@|FlCvBbAbChAj@Vr@\\vBfAPHr@^j@Xd@Vf@Vf@Vn@Z|FlCZNfCjAvCtA|SvJ`RrIl@Xh@Vh@Rf@Rj@Pf@Nh@JTDXDd@Fl@Df@Dd@@\\?^?b@Af@Cl@G\\ENAf@Kh@Kf@Ol@Qd@Sf@Sh@Wf@Yd@[h@_@d@]d@a@`@a@f@i@\\a@b@i@^i@`@k@^m@^q@Zm@\\u@Xo@Zy@JAPg@Vy@Xy@ZkA|AsFRu@Ro@Vw@Vq@Xw@Ti@Xm@\\m@Zk@\\g@JQLOFKZa@\\c@X[XY\\[b@_@b@]d@[`@Ud@Wb@Qf@Sd@Od@Mh@Kd@If@Gh@Ef@Cd@?h@?f@Bd@Bh@Ff@HXHLBf@L`@Lf@Rd@Rf@Vb@Xd@Xd@^`@\\`@^^`@`@d@^d@Zb@`@l@Zj@\\l@Xl@Zr@Vn@Vt@BDPh@Rr@Rr@Rx@TbARbAN~@PhAN|@J`An@fGPzAHx@Lz@Jv@Nx@Px@Nt@T|@\\pAfJj[zElP`CjIL^b@dAZp@P\\R^Vd@Vb@Zb@X`@X^XZ\\\\ZZ\\X`@Z`@Z`@V^R`@Td@TfClApDhBfBz@x@`@`@Tb@R", + "miechów|tunel": "{zirHsmcyBuBy@sC}@mBy@cBq@kAe@_@O}D_B_Bg@}A[{AMoACkFLaGReBDwBHa@@_A@wBCeBKsGu@i@BkR}ByR_CcCMcCByBTMDqBb@uBt@sBhA_C`BwBbBuB`Bm@d@]XuDtCcE`D}BbB_B|@kAd@uA^gBTS@c@By@?sAE{ASwA]sAi@eI}DsFsC}@a@w@Wo@SaAQcAKeBCoBH{AVaAVs@VMDw@^uAv@oC~A}@j@yDxByDtBcA`@gA`@kBb@eCb@eANwEr@oFt@UDeNrBgBTsCb@yB\\wBf@oAb@kAh@s@^w@d@o@f@aBvAaAdAaAjAs@dA}@zA[n@_@p@_AjB_FxJm@lA_MtVqCvFa@x@_@n@]j@[f@[b@a@f@Y\\a@`@]Z_@Z_@XIFUN_@TEBWNe@Re@Ra@Nc@La@Jk@LeEv@iNnCeF`AgNpCaARe@JgATe@Hg@Ha@Hq@Hy@Hg@DwBReBN]BgE^_DVe@BS@W?e@?e@A_@Ae@Ga@Eg@Kg@KKESGa@Mg@Sa@QoCsA", + "miechów|słomniki": "{zirHsmcyBzAl@dLtEnDdBvInDVL`Bn@|Al@pBx@|B`A|A|@nA|@`A~@z@`AdAzA|@~Az@hB~@~BzB`Gl@rAp@vArAvBnA|A`BxA`Ar@bBz@n@V`B`@b@FrANzA@tAGjBYvBs@pB{@~@a@vDeBb@QdDwAvT}JbH_D~GiDv@e@zAeAVQdAw@fDgCtA}@~CgBnJaFvHcE|AcA`Au@bC{BzDgDfBwApA}@|C{AlD_AbDi@jFy@nEiAfDgB`DkCxCcDjMqNrFeGz@}@dByAxAcAvEqCtCeB~CiBnGuDjBoAf@]`Au@z@w@JIdCiCjMmPxC}DrCuD`AkAdAiAdAaA|@w@xB{AzGeEPIvA_Ad@YfE{B`DoBpAs@pAm@fFgBhAa@pHeCtHiClGyBf@QxFoBvAk@vAq@v@g@l@c@zAoA~AgB`BqBdQyTvFiHbAkA~@iAhAiAFGr@m@z@o@jAy@|BuAjEaCdB_A`B_AtL{GrBkA|GwDnC{AhAo@dAo@nPgJvGsDlC}APIRM`BcAv@k@t@q@`@c@nA_BjAkBhBgDn@iAr@gAh@s@d@i@l@o@l@e@j@c@j@_@xAs@f@Sd@Ob@OnBk@JEjBi@ZW^MZIdBg@`A[hA[pHwBj@Q|EwAdA[TGr@O", + "niedźwiedź|słomniki": "sgmqHskqyBiE{AmAc@eBm@oCaAwAe@eAUuAQoAGkA@kAFgARgAV{@X}@b@{A|@{A`AeElCwExCwD~BeAf@}@\\{@Z{@RyAVeAJmAFcA?y@CcAGsFg@mBSuGo@sGq@}Fk@gHs@wBSwAMcAE}@@qAHw@Lu@NaAXaA`@{@d@y@h@o@f@_Az@{AjBo@bAw@vAuAtCm@tA{BdFq@~A{AfD}@tB_AhBmAhBgArAuJtKgCpCgCpCa@d@{ElFo@r@}AdByAjByAhBm@n@o@h@u@n@cB`AaDlAMD{Af@kA`@i@Pc@Ni@Ni@LoCn@", + "niedźwiedź|zastów": "sgmqHskqyBzDtAfDdAxBp@x@XbExAlFjBfDpApDxAtChA`A^fKxDx@XrE|AjAd@|@b@z@f@t@j@lAdA^`@d@h@`AtA~@`BdA`Cr@pBl@xBd@`CTvARzANxAF~@Lt@@ZJhCHxCFzCJnDJbCJnAV|B^bCf@zB`@|A`@pAf@nAz@bBx@tApAhBj@l@p@n@bAv@`Al@fBz@h@NrBb@fAJfA@fBEfBY~Bq@xAq@~A_ArAu@t@c@b@W\\SbCyAxAy@fBu@rEiB|@]x@WvA[~Co@~A]x@U`A[~@c@bAi@r@g@z@q@z@y@~ByBjAiAdCcCfA_Az@m@t@e@x@c@|@_@v@YzKyCtDaApD}@jBi@`AYt@YpAk@hAo@zBwAdBmAdCcBjCmBjAy@VQh@]bBmAbAs@~@w@hAgAn@s@l@q@b@m@h@q@`A{Aj@aAf@_AjAeCrCkGtEcKXm@dAaC`A{Bt@qBb@wAd@iB\\iBb@}CVcCViBH_Ab@gFZaETeCVmCVkBZcBDQZyAd@cBd@sAj@wAt@{Az@uAd@q@t@_Aj@k@dA}@v@m@fAk@p@YbA[~@U~@On@EnACjA@rBH~BJxBJjBHxAFZ@l@@nERvCJzBJfEPhEPxAHxAL`AJtARz@Lz@LnC`@nBXtBXdANr@Nz@Tj@Rf@Pn@Zp@^|@p@|@v@z@|@x@dAz@tAx@|Az@jBlAxCP`@t@dBdAfCbA`CrB|EtBbFRd@JTr@bBr@bBvBbFzClH|ArD|ArDrL`YjBpEJT^z@xCfHXr@`FzLnCtGnClGpAzC`CpFjAlC", + "raciborowice|zastów": "mezpHkqfyBsIo_@{DcQyBsJ_AmESmAEUMs@g@yCmAsHqFy\\}Fi^Mu@cHec@{@gF}@qFm@oDk@mCo@kCm@uBe@uAe@oAe@kAy@qBAAy@mBWo@", + "kraków batowice|raciborowice": "_fypHqx~xBmCaKcA{Ds@wCUkAc@_Ca@uCUoBKeAIeAMeBIwAGwACwACmAAaB?iA?iABwCNyMJyHD_I@mEDiCDiCD}BDqBFyCFwCJuF@gBDqCDmC@oABsB@M@gAB_C@_A?[?s@A}@Cu@Cw@?EEs@IoAMkAKeAOeAO_AQaAeAyEgA{EkBkIkBiIa@eBe@wB_AcEi@cCq@yC", + "kraków batowice|kraków przedmieście": "_fypHqx~xB`@xAp@`CPp@bA|Dr@lBr@jCnD`NpBpHv@zCf@fBV`Al@vBp@rBdApClA|CjAzCjIdTjC|GdHtQh@rAbAhClA`DfCpGnC~G~AbE~@~Bj@vAb@bA^v@^r@Tb@\\j@Vf@NVz@vAp@jAbAhBzAhCbBzCb@r@pA`CXf@~ApCx@xAh@`AXf@V`@TZLRTZVZVXRTVVVTTTXTTPRNRLzA~@lBjAl@\\PJ`B`A", + "kraków główny|kraków przedmieście": "msrpHy|vxBSLOJQJy@`@]Py@\\m@XoAh@MFMFg@Tm@XWJSJ[LMFu@\\[LKDw@^a@PSFYH[HYDC?SBW@O@U?QAQAUC[EWEKCMCw@Q}@QOEk@Mg@Ki@OICWIa@O_@Qa@SYOMGk@[cDoBWOuAy@cAm@wBqAmJuFgAo@yCgBeBeA]U", + "kraków główny|kraków zabłocie": "msrpHy|vxB`As@d@_@b@[b@[TO?Ab@UDCPIHEXKXK\\IXG\\Ed@E`AChDGhCCVA\\?^AR?ZBJBF?b@JVHVJJDJDNJLHPH`@RNFVJPFb@Ld@JNDPBFTj@AJARKL?|BC`DGL?v@A`@AhBERAVAH?j@CXA~AGVAXAf@Al@AdFG^AfEGf@C^Ch@Eh@Gb@Gb@Gd@Kd@Kb@Mb@Md@Qf@Qf@Sf@Uh@Yb@Wf@[b@[b@[d@_@PR`@E\\]\\]d@i@f@m@^g@jA{A~@sAd@m@|BaDfA}ApAmBDG|HoLBE^i@@CdCqDf@w@`BcCZe@", + "kraków płaszów pzs kpa|kraków zabłocie": "e~kpH_s{xBW`@kBnCkC|DILMRSXSXQRORUXGHIF]`@g@h@c@b@c@f@_@`@a@d@]d@_@f@_@h@k@z@]d@INaC~CABSh@y@lA]XKNW`@yAfCm@|@gBlCmBfCgA~AgOrSb@|@", + "góra włodowska|psary": "gzvsHooxuBrCon@lDow@FmAvAm[hDiu@\\}HP_FZcMJsHFsH@cF?cFIgMUqMa@oMgAuSkBmUsBgRgBeMqB_MwB_LaBsHAAgBsH_@{AyAqF}AoFaBkFcBiFqK_\\sAgE{AeFMc@iDmMsCcMsAyGoA}GiA_HcAaHkA}IiAiKGi@s@sHi@uGc@uGUkDQkDWwFUwFUgKKqGIuGAmH?mH@uAXg]LsMLqNF_F?i@FoG\\w_@VqTBqAH_FTkIV}H\\cI?QDs@fCmj@b@kJdFqgAx@_QpDuw@j@cN@c@XgJPgKFmK?oKIiMUeMY_JCu@g@sKo@eKu@aKkAsLg@wEi@uEuBaPa@yCgQerAaMi_AaD_VoCqSwCuTmA{IsA{IoAqHe@gCo@iDaB_IiB}HoD_NOk@iFmP_CwGgBuE]{@}DeJgE}I}@eBgDeGmD_GoDuFuDkFyD_F_E{EcEkEkEgEqE_EwEuD{EgD_F}CeE_CSKwDkBkD}AyEiB{E_ByEsA_FiA{Cm@{Ce@}Cc@}C[_DU_DQ}HSsDAcEFU@}ADwBJaEXmD\\mDd@yIzAoTvEovAvZqK~B[FgLfCgLdCYF}IjB}IvA_Gp@_G`@aGP_GBeEEcEKeEWeE_@qFo@oF_AmFkAkFyAcH}B_HqCyGcDuGyD{E_DmBsAiBwAsEwDsEyDyKqJoD_DqPwNiC_CgCaCgCeCaCiCwA{AOQqB{B{BwCgCeDaG{ImDyFACeD_GeDoG}CuG{BeFyBmFgFsNeC}H_@iA{CoKqHgXwAkFSw@cJg\\yDkNkKs_@gL_b@wH{XcGkTc@}AcF{Q}@eDcC{IgYodAy@wC_HoW", + "góra włodowska|zawiercie": "gzvsHooxuBIhBiAvV{EbfAk@tMEbAm@zOa@pOKpJEnJBfMPhM@n@b@dPx@jQh@|Hl@|Hr@|Hv@xHbAzHPvAxAnKvBvL~BtLlDjO|AbGbB|FNd@rAlE@@tAfEvDjKpB`FpCvGtDzHzDtHdEfHtBhDpAtBxDfGdL|PpBvChBfCjB~BlB~BpBxB^`@pCrCxDhDjCzBlCtBzBbB|B|AnErCrEfCzDnBbAb@zB`ArHlCrDfAvD`AzCn@|Cj@`H|@p@Hj@DVBVBz@F^Bp@Dl@Dz@Dn@B~@Bt@Bt@@t@@t@?t@?v@?r@Av@Az@Ar@Ct@Ar@Et@CzBOj@Ev@Gt@Gv@It@Kt@It@Kv@Kt@Mr@Kx@Ov@Ov@Qt@Ov@Qr@QNEh@Mx@Ut@Sv@Uv@Wt@Ur@WdA]hKuDjKwDzCiAff@gQdKsDhG{BnOuFrEaBp@Wx@[t@[p@Yh@Wn@Yr@a@r@_@p@a@r@a@t@e@l@a@v@k@r@i@n@g@p@m@n@i@n@k@n@o@j@k@f@i@v@y@l@s@j@q@j@u@h@q@l@w@f@q@r@cAxFgIvAqB~BeDnFoHhA}AfFiHvAoBj@u@j@u@|G_JX_@|AsBv@gAPUn@{@LShBqBj@u@R[bKmNvQyV\\W`RgWrBqC`EwFp@aAj@y@h@y@`@k@DGn@m@hBsCf@w@b@s@d@q@Za@^e@\\]Z[XW\\[XSVQDCZS\\SZO\\OZMZK`@MRETGb@If@IFA`@Cl@Eh@CbBG^AXQxBI|CKfBU\\A^AHMvBIv@Cx@En@Ev@EdAKbAId@Ed@Ch@C~Kg@nBIbH[nFWtDQx@E|@EnDWdCOp@EtCMj@C\\Ab@?jCA|@?d@A`@A", + "zawiercie|łazy ła": "}aasHyvpuBd@A|AGTA~AIrBIdS}@tDQ~G[jJa@~BKx@C\\AJAr@An@@l@@t@Br@Dl@Hl@Hr@JZFnAZf@Nl@Pb@PFBr@Zh@Vp@\\d@XRL\\Rf@\\l@f@l@d@j@f@VVRRXXVXVXN?`BjBb@h@PR\\XRP`@RxAz@v@p@dAz@", + "łazy|łazy ła": "w{xrH{yjuBk@}@GMGKKWMWKWUq@MYISMWOYKQEES]Y_@eBsBm@s@sG_IKM{CuDuCmDmCgDaGgHa@i@S[U[S]Q_@Qc@Oa@Ok@Ka@}BcJOi@Ma@Oc@Qa@Qa@Q[U_@U[g@m@kAsAOQkFcG_DqD[]WYOMEESOUOWO[MYK[IYG]EYCyBM[C[G[G[MWKYOYSWQWUWWWY_AcA_BeBa@c@u@w@g@k@MMIKMOKMOUY]]]i@m@_LyLq@u@q@w@u@{@s@y@uFoGa@g@SS_@[[Wc@[]QUQUOOK_Aw@", + "łazy|łazy łc": "w{xrH{yjuBZd@PXJLNPpAzAxAbBr@x@zBhCRTh@l@n@x@|C|Dd@j@VXHJz@bA`LpMvNpPDDrGrH|@bAl@p@f@p@HHPTNPb@n@^f@h@|@`@n@b@v@`@r@`@|@^t@^|@Zz@^`AZ|@Z`AV`AX`ARx@XfAR`ARhARdAPlANbANjAHl@BZLhA@NFt@JlA@PDl@FfANlDDr@TjFDnADv@pBfd@", + "dąbrowa górnicza ząbkowice|łazy łc": "wmkrH_~ptBAAc@c@oAmAaB_Bg@e@SUe@c@oAmAUSQOECKKUQSOoA_AkEcDaD_CSOCCo@e@KWeBqA_CeBiBsAwDoCcS{NeBoAYS]Uc@YuA{@}@k@}@k@_@Ya@WoCsBi@m@mBwAqMqJo@g@g@_@g@a@c@_@i@e@w@q@s@s@m@m@w@y@]a@YYo@w@o@w@q@_Ao@{@m@{@m@aAg@{@i@}@k@gAg@cAe@cAe@eAe@iAe@oAa@eAa@oA_@iASo@YaAMa@I[a@yAYkAQs@K_@[{A[}AI]Ms@Ms@Ki@UsAG_@M}@Ks@Ge@OaAGm@AIMcAAOOuAMsAOaBM{AOqBIqAa@qGQqCSuCSgDEi@W}DIkAEs@c@uGa@sGe@kHAUk@yIm@qJw@yLC_@IiAyBo]IqAI}@AQImAKgAOuAMgAQuAO_AGa@EUEYSeAUkAUeAYkAU_A[iASm@EQ]eA[{@_@aA_@}@c@cA]u@c@y@a@s@g@y@_@m@CGi@u@a@i@g@m@i@o@m@o@g@k@cKmKaAcAY[UYY[W[U[CCYa@g@u@]g@KSGIS_@_@q@e@}@Sc@KSISSe@Wm@Si@Se@Sm@M_@Sm@Sm@Oi@Qi@gC{IYaAY}@Qi@O_@Uo@Um@_@_A_@y@_@u@a@y@e@y@GK[g@e@u@c@m@g@q@e@m@g@k@g@i@i@g@II_@]m@g@i@a@k@a@m@_@o@_@OI[Qi@Uo@YA?k@Ui@Qm@Qc@KEAi@Km@Mm@Kc@GgC_@YEOCOCe@KGC_@Ie@Oi@QUIUKSKOGUKYOo@_@a@WSOMK_@Wa@]_@]e@c@EE_@_@e@g@a@i@c@i@a@o@AAOUOUa@q@_@s@[o@AA]s@Yo@[w@Yy@[{@Wy@Ok@Ok@Oi@Ok@Mk@Kk@Mk@Ko@Ig@Kk@Io@Io@Im@AEK_AMeAKeACMEe@ACEg@Gk@Gm@Ei@Go@Eo@AKGgAGyAIyA?OE}@UyEe@wKYaGEmAEw@eBo`@Es@", + "dąbrowa górnicza|dąbrowa górnicza ząbkowice": "}aerH_lbtBNoAJ{@Hu@Fm@Da@D_@Dc@Dg@Be@Ba@Dg@@a@@]BW@]?[@]@_@?a@@_@?c@?_@?_@?]Aa@?[Ac@Ac@A_@Cc@Ci@Ck@A[C_@C[Eg@Ee@Gg@Ee@Ge@Gc@E[G[EYE[G]GYGYG_@IYEWI[IYGUGWGSK_@Ma@Oe@Oc@Qe@?WuDuK[y@{AmE{AkEWs@cKcZiCmHu@{BqAuDyAgEwAeEqCcIc@qAeJ}WuA_EOc@KYqCeI}C_JaBwEaByEmAoDaByEmBsF{AmE}ByGcCiHs@oBqDoKIQgLs\\a@kAg@{Ak@}Ae@uAyCwIaC_HcKaZyJgYY{@[y@[y@Yw@Yo@Wo@]w@]w@[m@[m@Yk@[i@]m@_@k@a@q@a@i@a@k@a@k@KMOSUYW[UYUWwAcBsB}BY]YYoB{Ba@c@KKWWeAgA[YSSe@c@YYm@k@]]_@_@a@_@_@_@", + "będzin|dąbrowa górnicza": "obarHmlysBkA~@gAx@KFaBlA}AhAiBvAoC|BcBbAcAz@cAx@a@X_@VYR]Ta@V_@T]Pu@\\s@Za@N]LQFk@Pq@No@Lm@Ji@Fq@Fw@F]Bg@Bk@@]?q@?w@Aa@Ae@As@Eu@G_@Ek@Go@Io@Kk@Mm@Mm@Om@Uo@Wc@Q[OYOCAa@Sm@_@k@]o@c@o@e@k@e@m@i@m@g@i@k@m@o@g@k@g@o@a@i@i@u@e@s@c@q@_@s@a@u@e@_Aa@}@a@{@a@cA]aA]_A_@kA[eA[eACKOm@Qs@Qu@S}@Oy@Q{@QgAO}@QkAGg@CWOeAk@uEcAiIK_AgA_Jm@aFcAkI]oCY{BUiCC[i@kGQsB_@qECQCa@MoAyC_^Gq@Eg@Ek@Ek@Eu@Gy@KoBc@eI]gG[gGCq@Ci@CYA[?[Ac@A_@?]?_@?[?a@@a@?[@[?A@O?Q@U@WBY@[BS@UBS@UD_@Fm@BSFmAHw@~@iI?G`@iDFi@Fm@@IFm@VkCl@_GHu@NuAnBgQh@uENoALoA", + "będzin|sosnowiec główny": "obarHmlysB|DcDj@g@n@k@t@q@dBcBx@s@z@q@\\W`Ao@dB}@l@Wh@UjDeAvAa@FAnA]t@Q|@QvBSn@At@?nBH`BPbFh@`Gp@hALfMtAH@tEh@zBX`AJlAHfBRh@DzAPx@HhAL~DXz@JJ@l@HbALp@Jb@Lz@RzBt@rAp@rAv@`D~Br@p@z@~@j@r@d@v@\\j@Zn@b@`A`@bAN^x@tBp@fBb@x@NZj@bAVp@Xr@pA`D~AdEpAdDFPzAvDrAjDbBhErAjDfApCfBpEhBvEbDlInA`DHV@@N\\rAjDVr@z@vBdAlC`AfBT^VZZ^", + "katowice zawodzie|sosnowiec główny": "k|vqHwthsB?_CB{AD}ALsDRsFDoAHoAL_B`@sEPaC@kBLgEL{EVaHH_EF}FDyC?qDG}FKyFSqGYqGi@wIm@cJcDif@UkDOyBMyCOuCo@aIu@cJa@cFCa@YiEM_CIcAEw@W}D]sD]kD]iEw@{KWiC[mBe@uB]mA}@oCeA_Di@{AcAgCkAgCqAyBi@y@{@kAmA{ASUw@}@cAgAkC{BoCqBqLwIeHeFsCsBe@]uCcC_BkA{B_BwAeAAAi@c@i@e@i@i@k@q@q@eA_AeB_AwBi@wAoA_Do@cBUe@cB{H", + "katowice|katowice zawodzie": "ozvqHeuasBFcAV_D@CF_A@CH_ABc@FmBJmCf@qORoFLwDBgB@m@?kD@U?wA?cB?CAc@?kB?AIu@?k@AW?uAC{DEmBKuEOwFCcA{@g[g@oLw@}RMgDIqCAm@CwC?aCDaEHwEDeDBkABqAEq@ByCAsCC_C", + "włoszczowa północ|żelisławice": "ozjuHeevxBjDtAvOjGjBt@rIhDxAl@lBx@fBz@hCpAtAt@jAp@`Ah@nAx@j@\\Zd@|CtBhAx@dDdChCrB|AjAbBpA`BpAdBtAdFzDnFfEhBxAzCdCpAdAzCdCfA|@rAfAzAlAlQtNpR|Ob@`@`@^d@f@b@d@b@h@^f@^f@`@l@^j@\\j@Zh@^p@Xj@Zn@Zr@Xn@Vp@Zz@Xv@Vx@Tv@V|@T|@Tz@R~@P~@TjAR`A|RzdAtBzKbq@jnD~AnIxBnLR~@Lh@Nr@T`APv@Ln@Nt@", + "grodzisk mazowiecki|żyrardów": "}x`}Hmzz|B\\xALh@\\zAXhABJNl@HX`@`BtB|HFRhAfEl@`C~@~DFXhAbFDLbBtHb@lBrB`JpAtFp@vCBHH\\`@bBLf@Jb@Rt@z@hDTx@Rx@d@nBr@zCn@hCRv@xA|FNl@Nj@\\zADNd@rBdApEXjA~@`EdFtTXnArK`e@jE`RZrAXpAXnAzCvM\\xAfZfqAFT`FfT^dBDNjZlqAbAjEdBtHlAjFZtAb@hBRz@zKxe@pS||@\\zAtCdMlDdOxEpStUlcA\\xAlChLjJba@bEpQ|AxGFTdBvGx@pDzCrM`CbK\\xApCxLhBzHhBzHrAzFtAdG@FJ^BJBHpMzj@dDnNbClKd@rBzApGbAjENr@HXbAnE~@|DfAtEnCrLFXlHh[lBhIt@bDrEzR^|AJf@", + "radziwiłłów mazowiecki|żyrardów": "yhk|He~yzBQu@kA{E_BeHi@cCGUS{@[sAe@yBQs@k@iCmBoIk@kCU_AS_AYkAYoAoAsFe@sBCMwBmJiDgO{@uDe@qBe@uB{AyG[oAuCmMe@qByBuJo@oC{EcT]yAs@}CS{@g@wBeIg^iDgOeDyN_@aBqAyFeAuEOs@GWI[sDgP]yAcCqKmAqF{AuGiAeFcAmE}@{DuAkGy@kDy@qDyD}PgD_OyHc]WcAAICIGWAGAGOq@cAoEuAaGo@wC}A{G[yAs@yCsMsk@aAiEeBwHw@iDgDeO}B_KI]S{@yEwSYuAq@uCqA}FYqAYoASy@Oq@Oo@UcA]wAgBwHWoAYmA[qAYqAmK{d@qFeV]{A{@wD[qAYqA[qAYqAwKge@yGoYkDcO}FuVCMWkAwBaJkWihAmAiFiB{He@qB_@}AEUw@gDmBiIEQeAqEgAyEo@qCqCuL{BsJYkAkBaI", + "radziwiłłów mazowiecki|skierniewice": "yhk|He~yzBBJBHlBfIZtAZpAXpALh@Nn@TdAZnAXnAjBlIZtAZpA`@hBlBnInIz^Lh@ZxAxEvSnCpLZvAlChLXrAZrAlBhIZrA@FXjAbAtFNn@r@|CNp@XlAXlArE~RZnAXlABP\\xAJb@hDdOrC`Mb\\zwARz@Nj@ZxAf@vB`BjHtFlVn@pCxJvb@vCjM@JBHH\\tAdGPt@Px@Nn@Ln@Nt@@DLj@Lt@Lt@Lt@Lt@L|@Jp@Hr@Jv@Jx@@HFh@Fr@Ht@H~@Fp@Fv@Dp@@R@JTjDX~DT~CF~@F~@Dv@Fx@Dx@Bt@Dv@D~@Bz@Bv@@v@Bt@@v@@z@?r@@z@?|@?h@?dA?~@AvA?\\EdRCfG?^ArGClHCfIIt^If_@CzE?|A?r@@t@?x@@v@?t@@t@@v@@v@Bt@@v@Bt@Bt@Bt@Bv@Bt@Bt@Dv@Dt@Dv@Dr@Fr@Dr@Fr@Hr@Fr@Hr@Hp@Hr@Hp@Jp@Jp@Jp@Jp@Lp@Jl@Ll@Jj@@@RfATfAJf@bC|LZ`BfBzI\\dBv@zDfChMhClMhEjTvBpKBJH`@Jd@P|@P|@Hd@Hd@Hd@Jh@Hh@Hh@Hl@Fj@Hl@Fd@RbBDZF`@Fb@Hh@Hh@DZBLJh@Hb@Jj@BLFXF^TfAtA|GFZNr@lAhGl@vC`@tBJb@n@dD", + "płyćwia|skierniewice": "w_{{HevayBsBaEGMAA}@gB}A}CUc@g@aAg@aAuAoCaEaI}@eBUc@iAyBWUMWi@cAc@{@c@w@OWKSS]S[Wc@W]U]W]W]Y]W[Y[Y[WYYYYY[W]YWSYW[U[S]UWQYO[Q]Q]Q_@Q_@Oa@Qa@Qa@OkKeEc]cNq@c@}D_ByImDoAg@m@Uo@Yo@Y]O_@Q_@QWOYO_@U[S]U[S[UYW[W[WYWYYY[YYY[Y[Y]W]Y]W_@W_@Wa@Yc@S[OYOWIOYg@ISIOUe@Uc@Se@M[EISe@Qg@Sg@Qg@GQK[Oc@Qi@Oi@GOIYOk@GSAIEMMi@Om@Mk@Mk@Mm@AKGYKk@Ki@Ik@Ii@Ik@G[AMGi@Ii@Go@Io@Gq@Ea@AMEq@Go@Eq@Eo@Eq@AW?OCe@Cc@Ac@Cq@Aq@Aq@As@Aq@?q@?q@?q@?q@@s@@q@@q@@q@Bq@@q@@W@YDo@Bq@Ds@Fq@Du@Fq@Ds@Fs@LuALsAJyBJeArBqULoAZmDBUp@wHv@uI~BsWx@eJZkDZmDZoDZgDFo@Da@JiAv@yIVqCrBiULsAfA{LLuAtB_VxAaPpCc[Fm@fAuLzAwPDg@zAsPt@oILuAtF_n@NcBLsADg@Dk@Fu@Fu@Du@Ds@Ds@Du@Bs@Bs@Bu@?A@e@?KBu@@u@?]@U?u@@u@?O?c@As@?u@Au@As@Au@?K?OAMCy@Cy@Cm@Ck@A]AWEq@Eo@Em@Eo@Em@Go@Gq@Go@Iq@Gq@Im@Io@Io@Km@Ko@Km@Km@Km@Km@GWEUMk@CMIa@Oo@Om@YgAWiAsMyg@w@wCOk@Ok@Ok@Oe@Me@Oe@Oe@Oe@CIK[Oc@AAOa@Oc@Se@Se@Se@Ue@Se@Uc@Uc@ACS]KQIQOUGKU_@Wa@U[ACW_@W]Y]W]Y]SUEE[[Y[ECSU[Y[YGESQ[W[U[U]U[SCOWOYQA?OIMG]Q]O]O]O_@M]M_@M_@M_@Kq@Us@QuDgAyh@oO_HqBwBm@{Bq@eA[qBk@wKaDOE_@M_@K_@M]M[M[M[MYOYMQKIE[Q[SYQ[SYU[UYUYUYWGGQQYWWWUWWW[_@EGSUOSW]W]W]U_@W_@U_@S]U_@CEO[Q]Q]Q]O[AAO_@Q]M[O]M]M_@M_@M_@K[K[I]K[I]Om@Mk@Mm@Om@Mo@Km@AEKe@c@}AMq@Oq@Ic@_@qBEQOw@a@sBQw@a@sBACsAyG", + "płyćwia|rogów": "w_{{HevayB~A|Cd@~@b@|@dBfDdBhDzElJl@lAbNdX`DlGl@fA`EdIzBlEBFP\\`CvEzAvCZl@`@v@^t@Td@Td@R`@FNLVRd@Rb@Xr@N^N`@Tl@Rh@L`@Ph@Pj@Nf@Nf@Lf@Ld@H\\DPJ`@Hb@Lf@Jf@Hd@Ln@Jl@Jl@DZDVJp@Ht@Jp@Hv@Hr@Ft@D\\BXDp@Fx@Dt@Dr@Dt@Bt@Dv@@v@Bt@@t@@z@@r@?t@?t@?v@Av@Ax@At@Ar@CzACvAQrIY~NCvAm@j[CtAe@xU]pQMnHEnBCjAG`DI~DG|CA^IvDOnIChAAfAAl@Al@?l@?l@?n@?n@?j@?H@p@@n@@d@?N@t@Br@Bt@Dr@Br@Dh@@Z@J@J@LFx@Ft@Ft@Hr@Fp@Jv@Hp@Jr@Jr@Jr@BHHf@Lp@Lp@Jj@Lj@@DJb@Lh@Lb@H\\HZNf@Lf@Nd@Nf@JXDJNd@Pd@Pd@Pd@Rd@LZDFPb@Td@Td@Vd@Td@HLLTT`@Xb@V`@V^V^X`@V\\Z^X\\ZZRVTTTRRT\\XFFRP\\XZVZT\\TZR\\RZR^R\\P\\PNDNH^N\\L^L^L\\J`@H`@J\\FB@H@b@HF@VDHBRB~@NNBlDf@|ATvARr@L~^nFnEn@xCb@dP`CbNpBnHfAt@JhFt@xNvBfJrAl[tEF@hJrAnFv@t@LtWvDD@F@\\DTDpDf@lARH@nBX|RrCfJtAhMhBt@Jv@LzAT`IhAhIlA\\DxYhEnC`@v@Vn@JF@l@Hp@Lp@L^JB?ZH^J\\JB?^L^NPFLF`@N\\P^P^P^RTNNJFBDBPJVPZV^VRNFFf@`@XVVVTTZZXX^`@PTPTRVTVRXX`@X^JPd@p@d@r@n@bAhAfBdA`BzK~Pl@n@pSv[t@jArEhHXd@vCpExA|BpArBrAtBjAhBfGpJh@x@T\\RZd@r@lAnBHLb@p@hAfBrBbDb@n@pDxFbBjCNTnBzC^l@", + "koluszki|rogów": "{ryzHe_~wB]Qg@YUMSKwBoAoAs@SMcB_As@c@i@YcEaCaB_AiEaCkEeCSMuAu@kGoDu@a@qF_D_B}@}A{@aCuAc@WwAy@mAq@cAm@_Ai@WOe@WcBaAg@YEC}b@mVe`@uTo@k@y@c@GEe@WeEaCqI{EqMqHs@a@mDoBoI{E}@i@OICAsI}EcE_CkIyEeK{Fs@c@mHcEa@WiDmBu@a@s@c@c@Wa@Wc@YGCWSa@W_@Ya@Y_@[EC[Wc@_@EEIGQOYY[Y[[[[_@_@]_@]_@]a@]a@]c@[a@]c@[c@[c@[e@Yc@i@w@i@y@wHsLqG_Kk@}@wJiOsGaK_D_FeF_Io@cAe@u@i@y@me@yt@{IeNk@{@k@}@a@o@c@o@oCgEa@o@e@s@g@u@]k@uBcD_MqRc@s@gFcIcCyDqHiLcNcT", + "koluszki|rokiciny": "{ryzHe_~wB\\P\\PZNZNPHVJr@Zr@Xh@R~An@VJ`A`@zGlCXJXJf@Pf@Nd@Lv@Tl@Nh@Nd@LhAZ`@JFBLDVHVHVHTJd@Pb@PnDvA`@PhAb@`Bn@f@RlCfAfU`J`@P^L\\Nh@Pf@Rh@R|@Z|@Zl@Tf@Rd@Pt@Xt@X|@^|@\\z@\\z@^l@Xl@Vl@Vh@Vl@Vj@TZNn@VjCdAhDtApAf@`LnENHxj@zTp@XjMbFlAf@hBf@pPzG`c@|Prn@rVFBrAh@dBr@ji@fTzDzAlDvAdM`FzH|CzClAnAd@jAf@dG~BlEfBtAj@pAf@vPzGf_@`O`C~@", + "baby|rokiciny": "y`qyHm`jwBsp@mWwHwCYMcE_B}D}Ayu@}YaE_BcE}Aq@Wm@Uq@Uq@So@Qo@Ms@Mo@K_@E_@E[Cw@Em@Aq@Aq@@u@Bm@Ba@DWBSBS@s@Jo@Lq@Nq@Pm@Po@Vk@Rg@Rub@pQuv@~[o@Vs@Xo@Ro@Ry@To@Ni@He@Ha@D}@Hs@Do@Bq@?o@?q@Ao@Es@Gm@Gu@Mk@Km@Mm@Oa@O[Ig@Qa@Ow@Ym@WuNsFOGiEaB}CkA[KmDuAgDoAcE_BwFyBwAg@wHuCy@o@gf@_RwBy@cC_Am@Wi@Uo@[g@Ww@c@w@c@}@k@o@c@}@m@u@i@{@q@s@k@s@m@o@k@o@o@m@m@s@s@e@i@yOwPmI_Joc@qe@sLkMqAwAqAwAe[y\\uJiKwFgG{A_BoW_Ymm@ep@KMa@_@o@q@c@a@s@q@w@q@y@o@w@k@w@k@w@g@}@k@u@a@k@[o@[_FqBiBq@kGeCyEiBgEaBik@uToHsCmXoKiJsDGCcFmBqGgCQI", + "baby|piotrków trybunalski": "y`qyHm`jwBZLbC`A`@NpEfBhDpAt@XnC`AnAd@z@Zx@ZfBp@vLvEj@Rl@VxqAlg@xk@|TjBr@jAd@dFnBd@PrKfElAf@bI|CfCbAn@Tl@TfA\\x@Tv@T~@T|@N|@Nf@HPBn@Hh@Fj@DzCVpo@nFtBRfdDnXJ@N@`MfAbDXrZdCbBNdBN|s@tGjZpCrGl@xYlC|W`CnIv@vP|Ah]~CF@D?fZnCpSlB`Hn@^D~BRfBP^Dl@F`@DhK`A", + "piotrków trybunalski towarowy|rozprza": "{axxHqtcwBpDZd@FJ@J@vIv@v@FL@bBPp@DxCXlFXxBPdAJlCV|o@`GzKbAP@hCV^BfCTtFh@zJ~@pEb@L@pE`@|v@dHtTpBrEb@fCTjD\\tDZzBRnALjCVp@FlCTvBRpW`CbVvBzNpAxD\\xEb@hEb@~SlBlGl@hRdBb[rCzv@dH|v@dHtCXnc@|DbBPrBPzAP\\Dv@Ln@J^HXDx@Px@T|@Tx@Vx@Vx@Xx@\\t@Z~@b@r@\\z@d@d@Xl@\\p@`@p@d@nI|FZT|B`BzIhGxB|A~AfAbBlAbEtCbJpG", + "warszawa gołąbki|warszawa włochy": "w{s}Hsmi~B_@sGc@_HA[k@aJEq@Eq@IsAGq@Gq@Gm@Ek@Iq@Iq@Ge@UwASuAk@wDyAoJMw@E_@Ig@Gi@Gg@Ee@Gg@Ei@?GC_@Ek@Cg@Ck@Am@Ae@Ae@?OAW?m@?a@?a@@]?_@@i@Bi@@e@Bg@Bi@Dk@Fo@B[B[J}@L}@D[F]DYD[FYJe@He@Jc@Lc@Ja@Ja@Pi@Pk@fKs\\hB}FzBkHxBcHrGySzEqORo@n@qBNg@BKHUFUBKH]Ha@F[He@Fc@F_@F_@Da@Fg@Ba@D]Be@Ba@B]@a@@a@@_@@Y?[@c@Ae@?e@Ae@A_@Cc@Aa@C_@Ec@E_@Ee@E]E]Ie@G[EYMq@Om@[yAUkAQs@aAmEsAcGAIk@iCc@qB_@{As@_D_@uA[mA[kAqAwEOi@Om@I]K]Ia@J]Mc@Kg@I]sAaGaAiEMi@YmA\\M[sA", + "bednary|warszawa gołąbki": "}y_}Hm|myBc@eCc@eCgAiGUkAWoAUoAWoAmAkGMs@Q]mBsKs@eEqAoHg@uCeA_GSiAIa@c@cCg@oC}@eFSgAeIkd@UmAUmAMm@Kk@S_AQs@Oq@Qq@YgA[oAwAwFqOmm@]sAQo@iAoE{FaUw@{CWgAq@iCy@cDq@iCWcAoG}VqEiQOo@kCcK[oAsD{NoByH[mAWcA[iAQm@Om@Qm@Qk@So@Sm@Oc@CICGM_@O_@GQKYSi@Ui@Sg@Wi@Sg@Ue@Se@Ue@{EgKu@aBsD_ImC_Gc@_Ag@gAmAgC?A_CaFWk@?AkAeCcKqTwByEiAaCg@eAQa@sAsCkEmJuFsLu@aB_AoB]u@c@}@Ue@Uc@Qa@CCUa@Wi@Yg@KQMSS]S]Ya@W_@W_@U[W[ACY]W]WYWY[][[]][YYW][[UYWQMMKm@e@m@e@u@i@q@g@oByAaD_CaDaCe@]MK{JoHyFgE{EmDIGgIeGqEgDoDmCWQ]W[UcAw@i@a@[W]UUSIG]Y[YOMMM[Y[Y[[Y[[[AAWYUWUYSUSWOSOSGGOSU]GGQYQWGIYc@Ye@Ye@OUKQYg@[k@[k@c@u@EI[m@GICEsAcCaCmEgFkJqEkI[k@We@CEuCmFiAsBa@u@c@w@EGyN{WUa@Q]aHgMgBaDg@_Ag@}@eDeGMUOWiL}S_@q@eBaDoCaFQ[cB}Co@iAg@aAi@aAuAeCm@iAkEaICCcCsEoDsGsAcCcGyKiE}HeG{KqCgFqBsDg@_Ac@u@c@w@U_@Ua@Wa@W_@Wa@U]QUACUWEGEEGKGIWYWYWYY[YYYY[WYW[W[W[U[Wa@Y_LeI{@o@aHaFaHcFiE}CgCiBgAw@aGiEGG}C{BaD_CGE{CyBm@c@]W_@W]UYSGCYSYQYOYQ[O]OWMWMOGa@Oa@O_@M[K]MgRaGECeBi@_@K_@M_@Mk@Uo@Wu@]g@Wk@_@k@]sAcAaA{@EE_Ay@kBeBkCeCuHgHs@s@u@y@s@y@q@{@g@u@U]Wa@a@o@c@{@a@s@_@u@{@mB_@aA_@aA]aA[cAy@oCaAcD[aAI[sAuECIwAcFuAmFgCyIoCcJeAmDuAiEaCiHsAcEaAeDi@eBa@sAm@sB[gAUu@Su@Qq@Mo@Qy@Mw@QiAOeAOyAKyAI_BEyACsAAoA@sA@oAF_BFyAH{AJ{An@qJV}DHeCFw@vB{[tKkaBnBqY`@oGjGw_ArCwb@NiCJ}BFmAD}AFaBFyBD_CFmCjAcl@nDkgBp@s\\`Bex@DwAHiEL_GB{@?MD{AF{ADoAHgBJaCL{Bz@}OfGsiAlDkp@jB}]l@qKzDut@@I`HwpA\\kGnBy^FsAdFe`AlAwTFgA\\oGTgExDws@pOcuCtFmdAn@oLlOcsCvAyWpB{^fBo\\dC_d@`AwQdBo[pB__@\\_Hb@sH?M@IlBy]zA}Xf@gJhAaTv@oNl@}K^eH`Coc@tCuh@ToELcCFgAF{AFsADoADqAD}A@cAB_B?kA@_B?yA?aBAcBY_k@?SEiJ?OEcHC}EA{CGiJEuJYci@AeAAsCw@kfBGwLEyJA_@?M?SIkRG_LAaAOi^GmM?MEqHGiMGgMCeACiAEmAEgAMeCKoAKoAMyAOmAOqAQsAIg@QcASiAa@uBc@mBe@sByByI_@}AsAmFEOwJy`@oNkk@kKub@q@mCwCwLwGeXm@iCa@uBUuAQmAMcAKoAGeAGiAGqACmAAqAA{D?gFA{_@A}J@_BBwCBcBF}AHaBd@_K`@oIDoBBwAB{A?eB?{ACwACmBGsBIgBKoBeAaPu@aLsBg[e@uHoBoZw@wLiAkPI}@QkBUiBq@iEq@kEwByMo@iEe@yDYiCWoCiBmX{Ems@iDqg@uBm[g@sHa@eG}@gNoAmRo@uJa@aGSeDGy@Ck@Ck@Es@C}@E}@C{@Cw@AaACaAAaA?{@?c@?Y?}@?_A?}@@oA?y@@y@BmDZg_@BoDNgQP{TDiF@qBDeFB{A?}AByA@yA@}ADwEBmCFiI@cA@eA@{A@yA@wA@wA@qEFoO@eB@eB?K?K?]@sB@}A@iB?UFcHFcH@}BXg]@aB@yAB{A@eA@eARgPFcGD}C@c@?MB}AJyI?K@qAB}A@uABwA@}BH_IV_[P{T?K^we@BiB@kBBeB@iB@sA@uAHcJ@q@@s@d@qj@DeG@uA?sA?w@?y@?w@Aw@Aw@Aw@Aw@Ai@AMCw@Cy@Ew@Cw@E{@Eu@AICi@C]a@}GWgE?AS}Ca@eHG_AGw@Ei@Gu@Gq@Gs@Gy@Ea@W_DOaBI}@OmBk@wGGu@Gw@Ek@G{@Gu@Es@C]", + "bednary|łowicz główny": "}y_}Hm|myB@D|@~EHd@RbAPhAPhAPjAJn@Hp@Hd@Hf@DVVtA@LBJH^Hd@nGh^X|AdFjYzCrPTrARhA|@`FhAfI~@hFdAdGrC~Op@tDpFjZ|Fb\\RfAX|AnAbHhEzUvChP\\hBRjARhAJn@Jn@Lv@Hj@@BHp@Jr@Hr@Hn@Fp@BTDXBZ@J@JBTBZDf@Dr@Fx@Bf@Bb@Bd@Bd@Bj@Bt@Bp@B~@@f@@j@@p@@p@?t@@r@BdBDvE@hB?b@BbBB~C@fAB|ABlAF~D@R@`ABxABvA@xADvD@dAFnIP~QDdF?h@BzB@z@@p@@p@@v@@v@Bv@Bn@Br@Bp@Dl@Dl@Bj@Dj@Dh@Fj@Dh@Fh@Fp@JlALjAhBjRVnC@FH|@JdAFd@Dd@Dl@Dj@Dl@Dh@Bh@Bf@Bj@Bj@Bh@@h@@h@@h@@h@?p@?r@?Z?h@?h@Aj@?\\Cn@An@Ch@Ah@Cj@CZA\\C^Cb@Ef@Eh@Eh@Eh@Gh@Gd@E^CVG`@E^Gb@Ib@Ih@Ib@I`@Kl@Kf@Kb@Kd@I^I\\Qn@K`@M^M`@Qj@Qh@Sh@Qd@GPKTSf@Uj@Wh@OXOXMVS\\QZWb@QXQXU^{@tAABILiBvCGJy@nA]j@]j@W^GJ]j@cCzDW^}@vAiAfBaBlCc[zf@U`@W^oApB_CxDk@~@g@t@e@t@U^}@vAcA~AcA~A}@xA", + "jackowice|łowicz główny": "ayi}HmvywBxAmKvAcK\\aCdCkQ`Fe^|CuTbAmHnA{IlA}I|CuTlFo_@nA_JpAgJpAcJnAeJf@sDb@sDPaBNcB^cEr@gIh@mGFy@dBqSjEah@nBgULaB`@wEV}CV{CxH{}@l@oHh@iGLsAp@eIn@aIdB}RnC}[j@{GHaA`BsRJoALoAJ}@Fq@Ho@Hu@@QFa@Hs@Ju@Jq@Ju@Fa@BOLq@F_@BQLq@Lo@Lq@Nq@Nq@Lm@Nm@Nm@H_@FQNq@Ro@Li@Pm@Pk@Po@L_@l@uBfCoInAiErAmEdB_GbDqKdEmNfH}Ut@eCtFaR^mApDwLbCgIz@sChCuIfEoNbAgD@G~DyMzDoMJ]bHsUtBcHrB}GrL{`@Rq@DMZcAX}@V}@Pi@Ne@FSFQNe@Na@Na@Rm@L]L]Ti@Rg@P_@Vk@Xm@JSRa@Ra@Ta@Vc@Vc@R]LSZe@Ze@Xa@T]V[HMBC\\c@\\a@V[VWTYNORSRSRSVUXWVUTQXUXSXUZSXQPKVQVOXOj@]l@[r@_@FCFE\\QhB}@`@S`@SxAu@lDuBPKB?ZQ^S^Uf@Yl@a@TOZU\\UDEXSXSXUz@q@XWRQTSTS^_@RSRSPQPQPQZ]Z_@p@u@X]PURUNSj@s@f@u@\\e@Ze@NSDIf@u@Xe@JOv@oAbA_BfAeB", + "jackowice|stara wieś": "ayi}HmvywBsAtJuAtJ{@fG{@fGwBnOgAxHIr@UvA{DzXeB~Lq@`Fs@xEg@dD_@zBYxAYxAs@`Dk@xBm@vB[bAMb@M\\y@bCyArDk@xAm@vAcNd\\qFpMoDpIaA~BsO|^gG~NeC~FaA~BaA~B]z@aAbCoAdD_@lAa@jAs@dCu@pCs@rCiBdIGVuHr\\oBrIwH|\\aFvTqBxIw@lDw@jDmAnFuFjV_DlNaDnNkBdIgDfOgLpg@aL~f@yG~YmMhk@cBnHcCtKqBbJuBfJuBtJw@~Ds@~DmExViDnRyDrT{DvT{DnTgOzz@uEnWkCbOaJvg@kFfZAFUlAk@~Ca@~Bc@`Ce@`Ca@hCa@dCSrASvAa@fDYlC[rDYvDWtDYvDgA|OEd@u@pKe@tG_@jFWpDUbDeA`OcAlNiArOEl@YbEOxBMvBSdEGtAE|AGlCAfAAnAExCAvCAvKGzKIfTAxCi@puAKn[Wfs@ErISrh@U`PG`BI`BKfBKbB{AjRqGby@qCx]cL`xAeBhT_IpbAyIbhAq@tIW~CcBfT_IvbAsBlWoHn_AgArNyAlRUdEOdEI`FCtE@~CH|EZdIZrFhAtSxA|UDn@`@rGp@lLTrDbAlPt@vL|Cvg@Fz@", + "kutno|stara wieś": "}sw}HkuauBWM@EjAyEbB{GDOH[Ja@R{@T}@VgAHYFWNs@Rw@Lm@Jc@BONm@^gBf@eCFUd@eCPaAJg@PcALm@Jo@Jo@Lm@Jo@Jq@F_@BSLs@Hg@?CJs@Js@Hm@Hu@Hs@Hq@Hs@Fq@De@@IDo@Do@@EBe@Ds@Ds@Bo@Bq@Bs@Bs@DqA@i@@i@@a@@c@ByADuCBo@D_DBqA@o@@c@?WHyEDaBv@wf@^eTBoABwA@wABwABwA@y@?y@@y@?y@@w@A}@?{@?{@Aw@Au@A{@C{@C}@Cw@Cu@Co@Ce@Ag@Eq@GwACa@Es@IuAIuAu@mLWsEGu@Eu@{H{oAw@{Li@yIgGubAAKsB}\\", + "krzewie|kutno": "ihy}Hgj_tBM_EMyDKqDOsE]sKC}@E}ACo@Cm@C_AC_AA}@CgACy@A{@C_BA}AAwAKoKKaKKcKWgYg@oi@CiBUeXQiQAaAYmZq@cu@CeBEsEa@yb@?o@CqCAiACiAGcHQwQOiP?a@]m^AgBY_[Ya[}@caAEwFCgBMmMc@qf@AyACwAAy@Ay@Au@Cy@A{@Cq@C{@Ey@Cs@Ey@E{@Eq@Ca@CWGy@Eo@G{@Iy@E]AOIu@Gu@Iu@OqAEa@Io@SiBY{Bu@wGQ_Bw@wGu@uGE]Iq@CYEWIw@Im@Go@Iw@Iu@Gs@Gm@Gu@CSCc@Ek@Cc@AOEq@Es@Es@Cu@Cs@Cq@Cu@Am@Cq@Au@?i@Aq@?s@?k@Au@@w@?o@@s@@u@@q@@}@Bq@Bq@Bs@Bs@Bo@Dq@Dq@Bk@@KFu@Du@Fm@Fu@Fq@Hq@Hy@Hk@Hk@Ho@Hq@Jq@Jo@Jq@F]BORmARoAn@yD|AiJlAeH`AcGRgABM|@mFrAgIJm@dAgGDWfAwGn@wD`FcZhA}G^yBf@wCb@qCFWnAuHp@cEjB}KLo@`B_K^wBDUn@wDbDwRBOxAyI`@aCN_AFYHe@Jm@Jk@Je@Jo@Lo@Lm@Lm@Lm@DWDQLm@Nm@No@RaALi@HYVcAVgARu@zAiG|BgJZmAZsADQHYJ_@Ja@J]DMFUTs@n@mBNc@FUFMNi@HWFSNi@BKLc@Jg@FQDQ?C", + "gałkówek|koluszki": "cqvzHqbnwBG}BIaDCaBCsB?gB?yA@iAD_CDsADsAH{AHqAFaAHkAXwC\\uC`@wC\\yB^uB|@mFxByM~@uF@IT_BR_BLgAJiAJgAHgAHgAFkAFgADgADgABgABmC@mA?kACsCGwCK}CQuCUcDMsAKiAsDya@Ea@OcBkD_`@yAoPOuAKuAMsAMsAMuAKsAMsAMsAMuAMuAMwAyFqo@AMAGAEAOCSEi@k@oGg@uFEk@Go@qCc[MsAMsAKgAMyAMuACUKaAM{Aq@sH}A_QeAsLEa@I}@I}@Gc@Ec@Gc@Ge@Ic@Ga@Ic@Ic@Ia@Ka@Ic@K_@Ka@Ma@K_@M_@M_@K[KYOa@O_@O[O]O[KQS_@S_@OYQYSWQWSYEGKMSWSUSS]]]]OMQMWSSOSMSMYQYOYOc@Se@Sa@QIEWKiBw@y@q@u@[u@[{Am@u@YmFwBkBu@OGe@a@WK_Bo@i@Ss@Ys@[WKQI[O[O]Q]Q", + "gałkówek|łódź andrzejów": "cqvzHqbnwBBhAl@rT`@xNNdGBxABlABxA@pAJh_@@dC?zAD|JBdK?|ABtIBlHFdRf@ljB@fDAbDE|CGtCMrCQxCUjCWjC]jCa@rCyAnJAB?DCJmAzHkA~HQnAQhAOjAKdAMjAKhAIfAKlAGjAGjAEhAElAClAAhAApAApA?tA?jA@rDJv`@@nD@tD@pD@tDJb`@@tDD|N@jD@hEDvODjM@tE@lA@nF@vA?nAArAAfAAlAChAGhBBl@?DMlCIjAIbAKfAI|@AFKbAMhAId@U`Ba@fCUfASbAi@fCo@nCmIz^_FjTOj@c@lBc@pBaA~Dw@vCgAtDo@pBw@zBcD`JaNp_@", + "łódź andrzejów|łódź widzew": "iuxzH_lvvB}@bCgCdHCHCHyJnX}@bCQf@oIrUo@dB_DvImE|L}KzZcAhCaAdCsE`KiEpJgBbE}@|B]~@[~@[bA[bAYbAWdAm@lCShASbAe@tCa@tCoDtXkDzW_ErZoFva@cBrMc@`DIv@WtBQ|AMrAGn@WfCYlDwAlQEp@y@`Kg@rGGn@QzBuAzQs@rIo@nIyA~Q_B`SYlDs@zIg@hG", + "łódź fabryczna|łódź widzew": "{f~zHatyuBF}CHaE@k@@i@Bk@@g@@e@Be@Ba@Dq@Dk@B[B[r@eJl@uHFq@D_AD_AHqCf@gQBo@HoEJ_GRuFHeCjCqbAh@kSBm@?OL{EZgLFyBHyBFgB@]F_CR}GRgIPwGDgBDgAFgCJeEJgELoDLuE@q@zAsk@XiKBuARkHHyBDsAFoAJyBJ_B`@uFVkDFo@pAmPFo@l@uH", + "mikołajów|żakowice południowe": "qarzHoafxBOVc@|@w@vAaApBq@vAo@xAWl@Wl@k@~AsAjEiAvEaAvEy@vFo@|FcB~P}JtbA{AfOw@zF}@xFgB~IkBbIeEbOcJf\\sKd`@gF`RmFlR}AtFwAbFK^yAnFK^Uv@wQbp@Ux@Uz@Md@GTS|@Uz@S|@UbAS`ASbAQv@Ov@O|@Q~@O~@O~@O~@M~@O`Ak@dEMx@y@bG", + "gałkówek|żakowice południowe": "cqvzHqbnwBG}BIaDCaBCsB?gB?yA@iAD_CDsADsAH{AHqAFaAHkAXwC\\uC`@wC\\yB^uB|@mFxByM~@uF@IT_BR_BLgAJiAJgAHgAHgAFkAFgADgADgABgABmC@mA?kACsCGwCK}CQuCUcDMsAKiAsDya@Ea@BQFWm@qGyDcc@MuAMuAGw@Gy@CUCc@Gy@Ey@Ey@Ey@Cy@Ey@C_AAaAAq@Aw@Ay@?y@?{@?{@@}@?y@@w@By@B{@B{@B}@Dw@Dy@Dw@Dy@Fy@Fw@Hw@Fw@Hy@D[@KHw@Jy@PoAPqARyAn@sE", + "łódź marysin|łódź widzew": "}ed{Hk{|uBlAiFLg@fCwKtDwO^}AXaAV}@Pg@Ne@Z}@Pc@Na@N]L[\\u@Vm@Xi@\\o@Zm@~@{AfA}At@_A`@e@r@u@^_@f@c@pAeA\\WdAw@|L{Id@[`@WLILGPKPKNINGPKJEJEJERKHCb@QRG^MVIb@Kb@Kf@Kf@Id@Gt@Gr@Gp@Cl@?j@?x@@t@D|FR\\@V@t@B~@?\\An@Ap@Er@Gt@K`@I`@G^IbAYPEbBo@l@Wj@Yd@Yb@Wj@_@`@Yh@c@f@c@j@g@h@g@h@m@l@s@d@k@n@_A`@m@PWR_@Va@b@w@P]`@y@Zq@Zs@\\{@Vs@Pg@`@iAV}@X_Ah@wB^yA`AaE`A{DjA{EzAiGfBgHNm@V_Ax@iCVq@`@eA~@wBl@sA`@{@|@kBDIDIp@wAl@mAzGoNl@oAtAwCtAuCfCmFzHkPbAuBvCiG@CFKtBmEz@kB`@{@^_ANa@Nc@Nc@Ng@Je@Jc@VmARqAFg@Fi@PaBRkCr@oB", + "zgierz|łódź marysin": "g{l{HsepuBx@bAfAr@l@`@VNRJXNXJTHVJZHVDbANZBj@B|@?b@ATA\\Cf@G^Ej@MVGZK^M\\MZMVOXO^S\\WZU^[^[`@a@X[\\a@\\c@\\g@Xe@\\k@Zm@Zq@h@iA~@yBnBsE`A{BBEp@_BBGbGgNrEqKpFeMfAgCHOJYd@eAp@_Bn@yAh@kAvAeDb@cAl@wAN_@x@kBx@kBbA_Cb@eAlBoEjEaKb@_A|@uBd@eA`CuFBGbA_C`B{Dl@sAdAaCP]HQ@Cj@kAVg@@AZg@^q@PYLSj@y@Za@Za@^e@\\_@d@e@\\_@ZYt@q@tE_E|EaErLcK~@w@jB_Br@m@XWdC}Bj@k@TYf@k@f@q@b@o@RY^k@\\m@Vc@Ve@Ve@Tc@\\u@Zw@p@_BTq@Vs@X}@ZgAZiAXkAXmA`@gBxBmKd@qBb@oBT}@Nk@DMRs@ZeAVs@Tq@Tm@`@aATk@h@gA^u@`@w@Zg@Xe@^m@Xa@\\e@\\c@d@k@f@m@b@g@h@i@fAkAhCoCXYlEwEb@e@b@i@X]V]b@m@^m@j@_Ah@_A`@u@PYv@wA\\o@Xm@^w@~@yBNc@\\_Ap@uBTw@^uALi@Lk@jA}EpJka@", + "zgierz|zgierz północ": "g{l{HsepuBe@e@mCaCyCmCkSaRw@c@w@q@yAoA_Ay@_Ay@][u@q@_A{@SQy@w@a@_@g@e@c@_@YY][cA}@][]Ya@Wa@UOGSIa@Oe@Me@Ma@I_@Ga@Ec@Ce@Cg@AU@K?K?k@DWBWBq@Je@Jg@Lg@Pe@PYLYNs@b@q@d@q@f@qDnCwAfAEDqAdAWVYVe@d@g@h@e@j@e@l@e@n@c@p@a@l@SZOZOXQX_@v@MVKVs@|AWl@Q`@}CnHgC`GmHbQ[t@O`@IRUn@Wv@Up@Ut@Ut@St@S|@Op@Qt@Ov@Q|@Ox@Kp@OdAMhAMbAKbAI~@I~@IdAEbAG`AIdC{@`Y_@~LIvCAr@Cv@Ar@Ax@?x@?pBBbCBv@Bv@J~Cb@rLBp@\\bJDdABbABbA@fA@hA?~@?p@Aj@?j@C~@C`ACdACz@E~@G`AQvCAF]|EUvC{@lLq@nJ", + "zgierz kontrewers|zgierz północ": "{yp{H_l`uB?kACmAAiAAi@C{@EaAE_AEcAG}@QaCIu@Go@K}@M_AUeBKo@Ms@Mu@Ou@Qw@Qs@Sy@Qs@Uy@W{@Y{@Us@ACeA_DmGiReBiFiC{Ha@qAYy@Qk@Su@[kAQs@WkASaAQy@{B_M_@wBESSyAQ_BGk@Ec@IqAGgAAq@EcB?iA?cA@w@B_ADoAVoEXkElCw^Dm@`AuMjDue@PcCNmBHoAJkA", + "chociszew|zgierz kontrewers": "un|{HgbrtBzBg@zD{@vMuC~A]l@Mp@O~SwEhAUta@aJjCm@lDw@vA]j@Sh@SbAc@`Ae@TMJE^W~@m@r@k@r@m@p@o@p@q@p@w@p@y@n@}@n@_Aj@_Aj@eA`AoB^y@\\{@h@wAh@yAb@yAPm@Nm@^{A^aBToAToAVaBTcBNoALqANeBNiB@E\\kEj@gHj@iHxAqQ|@_L|@_Lj@iHXuC\\qC?AV_BZgB\\iB`@eBb@cBl@qBn@mB~AsEdB}Er@mBXw@J[JYdAkCVk@Vm@n@mA`@u@P[NUb@q@b@q@b@k@`@i@b@i@d@g@X[Z[Z[ZYRQv@m@h@_@j@_@vAw@n@[VMVKj@Sl@Sh@Oh@M~A[l@In@IlBWlAO`Dc@PCDAnGy@jC_@zDg@xASpEk@jHaA`AQhCo@TIZKXMd@Sd@UtBeA|BgAzBiApE{BzGgDzQaJzAw@vBeAl@]l@_@l@_@j@c@h@c@h@e@j@i@j@k@n@s@r@_A`@i@^k@\\i@b@q@Xi@b@w@Zo@\\u@b@_ABK^_Ad@mAL_@Pe@J[Z_Af@yArAaEh@cBf@cBPq@Nm@Nq@Lo@Li@Ji@|@mFjAoHN_ALy@L{@L_AJaAJ_AJcAFy@HaAHmAL_CNkCDy@Ba@Be@DaAB}@B_A@eA@{@?gAA{JA}E", + "chociszew|ozorków": "un|{HgbrtBg@JwAXw@Ny@Jo@Fe@Dc@BU@o@@o@@o@A_DQ_BKwBM}CYkFi@yLmAwAOoEc@cBS{JcAw^wDsAOyYyCsO_BiGo@aCUAAaAKaAIkBKi@AS?U?m@?m@Bg@Bg@D]B[B]F]Dy@N}@N_AP}@PeGfAaCd@w@LiATkB\\iEx@qAVaLrBaKjBQD{VpEyB^kBZyHvAiHtA", + "ozorków|łęczyca": "}ze|H{zqtBC@}AV{[dGwAVu@N{E|@oCl@mCl@uAZ}Af@_Bn@yAv@eBlAcJdHkHtFaq@`h@oTtPwDvCyAnAwApAqBrBmBzB}BzCyBbDW\\k@|@cA`BeC`E_CxDaHbLaHbL}JlPkHpLoCrEqCpE_MhSwFhJu@lAs@lAgBrC_A~AcA|Ai@v@i@t@k@p@UXIJMLUTWVo@n@m@f@q@f@SNaAp@gG|D}OfK_DtBoCfBaU~NwKfH{E~CuL|H_Ar@_Av@sBrB{AhBwAlBq@t@_RrUgElFsEzFkM`PiQzTeIbKiDhE", + "witonia|łęczyca": "q{i}Hc}stBhAzAjAzA~QlVr@~@rAhBhDpE~G~I|@nA|@lA~PvXjCfE|ItNtF~IdGxJjFlI~FpJdi@h{@@DnFtIzDhGj@x@j@v@xAlBbLvMnK`MRTtl@dr@fM`O~QfTB@xKlMbO`QxShVbAjAbAjAtAxAj@j@`@^JHx@t@z@r@vBfBhMlKFDnFnEdBxAfBxAnErDlErDDB~AtAr@j@r@j@bCpBhA`Ad@`@b@`@l@j@j@j@tAzAZ\\|@`A|@`AnUfWbK`LfBnBhBlBpE~ErEbFdBnBlBpB|BfCnApAf@d@\\ZLJ|@p@`@Xb@XfAl@~At@rBn@`@J^J~@P^F^D`@D\\Df@Bh@Bf@@h@?r@?t@AjBAtEGfLM~@A|JMj`@a@`EEvBCd@AhEEnGGhCCjCG^AfAGpBWvAWz@Sv@UXG~@_@`Aa@hAo@`Am@dAu@`A{@dAcAx@_A|DaFrBiCjFyG~AqB~GuI", + "kutno|witonia": "}sw}HkuauBjAyEDOxA}FLe@DSDSJ_@FY@IJe@Je@Je@?ANy@j@mCP}@Jm@DUNs@Ns@@CLk@Li@?EBGHa@Nk@Nk@Le@Le@La@@EJYL_@L_@Na@Pa@L[P]DMJSTc@f@_AFKFIP[HKHOBAHODGTYR[PSd@k@\\a@FI^e@LM`@e@dBuBTWNQX[X[TWVWVURQZURQTOTMTMPKDCXOZMRIJELEXITGXGVEXGZCXEXAZAV?T?D?T?X@^BXBXDXDZFXFVFVJZJVJTJXLZPVNVPVPTPVRVTPPNNVXVZNNRXRXRXNVV^T`@Zj@BDxAjCd@z@dCpENXhApBn@hAl@fATb@h@bADFP^BDRb@d@bAjAhCvCrG|GlObF~Kx@jB`F|K~EzKvBxEfB|DnEzJ\\v@\\v@^v@^t@b@x@d@x@b@r@`@n@BBbAtAdArAhC~CtEvFhBzB`AhA~@jAbCvCrAbBnGzHz@jAz@nAd@x@f@x@Xf@jIdOfJpPjJrPpFtJtBxDfJpPrGhLfCtEbAhBfAfB^n@`@l@`@n@b@n@lAbBlA|A@B~CdE~Yh`@tKpNjMvPvRjWrI`LnCpDbNtQdArAnCrDvBrCt@`AbHhJbC`Dh@r@~CdElE~FhB~BbBzB", + "kraków główny|kraków płaszów pzs kpa": "msrpHy|vxB`As@d@_@b@[b@[TO?Ab@UDCPIHEXKXK\\IXG\\Ed@E`AChDGhCCVA\\?^AR?ZBJBF?b@JVHVJJDJDNJLHPH`@RNFVJPFb@Ld@JNDPBFTj@AZAB?h@?~ACLAX?zBED?dAA~@AVAn@AR?TAJAh@C^ArAGZCZAh@Aj@AdFI`@?dEIf@A`@Ah@Eh@Gb@Eb@Id@Gd@Mb@Kb@Mf@Qf@Qf@Sf@Uj@[`@Uf@[b@Yd@]b@_@DC^]\\[Z[j@m@`@g@^e@`@g@`@m@dA_BvHeLDG|HoL\\i@n@_A`@m@Zc@b@m@bCsDtOuUj@{@\\YjBqCfBmCl@}@|A_CZe@DGZe@x@mAV_@@E|BgDHO\\e@j@{@^i@^g@\\e@`@e@^a@b@g@b@c@f@i@\\a@HGFITYNSPSRYRYLSHMjC}DjBoCVa@", + "warszawa praga wpt m|warszawa wschodnia": "cq~}Hayo_CP_AReAnBsKd@eCVqALq@BKJe@Lg@Ni@Pg@@AN_@N_@Rc@@CR_@T_@RYNQRWPSJKJI^]fA{@JIr@g@RM\\SXMVIVITGB?JCPCVA\\AV?Z@\\DZFPDFBD@PHXJZPRL^Z^Xb@b@bA`Ap@l@RTTTRXPXRXJPLTLVLVP`@?BBD@DFPJXHXNh@Nj@`@xAFVLd@Rt@V~@J^Nd@`@jAn@nBb@?Rd@Zt@pAW", + "katowice zawodzie|mysłowice": "k|vqHwthsBb@yBDoBT_GPyEPmET{DJoC\\aKVsHRmIFsCBaD?eD?sDE_GK{FSoGYoGg@yIo@cJaD}e@Y}DK{BQ}EOcDW{DyAeTg@_IEi@BiBSiBi@iEYsCm@{IUsDCu@IuAGoCCsC?_BBgDFeDP}DPyDPkEFwAHyAJoAJqALkANoALcANaAPaATmAViAR}@T{@tBoI^wAr@gCj@qBFOd@oAd@kAv@eBjA}Bl@iA~AuCP[p@mA\\m@pAuB`KaPlDoFvBcDvDyFbA{AnGoInBiC~B_Dv@wA`@i@JMX]^_@f@a@~@y@lAeAxA_B~AoBb@k@^i@tAyBn@gAf@aAb@{@`@_A`@_Ah@wAHUn@cB`BoDv@aBd@s@n@qAt@sA|BqDn@_A`@g@f@k@VSVSXQ|DcCpAy@rAsA", + "katowice|katowice tow. ktc": "ozvqHeuasBFcAV_D@CF_A@CQGo@b@WbBQpAALE`@Eb@Ez@E|@?HWjHAZKrCExAArAA|A@xA@f@BrA@PFhABVDt@I`@HnADr@TvCVnDVvDJlABd@@JDp@Br@BdA@`A?dAEvBC|@MdBK`AM|@Q`AQ~@[fA[~@e@jAiAzB}BzDqBfDyAdC_@n@e@|@MXQ`@Yt@Yx@m@pBu@~BYbAStA[tAgAxFc@zBm@jDwAzHeArF_ArEc@vB]~Ay@dEg@|BUjA]vAa@bBYtAKb@Mh@", + "kraków główny|sosnowiec maczki": "msrpHy|vxBSLOJQJy@`@]Py@\\m@X_@j@g@b@c@Rg@VUNe@ZYTYT[XSPUTGHMLSRUXCBW\\q@z@w@bAILs@z@ORGHg@p@i@r@W\\_@f@UZa@l@e@r@e@r@c@v@]n@S^U^c@|@_@v@a@~@IPUh@]|@_@`A{BhGo@hB_@bAWx@Sl@Wx@Sp@U~@Sz@Ol@Mr@Oz@ObAWbCKhAI`AG|@GbA[lGOxCItAEbA?JAPCx@EtACpAOdLGxDAp@?ZGnEE`DA`AErBCvBG~EChCEzBC|CItGUpQ?l@WdTYxUMnKUfS?JCrACdAClAEpAEnAe@|MCnAGxAClACnAClBAz@?T?jAAjAA|AArFA^?rBOx_@?lBA~A?rA?j@?j@@tA@pA?PBpA@Z@r@BrABnA@RLjFBt@JjEH`CNfGBv@Bx@JzEBt@JdE@^FvBDtA@lABzABnA@xA?rA?rA?L?x@A~AAhA?`@An@ClAClAClACp@AXEnAGtAGnAIvAIrAKrAIpAKnAMlAEb@Gl@MjAMrAOhACRM|@QpAQjAALO|@QdAUrAm@|CWnAS`ACHS~@On@On@YdA[nAQl@K\\Qn@]hA]hAYz@GN]bA_@fA_@`A_@~@]z@]v@]x@IRQ^[p@_@v@S`@GJ[p@_@r@[h@qChFyDdHc@x@i@`AmDrGcAhBy@zA_CfEYh@CDwSt_@uLrT?@c@v@e@z@e@z@i@|@e@t@c@r@QVU^SXSZg@r@mAfBiCtDcB`Ca@l@oFxHePnUiCtDiCrDEFw@hA_KfOc@n@oFvH}@rA}AvBm@|@a@l@k@z@e@v@i@z@c@x@a@t@a@t@]n@g@dA_@x@c@`Aa@|@]z@_@~@[z@a@fA[|@[`A]bAY~@]hA[hAAF[hA[nA[lAId@Oj@UhAWjAeAlFa@rB[|AGZm@`DkAbGKh@c@xBOp@aClMeAvFiAfGsEhVCNOv@kB`K[bBUhASlAMn@ETQlAQdAOdAQhAOfAE^Gf@OjAMhAMlAKhAKjAMxAMxAUbDg@fHEn@a@vFQnCKvAg@rHIjAOxBCd@_@zEIhAIrAk@lHKjA_AvMKvAItAIjAItAGvAGvAErAEzAErACvAAbA?PAxAAtA?zA?tA@vA@tABtABxADxA?HDjADrAFxABXDx@HxAHrADh@Dn@LxARdCj@lGPjB\\bEtAvO?@B~@Dj@L`BXlDZfFPdEL|DD`BBdB@`E@~DE`J?~B@pE@hDHxDNzD@X@PLtCVvDbAxLtGvv@XrD`@rEh@dGd@`GNdDHfCDlC@vEC|BEpBe@pPMhCS|DYhEAH[jDa@zDg@zDk@vDo@tDq@hDw@dDELe@dCWbA]lAaA~CeBhFwAjEiBtFsQti@eAhDaAlD{@nDeAzEs@tD[pBSjAi@`Eg@vEUtBc@tFUbEOnCaDzq@q@nNyB|e@Q`EM~DIfEG`E?rAA|@@nDHvLF|HDzDXvP@n@FdEDfC@`A?~@?`A?fEA~K?`@?fDA|AArA?rACrAAnAArACvACvA_@zSOlJEnACjACpAKrCGnCCdACjAE`DA\\AjBEdC?n@GfF?f@CfCAjA?pA?rA@rA@nADvABhADvAFhAFrAHnAJnAJnAJrANlANpAJ~@BNHn@DXz@xG^vDXtBhCdSNlAPvANpALpALpAJvAJrAJtAHpAHtAFrAFxADpADxADtABpA@j@?~@@`A@tA?xA?rAArAApACrAAxAEpAE|AEnAQjEaEzaAuAv\\w@tRG~AGlAGjAI|AIpAKrAKxAMjAEf@AJSpBQ~AOjAEXM`AQnASrASrAUnAWvAUlAWlA_@dB[rASv@U~@]lA]nAW|@[~@]jAc@pA_Vds@[`A]bA]hA[bAW`A]jAWfA]rAWfAYlAYrAUlAUpAUjAUrAStAQhAIl@Gh@QpAQxAOrAOzAObBmB~SKxAKlAKpAIvAIxAIrAG|ACf@Ab@CjAEhACnACxAApAAtAArA?pA?lP?|A?fn@?tp@?fI?vG?zA?bAA|AApAArACrACvACnAEvAGzAGpAGtAIrAGnAKvAKpAKpAKlAKjA_@dDKdAQrAQlAStAQpASjASjAUpAaNlu@QhAWrAQhASnAQnASpAOlAOnAmE~_@cCfTAJAJsCxVCVWrBcJ`x@oD`[qA`LUzBY`CoA~KIr@_A`IMjAK~@_@dDS`Bc@zDe@`Ec@lDy@vFObAShAQdAShAUjAS~@SdAWhAUfAU`ASx@uEbRm@hC}C~MkAfFsAxFCL_A~EGXa@dBcAnEi@tBu@vCs@vCu@|C}@vDsA~F_AbE{@pDiIl^}@~Ds@`Dc@zBETWtAOz@EVYbBKr@QnAM`AOjAOpAUnAMhAKnAMvAW~CcAfMKjAIfAGj@CZKhAKfAMhAOnAOjAS|AQhAOhAShASjAShASbAUhAYtAWhA[rAYdA]rA[bA]jA]hA]fAa@hA]`Aa@jAuR`i@KZwDjKmL|[q@fB_@bA_@dAy@`CoJ|WuB~F_E~KiBbFYt@Un@Ul@Wn@EL]x@e@dAa@~@c@~@c@~@c@z@gAvBmG|LsH~NiC~EcDnGsg@hbAMRyAtCqb@zy@}Ob[GLiAxB_@r@c@x@_@r@c@x@e@v@_@p@c@p@a@n@g@t@e@r@o@|@g@p@q@x@e@l@s@x@g@j@s@v@i@h@o@n@m@h@m@h@q@h@o@f@k@b@a@VUNOJQLq@b@m@^uG~Ds@b@q@^w@`@m@\\s@^}CxAqI`EaAd@OHA?oAl@q@\\m@ZQHCBi@V_@TULaB`Ao@^w@d@yFfDm@\\k@^q@b@i@\\kLdIOJyFvDye@n[aBfAwFtDaG|De@Zm@`@q@d@q@d@q@h@k@d@i@b@m@h@e@b@o@l@c@b@WXSRs@v@i@n@i@n@k@t@i@r@i@t@e@r@i@t@c@p@iHpKQTeA`BkOxUg@x@Y^OTi@v@i@v@GJ[b@e@n@mB|CaCdDmAbBa@n@c@n@]h@Yd@Q\\_@r@a@x@]t@_@z@[v@Wr@Yv@[~@W|@[`Am@xBQj@I\\e@`B[fA{@|COh@_AbDc@`BSt@Qx@Qt@S~@Q`AMv@In@EROhAMdA_BfN}A`Ns@dG]pC[lC}@`IGh@G^EVEVGXG`@In@Il@Kv@EZOr@E\\GXCXIp@_Er]y@hHkAzJYpAY|@g@lAc@x@i@v@c@f@g@b@q@b@q@Xu@ViBf@E@uBj@wF|AWHcIzB[HGBe@No@\\WP[VUTWXWZ[d@qAnBaBfCeAzA", + "dorota|sosnowiec maczki": "gz{qHstttB`C`Br@d@vE~C|@h@tAr@tAf@zAd@rFzAj@Rl@Td@Rb@R`@R`@V`@XXRDD^Z`@`@ZZ^b@X^\\d@Xd@Xf@n@nA^x@Zv@`@`@n@b@h@^|AhA`EzCj@b@v@h@p@f@r@d@n@b@t@f@pDbChErC`BfAf@\\j@\\TLVLXLVJVHVHVFXFn@JHBbBLfEt@d@Fb@Dv@Bp@?VAZCVCZEXGVGXI@?VKVKTKVMXQ^SlOmJ~@m@VQZUXWVUVYnAsAPUZc@j@{@", + "dorota|dąbrowa górnicza południowa": "gz{qHstttBaIoFq@e@oFqDuA}@yA{@c@WmAi@eBs@aA_@gA[qBg@mB_@_UgDCAe`@aG}AU}AYkA[YVyB[_BQQAs@Go@Em@C{@ASAw@?kHEkAA{GEmCAa@A{IE}MIoDCG?Q?", + "dąbrowa górnicza huta katowice|dąbrowa górnicza południowa": "q_frHwvptBv@[pBy@ZMlAg@pAi@l@Wl@[h@Yf@[d@Yb@]`@[^[f@g@d@g@BAV[X_@X_@T]n@_AVc@T]f@_AXi@Zq@Zo@Xq@Xo@HWL[Ts@Ne@Nc@Rq@Rs@Ru@Lm@Ps@Nu@Ls@Lu@N}@NeAPqAJ_AfEk_@r@kGVcCZmCTuBXeCXgCb@yDNqADYJ{@L}@Fc@\\uB`@mBd@aBn@kBp@cBt@yAn@gA|@oAz@cAZ[`@a@~@s@dAu@fAg@fAc@jAYZELC`@QhAInAC|WNfA@z@@^?L?F?nBBpCBP?tKF", + "dąbrowa górnicza huta katowice|dąbrowa górnicza ząbkowice": "q_frHwvptBgCbAeCbA_@NqBx@o@VgAb@k@T[L}@NEBe@Li@NEBc@JsA\\s@RK@aAV{@TgDv@I@YFeB`@s@Ps@NqBb@mB^sB`@}@N{@Ny@L{@L{@J{@Jy@H}@F[B{AJqAHgCLiBH]@[@Y?[?[?U?U?MAG?O?EAWAWAEAQAWCUCWCUCEAOCYE[G[GYGa@IEAOEKJsA[m@Ou@QeAWyA]qBe@WGqEgAiAWo@Og@Om@Oy@W_A]i@Qk@Ue@Q{@]aA]yAk@k@Wm@Ua@Q_@Qa@Q_@QWMWMUOWM_@SYOEEg@Ye@Ye@[e@[c@[c@[e@]k@a@GEs@i@QM}AiAa@[}@q@e@h@nAlAb@b@@@", + "myszków|zawiercie": "eutsHqq~tBnDcRrBwKtGq]zAaIHc@RcAfA}EFWlCuNd@eCtNkv@~D}StAoHBMd@_CVkAVmAT_AXeATy@X{@Vw@Vw@Zy@Xs@\\w@Zs@\\s@^s@^s@^o@b@q@^k@`@m@`@i@d@k@b@g@`@e@f@g@d@c@f@c@b@_@l@e@`@Yj@_@f@Yh@Yl@[f@Ul@Wn@W~SwHPUJE`@Ol@Uvt@aXvEcBvFuBnPcGfMqEpFoBrEcBzCiApBs@fE}AVIt[iL~Am@~GcCfE}AbDiAnLiEvEcBr@Yv@Yp@Yl@Wr@]n@Yr@_@r@a@FCj@]p@a@r@e@p@c@t@i@r@i@n@i@r@k@n@k@l@k@j@i@p@q@h@k@r@w@l@s@l@s@j@s@h@s@h@q@h@s@rOaT~B_DpC{DdE}FpAgB~@oAzJeNXa@fI_Lj@u@R[bKmNvQyVX_@fJkMjJoM`EwFt@cAh@u@h@y@^m@DGh@y@z@cAp@gAh@y@`@o@d@q@\\a@^e@\\_@XYZY\\YXUXSDAXS^SLGNGZQZKZKd@OPETEd@Kd@GFAb@El@EbBGn@Cr@CxBI|CKfBU\\A^AtBIbACl@Cj@Eb@Cb@CfBQ`@Cf@Eb@CrJc@N?lCMl@EjEQtIa@f@C~COfBG`Oq@j@CnAIjAEr@ChBK", + "myszków|rozprza": "cutsHqq~tBuBzKk@xCqA`HmBbKq@lDUdAUjAYrAWhAU`A]vA[jA]pA[lA]lA_@nA]hAa@pA[bAa@hA_@jAa@fA]`Ae@lAc@dAa@dAIP[v@c@`Ae@dAg@dAe@`Ae@bAg@~@uMnWEJiNlXc[|m@mA|Bc@x@c@x@g@z@k@`Ai@z@i@z@]h@OTg@t@m@x@g@r@m@v@g@r@m@r@k@r@k@n@o@r@g@f@a@`@GDOLq@n@m@f@q@h@q@f@iFzDWP{IvGs@f@m@d@q@b@q@b@c@VQLk@\\u@`@u@`@_QjJYPoYvOSJYPkQ~JGB}\\|QID[Pid@pVSHsDpBGBsC|A{EhCgAl@eVrMqJhFyDtB{Av@ob@jUeOdIcOdImFtCs@`@u@b@u@b@s@b@s@b@s@d@o@b@s@f@eBnAo@f@o@f@o@f@s@l@k@f@o@j@o@l@m@j@m@j@q@p@o@p@m@p@e@XIHoBxBy@|@EDe@j@SVk@p@k@v@[^_@h@_@f@g@p@m@|@uAnBeVr]ie@rq@sCdEk\\te@iFtHkElGeSvYiHbKaHdJ}@pA{@jA]h@sAnBaAvAe@r@c@p@mApBcBhCEHGHkEnGcFpHq@~@}MvRg]~f@{AzBQToAhByE~GaN|RgTh[oEnG{AxBiGrHiCnCiCjC_IfGeCdBgCxA}Az@}Av@sClAsCjAaCx@gCp@yDx@}Dt@k]pFiSbDcb@vGqNzBmKbBmZ|EqCb@gBXgA\\_a@rGwCd@E@y_@fG{_@hGym@xJ_d@jHgTjDmBZUDG@o@Lg@La@He@Li@Nw@Ro@Ro@TI@k@Rk@Rk@Pq@Xe@Rg@Ti@Vc@Tc@Tc@V{@f@]RaAh@aAj@mAt@}A`AuK~G{XbQeNrIGD{IrFe@X{DbCeBhAgAz@m@d@g@b@m@h@e@b@e@b@q@r@i@j@e@j@W\\_@h@a@h@]j@c@v@g@~@{@`BaAhByBfEwE~I{@jBe@fAa@fAk@hBa@|A[rAWjAqCpNgAfG}@rF{AxJg@|Cg@tD}@nGa@bDc@~CWjBWhBs@vESxAU~Aq@rEu@nEwArKMx@Mn@Mr@Mp@k@fC[tAMh@Qr@Oj@Ql@Oh@Sj@Sf@Qb@Wh@EFO\\U`@U^W`@W^W\\WZ[\\YXg@d@c@`@w@n@wAlAs@l@YTUPYRYPc@Tc@R[J[H_@Jc@Ha@De@De@Bi@?}BCmACgAAqGIgDEyFIeBAwACgLOaFGqACyCEa@?qDGg@A_@Cc@Ce@Ce@Go@Gi@IQC]Gg@Km@Oi@Mu@Sk@Qq@WaA[{Ai@oBq@o@Um@Wk@Ug@Wg@Wc@Ug@Ya@We@[a@Yk@c@c@]i@c@e@c@k@i@g@g@m@o@i@m@g@k@UYY]m@u@c@o@g@s@i@y@]g@MSe@u@e@y@e@{@i@cAa@w@e@_A_@}@e@cA_@_Ac@eA]_A_BeEEKCIgE_L_LaZGOcLgZ_AgCaAgCiA{CsBoFeCuGw@uBy@wBu@qB_@cAg@uAqBkFSi@EM]w@[w@]w@Yo@]s@_@s@_@q@_@m@a@o@c@m@a@m@g@o@a@g@c@g@c@c@g@g@e@e@g@c@e@a@m@c@c@[i@]g@[g@[k@YqAu@iGiD}L}G{b@aViAo@gm@u\\yDwBoC}AmBeA_Ai@wNaI}GwDoAs@i@[_@Wa@Y]Wa@]][_@_@[_@a@c@Ya@[a@]g@q@cA?A]i@]i@sAuB_@m@[i@[k@Wi@Yi@Wm@Yq@Sk@Yu@Uq@W}@Wy@U}@U}@WcAQy@UiAO{@QaAOcAOaAK_AMeAKaAOwAKaA}BaVE]uGuq@{D_a@uMutAAG_E{a@iB}QMuAOwA_@eDQwAMqAuAcNAOEg@oAgMaA}Jc@iEo@_HsDw_@y@qIcBiQEg@k@cGMmAKqAKuAKqAYkDMoAMsAw@kI[_DyBcUu@uHOyAMoAMwAOqAMkAQwAOsAQoA_CaRcCoRgBmNgCcSgLo}@Iq@mIkp@a@gDc@eDcDmW{Gyh@m@eFmFeb@gNggAa@cDc@eDIu@oCqTy@qGOeAMaAIi@EYO}@QcAO{@Mk@Ia@Oq@U_AU{@W}@U{@Y{@Wq@[{@Yw@]y@[s@[q@[o@_@u@_@q@a@s@]k@e@q@[e@EG_@e@_@e@c@k@c@e@a@c@c@c@g@e@g@c@e@_@GE_@Yi@_@e@Yg@[i@Yg@Wg@Si@Ui@Sc@Oe@Mc@Mg@Ki@Mg@KoGgAm@MkASqJaBsXyEeCc@gEu@sEw@}Ds@yFaAeBYaDk@sX{EsSmD}Ba@gVeEGA}ZoFkXyE_]_G}KmB[GaKgBo\\{FeTsDaRaDUEmM{Bw@Ow@Ow@Qs@Q[Ik@Og@M_@M]Ko@SSIUIa@Oi@Se@Si@UyBcAy@a@q@_@s@c@q@_@q@c@q@e@o@c@u@i@uNkKuOcLeBqAIEc]yV]WuGyEgE}CsCsBUQaHcFaSwNaYqS_D}BeCiBa@YwImGqByAcq@qf@mo@ee@u@i@iUqP_@YkWgRmA{@i[kUIGqMmJsDmCgGqEwDsC}d@{\\qp@}e@WUkq@sf@{\\qVmScOqSeOGEoXcSy@k@q@g@UQoA_Aw@i@i@a@o@c@k@_@k@_@q@_@o@]IEGC_@Qk@Wo@Wk@Ss@UKESGy@So@Ok@Ms@Mk@Im@Ig@Gm@EIAG?m@Cq@Cg@Ag@?e@?e@@{@@w@Bu@BiBFoADs@BI@I?gCJaI^qERyKh@qCNeOp@qPt@W@oI^iCLaCPi@D}@F_AFc@B_@Ba@@qJd@E?W@av@hDM?uKf@y@Dy@By@B{@?q@?u@?s@Ao@Cm@Ck@Cm@Gq@Ik@Im@Ko@Ko@Oq@So@Qs@Wq@Ue@Q[Om@Wy@]s@_@w@a@s@]AA}r@c_@cUuLuEcCsKwF_JwEoGgDu@a@u@a@s@c@m@a@u@i@i@c@q@i@i@e@o@m@k@m@i@k@k@q@m@u@g@q@k@y@g@s@g@y@e@w@k@cAa@u@g@eA_@{@e@eAa@aAa@gA_@eA[_AOe@Me@AC]kAYeAYcAUcAWiASeAUmAUmAUsASuAuEiZ}Ea[UsACOQ}@WsAUmAYsAYoA[uA[oA[qA]oA]mA_@sAe@_BW{@a@qA_@gAa@mAa@gAa@gAa@aAe@gA_@}@g@aAe@_Ai@_Ag@y@k@_Ai@{@q@}@g@u@m@u@k@u@[_@SUm@q@o@o@m@m@s@o@q@i@s@k@o@e@w@i@s@g@_@SkAw@s@c@u@c@q@_@q@]k@Wo@Wm@Uo@Uk@Qo@Qm@Oq@O_AQwM{Bkw@yMIAmCe@_Di@kF}@GAWEaBYmWgEoGiAcPqC}Ey@mJ}A}NeCq@Mm@K]GOEk@Mk@Oi@Qm@Si@Sg@Sk@Ui@Yq@_@k@]m@]g@_@k@c@k@e@g@e@i@g@e@g@g@i@c@g@c@k@e@m@]i@_@m@iAkBc@w@_@w@a@{@]y@_@y@]cAWo@Oe@Sk@Y{@Uw@U{@U{@Sy@?EEKMo@S{@QaAOu@SiASkAQiAU{AQmAaNe~@}CwS{M{}@kNu_AoC_RwC_SoAoI}@eGuI_l@{RsrAo@kEiQilAwIal@SuASoASmASmAESQy@SaASaAU_AYeAW_AY_AYaAYw@Yu@]{@Yq@_@w@AC[o@_@s@_@q@a@q@]m@e@s@_@k@c@k@a@i@e@i@c@e@e@e@g@a@k@e@e@]o@e@g@]gBkAo@c@m@a@q@g@g@_@k@g@i@e@k@k@e@i@]_@EISSW_@g@q@e@q@e@u@c@s@e@{@a@u@OYsAcC}AuCoA_C_D{F_CiEmBqDYg@sBuDe@w@]m@i@{@i@y@k@y@i@u@m@w@o@u@m@w@m@s@o@s@o@s@q@s@EGg@g@q@q@q@o@q@m@q@k@q@i@o@e@m@a@o@c@_Ak@gDuB}@k@aEiCyCiBiCcB{JmGo@a@_F_Dgd@oYkFgDal@c_@eEkCyQmLsD_CeEkCuSwMir@qc@iZoReMaIOIiHuEuGeEu@e@{@i@y@e@{@e@w@a@}@a@_Ac@{@]WMm@Uo@Ug@Qg@Qa@MICi@Qi@Mk@Om@Oe@Ke@KcAS}@QaAQ}@OsEw@q\\uFaLmB{@Os@Ou@Ow@Q}@UaAWw@WGAw@Yu@Ws@YcAa@gAg@y@a@o@]w@c@{@i@y@g@w@g@k@a@g@_@iPgLu@g@sE_Da@YgAs@eBkAcD{BOM_@WmFuDaD}B", + "gałkówek|rokiciny": "cqvzHqbnwBG}BIaDCaBCsB?gB?yA@iAD_CDsADsAH{AHqAFaAHkAXwC\\uC`@wC\\yB^uB|@mFxByM~@uF@IT_BR_BLgAJiAJgAHgAHgAFkAFgADgADgABgABmC@mA?kACsCGwCK}CQuCUcDMsAKiAsDya@Ea@BQMsAeD__@E_@yAoPMuAMuAMuAKsAMsAMsAKsAMuAMsAMwAMuAWsCwBcVu@iIs@gIAGAKAI?CEg@yAmPGk@{BaWcAaL_@gEO_BEg@Eg@Ca@QsDC_@Ca@C[Eg@Eg@[qDCa@Ec@Cg@Eo@A[Cg@AMA_@A_@?_@?_@?_@?_@@a@@a@@Y@_@B]B_@B]D]D]Da@F[D[F]H[F[H[HYH[JYJYJWJYLWLULULULSNSLSNQNQNONORQRQHIPKPMPIRKPIPGRGPGLCDAREPCRCPCTAP?R?R@R@J@RBRBRDRFRFZJXJt@Xt@XzB|@z@\\z@\\l@Xl@Xj@Vj@Vj@Xj@TTHTHB@TFXHdATRFNDRFhDtApAf@`LnENHxj@zTp@XjMbFlAf@hBf@pPzG`c@|Prn@rVFBrAh@dBr@ji@fTzDzAlDvAdM`FzH|CzClAnAd@jAf@dG~BlEfBtAj@pAf@vPzGf_@`O`C~@", + "łódź chojny|łódź widzew": "}quzHis~uB@ITiEJuBFwAH{AH{AJkCBkABkA?}@?{@?{@Cm@Ao@Cw@Cm@Eq@GcAIw@Iw@Gi@Ik@Gk@SkAOs@WoAOm@Ok@Qm@Ma@Us@Se@s@gBWe@_@w@Wa@]k@a@k@Y_@_@e@WYs@s@o@i@_@We@[YQo@]YMe@QWKUIME]IeAUeASkDk@o@MeCa@}@OwCg@_Eq@iAQ{AY{AUcCc@kCc@QC[GsAUyB_@{AWeBYk@KiEs@s@Kg@Go@Iy@GaBMoF[iBM_BKkCOiEW}CSwDUsDUkBKs@EqBMaBK_EWeDS}@Ge^wBw@Eu@Go@Gm@Ig@I[G[Gm@Oe@OYIg@Qc@Qm@Yk@Y]S]S[Se@[e@]]Y][OMc@a@a@c@[]UYWYc@k@c@m@a@o@c@q@]k@[m@[m@[o@_@}@_@{@Wo@Uq@]eA[cASs@Su@YgAWkAUcAScAOu@]iBWaBMy@My@Kw@Iy@I{@G{@E{@E{@Cy@C{@?}@?{@?{@@w@DoAF{ADu@As@TgEHmAKq@`@gFc@wGNg@Je@Jc@VmARqAFg@Fi@PaBRkCr@oB", + "retkinia|łódź chojny": "k`yzH_aouBMo@kAeGqAuGyBcLq@kDCcCMm@{A}Gq@yC[sA[{Au@sDw@aE[aBG_@COKq@K}@IaAC_@Cc@Ca@Aa@Aa@?e@A]?C?a@?Y?M@c@@c@@g@Ba@Bg@Bg@B]BW@QDa@D_@Fa@Fa@D_@F[FYFYBSHYHa@La@Ja@J_@JYL]L]LYJSHSHOHQLSLUBCNUNSNSPSNQJIJMJKLIPODCJIRMPKNIPGJGRIPGFCFA@?l@STITGRGFANCHCh@GFA@?FARCNC\\CTCl@GHA\\CNAPAPAXARA@?PA`@AnCKXATAVCb@C`@E^E^E^G|IsAh@I\\G\\I\\GVGRERGNEVITG`@M`@Q\\O\\MXMp@[bAe@VKPI@A\\OZOXKb@Q`@Q^Mx@YlCy@LE\\M`@O\\ORIPG\\QpEoBl@Y`@S^QTMHEXQLINIXSXSTQ\\Wf@e@t@s@f@k@`@g@t@}@p@}@p@{@r@}@bAqAPUvCwD~@kAl@w@p@}@r@}@f@s@BA\\i@d@s@Xg@\\q@Rc@Ra@Pc@N]L_@HWHWNe@Lc@Lg@Nk@Lm@Je@^oBX}A`AyFdB{JnAoHN{@Fc@RmAJ{@J{@B_@Hq@Ba@Bg@Du@Ba@Bg@BgA@y@@}@?Q?K?Y?s@Aw@CeAAc@Eo@Eu@E{@KkAKcAIw@M{@Ig@WwAYmAKe@K_@K_@Qk@IYm@cB[y@g@iA}@mBuCiGcD}G}B}Ee@eAc@aASc@Ws@KYY{@Oe@GSCIESGQI_@S_AYyAMq@Ko@Ky@Iw@KgAIcAAYEe@Cg@Ae@Cs@AeAAuAAy@@iA?m@By@@]Bw@Ba@Bg@Dc@Dg@JmAZwDJiAHsAJ}AJaBLmCr@_Nj@_Lz@cQFoAL{BDsADsB@}@@U@{@@w@?Y@[B_@T}E", + "retkinia|łódź lublinek": "k`yzH_aouB|@lE@JBHh@rCnB~J~C|On@bDtAbH|A`Iv@~DRdAdCjMj@tCjBnJrCxNBLBJdOhv@|CvOzCvOpD|QnDzQ~BjLP~@TbANl@\\pAXbAZdATp@b@jAFRVn@Rd@P`@HPFNb@~@Zn@Zj@Zj@d@t@Zf@d@r@`ApA|BbDj@t@Z`@f@r@pD`FNB|\\be@BB~AzBnAdBb@l@", + "pabianice|łódź lublinek": "cwhzHuz|tBg@kAYq@i@oAUk@a@{@cA_C_A_C}@yBy@uBe@gASm@Uk@k@}AgAwCcAqCsCeHgHqQSi@oBaFGMGMqBeFyFuNmA{CWk@Se@Ug@Sc@Ue@MWQYO[U]OWU[EGGISWMOOSSSOQQOOOQQMKQMOOQKQMOKQKOKMGIEIESIYMYM_@M[I]I]Ic@I[E_@E_@Eg@Ga@Eo@Ga|@aImTqBoRgBWC{Fi@oTqBgCU{Gy@UCm^eDwSoBw@GUC_@C}@Gm@Cw@Cu@Cq@Ay@?s@?w@@kQP_@?_@A_@Aa@A_@E]Ea@G_@G_@I_@M[Ka@O_@QQISKUM[S]U[Y[W]YYY[]Y[?AW[Y][e@]e@oCsDmAcBg@s@]e@yEuGcDqEaByB{AwB}CgEu@eAGG", + "dobroń|pabianice": "qzbzHc~ltBuCwLCMiDmNEUgKyb@i\\{tAEOuRwx@gRmw@iEoQ_@}Ae@mBS}@Sw@S{@YgAWcA[mAWaA]iA]kA{@uC}Nig@_N{d@IWkKi^mGmTkA_EIWq@}BaAcD[eA[eA]gA]aA_@eAa@eA_@eAkDuIgAqCaAeCeAiCw@oBq@eB", + "dobroń|kolumna": "qzbzHc~ltBjB|HdF~SlOdo@tId^Pv@|I`_@tPxr@VfAVjAVjAThAVvAP`A\\jBH`@lNtw@pAjH", + "kolumna|łask": "e``zHqedtBlA|GBHjDzRDRhB`KTrARnAVzAPjAPrAPrANnAPxANvALrANtAJtAvFdr@vBrWL`BJnAJrAHxAJvAFtAHxAFtAD|ADrADxABtABxABvAb@b[VtR@d@V`MB~ABjADzADtADzAFrAHtAHxAHvAJtA@LJhALtALvANrAPvANnATxAPlARnATrAh@hDrFl\\`EfVz@dFhFf[F`@lAhILr@Jt@Nz@Jz@Jr@H|@Hv@Hz@HbAFz@DbAD|@DfABz@@|@BdA?hA?~@?VAt@A~@ArAChACpAIhDCdAG`EEvAEpAGrBm@~POlEKpCg@dOWbHa@nL", + "borszewice|łask": "w`_zHspdsB\\iJh@{OjAy]rCoy@?AZ{IdBah@vAab@Bs@hBii@bAu\\By@d@qMn@oRjByi@lCcw@n@qRZoIBm@PeFNmERcG", + "borszewice|gajewniki": "w`_zHspdsBUfHuBrm@qBjl@yB`p@?TAXgEdoAG`BEnAEzAA^At@CzAArAAvAAzA?xA?xA?xA@vAB~A@rAf@~a@@p@HnG", + "gajewniki|zduńska wola": "_r_zHotzrBHbHT`Rp@`i@JvJFfDPbM@fAHlFHbGBtCTpR@t@VxR@r@R~OLjK@BDlEFjEFdEBbDHtF\\fZ@d@@h@", + "sieradz|zduńska wola": "ewbzHy}ipBJi@xC}NLo@dAiFdFoVNo@jLsj@^gBNs@Lu@Ls@Lm@PiAPoANiANsALkAJsAHiAJuA`@iG@ErEur@h@eIHiAJkAHiALmALiANmALeAPoAVaBTaBD]lKuu@xE{\\dCgQPgAPiALw@P}@Rw@Ry@Ru@Tw@Rm@To@N_@N]N]LYN[Ra@Ra@\\m@`AkBTa@nMeVla@cv@lDuGpEqILUnGaMfXkg@pBuD`@u@b@y@^u@Xm@Xq@Vk@Xu@Ts@Ru@Tu@Rw@VeAVgAXoAR{@z@sDPy@Pw@Nw@Nw@Ly@J{@Hu@J_AFw@FaAD{@D_A@{@B_A?{@@_A?cD?qE@qg@Bcx@Bky@?{A?yAAqACsAAqAEyAAk@AUg@iSEmBE{AI{C]sJCuAMiFq@eXW}Ka@sPIaEOsFGeCO{DI}BEeBQsGEgBM_DMsDKmCCq@GaAG{@Gw@Gg@Gk@Io@Ik@QkAMs@Os@Oq@Qm@K_@K_@]eA[}@Qa@[w@Wg@Sa@Wg@S]wAeCuAaC[k@_@s@Wc@]s@]s@Ys@[w@Ww@Y{@Uu@YaAw@wCOm@a@uA[kA[cAWs@Uq@i@qAIQYo@Yk@g@_A[k@i@aAcF{IgIiOgEqHk@cAi@cA[o@Wk@Yq@Wq@Uu@Us@Uw@Qu@Qy@Ow@Y{AY_BEU}H{d@s@cEs@_EeBeKwDuTUsAcHsa@c@mCSoAQmAQmAOoAOsAKmAKqAIqAGoAGsAGuACoACoAAuA?mA?yA@k@?i@BwAB_ABc@By@DcADgAHeAJeBFw@J_BNiBJuARwBN}A`@iEz@aJLqAJcAJ_AL}@L{@N{@Nw@Lg@Lg@Pq@Le@J]DKNe@Tm@Rk@Vk@\\s@Xk@NWLUZg@^k@Zc@`@i@hGyHlDkEjAyA`@k@Za@^k@\\m@p@oA\\u@Xu@Zw@Vw@X}@T_AR{@R{@P_ANaAL}@J_ALmAJoAFmADkABe@@i@@qAB_B?_B@}DD}JF}VNye@BaH?WZwcA@oE?oAAsA?IAgACuACqAEuAOgE_@iKiAc\\McDWsHi@}OG}AUsGUaHqAg^WyGWmHq@gRo@aRIiBGcBEcBE_BEsAAqAAqA?sA@uA@wAViRZgV`BqoAJqHb@y\\FmE@iA@{A@qA?qAAoAAsAC}ACaB_@mRcAsj@}Acz@[cQAUaA_i@k@_\\Y{NIoECaBEkB?y@Ak@?{@?oA@qA@oE@_BAiB?{ACmBc@y^CuBAKCqCUgR", + "łódź chojny|łódź dąbrowa pbs": "}quzHis~uB@IFaDVqERoEHsBBw@DuA@w@?c@?gAAoACgACu@E{@Ck@Ee@Es@Ee@Iy@Io@Io@O{@SmAMk@Oq@Qs@Mg@Qo@Ma@_@cAQe@c@cAO[Q_@[m@[g@[g@KQa@g@]c@Y]_@a@[Yg@e@e@]a@Y_@Sg@Y_@Qk@SIEWIUG]Ks@OeB[m@MqB[qASo@IMA}Da@gAOcDi@sDm@}AWeCc@", + "łódź dąbrowa pbs|łódź widzew": "ktwzHusavBiCc@i@KwAUqDs@qCo@QEiBa@_AS_BUgAO_@Es@G_COyBMwAKcEWaO{@oAImHe@sAIaAGo@CwBOkAIkCOeDS{@Gg^wBu@Eu@Go@Go@Ig@IYG[Go@Oe@O]Kc@Qc@Qm@Wk@Y]S]S[Sg@]e@]]Y][OOc@_@a@c@[]WYUYc@k@c@m@c@o@a@q@]m@]m@[m@[o@]w@]y@@OWo@Uq@]eA[cASs@Su@YgAWkAUcAScAOu@]iBWaBMy@My@Kw@Iy@I{@G{@E{@E{@Cy@C{@?}@?{@?{@@w@DoAF{ADu@As@TgEHmAKq@`@gFPeApAmPFo@l@uH", + "kraków główny kga|sosnowiec maczki": "mftpHk{txBSn@Wv@Wv@]pAOj@On@Op@Kn@Oz@O`AYbCKfAGbAGz@GdA]lGOxCGrAE`AANEpA?RCx@CrAOdLG|DKpH?J?d@E`CGzECtAKxH?BCxBEzCIvGC`CQ|Nm@ph@AjAMvKW~RA`BCfACjAEnAEnAe@|MErAErACrAChAEjD?TA`A?tAA|ACrF?^ArBEtOGbOAjB?`B?tA?h@?j@@rA@rA@P@lABpABrADnABrAHbCDrBFpBPfHBdAHvCTlILbFFvBBtABlAB|A@nA@xA@pA?tA?L?~@AxAAfACvAAjACjAEhACv@AXEnAGtAEjAInAGlAKxAKnAMxAKhAEd@Gj@MnAOzAOfAQvAQjAQjAALO~@EVKn@UnAOz@]dBUjAYnAS~@Ol@Mh@YfAWbA[fAYdA_@jA]fAY|@]dAc@jASl@]x@O`@]z@a@`Ae@dAe@bAa@z@a@x@i@bAYj@Q\\sChFuD|Gi@`Ae@z@qDvG{BbE_ChE[h@CD}@bBwQp\\wLvTA@ABc@v@a@t@e@z@g@z@e@t@c@t@QTU^UZSZg@r@mAdBiCtDcB`Ca@l@oFxHcJpMaE|FgCtDiCrDEFw@hAeK~Nc@n@oFvH}@rA}AvBm@|@a@l@k@z@e@v@i@z@c@x@a@t@a@t@]n@g@dA_@x@c@`Aa@|@]z@_@~@[z@a@fA[|@[`A]bAY~@]hA[hAAF[hA[nA[lAId@Oj@UhAWjAeAlFa@rB[|AGZm@`DkAbGKh@c@xBOp@aClMeAvFiAfGsEhVCNOv@kB`K[bBUhASlAMn@ETQlAQdAOdAQhAOfAE^Gf@OjAMhAMlAKhAKjAMxAMxAUbDg@fHEn@a@vFQnCKvAg@rHIjAOxBCd@_@zEIhAIrAk@lHKjA_AvMKvAItAIjAItAGvAGvAErAEzAErACvAAbA?PAxAAtA?zA?tA@vA@tABtABxADxA?HDjADrAFxABXDx@HxAHrADh@Dn@LxARdCj@lGPjB\\bEtAvO?@B~@Dj@L`BXlDZfFPdEL|DD`BBdB@`E@~DE`J?~B@pE@hDHxDNzD@X@PLtCVvDbAxLtGvv@XrD`@rEh@dGd@`GNdDHfCDlC@vEC|BEpBe@pPMhCS|DYhEAH[jDa@zDg@zDk@vDo@tDq@hDw@dDELe@dCWbA]lAaA~CeBhFwAjEiBtFsQti@eAhDaAlD{@nDeAzEs@tD[pBSjAi@`Eg@vEUtBc@tFUbEOnCaDzq@q@nNyB|e@Q`EM~DIfEG`E?rAA|@@nDHvLF|HDzDXvP@n@FdEDfC@`A?~@?`A?fEA~K?`@?fDA|AArA?rACrAAnAArACvACvA_@zSOlJEnACjACpAKrCGnCCdACjAE`DA\\AjBEdC?n@GfF?f@CfCAjA?pA?rA@rA@nADvABhADvAFhAFrAHnAJnAJnAJrANlANpAJ~@BNHn@DXz@xG^vDXtBhCdSNlAPvANpALpALpAJvAJrAJtAHpAHtAFrAFxADpADxADtABpA@j@?~@@`A@tA?xA?rAArAApACrAAxAEpAE|AEnAQjEaEzaAuAv\\w@tRG~AGlAGjAI|AIpAKrAKxAMjAEf@AJSpBQ~AOjAEXM`AQnASrASrAUnAWvAUlAWlA_@dB[rASv@U~@]lA]nAW|@[~@]jAc@pA_Vds@[`A]bA]hA[bAW`A]jAWfA]rAWfAYlAYrAUlAUpAUjAUrAStAQhAIl@Gh@QpAQxAOrAOzAObBmB~SKxAKlAKpAIvAIxAIrAG|ACf@Ab@CjAEhACnACxAApAAtAArA?pA?lP?|A?fn@?tp@?fI?vG?zA?bAA|AApAArACrACvACnAEvAGzAGpAGtAIrAGnAKvAKpAKpAKlAKjA_@dDKdAQrAQlAStAQpASjASjAUpAaNlu@QhAWrAQhASnAQnASpAOlAOnAmE~_@cCfTAJAJsCxVCVWrBcJ`x@oD`[qA`LUzBY`CoA~KIr@_A`IMjAK~@_@dDS`Bc@zDe@`Ec@lDy@vFObAShAQdAShAUjAS~@SdAWhAUfAU`ASx@uEbRm@hC}C~MkAfFsAxFCL_A~EGXa@dBcAnEi@tBu@vCs@vCu@|C}@vDsA~F_AbE{@pDiIl^}@~Ds@`Dc@zBETWtAOz@EVYbBKr@QnAM`AOjAOpAUnAMhAKnAMvAW~CcAfMKjAIfAGj@CZKhAKfAMhAOnAOjAS|AQhAOhAShASjAShASbAUhAYtAWhA[rAYdA]rA[bA]jA]hA]fAa@hA]`Aa@jAuR`i@KZwDjKmL|[q@fB_@bA_@dAy@`CoJ|WuB~F_E~KiBbFYt@Un@Ul@Wn@EL]x@e@dAa@~@c@~@c@~@c@z@gAvBmG|LsH~NiC~EcDnGsg@hbAMRyAtCqb@zy@}Ob[GLiAxB_@r@c@x@_@r@c@x@e@v@_@p@c@p@a@n@g@t@e@r@o@|@g@p@q@x@e@l@s@x@g@j@s@v@i@h@o@n@m@h@m@h@q@h@o@f@k@b@a@VUNOJQLq@b@m@^uG~Ds@b@q@^w@`@m@\\s@^}CxAqI`EaAd@OHA?oAl@q@\\m@ZQHCBi@V_@TULaB`Ao@^w@d@yFfDm@\\k@^q@b@i@\\kLdIOJyFvDye@n[aBfAwFtDaG|De@Zm@`@q@d@q@d@q@h@k@d@i@b@m@h@e@b@o@l@c@b@WXSRs@v@i@n@i@n@k@t@i@r@i@t@e@r@i@t@c@p@iHpKQTeA`BkOxUg@x@Y^OTi@v@i@v@GJ[b@e@n@mB|CaCdDmAbBa@n@c@n@]h@Yd@Q\\_@r@a@x@]t@_@z@[v@Wr@Yv@[~@W|@[`Am@xBQj@I\\e@`B[fA{@|COh@_AbDc@`BSt@Qx@Qt@S~@Q`AMv@In@EROhAMdA_BfN}A`Ns@dG]pC[lC}@`IGh@G^EVEVGXG`@In@Il@Kv@EZOr@E\\GXCXIp@_Er]y@hHkAzJYpAY|@g@lAc@x@i@v@c@f@g@b@q@b@q@Xu@ViBf@E@uBj@wF|AWHcIzB[HGBe@No@\\WP[VUTWXWZ[d@qAnBaBfCeAzA", + "kraków główny|kraków główny kga": "msrpHy|vxBSLOJQJy@`@]Py@\\m@X_@j@g@b@c@Rg@VUNe@ZYTYT[XSPUTGHMLSRUXCBW\\q@z@w@bAILs@z@I\\q@x@i@t@W\\_@h@UXa@l@c@p@w@pAq@hAS^S^c@|@_@v@a@|@MZQ`@]x@_@bAeB|EeAtC_@bA", + "łódź fabryczna|łódź niciarniana": "{f~zHatyuBF}CHaE@k@@i@Bk@@g@@e@Be@Ba@Dq@Dk@B[B[@mBj@wGTkCVkDFaAFoAB}@~@s]FeERaGH_CxDwvAB{@^yNFiDDiBDsC?SHkEFoCFoC", + "łódź niciarniana|łódź widzew": "_v}zHo`avBNaGDcAFoBDyAH{BTyFHoBBy@B{@P}ELmEF_CHO@q@zAsk@XiKBuARkHHyBDsAFoAJyBJ_B`@uFVkDFo@pAmPFo@l@uH", + "warszawa podskarbińska|warszawa wschodnia": "wn}}H_{r_CH`@Lp@Jf@Np@Nj@Rp@HXJ\\JZPf@Nf@hBvFvAlE~@rCHV^jA`@pAX`AXlA\\tAPz@Nr@Lp@Lt@RtAPlAl@tEL|@Hp@tArK`AnHe@tA", + "lipce reymontowskie|płyćwia": "aux{HsyuxBIs@Is@Gu@Iu@Gu@Ca@CYAOAK?IC[Cg@Es@Cu@E}@Aq@Cq@Aq@Aq@Aq@?q@?o@?q@?o@@m@?m@@m@BiA@iAPoIFuD@a@F}CH}DJoFDoBNoH\\oQb@yUDwAj@k[^uQNmIByAByAB{@@w@@y@?u@?u@?y@?q@As@Aw@Ay@As@Cy@Cu@Eu@Cu@Gu@Eu@Gw@Eq@CWE]Gw@Is@Iu@Ks@Is@Ko@EWCUKm@Km@Kk@Ki@Kg@Kg@Ke@Me@Ke@Om@Me@Oe@Oi@Qk@Qi@Oc@Qk@Uk@Oa@Qc@Wm@Qc@Ue@MWGOSa@Ue@Ug@a@w@a@w@Yk@{AuCIOqBqEQ]CG{BmEaEeIm@gAaDmGcNeXm@mA{EmJeBiDeBgDc@}@e@_A_B}C", + "lipce reymontowskie|rogów": "aux{HsyuxBDVDZHt@Lp@?DJl@Lr@Jp@Jd@@JLj@Lj@Lh@Lh@Jb@J\\HZNh@Nf@Nf@Nf@HVDJNd@Pd@Pd@Rd@Pd@NZBFPb@Td@Vd@Td@Td@HLLTVb@V`@V`@V`@X^X`@X\\X^X\\XZVVTVRRRR\\XFFRP\\X\\VZTZT\\TZR\\P\\R^P\\PNFNF^N^N\\L^J^J`@J`@J`@Ht@LVDF@RD~@L|GbAtARt@J~^pFhJrAbP`C|MnBtHhAt@JdVlDnG~@vARt[vEhJrAnFv@t@JdJrAjBXxAR?@pDf@RD^DF@F@l`@xFdJrA~B\\jIlAr@Jv@L`@F|JvAdJrAj^hFv@Ln@JF@l@Hp@Lp@L^JB?ZH^J\\JB?^L^NPFLF`@N\\P^P^P^RTNNJFBDBPJVPZV^VRNFFf@`@XVVVTTZZXX^`@PTPTRVTVRXX`@X^JPd@p@d@r@n@bAhAfBdA`BzK~Pl@n@pSv[t@jArEhHXd@vCpExA|BpArBrAtBjAhBfGpJh@x@T\\RZd@r@lAnBHLb@p@hAfBrBbDb@n@pDxFbBjCNTnBzC^l@", + "bedoń|łódź andrzejów": "{{vzHsk{vBKfAI|@AFKbAMhAId@U`Ba@fCUfASbAi@fCo@nCmIz^_FjTOj@c@lBc@pBaA~Dw@vCgAtDo@pBw@zBcD`JaNp_@", + "bedoń|justynów": "{{vzHsk{vBHcAHkALmC?ECm@FiBBiA@mA@gA@sA?oAAwAAoFAmAAuEEkMEwOAiEAkDE}NAuDKc`@AuDAqDAuDAoDKw`@AsD?kA?uA@qA@qA@iABmADmADiAFkAFkAJmAHgAJiALkAJeANkAPiAPoAjA_I", + "gałkówek|justynów": "cqvzHqbnwBBhAl@rT`@xNNdGBxABlABxA@pAJh_@@dC?zAD|JBdK?|ABtIBlHFdRf@ljB@fDAbDE|CGtCMrCQxCUjCWjC]jCa@rCyAnJAB?DCJmAzH", + "gałkówek|żakowice": "cqvzHqbnwBG}BIaDCaBCsB?gB?yA@iAD_CDsADsAH{AHqAFaAHkAXwC\\uC`@wC\\yB^uB|@mFxByM~@uF@IT_BR_BLgAJiAJgAHgAHgAFkAFgADgADgABgABmC@mA?kACsCGwCK}CQuCUcDMsAKiAsDya@Ea@OcBkD_`@yAoPOuAKuAMsAMsAMuAKsAMsAMsAMuAMuAMwAyFqo@AMAGAEAOCSEi@k@oG", + "koluszki|żakowice": "{ryzHe_~wB\\P\\PZNZNPHVJr@Zr@Xh@R~An@VJd@`@NFjBt@lFvBt@XzAl@t@Zt@Zx@p@hBv@VJHD`@Pd@Rb@RXNXNXPRLRLRNVRPLNL\\\\\\\\RRRTRVJLDFRXPVRVPXNXR^R^JPNZN\\NZN^N`@JXJZL^L^J^L`@J`@J^Hb@J`@H`@Hb@Hb@F`@Hb@Fd@Fb@Db@Fb@H|@H|@D`@dArL|A~Pp@rHLzAJ`ABTLtALxAJfALrALrApCb[Fn@Dj@f@tF", + "koluszki|wągry": "{ryzHe_~wB]Qg@YUMSKwBoAoAs@SMcB_As@c@i@YcEaCaB_AiEaCkEeCSMuAu@kGoDu@a@qF_D_B}@}A{@aCuAc@WwAy@mAq@cAm@_Ai@WOe@WcBaAg@YEC}b@mVe`@uTq@_@u@c@q@_@gEaCoI{EsMoHs@a@kDqBqI{EoAs@sI_FcE}BmIyEcK}Fu@c@kHcE}D{Bo@]m@_@_@S_@U_@U]S[U[S[U[U[U[W[W[WSQGGIGMMYUQQUUWWWWQS]]", + "rogów|wągry": "mmh{HoalxBbNbTpHhLbCxDfFbIb@r@~LpRtBbD\\j@f@t@d@r@`@n@nCfEb@n@`@n@j@|@j@z@zIdNle@xt@h@x@`@|@tGdK~C|E^l@rFrItJjOl@|@dQjXd@t@d@t@X^V`@X`@\\d@\\d@JNPRZ`@\\`@Z`@\\\\JLNP", + "przyłęk duży|rogów": "{~k{Hu}pxBLJNN\\\\\\\\\\^TVTXVZRVZ^X`@Xb@V\\T\\T\\RZzBlD|F`J`F|Hh@x@pSv[t@jArEhHXd@vCpExA|BpArBrAtBjAhBfGpJh@x@T\\RZd@r@lAnBHLb@p@hAfBrBbDb@n@pDxFbBjCNTnBzC^l@", + "krosnowa|przyłęk duży": "kip{HkerxBlARH@nBX|RrCfJtAhMhBt@Jv@LzAT`IhAhIlA\\DxYhEnC`@\\D~@N`ANp@Jp@N^H^H^J^JB@^L\\L^N^Nd@TXLZNb@VTLNJFBDDPJVP\\T\\V\\X\\X\\Z", + "krosnowa|lipce reymontowskie": "kip{HkerxBqDg@UE]EGAEAuWwDu@MoFw@iJsAGAm[uEgJsAyNwBiFu@u@KoHgAcNqBePaCyCc@oEo@__@oFs@MwAS}AUmDg@QD_AMSEGAWEu@Ma@Ia@Ka@K_@K_@K]M_@O_@OOGOG]Q_@Q]S]Q[S]U[U[U]W]YSQGG]YSSSSUWWWY[Y]Y_@Y]Ya@Y_@Wa@Wa@Wa@Wc@MUIMUe@Ue@We@Ue@Qc@CGO[Qe@Se@Qe@Qe@Oe@EKIWOg@Og@Og@Oi@I[K]Kc@Mi@Mi@Mk@Mk@AKKe@Kq@Ms@Km@?EMq@Iu@E[EW", + "maków|płyćwia": "m|_|HunjyBq@vHCT[lDMnAsBpUKdAKxBMrAMtAGr@Er@Gp@Et@Gp@Er@Cp@En@AXAVAp@Cp@Ap@Ap@Ap@Ar@?p@?p@?p@?p@@p@@r@@p@@p@Bp@@b@Bb@Bd@?N@VDp@Dn@Dp@Fn@Dp@@LD`@Fp@Hn@Fn@Hh@Fh@@LFZHj@Hh@Hj@Jh@Jj@FX@JLl@Lj@Lj@Nl@Lh@DL@HFRNj@HXFNNh@Ph@Nb@JZFPPf@Rf@Pf@Rd@DHLZRd@Tb@Td@HNHRXf@HNNVNXRZXb@V`@V^V^X\\V\\X\\XZXZXXXZXXXVZVZVXVZTZR\\TZR^TXNVN^P^P\\Nn@Xn@Xl@TnAf@xIlD|D~Ap@b@b]bNjKdE`@N`@P`@P^N^P\\P\\PZPXNVP\\TZRZTXVVR\\XZVXXXXVXXZXZVZX\\V\\V\\T\\V\\Vb@RZR\\JRNVb@v@b@z@h@bALVVThAxBTb@|@dB`E`ItAnCf@`Af@`ATb@|A|C|@fB@@FLrB`E", + "dąbrowice skierniewickie|maków": "of~{HqguyBEb@?NAt@?t@AT?\\At@Ct@?JAd@?@Ct@Cr@Cr@Et@Er@Er@Et@Gt@Gt@Ej@Ef@MrAObBuF~m@MtAu@nI{ArPEf@{AvPgAtLGl@qCb[yA`PuB~UMtAgAzLMrAsBhUWpCw@xIKhAE`@Gn@[fD[nD[lD[jDy@dJ_CrWw@tI", + "dąbrowice skierniewickie|skierniewice": "of~{HqguyB?s@?u@Au@Au@Au@?IAQ?KCy@C{@Cm@Ki@A]AWEq@Eo@Em@Eo@Em@Go@Gq@Go@Iq@Gq@Im@Io@Io@Km@Ko@Km@Km@Km@Km@GWEUMk@CMIa@Oo@Om@YgAWiAsMyg@w@wCOk@Ok@Ok@Oe@Me@Oe@Oe@Oe@CIK[Oc@AAOa@Oc@Se@Se@Se@Ue@Se@Uc@Uc@ACS]KQIQOUGKU_@Wa@U[ACW_@W]Y]W]Y]SUEE[[Y[ECSU[Y[YGESQ[W[U[U]U[SCOWOYQA?OIMG]Q]O]O]O_@M]M_@M_@M_@Kq@Us@QuDgAyh@oO_HqBwBm@{Bq@eA[qBk@wKaDOE_@M_@K_@M]M[M[M[MYOYMQKIE[Q[SYQ[SYU[UYUYUYWGGQQYWWWUWWW[_@EGSUOSW]W]W]U_@W_@U_@S]U_@CEO[Q]Q]Q]O[AAO_@Q]M[O]M]M_@M_@M_@K[K[I]K[I]Om@Mk@Mm@Om@Mo@Km@AEKe@c@}AMq@Oq@Ic@_@qBEQOw@a@sBQw@a@sBACsAyG", + "puszcza mariańska|skierniewice": "gof|Hcpa{BA^YnOEfCCbBEdDCxAy@|b@QpI_ChoASjK_Arg@InEGlCCjBAdBAnB?dB@lF@pEHx[@bEBrKDhR@rEF~O?JJpa@Rjd@Jh]DbQDrPHxV?pAB|AB~ADdBFtBFdBJnBJfBLfBNfBN`BPbBThBR|APpATvA\\lBd@fCjBtJrAdHdApF~@zEXrAJh@v@nFNr@DPHb@v@xDP`AlBzJP`APz@N|@N|@Lv@L~@Jv@Hv@Hl@Hr@Fr@BVHz@Fz@Fx@Fx@Dv@Dz@?FBb@@`@Br@Bj@@j@@n@@X@`@@|@?z@@`A?~@?DAp@?z@Ax@C|@A|@E~@Cx@ATCf@Ez@Ez@aAdRw@fO[xF}@`QYfFe@dJCXCh@Ef@AXC^Gp@En@Gn@Gl@Kz@Gj@Kx@In@Ih@Mt@Mt@EVG^GXG\\GZu@|DOx@Or@Kh@Kd@K^Mf@EPCLK`@Mb@Mb@Od@Od@Ut@_@jBUr@Of@Of@Qj@K^Kb@Md@I\\I`@I`@I^EZIh@Gb@Gd@E\\E\\E`@Ej@C^C`@?BCd@Cb@A`@Af@Ab@?d@?b@?j@?b@?F@f@@^@n@HfDN~FTnJLrFDfA\\`OBr@Bt@Br@B~@Dr@Br@Fx@Dv@Fp@Fx@Fv@Fl@Hx@Hx@Jv@Jr@Hr@Jp@Lt@Jr@Jl@Nt@Nt@jHf_@`C|L^hBv@`E`GrZ`A|E`A~EnAtG`BnIFTJn@Ln@Lp@Ln@Lp@l@hDjAzGLn@Jl@Ll@@FNv@P~@b@xB`@jBLp@@FJf@Jb@J`@Jd@Ld@Ld@\\vAd@fBH\\FVFVJ\\FXJf@Jd@Jf@r@rCJb@n@dD", + "koluszki|żakowice południowe": "{ryzHe_~wB\\P\\PZNZNPHVJr@Zr@Xh@R~An@VJ`A`@zGlCXJXJf@Pf@Nd@Lv@Tl@Nh@Nd@LhAZ`@JFBLDVHVHVHTJd@Pj@Eh@RzAl@LFD@HBTHTFRFRDRBJBJ@XBP@Z@L?D?PAB?TCRARETCRGRGRGHEHCNINGHEPIRMRMROZUZWzBaBf@]RMRMPKVKTKTINGNENCNETETETATCTAR?V?T@T@TBTBPBTBRFTFTFJDFBRJTHRLRJTNRPNJRPPPNPPRPRPTNRNTHNDHNVLVNXLVJZLZN`@L`@FPJ^H\\H\\H\\F^H^D\\F^D^F`@D`@Bd@D`@B`@B`@N~CD`AFfAR`EjCxj@D`AD`ADdA@b@Bb@@n@@l@?J@`@@t@?t@?v@?t@At@At@Ct@Cr@Cd@?NCb@Cd@El@Cd@Gx@CNEj@Gf@Ip@Ip@Ip@Mx@c@`DSvAs@fFEZEZCXEf@CZE\\In@Mx@y@bG", + "idzikowice|radzice pzs r31": "wa`yH{v~zBsFkKYk@iDsGg@_AyE_JoAaCEGuc@oz@aTca@oQ_]sf@c_AqNiX_EwHc@y@}BkEwLwU", + "łowicz główny|łowicz przedmieście": "_t_}HavxxB|@yAbA_BbA_B|@wAT_@d@u@|@DZIPYR[NULMDIDELORUPQROTQVONIVKPGTIREVERARAJAL?T@R@RBzCf@zAVTDPDRFRFXHLFTHTJTLRJZPRNJFHHNJHFHHh@b@b@d@b@h@`@j@^n@h@bARb@Pb@N`@HTFTPj@V~@R`AnAhGlAjGTfAH`@Jb@L`@L`@`@jA\\`AL`@Lb@R|@Jb@H`@Hf@BXF\\@HNjAFz@Fd@D`@DX", + "stare grudze|łowicz przedmieście": "{tt|Hs~mxBiAaA}SaRmHsGiOwMgIiHqUoSgJeI}CoCkE{DsB}AUQi@_@i@]sA}@aBaAwAu@aBw@mBw@_Bm@sBo@uBo@uDgAkDeAaBe@SGsDgAoCy@mJqCgHuBqEsAeC{@aBo@oAm@y@a@yAu@y@e@IGaBcAm@c@i@_@iA{@gA{@sDaDoBaBgGkF{DeDcDsCsBgBoAqAMMUY_@g@[e@U_@GGYi@OYEIUc@k@qAe@oAYy@y@}COq@Ou@Ic@SgAw@_GiF_`@iCoRyA}KCQoAiJ", + "domaniewice|stare grudze": "ygo|Hih~wBkDoNcDwMu@yCgRiv@qAoFwDkOy@eDmB}HoBaI}E_S{Jaa@{@mDK_@Mi@WeA[yAOw@Mu@OcAMcAKeAIeAGgAGaACaAA}@AgA?eA?s@ByC?o@BaC?_A?}@?m@?k@Am@Ai@Cq@Ak@Eo@Cm@I_AG}@K}@Ky@M_AQ_AUmAUiAs@{CAIaDqN_@}AcEyQcEwQeD{N_@{Ay@wDe@sBq@uCWkAWiAQu@Qs@a@iBcAsEkCgLiCgLcAsEcAqEwCoMkCeLOq@Qm@e@{A]iA_@eAaAeCgAaCu@uAqA{BiBiCyBgCiAgAeB{AaIeH", + "domaniewice|domaniewice centrum": "ygo|Hih~wBhNhk@|BjJ~@vDbAdEnAbFrCjLbB~G`B|Gl@bCb@nBPt@Lt@H\\DZLx@Jv@Jx@@HFp@F~@F~@Dz@H~BFrCDpCHxBLzBL|AP~ARtARrAPx@Pv@Pv@Rp@\\jAN`@Nd@f@pA~@|B", + "domaniewice centrum|kamień łowicki": "sqm|HerxwB`C`GtDdJn@~A`@bAtAdDx]x{@L\\|AvDt@jBt@hBl@pAl@pAh@jAl@jAr@rAr@nAtA~BzFtJ|BzD`CzDxEbI|]tl@rIvN~CjFxFrJvBnD", + "głowno północne|kamień łowicki": "cdg|Hk}jwBSu@]}A]}A]}A[_BY}AY}Aq@cEcByJG_@}AgJ{A_Jy@aF{B{M{A_J{A_JwD}TaA_G_@}Ba@{B_@_Ca@}BIe@WwAO_AS_AScAUaAKa@I_@K_@K_@YcA[aAc@sAo@cBa@cAe@eAa@{@a@w@m@gAi@_AcCaE", + "głowno|głowno północne": "qjc|HkbgwBiBc@}FsAqKeC{Bg@iSsEmBe@oBe@OCqA[eA[cAa@y@c@s@e@gA{@eAcAcAmAeA_Bo@kAcAoB[q@kCwF_FiKoBiEw@aB[q@MWMWaCeF}B}Ek@mAi@oAe@gAe@kAo@_Bi@{Ak@}Ae@yAGOQk@Wy@W}@Wy@i@oB]uAMg@", + "bratoszewice|głowno": "}f_|Hyl}vBWeASy@Sy@Sy@Oq@Ok@a@cBaA_EaA}Da@_BOo@Oo@YgAYeA[eAMa@Ma@[aA_@aA_@_Aa@_Aa@}@OYISIOQ[Q[e@w@c@u@g@u@o@aA[a@W]uF}HwCcEaGgI_GiIsMwQEGi@u@g@y@Y_@Yc@c@u@e@y@c@y@c@{@a@}@a@aA_@_A]cA]eA]eAYcAYeAMg@Mi@Kg@Mi@ScAQaAIc@Ii@QiAa@{C[_DKqAIsASqDm@sLyAgZy@uO[mG]mGOoCMyBU_CM_AM}@e@iCg@{B_@uAEKk@}Au@iBcCqEi@w@i@u@]e@UUIIe@c@g@_@c@Yg@We@SEAQG_@K_@I_AS", + "bratoszewice|stryków": "}f_|Hyl}vB~BtJtEjRjNrk@j@|B^zA\\|AVdARdAP|@BLPhAPfANjANlALjALlAJlAHnAHnAJxBNpFJtCJzBPxBJz@Hz@Lz@Nz@Nz@Px@Pv@Rv@Tx@Tt@Tp@Vp@Xr@Zp@Zh@Vh@x@rA`AnAv@z@FH`@^b@^dAv@hAl@^R`@PpUfJJD|CnAn@Zn@Zn@\\l@^j@`@l@d@tAjAx@x@d@f@VZLLb@j@d@l@jAbBjAbB`BbCr@`Ar@bAvB~CtE|GjBlCjBlCvGrJvB`D|CpE^l@\\n@Zj@Xn@Xp@Vp@Vr@Tp@Tv@Pt@Rv@Px@Nz@Nx@D^F\\D\\D\\Fl@Fl@Fp@JlANvBBj@LhBB`@~Bx]tBv[", + "stryków|swędów": "ixy{HyyqvB~@dNLhBJhBRdCpAzRLjBJlBLhBFbA@b@@R@LFvABnABnA@pA?pA?hAAdCG~BGdCEfBEhBw@d[u@vZALoBnw@?JaAf`@a@~OCpACrAApA?nA@h@?d@BlADdABb@Bd@HbAD`@Db@B\\D\\Jz@F^F^L|@Nt@Pt@Rz@Tx@Rt@Tr@Vp@Xp@Xp@Xj@^t@^n@^j@`@f@X`@Z\\Z\\\\ZjAdATTRNt@n@~CpCn@t@b@l@`@n@^r@^t@", + "glinnik|swędów": "oau{H}r~uBKcA[eCm@iF{AgMwAuLCMoBwPqBwP[kCWuBUqBWmBQeAQeAWqA[qAm@wBI[g@uAi@sASe@EIYm@g@y@g@w@g@q@i@q@]a@_@_@o@i@i@a@k@a@cAi@]O_@Qi@Qm@OWGYGs@KoAK_FQaBGgAM}@O{Ac@aAc@y@c@y@g@u@m@kAgA}BgC}AaBqF_GuB{Bi@m@g@q@a@m@_@m@c@w@Ym@Ym@Yq@Wo@Ws@Us@Su@Sw@Sw@Q{@Oy@My@M{@K}@K{@G}@I}@E}@Eu@Cw@CgAAeA?cA@aA@gABeAHwB@WD_BHwBD{@By@DsABsA@_A@aA?}@A_AC_AA_@Aa@E_AG}@C_@C_@I}@K}@K}@M{@Mw@Q{@Ow@Sy@Sw@IYKYI[KYUm@Sk@Si@Ug@_@w@", + "glinnik|glinnik wieś": "oau{H}r~uB|@tHTdBT~AJl@Hd@Jh@H`@T`APp@HXb@tAt@nB|A~Dn@`BDLb@tA\\jAHVNp@Pv@Nx@Jp@Lp@TfBj@vEThBThB\\tC\\pC", + "glinnik wieś|smardzew": "wit{H_b|uBRzANnARtAF\\FZLt@XnALj@Ld@Lf@Pj@ZdAbBrF`BnFX~@V`ADP@DFVNn@Nn@Lp@RjAPfAJj@Hj@TtA\\vBFZFZNz@Nn@Ll@Nj@Nh@Pl@Rj@Pf@Tj@\\x@\\t@LVNVZh@l@`Ap@|@f@l@h@j@`@^`@\\`@Zb@X\\RZPPHNH`@PlA`@n@Ln@J|@JP@P@b@@N?P@F?XAJ?HCP?f@E`@E^I^I`@I~E}A\\KZIXGXGLALC", + "smardzew|zgierz rudunki": "war{H_gyuBZEFAL?VCh@Cb@?X?j@@h@DVBVDn@Jh@Jh@PVHVHj@VTLVLj@\\v@j@t@p@j@j@j@n@RVPTd@p@l@bAj@dAP`@R`@Tj@LXRj@Rh@h@vAf@tAf@tAn@hBXt@Tt@Tx@Tx@Nl@Pz@P`ATtAJn@Fl@Hv@Hx@Fx@Fx@D|@B|@Bt@@v@@`A@`A?NBpBD~FLrN@zB@d@@vABzBB|BBxADzADzAFzADnAFpA@b@Dh@FnAFv@Dt@Dv@D\\Dn@BZDr@NdBH`AHbAFdAJbAH`AJbAJ|@L`AF`@F^N|@F^H`@H^H`@Ld@Jd@J`@Ld@JZJ\\J\\J\\N`@N`@P`@P`@", + "zgierz|zgierz rudunki": "g{l{HsepuBe@e@mCaCyCmCkSaRuAkAyBmB{BqBKI_EsDGE}@{@y@w@YWs@o@}@w@o@m@YWMKe@c@a@[a@]a@]a@[yAqAwAsAk@g@gGwFuI_IyBsBe@e@c@c@a@g@OQOS]g@_@k@[i@OUMUS_@CIMWSa@O_@", + "zgierz|łódź radogoszcz wschód": "g{l{HsepuBxApAf@d@l@`@VNRJXNXJTHVJZHVDbANZBj@B|@?b@ATA\\Cf@G^Ej@MVGZK^M\\MZMVOXO^S\\WZU^[^[`@a@X[\\a@\\c@\\g@Xe@\\k@Zm@Zq@h@iA~@yBnBsE`A{BBEp@_BBGbGgNrEqKpFeMfAgCHOJYd@eAp@_Bn@yAh@kAvAeDb@cAl@wAN_@x@kBx@kBbA_Cb@eAlBoEjEaKb@_A|@uBd@eA", + "łódź arturówek|łódź radogoszcz wschód": "kfg{HqawuBk@j@eC|BYVs@l@kB~A_Av@sLbK}E`EuE~Du@p@[X]^e@d@]^_@d@[`@[`@k@x@MRQX_@p@[f@A@Wf@k@jAABIPQ\\eA`Cm@rAaBzDcA~BCFaCtF", + "łódź arturówek|łódź warszawska": "kfg{HqawuBTYf@k@f@q@b@o@RY^k@\\m@Vc@Ve@Ve@Tc@\\u@Zw@p@_BTq@Vs@X}@ZgAZiAXkAXmA`@gBxBmKd@qBb@oBT}@Nk@DMRs@ZeAVs@Tq@Tm@`@aATk@h@gA^u@`@w@Zg@Xe@^m@Xa@\\e@\\c@d@k@f@m@b@g@h@i@fAkA", + "łódź marysin|łódź warszawska": "}ed{Hk{|uBqJja@kA|EMj@Mh@_@tAUv@q@tB]~@Ob@_AxB_@v@Yl@]n@w@vAQXa@t@i@~@k@~@_@l@c@l@W\\Y\\c@h@c@d@mEvEYXiCnC", + "łódź marysin|łódź stoki": "}ed{Hk{|uBlAiFLg@fCwKtDwO^}AXaAV}@Pg@Ne@Z}@Pc@Na@N]L[\\u@Vm@Xi@\\o@Zm@~@{AfA}At@_A`@e@r@u@^_@f@c@pAeA\\WdAw@|L{Id@[`@WLILGPKPKNINGPKJEJEJERKHCb@QRG^MVIb@Kb@Kf@Kf@Id@Gt@Gr@Gp@Cl@?j@?x@@t@D|FR\\@V@t@B~@?\\An@Ap@Er@Gt@K`@I`@G^IbAYPEbBo@l@Wj@Yd@Yb@Wj@_@`@Yh@c@f@c@j@g@h@g@h@m@l@s@d@k@n@_A`@m@PWR_@Va@b@w@P]`@y@Zq@Zs@\\{@Vs@Pg@`@iAV}@X_Ah@wB^yA`AaE", + "łódź stoki|łódź widzew": "wr_{HetavB`A{DjA{EzAiGfBgHNm@V_Ax@iCVq@`@eA~@wBl@sA`@{@|@kBDIDIp@wAl@mAzGoNl@oAtAwCtAuCfCmFzHkPbAuBvCiG@CFKtBmEz@kB`@{@^_ANa@Nc@Nc@Ng@Je@Jc@VmARqAFg@Fi@PaBRkCr@oB", + "słotwiny|żakowice południowe": "{wuzH_o`xB{@jBeBnD]hAg@fAe@`AGNKTQ`@M\\M\\KZKZwArEo@vBCJM^IZIZIXKb@I^I^I^G\\G`@G^If@E^E^In@Gj@Ed@?BEl@Ej@Cn@Ep@Ap@Cp@Ar@?p@?p@?r@@l@@d@@d@@b@Bd@FrAr@fORfE^jHD|@Dz@TbDDf@Bl@Dv@Dt@B\\@^@`@@Z@h@?^@XBb@Bp@FfAR`EjCxj@D`AD`ADdA@b@Bb@@n@@l@?J@`@@t@?t@?v@?t@At@At@Ct@Cr@Cd@?NCb@Cd@El@Cd@Gx@CNEj@Gf@Ip@Ip@Ip@Mx@c@`DSvAs@fFEZEZCXEf@CZE\\EVQpAy@bG", + "mikołajów|słotwiny": "qarzHoafxBs@tAuDnFcRdXaa@tk@q@`Ag@r@i@x@e@v@g@x@]p@a@v@a@x@sArC{BvECFw@bBeCfFaIpPyA|Cc@|@}BzEyGlN}CrGu@|AO\\w@~A", + "sędziszów towarowy|warszawa zachodnia peron 8": "cftsHomnyB}CcPuEyToD_QkDqP}@iEaCmLkBcJ_AqE{@yEeA{H{Dc`@cCyUq@sGwCgViCoSmByOi@iGqBk\\wB{]k@yI[}Fq@mJ_@aEc@cDm@qDy@yD_A}DkCmLaCmK}BqKwAuKoAoMSyBm@}Go@oGEc@YoB_@uEWuEIeF@cDBsA`@kVT}KBgEEqEg@{I]iDk@sD{CgMaAaEe@eBkEuPoCiIgBgDqBsC{A{AoCiBoAm@eBi@yB]a@AsACyBDgCl@gCx@eC|AiB|AkF`FwFbEsCfA{B`@sBLwAGwAGmDy@_Bu@yCuBqC}C_BeCiBeEaBuF{AsGkDuP}@oEmUehAyFoXs@qCk@qBg@wACIe@kAm@oAm@oA_D{Fk@eAUe@Se@Se@Si@a@kAa@oAYiAKe@Ic@]gBMw@OaASuBMyBmBmd@u@sRc@}Hs@sHCUkAsKuAgLeAoFqAcFoA}D_AaC_LmXmKiWeR{d@eB}EGOeBwF{AyFqA_GcAeF}@kF[oBkAuJm@mFo@cGGi@_AsIwNksA_@eD[cC]uB]cBa@_Bg@cBi@_By@kB}@eBoAqBuAeBgDqDiAmA_@a@WYcFoFaG_GsAuAiCqCkCsCeBoBuA}Ai@o@aCoCu@w@y@}@kAqAoAsAY[qA_Bo@}@k@_Ae@}@a@_Ac@gAa@kAIUQi@WcA}@aE}@gEeDyOWiBi@wCg@cD_@_DW{CUmDMgDGeEGkE?kCF_c@?iFCyEIwDOcDQqCWwC]uC_@kCc@cC]aB?Au@_De@aBc@sAcAwC}@sB}@oBy@yA{@yAuBcDqKePkAaBkAyAgBkBkAcAaAw@gBkAkBcAaC_AmA]iBa@{AWsBWsDa@gGy@YOceAyLgBSiBMwAGsEIsB@eJ\\kBCwBI{@I{@MqAWoA]_DiA}UaJsBs@oBi@wAWcBS{UwAk`@_C_BQ}AWwA_@mA_@kD{AgIoE{BwA_CmBaCeC{BwCoDsF_LaQiBiCyA_BuAoAsAcAoAu@qAm@i@Ug@QuAc@mHcB}Ai@iB{@eAs@q@i@{B}BcBgC_BaDkAaD{@cDe@{B[wBW{BOyBI{BMeCgAm^EuCAsCDqEJgEPmJHwEHyDLmELoENqEJoE@e@D_CHcDNcDNcCZcD\\iCPmARgA^sBZuAx@uDl@eCNs@xBwJl@wCd@yCf@wDTiCTyCN_DHaDDiDGmV?iA?kDBmCHoDP_DRyCXyC^wCb@yCh@sCv@kDtO{p@nCoLl@oCh@qC`@sC`@uCd@iEdAyIX}B^sBb@qBf@gBl@iBt@eBt@{AnAyBrAwBhAsBt@yAt@cBl@eBj@qBd@oB\\oBXwBT}BN{BHaCDaC?cBIyCK}BS_CWwB[wBc@wBg@mBk@gBq@gBw@aBw@sAaA{Ay@aAgAgAgAy@gAs@oAk@kAc@oBe@cLcBmIqAkEq@mEq@gBYmCUeCAwBLqERqFVy@Dso@zC{AFs@DsLf@kBDuBBcBIiBQkB]cBe@aBk@iBy@_BaA_BgAyAoAyAyAsAyAwAkBqAsBiAsBaAwBcAaC{@iCy@kCs@qCk@wCk@_D{@gFsCyPi@wCo@uCu@qCw@kCaAiCeAeCgAwBiAoBqAoBoAcBuA_ByAuA}AoAiBsAgN_KeBoAcA{@kAsAy@cA}@sAw@wAu@cBm@cB}@{Cq@cD_@wBUoBOmBM}BEuBA}BBsBNwDZeFPiCBe@VkDP}B\\sDRqCfAiPVgERmEPaDh@sIP_CNeCL}CHyD?gCCcCG_DOgEQwCU{CYiC_@uCe@qCi@oCm@mCq@aCi@aBOk@qH}UqPai@w@iCkXm{@mA_DqA{CqAqC}AuC}AcCaBaC}B{C{@}@UYmBmBohAiaAu@q@o@k@SSSSWWSUSUSSY]W[_D}DGG}AmBUYaAkAaKgMkM}Oa@g@a@g@g@s@_@i@]g@]m@[k@Ym@Ym@Yo@Ys@Uq@Us@Uu@WaAU}@s@yCw@iDSq@Qq@_@qA[eAe@qAc@mAa@aAe@gAa@{@c@y@e@{@g@y@g@w@k@{@e@m@g@m@k@q@i@m@k@i@k@i@k@c@i@c@q@e@m@a@o@_@m@[o@]y@_@y@]u@[uIuDGAqa@eQaAa@gAe@k@Se@Os@So@Os@Oo@Mu@Io@Gq@Gw@Co@Aq@?u@@u@B_GVeAD_AFo@Dk@Fs@Jm@Jm@LsDx@UF}EdAcATC@cJnB_Cf@c@HyATyBZcFn@_H|@cIbAi@Hq@Lc@H_@Jc@JoA^oF|AsA^_@J}FbBc@Ng@Rg@Rg@Vg@Va@Vg@\\c@Zg@d@_@\\c@b@_@b@SVWZW\\Yd@U\\c@r@gAjB}B`EGJ{@|AaBtCiAhBk@z@a@j@i@r@e@j@w@|@q@r@a@d@_@^]^c@d@c@d@_@Zc@`@a@Za@Ze@Xc@Vg@Vq@XYHe@NG@GBYFi@Je@Fi@Fe@@i@Bg@Ak@Ae@Ci@Ge@Ig@Ie@Mk@Qa@Og@Uc@Ug@Ya@We@_@a@[e@e@_@_@a@c@[c@a@i@[g@_@m@[k@[o@Yk@i@kAi@qAi@mAi@mAc@_A]s@_@s@Wa@s@kA_@m@qJ}Nc@q@_@k@_@o@_@q@MUGMe@}@aUid@wAwCa@y@[w@_@_A[y@[_AY_AUu@cHoVmAiEqJu\\uC_Kk@sBIWaG_Tm@yB[oAS_AACUgAWoAQeAOcAQsAOeAOuAKgAIkAKoAGsAGkAGsAUcFOiD}@wSCm@u@iPe@{KGqAIoAIsAKmAMsAKiAQoAOkASqAQgA{CcQSe@{K_o@[cBUmAUeAMk@I[Kc@Me@Uy@Ss@Sm@Ww@Uo@Qi@Yo@Um@Sg@[q@[q@c@{@_@s@e@w@c@q@QYOUe@o@e@o@i@o@g@m@k@o@mIkJ_A_AiA_A_@Ym@e@g@]c@Wa@We@Ue@Wo@Yi@Sk@U_A]}@[m@SqBcAgBo@uAg@}@[YKyCgAq@WeC}@mE_BqAe@kMuEcC}@_Cy@}DyA}Bw@s@YaBk@OGmBs@uSsH{NoFSGwCgAiC_AgE}AkE}A}EcBmBq@uAg@wDuA_DiAg@SsWmJq@Uq@Um@Om@Om@Mm@Km@Iu@Im@Eg@C]A[A_@?k@?e@@U?U@s@Fw@Fu@Jq@Js@Nq@Ps@Rq@To@Vq@X_CbAgAf@s@X_@P}CrA{RpI{O`HqKtEoAh@iH~CYLWLc@Tc@Tg@\\]Ve@\\]Za@`@]^c@h@]b@[d@]h@[j@Yh@[p@Wj@Wp@Wn@Yv@mAbDoDvJsBpFoBlFaKnX]|@cD|I{BdGCJ_@~@a@~@Wl@[n@_@p@Yh@]f@_@h@_@d@_@b@e@f@c@^]\\c@Zc@Zc@Vm@Zg@Ty@\\m@Tg@Pe@Ne@Lg@Hi@Je@Dg@Di@@g@@g@Ai@Cg@Ee@Ge@Ii@Mc@MwBo@sBm@]Ka@Ke@Ke@Ii@Ge@Ee@Ck@?e@?k@BC?e@De@Fq@Ho@JuF`Ao@Jg@Fi@Dg@Bg@@g@?g@Ai@Ce@Ee@Ig@Ig@Mg@Qe@Oe@Ug@Uc@Wa@We@[c@]a@_@c@e@_@a@]c@]c@a@m@_@k@[k@[k@Yo@Yq@Wq@Ws@a@kA{AyE]_A[}@[w@Wi@]q@[k@]k@_@k@a@k@]c@_@c@]]a@]_@]GEc@[a@Yc@Wg@Wg@Uc@Oe@Qg@Mk@Me@Gi@Gg@Eg@Ag@Ae@@i@Bm@De@Ha@Fi@Ji@Nc@Ni@Rc@Rg@XEB_@Te@Za@Zo@h@m@f@sBjBiB~Ak@f@k@d@k@b@o@b@s@d@k@Zq@^m@Xif@|UqLzFsEzBo@Zo@Xc@Pg@Pe@Lg@Li@Hg@Fk@Fc@@e@@i@?c@CG?c@Cg@Gg@Iy@Qi@Oa@M[Mc@Se@U_@Uc@Ye@]a@]o@m@e@g@s@{@a@k@[g@]k@]o@Wg@_@w@Ys@Wu@Us@Wy@Uw@Qu@S{@Q{@O_AM}@K{@K_AI{@Gy@G_AC}@EgACmAAcA?cACaLAgB?cB@iB@gBByABiB@m@JoETkJB{@@gA@{@?_AAu@?i@A]C}@E}@E}@G}@Iy@Iu@K_AO}@O{@Oy@Qw@Os@aB{GUaAUgAQs@Gc@GWM_AMcAK}@I}@KqAK{AYuDGeAKeAKiAM_AM_AUoAScAMi@Mk@Uu@Qm@Y}@]aAaBqEYu@Y{@Um@Qq@Ma@I_@Sy@Qw@O{@Oy@K}@M}@I}@I{@G_AE}@EaAC{@AcAAy@?cA@_AB_AB_AD_AF}@HcAFy@J_ALy@Hi@N_ARgAReATiAdDsOLo@Nq@Ls@N{@L{@Jy@Jw@JmAHaAFcAD{@BcA@y@@aA?aA?yA?yK?m@@s@?O?I@q@Bs@Bs@D}@Ds@Fs@l@gIZ}DFm@Dg@h@yFH{@z@oK~@wLPoBFq@Hw@Ju@Hw@N}@PeA|AcInAmGd@eC`AwEVmANq@Pq@Ro@Rq@Rm@Vm@Ri@Xo@b@{@\\u@xA{C^w@^_AXs@X{@Rq@Pm@Ni@R{@Ny@P_AJo@Js@LgAP_B|B_VJ_ANmAJw@N}@Ns@Nu@Pq@Ry@Pm@Rs@pBsG\\iAXeAPw@Pw@Nq@Ly@N{@L_AH}@H{@F_AF_ADy@BcA`@ePJqDBiA@kA@gA?mAAgAAkAEgDCkACkAC}@E{@E{@G}@Gw@I{@Ky@Kw@iAuHG]M{@AKQmAKy@I}@Gw@Gy@Eu@E_ACy@A{@Ay@?}@@y@@_ABmADqAVwKBy@?aA@y@AaAA}@C}@E_AE{@Gw@G}@K{@Ky@Kw@Ky@gCsOYeBSuAQmAOmAMkAMoAKkAIoAImAGsAEiAEsAAiACsAAoA?sA@mA@qARkKj@mZDeBJkF@s@@gA@}@?_AA}@AaAC}@E}@E}@G_AI_AIu@K}@My@M{@Ow@Ow@Sw@Su@Sw@[}@]gA}@aC_DuIUs@Wu@Ss@Sy@Qu@Qy@Ow@M_AMy@K}@Iy@I_AG}@G_AC}@CaAA{@AaA@{@@aA@}@DaADcAFgAr@qKD{@D_ABaABy@@aA?_A?}@A_AC{@EcAE_AGw@GaAKiAu@oK[uDe@eGIgAGkAGaAEiACmAEsAIeDCuAEsAE_AE}@G}@I_AI_AK}@My@M}@Oy@Q{@Qy@Sw@U{@Qi@GUUm@Um@Wo@Ym@[o@]m@[i@]e@a@k@_@g@g@k@q@q@m@g@a@Yc@Ye@Yg@Wa@Qg@Sg@Og@Mg@Kg@Is@Iq@EaCOu@Cs@Gm@Gm@Mm@Om@Qk@Uk@Um@Wm@_@g@]g@a@e@c@g@e@g@i@e@g@c@m@a@o@a@q@_@u@_@u@]w@]{@Yy@So@EOY}@Sy@UeAUmAUmA_AgFO_AS_AOw@Sw@Sy@So@Uq@Wu@Wq@Yo@[o@Yi@]k@[i@_@g@_@c@_@c@_@c@w@s@q@q@gB}Ae@a@c@a@a@c@]_@_@c@]c@]g@_@k@Yg@_@o@Wm@Sc@Wm@Yy@Uq@Sq@U}@UcAS}@QeAUsAW_B}@_HQqAkDcXS_BMeAOkAKgAMoAYuCSaCCi@Eg@Ew@CcAC}@A_AAq@?s@@y@FgCPeHFeBN}FDiB@y@@cA?{@A}@A}@CaAE}@GaAEq@G}@UqCg@_GKqAKkAIu@K_AK_AMu@Ks@Q}@Qy@Qs@Qu@Wy@Ws@Uq@Wo@Ys@[k@Yi@[k@U_@IK_@g@]e@_@e@_@_@a@_@_@]c@]c@[g@Yc@Uc@Sa@Qg@Oi@QiEiAg@Og@Q]Mc@Q]Q[O[Ua@W]W][][YYY]]_@Y]W_@Ya@Ua@Wc@CEUa@Ue@Ug@MW_CqFWi@Ug@Wg@Wc@Wg@Ya@Yc@Y_@[a@[_@UEQSQOYW_@[]W[Sa@U[Q_@Q]O_@Oa@M_@Ka@IiE}@_@I_@Kc@Kc@Ma@Qa@O]Q_@S]S[SKIUQa@Ya@]_@]{BqBi@g@]Yc@]_@Y]U]S_@S_@Sa@Q]K_@Ma@Ma@I_@Gk@Ig@Ee@Cg@Ag@@e@@k@Dq@Hg@H]F[H[HwElAm@Nk@La@Hk@He@De@Ba@B_@@]?A?e@@]?_@?_@Aa@A]E_@E_@E_@I_@IYIWIg@Qe@Sc@Q_@QqAo@uJwEc@U_@U_@S_@Wc@[a@[KKw@u@_@c@]e@e@m@g@s@i@w@{BcDEGu@eAa@m@a@g@[c@c@e@_@a@_@][[c@]a@[c@]a@We@Yc@U_L}Fk@Yq@_@e@[i@]e@]c@_@a@]c@a@_@a@_@a@a@e@a@i@_@e@Wa@W_@a@q@[m@a@u@a@w@sAmCyAwC]o@]q@We@Ye@Yc@Ya@[c@Y]]a@YW[YYW_@Ya@Yc@Yg@YuAw@qMcHg@We@Ua@Qc@Og@Qa@Ko@Mg@K]Eo@GIAk@Ei@?o@Ak@Be@@c@De@DeALaBRkHx@w@Jo@JsCb@qBZq@JcAJg@H{@JeAJc@Dc@DcAHoAHwANuD`@m@Ha@Da@H_@Da@H[HYH]L[JYL[NYPYP[T_@Va@X_@ZgBtAmA`Ac@Zc@Za@Ta@T]P]L]N_@Ja@L_@Ha@Hc@Fa@Dc@Dc@Ba@?c@?a@Ac@Ca@Ee@E_@Gc@Kc@Ka@M]Ma@O_@Qc@U]Uc@Wa@[_HgF_@Y]U]W[Q_@S[Oa@Q[M_@M]Ka@K]Gc@G]E_@E_@Cc@Ac@?c@?e@BgI\\c@@a@@a@?[?M?QA]A[C]CGAUE[EYIe@Ka@Ma@Mc@Qa@SmAm@wFuCc@Ue@Uc@W_@U_@W]Wa@[][][]_@]a@c@g@}BoC_@c@[[]][[]Y_@Y_@Y_@U_@U_@S_@Q_@O_@O]M}Ai@wBu@a@O_@K]M_@I[G[G]G_@C]E_@Aa@A_@AQ?iCCa@Ae@Ac@Aa@Ee@E_@Ea@Ic@Ka@Ka@Ma@Q_@Oa@U_@S_@U_@Wa@Ya@[wEqD_@Y]U]U_@S]S]Qa@OWICA_@Ma@Ka@Ka@G_@E]E]C_@Ac@?_@?_@@c@Ba@Ba@Fa@F_@H_@Ja@Ja@N]Na@P]R_@T]R_@X[V]Z]\\[Z]`@[`@]b@eAhA_B|B}@pA[`@WZWX[^[Z[XYVYRa@Xc@X_@T_@Pa@Pa@Na@N]Ja@Ha@HWDm@Ha@B[@G@a@@c@A_@?_@Ca@Cc@G_@Gc@Ia@Ka@K_@Mc@QWKWO_@Q[S_@U_@YYUCCYU_@]a@c@c@e@a@c@iOwPoC{CY]]a@QSKMYc@[c@Wc@Ye@Wg@q@wA_@_AUi@o@cBm@aBUq@Wo@Uk@Ug@Ug@Yk@Ye@Ye@Wc@[c@[a@[a@]][]WWc@_@_@Y_@YaAu@qCuBuAcAk@c@q@g@eAw@e@]{AcAkBkA]UYS[U}AiAgA{@{EqD[W_@Wa@][Y[YYYY[SY]a@W_@Wa@_@o@KSUa@Uc@Uk@Qa@[y@Uo@mAwCGUu@_CaAyCWs@kDuKKWyB_H]kAe@_B[eA[kA[cAq@uBsCwIgBuFsAaEK]w@aCq@wBa@oAUs@Um@Qg@Wm@Ug@Ym@Wi@Wc@Ye@Wa@_@k@i@o@[_@[]_@]][YU]UWQg@[k@[e@Ue@Qe@Oe@Me@Kg@Ia@Ga@Ek@Ci@Ac@?g@?_BDe@@sCDG?kABo@@k@Aq@Ag@Co@Gi@Ig@Gk@K{PsCaHkAoCe@yCg@y@OaASWG{Be@SEYI_HyAcQsD{HcBaCg@eCe@oHmA}Ey@qEu@_Dk@o@Mm@Mo@QyAe@qHgCkJaDkAa@cBk@q@UKEcCiAqC_Ao@Sq@Qa@Kg@Ka@Ga@IaZaFoe@_IkCc@uqCie@iEs@s@Mu@Ou@Qo@Qs@Us@Wq@Ym@Yu@_@m@]u@e@k@a@q@g@i@e@o@i@k@k@k@m@m@q@m@u@c@k@k@y@g@s@g[}e@i@y@i@u@_@g@]c@_@c@a@c@_@]e@_@a@[e@[e@Wc@Ue@Ue@Qe@Mg@Og@Ie@Ig@Gg@CqAIgCMgCKWAiCMUCSAeD[_@C_@Co@Eo@CcFUc@Cc@AyDK_ACaAE}FWQAYAwJe@uAIc@C]Cg@Ei@Ie@Ig@Ke@Mg@Qe@Se@Uc@Ua@Ui@_@a@]a@]g@g@[[_@e@_@e@_@g@a@o@[i@[m@Wk@Wi@[u@Ws@Wy@So@Uu@Qy@Qu@Q{@O_AMw@M{@K}@I_AI{@G}@E}@E_AC{@AaA?aA?}@@qA@iAPaKBuA@_B?cA?aA?}@CaAC_AEcAEs@C_@ASCSGy@Iw@K}@My@M{@Q}@Q}@Qw@U{@Ss@Uu@Uo@[y@Yq@Ys@Wm@y@kBs@}A_@{@]s@]o@[m@a@s@[g@]e@a@g@c@g@]_@c@c@a@]a@[e@]e@Yc@Ue@Ue@Si@Qe@Mg@Mg@Ig@Gg@Eg@Ci@Ak@?e@@g@Dg@Di@He@Jg@Lg@Ni@Pc@Pm@Xm@XaErBeClA}@b@m@Zm@Vg@Ti@Rc@Ng@Ni@La@Fg@Fi@Fe@Bg@@i@?e@Ai@Ei@Eg@Ge@Ki@Me@Oc@Qg@Si@Wc@Uc@Ya@[e@_@c@_@a@a@a@e@]c@a@g@]g@]i@]m@Ym@Yk@Yq@Yq@Wu@Wu@Us@Sy@Qs@Qy@Qy@O_AMy@M}@Iw@I{@I_AG_AE{@EgACy@CmAAkAC{AC}AEoEUkTAoAEuAEuAEqAIwAGqAKoAKmAOsAOuAQuAQkASmASmAG]Q{@S}@WeAYmA[gA]iAa@sAe@wAqJqZa@mAa@sAkC{IsAqEe@{Ai@aBwMab@qP}h@iAgDe@uA[_AQk@_DmJkVwv@[_A[_A[{@a@iA_@{@a@aAa@y@Ug@a@w@Yg@[i@i@{@e@s@k@w@e@m@k@s@g@k@i@m@k@k@m\\y]}h@uj@{[e]cDiDkz@_}@s@u@u@y@w@w@u@u@m@k@k@g@k@c@m@c@m@_@o@a@q@]o@[o@Wq@Yg@Ok@Q}@YiDaAmEoAi^gKYIiWoH{Bo@gFyA{IgCq@Qo@Oo@Mg@Gk@Im@G_BMiKu@aCQuBO_@E_@Cc@Gu@Kq@Kq@Oq@Ou\\wHeGyAoMuCs@Oq@Mo@Ku@Ku@Gs@Ei@Cy@As@@q@@s@Dq@Dm@FsZjDaAJ_AJu@Hu@Fu@Dq@Bu@@s@?q@Cw@CaBG[Cw@Cw@Eg@Ek@Ek@Ig@Ii@Mc@Kk@Se@Qg@Se@Wi@[e@Y_@We@_@y@s@u@m@wBkByEeEk@g@i@i@c@e@e@i@c@i@c@k@c@m@_@k@c@u@]m@[m@c@y@a@y@Wm@Yo@]}@[y@Yw@Oc@[cAkB{GCIiDaMi@oBIYmAoEYcAYiAQo@S{@Om@Mi@Ms@Qy@QeAO_AOcAM_AMcAKaAWyBmScrB_NisAMiAI_AI}@IcAQeCI{@E_AIqAK}AImBGqAI{BGyBGuBCkAIkAUwMImECmAEkAC}@GaAG}@I_AGs@MgAM_AKy@QkAGYIi@e@kCqN}y@wAiI_AwFiD_SGa@QaAUkAMs@SaASw@Sw@Uw@Us@Wu@Wo@[s@Yo@[m@[k@_@k@[g@a@i@_@e@]a@e@a@i@g@YUc@[c@Yc@We@Ug@Se@Qg@Oe@Mm@Oq@MMCYGqJgBuCi@sLyB{JiBo@Mq@My@MaA_@k@K{MeCa@ISEYG]Gk@Ki@IQAWEi@Eg@Cm@A[?M@k@@k@Dg@De@Fm@Lg@Jk@Pe@Pi@Rg@Tg@Xg@VmC~Ai@Ze@Xe@Ti@Ta@Pg@Pe@Lk@Lc@H]DWBYBg@Bg@@c@?i@Ac@Ci@Gi@Gg@KOEWGe@O_@Mk@Ua@QCCc@W]Si@_@a@[MKWUc@c@a@c@]a@Y_@g@s@]k@]k@]q@IOQa@[o@Yq@Qa@kAuCGMwAuCYu@Ui@s@gBoByEEKuAeDa@aA]u@Wi@g@_Aq@iA_@i@e@q@eAwAIKuAiBk@w@o@mAi@u@EEa@k@c@o@Yc@Wc@Wc@S_@MYQ_@O]O_@Oa@KYQg@Ss@CGOg@Mk@Sw@eA_Fu@gDm@mCqAaGa@gBk@mCsAcGOs@I]Mk@Ke@Ss@S{@EMOm@{AmFs@cCk@uB_@oA]mAW}@S[oBaHW_A[eASk@GQKWUk@Ys@AE]w@Ym@Ym@{@aBcFuJcCyEU_@AEWe@_@m@_@q@Ye@MSS]S]Q_@Ua@S_@OYuAoCkCaFy@aB}B}Ec@aA_@y@]s@cAoBsAmC}CaGg@aAMU{AyCaAiBcFuJeBiDi@eA]m@]k@[e@]i@a@g@_@a@a@c@a@_@e@a@OKSOc@Y]Sc@Ug@Se@Sc@Mg@Me@Ii@Ig@EKAYAe@Ag@?i@@g@Be@DWDQ@G@gALoAP_BPoANcBRM@q@FM@q@FaAFi@DSBc@Dc@DkDPeBRo@H]D_BRw@JWBmAPs@Jm@Fm@FsD`@_D\\S@{AP{@Ju@L{@L}@LSBsAPkGt@gMxAeALmPnBI@iBTu@Fu@Fs@Fw@Bq@@s@@w@?q@As@Aw@CmFQeAE}K_@}I[q@Ca@AmDMwDM_HUgAEkHW{La@cUw@sGUaDMgJ[oCKgACmNg@kW}@q@Cs@EA?w@Gw@Is@Is@Ko@Ms@Q_@IOEu@Uq@SYKWKm@U_CaAoCkA_KiEeAc@}EsBoCkAsB{@oAi@mQuH_Aa@IEa@Oe@Ga@Qq@Uu@Ws@UGAg@My@SMCc@Iy@Ow@KWE_@Ey@I}@EWC_@Ai@AUAs@?W?S?]?A?e@@s@B]B_@Ba@DW@u@Hk@HUDe@FQDa@Hu@Ns@P_@JUFcDz@i@NI@iO~DyKtCG@yHrBMDG@aBb@eFrAaKjCk@NoJfCkG`BqFvAo@Py@Rq@Pq@Nu@Nq@Jo@Ju@HYDg@De@Bs@Ds@Bs@Bs@BoWr@eBFyDJcEJeDJI?E?s@Du@Bq@DSBa@Bw@Hm@He@FC@w@Lq@Nq@NODe@Js@REBsB^u@RqA^{Ab@ODg@Ly@Vu@Ru@Vq@To@VWJ[Lo@Xq@\\s@^m@Z[RUNm@`@o@`@o@b@uG~EiAv@}B`Bc@ZIFo@b@o@`@q@`@GDg@Xq@^q@\\[NULq@Xu@Zk@T[JGBo@Ti@Pi@Pq@Rw@Rs@Py@Pq@Lk@J_@Fi@Hg@Ho@Fi@FyD`@w@HyEh@{Ef@iBRQByCZa@DeBPi@F]Da@Bq@Fw@DG?e@@w@@C@{@?U?[AwCCmACeFI{ACiCEeJQoBCgJQkDEuDGqDG[AE?GAiKOu@CsNUcJOs@AiKQuJQmGKeJO_@A}@AyYg@wR[cJOyNWqACcAA_MScHMeJOoEIiJOyACE?a@AqDGuDGkACeACk\\i@iR[}ACqACI?}@C{@Aq@?G?g@?w@@y@BY@}BFs@BmADgCFig@tAwCHmELkWr@mADm@BkM\\eJVoUn@yd@pAwADiGPgBDO@uBFkCFkBFs@BI?}@BiDJK@_DNYBI?s@F_CRcIr@iDZ{D\\}D\\wIv@{Jz@u@HgGh@_@BkJz@K@cQ|Ac@B}Eb@oh@tEu^bDgAHkUrBw@Fu@Fw@Dw@Bw@Bw@?y@?s@Cu@Cq@Go@Gu@Is@Ks@Mq@Ms@Qq@QOGa@Ms@Wo@Ue@QOGm@WeBu@kD{Ae@Sw@[q@W]MYKe@OMEq@Qq@Qo@MMCg@Ks@Ks@I_@EQAu@Go@Cy@Cq@Au@@y@@M@_@@s@Du@Fs@Fq@FuLnAkJ`A_P`BgALcAJmBR{@HuBTaAJE@_@Bq@HYBc@Bu@Fw@D_@@Y@s@@{@?u@?aA?sJAyJAG?}CHa@?mJAgA?_@?K?iKAS?O?qD?uDA{C?}TCeA?s@?]?[?A?w@?w@Aw@CI?m@Cq@CWAc@CYCC?[Cu@Io@Go@IMAo@KIAk@IqO}Bi@IaBUaG}@gDg@mImAcJsAwHiAeDg@eAO{O_CIA{Es@eC_@{Dk@a@GsLgBqEq@aPaCa@GgAOwB[uAUwGaAmPcCkDg@sEq@qFy@wASqO}BgAQo@IgLeBc@GeC_@wDk@e@GWE_De@g@I}Ce@_C]_C]aBU{Es@m@KuK_BsDi@s@KiJuAyAUmBY{F{@iBWsPgCqDi@cAOq@Io@IKAg@Eq@Go@Ei@AI?u@Co@?I?a@?W@a@@e@@O@m@Ds@Do@HM@e@Ho@Jq@Lq@Lm@Ns@Ro@RYJUHo@Vo@Vq@XA@m@XoFlC_NvGyBdA_HhDiFfCs@^u@`@{C~AuAr@{@`@aAd@eBz@gDbBcAf@kAj@WLiDbBiAj@w@^m@XoAn@o@Zo@Xm@Tk@Ri@NOFSDEBi@J_@H{@Ns@Hi@Dm@Di@Be@@q@@oABI?m@@m@Bg@Bi@Do@Hi@Fg@J]HQDi@Lm@Pk@R_@NGBGBk@Vo@Zi@ZWPQJg@\\e@\\SPSNYTML]\\a@^c@d@g@j@i@p@Y^MPcAtAiBhC[PyEtGoAfBsEnGsEnGIJwApBcRlWuApBuBrCoFrHW^sBrC]f@sIrLY^eDvEaDlEaHrJgDvEsX|_@qPnUw@fAqFvHmCtDW\\qBrCm@v@m@v@m@t@m@r@o@p@s@v@g@h@s@r@yMzMC@uHvHgJfJ]^{@z@iCfCoApAmDlD_E`EMJEDe@d@q@p@IHC@c@b@k@f@MJc@^s@h@k@b@o@b@e@XC@EDq@^s@\\m@Xo@Vq@Vo@Rg@NUHq@RSDg@LyD~@uCp@aMzC_GtAeAVcSzEqCr@oDx@{Bj@s@P[H}FtAeCl@yD~@C@aDv@}Cr@a@LcATsHhByJ~BeAXaB^w@RiKdCE@cJxBODuA\\a@J}HjBc@JgBb@aJxBcCj@oHfBq@PiAViOrDaHbBcDv@oDz@oDz@]HYH{J`CKBcJxBgFnAuJ~Bu@PIB{@RcOpDwJ~BqAZwJ~Bw@RgY~G{JbC{D~@iBb@iCn@G@uKjCgAXG@IBkHdB_UpFiDz@uD|@aCj@gGzAYFc@JGBc@JoCp@w@PsCr@{D~@a@JcAVwBf@}U|F}D|@eDz@iOrDaJxB}OxD}@TaAT_JxBYFoDz@oD|@]HG@GBab@`K{EjAUF}G`ByA\\u@Ri@LoJhCcBb@oDz@_Dt@w`@rJqHhBGBm@LkEfAiGzAGBgEbAiDx@}@TSDqG|A_@JiKfCUF_IlBQFqDz@mDz@gBd@sAZuEhA]HoCp@wEjAg@L_@HwBh@_AVA?}@TiA^u@Vu@Xu@Zq@Zq@Zs@\\QHa@Tu@^sBbAgDbBiAj@g@Vc@Tw@`@iCnAqJ|EaBx@o@ZuGdD]Pu@^wE`CgBz@]R_D|AwDlBy@`@sFpCo@\\q@\\eEvB_@RiI|Di@XyC|AoAp@_GzCqBdAcB|@s@^{DpBuOfIwAv@k@XEBULmJ~EiB`Au@^qAp@kAl@[PmDjBcDbBa@RwH~DaDbBsM~GiIhEcAh@_HnD{C~AqInEgB~@oAp@cJxE}EfCqInEQHoInEmHxDaAf@cDbBcVfMk\\`QeDdBiDhB]NOJIBm@\\cB|@_IbEiB`A{H`EoLhGgDdB_DbBoDjBmNnHaAf@gDfBeCpA_@RsBdAs@^A@q@\\a@PSJq@XMFe@Pq@Vs@Vu@Vs@RSFA?C@UFu@Ru@Pi@JG@u@Ns@L}@PSB{Cj@oDz@QB[F_@F}Bb@mM|Bq@Nq@Lo@No@Po@Po@Rm@Rs@Vq@Zo@Xm@Zs@^o@^q@`@q@d@s@d@mDbCe@ZqAr@uKpHu@h@]Re@\\y@h@cAp@y@h@uA|@g@Zg@\\WN{@l@i@^m@d@k@`@c@`@g@b@m@h@m@j@m@l@k@j@{A`BEBm@n@yA~A{@|@s@t@o@r@[ZmApAu@x@MLeAjAc@d@s@x@gAlAgAlAsAvA}AbByA~AwD|DoEvEqBtBmBpBuCzCg@h@cDjDGDOP{B~B{C`DoExE_A~@cBfBuNfOUTYZo@l@ML_@Zm@h@m@f@UR_@X{BfBWRoCvB]VGD{AjAkA~@cBpAaDdCEBqG`FsDrCw@j@g@\\w@f@o@\\IDi@X{@^o@Xo@Ti@Ps@Rw@T_@HEBG@u@NcARq@Lw@Lw@J{@J_AJm@Dy@Fw@Dw@Bu@B}EN{@Bq@Bu@Du@Dw@Bu@FU@wAH_CL_BHU@cAF{BLsFXyG^eIb@}G^gETgH^uCPW@sDRqDRC?uBJuAHwBLwId@gJd@cAFuCPyCNcH`@_CJSBsAFcETiAHkDP_BHa@B}Jh@uBJ{DTqET{AHK@I@k@B_DPgETE?sJh@aKh@yAHcAFa@BkCPkAHmF^s@DiH`@gE`@a@BaJf@G?G?sCPyQ`AaETyEVI@oAFwAHgDPO@q@DcBJyDRcBJ{BJcAFeFXcGZqFZwAFaDRcCLw@DiAFuBLcDPeAFQ@[@]BK?e@B{@Dw@B_ABiBD}CBeC@oEDY@gGDw@@o@?cA?mAAaAAo@?m@?qA@kA@{AB]?aBBS?oA@i@@S?M?wA@kDDU?_@?uBBqGF{CBuB@kEDoDDI?}CDmDBaGFkEDaA?uD?cFBgC@kFFoMJaABk@@g@Ba@B_@Dc@Ha@Ha@La@Na@P_@Rc@V[T]X_@\\]\\KLON[`@[`@Yb@Yd@Wf@Wh@GLMXWl@Qh@Od@ABOj@Qn@Ml@Mh@QbAYjBy@hF_ArGG\\}@`G{AxJiC~PqAxIq@xEuAxIQdAOfASlAQdAi@dDu@dFi@pDQnAKt@Kv@}AzLe@dDe@fDuDvWeHhg@e@dDG`@If@CPIf@G\\Kd@S`ASv@Sl@Qf@Qd@Ud@Q^U^Yf@]d@eAnAy@|@e@d@i@j@i@h@]\\WRMLk@d@]VMJSPuAfA]ZSP{@~@qCtCeDjDa@b@wAzA[V]Z_@X]T_@Ta@R]Nc@L_@Ja@Ha@FG@g@DS@Y@U?SAYAUAUCWCUEWG[ISGSGe@SaCaAe@SQIa@Q]OSKOKOKKGECOKOMAAMKMMGGMMIIMOOOIMCCMOMSCCIMEGCECEKSMSKSKSCEEKACKUWm@CGq@aBYu@Qc@g@{AWKKWIWGOCEIWIYGWIYEQAGGYAAEWGYG[EYAGAMAEE[AGASE[?GCSC]AKAMC]C[A[CWCa@?EEo@IiAAOA[C]C[AKEk@?CCYEYAQAKC[E[Gi@CMEYE[E[G[EYG[G[EWGYEQAGGWG[IYGYGYIWCIMi@Mg@CIIYCMCIIYGWIYg@iBGUEKKa@IWIWGW?AIYGWIYEQAGGYGYG[CKAMGWO{@Ku@Ig@Ii@Iu@SoBOsAGg@Gi@Kw@Ik@c@qCWeBOaAE]Ie@SeAoBeL", + "sędziszów|sędziszów towarowy": "ucssHw~kyBoD{IqC_JgHmTyC_JQi@m@gBQg@w@aCqBgGmAiE", + "gniewięcin apo|sędziszów": "mfnsHi{iyBiB_@iB[oBOkBGsAB_ABsCV}Hz@sRtBmPhBmPhBaBLeBDkBAgBImB[{AYuAa@qBy@mAo@WOiAw@}AiA}A{AoAwA_AoA_AsA_BkCiDoIeDwJ]aA_@kA{DmLSk@GUqCiI", + "gniewięcin apo|klimontów apo": "mfnsHi{iyBAJdBl@dBr@tC`BnCrBvApAvA|ANPdChDdFzIzAjCnBnCzAhBnApAlAbAzQtN`NbKvCzBjAz@pAx@pAv@l@\\bAh@x@b@d@RhBz@D@zBz@vBp@bDz@pJrB|D~@B@PDjGtA`KxB|VtFtFnA~AZtCn@", + "klimontów apo|kozłów": "mdhsHw`fyB~PxD~KdC|KbClE`AxJxBjCt@vAj@vAt@`CbBpBjBbBdBxB|BhAjAh@h@d@`@d@`@j@d@n@`@f@Zh@Xb@Td@Rf@Pb@Nd@Nd@Jb@Jj@H`@Fl@Fh@Df@@j@@h@Af@Ah@Ch@Gj@Gd@Gf@If@K|Bc@vAWl@KJC^Gf@Gf@Ef@Eh@Ch@A`@@f@@L?H?L@d@Bd@DD@j@Hj@Hf@JxBGbB\\lE`ArAj@\\H@?xBf@`@HtBd@", + "charsznica|tunel": "o`rrHuotxBCeA?y@AsA@kA?eAB{@@_AHqEJiETwJVwLHmDDwAJgF@cAB}@?}@?{@A_AC{@Cy@?OEs@Es@KgAI}@Go@Mu@OcAO}@S_AOs@Ss@Sw@Uq@Yw@Sm@Wk@KWKU_@s@[i@[i@]i@_@e@[a@c@g@a@_@c@a@g@c@_@Wa@Ye@Wc@Ug@Sg@Qg@Oe@Mg@Ke@Gi@Ge@Ei@Ai@?i@@c@Bg@Dg@Fg@Je@Jg@Ne@Ne@Rg@Tc@Tc@Va@Ze@^SPQ?c@b@a@b@a@f@UVW^c@j@iA~AySfZm@v@_@d@]`@c@b@c@`@a@\\a@Xg@\\c@Vg@Ve@Rg@Rg@Ng@Lg@Je@Hi@Fk@Dg@@i@?g@Ag@Cg@Eg@Gi@Kg@Ke@Mi@Qe@Sg@U[S_@Qe@]e@]_@[a@a@_@a@_@a@_@g@a@i@]g@Wc@We@c@y@Ys@Yq@Wq@Uq@Uu@Su@Sw@S{@Ow@My@M{@Kw@K}@Iy@Gy@G_AE_AC_ACaAAaA?_A@}@@}@By@DeABu@D{@FeAn@kKDiAFiABcAD{AB_A@aB?yA?kAA}@AYCmACqAGkAGsAImAKqAKkAMmAMoAQuAqA_KQoAUoBMmAOqAIkAKmAIqAGoAEoAEqACkAAsAAoA?mA@oA@y@@Y@_AD{ADaATeFPgGBm@Bq@Bs@@o@@s@?q@?aAA{@AaAC{@E_AG{@Ei@AUIy@K_AKy@M{@My@Q}@Os@Ok@Qq@Qm@EMK]Qi@Sg@Ys@M[IQ]q@Wi@[e@KSKOYc@Y_@[_@Y]]_@MMMK_@]_@Ya@Y]U_@S]S]Oa@Qc@O]Ka@Ka@Ia@Ia@E]Ea@Cg@Ac@?e@?e@BY@_@BeBJU@eAH_@B[D]D[@[@E?_@@eB@U?U@[B_DVe@BS@W?e@?e@A_@Ae@Ga@Eg@Kg@KKESGa@Mg@Sa@QoCsA", + "charsznica|gajówka apo": "o`rrHuotxBLzIBhB@RHnE?b@DfAB~@D~@FbAFbAJbAJfAJ~@BJTfBjBlNpA|JJv@Lx@Lz@N~@PbARdAPz@T`ATz@V|@Tt@X|@Zx@Xt@Zv@f@jA~ArDZt@Xp@Vt@Tn@Tt@Rp@Rx@Np@P~@Lt@N|@J~@Hz@Hx@F|@F|@@X@f@Bz@@`A@b@?vAArAClAAr@c@zX]zTClAEpAEvAEtAItAIrAKpAKzAMhAE`@Gn@{@pHQdBQ|AQpBKtAM~AIlACXIfBIvA[vGaClh@Cp@KjBIdBK|AItAO`BM|A{@lJK~@a@jEmAtMMpAsCzZE\\OzAQ`BQzASbBSvAW`BU~AWxA_AzFoDhTkCbP{AhJADc@nD", + "gajówka apo|wolbrom": "{qrrHomexB_CnNW`BObAQdAQpAQrAQrAOnAaGvh@OpAQtASrAQpAQnASlAUrAUnAG^kE~UQbAOx@Kv@Kx@K|@Ir@Ix@Ex@G`ACp@Cx@Cx@?x@?v@?h@?d@@j@Bz@D|@Dx@Dz@Hx@H|@Jx@Hl@N~@Nz@Nr@Px@V`AV|@Xx@Vr@Vp@Vj@Xl@\\n@`@p@Vd@\\f@dBlCd@t@Zh@Xh@Xh@\\x@Tl@Xv@Tp@Rl@Pr@Rz@Pt@Nv@N|@Lx@Jz@Jz@Hv@F`AF|@Dz@Bx@B~@@dA@bAHpJ@lABjABbADfAFnADp@Dr@Df@HfAJdAFj@Ff@J~@Jv@L~@RnAPfAThATjAXfAVfAXbAZhA`J~[X~@ZdAX|@^bA\\~@^|@`@~@Zr@b@z@b@x@d@z@`Vxb@bKvQTb@Zh@Xd@\\f@^j@^d@b@f@`@`@d@d@\\Xd@^^V`@Vb@Th@Vf@Rd@Nl@P`@Hf@Hh@Hd@Bd@Bf@@d@?l@Cf@Cf@Id@Gh@K`@Id@M|HoBv@Sh@MTDREd@In@Ih@Ej@Eb@A`@Ap@?f@@J@l@Bh@DZDPBn@Jn@Lh@Lf@NVJNDd@RVJJFh@Xb@VTNVPTR`@\\^^`@`@^`@\\d@^f@\\f@Zh@Xh@JTNXXn@Xp@Vp@Tp@Rp@Rt@Pp@Pv@FTH`@Lx@Nz@J|@Jx@Hx@Dp@Fr@DjABfA@`A?~@C~@At@E~@GbAIjAKnAMjBa@~EKjAK~@Kz@Kv@Ot@Kn@Ot@Qr@Ol@?@SvAeDdMcApDY~@g@dB", + "wolbrom|zarzecze apo": "c`nrHuxtwBi@jB_@jAkAtDy@dCY|@[dAqCjJKZyAbFUv@Sv@U~@Or@UbAMl@SfAMv@YlBQpASnBMpAKjAK~AGpAGlACdAC~@CbAA~@Ap@?N?L?p@@vA@|ABfAB`AFnA?PFjABRDv@F~@Fl@Dj@LlAPzAJz@L~@XdBTrANx@R~@`Qv|@pFpYf@fCdAnFVhA@F^`Bd@~Af@bBVr@\\z@Zv@`@`An@zAvB|E\\x@Zx@Xt@Xx@Vv@Tz@T|@Rv@R~@Pz@N~@`@hCpAdIXdBBT|AtJjOhaAl@zDvA|IhDjT~AhKtAvIRhAPfARdAVjAVjAVbAXdAXbAVv@DNZ|@\\`A\\z@Vp@Td@BFf@dAb@z@\\n@Zh@Xb@`@p@f@r@h@r@f@n@`@d@d@f@d@d@f@f@j@f@j@d@n@d@p@f@bEtCh@^`@VDDf@Xd@Xf@Vj@Xb@RhDvA", + "jaroszowiec olkuski|zarzecze apo": "ongrHakwvBeBqEwAuDwAyDYy@Uw@Us@Qu@Sw@Os@Qw@_@qBm@gDMu@Oy@Ms@EYw@iEi@{CaAmFO{@Ks@Mu@Gc@Ea@MeAI}@I_AGcAGiAC{@C}@AiAA]?c@?eA@eABeADcAB{@FcAH_AHiAHy@PsARaBx@kGfJ}s@DYFg@d@kDh@iE~@gHRuAPmANeADQPkAVsAbNyu@TmAToAPcAToAPmANiALeALoAHw@BSJsAp@}IDo@dAcNJmAFcAD}@B}@@e@Bs@@y@?y@?o@?gACcACeAAOCs@EaAIcAGaAKcAMgAM{@M{@QeAQ}@S}@Sy@U{@W{@Yy@GUKWWq@[w@a@y@IQSa@]m@[g@[g@i@u@]c@_@e@e@g@c@c@II][_@[e@[a@Yk@]]Se@Ua@QmF{BaDsAECgN}FgN}FiVcKOImMoFWK", + "jaroszowiec olkuski|olkusz": "ongrHakwvBfBpE`@dAb@bAfA`C~BdFj@nAHRf@dAj@nAz@fBZp@^r@Zf@\\h@b@n@f@l@h@l@\\Z^^^Zd@Zj@^f@Xx`@pTnDpBNFZRl@Zr@\\j@Vn@Xr@Xf_@|N~@\\j@Rp@Rr@RRD\\Hp@Lr@J|@JfLtAzc@jFrRzBp@Jv@Hn@Fv@Dl@Bz@@r@?t@A^Cf@Cj@G`@Ej@Il@K`@Gd@Kz@Uh@Or@Wl@U`Aa@r@[dBs@~TmJr@Yx@Yp@Uz@U|@U`M}Cv@Qn@On@Mr@Ij@In@EjAGp@An@?h@?l@@j@Dn@Dn@Fj@Hj@Jn@Ll@Ll@Pn@Rr@Vn@Vn@Xx@b@|@f@~@n@t@j@v@l@nPhM|@r@~@p@n@h@p@f@`ObL|C`C~C`C~CbC\\X^X^X^X\\Z^Zn@j@n@j@pAlAhNbMZVXXXXVXXZVZV\\X\\T\\V\\T^T\\P\\PZP\\P\\Vh@P\\N^@DLZP`@Rh@JZNb@L^Nf@Lb@Ld@Ld@Jd@J`@H`@Np@Lp@Nr@nArGDNbAfFBNFZLn@Ln@DTDXHd@Fd@Hd@D^D`@F`@Db@Bb@Db@BV@VB^B^@XB`@@b@@b@@V?Z@Z?Z@^?\\?\\?b@?X?\\?ZAd@?h@?b@ARAt@Av@Ar@Cp@An@ABDl@ANAj@Ez@Ch@El@?JCb@El@En@El@Ep@KdAIbA}@~Ka@bFGn@eArMIdAKdAGx@Ix@Ix@Iz@Kx@Ix@a@zDIr@I|@", + "bukowno|olkusz": "ofxqH_kvuBVeFHqAFuAD_AB}@BeA@_ADuKDgGByEAyBAoG?uA@{A@aHGaC?c@E{F?M?eA@gC?sI?sAAkACmAEiAEgAGgAGgAIkAIeAMeAKcAOkAQmAQgACMKmAkBcKQ_AQcAMg@]wAYaAUu@Y}@Qc@]_A[u@{AkDkBaE]y@Yu@[_AYw@W{@U}@U_AU_ASeAQ}@OcAQgAMaAKaAm@uFiA{Kwn@meGoAqLo@mGq@mGo@mGGe@Ee@Gm@Eo@Go@Eo@Cm@Eq@Cm@Ao@Co@Ao@Aq@?o@?o@?o@?o@@q@@o@Bq@@m@Bo@Do@Bo@Fo@Dq@Dq@Fq@~Fet@f@gGh@_Hh@qGn@aI@KHaAl@oH@O^{Eb@cF`@iFBY\\eEDa@Ba@Da@Ba@Hw@", + "bukowno|sławków": "ofxqH_kvuBYjAYnFKdBM~AIx@K`AObAQbAQ`AoA|GaBxIeApGwUhoAc]piBOr@O|@Mt@Kr@Mx@Ir@Iv@Iv@Et@Ev@En@Cj@Ax@C~@?jAApAGPAxHGhm@?nDAjA?jAAjACjACbAGlAGdAIlAKfAKbAMfAMdAQbAQbASbAUbAS~@Y`AY`AWz@_Ln\\wD`Lw@`CeDrJWr@Wp@[r@Wj@]n@[j@[h@]f@]d@_@d@c@d@_@^c@`@a@Z_@Xg@Zc@Vc@Ta@Pa@Pm@Pe@Li@Jc@Fe@Fe@Da@@O@]?i@Ai@Ak@Ek@EqBOuEc@e@Cg@Eg@Ae@Ae@@i@@m@FWBk@Jg@Hc@La@Nc@Na@Rc@Re@Xa@Vg@^gCfBm@f@m@n@i@l@]b@a@j@_@j@c@n@_AvAc@p@kC~D", + "dąbrowa górnicza wschodnia|sławków": "k|_rHskxtBFcF@kB@aAp@el@^{ZF}Gc@_DBy@F}CD_DFcFBwAf@yc@^o[B_ABuADgADkA\\cInAsYd@oKjAeX`@_Jv@}Q~As^^kIDcAD_AB_ABy@@{@?}@A_A?{@C{@C_AE}@Ew@]qFG_AGy@E}@E{@EeACu@A{@?}@?_A@y@@_AB}@DaAFy@Ds@Fm@H{@Hq@Jq@Ho@Lq@Lq@Lm@Lm@VaA@ARu@Vw@To@L_@b@iAhA{CrAqD`@eAXs@Tg@Rg@Xk@Xi@^o@`@o@jAiBj@{@j@_AxCcFh@{@l@_ANUrAsBt@iA", + "dąbrowa górnicza strzemieszyce|dąbrowa górnicza wschodnia": "}karHqdrtBVwAf@iCv@aERgATgATmAZaBbAiFlB}JbCiM~AkItAeHF_@zEuVdBcJJg@bAiFjAmGb@wBf@mCTkATmAPeAHk@Jk@Jw@Jw@Jy@Hy@JcAHcAHeAHgAD_AD_ABs@Bg@@i@BaA@aAB_CTc@BsBFwFPmF", + "dąbrowa górnicza strzemieszyce|sosnowiec kazimierz": "}karHqdrtB_AxEWrAQ|@aAbF_@pBI^I^ETGVQl@On@a@vAERW~@Md@a@xAI\\IZGZKb@SbAWdBUnBKlAM~AGlBC~@AX?xA@zAD`BDvAD|@HnALrANvAV~ALp@TdALj@FVXbA\\fAp@jB`@`Af@dAt@lA|@pAx@`AfAfAdBpAl@^l@Zj@Vl@RjA\\fATx@PnAXhB`@~E`AnPpDFB`MdCtD~@bAZpAf@B@rAn@hAl@x@h@t@h@hBzAr@p@jAnAfAtAxAxBFHFHzC`F~L`SXf@fBrCnArBHJFJbC|D|@xA|@xAJPz@rA\\j@^h@RZZ`@VZ\\\\", + "sosnowiec kazimierz|sosnowiec maczki": "se}qHwjktB\\MTNh@Xb@Rf@R`@Nf@Nd@L@?d@Jj@H\\DTBZ@b@@h@@d@@b@Ab@Ab@C`@Ed@Kb@K`@M`@Qt@]v@a@\\S^WTQZUXWZWVWXYTWT[z@iAl@y@FGT[X_@nAcBl@_Ah@u@~GeKle@es@jA_Bv@aAZa@dBwB|TqXrAcBbAuALQfBcCd@y@b@_A^aA\\gAZeATkARmAJw@DWLuAHsADmABqABaEJ_NBgBBgBFcBLcBP_BT_BZaB\\sA^kABKTm@L[d@eAl@kAXa@Zc@l@u@n@k@t@g@z@e@f@Ux@_@r@[ZOXO\\Sb@W|DcCvFiD\\Wb@YZUXW\\]Z[X]X_@Ze@f@y@j@kAx@cB", + "chrusty nowe|żakowice": "msozHoaywBeBs@sAi@GCsn@sVac@}PqP{GiBg@mAg@kMcFq@Yyj@{TOIaLoEqAg@iDuASGOESGeAUYIUGCAUIUIk@Uk@Yk@Wk@Wm@Ym@Y{@]{@]{B}@u@Yu@YYK[KSGSGSESCSCKASASAS?Q?U@QBSBQBSDE@MBQFSFQFQHSJQHQLQJIHSPSPONONOPOPMRORMRMTMTMTMVKXKVKXKXIZIXIZGZIZG\\EZGZE`@E\\E\\C\\C^C\\A^AXA`@A`@?^?^?^?^@^@^@LBf@@ZDn@Bf@Db@B`@ZpDDf@Df@BZB`@B^PrDB`@ETLzAJ`ABTLtALxAJfALrALrApCb[Fn@Dj@f@tF", + "chrusty nowe|rokiciny": "msozHoaywBji@fTzDzAlDvAdM`FzH|CzClAnAd@jAf@dG~BlEfBtAj@pAf@vPzGf_@`O`C~@", + "rokiciny|łaznów": "_rjzH}pvwBPHpGfCbFlBFBhJrDlXnKnHrChk@tTfE`BxEhBjGdChBp@~EpBn@Zj@Zt@`@|@j@v@f@v@j@v@j@x@n@v@p@r@p@b@`@n@p@`@^JLlm@dp@nW~XzA~A", + "wolbórka|łaznów": "gy{yHifkwBgDoAcE_BwFyBwAg@wHuCy@o@gf@_RwBy@cC_Am@Wi@Uo@[g@Ww@c@w@c@}@k@o@c@}@m@u@i@{@q@s@k@s@m@o@k@o@o@m@m@s@s@e@i@yOwPmI_Joc@qe@sLkMqAwAqAwAe[y\\uJiKwFgG", + "baby|wolbórka": "y`qyHm`jwBsp@mWwHwCYMcE_B}D}Ayu@}YaE_BcE}Aq@Wm@Uq@Uq@So@Qo@Ms@Mo@K_@E_@E[Cw@Em@Aq@Aq@@u@Bm@Ba@DWBSBS@s@Jo@Lq@Nq@Pm@Po@Vk@Rg@Rub@pQuv@~[o@Vs@Xo@Ro@Ry@To@Ni@He@Ha@D}@Hs@Do@Bq@?o@?q@Ao@Es@Gm@Gu@Mk@Km@Mm@Oa@O[Ig@Qa@Ow@Ym@WuNsFOGiEaB}CkA[KmDuA", + "baby|moszczenica": "y`qyHm`jwBZLbC`A`@NpEfBhDpAt@XnC`AnAd@z@Zx@ZfBp@vLvEj@Rl@VxqAlg@xk@|TjBr@jAd@dFnBd@PrKfElAf@bI|C", + "jarosty|moszczenica": "m|ayHshewBaDYaMcAOA{NmA{v@uG}v@sG_e@{DuBSgMeAga@gD}CYi@Ek@Gm@I{@A}@O}@O_AUw@Uy@UgA]m@Uo@UgCcA", + "jarosty|piotrków trybunalski": "m|ayHshewBlSdBdFb@bBLdBNnd@dEzCXtIv@rLfAzCXjDZjBP|Gn@`E^|AND?`Jx@tHr@pRfBxBRrGl@|ANzMlAf]~CF?F@tIv@pOvAlW~Bd@DhK`AZPl@F`@DhK`A", + "gawrony|witonia": "kfa}Ha{htBCA_RgTgMaOul@er@SUoKaMcLwMyAmBk@w@k@y@{DiGoFuIAEei@i{@_GqJkFmIeGyJuF_J}IuNkCgE_QwX}@mA}@oA_H_JiDqEsAiBs@_A_RmVkA{AiA{A", + "gawrony|łęczyca": "kfa}Ha{htBxKlMbO`QxShVbAjAbAjAtAxAj@j@`@^JHx@t@z@r@vBfBhMlKFDnFnEdBxAfBxAnErDlErDDB~AtAr@j@r@j@bCpBhA`Ad@`@b@`@l@j@j@j@tAzAZ\\|@`A|@`AnUfWbK`LfBnBhBlBpE~ErEbFdBnBlBpB|BfCnApAf@d@\\ZLJ|@p@`@Xb@XfAl@~At@rBn@`@J^J~@P^F^D`@D\\Df@Bh@Bf@@h@?r@?t@AjBAtEGfLM~@A|JMj`@a@`EEvBCd@AhEEnGGhCCjCG^AfAGpBWvAWz@Sv@UXG~@_@`Aa@hAo@`Am@dAu@`A{@dAcAx@_A|DaFrBiCjFyG~AqB~GuI", + "sierpów|łęczyca": "syn|HelitBm@f@q@f@SNaAp@gG|D}OfK_DtBoCfBaU~NwKfH{E~CuL|H_Ar@_Av@sBrB{AhBwAlBq@t@_RrUgElFsEzFkM`PiQzTeIbKiDhE", + "ozorków|sierpów": "}ze|H{zqtBC@}AV{[dGwAVu@N{E|@oCl@mCl@uAZ}Af@_Bn@yAv@eBlAcJdHkHtFaq@`h@oTtPwDvCyAnAwApAqBrBmBzB}BzCyBbDW\\k@|@cA`BeC`E_CxDaHbLaHbL}JlPkHpLoCrEqCpE_MhSwFhJu@lAs@lAgBrC_A~AcA|Ai@v@i@t@k@p@UXIJMLUTWVo@n@", + "ozorków|ozorków nowe miasto": "}ze|H{zqtBhHuAxHwAjB[xB_@zVqEPE`KkB`LsBpAWhEy@", + "chociszew|ozorków nowe miasto": "un|{HgbrtBg@JwAXw@Ny@Jo@Fe@Dc@BU@o@@o@@o@A_DQ_BKwBM}CYkFi@yLmAwAOoEc@cBS{JcAw^wDsAOyYyCsO_BiGo@aCUAAaAKaAIkBKi@AS?U?m@?m@Bg@Bg@D]B[B]F]Dy@N}@N_AP}@PeGfAaCd@w@LiATkB\\", + "chociszew|grotniki": "un|{HgbrtBzBg@zD{@vMuC~A]l@Mp@O~SwEhAUta@aJjCm@lDw@vA]j@Sh@SbAc@`Ae@TMJE^W~@m@r@k@r@m@p@o@p@q@p@w@p@y@n@}@n@_Aj@_Aj@eA`AoB^y@\\{@h@wAh@yAb@yAPm@Nm@^{A^aBToAToAVaBTcBNoALqANeBNiB@E\\kEj@gHj@iHxAqQ|@_L|@_Lj@iHXuC\\qC?AV_BZgB\\iB`@eBb@cBl@qBn@mB~AsEdB}Er@mBXw@J[JYdAkCVk@Vm@n@mA`@u@P[NUb@q@b@q@b@k@`@i@b@i@d@g@X[Z[Z[ZYRQv@m@h@_@j@_@vAw@n@[VMVKj@Sl@Sh@Oh@M~A[l@In@IlBWlAO`Dc@PCDAnGy@", + "grotniki|jedlicze koło zgierza": "keu{HmuztBjC_@zDg@xASpEk@jHaA`AQhCo@TIZKXMd@Sd@UtBeA|BgAzBiApE{BzGgDzQaJzAw@vBeAl@]l@_@l@_@j@c@h@c@h@e@j@i@j@k@n@s@r@_A`@i@^k@\\i@b@q@Xi@", + "jedlicze koło zgierza|zgierz kontrewers": "uuq{Hur|tBb@w@Zo@\\u@b@_ABK^_Ad@mAL_@Pe@J[Z_Af@yArAaEh@cBf@cBPq@Nm@Nq@Lo@Li@Ji@|@mFjAoHN_ALy@L{@L_AJaAJ_AJcAFy@HaAHmAL_CNkCDy@Ba@Be@DaAB}@B_A@eA@{@?gAA{JA}E", + "zgierz jaracza|zgierz północ": "ysp{HmmpuBgC`GmHbQ[t@O`@IRUn@Wv@Up@Ut@Ut@St@S|@Op@Qt@Ov@Q|@Ox@Kp@OdAMhAMbAKbAI~@I~@IdAEbAG`AIdC{@`Y_@~LIvCAr@Cv@Ar@Ax@?x@?pBBbCBv@Bv@J~Cb@rLBp@\\bJDdABbABbA@fA@hA?~@?p@Aj@?j@C~@C`ACdACz@E~@G`AQvCAF]|EUvC{@lLq@nJ", + "zgierz|zgierz jaracza": "g{l{HsepuBe@e@mCaCyCmCkSaRw@c@w@q@yAoA_Ay@_Ay@][u@q@_A{@SQy@w@a@_@g@e@c@_@YY][cA}@][]Ya@Wa@UOGSIa@Oe@Me@Ma@I_@Ga@Ec@Ce@Cg@AU@K?K?k@DWBWBq@Je@Jg@Lg@Pe@PYLYNs@b@q@d@q@f@qDnCwAfAEDqAdAWVYVe@d@g@h@e@j@e@l@e@n@c@p@a@l@SZOZOXQX_@v@MVKVs@|AWl@Q`@}CnH", + "zgierz|łódź radogoszcz zachód": "g{l{HsepuBxApAf@d@RRr@p@^\\RRDF`@b@VXXX^^ZZdCzBrBnB~@z@`Az@RNVRRNVRZRXPZPXNXN^NDBPHVJ\\LTFXH`@J\\H\\H`@FTD\\D^B^D@?`@@f@@j@?r@Aj@CbAIbBQ`D]nCYfAKFAz@Ix@Kp@Gz@Kx@InAMv@IdAMv@IdAKt@I\\C^EnAIt@Er@Cf@Af@?D?`@Al@@`@?~@Bx@Bz@BlAHF?nG`@z@Hb@Bn@H`@F`@Fb@Fr@NfAVh@Pj@Pl@Rh@TTJJDDBD@FBJFNFLHNFNH", + "łódź radogoszcz zachód|łódź żabieniec": "gnh{HscouBDBJFLHLFPJPJh@ZhHlE~AbAjAp@pAv@rAx@tAx@jBbApE`CdCrA`DbBfAl@bQdJBBrGhDxDrB|Ax@bBz@|BnA^RhB`Ap@\\hAl@fDfBxAt@h@Tv@\\t@Tp@Rl@Pl@Lp@Ll@HD?h@Fr@FdBF\\?h@?r@Ab@Ap@Ep@Gp@Kp@Kn@Mx@Sl@OzQiG", + "łódź kaliska|łódź żabieniec": "ar|zHynquByCjBMHwHzEqIlFSLYN_@R[NWJYJUHUFUF{@RWFWF[JWJIBMFYNWLWNQJEBSLo@`@g@JIFOJGBGDKFwChBQJCBgC|AgC|AMHGDGDGBGDGDGDIDGBGDiCxASLOHIDoBfAKFGDGDGDIBGDA@EBGDGDGBGDIDGDGDGDGDMFMHeC~AKDGDGDGDGDGDGDGDIBGDGDGDGDGBGDGDA?GDGDE@A@GDGDOFu@b@]R[PSLYP]P_@TED]T_B`AuBpAy@f@mBlAWN]TGBYR[Ra@TeAp@aF|CqFhDoMbIcDrBcDrBIDyCjBiC~Ag@ZkAt@o@^y@h@ULSLOHQHULYL[Nc@Pu@VcEvAYHuBr@cDfAeH`CeCx@gFdBgA^sBp@", + "łódź kaliska|łódź pabianicka": "ar|zHynquBRe@bA_Az@u@bAaAFGnCmCXYFERQXYBCZYFElAeAVU@AJIVUJIRQLKJINOHGJIHGJIFENMRMDCNKHEPKLILIHENINIRILIbAe@VMhB}@~Au@|BiALGTKDATKTKXKVIZITGXGTEr@M|NeCfB[jCc@`F{@`@I^Gb@KjBa@dE_AFAFAjCk@zA_@HAt@Q@?`@IbAUhAS`@I^GHCh@GFA@?FARCNC\\CTCl@GHA\\CNAPAPAXARA@?PA`@AnCKXATAVCb@C`@E^E^E^G|IsAh@I\\G\\I\\GVSRERGPERGXKZKb@Q\\M^QVKp@[bAe@TKPIBATKb@QXMb@Q`@O^Ov@W|Bs@^M^M^OZMTIPI\\OnEqBn@Yh@W\\QNIJGZQHGPKZSVQj@e@l@i@t@w@`@c@b@g@t@aAl@u@f@q@|@kAxAkBvC{D", + "łódź chojny|łódź pabianicka": "}quzHis~uBU|EC^AZ?XAv@Az@ATA|@ErBErAMzBGnA{@bQk@~Ks@~MMlCK`BK|AIrAKhA[vDKlAEf@Eb@Cf@C`@Cv@A\\Cx@?l@AhA@x@@tA@dABr@@d@Bf@Dd@@XHbAJfAHv@Jx@Jn@Lp@XxAR~@H^FPDRBHFRNd@Xz@JXVr@Rb@b@`Ad@dA|B|EbD|GtChG|@lBf@hAZx@l@bBHXPj@J^J^Jd@XlAVvAHf@Lz@Hv@JbAJjADz@Dt@Dn@@b@BdA@v@?r@?X?J?PA|@Ax@CfACf@C`@Et@Cf@C`@Ip@C^Kz@Kz@SlAGb@Oz@oAnHeBzJaAxFY|A_@nBKd@Ml@Oj@Mf@Mb@Od@IVIVM^O\\Qb@S`@Sb@]p@Yf@e@r@]h@C@g@r@_@L[b@}ApB_AjA", + "łódź chojny|łódź dąbrowa": "}quzHis~uB@IFaDVqERoEHsBBw@DuA@w@?c@?gAAoACgACu@E{@Ck@Ee@Es@Ee@Iy@Io@Io@O{@SmAMk@Oq@Qs@Mg@Qo@Ma@_@cAQe@c@cAO[Q_@[m@[g@[g@KQa@g@]c@Y]_@a@[Yg@e@e@]a@Y_@Sg@Y_@Qk@SIEWIUG]Ks@OeB[m@MqB[qASo@IMA}Da@gAOcDi@sDm@}AWeCc@", + "łódź dąbrowa pbs|łódź zarzew": "ktwzHusavBiCc@i@KwAUqDs@qCo@QEiBa@_AS_BUgAO_@Es@G_COyBMwAKcEWaO{@oAImHe@sAIaAGo@CwBOkAIkCOeDS", + "łódź widzew|łódź zarzew": "me}zHgwfvBm@tHGn@s@jHo@fIa@fFJp@IlAUfE@r@Et@GzAEnAAv@?z@?z@?|@Bz@Bx@Dz@Dz@Fz@Hz@Hx@Jv@Lx@Lx@V`B\\hBNt@RbATbAVjAXfARt@Rr@ZbA\\dATp@Vn@AN\\x@\\v@Zn@Zl@\\l@\\l@`@p@b@n@b@l@b@j@TXVXZ\\`@b@b@^NN\\Z\\Xd@\\f@\\ZR\\R\\Rj@Xl@Vb@Pb@P\\Jd@Nn@NZFXFf@Hn@Hn@Ft@Ft@Df^vBz@F", + "sosnowiec dańdówka|sosnowiec kazimierz": "coxqHo_`tBCgAC}AAkDAwAA}Ag@s]EiDAkACgCAuBAsAImEIaFC_C?CAaBB}AB}AHqBNgCd@}GTgCN}ALgBFiAFuAB_ABkA?}@?{AAkAEcBIeBGaAKoAKeAE_@Ge@Ik@O_AMw@Oy@Mm@U_Am@_C[oA}WyeAMg@q@kCCKo@cC]sAUu@Uo@Uo@Wk@Yq@[k@Ye@Ua@QWOS[a@SWOQOQSSKKGGYWWS_@[e@[eAm@{@c@_Aa@qJgEi@Wc@Sc@Ua@Ya@Y_@Yc@_@KKo@q@_@c@]c@AAYc@]g@[i@o@cAo@iAEIGG_EcHeAgBkDaGcEeHsBkD_@k@Yc@c@i@[_@_@c@a@]a@]_@[g@]_@Ue@Wc@SMGSIc@Q}HwCkCaAwAi@g@Sm@Y[Q]U]Ua@[}@u@i@g@UW", + "sosnowiec dańdówka|sosnowiec południowy": "coxqHo_`tBFdFDrCPhLHxFFpDLxHHfFH~FDtCJlFR~L@|@HpFJxH?r@?x@C`AAz@Ez@E~@Gt@Ix@Gr@Kv@QlAUxAsAjIQpAKt@Gj@IbAIdAEbAE`AAv@C~@?P?p@@xBB`AB|@D~@F|@HjA@@N|A^dCZfB`@vBV~Af@rCl@jDl@fDLv@N~@Lx@Ht@Fp@Hz@Dv@Dx@Bf@@V@L@z@@`A@~@?|@?~@A|@C~@C~@G|@Gz@I~@MfAIp@M~@Mz@Oz@Mt@Ml@ADQv@Sr@Sn@M\\_@dAQb@{@nBMXUb@m@fAs@nA}@~A}@zAiApBkAnBa@n@c@n@_@h@c@j@mB|BGFILaFdGiFlGiEfFa@h@aBhCWd@MV", + "katowice zawodzie|sosnowiec południowy": "k|vqHwthsB?_CB{AD}ALsDRsFDoAHoAL_B`@sEPaC@kBLgEL{EVaHH_EF}FDyC?qDG}FKyFSqGYqGi@wIm@cJcDif@UkDOyBMyCOuCo@aIu@cJa@cFCa@YiEM_CIcAEw@W}D]sD]kD]iEw@{KWiC[mBe@uB]mA}@oCeA_Di@{AcAgCkAgCqAyBi@y@{@kAmA{ASUw@}@cAgAkC{BoCqBqLwIeHeFsCsBe@]uCcC_BkA{B_By@{@s@u@Y]MSIOYk@KSIWKYGQQq@Kk@Ko@QyAGo@Eq@Ck@Ao@?_@?_@@M@s@Ds@B[BY@K@KFYFa@F[H[HYN_@L[N[", + "warszawa gołąbki|łowicz główny": "w{s}Hsmi~BB\\Dr@Ft@Fz@Dj@Fv@Ft@j@vGNlBH|@N`BV~CD`@Fx@Fr@Fp@Ft@Dh@Fv@F~@`@dHR|C?@VfE`@|GB\\Bh@@HDt@Dz@Bv@Dv@Bx@Bv@@L@h@@v@@v@@v@@v@?v@?x@?v@?rAAtAEdGe@pj@Ar@Ap@IbJAtAArAAhBCdBAjBChB_@ve@?JQzTW~ZI~HA|BCvAAtAC|AApA?JKxIC|A?LAb@E|CGbGSfPAdAAdACzAAxAA`BYf]A|BGbHGbH?TAhBA|AArB?\\?J?JAdBAdBGnOApEAvAAvAAxAAzAAdAAbAGhIClCEvEA|AAxACxA?|ACzAEdFApBEhFQzTOfQCnD[f_@ClDAx@?x@AnA?|@?~@?|@?X?b@?z@@`AB`A@`ABv@Bz@D|@B|@Dr@Bj@Bj@Fx@RdD`@`Gn@tJnAlR|@fN`@dGf@rHtBl[hDpg@zEls@hBlXVnCXhCd@xDn@hEvBxMp@jEp@hEThBPjBH|@hAjPv@vLnBnZd@tHrBf[t@`LdA`PJnBHfBFrBBlBBvA?zA?dBCzACvAEnBa@nIe@~JI`BG|ACbBCvCA~A@|J@z_@?fF@zD@pABlAFpAFhAFdAJnALbAPlATtA`@tBl@hCvGdXvCvLp@lCjKtb@nNjk@vJx`@DNrAlF^|AxBxId@rBb@lB`@tBRhAPbAHf@PrANpANlALxAJnAJnALdCDfADlABhABdAFfMFhMDpH?LFlMNh^@`AF~KHjR?R?L@^DxJFvLv@jfB@rC@dAXbi@DtJFhJ@zCB|EDbH?NDhJ?RX~j@@bB?`B?xAA~A?jAC~AAbAE|AEpAEnAGrAGzAGfAMbCUnEuCth@aCnc@_@dHm@|Kw@nNiA`Tg@fJ{A|XmBx]AH?Lc@rH]~GqB~^eBn[aAvQeC~c@gBn\\qBz^wAxWmObsCo@nLuFldAqObuCyDvs@UfE]nGGfAmAvTeFd`AGrAoBx^]jGaHvpAAH{Dtt@m@pKkB|]mDjp@gGriA{@|OMzBK`CIfBEnAGzAEzA?LCz@M~FIhEEvAaBdx@q@r\\oDjgBkAbl@GlCE~BGxBG`BE|AGlAK|BOhCsCvb@kGv_Aa@nGoBpYuKjaBwBz[Gv@ObCY|Do@pJIxAK|AGzAG~AAnAApA@pABrADzAH|ALzANzALfAPfALv@Px@Ln@Pr@Rt@Tv@Tx@hCpI|@xCjAzDxBnHrAnEdAlDlC~IhCxIvDfMBHb@rAX`Ap@|BdB|Fb@tAZbA\\bA^`A^`A\\v@\\t@^t@^r@d@x@d@t@R\\T\\h@t@p@z@r@x@t@x@t@r@tHfHlCfCfD~CDB~@x@vAfAvA|@n@\\l@Vh@T~@\\^LXHVHjBl@tQxFh@P`@N^L^Lb@PZLXLJFZNXNZNXPVPZPDDXP^V\\V\\Vl@b@zCxBFD`D~BhBpAr@f@HFfI`GhCjBfEzCbQfMz@l@`LfIVPDD\\V\\VZVXTZVXXXVXXXZXZPRPRPRFHDDDFRXTXT\\V^V`@V`@T^T`@`@t@b@t@zCtFpCdFdG|KhEzHbGzKlAzB`@r@pCfFrIvOn@hArAdCh@`Ah@`Al@hAdB|CPZlC`FfB`DXf@|L`ULRdDdGf@~@f@|@hBbD~GdMR\\T`@vNxWDHb@v@fCtExB`EBDXf@Zj@pEhIfFlJ`CjErAbCBDDH\\n@DF`@v@Zj@Zh@Zf@JRLTZd@Xd@Xb@FHPVPVFHPXRTRXRXRRPTTXTVXZ@@Z\\XXZZZXZXLLNL\\XZXDBZVZV\\Vf@^dAv@v@l@XRnDjCpEfDdIdGJF|BdBpU~PNJb@\\bD`C`D`ClBvAp@f@t@h@l@d@n@d@LJNLZVXV\\XXXZV\\\\XXVXZ\\X\\VZV\\BBVZTZV^V^V`@LPFJNVPXNXT`@Vb@Tb@@DR^Td@Td@`@z@\\r@~@pBt@`BtFtLlEjJbBrDf@fAbE|ItChGnFlLfA|B?@Xj@|B`FlAjCf@dAb@~@lC|FjFdLxDjI`@x@Tf@Tf@Pb@LVLXL\\Tf@Th@Rh@Rj@JVHRFRBFVv@Ph@Ph@Pj@DLH^Pj@Pl@XhAZhAzA`G\\tANh@rDzNfDrMNn@pEhQbF`Sj@zBVbAn@hClBlHVfAzHrZfAdEJb@\\rAhCbK`Ndi@XhAXjAPp@Np@Pr@Px@Ln@Ll@TjATnAdIhd@RhA|@bFf@pCTpATpAbCfNHh@r@zDjBtKzBjMjElVb@bCb@dC@DfAfGHf@DPnBxKVxABJBLl@lD`AfF`AtFfAjGNt@RjATlA`Ltn@XbBz@tEvA|H~@hFdAdGrC~Op@tDpFjZ|Fb\\RfAX|AnAbHhEzUvChP\\hBRjARhAJn@Jn@Lv@Hj@@BHp@Jr@Hr@Hn@Fp@BTDXBZ@J@JBTBZDf@Dr@Fx@Bf@Bb@Bd@Bd@Bj@Bt@Bp@B~@@f@@j@@p@@p@?t@@r@BdBDvE@hB?b@BbBB~C@fAB|ABlAF~D@R@`ABxABvA@xADvD@dAFnIP~QDdF?h@BzB@z@@p@@p@@v@@v@Bv@Bn@Br@Bp@Dl@Dl@Bj@Dj@Dh@Fj@Dh@Fh@Fp@JlALjAhBjRVnC@FH|@JdAFd@Dd@Dl@Dj@Dl@Dh@Bh@Bf@Bj@Bj@Bh@@h@@h@@h@@h@?p@?r@?Z?h@?h@Aj@?\\Cn@An@Ch@Ah@Cj@CZA\\C^Cb@Ef@Eh@Eh@Eh@Gh@Gd@E^CVG`@E^Gb@Ib@Ih@Ib@I`@Kl@Kf@Kb@Kd@I^I\\Qn@K`@M^M`@Qj@Qh@Sh@Qd@GPKTSf@Uj@Wh@OXOXMVS\\QZWb@QXQXU^{@tAABILiBvCGJy@nA]j@]j@W^GJ]j@cCzDW^}@vAiAfBaBlCc[zf@U`@W^oApB_CxDk@~@g@t@e@t@U^}@vAcA~AcA~A}@xA", + "kutno|łowicz główny": "}sw}HkuauBjAyEDOxA}FLe@DSDSJ_@FY@IJe@Je@Je@?ANy@j@mCP}@Jm@DUNs@Ns@I[BMTcA?CP}@RaAPaAJe@F[Ji@Jm@\\iBDULw@F]Jo@Hg@@GLu@DUFa@Hi@Hi@Ho@Ho@Jy@Hs@BM?CDa@Hs@Fq@Dc@@KDo@Dm@Dm@Dq@Ds@Bq@Ba@@M@o@@A@s@DsA@g@Bi@?UD}BFcD@s@NuIHyE?IBoAvAg|@@o@@a@BuABwABwA@wA@y@@y@?{@@w@?w@?}@Ay@?{@Ay@As@A}@C{@A{@Cy@Ey@Cq@Cg@Ag@Ci@IuACa@Es@IuAIuAmAaSEs@Gu@{HcpAu@uLsHqmA}AuVe@_IyCcf@sBm]YmEq@kLaAyO_AiOgBi[YeIIcFA{CBkEHmFPiETcEtAmRxJcoArLc{AnD}c@n@eIhRoaCzSelClJolAJeBJeBFcBFcBV}OVes@Ves@t@irBJyXD{KDmL@sCBmC@iABkADqCF_BF{AFcBJeBLwBNwB^kFf@gHd@qHxAsRJ{Av@{KRmC\\kFd@sGl@gIvAoSXwDVsDXwDZsDXqC`@cDRwARwA`@gCb@gCrAoHF]BObAwF~@iFvDaT`Jug@`Jsg@`UmpA|DuTxDuTvJij@r@_Ev@_ErBuJtBgJrBaJfFeUjMgk@zT}aAxT_bAhBaIx@qD~CiNbI_^x@kDv@mDnByIbFwTfLug@tHq\\FUjBiIp@qCr@qCt@gC`@kA^kAnAgD~A_E`A_CbA_CbC_GhG_OpO{^pFsMpFqMbNe\\l@yAl@wAvAsDx@aCZcAZaAl@yBh@wBt@aDXyAXwA\\yBh@eDn@mEl@kEzA{KpDmWx@aGzCkTlAwIlAuIdAqHLaAtAyJtDcXx@{FbBwLbFg^bFi^nA{IlA{I|CyT|Hqj@pAeJpAcJnAaJd@sDb@sDPaBPaB^cEp@gIr@gIdBqSjEah@lBgUn@yHX}CV{CvH{}@xA{PJqAp@eIp@_IbBaSfEag@t@wIl@eHJmALmAFq@Hu@Hu@Hq@@IFi@Hq@Js@Hq@Jq@Hc@BOJq@Fa@DQLq@Lo@Lq@Lq@Nq@No@Nm@Lk@J_@DQPq@Pq@Ng@Pm@Pm@Pm@J_@l@sBjHcV`BuFtAuErAmEdEkNfH}UjHgV^mApDyLbCgIz@qChCwIjGwS@E~DyMzDoMJ]bHsUtBcH|Oai@X_ADMV{@X_AVy@La@Pk@Pk@Pg@Pi@Pe@Ts@Pa@Nc@Ti@Rc@Pa@Tg@Tg@P[N]Ve@Vc@Tc@T_@T_@HKZi@\\g@T[T]V]NS\\a@Za@VYVYTWNQTSRSRSVUXWXURQXUZUXSXSZSNKXOVQXOj@[j@[r@_@FCFC^SfG}CnDiBPKB?ZQ^S^Uf@Yl@a@TOZU\\UDEXSXSXUz@q@XWRQTSTS^_@RSRSPQPQPQZ]Z_@p@u@X]PURUNSj@s@f@u@\\e@Ze@NSDIf@u@Xe@JOv@oAbA_BfAeB", + "łódź andrzejów szosa|łódź widzew": "ywxzHysuvBQDOHQFGBQHKFQHQLSLWR[V]\\WXWZW\\a@n@U`@[n@i@dAsAnCg@fA_@x@Wj@a@~@o@dBmCrH{CrI}CrI_DpI}@`CaAdCm@bBo@bB}AhE{AhEo@dBo@`Ba@~@a@`AwDpIcFbLgB~D}@~B]~@[`A[`A[bAWbAWbAm@jCUhAQdAe@rCa@rC{Ihq@mHzj@gFj`@a@`Da@lDa@pD]xDYjDs@bJw@zJCX[vDEn@Gp@E^]nCE^El@Gn@QzBuAzQs@rIo@nIyA~Q_B`SYlDs@zIg@hG", + "łódź andrzejów szosa|łódź olechów pzs r82": "ywxzHysuvBPGPEPELCJAJADALCRAXAVAZ?`@?jABD?H?J@R?fBD\\@XAd@CtAKpEY~@Gp@Ej@?^@V@`@Db@FZH`@JZJ`@Nd@VZP`@XLHXVZZd@d@XZpAzA`AjABVt@~@TVTZT^PXXf@Vh@Rf@Tl@Tt@Tx@Nr@Lp@Jl@Hj@Hr@Fl@JnAZjEZhErBnZ", + "łódź olechów wschód|łódź olechów łoc": "knvzHgbrvBg@cH?EWaDWqDGu@]qEGaAEe@Ec@E_@Ge@Gg@", + "łódź olechów pzs r16|łódź olechów wschód": "ssvzHgfsvBFf@Fd@D^Db@Dd@F`A\\pEFt@VpDV`D?Df@bH", + "łódź olechów pzs r16|łódź olechów zachód": "ssvzHgfsvBFf@Fd@D^Db@Dd@F`A\\pEFt@VpDV`D?Df@bHh@dHNhBHlAVpDP~BHz@J~AH|@dApNzAtS~Cnb@n@xI^`F`@zFFr@|@vLVnDBXjAxOB`@\\xELdBLfBJbB@FJzAx@|MJdB^~F@PV|D", + "łódź olechów wiadukt|łódź olechów zachód": "ehuzH_chvBAw@IuE?O?OAUKuHIqFGcECuACuAAs@C}@C}@Ck@?EC}@E{@Ak@E_AE_A?GEm@C{@Gy@E}@AYC[Eu@KgBKeBc@yGEu@Cc@KuA?KW}DK}AI}A", + "łódź olechów pzs r3|łódź olechów wiadukt": "ssvzHgfsvBFf@Fd@D^Db@Dd@F`A\\pEFt@VpDV`D?Df@bHh@dHNhBHlAVpDP~BHz@J~AH|@dApNzAtS~Cnb@n@xI^`F`@zFFr@|@vLVnDBXjAxOB`@\\xELdBLfBJbB@FJzAx@|MJdB^~F@PV|DH|AJ|AV|D?JJtABb@Dt@b@xGJdBJfBDt@BZ@XD|@Fx@Bz@Dl@?FD~@D~@@j@Dz@B|@?DBj@B|@B|@@r@BtABtAFbEHpFJtH@T?N?NHtE@v@", + "łódź chojny|łódź olechów pzs r3": "}quzHis~uB@ITiEESPcBPeBJeAJmAHkAFaALqCt@uNH{A|@}Pd@wHh@wHl@iHjAuMnAwMp@eH`AqKRgCNkCDu@PcETwEFaBHcBBy@D}@@}@By@@{@@}@@_A?y@?{@?S?m@Aw@Au@A_AC_ACw@Co@Cm@Ci@C_@?G?CEw@G{@G{@MgBUwCS_CW_D{@sKUoCEq@_@sEGs@OkB[yDIgAImAEk@Eq@Gq@IqAIwAMwBa@kGCa@Ca@AUAOCg@Ac@Ci@Ci@Am@Cw@Aw@IuE?O?OAUKuHIqFGcECuACuAAs@C}@C}@Ck@?EC}@E{@Ak@E_AE_A?GEm@C{@Gy@E}@AYC[Eu@KgBKeBc@yGEu@Cc@KuA?KW}DK}AI}AW}DAQ_@_GKeBy@}MK{AAGKcBMgBMeB]yECa@kAyOCYWoD}@wLGs@a@{F_@aFo@yI_Dob@{AuSeAqNI}@K_BI{@Q_CWqDImAOiBi@eHg@cH?EWaDWqDGu@]qEGaAEe@Ec@E_@Ge@Gg@", + "retkinia|łódź pabianicka": "k`yzH_aouBMo@kAeGqAuGyBcLq@kDCcCMm@{A}Gq@yC[sA[{Au@sDw@aE[aBG_@COKq@K}@IaAC_@Cc@Ca@Aa@Aa@?e@A]?C?a@?Y?M@c@@c@@g@Ba@Bg@Bg@B]BW@QDa@D_@Fa@Fa@D_@F[FYFYBSHYHa@La@Ja@J_@JYL]L]LYJSHSHOHQLSLUBCNUNSNSPSNQJIJMJKLIPODCJIRMPKNIPGJGRIPGFCFA@?l@STITGRGFANCHCh@GFA@?FARCNC\\CTCl@GHA\\CNAPAPAXARA@?PA`@AnCKXATAVCb@C`@E^E^E^G|IsAh@I\\G\\I\\GVSRERGPERGXKZKb@Q\\M^QVKp@[bAe@TKPIBATKb@QXMb@Q`@O^Ov@W|Bs@^M^M^OZMTIPI\\OnEqBn@Yh@W\\QNIJGZQHGPKZSVQj@e@l@i@t@w@`@c@b@g@t@aAl@u@f@q@|@kAxAkBvC{D", + "retkinia|łódź retkinia": "k`yzH_aouBz@nDFT@JBHBJpAxGrGp\\f@fCl@|C", + "łódź lublinek|łódź retkinia": "{otzH_zcuBc@m@oAeB_B{BCC}\\ce@KMwByC[a@mFoHu@cAi@u@e@q@[g@c@u@U_@_@s@]q@Ug@MWUg@O_@Uk@M[Ws@Qe@]cA[eAY_A]sAWiAQs@Mq@}BkLqD{QwAkHwAqH}CwO{CuOkJwe@wCkOCMCMuC{NkBoJi@oCeB}IYuA]gBYuAi@qCqAwG", + "pabianice północne|łódź lublinek": "axjzHqv`uBMKQOQMOMSMOKOKOIOIIEIEQIYM[K]M]K_@K]G_@G]Ga@E]Eg@Ec@Eo@G}_@oDe[sCkTqBgCUeNoAWCuFi@uTqBgCWiGk@SAUCm^eDwSoBw@GUC_@C}@Gm@Cw@Cu@Cq@Ay@?s@?w@@kQP_@?_@A_@Aa@A_@E]Ea@G_@G_@I_@M[Ka@O_@QQISKUM[S]U[Y[W]YYY[]Y[?AW[Y][e@]e@oCsDmAcBg@s@]e@yEuGcDqEaByB{AwB}CgEu@eAGG", + "pabianice|pabianice północne": "cwhzHuz|tBg@kAYq@i@oAUk@a@{@cA_C_A_C}@yBy@uBe@gASm@Uk@k@}AgAwCcAqCsCeHgHqQSi@oBaFGMGMqBeFyFuNmA{CWk@Se@Ug@Sc@Ue@MWQYO[U]OWU[EGGISWMOOSSSOQQOOOQQBI", + "chechło|pabianice": "yxezHcsutB{AkG_@}Ae@mBS{@Sy@S{@YgAUcA]mAWaA]iA]iA{@wCqHgWkEaOeNud@IWkKi^mGmTkA_EIWq@}BaAcD[eA[eA]gA]aA_@eAa@eA_@eAkDuIgAqCaAeCeAiCw@oBq@eB", + "chechło|dobroń": "yxezHcsutB`D|MrPtr@jHlZhIf]DNnOjo@xKnd@fKxb@DTbDrNBLtCvL", + "izabelów|zduńska wola": "oa_zHcvlrBaA_i@k@_\\Y{NIoECaBEkB?y@Ak@?{@?oA@qA@oE@_BAiB?{ACmBc@y^CuBAKCqCUgR", + "izabelów|męcka wola": "oa_zHcvlrB@TZbQ|Abz@bArj@^lRB`BB|A@rA@nA?pAApAAzAAhAGlEc@x\\KpHaBpoA[fVWhRAvAAtA?rA@pA@pADrAD~ADbBFbBHhBn@`Rp@fRVlH", + "męcka wola|sieradz męka": "y{~yHs~_rBVxGpAf^T`HTrGF|Ah@|OVrHLbDhAb\\^hKNfEDtABpABtA@fA?H@rA?nAAnE[vcA?VC`HOxe@G|VE|JA|D?~AC~AApAAh@Cd@EjAGlAKnAMlAK~@M|@O`AQ~@Sz@Sz@U~@Y|@Wv@[v@Yt@]t@q@nA]l@_@j@[`@a@j@kAxAmDjEiGxHa@h@[b@_@j@[f@MTOVYj@]r@Wj@Sj@Ul@Od@KDK\\Mb@Qr@Md@Mh@Ov@Q|@Mz@M`AKz@KbAMrA{@~I", + "sieradz męka|sieradz warta": "}a`zHshrqBa@jEOzAQhBMbBOhBK`BIhAItAGbAGfAE`AC|@A\\C`ACxAAvAAtA@pA@vA@nADlADtAFtAFnAHpALpAJrANnALlAPnAPlARnAd@lCbHra@jEhWfBbKp@bEr@~DbIre@Z`BVxANv@Rz@Pv@Tt@Tv@Tp@Vr@Xn@Xp@Zl@h@bAh@bAfEpHrItNbFzIf@~@\\l@BDb@z@Xj@Xl@JRf@pAVr@Tr@", + "sieradz|sieradz warta": "ewbzHy}ipBJi@xC}NLo@dAiFdFoVNo@jLsj@^gBNs@Lu@Ls@Lm@PiAPoANiANsALkAJsAHiAJuA`@iG@ErEur@h@eIHiAJkAHiALmALiANmALeAPoAVaBTaBD]lKuu@xE{\\dCgQPgAPiALw@P}@Rw@Ry@Ru@Tw@Rm@To@N_@N]N]LYN[Ra@Ra@\\m@`AkBTa@nMeVla@cv@lDuGpEqILUnGaMfXkg@pBuD`@u@b@y@^u@Xm@Xq@Vk@Xu@Ts@Ru@Tu@Rw@VeAVgAXoAR{@z@sDPy@Pw@Nw@Nw@Ly@J{@Hu@J_AFw@FaAD{@D_A@{@B_A?{@@_A?cD?qE@qg@Bcx@Bky@?{A?yAAqACsAAqAEyAAk@AUg@iSEmBE{AI{C]sJCuAMiFq@eXW}Ka@sPIaEOsFGeCO{DI}BEeBQsGEgBM_DMsDKmCCq@GaAG{@Gw@Gg@Gk@Io@Ik@QkAMs@Os@Oq@Qm@K_@K_@]eA[}@Qa@[w@Wg@Sa@Wg@S]qAmCuAcC]k@_@s@Uc@]q@]s@Wq@]{@Yw@Ww@Y_AUw@gAeEa@uA]mAYaA", + "retkinia|łódź kaliska": "k`yzH_aouBMo@kAeGqAuGyBcLq@kDq@gD[uA[sAa@}A[iAW}@a@oA]cA]_A]}@Ys@_@{@Yq@[o@Yi@Wg@[m@a@u@_@o@Wc@]e@Q[W][c@EG_@g@_@g@_@c@]_@WY[]_@a@QOECWW[[WS_@[[We@_@CAYSYQUQUMYO[MOGMG]Ma@M]K]GYGQCIA[CYCa@C]?W?Y?C?U@C?U@WBC?WBWDA?u@HC@sANqANk@`@MBMDSFg@JQFKBODQHg@Rk@TWJeCdA_@NIDi@TqDxAYLi@Tk@TqAh@eBt@_A^QHQHWLYNIDSJYPo@b@q@`@", + "bełchów|skierniewice": "auo|HeghyBNIJIXQXQ`BcA~AeArAy@NKRMFE|AaAh@]FEVQVOp@c@VQRKDCNKlAw@dFaDpAy@tFoDhIiFhIgFfIiFPKd@[d@[f@[h@_@d@]b@]^YTQTQLKVUb@_@f@a@d@c@f@c@f@e@^_@VWTW^_@\\_@d@g@b@g@b@e@`@e@`@e@`@i@TYf@q@f@o@^g@^i@f@s@^i@^m@`@m@`@o@`@q@Zk@b@s@\\m@Zm@\\o@^o@HORc@Xk@Xk@`@{@Xm@Xo@Xk@\\{@HQN_@dB}DrB}EN]`B}D@AbC{FfBgE`CsFx@oBVm@|BmFVo@dB_Ebd@yeA~@wBxa@kaAxh@mnAb@eAlBsEDIlAsCd@iAlDiIrB}EnDmIxIqSpEmK|R_e@tCyGHS~AuDFMfCeGTe@pEoKPc@Pc@Pe@HWJWL_@La@Ni@Ng@Ni@n@cCr@kCLc@Lc@Je@Lc@Je@Jg@Jg@Jg@Hc@He@Fe@Hg@Fg@Fg@Fe@De@Dc@Di@Dg@Dg@Do@Dm@Bo@Dm@Bo@Bo@Bk@@m@@m@Bm@?m@@m@@k@?m@?m@?o@Am@?o@?MAc@?MAK?UAc@Ak@Cm@Cm@Ak@Em@Ck@Cm@Ek@Em@Gk@Ek@Gk@E_@AEGg@Gg@Ig@Ii@Ig@Ia@Ga@Ic@GWG[Ic@]cBwBoKKi@CQGWKk@Ou@]eBCKESCSEUEUE]EWEYCOAa@", + "bednary|bełchów": "}y_}Hm|myB@D|@~EHd@RbAPhAPhAPjAJn@Hp@Hd@Hf@DVVtA@LBJH^Hd@nGh^X|AdFjYzCrPTrARhA|@`FrAnHn@lDpCbPt@~Dj@bD`B`J`Gf\\fAjGZdBZ`BLv@BJhAhGzAnI~CdQfDfRhAhGz@~EJj@F^Jl@Jx@Hj@Hn@Hl@Db@@J@LDb@Db@Fp@Fp@Dp@Dp@Dr@Bp@Bp@Bp@Br@@f@@h@@v@@h@B|BJ~L?V@f@@bBJtK^va@B~CFfHBnC@f@D`E?`@@Z@XBb@@X@\\@\\@vA@L@d@@f@@d@Bl@Br@Dr@Bl@Dh@Dd@Dh@Dj@Fj@J|@Hz@`@zDbA|J^nDBNVdCD`@D`@F^D`@F^F^DXFXDTFTFVHZFRDPJZLZJZLXJTP^LVNVNVNRLRHJHJPRRRRRNNRNRNPLTLRJPHTJTHPFVFTDXFP@NBT@T@R?R?RAVAVCVETETGLCLEJCPIRIPINIPIHG@A\\URO@ALKPSPOJOt@}@NQJQNSJQnC{Dv@oAdC}Dj@}@hIsMbA_BhTg]f@u@f@w@V_@T]Ze@\\e@X_@Xa@\\c@^g@^c@`@g@\\a@^c@^c@^c@\\_@`@a@^_@Z]b@a@DGXW^]VWj@g@`@]`@]`@]JIVS`@[\\YBC`@Y`@Y`@Y^Wr@e@l@a@BAxA_Af]mTnb@eXtEwCDC`HmEdh@e\\hIiFnAy@rA{@nAw@pBqAr@c@rA{@jAaAtA{@^WhHqEfIiFhIiFhIiFfIgFjAu@hAu@rD}B|AcAvD_Cb@YHGDCh@]n@a@TOxEyCzBwAt@e@fAq@h@_@d@YDCnBoApEuCPM`@W^Wb@Y`@Wb@Y~@q@VQVQPMFEZSb@[^U`@W^WxCkBHG@?^W^Uj@]h@[TM^U`@U`Ai@ZS@?\\Sl@_@\\Ub@Y|CoB", + "warszawa stadion|warszawa wschodnia": "q}z}H_dm_CaC?aCAM?O?M@O?S@U?S?{CAS?U?SAO?QAKAMAMAKCKCIAICICECGCSIOIQKMIUQQOMOOQMQMQOWKSIQOYM]Ui@_@mAOk@Mi@Mm@Km@Mo@M{@Qi@{@aGIc@Ge@My@CUGc@G_@G[Ia@aCsK}AkHaBuHu@oDSgAW}AU{AGe@Io@SuA", + "warszawa powiśle|warszawa stadion": "q{x}H{`j_CMk@g@mBc@wA]aAQe@Qi@a@iA_@aAAEg@eAi@eAg@cAAAi@_A]g@_@k@uAiBW]W_@Ye@S_@Q]Q_@Ue@Se@q@eBcBaE_G_OmGuOQc@GQQ]Qa@S_@_@o@a@m@QWW[UWYYc@a@]Ys@e@YOUKUKUKQGMEOEMEGAQGSEQCOCMC]ESAMAO?MAM?M?", + "warszawa powiśle|warszawa śródmieście": "q{x}H{`j_CEB|AhHDdALl@Jd@Jj@Lp@rD|TJn@Jp@Lz@N`ALx@Lz@xAjLlEf]BRFn@Fj@Dh@Bl@BX@\\@`@?n@?`@?b@?\\E`BA^?d@Ab@?^?^?b@@^Bd@@^BXB`@Fb@Dd@Fb@Fh@JdBR~A\\|AtCzTID|AzLHh@Fh@Fb@F^Jh@Jf@Jd@H`@VbAv@pB`@dBH^HZFXF^FZDZF`@D\\VrCPF", + "warszawa ochota|warszawa śródmieście": "wiw}H_sb_CSwAcAeIIm@Is@MmAI_AOgBEi@Ek@KcAE_@Ga@Gm@YsB", + "warszawa ochota|warszawa zachodnia": "wiw}H_sb_CHn@Jl@Hj@Hj@@F^|BJr@v@`FD\\l@zDdA|GNfA`B~K^dClD|UL|@N`AP|@P~@Jh@Nv@Nx@?DHd@Jp@Jz@NfAThBTnB\\pCf@`EHj@F^DZBJHh@DRDRP|@Iz@Fn@Dj@Fn@Dr@J`BFl@B^Fn@Et@Vb@Jt@xAtLLhAR~AHh@@L", + "warszawa ursus północny|warszawa włochy": "itq}Hkjn~BI_@K_@WgAQm@Om@[iA]qAw@yCU{@Mg@GWSw@Mk@Qq@Mi@Mg@?Cs@_DYmACO_@{Au@gD]{AACsAcGsAcGOm@WgAYsAQw@Mq@Mq@QeAQeAG_@Kw@Y}BGs@MmAEo@Gu@Ew@IuAG_AOqCw@wAAu@Es@Ek@Go@Iw@Gi@Ko@Mo@Kk@Om@Qm@Og@Si@Sg@Se@Wg@m@mAc@y@Wg@Sa@Ue@Sg@Qe@Si@Uu@{@sCkAwDk@iBSq@Sq@Su@Oi@Oi@Ok@Mg@Oo@Me@Mi@Mg@]{Ac@oBKc@Oq@Qq@Qu@Ke@ACACYmA[sA", + "warszawa gołąbki|warszawa ursus północny": "w{s}Hsmi~B_@sGc@_HA[k@aJEq@Eq@IsAGq@Gq@Gm@Ek@Iq@Iq@Ge@UwASuAk@wDyAoJMw@E_@Ig@Gi@Gg@Ee@Gg@Ei@?GC_@Ek@Cg@Ck@Am@Ae@Ae@?OAW?m@?a@?a@@]?_@@i@Bi@@e@Bg@Bi@Dk@Fo@B[B[J}@L}@D[F]DYD[FYJe@He@Jc@Lc@Ja@Ja@Pi@Pk@fKs\\hB}FzBkHxBcHrGySzEqORo@n@qBR[J]Lc@J[H]J_@J]F]H]F]H_@Fa@F]D_@D_@D]D_@Ba@De@Bg@Bg@Dk@@i@H{BnBKFt@Dn@LlAFr@X|BJv@F^PdAPdALp@Lp@Pv@XrAVfANl@rAbGrAbG@B\\zAt@fD^zABNXlAr@~C?BLf@Lh@Pp@Lj@Rv@FVLf@Tz@v@xC\\pAZhANl@Pl@VfAJ^H^", + "warszawa ursus|warszawa włochy": "itq}Hkjn~BI_@K_@WgAQm@Om@[iA]qAw@yCU{@Mg@GWSw@Mk@Qq@Mi@Mg@?Cs@_DYmACO_@{Au@gD]{AACsAcGsAcGOm@WgAYsAQw@Mq@Mq@QeAQeAG_@Kw@Y}BGs@MmAEo@Gu@Ew@IuAG_AOqCI}AEm@Ei@Ek@Ee@Eg@Ik@Ik@Ig@Kg@Ke@Ia@Oi@Ma@Qe@Oa@Oa@S_@Q_@Sa@Ua@k@gAc@y@]q@]s@Yo@]y@Yw@Yw@?AYy@Yy@k@kBQk@Qm@K]K]Uu@Qk@Qk@Qo@Ok@Qm@Mi@Ok@GYIYWkAYmAg@wBKe@Oo@Oq@Qu@Kc@AEAAYmAc@oA", + "warszawa ursus|warszawa ursus niedźwiadek": "itq}Hkjn~BVbARz@Jf@f@tBR`A`@dBLh@SNLh@Ll@XnAXnAPx@Px@Pz@TdATfAVjAVhANv@Pt@Lh@dAxEtA`GrA`GrA`G@Fx@jDVlADL^`Bn@pCd@rBl@lCpAxF", + "piastów|warszawa ursus niedźwiadek": "w{n}Hiye~Bs@}CEQMm@U_AIa@e@qBgAwEMi@sAaGESmAmFa@eBs@{CsAaGCMoAsFqA}F]wAI]_@aBwDqPk@gCg@yBsAaGsAaG{D{PMo@Ok@Kk@UeAKi@o@gDOu@_@mBWkAWkAWgAUeA}@kB", + "piastów|pruszków": "w{n}Hiye~B\\zALl@Nj@Ln@XnAHZh@`Ch@~BLj@FTTbAf@zBDPnArFVfA?@z@vDtAbGDT@@jAhF\\zAv@fDj@fCf@xBtAbGrAbGtAdGrA`GhA~EJb@Px@bAhErAbGn@nCvNbo@XlAVlAt@~C@HDNvAhGBJx@rDd@pBhA`FlBpI`@bBbBlHZvAPr@r@pCVbAPr@Rv@Px@`@`BLj@b@hBNn@Jh@Rx@~@`EVfA@Dj@hCJd@bDnN", + "parzniew|pruszków": "}xi}Hijv}BeAsEOk@Sy@Kc@EMg@mB[kAYkA[mAWeAs@aDaEmQEQI[yAuGiC_LWmAg@uBI_@ESqAuF}@}DiAaFmAkFoF{UiGgXiAaFWmAWiAk@mCk@qCm@mCeC}KCK", + "brwinów|parzniew": "g~f}Hwvm}BQs@I]Oo@[mAYgAiAuEYgAYiAYkAYkAcN_m@_CcKmDkO_@eB}Mkl@[uAYkAaBmHKg@ACQs@Q{@[qAWgAyDmP[sA_BcHuCkMk@eCk@eCsDaP[sACOUaAWqAq@mDScAWiAWmAs@}C[sAWgAWkACKS}@", + "brwinów|milanówek": "g~f}Hwvm}BPt@Pv@`AbEJf@H^Nl@n@|C~AzHXrAZtA^dBfAzEjBfI`@dBXnApCzLH\\h@~BrSn}@\\zA~CbNpYloA|A|GdBrHNr@Ld@jFlUbCjKR|@T|@XfAnBvHFZXdAZtAXfAJb@", + "grodzisk mazowiecki|milanówek": "}x`}Hmzz|BwCiMm@oCm@mCo@sCeAyE{@yDqA_GyCyM_CoKgBcIkBmIa@qDgAyEg@yB[wA{AsGCICM_GgWsKce@wCkMc@mBgAoFyKwe@]}AS_AOo@Mo@WkAs@iDWsAYoAYsAYsA[sAYoAQw@", + "grodzisk mazowiecki|jaktorów": "}x`}Hmzz|B\\xALh@\\zAXhABJNl@HX`@`BtB|HFRhAfEl@`C~@~DFXhAbFDLbBtHb@lBrB`JpAtFp@vCBHH\\`@bBLf@Jb@Rt@z@hDTx@Rx@d@nBr@zCn@hCRv@xA|FNl@Nj@\\zADNd@rBdApEXjA~@`EdFtTXnArK`e@jE`RZrAXpAXnAzCvM\\xAfZfqAFTdAvDrB`Jl@hC`@dBtQhw@xAnG", + "jaktorów|międzyborów": "qh||Hklm|BnApF@FdJt`@\\vA`@hBRx@xFnV~C`NrSd}@\\zAvCdMH^`DdNxEpSvMlk@~F~VZxAlCfLjJda@|@zDfCtKbBnH~A|Gx@pDzCrM`CbK\\xApCxLhBzHhBzHrAzF", + "międzyborów|żyrardów": "sww|Hex_|BtAdG@FJ^BJBHpMzj@dDnNbClKd@rBzApGbAjENr@HXbAnE~@|DfAtEnCrLFXlHh[lBhIt@bDrEzR^|AJf@", + "sucha żyrardowska|żyrardów": "ayo|H_wg{BuAaGo@wC}A{G[yAs@yCsMsk@aAiEeBwHw@iDgDeO}B_KI]S{@yEwSYuAq@uCqA}FYqAYoASy@Oq@Oo@UcA]wAgBwHWoAYmA[qAYqAmK{d@qFeV]{A{@wD[qAYqA[qAYqAwKge@yGoYkDcO}FuVCMWkAwBaJkWihAmAiFiB{He@qB_@}AEUw@gDmBiIEQeAqEgAyEo@qCqCuL{BsJYkAkBaI", + "jesionka|sucha żyrardowska": "i`n|Hgib{BeAuEOs@GWI[sDgP]yAcCqKmAqF{AuGiAeFcAmE}@{DuAkGy@kDy@qDyD}PgD_OyHc]WcAAICIGWAGAGOq@cAoE", + "jesionka|radziwiłłów mazowiecki": "i`n|Hgib{BpAxF^`BdDxNhDfOdIf^f@vBRz@r@|C\\xAzEbTn@nCxBtJd@pBtClMZnAzAxGd@tBd@pBz@tDhDfOvBlJBLd@rBnArFXnAXjAR~@T~@j@jClBnIj@hCPr@d@xBZrARz@FTh@bC~AdHjAzEPt@", + "radziwiłłów mazowiecki|skierniewice rawka": "yhk|He~yzBBJBHlBfIZtAZpAXpALh@Nn@TdAZnAXnAjBlIZtAZpA`@hBlBnInIz^Lh@ZxAxEvSnCpLZvAlChLXrAZrAlBhIZrA@FXjAlAlFNn@r@zCNp@XnAXlApE`SNp@Nn@R|@DNZxAJb@hDdOrC`MjMvj@vM`l@@@Px@Nl@\\zAd@tBJd@~FfWlAjFn@pC~Hn]XlAtAdG", + "skierniewice|skierniewice rawka": "kqd|H}t}yBo@eDKc@a@uBm@wCmAiGOs@G[uA}GUgAG_@GYCMKk@Ic@Ki@CME[Ii@Ii@Gc@Ga@E[ScBGe@Im@Gk@Im@Ii@Ii@Ki@Ie@Ie@Ie@Q}@Q}@Ke@Ia@CKwBqKiEkTiCmMgCiMw@{D]eBgB{I[aBcC}LKg@UgASgAAAKk@Mm@Km@Mq@Kq@Kq@Kq@Kq@Iq@Is@Iq@Is@Gs@Is@Gs@Es@Gs@Es@Ew@Eu@Ew@Cu@Cu@Cw@Cu@Cu@Cu@Aw@Cu@Aw@Aw@Au@?u@Aw@?y@Au@?s@?}AB{EHg_@Pm^BkI@qH@w@@{E@gHDmO@mE@_A?eA?i@?}@A{@?s@A}@Au@Cw@Aw@Cu@C}@EaAEy@Cq@Eq@Eq@?KG{@GaAG}@o@aJGgAOoBAQCa@AOIy@Eq@I{@Iw@Iu@Gi@?GKy@Ky@Iq@Ks@O}@Ku@Ms@Oy@Ms@Ic@CI?EOu@Oo@Mo@Sy@qBwIAICKKa@sA_G", + "mokra|skierniewice": "u}f|Hg~tyBlAsCd@iAlDiIrB}EnDmIxIqSpEmK|R_e@tCyGHS~AuDFMfCeGTe@pEoKPc@Pc@Pe@HWJWL_@La@Ni@Ng@Ni@n@cCr@kCLc@Lc@Je@Lc@Je@Jg@Jg@Jg@Hc@He@Fe@Hg@Fg@Fg@Fe@De@Dc@Di@Dg@Dg@Do@Dm@Bo@Dm@Bo@Bo@Bk@@m@@m@Bm@?m@@m@@k@?m@?m@?o@Am@?o@?MAc@?MAK?UAc@Ak@Cm@Cm@Ak@Em@Ck@Cm@Ek@Em@Gk@Ek@Gk@E_@AEGg@Gg@Ig@Ii@Ig@Ia@Ga@Ic@GWG[Ic@]cBwBoKKi@CQGWKk@Ou@]eBCKESCSEUEUE]EWEYCOAa@", + "mokra|sierakowice skierniewickie": "u}f|Hg~tyB?RsCvGSd@eC|FuB`F_Vvj@gInRmZfs@mFbM}@vBwX`p@}IxSgFzLy@lBWl@}BlF", + "bełchów|sierakowice skierniewickie": "auo|HeghyBNIJIXQXQ`BcA~AeArAy@NKRMFE|AaAh@]FEVQVOp@c@VQRKDCNKlAw@dFaDpAy@tFoDhIiFhIgFfIiFPKd@[d@[f@[h@_@d@]b@]^YTQTQLKVUb@_@f@a@d@c@f@c@f@e@^_@VWTW^_@\\_@d@g@b@g@b@e@`@e@`@e@`@i@TYf@q@f@o@^g@^i@f@s@^i@^m@`@m@`@o@`@q@Zk@b@s@\\m@Zm@\\o@^o@HORc@Xk@Xk@`@{@Xm@Xo@Xk@\\{@NKN]bB}DtB}EpB{E@AN_@dC}FlAuCRe@Xq@", + "bełchów|bobrowniki": "auo|HeghyB}CnBc@X]Tm@^]RA?[RaAh@a@T_@TULi@Zk@\\_@T_@VA?IFyCjB_@Va@V_@Tc@Z[RGDQLWPWP_Ap@c@Xa@Vc@X_@Va@VQLqEtCoBnAEBe@Xi@^gAp@u@d@{BvAyExCUNo@`@i@\\EBIFc@XwD~B}AbAsD|BiAt@kAt@gIfFiIhFiIhFgIhFiHpE_@VuAz@cDrBq@b@]RsAz@cDtBqAv@gIhFgj@t]", + "bobrowniki|łowicz główny": "mnv|H_mcyB_F|CEDmgAjr@yA~@C@o@^q@d@a@X_@Va@Xa@ZCB_@Va@\\WRIFc@\\a@\\a@^k@f@WT_@\\WXGFc@`@[Z_@`@_@`@]^a@b@_@b@_@b@_@b@_@d@_@d@_@d@]d@Y^Y^]d@[d@U^W^g@t@g@v@iTf]mKpPk@|@uHvLSZsD~F{CzEyPfXqAtBsAvB{@rAYb@g@z@i@x@e@x@{BtDu@lAMRQZMPGLYd@Yf@w@tAGLA@oAxBg@|@Yf@CB]j@YIiBvCGJy@nA]j@]j@W^GJ]j@cCzDW^}@vAiAfBaBlCc[zf@U`@W^oApB_CxDk@~@g@t@e@t@U^}@vAcA~AcA~A}@xA", + "gniewięcin apo|klimontów": "mfnsHi{iyBAJdBl@dBr@tC`BnCrBvApAvA|ANPdChDdFzIzAjCnBnCzAhBnApAlAbAzQtN`NbKvCzBjAz@pAx@pAv@l@\\bAh@", + "klimontów|klimontów apo": "seksHubgyBx@b@d@RhBz@D@zBz@vBp@bDz@pJrB|D~@B@PDjGtA`KxB|VtFtFnA~AZtCn@", + "dziadówki|tunel": "yrrrH{zbyBoFt@UDeNrBgBTsCb@yB\\wBf@oAb@kAh@s@^w@d@o@f@aBvAaAdAaAjAs@dA}@zA[n@_@p@_AjB_FxJm@lA_MtVqCvFa@x@_@n@]j@[f@[b@a@f@Y\\a@`@]Z_@Z_@XIFUN_@TEBWNe@Re@Ra@Nc@La@Jk@LeEv@iNnCeF`AgNpCaARe@JgATe@Hg@Ha@Hq@Hy@Hg@DwBReBN]BgE^_DVe@BS@W?e@?e@A_@Ae@Ga@Eg@Kg@KKESGa@Mg@Sa@QoCsA", + "dziadówki|miechów": "yrrrH{zbyBvEs@dAOdCc@jBc@fAa@bAa@xDuBxDyB|@k@nC_BtAw@v@_@LEr@W`AWzAWnBIdBBbAJ`APn@Rv@V|@`@rFrCdI|DrAh@vA\\zARrADx@?b@CRAfBUtA_@jAe@~A}@|BcBbEaDtDuC\\Yl@e@tBaBvBcB~BaBrBiAtBu@pBc@LExBUbCCbCLxR~BjR|Bh@CrGt@dBJvBB~@A`@AvBIdBE`GSjFMnABzAL|AZ~Af@|D~A^NjAd@bBp@lBx@rC|@tBx@", + "kamieńczyce|miechów": "spdrHmkbyBeAv@WP{AdAw@d@_HhDcH~CwT|JeDvAc@PwDdB_A`@qBz@wBr@kBXuAF{AAsAOc@GaBa@o@WcB{@aAs@aByAoA}AsAwBq@wAm@sA{BaG_A_C{@iB}@_BeA{A{@aAaA_AoA}@}A}@}BaAqBy@}Am@aBo@WMwIoDoDeBeLuE{Am@", + "kamieńczyce|szczepanowice": "spdrHmkbyBfDgCtA}@~CgBnJaFf@WrG_D|AeA`Au@bCyBzDgDfBwApA_AzCyAlD_AHA|Ci@dFw@pEiAfDgBbDkCxCeDlMqNbBmBlCwCz@{@dByAxAcAtEqCvCcB~CkBnGsDjBmAh@[`Aw@z@u@", + "smroków|szczepanowice": "ggzqHukjyBgAhAaAhAaAlA}Xd^aBpB_BfB{AlAm@b@u@d@wAr@yAj@wFnBuHjCuHhCqHdCiA`@gFfBsAl@qAr@aDnB_EpCe@Xm@`@k@\\OJ{GdEyBzA}@t@eA`AeAhA_AjAuCtDyC|DgMpPi@j@{A~AMJ", + "smroków|słomniki": "ggzqHukjyBHIr@k@|@s@hAw@~BoAhEaCdBaAbB_AhPeJ|GyDlC{AhAo@fAm@lPgJvGuD~CgBTK`BcAt@k@t@s@`@a@lA_BjAkBhBgDn@iAr@gAj@s@d@i@l@q@l@e@j@c@l@_@xAu@XK^O\\KXKpBk@HCjBi@\\K^MZIdBg@`A[hA[pHwBj@Q|EwAdA[TGr@O", + "słomniki|słomniki miasto": "}cuqH{wmyBnCo@h@Mh@Ob@Oh@QjAa@zAg@LE`DmAbBaAt@o@n@i@l@o@xAiBxAkB|AeBn@s@zEmF`@e@fCqCfCqCtJuKfAsAlAiB~@iB|@uBzAgDp@_B", + "niedźwiedź|słomniki miasto": "sgmqHskqyBiE{AmAc@eBm@oCaAwAe@eAUuAQoAGkA@kAFgARgAV{@X}@b@{A|@{A`AeElCwExCwD~BeAf@}@\\{@Z{@RyAVeAJmAFcA?y@CcAGsFg@mBSuGo@sGq@}Fk@gHs@wBSwAMcAE}@@qAHw@Lu@NaAXaA`@{@d@y@h@o@f@_Az@{AjBo@bAw@vAuAtCm@tA{BdF", + "goszcza|niedźwiedź": "ovhqHedmyB_B~@m@Zi@RcCv@iBViBFgACiAIwBc@g@QcByAaAm@cAw@q@o@k@m@qAiBy@uA{@cBg@oAa@qAa@}Ag@{B_@cCW}BKoAKcCKoDG{CIyCKiCA[Mu@G_AOyAS{AUwAe@aCm@yBs@qBeAaC_AaBaAuAe@i@_@a@mAeAu@k@{@g@}@c@kAe@sE}Ay@YgKyDaA_@uCiAqDyAgDqAmFkBcEyAy@YyBq@gDeA{DuA", + "goszcza|łuczyce": "ovhqHedmyBrAw@t@c@b@WPMJGbDqBnAw@lAi@rEmB|@Yx@WvA[~Cq@~A[x@U`A[`Ac@bAk@r@g@|@q@z@y@|ByBlAiAtAuAn@m@dA}@z@m@r@e@z@c@|@_@t@YzKyCtDaApD}@jBi@`AYt@YrAk@hAo@h@]pAy@dBmAdCeBjCmBhAw@XSd@i@bBmAbAs@~@w@hAgA", + "baranówka|łuczyce": "}faqH{zsyBoESm@A[AyAGkBIyBK_CKsBIkAAoABo@D_AN_ATcAZq@XgAj@w@l@eA|@k@j@u@~@e@p@{@tAu@zAk@vAe@rAe@bB[xAEP[bBWjBWlCUdC[`Ec@fFI~@WhBWbCc@|C]hBe@hBc@vAu@pBaAzBeA`CYl@uEbKsCjGkAdCg@~@k@`AaAzAi@p@c@l@m@p@o@r@", + "baranówka|zastów": "}faqH{zsyBvCJzBJfEPhEPxAHxAL`AJtARz@Lz@LnC`@nBXtBXdANr@Nz@Tj@Rf@Pn@Zp@^|@p@|@v@z@|@x@dAz@tAx@|Az@jBlAxCP`@t@dBdAfCbA`CrB|EtBbFRd@JTr@bBr@bBvBbFzClH|ArD|ArDrL`YjBpEJT^z@xCfHXr@`FzLnCtGnClGpAzC`CpFjAlC", + "czarnca|knapówka": "{neuHycuxBLjL@z@Bn@@`AJvDF~AH~BLxBPrB`@xCd@lCp@rCv@fC|ArDdBdDx@jAz@dApApAtAhA|FtEvBzB|B~ChA~BjAbCv@jCr@lCfDjMbAzCt@`BpA~BhBzB|BzBtCzBlG|EhMxJdMvJjGzEAPAJVRzMfKnElD`DdCdAv@", + "dorota|juliusz": "gz{qHstttB`C`Br@d@vE~CYt@~DrCdBnAxDlCtBtA\\Tb@\\r@h@^\\`@^^^\\`@\\`@TZZd@V`@T^Xj@Vf@Xp@Xr@Zv@Tr@Tr@Rr@Rx@Pv@Px@Lr@Nx@Jv@L`AHx@JbAFx@FdAx@rPFtAF`BBv@Bt@B|@BjB@zAVrWH`Az@ny@J~K@j@?d@HbHVpTFzF?lA@hAApA?tA?nAAvAA`AA~@S~M?ZC`B?pA?dB@tA@vABpADxAFtAFrATtDn@`KDh@jApR", + "juliusz|sosnowiec dańdówka": "gyyqHg}itBRxC?H@Jx@xMJ~A?v@`AtOBb@b@`HJ|ALtAH`ALnABVLdAPrANfARnAPdAThAThAXjA\\xA\\tA~Uf`Al@~BT`ALl@Px@Lx@N~@Hj@Ff@D^HdALnAF`AHfBDbB@jA?|A?~@ChAC`AGtAGhAMhBM|ASdCu@`LKtBCzAC|A?dBLpHGn@HlE@rA@tBBfC@jADhDf@r]@|A@vA@jDB|ABfA", + "charsznica|gajówka": "o`rrHuotxBLzIBhB@RHnE?b@DfAB~@D~@FbAFbAJbAJfAJ~@BJTfBjBlNpA|JJv@Lx@Lz@N~@PbARdAPz@T`ATz@V|@Tt@X|@Zx@Xt@Zv@f@jA~ArDZt@Xp@Vt@Tn@Tt@Rp@Rx@Np@P~@Lt@N|@J~@Hz@Hx@F|@F|@@X@f@Bz@@`A@b@?vAArAClAAr@c@zX]zTClAEpAEvAEtAItAIrAKpAKzAMhAE`@Gn@{@pHQdBQ|AQpBKtAM~AIlACXIfBIvA[vGaClh@Cp@KjBIdBK|AItAO`BM|A{@lJK~@a@jE", + "gajówka|gajówka apo": "euqrHmrixBmAtMMpAsCzZE\\OzAQ`BQzASbBSvAW`BU~AWxA_AzFoDhTkCbP{AhJADc@nD", + "gajówka apo|jeżówka": "{qrrHomexB_CnNW`BObAQdAQpAQrAQrAOnAaGvh@OpAQtASrAQpAQnASlAUrAUnAG^sExUO|@Q`AKv@Mx@Iv@Kz@Gx@Gv@E|@Cv@Cx@Cz@Ax@?z@@d@?f@@j@Bz@Dz@D`AFt@Fz@H|@DVD`@Jt@Lx@Nv@Nv@Px@Rr@Rt@Tt@Tp@Xp@Vp@Xl@Xj@Zl@\\j@Zf@b@p@tAvBb@r@Zh@Zl@Xj@Zp@Vn@Vp@Rp@Tr@Rt@Rv@Nr@Px@Lx@Lz@Jv@J|@Hz@F|@Fx@B~@Dx@@~@BdA?V?h@JpJ@lABjABdAFjADhADp@Dv@", + "jeżówka|wolbrom": "urrrHwf}wBDd@HfAJdAFj@Fh@J~@NjARpAPdARlATjAVhAT`AZhAXfAZdAvFjS~AvFZdAV~@Z`A^`A\\`A^z@^~@^v@`@v@`@x@f@z@`Vzb@JNvJfQZXZh@Xd@\\f@^j@^d@b@f@`@`@d@d@\\Xd@^^V`@Vb@Th@Vf@Rd@Nl@P`@Hf@Hh@Hd@Bd@Bf@@d@?l@Cf@Cf@Id@Gh@K`@Id@M|HoBv@Sh@MTDREd@In@Ih@Ej@Eb@A`@Ap@?f@@J@l@Bh@DZDPBn@Jn@Lh@Lf@NVJNDd@RVJJFh@Xb@VTNVPTR`@\\^^`@`@^`@\\d@^f@\\f@Zh@Xh@JTNXXn@Xp@Vp@Tp@Rp@Rt@Pp@Pv@FTH`@Lx@Nz@J|@Jx@Hx@Dp@Fr@DjABfA@`A?~@C~@At@E~@GbAIjAKnAMjBa@~EKjAK~@Kz@Kv@Ot@Kn@Ot@Qr@Ol@?@SvAeDdMcApDY~@g@dB", + "wolbrom|zarzecze": "c`nrHuxtwBi@jB_@jAkAtDy@dCY|@[dAqCjJKZyAbFUv@Sv@U~@Or@UbAMl@SfAMv@YlBQpASnBMpAKjAK~AGpAGlACdAC~@CbAA~@Ap@?N?L?p@@vA@|ABfAB`AFnA?PFjABRDv@F~@Fl@Dj@LlAPzAJz@L~@XdBTrANx@R~@`Qv|@pFpYf@fCdAnFVhA@F^`Bd@~Af@bBVr@\\z@Zv@`@`An@zAvB|E\\x@Zx@Xt@Xx@Vv@Tz@T|@Rv@R~@Pz@N~@`@hCpAdIXdBBT|AtJjOhaAl@zDvA|IhDjT~AhKtAvIRhAPfARdAVjAVjAVbAXdAXbAVv@DNZ|@", + "zarzecze|zarzecze apo": "_rkrHsmfwB\\`A\\z@Vp@Td@BFf@dAb@z@\\n@Zh@Xb@`@p@f@r@h@r@f@n@`@d@d@f@d@d@f@f@j@f@j@d@n@d@p@f@bEtCh@^`@VDDf@Xd@Xf@Vj@Xb@RhDvA", + "chrząstowice olkuskie|zarzecze apo": "g{grHozcwBaDsAECgN}FgN}FiVcKOImMoFWK", + "chrząstowice olkuskie|jaroszowiec olkuski": "g{grHozcwBlFzB`@Pd@T\\Rj@\\`@Xd@Z^Z\\ZHHb@b@d@f@^d@\\b@h@t@Zf@Zf@\\l@R`@HP`@x@Zv@Vp@JVFTXx@Vz@Tz@Rx@R|@P|@PdALz@Lz@LfAJbAF`AHbAD`ABr@@NBdABbA?fA?n@?x@Ax@Cr@Ad@C|@E|@GbAKlAeAbNEn@q@|IKrACRIv@MnAMdAOhAQlAUnAQbAUnAUlAcNxu@WrAQjAEPOdAQlAStA_AfHi@hEe@jDGf@EXgJ|s@y@jGS`BQrAIx@IhAI~@GbACz@EbACdAAdA?dA?b@@\\@hAB|@Bz@FhAFbAH~@H|@LdAD`@Fb@Lt@Jr@Nz@`AlFh@zCv@hEDXLr@Nx@Lt@l@fD^pBPv@Nr@Rv@Pt@Tr@Tv@Xx@vAxDvAtDdBpE", + "bukowno|bukowno przymiarki": "ofxqH_kvuBYjAYnFKdBM~AIx@K`AObAQbAQ`AoA|GaBxIeApGwUhoAc]piBOr@O|@Mt@Kr@Mx@Ir@Iv@Iv@Et@Ev@En@Cj@Ax@C~@?jA", + "bukowno przymiarki|sławków": "}kzqHg_nuBApAGPAxHGhm@?nDAjA?jAAjACjACbAGlAGdAIlAKfAKbAMfAMdAQbAQbASbAUbAS~@Y`AY`AWz@_Ln\\wD`Lw@`CeDrJWr@Wp@[r@Wj@]n@[j@[h@]f@]d@_@d@c@d@_@^c@`@a@Z_@Xg@Zc@Vc@Ta@Pa@Pm@Pe@Li@Jc@Fe@Fe@Da@@O@]?i@Ai@Ak@Ek@EqBOuEc@e@Cg@Eg@Ae@Ae@@i@@m@FWBk@Jg@Hc@La@Nc@Na@Rc@Re@Xa@Vg@^gCfBm@f@m@n@i@l@]b@a@j@_@j@c@n@_AvAc@p@kC~D", + "sosnowiec kazimierz|sosnowiec porąbka": "se}qHwjktBTVh@f@|@t@`@Z\\T\\TZPl@Xf@RvAh@jC`A|HvCb@PRHLFb@Rd@V^Tf@\\^Z`@\\`@\\^b@Z^b@h@Xb@^j@rBjDbEdHjD`GdAfB~DbHFFDHn@hAn@bAZh@\\f@Xb@@@\\b@^b@n@p@JJb@^^X`@X`@Xb@Tb@Rh@VpJfE~@`@z@b@dAl@d@Z^ZVRXVFFJJRRNPNPRVZ`@NRPVT`@", + "sosnowiec dańdówka|sosnowiec porąbka": "coxqHo_`tBCgAC}AAkDAwAA}Ag@s]EiDAkACgCAuBAsAImEIaFC_C?CAaBB}AB}AHqBNgCd@}GTgCN}ALgBFiAFuAB_ABkA?}@?{AAkAEcBIeBGaAKoAKeAE_@Ge@Ik@O_AMw@Oy@Mm@U_Am@_C[oA}WyeAMg@q@kCCKo@cC]sAUu@Uo@Uo@Wk@Yq@[k@Ye@", + "łódź chojny|łódź kaliska": "}quzHis~uBU|EC^AZ?XAv@Az@ATA|@ErBErAMzBGnA{@bQk@~Ks@~MMlCK`BK|AIrAKhA[vDKlAEf@Eb@Cf@C`@Cv@A\\Cx@?l@AhA@x@@tA@dABr@@d@Bf@Dd@@XHbAJfAHv@Jx@Jn@Lp@XxAR~@H^FPDRBHFRNd@Xz@JXVr@Rb@b@`Ad@dA|B|EbD|GtChG|@lBf@hAZx@l@bBHXPj@J^J^Jd@XlAVvAHf@Lz@Hv@JbAJjADz@Dt@Dn@@b@BdA@v@?r@?X?J?PA|@Ax@CfACf@C`@Et@Cf@C`@Ip@C^Kz@Kz@SlAGb@Oz@oAnHeBzJaAxFY|A_@nBKd@Ml@Oj@Mf@Mb@Od@IVIVM^O\\Qb@S`@Sb@]p@Yf@e@r@]h@C@g@r@s@|@q@|@m@v@_AjAwCvDQTcApAs@|@q@z@q@|@u@|@a@f@g@j@u@r@g@d@]VUPYRYROHMHYPIDUL_@Pa@Rm@XqEnB]PQFSH]Na@N]LMDmCx@y@X_@La@Pc@PYJ[N]NA@QHWJcAd@q@ZYL]L]Na@Pa@LUFWHODSFSDWF]F]H]Fi@H}IrA_@F_@D_@Da@Dc@BWBU@Y@oCJa@@Q@A?S@Y@Q@Q@O@]BI@m@FUB]BOBSBG@A?G@i@FIB_@Fa@HiARcATa@HA?u@PI@{A^kCj@G@G@eE~@kB`@c@J_@Fa@HaFz@kCb@gBZ}NdCs@LUDYFUF[HWHYJUJUJE@UJMF}BhA_Bt@iB|@WLcAd@MHSHOHOHIDMHMHQJIDOJEBSLOLGDKHIFKHIFONKHMJSPKHWTKHA@WTmAdAGD[XCBYXSPGDYXoClCGFcA`A{@t@cA~@Sd@", + "zgierz|łódź żabieniec": "g{l{HsepuBxApAf@d@RRr@p@^\\RRDF`@b@VXXX^^ZZdCzBrBnB~@z@`Az@RNVRRNVRZRXPZPXNXN^NDBPHVJ\\LTFXH`@J\\H\\H`@FTD\\D^B^D@?`@@f@@j@?r@Aj@CbAIbBQ`D]nCYfAKFAz@Ix@Kp@Gz@Kx@InAMv@IdAMv@IdAKt@I\\C^EnAIt@Er@Cf@Af@?D?`@Al@@`@?~@Bx@Bz@BlAHF?nG`@z@Hb@Bn@H`@F`@Fb@Fr@NfAVh@Pj@Pl@Rh@TTJJDDBD@FBJFNFLHNFNHDBJFLHLFPJPJh@ZhHlE~AbAjAp@pAv@rAx@tAx@jBbApE`CdCrA`DbBfAl@bQdJBBrGhDxDrB|Ax@bBz@|BnA^RhB`Ap@\\hAl@fDfBxAt@h@Tv@\\t@Tp@Rl@Pl@Lp@Ll@HD?h@Fr@FdBF\\?h@?r@Ab@Ap@Ep@Gp@Kp@Kn@Mx@Sl@OzQiG", + "dąbrowa górnicza gołonóg|dąbrowa górnicza ząbkowice": "_xgrHwajtBmBsF{AmE}ByGcCiHs@oBqDoKIQgLs\\a@kAg@{Ak@}Ae@uAyCwIaC_HcKaZyJgYY{@[y@[y@Yw@Yo@Wo@]w@]w@[m@[m@Yk@[i@]m@_@k@a@q@a@i@a@k@a@k@KMOSUYW[UYUWwAcBsB}BY]YYoB{Ba@c@KKWWeAgA[YSSe@c@YYm@k@]]_@_@a@_@_@_@", + "dąbrowa górnicza|dąbrowa górnicza gołonóg": "}aerH_lbtBNoAJ{@Hu@Fm@Da@D_@Dc@Dg@Be@Ba@Dg@@a@@]BW@]?[@]@_@?a@@_@?c@?_@?_@?]Aa@?[Ac@Ac@A_@Cc@Ci@Ck@A[C_@C[Eg@Ee@Gg@Ee@Ge@Gc@E[G[EYE[G]GYGYG_@IYEWI[IYGUGWGSK_@Ma@Oe@Oc@Qe@?WuDuK[y@{AmE{AkEWs@cKcZiCmHu@{BqAuDyAgEwAeEqCcIc@qAeJ}WuA_EOc@KYqCeI}C_JaBwEaByEmAoDaByE", + "będzin ksawera|dąbrowa górnicza": "seerHi{|sB_@uEAMQqBu@wJc@iG_@sEOuBOuBGo@Cg@Ek@Ce@Eq@I{Ac@eI]gG]gGCo@Ck@AYB]?[Ac@A_@?]?_@?[?a@@a@?[@[?A@O?Q@U@WBY@[BS@UBS@UD_@Fm@BSFmAHw@~@iI?G`@iDFi@Fm@@IFm@VkCl@_GHu@NuAnBgQh@uENoALoA", + "będzin ksawera|będzin miasto": "seerHi{|sBPpBj@pGPlBVvBR`BTbBb@xCh@nDl@|EZfCl@`FL|@`AbIj@rENjANnALv@NbAP`ANx@Px@R~@Rz@R|@Nh@V`A^jAb@rAXv@^bA^bA`@|@`@|@d@|@`@v@b@r@^l@f@x@f@p@b@j@f@l@f@l@j@l@l@j@j@h@j@f@n@h@l@b@n@b@l@^l@\\^R\\PZNb@Pp@Xl@Rl@Rj@Nl@Nn@Ll@Jl@H^Db@Fd@B`@Bb@B", + "będzin|będzin miasto": "obarHmlysBkA~@gAx@KFaBlA}AhAiBvAoC|BcBbAcAz@cAx@a@X_@VYR]Ta@V_@T]Pu@\\s@Za@N]LQFk@Pq@No@Lm@Ji@Fq@Fw@F]Bg@Zk@B]?u@@s@Ac@A", + "myszków mrzygłód|myszków światowit": "c{nsH{qguBwFtBwEbBwt@`Xm@Ta@NKDQT_TvHo@Vm@Vg@Tm@Zi@Xg@Xk@^a@Xm@d@c@^g@b@e@b@g@f@a@d@c@f@e@j@a@h@a@l@_@j@c@p@_@n@_@r@_@r@]r@[r@]v@Yr@[x@Wv@Wv@Yz@Ux@YdAU~@WlAWjAe@~BCLuAnH_E|SuNjv@e@dCmCtNGVgA|ESbAIb@{A`IuGp]sBvKoDbR", + "myszków mrzygłód|zawiercie borowe pole": "c{nsH{qguBnPcGfMqEpFoBrEcBzCiApBs@fE}AVIt[iL~Am@~GcCfE}AbDiAnLiEvEcBr@Yv@Yp@Yl@Wr@]n@Yr@_@r@a@FCj@]p@a@r@e@p@c@t@i@r@i@n@i@r@k@n@k@l@k@j@i@p@q@h@k@r@w@l@s@l@s@j@s@h@s@h@q@h@s@rOaT~B_DpC{DdE}F", + "zawiercie|zawiercie borowe pole": "}aasHyvpuBiBJs@BkADoAHk@BaOp@gBF_DNg@BuI`@kEPm@DmCLO?sJb@c@Bg@Da@BgBPc@Bc@Bk@Dm@BcABuBH_@@]@gBT}CJyBHs@Bo@BcBFm@Dc@DG@e@Fe@JUDQDe@N[J[J[POFMF_@RYRE@YRYT]X[XYX]^_@d@]`@e@p@a@n@i@x@q@fA{@bAi@x@EF_@l@i@x@i@t@u@bAaEvFkJnMgJjMY^wQxVcKlNSZk@t@gI~KY`@{JdN_AnAqAfB", + "wiesiółka|łazy łc": "crurHq|auBIu@Gw@Gi@Eq@AICa@Em@Aa@Es@IeBAMEeAIyAGyAAOE}@SyE_AwS_@oIEgAq@cOGkAOeG", + "chruszczobród|wiesiółka": "otrrHea~tBoCuC_DaDwE_FwC{CoJyJ}TsUMOk@m@sFwFu@y@e@e@m@o@q@u@c@g@o@w@a@g@g@s@e@q@e@s@c@u@c@w@]s@a@y@_@y@]w@[y@[}@]_AY_AW_AYaAUaAWgAOu@Mq@Oq@Mw@Ik@G_@Ga@McAKo@AMCUEa@", + "chruszczobród|dąbrowa górnicza sikorka": "otrrHea~tBIR~@x@\\\\h@d@d@f@n@l@z@|@pEvEpL|Lf@h@j@n@j@p@d@j@b@l@d@r@`@l@f@z@JPT^b@|@\\t@b@~@\\z@^bA\\~@Z`AVx@ZjAV`AVhAT`AThAPbATpANfAPpALfALpAH`AHx@@TJlAHpAbC|_@@LLjBzA`VF`AFv@FbAJzBD~@ZpGFbAFdAPjC", + "dąbrowa górnicza sikorka|dąbrowa górnicza ząbkowice": "grprHgjxtBFdAFdAHdAHbADr@Dd@Dd@JlAVvCFv@Hz@Dh@Bb@Db@LvBNvBHrAHtAJvAJtANrBJbBN|ALrARfBHv@@HJz@Fb@DZJv@Lz@N`ATtAJj@Nt@VvAZxAZxA\\tAVbA\\rARn@Nj@Rp@Tt@^hA`@lA`@fAd@lAf@jAd@dAd@dAf@bAl@hAf@|@j@~@j@|@h@v@t@`Ap@|@l@x@t@z@t@x@p@t@r@r@t@r@r@n@j@f@d@^f@`@f@^h@b@tMrJtAv@fAx@rCtB^V^VdBfAlBnADB`@TVPVPr@f@r@f@bS|NjGrE~AhAjDhCn@d@BBRN`D~BjEbDnA~@RNTPJJDBPNTRnAlAd@b@RTf@d@`B~AnAlAb@b@@@", + "dąbrowa górnicza pogoria|dąbrowa górnicza ząbkowice": "_`irH_{ltByCwIaC_HcKaZyJgYY{@[y@[y@Yw@Yo@Wo@]w@]w@[m@[m@Yk@[i@]m@_@k@a@q@a@i@a@k@a@k@KMOSUYW[UYUWwAcBsB}BY]YYoB{Ba@c@KKWWeAgA[YSSe@c@YYm@k@]]_@_@a@_@_@_@", + "dąbrowa górnicza gołonóg|dąbrowa górnicza pogoria": "_xgrHwajtBmBsF{AmE}ByGcCiHs@oBqDoKIQgLs\\a@kAg@{Ak@}Ae@uA", + "łódź dąbrowa|łódź zarzew": "ktwzHusavBiCc@i@KwAUqDs@qCo@QEiBa@_AS_BUgAO_@Es@G_COyBMwAKcEWaO{@oAImHe@sAIaAGo@CwBOkAIkCOeDS", + "kraków płaszów|kraków zabłocie": "e~kpH_s{xBW`@kBnCkC|DILMRSXSXQRORUXGHIF]`@g@h@c@b@c@f@_@`@a@d@]d@_@f@_@h@k@z@]d@IN}BfDADW^y@lA[d@EF[d@}A~Bm@|@gBlCkBpC]Xk@z@gOrSb@|@", + "gajewniki|zduńska wola karsznice": "_r_zHotzrBHJBpABbADdAFbAHdANlANhARfAThAZnALd@Pf@\\`A`@`AfAjBp@jA`@\\`@b@dA~@f@\\h@Zf@Tf@R~@V\\H^BZF^@`ABhAIfAOhC[pAIhB@|AHdBNdLz@pA@nAEhBYjBi@|@a@lAu@dAu@bAaAhAqAt@gAbAkBdA{B~@{BpAgDbHcRjI}T`AiCr@iBXq@Zs@f@gAf@cA`@u@`@s@d@w@n@eAt@mAx@oAl@}@xBuCzByCTL|EqG", + "glinnik|zgierz": "oau{H}r~uB|@tHTdBT~AJl@Hd@Jh@H`@T`APp@HXb@tAt@nB|A~Dn@`BDLb@tA\\jAHVNp@Pv@Nx@Jp@Lp@TfBj@vEThBThB\\tC\\pCRzANnARtAF\\FZLt@XnALj@Ld@Lf@Pj@ZdAbBrF`BnFX~@V`ADP@DFVNn@Nn@Lp@RjAPfAJj@Hj@TtA\\vBFZFZNz@Nn@Ll@Nj@Nh@Pl@Rj@Pf@Tj@\\x@\\t@LVNVZh@l@`Ap@|@f@l@h@j@`@^`@\\`@Zb@X\\RZPPHNH`@PlA`@n@Ln@J|@JP@P@b@@N?P@F?XAJ?HCP?f@E`@E^I^I`@I~E}A\\KZIXGXGLALCZEFAL?VCh@Cb@?X?j@@h@DVBVDn@Jh@Jh@PVHVHj@VTLVLj@\\v@j@t@p@j@j@j@n@RVPTd@p@l@bAj@dAP`@R`@Tj@LXRj@Rh@h@vAf@tAf@tAn@hBXt@Tt@Tx@Tx@Nl@Pz@P`ATtAJn@Fl@Hv@Hx@Fx@Fx@D|@B|@Bt@@v@@`A@`A?NBpBD~FLrN@zB@d@@vABzBB|BBxADzADzAFzADnAFpA@b@Dh@FnAFv@Dt@Dv@D\\Dn@BZDr@NdBH`AHbAFdAJbAH`AJbAJ|@L`AF`@F^N|@F^H`@H^H`@Ld@Jd@J`@Ld@JZJ\\J\\J\\N`@N`@P`@P`@N^R`@LVBHR^LTNTZh@^j@\\f@NRNP`@f@b@b@d@d@xBrBtI~HfGvFj@f@vArAxApA`@Z`@\\`@\\`@Zd@b@LJXVn@l@|@v@r@n@XVx@v@|@z@FD~DrDJHzBpBxBlBtAjAjS`RxClClC`Cd@d@", + "glinnik|stryków": "oau{H}r~uBKcA[eCm@iF{AgMwAuLCMoBwPqBwP[kCWuBUqBWmBQeAQeAWqA[qAm@wBI[g@uAi@sASe@EIYm@g@y@g@w@g@q@i@q@]a@_@_@o@i@i@a@k@a@cAi@]O_@Qi@Qm@OWGYGs@KoAK_FQaBGgAM}@O{Ac@aAc@y@c@y@g@u@m@kAgA}BgC}AaBqF_GuB{Bi@m@g@q@a@m@_@m@c@w@Ym@Ym@Yq@Wo@Ws@Us@Su@Sw@Sw@Q{@Oy@My@M{@K}@K{@G}@I}@E}@Eu@Cw@CgAAeA?cA@aA@gABeAHwB@WD_BHwBD{@By@DsABsA@_A@aA?}@A_AC_AA_@Aa@E_AG}@C_@C_@I}@K}@K}@M{@Mw@Q{@Ow@Sy@Sw@IYKYI[KYUm@Sk@Si@Ug@_@w@_@u@_@s@a@o@c@m@o@u@_DqCu@o@SOUUkAeA][[][]Ya@a@g@_@k@_@o@_@u@Yk@Yq@Yq@Wq@Us@Su@Uy@S{@Qu@Ou@M}@G_@G_@K{@E]C]Ec@Ea@IcACe@Cc@EeACmA?e@Ai@?oA@qABsABqA`@_P`Ag`@?KnBow@@Mt@wZv@e[DiBDgBFeCF_C@eC?iA?qAAqACoACoAGwAAMASAc@GcAMiBKmBMkBqA{RSeCKiBMiB_AeN", + "głowno|stryków": "qjc|HkbgwB~@R^H^JPFD@d@Rf@Vb@Xf@^d@b@HHTT\\d@h@t@h@v@bCpEt@hBj@|ADJ^tAf@zBd@hCL|@L~@T~BLxBNnC\\lGZlGx@tOxAfZl@rLRpDHrAJpAZ~C`@zCPhAHh@Hb@P`ARbALh@Jf@Lh@Lf@XdAXbA\\dA\\dA\\bA^~@`@`A`@|@b@z@b@x@d@x@b@t@Xb@X^f@x@h@t@DFrMvQ~FhI`GfIvCbEtF|HV\\Z`@n@`Af@t@b@t@d@v@PZPZHNHRNX`@|@`@~@^~@^`AZ`AL`@L`@ZdAXdAXfANn@Nn@`@~A`A|D`A~D`@bBNj@Np@Rx@Rx@Rx@VdA~BtJtEjRjNrk@j@|B^zA\\|AVdARdAP|@BLPhAPfANjANlALjALlAJlAHnAHnAJxBNpFJtCJzBPxBJz@Hz@Lz@Nz@Nz@Px@Pv@Rv@Tx@Tt@Tp@Vp@Xr@Zp@Zh@Vh@x@rA`AnAv@z@FH`@^b@^dAv@hAl@^R`@PpUfJJD|CnAn@Zn@Zn@\\l@^j@`@l@d@tAjAx@x@d@f@VZLLb@j@d@l@jAbBjAbB`BbCr@`Ar@bAvB~CtE|GjBlCjBlCvGrJvB`D|CpE^l@\\n@Zj@Xn@Xp@Vp@Vr@Tp@Tv@Pt@Rv@Px@Nz@Nx@D^F\\D\\D\\Fl@Fl@Fp@JlANvBBj@LhBB`@~Bx]tBv[", + "domaniewice|głowno": "ygo|Hih~wBhNhk@|BjJ~@vDbAdEnAbFrCjLbB~G`B|Gl@bCb@nBPt@Lt@H\\DZLx@Jv@Jx@@HFp@F~@F~@Dz@H~BFrCDpCHxBLzBL|AP~ARtARrAPx@Pv@Pv@Rp@\\jAN`@Nd@f@pA~@|B`C`GtDdJn@~A`@bAtAdDx]x{@L\\|AvDt@jBt@hBl@pAl@pAh@jAl@jAr@rAr@nAtA~BzFtJ|BzD`CzDxEbI|]tl@rIvN~CjFxFrJvBnDbC`Eh@~@l@fA`@v@`@z@d@dA`@bAn@bBb@rAZ`AXbAJ^J^H^J`@T`ARbAR~@N~@VvAHd@`@|B^~B`@zB^|B`A~FvD|TzA~IzA~IzBzMx@`FzA~I|AfJF^bBxJp@bEX|AX|AZ~A\\|A\\|A\\|ARt@Lf@\\tAh@nBVx@V|@Vx@Pj@FNd@xAj@|Ah@zAn@~Ad@jAd@fAh@nAj@lA|B|E`CdFLVLVZp@v@`BnBhE~EhKjCvFZp@bAnBn@jAdA~AbAlAdAbAfAz@r@d@x@b@bA`@dAZpAZNBnBd@lBd@hSrEzBf@pKdC|FrAhBb@", + "domaniewice|łowicz przedmieście": "ygo|Hih~wBkDoNcDwMu@yCgRiv@qAoFwDkOy@eDmB}HoBaI}E_S{Jaa@{@mDK_@Mi@WeA[yAOw@Mu@OcAMcAKeAIeAGgAGaACaAA}@AgA?eA?s@ByC?o@BaC?_A?}@?m@?k@Am@Ai@Cq@Ak@Eo@Cm@I_AG}@K}@Ky@M_AQ_AUmAUiAs@{CAIaDqN_@}AcEyQcEwQeD{N_@{Ay@wDe@sBq@uCWkAWiAQu@Qs@a@iBcAsEkCgLiCgLcAsEcAqEwCoMkCeLOq@Qm@e@{A]iA_@eAaAeCgAaCu@uAqA{BiBiCyBgCiAgAeB{AaIeHiAaA}SaRmHsGiOwMgIiHqUoSgJeI}CoCkE{DsB}AUQi@_@i@]sA}@aBaAwAu@aBw@mBw@_Bm@sBo@uBo@uDgAkDeAaBe@SGsDgAoCy@mJqCgHuBqEsAeC{@aBo@oAm@y@a@yAu@y@e@IGaBcAm@c@i@_@iA{@gA{@sDaDoBaBgGkF{DeDcDsCsBgBoAqAMMUY_@g@[e@U_@GGYi@OYEIUc@k@qAe@oAYy@y@}COq@Ou@Ic@SgAw@_GiF_`@iCoRyA}KCQoAiJ", + "bełchów|mokra": "auo|HeghyBNIJIXQXQ`BcA~AeArAy@NKRMFE|AaAh@]FEVQVOp@c@VQRKDCNKlAw@dFaDpAy@tFoDhIiFhIgFfIiFPKd@[d@[f@[h@_@d@]b@]^YTQTQLKVUb@_@f@a@d@c@f@c@f@e@^_@VWTW^_@\\_@d@g@b@g@b@e@`@e@`@e@`@i@TYf@q@f@o@^g@^i@f@s@^i@^m@`@m@`@o@`@q@Zk@b@s@\\m@Zm@\\o@^o@HORc@Xk@Xk@`@{@Xm@Xo@Xk@\\{@HQN_@dB}DrB}EN]`B}D@AbC{FfBgE`CsFx@oBVm@|BmFVo@dB_Ebd@yeA~@wBxa@kaAxh@mnAb@eAlBsEDI", + "koluszki|słotwiny": "{ryzHe_~wB\\P\\PZNZNPHVJr@Zr@Xh@R~An@VJ`A`@zGlCXJXJf@Pf@Nd@Lv@Tl@Nh@Nd@LhAZ`@JFBLDVHVHTCLDLDLDLBp@NrAXTDLDB?JBL@J@N@H?F@P?J?L?NAL?NANATCVCJCPCNENCNELGLELGLGNGZSNKLKLKNMLMLO^a@f@i@lBuBX[LMX]TWRWTYLQLSNSFKDGLUJSTa@b@{@dFqKx@eB~@mBjLqVzA_DLWN]pBgEFMzByE|B{EdBoDz@kB", + "bełchów|płyćwia": "auo|HeghyBNIJIXQXQ`BcA~AeArAy@NKRMFE|AaAh@]FEVQVOp@c@VQRKDCNKlAw@dFaDpAy@tFoDhIiFhIgFfIiFPKd@[d@[f@[h@_@d@]b@]^YTQTQLKVUb@_@f@a@d@c@f@c@f@e@^_@VWTW^_@\\_@d@g@b@g@b@e@`@e@`@e@`@i@TYf@q@f@o@^g@^i@f@s@^i@^m@`@m@`@o@`@q@Zk@b@s@\\m@Zm@\\o@^o@HORc@Xk@Xk@`@{@Xm@Xo@Xk@\\{@HQN_@dB}DrB}EN]`B}D@AbC{FfBgE`CsFx@oBVm@|BmFVo@dB_Ebd@yeA~@wBxa@kaAxh@mnAb@eAlBsEDIlAsCd@iAlDiIrB}EnDmIxIqSpEmK|R_e@xCqGJS~AwDDMb@cA~AsDFOFMHQJQHSv@yABCR_@@CHOHOJSJUHQ`A{BPe@Pc@Pe@Na@Na@HWHWNi@Ni@Ni@n@}BnAyELe@Je@Lg@Je@Jg@Ji@ZeBF]H]F]FWHYFWHWHUHWJUHUJULSJSLSLQJQLQt@_APSNSPQRSRSROJIHITORMRMTMRKRKRGRIRGRGRETERERCRCTARATAN?B?T?R@R@T@VBTBVBP@JB\\DVFD?ZHZH\\HTFt@TPFPDPDNDp@Nb@Jb@L^JB@p@PJBJDJBPBNDn@JPBNDLBJBHB~Ad@dAZrF~A~GpBpn@tQp@Rp@R^L^L^L^L\\L\\N\\L\\PZNNHLF@@ZPTNFBZR\\TZTZTZVRPFDZXZXRTDBXZZZDDRTX\\V\\X\\V\\V^@BTZV`@T^FJNTHPJPR\\@BTb@Tb@Rd@Td@Rd@Rd@Rd@Nb@N`@@@Nb@JZBHNd@Nd@Nd@Ld@Nd@Nj@Nj@Nj@v@vCrMxg@VhAXfANl@Nn@H`@BLLj@DTFVJl@Jl@Jl@Jl@Jn@Jl@Hn@Hn@Hl@Fp@Hp@Fn@Fp@Fn@Dl@Dn@Dl@Dn@Dp@@V@\\Bj@Bl@Bx@Bx@@L?N?J@t@@r@@t@?t@@r@?b@?NAt@?t@AT?\\At@Ct@?JAd@?@Ct@Cr@Cr@Et@Er@Er@Et@Gt@Gt@Ej@Ef@MrAObBuF~m@MtAu@nI{ArPEf@{AvPgAtLGl@qCb[yA`PuB~UMtAgAzLMrAsBhUWpCw@xIKhAE`@Gn@[fD[nD[lD[jDy@dJ_CrWw@tIq@vHCT[lDMnAsBpUKdAKxBMrAMtAGr@Er@Gp@Et@Gp@Er@Cp@En@AXAVAp@Cp@Ap@Ap@Ap@Ar@?p@?p@?p@?p@@p@@r@@p@@p@Bp@@b@Bb@Bd@?N@VDp@Dn@Dp@Fn@Dp@@LD`@Fp@Hn@Fn@Hh@Fh@@LFZHj@Hh@Hj@Jh@Jj@FX@JLl@Lj@Lj@Nl@Lh@DL@HFRNj@HXFNNh@Ph@Nb@JZFPPf@Rf@Pf@Rd@DHLZRd@Tb@Td@HNHRXf@HNNVNXRZXb@V`@V^V^X\\V\\X\\XZXZXXXZXXXVZVZVXVZTZR\\TZR^TXNVN^P^P\\Nn@Xn@Xl@TnAf@xIlD|D~Ap@b@b]bNjKdE`@N`@P`@P^N^P\\P\\PZPXNVP\\TZRZTXVVR\\XZVXXXXVXXZXZVZX\\V\\V\\T\\V\\Vb@RZR\\JRNVb@v@b@z@h@bALVVThAxBTb@|@dB`E`ItAnCf@`Af@`ATb@|A|C|@fB@@FLrB`E", + "bełchów|łowicz główny": "auo|HeghyB}CnBc@X]Tm@^]RA?[RaAh@a@T_@TULi@Zk@\\_@T_@VA?IFyCjB_@Va@V_@Tc@Z[RGDQLWPWP_Ap@c@Xa@Vc@X_@Va@VQLqEtCoBnAEBe@Xi@^gAp@u@d@{BvAyExCUNo@`@i@\\EBIFc@XwD~B}AbAsD|BiAt@kAt@gIfFiIhFiIhFgIhFiHpE_@VuAz@kA`AsAz@s@b@qBpAoAv@sAz@oAx@iIhFeh@d\\aHlEEBuEvCob@dXg]lTyA~@C@m@`@s@d@_@Va@Xa@Xa@XCB]Xa@ZWRKHa@\\a@\\a@\\k@f@WV_@\\YVEFc@`@[\\_@^a@`@]^_@b@_@b@_@b@]`@a@f@_@b@_@f@]b@Y`@Y^]d@[d@U\\W^g@v@g@t@iTf]cA~AiIrMk@|@eC|Dw@nAoCzDsD~F{CzEyPfXqAtBsAvB{@rAYb@g@z@i@x@e@x@{BtDu@lAMRQZMPGLYd@Yf@w@tAGLA@oAxBg@|@Yf@CB]j@[f@[f@}BtD[f@SZKR_@n@y@rAUb@iAnB_BnCe@x@g@v@c@t@c@p@Yf@oU|^c@r@c@r@a@n@_@n@]l@]j@MRWb@[f@a@r@c@p@mB~@k@~@g@t@e@t@U^}@vAcA~AcA~A}@xA", + "józefinów|warszawa główna towarowa": "aro}Hs{g~Bc@UQk@Qi@Oc@EKKUWm@O]_@s@a@q@IM]g@]a@Y]UUGG[Y[W]W_@U[Qa@SWKEA]Mc@M_@GOCMCCAa@E]A_@A]?_@?_@B[B[F]D]H[JQFC@[JWL[NYPWNGDeErCiBlAcBjAaAn@a@Xa@V_AXs@Zs@X_Cz@oC`AkBp@OFk@RgBn@_A\\aCx@q@Ra@Lc@Jm@Lo@Hg@Dk@Di@@g@?g@?[CUAg@Ei@Ek@Ka@IICg@Mk@Qi@Sg@Si@Yg@Yg@[_@WKI]We@c@c@a@c@c@KMW[a@g@OQQYa@m@_@m@_@o@Uc@GM]s@[s@Wq@Yu@AEY{@Uu@Uy@Su@EQKc@Ke@G[G[Ic@GWEYCOKu@G_@Iq@EWIo@KeA_@cDW}BAKGi@Ee@Ee@Ee@Ca@Cc@G}@_@gGcAwPUoDyB{^a@cH_@iGEq@w@oMMwBG_As@kL", + "dłubnia|raciborowice": "gsxpHwlfyBg@r@y@jAUXOTSTKJ[^i@l@SVWXUVQVUZSZS^e@z@{@`BUb@S\\U\\QTUZUTURUPYRWNSHe@Pe@Li@FS@U@a@?]Ca@EQCOEc@M[OUKa@UYSa@c@SSY_@Yc@S_@Sc@Sg@Uo@So@[eAQk@[gAi@kB]_Ai@cCDEw@sC", + "marków|szeligi": "a_e|Hmtb|Bq@nHEVCTaBzK_ApGcHfe@m@bEUdBQzAKdAKtAK~AGvAEbBCrAAxA?`B@pABrADtAFpAFhAJnAJhALjANnAPhALv@F\\Jj@DTDTNn@Rz@XdAV~@X|@Xv@Vr@Zv@Xn@^x@Vf@^r@b@r@\\h@^h@d@j@V\\f@j@d@d@f@d@b@`@`@X\\VdBhAfBjAxDdClQfLVPVNVPXNLJNHJFLF\\P\\PNFFBRJZLZJRHnAf@ZLXLZLXNnAl@XNZNt@XbDnAz@\\fHnCd@P`C~@pHtCb`At^", + "przemiarki|łazy łc": "o~orHok`uBuChBcJbHq@f@iBpAsPrLq@b@m@^u@b@u@^c@Rw@\\i@Ru@Vu@Rs@Rw@Pc@Hi@H_@Fu@Hu@F_@BW@s@B{@?w@?C?q@Aw@Ew@Gc@ESCy@Ku@Mu@Ou@Sw@Ss@Wo@Ui@Uk@Wi@Wm@[u@c@m@a@u@g@o@g@m@e@uK}Ik@c@i@a@m@a@m@_@m@[m@[m@Wa@QOGq@Um@Qs@Qo@Ms@Mo@K}B[m@Ii@Km@Ok@Ok@Qi@Si@Si@Wi@Yi@[e@[i@a@c@]_@[IIe@e@e@e@e@i@UWKO_@g@a@k@a@o@Ye@EG_@s@]s@_@w@Qa@IQ[y@Yw@Um@Qm@Qm@Ma@Oi@Mi@Qu@Oq@Mq@Km@Ig@Ga@Mw@K{@Ge@CUKy@W}BUqBIy@Gy@I{@GgAGiAK_C]cII_Bg@qHYaGEmAEw@eBo`@Es@", + "dąbrowa górnicza towarowa dta r5|przemiarki": "i{drHwxguBiCzKkA`Fq@pCq@`Cu@zBw@jBm@rA}@`Bi@z@i@t@s@~@gAlAo@n@i@b@gAv@i@\\y@d@e@T]Nm@Ts@TkAXoATi@FoAH{@@o@?qp@sB_ACqp@sBwIKaZaAuBG}@Aw@?_BB{AFiBNyBXyAX{@P_Cp@A@uAf@cA`@iBz@{@d@w@d@iBlAw@j@{@r@{@t@i@f@a@`@aA`A}AhBm@v@q@|@gA|A}@vA_A`Ba@r@aAdB}DnH{Wpf@_CjEeCrEwB`EwAhCiYxh@i@`Ag@|@EHk@|@w@jA[d@[`@c@j@i@p@{@bAs@v@_@^SR}@z@m@h@k@f@w@l@yC|B", + "dąbrowa górnicza towarowa|dąbrowa górnicza towarowa dta r5": "a}drHsrguBv@cE", + "rokiciny|słotwiny": "_rjzH}pvwBaC_Ag_@aOwP{GqAg@uAk@mEgBeG_CkAg@oAe@{CmA{H}CeMaFmDwA{D{Aki@gTeBs@sAi@GCsn@sVac@}PqP{G{CkA_A_@eLsEq@Ww_@kOaJqDOGmBu@e@Qg@Ui@So@Yo@Wg@Ss@YiEcB[OMEKGMGMIw@g@QKYOKIe@Y[UUQUQQQa@c@MOMQSYMUOUMWOYKWMWM[IWKWEOCIK[I]AEGUI]G]G[G]G_@E[Ea@AMCSEm@Eo@Cc@Cc@IsA]yGSkEy@wOCu@E}@Cm@Ac@Ae@Ak@?e@Ae@@g@?g@@e@@e@@g@Bg@@e@@MBYBg@De@De@De@Fe@De@BQDSFc@Hc@?AHa@Fa@Jc@Je@Ja@Ja@La@DOJ_@BKtD_MJ_@J]J[L[J[JWL[P_@\\iAdBoDz@kB", + "dorota|dąbrowa górnicza wschodnia": "gz{qHstttBaIoFq@e@oFqDuA}@yA{@c@WmAi@eBs@aA_@gA[qBg@mB_@_UgDCAe`@aG}AU}AYkA[iAe@iAo@cAs@OMo@k@y@}@]c@GGQW]g@[e@Wi@Wc@Wm@Wk@Wo@Uo@Ww@GWIYSw@Os@Qw@Mu@My@M{@K}@Gw@G{@G{@E{@C{@A_AA}@?k@?i@@qABwFJqM", + "sosnowiec dańdówka|stawiska": "coxqHo_`tBFdFDrCPhLHxFFpDLxHRnADtCJpHDbBHlFP`MJnHLvH?t@?x@AbAC|@Cx@G`AEx@Ix@Gr@Kv@EZKr@UxAsAlIQnAKv@Gf@KpAGt@EbAE~@At@C~@?L?r@BvBBdABv@F|@H~@Ht@Hr@Jv@Jj@Ln@Lj@Nl@Tv@Vt@TfA^dAtF~Op@jBb@`B^bBd@tCNfArDnXJn@tBnOPtA`Ifl@ZhBb@dBf@`Bj@zAp@tAv@pAx@dA|@bA~@t@zElDfHhFTPZTZVXVTTTVTVT\\T^P\\N\\N`@Nb@Nf@Jd@Jd@Hd@Hj@Df@Fl@Bj@Bf@@^@b@?r@@x@RpV@~ABz@Dx@Dx@Fx@RnBJt@Lt@Lt@Pr@Pr@Pn@HTHTRd@L\\Td@b@~@", + "katowice janów|stawiska": "w_sqH{mmsBoMcX}Om\\OYgN{ZWi@_FaKg@gAk@oA{Uai@g@iAa@y@g@iAc@aAcBmD", + "katowice janów|katowice much. kmb": "w_sqH{mmsBr@zAtArCf@fARd@Tf@\\x@^~@rHfS|@fCx@lCj@~Bh@jCbFnYRnAp@~D^vBdDlPHb@`@jCNfANnAHxABp@Bp@?x@?x@G~Be@vJ[~FwDdq@Q~C[tEK`CGnB@fB@rBJvFF~AFnAFn@N|AfIxs@^fDj@nGZrCxDx\\^fD\\hDB`@tIf_AVlCT~ATvA", + "katowice much. kmb|staszic": "szpqHw{_sBHl@Ff@NzAR|BNlAL|@N~@Pz@Pt@ZjAf@vAd@lAn@zAvHdRbAdC^z@`@x@d@v@b@f@b@d@vA|@fBh@d@Ff@@h@Ad@Ef@KhA]v@e@~@y@t@_Ad@q@d@w@d@w@", + "gałkówek|łódź olechów łoc": "cqvzHqbnwBBhAl@rT`@xNNdGBxABlABxA@pAJh_@@dC?zAD|JBdK?|ABtIBlHFdRf@ljB@fDAbDE|CGtCMrCQxCUjCWjC]jCa@rCyAnJAB?DCJmAzHkA~HQnAQhAOjAKdAMjAKhAIfAKlAGjAGjAEhAElAClAAhAApAApA?tA?jA@rDJv`@@nD@tD@pD@tDJb`@@tDD|N@jD@hEDvODjM@tE@lATrBBfN@n@?n@?VAz@?v@ExBAl@Cz@Cl@EbAC`AGpAAPMbCQtDkEx}@yAvZE~@I`BAJAVAVCp@IbBGfBC`ACz@A~@Ax@?vAAxA?^?rB?zA?t@?~CAnF?zB?V?h@?z@?z@@`A@`A@`A@x@B~@B~@Bx@B~@D`ABz@D|@D|@D|@FdAFdAD~@HnAJnADn@Dl@Fj@Dl@Hj@Fl@Hj@Hj@DVDTHh@Jj@Lh@Jh@Lh@Nl@~CfMRx@Rx@Nj@Ll@Hb@Jd@H`@H`@Hb@Hh@NfAJj@l@rE", + "dionizów|gajewniki": "kxazHmnvrB`@ITIRIb@QPKp@_@f@YZSZUZYXWTWZa@Xa@R]T_@Tg@Pc@Re@Tu@Vw@l@qB`Kc]X_AX}@\\}@N[L[Xi@NUJQ\\g@\\e@`@c@NONOt@k@v@k@v@g@pBoAdFaDnA{@nAmAV[V[j@}@Ra@Rc@b@eANa@J]Lc@Lc@Ha@H]Hc@Fa@Lw@D]B]DY@YFu@Bg@@g@@u@?s@?y@EkD?_@?[?]@u@?[?Y?c@As@?_E", + "kraków olsza|kraków przedmieście": "kgtpHgfxxBs@`JO|BEn@Iv@Kx@Mj@IXK\\KZM\\OZQZSXQTUVSPSNWNWLUHWFUD[BU@Q?QAKAWCUG[I]OWMmAs@s@a@[O[O[OiBs@OGQIOI]U", + "sosnowiec główny|sosnowiec południowy": "uozqHgqusBbBzHTd@n@bBnA~Ch@vA~@vB~@dBp@dAj@p@h@h@VQIOYk@KSIWKYGQQq@Kk@Ko@QyAGo@Eq@Ck@Ao@?_@?_@@M@s@Ds@B[BY@K@KFYFa@F[H[HYN_@L[N[", + "sosnowiec dańdówka|sosnowiec maczki": "coxqHo_`tBCgAC}AAkDAwAA}Ag@s]EiDAkACgCAuBAsAImEIaFC_C?CAaBB}AB}AHqBNgCd@}GTgCN}ALgBFiAFuAB_ABkA?}@?{AAkAEcBIeBGaAKoAKeAE_@Ge@Ik@O_AMw@Oy@Mm@U_Am@_C[oA}WyeAMg@q@kCCKo@cC]sAUu@Uo@Uo@Wk@Yq@[k@Ye@Ua@QWOS[a@SWOQOQSSKKGGYWWS_@[e@[eAm@{@c@_Aa@qJgEi@Wc@Sc@Ua@Ya@Y_@Yc@_@KKo@q@_@c@]c@AAYc@]g@[i@o@cAo@iAEIGG_EcH[k@KUYo@KUOWsC}EkGqKeAkB[i@Uc@O]O[Qa@IWCIMa@I]Ie@Ic@Ge@Ge@Ec@Cg@Ag@Ag@?g@?g@@c@Bi@Ba@Dk@Fe@Fc@He@Je@Lc@J[HUJYL[P]Ta@LSNUFGT[X_@nAcBl@_Ah@u@~GeKle@es@jA_Bv@aAZa@dBwB|TqXrAcBbAuALQfBcCd@y@b@_A^aA\\gAZeATkARmAJw@DWLuAHsADmABqABaEJ_NBgBBgBFcBLcBP_BT_BZaB\\sA^kABKTm@L[d@eAl@kAXa@Zc@l@u@n@k@t@g@z@e@f@Ux@_@r@[ZOXO\\Sb@W|DcCvFiD\\Wb@YZUXW\\]Z[X]X_@Ze@f@y@j@kAx@cB", + "borowa górka|bukowno": "}rtqHkg~tBOi@u@gJU{Cq@wHOmBKsAKmAIqAIqAOwC?E_@qJS}DW{D[yDgGmu@AMqF_q@mDub@_LcuAaLcuAaLcuAaLcuA}JanAWeCSwAIc@a@}Bg@uBk@sBw@{Be@qA[{@aB}Ek@cBUs@Ss@Sw@Qs@Ow@Ou@O}@Kw@M{@Iw@Iw@G}@Gw@E}@EeAAg@I[[eKQkGQuGC_AAs@AOAw@?aA@}@@}@BcABaADgAD}@VmE`@}H", + "dłubnia|kraków batowice": "gsxpHwlfyBg@r@y@jAgBhC_ApAe@t@e@v@[f@IN_@t@_@t@c@|@_@|@]|@]`AAFWt@Sj@GTYbA[jASz@WnAS`AQbASjAMdASzAGn@Gl@MvAEd@Gp@IzACn@Ch@ErAA^Ct@C|BEzCExC?BC`CItFGjDEdDGhDGjECjBE`CCdBCdBC|ACfBA`BAx@ExDClBCvAAdAApAUXOxMCvC?hA?hA@`BBlABvAFvAHvALdBHdAJdATnB`@tCb@~BTjAr@vCbAzDlC`K", + "koniecpol|starzyny": "mq|tH{xhwBUeGIwAK{AIcAKeAKcAMeAOaAOeAOy@UiAS_AU}@]qAe@cBi@iBaG}S]mA[kAYgAW_AS{@Q{@ScAO}@QaAMaAMgAKcAIcAIaAGgAEcAEkAAaACkA?cA?iA@y@@}@Bs@Bw@DkADy@Fy@HaA@GJaAJcAL}@L{@PgAPaAR_AVgAZkAZeAZcAZ}@Zw@Xq@Zo@Tg@Tc@Zg@Zk@T]T]`@i@b@k@`@g@b@e@h@g@d@c@f@a@h@_@j@_@d@Yl@[r@_@vC{A|C{ArV{LjN_HxLcG`LwFze@uUbLuFlAq@tAu@`BaAbBkAvAmAzAwApAwAvAiBlAoBtAyB|E{JvTid@zMiXf@_AfAwBxAgCjAmBbBaC`_@ki@Xa@fi@mv@vIcMtV}]nAcBbAuAtAuA~@}@HGbBsAbBgA~A_AnB_Afg@kTxAq@~LmF~CgAPG", + "katowice muchowiec staszic|staszic": "atpqHkbfsB`BxIR~@R~@l@xBh@rBT|@Rt@VvAf@nCZbBP`ATzAR`Bj@tEl@~E\\dDb@tDRlAJn@n@hDz@xEjB~J^nBP|@h@vEVvAVxAp@rD`BzIXrA`@~Av@dDtBtIxD|OtAzFnAhFXnAP|@PjAJz@LfAFdAHxABjA@dBAnACz@Ev@A`@InAMlAU|AUvAUdAc@`BIZqB`Iu@pCOf@Qf@{@lBI\\", + "dąbrowa górnicza wschodnia|kozioł": "k|_rHskxtBFcF@kB@aAp@el@^{ZF}GCaCXmUNgOr@{m@B{ADcBD{AFgBF}AHeBlEecAFyAH}AHsAJ{AJoANyALmANqAnHyl@LaAJaAJeAHcAFaAFeADgABaA@cA@gA?gA?cACeACcAEiAEeAGiAIeAKaAI{@OiAOeAOeAQ}@ScASy@U_AW{@Y_AUu@Wo@Yw@[u@_@y@AA{@gBcA_BcAwA}EoGiAuAiA{AaC}D_AuA_AwAu@{Au@iBm@kBk@qBg@_Ca@yBa@uCwGyc@g@eDIo@]{BUw@i@sD", + "dąbrowa górnicza towarowa|kozioł": "a}drHsrguBv@cEHa@tCyL^{ATaA`@qA^iA`@cAd@cAd@}@`@s@b@q@f@q@j@o@|@{@d@a@d@[~@m@x@a@b@Qx@WtA[nAMp@Cx@Av@D`@Bl@Hp@LjAZh@Pj@V`@R^Rf@ZR?DgBFwALcBR_BDYPeAp@yCj@eBPg@h@oAp@mAv@kAf@q@j@o@~@{@bAm@`Ag@fAa@p@Ot@KhAGlAAtHRtAFpALpATnAZFBdAb@jAn@jAv@fA`A`AhA~@jA|@xAt@zAr@`Bn@hBj@vB`@fB^rB|@`GJp@Hr@Jv@A~A", + "mysłowice|stawiska": "casqHcrysBsArAqAx@}DbCYPWRWRg@j@a@f@o@~@}BpDu@rAo@pAe@r@w@`BaBnDo@bBITi@vAa@~@a@~@c@z@g@`Ao@fAuAxB_@h@c@j@_BnByA~AmAdA_Ax@g@`@_@^Y\\KLa@h@w@vA_C~CoBhCoGnIcAzAwDxFwBbDmDnFy@~A_IhMaDnFQZk@bAYh@Yh@OXSb@Uj@Qd@Qd@Od@Mf@Oh@Kd@Mj@Kh@Ih@Ij@Ij@Eh@Gn@Eh@Cp@Cj@Al@?h@@j@Bt@Dz@RhC@RFh@Fj@Jh@Hf@Ld@Lf@N`@Nb@P`@P^T^R\\TZTVVVVTZTTNb@T\\PbAd@zAp@r@Z`@TZPVRVRVTTXTVTZR^Xf@h@fAzBvEhAdB", + "dąbrowa górnicza towarowa dta r5|kozioł": "i{drHwxguBHa@tCyL^{ATaA`@qA^iA`@cAd@cAd@}@`@s@b@q@f@q@j@o@|@{@d@a@d@[~@m@Zq@fB}@r@_@bAg@`FeCrBcArBcAvBcA`FcCnWmMjAc@nAYdAOvAKpA?pAHnAPlAZlAb@hAl@hAt@bA|@bAdA|@jA|@tAt@xAp@bBn@dBj@tB`@dBZhB@FnBtN", + "kutno|ostrowy": "}sw}HkuauB?BEPGPKf@Mb@CJOh@GRIVOh@GLGTOb@o@lBUr@GTELK\\K`@MFYJMj@YpAMn@Qx@Kd@Kf@Qr@GTw@|CGVw@`Dq@lCi@xBMf@U|@U~@GROn@Kb@K`@G^Op@Ot@Ml@Kn@Ib@CJWvAGb@CNuAbIsB|LO|@]vBEVm@lDcAbGCLe@nCiA`Ho@rD_@|B[jB[jBuD|Tg@tCa@bCa@`CCNc@jCe@rCkA~Gw@xEwE|XuBbMEVy@|ESnASjAWvAg@vCkAdHq@`E}B|MY`BWbBeNdy@k@lCG^WvAeAlGKp@YbBYbBETG\\Ot@Ov@Q~@I`@K^Ml@Mf@Of@Oh@Of@Of@Sl@Ob@Q`@IVQ`@MZOZ[t@_@p@]n@a@n@a@n@a@n@gClDiCjDqGzIiPvTOd@yNxR}b@|k@g\\fd@k\\`d@}AxByA~BuAdCoAjCkAnCgAxC{f@|vA}f@dwAyYfz@e@rA_@dAe@nAa@dAi@nAg@hA{JhT{AnCaAtByAvCoCzFw@bBsAvCOZiK|T[n@wAxCyClG[r@{B|E[r@y@hB", + "dionizów|zduńska wola": "kxazHmnvrB`@ITIRIvAg@^OXOXQTOTOTUTSVYV[T]Va@Ta@Vg@Rg@Tk@Pk@hA{DzJw\\ZaAZ_AL_@L[N[N[Zk@\\i@d@q@d@g@RQPQj@a@p@a@^Q^Od@Mb@I^G^C^A\\?X@X@\\D\\F^J^H\\N\\Nb@V`@Vf@`@XXVZTXTXXb@Vb@Vd@Th@Rf@Pf@J\\J\\Ld@Ld@Hh@Jj@Jl@Hn@Df@Df@Dh@Bh@Dn@BpABdBBpAFhFFdFBdBBnBJbI@x@Bh@FdA@\\LlCB\\?^FzDBhCTrQBvA?dABfDB|E@fABzCVjRFpFDhBDjBJrE@r@DhB@bAF|E@d@Hh@", + "dąbrowa górnicza huta katowice|dąbrowa górnicza strzemieszyce": "q_frHwvptBPf@jAY\\Gf@MXEXEVEXA\\C\\?^@`@Bb@DH@RD`@H^L^N\\L^TZR`@Z\\X~CnCtDfDdIjHzClCxClCLLf@b@h@b@b@\\XR?@JFd@Zb@Xf@Xd@Vd@Vd@R@?d@Rd@PJDHB\\L`@Lp@Pl@LD@j@Jn@JfBPlCHtABP?xDSnAWnAa@lAg@lAs@fAw@bAcAhAmA`AuAf@}@x@{Av@}AHOpBcEFMpJuR~@}BVs@L[HSHUFQHSDODIBIFONi@DS`@wANo@Pm@FWDUH_@H_@^qB`AcFP}@VsA~@yE", + "zduńska wola|zduńska wola karsznice": "qh_zH{rrrBAi@Ae@Ay@@_@?[@}@@c@?]AWIeHIiHAk@E}BE_DA_BCw@A_AC_ACyAA{Ac@i]GkFYiUGsE]wXGkFCeA?mC?cABeAD}ALmBFy@HaAZcCN{@Nw@XuANk@ZiAPg@f@yAbA}B`@s@p@iAt@cAf@m@n@o@z@w@x@g@z@i@`Ac@zAg@~@QrC_@nAEhB?zAHfBNdL|@rA@nAEfBUnBk@|@a@nAs@fA{@bAaAbAkA|@sAt@oAv@_B`A}Bv@qB`CsGhAyCt@qB~KiZ`AkC^_Ad@gA\\u@\\u@d@{@`@u@Ta@`@o@~AmCh@{@b@m@b@o@b@m@tFoHFK|EqG", + "idzikowice|radzice": "wa`yH{v~zBsFkKYk@kAeBcIoOoBsDuAiCgCgGmoAiaC}@eBsCuFs@yAkAaCcA_C}@wBaAmCw@uCq@oCq@cDe@iDQwAOuAIu@Gq@MgBGw@Eu@MkBEy@G_AO{Bq@_LkAiRe@mHc@mHGiAEgAG_BCyAAgA?cA?iA@eABgABcAFgAFeAFaAHgAJ_AJcA\\aCPeAPiAT_Bx@cFLu@" + }, + "segmentColors": { + "warszawa grochów|warszawa wschodnia": [[0, 0]], + "warszawa centralna|warszawa wschodnia": [[0, 0]], + "warszawa centralna|warszawa zachodnia": [[0, 0]], + "warszawa włochy|warszawa zachodnia": [[0, 0]], + "józefinów|warszawa włochy": [[0, 0]], + "józefinów|pruszków": [[0, 0]], + "grodzisk mazowiecki|pruszków": [[0, 0]], + "grodzisk mazowiecki|korytów": [[0, 0]], + "korytów|szeligi": [[0, 0]], + "biała rawska|szeligi": [[0, 0]], + "biała rawska|strzałki": [[0, 0]], + "idzikowice|strzałki": [[0, 0]], + "idzikowice|opoczno południe": [[0, 0]], + "opoczno południe|pilichowice": [[0, 0]], + "olszamowice|pilichowice": [[0, 0]], + "olszamowice|włoszczowa północ": [[0, 0]], + "knapówka|włoszczowa północ": [[0, 0]], + "knapówka|psary": [[0, 0]], + "psary|starzyny": [[0, 0]], + "sprowa|starzyny": [[0, 0]], + "kozłów|sprowa": [[0, 0]], + "kozłów|tunel": [[0, 0]], + "miechów|tunel": [[0, 0]], + "miechów|słomniki": [[0, 0]], + "niedźwiedź|słomniki": [[0, 0]], + "niedźwiedź|zastów": [[0, 0]], + "raciborowice|zastów": [[0, 0]], + "kraków batowice|raciborowice": [[0, 0]], + "kraków batowice|kraków przedmieście": [[0, 0]], + "kraków główny|kraków przedmieście": [[0, 0]], + "kraków główny|kraków zabłocie": [[0, 0]], + "kraków płaszów pzs kpa|kraków zabłocie": [[0, 0]], + "góra włodowska|psary": [[0, 0]], + "góra włodowska|zawiercie": [[0, 0]], + "zawiercie|łazy ła": [[0, 0]], + "łazy|łazy ła": [[0, 0]], + "łazy|łazy łc": [[0, 0]], + "dąbrowa górnicza ząbkowice|łazy łc": [[0, 0]], + "dąbrowa górnicza|dąbrowa górnicza ząbkowice": [[0, 0]], + "będzin|dąbrowa górnicza": [[0, 0]], + "będzin|sosnowiec główny": [[0, 0]], + "katowice zawodzie|sosnowiec główny": [[0, 0]], + "katowice|katowice zawodzie": [[0, 0]], + "włoszczowa północ|żelisławice": [[0, 0]], + "grodzisk mazowiecki|żyrardów": [[0, 0]], + "radziwiłłów mazowiecki|żyrardów": [[0, 0]], + "radziwiłłów mazowiecki|skierniewice": [[0, 0]], + "płyćwia|skierniewice": [[0, 0]], + "płyćwia|rogów": [[0, 0]], + "koluszki|rogów": [[0, 0]], + "koluszki|rokiciny": [[0, 0]], + "baby|rokiciny": [[0, 0]], + "baby|piotrków trybunalski": [[0, 0]], + "piotrków trybunalski towarowy|rozprza": [[0, 0]], + "warszawa gołąbki|warszawa włochy": [[0, 0]], + "bednary|warszawa gołąbki": [ + [0, 0], + [12, 1], + [707, 0] + ], + "bednary|łowicz główny": [[0, 0]], + "jackowice|łowicz główny": [[0, 0]], + "jackowice|stara wieś": [ + [0, 0], + [9, 1], + [163, 0] + ], + "kutno|stara wieś": [[0, 0]], + "krzewie|kutno": [[0, 0]], + "gałkówek|koluszki": [[0, 0]], + "gałkówek|łódź andrzejów": [[0, 0]], + "łódź andrzejów|łódź widzew": [[0, 0]], + "łódź fabryczna|łódź widzew": [[0, 0]], + "mikołajów|żakowice południowe": [[0, 0]], + "gałkówek|żakowice południowe": [[0, 0]], + "łódź marysin|łódź widzew": [[0, 0]], + "zgierz|łódź marysin": [[0, 0]], + "zgierz|zgierz północ": [[0, 0]], + "zgierz kontrewers|zgierz północ": [[0, 0]], + "chociszew|zgierz kontrewers": [[0, 0]], + "chociszew|ozorków": [[0, 0]], + "ozorków|łęczyca": [[0, 0]], + "witonia|łęczyca": [[0, 0]], + "kutno|witonia": [[0, 0]], + "kraków główny|kraków płaszów pzs kpa": [[0, 0]], + "warszawa praga wpt m|warszawa wschodnia": [[0, 0]], + "katowice zawodzie|mysłowice": [[0, 0]], + "katowice|katowice tow. ktc": [[0, 0]], + "kraków główny|sosnowiec maczki": [ + [0, 0], + [69, 1], + [988, 0] + ], + "dorota|sosnowiec maczki": [[0, 0]], + "dorota|dąbrowa górnicza południowa": [[0, 0]], + "dąbrowa górnicza huta katowice|dąbrowa górnicza południowa": [[0, 0]], + "dąbrowa górnicza huta katowice|dąbrowa górnicza ząbkowice": [[0, 0]], + "myszków|zawiercie": [[0, 0]], + "myszków|rozprza": [ + [0, 0], + [1, 1], + [1148, 0] + ], + "gałkówek|rokiciny": [[0, 0]], + "łódź chojny|łódź widzew": [[0, 0]], + "retkinia|łódź chojny": [[0, 0]], + "retkinia|łódź lublinek": [[0, 0]], + "pabianice|łódź lublinek": [[0, 0]], + "dobroń|pabianice": [[0, 0]], + "dobroń|kolumna": [[0, 0]], + "kolumna|łask": [[0, 0]], + "borszewice|łask": [[0, 0]], + "borszewice|gajewniki": [[0, 0]], + "gajewniki|zduńska wola": [[0, 0]], + "sieradz|zduńska wola": [[0, 0]], + "łódź chojny|łódź dąbrowa pbs": [[0, 0]], + "łódź dąbrowa pbs|łódź widzew": [[0, 0]], + "kraków główny kga|sosnowiec maczki": [ + [0, 0], + [17, 1], + [927, 0] + ], + "kraków główny|kraków główny kga": [[0, 0]], + "łódź fabryczna|łódź niciarniana": [[0, 0]], + "łódź niciarniana|łódź widzew": [[0, 0]], + "warszawa podskarbińska|warszawa wschodnia": [[0, 0]], + "lipce reymontowskie|płyćwia": [[0, 0]], + "lipce reymontowskie|rogów": [[0, 0]], + "bedoń|łódź andrzejów": [[0, 0]], + "bedoń|justynów": [[0, 0]], + "gałkówek|justynów": [[0, 0]], + "gałkówek|żakowice": [[0, 0]], + "koluszki|żakowice": [[0, 0]], + "koluszki|wągry": [[0, 0]], + "rogów|wągry": [[0, 0]], + "przyłęk duży|rogów": [[0, 0]], + "krosnowa|przyłęk duży": [[0, 0]], + "krosnowa|lipce reymontowskie": [[0, 0]], + "maków|płyćwia": [[0, 0]], + "dąbrowice skierniewickie|maków": [[0, 0]], + "dąbrowice skierniewickie|skierniewice": [[0, 0]], + "puszcza mariańska|skierniewice": [[0, 0]], + "koluszki|żakowice południowe": [[0, 0]], + "idzikowice|radzice pzs r31": [[0, 0]], + "łowicz główny|łowicz przedmieście": [[0, 0]], + "stare grudze|łowicz przedmieście": [[0, 0]], + "domaniewice|stare grudze": [[0, 0]], + "domaniewice|domaniewice centrum": [[0, 0]], + "domaniewice centrum|kamień łowicki": [[0, 0]], + "głowno północne|kamień łowicki": [[0, 0]], + "głowno|głowno północne": [[0, 0]], + "bratoszewice|głowno": [[0, 0]], + "bratoszewice|stryków": [[0, 0]], + "stryków|swędów": [[0, 0]], + "glinnik|swędów": [[0, 0]], + "glinnik|glinnik wieś": [[0, 0]], + "glinnik wieś|smardzew": [[0, 0]], + "smardzew|zgierz rudunki": [[0, 0]], + "zgierz|zgierz rudunki": [[0, 0]], + "zgierz|łódź radogoszcz wschód": [[0, 0]], + "łódź arturówek|łódź radogoszcz wschód": [[0, 0]], + "łódź arturówek|łódź warszawska": [[0, 0]], + "łódź marysin|łódź warszawska": [[0, 0]], + "łódź marysin|łódź stoki": [[0, 0]], + "łódź stoki|łódź widzew": [[0, 0]], + "słotwiny|żakowice południowe": [[0, 0]], + "mikołajów|słotwiny": [[0, 0]], + "sędziszów towarowy|warszawa zachodnia peron 8": [ + [0, 0], + [1, 1], + [4570, 0] + ], + "sędziszów|sędziszów towarowy": [[0, 0]], + "gniewięcin apo|sędziszów": [[0, 0]], + "gniewięcin apo|klimontów apo": [[0, 0]], + "klimontów apo|kozłów": [[0, 0]], + "charsznica|tunel": [[0, 0]], + "charsznica|gajówka apo": [[0, 0]], + "gajówka apo|wolbrom": [[0, 0]], + "wolbrom|zarzecze apo": [[0, 0]], + "jaroszowiec olkuski|zarzecze apo": [[0, 0]], + "jaroszowiec olkuski|olkusz": [[0, 0]], + "bukowno|olkusz": [[0, 0]], + "bukowno|sławków": [[0, 0]], + "dąbrowa górnicza wschodnia|sławków": [[0, 0]], + "dąbrowa górnicza strzemieszyce|dąbrowa górnicza wschodnia": [[0, 0]], + "dąbrowa górnicza strzemieszyce|sosnowiec kazimierz": [[0, 0]], + "sosnowiec kazimierz|sosnowiec maczki": [[0, 0]], + "chrusty nowe|żakowice": [[0, 0]], + "chrusty nowe|rokiciny": [[0, 0]], + "rokiciny|łaznów": [[0, 0]], + "wolbórka|łaznów": [[0, 0]], + "baby|wolbórka": [[0, 0]], + "baby|moszczenica": [[0, 0]], + "jarosty|moszczenica": [[0, 0]], + "jarosty|piotrków trybunalski": [[0, 0]], + "gawrony|witonia": [[0, 0]], + "gawrony|łęczyca": [[0, 0]], + "sierpów|łęczyca": [[0, 0]], + "ozorków|sierpów": [[0, 0]], + "ozorków|ozorków nowe miasto": [[0, 0]], + "chociszew|ozorków nowe miasto": [[0, 0]], + "chociszew|grotniki": [[0, 0]], + "grotniki|jedlicze koło zgierza": [[0, 0]], + "jedlicze koło zgierza|zgierz kontrewers": [[0, 0]], + "zgierz jaracza|zgierz północ": [[0, 0]], + "zgierz|zgierz jaracza": [[0, 0]], + "zgierz|łódź radogoszcz zachód": [[0, 0]], + "łódź radogoszcz zachód|łódź żabieniec": [[0, 0]], + "łódź kaliska|łódź żabieniec": [[0, 0]], + "łódź kaliska|łódź pabianicka": [[0, 0]], + "łódź chojny|łódź pabianicka": [[0, 0]], + "łódź chojny|łódź dąbrowa": [[0, 0]], + "łódź dąbrowa pbs|łódź zarzew": [[0, 0]], + "łódź widzew|łódź zarzew": [[0, 0]], + "sosnowiec dańdówka|sosnowiec kazimierz": [[0, 0]], + "sosnowiec dańdówka|sosnowiec południowy": [[0, 0]], + "katowice zawodzie|sosnowiec południowy": [[0, 0]], + "warszawa gołąbki|łowicz główny": [ + [0, 0], + [4, 1], + [697, 0] + ], + "kutno|łowicz główny": [ + [0, 0], + [116, 1], + [245, 0] + ], + "łódź andrzejów szosa|łódź widzew": [[0, 0]], + "łódź andrzejów szosa|łódź olechów pzs r82": [[0, 0]], + "łódź olechów wschód|łódź olechów łoc": [[0, 0]], + "łódź olechów pzs r16|łódź olechów wschód": [[0, 0]], + "łódź olechów pzs r16|łódź olechów zachód": [[0, 0]], + "łódź olechów wiadukt|łódź olechów zachód": [[0, 0]], + "łódź olechów pzs r3|łódź olechów wiadukt": [[0, 0]], + "łódź chojny|łódź olechów pzs r3": [[0, 0]], + "retkinia|łódź pabianicka": [[0, 0]], + "retkinia|łódź retkinia": [[0, 0]], + "łódź lublinek|łódź retkinia": [[0, 0]], + "pabianice północne|łódź lublinek": [[0, 0]], + "pabianice|pabianice północne": [[0, 0]], + "chechło|pabianice": [[0, 0]], + "chechło|dobroń": [[0, 0]], + "izabelów|zduńska wola": [[0, 0]], + "izabelów|męcka wola": [[0, 0]], + "męcka wola|sieradz męka": [[0, 0]], + "sieradz męka|sieradz warta": [[0, 0]], + "sieradz|sieradz warta": [[0, 0]], + "retkinia|łódź kaliska": [[0, 0]], + "bełchów|skierniewice": [[0, 0]], + "bednary|bełchów": [[0, 0]], + "warszawa stadion|warszawa wschodnia": [[0, 0]], + "warszawa powiśle|warszawa stadion": [[0, 0]], + "warszawa powiśle|warszawa śródmieście": [[0, 0]], + "warszawa ochota|warszawa śródmieście": [[0, 0]], + "warszawa ochota|warszawa zachodnia": [[0, 0]], + "warszawa ursus północny|warszawa włochy": [[0, 0]], + "warszawa gołąbki|warszawa ursus północny": [[0, 0]], + "warszawa ursus|warszawa włochy": [[0, 0]], + "warszawa ursus|warszawa ursus niedźwiadek": [[0, 0]], + "piastów|warszawa ursus niedźwiadek": [[0, 0]], + "piastów|pruszków": [[0, 0]], + "parzniew|pruszków": [[0, 0]], + "brwinów|parzniew": [[0, 0]], + "brwinów|milanówek": [[0, 0]], + "grodzisk mazowiecki|milanówek": [[0, 0]], + "grodzisk mazowiecki|jaktorów": [[0, 0]], + "jaktorów|międzyborów": [[0, 0]], + "międzyborów|żyrardów": [[0, 0]], + "sucha żyrardowska|żyrardów": [[0, 0]], + "jesionka|sucha żyrardowska": [[0, 0]], + "jesionka|radziwiłłów mazowiecki": [[0, 0]], + "radziwiłłów mazowiecki|skierniewice rawka": [[0, 0]], + "skierniewice|skierniewice rawka": [[0, 0]], + "mokra|skierniewice": [[0, 0]], + "mokra|sierakowice skierniewickie": [[0, 0]], + "bełchów|sierakowice skierniewickie": [[0, 0]], + "bełchów|bobrowniki": [[0, 0]], + "bobrowniki|łowicz główny": [[0, 0]], + "gniewięcin apo|klimontów": [[0, 0]], + "klimontów|klimontów apo": [[0, 0]], + "dziadówki|tunel": [[0, 0]], + "dziadówki|miechów": [[0, 0]], + "kamieńczyce|miechów": [[0, 0]], + "kamieńczyce|szczepanowice": [[0, 0]], + "smroków|szczepanowice": [[0, 0]], + "smroków|słomniki": [[0, 0]], + "słomniki|słomniki miasto": [[0, 0]], + "niedźwiedź|słomniki miasto": [[0, 0]], + "goszcza|niedźwiedź": [[0, 0]], + "goszcza|łuczyce": [[0, 0]], + "baranówka|łuczyce": [[0, 0]], + "baranówka|zastów": [[0, 0]], + "czarnca|knapówka": [[0, 0]], + "dorota|juliusz": [[0, 0]], + "juliusz|sosnowiec dańdówka": [[0, 0]], + "charsznica|gajówka": [[0, 0]], + "gajówka|gajówka apo": [[0, 0]], + "gajówka apo|jeżówka": [[0, 0]], + "jeżówka|wolbrom": [[0, 0]], + "wolbrom|zarzecze": [[0, 0]], + "zarzecze|zarzecze apo": [[0, 0]], + "chrząstowice olkuskie|zarzecze apo": [[0, 0]], + "chrząstowice olkuskie|jaroszowiec olkuski": [[0, 0]], + "bukowno|bukowno przymiarki": [[0, 0]], + "bukowno przymiarki|sławków": [[0, 0]], + "sosnowiec kazimierz|sosnowiec porąbka": [[0, 0]], + "sosnowiec dańdówka|sosnowiec porąbka": [[0, 0]], + "łódź chojny|łódź kaliska": [[0, 0]], + "zgierz|łódź żabieniec": [[0, 0]], + "dąbrowa górnicza gołonóg|dąbrowa górnicza ząbkowice": [[0, 0]], + "dąbrowa górnicza|dąbrowa górnicza gołonóg": [[0, 0]], + "będzin ksawera|dąbrowa górnicza": [[0, 0]], + "będzin ksawera|będzin miasto": [[0, 0]], + "będzin|będzin miasto": [[0, 0]], + "myszków mrzygłód|myszków światowit": [[0, 0]], + "myszków mrzygłód|zawiercie borowe pole": [[0, 0]], + "zawiercie|zawiercie borowe pole": [[0, 0]], + "wiesiółka|łazy łc": [[0, 0]], + "chruszczobród|wiesiółka": [[0, 0]], + "chruszczobród|dąbrowa górnicza sikorka": [[0, 0]], + "dąbrowa górnicza sikorka|dąbrowa górnicza ząbkowice": [[0, 0]], + "dąbrowa górnicza pogoria|dąbrowa górnicza ząbkowice": [[0, 0]], + "dąbrowa górnicza gołonóg|dąbrowa górnicza pogoria": [[0, 0]], + "łódź dąbrowa|łódź zarzew": [[0, 0]], + "kraków płaszów|kraków zabłocie": [[0, 0]], + "gajewniki|zduńska wola karsznice": [[0, 0]], + "glinnik|zgierz": [[0, 0]], + "glinnik|stryków": [[0, 0]], + "głowno|stryków": [[0, 0]], + "domaniewice|głowno": [[0, 0]], + "domaniewice|łowicz przedmieście": [[0, 0]], + "bełchów|mokra": [[0, 0]], + "koluszki|słotwiny": [[0, 0]], + "bełchów|płyćwia": [[0, 0]], + "bełchów|łowicz główny": [[0, 0]], + "józefinów|warszawa główna towarowa": [[0, 0]], + "dłubnia|raciborowice": [[0, 0]], + "marków|szeligi": [[0, 0]], + "przemiarki|łazy łc": [[0, 0]], + "dąbrowa górnicza towarowa dta r5|przemiarki": [[0, 0]], + "dąbrowa górnicza towarowa|dąbrowa górnicza towarowa dta r5": [[0, 0]], + "rokiciny|słotwiny": [[0, 0]], + "dorota|dąbrowa górnicza wschodnia": [[0, 0]], + "sosnowiec dańdówka|stawiska": [[0, 0]], + "katowice janów|stawiska": [[0, 0]], + "katowice janów|katowice much. kmb": [[0, 0]], + "katowice much. kmb|staszic": [[0, 0]], + "gałkówek|łódź olechów łoc": [[0, 0]], + "dionizów|gajewniki": [[0, 0]], + "kraków olsza|kraków przedmieście": [[0, 0]], + "sosnowiec główny|sosnowiec południowy": [[0, 0]], + "sosnowiec dańdówka|sosnowiec maczki": [[0, 0]], + "borowa górka|bukowno": [[0, 0]], + "dłubnia|kraków batowice": [[0, 0]], + "koniecpol|starzyny": [[0, 0]], + "katowice muchowiec staszic|staszic": [[0, 0]], + "dąbrowa górnicza wschodnia|kozioł": [[0, 0]], + "dąbrowa górnicza towarowa|kozioł": [[0, 0]], + "mysłowice|stawiska": [[0, 0]], + "dąbrowa górnicza towarowa dta r5|kozioł": [[0, 0]], + "kutno|ostrowy": [[0, 0]], + "dionizów|zduńska wola": [[0, 0]], + "dąbrowa górnicza huta katowice|dąbrowa górnicza strzemieszyce": [[0, 0]], + "zduńska wola|zduńska wola karsznice": [[0, 0]], + "idzikowice|radzice": [[0, 0]] + } +} diff --git a/packages/map/contexts/SelectedTrainContext.tsx b/packages/map/contexts/SelectedTrainContext.tsx index b77bbd7..ecfb08b 100644 --- a/packages/map/contexts/SelectedTrainContext.tsx +++ b/packages/map/contexts/SelectedTrainContext.tsx @@ -1,6 +1,9 @@ +import { useLocalStorage } from "@mantine/hooks"; import type { Train } from "@simrail/types"; import { + type Dispatch, type ReactNode, + type SetStateAction, createContext, useContext, useMemo, @@ -10,11 +13,27 @@ import { interface SelectedTrainContextType { selectedTrain: Train | null; setSelectedTrain: (train: Train | null) => void; + showSignalInfo: boolean; + setShowSignalInfo: Dispatch>; + showTrainRoute: boolean; + setShowTrainRoute: Dispatch>; + followTrain: boolean; + setFollowTrain: Dispatch>; + onlySelectedTrain: boolean; + setOnlySelectedTrain: Dispatch>; } export const SelectedTrainContext = createContext({ selectedTrain: null, setSelectedTrain: () => {}, + showSignalInfo: true, + setShowSignalInfo: () => {}, + showTrainRoute: true, + setShowTrainRoute: () => {}, + followTrain: true, + setFollowTrain: () => {}, + onlySelectedTrain: false, + setOnlySelectedTrain: () => {}, }); export const useSelectedTrain = () => useContext(SelectedTrainContext); @@ -25,9 +44,46 @@ export const SelectedTrainProvider = ({ children: ReactNode; }) => { const [selectedTrain, setSelectedTrain] = useState(null); + const [showSignalInfo, setShowSignalInfo] = useLocalStorage({ + key: "showSignalInfo", + defaultValue: true, + }); + const [showTrainRoute, setShowTrainRoute] = useLocalStorage({ + key: "showTrainRoute", + defaultValue: true, + }); + const [followTrain, setFollowTrain] = useLocalStorage({ + key: "followTrain", + defaultValue: true, + }); + const [onlySelectedTrain, setOnlySelectedTrain] = useLocalStorage({ + key: "onlySelectedTrain", + defaultValue: false, + }); const value = useMemo( - () => ({ selectedTrain, setSelectedTrain }), - [selectedTrain], + () => ({ + selectedTrain, + setSelectedTrain, + showSignalInfo, + setShowSignalInfo, + showTrainRoute, + setShowTrainRoute, + followTrain, + setFollowTrain, + onlySelectedTrain, + setOnlySelectedTrain, + }), + [ + selectedTrain, + showSignalInfo, + showTrainRoute, + followTrain, + onlySelectedTrain, + setShowTrainRoute, + setShowSignalInfo, + setFollowTrain, + setOnlySelectedTrain, + ], ); return ( diff --git a/packages/map/lib/trainRoute.ts b/packages/map/lib/trainRoute.ts new file mode 100644 index 0000000..a56b3bf --- /dev/null +++ b/packages/map/lib/trainRoute.ts @@ -0,0 +1,215 @@ +import railDataJson from "../components/railData.json"; + +export type RoutePoint = [number, number]; + +export interface ColoredSegment { + color: "green" | "red" | "grey"; + points: RoutePoint[]; +} + +interface RailData { + knownStations: string[]; + stations: Record; + segments: Record; + segmentColors: Record; +} + +const COLOR_NAMES = ["green", "red", "grey"] as const; + +const railData = railDataJson as unknown as RailData; + +const knownSet = new Set(railData.knownStations); + +const EDR_TIMETABLE_URL = "https://simrail-edr.emeraldnetwork.xyz/train"; + +function normalizeName(name: string): string { + return name.normalize("NFC").trim().replace(/\s+/g, " ").toLowerCase(); +} + +function decodePolyline(str: string): RoutePoint[] { + let idx = 0; + let lat = 0; + let lon = 0; + const pts: RoutePoint[] = []; + while (idx < str.length) { + let shift = 0; + let result = 0; + let byte; + do { + byte = str.charCodeAt(idx++) - 63; + result |= (byte & 0x1f) << shift; + shift += 5; + } while (byte >= 0x20); + lat += result & 1 ? ~(result >> 1) : result >> 1; + + shift = 0; + result = 0; + do { + byte = str.charCodeAt(idx++) - 63; + result |= (byte & 0x1f) << shift; + shift += 5; + } while (byte >= 0x20); + lon += result & 1 ? ~(result >> 1) : result >> 1; + + pts.push([lat / 1e5, lon / 1e5]); + } + return pts; +} + +interface TimetableStop { + nameOfPoint?: string; + nameForPerson?: string; + line?: number; +} + +const timetableCache = new Map>(); + +function cacheSuccessfulResult( + cache: Map>, + key: string, + load: () => Promise, +): Promise { + const cached = cache.get(key); + if (cached) return cached; + + const request = load().then( + (result) => { + if (result === null) cache.delete(key); + return result; + }, + (error) => { + cache.delete(key); + throw error; + }, + ); + cache.set(key, request); + return request; +} + +function fetchTimetable( + serverCode: string, + trainNo: string, +): Promise { + const key = `${serverCode}|${trainNo}`; + return cacheSuccessfulResult(timetableCache, key, async () => { + try { + const response = await fetch( + `${EDR_TIMETABLE_URL}/${encodeURIComponent(serverCode)}/${encodeURIComponent(trainNo)}`, + ); + if (!response.ok) return null; + const timetable: unknown = await response.json(); + return Array.isArray(timetable) && timetable.length > 0 + ? (timetable as TimetableStop[]) + : null; + } catch { + return null; + } + }); +} + +interface ResolvedStop { + coord: RoutePoint; + name: string; + isKnown: boolean; +} + +const routeCache = new Map>(); + +export function getTrainRoute(train: { + ServerCode: string; + TrainNoLocal: string; +}): Promise { + const key = `${train.ServerCode}|${train.TrainNoLocal}`; + return cacheSuccessfulResult(routeCache, key, () => computeRoute(train)); +} + +async function computeRoute(train: { + ServerCode: string; + TrainNoLocal: string; +}): Promise { + const stops = await fetchTimetable(train.ServerCode, train.TrainNoLocal); + if (!stops || stops.length < 2) return null; + + const resolved: ResolvedStop[] = []; + for (const stop of stops) { + const name = stop.nameOfPoint || stop.nameForPerson; + if (!name) continue; + const norm = normalizeName(name); + const coordArr = railData.stations[norm]; + if (!coordArr) continue; + resolved.push({ + coord: [coordArr[0], coordArr[1]], + name: norm, + isKnown: knownSet.has(norm), + }); + } + + let first = -1; + let last = -1; + for (let i = 0; i < resolved.length; i++) { + if (resolved[i].isKnown) { + if (first < 0) first = i; + last = i; + } + } + if (first < 0 || last <= first) return null; + + const effective = resolved.slice(first, last + 1); + if (effective.length < 2) return null; + + const segments: ColoredSegment[] = []; + let prevConnected = false; + + for (let i = 0; i < effective.length - 1; i++) { + const a = effective[i]; + const b = effective[i + 1]; + + const key = a.name < b.name ? `${a.name}|${b.name}` : `${b.name}|${a.name}`; + const encoded = railData.segments[key]; + + if (!encoded) { + segments.push({ color: "grey", points: [a.coord, b.coord] }); + prevConnected = false; + continue; + } + + const reversed = a.name > b.name; + const allPts = decodePolyline(encoded); + + const boundaries = railData.segmentColors?.[key] ?? [[0, 0]]; + + const subs: { + color: "green" | "red" | "grey"; + points: RoutePoint[]; + }[] = []; + for (let bi = 0; bi < boundaries.length; bi++) { + const [startIdx, colorCode] = boundaries[bi]; + const endIdx = + bi < boundaries.length - 1 ? boundaries[bi + 1][0] : allPts.length; + const subPts = allPts.slice( + startIdx, + bi < boundaries.length - 1 ? endIdx + 1 : endIdx, + ); + subs.push({ + color: COLOR_NAMES[colorCode] ?? "grey", + points: subPts, + }); + } + if (reversed) { + subs.reverse(); + for (const sub of subs) sub.points.reverse(); + } + + for (const { color, points: subPts } of subs) { + const lastSeg = segments[segments.length - 1]; + if (prevConnected && lastSeg && lastSeg.color === color) { + lastSeg.points.push(...subPts.slice(1)); + } else { + segments.push({ color, points: subPts }); + } + prevConnected = true; + } + } + + return segments; +} diff --git a/packages/map/package.json b/packages/map/package.json index 39daae2..ec51afe 100644 --- a/packages/map/package.json +++ b/packages/map/package.json @@ -6,7 +6,8 @@ "dev": "next dev", "build": "next build", "start": "next start", - "lint": "pnpm --workspace-root exec oxlint packages/map" + "lint": "pnpm --workspace-root exec oxlint packages/map", + "generate:rail-data": "node scripts/generate-rail-data.mjs" }, "dependencies": { "@mantine/carousel": "^7.17.8", diff --git a/packages/map/scripts/generate-rail-data.mjs b/packages/map/scripts/generate-rail-data.mjs new file mode 100644 index 0000000..80f43d0 --- /dev/null +++ b/packages/map/scripts/generate-rail-data.mjs @@ -0,0 +1,928 @@ +#!/usr/bin/env node + +import fs from "node:fs"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; + +import { + buildGraphFromRoutes, + encodePolyline, + haversineKm, + makeNearestNode, + makeRouter, + normalizeName, +} from "./rail-helpers.mjs"; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const CACHE_DIR = path.join(__dirname, ".cache"); +const OUTPUT_PATH = path.join(__dirname, "..", "components", "railData.json"); + +const OFFICIAL_TIMETABLE_BASE = + "https://api1.aws.simrail.eu:8082/api/getAllTimetables"; +const EDR_COMMUNITY_BASE = "https://simrail-edr.emeraldnetwork.xyz"; +const PANEL_BASE = "https://panel.simrail.eu:8084"; +const WIKI_MAP_DATA_URL = + "https://wiki.simrail.eu/map/main-files/map-data.json"; +const WIKI_BASE = "https://wiki.simrail.eu"; +const USER_AGENT = "simrail-app-map-route-generator/1.0"; +const SNAP_MAX_KM = 3.0; +const TIMETABLE_SERVER = "int1"; + +fs.mkdirSync(CACHE_DIR, { recursive: true }); +const refresh = process.argv.includes("--refresh"); + +async function cachedFetchJson(url, cacheName) { + const cachePath = path.join(CACHE_DIR, cacheName); + if (!refresh && fs.existsSync(cachePath)) { + return JSON.parse(fs.readFileSync(cachePath, "utf8")); + } + const res = await fetch(url, { headers: { "User-Agent": USER_AGENT } }); + if (!res.ok) throw new Error(`HTTP ${res.status} for ${url}`); + const json = await res.json(); + fs.writeFileSync(cachePath, JSON.stringify(json)); + return json; +} + +async function pool(items, limit, fn) { + let idx = 0; + const workers = Array.from( + { length: Math.min(limit, items.length) }, + async () => { + while (idx < items.length) { + const i = idx++; + await fn(items[i], i); + } + }, + ); + await Promise.all(workers); +} + +function extractStationAnchor(gj) { + const lines = []; + const rings = []; + let point = null; + for (const f of gj.features || []) { + const g = f.geometry; + if (!g) continue; + if (g.type === "LineString") lines.push(g.coordinates); + else if (g.type === "MultiLineString") lines.push(...g.coordinates); + else if (g.type === "Polygon") rings.push(g.coordinates[0]); + else if (g.type === "MultiPolygon") { + for (const p of g.coordinates) rings.push(p[0]); + } else if (g.type === "Point") point = g.coordinates; + } + const arcLenKm = (ls) => { + let len = 0; + for (let i = 1; i < ls.length; i++) { + len += haversineKm([ls[i - 1][1], ls[i - 1][0]], [ls[i][1], ls[i][0]]); + } + return len; + }; + const vertexCentroid = (ls) => { + let lat = 0; + let lon = 0; + for (const c of ls) { + lat += c[1]; + lon += c[0]; + } + return [lat / ls.length, lon / ls.length]; + }; + if (lines.length > 0) { + const open = []; + const loops = []; + for (const ls of lines) { + if (ls.length < 2) continue; + const closed = + haversineKm( + [ls[0][1], ls[0][0]], + [ls[ls.length - 1][1], ls[ls.length - 1][0]], + ) * + 1000 < + 5; + if (closed) loops.push(ls); + else open.push(ls); + } + if (open.length > 0) { + let best = null; + let bestLen = -1; + for (const ls of open) { + const len = arcLenKm(ls); + if (len > bestLen) { + bestLen = len; + best = ls; + } + } + const target = bestLen / 2; + let acc = 0; + for (let i = 1; i < best.length; i++) { + const seg = haversineKm( + [best[i - 1][1], best[i - 1][0]], + [best[i][1], best[i][0]], + ); + if (acc + seg >= target) { + const t = seg === 0 ? 0 : (target - acc) / seg; + return { + anchor: [ + best[i - 1][1] + (best[i][1] - best[i - 1][1]) * t, + best[i - 1][0] + (best[i][0] - best[i - 1][0]) * t, + ], + loopOnly: false, + }; + } + acc += seg; + } + const last = best[best.length - 1]; + return { anchor: [last[1], last[0]], loopOnly: false }; + } + if (loops.length > 0) { + let best = null; + let bestLen = -1; + for (const ls of loops) { + const len = arcLenKm(ls); + if (len > bestLen) { + bestLen = len; + best = ls; + } + } + return { anchor: vertexCentroid(best), loopOnly: true }; + } + const only = lines.find((ls) => ls.length >= 1); + return only + ? { anchor: [only[0][1], only[0][0]], loopOnly: false } + : { anchor: null, loopOnly: false }; + } + if (rings.length > 0) { + const size = (r) => { + let mnLat = 1e9, + mnLon = 1e9, + mxLat = -1e9, + mxLon = -1e9; + for (const c of r) { + if (c[1] < mnLat) mnLat = c[1]; + if (c[1] > mxLat) mxLat = c[1]; + if (c[0] < mnLon) mnLon = c[0]; + if (c[0] > mxLon) mxLon = c[0]; + } + return mxLat - mnLat + (mxLon - mnLon); + }; + const ring = rings.reduce((a, b) => (size(b) > size(a) ? b : a)); + if (ring.length === 0) return { anchor: null, loopOnly: false }; + return { anchor: vertexCentroid(ring), loopOnly: false }; + } + if (point && point.length >= 2) + return { anchor: [point[1], point[0]], loopOnly: false }; + return { anchor: null, loopOnly: false }; +} + +async function main() { + const t0 = Date.now(); + const log = (msg) => + console.log(`[${((Date.now() - t0) / 1000).toFixed(1)}s] ${msg}`); + + log("Step 1: Fetch wiki map-data.json + timetables (parallel)"); + + const wikiPromise = (async () => { + log(" [wiki] Fetching map-data.json..."); + const wikiMapData = await cachedFetchJson( + WIKI_MAP_DATA_URL, + "wiki_map_data.json", + ); + log( + ` [wiki] Routes: ${wikiMapData.routes.length}, Stations: ${wikiMapData.stations.length}`, + ); + + log(" [wiki] Fetching route geometries..."); + const routeFeatures = []; + await pool(wikiMapData.routes, 10, async (route) => { + const match = route.name.match(/^LK(\d+)$/); + if (!match) return; + const lineNo = match[1]; + const isAvailable = route.available !== false; + const cacheName = `wiki_route_${route.name.replace(/[^a-zA-Z0-9]/g, "_")}_${isAvailable ? "avail" : "notavail"}.json`; + try { + const gj = await cachedFetchJson(WIKI_BASE + route.url, cacheName); + for (const f of gj.features || []) { + routeFeatures.push({ + geometry: f.geometry, + refs: [lineNo], + available: isAvailable, + }); + } + } catch (err) { + log(` [wiki] Failed ${route.name}: ${err.message}`); + } + }); + log(` [wiki] Route features: ${routeFeatures.length}`); + + log(" [wiki] Fetching station coordinates..."); + const stationCoords = new Map(); + const knownStations = new Set(); + const wikiLoopCentroids = new Map(); + await pool(wikiMapData.stations, 10, async (station) => { + const norm = normalizeName(station.name); + const cacheName = `wiki_station_${station.name.replace(/[^a-zA-Z0-9]/g, "_").toLowerCase()}.json`; + try { + const gj = await cachedFetchJson(WIKI_BASE + station.url, cacheName); + const { anchor, loopOnly } = extractStationAnchor(gj); + if (!anchor) return; + if (loopOnly) { + wikiLoopCentroids.set(norm, anchor); + } else { + stationCoords.set(norm, anchor); + knownStations.add(norm); + } + } catch {} + }); + log( + ` [wiki] Stations with coords: ${stationCoords.size} (+${wikiLoopCentroids.size} loop-only, deferred)`, + ); + + return { + wikiMapData, + stationCoords, + knownStations, + routeFeatures, + wikiLoopCentroids, + }; + })(); + + const timetablesPromise = (async () => { + const cachePath = path.join(CACHE_DIR, "all_timetables.json"); + if (!refresh && fs.existsSync(cachePath)) { + log(" [timetables] Cached"); + return; + } + log(" [timetables] Fetching from official API..."); + try { + const resp = await fetch( + `${OFFICIAL_TIMETABLE_BASE}?serverCode=${TIMETABLE_SERVER}`, + { headers: { "User-Agent": USER_AGENT } }, + ); + if (resp.ok) { + const list = await resp.json(); + const all = (Array.isArray(list) ? list : list.data || []) + .filter( + (tt) => + tt.trainNoLocal && + Array.isArray(tt.timetable) && + tt.timetable.length > 0, + ) + .map((tt) => ({ + trainNo: tt.trainNoLocal, + timetable: tt.timetable, + })); + if (all.length > 0) { + fs.writeFileSync(cachePath, JSON.stringify(all)); + log(` [timetables] Official: ${all.length} timetables`); + return; + } + log(" [timetables] Official API returned no timetables"); + } + } catch (err) { + log(` [timetables] Official API failed: ${err.message}`); + } + log(" [timetables] Falling back to community EDR..."); + const trainsResp = await cachedFetchJson( + `${PANEL_BASE}/trains-open?serverCode=${TIMETABLE_SERVER}`, + `trains_${TIMETABLE_SERVER}.json`, + ); + const trainList = trainsResp.data || []; + const all = []; + await pool(trainList, 20, async (train) => { + try { + const res = await fetch( + `${EDR_COMMUNITY_BASE}/train/${TIMETABLE_SERVER}/${train.TrainNoLocal}`, + { headers: { "User-Agent": USER_AGENT } }, + ); + if (!res.ok) return; + const tt = await res.json(); + if (Array.isArray(tt) && tt.length > 0) { + all.push({ trainNo: train.TrainNoLocal, timetable: tt }); + } + } catch {} + }); + if (all.length === 0) { + throw new Error("No timetables returned by either data source"); + } + fs.writeFileSync(cachePath, JSON.stringify(all)); + log(` [timetables] Community EDR: ${all.length} timetables`); + })(); + + const { + wikiMapData, + stationCoords, + knownStations, + routeFeatures, + wikiLoopCentroids, + } = await wikiPromise; + await timetablesPromise; + + log("Step 1b: Supplement station coordinates from local files + API"); + const localBundled = JSON.parse( + fs.readFileSync( + path.join(__dirname, "..", "components", "stations.json"), + "utf8", + ), + ); + const localRemote = JSON.parse( + fs.readFileSync( + path.join(__dirname, "..", "components", "stationsRemote.json"), + "utf8", + ), + ); + for (const s of [...localBundled, ...localRemote]) { + if (s.Name && s.Latititude && s.Longitude) { + const norm = normalizeName(s.Name); + if (!stationCoords.has(norm)) { + stationCoords.set(norm, [s.Latititude, s.Longitude]); + knownStations.add(norm); + } + } + } + + const serversResp = await cachedFetchJson( + `${PANEL_BASE}/servers-open`, + "servers.json", + ); + const servers = serversResp.data.filter((s) => s.IsActive); + for (const server of servers) { + try { + const resp = await cachedFetchJson( + `${PANEL_BASE}/stations-open?serverCode=${server.ServerCode}`, + `stations_${server.ServerCode}.json`, + ); + if (resp.data) { + for (const s of resp.data) { + if (s.Name && s.Latititude && s.Longitude) { + const norm = normalizeName(s.Name); + if (!stationCoords.has(norm)) { + stationCoords.set(norm, [s.Latititude, s.Longitude]); + knownStations.add(norm); + } + } + } + } + } catch {} + } + log(` Total stations with coords: ${stationCoords.size}`); + + const overridesPath = path.join(__dirname, "station-overrides.json"); + if (fs.existsSync(overridesPath)) { + const overrides = JSON.parse(fs.readFileSync(overridesPath, "utf8")); + for (const [name, coord] of Object.entries(overrides)) { + const norm = normalizeName(name); + const prev = stationCoords.get(norm); + stationCoords.set(norm, coord); + knownStations.add(norm); + log( + ` Override [${name}]: ${prev ? `${prev.map((x) => x.toFixed(3)).join(",")} -> ` : ""}${coord.map((x) => x.toFixed(3)).join(",")}`, + ); + } + } + + let loopFallbackCount = 0; + for (const [norm, coord] of wikiLoopCentroids) { + if (!stationCoords.has(norm)) { + stationCoords.set(norm, coord); + knownStations.add(norm); + loopFallbackCount++; + } + } + if (loopFallbackCount > 0) { + log(` Loop-centroid fallbacks (no game coordinate): ${loopFallbackCount}`); + } + + log("Step 2: Collect segments from timetables"); + const allTimetables = JSON.parse( + fs.readFileSync(path.join(CACHE_DIR, "all_timetables.json"), "utf8"), + ); + + const wikiStationList = wikiMapData.stations; + + function resolveStationCoords(rawName) { + const norm = normalizeName(rawName); + if (stationCoords.has(norm)) return norm; + for (const ws of wikiStationList) { + const sn = normalizeName(ws.name); + if (sn.includes(norm) || norm.includes(sn)) { + const c = stationCoords.get(sn); + if (c) { + stationCoords.set(norm, c); + knownStations.add(norm); + return norm; + } + } + } + return null; + } + + const segments = new Map(); + for (const tt of allTimetables) { + const entries = tt.timetable; + if (!Array.isArray(entries)) continue; + let lastResolved = -1; + for (let i = 0; i < entries.length; i++) { + const name = entries[i].nameOfPoint || entries[i].nameForPerson; + if (!name) continue; + const resolved = resolveStationCoords(name); + const hasCoords = !!resolved; + if (hasCoords && lastResolved >= 0 && lastResolved !== i) { + const fromName = + entries[lastResolved].nameOfPoint || + entries[lastResolved].nameForPerson; + const fromResolved = + resolveStationCoords(fromName) || normalizeName(fromName); + const key = + fromResolved < resolved + ? `${fromResolved}|${resolved}` + : `${resolved}|${fromResolved}`; + const line = Number(entries[lastResolved].line) || 0; + const toLine = Number(entries[i].line) || 0; + const allLines = new Set(); + if (line > 0) allLines.add(String(line)); + if (toLine > 0) allLines.add(String(toLine)); + for (let j = lastResolved + 1; j < i; j++) { + const midLine = Number(entries[j]?.line) || 0; + if (midLine > 0) allLines.add(String(midLine)); + } + if (!segments.has(key)) { + segments.set(key, { + key, + from: fromName, + to: name, + allLines: [...allLines], + label: `${fromName} → ${name}`, + }); + } else { + const existing = segments.get(key); + for (const l of allLines) { + if (!existing.allLines.includes(l)) { + existing.allLines.push(l); + } + } + } + } + if (hasCoords) lastResolved = i; + } + } + log(` Unique segments: ${segments.size}`); + + const workSegments = []; + let noCoordsCount = 0; + for (const seg of segments.values()) { + const fromCoord = stationCoords.get(normalizeName(seg.from)); + const toCoord = stationCoords.get(normalizeName(seg.to)); + if (!fromCoord || !toCoord) { + noCoordsCount++; + continue; + } + seg.from = fromCoord; + seg.to = toCoord; + workSegments.push(seg); + } + log(` Work segments: ${workSegments.length} (skipped ${noCoordsCount})`); + + const wikiLineNumbers = new Set(); + for (const r of wikiMapData.routes) { + const match = r.name.match(/^LK(\d+)$/); + if (match) wikiLineNumbers.add(match[1]); + } + + const servedLines = new Map(); + for (const seg of segments.values()) { + const [a, b] = seg.key.split("|"); + if (!servedLines.has(a)) servedLines.set(a, new Set()); + if (!servedLines.has(b)) servedLines.set(b, new Set()); + for (const l of seg.allLines) { + if (wikiLineNumbers.has(l)) { + servedLines.get(a).add(l); + servedLines.get(b).add(l); + } + } + } + + const graphAvail = buildGraphFromRoutes( + routeFeatures.filter((f) => f.available), + ); + const graphFull = buildGraphFromRoutes(routeFeatures); + const nearestAvail = makeNearestNode(graphAvail, 0.02, SNAP_MAX_KM); + const nearestFull = makeNearestNode(graphFull, 0.02, SNAP_MAX_KM); + const routerAvail = makeRouter(graphAvail); + const routerFull = makeRouter(graphFull); + log( + ` Graph avail: ${graphAvail.coords.length} nodes, full: ${graphFull.coords.length} nodes`, + ); + + const coordKey = (lat, lon) => `${lat.toFixed(6)},${lon.toFixed(6)}`; + const nodeIndexFor = (graph, coord) => + graph.coordIndex.get(coordKey(coord[0], coord[1])) ?? -1; + + log(` Snapping ${servedLines.size} stations to canonical nodes...`); + const canonicalNodes = new Map(); + const droppedStations = []; + for (const [name, lines] of servedLines) { + const anchor = stationCoords.get(name); + if (!anchor) continue; + let snap = null; + let snapGraph = null; + if (lines.size > 0) { + snap = nearestAvail(anchor, lines); + snapGraph = graphAvail; + if (snap.index < 0 || snap.distKm > SNAP_MAX_KM) { + snap = nearestFull(anchor, lines); + snapGraph = graphFull; + } + } + if (snap === null || snap.index < 0 || snap.distKm > SNAP_MAX_KM) { + snap = nearestFull(anchor, null); + snapGraph = graphFull; + } + if (snap.index >= 0 && snap.distKm <= SNAP_MAX_KM) { + const nodeCoord = snapGraph.coords[snap.index]; + canonicalNodes.set(name, nodeCoord); + stationCoords.set(name, nodeCoord); + } else { + droppedStations.push(name); + stationCoords.delete(name); + knownStations.delete(name); + } + } + if (droppedStations.length > 0) { + log( + ` Dropped stations (no track within ${SNAP_MAX_KM}km — likely bad source coordinates):`, + ); + for (const name of droppedStations) log(` - ${name}`); + } + log( + ` Canonical nodes: ${canonicalNodes.size}, dropped: ${droppedStations.length}`, + ); + + const workSegmentsPruned = []; + for (const seg of workSegments) { + const [a, b] = seg.key.split("|"); + if (canonicalNodes.has(a) && canonicalNodes.has(b)) { + workSegmentsPruned.push(seg); + } + } + log( + ` Work segments after prune: ${workSegmentsPruned.length} (was ${workSegments.length})`, + ); + const workList = workSegmentsPruned; + + log("Step 3: Compute A* routes"); + + const routeSegments = {}; + const segmentLines = {}; + const segmentUsedFullGraph = new Set(); + let computed = 0; + let fallback = 0; + let computedAvail = 0; + let computedFull = 0; + + function tryRoute(seg, graph, router) { + const [aName, bName] = seg.key.split("|"); + const fromIdx = nodeIndexFor(graph, canonicalNodes.get(aName)); + const toIdx = nodeIndexFor(graph, canonicalNodes.get(bName)); + if (fromIdx < 0 || toIdx < 0) return null; + + const lines = seg.allLines; + const fromCoord = graph.coords[fromIdx]; + const toCoord = graph.coords[toIdx]; + const straightKm = haversineKm(fromCoord, toCoord); + let pathIndices = null; + + function pathKmOf(indices) { + let total = 0; + let prev = fromCoord; + for (const idx of indices) { + total += haversineKm(prev, graph.coords[idx]); + prev = graph.coords[idx]; + } + total += haversineKm(prev, toCoord); + return total; + } + + function acceptPath(indices) { + if (!indices || indices.length < 2) return false; + if (straightKm > 0) { + const maxPathKm = straightKm * 2 + 5; + if (pathKmOf(indices) > maxPathKm) return false; + } + return true; + } + + const timetableLines = new Set(lines); + function usesOnlyTimetableLines(indices, allowedLines) { + if (!indices) return false; + if (allowedLines.size === 0) return true; + const nonTtKm = new Map(); + for (let i = 0; i < indices.length - 1; i++) { + for ( + let p = graph.start[indices[i]]; + p < graph.start[indices[i] + 1]; + p++ + ) { + if (graph.adjOther[p] !== indices[i + 1]) continue; + const refs = graph.erefs[graph.adjEdge[p]]; + if (!refs || refs.length === 0) continue; + for (const r of refs) { + if (!allowedLines.has(r)) { + const edgeKm = graph.adjDist[p]; + nonTtKm.set(r, (nonTtKm.get(r) || 0) + edgeKm); + } + } + break; + } + } + for (const km of nonTtKm.values()) { + if (km > 5) return false; + } + return true; + } + + if (lines.length > 0) { + const p = router(fromIdx, toIdx, lines); + if (acceptPath(p) && usesOnlyTimetableLines(p, timetableLines)) + pathIndices = p; + } + + if (!pathIndices) { + const p = router(fromIdx, toIdx, null); + if (acceptPath(p) && usesOnlyTimetableLines(p, timetableLines)) + pathIndices = p; + } + + if (!pathIndices || pathIndices.length < 2) return null; + + const usedLineSet = new Set(); + for (let i = 0; i < pathIndices.length - 1; i++) { + for ( + let p = graph.start[pathIndices[i]]; + p < graph.start[pathIndices[i] + 1]; + p++ + ) { + if (graph.adjOther[p] !== pathIndices[i + 1]) continue; + const refs = graph.erefs[graph.adjEdge[p]]; + if (refs) for (const r of refs) usedLineSet.add(r); + break; + } + } + + const points = pathIndices.map((idx) => graph.coords[idx]); + + let changed = true; + while (changed && points.length > 2) { + changed = false; + for (let j = 1; j < points.length - 1; j++) { + const a = points[j - 1], + b = points[j], + c = points[j + 1]; + const dot = + (b[0] - a[0]) * (c[0] - b[0]) + (b[1] - a[1]) * (c[1] - b[1]); + if (dot < 0) { + points.splice(j, 1); + changed = true; + break; + } + } + } + + const deduped = []; + let lastRlat = null; + let lastRlon = null; + for (const p of points) { + const rlat = Math.round(p[0] * 1e5); + const rlon = Math.round(p[1] * 1e5); + if (rlat !== lastRlat || rlon !== lastRlon) { + deduped.push(p); + lastRlat = rlat; + lastRlon = rlon; + } + } + + return { + encoded: encodePolyline(deduped), + usedLines: [...usedLineSet], + }; + } + + for (let i = 0; i < workList.length; i++) { + const seg = workList[i]; + + const hasHints = seg.allLines.length > 0; + const hasWikiLine = seg.allLines.some((l) => wikiLineNumbers.has(l)); + if (hasHints && !hasWikiLine) continue; + + let result = tryRoute(seg, graphAvail, routerAvail); + let usedFull = false; + + if (!result) { + result = tryRoute(seg, graphFull, routerFull); + usedFull = true; + } + + if (!result) { + fallback++; + continue; + } + + routeSegments[seg.key] = result.encoded; + segmentLines[seg.key] = result.usedLines; + if (usedFull) segmentUsedFullGraph.add(seg.key); + computed++; + if (usedFull) computedFull++; + else computedAvail++; + } + log( + ` Computed: ${computed} (avail: ${computedAvail}, full: ${computedFull}), Fallback (grey): ${fallback}`, + ); + + log("Step 4: Compute per-segment availability"); + + const lineAvailableFeatures = {}; + const lineNotAvailableFeatures = {}; + for (const routeEntry of wikiMapData.routes) { + const match = routeEntry.name.match(/^LK(\d+)$/); + if (!match) continue; + const lineNo = match[1]; + const isAvailable = routeEntry.available !== false; + const cacheName = `wiki_route_${routeEntry.name.replace(/[^a-zA-Z0-9]/g, "_")}_${isAvailable ? "avail" : "notavail"}.json`; + try { + const gj = JSON.parse( + fs.readFileSync(path.join(CACHE_DIR, cacheName), "utf8"), + ); + const target = isAvailable + ? lineAvailableFeatures + : lineNotAvailableFeatures; + if (!target[lineNo]) target[lineNo] = []; + for (const f of gj.features || []) { + const g = f.geometry; + if (!g) continue; + let lines = []; + if (g.type === "LineString") lines = [g.coordinates]; + else if (g.type === "MultiLineString") lines = g.coordinates; + else continue; + for (const line of lines) { + if (line.length >= 2) { + target[lineNo].push(line.map((c) => [c[1], c[0]])); + } + } + } + } catch {} + } + log( + ` Available lines: ${Object.keys(lineAvailableFeatures).length}, Not-available lines: ${Object.keys(lineNotAvailableFeatures).length}`, + ); + + function distToLineKm(point, line) { + let min = Infinity; + const cosLat = Math.cos((point[0] * Math.PI) / 180); + const px = point[1] * cosLat * 111.32; + const py = point[0] * 111.32; + for (let i = 0; i < line.length - 1; i++) { + const ax = line[i][1] * cosLat * 111.32; + const ay = line[i][0] * 111.32; + const bx = line[i + 1][1] * cosLat * 111.32; + const by = line[i + 1][0] * 111.32; + const dx = bx - ax; + const dy = by - ay; + const len2 = dx * dx + dy * dy; + let t = len2 === 0 ? 0 : ((px - ax) * dx + (py - ay) * dy) / len2; + t = Math.max(0, Math.min(1, t)); + const fx = px - (ax + t * dx); + const fy = py - (ay + t * dy); + min = Math.min(min, Math.sqrt(fx * fx + fy * fy)); + } + return min; + } + + function decodePolyline(str) { + let idx = 0; + let lat = 0; + let lon = 0; + const pts = []; + while (idx < str.length) { + let shift = 0; + let result = 0; + let byte; + do { + byte = str.charCodeAt(idx++) - 63; + result |= (byte & 0x1f) << shift; + shift += 5; + } while (byte >= 0x20); + lat += result & 1 ? ~(result >> 1) : result >> 1; + shift = 0; + result = 0; + do { + byte = str.charCodeAt(idx++) - 63; + result |= (byte & 0x1f) << shift; + shift += 5; + } while (byte >= 0x20); + lon += result & 1 ? ~(result >> 1) : result >> 1; + pts.push([lat / 1e5, lon / 1e5]); + } + return pts; + } + + const segmentColors = {}; + let availCount = 0; + let notAvailCount = 0; + for (const [key, encoded] of Object.entries(routeSegments)) { + if (!segmentUsedFullGraph.has(key)) { + segmentColors[key] = [[0, 0]]; + availCount++; + continue; + } + + const lines = + segmentLines[key] || + (segments.get(key)?.allLines.filter((l) => wikiLineNumbers.has(l)) ?? []); + const availTracks = lines.flatMap((l) => lineAvailableFeatures[l] || []); + const notAvailTracks = lines.flatMap( + (l) => lineNotAvailableFeatures[l] || [], + ); + + if (availTracks.length === 0 && notAvailTracks.length === 0) { + segmentColors[key] = [[0, 2]]; + continue; + } + if (notAvailTracks.length === 0) { + segmentColors[key] = [[0, 0]]; + availCount++; + continue; + } + + const pts = decodePolyline(encoded); + const pointColors = pts.map((pt) => { + let minAvail = Infinity; + for (const track of availTracks) { + const d = distToLineKm(pt, track); + if (d < minAvail) minAvail = d; + if (minAvail < 0.05) break; + } + let minNotAvail = Infinity; + for (const track of notAvailTracks) { + const d = distToLineKm(pt, track); + if (d < minNotAvail) minNotAvail = d; + if (minNotAvail < 0.05) break; + } + if (minAvail > 0.05 && minNotAvail < 0.2) return 1; + return 0; + }); + + const boundaries = [[0, pointColors[0]]]; + for (let i = 1; i < pointColors.length; i++) { + if (pointColors[i] !== pointColors[i - 1]) { + boundaries.push([i, pointColors[i]]); + if (pointColors[i - 1] === 0) availCount++; + else notAvailCount++; + } + } + if (pointColors[pointColors.length - 1] === 0) availCount++; + else notAvailCount++; + + segmentColors[key] = boundaries; + } + log( + ` Available sub-segments: ${availCount}, Not available: ${notAvailCount}`, + ); + + log("Step 5: Write output"); + + const GREY_RISK_KM = 50; + const greyRisk = []; + for (const seg of workList) { + if (routeSegments[seg.key]) continue; + const [a, b] = seg.key.split("|"); + const ca = stationCoords.get(a); + const cb = stationCoords.get(b); + if (ca && cb && haversineKm(ca, cb) > GREY_RISK_KM) { + greyRisk.push(seg.label); + } + } + if (greyRisk.length > 0) { + log( + ` GREY RISK — ${greyRisk.length} uncomputed pairs > ${GREY_RISK_KM}km apart:`, + ); + for (const label of greyRisk) log(` - ${label}`); + } else { + log(` Grey-risk report: none > ${GREY_RISK_KM}km`); + } + + const output = { + version: 1, + knownStations: [...knownStations], + stations: Object.fromEntries(stationCoords), + segments: routeSegments, + segmentColors, + }; + const json = JSON.stringify(output); + fs.writeFileSync(OUTPUT_PATH, json); + log(` Written ${OUTPUT_PATH} (${(json.length / 1024).toFixed(0)} KB)`); + log(`Done in ${((Date.now() - t0) / 1000).toFixed(1)}s`); +} + +main().catch((err) => { + console.error("FATAL:", err); + process.exit(1); +}); diff --git a/packages/map/scripts/rail-helpers.mjs b/packages/map/scripts/rail-helpers.mjs new file mode 100644 index 0000000..9406737 --- /dev/null +++ b/packages/map/scripts/rail-helpers.mjs @@ -0,0 +1,484 @@ +export function normalizeName(name) { + return name.normalize("NFC").trim().replace(/\s+/g, " ").toLowerCase(); +} + +export function haversineKm(a, b) { + const R = 6371; + const dLat = ((b[0] - a[0]) * Math.PI) / 180; + const dLon = ((b[1] - a[1]) * Math.PI) / 180; + const la1 = (a[0] * Math.PI) / 180; + const la2 = (b[0] * Math.PI) / 180; + const h = + Math.sin(dLat / 2) ** 2 + + Math.cos(la1) * Math.cos(la2) * Math.sin(dLon / 2) ** 2; + return 2 * R * Math.asin(Math.sqrt(h)); +} + +export function encodePolyline(points) { + let out = ""; + let plat = 0; + let plon = 0; + const enc = (v) => { + v = v < 0 ? ~(v << 1) : v << 1; + let s = ""; + while (v >= 0x20) { + s += String.fromCharCode((0x20 | (v & 0x1f)) + 63); + v >>= 5; + } + return s + String.fromCharCode(v + 63); + }; + for (const [lat, lon] of points) { + const rlat = Math.round(lat * 1e5); + const rlon = Math.round(lon * 1e5); + out += enc(rlat - plat) + enc(rlon - plon); + plat = rlat; + plon = rlon; + } + return out; +} + +export function decodePolyline(str) { + let idx = 0; + let lat = 0; + let lon = 0; + const pts = []; + while (idx < str.length) { + let shift = 0; + let result = 0; + let byte; + do { + byte = str.charCodeAt(idx++) - 63; + result |= (byte & 0x1f) << shift; + shift += 5; + } while (byte >= 0x20); + lat += result & 1 ? ~(result >> 1) : result >> 1; + + shift = 0; + result = 0; + do { + byte = str.charCodeAt(idx++) - 63; + result |= (byte & 0x1f) << shift; + shift += 5; + } while (byte >= 0x20); + lon += result & 1 ? ~(result >> 1) : result >> 1; + + pts.push([lat / 1e5, lon / 1e5]); + } + return pts; +} + +export function buildGraphFromRoutes(routeFeatures) { + const coordIndex = new Map(); + const coords = []; + const resolveCoord = (lat, lon) => { + const key = `${lat.toFixed(6)},${lon.toFixed(6)}`; + let i = coordIndex.get(key); + if (i === undefined) { + i = coords.length; + coordIndex.set(key, i); + coords.push([lat, lon]); + } + return i; + }; + + const ea = []; + const eb = []; + const ed = []; + const erefs = []; + const endpointNodes = new Set(); + const endpointBearings = new Map(); + + const bearingDeg = (a, b) => { + const cosLat = Math.cos((((a[0] + b[0]) / 2) * Math.PI) / 180); + return ( + ((Math.atan2((b[1] - a[1]) * cosLat, b[0] - a[0]) * 180) / Math.PI + + 360) % + 360 + ); + }; + const angleDiffDeg = (a, b) => { + const d = Math.abs(a - b) % 360; + return d > 180 ? 360 - d : d; + }; + const addEndpointBearing = (idx, deg) => { + let list = endpointBearings.get(idx); + if (!list) endpointBearings.set(idx, (list = [])); + list.push(deg); + }; + + for (const feat of routeFeatures) { + const refs = feat.refs || []; + let lines = []; + const g = feat.geometry; + if (!g) continue; + if (g.type === "LineString") lines = [g.coordinates]; + else if (g.type === "MultiLineString") lines = g.coordinates; + else continue; + + for (const line of lines) { + if (line.length === 0) continue; + const firstIdx = resolveCoord(line[0][1], line[0][0]); + endpointNodes.add(firstIdx); + if (line.length > 1) { + const lastC = line[line.length - 1]; + const lastIdx = resolveCoord(lastC[1], lastC[0]); + endpointNodes.add(lastIdx); + const second = line[1]; + addEndpointBearing( + firstIdx, + bearingDeg([line[0][1], line[0][0]], [second[1], second[0]]), + ); + const prevLast = line[line.length - 2]; + addEndpointBearing( + lastIdx, + bearingDeg([prevLast[1], prevLast[0]], [lastC[1], lastC[0]]), + ); + } + + let prevIdx = -1; + for (const c of line) { + const i = resolveCoord(c[1], c[0]); + if (prevIdx >= 0 && prevIdx !== i) { + ea.push(prevIdx); + eb.push(i); + ed.push(haversineKm(coords[prevIdx], coords[i])); + erefs.push(refs); + } + prevIdx = i; + } + } + } + + const endpointToleranceKm = 0.5; + const epGridSize = 0.005; + const epGrid = new Map(); + for (let i = 0; i < coords.length; i++) { + if (!endpointNodes.has(i)) continue; + const [lat, lon] = coords[i]; + const key = `${Math.floor(lat / epGridSize)},${Math.floor(lon / epGridSize)}`; + let cell = epGrid.get(key); + if (!cell) { + cell = []; + epGrid.set(key, cell); + } + cell.push(i); + } + const allGrid = new Map(); + for (let i = 0; i < coords.length; i++) { + const [lat, lon] = coords[i]; + const key = `${Math.floor(lat / epGridSize)},${Math.floor(lon / epGridSize)}`; + let cell = allGrid.get(key); + if (!cell) { + cell = []; + allGrid.set(key, cell); + } + cell.push(i); + } + const adjSet = new Set(); + const neighbors = new Map(); + for (let e = 0; e < ea.length; e++) { + adjSet.add(`${Math.min(ea[e], eb[e])}|${Math.max(ea[e], eb[e])}`); + let n1 = neighbors.get(ea[e]); + if (!n1) neighbors.set(ea[e], (n1 = [])); + n1.push(eb[e]); + let n2 = neighbors.get(eb[e]); + if (!n2) neighbors.set(eb[e], (n2 = [])); + n2.push(ea[e]); + } + + const MAX_ALIGN_DEG = 60; + + const isPlausibleContinuation = (i, j) => { + const bearingIJ = bearingDeg(coords[i], coords[j]); + const bearingsI = endpointBearings.get(i); + if (!bearingsI || bearingsI.length === 0) return false; + let okI = false; + for (const b of bearingsI) { + if (angleDiffDeg(bearingIJ, b) <= MAX_ALIGN_DEG) { + okI = true; + break; + } + } + if (!okI) return false; + const jsNeighbors = neighbors.get(j); + if (!jsNeighbors || jsNeighbors.length === 0) return false; + for (const k of jsNeighbors) { + if ( + angleDiffDeg(bearingIJ, bearingDeg(coords[j], coords[k])) <= + MAX_ALIGN_DEG + ) { + return true; + } + } + return false; + }; + + for (const i of endpointNodes) { + const [lat, lon] = coords[i]; + const cx = Math.floor(lat / epGridSize); + const cy = Math.floor(lon / epGridSize); + const candidates = []; + for (let dx = -1; dx <= 1; dx++) { + for (let dy = -1; dy <= 1; dy++) { + const cell = allGrid.get(`${cx + dx},${cy + dy}`); + if (!cell) continue; + for (const j of cell) { + if (j === i) continue; + const ek = `${Math.min(i, j)}|${Math.max(i, j)}`; + if (adjSet.has(ek)) continue; + const d = haversineKm(coords[i], coords[j]); + if (d <= endpointToleranceKm) candidates.push({ j, d }); + } + } + } + candidates.sort((a, b) => a.d - b.d); + let connected = -1; + for (let c = 0; c < candidates.length && c < 8; c++) { + if (isPlausibleContinuation(i, candidates[c].j)) { + connected = candidates[c].j; + break; + } + } + if (connected >= 0) { + const ek = `${Math.min(i, connected)}|${Math.max(i, connected)}`; + adjSet.add(ek); + ea.push(i); + eb.push(connected); + ed.push(haversineKm(coords[i], coords[connected])); + erefs.push([]); // Endpoint-snap edges have no line association + } + } + + const nodeLines = new Array(coords.length); + for (let e = 0; e < ea.length; e++) { + for (const u of [ea[e], eb[e]]) { + if (!nodeLines[u]) nodeLines[u] = new Set(); + for (const r of erefs[e]) nodeLines[u].add(r); + } + } + + const nodeCount = coords.length; + const edgeCount = ea.length; + + const degree = new Int32Array(nodeCount); + for (let e = 0; e < edgeCount; e++) { + degree[ea[e]]++; + degree[eb[e]]++; + } + + const start = new Int32Array(nodeCount + 1); + for (let i = 0; i < nodeCount; i++) start[i + 1] = start[i] + degree[i]; + + const cursor = Int32Array.from(start); + const adjEdge = new Int32Array(edgeCount * 2); + const adjOther = new Int32Array(edgeCount * 2); + const adjDist = new Float64Array(edgeCount * 2); + for (let e = 0; e < edgeCount; e++) { + let p = cursor[ea[e]]++; + adjEdge[p] = e; + adjOther[p] = eb[e]; + adjDist[p] = ed[e]; + p = cursor[eb[e]]++; + adjEdge[p] = e; + adjOther[p] = ea[e]; + adjDist[p] = ed[e]; + } + + return { + coords, + start, + adjEdge, + adjOther, + adjDist, + erefs, + coordIndex, + nodeLines, + }; +} + +export function makeNearestNode(graph, gridSize = 0.02, maxKm = 3.0) { + const grid = new Map(); + for (let i = 0; i < graph.coords.length; i++) { + const [lat, lon] = graph.coords[i]; + const key = `${Math.floor(lat / gridSize)},${Math.floor(lon / gridSize)}`; + let cell = grid.get(key); + if (!cell) { + cell = []; + grid.set(key, cell); + } + cell.push(i); + } + + return (point, allowedLines = null) => { + const [lat, lon] = point; + const cx = Math.floor(lat / gridSize); + const cy = Math.floor(lon / gridSize); + let bestIdx = -1; + let bestDist = Infinity; + + for (let r = 0; r <= 10; r++) { + for (let dx = -r; dx <= r; dx++) { + for (let dy = -r; dy <= r; dy++) { + if (r > 0 && Math.abs(dx) !== r && Math.abs(dy) !== r) continue; + const cell = grid.get(`${cx + dx},${cy + dy}`); + if (!cell) continue; + for (const idx of cell) { + if (allowedLines) { + const lines = graph.nodeLines[idx]; + let ok = false; + if (lines) { + for (const l of lines) { + if (allowedLines.has(l)) { + ok = true; + break; + } + } + } + if (!ok) continue; + } + const d = haversineKm(graph.coords[idx], point); + if (d < bestDist) { + bestDist = d; + bestIdx = idx; + } + } + } + } + if (bestIdx >= 0 && bestDist < maxKm) break; + } + + return { index: bestIdx, distKm: bestDist }; + }; +} + +export function makeRouter(graph) { + const { coords, start, adjEdge, adjOther, adjDist, erefs } = graph; + const n = coords.length; + + const dist = new Float64Array(n); + const prev = new Int32Array(n); + const done = new Uint32Array(n); + let stamp = 0; + + let heapF = new Float64Array(4096); + let heapG = new Float64Array(4096); + let heapN = new Int32Array(4096); + let heapSize = 0; + + const grow = () => { + const cap = heapF.length * 2; + const nf = new Float64Array(cap); + const ng = new Float64Array(cap); + const nn = new Int32Array(cap); + nf.set(heapF); + ng.set(heapG); + nn.set(heapN); + heapF = nf; + heapG = ng; + heapN = nn; + }; + + const push = (f, g, node) => { + if (heapSize === heapF.length) grow(); + let c = heapSize++; + heapF[c] = f; + heapG[c] = g; + heapN[c] = node; + while (c > 0) { + const p = (c - 1) >> 1; + if (heapF[p] <= heapF[c]) break; + const tf = heapF[p]; + heapF[p] = heapF[c]; + heapF[c] = tf; + const tg = heapG[p]; + heapG[p] = heapG[c]; + heapG[c] = tg; + const tn = heapN[p]; + heapN[p] = heapN[c]; + heapN[c] = tn; + c = p; + } + }; + + const pop = () => { + const rf = heapF[0]; + const rg = heapG[0]; + const rn = heapN[0]; + heapSize--; + if (heapSize > 0) { + heapF[0] = heapF[heapSize]; + heapG[0] = heapG[heapSize]; + heapN[0] = heapN[heapSize]; + let c = 0; + for (;;) { + const l = 2 * c + 1; + const r = 2 * c + 2; + let m = c; + if (l < heapSize && heapF[l] < heapF[m]) m = l; + if (r < heapSize && heapF[r] < heapF[m]) m = r; + if (m === c) break; + const tf = heapF[m]; + heapF[m] = heapF[c]; + heapF[c] = tf; + const tg = heapG[m]; + heapG[m] = heapG[c]; + heapG[c] = tg; + const tn = heapN[m]; + heapN[m] = heapN[c]; + heapN[c] = tn; + c = m; + } + } + return [rf, rg, rn]; + }; + + return function route(startIdx, endIdx, lineFilter) { + stamp++; + dist.fill(Infinity); + dist[startIdx] = 0; + prev[startIdx] = -1; + heapSize = 0; + push(haversineKm(coords[startIdx], coords[endIdx]), 0, startIdx); + + const filterSet = Array.isArray(lineFilter) + ? new Set(lineFilter) + : lineFilter + ? new Set([lineFilter]) + : null; + + while (heapSize > 0) { + const [, g, u] = pop(); + if (done[u] === stamp) continue; + done[u] = stamp; + if (u === endIdx) break; + if (g > dist[u]) continue; + + for (let p = start[u]; p < start[u + 1]; p++) { + const e = adjEdge[p]; + const refs = erefs[e]; + const v = adjOther[p]; + if (done[v] === stamp) continue; + + let edgeCost = adjDist[p]; + if (filterSet && refs.length > 0) { + const onPreferred = refs.some((r) => filterSet.has(r)); + if (!onPreferred) edgeCost *= 10; + } + + const ng = g + edgeCost; + if (ng < dist[v]) { + dist[v] = ng; + prev[v] = u; + push(ng + haversineKm(coords[v], coords[endIdx]), ng, v); + } + } + } + + if (done[endIdx] !== stamp) return null; + + const pathIdx = []; + for (let u = endIdx; u !== -1; u = prev[u]) pathIdx.push(u); + pathIdx.reverse(); + return pathIdx; + }; +} diff --git a/packages/map/scripts/station-overrides.json b/packages/map/scripts/station-overrides.json new file mode 100644 index 0000000..504ea8c --- /dev/null +++ b/packages/map/scripts/station-overrides.json @@ -0,0 +1,3 @@ +{ + "maków podhalański": [49.7275, 19.6836] +} diff --git a/packages/map/styles/SelectedTrainPopup.module.css b/packages/map/styles/SelectedTrainPopup.module.css index ac92df7..c9085cc 100644 --- a/packages/map/styles/SelectedTrainPopup.module.css +++ b/packages/map/styles/SelectedTrainPopup.module.css @@ -4,7 +4,10 @@ top: 62px; right: 0; box-sizing: border-box; - width: min(360px, calc(100vw - 24px)); + /* Content width matches the locomotive picture: all railcar images are + 1699x720 (2.36 aspect); at the carousel's 112px height they render + 264px wide. 264 + 2*24px padding + 2*1px border = 316px. */ + width: min(316px, calc(100vw - 24px)); max-width: none; max-height: calc(100dvh - 78px); padding: 10px 24px; diff --git a/packages/map/styles/TrainDetails.module.css b/packages/map/styles/TrainDetails.module.css index bd17251..8a7d316 100644 --- a/packages/map/styles/TrainDetails.module.css +++ b/packages/map/styles/TrainDetails.module.css @@ -42,25 +42,54 @@ .identity strong { overflow: hidden; color: var(--train-title); font-size: 0.9375rem; text-overflow: ellipsis; white-space: nowrap; } .close { display: grid; flex: none; width: 32px; height: 32px; padding: 0; color: var(--train-close); border: 1px solid var(--train-border); border-radius: 8px; background: var(--train-surface); place-items: center; cursor: pointer; } .close:hover { color: #ff7777; border-color: rgb(255 100 100 / 28%); } -.serviceHeading { margin: 17px 0 11px; } -.serviceHeading > span { color: var(--train-muted); font-size: 0.6875rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; } -.serviceHeading h3 { margin: 4px 0 0; color: var(--train-title); font-family: "Saira", sans-serif; font-size: 1.3125rem; line-height: 1.1; } +.serviceHeading { display: flex; align-items: stretch; justify-content: space-between; gap: 8px; margin: 17px 0 11px; } +.serviceMeta { min-width: 0; } +.serviceMeta > span { display: block; color: var(--train-muted); font-size: 0.6875rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; line-height: 1; } +.edrButton { display: inline-flex; align-items: center; justify-content: center; gap: 4px; padding: 0 16px; color: #17191e; font-size: 0.6875rem; font-weight: 800; border-radius: 8px; background: #ffad32; white-space: nowrap; } +.edrButton:hover { background: #ffba51; } +.serviceHeading h3 { margin: 0; color: var(--train-title); font-family: "Saira", sans-serif; font-size: 1.3125rem; line-height: 1.1; } .route { align-items: center; gap: 9px; padding: 10px 11px; color: var(--train-secondary); border: 1px solid var(--train-border); border-radius: 9px; background: var(--train-surface); } .route span { flex: 1; line-height: 1.35; } .route span:last-child { text-align: right; } .route i { color: var(--train-accent); font-style: normal; } +.trainToggles { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 6px; margin: 12px 0 0; } +.trainToggle { display: inline-flex; align-items: center; justify-content: center; min-width: 0; height: 32px; gap: 6px; padding: 0 8px; color: var(--train-muted); font: inherit; font-size: .6875rem; font-weight: 700; border: 1px solid var(--train-border); border-radius: 8px; background: var(--train-surface); cursor: pointer; white-space: nowrap; } +.trainToggle:hover { color: var(--train-title); border-color: rgb(255 177 59 / 30%); } +.trainToggle:focus-visible { outline: 2px solid var(--train-accent); outline-offset: 2px; } +.trainToggle > span { width: 7px; height: 7px; flex: none; border: 1px solid var(--train-muted); border-radius: 50%; } +.trainToggleActive { color: var(--train-title); border-color: rgb(255 177 59 / 38%); background: rgb(255 177 59 / 12%); } +.trainToggleActive > span { border-color: var(--train-accent); background: var(--train-accent); box-shadow: 0 0 0 3px rgb(255 177 59 / 10%); } +.routeLegend { display: flex; grid-column: 1 / -1; align-items: center; justify-content: center; gap: 9px; margin: 2px 0 0; color: var(--train-subtle); font-size: 9px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; } +.routeLegend span { display: inline-flex; align-items: center; gap: 4px; white-space: nowrap; } +.routeLegend span::before { width: 5px; height: 5px; flex: none; border-radius: 50%; background: #888; content: ""; } +.routeLegend span:first-child::before { background: #2ecc71; } +.routeLegend span:nth-child(2)::before { background: #e74c3c; } +.routeLegend a { color: inherit; text-decoration: underline; text-underline-offset: 2px; } .stats { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 1px; margin: 12px 0; overflow: hidden; border: 1px solid var(--train-border); border-radius: 9px; background: var(--train-divider); } -.stats > div { display: flex; flex-direction: column; gap: 5px; padding: 10px 8px; background: var(--train-stat-background); } +.stats > div { display: flex; flex-direction: column; align-items: center; text-align: center; gap: 5px; padding: 10px 4px; background: var(--train-stat-background); } .stats span, .consist > span { color: var(--train-muted); font-size: 0.6875rem; font-weight: 700; letter-spacing: .07em; text-transform: uppercase; } .stats strong { color: var(--train-strong); font-size: 0.75rem; white-space: nowrap; } -.consist { align-items: baseline; flex-wrap: wrap; gap: 5px 9px; padding: 3px 1px 11px; } -.consist strong { color: var(--train-strong); font-size: 0.75rem; } +.consist { align-items: baseline; flex-wrap: wrap; justify-content: center; text-align: center; gap: 5px 9px; padding: 3px 1px 11px; } +.consist strong { color: var(--train-strong); font-size: 0.75rem; white-space: nowrap; } .consist small { width: 100%; color: var(--train-subtle); font-size: 0.6875rem; } +.consist small.wagonsInline { width: auto; white-space: nowrap; } .trainMedia { margin: 2px 0 14px; overflow: hidden; border: 1px solid var(--train-border); border-radius: 10px; background: var(--train-media-background); } -.signalSection { padding-top: 14px; border-top: 1px solid var(--train-border); } -.signalDetails { margin: 9px 0 13px; color: var(--train-secondary); line-height: 1.65; } -.edrButton { display: flex; align-items: center; justify-content: space-between; min-height: 41px; padding: 0 13px; color: #17191e; font-size: 0.75rem; font-weight: 800; border-radius: 9px; background: #ffad32; } -.edrButton:hover { background: #ffba51; } +.signalSection { padding-top: 14px; border-top: 1px solid var(--train-border); text-align: center; } +.signalSection .kicker { display: block; } +.signalDetails { margin: 9px 0 13px; color: var(--train-secondary); } +.signalCard { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 10px 12px; text-align: left; border: 1px solid var(--train-border); border-radius: 9px; background: var(--train-surface); } +.signalPosition, .signalAspect > div { display: flex; flex-direction: column; } +.signalPosition { min-width: 0; gap: 2px; } +.signalPosition strong { overflow: hidden; color: var(--train-strong); font-size: .8125rem; text-overflow: ellipsis; white-space: nowrap; } +.signalPosition span, .signalAspect span { color: var(--train-muted); font-size: .625rem; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; } +.signalAspect { display: flex; flex: none; align-items: center; gap: 8px; padding-left: 12px; border-left: 1px solid var(--train-divider); } +.signalAspect img { width: 24px; height: 24px; object-fit: contain; } +.signalAspect > div { align-items: flex-start; gap: 1px; } +.signalAspect strong { color: var(--train-strong); font-size: .75rem; white-space: nowrap; } +.signalCompact { display: flex; justify-content: center; gap: 6px; font-size: .75rem; } +.signalCompact strong { color: var(--train-strong); } +.signalCompact span, .signalEmpty { color: var(--train-muted); } +.signalEmpty { padding: 8px 0 2px; font-size: .75rem; } .compact { width: 280px; } .compact .avatar { width: 34px; height: 34px; border-radius: 8px; } .compact .serviceHeading { margin-top: 13px; }