Interested Article - NYCS DB

Документация

Модуль содержит более 60 функций для вычисления информации, связанной с маршрутами Нью-Йоркского метрополитена . Область использования:

  • более 400 статей о станциях и пересадочных узлах;
  • около 70 статей о линиях и маршрутах;
  • список станций, список маршрутов, список линий;
  • другие статьи со ссылками на статьи о станциях, линиях и маршрутах.

Проблема состоит в том, что поезда в Нью-Йорке ходят по маршрутам, отражена в статьях, а маршруты периодически меняются. До появления этого модуля каждый раз при изменении в каком-то маршруте приходилось вносить апдейт в несколько десятков статей, каждый раз рискуя что-то забыть или ошибиться. Модуль вычисляет практически всю информацию такого рода.

Охват информации

Что учитывается

Что учитывается в модуле (если надо, см. подробности ):

  • движение поездов по маршрутам;
  • деление маршрутов на экспрессы и локальные;
  • изменение маршрутов в зависимости от времени суток;
  • наличие вилочного движения;
  • возможность различий между направлениями;
  • доступность станций для инвалидов;
  • закрытые станции;
  • неиспользуемые пути;
  • проектируемые/строящиеся станции и проектируемые маршруты;
  • отображение временных изменений (вся та же информация, но параллельно для обычной схемы и для введённой на несколько месяцев в связи с каким-нибудь большим ремонтом; пока только для изменений в маршрутах и в виртуальных пересадках и только в карточке станции).

Что пока не учитывается

В дальнейшем можно добавить новые возможности:

  • учёт того факта, что некоторые поезда оборачиваются не доезжая до конечной станции (при этом F на станции Кингс-Хайвей и 4 на станции Бернсайд-авеню и трёх предыдущих идут по экспресс-пути, что в модуле пока не отражено);
  • различия в остановках между поездами, движущимися на юг и на север (на момент составления модуля это имеет значение для станции Акуидакт-Рейстрак и для некоторых поездов 4 в северной части маршрута в часы пик, а также для выбора между локальным и экспресс-путём у некоторых маршрутов на станциях Канал-стрит и Куинс-Плаза , хотя совсем недавно это было и у ночного челнока R и ещё где-то); сегодня учитываются только различия между поездами, движущимися в пиковом направлении и в обратном ему; информация о различиях между севером и югом пока находится прямо в статьях и поддерживается вручную;
  • различия между утренним и вечерним часом пик;
  • суперэкспрессы (маршруты, проходящие без остановки даже некоторые из станций, помеченных как «для всех поездов»; в последние годы не используются, но могут быть введены в любой момент);
  • места возможного перехода поезда с экспресс-путей на локальные или наоборот для пополнения вычисляемого списка соседних станций для каждой станции;
  • количество путей по участкам на схемах линий.

Функции

Во всех примерах взяты:

Кроме того, во избежание повторения примеров в таблице функций использованы для построения:

Для карточек статей о станциях

Название Ввод Вывод Форматирование вывода Применение Пример
station_full Станция. Останавливающиеся на станции маршруты. Для каждого маршрута его буллет со ссылкой на статью о маршруте и в уголке значок, обозначающий, когда этот маршрут останавливается на этой станции. Карточка станции. J — круглосуточно J — круглосуточно M — круглосуточно, кроме ночи M — круглосуточно, кроме ночи Z — в часы пик в пиковом направлении Z — в часы пик в пиковом направлении
station_lines Станция. Линии, проходящие через станцию. Просто список ссылок на статьи о линиях. Второй (опциональный) параметр — цвет букв (для вывода на цветном фоне в карточке). Карточка станции. линия Нассо-стрит, Би-эм-ти
station_next Станция. Те станции, которые могут оказаться следующими при поездке от данной станции на поездах разных маршрутов. Как в station_full, но вместо буллетов маршрутов — текст со ссылкой на статью о маршруте. Список состоит из двух разделённых горизонтальной чертой частей (как правило север и юг, но в общем случае просто по одну и другую сторону от станции). Если во втором параметре написать acc, будут выданы те станции, которые доступны для инвалидов. Карточка станции. Бауэри
( J круглосуточно Z в часы пик в пиковом направлении )
Бродвей — Лафайетт-стрит
( M в будни днём и вечером )
Марси-авеню
( J круглосуточно M круглосуточно, кроме ночи Z в часы пик в пиковом направлении )
station_netto_T Станция. Название станции (или пересадочного узла) без уточнения. Чистый текст. Карточка станции. Эссекс-стрит
station_acc Станция. Обозначение доступности станции для инвалидов. Значок инвалидного кресла и (опционально) текст примечания. Карточка станции.
station_opened Станция. Дата открытия. Текст. Карточка станции. 16 сентября 1908
station_eng Станция. Во втором параметре поддерживаются значения former и future для бывших и будущих станций соответственно. Английское название. Текст. Карточка станции. Essex Street
station_ridership Станция. Пассажиропоток. Текст. Для станций, входящих в пересадочный узел, не выводится ничего, потому что в источнике данные приводятся по пересадочным узлам суммарно. Для таких станций пассажиропоток выводится только в карточке всего пересадочного узла при помощи функции complex_ridership. Карточка станции. 1 347 765
(317 из 424)
station_connections Станция. Во втором параметре поддерживаются значения former и future для бывших и будущих станций соответственно. Пересадки на другие виды транспорта, а также виртуальные пересадки между станциями метро. В статьях о пересадочных узлах срабатывает в карточке узла, а не в карточках отдельных станций. Текст. Карточка станции. [ ]
station_csv Станция и имя поля. Боро (если второй параметр boro), структурный тип станции (если второй параметр struc), географические координаты (если второй параметр coord), код станции (если второй параметр id). Текст. Карточка станции.
station_cats Станция. Во втором параметре поддерживаются значения former и future для бывших и будущих станций соответственно. Категории для статьи (три вида категорий: по линии, по году открытия и по кросс-платформенной пересадке ). При вызове не в пространстве статей категории показываются как обычные ссылки списком. Карточка станции.
former_data Станция и имя поля. Только для бывших станций: боро (если второй параметр boro), дата открытия (если второй параметр opened), дата закрытия (если второй параметр closed), структурный тип станции (если второй параметр struc). Текст. Карточка станции.

Карточки для примера

« Фар-Рокавей — Мотт-авеню »
Far Rockaway–Mott Avenue
Нью-Йоркский метрополитен

Расположение платформ 40°36′14″ с. ш. 73°45′19″ з. д.
Дата открытия 1869
(в составе метро с 16 января 1958)
Боро Куинс
Округ Фар-Рокавей
Тип
(по данным MTA )
эстакадная
Количество платформ 1
Тип платформы островная
Доступность Доступность для маломобильных групп населения
Выход к улицам Бич 22-я улица и Мотт-авеню
Пассажиропоток (2019) 1 347 765
(317 из 424)
Пересадки [ ]
Код станции 209
Соседние станции Бич 25-я улица
( A круглосуточно )
(конечная)
« Корт-стрит »
Court Street
З А К Р Ы Т А
и превращена в музей
Нью-Йоркский метрополитен

Платформа с музейными экспонатами
Дата открытия 9 апреля 1936
Дата закрытия 1946
Боро Бруклин
Округ Нижний Бруклин
Тип подземная
Количество платформ 1
Тип платформы островная
Выход к улицам ,
Соседние станции (конечная)
Хойт-стрит — Скермерхорн-стрит

Для других частей статей о станциях

Название Ввод Вывод Форматирование вывода Применение Пример
station_prose0 Станция. Самое начало преамбулы: название станции на русском и английском и линия (либо список линий). Связный текст. Преамбула статьи о станции. «Эссекс-стрит» ( англ. Essex Street ) — станция Нью-Йоркского метрополитена , расположенная на линии Нассо-стрит, Би-эм-ти .
station_prose Станция. Один необязательный параметр описан правее. Останавливающиеся на станции маршруты, и далее (в зависимости от типа станции) маршруты: для которых станция является конечной; проходящие станцию без остановки; проходящие по тем и иным путям. Если станция на одном из 10 первых мест по пассажиропотоку, то добавляется текст ещё и об этом. Связный текст. Через второй параметр можно передать дополнительный текст, который будет вставлен после слов «На станции». Преамбула статьи о станции. На станции останавливаются маршруты: J (круглосуточно), M (круглосуточно, кроме ночи) и Z (в часы пик в пиковом направлении). Станция является северной конечной для маршрута M (в выходные).
SL Станция, ориентация схемы (V или H), тип пути, список маршрутов (через запятую и пробел) для добавки к вычисляемым и список маршрутов (через запятую и пробел) для отмены.

Допустимые типы пути:

  • (пусто) — все маршруты, останавливающиеся на станции;
  • skip — все маршруты, проходящие станцию без остановки;
  • lcl — локальный путь на экспресс-станции;
  • exp — экспресс-путь на экспресс-станции;
  • manual — по умолчанию никаких маршрутов нет (показываются только те, которые добавлены через следующий параметр).
Маршруты, проходящие через станцию по данному пути. Для каждого маршрута только мелкий буллет без значка. Схема платформ и путей станции, составленная при помощи шаблонов серии SL .
station_expressinuse Станция и два варианта возвращаемого значения. Если не задана валидная станция, статья заносится в Категория:Статьи с ошибочными параметрами при обращении к модулю NYCS DB .

Для демонстрационных целей поддерживаются фиктивные станции «+» и «-», соответствующие двум случаям, описанным правее.

Если на станции экспресс-пути используются хотя бы одним маршрутом (без разницы, с остановкой или без), то второй из переданных параметров, иначе третий. Строка. На схеме путей и платформ позволяет создать if, чтобы показывать экспресс-пути сплошной линией или пунктиром.
Станция, где
экспресс-пути
используются
Станция, где
экспресс-пути
не используются



л


э


э


л











station_terminalinuse Как выше. В четвёртый параметр можно передать направление (n или s). Если станция является конечной хотя бы для одного маршрута (северной или южной соответственно, если в четвёртом параметре задано n или s, и хотя бы северной или южной в противном случае), то второй из переданных параметров, иначе третий. Функция используется для путей, которые служат только для разворота поездов. Строка. Аналогично предыдущей функции.
Станция, где
оборотный путь
используется
Станция, где
оборотный путь
не используется






о














connection_use_st Две или три станции. Если не задано две валидных станции, статья заносится в Категория:Статьи с ошибочными параметрами при обращении к модулю NYCS DB . Один необязательный параметр (и альтернативный способ заполнения обязательных) описан правее. Маршруты, использующие соединение между двумя станциями (если задано три, то от первой до двух остальных суммарно). Учитываются только маршруты, останавливающиеся на заданных станциях, но не проходящие их без остановки. Текст. Если в третьем параметре (для случая трёх станций в четвёртом) задано слово when, то маршруты выдаются с описанием времён, иначе без. Если там же задано слово letters, то выдаётся только список букв и цифр текстом без ссылок, а если слово bullets, bullets all или full small, то список буллетов. Если в третьем параметре (вместо третьей станции) задано x или o, это обозначает, что для второй станции нужны только маршруты, проходящие по экспресс- или локальным путям соответственно. Статья о станции (описание развилок на пути от станции). А пути уходят вон туда (маршрут Q круглосуточно). Они делятся на экспресс-пути (регулярного движения нет) и локальные (маршрут Q круглосуточно).

Тоннель входит в состав линии Восьмой авеню, Ай-эн-ди (маршруты A и C метрополитена ).

station_terminal Станция и направление (n или s). Два необязательных параметра описаны правее. Маршруты, для которых данная станция является конечной. Текст. Если в третьем параметре задано слово when, то маршруты выдаются с описанием времён, иначе без. Если в четвёртом параметре (при незаданном when в третьем) задано слово plain, то буквы маршрутов выдаются без ссылок на статьи о них. Если там же задано слово letters, выдаётся только список букв и цифр текстом без ссылок. Статья о станции. А этот путь служит конечным (маршрут S (челнок Франклин-авеню)).
station_terminalonly Станция. Проверка, является ли станция конечной для всех маршрутов, останавливающихся на ней. Если станция является северной конечной для всех её поездов, то n, если южной, то s, иначе пустая строка. Статья о станции. s
route_table_nav Станция или пересадочный узел. Списки станций по маршрутам, проходящим через станцию или пересадочный узел, которым посвящена статья (по порядку с севера на юг). Горизонтальный навшаблон. Навшаблон в статье о станции или о пересадочном узле.

Фрагмент преамбулы для примера

«Эссекс-стрит» ( англ. Essex Street ) — станция Нью-Йоркского метрополитена , расположенная на линии Нассо-стрит, Би-эм-ти . … На станции останавливаются маршруты: J (круглосуточно), M (круглосуточно, кроме ночи) и Z (в часы пик в пиковом направлении). Станция является северной конечной для маршрута M (в выходные).

Для поездов, следующих на восток, используется островная платформа и два пути с двух сторон от неё: северный из них относится к линии Нассо-стрит (маршруты J и Z ), а южный входит в состав соединения Кристи-стрит , соединяющего линию Шестой авеню и линию Джамейка (маршрут M ).

Для списка станций

Название Ввод Вывод Форматирование вывода Применение
all_stations Неограниченное количество параметров парами: название станции и викитекст, выводящий иллюстрацию. В качестве станций задаются физические станции, то есть для перечисленных в таблице multiline_stations целые станции, а в таблице station_complexes — части статьи. Викитекст в чётных параметрах имеет вид:
  • для горизонтальных иллюстраций — [[Файл:...|100px]]
  • для вертикальных иллюстраций — [[Файл:...|80px]]

Параметры должны быть заданы для всех действующих станций.

Весь список станций. См. в статье Список станций .

Для статей о пересадочных узлах

Название Ввод Вывод Форматирование вывода Применение Пример
complex_lines Пересадочный узел. Линии, проходящие через все станции пересадочного узла. Просто список ссылок на статьи о линиях, как в station_lines. Карточка пересадочного узла. линия Нассо-стрит, Би-эм-ти
линия Шестой авеню, Ай-эн-ди
complex_ridership Пересадочный узел. Пассажиропоток. Текст, аналогично station_ridership. Карточка пересадочного узла. 8 861 296
(34 из 424)
complex_boro Пересадочный узел. Боро (или список боро для разных станций, если узел находит на границе). Текст. Карточка пересадочного узла. Манхэттен
complex_prose Пересадочный узел. Маршруты, останавливающиеся на всех станциях узла, единым списком, а также линии, проходящие через станции пересадочного узла. Если узел на одном из 10 первых мест по пассажиропотоку, то добавляется текст ещё и об этом. Всё связным текстом, каждая линия и каждый маршрут оформлены как пункт списка. Если несколько маршрутов останавливаются на станциях узла в одни и те же периоды времени, они перечисляются через запятую в одном пункте списка. Преамбула статьи о пересадочном узле. В пересадочный узел входят станции следующих линий:

На станциях пересадочного узла останавливаются маршруты:

  • F , J (круглосуточно),
  • <F> , Z (в часы пик в пиковом направлении),
  • M (круглосуточно, кроме ночи).
complex_next Пересадочный узел. Один необязательный параметр описан правее. Следующие станции для всех станций пересадочного узла. Отдельная таблица, а в ней списки как в station_next (но части не разделены горизонтальной чертой, а расположены слева и справа). Значение acc во втором параметре тоже поддерживается. Статья о пересадочном узле, раздел «Соседние станции».
Предыдущая станция Линия
Название станции
Следующая станция
Бауэри
( J круглосуточно Z в часы пик в пиковом направлении )
Бродвей — Лафайетт-стрит
( M в будни днём и вечером )

линия Нассо-стрит, Би-эм-ти
Эссекс-стрит

Марси-авеню
( J круглосуточно M круглосуточно, кроме ночи Z в часы пик в пиковом направлении )
Вторая авеню
( F круглосуточно <F> в часы пик в пиковом направлении )

линия Шестой авеню, Ай-эн-ди
Деланси-стрит

Ист-Бродвей
( F круглосуточно <F> в часы пик в пиковом направлении )
station_next_ns Как station_next, но третий параметр — n или s. Как station_next, но только для следующих станций на север или на юг соответственно третьему параметру. Статья о пересадочном узле, альтернативный вариант раздела «Соседние станции».
station_bkg Станция. Цвет фона для станции, как в all_stations, на основе поля bkg таблицы routes.

Фрагмент преамбулы и карточка для примера

(использованы также некоторые функции, перечисленные выше в разделе для станций, но поддерживающие также пересадочные узлы)
« Деланси-стрит / Эссекс-стрит »
пересадочный узел
F <F> J M Z
Нью-Йоркский метрополитен

Боро Манхэттен
Округ Нижний Ист-Сайд
Выход к улицам Деланси-стрит , Эссекс-стрит
Пассажиропоток (2019) 8 861 296
(34 из 424)

... В пересадочный узел входят станции следующих линий:

На станциях пересадочного узла останавливаются маршруты:

  • F , J (круглосуточно),
  • <F> , Z (в часы пик в пиковом направлении),
  • M (круглосуточно, кроме ночи).

Предыдущая станция Линия
Название станции
Следующая станция
Бауэри
( J круглосуточно Z в часы пик в пиковом направлении )
Бродвей — Лафайетт-стрит
( M в будни днём и вечером )

линия Нассо-стрит, Би-эм-ти
Эссекс-стрит

Марси-авеню
( J круглосуточно M круглосуточно, кроме ночи Z в часы пик в пиковом направлении )
Вторая авеню
( F круглосуточно <F> в часы пик в пиковом направлении )

линия Шестой авеню, Ай-эн-ди
Деланси-стрит

Ист-Бродвей
( F круглосуточно <F> в часы пик в пиковом направлении )

Для статей о маршрутах и списка маршрутов

Название Ввод Вывод Форматирование вывода Применение Пример
route_descr Маршрут. Полное название. Текст; название линии в этом тексте оформляется как ссылка на статью о линии. Карточка маршрута, список маршрутов. Локальный маршрут линии Шестой авеню
route_terminals Маршрут. Для планируемого маршрута надо задать во втором параметре слово future. Конечные станции. Список из двух разделённых горизонтальной чертой частей (север и юг); у каждого элемента списка выводятся периоды времени. Периоды не выводятся, если они совпадают с общими для маршрута. Если во втором параметре задать слово small, периоды выводятся уменьшенным шрифтом (это используется только в списке маршрутов). Карточка маршрута, список маршрутов. Форест-Хилс — 71-я авеню (в будни днём и вечером)
Мидл-Виллидж — Метрополитан-авеню (ночью)
Эссекс-стрит (в выходные)
Мидл-Виллидж — Метрополитан-авеню (круглосуточно, кроме ночи)
Мертл-авеню (ночью)
route_count_stations Маршрут. Для планируемого маршрута надо задать во втором параметре слово future. Количество станций на маршруте. У каждого элемента списка выводятся периоды времени; периоды не выводятся, если они совпадают с общими для маршрута. Карточка маршрута. 8 (ночью)
13 (в выходные)
36 (в будни днём и вечером)
route_periods Маршрут. Для планируемого маршрута надо задать во втором параметре слово future. Когда работает маршрут. Текст. Карточка маршрута. круглосуточно
route_color Маршрут. Код цвета маршрута. Код без предшествующего #. Карточка маршрута. ff6319
route_prose Маршрут. Фраза, сообщающая про цвет маршрута. Текст. Преамбула статьи о маршруте. На картах, станциях, вагонах и т. д. он обозначается оранжевым цветом, поскольку проходит по линии Шестой авеню .
route_lines Маршрут и контекст: list (список маршрутов, этот вариант работает по умолчанию) или lead (преамбула статьи о маршруте). Список линий, по которым проходит маршрут. Текст со ссылками на статьи о линиях; в варианте для списка маршрутов перед линией, дающей маршруту цвет, ставится квадратик этого цвета. Список маршрутов либо преамбула статьи о маршруте. линия Куинс-бульвара, Ай-эн-ди ; линия Шестой авеню, Ай-эн-ди ; линия Нассо-стрит, Би-эм-ти ; линия Джамейка, Би-эм-ти ; линия Мертл-авеню, Би-эм-ти
линиям Куинс-бульвара, Ай-эн-ди , Шестой авеню, Ай-эн-ди , Нассо-стрит, Би-эм-ти , Джамейка, Би-эм-ти , и Мертл-авеню, Би-эм-ти .
route_regimes Маршрут либо два маршрута (если второй является разновидностью первого). Для планируемого маршрута надо задать во втором параметре слово future (в этом случае два маршрута не поддерживаются). Таблица способов обслуживания станций маршрутом по участкам пути и периодам времени. Строки таблицы соответствуют участкам (от станции до станции), а столбцы периодам времени. Один вызов функции строит таблицу для всего маршрута. Статья о маршруте.
От станции
включительно
До станции
включительно
Круглосуточно
Франклин-авеню Проспект-парк локальные пути
route_table Маршрут либо два маршрута (если второй является разновидностью первого). Один необязательный параметр (и альтернативный способ заполнения обязательных) описан правее. Несколько строк таблицы с информацией по станциям (способ обслуживания маршрутом/ами, название, пересадки). Один вызов функции строит таблицу для всего маршрута (или двух). Во втором параметре поддерживается слово future, в этом случае строится схема для планируемого маршрута (на момент создания модуля T ), включая планируемые станции. В третьем параметре поддерживается обозначение периода времени (как в таблице routes_periods), тогда схема строится только для него. Статья о маршруте.
S (челнок Франклин-авеню) Станция Доступность для маломобильных групп населения Пересадки
круглосуточно Франклин-авеню Доступность для маломобильных групп населения
A — ночью A — ночью C — круглосуточно, кроме ночи C — круглосуточно, кроме ночи Франклин-авеню
круглосуточно Парк-Плейс Доступность для маломобильных групп населения
круглосуточно Ботанический сад
2 — круглосуточно 2 — круглосуточно 3 — круглосуточно, кроме ночи 3 — круглосуточно, кроме ночи 4 — круглосуточно 4 — круглосуточно 5 — в будни днём 5 — в будни днём Франклин-авеню — Медгар-Эверс-колледж
круглосуточно Проспект-парк Доступность для маломобильных групп населения
B — в будни днём и вечером до 23:00 B — в будни днём и вечером до 23:00 Q — круглосуточно Q — круглосуточно
route_schedule Маршрут. Ссылка на расписание маршрута на сайте MTA . Текст. Статья о маршруте.

Фрагмент списка маршрутов для примера

M Локальный маршрут линии Шестой авеню линия Куинс-бульвара, Ай-эн-ди ; линия Шестой авеню, Ай-эн-ди ; линия Нассо-стрит, Би-эм-ти ; линия Джамейка, Би-эм-ти ; линия Мертл-авеню, Би-эм-ти локальный Форест-Хилс — 71-я авеню (в будни днём и вечером)
Мидл-Виллидж — Метрополитан-авеню (ночью)
Эссекс-стрит (в выходные)
Мидл-Виллидж — Метрополитан-авеню (круглосуточно, кроме ночи)
Мертл-авеню (ночью)

Фрагмент преамбулы, карточка, табличка и схема маршрута для примера

Локальный маршрут линии Шестой авеню
M
Нью-Йоркский метрополитен
Действует круглосуточно
Количество станций 8 (ночью)
13 (в выходные)
36 (в будни днём и вечером)
Конечные станции Форест-Хилс — 71-я авеню (в будни днём и вечером)
Мидл-Виллидж — Метрополитан-авеню (ночью)
Эссекс-стрит (в выходные)
Мидл-Виллидж — Метрополитан-авеню (круглосуточно, кроме ночи)
Мертл-авеню (ночью)

M — маршрут Нью-Йоркского метрополитена , следующий по линиям Куинс-бульвара, Ай-эн-ди , Шестой авеню, Ай-эн-ди , Нассо-стрит, Би-эм-ти , Джамейка, Би-эм-ти , и Мертл-авеню, Би-эм-ти .

От станции
включительно
До станции
включительно
День + вечер Выходные Ночь
Форест-Хилс — 71-я авеню Бродвей — Лафайетт-стрит локальные пути
Эссекс-стрит Флашинг-авеню локальные пути локальные пути
Мертл-авеню локальные пути локальные пути экспресс-пути
Сентрал-авеню Мидл-Виллидж — Метрополитан-авеню локальные пути локальные пути локальные пути

M Станция Доступность для маломобильных групп населения Пересадки
в будни днём и вечером Форест-Хилс — 71-я авеню Доступность для маломобильных групп населения
E — в будни днём и вечером E — в будни днём и вечером F — в будни днём и вечером F — в будни днём и вечером <F> — в часы пик в пиковом направлении <F> — в часы пик в пиковом направлении R — в будни днём и вечером R — в будни днём и вечером
в будни днём и вечером 67-я авеню
R — в будни днём и вечером R — в будни днём и вечером
в будни днём и вечером 63-я драйв — Риго-парк
R — в будни днём и вечером R — в будни днём и вечером
в будни днём и вечером Вудхейвен-бульвар
R — в будни днём и вечером R — в будни днём и вечером
в будни днём и вечером Гранд-авеню — Ньютаун
R — в будни днём и вечером R — в будни днём и вечером
в будни днём и вечером Элмхерст-авеню
R — в будни днём и вечером R — в будни днём и вечером
в будни днём и вечером Джексон-Хайтс — Рузвельт-авеню Доступность для маломобильных групп населения
E — в будни днём и вечером E — в будни днём и вечером F — в будни днём и вечером F — в будни днём и вечером <F> — в часы пик в пиковом направлении <F> — в часы пик в пиковом направлении R — в будни днём и вечером R — в будни днём и вечером на той же станции
7 — в будни днём и вечером 7 — в будни днём и вечером 74-я улица — Бродвей
в будни днём и вечером 65-я улица
R — в будни днём и вечером R — в будни днём и вечером
в будни днём и вечером Нортерн-бульвар
R — в будни днём и вечером R — в будни днём и вечером
в будни днём и вечером 46-я улица
R — в будни днём и вечером R — в будни днём и вечером
в будни днём и вечером Стайнуэй-стрит
R — в будни днём и вечером R — в будни днём и вечером
в будни днём и вечером 36-я улица
R — в будни днём и вечером R — в будни днём и вечером
в будни днём и вечером Куинс-Плаза Доступность для маломобильных групп населения
E — в будни днём и вечером E — в будни днём и вечером R — в будни днём и вечером R — в будни днём и вечером
в будни днём и вечером Корт-сквер — 23-я улица Доступность для маломобильных групп населения
E — в будни днём и вечером E — в будни днём и вечером на той же станции
7 — в будни днём и вечером 7 — в будни днём и вечером <7> — в часы пик в пиковом направлении <7> — в часы пик в пиковом направлении Корт-сквер
G — в будни днём и вечером G — в будни днём и вечером Корт-сквер
в будни днём и вечером Лексингтон-авеню — 53-я улица Доступность для маломобильных групп населения
E — в будни днём и вечером E — в будни днём и вечером на той же станции
6 — в будни днём и вечером 6 — в будни днём и вечером <6> — в будни днём в пиковом направлении <6> — в будни днём в пиковом направлении 51-я улица
в будни днём и вечером Пятая авеню — 53-я улица
E — в будни днём и вечером E — в будни днём и вечером
в будни днём и вечером 47-я — 50-я улицы — Рокфеллер-центр Доступность для маломобильных групп населения
B — в будни днём и вечером до 23:00 B — в будни днём и вечером до 23:00 D — в будни днём и вечером D — в будни днём и вечером F — в будни днём и вечером F — в будни днём и вечером <F> — в часы пик в пиковом направлении <F> — в часы пик в пиковом направлении
в будни днём и вечером 42-я улица — Брайант-парк
B — в будни днём и вечером до 23:00 B — в будни днём и вечером до 23:00 D — в будни днём и вечером D — в будни днём и вечером F — в будни днём и вечером F — в будни днём и вечером <F> — в часы пик в пиковом направлении <F> — в часы пик в пиковом направлении на той же станции
7 — в будни днём и вечером 7 — в будни днём и вечером <7> — в часы пик в пиковом направлении <7> — в часы пик в пиковом направлении Пятая авеню
1 — в будни днём и вечером 1 — в будни днём и вечером 2 — в будни днём и вечером 2 — в будни днём и вечером 3 — в будни днём и вечером 3 — в будни днём и вечером Таймс-сквер — 42-я улица круглосуточно, кроме ночи
7 — в будни днём и вечером 7 — в будни днём и вечером <7> — в часы пик в пиковом направлении <7> — в часы пик в пиковом направлении Таймс-сквер круглосуточно, кроме ночи
A — в будни днём и вечером A — в будни днём и вечером C — в будни днём и вечером C — в будни днём и вечером E — в будни днём и вечером E — в будни днём и вечером 42-я улица — Автовокзал Портового управления круглосуточно, кроме ночи
N — в будни днём и вечером N — в будни днём и вечером Q — в будни днём и вечером Q — в будни днём и вечером R — в будни днём и вечером R — в будни днём и вечером W — в будни днём и вечером до 23:00 W — в будни днём и вечером до 23:00 Таймс-сквер — 42-я улица круглосуточно, кроме ночи
S (челнок 42-й улицы) — в будни днём и вечером S (челнок 42-й улицы) — в будни днём и вечером Таймс-сквер круглосуточно, кроме ночи
в будни днём и вечером 34-я улица — Геральд-сквер Доступность для маломобильных групп населения
B — в будни днём и вечером до 23:00 B — в будни днём и вечером до 23:00 D — в будни днём и вечером D — в будни днём и вечером F — в будни днём и вечером F — в будни днём и вечером <F> — в часы пик в пиковом направлении <F> — в часы пик в пиковом направлении на той же станции
N — в будни днём и вечером N — в будни днём и вечером Q — в будни днём и вечером Q — в будни днём и вечером R — в будни днём и вечером R — в будни днём и вечером W — в будни днём и вечером до 23:00 W — в будни днём и вечером до 23:00 34-я улица — Геральд-сквер
[ ]
в будни днём и вечером 23-я улица
F — в будни днём и вечером F — в будни днём и вечером <F> — в часы пик в пиковом направлении <F> — в часы пик в пиковом направлении
[ ]
в будни днём и вечером 14-я улица
F — в будни днём и вечером F — в будни днём и вечером <F> — в часы пик в пиковом направлении <F> — в часы пик в пиковом направлении на той же станции
1 — в будни днём и вечером 1 — в будни днём и вечером 2 — в будни днём и вечером 2 — в будни днём и вечером 3 — в будни днём и вечером 3 — в будни днём и вечером 14-я улица
L — в будни днём и вечером L — в будни днём и вечером Шестая авеню
[ ]
в будни днём и вечером Уэст Четвёртая улица — Вашингтон-сквер Доступность для маломобильных групп населения
A — в будни днём и вечером A — в будни днём и вечером B — в будни днём и вечером до 23:00 B — в будни днём и вечером до 23:00 C — в будни днём и вечером C — в будни днём и вечером D — в будни днём и вечером D — в будни днём и вечером E — в будни днём и вечером E — в будни днём и вечером F — в будни днём и вечером F — в будни днём и вечером <F> — в часы пик в пиковом направлении <F> — в часы пик в пиковом направлении
[ ]
в будни днём и вечером Бродвей — Лафайетт-стрит Доступность для маломобильных групп населения
B — в будни днём и вечером до 23:00 B — в будни днём и вечером до 23:00 D — в будни днём и вечером D — в будни днём и вечером F — в будни днём и вечером F — в будни днём и вечером <F> — в часы пик в пиковом направлении <F> — в часы пик в пиковом направлении на той же станции
6 — в будни днём и вечером 6 — в будни днём и вечером <6> — в будни днём в пиковом направлении <6> — в будни днём в пиковом направлении Бликер-стрит
круглосуточно, кроме ночи Эссекс-стрит
J — круглосуточно, кроме ночи J — круглосуточно, кроме ночи Z — в часы пик в пиковом направлении Z — в часы пик в пиковом направлении на той же станции
F — круглосуточно, кроме ночи F — круглосуточно, кроме ночи <F> — в часы пик в пиковом направлении <F> — в часы пик в пиковом направлении Деланси-стрит
круглосуточно, кроме ночи Марси-авеню Доступность для маломобильных групп населения
J — круглосуточно, кроме ночи J — круглосуточно, кроме ночи Z — в часы пик в пиковом направлении Z — в часы пик в пиковом направлении
круглосуточно, кроме ночи Хьюс-стрит
J — круглосуточно, кроме будней днём в пиковом направлении и ночи J — круглосуточно, кроме будней днём в пиковом направлении и ночи
круглосуточно, кроме ночи Лоример-стрит
J — круглосуточно, кроме будней днём в пиковом направлении и ночи J — круглосуточно, кроме будней днём в пиковом направлении и ночи
круглосуточно, кроме ночи Флашинг-авеню Доступность для маломобильных групп населения
J — круглосуточно, кроме будней днём в пиковом направлении и ночи J — круглосуточно, кроме будней днём в пиковом направлении и ночи
круглосуточно Мертл-авеню
J — круглосуточно J — круглосуточно Z — в часы пик в пиковом направлении Z — в часы пик в пиковом направлении
круглосуточно Сентрал-авеню
круглосуточно Никкербоккер-авеню
круглосуточно Мертл-авеню — Уайкофф-авеню Доступность для маломобильных групп населения
L — круглосуточно L — круглосуточно Мертл-авеню — Уайкофф-авеню
круглосуточно Сенека-авеню
круглосуточно Форест-авеню
круглосуточно Фреш-Понд-роуд
круглосуточно Мидл-Виллидж — Метрополитан-авеню Доступность для маломобильных групп населения

Для статей о линиях и списка линий

Название Ввод Вывод Форматирование вывода Применение Пример
line_prose Линия. Маршруты, использующие линию, и их время работы на этой линии. Если линия считается «стволовой» и даёт цвет маршрутам, то добавляется текст ещё и об этом. Текст. Преамбула статьи о линии. маршрутами: J (круглосуточно), M (круглосуточно, кроме ночи) и Z (в часы пик в пиковом направлении). Линия считается « стволовой »: маршруты J и Z , проходящие по ней, обозначаются коричневым цветом.
line_bullets Линия. Маршруты, использующие линию. Крупные буллеты. Если во втором параметре передать ненулевое значение, будут буллеты обычного размера. Карточка линии; список линий. J M Z
line_count_stations Линия. Количество станций на линии. Просто число. Карточка линии. 6
line_nowrap Линия. Название линии с предотвращением переноса по дефисам в части после запятой. Карточка линии. Линия Нассо-стрит, Би-эм-ти
line_color Линия. Код цвета, который получают от линии маршруты, проходящие по ней. Если его нет (линия не «стволовая»), то чёрный. Код без предшествующего #. Карточка линии. 996633
line_opened Линия. Год открытия самой старой станции. Если во втором параметре передать непустое значение, то для линий, которые были построены раньше, чем перешли в состав метрополитена, будут выданы оба года и поясняющий текст. Текст. Карточка линии. 1908
line_aboveground Линия. Есть ли наземные участки (ответ для карточки). Текст: «есть», «нет» или «вся линия». Карточка линии. нет
segment_table Сегмент линии. Три необязательных параметра описаны ниже . Несколько строк таблицы с информацией по станциям (название, пути у платформ, маршруты с временами, пересадки). Один вызов функции строит таблицу для одного сегмента. Для построения таблицы по всей линии надо комбинировать эту функцию с функцией connection_use и прочим текстом и разметкой. Статья о линии.

Станции на линии


Станция Доступ для людей с ограниченными возможностями Тип
(по данным MTA )
Пути у
платформ
Дата
открытия
Маршруты
либо дата
закрытия
Пересадки
Линия начинается
Франклин-авеню Доступность для маломобильных групп населения эстакадная все 15 августа 1896 S (челнок Франклин-авеню) — круглосуточно S (челнок Франклин-авеню) — круглосуточно
A — ночью A — ночью C — круглосуточно, кроме ночи C — круглосуточно, кроме ночи Франклин-авеню
Ответвлялась линия Фултон-стрит, Би-эм-ти
Станция снесена Дин-стрит эстакадная все 15 августа 1896 1995
Парк-Плейс Доступность для маломобильных групп населения в выемке все 19 июня 1899 S (челнок Франклин-авеню) — круглосуточно S (челнок Франклин-авеню) — круглосуточно
Ботанический сад в выемке все 19 июня 1899 S (челнок Франклин-авеню) — круглосуточно S (челнок Франклин-авеню) — круглосуточно
2 — круглосуточно 2 — круглосуточно 3 — круглосуточно, кроме ночи 3 — круглосуточно, кроме ночи 4 — круглосуточно 4 — круглосуточно 5 — в будни днём 5 — в будни днём Франклин-авеню — Медгар-Эверс-колледж
Проспект-парк Доступность для маломобильных групп населения в выемке все 2 июля 1878 S (челнок Франклин-авеню) — круглосуточно S (челнок Франклин-авеню) — круглосуточно
B — в будни днём и вечером до 23:00 B — в будни днём и вечером до 23:00 Q — круглосуточно Q — круглосуточно
Линия примыкает к линии Брайтон
B — в будни днём и вечером до 23:00 B — в будни днём и вечером до 23:00 Q — круглосуточно Q — круглосуточно
B — в будни днём и вечером до 23:00 B — в будни днём и вечером до 23:00 Q — круглосуточно Q — круглосуточно
connection_use Два сегмента линий. Если не задано два валидных сегмента, статья заносится в Категория:Статьи с ошибочными параметрами при обращении к модулю NYCS DB . Один необязательный параметр описан правее. Маршруты, использующие соединение между двумя сегментами. Если маршрутов не найдено, то возвращается текст, заданный через третий параметр, а в его отсутствие — «соединение не используется». Пустая строка в третьем параметре рассматривается как заданный в параметре пустой текст, в отличие от по-настоящему незаданного параметра. Буллеты и значки как в route_table. Статья о линии.
connection_use_2 Четыре сегмента линий. Если не задано четыре валидных сегмента, статья заносится в Категория:Статьи с ошибочными параметрами при обращении к модулю NYCS DB . Два необязательных параметра описаны правее. Список маршрутов для первой пары сегментов в скобках, затем слова «и обратно» и список для второй пары в скобках. Если маршрутов для какой-либо пары не найдено, то в соответствующих скобках возвращается текст, заданный через пятый параметр, а в его отсутствие — «соединение не используется». Если не найдено для обеих пар, то скобки возвращаются одни, а в них текст, заданный через шестой параметр, а в его отсутствие — «оба соединения не используются»; слова «и обратно» в этом случае возвращаются до скобок. Буллеты и значки как в route_table. Статья о линии.
  • ( E — круглосуточно E — круглосуточно M — в будни днём и вечером M — в будни днём и вечером R — круглосуточно, кроме ночи R — круглосуточно, кроме ночи ) и обратно (соединение не используется)
  • и обратно (оба соединения не используются)
segment_regimes Сегмент линии. Два необязательных параметра описаны правее. Маршруты, работающие на этом сегменте как экспрессы и локальные, в зависимости от периода времени. Таблица. В левой верхней клетке можно вывести текст, сообщающий о том, о каком участке линии идёт речь, и передаваемый через второй параметр. Если во втором параметре передать слово auto, в левой верхней клетке будут выведены названия первой и последней станций сегмента, разделённые при помощи тире и перевода строки (если на участке всего одна станция, то просто её название). Если в третьем параметре передать непустое значение, вместо «экспресс-пути» будет написано «экспресс-путь». Статья о линии.
Парксайд-авеню —
Брайтон-Бич
День + вечер Выходные + ночь
Экспресс-пути B (до 23:00)
Локальные пути Q Q
connection_use_color Два сегмента линий. Код цвета, соответствующего маршрутам, использующим соединение между двумя сегментами. Если маршрутов нет или их цвета различны, то чёрный. Код без предшествующего #. Статья о линии. 996633

Дополнительные параметры функции segment_table

В функции segment_table второй параметр может принимать значения:

Значение параметра Смысл Для каких станций
Для более компактного показа информации о пересадках:
2 Добавить столбец с маршрутами для второй части каждой станции (для станций, обслуживающих по две линии) и показать в столбце с пересадками только данные по другим станциям пересадочного узла. Для пар линий 63-й улицы и Арчер-авеню, где по две линии идут параллельно через одни и те же станции.
1 Все маршруты из обеих частей станции показать вместе, соединив столбцы с маршрутами и с пересадками. Для станции Декалб-авеню , где распределение путей между линиями сделано в какой-то мере условно.
0 В столбце с пересадками вместо информации о пересадках поместить текст: «Все станции в этой рамке связаны пересадкой». Это будет сделано для всех станций сегмента, поэтому сегмент должен состоять из одной станции. Для двух случаев на линиях Восьмой авеню и Бродвея, где две станции находятся на разных ветках одной линии и связаны пересадкой (те, которые перечислены в таблице twins). В этих случаях две таблицы строятся параллельно слева и справа и в каждой из них есть строка, соответствующая части одного и того же пересадочного узла. Два значения параметра соответствуют строкам левой и правой таблиц.

Для этих же случаев имеются третий и четвёртый параметры, обеспечивающие визуальное объединение этих двух строк. В третий параметр можно передать значение left или right, чтобы вокруг строки таблицы нарисовать жирную рамочку с трёх сторон: сверху, снизу и слева/справа. Если третий параметр задан, то в четвёртый параметр можно передать высоту строки таблицы, измеренную в строках текста.

название станции из таблицы twins В столбце с пересадками убрать данные по указанной станции.
Для обозначения того факта, что это схема строящейся или исторической линии:
future Проектируемый/строящийся сегмент, информацию о станциях надо брать из таблицы stations_future.
former Закрытый/исторический сегмент, информацию о станциях надо брать из таблицы stations_former.
reincarn Сегмент из обычной таблицы stations, но в составе закрытой/исторической линии, поэтому строится с некоторыми особенностями.
reincarn back То же, но станции перечисляются в обратном порядке.

Фрагмент преамбулы, карточка, табличка и схема линии для примера

Линия Нассо-стрит, Би-эм-ти
BMT Nassau Street Line
Нью-Йоркский метрополитен
J M Z
Открытие первого участка 1908 год
Количество станций 6
Наземные участки нет

Линия Нассо-стрит, Би-эм-ти — линия Нью-Йоркского метрополитена , расположенная на Манхэттене и обслуживаемая маршрутами: J (круглосуточно), M (круглосуточно, кроме ночи) и Z (в часы пик в пиковом направлении). Линия считается « стволовой »: маршруты J и Z , проходящие по ней, обозначаются коричневым цветом.

Часы пик Остальное время
Локальные пути J Z J
— в пиковом направлении ; — в обратном пиковому

Станции на линии


Станция Доступ для людей с ограниченными возможностями Тип
(по данным MTA )
Пути у
платформ
Дата
открытия
Маршруты Пересадки
Линия является продолжением линии Джамейка
J — круглосуточно J — круглосуточно M — круглосуточно, кроме ночи M — круглосуточно, кроме ночи Z — в часы пик в пиковом направлении Z — в часы пик в пиковом направлении
Бруклин
Вильямсбургский мост
Манхэттен
Эссекс-стрит подземная все 16 сентября 1908 J — круглосуточно J — круглосуточно M — круглосуточно, кроме ночи M — круглосуточно, кроме ночи Z — в часы пик в пиковом направлении Z — в часы пик в пиковом направлении
F — круглосуточно F — круглосуточно <F> — в часы пик в пиковом направлении <F> — в часы пик в пиковом направлении Деланси-стрит
Ответвление к линии Шестой авеню
M — в будни днём и вечером M — в будни днём и вечером
Бауэри подземная все 4 августа 1913 J — круглосуточно J — круглосуточно Z — в часы пик в пиковом направлении Z — в часы пик в пиковом направлении
Канал-стрит подземная все 4 августа 1913 J — круглосуточно J — круглосуточно Z — в часы пик в пиковом направлении Z — в часы пик в пиковом направлении
4 — ночью 4 — ночью 6 — круглосуточно 6 — круглосуточно <6> — в будни днём в пиковом направлении <6> — в будни днём в пиковом направлении Канал-стрит
N — ночью N — ночью R — круглосуточно, кроме ночи R — круглосуточно, кроме ночи W — в будни днём и вечером до 23:00 W — в будни днём и вечером до 23:00 Канал-стрит
N — круглосуточно, кроме ночи N — круглосуточно, кроме ночи Q — круглосуточно Q — круглосуточно Канал-стрит
Присоединялись пути от Манхэттенского моста
Чеймберс-стрит Доступность для маломобильных групп населения подземная все 4 августа 1913 J — круглосуточно J — круглосуточно Z — в часы пик в пиковом направлении Z — в часы пик в пиковом направлении
4 — круглосуточно 4 — круглосуточно 5 — круглосуточно, кроме ночи 5 — круглосуточно, кроме ночи 6 — круглосуточно 6 — круглосуточно <6> — в будни днём в пиковом направлении <6> — в будни днём в пиковом направлении Бруклинский мост — Сити-холл
Фултон-стрит Доступность для маломобильных групп населения подземная все 30 мая 1931 J — круглосуточно J — круглосуточно Z — в часы пик в пиковом направлении Z — в часы пик в пиковом направлении
2 — круглосуточно 2 — круглосуточно 3 — круглосуточно, кроме ночи 3 — круглосуточно, кроме ночи Фултон-стрит
4 — круглосуточно 4 — круглосуточно 5 — круглосуточно, кроме ночи 5 — круглосуточно, кроме ночи Фултон-стрит
A — круглосуточно A — круглосуточно C — круглосуточно, кроме ночи C — круглосуточно, кроме ночи Фултон-стрит
[ ]
Брод-стрит подземная все 30 мая 1931 J — круглосуточно J — круглосуточно Z — в часы пик в пиковом направлении Z — в часы пик в пиковом направлении
Линия сливается с линией Бродвея
и продолжается как линия Четвёртой авеню
N — ночью N — ночью R — круглосуточно R — круглосуточно W — в будни днём и вечером до 23:00 W — в будни днём и вечером до 23:00
N — ночью N — ночью R — круглосуточно R — круглосуточно W — часть рейсов в часы пик в пиковом направлении W — часть рейсов в часы пик в пиковом направлении
Манхэттен
Тоннель Монтегью-стрит
Бруклин

Для схемы всего метрополитена

Название Ввод Вывод Форматирование вывода Пример
segment_color Сегмент линии либо два сегмента. Если задан второй сегмент, то третий параметр — обозначения segor, segand, segandnot, как в шаблоне {{ NYCS seg use }} . Код цвета, соответствующего маршрутам, проходящим по сегменту. Если маршрутов нет или их цвета различны, то чёрный. Если задан второй сегмент, то он учитывается так, как указано в третьем параметре. Код без предшествующего #. 000000
seg2color Сегмент линии либо два сегмента. Код цвета, соответствующего линии, на которой расположен сегмент. Если линия не стволовая, то чёрный. Если задан второй сегмент, то цвет (не чёрный) возвращается только при условии, что он одинаковый для обоих сегментов. Код без предшествующего #. 996633
segment_dir Сегмент линии либо два сегмента. Если задан второй сегмент, то третий параметр — обозначения segor, segand, segandnot, как в шаблоне {{ NYCS seg use }} . В четвёртом параметре можно передать обозначение периода времени согласно модулю. Способы использования сегмента (есть экспресс-поезда; есть экспресс-поезда только в пиковом направлении; есть движение по схеме «скип-стоп»; ничего из перечисленного нет). Имя цвета. grey
seg_route Сегмент, маршрут. Непустое значение, если маршрут проходит по сегменту, и пустое в противном случае. Текст. x
segment_route_coef Маршрут, сегмент линии либо два сегмента. Если задан второй сегмент, то четвёртый параметр — обозначения segor, segand, segandnot, как в шаблоне {{ NYCS seg use }} . Коэффициент зелёного и синего для функции rgb, обозначающей использование сегмента маршрутом по временам суток: наиболее яркий красный обозначает круглосуточное использование, наиболее бледный розовый только по ночам, серый отсутствие маршрута на сегменте. Число от 0 до 255. 0
seg_line Сегмент, линия. Непустое значение, если линия проходит по сегменту, и пустое в противном случае. Текст. x

Некоторые примеры — здесь .

Для других статей и общего назначения

Название Ввод Вывод Форматирование вывода Пример для станции Пример для пересадочного узла
station_bullets Станция или пересадочный узел. Останавливающиеся на станции маршруты. Буллеты со ссылками на статьи о маршрутах. J M Z F <F> J M Z
station_letters Станция или пересадочный узел. Останавливающиеся на станции маршруты. Всё текстом без ссылок, и для каждого маршрута выводится только его буква или цифра. J, M, Z F, <F>, J, M, Z
station_letters_L Станция или пересадочный узел. Один необязательный параметр описан правее. Название станции без уточнения, но с останавливающимися на ней маршрутами. Всё текстом со ссылкой на статью о станции, и для каждого маршрута выводится только его буква или цифра. Если во второй параметр передать true, выводится текст без ссылки. Эссекс-стрит (J, M, Z) Деланси-стрит / Эссекс-стрит (F, <F>, J, M, Z)
station_netto_L Станция или пересадочный узел. Название станции без уточнения. Текст со ссылкой на статью о станции. Эссекс-стрит Деланси-стрит / Эссекс-стрит
station_descr Станция или пересадочный узел. Описание станции для дизамбига. « Эссекс-стрит » — станция Нью-Йоркского метрополитена на Манхэттене, обслуживаемая маршрутами J, M, Z. « Деланси-стрит / Эссекс-стрит » — пересадочный узел Нью-Йоркского метрополитена на Манхэттене, обслуживаемый маршрутами F, <F>, J, M, Z.
SM Станция и прочие параметры для шаблона {{ SM smart }} . Прочие параметры (dir, side, X, Y) должны передаваться во втором параметре единым стрингом, в котором перед именем параметра ставится {{ ! }} , а перед значением {{ = }} , которые при подстановке превратятся в | и = соответственно. Третий параметр может принимать значения former или reincarn, как в функции segment_table. В четвёртом параметре можно передать любое непустое значение, чтобы был использован графический файл не с белым, а с серым фоном. Пятый параметр предназначен для параметра label, передаваемого в шаблон {{ SM smart }} . Функция вызывает шаблон {{ SM smart }} , который строит кружок, обозначающий станцию на схеме метро, — например, на схеме демонтированных линий.
const Различные константы. Единственным параметром служит имя константы, значение которой нужно получить (подробнее см. комментарии в модуле в тексте локальной функции const). 2019
legend Список условных обозначений для периодов времени.
круглосуточно
круглосуточно, кроме ночи
круглосуточно, кроме будней днём (либо часов пик) в пиковом направлении
в будни днём (и, возможно, вечером)
в будни круглосуточно
в часы пик
в будни днём (либо в часы пик) в пиковом направлении
в будни днём (либо в часы пик) в направлении, обратном пиковому
в выходные
ночью
ночью и в выходные (и, возможно, вечером)
нет движения поездов

Фрагмент карточки и текста для статьи об улице

улица Такая-то
англ. Some Street
Общая информация
Страна США
Город Нью-Йорк
Метро Эссекс-стрит ( J M Z )
Деланси-стрит ( F <F> )
или
Деланси-стрит / Эссекс-стрит ( F <F> J M Z )
Боро Манхэттен

Пример строчек для дизамбига

(на самом деле в дизамбигах будет дана ссылка на каждую статью один раз, а не три, как здесь)
  • « Эссекс-стрит » — станция Нью-Йоркского метрополитена на Манхэттене, обслуживаемая маршрутами J, M, Z.
  • « Деланси-стрит » — станция Нью-Йоркского метрополитена на Манхэттене, обслуживаемая маршрутами F, <F>.
  • « Деланси-стрит / Эссекс-стрит » — пересадочный узел Нью-Йоркского метрополитена на Манхэттене, обслуживаемый маршрутами F, <F>, J, M, Z.

Примечания к функциям

  1. В качестве станций, а также сегментов линий следует передавать названия согласно списку в таблице stations (см. ниже), в качестве пересадочных узлов — согласно списку в таблице station_complexes, в качестве маршрутов — согласно списку в таблице routes.
  2. В качестве примера взята станция Фар-Рокавей — Мотт-авеню (линия Рокавей, Ай-эн-ди) .
  3. В качестве примера взята станция Корт-стрит (линия Фултон-стрит, Ай-эн-ди) .
  4. В тех форматах, где не выводятся времена, из списка маршрутов исключаются те, которые останавливаются на станции только ночью, только иногда в часы пик, только в выходные летом и т. п. Это примечание не касается, однако, форматов, строящих куски связного текста, а также формата bullets all.
  5. Станция имела перпендикулярные платформы для эстакадной линии Фултон-стрит и для линии Брайтон (ныне эта её часть относится к линии Франклин-авеню ).
  6. Станция была перемещена севернее в 1928 году.

Таблицы

Для нужд этого модуля вся схема Нью-Йоркского метрополитена разделена на сегменты , каждый из которых на всём своём протяжении обслуживается одинаковыми маршрутами. В некоторых случаях может оказаться, что между соседними сегментами нет разницы с точки зрения маршрутов, а разделены они по другим причинам, например из-за необходимости нарисовать что-нибудь между ними на схеме линии. Сегменты всегда разделены в тех местах, где одна линия переходит в другую.

Две главных таблицы

stations

Большая таблица, около 500 записей. Все станции по сегментам, в пределах каждого сегмента с севера на юг (согласно принятому в Нью-Йорке railroad north и railroad south для всех участков метрополитена ). Поля:

Имя поля Смысл Пояснения
segment Название сегмента, на котором находится станция.
station Название станции (ключ таблицы). Названием в большинстве случаев служит название статьи, кроме , перечисленных в таблицах multiline_stations и station_complexes, когда названием служит название перенаправления.
info Примечание к названию станции. Показывается в виде сноски. Сообщает как правило о том, что станция в прошлом имела пересадку на другую станцию, ныне снесённую.
type Тип станции, отвечающий на вопрос, все ли поезда останавливаются на станции.

Возможные типы:

  • x — экспресс-станция (на ней останавливаются все поезда);
  • o — локальная станция (экспресс-поезда её проходят без остановки);
  • J и Z — во время работы маршрутов J и Z в режиме скип-стоп останавливается J или Z соответственно (если режим скип-стоп будет введён и для других маршрутов, можно будет здесь добавить и другие обозначения);
  • - — станция закрыта (на момент создания модуля таких нет);
  • пустой тип — для станций на сегментах, где нет различения станций по типам и все поезда останавливаются на всех станциях.
subtype Подтип, конкретизация к предыдущему полю.

Для станций типа x задаётся подтип, используемый только для вычисления маршрутов, идущих по экспресс-путям. Возможные подтипы:

  • suppress — экспресс-путей нет (либо распределение маршрутов между путями нестандартно и подлежит описанию вручную);
  • bidi — один экспресс-путь;
  • tt — средний путь является не экспресс-путём, а оборотным;
  • пустой подтип — два экспресс-пути.

Для станций типа o есть другие значения подтипа:

  • split — это значит, что экспресс-пути обходят станцию по спрямлённой трассе;
  • under — это значит, что экспресс-пути проходят под станцией и не видны с платформ(ы).

Ещё один подтип, используемый независимо от типа:

  • bumper — если на станции есть ровно два пути и оба заканчиваются тупиками.
other_type Только для станций, обслуживающих несколько линий, если на текущей линии в пределах станции нет путей без остановки, а на другой линии есть. В этом поле ставится o (как в поле type в записи, соответствующей другой части этой станции), и это приводит к правильному показу «лок.» на схеме линии в графе «Пути у платформ»; использовано только у двух станций.
note Примечание. У станции Акуидакт-Рейстрак стрелка вверх, обозначающая платформу только в северном направлении.
north_back Логическое поле , обозначающее, что в списке соседних станций надо для данной станции северную соседнюю показывать как южную, а южную как северную. Применяется тогда, когда railroad north и railroad south для данной станции противоположны им же для расположенных параллельно других частей физической станции или других станций внутри пересадочного узла, для которых список соседних станций показывается вместе.
acc Доступность для инвалидов. или . Варианты:
  • yes — станция доступна;
  • n — только в северном направлении;
  • s — только в южном направлении.

Чтобы поддерживать это поле в актуальном состоянии, можно следить за статьёй английской Википедии (по методу «наблюдение за наблюдающим»): англоязычные коллеги следят за источниками по теме и регулярно обновляют эту статью.

sep Отсутствие бесплатного перехода между направлениями. , вот сам сайт и , ссылка подписана «2010 Route Map in the style of the 1959 Schematic». Единственный вариант:
  • yes — значит платформы разделены и перехода между ними нет (в противном случае поле не заполнено).
eng Английское название станции.
old Старое название станции, используемое при указанном параметре reincarn (существующая станция как часть исторической линии). Знак минус в этом параметре обозначает, что при построении схемы исторической линии эту станцию надо пропустить.
oldlink Ссылка на статью, используемая при указанном параметре reincarn (существующая станция как часть исторической линии). Эта ссылка содержит в качестве уточнения название исторической линии и является перенаправлением на статью о существующей станции, где сказано о её конфигурации в прошлом.
oldtype Тип станции, используемый при указанном параметре reincarn (существующая станция как часть исторической линии). Фактически нужно только для случаев, когда на исторической схеме надо показать станцию как локальную (oldtype='o'), а на современной не надо.
oldeng Старое английское название станции (пока не используется, потому что в схемах линий английские названия не участвуют).
opened Дата открытия. Внимание: последние 4 цифры обязаны быть номером года. Если дата неизвестна, поле остаётся пустым (пустой стринг, между кавычками ничего).
orig Дата первоначального открытия. Если станция была открыта в составе железной дороги, а позже включена в состав метрополитена, то в поле opened ставится дата включения в состав метрополитена, а в поле orig — дата первоначального открытия.
above Если на схеме линии надо изобразить перед станцией мост или тоннель, то здесь указывается его имя. Здесь же, вокруг имени моста/тоннеля или вместо него, указывается граница боро, например: Манхэттен<hr>Такой-то тоннель<hr>Бруклин Если для этого моста/тоннеля существует статья, то имя ставится как ссылка на неё; если нет статьи, а есть только перенаправление на статью о линии метро, то без ссылки. Манхэттенский мост и некоторые другие мосты и тоннели указывать не надо, они указываются вручную прямо на схеме.
below То же, но не перед станцией, а после неё. Если станции до и после моста/тоннеля относятся к разным линиям, то мост/тоннель надо указывать для обеих станций, а если к одной и той же, то только для одной из них.
below_key Если на схеме линии после станции надо изобразить строчку или несколько из таблицы stations_former, то здесь указывается имя сегмента из той таблицы.
below_key_reincarn Аналогично предыдущему, но игнорируется в режиме reincarn.
below_stub Если на схеме линии после станции надо изобразить подключение бывшей линии, то здесь указывается его конфигурация. Значение параметра состоит из двух символов: плюс или минус обозначает подключение или ответвление, а затем w или e обозначает запад или восток.
below_stub_text Текст к предыдущему параметру.
above_stub То же, но до станции.
above_stub_text Текст к предыдущему параметру.
r_key Ключ для извлечения пассажиропотока из таблицы ridership.
r_ast Логическое поле , обозначающее, что цифра пассажиропотока дана для всего пересадочного узла.
c_key Ключ для извлечения географических данных из таблицы csv.
conn Ссылка на русскую статью (и, если надо, на английскую) для пересадки на другой вид транспорта.
br Для длинных названий станций — название, разбитое на две строчки тегом <br>. Используется только в схеме линии. В схеме маршрута использовать нельзя, потому что там важна высота текста в клетке в строках.

Если через станцию проходят несколько линий (см. ниже таблицу multiline_stations), то здесь каждая из частей станции имеет свою запись. При этом поля начиная с acc в каждой из записей заполняются одинаково, дублируя информацию.

routes_periods

Большая таблица, около 1000 записей. Собственно расписание движения поездов. Поля:

Имя поля Смысл Пояснения
route Маршрут. Как в таблице routes.
period Период времени.

Варианты:

  • rh (rush hours) — часы пик;
  • md (middays) — дневное время в рабочие дни, за исключением часов пик;
  • ev (evenings) — вечернее время в рабочие дни;
  • we (weekends) — выходные и праздники;
  • ln (late nights) — ночное время.

Кроме того, в некоторых записях обозначен период времени:

  • also.

Это нужно для построения схемы маршрута — схема составляется на основе тех сегментов, которые маршрут проходит в часы пик (поскольку в часы пик он проходит почти все свои сегменты), и если какой-то из своих сегментов маршрут не проходит в часы пик, то этот сегмент добавляется в таблицу с пометкой also. Аналогично, если схема маршрута строится для двух маршрутов-вариантов параллельно (на момент составления модуля такими случаями являются: 6 и <6> , 7 и <7> , F и <F> , J и Z , A и ; можно так же изобразить N и W , но это уже будет орисс), то надо иметь в виду, что сегменты для неё берутся от первого маршрута, поэтому если у второго есть сегменты, отсутствующие в часах пик у первого, то их тоже надо добавить к первому с периодом also. Последовательность записей с also должна укладываться в общую последовательность обхода сегментов маршрутом, задаваемую записями с rh, а записи с rh и also вместе должны предшествовать остальным записям для того же маршрута и для его варианта. (Если маршрут в часы пик не проходит какой-то свой сегмент, зато проходит другой сегмент, на котором находятся те же станции, как это происходит с маршрутом D на станции Декалб-авеню , то применяется другой подход, без записи с also, и он описан ниже.)

segment Сегмент. Сегменты в пределах каждого сочетания маршрута и периода времени перечислены с севера на юг, аналогично станциям в таблице stations; исключения из этого порядка обрабатываются таблицей nodes и полями fork и joint.
Три поля выше этого места — ключ.
how Ответ на вопрос, как этот маршрут в это время обслуживает этот сегмент.

Варианты:

  • x — поезд останавливается только на станциях, имеющих тип x;
  • J, Z (можно добавлять и другие символы) — поезд останавливается только на станциях, у которых тип обозначен тем же символом либо x;
  • пустой способ — поезд следует со всеми остановками.
dir Ограничение движения поездов по направлению движения (пиковое или противоположное ему) или по части периода времени.

Варианты:

  • peak — указанный способ обслуживания относится к пиковому направлению, а обратно поезд идёт со всеми остановками;
  • peakonly — как peak, но обратно поезд не идёт (в обратном направлении те же составы следуют под другим маршрутом либо не следуют вообще, потому что уходят в / выходят из депо);
  • peak+ — как peakonly, но только иногда (меньшая часть рейсов);
  • notpeakonly — как peakonly, но в обратную сторону.

Кроме того, есть вариант, обозначаемый цифрой 1, смысл которого — ограничение периода времени:

  • в часы пик — только некоторые рейсы (но в обоих направлениях, а не в одном, в отличие от peak+);
  • вечером — только до 23:00;
  • в выходные дни — только в летний сезон;
  • ночью — только в рабочие дни.

Аналогично, есть вариант, обозначаемый цифрой 2:

  • вечером — только после 23:00;
  • в выходные дни — кроме летнего сезона;
  • ночью — только в выходные дни.
fork Пометка сегментов, расположение которых в таблице отличается от порядка обхода поездом. Значение south соответствует началу (северному сегменту) ответвления на юг (например, маршрут A ), а north наоборот (например, маршрут 5 ); значение uturn у последнего сегмента по списку обозначает, что он не последний по маршруту (маршрут M ).
alt Отношение записи к временным изменениям в маршрутах.

Варианты:

  • пусто — запись одинаково верна для обычной схемы и для временной;
  • +1, +2 и т. д. — только для временной схемы;
  • -1, -2 и т. д. — только для обычной схемы (внимание, здесь должен быть символ дефиса, который есть на клавиатуре).

Для включения механизма показа временных изменений надо занести в таблицу alts запись с соответствующим номером.

future Логическое поле , обозначающее, что маршрут проектируется.
tt Логическое поле , обозначающее, что экспресс-пути в данном случае используются для оборота.
shuttle Логическое поле , обозначающее, что маршрут в этот период времени является челноком (расставляется во всех записях, относящихся к данному сочетанию маршрута и периода времени).
Все поля ниже этого места — только для построения схем маршрутов .
joint Точка пристыковки перевёрнутого сегмента к обычному. Для маршрута, у которого на трассе имеется точка разворота и поэтому часть сегментов надо изобразить задом наперёд (на момент создания модуля только маршрут M ). Оно ставится со значением true в записи с периодом времени rh у последнего обычного сегмента перед первым сегментом, который надо перевернуть. Сегменты после точки разворота у такого маршрута перечисляются в обратном порядке: от второй конечной станции к точке разворота, навстречу той части маршрута, которая до точки разворота. При этом поддерживаются маршруты с разворотом с двумя северными концами, но не с двумя южными. Если появится маршрут с двумя южными, программу придётся дописывать. Тем более не поддерживаются маршруты с двумя разворотами (а они возможны, например если тот же M будет перенаправлен на Бродвей-Джанкшен и затем на Канарси).
pattern В записях с периодом времени rh либо also схематическое изображение символов, которые должны быть нарисованы в схеме маршрута слева от названия станции у всех станций данного сегмента и всех последующих, пока не попадётся сегмент, у которого задан другой pattern.
shape Аналогично, но которые должны быть нарисованы в отдельной строке после данного сегмента (и заодно признак, что нужно нарисовать такую отдельную строку).
novert_n Логическое поле , сообщающее о том, что если строка таблицы увеличена в высоту из-за нескольких строк пересадок в её правом столбце, то в символах, расположенных слева от названия станции, не нужно рисовать соединяющую кружки вертикальную линию сверху от первой станции сегмента (если сегмент первый в маршруте, то заполнять поле не нужно, отмена вертикальной линии работает автоматически).
novert_s То же снизу от последней станции сегмента (и если сегмент последний в маршруте, то заполнять не нужно).
Следующая группа полей тоже предназначена для построения схем маршрутов, но используется только для маршрута D на станции Декалб-авеню , где распределение путей между линиями сделано в какой-то мере условно. Маршрут D проходит эту станцию ночью по путям, отнесённым к одной линии, а в остальное время — по путям, отнесённым к другой (как экспресс). Первым путям соответствует сегмент Brigh DK, а вторым сегмент Fourth DK, оба сегмента включают только эту станцию. Соответственно, сегмент Brigh DK для маршрута D присутствует в таблице с периодом времени ln, а сегмент Fourth DK — со всеми остальными. Если бы для этой станции была задана запись с периодом времени also, то станция была бы показана на схеме маршрута дважды.
fullsta Логическое поле в записи с периодом rh, сообщающее о том, что в схеме маршрута для станций этого сегмента (то есть для станции Декалб-авеню ) надо рассматривать проход поездов по всем путям, а не только по путям определённой линии (аналогично параметру 1 в функции segment_table).
segment_subst В записи, сегмент которой отсутствует среди записей с периодом rh, альтернативный сегмент, присутствующий там.

Внимание: данные в этой таблице должны отражать прохождение маршрутов по тем или иным путям, а не просто факт остановки на станции. Запись должна присутствовать в таблице, даже если поезд проходит сегмент экспрессом, а на сегменте нет ни одной экспресс-остановки.

Дополнительная информация о станциях

stations_future

Аналогично таблице stations, но только проектируемые/строящиеся станции. В поле opened ограничение про номер года не действует. Дополнительные поля:

  • struc — тип станции, который для действующих станций вычисляется на основании таблицы csv; задаётся текстом, и если поле отсутствует, то по умолчанию имеется в виду «подземная»;
  • boro — боро.

stations_former

Аналогично таблицам stations и stations_future, но только закрытые/исторические станции. Большая таблица, более 200 записей. Дополнительные поля:

  • struc и boro — как в предыдущей таблице; поле struc по умолчанию имеется в виду «эстакадная»;
  • saved — логическое поле , обозначающее, что станция закрыта, но не снесена;
  • closed — дата закрытия;
  • station2 — как station, поле для второго названия станции на случай, если платформы разных направлений представляли собой две отдельных станции;
  • en — название английской статьи на случай, если русская отсутствует (а она как правило отсутствует);
  • transfer — комментарий про бывшие пересадки на другие станции. Поле может быть указано и в таблице stations — у станций, вставляемых при помощи параметра reincarn в схемы исторических линий. В отличие от поля info, используется не в сноске, а в графе «Примечания» и заполняется без точки в конце и с маленькой буквы;
  • spur — обозначение бывшей конечной, находившейся на ответвлении (значение поля состоит из двух букв: s или n обозначает южную или северную, а затем w или e обозначает, что станция располагалась к западу или к востоку от основной линии);
  • spur_noreincarn — аналогично предыдущему, но игнорируется в режиме reincarn.

Если станция обслуживала и существующую линию, и закрытую, то она сюда не заносится, потому что эта таблица используется только посегментно для построения схемы линии, а станция, которая до сих пор существует, на такой схеме берётся из таблицы stations.

twins

Те станции, которые описаны в статьях по две в одном разделе статьи. Поля:

  • ключ таблицы — название станции, как она бы называлась, если бы она была одна, а не две;
  • eng — то же, на английском языке;
  • comment1 и comment2 — краткое название на русском, позволяющее отличить одну станцию от другой;
  • station1 и station2 — название станции, как она действительно названа в модуле.

multiline_stations

Те станции, через которые проходят две линии и больше. Поля:

  • full — название статьи про станцию;
  • part — название перенаправления на статью, которое соответствует путям определённой линии на станции и используется в таблице stations в качестве «квазистанции»;
  • text — начало текстового описания распределения маршрутов по путям для данной части станции (программа берёт эти описания в том же порядке, в котором они перечислены в таблице, поэтому для первой части каждой станции этот текст начинается с большой буквы, а для остальных укорочен, чтобы не повторять те же слова в статье);
  • after — пояснение после этого описания, которое программа заключает в скобки;
  • level — текст, который добавляется к описанию части станции, и он же признак, что для данной части станции надо построить также описание распределения маршрутов по локальным и экспресс-путям;
  • detailed — логическое поле , обозначающее, что перечисление маршрутов для частей станции должно быть с указанием времён для каждого (по умолчанию оно делается без времён);
  • no_lcl и no_exp — логические поля , отменяющие перечисление локальных и экспресс-маршрутов соответственно для данной части станции;
  • cross — логическое поле , обозначающее, что на станции имеется кросс-платформенная пересадка (но за таковую засчитываются только пересадки между маршрутами разных линий).

station_complexes

Пересадочные узлы. Поля:

  • article — название статьи про пересадочный узел; если статьи про узел нет, то в этом поле ставится условное значение (одинаковое для обеих записей), имеющее длину 1 (цифра либо латинская буква);
  • station — название перенаправления на статью, которое соответствует станции;
  • section — название раздела, на который ведёт это перенаправление; пустая строка обозначает (кроме станций с заполненным полем future, см. ниже), что станция связана с остальным пересадочным узлом виртуальной пересадкой (с выходом из метро и повторным входом, но без повторной оплаты) и имеет отдельную статью;
  • periods — для пересадок, действующих только в некоторые периоды времени, обозначение периодов, совпадающее с одним из значений ключа в таблице icons; наличие этого поля рассматривается как признак, что пересадка не виртуальная (между Таймс-сквер и Брайант-парком пересадка не виртуальная и работает только в часы работы челнока, все виртуальные пересадки работают круглосуточно);
  • alt — аналогично одноимённому полю в таблице routes_periods;
  • future — логическое поле , обозначающее, что либо это проектируемая/строящаяся станция, либо это пересадочный узел, в котором все станции кроме этой проектируемые/строящиеся.

Дополнительная информация о путях

nodes

Необходимая информация по точкам соединения сегментов, где переход поезда с сегмента на сегмент отличается от порядка перечисления сегментов в расписании. Поля:

  • segment — название сегмента, подходящего к точке с одной из сторон;
  • node_n — название точки, если она является северной для сегмента;
  • node_s — то же, если она является южной;
  • nodetype — тип точки.

Каждая запись содержит информацию об одном сегменте, примыкающем к точке. Для точки требуется две или три записи по сегментам. Поля, соответствующие точке, содержат одинаковую информацию во всех записях, относящихся к ней. Поддерживаются два типа точек:

  • fork — развилка (в одной точке сходятся три сегмента, один с севера и два с юга либо наоборот, поезд проходит без изменения направления);
  • uturn — разворот (два сегмента, но оба примыкают к точке с севера или оба с юга, поезд проходит либо с изменением направления через эти два сегмента, либо обычным образом в порядке перечисления сегментов).

Информация о точке заносится в таблицу только в том случае, если развилка либо разворот используется каким-либо маршрутом (один и тот же маршрут в одно и то же время суток проходит по обеим веткам развилки, либо существует маршрут, проходящий через точку по сегментам, образующим разворот).

Эта таблица частично дублирует информацию из таблицы routes_periods, потому что так было удобнее для алгоритма.

unused_connections

Перегоны, которые по сегодняшнему расписанию не используются маршрутами, однако должны быть учтены при показе соседних станций. Для каждого перегона даются две станции, между которыми он проходит. Поля:

  • station — станция;
  • north — логическое поле, является ли станция северной для перегона (возможны две южных или две северных, если проезд по перегону является разворотом);
  • connection — условное обозначение перегона (чтобы было ясно, какие станции относятся к одному перегону).

unused_tracks

Аналогично предыдущему — участки путей, которые не используются маршрутами. Для каждого участка даются две или более станций. Поля:

  • station — станция;
  • segment — условное обозначение участка (не связано с сегментами, используемыми в остальных таблицах);
  • closed — текст комментария к станции, если она сегодня не существует, например «закрыта» или «снесена»;
  • index — номер станции по участку, считая с севера на юг (станции будут связаны перегоном, если они расположены на одном участке и имеют соседние номера).

Эта таблица и предыдущая имеют частично совпадающую функциональность, однако в эту таблицу занесены пути, ведущие к закрытым станциям, а в предыдущую — пары существующих станций, пути между которыми не используются.

В эти две таблицы можно добавить неиспользуемые экспресс-пути, проходящие параллельно локальным путям. Они не добавлены сюда умышленно, потому что не найден источник, который бы гарантировал полноту списка (с учётом всех мест, где поезд может перейти с экспресс-путей на локальные или наоборот). Внимание: несмотря на то что в таблице stations отмечены все экспресс-станции и видно, на каких станциях остановится поезд, идущий по экспресс-пути, — эти вычисления производятся только для существующих маршрутов. Чтобы соседние станции вычислялись и для неиспользуемых экспресс-путей, необходимо все такие пути заносить в эти две таблицы.

Таблицы, копируемые с сайта mta.info

ridership

Большая таблица, около 400 записей. Содержит ключ (сокращённое название станции на английском языке и обозначения останавливающихся на ней маршрутов) и данные по годовому пассажиропотоку для каждой станции или пересадочного узла. Ключ должен совпадать с полем r_key в таблице stations. Поля:

Имя поля Смысл
r Пассажиропоток.
prev Пассажиропоток за предыдущий год.
rank Номер станции по пассажиропотоку.
comment Сноска.

Эти данные вынесены в отдельную таблицу, чтобы при обновлении источника менять только её. Ниже дана инструкция по переносу данных из источника в таблицу.

Если источник представляет собой Если источник представляет собой
  1. Сохранить html источника в текстовом файле.
  2. Оставить в нём только часть от <table id="subway"> до закрывающего </table> включительно, остальное стереть.
  3. Заменить <img и _subway (где знаком подчёркивания обозначен пробел) на <!--, а alt=" и /> на -->.
  4. Открыть полученный файл в браузере и скопировать таблицу из браузера в Эксель.
  5. В столбце с названием станции заменить апострофы на сочетание обратной косой черты и апострофа.
  1. Найти в Экселе лист с данными за год (а не за день).
  2. В столбце с названием станции:
    • удалить все скобки,
    • запятые заменить на пробелы,
    • а апострофы — на сочетание обратной косой черты и апострофа.

И далее:

  1. В предположении, что название станции с маршрутами (ключ) оказалось в столбце A, пассажиропоток за нужный год в столбце G, пассажиропоток за предыдущий год в столбце F, номер станции по пассажиропотоку в столбце J, а столбец K пуст, занести в столбец L такую формулу:
="['" & A2 & "']={r=" & G2 & ",prev=" & F2 & ",rank=" & J2 & "},"
(пример приведён для второй строки) и размножить её на всю высоту.
  1. Удалить строки, в которых нет станций.
  2. Скопировать столбцы K и L в модуль на место строк таблицы ridership .
  3. Если где-то возникают ошибки компиляции из-за станций, по которым нет данных, дополнить данные нулями.
  4. Убедиться в предпросмотре, что в статье Список станций Нью-Йоркского метрополитена пассажиропоток показывается корректно во всех строках (и нигде нет слова ERROR).
    1. У тех станций, где есть проблема, проверить, не изменился ли ключ. Изменения могут касаться как названия станции и проходящих через неё маршрутов, так и пропавшего пробела или затесавшегося невидимого символа.
    2. Если ключ изменился оправданно (в связи с изменением названия станции или маршрутов), оставить здесь новое значение и привести в соответствие поле r_key в таблице stations (помня, что один ключ может использоваться для нескольких станций, поскольку этот источник приводит данные не по станциям, а по пересадочным узлам, а кроме того таблица stations разбивает на несколько строк станции, обслуживающие несколько линий).
    3. Расхождения в пробелах и невидимых символах подогнать под то, что сделано в таблице stations.
  5. Не забыть обновить в функции const все значения, связанные с пассажиропотоком.
  6. Если с момента предыдущего обновления изменилось вхождение станций в пересадочные узлы:
    1. Добавить вручную поле comment к тем станциям, которых коснулось это изменение (например:
comment='Без учёта станции «Кортландт-стрит», которая не входила в пересадочный узел.'
у тех, где это уже не актуально, оно удалится само в момент нажатия на Ctrl+V, см. выше).
  1. Убедиться, что в таблице stations проставлено поле r_ast у тех станций, пассажиропоток для которых дан по пересадочным узлам (и не проставлено у остальных; фактически проверить надо только те станции, у которых вхождение в пересадочные узлы изменилось).

csv

Большая таблица, более 400 записей. Содержит ключ (номер станции) и некоторые географические данные для станции. Ключ должен совпадать с полем c_key в таблице stations. Поля:

Имя поля Смысл
boro Боро (Манхэттен, Бруклин…).
struc Структурный тип станции (подземная, эстакадная…).
lat Географическая широта.
lon Географическая долгота.
id Код станции.

Эти данные вынесены в отдельную таблицу, чтобы при обновлении менять только её. Ниже дана инструкция по переносу данных из источника в таблицу.

  1. Сохранить источник в текстовом файле. Убедиться, что у него осталось расширение csv. Открыть его в Экселе.
  2. В предположении, что код станции оказался в столбце A, номер станции (ключ) в столбце C, боро в столбце G, структурный тип в столбце I, географические координаты в столбцах J и K, направления на север и юг в столбцах L и M, а столбец N пуст, занести в столбец O такую формулу:
="['" & C2 & "']={boro='" & G2 & "',struc='" & I2 & "',lat='" & J2 & "',lon='" & K2 & "',id='" & A2 & "',n='" & L2 & "',s='" & M2 & "'}, --" & F2 & " / " & H2
(пример приведён для второй строки) и размножить её на всю высоту.
  1. Удалить строки, в которых нет станций либо (в самом низу) которые относятся к Статен-Айленду.
  2. Скопировать столбцы N и O в модуль на место строк таблицы csv .

Примечание. В файле в источнике добавили поля, связанные с доступностью станций для инвалидов. С одной стороны, можно их учесть, изменив формулу в Экселе следующим образом:

="['" & C2 & "']={boro='" & G2 & "',struc='" & I2 & "',lat='" & J2 & "',lon='" & K2 & "',id='" & A2 & "',n='" & L2 & "',s='" & M2 & "',a='" & N2 & "',an='" & P2 & "',as='" & Q2 & "'}, --" & F2 & " / " & H2

и заменив поле acc в таблице станций на поддержку новых полей в функции station_csv. С одной стороны, подход станет корректнее. С другой стороны, некоторые функции модуля станут забирать больше ресурсов, а каждое изменение будет требовать полного импорта файла.

Словари

routes

Указатель на Пенсильванском вокзале . Стрелки показывают выход к двум станциям метро, не соединённым между собой пересадкой: 34-я улица — Пенсильванский вокзал (слева) и 34-я улица — Пенсильванский вокзал (справа). Названия станций одинаковые, на указателе они не написаны, а обозначены только маршруты поездов: A C E и 1 2 3

Просто список всех маршрутов. Поля:

  • id (оно же индекс элемента таблицы) — обозначение маршрута, используемое в других таблицах;
  • bkg — код цвета фона для строки в списке станций (только для станций, обслуживаемых маршрутами одного цвета; похож на код цвета маршрута, но бледнее);
  • color — код цвета маршрута;
  • label — обозначение маршрута, используемое в имени файла, изображающего буллет маршрута (по умолчанию берётся из id);
  • link — название статьи про маршрут (по умолчанию строится на основе id);
  • name — название маршрута, используемое в текстовой ссылке на статью (по умолчанию берётся из id);
  • tooltip — всплывающая подсказка для буллета (по умолчанию берётся из id);
  • descr — полное название маршрута (экспресс/локальный такой-то линии);
  • onedir — логическое поле , обозначающее, что маршрут идёт только в одну сторону;
  • shuttle — логическое поле , обозначающее, что маршрут является челночным (причём всегда, а не только по ночам);
  • future — логическое поле , обозначающее, что маршрут проектируется;
  • schedule — ссылка на расписание маршрута на сайте MTA (часть ссылки, одинаковая для всех маршрутов, не приводится);
  • second — маршрут, являющийся дополнением данного маршрута (только для челнока Леффертс-бульвара).

icons

Названия графических файлов и текст для отображения комбинации периодов времени для каждого маршрута. Поля:

  • индекс элемента таблицы — комбинация периодов времени (см. выше про таблицу routes_periods и ниже про функцию howstops), для которой подбирается графический файл;
  • icon — часть имени файла (остальная часть у всех файлов достраивается одинаково);
  • tooltip — всплывающая подсказка (объединяется программой с подсказкой для маршрута из предыдущей таблицы);
  • ignore — логическое поле , надо ли игнорировать данную комбинацию периодов времени, когда задан формат без периодов времени (и тогда маршруты, обслуживающие станцию в наименее значительные периоды времени, просто не показываются);
  • comma — логическое поле , надо ли ставить запятую после этого текста перед «и» (например, если в нём есть слово «кроме» и запятая перед ним);
  • alltimes — логическое поле , засчитывается ли данная комбинация как круглосуточная;
  • num — номер по порядку для использования в списке условных обозначений (только в записях, используемых в этом списке);
  • legend — текст для списка условных обозначений (отсутствие поля обозначает, что текст надо брать из поля tooltip).

Если для какой-то комбинации периодов времени в этой таблице отсутствует запись, то все статьи, в которых эта недостающая запись потребовалась, заносятся в Категория:Статьи с незаданным описанием комбинации времён в модуле NYCS DB , а в самих статьях информация, которая должна браться из этой таблицы, заменяется на само обозначение комбинации периодов времени, которое не нашлось в таблице. Если в этой категории окажутся статьи, надо в найти в них это обозначение и дополнить таблицу.

subperiods

Поперечное сечение 4-путного тоннеля. Чертёж 1904 года

Возможные сочетания периодов времени и способов обслуживания станции поездом. Поля:

  • period — период, как в таблице routes_periods;
  • subperiod — аналог поля dir из той же таблицы, но не для сегмента, а для станции.

Возможные значения для поля subperiod:

  • peak — в пиковом направлении;
  • not peak — в направлении, обратном пиковому;
  • some peak — в пиковом направлении, только иногда;
  • пустая строка — в обоих направлениях;
  • 1 и 2 — ограничения по времени, как в таблице.

lines

Информация по тем линиям, по которым она нужна. Поля:

  • индекс элемента таблицы — название статьи, но с маленькой буквы (потому что именно так они написаны в названиях статей о станциях);
  • color — код цвета для квадратика в списке линий для маршрута (квадратик рисуется только для тех линий, у которых цвет совпадает с цветом у маршрута);
  • link — ссылка на статью о соответствующей стволовой линии;
  • shuttle — логическое поле , обозначающее, что этот цвет соответствует челнокам.

colors

Информация по цветам, используемым для обозначения маршрутов и линий. Поля:

  • индекс элемента таблицы — код цвета;
  • text — название цвета на русском языке в творительном падеже.

alts

Вре́менные изменения в маршрутах. Каждая запись соответствует вре́менной схеме, вызванной каким-нибудь ремонтом и т. п. Поля:

  • number — номер от 1 и дальше (не обязательно подряд) в текстовом формате, используемый в поле alt (с добавлением спереди минуса или плюса) в таблицах routes_periods и station_complexes;
  • text — текст, поясняющий смысл временной схемы (с маленькой буквы и без знака препинания в конце, например: «на время ремонта такой-то линии»);
  • refname — имя ссылки для подстановки в <ref name="..."> вместо многоточия;
  • link — ссылка на источник;
  • title — заголовок для ссылки на источник.

Для добавления временной схемы надо:

  • добавить запись здесь, дав ей какой-нибудь номер, которого пока нет;
  • в таблицах routes_periods и station_complexes добавить записи, действующие только по временной схеме, с плюсом (в поле alt значение должно состоять из плюса и здешнего номера);
  • там же снабдить полем alt с минусом записи, действующие только по постоянной схеме, но не действующие по временной (в поле alt значение должно состоять из минуса и здешнего номера);
  • если изменение не сводится только к добавлению или отмене, то скопировать постоянную запись, переправить копию на временный вариант и снабдить постоянную запись полем alt с минусом, а копию полем alt с плюсом.

Для удаления временной схемы надо:

  • удалить её запись здесь (перенумеровывать остальные не нужно);
  • в таблицах routes_periods и station_complexes удалить записи с этим номером и плюсом;
  • там же удалить у оставшихся записей поле alt с этим номером и минусом.

Пример удаления временной схемы можно увидеть в истории правок модуля за 27 апреля 2020 года (там большинство временных изменений было отменено, а одна временная бесплатная пересадка превратилась в постоянную).

Если наступит момент, когда никаких временных схем нет, надо будет оставить одну запись, у которой поле number не задано (то есть nil).

Примечания к таблицам

  1. На линии Джамейка (она наиболее спорная в этом отношении) север сделан на Джамейке.
  2. Заполнено только если true.
  3. В Экселе выделяем столбцы, проведя мышкой по их заголовкам, жмём Ctrl+C, в редакторе модуля стираем все строки таблицы, ставим курсор в начале строки после них, жмём Ctrl+V.

Принцип действия вкратце

Организация движения и прочее IRL

Понятие маршрута

Станция с 3 путями, средний на этой станции платформы не имеет. По боковым путям идут поезда маршрута 7 , а по среднему — <7>

В обычном метрополитене (например, в Москве) поезд идёт по своей линии из конца в конец; рельсовые соединения между линиями если где-то и существуют, то не используются поездами с пассажирами (кроме редких случаев, когда надо перегнать поезд с линии на линию). В Нью-Йорке метрополитен больше похож на трамвайную сеть: маршрут поворачивает с улицы на улицу, где-то идёт вместе с другим маршрутом, а где-то нет. Поэтому есть отдельно понятие маршрута ( route, service, train , см. Список маршрутов Нью-Йоркского метрополитена ) и отдельно понятие линии ( line , см. Список линий Нью-Йоркского метрополитена ). Линия играет роль улицы, причём в большинстве случаев она и проходит по улице (над ней по эстакаде или под ней на глубине подвальных этажей домов).

На практике в АИ, предназначенных для пассажиров, имеется путаница, состоящая в том, что слово линия ( line ) применяется по отношению к маршрутам (пример можно видеть на фотографии с Томасом Прендергастом ниже). Однако английская Википедия, а русская вслед за ней, старается эту путаницу не копировать, потому что хотя пассажирам, возможно, не нужна информация про историю строительства линий (тех линий, которые на самом деле линии), — читателям Википедии она нужна, соответственно для читателей нужно сохранить два разных термина, не смешивающихся между собой.

Экспресс-маршруты

На многих линиях есть 4 пути, причём два из них имеют платформы на всех станциях, а два только на некоторых, и маршруты идут или по одним путям, или по другим. Первые маршруты и пути называются локальными ( local ), а вторые экспрессами ( express ). Станции называются экспресс-станциями, если на них есть остановка экспресс-маршрутов (платформа при экспресс-пути), и локальными — если нет.

Станция
Путь
Экспресс-станция Локальная станция
Экспресс-путь есть остановка нет остановки
Локальный путь есть остановка есть остановка

Как правило все пути идут в одном уровне и экспресс-путями являются два средних, хотя возможны и варианты (они оговорены в статьях о станциях, где это не так). На некоторых линиях есть 3 пути, тогда экспресс-путь один средний и он используется только в пиковом направлении ( peak direction , в сторону Манхэттена утром и обратно вечером).

Другие особенности маршрутов

Помимо локальных и экспресс-маршрутов, имеются маршруты, работающие в паре по принципу скип-стоп ( skip-stop ), — это своего рода экспресс для бедных, поезд проходит без остановки часть станций (а другой поезд другую часть), но двигается по обычным локальным путям, потому что экспресс-путей на линии нет. На момент составления модуля этот принцип актуален для маршрутов J и Z , у которых в режиме скип-стоп при 6 или 7 пропускаемых станциях время на проход всего маршрута сокращается с 52 минут до 47 .

На некоторых маршрутах организовано вилочное движение , когда часть поездов направляется по другой линии (например, из-за ограниченной пропускной способности конечных станций в часы пик).

Некоторые маршруты называются челночными ( shuttle ), однако они не обязательно ходят по одному пути в обе стороны (только у двух из них есть это свойство), но они просто короче обычных маршрутов (эмпирически замечено, что на маршрутах, называемых челночными, не более 8 станций).

Деление маршрутов на номерные и литерные соответствует двум типоразмерам вагонов (а также станций, тоннелей и т. д.) и с логикой данного модуля не связано (хотя и можно заметить, что по каждому сегменту идут маршруты или только номерные, или только литерные).

Расписание как функция времени

Председатель MTA Томас Прендергаст анонсирует ремонт на линии Канарси в 2016 году

И наконец, всё расписание движения маршрутов, со всеми поворотами и делением на локальные и экспрессы, зависит от времени суток и дня недели ( time period ). Есть 5 периодов времени с разным расписанием:

Часы
Дни
00:00—06:30 06:30—09:30 09:30—15:30 15:30—20:00 20:00—24:00
пн — пт ночь часы пик день (кроме
часов пик)
часы пик вечер
сб — вс выходные
(и в праздники тоже действует расписание выходного дня)

В общем случае каждый маршрут на каждом участке своей трассы в каждый период времени в каждом направлении ходит либо локальным, либо экспрессом (либо по схеме скип-стоп с указанием, на каких станциях он останавливается), что и отражено в таблице routes_periods. Линия, по которой ходит всё время один и тот же маршрут, да ещё всегда со всеми остановками, и ещё не переходит на другие линии (линия Канарси и маршрут L ), — это редкость.

Живучесть системы

Общая конфигурация сети метрополитена с большим числом рельсовых соединений между линиями придаёт ей живучесть . При закрытии какого-либо участка на ремонт маршруты изменяются таким образом, чтобы обслуживать всю остальную сеть (в отличие от традиционных метрополитенов, где закрытие одного участка приводит к разрыву сети на две части ). Это даёт метрополитену возможность работать круглосуточно и производить ремонт без остановки работы на ночь, закрывая движение только там, где надо, и направляя поезда в объезд. Для показа в статьях самых долгосрочных временных изменений в маршрутах есть поддержка в модуле. Одним из них на момент создания модуля был ремонт тоннеля 14-й улицы, входящего в вышеупомянутую линию Канарси, имеющую мало возможностей по перенаправлению поездов. вызвал в 2016—2019 годах много дискуссий, завершившихся вмешательством губернатора штата Нью-Йорк и изменением плана таким образом, чтобы движение по линии было максимально сохранено.

Названия станций

Верхние два ряда:
Две станции с названием «36-я улица»,
через которые проходит маршрут R ,
и две станции с названием «7-я авеню»,
через которые проходит маршрут B .
Расстояние между станциями в каждой паре
около 10 км
Нижний ряд:
А это одна и та же станция, но в разные годы

Названия станций повторяются многократно, потому что станции названы в честь улиц (поперечных к линии — точно как трамвайные остановки), а одна улица может пересекать несколько разных линий, на каждой из которых в этом месте есть станция (и плюс в каждом боро могут быть улицы с одинаковыми названиями). Чтобы указать на станцию однозначно, в реальной жизни принято добавлять к её названию либо боро (Манхэттен, Бруклин, Куинс, Бронкс), либо бывшую компанию, к которой станция относилась до объединения 3 частей метрополитена в 1940 году (IRT, BMT, IND), либо маршруты, останавливающиеся на ней, либо кроме поперечной ещё и продольную улицу. Способы с боро и с компанией дают однозначность только иногда. Способ с маршрутами неудобен тем, что маршруты со временем меняются, поэтому, например, не сразу можно понять, что имелось в виду под в 1996—1997 году (станций под названием «Авеню Ю» всего три , но маршрут D сегодня не проходит ни через одну из них). Кроме того, нередка ситуация, когда маршрут останавливается на станции только ночью или только несколько раз в сутки в часы пик, и такой маршрут у такой станции иногда включают в название, а иногда нет.

После терактов 11 сентября были разрушены две станции, расположенные на разных линиях и называвшиеся «Кортландт-стрит»: одна была восстановлена относительно быстро, но затем закрывалась на реконструкцию; другая была признана не подлежащей восстановлению, тоннель был построен заново без станции, а новая станция на этом месте была открыта через 17 лет. Но на протяжении всех этих лет в разных источниках, от новостных сайтов до форумов метрофанов, появлялись формулировки типа «станция „Кортландт-стрит“ разрушена» и «когда она будет восстановлена», без всяких признаков того, что пишущий знает, что этих станций две, и даже в новостях про одну из них нередко размещались фотографии другой.

Отражение реальности в Википедии

Организация статей

Вслед за английской Википедией, статьи про станции как правило названы следующим образом: <название станции> (<название линии>) , где <название линии> совпадает с названием статьи про линию (только в русской Википедии с маленькой буквы). Исключения перечислены ниже, причём если статья названа иначе, то имеется перенаправление , которое названо по тому же принципу и ведёт на соответствующий раздел статьи. Итак, исключения:

  1. Через станцию проходят пути нескольких линий — тогда статья имеет уточнение «Нью-Йоркское метро». Такие случаи перечислены в таблице multiline_stations. В таблице stations в таком случае каждая из частей станции (пути, платформы и маршруты, относящиеся к каждой линии) представлена по отдельности. Одна из этих станций ( Декалб-авеню ) не имеет однозначного распределения путей между линиями, поэтому для неё придумано несколько ухищрений, прокомментированных в этой документации.
  2. Станция входит в пересадочный узел (включающий несколько станций) — тогда статья описывает все станции, входящие в узел, и тоже имеет уточнение «Нью-Йоркское метро». Каждая станция имеет раздел в статье, озаглавленный «Платформа (-мы) такой-то линии». Такие случаи перечислены в таблице station_complexes. Отличие от предыдущего случая в том, что в предыдущем случае станция считается одной, несмотря на то что через неё проходят несколько линий.
  3. Линия разветвляется, на каждой из двух веток имеется станция, обе станции формально относятся к одной линии и при этом соединены пересадкой, то есть входят в пересадочный узел. В таком случае обе станции описываются в одном разделе статьи. Две пары таких станций отмечены в таблице station_complexes комментариями «две станции — один раздел статьи», и они же перечислены в таблице twins. В одной из пар названия станций разные (Чеймберс-стрит и Всемирный торговый центр) и перенаправления названы так, как указано выше, в другой паре названия станций одинаковые (Канал-стрит) и в уточнениях перенаправлений после названия линии есть дополнительные слова.
  4. Ещё один случай отмечен комментарием в таблице station_complexes: «станция с двумя линиями входит в пересадочный узел» (то есть станция одновременно обладает особенностями, названными в двух первых исключениях).

Рекомендуется по возможности пользоваться этими перенаправлениями, а не прямыми ссылками на статьи, чтобы по тексту ссылки всегда было видно, о чём идёт речь.

Условные обозначения


Для обозначения маршрутов и в источниках, и в Википедии используются цветные кружки (для некоторых поставленные на угол квадратики, diamond ) с буквами или цифрами маршрутов («буллеты», bullet ). Для обозначения периодов времени, в которые маршрут останавливается на определённой станции, в Википедии используются специальные значки , найденные в старых расписаниях. Коллеги из английской Википедии смогли найти такие значки не для всех сочетаний периодов времени, поэтому иногда приходится использовать один значок для разных сочетаний (можно надеяться, близких друг другу: см. в таблице icons комментарий «файлы для сочетаний времён есть только досюда»). В выпадающем списке условных обозначений описание к каждому значку сформулировано приблизительно — так, чтобы оно покрыло разные случаи использования каждого значка.

Значок маршрута и значок времён вместе выглядят вот так: 3 — круглосуточно, кроме ночи 3 — круглосуточно, кроме ночи (в данном примере обозначение следует понимать так, что маршрут 3 останавливается на станции круглосуточно, кроме ночи). До создания этого модуля такие обозначения строились при помощи шаблонов (в частности, {{ NYCS when }} ).

Модуль

Таблица stations содержит все станции (причём для станций, указанных выше в исключении 1, даны «псевдостанции», составляющие их). Для каждой станции указано, к какому сегменту она относится с точки зрения этого модуля. Таблица routes_periods имеет ключ, состоящий из маршрута, периода времени и сегмента , и отвечает на вопрос, каким образом данный маршрут ходит по данному сегменту в данный период времени. Порядок станций внутри сегмента в первой таблице и порядок сегментов внутри сочетания маршрута и периода времени во второй таблице соответствуют реальному порядку станций на линиях и реальному порядку их обхода поездом с севера на юг.

Функция howstops возвращает комбинацию периодов времени , в которые заданный маршрут останавливается на заданной станции. Она их возвращает примерно в таком формате: rh(peak)+md+ev, где плюсами разделены собственно периоды времени (как в таблице routes_periods), а в скобках при некоторых из них даны способы обслуживания станции поездом (как в таблице subperiods). Внимание: в переменных, обозначающих способы обслуживания станции поездом, различаются пустая строка (в обоих направлениях) и nil (ни в каком направлении): для пустой строки период времени присутствует в возвращаемом значении, но без добавки в скобках (как md и ev в приведённом примере), а для nil — отсутствует.

Функция howskips (используемая реже) — аналог функции howstops, но для прохода маршрута через станцию без остановки. Функция normalize приводит результат двух предыдущих функций к стандартному виду, чтобы его можно было найти в таблице icons.

Массив arr состоит из элементов, каждый из которых имеет два поля: обозначение маршрута (как в таблице routes_periods) и комбинация периодов времени в вышеуказанном формате. Функция arr_add пополняет этот массив одним сочетанием маршрута и периода времени. Функция arr_text строит на основании этого массива викикод в том или ином формате (см. столбец «Форматирование вывода» в списке функций выше). Большинство доступных снаружи функций модуля построены как цикл, заполняющий массив функцией arr_add, и в конце форматирование массива функцией arr_text.

Массив arrarr (используемый для списка конечных станций маршрута и для списка соседних станций заданной станции) состоит из элементов, каждый из которых имеет два поля: название станции и массив arr. При построении списка соседних станций в некоторых элементах массива заполняется также логическое поле, говорящее о том, что станцию надо показать уменьшенным шрифтом (для закрытых станций и для неиспользуемых соединений).

Функция build_route — большая функция, которая строит список станций для маршрута или двух в различных форматах для разных целей.

Поддержка модуля

Основной случай, когда необходимо вносить изменения в модуль, — это изменения в маршрутах, что требует подправить таблицу routes_periods. Но кроме того:

  • Возможен случай, что на разных частях какого-либо сегмента движение поездов становится разным. Тогда надо разбить этот сегмент на два, придумать новое название для одной из частей и проапдейтить все места в модуле, где упоминается изменённый сегмент, а также все статьи о линиях, где он упоминается (а он может упоминаться не только в статье о самой линии, к которой он относится).
  • Возможен случай, что отменяется движение поездов по какому-либо участку путей (например, там, где M поворачивает с линии Шестой авеню на линию Нассо-стрит). Тогда, чтобы не потерять что-то в «соседних станциях», надо добавить этот участок в таблицу unused_connections.
  • Возможен случай, что затрагивается та часть маршрута, которая связана с развилками. Тогда надо убедиться, что в статье о маршруте правильно показывается схема, и при необходимости исправить поля shape и pattern.
  • Возможен случай, что переименовывается или добавляется станция. Тогда надо привести в соответствие статью либо перенаправление, название станции в модуле (во всех таблицах, включая поле eng в таблице stations), а также обращения к модулю в тех статьях, где данная станция упоминается как параметр при обращении к функциям модуля через шаблоны (для их нахождения можно использовать поиск, и , только надо не напутать с расстановкой трёх типов палок). При переименовании статьи всегда полезно проверить «ссылки сюда» для старого названия.
  • Если будет решено изменить систему уточнений в этих статьях, то названия, использованные в этом модуле, должны сохраниться хотя бы в виде перенаправлений. В тех шаблонах, где в модуль передаётся имя статьи, берущееся по умолчанию, надо будет передавать явным образом имя перенаправления.
  • Есть некоторые места в статьях, которые не поддерживаются модулем, например столбец «Режим работы» в списке маршрутов.

Для помощи в обнаружении статей с ошибками при обращении к этому модулю созданы две категории, которые надо проверять после любого изменения:

На подстраницах модуля есть обращения к некоторым особо критичным из его функций для всех станций, пересадочных узлов, линий и маршрутов. Эти подстраницы можно использовать для предпросмотра при внесении изменений в модуль и в шаблоны, обращающиеся к нему. При желании можно на этих подстраницах менять названия функций, оставляя тот же список станций и т. д.

Примечания к принципу действия

Конец документации, начало модуля

local p = {}
local getArgs=require('Module:Arguments').getArgs
local markyes='[[Файл:Check Mark (89605) - The Noun Project.svg|10px|link=]]'
local markpeak='[[Файл:Pfeil rechts.svg|10px|link=]]'
local markback='[[Файл:Pfeil links.svg|10px|link=]]'
local asterisk='<sup>[[Файл:Asterisk.svg|6px|link=]]</sup>'
local onearrow='|align=center|[[Файл:U+21E9.svg|x20px|link=]]\r\n'
local indent='<br>&nbsp;&nbsp;&nbsp;&nbsp;'
local accicon='[[Файл:Wheelchair symbol.svg|12px|Доступность для маломобильных групп населения|link=]]'
local constricon='[[Файл:UnderCon icon black.svg|20px|Станция строится или проектируется|link=]]'
local closedicon='[[Файл:Closed icon black.svg|20px|Станция закрыта|link=]]'
local demolicon='[[Файл:Closed icon black.svg|20px|Станция снесена|link=]]'
local noperiods='[[Категория:Статьи с незаданным описанием комбинации времён в модуле NYCS DB]]'
local badparams='[[Категория:Статьи с ошибочными параметрами при обращении к модулю NYCS DB]]'
local nostation='<b><span style="color:red;">Станция не определена в модуле NYCS DB</span></b>'..badparams
local icon_nostop='<span title="поезд не останавливается">—</span>'
local grayback='background-color:lightgrey;'
local whiteback='background-color:white;'
local tab='{| cellspacing=0 cellpadding=0'
local r_link='<ref name="mta.info">[https://new.mta.info/document/16136 Annual Subway Ridership]</ref>'
local metrocard='<ref name="virt">Переход требует выхода из метро и повторного входа через турникет, но бесплатный для пассажиров, оплачивающих проезд при помощи {{iw|MetroCard}} или {{iw|OMNY}}.</ref>'
local lastcomma,excludefound
local alt_on=false -- переменная (значение меняется программно, руками не трогать)
local future_on=false -- переменная (значение меняется программно, руками не трогать)
local dbg='' -- переменная для отладки, ее описание пусть тут будет, но версии модуля, где она используется, должны оставаться только в предпросмотре
-- tables
local stations = {
	{segment='Eighth North',station='Инвуд — 207-я улица (линия Восьмой авеню, Ай-эн-ди)',acc='yes',subtype='bumper',eng='Inwood–207th Street',opened='10 сентября 1932',r_key='Inwood-207 St A',c_key='A02'},
	{segment='Eighth North',station='Дайкман-стрит (линия Восьмой авеню, Ай-эн-ди)',eng='Dyckman Street',opened='10 сентября 1932',r_key='Dyckman St A',c_key='A03'},
	{segment='Eighth North',station='190-я улица (линия Восьмой авеню, Ай-эн-ди)',eng='190th Street',opened='10 сентября 1932',r_key='190 St A',c_key='A05'},
	{segment='Eighth North',station='181-я улица (линия Восьмой авеню, Ай-эн-ди)',acc='yes',eng='181st Street',opened='10 сентября 1932',r_key='181 St A',c_key='A06'},
	{segment='Eighth North',station='175-я улица (линия Восьмой авеню, Ай-эн-ди)',acc='yes',eng='175th Street',opened='10 сентября 1932',r_key='175 St A',conn='[[автовокзал Моста Джорджа Вашингтона]]<sup>&#91;[[:en:George Washington Bridge Bus Station|en]]&#93;</sup>',c_key='A07'},
	{segment='Eighth North Middle',station='168-я улица (линия Восьмой авеню, Ай-эн-ди)',type='x',acc='yes',eng='168th Street',opened='10 сентября 1932',r_key='168 St A C 1',r_ast=true,c_key='A09'},
	{segment='Eighth North Middle',station='163-я улица — Амстердам-авеню (линия Восьмой авеню, Ай-эн-ди)',type='o',subtype='under',sep='yes',eng='163rd Street–Amsterdam Avenue',opened='10 сентября 1932',r_key='163 St-Amsterdam Av C',c_key='A10'},
	{segment='Eighth North Middle',station='155-я улица (линия Восьмой авеню, Ай-эн-ди)',type='o',subtype='under',eng='155th Street',opened='10 сентября 1932',r_key='155 St C',c_key='A11'},
	{segment='Eighth 145',station='145-я улица (линия Восьмой авеню, Ай-эн-ди)',type='x',eng='145th Street',opened='10 сентября 1932',r_key='145 St A B C D',c_key='A12'},
	{segment='Eighth',station='135-я улица (линия Восьмой авеню, Ай-эн-ди)',type='o',sep='yes',eng='135th Street',opened='10 сентября 1932',r_key='135 St B C',c_key='A14'},
	{segment='Eighth',station='125-я улица (линия Восьмой авеню, Ай-эн-ди)',type='x',acc='yes',eng='125th Street',opened='10 сентября 1932',r_key='125 St A B C D',c_key='A15'},
	{segment='Eighth',station='116-я улица (линия Восьмой авеню, Ай-эн-ди)',type='o',sep='yes',eng='116th Street',opened='10 сентября 1932',r_key='116 St B C',c_key='A16'},
	{segment='Eighth',station='Катидрал-Паркуэй — 110-я улица (линия Восьмой авеню, Ай-эн-ди)',type='o',eng='Cathedral Parkway–110th Street',opened='10 сентября 1932',r_key='Cathedral Pkwy-110 St B C',c_key='A17'},
	{segment='Eighth',station='103-я улица (линия Восьмой авеню, Ай-эн-ди)',type='o',eng='103rd Street',opened='10 сентября 1932',r_key='103 St B C',c_key='A18'},
	{segment='Eighth',station='96-я улица (линия Восьмой авеню, Ай-эн-ди)',type='o',eng='96th Street',opened='10 сентября 1932',r_key='96 St B C',c_key='A19'},
	{segment='Eighth',station='86-я улица (линия Восьмой авеню, Ай-эн-ди)',type='o',eng='86th Street',opened='10 сентября 1932',r_key='86 St B C',c_key='A20'},
	{segment='Eighth',station='81-я улица — Музей естественной истории (линия Восьмой авеню, Ай-эн-ди)',type='o',eng='81st Street–Museum of Natural History',opened='10 сентября 1932',r_key='81 St-Museum of Natural History B C',c_key='A21'},
	{segment='Eighth',station='72-я улица (линия Восьмой авеню, Ай-эн-ди)',type='o',eng='72nd Street',opened='10 сентября 1932',r_key='72 St B C',c_key='A22'},
	{segment='Eighth',station='59-я улица — Колумбус-Серкл (линия Восьмой авеню, Ай-эн-ди)',type='x',acc='yes',eng='59th Street–Columbus Circle',opened='10 сентября 1932',r_key='59 St-Columbus Circle A B C D 1',r_ast=true,c_key='A24'},
	{segment='Conc North',station='Норвуд — 205-я улица (линия Конкорс, Ай-эн-ди)',eng='Norwood–205th Street',opened='1 июля 1933',r_key='Norwood-205 St D',c_key='D01'},
	{segment='BPB',station='Бедфорд-парк-бульвар (линия Конкорс, Ай-эн-ди)',type='x',subtype='tt',acc='yes',eng='Bedford Park Boulevard',opened='1 июля 1933',r_key='Bedford Park Blvd B D',c_key='D03'},
	{segment='Conc',station='Кингсбридж-роуд (линия Конкорс, Ай-эн-ди)',type='x',subtype='bidi',acc='yes',eng='Kingsbridge Road',opened='1 июля 1933',r_key='Kingsbridge Rd B D',c_key='D04'},
	{segment='Conc',station='Фордем-роуд (линия Конкорс, Ай-эн-ди)',type='x',subtype='bidi',eng='Fordham Road',opened='1 июля 1933',r_key='Fordham Rd B D',conn='[[Фордем (Metro-North)]]<sup>&#91;[[:en:Fordham station|en]]&#93;</sup>',c_key='D05'},
	{segment='Conc',station='182-я — 183-я улицы (линия Конкорс, Ай-эн-ди)',type='o',eng='182nd–183rd Streets',opened='1 июля 1933',r_key='182-183 Sts B D',c_key='D06'},
	{segment='Conc',station='Тремонт-авеню (линия Конкорс, Ай-эн-ди)',type='x',subtype='bidi',eng='Tremont Avenue',opened='1 июля 1933',r_key='Tremont Av B D',c_key='D07'},
	{segment='Conc',station='174-я — 175-я улицы (линия Конкорс, Ай-эн-ди)',type='o',eng='174th–175th Streets',opened='1 июля 1933',r_key='174-175 Sts B D',c_key='D08'},
	{segment='Conc',station='170-я улица (линия Конкорс, Ай-эн-ди)',type='o',eng='170th Street',opened='1 июля 1933',r_key='170 St B D',c_key='D09'},
	{segment='Conc',station='167-я улица (линия Конкорс, Ай-эн-ди)',type='o',eng='167th Street',opened='1 июля 1933',r_key='167 St B D',c_key='D10'},
	{segment='Conc',station='161-я улица — Стадион Янки (линия Конкорс, Ай-эн-ди)',type='o',acc='yes',eng='161st Street–Yankee Stadium',opened='1 июля 1933',below='Бронкс<hr>Тоннель Конкорс<hr>Манхэттен',r_key='161 St-Yankee Stadium B D 4',r_ast=true,conn='[[Янкис — Ист 153-я улица (Metro-North)]]<sup>&#91;[[:en:Yankees–East 153rd Street station|en]]&#93;</sup>',c_key='D11'},
	{segment='Conc',station='155-я улица (линия Конкорс, Ай-эн-ди)',type='o',eng='155th Street',opened='1 июля 1933',r_key='155 St B D',c_key='D12'},
	{segment='Conc 145',station='145-я улица (линия Конкорс, Ай-эн-ди)',type='x',subtype='bidi',eng='145th Street',opened='10 сентября 1932',r_key='145 St A B C D',c_key='D13'},
	{segment='Ast',station='Астория — Дитмарс-бульвар (линия Астория, Би-эм-ти)',type='x',subtype='bumper',eng='Astoria–Ditmars Boulevard',opened='19 июля 1917',r_key='Astoria-Ditmars Blvd N W',c_key='R01'},
	{segment='Ast',station='Астория-бульвар (линия Астория, Би-эм-ти)',type='x',acc='yes',subtype='bidi',eng='Astoria Boulevard',opened='19 июля 1917',r_key='Astoria Blvd N W',c_key='R03'},
	{segment='Ast',station='30-я авеню (линия Астория, Би-эм-ти)',type='o',eng='30th Avenue',opened='19 июля 1917',r_key='30 Av N W',c_key='R04'},
	{segment='Ast',station='Бродвей (линия Астория, Би-эм-ти)',type='o',eng='Broadway',opened='19 июля 1917',r_key='Broadway N W',c_key='R05'},
	{segment='Ast',station='36-я авеню (линия Астория, Би-эм-ти)',type='o',eng='36th Avenue',opened='19 июля 1917',r_key='36 Av N W',c_key='R06'},
	{segment='Ast',station='39-я авеню (линия Астория, Би-эм-ти)',type='o',eng='39th Avenue',opened='19 июля 1917',r_key='39 Av-Dutch Kills N W',c_key='R08'},
	{segment='QBP',station='Куинсборо-Плаза (линия Астория, Би-эм-ти)',eng='Queensboro Plaza',opened='5 ноября 1916',r_key='Queensboro Plaza N W 7',c_key='R09'},
	{segment='179',station='Джамейка — 179-я улица (линия Куинс-бульвара, Ай-эн-ди)',type='x',acc='yes',eng='Jamaica–179th Street',opened='10 декабря 1950',r_key='Jamaica-179 St F',c_key='F01'},
	{segment='179',station='169-я улица (линия Куинс-бульвара, Ай-эн-ди)',type='o',eng='169th Street',opened='24 апреля 1937',r_key='169 St F',c_key='F02'},
	{segment='179',station='Парсонс-бульвар (линия Куинс-бульвара, Ай-эн-ди)',type='x',eng='Parsons Boulevard',opened='24 апреля 1937',r_key='Parsons Blvd F',c_key='F03'},
	{segment='179',station='Сатфин-бульвар (линия Куинс-бульвара, Ай-эн-ди)',type='o',eng='Sutphin Boulevard',opened='24 апреля 1937',r_key='Sutphin Blvd F',c_key='F04'},
	{segment='QB West Tip',station='Седьмая авеню (линия Куинс-бульвара, Ай-эн-ди)',north_back=true,eng='Seventh Avenue',opened='19 августа 1933',r_key='7 Av B D E',c_key='D14'},
	{segment='QB West Tip',station='50-я улица (линия Куинс-бульвара, Ай-эн-ди)',other_type='o',acc='s',sep='yes',eng='50th Street',opened='10 сентября 1932',r_key='50 St C E',c_key='A25'},
	{segment='Eighth 50',station='50-я улица (линия Восьмой авеню, Ай-эн-ди)',type='o',acc='s',sep='yes',eng='50th Street',opened='10 сентября 1932',r_key='50 St C E',c_key='A25'},
	{segment='Eighth South',station='42-я улица — Автовокзал Портового управления (линия Восьмой авеню, Ай-эн-ди)',type='x',acc='yes',eng='42nd Street–Port Authority Bus Terminal',opened='10 сентября 1932',r_key='Times Sq-42 St N Q R W S 1 2 3 7/42 St A C E',r_ast=true,conn='[[автовокзал Портового управления]]<sup>&#91;[[:en:Port Authority Bus Terminal|en]]&#93;</sup>',c_key='A27'},
	{segment='Eighth South',station='34-я улица — Пенсильванский вокзал (линия Восьмой авеню, Ай-эн-ди)',type='x',acc='yes',eng='34th Street–Penn Station',opened='10 сентября 1932',r_key='34 St-Penn Station A C E',conn='[[Пенсильванский вокзал]]',c_key='A28'},
	{segment='Eighth South',station='23-я улица (линия Восьмой авеню, Ай-эн-ди)',type='o',eng='23rd Street',opened='10 сентября 1932',r_key='23 St C E',c_key='A30'},
	{segment='Eighth South',station='14-я улица (линия Восьмой авеню, Ай-эн-ди)',type='x',acc='yes',eng='14th Street',opened='10 сентября 1932',r_key='14 St A C E/8 Av L',r_ast=true,c_key='A31'},
	{segment='Eighth South',station='Уэст Четвёртая улица — Вашингтон-сквер (линия Восьмой авеню, Ай-эн-ди)',type='x',acc='yes',eng='West Fourth Street–Washington Square',opened='10 сентября 1932',r_key='West 4 St-Washington Sq A B C D E F M',conn='[[Девятая улица (PATH)]]<sup>&#91;[[:en:9th Street station (PATH)|en]]&#93;</sup>',c_key='A32'},
	{segment='Spring Canal',station='Спринг-стрит (линия Восьмой авеню, Ай-эн-ди)',type='o',eng='Spring Street',opened='10 сентября 1932',r_key='Spring St C E',c_key='A33'},
	{segment='Spring Canal',station='Канал-стрит (линия Восьмой авеню, Ай-эн-ди)',type='x',subtype='suppress',eng='Canal Street',opened='10 сентября 1932',r_key='Canal St A C E',c_key='A34'},
	{segment='WTC',station='Всемирный торговый центр (линия Восьмой авеню, Ай-эн-ди)',acc='yes',subtype='bumper',eng='World Trade Center',opened='10 сентября 1932',r_key='Chambers St A C/WTC E/Park Pl 2 3/Cortlandt R W',r_ast=true,conn='[[Всемирный торговый центр (PATH)]]<sup>&#91;[[:en:World Trade Center station (PATH)|en]]&#93;</sup>',c_key='E01'},
	{segment='Second',station='96-я улица (линия Второй авеню, Ай-эн-ди)',acc='yes',eng='96th Street',opened='1 января 2017',r_key='96 St Q',c_key='Q05'},
	{segment='Second',station='86-я улица (линия Второй авеню, Ай-эн-ди)',acc='yes',eng='86th Street',opened='1 января 2017',r_key='86 St Q',c_key='Q04'},
	{segment='Second',station='72-я улица (линия Второй авеню, Ай-эн-ди)',acc='yes',eng='72nd Street',opened='1 января 2017',r_key='72 St Q',c_key='Q03'},
	{segment='63 BMT',station='Лексингтон-авеню — 63-я улица (линия 63-й улицы, Би-эм-ти)',acc='yes',eng='Lexington Avenue–63rd Street',opened='29 октября 1989',r_key='Lexington Av-63 St F Q',c_key='B08'},
	{segment='7 Sixth',station='Седьмая авеню (линия Шестой авеню, Ай-эн-ди)',eng='Seventh Avenue',opened='19 августа 1933',r_key='7 Av B D E',c_key='D14'},
	{segment='63 IND',station='21-я улица — Куинсбридж (линия 63-й улицы, Ай-эн-ди)',acc='yes',eng='21st Street–Queensbridge',opened='29 октября 1989',r_key='21 St-Queensbridge F',c_key='B04'},
	{segment='63 IND',station='Остров Рузвельт (линия 63-й улицы, Ай-эн-ди)',acc='yes',eng='Roosevelt Island',opened='29 октября 1989',above='Куинс<hr>Тоннель 63-й улицы<hr>Манхэттен',below='Тоннель 63-й улицы (продолжение)',r_key='Roosevelt Island F',conn='[[Канатная дорога острова Рузвельт]]',c_key='B06'},
	{segment='63 IND Lex',station='Лексингтон-авеню — 63-я улица (линия 63-й улицы, Ай-эн-ди)',acc='yes',eng='Lexington Avenue–63rd Street',opened='29 октября 1989',r_key='Lexington Av-63 St F Q',c_key='B08'},
	{segment='57',station='57-я улица (линия Шестой авеню, Ай-эн-ди)',eng='57th Street',opened='1 июля 1968',r_key='57 St F',c_key='B10'},
	{segment='Bway North',station='Лексингтон-авеню — 59-я улица (линия Бродвея, Би-эм-ти)',eng='Lexington Avenue/59th Street',opened='1 сентября 1919',above='Куинс<hr>Тоннель 60-й улицы<hr>Манхэттен',r_key='Lexington Av N R W/59 St 4 5 6',r_ast=true,conn='[[Канатная дорога острова Рузвельт]]',c_key='R11'},
	{segment='Bway North',station='Пятая авеню — 59-я улица (линия Бродвея, Би-эм-ти)',eng='Fifth Avenue/59th Street',opened='1 сентября 1919',r_key='5 Av-59 St N R W',c_key='R13'},
	{segment='Bway 57',station='57-я улица — Седьмая авеню (линия Бродвея, Би-эм-ти)',type='x',acc='yes',eng='57th Street–Seventh Avenue',opened='10 июля 1919',r_key='57 St-7 Av N Q R W',c_key='R14'},
	{segment='Sixth',station='47-я — 50-я улицы — Рокфеллер-центр (линия Шестой авеню, Ай-эн-ди)',type='x',acc='yes',eng='47th–50th Streets–Rockefeller Center',opened='15 декабря 1940',r_key='47-50 Sts-Rockefeller Center B D F M',c_key='D15'},
	{segment='Sixth',station='42-я улица — Брайант-парк (линия Шестой авеню, Ай-эн-ди)',type='x',eng='42nd Street–Bryant Park',opened='15 декабря 1940',r_key='42 St-Bryant Pk B D F M/5 Av 7',r_ast=true,c_key='D16'},
	{segment='Sixth',station='34-я улица — Геральд-сквер (линия Шестой авеню, Ай-эн-ди)',type='x',acc='yes',eng='34th Street–Herald Square',opened='15 декабря 1940',r_key='34 St-Herald Sq B D F M N Q R W',r_ast=true,conn='[[33-я улица (PATH)]]<sup>&#91;[[:en:33rd Street station (PATH)|en]]&#93;</sup>',c_key='D17'},
	{segment='Sixth',station='23-я улица (линия Шестой авеню, Ай-эн-ди)',type='o',subtype='under',sep='yes',eng='23rd Street',opened='15 декабря 1940',r_key='23 St F M',conn='[[23-я улица (PATH)]]<sup>&#91;[[:en:23rd Street station (PATH)|en]]&#93;</sup>',c_key='D18'},
	{segment='Sixth',station='14-я улица (линия Шестой авеню, Ай-эн-ди)',type='o',subtype='under',eng='14th Street',opened='15 декабря 1940',r_key='14 St F M 1 2 3/6 Av L',r_ast=true,conn='[[14-я улица (PATH)]]<sup>&#91;[[:en:14th Street station (PATH)|en]]&#93;</sup>',c_key='D19'},
	{segment='Sixth',station='Уэст Четвёртая улица — Вашингтон-сквер (линия Шестой авеню, Ай-эн-ди)',type='x',acc='yes',eng='West Fourth Street–Washington Square',opened='10 сентября 1932',r_key='West 4 St-Washington Sq A B C D E F M',conn='[[Девятая улица (PATH)]]<sup>&#91;[[:en:9th Street station (PATH)|en]]&#93;</sup>',c_key='D20'},
	{segment='Broad Laf',station='Бродвей — Лафайетт-стрит (линия Шестой авеню, Ай-эн-ди)',type='x',acc='yes',eng='Broadway–Lafayette Street',opened='1 января 1936',r_key='Broadway-Lafayette St B D F M/Bleecker St 6',r_ast=true,c_key='D21'},
	{segment='Grand',station='Гранд-стрит (линия Шестой авеню, Ай-эн-ди)',eng='Grand Street',opened='26 ноября 1967',r_key='Grand St B D',c_key='D22'},
	{segment='Cross',station='Корт-сквер (линия Кросстаун, Ай-эн-ди)',acc='yes',eng='Court Square',opened='19 августа 1933',r_key='Court Sq E G M 7',r_ast=true,c_key='G22'},
	{segment='Cross',station='21-я улица (линия Кросстаун, Ай-эн-ди)',eng='21st Street',below='Куинс<hr>Тоннель Гринпойнт<hr>Бруклин',opened='19 августа 1933',r_key='21 St G',c_key='G24'},
	{segment='Cross',station='Гринпойнт-авеню (линия Кросстаун, Ай-эн-ди)',acc='yes',eng='Greenpoint Avenue',opened='19 августа 1933',r_key='Greenpoint Av G',c_key='G26'},
	{segment='Cross',station='Нассо-авеню (линия Кросстаун, Ай-эн-ди)',eng='Nassau Avenue',opened='19 августа 1933',r_key='Nassau Av G',c_key='G28'},
	{segment='Cross',station='Метрополитан-авеню (линия Кросстаун, Ай-эн-ди)',eng='Metropolitan Avenue',opened='1 июля 1937',r_key='Lorimer St L/Metropolitan Av G',r_ast=true,c_key='G29'},
	{segment='Cross',station='Бродвей (линия Кросстаун, Ай-эн-ди)',eng='Broadway',opened='1 июля 1937',r_key='Broadway G',c_key='G30'},
	{segment='Cross',station='Флашинг-авеню (линия Кросстаун, Ай-эн-ди)',sep='yes',eng='Flushing Avenue',opened='1 июля 1937',r_key='Flushing Av G',c_key='G31'},
	{segment='Cross',station='Мертл-авеню — Уиллоби-авеню (линия Кросстаун, Ай-эн-ди)',eng='Myrtle–Willoughby Avenues',opened='1 июля 1937',r_key='Myrtle-Willoughby Avs G',c_key='G32'},
	{segment='Cross',station='Бедфорд-авеню — Ностранд-авеню (линия Кросстаун, Ай-эн-ди)',eng='Bedford–Nostrand Avenues',opened='1 июля 1937',r_key='Bedford-Nostrand Avs G',c_key='G33'},
	{segment='Cross',station='Клоссон-авеню (линия Кросстаун, Ай-эн-ди)',eng='Classon Avenue',opened='1 июля 1937',r_key='Classon Av G',c_key='G34'},
	{segment='Cross',station='Клинтон-авеню — Вашингтон-авеню (линия Кросстаун, Ай-эн-ди)',eng='Clinton–Washington Avenues',opened='1 июля 1937',r_key='Clinton-Washington Avs G',c_key='G35'},
	{segment='Cross',station='Фултон-стрит (линия Кросстаун, Ай-эн-ди)',eng='Fulton Street',opened='1 июля 1937',r_key='Fulton St G',c_key='G36'},
	{segment='Cross',station='Хойт-стрит — Скермерхорн-стрит (линия Кросстаун, Ай-эн-ди)',north_back=true,eng='Hoyt–Schermerhorn Streets',opened='9 апреля 1936',r_key='Hoyt-Schermerhorn Sts A C G',c_key='A42'},
	{segment='Eighth South Tip',station='Чеймберс-стрит (линия Восьмой авеню, Ай-эн-ди)',eng='Chambers Street',opened='10 сентября 1932',r_key='Chambers St A C/WTC E/Park Pl 2 3/Cortlandt R W',r_ast=true,conn='[[Всемирный торговый центр (PATH)]]<sup>&#91;[[:en:World Trade Center station (PATH)|en]]&#93;</sup>',c_key='A36'},
	{segment='Eighth South Tip',station='Фултон-стрит (линия Восьмой авеню, Ай-эн-ди)',acc='yes',eng='Fulton Street',opened='1 февраля 1933',below='Манхэттен<hr>Тоннель Кранберри-стрит<hr>Бруклин',r_key='Fulton St A C J Z 2 3 4 5',r_ast=true,conn='[[Всемирный торговый центр (PATH)]]<sup>&#91;[[:en:World Trade Center station (PATH)|en]]&#93;</sup>',c_key='A38'},
	{segment='Eighth South Tip',station='Хай-стрит (линия Восьмой авеню, Ай-эн-ди)',eng='High Street',opened='24 июня 1933',r_key='High St A C',c_key='A40'},
	{segment='Jay F',station='Джей-стрит — Метротек (линия Фултон-стрит, Ай-эн-ди)',acc='yes',eng='Jay Street–MetroTech',opened='1 февраля 1933',r_key='Jay St-MetroTech A C F R',r_ast=true,c_key='A41',
		info='С 1933 года станция имела пересадку на снесённую ныне станцию [[Бридж-стрит — Джей-стрит (линия Мертл-авеню, Би-эм-ти)|Бридж-стрит — Джей-стрит]]<sup>&#91;[[:en:Bridge–Jay Streets station|en]]&#93;</sup>.'},
	{segment='Fulton',station='Хойт-стрит — Скермерхорн-стрит (линия Фултон-стрит, Ай-эн-ди)',type='x',eng='Hoyt–Schermerhorn Streets',opened='9 апреля 1936',r_key='Hoyt-Schermerhorn Sts A C G',c_key='A42'},
	{segment='Fulton',station='Лафайетт-авеню (линия Фултон-стрит, Ай-эн-ди)',type='o',sep='yes',eng='Lafayette Avenue',opened='9 апреля 1936',r_key='Lafayette Av C',c_key='A43'},
	{segment='Fulton',station='Клинтон-авеню — Вашингтон-авеню (линия Фултон-стрит, Ай-эн-ди)',type='o',sep='yes',eng='Clinton–Washington Avenues',opened='9 апреля 1936',r_key='Clinton-Washington Avs C',c_key='A44'},
	{segment='Fulton',station='Франклин-авеню (линия Фултон-стрит, Ай-эн-ди)',type='o',acc='yes',eng='Franklin Avenue',opened='9 апреля 1936',r_key='Franklin Av C S',r_ast=true,c_key='A45'},
	{segment='Fulton',station='Ностранд-авеню (линия Фултон-стрит, Ай-эн-ди)',type='x',eng='Nostrand Avenue',opened='9 апреля 1936',r_key='Nostrand Av A C',c_key='A46'},
	{segment='Fulton',station='Кингстон-авеню — Труп-авеню (линия Фултон-стрит, Ай-эн-ди)',type='o',sep='yes',eng='Kingston–Throop Avenues',opened='9 апреля 1936',r_key='Kingston-Throop Avs C',c_key='A47'},
	{segment='Fulton',station='Ютика-авеню (линия Фултон-стрит, Ай-эн-ди)',type='x',acc='yes',eng='Utica Avenue',opened='9 апреля 1936',r_key='Utica Av A C',c_key='A48'},
	{segment='Fulton',station='Ральф-авеню (линия Фултон-стрит, Ай-эн-ди)',type='o',eng='Ralph Avenue',opened='9 апреля 1936',r_key='Ralph Av C',c_key='A49'},
	{segment='Fulton',station='Рокавей-авеню (линия Фултон-стрит, Ай-эн-ди)',type='o',eng='Rockaway Avenue',opened='9 апреля 1936',r_key='Rockaway Av C',c_key='A50'},
	{segment='Fulton',station='Бродвей-Джанкшен (линия Фултон-стрит, Ай-эн-ди)',type='x',eng='Broadway Junction',opened='30 декабря 1946',r_key='Broadway Junction A C J L Z',r_ast=true,c_key='A51'},
	{segment='Fulton',station='Либерти-авеню (линия Фултон-стрит, Ай-эн-ди)',type='o',eng='Liberty Avenue',opened='28 ноября 1948',r_key='Liberty Av C',c_key='A52'},
	{segment='Fulton',station='Ван-Сиклен-авеню (линия Фултон-стрит, Ай-эн-ди)',type='o',eng='Van Siclen Avenue',opened='28 ноября 1948',r_key='Van Siclen Av C',c_key='A53'},
	{segment='Fulton',station='Шеперд-авеню (линия Фултон-стрит, Ай-эн-ди)',type='o',eng='Shepherd Avenue',opened='28 ноября 1948',r_key='Shepherd Av C',c_key='A54'},
	{segment='Euclid',station='Юклид-авеню (линия Фултон-стрит, Ай-эн-ди)',type='x',acc='yes',eng='Euclid Avenue',opened='28 ноября 1948',r_key='Euclid Av A C',c_key='A55'},
	{segment='Culver North Tip',station='Вторая авеню (линия Шестой авеню, Ай-эн-ди)',eng='Second Avenue',opened='1 января 1936',r_key='2 Av F',c_key='F14'},
	{segment='Culver North Tip',station='Деланси-стрит (линия Шестой авеню, Ай-эн-ди)',eng='Delancey Street',opened='1 января 1936',r_key='Delancey St F/Essex St J M Z',r_ast=true,c_key='F15'},
	{segment='Culver North Tip',station='Ист-Бродвей (линия Шестой авеню, Ай-эн-ди)',eng='East Broadway',opened='1 января 1936',below='Манхэттен<hr>Тоннель Ратджерс-стрит<hr>Бруклин',r_key='East Broadway F',c_key='F16'},
	{segment='Culver North Tip',station='Йорк-стрит (линия Шестой авеню, Ай-эн-ди)',eng='York Street',opened='9 апреля 1936',r_key='York St F',c_key='F18'},
	{segment='Jay',station='Джей-стрит — Метротек (линия Калвер, Ай-эн-ди)',acc='yes',eng='Jay Street–MetroTech',opened='1 февраля 1933',r_key='Jay St-MetroTech A C F R',r_ast=true,c_key='A41',
		info='С 1933 года станция имела пересадку на снесённую ныне станцию [[Бридж-стрит — Джей-стрит (линия Мертл-авеню, Би-эм-ти)|Бридж-стрит — Джей-стрит]]<sup>&#91;[[:en:Bridge–Jay Streets station|en]]&#93;</sup>.'},
	{segment='Culver North',station='Берген-стрит (линия Калвер, Ай-эн-ди)',type='o',sep='yes',eng='Bergen Street',opened='20 марта 1933',r_key='Bergen St F G',c_key='F20'},
	{segment='Culver North',station='Карролл-стрит (линия Калвер, Ай-эн-ди)',type='o',eng='Carroll Street',opened='7 октября 1933',r_key='Carroll St F G',c_key='F21'},
	{segment='Culver North',station='Смит-стрит — Девятая улица (линия Калвер, Ай-эн-ди)',type='o',eng='Smith–Ninth Streets',opened='7 октября 1933',r_key='Smith-9 Sts F G',c_key='F22'},
	{segment='Culver North',station='Четвёртая авеню (линия Калвер, Ай-эн-ди)',type='o',eng='Fourth Avenue',opened='7 октября 1933',r_key='4 Av F G/9 St R',r_ast=true,c_key='F23'},
	{segment='Culver North',station='Седьмая авеню (линия Калвер, Ай-эн-ди)',acc='yes',type='x',eng='Seventh Avenue',opened='7 октября 1933',r_key='7 Av F G',c_key='F24'},
	{segment='Culver North',station='15-я улица — Проспект-парк (линия Калвер, Ай-эн-ди)',type='o',subtype='split',eng='15th Street–Prospect Park',opened='7 октября 1933',r_key='15 St-Prospect Park F G',c_key='F25'},
	{segment='Culver North',station='Форт-Гамильтон-Паркуэй (линия Калвер, Ай-эн-ди)',type='o',subtype='under',eng='Fort Hamilton Parkway',opened='7 октября 1933',r_key='Fort Hamilton Pkwy F G',c_key='F26'},
	{segment='Culver North',station='Черч-авеню (линия Калвер, Ай-эн-ди)',type='x',acc='yes',eng='Church Avenue',opened='7 октября 1933',
		below_stub='+w',below_stub_text='Примыкал ныне снесённый челнок Калвера (см. ниже)',r_key='Church Av F G',c_key='F27'},
	{segment='Culver Middle',station='Дитмас-авеню (линия Калвер, Ай-эн-ди)',type='o',eng='Ditmas Avenue',opened='16 июля 1919',r_key='Ditmas Av F',c_key='F29'},
	{segment='Culver Middle',station='18-я авеню (линия Калвер, Ай-эн-ди)',type='x',eng='18th Avenue',opened='16 марта 1919',r_key='18 Av F',c_key='F30'},
	{segment='Culver',station='Авеню Ай (линия Калвер, Ай-эн-ди)',type='o',eng='Avenue I',opened='16 марта 1919',r_key='Avenue I F',c_key='F31'},
	{segment='Culver',station='Бей-Паркуэй (линия Калвер, Ай-эн-ди)',type='o',eng='Bay Parkway',opened='16 марта 1919',r_key='Bay Pkwy F',c_key='F32'},
	{segment='Culver',station='Авеню Эн (линия Калвер, Ай-эн-ди)',type='o',eng='Avenue N',opened='16 марта 1919',r_key='Avenue N F',c_key='F33'},
	{segment='Culver',station='Авеню Пи (линия Калвер, Ай-эн-ди)',type='o',eng='Avenue P',opened='16 марта 1919',r_key='Avenue P F',c_key='F34'},
	{segment='Culver 1',station='Кингс-Хайвей (линия Калвер, Ай-эн-ди)',type='x',eng='Kings Highway',opened='19 марта 1919',r_key='Kings Hwy F',c_key='F35'},
	{segment='Culver 2',station='Авеню Ю (линия Калвер, Ай-эн-ди)',type='o',eng='Avenue U',opened='10 мая 1919',r_key='Avenue U F',c_key='F36'},
	{segment='Culver 2',station='Авеню Экс (линия Калвер, Ай-эн-ди)',type='o',eng='Avenue X',opened='10 мая 1919',r_key='Avenue X F',c_key='F38'},
	{segment='Culver 2',station='Нептьюн-авеню (линия Калвер, Ай-эн-ди)',type='x',eng='Neptune Avenue',opened='1 мая 1920',r_key='Neptune Av F',c_key='F39'},
	{segment='Culver 2',station='Уэст Восьмая улица — Нью-Йоркский аквариум (линия Калвер, Ай-эн-ди)',type='x',eng='West Eighth Street–New York Aquarium',opened='19 мая 1919',r_key='West 8 St-New York Aquarium F Q',c_key='D42'},
	{segment='Culver 2',station='Кони-Айленд — Стилуэлл-авеню (линия Калвер, Ай-эн-ди)',type='x',acc='yes',north_back=true,eng='Coney Island–Stillwell Avenue',opened='19 мая 1919',r_key='Coney Island-Stillwell Av D F N Q',c_key='D43'},
	{segment='Rock North',station='Акуидакт-Рейстрак (линия Рокавей, Ай-эн-ди)',acc='yes',note='↑',eng='Aqueduct Racetrack',opened='28 июня 1956',orig='1880',r_key='Aqueduct Racetrack A',c_key='H01'},
	{segment='Rock North',station='Акуидакт — Норт-Кондуит-авеню (линия Рокавей, Ай-эн-ди)',eng='Aqueduct–North Conduit Avenue',opened='28 июня 1956',orig='1883',r_key='Aqueduct-North Conduit Av A',c_key='H02'},
	{segment='Rock North',station='Хауард-Бич — Аэропорт имени Джона Кеннеди (линия Рокавей, Ай-эн-ди)',acc='yes',eng='Howard Beach–JFK Airport',opened='28 июня 1956',orig='1913',r_key='Howard Beach-JFK Airport A',conn='[[AirTrain JFK]]<sup>&#91;[[:en:AirTrain JFK|en]]&#93;</sup>',c_key='H03'},
	{segment='BChan',station='Брод-Чаннел (линия Рокавей, Ай-эн-ди)',eng='Broad Channel',opened='28 июня 1956',orig='1880',r_key='Broad Channel A S',c_key='H04'},
	{segment='Rock West',station='Бич 90-я улица (линия Рокавей, Ай-эн-ди)',eng='Beach 90th Street',opened='28 июня 1956',orig='1880',r_key='Beach 90 St A S',c_key='H12'},
	{segment='Rock West',station='Бич 98-я улица (линия Рокавей, Ай-эн-ди)',eng='Beach 98th Street',opened='28 июня 1956',orig='1903',r_key='Beach 98 St A S',c_key='H13'},
	{segment='Rock West',station='Бич 105-я улица (линия Рокавей, Ай-эн-ди)',eng='Beach 105th Street',opened='28 июня 1956',orig='1880',r_key='Beach 105 St A S',c_key='H14'},
	{segment='Rock West',station='Рокавей-парк — Бич 116-я улица (линия Рокавей, Ай-эн-ди)',acc='yes',subtype='bumper',eng='Rockaway Park–Beach 116th Street',opened='28 июня 1956',orig='1882',r_key='Rockaway Park-Beach 116 St A S',c_key='H15'},
	{segment='Fulton East',station='Грант-авеню (линия Фултон-стрит, Ай-эн-ди)',eng='Grant Avenue',old='-',opened='29 апреля 1956',
		below_stub='+w',below_stub_text='Примыкала [[линия Фултон-стрит, Би-эм-ти]]',r_key='Grant Av A',c_key='A57'},
	{segment='Fulton East',station='80-я улица (линия Фултон-стрит, Ай-эн-ди)',oldtype='o',eng='80th Street',
		old='Хадсон-стрит — 80-я улица',oldeng='Hudson Street–80th Street',above='Бруклин<hr>Куинс',opened='25 сентября 1915',r_key='80 St A',c_key='A59'},
	{segment='Fulton East',station='88-я улица (линия Фултон-стрит, Ай-эн-ди)',eng='88th Street',old='Бойд-авеню — 88-я улица',oldeng='Boyd Avenue–88th Street',opened='25 сентября 1915',r_key='88 St A',c_key='A60'},
	{segment='Rock Blvd',station='Рокавей-бульвар (линия Фултон-стрит, Ай-эн-ди)',eng='Rockaway Boulevard',opened='25 сентября 1915',r_key='Rockaway Blvd A',c_key='A61'},
	{segment='Fulton East Tip',station='104-я улица (линия Фултон-стрит, Ай-эн-ди)',type='o',eng='104th Street',old='Оксфорд-авеню — 104-я улица',oldeng='Oxford Avenue–104th Street',opened='25 сентября 1915',r_key='104 St A',c_key='A63'},
	{segment='Fulton East Tip',station='111-я улица (линия Фултон-стрит, Ай-эн-ди)',type='o',eng='111th Street',old='Гринвуд-авеню — 111-я улица',oldeng='Greenwood Avenue–111th Street',opened='25 сентября 1915',r_key='111 St A',c_key='A64'},
	{segment='Fulton East Tip',station='Озон-парк — Леффертс-бульвар (линия Фултон-стрит, Ай-эн-ди)',acc='yes',type='x',subtype='bumper',eng='Ozone Park–Lefferts Boulevard',old='Леффертс-авеню — 119-я улица',oldeng='Lefferts Avenue–119th Street',opened='25 сентября 1915',r_key='Ozone Park-Lefferts Blvd A',c_key='A65'},
	{segment='Rock East',station='Бич 67-я улица (линия Рокавей, Ай-эн-ди)',acc='yes',eng='Beach 67th Street',opened='28 июня 1956',orig='1888',r_key='Beach 67 St-Arverne By The Sea A',c_key='H06'},
	{segment='Rock East',station='Бич 60-я улица (линия Рокавей, Ай-эн-ди)',eng='Beach 60th Street',opened='28 июня 1956',orig='1892',r_key='Beach 60 St A',c_key='H07'},
	{segment='Rock East',station='Бич 44-я улица (линия Рокавей, Ай-эн-ди)',eng='Beach 44th Street',opened='28 июня 1956',orig='1922',r_key='Beach 44 St A',c_key='H08'},
	{segment='Rock East',station='Бич 36-я улица (линия Рокавей, Ай-эн-ди)',eng='Beach 36th Street',opened='28 июня 1956',orig='1885',r_key='Beach 36 St A',c_key='H09'},
	{segment='Rock East',station='Бич 25-я улица (линия Рокавей, Ай-эн-ди)',eng='Beach 25th Street',opened='28 июня 1956',orig='1928',r_key='Beach 25 St A',c_key='H10'},
	{segment='Rock East',station='Фар-Рокавей — Мотт-авеню (линия Рокавей, Ай-эн-ди)',acc='yes',subtype='bumper',eng='Far Rockaway–Mott Avenue',opened='16 января 1958',orig='1869',r_key='Far Rockaway-Mott Av A',conn='[[Фар-Рокавей (LIRR)]]<sup>&#91;[[:en:Far Rockaway station (LIRR)|en]]&#93;</sup>',c_key='H11'},
	{segment='SB',station='Восьмая авеню (линия Си-Бич, Би-эм-ти)',type='o',acc='yes',eng='Eighth Avenue',opened='22 июня 1915',r_key='8 Av N',c_key='N02'},
	{segment='SB',station='Форт-Гамильтон-Паркуэй (линия Си-Бич, Би-эм-ти)',type='o',eng='Fort Hamilton Parkway',opened='22 июня 1915',r_key='Fort Hamilton Pkwy N',c_key='N03'},
	{segment='SB',station='Нью-Ютрект-авеню (линия Си-Бич, Би-эм-ти)',type='o',acc='yes',eng='New Utrecht Avenue',opened='22 июня 1915',r_key='New Utrecht Av N/62 St D',r_ast=true,c_key='N04'},
	{segment='SB',station='18-я авеню (линия Си-Бич, Би-эм-ти)',type='o',eng='18th Avenue',opened='22 июня 1915',r_key='18 Av N',c_key='N05'},
	{segment='SB',station='20-я авеню (линия Си-Бич, Би-эм-ти)',type='o',eng='20th Avenue',opened='22 июня 1915',r_key='20 Av N',c_key='N06'},
	{segment='SB',station='Бей-Паркуэй (линия Си-Бич, Би-эм-ти)',type='o',eng='Bay Parkway',opened='22 июня 1915',r_key='Bay Pkwy N',c_key='N07'},
	{segment='SB',station='Кингс-Хайвей (линия Си-Бич, Би-эм-ти)',type='o',eng='Kings Highway',opened='22 июня 1915',r_key='Kings Hwy N',c_key='N08'},
	{segment='SB',station='Авеню Ю (линия Си-Бич, Би-эм-ти)',type='o',eng='Avenue U',opened='22 июня 1915',r_key='Avenue U N',c_key='N09'},
	{segment='SB',station='86-я улица (линия Си-Бич, Би-эм-ти)',type='o',eng='86th Street',opened='23 августа 1915',r_key='86 St N',c_key='N10'},
	{segment='SB South',station='Кони-Айленд — Стилуэлл-авеню (линия Си-Бич, Би-эм-ти)',type='x',acc='yes',eng='Coney Island–Stillwell Avenue',opened='19 мая 1919',r_key='Coney Island-Stillwell Av D F N Q',c_key='D43'},
	{segment='Arch IND',station='Джамейка-Сентер — Парсонс — Арчер (линия Арчер-авеню, Ай-эн-ди)',acc='yes',eng='Jamaica Center–Parsons/Archer',opened='11 декабря 1988',r_key='Jamaica Center-Parsons-Archer E J Z',c_key='G05'},
	{segment='Arch IND',station='Сатфин-бульвар — Арчер-авеню — Аэропорт имени Джона Кеннеди (линия Арчер-авеню, Ай-эн-ди)',acc='yes',eng='Sutphin Boulevard–Archer Avenue–JFK Airport',opened='11 декабря 1988',r_key='Sutphin Blvd-Archer Av-JFK Airport E J Z',conn='[[AirTrain JFK]]<sup>&#91;[[:en:AirTrain JFK|en]]&#93;</sup>, [[Джамейка (LIRR)]]<sup>&#91;[[:en:Jamaica station|en]]&#93;</sup>',br='Сатфин-бульвар — Арчер-авеню —<br>Аэропорт имени Джона Кеннеди',c_key='G06'},
	{segment='Arch IND VW',station='Джамейка — Ван-Уайк (линия Арчер-авеню, Ай-эн-ди)',acc='yes',eng='Jamaica–Van Wyck',opened='11 декабря 1988',r_key='Jamaica-Van Wyck E',c_key='G07'},
	{segment='QB East',station='Брайарвуд (линия Куинс-бульвара, Ай-эн-ди)',type='o',sep='yes',eng='Briarwood',opened='24 апреля 1937',r_key='Briarwood-Van Wyck Blvd E F',c_key='F05'},
	{segment='QB East',station='Кью-Гарденс — Юнион-Тернпайк (линия Куинс-бульвара, Ай-эн-ди)',type='x',acc='yes',eng='Kew Gardens–Union Turnpike',opened='31 декабря 1936',r_key='Kew Gardens-Union Turnpike E F',c_key='F06'},
	{segment='QB East',station='75-я авеню (линия Куинс-бульвара, Ай-эн-ди)',type='o',sep='yes',eng='75th Avenue',opened='31 декабря 1936',
		below_stub='+w',below_stub_text='Примыкала [[Линия Всемирной выставки, Ай-эн-ди|линия Всемирной выставки]]',r_key='75 Av E F',c_key='F07'},
	{segment='QB',station='Форест-Хилс — 71-я авеню (линия Куинс-бульвара, Ай-эн-ди)',type='x',acc='yes',eng='Forest Hills–71st Avenue',opened='31 декабря 1936',r_key='Forest Hills-71 Av E F M R',c_key='G08'},
	{segment='QB',station='67-я авеню (линия Куинс-бульвара, Ай-эн-ди)',type='o',eng='67th Avenue',opened='31 декабря 1936',r_key='67 Av M R',c_key='G09'},
	{segment='QB',station='63-я драйв — Риго-парк (линия Куинс-бульвара, Ай-эн-ди)',type='o',eng='63rd Drive–Rego Park',opened='31 декабря 1936',r_key='63 Dr-Rego Park M R',c_key='G10'},
	{segment='QB',station='Вудхейвен-бульвар (линия Куинс-бульвара, Ай-эн-ди)',type='o',eng='Woodhaven Boulevard',opened='31 декабря 1936',r_key='Woodhaven Blvd M R',c_key='G11'},
	{segment='QB',station='Гранд-авеню — Ньютаун (линия Куинс-бульвара, Ай-эн-ди)',type='o',eng='Grand Avenue–Newtown',opened='31 декабря 1936',r_key='Grand Av-Newtown M R',c_key='G12'},
	{segment='QB',station='Элмхерст-авеню (линия Куинс-бульвара, Ай-эн-ди)',type='o',eng='Elmhurst Avenue',opened='31 декабря 1936',r_key='Elmhurst Av M R',c_key='G13'},
	{segment='QB',station='Джексон-Хайтс — Рузвельт-авеню (линия Куинс-бульвара, Ай-эн-ди)',type='x',acc='yes',eng='Jackson Heights–Roosevelt Avenue',opened='19 августа 1933',r_key='74-Broadway 7/Jackson Hts-Roosevelt Av E F M R',r_ast=true,c_key='G14'},
	{segment='QB',station='65-я улица (линия Куинс-бульвара, Ай-эн-ди)',type='o',eng='65th Street',opened='19 августа 1933',r_key='65 St M R',c_key='G15'},
	{segment='QB',station='Нортерн-бульвар (линия Куинс-бульвара, Ай-эн-ди)',type='o',subtype='under',sep='yes',eng='Northern Boulevard',opened='19 августа 1933',r_key='Northern Blvd M R',c_key='G16'},
	{segment='QB',station='46-я улица (линия Куинс-бульвара, Ай-эн-ди)',type='o',subtype='split',sep='yes',eng='46th Street',opened='19 августа 1933',r_key='46 St M R',c_key='G18'},
	{segment='QB',station='Стайнуэй-стрит (линия Куинс-бульвара, Ай-эн-ди)',type='o',subtype='split',eng='Steinway Street',opened='19 августа 1933',r_key='Steinway St M R',c_key='G19'},
	{segment='QB',station='36-я улица (линия Куинс-бульвара, Ай-эн-ди)',type='o',sep='yes',eng='36th Street',opened='19 августа 1933',r_key='36 St M R',c_key='G20'},
	{segment='QP',station='Куинс-Плаза (линия Куинс-бульвара, Ай-эн-ди)',type='x',subtype='suppress',acc='yes',eng='Queens Plaza',opened='19 августа 1933',r_key='Queens Plaza E M R',c_key='G21'},
	{segment='Arch BMT',station='Джамейка-Сентер — Парсонс — Арчер (линия Арчер-авеню, Би-эм-ти)',acc='yes',eng='Jamaica Center–Parsons/Archer',opened='11 декабря 1988',r_key='Jamaica Center-Parsons-Archer E J Z',c_key='G05'},
	{segment='Arch BMT',station='Сатфин-бульвар — Арчер-авеню — Аэропорт имени Джона Кеннеди (линия Арчер-авеню, Би-эм-ти)',acc='yes',eng='Sutphin Boulevard–Archer Avenue–JFK Airport',opened='11 декабря 1988',r_key='Sutphin Blvd-Archer Av-JFK Airport E J Z',conn='[[AirTrain JFK]]<sup>&#91;[[:en:AirTrain JFK|en]]&#93;</sup>, [[Джамейка (LIRR)]]<sup>&#91;[[:en:Jamaica station|en]]&#93;</sup>',br='Сатфин-бульвар — Арчер-авеню —<br>Аэропорт имени Джона Кеннеди',c_key='G06'},
	{segment='Jam East',station='121-я улица (линия Джамейка, Би-эм-ти)',type='Z',eng='121st Street',old='-',opened='3 июля 1918',r_key='121 St J Z',c_key='J12'},
	{segment='Jam East',station='111-я улица (линия Джамейка, Би-эм-ти)',type='J',eng='111th Street',old='-',opened='11 июня 1917',r_key='111 St J',c_key='J13'},
	{segment='Jam East',station='104-я улица (линия Джамейка, Би-эм-ти)',type='Z',eng='104th Street',old='-',opened='11 июня 1917',r_key='104 St J Z',c_key='J14'},
	{segment='Jam East',station='Вудхейвен-бульвар (линия Джамейка, Би-эм-ти)',type='x',subtype='suppress',eng='Woodhaven Boulevard',old='-',opened='11 июня 1917',r_key='Woodhaven Blvd J Z',c_key='J15'},
	{segment='Jam East',station='85-я улица — Форест-Паркуэй (линия Джамейка, Би-эм-ти)',type='J',eng='85th Street–Forest Parkway',old='-',opened='11 июня 1917',r_key='85 St-Forest Pkwy J',c_key='J16'},
	{segment='Jam East',station='75-я улица — Элдертс-Лейн (линия Джамейка, Би-эм-ти)',type='Z',eng='75th Street–Elderts Lane',old='-',below='Куинс<hr>Бруклин',opened='11 июня 1917',r_key='75 St-Elderts Ln J Z',c_key='J17'},
	{segment='Jam East',station='Сайпресс-Хилс (линия Джамейка, Би-эм-ти)',type='J',eng='Cypress Hills',opened='30 мая 1893',r_key='Cypress Hills J',c_key='J19'},
	{segment='Jam East',station='Кресент-стрит (линия Джамейка, Би-эм-ти)',type='x',subtype='suppress',eng='Crescent Street',opened='30 мая 1893',r_key='Crescent St J Z',c_key='J20'},
	{segment='Jam East',station='Норвуд-авеню (линия Джамейка, Би-эм-ти)',type='Z',eng='Norwood Avenue',opened='30 мая 1893',r_key='Norwood Av J Z',c_key='J21'},
	{segment='Jam East',station='Кливленд-стрит (линия Джамейка, Би-эм-ти)',type='J',eng='Cleveland Street',opened='30 мая 1893',r_key='Cleveland St J',c_key='J22'},
	{segment='Jam East',station='Ван-Сиклен-авеню (линия Джамейка, Би-эм-ти)',type='Z',eng='Van Siclen Avenue',opened='3 декабря 1885',r_key='Van Siclen Av J Z',c_key='J23'},
	{segment='Jam East',station='Алабама-авеню (линия Джамейка, Би-эм-ти)',type='x',subtype='suppress',eng='Alabama Avenue',opened='5 сентября 1885',r_key='Alabama Av J',c_key='J24'},
	{segment='Jam BJ',station='Бродвей-Джанкшен (линия Джамейка, Би-эм-ти)',type='x',subtype='suppress',north_back=true,eng='Broadway Junction',old='Истерн-Паркуэй',oldeng='Eastern Parkway',opened='14 июня 1885',r_key='Broadway Junction A C J L Z',r_ast=true,c_key='J27',
		transfer='была пересадка на станцию [[Бродвей-Джанкшен (линия Канарси, Би-эм-ти)|Бродвей-Джанкшен]]<br>(действующая и сегодня) и на снесённую ныне<br>станцию [[Манхэттен-Джанкшен (линия Фултон-стрит, Би-эм-ти)|Манхэттен-Джанкшен]]<sup>&#91;[[:en:Manhattan Junction (BMT Fulton Street Line)|en]]&#93;</sup>',
		info='Станция имела пересадку на снесённую ныне станцию [[Манхэттен-Джанкшен (линия Фултон-стрит, Би-эм-ти)|Манхэттен-Джанкшен]]<sup>&#91;[[:en:Manhattan Junction (BMT Fulton Street Line)|en]]&#93;</sup>.'},
	{segment='Jam',station='Чонси-стрит (линия Джамейка, Би-эм-ти)',type='Z',oldtype='o',eng='Chauncey Street',opened='18 июля 1885',r_key='Chauncey St J Z',c_key='J28'},
	{segment='Jam',station='Холси-стрит (линия Джамейка, Би-эм-ти)',type='J',oldtype='o',eng='Halsey Street',opened='19 августа 1885',r_key='Halsey St J',c_key='J29'},
	{segment='Jam',station='Гейтс-авеню (линия Джамейка, Би-эм-ти)',type='Z',oldtype='o',eng='Gates Avenue',opened='13 мая 1885',
		below_stub='-e',below_stub_text='Ответвлялась [[линия Лексингтон-авеню, Би-эм-ти]]',r_key='Gates Av J Z',c_key='J30'},
	{segment='Jam',station='Косцюшко-стрит (линия Джамейка, Би-эм-ти)',type='J',oldtype='o',eng='Kosciuszko Street',old='-',opened='22 июня 1888',r_key='Kosciuszko St J',c_key='J31'},
	{segment='QB West',station='Корт-сквер — 23-я улица (линия Куинс-бульвара, Ай-эн-ди)',acc='s',eng='Court Square–23rd Street',opened='28 августа 1939',below='Куинс<hr>Тоннель 53-й улицы<hr>Манхэттен',r_key='Court Sq E G M 7',r_ast=true,c_key='F09'},
	{segment='QB West',station='Лексингтон-авеню — 53-я улица (линия Куинс-бульвара, Ай-эн-ди)',acc='yes',eng='Lexington Avenue–53rd Street',opened='19 августа 1933',r_key='Lexington Av-53 St E M/51 St 6',r_ast=true,c_key='F11'},
	{segment='QB West',station='Пятая авеню — 53-я улица (линия Куинс-бульвара, Ай-эн-ди)',eng='Fifth Avenue/53rd Street',opened='19 августа 1933',r_key='5 Av-53 St E M',c_key='F12'},
	{segment='Bway 49',station='49-я улица (линия Бродвея, Би-эм-ти)',type='o',acc='n',sep='yes',eng='49th Street',opened='10 июля 1919',r_key='49 St N R W',c_key='R15'},
	{segment='Bway',station='Таймс-сквер — 42-я улица (линия Бродвея, Би-эм-ти)',type='x',acc='yes',eng='Times Square–42nd Street',opened='5 января 1918',r_key='Times Sq-42 St N Q R W S 1 2 3 7/42 St A C E',r_ast=true,conn='[[автовокзал Портового управления]]<sup>&#91;[[:en:Port Authority Bus Terminal|en]]&#93;</sup>',c_key='R16'},
	{segment='Bway',station='34-я улица — Геральд-сквер (линия Бродвея, Би-эм-ти)',type='x',acc='yes',eng='34th Street–Herald Square',opened='5 января 1918',r_key='34 St-Herald Sq B D F M N Q R W',r_ast=true,conn='[[33-я улица (PATH)]]<sup>&#91;[[:en:33rd Street station (PATH)|en]]&#93;</sup>',c_key='R17'},
	{segment='Bway',station='28-я улица (линия Бродвея, Би-эм-ти)',type='o',sep='yes',eng='28th Street',opened='5 января 1918',r_key='28 St R W',c_key='R18'},
	{segment='Bway',station='23-я улица (линия Бродвея, Би-эм-ти)',type='o',sep='yes',eng='23rd Street',opened='5 января 1918',r_key='23 St R W',c_key='R19'},
	{segment='Bway',station='14-я улица — Юнион-сквер (линия Бродвея, Би-эм-ти)',type='x',acc='yes',eng='14th Street–Union Square',opened='4 сентября 1917',r_key='14 St-Union Sq L N Q R W 4 5 6',r_ast=true,c_key='R20'},
	{segment='Bway',station='Восьмая улица — Нью-Йоркский университет (линия Бродвея, Би-эм-ти)',type='o',sep='yes',eng='Eighth Street–New York University',opened='4 сентября 1917',r_key='8 St-New York University R W',c_key='R21'},
	{segment='Bway',station='Принс-стрит (линия Бродвея, Би-эм-ти)',type='o',sep='yes',eng='Prince Street',opened='4 сентября 1917',r_key='Prince St R W',c_key='R22'},
	{segment='Myrtle',station='Мидл-Виллидж — Метрополитан-авеню (линия Мертл-авеню, Би-эм-ти)',acc='yes',subtype='bumper',eng='Middle Village–Metropolitan Avenue',opened='9 августа 1915',r_key='Middle Village-Metropolitan Av M',c_key='M01'},
	{segment='Myrtle',station='Фреш-Понд-роуд (линия Мертл-авеню, Би-эм-ти)',eng='Fresh Pond Road',opened='9 августа 1915',r_key='Fresh Pond Rd M',c_key='M04'},
	{segment='Myrtle',station='Форест-авеню (линия Мертл-авеню, Би-эм-ти)',eng='Forest Avenue',opened='9 августа 1915',r_key='Forest Av M',c_key='M05'},
	{segment='Myrtle',station='Сенека-авеню (линия Мертл-авеню, Би-эм-ти)',eng='Seneca Avenue',below='Куинс<hr>Бруклин',opened='9 августа 1915',r_key='Seneca Av M',c_key='M06'},
	{segment='Myrtle',station='Мертл-авеню — Уайкофф-авеню (линия Мертл-авеню, Би-эм-ти)',acc='yes',eng='Myrtle–Wyckoff Avenues',opened='19 декабря 1889',r_key='Myrtle-Wyckoff Avs L M',r_ast=true,c_key='M08'},
	{segment='Myrtle',station='Никкербоккер-авеню (линия Мертл-авеню, Би-эм-ти)',eng='Knickerbocker Avenue',opened='19 декабря 1889',r_key='Knickerbocker Av M',c_key='M09'},
	{segment='Myrtle',station='Сентрал-авеню (линия Мертл-авеню, Би-эм-ти)',eng='Central Avenue',opened='19 декабря 1889',r_key='Central Av M',c_key='M10'},
	{segment='Myrtle Av',station='Мертл-авеню (линия Джамейка, Би-эм-ти)',type='x',subtype='bidi',eng='Myrtle Avenue',opened='25 июня 1888',r_key='Myrtle Av J M Z',c_key='M11',
		info='Верхний уровень станции, закрытый ныне, был станцией «Бродвей» на продолжении [[Линия Мертл-авеню, Би-эм-ти|линии Мертл-авеню]] на юг.'},
	{segment='Jam West',station='Флашинг-авеню (линия Джамейка, Би-эм-ти)',type='o',acc='yes',eng='Flushing Avenue',opened='25 июня 1888',r_key='Flushing Av J M',c_key='M12'},
	{segment='Jam West',station='Лоример-стрит (линия Джамейка, Би-эм-ти)',type='o',eng='Lorimer Street',opened='25 июня 1888',r_key='Lorimer St J M',c_key='M13'},
	{segment='Jam West',station='Хьюс-стрит (линия Джамейка, Би-эм-ти)',type='o',eng='Hewes Street',opened='25 июня 1888',r_key='Hewes St J M',c_key='M14'},
	{segment='Jam West',station='Марси-авеню (линия Джамейка, Би-эм-ти)',type='x',subtype='suppress',acc='yes',sep='yes',eng='Marcy Avenue',opened='25 июня 1888',r_key='Marcy Av J M Z',c_key='M16'},
	{segment='Essex',station='Эссекс-стрит (линия Нассо-стрит, Би-эм-ти)',north_back=true,eng='Essex Street',opened='16 сентября 1908',above='Бруклин<hr>[[Вильямсбургский мост]]<hr>Манхэттен',r_key='Delancey St F/Essex St J M Z',r_ast=true,c_key='M18'},
	{segment='Nassau',station='Бауэри (линия Нассо-стрит, Би-эм-ти)',eng='Bowery',opened='4 августа 1913',r_key='Bowery J Z',c_key='M19'},
	{segment='Nassau',station='Канал-стрит (линия Нассо-стрит, Би-эм-ти)',eng='Canal Street',opened='4 августа 1913',r_key='Canal St J N Q R W Z 6',r_ast=true,c_key='M20'},
	{segment='Nassau',station='Чеймберс-стрит (линия Нассо-стрит, Би-эм-ти)',acc='yes',eng='Chambers Street',opened='4 августа 1913',
		above_stub='+e',above_stub_text='Присоединялись пути от [[Манхэттенский мост|Манхэттенского моста]]',r_key='Brooklyn Bridge-City Hall 4 5 6/Chambers St J Z',r_ast=true,c_key='M21'},
	{segment='Nassau',station='Фултон-стрит (линия Нассо-стрит, Би-эм-ти)',acc='yes',eng='Fulton Street',opened='30 мая 1931',r_key='Fulton St A C J Z 2 3 4 5',r_ast=true,conn='[[Всемирный торговый центр (PATH)]]<sup>&#91;[[:en:World Trade Center station (PATH)|en]]&#93;</sup>',c_key='M22'},
	{segment='Nassau',station='Брод-стрит (линия Нассо-стрит, Би-эм-ти)',eng='Broad Street',opened='30 мая 1931',r_key='Broad St J Z',c_key='M23'},
	{segment='Canal Bridge',station='Канал-стрит (линия Бродвея, Би-эм-ти, через мост)',eng='Canal Street',opened='4 сентября 1917',r_key='Canal St J N Q R W Z 6',r_ast=true,c_key='Q01'},
	{segment='Bway South',station='Канал-стрит (линия Бродвея, Би-эм-ти, через тоннель)',eng='Canal Street',opened='5 января 1918',r_key='Canal St J N Q R W Z 6',r_ast=true,c_key='R23'},
	{segment='Bway South',station='Сити-холл (линия Бродвея, Би-эм-ти)',eng='City Hall',opened='5 января 1918',r_key='City Hall R W',c_key='R24'},
	{segment='Bway South',station='Кортландт-стрит (линия Бродвея, Би-эм-ти)',acc='yes',sep='yes',eng='Cortlandt Street',opened='5 января 1918',r_key='Chambers St A C/WTC E/Park Pl 2 3/Cortlandt R W',conn='[[Всемирный торговый центр (PATH)]]<sup>&#91;[[:en:World Trade Center station (PATH)|en]]&#93;</sup>',r_ast=true,c_key='R25'},
	{segment='Bway South',station='Ректор-стрит (линия Бродвея, Би-эм-ти)',sep='yes',eng='Rector Street',opened='5 января 1918',r_key='Rector St R W',c_key='R26'},
	{segment='Whall',station='Уайтхолл-стрит — Саут-Ферри (линия Бродвея, Би-эм-ти)',type='x',subtype='tt',eng='Whitehall Street–South Ferry',opened='20 сентября 1918',r_key='South Ferry 1/Whitehall St R W',r_ast=true,conn='[[Уайтхолл (паромный терминал)|терминал Уайтхолл]]<sup>&#91;[[:en:Staten Island Ferry Whitehall Terminal|en]]&#93;</sup> ([[Статен-Айленд Ферри]])',c_key='R27'},
	{segment='Fourth North Tip',station='Корт-стрит (линия Четвёртой авеню, Би-эм-ти)',eng='Court Street',opened='11 марта 1920',above='Манхэттен<hr>Тоннель Монтегю-стрит<hr>Бруклин',r_key='Court St R/Borough Hall 2 3 4 5',r_ast=true,c_key='R28'},
	{segment='Fourth North Tip',station='Джей-стрит — Метротек (линия Четвёртой авеню, Би-эм-ти)',acc='yes',eng='Jay Street–MetroTech',opened='11 марта 1920',r_key='Jay St-MetroTech A C F R',r_ast=true,c_key='R29'},
	{segment='Brigh DK',station='Декалб-авеню (линия Брайтон, Би-эм-ти)',other_type='o',acc='yes',eng='DeKalb Avenue',opened='19 июня 1915',r_key='DeKalb Av B Q R',c_key='R30'},
	{segment='Brigh North',station='Атлантик-авеню — Барклайс-центр (линия Брайтон, Би-эм-ти)',acc='yes',eng='Atlantic Avenue–Barclays Center',opened='1 августа 1920',r_key='Atlantic Av-Barclays Ctr B D N Q R 2 3 4 5',r_ast=true,conn='[[Атлантик (вокзал)|вокзал Атлантик]]<sup>&#91;[[:en:Atlantic Terminal|en]]&#93;</sup>',c_key='D24',
		info='Станция имела пересадку на снесённую ныне станцию [[Атлантик-авеню (линия Пятой авеню, Би-эм-ти)|Атлантик-авеню]]<sup>&#91;[[:en:Atlantic Avenue (BMT Fifth Avenue Line)|en]]&#93;</sup>.'},
	{segment='Brigh North',station='Седьмая авеню (линия Брайтон, Би-эм-ти)',eng='Seventh Avenue',opened='1 августа 1920',r_key='7 Av B Q',c_key='D25'},
	{segment='Fourth DK',station='Декалб-авеню (линия Четвёртой авеню, Би-эм-ти)',type='o',acc='yes',eng='DeKalb Avenue',opened='19 июня 1915',r_key='DeKalb Av B Q R',c_key='R30'},
	{segment='Fourth North',station='Атлантик-авеню — Барклайс-центр (линия Четвёртой авеню, Би-эм-ти)',type='x',acc='yes',eng='Atlantic Avenue–Barclays Center',opened='13 сентября 1915',r_key='Atlantic Av-Barclays Ctr B D N Q R 2 3 4 5',r_ast=true,conn='[[Атлантик (вокзал)|вокзал Атлантик]]<sup>&#91;[[:en:Atlantic Terminal|en]]&#93;</sup>',c_key='R31',
		info='Станция имела пересадку на снесённую ныне станцию [[Атлантик-авеню (линия Пятой авеню, Би-эм-ти)|Атлантик-авеню]]<sup>&#91;[[:en:Atlantic Avenue (BMT Fifth Avenue Line)|en]]&#93;</sup>.'},
	{segment='Fourth North',station='Юнион-стрит (линия Четвёртой авеню, Би-эм-ти)',type='o',sep='yes',eng='Union Street',opened='13 сентября 1915',r_key='Union St R',c_key='R32'},
	{segment='Fourth North',station='Девятая улица (линия Четвёртой авеню, Би-эм-ти)',type='o',eng='Ninth Street',opened='13 сентября 1915',r_key='4 Av F G/9 St R',r_ast=true,c_key='R33'},
	{segment='Fourth North',station='Проспект-авеню (линия Четвёртой авеню, Би-эм-ти)',type='o',sep='yes',eng='Prospect Avenue',opened='13 сентября 1915',r_key='Prospect Av R',c_key='R34'},
	{segment='Fourth North',station='25-я улица (линия Четвёртой авеню, Би-эм-ти)',type='o',sep='yes',eng='25th Street',opened='13 сентября 1915',r_key='25 St R',c_key='R35'},
	{segment='Fourth North',station='36-я улица (линия Четвёртой авеню, Би-эм-ти)',type='x',eng='36th Street',opened='13 сентября 1915',r_key='36 St D N R',c_key='R36'},
	{segment='Fourth',station='45-я улица (линия Четвёртой авеню, Би-эм-ти)',type='o',eng='45th Street',opened='13 сентября 1915',r_key='45 St R',c_key='R39'},
	{segment='Fourth',station='53-я улица (линия Четвёртой авеню, Би-эм-ти)',type='o',eng='53rd Street',opened='13 сентября 1915',r_key='53 St R',c_key='R40'},
	{segment='Fourth',station='59-я улица (линия Четвёртой авеню, Би-эм-ти)',type='x',acc='yes',eng='59th Street',opened='13 сентября 1915',r_key='59 St N R',c_key='R41'},
	{segment='Fourth South',station='Бей-Ридж-авеню (линия Четвёртой авеню, Би-эм-ти)',eng='Bay Ridge Avenue',opened='13 сентября 1915',r_key='Bay Ridge Av R',c_key='R42'},
	{segment='Fourth South',station='77-я улица (линия Четвёртой авеню, Би-эм-ти)',eng='77th Street',opened='14 апреля 1916',r_key='77 St R',c_key='R43'},
	{segment='Fourth South',station='86-я улица (линия Четвёртой авеню, Би-эм-ти)',acc='yes',eng='86th Street',opened='14 апреля 1916',r_key='86 St R',c_key='R44'},
	{segment='Fourth South',station='Бей-Ридж — 95-я улица (линия Четвёртой авеню, Би-эм-ти)',subtype='bumper',eng='Bay Ridge–95th Street',opened='27 октября 1925',r_key='Bay Ridge-95 St R',c_key='R45'},
	{segment='Franklin',station='Франклин-авеню (линия Франклин-авеню, Би-эм-ти)',acc='yes',eng='Franklin Avenue',opened='15 августа 1896',oldlink='Франклин-авеню (линия Фултон-стрит, Би-эм-ти)',
		below_stub='-e',below_stub_text='Ответвлялась [[линия Фултон-стрит, Би-эм-ти]]',below_key_noreincarn='Dean',r_key='Franklin Av C S',r_ast=true,c_key='S01',
		transfer='станция имела перпендикулярные платформы<br>для эстакадной линии Фултон-стрит<br>и для [[линия Брайтон, Би-эм-ти|линии Брайтон]]<br>(ныне эта её часть относится к [[линия Франклин-авеню, Би-эм-ти|линии Франклин-авеню]])',
		info='Станция имела перпендикулярные платформы для [[Линия Фултон-стрит, Би-эм-ти|эстакадной линии Фултон-стрит]] и для [[линия Брайтон, Би-эм-ти|линии Брайтон]] (ныне эта её часть относится к [[линия Франклин-авеню, Би-эм-ти|линии Франклин-авеню]]).'},
	{segment='Franklin',station='Парк-Плейс (линия Франклин-авеню, Би-эм-ти)',acc='yes',eng='Park Place',old='-',opened='19 июня 1899',r_key='Park Pl S',c_key='S03'},
	{segment='Franklin',station='Ботанический сад (линия Франклин-авеню, Би-эм-ти)',eng='Botanic Garden',old='-',opened='19 июня 1899',r_key='Franklin Av 2 3 4 5/Botanic Garden S',r_ast=true,c_key='S04',
		info='Станция была перемещена севернее в 1928 году.'},
	{segment='Franklin',station='Проспект-парк (линия Франклин-авеню, Би-эм-ти)',acc='yes',eng='Prospect Park',old='-',opened='2 июля 1878',r_key='Prospect Park B Q S',c_key='D26'},
	{segment='PP',station='Проспект-парк (линия Брайтон, Би-эм-ти)',acc='yes',eng='Prospect Park',opened='2 июля 1878',r_key='Prospect Park B Q S',c_key='D26'},
	{segment='Brigh',station='Парксайд-авеню (линия Брайтон, Би-эм-ти)',type='o',eng='Parkside Avenue',opened='4 апреля 1905',r_key='Parkside Av Q',c_key='D27'},
	{segment='Brigh',station='Черч-авеню (линия Брайтон, Би-эм-ти)',type='x',eng='Church Avenue',opened='2 июля 1878',r_key='Church Av B Q',c_key='D28'},
	{segment='Brigh',station='Беверлей-роуд (линия Брайтон, Би-эм-ти)',type='o',eng='Beverley Road',opened='1900',r_key='Beverley Rd Q',c_key='D29'},
	{segment='Brigh',station='Кортелью-роуд (линия Брайтон, Би-эм-ти)',type='o',eng='Cortelyou Road',opened='23 августа 1907',r_key='Cortelyou Rd Q',c_key='D30'},
	{segment='Brigh',station='Ньюкерк-Плаза (линия Брайтон, Би-эм-ти)',type='x',eng='Newkirk Plaza',opened='23 августа 1907',r_key='Newkirk Plaza B Q',c_key='D31'},
	{segment='Brigh',station='Авеню Эйч (линия Брайтон, Би-эм-ти)',type='o',acc='yes',eng='Avenue H',opened='23 августа 1907',r_key='Avenue H Q',c_key='D32'},
	{segment='Brigh',station='Авеню Джей (линия Брайтон, Би-эм-ти)',type='o',eng='Avenue J',opened='23 августа 1907',r_key='Avenue J Q',c_key='D33'},
	{segment='Brigh',station='Авеню Эм (линия Брайтон, Би-эм-ти)',type='o',eng='Avenue M',opened='23 августа 1907',r_key='Avenue M Q',c_key='D34'},
	{segment='Brigh',station='Кингс-Хайвей (линия Брайтон, Би-эм-ти)',type='x',acc='yes',eng='Kings Highway',opened='23 августа 1907',r_key='Kings Hwy B Q',c_key='D35'},
	{segment='Brigh',station='Авеню Ю (линия Брайтон, Би-эм-ти)',type='o',eng='Avenue U',opened='23 августа 1907',r_key='Avenue U Q',c_key='D37'},
	{segment='Brigh',station='Нек-роуд (линия Брайтон, Би-эм-ти)',type='o',eng='Neck Road',opened='23 августа 1907',r_key='Neck Rd Q',c_key='D38'},
	{segment='Brigh',station='Шипсхед-Бей (линия Брайтон, Би-эм-ти)',type='x',eng='Sheepshead Bay',opened='23 августа 1907',r_key='Sheepshead Bay B Q',c_key='D39'},
	{segment='Brigh',station='Брайтон-Бич (линия Брайтон, Би-эм-ти)',type='x',eng='Brighton Beach',opened='2 июля 1878',r_key='Brighton Beach B Q',c_key='D40'},
	{segment='Brigh South',station='Ошен-Паркуэй (линия Брайтон, Би-эм-ти)',eng='Ocean Parkway',opened='22 апреля 1917',r_key='Ocean Pkwy Q',c_key='D41'},
	{segment='Brigh South',station='Уэст Восьмая улица — Нью-Йоркский аквариум (линия Брайтон, Би-эм-ти)',eng='West Eighth Street–New York Aquarium',opened='19 мая 1919',r_key='West 8 St-New York Aquarium F Q',c_key='D42'},
	{segment='Brigh South',station='Кони-Айленд — Стилуэлл-авеню (линия Брайтон, Би-эм-ти)',acc='yes',north_back=true,eng='Coney Island–Stillwell Avenue',opened='19 мая 1919',r_key='Coney Island-Stillwell Av D F N Q',c_key='D43'},
	{segment='WE',station='Девятая авеню (линия Уэст-Энд, Би-эм-ти)',type='x',eng='Ninth Avenue',opened='24 июня 1916',
		above_stub='+e',above_stub_text='Примыкала [[линия Пятой авеню, Би-эм-ти]]',below_stub='-e',below_stub_text='Ответвлялась [[линия Калвер, Би-эм-ти]]',oldlink='Девятая авеню (линия Калвер, Би-эм-ти)',r_key='9 Av D',c_key='B12',
		transfer='верхний уровень станции обслуживал<br>существующую ныне [[Линия Уэст-Энд, Би-эм-ти|линию Уэст-Энд]],<br>а закрытый ныне нижний — линию Калвер',
		info='Нижний уровень станции, закрытый ныне, обслуживал [[Линия Калвер, Би-эм-ти|линию Калвер]].'},
	{segment='WE',station='Форт-Гамильтон-Паркуэй (линия Уэст-Энд, Би-эм-ти)',type='o',eng='Fort Hamilton Parkway',old='-',opened='24 июня 1916',r_key='Fort Hamilton Pkwy D',c_key='B13'},
	{segment='WE',station='50-я улица (линия Уэст-Энд, Би-эм-ти)',type='o',eng='50th Street',old='-',opened='24 июня 1916',r_key='50 St D',c_key='B14'},
	{segment='WE',station='55-я улица (линия Уэст-Энд, Би-эм-ти)',type='o',eng='55th Street',old='-',opened='24 июня 1916',r_key='55 St D',c_key='B15'},
	{segment='WE',station='62-я улица (линия Уэст-Энд, Би-эм-ти)',type='x',acc='yes',eng='62nd Street',old='-',opened='24 июня 1916',r_key='New Utrecht Av N/62 St D',r_ast=true,c_key='B16'},
	{segment='WE',station='71-я улица (линия Уэст-Энд, Би-эм-ти)',type='o',eng='71st Street',old='-',opened='24 июня 1916',r_key='71 St D',c_key='B17'},
	{segment='WE',station='79-я улица (линия Уэст-Энд, Би-эм-ти)',type='o',eng='79th Street',old='-',opened='24 июня 1916',r_key='79 St D',c_key='B18'},
	{segment='WE',station='18-я авеню (линия Уэст-Энд, Би-эм-ти)',type='o',eng='18th Avenue',old='-',opened='24 июня 1916',r_key='18 Av D',c_key='B19'},
	{segment='WE',station='20-я авеню (линия Уэст-Энд, Би-эм-ти)',type='o',eng='20th Avenue',old='-',opened='29 июля 1916',r_key='20 Av D',c_key='B20'},
	{segment='WE',station='Бей-Паркуэй (линия Уэст-Энд, Би-эм-ти)',type='x',acc='yes',eng='Bay Parkway',old='-',opened='29 июля 1916',r_key='Bay Pkwy D',c_key='B21'},
	{segment='WE',station='25-я авеню (линия Уэст-Энд, Би-эм-ти)',type='o',eng='25th Avenue',old='-',opened='29 июля 1916',r_key='25 Av D',c_key='B22'},
	{segment='WE',station='Бей 50-я улица (линия Уэст-Энд, Би-эм-ти)',type='o',eng='Bay 50th Street',old='-',opened='21 декабря 1917',r_key='Bay 50 St D',c_key='B23'},
	{segment='WE',station='Кони-Айленд — Стилуэлл-авеню (линия Уэст-Энд, Би-эм-ти)',type='x',acc='yes',eng='Coney Island–Stillwell Avenue',old='-',opened='19 мая 1919',r_key='Coney Island-Stillwell Av D F N Q',c_key='D43'},
	{segment='14',station='Восьмая авеню (линия Канарси, Би-эм-ти)',acc='yes',subtype='bumper',eng='Eighth Avenue',opened='30 мая 1931',r_key='14 St A C E/8 Av L',r_ast=true,c_key='L01'},
	{segment='14',station='Шестая авеню (линия Канарси, Би-эм-ти)',eng='Sixth Avenue',opened='21 сентября 1924',r_key='14 St F M 1 2 3/6 Av L',r_ast=true,conn='[[14-я улица (PATH)]]<sup>&#91;[[:en:14th Street station (PATH)|en]]&#93;</sup>',c_key='L02'},
	{segment='14',station='Юнион-сквер (линия Канарси, Би-эм-ти)',acc='yes',eng='Union Square',opened='21 сентября 1924',r_key='14 St-Union Sq L N Q R W 4 5 6',r_ast=true,c_key='L03'},
	{segment='14',station='Третья авеню (линия Канарси, Би-эм-ти)',sep='yes',eng='Third Avenue',opened='21 сентября 1924',r_key='3 Av L',c_key='L05'},
	{segment='14',station='Первая авеню (линия Канарси, Би-эм-ти)',sep='yes',acc='yes',eng='First Avenue',opened='21 сентября 1924',below='Манхэттен<hr>Тоннель 14-й улицы<hr>Бруклин',r_key='1 Av L',c_key='L06'},
	{segment='Canar',station='Бедфорд-авеню (линия Канарси, Би-эм-ти)',acc='yes',eng='Bedford Avenue',opened='21 сентября 1924',r_key='Bedford Av L',c_key='L08'},
	{segment='Canar',station='Лоример-стрит (линия Канарси, Би-эм-ти)',eng='Lorimer Street',opened='21 сентября 1924',r_key='Lorimer St L/Metropolitan Av G',r_ast=true,c_key='L10'},
	{segment='Canar',station='Грейам-авеню (линия Канарси, Би-эм-ти)',sep='yes',eng='Graham Avenue',opened='21 сентября 1924',r_key='Graham Av L',c_key='L11'},
	{segment='Canar',station='Гранд-стрит (линия Канарси, Би-эм-ти)',sep='yes',acc='yes',eng='Grand Street',opened='21 сентября 1924',r_key='Grand St L',c_key='L12'},
	{segment='Canar',station='Монтроз-авеню (линия Канарси, Би-эм-ти)',eng='Montrose Avenue',opened='21 сентября 1924',r_key='Montrose Av L',c_key='L13'},
	{segment='Canar',station='Морган-авеню (линия Канарси, Би-эм-ти)',eng='Morgan Avenue',opened='14 декабря 1928',r_key='Morgan Av L',c_key='L14'},
	{segment='Canar',station='Джефферсон-стрит (линия Канарси, Би-эм-ти)',eng='Jefferson Street',opened='14 декабря 1928',r_key='Jefferson St L',c_key='L15'},
	{segment='Canar',station='Декалб-авеню (линия Канарси, Би-эм-ти)',eng='DeKalb Avenue',opened='14 декабря 1928',r_key='DeKalb Av L',c_key='L16'},
	{segment='Canar',station='Мертл-авеню — Уайкофф-авеню (линия Канарси, Би-эм-ти)',acc='yes',eng='Myrtle–Wyckoff Avenues',opened='14 декабря 1928',r_key='Myrtle-Wyckoff Avs L M',r_ast=true,c_key='L17'},
	{segment='Canar',station='Холси-стрит (линия Канарси, Би-эм-ти)',sep='yes',eng='Halsey Street',opened='14 декабря 1928',r_key='Halsey St L',c_key='L19'},
	{segment='Canar',station='Уилсон-авеню (линия Канарси, Би-эм-ти)',acc='n',eng='Wilson Avenue',opened='14 декабря 1928',r_key='Wilson Av L',c_key='L20'},
	{segment='Canar',station='Бушуик-авеню — Абердин-стрит (линия Канарси, Би-эм-ти)',eng='Bushwick Avenue–Aberdeen Street',opened='14 декабря 1928',r_key='Bushwick Av-Aberdeen St L',c_key='L21'},
	{segment='Canar BJ',station='Бродвей-Джанкшен (линия Канарси, Би-эм-ти)',eng='Broadway Junction',opened='14 декабря 1928',
		r_key='Broadway Junction A C J L Z',r_ast=true,c_key='L22',
		info='Станция имела пересадку на снесённую ныне станцию [[Манхэттен-Джанкшен (линия Фултон-стрит, Би-эм-ти)|Манхэттен-Джанкшен]]<sup>&#91;[[:en:Manhattan Junction (BMT Fulton Street Line)|en]]&#93;</sup>.'},
	{segment='Canar South',station='Атлантик-авеню (линия Канарси, Би-эм-ти)',eng='Atlantic Avenue',opened='4 июля 1889',
		above_stub='+w',above_stub_text='Примыкала [[линия Фултон-стрит, Би-эм-ти]]',below_stub='-e',below_stub_text='Ответвлялась [[линия Фултон-стрит, Би-эм-ти]]',oldlink='Атлантик-авеню (линия Фултон-стрит, Би-эм-ти)',r_key='Atlantic Av L',
		conn='[[Ист-Нью-Йорк (LIRR)]]<sup>&#91;[[:en:East New York station|en]]&#93;</sup>',c_key='L24',
		transfer='станция имела три островных платформы<br>и обслуживала поезда эстакадной линии Фултон-стрит<br>и существующей ныне [[линия Канарси, Би-эм-ти|линии Канарси]]',
		info='Станция имела три островных платформы и обслуживала также [[Линия Фултон-стрит, Би-эм-ти|эстакадную линию Фултон-стрит]].'},
	{segment='Canar South',station='Саттер-авеню (линия Канарси, Би-эм-ти)',eng='Sutter Avenue',old='-',opened='28 декабря 1906',r_key='Sutter Av L',c_key='L25'},
	{segment='Canar South',station='Ливония-авеню (линия Канарси, Би-эм-ти)',acc='yes',eng='Livonia Avenue',old='-',opened='28 декабря 1906',r_key='Livonia Av L',c_key='L26'},
	{segment='Canar South',station='Нью-Лотс-авеню (линия Канарси, Би-эм-ти)',eng='New Lots Avenue',old='-',opened='28 декабря 1906',r_key='New Lots Av L',c_key='L27'},
	{segment='Canar South',station='Ист 105-я улица (линия Канарси, Би-эм-ти)',eng='East 105th Street',old='-',opened='28 декабря 1906',r_key='East 105 St L',c_key='L28'},
	{segment='Canar South',station='Канарси — Рокавей-Паркуэй (линия Канарси, Би-эм-ти)',acc='yes',subtype='bumper',eng='Canarsie–Rockaway Parkway',old='-',opened='28 декабря 1906',r_key='Canarsie-Rockaway Pkwy L',c_key='L29'},
	{segment='Bway7 North Tip',station='Ван-Кортландт-парк — 242-я улица (линия Бродвея и Седьмой авеню, Ай-ар-ти)',type='x',subtype='bumper',eng='Van Cortlandt Park–242nd Street',opened='1 августа 1908',r_key='Van Cortlandt Park-242 St 1',c_key='101'},
	{segment='Bway7 North Tip',station='238-я улица (линия Бродвея и Седьмой авеню, Ай-ар-ти)',type='o',sep='yes',eng='238th Street',opened='1 августа 1908',r_key='238 St 1',c_key='103'},
	{segment='Bway7 North Tip',station='231-я улица (линия Бродвея и Седьмой авеню, Ай-ар-ти)',type='o',acc='yes',sep='yes',eng='231st Street',opened='7 января 1907',r_key='231 St 1',c_key='104'},
	{segment='Bway7 North Tip',station='Марбл-Хилл — 225-я улица (линия Бродвея и Седьмой авеню, Ай-ар-ти)',type='o',sep='yes',eng='Marble Hill–225th Street',opened='7 января 1907',above='Бронкс<hr>Манхэттен',below='[[Бродвейский мост (Манхэттен)|Бродвейский мост]]',r_key='Marble Hill-225 St 1',conn='[[Марбл-Хилл (Metro-North)]]<sup>&#91;[[:en:Marble Hill station|en]]&#93;</sup>',c_key='106'},
	{segment='Bway7 North Tip',station='215-я улица (линия Бродвея и Седьмой авеню, Ай-ар-ти)',type='o',sep='yes',eng='215th Street',opened='16 марта 1906',r_key='215 St 1',c_key='107'},
	{segment='Bway7 North Tip',station='207-я улица (линия Бродвея и Седьмой авеню, Ай-ар-ти)',type='o',sep='yes',eng='207th Street',opened='16 марта 1906',r_key='207 St 1',c_key='108'},
	{segment='Bway7 North',station='Дайкман-стрит (линия Бродвея и Седьмой авеню, Ай-ар-ти)',acc='yes',eng='Dyckman Street',opened='16 марта 1906',r_key='Dyckman St 1',c_key='109'},
	{segment='Bway7 North',station='191-я улица (линия Бродвея и Седьмой авеню, Ай-ар-ти)',eng='191st Street',opened='14 января 1911',r_key='191 St 1',c_key='110'},
	{segment='Bway7 North',station='181-я улица (линия Бродвея и Седьмой авеню, Ай-ар-ти)',eng='181st Street',opened='16 марта 1906',r_key='181 St 1',c_key='111'},
	{segment='Bway7 North',station='168-я улица (линия Бродвея и Седьмой авеню, Ай-ар-ти)',eng='168th Street',opened='16 марта 1906',r_key='168 St A C 1',r_ast=true,c_key='112'},
	{segment='Bway7 North',station='157-я улица (линия Бродвея и Седьмой авеню, Ай-ар-ти)',sep='yes',eng='157th Street',opened='12 ноября 1904',r_key='157 St 1',c_key='113'},
	{segment='Bway7 Middle',station='145-я улица (линия Бродвея и Седьмой авеню, Ай-ар-ти)',type='o',sep='yes',eng='145th Street',opened='27 октября 1904',r_key='145 St 1',c_key='114'},
	{segment='Bway7 Middle',station='137-я улица — Сити-колледж (линия Бродвея и Седьмой авеню, Ай-ар-ти)',type='o',sep='yes',eng='137th Street–City College',old='137-я улица',oldeng='137th Street',opened='27 октября 1904',r_key='137 St-City College 1',c_key='115'},
	{segment='Bway7 Middle',station='125-я улица (линия Бродвея и Седьмой авеню, Ай-ар-ти)',type='o',eng='125th Street',old='Манхэттен-стрит',oldeng='Manhattan Street',opened='27 октября 1904',r_key='125 St 1',c_key='116',
		transfer='единственная на линии эстакадная<br>станция на мосту, пересекающем долину'},
	{segment='Bway7 Middle',station='116-я улица — Колумбийский университет (линия Бродвея и Седьмой авеню, Ай-ар-ти)',type='o',eng='116th Street–Columbia University',old='116-я улица',oldeng='116th Street',opened='27 октября 1904',r_key='116 St-Columbia University 1',c_key='117'},
	{segment='Bway7 Middle',station='Катидрал-Паркуэй — 110-я улица (линия Бродвея и Седьмой авеню, Ай-ар-ти)',type='o',sep='yes',eng='Cathedral Parkway–110th Street',old='110-я улица',oldeng='110th Street',opened='27 октября 1904',r_key='Cathedral Pkwy-110 St 1',c_key='118'},
	{segment='Bway7 Middle',station='103-я улица (линия Бродвея и Седьмой авеню, Ай-ар-ти)',type='o',eng='103rd Street',opened='27 октября 1904',r_key='103 St 1',c_key='119'},
	{segment='Jerome 2',station='Вудлон (линия Джером-авеню, Ай-ар-ти)',type='x',subtype='bumper',eng='Woodlawn',opened='15 апреля 1918',r_key='Woodlawn 4',c_key='401'},
	{segment='Jerome 2',station='Мошолу-Паркуэй (линия Джером-авеню, Ай-ар-ти)',type='o',eng='Mosholu Parkway',opened='15 апреля 1918',r_key='Mosholu Pkwy 4',c_key='402'},
	{segment='Jerome 2',station='Бедфорд-парк-бульвар — Леман-колледж (линия Джером-авеню, Ай-ар-ти)',type='o',eng='Bedford Park Boulevard–Lehman College',opened='15 апреля 1918',r_key='Bedford Park Blvd-Lehman College 4',c_key='405'},
	{segment='Jerome 2',station='Кингсбридж-роуд (линия Джером-авеню, Ай-ар-ти)',type='o',eng='Kingsbridge Road',opened='2 июня 1917',r_key='Kingsbridge Rd 4',c_key='406'},
	{segment='Jerome 2',station='Фордем-роуд (линия Джером-авеню, Ай-ар-ти)',type='o',acc='yes',eng='Fordham Road',opened='2 июня 1917',r_key='Fordham Rd 4',c_key='407'},
	{segment='Jerome 2',station='183-я улица (линия Джером-авеню, Ай-ар-ти)',type='o',eng='183rd Street',opened='2 июня 1917',r_key='183 St 4',c_key='408'},
	{segment='Jerome 1',station='Бернсайд-авеню (линия Джером-авеню, Ай-ар-ти)',type='x',subtype='bidi',eng='Burnside Avenue',opened='2 июня 1917',r_key='Burnside Av 4',c_key='409'},
	{segment='Jerome 1',station='176-я улица (линия Джером-авеню, Ай-ар-ти)',type='o',eng='176th Street',opened='2 июня 1917',r_key='176 St 4',c_key='410'},
	{segment='Jerome 1',station='Маунт-Иден-авеню (линия Джером-авеню, Ай-ар-ти)',type='o',eng='Mount Eden Avenue',opened='2 июня 1917',r_key='Mt Eden Av 4',c_key='411'},
	{segment='Jerome 1',station='170-я улица (линия Джером-авеню, Ай-ар-ти)',type='o',acc='yes',eng='170th Street',opened='2 июня 1917',r_key='170 St 4',c_key='412'},
	{segment='Jerome',station='167-я улица (линия Джером-авеню, Ай-ар-ти)',type='o',eng='167th Street',opened='2 июня 1917',
		below_stub='-w',below_stub_text='Ответвлялась [[линия Девятой авеню, Ай-ар-ти]]',r_key='167 St 4',c_key='413'},
	{segment='Jerome',station='161-я улица — Стадион Янки (линия Джером-авеню, Ай-ар-ти)',type='o',acc='yes',eng='161st Street–Yankee Stadium',opened='2 июня 1917',r_key='161 St-Yankee Stadium B D 4',r_ast=true,conn='[[Янкис — Ист 153-я улица (Metro-North)]]<sup>&#91;[[:en:Yankees–East 153rd Street station|en]]&#93;</sup>',c_key='414'},
	{segment='149',station='149-я улица — Гранд-Конкорс (линия Джером-авеню, Ай-ар-ти)',type='x',subtype='bidi',eng='149th Street–Grand Concourse',opened='2 июня 1917',r_key='149 St-Grand Concourse 2 4 5',r_ast=true,c_key='415'},
	{segment='Bway7a',station='96-я улица (линия Бродвея и Седьмой авеню, Ай-ар-ти)',type='x',acc='yes',eng='96th Street',opened='27 октября 1904',below_key='91',r_key='96 St 1 2 3',c_key='120'},
	{segment='Bway7a',station='86-я улица (линия Бродвея и Седьмой авеню, Ай-ар-ти)',type='o',sep='yes',eng='86th Street',opened='27 октября 1904',r_key='86 St 1',c_key='121'},
	{segment='Bway7a',station='79-я улица (линия Бродвея и Седьмой авеню, Ай-ар-ти)',type='o',sep='yes',eng='79th Street',opened='27 октября 1904',r_key='79 St 1',c_key='122'},
	{segment='Bway7a',station='72-я улица (линия Бродвея и Седьмой авеню, Ай-ар-ти)',type='x',acc='yes',eng='72nd Street',opened='27 октября 1904',r_key='72 St 1 2 3',c_key='123'},
	{segment='Bway7a',station='66-я улица — Линкольн-центр (линия Бродвея и Седьмой авеню, Ай-ар-ти)',type='o',acc='yes',eng='66th Street–Lincoln Center',old='66-я улица',oldeng='66th Street',opened='27 октября 1904',r_key='66 St-Lincoln Center 1',c_key='124'},
	{segment='Bway7a',station='59-я улица — Колумбус-Серкл (линия Бродвея и Седьмой авеню, Ай-ар-ти)',type='o',acc='yes',eng='59th Street–Columbus Circle',opened='27 октября 1904',r_key='59 St-Columbus Circle A B C D 1',r_ast=true,c_key='125'},
	{segment='Bway7a',station='50-я улица (линия Бродвея и Седьмой авеню, Ай-ар-ти)',type='o',sep='yes',eng='50th Street',opened='27 октября 1904',r_key='50 St 1',c_key='126'},
	{segment='Bway7a',station='Таймс-сквер — 42-я улица (линия Бродвея и Седьмой авеню, Ай-ар-ти)',type='x',acc='yes',eng='Times Square–42nd Street',old='-',opened='3 июня 1917',r_key='Times Sq-42 St N Q R W S 1 2 3 7/42 St A C E',r_ast=true,conn='[[автовокзал Портового управления]]<sup>&#91;[[:en:Port Authority Bus Terminal|en]]&#93;</sup>',c_key='127'},
	{segment='Bway7b',station='34-я улица — Пенсильванский вокзал (линия Бродвея и Седьмой авеню, Ай-ар-ти)',type='x',acc='yes',eng='34th Street–Penn Station',opened='3 июня 1917',r_key='34 St-Penn Station 1 2 3',conn='[[Пенсильванский вокзал]]',c_key='128'},
	{segment='Bway7b',station='28-я улица (линия Бродвея и Седьмой авеню, Ай-ар-ти)',type='o',sep='yes',eng='28th Street',opened='1 июля 1918',r_key='28 St 1',c_key='129'},
	{segment='Bway7b',station='23-я улица (линия Бродвея и Седьмой авеню, Ай-ар-ти)',type='o',sep='yes',eng='23rd Street',opened='1 июля 1918',r_key='23 St 1',c_key='130'},
	{segment='Bway7b',station='18-я улица (линия Бродвея и Седьмой авеню, Ай-ар-ти)',type='o',sep='yes',eng='18th Street',opened='1 июля 1918',r_key='18 St 1',c_key='131'},
	{segment='Bway7b',station='14-я улица (линия Бродвея и Седьмой авеню, Ай-ар-ти)',type='x',eng='14th Street',opened='1 июля 1918',r_key='14 St F M 1 2 3/6 Av L',r_ast=true,conn='[[14-я улица (PATH)]]<sup>&#91;[[:en:14th Street station (PATH)|en]]&#93;</sup>',c_key='132'},
	{segment='Bway7b',station='Кристофер-стрит — Шеридан-сквер (линия Бродвея и Седьмой авеню, Ай-ар-ти)',type='o',sep='yes',eng='Christopher Street–Sheridan Square',opened='1 июля 1918',r_key='Christopher St-Sheridan Sq 1',conn='[[Кристофер-стрит (PATH)]]<sup>&#91;[[:en:Christopher Street station (PATH)|en]]&#93;</sup>',c_key='133'},
	{segment='Bway7b',station='Хаустон-стрит (линия Бродвея и Седьмой авеню, Ай-ар-ти)',type='o',sep='yes',eng='Houston Street',opened='1 июля 1918',r_key='Houston St 1',c_key='134'},
	{segment='Bway7b',station='Канал-стрит (линия Бродвея и Седьмой авеню, Ай-ар-ти)',type='o',sep='yes',eng='Canal Street',opened='1 июля 1918',r_key='Canal St 1',c_key='135'},
	{segment='Bway7b',station='Франклин-стрит (линия Бродвея и Седьмой авеню, Ай-ар-ти)',type='o',sep='yes',eng='Franklin Street',opened='1 июля 1918',r_key='Franklin St 1',c_key='136'},
	{segment='Bway7b',station='Чеймберс-стрит (линия Бродвея и Седьмой авеню, Ай-ар-ти)',type='x',acc='yes',eng='Chambers Street',opened='1 июля 1918',r_key='Chambers St 1 2 3',c_key='137'},
	{segment='42',station='Таймс-сквер (челнок 42-й улицы, Ай-ар-ти)',north_back=true,oldtype='o',acc='yes',eng='Times Square',opened='27 октября 1904',r_key='Times Sq-42 St N Q R W S 1 2 3 7/42 St A C E',r_ast=true,conn='[[автовокзал Портового управления]]<sup>&#91;[[:en:Port Authority Bus Terminal|en]]&#93;</sup>',c_key='902'},
	{segment='42',station='Центральный вокзал (челнок 42-й улицы, Ай-ар-ти)',north_back=true,acc='yes',eng='Grand Central',old='Центральный вокзал — 42-я улица',oldeng='Grand Central–42nd Street',opened='27 октября 1904',r_key='Grand Central-42 St S 4 5 6 7',r_ast=true,conn='[[Центральный вокзал Нью-Йорка]]',c_key='901'},
	{segment='Lenox North',station='Гарлем — 148-я улица (линия Ленокс-авеню, Ай-ар-ти)',subtype='bumper',eng='Harlem–148th Street',opened='13 мая 1968',r_key='Harlem-148 St 3',c_key='301'},
	{segment='Lenox North',station='145-я улица (линия Ленокс-авеню, Ай-ар-ти)',sep='yes',eng='145th Street',opened='23 ноября 1904',r_key='145 St 3',c_key='302'},
	{segment='Lenox South',station='135-я улица (линия Ленокс-авеню, Ай-ар-ти)',acc='yes',sep='yes',eng='135th Street',opened='23 ноября 1904',r_key='135 St 2 3',c_key='224'},
	{segment='Lenox South',station='125-я улица (линия Ленокс-авеню, Ай-ар-ти)',sep='yes',eng='125th Street',opened='23 ноября 1904',r_key='125 St 2 3',c_key='225'},
	{segment='Lenox South',station='116-я улица (линия Ленокс-авеню, Ай-ар-ти)',sep='yes',eng='116th Street',opened='23 ноября 1904',r_key='116 St 2 3',c_key='226'},
	{segment='Lenox South',station='Сентрал-парк-Норт — 110-я улица (линия Ленокс-авеню, Ай-ар-ти)',eng='Central Park North–110th Street',opened='23 ноября 1904',r_key='Central Park North-110 St 2 3',c_key='227'},
	{segment='Bway7 South',station='Парк-Плейс (линия Бродвея и Седьмой авеню, Ай-ар-ти)',eng='Park Place',opened='1 августа 1918',r_key='Chambers St A C/WTC E/Park Pl 2 3/Cortlandt R W',r_ast=true,conn='[[Всемирный торговый центр (PATH)]]<sup>&#91;[[:en:World Trade Center station (PATH)|en]]&#93;</sup>',c_key='228'},
	{segment='Bway7 South',station='Фултон-стрит (линия Бродвея и Седьмой авеню, Ай-ар-ти)',acc='yes',eng='Fulton Street',opened='1 августа 1918',r_key='Fulton St A C J Z 2 3 4 5',r_ast=true,conn='[[Всемирный торговый центр (PATH)]]<sup>&#91;[[:en:World Trade Center station (PATH)|en]]&#93;</sup>',c_key='229'},
	{segment='Bway7 South',station='Уолл-стрит (линия Бродвея и Седьмой авеню, Ай-ар-ти)',eng='Wall Street',opened='1 августа 1918',below='Манхэттен<hr>Тоннель Кларк-стрит<hr>Бруклин',r_key='Wall St 2 3',c_key='230'},
	{segment='Bway7 South',station='Кларк-стрит (линия Бродвея и Седьмой авеню, Ай-ар-ти)',eng='Clark Street',opened='15 апреля 1919',r_key='Clark St 2 3',c_key='231'},
	{segment='Bway7 South',station='Боро-холл (линия Бродвея и Седьмой авеню, Ай-ар-ти)',acc='yes',eng='Borough Hall',opened='15 апреля 1919',r_key='Court St R/Borough Hall 2 3 4 5',r_ast=true,c_key='232'},
	{segment='Hoyt',station='Хойт-стрит (линия Истерн-Паркуэй, Ай-ар-ти)',type='o',acc='s',sep='yes',eng='Hoyt Street',opened='1 мая 1908',r_key='Hoyt St 2 3',c_key='233'},
	{segment='Hoyt',station='Невинс-стрит (линия Истерн-Паркуэй, Ай-ар-ти)',type='x',eng='Nevins Street',opened='1 мая 1908',r_key='Nevins St 2 3 4 5',c_key='234'},
	{segment='EP',station='Атлантик-авеню — Барклайс-центр (линия Истерн-Паркуэй, Ай-ар-ти)',type='x',acc='yes',eng='Atlantic Avenue–Barclays Center',opened='1 мая 1908',r_key='Atlantic Av-Barclays Ctr B D N Q R 2 3 4 5',r_ast=true,conn='[[Атлантик (вокзал)|вокзал Атлантик]]<sup>&#91;[[:en:Atlantic Terminal|en]]&#93;</sup>',c_key='235'},
	{segment='EP',station='Берген-стрит (линия Истерн-Паркуэй, Ай-ар-ти)',type='o',sep='yes',eng='Bergen Street',opened='23 августа 1920',r_key='Bergen St 2 3',c_key='236'},
	{segment='EP',station='Гранд-Арми-Плаза (линия Истерн-Паркуэй, Ай-ар-ти)',type='o',subtype='under',eng='Grand Army Plaza',opened='23 августа 1920',r_key='Grand Army Plaza 2 3',c_key='237'},
	{segment='EP',station='Истерн-Паркуэй — Бруклинский музей (линия Истерн-Паркуэй, Ай-ар-ти)',type='o',acc='yes',subtype='under',eng='Eastern Parkway–Brooklyn Museum',opened='23 августа 1920',r_key='Eastern Pkwy-Brooklyn Museum 2 3',c_key='238'},
	{segment='EP',station='Франклин-авеню — Медгар-Эверс-колледж (линия Истерн-Паркуэй, Ай-ар-ти)',type='x',eng='Franklin Avenue-Medgar Evers College',opened='23 августа 1920',r_key='Franklin Av 2 3 4 5/Botanic Garden S',r_ast=true,c_key='239'},
	{segment='Bway7 South Tip',station='ВТЦ Кортландт (линия Бродвея и Седьмой авеню, Ай-ар-ти)',acc='yes',eng='WTC Cortlandt',old='Кортландт-стрит',opened='1 июля 1918',r_key='WTC Cortlandt 1',conn='[[Всемирный торговый центр (PATH)]]<sup>&#91;[[:en:World Trade Center station (PATH)|en]]&#93;</sup>',c_key='138'},
	{segment='Bway7 South Tip',station='Ректор-стрит (линия Бродвея и Седьмой авеню, Ай-ар-ти)',sep='yes',eng='Rector Street',opened='1 июля 1918',r_key='Rector St 1',c_key='139'},
	{segment='Bway7 South Tip',station='Саут-Ферри (линия Бродвея и Седьмой авеню, Ай-ар-ти)',subtype='bumper',acc='yes',eng='South Ferry',opened='16 марта 2009',r_key='South Ferry 1/Whitehall St R W',r_ast=true,conn='[[Уайтхолл (паромный терминал)|терминал Уайтхолл]]<sup>&#91;[[:en:Staten Island Ferry Whitehall Terminal|en]]&#93;</sup> ([[Статен-Айленд Ферри]])',c_key='142'},
	{segment='Nostrand',station='Президент-стрит — Медгар-Эверс-колледж (линия Ностранд-авеню, Ай-ар-ти)',eng='President Street-Medgar Evers College',opened='23 августа 1920',r_key='President St 2 5',c_key='241'},
	{segment='Nostrand',station='Стерлинг-стрит (линия Ностранд-авеню, Ай-ар-ти)',eng='Sterling Street',opened='23 августа 1920',r_key='Sterling St 2 5',c_key='242'},
	{segment='Nostrand',station='Уинтроп-стрит (линия Ностранд-авеню, Ай-ар-ти)',sep='yes',eng='Winthrop Street',opened='23 августа 1920',r_key='Winthrop St 2 5',c_key='243'},
	{segment='Nostrand',station='Черч-авеню (линия Ностранд-авеню, Ай-ар-ти)',acc='yes',sep='yes',eng='Church Avenue',opened='23 августа 1920',r_key='Church Av 2 5',c_key='244'},
	{segment='Nostrand',station='Беверли-роуд (линия Ностранд-авеню, Ай-ар-ти)',sep='yes',eng='Beverly Road',opened='23 августа 1920',r_key='Beverly Rd 2 5',c_key='245'},
	{segment='Nostrand',station='Ньюкерк-авеню — Литл-Хейти (линия Ностранд-авеню, Ай-ар-ти)',sep='yes',eng='Newkirk Avenue–Little Haiti',opened='23 августа 1920',r_key='Newkirk Av 2 5',c_key='246'},
	{segment='Nostrand',station='Флатбуш-авеню — Бруклинский колледж (линия Ностранд-авеню, Ай-ар-ти)',acc='yes',subtype='bumper',eng='Flatbush Avenue–Brooklyn College',opened='23 августа 1920',r_key='Flatbush Av-Brooklyn College 2 5',c_key='247'},
	{segment='EP East',station='Ностранд-авеню (линия Истерн-Паркуэй, Ай-ар-ти)',type='o',eng='Nostrand Avenue',opened='23 августа 1920',r_key='Nostrand Av 3',c_key='248'},
	{segment='EP East',station='Кингстон-авеню (линия Истерн-Паркуэй, Ай-ар-ти)',type='o',eng='Kingston Avenue',opened='23 августа 1920',r_key='Kingston Av 3',c_key='249'},
	{segment='EP East',station='Краун-Хайтс — Ютика-авеню (линия Истерн-Паркуэй, Ай-ар-ти)',type='x',acc='yes',eng='Crown Heights–Utica Avenue',opened='23 августа 1920',r_key='Crown Heights-Utica Av 3 4',c_key='250'},
	{segment='NL',station='Саттер-авеню — Ратленд-роуд (линия Нью-Лотс, Ай-ар-ти)',eng='Sutter Avenue–Rutland Road',opened='24 декабря 1920',r_key='Sutter Av-Rutland Rd 3',c_key='251'},
	{segment='NL',station='Саратога-авеню (линия Нью-Лотс, Ай-ар-ти)',eng='Saratoga Avenue',opened='24 декабря 1920',r_key='Saratoga Av 3',c_key='252'},
	{segment='NL',station='Рокавей-авеню (линия Нью-Лотс, Ай-ар-ти)',eng='Rockaway Avenue',opened='24 декабря 1920',r_key='Rockaway Av 3',c_key='253'},
	{segment='NL',station='Джуниус-стрит (линия Нью-Лотс, Ай-ар-ти)',eng='Junius Street',opened='24 декабря 1920',r_key='Junius St 3',c_key='254'},
	{segment='NL',station='Пенсилвейния-авеню (линия Нью-Лотс, Ай-ар-ти)',eng='Pennsylvania Avenue',opened='24 декабря 1920',r_key='Pennsylvania Av 3',c_key='255'},
	{segment='NL',station='Ван-Сиклен-авеню (линия Нью-Лотс, Ай-ар-ти)',eng='Van Siclen Avenue',opened='16 октября 1922',r_key='Van Siclen Av 3',c_key='256'},
	{segment='NL',station='Нью-Лотс-авеню (линия Нью-Лотс, Ай-ар-ти)',eng='New Lots Avenue',opened='16 октября 1922',r_key='New Lots Av 3',c_key='257'},
	{segment='WPR North Tip',station='Уэйкфилд — 241-я улица (линия Уайт-Плейнс-роуд, Ай-ар-ти)',subtype='bumper',eng='Wakefield–241st Street',opened='31 декабря 1920',r_key='Wakefield-241 St 2',conn='[[Уэйкфилд (Metro-North)]]<sup>&#91;[[:en:Wakefield station (Metro-North)|en]]&#93;</sup>',c_key='201'},
	{segment='WPR North',station='Ниреид-авеню (линия Уайт-Плейнс-роуд, Ай-ар-ти)',type='o',eng='Nereid Avenue',old='-',opened='31 марта 1917',r_key='Nereid Av 2 5',c_key='204'},
	{segment='WPR North',station='233-я улица (линия Уайт-Плейнс-роуд, Ай-ар-ти)',type='o',acc='yes',eng='233rd Street',old='-',opened='31 марта 1917',r_key='233 St 2 5',conn='[[Вудлон (Metro-North)]]<sup>&#91;[[:en:Woodlawn station (Metro-North)|en]]&#93;</sup>',c_key='205'},
	{segment='WPR North',station='225-я улица (линия Уайт-Плейнс-роуд, Ай-ар-ти)',type='o',eng='225th Street',old='-',opened='31 марта 1917',r_key='225 St 2 5',c_key='206'},
	{segment='WPR North',station='219-я улица (линия Уайт-Плейнс-роуд, Ай-ар-ти)',type='o',eng='219th Street',old='-',opened='3 марта 1917',r_key='219 St 2 5',c_key='207'},
	{segment='WPR North',station='Ган-Хилл-роуд (линия Уайт-Плейнс-роуд, Ай-ар-ти)',type='x',subtype='bidi',acc='yes',eng='Gun Hill Road',opened='3 марта 1917',
		below_stub='-w',below_stub_text='Ответвлялась [[линия Третьей авеню, Ай-ар-ти]]',
		oldlink='Ган-Хилл-роуд (линия Третьей авеню, Ай-ар-ти)',r_key='Gun Hill Rd 2 5',conn='[[Уильямс-Бридж (Metro-North)]]<sup>&#91;[[:en:Williams Bridge station|en]]&#93;</sup>',c_key='208',
		transfer='верхний уровень станции обслуживал<br>существующую ныне [[Линия Уайт-Плейнс-роуд, Ай-ар-ти|линию Уайт-Плейнс-роуд]],<br>а снесённый ныне нижний — линию Третьей авеню',
		info='Нижний уровень станции, снесённый ныне, обслуживал [[Линия Третьей авеню, Ай-ар-ти|линию Третьей авеню]].'},
	{segment='WPR North',station='Берк-авеню (линия Уайт-Плейнс-роуд, Ай-ар-ти)',type='o',eng='Burke Avenue',old='-',opened='3 марта 1917',r_key='Burke Av 2 5',c_key='209'},
	{segment='WPR North',station='Аллертон-авеню (линия Уайт-Плейнс-роуд, Ай-ар-ти)',type='o',eng='Allerton Avenue',old='-',opened='3 марта 1917',r_key='Allerton Av 2 5',c_key='210'},
	{segment='WPR North',station='Пелем-Паркуэй (линия Уайт-Плейнс-роуд, Ай-ар-ти)',type='o',acc='yes',eng='Pelham Parkway',old='-',opened='3 марта 1917',r_key='Pelham Pkwy 2 5',c_key='211'},
	{segment='WPR North',station='Бронкс-парк-Ист (линия Уайт-Плейнс-роуд, Ай-ар-ти)',type='o',eng='Bronx Park East',old='-',opened='3 марта 1917',r_key='Bronx Park East 2 5',c_key='212'},
	{segment='Dyre',station='Истчестер — Дайр-авеню (линия Дайр-авеню, Ай-ар-ти)',subtype='bumper',eng='Eastchester–Dyre Avenue',opened='15 мая 1941',orig='29 мая 1912',r_key='Eastchester-Dyre Av 5',c_key='501'},
	{segment='Dyre',station='Бейчестер-авеню (линия Дайр-авеню, Ай-ар-ти)',eng='Baychester Avenue',opened='15 мая 1941',orig='29 мая 1912',r_key='Baychester Av 5',c_key='502'},
	{segment='Dyre',station='Ган-Хилл-роуд (линия Дайр-авеню, Ай-ар-ти)',acc='yes',eng='Gun Hill Road',opened='15 мая 1941',orig='29 мая 1912',r_key='Gun Hill Rd 5',c_key='503'},
	{segment='Dyre',station='Пелем-Паркуэй (линия Дайр-авеню, Ай-ар-ти)',eng='Pelham Parkway',opened='15 мая 1941',orig='29 мая 1912',r_key='Pelham Pkwy 5',c_key='504'},
	{segment='Dyre',station='Моррис-парк (линия Дайр-авеню, Ай-ар-ти)',eng='Morris Park',opened='15 мая 1941',orig='29 мая 1912',r_key='Morris Park 5',c_key='505'},
	{segment='E180',station='Ист 180-я улица (линия Уайт-Плейнс-роуд, Ай-ар-ти)',type='x',subtype='bidi',acc='yes',eng='East 180th Street',opened='3 марта 1917',r_key='East 180 St 2 5',c_key='213'},
	{segment='WPR South',station='Уэст-Фармс-сквер — Ист-Тремонт-авеню (линия Уайт-Плейнс-роуд, Ай-ар-ти)',type='o',eng='West Farms Square–East Tremont Avenue',opened='26 ноября 1904',r_key='West Farms Sq-East Tremont Av 2 5',c_key='214'},
	{segment='WPR South',station='174-я улица (линия Уайт-Плейнс-роуд, Ай-ар-ти)',type='o',sep='yes',eng='174th Street',opened='26 ноября 1904',r_key='174 St 2 5',c_key='215'},
	{segment='WPR South',station='Фримен-стрит (линия Уайт-Плейнс-роуд, Ай-ар-ти)',type='o',sep='yes',eng='Freeman Street',opened='26 ноября 1904',r_key='Freeman St 2 5',c_key='216'},
	{segment='WPR South',station='Симпсон-стрит (линия Уайт-Плейнс-роуд, Ай-ар-ти)',type='o',acc='yes',sep='yes',eng='Simpson Street',opened='26 ноября 1904',r_key='Simpson St 2 5',c_key='217'},
	{segment='WPR South',station='Интервейл-авеню (линия Уайт-Плейнс-роуд, Ай-ар-ти)',type='o',eng='Intervale Avenue',opened='26 ноября 1904',r_key='Intervale Av 2 5',c_key='218'},
	{segment='WPR South',station='Проспект-авеню (линия Уайт-Плейнс-роуд, Ай-ар-ти)',type='o',sep='yes',eng='Prospect Avenue',opened='26 ноября 1904',r_key='Prospect Av 2 5',c_key='219'},
	{segment='WPR South',station='Джексон-авеню (линия Уайт-Плейнс-роуд, Ай-ар-ти)',type='o',sep='yes',eng='Jackson Avenue',opened='26 ноября 1904',
		below_stub='-e',below_stub_text='Было ответвление к [[линия Третьей авеню, Ай-ар-ти|линии Третьей авеню, Ай-ар-ти]]',r_key='Jackson Av 2 5',c_key='220'},
	{segment='WPR South Tip',station='Третья авеню — 149-я улица (линия Уайт-Плейнс-роуд, Ай-ар-ти)',acc='yes',sep='yes',eng='Third Avenue–149th Street',opened='10 июля 1905',r_key='3 Av-149 St 2 5',c_key='221',
		info='Станция имела пересадку на снесённую ныне станцию [[149-я улица (линия Третьей авеню, Ай-ар-ти)|149-я улица]]<sup>&#91;[[:en:149th Street station (IRT Third Avenue Line)|en]]&#93;</sup>.'},
	{segment='WPR South Tip',station='149-я улица — Гранд-Конкорс (линия Уайт-Плейнс-роуд, Ай-ар-ти)',eng='149th Street–Grand Concourse',opened='10 июля 1905',r_key='149 St-Grand Concourse 2 4 5',r_ast=true,c_key='222'},
	{segment='138',station='138-я улица — Гранд-Конкорс (линия Джером-авеню, Ай-ар-ти)',type='o',eng='138th Street–Grand Concourse',opened='17 июля 1918',r_key='138 St-Grand Concourse 4 5',c_key='416'},
	{segment='Pelham North',station='Пелем-Бей-парк (линия Пелем, Ай-ар-ти)',type='x',subtype='bumper',acc='yes',eng='Pelham Bay Park',opened='24 октября 1920',r_key='Pelham Bay Park 6',c_key='601'},
	{segment='Pelham North',station='Бьюр-авеню (линия Пелем, Ай-ар-ти)',type='o',eng='Buhre Avenue',opened='24 октября 1920',r_key='Buhre Av 6',c_key='602'},
	{segment='Pelham North',station='Мидлтаун-роуд (линия Пелем, Ай-ар-ти)',type='o',eng='Middletown Road',opened='24 октября 1920',r_key='Middletown Rd 6',c_key='603'},
	{segment='Pelham North',station='Уэстчестер-сквер — Ист-Тремонт-авеню (линия Пелем, Ай-ар-ти)',type='o',eng='Westchester Square–East Tremont Avenue',opened='24 октября 1920',r_key='Westchester Sq-East Tremont Av 6',c_key='604'},
	{segment='Pelham North',station='Зерига-авеню (линия Пелем, Ай-ар-ти)',type='o',eng='Zerega Avenue',opened='24 октября 1920',r_key='Zerega Av 6',c_key='606'},
	{segment='Pelham North',station='Касл-Хилл-авеню (линия Пелем, Ай-ар-ти)',type='o',eng='Castle Hill Avenue',opened='24 октября 1920',r_key='Castle Hill Av 6',c_key='607'},
	{segment='Pelham',station='Паркчестер (линия Пелем, Ай-ар-ти)',type='x',subtype='bidi',eng='Parkchester',opened='30 мая 1920',r_key='Parkchester 6',c_key='608'},
	{segment='Pelham',station='Сент-Лоренс-авеню (линия Пелем, Ай-ар-ти)',type='o',eng='St. Lawrence Avenue',opened='30 мая 1920',r_key='St Lawrence Av 6',c_key='609'},
	{segment='Pelham',station='Моррисон-авеню — Саундвью (линия Пелем, Ай-ар-ти)',type='o',eng='Morrison Avenue–Soundview',opened='30 мая 1920',r_key='Morrison Av-Soundview 6',c_key='610'},
	{segment='Pelham',station='Элдер-авеню (линия Пелем, Ай-ар-ти)',type='o',eng='Elder Avenue',opened='30 мая 1920',r_key='Elder Av 6',c_key='611'},
	{segment='Pelham',station='Уитлок-авеню (линия Пелем, Ай-ар-ти)',type='o',eng='Whitlock Avenue',opened='30 мая 1920',r_key='Whitlock Av 6',c_key='612'},
	{segment='Pelham',station='Хантс-Пойнт-авеню (линия Пелем, Ай-ар-ти)',type='x',subtype='bidi',acc='yes',eng='Hunts Point Avenue',opened='17 января 1919',r_key='Hunts Point Av 6',c_key='613'},
	{segment='Pelham',station='Лонгвуд-авеню (линия Пелем, Ай-ар-ти)',type='o',sep='yes',eng='Longwood Avenue',opened='17 января 1919',r_key='Longwood Av 6',c_key='614'},
	{segment='Pelham',station='Ист 149-я улица (линия Пелем, Ай-ар-ти)',type='o',acc='yes',sep='yes',eng='East 149th Street',opened='17 января 1919',r_key='East 149 St 6',c_key='615'},
	{segment='Pelham',station='Ист 143-я улица — Сент-Мэрис-стрит (линия Пелем, Ай-ар-ти)',type='o',sep='yes',eng='East 143rd Street–St. Mary’s Street',opened='17 января 1919',r_key='East 143 St-St Mary\'s St 6',c_key='616'},
	{segment='Pelham',station='Сайпресс-авеню (линия Пелем, Ай-ар-ти)',type='o',sep='yes',eng='Cypress Avenue',opened='17 января 1919',r_key='Cypress Av 6',c_key='617'},
	{segment='Pelham',station='Брук-авеню (линия Пелем, Ай-ар-ти)',type='o',sep='yes',eng='Brook Avenue',opened='17 января 1919',r_key='Brook Av 6',c_key='618'},
	{segment='Pelham',station='Третья авеню — 138-я улица (линия Пелем, Ай-ар-ти)',type='x',subtype='bidi',eng='Third Avenue–138th Street',opened='17 января 1919',r_key='3 Av-138 St 6',c_key='619'},
	{segment='Lex North',station='125-я улица (линия Лексингтон-авеню, Ай-ар-ти)',type='x',acc='yes',eng='125th Street',opened='17 сентября 1918',above='Бронкс<hr>Тоннель Лексингтон-авеню<hr>Манхэттен',r_key='125 St 4 5 6',conn='[[Харлем — 125-я улица (Metro-North)]]<sup>&#91;[[:en:Harlem–125th Street station|en]]&#93;</sup>',c_key='621'},
	{segment='Lex North',station='116-я улица (линия Лексингтон-авеню, Ай-ар-ти)',type='o',subtype='under',sep='yes',eng='116th Street',opened='17 сентября 1918',r_key='116 St 6',c_key='622'},
	{segment='Lex North',station='110-я улица (линия Лексингтон-авеню, Ай-ар-ти)',type='o',sep='yes',eng='110th Street',opened='17 сентября 1918',r_key='110 St 6',c_key='623'},
	{segment='Lex North',station='103-я улица (линия Лексингтон-авеню, Ай-ар-ти)',type='o',eng='103rd Street',opened='17 сентября 1918',r_key='103 St 6',c_key='624'},
	{segment='Lex North',station='96-я улица (линия Лексингтон-авеню, Ай-ар-ти)',type='o',subtype='under',eng='96th Street',opened='17 сентября 1918',r_key='96 St 6',c_key='625'},
	{segment='Lex North',station='86-я улица (линия Лексингтон-авеню, Ай-ар-ти)',type='x',sep='yes',eng='86th Street',opened='17 сентября 1918',r_key='86 St 4 5 6',c_key='626'},
	{segment='Lex North',station='77-я улица (линия Лексингтон-авеню, Ай-ар-ти)',type='o',subtype='under',sep='yes',eng='77th Street',opened='17 сентября 1918',r_key='77 St 6',c_key='627'},
	{segment='Lex North',station='68-я улица — Хантер-колледж (линия Лексингтон-авеню, Ай-ар-ти)',type='o',subtype='under',eng='68th Street–Hunter College',opened='17 сентября 1918',r_key='68 St-Hunter College 6',c_key='628'},
	{segment='Lex North',station='59-я улица (линия Лексингтон-авеню, Ай-ар-ти)',type='x',eng='59th Street',opened='17 июля 1918',r_key='Lexington Av N R W/59 St 4 5 6',r_ast=true,conn='[[Канатная дорога острова Рузвельт]]',c_key='629'},
	{segment='Lex North',station='51-я улица (линия Лексингтон-авеню, Ай-ар-ти)',type='o',subtype='under',acc='yes',eng='51st Street',opened='17 июля 1918',r_key='Lexington Av-53 St E M/51 St 6',r_ast=true,c_key='630'},
	{segment='Lex North',station='Центральный вокзал — 42-я улица (линия Лексингтон-авеню, Ай-ар-ти)',type='x',acc='yes',eng='Grand Central–42nd Street',opened='17 июля 1918',r_key='Grand Central-42 St S 4 5 6 7',r_ast=true,conn='[[Центральный вокзал Нью-Йорка]]',c_key='631'},
	{segment='Lex',station='33-я улица (линия Лексингтон-авеню, Ай-ар-ти)',type='o',sep='yes',eng='33rd Street',opened='27 октября 1904',r_key='33 St 6',c_key='632'},
	{segment='Lex',station='28-я улица (линия Лексингтон-авеню, Ай-ар-ти)',type='o',acc='s',sep='yes',eng='28th Street',opened='27 октября 1904',r_key='28 St 6',c_key='633'},
	{segment='Lex',station='23-я улица (линия Лексингтон-авеню, Ай-ар-ти)',type='o',acc='yes',sep='yes',eng='23rd Street',opened='27 октября 1904',below_key='18',r_key='23 St 6',c_key='634'},
	{segment='Lex',station='14-я улица — Юнион-сквер (линия Лексингтон-авеню, Ай-ар-ти)',type='x',eng='14th Street–Union Square',opened='27 октября 1904',r_key='14 St-Union Sq L N Q R W 4 5 6',r_ast=true,c_key='635'},
	{segment='Lex',station='Астор-Плейс (линия Лексингтон-авеню, Ай-ар-ти)',type='o',sep='yes',eng='Astor Place',opened='27 октября 1904',r_key='Astor Place 6',c_key='636'},
	{segment='Lex',station='Бликер-стрит (линия Лексингтон-авеню, Ай-ар-ти)',type='o',acc='yes',eng='Bleecker Street',opened='27 октября 1904',r_key='Broadway-Lafayette St B D F M/Bleecker St 6',r_ast=true,c_key='637'},
	{segment='Lex',station='Спринг-стрит (линия Лексингтон-авеню, Ай-ар-ти)',type='o',sep='yes',eng='Spring Street',opened='27 октября 1904',r_key='Spring St 6',c_key='638'},
	{segment='Lex',station='Канал-стрит (линия Лексингтон-авеню, Ай-ар-ти)',type='o',acc='yes',eng='Canal Street',opened='27 октября 1904',below_key='Worth',r_key='Canal St J N Q R W Z 6',r_ast=true,c_key='639'},
	{segment='Lex',station='Бруклинский мост — Сити-холл (линия Лексингтон-авеню, Ай-ар-ти)',type='x',acc='yes',eng='Brooklyn Bridge–City Hall',old='Бруклинский мост',oldeng='Brooklyn Bridge',opened='27 октября 1904',below_key='CH',r_key='Brooklyn Bridge-City Hall 4 5 6/Chambers St J Z',r_ast=true,c_key='640'},
	{segment='Lex South',station='Фултон-стрит (линия Лексингтон-авеню, Ай-ар-ти)',acc='yes',eng='Fulton Street',opened='16 января 1905',r_key='Fulton St A C J Z 2 3 4 5',r_ast=true,conn='[[Всемирный торговый центр (PATH)]]<sup>&#91;[[:en:World Trade Center station (PATH)|en]]&#93;</sup>',c_key='418'},
	{segment='Lex South',station='Уолл-стрит (линия Лексингтон-авеню, Ай-ар-ти)',eng='Wall Street',opened='12 июня 1905',r_key='Wall St 4 5',c_key='419'},
	{segment='Lex South',station='Боулинг-Грин (линия Лексингтон-авеню, Ай-ар-ти)',acc='yes',eng='Bowling Green',opened='10 июля 1905',r_key='Bowling Green 4 5',c_key='420'},
	{segment='BHall',station='Боро-холл (линия Истерн-Паркуэй, Ай-ар-ти)',acc='n',eng='Borough Hall',opened='1 мая 1908',above='Манхэттен<hr>Тоннель Джоралемон-стрит<hr>Бруклин',r_key='Court St R/Borough Hall 2 3 4 5',r_ast=true,c_key='423'},
	{segment='Flush',station='Флашинг — Мейн-стрит (линия Флашинг, Ай-ар-ти)',type='x',subtype='suppress',acc='yes',eng='Flushing–Main Street',opened='2 января 1928',r_key='Flushing-Main St 7',conn='[[Флашинг — Мейн-стрит (LIRR)]]<sup>&#91;[[:en:Flushing–Main Street station (LIRR)|en]]&#93;</sup>',c_key='701'},
	{segment='Flush',station='Метс — Уиллетс-Пойнт (линия Флашинг, Ай-ар-ти)',type='x',subtype='bidi',eng='Mets–Willets Point',opened='7 мая 1927',r_key='Mets-Willets Point 7',conn='[[Метс — Уиллетс-Пойнт (LIRR)]]<sup>&#91;[[:en:Mets–Willets Point station (LIRR)|en]]&#93;</sup>',c_key='702'},
	{segment='Flush',station='111-я улица (линия Флашинг, Ай-ар-ти)',type='o',eng='111th Street',opened='13 октября 1925',r_key='111 St 7',c_key='705'},
	{segment='Flush',station='103-я улица — Корона-Плаза (линия Флашинг, Ай-ар-ти)',type='o',eng='103rd Street–Corona Plaza',opened='21 апреля 1917',r_key='103 St-Corona Plaza 7',c_key='706'},
	{segment='Flush',station='Джанкшен-бульвар (линия Флашинг, Ай-ар-ти)',type='x',subtype='bidi',acc='yes',eng='Junction Boulevard',opened='21 апреля 1917',r_key='Junction Blvd 7',c_key='707'},
	{segment='Flush',station='90-я улица — Элмхерст-авеню (линия Флашинг, Ай-ар-ти)',type='o',eng='90th Street–Elmhurst Avenue',opened='21 апреля 1917',r_key='90 St-Elmhurst Av 7',c_key='708'},
	{segment='Flush',station='82-я улица — Джексон-Хайтс (линия Флашинг, Ай-ар-ти)',type='o',eng='82nd Street–Jackson Heights',opened='21 апреля 1917',r_key='82 St-Jackson Hts 7',c_key='709'},
	{segment='Flush',station='74-я улица — Бродвей (линия Флашинг, Ай-ар-ти)',type='o',acc='yes',eng='74th Street–Broadway',opened='21 апреля 1917',r_key='74-Broadway 7/Jackson Hts-Roosevelt Av E F M R',r_ast=true,c_key='710'},
	{segment='Flush',station='69-я улица (линия Флашинг, Ай-ар-ти)',type='o',eng='69th Street',opened='21 апреля 1917',r_key='69 St 7',c_key='711'},
	{segment='Flush',station='61-я улица — Вудсайд (линия Флашинг, Ай-ар-ти)',type='x',subtype='bidi',acc='yes',eng='61st Street–Woodside',opened='21 апреля 1917',r_key='Woodside-61 St 7',conn='[[Вудсайд (LIRR)]]<sup>&#91;[[:en:Woodside station (LIRR)|en]]&#93;</sup>',c_key='712'},
	{segment='Flush',station='52-я улица (линия Флашинг, Ай-ар-ти)',type='o',eng='52nd Street',opened='21 апреля 1917',r_key='52 St 7',c_key='713'},
	{segment='Flush',station='46-я улица — Блисс-стрит (линия Флашинг, Ай-ар-ти)',type='o',eng='46th Street–Bliss Street',opened='21 апреля 1917',r_key='46 St-Bliss St 7',c_key='714'},
	{segment='Flush',station='40-я улица — Лауэри-стрит (линия Флашинг, Ай-ар-ти)',type='o',sep='yes',eng='40th Street–Lowery Street',opened='21 апреля 1917',r_key='40 St-Lowery St 7',c_key='715'},
	{segment='Flush',station='33-я улица — Росон-стрит (линия Флашинг, Ай-ар-ти)',type='o',eng='33rd Street–Rawson Street',opened='21 апреля 1917',r_key='33 St-Rawson St 7',c_key='716'},
	{segment='Flush West',station='Куинсборо-Плаза (линия Флашинг, Ай-ар-ти)',eng='Queensboro Plaza',opened='5 ноября 1916',
		below_stub='-w',below_stub_text='Было ответвление к [[линия Второй авеню, Ай-ар-ти|линии Второй авеню, Ай-ар-ти]]',r_key='Queensboro Plaza N W 7',c_key='718'},
	{segment='Flush West',station='Корт-сквер (линия Флашинг, Ай-ар-ти)',acc='yes',eng='Court Square',opened='5 ноября 1916',r_key='Court Sq E G M 7',r_ast=true,c_key='719'},
	{segment='Flush West',station='Хантерс-Пойнт-авеню (линия Флашинг, Ай-ар-ти)',eng='Hunters Point Avenue',opened='5 ноября 1916',r_key='Hunters Point Av 7',conn='[[Хантерспойнт-авеню (LIRR)]]<sup>&#91;[[:en:Hunterspoint Avenue station (LIRR)|en]]&#93;</sup>',c_key='720'},
	{segment='Flush West',station='Вернон-бульвар — Джексон-авеню (линия Флашинг, Ай-ар-ти)',sep='yes',eng='Vernon Boulevard–Jackson Avenue',opened='22 июня 1915',below='Куинс<hr>Тоннель Стейнвея<hr>Манхэттен',r_key='Vernon Blvd-Jackson Av 7',conn='[[Лонг-Айленд-Сити (LIRR)]]<sup>&#91;[[:en:Long Island City station|en]]&#93;</sup>',c_key='721'},
	{segment='Flush West',station='Центральный вокзал (линия Флашинг, Ай-ар-ти)',acc='yes',eng='Grand Central',opened='22 июня 1915',r_key='Grand Central-42 St S 4 5 6 7',r_ast=true,conn='[[Центральный вокзал Нью-Йорка]]',c_key='723'},
	{segment='Flush West',station='Пятая авеню (линия Флашинг, Ай-ар-ти)',eng='Fifth Avenue',opened='22 марта 1926',r_key='42 St-Bryant Pk B D F M/5 Av 7',r_ast=true,c_key='724'},
	{segment='Flush West',station='Таймс-сквер (линия Флашинг, Ай-ар-ти)',acc='yes',eng='Times Square',opened='14 марта 1927',r_key='Times Sq-42 St N Q R W S 1 2 3 7/42 St A C E',r_ast=true,conn='[[автовокзал Портового управления]]<sup>&#91;[[:en:Port Authority Bus Terminal|en]]&#93;</sup>',c_key='725'},
	{segment='Flush West',station='34-я улица — Хадсон-Ярдс (линия Флашинг, Ай-ар-ти)',acc='yes',subtype='bumper',eng='34th Street–Hudson Yards',opened='13 сентября 2015',r_key='34 St-Hudson Yards 7',c_key='726'},
}
local stations_future = {
	{segment='Second 2',station='125-я улица (линия Второй авеню, Ай-эн-ди)',acc='yes',eng='125th Street (IND Second Avenue Line)',opened='2 очередь',boro='M',
		conn='[[Харлем — 125-я улица (Metro-North)]]<sup>&#91;[[:en:Harlem–125th Street station|en]]&#93;</sup>'},
	{segment='Second 2',station='116-я улица (линия Второй авеню, Ай-эн-ди)',acc='yes',eng='116th Street (IND Second Avenue Line)',opened='2 очередь',boro='M'},
	{segment='Second 2',station='106-я улица (линия Второй авеню, Ай-эн-ди)',acc='yes',eng='106th Street (IND Second Avenue Line)',opened='2 очередь',boro='M'},
	{segment='Second 3',station='55-я улица (линия Второй авеню, Ай-эн-ди)',acc='yes',eng='55th Street (IND Second Avenue Line)',opened='3 очередь',boro='M'},
	{segment='Second 3',station='42-я улица (линия Второй авеню, Ай-эн-ди)',acc='yes',eng='42nd Street (IND Second Avenue Line)',opened='3 очередь',boro='M',
		conn='[[Центральный вокзал Нью-Йорка]]'},
	{segment='Second 3',station='34-я улица (линия Второй авеню, Ай-эн-ди)',acc='yes',eng='34th Street (IND Second Avenue Line)',opened='3 очередь',boro='M'},
	{segment='Second 3',station='23-я улица (линия Второй авеню, Ай-эн-ди)',acc='yes',eng='23rd Street (IND Second Avenue Line)',opened='3 очередь',boro='M'},
	{segment='Second 3',station='14-я улица (линия Второй авеню, Ай-эн-ди)',acc='yes',eng='14th Street (IND Second Avenue Line)',opened='3 очередь',boro='M'},
	{segment='Second 3',station='Хаустон-стрит (линия Второй авеню, Ай-эн-ди)',acc='yes',eng='Houston Street (IND Second Avenue Line)',opened='3 очередь',boro='M'},
	{segment='Second 4',station='Гранд-стрит (линия Второй авеню, Ай-эн-ди)',acc='yes',eng='Grand Street (IND Second Avenue Line)',opened='4 очередь',boro='M'},
	{segment='Second 4',station='Чатем-сквер (линия Второй авеню, Ай-эн-ди)',acc='yes',eng='Chatham Square (IND Second Avenue Line)',opened='4 очередь',boro='M'},
	{segment='Second 4',station='Сипорт (линия Второй авеню, Ай-эн-ди)',acc='yes',eng='Seaport (IND Second Avenue Line)',opened='4 очередь',boro='M'},
	{segment='Second 4',station='Хановер-сквер (линия Второй авеню, Ай-эн-ди)',acc='yes',eng='Hanover Square (IND Second Avenue Line)',opened='4 очередь',boro='M'},
}
local stations_former = {
	{segment='Myrtle 4',station='Мертл-авеню (линия Четвёртой авеню, Би-эм-ти)',en='Myrtle Avenue station (BMT Fourth Avenue Line)',eng='Myrtle Avenue',saved=true,opened='22 июня 1915',closed='16 июля 1956',struc='подземная',boro='B',type='o'},
	{segment='91',station='91-я улица (линия Бродвея и Седьмой авеню, Ай-ар-ти)',en='91st Street station (IRT Broadway–Seventh Avenue Line)',eng='91st Street',saved=true,opened='27 октября 1904',closed='2 февраля 1959',type='o',struc='подземная',boro='M'},
	{segment='SF Loop',station='Саут-Ферри (внешнее кольцо)',eng='South Ferry',saved=true,opened='10 июля 1905',closed='16 марта 2009',struc='подземная',boro='M'},
	-- transfer='старая станция (внешнее кольцо),<br>работавшая до открытия новой<br>(пересадки на другую линию не было)'
	{segment='SF Loop+',station='Саут-Ферри (Нью-Йоркское метро)',eng='South Ferry',saved=true,opened='10 июля 1905',closed='16 марта 2009',struc='подземная',boro='M',spur='sw'},
	-- transfer='внутреннее и внешнее кольца'
	{segment='Can Pier',station='Флатландс-авеню (линия Канарси, Би-эм-ти)',eng='Flatlands Avenue',opened='28 июля 1906',closed='1917',struc='наземная',boro='B'},
	{segment='Can Pier',station='Авеню Эл (линия Канарси, Би-эм-ти)',eng='Avenue L',opened='28 июля 1906',closed='1917',struc='наземная',boro='B'},
	{segment='Can Pier',station='Канарси-Пир (линия Канарси, Би-эм-ти)',eng='Canarsie Pier',opened='28 июля 1906',closed='1917',struc='наземная',boro='B'},
	--{segment='Cul Shuttle',station='Девятая авеню (линия Калвер, Би-эм-ти)',en='Ninth Avenue station',eng='Ninth Avenue',opened='16 марта 1919',closed='11 мая 1975',struc='в выемке',boro='B',
	--	transfer='станция была на нижнем<br>уровне станции [[Девятая авеню (линия Уэст-Энд, Би-эм-ти)|Девятая авеню]]'},
	{segment='Cul Shuttle',station='Форт-Гамильтон-Паркуэй (линия Калвер, Би-эм-ти)',en='Fort Hamilton Parkway station (BMT Culver Line)',eng='Fort Hamilton Parkway',opened='16 марта 1919',closed='11 мая 1975',type='o',boro='B'},
	{segment='Cul Shuttle',station='13-я авеню (линия Калвер, Би-эм-ти)',en='13th Avenue station (BMT Culver Line)',eng='13th Avenue',opened='16 марта 1919',closed='11 мая 1975',type='o',boro='B'},
	{segment='Dean',station='Дин-стрит (линия Франклин-авеню, Би-эм-ти)',en='Dean Street station',eng='Dean Street',opened='15 августа 1896',closed='1995',boro='B'},
	{segment='Museum',station='Корт-стрит (линия Фултон-стрит, Ай-эн-ди)',eng='Court Street',saved=true,opened='9 апреля 1936',closed='1946',struc='подземная',boro='B'},
	{segment='Jam Ultra',station='168-я улица (линия Джамейка, Би-эм-ти)',en='168th Street station (BMT Jamaica Line)',eng='168th Street',opened='3 июля 1918',closed='10 сентября 1977',boro='Q'},
	{segment='Jam Ultra',station='160-я улица (линия Джамейка, Би-эм-ти)',en='160th Street station',eng='160th Street',opened='3 июля 1918',closed='10 сентября 1977',boro='Q'},
	{segment='Jam Ultra',station='Сатфин-бульвар (линия Джамейка, Би-эм-ти)',en='Sutphin Boulevard station (BMT Jamaica Line)',eng='Sutphin Boulevard',opened='3 июля 1918',closed='10 сентября 1977',boro='Q'},
	{segment='Jam Ultra',station='Куинс-бульвар (линия Джамейка, Би-эм-ти)',en='Queens Boulevard station',eng='Queens Boulevard',opened='3 июля 1918',closed='15 апреля 1985',boro='Q'},
	{segment='Jam Ultra',station='Метрополитан-авеню (линия Джамейка, Би-эм-ти)',en='Metropolitan Avenue station (BMT Jamaica Line)',eng='Metropolitan Avenue',opened='3 июля 1918',closed='15 апреля 1985',boro='Q'},
	{segment='Jam Infra',station='Дригс-авеню (линия Джамейка, Би-эм-ти)',en='Driggs Avenue station',eng='Driggs Avenue',opened='25 июня 1888',closed='3 июля 1916',boro='B'},
	{segment='Jam Infra',station='Бродвей-Ферри (линия Джамейка, Би-эм-ти)',en='Broadway Ferry station',eng='Broadway Ferry',opened='14 июля 1888',closed='3 июля 1916',boro='B'},
	{segment='18',station='18-я улица (линия Лексингтон-авеню, Ай-ар-ти)',en='18th Street station (IRT Lexington Avenue Line)',eng='18th Street',saved=true,opened='27 октября 1904',closed='7 ноября 1948',type='o',struc='подземная',boro='M'},
	{segment='Worth',station='Уэрт-стрит (линия Лексингтон-авеню, Ай-ар-ти)',en='Worth Street station',eng='Worth Street',saved=true,opened='27 октября 1904',closed='1 сентября 1962',type='o',struc='подземная',boro='M'},
	{segment='CH',station='Сити-холл (линия Лексингтон-авеню, Ай-ар-ти)',en='City Hall station (IRT Lexington Avenue Line)',eng='City Hall',saved=true,opened='27 октября 1904',closed='31 декабря 1945',struc='подземная',boro='M',spur_noreincarn='sw'},
	{segment='Myr South 1',station='Парк-Роу (линия Мертл-авеню, Би-эм-ти)',en='Park Row Terminal',eng='Park Row',opened='18 июня 1898',closed='5 марта 1944',boro='M',
		below='Манхэттен<hr>[[Бруклинский мост]]<hr>Бруклин'},
	{segment='Myr South 1',station='Сандс-стрит (линия Мертл-авеню, Би-эм-ти)',en='Sands Street station',eng='Sands Street',opened='1 сентября 1888',closed='5 марта 1944',boro='B'},
	{segment='Myr South 2',station='Адамс-стрит (линия Мертл-авеню, Би-эм-ти)',en='Adams Street station',eng='Adams Street',opened='10 апреля 1888',closed='5 марта 1944',boro='B'},
	{segment='Myr South 2',station='Бридж-стрит — Джей-стрит (линия Мертл-авеню, Би-эм-ти)',en='Bridge–Jay Streets station',eng='Bridge–Jay Streets',opened='10 апреля 1888',closed='4 октября 1969',boro='B',
		transfer='с 1933 года была пересадка<br>на станцию [[Джей-стрит — Метротек (линии Ай-эн-ди)|Джей-стрит]]'},
	{segment='Myr South 3',station='Нейви-стрит (линия Мертл-авеню, Би-эм-ти)',en='Navy Street station',eng='Navy Street',opened='10 апреля 1888',closed='4 октября 1969',boro='B'},
	{segment='Myr South 3',station='Вандербилт-авеню (линия Мертл-авеню, Би-эм-ти)',en='Vanderbilt Avenue station (BMT Myrtle Avenue Line)',eng='Vanderbilt Avenue',opened='10 апреля 1888',closed='4 октября 1969',boro='B'},
	{segment='Myr South 3',station='Вашингтон-авеню (линия Мертл-авеню, Би-эм-ти)',en='Washington Avenue station',eng='Washington Avenue',opened='4 декабря 1888',closed='4 октября 1969',boro='B'},
	{segment='Myr South',station='Гранд-авеню (линия Мертл-авеню, Би-эм-ти)',en='Grand Avenue station (BMT Myrtle Avenue Line)',eng='Grand Avenue',opened='27 апреля 1889',closed='21 января 1953',boro='B'},
	{segment='Myr South',station='Франклин-авеню (линия Мертл-авеню, Би-эм-ти)',en='Franklin Avenue station (BMT Myrtle Avenue Line)',eng='Franklin Avenue',opened='27 апреля 1889',closed='4 октября 1969',boro='B'},
	{segment='Myr South',station='Ностранд-авеню (линия Мертл-авеню, Би-эм-ти)',en='Nostrand Avenue station (BMT Myrtle Avenue Line)',eng='Nostrand Avenue',opened='27 апреля 1889',closed='4 октября 1969',boro='B'},
	{segment='Myr South',station='Томпкинс-авеню (линия Мертл-авеню, Би-эм-ти)',en='Tompkins Avenue station (BMT Myrtle Avenue Line)',eng='Tompkins Avenue',opened='27 апреля 1889',closed='4 октября 1969',boro='B'},
	{segment='Myr South',station='Самнер-авеню (линия Мертл-авеню, Би-эм-ти)',en='Sumner Avenue station (BMT Myrtle Avenue Line)',eng='Sumner Avenue',opened='27 апреля 1889',closed='4 октября 1969',boro='B'},
	{segment='Myr South',station='Бродвей (линия Мертл-авеню, Би-эм-ти)',eng='Broadway',opened='27 апреля 1889',closed='4 октября 1969',boro='B',
		transfer='станция была на верхнем<br>уровне станции [[Мертл-авеню (линия Джамейка, Би-эм-ти)|Мертл-авеню]]'},
	{segment='180',station='180-я улица — Бронкс-парк (линия Уайт-Плейнс-роуд, Ай-ар-ти)',en='180th Street–Bronx Park station',eng='180th Street–Bronx Park',opened='26 ноября 1904',closed='4 августа 1952',boro='Bx',spur='nw'},
	{segment='Second 1',station='129-я улица (линия Второй авеню, Ай-ар-ти)',en='129th Street station',eng='129th Street',opened='30 декабря 1878',closed='11 июня 1940',boro='M',spur='nw',
		transfer='станция обслуживала поезда<br>линий [[Линия Второй авеню, Ай-ар-ти|Второй]] и [[Линия Третьей авеню, Ай-ар-ти|Третьей]] авеню'},
	{segment='Second 1',station='125-я улица (линия Второй авеню, Ай-ар-ти)',en='125th Street station (IRT Second Avenue Line)',eng='125th Street',opened='',closed='11 июня 1940',boro='M'},
	{segment='Second 1',station='121-я улица (линия Второй авеню, Ай-ар-ти)',en='121st Street station (IRT Second Avenue Line)',eng='121st Street',opened='',closed='11 июня 1940',boro='M',type='o'},
	{segment='Second 1',station='117-я улица (линия Второй авеню, Ай-ар-ти)',en='117th Street station',eng='117th Street',opened='',closed='11 июня 1940',boro='M',type='o'},
	{segment='Second 1',station='111-я улица (линия Второй авеню, Ай-ар-ти)',en='111th Street station (IRT Second Avenue Line)',eng='111th Street',opened='',closed='11 июня 1940',boro='M',type='o'},
	{segment='Second 1',station='105-я улица (линия Второй авеню, Ай-ар-ти)',en='105th Street station',eng='105th Street',opened='',closed='11 июня 1940',boro='M',type='o'},
	{segment='Second 1',station='99-я улица (линия Второй авеню, Ай-ар-ти)',en='99th Street station (IRT Second Avenue Line)',eng='99th Street',opened='',closed='11 июня 1940',boro='M',type='o'},
	{segment='Second 1',station='92-я улица (линия Второй авеню, Ай-ар-ти)',en='92nd Street station',eng='92nd Street',opened='',closed='11 июня 1940',boro='M',type='o'},
	{segment='Second 1',station='86-я улица (линия Второй авеню, Ай-ар-ти)',en='86th Street station (IRT Second Avenue Line)',eng='86th Street',opened='',closed='11 июня 1940',boro='M'},
	{segment='Second 1',station='80-я улица (линия Второй авеню, Ай-ар-ти)',en='80th Street station (IRT Second Avenue Line)',eng='80th Street',opened='',closed='11 июня 1940',boro='M',type='o'},
	{segment='Second 1',station='72-я улица (линия Второй авеню, Ай-ар-ти)',en='72nd Street station (IRT Second Avenue Line)',eng='72nd Street',opened='',closed='11 июня 1940',boro='M',type='o'},
	{segment='Second 1',station='65-я улица (линия Второй авеню, Ай-ар-ти)',en='65th Street station (IRT Second Avenue Line)',eng='65th Street',opened='1 марта 1880',closed='11 июня 1940',boro='M',type='o'},
	{segment='Second 2',station='57-я улица (линия Второй авеню, Ай-ар-ти)',en='57th Street station (IRT Second Avenue Line)',eng='57th Street',opened='',closed='13 июня 1942',boro='M'},
	{segment='Second 2',station='50-я улица (линия Второй авеню, Ай-ар-ти)',en='50th Street station (IRT Second Avenue Line)',eng='50th Street',opened='',closed='13 июня 1942',boro='M',type='o'},
	{segment='Second 2',station='42-я улица (линия Второй авеню, Ай-ар-ти)',en='42nd Street station (IRT Second Avenue Line)',eng='42nd Street',opened='1 марта 1880',closed='13 июня 1942',boro='M'},
	{segment='Second 2',station='34-я улица (линия Второй авеню, Ай-ар-ти)',en='34th Street station (IRT Second Avenue Line)',eng='34th Street',opened='',closed='13 июня 1942',boro='M',
		transfer='станция обслуживала поезда<br>[[Линия Второй авеню, Ай-ар-ти|линии Второй авеню]] и [[Линия Третьей авеню, Ай-ар-ти|челнока 34 улицы]]',type='o'},
	{segment='Second 2',station='23-я улица (линия Второй авеню, Ай-ар-ти)',en='23rd Street station (IRT Second Avenue Line)',eng='23rd Street',opened='1 марта 1880',closed='13 июня 1942',boro='M',type='o'},
	{segment='Second 2',station='19-я улица (линия Второй авеню, Ай-ар-ти)',en='19th Street station (IRT Second Avenue Line)',eng='19th Street',opened='',closed='13 июня 1942',boro='M',type='o'},
	{segment='Second 2',station='14-я улица (линия Второй авеню, Ай-ар-ти)',en='14th Street station (IRT Second Avenue Line)',eng='14th Street',opened='1 марта 1880',closed='13 июня 1942',boro='M'},
	{segment='Second 2',station='Восьмая улица (линия Второй авеню, Ай-ар-ти)',en='Eighth Street station (IRT Second Avenue Line)',eng='Eighth Street',opened='1 марта 1880',closed='13 июня 1942',boro='M',type='o'},
	{segment='Second 2',station='Первая улица (линия Второй авеню, Ай-ар-ти)',en='First Street station (IRT Second Avenue Line)',eng='First Street',opened='1 марта 1880',closed='13 июня 1942',boro='M',type='o'},
	{segment='Second 2',station='Ривингтон-стрит (линия Второй авеню, Ай-ар-ти)',en='Rivington Street station',eng='Rivington Street',opened='1 марта 1880',closed='13 июня 1942',boro='M',type='o'},
	{segment='Second 2',station='Гранд-стрит (линия Второй авеню, Ай-ар-ти)',en='Grand Street station (IRT Second Avenue Line)',eng='Grand Street',opened='1 марта 1880',closed='13 июня 1942',boro='M',type='o'},
	{segment='Second 2',station='Канал-стрит (линия Второй авеню, Ай-ар-ти)',en='Canal Street station (IRT Second Avenue Line)',eng='Canal Street',opened='1 марта 1880',closed='13 июня 1942',boro='M',type='o'},
	{segment='Second Chatham',station='Чатем-сквер (линия Второй авеню, Ай-ар-ти)',en='Chatham Square station',eng='Chatham Square',opened='1 марта 1880',closed='12 мая 1955',boro='M',
		transfer='станция обслуживала поезда<br>линий [[Линия Второй авеню, Ай-ар-ти|Второй]] и [[Линия Третьей авеню, Ай-ар-ти|Третьей]] авеню'},
	{segment='Second CH',station='Сити-холл (линия Второй авеню, Ай-ар-ти)',en='City Hall station (IRT Second Avenue Line)',eng='City Hall',opened='17 марта 1879',closed='31 декабря 1953',boro='M',
		transfer='станция обслуживала поезда<br>линий [[Линия Второй авеню, Ай-ар-ти|Второй]] и [[Линия Третьей авеню, Ай-ар-ти|Третьей]] авеню'},
	--{segment='Third GHR',station='Ган-Хилл-роуд (линия Третьей авеню, Ай-ар-ти)',eng='Gun Hill Road',opened='4 октября 1920',closed='29 апреля 1973',boro='Bx',
	--	transfer='станция была на нижнем<br>уровне станции [[Ган-Хилл-роуд (линия Уайт-Плейнс-роуд, Ай-ар-ти)|Ган-Хилл-роуд]]'},
	{segment='Third 1',station='210-я улица — Уильямсбридж (линия Третьей авеню, Ай-ар-ти)',en='210th Street–Williamsbridge station',eng='210th Street–Williamsbridge',opened='4 октября 1920',closed='29 апреля 1973',boro='Bx',type='o'},
	{segment='Third 1',station='204-я улица (линия Третьей авеню, Ай-ар-ти)',en='204th Street station',eng='204th Street',opened='4 октября 1920',closed='29 апреля 1973',boro='Bx',type='o'},
	{segment='Third 1',station='200-я улица (линия Третьей авеню, Ай-ар-ти)',en='200th Street station',eng='200th Street',opened='4 октября 1920',closed='29 апреля 1973',boro='Bx',type='o'},
	{segment='Third 1',station='Бронкс-парк-терминал (линия Третьей авеню, Ай-ар-ти)',en='Bronx Park Terminal',eng='Bronx Park Terminal',opened='21 мая 1902',closed='14 ноября 1951',boro='Bx',spur='ne'},
	{segment='Third 1',station='Фордем-роуд — 190-я улица (линия Третьей авеню, Ай-ар-ти)',en='Fordham Road–190th Street station',eng='Fordham Road–190th Street',opened='1 июля 1901',closed='29 апреля 1973',boro='Bx'},
	{segment='Third 1',station='183-я улица (линия Третьей авеню, Ай-ар-ти)',en='183rd Street station (IRT Third Avenue Line)',eng='183rd Street',opened='1 июля 1901',closed='29 апреля 1973',boro='Bx',type='o'},
	{segment='Third 1',station='180-я улица (линия Третьей авеню, Ай-ар-ти)',en='180th Street station (IRT Third Avenue Line)',eng='180th Street',opened='1 июля 1901',closed='29 апреля 1973',boro='Bx',type='o'},
	{segment='Third 1',station='Тремонт-авеню — 177-я улица (линия Третьей авеню, Ай-ар-ти)',en='Tremont Avenue–177th Street station',eng='Tremont Avenue–177th Street',opened='20 июля 1891',closed='29 апреля 1973',boro='Bx'},
	{segment='Third 1',station='174-я улица (линия Третьей авеню, Ай-ар-ти)',en='174th Street station (IRT Third Avenue Line)',eng='174th Street',opened='20 июля 1891',closed='29 апреля 1973',boro='Bx',type='o'},
	{segment='Third 1',station='Клэрмонт-Паркуэй (линия Третьей авеню, Ай-ар-ти)',en='Claremont Parkway station',eng='Claremont Parkway',opened='19 сентября 1888',closed='29 апреля 1973',boro='Bx',type='o'},
	{segment='Third 1',station='169-я улица (линия Третьей авеню, Ай-ар-ти)',en='169th Street station (IRT Third Avenue Line)',eng='169th Street',opened='2 сентября 1888',closed='29 апреля 1973',boro='Bx',type='o'},
	{segment='Third 1',station='166-я улица (линия Третьей авеню, Ай-ар-ти)',en='166th Street station',eng='166th Street',opened='25 декабря 1887',closed='29 апреля 1973',boro='Bx',type='o'},
	{segment='Third 1',station='161-я улица (линия Третьей авеню, Ай-ар-ти)',en='161st Street station (IRT Third Avenue Line)',eng='161st Street',opened='7 августа 1887',closed='29 апреля 1973',boro='Bx',type='o'},
	{segment='Third 1',station='156-я улица (линия Третьей авеню, Ай-ар-ти)',en='156th Street station',eng='156th Street',opened='1 июля 1887',closed='29 апреля 1973',boro='Bx',type='o'},
	{segment='Third 1',station='149-я улица (линия Третьей авеню, Ай-ар-ти)',en='149th Street station (IRT Third Avenue Line)',eng='149th Street',opened='16 июня 1887',closed='29 апреля 1973',boro='Bx',
		transfer='была пересадка на станцию<br>[[Третья авеню — 149-я улица (линия Уайт-Плейнс-роуд, Ай-ар-ти)|Третья авеню — 149-я улица]]'},
	{segment='Third 2',station='143-я улица (линия Третьей авеню, Ай-ар-ти)',en='143rd Street station',eng='143rd Street',opened='23 мая 1886',closed='12 мая 1955',boro='Bx'},
	{segment='Third 2',station='138-я улица (линия Третьей авеню, Ай-ар-ти)',en='138th Street station (IRT Third Avenue Line)',eng='138th Street',opened='1 января 1887',closed='12 мая 1955',boro='Bx'},
	{segment='Third 2',station='133-я улица (линия Третьей авеню, Ай-ар-ти)',en='133rd Street station',eng='133rd Street',opened='17 мая 1886',closed='12 мая 1955',boro='Bx'},
	{segment='Third Willis',station='Уиллис-авеню (линия Третьей авеню, Ай-ар-ти)',en='Willis Avenue station',eng='Willis Avenue',opened='25 ноября 1886',closed='14 апреля 1924',boro='Bx',spur='ne'},
	{segment='Third 129',station='129-я улица (линия Третьей авеню, Ай-ар-ти)',en='129th Street station',eng='129th Street',opened='30 декабря 1878',closed='12 мая 1955',boro='M',type='o',
		transfer='станция обслуживала поезда<br>линий [[Линия Второй авеню, Ай-ар-ти|Второй]] и [[Линия Третьей авеню, Ай-ар-ти|Третьей]] авеню',above='Бронкс<hr>Манхэттен'},
	{segment='Third 3',station='125-я улица (линия Третьей авеню, Ай-ар-ти)',en='125th Street station (IRT Third Avenue Line)',eng='125th Street',opened='30 декабря 1878',closed='12 мая 1955',boro='M'},
	{segment='Third 3',station='116-я улица (линия Третьей авеню, Ай-ар-ти)',en='116th Street station (IRT Third Avenue Line)',eng='116th Street',opened='30 декабря 1878',closed='12 мая 1955',boro='M',type='o'},
	{segment='Third 3',station='106-я улица (линия Третьей авеню, Ай-ар-ти)',en='106th Street station (IRT Third Avenue Line)',eng='106th Street',opened='30 декабря 1878',closed='12 мая 1955',boro='M'},
	{segment='Third 3',station='99-я улица (линия Третьей авеню, Ай-ар-ти)',en='99th Street station (IRT Third Avenue Line)',eng='99th Street',opened='30 декабря 1878',closed='12 мая 1955',boro='M',type='o'},
	{segment='Third 3',station='89-я улица (линия Третьей авеню, Ай-ар-ти)',en='89th Street station',eng='89th Street',opened='9 декабря 1878',closed='12 мая 1955',boro='M',type='o'},
	{segment='Third 3',station='84-я улица (линия Третьей авеню, Ай-ар-ти)',en='84th Street station',eng='84th Street',opened='9 декабря 1878',closed='12 мая 1955',boro='M',type='o'},
	{segment='Third 3',station='76-я улица (линия Третьей авеню, Ай-ар-ти)',en='76th Street station (IRT Third Avenue Line)',eng='76th Street',opened='9 декабря 1878',closed='12 мая 1955',boro='M',type='o'},
	{segment='Third 3',station='67-я улица (линия Третьей авеню, Ай-ар-ти)',en='67th Street station',eng='67th Street',opened='16 сентября 1878',closed='12 мая 1955',boro='M',type='o'},
	{segment='Third 3',station='59-я улица (линия Третьей авеню, Ай-ар-ти)',en='59th Street station (IRT Third Avenue Line)',eng='59th Street',opened='16 сентября 1878',closed='12 мая 1955',boro='M',type='o'},
	{segment='Third 3',station='53-я улица (линия Третьей авеню, Ай-ар-ти)',en='53rd Street station (IRT Third Avenue Line)',eng='53rd Street',opened='16 сентября 1878',closed='12 мая 1955',boro='M',type='o'},
	{segment='Third 3',station='47-я улица (линия Третьей авеню, Ай-ар-ти)',en='47th Street station (IRT Third Avenue Line)',eng='47th Street',opened='16 сентября 1878',closed='12 мая 1955',boro='M',type='o'},
	{segment='Third 3',station='Центральный вокзал (линия Третьей авеню, Ай-ар-ти)',en='Grand Central station (IRT elevated)',eng='Grand Central',opened='26 августа 1878',closed='6 декабря 1923',boro='M',spur='nw'},
	{segment='Third 3',station='42-я улица (линия Третьей авеню, Ай-ар-ти)',en='42nd Street station (IRT Third Avenue Line)',eng='42nd Street',opened='16 сентября 1878',closed='12 мая 1955',boro='M'},
	{segment='Third 34',station='Паром 34-й улицы (линия Третьей авеню, Ай-ар-ти)',en='34th Street Ferry station',eng='34th Street Ferry',opened='1 июля 1880',closed='14 июля 1930',boro='M'},
	{segment='Third 34',station='Вторая авеню (линия Третьей авеню, Ай-ар-ти)',en='34th Street station (IRT Second Avenue Line)',eng='Second Avenue',opened='',closed='14 июля 1930',boro='M',
		transfer='станция обслуживала поезда<br>[[Линия Второй авеню, Ай-ар-ти|линии Второй авеню]] и [[Линия Третьей авеню, Ай-ар-ти|челнока 34 улицы]]'},
	{segment='Third 4',station='34-я улица (линия Третьей авеню, Ай-ар-ти)',en='34th Street station (IRT Third Avenue Line)',eng='34th Street',opened='26 августа 1878',closed='12 мая 1955',boro='M',type='o',
		transfer='<b>Заканчивался челнок 34 улицы</b>'},
	{segment='Third 4',station='28-я улица (линия Третьей авеню, Ай-ар-ти)',en='28th Street station (IRT Third Avenue Line)',eng='28th Street',opened='',closed='12 мая 1955',boro='M',type='o'},
	{segment='Third 4',station='23-я улица (линия Третьей авеню, Ай-ар-ти)',en='23rd Street station (IRT Third Avenue Line)',eng='23rd Street',opened='26 августа 1878',closed='12 мая 1955',boro='M'},
	{segment='Third 4',station='18-я улица (линия Третьей авеню, Ай-ар-ти)',en='18th Street station (IRT Third Avenue Line)',eng='18th Street',opened='',closed='12 мая 1955',boro='M',type='o'},
	{segment='Third 4',station='14-я улица (линия Третьей авеню, Ай-ар-ти)',en='14th Street station (IRT Third Avenue Line)',eng='14th Street',opened='26 августа 1878',closed='12 мая 1955',boro='M',type='o'},
	{segment='Third 4',station='Девятая улица (линия Третьей авеню, Ай-ар-ти)',en='Ninth Street station (IRT Third Avenue Line)',eng='Ninth Street',opened='26 августа 1878',closed='12 мая 1955',boro='M'},
	{segment='Third 4',station='Хаустон-стрит (линия Третьей авеню, Ай-ар-ти)',en='Houston Street station (IRT Third Avenue Line)',eng='Houston Street',opened='16 сентября 1878',closed='12 мая 1955',boro='M'},
	{segment='Third 4',station='Гранд-стрит (линия Третьей авеню, Ай-ар-ти)',en='Grand Street station (IRT Third Avenue Line)',eng='Grand Street',opened='',closed='12 мая 1955',boro='M'},
	{segment='Third 4',station='Канал-стрит (линия Третьей авеню, Ай-ар-ти)',en='Canal Street station (IRT Third Avenue Line)',eng='Canal Street',opened='',closed='12 мая 1955',boro='M'},
	{segment='Third Chatham',station='Чатем-сквер (линия Третьей авеню, Ай-ар-ти)',en='Chatham Square station',eng='Chatham Square',opened='17 марта 1879',closed='31 декабря 1953',boro='M',
		transfer='станция обслуживала поезда<br>линий [[Линия Второй авеню, Ай-ар-ти|Второй]] и [[Линия Третьей авеню, Ай-ар-ти|Третьей]] авеню'},
	{segment='Third CH',station='Сити-холл (линия Третьей авеню, Ай-ар-ти)',en='City Hall station (IRT Second Avenue Line)',eng='City Hall',opened='17 марта 1879',closed='31 декабря 1953',boro='M',
		transfer='станция обслуживала поезда<br>линий [[Линия Второй авеню, Ай-ар-ти|Второй]] и [[Линия Третьей авеню, Ай-ар-ти|Третьей]] авеню',spur='sw'},
	{segment='Third 5',station='Франклин-сквер (линия Третьей авеню, Ай-ар-ти)',en='Franklin Square station (IRT Third Avenue Line)',eng='Franklin Square',opened='26 августа 1878',closed='22 декабря 1950',boro='M'},
	{segment='Third 5',station='Фултон-стрит (линия Третьей авеню, Ай-ар-ти)',en='Fulton Street station (IRT Third Avenue Line)',eng='Fulton Street',opened='26 августа 1878',closed='22 декабря 1950',boro='M'},
	{segment='Third 5',station='Хановер-сквер (линия Третьей авеню, Ай-ар-ти)',en='Hanover Square station',eng='Hanover Square',opened='26 августа 1878',closed='22 декабря 1950',boro='M'},
	{segment='SF elevated',station='Саут-Ферри (линия Третьей авеню, Ай-ар-ти)',en='South Ferry station (IRT elevated)',eng='South Ferry',opened='26 августа 1878',closed='22 декабря 1950',boro='M',
		transfer='станция обслуживала поезда<br>линий [[Линия Третьей авеню, Ай-ар-ти|Третьей]], [[Линия Шестой авеню, Ай-ар-ти|Шестой]] и [[Линия Девятой авеню, Ай-ар-ти|Девятой]] авеню'},
	{segment='Sixth 1',station='53-я улица и Восьмая авеню (линия Шестой авеню, Ай-ар-ти)',en='53rd Street and Eighth Avenue station',eng='53rd Street and Eighth Avenue',opened='1881',closed='4 декабря 1938',boro='M',type='o'},
	{segment='Sixth 1',station='Терминал 58-й улицы (линия Шестой авеню, Ай-ар-ти)',en='58th Street Terminal',eng='58th Street Terminal',opened='5 июня 1878',closed='16 июня 1924',boro='M',spur='ne'},
	{segment='Sixth 1',station='50-я улица (линия Шестой авеню, Ай-ар-ти)',en='50th Street station (IRT Sixth Avenue Line)',eng='50th Street',opened='5 июня 1878',closed='4 декабря 1938',boro='M'},
	{segment='Sixth 1',station='42-я улица (линия Шестой авеню, Ай-ар-ти)',en='42nd Street station (IRT Sixth Avenue Line)',eng='42nd Street',opened='5 июня 1878',closed='4 декабря 1938',boro='M'},
	{segment='Sixth 1',station='38-я улица (линия Шестой авеню, Ай-ар-ти)',en='38th Street station (IRT Sixth Avenue Line)',eng='38th Street',opened='31 января 1914',closed='4 декабря 1938',boro='M'},
	{segment='Sixth 1',station='33-я улица (линия Шестой авеню, Ай-ар-ти)',en='33rd Street station (IRT Sixth Avenue Line)',eng='33rd Street',opened='5 июня 1878',closed='4 декабря 1938',boro='M'},
	{segment='Sixth 1',station='28-я улица (линия Шестой авеню, Ай-ар-ти)',en='28th Street station (IRT Sixth Avenue Line)',eng='28th Street',opened='1892',closed='4 декабря 1938',boro='M'},
	{segment='Sixth 1',station='23-я улица (линия Шестой авеню, Ай-ар-ти)',en='23rd Street station (IRT Sixth Avenue Line)',eng='23rd Street',opened='5 июня 1878',closed='4 декабря 1938',boro='M'},
	{segment='Sixth 1',station='18-я улица (линия Шестой авеню, Ай-ар-ти)',en='18th Street station (IRT Sixth Avenue Line)',eng='18th Street',opened='1892',closed='4 декабря 1938',boro='M'},
	{segment='Sixth 1',station='14-я улица (линия Шестой авеню, Ай-ар-ти)',en='14th Street station (IRT Sixth Avenue Line)',eng='14th Street',opened='5 июня 1878',closed='4 декабря 1938',boro='M'},
	{segment='Sixth 1',station='Восьмая улица (линия Шестой авеню, Ай-ар-ти)',en='Eighth Street station (IRT Sixth Avenue Line)',eng='Eighth Street',opened='5 июня 1878',closed='4 декабря 1938',boro='M'},
	{segment='Sixth 1',station='Бликер-стрит (линия Шестой авеню, Ай-ар-ти)',en='Bleecker Street station (IRT Sixth Avenue Line)',eng='Bleecker Street',opened='5 июня 1878',closed='4 декабря 1938',boro='M'},
	{segment='Sixth 1',station='Гранд-стрит (линия Шестой авеню, Ай-ар-ти)',en='Grand Street station (IRT Sixth Avenue Line)',eng='Grand Street',opened='5 июня 1878',closed='4 декабря 1938',boro='M'},
	{segment='Sixth 1',station='Франклин-стрит (линия Шестой авеню, Ай-ар-ти)',en='Franklin Street station (IRT Sixth Avenue Line)',eng='Franklin Street',opened='5 июня 1878',closed='4 декабря 1938',boro='M',type='o'},
	{segment='Sixth 1',station='Чеймберс-стрит (линия Шестой авеню, Ай-ар-ти)',en='Chambers Street station (IRT Sixth Avenue Line)',eng='Chambers Street',opened='5 июня 1878',closed='4 декабря 1938',boro='M'},
	{segment='Sixth 1',station='Парк-Плейс (линия Шестой авеню, Ай-ар-ти)',en='Park Place station (IRT Sixth Avenue Line)',eng='Park Place',opened='5 июня 1878',closed='4 декабря 1938',boro='M'},
	{segment='Sixth 1',station='Кортландт-стрит (линия Шестой авеню, Ай-ар-ти)',en='Cortlandt Street station (IRT Sixth Avenue Line)',eng='Cortlandt Street',opened='5 июня 1878',closed='4 декабря 1938',boro='M',type='o'},
	{segment='Sixth 1',station='Ректор-стрит (линия Шестой авеню, Ай-ар-ти)',en='Rector Street station (IRT Sixth Avenue Line)',eng='Rector Street',opened='5 июня 1878',closed='4 декабря 1938',boro='M',type='o'},
	{segment='BP',station='Баттери-Плейс (линия Шестой авеню, Ай-ар-ти)',en='Battery Place station',eng='Battery Place',opened='',closed='11 июня 1940',boro='M',
		transfer='станция обслуживала поезда<br>линий [[Линия Шестой авеню, Ай-ар-ти|Шестой]] и [[Линия Девятой авеню, Ай-ар-ти|Девятой]] авеню'},
	{segment='Ninth 1',station='Андерсон-авеню — Джером-авеню (линия Девятой авеню, Ай-ар-ти)',en='Anderson–Jerome Avenues station',eng='Anderson–Jerome Avenues',opened='1 июля 1918',closed='31 августа 1958',struc='эстакадная и подземная',boro='Bx',
		transfer='частично сохранилась'},
	{segment='Ninth 1',station='Седжвик-авеню (линия Девятой авеню, Ай-ар-ти)',en='Sedgwick Avenue station',eng='Sedgwick Avenue',opened='1 июля 1918',closed='31 августа 1958',struc='эстакадная и подземная',boro='Bx',
		transfer='частично сохранилась'},
	{segment='Ninth 1',station='155-я улица (линия Девятой авеню, Ай-ар-ти)',en='155th Street station (IRT Ninth Avenue Line)',eng='155th Street',opened='1879',closed='31 августа 1958',boro='M',above='Бронкс<hr>Манхэттен'},
	{segment='Ninth 1',station='151-я улица (линия Девятой авеню, Ай-ар-ти)',en='151st Street station',eng='151st Street',opened='15 ноября 1917',closed='11 июня 1940',boro='M',type='o'},
	{segment='Ninth 1',station='145-я улица (линия Девятой авеню, Ай-ар-ти)',en='145th Street station (IRT Ninth Avenue Line)',eng='145th Street',opened='1 декабря 1879',closed='11 июня 1940',boro='M'},
	{segment='Ninth 1',station='140-я улица (линия Девятой авеню, Ай-ар-ти)',en='140th Street station (IRT Ninth Avenue Line)',eng='140th Street',opened='27 сентября 1879',closed='11 июня 1940',boro='M',type='o'},
	{segment='Ninth 1',station='135-я улица (линия Девятой авеню, Ай-ар-ти)',en='135th Street station (IRT Ninth Avenue Line)',eng='135th Street',opened='27 сентября 1879',closed='11 июня 1940',boro='M',type='o'},
	{segment='Ninth 1',station='130-я улица (линия Девятой авеню, Ай-ар-ти)',en='130th Street station',eng='130th Street',opened='27 сентября 1879',closed='11 июня 1940',boro='M',type='o'},
	{segment='Ninth 1',station='125-я улица (линия Девятой авеню, Ай-ар-ти)',en='125th Street station (IRT Ninth Avenue Line)',eng='125th Street',opened='17 сентября 1879',closed='11 июня 1940',boro='M'},
	{segment='Ninth 1',station='116-я улица (линия Девятой авеню, Ай-ар-ти)',en='116th Street station (IRT Ninth Avenue Line)',eng='116th Street',opened='17 сентября 1879',closed='11 июня 1940',boro='M'},
	{segment='Ninth 1',station='110-я улица (линия Девятой авеню, Ай-ар-ти)',en='110th Street station (IRT Ninth Avenue Line)',eng='110th Street',opened='3 июня 1903',closed='11 июня 1940',boro='M',type='o'},
	{segment='Ninth 1',station='104-я улица (линия Девятой авеню, Ай-ар-ти)',en='104th Street station (IRT Ninth Avenue Line)',eng='104th Street',opened='21 июня 1879',closed='11 июня 1940',boro='M',type='o'},
	{segment='Ninth 1',station='99-я улица (линия Девятой авеню, Ай-ар-ти)',en='99th Street station (IRT Ninth Avenue Line)',eng='99th Street',opened='21 июня 1879',closed='11 июня 1940',boro='M',type='o'},
	{segment='Ninth 1',station='93-я улица (линия Девятой авеню, Ай-ар-ти)',en='93rd Street station',eng='93rd Street',opened='21 июня 1879',closed='11 июня 1940',boro='M',type='o'},
	{segment='Ninth 1',station='86-я улица (линия Девятой авеню, Ай-ар-ти)',en='86th Street station (IRT Ninth Avenue Line)',eng='86th Street',opened='21 июня 1879',closed='11 июня 1940',boro='M',type='o'},
	{segment='Ninth 1',station='81-я улица (линия Девятой авеню, Ай-ар-ти)',en='81st Street station (IRT Ninth Avenue Line)',eng='81st Street',opened='9 июня 1879',closed='11 июня 1940',boro='M',type='o'},
	{segment='Ninth 1',station='72-я улица (линия Девятой авеню, Ай-ар-ти)',en='72nd Street station (IRT Ninth Avenue Line)',eng='72nd Street',opened='9 июня 1879',closed='11 июня 1940',boro='M',type='o'},
	{segment='Ninth 1',station='66-я улица (линия Девятой авеню, Ай-ар-ти)',en='66th Street station (IRT Ninth Avenue Line)',eng='66th Street',opened='',closed='11 июня 1940',boro='M'},
	{segment='Ninth 1',station='59-я улица (линия Девятой авеню, Ай-ар-ти)',en='59th Street station (IRT Ninth Avenue Line)',eng='59th Street',opened='9 июня 1879',closed='11 июня 1940',boro='M',type='o'},
	{segment='Ninth 2',station='50-я улица (линия Девятой авеню, Ай-ар-ти)',en='50th Street station (IRT Ninth Avenue Line)',eng='50th Street',opened='18 января 1876',closed='11 июня 1940',boro='M',type='o'},
	{segment='Ninth 2',station='42-я улица (линия Девятой авеню, Ай-ар-ти)',en='42nd Street station (IRT Ninth Avenue Line)',eng='42nd Street',opened='6 ноября 1875',closed='11 июня 1940',boro='M',type='o'},
	{segment='Ninth 2',station='34-я улица (линия Девятой авеню, Ай-ар-ти)',en='34th Street station (IRT Ninth Avenue Line)',eng='34th Street',opened='30 июля 1873',closed='11 июня 1940',boro='M'},
	{segment='Ninth 2',station='30-я улица (линия Девятой авеню, Ай-ар-ти)',en='30th Street station (IRT Ninth Avenue Line)',eng='30th Street',opened='13 декабря 1873',closed='11 июня 1940',boro='M',type='o'},
	{segment='Ninth 2',station='23-я улица (линия Девятой авеню, Ай-ар-ти)',en='23rd Street station (IRT Ninth Avenue Line)',eng='23rd Street',opened='21 октября 1873',closed='11 июня 1940',boro='M',type='o'},
	{segment='Ninth 2',station='14-я улица (линия Девятой авеню, Ай-ар-ти)',en='14th Street station (IRT Ninth Avenue Line)',eng='14th Street',opened='',closed='11 июня 1940',boro='M'},
	{segment='Ninth 2',station='Кристофер-стрит (линия Девятой авеню, Ай-ар-ти)',en='Christopher Street station (IRT Ninth Avenue Line)',eng='Christopher Street',opened='3 ноября 1873',closed='11 июня 1940',boro='M'},
	{segment='Ninth 2',station='Хаустон-стрит (линия Девятой авеню, Ай-ар-ти)',en='Houston Street station (IRT Ninth Avenue Line)',eng='Houston Street',opened='3 ноября 1873',closed='11 июня 1940',boro='M',type='o'},
	{segment='Ninth 2',station='Дебросс-стрит (линия Девятой авеню, Ай-ар-ти)',en='Desbrosses Street station',eng='Desbrosses Street',opened='23 ноября 1873',closed='11 июня 1940',boro='M'},
	{segment='Ninth 2',station='Франклин-стрит (линия Девятой авеню, Ай-ар-ти)',en='Franklin Street station (IRT Ninth Avenue Line)',eng='Franklin Street',opened='21 января 1873',closed='11 июня 1940',boro='M',type='o'},
	{segment='Ninth 2',station='Уоррен-стрит (линия Девятой авеню, Ай-ар-ти)',en='Warren Street station (IRT Ninth Avenue Line)',eng='Warren Street',opened='14 февраля 1870',closed='11 июня 1940',boro='M'},
	{segment='Ninth 2',station='Баркли-стрит (линия Девятой авеню, Ай-ар-ти)',en='Barclay Street station',eng='Barclay Street',opened='14 февраля 1870',closed='11 июня 1940',boro='M',type='o'},
	{segment='Ninth 2',station='Кортландт-стрит (линия Девятой авеню, Ай-ар-ти)',en='Cortlandt Street station (IRT Ninth Avenue Line)',eng='Cortlandt Street',opened='25 мая 1874',closed='11 июня 1940',boro='M'},
	{segment='Ninth 2',station='Ректор-стрит (линия Девятой авеню, Ай-ар-ти)',en='Rector Street station (IRT Ninth Avenue Line)',eng='Rector Street',opened='25 мая 1874',closed='11 июня 1940',boro='M'}, --two additional tracks ended at a bumper just south of the station
	{segment='Fifth 1',station='Фултон-стрит (линия Пятой авеню, Би-эм-ти)',en='Fulton Street station (BMT Fifth Avenue Line)',eng='Fulton Street',opened='27 июля 1889',closed='1 июня 1940',boro='B'},
	{segment='Fifth 1',station='Атлантик-авеню (линия Пятой авеню, Би-эм-ти)',en='Atlantic Avenue (BMT Fifth Avenue Line)',eng='Atlantic Avenue',opened='5 ноября 1888',closed='1 июня 1940',boro='B',
		transfer='была пересадка на станции «Атлантик-авеню»<br>линий [[Атлантик-авеню — Барклайс-центр (линия Брайтон, Би-эм-ти)|Брайтон]] и [[Атлантик-авеню — Барклайс-центр (линия Четвёртой авеню, Би-эм-ти)|Четвёртой авеню]]'},
	{segment='Fifth 1',station='Сент-Маркс-авеню (линия Пятой авеню, Би-эм-ти)',en='Saint Marks Avenue station',eng='St. Marks Avenue',opened='22 июня 1889',closed='1 июня 1940',boro='B'},
	{segment='Fifth 1',station='Юнион-стрит (линия Пятой авеню, Би-эм-ти)',en='Union Street station (BMT Fifth Avenue Line)',eng='Union Street',opened='22 июня 1889',closed='1 июня 1940',boro='B'},
	{segment='Fifth 1',station='Третья улица (линия Пятой авеню, Би-эм-ти)',en='Third Street station (BMT Fifth Avenue Line)',eng='Third Street',opened='22 июня 1889',closed='1 июня 1940',boro='B'},
	{segment='Fifth 1',station='Девятая улица (линия Пятой авеню, Би-эм-ти)',en='Ninth Street station (BMT Fifth Avenue Line)',eng='Ninth Street',opened='15 августа 1889',closed='1 июня 1940',boro='B'},
	{segment='Fifth 1',station='16-я улица (линия Пятой авеню, Би-эм-ти)',en='16th Street station (BMT Fifth Avenue Line)',eng='16th Street',opened='15 августа 1889',closed='1 июня 1940',boro='B'},
	{segment='Fifth 1',station='20-я улица (линия Пятой авеню, Би-эм-ти)',en='20th Street station (BMT Fifth Avenue Line)',eng='20th Street',opened='15 августа 1889',closed='1 июня 1940',boro='B'},
	{segment='Fifth 1',station='25-я улица (линия Пятой авеню, Би-эм-ти)',en='25th Street station (BMT Fifth Avenue Line)',eng='25th Street',opened='15 августа 1889',closed='1 июня 1940',boro='B'},
	{segment='Fifth 1',station='36-я улица (линия Пятой авеню, Би-эм-ти)',en='36th Street station (BMT Fifth Avenue Line)',eng='36th Street',opened='29 мая 1890',closed='1 июня 1940',boro='B'},
	{segment='Fifth 2',station='40-я улица (линия Пятой авеню, Би-эм-ти)',en='40th Street station (BMT Fifth Avenue Line)',eng='40th Street',opened='1 октября 1893',closed='1 июня 1940',boro='B'},
	{segment='Fifth 2',station='46-я улица (линия Пятой авеню, Би-эм-ти)',en='46th Street station (BMT Fifth Avenue Line)',eng='46th Street',opened='1 октября 1893',closed='1 июня 1940',boro='B'},
	{segment='Fifth 2',station='52-я улица (линия Пятой авеню, Би-эм-ти)',en='52nd Street station (BMT Fifth Avenue Line)',eng='52nd Street',opened='1 октября 1893',closed='1 июня 1940',boro='B'},
	{segment='Fifth 2',station='58-я улица (линия Пятой авеню, Би-эм-ти)',en='58th Street station (BMT Fifth Avenue Line)',eng='58th Street',opened='1 октября 1893',closed='1 июня 1940',boro='B'},
	{segment='Fifth 2',station='65-я улица (линия Пятой авеню, Би-эм-ти)',en='65th Street Terminal station',eng='65th Street',opened='1 октября 1893',closed='1 июня 1940',boro='B'},
	{segment='FF',station='Фултон-Ферри (линия Фултон-стрит, Би-эм-ти)',en='Fulton Ferry station',eng='Fulton Ferry',opened='24 апреля 1888',closed='1 июня 1940',boro='B'},
	{segment='Ful 0',station='Кларк-стрит (линия Фултон-стрит, Би-эм-ти)',station2='Тиллари-стрит (линия Фултон-стрит, Би-эм-ти)',en='Clark–Tillary Streets station',eng='Clark Street, Tillary Street',opened='24 апреля 1888',closed='1 июня 1940',boro='B'},
	{segment='Ful 0',station='Корт-стрит (линия Фултон-стрит, Би-эм-ти)',station2='Мертл-авеню (линия Фултон-стрит, Би-эм-ти)',en='Court Street–Myrtle Avenue station',eng='Court Street, Myrtle Avenue',opened='24 апреля 1888',closed='1 июня 1940',boro='B'},
	{segment='Ful 0',station='Борум-Плейс (линия Фултон-стрит, Би-эм-ти)',en='Boerum Place station',eng='Boerum Place',opened='24 апреля 1888',closed='1 июня 1940',boro='B'},
	{segment='Ful 0',station='Элм-Плейс — Даффилд-стрит (линия Фултон-стрит, Би-эм-ти)',en='Elm Place–Duffield Street station',eng='Elm Place–Duffield Street',opened='24 апреля 1888',closed='1 июня 1940',boro='B'},
	{segment='Ful 0',station='Флатбуш-авеню (линия Фултон-стрит, Би-эм-ти)',en='Flatbush Avenue station (BMT Fulton Street Line)',eng='Flatbush Avenue',opened='24 апреля 1888',closed='1 июня 1940',boro='B'},
	{segment='Ful 0',station='Лафайетт-авеню (линия Фултон-стрит, Би-эм-ти)',en='Lafayette Avenue station (BMT Fulton Street Line)',eng='Lafayette Avenue',opened='24 апреля 1888',closed='1 июня 1940',boro='B'},
	{segment='Ful 0',station='Камберленд-стрит (линия Фултон-стрит, Би-эм-ти)',en='Cumberland Avenue station (BMT Fulton Street Line)',eng='Cumberland Street',opened='24 апреля 1888',closed='1 июня 1940',boro='B'},
	{segment='Ful 0',station='Вандербилт-авеню (линия Фултон-стрит, Би-эм-ти)',en='Vanderbilt Avenue station (BMT Fulton Street Line)',eng='Vanderbilt Avenue',opened='24 апреля 1888',closed='1 июня 1940',boro='B'},
	{segment='Ful 0',station='Гранд-авеню (линия Фултон-стрит, Би-эм-ти)',en='Grand Avenue station (BMT Fulton Street Line)',eng='Grand Avenue',opened='24 апреля 1888',closed='1 июня 1940',boro='B'},
	--{segment='Ful 0',station='Франклин-авеню (линия Фултон-стрит, Би-эм-ти)',en='Franklin Avenue (BMT Fulton Street Line) original station',eng='Franklin Avenue',opened='24 апреля 1888',closed='1 июня 1940',boro='B',
	--	transfer='была пересадка на станцию<br>[[Франклин-авеню (линия Франклин-авеню, Би-эм-ти)|Франклин-авеню]]'},
	{segment='Ful 1',station='Ностранд-авеню (линия Фултон-стрит, Би-эм-ти)',en='Nostrand Avenue station (BMT Fulton Street Line)',eng='Nostrand Avenue',opened='24 апреля 1888',closed='1 июня 1940',boro='B'},
	{segment='Ful 1',station='Бруклин-авеню (линия Фултон-стрит, Би-эм-ти)',station2='Томпкинс-авеню (линия Фултон-стрит, Би-эм-ти)',en='Brooklyn–Tompkins Avenues station',eng='Brooklyn Avenue, Tompkins Avenue',opened='30 мая 1888',closed='1 июня 1940',boro='B'},
	{segment='Ful 1',station='Олбани-авеню (линия Фултон-стрит, Би-эм-ти)',station2='Самнер-авеню (линия Фултон-стрит, Би-эм-ти)',en='Albany–Sumner Avenues station',eng='Albany Avenue, Sumner Avenue (westbound)',opened='30 мая 1888',closed='1 июня 1940',boro='B'},
	{segment='Ful 1',station='Трой-авеню (линия Фултон-стрит, Би-эм-ти)',en='Troy Avenue station',eng='Troy Avenue',opened='середина 1888',closed='1 июня 1940',boro='B'},
	{segment='Ful 1',station='Рид-авеню (линия Фултон-стрит, Би-эм-ти)',en='Reid Avenue station (BMT Fulton Street Line)',eng='Reid Avenue',opened='середина 1888',closed='1 июня 1940',boro='B'},
	{segment='Ful 1',station='Ральф-авеню (линия Фултон-стрит, Би-эм-ти)',en='Ralph Avenue station (BMT Fulton Street Line)',eng='Ralph Avenue',opened='1 октября 1888',closed='1 июня 1940',boro='B'},
	{segment='Ful 1',station='Саратога-авеню (линия Фултон-стрит, Би-эм-ти)',en='Saratoga Avenue station (BMT Fulton Street Line)',eng='Saratoga Avenue',opened='3 декабря 1888',closed='1 июня 1940',boro='B'},
	{segment='Ful 1',station='Рокавей-авеню (линия Фултон-стрит, Би-эм-ти)',en='Rockaway Avenue station (BMT Fulton Street Line)',eng='Rockaway Avenue',opened='16 ноября 1888',closed='26 апреля 1956',boro='B'},
	{segment='Ful 1',station='Манхэттен-Джанкшен (линия Фултон-стрит, Би-эм-ти)',en='Manhattan Junction (BMT Fulton Street Line)',eng='Manhattan Junction',opened='4 июля 1889',closed='26 апреля 1956',boro='B',
		transfer='станция входила в пересадочный<br>узел [[Бродвей-Джанкшен (Нью-Йоркское метро)|Бродвей-Джанкшен]]'},
	--{segment='Ful 2',station='Истерн-Паркуэй (линия Фултон-стрит, Би-эм-ти)',en='Eastern Parkway station',eng='Eastern Parkway',opened='18 ноября 1889',closed='17 ноября 1918',boro='B'},
	{segment='Ful 2',station='Хинсдейл-стрит (линия Фултон-стрит, Би-эм-ти)',en='Hinsdale Street station',eng='Hinsdale Street',opened='17 ноября 1918',closed='26 апреля 1956',boro='B'},
	{segment='Ful 2',station='Пенсильвейния-авеню (линия Фултон-стрит, Би-эм-ти)',en='Pennsylvania Avenue station (BMT Fulton Street Line)',eng='Pennsylvania Avenue',opened='18 ноября 1889',closed='26 апреля 1956',boro='B'},
	{segment='Ful 2',station='Ван-Сиклен-авеню (линия Фултон-стрит, Би-эм-ти)',en='Van Siclen Avenue station (BMT Fulton Street Line)',eng='Van Siclen Avenue',opened='18 ноября 1889',closed='26 апреля 1956',boro='B'},
	{segment='Ful 2',station='Линвуд-стрит (линия Фултон-стрит, Би-эм-ти)',en='Linwood Street station',eng='Linwood Street',opened='22 февраля 1892',closed='26 апреля 1956',boro='B'},
	{segment='Ful 2',station='Монток-авеню (линия Фултон-стрит, Би-эм-ти)',en='Montauk Avenue station',eng='Montauk Avenue',opened='21 марта 1892',closed='26 апреля 1956',boro='B'},
	{segment='Ful 2',station='Честнат-стрит (линия Фултон-стрит, Би-эм-ти)',en='Chestnut Street station (BMT Fulton Street Line)',eng='Chestnut Street',opened='16 июля 1894',closed='26 апреля 1956',boro='B'},
	{segment='Ful 2',station='Кресент-стрит (линия Фултон-стрит, Би-эм-ти)',en='Crescent Street station (BMT Fulton Street Line)',eng='Crescent Street',opened='16 июля 1894',closed='26 апреля 1956',boro='B'},
	{segment='Ful 2',station='Грант-авеню (линия Фултон-стрит, Би-эм-ти)',en='Grant Avenue station (BMT Fulton Street Line)',eng='Grant Avenue',opened='16 июля 1894',closed='26 апреля 1956',boro='B'},
	{segment='Lex 1',station='Мертл-авеню (линия Лексингтон-авеню, Би-эм-ти)',en='Myrtle Avenue station (BMT Lexington Avenue Line)',eng='Myrtle Avenue',opened='после 1912',closed='13 октября 1950',boro='B'},
	{segment='Lex 1',station='Декалб-авеню (линия Лексингтон-авеню, Би-эм-ти)',en='DeKalb Avenue station (BMT Lexington Avenue Line)',eng='DeKalb Avenue',opened='13 мая 1885',closed='13 октября 1950',boro='B'},
	{segment='Lex 1',station='Грин-авеню (линия Лексингтон-авеню, Би-эм-ти)',en='Greene Avenue station',eng='Greene Avenue',opened='13 мая 1885',closed='13 октября 1950',boro='B'},
	{segment='Lex 1',station='Франклин-авеню (линия Лексингтон-авеню, Би-эм-ти)',en='Franklin Avenue station (BMT Lexington Avenue Line)',eng='Franklin Avenue',opened='13 мая 1885',closed='13 октября 1950',boro='B'},
	{segment='Lex 1',station='Ностранд-авеню (линия Лексингтон-авеню, Би-эм-ти)',en='Nostrand Avenue station (BMT Lexington Avenue Line)',eng='Nostrand Avenue',opened='13 мая 1885',closed='13 октября 1950',boro='B'},
	{segment='Lex 1',station='Томпкинс-авеню (линия Лексингтон-авеню, Би-эм-ти)',en='Tompkins Avenue station (BMT Lexington Avenue Line)',eng='Tompkins Avenue',opened='13 мая 1885',closed='13 октября 1950',boro='B'},
	{segment='Lex 1',station='Самнер-авеню (линия Лексингтон-авеню, Би-эм-ти)',en='Sumner Avenue station (BMT Lexington Avenue Line)',eng='Sumner Avenue',opened='13 мая 1885',closed='13 октября 1950',boro='B'},
	{segment='Lex 1',station='Рид-авеню (линия Лексингтон-авеню, Би-эм-ти)',en='Reid Avenue station (BMT Lexington Avenue Line)',eng='Reid Avenue',opened='13 мая 1885',closed='13 октября 1950',boro='B'},
	{segment='WF',station='Уорлдс-Фэр (линия Всемирной выставки, Ай-эн-ди)',en='World\'s Fair station',eng='World’s Fair',opened='30 апреля 1939',closed='28 октября 1940',struc='наземная',boro='Q'},
}
local twins = {
	['Канал-стрит (линия Бродвея, Би-эм-ти)']={
		eng='Canal Street',
		comment1='на ветке через тоннель',
		comment2='на ветке через мост',
		station1='Канал-стрит (линия Бродвея, Би-эм-ти, через тоннель)',
		station2='Канал-стрит (линия Бродвея, Би-эм-ти, через мост)'
	},
	['Чеймберс-стрит — Всемирный торговый центр (линия Восьмой авеню, Ай-эн-ди)']={
		eng='Chambers Street–World Trade Center',
		comment1='«Чеймберс-стрит»',
		comment2='«ВТЦ»',
		station1='Чеймберс-стрит (линия Восьмой авеню, Ай-эн-ди)',
		station2='Всемирный торговый центр (линия Восьмой авеню, Ай-эн-ди)'
	},
}
local routes_periods = {
	{route='1',period='rh',segment='Bway7 North Tip'},
	{route='1',period='rh',segment='Bway7 North'},
	{route='1',period='rh',segment='Bway7 Middle'},
	{route='1',period='rh',segment='Bway7a'},
	{route='1',period='rh',segment='Bway7b'},
	{route='1',period='rh',segment='Bway7 South Tip'},
	{route='1',period='md',segment='Bway7 North Tip'},
	{route='1',period='md',segment='Bway7 North'},
	{route='1',period='md',segment='Bway7 Middle'},
	{route='1',period='md',segment='Bway7a'},
	{route='1',period='md',segment='Bway7b'},
	{route='1',period='md',segment='Bway7 South Tip'},
	{route='1',period='ev',segment='Bway7 North Tip'},
	{route='1',period='ev',segment='Bway7 North'},
	{route='1',period='ev',segment='Bway7 Middle'},
	{route='1',period='ev',segment='Bway7a'},
	{route='1',period='ev',segment='Bway7b'},
	{route='1',period='ev',segment='Bway7 South Tip'},
	{route='1',period='we',segment='Bway7 North Tip'},
	{route='1',period='we',segment='Bway7 North'},
	{route='1',period='we',segment='Bway7 Middle'},
	{route='1',period='we',segment='Bway7a'},
	{route='1',period='we',segment='Bway7b'},
	{route='1',period='we',segment='Bway7 South Tip'},
	{route='1',period='ln',segment='Bway7 North Tip'},
	{route='1',period='ln',segment='Bway7 North'},
	{route='1',period='ln',segment='Bway7 Middle'},
	{route='1',period='ln',segment='Bway7a'},
	{route='1',period='ln',segment='Bway7b'},
	{route='1',period='ln',segment='Bway7 South Tip'},
	{route='2',period='rh',segment='WPR North Tip',pattern='o '},
	{route='2',period='rh',segment='WPR North'},
	{route='2',period='rh',segment='E180'},
	{route='2',period='rh',segment='WPR South'},
	{route='2',period='rh',segment='WPR South Tip'},
	{route='2',period='rh',segment='Lenox South'},
	{route='2',period='rh',segment='Bway7a',how='x'},
	{route='2',period='rh',segment='Bway7b',how='x'},
	{route='2',period='rh',segment='Bway7 South'},
	{route='2',period='rh',segment='Hoyt'},
	{route='2',period='rh',segment='EP',shape='|\\'},
	{route='2',period='rh',segment='Nostrand',pattern='o|'},
	{route='2',period='rh',segment='EP East',dir='peak+',fork='south',pattern=' o'},
	{route='2',period='rh',segment='NL',dir='peak+'},
	{route='2',period='md',segment='WPR North Tip'},
	{route='2',period='md',segment='WPR North'},
	{route='2',period='md',segment='E180'},
	{route='2',period='md',segment='WPR South'},
	{route='2',period='md',segment='WPR South Tip'},
	{route='2',period='md',segment='Lenox South'},
	{route='2',period='md',segment='Bway7a',how='x'},
	{route='2',period='md',segment='Bway7b',how='x'},
	{route='2',period='md',segment='Bway7 South'},
	{route='2',period='md',segment='Hoyt'},
	{route='2',period='md',segment='EP'},
	{route='2',period='md',segment='Nostrand'},
	{route='2',period='ev',segment='WPR North Tip'},
	{route='2',period='ev',segment='WPR North'},
	{route='2',period='ev',segment='E180'},
	{route='2',period='ev',segment='WPR South'},
	{route='2',period='ev',segment='WPR South Tip'},
	{route='2',period='ev',segment='Lenox South'},
	{route='2',period='ev',segment='Bway7a',how='x'},
	{route='2',period='ev',segment='Bway7b',how='x'},
	{route='2',period='ev',segment='Bway7 South'},
	{route='2',period='ev',segment='Hoyt'},
	{route='2',period='ev',segment='EP'},
	{route='2',period='ev',segment='Nostrand'},
	{route='2',period='we',segment='WPR North Tip'},
	{route='2',period='we',segment='WPR North'},
	{route='2',period='we',segment='E180'},
	{route='2',period='we',segment='WPR South'},
	{route='2',period='we',segment='WPR South Tip'},
	{route='2',period='we',segment='Lenox South'},
	{route='2',period='we',segment='Bway7a',how='x'},
	{route='2',period='we',segment='Bway7b',how='x'},
	{route='2',period='we',segment='Bway7 South'},
	{route='2',period='we',segment='Hoyt'},
	{route='2',period='we',segment='EP'},
	{route='2',period='we',segment='Nostrand'},
	{route='2',period='ln',segment='WPR North Tip'},
	{route='2',period='ln',segment='WPR North'},
	{route='2',period='ln',segment='E180'},
	{route='2',period='ln',segment='WPR South'},
	{route='2',period='ln',segment='WPR South Tip'},
	{route='2',period='ln',segment='Lenox South'},
	{route='2',period='ln',segment='Bway7a'},
	{route='2',period='ln',segment='Bway7b'},
	{route='2',period='ln',segment='Bway7 South'},
	{route='2',period='ln',segment='Hoyt'},
	{route='2',period='ln',segment='EP'},
	{route='2',period='ln',segment='Nostrand'},
	{route='3',period='rh',segment='Lenox North'},
	{route='3',period='rh',segment='Lenox South'},
	{route='3',period='rh',segment='Bway7a',how='x'},
	{route='3',period='rh',segment='Bway7b',how='x'},
	{route='3',period='rh',segment='Bway7 South'},
	{route='3',period='rh',segment='Hoyt'},
	{route='3',period='rh',segment='EP'},
	{route='3',period='rh',segment='EP East'},
	{route='3',period='rh',segment='NL'},
	{route='3',period='md',segment='Lenox North'},
	{route='3',period='md',segment='Lenox South'},
	{route='3',period='md',segment='Bway7a',how='x'},
	{route='3',period='md',segment='Bway7b',how='x'},
	{route='3',period='md',segment='Bway7 South'},
	{route='3',period='md',segment='Hoyt'},
	{route='3',period='md',segment='EP'},
	{route='3',period='md',segment='EP East'},
	{route='3',period='md',segment='NL'},
	{route='3',period='ev',segment='Lenox North'},
	{route='3',period='ev',segment='Lenox South'},
	{route='3',period='ev',segment='Bway7a',how='x'},
	{route='3',period='ev',segment='Bway7b',how='x'},
	{route='3',period='ev',segment='Bway7 South'},
	{route='3',period='ev',segment='Hoyt'},
	{route='3',period='ev',segment='EP'},
	{route='3',period='ev',segment='EP East'},
	{route='3',period='ev',segment='NL'},
	{route='3',period='we',segment='Lenox North'},
	{route='3',period='we',segment='Lenox South'},
	{route='3',period='we',segment='Bway7a',how='x'},
	{route='3',period='we',segment='Bway7b',how='x'},
	{route='3',period='we',segment='Bway7 South'},
	{route='3',period='we',segment='Hoyt'},
	{route='3',period='we',segment='EP'},
	{route='3',period='we',segment='EP East'},
	{route='3',period='we',segment='NL'},
	{route='3',period='ln',segment='Lenox North'},
	{route='3',period='ln',segment='Lenox South'},
	{route='3',period='ln',segment='Bway7a',how='x'},

	{route='4',period='rh',segment='Jerome 2'},
	{route='4',period='rh',segment='Jerome 1'},
--	{route='4',period='rh',segment='Jerome 2',dir='2'},
--	{route='4',period='rh',segment='Jerome 1',dir='2'},
--	{route='4',period='rh',segment='Jerome 1',dir='1',how='x',except=true},

	{route='4',period='rh',segment='Jerome'},
	{route='4',period='rh',segment='149',how='x',dir='peak'},
	{route='4',period='rh',segment='138',how='x',dir='peak'},
	{route='4',period='rh',segment='Lex North',how='x'},
	{route='4',period='rh',segment='Lex',how='x'},
	{route='4',period='rh',segment='Lex South'},
	{route='4',period='rh',segment='BHall'},
	{route='4',period='rh',segment='Hoyt',how='x'},
	{route='4',period='rh',segment='EP',how='x'},
	{route='4',period='rh',segment='EP East',how='x'},
	{route='4',period='rh',segment='NL',dir='peak+'},
	{route='4',period='md',segment='Jerome 2'},
	{route='4',period='md',segment='Jerome 1'},
	{route='4',period='md',segment='Jerome'},
	{route='4',period='md',segment='149'},
	{route='4',period='md',segment='138'},
	{route='4',period='md',segment='Lex North',how='x'},
	{route='4',period='md',segment='Lex',how='x'},
	{route='4',period='md',segment='Lex South'},
	{route='4',period='md',segment='BHall'},
	{route='4',period='md',segment='Hoyt',how='x'},
	{route='4',period='md',segment='EP',how='x'},
	{route='4',period='md',segment='EP East',how='x'},
	{route='4',period='ev',segment='Jerome 2'},
	{route='4',period='ev',segment='Jerome 1'},
	{route='4',period='ev',segment='Jerome'},
	{route='4',period='ev',segment='149'},
	{route='4',period='ev',segment='138'},
	{route='4',period='ev',segment='Lex North',how='x'},
	{route='4',period='ev',segment='Lex',how='x'},
	{route='4',period='ev',segment='Lex South'},
	{route='4',period='ev',segment='BHall'},
	{route='4',period='ev',segment='Hoyt',how='x'},
	{route='4',period='ev',segment='EP',how='x'},
	{route='4',period='ev',segment='EP East',how='x'},
	{route='4',period='we',segment='Jerome 2'},
	{route='4',period='we',segment='Jerome 1'},
	{route='4',period='we',segment='Jerome'},
	{route='4',period='we',segment='149'},
	{route='4',period='we',segment='138'},
	{route='4',period='we',segment='Lex North',how='x'},
	{route='4',period='we',segment='Lex',how='x'},
	{route='4',period='we',segment='Lex South'},
	{route='4',period='we',segment='BHall'},
	{route='4',period='we',segment='Hoyt',how='x'},
	{route='4',period='we',segment='EP',how='x'},
	{route='4',period='we',segment='EP East',how='x'},
	{route='4',period='ln',segment='Jerome 2'},
	{route='4',period='ln',segment='Jerome 1'},
	{route='4',period='ln',segment='Jerome'},
	{route='4',period='ln',segment='149'},
	{route='4',period='ln',segment='138'},
	{route='4',period='ln',segment='Lex North'},
	{route='4',period='ln',segment='Lex'},
	{route='4',period='ln',segment='Lex South'},
	{route='4',period='ln',segment='BHall'},
	{route='4',period='ln',segment='Hoyt',how='x'},
	{route='4',period='ln',segment='EP'},
	{route='4',period='ln',segment='EP East'},
	{route='4',period='ln',segment='NL'},
	{route='5',period='rh',segment='WPR North',dir='peakonly',fork='north',pattern='o '},
	{route='5',period='rh',segment='Dyre',shape='|/',pattern='|o'},
	{route='5',period='rh',segment='E180',how='x',dir='peak',pattern='o '},
	{route='5',period='rh',segment='WPR South',how='x',dir='peak'},
	{route='5',period='rh',segment='WPR South Tip'},
	{route='5',period='rh',segment='138'},
	{route='5',period='rh',segment='Lex North',how='x'},
	{route='5',period='rh',segment='Lex',how='x'},
	{route='5',period='rh',segment='Lex South'},
	{route='5',period='rh',segment='BHall'},
	{route='5',period='rh',segment='Hoyt',how='x'},
	{route='5',period='rh',segment='EP',how='x',shape='|\\'},
	{route='5',period='rh',segment='Nostrand',pattern='o|'},
	{route='5',period='rh',segment='EP East',how='x',dir='peak+',fork='south',pattern=' o'},
	{route='5',period='md',segment='Dyre'},
	{route='5',period='md',segment='E180'},
	{route='5',period='md',segment='WPR South'},
	{route='5',period='md',segment='WPR South Tip'},
	{route='5',period='md',segment='138'},
	{route='5',period='md',segment='Lex North',how='x'},
	{route='5',period='md',segment='Lex',how='x'},
	{route='5',period='md',segment='Lex South'},
	{route='5',period='md',segment='BHall'},
	{route='5',period='md',segment='Hoyt',how='x'},
	{route='5',period='md',segment='EP',how='x'},
	{route='5',period='md',segment='Nostrand'},
	{route='5',period='ev',segment='Dyre'},
	{route='5',period='ev',segment='E180'},
	{route='5',period='ev',segment='WPR South'},
	{route='5',period='ev',segment='WPR South Tip'},
	{route='5',period='ev',segment='138'},
	{route='5',period='ev',segment='Lex North',how='x'},
	{route='5',period='ev',segment='Lex',how='x'},
	{route='5',period='ev',segment='Lex South'},
	{route='5',period='we',segment='Dyre'},
	{route='5',period='we',segment='E180'},
	{route='5',period='we',segment='WPR South'},
	{route='5',period='we',segment='WPR South Tip'},
	{route='5',period='we',segment='138'},
	{route='5',period='we',segment='Lex North',how='x'},
	{route='5',period='we',segment='Lex',how='x'},
	{route='5',period='we',segment='Lex South'},
	{route='5',period='ln',segment='Dyre',shuttle=true},
	{route='5',period='ln',segment='E180',how='x',tt=true,shuttle=true},
	{route='6',period='rh',segment='Pelham North',dir='notpeakonly'},
	{route='6',period='rh',segment='Pelham'},
	{route='6',period='rh',segment='Lex North'},
	{route='6',period='rh',segment='Lex'},
	{route='6',period='md',segment='Pelham North',dir='notpeakonly'},
	{route='6',period='md',segment='Pelham'},
	{route='6',period='md',segment='Lex North'},
	{route='6',period='md',segment='Lex'},
	{route='6',period='ev',segment='Pelham North'},
	{route='6',period='ev',segment='Pelham'},
	{route='6',period='ev',segment='Lex North'},
	{route='6',period='ev',segment='Lex'},
	{route='6',period='we',segment='Pelham North'},
	{route='6',period='we',segment='Pelham'},
	{route='6',period='we',segment='Lex North'},
	{route='6',period='we',segment='Lex'},
	{route='6',period='ln',segment='Pelham North'},
	{route='6',period='ln',segment='Pelham'},
	{route='6',period='ln',segment='Lex North'},
	{route='6',period='ln',segment='Lex'},
	{route='<6>',period='rh',segment='Pelham North',dir='peakonly'},
	{route='<6>',period='rh',segment='Pelham',how='x',dir='peakonly'},
	{route='<6>',period='rh',segment='Lex North',dir='peakonly'},
	{route='<6>',period='rh',segment='Lex',dir='peakonly'},
	{route='<6>',period='md',segment='Pelham North',dir='peakonly'},
	{route='<6>',period='md',segment='Pelham',how='x',dir='peakonly'},
	{route='<6>',period='md',segment='Lex North',dir='peakonly'},
	{route='<6>',period='md',segment='Lex',dir='peakonly'},
	{route='7',period='rh',segment='Flush'},
	{route='7',period='rh',segment='Flush West'},
	{route='7',period='md',segment='Flush'},
	{route='7',period='md',segment='Flush West'},
	{route='7',period='ev',segment='Flush'},
	{route='7',period='ev',segment='Flush West'},
	{route='7',period='we',segment='Flush'},
	{route='7',period='we',segment='Flush West'},
	{route='7',period='ln',segment='Flush'},
	{route='7',period='ln',segment='Flush West'},
	{route='<7>',period='rh',segment='Flush',how='x',dir='peakonly'},
	{route='<7>',period='rh',segment='Flush West',dir='peakonly'},
	{route='A',period='rh',segment='Eighth North',pattern='o '},
	{route='A',period='rh',segment='Eighth North Middle',how='x'},
	{route='A',period='rh',segment='Eighth 145',how='x'},
	{route='A',period='rh',segment='Eighth',how='x'},
	{route='A',period='rh',segment='Eighth 50',how='x'},
	{route='A',period='rh',segment='Eighth South',how='x'},
	{route='A',period='rh',segment='Spring Canal',how='x'},
	{route='A',period='rh',segment='Eighth South Tip'},
	{route='A',period='rh',segment='Jay F'},
	{route='A',period='rh',segment='Fulton',how='x'},
	{route='A',period='rh',segment='Euclid',how='x'},
	{route='A',period='rh',segment='Fulton East'},
	{route='A',period='rh',segment='Rock Blvd',shape='|\\'},
	{route='A',period='rh',segment='Fulton East Tip',pattern='|o'},
	{route='A',period='rh',segment='Rock North',fork='south',pattern='o '},
	{route='A',period='rh',segment='BChan',shape='|\\'},
	{route='A',period='rh',segment='Rock East',pattern='|o'},
	{route='A',period='rh',segment='Rock West',dir='peak+',fork='south',pattern='o '},
	{route='A',period='md',segment='Eighth North'},
	{route='A',period='md',segment='Eighth North Middle',how='x'},
	{route='A',period='md',segment='Eighth 145',how='x'},
	{route='A',period='md',segment='Eighth',how='x'},
	{route='A',period='md',segment='Eighth 50',how='x'},
	{route='A',period='md',segment='Eighth South',how='x'},
	{route='A',period='md',segment='Spring Canal',how='x'},
	{route='A',period='md',segment='Eighth South Tip'},
	{route='A',period='md',segment='Jay F'},
	{route='A',period='md',segment='Fulton',how='x'},
	{route='A',period='md',segment='Euclid',how='x'},
	{route='A',period='md',segment='Fulton East'},
	{route='A',period='md',segment='Rock Blvd'},
	{route='A',period='md',segment='Fulton East Tip'},
	{route='A',period='md',segment='Rock North',fork='south'},
	{route='A',period='md',segment='BChan'},
	{route='A',period='md',segment='Rock East'},
	{route='A',period='ev',segment='Eighth North'},
	{route='A',period='ev',segment='Eighth North Middle',how='x'},
	{route='A',period='ev',segment='Eighth 145',how='x'},
	{route='A',period='ev',segment='Eighth',how='x'},
	{route='A',period='ev',segment='Eighth 50',how='x'},
	{route='A',period='ev',segment='Eighth South',how='x'},
	{route='A',period='ev',segment='Spring Canal',how='x'},
	{route='A',period='ev',segment='Eighth South Tip'},
	{route='A',period='ev',segment='Jay F'},
	{route='A',period='ev',segment='Fulton',how='x'},
	{route='A',period='ev',segment='Euclid',how='x'},
	{route='A',period='ev',segment='Fulton East'},
	{route='A',period='ev',segment='Rock Blvd'},
	{route='A',period='ev',segment='Fulton East Tip'},
	{route='A',period='ev',segment='Rock North',fork='south'},
	{route='A',period='ev',segment='BChan'},
	{route='A',period='ev',segment='Rock East'},
	{route='A',period='we',segment='Eighth North'},
	{route='A',period='we',segment='Eighth North Middle',how='x'},
	{route='A',period='we',segment='Eighth 145',how='x'},
	{route='A',period='we',segment='Eighth',how='x'},
	{route='A',period='we',segment='Eighth 50',how='x'},
	{route='A',period='we',segment='Eighth South',how='x'},
	{route='A',period='we',segment='Spring Canal',how='x'},
	{route='A',period='we',segment='Eighth South Tip'},
	{route='A',period='we',segment='Jay F'},
	{route='A',period='we',segment='Fulton',how='x'},
	{route='A',period='we',segment='Euclid',how='x'},
	{route='A',period='we',segment='Fulton East'},
	{route='A',period='we',segment='Rock Blvd'},
	{route='A',period='we',segment='Fulton East Tip'},
	{route='A',period='we',segment='Rock North',fork='south'},
	{route='A',period='we',segment='BChan'},
	{route='A',period='we',segment='Rock East'},
	{route='A',period='ln',segment='Eighth North'},
	{route='A',period='ln',segment='Eighth North Middle'},
	{route='A',period='ln',segment='Eighth 145'},
	{route='A',period='ln',segment='Eighth'},
	{route='A',period='ln',segment='Eighth 50'},
	{route='A',period='ln',segment='Eighth South'},
	{route='A',period='ln',segment='Spring Canal'},
	{route='A',period='ln',segment='Eighth South Tip'},
	{route='A',period='ln',segment='Jay F'},
	{route='A',period='ln',segment='Fulton'},
	{route='A',period='ln',segment='Euclid'},
	{route='A',period='ln',segment='Fulton East'},
	{route='A',period='ln',segment='Rock Blvd'},
	{route='A',period='ln',segment='Rock North'},
	{route='A',period='ln',segment='BChan'},
	{route='A',period='ln',segment='Rock East'},
	{route='B',period='rh',segment='BPB',how='x',tt=true},
	{route='B',period='rh',segment='Conc'},
	{route='B',period='rh',segment='Conc 145'},
	{route='B',period='rh',segment='Eighth'},
	{route='B',period='rh',segment='7 Sixth'},
	{route='B',period='rh',segment='Sixth',how='x'},
	{route='B',period='rh',segment='Broad Laf',how='x'},
	{route='B',period='rh',segment='Grand'},
	{route='B',period='rh',segment='MB'}, -- сегмент MB обозначает Манхэттенский мост, станций на нём нет, он используется не в модуле, а на схемах линий
	{route='B',period='rh',segment='Brigh DK'},
	{route='B',period='rh',segment='Brigh North'},
	{route='B',period='rh',segment='PP'},
	{route='B',period='rh',segment='Brigh',how='x'},
	{route='B',period='md',segment='Conc 145',how='x',tt=true},
	{route='B',period='md',segment='Eighth'},
	{route='B',period='md',segment='7 Sixth'},
	{route='B',period='md',segment='Sixth',how='x'},
	{route='B',period='md',segment='Broad Laf',how='x'},
	{route='B',period='md',segment='Grand'},
	{route='B',period='md',segment='MB'},
	{route='B',period='md',segment='Brigh DK'},
	{route='B',period='md',segment='Brigh North'},
	{route='B',period='md',segment='PP'},
	{route='B',period='md',segment='Brigh',how='x'},
	{route='B',period='ev',segment='Conc 145',how='x',dir='1',tt=true},
	{route='B',period='ev',segment='Eighth',dir='1'},
	{route='B',period='ev',segment='7 Sixth',dir='1'},
	{route='B',period='ev',segment='Sixth',how='x',dir='1'},
	{route='B',period='ev',segment='Broad Laf',how='x',dir='1'},
	{route='B',period='ev',segment='Grand',dir='1'},
	{route='B',period='ev',segment='MB',dir='1'},
	{route='B',period='ev',segment='Brigh DK',dir='1'},
	{route='B',period='ev',segment='Brigh North',dir='1'},
	{route='B',period='ev',segment='PP',dir='1'},
	{route='B',period='ev',segment='Brigh',how='x',dir='1'},
	{route='C',period='rh',segment='Eighth North Middle'},
	{route='C',period='rh',segment='Eighth 145'},
	{route='C',period='rh',segment='Eighth'},
	{route='C',period='rh',segment='Eighth 50'},
	{route='C',period='rh',segment='Eighth South'},
	{route='C',period='rh',segment='Spring Canal'},
	{route='C',period='rh',segment='Eighth South Tip'},
	{route='C',period='rh',segment='Jay F'},
	{route='C',period='rh',segment='Fulton'},
	{route='C',period='rh',segment='Euclid'},
	{route='C',period='md',segment='Eighth North Middle'},
	{route='C',period='md',segment='Eighth 145'},
	{route='C',period='md',segment='Eighth'},
	{route='C',period='md',segment='Eighth 50'},
	{route='C',period='md',segment='Eighth South'},
	{route='C',period='md',segment='Spring Canal'},
	{route='C',period='md',segment='Eighth South Tip'},
	{route='C',period='md',segment='Jay F'},
	{route='C',period='md',segment='Fulton'},
	{route='C',period='md',segment='Euclid'},
	{route='C',period='ev',segment='Eighth North Middle'},
	{route='C',period='ev',segment='Eighth 145'},
	{route='C',period='ev',segment='Eighth'},
	{route='C',period='ev',segment='Eighth 50'},
	{route='C',period='ev',segment='Eighth South'},
	{route='C',period='ev',segment='Spring Canal'},
	{route='C',period='ev',segment='Eighth South Tip'},
	{route='C',period='ev',segment='Jay F'},
	{route='C',period='ev',segment='Fulton'},
	{route='C',period='ev',segment='Euclid'},
	{route='C',period='we',segment='Eighth North Middle'},
	{route='C',period='we',segment='Eighth 145'},
	{route='C',period='we',segment='Eighth'},
	{route='C',period='we',segment='Eighth 50'},
	{route='C',period='we',segment='Eighth South'},
	{route='C',period='we',segment='Spring Canal'},
	{route='C',period='we',segment='Eighth South Tip'},
	{route='C',period='we',segment='Jay F'},
	{route='C',period='we',segment='Fulton'},
	{route='C',period='we',segment='Euclid'},
	{route='D',period='rh',segment='Conc North'},
	{route='D',period='rh',segment='BPB'},
	{route='D',period='rh',segment='Conc',how='x',dir='peak'},
	{route='D',period='rh',segment='Conc 145',how='x',dir='peak'},
	{route='D',period='rh',segment='Eighth',how='x'},
	{route='D',period='rh',segment='7 Sixth'},
	{route='D',period='rh',segment='Sixth',how='x'},
	{route='D',period='rh',segment='Broad Laf',how='x'},
	{route='D',period='rh',segment='Grand'},
	{route='D',period='rh',segment='MB'},
	{route='D',period='rh',segment='Fourth DK',how='x',fullsta=true}, --ночью D проходит Декалб-авеню по путям "чужой" линии
	{route='D',period='rh',segment='Fourth North',how='x'},
	{route='D',period='rh',segment='WE'},
	{route='D',period='md',segment='Conc North'},
	{route='D',period='md',segment='BPB'},
	{route='D',period='md',segment='Conc'},
	{route='D',period='md',segment='Conc 145'},
	{route='D',period='md',segment='Eighth',how='x'},
	{route='D',period='md',segment='7 Sixth'},
	{route='D',period='md',segment='Sixth',how='x'},
	{route='D',period='md',segment='Broad Laf',how='x'},
	{route='D',period='md',segment='Grand'},
	{route='D',period='md',segment='MB'},
	{route='D',period='md',segment='Fourth DK',how='x'},
	{route='D',period='md',segment='Fourth North',how='x'},
	{route='D',period='md',segment='WE'},
	{route='D',period='ev',segment='Conc North'},
	{route='D',period='ev',segment='BPB'},
	{route='D',period='ev',segment='Conc'},
	{route='D',period='ev',segment='Conc 145'},
	{route='D',period='ev',segment='Eighth',how='x'},
	{route='D',period='ev',segment='7 Sixth'},
	{route='D',period='ev',segment='Sixth',how='x'},
	{route='D',period='ev',segment='Broad Laf',how='x'},
	{route='D',period='ev',segment='Grand'},
	{route='D',period='ev',segment='MB'},
	{route='D',period='ev',segment='Fourth DK',how='x'},
	{route='D',period='ev',segment='Fourth North',how='x'},
	{route='D',period='ev',segment='WE'},
	{route='D',period='we',segment='Conc North'},
	{route='D',period='we',segment='BPB'},
	{route='D',period='we',segment='Conc'},
	{route='D',period='we',segment='Conc 145'},
	{route='D',period='we',segment='Eighth',how='x'},
	{route='D',period='we',segment='7 Sixth'},
	{route='D',period='we',segment='Sixth',how='x'},
	{route='D',period='we',segment='Broad Laf',how='x'},
	{route='D',period='we',segment='Grand'},
	{route='D',period='we',segment='MB'},
	{route='D',period='we',segment='Fourth DK',how='x'},
	{route='D',period='we',segment='Fourth North',how='x'},
	{route='D',period='we',segment='WE'},
	{route='D',period='ln',segment='Conc North'},
	{route='D',period='ln',segment='BPB'},
	{route='D',period='ln',segment='Conc'},
	{route='D',period='ln',segment='Conc 145'},
	{route='D',period='ln',segment='Eighth',how='x'},
	{route='D',period='ln',segment='7 Sixth'},
	{route='D',period='ln',segment='Sixth',how='x'},
	{route='D',period='ln',segment='Broad Laf',how='x'},
	{route='D',period='ln',segment='Grand'},
	{route='D',period='ln',segment='MB'},
	{route='D',period='ln',segment='Brigh DK',segment_subst='Fourth DK'},
	{route='D',period='ln',segment='Fourth North'},
	{route='D',period='ln',segment='WE'},
	{route='E',period='rh',segment='179',how='x',dir='peak+',fork='north',pattern='o '},
	{route='E',period='rh',segment='Arch IND',pattern='|o'},
	{route='E',period='rh',segment='Arch IND VW',shape='|/'},
	{route='E',period='rh',segment='QB East',how='x',pattern='o '},
	{route='E',period='rh',segment='QB',how='x'},
	{route='E',period='rh',segment='QP',how='x'},
	{route='E',period='rh',segment='QB West'},
	{route='E',period='rh',segment='QB West Tip'},
	{route='E',period='rh',segment='Eighth South'},
	{route='E',period='rh',segment='Spring Canal'},
	{route='E',period='rh',segment='WTC'},
	{route='E',period='md',segment='Arch IND'},
	{route='E',period='md',segment='Arch IND VW'},
	{route='E',period='md',segment='QB East',how='x'},
	{route='E',period='md',segment='QB',how='x'},
	{route='E',period='md',segment='QP',how='x'},
	{route='E',period='md',segment='QB West'},
	{route='E',period='md',segment='QB West Tip'},
	{route='E',period='md',segment='Eighth South'},
	{route='E',period='md',segment='Spring Canal'},
	{route='E',period='md',segment='WTC'},
	{route='E',period='ev',segment='Arch IND'},
	{route='E',period='ev',segment='Arch IND VW'},
	{route='E',period='ev',segment='QB East'},
	{route='E',period='ev',segment='QB',how='x'},
	{route='E',period='ev',segment='QP',how='x'},
	{route='E',period='ev',segment='QB West'},
	{route='E',period='ev',segment='QB West Tip'},
	{route='E',period='ev',segment='Eighth South'},
	{route='E',period='ev',segment='Spring Canal'},
	{route='E',period='ev',segment='WTC'},
	{route='E',period='we',segment='Arch IND'},
	{route='E',period='we',segment='Arch IND VW'},
	{route='E',period='we',segment='QB East'},
	{route='E',period='we',segment='QB',how='x'},
	{route='E',period='we',segment='QP',how='x'},
	{route='E',period='we',segment='QB West'},
	{route='E',period='we',segment='QB West Tip'},
	{route='E',period='we',segment='Eighth South'},
	{route='E',period='we',segment='Spring Canal'},
	{route='E',period='we',segment='WTC'},
	{route='E',period='ln',segment='Arch IND'},
	{route='E',period='ln',segment='Arch IND VW'},
	{route='E',period='ln',segment='QB East'},
	{route='E',period='ln',segment='QB'},
	{route='E',period='ln',segment='QP'},
	{route='E',period='ln',segment='QB West'},
	{route='E',period='ln',segment='QB West Tip'},
	{route='E',period='ln',segment='Eighth South'},
	{route='E',period='ln',segment='Spring Canal'},
	{route='E',period='ln',segment='WTC'},
	{route='F',period='rh',segment='179'},
	{route='F',period='rh',segment='QB East'},
	{route='F',period='rh',segment='QB',how='x'},
	{route='F',period='rh',segment='63 IND'},
	{route='F',period='rh',segment='63 IND Lex'},
	{route='F',period='rh',segment='57'},
	{route='F',period='rh',segment='Sixth'},
	{route='F',period='rh',segment='Broad Laf'},
	{route='F',period='rh',segment='Culver North Tip'},
	{route='F',period='rh',segment='Jay'},
	{route='F',period='rh',segment='Culver North'},
	{route='F',period='rh',segment='Culver Middle'},
	{route='F',period='rh',segment='Culver'},

	{route='F',period='rh',segment='Culver 1'},
	{route='F',period='rh',segment='Culver 2'},
--	{route='F',period='rh',segment='Culver 1',dir='1',how='x',except=true},
--	{route='F',period='rh',segment='Culver 1',dir='2'},
--	{route='F',period='rh',segment='Culver 2',dir='2'},

	{route='F',period='md',segment='179'},
	{route='F',period='md',segment='QB East'},
	{route='F',period='md',segment='QB',how='x'},
	{route='F',period='md',segment='63 IND'},
	{route='F',period='md',segment='63 IND Lex'},
	{route='F',period='md',segment='57'},
	{route='F',period='md',segment='Sixth'},
	{route='F',period='md',segment='Broad Laf'},
	{route='F',period='md',segment='Culver North Tip'},
	{route='F',period='md',segment='Jay'},
	{route='F',period='md',segment='Culver North'},
	{route='F',period='md',segment='Culver Middle'},
	{route='F',period='md',segment='Culver'},
	{route='F',period='md',segment='Culver 1'},
	{route='F',period='md',segment='Culver 2'},
	{route='F',period='ev',segment='179'},
	{route='F',period='ev',segment='QB East'},
	{route='F',period='ev',segment='QB',how='x'},
	{route='F',period='ev',segment='63 IND'},
	{route='F',period='ev',segment='63 IND Lex'},
	{route='F',period='ev',segment='57'},
	{route='F',period='ev',segment='Sixth'},
	{route='F',period='ev',segment='Broad Laf'},
	{route='F',period='ev',segment='Culver North Tip'},
	{route='F',period='ev',segment='Jay'},
	{route='F',period='ev',segment='Culver North'},
	{route='F',period='ev',segment='Culver Middle'},
	{route='F',period='ev',segment='Culver'},
	{route='F',period='ev',segment='Culver 1'},
	{route='F',period='ev',segment='Culver 2'},
	{route='F',period='we',segment='179'},
	{route='F',period='we',segment='QB East'},
	{route='F',period='we',segment='QB',how='x'},
	{route='F',period='we',segment='63 IND'},
	{route='F',period='we',segment='63 IND Lex'},
	{route='F',period='we',segment='57'},
	{route='F',period='we',segment='Sixth'},
	{route='F',period='we',segment='Broad Laf'},
	{route='F',period='we',segment='Culver North Tip'},
	{route='F',period='we',segment='Jay'},
	{route='F',period='we',segment='Culver North'},
	{route='F',period='we',segment='Culver Middle'},
	{route='F',period='we',segment='Culver'},
	{route='F',period='we',segment='Culver 1'},
	{route='F',period='we',segment='Culver 2'},
	{route='F',period='ln',segment='179'},
	{route='F',period='ln',segment='QB East'},
	{route='F',period='ln',segment='QB',how='x'},
	{route='F',period='ln',segment='63 IND'},
	{route='F',period='ln',segment='63 IND Lex'},
	{route='F',period='ln',segment='57'},
	{route='F',period='ln',segment='Sixth'},
	{route='F',period='ln',segment='Broad Laf'},
	{route='F',period='ln',segment='Culver North Tip'},
	{route='F',period='ln',segment='Jay'},
	{route='F',period='ln',segment='Culver North'},
	{route='F',period='ln',segment='Culver Middle'},
	{route='F',period='ln',segment='Culver'},
	{route='F',period='ln',segment='Culver 1'},
	{route='F',period='ln',segment='Culver 2'},
	{route='<F>',period='rh',segment='179',dir='peakonly'},
	{route='<F>',period='rh',segment='QB East',dir='peakonly'},
	{route='<F>',period='rh',segment='QB',how='x',dir='peakonly'},
	{route='<F>',period='rh',segment='63 IND',dir='peakonly'},
	{route='<F>',period='rh',segment='63 IND Lex',dir='peakonly'},
	{route='<F>',period='rh',segment='57',dir='peakonly'},
	{route='<F>',period='rh',segment='Sixth',dir='peakonly'},
	{route='<F>',period='rh',segment='Broad Laf',dir='peakonly'},
	{route='<F>',period='rh',segment='Culver North Tip',dir='peakonly'},
	{route='<F>',period='rh',segment='Jay',dir='peakonly'},
	{route='<F>',period='rh',segment='Culver North',how='x',dir='peakonly'},
	{route='<F>',period='rh',segment='Culver Middle',dir='peakonly'},
	{route='<F>',period='rh',segment='Culver',dir='peakonly'},
	{route='<F>',period='rh',segment='Culver 1',dir='peakonly'},
	{route='<F>',period='rh',segment='Culver 2',dir='peakonly'},
	{route='G',period='rh',segment='Cross'},
	{route='G',period='rh',segment='Culver North'},
	{route='G',period='md',segment='Cross'},
	{route='G',period='md',segment='Culver North'},
	{route='G',period='ev',segment='Cross'},
	{route='G',period='ev',segment='Culver North'},
	{route='G',period='we',segment='Cross'},
	{route='G',period='we',segment='Culver North'},
	{route='G',period='ln',segment='Cross'},
	{route='G',period='ln',segment='Culver North'},
	{route='J',period='rh',segment='Arch BMT'},
	{route='J',period='rh',segment='Jam East',how='J',dir='peak'},
	{route='J',period='rh',segment='Jam BJ',how='J',dir='peak'},
	{route='J',period='rh',segment='Jam',how='J',dir='peak'},
	{route='J',period='rh',segment='Myrtle Av',how='x',dir='peak'},
	{route='J',period='rh',segment='Jam West',how='x',dir='peak'},
	{route='J',period='rh',segment='Essex'},
	{route='J',period='rh',segment='Nassau'},
	{route='J',period='md',segment='Arch BMT'},
	{route='J',period='md',segment='Jam East'},
	{route='J',period='md',segment='Jam BJ'},
	{route='J',period='md',segment='Jam'},
	{route='J',period='md',segment='Myrtle Av',how='x',dir='peak'},
	{route='J',period='md',segment='Jam West',how='x',dir='peak'},
	{route='J',period='md',segment='Essex'},
	{route='J',period='md',segment='Nassau'},
	{route='J',period='ev',segment='Arch BMT'},
	{route='J',period='ev',segment='Jam East'},
	{route='J',period='ev',segment='Jam BJ'},
	{route='J',period='ev',segment='Jam'},
	{route='J',period='ev',segment='Myrtle Av'},
	{route='J',period='ev',segment='Jam West'},
	{route='J',period='ev',segment='Essex'},
	{route='J',period='ev',segment='Nassau'},
	{route='J',period='we',segment='Arch BMT'},
	{route='J',period='we',segment='Jam East'},
	{route='J',period='we',segment='Jam BJ'},
	{route='J',period='we',segment='Jam'},
	{route='J',period='we',segment='Myrtle Av'},
	{route='J',period='we',segment='Jam West'},
	{route='J',period='we',segment='Essex'},
	{route='J',period='we',segment='Nassau'},
	{route='J',period='ln',segment='Arch BMT'},
	{route='J',period='ln',segment='Jam East'},
	{route='J',period='ln',segment='Jam BJ'},
	{route='J',period='ln',segment='Jam'},
	{route='J',period='ln',segment='Myrtle Av'},
	{route='J',period='ln',segment='Jam West'},
	{route='J',period='ln',segment='Essex'},
	{route='J',period='ln',segment='Nassau'},
	{route='L',period='rh',segment='14'},
	{route='L',period='rh',segment='Canar'},
	{route='L',period='rh',segment='Canar BJ'},
	{route='L',period='rh',segment='Canar South'},
	{route='L',period='md',segment='14'},
	{route='L',period='md',segment='Canar'},
	{route='L',period='md',segment='Canar BJ'},
	{route='L',period='md',segment='Canar South'},
	{route='L',period='ev',segment='14'},
	{route='L',period='ev',segment='Canar'},
	{route='L',period='ev',segment='Canar BJ'},
	{route='L',period='ev',segment='Canar South'},
	{route='L',period='we',segment='14'},
	{route='L',period='we',segment='Canar'},
	{route='L',period='we',segment='Canar BJ'},
	{route='L',period='we',segment='Canar South'},
	{route='L',period='ln',segment='14'},
	{route='L',period='ln',segment='Canar'},
	{route='L',period='ln',segment='Canar BJ'},
	{route='L',period='ln',segment='Canar South'},
	{route='M',period='rh',segment='QB'},
	{route='M',period='rh',segment='QP'},
	{route='M',period='rh',segment='QB West'},
	{route='M',period='rh',segment='Sixth'},
	{route='M',period='rh',segment='Broad Laf',fork='north',joint=true},
	{route='M',period='rh',segment='Myrtle'},
	{route='M',period='rh',segment='Myrtle Av'},
	{route='M',period='rh',segment='Jam West'},
	{route='M',period='rh',segment='Essex',fork='uturn'},
	{route='M',period='md',segment='QB'},
	{route='M',period='md',segment='QP'},
	{route='M',period='md',segment='QB West'},
	{route='M',period='md',segment='Sixth'},
	{route='M',period='md',segment='Broad Laf',fork='north'},
	{route='M',period='md',segment='Myrtle'},
	{route='M',period='md',segment='Myrtle Av'},
	{route='M',period='md',segment='Jam West'},
	{route='M',period='md',segment='Essex',fork='uturn'},
	{route='M',period='ev',segment='QB'},
	{route='M',period='ev',segment='QP'},
	{route='M',period='ev',segment='QB West'},
	{route='M',period='ev',segment='Sixth'},
	{route='M',period='ev',segment='Broad Laf',fork='north'},
	{route='M',period='ev',segment='Myrtle'},
	{route='M',period='ev',segment='Myrtle Av'},
	{route='M',period='ev',segment='Jam West'},
	{route='M',period='ev',segment='Essex',fork='uturn'},
	{route='M',period='we',segment='Myrtle'},
	{route='M',period='we',segment='Myrtle Av'},
	{route='M',period='we',segment='Jam West'},
	{route='M',period='we',segment='Essex',fork='uturn'},
	{route='M',period='ln',segment='Myrtle',shuttle=true},
	{route='M',period='ln',segment='Myrtle Av',how='x',tt=true,shuttle=true},
	{route='N',period='rh',segment='Second',dir='peak+',pattern='o '},
	{route='N',period='rh',segment='63 BMT',dir='peak+',fork='north'},
	{route='N',period='rh',segment='Ast',pattern='|o'},
	{route='N',period='rh',segment='QBP'},
	{route='N',period='rh',segment='Bway North',shape='|/'},
	{route='N',period='rh',segment='Bway 57',pattern='o '},
	{route='N',period='rh',segment='Bway 49'},
	{route='N',period='rh',segment='Bway',how='x',shape='|\\'},
	{route='N',period='rh',segment='Canal Bridge',pattern='|o'},
	{route='N',period='rh',segment='MB',pattern='|o'},
	{route='N',period='also',segment='Bway South',pattern='o|'}, --ночью N идёт через Нижний Манхэттен
	{route='N',period='also',segment='Whall'},
	{route='N',period='also',segment='Fourth North Tip',shape='|/'},
	{route='N',period='rh',segment='Fourth DK',how='x',pattern='o '},
	{route='N',period='rh',segment='Fourth North',how='x'},
	{route='N',period='rh',segment='Fourth',how='x'},
	{route='N',period='rh',segment='SB'},
	{route='N',period='rh',segment='SB South'},
	{route='N',period='md',segment='Ast'},
	{route='N',period='md',segment='QBP'},
	{route='N',period='md',segment='Bway North'},
	{route='N',period='md',segment='Bway 57'},
	{route='N',period='md',segment='Bway 49'},
	{route='N',period='md',segment='Bway',how='x'},
	{route='N',period='md',segment='Canal Bridge'},
	{route='N',period='md',segment='MB'},
	{route='N',period='md',segment='Fourth DK',how='x'},
	{route='N',period='md',segment='Fourth North',how='x'},
	{route='N',period='md',segment='Fourth',how='x'},
	{route='N',period='md',segment='SB'},
	{route='N',period='md',segment='SB South'},
	{route='N',period='ev',segment='Ast'},
	{route='N',period='ev',segment='QBP'},
	{route='N',period='ev',segment='Bway North'},
	{route='N',period='ev',segment='Bway 57'},
	{route='N',period='ev',segment='Bway 49'},
	{route='N',period='ev',segment='Bway',how='x'},
	{route='N',period='ev',segment='Canal Bridge'},
	{route='N',period='ev',segment='MB'},
	{route='N',period='ev',segment='Fourth DK',how='x'},
	{route='N',period='ev',segment='Fourth North',how='x'},
	{route='N',period='ev',segment='Fourth',how='x'},
	{route='N',period='ev',segment='SB'},
	{route='N',period='ev',segment='SB South'},
	{route='N',period='we',segment='Ast'},
	{route='N',period='we',segment='QBP'},
	{route='N',period='we',segment='Bway North'},
	{route='N',period='we',segment='Bway 57'},
	{route='N',period='we',segment='Bway 49'},
	{route='N',period='we',segment='Bway'},
	{route='N',period='we',segment='Canal Bridge'},
	{route='N',period='we',segment='MB'},
	{route='N',period='we',segment='Fourth DK',how='x'},
	{route='N',period='we',segment='Fourth North',how='x'},
	{route='N',period='we',segment='Fourth',how='x'},
	{route='N',period='we',segment='SB'},
	{route='N',period='we',segment='SB South'},
	{route='N',period='ln',segment='Ast'},
	{route='N',period='ln',segment='QBP'},
	{route='N',period='ln',segment='Bway North'},
	{route='N',period='ln',segment='Bway 57'},
	{route='N',period='ln',segment='Bway 49'},
	{route='N',period='ln',segment='Bway'},
	{route='N',period='ln',segment='Bway South'},
	{route='N',period='ln',segment='Whall'},
	{route='N',period='ln',segment='Fourth North Tip'},
	{route='N',period='ln',segment='Fourth DK'},
	{route='N',period='ln',segment='Fourth North'},
	{route='N',period='ln',segment='Fourth'},
	{route='N',period='ln',segment='SB'},
	{route='N',period='ln',segment='SB South'},
	{route='Q',period='rh',segment='Second'},
	{route='Q',period='rh',segment='63 BMT'},
	{route='Q',period='rh',segment='Bway 57',how='x'},
	{route='Q',period='rh',segment='Bway 49',how='x'},
	{route='Q',period='rh',segment='Bway',how='x'},
	{route='Q',period='rh',segment='Canal Bridge'},
	{route='Q',period='rh',segment='MB'},
	{route='Q',period='rh',segment='Brigh DK'},
	{route='Q',period='rh',segment='Brigh North'},
	{route='Q',period='rh',segment='PP'},
	{route='Q',period='rh',segment='Brigh'},
	{route='Q',period='rh',segment='Brigh South'},
	{route='Q',period='md',segment='Second'},
	{route='Q',period='md',segment='63 BMT'},
	{route='Q',period='md',segment='Bway 57',how='x'},
	{route='Q',period='md',segment='Bway 49',how='x'},
	{route='Q',period='md',segment='Bway',how='x'},
	{route='Q',period='md',segment='Canal Bridge'},
	{route='Q',period='md',segment='MB'},
	{route='Q',period='md',segment='Brigh DK'},
	{route='Q',period='md',segment='Brigh North'},
	{route='Q',period='md',segment='PP'},
	{route='Q',period='md',segment='Brigh'},
	{route='Q',period='md',segment='Brigh South'},
	{route='Q',period='ev',segment='Second'},
	{route='Q',period='ev',segment='63 BMT'},
	{route='Q',period='ev',segment='Bway 57',how='x'},
	{route='Q',period='ev',segment='Bway 49',how='x'},
	{route='Q',period='ev',segment='Bway',how='x'},
	{route='Q',period='ev',segment='Canal Bridge'},
	{route='Q',period='ev',segment='MB'},
	{route='Q',period='ev',segment='Brigh DK'},
	{route='Q',period='ev',segment='Brigh North'},
	{route='Q',period='ev',segment='PP'},
	{route='Q',period='ev',segment='Brigh'},
	{route='Q',period='ev',segment='Brigh South'},
	{route='Q',period='we',segment='Second'},
	{route='Q',period='we',segment='63 BMT'},
	{route='Q',period='we',segment='Bway 57',how='x'},
	{route='Q',period='we',segment='Bway 49',how='x'},
	{route='Q',period='we',segment='Bway',how='x'},
	{route='Q',period='we',segment='Canal Bridge'},
	{route='Q',period='we',segment='MB'},
	{route='Q',period='we',segment='Brigh DK'},
	{route='Q',period='we',segment='Brigh North'},
	{route='Q',period='we',segment='PP'},
	{route='Q',period='we',segment='Brigh'},
	{route='Q',period='we',segment='Brigh South'},
	{route='Q',period='ln',segment='Second'},
	{route='Q',period='ln',segment='63 BMT'},
	{route='Q',period='ln',segment='Bway 57',how='x'},
	{route='Q',period='ln',segment='Bway 49'},
	{route='Q',period='ln',segment='Bway'},
	{route='Q',period='ln',segment='Canal Bridge'},
	{route='Q',period='ln',segment='MB'},
	{route='Q',period='ln',segment='Brigh DK'},
	{route='Q',period='ln',segment='Brigh North'},
	{route='Q',period='ln',segment='PP'},
	{route='Q',period='ln',segment='Brigh'},
	{route='Q',period='ln',segment='Brigh South'},
	{route='R',period='rh',segment='QB'},
	{route='R',period='rh',segment='QP'},
	{route='R',period='rh',segment='Bway North'},
	{route='R',period='rh',segment='Bway 57'},
	{route='R',period='rh',segment='Bway 49'},
	{route='R',period='rh',segment='Bway'},
	{route='R',period='rh',segment='Bway South'},
	{route='R',period='rh',segment='Whall'},
	{route='R',period='rh',segment='Fourth North Tip'},
	{route='R',period='rh',segment='Fourth DK'},
	{route='R',period='rh',segment='Fourth North'},
	{route='R',period='rh',segment='Fourth'},
	{route='R',period='rh',segment='Fourth South'},
	{route='R',period='md',segment='QB'},
	{route='R',period='md',segment='QP'},
	{route='R',period='md',segment='Bway North'},
	{route='R',period='md',segment='Bway 57'},
	{route='R',period='md',segment='Bway 49'},
	{route='R',period='md',segment='Bway'},
	{route='R',period='md',segment='Bway South'},
	{route='R',period='md',segment='Whall'},
	{route='R',period='md',segment='Fourth North Tip'},
	{route='R',period='md',segment='Fourth DK'},
	{route='R',period='md',segment='Fourth North'},
	{route='R',period='md',segment='Fourth'},
	{route='R',period='md',segment='Fourth South'},
	{route='R',period='ev',segment='QB'},
	{route='R',period='ev',segment='QP'},
	{route='R',period='ev',segment='Bway North'},
	{route='R',period='ev',segment='Bway 57'},
	{route='R',period='ev',segment='Bway 49'},
	{route='R',period='ev',segment='Bway'},
	{route='R',period='ev',segment='Bway South'},
	{route='R',period='ev',segment='Whall'},
	{route='R',period='ev',segment='Fourth North Tip'},
	{route='R',period='ev',segment='Fourth DK'},
	{route='R',period='ev',segment='Fourth North'},
	{route='R',period='ev',segment='Fourth'},
	{route='R',period='ev',segment='Fourth South'},
	{route='R',period='we',segment='QB'},
	{route='R',period='we',segment='QP'},
	{route='R',period='we',segment='Bway North'},
	{route='R',period='we',segment='Bway 57'},
	{route='R',period='we',segment='Bway 49'},
	{route='R',period='we',segment='Bway'},
	{route='R',period='we',segment='Bway South'},
	{route='R',period='we',segment='Whall'},
	{route='R',period='we',segment='Fourth North Tip'},
	{route='R',period='we',segment='Fourth DK'},
	{route='R',period='we',segment='Fourth North'},
	{route='R',period='we',segment='Fourth'},
	{route='R',period='we',segment='Fourth South'},
	{route='R',period='ln',segment='Whall',how='x',tt=true},
	{route='R',period='ln',segment='Fourth North Tip'},
	{route='R',period='ln',segment='Fourth DK'},
	{route='R',period='ln',segment='Fourth North'},
	{route='R',period='ln',segment='Fourth'},
	{route='R',period='ln',segment='Fourth South'},
	{route='S 42',period='rh',segment='42'},
	{route='S 42',period='md',segment='42'},
	{route='S 42',period='ev',segment='42'},
	{route='S 42',period='we',segment='42'},
	{route='S F',period='rh',segment='Franklin'},
	{route='S F',period='md',segment='Franklin'},
	{route='S F',period='ev',segment='Franklin'},
	{route='S F',period='we',segment='Franklin'},
	{route='S F',period='ln',segment='Franklin'},
	{route='S R',period='also',segment='Rock Blvd'},
	{route='S R',period='also',segment='Rock North'},
	{route='S R',period='rh',segment='BChan'},
	{route='S R',period='rh',segment='Rock West'},
	{route='S R',period='md',segment='BChan'},
	{route='S R',period='md',segment='Rock West'},
	{route='S R',period='ev',segment='BChan'},
	{route='S R',period='ev',segment='Rock West'},
	{route='S R',period='we',segment='Rock Blvd',dir='1'},
	{route='S R',period='we',segment='Rock North',dir='1'},
	{route='S R',period='we',segment='BChan'},
	{route='S R',period='we',segment='Rock West'},
	{route='S R',period='ln',segment='BChan'},
	{route='S R',period='ln',segment='Rock West'},
	{route='A S',period='also',segment='Euclid'}, --это чисто ночной маршрут
	{route='A S',period='also',segment='Fulton East'},
	{route='A S',period='also',segment='Rock Blvd'},
	{route='A S',period='also',segment='Fulton East Tip'},
	{route='A S',period='ln',segment='Euclid',how='x',tt=true,shuttle=true},
	{route='A S',period='ln',segment='Fulton East',shuttle=true},
	{route='A S',period='ln',segment='Rock Blvd',shuttle=true},
	{route='A S',period='ln',segment='Fulton East Tip',shuttle=true},
	{route='W',period='rh',segment='Ast'},
	{route='W',period='rh',segment='QBP'},
	{route='W',period='rh',segment='Bway North'},
	{route='W',period='rh',segment='Bway 57'},
	{route='W',period='rh',segment='Bway 49'},
	{route='W',period='rh',segment='Bway'},
	{route='W',period='rh',segment='Bway South'},
	{route='W',period='rh',segment='Whall',how='x',tt=true},
	{route='W',period='rh',segment='Fourth North Tip',dir='peak+'},
	{route='W',period='rh',segment='Fourth DK',dir='peak+'},
	{route='W',period='rh',segment='Fourth North',dir='peak+'},
	{route='W',period='rh',segment='Fourth',dir='peak+'},
	{route='W',period='rh',segment='SB',dir='peak+'},
	{route='W',period='md',segment='Ast'},
	{route='W',period='md',segment='QBP'},
	{route='W',period='md',segment='Bway North'},
	{route='W',period='md',segment='Bway 57'},
	{route='W',period='md',segment='Bway 49'},
	{route='W',period='md',segment='Bway'},
	{route='W',period='md',segment='Bway South'},
	{route='W',period='md',segment='Whall',how='x',tt=true},
	{route='W',period='ev',segment='Ast',dir='1'},
	{route='W',period='ev',segment='QBP',dir='1'},
	{route='W',period='ev',segment='Bway North',dir='1'},
	{route='W',period='ev',segment='Bway 57',dir='1'},
	{route='W',period='ev',segment='Bway 49',dir='1'},
	{route='W',period='ev',segment='Bway',dir='1'},
	{route='W',period='ev',segment='Bway South',dir='1'},
	{route='W',period='ev',segment='Whall',how='x',dir='1',tt=true},
	{route='Z',period='rh',segment='Arch BMT',dir='peakonly'},
	{route='Z',period='rh',segment='Jam East',how='Z',dir='peakonly'},
	{route='Z',period='rh',segment='Jam BJ',how='Z',dir='peakonly'},
	{route='Z',period='rh',segment='Jam',how='Z',dir='peakonly'},
	{route='Z',period='rh',segment='Myrtle Av',how='x',dir='peakonly'},
	{route='Z',period='rh',segment='Jam West',how='x',dir='peakonly'},
	{route='Z',period='rh',segment='Essex',dir='peakonly'},
	{route='Z',period='rh',segment='Nassau',dir='peakonly'},
	{route='T',period='rh',segment='Second 2',future=true},
	{route='T',period='rh',segment='Second',future=true},
	{route='T',period='rh',segment='Second 3',future=true},
	{route='T',period='rh',segment='Second 4',future=true},
	{route='T',period='md',segment='Second 2',future=true},
	{route='T',period='md',segment='Second',future=true},
	{route='T',period='md',segment='Second 3',future=true},
	{route='T',period='md',segment='Second 4',future=true},
	{route='T',period='ev',segment='Second 2',future=true},
	{route='T',period='ev',segment='Second',future=true},
	{route='T',period='ev',segment='Second 3',future=true},
	{route='T',period='ev',segment='Second 4',future=true},
	{route='T',period='we',segment='Second 2',future=true},
	{route='T',period='we',segment='Second',future=true},
	{route='T',period='we',segment='Second 3',future=true},
	{route='T',period='we',segment='Second 4',future=true},
	{route='T',period='ln',segment='Second 2',future=true},
	{route='T',period='ln',segment='Second',future=true},
	{route='T',period='ln',segment='Second 3',future=true},
	{route='T',period='ln',segment='Second 4',future=true},
}
local ridership = {
	['138 St-Grand Concourse 4 5']={r=1035878,prev=944598,rank=356},
	['149 St-Grand Concourse 2 4 5']={r=3931908,prev=3972763,rank=123},
	['161 St-Yankee Stadium B D 4']={r=8254928,prev=8392290,rank=40},
	['167 St 4']={r=2653237,prev=2933140,rank=182},
	['167 St B D']={r=2734530,prev=2022919,rank=178},
	['170 St 4']={r=2487611,prev=2562443,rank=192},
	['170 St B D']={r=2130461,prev=2454974,rank=222},
	['174 St 2 5']={r=2057118,prev=2056692,rank=230},
	['174-175 Sts B D']={r=1518260,prev=1005075,rank=293},
	['176 St 4']={r=1713696,prev=1803691,rank=272},
	['182-183 Sts B D']={r=1513443,prev=1502814,rank=294},
	['183 St 4']={r=1779224,prev=1831457,rank=261},
	['219 St 2 5']={r=979390,prev=1026894,rank=364},
	['225 St 2 5']={r=1187486,prev=1224369,rank=333},
	['231 St 1']={r=2919305,prev=3133231,rank=170},
	['233 St 2 5']={r=1445532,prev=1496673,rank=304},
	['238 St 1']={r=1204095,prev=960970,rank=332},
	['3 Av-138 St 6']={r=2503850,prev=2451972,rank=190},
	['3 Av-149 St 2 5']={r=6768255,prev=6784053,rank=59},
	['Allerton Av 2 5']={r=1614464,prev=1603702,rank=280},
	['Baychester Av 5']={r=1094872,prev=1006343,rank=346},
	['Bedford Park Blvd B D']={r=2143375,prev=1984267,rank=219},
	['Bedford Park Blvd-Lehman College 4']={r=1538253,prev=1575555,rank=291},
	['Bronx Park East 2 5']={r=769303,prev=752916,rank=385},
	['Brook Av 6']={r=1823468,prev=1895570,rank=254},
	['Buhre Av 6']={r=1146032,prev=1110307,rank=338},
	['Burke Av 2 5']={r=1000896,prev=997617,rank=362},
	['Burnside Av 4']={r=3113514,prev=3198218,rank=161},
	['Castle Hill Av 6']={r=1954511,prev=2000084,rank=243},
	['Cypress Av 6']={r=1043922,prev=1113667,rank=354},
	['East 143 St-St Mary\'s St 6']={r=313938,prev=301240,rank=417},
	['East 149 St 6']={r=1467410,prev=1508022,rank=302},
	['East 180 St 2 5']={r=2211198,prev=2249646,rank=213},
	['Eastchester-Dyre Av 5']={r=1331886,prev=1259009,rank=321},
	['Elder Av 6']={r=1996492,prev=2000985,rank=236},
	['Fordham Rd 4']={r=3120976,prev=3321215,rank=160},
	['Fordham Rd B D']={r=3671217,prev=3596416,rank=137},
	['Freeman St 2 5']={r=1358821,prev=1354453,rank=316},
	['Gun Hill Rd 2 5']={r=2271942,prev=2197147,rank=208},
	['Gun Hill Rd 5']={r=1248513,prev=1521987,rank=329},
	['Hunts Point Av 6']={r=3174354,prev=3216569,rank=156},
	['Intervale Av 2 5']={r=964689,prev=943016,rank=367},
	['Jackson Av 2 5']={r=1584727,prev=1597307,rank=283},
	['Kingsbridge Rd 4']={r=2733096,prev=2783082,rank=179},
	['Kingsbridge Rd B D']={r=2485283,prev=2475107,rank=193},
	['Longwood Av 6']={r=949680,prev=1040934,rank=369},
	['Middletown Rd 6']={r=597839,prev=595044,rank=402},
	['Morris Park 5']={r=711229,prev=668423,rank=393},
	['Morrison Av-Soundview 6']={r=1970185,prev=1988053,rank=239},
	['Mosholu Pkwy 4']={r=2491758,prev=2531607,rank=191},
	['Mt Eden Av 4']={r=1551038,prev=1652407,rank=289},
	['Nereid Av 2 5']={r=1006617,prev=1034335,rank=360},
	['Norwood-205 St D']={r=2639003,prev=2611874,rank=186},
	['Parkchester 6']={r=4734709,prev=4836244,rank=97},
	['Pelham Bay Park 6']={r=2134403,prev=2146552,rank=220},
	['Pelham Pkwy 2 5']={r=2651208,prev=2639586,rank=183},
	['Pelham Pkwy 5']={r=896134,prev=844884,rank=372},
	['Prospect Av 2 5']={r=2148059,prev=2142697,rank=217},
	['Simpson St 2 5']={r=2602749,prev=2585974,rank=188},
	['St Lawrence Av 6']={r=1276865,prev=1273609,rank=327},
	['Tremont Av B D']={r=3052099,prev=3246064,rank=165},
	['Van Cortlandt Park-242 St 1']={r=2189109,prev=2333136,rank=214},
	['Wakefield-241 St 2']={r=1404748,prev=1484478,rank=307},
	['West Farms Sq-East Tremont Av 2 5']={r=2104945,prev=2094751,rank=224},
	['Westchester Sq-East Tremont Av 6']={r=1796415,prev=1817925,rank=257},
	['Whitlock Av 6']={r=586845,prev=592103,rank=403},
	['Woodlawn 4']={r=2094285,prev=2160859,rank=226},
	['Zerega Av 6']={r=795756,prev=792928,rank=382},
	['15 St-Prospect Park F G']={r=1964534,prev=1867619,rank=240},
	['18 Av D']={r=1942617,prev=1909554,rank=244},
	['18 Av F']={r=1113492,prev=1163390,rank=344},
	['18 Av N']={r=1179756,prev=981261,rank=334},
	['20 Av D']={r=1578971,prev=1534396,rank=284},
	['20 Av N']={r=1142086,prev=1075077,rank=339},
	['25 Av D']={r=1507759,prev=1571134,rank=295},
	['25 St R']={r=1153842,prev=1149469,rank=337},
	['36 St D N R']={r=4254406,prev=4293364,rank=116},
	['4 Av F G/9 St R']={r=3924882,prev=3906028,rank=125},
	['45 St R']={r=2461410,prev=2251921,rank=195},
	['50 St D']={r=976988,prev=965643,rank=366},
	['53 St R']={r=2797730,prev=2378056,rank=174},
	['55 St D']={r=637405,prev=650590,rank=397},
	['59 St N R']={r=3664480,prev=3998207,rank=138},
	['7 Av B Q']={r=3103599,prev=3126475,rank=162},
	['7 Av F G']={r=3675218,prev=3572223,rank=136},
	['71 St D']={r=1722921,prev=1746966,rank=270},
	['77 St R']={r=1674582,prev=1676402,rank=277},
	['79 St D']={r=1926290,prev=1901043,rank=247},
	['8 Av N']={r=3801700,prev=3700661,rank=130},
	['86 St N']={r=708542,prev=609555,rank=394},
	['86 St R']={r=3434888,prev=3470741,rank=145},
	['9 Av D']={r=1708387,prev=1667200,rank=274},
	['Alabama Av J']={r=628299,prev=652030,rank=398},
	['Atlantic Av L']={r=469819,prev=559411,rank=411},
	['Atlantic Av-Barclays Ctr B D N Q R 2 3 4 5']={r=13939794,prev=13807282,rank=20},
	['Avenue H Q']={r=991766,prev=1034018,rank=363},
	['Avenue I F']={r=584129,prev=326005,rank=404},
	['Avenue J Q']={r=1775846,prev=1878547,rank=264},
	['Avenue M Q']={r=1691285,prev=1808189,rank=276},
	['Avenue N F']={r=877383,prev=612201,rank=375},
	['Avenue P F']={r=739804,prev=509036,rank=389},
	['Avenue U F']={r=547776,prev=310821,rank=405},
	['Avenue U N']={r=1019104,prev=830278,rank=359},
	['Avenue U Q']={r=2301941,prev=2329614,rank=202},
	['Avenue X F']={r=758700,prev=775436,rank=388},
	['Bay 50 St D']={r=821873,prev=826074,rank=381},
	['Bay Pkwy D']={r=2446673,prev=2435949,rank=196},
	['Bay Pkwy F']={r=362802,prev=188225,rank=414},
	['Bay Pkwy N']={r=2071452,prev=2266916,rank=229},
	['Bay Ridge Av R']={r=2354120,prev=2228497,rank=200},
	['Bay Ridge-95 St R']={r=1743441,prev=1739178,rank=269},
	['Bedford Av L']={r=7836366,prev=9053980,rank=45},
	['Bedford-Nostrand Avs G']={r=2795387,prev=2774993,rank=175},
	['Bergen St 2 3']={r=1208319,prev=1140677,rank=330},
	['Bergen St F G']={r=3577496,prev=3478946,rank=141},
	['Beverley Rd Q']={r=1048249,prev=1060568,rank=352},
	['Beverly Rd 2 5']={r=1284232,prev=1307405,rank=326},
	['Brighton Beach B Q']={r=3745994,prev=3778194,rank=133},
	['Broadway G']={r=1506905,prev=1402102,rank=296},
	['Broadway Junction A C J L Z']={r=2759349,prev=2810636,rank=177},
	['Bushwick Av-Aberdeen St L']={r=600188,prev=671545,rank=401},
	['Canarsie-Rockaway Pkwy L']={r=3302691,prev=3598843,rank=151},
	['Carroll St F G']={r=3615019,prev=3490924,rank=139},
	['Central Av M']={r=1472067,prev=725022,rank=301},
	['Chauncey St J Z']={r=1076510,prev=1063828,rank=349},
	['Church Av 2 5']={r=2862033,prev=2818535,rank=172},
	['Church Av B Q']={r=5061013,prev=5161293,rank=90},
	['Church Av F G']={r=3051736,prev=3099383,rank=166},
	['Clark St 2 3']={r=1781419,prev=1550414,rank=259},
	['Classon Av G']={r=1722852,prev=1649340,rank=271},
	['Cleveland St J']={r=880879,prev=901928,rank=374},
	['Clinton-Washington Avs C']={r=2144338,prev=2178439,rank=218},
	['Clinton-Washington Avs G']={r=1609332,prev=1534802,rank=281},
	['Coney Island-Stillwell Av D F N Q']={r=4579191,prev=4615664,rank=104},
	['Cortelyou Rd Q']={r=1957538,prev=1994734,rank=241},
	['Court St R/Borough Hall 2 3 4 5']={r=10135722,prev=10364534,rank=28},
	['Crescent St J Z']={r=1391945,prev=1467166,rank=308},
	['Crown Heights-Utica Av 3 4']={r=7933008,prev=7920192,rank=44},
	['Cypress Hills J']={r=420647,prev=411331,rank=413},
	['DeKalb Av B Q R']={r=6708640,prev=6776248,rank=60},
	['DeKalb Av L']={r=3290894,prev=4000252,rank=152},
	['Ditmas Av F']={r=1177275,prev=1149528,rank=335},
	['East 105 St L']={r=1001343,prev=1139556,rank=361},
	['Eastern Pkwy-Brooklyn Museum 2 3']={r=1338351,prev=1544013,rank=319},
	['Euclid Av A C']={r=3240578,prev=3174827,rank=154},
	['Flatbush Av-Brooklyn College 2 5']={r=5684108,prev=5822873,rank=76},
	['Flushing Av G']={r=732897,prev=874498,rank=390},
	['Flushing Av J M']={r=2773154,prev=2537390,rank=176},
	['Fort Hamilton Pkwy D']={r=1207971,prev=1191580,rank=331},
	['Fort Hamilton Pkwy F G']={r=1800167,prev=1765887,rank=256},
	['Fort Hamilton Pkwy N']={r=1372278,prev=969878,rank=311},
	['Franklin Av 2 3 4 5/Botanic Garden S']={r=4999385,prev=4604219,rank=92},
	['Franklin Av C S']={r=1977940,prev=2051171,rank=238},
	['Fulton St G']={r=1768601,prev=1745439,rank=265},
	['Gates Av J Z']={r=2249791,prev=2234908,rank=209},
	['Graham Av L']={r=2709511,prev=3093428,rank=180},
	['Grand Army Plaza 2 3']={r=2295401,prev=2228173,rank=204},
	['Grand St L']={r=1847219,prev=2126443,rank=252},
	['Grant Av A']={r=1749932,prev=1842974,rank=266},
	['Greenpoint Av G']={r=3089912,prev=2859047,rank=163},
	['Halsey St J']={r=2120521,prev=2059030,rank=223},
	['Halsey St L']={r=2176141,prev=2625255,rank=215},
	['Hewes St J M']={r=1117566,prev=893262,rank=343},
	['High St A C']={r=3536860,prev=3463611,rank=142},
	['Hoyt St 2 3']={r=2293256,prev=1982208,rank=205},
	['Hoyt-Schermerhorn Sts A C G']={r=3605153,prev=3370038,rank=140},
	['Jay St-MetroTech A C F R']={r=12238047,prev=12504027,rank=24},
	['Jefferson St L']={r=2237997,prev=2515861,rank=211},
	['Junius St 3']={r=676092,prev=620548,rank=395},
	['Kings Hwy B Q']={r=5938819,prev=5895421,rank=71},
	['Kings Hwy F']={r=1129071,prev=1356085,rank=340},
	['Kings Hwy N']={r=1371311,prev=1032541,rank=312},
	['Kingston Av 3']={r=1472802,prev=1443692,rank=300},
	['Kingston-Throop Avs C']={r=2055094,prev=2099891,rank=231},
	['Knickerbocker Av M']={r=1544093,prev=772085,rank=290},
	['Kosciuszko St J']={r=1779062,prev=1908610,rank=262},
	['Lafayette Av C']={r=1599887,prev=1631673,rank=282},
	['Liberty Av C']={r=833633,prev=839241,rank=380},
	['Livonia Av L']={r=856615,prev=994378,rank=376},
	['Lorimer St J M']={r=1747990,prev=1495068,rank=267},
	['Lorimer St L/Metropolitan Av G']={r=4696924,prev=4821359,rank=100},
	['Marcy Av J M Z']={r=4717791,prev=4171666,rank=98},
	['Montrose Av L']={r=1933886,prev=2239760,rank=245},
	['Morgan Av L']={r=2100475,prev=2465927,rank=225},
	['Myrtle Av J M Z']={r=3854024,prev=3789470,rank=128},
	['Myrtle-Willoughby Avs G']={r=1820637,prev=1768122,rank=255},
	['Myrtle-Wyckoff Avs L M']={r=5927332,prev=6893183,rank=72},
	['Nassau Av G']={r=3136229,prev=2880235,rank=159},
	['Neck Rd Q']={r=1362524,prev=1366989,rank=314},
	['Neptune Av F']={r=428163,prev=433083,rank=412},
	['Nevins St 2 3 4 5']={r=3150597,prev=3215723,rank=158},
	['New Lots Av 3']={r=1643487,prev=1644379,rank=279},
	['New Lots Av L']={r=1254351,prev=1499170,rank=328},
	['New Utrecht Av N/62 St D']={r=1501183,prev=1503742,rank=297},
	['Newkirk Av 2 5']={r=2131839,prev=2221270,rank=221},
	['Newkirk Plaza B Q']={r=3252504,prev=3258207,rank=153},
	['Norwood Av J Z']={r=948571,prev=966728,rank=370},
	['Nostrand Av 3']={r=1370372,prev=1250715,rank=313},
	['Nostrand Av A C']={r=5608232,prev=5609408,rank=78},
	['Ocean Pkwy Q']={r=1033340,prev=1018695,rank=357},
	['Park Pl S']={r=519984,prev=537340,rank=409},
	['Parkside Av Q']={r=1955051,prev=1979647,rank=242},
	['Pennsylvania Av 3']={r=1360708,prev=1279685,rank=315},
	['President St 2 5']={r=1037219,prev=1197019,rank=355},
	['Prospect Av R']={r=1780893,prev=1638002,rank=260},
	['Prospect Park B Q S']={r=3323334,prev=3289464,rank=149},
	['Ralph Av C']={r=1829126,prev=1850375,rank=253},
	['Rockaway Av 3']={r=1451431,prev=1412271,rank=303},
	['Rockaway Av C']={r=1787343,prev=1790683,rank=258},
	['Saratoga Av 3']={r=1556357,prev=1535733,rank=288},
	['Sheepshead Bay B Q']={r=4169796,prev=4183545,rank=119},
	['Shepherd Av C']={r=977012,prev=990387,rank=365},
	['Smith-9 Sts F G']={r=1435824,prev=1466151,rank=305},
	['Sterling St 2 5']={r=1654809,prev=1753125,rank=278},
	['Sutter Av L']={r=1047762,prev=1246958,rank=353},
	['Sutter Av-Rutland Rd 3']={r=2019485,prev=1968448,rank=233},
	['Union St R']={r=2271983,prev=2090848,rank=207},
	['Utica Av A C']={r=5106247,prev=5195786,rank=89},
	['Van Siclen Av 3']={r=853106,prev=854150,rank=378},
	['Van Siclen Av C']={r=918811,prev=955230,rank=371},
	['Van Siclen Av J Z']={r=791691,prev=818735,rank=383},
	['West 8 St-New York Aquarium F Q']={r=837836,prev=818685,rank=379},
	['Wilson Av L']={r=1290221,prev=1420065,rank=325},
	['Winthrop St 2 5']={r=1882065,prev=2140028,rank=250},
	['York St F']={r=3927129,prev=3256154,rank=124},
	['1 Av L']={r=5345371,prev=6743140,rank=83},
	['103 St 1']={r=3766055,prev=4072703,rank=131},
	['103 St 6']={r=4039570,prev=4065523,rank=120},
	['103 St B C']={r=1498363,prev=1630405,rank=299},
	['110 St 6']={r=3316061,prev=3394176,rank=150},
	['116 St 2 3']={r=3345661,prev=3446526,rank=148},
	['116 St 6']={r=4572453,prev=4683148,rank=105},
	['116 St B C']={r=2288111,prev=2262578,rank=206},
	['116 St-Columbia University 1']={r=4380469,prev=4528136,rank=112},
	['125 St 1']={r=2368025,prev=2457157,rank=199},
	['125 St 2 3']={r=4644262,prev=4727671,rank=101},
	['125 St 4 5 6']={r=8554857,prev=8630430,rank=37},
	['125 St A B C D']={r=9208598,prev=9037343,rank=31},
	['135 St 2 3']={r=4268823,prev=4506259,rank=115},
	['135 St B C']={r=1743921,prev=1622552,rank=268},
	['137 St-City College 1']={r=3874783,prev=4260166,rank=126},
	['14 St A C E/8 Av L']={r=14239275,prev=14324670,rank=18},
	['14 St F M 1 2 3/6 Av L']={r=14736035,prev=15002214,rank=17},
	['14 St-Union Sq L N Q R W 4 5 6']={r=32385260,prev=33124407,rank=4},
	['145 St 1']={r=2936613,prev=3062446,rank=169},
	['145 St 3']={r=954825,prev=635413,rank=368},
	['145 St A B C D']={r=7464653,prev=7434662,rank=49},
	['155 St B D']={r=1123868,prev=1115948,rank=341},
	['155 St C']={r=895036,prev=1001262,rank=373},
	['157 St 1']={r=3739786,prev=3514522,rank=134},
	['163 St-Amsterdam Av C']={r=1390312,prev=548092,rank=309},
	['168 St A C 1']={r=6156288,prev=8150537,rank=67},
	['175 St A']={r=4182625,prev=3879652,rank=118},
	['18 St 1']={r=2649616,prev=2683235,rank=184},
	['181 St 1']={r=3523536,prev=3605435,rank=143},
	['181 St A']={r=3404841,prev=3368097,rank=147},
	['190 St A']={r=1535450,prev=1423142,rank=292},
	['191 St 1']={r=2333160,prev=2526932,rank=201},
	['2 Av F']={r=5583944,prev=5034358,rank=79},
	['207 St 1']={r=1853146,prev=2020214,rank=251},
	['215 St 1']={r=527505,prev=553050,rank=408},
	['23 St 1']={r=4627755,prev=4853909,rank=102},
	['23 St 6']={r=8659806,prev=9035498,rank=35},
	['23 St C E']={r=7272610,prev=7420152,rank=52},
	['23 St F M']={r=8619473,prev=5099809,rank=36},
	['23 St R W']={r=7085694,prev=8155834,rank=53},
	['28 St 1']={r=4493352,prev=4444072,rank=108},
	['28 St 6']={r=5834989,prev=3525030,rank=73},
	['28 St R W']={r=4018310,prev=4445982,rank=122},
	['3 Av L']={r=1700456,prev=2204834,rank=275},
	['33 St 6']={r=8934900,prev=9530273,rank=33},
	['34 St-Herald Sq B D F M N Q R W']={r=39385436,prev=39111312,rank=3},
	['34 St-Hudson Yards 7']={r=6108384,prev=3189867,rank=69},
	['34 St-Penn Station 1 2 3']={r=25967676,prev=25968950,rank=6},
	['34 St-Penn Station A C E']={r=25631364,prev=24857456,rank=7},
	['42 St-Bryant Pk B D F M/5 Av 7']={r=17213702,prev=16056128,rank=13},
	['47-50 Sts-Rockefeller Center B D F M']={r=18604810,prev=17289384,rank=11},
	['49 St N R W']={r=7410041,prev=8394862,rank=50},
	['5 Av-53 St E M']={r=7684091,prev=7748504,rank=47},
	['5 Av-59 St N R W']={r=4995128,prev=5136918,rank=93},
	['50 St 1']={r=8134360,prev=8088925,rank=41},
	['50 St C E']={r=6902595,prev=6441984,rank=57},
	['57 St F']={r=4550216,prev=2254820,rank=106},
	['57 St-7 Av N Q R W']={r=11012550,prev=11978164,rank=26},
	['59 St-Columbus Circle A B C D 1']={r=23040650,prev=22991014,rank=8},
	['66 St-Lincoln Center 1']={r=7068256,prev=7196026,rank=54},
	['68 St-Hunter College 6']={r=6699711,prev=6537270,rank=61},
	['7 Av B D E']={r=5508778,prev=5299531,rank=80},
	['72 St 1 2 3']={r=12379560,prev=12879887,rank=23},
	['72 St B C']={r=2837041,prev=1382963,rank=173},
	['72 St Q']={r=9528891,prev=9068131,rank=30},
	['77 St 6']={r=7821286,prev=7653602,rank=46},
	['79 St 1']={r=4745863,prev=4990840,rank=96},
	['8 St-New York University R W']={r=5434212,prev=5686332,rank=82},
	['81 St-Museum of Natural History B C']={r=4407607,prev=4748083,rank=111},
	['86 St 1']={r=5659795,prev=6139911,rank=77},
	['86 St 4 5 6']={r=13537308,prev=13486510,rank=21},
	['86 St B C']={r=3232637,prev=1734366,rank=155},
	['86 St Q']={r=8378778,prev=8075480,rank=38},
	['96 St 1 2 3']={r=11628887,prev=11702401,rank=25},
	['96 St 6']={r=5145222,prev=5151742,rank=88},
	['96 St B C']={r=3038864,prev=2836643,rank=167},
	['96 St Q']={r=6154837,prev=6014304,rank=68},
	['Astor Place 6']={r=5502925,prev=5111358,rank=81},
	['Bowery J Z']={r=1325244,prev=1275541,rank=322},
	['Bowling Green 4 5']={r=8362034,prev=8251885,rank=39},
	['Broad St J Z']={r=2172223,prev=1967616,rank=216},
	['Broadway-Lafayette St B D F M/Bleecker St 6']={r=12455155,prev=11414999,rank=22},
	['Brooklyn Bridge-City Hall 4 5 6/Chambers St J Z']={r=9065146,prev=9060206,rank=32},
	['Canal St 1']={r=1984827,prev=1884371,rank=237},
	['Canal St A C E']={r=6403172,prev=6160037,rank=63},
	['Canal St J N Q R W Z 6']={r=15861864,prev=15995877,rank=16},
	['Cathedral Pkwy-110 St 1']={r=3703893,prev=4013259,rank=135},
	['Cathedral Pkwy-110 St B C']={r=2396624,prev=1168203,rank=197},
	['Central Park North-110 St 2 3']={r=2666985,prev=2823756,rank=181},
	['Chambers St 1 2 3']={r=5941546,prev=6108641,rank=70},
	['Chambers St A C/WTC E/Park Pl 2 3/Cortlandt R W']={r=20820549,prev=21636146,rank=9},
	['Christopher St-Sheridan Sq 1']={r=3412332,prev=3312074,rank=146},
	['City Hall R W']={r=1710380,prev=1920070,rank=273},
	['Delancey St F/Essex St J M Z']={r=8861296,prev=7922586,rank=34},
	['Dyckman St 1']={r=2079656,prev=2263932,rank=228},
	['Dyckman St A']={r=2238372,prev=2037425,rank=210},
	['East Broadway F']={r=4460330,prev=4216327,rank=109},
	['Franklin St 1']={r=1567005,prev=1757424,rank=285},
	['Fulton St A C J Z 2 3 4 5']={r=27715365,prev=27719115,rank=5},
	['Grand Central-42 St S 4 5 6 7']={r=45745700,prev=45207849,rank=2},
	['Grand St B D']={r=8024364,prev=7187070,rank=43},
	['Harlem-148 St 3']={r=1120454,prev=1232448,rank=342},
	['Houston St 1']={r=4496793,prev=4488886,rank=107},
	['Inwood-207 St A']={r=3150731,prev=2796626,rank=157},
	['Lexington Av N R W/59 St 4 5 6']={r=16760813,prev=16955204,rank=15},
	['Lexington Av-53 St E M/51 St 6']={r=18957465,prev=18585755,rank=10},
	['Lexington Av-63 St F Q']={r=6567634,prev=6506078,rank=62},
	['Marble Hill-225 St 1']={r=1561844,prev=1686237,rank=287},
	['Prince St R W']={r=4342692,prev=5142727,rank=113},
	['Rector St 1']={r=2554523,prev=2764454,rank=189},
	['Rector St R W']={r=2014996,prev=2154295,rank=234},
	['Roosevelt Island F']={r=2380764,prev=2269432,rank=198},
	['South Ferry 1/Whitehall St R W']={r=10272682,prev=10275268,rank=27},
	['Spring St 6']={r=3754272,prev=3654673,rank=132},
	['Spring St C E']={r=4423135,prev=3853792,rank=110},
	['Times Sq-42 St N Q R W S 1 2 3 7/42 St A C E']={r=65020294,prev=65060656,rank=1},
	['Wall St 2 3']={r=6910581,prev=6452733,rank=56},
	['Wall St 4 5']={r=5720475,prev=5646207,rank=75},
	['West 4 St-Washington Sq A B C D E F M']={r=14063633,prev=13446383,rank=19},
	['WTC Cortlandt 1']={r=4232521,prev=1245455,rank=117},
	['103 St-Corona Plaza 7']={r=6399657,prev=6319564,rank=64},
	['104 St A']={r=536924,prev=548871,rank=406},
	['104 St J Z']={r=774888,prev=456765,rank=384},
	['111 St 7']={r=3836999,prev=3608389,rank=129},
	['111 St A']={r=760163,prev=762641,rank=387},
	['111 St J']={r=350344,prev=801639,rank=415},
	['121 St J Z']={r=675500,prev=391696,rank=396},
	['169 St F']={r=2465120,prev=2497336,rank=194},
	['21 St G']={r=535536,prev=550464,rank=407},
	['21 St-Queensbridge F']={r=3516992,prev=3340366,rank=144},
	['30 Av N W']={r=5230182,prev=2373721,rank=87},
	['33 St-Rawson St 7']={r=2907388,prev=3031465,rank=171},
	['36 Av N W']={r=1933812,prev=1446827,rank=246},
	['36 St M R']={r=1383420,prev=1513330,rank=310},
	['39 Av-Dutch Kills N W']={r=761816,prev=665750,rank=386},
	['40 St-Lowery St 7']={r=3074342,prev=3048104,rank=164},
	['46 St M R']={r=2609445,prev=2711011,rank=187},
	['46 St-Bliss St 7']={r=4019044,prev=4058815,rank=121},
	['52 St 7']={r=1907368,prev=1883246,rank=248},
	['63 Dr-Rego Park M R']={r=4753706,prev=4769745,rank=95},
	['65 St M R']={r=1098148,prev=1129031,rank=345},
	['67 Av M R']={r=2641450,prev=2592645,rank=185},
	['69 St 7']={r=1564387,prev=1510410,rank=286},
	['74-Broadway 7/Jackson Hts-Roosevelt Av E F M R']={r=17077862,prev=16994358,rank=14},
	['75 Av E F']={r=1059027,prev=1019978,rank=351},
	['75 St-Elderts Ln J Z']={r=1029388,prev=992267,rank=358},
	['80 St A']={r=1298825,prev=1332047,rank=324},
	['82 St-Jackson Hts 7']={r=4893865,prev=4741470,rank=94},
	['85 St-Forest Pkwy J']={r=1061293,prev=1063133,rank=350},
	['88 St A']={r=853110,prev=855851,rank=377},
	['90 St-Elmhurst Av 7']={r=5272683,prev=5245160,rank=86},
	['Aqueduct Racetrack A']={r=601436,prev=732091,rank=400},
	['Aqueduct-North Conduit Av A']={r=263422,prev=276067,rank=419},
	['Astoria Blvd N W']={r=723354,prev=4226298,rank=391},
	['Astoria-Ditmars Blvd N W']={r=5277341,prev=4543854,rank=85},
	['Beach 105 St A S']={r=88439,prev=92852,rank=424},
	['Beach 25 St A']={r=517164,prev=543839,rank=410},
	['Beach 36 St A']={r=292305,prev=275165,rank=418},
	['Beach 44 St A']={r=215701,prev=216609,rank=421},
	['Beach 60 St A']={r=623826,prev=630038,rank=399},
	['Beach 67 St-Arverne By The Sea A']={r=718008,prev=669421,rank=392},
	['Beach 90 St A S']={r=348771,prev=382766,rank=416},
	['Beach 98 St A S']={r=164130,prev=154620,rank=422},
	['Briarwood-Van Wyck Blvd E F']={r=1501152,prev=1462744,rank=298},
	['Broad Channel A S']={r=90358,prev=82248,rank=423},
	['Broadway N W']={r=3038655,prev=2436810,rank=168},
	['Court Sq E G M 7']={r=7033377,prev=7218939,rank=55},
	['Elmhurst Av M R']={r=3867341,prev=3898046,rank=127},
	['Far Rockaway-Mott Av A']={r=1347765,prev=1376087,rank=317},
	['Flushing-Main St 7']={r=17568837,prev=17799862,rank=12},
	['Forest Av M']={r=1310163,prev=927801,rank=323},
	['Forest Hills-71 Av E F M R']={r=8027234,prev=8115385,rank=42},
	['Fresh Pond Rd M']={r=1776084,prev=1400512,rank=263},
	['Grand Av-Newtown M R']={r=5730846,prev=5713827,rank=74},
	['Howard Beach-JFK Airport A']={r=1171303,prev=1154695,rank=336},
	['Hunters Point Av 7']={r=1885928,prev=1932478,rank=249},
	['Jamaica Center-Parsons-Archer E J Z']={r=10010419,prev=10681269,rank=29},
	['Jamaica-179 St F']={r=6262449,prev=6270766,rank=66},
	['Jamaica-Van Wyck E']={r=1412179,prev=1502672,rank=306},
	['Junction Blvd 7']={r=6883317,prev=6896657,rank=58},
	['Kew Gardens-Union Turnpike E F']={r=7625674,prev=7680149,rank=48},
	['Mets-Willets Point 7']={r=2025162,prev=1756825,rank=232},
	['Middle Village-Metropolitan Av M']={r=1090449,prev=954875,rank=347},
	['Northern Blvd M R']={r=2008091,prev=2097374,rank=235},
	['Ozone Park-Lefferts Blvd A']={r=2216647,prev=2296755,rank=212},
	['Parsons Blvd F']={r=2086114,prev=2003517,rank=227},
	['Queens Plaza E M R']={r=4334290,prev=3886574,rank=114},
	['Queensboro Plaza N W 7']={r=5018211,prev=5079051,rank=91},
	['Rockaway Blvd A']={r=2299903,prev=2336304,rank=203},
	['Rockaway Park-Beach 116 St A S']={r=228144,prev=240483,rank=420},
	['Seneca Av M']={r=1080829,prev=565714,rank=348},
	['Steinway St M R']={r=4715335,prev=5075623,rank=99},
	['Sutphin Blvd F']={r=1345420,prev=1303795,rank=318},
	['Sutphin Blvd-Archer Av-JFK Airport E J Z']={r=7354064,prev=7282128,rank=51},
	['Vernon Blvd-Jackson Av 7']={r=4623070,prev=4493326,rank=103},
	['Woodhaven Blvd J Z']={r=1337787,prev=1370889,rank=320},
	['Woodhaven Blvd M R']={r=6381132,prev=6509386,rank=65},
	['Woodside-61 St 7']={r=5345369,prev=5282486,rank=84},
}
local csv = {
	['R01']={boro='Q',struc='Elevated',lat='40.775036',lon='-73.912034',id='1',n='',s='Manhattan'}, --Astoria - Ditmars Blvd / N W
	['R03']={boro='Q',struc='Elevated',lat='40.770258',lon='-73.917843',id='2',n='Ditmars Blvd',s='Manhattan'}, --Astoria Blvd / N W
	['R04']={boro='Q',struc='Elevated',lat='40.766779',lon='-73.921479',id='3',n='Astoria - Ditmars Blvd',s='Manhattan'}, --30 Av / N W
	['R05']={boro='Q',struc='Elevated',lat='40.76182',lon='-73.925508',id='4',n='Astoria - Ditmars Blvd',s='Manhattan'}, --Broadway / N W
	['R06']={boro='Q',struc='Elevated',lat='40.756804',lon='-73.929575',id='5',n='Astoria - Ditmars Blvd',s='Manhattan'}, --36 Av / N W
	['R08']={boro='Q',struc='Elevated',lat='40.752882',lon='-73.932755',id='6',n='Astoria - Ditmars Blvd',s='Manhattan'}, --39 Av / N W
	['R11']={boro='M',struc='Subway',lat='40.76266',lon='-73.967258',id='7',n='Queens',s='Downtown & Brooklyn'}, --Lexington Av/59 St / N W R
	['R13']={boro='M',struc='Subway',lat='40.764811',lon='-73.973347',id='8',n='Queens',s='Downtown & Brooklyn'}, --5 Av/59 St / N W R
	['R14']={boro='M',struc='Subway',lat='40.764664',lon='-73.980658',id='9',n='Uptown & Queens',s='Downtown & Brooklyn'}, --57 St - 7 Av / N Q R W
	['R15']={boro='M',struc='Subway',lat='40.759901',lon='-73.984139',id='10',n='Uptown & Queens',s='Downtown & Brooklyn'}, --49 St / N R W
	['R16']={boro='M',struc='Subway',lat='40.754672',lon='-73.986754',id='11',n='Uptown & Queens',s='Downtown & Brooklyn'}, --Times Sq - 42 St / N Q R W
	['R17']={boro='M',struc='Subway',lat='40.749567',lon='-73.98795',id='12',n='Uptown & Queens',s='Downtown & Brooklyn'}, --34 St - Herald Sq / N Q R W
	['R18']={boro='M',struc='Subway',lat='40.745494',lon='-73.988691',id='13',n='Uptown & Queens',s='Downtown & Brooklyn'}, --28 St / R W
	['R19']={boro='M',struc='Subway',lat='40.741303',lon='-73.989344',id='14',n='Uptown & Queens',s='Downtown & Brooklyn'}, --23 St / R W
	['R20']={boro='M',struc='Subway',lat='40.735736',lon='-73.990568',id='15',n='Uptown & Queens',s='Downtown & Brooklyn'}, --14 St - Union Sq / N Q R W
	['R21']={boro='M',struc='Subway',lat='40.730328',lon='-73.992629',id='16',n='Uptown & Queens',s='Downtown & Brooklyn'}, --8 St - NYU / R W
	['R22']={boro='M',struc='Subway',lat='40.724329',lon='-73.997702',id='17',n='Uptown & Queens',s='Downtown & Brooklyn'}, --Prince St / R W
	['R23']={boro='M',struc='Subway',lat='40.719527',lon='-74.001775',id='18',n='Uptown & Queens',s='Downtown & Brooklyn'}, --Canal St / R W
	['Q01']={boro='M',struc='Subway',lat='40.718383',lon='-74.00046',id='19',n='Uptown & Queens',s='Downtown & Brooklyn'}, --Canal St / N Q
	['R24']={boro='M',struc='Subway',lat='40.713282',lon='-74.006978',id='20',n='Uptown & Queens',s='Downtown & Brooklyn'}, --City Hall / R W
	['R25']={boro='M',struc='Subway',lat='40.710668',lon='-74.011029',id='21',n='Uptown & Queens',s='Downtown & Brooklyn'}, --Cortlandt St / R W
	['R26']={boro='M',struc='Subway',lat='40.70722',lon='-74.013342',id='22',n='Uptown & Queens',s='Downtown & Brooklyn'}, --Rector St / R W
	['R27']={boro='M',struc='Subway',lat='40.703087',lon='-74.012994',id='23',n='Uptown & Queens',s='Brooklyn'}, --Whitehall St / R W
	['R28']={boro='Bk',struc='Subway',lat='40.6941',lon='-73.991777',id='24',n='Manhattan',s='Bay Ridge - 95 St'}, --Court St / R
	['R29']={boro='Bk',struc='Subway',lat='40.69218',lon='-73.985942',id='25',n='Manhattan',s='Bay Ridge - 95 St'}, --Jay St - MetroTech / R
	['R30']={boro='Bk',struc='Subway',lat='40.690635',lon='-73.981824',id='26',n='Manhattan',s='Coney Island - Bay Ridge'}, --DeKalb Av / B Q R
	['R31']={boro='Bk',struc='Subway',lat='40.683666',lon='-73.97881',id='27',n='Manhattan',s='Coney Island - Bay Ridge'}, --Atlantic Av - Barclays Ctr / D N R
	['R32']={boro='Bk',struc='Subway',lat='40.677316',lon='-73.98311',id='28',n='Manhattan',s='Bay Ridge - 95 St'}, --Union St / R
	['R33']={boro='Bk',struc='Subway',lat='40.670847',lon='-73.988302',id='29',n='Manhattan',s='Bay Ridge - 95 St'}, --9 St / R
	['R34']={boro='Bk',struc='Subway',lat='40.665414',lon='-73.992872',id='30',n='Manhattan',s='Bay Ridge - 95 St'}, --Prospect Av / R
	['R35']={boro='Bk',struc='Subway',lat='40.660397',lon='-73.998091',id='31',n='Manhattan',s='Bay Ridge - 95 St'}, --25 St / R
	['R36']={boro='Bk',struc='Subway',lat='40.655144',lon='-74.003549',id='32',n='Manhattan',s='Coney Island - Bay Ridge'}, --36 St / D N R
	['R39']={boro='Bk',struc='Subway',lat='40.648939',lon='-74.010006',id='33',n='Manhattan',s='Bay Ridge - 95 St'}, --45 St / R
	['R40']={boro='Bk',struc='Subway',lat='40.645069',lon='-74.014034',id='34',n='Manhattan',s='Bay Ridge - 95 St'}, --53 St / R
	['R41']={boro='Bk',struc='Subway',lat='40.641362',lon='-74.017881',id='35',n='Manhattan',s='Coney Island - Bay Ridge'}, --59 St / N R
	['R42']={boro='Bk',struc='Subway',lat='40.634967',lon='-74.023377',id='36',n='Manhattan',s='95 St'}, --Bay Ridge Av / R
	['R43']={boro='Bk',struc='Subway',lat='40.629742',lon='-74.02551',id='37',n='Manhattan',s='95 St'}, --77 St / R
	['R44']={boro='Bk',struc='Subway',lat='40.622687',lon='-74.028398',id='38',n='Manhattan',s='95 St'}, --86 St / R
	['R45']={boro='Bk',struc='Subway',lat='40.616622',lon='-74.030876',id='39',n='Manhattan',s=''}, --Bay Ridge - 95 St / R
	['D24']={boro='Bk',struc='Subway',lat='40.68446',lon='-73.97689',id='40',n='Manhattan',s='Brighton Beach & Coney Island'}, --Atlantic Av - Barclays Ctr / B Q
	['D25']={boro='Bk',struc='Subway',lat='40.67705',lon='-73.972367',id='41',n='Manhattan',s='Brighton Beach & Coney Island'}, --7 Av / B Q
	['D26']={boro='Bk',struc='Open Cut',lat='40.661614',lon='-73.962246',id='42',n='Manhattan & Franklin Av',s='Brighton Beach & Coney Island'}, --Prospect Park / B Q
	['D27']={boro='Bk',struc='Open Cut',lat='40.655292',lon='-73.961495',id='43',n='Manhattan',s='Brighton Beach & Coney Island'}, --Parkside Av / B Q
	['D28']={boro='Bk',struc='Open Cut',lat='40.650527',lon='-73.962982',id='44',n='Manhattan',s='Brighton Beach & Coney Island'}, --Church Av / B Q
	['D29']={boro='Bk',struc='Open Cut',lat='40.644031',lon='-73.964492',id='45',n='Manhattan',s='Brighton Beach & Coney Island'}, --Beverley Rd / B Q
	['D30']={boro='Bk',struc='Open Cut',lat='40.640927',lon='-73.963891',id='46',n='Manhattan',s='Brighton Beach & Coney Island'}, --Cortelyou Rd / B Q
	['D31']={boro='Bk',struc='Open Cut',lat='40.635082',lon='-73.962793',id='47',n='Manhattan',s='Brighton Beach & Coney Island'}, --Newkirk Plaza / B Q
	['D32']={boro='Bk',struc='Open Cut',lat='40.62927',lon='-73.961639',id='48',n='Manhattan',s='Brighton Beach & Coney Island'}, --Avenue H / B Q
	['D33']={boro='Bk',struc='Open Cut',lat='40.625039',lon='-73.960803',id='49',n='Manhattan',s='Brighton Beach & Coney Island'}, --Avenue J / B Q
	['D34']={boro='Bk',struc='Open Cut',lat='40.617618',lon='-73.959399',id='50',n='Manhattan',s='Brighton Beach & Coney Island'}, --Avenue M / B Q
	['D35']={boro='Bk',struc='Open Cut',lat='40.60867',lon='-73.957734',id='51',n='Manhattan',s='Brighton Beach & Coney Island'}, --Kings Hwy / B Q
	['D37']={boro='Bk',struc='Open Cut',lat='40.5993',lon='-73.955929',id='52',n='Manhattan',s='Brighton Beach & Coney Island'}, --Avenue U / B Q
	['D38']={boro='Bk',struc='Open Cut',lat='40.595246',lon='-73.955161',id='53',n='Manhattan',s='Brighton Beach & Coney Island'}, --Neck Rd / B Q
	['D39']={boro='Bk',struc='Open Cut',lat='40.586896',lon='-73.954155',id='54',n='Manhattan',s='Brighton Beach & Coney Island'}, --Sheepshead Bay / B Q
	['D40']={boro='Bk',struc='Elevated',lat='40.577621',lon='-73.961376',id='55',n='Manhattan',s='Coney Island'}, --Brighton Beach / B Q
	['D41']={boro='Bk',struc='Elevated',lat='40.576312',lon='-73.968501',id='56',n='Manhattan',s='Stillwell Av'}, --Ocean Pkwy / Q
	['D42']={boro='Bk',struc='Elevated',lat='40.576127',lon='-73.975939',id='57',n='Manhattan',s='Stillwell Av'}, --W 8 St - NY Aquarium / F Q
	['D43']={boro='Bk',struc='Viaduct',lat='40.577422',lon='-73.981233',id='58',n='Manhattan',s=''}, --Coney Island - Stillwell Av / D F N Q
	['B12']={boro='Bk',struc='Open Cut',lat='40.646292',lon='-73.994324',id='59',n='Manhattan',s='Coney Island'}, --9 Av / D
	['B13']={boro='Bk',struc='Elevated',lat='40.640914',lon='-73.994304',id='60',n='Manhattan',s='Coney Island'}, --Fort Hamilton Pkwy / D
	['B14']={boro='Bk',struc='Elevated',lat='40.63626',lon='-73.994791',id='61',n='Manhattan',s='Coney Island'}, --50 St / D
	['B15']={boro='Bk',struc='Elevated',lat='40.631435',lon='-73.995476',id='62',n='Manhattan',s='Coney Island'}, --55 St / D
	['B16']={boro='Bk',struc='Elevated',lat='40.626472',lon='-73.996895',id='63',n='Manhattan',s='Coney Island'}, --62 St / D
	['B17']={boro='Bk',struc='Elevated',lat='40.619589',lon='-73.998864',id='64',n='Manhattan',s='Coney Island'}, --71 St / D
	['B18']={boro='Bk',struc='Elevated',lat='40.613501',lon='-74.00061',id='65',n='Manhattan',s='Coney Island'}, --79 St / D
	['B19']={boro='Bk',struc='Elevated',lat='40.607954',lon='-74.001736',id='66',n='Manhattan',s='Coney Island'}, --18 Av / D
	['B20']={boro='Bk',struc='Elevated',lat='40.604556',lon='-73.998168',id='67',n='Manhattan',s='Coney Island'}, --20 Av / D
	['B21']={boro='Bk',struc='Elevated',lat='40.601875',lon='-73.993728',id='68',n='Manhattan',s='Coney Island'}, --Bay Pkwy / D
	['B22']={boro='Bk',struc='Elevated',lat='40.597704',lon='-73.986829',id='69',n='Manhattan',s='Coney Island'}, --25 Av / D
	['B23']={boro='Bk',struc='Elevated',lat='40.588841',lon='-73.983765',id='70',n='Manhattan',s='Coney Island'}, --Bay 50 St / D
	['N02']={boro='Bk',struc='Open Cut',lat='40.635064',lon='-74.011719',id='71',n='Manhattan',s='Coney Island'}, --8 Av / N
	['N03']={boro='Bk',struc='Open Cut',lat='40.631386',lon='-74.005351',id='72',n='Manhattan',s='Coney Island'}, --Fort Hamilton Pkwy / N
	['N04']={boro='Bk',struc='Open Cut',lat='40.624842',lon='-73.996353',id='73',n='Manhattan',s='Coney Island'}, --New Utrecht Av / N
	['N05']={boro='Bk',struc='Open Cut',lat='40.620671',lon='-73.990414',id='74',n='Manhattan',s='Coney Island'}, --18 Av / N
	['N06']={boro='Bk',struc='Open Cut',lat='40.61741',lon='-73.985026',id='75',n='Manhattan',s='Coney Island'}, --20 Av / N
	['N07']={boro='Bk',struc='Open Cut',lat='40.611815',lon='-73.981848',id='76',n='Manhattan',s='Coney Island'}, --Bay Pkwy / N
	['N08']={boro='Bk',struc='Open Cut',lat='40.603923',lon='-73.980353',id='77',n='Manhattan',s='Coney Island'}, --Kings Hwy / N
	['N09']={boro='Bk',struc='Open Cut',lat='40.597473',lon='-73.979137',id='78',n='Manhattan',s='Coney Island'}, --Avenue U / N
	['N10']={boro='Bk',struc='Open Cut',lat='40.592721',lon='-73.97823',id='79',n='Manhattan',s='Coney Island'}, --86 St / N
	['J12']={boro='Q',struc='Elevated',lat='40.700492',lon='-73.828294',id='80',n='Jamaica',s='Manhattan'}, --121 St / J Z
	['J13']={boro='Q',struc='Elevated',lat='40.697418',lon='-73.836345',id='81',n='Jamaica',s='Manhattan'}, --111 St / J
	['J14']={boro='Q',struc='Elevated',lat='40.695178',lon='-73.84433',id='82',n='Jamaica',s='Manhattan'}, --104 St / J Z
	['J15']={boro='Q',struc='Elevated',lat='40.693879',lon='-73.851576',id='83',n='Jamaica',s='Manhattan'}, --Woodhaven Blvd / J Z
	['J16']={boro='Q',struc='Elevated',lat='40.692435',lon='-73.86001',id='84',n='Jamaica',s='Manhattan'}, --85 St - Forest Pkwy / J
	['J17']={boro='Q',struc='Elevated',lat='40.691324',lon='-73.867139',id='85',n='Jamaica',s='Manhattan'}, --75 St / J Z
	['J19']={boro='Bk',struc='Elevated',lat='40.689941',lon='-73.87255',id='86',n='Jamaica',s='Manhattan'}, --Cypress Hills / J
	['J20']={boro='Bk',struc='Elevated',lat='40.683194',lon='-73.873785',id='87',n='Jamaica',s='Manhattan'}, --Crescent St / J Z
	['J21']={boro='Bk',struc='Elevated',lat='40.68141',lon='-73.880039',id='88',n='Jamaica',s='Manhattan'}, --Norwood Av / J Z
	['J22']={boro='Bk',struc='Elevated',lat='40.679947',lon='-73.884639',id='89',n='Jamaica',s='Manhattan'}, --Cleveland St / J
	['J23']={boro='Bk',struc='Elevated',lat='40.678024',lon='-73.891688',id='90',n='Jamaica',s='Manhattan'}, --Van Siclen Av / J Z
	['J24']={boro='Bk',struc='Elevated',lat='40.676992',lon='-73.898654',id='91',n='Jamaica',s='Manhattan'}, --Alabama Av / J
	['J27']={boro='Bk',struc='Elevated',lat='40.679498',lon='-73.904512',id='92',n='Jamaica',s='Manhattan'}, --Broadway Jct / J Z
	['J28']={boro='Bk',struc='Elevated',lat='40.682893',lon='-73.910456',id='93',n='Jamaica',s='Manhattan'}, --Chauncey St / J Z
	['J29']={boro='Bk',struc='Elevated',lat='40.68637',lon='-73.916559',id='94',n='Jamaica',s='Manhattan'}, --Halsey St / J
	['J30']={boro='Bk',struc='Elevated',lat='40.68963',lon='-73.92227',id='95',n='Jamaica',s='Manhattan'}, --Gates Av / J Z
	['J31']={boro='Bk',struc='Elevated',lat='40.693342',lon='-73.928814',id='96',n='Jamaica',s='Manhattan'}, --Kosciuszko St / J
	['M11']={boro='Bk',struc='Elevated',lat='40.697207',lon='-73.935657',id='97',n='Jamaica - Middle Village',s='Manhattan'}, --Myrtle Av / J M Z
	['M12']={boro='Bk',struc='Elevated',lat='40.70026',lon='-73.941126',id='98',n='Jamaica - Middle Village',s='Manhattan'}, --Flushing Av / J M
	['M13']={boro='Bk',struc='Elevated',lat='40.703869',lon='-73.947408',id='99',n='Jamaica - Middle Village',s='Manhattan'}, --Lorimer St / J M
	['M14']={boro='Bk',struc='Elevated',lat='40.70687',lon='-73.953431',id='100',n='Jamaica - Middle Village',s='Manhattan'}, --Hewes St / J M
	['M16']={boro='Bk',struc='Elevated',lat='40.708359',lon='-73.957757',id='101',n='Jamaica - Middle Village',s='Manhattan'}, --Marcy Av / J M Z
	['M18']={boro='M',struc='Subway',lat='40.718315',lon='-73.987437',id='102',n='Brooklyn',s='Broad St (JZ) - Uptown (M)'}, --Essex St / J M Z
	['M19']={boro='M',struc='Subway',lat='40.72028',lon='-73.993915',id='103',n='Brooklyn',s='Broad St'}, --Bowery / J Z
	['M20']={boro='M',struc='Subway',lat='40.718092',lon='-73.999892',id='104',n='Brooklyn',s='Broad St'}, --Canal St / J Z
	['M21']={boro='M',struc='Subway',lat='40.713243',lon='-74.003401',id='105',n='Brooklyn',s='Broad St'}, --Chambers St / J Z
	['M22']={boro='M',struc='Subway',lat='40.710374',lon='-74.007582',id='106',n='Brooklyn',s='Broad St'}, --Fulton St / J Z
	['M23']={boro='M',struc='Subway',lat='40.706476',lon='-74.011056',id='107',n='Brooklyn',s=''}, --Broad St / J Z
	['M01']={boro='Q',struc='Elevated',lat='40.711396',lon='-73.889601',id='108',n='Manhattan',s=''}, --Middle Village - Metropolitan Av / M
	['M04']={boro='Q',struc='Elevated',lat='40.706186',lon='-73.895877',id='109',n='Manhattan',s='Metropolitan Av'}, --Fresh Pond Rd / M
	['M05']={boro='Q',struc='Elevated',lat='40.704423',lon='-73.903077',id='110',n='Manhattan',s='Metropolitan Av'}, --Forest Av / M
	['M06']={boro='Q',struc='Elevated',lat='40.702762',lon='-73.90774',id='111',n='Manhattan',s='Metropolitan Av'}, --Seneca Av / M
	['M08']={boro='Bk',struc='Elevated',lat='40.69943',lon='-73.912385',id='112',n='Manhattan',s='Metropolitan Av'}, --Myrtle - Wyckoff Avs / M
	['M09']={boro='Bk',struc='Elevated',lat='40.698664',lon='-73.919711',id='113',n='Manhattan',s='Metropolitan Av'}, --Knickerbocker Av / M
	['M10']={boro='Bk',struc='Elevated',lat='40.697857',lon='-73.927397',id='114',n='Manhattan',s='Metropolitan Av'}, --Central Av / M
	['L01']={boro='M',struc='Subway',lat='40.739777',lon='-74.002578',id='115',n='',s='Brooklyn'}, --8 Av / L
	['L02']={boro='M',struc='Subway',lat='40.737335',lon='-73.996786',id='116',n='8 Av',s='Brooklyn'}, --6 Av / L
	['L03']={boro='M',struc='Subway',lat='40.734789',lon='-73.99073',id='117',n='8 Av',s='Brooklyn'}, --Union Sq - 14 St / L
	['L05']={boro='M',struc='Subway',lat='40.732849',lon='-73.986122',id='118',n='8 Av',s='Brooklyn'}, --3 Av / L
	['L06']={boro='M',struc='Subway',lat='40.730953',lon='-73.981628',id='119',n='8 Av',s='Brooklyn'}, --1 Av / L
	['L08']={boro='Bk',struc='Subway',lat='40.717304',lon='-73.956872',id='120',n='Manhattan',s='Canarsie - Rockaway Parkway'}, --Bedford Av / L
	['L10']={boro='Bk',struc='Subway',lat='40.714063',lon='-73.950275',id='121',n='Manhattan',s='Canarsie - Rockaway Parkway'}, --Lorimer St / L
	['L11']={boro='Bk',struc='Subway',lat='40.714565',lon='-73.944053',id='122',n='Manhattan',s='Canarsie - Rockaway Parkway'}, --Graham Av / L
	['L12']={boro='Bk',struc='Subway',lat='40.711926',lon='-73.94067',id='123',n='Manhattan',s='Canarsie - Rockaway Parkway'}, --Grand St / L
	['L13']={boro='Bk',struc='Subway',lat='40.707739',lon='-73.93985',id='124',n='Manhattan',s='Canarsie - Rockaway Parkway'}, --Montrose Av / L
	['L14']={boro='Bk',struc='Subway',lat='40.706152',lon='-73.933147',id='125',n='Manhattan',s='Canarsie - Rockaway Parkway'}, --Morgan Av / L
	['L15']={boro='Bk',struc='Subway',lat='40.706607',lon='-73.922913',id='126',n='Manhattan',s='Canarsie - Rockaway Parkway'}, --Jefferson St / L
	['L16']={boro='Bk',struc='Subway',lat='40.703811',lon='-73.918425',id='127',n='Manhattan',s='Canarsie - Rockaway Parkway'}, --DeKalb Av / L
	['L17']={boro='Bk',struc='Subway',lat='40.699814',lon='-73.911586',id='128',n='Manhattan',s='Canarsie - Rockaway Parkway'}, --Myrtle - Wyckoff Avs / L
	['L19']={boro='Q',struc='Subway',lat='40.695602',lon='-73.904084',id='129',n='Manhattan',s='Canarsie - Rockaway Parkway'}, --Halsey St / L
	['L20']={boro='Bk',struc='Subway',lat='40.688764',lon='-73.904046',id='130',n='Manhattan',s='Canarsie - Rockaway Parkway'}, --Wilson Av / L
	['L21']={boro='Bk',struc='Subway',lat='40.682829',lon='-73.905249',id='131',n='Manhattan',s='Canarsie - Rockaway Parkway'}, --Bushwick Av - Aberdeen St / L
	['L22']={boro='Bk',struc='Elevated',lat='40.678856',lon='-73.90324',id='132',n='Manhattan',s='Canarsie - Rockaway Parkway'}, --Broadway Jct / L
	['L24']={boro='Bk',struc='Elevated',lat='40.675345',lon='-73.903097',id='133',n='Manhattan',s='Canarsie - Rockaway Parkway'}, --Atlantic Av / L
	['L25']={boro='Bk',struc='Elevated',lat='40.669367',lon='-73.901975',id='134',n='Manhattan',s='Canarsie - Rockaway Parkway'}, --Sutter Av / L
	['L26']={boro='Bk',struc='Elevated',lat='40.664038',lon='-73.900571',id='135',n='Manhattan',s='Canarsie - Rockaway Parkway'}, --Livonia Av / L
	['L27']={boro='Bk',struc='Elevated',lat='40.658733',lon='-73.899232',id='136',n='Manhattan',s='Canarsie - Rockaway Parkway'}, --New Lots Av / L
	['L28']={boro='Bk',struc='At Grade',lat='40.650573',lon='-73.899485',id='137',n='Manhattan',s='Canarsie - Rockaway Parkway'}, --E 105 St / L
	['L29']={boro='Bk',struc='At Grade',lat='40.646654',lon='-73.90185',id='138',n='Manhattan',s=''}, --Canarsie - Rockaway Pkwy / L
	['S01']={boro='Bk',struc='Elevated',lat='40.680596',lon='-73.955827',id='139',n='',s='Prospect Park'}, --Franklin Av / S
	['S03']={boro='Bk',struc='Open Cut',lat='40.674772',lon='-73.957624',id='141',n='Franklin Av',s='Prospect Park'}, --Park Pl / S
	['S04']={boro='Bk',struc='Open Cut',lat='40.670343',lon='-73.959245',id='142',n='Franklin Av',s='Prospect Park'}, --Botanic Garden / S
	['A02']={boro='M',struc='Subway',lat='40.868072',lon='-73.919899',id='143',n='',s='Downtown & Brooklyn'}, --Inwood - 207 St / A
	['A03']={boro='M',struc='Subway',lat='40.865491',lon='-73.927271',id='144',n='207 St',s='Downtown & Brooklyn'}, --Dyckman St / A
	['A05']={boro='M',struc='Subway',lat='40.859022',lon='-73.93418',id='145',n='207 St',s='Downtown & Brooklyn'}, --190 St / A
	['A06']={boro='M',struc='Subway',lat='40.851695',lon='-73.937969',id='146',n='207 St',s='Downtown & Brooklyn'}, --181 St / A
	['A07']={boro='M',struc='Subway',lat='40.847391',lon='-73.939704',id='147',n='207 St',s='Downtown & Brooklyn'}, --175 St / A
	['A09']={boro='M',struc='Subway',lat='40.840719',lon='-73.939561',id='148',n='207 St',s='Downtown & Brooklyn'}, --168 St / A C
	['A10']={boro='M',struc='Subway',lat='40.836013',lon='-73.939892',id='149',n='Uptown',s='Downtown & Brooklyn'}, --163 St - Amsterdam Av / C
	['A11']={boro='M',struc='Subway',lat='40.830518',lon='-73.941514',id='150',n='Uptown',s='Downtown & Brooklyn'}, --155 St / C
	['A12']={boro='M',struc='Subway',lat='40.824783',lon='-73.944216',id='151',n='Uptown & The Bronx',s='Downtown & Brooklyn'}, --145 St / A C
	['D13']={boro='M',struc='Subway',lat='40.824783',lon='-73.944216',id='151',n='Uptown & The Bronx',s='Downtown & Brooklyn'}, --145 St / B D
	['A14']={boro='M',struc='Subway',lat='40.817894',lon='-73.947649',id='152',n='Uptown & The Bronx',s='Downtown & Brooklyn'}, --135 St / B C
	['A15']={boro='M',struc='Subway',lat='40.811109',lon='-73.952343',id='153',n='Uptown & The Bronx',s='Downtown & Brooklyn'}, --125 St / A B C D
	['A16']={boro='M',struc='Subway',lat='40.805085',lon='-73.954882',id='154',n='Uptown & The Bronx',s='Downtown & Brooklyn'}, --116 St / B C
	['A17']={boro='M',struc='Subway',lat='40.800603',lon='-73.958161',id='155',n='Uptown & The Bronx',s='Downtown & Brooklyn'}, --Cathedral Pkwy (110 St) / B C
	['A18']={boro='M',struc='Subway',lat='40.796092',lon='-73.961454',id='156',n='Uptown & The Bronx',s='Downtown & Brooklyn'}, --103 St / B C
	['A19']={boro='M',struc='Subway',lat='40.791642',lon='-73.964696',id='157',n='Uptown & The Bronx',s='Downtown & Brooklyn'}, --96 St / B C
	['A20']={boro='M',struc='Subway',lat='40.785868',lon='-73.968916',id='158',n='Uptown & The Bronx',s='Downtown & Brooklyn'}, --86 St / B C
	['A21']={boro='M',struc='Subway',lat='40.781433',lon='-73.972143',id='159',n='Uptown & The Bronx',s='Downtown & Brooklyn'}, --81 St - Museum of Natural History / B C
	['A22']={boro='M',struc='Subway',lat='40.775594',lon='-73.97641',id='160',n='Uptown & The Bronx',s='Downtown & Brooklyn'}, --72 St / B C
	['A24']={boro='M',struc='Subway',lat='40.768296',lon='-73.981736',id='161',n='Uptown & The Bronx',s='Downtown & Brooklyn'}, --59 St - Columbus Circle / A B C D
	['A25']={boro='M',struc='Subway',lat='40.762456',lon='-73.985984',id='162',n='Uptown - Queens',s='Downtown & Brooklyn'}, --50 St / C E
	['A27']={boro='M',struc='Subway',lat='40.757308',lon='-73.989735',id='163',n='Uptown - Queens',s='Downtown & Brooklyn'}, --42 St - Port Authority Bus Terminal / A C E
	['A28']={boro='M',struc='Subway',lat='40.752287',lon='-73.993391',id='164',n='Uptown - Queens',s='Downtown & Brooklyn'}, --34 St - Penn Station / A C E
	['A30']={boro='M',struc='Subway',lat='40.745906',lon='-73.998041',id='165',n='Uptown - Queens',s='Downtown & Brooklyn'}, --23 St / C E
	['A31']={boro='M',struc='Subway',lat='40.740893',lon='-74.00169',id='166',n='Uptown - Queens',s='Downtown & Brooklyn'}, --14 St / A C E
	['A32']={boro='M',struc='Subway',lat='40.732338',lon='-74.000495',id='167',n='Uptown - Queens',s='Downtown & Brooklyn'}, --W 4 St / A C E
	['D20']={boro='M',struc='Subway',lat='40.732338',lon='-74.000495',id='167',n='Uptown - Queens',s='Downtown & Brooklyn'}, --W 4 St / B D F M
	['A33']={boro='M',struc='Subway',lat='40.726227',lon='-74.003739',id='168',n='Uptown - Queens',s='Downtown & Brooklyn'}, --Spring St / C E
	['A34']={boro='M',struc='Subway',lat='40.720824',lon='-74.005229',id='169',n='Uptown - Queens',s='Downtown & Brooklyn'}, --Canal St / A C E
	['A36']={boro='M',struc='Subway',lat='40.714111',lon='-74.008585',id='170',n='Uptown',s='Downtown & Brooklyn'}, --Chambers St / A C
	['E01']={boro='M',struc='Subway',lat='40.712582',lon='-74.009781',id='171',n='Uptown & Queens',s=''}, --World Trade Center / E
	['A38']={boro='M',struc='Subway',lat='40.710197',lon='-74.007691',id='172',n='Uptown',s='Brooklyn'}, --Fulton St / A C
	['A40']={boro='Bk',struc='Subway',lat='40.699337',lon='-73.990531',id='173',n='Manhattan',s='Euclid - Lefferts - Rockaways'}, --High St / A C
	['A41']={boro='Bk',struc='Subway',lat='40.692338',lon='-73.987342',id='174',n='Manhattan',s='Euclid - Lefferts - Rockaways - Coney Island'}, --Jay St - MetroTech / A C F
	['A42']={boro='Bk',struc='Subway',lat='40.688484',lon='-73.985001',id='175',n='Manhattan - Church Av',s='Euclid Av & Queens - Court Sq'}, --Hoyt - Schermerhorn Sts / A C G
	['A43']={boro='Bk',struc='Subway',lat='40.686113',lon='-73.973946',id='176',n='Manhattan',s='Euclid Av'}, --Lafayette Av / C
	['A44']={boro='Bk',struc='Subway',lat='40.683263',lon='-73.965838',id='177',n='Manhattan',s='Euclid Av'}, --Clinton - Washington Avs / C
	['A45']={boro='Bk',struc='Subway',lat='40.68138',lon='-73.956848',id='178',n='Manhattan',s='Euclid Av'}, --Franklin Av / C
	['A46']={boro='Bk',struc='Subway',lat='40.680438',lon='-73.950426',id='179',n='Manhattan',s='Euclid - Lefferts - Rockaways'}, --Nostrand Av / A C
	['A47']={boro='Bk',struc='Subway',lat='40.679921',lon='-73.940858',id='180',n='Manhattan',s='Euclid Av'}, --Kingston - Throop Avs / C
	['A48']={boro='Bk',struc='Subway',lat='40.679364',lon='-73.930729',id='181',n='Manhattan',s='Euclid - Lefferts - Rockaways'}, --Utica Av / A C
	['A49']={boro='Bk',struc='Subway',lat='40.678822',lon='-73.920786',id='182',n='Manhattan',s='Euclid Av'}, --Ralph Av / C
	['A50']={boro='Bk',struc='Subway',lat='40.67834',lon='-73.911946',id='183',n='Manhattan',s='Euclid Av'}, --Rockaway Av / C
	['A51']={boro='Bk',struc='Subway',lat='40.678334',lon='-73.905316',id='184',n='Manhattan',s='Euclid - Lefferts - Rockaways'}, --Broadway Jct / A C
	['A52']={boro='Bk',struc='Subway',lat='40.674542',lon='-73.896548',id='185',n='Manhattan',s='Euclid Av'}, --Liberty Av / C
	['A53']={boro='Bk',struc='Subway',lat='40.67271',lon='-73.890358',id='186',n='Manhattan',s='Euclid Av'}, --Van Siclen Av / C
	['A54']={boro='Bk',struc='Subway',lat='40.67413',lon='-73.88075',id='187',n='Manhattan',s='Euclid Av'}, --Shepherd Av / C
	['A55']={boro='Bk',struc='Subway',lat='40.675377',lon='-73.872106',id='188',n='Manhattan',s='Lefferts - Rockaways'}, --Euclid Av / A C
	['A57']={boro='Bk',struc='Subway',lat='40.677044',lon='-73.86505',id='189',n='Manhattan',s='Lefferts - Rockaways'}, --Grant Av / A
	['A59']={boro='Q',struc='Elevated',lat='40.679371',lon='-73.858992',id='190',n='Manhattan',s='Lefferts - Rockaways'}, --80 St / A
	['A60']={boro='Q',struc='Elevated',lat='40.679843',lon='-73.85147',id='191',n='Manhattan',s='Lefferts - Rockaways'}, --88 St / A
	['A61']={boro='Q',struc='Elevated',lat='40.680429',lon='-73.843853',id='192',n='Manhattan',s='Lefferts - Rockaways'}, --Rockaway Blvd / A
	['A63']={boro='Q',struc='Elevated',lat='40.681711',lon='-73.837683',id='193',n='Manhattan',s='Lefferts Blvd'}, --104 St / A
	['A64']={boro='Q',struc='Elevated',lat='40.684331',lon='-73.832163',id='194',n='Manhattan',s='Lefferts Blvd'}, --111 St / A
	['A65']={boro='Q',struc='Elevated',lat='40.685951',lon='-73.825798',id='195',n='Manhattan',s=''}, --Ozone Park - Lefferts Blvd / A
	['H01']={boro='Q',struc='At Grade',lat='40.672097',lon='-73.835919',id='196',n='Manhattan',s='Rockaways'}, --Aqueduct Racetrack / A
	['H02']={boro='Q',struc='At Grade',lat='40.668234',lon='-73.834058',id='197',n='Manhattan',s='Rockaways'}, --Aqueduct - N Conduit Av / A
	['H03']={boro='Q',struc='At Grade',lat='40.660476',lon='-73.830301',id='198',n='Manhattan',s='Rockaways'}, --Howard Beach - JFK Airport / A
	['H04']={boro='Q',struc='At Grade',lat='40.608382',lon='-73.815925',id='199',n='Manhattan',s='Rockaways'}, --Broad Channel / A S
	['H12']={boro='Q',struc='Viaduct',lat='40.588034',lon='-73.813641',id='200',n='Manhattan',s='Rockaway Park'}, --Beach 90 St / A S
	['H13']={boro='Q',struc='Viaduct',lat='40.585307',lon='-73.820558',id='201',n='Manhattan',s='Rockaway Park'}, --Beach 98 St / A S
	['H14']={boro='Q',struc='Viaduct',lat='40.583209',lon='-73.827559',id='202',n='Manhattan',s='Rockaway Park'}, --Beach 105 St / A S
	['H15']={boro='Q',struc='At Grade',lat='40.580903',lon='-73.835592',id='203',n='Manhattan',s=''}, --Rockaway Park - Beach 116 St / A S
	['H06']={boro='Q',struc='Viaduct',lat='40.590927',lon='-73.796924',id='204',n='Manhattan',s='Far Rockaway'}, --Beach 67 St / A
	['H07']={boro='Q',struc='Viaduct',lat='40.592374',lon='-73.788522',id='205',n='Manhattan',s='Far Rockaway'}, --Beach 60 St / A
	['H08']={boro='Q',struc='Viaduct',lat='40.592943',lon='-73.776013',id='206',n='Manhattan',s='Far Rockaway'}, --Beach 44 St / A
	['H09']={boro='Q',struc='Viaduct',lat='40.595398',lon='-73.768175',id='207',n='Manhattan',s='Far Rockaway'}, --Beach 36 St / A
	['H10']={boro='Q',struc='Viaduct',lat='40.600066',lon='-73.761353',id='208',n='Manhattan',s='Far Rockaway'}, --Beach 25 St / A
	['H11']={boro='Q',struc='Viaduct',lat='40.603995',lon='-73.755405',id='209',n='Manhattan',s=''}, --Far Rockaway - Mott Av / A
	['D01']={boro='Bx',struc='Subway',lat='40.874811',lon='-73.878855',id='210',n='',s='Manhattan'}, --Norwood - 205 St / D
	['D03']={boro='Bx',struc='Subway',lat='40.873244',lon='-73.887138',id='211',n='Norwood - 205 St',s='Manhattan'}, --Bedford Park Blvd / B D
	['D04']={boro='Bx',struc='Subway',lat='40.866978',lon='-73.893509',id='212',n='Bedford Pk Blvd & 205 St',s='Manhattan'}, --Kingsbridge Rd / B D
	['D05']={boro='Bx',struc='Subway',lat='40.861296',lon='-73.897749',id='213',n='Bedford Pk Blvd & 205 St',s='Manhattan'}, --Fordham Rd / B D
	['D06']={boro='Bx',struc='Subway',lat='40.856093',lon='-73.900741',id='214',n='Bedford Pk Blvd & 205 St',s='Manhattan'}, --182-183 Sts / B D
	['D07']={boro='Bx',struc='Subway',lat='40.85041',lon='-73.905227',id='215',n='Bedford Pk Blvd & 205 St',s='Manhattan'}, --Tremont Av / B D
	['D08']={boro='Bx',struc='Subway',lat='40.8459',lon='-73.910136',id='216',n='Bedford Pk Blvd & 205 St',s='Manhattan'}, --174-175 Sts / B D
	['D09']={boro='Bx',struc='Subway',lat='40.839306',lon='-73.9134',id='217',n='Bedford Pk Blvd & 205 St',s='Manhattan'}, --170 St / B D
	['D10']={boro='Bx',struc='Subway',lat='40.833771',lon='-73.91844',id='218',n='Bedford Pk Blvd & 205 St',s='Manhattan'}, --167 St / B D
	['D11']={boro='Bx',struc='Subway',lat='40.827905',lon='-73.925651',id='219',n='Bedford Pk Blvd & 205 St',s='Manhattan'}, --161 St - Yankee Stadium / B D
	['D12']={boro='M',struc='Subway',lat='40.830135',lon='-73.938209',id='220',n='The Bronx',s='Downtown & Brooklyn'}, --155 St / B D
	['B04']={boro='Q',struc='Subway',lat='40.754203',lon='-73.942836',id='221',n='Jamaica',s='Manhattan'}, --21 St - Queensbridge / F
	['B06']={boro='M',struc='Subway',lat='40.759145',lon='-73.95326',id='222',n='Queens',s='Manhattan'}, --Roosevelt Island / F
	['B08']={boro='M',struc='Subway',lat='40.764629',lon='-73.966113',id='223',n='Uptown - Queens',s='Downtown & Brooklyn'}, --Lexington Av/63 St / F Q
	['B10']={boro='M',struc='Subway',lat='40.763972',lon='-73.97745',id='224',n='Uptown & Queens',s='Downtown & Brooklyn'}, --57 St / F
	['D15']={boro='M',struc='Subway',lat='40.758663',lon='-73.981329',id='225',n='Uptown & The Bronx - Queens',s='Downtown & Brooklyn'}, --47-50 Sts - Rockefeller Ctr / B D F M
	['D16']={boro='M',struc='Subway',lat='40.754222',lon='-73.984569',id='226',n='Uptown & The Bronx - Queens',s='Downtown & Brooklyn'}, --42 St - Bryant Pk / B D F M
	['D17']={boro='M',struc='Subway',lat='40.749719',lon='-73.987823',id='227',n='Uptown & The Bronx - Queens',s='Downtown & Brooklyn'}, --34 St - Herald Sq / B D F M
	['D18']={boro='M',struc='Subway',lat='40.742878',lon='-73.992821',id='228',n='Uptown & Queens',s='Downtown & Brooklyn'}, --23 St / F M
	['D19']={boro='M',struc='Subway',lat='40.738228',lon='-73.996209',id='229',n='Uptown & Queens',s='Downtown & Brooklyn'}, --14 St / F M
	['D21']={boro='M',struc='Subway',lat='40.725297',lon='-73.996204',id='230',n='Uptown & The Bronx - Queens',s='Downtown & Brooklyn'}, --Broadway-Lafayette St / B D F M
	['D22']={boro='M',struc='Subway',lat='40.718267',lon='-73.993753',id='231',n='Uptown & The Bronx',s='Brooklyn'}, --Grand St / B D
	['F14']={boro='M',struc='Subway',lat='40.723402',lon='-73.989938',id='232',n='Uptown & Queens',s='Downtown & Brooklyn'}, --2 Av / F
	['F15']={boro='M',struc='Subway',lat='40.718611',lon='-73.988114',id='233',n='Uptown & Queens',s='Downtown & Brooklyn'}, --Delancey St / F
	['F16']={boro='M',struc='Subway',lat='40.713715',lon='-73.990173',id='234',n='Uptown & Queens',s='Brooklyn'}, --East Broadway / F
	['F18']={boro='Bk',struc='Subway',lat='40.701397',lon='-73.986751',id='235',n='Manhattan',s='Coney Island'}, --York St / F
	['F20']={boro='Bk',struc='Subway',lat='40.686145',lon='-73.990862',id='236',n='Manhattan - Queens',s='Church Av - Coney Island'}, --Bergen St / F G
	['F21']={boro='Bk',struc='Subway',lat='40.680303',lon='-73.995048',id='237',n='Manhattan - Queens',s='Church Av - Coney Island'}, --Carroll St / F G
	['F22']={boro='Bk',struc='Viaduct',lat='40.67358',lon='-73.995959',id='238',n='Manhattan - Queens',s='Church Av - Coney Island'}, --Smith - 9 Sts / F G
	['F23']={boro='Bk',struc='Viaduct',lat='40.670272',lon='-73.989779',id='239',n='Manhattan - Queens',s='Church Av - Coney Island'}, --4 Av / F G
	['F24']={boro='Bk',struc='Subway',lat='40.666271',lon='-73.980305',id='240',n='Manhattan - Queens',s='Church Av - Coney Island'}, --7 Av / F G
	['F25']={boro='Bk',struc='Subway',lat='40.660365',lon='-73.979493',id='241',n='Manhattan - Queens',s='Church Av - Coney Island'}, --15 St - Prospect Park / F G
	['F26']={boro='Bk',struc='Subway',lat='40.650782',lon='-73.975776',id='242',n='Manhattan - Queens',s='Church Av - Coney Island'}, --Fort Hamilton Pkwy / F G
	['F27']={boro='Bk',struc='Subway',lat='40.644041',lon='-73.979678',id='243',n='Manhattan',s='Coney Island'}, --Church Av / F
	['F29']={boro='Bk',struc='Elevated',lat='40.636119',lon='-73.978172',id='244',n='Manhattan',s='Coney Island'}, --Ditmas Av / F
	['F30']={boro='Bk',struc='Elevated',lat='40.629755',lon='-73.976971',id='245',n='Manhattan',s='Coney Island'}, --18 Av / F
	['F31']={boro='Bk',struc='Elevated',lat='40.625322',lon='-73.976127',id='246',n='Manhattan',s='Coney Island'}, --Avenue I / F
	['F32']={boro='Bk',struc='Elevated',lat='40.620769',lon='-73.975264',id='247',n='Manhattan',s='Coney Island'}, --Bay Pkwy / F
	['F33']={boro='Bk',struc='Elevated',lat='40.61514',lon='-73.974197',id='248',n='Manhattan',s='Coney Island'}, --Avenue N / F
	['F34']={boro='Bk',struc='Elevated',lat='40.608944',lon='-73.973022',id='249',n='Manhattan',s='Coney Island'}, --Avenue P / F
	['F35']={boro='Bk',struc='Elevated',lat='40.603217',lon='-73.972361',id='250',n='Manhattan',s='Coney Island'}, --Kings Hwy / F
	['F36']={boro='Bk',struc='Elevated',lat='40.596063',lon='-73.973357',id='251',n='Manhattan',s='Coney Island'}, --Avenue U / F
	['F38']={boro='Bk',struc='Elevated',lat='40.58962',lon='-73.97425',id='252',n='Manhattan',s='Coney Island'}, --Avenue X / F
	['F39']={boro='Bk',struc='Elevated',lat='40.581011',lon='-73.974574',id='253',n='Manhattan',s='Stillwell Av'}, --Neptune Av / F
	['F01']={boro='Q',struc='Subway',lat='40.712646',lon='-73.783817',id='254',n='',s='Manhattan'}, --Jamaica - 179 St / F
	['F02']={boro='Q',struc='Subway',lat='40.71047',lon='-73.793604',id='255',n='179 St',s='Manhattan'}, --169 St / F
	['F03']={boro='Q',struc='Subway',lat='40.707564',lon='-73.803326',id='256',n='179 St',s='Manhattan'}, --Parsons Blvd / F
	['F04']={boro='Q',struc='Subway',lat='40.70546',lon='-73.810708',id='257',n='179 St',s='Manhattan'}, --Sutphin Blvd / F
	['F05']={boro='Q',struc='Subway',lat='40.709179',lon='-73.820574',id='258',n='Jamaica',s='Manhattan'}, --Briarwood - Van Wyck Blvd / E F
	['F06']={boro='Q',struc='Subway',lat='40.714441',lon='-73.831008',id='259',n='Jamaica',s='Manhattan'}, --Kew Gardens - Union Tpke / E F
	['F07']={boro='Q',struc='Subway',lat='40.718331',lon='-73.837324',id='260',n='Jamaica',s='Manhattan'}, --75 Av / E F
	['G08']={boro='Q',struc='Subway',lat='40.721691',lon='-73.844521',id='261',n='Jamaica',s='Manhattan'}, --Forest Hills - 71 Av / E F M R
	['G09']={boro='Q',struc='Subway',lat='40.726523',lon='-73.852719',id='262',n='Forest Hills',s='Manhattan'}, --67 Av / M R
	['G10']={boro='Q',struc='Subway',lat='40.729846',lon='-73.861604',id='263',n='Forest Hills',s='Manhattan'}, --63 Dr - Rego Park / M R
	['G11']={boro='Q',struc='Subway',lat='40.733106',lon='-73.869229',id='264',n='Forest Hills',s='Manhattan'}, --Woodhaven Blvd / M R
	['G12']={boro='Q',struc='Subway',lat='40.737015',lon='-73.877223',id='265',n='Forest Hills',s='Manhattan'}, --Grand Av - Newtown / M R
	['G13']={boro='Q',struc='Subway',lat='40.742454',lon='-73.882017',id='266',n='Forest Hills',s='Manhattan'}, --Elmhurst Av / M R
	['G14']={boro='Q',struc='Subway',lat='40.746644',lon='-73.891338',id='267',n='Forest Hills - Jamaica',s='Manhattan'}, --Jackson Hts - Roosevelt Av / E F M R
	['G15']={boro='Q',struc='Subway',lat='40.749669',lon='-73.898453',id='268',n='Forest Hills',s='Manhattan'}, --65 St / M R
	['G16']={boro='Q',struc='Subway',lat='40.752885',lon='-73.906006',id='269',n='Forest Hills',s='Manhattan'}, --Northern Blvd / M R
	['G18']={boro='Q',struc='Subway',lat='40.756312',lon='-73.913333',id='270',n='Forest Hills',s='Manhattan'}, --46 St / M R
	['G19']={boro='Q',struc='Subway',lat='40.756879',lon='-73.92074',id='271',n='Forest Hills',s='Manhattan'}, --Steinway St / M R
	['G20']={boro='Q',struc='Subway',lat='40.752039',lon='-73.928781',id='272',n='Forest Hills',s='Manhattan'}, --36 St / M R
	['G21']={boro='Q',struc='Subway',lat='40.748973',lon='-73.937243',id='273',n='Forest Hills - Jamaica',s='Manhattan'}, --Queens Plaza / E M R
	['F09']={boro='Q',struc='Subway',lat='40.747846',lon='-73.946',id='274',n='Forest Hills - Jamaica',s='Manhattan'}, --Court Sq / E M
	['F11']={boro='M',struc='Subway',lat='40.757552',lon='-73.969055',id='275',n='Queens',s='Downtown & Brooklyn'}, --Lexington Av/53 St / E M
	['F12']={boro='M',struc='Subway',lat='40.760167',lon='-73.975224',id='276',n='Queens',s='Downtown & Brooklyn'}, --5 Av/53 St / E M
	['D14']={boro='M',struc='Subway',lat='40.762862',lon='-73.981637',id='277',n='Uptown & The Bronx - Queens',s='Downtown & Brooklyn'}, --7 Av / B D E
	['G05']={boro='Q',struc='Subway',lat='40.702147',lon='-73.801109',id='278',n='',s='Manhattan'}, --Jamaica Center - Parsons/Archer / E J Z
	['G06']={boro='Q',struc='Subway',lat='40.700486',lon='-73.807969',id='279',n='Jamaica Center',s='Manhattan'}, --Sutphin Blvd - Archer Av - JFK Airport / E J Z
	['G07']={boro='Q',struc='Subway',lat='40.702566',lon='-73.816859',id='280',n='Jamaica Center',s='Manhattan'}, --Jamaica - Van Wyck / E
	['G22']={boro='Q',struc='Subway',lat='40.746554',lon='-73.943832',id='281',n='',s='Brooklyn'}, --Court Sq / G
	['G24']={boro='Q',struc='Subway',lat='40.744065',lon='-73.949724',id='282',n='Court Sq',s='Brooklyn'}, --21 St / G
	['G26']={boro='Bk',struc='Subway',lat='40.731352',lon='-73.954449',id='283',n='Queens',s='Church Av'}, --Greenpoint Av / G
	['G28']={boro='Bk',struc='Subway',lat='40.724635',lon='-73.951277',id='284',n='Queens',s='Church Av'}, --Nassau Av / G
	['G29']={boro='Bk',struc='Subway',lat='40.712792',lon='-73.951418',id='285',n='Queens',s='Church Av'}, --Metropolitan Av / G
	['G30']={boro='Bk',struc='Subway',lat='40.706092',lon='-73.950308',id='286',n='Queens',s='Church Av'}, --Broadway / G
	['G31']={boro='Bk',struc='Subway',lat='40.700377',lon='-73.950234',id='287',n='Queens',s='Church Av'}, --Flushing Av / G
	['G32']={boro='Bk',struc='Subway',lat='40.694568',lon='-73.949046',id='288',n='Queens',s='Church Av'}, --Myrtle - Willoughby Avs / G
	['G33']={boro='Bk',struc='Subway',lat='40.689627',lon='-73.953522',id='289',n='Queens',s='Church Av'}, --Bedford - Nostrand Avs / G
	['G34']={boro='Bk',struc='Subway',lat='40.688873',lon='-73.96007',id='290',n='Queens',s='Church Av'}, --Classon Av / G
	['G35']={boro='Bk',struc='Subway',lat='40.688089',lon='-73.966839',id='291',n='Queens',s='Church Av'}, --Clinton - Washington Avs / G
	['G36']={boro='Bk',struc='Subway',lat='40.687119',lon='-73.975375',id='292',n='Queens',s='Church Av'}, --Fulton St / G
	['101']={boro='Bx',struc='Elevated',lat='40.889248',lon='-73.898583',id='293',n='',s='Manhattan'}, --Van Cortlandt Park - 242 St / 1
	['103']={boro='Bx',struc='Elevated',lat='40.884667',lon='-73.90087',id='294',n='242 St',s='Manhattan'}, --238 St / 1
	['104']={boro='Bx',struc='Elevated',lat='40.878856',lon='-73.904834',id='295',n='242 St',s='Manhattan'}, --231 St / 1
	['106']={boro='M',struc='Elevated',lat='40.874561',lon='-73.909831',id='296',n='242 St',s='Downtown'}, --Marble Hill - 225 St / 1
	['107']={boro='M',struc='Elevated',lat='40.869444',lon='-73.915279',id='297',n='The Bronx',s='Downtown'}, --215 St / 1
	['108']={boro='M',struc='Elevated',lat='40.864621',lon='-73.918822',id='298',n='Uptown & The Bronx',s='Downtown'}, --207 St / 1
	['109']={boro='M',struc='Elevated',lat='40.860531',lon='-73.925536',id='299',n='Uptown & The Bronx',s='Downtown'}, --Dyckman St / 1
	['110']={boro='M',struc='Subway',lat='40.855225',lon='-73.929412',id='300',n='Uptown & The Bronx',s='Downtown'}, --191 St / 1
	['111']={boro='M',struc='Subway',lat='40.849505',lon='-73.933596',id='301',n='Uptown & The Bronx',s='Downtown'}, --181 St / 1
	['112']={boro='M',struc='Subway',lat='40.840556',lon='-73.940133',id='302',n='Uptown & The Bronx',s='Downtown'}, --168 St - Washington Hts / 1
	['113']={boro='M',struc='Subway',lat='40.834041',lon='-73.94489',id='303',n='Uptown & The Bronx',s='Downtown'}, --157 St / 1
	['114']={boro='M',struc='Subway',lat='40.826551',lon='-73.95036',id='304',n='Uptown & The Bronx',s='Downtown'}, --145 St / 1
	['115']={boro='M',struc='Subway',lat='40.822008',lon='-73.953676',id='305',n='Uptown & The Bronx',s='Downtown'}, --137 St - City College / 1
	['116']={boro='M',struc='Elevated',lat='40.815581',lon='-73.958372',id='306',n='Uptown & The Bronx',s='Downtown'}, --125 St / 1
	['117']={boro='M',struc='Subway',lat='40.807722',lon='-73.96411',id='307',n='Uptown & The Bronx',s='Downtown'}, --116 St - Columbia University / 1
	['118']={boro='M',struc='Subway',lat='40.803967',lon='-73.966847',id='308',n='Uptown & The Bronx',s='Downtown'}, --Cathedral Pkwy / 1
	['119']={boro='M',struc='Subway',lat='40.799446',lon='-73.968379',id='309',n='Uptown & The Bronx',s='Downtown'}, --103 St / 1
	['120']={boro='M',struc='Subway',lat='40.793919',lon='-73.972323',id='310',n='Uptown & The Bronx',s='Downtown & Brooklyn'}, --96 St / 1 2 3
	['121']={boro='M',struc='Subway',lat='40.788644',lon='-73.976218',id='311',n='Uptown & The Bronx',s='Downtown'}, --86 St / 1
	['122']={boro='M',struc='Subway',lat='40.783934',lon='-73.979917',id='312',n='Uptown & The Bronx',s='Downtown'}, --79 St / 1
	['123']={boro='M',struc='Subway',lat='40.778453',lon='-73.98197',id='313',n='Uptown & The Bronx',s='Downtown & Brooklyn'}, --72 St / 1 2 3
	['124']={boro='M',struc='Subway',lat='40.77344',lon='-73.982209',id='314',n='Uptown & The Bronx',s='Downtown'}, --66 St - Lincoln Center / 1
	['125']={boro='M',struc='Subway',lat='40.768247',lon='-73.981929',id='315',n='Uptown & The Bronx',s='Downtown'}, --59 St - Columbus Circle / 1
	['126']={boro='M',struc='Subway',lat='40.761728',lon='-73.983849',id='316',n='Uptown & The Bronx',s='Downtown'}, --50 St / 1
	['127']={boro='M',struc='Subway',lat='40.75529',lon='-73.987495',id='317',n='Uptown & The Bronx',s='Downtown & Brooklyn'}, --Times Sq - 42 St / 1 2 3
	['128']={boro='M',struc='Subway',lat='40.750373',lon='-73.991057',id='318',n='Uptown & The Bronx',s='Downtown & Brooklyn'}, --34 St - Penn Station / 1 2 3
	['129']={boro='M',struc='Subway',lat='40.747215',lon='-73.993365',id='319',n='Uptown & The Bronx',s='Downtown'}, --28 St / 1
	['130']={boro='M',struc='Subway',lat='40.744081',lon='-73.995657',id='320',n='Uptown & The Bronx',s='Downtown'}, --23 St / 1
	['131']={boro='M',struc='Subway',lat='40.74104',lon='-73.997871',id='321',n='Uptown & The Bronx',s='Downtown'}, --18 St / 1
	['132']={boro='M',struc='Subway',lat='40.737826',lon='-74.000201',id='322',n='Uptown & The Bronx',s='Downtown & Brooklyn'}, --14 St / 1 2 3
	['133']={boro='M',struc='Subway',lat='40.733422',lon='-74.002906',id='323',n='Uptown & The Bronx',s='Downtown'}, --Christopher St - Sheridan Sq / 1
	['134']={boro='M',struc='Subway',lat='40.728251',lon='-74.005367',id='324',n='Uptown & The Bronx',s='Downtown'}, --Houston St / 1
	['135']={boro='M',struc='Subway',lat='40.722854',lon='-74.006277',id='325',n='Uptown & The Bronx',s='Downtown'}, --Canal St / 1
	['136']={boro='M',struc='Subway',lat='40.719318',lon='-74.006886',id='326',n='Uptown & The Bronx',s='Downtown'}, --Franklin St / 1
	['137']={boro='M',struc='Subway',lat='40.715478',lon='-74.009266',id='327',n='Uptown & The Bronx',s='Downtown & Brooklyn'}, --Chambers St / 1 2 3
	['138']={boro='M',struc='Subway',lat='40.711835',lon='-74.012188',id='328',n='Uptown & The Bronx',s='Downtown'}, --WTC Cortlandt / 1
	['139']={boro='M',struc='Subway',lat='40.707513',lon='-74.013783',id='329',n='Uptown & The Bronx',s='Downtown'}, --Rector St / 1
	['142']={boro='M',struc='Subway',lat='40.702068',lon='-74.013664',id='330',n='Uptown & The Bronx',s=''}, --South Ferry / 1
	['228']={boro='M',struc='Subway',lat='40.713051',lon='-74.008811',id='331',n='Uptown & The Bronx',s='Downtown & Brooklyn'}, --Park Pl / 2 3
	['229']={boro='M',struc='Subway',lat='40.709416',lon='-74.006571',id='332',n='Uptown & The Bronx',s='Downtown & Brooklyn'}, --Fulton St / 2 3
	['230']={boro='M',struc='Subway',lat='40.706821',lon='-74.0091',id='333',n='Uptown & The Bronx',s='Brooklyn'}, --Wall St / 2 3
	['231']={boro='Bk',struc='Subway',lat='40.697466',lon='-73.993086',id='334',n='Manhattan',s='Flatbush - New Lots'}, --Clark St / 2 3
	['232']={boro='Bk',struc='Subway',lat='40.693219',lon='-73.989998',id='335',n='Manhattan',s='Flatbush - New Lots'}, --Borough Hall / 2 3
	['233']={boro='Bk',struc='Subway',lat='40.690545',lon='-73.985065',id='336',n='Manhattan',s='Flatbush - New Lots'}, --Hoyt St / 2 3
	['234']={boro='Bk',struc='Subway',lat='40.688246',lon='-73.980492',id='337',n='Manhattan',s='Flatbush - Utica - New Lots'}, --Nevins St / 2 3 4 5
	['235']={boro='Bk',struc='Subway',lat='40.684359',lon='-73.977666',id='338',n='Manhattan',s='Flatbush - New Lots'}, --Atlantic Av - Barclays Ctr / 2 3 4 5
	['236']={boro='Bk',struc='Subway',lat='40.680829',lon='-73.975098',id='339',n='Manhattan',s='Flatbush - New Lots'}, --Bergen St / 2 3
	['237']={boro='Bk',struc='Subway',lat='40.675235',lon='-73.971046',id='340',n='Manhattan',s='Flatbush - New Lots'}, --Grand Army Plaza / 2 3
	['238']={boro='Bk',struc='Subway',lat='40.671987',lon='-73.964375',id='341',n='Manhattan',s='Flatbush - New Lots'}, --Eastern Pkwy - Brooklyn Museum / 2 3
	['239']={boro='Bk',struc='Subway',lat='40.670682',lon='-73.958131',id='342',n='Manhattan',s='Flatbush - Utica - New Lots'}, --Franklin Av / 2 3 4 5
	['248']={boro='Bk',struc='Subway',lat='40.669847',lon='-73.950466',id='343',n='Manhattan',s='New Lots'}, --Nostrand Av / 3
	['249']={boro='Bk',struc='Subway',lat='40.669399',lon='-73.942161',id='344',n='Manhattan',s='New Lots'}, --Kingston Av / 3
	['250']={boro='Bk',struc='Subway',lat='40.668897',lon='-73.932942',id='345',n='Manhattan',s='New Lots'}, --Crown Hts - Utica Av / 3 4
	['251']={boro='Bk',struc='Elevated',lat='40.664717',lon='-73.92261',id='346',n='Manhattan',s='New Lots'}, --Sutter Av - Rutland Rd / 3
	['252']={boro='Bk',struc='Elevated',lat='40.661453',lon='-73.916327',id='347',n='Manhattan',s='New Lots'}, --Saratoga Av / 3
	['253']={boro='Bk',struc='Elevated',lat='40.662549',lon='-73.908946',id='348',n='Manhattan',s='New Lots'}, --Rockaway Av / 3
	['254']={boro='Bk',struc='Elevated',lat='40.663515',lon='-73.902447',id='349',n='Manhattan',s='New Lots'}, --Junius St / 3
	['255']={boro='Bk',struc='Elevated',lat='40.664635',lon='-73.894895',id='350',n='Manhattan',s='New Lots'}, --Pennsylvania Av / 3
	['256']={boro='Bk',struc='Elevated',lat='40.665449',lon='-73.889395',id='351',n='Manhattan',s='New Lots'}, --Van Siclen Av / 3
	['257']={boro='Bk',struc='Elevated',lat='40.666235',lon='-73.884079',id='352',n='Manhattan',s=''}, --New Lots Av / 3
	['241']={boro='Bk',struc='Subway',lat='40.667883',lon='-73.950683',id='353',n='Manhattan',s='Flatbush'}, --President St / 2 5
	['242']={boro='Bk',struc='Subway',lat='40.662742',lon='-73.95085',id='354',n='Manhattan',s='Flatbush'}, --Sterling St / 2 5
	['243']={boro='Bk',struc='Subway',lat='40.656652',lon='-73.9502',id='355',n='Manhattan',s='Flatbush'}, --Winthrop St / 2 5
	['244']={boro='Bk',struc='Subway',lat='40.650843',lon='-73.949575',id='356',n='Manhattan',s='Flatbush'}, --Church Av / 2 5
	['245']={boro='Bk',struc='Subway',lat='40.645098',lon='-73.948959',id='357',n='Manhattan',s='Flatbush'}, --Beverly Rd / 2 5
	['246']={boro='Bk',struc='Subway',lat='40.639967',lon='-73.948411',id='358',n='Manhattan',s='Flatbush'}, --Newkirk Av / 2 5
	['247']={boro='Bk',struc='Subway',lat='40.632836',lon='-73.947642',id='359',n='Manhattan',s=''}, --Flatbush Av - Brooklyn College / 2 5
	['601']={boro='Bx',struc='Elevated',lat='40.852462',lon='-73.828121',id='360',n='',s='Manhattan'}, --Pelham Bay Park / 6
	['602']={boro='Bx',struc='Elevated',lat='40.84681',lon='-73.832569',id='361',n='Pelham Bay Park',s='Manhattan'}, --Buhre Av / 6
	['603']={boro='Bx',struc='Elevated',lat='40.843863',lon='-73.836322',id='362',n='Pelham Bay Park',s='Manhattan'}, --Middletown Rd / 6
	['604']={boro='Bx',struc='Elevated',lat='40.839892',lon='-73.842952',id='363',n='Pelham Bay Park',s='Manhattan'}, --Westchester Sq - E Tremont Av / 6
	['606']={boro='Bx',struc='Elevated',lat='40.836488',lon='-73.847036',id='364',n='Pelham Bay Park',s='Manhattan'}, --Zerega Av / 6
	['607']={boro='Bx',struc='Elevated',lat='40.834255',lon='-73.851222',id='365',n='Pelham Bay Park',s='Manhattan'}, --Castle Hill Av / 6
	['608']={boro='Bx',struc='Elevated',lat='40.833226',lon='-73.860816',id='366',n='Pelham Bay Park',s='Manhattan'}, --Parkchester / 6
	['609']={boro='Bx',struc='Elevated',lat='40.831509',lon='-73.867618',id='367',n='Pelham Bay Park',s='Manhattan'}, --St Lawrence Av / 6
	['610']={boro='Bx',struc='Elevated',lat='40.829521',lon='-73.874516',id='368',n='Pelham Bay Park',s='Manhattan'}, --Morrison Av- Sound View / 6
	['611']={boro='Bx',struc='Elevated',lat='40.828584',lon='-73.879159',id='369',n='Pelham Bay Park',s='Manhattan'}, --Elder Av / 6
	['612']={boro='Bx',struc='Elevated',lat='40.826525',lon='-73.886283',id='370',n='Pelham Bay Park',s='Manhattan'}, --Whitlock Av / 6
	['613']={boro='Bx',struc='Subway',lat='40.820948',lon='-73.890549',id='371',n='Pelham Bay Park',s='Manhattan'}, --Hunts Point Av / 6
	['614']={boro='Bx',struc='Subway',lat='40.816104',lon='-73.896435',id='372',n='Pelham Bay Park',s='Manhattan'}, --Longwood Av / 6
	['615']={boro='Bx',struc='Subway',lat='40.812118',lon='-73.904098',id='373',n='Pelham Bay Park',s='Manhattan'}, --E 149 St / 6
	['616']={boro='Bx',struc='Subway',lat='40.808719',lon='-73.907657',id='374',n='Pelham Bay Park',s='Manhattan'}, --E 143 St - St Mary's St / 6
	['617']={boro='Bx',struc='Subway',lat='40.805368',lon='-73.914042',id='375',n='Pelham Bay Park',s='Manhattan'}, --Cypress Av / 6
	['618']={boro='Bx',struc='Subway',lat='40.807566',lon='-73.91924',id='376',n='Pelham Bay Park',s='Manhattan'}, --Brook Av / 6
	['619']={boro='Bx',struc='Subway',lat='40.810476',lon='-73.926138',id='377',n='Pelham Bay Park',s='Manhattan'}, --3 Av - 138 St / 6
	['401']={boro='Bx',struc='Elevated',lat='40.886037',lon='-73.878751',id='378',n='',s='Manhattan'}, --Woodlawn / 4
	['402']={boro='Bx',struc='Elevated',lat='40.87975',lon='-73.884655',id='379',n='Woodlawn',s='Manhattan'}, --Mosholu Pkwy / 4
	['405']={boro='Bx',struc='Elevated',lat='40.873412',lon='-73.890064',id='380',n='Woodlawn',s='Manhattan'}, --Bedford Park Blvd - Lehman College / 4
	['406']={boro='Bx',struc='Elevated',lat='40.86776',lon='-73.897174',id='381',n='Woodlawn',s='Manhattan'}, --Kingsbridge Rd / 4
	['407']={boro='Bx',struc='Elevated',lat='40.862803',lon='-73.901034',id='382',n='Woodlawn',s='Manhattan'}, --Fordham Rd / 4
	['408']={boro='Bx',struc='Elevated',lat='40.858407',lon='-73.903879',id='383',n='Woodlawn',s='Manhattan'}, --183 St / 4
	['409']={boro='Bx',struc='Elevated',lat='40.853453',lon='-73.907684',id='384',n='Woodlawn',s='Manhattan'}, --Burnside Av / 4
	['410']={boro='Bx',struc='Elevated',lat='40.84848',lon='-73.911794',id='385',n='Woodlawn',s='Manhattan'}, --176 St / 4
	['411']={boro='Bx',struc='Elevated',lat='40.844434',lon='-73.914685',id='386',n='Woodlawn',s='Manhattan'}, --Mt Eden Av / 4
	['412']={boro='Bx',struc='Elevated',lat='40.840075',lon='-73.917791',id='387',n='Woodlawn',s='Manhattan'}, --170 St / 4
	['413']={boro='Bx',struc='Elevated',lat='40.835537',lon='-73.9214',id='388',n='Woodlawn',s='Manhattan'}, --167 St / 4
	['414']={boro='Bx',struc='Elevated',lat='40.827994',lon='-73.925831',id='389',n='Woodlawn',s='Manhattan'}, --161 St - Yankee Stadium / 4
	['415']={boro='Bx',struc='Subway',lat='40.818375',lon='-73.927351',id='390',n='Woodlawn',s='Manhattan'}, --149 St - Grand Concourse / 4
	['416']={boro='Bx',struc='Subway',lat='40.813224',lon='-73.929849',id='391',n='Woodlawn - Eastchester Dyre Av',s='Manhattan'}, --138 St - Grand Concourse / 4 5
	['621']={boro='M',struc='Subway',lat='40.804138',lon='-73.937594',id='392',n='The Bronx',s='Downtown & Brooklyn'}, --125 St / 4 5 6
	['622']={boro='M',struc='Subway',lat='40.798629',lon='-73.941617',id='393',n='Uptown & The Bronx',s='Downtown'}, --116 St / 6
	['623']={boro='M',struc='Subway',lat='40.79502',lon='-73.94425',id='394',n='Uptown & The Bronx',s='Downtown'}, --110 St / 6
	['624']={boro='M',struc='Subway',lat='40.7906',lon='-73.947478',id='395',n='Uptown & The Bronx',s='Downtown'}, --103 St / 6
	['625']={boro='M',struc='Subway',lat='40.785672',lon='-73.95107',id='396',n='Uptown & The Bronx',s='Downtown'}, --96 St / 6
	['626']={boro='M',struc='Subway',lat='40.779492',lon='-73.955589',id='397',n='Uptown & The Bronx',s='Downtown & Brooklyn'}, --86 St / 4 5 6
	['627']={boro='M',struc='Subway',lat='40.77362',lon='-73.959874',id='398',n='Uptown & The Bronx',s='Downtown'}, --77 St / 6
	['628']={boro='M',struc='Subway',lat='40.768141',lon='-73.96387',id='399',n='Uptown & The Bronx',s='Downtown'}, --68 St - Hunter College / 6
	['629']={boro='M',struc='Subway',lat='40.762526',lon='-73.967967',id='400',n='Uptown & The Bronx',s='Downtown & Brooklyn'}, --59 St / 4 5 6
	['630']={boro='M',struc='Subway',lat='40.757107',lon='-73.97192',id='401',n='Uptown & The Bronx',s='Downtown'}, --51 St / 6
	['631']={boro='M',struc='Subway',lat='40.751776',lon='-73.976848',id='402',n='Uptown & The Bronx',s='Downtown & Brooklyn'}, --Grand Central - 42 St / 4 5 6
	['632']={boro='M',struc='Subway',lat='40.746081',lon='-73.982076',id='403',n='Uptown & The Bronx',s='Downtown'}, --33 St / 6
	['633']={boro='M',struc='Subway',lat='40.74307',lon='-73.984264',id='404',n='Uptown & The Bronx',s='Downtown'}, --28 St / 6
	['634']={boro='M',struc='Subway',lat='40.739864',lon='-73.986599',id='405',n='Uptown & The Bronx',s='Downtown'}, --23 St / 6
	['635']={boro='M',struc='Subway',lat='40.734673',lon='-73.989951',id='406',n='Uptown & The Bronx',s='Downtown & Brooklyn'}, --14 St - Union Sq / 4 5 6
	['636']={boro='M',struc='Subway',lat='40.730054',lon='-73.99107',id='407',n='Uptown & The Bronx',s='Downtown'}, --Astor Pl / 6
	['637']={boro='M',struc='Subway',lat='40.725915',lon='-73.994659',id='408',n='Uptown & The Bronx',s='Downtown'}, --Bleecker St / 6
	['638']={boro='M',struc='Subway',lat='40.722301',lon='-73.997141',id='409',n='Uptown & The Bronx',s='Downtown'}, --Spring St / 6
	['639']={boro='M',struc='Subway',lat='40.718803',lon='-74.000193',id='410',n='Uptown & The Bronx',s='Downtown'}, --Canal St / 6
	['640']={boro='M',struc='Subway',lat='40.713065',lon='-74.004131',id='411',n='Uptown & The Bronx',s='Downtown & Brooklyn'}, --Brooklyn Bridge - City Hall / 4 5 6
	['418']={boro='M',struc='Subway',lat='40.710368',lon='-74.009509',id='412',n='Uptown & The Bronx',s='Downtown & Brooklyn'}, --Fulton St / 4 5
	['419']={boro='M',struc='Subway',lat='40.707557',lon='-74.011862',id='413',n='Uptown & The Bronx',s='Downtown & Brooklyn'}, --Wall St / 4 5
	['420']={boro='M',struc='Subway',lat='40.704817',lon='-74.014065',id='414',n='Uptown & The Bronx',s='Brooklyn'}, --Bowling Green / 4 5
	['423']={boro='Bk',struc='Subway',lat='40.692404',lon='-73.990151',id='415',n='Manhattan',s='Flatbush - Utica'}, --Borough Hall / 4 5
	['201']={boro='Bx',struc='Elevated',lat='40.903125',lon='-73.85062',id='416',n='',s='Manhattan'}, --Wakefield - 241 St / 2
	['204']={boro='Bx',struc='Elevated',lat='40.898379',lon='-73.854376',id='417',n='Wakefield - 241 St',s='Manhattan'}, --Nereid Av / 2 5
	['205']={boro='Bx',struc='Elevated',lat='40.893193',lon='-73.857473',id='418',n='Wakefield - 241 St',s='Manhattan'}, --233 St / 2 5
	['206']={boro='Bx',struc='Elevated',lat='40.888022',lon='-73.860341',id='419',n='Wakefield - 241 St',s='Manhattan'}, --225 St / 2 5
	['207']={boro='Bx',struc='Elevated',lat='40.883895',lon='-73.862633',id='420',n='Wakefield - 241 St',s='Manhattan'}, --219 St / 2 5
	['208']={boro='Bx',struc='Elevated',lat='40.87785',lon='-73.866256',id='421',n='Wakefield - 241 St',s='Manhattan'}, --Gun Hill Rd / 2 5
	['209']={boro='Bx',struc='Elevated',lat='40.871356',lon='-73.867164',id='422',n='Wakefield - 241 St',s='Manhattan'}, --Burke Av / 2 5
	['210']={boro='Bx',struc='Elevated',lat='40.865462',lon='-73.867352',id='423',n='Wakefield - 241 St',s='Manhattan'}, --Allerton Av / 2 5
	['211']={boro='Bx',struc='Elevated',lat='40.857192',lon='-73.867615',id='424',n='Wakefield - 241 St',s='Manhattan'}, --Pelham Pkwy / 2 5
	['212']={boro='Bx',struc='Elevated',lat='40.848828',lon='-73.868457',id='425',n='Wakefield - 241 St',s='Manhattan'}, --Bronx Park East / 2 5
	['213']={boro='Bx',struc='Elevated',lat='40.841894',lon='-73.873488',id='426',n='Wakefield - Eastchester',s='Manhattan'}, --E 180 St / 2 5
	['214']={boro='Bx',struc='Elevated',lat='40.840295',lon='-73.880049',id='427',n='Wakefield - Eastchester',s='Manhattan'}, --West Farms Sq - E Tremont Av / 2 5
	['215']={boro='Bx',struc='Elevated',lat='40.837288',lon='-73.887734',id='428',n='Wakefield - Eastchester',s='Manhattan'}, --174 St / 2 5
	['216']={boro='Bx',struc='Elevated',lat='40.829993',lon='-73.891865',id='429',n='Wakefield - Eastchester',s='Manhattan'}, --Freeman St / 2 5
	['217']={boro='Bx',struc='Elevated',lat='40.824073',lon='-73.893064',id='430',n='Wakefield - Eastchester',s='Manhattan'}, --Simpson St / 2 5
	['218']={boro='Bx',struc='Elevated',lat='40.822181',lon='-73.896736',id='431',n='Wakefield - Eastchester',s='Manhattan'}, --Intervale Av / 2 5
	['219']={boro='Bx',struc='Elevated',lat='40.819585',lon='-73.90177',id='432',n='Wakefield - Eastchester',s='Manhattan'}, --Prospect Av / 2 5
	['220']={boro='Bx',struc='Elevated',lat='40.81649',lon='-73.907807',id='433',n='Wakefield - Eastchester',s='Manhattan'}, --Jackson Av / 2 5
	['221']={boro='Bx',struc='Subway',lat='40.816109',lon='-73.917757',id='434',n='Wakefield - Eastchester',s='Manhattan'}, --3 Av - 149 St / 2 5
	['222']={boro='Bx',struc='Subway',lat='40.81841',lon='-73.926718',id='435',n='Wakefield - Eastchester',s='Manhattan'}, --149 St - Grand Concourse / 2 5
	['301']={boro='M',struc='Subway',lat='40.82388',lon='-73.93647',id='436',n='',s='Downtown & Brooklyn'}, --Harlem - 148 St / 3
	['302']={boro='M',struc='Subway',lat='40.820421',lon='-73.936245',id='437',n='148 St',s='Downtown & Brooklyn'}, --145 St / 3
	['224']={boro='M',struc='Subway',lat='40.814229',lon='-73.94077',id='438',n='Uptown & The Bronx',s='Downtown & Brooklyn'}, --135 St / 2 3
	['225']={boro='M',struc='Subway',lat='40.807754',lon='-73.945495',id='439',n='Uptown & The Bronx',s='Downtown & Brooklyn'}, --125 St / 2 3
	['226']={boro='M',struc='Subway',lat='40.802098',lon='-73.949625',id='440',n='Uptown & The Bronx',s='Downtown & Brooklyn'}, --116 St / 2 3
	['227']={boro='M',struc='Subway',lat='40.799075',lon='-73.951822',id='441',n='Uptown & The Bronx',s='Downtown & Brooklyn'}, --Central Park North (110 St) / 2 3
	['501']={boro='Bx',struc='At Grade',lat='40.8883',lon='-73.830834',id='442',n='',s='Manhattan'}, --Eastchester - Dyre Av / 5
	['502']={boro='Bx',struc='Open Cut',lat='40.878663',lon='-73.838591',id='443',n='Eastchester - Dyre Av',s='Manhattan'}, --Baychester Av / 5
	['503']={boro='Bx',struc='Open Cut',lat='40.869526',lon='-73.846384',id='444',n='Eastchester - Dyre Av',s='Manhattan'}, --Gun Hill Rd / 5
	['504']={boro='Bx',struc='Open Cut',lat='40.858985',lon='-73.855359',id='445',n='Eastchester - Dyre Av',s='Manhattan'}, --Pelham Pkwy / 5
	['505']={boro='Bx',struc='Open Cut',lat='40.854364',lon='-73.860495',id='446',n='Eastchester - Dyre Av',s='Manhattan'}, --Morris Park / 5
	['701']={boro='Q',struc='Subway',lat='40.7596',lon='-73.83003',id='447',n='',s='Manhattan'}, --Flushing - Main St / 7
	['702']={boro='Q',struc='Elevated',lat='40.754622',lon='-73.845625',id='448',n='Flushing',s='Manhattan'}, --Mets - Willets Point / 7
	['705']={boro='Q',struc='Elevated',lat='40.75173',lon='-73.855334',id='449',n='Flushing',s='Manhattan'}, --111 St / 7
	['706']={boro='Q',struc='Elevated',lat='40.749865',lon='-73.8627',id='450',n='Flushing',s='Manhattan'}, --103 St - Corona Plaza / 7
	['707']={boro='Q',struc='Elevated',lat='40.749145',lon='-73.869527',id='451',n='Flushing',s='Manhattan'}, --Junction Blvd / 7
	['708']={boro='Q',struc='Elevated',lat='40.748408',lon='-73.876613',id='452',n='Flushing',s='Manhattan'}, --90 St - Elmhurst Av / 7
	['709']={boro='Q',struc='Elevated',lat='40.747659',lon='-73.883697',id='453',n='Flushing',s='Manhattan'}, --82 St - Jackson Hts / 7
	['710']={boro='Q',struc='Elevated',lat='40.746848',lon='-73.891394',id='454',n='Flushing',s='Manhattan'}, --74 St - Broadway / 7
	['711']={boro='Q',struc='Elevated',lat='40.746325',lon='-73.896403',id='455',n='Flushing',s='Manhattan'}, --69 St / 7
	['712']={boro='Q',struc='Elevated',lat='40.74563',lon='-73.902984',id='456',n='Flushing',s='Manhattan'}, --Woodside - 61 St / 7
	['713']={boro='Q',struc='Elevated',lat='40.744149',lon='-73.912549',id='457',n='Flushing',s='Manhattan'}, --52 St / 7
	['714']={boro='Q',struc='Elevated',lat='40.743132',lon='-73.918435',id='458',n='Flushing',s='Manhattan'}, --46 St / 7
	['715']={boro='Q',struc='Elevated',lat='40.743781',lon='-73.924016',id='459',n='Flushing',s='Manhattan'}, --40 St / 7
	['716']={boro='Q',struc='Elevated',lat='40.744587',lon='-73.930997',id='460',n='Flushing',s='Manhattan'}, --33 St / 7
	['718']={boro='Q',struc='Elevated',lat='40.750582',lon='-73.940202',id='461',n='Astoria - Flushing',s='Manhattan'}, --Queensboro Plaza / 7
	['R09']={boro='Q',struc='Elevated',lat='40.750582',lon='-73.940202',id='461',n='Astoria - Flushing',s='Manhattan'}, --Queensboro Plaza / N W
	['719']={boro='Q',struc='Elevated',lat='40.747023',lon='-73.945264',id='462',n='Flushing',s='Manhattan'}, --Court Sq / 7
	['720']={boro='Q',struc='Subway',lat='40.742216',lon='-73.948916',id='463',n='Flushing',s='Manhattan'}, --Hunters Point Av / 7
	['721']={boro='Q',struc='Subway',lat='40.742626',lon='-73.953581',id='464',n='Flushing',s='Manhattan'}, --Vernon Blvd - Jackson Av / 7
	['723']={boro='M',struc='Subway',lat='40.751431',lon='-73.976041',id='465',n='Queens',s='34 St - Hudson Yards'}, --Grand Central - 42 St / 7
	['724']={boro='M',struc='Subway',lat='40.753821',lon='-73.981963',id='466',n='Queens',s='34 St - Hudson Yards'}, --5 Av / 7
	['725']={boro='M',struc='Subway',lat='40.755477',lon='-73.987691',id='467',n='Queens',s='34 St - Hudson Yards'}, --Times Sq - 42 St / 7
	['902']={boro='M',struc='Subway',lat='40.755983',lon='-73.986229',id='468',n='',s='Grand Central'}, --Times Sq - 42 St / S
	['901']={boro='M',struc='Subway',lat='40.752769',lon='-73.979189',id='469',n='Times Sq',s=''}, --Grand Central - 42 St / S
	['726']={boro='M',struc='Subway',lat='40.755882',lon='-74.00191',id='471',n='Queens',s=''}, --34 St - 11 Av / 7
	['Q05']={boro='M',struc='Subway',lat='40.784318',lon='-73.947152',id='475',n='',s='Downtown & Brooklyn'}, --96 St / Q
	['Q04']={boro='M',struc='Subway',lat='40.777891',lon='-73.951787',id='476',n='Uptown',s='Downtown & Brooklyn'}, --86 St / Q
	['Q03']={boro='M',struc='Subway',lat='40.768799',lon='-73.958424',id='477',n='Uptown',s='Downtown & Brooklyn'}, --72 St / Q
}
local nodes = {
	{segment='E180',node_n='180',nodetype='fork'},
	{segment='WPR North',node_s='180',nodetype='fork'},
	{segment='Dyre',node_s='180',nodetype='fork'},
	{segment='EP',node_s='Frank',nodetype='fork'},
	{segment='EP East',node_n='Frank',nodetype='fork'},
	{segment='Nostrand',node_n='Frank',nodetype='fork'},
	{segment='Rock Blvd',node_s='RockB',nodetype='fork'},
	{segment='Fulton East Tip',node_n='RockB',nodetype='fork'},
	{segment='Rock North',node_n='RockB',nodetype='fork'},
	{segment='BChan',node_s='BChan',nodetype='fork'},
	{segment='Rock West',node_n='BChan',nodetype='fork'},
	{segment='Rock East',node_n='BChan',nodetype='fork'},
	{segment='QB East',node_n='Briar',nodetype='fork'},
	{segment='179',node_s='Briar',nodetype='fork'},
	{segment='Arch IND VW',node_s='Briar',nodetype='fork'},
	{segment='BWay 57',node_n='57',nodetype='fork'},
	{segment='63 BMT',node_s='57',nodetype='fork'},
	{segment='BWay North',node_s='57',nodetype='fork'},
	{segment='Broad Laf',node_s='M',nodetype='uturn'},
	{segment='Essex',node_s='M',nodetype='uturn'},
}
local unused_connections = {
	{station='Куинс-Плаза (линия Куинс-бульвара, Ай-эн-ди)',north=true,connection='G'},
	{station='Корт-сквер (линия Кросстаун, Ай-эн-ди)',north=false,connection='G'},
	{station='Брод-стрит (линия Нассо-стрит, Би-эм-ти)',north=true,connection='J'},
	{station='Корт-стрит (линия Четвёртой авеню, Би-эм-ти)',north=false,connection='J'},
	{station='Бич 90-я улица (линия Рокавей, Ай-эн-ди)',north=false,connection='H'},
	{station='Бич 67-я улица (линия Рокавей, Ай-эн-ди)',north=false,connection='H'},
	{station='Атлантик-авеню (линия Канарси, Би-эм-ти)',north=false,connection='BJ'},
	{station='Бродвей-Джанкшен (линия Джамейка, Би-эм-ти)',north=false,connection='BJ'},
	--{station='Уэст Четвёртая улица — Вашингтон-сквер (линия Шестой авеню, Ай-эн-ди)',north=true,connection='6-8'},
	--{station='Спринг-стрит (линия Восьмой авеню, Ай-эн-ди)',north=false,connection='6-8'},
	--{station='Уэст Четвёртая улица — Вашингтон-сквер (линия Восьмой авеню, Ай-эн-ди)',north=true,connection='8-6'},
	--{station='Бродвей — Лафайетт-стрит (линия Шестой авеню, Ай-эн-ди)',north=false,connection='8-6'},
}
local unused_tracks = {
	{segment='Court',station='Корт-стрит (линия Фултон-стрит, Ай-эн-ди)',index=1,closed='закрыта и превращена в музей'},
	{segment='Court',station='Хойт-стрит — Скермерхорн-стрит (линия Фултон-стрит, Ай-эн-ди)',index=2},
	{segment='Lex South',station='Канал-стрит (линия Лексингтон-авеню, Ай-ар-ти)',index=1},
	{segment='Lex South',station='Уэрт-стрит (линия Лексингтон-авеню, Ай-ар-ти)',index=2,closed='закрыта'},
	{segment='Lex South',station='Бруклинский мост — Сити-холл (линия Лексингтон-авеню, Ай-ар-ти)',index=3},
	{segment='Lex South',station='Сити-холл (линия Лексингтон-авеню, Ай-ар-ти)',index=4,closed='закрыта'},
	{segment='18',station='23-я улица (линия Лексингтон-авеню, Ай-ар-ти)',index=1},
	{segment='18',station='18-я улица (линия Лексингтон-авеню, Ай-ар-ти)',index=2,closed='закрыта'},
	{segment='18',station='14-я улица — Юнион-сквер (линия Лексингтон-авеню, Ай-ар-ти)',index=3},
	{segment='91',station='96-я улица (линия Бродвея и Седьмой авеню, Ай-ар-ти)',index=1},
	{segment='91',station='91-я улица (линия Бродвея и Седьмой авеню, Ай-ар-ти)',index=2,closed='закрыта'},
	{segment='91',station='86-я улица (линия Бродвея и Седьмой авеню, Ай-ар-ти)',index=3},
	{segment='Bronx',station='180-я улица — Бронкс-парк (линия Уайт-Плейнс-роуд, Ай-ар-ти)',index=1,closed='снесена'},
	{segment='Bronx',station='Уэст-Фармс-сквер — Ист-Тремонт-авеню (линия Уайт-Плейнс-роуд, Ай-ар-ти)',index=2},
	{segment='Jam East',station='168-я улица (линия Джамейка, Би-эм-ти)',index=1,closed='снесена'},
	{segment='Jam East',station='160-я улица (линия Джамейка, Би-эм-ти)',index=2,closed='снесена'},
	{segment='Jam East',station='Сатфин-бульвар (линия Джамейка, Би-эм-ти)',index=3,closed='снесена'},
	{segment='Jam East',station='Куинс-бульвар (линия Джамейка, Би-эм-ти)',index=4,closed='снесена'},
	{segment='Jam East',station='Метрополитан-авеню (линия Джамейка, Би-эм-ти)',index=5,closed='снесена'},
	{segment='Jam East',station='121-я улица (линия Джамейка, Би-эм-ти)',index=6},
	{segment='Dean',station='Франклин-авеню (линия Франклин-авеню, Би-эм-ти)',index=1},
	{segment='Dean',station='Дин-стрит (линия Франклин-авеню, Би-эм-ти)',index=2,closed='снесена'},
	{segment='Dean',station='Парк-Плейс (линия Франклин-авеню, Би-эм-ти)',index=3},
	{segment='Myr IND',station='Гранд-стрит (линия Шестой авеню, Ай-эн-ди)',index=1},
	{segment='Myr IND',station='Мертл-авеню (линия Четвёртой авеню, Би-эм-ти)',index=2,closed='закрыта'},
	{segment='Myr BMT',station='Канал-стрит (линия Бродвея, Би-эм-ти, через мост)',index=1},
	{segment='Myr BMT',station='Мертл-авеню (линия Четвёртой авеню, Би-эм-ти)',index=2,closed='закрыта'},
	{segment='Myr BMT',station='Декалб-авеню (линия Четвёртой авеню, Би-эм-ти)',index=3},
	{segment='SFerry',station='Ректор-стрит (линия Бродвея и Седьмой авеню, Ай-ар-ти)',index=1},
	{segment='SFerry',station='кольцо Саут-Ферри (линия Бродвея и Седьмой авеню, Ай-ар-ти)',index=2,closed='закрыта'},
	{segment='SFerry Lex',station='Боулинг-Грин (линия Лексингтон-авеню, Ай-ар-ти)',index=1},
	{segment='SFerry Lex',station='кольцо Саут-Ферри (линия Лексингтон-авеню, Ай-ар-ти)',index=2,closed='закрыта'},
	{segment='Culver Shuttle',station='36-я улица (линия Пятой авеню, Би-эм-ти)',index=1,closed='снесена'},
	{segment='Culver Shuttle',station='Девятая авеню (линия Уэст-Энд, Би-эм-ти)',index=2},
	{segment='Culver Shuttle',station='Форт-Гамильтон-Паркуэй (линия Калвер, Би-эм-ти)',index=3,closed='снесена'},
	{segment='Culver Shuttle',station='13-я авеню (линия Калвер, Би-эм-ти)',index=4,closed='снесена'},
	{segment='Culver Shuttle',station='Дитмас-авеню (линия Калвер, Ай-эн-ди)',index=5},
	{segment='GHR',station='Ган-Хилл-роуд (линия Уайт-Плейнс-роуд, Ай-ар-ти)',index=1},
	{segment='GHR',station='210-я улица — Уильямсбридж (линия Третьей авеню, Ай-ар-ти)',index=2,closed='снесена'},
	{segment='Jackson',station='Джексон-авеню (линия Уайт-Плейнс-роуд, Ай-ар-ти)',index=1},
	{segment='Jackson',station='143-я улица (линия Третьей авеню, Ай-ар-ти)',index=2,closed='снесена'},
	{segment='167',station='167-я улица (линия Джером-авеню, Ай-ар-ти)',index=1},
	{segment='167',station='Андерсон-авеню — Джером-авеню (линия Девятой авеню, Ай-ар-ти)',index=2,closed='снесена'},
	{segment='QBP',station='Куинсборо-Плаза (линия Флашинг, Ай-ар-ти)',index=1},
	{segment='QBP',station='57-я улица (линия Второй авеню, Ай-ар-ти)',index=2,closed='снесена'},
	{segment='80',station='Грант-авеню (линия Фултон-стрит, Би-эм-ти)',index=1,closed='снесена'},
	{segment='80',station='80-я улица (линия Фултон-стрит, Ай-эн-ди)',index=2},
	{segment='Canarsie',station='Канарси — Рокавей-Паркуэй (линия Канарси, Би-эм-ти)',index=1},
	{segment='Canarsie',station='Флатландс-авеню (линия Канарси, Би-эм-ти)',index=2,closed='снесена'},
	{segment='Atl Can',station='Манхэттен-Джанкшен (линия Фултон-стрит, Би-эм-ти)',index=1,closed='снесена'},
	{segment='Atl Can',station='Атлантик-авеню (линия Канарси, Би-эм-ти)',index=2},
	{segment='Atl Can',station='Хинсдейл-стрит (линия Фултон-стрит, Би-эм-ти)',index=3,closed='снесена'},
	{segment='Gates',station='Гейтс-авеню (линия Джамейка, Би-эм-ти)',index=1},
	{segment='Gates',station='Рид-авеню (линия Лексингтон-авеню, Би-эм-ти)',index=2,closed='снесена'},
	{segment='Central',station='Сентрал-авеню (линия Мертл-авеню, Би-эм-ти)',index=1},
	{segment='Central',station='Бродвей (линия Мертл-авеню, Би-эм-ти)',index=2,closed='закрыта'},
	{segment='Marcy',station='Марси-авеню (линия Джамейка, Би-эм-ти)',index=1},
	{segment='Marcy',station='Дригс-авеню (линия Джамейка, Би-эм-ти)',index=2,closed='снесена'},
	{segment='Frank',station='Гранд-авеню (линия Фултон-стрит, Би-эм-ти)',index=1,closed='снесена'},
	{segment='Frank',station='Франклин-авеню (линия Франклин-авеню, Би-эм-ти)',index=2},
	{segment='Frank',station='Ностранд-авеню (линия Фултон-стрит, Би-эм-ти)',index=3,closed='снесена'},
	{segment='WF',station='Уорлдс-Фэр (линия Всемирной выставки, Ай-эн-ди)',index=1,closed='снесена вместе с линией'},
	{segment='WF',station='Форест-Хилс — 71-я авеню (линия Куинс-бульвара, Ай-эн-ди)',index=2},
}
local multiline_stations = {
	{full='Джамейка-Сентер — Парсонс — Арчер (Нью-Йоркское метро)',
		part='Джамейка-Сентер — Парсонс — Арчер (линия Арчер-авеню, Ай-эн-ди)',text='Через верхний уровень станции'},
	{full='Джамейка-Сентер — Парсонс — Арчер (Нью-Йоркское метро)',
		part='Джамейка-Сентер — Парсонс — Арчер (линия Арчер-авеню, Би-эм-ти)',text='а через нижний'},
	{full='Сатфин-бульвар — Арчер-авеню — Аэропорт имени Джона Кеннеди (Нью-Йоркское метро)',
		part='Сатфин-бульвар — Арчер-авеню — Аэропорт имени Джона Кеннеди (линия Арчер-авеню, Ай-эн-ди)',text='Через верхний уровень станции'},
	{full='Сатфин-бульвар — Арчер-авеню — Аэропорт имени Джона Кеннеди (Нью-Йоркское метро)',
		part='Сатфин-бульвар — Арчер-авеню — Аэропорт имени Джона Кеннеди (линия Арчер-авеню, Би-эм-ти)',text='а через нижний'},
	{full='145-я улица (Нью-Йоркское метро)',part='145-я улица (линия Восьмой авеню, Ай-эн-ди)',text='Через верхний уровень станции',level='верхнего уровня'},
	{full='145-я улица (Нью-Йоркское метро)',part='145-я улица (линия Конкорс, Ай-эн-ди)',text='а через нижний',level='нижнего уровня'},
	{full='Уэст Четвёртая улица — Вашингтон-сквер (Нью-Йоркское метро)',
		part='Уэст Четвёртая улица — Вашингтон-сквер (линия Восьмой авеню, Ай-эн-ди)',text='Через верхний уровень станции',level='верхнего уровня'},
	{full='Уэст Четвёртая улица — Вашингтон-сквер (Нью-Йоркское метро)',
		part='Уэст Четвёртая улица — Вашингтон-сквер (линия Шестой авеню, Ай-эн-ди)',text='а через нижний',level='нижнего уровня'},
	{full='Уэст Восьмая улица — Нью-Йоркский аквариум (Нью-Йоркское метро)',
		part='Уэст Восьмая улица — Нью-Йоркский аквариум (линия Брайтон, Би-эм-ти)',text='Через верхний уровень станции'},
	{full='Уэст Восьмая улица — Нью-Йоркский аквариум (Нью-Йоркское метро)',
		part='Уэст Восьмая улица — Нью-Йоркский аквариум (линия Калвер, Ай-эн-ди)',text='а через нижний'},
	{full='50-я улица (Нью-Йоркское метро)',part='50-я улица (линия Восьмой авеню, Ай-эн-ди)',text='Через верхний уровень станции'},
	{full='50-я улица (Нью-Йоркское метро)',part='50-я улица (линия Куинс-бульвара, Ай-эн-ди)',text='а через нижний'},
	{full='Куинсборо-Плаза (Нью-Йоркское метро)',part='Куинсборо-Плаза (линия Астория, Би-эм-ти)',text='С северной стороны островных платформ на обоих уровнях станции',cross=true},
	{full='Куинсборо-Плаза (Нью-Йоркское метро)',part='Куинсборо-Плаза (линия Флашинг, Ай-ар-ти)',text='а с южной',after='на верхнем уровне на Манхэттен, а на нижнем на Куинс',cross=true},
	{full='Лексингтон-авеню — 63-я улица (Нью-Йоркское метро)',
		part='Лексингтон-авеню — 63-я улица (линия 63-й улицы, Би-эм-ти)',text='С северной стороны островных платформ на обоих уровнях станции',cross=true},
	{full='Лексингтон-авеню — 63-я улица (Нью-Йоркское метро)',
		part='Лексингтон-авеню — 63-я улица (линия 63-й улицы, Ай-эн-ди)',text='а с южной',after='на верхнем уровне на Нижний Манхэттен, а на нижнем на Верхний Манхэттен и Куинс',cross=true},
	{full='Седьмая авеню (Нью-Йоркское метро)',part='Седьмая авеню (линия Куинс-бульвара, Ай-эн-ди)',text='С северной стороны островных платформ на обоих уровнях станции',cross=true},
	{full='Седьмая авеню (Нью-Йоркское метро)',part='Седьмая авеню (линия Шестой авеню, Ай-эн-ди)',text='а с южной',after='на верхнем уровне на Манхэттен, а на нижнем на Куинс и Бронкс',cross=true},
	{full='Проспект-парк (Нью-Йоркское метро)',part='Проспект-парк (линия Брайтон, Би-эм-ти)',text='По двум центральным путям станции',cross=true},
	{full='Проспект-парк (Нью-Йоркское метро)',part='Проспект-парк (линия Франклин-авеню, Би-эм-ти)',text='а по крайнему восточному пути',cross=true},
	{full='Джей-стрит — Метротек (линии Ай-эн-ди)',part='Джей-стрит — Метротек (линия Фултон-стрит, Ай-эн-ди)',text='По двум центральным путям станции',cross=true},
	{full='Джей-стрит — Метротек (линии Ай-эн-ди)',part='Джей-стрит — Метротек (линия Калвер, Ай-эн-ди)',text='а по двум крайним',cross=true},
	{full='Хойт-стрит — Скермерхорн-стрит (Нью-Йоркское метро)',
		part='Хойт-стрит — Скермерхорн-стрит (линия Кросстаун, Ай-эн-ди)',text='По двум центральным путям станции',cross=true},
	{full='Хойт-стрит — Скермерхорн-стрит (Нью-Йоркское метро)',
		part='Хойт-стрит — Скермерхорн-стрит (линия Фултон-стрит, Ай-эн-ди)',text='а по двум следующим (по другую сторону от действующих островных платформ)',cross=true},
	{full='Декалб-авеню (Нью-Йоркское метро)',part='Декалб-авеню (линия Брайтон, Би-эм-ти)',text='По двум крайним путям станции',detailed=true,cross=true},
	{full='Декалб-авеню (Нью-Йоркское метро)',part='Декалб-авеню (линия Четвёртой авеню, Би-эм-ти)',text='а по четырём центральным',level='в центральной части станции',no_exp=true,cross=true},
	{full='Кони-Айленд — Стилуэлл-авеню (Нью-Йоркское метро)',part='Кони-Айленд — Стилуэлл-авеню (линия Си-Бич, Би-эм-ти)',text='У первой с востока островной платформы'},
	{full='Кони-Айленд — Стилуэлл-авеню (Нью-Йоркское метро)',part='Кони-Айленд — Стилуэлл-авеню (линия Брайтон, Би-эм-ти)',text='у второй'},
	{full='Кони-Айленд — Стилуэлл-авеню (Нью-Йоркское метро)',part='Кони-Айленд — Стилуэлл-авеню (линия Калвер, Ай-эн-ди)',text='у третьей'},
	{full='Кони-Айленд — Стилуэлл-авеню (Нью-Йоркское метро)',part='Кони-Айленд — Стилуэлл-авеню (линия Уэст-Энд, Би-эм-ти)',text='а у четвёртой'},
	-- бывшая станция
	{full='Саут-Ферри (Нью-Йоркское метро)',part='кольцо Саут-Ферри (линия Бродвея и Седьмой авеню, Ай-ар-ти)',text=''},
	{full='Саут-Ферри (Нью-Йоркское метро)',part='кольцо Саут-Ферри (линия Лексингтон-авеню, Ай-ар-ти)',text=''},
}
local station_complexes = {
	{article='149-я улица — Гранд-Конкорс (Нью-Йоркское метро)',station='149-я улица — Гранд-Конкорс (линия Уайт-Плейнс-роуд, Ай-ар-ти)',section='Платформы линии Уайт-Плейнс-роуд, Ай-ар-ти'},
	{article='149-я улица — Гранд-Конкорс (Нью-Йоркское метро)',station='149-я улица — Гранд-Конкорс (линия Джером-авеню, Ай-ар-ти)',section='Платформы линии Джером-авеню, Ай-ар-ти'},
	{article='14-я улица / Восьмая авеню (Нью-Йоркское метро)',station='14-я улица (линия Восьмой авеню, Ай-эн-ди)',section='Платформы линии Восьмой авеню, Ай-эн-ди'},
	{article='14-я улица / Восьмая авеню (Нью-Йоркское метро)',station='Восьмая авеню (линия Канарси, Би-эм-ти)',section='Платформа линии Канарси, Би-эм-ти'},
	{article='14-я улица — Юнион-сквер (Нью-Йоркское метро)',station='14-я улица — Юнион-сквер (линия Лексингтон-авеню, Ай-ар-ти)',section='Платформы линии Лексингтон-авеню, Ай-ар-ти'},
	{article='14-я улица — Юнион-сквер (Нью-Йоркское метро)',station='Юнион-сквер (линия Канарси, Би-эм-ти)',section='Платформа линии Канарси, Би-эм-ти'},
	{article='14-я улица — Юнион-сквер (Нью-Йоркское метро)',station='14-я улица — Юнион-сквер (линия Бродвея, Би-эм-ти)',section='Платформы линии Бродвея, Би-эм-ти'},
	{article='14-я улица / Шестая авеню (Нью-Йоркское метро)',station='14-я улица (линия Бродвея и Седьмой авеню, Ай-ар-ти)',section='Платформы линии Бродвея и Седьмой авеню, Ай-ар-ти'},
	{article='14-я улица / Шестая авеню (Нью-Йоркское метро)',station='14-я улица (линия Шестой авеню, Ай-эн-ди)',section='Платформы линии Шестой авеню, Ай-эн-ди'},
	{article='14-я улица / Шестая авеню (Нью-Йоркское метро)',station='Шестая авеню (линия Канарси, Би-эм-ти)',section='Платформа линии Канарси, Би-эм-ти'},
	{article='161-я улица — Стадион Янки (Нью-Йоркское метро)',station='161-я улица — Стадион Янки (линия Джером-авеню, Ай-ар-ти)',section='Платформы линии Джером-авеню, Ай-ар-ти'},
	{article='161-я улица — Стадион Янки (Нью-Йоркское метро)',station='161-я улица — Стадион Янки (линия Конкорс, Ай-эн-ди)',section='Платформы линии Конкорс, Ай-эн-ди'},
	{article='168-я улица (Нью-Йоркское метро)',station='168-я улица (линия Бродвея и Седьмой авеню, Ай-ар-ти)',section='Платформы линии Бродвея и Седьмой авеню, Ай-ар-ти'},
	{article='168-я улица (Нью-Йоркское метро)',station='168-я улица (линия Восьмой авеню, Ай-эн-ди)',section='Платформы линии Восьмой авеню, Ай-эн-ди'},
	{article='34-я улица — Геральд-сквер (Нью-Йоркское метро)',station='34-я улица — Геральд-сквер (линия Бродвея, Би-эм-ти)',section='Платформы линии Бродвея, Би-эм-ти'},
	{article='34-я улица — Геральд-сквер (Нью-Йоркское метро)',station='34-я улица — Геральд-сквер (линия Шестой авеню, Ай-эн-ди)',section='Платформы линии Шестой авеню, Ай-эн-ди'},
	{article='42-я улица — Брайант-парк / Пятая авеню (Нью-Йоркское метро)',station='Пятая авеню (линия Флашинг, Ай-ар-ти)',section='Платформа линии Флашинг, Ай-ар-ти'},
	{article='42-я улица — Брайант-парк / Пятая авеню (Нью-Йоркское метро)',station='42-я улица — Брайант-парк (линия Шестой авеню, Ай-эн-ди)',section='Платформы линии Шестой авеню, Ай-эн-ди'},
	{article='59-я улица — Колумбус-Серкл (Нью-Йоркское метро)',station='59-я улица — Колумбус-Серкл (линия Бродвея и Седьмой авеню, Ай-ар-ти)',section='Платформы линии Бродвея и Седьмой авеню, Ай-ар-ти'},
	{article='59-я улица — Колумбус-Серкл (Нью-Йоркское метро)',station='59-я улица — Колумбус-Серкл (линия Восьмой авеню, Ай-эн-ди)',section='Платформы линии Восьмой авеню, Ай-эн-ди'},
	{article='Атлантик-авеню — Барклайс-центр (Нью-Йоркское метро)',station='Атлантик-авеню — Барклайс-центр (линия Истерн-Паркуэй, Ай-ар-ти)',section='Платформы линии Истерн-Паркуэй, Ай-ар-ти'},
	{article='Атлантик-авеню — Барклайс-центр (Нью-Йоркское метро)',station='Атлантик-авеню — Барклайс-центр (линия Брайтон, Би-эм-ти)',section='Платформа линии Брайтон, Би-эм-ти'},
	{article='Атлантик-авеню — Барклайс-центр (Нью-Йоркское метро)',station='Атлантик-авеню — Барклайс-центр (линия Четвёртой авеню, Би-эм-ти)',section='Платформы линии Четвёртой авеню, Би-эм-ти'},
	{article='Бродвей — Лафайетт-стрит / Бликер-стрит (Нью-Йоркское метро)',station='Бликер-стрит (линия Лексингтон-авеню, Ай-ар-ти)',section='Платформы линии Лексингтон-авеню, Ай-ар-ти'},
	{article='Бродвей — Лафайетт-стрит / Бликер-стрит (Нью-Йоркское метро)',station='Бродвей — Лафайетт-стрит (линия Шестой авеню, Ай-эн-ди)',section='Платформы линии Шестой авеню, Ай-эн-ди'},
	{article='Бродвей-Джанкшен (Нью-Йоркское метро)',station='Бродвей-Джанкшен (линия Фултон-стрит, Ай-эн-ди)',section='Платформы линии Фултон-стрит, Ай-эн-ди'},
	{article='Бродвей-Джанкшен (Нью-Йоркское метро)',station='Бродвей-Джанкшен (линия Джамейка, Би-эм-ти)',section='Платформы линии Джамейка, Би-эм-ти'},
	{article='Бродвей-Джанкшен (Нью-Йоркское метро)',station='Бродвей-Джанкшен (линия Канарси, Би-эм-ти)',section='Платформы линии Канарси, Би-эм-ти'},
	{article='Бруклинский мост — Сити-холл / Чеймберс-стрит (Нью-Йоркское метро)',station='Бруклинский мост — Сити-холл (линия Лексингтон-авеню, Ай-ар-ти)',section='Платформы линии Лексингтон-авеню, Ай-ар-ти'},
	{article='Бруклинский мост — Сити-холл / Чеймберс-стрит (Нью-Йоркское метро)',station='Чеймберс-стрит (линия Нассо-стрит, Би-эм-ти)',section='Платформы линии Нассо-стрит, Би-эм-ти'},
	{article='Канал-стрит (Нью-Йоркское метро)',station='Канал-стрит (линия Лексингтон-авеню, Ай-ар-ти)',section='Платформы линии Лексингтон-авеню, Ай-ар-ти'},
	{article='Канал-стрит (Нью-Йоркское метро)',station='Канал-стрит (линия Нассо-стрит, Би-эм-ти)',section='Платформы линии Нассо-стрит, Би-эм-ти'},
	{article='Канал-стрит (Нью-Йоркское метро)',station='Канал-стрит (линия Бродвея, Би-эм-ти, через тоннель)',section='Платформы линии Бродвея, Би-эм-ти'}, --две станции - один раздел статьи
	{article='Канал-стрит (Нью-Йоркское метро)',station='Канал-стрит (линия Бродвея, Би-эм-ти, через мост)',section='Платформы линии Бродвея, Би-эм-ти'}, --две станции - один раздел статьи
	{article='Чеймберс-стрит — Всемирный торговый центр / Парк-Плейс (Нью-Йоркское метро)',station='Парк-Плейс (линия Бродвея и Седьмой авеню, Ай-ар-ти)',section='Платформа линии Бродвея и Седьмой авеню, Ай-ар-ти'},
	{article='Чеймберс-стрит — Всемирный торговый центр / Парк-Плейс (Нью-Йоркское метро)',station='Чеймберс-стрит (линия Восьмой авеню, Ай-эн-ди)',section='Платформы линии Восьмой авеню, Ай-эн-ди'}, --две станции - один раздел статьи
	{article='Чеймберс-стрит — Всемирный торговый центр / Парк-Плейс (Нью-Йоркское метро)',station='Всемирный торговый центр (линия Восьмой авеню, Ай-эн-ди)',section='Платформы линии Восьмой авеню, Ай-эн-ди'}, --две станции - один раздел статьи
	{article='Чеймберс-стрит — Всемирный торговый центр / Парк-Плейс (Нью-Йоркское метро)',station='Кортландт-стрит (линия Бродвея, Би-эм-ти)',section='Платформы линии Бродвея, Би-эм-ти'},
	{article='Корт-сквер — 23-я улица (Нью-Йоркское метро)',station='Корт-сквер (линия Флашинг, Ай-ар-ти)',section='Платформы линии Флашинг, Ай-ар-ти'},
	{article='Корт-сквер — 23-я улица (Нью-Йоркское метро)',station='Корт-сквер (линия Кросстаун, Ай-эн-ди)',section='Платформа линии Кросстаун, Ай-эн-ди'},
	{article='Корт-сквер — 23-я улица (Нью-Йоркское метро)',station='Корт-сквер — 23-я улица (линия Куинс-бульвара, Ай-эн-ди)',section='Платформы линии Куинс-бульвара, Ай-эн-ди'},
	{article='Корт-стрит / Боро-холл (Нью-Йоркское метро)',station='Боро-холл (линия Бродвея и Седьмой авеню, Ай-ар-ти)',section='Платформы линии Бродвея и Седьмой авеню, Ай-ар-ти'},
	{article='Корт-стрит / Боро-холл (Нью-Йоркское метро)',station='Боро-холл (линия Истерн-Паркуэй, Ай-ар-ти)',section='Платформы линии Истерн-Паркуэй, Ай-ар-ти'},
	{article='Корт-стрит / Боро-холл (Нью-Йоркское метро)',station='Корт-стрит (линия Четвёртой авеню, Би-эм-ти)',section='Платформа линии Четвёртой авеню, Би-эм-ти'},
	{article='Деланси-стрит / Эссекс-стрит (Нью-Йоркское метро)',station='Эссекс-стрит (линия Нассо-стрит, Би-эм-ти)',section='Платформы линии Нассо-стрит, Би-эм-ти'},
	{article='Деланси-стрит / Эссекс-стрит (Нью-Йоркское метро)',station='Деланси-стрит (линия Шестой авеню, Ай-эн-ди)',section='Платформы линии Шестой авеню, Ай-эн-ди'},
	{article='Четвёртая авеню / Девятая улица (Нью-Йоркское метро)',station='Девятая улица (линия Четвёртой авеню, Би-эм-ти)',section='Платформы линии Четвёртой авеню, Би-эм-ти'},
	{article='Четвёртая авеню / Девятая улица (Нью-Йоркское метро)',station='Четвёртая авеню (линия Калвер, Ай-эн-ди)',section='Платформы линии Калвер, Ай-эн-ди'},
	{article='Франклин-авеню / Ботанический сад (Нью-Йоркское метро)',station='Франклин-авеню — Медгар-Эверс-колледж (линия Истерн-Паркуэй, Ай-ар-ти)',section='Платформы линии Истерн-Паркуэй, Ай-ар-ти'},
	{article='Франклин-авеню / Ботанический сад (Нью-Йоркское метро)',station='Ботанический сад (линия Франклин-авеню, Би-эм-ти)',section='Платформы линии Франклин-авеню, Би-эм-ти'},
	{article='Франклин-авеню (Нью-Йоркское метро)',station='Франклин-авеню (линия Франклин-авеню, Би-эм-ти)',section='Платформа линии Франклин-авеню, Би-эм-ти'},
	{article='Франклин-авеню (Нью-Йоркское метро)',station='Франклин-авеню (линия Фултон-стрит, Ай-эн-ди)',section='Платформы линии Фултон-стрит, Ай-эн-ди'},
	{article='Фултон-стрит (Нью-Йоркское метро)',station='Фултон-стрит (линия Бродвея и Седьмой авеню, Ай-ар-ти)',section='Платформа линии Бродвея и Седьмой авеню, Ай-ар-ти'},
	{article='Фултон-стрит (Нью-Йоркское метро)',station='Фултон-стрит (линия Лексингтон-авеню, Ай-ар-ти)',section='Платформы линии Лексингтон-авеню, Ай-ар-ти'},
	{article='Фултон-стрит (Нью-Йоркское метро)',station='Фултон-стрит (линия Восьмой авеню, Ай-эн-ди)',section='Платформа линии Восьмой авеню, Ай-эн-ди'},
	{article='Фултон-стрит (Нью-Йоркское метро)',station='Фултон-стрит (линия Нассо-стрит, Би-эм-ти)',section='Платформы линии Нассо-стрит, Би-эм-ти'},
	{article='Центральный вокзал — 42-я улица (Нью-Йоркское метро)',station='Центральный вокзал — 42-я улица (линия Лексингтон-авеню, Ай-ар-ти)',section='Платформы линии Лексингтон-авеню, Ай-ар-ти'},
	{article='Центральный вокзал — 42-я улица (Нью-Йоркское метро)',station='Центральный вокзал (линия Флашинг, Ай-ар-ти)',section='Платформа линии Флашинг, Ай-ар-ти'},
	{article='Центральный вокзал — 42-я улица (Нью-Йоркское метро)',station='Центральный вокзал (челнок 42-й улицы, Ай-ар-ти)',section='Платформа челнока 42-й улицы, Ай-ар-ти'},
	{article='Центральный вокзал — 42-я улица (Нью-Йоркское метро)',station='42-я улица (линия Второй авеню, Ай-эн-ди)',section='',future=true},
	{article='Джей-стрит — Метротек (Нью-Йоркское метро)',station='Джей-стрит — Метротек (линии Ай-эн-ди)',section='Платформы Ай-эн-ди'}, --станция с двумя линиями входит в пересадочный узел
	{article='Джей-стрит — Метротек (Нью-Йоркское метро)',station='Джей-стрит — Метротек (линия Четвёртой авеню, Би-эм-ти)',section='Платформа Би-эм-ти'},
	{article='Лексингтон-авеню — 53-я улица / 51-я улица (Нью-Йоркское метро)',station='51-я улица (линия Лексингтон-авеню, Ай-ар-ти)',section='Платформы линии Лексингтон-авеню, Ай-ар-ти'},
	{article='Лексингтон-авеню — 53-я улица / 51-я улица (Нью-Йоркское метро)',station='Лексингтон-авеню — 53-я улица (линия Куинс-бульвара, Ай-эн-ди)',section='Платформа линии Куинс-бульвара, Ай-эн-ди'},
	{article='Лексингтон-авеню — 53-я улица / 51-я улица (Нью-Йоркское метро)',station='55-я улица (линия Второй авеню, Ай-эн-ди)',section='',future=true},
	{article='Лексингтон-авеню — 59-я улица (Нью-Йоркское метро)',station='59-я улица (линия Лексингтон-авеню, Ай-ар-ти)',section='Платформы линии Лексингтон-авеню, Ай-ар-ти'},
	{article='Лексингтон-авеню — 59-я улица (Нью-Йоркское метро)',station='Лексингтон-авеню — 59-я улица (линия Бродвея, Би-эм-ти)',section='Платформа линии Бродвея, Би-эм-ти'},
	{article='Лексингтон-авеню — 59-я улица (Нью-Йоркское метро)',station='Лексингтон-авеню — 63-я улица (Нью-Йоркское метро)',section=''}, --станция с двумя линиями входит в пересадочный узел виртуально
	{article='Лоример-стрит / Метрополитан-авеню (Нью-Йоркское метро)',station='Лоример-стрит (линия Канарси, Би-эм-ти)',section='Платформы линии Канарси, Би-эм-ти'},
	{article='Лоример-стрит / Метрополитан-авеню (Нью-Йоркское метро)',station='Метрополитан-авеню (линия Кросстаун, Ай-эн-ди)',section='Платформы линии Кросстаун, Ай-эн-ди'},
	{article='Мертл-авеню — Уайкофф-авеню (Нью-Йоркское метро)',station='Мертл-авеню — Уайкофф-авеню (линия Канарси, Би-эм-ти)',section='Платформа линии Канарси, Би-эм-ти'},
	{article='Мертл-авеню — Уайкофф-авеню (Нью-Йоркское метро)',station='Мертл-авеню — Уайкофф-авеню (линия Мертл-авеню, Би-эм-ти)',section='Платформа линии Мертл-авеню, Би-эм-ти'},
	{article='Нью-Ютрект-авеню / 62-я улица (Нью-Йоркское метро)',station='Нью-Ютрект-авеню (линия Си-Бич, Би-эм-ти)',section='Платформы линии Си-Бич, Би-эм-ти'},
	{article='Нью-Ютрект-авеню / 62-я улица (Нью-Йоркское метро)',station='62-я улица (линия Уэст-Энд, Би-эм-ти)',section='Платформы линии Уэст-Энд, Би-эм-ти'},
	{article='74-я улица — Бродвей / Рузвельт-авеню (Нью-Йоркское метро)',station='74-я улица — Бродвей (линия Флашинг, Ай-ар-ти)',section='Платформы линии Флашинг, Ай-ар-ти'},
	{article='74-я улица — Бродвей / Рузвельт-авеню (Нью-Йоркское метро)',station='Джексон-Хайтс — Рузвельт-авеню (линия Куинс-бульвара, Ай-эн-ди)',section='Платформы линии Куинс-бульвара, Ай-эн-ди'},
	{article='Саут-Ферри — Уайтхолл-стрит (Нью-Йоркское метро)',station='Саут-Ферри (линия Бродвея и Седьмой авеню, Ай-ар-ти)',section='Платформа линии Бродвея и Седьмой авеню, Ай-ар-ти'},
	{article='Саут-Ферри — Уайтхолл-стрит (Нью-Йоркское метро)',station='Уайтхолл-стрит — Саут-Ферри (линия Бродвея, Би-эм-ти)',section='Платформы линии Бродвея, Би-эм-ти'},
	{article='Таймс-сквер — 42-я улица (Нью-Йоркское метро)',station='Таймс-сквер — 42-я улица (линия Бродвея и Седьмой авеню, Ай-ар-ти)',section='Платформы линии Бродвея и Седьмой авеню, Ай-ар-ти'},
	{article='Таймс-сквер — 42-я улица (Нью-Йоркское метро)',station='Таймс-сквер (линия Флашинг, Ай-ар-ти)',section='Платформа линии Флашинг, Ай-ар-ти'},
	{article='Таймс-сквер — 42-я улица (Нью-Йоркское метро)',station='42-я улица — Автовокзал Портового управления (линия Восьмой авеню, Ай-эн-ди)',section='Платформы линии Восьмой авеню, Ай-эн-ди'},
	{article='Таймс-сквер — 42-я улица (Нью-Йоркское метро)',station='Таймс-сквер — 42-я улица (линия Бродвея, Би-эм-ти)',section='Платформы линии Бродвея, Би-эм-ти'},
	{article='Таймс-сквер — 42-я улица (Нью-Йоркское метро)',station='Таймс-сквер (челнок 42-й улицы, Ай-ар-ти)',section='Платформа челнока 42-й улицы, Ай-ар-ти'},
	{article='2',station='Ливония-авеню (линия Канарси, Би-эм-ти)',section=''},
	{article='2',station='Джуниус-стрит (линия Нью-Лотс, Ай-ар-ти)',section=''},
	{article='3',station='Таймс-сквер — 42-я улица (Нью-Йоркское метро)',section='',periods='rh+md+ev+we'},
	{article='3',station='42-я улица — Брайант-парк / Пятая авеню (Нью-Йоркское метро)',section='',periods='rh+md+ev+we'},
	{article='a',station='125-я улица (линия Лексингтон-авеню, Ай-ар-ти)',section='',future=true},
	{article='a',station='125-я улица (линия Второй авеню, Ай-эн-ди)',section='',future=true},
	{article='b',station='Третья авеню (линия Канарси, Би-эм-ти)',section='',future=true},
	{article='b',station='14-я улица (линия Второй авеню, Ай-эн-ди)',section='',future=true},
	{article='c',station='Вторая авеню (линия Шестой авеню, Ай-эн-ди)',section='',future=true},
	{article='c',station='Хаустон-стрит (линия Второй авеню, Ай-эн-ди)',section='',future=true},
	{article='d',station='Гранд-стрит (линия Шестой авеню, Ай-эн-ди)',section='',future=true},
	{article='d',station='Гранд-стрит (линия Второй авеню, Ай-эн-ди)',section='',future=true},
}
local route_fun=function(xx)
	return setmetatable(xx, {
	__index=function(xx,key)
		if key=='label' or key=='tooltip' or key=='name' then
			return xx.id
		elseif key=='link' then
			return xx.id..' (маршрут метро, Нью-Йорк)'
		end
	end,
	__call=function(xx,key,param1,param2)
		if key=='bullet' then
			if param2==nil then
				param2=xx.tooltip
			end
			return '[[Файл:NYCS-bull-trans-'..xx.label..'-Std.svg|'..param1..'px|'..param2..'|link='..xx.link..']]'
		elseif key=='bold' then
			if param1 then
				txt=xx.name
			else
				txt=xx.tooltip
			end
			pos=string.find(txt,' ',1,true)
			if pos then
				return '[['..xx.link..'|<b>'..string.sub(txt,1,pos-1)..'</b>]]'..string.sub(txt,pos,string.len(txt))
			else
				return '[['..xx.link..'|<b>'..txt..'</b>]]'
			end
		end
	end
	})
end
local routes = {
	['1']=route_fun({id='1',bkg='FFCCCC',color='ee352e',descr='Локальный маршрут [[Линия Бродвея и Седьмой авеню, Ай-ар-ти|линии Бродвея и Седьмой авеню]]',schedule='9426'}),
	['2']=route_fun({id='2',bkg='FFCCCC',color='ee352e',descr='Экспресс-маршрут [[Линия Бродвея и Седьмой авеню, Ай-ар-ти|линии Бродвея и Седьмой авеню]]',schedule='9431'}),
	['3']=route_fun({id='3',bkg='FFCCCC',color='ee352e',descr='Экспресс-маршрут [[Линия Бродвея и Седьмой авеню, Ай-ар-ти|линии Бродвея и Седьмой авеню]]',schedule='9436'}),
	['4']=route_fun({id='4',bkg='BFFA9C',color='00933c',descr='Экспресс-маршрут [[Линия Лексингтон-авеню, Ай-ар-ти|линии Лексингтон-авеню]]',schedule='9441'}),
	['5']=route_fun({id='5',bkg='BFFA9C',color='00933c',descr='Экспресс-маршрут [[Линия Лексингтон-авеню, Ай-ар-ти|линии Лексингтон-авеню]]',schedule='9446'}),
	['6']=route_fun({id='6',bkg='BFFA9C',color='00933c',descr='Локальный маршрут [[Линия Лексингтон-авеню, Ай-ар-ти|линии Лексингтон-авеню]]',schedule='9456'}),
	['<6>']=route_fun({id='<6>',bkg='BFFA9C',label='6d',link='6 (маршрут метро, Нью-Йорк)',color='00933c',
		descr='Локальный маршрут [[Линия Лексингтон-авеню, Ай-ар-ти|линии Лексингтон-авеню]],<br>экспресс-маршрут [[Линия Пелем, Ай-ар-ти|линии Пелем]]',onedir=true}),
	['7']=route_fun({id='7',bkg='FFCCFF',color='b933ad',descr='Локальный маршрут [[Линия Флашинг, Ай-ар-ти|линии Флашинг]]',schedule='9461'}),
	['<7>']=route_fun({id='<7>',bkg='FFCCFF',label='7d',link='7 (маршрут метро, Нью-Йорк)',color='b933ad',descr='Экспресс-маршрут [[Линия Флашинг, Ай-ар-ти|линии Флашинг]]',onedir=true}),
	['A']=route_fun({id='A',bkg='CDE6FE',color='2850ad',descr='Экспресс-маршрут [[Линия Восьмой авеню, Ай-эн-ди|линии Восьмой авеню]]',schedule='9466',second='A S'}),
	['B']=route_fun({id='B',bkg='FFCD97',color='ff6319',descr='Экспресс-маршрут [[Линия Шестой авеню, Ай-эн-ди|линии Шестой авеню]]',schedule='9481'}),
	['C']=route_fun({id='C',bkg='CDE6FE',color='2850ad',descr='Локальный маршрут [[Линия Восьмой авеню, Ай-эн-ди|линии Восьмой авеню]]',schedule='9471'}),
	['D']=route_fun({id='D',bkg='FFCD97',color='ff6319',descr='Экспресс-маршрут [[Линия Шестой авеню, Ай-эн-ди|линии Шестой авеню]]',schedule='9486'}),
	['E']=route_fun({id='E',bkg='CDE6FE',color='2850ad',descr='Локальный маршрут [[Линия Восьмой авеню, Ай-эн-ди|линии Восьмой авеню]]',schedule='9476'}),
	['F']=route_fun({id='F',bkg='FFCD97',color='ff6319',descr='Локальный маршрут [[Линия Шестой авеню, Ай-эн-ди|линии Шестой авеню]]',schedule='10366'}),
	['<F>']=route_fun({id='<F>',bkg='FFCD97',label='Fd',link='F (маршрут метро, Нью-Йорк)',color='ff6319',
		descr='Локальный маршрут [[Линия Шестой авеню, Ай-эн-ди|линии Шестой авеню]],<br>экспресс-маршрут [[Линия Калвер, Ай-эн-ди|линии Калвер]]',onedir=true}),
	['G']=route_fun({id='G',bkg='CCFFCC',color='6cbe45',descr='Локальный маршрут [[Линия Кросстаун, Ай-эн-ди|линии Кросстаун]]',schedule='9501'}),
	['J']=route_fun({id='J',bkg='E2BF9C',link='J/Z (маршрут метро, Нью-Йорк)',color='996633',descr='Локальный маршрут [[Линия Нассо-стрит, Би-эм-ти|линии Нассо-стрит]]',schedule='9506'}),
	['L']=route_fun({id='L',bkg='EEEEEE',color='a7a9ac',descr='Локальный маршрут [[Линия Канарси, Би-эм-ти|линии Канарси]]',schedule='18241'}),
	['M']=route_fun({id='M',bkg='FFCD97',color='ff6319',descr='Локальный маршрут [[Линия Шестой авеню, Ай-эн-ди|линии Шестой авеню]]',schedule='9496'}),
	['N']=route_fun({id='N',bkg='FFF793',color='fccc0a',descr='Экспресс-маршрут [[Линия Бродвея, Би-эм-ти|линии Бродвея]]',schedule='9511'}),
	['Q']=route_fun({id='Q',bkg='FFF793',color='fccc0a',descr='Экспресс-маршрут [[Линия Бродвея, Би-эм-ти|линии Бродвея]]',schedule='9516'}),
	['R']=route_fun({id='R',bkg='FFF793',color='fccc0a',descr='Локальный маршрут [[Линия Бродвея, Би-эм-ти|линии Бродвея]]',schedule='9521'}),
	['A S']=route_fun({id='A S',bkg='CDE6FE',label='S blue',tooltip='S (челнок Леффертс-бульвара)',link='A (маршрут метро, Нью-Йорк)',color='2850ad',name='S',descr='Челнок Леффертс-бульвара',shuttle=true}), --,sameas='A'
	['S 42']=route_fun({id='S 42',bkg='CCCCCC',label='S',tooltip='S (челнок 42-й улицы)',link='Челнок 42-й улицы',color='808183',name='S',descr='[[Челнок 42-й улицы, Ай-ар-ти|Челнок 42-й улицы]]',schedule='9531',shuttle=true}),
	['S F']=route_fun({id='S F',bkg='CCCCCC',label='S',tooltip='S (челнок Франклин-авеню)',link='Челнок Франклин-авеню',color='808183',name='S',descr='[[Челнок Франклин-авеню]]',schedule='9541',shuttle=true}),
	['S R']=route_fun({id='S R',bkg='CCCCCC',label='S',tooltip='S (челнок Рокавей-парка)',link='Челнок Рокавей-парка',color='808183',name='S',descr='[[Челнок Рокавей-парка]]',schedule='9536',shuttle=true}),
	['W']=route_fun({id='W',bkg='FFF793',color='fccc0a',descr='Локальный маршрут [[Линия Бродвея, Би-эм-ти|линии Бродвея]]',schedule='9526'}),
	['Z']=route_fun({id='Z',bkg='E2BF9C',link='J/Z (маршрут метро, Нью-Йорк)',color='996633',descr='Экспресс-маршрут [[Линия Нассо-стрит, Би-эм-ти|линии Нассо-стрит]]',onedir=true}),
	['T']=route_fun({id='T',bkg='CCFFFF',color='00add0',descr='Локальный маршрут [[Линия Второй авеню, Ай-эн-ди|линии Второй авеню]]',future=true}),
}
local icon_fun=function(x0)
	return setmetatable(x0, {
	__call=function(x0,key,param1,param2,param3)
		if key=='icon' then
			if param2==nil then
				param2=x0.tooltip
			end
			if param3==nil then
				param3=''
			end
			if x0.icon=='' then
				return '[[Файл:Transparent square.svg|'..param1..'px|'..param2..'|link='..param3..']]'
			else
				return '[[Файл:NYCS-SSI-'..x0.icon..'.svg|'..param1..'px|'..param2..'|link='..param3..']]'
			end
		end
	end
	})
end
local icons = {
	['rh+md+ev+we+ln']=icon_fun({icon='alltimes',tooltip='круглосуточно',alltimes=true,num=1}),
	['rh+md+ev+we']=icon_fun({icon='allexceptnights',tooltip='круглосуточно, кроме ночи',comma=true,num=2}),
	['rh(not peak)+md+ev+we+ln']=icon_fun({icon='allexceptrush',tooltip='круглосуточно, кроме часов пик в&nbsp;пиковом направлении',comma=true,
		alltimes=true,legend='круглосуточно, кроме будней днём (либо часов пик) в&nbsp;пиковом направлении',num=3}),
	['rh+md+ev']=icon_fun({icon='weekdaysonly',tooltip='в&nbsp;будни днём и&nbsp;вечером',legend='в&nbsp;будни днём (и, возможно, вечером)',num=4}),
	['rh+md+ev+ln(1)']=icon_fun({icon='nightsweekdays',tooltip='в&nbsp;будни круглосуточно',num=5}),
	['rh']=icon_fun({icon='rushonly',tooltip='в&nbsp;часы пик',num=6}),
	['rh(peak)']=icon_fun({icon='rushpeak',tooltip='в&nbsp;часы пик в&nbsp;пиковом направлении',
		legend='в&nbsp;будни днём (либо в&nbsp;часы пик) в&nbsp;пиковом направлении',num=7}),
	['rh(not peak)']=icon_fun({icon='rushreversepeak',tooltip='в&nbsp;часы пик в&nbsp;направлении, обратном пиковому',comma=true,
		legend='в&nbsp;будни днём (либо в&nbsp;часы пик) в&nbsp;направлении, обратном пиковому',num=8}),
	['we']=icon_fun({icon='weekendsonly',tooltip='в&nbsp;выходные',num=9}),
	['ln']=icon_fun({icon='nightsonly',tooltip='ночью',ignore=true,num=10}),
	['we+ln']=icon_fun({icon='nightsweekends',tooltip='ночью и в&nbsp;выходные',legend='ночью и в&nbsp;выходные (и, возможно, вечером)',num=11}),
	['-']=icon_fun({icon='closed',tooltip='нет движения поездов',num=12}),
	-- файлы для сочетаний времён есть только досюда, далее используются те же файлы повторно
	['rh(some peak)']=icon_fun({icon='rushpeak',tooltip='часть рейсов в&nbsp;часы пик в&nbsp;пиковом направлении',ignore=true}),
	['rh(2)+md+ev+we+ln']=icon_fun({icon='alltimes',tooltip='круглосуточно (в&nbsp;часы пик большинство поездов)',alltimes=true}),
	['rh+md+ev+we+ln(2)']=icon_fun({icon='allexceptnights',tooltip='круглосуточно, кроме ночи рабочих дней',comma=true}),
	['rh+ev+we']=icon_fun({icon='allexceptnights',tooltip='в&nbsp;часы пик, вечером и&nbsp;в&nbsp;выходные'}),
	['rh+we']=icon_fun({icon='allexceptnights',tooltip='в&nbsp;часы пик и&nbsp;в&nbsp;выходные'}),
	['rh+md(not peak)+ev+we+ln']=icon_fun({icon='alltimes',tooltip='круглосуточно, кроме будней (не&nbsp;в&nbsp;час пик) в&nbsp;пиковом направлении',comma=true,alltimes=true}),
	['rh+md+ev+ln']=icon_fun({icon='nightsweekdays',tooltip='в&nbsp;будни круглосуточно и&nbsp;в&nbsp;выходные ночью'}),
	['rh+md+ev(1)']=icon_fun({icon='weekdaysonly',tooltip='в&nbsp;будни днём и&nbsp;вечером до&nbsp;23:00'}),
	['rh+md']=icon_fun({icon='weekdaysonly',tooltip='в&nbsp;будни днём'}),
	['rh+md(peak)']=icon_fun({icon='weekdaysonly',tooltip='в&nbsp;будни днём (в&nbsp;часы пик в&nbsp;обе стороны, в&nbsp;другое время в&nbsp;пиковом направлении)'}),
	['ev+we+ln']=icon_fun({icon='nightsweekends',tooltip='вечером, ночью и в&nbsp;выходные'}),
	['rh(1)']=icon_fun({icon='rushonly',tooltip='часть рейсов в&nbsp;часы пик'}),
	['rh(peak)+md(peak)']=icon_fun({icon='rushpeak',tooltip='в&nbsp;будни днём в&nbsp;пиковом направлении'}),
	['rh(peak)+ln']=icon_fun({icon='rushpeak',tooltip='в&nbsp;часы пик в&nbsp;пиковом направлении, а&nbsp;также ночью'}),
	['rh(not peak)+md(not peak)+ev+we+ln']=icon_fun({icon='allexceptrush',tooltip='круглосуточно, кроме будней днём в&nbsp;пиковом направлении',comma=true,alltimes=true}),
	['rh(not peak)+md+ev+we']=icon_fun({icon='allexceptrush',tooltip='круглосуточно, кроме часов пик в&nbsp;пиковом направлении и&nbsp;ночи',comma=true}),
	['md+ev+we']=icon_fun({icon='allexceptrush',tooltip='круглосуточно, кроме часов пик и&nbsp;ночи',comma=true}),
	['rh(some peak)+ln']=icon_fun({icon='nightsonly',tooltip='ночью, а&nbsp;также часть рейсов в&nbsp;часы пик в&nbsp;пиковом направлении',ignore=true}),
	['we+ln(2)']=icon_fun({icon='weekendsonly',tooltip='в&nbsp;выходные, включая ночь',comma=true}),
	['we(1)']=icon_fun({icon='weekendsonly',tooltip='в&nbsp;выходные летом',ignore=true}),
	['ev+we']=icon_fun({icon='nightsweekends',tooltip='вечером и в&nbsp;выходные'}),
	['md+ev']=icon_fun({icon='weekdaysonly',tooltip='в&nbsp;будни днём, кроме часов пик, и&nbsp;вечером'}),
	['md+ev(1)']=icon_fun({icon='weekdaysonly',tooltip='в&nbsp;будни днём, кроме часов пик, и&nbsp;вечером до&nbsp;23:00'}),
	['rh(some peak)+ev+we']=icon_fun({icon='nightsweekends',tooltip='вечером и в&nbsp;выходные, а&nbsp;также часть рейсов в&nbsp;часы пик в&nbsp;пиковом направлении'}),
	['md']=icon_fun({icon='weekdaysonly',tooltip='в&nbsp;будни днём, кроме часов пик',comma=true}),
	['rh(some peak)+we']=icon_fun({icon='weekendsonly',tooltip='в&nbsp;выходные, а&nbsp;также часть рейсов в&nbsp;часы пик в&nbsp;пиковом направлении'}),
	['rh(not peak)+md(not peak)+ev+we']=icon_fun({icon='allexceptrush',tooltip='круглосуточно, кроме будней днём в&nbsp;пиковом направлении и&nbsp;ночи',comma=true}),
	['rh(not peak)+md(not peak)']=icon_fun({icon='rushreversepeak',tooltip='в&nbsp;будни днём в&nbsp;направлении, обратном пиковому',comma=true}),
}
local subperiods = {
	{period='rh',subperiod='peak'},
	{period='rh',subperiod='not peak'},
	{period='rh',subperiod='some peak'},
	{period='rh',subperiod='1'},
	{period='rh',subperiod='2'},
	{period='md',subperiod='peak'},
	{period='md',subperiod='not peak'},
	{period='ev',subperiod=''},
	{period='we',subperiod=''},
	{period='ln',subperiod=''},
	{period='ev',subperiod='1'},
	{period='we',subperiod='1'},
	{period='ln',subperiod='1'},
}
local lines = {
	['линия Восьмой авеню, Ай-эн-ди']={color='2850ad',link='[[Линия Восьмой авеню, Ай-эн-ди|линии Восьмой авеню]]'},
	['линия Нассо-стрит, Би-эм-ти']={color='996633',link='[[Линия Нассо-стрит, Би-эм-ти|линии Нассо-стрит]]'},
	['линия Франклин-авеню, Би-эм-ти']={color='808183',shuttle=true},
	['челнок 42-й улицы, Ай-ар-ти']={color='808183',shuttle=true},
	['линия Канарси, Би-эм-ти']={color='a7a9ac',link='[[Линия Канарси, Би-эм-ти|линии Канарси]]'},
	['линия Лексингтон-авеню, Ай-ар-ти']={color='00933c',link='[[Линия Лексингтон-авеню, Ай-ар-ти|линии Лексингтон-авеню]]'},
	['линия Кросстаун, Ай-эн-ди']={color='6cbe45',link='[[Линия Кросстаун, Ай-эн-ди|линии Кросстаун]]'},
	['линия Шестой авеню, Ай-эн-ди']={color='ff6319',link='[[Линия Шестой авеню, Ай-эн-ди|линии Шестой авеню]]'},
	['линия Флашинг, Ай-ар-ти']={color='b933ad',link='[[Линия Флашинг, Ай-ар-ти|линии Флашинг]]'},
	['линия Бродвея и Седьмой авеню, Ай-ар-ти']={color='ee352e',link='[[Линия Бродвея и Седьмой авеню, Ай-ар-ти|линии Бродвея и Седьмой авеню]]'},
	['линия Бродвея, Би-эм-ти']={color='fccc0a',link='[[Линия Бродвея, Би-эм-ти|линии Бродвея]]'},
--	['линия Второй авеню, Ай-эн-ди']={color='00add0',link='[[Линия Второй авеню, Ай-эн-ди|линии Второй авеню]]'}, -- на будущее
}
local colors = {
	['2850ad']={text='синим'},
	['996633']={text='коричневым'},
	['808183']={text='тёмно-серым'},
	['a7a9ac']={text='светло-серым'},
	['00933c']={text='зелёным'},
	['6cbe45']={text='салатовым'},
	['ff6319']={text='оранжевым'},
	['b933ad']={text='фиолетовым'},
	['ee352e']={text='красным'},
	['fccc0a']={text='жёлтым'},
	['00add0']={text='бирюзовым'},
}
local alts = {
	{number=nil,
		text='',
		refname='',
		link='',
		title=''
	}, -- эта запись должна оставаться в таблице, когда нет других записей
}
-- global functions
function p.test(frame)
	param=getArgs(frame)[1]
	s=''
	for i=1,param do
		s=s..' '
	end
	return string.len(s)
end
function p.const(frame)
	param=getArgs(frame)[1]
	return const(param,frame)
end
function p.station_lines(frame)
	local aa=getArgs(frame)
	station=aa[1]
	color=aa[2]
	rtn=''
	for n,x in pairs(station_parts(station)) do
		if rtn~='' then
			rtn=rtn..'<br>'
		end
		rtn=rtn..line(x,color)
	end
	return rtn
end
function p.station_cats(frame)
	local aa=getArgs(frame)
	local station=aa[1]
	local param=aa[2]
	if param=='former' then
		return ''
	end
	local rtn=''
	local parts=station_parts(station)
	local pref='\r\n'
	if frame:preprocess('{{NAMESPACE}}')~='' then
		pref=pref..'* [[:'
	else
		pref=pref..'[['
	end
	for n,x in pairs(parts) do
		local tmp=line_netto(x)
		local pos=string.find(tmp,' ',1,true)
		if string.sub(tmp,1,2)=="л" then
			rtn=rtn..pref..'Категория:Станции линии '
		elseif string.sub(tmp,1,2)=="ч" then
			rtn=rtn..pref..'Категория:Станции челнока '
		else
			pos=0
		end
		if pos>0 then
			rtn=rtn..string.sub(tmp,pos+1,string.len(tmp))..']]'
		end
	end
	if param=='future' then
		return rtn
	end
	for n,x in pairs(stations) do
		for nn,xx in pairs(parts) do
			if x.station==xx then
				if x.orig then
					tmp=x.orig
				else
					tmp=x.opened
				end
				if tmp~='' then
					tmp=last4(tmp)
					rtn=rtn..pref..'Категория:Станции метрополитена, построенные в '..tmp..' году]]'
					rtn=rtn..pref..'Категория:Здания и сооружения, построенные в '..tmp..' году в США]]'
					rtn=rtn..pref..'Категория:'..tmp..' год в Нью-Йорке]]'
				end
				break
			end
		end
	end
	for n,x in pairs(multiline_stations) do
		if x.full==station then
			if x.cross then
				rtn=rtn..pref..'Категория:Кросс-платформенные пересадки Нью-Йоркского метрополитена]]'
			end
			break
		end
	end
	return rtn
end
function last4(tmp)
	return string.sub(tmp,string.len(tmp)-3,string.len(tmp))
end
function p.complex_lines(frame)
	local aa=getArgs(frame)
	complex=aa[1]
	color=aa[2]
	a=complex_lines(complex,color)
	rtn=''
	for n0,x0 in pairs(a) do
		if rtn~='' then
			rtn=rtn..'<br>'
		end
		rtn=rtn..x0
	end
	return rtn
end
function p.station_next(frame)
	local aa=getArgs(frame)
	station=aa[1]
	acc=aa[2]=='acc'
	local tw=twins[station]
	if tw then
		return '<b>'..tw.comment1..':</b><br>'..next_station_list(tw.station1,true,acc,false)..'<hr>'..next_station_list(tw.station1,false,acc,false)..
		'<hr><b>'..tw.comment2..':</b><br>'..next_station_list(tw.station2,true,acc,false)..'<hr>'..next_station_list(tw.station2,false,acc,false)
	end
	return next_station_list(station,true,acc,false)..'<hr>'..next_station_list(station,false,acc,false)
end
function p.station_next_ns(frame)
	local aa=getArgs(frame)
	station=aa[1]
	acc=aa[2]=='acc'
	north=aa[3]=='n'
	local tw=twins[station]
	if tw then
		return '<b>'..tw.comment1..':</b><br>'..next_station_list(tw.station1,north,acc,false)..
		'<hr><b>'..tw.comment2..':</b><br>'..next_station_list(tw.station2,north,acc,false)
	end
	return next_station_list(station,north,acc,false)
end
function p.station_bkg(frame)
	station=getArgs(frame)[1]
	arr={}
	for n,x in pairs(station_parts(station)) do
		arr=station_list_once(arr,x)
	end
	return arr_text(arr,'bkg')
end
function p.station_letters(frame)
	station=getArgs(frame)[1]
	t=arr_text(complex_sum(station),'letters')
	if t~='' then
		return t
	end
	return station_list_full(station,'letters')
end
function p.station_bullets(frame)
	station=getArgs(frame)[1]
	t=arr_text(complex_sum(station),'bullets')
	if t~='' then
		return t
	end
	t=station_list_full(station,'bullets')
	if t~='' then
		return t
	end
	return nostation
end
function p.station_letters_L(frame)
	local aa=getArgs(frame)
	station=aa[1]
	text=aa[2]
	if station=='' then
		return ''
	end
	t=arr_text(complex_sum(station),'letters')
	if t~='' then
		rtn=netto(station,'text')..' ('..t..')'
	else
		rtn=netto(station,'text')..' ('..station_list_full(station,'letters')..')'
	end
	if text then
		return rtn
	else
		return '[['..station..'|'..rtn..']]'
	end
end
function p.station_full(frame)
	station=getArgs(frame)[1]
	local tw=twins[station]
	if tw then
		return tw.comment1..': '..station_list_full(tw.station1,'full')..'<br>'..tw.comment2..': '..station_list_full(tw.station2,'full')
	end
	local s=station_list_full(station,'full')
	if s=='' then
		return nostation
	end
	if not alt_exist() then
		return s
	end
	alt_on=true
	for nnn,xxx in pairs(alts) do
		xxx.relevant=false
	end
	t=station_list_full(station,'full')
	if t=='' then
		t='<b>станция закрыта</b>'
	end
	if t~=s then
		return s..alt_text('all','','<br><small><i>',':</i></small>','<br>'..t,frame)
	else
		return s
	end
end
function p.SM(frame)
	local aa=getArgs(frame)
	local station=aa[1]
	local tail=aa[2]
	local param=aa[3]
	local gray=aa[4]
	local label=aa[5]
	if tail==nil then
		tail=''
	end
	local rtn,typeO,staname,staname2,en,years
	if param=='former' then
		rtn='|black'
		for n,x in pairs(stations_former) do
			if x.station==station then
				if x.station2 then
					rtn=rtn..'|black|white|black|black'
					staname2=netto(x.station2,'text')
				end
				if x.type=='o' then
					typeO=true
				end
				en=x.en
				years=last4(x.opened)..'—'..last4(x.closed)
			end
		end
	else
		rtn=station_list_full(station,'colors')
		for n0,x0 in pairs(station_parts(station)) do
			csta=x0
			for n,x in pairs(stations) do
				if x.station==csta then
					if x.type=='o' then
						typeO=true
					end
					if param=='reincarn' and x.old~='-' then
						staname=x.old
						if x.oldtype=='o' then
							typeO=true
						end
					elseif label then
					else
						label=x.br
					end
					years=last4(x.opened)
				end
			end
		end
	end
	if typeO then
		rtn=rtn..'|type=O'
		if gray then
			rtn=rtn..'_lightgrey'
		end
	else
		if gray then
			rtn=rtn..'|type=_lightgrey'
		end
	end
	if staname==nil then
		staname=netto(station,'text')
	end
	if staname2 then
		staname=staname..' — '..staname2
		station=staname..' ('..line_netto(station)..')'
	end
	local page=mw.title.new(station)
	if not page.exists then
		if en then
			station='en:'..en
		else
			station=''
		end
	end
	if label then
		label='{{line-height|80%|'..label..'}}'
	else
		label=staname
	end
	rtn=rtn..'|link='..station..'|label='..label..'|text='..staname..' ('..years..')'..tail
	return frame:preprocess('{{SM smart'..rtn..'}}')
end
function p.complex_prose(frame)
	complex=getArgs(frame)[1]
	a=complex_lines(complex,color)
	rtn=''
	local r=''
	for n0,x0 in pairs(a) do
		if rtn~='' then
			rtn=rtn..',\r\n'
		end
		rtn=rtn..'* '..x0
	end
	arr=complex_sum(complex)
	list={}
	for n,x in pairs(routes_sorted()) do
		for n0,x0 in pairs(arr) do
			if x.id==x0.route then
				periods=normalize(x0.periods,false)
				if list[periods] then
					r1=list[periods].routes..', '
					k=list[periods].key
				else
					r1=''
					k=x.label
				end
				if icons[periods] then
					title=icons[periods].tooltip
				else
					title=noperiods
				end
				list[periods]={title=title,routes=r1..x('bold',true),key=k}
			end
		end
	end
	list0={}
	cou=0
	for n0,x0 in pairs(list) do
		table.insert(list0, {routes=x0.routes,title=x0.title,key=x0.key})
		cou=cou+1
	end
	for n00,x00 in pairs(station_complexes) do
		if r=='' and x00.article==complex then
			if alt_ok(x00) then
				for n0,x0 in pairs(stations) do
					if x0.station==x00.station then
						r=rider(x0,frame,'complex text')
					end
				end
			end
		end
	end
	if cou==1 then
		for n0,x0 in pairs(list0) do
			rtn0=x0.routes
		end
		return 'В пересадочный узел входят станции следующих линий:\r\n'..rtn..'.\r\nНа станциях пересадочного узла круглосуточно останавливаются маршруты: '..rtn0..'.'..r
	else
		table.sort(list0, function(a,b) return a.key<b.key end)
		rtn0=''
		for n0,x0 in pairs(list0) do
			if rtn0~='' then
				rtn0=rtn0..',\r\n'
			end
			rtn0=rtn0..'* '..x0.routes..' ('..x0.title..')'
		end
		return 'В пересадочный узел входят станции следующих линий:\r\n'..rtn..'.\r\nНа станциях пересадочного узла останавливаются маршруты:\r\n'..rtn0..'.'..r
	end
end
function p.station_prose(frame)
	local aa=getArgs(frame)
	station=aa[1]
	level=aa[2]
	if level=='' then
		level=nil
	end
	local tw=twins[station]
	if tw then
		return '* '..station_prose(tw.station1,tw.comment1,frame)..'\r\n* '..station_prose(tw.station2,tw.comment2,frame)
	end
	return station_prose(station,level,frame)
end
function station_prose(station,level,frame)
	local rtn=''
	local r=''
	typ=nil
	subt=nil
	for n0,x0 in pairs(station_parts(station)) do
		csta=x0
		for nn,xx in pairs(stations) do
			if xx.station==csta then
				typ=xx.type
				subt=xx.subtype
				r=rider(xx,frame,'station text')
			end
		end
	end
	if subt=='split' then
		tmp=station_list_full(station,'prose skip split',nil,nil,'skip')
	elseif subt=='under' then
		tmp=station_list_full(station,'prose skip under',nil,nil,'skip')
	else
		tmp=station_list_full(station,'prose skip',nil,nil,'skip')
	end
	if tmp~='' then
		rtn=tmp..'.'
	else
		if typ=='x' and subt~='suppress' and subt~='bumper' then
			if subt=='tt' then
				tmp=station_list_full(station,'prose tt',nil,nil,'exp')
			elseif subt=='bidi' then
				tmp=station_list_full(station,'prose exp 1',nil,nil,'exp')
			else
				tmp=station_list_full(station,'prose exp 2',nil,nil,'exp')
			end
			if tmp~='' then
				tmp=tmp..'. '..station_list_full(station,'prose lcl',nil,nil,'lcl')..'.'
			end
		elseif subt=='bumper' then
			tmp=tmp..'Оба пути заканчиваются тупиками: поезд приходит на любой из путей и отправляется обратно.'
		end	
		if tmp~='' then
			rtn=tmp
		end
	end
	tmp=station_list_full(station,'prose',nil,nil,nil,level)
	if tmp~='' and rtn~='' then
		return tmp..'. '..rtn..r
	elseif tmp~='' then
		return tmp..'.'..r
	elseif rtn~='' then
		return rtn..r
	else
		return nostation
	end
end
function p.station_netto_T(frame)
	station=getArgs(frame)[1]
	return netto(station,'text')
end
function p.station_netto_L(frame)
	station=getArgs(frame)[1]
	return netto(station,'link')
end
function p.station_descr(frame)
	article=getArgs(frame)[1]
	arr=complex_sum(article)
	local t=arr_text(arr,'letters')
	local b=''
	if t~='' then
		b=complex_csv(article,'boro plain',frame)
		return "«"..netto(article,'link')..'» — пересадочный узел Нью-Йоркского метрополитена'..b..', обслуживаемый маршрутами <span class="nowrap">'..t..'.</span>'
	end
	for n,x in pairs(station_parts(article)) do
		arr=station_list_once(arr,x)
	end
	if arr_text(arr,'count letters')==1 then
		m='маршрутом'
	else
		m='маршрутами'
	end
	b=station_csv(article,'boro plain',frame)
	if b then
		return "«"..netto(article,'link')..'» — станция Нью-Йоркского метрополитена'..b..', обслуживаемая '..m..' <span class="nowrap">'..arr_text(arr,'letters')..'.</span>'
	else
		return nostation
	end
end
function p.route_prose(frame)
	route=getArgs(frame)[1]
	plural=getArgs(frame)[2]=="plural"
	local rtn="На картах, станциях, вагонах и&nbsp;т.&nbsp;д. "
	if plural then
		rtn=rtn.."они обозначаются "
	else
		rtn=rtn.."он обозначается "
	end
	local c=routes[route].color
	rtn=rtn..colors[c].text.." цветом"
	for n,x in pairs(lines) do
		if x.color==c then
			if plural then
				if x.shuttle then
					rtn=rtn..", поскольку являются [[S (маршрут метро, Нью-Йорк)|челночными маршрутами]]"
				else
					rtn=rtn..", поскольку проходят по "..x.link
				end
			else
				if x.shuttle then
					rtn=rtn..", поскольку является [[S (маршрут метро, Нью-Йорк)|челночным маршрутом]]"
				else
					rtn=rtn..", поскольку проходит по "..x.link
				end
			end
			break
		end
	end
	rtn=rtn.."."
	return rtn
end
function p.route_periods(frame)
	route=getArgs(frame)[1]
	param=getArgs(frame)[2]
	if param=='future' then
		future_on=true
	end
	return periods(route,true)
end
function p.route_terminals(frame)
	local aa=getArgs(frame)
	route=aa[1]
	param=aa[2]
	if param=='future' then
		future_on=true
	end
	total_periods=periods(route,true)
	arrarr_n={}
	arrarr_s={}
	fill_terminals(route,arrarr_n,arrarr_s)
	return text_terminals(arrarr_n,total_periods,param=='small')..'<hr>'..text_terminals(arrarr_s,total_periods,param=='small')
end
function p.station_terminal(frame)
	local aa=getArgs(frame)
	station=aa[1]
	north=aa[2]=='n'
	when=aa[3]
	plain=aa[4]
	arr={}
	for n,x in pairs(station_parts(station)) do
		arr=station_list_once(arr,x)
		multiline=x~=station
	end
	arrarr_n={}
	arrarr_s={}
	for n,x in pairs(arr) do
		fill_terminals(x.route,arrarr_n,arrarr_s,station,multiline)
	end
	if north then
		if arrarr_n[station] then
			arr=arrarr_n[station].arr
 		else
 			arr={}
		end
	else
		if arrarr_s[station] then
			arr=arrarr_s[station].arr
		else
			arr={}
		end
	end
	if plain=='letters' or when=='letters' then
		if when=='when' then
			return arr_text(arr,'when')
		else
			return arr_text(arr,'letters')
		end
	elseif plain=='plain' or when=='plain' then
		if when=='when' then
			return arr_text(arr,'prose semishort plain')
		else
			return arr_text(arr,'prose short plain')
		end
	else
		if when=='when' then
			return arr_text(arr,'prose semishort')
		else
			return arr_text(arr,'prose short')
		end
	end
end
function p.route_count_stations(frame)
	local aa=getArgs(frame)
	route=aa[1]
	param=aa[2]
	if param=='future' then
		future_on=true
	end
	total_periods=periods(route,false)
	arr={}
	for n0,x0 in pairs(stations_all()) do
		for n,x in pairs(routes_periods) do
			if x.segment==x0.segment and x.route==route then
				if alt_ok(x) then
					comment=howstops(x.how,x.dir,x0.type,x.period)
					if comment then
						--if comment=='some peak' or comment=='1' then
						if comment=='1' or comment=='2' then
							group=x.period..'('..comment..')'
						else
							group=x.period
						end
						if arr[group] then
							arr[group].quantity=arr[group].quantity+1
						else
							arr[group]={group=group,quantity=1}
						end
					end
				end
			end
		end
	end
	--if arr['rh']~=nil and arr['rh(1)']~=nil then
	--	arr['rh(1)'].quantity=arr['rh(1)'].quantity+arr['rh'].quantity
	--end
	if arr['ev']~=nil and arr['ev(1)']~=nil then
		arr['ev(1)'].quantity=arr['ev(1)'].quantity+arr['ev'].quantity
	end
	if arr['we']~=nil and arr['we(1)']~=nil then
		arr['we(1)'].quantity=arr['we(1)'].quantity+arr['we'].quantity
	end
	if arr['ln']~=nil and arr['ln(1)']~=nil then
		arr['ln(1)'].quantity=arr['ln(1)'].quantity+arr['ln'].quantity
	end
	if arr['ev']~=nil and arr['ev(2)']~=nil then
		arr['ev(2)'].quantity=arr['ev(2)'].quantity+arr['ev'].quantity
	end
	if arr['we']~=nil and arr['we(2)']~=nil then
		arr['we(2)'].quantity=arr['we(2)'].quantity+arr['we'].quantity
	end
	if arr['ln']~=nil and arr['ln(2)']~=nil then
		arr['ln(2)'].quantity=arr['ln(2)'].quantity+arr['ln'].quantity
	end
	arr0={}
	for n,x in pairs(arr) do
		if arr0[x.quantity] then
			arr0[x.quantity].group=arr0[x.quantity].group..'+'..x.group
		else
			arr0[x.quantity]={group=x.group,quantity=x.quantity}
		end
	end
	arr={}
	for n,x in pairs(arr0) do
		table.insert(arr, {group=x.group,quantity=x.quantity})
	end
	table.sort(arr, function(a,b) return a.quantity<b.quantity end)
	rtn=''
	for n,x in pairs(arr) do
		if rtn~='' then
			rtn=rtn..'<br>'
		end
		periods=normalize(x.group,false)
		x0=icons[periods]
		if x0==nil then
			rtn=rtn..x.quantity..' (нет индикатора: '..x.group..')'..noperiods
		elseif x0.tooltip==total_periods then
			rtn=rtn..x.quantity
		else
			rtn=rtn..x.quantity..' ('..x0.tooltip..')'
		end
	end
	return rtn
end
function p.complex_next(frame)
	local aa=getArgs(frame)
	complex=aa[1]
	acc=aa[2]=='acc'
	rtn=''
	rtn=rtn..'{|class="standard" style="'..whiteback..'"\r\n'
	rtn=rtn..'!Предыдущая станция\r\n!Линия<hr>Название станции\r\n!Следующая станция\r\n'
	for n,x in pairs(station_complexes) do
		station=x.station
		if x.article==complex and x.section~='' then
			if alt_ok(x) then
				rtn=rtn..'|- align=center\r\n|'..next_station_list(station,true,acc,true)..'\r\n|\r\n'
				rtn0=''
				for n0,x0 in pairs(station_parts(station)) do
					if rtn0~='' then
						rtn0=rtn0..'<br>'
					end
					rtn0=rtn0..line(x0)
				end
				rtn=rtn..'<b>'..rtn0..'</b>\r\n<br>\r\n'..netto(station,'text')..'\r\n|'..next_station_list(station,false,acc,true)..'\r\n'
			end
		end
	end
	rtn=rtn..'|}\r\n'
	return rtn
end
function p.segment_table(frame)
	local aa=getArgs(frame)
	local seg=aa[1]
	local param=aa[2]
	local param2=aa[3]
	local param3=aa[4]
	local rtn=''
	local sta_table
	if param=='future' then
		sta_table=stations_future
		future_on=true
	elseif param=='former' then
		sta_table=stations_former
	else
		sta_table=stations
	end
	for n,x in pairs(sta_table) do
		if x.segment==seg then
			if (param~='reincarn' and param~='reincarn back') or x.old~='-' then
				if param=='reincarn back' then
					rtn=segment_row(x,'reincarn',param2,param3,frame)..rtn
				else
					rtn=rtn..segment_row(x,param,param2,param3,frame)
				end
			end
		end
	end
	if param=='former' and rtn=='' then
		rtn='|-\r\n|colspan=7 align=center style="'..grayback..'"|<i>('..seg..')</i>\r\n'
	end
	return rtn
end
function segment_row(x,param,param2,param3,frame)
	local span
	if param=='2' then
		span=8
	else
		span=7
	end
	local gray=param=='future' or param=='former'
	local milestone_style='padding-left:2em;padding-right:2em;'
	if gray then
		milestone_style=milestone_style..grayback
	end
	local rtn=''
	if x.above then
		rtn=rtn..'|-\r\n|colspan='..span..' align=center style="'..milestone_style..'"|<b>'..ita1(gray)..x.above..ita2(gray)..'</b>\r\n'
	end
	local sta=x.station
	local full=from_part(sta,true)
	local struc
	if param=='future' then
		if x.struc then
			struc=x.struc
		else
			struc='подземная'
		end
	elseif param=='former' then
		if x.struc then
			struc=x.struc
		else
			struc='эстакадная'
		end
	else
		struc=key_csv(x.c_key,'struc')
	end
	local a1,a2,a3
	if param~='2' then
		excludefound=false
		if full=='' then
			a1=''
			a2=station_transfers(sta,'full small',nil,frame,param)
			if gray then
				a3=x.conn
			else
				a3=station_connections(sta)
			end
		else
			a2=station_transfers(full,'full small',nil,frame,param)
			if gray then
				a3=x.conn
			else
				a3=station_connections(full)
			end
			if param=='1' then
				if a3~='' then
					a3=a3..'<br>'
				end
				a3=a3..'<i><small>На этой станции даны единым списком маршруты обеих линий, проходящих через неё</small></i>'
				a1=station_list_full(full,'full')
			else
				arr={}
				for nn,xx in pairs(multiline_stations) do
					if full==xx.full and xx.part~=sta then
						arr=station_list_once(arr,xx.part)
					end
				end
				a1=arr_text(arr,'full small')
			end
		end
		local link
		if param=='reincarn' then
			link='[['
			if x.oldlink then
				link=link..x.oldlink
			else
				link=link..sta
			end
			link=link..'|'
			if x.old then
				link=link..x.old
			else
				link=link..netto(sta,'text')
			end
			link=link..']]'
		else
			if x.br then
				link='[['..sta..'|'..x.br..']]'
			else
				link=netto(sta,'link')
			end
			if x.info then
				link=link..frame:preprocess('<ref>'..x.info..'</ref>')
			end
		end
		local en=x.en
		if en then
			local page=mw.title.new(sta)
			if not page.exists then
				link=link..'<sup style="font-style:normal;">&#91;[[:en:'..en..'|en]]&#93;</sup>'
			end
		end
		if x.spur=='sw' or x.spur=='se' then
			rtn=rtn..stub_spur(x.spur,'Станция '..link..' находилась на ответвлении',true)
		end
		if param2~='reincarn' then
			if x.spur_noreincarn=='sw' or x.spur_noreincarn=='se' then
				rtn=rtn..stub_spur(x.spur_noreincarn,'Станция '..link..' находилась на ответвлении',true)
			end
		end
		if x.above_stub~=nil and param~='reincarn' then
			rtn=rtn..stub_spur(x.above_stub,x.above_stub_text,false)
		end
		rtn=rtn..'|-'
		local style=''
		if gray then
			style=style..grayback
		end
		if x.spur=='nw' or x.spur=='ne' then
			style=style..bor('left')..bor('right')..bor('top')
		elseif x.spur=='sw' or x.spur=='se' then
			style=style..bor('left')..bor('right')..bor('bottom')
		end
		if param2~='reincarn' then
			if x.spur_noreincarn=='nw' or x.spur_noreincarn=='ne' then
				style=style..bor('left')..bor('right')..bor('top')
			elseif x.spur_noreincarn=='sw' or x.spur_noreincarn=='se' then
				style=style..bor('left')..bor('right')..bor('bottom')
			end
		end
		if style~='' then
			rtn=rtn..' style="'..style..'"'
		end
		if param2~=nil and (excludefound or param=='0') then
			rtn=rtn..' style="'..bor('top')..bor('bottom')..bor(param2)
			if param3 then
				rtn=rtn..'height:'..(param3*20)..'px;'
			end
			rtn=rtn..'"\r\n|nowrap|'
		else
			rtn=rtn..'\r\n|'
		end
		rtn=rtn..ita1(gray,param=='future',param=='former',x.saved)
		rtn=rtn..link
		if x.station2 then
			rtn=rtn..'&nbsp;[[Файл:U+21C3.svg|x18px|link=]]&nbsp;[[Файл:U+21BE.svg|x18px|link=]]&nbsp;'..netto(x.station2,'link')
		end
		rtn=rtn..ita2(gray)..'\r\n|'
		if param=='former' or param=='reincarn' then
		else
			rtn=rtn..acc_cell(x.acc)
		end
		rtn=rtn..'\r\n|'..ita1(gray)..struc..ita2(gray)..'\r\n|'..ita1(gray)
		if x.type=='o' or x.other_type=='o' or (x.oldtype=='o' and param=='reincarn') then
			rtn=rtn..'лок.'
		else
			rtn=rtn..'<b>все</b>'
		end
		if x.note then
			rtn=rtn..'&nbsp;'..x.note
		end
		rtn=rtn..ita2(gray)..'\r\n'
		if param2~=nil and (excludefound or param=='0') then
			rtn=rtn..'|nowrap'
		end
		rtn=rtn..'|'..ita1(gray)
		if x.orig then
			rtn=rtn..x.orig..frame:preprocess('<ref name="date '..x.opened..'">В составе метро с '..x.opened..'.</ref>')
		else
			rtn=rtn..x.opened
		end
		rtn=rtn..ita2(gray)..'\r\n'
		if param=='1' then
			rtn=rtn..'|colspan=2|\r\n'..inner_table(a1,a2,a3)
		else
			if param=='former' then
				rtn=rtn..'|'..ita1(gray)..x.closed..ita2(gray)..'\r\n'
			elseif x.future then
				rtn=rtn..'|\r\n'
			else
				rtn=rtn..'|'..station_list_full(sta,'full')..'\r\n'
			end
			if param~='0' then
				if param=='former' or param=='reincarn' then
					local tt=''
					if x.station2 then
						tt=tt..frame:preprocess(
							'<ref name="split">Платформы разных направлений располагались на параллельных улицах и представляли собой отдельные станции.</ref>')
					end
					if x.transfer then
						if tt~='' then
							tt=tt..'<br>'
						end
						tt=tt..frame:preprocess(x.transfer)
					end
					rtn=rtn..'|nowrap| '..ita1(gray or param=='reincarn')..tt..ita2(gray or param=='reincarn')..'\r\n'
				else
					rtn=rtn..'|\r\n'..inner_table(a1,a2,a3)
				end
			else
				rtn=rtn..'|\r\n'..tab..'\r\n|nowrap|<i><small>Все станции в этой рамке<br>связаны пересадкой</small></i>\r\n|}\r\n'
			end
		end
		if x.spur=='nw' or x.spur=='ne' then
			rtn=rtn..stub_spur(x.spur,'Станция '..link..' находилась на ответвлении',true)
		end
		if param2~='reincarn' then
			if x.spur_noreincarn=='nw' or x.spur_noreincarn=='ne' then
				rtn=rtn..stub_spur(x.spur_noreincarn,'Станция '..link..' находилась на ответвлении',true)
			end
		end
		if x.below_stub~=nil and param~='reincarn' then
			rtn=rtn..stub_spur(x.below_stub,x.below_stub_text,false)
		end
	else
		rtn=rtn..'|-\r\n|'
		if x.br then
			if full=='' then
				rtn=rtn..'[['..sta..'|'..x.br..']]'
			else
				rtn=rtn..'[['..full..'|'..x.br..']]'
			end
		else
			if full=='' then
				rtn=rtn..netto(sta,'link')
			else
				rtn=rtn..netto(full,'link')
			end
		end
		rtn=rtn..'\r\n|'..acc_cell(x.acc)..'\r\n|'..struc..'\r\n|'
		if x.type=='o' or x.other_type=='o' then
			rtn=rtn..'лок.\r\n'
		else
			rtn=rtn..'<b>все</b>\r\n'
		end
		rtn=rtn..'|'
		if x.orig then
			rtn=rtn..x.orig..frame:preprocess('<ref name="date '..x.opened..'">В составе метро с '..x.opened..'.</ref>')
		else
			rtn=rtn..x.opened
		end
		rtn=rtn..'\r\n|'..station_list_full(sta,'full')..'\r\n'
		if full=='' then
			rtn=rtn..'|\r\n'
			a2=station_transfers(sta,'full small',nil,frame)
			a3=station_connections(sta)
		else
			arr={}
			for nn,xx in pairs(multiline_stations) do
				if full==xx.full and xx.part~=sta then
					arr=station_list_once(arr,xx.part)
					rtn=rtn..'|'..station_list_full(xx.part,'full')..'\r\n'
				end
			end
			a2=station_transfers(full,'full small',nil,frame)
			a3=station_connections(full)
		end
		rtn=rtn..'|\r\n'..inner_table('',a2,a3)
	end
	if x.below then
		rtn=rtn..'|-\r\n|colspan='..span..' align=center style="'..milestone_style..'"|<b>'..ita1(gray)..x.below..ita2(gray)..'</b>\r\n'
	end
	if x.below_key then
		for n00,x00 in pairs(stations_former) do
			if x00.segment==x.below_key then
				rtn=rtn..segment_row(x00,'former',param,'',frame)
			end
		end
	end
	if x.below_key_noreincarn~=nil and param~='reincarn' then
		for n00,x00 in pairs(stations_former) do
			if x00.segment==x.below_key_noreincarn then
				rtn=rtn..segment_row(x00,'former',param,'',frame)
			end
		end
	end
	return rtn
end
function p.route_table(frame)
	local aa=getArgs(frame)
	route=aa[1]
	route2=aa[2]
	forperiod=aa[3]
	if route2=='future' then
		future_on=true
		route2=nil
	elseif route2=='' then
		route2=nil
	end
	if forperiod then
		return tab..' class="standard" style="line-height:0;'..whiteback..'"\r\n'..build_route(route,route2,'route',frame,nil,forperiod)..'\r\n|}'
	else
		return tab..' class="standard" style="line-height:0;'..whiteback..'"\r\n'..build_route(route,route2,'route',frame)..'\r\n|}'
	end
end
function p.route_regimes(frame)
	local aa=getArgs(frame)
	route=aa[1]
	route2=aa[2]
	if route2=='future' then
		future_on=true
		route2=nil
	elseif route2=='' then
		route2=nil
	end
	return tab..' class="standard" style="'..whiteback..'"\r\n'..build_route(route,route2,'regimes',frame)..'\r\n|}'
end
function p.route_table_nav(frame)
	local aa=getArgs(frame)
	article=aa[1]
	arr=complex_sum(article)
	if arr_text(arr,'count letters')==0 then
		for n,x in pairs(station_parts(article)) do
			arr=station_list_once(arr,x)
		end
	end
	rtn=''
	letters=arr_text(arr,'check')
	for nn,xx in pairs(routes_sorted()) do
		if string.find('+'..letters..'+','+'..xx.id..'+',1,true) then
			if rtn~='' then
				rtn=rtn..'|-\r\n|colspan=2|<hr>\r\n'
			end
			rtn=rtn..build_route(xx.id,nil,'navtext',frame,article)
		end
	end
	return tab..'\r\n'..rtn..'|}'
end
function p.route_lines(frame)
	local aa=getArgs(frame)
	route=aa[1]
	purpose=aa[2]
	if purpose=='' or purpose==nil then
		purpose='list'
	end
	return build_route(route,nil,'lines '..purpose,frame,'')
end
function p.connection_use(frame)
	local aa=getArgs(frame)
	seg1=aa[1]
	seg2=aa[2]
	ifno=aa[3]
	if seg1=='' or seg1==nil or seg2=='' or seg2==nil then
		return 'не заданы два сегмента'..badparams
	end
	if ifno==nil then
		ifno='соединение не используется'
	end
	return two_segments(seg1,seg2,'','full small',ifno)
end
function p.connection_use_2(frame)
	local aa=getArgs(frame)
	seg1=aa[1]
	seg2=aa[2]
	seg3=aa[3]
	seg4=aa[4]
	ifno1=aa[5]
	ifno2=aa[6]
	if seg1=='' or seg1==nil or seg2=='' or seg2==nil or seg3=='' or seg3==nil or seg4=='' or seg4==nil then
		return 'не заданы два сегмента'..badparams
	end
	if ifno1==nil then
		ifno1='соединение не используется'
	end
	if ifno2==nil then
		ifno2='оба соединения не используются'
	end
	rtn1=two_segments(seg1,seg2,'','full small',ifno1)
	rtn2=two_segments(seg3,seg4,'','full small',ifno1)
	if rtn1==ifno1 and rtn2==ifno1 then
		return 'и обратно ('..ifno2..')'
	else
		return '('..rtn1..') и обратно ('..rtn2..')'
	end
end
function p.connection_use_color(frame)
	local aa=getArgs(frame)
	seg1=aa[1]
	seg2=aa[2]
	if seg1=='' or seg1==nil or seg2=='' or seg2==nil then
		return '000000'
	end
	return two_segments(seg1,seg2,'','color','000000')
end
function p.connection_use_st(frame)
	local aa=getArgs(frame)
	sta1=aa[1]
	sta2=aa[2]
	param3=aa[3]
	param4=aa[4]
	if param3=='when' or param4=='when' then
		fmt='when'
	elseif param3=='letters' or param4=='letters' then
		fmt='letters'
	elseif param3=='bullets' or param4=='bullets' then
		fmt='bullets'
	elseif param3=='bullets all' or param4=='bullets all' then
		fmt='bullets all'
	elseif param3=='full small' or param4=='full small' then
		fmt='full small'
	else
		fmt=''
	end
	if param3=='when' then
		sta2a=''
	else
		sta2a=param3
	end
	seg1=''
	seg2=''
	seg2a=''
	typ1=nil
	typ2=nil
	typ2a=nil
	for n,x in pairs(stations) do
		if x.station==sta1 then
			seg1=x.segment
			typ1=x.type
		end
		if x.station==sta2 then
			seg2=x.segment
			typ2=x.type
		end
		if x.station==sta2a then
			seg2a=x.segment
			typ2a=x.type
		end
	end
	if seg1=='' or seg1==nil or seg2=='' or seg2==nil then
		return 'не заданы два сегмента'..badparams
	end
	if param3=='x' or param3=='o' then
		seg2a=param3
	end
	if fmt=='when' then
		return two_segments(seg1,seg2,seg2a,'prose semishort','регулярного движения нет',true,typ1,typ2,typ2a)
	elseif fmt=='letters' or fmt=='bullets' or fmt=='bullets all' or fmt=='full small' then
		return two_segments(seg1,seg2,seg2a,fmt,'',true,typ1,typ2,typ2a)
	else
		return two_segments(seg1,seg2,seg2a,'prose short','регулярного движения нет',true,typ1,typ2,typ2a)
	end
end
function p.line_nowrap(frame)
	line=tolower(getArgs(frame)[1])
	return toupper(line_nowrap(line))
end
function p.line_bullets(frame)
	line=tolower(getArgs(frame)[1])
	arr=line_routes(line)
	if getArgs(frame)[2]==nil then
		return '<span class="nowrap">'..arr_text(arr,'large bullets')..'</span>'
	else
		return '<span class="nowrap">'..arr_text(arr,'bullets')..'</span>'
	end
end
function p.line_opened(frame)
	local y=''
	local o=''
	line=tolower(getArgs(frame)[1])
	full=getArgs(frame)[2]
	for n,x in pairs(stations) do
		if line_netto(x.station)==line then
			local yy=last4(x.opened)
			if y=='' or yy<y then
				y=yy
			end
			if x.orig then
				local oo=last4(x.orig)
				if o=='' or oo<o then
					o=oo
				end
			end
		end
	end
	if full~=nil and o~='' then
		return o..' (в составе метро с '..y..')'
	else
		return y
	end
end
function p.line_aboveground(frame)
	local above=false
	local below=false
	line=tolower(getArgs(frame)[1])
	for n,x in pairs(stations) do
		if line_netto(x.station)==line then
			if key_csv(x.c_key,'struc')=='подземная' then
				below=true
			else
				above=true
			end
		end
	end
	if below and above then
		return 'есть'
	elseif above then
		return 'вся линия'
	else
		return 'нет'
	end
end
function p.line_prose(frame)
	line=tolower(getArgs(frame)[1])
	arr=line_routes(line)
	if arr_text(arr,'all alltimes') then
		rtn='круглосуточно '..arr_text(arr,'prose by short')..'.'
	else
		rtn=arr_text(arr,'prose by')..'.'
	end
	o=lines[line]
	if o then
		cou=0
		arr={}
		for n,x in pairs(routes_sorted()) do
			if x.color==o.color and x.tooltip==x.id then
				cou=cou+1
				arr[cou]=x('bold')
			end
		end
		if cou>0 then
			rtn=rtn..' Линия считается «[[Список линий Нью-Йоркского метрополитена#Терминология|стволовой]]»: '
			if cou==1 then
				rtn=rtn..'маршрут '..arr[1]..', проходящий по ней, обозначается '
			else
				rtn=rtn..'маршруты '
				for n=1,cou do
					rtn=rtn..arr[n]
					if n==cou then
					elseif n==cou-1 then
						rtn=rtn.." и "
					else
						rtn=rtn..", "
					end
				end
				rtn=rtn..', проходящие по ней, обозначаются '
			end
			rtn=rtn..colors[o.color].text..' цветом.'
		end
	end
	return rtn
end
function p.line_count_stations(frame)
	line=tolower(getArgs(frame)[1])
	sum=0
	for n,x in pairs(stations) do
		if line_netto(x.station)==line then
			sum=sum+1
		end
	end
	return sum
end
function p.line_color(frame)
	line=tolower(getArgs(frame)[1])
	o=lines[line]
	if o then
		return o.color
	else
		return '000000'
	end
end
function p.segment_color(frame)
	local aa=getArgs(frame)
	local seg1=aa[1]
	local seg2=aa[2]
	local cond=aa[3]
	local arr={}
	if cond=='segand' or cond=='segandnot' then
		local arr1={}
		arr1=segment_routes(arr1,seg1)
		local arr2={}
		arr2=segment_routes(arr2,seg2)
		for n0,x0 in pairs(routes) do
			local elem1=arr1[x0.id]
			local elem2=arr2[x0.id]
			local elem=''
			if elem1==nil then
			elseif elem2==nil then
				if cond=='segandnot' then
					elem=elem1.periods
				end
			else
				elem1='+'..normalize(elem1.periods)..'+'
				elem2='+'..normalize(elem2.periods)..'+'
				for nn,xx in pairs({'rh','md','ev','we','ln'}) do
					if string.find(elem1,'+'..xx,1,true)~=nil then
						local f1=string.find(elem1,'+'..xx..'+',1,true) 
						local f1_1=string.find(elem1,'+'..xx..'(1)+',1,true) 
						local f1_2=string.find(elem1,'+'..xx..'(2)+',1,true) 
						local f1_p=string.find(elem1,'+'..xx..'(peak)+',1,true) 
						local f1_sp=string.find(elem1,'+'..xx..'(some peak)+',1,true) 
						local f1_np=string.find(elem1,'+'..xx..'(not peak)+',1,true) 
						local f2=string.find(elem2,'+'..xx..'+',1,true) 
						local f2_1=string.find(elem2,'+'..xx..'(1)+',1,true) 
						local f2_2=string.find(elem2,'+'..xx..'(2)+',1,true) 
						local f2_p=string.find(elem2,'+'..xx..'(peak)+',1,true) 
						local f2_sp=string.find(elem2,'+'..xx..'(some peak)+',1,true) 
						local f2_np=string.find(elem2,'+'..xx..'(not peak)+',1,true) 
						if cond=='segand' then
							if not(
								(f1_2 and f2_1) or (f1_1 and f2_2)
								or (f1_np and (f2_p or f2_sp))
								or (f2_np and (f1_p or f1_sp))
							) then elem=elem..'+'..xx end
						else
							if not(
								f2
								or (f1_1 and f2_1)
								or (f1_2 and f2_2)
								or (f1_p and f2_p)
								or (f1_sp and f2_sp)
								or (f1_np and f2_np)
								or (f1_sp and f2_p)
							) then elem=elem..'+'..xx end
						end
					end
				end
			end
			if elem~='' then
				arr[x0.id]={route=x0.id,periods=string.sub(elem,2,string.len(elem))}
			end
		end
	else
		arr=segment_routes(arr,seg1)
		if cond=='segor' then
			arr=segment_routes(arr,seg2)
		end
	end
	local rtn=arr_text(arr,'color')
	if rtn=='' then
		rtn='000000'
	end
	return rtn
end
function p.segment_route_coef(frame)
	local aa=getArgs(frame)
	local route1=aa[1]
	local route2=routes[route1].second
	if route2==nil then
		route2=''
	end
	local seg1=aa[2]
	local seg2=aa[3]
	local cond=aa[4]
	local a1=segment_route_when(seg1,route1,route2)
	if seg2 then
		local a2=segment_route_when(seg2,route1,route2)
		for nn,xx in pairs({'rh','md','ev','we','ln'}) do
			if cond=='segor' then
				if a1[xx]==nil and a2[xx]~=nil then
					a1[xx]=a2[xx]
				end
			elseif cond=='segand' then
				if a1[xx]==nil or a2[xx]==nil then
					a1[xx]=nil
				elseif (a1[xx]=='1' and a2[xx]=='2') or (a1[xx]=='2' and a2[xx]=='1')
						or (a1[xx]=='notpeakonly' and a2[xx]=='peakonly') or (a1[xx]=='notpeakonly' and a2[xx]=='peak+')
						or (a2[xx]=='notpeakonly' and a1[xx]=='peakonly') or (a2[xx]=='notpeakonly' and a1[xx]=='peak+') then
					a1[xx]=nil
				end
			elseif cond=='segandnot' then
				if a1[xx]==nil or a2[xx]==nil then
				elseif a2[xx]=='' or a2[xx]=='peak' or a1[xx]=='' or a1[xx]=='peak' or a2[xx]==a1[xx]
						or (a1[xx]=='peak+' and a2[xx]=='peakonly') or (a2[xx]=='peak+' and a1[xx]=='peakonly') then
					a1[xx]=nil
				end
			end
		end
	end
	if a1['md'] then
		if a1['ln'] then
			return 0
		elseif a1['we'] then
			return 50
		else
			return 100
		end
	else
		if a1['rh'] then
			return 150
		elseif a1['ln'] then
			return 200
		else
			return 255
		end
	end
end
function segment_route_when(seg,route1,route2)
	local a={}
	for n,x in pairs(routes_periods) do
		if x.segment==seg then
			if alt_ok(x) then
				if x.route==route1 or x.route==route2 then
					if x.dir then
						a[x.period]=x.dir
					else
						a[x.period]=''
					end
				end
			end
		end
	end
	return a
end
function p.segment_dir(frame)
	local aa=frame.args --=getArgs(frame)
	local seg1=aa[1]
	local seg2=aa[2]
	local cond=aa[3]
	local period=aa[4]
	if period==nil then
		period=''
	end
	local dir1=segment_dir(seg1,period)
	if cond~='segor' and cond~='segand' and cond~='segandnot' then
		return dir2color(dir1)
	end
	local inuse=false
	for nn,xx in pairs(routes) do
		local r1=seg_route(seg1,xx.id,period)
		local r2=seg_route(seg2,xx.id,period)
		if cond=='segor' then
			if r1 or r2 then
				inuse=true
			end
		elseif cond=='segand' then
			if r1 and r2 then
				inuse=true
			end
		elseif cond=='segandnot' then
			if r1 and not r2 then
				inuse=true
			end
		end
	end
	if not inuse then
		return dir2color('no')
	end
	local dir2=segment_dir(seg2,period)
	if cond=='segor' then
		if dir1=='2' or dir2=='2' then
			return dir2color('2')
		elseif dir1=='1' or dir2=='1' then
			return dir2color('1')
		elseif dir1=='ss' or dir2=='ss' then
			return dir2color('ss')
		elseif dir1=='sh' and dir2=='sh' then
			return dir2color('sh')
		else
			return dir2color('')
		end
	elseif cond=='segand' then
		if dir1==dir2 then
			return dir2color(dir1)
		elseif (dir1=='1' and dir2=='2') or (dir2=='1' and dir1=='2') then
			return dir2color('1')
		elseif (dir1=='ss' and dir2~='') or (dir2=='ss' and dir1~='') then
			return dir2color('ss')
		elseif dir1=='sh' and dir2=='sh' then
			return dir2color('sh')
		else
			return dir2color('')
		end
	elseif cond=='segandnot' then
		if dir1=='2' and dir2~='2' then
			return dir2color('2')
		elseif dir1=='1' and (dir2=='ss' or dir2=='') then
			return dir2color('1')
		elseif dir1=='ss' and dir2=='' then
			return dir2color('ss')
		elseif dir1=='sh' and dir2~='sh' then
			return dir2color('sh')
		else
			return dir2color('')
		end
	end
end
function dir2color(dir)
	if dir=='2' then
		return 'red'
	elseif dir=='1' then
		return 'pink'
	elseif dir=='ss' then
		return 'chocolate'
	elseif dir=='sh' then
		return 'lightseagreen'
	elseif dir=='no' then
		return 'black'
	else
		return 'grey'
	end
end
function segment_dir(seg,period)
	local x1,x2,ss,notsh,inuse
	if seg=='SIR' then
		return ''
	end
	for n,x in pairs(routes_periods) do
		if x.segment==seg and (period=='' or x.period==period) then
			if alt_ok(x) then
				inuse=true
				if x.how=='x' then
					if x.tt then
					elseif x.dir==nil then
						x2=true
					elseif x.dir=='peak' or x.dir=='peak+' or x.dir=='peakonly' then
						x1=true
					end
				elseif x.how then
					ss=true
				end
				if routes[x.route].shuttle==nil and x.shuttle==nil then
					notsh=true
				end
			end
		end
	end
	if inuse==nil then
		return 'no'
	elseif x2 then
		return '2'
	elseif x1 then
		return '1'
	elseif ss then
		return 'ss'
	elseif notsh==nil then
		return 'sh'
	else
		return ''
	end
end
function p.SL(frame)
	--local aa=getArgs(frame) -- здесь это почему-то не работает
	local aa=frame.args
	station=aa[1]
	orient=aa[2] -- V or H
	track=aa[3] -- 'exp', 'lcl', 'skip' or nil (or 'manual')
	route_plus=aa[4]
	route_minus=aa[5]
	if track=='' then
		track=nil
	end
	if route_plus=='' then
		route_plus=nil
	end
	if route_minus=='' then
		route_minus=nil
	end
	local arr={}
	if track~='manual' then
		arr=station_list_once(arr,station,nil,nil,track)
	end
	if route_plus then
		for match in (route_plus..', '):gmatch("(.-), ") do -- https://stackoverflow.com/questions/1426954/split-string-in-lua
			arr_add(arr,match,'md','')
		end
	end
	m1=nil
	m2=nil
	if route_minus then
		for match in (route_minus..', '):gmatch("(.-), ") do -- https://stackoverflow.com/questions/1426954/split-string-in-lua
			if m1==nil then
				m1=match
			elseif m2==nil then
				m2=match
			end
		end
	end
	return arr_text(arr,'SL '..orient,m1,m2)
end
function p.station_acc(frame)
	station=getArgs(frame)[1]
	for n0,x0 in pairs(station_parts(station)) do
		csta=x0
		for n,x in pairs(stations) do
			if x.station==csta then
				cacc=x.acc
			end
		end
	end
	if cacc then
		rtn=accicon
		if cacc=='yes' then
			return rtn
		elseif cacc=='n' then
			return rtn..' (только на север)'
		elseif cacc=='s' then
			return rtn..' (только на юг)'
		else
			return rtn..' ('..cacc..')'
		end
	else
		return ''
	end
end
function p.station_opened(frame)
	station=getArgs(frame)[1]
	local tw=twins[station]
	if tw then
		local so1=station_opened(tw.station1)
		local so2=station_opened(tw.station2)
		if so1==so2 then
			return so1
		else
			return '<b>'..tw.comment1..':</b>'..indent..so1
			..'<br><b>'..tw.comment2..':</b>'..indent..so2
		end
	end
	return station_opened(station)
end
function station_opened(station)
	for n0,x0 in pairs(station_parts(station)) do
		csta=x0
		for n,x in pairs(stations) do
			if x.station==csta then
				if x.orig then
					return x.orig..'<br>(в составе метро с '..x.opened..')'
				else
					return x.opened
				end
			end
		end
	end
end
function p.complex_boro(frame)
	complex=getArgs(frame)[1]
	return complex_csv(complex,'boro',frame)
end
function complex_csv(complex,field,frame)
	local rtn=''
	local cur
	for nn,xx in pairs(station_complexes) do
		if xx.article==complex and xx.section~='' then
			cur=station_csv(xx.station,field,frame)
			if rtn=='' then
				rtn=cur
			elseif rtn~=cur then
				rtn=rtn..', '..cur
			end
		end
	end
	return rtn
end
function p.station_csv(frame)
	station=getArgs(frame)[1]
	field=getArgs(frame)[2]
	local tw=twins[station]
	if tw then
		local so1=station_csv(tw.station1,field,frame)
		local so2=station_csv(tw.station2,field,frame)
		if so1==so2 then
			return so1
		else
			return '<b>'..tw.comment1..':</b>'..indent..so1
			..'<br><b>'..tw.comment2..':</b>'..indent..so2
		end
	end
	return station_csv(station,field,frame)
end
function station_csv(station,field,frame)
	for n0,x0 in pairs(station_parts(station)) do
		csta=x0
		for n,x in pairs(stations) do
			if x.station==csta then
				return key_csv(x.c_key,field,frame)
			end
		end
	end
end
function key_csv(key,field,frame)
	local c=csv[key]
	if field=='boro' then
		cf=c.boro
		if cf=='M' then
			return '[[Манхэттен]]'
		elseif cf=='Bk' then
			return '[[Бруклин]]'
		elseif cf=='Q' then
			return '[[Куинс]]'
		elseif cf=='Bx' then
			return '[[Бронкс]]'
		end
	elseif field=='boro plain' then
		cf=c.boro
		if cf=='M' then
			return ' на Манхэттене'
		elseif cf=='Bk' then
			return ' в Бруклине'
		elseif cf=='Q' then
			return ' в Куинсе'
		elseif cf=='Bx' then
			return ' в Бронксе'
		end
	elseif field=='struc' then
		cf=c.struc
		if cf=='At Grade' then
			return 'наземная'
		elseif cf=='Elevated' or cf=='Viaduct' then
			return 'эстакадная'
		elseif cf=='Open Cut' then
			return 'в выемке'
		elseif cf=='Subway' then
			return 'подземная'
		end
	elseif field=='coord' then
		return frame:preprocess('{{coord|'..c.lat..'|'..c.lon..'|region:US_type:railwaystation}}')
	elseif field=='id' then
		return c.id
	end
end
function p.former_data(frame)
	station=getArgs(frame)[1]
	field=getArgs(frame)[2]
	for n,x in pairs(stations_former) do
		if x.station==station then
			if field=='boro' then
				cf=x.boro
				if cf=='M' then
					return '[[Манхэттен]]'
				elseif cf=='B' then
					return '[[Бруклин]]'
				elseif cf=='Q' then
					return '[[Куинс]]'
				elseif cf=='Bx' then
					return '[[Бронкс]]'
				end
			elseif field=='opened' then
				return x.opened
			elseif field=='closed' then
				return x.closed
			elseif field=='struc' then
				if x.struc then
					return x.struc
				else
					return 'эстакадная'
				end
			end
		end
	end
end
function p.station_eng(frame)
	station=getArgs(frame)[1]
	period=getArgs(frame)[2]
	if period=='future' then
		for n,x in pairs(stations_future) do
			if x.station==station then
				return x.eng
			end
		end
		return ''
	elseif period=='former' then
		for n,x in pairs(stations_former) do
			if x.station==station then
				return x.eng
			end
		end
		return ''
	end
	local tw=twins[station]
	if tw then
		return tw.eng
	end
	for n0,x0 in pairs(station_parts(station)) do
		csta=x0
		for n,x in pairs(stations) do
			if x.station==csta then
				return x.eng
			end
		end
	end
end
function p.complex_ridership(frame)
	article=getArgs(frame)[1]
	local tmp
	for n00,x00 in pairs(station_complexes) do
		if x00.article==article then
			if alt_ok(x00) then
				csta=x00.station
				for n,x in pairs(stations) do
					if x.station==csta then
						tmp=rider(x,frame,'complex')
						if tmp~='ERROR' then
							return tmp
						end
					end
				end
			end
		end
	end
	return tmp
end
function p.station_ridership(frame)
	station=getArgs(frame)[1]
	for n0,x0 in pairs(station_parts(station)) do
		csta=x0
		for n,x in pairs(stations) do
			if x.station==csta then
				return rider(x,frame,'station')
			end
		end
	end
end
function p.route_descr(frame)
	route=getArgs(frame)[1]
	return routes[route].descr
end
function p.route_color(frame)
	route=getArgs(frame)[1]
	return routes[route].color
end
function p.route_schedule(frame)
	route=getArgs(frame)[1]
	local r=routes[route]
	if r then
		local rtn=r.schedule
		if rtn then
			return 'https://new.mta.info/document/'..rtn
		else
			return ''
		end
	else
		return ''
	end
end
function p.station_connections(frame)
	station=getArgs(frame)[1]
	period=getArgs(frame)[2]
	if period=='future' then
		for n,x in pairs(stations_future) do
			if x.station==station then
				return x.conn
			end
		end
		return ''
	elseif period=='former' then
		for n,x in pairs(stations_former) do
			if x.station==station then
				return x.transfer
			end
		end
		return ''
	end
	local tw=twins[station]
	if tw then
		station=tw.station1
	end
	sta_ext=station
	alt_on=alt_exist()
	for n,x in pairs(station_complexes) do
		if x.section~='' then
			if alt_ok(x) then
				if x.station==station then
					return '' --для станций, входящих в узел, на уровне станции не показываем ничего
				elseif x.article==station then
					sta_ext=x.station --если передан узел, для внешних пересадок берём данные из одной из его станций
					break
				end
			end
		end
	end
	local s=station_connections(sta_ext)
	local t=''
	local found=false
	for n,x in pairs(station_complexes) do
		if alt_ok(x,true) and x.section=='' then
			if x.station==station then
				if string.len(x.article)==1 then
					for nn,xx in pairs(station_complexes) do
						if xx.article==x.article and xx.station~=x.station then
							t=t..one_conn(t,xx.station,xx.alt,xx.periods,frame)
						end
					end
				else
					t=t..one_conn(t,x.article,x.alt,x.periods,frame)
				end
				found=true
			elseif x.article==station then
				t=t..one_conn(t,x.station,x.alt,x.periods,frame)
				found=true
			end
			if found then
				break
			end
		end
	end
	if s~='' and t~='' then
		return s..'<br>'..t
	else
		return s..t
	end
end
function one_conn(t,sta,alt,periods,frame)
	local rtn=t
	if t~='' then
		rtn=rtn..'<br>'
	end
	rtn=rtn..netto(sta,'link')
	if periods==nil then
		rtn=rtn..frame:preprocess(metrocard)
	end
	rtn=rtn..alt_text(alt,'+','<br>(',')','',frame)
	if periods then
		rtn=rtn..'<sup>'..icons[periods]('icon',8)..'</sup>'
	end
	return rtn
end
function p.all_stations(frame)
	local pics={}
	odd=true
	for n,x in pairs(getArgs(frame)) do
		if odd then
			sta=x
		else
			pics[sta]=x
		end
		odd=not odd
	end
	local list={}
	for n,x in pairs(stations) do
		found=false
		sta=x.station
		for n0,x0 in pairs(multiline_stations) do
			if x.station==x0.part then
				found=true
				sta=x0.full
			end
		end
		rtn1='| <b>'..netto(sta,'link')..'</b><br>[[английский язык|англ.]]&nbsp;<i>'..x.eng..'</i>\r\n|'..acc_cell(x.acc)..'\r\n'
		local arr={}
		if found then
			rtn2=''
			for n0,x0 in pairs(multiline_stations) do
				if sta==x0.full then
					if rtn2~='' then
						rtn2=rtn2..'<br>'
					end
					rtn2=rtn2..line(x0.part)
					for n00,x00 in pairs(stations) do
						if x00.station==x0.part then
							arr=station_list_once_given(arr,x0.part,nil,nil,nil,x00.segment,x00.type,x00.sep)
						end
					end
				end
			end
		else
			rtn2=line(sta)
			arr=station_list_once_given(arr,sta,nil,nil,nil,x.segment,x.type,x.sep)
		end
		rtn3='| '..arr_text(arr,'full')..'\r\n'
		s=station_transfers(sta,'full small',nil,frame,nil,true)
		if x.conn then
			t=x.conn
		else
			t=''
		end
		if s=='' then
			if t=='' then
				rtn3=rtn3..'| —\r\n'
			else
				rtn3=rtn3..'| style="text-align:left;" |'..t..'\r\n'
			end
		else
			rtn3=rtn3..'| style="text-align:left;" |\r\n'..inner_table('',s,t)..'\r\n'
		end
		if x.orig then
			rtn3=rtn3..'| '..x.orig..'<br><small><span class="nowrap">(в составе метро</span> <span class="nowrap">с '..x.opened..')</span></small>'
		else
			rtn3=rtn3..'| '..x.opened
		end
		rtn3=rtn3..'\r\n| '..rider(x,frame,'list')..'\r\n| '
		if pics[sta] then
			rtn3=rtn3..pics[sta]..'\r\n'
		else
			rtn3=rtn3..badparams..'\r\n'
		end
		pos=string.find(sta,' ',1,true)
		if string.find(sta,'-я',1,true)==3 then
			key='0'..sta
		elseif string.find(sta,'Первая ',1,true)==1 then
			key='001-я'..string.sub(sta,pos,string.len(sta))
		elseif string.find(sta,'Вторая ',1,true)==1 then
			key='002-я'..string.sub(sta,pos,string.len(sta))
		elseif string.find(sta,'Третья ',1,true)==1 then
			key='003-я'..string.sub(sta,pos,string.len(sta))
		elseif string.find(sta,'Четвёртая ',1,true)==1 then
			key='004-я'..string.sub(sta,pos,string.len(sta))
		elseif string.find(sta,'Пятая ',1,true)==1 then
			key='005-я'..string.sub(sta,pos,string.len(sta))
		elseif string.find(sta,'Шестая ',1,true)==1 then
			key='006-я'..string.sub(sta,pos,string.len(sta))
		elseif string.find(sta,'Седьмая ',1,true)==1 then
			key='007-я'..string.sub(sta,pos,string.len(sta))
		elseif string.find(sta,'Восьмая ',1,true)==1 then
			key='008-я'..string.sub(sta,pos,string.len(sta))
		elseif string.find(sta,'Девятая ',1,true)==1 then
			key='009-я'..string.sub(sta,pos,string.len(sta))
		else
			key=sta
		end
		list[sta]={key=key,bkg=arr_text(arr,'bkg'),row=rtn1..'| '..rtn2..'\r\n'..rtn3}
	end
	list0={}
	for n,x in pairs(list) do
		table.insert(list0, x)
	end
	table.sort(list0, function(a,b) return a.key<b.key end)
	rtn1=''
	rtn2=''
	rtn3=''
	num=0
	part=1
	for n,x in pairs(list0) do
		num=num+1
		delta='|- style="background-color:#'..x.bkg..'"\r\n| <b>'..num..'</b>\r\n| '..x.row
		if part==1 then
			rtn1=rtn1..delta
			if string.len(rtn1)>260000 then
				part=2
			end
		elseif part==2 then
			rtn2=rtn2..delta
			if string.len(rtn2)>260000 then
				part=3
			end
		else
			rtn3=rtn3..delta
		end
	end
	return rtn1..rtn2..rtn3
end
function p.station_prose0(frame)
	station=getArgs(frame)[1]
	local tw=twins[station]
	return station_prose0(station,tw)
end
function station_prose0(station,tw)
	local list={}
	cou=0
	for n,x in pairs(multiline_stations) do
		if x.full==station then
			list[x.part]=x.part
			cou=cou+1
		end
	end
	if cou==0 then
		list[station]=station
	end
	rtn1=''
	rtn2='линиях'
	num=1
	for n0,x0 in pairs(list) do
		if tw then
			rtn1='<b>«'..netto(station,'text')..'»</b> ([[английский язык|англ.]]&nbsp;<i>'..tw.eng..'</i>) — две станции [[Нью-Йоркский метрополитен|Нью-Йоркского метрополитена]], расположенные на двух ветках '
		else
			for n,x in pairs(stations) do
				if x.station==x0 and rtn1=='' then
					rtn1='<b>«'..netto(station,'text')..'»</b> ([[английский язык|англ.]]&nbsp;<i>'..x.eng..'</i>) — станция [[Нью-Йоркский метрополитен|Нью-Йоркского метрополитена]], расположенная на '
				end
			end
		end
		if rtn1=='' then
			return nostation
		end
		l=line_netto(x0)
		if cou==0 then
			return rtn1..line_link(l,'линии ')..'.'
		end
		rtn2=rtn2..' '..line_link(l,'')
		if num==cou then
			rtn2=rtn2..'.'
		else
			rtn2=rtn2..','
		end
		if num==cou-1 then
			rtn2=rtn2..' и'
		end
		num=num+1
	end
	return rtn1..rtn2
end
function p.segment_regimes(frame)
	local aa=getArgs(frame)
	seg=aa[1]
	title=aa[2]
	exptracks='-пути'
	if aa[3] then
		exptracks='-путь'
	end
	exp={}
	lcl={}
	sks={}
	note=false
	noteplus=false
	for n,x in pairs(routes_periods) do
		if x.segment==seg then
			if alt_ok(x) then
				txt=routes[x.route]('bullet',20)
				if x.dir=='1' or x.dir=='2' then
					subp=subperiod1(x.period,x.dir)
					if subp then
						txt=txt..subp
					end
				end
				if x.how=='x' then
					if x.dir=='peak' then
						exp[x.period]=add2elem(exp[x.period],txt)..markpeak
						lcl[x.period]=add2elem(lcl[x.period],txt)..markback
						note=true
					elseif x.dir=='peak+' then
						exp[x.period]=add2elem(exp[x.period],txt)..asterisk
						noteplus=true
					elseif x.dir=='peakonly' then
						exp[x.period]=add2elem(exp[x.period],txt)..markpeak
						note=true
					elseif x.dir=='notpeakonly' then
						exp[x.period]=add2elem(exp[x.period],txt)..markback
						note=true
					else
						exp[x.period]=add2elem(exp[x.period],txt)
					end
				elseif x.how==nil then
					if x.dir=='peak+' then
						lcl[x.period]=add2elem(lcl[x.period],txt)..asterisk
						noteplus=true
					elseif x.dir=='peakonly' then
						lcl[x.period]=add2elem(lcl[x.period],txt)..markpeak
						note=true
					elseif x.dir=='notpeakonly' then
						lcl[x.period]=add2elem(lcl[x.period],txt)..markback
						note=true
					else
						lcl[x.period]=add2elem(lcl[x.period],txt)
					end
				else
					if x.dir=='peak' then
						sks[x.period]=add2elem(sks[x.period],txt)..markpeak
						lcl[x.period]=add2elem(lcl[x.period],txt)..markback
						note=true
					elseif x.dir=='peak+' then
						sks[x.period]=add2elem(sks[x.period],txt)..asterisk
						noteplus=true
					elseif x.dir=='peakonly' then
						sks[x.period]=add2elem(sks[x.period],txt)..markpeak
						note=true
					elseif x.dir=='notpeakonly' then
						sks[x.period]=add2elem(sks[x.period],txt)..markback
						note=true
					else
						sks[x.period]=add2elem(sks[x.period],txt)
					end
				end
			end
		end
	end
	eq1=qq(exp['rh'],exp['md']) and qq(lcl['rh'],lcl['md']) and qq(sks['rh'],sks['md'])
	eq2=qq(exp['md'],exp['ev']) and qq(lcl['md'],lcl['ev']) and qq(sks['md'],sks['ev'])
	eq3=qq(exp['ev'],exp['we']) and qq(lcl['ev'],lcl['we']) and qq(sks['ev'],sks['we'])
	eq4=qq(exp['we'],exp['ln']) and qq(lcl['we'],lcl['ln']) and qq(sks['we'],sks['ln'])
	local rtn=tab..' class="standard" style="'..whiteback..'"\r\n|-\r\n!style="line-height:80%;"|'
	if title=='auto' then
		first=''
		last=''
		for n,x in pairs(stations) do
			if x.segment==seg then
				if first=='' then
					first=x.station
				end
				last=x.station
			end
		end
		rtn=rtn..'<small>'..netto(first,'text')
		if first~=last then
			rtn=rtn..' —<br>'..netto(last,'text')
		end
		rtn=rtn..'</small>'
	elseif title~=nil and title~='' then
		rtn=rtn..'<small>'..title..'</small>'
	end
	rtn=rtn..'\r\n!'..period_captions(eq1,eq2,eq3,eq4)..'\r\n'
	if exp.rh~=nil or exp.md~=nil or exp.ev~=nil or exp.we~=nil or exp.ln~=nil then
		rtn=rtn..'|-\r\n! Экспресс'..exptracks..'\r\n'..period_cells(eq1,eq2,eq3,eq4,exp,'',true)
	else
		for n,x in pairs(stations) do
			if x.segment==seg and x.type=='o' then
				rtn=rtn..'|-\r\n! Экспресс'..exptracks..'\r\n'..period_cells(eq1,eq2,eq3,eq4,exp,'',true)
				break
			end
		end
	end
	if sks.rh~=nil or sks.md~=nil or sks.ev~=nil or sks.we~=nil or sks.ln~=nil then
		rtn=rtn..'|-\r\n! Локальные пути в режиме [[скип-стоп]]\r\n'..period_cells(eq1,eq2,eq3,eq4,sks,'',true)
		rtn=rtn..'|-\r\n! Локальные пути со всеми остановками\r\n'..period_cells(eq1,eq2,eq3,eq4,lcl,'',true)
	else
		rtn=rtn..'|-\r\n! Локальные пути\r\n'..period_cells(eq1,eq2,eq3,eq4,lcl,'',true)
	end
	if note or noteplus then
		rtn=rtn..'|-\r\n|colspan='..(span_count(eq1,eq2,eq3,eq4)+1)..'| <small>'
		if note then
			rtn=rtn..markpeak..' — в [[Список маршрутов Нью-Йоркского метрополитена#Терминология|пиковом направлении]]; '..markback..' — в обратном пиковому'
		end
		if noteplus then
			if note then
				rtn=rtn..';<br>'..asterisk..' — в пиковом направлении, часть рейсов'
			else
				rtn=rtn..asterisk..' — в [[Список маршрутов Нью-Йоркского метрополитена#Терминология|пиковом направлении]], часть рейсов'
			end
		end
		rtn=rtn..'</small>\r\n'
	end
	return rtn..'|}'
end
function p.station_expressinuse(frame)
	local aa=getArgs(frame)
	local station=aa[1]
	local ifyes=aa[2]
	if ifyes==nil then
		ifyes=''
	end
	local ifno=aa[3]
	if ifno==nil then
		ifno=''
	end
	if station=='+' then
		return ifyes
	end
	if station=='-' then
		return ifno
	end
	local seg=''
	for n,x in pairs(stations_all()) do
		if x.station==station then
			seg=x.segment
		end
	end
	if seg=='' then
		return ifno..badparams
	end
	for n,x in pairs(routes_periods) do
		if x.how=='x' and x.segment==seg then
			return ifyes
		end
	end
	return ifno
end
function p.station_terminalinuse(frame)
	local aa=getArgs(frame)
	local station=aa[1]
	local ifyes=aa[2]
	if ifyes==nil then
		ifyes=''
	end
	local ifno=aa[3]
	if ifno==nil then
		ifno=''
	end
	if station=='+' then
		return ifyes
	end
	if station=='-' then
		return ifno
	end
	arr={}
	for n,x in pairs(station_parts(station)) do
		arr=station_list_once(arr,x)
		multiline=x~=station
	end
	if arr==nil then
		return ifno..badparams
	end
	arrarr_n={}
	arrarr_s={}
	for n,x in pairs(arr) do
		fill_terminals(x.route,arrarr_n,arrarr_s,station,multiline)
	end
	if aa[4]=='n' then
		if arrarr_n[station] then
			return ifyes
 		else
			return ifno
		end
	elseif aa[4]=='s' then
		if arrarr_s[station] then
			return ifyes
 		else
			return ifno
		end
	else
		if arrarr_n[station]~=nil or arrarr_s[station]~=nil then
			return ifyes
 		else
			return ifno
		end
	end
end
function p.station_terminalonly(frame)
	local aa=getArgs(frame)
	local station=aa[1]
	arr={}
	for n,x in pairs(station_parts(station)) do
		arr=station_list_once(arr,x)
		multiline=x~=station
	end
	if arr==nil then
		return ''
	end
	local a=arr_text(arr,'full')
	arrarr_n={}
	arrarr_s={}
	for n,x in pairs(arr) do
		fill_terminals(x.route,arrarr_n,arrarr_s,station,multiline)
	end
	local n=''
	if arrarr_n[station] then
		n=arr_text(arrarr_n[station].arr,'full')
	end
	local s=''
	if arrarr_s[station] then
		s=arr_text(arrarr_s[station].arr,'full')
	end
	if a==n then
		return 'n'
	elseif a==s then
		return 's'
	else
		return ''
	end
end
function p.legend(frame)
	local icons0={}
	for n,x in pairs(icons) do
		if x.num then
			table.insert(icons0, x)
		end
	end
	table.sort(icons0, function(a,b) return a.num<b.num end)
	local rtn=''
	for n,x in pairs(icons0) do
		rtn=rtn..': [[Файл:NYCS-SSI-'..x.icon..'.svg|link=]] &nbsp; '
		if x.legend then
			rtn=rtn..x.legend..'\r\n'
		else
			rtn=rtn..x.tooltip..'\r\n'
		end
	end
	return rtn
end
function p.seg2color(frame)
	local aa=getArgs(frame)
	local seg1=aa[1]
	local seg2=aa[2]
	local rtn
	local rtn1='000000'
	local rtn2='000000'
	for n,x in pairs(stations) do
		if x.segment==seg1 then
			rtn=lines[line_netto(x.station)]
			if rtn then
				rtn1=rtn.color
			end
		end
	end
	if seg2 then
		for n,x in pairs(stations) do
			if x.segment==seg2 then
				rtn=lines[line_netto(x.station)]
				if rtn then
					rtn2=rtn.color
				end
			end
		end
		if rtn1==rtn2 then
			return rtn1
		else
			return '000000'
		end
	else
		return rtn1
	end
end
function p.seg_line(frame)
	local aa=getArgs(frame)
	local seg=aa[1]
	local line=aa[2]
	if line=='Железная дорога Статен-Айленда' then -- если станции SIR будут добавлены в таблицы, этот кусок надо будет убрать
		if seg=='SIR' then
			return 'x'
		else
			return ''
		end
	end
	for n,x in pairs(stations) do
		if x.segment==seg then
			if line_netto(x.station)==tolower(line) then
				return 'x'
			end
		end
	end
	return ''
end
function p.seg_route(frame)
	local aa=getArgs(frame)
	local seg=aa[1]
	local route=aa[2]
	if seg_route(seg,route,'') then
		return 'x'
	else
		return ''
	end
end
function seg_route(seg,route1,period)
	local route2=routes[route1].second
	if route2==nil then
		route2=''
	end
	for n,x in pairs(routes_periods) do
		if x.segment==seg then
			if period=='' or x.period==period then
				if x.route==route1 or x.route==route2 then
					if not(x.period=='also' or (x.period=='ln' and period=='') or (x.period=='rh' and x.dir=='peak+' and period=='') or (x.period=='we' and x.dir=='1' and period=='')) then
						if alt_ok(x) then
							return true
						end
					end
				end
			end
		end
	end
	return false
end
-- local functions
function alt_exist()
	for nnn,xxx in pairs(alts) do
		if xxx.number then
			return true --если один элемент с номером найден
		end
	end
	return false
end
function alt_text(val,prefix,t1,t2,t3,frame)
	local rtn=''
	for nnn,xxx in pairs(alts) do
		if xxx.relevant and (val==prefix..xxx.number or val=='all') then
			rtn=rtn..t1..frame:preprocess(xxx.text..'<ref name="'..xxx.refname..'">['..xxx.link..' '..xxx.title..']</ref>')..t2
		end
	end
	if rtn=='' then
		return rtn
	else
		return rtn..t3
	end
end
function alt_ok(x,ignore_lastalt)
	if x.future and not future_on then
		return false
	end
	local a=x.alt
	if a==nil then
		return true
	end
	for nnn,xxx in pairs(alts) do
		if a=='+'..xxx.number then
			if alt_on and not ignore_lastalt then
				xxx.relevant=true
			end
			return alt_on
		elseif a=='-'..xxx.number then
			if alt_on and not ignore_lastalt then
				xxx.relevant=true
			end
			return not alt_on
		end
	end
	return false
end
function const(param,frame)
	if param=='year' then -- год, в котором последний раз проверено, что скип-стоп только у маршрутов J/Z, а варианты с ромбом только у 6, 7 и F (если это изменится, пройти по статьям и исправить везде, где есть {{NYCS const|year}})
		return '2023'
	elseif param=='r_year' then -- год, на который приводится пассажиропоток
		return '2019'
	elseif param=='r_y' then -- годовой пассажиропоток
		return '1698 млн чел.'..frame:preprocess(r_link)
	elseif param=='r_d' then -- дневной пассажиропоток
		return '5,5 млн чел.'..frame:preprocess(r_link)
	elseif param=='stations' then -- количество станций, если считать по одной
		return '472'
	elseif param=='complexes' then -- количество станций, если считать каждый пересадочный узел за одну станцию
		return '424'
	elseif param=='r_complexes' then -- то же, на год пассажиропотока
		return '424'
	elseif param=='routes' then -- количество маршрутов
		return '29'
	elseif param=='lines' then -- количество линий
		return '36'
	elseif param=='complexes only' then -- количество пересадочных узлов
		return '32'
	else
		return ''
	end
end
function rider(x,frame,what)
	local o=ridership[x.r_key]
	local rtn
	if o==nil then
		return 'ERROR'
	end
	local tot=const('r_complexes')-0
	if what=='station text' and (x.r_ast or (o.rank>10 and o.rank~=tot)) then
		return ''
	end
	if what=='complex text' and (x.r_ast~=true or (o.rank>10 and o.rank~=tot)) then
		return ''
	end
	datum=tostring(o.r)
	rtn=datum:reverse():gsub("%d%d%d", "%1 "):reverse():gsub("^ ", "") -- https://love2d.org/forums/viewtopic.php?f=4&t=1802
	if what=='station text' or what=='complex text' then
		rtn=' место по пассажиропотоку: <span class="nowrap">'..rtn..'</span>'
		if o.rank==tot then
			rtn=' занимает последнее'..rtn
		else
			rtn=' занимает '..o.rank..'-е'..rtn
		end
		if what=='station text' then
			rtn=' На '..const('r_year')..' год станция'..rtn
		else
			rtn='\r\nНа '..const('r_year')..' год пересадочный узел'..rtn
		end
		last1=string.sub(datum,-1)
		last2=string.sub('0'..datum,-2)
		if last1=='1' and last2~='11' then
			rtn=rtn..' пассажир'
		elseif (last1=='2' and last2~='12') or (last1=='3' and last2~='13') or (last1=='4' and last2~='14') then
			rtn=rtn..' пассажира'
		else
			rtn=rtn..' пассажиров'
		end
		return rtn..' в год'..frame:preprocess(r_link)..'.'
	end
	if o.r==0 or o.prev==0 then
	elseif o.r>o.prev then
		rtn='<span style="color:#0C0;font-size:larger;">▲</span>'..rtn
	elseif o.r<o.prev then
		rtn='<span style="color:#F00;font-size:larger;">▼</span>'..rtn
	else
		rtn='<span style="color:#0AF;font-size:larger;">▬</span>'..rtn
	end
	if x.r_ast then
		if what=='station' then
			return ''
		end
		if what~='complex' then
			rtn=rtn..asterisk
		end
	end
	if what~='list' then
		rtn=rtn..'<br>('..o.rank..' из '..const('r_complexes')..')'
	end
	if what=='station' or what=='complex' then
		rtn=rtn..frame:preprocess(r_link)
	end
	if o.r==0 then
		ref='Станция весь год была закрыта.'
	elseif o.prev==0 then
		ref='Новая станция, по предыдущему году данных нет.'
	else
		ref=''
	end
	if o.comment then
		if ref=='' then
			ref=o.comment
		else
			ref=ref..' '..o.comment
		end
	end
	if ref~='' then
		rtn=rtn..frame:preprocess('<ref name="'..ref..'">'..ref..'</ref>')
	end
	return '<span class="nowrap">'..rtn..'</span>'
end
function add2elem(elem,txt)
	if elem then
		txt=elem..' '..txt
	end
	return txt
end
function two_segments(seg1,seg2,seg2a,fmt,ifno,withsta,typ1,typ2,typ2a)
	if seg2a=='x' or seg2a=='o' then
		seg2how=seg2a
		seg2a=''
	else
		seg2how=nil
	end
	if withsta==nil then
		typ1='x'
		typ2='x'
		typ2a='x'
	end
	arr={}
	for nn,xx in pairs(routes_sorted()) do
		for n,x in pairs({'rh','md','ev','we','ln'}) do
			how1=nil
			how2=nil
			how2a=nil
			for n0,x0 in pairs(routes_periods) do
				if x0.route==xx.id and x0.period==x then
					if alt_ok(x0) then
						if x0.segment==seg1 then
							how1=howstops(x0.how,x0.dir,typ1,x)
						end
						if seg2how=='x' then
							if x0.segment==seg2 and x0.how=='x' then
								how2=howstops(x0.how,x0.dir,typ2,x,'x')
							end
						elseif seg2how=='o' then
							if x0.segment==seg2 and (x0.how~='x' or x0.dir=='peak') then
								how2=howstops(x0.how,x0.dir,typ2,x,'o')
							end
						else
							if x0.segment==seg2 then
								how2=howstops(x0.how,x0.dir,typ2,x)
							end
						end
						if x0.segment==seg2a then
							how2a=howstops(x0.how,x0.dir,typ2a,x)
						end
					end
				end
			end
			for n0,x0 in pairs({how2,how2a}) do
				if how1==nil or x0==nil then
					how=nil
				elseif how1==x0 or x0=='' then
					how=how1
				elseif how1=='' then
					how=x0
				elseif (how1=='peak' and x0=='some peak') or (x0=='peak' and how1=='some peak') then
					how='some peak'
				elseif (how1=='1' and x0=='2') or (how1=='2' and x0=='1') then
					how=nil
				elseif how1=='1' or x0=='1' then
					how='1'
				elseif how1=='2' or x0=='2' then
					how='2'
				end
				if how then
					arr_add(arr,xx.id,x,how)
				end
			end
		end
	end
	rtn=arr_text(arr,fmt)
	if rtn=='' then
		return ifno
	else
		return rtn
	end
end
function fill_terminals(route,arrarr_n,arrarr_s,cursta,multiline)
	for nn,xx in pairs(subperiods) do
		period=xx.period
		subperiod=xx.subperiod
		seg_n=nil
		seg_s=nil
		dir_n=nil
		dir_s=nil
		how_n=''
		how_s=''
		fork_n=''
		for n,x in pairs(routes_periods) do
			if x.route==route and x.period==period then
				if alt_ok(x) then
					if subperiod_ok(subperiod,x.dir) then
						if x.fork=='south' then
							add_terminal(arrarr_n,route,period,seg_n,how_n,false,dir_n,subperiod,cursta,multiline)
							add_terminal(arrarr_s,route,period,seg_s,how_s,true,dir_s,subperiod,cursta,multiline)
						end
						if seg_n==nil then
							seg_n=x.segment
							dir_n=x.dir
							how_n=x.how
						end
						seg_s=x.segment
						dir_s=x.dir
						how_s=x.how
						fork_s=x.fork
						if x.fork=='north' then
							add_terminal(arrarr_n,route,period,seg_n,how_n,false,dir_n,subperiod,cursta,multiline)
	--						add_terminal(arrarr_s,route,period,seg_s,how_s,true,dir_s,subperiod,cursta,multiline)
							fork_n='north'
							seg_n=nil
							seg_s=nil
							dir_n=nil
							dir_s=nil
							how_n=''
							how_s=''
						end
					end
				end
			end				
		end
		if fork_s=='uturn' then
			if fork_n~='north' then
				add_terminal(arrarr_n,route,period,seg_s,how_s,true,dir_s,subperiod,cursta,multiline)
			end
			add_terminal(arrarr_s,route,period,seg_n,how_n,false,dir_n,subperiod,cursta,multiline)
		else
			add_terminal(arrarr_n,route,period,seg_n,how_n,false,dir_n,subperiod,cursta,multiline)
			add_terminal(arrarr_s,route,period,seg_s,how_s,true,dir_s,subperiod,cursta,multiline)
		end
	end
end
function text_terminals(arrarr,total_periods,small)
	cou=0
	for n,x in pairs(arrarr) do
		cou=cou+1
	end
	rtn=''
	for n,x in pairs(arrarr) do
		if rtn~='' then
			rtn=rtn..'<br>'
		end
		rtn=rtn..netto(x.station,'link')
		arrtext=arr_text(x.arr,'when')
		if arrtext~='' and (arrtext~=total_periods or cou>1) then
			if small then
				rtn=rtn..' <small>('..arrtext..')</small>'
			else
				rtn=rtn..' ('..arrtext..')'
			end
		end
	end
	return rtn
end
function build_route(route,route2,action,frame,article,period)
	local icon
	route_color=routes[route].color
	b1=routes[route]('bullet',20)
	if route2 then
		b2=routes[route2]('bullet',20)
	end
	if action=='lines list' or action=='lines lead' then
		rtn1=''
		rtn2=''
		pos1=0
		pos2=0
		if action=='lines lead' then
			delim=', '
			dot='.'
			prefix='линиям '
			cou=0
		else
			delim='; '
			dot=''
			prefix=''
		end
	elseif action=='regimes' then
		segs={}
		minseg=1000
		maxseg=0
		segs_empty=true
	else
		rtn1='|-\r\n'
		rtn2=''
		if action=='navtext' then
			rtn1='|- valign=top\r\n|'..b1..'\r\n|'
		elseif action=='nav' then
			rtn1=rtn1..'!nowrap style="font-size:90%" colspan='
			if route2 then
				rtn1=rtn1..'5|'..b1..b2..'\r\n'
			else
				rtn1=rtn1..'4|'..b1..'\r\n'
			end
		end
	end
	updown=false
	first=true
	pattern='o'
	if action=='route' then
		seg_first=''
		for n0,x0 in pairs(routes_periods) do
			if x0.route==route and (x0.period=='rh' or x0.period=='also') and not x0.except then
				if alt_ok(x0) then
					if seg_first=='' then
						seg_first=x0.segment
					end
					seg_last=x0.segment
				end
			end
		end
		if route2 then
			first2=''
			for n0,x0 in pairs(routes_periods) do
				if x0.route==route2 and (x0.period=='rh' or x0.period=='also') and not x0.except then
					if alt_ok(x0) then
						for n00,x00 in pairs(stations_all()) do
							if x00.segment==x0.segment then
								icon2=station_list_full(x00.station,'icons','eq',route2,nil)
								if icon2~='' then
									if first2=='' then
										first2=x00.station
									end
									last2=x00.station
								end
							end
						end
					end
				end
			end
			route2_active=false
		end
	end
	for n0,x0 in pairs(routes_periods) do
		if x0.route==route then
			if alt_ok(x0) then
				if (x0.period=='rh' or x0.period=='also') and not x0.except then
					if action=='route' then
						if x0.pattern then
							pattern=x0.pattern
						end
						if first then
							if pattern~='o' then
								rtn1=rtn1..'! colspan=2 |\r\n'
							else
								rtn1=rtn1..'!\r\n'
							end
							if route2 then
								rtn1=rtn1..'!'..b1..'\r\n!'..b2..'\r\n!Станция\r\n!'..acc_cell('yes')..'\r\n!Пересадки для '..b1..'\r\n!Пересадки для '..b2..'\r\n'
							else
								rtn1=rtn1..'!'..b1..'\r\n!Станция\r\n!'..acc_cell('yes')..'\r\n!Пересадки\r\n'
							end
							first=false
						end
					end
					sta_first=''
					for n,x in pairs(stations_all()) do
						if x.segment==x0.segment then
							if sta_first=='' then
								sta_first=x.station
							end
							sta_last=x.station
						end
					end
					if action=='regimes' then
						if x0.fork=='south' then
							if segs_empty then
								segs_empty=false
							elseif updown then
								minseg=minseg-1
							else
								maxseg=maxseg+1
							end
							if updown then
								segs['before '..x0.segment]={key=minseg}
							else
								segs['before '..x0.segment]={key=maxseg}
							end
						end
						if segs_empty then
							segs_empty=false
						elseif updown then
							minseg=minseg-1
						else
							maxseg=maxseg+1
						end
						local tt=false
						if sta_first==sta_last then
							for nn,xx in pairs(stations) do
								if xx.station==sta_first then
									tt=xx.subtype=='tt'
								end
							end
						end
						if x0.fullsta then
							sta_first=from_part(sta_first)
							sta_last=from_part(sta_last)
						end
						if updown then
							segs[x0.segment]={key=minseg,sta_first=sta_last,sta_last=sta_first,tt=tt}
						else
							segs[x0.segment]={key=maxseg,sta_first=sta_first,sta_last=sta_last,tt=tt}
						end
					else
						if x0.fork=='south' then
							rtn1=rtn1..wide_cell(action,route2)
						end
						for n,x in pairs(stations_all()) do
							if x.segment==x0.segment then
								tmp=''
								sta=x.station
								sta_real=from_part(sta)
								if x0.fullsta~=nil and action=='route' then
									sta=sta_real
								end
								if period then
									icon=icon_nostop
									icon2=icon_nostop
									for n00,x00 in pairs(routes_periods) do
										if x00.segment==x.segment and x00.period==period then
											if x00.route==route then
												icon=howstops2pic(howstops(x00.how,x00.dir,x.type,period),period)
											elseif x00.route==route2 then
												icon2=howstops2pic(howstops(x00.how,x00.dir,x.type,period),period)
											end
										end
									end
								else
									icon=station_list_full(sta,'icons','eq',route,nil)
									if route2 then
										icon2=station_list_full(sta,'icons','eq',route2,nil)
									end
								end
								if icon~='' or action=='route' then
									if action=='lines list' or action=='lines lead' then
										tmp=line_netto(sta)
										if action=='lines lead' then
											lookfor='[['..tmp..'|'
										else
											lookfor='[['..tmp..']]'
										end
										if string.find(rtn1,lookfor,1,true)~=nil or string.find(rtn2,lookfor,1,true)~=nil then
											tmp=''
										elseif action=='lines lead' then
											cou=cou+1
											if cou==1 then
												tmp_only=tmp
											end
											tmp=line_link(tmp,'')
										else
											color=''
											xx=lines[tmp]
											if xx then
												color=xx.color
											end
											tmp='[['..tmp..']]'
											if color==route_color then
												tmp='<span style="background-color:#'..color..'; border:1px solid #A9A9A9;">&nbsp;&nbsp;&nbsp;&nbsp;</span>&nbsp;'..tmp
											end
										end
									elseif action=='navtext' then
										tmp=tmp..' <span class="nowrap"><sup>'..icon..'</sup>'
										sta1=from_part(sta)
										sta2=to_complex(sta1)
										if sta2==article then
											tmp=tmp..'<b>'..netto(sta,'text')..'</b></span>'
										else
											tmp=tmp..'[['..sta2..to_complex_sec(sta1)..'|'..netto(sta,'text')..']]</span>'
										end
									else
										if x.future then
											tmp=tmp..'|- style="'..grayback..'"\r\n'
											a3=x.conn
										else
											tmp=tmp..'|-\r\n'
											a3=station_connections(sta_real)
										end
										if icon=='' or icon==icon_nostop then
											ith=1
										else
											if period then
												filter=period
											else
												filter=station_list_full(sta_real,'periods','eq',route,nil)
											end
											ith=station_transfers_count(sta_real,filter)
											if x.future then
												if x.conn then
													ith=ith+1
												end
											else
												if station_list_full(sta_real,'count letters full','ne',route,filter)~=0 then
													ith=ith+1
												end
												if a3~='' then
													ith=ith+1
												end
											end
										end
										if route2 then
											if icon2=='' or icon2==icon_nostop then
												ith2=1
											else
												if period then
													filter2=period
												else
													filter2=station_list_full(sta_real,'periods','eq',route2,nil)
												end
												ith2=station_transfers_count(sta_real,filter2)
												if station_list_full(sta_real,'count letters full','ne',route2,filter2)~=0 then
													ith2=ith2+1
												end
												if a3~='' then
													ith2=ith2+1
												end
												if ith2>ith then
													ith=ith2
												end
											end
										end
										icontoshow=icon
										if action=='route' then
											novert_n=sta==sta_first and (x0.novert_n~=nil or x0.segment==seg_first)
											novert_s=sta==sta_last and (x0.novert_s~=nil or (x0.segment==seg_last and x0.fork~='uturn'))
											circletoshow='O'
											if icon=='' or icon==icon_nostop then
												icontoshow=icon_nostop
												if icon2=='' or icon2==icon_nostop or route2==nil then
													circletoshow='OO'
												end
											end
											if x.note then
												icontoshow='<span class="nowrap">'..icon..x.note..'</span>'
											end
											tmp=tmp..twomosaics(pattern,route_color,circletoshow,ith,novert_n,novert_s)
										end
										if period then
											cellalign='|'
											others_format='one period'
										else
											cellalign='|align=center|'
											others_format='full small'
										end
										tmp=tmp..cellalign..icontoshow..'\r\n'
										if route2 then
											if sta==first2 then
												route2_active=true
											end
											if icon2=='' or icon2==icon_nostop then
												if route2_active then
													tmp=tmp..cellalign..icon_nostop..'\r\n'
												else
													tmp=tmp..'|\r\n'
												end
											else
												tmp=tmp..cellalign..icon2..'\r\n'
											end
											if sta==last2 then
												route2_active=false
											end
										end
										if action=='nav' then
											comp=to_complex(sta_real,true)
											if comp=='' then
												tmp=tmp..'|'..netto(sta_real,'link')..'\r\n'
											elseif comp==article then
												tmp=tmp..'|<b>'..netto(sta_real,'text')..'</b>\r\n'
											else
												tmp=tmp..'|[['..comp..to_complex_sec(sta_real)..'|'..netto(sta_real,'text')..']]\r\n'
											end
											tmp=tmp..'|'..acc_cell(x.acc)..'\r\n'
											tmp=tmp..'|nowrap|'..station_transfers_including(sta_real,comp,'bullets',route,route2)..'\r\n'
										else
											tmp=tmp..'|nowrap|'..ita1(x.future,true,false)..netto(sta,'link')..ita2(x.future)..'\r\n'
											tmp=tmp..'|'..acc_cell(x.acc)..'\r\n'
											if icon=='' or icon==icon_nostop then
												tmp=tmp..'|\r\n'
											else
												a1=station_list_full(sta_real,others_format,'ne',route,filter)
												a2=station_transfers(sta_real,others_format,filter,frame)
												if action=='route' then
													tmp=tmp..'| style="padding:0;margin:0;"|\r\n'..inner_table(a1,a2,a3)
												else
													tmp=tmp..'|\r\n'..inner_table(a1,a2,a3)
												end
											end
											if route2 then
												if icon2=='' or icon2==icon_nostop then
													tmp=tmp..'|\r\n'
												else
													a1=station_list_full(sta_real,others_format,'ne',route2,filter2)
													a2=station_transfers(sta_real,others_format,filter2,frame)
													if action=='route' then
														tmp=tmp..'| style="padding:0;margin:0;"|\r\n'..inner_table(a1,a2,a3)
													else
														tmp=tmp..'|\r\n'..inner_table(a1,a2,a3)
													end
												end
											end
										end
									end
								end
								if action=='lines list' or action=='lines lead' then
									if tmp~='' then
										if updown then
											if rtn2=='' then
												rtn2=tmp
											elseif rtn2~='' then
												if pos2==0 then
													pos2=string.len(tmp)
												else
													pos2=pos2+string.len(tmp..delim)
												end
												rtn2=tmp..delim..rtn2
											end
										else
											if rtn1=='' then
												rtn1=tmp
											elseif rtn1~='' then
												pos1=string.len(rtn1)
												rtn1=rtn1..delim..tmp
											end
										end
									end
								else
									if updown then
										rtn2=tmp..rtn2
									else
										rtn1=rtn1..tmp
									end
								end
							end
						end
					end
					if x0.joint then
						updown=true
					elseif x0.fork=='north' then
						if action=='regimes' then
							if segs_empty then
								segs_empty=false
							elseif updown then
								minseg=minseg-1
							else
								maxseg=maxseg+1
							end
							if updown then
								segs['after '..x0.segment]={key=minseg}
							else
								segs['after '..x0.segment]={key=maxseg}
							end
						else
							rtn1=rtn1..wide_cell(action,route2)
						end
					end
					if x0.shape~=nil and action=='route' then
						rtn1=rtn1..'|-\r\n'
						if x0.shape=='|\\' then
							rtn1=rtn1..mosaic(route_color,'N-SE',0,'r')
							rtn1=rtn1..mosaic(route_color,'SW',0,'l')
						elseif x0.shape=='|/' then
							rtn1=rtn1..mosaic(route_color,'S-NE',0,'r')
							rtn1=rtn1..mosaic(route_color,'NW',0,'l')
						elseif x0.shape=='\\|' then
							rtn1=rtn1..mosaic(route_color,'NE',0,'r')
							rtn1=rtn1..mosaic(route_color,'S-NW',0,'l')
						elseif x0.shape=='/|' then
							rtn1=rtn1..mosaic(route_color,'SE',0,'r')
							rtn1=rtn1..mosaic(route_color,'N-SW',0,'l')
						end
						if route2 then
							rtn1=rtn1..'|colspan=6|\r\n'
						else
							rtn1=rtn1..'|colspan=4|\r\n'
						end
					end
				end
				if action=='regimes' and x0.period~='also' and not x0.except then
					if x0.segment_subst then
						seg=x0.segment_subst
					else
						seg=x0.segment
					end
					if segs[seg] then
						segs[seg][x0.period]=how_descr(x0,route,segs[seg].tt)
					end
				end
			end
		end
		if action=='regimes' and x0.route==route2 and x0.period~='also' and not x0.except then
			if alt_ok(x0) then
				if x0.segment_subst then
					seg=x0.segment_subst
				else
					seg=x0.segment
				end
				if segs[seg] then
					segs[seg][x0.period..'2']=how_descr(x0,route2,segs[seg].tt)
				end
			end
		end
	end
	if action=='lines list' or action=='lines lead' then
		if action=='lines lead' and cou==1 then
			return line_link(tmp_only,'линии ')..dot
		else
			if rtn1=='' or rtn2=='' then
				if pos2>0 then
					pos1=pos2
				end
				rtn1=rtn1..rtn2..dot
			else
				if pos2>0 then
					pos1=pos2+string.len(rtn1..delim)
				else
					pos1=string.len(rtn1)
				end
				rtn1=rtn1..delim..rtn2..dot
			end
			if action=='lines lead' then
				rtn1=string.sub(rtn1,1,pos1)..', и '..string.sub(rtn1,pos1+3,string.len(rtn1))
			end
			return prefix..rtn1
		end
	elseif action=='regimes' then
		segs0={}
		for n,x in pairs(segs) do
			table.insert(segs0, x)
		end
		table.sort(segs0, function(a,b) return a.key<b.key end)
		finger=nil
		for n,x in pairs(segs0) do
			equal=false
			if finger then
				equal=x.rh==finger.rh and x.md==finger.md and x.ev==finger.ev and x.we==finger.we and x.ln==finger.ln
				if route2 then
					equal=equal and x.rh2==finger.rh2 and x.md2==finger.md2 and x.ev2==finger.ev2 and x.we2==finger.we2 and x.ln2==finger.ln2
				end
			end
			if equal then
				finger.sta_last=x.sta_last
				x.ignore=true
			else
				finger=x
			end
		end
		eq1=true
		eq2=true
		eq3=true
		eq4=true
		eq5=true
		eq6=true
		eq7=true
		eq8=true
		for n,x in pairs(segs0) do
			if x.ignore==nil then
				if not qq(x.rh,x.md) then eq1=false end
				if not qq(x.md,x.ev) then eq2=false end
				if not qq(x.ev,x.we) then eq3=false end
				if not qq(x.we,x.ln) then eq4=false end
				if route2 then
					if not qq(x.rh2,x.md2) then eq5=false end
					if not qq(x.md2,x.ev2) then eq6=false end
					if not qq(x.ev2,x.we2) then eq7=false end
					if not qq(x.we2,x.ln2) then eq8=false end
				end
			end
		end
		if route2 then
			rtn='!rowspan=2 style="line-height:80%;"| От станции<small><br>включительно</small>\r\n!rowspan=2 style="line-height:80%;"| До станции<small><br>включительно</small>'
			span=span_count(eq1,eq2,eq3,eq4)
			if span==1 then
				rtn=rtn..'\r\n!'..b1
			else
				rtn=rtn..'\r\n!colspan='..span..'|'..b1
			end
			span=span_count(eq5,eq6,eq7,eq8)
			if span==1 then
				rtn=rtn..'\r\n!'..b2
			else
				rtn=rtn..'\r\n!colspan='..span..'|'..b2
			end
			rtn=rtn..'\r\n|-\r\n!'
		else
			rtn='!style="line-height:80%;"| От станции<small><br>включительно</small>\r\n!style="line-height:80%;"| До станции<small><br>включительно</small>\r\n!'
		end
		rtn=rtn..period_captions(eq1,eq2,eq3,eq4)
		if route2 then
			rtn=rtn..'\r\n!'..period_captions(eq5,eq6,eq7,eq8)
		end
		rtn=rtn..'\r\n'
		for n,x in pairs(segs0) do
			if x.ignore==nil then
				rtn=rtn..'|-\r\n'
				if x.sta_first then
					if x.sta_first==x.sta_last then
						rtn=rtn..'!colspan=2|'..ita1(future_on,true,false)..netto(x.sta_first,'link')..ita2(future_on)..'\r\n'
					else
						rtn=rtn..'!align=left|'..ita1(future_on,true,false)..netto(x.sta_first,'link')..ita2(future_on)..'\r\n'
						rtn=rtn..'!align=left|'..ita1(future_on,true,false)..netto(x.sta_last,'link')..ita2(future_on)..'\r\n'
					end
					rtn=rtn..period_cells(eq1,eq2,eq3,eq4,x,'',false)
					if route2 then
						rtn=rtn..period_cells(eq5,eq6,eq7,eq8,x,'2',false)
					end
				else
					rtn=rtn..'!colspan=12|\r\n'
				end
			end
		end
		return rtn
	elseif action=='navtext' then
		return rtn1..rtn2..'\r\n'
	else
		return rtn1..rtn2
	end
end
function qq(aa,bb)
	local a=nil
	if aa then
		a=string.gsub(aa,' %(до 23:00%)','')
		a=string.gsub(a,'%(до 23:00%)','')
	end
	local b=nil
	if bb then
		b=string.gsub(bb,' %(до 23:00%)','')
		b=string.gsub(b,'%(до 23:00%)','')
	end
	return a==b
end
function span_count(eq1,eq2,eq3,eq4)
	local span=5
	if eq1 then span=span-1 end
	if eq2 then span=span-1 end
	if eq3 then span=span-1 end
	if eq4 then span=span-1 end
	return span
end
function period_captions(eq1,eq2,eq3,eq4)
	local rtn
	if eq2 and eq3 then
		if eq1 and eq4 then
			rtn=' Круглосуточно'
		elseif eq4 then
			rtn=' Часы пик\r\n! Остальное время'
		elseif eq1 then
			rtn='style="line-height:80%;"| <small>День + вечер<br>+ выходные</small>\r\n! Ночь'
		else
			rtn=' Часы пик\r\n!style="line-height:80%;"| <small>День (кроме часов пик)<br>+ вечер + выходные</small>\r\n! Ночь'
		end
	else
		if eq1 then
			rtn=' День'
		else
			rtn=' Часы пик\r\n! День (кроме часов пик)'
		end
		if eq3 and eq4 then
			rtn=rtn..'\r\n! Остальное время'
		else
			rtn=rtn..period_caption(eq2,'Вечер','вечер')
			rtn=rtn..period_caption(eq3,'Выходные','выходные')
			rtn=rtn..period_caption(eq4,'Ночь','ночь')
		end
	end
	return rtn
end
function period_caption(eq,periodU,periodL)
	if eq then
		return ' + '..periodL
	else
		return '\r\n! '..periodU
	end
end
function period_cells(eq1,eq2,eq3,eq4,a,n,small)
	local rtn=''
	rtn=rtn..period_cell(eq1,a['rh'..n],small)
	rtn=rtn..period_cell(eq2,a['md'..n],small)
	rtn=rtn..period_cell(eq3,a['ev'..n],small)
	rtn=rtn..period_cell(eq4,a['we'..n],small)
	rtn=rtn..period_cell(false,a['ln'..n],small)
	return rtn
end
function period_cell(eq,data,small)
	if eq then
		return ''
	elseif data then
		if small then
			return '|<span class="nowrap"><small>'..data..'</small></span>\r\n'
		else
			return '|'..data..'\r\n'
		end
	else
		return '| <span title="нет движения поездов">—</span>\r\n'
	end
end
function how_descr(x0,route,tt)
	local skipstop=false
	if x0.how==nil then
		s='локальные пути'
	elseif x0.how=='x' then
		if tt then
			s='оборотный путь'
		else
			s='экспресс'
			if (x0.dir=='peak') or (x0.dir=='peakonly' and routes[route].onedir) then
				s=s..'-путь'
			else
				s=s..'-пути'
			end
		end
	else
		s='локальные пути в режиме [[скип-стоп]]'
		skipstop=true
	end
	if x0.dir=='peak' then
		if skipstop then
			s='локальные пути: в пиковом направлении в режиме [[скип-стоп]], в обратном со всеми остановками'
		else
			s=s..' в пиковом направлении, локальный путь в обратном'
		end
	elseif x0.dir=='peakonly' then
		s=s..'; только в пиковом направлении'
	elseif x0.dir=='peak+' then
		s=s..'; только в пиковом направлении (часть рейсов)'
	elseif x0.dir=='notpeakonly' then
		s=s..'; только в направлении, обратном пиковому'
	elseif x0.dir=='1' or x0.dir=='2' then
		subp=subperiod1(x0.period,x0.dir)
		if subp then
			s=s..' '..subp
		end
	end
	return s
end
function subperiod1(period,param)
	if param=='1' then
		if period=='rh' then
			return '(часть рейсов)'
		elseif period=='ev' then
			return '(до 23:00)'
		elseif period=='we' then
			return '(только летом)'
		elseif period=='ln' then
			return '(в будни)'
		else
			return nil
		end
	else
		if period=='rh' then
			return '(большинство рейсов)'
		elseif period=='ev' then
			return '(после 23:00)'
		elseif period=='we' then
			return '(кроме лета)'
		elseif period=='ln' then
			return '(в выходные)'
		else
			return nil
		end
	end
end
function wide_cell(action,route2)
	if action=='nav' then
		if route2 then
			return '|- style="'..grayback..'"\r\n|colspan=6|\r\n'
		else
			return '|- style="'..grayback..'"\r\n|colspan=4|\r\n'
		end
	elseif action=='navtext' then
		return ' <b>|</b> '
	else
		return ''
	end
end
function mosaic(route_color,file,ith,openside,novert_n,novert_s)
	h20='|- style="height:20px;"\r\n|[[File:SMicon NS.svg|link=]]\r\n'
	h10='|- style="height:10px;"\r\n|<div style="padding:0;margin:0;height:10px;overflow-y:hidden;">[[File:SMicon NS.svg|link=]]</div>\r\n'
	if openside=='l' then
		border=bor0('left')
	elseif openside=='r' then
		border=bor0('right')
	else
		border=''
	end
	if ith==2 then
		tmp=h10
		tmp_novert='|- style="height:10px;'..whiteback..'"\r\n|\r\n'
	elseif ith==3 then
		tmp=h20
		tmp_novert='|- style="height:20px;'..whiteback..'"\r\n|\r\n'
	elseif ith==4 then
		tmp=h20..h10
		tmp_novert='|- style="height:30px;'..whiteback..'"\r\n|\r\n'
	elseif ith==5 then
		tmp=h20..h20
		tmp_novert='|- style="height:40px;'..whiteback..'"\r\n|\r\n'
	elseif ith==6 then
		tmp=h20..h20..h10
		tmp_novert='|- style="height:50px;'..whiteback..'"\r\n|\r\n'
	elseif ith==7 then
		tmp=h20..h20..h20
		tmp_novert='|- style="height:60px;'..whiteback..'"\r\n|\r\n'
	elseif ith==8 then
		tmp=h20..h20..h20..h10
		tmp_novert='|- style="height:70px;'..whiteback..'"\r\n|\r\n'
	elseif ith==9 then
		tmp=h20..h20..h20..h20
		tmp_novert='|- style="height:80px;'..whiteback..'"\r\n|\r\n'
	else
		tmp=''
		tmp_novert=''
	end
	if novert_n then
		tmp_n=tmp_novert
	else
		tmp_n=tmp
	end
	if novert_s then
		tmp_s=tmp_novert
	else
		tmp_s=tmp
	end
	return '| style="padding:0;margin:0;'..border..'"|\r\n'..tab..' style="background-color:#'..route_color..';padding:0;margin:0;width:0;"\r\n'..tmp_n..'|- style="height:20px;"\r\n|[[File:SMicon '..file..'.svg|link=]]\r\n'..tmp_s..'|}\r\n'
end
function twomosaics(pattern,route_color,pic,ith,novert_n,novert_s)
	local tmp=''
	if pattern=='o' then
		tmp=tmp..mosaic(route_color,pic,ith,'',novert_n,novert_s)
	elseif pattern=='o ' then
		tmp=tmp..mosaic(route_color,pic,ith,'r',novert_n,novert_s)
		tmp=tmp..'| style="'..bor0('left')..'" |\r\n'
	elseif pattern==' o' then
		tmp=tmp..'| style="'..bor0('right')..'" |\r\n'
		tmp=tmp..mosaic(route_color,pic,ith,'l',novert_n,novert_s)
	elseif pattern=='o|' then
		tmp=tmp..mosaic(route_color,pic,ith,'r',novert_n,novert_s)
		tmp=tmp..mosaic(route_color,'NS',ith,'l')
	elseif pattern=='|o' then
		tmp=tmp..mosaic(route_color,'NS',ith,'r')
		tmp=tmp..mosaic(route_color,pic,ith,'l',novert_n,novert_s)
	end
	return tmp
end
function inner_table(a1,a2,a3)
	if a3==nil then
		a3=''
	end
	-- a1 - маршруты, на которые можно пересесть на той же станции (на той же платформе или на других) 
	-- a2 - строки таблицы по остальным станциям пересадочного узла, где в первой клетке маршруты на станции, а во второй название станции
	-- a3 - пересадки вне метрополитена
	--if a2=='' and (a1=='' or a3=='') then
	--	return '<span class="nowrap">'..a1..a3..'</span>\r\n'
	--end
	rtn=tab..'\r\n'
	if a2=='' then
		if a1=='' and a3=='' then
			return ''
		end
		if a1~='' then
			rtn=rtn..'|-\r\n|nowrap|'..a1..'\r\n'
		end
		if a3~='' then
			rtn=rtn..'|-\r\n|nowrap style="height:20px;"|'..a3..'\r\n'
		end
	else
		if a1~='' then
			rtn=rtn..'|-\r\n|nowrap|'..a1..'\r\n|nowrap|<i><small>на той же станции</small></i>\r\n'
		end
		rtn=rtn..a2
		if a3~='' then
			rtn=rtn..'|-\r\n|colspan=2 nowrap style="height:20px;"|'..a3..'\r\n'
		end
	end
	return rtn..'|}\r\n'
end
function periods(route,directions)
	arr={}
	for n,x in pairs(routes_periods) do
		if x.route==route then
			if alt_ok(x) then
				if not directions then
					arr_add(arr,route,x.period,'')
				else
					arr_add(arr,route,x.period,howstops(x.how,x.dir,'x',x.period))
				end
			end
		end
	end
	return arr_text(arr,'when')
end
function add_terminal(arrarr,route,period,seg,how,north,dir,subperiod,cursta,multiline)
	sta=get_first_station(route,period,seg,how,dir,north,subperiod,false)
	for n0,x0 in pairs(sta) do
		local term=x0
		if multiline then
			term=from_part(term)
		end
		if cursta==nil or cursta==term then
			if cursta then
				key=cursta
			else
				key=term
			end
			if arrarr[key] then
				arr=arrarr[term].arr
			else
				arr={}
			end
			comment=howstops(how,dir,'x',period)
			if comment then
				if comment=='' and subperiod~='' then
					comment=subperiod
				end
				arr_add(arr,route,period,comment)
			end
			arrarr[key]={arr=arr,station=term}
		end
	end
	--return arrarr
end
function netto(article,fmt)
	pos=string.find(article,'(',1,true)
	if fmt=='text' then
		return string.sub(article,1,pos-2)
	end
	if fmt=='link' then
		return '[['..article..'|'..string.sub(article,1,pos-2)..']]'
	end
end
function line_netto(station)
	pos=string.find(station,'(',1,true)
	local rtn=string.sub(station,pos+1,string.len(station)-1)
	pos=string.find(rtn,', через',1,true)
	if pos then
		rtn=string.sub(rtn,1,pos-1)
	end
	return rtn
end
function line_nowrap(rtn)
	pos=string.find(rtn,', ',1,true)
	if pos then
		return string.sub(rtn,1,pos+1)..'<span class="nowrap">'..string.sub(rtn,pos+2,string.len(rtn))..'</span>'
	else
		return rtn
	end
end
function line_link(line,text)
	pos=string.find(line,' ',1,true)
	return '[['..line..'|'..text..string.sub(line,pos+1,string.len(line))..']]'
end
function line_routes(line)
	arr={}
	for n,x in pairs(stations) do
		if line_netto(x.station)==line then
			arr=station_list_once_given(arr,x.station,nil,nil,nil,x.segment,x.type,x.sep)
		end
	end
	return arr
end
function segment_routes(arr,segment)
	for n,x in pairs(routes_periods) do
		if x.segment==segment then
			if alt_ok(x) then
				arr_add(arr,x.route,x.period,howstops(x.how,x.dir,'x',x.period))
			end
		end
	end
	return arr
end
function line(station,color)
	local rtn=line_netto(station)
	text=line_nowrap(rtn)
	if color then
		return '[['..rtn..'|<span style="color:'..color..'">'..text..'</span>]]'
	else
		return '[['..rtn..'|'..text..']]'
	end
end
function complex_lines(complex,color)
	list={}
	for n0,x0 in pairs(station_complexes) do
		if x0.article==complex and x0.section~='' then
			if alt_ok(x0) then
				for n,x in pairs(station_parts(x0.station)) do
					tmp=line(x,color)
					list[tmp]=tmp
				end
			end
		end
	end
	list0={}
	for n0,x0 in pairs(list) do
		table.insert(list0, x0)
	end
	table.sort(list0, function(a,b) return a<b end)
	return list0
end
function next_station_list(station,north_param,acc,centered)
	arrarr={}
	for n0,x0 in pairs(station_parts(station)) do
		north=north_param
		csta=x0
		for n,x in pairs(stations) do
			if x.station==csta then
				ctype=x.type
				cacc=x.acc
				if x.north_back then
					north=not north_param
				end
			end
		end
		for n00,x00 in pairs(subperiods) do
			for n,x in pairs(routes_periods) do
				cperiod=x00.period
				if x.period==cperiod then
					if alt_ok(x) then
						croute=x.route
						csegment=x.segment
						chow=x.how
						cdir=x.dir
						csubperiod=x00.subperiod
						if stops_ok(chow,cdir,ctype,cperiod,csubperiod) and acc_ok(north,cacc,acc) then
							for nsta,xsta in pairs(next_station(csta,croute,cperiod,csegment,chow,cdir,north,csubperiod,acc)) do
								sta=from_part(xsta)
								if arrarr[sta] then
									arr=arrarr[sta].arr
								else
									arr={}
								end
								arr_add(arr,x.route,x.period,x00.subperiod)
								arrarr[sta]={arr=arr,station=sta}
							end
						end
					end
				end
			end
		end
		for n,x in pairs(unused_connections) do
			if x.station==x0 and x.north~=north then
				for nn,xx in pairs(unused_connections) do
					if xx.station~=x0 and xx.connection==x.connection then
						if arrarr[xx.station]==nil then
							arr={}
							arr['']={route='',periods=''}
							arrarr[xx.station]={arr=arr,station=xx.station,small=true}
						end
					end
				end
			end
		end
		for n,x in pairs(unused_tracks) do
			if x.station==x0 then
				if north then
					i=x.index-1
				else
					i=x.index+1
				end
				for nn,xx in pairs(unused_tracks) do
					if xx.segment==x.segment and xx.index==i then
						if arrarr[xx.station]==nil then
							arr={}
							if x.closed then
								arr['']={route='-',periods=''}
							elseif xx.closed then
								arr['']={route='',periods=xx.closed}
							else
								arr['']={route='',periods=''}
							end
							arrarr[xx.station]={arr=arr,station=xx.station,small=true}
						end
					end
				end
			end
		end
	end
	arrarr0={}
	for n,x in pairs(arrarr) do
		table.insert(arrarr0, x)
	end
	table.sort(arrarr0, function(a,b) return (b.small and not a.small) or (a.small==b.small and a.station<b.station) end)
	rtn=''
	for n,x in pairs(arrarr0) do
		if rtn~='' then
			rtn=rtn..'<br>'
		end
		if x.small then
			rtn=rtn..'<small><i>'
		end
		rtn=rtn..netto(x.station,'link')
		if x.small then
			local page=mw.title.new(x.station)
			if not page.exists then
				for nn,xx in pairs(stations_former) do
					if xx.station==x.station then
						if xx.en then
							rtn=rtn..'<sup style="font-style:normal;">&#91;[[:en:'..xx.en..'|en]]&#93;</sup>'
						end
					end
				end
			end
		end
		arrtext=arr_text(x.arr,'full halftext')
		if arrtext~='' then
			if centered then
				rtn=rtn..'<br>('..arrtext..')'
			else
				rtn=rtn..indent..'('..arrtext..')'
			end
		end
		if x.small then
			rtn=rtn..'</i></small>'
		end
	end
	if rtn=='' then
		return '<small><i>(конечная)</i></small>'
	else
		return rtn
	end
end
function next_station(station,route,period,segment,how,dir,north,subperiod,acc)
	comment=howstops(how,dir,typ,period)
	if comment==nil then
		return {}
	end
	sta=station
	for n,x in pairs(stations) do
		if x.station==sta then
			index_this=n
			seg=x.segment
			typ=x.type
			if typ=='-' then
				return {}
			end
		end
	end
	if seg~=segment then
		return {}
	end
	rtn=''
	found=false
	for n,x in pairs(stations) do
		if x.segment==seg then
			if stops_ok(how,dir,x.type,period,subperiod) and acc_ok(north,x.acc,acc) then
				if north then
					if x.station==sta then
						break
					else
						rtn=x.station
					end
				else
					if x.station==sta then
						found=true
					elseif found then
						rtn=x.station
						break
					end
				end
			end
		end
	end
	return station_collection(rtn,route,period,seg,north,sta,subperiod,acc)
end
function get_next_segment(route,period,seg,north)
	newseg=''
	newhow=''
	newdir=''
	local list={}
	nodetype=nil
	node_n=nil
	node_s=nil
	for n,x in pairs(nodes) do
		if x.segment==seg then
			nodetype=x.nodetype
			node_n=x.node_n
			node_s=x.node_s
		end
	end
	if nodetype=='fork' and ((node_n~=nil and north) or (node_s~=nil and not north)) then
		for n,x in pairs(nodes) do
			if (x.node_s==node_n and north) or (x.node_n==node_s and not north) then
				for nn,xx in pairs(routes_periods) do
					if xx.segment==x.segment and xx.route==route and xx.period==period then
						if alt_ok(xx) then
							list[x.segment]={segment=x.segment,how=xx.how,dir=xx.dir,north=north}
						end
					end
				end
			end
		end
		return list
	end
	if nodetype=='uturn' and ((node_n~=nil and north) or (node_s~=nil and not north)) then
		for n,x in pairs(nodes) do
			if ((x.node_n==node_n and north) or (x.node_s==node_s and not north)) and x.segment~=seg then
				for nn,xx in pairs(routes_periods) do
					if xx.segment==x.segment and xx.route==route and xx.period==period then
						if alt_ok(xx) then
							list[x.segment]={segment=x.segment,how=xx.how,dir=xx.dir,north=not north}
						end
					end
				end
			end
		end
		--return list
	end
	found=false
	for n,x in pairs(routes_periods) do
		if x.route==route and x.period==period then
			if alt_ok(x) then
				if north then
					if x.segment==seg then
						if x.fork~='south' and newseg~='' then
							list[newseg]={segment=newseg,how=newhow,dir=newdir,north=north}
						end
						break
					else
						if x.fork=='north' then
							newseg=''
							newhow=''
							newdir=''
						else
							newseg=x.segment
							newhow=x.how
							newdir=x.dir
						end
					end
				else
					if x.segment==seg then
						if x.fork=='north' then
							break
						end
						found=true
					elseif found then
						if x.fork~='south' then
							list[x.segment]={segment=x.segment,how=x.how,dir=x.dir,north=north}
						end
						break
					end
				end
			end
		end
	end
	return list
end
function get_first_station(route,period,seg,how,dir,north,subperiod,acc)
	rtn=''
	for n,x in pairs(stations_all()) do
		if x.segment==seg then
			if stops_ok(how,dir,x.type,period,subperiod) and acc_ok(north,x.acc,acc) then
				rtn=x.station
				if not north then
					break
				end
			end
		end
	end
	return station_collection(rtn,route,period,seg,north,'',subperiod,acc)
end
function station_collection(rtn,route,period,seg,north,sta,subperiod,acc)
	local list={}
	if rtn~=sta and rtn~='' then
		list[rtn]=rtn
	else
		for n,x in pairs(get_next_segment(route,period,seg,north)) do
			for nn,xx in pairs(get_first_station(route,period,x.segment,x.how,x.dir,x.north,subperiod,acc)) do
				list[xx]=xx
			end
		end
	end
	return list
end
function complex_sum(complex)
	arr={}
	for n,x in pairs(station_complexes) do
		if x.article==complex and x.section~='' then
			if alt_ok(x) then
				for nn,xx in pairs(station_parts(x.station)) do
					arr=station_list_once(arr,xx)
				end
			end
		end
	end
	return arr
end
function station_connections(station)
	for n0,x0 in pairs(station_parts(station)) do
		for n,x in pairs(stations) do
			if x.station==x0 then
				if x.conn then
					return x.conn
				else
					return ''
				end
			end
		end
	end
end
function station_transfers(station,fmt,filter,frame,exclude,ast)
	local list
	complex=''
	rtn=''
	virt=false
	for n,x in pairs(station_complexes) do
		if x.station==station then
			if alt_ok(x) then
				complex=x.article
				if x.section=='' and x.future==nil then
					virt=true
				end
			end
		end
	end
	if complex=='' then
		return ''
	end
	for n,x in pairs(station_complexes) do
		if x.article==complex and x.station~=station then
			if alt_ok(x) then
				if x.station==exclude then
					excludefound=true
				else
					list=station_list_full(x.station,fmt,nil,nil,filter)
					if list=='' then
						list=icon_nostop
					end
					rtn=rtn..'|- style="height:20px;"\r\n'
					rtn=rtn..'|nowrap|'..list..'\r\n'
					rtn=rtn..'|nowrap|&nbsp;'..netto(x.station,'link')
					if (x.section=='' or virt) and x.future==nil then
						if x.periods then
							rtn=rtn..'<sup>'..icons[x.periods]('icon',8)..'</sup>'
						elseif ast then
							rtn=rtn..asterisk
						else
							rtn=rtn..frame:preprocess(metrocard)
						end
					end
					rtn=rtn..'\r\n'
				end
			end
		end
	end
	super=''
	for n,x in pairs(station_complexes) do
		if x.station==complex and x.periods~=nil then
			if alt_ok(x) then
				super=x.article
			end
		end
	end
	if super~='' then
		for n,x in pairs(station_complexes) do
			if x.article==super and x.station~=complex then
				if alt_ok(x) then
					for nn,xx in pairs(station_complexes) do
						if xx.article==x.station then
							list=station_list_full(xx.station,fmt,nil,nil,filter)
							rtn=rtn..'|- style="height:20px;"\r\n'
							rtn=rtn..'|nowrap|'..list..'\r\n'
							rtn=rtn..'|nowrap|&nbsp;'..netto(xx.station,'link')
							rtn=rtn..'<sup>'..icons[x.periods]('icon',8)..'</sup>'
							rtn=rtn..'\r\n'
						end
					end
				end
			end
		end
	end
	return rtn
end
function station_transfers_count(station,filter,exclude)
	local cou
	complex=''
	for n,x in pairs(station_complexes) do
		if x.station==station then
			if alt_ok(x) then
				complex=x.article
			end
		end
	end
	if complex=='' then
		return 0
	end
	cou=0
	for n,x in pairs(station_complexes) do
		if x.article==complex and x.station~=station and x.station~=exclude then
			if alt_ok(x) then
				cou=cou+1
			end
		end
	end
	super=''
	for n,x in pairs(station_complexes) do
		if x.station==complex and x.periods~=nil then
			if alt_ok(x) then
				super=x.article
			end
		end
	end
	if super~='' then
		for n,x in pairs(station_complexes) do
			if x.article==super and x.station~=complex then
				if alt_ok(x) then
					for nn,xx in pairs(station_complexes) do
						if xx.article==x.station then
							cou=cou+1
						end
					end
				end
			end
		end
	end
	return cou
end
function station_transfers_including(station,complex,fmt,route1,route2)
	arr={}
	if complex=='' then
		for nn,xx in pairs(station_parts(station)) do
			arr=station_list_once(arr,xx)
		end
	else
		for n,x in pairs(station_complexes) do
			if x.article==complex then
				if alt_ok(x) then
					for nn,xx in pairs(station_parts(x.station)) do
						arr=station_list_once(arr,xx)
					end
				end
			end
		end
	end
	return arr_text(arr,fmt,route1,route2)
end
function station_list_full(station,fmt,cond,route,filter,level)
	local arr={}
	if level or future_on then
		arr=station_list_once(arr,station,cond,route,filter)
	else
		for n,x in pairs(station_parts(station)) do
			arr=station_list_once(arr,x,cond,route,filter)
		end
	end
	if fmt=='count letters' or fmt=='count letters full' then
		return arr_text(arr,fmt,nil,nil,level)
	end
	local parts=''
	local term=''
	if fmt=='prose' then
		for n,x in pairs(multiline_stations) do
			if x.full==station then
				if x.text then
					arr_p={}
					arr_p=station_list_once(arr_p,x.part)
					arr_p=station_list_once(arr_p,x.part,nil,nil,'skip')
					if parts~='' then
						if x.detailed then
							parts=parts..', '..x.text..' '..arr_text(arr_p,'prose dash')
						else
							parts=parts..', '..x.text..' '..arr_text(arr_p,'prose dash short')
						end
					else
						if x.detailed then
							parts=parts..x.text..' '..arr_text(arr_p,'prose where')
						else
							parts=parts..x.text..' '..arr_text(arr_p,'prose where short')
						end
					end
					if x.after then
						parts=parts..' ('..x.after..')'
					end
				end
			end
		end
		for n,x in pairs(multiline_stations) do
			if x.full==station then
				if x.level then
					tmp=''
					if x.no_exp then
						tmp=station_list_full(x.part,'prose lcl',nil,nil,'lcl',x.level)
					else
						local subt=''
						for nn,xx in pairs(stations_all()) do
							if xx.station==x.part then
								subt=xx.subtype
							end
						end
						if subt=='bidi' then
							tmp=station_list_full(x.part,'prose exp 1',nil,nil,'exp',x.level)
						else
							tmp=station_list_full(x.part,'prose exp 2',nil,nil,'exp',x.level)
						end
						if tmp~='' and x.no_lcl==nil then
							tmp=tmp..'. '..station_list_full(x.part,'prose lcl',nil,nil,'lcl',x.level)
						end
					end
					if tmp~='' then
						parts=parts..'. '..tmp
					end
				end
			end
		end
		if parts~='' then
			parts='. '..parts
		end
		arrarr_n={}
		arrarr_s={}
		found_all_n=0
		found_diff_n=0
		found_all_s=0
		found_diff_s=0
		found_total=0
		last_route_n=''
		last_route_s=''
		for n,x in pairs(arr) do
			fill_terminals(x.route,arrarr_n,arrarr_s,station,true)
			found_total=found_total+1
		end
		if arrarr_n[station]~=nil or arrarr_s[station]~=nil then
			if arrarr_n[station] then
				arr_n=arrarr_n[station].arr
			else
				arr_n={}
			end
			if arrarr_s[station] then
				arr_s=arrarr_s[station].arr
			else
				arr_s={}
			end
			for n,x in pairs(arr) do
				periods_all=normalize(x.periods,false)
				if arr_n[x.route] then
					periods_n=normalize(arr_n[x.route].periods,false)
					last_route_n=x.route
				else
					periods_n=''
				end
				if arr_s[x.route] then
					periods_s=normalize(arr_s[x.route].periods,false)
					last_route_s=x.route
				else
					periods_s=''
				end
				if periods_n==periods_all then
					found_all_n=found_all_n+1
				elseif periods_n~='' then
					found_diff_n=found_diff_n+1
				end
				if periods_s==periods_all then
					found_all_s=found_all_s+1
				elseif periods_s~='' then
					found_diff_s=found_diff_s+1
				end
			end
			if found_all_n==0 and found_diff_n==0 and found_all_s==0 and found_diff_s==0 then
				term=''
			elseif found_all_n>0 and found_diff_n==0 and found_all_s==0 and found_diff_s==0 then
				term='. Станция является северной конечной '
				if found_all_n~=found_total then
					term=term..arr_text(arr_n,'prose for short')
				elseif found_all_n==1 then
					term=term..'для него'
				elseif found_all_n==2 then
					term=term..'для обоих маршрутов'
				else
					term=term..'для всех маршрутов'
				end
			elseif found_all_n==0 and found_diff_n==0 and found_all_s>0 and found_diff_s==0 then
				term='. Станция является южной конечной '
				if found_all_s~=found_total then
					term=term..arr_text(arr_s,'prose for short')
				elseif found_all_s==1 then
					term=term..'для него'
				elseif found_all_s==2 then
					term=term..'для обоих маршрутов'
				else
					term=term..'для всех маршрутов'
				end
			elseif found_all_n==0 and found_diff_n==1 and found_all_s==0 and found_diff_s==1 then
				if last_route_n~=last_route_s then
					term='. Станция является северной конечной для маршрута '..arr_text(arr_n,'full text')..' и южной конечной для маршрута '..arr_text(arr_s,'full text')
				elseif found_total==1 then
					term='. Станция является конечной для него: северной '..arr_text(arr_n,'when')..' и южной '..arr_text(arr_s,'when')
				else
					term='. Станция является конечной для маршрута '..arr_text(arr_s,'route')..': северной '..arr_text(arr_n,'when')..' и южной '..arr_text(arr_s,'when')
				end
			elseif found_all_s==0 and found_diff_s==0 then
				term='. Станция является северной конечной '..arr_text(arr_n,'prose for')
			elseif found_all_n==0 and found_diff_n==0 then
				term='. Станция является южной конечной '..arr_text(arr_s,'prose for')
			elseif found_diff_n==0 and found_diff_s==0 then
				term='. Станция является северной конечной '..arr_text(arr_n,'prose for short')..' и южной конечной '..arr_text(arr_s,'prose for short')
			else
				term='. Станция является северной конечной '..arr_text(arr_n,'prose for')..' и южной конечной '..arr_text(arr_s,'prose for')
			end
		end
	end
	return arr_text(arr,fmt,nil,nil,level)..parts..term
end
function station_list_once(arr,sta,cond,route,filter)
	for nn,xx in pairs(stations_all()) do
		if xx.station==sta then
			return station_list_once_given(arr,sta,cond,route,filter,xx.segment,xx.type,xx.sep)
		end
	end
end
function station_list_once_given(arr,sta,cond,route,filter,seg,typ,sep)
	comment0={}
	if cond=='ne' and sep=='yes' then
		for n,x in pairs(routes_periods) do
			if x.segment==seg and x.route==route then
				if alt_ok(x) then
					--filter не проверяем, разные фильтры с 'ne' вроде не используются
					comment0[x.period]=howstops(x.how,x.dir,typ,x.period)
				end
			end
		end
	end
	for n,x in pairs(routes_periods) do
		if x.segment==seg then
			if alt_ok(x) then
				if cond==nil then
					mustrun=true
				elseif cond=='eq' then
					mustrun=x.route==route
				elseif cond=='ne' then
					mustrun=x.route~=route
				else
					mustrun=false
				end
				if filter then
					if filter~='skip' and filter~='exp' and filter~='lcl' then
						if string.find('+'..filter..'+','+'..x.period..'+',1,true)==nil
								and string.find('+'..filter..'+','+'..x.period..'(1)+',1,true)==nil
								and string.find('+'..filter..'+','+'..x.period..'(2)+',1,true)==nil then
							mustrun=false
						end
					end
				end
				if mustrun then
					if typ=='-' then
						arr_add(arr,x.route,'-','')
					else
						if filter=='exp' then
							comment=howskips(x.how,x.dir,'o',x.period) --попадаем сюда только если typ=='x'
						elseif filter=='lcl' then
							comment=howstops(x.how,x.dir,'o',x.period) --попадаем сюда только если typ=='x'
						elseif filter=='skip' then
							comment=howskips(x.how,x.dir,typ,x.period)
						else
							comment=howstops(x.how,x.dir,typ,x.period)
						end
						if comment then
							if not(cond=='ne' and sep=='yes' and (
								((comment=='peak' or comment=='some peak') and comment0[x.period]=='not peak')
							or
								((comment0[x.period]=='peak' or comment0[x.period]=='some peak') and comment=='not peak')
							)) then
								if comment0[x.period]=='1' or comment0[x.period]=='2' then
									comment=comment0[x.period]
								elseif filter then
									if string.find('+'..filter..'+','+'..x.period..'(1)+',1,true) then
										comment='1'
									elseif string.find('+'..filter..'+','+'..x.period..'(2)+',1,true) then
										comment='2'
									end
								end
								arr_add(arr,x.route,x.period,comment)
							end
						end
					end
				end
			end
		end
	end
	return arr
end
function howstops(how,dir,typ,period,track)
	-- typ относится к станции, остальное к расписанию
	if period=='also' then
		return nil
	end
	if how==typ or how==nil or typ=='x' then
		if dir=='peakonly' or (dir=='peak' and track=='x') then
			return 'peak'
		elseif dir=='peak+' then
			return 'some peak'
		elseif dir=='notpeakonly' or (dir=='peak' and track=='o') then
			return 'not peak'
		elseif dir=='1' or dir=='2' then
			return dir
		else
			return ''
		end
	elseif dir=='peak' then
		return 'not peak'
	else
		return nil
	end
end
function howstops2pic(param,period)
	if param==nil then
		return icon_nostop
	elseif param=='peak' then
		return markpeak
	elseif param=='some peak' then
		return asterisk
	elseif param=='not peak' then
		return markback
	elseif param=='1' or param=='2' then
		return ' '..subperiod1(period,param)
	else
		return markyes
	end
end
function howskips(how,dir,typ,period)
	-- typ относится к станции, остальное к расписанию
	if period=='also' then
		return nil
	end
	if how~=typ and typ~=nil and typ~='x' and how~=nil then
		if dir=='peakonly' or dir=='peak' then
			return 'peak'
		elseif dir=='peak+' then
			return 'some peak'
		elseif dir=='notpeakonly' then
			return 'not peak'
		elseif dir=='1' or dir=='2' then
			return dir
		else
			return ''
		end
	else
		return nil
	end
end
function stops_ok(how,dir,type,period,subperiod)
	comment=howstops(how,dir,type,period)
	return comment==subperiod or comment=='' or (comment=='peak' and subperiod=='some peak')
end
function acc_ok(north,acc_station,acc_request)
	if not acc_request then
		return true
	else
		return acc_station=='yes' or (acc_station=='n' and north) or (acc_station=='s' and not north)
	end
end
function acc_cell(cacc)
	if cacc=='yes' then
		return accicon
	elseif cacc=='n' then
		return '<span class="nowrap">'..accicon..'<span title="В северном направлении">↑</span></span>'
	elseif cacc=='s' then
		return '<span class="nowrap">'..accicon..'<span title="В южном направлении">↓</span></span>'
	else
		return ''
	end
end
function subperiod_ok(subperiod,dir)
	if dir=='peak' or dir==nil then
		return true
	elseif subperiod=='peak' then
		return dir=='peakonly'
	elseif subperiod=='not peak' then
		return dir=='notpeakonly'
	elseif subperiod=='some peak' then
		return dir=='peakonly' or dir=='peak+'
	else
		return not ((dir=='1' or dir=='2') and subperiod=='')
	end
end
function arr_add(arr,route,period,comment)
	if comment==nil then
		return
	end
	if comment~='' then
		period=period..'('..comment..')'
	end
	r=''
	if routes[route] then
		r=route
	end
	if arr[r]==nil then
		arr[r]={route=r,periods=period}
	elseif string.find('+'..arr[r].periods..'+','+'..period..'+',1,true)==nil then
		arr[r].periods=arr[r].periods..'+'..period
	end
	--return arr
end
function normalize(param,forfilter)
	if param==nil then
		return ''
	elseif param=='-' then
		return '-'
	end
	a='+'..param..'+'
	b=''
	for nn,xx in pairs({'rh','md','ev','we','ln'}) do
		if string.find(a,'+'..xx..'+',1,true)~=nil
				or (string.find(a,'+'..xx..'(peak)+',1,true)~=nil and string.find(a,'+'..xx..'(not peak)+',1,true)~=nil)
				or (string.find(a,'+'..xx..'(1)+',1,true)~=nil and string.find(a,'+'..xx..'(2)+',1,true)~=nil) then
			b=b..'+'..xx
		elseif forfilter then
			if string.find(a,'+'..xx..'(1)',1,true) then
				b=b..'+'..xx..'(1)'
			elseif string.find(a,'+'..xx..'(2)',1,true) then
				b=b..'+'..xx..'(2)'
			elseif string.find(a,'+'..xx..'(',1,true) then
				b=b..'+'..xx
			end
		else
			if string.find(a,'+'..xx..'(peak)+',1,true) then
				b=b..'+'..xx..'(peak)'
			elseif string.find(a,'+'..xx..'(some peak)+',1,true) then
				b=b..'+'..xx..'(some peak)'
			end
			if string.find(a,'+'..xx..'(not peak)+',1,true) then
				b=b..'+'..xx..'(not peak)'
			end
			if string.find(a,'+'..xx..'(1)+',1,true) then
				b=b..'+'..xx..'(1)'
			end
			if string.find(a,'+'..xx..'(2)+',1,true) then
				b=b..'+'..xx..'(2)'
			end
		end
	end
	return string.sub(b,2,string.len(b))
end
function arr_text(arr,fmt,exclude1,exclude2,level)
	if arr==nil then
		if fmt=='all alltimes' then
			return true
		elseif fmt=='count letters' or fmt=='count letters full' then
			return 0
		else
			return ''
		end
	end
	if string.sub(fmt,1,5)=='prose' then
		cou=arr_text(arr,'count letters full')
	end
	if level then
		level=level..' '
	else
		level=''
	end
	sum=''
	num=0
	all_alltimes=true
	alltimesfound=false
	for nn,xx in pairs(routes_sorted()) do
		if xx.id~=exclude1 and xx.id~=exclude2 then
			for n,x in pairs(arr) do
				if x.route==xx.id then
					label=xx.label
					link=xx.link
					name=xx.name
					periods=normalize(x.periods,fmt=='periods')
					x0=icons[periods]
					if x0==nil then
						x0=icon_fun({icon='',tooltip='нет индикатора: '..periods})
						if fmt=='check' then
							sum='missing description: '..periods
						elseif fmt=='one period' or fmt=='color' then
							sum=''
						else
							sum=noperiods
						end
					end
					title=x0.tooltip
					comma=x0.comma
					ignore=x0.ignore
					if x0.alltimes then
						alltimesfound=true
					else
						all_alltimes=false
					end
					if not (ignore and (fmt=='count letters' or fmt=='letters' or fmt=='bullets' or fmt=='large bullets')) then
						num=num+1
					end
					if periods=='-' and string.sub(fmt,1,5)=='prose' then
						title=nil
					end
					if fmt=='full small' then
						sum=sum..together(xx,x0,4)
					elseif fmt=='full' then
						sum=sum..together(xx,x0,5)
					elseif fmt=='full halftext' then
						if sum~='' then
							sum=sum..' '
						end
						sum=sum..'[['..link..'|'..name..']]<sup>'..x0('icon',8,title)..'</sup>'
					elseif fmt=='full text' then
						if sum~='' then
							sum=sum..', '
						end
						sum=sum..xx('bold')..' ('..title..')'
					elseif fmt=='when' then
						if sum~='' then
							sum=sum..'/'
						end
						sum=sum..title
					elseif fmt=='prose' then
						if periods=='-' then
						elseif level~='' then
							sum=prose(cou,num,sum,false,xx,title,comma,'На станции '..level,'останавливается маршрут','останавливаются маршруты')
						else
							sum=prose(cou,num,sum,false,xx,title,comma,'На станции','останавливается маршрут','останавливаются маршруты')
						end
					elseif fmt=='prose skip' then
						sum=prose(cou,num,sum,false,xx,title,comma,'Станцию','проходит без остановки маршрут','проходят без остановки маршруты')
					elseif fmt=='prose skip split' then
						sum=prose(cou,num,sum,false,xx,title,comma,'Экспресс-пути, обходящие станцию стороной по спрямлённой трассе, используются','маршрутом','маршрутами')
					elseif fmt=='prose skip under' then
						sum=prose(cou,num,sum,false,xx,title,comma,'Экспресс-пути, проходящие под станцией, используются','маршрутом','маршрутами')
					elseif fmt=='prose tt' then
						sum=prose(cou,num,sum,false,xx,title,comma,'Оборотный путь '..level..'используется','маршрутом','маршрутами')
					elseif fmt=='prose exp 1' then
						sum=prose(cou,num,sum,false,xx,title,comma,'Экспресс-путь '..level..'используется','маршрутом','маршрутами')
					elseif fmt=='prose exp 2' then
						sum=prose(cou,num,sum,false,xx,title,comma,'Экспресс-пути '..level..'используются','маршрутом','маршрутами')
					elseif fmt=='prose lcl' then
						sum=prose(cou,num,sum,false,xx,title,comma,'Локальные пути '..level..'используются','маршрутом','маршрутами')
					elseif fmt=='prose semishort' then
						sum=prose(cou,num,sum,false,xx,title,comma,'','маршрут','маршруты',true)
					elseif fmt=='prose short' then -- ignore does not affect this option
						sum=prose(cou,num,sum,false,xx,nil,comma,'','маршрут','маршруты')
					elseif fmt=='prose semishort plain' then
						sum=prose(cou,num,sum,true,xx,title,comma,'','маршрут','маршруты',true)
					elseif fmt=='prose short plain' then -- ignore does not affect this option
						sum=prose(cou,num,sum,true,xx,nil,comma,'','маршрут','маршруты')
					elseif fmt=='prose for' then
						sum=prose(cou,num,sum,false,xx,title,comma,'для','маршрута','маршрутов')
					elseif fmt=='prose for short' then -- ignore does not affect this option
						sum=prose(cou,num,sum,false,xx,nil,comma,'для','маршрута','маршрутов')
					elseif fmt=='prose where' then
						sum=prose(cou,num,sum,false,xx,title,comma,'','проходят поезда маршрута','проходят поезда маршрутов')
					elseif fmt=='prose where short' then -- ignore does not affect this option
						sum=prose(cou,num,sum,false,xx,nil,comma,'','проходят поезда маршрута','проходят поезда маршрутов')
					elseif fmt=='prose dash' then
						sum=prose(cou,num,sum,false,xx,title,comma,'','— маршрута','— маршрутов')
					elseif fmt=='prose dash short' then -- ignore does not affect this option
						sum=prose(cou,num,sum,false,xx,nil,comma,'','— маршрута','— маршрутов')
					elseif fmt=='prose by' then
						sum=prose(cou,num,sum,false,xx,title,comma,'','маршрутом','маршрутами')
					elseif fmt=='prose by short' then -- ignore does not affect this option
						sum=prose(cou,num,sum,false,xx,nil,comma,'','маршрутом','маршрутами')
					elseif fmt=='prose complex' then
						if sum=='' then
							sum='На станциях пересадочного узла останавливаются маршруты:'
						else
							sum=sum..','
						end
						sum=sum..'\r\n* '..xx('bold')..' ('..title..')'
					elseif fmt=='letters' and not ignore then
						if sum~='' then
							sum=sum..', '
						end
						letter=xx.tooltip
						pos=string.find(letter,' ',1,true)
						if pos then
							sum=sum..string.sub(letter,1,pos-1)
						else
							sum=sum..letter
						end
					elseif fmt=='check' then
						if sum~='' then
							sum=sum..'+'
						end
						sum=sum..xx.id
					elseif fmt=='bkg' and not ignore then
						if sum=='' then
							sum=xx.bkg
						elseif sum==xx.bkg then
						else
							sum='FFFFFF'
						end
					elseif fmt=='color' and not ignore then
						if sum=='' then
							sum=xx.color
						elseif sum==xx.color then
						else
							sum='000000'
						end
					elseif (fmt=='bullets' and not ignore) or fmt=='bullets all' then
						sum=sum..xx('bullet',20)
					elseif fmt=='large bullets' and not ignore then
						sum=sum..xx('bullet',50)
					elseif fmt=='one period' then
						sum=sum..xx('bullet',20)
						pos=string.find(x.periods,'(',1,true)
						if pos then
							sum=sum..howstops2pic(string.sub(x.periods,pos+1,string.len(x.periods)-1),string.sub(x.periods,1,pos-1))
						end
					elseif fmt=='icons' then
						sum=sum..x0('icon',10,title)
					elseif fmt=='small icons' then
						sum=sum..x0('icon',8,title)
					elseif fmt=='route' then
						sum=sum..xx('bold')
					elseif fmt=='periods' then
						sum=sum..periods
					elseif fmt=='SL V' and not ignore then
						sum=sum..'<br><div style="padding:0;margin:0;width:0;left:-2px;">'
						sum=sum..'<div style="position:static;display:inline-block;margin-left:-2px;height:10px;">'
						sum=sum..xx('bullet',11)..'</div></div><br>'
					elseif fmt=='SL H' and not ignore then
						sum=sum..'<span style="padding:0;margin:0;vertical-align:middle;">'
						sum=sum..'<span style="display:inline-block;margin-left:-2px;margin-right:-2px;line-height:0;padding:0;margin-top:-2px;height:0;">'
						sum=sum..xx('bullet',11)..'</span></span>'
					elseif fmt=='colors' and not ignore then
						if string.find(sum,'|#'..xx.color,1,true)==nil then
							sum=sum..'|#'..xx.color
						end
					end
				end
			end
		end
	end
	if sum=='' then
		for n,x in pairs(arr) do
			if x.route=='' then
				if x.periods=='' then
					sum='нет сообщения'
				else
					sum=x.periods
				end
			end
		end
	--elseif fmt=='prose' and cou>1 and not alltimesfound then
	--	sum=sum..'. Станция работает круглосуточно, хотя обслуживается разными маршрутами в разное время'
	end
	if fmt=='all alltimes' then
		return all_alltimes
	elseif fmt=='count letters' or fmt=='count letters full' then
		return num
	else
		sum=string.gsub(sum,'%) %(',', ')
		return sum
	end
end
function prose(cou,num,sum,nolink,xx,title,comma,text0,text1,text2,semishort)
	if text0=='' then
		prefix=''
	else
		prefix=text0..' '
	end
	if cou==1 then
		tmp=prefix..text1..' '
	elseif cou==2 then
		if sum=='' then
			tmp=prefix..text2..' '
		else
			if lastcomma and semishort then
				tmp=sum..', и&nbsp;'
			else
				tmp=sum..' и&nbsp;'
			end
		end
	else
		if sum=='' then
			if title then
				tmp=prefix..text2..': '
			else
				tmp=prefix..text2..' '
			end
		elseif num==cou then
			if lastcomma and semishort then
				tmp=sum..', и&nbsp;'
			else
				tmp=sum..' и&nbsp;'
			end
		else
			tmp=sum..', '
		end
	end
	if nolink then
		tmp=tmp..xx.tooltip
	else
		tmp=tmp..xx('bold')
	end
	lastcomma=comma
	if title then
		if semishort then
			return tmp..' '..title
		else
			return tmp..' ('..title..')'
		end
	else
		return tmp
	end
end
function together(xx,x0,size)
	local tt=xx.tooltip..' — '..x0.tooltip
	local rtn='<span class="nowrap">'..xx('bullet',size*5,tt)
	rtn=rtn..'<span style="position:relative;display:inline-block;margin-left:-'..(size*2)..'px;z-index:1;top:-'..size..'px;">'
	rtn=rtn..x0('icon',size*2,tt,xx.link)..'</span></span>'
	return rtn
end
function station_parts(station)
	local list={}
	found=false
	for n,x in pairs(multiline_stations) do
		if x.full==station then
			list[x.part]=x.part
			found=true
		end
	end
	if not found then
		list[station]=station
	end
	return list
end
function from_part(sta,empty_if_no)
	for n,x in pairs(multiline_stations) do
		if x.part==sta then
			return x.full
		end
	end
	if empty_if_no then
		return ''
	else
		return sta
	end
end
function to_complex(sta,empty_if_no)
	for n,x in pairs(station_complexes) do
		if x.station==sta and x.section~='' then
			if alt_ok(x) then
				return x.article
			end
		end
	end
	if empty_if_no then
		return ''
	else
		return sta
	end
end
function to_complex_sec(sta)
	for n,x in pairs(station_complexes) do
		if x.station==sta and x.section~='' then
			if alt_ok(x) then
				return '#'..x.section
			end
		end
	end
	return ''
end
function routes_sorted()
	local list0={}
	for n0,x0 in pairs(routes) do
		if x0.future==nil or future_on then
			table.insert(list0, x0)
		end
	end
	table.sort(list0, function(a,b) return a.label<b.label end)
	return list0
end
function stations_all()
	if not future_on then
		return stations
	end
	local stations0={}
	for n0,x0 in pairs(stations) do
		table.insert(stations0, x0)
	end
	for n0,x0 in pairs(stations_future) do
		x=x0
		x.future=true
		table.insert(stations0, x)
	end
	return stations0
end
function ita1(future,icon_fu,icon_fo,fo_saved)
	if future then
		if icon_fu then
			return constricon..'<i>'
		elseif icon_fo then
			if fo_saved then
				return closedicon..'&nbsp;<i>'
			else
				return demolicon..'&nbsp;<i>'
			end
		else
			return '<i>'
		end
	else
		return ''
	end
end
function ita2(future)
	if future then
		return '</i>'
	else
		return ''
	end
end
function tolower(s)
	if string.sub(s,1,2)=="Л" then
		return "л"..string.sub(s,3,string.len(s))
	elseif string.sub(s,1,2)=="Ч" then
		return "ч"..string.sub(s,3,string.len(s))
	else
		return s
	end
end
function toupper(s)
	if string.sub(s,1,2)=="л" then
		return "Л"..string.sub(s,3,string.len(s))
	elseif string.sub(s,1,2)=="ч" then
		return "Ч"..string.sub(s,3,string.len(s))
	else
		return s
	end
end
function stub_spur(code,text,border)
	local right   ='|[[Файл:U+2192.svg|20px|link=]]\r\n'
	local left    ='|[[Файл:U+2190.svg|20px|link=]]\r\n'
	local s='|- style="'..grayback
	if border then
		s=s..bor('left')..bor('right')..'"\r\n'
	else
		s=s..'"\r\n'
	end
	s=s..'|colspan=5 align=center|<i>'..text..'</i>\r\n'
	s=s..'|colspan=2|\r\n'
	s=s..tab..' align=left style="line-height:0;"\r\n'
	s=s..'|-\r\n|\r\n'
	s=s..tab..' align=center style="line-height:0;"\r\n'
	if code=='+w' then
		s=s..'|&nbsp;\r\n'..onearrow..'|-\r\n'..right..onefile('S-NW')..'|-\r\n|&nbsp;\r\n'..onearrow
	elseif code=='+e' then
		s=s..onearrow..'|&nbsp;\r\n|-\r\n'..onefile('S-NE')..left..'|-\r\n'..onearrow..'|&nbsp;\r\n'
	elseif code=='-e' then
		s=s..onearrow..'|&nbsp;\r\n|-\r\n'..onefile('N-SE')..right..'|-\r\n'..onearrow..'|&nbsp;\r\n'
	elseif code=='-w' then
		s=s..'|&nbsp;\r\n'..onearrow..'|-\r\n'..left..onefile('N-SW')..'|-\r\n|&nbsp;\r\n'..onearrow
	elseif code=='nw' then
		s=s..onefile('O')..onearrow..'|-\r\n'..onefile('NE')..onefile('S-NW')..'|-\r\n|&nbsp;\r\n'..onearrow
	elseif code=='ne' then
		s=s..onearrow..onefile('O')..'|-\r\n'..onefile('S-NE')..onefile('NW')..'|-\r\n'..onearrow..'|&nbsp;\r\n'
	elseif code=='sw' then
		s=s..'|&nbsp;\r\n'..onearrow..'|-\r\n'..onefile('SE')..onefile('N-SW')..'|-\r\n'..onefile('O')..onearrow
	elseif code=='se' then
		s=s..onearrow..'|&nbsp;\r\n|-\r\n'..onefile('N-SE')..onefile('SW')..'|-\r\n'..onearrow..onefile('O')
	end
	s=s..'|}\r\n|}\r\n'
	return s
end
function onefile(what)
	return '|align=center style="width:0;background-color:black;"|[[Файл:SMicon '..what..' lightgrey.svg|20px|link=]]\r\n'
end
function bor(where)
	return 'border-'..where..':2px solid black;'
end
function bor0(where)
	return 'border-'..where..':0px none transparent;'
end
--
return p
-- =p.station_full{args={'57-я улица (линия Шестой авеню, Ай-эн-ди)'}}
Источник —

Same as NYCS DB