Fares 1 rok temu
commit
13e4200acc
100 zmienionych plików z 34134 dodań i 0 usunięć
  1. 44 0
      .gitignore
  2. 30 0
      .metadata
  3. 16 0
      README.md
  4. 39 0
      analysis_options.yaml
  5. 13 0
      android/.gitignore
  6. 45 0
      android/app/build.gradle
  7. 7 0
      android/app/src/debug/AndroidManifest.xml
  8. 51 0
      android/app/src/main/AndroidManifest.xml
  9. 5 0
      android/app/src/main/kotlin/com/example/tp5/MainActivity.kt
  10. 12 0
      android/app/src/main/res/drawable-v21/launch_background.xml
  11. 12 0
      android/app/src/main/res/drawable/launch_background.xml
  12. BIN
      android/app/src/main/res/mipmap-hdpi/ic_launcher.png
  13. BIN
      android/app/src/main/res/mipmap-mdpi/ic_launcher.png
  14. BIN
      android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
  15. BIN
      android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
  16. BIN
      android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
  17. 18 0
      android/app/src/main/res/values-night/styles.xml
  18. 18 0
      android/app/src/main/res/values/styles.xml
  19. 7 0
      android/app/src/profile/AndroidManifest.xml
  20. 18 0
      android/build.gradle
  21. 3 0
      android/gradle.properties
  22. 5 0
      android/gradle/wrapper/gradle-wrapper.properties
  23. 25 0
      android/settings.gradle
  24. 9766 0
      assets/csv/airports.csv
  25. 202 0
      assets/fonts/roboto/LICENSE.txt
  26. 77 0
      assets/fonts/roboto/README.txt
  27. BIN
      assets/fonts/roboto/RobotoMono-Italic-VariableFont_wght.ttf
  28. BIN
      assets/fonts/roboto/RobotoMono-VariableFont_wght.ttf
  29. BIN
      assets/fonts/roboto/static/RobotoMono-Bold.ttf
  30. BIN
      assets/fonts/roboto/static/RobotoMono-BoldItalic.ttf
  31. BIN
      assets/fonts/roboto/static/RobotoMono-ExtraLight.ttf
  32. BIN
      assets/fonts/roboto/static/RobotoMono-ExtraLightItalic.ttf
  33. BIN
      assets/fonts/roboto/static/RobotoMono-Italic.ttf
  34. BIN
      assets/fonts/roboto/static/RobotoMono-Light.ttf
  35. BIN
      assets/fonts/roboto/static/RobotoMono-LightItalic.ttf
  36. BIN
      assets/fonts/roboto/static/RobotoMono-Medium.ttf
  37. BIN
      assets/fonts/roboto/static/RobotoMono-MediumItalic.ttf
  38. BIN
      assets/fonts/roboto/static/RobotoMono-Regular.ttf
  39. BIN
      assets/fonts/roboto/static/RobotoMono-SemiBold.ttf
  40. BIN
      assets/fonts/roboto/static/RobotoMono-SemiBoldItalic.ttf
  41. BIN
      assets/fonts/roboto/static/RobotoMono-Thin.ttf
  42. BIN
      assets/fonts/roboto/static/RobotoMono-ThinItalic.ttf
  43. BIN
      assets/logo.png
  44. BIN
      assets/pdficon.png
  45. BIN
      keys/my-release-key.jks
  46. 9 0
      lib/api/oaca.http
  47. 25 0
      lib/auth/api/auth_repository.dart
  48. 25 0
      lib/auth/api/auth_repository.g.dart
  49. 3 0
      lib/auth/auth.dart
  50. 13 0
      lib/auth/providers/auth_user.dart
  51. 24 0
      lib/auth/providers/auth_user.g.dart
  52. 238 0
      lib/auth/view/login_page.dart
  53. 238 0
      lib/auth/view/signup_page.dart
  54. 74 0
      lib/core/basic_page.dart
  55. 2 0
      lib/core/core.dart
  56. 0 0
      lib/core/my_cache.dart
  57. 92 0
      lib/core/my_theme.dart
  58. 252 0
      lib/core/routes.dart
  59. 365 0
      lib/core/utils.dart
  60. 54 0
      lib/csv/acleginfo.txt
  61. 71 0
      lib/csv/csv_data.dart
  62. 1539 0
      lib/csv/data copy.dart.bak
  63. 1717 0
      lib/csv/data.bak
  64. 1733 0
      lib/csv/data.dart
  65. 13 0
      lib/csv/pnleg.txt
  66. 361 0
      lib/flightslist/flightslist_page.dart
  67. 175 0
      lib/flightslist/flightslist_page.dart.bak2
  68. 324 0
      lib/flightslist/w_flt.dart
  69. 1145 0
      lib/fltinfo/delaycodes.dart
  70. 37 0
      lib/fltinfo/view/datatable.dart.bak
  71. 284 0
      lib/fltinfo/view/dutyinfo_page.dart
  72. 831 0
      lib/fltinfo/view/fltinfo_page.dart
  73. 8 0
      lib/fltinfo/view/qualif.txt
  74. 103 0
      lib/fltinfo/widget/w_cadre.dart
  75. 1441 0
      lib/ftl/provider/ftl copy.dart.bak
  76. 1467 0
      lib/ftl/provider/ftl copy2.dart.bak
  77. 1557 0
      lib/ftl/provider/ftl copy3.dart.bak
  78. 1558 0
      lib/ftl/provider/ftl.dart
  79. 11 0
      lib/ftl/provider/ftlcompute.dart
  80. 787 0
      lib/ftl/view/ftl_page copy.dart.bak
  81. 786 0
      lib/ftl/view/ftl_page.dart
  82. 26 0
      lib/ftl/widget/w_shadowbox.dart
  83. 441 0
      lib/lido/api_lido4d copy.dart.bak
  84. 577 0
      lib/lido/lido_api.dart
  85. 1010 0
      lib/lido/lidoapi_ofp.json
  86. 107 0
      lib/lido/lidoapilist.json
  87. 1085 0
      lib/lido/model/Lidoapi_list.dart
  88. 1555 0
      lib/lido/model/Lidoapi_ofp.dart
  89. 223 0
      lib/lido/view/lido_form.dart
  90. 443 0
      lib/lido/view/lidolist_page.dart
  91. 108 0
      lib/lido/view/lidoofp_page.dart
  92. 234 0
      lib/lido/w_lidoflt.dart
  93. 102 0
      lib/lido/w_lidoofp.dart
  94. 100 0
      lib/main.dart
  95. 35 0
      lib/onboarding/api/onboarding_repository.dart
  96. 27 0
      lib/onboarding/api/onboarding_repository.g.dart
  97. 2 0
      lib/onboarding/onboarding.dart
  98. 154 0
      lib/onboarding/view/verification_page.dart
  99. 56 0
      lib/pdf/pdf_page.dart
  100. 74 0
      lib/providers/airports.dart

+ 44 - 0
.gitignore

@@ -0,0 +1,44 @@
+# Miscellaneous
+*.class
+*.log
+*.pyc
+*.swp
+.DS_Store
+.atom/
+.buildlog/
+.history
+.svn/
+migrate_working_dir/
+
+# IntelliJ related
+*.iml
+*.ipr
+*.iws
+.idea/
+
+# The .vscode folder contains launch configuration and tasks you configure in
+# VS Code which you may wish to be included in version control, so this line
+# is commented out by default.
+#.vscode/
+
+# Flutter/Dart/Pub related
+**/doc/api/
+**/ios/Flutter/.last_build_id
+.dart_tool/
+.flutter-plugins
+.flutter-plugins-dependencies
+.packages
+.pub-cache/
+.pub/
+/build/
+
+# Symbolication related
+app.*.symbols
+
+# Obfuscation related
+app.*.map.json
+
+# Android Studio will place build artifacts here
+/android/app/debug
+/android/app/profile
+/android/app/release

+ 30 - 0
.metadata

@@ -0,0 +1,30 @@
+# This file tracks properties of this Flutter project.
+# Used by Flutter tool to assess capabilities and perform upgrades etc.
+#
+# This file should be version controlled and should not be manually edited.
+
+version:
+  revision: "ee624bc4fd41413cbb89099b0701a42287643d9a"
+  channel: "beta"
+
+project_type: app
+
+# Tracks metadata for the flutter migrate command
+migration:
+  platforms:
+    - platform: root
+      create_revision: ee624bc4fd41413cbb89099b0701a42287643d9a
+      base_revision: ee624bc4fd41413cbb89099b0701a42287643d9a
+    - platform: android
+      create_revision: ee624bc4fd41413cbb89099b0701a42287643d9a
+      base_revision: ee624bc4fd41413cbb89099b0701a42287643d9a
+
+  # User provided section
+
+  # List of Local paths (relative to this file) that should be
+  # ignored by the migrate tool.
+  #
+  # Files that are not part of the templates will be ignored by default.
+  unmanaged_files:
+    - 'lib/main.dart'
+    - 'ios/Runner.xcodeproj/project.pbxproj'

+ 16 - 0
README.md

@@ -0,0 +1,16 @@
+# tp5
+
+A realtime photo sharing app built on Supabase and Riverpod.
+
+[Supabase](https://supabase.io) is an open-source Firebase alternative that offers a set of tools to create scalable and secure web and mobile applications. 
+
+On the other hand, [Riverpod](https://docs-v2.riverpod.dev/) is a state management library for Flutter that provides a simple, composable way of managing application state. It uses dependency injection to enable sharing state across the app and offers an intuitive API for managing state.
+
+## Getting started
+
+1. Install [Flutter](https://docs.flutter.dev/get-started/install) (_Includes Dart SDK_)
+2. Setup and Configure your Supabase project (See the mini course)
+3. Update packages with `flutter pub get`
+4. Run project with `flutter run`
+
+_**Please note:** This is the "main" branch for the Supabase & Riverpod free minicourse on YouTube. Checkout the "starter" branch for the base setup of the course._

+ 39 - 0
analysis_options.yaml

@@ -0,0 +1,39 @@
+# This file configures the analyzer, which statically analyzes Dart code to
+# check for errors, warnings, and lints.
+#
+# The issues identified by the analyzer are surfaced in the UI of Dart-enabled
+# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be
+# invoked from the command line by running `flutter analyze`.
+
+# The following line activates a set of recommended lints for Flutter apps,
+# packages, and plugins designed to encourage good coding practices.
+include: package:flutter_lints/flutter.yaml
+
+
+analyzer:
+  exclude:
+    - "**/*.g.dart"
+    - "**/*.freezed.dart"
+  errors:
+    invalid_annotation_target: ignore
+  plugins:
+    - custom_lint
+    
+linter:
+  # The lint rules applied to this project can be customized in the
+  # section below to disable rules from the `package:flutter_lints/flutter.yaml`
+  # included above or to enable additional rules. A list of all available lints
+  # and their documentation is published at
+  # https://dart-lang.github.io/linter/lints/index.html.
+  #
+  # Instead of disabling a lint rule for the entire project in the
+  # section below, it can also be suppressed for a single line of code
+  # or a specific dart file by using the `// ignore: name_of_lint` and
+  # `// ignore_for_file: name_of_lint` syntax on the line or in the file
+  # producing the lint.
+  rules:
+    # avoid_print: false  # Uncomment to disable the `avoid_print` rule
+    # prefer_single_quotes: true  # Uncomment to enable the `prefer_single_quotes` rule
+
+# Additional information about this file can be found at
+# https://dart.dev/guides/language/analysis-options

+ 13 - 0
android/.gitignore

@@ -0,0 +1,13 @@
+gradle-wrapper.jar
+/.gradle
+/captures/
+/gradlew
+/gradlew.bat
+/local.properties
+GeneratedPluginRegistrant.java
+
+# Remember to never publicly share your keystore.
+# See https://flutter.dev/to/reference-keystore
+key.properties
+**/*.keystore
+**/*.jks

+ 45 - 0
android/app/build.gradle

@@ -0,0 +1,45 @@
+plugins {
+    id "com.android.application"
+    id "kotlin-android"
+    // The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins.
+    id "dev.flutter.flutter-gradle-plugin"
+}
+
+android {
+    namespace = "com.example.tp5"
+    compileSdk = flutter.compileSdkVersion
+    ndkVersion = flutter.ndkVersion
+
+    compileOptions {
+        sourceCompatibility = JavaVersion.VERSION_1_8
+        targetCompatibility = JavaVersion.VERSION_1_8
+    }
+
+    kotlinOptions {
+        jvmTarget = JavaVersion.VERSION_1_8
+    }
+
+    defaultConfig {
+        // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
+        applicationId = "com.example.tp5"
+        // You can update the following values to match your application needs.
+        // For more information, see: https://flutter.dev/to/review-gradle-config.
+        // minSdk = flutter.minSdkVersion
+        minSdk = 29
+        targetSdk = flutter.targetSdkVersion
+        versionCode = flutter.versionCode
+        versionName = flutter.versionName
+    }
+
+    buildTypes {
+        release {
+            // TODO: Add your own signing config for the release build.
+            // Signing with the debug keys for now, so `flutter run --release` works.
+            signingConfig = signingConfigs.debug
+        }
+    }
+}
+
+flutter {
+    source = "../.."
+}

+ 7 - 0
android/app/src/debug/AndroidManifest.xml

@@ -0,0 +1,7 @@
+<manifest xmlns:android="http://schemas.android.com/apk/res/android">
+    <!-- The INTERNET permission is required for development. Specifically,
+         the Flutter tool needs it to communicate with the running application
+         to allow setting breakpoints, to provide hot reload, etc.
+    -->
+    <uses-permission android:name="android.permission.INTERNET"/>
+</manifest>

+ 51 - 0
android/app/src/main/AndroidManifest.xml

@@ -0,0 +1,51 @@
+<manifest xmlns:android="http://schemas.android.com/apk/res/android">
+    <uses-permission android:name="android.permission.INTERNET" />
+    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
+    <uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
+    <uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />
+
+   
+    <application
+        android:label="tp5"
+        android:name="${applicationName}"
+        android:icon="@mipmap/ic_launcher">
+        <activity
+            android:name=".MainActivity"
+            android:exported="true"
+            android:launchMode="singleTop"
+            android:taskAffinity=""
+            android:theme="@style/LaunchTheme"
+            android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
+            android:hardwareAccelerated="true"
+            android:windowSoftInputMode="adjustResize">
+            <!-- Specifies an Android theme to apply to this Activity as soon as
+                 the Android process has started. This theme is visible to the user
+                 while the Flutter UI initializes. After that, this theme continues
+                 to determine the Window background behind the Flutter UI. -->
+            <meta-data
+              android:name="io.flutter.embedding.android.NormalTheme"
+              android:resource="@style/NormalTheme"
+              />
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN"/>
+                <category android:name="android.intent.category.LAUNCHER"/>
+            </intent-filter>
+        </activity>
+        <!-- Don't delete the meta-data below.
+             This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->
+        <meta-data
+            android:name="flutterEmbedding"
+            android:value="2" />
+    </application>
+    <!-- Required to query activities that can process text, see:
+         https://developer.android.com/training/package-visibility and
+         https://developer.android.com/reference/android/content/Intent#ACTION_PROCESS_TEXT.
+
+         In particular, this is used by the Flutter engine in io.flutter.plugin.text.ProcessTextPlugin. -->
+    <queries>
+        <intent>
+            <action android:name="android.intent.action.PROCESS_TEXT"/>
+            <data android:mimeType="text/plain"/>
+        </intent>
+    </queries>
+</manifest>

+ 5 - 0
android/app/src/main/kotlin/com/example/tp5/MainActivity.kt

@@ -0,0 +1,5 @@
+package com.example.tp5
+
+import io.flutter.embedding.android.FlutterActivity
+
+class MainActivity: FlutterActivity()

+ 12 - 0
android/app/src/main/res/drawable-v21/launch_background.xml

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Modify this file to customize your launch splash screen -->
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="?android:colorBackground" />
+
+    <!-- You can insert your own image assets here -->
+    <!-- <item>
+        <bitmap
+            android:gravity="center"
+            android:src="@mipmap/launch_image" />
+    </item> -->
+</layer-list>

+ 12 - 0
android/app/src/main/res/drawable/launch_background.xml

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Modify this file to customize your launch splash screen -->
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@android:color/white" />
+
+    <!-- You can insert your own image assets here -->
+    <!-- <item>
+        <bitmap
+            android:gravity="center"
+            android:src="@mipmap/launch_image" />
+    </item> -->
+</layer-list>

BIN
android/app/src/main/res/mipmap-hdpi/ic_launcher.png


BIN
android/app/src/main/res/mipmap-mdpi/ic_launcher.png


BIN
android/app/src/main/res/mipmap-xhdpi/ic_launcher.png


BIN
android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png


BIN
android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png


+ 18 - 0
android/app/src/main/res/values-night/styles.xml

@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+    <!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is on -->
+    <style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar">
+        <!-- Show a splash screen on the activity. Automatically removed when
+             the Flutter engine draws its first frame -->
+        <item name="android:windowBackground">@drawable/launch_background</item>
+    </style>
+    <!-- Theme applied to the Android Window as soon as the process has started.
+         This theme determines the color of the Android Window while your
+         Flutter UI initializes, as well as behind your Flutter UI while its
+         running.
+
+         This Theme is only used starting with V2 of Flutter's Android embedding. -->
+    <style name="NormalTheme" parent="@android:style/Theme.Black.NoTitleBar">
+        <item name="android:windowBackground">?android:colorBackground</item>
+    </style>
+</resources>

+ 18 - 0
android/app/src/main/res/values/styles.xml

@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+    <!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is off -->
+    <style name="LaunchTheme" parent="@android:style/Theme.Light.NoTitleBar">
+        <!-- Show a splash screen on the activity. Automatically removed when
+             the Flutter engine draws its first frame -->
+        <item name="android:windowBackground">@drawable/launch_background</item>
+    </style>
+    <!-- Theme applied to the Android Window as soon as the process has started.
+         This theme determines the color of the Android Window while your
+         Flutter UI initializes, as well as behind your Flutter UI while its
+         running.
+
+         This Theme is only used starting with V2 of Flutter's Android embedding. -->
+    <style name="NormalTheme" parent="@android:style/Theme.Light.NoTitleBar">
+        <item name="android:windowBackground">?android:colorBackground</item>
+    </style>
+</resources>

+ 7 - 0
android/app/src/profile/AndroidManifest.xml

@@ -0,0 +1,7 @@
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android">
+    <uses-permission android:name="android.permission.INTERNET"/>
+    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
+    <uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
+    <uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />
+</manifest>

+ 18 - 0
android/build.gradle

@@ -0,0 +1,18 @@
+allprojects {
+    repositories {
+        google()
+        mavenCentral()
+    }
+}
+
+rootProject.buildDir = "../build"
+subprojects {
+    project.buildDir = "${rootProject.buildDir}/${project.name}"
+}
+subprojects {
+    project.evaluationDependsOn(":app")
+}
+
+tasks.register("clean", Delete) {
+    delete rootProject.buildDir
+}

+ 3 - 0
android/gradle.properties

@@ -0,0 +1,3 @@
+org.gradle.jvmargs=-Xmx4G -XX:MaxMetaspaceSize=2G -XX:+HeapDumpOnOutOfMemoryError
+android.useAndroidX=true
+android.enableJetifier=true

+ 5 - 0
android/gradle/wrapper/gradle-wrapper.properties

@@ -0,0 +1,5 @@
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.3-all.zip

+ 25 - 0
android/settings.gradle

@@ -0,0 +1,25 @@
+pluginManagement {
+    def flutterSdkPath = {
+        def properties = new Properties()
+        file("local.properties").withInputStream { properties.load(it) }
+        def flutterSdkPath = properties.getProperty("flutter.sdk")
+        assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
+        return flutterSdkPath
+    }()
+
+    includeBuild("$flutterSdkPath/packages/flutter_tools/gradle")
+
+    repositories {
+        google()
+        mavenCentral()
+        gradlePluginPortal()
+    }
+}
+
+plugins {
+    id "dev.flutter.flutter-plugin-loader" version "1.0.0"
+    id "com.android.application" version "8.1.0" apply false
+    id "org.jetbrains.kotlin.android" version "1.8.22" apply false
+}
+
+include ":app"

+ 9766 - 0
assets/csv/airports.csv

@@ -0,0 +1,9766 @@
+"code","time_zone_id","name","city_code","country_id","location","elevation","url","icao","city","county","state"
+UGL,Antarctica/South_Pole,Union Glacier Blue-Ice Runway,UGL,AQ,POINT (-83.320833 -79.777778),2461,,SCGC,,,
+SXW,Pacific/Port_Moresby,Sauren,SXW,PG,POINT (148.95305 -5.971389),177,,AYSV,,,
+NDV,America/New_York,USN Heliport,NDV,US,POINT (-77 38.86667),19,,,,,
+EAP,Europe/Zurich,EuroAirport Basel-Mulhouse-Freiburg Airport,EAP,CH,POINT (7.529167 47.59),846,,,Basel,,
+NET,America/Nassau,New Bight,NET,BS,POINT (-75.45763803663925 24.314824100000003),36,,,,,
+MSK,America/Nassau,Mastic Point,MSK,BS,POINT (-78 25.033333),29,,,,,
+LYG,Asia/Shanghai,Lianyungang Airport,LYG,CN,POINT (118.87475668663635 34.57096),52,,ZSLG,Niushan,,Jiangsu Sheng
+YIG,America/Vancouver,Big Bay Marina,YIG,CA,POINT (-125.13333 50.38333),0,,CAF6,,,
+ACI,Europe/Guernsey,Alderney Airport,ACI,GB,POINT (-2.214498597174802 49.70694185),298,,EGJA,Beaumont-Hague,Departement de la Manche,Lower Normandy
+ANT,Europe/Vienna,St Anton,ANT,AT,POINT (10.283333 47.15),5672,,,Sankt Anton am Arlberg,Politischer Bezirk Landeck,Tyrol
+APW,Pacific/Apia,Faleolo Airport,APW,WS,POINT (-171.999494 -13.832271),45,,NSFA,Satapuala,,A'ana
+LYI,Asia/Shanghai,Linyi Airport,LYI,CN,POINT (118.41027073428957 35.05260055),187,,ZSLY,Linyi,,Shandong Sheng
+LHB,America/Nome,Lost Harbor Sea Port,LHB,US,POINT (-165.6 54.233334),0,,,,,
+MZS,Asia/Kuching,Mostyn,MZS,MY,POINT (118.15 4.616667),223,,,,,
+MDE,America/Bogota,Jose Maria Cordova International Airport,MDE,CO,POINT (-75.42394572094523 6.16640765),6965,,SKRG,Rionegro,,Antioquia
+MDH,America/Chicago,Southern Illinois,MDH,US,POINT (-89.2503003 37.7782221),400,,KMDH,De Soto,Jackson County,Illinois
+YFL,America/Yellowknife,Fort Reliance,YFL,CA,POINT (-109.13333 62.7),514,,CJN8,,,
+YEP,America/Vancouver,Estevan Point,YEP,CA,POINT (-126.53333 49.38333),0,,,,,
+JTN,America/Sao_Paulo,Antônio Ribeiro Nogueira Jr. State Airport,JTN,BR,POINT (-46.785556 -24.164722),10,,SDIM,Itanhaém,,
+YGA,America/Montreal,Gagnon,YGA,CA,POINT (-68.13333 51.95),700,,CTU4,,,
+MDK,Africa/Kinshasa,Mbandaka,MDK,CD,POINT (18.290409440342884 0.02011615),1010,,FZEA,Mbandaka,,Equateur
+LMV,Indian/Maldives,Madivaru Airport,LMV,MV,POINT (73.3703800969 5.45798469788),39,,,Madivaru,,
+LZC,America/Mexico_City,Lazaro Cardenas Airport,LZC,MX,POINT (-102.21966265294796 18.00309765),62,,MMLC,La Orilla,Lazaro Cardenas,Michoacan
+AQP,America/Lima,Rodriguez Ballon International Airport,AQP,PE,POINT (-71.56895878830176 -16.3423105),8346,,SPQU,Arequipa,Provincia de Arequipa,Arequipa
+NKI,America/Anchorage,Naukiti,NKI,US,POINT (-133.21666 55.36667),1630,,AK62,,,
+YSV,America/Goose_Bay,Saglek,YSV,CA,POINT (-62.5 58.583332),0,,,,,
+AST,America/Los_Angeles,Astoria,AST,US,POINT (-123.8830099988317 46.15642245),16,,KAST,Warrenton,Clatsop County,Oregon
+TYC,Asia/Shanghai,Taiyuan Yaocheng Airport,TYC,CN,POINT (112.4229 37.5027),2487,,ZBXX,Mengfeng,Qingxu,Shanxi
+YTI,America/Vancouver,Triple Island,YTI,CA,POINT (142.06223 -29.456944),0,,,,,
+LZH,Asia/Shanghai,Liuzhou Airport,LZH,CN,POINT (109.3985578866662 24.20767915),318,,ZGZH,Labu,,Guangxi Zhuangzu Zizhiqu
+MEC,America/Guayaquil,Manta Airport,MEC,EC,POINT (-80.67949990971246 -0.94690845),26,,SEMT,Manta,,Manabi
+DZH,Asia/Shanghai,Dazhou Jinya Airport,DZH,CN,POINT (107.43698222297508 31.05057705),1364,,,Dazhou,,Sinjuan
+EES,Africa/Cairo,Berenice International Airport,IUP,EG,POINT (35.45003685693535 23.980303),55,,,Berenice City,,
+YHA,America/St_Johns,Port Hope Simpson,YHA,CA,POINT (-56.280771003168525 52.52758035),347,,CCP4,,,
+KFZ,Europe/Tirane,Kukës International Airport,KFZ,AL,POINT (20.416156526028644 42.0342197),1135,https://kuiport.al/,LAKU,Kukës,,
+JTA,America/Fortaleza,Pedro Teixeira Castelo Airport,JTA,BR,POINT (-40.29597814583012 -5.93260025),1457,,SDZG,Tauá,,
+KJB,Asia/Kolkata,Uyyalawada Narasimha Reddy Airport,KJB,IN,POINT (78.1693148104587 15.715869600000001),920,,VOKU,Orvakal,Kurnool,
+YPF,America/Vancouver,Esquimalt,YPF,CA,POINT (-123.3904221 48.4253301),0,,,,,
+EHU,Asia/Shanghai,Ezhou Huahu Airport,EHU,CN,POINT (115.0474 30.346),65,,ZHEC,Ezhou,,
+FZL,Asia/Baku,Fuzuli International Airport,FZL,AZ,POINT (47.1964348 39.5945705),1204,,UBBF,Fuzuli,,
+KXB,Asia/Makassar,Sangia Nibandera Airport,PUM,ID,POINT (121.52424225501159 -4.3356094),88,,WAWP,Kolaka,,Sulawesi Tenggara
+GDR,America/Sao_Paulo,Angra dos Reis Airport,GDR,BR,POINT (-44.307222 -22.975278),22,http://angraeroportos.com.br/,SDAG,Angra dos Reis,,
+HLJ,Asia/Shanghai,Beidahuang General Airport,HLJ,CN,POINT (130.27009854 46.7932345403),255,,,Zhaodong,,
+HZU,Asia/Shanghai,Chengdu Huaizhou Airport,HZU,CN,POINT (104.5295206131 30.67744769548),1397,,,Majialin Village,Jintang County,Chengdu
+NGR,Pacific/Port_Moresby,Ningerum,NGR,PG,POINT (141 -6.5),78,,,,,
+MXQ,America/Sao_Paulo,Lorenzo Airport,MXQ,BR,POINT (-38.91 -13.389444),22,,SNCL,Cairu,,
+AFK,Asia/Colombo,Ampara Kondavattavan Tank Airport,ADP,LK,POINT (81.62931220557938 7.342169543255904),131,,,Ampara,,
+JHF,America/Sao_Paulo,São Paulo Catarina Executive Airport,JHF,BR,POINT (-47.165658 -23.426886),2562,,SBJH,São Roque,,Sao Paulo
+AGK,Pacific/Port_Moresby,Kagua,AGK,PG,POINT (143.84666 -6.403333),5554,,"",,,
+BLL,Europe/Copenhagen,Billund Airport,BLL,DK,POINT (9.160391884322324 55.740736999999996),219,http://www.billund-airport.dk/?sc_lang=en,EKBI,Billund,Billund Kommune,South Denmark
+CBA,America/Sitka,Corner Bay,CBA,US,POINT (-135.2 57.716667),242,,,,,
+JSB,America/Fortaleza,Walfrido Salmito de Almeida Airport,JSB,BR,POINT (-40.883333 -4.05),2874,,SWBE,São Benedito,,Ceará
+ATH,Europe/Athens,Eleftherios Venizelos International Airport,ATH,GR,POINT (23.954624286315532 37.9372535),229,http://www.aia.gr,LGAV,Spata,Nomarchia Anatolikis Attikis,Attica
+TXC,Europe/Minsk,Balbasovo Air Base,TXC,BY,POINT (30.296667 54.44),620,,UMIO,Orsha,,
+YLE,America/Yellowknife,Wha Ti,YLE,CA,POINT (-117.26667 63.15),882,,CEM3,,,
+UHS,Asia/Sakhalin,Aleksandrovsk-Sakhalinskiy Airport,UHS,RU,POINT (142.174682 50.878037),13,,,Aleksandrovsk-Sakhalinskiy,,Sakhalin
+MEH,Europe/Oslo,Mehamn Airport,MEH,NO,POINT (27.8245343 71.0298909),0,https://avinor.no/en/airport/mehamn-airport/,ENMH,Mehamn,Gamvik,Finnmark Fylke
+ZMF,Europe/Rome,Beverello Harbor,NAP,IT,POINT (14.2516357 40.8400969),0,,,,,
+MEI,America/Chicago,Key Field,MEI,US,POINT (-88.7525782827135 32.32774155),278,,KMEI,Meridian,Lauderdale County,Mississippi
+MEL,Australia/Melbourne,Tullamarine Airport,MEL,AU,POINT (144.83348076679553 -37.667111000000006),344,http://melbourneairport.com.au/,YMML,Attwood,Hume,Victoria
+MEM,America/Chicago,Memphis International Airport,MEM,US,POINT (-89.97689466513185 35.04625645),275,http://www.memphisairport.org/,KMEM,Southaven,De Soto County,Mississippi
+MEN,Europe/Paris,Brenoux,MEN,FR,POINT (3.531054995040395 44.50240255),3280,,LFNB,Mende,Departement de la Lozere,Languedoc-Roussillon
+MHB,Pacific/Auckland,Mechanics Bay,AKL,NZ,POINT (174.78473 -36.845),42,,,,,
+MBS,America/Detroit,MBS International Airport,MBS,US,POINT (-84.08284956680652 43.535796149999996),652,http://www.mbsairport.org/,KMBS,Freeland,Saginaw County,Michigan
+MBW,Australia/Melbourne,Moorabbin,MEL,AU,POINT (145.09835076618435 -37.97844885),36,http://www.moorabbinairport.com.au/,YMMB,Heatherton,,Victoria
+MBY,America/Chicago,Moberly,MBY,US,POINT (-92.4296597346036 39.463150150000004),843,http://www.moberlymo.org/Government/airport.html,KMBY,Moberly,Randolph County,Missouri
+AVP,America/New_York,Wilkes-Barre/Scranton International Airport,AVP,US,POINT (-75.72257122928625 41.33709205),921,http://www.flyavp.com/,KAVP,Avoca,Luzerne County,Pennsylvania
+DIA,Asia/Qatar,Doha International Airport,DIA,QA,POINT (51.5646 25.2607),55,,OTBD,Doha,,
+GNJ,Asia/Baku,Ganja International Airport,GNJ,AZ,POINT (46.31628304227843 40.7370535),1105,http://ganjaairport.com/,UBBG,Ganja,,
+YGQ,America/Toronto,Geraldton,YGQ,CA,POINT (-86.95 49.733334),1144,,CYGQ,,,
+GYO,Asia/Jakarta,Bandar Udara Senubung,GYO,ID,POINT (97.35973500023894 3.94565795),3454,,WIMG,Blangkejeren,,
+HIT,Pacific/Port_Moresby,Haivaro,HIT,PG,POINT (143.0551414177596 -6.94283805),157,,AYHO,,,
+YNN,Australia/Perth,Yandi,YNN,AU,POINT (119.23333 -22.766666),0,,,,,
+MEO,America/New_York,Dare County Regional,MEO,US,POINT (-75.69721306543956 35.9199194),32,http://www.darenc.com/Airport/,KMQI,Manteo,Dare County,North Carolina
+HSF,Asia/Shanghai,Suifenhe Dongning Airport,HSF,CN,POINT (130.84445157868504 44.454874849999996),1407,,,Suifenhe,,Heilongjiang
+MEY,Asia/Kathmandu,Meghauli,MEY,NP,POINT (84.22884152637523 27.577054099999998),475,,VNMG,Bharatpur,Narayani Zone,Central Region
+YOG,America/Toronto,Ogoki,YOG,CA,POINT (-85.90071375324194 51.6588906),594,,CYKP,,,
+YEL,America/Toronto,Elliot Lake,YEL,CA,POINT (-82.55883994950281 46.351316499999996),1087,http://cyelont.tripod.com/cyel/,CYEL,,,
+INR,America/Detroit,Kincheloe AFB,SSM,US,POINT (-84.35 46.5),606,,,,,
+YFH,America/Toronto,Fort Hope,YFH,CA,POINT (-87.90900401255813 51.5615715),899,,CYFH,,,
+RDL,Africa/Cairo,Al Bardawil International Airport,RDL,EG,POINT (33.1515706592 30.4095794591708),964,,,El Hassana,,North Sinai Governorate
+VCC,America/Sao_Paulo,New Vacaria Airport,VCC,BR,POINT (-51.022778 -28.431944),2975,,SNEE,Vacaria,,
+CSP,America/Juneau,Cape Spencer C G Heliport,CSP,US,POINT (-136.639007568 58.1991004944),0,,,,,
+MKZ,Asia/Kuala_Lumpur,Malacca International Airport,MKZ,MY,POINT (102.25118690241379 2.2649362999999996),98,,WMKM,Batu Berendam,,Melaka
+MLC,America/Chicago,Mc Alester,MLC,US,POINT (-95.7859407 34.8852967),754,,KMLC,McAlester,Pittsburg County,Oklahoma
+YFS,America/Yellowknife,Fort Simpson,YFS,CA,POINT (-121.23533019323654 61.7609797),555,,CYFS,,,
+GDB,Asia/Kolkata,Gondia Airport,GDB,IN,POINT (80.01 21.522),898,,VAGD,Gondia,,Maharashtra
+AEI,Europe/Madrid,Algeciras,AEI,ES,POINT (-5.441301 36.1289),42,,,Algeciras,Provincia de Cadiz,Andalusia
+LCO,Africa/Brazzaville,Lague,LCO,CG,POINT (14.533 -2.45),2756,,FCBL,,,
+MLE,Indian/Maldives,Male International Airport,MLE,MV,POINT (73.5301041555218 4.1961894),0,http://www.airports.com.mv/,VRMM,Male,,Maale
+AQG,Asia/Shanghai,Anqing Tianzhushan Airport,AQG,CN,POINT (117.05617994044115 30.5859116),45,,ZSAQ,Anqing,,Anhui Sheng
+VBM,America/Anchorage,Blue Mountain,VBM,US,POINT (-157.08667 57.8575),131,,,,,
+YHU,America/Montreal,St. Hubert Airport,YMQ,CA,POINT (-73.6 45.5),90,http://www.dashl.ca/,CYHU,,,
+YIV,America/Winnipeg,Island Lake Airport,YIV,CA,POINT (-94.78333 54.2),770,,CYIV,,,
+QMK,America/Godthab,Heliport,QMK,GL,POINT (-52.833332 68.25),0,,,,,
+JCS,America/Fortaleza,Aeroporto De Crateus Airport,JCS,BR,POINT (-40.7045819389 -5.21230869969),1026,http://www.crateus.ce.gov.br/,SNWS,Crateus,,
+AQI,Asia/Riyadh,Qaisumah Airport,AQI,SA,POINT (46.1219356 28.3342381),1181,,OEPA,Al Qaysumah,,Eastern Province
+YGW,America/Montreal,Kuujjuarapik Airport,YGW,CA,POINT (-77.75632598579428 55.2824753),34,,CYGW,,,
+AQJ,Asia/Amman,King Hussein International Airport,AQJ,JO,POINT (35.019039998479 29.610142699999997),154,,OJAQ,Aqaba,,Aqaba
+YHF,America/Toronto,Hearst,YHF,CA,POINT (-83.68811012191951 49.714139700000004),827,,CYHF,,,
+ATP,Pacific/Port_Moresby,Airstrip,ATP,PG,POINT (142.28334 -3.166667),49,,AYAI,,,
+AUP,Pacific/Port_Moresby,Agaun,AUP,PG,POINT (149.58333 -9.983333),6676,,AYAG,,,
+MLG,Asia/Jakarta,Abdul Rachman Saleh Airport,MLG,ID,POINT (112.7132740940317 -7.93032505),1725,,WARA,Singosari,,East Java
+LVI,Africa/Lusaka,Livingstone Airport,LVI,ZM,POINT (25.79571488398148 -17.81843635),3248,,FLHN,Livingstone,,Southern
+AHA,Asia/Tokyo,Naha AFB,OKA,JP,POINT (127.65 26.2),32,,,,,
+AME,Africa/Maputo,Alto Molocue,AME,MZ,POINT (37.583332 -15.833333),1784,,"",,,
+BCZ,Australia/Darwin,Bickerton Island,BCZ,AU,POINT (137.8 -13.783333),85,,"",,,
+AXO,Asia/Makassar,Bandar Udara Pantar,AXO,ID,POINT (124.219278 -8.244694),49,,,Pantar,,
+MDN,America/Indiana/Indianapolis,Jefferson Proving Grd,MDN,US,POINT (-85.38333 38.733334),442,http://www.madisonmunicipalairport.com/,KIMS,Madison,Jefferson County,Indiana
+YLR,America/Winnipeg,Leaf Rapids,YLR,CA,POINT (-99.9852982 56.5133018),959,,CYLR,,,
+CNY,America/Denver,Canyonlands Field,CNY,US,POINT (-109.748812 38.7584059),4507,,KCNY,Moab,Grand County,Utah
+CTV,Africa/Luanda,Catoca Airport,CTV,AO,POINT (20.311478 -9.430985),3523,,,Saurimo,,Lunda Sul Province
+CWP,Asia/Karachi,Campbellpore,CWP,PK,POINT (72.433334 33.766666),1141,,,Sanjwal,,Punjab
+YLJ,America/Regina,Meadow Lake,YLJ,CA,POINT (-108.666664 54.5),1576,,CYLJ,,,
+MDG,Asia/Shanghai,Mudanjiang Airport,MDG,CN,POINT (129.56714084864257 44.5245786),853,,ZYMD,Xinglong,,Heilongjiang Sheng
+BCP,Pacific/Port_Moresby,Bambu,BCP,PG,POINT (146.48334 -5.85),4301,,AYBC,,,
+MEK,Africa/Casablanca,Meknes,MEK,MA,POINT (-5.533333 33.88333),1837,,GMFM,Meknes,Meknes,Meknes-Tafilalet
+JPO,America/Recife,Brigadeiro Firmino Ayres Airport,NVM,BR,POINT (-37.25184761766 -7.037496939556),850,,SNTS,Patos,,
+JPE,America/Sao_Paulo,Nagib Demachki Airport,JPE,BR,POINT (-47.316389 -3.019722),443,,SNEB,Paragominas,,
+JPY,America/Sao_Paulo,Paraty Airport,JPY,BR,POINT (-44.720278 -23.224444),10,,SDTK,Paraty,,
+YJF,America/Yellowknife,Fort Liard,YJF,CA,POINT (-123.47007861169465 60.23598605),708,,CYJF,,,
+YCM,America/Toronto,Niagara District Airport,YCM,CA,POINT (-79.17194175161795 43.192976900000005),321,,CYSN,Niagara-on-the-Lake,,Ontario
+BHL,America/Santa_Isabel,Bahia Angeles,BHL,MX,POINT (-113.55 28.95),0,,"",,,
+MEA,America/Sao_Paulo,Macae,MEA,BR,POINT (-41.76577364545359 -22.343171050000002),19,,SBME,Macae,Macae,Rio de Janeiro
+MEF,Africa/Ndjamena,Melfi,MEF,TD,POINT (17.9398765 11.0611795),1259,,"",Melfi,,Guera
+NNK,America/Anchorage,Naknek,NNK,US,POINT (-157.02035706051322 58.732891800000004),42,,"5NK",,,
+WTL,America/Anchorage,Tuntutuliak,WTL,US,POINT (-162.6565166 60.3504323),36,,A61,,,
+YPS,America/Halifax,Port Hawkesbury,YPS,CA,POINT (-61.367937113526764 45.656802049999996),377,http://www.porthawkesburyairport.com/,CYPD,,,
+OOD,Australia/Perth,Gudai-Darri Airstrip,OOD,AU,POINT (119.07625111164 -22.503574253549),1456,,YKDD,Newman,,Western Australia
+YPR,America/Vancouver,Digby Island Airport,YPR,CA,POINT (-130.3999939 54.3167),116,http://www.ypr.ca/,CYPR,,,
+VSK,America/Los_Angeles,Vista Field,VSK,US,POINT (-119.212546 46.21861),515,,,Kennewick,Benton County,Washington
+BNF,America/Sitka,Warm Spring Bay SPB,BNF,US,POINT (-135 57),4032,,"",,,
+CGX,America/Chicago,Merrill C Meigs,CHI,US,POINT (-87.60833 41.85889),567,,,,,
+CHW,Asia/Shanghai,Jiuhuang,CHW,CN,POINT (98.416664 39.85),4937,,,,,
+COD,America/Denver,Yellowstone Regional Airport,COD,US,POINT (-109.02185342965336 44.520751950000005),5088,http://www.flyyra.com/,KCOD,Cody,Park County,Wyoming
+MEG,Africa/Luanda,Malange,MEG,AO,POINT (16.315173699797686 -9.52508625),3832,,FNMA,Malanje,Malanje Municipality,Malanje
+XOF,Europe/London,Stratford International Rail Station,LON,GB,POINT (0.06 51.51),0,,,,,
+MEP,Asia/Kuala_Lumpur,Mersing,MEP,MY,POINT (103.833336 2.416667),55,,WMAU,Mersing,Daerah Mersing,Johor
+AKV,America/Iqaluit,Akulivik,AKV,CA,POINT (-78.583336 60.733334),839,,CYKO,,,
+ANH,Pacific/Guadalcanal,Anuha Island Resort,ANH,SB,POINT (160.5 -8.983333),0,,,,,
+YKJ,America/Regina,Key Lake,YKJ,CA,POINT (-105.617996 57.2560997),1679,,CYKJ,,,
+YMG,America/Toronto,Manitouwadge,YMG,CA,POINT (-85.86072073634787 49.0828647),1198,,CYMG,,,
+BDO,Asia/Jakarta,Husein Sastranegara Airport,BDO,ID,POINT (107.57604750542606 -6.8995168499999995),2421,,WICC,Bandung,,West Java
+YUD,America/Montreal,Umiujaq,YUD,CA,POINT (-76.5191558 56.5382204),250,,CYMU,,,
+YFJ,America/Yellowknife,Snare Lake,YFJ,CA,POINT (-114.076634 64.1930455),1208,,CYWE,,,
+DSY,Asia/Phnom_Penh,Dara Sakor International Airport,DSY,KH,POINT (103.225265056204 10.91482235),75,,,Koh Kong,,
+YPC,America/Yellowknife,Paulatuk,YPC,CA,POINT (-124.0745327827381 69.36133480000001),15,,CYPC,,,
+BDQ,Asia/Kolkata,Vadodara Airport,BDQ,IN,POINT (73.22706886887818 22.336816749999997),144,http://aai.aero/allAirports/vadodara_generalinfo.jsp,VABO,Vadodara,Vadodara,Gujarat
+LAK,America/Yellowknife,Aklavik,LAK,CA,POINT (-135.004754614334 68.22236219999999),23,,CYKD,,,
+MEJ,America/New_York,Meadville,MEJ,US,POINT (-80.21177131124765 41.62622935),1377,"http://www.crawfordcountypa.net/portal/page?_dad=portal&_pageid=393,916281&_schema=PORTAL",KGKJ,Meadville,Crawford County,Pennsylvania
+EWR,America/New_York,Newark Liberty International Airport,NYC,US,POINT (-74.17725485035348 40.68906405),49,http://www.panynj.gov/CommutingTravel/airports/html/newarkliberty.html,KEWR,Elizabeth,Union County,New Jersey
+MEQ,Asia/Jakarta,Seunagan,MEQ,ID,POINT (96.11667 4.15),29,,WITC,Meulaboh,,Aceh
+YXN,America/Rankin_Inlet,Whale Cove,YXN,CA,POINT (-92.60009968114039 62.2416682),40,,CYXN,,,
+IUP,America/Manaus,Lorenzo Airport,IUP,BR,POINT (-59.8393706089647 -7.1726927603202),616,,,Apui,,
+MEU,America/Santarem,Monte Dourado,MEU,BR,POINT (-52.60197779839184 -0.8896558000000001),649,,SBMD,Almeirim,Almeirim,Para
+RLD,America/Los_Angeles,Richland,RLD,US,POINT (-119.30409421518716 46.30361055),393,,,Richland,Benton County,Washington
+LEG,Africa/Nouakchott,Aleg,LEG,MR,POINT (-13.95 17.166668),0,,,,,
+YSK,America/Iqaluit,Sanikiluaq Airport,YSK,CA,POINT (-79.24933782095911 56.53683365),104,,CYSK,,,
+MER,America/Los_Angeles,Castle AFB,MCE,US,POINT (-120.48333 37.3),164,,KMER,Merced,Merced County,California
+MES,Asia/Jakarta,Polonia,MES,ID,POINT (98.672775 3.561111),68,,WIMK,Medan,,North Sumatra
+NOR,Atlantic/Reykjavik,Nordfjordur,NOR,IS,POINT (-22 65.166664),1102,,BINF,,,
+YCK,America/Yellowknife,Colville Lake,YCK,CA,POINT (-126.12863549570841 67.02074845),869,,CYVL,,,
+MFG,Asia/Karachi,Muzaffarabad,MFG,PK,POINT (73.46667 34.36667),2253,,OPMF,Muzaffarabad,,Azad Kashmir
+MFI,America/Chicago,Municipal,MFI,US,POINT (-90.18667 44.63389),1236,,KMFI,Marshfield,Wood County,Wisconsin
+YSP,America/Toronto,Marathon,YSP,CA,POINT (-86.35 48.75),1035,,CYSP,,,
+YST,America/Winnipeg,Ste Therese Point,YST,CA,POINT (-94.65 53.85),773,,CYST,,,
+YTA,America/Toronto,Pembroke And Area Airport,YTA,CA,POINT (-77.24944 45.861668),529,http://www.flycyta.ca/,CYTA,,,
+BXL,Pacific/Fiji,Blue Lagoon,BXL,FJ,POINT (179 -16.75),620,,"",,,
+YTQ,America/Montreal,Tasiujuaq Airport,YTQ,CA,POINT (-69.95633 58.6678),122,,CYTQ,,,
+COH,Asia/Kolkata,Cooch Behar,COH,IN,POINT (89.46984059334517 26.32970445),91,,VECO,Koch Bihar,Koch Bihar,West Bengal
+DDD,Indian/Maldives,Dhaalu Airport,DDD,MV,POINT (72.88611679765515 2.66648215),0,,VRMU,Kudahuvadhoo,,Dhaalu Atholhu
+YTW,Asia/Urumqi,Yutian Wanfang Airport,YTW,CN,POINT (81.79149269333863 36.80990525),4728,,ZWYT,,Yutian County,Xinjiang
+YGZ,America/Iqaluit,Grise Fiord,YGZ,CA,POINT (-82.90958377076656 76.42610205),146,,CYGZ,,,
+YLH,America/Toronto,Lansdowne House,YLH,CA,POINT (-87.9341965 52.1955986),834,,CYLH,,,
+DUN,America/Godthab,Dundas,DUN,GL,POINT (-68.77556 76.577225),0,,,,,
+YTL,America/Winnipeg,Big Trout,YTL,CA,POINT (-89.90035954975068 53.81987275),729,,CYTL,,,
+COK,Asia/Kolkata,Cochin International Airport,COK,IN,POINT (76.39248892735499 10.15448595),29,http://www.cial.aero/,VOCI,Angamali,Ernakulam,Kerala
+DWF,America/New_York,Wright AFB,DAY,US,POINT (-84.183334 39.666668),879,,,Kettering,Montgomery County,Ohio
+EFB,America/Juneau,Eight Fathom Bight,EFB,US,POINT (-135.73334 58),0,,,,,
+JDE,Asia/Shanghai,Jiande Qiandaohu Airport,JDE,CN,POINT (119.18551273837 29.354412074477),180,,,Jiande,,
+CYA,America/Port-au-Prince,Les Cayes,CYA,HT,POINT (-73.7919727086445 18.2700495),196,,MTCA,Les Cayes,,Sud
+MFK,Asia/Taipei,Matsu Beigan Airport,MFK,TW,POINT (119.916664 26.166668),0,http://www.tsa.gov.tw/tsaMFK/en/page.aspx?id=1174,RCMT,Nangan,Lienchiang,Fukien
+MEW,Africa/Lubumbashi,Mweka,MEW,CD,POINT (21.542574619772104 -4.85500025),1856,,FZVM,Mweka,,Kasai-Occidental
+MFF,Africa/Libreville,Moanda,MFF,GA,POINT (13.253905585719252 -1.5279430999999999),1883,,FOOD,Moanda,,Haut-Ogooue
+SPK,Asia/Tokyo,Sapporo	Metropolitan Area,SPK,JP,POINT (41.3405138551 43.09367523914),3835,,,Sapporo,,Hokaido
+YVM,America/Pangnirtung,Qikiqtarjuaq,YVM,CA,POINT (-63.833332 67.583336),21,,CYVM,,,
+MFS,America/Bogota,Miraflores,MFS,CO,POINT (-73.25 5.166667),10387,,SKMF,Miraflores,,Boyaca
+MFT,America/Lima,Machu Picchu,MFT,PE,POINT (-72.566666 -13.116667),9767,,,Santa Teresa,Provincia de La Convencion,Cusco
+WTC,America/New_York,World Trade Center,NYC,US,POINT (-74.01667 40.7),0,,,,,
+MBN,Australia/Perth,Mt Barnett,MBN,AU,POINT (125 -15),0,,,,,
+MFQ,Africa/Niamey,Maradi,MFQ,NE,POINT (7.124447553561355 13.50119435),1181,,DRRM,Maradi,,Maradi
+AGZ,Africa/Johannesburg,Aggeneys,AGZ,ZA,POINT (18.85 -29.05),2818,,FAAG,Pofadder,Namakwa District Municipality,Northern Cape
+DBR,Asia/Kolkata,Darbhanga Airport,DBR,IN,POINT (85.9118892 26.1967856),134,,VE89,Darbhanga,,Bihar
+DDC,America/Chicago,Dodge City Municipal Airport,DDC,US,POINT (-99.9657378 37.7611827),2582,,KDDC,Dodge City,Ford County,Kansas
+MFR,America/Los_Angeles,Rogue Valley International-Medford Airport,MFR,US,POINT (-122.87342921752662 42.3727441),1282,,KMFR,Medford,Jackson County,Oregon
+MZD,America/Guayaquil,Mendez,MZD,EC,POINT (-78.316666 -2.733333),2093,,"",,,
+YPB,America/Vancouver,Port Alberni,YPB,CA,POINT (-124.8150024 49.2318993),250,http://www.acrd.bc.ca/avra,CBS8,,,
+ZLT,America/Blanc-Sablon,La Tabatiere,ZLT,CA,POINT (-58.97623897020986 50.83005065),102,,CTU5,,,
+LPB,America/La_Paz,El Alto International Airport,LPB,BO,POINT (-68.19026097558837 -16.512220550000002),13221,,SLLP,La Paz,,La Paz
+YNL,America/Regina,Points North Landing,YNL,CA,POINT (-104.079962 58.2688607),1605,,CYNL,,,
+DIO,America/Nome,Diomede Island,DIO,US,POINT (-168.95 65.75),141,,,,,
+YYL,America/Winnipeg,Lynn Lake,YYL,CA,POINT (-101.075996 56.8638992),1170,,CYYL,,,
+YYU,America/Toronto,Kapuskasing Airport,YYU,CA,POINT (-82.46398397530788 49.40840675),743,,CYYU,,,
+EEA,America/Sao_Paulo,Aeroporto Regional do Planalto Serrano,EEA,BR,POINT (-50.34963377743513 -27.63194875),2880,,SNCP,Correia Pinto,,
+TKM,America/Guatemala,El Peten,TKM,GT,POINT (-89.6059401 17.2281137),0,,,,,
+ERH,Africa/Casablanca,Moulay Ali Cherif Airport,ERH,MA,POINT (-4.401642404012675 31.9476048),3366,,GMFK,Errachidia,Errachidia,Meknes-Tafilalet
+ERI,America/New_York,Erie International Airport,ERI,US,POINT (-80.17440312485985 42.0847174),705,,KERI,Fairview,Erie County,Pennsylvania
+ERL,Asia/Shanghai,Eren Hot Airport,ERL,CN,POINT (112.09475176884322 43.42349855),3280,,ZBER,Erenhot,,Inner Mongolia
+EXT,Europe/London,Exeter International Airport,EXT,GB,POINT (-3.412883379837215 50.7347944),78,http://www.exeter-airport.co.uk/,EGTE,Topsham,Devon,England
+FFA,America/New_York,First Flight,FFA,US,POINT (-75.67153016364745 36.0176628),26,,KFFA,Kill Devil Hills,Dare County,North Carolina
+SUR,America/Toronto,Summer Beaver,SUR,CA,POINT (-88.54191711088025 52.70772085),793,,CJV7,,,
+XGL,America/Winnipeg,Granville Lake,XGL,CA,POINT (-100.55 56.233334),849,,,,,
+NEI,Asia/Vladivostok,Terney Airport,NEI,RU,POINT (136.590342226 45.0814450773),19,,,Terney,,
+LPF,Asia/Shanghai,Liupanshui Yuezhao Airport,LPF,CN,POINT (104.97858236756699 26.60868035),6427,,ZUPS,Liupanshui,,Guizhou Sheng
+KES,America/Winnipeg,Kelsey,KES,CA,POINT (-96.5107075 56.0377456),600,,CZEE,,,
+YSI,America/Toronto,Sans Souci,YSI,CA,POINT (-80 46),580,,CPS9,,,
+YTH,America/Winnipeg,Thompson,YTH,CA,POINT (-97.8605 55.79753),729,,CYTH,,,
+BYX,Australia/Darwin,Baniyala,BYX,AU,POINT (136.22652719918068 -13.1977286),6,,"",,,
+CGA,America/Sitka,Craig SPB,CGA,US,POINT (-133.14616 55.478382),3,,CGA,,,
+WHB,Australia/Perth,Eliwana Airport,WHB,AU,POINT (116.8863515 -22.4306826),1555,,,Eliwana,,Western Australia
+LPT,Asia/Bangkok,Lampang Airport,LPT,TH,POINT (99.5053516 18.2782787),810,,VTCL,Lampang,,Lampang
+LTK,Asia/Damascus,Latakia,LTK,SY,POINT (35.950402853728235 35.40183425),59,,OSLK,Jablah,,Latakia
+ZGI,America/Winnipeg,Gods River Airport,ZGI,CA,POINT (-94.166664 54.683334),627,,CZGI,,,
+MAW,America/Chicago,Malden,MAW,US,POINT (-89.9889806 36.6056127),288,http://www.maldenmo.com/airport_intro.html,KMAW,Malden,Dunklin County,Missouri
+AGL,Pacific/Port_Moresby,Wanigela,AGL,PG,POINT (149.15610272068812 -9.33738355),29,,AYWG,,,
+MAX,Africa/Dakar,Matam,MAX,SN,POINT (-13.32460119277452 15.59567135),52,,GOSM,Ouro Sogui,,Matam
+BFB,America/Anchorage,Blue Fox Bay,BFB,US,POINT (-152.13333 58.183334),262,,,,,
+YZP,America/Vancouver,Sandspit Airport,YZP,CA,POINT (-131.8126998451329 53.2532095),21,,CYZP,,,
+YZT,America/Vancouver,Port Hardy Airport,YZT,CA,POINT (-127.36977008238144 50.68186165),71,,CYZT,,,
+YTD,America/Winnipeg,Thicket Portage,YTD,CA,POINT (-97.7019681 55.3179916),678,,CZLQ,,,
+ZPB,America/Winnipeg,Sachigo Lake Airport,ZPB,CA,POINT (-92.18777514350165 53.88868915),876,,CZPB,,,
+MBA,Africa/Nairobi,Moi International Airport,MBA,KE,POINT (39.600720714576624 -4.0265226),154,http://www.kenyaairports.co.ke/kaa/airports/moi/,HKMO,Mombasa,,Mombasa
+MGZ,Asia/Rangoon,Myeik Airport,MGZ,MM,POINT (98.62146561643826 12.4397928),36,,VYME,Myeik,,Tanintharyi
+MHD,Asia/Tehran,Mashhad International Airport,MHD,IR,POINT (59.641866810223185 36.23409075),3248,,OIMM,Mashhad,,Razavi Khorasan
+OBA,Australia/Brisbane,Oban,OBA,AU,POINT (139 -21),925,,,,,
+LBG,Europe/Paris,Le Bourget,PAR,FR,POINT (2.4494106158371083 48.96222830000001),218,http://www.aeroportsdeparis.fr/,LFPB,Gonesse,Departement du Val-d'Oise,Ile-de-France
+LBQ,Africa/Libreville,Lambarene,LBQ,GA,POINT (10.244905545949424 -0.7041627500000001),82,,FOGR,Lambarene,,Moyen-Ogooue
+CGC,Pacific/Port_Moresby,Cape Gloucester,CGC,PG,POINT (148.51584 -5.459167),0,,AYCG,,,
+RNA,Pacific/Guadalcanal,Ulawa Airport,RNA,SB,POINT (161.98306 -9.864444),88,,AGAR,,,
+DLO,America/Sitka,Dolomi,DLO,US,POINT (-132.05 55.122223),0,,,,,
+EYP,America/Bogota,El Yopal Airport,EYP,CO,POINT (-72.38447809054335 5.3201424),1010,,SKYP,Yopal,,Casanare
+EYW,America/New_York,Key West International Airport,EYW,US,POINT (-81.75961603475078 24.5554773),16,,KEYW,Stock Island,Monroe County,Florida
+EZE,America/Argentina/Buenos_Aires,Ministro Pistarini Airport,BUE,AR,POINT (-58.54742335052262 -34.81681415),65,http://www.aa2000.com.ar/index.php,SAEZ,Ezeiza,Partido de Ezeiza,Buenos Aires
+HCZ,Asia/Shanghai,Chenzhou Beihu Airport,HCZ,CN,POINT (112.84966005166282 25.75482855),1059,,ZGCZ,Chenzhou,,Hunan
+SDZ,Europe/London,Shetland Islands	Metropolitan Area,SDZ,GB,POINT (-1.26169442216 60.31724307915),528,,,,,
+BVD,America/Nome,Sea Port,BVD,US,POINT (-166.31667 53.733334),0,,,,,
+MLH,Europe/Zurich,EuroAirport Basel-Mulhouse-Freiburg,EAP,CH,POINT (7.52434812773247 47.603236949999996),853,,,Hesingue,Departement du Haut-Rhin,Alsace
+ZST,America/Vancouver,Stewart,ZST,CA,POINT (-129.98266963141435 55.9356393),24,,CZST,,,
+DGE,Australia/Sydney,Mudgee,DGE,AU,POINT (149.61393426355673 -32.56243675),1515,,YMDG,Mudgee,Mid-Western Regional,New South Wales
+DGT,Asia/Manila,Dumaguete Airport,DGT,PH,POINT (123.30198574210306 9.3340538),19,,RPVD,Dumaguete,Province of Negros Oriental,Central Visayas
+DWN,America/Chicago,Downtown Airpark,OKC,US,POINT (-97.53333 35.45),1210,,,,,
+FNA,Africa/Freetown,Lungi International Airport,FNA,SL,POINT (-13.200255905684298 8.6153394),98,http://www.freetownairport.com/,GFLL,Masoyila,,Northern Province
+MNM,America/Menominee,Menominee,MNM,US,POINT (-87.63861250817607 45.127409549999996),577,,KMNM,Marinette,Marinette County,Wisconsin
+MNO,Africa/Lubumbashi,Manono,MNO,CD,POINT (27.3936965 -7.288374),2053,,FZRA,Kabalo,Sous-Region du Tanganika,Katanga
+MQT,America/Detroit,Sawyer International Airport,MQT,US,POINT (-87.3871745 46.349652),1204,http://www.sawyerairport.com/,KSAW,K. I. Sawyer Air Force Base,Marquette County,Michigan
+MHG,Europe/Berlin,Mannheim Airport,MHG,DE,POINT (8.516259421778319 49.474830499999996),282,http://www.flugplatz-mannheim.de/,EDFM,Mannheim,Karlsruhe Region,Baden-Wuerttemberg
+MHH,America/Nassau,Marsh Harbour International Airport,MHH,BS,POINT (-77.08448974519862 26.5113679),22,,MYAM,Marsh Harbour,,Central Abaco
+MHK,America/Chicago,Manhattan Municipal Airport,MHK,US,POINT (-96.66961330206684 39.13875695),1046,,KMHK,Ogden,Riley County,Kansas
+MHQ,Europe/Mariehamn,Mariehamn Airport,MHQ,AX,POINT (19.896907611281204 60.121504650000006),45,http://www.finavia.fi/en/mariehamn/,EFMA,Mariehamn,Mariehamn,Mariehamns stad
+YCQ,America/Dawson_Creek,Chetwynd,YCQ,CA,POINT (-121.626998 55.6871986),2000,,CYCQ,,,
+LDH,Australia/Lord_Howe,Lord Howe Island Airport,LDH,AU,POINT (159.07601118441585 -31.538403350000003),5,,YLHI,Woolgoolga,Coffs Harbour,New South Wales
+YED,America/Edmonton,Namao Field,YEA,CA,POINT (-113.5 53.5),0,,,,,
+MQQ,Africa/Ndjamena,Moundou,MQQ,TD,POINT (16.07727105298493 8.6324556),1377,,FTTD,Moundou,,Logone Occidental
+MQS,America/St_Vincent,Mustique,MQS,VC,POINT (-61.17979227766365 12.88770805),22,,TVSM,Port Elizabeth,,Grenadines
+LOZ,America/New_York,Corbin-london,LOZ,US,POINT (-84.07694 37.087223),1217,http://www.london-corbinairport.com/,KLOZ,London,Laurel County,Kentucky
+LPA,Atlantic/Canary,Gran Canaria Airport,LPA,ES,POINT (-15.389182071609515 27.92879945),55,http://www.aena.es/csee/Satellite?pagename=subHome&Language=EN_GB&c=Page&SiteName=LPA&cid=1048858940184,GCLP,Ingenio,Provincia de Las Palmas,Canary Islands
+LOQ,Africa/Gaborone,Lobatse,LOQ,BW,POINT (25.7136876 -25.1982784),3756,,FBLO,Lobatse,,South East
+LPE,America/Bogota,La Primavera,LPE,CO,POINT (-76.21667 3.733333),5452,,SKIM,Ginebra,,Valle del Cauca
+LPI,Europe/Stockholm,Linkoping City Airport,LPI,SE,POINT (15.691669911451392 58.4045718),141,http://www.linkopingsflygplats.se/,ESSL,Linkoping,Linkopings Kommun,OEstergoetland
+PRS,Pacific/Guadalcanal,Parasi,PRS,SB,POINT (158 -8.166667),0,,AGGP,,,
+QJI,America/Godthab,Heliport,QJI,GL,POINT (-52 68.833336),0,,,,,
+YAE,America/Vancouver,Alta Lake,YAE,CA,POINT (-123 50.166668),4671,,,,,
+AFR,Pacific/Port_Moresby,Afore,AFR,PG,POINT (148.39097141857889 -9.138344750000002),2385,,AYAF,,,
+AHI,Asia/Jayapura,Amahai,AHI,ID,POINT (128.92746328743664 -3.3478518499999996),59,,WAPA,Amahai,,Maluku
+CBZ,America/Sitka,Cabin Creek,CBZ,US,POINT (-132.41667 55.38333),843,,,,,
+CMU,Pacific/Port_Moresby,Chimbu,CMU,PG,POINT (144.97041470350763 -6.0242193),4980,,AYCH,,,
+FNB,Europe/Berlin,Neubrandenburg,FNB,DE,POINT (13.305933199579506 53.598580049999995),209,http://www.flughafen-neubrandenburg.de/,EDBN,Trollenhagen,,Mecklenburg-Vorpommern
+FNC,Atlantic/Madeira,Madeira Airport,FNC,PT,POINT (-16.77389415043028 32.69817005),200,http://www.ana.pt/en-US/Aeroportos/Madeira/Funchal/Pages/default.aspx,LPMA,Machico,Machico,Madeira
+FND,Indian/Maldives,Funadhoo Airport,FND,MV,POINT (73.28780102334719 6.1616557499999995),0,,"",Funadhoo,,Shaviyani Atholhu
+GOF,America/Chicago,Goodfellow AFB,SJT,US,POINT (-100.433334 31.466667),1837,,,,,
+HHP,Asia/Hong_Kong,H K Heliport,HKG,HK,POINT (114.2 22.318056),22,,,,,
+HLT,Australia/Melbourne,Hamilton,HLT,AU,POINT (142.0607158889008 -37.646135400000006),761,,YHML,Hamilton,Southern Grampians,Victoria
+MQU,America/Bogota,Mariquita,MQU,CO,POINT (-74.88387397066683 5.2125301),1404,,SKQU,Mariquita,,Tolima
+ADD,Africa/Addis_Ababa,Addis Ababa Bole International Airport,ADD,ET,POINT (38.79727968929066 8.97958075),7601,http://www.ethiopianairports.com,HAAB,Addis Ababa,,Adis Abeba
+DVD,Indian/Antananarivo,Andavadoaka,DVD,MG,POINT (43.259167 -22.078333),42,,"",,,
+MRB,America/New_York,Eastern Wv Regional Airport/Shepherd Field,MRB,US,POINT (-77.98580773635342 39.402153150000004),531,http://www.wvairport.org/,KMRB,Martinsburg,Berkeley County,West Virginia
+MRO,Pacific/Auckland,Masterton/Hood Aerodrome,MRO,NZ,POINT (175.63377695420445 -40.9746295),347,http://www.svas.org.nz/pages/hood_aerodrome_location.htm,NZMS,Masterton,Masterton District,Wellington
+MRQ,Asia/Manila,Marinduque,MRQ,PH,POINT (121.82539942685204 13.3614541),45,,RPUW,Masiga,Province of Marinduque,Mimaropa
+MTO,America/Chicago,Coles County Memorial,MTO,US,POINT (-88.27827012095959 39.4760792),708,,KMTO,Mattoon,Coles County,Illinois
+MSO,America/Denver,Missoula International Airport,MSO,US,POINT (-114.08780053891442 46.91686665),3185,,KMSO,Orchard Homes,Missoula County,Montana
+MSP,America/Chicago,Minneapolis-St. Paul International Airport,MSP,US,POINT (-93.2209280537696 44.878019050000006),803,http://www.mspairport.com/,KMSP,Richfield,Hennepin County,Minnesota
+MSQ,Europe/Minsk,Minsk National Airport,MSQ,BY,POINT (28.03506962645968 53.8899573),685,http://airport.by/en,UMMS,Smilavichy,,Minsk
+LPG,America/Argentina/Buenos_Aires,La Plata,LPG,AR,POINT (-57.95 -34.916668),150,,SADL,La Plata,Partido de La Plata,Buenos Aires
+LPJ,America/Caracas,Pijiguaos,LPJ,VE,POINT (-67.666664 7),183,,SVAS,San Juan de Payara,Municipio Pedro Camejo,Apure
+LPK,Europe/Moscow,Lipetsk Airport,LPK,RU,POINT (39.6 52.61667),511,,UUOL,Lipetsk,,Lipetsk
+JOC,America/Los_Angeles,Centerport Heliport,SNA,US,POINT (-117.869446 33.666668),0,,,,,
+JSN,America/Los_Angeles,Sherman Oaks Heliport,LAX,US,POINT (-118.25 34.066666),0,,,,,
+YNF,America/St_Johns,Deer Lake/Stephenville,YNF,CA,POINT (-57.94389 48.946945),0,,,,,
+YNR,America/Winnipeg,Arnes,YNR,CA,POINT (-97 50.833332),0,,,,,
+YNE,America/Winnipeg,Norway House Airport,YNE,CA,POINT (-97.84823872487667 53.95694255),734,,CYNE,,,
+KKF,America/Nome,Kagvik Creek,KKF,US,POINT (-163.5 67.6),0,,,,,
+LPO,America/Chicago,Municipal,LPO,US,POINT (-86.71667 41.6),803,http://www.laportemuniairport.com/,KPPO,LaPorte,LaPorte County,Indiana
+LPX,Europe/Riga,Liepaya Airport,LPX,LV,POINT (21.1 56.516666),19,http://www.liepaja-airport.lv/,EVLA,Grobina,,Grobina
+LPY,Europe/Paris,Loudes Airport,LPY,FR,POINT (3.766667 45.083332),2660,,LFHP,Saint-Paulien,Departement de la Haute-Loire,Auvergne
+OCC,America/Guayaquil,Coca Airport,OCC,EC,POINT (-76.99002032360985 -0.4567311),774,,SECO,Puerto Francisco de Orellana,,Orellana
+OCH,America/Chicago,A L Mangham Jr. Regional,OCH,US,POINT (-94.70800648028734 31.576551000000002),288,http://www.ci.nacogdoches.tx.us/index.aspx?nid=634,KOCH,Nacogdoches,Nacogdoches County,Texas
+KBK,America/Sitka,Klag Bay,KBK,US,POINT (-136.16667 57.666668),0,,,,,
+SGG,Asia/Kuching,Simanggang,SGG,MY,POINT (111.460556 1.222778),32,,,,,
+DJU,Atlantic/Reykjavik,Djupivogur,DJU,IS,POINT (-14.2775558 64.6430303),16,,BIDV,Reydarfjoerdur,,East
+DKA,Africa/Lagos,Katsina,DKA,NG,POINT (7.659455216289262 13.0057213),1617,http://www.faannigeria.org/nigeria-airport.php?airport=18,"",Katsina,,Katsina
+HAE,America/Phoenix,Havasupai,HAE,US,POINT (-112.66944 36.230556),4366,,,,,
+HAP,Australia/Brisbane,Long Island,HAP,AU,POINT (148.75 -20.5),0,,,,,
+HCB,America/Anchorage,Shoal Cove,HCB,US,POINT (-131.28334 55.45),150,,,,,
+ILY,Europe/London,Glenegedale Airport,ILY,GB,POINT (-6.257452506035049 55.68289935),22,,EGPI,Isle of Islay,Argyll and Bute,Scotland
+IMK,Asia/Kathmandu,Simikot,IMK,NP,POINT (81.8183855649316 29.97058895),9711,,VNST,Burang,,Tibet Autonomous Region
+IMQ,Asia/Tehran,Maku International Airport,IMQ,IR,POINT (44.92203364988445 39.1930169),3120,,OITU,Showt,,Azarbayjan-e Gharbi
+ABJ,Africa/Abidjan,Felix Houphouet Boigny Airport,ABJ,CI,POINT (-3.925957338659794 5.264928299999999),42,,DIAP,Abidjan,,Lagunes
+IXI,Asia/Kolkata,Lilabari Airport,IXI,IN,POINT (94.09734635719008 27.2961368),387,,VELR,North Lakhimpur,Lakhimpur,Assam
+WNC,America/Anchorage,Naukati Bay SPB,WNC,US,POINT (-133.225 55.854168),0,,,,,
+JRD,America/Los_Angeles,Heliport,RAL,US,POINT (-117.36667 33.983334),0,,,,,
+NBP,America/New_York,Battery Pk City/N. Cov,NYC,US,POINT (-74.00807244760026 40.7012724),0,,,,,
+LQK,America/New_York,Pickens,LQK,US,POINT (-82.7 34.88333),1102,http://www.co.pickens.sc.us/Pickens%20County%20Airport/default.aspx,KLQK,Pickens,Pickens County,South Carolina
+LQM,America/Bogota,Puerto Leguizamo,LQM,CO,POINT (-74.583336 -0.3),606,,SKLG,Puerto Leguizamo,,Putumayo
+LRB,Africa/Maseru,Leribe,LRB,LS,POINT (28 -28.966667),5377,,FXLR,Leribe,,Leribe
+LRT,Europe/Paris,Lann Bihoue Airport,LRT,FR,POINT (-3.436394 47.75374),190,,LFRH,Ploemeur,Departement du Morbihan,Brittany
+LRU,America/Denver,Municipal,LRU,US,POINT (-106.92167 32.290833),4442,,KLRU,Mesilla,Dona Ana County,New Mexico
+IXJ,Asia/Kolkata,Satwari Airport,IXJ,IN,POINT (74.83873699435969 32.6883122),951,,VIJU,Jammu,Jammu,Kashmir
+AEK,Pacific/Port_Moresby,Aseki,AEK,PG,POINT (146.28334 -7.366667),3694,,AYAX,,,
+ARL,Africa/Ouagadougou,Arly,ARL,BF,POINT (1.483 11.5970001),580,,DFER,,,
+LRV,America/Caracas,Los Roques,LRV,VE,POINT (-66.75 11.833333),0,,SVRS,Caraballeda,,Vargas
+LSB,America/Denver,Lordsburg,LSB,US,POINT (-108.666664 32.416668),4396,,KLSB,Lordsburg,Hidalgo County,New Mexico
+LSD,America/New_York,Blue Grass Station Army Heliport,LEX,US,POINT (-84.4951359 38.0317136),1000,,,Mount Vernon,Fayette County,Kentucky
+LSK,America/Denver,Lusk,LSK,US,POINT (-104.445526 42.788082),5068,http://www.townoflusk.org/index.asp?SEC=8DC74273-DA87-42DE-9B52-6431163B38FE&Type=B_BASIC,KLSK,Lusk,Niobrara County,Wyoming
+LSM,Asia/Kuching,Lawas,LSM,MY,POINT (118.00833 4.002778),0,,WBGD,Sungai Nyamuk,,East Kalimantan
+LSN,America/Los_Angeles,Los Banos,LSN,US,POINT (-120.85 37.066666),124,,KLSN,Los Banos,Merced County,California
+LSO,Europe/Paris,Talmont,LSO,FR,POINT (-1.783333 46.5),32,,LFOO,Les Sables-d'Olonne,Departement de la Vendee,Pays de la Loire
+BWE,Europe/Berlin,Braunschweig,BWE,DE,POINT (10.533333 52.266666),229,http://www.flughafen-braunschweig-wolfsburg.de/,EDVE,,,
+CHI,America/Chicago,Chicago FSS,CHI,US,POINT (-87.6297982 41.8781136),744,,,,,
+CKX,America/Anchorage,Chicken,CKX,US,POINT (-141.95283887481474 64.06816475),1515,,CKX,,,
+LSQ,America/Santiago,Los Angeles,LSQ,CL,POINT (-72.422775 -37.3975),416,,SCGE,Los Angeles,Provincia de Biobio,Biobio
+LSV,America/Los_Angeles,Nellis AFB,LAS,US,POINT (-115.8 36.3),6295,http://www.nellis.af.mil/,KLSV,Pahrump,Nye County,Nevada
+CRY,Australia/Perth,Carlton Hill,CRY,AU,POINT (128.61667 -15.466667),144,,"",,,
+CSL,America/Los_Angeles,O Sullivan Army Air Field,CSL,US,POINT (-120.63917 35.236668),167,,,,,
+DMM,Asia/Riyadh,King Fahd International Airport,DMM,SA,POINT (49.79887844079486 26.467396649999998),108,,OEDF,Al Awjam,,Eastern Province
+ITO,Pacific/Honolulu,Hilo International Airport,ITO,US,POINT (-155.04755391447696 19.718830599999997),39,,PHTO,Hilo,Hawaii County,Hawaii
+ITP,America/Sao_Paulo,Itaperuna,ITP,BR,POINT (-41.87582988333334 -21.219961),331,,SDUN,Itaperuna,Itaperuna,Rio de Janeiro
+IWS,America/Chicago,West Houston,HOU,US,POINT (-95.67379148764965 29.819162849999998),131,http://www.westhoustonairport.com/,KIWS,Oak Cliff Place,Harris County,Texas
+IXA,Asia/Kolkata,Agartala Airport,IXA,IN,POINT (91.24006658412866 23.8882755),45,,VEAT,Agartala,West Tripura,Tripura
+IXB,Asia/Kolkata,Bagdogra Airport,IXB,IN,POINT (88.32906870592839 26.6821128),255,http://aai.aero/allAirports/bagdogra_generalinfo.jsp,VEBD,Baghdogra,Darjiling,West Bengal
+IXC,Asia/Kolkata,Chandigarh Airport,IXC,IN,POINT (76.79098506460022 30.674192249999997),1020,,VICG,Chandigarh,Chandigarh,Chandigarh
+IXD,Asia/Kolkata,Bamrauli Airport,IXD,IN,POINT (81.73421016673637 25.43689825),308,http://aai.aero/allAirports/allahabad.jsp,VIAL,Allahabad,Allahabad,Uttar Pradesh
+IXE,Asia/Kolkata,Mangalore Airport,IXE,IN,POINT (74.88765239960827 12.956335800000002),301,,VOML,Mangalore,Dakshina Kannada,Karnataka
+IXK,Asia/Kolkata,Keshod,IXK,IN,POINT (70.26789366226589 21.31486295),160,,VAKS,Keshod,Junagadh,Gujarat
+MUV,America/New_York,Mustin Alf,PHL,US,POINT (-75.24861 39.868057),19,,,,,
+LSW,Asia/Jakarta,Malikus Saleh Airport,LSW,ID,POINT (97.166664 5.166667),0,,WITM,Lhokseumawe,,Aceh
+LSX,Asia/Jakarta,Lhok Sukon,LSX,ID,POINT (97.316666 5.066667),22,,WITL,Matangkuli,,Aceh
+IXM,Asia/Kolkata,Madurai Airport,IXM,IN,POINT (78.09397312971166 9.83575295),410,http://www.airportsindia.org.in/allAirports/madurai_airpo_gi.jsp,VOMD,Tirupparangunram,Madurai,Tamil Nadu
+AAT,Asia/Urumqi,Altay Airport,AAT,CN,POINT (88.08948249042332 47.74833705),2408,,ZWAT,Awiytan,,Xinjiang Uygur Zizhiqu
+ABB,Africa/Lagos,Asaba International Airport,ABB,NG,POINT (6.663854565066257 6.20565465),216,,DNAS,Asaba,,
+YCV,America/Montreal,Cartierville,YCV,CA,POINT (-73.75 45.516666),0,,,,,
+AFS,Asia/Samarkand,Zarafshan,AFS,UZ,POINT (64.23177140418719 41.6155248),1338,,UTSN,Tomdibuloq,,Navoiy
+AIC,Pacific/Majuro,Airok,AIC,MH,POINT (170.83333 7.5),16,,"",,,
+XYP,Europe/Stockholm,Avesta Krylbo,XYP,SE,POINT (16.215858548 60.1312969721),285,,,,,
+TRP,America/Anchorage,Tree Point Heliport,TRP,US,POINT (-154.052675125 57.353380232532),0,,,,,
+LSZ,Europe/Zagreb,Losinj Airport,LSZ,HR,POINT (14.385833 44.566944),101,,LDLO,Mali Losinj,,Primorsko-Goranska
+LTA,Africa/Johannesburg,Letaba,LTA,ZA,POINT (30.15 -23.833332),2408,,FATZ,Tzaneen,Mopani District Municipality,Limpopo
+LTB,Australia/Hobart,Latrobe,LTB,AU,POINT (146.4 -41.233334),19,,"",Latrobe,Latrobe,Tasmania
+LTC,Africa/Ndjamena,Lai,LTC,TD,POINT (16.3 9.416667),1141,,FTTH,Lai,,Tandjile
+LTD,Africa/Tripoli,Ghadames,LTD,LY,POINT (9.509722 30.129168),1059,,HLTD,Ghadamis,,Sha`biyat Nalut
+LRF,America/Chicago,Little Rock AFB,LRF,US,POINT (-92.13876998759838 34.90592735),337,http://www.littlerock.af.mil/,KLRF,Little Rock Air Force Base,Pulaski County,Arkansas
+LTG,Asia/Kathmandu,Langtang,LTG,NP,POINT (85.6 28.233334),16332,,VNLT,Chongdui,,Tibet Autonomous Region
+YMC,America/Montreal,Maricourt Airstrip,YMC,CA,POINT (-70.816666 56.566666),0,,,,,
+LSC,America/Santiago,La Florida Airport,LSC,CL,POINT (-71.20194424333569 -29.915545950000002),469,,SCSE,La Serena,Provincia de Elqui,Coquimbo
+LTI,Asia/Hovd,Altai,LTI,MN,POINT (96.416664 46.65),6250,,ZMAT,Tsagaan-Olom,,Govi-Altay
+IXR,Asia/Kolkata,Birsa Munda Airport,IXR,IN,POINT (85.32554620752549 23.31458225),2086,http://airportsindia.org.in/allAirports/ranchi.jsp,VERC,Ranchi,Ranchi,Jharkhand
+AGG,Pacific/Port_Moresby,Angoram,AGG,PG,POINT (144.07388 -4.168611),19,,"",,,
+IXU,Asia/Kolkata,Chikkalthana Airport,IXU,IN,POINT (75.40244204843691 19.86437015),1889,http://aai.aero/allAirports/aurangabad_generalinfo.jsp,VAAU,Aurangabad,Aurangabad Division,Maharashtra
+LSE,America/Chicago,La Crosse Regional Airport,LSE,US,POINT (-91.25557153542314 43.878607),587,http://www.lseairport.com/,KLSE,French Island,La Crosse County,Wisconsin
+LSL,America/Costa_Rica,Los Chiles,LSL,CR,POINT (-84.70532258927273 11.03558365),137,,MRLC,Los Chiles,,Alajuela
+LSP,America/Caracas,Josefa Camejo Airport,LSP,VE,POINT (-70.14756704091192 11.77786265),72,,SVJC,Punto Fijo,Municipio Carirubana,Falcon
+CIV,America/Sitka,Chomley,CIV,US,POINT (-132.21666 55.216667),249,,,,,
+CLC,America/Chicago,Metroport,CLC,US,POINT (-95.1375 29.556944),59,,,,,
+CRJ,Australia/Adelaide,Coorabie,CRJ,AU,POINT (132.2960052 -31.8943996),32,,"",,,
+CWS,America/Los_Angeles,Center Island,CWS,US,POINT (-122.83139 47.485),311,,"78WA",,,
+DMO,America/Chicago,Sedalia,DMO,US,POINT (-93.1753328280421 38.709028450000005),885,http://ci.sedalia.mo.us/content/198/224/default.aspx,KDMO,Sedalia,Pettis County,Missouri
+DRS,Europe/Berlin,Dresden International Airport,DRS,DE,POINT (13.769480779988587 51.134299299999995),748,http://www.dresden-airport.de/en/index.html,EDDC,,,
+IXW,Asia/Kolkata,Sonari,IXW,IN,POINT (86.1693038372328 22.8136029),469,,VEJS,Jamshedpur,Purba Singhbhum,Jharkhand
+IXY,Asia/Kolkata,Kandla,IXY,IN,POINT (70.10308342930023 23.1135071),82,http://aai.aero/allAirports/kandla_generalinfo.jsp,VAKE,Gandhidham,Kachchh,Gujarat
+IXZ,Asia/Kolkata,Port Blair Airport,IXZ,IN,POINT (92.73036550632911 11.640875),39,,VOPB,Port Blair,South Andaman,Andaman and Nicobar Islands
+JGA,Asia/Kolkata,Govardhanpur Airport,JGA,IN,POINT (70.00708076073744 22.466835250000003),36,,VAJM,Bedi,Jamnagar,Gujarat
+JGB,Asia/Kolkata,Jagdalpur,JGB,IN,POINT (82.03477402779657 19.0734828),1837,,"",Jagdalpur,Bastar,Chhattisgarh
+JGD,Asia/Shanghai,Jiagedaqi Airport,JGD,CN,POINT (124.1158382750555 50.371759749999995),1167,,ZYJD,Jagdaqi,,Inner Mongolia
+NDP,America/Chicago,Ellyson NAS,PNS,US,POINT (-87.18833 30.4725),75,,,,,
+LSS,America/Guadeloupe,Terre-de-Haut,LSS,GP,POINT (-61.580708330424564 15.8644407),42,,TFFS,Terre-de-Bas,Guadeloupe,Guadeloupe
+LST,Australia/Hobart,Launceston Airport,LST,AU,POINT (147.21326082848134 -41.54372585),485,http://www.launcestonairport.com.au/,YMLT,Perth,Northern Midlands,Tasmania
+LSY,Australia/Sydney,Lismore Airport,LSY,AU,POINT (153.25890157090288 -28.83071845),59,,YLIS,Lismore,Lismore Municipality,New South Wales
+LVA,Europe/Paris,Entrammes,LVA,FR,POINT (-0.7432444592045966 48.0321305),305,,LFOV,Laval,Departement de la Mayenne,Pays de la Loire
+JOJ,America/Cambridge_Bay,Doris Lake Aerodrome,UZM,CA,POINT (-106.585278 68.125278),72,,,Doris Lake,,
+LUW,Asia/Makassar,Bubung Airport,LUW,ID,POINT (122.78333 -0.933333),1397,,WAMW,Luwuk,,Central Sulawesi
+LVB,America/Sao_Paulo,Dos Galpoes,LVB,BR,POINT (-55.61667 -30.833332),997,,"",Rivera,,Rivera
+LVL,America/New_York,Lawrenceville,LVL,US,POINT (-77.833336 36.75),229,,KLVL,Lawrenceville,Brunswick County,Virginia
+LVM,America/Denver,Mission Field,LVM,US,POINT (-110.566666 45.666668),4658,http://www.parkcounty.org/site/Air_M_1.html#mf,KLVM,Livingston,Park County,Montana
+LVS,America/Denver,Las Vegas,LVS,US,POINT (-105.21667 35.6),6476,http://www.lasvegasnm.gov/business/municipal_airport/index.php,KLVS,Las Vegas,San Miguel County,New Mexico
+NIE,America/Anchorage,Niblack,NIE,US,POINT (-132.15 55.066666),134,,,,,
+JSH,Europe/Athens,Sitia Airport,JSH,GR,POINT (26.100884020397434 35.2161444),376,,LGST,Siteia,Nomos Lasithiou,Crete
+JSI,Europe/Athens,Skiathos Airport,JSI,GR,POINT (23.50318526783782 39.17848895),54,,LGSK,Skiathos,Nomos Magnisias,Thessaly
+KAB,Africa/Harare,Kariba,KAB,ZW,POINT (28.888200702488827 -16.517941),1706,,FVKB,Kariba,,Mashonaland West
+LBE,America/New_York,Westmoreland County Airport,LBE,US,POINT (-79.40641957179801 40.2729348),1199,,KLBE,Lawson Heights,Westmoreland County,Pennsylvania
+LBF,America/Chicago,Lee Bird Field,LBF,US,POINT (-100.68862442361578 41.128020750000005),2777,,KLBF,North Platte,Lincoln County,Nebraska
+ZFB,America/Blanc-Sablon,Old Fort Bay,ZFB,CA,POINT (-57.916668 51.583332),0,,,,,
+ALM,America/Denver,Municipal,ALM,US,POINT (-105.985275 32.845833),4206,,KALM,Boles Acres,Otero County,New Mexico
+AOL,America/Argentina/Cordoba,Paso De Los Libres,AOL,AR,POINT (-57.15101498707307 -29.689223050000003),219,,SARL,Paso de los Libres,Departamento de Paso de los Libres,Corrientes
+ASH,America/New_York,Boire Field,ASH,US,POINT (-71.51763052967607 42.78259315),160,,KASH,Nashua,Hillsborough County,New Hampshire
+BGL,Asia/Kathmandu,Baglung,BGL,NP,POINT (83.6656309 28.2127945),3274,,VNBL,Baglung,,Western Region
+BGT,America/Phoenix,Bagdad,BGT,US,POINT (-113.1728287 34.5932537),4156,,E51,Bagdad,Yavapai County,Arizona
+BJO,America/La_Paz,Bermejo,BJO,BO,POINT (-64.333336 -22.866667),1141,,SLBJ,San Ramon de la Nueva Oran,,Salta
+CSW,America/Porto_Velho,Colorado do Oeste,CSW,BR,POINT (-61.168056 -13.019444),711,,,,,
+DAO,Pacific/Port_Moresby,Dabo,DAO,PG,POINT (147.84944 -8.433056),101,,"",,,
+FCT,America/Los_Angeles,Firing Center AAF,YKM,US,POINT (-120.51667 46.6),1059,,,,,
+FLU,America/New_York,Flushing,NYC,US,POINT (-73.83444 40.775555),36,,,,,
+JCX,America/Los_Angeles,Citicorp Plaza Heliport,LAX,US,POINT (-118.25 34.066666),360,,,,,
+JHW,America/New_York,Jamestown Airport,JHW,US,POINT (-79.26453974336357 42.15277265),1735,,KJHW,Celoron,Chautauqua County,New York
+JKH,Europe/Athens,Chios Airport,JKH,GR,POINT (26.140171285583204 38.3421243),29,http://www.hcaa-eleng.gr/chios.htm,LGHI,Chios,Chios,North Aegean
+JKL,Europe/Athens,Kalymnos Island National Airport,JKL,GR,POINT (26.939981365194278 36.9632747),715,,LGKY,Kalymnos,Nomos Dodekanisou,South Aegean
+JKR,Asia/Kathmandu,Janakpur Airport,JKR,NP,POINT (85.92374733048763 26.710195149999997),203,,VNJP,Janakpur,,Central Region
+AMU,Pacific/Port_Moresby,Amanab,AMU,PG,POINT (141.15 -3.516667),1112,,AYAM,,,
+AMY,Indian/Antananarivo,Ambatomainty,AMY,MG,POINT (45.666668 -17.683332),938,,"",,,
+AOB,Pacific/Port_Moresby,Annanberg,AOB,PG,POINT (144.65 -4.916667),150,,"",,,
+DGA,America/Belize,Dangriga,DGA,BZ,POINT (-88.566666 17.183332),337,,"",,,
+ZFZ,America/New_York,Buffalo Depew Rr,BUF,US,POINT (-78.8783689 42.8864468),0,,,,,
+LDI,Africa/Dar_es_Salaam,Kikwetu,LDI,TZ,POINT (39.75871936630854 -9.850524),100,,HTLI,Lindi,,Lindi
+BOF,America/New_York,Bolling AFB,WAS,US,POINT (-77.03333 38.9),108,,,,,
+LDJ,America/New_York,Linden,LDJ,US,POINT (-74.24575430938478 40.61657115),23,http://www.lindenairportnj.com/,KLDJ,Linden,Union County,New Jersey
+LWK,Europe/London,Lerwick/Tingwall,SDZ,GB,POINT (-1.15 60.15),0,,EGET,,,
+LDY,Europe/London,City of Derry Airport,LDY,GB,POINT (-7.155902754752817 55.039795749999996),22,http://www.cityofderryairport.com/,EGAE,Eglinton,,Northern Ireland
+BAU,America/Sao_Paulo,Bauru Airport,BRI,BR,POINT (-49.05328145802982 -22.3450535),2047,,,Bauru,,Sao Paulo
+DGK,Africa/Maputo,Dugong,DGK,MZ,POINT (35.443611 -22.134167),0,,,,,
+LEJ,Europe/Berlin,Leipzig/Halle Airport,LEJ,DE,POINT (12.229585904866344 51.421190100000004),465,http://www.leipzig-halle-airport.de/en/index.html,EDDP,,,
+COL,Europe/London,Isle Of Coll,COL,GB,POINT (-6.616667 56.61667),39,,EGEL,,,
+CUK,America/Belize,Caye Caulker,CUK,BZ,POINT (-88.0322953740101 17.7351537),16,,MZCK,,,
+LPW,America/Sitka,Little Port Walter,LPW,US,POINT (-134.83333 56.38333),1784,,,,,
+LFT,America/Chicago,Lafayette Regional Airport,LFT,US,POINT (-91.98991065628175 30.203161700000003),42,http://www.lftairport.com/Home,KLFT,Lafayette,Lafayette Parish,Louisiana
+LTH,America/Los_Angeles,Lathrop Wells,LTH,US,POINT (-116.4133813 36.6346755),2595,,,,,
+LSR,America/Nome,Lost River,LSR,US,POINT (-139.73334 59.55),42,,,,,
+LWA,Asia/Manila,Lwbak,LWA,PH,POINT (121.183334 17.35),2309,,"",Lubuagan,Kalinga,Cordillera
+ADC,Pacific/Port_Moresby,Andakombe,ADC,PG,POINT (145.74531004892887 -7.1371023000000005),3631,,AYAN,,,
+AFT,Pacific/Guadalcanal,Afutara Aerodrome,AFT,SB,POINT (160.85 -9.2),0,,AGAF,,,
+AGQ,Europe/Athens,Agrinion,AGQ,GR,POINT (21.3929834 38.6137021),101,,LGAG,Dhokimion,Nomos Aitolias kai Akarnanias,West Greece
+AGV,America/Caracas,Acarigua,AGV,VE,POINT (-69.23333 9.552222),711,,SVAC,Araure,Municipio Araure,Portuguesa
+AGX,Asia/Kolkata,Agatti Island Airport,AGX,IN,POINT (72.17987 10.828967),26,,VOAT,Kavaratti,Lakshadweep,Laccadives
+AIE,Pacific/Port_Moresby,Aiome,AIE,PG,POINT (144.66667 -5.166667),4478,,AYAO,,,
+LXG,Asia/Vientiane,Luang Namtha Airport,LXG,LA,POINT (101.46667 21.05),2890,,VLLN,Louang Namtha,,Loungnamtha
+DOK,Europe/Kiev,Donetsk International Airport,DOK,UA,POINT (37.74079599426868 48.0713952),757,http://airport.dn.ua/,UKCC,Avdiyivka,,Donetsk
+DUS,Europe/Berlin,Dusseldorf International Airport,DUS,DE,POINT (6.761736665024513 51.2869035),108,http://www.dus.com/dus_en/,EDDL,,,
+FIE,Europe/London,Fair Isle,FIE,GB,POINT (-1.6284978260484486 59.5347796),259,http://www.fairisle.org.uk/egef/index.htm,EGEF,,,
+HDA,America/Sitka,Hidden Falls,HDA,US,POINT (-134.85 57.2),0,,,,,
+NQT,Europe/London,Nottingham Airport,NQT,GB,POINT (-1.166667 52.966667),111,http://www.nottinghamairport.co.uk/,EGBN,,,
+OHE,Asia/Shanghai,Mohe Airport,OHE,CN,POINT (122.42525985187558 52.9156841),1804,,ZYMH,Xilinji,,Heilongjiang Sheng
+OHH,Asia/Srednekolymsk,Novostroyka Airport,OHH,RU,POINT (142.87331907232237 53.51637295),95,,UHSH,Okha,,Sakhalin
+NWS,America/New_York,Pier 11/Wall St. SPB,NYC,US,POINT (-74.01056 40.703056),36,,,,,
+WOO,America/Anchorage,Woodchopper,WOO,US,POINT (-143.53334 65.333336),1374,,,,,
+LXN,America/Chicago,Lexington,LXN,US,POINT (-99.75 40.783333),2345,http://www.cityoflex.com/index.aspx?page=46,KLXN,Lexington,Dawson County,Nebraska
+TIS,Australia/Brisbane,Thursday Island,TIS,AU,POINT (142.05 -10.5),0,,,,,
+LXR,Africa/Cairo,Luxor International Airport,LXR,EG,POINT (32.70656738421505 25.6705395),82,,HELX,Luxor,,Luxor
+DDI,Australia/Brisbane,Daydream Island,DDI,AU,POINT (148.81667 -20.266666),0,,,,,
+DOI,Pacific/Port_Moresby,Doini,DOI,PG,POINT (150.7230841868182 -10.701181250000001),32,,AYDO,,,
+LXS,Europe/Athens,Limnos Airport,LXS,GR,POINT (25.236124249264446 39.91859355),29,,LGLM,Myrina,Nomos Lesvou,North Aegean
+LFW,Africa/Lome,Lome Airport,LFW,TG,POINT (1.2560093951906006 6.17020235),72,,DXXX,Lome,,Maritime
+LGA,America/New_York,LaGuardia Airport,NYC,US,POINT (-73.87336398511545 40.7757145),21,https://www.laguardiaairport.com/,KLGA,The Bronx,Bronx,New York
+LGB,America/Los_Angeles,Long Beach Airport,LGB,US,POINT (-118.15342922166721 33.815565899999996),60,http://www.lgb.org/,KLGB,Signal Hill,Los Angeles County,California
+AIY,America/New_York,Bader Field,AIY,US,POINT (-74.4254622 39.3859082),-3,,,,,
+BAJ,Pacific/Port_Moresby,Bali,BAJ,PG,POINT (149.13333 -4.833333),0,,"",,,
+LGD,America/Los_Angeles,La Grande,LGD,US,POINT (-118.00772054151332 45.2891675),2717,http://union-county.org/public-works/airport/,KLGD,La Grande,Union County,Oregon
+LGG,Europe/Brussels,Liege Airport,LGG,BE,POINT (5.440920445172662 50.6385382),659,http://www.liegeairport.be/,EBLG,Awans,Province de Liege,Wallonia
+LGI,America/Nassau,Deadmans Cay Airport,LGI,BS,POINT (-75.0883369563434 23.1785489),9,,MYLD,Clarence Town,,Long Island
+LGK,Asia/Kuala_Lumpur,Langkawi International Airport,LGK,MY,POINT (99.72854348520173 6.3296375),29,,WMKL,Kuah,Langkawi,Kedah
+LLE,Africa/Johannesburg,Malelane,LLE,ZA,POINT (31.56539089892155 -25.473720450000002),1024,,FAMN,Komatipoort,Ehlanzeni District,Mpumalanga
+LXU,Africa/Lusaka,Lukulu,LXU,ZM,POINT (23.2 -14.416667),3353,,FLLK,Lukulu,,Western
+LLJ,Asia/Jakarta,Silampari Airport,LLJ,ID,POINT (102.91416981570998 -3.2889355),371,http://hubud.dephub.go.id/?en+info_bandara+detail+100,WIKL,Lubuklinggau,,South Sumatra
+LXV,America/Denver,Leadville,LXV,US,POINT (-106.31598867784493 39.22008835),9911,http://www.lxvairport.com/home.html,KLXV,Leadville,Lake County,Colorado
+SIL,Pacific/Port_Moresby,Sila,SIL,PG,POINT (147.5 -8.333333),4002,,AYSG,,,
+LLO,Asia/Makassar,Bua Airport,LLO,ID,POINT (120.24361440556194 -3.0777591),13,,WAFD,Beringinjaya,,South Sulawesi
+LLT,Africa/Luanda,Lobito,LLT,AO,POINT (13.538592590764758 -12.3711467),0,,,Lobito,,Benguela
+AKH,Asia/Riyadh,Prince Sultan Air Base,AKH,SA,POINT (47.580555 24.063334),1568,,OEPS,Ad Dilam,,Ar Riyad
+YDH,America/St_Johns,Daniels Harbour,YDH,CA,POINT (-57.583332 50.216667),0,,,,,
+AQM,America/Porto_Velho,Ariquemes,AQM,BR,POINT (-63.066666 -9.933333),334,,SJOG,Ariquemes,Ariquemes,Rondonia
+ARP,Pacific/Port_Moresby,Aragip,ARP,PG,POINT (149.5 -9.8),1489,,"",,,
+ASE,America/Denver,Aspen Airport,ASE,US,POINT (-106.864685 39.219685),7762,http://aspenairport.com/,KASE,Aspen,Pitkin County,Colorado
+ASG,Pacific/Auckland,Ashburton,ASG,NZ,POINT (171.78334 -43.9),255,,NZAS,Ashburton,Ashburton District,Canterbury
+ASQ,America/Los_Angeles,Austin,ASQ,US,POINT (-117.19708239162144 39.4664739),5734,,KTMT,,,
+ASU,America/Asuncion,Silvio Pettirossi International Airport,ASU,PY,POINT (-57.51563884189728 -25.2355931),232,,SGAS,Limpio,,Central
+ATA,America/Lima,Anta,ATA,PE,POINT (-77.59829150858305 -9.34818315),8927,,SPHZ,Anta,Provincia de Carhuaz,Ancash
+ATT,America/Nome,Atmautluak Airport,ATT,US,POINT (-162.2734311 60.8631043),39,,"",,,
+AUE,Africa/Cairo,Abu Rudeis,AUE,EG,POINT (33.20053351373349 28.90059595),29,,"",,,
+AUW,America/Chicago,Municipal,AUW,US,POINT (-89.623055 44.923332),1184,http://www.ci.wausau.wi.us/Departments/Airport/GeneralInformation.aspx,KAUW,Schofield,Marathon County,Wisconsin
+AUZ,America/Chicago,Municipal Airport,AUZ,US,POINT (-88.316666 41.75),702,,KARR,Aurora,Kane County,Illinois
+AVI,America/Havana,Maximo Gomez,AVI,CU,POINT (-78.79139 22.025),259,,MUCA,Ciro Redondo,,Ciego de Avila
+HEL,Europe/Helsinki,Helsinki-Vantaa Airport,HEL,FI,POINT (24.947206800038444 60.32135905),173,http://www.finavia.fi/en/helsinki-airport,EFHK,,,
+JGC,America/Phoenix,Heliport,GCN,US,POINT (-112.1475 35.951942),6591,,,,,
+YDS,America/Vancouver,Desolation Sound,YDS,CA,POINT (-124.72931 49.965996),0,,,,,
+BRR,Europe/London,North Bay Airport,BRR,GB,POINT (-7.440278 57.023335),16,http://www.hial.co.uk/barra-airport.html,EGPR,,,
+AED,America/Anchorage,Aleneva,AED,US,POINT (-152.9 58.033333),1099,,,,,
+YCJ,America/Vancouver,Cape St James,YCJ,CA,POINT (-131.01666 51.933334),0,,,,,
+YDK,America/Toronto,Main Duck Island,YDK,CA,POINT (-76.61667 43.933334),0,,,,,
+LLW,Africa/Blantyre,Lilongwe International Airport,LLW,MW,POINT (33.78211495665334 -13.7886661),4035,,FWKI,Lilongwe,Lilongwe District,Central Region
+ONN,America/Anchorage,Onion Bay,ONN,US,POINT (-152.83333 58.233334),1817,,,,,
+PNS,America/Chicago,Pensacola International Airport,PNS,US,POINT (-87.18808592919096 30.4725975),75,http://www.flypensacola.com/,KPNS,Ferry Pass,Escambia County,Florida
+PBA,America/Anchorage,Point Barrow,BRW,US,POINT (-156.76666 71.28333),49,,,,,
+CWO,America/Chicago,Ft Wolter AAF,MWL,US,POINT (-98.11667 32.8),872,,,,,
+YMR,America/Vancouver,Merry Island,YMR,CA,POINT (-77.51667 55.483334),0,,,,,
+JRE,America/New_York,East 60th Street Heliport,NYC,US,POINT (-73.97207729134186 40.74238615),0,,,,,
+YNK,America/Vancouver,Nootka Sound,YNK,CA,POINT (-125.916664 50.083332),0,,,,,
+TEK,America/Anchorage,Tatitlek,TEK,US,POINT (-146.6880463 60.8719607),62,,PAKA,,,
+LPL,Europe/London,Liverpool John Lennon Airport,LPL,GB,POINT (-2.8496139978869777 53.335702600000005),75,http://www.liverpoolairport.com/,EGGP,Hale,Borough of Halton,England
+LPP,Europe/Helsinki,Lappeenranta,LPP,FI,POINT (28.150602697960775 61.04515155),305,https://lppairport.fi/en,EFLP,Lappeenranta,Lappeenranta,South Karelia
+AGM,America/Godthab,Tasiilaq,AGM,GL,POINT (-37.683334 65.6),534,,,,,
+ATD,Pacific/Guadalcanal,Atoifi,ATD,SB,POINT (161.0112714 -8.872891),59,,AGAT,,,
+AVK,Asia/Ulaanbaatar,Arvaikheer,AVK,MN,POINT (102.80469239487059 46.2484762),5787,,ZMAH,Arvayheer,,OEvoerhangay
+AVN,Europe/Paris,Avignon-Caumont Airport,AVN,FR,POINT (4.9 43.9),144,,LFMV,Noves,Departement des Bouches-du-Rhone,Provence-Alpes-Cote d'Azur
+AYY,Asia/Colombo,Arugam Bay SPB,AYY,LK,POINT (81.82388889 6.86),9,,"",,,
+LPQ,Asia/Vientiane,Luang Prabang International Airport,LPQ,LA,POINT (102.16998023046885 19.90650995),958,,VLLB,Louangphabang,,Louangphabang
+SJX,America/Belize,Sartaneja,SJX,BZ,POINT (-88.333336 18.3),52,,"",,,
+SAH,Asia/Aden,Sana'a International Airport,SAH,YE,POINT (44.21866507285824 15.47740745),7185,,OYSN,Ar Rawdah,Bani Al Harith,Amanat Al Asimah
+DGB,America/Anchorage,Danger Bay,DGB,US,POINT (-152.75 58.083332),374,,,,,
+FIV,America/Juneau,Five Finger,FIV,US,POINT (-133.63333 57.266666),0,,,,,
+FRP,America/Juneau,Fresh Water Bay,FRP,US,POINT (-135.025 57.845833),0,,,,,
+SAL,America/El_Salvador,El Salvador International Airport,SAL,SV,POINT (-89.05240507597625 13.45092455),121,,MSLP,El Rosario,,La Paz
+SAN,America/Los_Angeles,San Diego International Airport,SAN,US,POINT (-117.19224641277626 32.73336075),13,http://www.san.org/,KSAN,San Diego,San Diego County,California
+CDZ,Europe/Madrid,Cadiz,CDZ,ES,POINT (-6.3 36.533333),75,,,Cadiz,Provincia de Cadiz,Andalusia
+AUB,America/Cuiaba,Itauba Airport,AUB,BR,POINT (-55.581735 -11.878603),1223,,,Itauba,,Mato Grosso
+LPU,Asia/Makassar,Long Apung,LPU,ID,POINT (114.97093738508752 1.7056919499999998),2086,,WALP,Longnawang,,North Kalimantan
+PGP,Africa/Sao_Tome,Porto Alegre,PGP,ST,POINT (6.533333 0.033333),72,,,,,
+PID,America/Nassau,Paradise Island,NAS,BS,POINT (-77.3 25.083332),29,,,,,
+LIJ,America/Sitka,Long Island,LIJ,US,POINT (-132.80833 54.92917),0,,,,,
+PII,America/Anchorage,Phillips Field,FAI,US,POINT (-147.71388 64.86389),459,,,,,
+SLZ,America/Fortaleza,Marechal Cunha Machado International Airport,SLZ,BR,POINT (-44.23940764493366 -2.58899115),111,,SBSL,Sao Luis,Sao Luis,Maranhao
+SMF,America/Los_Angeles,Sacramento International Airport,SAC,US,POINT (-121.5903702806319 38.687223450000005),42,http://www.sacairports.org/int/,KSMF,West Sacramento,Yolo County,California
+LRA,Europe/Athens,Larisa,LRA,GR,POINT (22.462750398346742 39.65141585),209,,LGLR,Larisa,Nomos Larisis,Thessaly
+LLU,America/Godthab,Alluitsup Paa,LLU,GL,POINT (-45.56889 60.46417),0,,,,,
+QNY,America/New_York,Marine Air Terminal,NYC,US,POINT (-74 40.75),0,,,,,
+LRD,America/Chicago,Laredo International Airport,LRD,US,POINT (-99.46147398713819 27.547214750000002),465,,KLRD,Laredo,Webb County,Texas
+SMS,Indian/Antananarivo,Sainte Marie,SMS,MG,POINT (49.81594943073826 -17.0948138),65,,FMMS,Ambodifotatra,,Analanjirofo
+AUV,Pacific/Port_Moresby,Aumo,AUV,PG,POINT (148.4458293285261 -5.7278249),508,,AYUM,,,
+AVO,America/New_York,Municipal,AVO,US,POINT (-81.51667 27.6),232,,KAVO,Avon Park,Highlands County,Florida
+AVV,Australia/Melbourne,Avalon Airport,MEL,AU,POINT (144.47225146948307 -38.0415747),39,https://www.avalonairport.com.au/,YMAV,Little River,Wyndham,Victoria
+AWR,Pacific/Port_Moresby,Awar,AWR,PG,POINT (144.87029 -4.124167),0,,"",,,
+AWZ,Asia/Tehran,Ahwaz Airport,AWZ,IR,POINT (48.761837631708985 31.3375148),45,,OIAW,Ahvaz,,Khuzestan
+DOF,America/Sitka,Dora Bay,DOF,US,POINT (-132.26666 55.2125),0,,,,,
+EMB,America/Los_Angeles,Embarkadero,SFO,US,POINT (-122.375 37.62528),42,,,,,
+SZC,America/Costa_Rica,Guanacaste,SZC,CR,POINT (-85.58417 10.254722),0,,,,,
+EWD,America/Anchorage,Wildman Lake,EWD,US,POINT (-159.76222 56.45639),36,,,,,
+HBC,America/Sitka,Hanus Bay,HBC,US,POINT (-135.91667 57.5),0,,,,,
+SOO,Europe/Stockholm,Helsinge Airport,SOO,SE,POINT (17.0983333 61.2613889),42,http://www.flygstaden.se/flygf-ltet,ESNY,Soderhamn,Soderhamns Kommun,Gaevleborg
+SOE,Africa/Brazzaville,Souanke,SOE,CG,POINT (14.1742168 1.9983256),1735,,FCOS,Sembe,,Sangha
+STL,America/Chicago,Lambert-St. Louis International Airport,STL,US,POINT (-90.37047024952082 38.74962725),524,https://www.flystl.com/,KSTL,Woodson Terrace,Saint Louis County,Missouri
+STP,America/Chicago,St. Paul Downtown Airport,MSP,US,POINT (-93.06093363491505 44.933328),672,,KSTP,Saint Paul,Ramsey County,Minnesota
+STT,America/St_Thomas,Cyril E. King Airport,STT,VI,POINT (-64.9701668 18.3346729),16,http://www.viport.com/airports.html,TIST,Charlotte Amalie,,Saint Thomas Island
+STV,Asia/Kolkata,Surat Gujarat Airport,STV,IN,POINT (72.74226530410085 21.1168313),36,,VASU,Surat,Surat,Gujarat
+STX,America/St_Thomas,Henry E. Rohlsen Airport,STX,VI,POINT (-64.8059208987329 17.69997805),39,,TISX,Saint Croix,,Saint Croix Island
+SUB,Asia/Jakarta,Juanda International Airport,SUB,ID,POINT (112.78532737805308 -7.38007105),19,http://www.juanda-airport.com/,WARR,Semampirbarat,,East Java
+SUE,America/Chicago,Door County,SUE,US,POINT (-87.42258867946383 44.84191575),715,http://map.co.door.wi.us/airport/,KSUE,Sturgeon Bay,Door County,Wisconsin
+SUF,Europe/Rome,Lamezia Terme International Airport,SUF,IT,POINT (16.24275952965428 38.9062877),32,,LICA,Santa Eufemia Lamezia,Provincia di Catanzaro,Calabria
+SUG,Asia/Manila,Surigao Airport,SUG,PH,POINT (125.4810331904115 9.75764555),26,,RPMS,Mati,Province of Surigao del Norte,Caraga
+SXL,Europe/Dublin,Sligo,SXL,IE,POINT (-8.466667 54.283333),22,http://www.sligoairport.com/,EISG,,,
+CIB,America/Los_Angeles,Ap In The Sky,AVX,US,POINT (-118.41389 33.406113),1578,,,,,
+TON,Pacific/Port_Moresby,Tonu,TON,PG,POINT (155.59166 -6.35),300,,AYVO,,,
+YNX,America/Yellowknife,Snap Lake,YNX,CA,POINT (-110.90408549820063 63.593511500000005),1557,,CSK6,,,
+DDG,Asia/Shanghai,Langtou Airport,DDG,CN,POINT (124.2815411011791 40.02644170000001),29,http://www.ddcei.gov.cn/english/index.html,ZYDD,,,
+DEI,Indian/Mahe,Denis Island,DEI,SC,POINT (55.667200670657294 -3.80192305),49,,FSSD,,,
+BAM,America/Los_Angeles,Lander County,BAM,US,POINT (-116.933334 40.63333),4494,http://www.battlemountainairport.com/default.htm,KBAM,Battle Mountain,Lander County,Nevada
+PRF,America/Anchorage,Port Johnson,PRF,US,POINT (-132 55.13333),0,,,,,
+SKS,Europe/Copenhagen,Vojens,SKS,DK,POINT (9.2907749 55.2219375),134,,EKSP,,,
+PTL,America/Anchorage,Port Armstrong,PTL,US,POINT (-134.6625 56.297222),144,,,,,
+PVY,America/Anchorage,Pope Vanoy,PVY,US,POINT (-154.91667 59.316666),2404,,,,,
+SSW,America/Los_Angeles,Stuart Island,SSW,US,POINT (-123.21977 48.6835888),95,,"7WA5",,,
+TNK,America/Anchorage,Tununak,TNK,US,POINT (-165.26930269019948 60.5753352),14,,"4KA",,,
+LYN,Europe/Paris,Bron,LYS,FR,POINT (4.9427041133278555 45.72819335),666,,LFLY,Bron,Departement du Rhone,Rhone-Alpes
+LYP,Asia/Karachi,Faisalabad Airport,LYP,PK,POINT (72.99318848355324 31.36552865),587,,OPFA,Faisalabad,,Punjab
+SZF,Europe/Istanbul,Samsun-Carsamba Airport,SZF,TR,POINT (36.5547365620795 41.2562275),18,http://www.carsamba.dhmi.gov.tr/havaalanlari/default.aspx?hv=32,LTFH,Dikbiyik,,Samsun
+SZN,America/Los_Angeles,Santa Cruz Island,SBA,US,POINT (-119.9151998 34.0589776),50,,KSZN,Isla Vista,Santa Barbara County,California
+SZX,Asia/Shanghai,Shenzhen Bao'an International Airport,SZX,CN,POINT (113.80607686281571 22.6376434),13,http://eng.szairport.com/,ZGSZ,Fuyong,,Guangdong
+LYS,Europe/Paris,Lyon Saint-Exupery International Airport,LYS,FR,POINT (5.086500755554235 45.7245365),790,https://www.lyonaeroports.com/,LFLL,Pusignan,Departement du Rhone,Rhone-Alpes
+AJN,Indian/Comoro,Ouani,AJN,KM,POINT (44.42886316841893 -12.12890235),101,,FMCV,Ouani,,Anjouan
+AKM,Africa/Ndjamena,Zakouma,AKM,TD,POINT (19.8153005 10.8875904),1354,,"",,,
+AXD,Europe/Athens,Demokritos Airport,AXD,GR,POINT (25.955340604501963 40.85631045),13,,LGAL,Alexandroupoli,Nomos Evrou,East Macedonia and Thrace
+AYX,America/Lima,Gerardo Pérez Pinedo,AYX,PE,POINT (-73.76907295837613 -10.72845785),767,,SPAY,Puerto Ocopa,Provincia de Satipo,Junin
+AZJ,Asia/Shanghai,Zhenjiang Dalu,AZJ,CN,POINT (119.78395645531 31.912266555746),39,http://czjc.changzhou.gov.cn/,,Changzhou,Xinbei District,Jiangsu
+AZN,Asia/Tashkent,Andizhan Airport,AZN,UZ,POINT (72.29303828990521 40.726543899999996),1558,,UTFA,Andijon,,Andijon
+AZO,America/Detroit,Kalamazoo Battle Creek International Airport,AZO,US,POINT (-85.5510419237961 42.2307865),803,,KAZO,Portage,Kalamazoo County,Michigan
+BAI,America/Costa_Rica,Buenos Aires,BAI,CR,POINT (-83.333336 9.166667),1227,,MRBA,Buenos Aires,,Puntarenas
+SVP,Africa/Luanda,Kuito (Silva Porto),SVP,AO,POINT (16.947957479602053 -12.404343449999999),5600,,FNKU,Cuito,,Bie
+SWD,America/Anchorage,Seward,SWD,US,POINT (-149.4194120263729 60.130042149999994),29,,PAWD,Bear Creek,Kenai Peninsula Borough,Alaska
+SYH,Asia/Kathmandu,Syangboche,SYH,NP,POINT (86.71234315904579 27.8113479),12270,,VNSB,Namche Bazar,Sagarmatha Zone,Eastern Region
+SYI,America/Chicago,Bomar Field,SYI,US,POINT (-86.44269606008433 35.5612926),777,http://www.shelbyvilletnairport.org/,KSYI,Shelbyville,Bedford County,Tennessee
+SYJ,Asia/Tehran,Sirjan,SYJ,IR,POINT (55.666425658766634 29.551598849999998),5807,,OIKY,Sirjan,,Kerman
+SYM,Asia/Shanghai,Pu'er Simao Airport,SYM,CN,POINT (100.95929898984352 22.79187385),4087,,ZPSM,Simao,,Yunnan
+DGF,America/Vancouver,Douglas Lake,DGF,CA,POINT (-120.1702593 50.1645563),2703,,CAL3,,,
+BBY,Africa/Bangui,Bambari,BBY,CF,POINT (20.6470806 5.84805),1545,,FEFM,Bambari,,Ouaka
+BKA,Europe/Moscow,Bykovo,MOW,RU,POINT (37.966667 55.433334),442,,,,,
+PNF,America/Anchorage,Peterson's Point,PNF,US,POINT (-156.83333 58.683334),104,,,,,
+FAQ,Pacific/Port_Moresby,Freida River,FAQ,PG,POINT (141.95833 -4.616667),226,,AYFR,,,
+QSG,Europe/Copenhagen,Sonderborg,SGD,DK,POINT (9.792178 54.913811),124,,,,,
+RLA,America/Chicago,National,RLA,US,POINT (-91.77805 38.127777),1148,,,,,
+SXC,America/Los_Angeles,Avalo Vor/WP,AVX,US,POINT (-118.416664 33.5),0,,,,,
+GLV,America/Nome,Golovin Airport,GLV,US,POINT (-163.0394444 64.5433333),49,,PAGL,,,
+LZO,Asia/Shanghai,Luzhou Lantian Airport,LZO,CN,POINT (105.38745431218496 28.850612249999998),816,,ZULZ,Luzhou,,Sichuan
+GST,America/Juneau,Gustavus Airport,GST,US,POINT (-135.70631132484405 58.423770649999994),16,,PAGS,,,
+LZY,Asia/Shanghai,Nyingchi Mainling Airport,LZY,CN,POINT (94.3321948904703 29.302162799999998),9685,,ZUNZ,Mainling,,Tibet Autonomous Region
+MBJ,America/Jamaica,Sangster International Airport,MBJ,JM,POINT (-77.91388740287721 18.502925949999998),22,,MKJS,Montego Bay,,Saint James
+MBL,America/Detroit,Blacker Airport,MBL,US,POINT (-86.24061217690472 44.2717152),600,,KMBL,Manistee,Manistee County,Michigan
+MBO,Asia/Manila,Mamburao,MBO,PH,POINT (120.60534709448388 13.2085198),29,,RPUM,Mamburao,Province of Mindoro Occidental,Mimaropa
+BZS,America/New_York,Buzzards Pt S,WAS,US,POINT (-77.013336 38.863335),36,,,,,
+BAO,Asia/Bangkok,Udorn,BAO,TH,POINT (102.79278 17.385),580,,,,,
+BAQ,America/Bogota,E Cortissoz Airport,BAQ,CO,POINT (-74.77618 10.886398),75,,SKBQ,Malambo,,Atlantico
+BAT,America/Sao_Paulo,Airport Chafei Amsei,BAT,BR,POINT (-48.55 -20.55),1732,,SNBA,Barretos,Barretos,Sao Paulo
+BBJ,Europe/Berlin,Bitburg Air Base,BBJ,DE,POINT (6.565966668652097 49.946165),1220,,EDRB,Bitburg,,Rheinland-Pfalz
+BBP,Europe/London,Bembridge,BBP,GB,POINT (-1.1097523855830538 50.679103299999994),26,http://www.eghj.com/,EGHJ,,,
+BBQ,America/Antigua,Barbuda,BBQ,AG,POINT (-61.765 17.555555),45,,TAPH,Codrington,,Barbuda
+BBW,America/Chicago,Broken Bow,BBW,US,POINT (-99.63333 41.4),2463,,KBBW,Broken Bow,Custer County,Nebraska
+BBX,America/New_York,Wings Field,BBX,US,POINT (-75.2675 40.136665),301,,KLOM,Blue Bell,Montgomery County,Pennsylvania
+BCA,America/Havana,Baracoa,BCA,CU,POINT (-74.5 20.35),26,,MUBA,Baracoa,,Guantanamo
+BCD,Asia/Manila,Bacolod-Silay International Airport,BCD,PH,POINT (122.93359 10.644815),32,http://www.bacolod-silayairport.com/,RPVB,Bacolod City,Province of Negros Occidental,Western Visayas
+BCF,Africa/Bangui,Bouca,BCF,CF,POINT (18.416668 6.75),1732,,FEGU,Bouca,,Ouham
+BCV,America/Belize,Belmopan,BCV,BZ,POINT (-88.77547240499263 17.269211),177,http://www.flightstats.com/go/Airport/airportDetails.do?airportCode=BCV,"",,,
+BDG,America/Denver,Blanding,BDG,US,POINT (-109.480294 37.581466),5816,,KBDG,Blanding,San Juan County,Utah
+HIS,Australia/Lindeman,Hayman Island,HIS,AU,POINT (148.86667 -20.066668),0,,,,,
+BFW,Africa/Algiers,Sidi Belabbes,BFW,DZ,POINT (-0.589444 35.171665),1604,,DAOS,Sidi Bel Abbes,,Sidi Bel Abbes
+RWB,America/Anchorage,Rowan Bay,RWB,US,POINT (-134.13333 56.75),465,,,,,
+MSB,America/Marigot,Marigot SPB,SFG,MF,POINT (-63.066666 18.066668),285,,,,,
+MWP,Asia/Kathmandu,Mountain,MWP,NP,POINT (85.333336 28),8832,,,,,
+LYB,America/Cayman,Little Cayman Airport,LYB,KY,POINT (-80.08472 19.6592),19,,MWCL,East End,,
+LYC,Europe/Stockholm,Lycksele Airport,LYC,SE,POINT (18.7177778 64.5475),646,,ESNL,Lycksele,Lycksele Kommun,Vaesterbotten
+LYO,America/Chicago,Lyons-Rice County Municipal,LYO,US,POINT (-98.22879662477784 38.3383159),1706,http://www.lyonsks.org/index.aspx?nid=915,KLYO,Lyons,Rice County,Kansas
+LYH,America/New_York,Preston-Glenn Field,LYH,US,POINT (-79.20111 37.326942),935,,KLYH,Timberlake,Campbell County,Virginia
+MAA,Asia/Kolkata,Chennai Airport,MAA,IN,POINT (80.18440293433221 12.99299645),39,,VOMM,Pallavaram,Kancheepuram,Tamil Nadu
+KFP,America/Nome,False Pass,KFP,US,POINT (-163.4085419 54.8483999),20,,PAKF,,,
+KKA,America/Anchorage,Koyuk Airport,KKA,US,POINT (-161.1612957 64.9351661),154,,PAKK,,,
+BGP,Africa/Libreville,Bongo,BGP,GA,POINT (13.433333 -1.65),1404,,"",,,
+HCR,America/Anchorage,Holy Cross Airport,HCR,US,POINT (-159.7729269 62.1908445),75,,PAHC,,,
+OCI,America/Anchorage,Oceanic,OCI,US,POINT (-147.86667 60.25),1233,,,,,
+UQE,America/Anchorage,Queen,UQE,US,POINT (-158.43167 58.876667),0,,,,,
+OHC,America/Anchorage,AFS,OHC,US,POINT (-168.96889 63.32639),39,,,,,
+SCJ,America/Anchorage,Smith Cove,SCJ,US,POINT (-132.33333 55.416668),0,,,,,
+CFA,America/Anchorage,Coffee Point,CFA,US,POINT (-157.5 58.216667),0,,,,,
+KTN,America/Sitka,Ketchikan International Airport,KTN,US,POINT (-131.7083563288072 55.353764749999996),89,,PAKT,,,
+KAL,America/Anchorage,Kaltag Airport,KAL,US,POINT (-158.7355272 64.3196804),181,,PAKV,,,
+KYK,America/Anchorage,Karluk,KYK,US,POINT (-154.4515784 57.5661517),137,,PAKY,,,
+CWG,America/New_York,Callaway Gardens,CWG,US,POINT (-84.8784817 32.8418797),892,,,,,
+HOM,America/Anchorage,Homer Airport,HOM,US,POINT (-151.4905296 59.6429186),68,,PAHO,,,
+HPB,America/Nome,Hooper Bay Airport,HPB,US,POINT (-166.1478020796465 61.52474885),39,,PAHP,,,
+HSL,America/Anchorage,Huslia Airport,HSL,US,POINT (-156.3509979 65.6978989),308,,PAHL,,,
+AKN,America/Anchorage,King Salmon Airport,AKN,US,POINT (-156.6493870251819 58.6753166),26,,PAKN,,,
+AKP,America/Anchorage,Anaktuvuk,AKP,US,POINT (-151.7456225471328 68.13254385),2335,,PAKP,,,
+BDL,America/New_York,Bradley International Airport,BDL,US,POINT (-72.68501994264602 41.9405835),173,http://www.bradleyairport.com/,KBDL,Windsor Locks,Hartford County,Connecticut
+BDM,Europe/Istanbul,Bandirma,BDM,TR,POINT (27.981386964848443 40.31775555),114,,LTBG,Bandirma,,Balikesir
+BDP,Asia/Kathmandu,Bhadrapur Airport,BDP,NP,POINT (88.07832040537195 26.570771399999998),249,,VNCG,Bhadrapur,,Eastern Region
+BEA,Pacific/Port_Moresby,Bereina,BEA,PG,POINT (146.48334 -8.65),193,,"",,,
+BEG,Europe/Belgrade,Belgrad Nikola Tesla Airport,BEG,RS,POINT (20.302369607310077 44.81827305),272,http://www.beg.aero/,LYBE,Surcin,Belgrade,Central Serbia
+BFL,America/Los_Angeles,Meadows Field Airport,BFL,US,POINT (-119.05922366074273 35.4372678),479,,KBFL,Oildale,Kern County,California
+BFN,Africa/Johannesburg,Bram Fischer International Airport,BFN,ZA,POINT (26.296681782348287 -29.0922444),4425,,FABL,Bloemfontein,Mangaung Metropolitan Municipality,Orange Free State
+BFS,Europe/London,Belfast International Airport,BFS,GB,POINT (-6.2161746 54.6616469),213,http://www.belfastairport.com/,EGAA,Antrim,Antrim Borough,Northern Ireland
+IAN,America/Anchorage,Bob Baker Memorial Airport,IAN,US,POINT (-160.4408276 66.9753137),134,,PAIK,,,
+SHX,America/Anchorage,Shageluk Airport,SHX,US,POINT (-159.5672581 62.6874591),42,,PAHX,,,
+KPH,America/Anchorage,Pauloff Harbor SPB,KPH,US,POINT (-162.68333 54.45),0,,,,,
+AAG,America/Sao_Paulo,Arapoti,AAG,BR,POINT (-49.78949435424242 -24.1037812),2608,,SSYA,Jaguariaiva,Jaguariaiva,Parana
+LUR,America/Nome,Cape Lisburne,LUR,US,POINT (-166.11 68.875),16,,PALU,,,
+OME,America/Nome,Nome Airport,OME,US,POINT (-165.4560373774767 64.5124643),16,,PAOM,,,
+LMA,America/Anchorage,Lake Minchumina,LMA,US,POINT (-152.3046299 63.8823069),678,,PAMH,,,
+VCB,America/Anchorage,View Cove,VCB,US,POINT (-133.01666 55.083332),78,,,,,
+OOK,America/Anchorage,Toksook Bay Airport,OOK,US,POINT (-165.0879817 60.5376015),26,,PAOO,,,
+KPK,America/Anchorage,Parks SPB,KPK,US,POINT (-153.9 57.433613),0,,,,,
+SMK,America/Anchorage,St. Michael Airport,SMK,US,POINT (-162.1124828 63.4845436),39,,PAMK,,,
+KUW,America/Anchorage,Kugururok River,KUW,US,POINT (-161.98334 67.96667),0,,,,,
+PTH,America/Anchorage,Port Heiden,PTH,US,POINT (-158.6381662 56.9586396),75,,PAPH,,,
+PTU,America/Anchorage,Platinum Airport,PTU,US,POINT (-161.8244235 59.0158634),29,,PAPM,,,
+SKJ,America/Anchorage,Sitkinak Cgs,SKJ,US,POINT (-154.11389 56.53278),0,,,,,
+VKW,America/Anchorage,West Kavik,VKW,US,POINT (-146.91667 69.76667),666,,,,,
+KPC,America/Anchorage,Port Clarence,KPC,US,POINT (-166.8555889 65.2534907),10,,PAPC,,,
+WDB,America/Sitka,Deep Bay,WDB,US,POINT (-131.75 55.583332),0,,,,,
+TGJ,Pacific/Noumea,Tiga,TGJ,NC,POINT (167.8044055 -21.0986117),128,,NWWA,Tadine,Mare,Loyalty Islands
+CZO,America/Anchorage,Chistochina,CZO,US,POINT (-144.669765 62.5636319),1952,,CZO,,,
+MLY,America/Anchorage,Manley Hot Springs,MLY,US,POINT (-150.64647805048224 64.98933120000001),301,,PAML,,,
+MFA,Africa/Dar_es_Salaam,Mafia,MFA,TZ,POINT (39.66804537412173 -7.91735835),108,,HTMA,Kilindoni,,Pwani
+MFE,America/Chicago,McAllen International Airport,MFE,US,POINT (-98.23960548288598 26.17627985),85,,KMFE,McAllen,Hidalgo County,Texas
+LYK,Asia/Makassar,Lunyuk,LYK,ID,POINT (117.26667 -9),429,,WADU,Lunyuk Ode,,West Nusa Tenggara
+LYR,Arctic/Longyearbyen,Svalbard Airport,LYR,SJ,POINT (15.8 78.208885),0,https://avinor.no/en/airport/svalbard-airport/,ENSB,Longyearbyen,Spitsbergen,Svalbard
+LYU,America/Chicago,Ely,LYU,US,POINT (-91.82917 47.82389),1443,http://www.ely.mn.us/index.asp?Type=B_BASIC&SEC=%7B936B252D-C48B-42BD-B996-37F320A6CFF7%7D,KELO,Ely,Saint Louis County,Minnesota
+LYX,Europe/London,London Ashford International (Ferryfield),LYX,GB,POINT (0.933333 50.95),49,http://www.lydd-airport.co.uk/,EGMD,Lydd,Kent,England
+LZA,Africa/Lubumbashi,Luiza,LZA,CD,POINT (22.5 -7.666667),2900,,FZUG,Mwene-Ditu,,Kasai-Oriental
+ORT,America/Anchorage,Northway,ORT,US,POINT (-141.9310183218222 62.961308),1673,,PAOR,,,
+OTZ,America/Nome,Ralph Wien Memorial Airport,OTZ,US,POINT (-162.61074661016386 66.8836843),29,,PAOT,,,
+AAO,America/Caracas,Anaco,AAO,VE,POINT (-64.47086334549915 9.4298739),692,,SVAN,Anaco,Municipio Anaco,Anzoategui
+AAR,Europe/Copenhagen,Aarhus Airport,AAR,DK,POINT (10.612849817576597 56.304542549999994),45,http://www.aar.dk/default.asp?id=87,EKAH,Ebeltoft,Syddjurs Kommune,Central Jutland
+AAV,Asia/Manila,Allah Valley,AAV,PH,POINT (124.75266160348093 6.36768745),629,,RPMA,Surallah,,South Cotabato
+NLG,America/Anchorage,Nelson Lagoon,NLG,US,POINT (-161.1669808 56.007485),22,,PAOU,,,
+AAY,Asia/Aden,Al Ghaydah,AAY,YE,POINT (52.17271501755243 16.1879658),114,,OYGD,Al Ghayzah,Al Ghaydah,Al Mahrah
+ACA,America/Mexico_City,Acapulco International Airport,ACA,MX,POINT (-99.75293698229589 16.756593600000002),22,,MMAA,"10 de Abril",Acapulco de Juarez,Guerrero
+ACH,Europe/Zurich,Altenrhein Airport,ACH,CH,POINT (9.5598603 47.4859603),1272,,LSZR,Rheineck,Wahlkreis Rheintal,Saint Gallen
+ACX,Asia/Shanghai,Xingyi Airport,ACX,CN,POINT (104.95880288018984 25.083970700000002),4133,,ZUYI,Xinzhou,,Guangxi Zhuangzu Zizhiqu
+BFV,Asia/Bangkok,Buri Ram Airport,BFV,TH,POINT (103.24777584935983 15.2251616),679,,VTUO,Satuek,,Buriram
+BGA,America/Bogota,Palonegro International Airport,BGA,CO,POINT (-73.18298397426294 7.12665205),3884,,SKBG,Lebrija,,Santander
+BGD,America/Chicago,Borger,BGD,US,POINT (-101.394019 35.6887659),3034,http://www.hutchinsoncountyairport.com/,KBGD,Borger,Hutchinson County,Texas
+LSI,Europe/London,Sumburgh Airport,SDZ,GB,POINT (-1.2903331791196888 59.876993150000004),19,http://www.hial.co.uk/sumburgh-airport.html,EGPB,,,
+FIC,America/Juneau,Fire Cove,FIC,US,POINT (-131.5375 55.77778),0,,,,,
+RBY,America/Anchorage,Ruby Airport,RBY,US,POINT (-155.4622222 64.7297222),695,,PARY,,,
+XEO,America/Godthab,Harbour,XEO,GL,POINT (-51 69.333336),62,,,,,
+PFD,America/Anchorage,Port Frederick,PFD,US,POINT (-135.65 57.95),9,,,,,
+ABZ,Europe/London,Aberdeen International Airport,ABZ,GB,POINT (-2.2019913504766446 57.20195485),167,http://www.aberdeenairport.com/,EGPD,Dyce,Aberdeen City,Scotland
+XLF,America/Montreal,Leaf Bay,XLF,CA,POINT (-69 59),101,,,,,
+KSM,America/Anchorage,Saint Mary's Airport,KSM,US,POINT (-163.2968382 62.0588721),312,,PASM,,,
+TKA,America/Anchorage,Talkeetna,TKA,US,POINT (-150.0918682875141 62.321968049999995),358,,PATK,,,
+GBN,Europe/Rome,San Giovanni Rotondo,GBN,IT,POINT (15.730556 41.701668),1735,,,,,
+FYU,America/Anchorage,Fort Yukon Airport,FYU,US,POINT (-145.24090199463737 66.57354795),449,,PFYU,,,
+JNN,America/Godthab,Nanortalik,JNN,GL,POINT (-45.233612 60.134167),0,,,,,
+GAR,Pacific/Port_Moresby,Garaina,GAR,PG,POINT (147.14066769731295 -7.8745389),2460,,AYGI,,,
+TNO,America/Costa_Rica,Tamarindo,TNO,CR,POINT (-85.81544160967911 10.314909199999999),41,,MRTM,Santa Cruz,,Guanacaste
+TNZ,Asia/Hovd,Tosontsengel,TNZ,MN,POINT (98.2757583 48.7408231),5610,,ZMTL,Tosontsengel,,Dzabkhan
+TOB,Africa/Tripoli,Tobruk,TOB,LY,POINT (23.90982265787035 31.861688649999998),519,,HLGN,Tobruk,,Sha`biyat al Butnan
+BNM,Pacific/Port_Moresby,Bodinumu,BNM,PG,POINT (147.61667 -9.116667),5255,,AYBD,,,
+BNZ,Pacific/Port_Moresby,Banz,BNZ,PG,POINT (144.61139 -5.808333),5114,,"",,,
+BPD,Pacific/Port_Moresby,Bapi,BPD,PG,POINT (147.02076956345297 -7.7435241999999995),2906,,AYBP,,,
+CPN,Pacific/Port_Moresby,Cape Rodney,CPN,PG,POINT (148.3790302 -10.179823),22,,"",,,
+LZU,America/New_York,Gwinnett County Airport,LZU,US,POINT (-84.07378 34.08075),1043,http://www.lzuairport.com/,KLZU,Suwanee,Gwinnett County,Georgia
+MBP,America/Lima,Moyobamba,MBP,PE,POINT (-77.166664 -6.2),3540,,SPBB,Yorongos,Provincia de Rioja,San Martin
+MBQ,Africa/Kampala,Mbarara,MBQ,UG,POINT (30.65 -0.616667),4609,,HUMA,Mbarara,Mbarara District,Western Region
+MBT,Asia/Manila,Masbate Airport,MBT,PH,POINT (123.066666 12.366667),0,,RPVJ,Tumalaytay,Province of Masbate,Bicol
+MBX,Europe/Ljubljana,Maribor International Airport,MBX,SI,POINT (15.65 46.55),882,,LJMB,Maribor,,Maribor
+ACS,Asia/Krasnoyarsk,Achinsk,ACS,RU,POINT (90.57983018239561 56.270123999999996),974,,UNKS,Achinsk,,Krasnoyarskiy
+ACZ,Asia/Tehran,Zabol Airport,ACZ,IR,POINT (61.54236908127046 31.097024750000003),1574,,OIZB,Zabol,,Sistan and Baluchestan
+AER,Europe/Moscow,Sochi International Airport,AER,RU,POINT (39.94009276010438 43.44397145),39,http://basel.aero/en/sochi/,URSS,Orel-Izumrud,,Krasnodarskiy
+AES,Europe/Oslo,Vigra Alesund Airport,AES,NO,POINT (6.113415709021158 62.56018535),49,http://www.avinor.no/lufthavn/alesund,ENAL,Valderoy,Giske,More og Romsdal
+AFZ,Asia/Tehran,Sabzevar,AFZ,IR,POINT (57.59941595852304 36.171675),3011,,OIMS,Sabzevar,,Razavi Khorasan
+AHO,Europe/Rome,Alghero-Fertilia Airport,AHO,IT,POINT (8.288375274221512 40.63087935),62,http://www.aeroportodialghero.it/home_en.asp,LIEA,Alghero,Provincia di Sassari,Sardinia
+AHZ,Europe/Paris,Alpe D Huez,AHZ,FR,POINT (6.082792927954502 45.0870881),6023,,LFHU,Huez,Departement de l'Isere,Rhone-Alpes
+AJL,Asia/Kolkata,Aizawl Airport,AJL,IN,POINT (92.62105703739914 23.840704799999997),1397,http://www.aai.aero/allAirports/lengpui.jsp,VELP,Sairang,Aizawl,Mizoram
+MIN,Australia/Adelaide,Minnipa,MIN,AU,POINT (134.83333 -32.833332),328,,YMPA,Streaky Bay,Streaky Bay,South Australia
+MIP,Asia/Jerusalem,Mitspeh Ramon,MIP,IL,POINT (34.8 30.6),2158,,LLRM,Mitzpe Ramon,,Southern District
+MIR,Africa/Tunis,Habib Bourguiba International Airport,MIR,TN,POINT (10.753155 35.76108),29,,DTMB,Sahline,,Al Munastir
+MIT,America/Los_Angeles,Kern County,MIT,US,POINT (-119.26667 35.5),337,,KMIT,Shafter,Kern County,California
+SCC,America/Anchorage,Prudhoe Bay/Deadhorse Airport,SCC,US,POINT (-148.45866290144141 70.2007293),68,,PASC,,,
+SLQ,America/Anchorage,Sleetmute,SLQ,US,POINT (-157.1660004 61.7005005),85,,PASL,,,
+YCI,America/Toronto,Caribou Island,YCI,CA,POINT (-113.25 61.916668),505,,,,,
+MIW,America/Chicago,Municipal,MIW,US,POINT (-92.916664 42.166668),1003,,,Conrad,Grundy County,Iowa
+MJB,Pacific/Majuro,Mejit Island,MJB,MH,POINT (170.88333 10.283333),0,,"",Mejit,,Mejit Island
+YCX,America/Moncton,Gagetown,YCX,CA,POINT (-66.166664 45.766666),0,,,,,
+YDI,America/Goose_Bay,Davis Inlet,YDI,CA,POINT (-60.95 55.933334),0,,,,,
+BNT,Pacific/Port_Moresby,Bundi,BNT,PG,POINT (145.45 -5.75),449,,AYDI,,,
+BOT,Pacific/Port_Moresby,Boset,BOT,PG,POINT (141.08333 -7.233333),68,,AYET,,,
+YJO,America/Vancouver,Johnny Mountain,YJO,CA,POINT (-131.11667 56.666668),0,,,,,
+YAV,America/Vancouver,Miners Bay,YAV,CA,POINT (-123.3 48.86667),150,,CAW7,,,
+ELM,America/New_York,Elmira Corning Regional Airport,ELM,US,POINT (-76.89199038453467 42.1608441),908,,KELM,Big Flats,Chemung County,New York
+QJE,America/Godthab,Heliport,QJE,GL,POINT (-53.166668 68.833336),0,,,,,
+MJC,Africa/Abidjan,Man,MJC,CI,POINT (-7.528333 7.381667),1082,,DIMN,Man,,Dix-Huit Montagnes
+KKD,Pacific/Port_Moresby,Kokoda,KKD,PG,POINT (147.73129469652469 -8.8852451),1240,,AYKO,,,
+KUY,Pacific/Port_Moresby,Kamusi Airport,KUY,PG,POINT (143.12189263481963 -7.42071535),97,,AYKS,,,
+KWO,Pacific/Port_Moresby,Kawito,KWO,PG,POINT (142.823906 -7.9793654),72,,AYKW,,,
+AKJ,Asia/Tokyo,Asahikawa Airport,AKJ,JP,POINT (142.45138689279045 43.6686785),646,,RJEC,Asahikawa,Asahikawa-shi,Hokkaido
+GEI,Pacific/Port_Moresby,Green Islands,GEI,PG,POINT (154.16667 -4.5),78,,,,,
+HTI,Australia/Lindeman,Hamilton Island Airport,HTI,AU,POINT (148.9480748 -20.3522845),16,http://www.hamiltonisland.com.au/airport/,YBHM,,,
+RBH,America/Anchorage,Brooks Lodge,RBH,US,POINT (-155.8 58.55),59,,,,,
+AKL,Pacific/Auckland,Auckland Airport,AKL,NZ,POINT (174.7912138412501 -37.00889695),29,http://www.auckland-airport.co.nz/,NZAA,Mangere,Auckland,Auckland
+MHT,America/New_York,Manchester Boston Regional Airport,MHT,US,POINT (-71.43882646608829 42.93066555),203,,KMHT,Manchester,Hillsborough County,New Hampshire
+IHU,Pacific/Port_Moresby,Ihu,IHU,PG,POINT (145.39741327631762 -7.898111050000001),26,,AYIH,,,
+YRE,America/Pangnirtung,Resolution Island,YRE,CA,POINT (-65 61.5),0,,,,,
+TQL,Asia/Yekaterinburg,Tarko-Sale,TQL,RU,POINT (77.81021525666432 64.93010125),82,,USDS,Tarko-Sale,,Yamalo-Nenetskiy Avtonomnyy Okrug
+YSR,America/Iqaluit,Nanisivik,YSR,CA,POINT (-84.5 73.75),0,,,,,
+BPB,Pacific/Port_Moresby,Boridi,BPB,PG,POINT (147.53334 -9.133333),3238,,,,,
+MJF,Europe/Oslo,Kjaerstad Airport,MJF,NO,POINT (13.218328 65.78439),177,https://avinor.no/en/airport/mosjoen-airport/,ENMS,Mosjoen,Vefsn,Nordland
+YGS,America/Vancouver,Germansen,YGS,CA,POINT (-124.6928225 55.767659),0,,,,,
+BPK,Pacific/Port_Moresby,Biangabip,BPK,PG,POINT (141.74494072404963 -5.52687665),1017,,AYBQ,,,
+BTX,Australia/Brisbane,Betoota,BTX,AU,POINT (140.7444657 -25.6916043),160,,YBEO,,,
+BUC,Australia/Brisbane,Burketown,BUC,AU,POINT (139.5387049 -17.7455334),32,,YBKT,,,
+AKT,Asia/Nicosia,Raf Akrotiri,AKT,CY,POINT (32.9877483 34.5903698),29,http://www.raf.mod.uk/rafakrotiri/passengerinformation/,LCRA,Kolossi,,Larnaka
+BDW,Australia/Perth,Bedford Downs,BDW,AU,POINT (127.464074 -17.2872764),1738,,YBDF,,,
+BGM,America/New_York,Greater Binghamton Airport,BGM,US,POINT (-75.9815509339948 42.2106484),1587,http://binghamtonairport.com/,KBGM,Johnson City,Broome County,New York
+BGN,Asia/Srednekolymsk,Belaya Gora Airport,BGN,RU,POINT (146.185833 68.538056),114,,UESG,Belaya Gora,,Sakha
+BGO,Europe/Oslo,Bergen Airport,BGO,NO,POINT (5.219901375015233 60.29619625),36,http://www.avinor.no/en/airport/bergen,ENBR,Ytrebygda,Bergen,Hordaland
+BGS,America/Chicago,Webb AFB,HCA,US,POINT (-101.48333 32.385555),2618,,,,,
+BGU,Africa/Bangui,Bangassou,BGU,CF,POINT (22.780145670886974 4.78594655),1735,,FEFG,,,
+BGV,America/Sao_Paulo,Bento Goncalves,BGV,BR,POINT (-51.516666 -29.166668),2050,,SSBG,Bento Goncalves,Bento Goncalves,Rio Grande do Sul
+BVI,Australia/Brisbane,Birdsville,BVI,AU,POINT (139.34517881819852 -25.89117585),164,,YBDV,,,
+YBI,America/Goose_Bay,Black Tickle,YBI,CA,POINT (-55.788501079119825 53.47021675),19,,CCE4,,,
+MJG,America/Havana,Mayajigua,MJG,CU,POINT (-79 21.758333),167,,,Venezuela,,Ciego de Avila
+ZFL,America/Winnipeg,South Trout Lake,ZFL,CA,POINT (-93.65 50.833332),0,,,,,
+BLS,Australia/Brisbane,Bollon,BLS,AU,POINT (147.4808484 -28.0507728),577,,YBLL,,,
+MJI,Africa/Tripoli,Mitiga Tripoli Airport,TIP,LY,POINT (13.277778 32.89722),26,,HLLM,Tagiura,,Tripoli
+MHW,America/La_Paz,Monteagudo,MHW,BO,POINT (-63.95953403125852 -19.8280344),3681,,SLAG,Monteagudo,,Chuquisaca
+YIO,America/Iqaluit,Pond Inlet Airport,YIO,CA,POINT (-77.96982812022452 72.68932480000001),181,,CYIO,,,
+MIA,America/New_York,Miami International Airport,MIA,US,POINT (-80.28672341095405 25.7949789),45,http://www.miami-airport.com/,KMIA,Virginia Gardens,Miami-Dade County,Florida
+EDA,America/Nome,Edna Bay,EDA,US,POINT (-133.6632433 55.949259),0,,"",,,
+GCI,Europe/Guernsey,Guernsey Airport,GCI,GG,POINT (-2.6035924770551206 49.4345733),301,,EGJB,,,
+AKW,Asia/Tehran,Aghajari,AKW,IR,POINT (49.67943963760571 30.743864350000003),45,,OIAG,Omidiyeh,,Khuzestan
+TRS,Europe/Rome,Trieste - Friuli Venezia Giulia Airport,TRS,IT,POINT (13.473368702886166 45.8261611),39,http://www.aeroporto.fvg.it/,LIPQ,Ronchi dei Legionari,Provincia di Gorizia,Friuli Venezia Giulia
+LBV,Africa/Libreville,Libreville Airport,LBV,GA,POINT (9.411292096346298 0.4619465),39,http://www.adlgabon.com,FOOL,,,
+TRV,Asia/Kolkata,Trivandrum International Airport,TRV,IN,POINT (76.91905902167463 8.4820416),15,,VOTV,Thiruvananthapuram,Thiruvananthapuram,Kerala
+TRZ,Asia/Kolkata,Tiruchirapalli International Airport,TRZ,IN,POINT (78.71529710080432 10.7638147),288,,VOTR,Tiruchirappalli,Tiruchchirappalli,Tamil Nadu
+TSA,Asia/Taipei,Taipei Songshan Airport,TPE,TW,POINT (121.55488774434725 25.066476950000002),18,http://www.tsa.gov.tw/,RCSS,Taipei,,Taipei
+TSB,Africa/Windhoek,Tsumeb,TSB,NA,POINT (17.73008059500127 -19.26129145),4353,,FYTM,Tsumeb,,Oshikoto
+TSC,America/Guayaquil,Taisha,TSC,EC,POINT (-77.5033031 -2.3814296),1669,,SETH,Taisha,,Morona-Santiago
+TSD,Africa/Johannesburg,Tshipise,TSD,ZA,POINT (30.177149 -22.6188327),1786,,"",Messina,Vhembe District Municipality,Limpopo
+TSE,Asia/Almaty,Astana (Nursultan) International Airport,TSE,KZ,POINT (71.46419813232808 51.0258535),0,,,Astana,,Astana Qalasy
+TBG,Pacific/Port_Moresby,Tabubil Airport,TBG,PG,POINT (141.22708058939207 -5.279681249999999),1570,,AYTB,,,
+BQL,Australia/Brisbane,Boulia,BQL,AU,POINT (139.90318145 -22.91260715),541,,YBOU,,,
+GIC,Australia/Brisbane,Boigu Island,GIC,AU,POINT (142.21820563259044 -9.23271935),19,,YBOI,,,
+ALF,Europe/Oslo,Alta Airport,ALF,NO,POINT (23.35951896505862 69.9771632),6,https://avinor.no/en/airport/alta-airport/,ENAT,Alta,Alta,Finnmark Fylke
+ALH,Australia/Perth,Albany Airport,ALH,AU,POINT (117.80958889032424 -34.9443954),183,,YABA,Albany,Albany,Western Australia
+ANO,Africa/Maputo,Angoche,ANO,MZ,POINT (39.94441128505658 -16.183674449999998),124,,FQAG,,,
+BEW,Africa/Maputo,Beira Airport,BEW,MZ,POINT (34.91058302709537 -19.79742665),39,,FQBR,,,
+BGW,Asia/Baghdad,Baghdad International Airport,BGW,IQ,POINT (44.232794695535205 33.2638222),95,,ORBI,Abu Ghurayb,Abu Ghraib District,Mayorality of Baghdad
+HBH,America/Juneau,Hobart Bay,HBH,US,POINT (-133.46666 57.408333),0,,"",,,
+ISA,Australia/Brisbane,Mount Isa Airport,ISA,AU,POINT (139.488962 -20.6661532),1092,,YBMA,,,
+LRE,Australia/Brisbane,Longreach Airport,LRE,AU,POINT (144.2716207 -23.4392843),597,,YLRE,,,
+MYI,Australia/Brisbane,Murray Island,MYI,AU,POINT (144.0543374023966 -9.91452055),265,,YMAE,,,
+MJL,Africa/Libreville,Mouila,MJL,GA,POINT (10.924167 -1.817778),351,,FOGM,Mouila,,Ngounie
+BKO,Africa/Bamako,Bamako-Senou International Airport,BKO,ML,POINT (-7.9487650400229874 12.5353304),1197,,GABS,Bamako,,Bamako
+MJM,Africa/Lubumbashi,Mbuji-Mayi,MJM,CD,POINT (23.633333 -6.15),1817,,FZWA,Mbuji-Mayi,,Kasai-Oriental
+MIC,America/Chicago,Crystal,MSP,US,POINT (-93.352502343064 45.06193745),839,,,Brooklyn Center,Hennepin County,Minnesota
+MID,America/Merida,Manuel Crescencio Rejon International Airport,MID,MX,POINT (-89.65927789055651 20.9246449),88,,MMMD,Itzincab Palomeque,,Yucatan
+KAH,Australia/Melbourne,City Heliport,MEL,AU,POINT (144.96666 -37.816666),0,,,,,
+LHG,Australia/Sydney,Lightning Ridge,LHG,AU,POINT (147.980323605421 -29.4531612),540,,YLRD,,,
+ADX,Europe/London,Leuchars,ADX,GB,POINT (-2.8596339552168737 56.375599050000005),19,,EGQL,Leuchars,Fife,Scotland
+TSX,Asia/Makassar,Tanjung Santan,TSX,ID,POINT (117.44020020311137 -0.0922169499999999),121,,WALT,Bontang Baru,,East Kalimantan
+TTB,Europe/Rome,Arbatax,TTB,IT,POINT (9.683019323334598 39.91869185),23,,LIET,Tortoli,Provincia di Ogliastra,Sardinia
+DKL,America/Vancouver,Kiwigana Lodge Heliport,DKL,CA,POINT (-122.9222 59.2416),1272,,,,,
+BRZ,Africa/Abidjan,Borotou,BRZ,CI,POINT (-7.5 8.766667),1368,,,,,
+BSZ,America/Anchorage,Bartletts,BSZ,US,POINT (-157.35028 58.233612),26,,,,,
+AEH,Africa/Ndjamena,Abéché,AEH,TD,POINT (20.849645040165157 13.8465726),1778,,FTTC,Abeche,,Ouaddai
+ASR,Europe/Istanbul,Kayseri Airport,ASR,TR,POINT (35.49468492689121 38.773475250000004),3428,,LTAU,Kayseri,,Kayseri
+AYN,Asia/Shanghai,Anyang Airport,AYN,CN,POINT (114.34102968441096 36.132250150000004),236,,ZHAY,Anyang,,Henan Sheng
+BHE,Pacific/Auckland,Woodbourne Airport,BHE,NZ,POINT (173.86935377852836 -41.5172616),88,,NZWB,Blenheim,Marlborough District,Marlborough
+BHG,America/Tegucigalpa,Brus Laguna,BHG,HN,POINT (-84.5428876 15.7357862),42,,MHBL,Brus Laguna,,Gracias a Dios
+BHJ,Asia/Kolkata,Rudra Mata Airport,BHJ,IN,POINT (69.66374549345942 23.275686800000003),295,http://aai.aero/allAirports/bhuj_generalinfo.jsp,VABJ,Bhuj,Kachchh,Gujarat
+BHM,America/Chicago,Birmingham-Shuttlesworth International Airport,BHM,US,POINT (-86.75154126864663 33.5635078),603,http://www.flybirmingham.com/,KBHM,Tarrant,Jefferson County,Alabama
+BHN,Asia/Aden,Beihan,BHN,YE,POINT (45.7201004 14.7819996),3727,,OYBN,Bayhan,Bayhan,Shabwah
+BHQ,Australia/Broken_Hill,Broken Hill Airport,BHQ,AU,POINT (141.47089360382742 -32.00625895),908,,YBHI,,,
+BHT,Australia/Brisbane,Brighton Downs,BHT,AU,POINT (141.5790509 -23.3684564),377,,"",,,
+BHU,Asia/Kolkata,Bhavnagar Airport,BHU,IN,POINT (72.18697803465328 21.7528163),45,http://aai.aero/allAirports/bhavnagar.jsp,VABV,Bhavnagar,Bhavnagar,Gujarat
+BVL,America/La_Paz,Baures,BVL,BO,POINT (-63.583332 -13.583333),459,,SLBA,,,
+EUA,Pacific/Tongatapu,Kaufana,EUA,TO,POINT (-174.957600379511 -21.37746165),321,,NFTE,`Ohonua,,'Eua
+HIH,Australia/Brisbane,Hook Island,HIH,AU,POINT (148.95 -20.166668),0,,,,,
+HZK,Atlantic/Reykjavik,Husavik,HZK,IS,POINT (-17.424923368250234 65.95448809999999),32,,BIHU,,,
+MKL,America/Chicago,Mckellar Airport,MKL,US,POINT (-88.9161165 35.6014507),426,http://mckellarsipes.com/,KMKL,Jackson,Madison County,Tennessee
+BXV,Atlantic/Reykjavik,Breiddalsvik,BXV,IS,POINT (-14.0381909 64.7895443),22,,BIBV,,,
+BAC,America/Bogota,Barranca De Upia,BAC,CO,POINT (-72.9754852 4.5728352),790,,"",Barranca de Upia,,Meta
+BIA,Europe/Paris,Bastia Poretta Airport,BIA,FR,POINT (9.481946623405268 42.55466885),42,,LFKB,Borgo,Departement de la Haute-Corse,Corsica
+BID,America/New_York,Block Island,BID,US,POINT (-71.5774515679899 41.168239549999996),95,http://www.blockislandri.net/blockislandairport.htm,KBID,Charlestown,Washington County,Rhode Island
+BIE,America/Chicago,Beatrice,BIE,US,POINT (-96.74932562315121 40.2996235),1312,http://beatriceairport.com/,KBIE,Beatrice,Gage County,Nebraska
+YHI,America/Yellowknife,Holman,YHI,CA,POINT (-117.71667 70.71667),117,,CYHI,,,
+BIJ,Pacific/Port_Moresby,Biliau,BIJ,PG,POINT (146.2 -5.583333),249,,"",,,
+YKL,America/Montreal,Schefferville Airport,YKL,CA,POINT (-64.816666 54.783333),1709,,CYKL,,,
+MKO,America/Chicago,Davis Field,MKO,US,POINT (-95.35837984300065 35.65580455),587,,,Muskogee,Muskogee County,Oklahoma
+MKW,Asia/Jayapura,Rendani Airport,MKW,ID,POINT (134.04910556479345 -0.89156245),42,,WAUU,Manokwari,,West Papua
+BIU,Atlantic/Reykjavik,Bildudalur,BIU,IS,POINT (-23.983334 65.833336),0,,BIBD,,,
+YKG,America/Montreal,Kangirsuk Airport,YKG,CA,POINT (-69.99784334087558 60.0292262),403,,CYAS,,,
+MKY,Australia/Brisbane,Mackay Airport,MKY,AU,POINT (149.18020182420713 -21.1701961),32,http://www.mackayairport.com.au/,YBMK,Mackay,Mackay,Queensland
+SDO,Asia/Tokyo,Ryotsu Sado Island,SDO,JP,POINT (138.41667 38.13333),367,,,,,
+YAT,America/Toronto,Attawapiskat,YAT,CA,POINT (-82.43111259693612 52.9275937),39,,CYAT,,,
+KZH,America/Anchorage,Kizhuyak,KZH,US,POINT (-153.15 57.583332),0,,,,,
+YHK,America/Cambridge_Bay,Gjoa Haven Airport,YHK,CA,POINT (-95.85487461213016 68.6368488),152,,CYHK,,,
+BJF,Europe/Oslo,Batsfjord Airport,BJF,NO,POINT (29.688477021025072 70.59939080000001),495,https://avinor.no/en/airport/batsfjord-airport/,ENBS,Batsfjord,Batsfjord,Finnmark Fylke
+BJI,America/Chicago,Bemidji Airport,BJI,US,POINT (-94.92982434625608 47.5101068),1407,http://www.bemidjiairport.org/,KBJI,Bemidji,Beltrami County,Minnesota
+CVA,America/New_York,Civic Ar Heli,PIT,US,POINT (-80.23583 40.496666),1122,,,,,
+CZH,America/Belize,Corozal,CZH,BZ,POINT (-88.41086533906282 18.38232605),45,,"",,,
+FMC,America/Anchorage,Five Mile,FMC,US,POINT (-149.84166 66.916664),4320,,,,,
+HSC,Asia/Shanghai,Shaoguan,HSC,CN,POINT (113.61667 24.833332),288,,"",Xinshao,,Guangdong
+YGY,America/Montreal,Deception,YGY,CA,POINT (-74.56168740274171 62.1139505),0,,,,,
+LCS,America/Costa_Rica,Las Canas,LCS,CR,POINT (-85.104164 10.418889),0,,,,,
+LGZ,America/Bogota,Leguizamo,LGZ,CO,POINT (20.888332 37.755833),0,,,,,
+MLI,America/Chicago,Quad City International Airport,MLI,US,POINT (-90.51146650735623 41.44772135),564,,KMLI,Coal Valley,Rock Island County,Illinois
+MLN,Africa/Ceuta,Melilla Airport,MLN,ES,POINT (-2.9577403946686074 35.2800282),137,,GEML,Melilla,Melilla,Melilla
+QPW,America/Godthab,Heliport,QPW,GL,POINT (-53.5 68.25),0,,,,,
+YLS,America/Montreal,Lebel-Sur-Quevillon,YLS,CA,POINT (-77.01652790419863 49.02990215),960,,CSH4,,,
+OUI,Asia/Vientiane,Ban Houei,OUI,LA,POINT (102.67083 18.936111),1154,,,,,
+JPU,Europe/Paris,La Defense Heliport,PAR,FR,POINT (2.333333 48.86667),0,,,,,
+JWH,America/Chicago,Westchase Hilton Heliport,HOU,US,POINT (-95.41778 29.73611),0,,,,,
+PCE,America/Anchorage,Painter Creek,PCE,US,POINT (-157.43306 57.164165),291,,,,,
+PFA,America/Anchorage,Paf Warren,PFA,US,POINT (-156.83333 58.666668),65,,,,,
+MLO,Europe/Athens,Milos Airport,MLO,GR,POINT (24.47603314456758 36.69699755),19,,LGML,Adamas,Nomos Kykladon,South Aegean
+EPI,Pacific/Efate,Epi,EPI,VU,POINT (168.25 -16.716667),521,,,,,
+MLP,Asia/Manila,Malabang,MLP,PH,POINT (124.05814682949386 7.6172392),32,,RPMM,Malabang,Province of Lanao del Sur,Autonomous Region in Muslim Mindanao
+MNJ,Indian/Antananarivo,Mananjary,MNJ,MG,POINT (48.35967558247168 -21.198617900000002),16,,FMSM,Mananjary,,Vatovavy Fitovinany
+MNL,Asia/Manila,Ninoy Aquino International Airport,MNL,PH,POINT (121.02188606807516 14.5123016),42,,RPLL,Makati City,Makati City,Metro Manila
+MJQ,America/Chicago,Jackson,MJQ,US,POINT (-95.01667 43.61667),1433,,,Jackson,Jackson County,Minnesota
+FTL,America/Nome,Fortuna Ledge,FTL,US,POINT (-162.08333 61.88333),78,,,,,
+BAG,Asia/Manila,Loakan,BAG,PH,POINT (120.61927080757144 16.375076),4219,,RPUB,Tuding,Province of Benguet,Cordillera
+BAH,Asia/Bahrain,Bahrain International Airport,BAH,BH,POINT (50.632903208060256 26.2697012),36,http://www.bahrainairport.com/,OBBI,Al Muharraq,,Muharraq
+BAV,Asia/Chongqing,Baotou Airport,BAV,CN,POINT (109.99998138888844 40.56068065),3300,,ZBOW,Shulinzhao,,Inner Mongolia
+BAX,Asia/Omsk,Barnaul Gherman Titov International Airport,BAX,RU,POINT (83.5504536213013 53.3635611),839,http://airaltay.ru/,UNBB,Gon'ba,,Altai Krai
+BBR,America/Guadeloupe,Baillif,BBR,GP,POINT (-61.74331841857014 16.01391785),39,,TFFB,Baillif,Guadeloupe,Guadeloupe
+BBS,Europe/London,Blackbushe,BBS,GB,POINT (-0.8405417 51.3228059),321,http://www.blackbusheairport.co.uk/,EGLK,Yateley,Hampshire,England
+BJL,Africa/Banjul,Yundum International Airport,BJL,GM,POINT (-16.6495025720344 13.336338000000001),49,,GBYD,Abuko,,Western
+BJN,Africa/Maputo,Bajone,BJN,MZ,POINT (38.083332 -17.183332),22,,,,,
+BJQ,Asia/Muscat,Bahja Airport,BJQ,OM,POINT (56.06777778 19.87305556),511,,"",,,
+BJT,Asia/Colombo,Bentota River,BJT,LK,POINT (79.98333 6.483333),26,,"",Beruwala,,Western
+BJV,Europe/Istanbul,Milas-Bodrum Airport,BJV,TR,POINT (27.67212809118392 37.24952535),29,,LTFE,Kiulukioi,,Mugla
+YTC,America/Vancouver,Sturdee Valley Airport,YTC,CA,POINT (-127.15 57.2),0,,,Sturdee,,British Columbia
+YMP,America/Vancouver,Port McNeil,YMP,CA,POINT (-127.09722 50.61111),225,,CAT5,,,
+CCD,America/Los_Angeles,Century City,LAX,US,POINT (-118.26667 34.066666),400,,,,,
+NES,America/New_York,East 34th St Landing,NYC,US,POINT (-73.975 40.743332),39,,,,,
+MST,Europe/Amsterdam,Maastricht Aachen Airport,MST,NL,POINT (5.7686203 50.9158588),370,,EHBK,Elsloo,Gemeente Stein,Limburg
+YND,America/Toronto,Gatineau Airport,YOW,CA,POINT (-75.63333 45.483334),211,http://www.ego-airport.ca/english/propos_ego/,CYND,,,
+MSV,America/New_York,Sullivan County International,MSV,US,POINT (-74.79666606582126 41.70198565),1354,http://sullivanny.us/Departments/Airport,KMSV,Liberty,Sullivan County,New York
+DJG,Africa/Algiers,Inedbirenne Airport,DJG,DZ,POINT (9.488889 24.465279),3356,,DAAJ,,,
+AAL,Europe/Copenhagen,Aalborg Airport,AAL,DK,POINT (9.868075521300991 57.0864352),19,http://www.aal.dk,EKYT,Vadum,Alborg Kommune,North Denmark
+ALT,America/Santarem,Alenquer,ALT,BR,POINT (-54.766666 -1.933333),3,,SDWQ,Alenquer,Alenquer,Para
+YNP,America/Goose_Bay,Natuashish Airport,YNP,CA,POINT (-61.18168410059596 55.91337420000001),30,,CNH2,,,
+AYU,Pacific/Port_Moresby,Aiyura,AYU,PG,POINT (145.90298982972382 -6.3366412),5328,,AYAY,,,
+MSY,America/Chicago,Louis Armstrong New Orleans International Airport,MSY,US,POINT (-90.26430439366972 29.99420015),36,http://www.flymsy.com,KMSY,Kenner,Jefferson Parish,Louisiana
+YNC,America/Montreal,Wemindji,YNC,CA,POINT (-78.83166404601303 53.010420749999994),66,,CYNC,,,
+YXY,America/Whitehorse,Whitehorse Airport,YXY,CA,POINT (-135.06824981358608 60.709296249999994),2317,,CYXY,,,
+POQ,America/Anchorage,Polk Inlet,POQ,US,POINT (-132.5 55.35),111,,,,,
+RLU,America/Anchorage,Bornite Upper,RLU,US,POINT (-156 67.75),2155,,,,,
+MTH,America/New_York,Florida Keys Marathon Airport,MTH,US,POINT (-81.0512195 24.7258703),26,http://marathonga.com/,KMTH,Marathon,Monroe County,Florida
+EPT,Pacific/Port_Moresby,Eliptamin,EPT,PG,POINT (141.67824597773895 -5.04175185),4753,,AYEL,,,
+MTJ,America/Denver,Montrose Regional Airport,MTJ,US,POINT (-107.89248795618495 38.5118206),5659,,KMTJ,Montrose,Montrose County,Colorado
+EXI,America/Juneau,SPB,EXI,US,POINT (-135.44722 58.420834),22,,"",,,
+SOI,Australia/Brisbane,South Molle Island,SOI,AU,POINT (148.58333 -20.75),187,,,,,
+PTR,America/Anchorage,Pleasant Harbour,PTR,US,POINT (-152.83333 57.75),1217,,,,,
+FNK,America/Anchorage,Fin Creek,FNK,US,POINT (-147.58333 69.5),836,,,,,
+BAS,Pacific/Guadalcanal,Balalae,BAS,SB,POINT (155.8855471 -6.9911804),36,,AGGE,,,
+BMT,America/Chicago,Beaumont Municipalcipal,BPT,US,POINT (-94.1 30.083332),36,https://beaumonttexas.gov/beaumont-municipal-airport/,KBMT,Beaumont,Jefferson County,Texas
+BMV,Asia/Ho_Chi_Minh,Phung-Duc Airport,BMV,VN,POINT (108.05 12.666667),1519,,VVBM,Buon Ma Thuot,,Dac Lak
+BMY,Pacific/Noumea,Belep Island,BMY,NC,POINT (163.66667 -19.75),518,,NWWC,Wala,Belep,North Province
+BNA,America/Chicago,Nashville International Airport,BNA,US,POINT (-86.68308703291842 36.11958985),583,http://www.flynashville.com/,KBNA,Lakewood,Davidson County,Tennessee
+BND,Asia/Tehran,Bandar Abbas International Airport,BND,IR,POINT (56.37856860111275 27.222036449999997),45,,OIKB,Bandar 'Abbas,,Hormozgan
+BQI,Africa/Windhoek,Bagani,BQI,NA,POINT (21.62397620638218 -18.1182302),3280,,FYBG,Bagani,,Zambezi
+FXM,America/Anchorage,Flaxman Island,FXM,US,POINT (-146 70.2),0,,,,,
+GTB,Asia/Kuala_Lumpur,Genting,GTB,MY,POINT (111.7 2.116667),22,,,,,
+HEX,America/Santo_Domingo,Santo Domingo Herrera,SDQ,DO,POINT (-69.975 18.475),177,,,,,
+RXA,Asia/Aden,Raudha,RXA,YE,POINT (44.216667 15.433333),7247,,,,,
+HGT,America/Los_Angeles,Hunter AAF,HGT,US,POINT (-121.15 35.966667),977,,,,,
+KGE,Pacific/Guadalcanal,Kagau,KGE,SB,POINT (157.5861 -8.165),30,,AGKG,,,
+NBO,Africa/Nairobi,Jomo Kenyatta International Airport,NBO,KE,POINT (36.92904912198662 -1.3168547),5272,http://www.kenyaairports.com/jkia/IndexJkia.php,HKJK,Pumwani,,Nairobi Area
+YPL,America/Atikokan,Pickle Lake,YPL,CA,POINT (-90.208336 51.208332),1267,,CYPL,,,
+YPX,America/Montreal,Puvirnituq,YPX,CA,POINT (-77.166664 60.033333),74,,CYPX,,,
+NMF,Indian/Maldives,Maafaru International Airport,NMF,MV,POINT (73.46999476916139 5.8188779),45,http://www.maafaruairport.com,VRDA,Manadhoo,,Noonu Atoll
+QUP,America/Godthab,Heliport,QUP,GL,POINT (-52 70.05),291,,,,,
+VIK,America/Anchorage,Airstrip,VIK,US,POINT (-146.9 69.68),636,,,,,
+WBI,America/Denver,Broker Inn,WBU,US,POINT (-105.28333 40.016666),5370,,,,,
+YPM,America/Winnipeg,Pikangikum,YPM,CA,POINT (-93.9732971 51.8196983),1114,,CYPM,,,
+YCP,America/Winnipeg,Co-op Point,YCP,CA,POINT (-102.03333 57.066666),0,,,,,
+NBS,Asia/Shanghai,Changbaishan Airport,NBS,CN,POINT (127.60277214510086 42.0691726),2890,,ZYBS,Manjiang,,Jilin Sheng
+NCE,Europe/Paris,Cote D'Azur Airport,NCE,FR,POINT (7.213706629141443 43.65980345),13,http://www.niceaeroport.fr,LFMN,Saint-Laurent-du-Var,Departement des Alpes-Maritimes,Provence-Alpes-Cote d'Azur
+NEU,Asia/Vientiane,Sam Neua,NEU,LA,POINT (104.06710620098113 20.41856835),3185,,VLSN,Xam Nua,,Houaphan
+KOI,Europe/London,Kirkwall Airport,KOI,GB,POINT (-2.9022964990238824 58.9537636),50,,EGPA,,,
+MDA,America/Chicago,Martindale Army Heliport,SAT,US,POINT (-98.5 29.416668),646,,,,,
+MJR,America/Argentina/Buenos_Aires,Miramar,MJR,AR,POINT (-57.833332 -38.25),19,,SAEM,Miramar,,Buenos Aires
+XBE,America/Winnipeg,Bearskin Lake,XBE,CA,POINT (-91.02530221093616 53.96607775),800,,CNE3,,,
+JSO,Europe/Stockholm,Sodertalje Heliport,JSO,SE,POINT (17.65 59.2),0,,,,,
+BDS,Europe/Rome,Brindisi - Salento Airport,BDS,IT,POINT (17.948577553183746 40.661605),16,http://www.seap-puglia.it/default.asp?idlingua=2&idcontenuto=29,LIBR,Materdomini,Provincia di Brindisi,Apulia
+BDU,Europe/Oslo,Bardufoss Airport,BDU,NO,POINT (18.540665381702304 69.05482565),196,https://avinor.no/en/airport/bardufoss-airport/,ENDU,Moen,Malselv,Troms
+BEB,Europe/London,Benbecula Airport,BEB,GB,POINT (-7.365274894300093 57.4807797),32,http://www.hial.co.uk/benbecula-airport.html,EGPL,Benbecula,Eilean Siar,Scotland
+YTK,America/Montreal,Tulugak,YTK,CA,POINT (-77.75 59.5),0,,,,,
+BED,America/New_York,Hanscom Field,BED,US,POINT (-71.28436913584784 42.46795055),88,http://www.massport.com/hansc/,KBED,Bedford,Middlesex County,Massachusetts
+BEF,America/Managua,Bluefields,BEF,NI,POINT (-83.7736603803171 11.9910456),36,,MNBL,Bluefields,,Atlantico Sur
+BQN,America/Puerto_Rico,Rafael Hernandez Airport,BQN,PR,POINT (-67.13421586611547 18.49346055),223,,TJBQ,San Antonio,,Aguadilla
+BQQ,America/Bahia,Barra,BQQ,BR,POINT (-43.13333 -11.083333),1309,,SNBX,Barra,Barra,Bahia
+BQV,America/Juneau,Bartlett SPB,GST,US,POINT (-135.73334 58.416668),16,,BQV,,,
+BRV,Europe/Berlin,Bremerhaven,BRV,DE,POINT (8.916667 53.75),32,,EDWB,Ihlienworth,,Lower Saxony
+BTN,America/New_York,Bennettsville,BTN,US,POINT (-79.683334 34.61667),150,,KBBP,Bennettsville,Marlboro County,South Carolina
+BTP,America/New_York,Butler County - Kenny Scholter Field,BTP,US,POINT (-79.916664 40.85),1118,http://butlercountyairport.org/,KBTP,Homeacre-Lyndora,Butler County,Pennsylvania
+BVA,Europe/Paris,Beauvais-Tille Airport,PAR,FR,POINT (2.110815 49.459488),344,,LFOB,Tille,Departement de l'Oise,Picardie
+BVB,America/Boa_Vista,Boa Vista Airport,BVB,BR,POINT (-60.666668 2.833333),242,,SBBV,Boa Vista,Boa Vista,Roraima
+BVE,Europe/Paris,Laroche Airport,BVE,FR,POINT (1.533333 45.166668),347,http://www.aeroport-brive-vallee-dordogne.fr,LFSL,Brive-la-Gaillarde,Departement de la Correze,Limousin
+BVR,Atlantic/Cape_Verde,Esperadinha,BVR,CV,POINT (-24.746409068683505 14.863705849999999),78,,GVBR,Vila Nova Sintra,,Brava
+FLE,America/New_York,Fort Lee AAF,PTB,US,POINT (-77.4 37.216667),108,,,,,
+GAF,Africa/Tunis,Gafsa,GAF,TN,POINT (8.823456814251143 34.423966300000004),1033,,DTTF,Gafsa,Gafsa Municipality,Gafsa
+GEK,America/Anchorage,Ganes Creek,GEK,US,POINT (-156.43333 63.1),577,,,,,
+GFB,America/Anchorage,Togiak Fish,GFB,US,POINT (-160.05 59.016666),173,,,,,
+GLQ,America/Anchorage,Glennallen,GLQ,US,POINT (-145.55 62.11667),1433,,,,,
+JCH,America/Godthab,Qasigiannguit,JCH,GL,POINT (-51.20133 68.81515),0,,,,,
+JCJ,Asia/Seoul,Chuja Heliport,CJU,KR,POINT (126.32778 33.944443),0,,,,,
+YLF,America/Montreal,LaForges,YLF,CA,POINT (-72.48333 54.183334),0,,,,,
+YSG,America/Yellowknife,Lutselke,YSG,CA,POINT (-110.075554 62.41861),596,,CYLK,,,
+CEL,America/Nassau,Cape Eleuthera,CEL,BS,POINT (-76.33083 25.28389),62,,,,,
+YSE,America/Vancouver,Squamish,YSE,CA,POINT (-101.23333 52.11667),171,,CYSE,,,
+YRT,America/Rankin_Inlet,Rankin Inlet Airport,YRT,CA,POINT (-92.11267653787488 62.81005385),94,,CYRT,,,
+WLB,America/Sitka,Labouchere Bay,WLB,US,POINT (-133.65834 56.291668),0,,,,,
+KNV,America/Vancouver,Knights Inlet,KNV,CA,POINT (-125.833336 50.683334),0,,,,,
+MIK,Europe/Helsinki,Mikkeli,MIK,FI,POINT (27.20252705452367 61.6869526),278,http://www.mikkelinlentoasema.fi/en/,EFMI,Mikkeli,Mikkeli,Southern Savonia
+YDX,America/Vancouver,Doc Creek,YDX,CA,POINT (-128.08333 52.05),0,,,,,
+YTN,America/Montreal,Riviere Au Tonnerre,YTN,CA,POINT (-64.75 50.283333),0,,,,,
+AAM,Africa/Johannesburg,Mala Mala,AAM,ZA,POINT (31.533333 -24.8),1082,,FAMD,,,
+BGR,America/New_York,Bangor International Airport,BGR,US,POINT (-68.81941486105113 44.8072619),131,http://www.flybangor.com ,KBGR,Bangor,Penobscot County,Maine
+BWA,Asia/Kathmandu,Bhairawa Airport,BWA,NP,POINT (83.41217482010336 27.5050984),314,,VNBW,Bhairahawa,Lumbini Zone,Western Region
+BWL,America/Chicago,Blackwell,BWL,US,POINT (-97.3172658 36.7958654),1053,,"6OK6",Blackwell,Kay County,Oklahoma
+BWM,America/Boise,Bowman,BWM,US,POINT (-103.4 46.183334),2969,http://www.bowmannd.com/county/departments/airport-authority/,KBWW,Bowman,Bowman County,North Dakota
+BWW,America/Havana,Las Brujas Airport,BWW,CU,POINT (-79.14720154 22.62129974),29,,MUBR,Yaguajay,,Sancti Spiritus
+BXA,America/Chicago,George R Carr,BXA,US,POINT (-89.88333 30.933332),177,,KBXA,Varnado,Washington Parish,Louisiana
+BXC,America/New_York,Boxborough,BXC,US,POINT (-71.51801357130509 42.460355899999996),226,,,Harvard,Worcester County,Massachusetts
+BXG,Australia/Melbourne,Bendigo,BXG,AU,POINT (144.30194 -36.734722),688,,YBDG,White Hills,Greater Bendigo,Victoria
+BXH,Asia/Almaty,Balhash,BXH,KZ,POINT (75.01667 46.88333),1328,,UAAH,Balqash,,Qaraghandy
+BXI,Africa/Abidjan,Boundiali,BXI,CI,POINT (-6.5 8.75),1148,,DIBI,Mankono,,Worodougou
+BXJ,Asia/Almaty,Burundai,ALA,KZ,POINT (76.95 43.5),2030,http://www.burundaiavia.kz/?lan=en,UAAR,Energeticheskiy,,Almaty Oblysy
+FGL,Pacific/Auckland,Fox Glacier,FGL,NZ,POINT (170.01666 -43.466667),524,,,,,
+MIM,Australia/Sydney,Merimbula Airport,MIM,AU,POINT (149.901582526423 -36.90783335),22,,YMER,Merimbula,Bega Valley,New South Wales
+MJD,Asia/Karachi,Mohenjodaro,MJD,PK,POINT (68.14136891196353 27.334915350000003),147,,OPMJ,Dokri,,Sindh
+NTQ,Asia/Tokyo,Noto Airport,NTQ,JP,POINT (136.96099048012408 37.29385069999999),695,,RJNW,Nanao,,Ishikawa
+APR,Pacific/Port_Moresby,April River,APR,PG,POINT (145 -8.5),0,,AYPE,,,
+KPF,Pacific/Port_Moresby,Kondubol,KPF,PG,POINT (142.51195 -8.533056),132,,AYDL,,,
+WHH,America/Denver,Hiltons Har H,WBU,US,POINT (-105.23472 40.030556),5242,,,,,
+MJN,Indian/Antananarivo,Amborovy,MJN,MG,POINT (46.350321848635154 -15.6669088),39,,FMNM,Mahajanga,,Boeny
+MLF,America/Denver,Milford,MLF,US,POINT (-113.01667 38.433334),5013,,,Milford,Beaver County,Utah
+DCP,America/Vancouver,Cabin Plant Heliport,DCP,CA,POINT (-121.691388 59.23361111),2112,,,Fort Nelson,Fort Nelson,British Columbia
+MLJ,America/New_York,Baldwin County,MLJ,US,POINT (-83.23333 33.083332),367,,,Milledgeville,Baldwin County,Georgia
+XKS,America/Winnipeg,Kasabonika,XKS,CA,POINT (-88.64333777775391 53.522354),679,,CYAQ,,,
+DGG,Pacific/Port_Moresby,Daugo,DGG,PG,POINT (-162.9 68.03),898,,,,,
+CUW,America/Juneau,Cube Cove,CUW,US,POINT (-134.75 57.941666),0,,,,,
+BKU,Indian/Antananarivo,Betioky,BKU,MG,POINT (44.3889999 -23.7329998),866,,FMSV,Betioky,,Atsimo-Andrefana
+BXK,America/Phoenix,Buckeye Municipal,BXK,US,POINT (-112.583336 33.36667),856,,KBXK,Buckeye,Maricopa County,Arizona
+BXS,America/Los_Angeles,Borrego Springs,BXS,US,POINT (-116.32778 33.343334),3100,http://www.borregospringschamber.com/airport.html,L08,Borrego Springs,San Diego County,California
+BXT,Asia/Makassar,Bontang,BXT,ID,POINT (117.5 0.166667),0,,WALC,Bontang,,East Kalimantan
+BXX,Africa/Mogadishu,Borama International,BXX,SO,POINT (43.11667 9.966667),4730,,"",Baki,,Awdal
+BXY,Asia/Qyzylorda,Baikonur Krayniy Airport,BXY,KZ,POINT (63.213889 45.623611),291,,UAOL,Toretam,,Bayqongyr Qalasy
+BYA,America/Anchorage,Boundary,BYA,US,POINT (-141.1133333 64.0780556),2903,,BYA,,,
+BYB,Asia/Muscat,Dibaa,BYB,OM,POINT (56.25 25.583332),98,,"",Dibba Al-Fujairah,,Al Fujayrah
+BYD,Asia/Aden,Beidah,BYD,YE,POINT (46.55 14.133333),4776,,OYBI,Marbat,Hatib,Shabwah
+BYF,Europe/Paris,Albert-Bray Airport,BYF,FR,POINT (2.697659969 49.9715004),314,,LFAQ,Bray-sur-Somme,Departement de la Somme,Picardie
+BYG,America/Denver,Municipal,BYG,US,POINT (-106.7 44.35),4648,,KBYG,Buffalo,Johnson County,Wyoming
+BYI,America/Boise,Rupert,BYI,US,POINT (-113.77417 42.54139),4137,http://burleyidaho.org/city-of-burley/airport/,KBYI,Burley,Cassia County,Idaho
+BZT,America/Phoenix,Eagle Air Park,BZT,US,POINT (-114.61603755344 34.89139607951),475,,"2TE0",Brazoria,Brazoria County,Texas
+BZY,Europe/Chisinau,Beltsy Airport,BZY,MD,POINT (27.933332 47.75),311,,LUBL,Balti,,Balti
+CAA,America/Tegucigalpa,Catacamas,CAA,HN,POINT (-85.89445 14.830556),1305,,MHCA,Santa Maria del Real,,Olancho
+KPG,America/Guyana,Kurupung,KPG,GY,POINT (-59.166668 6.466667),0,,,,,
+KRX,Pacific/Port_Moresby,Kar Kar,KRX,PG,POINT (145.96666 -4.5),130,,AYKR,,,
+KUQ,Pacific/Port_Moresby,Kuri,KUQ,PG,POINT (143.26666 -7.133333),35,,AYKU,,,
+EHT,America/New_York,Rentschler,EHT,US,POINT (-72.65 41.766666),55,,,,,
+JNS,America/Godthab,Heliport,JNS,GL,POINT (-46.05 60.916668),0,,,,,
+FAG,Atlantic/Reykjavik,Fagurholsmyri,FAG,IS,POINT (-16.639845057443527 63.8748485),32,,BIFM,,,
+SWB,Australia/Perth,Shaw River,SWB,AU,POINT (119.3619995 -21.5102997),761,,"",,,
+BKG,America/Chicago,Branson,BKG,US,POINT (-93.19781657947979 36.527800049999996),1328,http://flybranson.com/,KBBG,Hollister,Taney County,Missouri
+KHW,Africa/Gaborone,Khwai River Lodge,KHW,BW,POINT (23.5 -19),3000,,FBKR,,,
+BBK,Africa/Gaborone,Kasane Airport,BBK,BW,POINT (25.164367059707985 -17.83045705),3277,,FBKE,Kasane,,North West
+BJY,Europe/Belgrade,Batajnica,BEG,RS,POINT (20.249824588976637 44.937272199999995),265,,LYBT,Novi Banovci,,
+BKI,Asia/Kuching,Kota Kinabalu International Airport,BKI,MY,POINT (116.0497893067351 5.9336120999999995),62,,WBKK,Putatan,,Sabah
+BKL,America/New_York,Burke Lakefront Airport,CLE,US,POINT (-81.68113241152425 41.518816900000004),580,http://www.clevelandairport.com/site/470/default.aspx,KBKL,Cleveland,Cuyahoga County,Ohio
+BBZ,Africa/Lusaka,Zambezi,BBZ,ZM,POINT (23.107031829691834 -13.5365145),3540,,FLZB,,,
+BJX,America/Mexico_City,Guanajuato International Airport,BJX,MX,POINT (-101.48120076520438 20.9934103),5925,,MMLO,Colonia Nuevo Mexico,,Guanajuato
+BKN,Asia/Ashgabat,Balkanabat Airport,BKN,TM,POINT (54.361552091351115 39.482919949999996),-36,,"",Balkanabat,,Balkan
+BMI,America/Chicago,Central Illinois Regional Airport,BMI,US,POINT (-88.91480264613926 40.4733557),921,,KBMI,Bloomington,McLean County,Illinois
+BMO,Asia/Rangoon,Bhamo,BMO,MM,POINT (97.24735139307217 24.270858099999998),328,,VYBM,Bhamo,,Kachin
+CAB,Africa/Luanda,Cabinda Airport,CAB,AO,POINT (12.188211410382321 -5.598032249999999),42,,FNCA,Cabinda,,Cabinda
+MLK,America/Denver,Malta,MLK,US,POINT (-107.9095 48.494415),2654,,M75,Malta,Phillips County,Montana
+MLM,America/Mexico_City,Morelia Airport,MLM,MX,POINT (-101.02693 19.84351),6046,,MMMM,Alvaro Obregon,,Michoacan
+MLR,Australia/Adelaide,Millicent,MLR,AU,POINT (140.01666 -37.483334),0,,YMCT,Millicent,Wattle Range,South Australia
+GUE,Pacific/Port_Moresby,Guriaso,GUE,PG,POINT (141.59136896882455 -3.58032505),291,,"",,,
+MLS,America/Denver,Municipal,MLS,US,POINT (-105.880554 46.430557),2657,,KMLS,Miles City,Custer County,Montana
+MMR,America/Chicago,Camp Maybry AHP,AUS,US,POINT (-97.75 30.283333),547,,,Austin,Travis County,Texas
+MMT,America/New_York,Mc Entire ANG Base,CAE,US,POINT (-81.115555 33.93667),190,,KMMT,Springdale,Lexington County,South Carolina
+NNI,Africa/Windhoek,Namutoni,NNI,NA,POINT (16.9272003 -18.8064003),3569,,FYNA,,,
+KWR,Pacific/Guadalcanal,Kwai Harbour,KWR,SB,POINT (160.73334 -8.566667),0,,,,,
+CAC,America/Sao_Paulo,Cascavel Airport,CAC,BR,POINT (-53.466667 -24.95),2417,,SBCA,Cascavel,Cascavel,Parana
+CAF,America/Manaus,Carauari,CAF,BR,POINT (-66.89752105783637 -4.87146245),265,,SWCA,Carauari,Carauari,Amazonas
+YXF,America/Whitehorse,Snake River,YXF,CA,POINT (-122.433334 59.033333),0,,,,,
+YDW,America/Yellowknife,Obre Lake,YDW,CA,POINT (-103.126998 60.3203011),1195,,CKV4,,,
+RSP,America/Anchorage,Raspberry Strait,RSP,US,POINT (-154.83333 58.166668),928,,,,,
+WHD,America/Sitka,SPB,WHD,US,POINT (-130.08333 55.916668),2201,,"",,,
+MNR,Africa/Lusaka,Mongu,MNR,ZM,POINT (23.161989771117565 -15.254743349999998),3448,,FLMG,Mongu,,Western
+MMV,Pacific/Port_Moresby,Mal,MMV,PG,POINT (-123.14 45.19),114,,AYMM,Lafayette,Yamhill County,Oregon
+ZBU,Europe/Copenhagen,Aarhus Limo,AAR,DK,POINT (10.203921 56.162939),0,,,,,
+YSZ,America/Vancouver,Squirrel Cove,YSZ,CA,POINT (-124.916664 50.05),0,,,,,
+MMW,Africa/Maputo,Moma,MMW,MZ,POINT (39.066666 -16.783333),65,,,Antonio Enes,,Nampula
+CAM,America/La_Paz,Camiri,CAM,BO,POINT (-63.52727344590175 -20.00638975),2601,,SLCA,Camiri,,Santa Cruz
+GUN,America/Chicago,Gunter AFB,MGM,US,POINT (-86.316666 32.38333),167,,,,,
+CAO,America/Denver,Clayton,CAO,US,POINT (-103.183334 36.45),5062,,KCAO,Clayton,Union County,New Mexico
+CAQ,America/Bogota,Caucasia,CAQ,CO,POINT (-75.25 7.6),492,,SKCU,Caceres,,Antioquia
+CAR,America/New_York,Municipal,CAR,US,POINT (-68.01667 46.86667),574,,KCAR,Caribou,Aroostook County,Maine
+CAS,Africa/Casablanca,Anfa,CAS,MA,POINT (-7.663056 33.559723),154,,,Casablanca,Casablanca,Grand Casablanca
+CAU,America/Recife,Caruaru,CAU,BR,POINT (-35.916668 -8.25),1932,,SNRU,Caruaru,Caruaru,Pernambuco
+CAW,America/Sao_Paulo,Bartolomeu Lisandro Airport,CAW,BR,POINT (-41.3 -21.75),32,http://www.infraero.gov.br/index.php/aeroportos/rio-de-janeiro/aeroporto-de-bartolomeu-lisandro.html,SBCP,Campos,Campos Dos Goytacazes,Rio de Janeiro
+CBB,America/La_Paz,J Wilsterman Airport,CBB,BO,POINT (-66.178894 -17.413954),8421,,SLCB,Cochabamba,,Cochabamba
+CBF,America/Chicago,Municipal,CBF,US,POINT (-95.86667 41.266666),997,,KCBF,Council Bluffs,Pottawattamie County,Iowa
+CBG,Europe/London,Cambridge Airport,CBG,GB,POINT (0.183333 52.2),59,http://www.cambridgeairport.com/,EGSC,Fulbourn,Cambridgeshire,England
+CBH,Africa/Algiers,Leger,CBH,DZ,POINT (-2.259722 31.647778),2611,,DAOR,Bechar,,Bechar
+CBK,America/Chicago,Municipal,CBK,US,POINT (-101.05 39.4),3156,,KCBK,Colby,Thomas County,Kansas
+IIN,Asia/Tokyo,Nishinoomote,IIN,JP,POINT (130.98334 30.716667),68,,,,,
+CBL,America/Caracas,Ciudad Bolivar,CBL,VE,POINT (-63.5375 8.128056),141,,SVCB,Ciudad Bolivar,,Bolivar
+XKO,America/Vancouver,Kemano,XKO,CA,POINT (-127.933334 53.566666),0,,,,,
+CBN,Asia/Jakarta,Penggung,CBN,ID,POINT (108.53333 -6.75),62,,WICD,Weru,,West Java
+KNY,America/Regina,Kinoosao,KNY,CA,POINT (-102.03333 57.066666),0,,,,,
+CBS,America/Caracas,Oro Negro,CBS,VE,POINT (-71.416664 10.383333),39,,SVON,Cabimas,,Zulia
+CCC,America/Havana,Jardines del Rey Airport,CCC,CU,POINT (-78.50833 22.5125),29,,MUCC,Moron,,Ciego de Avila
+CCF,Europe/Paris,Carcassonne Airport,CCF,FR,POINT (2.316667 43.216667),370,,LFMK,Pennautier,Departement de l'Aude,Languedoc-Roussillon
+CCH,America/Santiago,Chile Chico,CCH,CL,POINT (-71.68903562065907 -46.5823172),1000,,SCCC,Chile Chico,Provincia General Carrera,Aisen
+MNS,Africa/Lusaka,Mansa,MNS,ZM,POINT (28.87513348094533 -11.1383471),4094,,FLMA,Mansa,,Luapula
+CCI,America/Sao_Paulo,Concordia,CCI,BR,POINT (-52.050556 -27.181389),2398,,SSCK,Concordia,Concordia,Santa Catarina
+CCK,Indian/Cocos,Cocos Islands Airport,CCK,CC,POINT (96.916664 -12.166667),0,,YPCC,West Island,,
+YDA,America/Dawson,Dawson City Airport,YDA,CA,POINT (-139.12349875910493 64.04402830000001),1215,,CYDA,,,
+ZQW,Europe/Berlin,Zweibruecken Airport,SCN,DE,POINT (7.39756145986936 49.209210999999996),1132,http://www.edrz-airport.de,EDRZ,,,
+JRB,America/New_York,Downtown Manhattan Heliport,NYC,US,POINT (-74.00807244760026 40.7012724),0,,,,,
+WLN,America/Sitka,Little Naukati,WLN,US,POINT (-133.2292064 55.8521547),0,,,,,
+RAB,Pacific/Port_Moresby,Tokua Airport,RAB,PG,POINT (152.3808504456366 -4.340607),32,,AYTK,,,
+RRS,Europe/Oslo,Roros Airport,RRS,NO,POINT (11.34117592390011 62.580881950000006),1981,https://avinor.no/en/airport/roros-airport/,ENRO,,,
+WRH,America/Anchorage,Wrench Creek,WRH,US,POINT (-162.28334 68.25),1942,,,,,
+CCM,America/Sao_Paulo,Criciuma,CCM,BR,POINT (-49.36667 -28.7),203,,SBCM,Criciuma,Criciuma,Santa Catarina
+CCN,Asia/Kabul,Chakcharan,CCN,AF,POINT (65.26667 34.533333),7516,,OACC,Fayroz Koh,,Ghowr
+CCQ,America/Bahia,Cachoeira,CCQ,BR,POINT (-38.966667 -12.6),127,,,Cachoeira,Cachoeira,Bahia
+CCT,America/Argentina/Salta,Colonia Catriel,CCT,AR,POINT (-68.916664 -39.5),1269,,SA30,Picun Leufu,Departamento de Picun Leufu,Neuquen
+HAX,America/Chicago,Hatbox Field,MKO,US,POINT (-95.416664 35.75),646,,,,,
+YBM,America/Vancouver,Bronson Creek,YBM,CA,POINT (-131 56.7),439,,,,,
+WAN,Australia/Brisbane,Waverney,WAN,AU,POINT (141.9251849 -25.3566422),570,,,,,
+WUG,Pacific/Port_Moresby,Wau,WUG,PG,POINT (146.71834 -7.3375),3484,,AYWU,,,
+BNK,Australia/Sydney,Ballina Byron Airport,BNK,AU,POINT (153.55643603229527 -28.83744645),19,,YBNA,Ballina,Ballina,New South Wales
+BNL,America/New_York,Barnwell Regional,BNL,US,POINT (-81.383034 33.2604761),226,http://www.barnwellregionalairport.com/Home_Page.php,KBNL,Barnwell,Barnwell County,South Carolina
+BNN,Europe/Oslo,Bronnoysund Airport Bronnoy,BNN,NO,POINT (12.2109254 65.4595318),22,https://avinor.no/en/airport/bronnoysund-airport/,ENBN,Bronnoysund,Bronnoy,Nordland
+MNA,Asia/Makassar,Melangguane,MNA,ID,POINT (126.7 4.05),219,,WAMN,Lirung,,North Sulawesi
+UMB,America/Anchorage,North Shore,UMB,US,POINT (-167.8875 53.376667),0,,,,,
+MNI,America/Montserrat,Bramble Airport,MNI,MS,POINT (-62.233334 16.75),104,,TRPM,Saint Peters,,Saint Peter
+MLU,America/Chicago,Monroe Regional Airport,MLU,US,POINT (-92.0384615 32.5111077),72,,KMLU,Lakeshore,Ouachita Parish,Louisiana
+YRA,America/Yellowknife,Rae Lakes,YRA,CA,POINT (-117.31158204272573 64.1162588),723,,CYRA,,,
+MME,Europe/London,Durham Tees Valley Airport,MME,GB,POINT (-1.4247903167173146 54.50941065),88,http://www.durhamteesvalleyairport.com/,EGNV,Bishopton,Darlington,England
+ASI,Atlantic/St_Helena,Saint Helena Airport,ASI,SH,POINT (-14.4 -7.966667),259,http://www.raf.mod.uk/organisation/stations.cfm?selectStation=9DEB5257-FDEF-6850-8B1CFF5050616CC1#cgi.script_name#,FHAW,,,
+BAN,Africa/Lubumbashi,Basongo,BAN,CD,POINT (20.4142387 -4.3151816),1302,,FZVR,,,
+BHC,Asia/Karachi,Bhurban Heliport,BHC,PK,POINT (73.433334 33.925),5925,,,Murree,,Punjab
+BNI,Africa/Lagos,Benin City Airport,BNI,NG,POINT (5.599650573795893 6.3171425),213,http://www.faannigeria.org/nigeria-airport.php?airport=22,DNBE,Benin City,,Edo
+BPA,America/New_York,Grumman,BPA,US,POINT (-73.48333 40.733334),111,,,Bethpage,Nassau County,New York
+BPS,America/Bahia,Porto Seguro Airport,BPS,BR,POINT (-39.08336724314525 -16.4389835),134,,SBPS,Porto Seguro,Porto Seguro,Bahia
+MMF,Africa/Douala,Mamfe,MMF,CM,POINT (9.3063685 5.7049093),370,,FKKF,Mamfe,,South-West Province
+BPX,Asia/Shanghai,Bangda Airport,BPX,CN,POINT (97.10917357409966 30.551130399999998),14229,,ZUBD,Yanduo,,Tibet Autonomous Region
+BQG,Asia/Vladivostok,Bogorodskoye,BQG,RU,POINT (140.45002737812848 52.3825564),124,,UHNB,Bogorodskoye,,Khabarovsk Krai
+MNN,America/New_York,Municipal,MNN,US,POINT (-83.13333 40.583332),971,http://www.marionairport.com/,KMNN,Marion,Marion County,Ohio
+MMH,America/Los_Angeles,Mammoth Lakes Airport,MMH,US,POINT (-118.8414903 37.6271234),7103,,KMMH,Mammoth Lakes,Mono County,California
+MMK,Europe/Moscow,Murmansk Airport,MMK,RU,POINT (32.76209802957863 68.77916255),223,http://www.airport-murmansk.ru/,ULMM,Murmashi,,Murmansk
+GFA,America/Denver,Malmstrom AFB,GTF,US,POINT (-111.28333 47.5),3339,,,,,
+MMM,Australia/Brisbane,Middlemount,MMM,AU,POINT (148.7066004 -22.8030537),534,,YMMU,Tieri,Central Highlands,Queensland
+HNX,America/Denver,Hanna,HNX,US,POINT (-106.5 41.833332),7155,,,,,
+FGR,Europe/Madrid,Fuengirola,FGR,ES,POINT (-4.633333 36.533333),32,,,Fuengirola,Provincia de Malaga,Andalusia
+ILF,America/Winnipeg,Ilford,ILF,CA,POINT (-95.6137982 56.052567),636,,CZBD,,,
+FIN,Pacific/Port_Moresby,Finschhafen,FIN,PG,POINT (147.8537867495256 -6.6207783),65,,AYFI,,,
+FMG,America/Costa_Rica,Flamingo,FMG,CR,POINT (-85.78333 10.416667),52,,,Sardinal,,Guanacaste
+GBO,America/New_York,Baltimore Greenbelt T,BWI,US,POINT (-76.75 39.266666),501,,,Catonsville,Baltimore County,Maryland
+IUM,America/Vancouver,Summit Lake,IUM,CA,POINT (-122.666664 54.333332),2319,,,,,
+MMQ,Africa/Lusaka,Mbala,MMQ,ZM,POINT (31.33412808987253 -8.8596105),5488,,FLBA,Mbala,,Northern
+MMU,America/New_York,Morristown Municipal Airport,MMU,US,POINT (-74.42250940675584 40.79980845),167,,KMMU,Florham Park,Morris County,New Jersey
+MMX,Europe/Stockholm,Malmo Airport,MMA,SE,POINT (13.369715681029767 55.5361868),223,http://www.swedavia.com/malmo/,ESMS,Genarp,Lunds Kommun,Skane
+DSC,Africa/Douala,Dschang,DSC,CM,POINT (10.091667 5.833333),4878,,FKKS,Bali,,North-West Province
+LSA,Pacific/Port_Moresby,Losuia,LSA,PG,POINT (151.025 -8.363889),0,,AYKA,,,
+RBV,Pacific/Guadalcanal,Ramata,RBV,SB,POINT (157.6421833925485 -8.1679082),72,,AGRM,,,
+PEN,Asia/Kuala_Lumpur,Penang International Airport,PEN,MY,POINT (100.27478564926506 5.296731899999999),39,,WMKP,Kampung Sungai Ara,,Penang
+BSK,Africa/Algiers,Biskra Airport,BSK,DZ,POINT (5.734029338102971 34.7931774),226,,DAUB,Biskra,,Biskra
+MCZ,America/Maceio,Maceio-Zumbi dos Palmares International Airport,MCZ,BR,POINT (-35.800446 -9.512521),321,,SBMO,Satuba,Satuba,Alagoas
+EBW,Africa/Douala,Ebolowa,EBW,CM,POINT (11.166667 2.916667),2014,,FKKW,Ebolowa,,South Province
+CCU,Asia/Kolkata,Netaji Subhas Chandra Bose Airport,CCU,IN,POINT (88.43931 22.64531),49,,VECC,Dam Dam,North 24 Parganas,West Bengal
+MDB,America/Belize,Melinda,MDB,BZ,POINT (-88.32056 16.998611),104,,"",Dangriga,Dangriga,Stann Creek
+CCY,America/Chicago,Municipal,CCY,US,POINT (-92.683334 43.066666),1023,,KCCY,Charles City,Floyd County,Iowa
+AOD,Africa/Ndjamena,Abou Deia,AOD,TD,POINT (19.2874812 11.4637088),1578,,"",,,
+AZR,Africa/Algiers,Adrar Airport,AZR,DZ,POINT (-0.283333 27.883333),853,,DAUA,Adrar,,Adrar
+BPC,Africa/Douala,Bamenda,BPC,CM,POINT (10.15 5.916667),4478,,FKKV,Bamenda,,North-West Province
+BQS,Asia/Yakutsk,Blagoveschensk Airport,BQS,RU,POINT (127.40968452242377 50.4266217),561,,UHBB,Shangmachang,,Heilongjiang Sheng
+BQT,Europe/Minsk,Brest Airport,BQT,BY,POINT (23.895084475831876 52.1088082),419,,UMBB,Zhabinka,,Brest
+BRA,America/Bahia,Barreiras Airport,BRA,BR,POINT (-45.009705353357425 -12.0794806),2440,,SNBR,Barreiras,Barreiras,Bahia
+BRB,America/Fortaleza,Barreirinhas,BRB,BR,POINT (-42.80350775032719 -2.7574806),55,,SSRS,Barreirinha,Barreirinha,Amazonas
+BSB,America/Sao_Paulo,Brasilia International Airport,BSB,BR,POINT (-47.91172169662855 -15.87174755),3471,http://www.infraero.gov.br/usa/aero_prev_home.php?ai=146,SBBR,Brasilia,Brasilia,Federal District
+CDE,America/Panama,Caledonia,CDE,PA,POINT (-77.55 8.333333),351,,ZBCD,Corozal,,Embera
+CDH,America/Chicago,Harrell Field,CDH,US,POINT (-92.833336 33.583332),170,,KCDH,Camden,Ouachita County,Arkansas
+CDK,America/New_York,Lewis,CDK,US,POINT (-83.03333 29.133333),0,,,Inglis,Levy County,Florida
+CDN,America/New_York,Woodward Field,CDN,US,POINT (-80.5654423 34.2836534),272,,KCDN,Camden,Kershaw County,South Carolina
+MDD,America/Chicago,Airpark,MAF,US,POINT (-102.05 32),2759,,KMDD,Midland,Midland County,Texas
+MDF,America/Chicago,Medford,MDF,US,POINT (-90.333336 45.15),1482,http://www.co.taylor.wi.us/departments/a-e/airport/,KMDZ,Medford,Taylor County,Wisconsin
+GBG,America/Chicago,Galesburg,GBG,US,POINT (-90.42724880295705 40.9361974),731,http://www.ci.galesburg.il.us/services/airport/,KGBG,Galesburg,Knox County,Illinois
+IRA,Pacific/Guadalcanal,Kirakira Airport,IRA,SB,POINT (161.83333 -10.5),1266,,AGGK,,,
+MDI,Africa/Lagos,Makurdi,MDI,NG,POINT (8.533333 7.75),209,http://www.faannigeria.org/nigeria-airport.php?airport=23,DNMK,Makurdi,,Benue
+MDJ,America/Los_Angeles,City-county,MDJ,US,POINT (-121.281 44.812305),2007,,KS33,Warm Springs,Jefferson County,Oregon
+PEW,Asia/Karachi,Bacha Khan International Airport,PEW,PK,POINT (71.51575924176217 33.99097355),1145,,OPPS,Peshawar,,Khyber Pakhtunkhwa
+PEY,Australia/Adelaide,Penong,PEY,AU,POINT (133 -31.9167004),39,,YPNG,Ceduna,Ceduna,South Australia
+PEZ,Europe/Moscow,Penza Airport,PEZ,RU,POINT (45.02345501356966 53.110733999999994),580,,UWPP,Zasechnoye,,Penza
+PHL,America/New_York,Philadelphia International Airport,PHL,US,POINT (-75.23521278969667 39.875018),26,http://www.phl.org/,KPHL,Colwyn,Delaware County,Pennsylvania
+PHN,America/Detroit,St Clair County International,PHN,US,POINT (-82.5288611 42.9109722),659,,KPHN,Marysville,Saint Clair County,Michigan
+PKE,Australia/Sydney,Parkes Airport,PKE,AU,POINT (148.2389984 -33.1314011),1003,,YPKS,Parkes,Parkes,New South Wales
+PKZ,Asia/Vientiane,Pakse Airport,PKZ,LA,POINT (105.77960596181103 15.1357812),318,,VLPS,Pakxe,,Champasak
+PLA,America/Bogota,Planadas,PLA,CO,POINT (-75.7 3.3),7516,,,Planadas,,Tolima
+PLF,Africa/Ndjamena,Pala,PLF,TD,POINT (14.927889437653594 9.3852651),1476,,FTTP,Pala,,Mayo-Kebbi Ouest
+PLL,America/Manaus,Ponta Pelada,PLL,BR,POINT (-59.98561283693144 -3.1450556),246,,SBMN,Manaus,Manaus,Amazonas
+CZL,Africa/Algiers,Ain El Bey Airport,CZL,DZ,POINT (6.6184457 36.3051916),2332,,DABC,Constantine,,Constantine
+YRB,America/Resolute,Resolute Bay Airport,YRB,CA,POINT (-94.96858868629138 74.7166791),215,,CYRB,,,
+QBC,America/Vancouver,Bella Coola Airport,QBC,CA,POINT (-126.666664 52.333332),5045,,CYBD,,,
+ACE,Atlantic/Canary,Lanzarote Airport,ACE,ES,POINT (-13.60758816051166 28.94568045),42,http://www.aena.es/en/lanzarote-airport/index.html,GCRR,Tias,Provincia de Las Palmas,Canary Islands
+CDP,Asia/Kolkata,Cuddapah,CDP,IN,POINT (78.78333 14.516667),383,,VOCP,Cuddapah,Cuddapah,Andhra Pradesh
+CDS,America/Chicago,Childress,CDS,US,POINT (-100.21667 37.416668),2506,,KCDS,Meade,Meade County,Kansas
+CDW,America/New_York,Caldwell Wright,CDW,US,POINT (-74.26667 40.833332),495,http://flycdw.com/,KCDW,Caldwell,Essex County,New Jersey
+CEE,Europe/Moscow,Cherepovets Airport,CEE,RU,POINT (38.0206535432642 59.27783665),351,,ULWC,Tonshalovo,,Vologda
+CEF,America/New_York,Westover ARB/Metropolitan,CEF,US,POINT (-72.55383 42.183376),269,,KCEF,North Chicopee,Hampden County,Massachusetts
+CEG,Europe/London,Hawarden Airport,CEG,GB,POINT (-2.9728660097029813 53.1796073),36,,EGNR,Chester,Cheshire West and Chester,England
+CEO,Africa/Luanda,Waco Kungo,CEO,AO,POINT (124.73055 9.308333),0,,FNWK,Mambajao,Province of Camiguin,Northern Mindanao
+CES,Australia/Sydney,Cessnock,CES,AU,POINT (151.35 -32.833332),219,http://www.cessnock.nsw.gov.au/community/business/airport,YCNK,Cessnock,Cessnock,New South Wales
+CET,Europe/Paris,Le Pontreau,CET,FR,POINT (-0.876879652963741 47.0818923),449,,LFOU,Cholet,Departement de Maine-et-Loire,Pays de la Loire
+CEU,America/New_York,Oconee County,CEU,US,POINT (-82.833336 34.683334),731,http://www.oconeesc.com/Departments/AJ/Airport.aspx,KCEU,Clemson,Pickens County,South Carolina
+CEV,America/Indiana/Indianapolis,Mettle Field,CEV,US,POINT (-85.13333 39.65),849,http://connersvillecommunity.com/City_of_Connersville/City_Departments/Airport_Mettel_Field,KCEV,Connersville,Fayette County,Indiana
+MIQ,America/Chicago,Simón Bolívar International,OMA,US,POINT (-95.89445 41.301945),1013,,,,,
+MDX,America/Argentina/Cordoba,Mercedes,MDX,AR,POINT (-58.075558 -29.167221),252,,SATM,Mercedes,,Corrientes
+MED,Asia/Riyadh,Prince Mohammad Bin Abdulaziz International Airport,MED,SA,POINT (39.698967 24.544369),2060,http://www.tibahairports.com/en-EN/Pages/Main.aspx,OEMA,Medina,,Al Madinah al Munawwarah
+PLM,Asia/Jakarta,Sultan Mahmud Badaruddin II Airport,PLM,ID,POINT (104.69968128139328 -2.8966306),32,,WIPP,Talangbetutu,,South Sumatra
+PLN,America/Detroit,Emmet County Airport,PLN,US,POINT (-84.79695030499335 45.56926645),698,,KPLN,Indian River,Cheboygan County,Michigan
+PLO,Australia/Adelaide,Port Lincoln Airport,PLO,AU,POINT (135.87753818162878 -34.60618625),9,,YPLC,Port Lincoln,Port Lincoln,South Australia
+PLS,America/Grand_Turk,Providenciales International Airport,PLS,TC,POINT (-72.2688841868252 21.77415335),16,,MBPV,Abraham's Bay,,Mayaguana
+PLW,Asia/Makassar,Mutiara Airport,PLW,ID,POINT (119.90866988348841 -0.9177448),305,,WAML,Palu,,Central Sulawesi
+PLZ,Africa/Johannesburg,Port Elizabeth International Airport,PLZ,ZA,POINT (25.61250857777766 -33.9897894),196,http://www.acsa.co.za/home.asp?pid=236,FAPE,Port Elizabeth,Nelson Mandela Bay Metropolitan Municipality,Eastern Cape
+PMC,America/Santiago,El Tepual Airport,PMC,CL,POINT (-73.09450467694802 -41.443561700000004),305,,SCTE,Puerto Montt,Provincia de Llanquihue,Los Lagos
+PMI,Europe/Madrid,Palma de Mallorca Airport,PMI,ES,POINT (2.729030991511172 39.553224549999996),19,http://www.aena.es/csee/Satellite?cid=1046276292735&pagename=subHome&Language=EN_GB&SiteName=PMI&c=Page,LEPA,s'Arenal,Illes Balears,Balearic Islands
+PNH,Asia/Phnom_Penh,Phnom Penh International Airport,PNH,KH,POINT (104.84811156075017 11.5470571),39,http://www.cambodia-airports.com/phnompenh/en/,VDPP,Phnom Penh,,Phnom Penh
+PNI,Pacific/Pohnpei,Pohnpei Airport,PNI,FM,POINT (158.20381948562675 6.9836798),59,,PTPN,Kolonia Town,Kolonia Municipality,Pohnpei
+BSQ,America/Phoenix,Bisbee Municipal Airport,BSQ,US,POINT (-109.883128 31.3639903),4737,http://www.discoverbisbee.com/about_air.htm,P04,Naco,Cochise County,Arizona
+DHO,America/Vancouver,Horn River,DHO,CA,POINT (-122.2553 59.4593),2299,,,,,
+KEA,Asia/Jayapura,Keisah Airport,KEA,ID,POINT (140.5 -7.6667),141,,,,,
+AMF,Pacific/Port_Moresby,Ama,AMF,PG,POINT (141.66667 -4.166667),157,,AYAA,,,
+SVY,Pacific/Guadalcanal,Savo,SVY,SB,POINT (159.8 -9.133333),1354,,,,,
+VAO,Pacific/Guadalcanal,Suavanao Airstrip,VAO,SB,POINT (158.66667 -7.566667),0,,AGGV,,,
+YAU,America/Montreal,Kattiniq/donaldson,YAU,CA,POINT (-73.30730480609404 61.66341865),1896,,CTP9,,,
+YAD,America/Winnipeg,Moose Lake,YAD,CA,POINT (-105.53333 50.38333),1833,,"",,,
+YAX,America/Winnipeg,Angling Lake Airport,YAX,CA,POINT (-89.565 53.251945),875,,CKB6,,,
+AMR,Pacific/Majuro,Arno,AMR,MH,POINT (171.23334 7.033333),0,,,,,
+BBV,Africa/Abidjan,Hkg,BBV,CI,POINT (-6.95 4.666667),22,,DIGN,,,
+BST,Asia/Kabul,Bost,BST,AF,POINT (64.36796841079754 31.55956085),2552,,OABT,Lashkar Gah,,Helmand
+BSU,Africa/Kinshasa,Basankusu,BSU,CD,POINT (19.788836 1.2254494),1102,,FZEN,Bongandanga,,Equateur
+CEW,America/Chicago,Bob Sikes,CEW,US,POINT (-86.52231696990623 30.7800302),141,http://www.flycew.com/,KCEW,Crestview,Okaloosa County,Florida
+BSM,Asia/Tehran,Bishe-kola,BSM,IR,POINT (52.3555333 36.6556143),-65,,OINJ,Mahmudabad,,Mazandaran
+CEY,America/Chicago,Calloway County,CEY,US,POINT (-88.316666 36.61667),501,http://www.murraykyleoakley.com/,KCEY,Murray,Calloway County,Kentucky
+AAW,Asia/Karachi,Abbottabad,AAW,PK,POINT (73.25 34.2),4061,,OPAB,Abbottabad,,Khyber Pakhtunkhwa
+LYT,Australia/Brisbane,Lady Elliot Island,LYT,AU,POINT (152.71557509408325 -24.11166665),55,,"",Bundaberg,Bundaberg,Queensland
+AHT,America/Adak,Amchitka,AHT,US,POINT (179 51.5),0,,PHKO,Beringovskiy,,Chukotskiy Avtonomnyy Okrug
+BSO,Asia/Manila,Basco Airport,BSO,PH,POINT (121.9807799315435 20.4514501),259,,RPUO,Basco,Province of Batanes,Cagayan Valley
+CFQ,America/Creston,Creston Valley Airport,CFQ,CA,POINT (-116.49834 49.036945),1965,http://www.crestonairport.ca/,CAJ3,Creston,,British Columbia
+CFR,Europe/Paris,Carpiquet Airport,CFR,FR,POINT (-0.459276 49.183437),193,,LFRK,Carpiquet,Departement du Calvados,Lower Normandy
+CFT,America/Phoenix,Morenci,CFT,US,POINT (-109.3 33.05),3667,,KCFT,Clifton,Greenlee County,Arizona
+MEV,America/Los_Angeles,Douglas County,MEV,US,POINT (-119.75 39),4711,http://mindentahoeairport.com/,KMEV,Minden,Douglas County,Nevada
+MEX,America/Mexico_City,Benito Juarez International Airport,MEX,MX,POINT (-99.07278 19.435278),7290,https://www.aicm.com.mx,MMMX,Venustiano Carranza,,Mexico City
+MFC,Africa/Maseru,Mafeteng,MFC,LS,POINT (27.3 -29.75),5419,,FXMF,Mafeteng,,Mafeteng
+GBC,Pacific/Port_Moresby,Gasuke,GBC,PG,POINT (141.7395892708135 -6.10224325),78,,AYGS,,,
+MFD,America/New_York,Lahm Municipal,MFD,US,POINT (-82.51278 40.82),1269,http://www.ci.mansfield.oh.us/index.php/lahm-airport,KMFD,Lincoln Heights,Richland County,Ohio
+POA,America/Sao_Paulo,Salgado Filho International Airport,POA,BR,POINT (-51.16747969953305 -29.995268449999998),22,,SBPA,Porto Alegre,Porto Alegre,Rio Grande do Sul
+POD,Africa/Dakar,Podor,POD,SN,POINT (-14.964960407102684 16.6783347),26,,GOSP,Ndioum,,Saint-Louis
+POG,Africa/Libreville,Port Gentil,POG,GA,POINT (8.75312456524845 -0.7143453),68,,FOOG,Port-Gentil,,Ogooue-Maritime
+POH,America/Chicago,Pocahontas Municipal,POH,US,POINT (-94.6516561 42.745302),1141,,,Pocahontas,Pocahontas County,Iowa
+PPT,Pacific/Tahiti,Tahiti Faa'a Airport,PPT,PF,POINT (-149.6103368761099 -17.55418205),32,,NTAA,Faaa,,Iles du Vent
+PPY,America/Sao_Paulo,Pouso Alegre,PPY,BR,POINT (-45.919592421375825 -22.2890865),2900,,SNZA,Pouso Alegre,Pouso Alegre,Minas Gerais
+PPZ,America/Caracas,Puerto Paez,PPZ,VE,POINT (-67.4474917 6.2202685),206,,SVDZ,Puerto Carreno,,Vichada
+PRY,Africa/Johannesburg,Wonderboom Airport,PRY,ZA,POINT (28.219465478499153 -25.65847035),4061,http://www.wonderboomairport.co.za/,FAWB,Pretoria,City of Tshwane Metropolitan Municipality,Gauteng
+PSA,Europe/Rome,Pisa International Airport,PSA,IT,POINT (10.39552700998277 43.68479365),32,http://www.pisa-airport.com/,LIRP,Pisa,Province of Pisa,Tuscany
+PSC,America/Los_Angeles,Tri-Cities Airport,PSC,US,POINT (-119.11867034136114 46.2626203),396,,KPSC,Pasco,Franklin County,Washington
+GUV,Pacific/Port_Moresby,Mougulu,GUV,PG,POINT (142.42062700877923 -6.2800839),666,,AYML,,,
+YFB,America/Iqaluit,Iqaluit Airport,YFB,CA,POINT (-68.55238356809608 63.757401900000005),110,,CYFB,,,
+HAH,Indian/Comoro,Prince Said Ibrahim Internatonal Airport,YVA,KM,POINT (43.27492 -11.537275),104,,FMCH,,,
+PVD,America/New_York,Theodore Francis Green Memorial State Airport,PVD,US,POINT (-71.42858821974949 41.72243995),72,,KPVD,Warwick,Kent County,Rhode Island
+PVG,Asia/Shanghai,Shanghai Pudong International Airport,SHA,CN,POINT (121.80463662688626 31.141345049999998),62,,ZSPD,Laogang,,Shanghai Shi
+PVH,America/Porto_Velho,Porto Velho International Airport,PVH,BR,POINT (-63.900493918125576 -8.70990265),328,,SBPV,Porto Velho,Porto Velho,Rondonia
+MRM,Pacific/Port_Moresby,Manare,MRM,PG,POINT (147.6 -9.166667),3402,,AYMA,,,
+MNC,Africa/Maputo,Nacala,MNC,MZ,POINT (40.71244175095697 -14.48448355),318,,FQNC,Nacala,,Nampula
+TPI,Pacific/Port_Moresby,Tapini,TPI,PG,POINT (146.98946671156628 -8.35645155),3100,,AYTI,,,
+SBE,Pacific/Port_Moresby,Suabi,SBE,PG,POINT (142.27852281829365 -6.1042883),400,,AYSA,,,
+MND,America/Bogota,Medina,MND,CO,POINT (-73.2790415 4.5158862),1266,,"",Medina,,Cundinamarca
+YBV,America/Winnipeg,Berens River Airport,YBV,CA,POINT (-97.02418005 52.3599899),708,,CYBV,,,
+YBW,America/Vancouver,Springbank,YBW,CA,POINT (-123.23333 48.75),0,,CAB3,,,
+YBB,America/Cambridge_Bay,Kugaaruk,YBB,CA,POINT (-89.85 68.88333),0,,CYBB,,,
+YBF,America/Vancouver,Bamfield,YBF,CA,POINT (-125.11926498126282 48.820617150000004),180,,CAE9,,,
+MPE,America/New_York,Griswold,MPE,US,POINT (-72.6 41.283333),55,,,Madison,New Haven County,Connecticut
+YDB,America/Whitehorse,Burwash Landings,YDB,CA,POINT (-139.01666 61.35),2647,,CYDB,,,
+YER,America/Toronto,Fort Severn,YER,CA,POINT (-87.833336 56.033333),48,,CYER,,,
+YCS,America/Rankin_Inlet,Chesterfield Inlet,YCS,CA,POINT (-90.73376927744059 63.3479211),32,,CYCS,,,
+MPJ,America/Chicago,Petit Jean Park,MPJ,US,POINT (-92.73333 35.15),377,,,Morrilton,Conway County,Arkansas
+MNX,America/Manaus,Manicore,MNX,BR,POINT (-61.27874196726444 -5.81173955),98,,SBMY,Manicore,Manicore,Amazonas
+MOB,America/Chicago,Mobile Regional Airport,MOB,US,POINT (-88.24115749066226 30.69214065),219,http://www.mobairport.com/,KMOB,Tillmans Corner,Mobile County,Alabama
+AAE,Africa/Algiers,Les Salines Airport,AAE,DZ,POINT (7.811857 36.821392),36,,DABB,El Hadjar,,Annaba
+AAI,America/Araguaina,Arraias,AAI,BR,POINT (-46.933334 -12.916667),2490,,SWRA,Campos Belos,Campos Belos,Goias
+AAU,Pacific/Apia,Asau,AAU,WS,POINT (-172.6 -13.458333),0,,NSAU,Asau,,Vaisigano
+AAX,America/Sao_Paulo,Araxa Airport,AAX,BR,POINT (-46.96040575380038 -19.563132000000003),3267,,SBAX,Araxa,Araxa,Minas Gerais
+ABA,Asia/Krasnoyarsk,Abakan Airport,ABA,RU,POINT (91.5 53.716667),807,,UNAA,Podsineye,,Khakasiya
+ABF,Pacific/Tarawa,Abaiang,ABF,KI,POINT (173.30417 1.670833),0,,NGAB,Buota Village,Tarawa,Gilbert Islands
+APE,America/Lima,San Juan Aposento,APE,PE,POINT (-69.083336 -11.933333),866,,SPAO,,,
+BIY,Africa/Johannesburg,Bisho,BIY,ZA,POINT (27.2794557654654 -32.89788125),1876,,FABE,Port Alfred,Cacadu District Municipality,Eastern Cape
+BTJ,Asia/Jakarta,Sultan Iskandar Muda International Airport,BTJ,ID,POINT (95.419083238632 5.529465650000001),62,,WITT,Montasik,,Aceh
+BTR,America/Chicago,Baton Rouge Metropolitan Airport,BTR,US,POINT (-91.15037753510408 30.5319743),82,,KBTR,Brownsfield,East Baton Rouge Parish,Louisiana
+BTV,America/New_York,Burlington International Airport,BTV,US,POINT (-73.15146310750751 44.472896500000004),305,http://www.vermontairports.com/btv.html,KBTV,South Burlington,Chittenden County,Vermont
+CFV,America/Chicago,Municipal,CFV,US,POINT (-95.61667 37.033333),741,http://www.coffeyville.com/index.aspx?nid=67,KCFV,Coffeyville,Montgomery County,Kansas
+CGB,America/Cuiaba,Marechal Rondon International Airport,CGB,BR,POINT (-56.120266 -15.651725),629,http://www.infraero.gov.br/index.php/aeroportos/mato-grosso/aeroporto-internacional-marechal-rondon,SBCY,Varzea Grande,Varzea Grande,Mato Grosso
+CGE,America/New_York,Cambridge,CGE,US,POINT (-76.083336 38.566666),45,http://docogonet.com/index.php?page=airport_division,KCGE,Cambridge,Dorchester County,Maryland
+MOC,America/Sao_Paulo,Montes Claros Airport,MOC,BR,POINT (-43.82008294490494 -16.70518095),2139,,SBMK,Montes Claros,Montes Claros,Minas Gerais
+MOE,Asia/Rangoon,Momeik,MOE,MM,POINT (96.64512835000001 23.092467749999997),636,,VYMO,Mogok,,Mandalay
+MPQ,Asia/Amman,Maan,MPQ,JO,POINT (35.766666 30.166668),3503,,,Ma'an,,Ma'an
+MPR,America/Chicago,Mcpherson,MPR,US,POINT (-97.763306 38.37436),1492,,,McPherson,McPherson County,Kansas
+MPS,America/Chicago,Mount Pleasant,MPS,US,POINT (-94.98333 33.166668),475,,,Mount Pleasant,Titus County,Texas
+YLM,America/Whitehorse,Clinton Creek,YLM,CA,POINT (-140.55 64.4),2040,,"",,,
+YKE,America/Winnipeg,Knee Lake,YKE,CA,POINT (-94.666664 53.05),625,,CJT3,,,
+YGK,America/Toronto,Kingston/Norman Rogers Airport,YGK,CA,POINT (-76.59772452101123 44.22465785),305,http://www.cityofkingston.ca/residents/transportation/airport/index.asp,CYGK,,,
+MPT,Asia/Dili,Maliana,MPT,TL,POINT (125.25 -8.066667),0,,WPMN,Akubala,,East Nusa Tenggara
+WAQ,Indian/Antananarivo,Antsalova,WAQ,MG,POINT (44.6160405 -18.6994859),524,,FMMG,,,
+MOL,Europe/Oslo,Molde Airport Aro,MOL,NO,POINT (7.263788878244842 62.74544625),13,https://avinor.no/en/airport/molde-airport/,ENML,Molde,Molde,More og Romsdal
+YHD,America/Winnipeg,Dryden Regional Airport,YHD,CA,POINT (-92.833336 49.783333),1354,,CYHD,,,
+YIK,America/Montreal,Ivujivik,YIK,CA,POINT (-76.083336 62.416668),126,,CYIK,,,
+DJN,America/Anchorage,Delta Junction,DJN,US,POINT (-145.7171901 64.0488787),1122,,D66,,,
+EFO,America/Nome,East Fork Airport,EFO,US,POINT (-164.276388 64.69277777),147,,,,,
+MOQ,Indian/Antananarivo,Morondava Airport,MOQ,MG,POINT (44.3168582 -20.287079),36,,FMMV,Morondava,,Menabe
+MOT,America/Chicago,Minot International Airport,MOT,US,POINT (-101.27700504346882 48.25794645),1679,,KMOT,Minot,Ward County,North Dakota
+MOV,Australia/Brisbane,Moranbah Airport,MOV,AU,POINT (148.0749468736064 -22.061643699999998),751,,YMRB,Moranbah,Isaac,Queensland
+MPH,Asia/Manila,Boracay Airport,MPH,PH,POINT (121.95266939156987 11.92508925),26,,RPVE,Caticlan,Province of Aklan,Western Visayas
+MPK,Asia/Seoul,Mokpo,MPK,KR,POINT (126.38050579713945 34.75862305),26,,,Moppo,,Jeollanam-do
+ACJ,Asia/Colombo,Anuradhapura,ACJ,LK,POINT (80.38333 8.35),265,,VCCA,Anuradhapura,,North Central
+ACM,America/Bogota,Arica,ACM,CO,POINT (-71.833336 -2),557,,"",Pebas,Mariscal Ramon Castilla,Loreto
+ACU,America/Panama,Achutupo,ACU,PA,POINT (-79.72444 9.576389),0,,"",Portobelo,Distrito Portobelo,Colon
+ADA,Europe/Istanbul,Adana Airport,ADA,TR,POINT (35.29736 36.98503),45,,LTAF,Seyhan,,Adana
+ADE,Asia/Aden,International,ADE,YE,POINT (45.037537 12.826116),32,,OYAA,Khawr Maksar,Khur Maksar,Aden
+ADF,Europe/Istanbul,Adiyaman Airport,ADF,TR,POINT (38.266666 37.75),2083,,LTCP,Adiyaman,,Adiyaman
+ADN,America/Bogota,Andes,ADN,CO,POINT (-75.933334 5.666667),6056,,SKAN,Los Andes,,Antioquia
+ADR,America/New_York,Andrews,ADR,US,POINT (-79.566666 33.45),42,,KPHH,Andrews,Williamsburg County,South Carolina
+ADZ,America/Bogota,Gustavo Rojas Pinilla Airport,ADZ,CO,POINT (-81.70221 12.586047),39,,SKSP,San Andres,,"Archipielago de San Andres, Providencia y Santa Catalina"
+BWC,America/Los_Angeles,Brawley,BWC,US,POINT (-115.51392903678291 32.990829649999995),-144,,KBWC,Brawley,Imperial County,California
+BWD,America/Chicago,Brownwood,BWD,US,POINT (-98.956078 31.7932137),1377,,KBWD,Early,Brown County,Texas
+BWN,Asia/Brunei,Brunei International Airport,BWN,BN,POINT (114.92908228171993 4.9423855),75,,WBSB,Bandar Seri Begawan,,Brunei and Muara
+BWO,Europe/Volgograd,Balakovo,BWO,RU,POINT (47.74207317528571 51.8557388),95,,UWSB,Balakovo,,Saratov
+CGG,Asia/Manila,Casiguran,CGG,PH,POINT (122.01667 16.083332),108,,"",Dinalongan,Province of Aurora,Central Luzon
+CGH,America/Sao_Paulo,Sao Paulo/Congonhas Airport,SAO,BR,POINT (-46.659557 -23.626902),2627,http://www.infraero.gov.br/usa/aero_prev_home.php?ai=219,SBSP,Diadema,Diadema,Sao Paulo
+CGJ,Africa/Lusaka,Chingola,CGJ,ZM,POINT (27.883333 -12.516667),4324,,FLKE,Chingola,,Copperbelt
+MPL,Europe/Paris,Montpellier Mediterranee Airport,MPL,FR,POINT (3.9593453999962533 43.578799000000004),22,,LFMT,Perols,Departement de l'Herault,Languedoc-Roussillon
+MPO,America/New_York,Mt Pocono,MPO,US,POINT (-75.3797027 41.1382659),1889,https://www.mpoairport.com/,KMPO,Mount Pocono,Monroe County,Pennsylvania
+MQK,America/La_Paz,San Matias,MQK,BO,POINT (-58.4019012 -16.3391991),419,,SLTI,San Matias,,Santa Cruz
+MQY,America/Chicago,Smyrna,MQY,US,POINT (-86.51668739599751 36.00935425),501,http://www.smyrnaairport.com/,KMQY,Smyrna,Rutherford County,Tennessee
+MRI,America/Anchorage,Merrill Field,ANC,US,POINT (-149.8441957 61.2133214),134,,PAMR,Anchorage,Anchorage Municipality,Alaska
+BQE,Africa/Bissau,Bubaque,BQE,GW,POINT (-15.839109525429235 11.3033822),59,,GGBU,Bubaque,,Bolama and Bijagos
+MFZ,Pacific/Port_Moresby,Mesalia,MFZ,PG,POINT (149.11667 -6.133333),49,,AYES,,,
+BSV,Indian/Antananarivo,Besakoa,BSV,MG,POINT (47.06196244444436 -15.672487),22,,"",Marovoay,,Boeny
+BWT,Australia/Hobart,Burnie Wynyard Airport,BWT,AU,POINT (145.73587661421897 -40.998705599999994),22,,YWYY,Wynyard,Waratah/Wynyard,Tasmania
+YLC,America/Iqaluit,Kimmirut,YLC,CA,POINT (-69.87541408078025 62.84737215),175,,CYLC,,,
+YPO,America/Toronto,Peawanuck,YPO,CA,POINT (-85.44585341456714 54.9892371),173,,CYPO,,,
+PXU,Asia/Ho_Chi_Minh,Pleiku Airport,PXU,VN,POINT (108.0135475589313 14.004424),2411,,VVPK,Pleiku,,Gia Lai
+BXN,Europe/Istanbul,Imsik,BJV,TR,POINT (27.667597900455963 37.13926395),131,,LTBV,Karaova,,Mugla
+YWL,America/Vancouver,Williams Lake Airport,YWL,CA,POINT (-122.054 52.1831017),3085,,CYWL,,,
+YPI,America/Vancouver,Port Simpson,YPI,CA,POINT (-130.33333 54.5),0,,CAN8,,,
+QUO,Africa/Lagos,Akwa Ibom Airport,QUO,NG,POINT (8.097530913373072 4.8756716),170,http://www.ibomairport.com.ng/,DNAI,Esuk Oron,,Akwa Ibom
+MQV,Africa/Algiers,Mostaganem,MQV,DZ,POINT (0.083333 35.9),433,,DA14,Mostaganem,,Mostaganem
+CAD,America/Detroit,Cadillac,CAD,US,POINT (-85.42711008299115 44.27409395),1305,,KCAD,Cadillac,Wexford County,Michigan
+YOJ,America/Edmonton,Footner Lake Airport,YOJ,CA,POINT (-117.168335 58.618332),1110,,CYOJ,,,
+MQW,America/New_York,Telfair-Wheeler,MQW,US,POINT (-83.000275 32.20778),331,,,Helena,Telfair County,Georgia
+CAG,Europe/Rome,Cagliari Elmas Airport,CAG,IT,POINT (9.057312580961453 39.250583),22,http://www.cagliariairport.it/en/,LIEE,Elmas,Provincia di Cagliari,Sardinia
+MQX,Africa/Addis_Ababa,Makale Airport,MQX,ET,POINT (39.52639 13.468333),7339,,HAMK,Mekele,,Tigray
+YQN,America/Toronto,Nakina,YQN,CA,POINT (-86.6919727439909 50.183809350000004),1057,,CYQN,,,
+MQZ,Australia/Perth,Margaret River,MQZ,AU,POINT (115.1 -33.933334),367,,YMGT,Margaret River,Augusta-Margaret River Shire,Western Australia
+MRA,Africa/Tripoli,Misurata Airport,MRA,LY,POINT (15.066667 32.4),42,,HLMS,Misratah,,Misratah
+CAH,Asia/Ho_Chi_Minh,Kamau ,CAH,VN,POINT (105.17466738944145 9.176891600000001),39,,VVCM,Ca Mau,,Ca Mau
+CBR,Australia/Canberra,Canberra Airport,CBR,AU,POINT (149.19180056325803 -35.302878750000005),1807,,YSCB,Forrest,,Australian Capital Territory
+CBT,Africa/Luanda,Catumbela Airport,CBT,AO,POINT (13.493883647703775 -12.481364),59,,FNCT,Catumbela,,Benguela
+CGQ,Asia/Shanghai,Changchun Longjia International Airport,CGQ,CN,POINT (125.217545 43.902836),748,,ZYCC,Changchun,Changchun Shi,Jilin Sheng
+CGR,America/Campo_Grande,Campo Grande International Airport,CGR,BR,POINT (-54.68224625125994 -20.471576849999998),1788,,SBCG,Campo Grande,Campo Grande,Mato Grosso do Sul
+AEP,America/Argentina/Buenos_Aires,Jorge Newbery Airport,BUE,AR,POINT (-58.41667 -34.55622),42,,SABE,Colegiales,,Buenos Aires F.D.
+AFA,America/Argentina/Mendoza,San Rafael Airport,AFA,AR,POINT (-68.40056 -34.58917),2454,,SAMR,San Rafael,,Mendoza
+AFI,America/Bogota,Amalfi,AFI,CO,POINT (-75.0467996 6.8953157),4855,,SKAM,Amalfi,,Antioquia
+AFY,Europe/Istanbul,Afyon,AFY,TR,POINT (30.6 38.733334),3316,,LTAH,Afyonkarahisar,,Afyonkarahisar
+AGB,Europe/Berlin,Augsburg Airport,MUC,DE,POINT (10.931667 48.425278),1492,https://www.augsburg-airport.de/,EDMA,Rehling,Swabia,Bavaria
+AGE,Europe/Berlin,Flugplatz,AGE,DE,POINT (7.916667 53.783333),22,,EDWG,Wangerooge,,Lower Saxony
+AGF,Europe/Paris,La Garenne Airport,AGF,FR,POINT (0.598611 44.17361),167,,LFBA,Le Passage,Departement du Lot-et-Garonne,Aquitaine
+AGI,America/Paramaribo,Wageningen,AGI,SR,POINT (-56.833332 5.833333),19,,SMWA,Wageningen,,Nickerie
+AGT,America/Asuncion,Alejo Garcia Airport,AGT,PY,POINT (-54.833332 -25.5),810,,SGES,Colonia Yguazu,,Alto Parana
+AGU,America/Mexico_City,Aguascalients International Airport,AGU,MX,POINT (-102.31374 21.701416),6118,https://www.aeropuertosgap.com.mx/es/aguascalientes.html,MMAS,Penuelas (El Cienegal),Aguascalientes,Aguascalientes
+APP,Pacific/Port_Moresby,Asapa,APP,PG,POINT (148.1030075389151 -8.97966935),1876,,"",,,
+CGU,America/Caracas,Ciudad Guayana,CGU,VE,POINT (-62.761154416306944 8.287798800000001),413,,,,,
+CGV,Australia/Eucla,Caiguna,CGV,AU,POINT (125.4875656 -32.2720286),308,,YCAG,Esperance,Esperance Shire,Western Australia
+CGY,Asia/Manila,Laguindingan International Airport,CGY,PH,POINT (124.61157 8.407744),626,http://laguindinganinternationalairport.com/,RPMY,Lumbia,Chartered City of Cagayan de Oro,Northern Mindanao
+MRC,America/Chicago,Maury County,MRC,US,POINT (-87.03333 35.61667),643,http://www.maurywebpages.com/airport.htm,KMRC,Columbia,Maury County,Tennessee
+MRD,America/Caracas,A Carnevalli,MRD,VE,POINT (-71.157776 8.583333),4957,,SVMD,Merida,Municipio Libertador,Merida
+MRF,America/Chicago,Municipal,MRF,US,POINT (-104.01667 30.3),4629,,KMRF,Marfa,Presidio County,Texas
+CBW,America/Sao_Paulo,Campo Mourao,CBW,BR,POINT (-52.35696610253834 -24.009449),1784,,SSKM,Campo Mourao,Campo Mourao,Parana
+MWY,Australia/Brisbane,Miranda Downs,MWY,AU,POINT (141.51666 -25.783333),423,,YMIR,,,
+YQT,America/Thunder_Bay,Thunder Bay International Airport,YQT,CA,POINT (-89.32725832169425 48.37209765),653,,CYQT,,,
+RFS,America/Managua,Rosita,RFS,NI,POINT (-84.40899611494456 13.8904838),124,,MNRT,Bonanza,,Atlantico Norte (RAAN)
+CCB,America/Los_Angeles,Cable Airport,CCB,US,POINT (-117.6853957695332 34.11242505),1414,,KCCB,Claremont,Los Angeles County,California
+RGK,Asia/Novokuznetsk,Gorno-Altaysk Airport,RGK,RU,POINT (85.83540755427552 51.96654205),980,,UNBG,Aya,,Altai Krai
+CCG,America/Chicago,Crane County Airport,CCG,US,POINT (-102.35929573280173 31.41140455),2552,,E13,Crane,Crane County,Texas
+CCJ,Asia/Kolkata,Calicut International Airport,CCJ,IN,POINT (75.95411010175508 11.1363042),324,,VOCL,Ferokh,Kozhikode,Kerala
+MWG,Pacific/Port_Moresby,Marawaka,MWG,PG,POINT (146.13333 -6.133333),1394,,AYMW,,,
+MXH,Pacific/Port_Moresby,Moro Airport,MXH,PG,POINT (143.232815954623 -6.36246295),2709,,AYMR,,,
+AHM,America/Los_Angeles,Sumner Parker Field,AHM,US,POINT (-122.6610031 42.19029999),1827,,KS03,Ashland,Jackson County,Oregon
+CDY,Asia/Manila,Cagayan De Sulu,CDY,PH,POINT (118.49520704033101 7.0142323),134,,RPMU,Cagayan,Province of Palawan,Mimaropa
+MRJ,America/Tegucigalpa,Marcala,MRJ,HN,POINT (-88.03333 14.163611),4078,,MHMA,Marcala,,La Paz
+KMR,Pacific/Port_Moresby,Karimui,KMR,PG,POINT (144.8249655180827 -6.4929206),3640,,AYRI,,,
+CEB,Asia/Manila,Mactan-Cebu International Airport,CEB,PH,POINT (123.97927764356774 10.310328),29,http://www.mactan-cebuairport.com.ph/,RPVM,Buagsong,Lapu-Lapu City,Central Visayas
+CEC,America/Los_Angeles,Del Norte County Regional Airport,CEC,US,POINT (-124.23807108485695 41.7814506),36,,KCEC,Crescent City,Del Norte County,California
+CEI,Asia/Bangkok,Chiang Rai International Airport,CEI,TH,POINT (99.87945678537508 19.9480922),1368,,VTCT,Chiang Rai,,Chiang Rai
+LMG,Pacific/Port_Moresby,Lamassa,LMG,PG,POINT (152.75 -4.7),0,,,,,
+CGZ,America/Phoenix,Municipal,CGZ,US,POINT (-111.75 32.88333),1391,http://www.casagrandeaz.gov/web/guest/airport,KCGZ,Casa Grande,Pinal County,Arizona
+CHH,America/Lima,Chachapoyas,CHH,PE,POINT (-77.85583641070252 -6.2021601),8356,,SPPY,Chachapoyas,Provincia de Chachapoyas,Amazonas
+CHJ,Africa/Harare,Chipinge,CHJ,ZW,POINT (32.6261647 -20.2042729),3690,,FVCH,Chipinge,,Manicaland
+CHK,America/Chicago,Municipal,CHK,US,POINT (-97.96667 35.05),1108,http://www.chickasha.org/airport/,KCHK,Chickasha,Grady County,Oklahoma
+AHS,America/Tegucigalpa,Ahuas,AHS,HN,POINT (-84.4160995 15.4819002),32,,MHAH,Wawina,,Gracias a Dios
+AIF,America/Sao_Paulo,Assis,AIF,BR,POINT (-50.416668 -22.666668),1804,,SNAX,Assis,Assis,Sao Paulo
+MRK,America/New_York,Marco Island,MRK,US,POINT (-81.72389 25.944445),36,http://www.colliergov.net/index.aspx?page=21,KMKY,Marco,Collier County,Florida
+AIL,America/Panama,Ailigandi,AIL,PA,POINT (-78.083336 9.25),55,,"",Ailigandi,,Guna Yala
+AIS,Pacific/Tarawa,Arorae Island,AIS,KI,POINT (176.83333 -2.65),45,,NGTR,Kulia Village,,Niutao
+MRL,Australia/Brisbane,Miners Lake,MRL,AU,POINT (145.58333 -20.066668),1368,,,Charters Towers,Charters Towers,Queensland
+AJA,Europe/Paris,Ajaccio Napoleon Bonaparte Airport,AJA,FR,POINT (8.794013 41.91987),42,,LFKJ,Ajaccio,Departement de la Corse-du-Sud,Corsica
+AJF,Asia/Riyadh,Jouf Airport,AJF,SA,POINT (40.101486 29.788668),2208,,OESK,Sakaka,,Al Jawf
+AJI,Europe/Istanbul,Agri Airport,AJI,TR,POINT (43.025 39.65),5406,,LTCO,Hamur,,Agri
+AJK,Asia/Tehran,Araak,AJK,IR,POINT (49.833332 34.13333),5429,,OIHR,Arak,,Markazi
+AJS,America/Mazatlan,Abreojos,AJS,MX,POINT (-113.666664 26.833332),226,,"",Bahia Asuncion,Mulege,Baja California Sur
+AKA,Asia/Chongqing,Ankang,AKA,CN,POINT (108.93115049592605 32.7081),833,,ZLAK,Ankang,,Shaanxi
+AKD,Asia/Kolkata,Akola,AKD,IN,POINT (77.06134451392703 20.697417),994,,VAAK,Akola,Akola,Maharashtra
+DRC,Africa/Luanda,Dirico,DRC,AO,POINT (20.7 -17.833332),3589,,"",,,
+HVA,Indian/Antananarivo,Analalava,HVA,MG,POINT (47.7577163 -14.6292429),180,,FMNL,,,
+IAM,Africa/Algiers,In Amenas Airport,IAM,DZ,POINT (9.644012211467604 28.05539045),1850,,DAUZ,,,
+MRN,America/New_York,Lenoir,MRN,US,POINT (-81.683334 35.75),1151,https://foothillsairport.com/,KMRN,Morganton,Burke County,North Carolina
+MRR,America/Guayaquil,Macara,MRR,EC,POINT (-79.933334 -4.383333),1374,,SEMA,Macara,,Loja
+MSR,Europe/Istanbul,Mus Airport,MSR,TR,POINT (41.625 38.725),4143,,LTCK,Haskoy,,Mus
+RGN,Asia/Rangoon,Yangon International Airport,RGN,MM,POINT (96.13661261066854 16.91201185),124,http://www.yangonairportonline.com,VYYY,Yangon,,Yangon
+KPA,Pacific/Port_Moresby,Kopiago,KPA,PG,POINT (142.55 -5.383333),4445,,AYKG,,,
+AGH,Europe/Stockholm,Angelholm Helsingborg Airport,AGH,SE,POINT (12.852846835898422 56.297234599999996),36,http://www.lfv.se/templates/LFV_AirportStartPage____4777.aspx,ESTA,,,
+MSS,America/New_York,Richards Field,MSS,US,POINT (-74.846664 44.93778),206,http://www.massenaworks.com/town/airport.asp,KMSS,Massena,St. Lawrence County,New York
+AKR,Africa/Lagos,Akure,AKR,NG,POINT (5.083333 7.25),958,http://www.faannigeria.org/nigeria-airport.php?airport=21,DNAK,Owena,,Ondo
+MSU,Africa/Maseru,Moshoeshoe International Airport,MSU,LS,POINT (27.505556 -29.30139),5029,,FXMM,Maseru,,Maseru
+JRA,America/New_York,West 30th St Heliport,NYC,US,POINT (-74.00674338577971 40.755284950000004),0,,,,,
+IDB,Europe/Stockholm,Idre,IDB,SE,POINT (12.6894444 61.8697222),1427,,ESUE,,,
+CGI,America/Chicago,Cape Girardeau Airport,CGI,US,POINT (-89.56800317845975 37.224715849999995),351,,KCGI,Scott City,Scott County,Missouri
+CGK,Asia/Jakarta,Soekarno-Hatta International Airport,JKT,ID,POINT (106.65658968644006 -6.12389155),29,http://www.jakartasoekarnohattaairport.com/,WIII,Teluknaga,,West Java
+MSW,Africa/Asmara,Massawa International,MSW,ER,POINT (39.441113 15.603333),26,,HHMS,Massawa,,Northern Red Sea Region
+CGP,Asia/Dhaka,Shah Amanat International Airport,CGP,BD,POINT (91.81968167066351 22.2536779),32,,VGEG,Chittagong,,Chittagong
+CHA,America/New_York,Chattanooga Airport,CHA,US,POINT (-85.20167788785842 35.032383550000006),675,http://www.chattairport.com,KCHA,East Ridge,Hamilton County,Tennessee
+CHL,America/Boise,Challis,CHL,US,POINT (-114.21713945203771 44.5240137),4816,http://itd.idaho.gov/aero/Facility%20Directory/launchAirportData.asp?value=LLJ,KLLJ,Challis,Custer County,Idaho
+CHR,Europe/Paris,Chateauroux,CHR,FR,POINT (1.7 46.816666),482,,LFLX,Chateauroux,Departement de l'Indre,Centre
+CHS,America/New_York,Charleston International Airport,CHS,US,POINT (-80.03946503050427 32.89929845),42,,KCHS,Hanahan,Berkeley County,South Carolina
+CHV,Europe/Lisbon,Chaves,CHV,PT,POINT (-7.466667 41.733334),1151,,LPCH,Chaves,Chaves,Vila Real
+CHX,America/Panama,Changuinola,CHX,PA,POINT (-82.45 9.45),0,,MPCH,Changuinola,Distrito de Changuinola,Bocas del Toro
+CIA,Europe/Rome,Ciampino-G. B. Pastine International Airport,ROM,IT,POINT (12.590987 41.799065),370,,LIRA,Ciampino,Citta metropolitana di Roma Capitale,Latium
+CID,America/Chicago,The Eastern Iowa Airport,CID,US,POINT (-91.7003 41.889423),898,,KCID,Fairfax,Linn County,Iowa
+CIE,Australia/Perth,Collie,CIE,AU,POINT (116.13333 -33.36667),666,,YCOI,Collie,Collie,Western Australia
+CII,Europe/Istanbul,Cildir,CII,TR,POINT (-112.312225 47.90278),4097,,LTBD,Choteau,Teton County,Montana
+CIJ,America/La_Paz,E. Beltram Airport,CIJ,BO,POINT (-68.75278 -11.026389),603,,SLCO,Brasileia,Brasileia,Acre
+AKU,Asia/Shanghai,Aksu Airport,AKU,CN,POINT (80.291667 41.2625),3812,,ZWAK,,,
+AKX,Asia/Aqtobe,Aktyubinsk Airport,AKX,KZ,POINT (57.211403 50.249336),715,,UATT,Aqtobe,,Aqtoebe
+ALA,Asia/Almaty,Almaty Airport,ALA,KZ,POINT (77.04258378940835 43.355686250000005),2240,,UAAA,Pervomayskiy,,Almaty Oblysy
+ALE,America/Chicago,Alpine,ALE,US,POINT (-103.75 30.416668),5055,http://www.ci.alpine.tx.us/airport.shtml,"",Alpine,Brewster County,Texas
+ALL,Europe/Rome,Albenga,ALL,IT,POINT (8.216667 44.05),59,http://www.rivierairport.it/,LIMG,Albenga,Provincia di Savona,Liguria
+ALP,Asia/Damascus,Nejrab,ALP,SY,POINT (37.227074 36.185352),1272,http://www.aleppo-airport.com/en/,OSAP,Aleppo,,Aleppo
+ALQ,America/Sao_Paulo,Federal,ALQ,BR,POINT (-55.763332 -29.799723),334,,SSLT,Alegrete,Alegrete,Rio Grande do Sul
+AMD,Asia/Kolkata,Ahmedabad Airport,AMD,IN,POINT (72.6305442 23.0855562),209,,VAAH,Naroda,Ahmadabad,Gujarat
+AMJ,America/Sao_Paulo,Almenara,AMJ,BR,POINT (-40.683334 -16.183332),593,,SNAR,Almenara,Almenara,Minas Gerais
+AML,America/Panama,Puerto Armuellas,AML,PA,POINT (-82.86667 8.266667),55,,"",Puerto Armuelles,,Chiriqui
+AMS,Europe/Amsterdam,Amsterdam Airport Schiphol,AMS,NL,POINT (4.741505200022974 52.32697895),36,http://www.schiphol.nl/,EHAM,Aalsmeer,Gemeente Aalsmeer,North Holland
+AOS,America/Anchorage,Amook,AOS,US,POINT (-153.8166725 57.4705133),9,,AK81,,,
+JAV,America/Godthab,Ilulissat Airport,JAV,GL,POINT (-51.056119024204875 69.24366964999999),49,,BGJN,,,
+MSZ,Africa/Luanda,Yuri Gagarin Airport,MSZ,AO,POINT (12.160833 -15.208611),101,,FNMO,Namibe,,Namibe
+MTA,Pacific/Auckland,Matamata,MTA,NZ,POINT (175.76666 -37.816666),187,,NZMA,Matamata,Matamata-Piako District,Waikato
+PCK,America/Anchorage,Porcupine Creek,PCK,US,POINT (-150.2894811 67.2385084),1095,,,,,
+CHB,Asia/Karachi,Chilas,CHB,PK,POINT (74.0862815 35.4266262),3750,,OPCL,Chilas,,Gilgit-Baltistan
+DCK,America/Anchorage,Dahl Creek Airport,DCK,US,POINT (-156.9057329 66.9441134),219,,DCK,,,
+CHC,Pacific/Auckland,Christchurch International Airport,CHC,NZ,POINT (172.53575429898345 -43.4847958),42,http://www.christchurchairport.co.nz/,NZCH,Prebbleton,Selwyn District,Canterbury
+JON,Pacific/Johnston,Johnston Island,JON,UM,POINT (-169.5326128191757 16.72862225),0,,,,,
+AMZ,Pacific/Auckland,Ardmore,AMZ,NZ,POINT (174.96666 -37.033333),62,http://www.nzar.co.nz/,NZAR,Red Hill,Auckland,Auckland
+EGS,Atlantic/Reykjavik,Egilsstadir Airport,EGS,IS,POINT (-14.40198938402052 65.28288914999999),68,,BIEG,,,
+CHF,Asia/Seoul,Jinhae,CHF,KR,POINT (128.6959991 35.141201),26,,RKPE,Changwon,,Gyeongsangnam-do
+CHG,Asia/Shanghai,Chaoyang Airport,CHG,CN,POINT (120.43414650929849 41.539062),515,,ZYCY,Chaoyang,,Liaoning
+MGX,Africa/Libreville,Moabi,MGX,GA,POINT (11 -2.25),1059,,FOGI,,,
+CIM,America/Bogota,Cimitarra,CIM,CO,POINT (-74.11667 6.483333),410,,SKCM,Puerto Parra,,Santander
+CIN,America/Chicago,Carroll,CIN,US,POINT (-94.86667 42.066666),1266,http://www.cityofcarroll.com/index.php/departments/airport,KCIN,Carroll,Carroll County,Iowa
+CIO,America/Asuncion,MCAL Lopez,CIO,PY,POINT (-57.41833 -23.434444),252,,SGCO,Concepcion,,Concepcion
+CIQ,America/Guatemala,Chiquimula,CIQ,GT,POINT (-89.61667 14.85),2828,,MGCQ,Chiquimula,Municipio de Chiquimula,Chiquimula
+CIR,America/Chicago,Cairo,CIR,US,POINT (-89.183334 37),291,,KCIR,Cairo,Alexander County,Illinois
+CIS,Pacific/Enderbury,Canton Island,CIS,KI,POINT (-171.66667 -2.833333),0,,PCIS,Atafu Village,,Atafu
+KVU,Pacific/Fiji,Korolevu,KVU,FJ,POINT (178 -17.766666),0,,,,,
+AHY,Indian/Antananarivo,Ambatolahy,AHY,MG,POINT (45.5375864 -20.0153265),314,,"",,,
+ANA,America/Los_Angeles,John Wayne International,ANA,US,POINT (-117.933334 33.816666),121,,HKOM,Anaheim,Orange County,California
+ANG,Europe/Paris,Brie-Champniers,ANG,FR,POINT (0.216667 45.733334),396,,LFBU,Champniers,Departement de la Charente,Poitou-Charentes
+ANL,Africa/Luanda,Andulo,ANL,AO,POINT (17.25 -11.25),4675,,"",Camacupa,,Bie
+ANU,America/Antigua,V.C. Bird International Airport,ANU,AG,POINT (-61.79381928408262 17.13578595),42,,TAPA,Parham,,Saint Peter
+AOC,Europe/Berlin,Altenburg Nobitz,AOC,DE,POINT (12.509863258666915 50.98321195),662,http://www.leipzig-altenburg-airport.de/,EDAC,Altenburg,,Thuringia
+AOG,Asia/Shanghai,Anshan Teng'ao Airport,AOG,CN,POINT (123.03333 41.166668),82,,ZYAS,Anshan,Anshan Shi,Liaoning
+ARZ,Africa/Luanda,N'zeto,ARZ,AO,POINT (13.5 -7.5),846,,FNZE,,,
+AUI,Pacific/Port_Moresby,Aua Island,AUI,PG,POINT (143.06447133878473 -1.4610531999999998),16,,AYND,,,
+BMZ,Pacific/Port_Moresby,Bamu,BMZ,PG,POINT (143.24145398170833 -7.846989799999999),26,,AYBF,,,
+CIT,Asia/Almaty,Shymkent Airport,CIT,KZ,POINT (69.6 42.3),1699,,UAII,Shymkent,,Ongtustik Qazaqstan
+CIX,America/Lima,Cornel Ruiz Airport,CIX,PE,POINT (-79.83222 -6.789722),52,,SPHI,Chiclayo,Provincia de Chiclayo,Lambayeque
+CIZ,America/Manaus,Coari,CIZ,BR,POINT (-63.13333 -4.083333),95,,SWKO,Coari,Coari,Amazonas
+CJA,America/Lima,Cajamarca Airport,CJA,PE,POINT (-78.48983644732348 -7.13845645),8828,,SPJR,Cajamarca,Provincia de Cajamarca,Cajamarca
+MTB,America/Bogota,Monte Libano,MTB,CO,POINT (-75.46667 8.066667),213,,SKML,Montelibano,,Cordoba
+MTC,America/Detroit,Selfridge ANGB,MTC,US,POINT (-82.88333 42.583332),623,,KMTC,Mount Clemens,Macomb County,Michigan
+MTE,America/Santarem,Monte Alegre,MTE,BR,POINT (-54.066666 -1.983333),183,,SNMA,Monte Alegre,Monte Alegre,Para
+MTG,America/Cuiaba,Mato Grosso,MTG,BR,POINT (-55 -14),1423,,SWVB,Diamantino,Diamantino,Mato Grosso
+FOU,Africa/Libreville,Fougamou,FOU,GA,POINT (10.783333 -1.2),931,,FOGF,,,
+GEO,America/Guyana,Cheddi Jagan International Airport,GEO,GY,POINT (-58.25592779458964 6.498248800000001),65,http://www.cjairport-gy.com/,SYCJ,Vreed-en-Hoop,,Essequibo Islands-West Demerara
+IGE,Africa/Libreville,Iguela,IGE,GA,POINT (9.316667 -1.916667),22,,FOOI,,,
+BPY,Indian/Antananarivo,Besalampy,BPY,MG,POINT (44.4803872 -16.7452789),108,,FMNQ,,,
+MTI,Atlantic/Cape_Verde,Mosteiros,MTI,CV,POINT (-24.433332 15),1660,,GVMT,Porto dos Mosteiros,,Mosteiros
+MTL,Australia/Sydney,Maitland,MTL,AU,POINT (151.55 -32.733334),36,http://rnac.com.au,YMND,Maitland,Maitland Municipality,New South Wales
+RLK,Asia/Shanghai,Bayannur Tianjitai Airport,RLK,CN,POINT (107.73447335946133 40.928311699999995),3362,,ZBYZ,Xamba,,Inner Mongolia
+NNB,Pacific/Guadalcanal,Santa Ana Airport,NNB,SB,POINT (162.5 -10.833333),0,,AGGT,,,
+WBD,Indian/Antananarivo,Befandriana,WBD,MG,POINT (48.4824574 -15.2074248),839,,FMNF,,,
+RVA,Indian/Antananarivo,Farafangana,RVA,MG,POINT (47.82304523439726 -22.8051728),32,,FMSG,Farafangana,Farafangana District,Atsimo-Atsinanana
+BMD,Indian/Antananarivo,Belo,BMD,MG,POINT (44.05 -20.733334),29,,FMML,,,
+RVC,Africa/Monrovia,Rivercess,RVC,LR,POINT (-9.585146 5.4725436),32,,"",Cestos City,,River Cess
+RVH,Europe/Moscow,Rzhevka,LED,RU,POINT (30.578440285681754 59.9792581),68,http://www.airport-rzhevka.ru/,ULSS,Yanino Vtoroye,,Leningrad
+CJB,Asia/Kolkata,Coimbatore International Airport,CJB,IN,POINT (77.04169829450647 11.0312326),1315,http://www.airportsindia.org.in/allAirports/coimbatore_generalinfo.jsp,VOCB,Irugur,Coimbatore,Tamil Nadu
+CJC,America/Santiago,El Loa Airport,CJC,CL,POINT (-68.90843 -22.495085),7493,,SCCF,Calama,Provincia de El Loa,Antofagasta
+APB,America/La_Paz,Apolo,APB,BO,POINT (-68.51667 -14.716667),5282,,SLAP,Mapiri,,La Paz
+MNT,America/Anchorage,Minto,MNT,US,POINT (-149.17084 64.895),331,,"",,,
+CJD,America/Bogota,Candilejas,CJD,CO,POINT (-74.26667 1.333333),734,,,Cartagena del Chaira,,Caqueta
+KMA,Pacific/Port_Moresby,Kerema,KMA,PG,POINT (145.77134686530968 -7.9632784999999995),10,,AYKM,,,
+MTN,America/New_York,Glenn L Martin,BWI,US,POINT (-76.41167 39.321667),26,,KMTN,Bowleys Quarters,Baltimore County,Maryland
+CJJ,Asia/Seoul,Cheongju Airport,CJJ,KR,POINT (127.49746427479121 36.7155563),180,http://cheongju.airport.co.kr/doc/cheongju_eng/,RKTU,Cheongju-si,,Chungcheongbuk-do
+CJL,Asia/Karachi,Chitral,CJL,PK,POINT (71.80073744568793 35.887766400000004),4875,,OPCH,Chitral,,Khyber Pakhtunkhwa
+CKB,America/New_York,Benedum Airport,CKB,US,POINT (-80.22945 39.295555),1148,,KCKB,Bridgeport,Harrison County,West Virginia
+MVL,America/New_York,Morrisville-Stowe,MVL,US,POINT (-72.61420790118751 44.53400725),669,,KMVL,Morrisville,Lamoille County,Vermont
+CKC,Europe/Kiev,Cherkassy,CKC,UA,POINT (32 49.416668),380,,UKKE,Cherkasy,,Cherkasy
+CKG,Asia/Shanghai,Chongqing Jiangbei International Airport,CKG,CN,POINT (106.64983063307892 29.72606975),1328,,ZUCK,Shuangfengqiao,,Chongqing Shi
+CKH,Asia/Srednekolymsk,Chokurdah Airport,CKH,RU,POINT (147.88333 70.63333),65,,UESO,Chokurdakh,,Sakha
+CKK,America/Chicago,Cherokee,CKK,US,POINT (-91.86667 36.5),853,http://www.cherokeevillage.org/airport.htm,KCVK,Salem,Fulton County,Arkansas
+CKL,Europe/Moscow,Chkalovsky,CKL,RU,POINT (38.052931136955124 55.88121275),469,,UUMU,Bakhchivandzhi,,Moskovskaya
+CKM,America/Chicago,Fletcher Field,CKM,US,POINT (-90.583336 34.2),167,,KCKM,Clarksdale,Coahoma County,Mississippi
+APG,America/New_York,Phillips AAF,APG,US,POINT (-76.166664 39.5),72,,KAPG,Aberdeen,Harford County,Maryland
+APH,America/New_York,Camp A P Hill,APH,US,POINT (-77.35 38.05),173,,KAPH,Bowling Green,Caroline County,Virginia
+MUI,America/New_York,Muir AAF,MUI,US,POINT (-76.59661 40.447582),961,,KMUI,Jonestown,Lebanon County,Pennsylvania
+APO,America/Bogota,Apartado Airport,APO,CO,POINT (-76.71766 7.817678),72,,SKLC,Carepa,,Antioquia
+APQ,America/Maceio,Arapiraca,APQ,BR,POINT (-36.62984998547607 -9.7765662),839,,SNAL,Arapiraca,Arapiraca,Alagoas
+APS,America/Sao_Paulo,Anapolis,APS,BR,POINT (-48.966667 -16.333332),3280,,SWNS,Anapolis,Anapolis,Goias
+APT,America/Chicago,Marion County,APT,US,POINT (-85.5 35.066666),1637,,KAPT,Powells Crossroads,Marion County,Tennessee
+APV,America/Los_Angeles,Apple Valley,APV,US,POINT (-117.212776 34.52639),2910,,KAPV,Apple Valley,San Bernardino County,California
+APX,America/Sao_Paulo,Arapongas,APX,BR,POINT (-51.466667 -23.483334),2309,,SSOG,Apucarana,Apucarana,Parana
+APY,America/Fortaleza,Alto Parnaiba,APY,BR,POINT (-45.933334 -9.133333),941,,SNAI,Morros,Alto Parnaiba,Maranhao
+APZ,America/Argentina/Salta,Zapala,APZ,AR,POINT (-70.083336 -38.916668),3339,,SAHZ,Zapala,Departamento de Zapala,Neuquen
+AQA,America/Sao_Paulo,Araraquara,AQA,BR,POINT (-48.13333 -21.816668),2322,http://www.daesp.sp.gov.br/aeroporto-estadual-de-araraquara-bartolomeu-de-gusmao/,SBAQ,Araraquara,Araraquara,Sao Paulo
+AQB,America/Guatemala,Quiche Airport,AQB,GT,POINT (-91.15 15.01),6620,,MGQC,Santa Cruz del Quiche,,Quiche
+CKN,America/Chicago,Municipal,CKN,US,POINT (-96.61667 47.783333),816,,KCKN,Crookston,Polk County,Minnesota
+CKO,America/Sao_Paulo,Cornelio Procopio,CKO,BR,POINT (-50.666668 -23.116667),1653,,SSCP,Bandeirantes,Bandeirantes,Parana
+CKT,Asia/Tehran,Sarakhs,CKT,IR,POINT (61.05915046369789 36.5062305),905,,OIMC,Sarakhs,,Razavi Khorasan
+TCJ,Pacific/Port_Moresby,Torembi Airport,TCJ,PG,POINT (143.13333 -4.016667),90,,AYVM,,,
+AMO,Africa/Ndjamena,Mao,AMO,TD,POINT (15.316667 14.116667),1049,,FTTU,Mao,,Kanem
+APL,Africa/Maputo,Nampula Airport,APL,MZ,POINT (39.287224 -15.101667),1338,,FQNP,Nampula,,Nampula
+ARB,America/Detroit,Municipal,ARB,US,POINT (-83.75 42.3),905,,KARB,Ann Arbor,Washtenaw County,Michigan
+CKU,America/Anchorage,City,CDV,US,POINT (-145.75 60.55),374,,CKU,,,
+CKW,Australia/Perth,Christmas Creek Mine,CKW,AU,POINT (-108.74722 52.430557),2175,,YCHK,Wilkie,,Saskatchewan
+CKY,Africa/Conakry,Conakry Airport,CKY,GN,POINT (-13.613075755188323 9.576551250000001),91,http://www.aeroport-conakry.com/aeroport_international_de_conakry.php,GUCY,Conakry,,Conakry
+MPM,Africa/Maputo,Maputo International Airport,MPM,MZ,POINT (32.582643793413375 -25.9063936),78,,FQMA,,,
+CKZ,Europe/Istanbul,Canakkale Airport,CKZ,TR,POINT (26.429690386094045 40.13450605),22,,LTBH,Canakkale,,Canakkale
+MUJ,Africa/Addis_Ababa,Mui,MUJ,ET,POINT (35 6.333333),2355,,HAMR,Mizan Teferi,,"Southern Nations, Nationalities, and People's Region"
+SAQ,America/Nassau,San Andros,SAQ,BS,POINT (-78.05411619458161 25.0557121),36,,MYAN,San Andros,,North Andros
+CLD,America/Los_Angeles,McClellan-Palomar Airport,SAN,US,POINT (-117.2814001459839 33.12754605000001),291,,KCRQ,Lake San Marcos,San Diego County,California
+CLG,America/Los_Angeles,Coalinga,CLG,US,POINT (-120.35 36.15),659,,"",Coalinga,Fresno County,California
+CLH,Australia/Sydney,Coolah,CLH,AU,POINT (149.7 -31.833332),1637,,YCAH,Dunedoo,Warrumbungle Shire,New South Wales
+CLI,America/Chicago,Clintonville,CLI,US,POINT (-88.86667 42.566666),958,http://www.clintonvillewi.org/Airport.htm,KCLI,Clinton,Rock County,Wisconsin
+CLK,America/Chicago,Municipal,CSM,US,POINT (-98.9325 35.538055),1624,,KCLK,Clinton,Custer County,Oklahoma
+CLM,America/Los_Angeles,Fairchild International,CLM,US,POINT (-123.49511 48.121883),226,,KCLM,Port Angeles,Clallam County,Washington
+CLN,America/Fortaleza,Carolina,CLN,BR,POINT (-47.45 -7.333333),587,,SBCI,Carolina,Carolina,Maranhao
+CLO,America/Bogota,Alfonso B. Aragon Airport,CLO,CO,POINT (-76.381386 3.543056),3067,https://www.aerocali.com.co/,SKCL,Palmira,,Valle del Cauca
+ARD,Asia/Makassar,Alor Island Airport,ARD,ID,POINT (124.53333 -8.683333),0,,WATM,Sifala,,East Nusa Tenggara
+ARG,America/Chicago,Walnut Ridge,ARG,US,POINT (-90.95 36.066666),249,http://walnutridgeairport.com/,KARG,Walnut Ridge,Lawrence County,Arkansas
+ARJ,Asia/Jayapura,Arso,ARJ,ID,POINT (140.78334 -2.933333),216,,WAJA,Arso,,Papua
+ARO,America/Bogota,Arboletas,ARO,CO,POINT (-76.433334 8.85),29,,"",Arboletes,,Antioquia
+ARR,America/Argentina/Catamarca,Alto Rio Senguerr,ARR,AR,POINT (-70.833336 -45.033333),2299,,SAVR,Alto Rio Senguer,,Chubut
+ART,America/New_York,Watertown Airport,ART,US,POINT (-76.021385 43.990833),275,,KART,Dexter,Jefferson County,New York
+ARV,America/Chicago,Noble F. Lee,ARV,US,POINT (-89.73222 45.924168),1614,,KARV,Lac du Flambeau,Vilas County,Wisconsin
+ARW,Europe/Bucharest,Arad,ARW,RO,POINT (21.266666 46.183334),357,,LRAR,Arad,,Arad
+ARX,America/New_York,Asbury Park,ARX,US,POINT (-74.1 40.216667),88,,SBAC,Shark River Hills,Monmouth County,New Jersey
+ASF,Europe/Volgograd,Astrakhan Airport,ASF,RU,POINT (48.018907153379175 46.28016705),-78,http://xn--80aaaa9dcahhdbllc1cxhc.xn--p1ai/,URWA,Yaksatovo,,Astrakhan
+ASS,Africa/Johannesburg,Arathusa Safari Lodge,ASS,ZA,POINT (31.5185186 -24.7410105),1299,http://arathusa.co.za/getting-to-arathusa-by-scheduled-flight/,FAAR,,,
+CLQ,America/Mexico_City,Colima Airport,CLQ,MX,POINT (-103.65 19.3),2378,,MMIA,Cuauhtemoc,,Colima
+CLR,America/Los_Angeles,Calipatria,CLR,US,POINT (-115.52340930160881 33.12804795),-196,,KCLR,Calipatria,Imperial County,California
+FRK,Indian/Mahe,Fregate Island,FRK,SC,POINT (55.966667 -4.583333),0,,FSSF,,,
+FSL,Australia/Perth,Fossil Downs,FSL,AU,POINT (125.8 -18.2),383,,"",,,
+GSL,America/Yellowknife,Taltheilei Narrows,GSL,CA,POINT (-111.5390293 62.598879),515,,CFA7,,,
+SDK,Asia/Kuching,Sandakan Airport,SDK,MY,POINT (118.05812026098866 5.8998839499999995),49,,WBKS,Taman Rajawali,,Sabah
+AEB,Asia/Shanghai,Youjiang,AEB,CN,POINT (106.9609714096124 23.72020895),452,,ZGBS,Tianzhou,,Guangxi Zhuangzu Zizhiqu
+YSX,America/Vancouver,Shearwater,YSX,CA,POINT (-128.06667 52.13333),0,,CAW8,,,
+LSJ,Pacific/Port_Moresby,Long Island,LSJ,PG,POINT (147.08333 -5.333333),708,,AYLX,,,
+MUL,America/New_York,Spence,MGR,US,POINT (-83.78333 31.183332),291,,,Moultrie,Colquitt County,Georgia
+MVQ,Europe/Minsk,Mogilev,MVQ,BY,POINT (30.09604866153728 53.9550796),580,,UMOO,Vishow,,Mogilev
+MUO,America/Boise,Mountain Home AFB,MUO,US,POINT (-115.683334 43.13333),3143,http://www.mountainhome.af.mil/,KMUO,Mountain Home,Elmore County,Idaho
+MUU,America/New_York,Mount Union,MUU,US,POINT (-77.88333 40.38333),613,,,Mount Union,Huntingdon County,Pennsylvania
+CLS,America/Los_Angeles,Centralia,CLS,US,POINT (-122.98111 46.67389),111,http://www.flycls.com/,KCLS,Chehalis,Lewis County,Washington
+CLU,America/Indiana/Indianapolis,Columbus Municipal,CLU,US,POINT (-85.916664 39.216667),616,,KBAK,Columbus,Bartholomew County,Indiana
+CLV,America/Sao_Paulo,Caldas Novas,CLV,BR,POINT (-48.6081742294032 -17.7247899),2276,,SBCN,Caldas Novas,Caldas Novas,Goias
+CLW,America/New_York,Executive,CLW,US,POINT (-82.75861 27.976667),55,http://www.clearwaterairpark.net/,KCLW,Clearwater,Pinellas County,Florida
+CLX,America/Argentina/Cordoba,Clorinda,CLX,AR,POINT (-57.666668 -25.333332),164,,SATC,Asuncion,,Asuncion
+CLY,Europe/Paris,Sainte Catherine Airport,CLY,FR,POINT (8.791667 42.52778),104,,LFKC,Calvi,Departement de la Haute-Corse,Corsica
+CLZ,America/Caracas,Calabozo,CLZ,VE,POINT (-67.41381708050605 8.92472605),347,,SVCL,Calabozo,Municipio Francisco de Miranda,Guarico
+CMC,America/Fortaleza,Camocim,CMC,BR,POINT (-40.85836649182566 -2.89492665),13,,SNWC,Camocim,Camocim,Ceara
+CMD,Australia/Sydney,Cootamundra,CMD,AU,POINT (148.0349871 -34.6289957),1076,,YCTM,Cootamundra,Cootamundra,New South Wales
+CME,America/Merida,Ciudad Del Carmen Airport,CME,MX,POINT (-91.80046272071905 18.6517384),39,,MMCE,Ciudad del Carmen,Carmen,Campeche
+CMF,Europe/Paris,Chambery,CMF,FR,POINT (5.881803393116886 45.6352153),708,,LFLB,Voglans,Departement de la Savoie,Rhone-Alpes
+CMH,America/New_York,John Glenn Columbus International Airport,CMH,US,POINT (-82.89304061484347 39.99705605),803,https://flycolumbus.com/,KCMH,Gahanna,Franklin County,Ohio
+MUW,Africa/Algiers,Mascara-Ghriss,MUW,DZ,POINT (0.15 35.333332),1509,,DAOV,Mascara,,Mascara
+AMP,Indian/Antananarivo,Ampanihy,AMP,MG,POINT (44.7341995 -24.6996994),725,,FMSY,Ampanihy,,Atsimo-Andrefana
+ASL,America/Chicago,Harrison County,ASL,US,POINT (-94.38333 32.55),469,,KASL,Marshall,Harrison County,Texas
+ASN,America/Chicago,Talladega,ASN,US,POINT (-86.1 33.433334),557,,KASN,Talladega,Talladega County,Alabama
+ASX,America/Chicago,Ashland,ASX,US,POINT (-90.916664 46.55),793,,KASX,Ashland,Ashland County,Wisconsin
+ASY,America/Chicago,Ashley,ASY,US,POINT (-99.36667 46.033333),1984,,KASY,Ashley,McIntosh County,North Dakota
+ATG,Asia/Karachi,Attock,ATG,PK,POINT (72.25 33.9),872,,OPMS,Akora,,Khyber Pakhtunkhwa
+ATI,America/Montevideo,Artigas,ATI,UY,POINT (-56.50833 -30.4),416,,SUAG,Artigas,,Artigas
+ATJ,Indian/Antananarivo,Antsirabe,ATJ,MG,POINT (47.016666 -19.85),4868,,FMME,Antsirabe,,Vakinankaratra
+ATM,America/Santarem,Altamira Airport,ATM,BR,POINT (-52.216667 -3.2),321,,SBHT,Altamira,Altamira,Para
+ATO,America/New_York,Ohio University,ATO,US,POINT (-82.1 39.333332),721,,KUNI,Athens,Athens County,Ohio
+ATX,Asia/Almaty,Atbasar,ATX,KZ,POINT (68.3655586 51.8517097),997,,"",Atbasar,,Aqmola
+BFO,Africa/Harare,Buffalo Range,BFO,ZW,POINT (31.579166 -21.009167),1437,,FVCZ,,,
+GHA,Africa/Algiers,Noumerate Airport,GHA,DZ,POINT (3.794306470528227 32.3857188),1427,,DAUG,Ghardaia,,Ghardaia
+MUY,Africa/Brazzaville,Mouyondzi,MUY,CG,POINT (13.919444 -3.983333),1660,,FCBM,Madingou,,Bouenza
+MVA,Atlantic/Reykjavik,Reykiahlid,MVA,IS,POINT (-16.966667 65.61667),859,,BIRL,Laugar,,Northeast
+MVB,Africa/Libreville,Franceville/Mvengue,MVB,GA,POINT (13.433333 -1.65),1404,,FOON,Franceville,,Haut-Ogooue
+MVC,America/Chicago,Monroe - Walton County,MVC,US,POINT (-87.333336 31.516666),410,,KMVC,Monroeville,Monroe County,Alabama
+MTP,America/New_York,Montauk Airport,MTP,US,POINT (-71.92162522396876 41.0761753),49,http://www.themontaukairport.com/,KMTP,Montauk,Suffolk County,New York
+CPV,America/Fortaleza,Joao Suassuna Airport,CPV,BR,POINT (-35.89609699581786 -7.27016065),1561,,SBKG,Campina Grande,Campina Grande,Paraiba
+ANJ,Africa/Brazzaville,Zanaga,ANJ,CG,POINT (13.8214267 -2.8474064),1863,,FCBZ,,,
+NUT,Pacific/Port_Moresby,Nutuve,NUT,PG,POINT (151.38333 -5.633333),734,,,,,
+CRW,America/New_York,Yeager Airport,CRW,US,POINT (-81.5942197333228 38.37294755),944,,KCRW,Charleston,Kanawha County,West Virginia
+YVC,America/Regina,La Ronge,YVC,CA,POINT (-105.333336 55.083332),1242,,CYVC,,,
+LWI,Pacific/Port_Moresby,Lowai,LWI,PG,POINT (146.58333 -6.316667),3362,,AYLO,,,
+LIX,Africa/Blantyre,Likoma,LIX,MW,POINT (34.736307856169844 -12.07947195),1600,,FWLK,Chipyela,Likoma District,Northern Region
+MVF,America/Fortaleza,Dixsept Rosado,MVF,BR,POINT (-37.25 -5.166667),78,,SBMS,Mossoro,Mossoro,Rio Grande do Norte
+MVG,Africa/Libreville,Mevang,MVG,GA,POINT (11.083333 0.116667),1102,,,Ndjole,,Moyen-Ogooue
+MVH,Australia/Sydney,Macksville,MVH,AU,POINT (152.9 -30.75),29,,,Macksville,Nambucca Shire,New South Wales
+MTR,America/Bogota,Los Garzones Airport,MTR,CO,POINT (-75.82489835334957 8.82368475),39,,SKMR,Cerete,,Cordoba
+MVJ,America/Jamaica,Marlboro,MVJ,JM,POINT (-77.49528 18.021667),2109,,,Mandeville,,Manchester
+MUE,Pacific/Honolulu,Kamuela,MUE,US,POINT (-155.6663464052309 20.00264195),2687,,PHMU,Waimea,Hawaii County,Hawaii
+CSI,Australia/Sydney,Casino,CSI,AU,POINT (153.05894080670998 -28.880727450000002),68,,YCAS,Casino,Richmond Valley,New South Wales
+MVM,America/Shiprock,Monument Valley,MVM,US,POINT (-110.23333 36.702778),5718,,"",Kayenta,Navajo County,Arizona
+MUN,America/Caracas,Jose Tadeo Monagas International Airport,MUN,VE,POINT (-63.15470842865918 9.7497702),164,,SVMT,Maturin,Municipio Maturin,Monagas
+MVO,Africa/Ndjamena,Mongo,MVO,TD,POINT (18.783333 12.2),1407,,FTTM,Mongo,,Guera
+SIO,Australia/Hobart,Smithton,SIO,AU,POINT (145.0850648 -40.834324),29,,YSMI,Smithton,Circular Head,Tasmania
+CTP,America/Fortaleza,Carutapera,CTP,BR,POINT (-46.0172234 -1.250278),95,,SNCP,Carutapera,Carutapera,Maranhao
+GSJ,America/Guatemala,Puerto San Jose,GSJ,GT,POINT (-90.83299202518783 13.93653185),26,,MGSJ,Puerto San Jose,,Escuintla
+GUQ,America/Caracas,Guanare,GUQ,VE,POINT (-69.75436356069964 9.02806755),531,,SVGU,Guanare,Municipio Guanare,Portuguesa
+GWD,Asia/Karachi,Gwadar Airport,GWD,PK,POINT (62.32852684802599 25.2323386),26,,OPGD,Gwadar,,Balochistan
+AUG,America/New_York,Augusta Airport,AUG,US,POINT (-69.79667 44.318054),314,,KAUG,Augusta,Kennebec County,Maine
+AUM,America/Chicago,Austin,AUM,US,POINT (-92.98333 43.666668),1236,,KAUM,Austin,Mower County,Minnesota
+AUN,America/Los_Angeles,Auburn,AUN,US,POINT (-121.066666 38.9),1338,,KAUN,Auburn,Placer County,California
+AUO,America/Chicago,Auburn-Opelika,AUO,US,POINT (-85.5 32.63333),636,,KAUO,Auburn,Lee County,Alabama
+AUR,Europe/Paris,Aurillac Airport,AUR,FR,POINT (2.418056 44.8975),2073,,LFLW,Aurillac,Departement du Cantal,Auvergne
+AUX,America/Araguaina,Araguaina Airport,AUX,BR,POINT (-48.2 -7.2),810,,SWGN,Araguaina,Araguaina,Tocantins
+AVA,Asia/Chongqing,An Shun/Huang Guo Shu Airport,AVA,CN,POINT (105.87278 26.257221),4832,,ZUAS,Anshun,,Guizhou Sheng
+CMK,Africa/Blantyre,Club Makokola,CMK,MW,POINT (35.05 -14.3),1998,,FWCM,Monkey Bay,Mangochi District,Southern Region
+CMN,Africa/Casablanca,Mohamed V International Airport,CAS,MA,POINT (-7.586667 33.36667),613,http://www.onda.ma/ONDA/Fr/Espaces/EspacePassagers/LeReseauAeroportuaireONDA/Lesaeroports/Fiches+d%E2%80%99identit%C3%A9+par+a%C,GMMN,Nouaseur,,Chaouia-Ouardigha
+CMP,America/Belem,Campo Alegre,CMP,BR,POINT (-36.35 -9.8),587,,SNKE,Campo Alegre,Campo Alegre,Alagoas
+CMR,Europe/Paris,Colmar-houssen,CMR,FR,POINT (7.359451562910726 48.10875115),603,,LFGA,Colmar,Departement du Haut-Rhin,Alsace
+CMT,America/Belem,Cameta,CMT,BR,POINT (-49.5 -2.2),32,,"",Cameta,Cameta,Para
+CMW,America/Havana,Ign Agramonte International Airport,CMW,CU,POINT (-77.849724 21.418612),400,,MUCM,Camaguey,,Camaguey
+CNA,America/Hermosillo,Cananea,CNA,MX,POINT (-110.333336 31),5495,,MMCA,Cananea,,Sonora
+BRJ,Australia/Melbourne,Bright,BRJ,AU,POINT (146.93333 -36.7),944,,,,,
+CND,Europe/Bucharest,Kogalniceanu Airport,CND,RO,POINT (28.48645083006126 44.364428399999994),308,,LRCK,Mihail Kogalniceanu,Comuna Mihail Kogalniceanu,Constanta
+GWL,Asia/Kolkata,Gwalior Airport,GWL,IN,POINT (78.22278188888617 26.2972939),574,,VIGR,Morar,Gwalior,Madhya Pradesh
+GWO,America/Chicago,Leflore,GWO,US,POINT (-90.0861945 33.4945655),127,http://greenwoodms.com/index.aspx?nid=113,KGWO,Greenwood,Leflore County,Mississippi
+GZP,Europe/Istanbul,Gazipasa Airport,GZP,TR,POINT (32.29718214713545 36.29880585),59,,LTFG,Gazipasa,,Antalya
+GZT,Europe/Istanbul,Gaziantep Airport,GZT,TR,POINT (37.47319308119735 36.9479318),2250,,LTAJ,Oguzeli,,Gaziantep
+HAQ,Indian/Maldives,Hanimaadhoo Airport,HAQ,MV,POINT (73.16926271391242 6.74674065),22,,VRMH,Dhidhdhoo,,Upper North
+SPG,America/New_York,Whitted,SPG,US,POINT (-82.62887560406861 27.76423345),13,,KSPG,Saint Petersburg,Pinellas County,Florida
+WDN,America/Los_Angeles,Waldron Island,WDN,US,POINT (-123.01864572666307 48.71244645),101,,"90WA",,,
+XMP,America/Whitehorse,Macmillan Pass,XMP,CA,POINT (-135.91667 62.86667),1758,,CFC4,,,
+AXG,America/Chicago,Algona,AXG,US,POINT (-94.2714143 43.0778426),1141,,KAXA,Algona,Kossuth County,Iowa
+GOT,Europe/Stockholm,Goteborg Landvetter Airport,GOT,SE,POINT (12.287763001236742 57.662414749999996),475,https://www.swedavia.com/landvetter/,ESGG,Landvetter,Harryda Kommun,Vaestra Goetaland
+XCL,America/Regina,Cluff Lake,XCL,CA,POINT (-107 59),1112,,CJS3,,,
+GOY,Asia/Colombo,Amparai,GOY,LK,POINT (81.62522424646704 7.338524700000001),144,,,Ampara,,Eastern Province
+HDN,America/Denver,Yampa Valley Airport,HDN,US,POINT (-107.220936 40.4844693),6584,,KHDN,Hayden,Routt County,Colorado
+HDY,Asia/Bangkok,Hat Yai International Airport,HDY,TH,POINT (100.3937098 6.9353952),104,,VTSS,Khlong Hoi Khong,,Songkhla
+YWK,America/Goose_Bay,Wabush Airport,YWK,CA,POINT (-66.86590757996974 52.92290375),1808,,CYWK,,,
+HEA,Asia/Kabul,Herat International Airport,HEA,AF,POINT (62.22776940067165 34.2065784),3139,,OAHR,Guzarah,,Herat
+HER,Europe/Athens,Heraklion Airport,HER,GR,POINT (25.1742268 35.3363305),101,,LGIR,Nea Alikarnassos,Nomos Irakleiou,Crete
+HYV,Europe/Helsinki,Hyvinkaa,HYV,FI,POINT (24.8818934 60.6531076),410,,EFHV,Hyvinge,Helsinki,Uusimaa
+HZB,Europe/Paris,Merville/Calonne,HZB,FR,POINT (2.6440712081169275 50.61904975),39,,LFQT,Merville,Departement du Nord,Nord-Pas-de-Calais
+MUT,America/Chicago,Muscatine,MUT,US,POINT (-91.14563095260539 41.3664204),531,https://www.muscatineiowa.gov/550/Muscatine-Municipal-Airport,KMUT,Muscatine,Muscatine County,Iowa
+MUX,Asia/Karachi,Multan Airport,MUX,PK,POINT (71.41997759761222 30.2071105),252,,OPMT,Multan,,Punjab
+MUZ,Africa/Dar_es_Salaam,Musoma Airport,MUZ,TZ,POINT (33.80178074217361 -1.50286265),3795,,HTMU,Musoma,,Mara
+AWM,America/Chicago,Municipal,AWM,US,POINT (-90.183334 35.13333),193,,KAWM,West Memphis,Crittenden County,Arkansas
+AXM,America/Bogota,El Eden Airport,AXM,CO,POINT (-75.76804 4.452869),4012,,SKAR,La Tebaida,,Quindio
+AXN,America/Chicago,Alexandria,AXN,US,POINT (-95.394165 45.86722),1423,,KAXN,Alexandria,Douglas County,Minnesota
+AXP,America/Nassau,Springpoint Airport,AXP,BS,POINT (-73.96667 22.45),32,,MYAP,Masons Bay,,Acklins
+AXV,America/New_York,Neil Armstrong,AXV,US,POINT (-84.2 40.566666),895,,KAXV,Wapakoneta,Auglaize County,Ohio
+YLX,America/Toronto,Long Point,YLX,CA,POINT (-94.68 59.35),0,,,,,
+AYA,America/Bogota,Ayapel,AYA,CO,POINT (-75.15 8.3),141,,"",Ayapel,,Cordoba
+AYE,America/New_York,AAF Heliport,AYE,US,POINT (-71.6 42.55),269,,,Ayer,Middlesex County,Massachusetts
+AYP,America/Lima,Yanamilla Airport,AYP,PE,POINT (-74.24722 -13.197222),10423,,SPHO,Carmen Alto,Provincia de Huamanga,Ayacucho
+BIC,Europe/Paris,Aérodrome de Belle Île,BIC,FR,POINT (-3.199652228057877 47.3255706),177,,LFEA,Bangor,,
+BSG,Africa/Malabo,Bata Airport,BSG,GQ,POINT (9.80749101607464 1.9093582),19,,FGBT,Bata,,Litoral
+CNG,Europe/Paris,Parvaud,CNG,FR,POINT (-0.333333 45.683334),121,,LFBG,Chateaubernard,Departement de la Charente,Poitou-Charentes
+CNH,America/New_York,Municipal,CNH,US,POINT (-72.333336 43.38333),734,http://www.claremontnh.com/residents/claremont-municipal-airport.aspx,KCNH,Claremont,Sullivan County,New Hampshire
+CNI,Asia/Shanghai,Changhai,CNI,CN,POINT (121.433334 31.25),36,,ZYCH,Changning,,Shanghai Shi
+CNK,America/Chicago,Blosser Municipal,CNK,US,POINT (-97.6535883 39.548009),1519,,KCNK,Concordia,Cloud County,Kansas
+MVD,America/Montevideo,Carrasco International Airport,MVD,UY,POINT (-56.02201434471925 -34.830431950000005),52,,SUMU,Paso de Carrasco,,Canelones
+MVN,America/Chicago,Mt Vernon-Outland,MVN,US,POINT (-88.855888706641 38.3235587),456,,,Mount Vernon,Jefferson County,Illinois
+MXA,America/Chicago,Municipal,MXA,US,POINT (-90.183334 35.88333),216,http://fly.arkansas.gov/uploads/7/5/7/7/75772239/manila.pdf,KMXA,Manila,Mississippi County,Arkansas
+MXB,Asia/Makassar,Masamba,MXB,ID,POINT (120.333336 -2.333333),3172,,WAAM,Masamba,,South Sulawesi
+MXC,America/Denver,San Juan County,MXC,US,POINT (-109.36667 37.88333),7306,,"",Monticello,San Juan County,Utah
+MXE,America/New_York,Maxton,MXE,US,POINT (-79.333336 34.716667),180,,KMEB,Maxton,Robeson County,North Carolina
+MXG,America/New_York,Marlborough,MXG,US,POINT (-71.55 42.333332),416,,"",Marlborough,Middlesex County,Massachusetts
+YKU,America/Montreal,Chisasibi,YKU,CA,POINT (-78.9175650509388 53.805560400000005),43,,CSU2,,,
+NKU,Africa/Maseru,Nkaus,NKU,LS,POINT (28 -29.5),8238,,FXNK,,,
+SUJ,Europe/Bucharest,Satu Mare International Airport,SUJ,RO,POINT (22.88445740774703 47.705222),383,,LRSM,Madaras,Oras Ardud,Satu Mare
+DLA,Africa/Douala,Douala Airport,DLA,CM,POINT (9.716386661669063 4.01357),59,,FKKD,Douala,,Littoral
+MIS,Pacific/Port_Moresby,Misima Island,MIS,PG,POINT (152.84166 -10.5),0,,AYMS,,,
+MUA,Pacific/Guadalcanal,Munda Airport,MUA,SB,POINT (157.26105064765403 -8.3272596),22,,AGGM,,,
+SSM,America/Toronto,Sault Ste. Marie Airport,SSM,CA,POINT (-84.50019623151833 46.484818000000004),597,,,,,
+MCX,Europe/Moscow,Makhachkala Airport,MCX,RU,POINT (47.65567236459954 42.816631900000004),3,,URML,Kaspiysk,,Dagestan
+MCY,Australia/Brisbane,Sunshine Coast Airport,MCY,AU,POINT (153.0834615909481 -26.59467215),45,http://www.sunshinecoastairport.com.au/,YBSU,Coolum Beach,Sunshine Coast,Queensland
+MDC,Asia/Makassar,Sam Ratulangi International Airport,MDC,ID,POINT (124.92516459750878 1.5504688500000001),282,,WAMM,Tatelu,,North Sulawesi
+MOW,Africa/Dar_es_Salaam,Mpanda Airport,MOW,TZ,POINT (31.084082497937757 -6.35497145),3572,,,,,
+LEF,Africa/Maseru,Lebakeng,LEF,LS,POINT (28.583332 -29.783333),6000,,FXLK,,,
+LES,Africa/Maseru,Lesobeng,LES,LS,POINT (27.666668 -29.666668),7130,,FXLS,,,
+MPA,Africa/Windhoek,Mpacha,MPA,NA,POINT (24.266666 -17.5),3097,,FYKM,,,
+CIP,Africa/Lusaka,Chipata,CIP,ZM,POINT (32.587888762914375 -13.5571088),3359,,FLCP,,,
+MXI,Asia/Manila,Imelda Romualdez Marcos,MXI,PH,POINT (126.25 6.916667),0,,RPMQ,Mati,Province of Davao Oriental,Davao
+MXJ,Africa/Lagos,Minna,MXJ,NG,POINT (6.533333 9.616667),797,http://www.faannigeria.org/nigeria-airport.php?airport=19,DNMN,Minna,,Niger
+LCT,Asia/Shanghai,Shijiazhuang Luancheng Airport,LCT,CN,POINT (114.59152619473704 37.915486400000006),0,,,,,
+MVV,Europe/Paris,Megeve,MVV,FR,POINT (6.649836009161402 45.82270325),4727,,LFHM,Megeve,Departement de la Haute-Savoie,Rhone-Alpes
+MVZ,Africa/Harare,Masvingo,MVZ,ZW,POINT (30.860836538883625 -20.06109525),3608,,FVMV,Masvingo,,Masvingo
+MXO,America/Chicago,Municipal,MXO,US,POINT (-91.2 42.25),793,,,Monticello,Jones County,Iowa
+MWA,America/Chicago,Williamson County Airport,MWA,US,POINT (-89.0113 37.7541),465,,KMWA,Energy,Williamson County,Illinois
+CNL,Europe/Copenhagen,Sindal,CNL,DK,POINT (10.229190629496532 57.50399995),82,http://www.eksn.dk/,EKSN,Sindal,Hjorring Kommune,North Denmark
+CNQ,America/Argentina/Cordoba,Camba Punta Airport,CNQ,AR,POINT (-58.762222 -27.449722),187,,SARC,Corrientes,,Corrientes
+CNU,America/Chicago,Martin Johnson,CNU,US,POINT (-95.45 37.683334),954,http://www.chanute.org/index.aspx?NID=65,KCNU,Chanute,Neosho County,Kansas
+CNV,America/Bahia,Canavieiras,CNV,BR,POINT (-38.9558886 -15.6649926),32,,SNED,Canavieiras,Canavieiras,Bahia
+CNW,America/Chicago,TSTC Waco Airport,ACT,US,POINT (-97.13333 31.916668),603,http://www.waco.tstc.edu/airport,KCNW,Hillsboro,Hill County,Texas
+COC,America/Argentina/Cordoba,Concordia,COC,AR,POINT (-57.996387 -31.297222),68,,SAAC,Salto,,Salto
+COE,America/Los_Angeles,Coeur D'Alene,COE,US,POINT (-116.76667 47.683334),2178,http://www.cdaairport.com/,KCOE,Coeur d'Alene,Kootenai County,Idaho
+COF,America/New_York,Patrick AFB,COI,US,POINT (-80.73333 28.35),36,http://www.patrick.af.mil/,KCOF,Rockledge,Brevard County,Florida
+AYZ,America/New_York,Zahns,AYZ,US,POINT (-73.416664 40.666668),26,,,Amityville,Suffolk County,New York
+AZD,Asia/Tehran,Yazd Airport,AZD,IR,POINT (54.283264 31.903603),4055,,OIYY,Yazd,,Yazd
+AZG,America/Mexico_City,Apatzingan,AZG,MX,POINT (-102.352776 19.068056),1003,,MMAG,Apatzingan,Apatzingan,Michoacan
+AZS,America/Santo_Domingo,Samaná El Catey International,AZS,DO,POINT (-69.736946 19.270555),49,,MDCY,Sanchez,,Samana
+AZT,America/Bogota,Zapatoca,AZT,CO,POINT (-73.25 6.866667),4944,,"",Betulia,,Santander
+BAB,America/Los_Angeles,Beale AFB,MYV,US,POINT (-121.583336 39.15),85,,KBAB,Marysville,Yuba County,California
+BAD,America/Chicago,Barksdale AFB,SHV,US,POINT (-93.666664 32.5),170,,KBAD,Bossier City,Bossier Parish,Louisiana
+BAE,Europe/Paris,Barcelonnette,BAE,FR,POINT (6.608085545878952 44.387177199999996),3697,,LFMR,Barcelonnette,Departement des Alpes-de-Haute-Provence,Provence-Alpes-Cote d'Azur
+BAF,America/New_York,Barnes,BAF,US,POINT (-72.75 42.13333),206,,KBAF,Westfield,Hampden County,Massachusetts
+BAL,Europe/Istanbul,Batman Airport,BAL,TR,POINT (41.083332 37.916668),1765,,LTCJ,Yenikoy,,Batman
+COG,America/Bogota,Mandinga,COG,CO,POINT (-76.7 5.08333),157,,SKCD,Condoto,,Choco
+COI,America/New_York,Merritt Island,COI,US,POINT (-80.6 28.316668),0,,KCOI,Cocoa Beach,Brevard County,Florida
+COJ,Australia/Sydney,Coonabarabran,COJ,AU,POINT (149.27194 -31.337221),2001,,YCBB,Coonabarabran,Warrumbungle Shire,New South Wales
+COM,America/Chicago,Coleman,COM,US,POINT (-99.433334 31.833332),1738,http://www.cityofcolemantx.us/airport.html,KCOM,Coleman,Coleman County,Texas
+DAU,Pacific/Port_Moresby,Daru Airport,DAU,PG,POINT (143.2079998419926 -9.0867605),19,,AYDU,,,
+MNV,Australia/Darwin,Mountain Valley,MNV,AU,POINT (133.83333 -14.116667),416,,,,,
+YFO,America/Winnipeg,Flin Flon Airport,YFO,CA,POINT (-101.6775972374846 54.67692025),997,,CYFO,,,
+SZZ,Europe/Warsaw,Goleniow Airport,SZZ,PL,POINT (14.903674968858503 53.5843896),154,http://www.airport.com.pl/en/index.php,EPSC,Goleniow,Powiat goleniowski,West Pomeranian Voivodeship
+OMG,Africa/Windhoek,Omega,OMG,NA,POINT (22.066668 -18),3359,,FYOE,,,
+JJN,Asia/Shanghai,Quanzhou Jinjiang International Airport,JJN,CN,POINT (118.58870501999499 24.79702915),29,,ZSQZ,Jinjiang,,Fujian
+JAX,America/New_York,Jacksonville International Airport,JAX,US,POINT (-81.6924513519536 30.4947303),19,http://www.jaa.aero/,KJAX,Nassau Village-Ratliff,Nassau County,Florida
+SOL,America/Anchorage,Solomon,SOL,US,POINT (-164.44028 64.56084),36,,AK26,,,
+YGV,America/Montreal,Havre St Pierre,YGV,CA,POINT (-63.603875594040474 50.283493899999996),124,,CYGV,,,
+JBQ,America/Santo_Domingo,La Isabela International Airport,SDQ,DO,POINT (-69.98602447318345 18.5713644),85,,MDJB,Santo Domingo,,Nacional
+JER,Europe/Jersey,Jersey Airport,JER,JE,POINT (-2.1949438 49.2055732),298,http://www.jerseyairport.com/,EGJJ,Saint Helier,,St Helier
+JFK,America/New_York,John F. Kennedy International Airport,NYC,US,POINT (-73.7793733748521 40.642947899999996),45,https://www.jfkairport.com/,KJFK,Inwood,Nassau County,New York
+LUN,Africa/Lusaka,Kenneth Kaunda International Airport,LUN,ZM,POINT (28.453200826570317 -15.3301972),3750,http://www.nacl.co.zm/?page_id=336,FLKK,Lusaka,,Lusaka
+JKG,Europe/Stockholm,Axamo Airport,JKG,SE,POINT (14.06703041585528 57.76018705),754,http://www.lfv.se/templates/LFV_AirportStartPage____1672.aspx,ESGJ,Taberg,Jonkopings Kommun,Joenkoeping
+MDT,America/New_York,Harrisburg International Airport,HAR,US,POINT (-76.75294587287746 40.193209800000005),275,http://www.flyhia.com/,KMDT,Middletown,Dauphin County,Pennsylvania
+MDW,America/Chicago,Chicago Midway International Airport,CHI,US,POINT (-87.7508277936727 41.78544375),603,https://www.flychicago.com/midway/home/pages/default.aspx,KMDW,Stickney,Cook County,Illinois
+KCI,Asia/Jayapura,Kon,KCI,ID,POINT (127.0500031 -8.3500004),150,,"",Lospalos,,Lautem
+MDZ,America/Argentina/Mendoza,El Plumerillo International Airport,MDZ,AR,POINT (-68.79757765477916 -32.8315886),2283,,SAME,Las Heras,,Mendoza
+KOE,Asia/Dili,El Tari Airport,KOE,ID,POINT (123.6665131860189 -10.1714871),335,,WATT,Penfui,,East Nusa Tenggara
+JLA,America/Anchorage,Quartz Creek,JLA,US,POINT (-149.85 60.483334),633,,JLA,,,
+KOJ,Asia/Tokyo,Kagoshima Airport,KOJ,JP,POINT (130.718951 31.803187),906,,RJFK,Kajiki,,Kagoshima
+KOK,Europe/Helsinki,Kruunupyy Airport,KOK,FI,POINT (23.140373320489292 63.71924745),84,https://www.finavia.fi/en/kokkola-pietarsaari/,EFKK,Kronoby,Jakobstadsregionen,Ostrobothnia
+LCH,America/Chicago,Lake Charles Regional Airport,LCH,US,POINT (-93.2245961 30.1279008),15,,KLCH,Prien,Calcasieu Parish,Louisiana
+MEB,Australia/Melbourne,Essendon Airport,MEL,AU,POINT (144.90131752171806 -37.72660985),232,http://www.essendonairport.com.au/,YMEN,Niddrie,Moonee Valley,Victoria
+MWB,Australia/Perth,Morawa,MWB,AU,POINT (116.0220032 -29.2017002),823,,YMRW,Dongara,Irwin,Western Australia
+MWE,Africa/Khartoum,Merowe,MWE,SD,POINT (31.844174671844925 18.442695399999998),921,,HSMN,Marawi,,Northern State
+BAY,Europe/Bucharest,Baia Mare,BAY,RO,POINT (23.466667 47.65),580,https://aimm.eu/,LRBM,Tautii Magherus,,Maramures
+BAZ,America/Manaus,Barbelos,BAZ,BR,POINT (-62.933613 -0.966944),137,,SWBC,Barcelos,Barcelos,Amazonas
+BBB,America/Chicago,Benson Municipal Airport,BBB,US,POINT (-95.650556 45.331944),1026,,KBBB,Benson,Swift County,Minnesota
+BBC,America/Chicago,Bay City,BBC,US,POINT (-95.96667 28.983334),72,http://www.flybaycity.com/,KBYY,Bay City,Matagorda County,Texas
+BBD,America/Chicago,Curtis Field,BBD,US,POINT (-99.333336 31.133333),1686,,KBBD,Brady,McCulloch County,Texas
+BBF,America/New_York,Burlington,BBF,US,POINT (-71.183334 42.5),154,,,Burlington,Middlesex County,Massachusetts
+BBM,Asia/Phnom_Penh,Battambang,BBM,KH,POINT (103.22694944923883 13.0956576),45,,VDBG,Battambang,,Battambang
+BCB,America/New_York,Virginia Tech,BCB,US,POINT (-80.41201041579389 37.20921745),2076,http://www.vtbcb.com/index.php,KBCB,Blacksburg,Montgomery County,Virginia
+BCC,America/Anchorage,Bear Creek,BCC,US,POINT (-156.144167 63.571667),623,,Z48,Red Lodge,Carbon County,Montana
+COR,America/Argentina/Cordoba,Ingeniero Aeronautico Ambrosio L.V. Taravella International Airport,COR,AR,POINT (-64.21377 -31.31548),1584,,SACO,Villa Allende,,Cordoba
+COS,America/Denver,Colorado Springs Airport,COS,US,POINT (-104.70327708699932 38.8004299),6131,https://flycos.coloradosprings.gov/,KCOS,Security-Widefield,El Paso County,Colorado
+COT,America/Chicago,Cotulla,COT,US,POINT (-99.22114405284648 28.4585165),449,http://www.cotullaairport.com/,KCOT,Cotulla,La Salle County,Texas
+COU,America/Chicago,Columbia Regional Airport,COU,US,POINT (-92.2198931 38.8168307),862,,KCOU,Ashland,Boone County,Missouri
+COV,Europe/Lisbon,Covilha,COV,PT,POINT (-7.5 40.283333),1948,,,Covilha,Covilha,Castelo Branco
+KGH,Pacific/Port_Moresby,Yongai,KGH,PG,POINT (142.66667 -4.833333),6500,,AYJO,,,
+KCJ,Pacific/Port_Moresby,Komaio,KCJ,PG,POINT (143.6 -7.266667),28,,AYOQ,,,
+TAB,America/Port_of_Spain,A.N.R. Robinson International Airport,TAB,TT,POINT (-60.8375427625885 11.15043845),38,,TTCP,Scarborough,,Tobago
+TAE,Asia/Seoul,Daegu International Airport,TAE,KR,POINT (128.6516654 35.8979585),116,,RKTN,Daegu,,Daegu
+BCL,America/Costa_Rica,Barra Colorado,BCL,CR,POINT (-82.96667 10.833333),3,,MRBC,Matina,,Limon
+MFH,America/Los_Angeles,Mesquite,MFH,US,POINT (-114.05602110333419 36.8344446),1912,http://www.cityofmesquite.com/457/Airport-Mesquite-Metro-Airport,"67L",Mesquite,Clark County,Nevada
+TAH,Pacific/Efate,Tanna Airport,TAH,VU,POINT (169.22362184123318 -19.45388655),19,,NVVW,Isangel,,Tafea
+TAK,Asia/Tokyo,Takamatsu Airport,TAK,JP,POINT (134.01940079050462 34.2151743),607,,RJOT,Takamatsu-shi,,Kagawa
+TAM,America/Monterrey,Tampico International Airport,TAM,MX,POINT (-97.8640037411272 22.29066925),80,,MMTM,Tampico,,Tamaulipas
+TBR,America/New_York,Statesboro-Bulloch County Airport,TBR,US,POINT (-81.73961004884927 32.483064999999996),187,,KTBR,Statesboro,Bulloch County,Georgia
+TBS,Asia/Tbilisi,Tbilisi International Airport,TBS,GE,POINT (44.95514406314355 41.66958674999999),1624,http://www.tbilisiairport.com/,UGTB,Didi Lilo,,
+AAH,Europe/Berlin,Aachen/Merzbruck,AAH,DE,POINT (6.133333 50.75),754,https://www.flugplatz-aachen.de,EDKA,,,
+TBZ,Asia/Tehran,Tabriz Airport,TBZ,IR,POINT (46.24601138618142 38.13556965),4459,http://www.tabrizairport.ir/,OITT,Tabriz,,East Azerbaijan
+COW,America/Santiago,Coquimbo,COW,CL,POINT (-70.63333 -32.8),2486,,SCCQ,Los Andes,Provincia de Los Andes,Valparaiso
+COX,America/Nassau,Congo Town,COX,BS,POINT (-77.5913170475257 24.159072549999998),36,,,,,
+BCH,Asia/Dili,Cakung International,BCH,TL,POINT (126.39972 -8.491667),1669,,WPEC,Baucau,,Baucau
+LCK,America/New_York,Rickenbacker International Airport,CMH,US,POINT (-82.934199729754 39.8132172),744,http://rickenbackerinlandport.com/en/rickenbacker-international-airport/,KLCK,Obetz,Franklin County,Ohio
+LCX,Asia/Shanghai,Liancheng Airport,LCX,CN,POINT (116.74805107673899 25.6764127),1225,,ZSLD,Wenheng,,Fujian
+LDG,Europe/Moscow,Leshukonskoye,LDG,RU,POINT (45.727138706151194 64.89718365),220,,ULAL,Leshukonskoye,,Arkhangelskaya
+COZ,America/Santo_Domingo,Constanza,COZ,DO,POINT (-70.71667 18.9),3877,,MDCZ,Constanza,Constanza,La Vega
+CPA,Africa/Monrovia,A. Tubman,CPA,LR,POINT (-7.695556 4.376667),19,,GLCP,Harper City,,Maryland
+CPC,America/Argentina/Salta,Chapelco Airport,CPC,AR,POINT (-71.13333 -40.066666),2500,,SAZY,Junin de los Andes,,Neuquen
+CPE,America/Merida,Campeche International Airport,CPE,MX,POINT (-90.509445 19.835),42,,MMCP,Campeche,Campeche,Campeche
+CPF,Asia/Jakarta,Cepu,CPF,ID,POINT (111.583336 -7.15),88,,WARC,Cepu,,Central Java
+CPH,Europe/Copenhagen,Copenhagen Airport,CPH,DK,POINT (12.650982248393536 55.6091282),26,http://www.cph.dk/en/,EKCH,Dragor,Dragor Kommune,Capital Region
+CPL,America/Bogota,Chaparral,CPL,CO,POINT (-75.46667 3.716667),2634,,SKHA,Chaparral,,Tolima
+CPM,America/Los_Angeles,Compton,CPM,US,POINT (-118.24778 33.894444),82,,KCPM,West Rancho Dominguez,Los Angeles County,California
+CPO,America/Santiago,Chamonate Airport,CPO,CL,POINT (-70.414406 -27.29892),994,,SCAT,Copiapo,Provincia de Copiapo,Atacama
+CPQ,America/Sao_Paulo,International,CPQ,BR,POINT (-47.111595 -22.856462),1919,,,Campinas,Campinas,Sao Paulo
+BCJ,America/Denver,Baca Grande,BCJ,US,POINT (-106 39),9258,,,Buena Vista,Chaffee County,Colorado
+BCM,Europe/Bucharest,Bacau Airport,BCM,RO,POINT (26.881945 46.59861),557,http://www.bacauairport.ro/,LRBC,Margineni-Munteni,,Bacau
+BCQ,Africa/Tripoli,Brack,BCQ,LY,POINT (14.216667 27.683332),1509,,"",Brak,,Sha`biyat Wadi ash Shati'
+BCR,America/Manaus,Boca Do Acre,BCR,BR,POINT (-67.38333 -8.75),377,,SWNK,Boca do Acre,Boca Do Acre,Amazonas
+BCT,America/New_York,Public,BCT,US,POINT (-80.083336 26.35),52,,KBCT,Boca Raton,Palm Beach County,Florida
+BCU,Africa/Lagos,Bauchi,BCU,NG,POINT (9.8 10.366667),1932,,DNBC,Bauchi,,Bauchi
+BCX,Asia/Yekaterinburg,Beloreck,BCX,RU,POINT (58.333332 53.933334),1781,,UWUB,Lomovka,,Bashkortostan
+BCY,Africa/Addis_Ababa,Bulchi,BCY,ET,POINT (36.666668 6.216667),6066,,,Felege Neway,,"Southern Nations, Nationalities, and People's Region"
+BDC,America/Fortaleza,Barra Do Corda,BDC,BR,POINT (-45.266666 -5.466667),551,,SNBC,Barra do Corda,Barra Do Corda,Maranhao
+BDF,America/Chicago,Rinkenberger,BDF,US,POINT (-89.65 41.183334),787,,"3IS8",Wyoming,Stark County,Illinois
+BDN,Asia/Karachi,Talhar,BDN,PK,POINT (68.9 24.633333),42,,OPTH,Badin,,Sindh
+CPR,America/Denver,Casper/Natrona County International Airport,CPR,US,POINT (-106.46452637926663 42.9054165),5328,,KCPR,Mills,Natrona County,Wyoming
+CPS,America/Chicago,St. Louis Downtown Airport,STL,US,POINT (-90.15194783343586 38.56948535),383,,KCPS,Cahokia,Saint Clair County,Illinois
+CPT,Africa/Johannesburg,Cape Town International Airport,CPT,ZA,POINT (18.602112520148317 -33.97184585),114,http://www.airports.co.za/home.asp?pid=229,FACT,Lansdowne,City of Cape Town,Western Cape
+ABD,Asia/Tehran,Abadan Airport,ABD,IR,POINT (48.228439506236356 30.3668469),26,,OIAA,Abadan,,Khuzestan
+YGO,America/Winnipeg,Gods Lake Narrows Airport,YGO,CA,POINT (-94.4913969 54.5588933),617,,CYGO,,,
+ABT,Asia/Riyadh,Al-Aqiq Airport,ABT,SA,POINT (41.634277 20.296139),5446,,OEBA,Al Bahah,,Mintaqat al Bahah
+ABV,Africa/Lagos,Nnamdi Azikiwe International Airport,ABV,NG,POINT (7.265007350650086 9.00668065),1092,http://www.faannigeria.org/nigeria-airport.php?airport=3,DNAA,Madala,,Abuja Federal Capital Territory
+ABX,Australia/Sydney,Albury Airport,ABX,AU,POINT (146.95187679604823 -36.06894285),544,,YMAY,East Albury,Albury Municipality,New South Wales
+AMA,America/Chicago,Rick Husband Amarillo International Airport,AMA,US,POINT (-101.70183038894899 35.219594150000006),3605,http://airport.amarillo.gov/,KAMA,,,
+YDJ,America/Regina,Hatchet Lake,YDJ,CA,POINT (-102.539444 58.660557),1362,,CJL2,,,
+CPU,America/Fortaleza,Cururupu,CPU,BR,POINT (-44.866944 -1.821111),78,,SNCU,Cururupu,Cururupu,Maranhao
+TCA,Australia/Darwin,Tennant Creek,TCA,AU,POINT (134.18226892859178 -19.6305093),1236,http://www.tennantcreekairport.com.au/,YTNK,Tennant Creek,Barkly,Northern Territory
+TCG,Asia/Shanghai,Tacheng,TCG,CN,POINT (83.34244927026901 46.6714082),0,,ZWTC,Qaxa,,Xinjiang Uygur Zizhiqu
+TCN,America/Mexico_City,Tehuacan,TCN,MX,POINT (-97.4207631830804 18.49717635),5509,,MMHC,San Isidro Vista Hermosa,Santiago Miahuatlan,Puebla
+TED,Europe/Copenhagen,Thisted,TED,DK,POINT (8.698246553187925 57.0698586),23,,EKTS,Hanstholm,Thisted Kommune,North Denmark
+YEU,America/Rankin_Inlet,Eureka,YEU,CA,POINT (-85.80846870855433 79.9941331),256,,CYEU,,,
+TEI,Asia/Kolkata,Tezu,TEI,IN,POINT (96.13487309149708 27.9426344),800,,VETJ,Tezu,Lohit District,Arunachal Pradesh
+TEM,Australia/Sydney,Temora,TEM,AU,POINT (147.51409013411146 -34.42399035),921,https://www.temora.nsw.gov.au/Council-Facilities/Airpark-and-Aerodrome,YTEM,Junee,Junee,New South Wales
+TEN,Asia/Shanghai,Tongren Airport,TEN,CN,POINT (109.31186542271934 27.88668595),0,,ZUTR,Chatian,,Hunan
+CPX,America/Puerto_Rico,Benjamin Rivera Noriega Airport,CPX,PR,POINT (-65.30421884297488 18.31337195),36,,TJCP,Culebra,,Culebra
+TER,Atlantic/Azores,Lajes Field,TER,PT,POINT (-27.09108465736351 38.764423699999995),180,http://aerogarelajes.azores.gov.pt,LPLA,Praia da Vitoria,Praia da Vitoria,Azores
+TES,Africa/Asmara,Tessenei,TES,ER,POINT (36.682060788618955 15.10377495),2018,,HHTS,Teseney,,Gash Barka
+CQF,Europe/Paris,Calais,CQF,FR,POINT (1.9533631394434978 50.9607603),36,,LFAC,Marck,Departement du Pas-de-Calais,Nord-Pas-de-Calais
+CRC,America/Bogota,Cartago,CRC,CO,POINT (-75.933334 4.766667),2972,,SKGO,Cartago,,Valle del Cauca
+WDH,Africa/Windhoek,Hosea Kutako International Airport,WDH,NA,POINT (17.472054302453607 -22.4822038),5600,http://airports.com.na/,FYWH,,,
+CRD,America/Argentina/Catamarca,General E. Mosconi International Airport,CRD,AR,POINT (-67.462776 -45.787224),91,,SAVC,Comodoro Rivadavia,,Chubut
+CRH,Australia/Brisbane,Cherribah,CRH,AU,POINT (152.16667 -28),2024,,YCHB,,,
+CRM,Asia/Manila,National Airport,CRM,PH,POINT (124.583336 12.483333),246,,RPVF,Bobon,Province of Northern Samar,Eastern Visayas
+CRO,America/Los_Angeles,Corcoran,CRO,US,POINT (-119.59505191182205 36.10280109999999),114,,"",Corcoran,Kings County,California
+CRQ,America/Bahia,Caravelas,CRQ,BR,POINT (-39.25 -17.75),0,,SSCV,Nova Vicosa,Nova Vicosa,Bahia
+CRR,America/Argentina/Cordoba,Ceres,CRR,AR,POINT (-61.833332 -29.916668),288,,SANW,Hersilia,,Santa Fe
+CRS,America/Chicago,Corsicana,CRS,US,POINT (-96.46667 32.1),429,http://www.cityofcorsicana.com/Index.aspx?NID=577,KCRS,Corsicana,Navarro County,Texas
+CRT,America/Chicago,Municipal,CRT,US,POINT (-91.96667 33.13333),141,,KCRT,Crossett,Ashley County,Arkansas
+CRX,America/Chicago,Roscoe Turner,CRX,US,POINT (-88.6035004 34.9150009),364,http://www.corinth-alcornairport.com,KCRX,Corinth,Alcorn County,Mississippi
+CRZ,Asia/Ashgabat,Turkmenabad,CRZ,TM,POINT (63.61667 39.083332),623,,UTAV,Turkmenabat,,Lebap
+BDY,America/Los_Angeles,State,BDY,US,POINT (-124.416664 43.11667),52,,S05,Bandon,Coos County,Oregon
+BEH,America/Detroit,Ross Field,BEH,US,POINT (-86.42833 42.127777),606,http://www.swmiairport.com/1201.html,KBEH,Benton Heights,Berrien County,Michigan
+BEK,Asia/Kolkata,Bareli,BEK,IN,POINT (81.23333 26.216667),364,,VIBY,Rae Bareli,Rae Bareli,Uttar Pradesh
+BEO,Australia/Sydney,Belmont,NTL,AU,POINT (151.66667 -33.033333),26,,YLMQ,Belmont,Lake Macquarie Shire,New South Wales
+BEP,Asia/Kolkata,Bellary,BEP,IN,POINT (76.88153285750052 15.16220255),1505,,VOBI,Bellary,Bellary,Karnataka
+BEV,Asia/Jerusalem,Beer Sheba,BEV,IL,POINT (34.8 31.25),869,,LLBS,Beersheba,,Southern District
+BEX,Europe/London,Benson RAF Station,BEX,GB,POINT (-1.083333 51.63333),216,,EGUB,Benson,Oxfordshire,England
+BFD,America/New_York,Bradford Airport,BFD,US,POINT (-78.63944 41.802223),2125,,KBFD,Bradford,McKean County,Pennsylvania
+BFE,Europe/Berlin,Bielefeld,BFE,DE,POINT (8.55 52.016666),351,http://www.flugplatz-bielefeld.de/,EDLI,Bielefeld,Regierungsbezirk Detmold,North Rhine-Westphalia
+CSA,Europe/London,Isle Of Colonsay,CSA,GB,POINT (-6.243205297783833 56.0576378),19,,EGEY,,,
+CSB,Europe/Bucharest,Caransebes,CSB,RO,POINT (22.24837132340668 45.41990835),813,,LRCS,Caransebes,Municipiul Caransebes,Caras-Severin
+MUB,Africa/Gaborone,Maun Airport,MUB,BW,POINT (23.43219644534387 -19.97141275),3097,,FBMN,,,
+ADH,Asia/Yakutsk,Aldan,ADH,RU,POINT (125.40446306539265 58.6034931),2250,,UEEA,Aldan,,Sakha
+ADL,Australia/Adelaide,Adelaide Airport,ADL,AU,POINT (138.5330688373241 -34.947240449999995),26,,YPAD,Plympton,City of West Torrens,South Australia
+OUU,Africa/Libreville,Ouanga,OUU,GA,POINT (10.3 -2.983333),49,,,,,
+ADU,Asia/Tehran,Ardabil Airport,ADU,IR,POINT (48.41727862641293 38.32367895),4324,,OITL,Namin,,Ardabil
+AEG,Asia/Jakarta,Aek Godang,AEG,ID,POINT (99.42983272544998 1.3999603999999999),925,,WIME,Padangsidempuan,,North Sumatra
+BFI,America/Los_Angeles,Boeing Field International Airport,SEA,US,POINT (-122.3037 47.5371),36,,KBFI,Boulevard Park,King County,Washington
+DNM,Australia/Perth,Denham,DNM,AU,POINT (113.57594702287881 -25.8975961),200,,,,,
+TGO,Asia/Shanghai,Tongliao Airport,TGO,CN,POINT (122.19956104166323 43.5535787),2395,,ZBTL,Tongliao,,Inner Mongolia
+TGP,Asia/Krasnoyarsk,Podkamennaya Tunguska Airport,TGP,RU,POINT (89.98597312163324 61.58585095),213,,UNIP,Podkamennaya Tunguska,,Krasnoyarskiy
+TGQ,America/Cuiaba,Tangara da Serra,TGQ,BR,POINT (-57.44358442390656 -14.66279795),1460,,SWTS,Nova Olimpia,Nova Olimpia,Mato Grosso
+TGT,Africa/Dar_es_Salaam,Tanga Airport,TGT,TZ,POINT (39.06655217051742 -5.09477935),129,,HTTG,Tanga,,Tanga
+TGU,America/Tegucigalpa,Toncontin Airport,TGU,HN,POINT (-87.21931915065048 14.0603447),3294,,MHTG,Tegucigalpa,,Francisco Morazan
+THE,America/Fortaleza,Teresina Airport,THE,BR,POINT (-42.823510202633514 -5.0598744),219,,SBTE,Teresina,Teresina,Piaui
+THQ,Asia/Shanghai,Maijishan,THQ,CN,POINT (105.8635664859774 34.5593442),3590,,ZLTS,Beidao,,Gansu Sheng
+THS,Asia/Bangkok,Sukhothai Airport,THS,TH,POINT (99.81971869027117 17.235404799999998),179,,VTPO,Si Samrong,,Sukhothai
+MEZ,Africa/Johannesburg,Messina,MEZ,ZA,POINT (29.833332 -22.366667),2093,,FAMH,,,
+MBH,Australia/Brisbane,Maryborough,MBH,AU,POINT (152.7150367125655 -25.514776050000002),72,,YMYB,Maryborough,Fraser Coast,Queensland
+TIM,Asia/Jayapura,Timika Airport,TIM,ID,POINT (136.8780958916816 -4.523683800000001),103,,WAYY,Mapurujaya,,Papua
+BFJ,Asia/Chongqing,Bijie Airport,BFJ,CN,POINT (105.301389 27.300278),4898,,ZUBJ,Bijie,,Guizhou Sheng
+MBI,Africa/Dar_es_Salaam,Mbeya Airport,MBI,TZ,POINT (33.462739482986976 -8.918906750000001),5583,,HTGW,Mbeya,,Mbeya
+MCP,America/Belem,Macapa International Airport,MCP,BR,POINT (-51.07059996039651 0.0505785),42,,SBMQ,Macapa,Macapa,Amapa
+MNB,Africa/Kinshasa,Moanda,MNB,CD,POINT (12.352778 -5.926944),88,,FZAG,,,
+MWL,America/Chicago,Mineral Wells Airport,MWL,US,POINT (-98.06059143160783 32.78175675),944,http://www.mineralwellsairport.com/,KMWL,Mineral Wells,Palo Pinto County,Texas
+MWM,America/Chicago,Windom Municipal,MWM,US,POINT (-95.1094361 43.9132906),1371,,,Windom,Cottonwood County,Minnesota
+MWO,America/New_York,Hook Field,MWO,US,POINT (-84.39794351164792 39.53105985),626,,KMWO,Middletown,Butler County,Ohio
+MWX,Asia/Seoul,Muan International Airport,MWX,KR,POINT (126.38414054753376 34.991280200000006),36,http://muan.airport.co.kr/doc/muan_eng/,RKJB,Muan,,Jeollanam-do
+MWZ,Africa/Dar_es_Salaam,Mwanza Airport,MWZ,TZ,POINT (32.93340863939895 -2.44583425),3756,,HTMW,Mwanza,,Mwanza
+MXL,America/Tijuana,Mexicali Airport,MXL,MX,POINT (-115.24489535400568 32.63000155),62,http://aeropuertosgap.com.mx/aeropuertos/mexicali?lang=eng,MMML,Islas Agrarias Grupo A,Mexicali,Baja California
+MXN,Europe/Paris,Morlaix,MXN,FR,POINT (-3.8133578921682174 48.602909249999996),249,,LFRU,Saint-Martin-des-Champs,Departement du Finistere,Brittany
+MXP,Europe/Rome,Milano Malpensa Airport,MIL,IT,POINT (8.723547468967393 45.629627299999996),672,http://www.sea-aeroportimilano.it/en/malpensa/index.phtml,LIMC,Vizzola Ticino,Provincia di Varese,Lombardy
+BFK,America/Denver,Buffalo Municipal Airport,DEN,US,POINT (-104.86667 39.733334),5390,,KBKF,Aurora,Adams County,Colorado
+BFR,America/Indiana/Indianapolis,Virgil I Grissom Municipalcipal,BFR,US,POINT (-86.48333 38.86667),669,,KBFR,Bedford,Lawrence County,Indiana
+BFT,America/New_York,County,BFT,US,POINT (-80.635 32.41083),32,,KARW,Beaufort,Beaufort County,South Carolina
+BFU,Asia/Shanghai,Bengbu,BFU,CN,POINT (117.333336 32.95),42,,ZSBB,Bengbu,,Anhui Sheng
+BGC,Europe/Lisbon,Braganca Airport,BGC,PT,POINT (-6.75 41.816666),2011,,LPBG,Braganca,Braganca Municipality,Braganca
+BGE,America/New_York,Decatur County,BGE,US,POINT (-84.583336 30.916668),78,http://bainbridgega.com/chamber/airport.shtml,KBGE,Bainbridge,Decatur County,Georgia
+BGF,Africa/Bangui,Bangui Airport,BGF,CF,POINT (18.520279 4.396111),1089,,FEFF,Bangui,,Bangui
+BJD,Atlantic/Reykjavik,Bakkafjordur,BJD,IS,POINT (-14.75 66.066666),0,,BIBK,,,
+BOA,Africa/Kinshasa,Boma,BOA,CD,POINT (13.066667 -5.866667),9,,FZAJ,,,
+CSD,Australia/Darwin,Cresswell Downs,CSD,AU,POINT (135.9131058 -17.9465486),721,,"",,,
+CSF,Europe/Paris,Creil,CSF,FR,POINT (2.5145065264394058 49.2514148),262,,LFPC,Creil,Departement de l'Oise,Picardie
+CSH,Europe/Moscow,Solovky,CSH,RU,POINT (35.733334 65.02944),32,,ULAS,Rabocheostrovsk,,Republic of Karelia
+CSQ,America/Chicago,Municipal,CSQ,US,POINT (-94.36667 41.066666),1289,http://www.crestoniowa.gov/crestonmunicipalairport.htm,KCSQ,Creston,Union County,Iowa
+CSS,America/Campo_Grande,Cassilandia,CSS,BR,POINT (-51.983334 -18.983334),1669,,SSCL,Cassilandia,Cassilandia,Mato Grosso do Sul
+YFG,America/Montreal,Fontanges,YFG,CA,POINT (-71.16879815979456 54.5546983),1550,,CTU2,,,
+MCS,America/Argentina/Cordoba,Monte Caseros,MCS,AR,POINT (-57.640830221297385 -30.26812535),55,,SARM,Monte Caseros,Departamento de Monte Caseros,Corrientes
+YOA,America/Yellowknife,Ekati,YOA,CA,POINT (-110.61438580264365 64.69891179999999),1536,,CYOA,,,
+MGQ,Africa/Mogadishu,Mogadishu International Airport,MGQ,SO,POINT (45.304041242825505 2.0140883),19,,HCMM,Mogadishu,,Banaadir
+DCG,Asia/Dubai,Dubai Creek SPB,DXB,AE,POINT (55.3116667 25.2644444),88,,"",,,
+TIP,Africa/Tripoli,Tripoli International Airport,TIP,LY,POINT (13.14624729995671 32.6682804),263,,HLLT,Al 'Aziziyah,,Sha`biyat al Jafarah
+TIQ,Pacific/Saipan,Tinian International,TIQ,MP,POINT (145.6183628291265 14.99833865),271,,PGWT,San Jose Village,,Tinian
+TIR,Asia/Kolkata,Tirupati Airport,TIR,IN,POINT (79.54291963437294 13.63291745),350,http://aai.aero/allAirports/tirupati_generalinfo.jsp,VOTP,Renigunta,Chittoor,Andhra Pradesh
+TIU,Pacific/Auckland,Timaru Airport,TIU,NZ,POINT (171.22451732612393 -44.29991735),89,,NZTU,Timaru,Timaru District,Canterbury
+TIV,Europe/Podgorica,Tivat Airport,TIV,ME,POINT (18.724834448309945 42.403729850000005),20,http://www.montenegroairports.com/?menu=3,LYTV,Tivat,,Tivat
+TIX,America/New_York,Space Coast Regional,TIX,US,POINT (-80.7990149 28.5142066),34,,KTIX,Port Saint John,Brevard County,Florida
+DRF,America/Anchorage,Drift River,DRF,US,POINT (-152.1619444 60.5886111),32,,"3AK5",,,
+TIY,Africa/Nouakchott,Tidjikja,TIY,MR,POINT (-11.4290322 18.5670563),1342,,GQND,Tidjikja,,Tagant
+TJH,Asia/Tokyo,Tajima,TJH,JP,POINT (134.78669074842486 35.5126611),584,,RJBT,Toyooka,,Hyogo
+TJK,Europe/Istanbul,Tokat,TJK,TR,POINT (36.3689279948842 40.3085033),1831,,LTAW,Yesilyurt,,Tokat
+MZF,Africa/Johannesburg,Mzamba(Wild Coast Sun),MZF,ZA,POINT (28.5 -32.75),0,,,Butterworth,Amathole District Municipality,Eastern Cape
+TJM,Asia/Yekaterinburg,Roshchino International Airport,TJM,RU,POINT (65.34941663635888 57.1799511),378,,USTR,Moskovskiy,,Tjumen
+MZH,Europe/Istanbul,Merzifon Airport,MZH,TR,POINT (35.533333 40.88333),2129,http://www.merzifon.dhmi.gov.tr/havaalanlari/default.aspx?hv=15,LTAP,Merzifon,,Amasya
+TJN,Pacific/Tahiti,Takume,TJN,PF,POINT (-142.26605624734879 -15.8577838),7,,NTKM,Atuona,,
+TJS,Asia/Makassar,Tanjung Selor,TJS,ID,POINT (117.3740725749155 2.83771095),10,,WALG,Tanjung Palas,,North Kalimantan
+TKF,America/Los_Angeles,Truckee-Tahoe,TKF,US,POINT (-120.13810245135681 39.318085100000005),5900,,KTRK,Truckee,Nevada County,California
+TMA,America/New_York,Henry Tift Myers,TMA,US,POINT (-83.48807854883896 31.426983800000002),355,,KTMA,Unionville,Tift County,Georgia
+MZJ,America/Phoenix,Marana,MZJ,US,POINT (-111.333336 32.516666),1860,,KMZJ,Avra Valley,Pima County,Arizona
+MZK,Pacific/Tarawa,Marakei,MZK,KI,POINT (173.66667 1.983333),0,,NGMK,Rawannawi Village,Marakei,Gilbert Islands
+MZM,Europe/Paris,Frescaty,ETZ,FR,POINT (6.134444 49.0725),567,,LFSF,Marly,Departement de la Moselle,Lorraine
+MZO,America/Havana,Sierra Maestra Airport,MZO,CU,POINT (-77.12889 20.325),173,,MUMZ,Manzanillo,,Granma
+MYA,Australia/Sydney,Moruya Airport,MYA,AU,POINT (150.14704150499173 -35.89351115),13,,YMRY,Broulee,Eurobodalla,New South Wales
+MYD,Africa/Nairobi,Malindi Airport,MYD,KE,POINT (40.10004982828771 -3.2208611),26,http://www.kenyaairports.co.ke/kaa/airports/malindi/,HKML,Malindi,,Kilifi
+MZR,Asia/Kabul,Mazar-I-Sharif Airport,MZR,AF,POINT (67.20849 36.70919),1243,,OAMS,Mazar-e Sharif,,Balkh
+BGZ,Europe/Lisbon,Braga,BGZ,PT,POINT (-8.433333 41.55),531,http://www.pelicano.com.pt/zp_braga.html,LPBR,Braga,Braga,Braga
+BHA,America/Guayaquil,Bahia De Caraquez,BHA,EC,POINT (-80.416664 -0.6),0,,SESV,Bahia de Caraquez,,Manabi
+BHB,America/New_York,Bar Harbor Airport,BHB,US,POINT (-68.361664 44.44889),65,,KBHB,Trenton,Hancock County,Maine
+BHH,Asia/Riyadh,Bisha Airport,BHH,SA,POINT (42.618484 19.994509),3809,,OEBH,Qal`at Bishah,,Mintaqat `Asir
+BHI,America/Argentina/Buenos_Aires,Comandante Airport,BHI,AR,POINT (-62.150555 -38.730556),295,https://www.aeropuertobahiablanca.com/,SAZB,Bahia Blanca,Partido de Bahia Blanca,Buenos Aires
+BHK,Asia/Samarkand,Bukhara Airport,BHK,UZ,POINT (64.48141101391582 39.77495605),751,,UTSB,Bukhara,,Bukhara
+BHO,Asia/Kolkata,Raja Bhoj Airport,BHO,IN,POINT (77.34177 23.284761),1722,http://aai.aero/allAirports/bhopal_generalinfo.jsp,VABP,Bhopal,Bhopal,Madhya Pradesh
+BHS,Australia/Sydney,Raglan Airport,BHS,AU,POINT (149.65518 -33.41387),2440,,YBTH,Kelso,Bathurst Regional,New South Wales
+BHV,Asia/Karachi,Bahawalpur Airport,BHV,PK,POINT (71.683334 29.4),396,,OPBW,Bahawalpur,,Punjab
+BIF,America/Denver,Biggs AAF,ELP,US,POINT (-106.48333 31.75),3733,https://www.bliss.army.mil/biggs/,KBIF,El Paso,El Paso County,Texas
+CSV,America/Chicago,Memorial,CSV,US,POINT (-85.084724 35.95111),1873,http://www.crossvilletn.gov/index.php/departments/airport,KCSV,Crossville,Cumberland County,Tennessee
+CSY,Europe/Moscow,Cheboksary Airport,CSY,RU,POINT (47.266666 56.13333),416,,UWKS,Cheboksary,Cheboksarskiy Rayon,Chuvashia
+CSZ,America/Argentina/Buenos_Aires,Brigadier Hector Ruiz,CSZ,AR,POINT (-61.88333 -37.433334),754,,SAZC,Coronel Suarez,Partido de Coronel Suarez,Buenos Aires
+CTB,America/Denver,Cut Bank,CTB,US,POINT (-112.333336 48.63333),3802,http://www.cutbankairport.org/,KCTB,Cut Bank,Glacier County,Montana
+SVB,Indian/Antananarivo,Sambava,SVB,MG,POINT (50.1766569 -14.2781762),82,,FMNS,,,
+AJR,Europe/Stockholm,Arvidsjaur Airport,AJR,SE,POINT (19.264585907892943 65.5920366),1227,,ESNX,Arvidsjaur,Arvidsjaurs Kommun,Norrbotten
+AJU,America/Maceio,Aracaju Airport,AJU,BR,POINT (-37.07602527743482 -10.98281225),42,https://www4.infraero.gov.br/aeroportos/aeroporto-internacional-santa-maria-aracaju/,SBAR,Aracaju,Aracaju,Sergipe
+AJY,Africa/Niamey,Agades,AJY,NE,POINT (7.997894294413262 16.965223950000002),1637,,DRZA,Agadez,,Agadez
+AMG,Pacific/Port_Moresby,Amboin,AMG,PG,POINT (143.7 -4.616667),183,,,,,
+CTC,America/Argentina/Catamarca,Catamarca Airport,CTC,AR,POINT (-65.779724 -28.448334),1729,,SANC,San Fernando del Valle de Catamarca,,Catamarca
+TMB,America/New_York,Tamiami,MIA,US,POINT (-80.43202039454712 25.6481009),8,http://www.miami-airport.com/kendall_tamiami.asp,KTMB,Country Walk,Miami-Dade County,Florida
+TMD,Africa/Nouakchott,Timbedra,TMD,MR,POINT (-8.1638308 16.2322342),692,,GQNH,Nema,,Hodh ech Chargui
+TMW,Australia/Sydney,Tamworth Airport,TMW,AU,POINT (150.84718743745157 -31.0794991),1334,http://www.tamworth.nsw.gov.au/Council/Council-Enterprises-and-Venues/Tamworth-Regional-Airport/Tamworth-Regional-Airport/defaul,YSTW,Phillip,Tamworth Municipality,New South Wales
+TNS,America/Dawson_Creek,Tungsten,TNS,CA,POINT (-127.666664 62),3500,,CBX5,,,
+LCR,America/Bogota,La Chorrera,LCR,CO,POINT (-73.01667 -0.733333),709,,"",,,
+TNA,Asia/Shanghai,Jinan Yaoqiang International Airport,TNA,CN,POINT (117.21173410272695 36.8572453),76,,ZSJN,Jinan,,Shandong Sheng
+CTD,America/Panama,Chitre,CTD,PA,POINT (-80.40974541912982 7.98858265),36,,MPCE,Chitre,,Herrera
+TNF,Europe/Paris,Toussus-le-noble,TNF,FR,POINT (2.1072688321992112 48.75184575),538,,LFPN,Villiers-le-Bacle,Departement de l'Essonne,Ile-de-France
+TNG,Africa/Casablanca,Tangier Ibn Battouta Airport,TNG,MA,POINT (-5.912942469695661 35.72920725),62,,GMTT,Boukhalef,Tanger-Assilah,Tanger-Tetouan
+TNI,Asia/Kolkata,Satna,TNI,IN,POINT (80.85495554511736 24.561878200000002),1060,,VIST,Satna,Satna,Madhya Pradesh
+TNN,Asia/Taipei,Tainan Airport,TNN,TW,POINT (120.2091711929723 22.95073545),63,http://www.tna.gov.tw/,RCNN,Tainan,Tainan,Taiwan
+YHP,America/Winnipeg,Poplar Hill,YHP,CA,POINT (-94.25558169007094 52.11288365),1095,,CYHP,,,
+CTF,America/Guatemala,Coatepeque Airport,CTF,GT,POINT (-91.916664 14.766667),1318,,MGCT,Nuevo Progreso,,San Marcos
+CTH,America/New_York,Chestercounty Carlson,CTH,US,POINT (-75.833336 39.983334),534,http://www.chestercountyairport.com/,KMQS,Coatesville,Chester County,Pennsylvania
+CTI,Africa/Luanda,Cuito Cuanavale,CTI,AO,POINT (19.155908055237756 -15.15992705),4156,,FNCV,,,
+CTM,America/Cancun,Chetumal Airport,CTM,MX,POINT (-88.33391304736077 18.50736655),36,http://chetumal.asa.gob.mx/wb/webasa/chetumal_aeropuertos,MMCM,Chetumal,,Quintana Roo
+CTN,Australia/Brisbane,Cooktown Airport,CTN,AU,POINT (145.18490998673713 -15.44428915),45,,YCKN,,,
+CTQ,America/Sao_Paulo,Do Palmar,CTQ,BR,POINT (-50.1 -18.85),1476,,SSVP,Santa Vitoria,Santa Vitoria,Minas Gerais
+CTR,Australia/Darwin,Cattle Creek,CTR,AU,POINT (131 -17.583332),675,,YCAC,,,
+CTU,Asia/Shanghai,Chengdu Shuangliu International Airport,CTU,CN,POINT (103.9479446811554 30.554776699999998),1574,http://www.cdairport.com/cdairport/en_front/index.jsp,ZUUU,Dongsheng,,Sichuan
+CTX,America/New_York,Cortland,CTX,US,POINT (-76.2143742 42.5925704),1213,,KN03,Cortland,Cortland County,New York
+CTZ,America/New_York,Sampson County,CTZ,US,POINT (-78.3636912 34.9758159),170,,KCTZ,Clinton,Sampson County,North Carolina
+CUD,Australia/Brisbane,Caloundra,CUD,AU,POINT (153.10787226279018 -26.80301345),26,,YCDR,Dicky Beach,Sunshine Coast,Queensland
+LZI,Africa/Kinshasa,Luozi,LZI,CD,POINT (14 -4.9),695,,FZAL,,,
+BIH,America/Los_Angeles,Bishop,BIH,US,POINT (-118.365 37.373333),4087,http://www.inyocounty.us/Airport/index.html,KBIH,Bishop,Inyo County,California
+BIQ,Europe/Paris,Biarritz - Anglet - Bayonne Airport,BIQ,FR,POINT (-1.531242 43.472416),209,,LFBZ,Anglet,Departement des Pyrenees-Atlantiques,Aquitaine
+BIR,Asia/Kathmandu,Biratnagar Airport,BIR,NP,POINT (87.28333 26.434723),206,,VNVT,Jogbani,,Bihar
+BIT,Asia/Kathmandu,Baitadi,BIT,NP,POINT (80.5 29),3914,,VNBT,Mahendranagar,,Far Western
+BIV,Africa/Bangui,Bria,BIV,CF,POINT (21.9894009 6.5277801),1961,,FEFR,Bria,,Haute-Kotto
+BIX,America/Chicago,Keesler AFB,BIX,US,POINT (-88.91886496725886 30.4094294),39,,KBIX,Biloxi,Harrison County,Mississippi
+BJC,America/Denver,Jeffco,BJC,US,POINT (-105.1071572 39.9121533),5603,,KBJC,Broomfield,Broomfield County,Colorado
+BJJ,America/New_York,Wayne County,BJJ,US,POINT (-81.933334 40.8),935,http://www.woosterwaynecountyairport.com/,KBJJ,Wooster,Wayne County,Ohio
+BJP,America/Sao_Paulo,Braganca Paulista,BJP,BR,POINT (-46.53679706594859 -22.979598199999998),2933,http://www.daesp.sp.gov.br/aeroportos/bragpaulista.htm,SBBP,Braganca Paulista,Braganca Paulista,Sao Paulo
+CUE,America/Guayaquil,Mariscal Lamar International Airport,CUE,EC,POINT (-78.98689 -2.889343),8284,,SECU,Cuenca,,Azuay
+YSF,America/Regina,Stony Rapids,YSF,CA,POINT (-105.84143669997378 59.250382200000004),805,,CYSF,,,
+BLB,America/Panama,Panama Pacifico Airport,BLB,PA,POINT (-79.5575 8.973056),55,http://www.panamapacifico.com/,MPPA,Ancon,Distrito de Panama,Panama
+PDB,America/Anchorage,Pedro Bay,PDB,US,POINT (-154.1298777 59.7962114),32,,"4K0",,,
+BJW,Asia/Makassar,Bajawa Soa Airport,BJW,ID,POINT (120.98333 -8.766667),4209,,WATB,Naru,,East Nusa Tenggara
+TPR,Australia/Perth,Tom Price,TPR,AU,POINT (117.666664 -22.75),2300,,YTMP,,,
+BJZ,Europe/Madrid,Badajoz Airport,BJZ,ES,POINT (-6.82 38.891666),577,http://www.aena.es/csee/Satellite?cid=1047546622728&pagename=subHome&Language=EN_GB&SiteName=BJZ&c=Page,LEBZ,Talavera La Real,Provincia de Badajoz,Extremadura
+BKB,Asia/Kolkata,Bikaner,BKB,IN,POINT (73.3 28.016666),797,,VIBK,Bikaner,Bikaner,Rajasthan
+BKD,America/Chicago,Stephens County,BKD,US,POINT (-98.8921334 32.7183179),1279,,KBKD,Breckenridge,Stephens County,Texas
+TQN,Asia/Kabul,Taluqan,TQN,AF,POINT (69.53020884790408 36.77068975),2606,,OATQ,Taloqan,,Takhar
+TQQ,Asia/Makassar,Maranggo Airport,TQQ,ID,POINT (123.9169998 -5.7645702),169,,WA44,Lasehao,,Sulawesi Tenggara
+YOS,America/Toronto,Billy Bishop Regional,YOS,CA,POINT (-80.8375 44.59028),1007,,CYOS,,,
+BLF,America/New_York,Princeton,BLF,US,POINT (-81.20805 37.295834),2877,,KBLF,Bluefield,Mercer County,West Virginia
+BLG,Asia/Kuching,Belaga,BLG,MY,POINT (113.78333 2.7),239,,WBGC,Data Kakus,,Sarawak
+TRC,America/Monterrey,Francisco Sarabia International Airport,TRC,MX,POINT (-103.40669725858731 25.5618755),3688,,MMTC,Torreon,,Coahuila
+TRD,Europe/Oslo,Trondheim Airport Vaernes,TRD,NO,POINT (10.925133336071024 63.4547661),56,https://avinor.no/en/airport/trondheim-airport/,ENVA,Stjordal,Stjordal,Nord-Trondelag
+TRI,America/New_York,Tri-Cities Regional Airport,TRI,US,POINT (-82.40843268699096 36.47344765),1519,,KTRI,Spurgeon,Washington County,Tennessee
+TRJ,Pacific/Port_Moresby,Tarakbits,TRJ,PG,POINT (141.04277651555867 -5.61427505),281,,AYTT,Mindiptana,,Papua
+TRN,Europe/Rome,Turin Airport,TRN,IT,POINT (7.648975075273562 45.20096875),989,http://www.aeroportoditorino.it/,LIMF,Caselle Torinese,Provincia di Torino,Piedmont
+TRO,Australia/Sydney,Taree Airport,TRO,AU,POINT (152.51309188792249 -31.8877679),38,,YTRE,Cundletown,Greater Taree,New South Wales
+TRR,Asia/Colombo,China Bay,TRR,LK,POINT (81.182420993587 8.5387065),6,,VCCT,Trincomalee,,Eastern Province
+BLM,America/New_York,Monmouth Executive Airport,BLM,US,POINT (-74.01667 40.183334),16,,KBLM,Belmar,Monmouth County,New Jersey
+BKE,America/Los_Angeles,Baker,BKE,US,POINT (-117.81 44.838333),3353,http://www.bakeraircraft.com/,KBKE,Baker City,Baker County,Oregon
+BLN,Australia/Melbourne,Benalla,BLN,AU,POINT (146.0099132208781 -36.55227455),528,,YBLA,Benalla,Benalla,Victoria
+YUT,America/Rankin_Inlet,Repulse Bay,YUT,CA,POINT (-86.22324769512323 66.51897095000001),80,,CYUT,,,
+BLP,America/Lima,Bellavista,BLP,PE,POINT (-69.416664 -16.583332),12824,,SPBL,Kelluyo,Provincia de Chucuito,Puno
+CUH,America/Chicago,Municipal,CUH,US,POINT (-96.76667 35.983334),935,,KCUH,Cushing,Payne County,Oklahoma
+AMI,Asia/Makassar,Selaparang,AMI,ID,POINT (116.10222973992147 -8.5618359),59,,WADA,Mataram,,West Nusa Tenggara
+AMM,Asia/Amman,Queen Alia International Airport,AMM,JO,POINT (35.995440207589255 31.7241013),2332,,OJAI,Al Jizah,,Amman
+AMQ,Asia/Jayapura,Pattimura Airport,AMQ,ID,POINT (128.0878877356375 -3.7111152499999998),49,,WAPP,Amahusu,,Maluku
+AMV,Europe/Moscow,Amderma,AMV,RU,POINT (61.56749323781253 69.7634173),13,,ULDD,Vorgashor,,Komi Republic
+AOM,Asia/Muscat,Adam Airport,AOM,OM,POINT (57.391548733956796 22.489809549999997),1049,,OOAD,,,
+AON,Pacific/Port_Moresby,Arona,AON,PG,POINT (146 -6.333333),4481,,,,,
+KLI,Africa/Kinshasa,Kota Koli,KLI,CD,POINT (21.75 -4.166667),1801,,FZFP,,,
+BKX,America/Chicago,Brookings,BKX,US,POINT (-96.81111 44.303333),1601,,KBKX,Brookings,Brookings County,South Dakota
+BKY,Africa/Lubumbashi,Kavumu,BKY,CD,POINT (28.8101889 -2.3173469),5587,,FZMA,Bukavu,,South Kivu
+CVN,America/Denver,Clovis Municipal Airport,CVN,US,POINT (-103.07970767542656 34.42584135),4179,,KCVN,Texico,Curry County,New Mexico
+CVO,America/Los_Angeles,Albany,CVO,US,POINT (-123.11667 44.63333),249,http://www.corvallisoregon.gov/index.aspx?page=160,KCVO,Albany,Linn County,Oregon
+MXM,Indian/Antananarivo,Morombe,MXM,MG,POINT (43.3749412 -21.7506079),9,,FMSR,,,
+MYJ,Asia/Tokyo,Matsuyama Airport,MYJ,JP,POINT (132.70132648377265 33.8273145),22,,RJOM,Masaki-cho,,Ehime
+MYN,Asia/Aden,Mareb,MYN,YE,POINT (45.327565134941565 15.4699433),3562,,OYMB,Ma'rib,Marib City,Ma'rib
+MYR,America/New_York,Myrtle Beach International Airport,MYR,US,POINT (-78.92905970872894 33.680640600000004),26,,KMYR,Myrtle Beach,Horry County,South Carolina
+MYV,America/Los_Angeles,Yuba County,MYV,US,POINT (-121.56944 39.097808),55,http://www.yubacoairport.com/,KMYV,Olivehurst,Yuba County,California
+MYW,Africa/Dar_es_Salaam,Mtwara Airport,MYW,TZ,POINT (40.18186245490989 -10.3405152),328,,HTMT,Mtwara,,Mtwara
+MYY,Asia/Kuching,Miri Airport,MYY,MY,POINT (113.98544397749288 4.3215074),49,,WBGR,Miri,,Sarawak
+MZB,Africa/Maputo,Mocimboa Praia,MZB,MZ,POINT (40.35453769211479 -11.36164025),55,,FQMP,Mocimboa,,Cabo Delgado
+MZI,Africa/Bamako,Mopti,MZI,ML,POINT (-4.081330665551572 14.51106525),895,,GAMB,Mopti,,Mopti
+MZL,America/Bogota,La Nubia Airport,MZL,CO,POINT (-75.46408383207245 5.029571949999999),6896,,SKMZ,Villamaria,,Caldas
+MZP,Pacific/Auckland,Motueka,MZP,NZ,POINT (172.9928770913604 -41.1204993),16,,NZMK,Motueka,Tasman District,Tasman
+MZQ,Africa/Johannesburg,Mkuze,MZQ,ZA,POINT (32.04476997862645 -27.6262192),439,,FAMU,Mkuze,uMkhanyakude District Municipality,KwaZulu-Natal
+ANF,America/Santiago,Cerro Moreno International Airport,ANF,CL,POINT (-70.43973434352753 -23.452375699999997),347,,SCFA,Antofagasta,Provincia de Antofagasta,Antofagasta
+BLQ,Europe/Rome,Guglielmo Marconi Airport,BLQ,IT,POINT (11.293289 44.529266),157,http://www.bologna-airport.it/?LN=UK,LIPE,Trebbo,Provincia di Bologna,Emilia-Romagna
+SZK,Africa/Johannesburg,Skukuza Airport,SZK,ZA,POINT (31.589971351596645 -24.9611745),1020,,FASZ,,,
+ANK,Europe/Istanbul,Etimesgut,ANK,TR,POINT (32.68941441008361 39.951794199999995),2627,,LTAD,Batikent,,Ankara
+NAT,America/Fortaleza,Sao Goncalo do Amarante-Governador Aluizio Alves Intl Airport,NAT,BR,POINT (-35.250244 -5.916787),190,http://www.natal.aero,SBSG,Parnamirim,Parnamirim,Rio Grande do Norte
+NIS,Pacific/Port_Moresby,Simberi,NIS,PG,POINT (151.99549443410396 -2.6615375500000003),26,,AYSE,,,
+ANS,America/Lima,Andahuaylas,ANS,PE,POINT (-73.35160446460571 -13.709079),11581,,SPHY,San Jeronimo,Provincia de Andahuaylas,Apurimac
+BLU,America/Los_Angeles,Blue Canyon,BLU,US,POINT (-120.7095717681865 39.2743038),5236,,KBLU,Foresthill,Placer County,California
+BLV,America/Chicago,Belleville,BLV,US,POINT (-89.85183 38.65178),456,,KBLV,Lebanon,Saint Clair County,Illinois
+BLX,Europe/Rome,Belluno,BLX,IT,POINT (12.248944084253242 46.1663423),1217,http://www.aeroclubbelluno.org/,LIDB,Belluno,Provincia di Belluno,Veneto
+ANX,Europe/Oslo,Andenes Airport,ANX,NO,POINT (16.13968094661204 69.29132535),26,https://avinor.no/en/airport/andoya-airport/,ENAN,Andenes,Andoy,Nordland
+NAV,Europe/Istanbul,Nevsehir,NAV,TR,POINT (34.716667 38.63333),3848,,LTAZ,Nevsehir,,Nevsehir
+NBA,Pacific/Port_Moresby,Nambaiyufa,NBA,PG,POINT (145.23334 -6.25),6482,,AYNY,Goroka,,Eastern Highlands
+NBG,America/Chicago,NAS/Alvin Callendar,MSY,US,POINT (-90.03333 29.833332),39,,KNBG,Timberlane,Jefferson Parish,Louisiana
+AOI,Europe/Rome,Ancona Falconara Airport,AOI,IT,POINT (13.364858030368092 43.61716225),39,http://www.aeroportomarche.com/index.php?lang=english,LIPY,Falconara Marittima,Provincia di Ancona,The Marches
+ARQ,America/Caracas,Arauquita,ARQ,CO,POINT (-71.43166 7.033056),508,,SKAT,Arauquita,,Arauca
+ASZ,Pacific/Port_Moresby,Asirim,ASZ,PG,POINT (150.36667 -5.866667),1108,,"",,,
+NBL,America/Panama,San Blas,NBL,PA,POINT (-79 9.3),1597,,MPWN,El Progreso,,Panama
+BDV,Africa/Lubumbashi,Moba,BDV,CD,POINT (29.8 -7),2536,,FZRB,Karema,,Katavi
+YWS,America/Vancouver,Whistler,YWS,CA,POINT (-122.9568519 50.1169003),2100,,CAE5,,,
+BLY,Europe/Dublin,Belmullet,BLY,IE,POINT (-10.03096880030081 54.2227106),101,,EIBT,Belmullet,Maigh Eo,Connaught
+KLY,Africa/Lubumbashi,Kalima,KLY,CD,POINT (26.533333 -2.55),1808,,FZOD,,,
+MZT,America/Mazatlan,Mazatlan International Airport,MZT,MX,POINT (-106.26951604534133 23.16484775),19,,MMMZ,Villa Union,,Sinaloa
+NAD,America/Bogota,Macanal,NAD,CO,POINT (-67.583333 2.566667),301,,"",Maroa,Municipio Autonomo Maroa,Amazonas
+NBU,America/Chicago,NAS,NBU,US,POINT (-107.316666 39.55),6023,,,Glenwood Springs,Garfield County,Colorado
+NBV,America/Sao_Paulo,Cana Brava,NBV,BR,POINT (-45.86667 -17.383333),1722,,,Joao Pinheiro,Joao Pinheiro,Minas Gerais
+BMG,America/Indiana/Indianapolis,Bloomington,BMG,US,POINT (-86.61472 39.14),784,,KBMG,Bloomington,Monroe County,Indiana
+BMN,Asia/Baghdad,Bamerny,BMN,IQ,POINT (43.266666 37.1),3431,,ORBB,Al `Amadiyah,,Dahuk
+NBW,America/Havana,Guantanamo NAS,GAO,CU,POINT (-75.23333 20.166668),232,,MUGM,Guantanamo,Municipio de Guantanamo,Guantanamo
+NAE,Africa/Porto-Novo,Natitingou,NAE,BJ,POINT (1.3599760824345344 10.37708265),1417,,DBBN,Natitingou,,Atakora
+BMR,Europe/Berlin,Baltrum,BMR,DE,POINT (7.3732427 53.7248567),22,,EDWZ,Baltrum,,Lower Saxony
+BMS,America/Bahia,Brumado,BMS,BR,POINT (-41.63333 -14.233333),1361,,SSXH,Brumado,Brumado,Bahia
+BMU,Asia/Makassar,Sultan Muhammad Salahuddin Airport,BMU,ID,POINT (118.916664 -8.5),3795,,WADB,Melati,,West Nusa Tenggara
+NAG,Asia/Kolkata,Dr. Babasaheb Ambedkar International Airport,NAG,IN,POINT (79.04602785205705 21.089577849999998),971,http://aai.aero/allAirports/nagpur1_generalinfo.jsp,VANP,Nagpur,Nagpur Division,Maharashtra
+DOO,Pacific/Port_Moresby,Dorobisoro,DOO,PG,POINT (147.55 -9.266667),2247,,AYDR,,,
+EKT,Europe/Stockholm,Eskilstuna,EKT,SE,POINT (16.533333 59.36667),39,,ESSU,,,
+NAJ,Asia/Baku,Nakhichevan Airport,NAJ,AZ,POINT (45.456902448435805 39.1868399),2814,,UBBN,Tazakend,,Nakhichevan
+NCG,America/Chihuahua,Nueva Casas Grandes,NCG,MX,POINT (-107.916664 30.416668),4763,,MMCG,Nuevo Casas Grandes,Nuevo Casas Grandes,Chihuahua
+NAP,Europe/Rome,Naples International Airport,NAP,IT,POINT (14.284479528610618 40.8839923),252,http://www.portal.gesac.it/,LIRN,Casavatore,Provincia di Napoli,Campania
+AOT,Europe/Rome,Corrado Gex,AOT,IT,POINT (7.368228953356795 45.738779),1774,http://www.avda-aosta.it/,LIMW,Chef-Lieu,Valle d'Aosta,Aosta Valley
+YYQ,America/Winnipeg,Churchill Airport,YYQ,CA,POINT (-94.075267 58.7483682),94,,CYYQ,,,
+TSF,Europe/Rome,Treviso Airport,VCE,IT,POINT (12.196684766859011 45.6490897),59,http://www.trevisoairport.it/tsf/index.jsp?_requestid=677517&language=en,LIPH,Treviso,Provincia di Treviso,Veneto
+BNP,Asia/Karachi,Bannu,BNP,PK,POINT (70.666664 33),1122,,OPBN,Bannu,,Khyber Pakhtunkhwa
+TSJ,Asia/Tokyo,Tsushima Airport,TSJ,JP,POINT (129.3313529 34.284574),213,,RJDT,Busan,,Busan
+TSR,Europe/Bucharest,Timisoara Traian Vuia International Airport,TSR,RO,POINT (21.33283281275959 45.809854400000006),348,http://www.aerotim.ro/,LRTR,Giarmata-Vii,Comuna Ghiroda,Timis
+TST,Asia/Bangkok,Trang Airport,TST,TH,POINT (99.615389 7.5113368),67,,VTST,Trang,,Trang
+BNU,America/Sao_Paulo,Blumenau,BNU,BR,POINT (-49 -27),1289,,SSBL,Gaspar,Gaspar,Santa Catarina
+APC,America/Los_Angeles,Napa County,APC,US,POINT (-122.27657132954653 38.216488),32,http://www.napacountyairport.org/,KAPC,American Canyon,Napa County,California
+APF,America/New_York,Naples Municipal Airport,APF,US,POINT (-81.773941382464 26.1523225),29,,KAPF,Naples,Collier County,Florida
+API,America/Bogota,Apiay,API,CO,POINT (-73.051903 4.06889),580,,SKAP,Puerto Lopez,,Meta
+APN,America/Detroit,Alpena County Regional Airport,APN,US,POINT (-83.5665547651746 45.07017615),708,,KAPN,Alpena,Alpena County,Michigan
+AVU,Pacific/Guadalcanal,Avu Avu,AVU,SB,POINT (160.38333 -9.833333),95,,AGGJ,,,
+BNC,Africa/Lubumbashi,Beni,BNC,CD,POINT (29.466667 0.566667),3408,,FZNP,,,
+NDY,Europe/London,Sanday,NDY,GB,POINT (-2.5752648917172283 59.2504586),19,,EGES,,,
+BNE,Australia/Brisbane,Brisbane Airport,BNE,AU,POINT (153.1214764569645 -27.3874138),19,http://www.bne.com.au/,YBBN,Ascot,Brisbane,Queensland
+BNG,America/Los_Angeles,Banning,BNG,US,POINT (-116.85052999055571 33.9231279),2152,http://www.ci.banning.ca.us/index.aspx?NID=23,KBNG,Banning,Riverside County,California
+NWA,Indian/Comoro,Moheli,NWA,KM,POINT (43.76644801260554 -12.2981305),45,,FMCI,Djoyezi,,Moheli
+REZ,America/Sao_Paulo,Resende,REZ,BR,POINT (-44.47716871796958 -22.47720015),1315,,SDRS,Resende,Resende,Rio de Janeiro
+BNW,America/Chicago,Boone,BNW,US,POINT (-93.88333 42.066666),1158,,KBNW,Boone,Boone County,Iowa
+BOD,Europe/Paris,Bordeaux Airport,BOD,FR,POINT (-0.70217 44.83102),226,https://www.bordeaux.aeroport.fr/,LFBD,Le Haillan,Departement de la Gironde,Aquitaine
+NAW,Asia/Bangkok,Narathiwat Airport,NAW,TH,POINT (101.7408213492347 6.513813799999999),26,,VTSC,Bacho,,Narathiwat
+PIW,America/Winnipeg,Pikwitonei,PIW,CA,POINT (-97.333336 55.7),708,,CZMN,,,
+TTS,Indian/Antananarivo,Tsaratanana,TTS,MG,POINT (47.6170006 -16.75),1073,,FMNT,,,
+BOI,America/Boise,Boise Air Terminal (Gowen Field),BOI,US,POINT (-116.22193 43.569263),2860,http://www.cityofboise.org/departments/airport/,KBOI,Boise,Ada County,Idaho
+BOJ,Europe/Sofia,Bourgas Airport,BOJ,BG,POINT (27.283333 42.416668),22,,LBBG,Sredets,Obshtina Sredets,Burgas
+BOL,Europe/London,Ballykelly,BOL,GB,POINT (-7 55),636,,,Ballykelly,,Northern Ireland
+BON,America/Kralendijk,Flamingo International Airport,BON,BQ,POINT (-68.27687 12.133403),55,,TNCB,Dorp Tera Kora,,Bonaire
+BOU,Europe/Paris,Bourges,BOU,FR,POINT (2.416667 47.15),508,,LFLD,Fussy,Departement du Cher,Centre
+AOO,America/New_York,Altoona Airport,AOO,US,POINT (-78.32117438468744 40.29686675),1469,,KAOO,Martinsburg,Blair County,Pennsylvania
+AOP,America/Lima,Alferez FAP Alfredo Vladimir Sara Bauer Airport,AOP,PE,POINT (-76.46820104326608 -2.7952148),702,,SPAS,Alianza Cristiana,Datem Del Maranon,Loreto
+AOR,Asia/Kuala_Lumpur,Sultan Abdul Halim Airport,AOR,MY,POINT (100.39721450708868 6.1893478),19,,WMKA,Jitra,,Kedah
+CVQ,Australia/Perth,Carnarvon Airport,CVQ,AU,POINT (113.66358 -24.883429),32,,YCAR,,,
+CVR,America/Los_Angeles,Hughes,CVR,US,POINT (-118.417 33.975),26,,,Marina del Rey,Los Angeles County,California
+CVS,America/Denver,Cannon AFB,CVN,US,POINT (-103.320967 34.382445),4251,http://www.cannon.af.mil/,KCVS,Cannon Air Force Base,Curry County,New Mexico
+CVT,Europe/London,Coventry Airport,CVT,GB,POINT (-1.481289537442902 52.3699147),203,http://www.coventryairport.co.uk/,EGBE,Ryton on Dunsmore,Warwickshire,England
+GKA,Pacific/Port_Moresby,Goroka Airport,GKA,PG,POINT (145.3931772174625 -6.07511755),5275,,AYGA,,,
+NAY,Asia/Shanghai,Beijing Nanyuan Airport,BJS,CN,POINT (116.38767501732069 39.78215945),82,,ZBNY,Nanyuan,,Beijing
+NBC,Europe/Moscow,Begishevo Airport,NBC,RU,POINT (52.099212776880876 55.565541499999995),633,,UWKE,Yelabuga,,Tatarstan
+NBE,Africa/Tunis,Enfidha - Hammamet International Airport,NBE,TN,POINT (10.435925349519707 36.07817805),42,http://www.enfidhahammametairport.com/,DTNH,Harqalah,,Susah
+NBN,Africa/Malabo,Annobón,NBN,GQ,POINT (5.62510323839779 -1.407638),0,,FGAB,Pale,,Annobon
+NDM,Africa/Addis_Ababa,Mendi,NDM,ET,POINT (35.083332 9.816667),5400,,HAMN,Mendi,,Oromiya
+NDO,Europe/Madrid,La Palma Del Condado,NDO,ES,POINT (-6.583333 37.38333),259,,,Villarrasa,Provincia de Huelva,Andalusia
+NEC,America/Argentina/Buenos_Aires,Necochea,NEC,AR,POINT (-58.75 -38.566666),26,,SAZO,Necochea,,Buenos Aires
+NEJ,Africa/Addis_Ababa,Nejjo,NEJ,ET,POINT (35.466667 9.5),6236,,HANJ,Nejo,,Oromiya
+NEL,America/New_York,Naec,NEL,US,POINT (-74.316666 40.016666),98,,KNEL,Lakehurst,Ocean County,New Jersey
+NEN,America/New_York,Olf Usn,NEN,US,POINT (-81.85 30.316668),82,,KNEN,Baldwin,Duval County,Florida
+NER,Asia/Yakutsk,Neryungri Airport,NER,RU,POINT (124.6 56.65),2352,,UELL,Neryungri,,Sakha
+NCH,Africa/Dar_es_Salaam,Nachingwea,NCH,TZ,POINT (38.7792015 -10.3575001),1450,,HTNA,Nachingwea,,Lindi
+GAB,America/Los_Angeles,Gabbs,GAB,US,POINT (-117.916664 38.86667),4812,,KGAB,,,
+NEV,America/St_Kitts,Newcastle Airport,NEV,KN,POINT (-62.5925 17.205),22,,TKPN,Newcastle,,Saint James Windwa
+AKE,Africa/Libreville,Akieni,AKE,GA,POINT (13.9035997 -1.13967),1354,,FOGA,,,
+AMC,Africa/Ndjamena,Am Timan,AMC,TD,POINT (20.274701290842827 11.0350134),1456,,FTTN,Am Timan,,Salamat
+ARA,America/Chicago,Acadiana Regional,ARA,US,POINT (-91.88190742881199 30.033018249999998),26,http://www.flyiberiaparish.com/,KARA,Cade,Saint Martin Parish,Louisiana
+TWY,Pacific/Port_Moresby,Tawa,TWY,PG,POINT (146.06667 -7.266667),5020,,AYTW,,,
+ARH,Europe/Moscow,Talagi Airport,ARH,RU,POINT (40.71860470831429 64.599209),32,,ULAA,Arkhangel'sk,,Arkhangelskaya
+ARM,Australia/Sydney,Armidale Airport,ARM,AU,POINT (151.6156495208327 -30.528625599999998),3533,,YARM,Armidale,Armidale Dumaresq,New South Wales
+ARN,Europe/Stockholm,Stockholm Arlanda Airport,STO,SE,POINT (17.937044334194475 59.6467921),88,http://www.swedavia.se/arlanda/,ESSA,Marsta,Sigtuna Kommun,Stockholm
+ARS,America/Sao_Paulo,Aragarcas,ARS,BR,POINT (-52.2411003 -15.8993998),1033,,SJVO,Aragarcas,Aragarcas,Goias
+ARU,America/Sao_Paulo,Aracatuba Airport,ARU,BR,POINT (-50.425139094792286 -21.140815),1341,http://www.daesp.sp.gov.br/aeroporto-estadual-de-aracatuba-dario-guarita/,SBAU,Aracatuba,Aracatuba,Sao Paulo
+ARY,Australia/Melbourne,Ararat,ARY,AU,POINT (142.9942951850989 -37.31213875),1010,,YARA,Ararat,Ararat,Victoria
+ASB,Asia/Ashgabat,Ashgabat Airport,ASB,TM,POINT (58.36266734224667 37.9837541),669,,UTAA,Ashgabat,,Ahal
+BCS,America/Chicago,Southern Seaplane,BCS,US,POINT (-90 29.966667),22,http://southernseaplane.com/cms/?page_id=460,"65LA",,,
+BCW,Africa/Maputo,Benguera Island,BCW,MZ,POINT (35.425 -21.884722),52,,"",,,
+TSV,Australia/Brisbane,Townsville Airport,TSV,AU,POINT (146.77447438460155 -19.2518982),18,http://www.townsvilleairport.com.au/,YBTL,Townsville,Townsville,Queensland
+NEW,America/Chicago,Lakefront Airport,MSY,US,POINT (-90.026665 30.039444),36,http://www.lakefrontairport.com/,KNEW,Arabi,Saint Bernard Parish,Louisiana
+BOW,America/New_York,Bartow,BOW,US,POINT (-81.833336 27.9),72,http://www.bartow-airport.com/,KBOW,Bartow,Polk County,Florida
+NFB,America/Detroit,Detroit NAF,MTC,US,POINT (-82.96667 42.966667),764,,,Capac,Saint Clair County,Michigan
+AYD,Australia/Darwin,Alroy Downs,AYD,AU,POINT (135.95 -19.3),688,,"",,,
+BPI,America/Denver,Big Piney-marbleton,BPI,US,POINT (-110.11667 42.533333),6824,,KBPI,Marbleton,Sublette County,Wyoming
+BPL,Asia/Shanghai,Bole Airport,BPL,CN,POINT (82.024185 44.904232),1745,,ZWBL,Dostyq,,Almaty Oblysy
+NFG,Asia/Yekaterinburg,Nefteyugansk,NFG,RU,POINT (73.05 61.13333),134,http://www.nuatc.ru/,USRN,Barsovo,,Khanty-Mansiyskiy Avtonomnyy Okrug
+BPN,Asia/Makassar,Sultan Aji Muhamad Sulaiman Airport,BPN,ID,POINT (116.90082 -1.260623),32,http://sepinggan-airport.com/,WALL,City of Balikpapan,,East Kalimantan
+BPT,America/Chicago,Jefferson County Airport,BPT,US,POINT (-94.02 29.950832),22,,KBPT,Nederland,Jefferson County,Texas
+BPU,Asia/Tokyo,Beppu,BPU,JP,POINT (131.5 33.25),1108,,,Beppu,,Oita
+BQA,Asia/Manila,Baler,BQA,PH,POINT (121.083336 15),590,,RPUR,Dona Remedios Trinidad,Province of Bulacan,Central Luzon
+BQH,Europe/London,Biggin Hill,LON,GB,POINT (0.033333 51.333332),534,http://www.bigginhillairport.com/,EGKB,Biggin Hill,Kent,England
+BQJ,Asia/Vladivostok,Batagay,BQJ,RU,POINT (134.7024567631587 67.6462041),672,,UEBB,Batagay,,Sakha
+NFL,America/Los_Angeles,NAS,NFL,US,POINT (-118.78333 39.466667),3943,http://www.cnic.navy.mil/regions/cnrsw/installations/nas_fallon.html,KNFL,Fallon,Churchill County,Nevada
+NCJ,America/Argentina/Cordoba,Sunchales,NCJ,AR,POINT (-61.52191391963284 -30.9580775),255,,SAFS,Sunchales,,Santa Fe
+NCL,Europe/London,Newcastle International Airport,NCL,GB,POINT (-1.6963959878830515 55.038420099999996),285,http://www.newcastleairport.com/,EGNT,Ponteland,Northumberland,England
+NCU,Asia/Samarkand,Nukus Airport,NCU,UZ,POINT (59.6222565729817 42.48952825),200,,UTNN,Nukus,,Karakalpakstan
+NDA,Asia/Jayapura,Bandanaira,NDA,ID,POINT (129.90469326134422 -4.52135885),52,,WAPC,Werinama,,Maluku
+NDC,Asia/Kolkata,Nanded,NDC,IN,POINT (77.3229711209002 19.181789000000002),1220,,VAND,Nanded,Nanded,Maharashtra
+NDJ,Africa/Ndjamena,Ndjamena Airport,NDJ,TD,POINT (15.034851035991199 12.1360288),958,,FTTJ,N'Djamena,,Chari-Baguirmi
+NDR,Africa/Casablanca,Nador International Airport,NDR,MA,POINT (-3.036671157151174 34.9876917),577,,GMMW,Selouane,Nador,Oriental
+LVD,America/Anchorage,Lime Village,LVD,US,POINT (-155.4402778 61.3583333),524,,"2AK",,,
+ATQ,Asia/Kolkata,Sri Guru Ram Dass Jee International Airport,ATQ,IN,POINT (74.80044741056383 31.70858515),738,http://www.aai.aero/allAirports/amritsar_generalinfo.jsp,VIAR,Raja Sansi,Amritsar,Punjab
+ZQS,America/Vancouver,Queen Charlotte Island,ZQS,CA,POINT (-132 53),0,,,,,
+ATS,America/Denver,Artesia,ATS,US,POINT (-104.46641082535339 32.8525152),3520,,KATS,Artesia,Eddy County,New Mexico
+ATV,Africa/Ndjamena,Ati,ATV,TD,POINT (18.315420558725343 13.2398308),1059,,FTTI,Ati,,Batha
+ATW,America/Chicago,Outagamie County Regional Airport,ATW,US,POINT (-88.52169598755702 44.25659495),859,http://atwairport.com/,KATW,Menasha,Winnebago County,Wisconsin
+ATY,America/Chicago,Watertown Airport,ATY,US,POINT (-97.14845996679145 44.912617499999996),1722,,KATY,Watertown,Codington County,South Dakota
+BLC,Africa/Douala,Bamenda,BLC,CM,POINT (10.031667 5.897222),4475,,FKKG,,,
+AUC,America/Bogota,Arauca Airport,AUC,CO,POINT (-70.73450090889622 7.06803755),390,,SKUC,Arauca,,Arauca
+AUF,Europe/Paris,Auxerre Branches,AUF,FR,POINT (3.498388157178659 47.849895599999996),469,,LFLA,Appoigny,Departement de l'Yonne,Bourgogne
+AUL,Pacific/Majuro,Aur Island,AUL,MH,POINT (171.1730042 8.1452799),55,,"",Aur,,Aur Atoll
+AUS,America/Chicago,Austin-Bergstrom International Airport,AUS,US,POINT (-97.66500963529677 30.19348925),505,http://www.ci.austin.tx.us/austinairport/,KAUS,Hornsby Bend,Travis County,Texas
+BLZ,Africa/Blantyre,Chileka Airport,BLZ,MW,POINT (34.96706138417294 -15.676075449999999),2483,,FWCL,,,
+BRC,America/Argentina/Salta,San Carlos de Bariloche International Airport,BRC,AR,POINT (-71.16109 -41.145966),2788,http://www.aa2000.com.ar/bariloche,SAZS,San Carlos de Bariloche,Departamento de Bariloche,Rio Negro
+AVB,Europe/Rome,Aviano,AVB,IT,POINT (12.602047622830732 46.03136845),354,http://www.aviano.af.mil/,LIPA,Roveredo in Piano,Provincia di Pordenone,Friuli Venezia Giulia
+BRF,Europe/London,Bradford,LBA,GB,POINT (-1.75 53.8),301,,,Bradford,Bradford,England
+AVL,America/New_York,Asheville Regional Airport,AVL,US,POINT (-82.54088095049624 35.4364233),2119,,KAVL,Fletcher,Henderson County,North Carolina
+AYK,Asia/Qyzylorda,Arkalyk,AYK,KZ,POINT (66.94696204582102 50.3151662),1259,,UAUR,Arkalyk,,Qostanay
+NDU,Africa/Windhoek,Rundu,NDU,NA,POINT (19.728350667774258 -17.95681845),3559,,FYRU,Rundu,,Kavango East
+BDT,Africa/Kinshasa,Gbadolite,BDT,CD,POINT (22.45 4.083333),1318,,FZFD,Ouango,,Mbomou
+BRG,America/New_York,Municipal,BRG,US,POINT (-82.833336 37.11667),1220,,,Whitesburg,Letcher County,Kentucky
+BRI,Europe/Rome,Palese Airport,BRI,IT,POINT (16.7656 41.1534),88,http://www.seap-puglia.it/default.asp?idlingua=2&idcontenuto=25,LIBD,San Paolo,Provincia di Bari,Apulia
+BRL,America/Chicago,Burlington Airport,BRL,US,POINT (-91.12334 40.78611),702,,KBRL,Burlington,Des Moines County,Iowa
+BRO,America/Chicago,South Padre Island International Airport,BRO,US,POINT (-97.42333 25.90889),36,,KBRO,South Point,Cameron County,Texas
+BRX,America/Santo_Domingo,Barahona,BRX,DO,POINT (-71.12337032088251 18.25182335),29,,MDBH,Santa Cruz de Barahona,,Barahona
+BRY,America/New_York,Samuels Field,BRY,US,POINT (-85.49825864015378 37.81677845),639,http://www.cityofbardstown.org/dept-airport.html,KBRY,Bardstown,Nelson County,Kentucky
+BSC,America/Bogota,Bahia Solano,BSC,CO,POINT (-77.39524354740603 6.2030693),68,,SKBS,Mutis,,Choco
+BSF,Pacific/Honolulu,Bradshaw AAF,BSF,US,POINT (-157.75 21.383333),118,,PHSF,Kailua,Honolulu County,Hawaii
+BSH,Europe/London,Brighton,BSH,GB,POINT (-0.116667 50.816666),88,,,Brighton,Brighton and Hove,England
+FLH,Europe/London,Flotta,FLH,GB,POINT (-3 58.5),0,,EGZR,,,
+GAZ,Pacific/Port_Moresby,Guasopa,GAZ,PG,POINT (152.94485816263781 -9.22622835),29,,AYGJ,,,
+IDH,America/Los_Angeles,Idaho County,IDH,US,POINT (-116.12396495087752 45.9408437),3310,http://idahocountyairport.com/,KGIC,Grangeville,Idaho County,Idaho
+NEA,America/New_York,Brunswick Golden Isles,NEA,US,POINT (-81.4639706620112 31.259811),39,,,Country Club Estates,Glynn County,Georgia
+NEF,Asia/Yekaterinburg,Neftekamsk,NEF,RU,POINT (54.35040539230218 56.11364845),419,,UWUF,Neftekamsk,,Bashkortostan
+PPV,America/Anchorage,Port Protection,PPV,US,POINT (-133.61 56.3286111),0,,"19P",,,
+SJP,America/Sao_Paulo,Sao Jose do Rio Preto Airport,SJP,BR,POINT (-49.408467700474546 -20.81731545),1755,,SBSR,Sao Jose do Rio Preto,Sao Jose Do Rio Preto,Sao Paulo
+SJU,America/Puerto_Rico,Luis Munoz Marin International Airport,SJU,PR,POINT (-65.99743036847468 18.44319945),36,,TJSJ,Carolina,,Carolina
+SLO,America/Chicago,Leckrone,SLO,US,POINT (-88.96442418337155 38.6404024),488,http://www.salem-leckronefield.com/,KSLO,Salem,Marion County,Illinois
+AXE,America/Sao_Paulo,Xanxere,AXE,BR,POINT (-52.37339732495896 -26.8749455),2929,,SSXX,Xanxere,Xanxere,Santa Catarina
+AXJ,Asia/Tokyo,Amakusa,AXJ,JP,POINT (130.15846001265027 32.4822166),298,,RJDA,Hondo,,Kumamoto
+SLP,America/Mexico_City,San Luis Potosi Airport,SLP,MX,POINT (-100.93678970603378 22.260231349999998),6043,,MMSP,Fraccion Milpillas,San Luis Potosi,San Luis Potosi
+AXT,Asia/Tokyo,Akita Airport,AXT,JP,POINT (140.21935028858 39.614616),285,,RJSK,Akita,,Akita
+AXX,America/Denver,Angel Fire,AXX,US,POINT (-105.2910646 36.4202498),8362,,KAXX,Angel Fire,Colfax County,New Mexico
+AYC,America/Bogota,Ayacucho,AYC,CO,POINT (-73.6131384 8.6021333),393,,"",Pelaya,,Cesar
+SXQ,America/Anchorage,Soldotna,SXQ,US,POINT (-151.0380556 60.4747222),75,,PASX,Soldotna,Kenai Peninsula Borough,Alaska
+AYO,America/Asuncion,Ayolas,AYO,PY,POINT (-56.854144310497006 -27.36826105),206,,SGAY,Ayolas,,Misiones
+BSI,America/New_York,Blairsville,BSI,US,POINT (-79.28333 40.45),1023,,RPLE,Blairsville,Indiana County,Pennsylvania
+AYR,Australia/Brisbane,Ayr,AYR,AU,POINT (147.3270922 -19.5942228),59,,YAYR,Ayr,Burdekin,Queensland
+AYS,America/New_York,Ware County,AYS,US,POINT (-82.39377481016464 31.24847785),177,,KAYS,Deenwood,Ware County,Georgia
+AYT,Europe/Istanbul,Antalya Airport,AYT,TR,POINT (30.798191449837162 36.89994245),137,http://www.antalya.dhmi.gov.tr/havaalanlari/default.aspx?hv=4,LTAI,Aksu,,Antalya
+MDU,Pacific/Port_Moresby,Mendi Airport,MDU,PG,POINT (143.65 -6.158611),6200,,AYMN,,,
+MXT,Indian/Antananarivo,Maintirano,MXT,MG,POINT (44.0330009 -18.0499992),104,,FMMO,,,
+OBY,America/Scoresbysund,Ittoqqortoormiit,OBY,GL,POINT (-21.666668 70.583336),0,,,,,
+AZA,America/Phoenix,Phoenix-Mesa Gateway Airport,PHX,US,POINT (-111.6526441150196 33.30591455),1309,http://www.flywga.org/,KIWA,Queen Creek,Maricopa County,Arizona
+TEA,America/Tegucigalpa,Tela,TEA,HN,POINT (-87.47630249378217 15.7752969),7,,MHTE,Tela,,Atlantida
+TEB,America/New_York,Teterboro Airport,TEB,US,POINT (-74.06353615015186 40.84951),9,http://www.teb.com/,KTEB,Moonachie,Bergen County,New Jersey
+TTR,Asia/Makassar,Tana Toraja,TTR,ID,POINT (119.82344862326204 -3.04601045),2884,,WAWT,Tangratte,,South Sulawesi
+TTT,Asia/Taipei,Taitung Airport,TTT,TW,POINT (121.10635675975651 22.75568585),143,,RCFN,Taitung City,,Taiwan
+TTU,Africa/Casablanca,Sania Ramel,TTU,MA,POINT (-5.323810548691451 35.5940005),10,,GMTN,Tetouan,,Tanger-Tetouan
+TUA,America/Guayaquil,Tulcan,TUA,EC,POINT (-77.70792372481476 0.8096193),9649,,SETU,Tulcan,,Carchi
+TUD,Africa/Dakar,Tambacounda,TUD,SN,POINT (-13.654784242248777 13.735393550000001),161,,GOTT,Tambacounda,,Tambacounda
+TUG,Asia/Manila,Tuguegarao Airport,TUG,PH,POINT (121.73409169162102 17.643631300000003),70,,RPUT,Carig,Province of Cagayan,Cagayan Valley
+TUI,Asia/Riyadh,Turaif Airport,TUI,SA,POINT (38.73264882506025 31.69201315),2803,,OETR,Turayf,,Northern Borders
+TUL,America/Chicago,Tulsa International Airport,TUL,US,POINT (-95.88675053989968 36.1968484),677,,KTUL,Owasso,Tulsa County,Oklahoma
+NSX,America/Tortola,Hovercraft/Launch Pt,NSX,VG,POINT (-64.36667 18.5),0,,,,,
+PQT,America/Godthab,Qeqertaq Heliport,PQT,GL,POINT (-51.3037 69.9994),42,,,,,
+BSJ,Australia/Melbourne,Bairnsdale,BSJ,AU,POINT (147.63333 -37.833332),32,,YBNS,Bairnsdale,East Gippsland,Victoria
+BSR,Asia/Baghdad,Basra International Airport,BSR,IQ,POINT (47.79139 30.555555),32,,ORMM,Al Basrah,,Basra Governorate
+BSS,America/Fortaleza,Balsas,BSS,BR,POINT (-46.05 -7.516667),885,,SNBS,Balsas,Balsas,Maranhao
+NVM,America/Cuiaba,Brigadeiro Eduardo Gomes Airport,NVM,BR,POINT (-56.0349239329 -13.81380253609),1404,,,Nova Mutum,,Mato Grosso
+BSX,Asia/Rangoon,Bassein,BSX,MM,POINT (94.77532425417502 16.813601400000003),29,,VYPN,Pathein,,Ayeyarwady
+BTE,Africa/Freetown,Bonthe,BTE,SL,POINT (-12.008333 7),0,,GFBN,Pujehun,,Southern Province
+BTF,America/Denver,Salt Lake Skypark,BTF,US,POINT (-111.88333 40.88333),4393,,KBTF,Bountiful,Davis County,Utah
+BTK,Asia/Irkutsk,Bratsk Airport,BTK,RU,POINT (101.816666 56.36667),961,,UIBB,Bratsk,,Irkutsk
+BTL,America/Detroit,WK Kellogg Regional,BTL,US,POINT (-85.26481 42.37278),902,http://www.battlecreekmi.gov/City_Government/Departments/W_K__Kellogg_Airport.htm,KBTL,Level Park-Oak Park,Calhoun County,Michigan
+BTM,America/Denver,Butte Airport,BTM,US,POINT (-112.49389 45.95111),5475,,KBTM,Butte,Silver Bow County,Montana
+BTU,Asia/Kuching,Bintulu Airport,BTU,MY,POINT (113.04346 3.171772),39,,WBGB,Bintulu,,Sarawak
+FOA,Europe/London,Foula,FOA,GB,POINT (-2.083333 60.166668),0,,EGFO,,,
+GDA,Africa/Bangui,Gounda,GDA,CF,POINT (21.166668 9.333333),1341,,"",,,
+NTM,America/Araguaina,Miracema Do Norte,NTM,BR,POINT (-48.5 -9.183333),849,,,,,
+OYC,America/Cayenne,Camopi Airport,OYC,GF,POINT (-52.336111 3.172222),190,,,Camopi,,
+OVE,America/Los_Angeles,Oroville,OVE,US,POINT (-121.61708560790602 39.4896515),177,http://www.cityoforoville.org/index.aspx?page=210,KOVE,Thermalito,Butte County,California
+OZH,Europe/Zaporozhye,Zaporozhye Airport,OZH,UA,POINT (35.31153502036521 47.869395850000004),321,,UKDE,Zaporizhzhya,,Zaporizhia
+NKV,America/Anchorage,Nichen Cove,NKV,US,POINT (-133.21666 55.85),0,,,,,
+NOL,America/Anchorage,Nakolik River,NOL,US,POINT (-160.71666 67.9),462,,,,,
+NOH,America/Chicago,Chicago NAS,CHI,US,POINT (-87.61667 41.880554),574,,,,,
+OGX,Africa/Algiers,Ain Beida Airport,OGX,DZ,POINT (5.411965642045519 31.9171828),429,,DAUU,Rouissat,,Ouargla
+ABP,Pacific/Port_Moresby,Atkamba,ABP,PG,POINT (141.09521515526734 -6.0647021500000005),36,,"",,,
+PUP,Africa/Ouagadougou,Po,PUP,BF,POINT (-1.166667 11.183333),1076,,DFCP,,,
+BBI,Asia/Kolkata,Biju Patnaik International Airport,BBI,IN,POINT (85.81348472447162 20.25229545),121,http://aai.aero/allAirports/bhubaneshwar_generalinfo.jsp,VEBS,Bhubaneshwar,Khordha,Odisha
+BCK,Australia/Brisbane,Bolwarra,BCK,AU,POINT (144.1690063 -17.3882999),984,,YBWR,Atherton,Tablelands,Queensland
+BCN,Europe/Madrid,Barcelona-El Prat Airport,BCN,ES,POINT (2.0790473629813215 41.29694395),22,http://www.aena.es/en/barcelona-airport/index.html,LEBL,El Prat de Llobregat,Provincia de Barcelona,Catalonia
+BDB,Australia/Brisbane,Bundaberg Airport,BDB,AU,POINT (152.31965241484968 -24.90353975),82,http://bundaberg.qld.gov.au/services/airport,YBUD,Thabeban,Bundaberg,Queensland
+BDH,Asia/Tehran,Bandar Lengeh,BDH,IR,POINT (54.82975543497214 26.53298565),78,,OIBL,Bandar-e Lengeh,,Hormozgan
+BTW,Asia/Makassar,Batu Licin,BTW,ID,POINT (116 -3),16,,WAOC,Sungaikupang,,South Kalimantan
+BDI,Indian/Mahe,Bird Island,BDI,SC,POINT (55.20523767995286 -3.7242604999999998),36,,FSSB,Bel Ombre,,Bel Ombre
+BDJ,Asia/Makassar,Syamsudin Noor International Airport,BDJ,ID,POINT (114.75650864375234 -3.4402862499999998),36,,WAOO,Banjarbaru,,South Kalimantan
+TUN,Africa/Tunis,Tunis-Carthage International Airport,TUN,TN,POINT (10.229499453576416 36.851848450000006),22,http://www.oaca.nat.tn/english/div_horizontal_tunis_airport_eng.htm,DTTA,Ariana,,Ariana
+TUO,Pacific/Auckland,Taupo Airport,TUO,NZ,POINT (176.08434805942943 -38.7402488),1335,,NZAP,Taupo,Taupo District,Waikato
+TUP,America/Chicago,Tupelo Regional Airport,TUP,US,POINT (-88.76848308091172 34.26840715),346,,KTUP,Tupelo,Lee County,Mississippi
+TUS,America/Phoenix,Tucson International Airport,TUS,US,POINT (-110.93687678656917 32.120244549999995),2643,https://www.flytucson.com/,KTUS,Summit,Pima County,Arizona
+TVA,Indian/Antananarivo,Morafenobe,TVA,MG,POINT (44.9211147 -17.8500623),748,,FMMR,Mahabe,,Melaky
+TVC,America/Detroit,Cherry Capital Airport,TVC,US,POINT (-85.58421631783196 44.74349225),624,,KTVC,Traverse City,Grand Traverse County,Michigan
+TVF,America/Chicago,Thief River Falls Regional Airport,TVF,US,POINT (-96.1844694 48.0660335),1119,,KTVF,Thief River Falls,Pennington County,Minnesota
+TVI,America/New_York,Thomasville Municipal Airport,TVI,US,POINT (-83.88062081579348 30.9004299),264,http://www.thomasville.org/Content/Default/10/534/71/city-of-thomasville/departments/thomasville-regional-airport.html,KTVI,Thomasville,Thomas County,Georgia
+TVL,America/Los_Angeles,South Lake Tahoe,TVL,US,POINT (-119.99579660820874 38.894447150000005),6264,,KTVL,South Lake Tahoe,El Dorado County,California
+TVS,Asia/Shanghai,Tangshan Sannuhe Airport,TVS,CN,POINT (118.00176191850872 39.7198374),50,,ZBTS,Fengrun,,Hebei
+BUB,America/Chicago,Municipal,BUB,US,POINT (-99.13333 41.783333),2171,,KBUB,Burwell,Garfield County,Nebraska
+BUG,Africa/Luanda,Gen V Deslandes,BUG,AO,POINT (13.405556 -12.606389),72,,FNBG,Benguela,,Benguela
+BUK,Asia/Aden,Albuq,BUK,YE,POINT (43.766666 15.833333),6122,,OYBQ,An Nasirah,As Sawd,Omran
+MHM,America/Anchorage,Intermediate,MHM,US,POINT (-152.28583 63.869167),606,,,,,
+BUM,America/Chicago,Butler,BUM,US,POINT (-94.333336 38.266666),830,,KBUM,Butler,Bates County,Missouri
+OGZ,Europe/Moscow,Vladikavkaz Airport,OGZ,RU,POINT (44.60982202193371 43.204641550000005),1646,,URMO,Dalakovo,,Ingushetiya
+BUN,America/Bogota,Buenaventura,BUN,CO,POINT (-76.995834 3.825),91,,SKBU,Buenaventura,,Valle del Cauca
+OHB,Indian/Antananarivo,Ambohibary,OHB,MG,POINT (48.220969 -18.915993),2962,,FMFE,Moramanga,,Alaotra Mangoro
+BUP,Asia/Kolkata,Bhatinda Airport,BUP,IN,POINT (74.96667 30.166668),666,,VIBT,Bhatinda,Bathinda,Punjab
+BUU,Asia/Jakarta,Muara Bungo Airport,BUU,ID,POINT (102.182778 -1.5425),282,http://www.infobungo.com/2012/12/jadwal-penerbangan-dari-bandara-muara.html,WIPI,Muarabungo,,Jambi
+BUV,America/Montevideo,Bella Union,BUV,UY,POINT (-57.083332 -30.333332),232,,SUBU,Tomas Gomensoro,,Artigas
+BJA,Africa/Algiers,Bejaia Airport,BJA,DZ,POINT (5.073719492285118 36.71292390000001),36,,DAAE,Bejaia,,Bejaia
+BUY,Australia/Perth,Bunbury,BUY,AU,POINT (115.63333 -33.316666),22,,YBUN,Bunbury,Bunbury,Western Australia
+OHD,Europe/Skopje,Ohrid Airport,OHD,MK,POINT (20.742970126092665 41.17937425),2270,http://ohd.airports.com.mk/,LWOH,Misleshevo,,
+OHO,Asia/Vladivostok,Okhotsk,OHO,RU,POINT (143.06106257563988 59.41464295),45,,UHOO,Okhotsk,,Khabarovsk Krai
+GHE,America/Panama,Garachine,GHE,PA,POINT (-78.25 8.033333),55,,"",,,
+GLP,Pacific/Port_Moresby,Gulgubip,GLP,PG,POINT (141.51666 -5.283333),4333,,AYUP,,,
+GLY,Australia/Perth,Goldsworthy,GLY,AU,POINT (119.666664 -20.083332),29,,,,,
+ONT,America/Los_Angeles,Ontario International Airport,ONT,US,POINT (-117.59915769373036 34.05414245),889,http://www.lawa.org/welcomeONT.aspx,KONT,Rancho Cucamonga,San Bernardino County,California
+OBT,America/New_York,Oakland/Coliseum Stat,OBT,US,POINT (-79.416664 39.4),2450,,,,,
+OOL,Australia/Brisbane,Gold Coast Airport,OOL,AU,POINT (153.5081045532748 -28.164853),39,,YBCG,Tugun,Gold Coast,Queensland
+NTL,Australia/Sydney,Newcastle Airport,NTL,AU,POINT (151.84011416276277 -32.79461255),19,,YWLM,Medowie,Port Stephens Shire,New South Wales
+OPF,America/New_York,Opa-locka Executive Airport,MIA,US,POINT (-80.27515077349665 25.90619265),29,http://www.miami-airport.com/html/opalocka.html,KOPF,Miami Lakes,Miami-Dade County,Florida
+OSD,Europe/Stockholm,Are Ostersund Airport,OSD,SE,POINT (14.499010830385984 63.19562795),1131,https://www.swedavia.com/ostersund/,ESNZ,Krokom,Krokoms Kommun,Jaemtland
+PNR,Africa/Brazzaville,Pointe Noire Airport,PNR,CG,POINT (11.886634070093734 -4.81575645),95,,FCPP,Pointe-Noire,,Pointe-Noire
+NME,America/Anchorage,Nightmute Airport,NME,US,POINT (-164.70296523136636 60.46984675),167,,PAGT,,,
+PHO,America/Anchorage,Point Hope Airport,PHO,US,POINT (-166.797774252524 68.35007250000001),26,,PAPO,,,
+OKU,Africa/Windhoek,Mokuti Lodge,OKU,NA,POINT (17.0524599 -18.8149418),3635,,FYMO,,,
+AEY,Atlantic/Reykjavik,Akureyri Airport,AEY,IS,POINT (-18.070607134573716 65.65698725),39,,BIAR,Akureyri,,Northeast
+AGA,Africa/Casablanca,Agadir Al Massira Airport,AGA,MA,POINT (-9.555895 30.378326),62,,GMAD,Inezgane,Inezgane-Ait Mellou,Souss-Massa-Draa
+BEL,America/Belem,Val De Cans International Airport,BEL,BR,POINT (-48.47964610194296 -1.3798578),19,http://www.infraero.gov.br/index.php/br/aeroportos/para/aeroporto-internacional-de-belem.html,SBBE,Belem,Belem,Para
+MJO,Africa/Windhoek,Mount Etjo Lodge,MJO,NA,POINT (16.4469806 -21.0238747),5006,,FYME,,,
+PBK,America/Anchorage,Pack Creek,PBK,US,POINT (-134.7 57.8),170,,,,,
+BES,Europe/Paris,Brest Bretagne Airport,BES,FR,POINT (-4.4197626 48.4428384),344,,LFRB,Guipavas,Departement du Finistere,Brittany
+KKU,America/Anchorage,Ekuk,KKU,US,POINT (-158.5614812 58.8111279),30,,KKU,,,
+BEY,Asia/Beirut,Beirut-Rafic Hariri International Airport,BEY,LB,POINT (35.490805228124415 33.8180749),42,http://www.beirutairport.gov.lb/,OLBA,Baabda,,Mont-Liban
+BFF,America/Denver,Western Nebraska Regional Airport,BFF,US,POINT (-103.59491845572903 41.87685875),3959,,KBFF,Terrytown,Scotts Bluff County,Nebraska
+BFH,America/Sao_Paulo,Bacacheri,BFH,BR,POINT (-49.231650952179585 -25.4048327),2998,,SBBI,Curitiba,Curitiba,Parana
+BGG,Europe/Istanbul,Bingol Airport,BGG,TR,POINT (40.59243578163278 38.8605985),3448,,LTCU,,,
+BGQ,America/Anchorage,Big Lake,BGQ,US,POINT (-149.8119444 61.5352778),144,,PAGQ,,,Alaska
+TYF,Europe/Stockholm,Torsby Airport,TYF,SE,POINT (12.989099530642672 60.160475149999996),393,http://www.torsbyflygplats.se,ESST,Torsby,Torsby Kommun,Vaermland
+BOQ,Pacific/Port_Moresby,Boku,BOQ,PG,POINT (155.35 -6.533333),259,,"",,,
+TYN,Asia/Shanghai,Taiyuan Wusu International Airport,TYN,CN,POINT (112.62232573051733 37.7488565),2575,,ZBYN,Xiaodian,,Shanxi Sheng
+TYR,America/Chicago,Tyler Pounds Regional Airport,TYR,US,POINT (-95.40208756061571 32.351909649999996),544,,KTYR,Chandler,Henderson County,Texas
+TYS,America/New_York,McGhee Tyson Airport,TYS,US,POINT (-83.99884810431155 35.809552999999994),981,,KTYS,Alcoa,Blount County,Tennessee
+BVM,America/Bahia,Belmonte,BVM,BR,POINT (-38.916668 -15.833333),45,,SNBL,Belmonte,Belmonte,Bahia
+TZC,America/Detroit,Tuscola Area,TZC,US,POINT (-83.4451618 43.4586785),701,"http://www.michigan.gov/aero/0,4533,7-145-61367-277436--,00.html",KCFS,Caro,Tuscola County,Michigan
+TZN,America/Nassau,South Andros,TZN,BS,POINT (-77.5913170475257 24.159072549999998),15,,MYAK,Andros Town,,North Andros
+TZX,Europe/Istanbul,Trabzon Airport,TZX,TR,POINT (39.78903849616105 40.99444235),104,,LTCG,Trabzon,,Trabzon
+UAC,America/Hermosillo,San Luis Rio Colorado,UAC,MX,POINT (-114.7979198587698 32.44445155),50,,MM76,San Luis Rio Colorado,,Sonora
+UAI,Asia/Dili,Suai,UAI,TL,POINT (125.28481019021041 -9.301596100000001),96,,WPDB,Suai,,Cova Lima
+BVS,America/Belem,Breves,BVS,BR,POINT (-50.44221729198899 -1.6351127),68,,SNVS,Breves,Breves,Para
+UAP,Pacific/Marquesas,Ua Pou,UAP,PF,POINT (-140.07945544505213 -9.347734500000001),16,,NTMP,Taiohae,,Iles Marquises
+UDR,Asia/Kolkata,Maharana Pratap Airport,UDR,IN,POINT (73.89536493575547 24.61747795),1684,http://www.airportsindia.org.in/allAirports/udaipur_airpo_gi.jsp,VAUD,Udaipur,Udaipur,Rajasthan
+PJS,America/Anchorage,Port San Juan,PJS,US,POINT (-148.06389 60.04861),0,,,,,
+PBY,Australia/Brisbane,Hamilton/Proserpine,PBY,AU,POINT (148.83333 -20.283333),0,,,,,
+BVX,America/Chicago,Municipal,BVX,US,POINT (-91.65 35.766666),246,,KBVX,Batesville,Independence County,Arkansas
+BVY,America/New_York,Beverly Municipal Airport,BVY,US,POINT (-70.88333 42.55),49,http://www.beverlyairport.com/,KBVY,Beverly,Essex County,Massachusetts
+BWF,Europe/London,Walney Island,BWF,GB,POINT (-3.2613563884741574 54.12797505),39,http://www.walneyairfield.multiservers.com/,EGNL,Barrow in Furness,Cumbria,England
+BWG,America/Chicago,Warren County,BWG,US,POINT (-86.42222 36.962223),511,,KBWG,Bowling Green,Warren County,Kentucky
+BWH,Asia/Kuala_Lumpur,Butterworth,BWH,MY,POINT (100.3925 5.466667),39,,WMKB,Permatang Kuching,,Penang
+BWI,America/New_York,Baltimore/Wash International Thurgood Marshall Airport,BWI,US,POINT (-76.66894 39.179527),170,https://www.bwiairport.com/,KBWI,Ferndale,Anne Arundel County,Maryland
+BWK,Europe/Zagreb,Brac,BWK,HR,POINT (16.683332 43.283333),1732,,LDSB,Bol,,Splitsko-Dalmatinska
+PPO,America/Nassau,Powell Point,PPO,BS,POINT (-76.35 24.9),0,,,,,
+DJM,Africa/Brazzaville,Djambala,DJM,CG,POINT (14.755771029863677 -2.515203),2493,,FCBD,,,
+DUE,Africa/Luanda,Dundo,DUE,AO,POINT (20.81559179063664 -7.4036255),2460,,FNDU,,,
+UAR,Africa/Casablanca,Bouarfa,UAR,MA,POINT (51.538563 51.15371),3630,,GMFB,,,
+HAL,Africa/Windhoek,Halali,HAL,NA,POINT (13.066667 -19.966667),400,,FYHI,,,
+NUI,America/Anchorage,Nuiqsut Airport,NUI,US,POINT (-151.00523344640942 70.20999965),59,,PAQT,,,
+PKL,Pacific/Auckland,Pakatoa Island,PKL,NZ,POINT (174.85333 -37.806946),36,,,,,
+PMU,America/Anchorage,SPB,PMU,US,POINT (-160.33333 61.983334),226,,,,,
+NWT,Pacific/Port_Moresby,Nowata,NWT,PG,POINT (149.72788924937038 -9.98549835),2057,,"",,,
+OCM,Australia/Perth,Boolgeeda,OCM,AU,POINT (117.27020102828958 -22.540644),1817,,YBGD,,,
+NTG,Asia/Shanghai,Nantong Xingdong Airport,NTG,CN,POINT (120.97825429793333 32.07183535),19,,ZSNT,Xingdong,,Jiangsu Sheng
+NYA,Asia/Yekaterinburg,Nyagan Airport,NYA,RU,POINT (65.61141073357436 62.11053750000001),314,,USHN,Nyagan,,Khanty-Mansiyskiy Avtonomnyy Okrug
+NYM,Asia/Yekaterinburg,Nadym Airport,NYM,RU,POINT (72.69457227373331 65.4843896),45,,USMM,Staryy Nadym,,Yamalo-Nenetskiy Avtonomnyy Okrug
+ORS,Australia/Brisbane,Waterport,ORS,AU,POINT (146.48334 -18.633333),0,,,,,
+UGS,America/Anchorage,Ugashik,UGS,US,POINT (-157.4009501 57.521938649999996),25,,"9A8",,,
+MWU,Pacific/Port_Moresby,Mussau,MWU,PG,POINT (149.66667 -1.5),88,,,,,
+BLJ,Africa/Algiers,Batna Airport,BLJ,DZ,POINT (6.183333 35.566666),3425,,DABT,Batna,,Batna
+AIH,Pacific/Port_Moresby,Aiambak,AIH,PG,POINT (141.2679197273077 -7.34368705),118,,AYAK,,,
+BGX,America/Sao_Paulo,Airport Cmdt. Gustavo Kraemer,BGX,BR,POINT (-54.112838163262815 -31.390997249999998),580,https://www4.infraero.gov.br/aeroportos/aeroporto-internacional-de-bage-comandante-gustavo-kraemer/,SBBG,Bage,Bage,Rio Grande do Sul
+BMF,Africa/Bangui,Bakouma,BMF,CF,POINT (22.801065 5.6947471),1778,,FEGM,Bangassou,,Mbomou
+BGY,Europe/Rome,Orio al Serio International Airport,MIL,IT,POINT (9.69876347135455 45.670959249999996),754,http://www.sacbo.it/,LIME,Orio al Serio,Provincia di Bergamo,Lombardy
+MKH,Africa/Maseru,Mokhotlong,MKH,LS,POINT (29.166668 -29.166668),9379,,FXMK,,,
+BNY,Pacific/Guadalcanal,Bellona,BNY,SB,POINT (159.7991242561202 -11.302540149999999),42,,AGGB,,,
+KVG,Pacific/Port_Moresby,Kavieng Airport,KVG,PG,POINT (150.8052784188705 -2.57738425),7,,AYKV,,,
+NYO,Europe/Stockholm,Stockholm Skavsta Airport,STO,SE,POINT (16.9104983 58.7871654),104,,ESKN,Svalsta,Nykopings Kommun,Soedermanland
+NYR,Asia/Yakutsk,Nyurba Airport,NYR,RU,POINT (118.352362862571 63.297716699999995),380,,UENN,Nyurba,,Sakha
+NYS,America/New_York,New York Skyports Seaplane Base,NYS,US,POINT (-73.9729007 40.7351534),0,,,Long Island City,Queens County,New York
+BRH,Pacific/Port_Moresby,Brahman,BRH,PG,POINT (145.36667 -5.7),396,,,,,
+BHD,Europe/London,George Best Belfast City Airport,BFS,GB,POINT (-5.869819381345107 54.620329350000006),42,http://www.belfastcityairport.com/,EGAC,Castlereagh,Castlereagh District,Northern Ireland
+UES,America/Chicago,Waukesha,UES,US,POINT (-88.23488740524746 43.039602200000004),911,https://www.waukeshacounty.gov/airport/,KUES,Waukesha,Waukesha County,Wisconsin
+NYT,Asia/Rangoon,Nay Pyi Taw Airport,NYT,MM,POINT (96.19420457749541 19.62314215),275,,VYNT,Pyinmana,,Mandalay
+UET,Asia/Karachi,Quetta Airport,UET,PK,POINT (66.93800061461184 30.2526982),5267,,OPQT,Kot Malik,,Balochistan
+OBL,Europe/Brussels,Zoersel,OBL,BE,POINT (4.75290329580533 51.2645037),62,,,Zoersel,Provincie Antwerpen,Flanders
+OBN,Europe/London,Oban Airport,OBN,GB,POINT (-5.400648379892633 56.46333455),62,,EGEO,Oban,Argyll and Bute,Scotland
+OBO,Asia/Tokyo,Tokachi-Obihiro Airport,OBO,JP,POINT (143.2127336925417 42.73232595),459,,RJCB,Obihiro,,Hokkaido
+OBX,Pacific/Port_Moresby,Obo,OBX,PG,POINT (141.3170013 -7.5830002),45,,AYOB,Muting,,Papua
+UFA,Asia/Yekaterinburg,Ufa International Airport,UFA,RU,POINT (55.88220985059501 54.55435815),449,http://www.airportufa.ru/en/,UWUU,Avdon,,Bashkortostan
+OCS,Africa/Malabo,Corisco International Airport,OCS,GQ,POINT (9.329377888686222 0.9134412000000001),19,,"",Cocobeach,,Estuaire
+UGC,Asia/Samarkand,Urgench Airport,UGC,UZ,POINT (60.6451779891279 41.58095495),320,,UTNU,Urganch,,Xorazm
+UGU,Asia/Jayapura,Zugapa,UGU,ID,POINT (137.03238668869122 -3.7396311),7348,,WABV,Beoga,,Papua
+UIB,America/Bogota,El Carano Airport,UIB,CO,POINT (-76.63973768788003 5.69001785),204,,SKUI,Quibdo,,Choco
+UKI,America/Los_Angeles,Ukiah,UKI,US,POINT (-123.19738871459245 39.1268845),614,http://www.cityofukiah.com/ukiah-airport/,KUKI,Ukiah,Mendocino County,California
+UKK,Asia/Almaty,Ust-Kamenogorsk Airport,UKK,KZ,POINT (82.49913736104511 50.034302100000005),939,,UASK,Belusovka,,East Kazakhstan
+BWQ,Australia/Sydney,Brewarrina,BWQ,AU,POINT (146.86667 -29.95),400,,YBRW,Brewarrina,Brewarrina,New South Wales
+BWS,America/Los_Angeles,Blaine,BWS,US,POINT (-122.833336 48.966667),0,,,White Rock,Greater Vancouver Regional District,British Columbia
+OFF,America/Chicago,Offutt Air Force Base,OFF,US,POINT (-95.9101309 41.1183758),984,http://www.offutt.af.mil/,KOFF,Offutt Air Force Base,Sarpy County,Nebraska
+OGG,Pacific/Honolulu,Kahului Airport,OGG,US,POINT (-156.43404764122727 20.89569785),114,http://hawaii.gov/ogg,PHOG,Kahului,Maui County,Hawaii
+BWU,Australia/Sydney,Sydney Bankstown,SYD,AU,POINT (150.9900744496805 -33.924245549999995),36,,YSBK,Bankstown,Bankstown,New South Wales
+OGL,America/Guyana,Ogle Airport,OGL,GY,POINT (-58.106424370229405 6.805131),39,,SYEC,Georgetown,,Demerara-Mahaica
+OGN,Asia/Tokyo,Yonaguni Jima,OGN,JP,POINT (122.97987647668907 24.46740405),45,,ROYN,Yonakuni,,Okinawa
+UKS,Europe/Simferopol,Belbek,UKS,KX,POINT (33.56699649490146 44.6866456),344,,URFB,Inkerman,,Misto Sevastopol'
+BXD,Asia/Jayapura,Bade,BXD,ID,POINT (139.5 -7.166667),91,,WAKE,Bade,,Papua
+OGR,Africa/Ndjamena,Bongor,OGR,TD,POINT (15.3735256 10.287542),1066,,FTTB,Bongor,,Mayo-Kebbi Est
+DIP,Africa/Ouagadougou,Diapaga,DIP,BF,POINT (2.033333 12.033333),892,,DFED,,,
+HED,America/Anchorage,Herendeen,HED,US,POINT (-160.83333 55.833332),0,,AK33,,,
+OGS,America/New_York,Ogdensburg Airport,OGS,US,POINT (-75.4768 44.681759),269,,KOGS,Ogdensburg,St. Lawrence County,New York
+OSL,Europe/Oslo,Oslo Airport Gardermoen,OSL,NO,POINT (11.09967535417638 60.19786535),659,https://avinor.no/en/airport/oslo-airport,ENGM,Teigebyen,Nannestad,Akershus
+OSN,Asia/Seoul,Osan AB,OSN,KR,POINT (127.02653817056847 37.0838419),42,,RKSO,Osan,,Gyeonggi-do
+OSR,Europe/Prague,Mosnov Airport,OSR,CZ,POINT (18.116063013271024 49.6968749),859,http://www.airport-ostrava.cz/en/,LKMT,Petrvald,,
+OSS,Asia/Bishkek,Osh Airport,OSS,KG,POINT (72.79365034036988 40.60815205),2870,http://www.airport.kg/eng/branches.htm,UCFO,Osh,,Osh
+OST,Europe/Brussels,Ostend-Bruges International Airport,OST,BE,POINT (2.874165781169563 51.2003974),29,http://www.ost.aero/,EBOS,Middelkerke,Provincie West-Vlaanderen,Flanders
+OSU,America/New_York,Ohio State University,CMH,US,POINT (-83.07348313724086 40.08113710000001),869,https://osuairport.org/,KOSU,Dublin,Franklin County,Ohio
+HLW,Africa/Johannesburg,Hluhluwe,HLW,ZA,POINT (32.27510193785516 -28.01605505),255,,FAHL,,,
+ALG,Africa/Algiers,Houari Boumediene Airport,ALG,DZ,POINT (3.21090318335027 36.7013497),49,,DAAG,Dar el Beida,,Alger
+BNB,Africa/Kinshasa,Boende,BNB,CD,POINT (20.87 -0.233056),1095,,FZGN,Boende,,Equateur
+AMB,Indian/Antananarivo,Ambilobe,AMB,MG,POINT (48.9876126 -13.1865961),68,,FMNE,Ambilobe,,Diana
+ANM,Indian/Antananarivo,Antsirabato,ANM,MG,POINT (50.3182525 -14.9990678),26,,FMNH,Antalaha,,Sava
+BOE,Africa/Brazzaville,Boundji,BOE,CG,POINT (15.383333 -1.033333),1148,,FCOB,,,
+ANR,Europe/Brussels,Antwerp International Airport,ANR,BE,POINT (4.463473861141249 51.1881429),29,http://www.antwerp-airport.be/,EBAW,Mortsel,Provincie Antwerpen,Flanders
+BIK,Asia/Jayapura,Mokmer Airport,BIK,ID,POINT (136.10667153231608 -1.1884679500000002),49,,WABB,Biak,,Papua
+BIL,America/Denver,Billings Logan International Airport,BIL,US,POINT (-108.54767517885944 45.809234849999996),3569,,KBIL,Billings,Yellowstone County,Montana
+BIN,Asia/Kabul,Bamiyan,BIN,AF,POINT (67.81759460556913 34.809365400000004),8471,,OABN,Bamyan,,Bamian
+BIO,Europe/Madrid,Bilbao Airport,BIO,ES,POINT (-2.919129659398936 43.301720700000004),98,http://www.aena.es/csee/Satellite?cid=1047658432525&pagename=subHome&Language=EN_GB&SiteName=BIO&c=Page,LEBB,Sondika,Bizkaia,Basque Country
+BIS,America/Chicago,Bismarck Airport,BIS,US,POINT (-100.74716366621541 46.7732585),1607,http://bismarckairport.com/,KBIS,Bismarck,Burleigh County,North Dakota
+BYJ,Europe/Lisbon,Beja International,BYJ,PT,POINT (-7.9324 38.078899),583,http://www.ana.pt/en-US/Aeroportos/alentejo/Beja/Pages/BejaHomepage.aspx,LPBJ,Beja,Beja,Beja
+BJB,Asia/Tehran,Bojnord,BJB,IR,POINT (57.30289282060582 37.49078845),3480,,OIMN,Bojnurd,,Khorasan-e Shomali
+KKW,Africa/Kinshasa,Kikwit,KKW,CD,POINT (18.7862857708413 -5.03605725),1572,,FZCA,,,
+BYM,America/Havana,C.M. de Cespedes,BYM,CU,POINT (-76.65 20.383333),213,,MUBY,Bayamo,,Granma
+BYN,Asia/Ulaanbaatar,Bayankhongor,BYN,MN,POINT (100.683334 46.1),6066,,ZMBH,Bayanhongor,,Bayanhongor
+UKX,Asia/Irkutsk,Ust-Kut Airport,UKX,RU,POINT (105.72207485831456 56.858894750000005),2188,,UITT,Ust'-Kut,,Irkutsk
+ULI,Pacific/Chuuk,Ulithi,ULI,FM,POINT (139.788892 10.0207009),6,http://www.ict.fm/civilaviation/ulithi.html,"",Fais,Fais Municipality,Yap
+ULK,Asia/Yakutsk,Lensk Airport,ULK,RU,POINT (114.81694915335788 60.72074375),801,,UERL,Lensk,,Sakha
+ULM,America/Chicago,New Ulm,ULM,US,POINT (-94.50046940687638 44.31641545),1011,http://www.ci.new-ulm.mn.us/index.asp?Type=B_BASIC&SEC={840F6280-A727-429E-B482-086226133C0E},KULM,New Ulm,Brown County,Minnesota
+OTU,America/Bogota,Otu,OTU,CO,POINT (-74.71545480613989 7.01078885),2093,,SKOT,Segovia,,Antioquia
+ULQ,America/Bogota,Farfan,ULQ,CO,POINT (-76.22326677959009 4.0968219999999995),3132,,SKUL,Tulua,,Valle del Cauca
+ULX,Africa/Johannesburg,Ulusaba,ULX,ZA,POINT (31.3555238 -24.7814137),1263,,FAUS,Thulamahashi,,Limpopo
+ULZ,Asia/Hovd,Uliastai,ULZ,MN,POINT (96.8499229 47.7414683),5800,,ZMDN,Uliastay,,Dzabkhan
+UMA,America/Havana,Punta De Maisi,UMA,CU,POINT (-74.1490094 20.2423436),3,,MUMA,Maisi,,Guantanamo
+BYO,America/Campo_Grande,Bonito Airport,BYO,BR,POINT (-56.45190863172819 -21.24942965),1122,,SBDB,Bonito,Bonito,Mato Grosso do Sul
+UME,Europe/Stockholm,Umea Airport,UME,SE,POINT (20.288655093670805 63.7903095),24,https://www.swedavia.com/umea/,ESNU,Umea,Umea Kommun,Vaesterbotten
+URJ,Asia/Yekaterinburg,Uraj Airport,URJ,RU,POINT (64.82551743258367 60.107210949999995),190,,USHU,Uray,,Khanty-Mansiyskiy Avtonomnyy Okrug
+BYS,America/Los_Angeles,Bicycle Lake AAF,BYS,US,POINT (-116.566666 35.266666),2864,,KBYS,Fort Irwin,San Bernardino County,California
+BYV,Asia/Colombo,Beira Lake SPB,CMB,LK,POINT (79.848358 6.927468),26,,"",Colombo,,Western
+BZF,America/Los_Angeles,Benton Field,RDD,US,POINT (-122.4076999757034 40.573799300000005),702,,O85,Redding,Shasta County,California
+OUA,Africa/Ouagadougou,Ouagadougou International Airport,OUA,BF,POINT (-1.5124424971595523 12.350413150000001),1003,,DFFD,Ouagadougou,Kadiogo Province,Centre
+BZK,Europe/Moscow,Bryansk International Airport,BZK,RU,POINT (34.333332 53.266666),692,http://www.airport.bryansk.ru/,UUBP,Bryansk,Bryanskiy Rayon,Brjansk
+OUE,Africa/Brazzaville,Ouesso,OUE,CG,POINT (16.038631380985755 1.61967185),1105,,FCOU,Ouesso,,Sangha
+BZR,Europe/Paris,Beziers Vias Airport,BZR,FR,POINT (3.354444 43.324165),32,,LFMU,Portiragnes,Departement de l'Herault,Languedoc-Roussillon
+OUH,Africa/Johannesburg,Oudtshoorn,OUH,ZA,POINT (22.189409270456053 -33.60659885),1099,,FAOH,Oudtshoorn,Eden District Municipality,Western Cape
+OUR,Africa/Douala,Batouri,OUR,CM,POINT (14.3622338 4.4738974),2142,,FKKI,Batouri,,East
+URT,Asia/Bangkok,Surat Thani Airport,URT,TH,POINT (99.1434239166442 9.13585735),20,,VTSB,Phunphin,,Surat Thani
+OUS,America/Sao_Paulo,Ourinhos,OUS,BR,POINT (-49.91315384754624 -22.966458),1528,,SDOU,Ourinhos,Ourinhos,Sao Paulo
+PRT,America/Anchorage,Coast Guard Heliport,PRT,US,POINT (-134.55 58.35),22,,,,,
+OUT,Africa/Ndjamena,Bousso,OUT,TD,POINT (16.7169991 10.4829998),1079,,FTTS,Bousso,,Chari-Baguirmi
+OVA,Indian/Antananarivo,Bekily,OVA,MG,POINT (45.30429340257109 -24.23684045),1210,,FMSL,Beteza,,Androy
+OVD,Europe/Madrid,Asturias Airport,OVD,ES,POINT (-6.030909804909283 43.56161899999999),433,http://www.aena.es/csee/Satellite?cid=1047658435997&pagename=subHome&Language=EN_GB&SiteName=OVD&c=Page,LEAS,Castrillon,Province of Asturias,Asturias
+OVR,America/Argentina/Buenos_Aires,Olavarria,OVR,AR,POINT (-60.22043631757385 -36.88835835),534,,SAZF,Olavarria,,Buenos Aires
+PAD,Europe/Berlin,Paderborn Lippstadt Airport,PAD,DE,POINT (8.619063961655392 51.614599299999995),695,http://www.flughafen-paderborn-lippstadt.de,EDLP,Salzkotten,Regierungsbezirk Detmold,North Rhine-Westphalia
+SQW,Europe/Copenhagen,Skive Airport,SQW,DK,POINT (9.033333 56.566666),26,,EKSV,,,
+RMN,Pacific/Port_Moresby,Rumginae,RMN,PG,POINT (141.16667 -6.166667),101,,AYRG,,,
+MNY,Pacific/Guadalcanal,Mono,MNY,SB,POINT (155.56667 -7.35),698,,AGGO,,,
+PAE,America/Los_Angeles,Snohomish County - Paine Field,PAE,US,POINT (-122.27943020482658 47.9088268),587,,KPAE,Mukilteo,Snohomish County,Washington
+PAG,Asia/Manila,Pagadian Airport,PAG,PH,POINT (123.46005995201602 7.827059200000001),36,,RPMP,Pagadian,Province of  Zamboanga del Sur,Zamboanga Peninsula
+BKS,Asia/Jakarta,Fatmawati Soekarno Airport,BKS,ID,POINT (102.33768944822845 -3.8623723),52,,WIGG,Bengkulu,,Bengkulu
+PAH,America/Chicago,Barkley Regional Airport,PAH,US,POINT (-88.773 37.0596),390,,KPAH,Massac,McCracken County,Kentucky
+UYU,America/La_Paz,Uyuni,UYU,BO,POINT (-66.85327806874254 -20.44139465),12030,,SLUY,Uyuni,,Potosi
+PAN,Asia/Bangkok,Pattani,PAN,TH,POINT (101.15276892561963 6.7854878),39,,VTSK,Nong Chik,,Pattani
+PAO,America/Los_Angeles,Palo Alto,PAO,US,POINT (-122.11338052352352 37.4593107),22,http://www.countyairports.org/pao.html,KPAO,East Palo Alto,San Mateo County,California
+PAP,America/Port-au-Prince,Toussaint Louverture International Airport,PAP,HT,POINT (-72.29606501465122 18.579012300000002),68,,MTPP,Delmas 73,,Ouest
+PEI,America/Bogota,Matecana International Airport,PEI,CO,POINT (-75.7403839964314 4.8124677),4373,http://aeromate.gov.co,SKPE,Pereira,,Risaralda
+BKW,America/New_York,Beckley Airport,BKW,US,POINT (-81.12226647165667 37.7945921),2440,,KBKW,Daniels,Raleigh County,West Virginia
+PLJ,America/Belize,Placencia,PLJ,BZ,POINT (-88.36284587129374 16.53671325),29,,"",,,
+NSI,Africa/Douala,Nsimalen Airport,YAO,CM,POINT (11.552168664779966 3.7250788),2142,,FKYS,,,
+PNL,Europe/Rome,Pantelleria Airport,PNL,IT,POINT (11.962350735013088 36.813767999999996),567,,LICG,Pantelleria,Trapani,Sicily
+PNO,America/Mexico_City,Pinotepa Nacional,PNO,MX,POINT (-98.0619965 16.3500004),692,,,Santiago Pinotepa Nacional,,Oaxaca
+PNQ,Asia/Kolkata,Pune Airport,PNQ,IN,POINT (73.91838555259571 18.58033),1912,,VAPO,Lohogaon,Pune Division,Maharashtra
+PSE,America/Puerto_Rico,Mercedita Airport,PSE,PR,POINT (-66.5633497464292 18.008885999999997),36,,TJPS,Aguilita,,Juana Diaz
+PSF,America/New_York,Pittsfield,PSF,US,POINT (-73.29253760227448 42.4272797),1151,,KPSF,Pittsfield,Berkshire County,Massachusetts
+BLA,America/Caracas,General Jose Antonio Anzoategui International Airport,BLA,VE,POINT (-64.68773382715652 10.107164950000001),29,http://aigdjaa.baer.gob.ve,SVBC,Barcelona,,Anzoategui
+URY,Asia/Riyadh,Gurayat Airport,URY,SA,POINT (37.2752595 31.4110571),1672,,OEGT,Al Qurayyat,,Al Jawf
+PSK,America/New_York,New River Valley,PSK,US,POINT (-80.68019423820499 37.1373097),2063,http://www.nrvairport.com/,KPSK,Dublin,Pulaski County,Virginia
+UTS,Europe/Moscow,Ust-Tsilma,UTS,RU,POINT (52.199675531796856 65.43961494999999),262,,UUYX,Ust-Tsilma,,Komi Republic
+PSP,America/Los_Angeles,Palm Springs International Airport,PSP,US,POINT (-116.50964534531111 33.83033915),459,http://www.palmspringsca.gov/index.aspx?page=270,KPSP,Palm Springs,Riverside County,California
+PSR,Europe/Rome,Abruzzo Airport,PSR,IT,POINT (14.186080677809038 42.4321436),26,http://www.abruzzo-airport.it/eng/index.php,LIBP,Sambuceto,Provincia di Chieti,Abruzzo
+PSS,America/Argentina/Cordoba,Posadas Airport,PSS,AR,POINT (-55.966770332177454 -27.391727449999998),436,,SARP,Posadas,Departamento de Capital,Misiones
+PSU,Asia/Makassar,Putussibau Airport,PSU,ID,POINT (112.93713061532932 0.8355697),95,,WIOP,Kapit,,Sarawak
+NIN,America/Anchorage,Ninilchik,NIN,US,POINT (-151.73334 60.066666),0,,,,,
+NKN,Pacific/Port_Moresby,Nankina,NKN,PG,POINT (143.45 -5.833333),7650,,AYNA,,,
+BLH,America/Los_Angeles,Blythe,BLH,US,POINT (-114.71910408120428 33.6206368),387,,KBLH,Mesa Verde,Riverside County,California
+NMN,Pacific/Port_Moresby,Nomane,NMN,PG,POINT (145.06667 -16.316668),3159,,AYNO,,,
+BLI,America/Los_Angeles,Bellingham International Airport,BLI,US,POINT (-122.53595690761102 48.79368955),118,,KBLI,Marietta-Alderwood,Whatcom County,Washington
+BLK,Europe/London,Blackpool Airport,BLK,GB,POINT (-3.0371900877377973 53.773228849999995),39,http://www.blackpoolinternational.com/,EGNH,Great Marton,Lancashire,England
+BLR,Asia/Kolkata,Kempegowda International Airport,BLR,IN,POINT (77.70758655918868 13.196697),2962,http://www.bengaluruairport.com/home/home.jspx,VOBL,Devanhalli,Bangalore Rural,Karnataka
+BLT,Australia/Brisbane,Blackwater,BLT,AU,POINT (148.8078454 -23.6022957),623,,YBTR,Blackwater,Central Highlands,Queensland
+BMA,Europe/Stockholm,Bromma Airport,STO,SE,POINT (17.944740459281977 59.3546192),29,,ESSB,Bromma,Stockholms Kommun,Stockholm
+PEL,Africa/Maseru,Pelaneng,PEL,LS,POINT (27.916668 -30.55),9120,,FXPG,,,
+BMB,Africa/Kinshasa,Bumba,BMB,CD,POINT (22.477952690537215 2.18408715),1167,,FZFU,Bumba,,Equateur
+NJC,Asia/Yekaterinburg,Nizhnevartovsk Airport,NJC,RU,POINT (76.48562187563991 60.949454349999996),131,,USNN,Nizhnevartovsk,,Khanty-Mansiyskiy Avtonomnyy Okrug
+NJF,Asia/Baghdad,Al-Najaf International Airport,NJF,IQ,POINT (44.403904616449125 31.9890477),88,http://www.alnajafairport.net/,ORNI,An Najaf,,An Najaf
+BMC,America/Denver,Brigham City,BMC,US,POINT (-112.0604949 41.5347533),4189,http://brighamcity.utah.gov/airport.htm,KBMC,Brigham City,Box Elder County,Utah
+IIA,Europe/Dublin,Inishmaan,IIA,IE,POINT (-9.569016248449334 53.093722650000004),26,,EIMN,,,
+NVN,America/Los_Angeles,Nervino,NVN,US,POINT (-120.3537 39.8184),4858,,KO02,Portola,Plumas County,California
+NWI,Europe/London,Norwich International Airport,NWI,GB,POINT (1.2806942422978507 52.6683484),101,http://www.norwichairport.co.uk/,EGSH,Spixworth,Norfolk,England
+OAX,America/Mexico_City,Xoxocotlan Airport,OAX,MX,POINT (-96.72489779307939 16.9994612),4983,http://www.asur.com.mx/asur/ingles/aeropuertos/oaxaca/oaxaca.asp,MMOX,Animas Trujano,,Oaxaca
+OBF,Europe/Berlin,Oberpfaffenhofen,OBF,DE,POINT (11.288999243382674 48.0835074),1929,http://www.edmo-airport.de,EDMO,Gilching,Upper Bavaria,Bavaria
+ORL,America/New_York,Orlando Executive,ORL,US,POINT (-81.33163591314123 28.54617435),88,,KORL,Azalea Park,Orange County,Florida
+VAN,Europe/Istanbul,Van Ferit Melen Airport,VAN,TR,POINT (43.3304160093347 38.46787005),5442,,LTCI,Van,,Van
+ORU,America/La_Paz,Oruro,ORU,BO,POINT (-67.07636218484333 -17.954718200000002),12155,http://en.wikipedia.org/wiki/Juan_Mendoza_Airport,SLOR,Oruro,,Oruro
+OSB,America/Chicago,Osage Beach,OSB,US,POINT (-92.6758441 38.1077033),859,,,Osage Beach,Camden County,Missouri
+VAR,Europe/Sofia,Varna Airport,VAR,BG,POINT (27.823302249448076 43.23393595),206,,LBWN,Aksakovo,Obshtina Aksakovo,Varna
+OSM,Asia/Baghdad,Mosul,OSM,IQ,POINT (43.148121645696165 36.30509415),708,,ORBM,Mosul,,Ninawa
+NGP,America/Chicago,NAS,CRP,US,POINT (-97.28333 27.7),32,,,,,
+OMD,Africa/Windhoek,Oranjemund Airport,OMD,NA,POINT (16.44502789914406 -28.584204550000003),29,,FYOG,,,
+NUP,America/Anchorage,Nunapitchuk,NUP,US,POINT (-162.44060274477496 60.90601635),36,,PPIT,,,
+OBM,Pacific/Port_Moresby,Morobe,OBM,PG,POINT (147.6 -7.75),0,,AYMB,,,
+OKP,Pacific/Port_Moresby,Oksapmin,OKP,PG,POINT (142.08333 -5.25),6669,,AYOJ,,,
+OFJ,Atlantic/Reykjavik,Olafsfjordur,OFJ,IS,POINT (-19.833332 65.583336),1902,,BIOF,,,
+NHZ,America/New_York,NAS,NHZ,US,POINT (-69.96667 43.916668),45,http://mrra.us/brunswick-executive-airport/,KBXM,Brunswick,Cumberland County,Maine
+NIC,Asia/Nicosia,Nicosia International,NIC,CY,POINT (33.2753522 35.1596193),725,,LCNC,Kato Deftera,,Lefkosia
+BMH,Pacific/Port_Moresby,Bomai,BMH,PG,POINT (144.58333 -6.416667),2122,,AYBO,,,
+NIX,Africa/Bamako,Nioro,NIX,ML,POINT (-9.57321168978643 15.23953285),767,,GANR,Nioro,,Kayes
+BNO,America/Los_Angeles,Burns,BNO,US,POINT (-118.9554 43.5914),4143,http://www.ci.burns.or.us/airport.html,KBNO,Burns,Harney County,Oregon
+BNS,America/Caracas,Barinas,BNS,VE,POINT (-70.21733395811468 8.6128189),567,,SVBI,Barinas,Municipio Barinas,Barinas
+BNX,Europe/Sarajevo,Banja Luka Airport,BNX,BA,POINT (17.296385987756054 44.94291375),351,http://www.banjaluka-airport.com/,LQBK,Laktasi,,Republika Srpska
+BOC,America/Panama,Bocas Del Toro,BOC,PA,POINT (-82.25481515647917 9.3404691),16,,MPBO,Bocas del Toro,,Bocas del Toro
+NGK,Asia/Sakhalin,Nogliki Airport,NGK,RU,POINT (143.14055949747697 51.782723250000004),311,,UHSN,Nogliki,,Sakhalin
+BOG,America/Bogota,El Dorado International Airport,BOG,CO,POINT (-74.1487499180044 4.7028947500000005),8382,,SKBO,Funza,,Cundinamarca
+BOM,Asia/Kolkata,Chhatrapati Shivaji International Airport,BOM,IN,POINT (72.86370318520977 19.0901312),42,http://www.csia.in/,VABB,Mumbai,Mumbai Suburban,Maharashtra
+NHA,Asia/Ho_Chi_Minh,Nha Trang,NHA,VN,POINT (109.1929837 12.249573),52,,VVNT,Nha Trang,,Khanh Hoa
+BOO,Europe/Oslo,Bodo Airport,BOO,NO,POINT (14.34774894210406 67.264386),19,http://www.avinor.no/en/airport/bodo/frontpage,ENBO,Bodo,Bodo,Nordland
+BOS,America/New_York,Logan International Airport,BOS,US,POINT (-71.01350667543224 42.3629737),29,http://www.massport.com/logan/,KBOS,Chelsea,Suffolk County,Massachusetts
+BPG,America/Cuiaba,Barra Do Garcas,BPG,BR,POINT (-52.39006674230171 -15.8606725),1141,,SBBW,Barra do Garcas,Barra Do Garcas,Mato Grosso
+NHT,Europe/London,Northolt,NHT,GB,POINT (-0.4181133724815239 51.55435185),59,http://www.raf.mod.uk/rafnortholt/,EGWU,Greenford,Greater London,England
+BPH,Asia/Manila,Bislig,BPH,PH,POINT (126.31948268451853 8.1938557),29,,RPMF,Bislig,Province of Surigao del Sur,Caraga
+NIM,Africa/Niamey,Niamey Airport,NIM,NE,POINT (2.184618025448069 13.4901663),708,,DRRN,Niamey,,Niamey
+BPM,Asia/Kolkata,Begumpet,HYD,IN,POINT (78.46967295140705 17.454031399999998),1719,,VOHY,Quthbullapur,Rangareddi,Telangana
+NIR,America/Chicago,Chase Field NAS,NIR,US,POINT (-97.75 28.4),223,,"",Beeville,Bee County,Texas
+NIO,Africa/Kinshasa,Nioki,NIO,CD,POINT (17.6851363168499 -2.7172354),1040,,FZBI,Nioki,,Bandundu
+NIT,Europe/Paris,Niort,NIT,FR,POINT (-0.45 46.316666),127,,LFBN,Niort,Departement des Deux-Sevres,Poitou-Charentes
+IMN,Pacific/Port_Moresby,Imane,IMN,PG,POINT (146.08333 -6.7),5902,,AYII,,,
+INF,Africa/Algiers,Newark Liberty International,INF,DZ,POINT (5.866667 19.616667),1545,,DATG,,,
+BRQ,Europe/Prague,Turany Airport,BRQ,CZ,POINT (16.690803591376284 49.1582606),784,http://www.airport-brno.cz/index.php?id=0&lang=en,LKTB,Slapanice,,South Moravian
+PPW,Europe/London,Papa Westray Airport,PPW,GB,POINT (-2.8986988 59.3512139),55,,EGEP,,,
+OFI,Africa/Abidjan,Ouango Fitini,OFI,CI,POINT (-4.033333 9.6),1003,,DIOF,,,
+NJA,Asia/Tokyo,Atsugi NAS,NJA,JP,POINT (139.35 35.416668),65,,RJTA,Atsugi,,Kanagawa
+NJJ,Asia/Shanghai,Nenjian Melgen Airport,NJJ,CN,POINT (125.329733 49.238688),826,,,Changfu,,Heilongjiang Sheng
+VCE,Europe/Rome,Venice Marco Polo Airport,VCE,IT,POINT (12.342579681064803 45.50353855),19,http://www.veniceairport.com/core/index.jsp?_requestid=37300&language=en,LIPZ,Tessera,Provincia di Venezia,Veneto
+NKA,Africa/Libreville,Nkan,NKA,GA,POINT (9.983333 0.7),114,,,Ntoum,,Estuaire
+NMT,Asia/Rangoon,Namtu,NMT,MM,POINT (97.4 23.083332),2043,,VYNU,Lashio,,Shan
+NMU,Pacific/Majuro,Namu,NMU,MH,POINT (168.13333 8),0,,,Loen,,Namu Atoll
+NNA,Africa/Casablanca,NAF,NNA,MA,POINT (-6.666667 34.266666),0,,GMMY,Kenitra,Kenitra Province,Gharb-Chrarda-Beni Hssen
+NND,Africa/Maputo,Nangade,NND,MZ,POINT (39.1 -11.083333),583,,"",Namalenga,,Mtwara
+NKG,Asia/Shanghai,Nanjing Lukou International Airport,NKG,CN,POINT (118.8722909841032 31.7318395),52,,ZSNJ,Lukou,,Jiangsu Sheng
+NKM,Asia/Tokyo,Nagoya Airport,NGO,JP,POINT (136.92475081806316 35.24606875),95,,RJNA,Komaki,,Aichi
+NKP,Asia/Bangkok,Nakhon Phanom Airport,NKP,TH,POINT (104.6446664 17.3886974),557,,NTKU,Nakhon Phanom,,Nakhon Phanom
+NLD,America/Matamoros,Quetzalcoatl International Airport,NLD,MX,POINT (-99.56786380287167 27.443653849999997),482,,MMNL,Nuevo Laredo,,Tamaulipas
+BRS,Europe/London,Bristol Airport,BRS,GB,POINT (-2.7186237715618864 51.38296995),580,http://www.bristolairport.co.uk/,EGGD,Butcombe,North Somerset,England
+NLE,America/Detroit,Jerry Tyler Memorial,NLE,US,POINT (-86.225970125 41.8354002),744,http://www.ci.niles.mi.us/deptsandservices/dpw/JerryTylerMemorialAirport.htm,"3TR",Niles,Berrien County,Michigan
+UNT,Europe/London,Baltasound,UNT,GB,POINT (-0.8532495 60.7475983),0,,EGPW,,,
+NLH,Asia/Shanghai,Ninglang Luguhu Airport,NLH,CN,POINT (100.75959614928159 27.540641450000003),10672,,ZPNL,Daxing,,Yunnan
+AHU,Africa/Casablanca,Charif Al Idrissi Airport,AHU,MA,POINT (-3.836944 35.17972),42,,GMTA,Imzourene,,Taza-Al Hoceima-Taounate
+NLI,Asia/Vladivostok,Nikolaevsk-na-Amure,NLI,RU,POINT (140.65171494609865 53.1536464),183,,UHNN,Nikolayevsk-on-Amure,,Khabarovsk Krai
+BRD,America/Chicago,Crow Wing County Airport,BRD,US,POINT (-94.12827992568421 46.40507465),1233,http://brainerdairport.com/,KBRD,Brainerd,Crow Wing County,Minnesota
+BRE,Europe/Berlin,Bremen Airport,BRE,DE,POINT (8.789641688895548 53.0453419),49,,EDDW,Bremen,,Bremen
+BRM,America/Caracas,Barquisimeto Airport,BRM,VE,POINT (-69.3561637968819 10.04359305),2043,,SVBM,Barquisimeto,Municipio Iribarren,Lara
+NLK,Pacific/Norfolk,Norfolk Island Airport,NLK,NF,POINT (167.93946074308155 -29.04165755),314,http://www.airport.gov.nf/,YSNF,Kingston,,
+BRN,Europe/Zurich,Bern Airport,BRN,CH,POINT (7.498597416883485 46.912213449999996),1627,http://www.flughafenbern.ch/,LSZB,Belp,Bern-Mittelland District,Bern
+BRU,Europe/Brussels,Brussels Airport,BRU,BE,POINT (4.478626970832147 50.9010343),108,http://www.brusselsairport.be/en/,EBBR,Zaventem,Provincie Vlaams-Brabant,Flanders
+NLN,America/Los_Angeles,Kneeland,NLN,US,POINT (-123.92745898365271 40.71893525),2716,,O19,Blue Lake,Humboldt County,California
+BSD,Asia/Shanghai,Baoshan Airport,BSD,CN,POINT (99.16459538074838 25.05160185),5456,,ZPBS,Dianyang,,Yunnan
+BSN,Africa/Bangui,Bossangoa,BSN,CF,POINT (17.5 6.583333),1712,,FEFS,Bossangoa,,Ouham
+NLO,Africa/Kinshasa,N'dolo,FIH,CD,POINT (15.326602202855717 -4.326756850000001),889,,FZAB,Kinshasa,,Kinshasa
+NLP,Africa/Johannesburg,Nelspruit Airport,NLP,ZA,POINT (30.914385011626656 -25.499757),2808,,FANS,Nelspruit,Ehlanzeni District,Mpumalanga
+NLT,Asia/Shanghai,Nalati Airport,NLT,CN,POINT (83.3726690114942 43.42950715),3070,,ZWNL,Tuergen,,Xinjiang Uygur Zizhiqu
+GOC,Pacific/Port_Moresby,Gora,GOC,PG,POINT (148.81667 -9.166667),88,,AYGX,,,
+MJA,Indian/Antananarivo,Manja,MJA,MG,POINT (44.3165182 -21.4262066),761,,FMSJ,,,
+NLV,Europe/Kiev,Nikolaev (Mykolaiv),NLV,UA,POINT (31.91963470500483 47.0571669),160,http://www.airport.nikolaev.ua/,UKON,Mykolayiv,,Mykolaiv
+NNR,Europe/Dublin,Connemara,NNR,IE,POINT (-9.46975655707136 53.22974215),82,http://www.aerarannislands.ie/,EICA,Oughterard,County Galway,Connaught
+NNT,Asia/Bangkok,Nan Airport,NNT,TH,POINT (100.78451605399837 18.8077996),698,,VTCN,Nan,,Nan
+NNU,America/Sao_Paulo,Nanuque,NNU,BR,POINT (-40.3296120536359 -17.8234475),633,,SNNU,Nanuque,Nanuque,Minas Gerais
+NOC,Europe/Dublin,Ireland West Airport Knock,NOC,IE,POINT (-8.81313884580053 53.91159225),652,http://www.irelandwestairport.com/,EIKN,Swinford,Maigh Eo,Connaught
+NOK,America/Cuiaba,Nova Xavantina,NOK,BR,POINT (-52.348088000279134 -14.698767),997,,SWXV,Araguaiana,Araguaiana,Mato Grosso
+NOS,Indian/Antananarivo,Fascene Airport,NOS,MG,POINT (48.314330613712386 -13.3125742),22,,FMNN,Hell-Ville,,Diana
+NOT,America/Los_Angeles,Novato,NOT,US,POINT (-122.54833407078803 38.146632),19,http://www.marincounty.org/depts/pw/divisions/airport,KDVO,Novato,Marin County,California
+NOU,Pacific/Noumea,Tontouta Airport,NOU,NC,POINT (166.2140588220377 -22.014886150000002),39,http://www.cci-nc.com/tontouta/index.php,NWWW,Paita,Paita,South Province
+NOV,Africa/Luanda,Huambo,NOV,AO,POINT (15.757342194111722 -12.8074989),5515,,FNHU,Huambo,,Huambo
+BLE,Europe/Stockholm,Dala Airport,BLE,SE,POINT (15.51485581335173 60.421658550000004),465,,ESSD,Ornas,Borlange Kommun,Dalarna
+NPH,America/Denver,Nephi,NPH,US,POINT (-111.8659778 39.7250461),5016,http://nephi.utah.gov/airport/,U14,Nephi,Juab County,Utah
+BSP,Pacific/Port_Moresby,Bensbach,BSP,PG,POINT (141.08333 -8.333333),85,,AYBH,,,
+NPL,Pacific/Auckland,New Plymouth Airport,NPL,NZ,POINT (174.1832892043154 -39.00578615),82,,NZNP,Waitara,New Plymouth District,Taranaki
+NPY,Africa/Dar_es_Salaam,Mpanda Airport,NPY,TZ,POINT (31.084082497937757 -6.35497145),3572,,HTMP,Mpanda,,Katavi
+NQY,Europe/London,Newquay Cornwall Airport,NQY,GB,POINT (-4.996334942901752 50.441430499999996),324,http://www.newquaycornwallairport.com/,EGHQ,Saint Columb Major,Cornwall,England
+BTA,Africa/Douala,Yaoundé,BTA,CM,POINT (13.7275 4.540833),2158,,FKKO,Bertoua,,East
+VIR,Africa/Johannesburg,Virginia,DUR,ZA,POINT (31.057947978149254 -29.7707202),22,,FAVG,Durban,eThekwini Metropolitan Municipality,KwaZulu-Natal
+NRA,Australia/Sydney,Narrandera,NRA,AU,POINT (146.5117954 -34.7041288),436,,YNAR,Narrandera,Narrandera,New South Wales
+NSE,America/Chicago,Whiting Field NAS,NSE,US,POINT (-87.05 30.633333),68,,KNSE,Milton,Santa Rosa County,Florida
+NSF,America/New_York,Andrews NAF,ADW,US,POINT (-76.833336 38.816666),190,,,Mellwood,Prince George's County,Maryland
+NSH,Asia/Tehran,Now Shahr Airport,NSH,IR,POINT (51.5 36.666668),-91,,OINN,Nowshahr,Nowshahr,Mazandaran
+NSV,Australia/Brisbane,Noosaville,NSV,AU,POINT (153.06349594526466 -26.422261),16,,YNSH,Tewantin,Sunshine Coast,Queensland
+NSN,Pacific/Auckland,Nelson Airport,NSN,NZ,POINT (173.22498 -41.299976),19,http://www.nelsonairport.co.nz/,NZNS,Richmond,Tasman District,Tasman
+NTX,Asia/Jakarta,Natuna Ranai,NTX,ID,POINT (108.38800525322566 3.91012595),170,,WIDO,Pemangkat,,West Kalimantan
+BUD,Europe/Budapest,Budapest Ferenc Liszt International Airport,BUD,HU,POINT (19.2535105675693 47.43527295),469,http://www.bud.hu/english,LHBP,Vecses,,Pest
+NUA,Asia/Colombo,Gregory's Lake,NUA,LK,POINT (80.7795237 6.9560731),6151,,,Nuwara Eliya,Nuwara Eliya District,Central
+NSY,Europe/Rome,NAS Sigonella,NSY,IT,POINT (14.933333 37.4),36,,LICZ,Motta Sant'Anastasia,Catania,Sicily
+BUF,America/New_York,Buffalo Niagara International Airport,BUF,US,POINT (-78.73075229745353 42.9402016),698,http://www.buffaloairport.com,KBUF,Williamsville,Erie County,New York
+NTB,Europe/Oslo,Notodden Airport,NTB,NO,POINT (9.283333 59.583332),744,http://www.notodden-flyplass.no/,ENNO,Notodden,Notodden,Telemark
+NTC,Africa/Maputo,Santa Carolina,NTC,MZ,POINT (33.85 -13.366667),4156,,"",Ntchisi,Ntchisi District,Central Region
+NTD,America/Los_Angeles,Point Mugu NAS (Naval Base Ventura County,NTD,US,POINT (-119.2 34.15),26,,KNTD,Port Hueneme,Ventura County,California
+BUJ,Africa/Algiers,Ain Eddis,BUJ,DZ,POINT (4.15 35.166668),2217,,DAAD,'Ain el Melh,,Wilaya de M'Sila
+BUL,Pacific/Port_Moresby,Bulolo,BUL,PG,POINT (146.65089345011148 -7.2157428),2168,,AYBU,,,
+BUQ,Africa/Harare,Bulawayo Airport,BUQ,ZW,POINT (28.60861372510136 -20.0133425),4324,,FVJN,Bulawayo,,Bulawayo
+BUR,America/Los_Angeles,Bob Hope Airport,BUR,US,POINT (-118.35917241746948 34.2031703),682,http://www.burbankairport.com/,KBUR,North Hollywood,Los Angeles County,California
+BUS,Asia/Tbilisi,Batumi Airport,BUS,GE,POINT (41.6111627 41.6068476),39,,UGSB,Batumi,,Ajaria
+BUT,Asia/Thimphu,Bathpalathang Airport,BUT,BT,POINT (90.74767721746005 27.562385),8415,,VQBT,Jakar,,Bumthang
+BVG,Europe/Oslo,Berlevag Airport,BVG,NO,POINT (29.032890009908627 70.871648),16,https://avinor.no/en/airport/berlevag-airport/,ENBV,Berlevag,Berlevag,Finnmark Fylke
+BVO,America/Chicago,Bartlesville,BVO,US,POINT (-96.00918689480022 36.7671135),685,,KBVO,Bartlesville,Washington County,Oklahoma
+NRK,Europe/Stockholm,Kungsangen Airport,NRK,SE,POINT (16.2478449 58.5859848),16,,ESSP,Lindo,,OEstergoetland
+KSX,Pacific/Port_Moresby,Yasuru,KSX,PG,POINT (146.18333 -6.6),1520,,AYYR,,,
+BZG,Europe/Warsaw,Bydgoszcz Airport,BZG,PL,POINT (17.978783301007155 53.09767685),219,http://www.plb.pl/,EPBY,Bydgoszcz,Bydgoszcz,Kujawsko-Pomorskie
+EMN,Africa/Nouakchott,Nema,EMN,MR,POINT (-7.319334751676467 16.620986600000002),711,,GQNI,,,
+NTI,Asia/Jayapura,Bintuni,NTI,ID,POINT (133.25 -2.333333),0,,WASB,Babo,,West Papua
+NTJ,America/Denver,Manti-Ephraim,NTJ,US,POINT (-111.63333 39.266666),5636,,"41U",Manti,Sanpete County,Utah
+BZH,Africa/Harare,Bumi Hills,BZH,ZW,POINT (28.3500004 -16.8169994),1607,,FVBM,Siavonga,,Southern
+NRN,Europe/Berlin,Weeze Airport,DUS,DE,POINT (6.1433899148466145 51.60310185),85,http://www.airport-weeze.de/de,EDLV,Weeze,Regierungsbezirk Dusseldorf,North Rhine-Westphalia
+NRT,Asia/Tokyo,Narita International Airport,TYO,JP,POINT (140.3933101399336 35.77587145),137,http://www.narita-airport.or.jp/,RJAA,Narita,,Chiba
+NTO,Atlantic/Cape_Verde,Santo Antao,NTO,CV,POINT (-25.083332 17.066668),1817,,GVAN,Porto Novo,,Porto Novo
+NSL,America/Chicago,Slayton Municipal,NSL,US,POINT (-95.78246930183178 43.984017300000005),1410,http://www.slayton.govoffice.com/index.asp?SEC=5E59296F-B088-43BB-80E9-EC7A9653571B&Type=B_BASIC,KDVP,Slayton,Murray County,Minnesota
+NTR,America/Monterrey,Aeropuerto del Norte International Airport,MTY,MX,POINT (-100.316666 25.666668),1794,,MMAN,Monterrey,Monterrey,Nuevo Leon
+NTT,Pacific/Tongatapu,Kuini Lavenia,NTT,TO,POINT (-174 -15.5),0,,NFTP,Hihifo,,Niuas
+NTU,America/New_York,NAS,NTU,US,POINT (-76.03333 36.816666),22,,KNTU,Virginia Beach,City of Virginia Beach,Virginia
+NTY,Africa/Johannesburg,Pilanesberg International Airport,NTY,ZA,POINT (27.916668 -26.033333),4839,,FAPN,Muldersdriseloop,West Rand District Municipality,Gauteng
+NSO,Australia/Sydney,Scone,NSO,AU,POINT (150.8320286417641 -32.0375693),721,,YSCO,Muswellbrook,Muswellbrook,New South Wales
+NST,Asia/Bangkok,Nakhon Si Thammarat Airport,NST,TH,POINT (99.9566766 8.4701019),22,,VTSF,Nakhon Si Thammarat,,Nakhon Si Thammarat
+NTE,Europe/Paris,Nantes Atlantique Airport,NTE,FR,POINT (-1.6084620308979245 47.151840899999996),111,,LFRS,Bouguenais,Departement de la Loire-Atlantique,Pays de la Loire
+NUS,Pacific/Efate,Norsup Airport,NUS,VU,POINT (167.4025558 -16.0805818),13,,NVSP,Norsup,,Malampa
+NWP,America/St_Johns,NS,NWP,CA,POINT (-53.966667 47.3),0,,,Bay Roberts,,Newfoundland and Labrador
+NVP,America/Manaus,Novo Aripuana,NVP,BR,POINT (-60.36429342007336 -5.117820549999999),121,,SWNA,Novo Aripuana,Novo Aripuana,Amazonas
+NVS,Europe/Paris,Nevers,NVS,FR,POINT (3.11393179074266 47.002416600000004),538,,LFQG,Nevers,Departement de la Nievre,Bourgogne
+NWU,Atlantic/Bermuda,Bermuda NAS,BDA,BM,POINT (-65 32.75),0,,,Saint George,,Saint George
+BZI,Europe/Istanbul,Balikesir,BZI,TR,POINT (27.92021925390694 39.6188965),308,,LTBF,Balikesir,,Balikesir
+NXX,America/New_York,Willow Grove NAS,NXX,US,POINT (-75.13333 40.2),347,,,Horsham,Montgomery County,Pennsylvania
+NVT,America/Sao_Paulo,Navegantes Airport,NVT,BR,POINT (-48.649354164934465 -26.87842885),19,,SBNF,Navegantes,Navegantes,Santa Catarina
+BZL,Asia/Dhaka,Barisal Airport,BZL,BD,POINT (90.30062229063586 22.803941299999998),59,,VGBR,Barisal,,Barisal
+BEM,Africa/Casablanca,Beni Mellal Airport,BEM,MA,POINT (-6.315766147359213 32.40255875),1696,http://ww.onda.ma,GMMD,Beni Mellal,Beni-Mellal,Tadla-Azilal
+BGH,Africa/Nouakchott,Abbaye,BGH,MR,POINT (-14.2 16.633333),62,,GQNE,Golere,,Saint-Louis
+BOH,Europe/London,Bournemouth Airport,BOH,GB,POINT (-1.8383330379835439 50.78234165),29,http://www.bournemouthairport.com/,EGHH,St Leonards,Dorset,England
+NYE,Africa/Nairobi,Nyeri,NYE,KE,POINT (36.95 -0.416667),5741,,HKNI,Nyeri,,Nyeri
+BXO,Europe/Zurich,Buochs,BXO,CH,POINT (8.3969444 46.9744444),1437,http://www.airportbuochs.ch/,LSZC,Stans,Nidwalden,Nidwalden
+BXR,Asia/Tehran,Bam,BXR,IR,POINT (58.43984357814054 29.0890689),3205,,OIKM,Bam,,Kerman
+BXU,Asia/Manila,Butuan Airport,BXU,PH,POINT (125.47872696977916 8.95155605),29,,RPME,Libertad,Province of Agusan del Norte,Caraga
+BYC,America/La_Paz,Yacuiba,BYC,BO,POINT (-63.651880301742565 -21.9614105),2040,,SLYA,Yacuiba,Provincia Gran Chaco,Tarija
+BYU,Europe/Berlin,Bindlacher-Berg,BYU,DE,POINT (11.639791400557037 49.9858371),1571,,EDQD,Bindlach,Upper Franconia,Bavaria
+BZC,America/Sao_Paulo,Buzios,BZC,BR,POINT (-41.9628374856585 -22.77063),19,,SSBZ,Armacao de Buzios,Armacao De Buzios,Rio de Janeiro
+BZN,America/Denver,Bozeman Yellowstone International Airport,BZN,US,POINT (-111.15697962783483 45.78359005),4442,,KBZN,Belgrade,Gallatin County,Montana
+BZO,Europe/Rome,Bolzano,BZO,IT,POINT (11.326085809111088 46.46006215),744,http://www.abd-airport.it/en/home.htm,LIPB,San Giacomo,Bolzano,Trentino-Alto Adige
+BZZ,Europe/London,Raf Brize Norton,BZZ,GB,POINT (-1.5793933009655508 51.7511241),269,http://www.raf.mod.uk/rafbrizenorton/passengers/,EGVN,Carterton,Oxfordshire,England
+CFD,America/Chicago,Coulter Field,CFD,US,POINT (-96.36667 30.666668),374,http://www.bryantx.gov/coulterairfield/,KCFD,Bryan,Brazos County,Texas
+NYG,America/New_York,Quantico NAS,NYG,US,POINT (-77.28333 38.516666),0,,,Quantico Station,Prince William County,Virginia
+NYK,Africa/Nairobi,Nanyuki,NYK,KE,POINT (37.066666 0.016667),6299,,HKNL,Nanyuki,,Laikipia
+CBO,Asia/Manila,Awang Airport,CBO,PH,POINT (124.21221000578096 7.164494899999999),150,,RPMC,Awang,Province of Maguindanao,Autonomous Region in Muslim Mindanao
+SGJ,Pacific/Port_Moresby,Sagarai,SGJ,PG,POINT (150.15 -10.466667),95,,,,,
+GMT,America/Anchorage,Granite Mountain,GMT,US,POINT (-161.2775 65.405556),1272,,PAGZ,,,
+VNO,Europe/Vilnius,Vilnius International Airport,VNO,LT,POINT (25.290314330439507 54.63483615),590,http://www.vilnius-airport.lt/en/,EYVI,Naujamiestis,,Vilnius County
+GRH,Pacific/Port_Moresby,Garuahi,GRH,PG,POINT (150.55 -10.225),314,,"",,,
+MPN,Atlantic/Stanley,Mount Pleasant,MPN,FK,POINT (-58.4564927 -51.8208456),177,,EGYP,,,
+MYO,Australia/Perth,Myroodah,MYO,AU,POINT (124.27436559911261 -18.12435455),141,,"",,,
+CBQ,Africa/Lagos,Calabar Airport,CBQ,NG,POINT (8.349199913234665 4.979604500000001),229,http://www.faannigeria.org/nigeria-airport.php?airport=12,DNCA,Calabar,,Cross River
+ODA,Africa/Bangui,Ouadda,ODA,CF,POINT (22.3985996 8.01056),2467,,FEFW,,,
+NWH,America/New_York,Parlin Field,NWH,US,POINT (-72.18568411099443 43.385961949999995),761,,,Newport,Sullivan County,New Hampshire
+NYI,Africa/Accra,Sunyani,NYI,GH,POINT (-2.3282951059579275 7.36107895),1026,,DGSN,Sunyani,,Brong-Ahafo
+NYN,Australia/Sydney,Nyngan,NYN,AU,POINT (147.20095531418247 -31.549949249999997),531,,YNYN,Nyngan,Bogan,New South Wales
+VNS,Asia/Kolkata,Lal Bahadur Shastri International Airport,VNS,IN,POINT (82.86360523595738 25.4509975),269,,VEBN,Baragaon,Varanasi,Uttar Pradesh
+NYW,Asia/Yangon,Monywar Airport,NYW,MM,POINT (95.09345984658762 22.22417235),68,,VYMY,Monywa,,Sagain
+OBK,America/Chicago,Sky Harbor,OBK,US,POINT (-87.816666 42.11667),675,,,Northbrook,Cook County,Illinois
+OBD,Asia/Jayapura,Obano,OBD,ID,POINT (136.23059311149825 -3.91048535),5790,,WABR,Obano,,Papua
+ATR,Africa/Nouakchott,Mouakchott,ATR,MR,POINT (-13.046389 20.499443),761,,GQPA,Atar,,Adrar
+BWP,Pacific/Port_Moresby,Bewani,BWP,PG,POINT (141.15 -3.016667),511,,AYBI,,,
+OBS,Europe/Paris,Vals-Lanas,OBS,FR,POINT (4.7 44.666668),751,,LFHO,Chomerac,Departement de l'Ardeche,Rhone-Alpes
+OCA,America/New_York,Ocean Reef,OCA,US,POINT (-80.27472 25.325277),29,https://www.oceanreef.com/community/private-airport-1345.html,"07FA",North Key Largo,Monroe County,Florida
+OCE,America/New_York,Municipal,OCE,US,POINT (-75.11667 38.316666),39,http://oceancitymd.gov/oc/departments/public-works/airport/,KOXB,West Ocean City,Worcester County,Maryland
+CAK,America/New_York,Akron-Canton Airport,CAK,US,POINT (-81.43992419328089 40.9152061),1171,,KCAK,Greensburg,Summit County,Ohio
+OCF,America/New_York,Taylor Field,OCF,US,POINT (-82.226944 29.175556),72,http://www.ocalafl.org/airport/,KOCF,Ocala,Marion County,Florida
+CAL,Europe/London,Machrihanish Airport,CAL,GB,POINT (-5.698378212255562 55.4402788),26,http://www.hial.co.uk/campbeltown-airport.html,EGEC,Campbeltown,Argyll and Bute,Scotland
+OCJ,America/Jamaica,Boscobel,OCJ,JM,POINT (-76.96972 18.400557),173,http://www.aaj.com.jm/ourairports/index.php#boscobel,MKBS,Oracabessa,,Saint Mary
+OCN,America/Los_Angeles,Municipal,OCN,US,POINT (-117.35333 33.218613),36,http://www.oceansidemunicipalairport.com/,KOKB,Camp Pendleton South,San Diego County,California
+CAP,America/Port-au-Prince,Cap Haitien Airport,CAP,HT,POINT (-72.20026715140995 19.7263503),45,,MTCH,Okap,,Nord
+OCV,America/Bogota,Aguasclaras,OCV,CO,POINT (-73.333336 8.25),4383,,SKOC,Ocana,,Norte de Santander
+OCW,America/New_York,Warren Field,OCW,US,POINT (-77.05 35.55),45,http://www.washingtonnc.gov/airport,KOCW,Washington,Beaufort County,North Carolina
+ODJ,Africa/Bangui,Ouanda Djalle,ODJ,CF,POINT (22.883333 8.916667),2306,,FEGO,Ouadda,,Haute-Kotto
+CAY,America/Cayenne,Felix Eboue Airport,CAY,GF,POINT (-52.36305702364213 4.820737449999999),9,,SOCA,Matoury,Guyane,Guyane
+CAZ,Australia/Sydney,Cobar,CAZ,AU,POINT (145.79695608947588 -31.53967255),738,,YCBA,Cobar,Cobar,New South Wales
+CBE,America/New_York,Greater Cumberland Regional,CBE,US,POINT (-78.76221481936057 39.6163954),682,,KCBE,Wiley Ford,Mineral County,West Virginia
+CBJ,America/Santo_Domingo,Cabo Rojo,CBJ,DO,POINT (-71.64183982629034 17.928795700000002),26,,MDCR,Pedernales,,Pedernales
+CBV,America/Guatemala,Coban,CBV,GT,POINT (-90.40646467327997 15.469022500000001),4337,,MGCB,Coban,,Alta Verapaz
+CGM,Asia/Manila,Mambajao,CGM,PH,POINT (121.916664 18.9),1085,,RPMH,San Vicente,Province of Cagayan,Cagayan Valley
+CGN,Europe/Berlin,Cologne Bonn Airport,CGN,DE,POINT (7.138887378368084 50.86780115),200,http://www.koeln-bonn-airport.de/en/,EDDK,Wahn-Heide,Regierungsbezirk Koln,North Rhine-Westphalia
+OGB,America/New_York,Municipal,OGB,US,POINT (-80.86667 33.5),249,http://www.orangeburg.sc.us/index.php?option=com_content&view=article&id=18&Itemid=69,KOGB,Orangeburg,Orangeburg County,South Carolina
+OGD,America/Denver,Municipal,OGD,US,POINT (-112.01083 41.19639),4461,http://flyogden.com/,KOGD,Riverdale,Weber County,Utah
+OGO,Africa/Abidjan,Abengourou,OGO,CI,POINT (-3.4705374 6.7181611),675,,DIAU,Abengourou,,Moyen-Comoe
+OGU,Asia/Istanbul,Ordu Giresun Airport,QOR,TR,POINT (38.08 40.966667),0,http://www.dhmi.gov.tr/havaalanlari.aspx?hv=54,LTCB,Gulyali,,Ordu
+OGV,Africa/Windhoek,Ongava Game Reserve,OGV,NA,POINT (18.53 -22.18),5082,,,Gobabis,,Omaheke
+VPS,America/Chicago,Destin Fort Walton Beach Airport,VPS,US,POINT (-86.549503 30.4954202),98,http://www.flyvps.com/,KVPS,Eglin Village,Okaloosa County,Florida
+ALZ,America/Anchorage,Alitak SPB,ALZ,US,POINT (-154.24583 56.895832),0,,"",,,
+CCP,America/Santiago,Carriel Sur Airport,CCP,CL,POINT (-73.06006863839588 -36.77378175),22,,SCIE,Concepcion,Provincia de Concepcion,Biobio
+OPB,Pacific/Port_Moresby,Open Bay,OPB,PG,POINT (151.66667 -4.933333),42,,AYOY,,,
+CDC,America/Denver,Cedar City Airport,CDC,US,POINT (-113.0986 37.7003),5636,,KCDC,Cedar City,Iron County,Utah
+ONE,Pacific/Guadalcanal,Onepusu,ONE,SB,POINT (161.06667 -9.166667),2060,,,,,
+OUK,Europe/London,Outer Skerries,OUK,GB,POINT (-0.75 60.416668),0,,EGOU,,,
+WYB,America/Anchorage,SPB,WYB,US,POINT (-131.83333 55.916668),456,,"78K",,,
+OHA,Pacific/Auckland,Royal Air Force Base,OHA,NZ,POINT (175.38667 -40.208332),111,http://www.airforce.mil.nz/about/hqbases/boh.htm,NZOH,Bulls,Rangitikei District,Manawatu-Wanganui
+ENJ,America/Guatemala,El Naranjo,ENJ,GT,POINT (-90.166664 17.333332),354,,"",,,
+OHI,Africa/Windhoek,Oshakati,OHI,NA,POINT (15.8 -17.783333),3605,,FYOS,Ongwediva,,Oshana
+CCR,America/Los_Angeles,Buchanan Field,CCR,US,POINT (-122.05593807253744 37.98926635),39,,KCCR,Pacheco,Contra Costa County,California
+IKL,Africa/Kinshasa,Ikela,IKL,CD,POINT (23.666668 -1.666667),1584,,FZGV,,,
+OHR,Europe/Berlin,Wyk Auf Foehr,OHR,DE,POINT (8.529167 54.685833),62,,EDXY,Wrixum,,Schleswig-Holstein
+OKT,Asia/Yekaterinburg,Oktiabrskij,OKT,RU,POINT (53.38333 54.433334),318,,UWUK,Oktyabr'skiy,,Bashkortostan
+OLC,America/Manaus,Sen. Eunice Micheles,OLC,BR,POINT (-68.95853 -3.470869),255,,SDCG,Sao Paulo de Olivenca,Sao Paulo De Olivenca,Amazonas
+OLD,America/New_York,Old Town,OLD,US,POINT (-68.65 44.933334),147,,KOLD,Old Town,Penobscot County,Maine
+OLE,America/New_York,Municipal,OLE,US,POINT (-78.37666 42.240833),2073,,,Cuba,Allegany County,New York
+SGW,America/Anchorage,Saginaw Bay,SGW,US,POINT (-134.1578 58.4776),2290,,A23,,,
+OLF,America/Denver,Wolf Point International Airport,OLF,US,POINT (-105.56639 48.094723),1975,,KOLF,Wolf Point,Roosevelt County,Montana
+OLG,Africa/Nairobi,Olare Airport,OLG,KE,POINT (35.247367 -1.324397),5633,,"",Bomet,,Bomet
+OLI,Atlantic/Reykjavik,Rif,OLI,IS,POINT (-23.983334 65),0,,BIRF,Olafsvik,,West
+OLL,Africa/Brazzaville,Ollombo,OLL,CG,POINT (-92.229164 32.004417),111,,FCOD,Clarks,Caldwell Parish,Louisiana
+OLN,America/Argentina/Catamarca,Colonia Sarmiento,OLN,AR,POINT (-69 -45.57),862,,"",Sarmiento,,Chubut
+OLO,Europe/Prague,Olomouc,OLO,CZ,POINT (17.2 49.63333),688,http://www.lkol.cz,LKOL,Horka nad Moravou,,Olomoucky
+OHS,Asia/Muscat,Sohar Airport,MCT,OM,POINT (56.62139832848415 24.38766535),104,,OOSH,Al Sohar,,Al Batinah
+CDI,America/Sao_Paulo,Cachoeiro Itapemirim,CDI,BR,POINT (-41.185587839495895 -20.834752),219,,SNKI,Cachoeiro de Itapemirim,Cachoeiro De Itapemirim,Espirito Santo
+OLR,Asia/Kabul,Salerno Air Base,OLR,AF,POINT (36.130333 34.023167),3326,,OASL,Baalbek,,Baalbek-Hermel
+OLS,America/Phoenix,International,OLS,US,POINT (-110.85 31.416668),3894,,KOLS,Nogales,Santa Cruz County,Arizona
+OIM,Asia/Tokyo,Oshima,OIM,JP,POINT (139.3606535 34.7827315),124,,RJTO,Ito,,Shizuoka
+OIT,Asia/Tokyo,Oita Airport,OIT,JP,POINT (131.73595976930255 33.48025315),39,,RJFO,Kitsuki,,Oita
+OJC,America/Chicago,Johnson Executive,MKC,US,POINT (-94.738015 38.8483415),1036,http://www.jocogov.org/dept/airport-commission/executive-airport,KOJC,Olathe,Johnson County,Kansas
+KEE,Africa/Brazzaville,Kelle,KEE,CG,POINT (14.5059985 -0.0698874),1526,,FCOK,,,
+CDR,America/Denver,Chadron Airport,CDR,US,POINT (-103.09605978687767 42.83845375),3313,,KCDR,Chadron,Dawes County,Nebraska
+ABO,Africa/Abidjan,Aboisso,ABO,CI,POINT (-3.216667 5.433333),95,,DIAO,Aboisso,,Sud-Comoe
+ABW,Pacific/Port_Moresby,Abau,ABW,PG,POINT (148.7 -10.183333),0,,"",,,
+OKA,Asia/Tokyo,Naha Airport,OKA,JP,POINT (127.6489520891715 26.1966997),32,http://www.naha-airport.co.jp/,ROAH,Tomigusuku,,Okinawa
+CCS,America/Caracas,Simon Bolivar International Airport,CCS,VE,POINT (-66.99667670060362 10.60316215),209,http://www.aeropuerto-maiquetia.com.ve/web/,SVMI,Catia La Mar,,Vargas
+CDT,Europe/Madrid,Castellon,CDT,ES,POINT (0.070324046608378 40.2125456),1102,https://www.aeroportcastello.com/,LECH,Benlloch,Provincia de Castello,Valencia
+OKD,Asia/Tokyo,Okadama Airport,SPK,JP,POINT (141.3810888666831 43.1168178),36,,RJCO,Sapporo,,Hokkaido
+OKJ,Asia/Tokyo,Okayama Airport,OKJ,JP,POINT (133.8538693555767 34.75697285),784,,RJOB,Okayama-shi,,Okayama
+CHT,Pacific/Chatham,Karewa,CHT,NZ,POINT (-176.35 -43.8),22,,NZCI,Waitangi,,Chatham Islands
+OKK,America/Indiana/Indianapolis,Kokomo,OKK,US,POINT (-86.05845558644432 40.525834450000005),800,http://www.cityofkokomo.org/departments/airport/index.php,KOKK,Kokomo,Howard County,Indiana
+OKY,Australia/Brisbane,Oakey,OKY,AU,POINT (151.7369350152984 -27.40892605),1312,,YBOK,Oakey,Toowoomba,Queensland
+VPZ,America/Chicago,Porter County,VPZ,US,POINT (-87.00771731878464 41.45664055),715,http://www.vpz.org/,KVPZ,Valparaiso,Porter County,Indiana
+OLA,Europe/Oslo,Orland,OLA,NO,POINT (9.612357399776467 63.699543500000004),16,,ENOL,Brekstad,Orland,Sor-Trondelag
+OLB,Europe/Rome,Olbia Costa Smeralda Airport,OLB,IT,POINT (9.517745484294872 40.89937665),22,,LIEO,Olbia,Provincia di Olbia-Tempio,Sardinia
+GNU,America/Anchorage,Goodnews Bay,GNU,US,POINT (-161.5785768 59.1184801),22,,GNU,,,
+KGR,Australia/Darwin,Kulgera,KGR,AU,POINT (133.03334 -25.833332),0,,"",,,
+MYH,America/Phoenix,Marble Canyon,MYH,US,POINT (-111.6447183168609 36.8106428),3615,,,,,
+OMB,Africa/Libreville,Omboue,OMB,GA,POINT (9.2626896 -1.57473),65,,FOOH,,,
+OLJ,Pacific/Efate,Olpoi,OLJ,VU,POINT (166.55778026503145 -14.8810156),39,,NVSZ,Port-Olry,,Sanma
+YWM,America/St_Johns,Williams Harbour,YWM,CA,POINT (-56.01282 52.335438),70,,CCA6,,,
+OLM,America/Los_Angeles,Olympia,OLM,US,POINT (-122.902841 46.9709288),150,,KOLM,Tumwater,Thurston County,Washington
+OOM,Australia/Sydney,Snowy Mountains Airport,OOM,AU,POINT (148.97333 -36.308334),3080,,YCOM,Berridale,Snowy River,New South Wales
+OPA,Atlantic/Reykjavik,Kopasker,OPA,IS,POINT (-16.483334 66.416664),42,,BIKP,Husavik,,Northeast
+OMA,America/Chicago,Eppley Airfield,OMA,US,POINT (-95.88987091468039 41.3011252),994,http://www.eppleyairfield.com,KOMA,Carter Lake,Pottawattamie County,Iowa
+SHK,Africa/Maseru,Sehonghong,SHK,LS,POINT (27.833332 -29.475),7132,,FXSH,,,
+CFB,America/Sao_Paulo,Cabo Frio International Airport,CFB,BR,POINT (-42.076586063102596 -22.923360950000003),26,http://www.grupolibra.com.br/libra-aeroporto/cabo-frio/institucional,SBCB,Cabo Frio,Cabo Frio,Rio de Janeiro
+SMJ,Pacific/Port_Moresby,Sim,SMJ,PG,POINT (146.98334 -7.566667),5898,,AYXI,,,
+CFC,America/Sao_Paulo,Cacador,CFC,BR,POINT (-50.940058269051605 -26.788347950000002),3339,,SBCD,Cacador,Cacador,Santa Catarina
+OMC,Asia/Manila,Ormoc,OMC,PH,POINT (124.56586093882021 11.059772800000001),49,,RPVO,Libertad,Ormoc City,Eastern Visayas
+OMF,Asia/Amman,King Hussein,OMF,JO,POINT (36.25881956987236 32.35176025),2178,,OJMF,Mafraq,,Mafraq
+OMH,Asia/Tehran,Urmia Airport,OMH,IR,POINT (45.071195154914435 37.6716605),4274,,OITR,Orumiyeh,,Azarbayjan-e Gharbi
+KBO,Africa/Lubumbashi,Kabalo,KBO,CD,POINT (26.9176713 -6.0826257),1840,,FZRM,,,
+AJJ,Africa/Nouakchott,Akjoujt,AJJ,MR,POINT (-14.378064835830175 19.72837225),383,,GQNJ,Akjoujt,,Inchiri
+OMO,Europe/Sarajevo,Mostar Airport,OMO,BA,POINT (17.843882921236258 43.281888800000004),137,http://www.mostar-airport.ba/,LQMO,Blagaj,,Federation of Bosnia and Herzegovina
+OMR,Europe/Bucharest,Oradea Airport,OMR,RO,POINT (21.900625787636205 47.0273438),429,,LROD,Nojorid,Comuna Nojorid,Bihor
+OMS,Asia/Omsk,Omsk Airport,OMS,RU,POINT (73.31130158440487 54.96329255),291,,UNOO,Omsk,,Omsk
+OND,Africa/Windhoek,Ondangwa Airport,OND,NA,POINT (15.950382197790034 -17.8779202),3605,,FYOA,Ondangwa,,Oshana
+ONJ,Asia/Tokyo,Odate Noshiro Airport,ONJ,JP,POINT (140.36714159890715 40.19334325),242,,RJSR,Takanosu,,Akita
+BXE,Africa/Dakar,Bakel,BXE,SN,POINT (-12.46959728033882 14.846361850000001),121,,GOTB,Diawara,,Matam
+ONK,Asia/Yakutsk,Olenyok Airport,ONK,RU,POINT (112.47915289262505 68.51536114999999),643,,UERO,Olenyok,,Sakha
+CEK,Asia/Yekaterinburg,Chelyabinsk International Airport,CEK,RU,POINT (61.5128637881277 55.3015326),721,http://cekport.ru/,USCC,Potanino,,Chelyabinsk
+ONO,America/Boise,Ontario Municipal Airport,ONO,US,POINT (-117.01040499429439 44.0178894),2188,,KONO,Ontario,Malheur County,Oregon
+ONQ,Europe/Istanbul,Zonguldak,ONQ,TR,POINT (32.08897133952877 41.5086358),55,,LTAS,Saltukova,,Zonguldak
+CEN,America/Hermosillo,Ciudad Obregon Airport,CEN,MX,POINT (-109.83122548553126 27.39138415),157,http://obregon.asa.gob.mx/wb/webasa/obregon_aeropuertos,MMCN,Antonio Rosales,Cajeme,Sonora
+ONS,Australia/Perth,Onslow Airport,ONS,AU,POINT (115.111236 -21.6672144),32,,YOLW,Dampier,Roebourne,Western Australia
+OSF,Europe/Moscow,Ostafyevo International Business Airport,OSF,RU,POINT (37.507222 55.511667),541,http://eng.gazpromavia.ru/page20.shtml,UUMO,Shcherbinka,,Moskovskaya
+OSH,America/Chicago,Wittman Field,OSH,US,POINT (-88.556946 43.98389),823,http://www.wittmanairport.com/,KOSH,Oshkosh,Winnebago County,Wisconsin
+OSI,Europe/Zagreb,Osijek Airport,OSI,HR,POINT (18.683332 45.55),288,,LDOS,Osijek,Grad Osijek,Osjecko-Baranjska
+OSJ,Africa/Nairobi,Ol Seki Airport,OSJ,KE,POINT (35.377414 -1.378412),5734,,"",Narok,,Narok
+OSK,Europe/Stockholm,Oskarshamn,OSK,SE,POINT (16.433332 57.266666),19,,ESMO,Oskarshamn,Oskarshamns Kommun,Kalmar
+OTT,America/Cuiaba,Andre Maggi,OTT,BR,POINT (-58.581287 -9.902215),921,,"",Aripuana,Colniza,Mato Grosso
+CEQ,Europe/Paris,Mandelieu,CEQ,FR,POINT (6.959813401362742 43.5479587),19,https://www.cannes.aeroport.fr/,LFMD,Mandelieu-la-Napoule,Departement des Alpes-Maritimes,Provence-Alpes-Cote d'Azur
+CER,Europe/Paris,Maupertus,CER,FR,POINT (-1.467614447633502 49.6489524),419,,LFRC,Fermanville,Departement de la Manche,Lower Normandy
+CEZ,America/Denver,Montezuma County Airport,CEZ,US,POINT (-108.6276045 37.3043669),5862,http://www.cityofcortez.com/index.aspx?NID=113,KCEZ,Cortez,Montezuma County,Colorado
+CJH,America/Vancouver,Chilko Lake,CJH,CA,POINT (-124.083336 51.333332),3851,,CAG3,Hanceville,,British Columbia
+CJN,America/Los_Angeles,Gillespie Field,CJN,US,POINT (-116.96667 32.8),433,,WICN,El Cajon,San Diego County,California
+VSA,America/Mexico_City,Carlos Rovirosa Perez International Airport,VSA,MX,POINT (-92.81879817289919 17.9952401),19,,MMVA,El Bajio,Centro,Tabasco
+CKA,America/Chicago,Kegelman Af,CKA,US,POINT (-98.35 36.75),1171,,KCKA,Cherokee,Alfalfa County,Oklahoma
+OSX,America/Chicago,Attala County,OSX,US,POINT (-89.5417417 33.0906846),436,,,Kosciusko,Attala County,Mississippi
+OTN,America/Indiana/Vincennes,Green,OTN,US,POINT (-87.50053924114556 38.8519239),403,http://www.edairinc.com/index.html,I20,Bicknell,Knox County,Indiana
+OUD,Africa/Casablanca,Les Angades Airport,OUD,MA,POINT (-1.933333 34.783333),1522,,GMFO,Oujda,Oujda-Angad,Oriental
+OVG,Africa/Johannesburg,Overberg (FAOB),OVG,ZA,POINT (20.253781595090956 -34.567135050000005),52,,FAOB,Bredasdorp,Overberg District Municipality,Western Cape
+OUG,Africa/Ouagadougou,Ouahigouya,OUG,BF,POINT (-2.333333 13.516667),1040,,DFCC,Ouahigouya,Province du Yatenga,Nord
+OUL,Europe/Helsinki,Oulu Airport,OUL,FI,POINT (25.375425 64.93012),42,https://www.finavia.fi/en/oulu/,EFOU,Oulunsalo,Oulu,Northern Ostrobothnia
+OUM,Africa/Ndjamena,Oum Hadjer,OUM,TD,POINT (19.616667 13.216667),1263,,"",Oum Hadjer,,Batha
+CFN,Europe/Dublin,Donegal Airport,CFN,IE,POINT (-8.340897118482001 55.0445249),55,http://www.donegalairport.ie/,EIDL,Derrybeg,County Donegal,Ulster
+OUN,America/Chicago,Max Westheimer,OUN,US,POINT (-97.433334 35.216667),1151,http://www.ou.edu/airport.html,KOUN,Norman,Cleveland County,Oklahoma
+OUZ,Africa/Nouakchott,Zouerate,OUZ,MR,POINT (-12.35 22.733334),1085,,GQPZ,Zouerat,,Tiris Zemmour
+OVB,Asia/Phnom_Penh,Novosibirsk Tolmachevo Airport,OVB,RU,POINT (82.667 55.00901),374,http://eng.tolmachevo.ru/,UNNT,Ob',,Novosibirsk
+OVL,America/Santiago,Ovalle,OVL,CL,POINT (-71 -30.566668),2532,,SCOV,Monte Patria,Provincia de Limari,Coquimbo
+OVS,Asia/Yekaterinburg,Sovetsky Airport,OVS,RU,POINT (63.601887 61.33209),324,,USHS,Sovetskiy,,Khanty-Mansiyskiy Avtonomnyy Okrug
+OWA,America/Chicago,Owatonna,OWA,US,POINT (-93.166664 44.1),1220,http://ci.owatonna.mn.us/airport,KOWA,Owatonna,Steele County,Minnesota
+OWB,America/Chicago,Daviess County Airport,OWB,US,POINT (-87.16583 37.740833),396,,KOWB,Owensboro,Daviess County,Kentucky
+AEO,Africa/Nouakchott,Aioun El Atrouss,AEO,MR,POINT (-9.638219081447929 16.71068715),964,,GQNA,,,
+OWD,America/New_York,Memorial,OWD,US,POINT (-71 42),101,http://www.ci.norwood.ma.us/Airport/Default.htm,KOWD,West Bridgewater,Plymouth County,Massachusetts
+AZZ,Africa/Luanda,Ambriz,AZZ,AO,POINT (13.15 -7.883333),88,,FNAM,Nzeto,,Zaire
+OYS,America/Los_Angeles,Yosemite Ntl Park,OYS,US,POINT (-119.55 37.85),9222,,,Yosemite Valley,Mariposa County,California
+OZA,America/Chicago,Ozona Municipalcipal,OZA,US,POINT (-101.21667 30.716667),2391,http://www.ozona.com/articles/view/ozona-municipal-airport-52b1db2c-3ff8-4122-8b3f-1a349bf0d2c8,KOZA,Ozona,Crockett County,Texas
+OZC,Asia/Manila,Labo Airport,OZC,PH,POINT (123.84191227879472 8.17931945),134,,RPMO,Lapase,Province of Misamis Occidental,Northern Mindanao
+BKJ,Africa/Conakry,Boke,BKJ,GN,POINT (-14.283333 10.966667),104,,GUOK,Boke,Boke Prefecture,Boke
+OZG,Africa/Casablanca,Zagora Airport,OZG,MA,POINT (-5.859202534443837 30.266018850000002),2381,,GMAZ,Zagora,Zagora,Souss-Massa-Draa
+OYE,Africa/Libreville,Oyem,OYE,GA,POINT (11.582873675829575 1.54637935),2217,,FOGO,Oyem,,Woleu-Ntem
+CFE,Europe/Paris,Clermont-Ferrand Auvergne Airport,CFE,FR,POINT (3.160475215249633 45.7850077),1059,,LFLC,Aulnat,Departement du Puy-de-Dome,Auvergne
+OZP,Europe/Madrid,Moron,OZP,ES,POINT (-5.759444 37.24917),177,,LEMO,Utrera,Provincia de Sevilla,Andalusia
+CFS,Australia/Sydney,Coffs Harbour Airport,CFS,AU,POINT (153.11557057871573 -30.32310515),32,,YCFS,Coffs Harbour,Coffs Harbour,New South Wales
+OZR,America/Chicago,Cairns AAF,OZR,US,POINT (-85.666664 31.45),400,,KOZR,Ozark,Dale County,Alabama
+OZU,Europe/Madrid,Montilla,OZU,ES,POINT (-4.633333 37.6),1000,,,Montilla,Province of Cordoba,Andalusia
+PAA,Asia/Rangoon,Pa-an,PAA,MM,POINT (97.67833 16.892778),75,,VYPA,Hpa-an,,Kayin
+PAB,Asia/Kolkata,Bilaspur,PAB,IN,POINT (76.833336 31.316668),2588,,VEBU,Bilaspur,Bilaspur,Himachal Pradesh
+PAC,America/Panama,Marcos A. Gelabert International Airport,PTY,PA,POINT (-79.21667 8.983333),0,,MPMG,Chepillo,,Panama
+KMK,Africa/Brazzaville,Makabana,KMK,CG,POINT (12.5956707 -3.4816721),495,,FCPA,,,
+CFG,America/Havana,Jaime Gonzalez Airport,CFG,CU,POINT (-80.41432509221373 22.14945185),55,,MUCF,Cienfuegos,Municipio de Cienfuegos,Cienfuegos
+OZZ,Africa/Casablanca,Ouarzazate Airport,OZZ,MA,POINT (-6.908943082878656 30.938211250000002),3710,,GMMZ,Ouarzazat,Ouarzazate,Souss-Massa-Draa
+PAK,Pacific/Honolulu,Port Allen,PAK,US,POINT (-159.6027334710372 21.896957899999997),19,,PHPA,Hanapepe Heights,Kauai County,Hawaii
+PAF,Africa/Kampala,Pakuba,PAF,UG,POINT (31.616667 2.2),2444,,HUPA,Bulisa,Bulisa District,Western Region
+PAV,America/Bahia,Paulo Afonso Airport,PAV,BR,POINT (-38.25002608988869 -9.4005831),856,,SBUF,Paulo Afonso,Paulo Afonso,Bahia
+PAJ,Asia/Karachi,Para Chinar,PAJ,PK,POINT (70.1 33.9),5754,,OPPC,Parachinar,,Federally Administered Tribal Areas
+PAM,America/Chicago,Tyndall AFB,PFN,US,POINT (-85.683334 30.166668),26,http://www.tyndall.af.mil/,KPAM,Panama City,Bay County,Florida
+CFK,Africa/Algiers,Chlef International Airport,CFK,DZ,POINT (1.3306219157103958 36.21306805),459,,DAOI,Chlef,,Chlef
+CFU,Europe/Athens,Ioannis Kapodistrias Airport,CFU,GR,POINT (19.914036339149046 39.60190105),16,,LGKR,Kerkyra,Nomos Kerkyras,Ionian Islands
+CGD,Asia/Shanghai,Changde Airport,CGD,CN,POINT (111.63797653753811 28.91920725),114,,ZGCD,Doumuhu,,Hunan
+CGF,America/New_York,Cuyahoga County,CLE,US,POINT (-81.48889341027817 41.56406585),859,http://publicworks.cuyahogacounty.us/en-US/County-Airport.aspx,KCGF,Highland Heights,Cuyahoga County,Ohio
+NDB,Africa/Nouakchott,Nouadhibou Airport,NDB,MR,POINT (-17.029848793555274 20.92992565),39,,GQPP,,,
+ORN,Africa/Algiers,Es Senia Airport,ORN,DZ,POINT (-0.6154202368508483 35.6206678),278,,DAOO,,,
+PEB,Africa/Maputo,Pebane,PEB,MZ,POINT (38.13333 -17.166668),26,,,,,
+CIC,America/Los_Angeles,Chico Municipal Airport,CIC,US,POINT (-121.8547755058414 39.793971549999995),183,,KCIC,Chico,Butte County,California
+PAQ,America/Anchorage,Palmer Municipalcipal,PAQ,US,POINT (-149.11667 61.6),229,,PAAQ,Palmer,Matanuska-Susitna Borough,Alaska
+PAS,Europe/Athens,Paros Airport,PAS,GR,POINT (25.1 37.066666),0,,LGPA,Antiparos,Nomos Kykladon,South Aegean
+PAT,Asia/Kolkata,Jay Prakash Narayan International Airport,PAT,IN,POINT (85.09067 25.59489),206,http://airportsindia.org.in/allAirports/patna_techinfo.jsp,VEPT,Patna,Patna,Bihar
+EIA,Pacific/Port_Moresby,Popondetta,EIA,PG,POINT (147.63333 -8.116667),643,,,,,
+ALJ,Africa/Johannesburg,Alexander Bay Airport,ALJ,ZA,POINT (16.534444 -28.573333),55,,FAAB,,,
+PCL,America/Lima,Capitan Rolden Airport,PCL,PE,POINT (-74.63333 -8.333333),551,,SPCL,Puerto Callao,Provincia de Coronel Portillo,Ucayali
+FGD,Africa/Nouakchott,Fderik,FGD,MR,POINT (-12.7288263 22.6733397),961,,GQPF,,,
+VYI,Asia/Yakutsk,Vilyuisk,VYI,RU,POINT (121.69615871326798 63.75598155),328,,UENW,Vilyuysk,,Sakha
+BZU,Africa/Lubumbashi,Buta,BZU,CD,POINT (24.733334 2.8),1335,,FZKJ,Buta,,Eastern Province
+PCM,America/Cancun,Playa Del Carmen,PCM,MX,POINT (-87.1 20.6),59,,"",Playa del Carmen,,Quintana Roo
+WGO,America/New_York,Winchester Regional,WGO,US,POINT (-78.14369087132627 39.143367749999996),718,http://websmart66.net/cgi-bin/p/w66p-home.cgi?d=winchester-aviation-services,KOKV,Winchester,City of Winchester,Virginia
+PCN,Pacific/Auckland,Picton Aerodrome,PCN,NZ,POINT (174.03334 -41.35),2496,,NZPN,Picton,Marlborough District,Marlborough
+PBD,Asia/Kolkata,Porbandar,PBD,IN,POINT (69.66174585282947 21.6476942),29,http://www.airportsindia.org.in/allAirports/porbander.jsp,VAPR,Porbandar,Porbandar,Gujarat
+PCP,Africa/Sao_Tome,Principe,PCP,ST,POINT (7.416667 1.666667),564,,FPPR,Santo Antonio,,Principe
+PBF,America/Chicago,Grider Field,PBF,US,POINT (-91.9366952 34.1744743),127,http://www.pbaviation.com,KPBF,Pine Bluff,Jefferson County,Arkansas
+PBI,America/New_York,Palm Beach International Airport,PBI,US,POINT (-80.09248650717163 26.6859478),32,http://www.pbia.org,KPBI,Haverhill,Palm Beach County,Florida
+CHM,America/Lima,Chimbote,CHM,PE,POINT (-78.52487438663762 -9.15039295),68,,SPEO,Buenos Aires,Provincia de Santa,Ancash
+PCS,America/Fortaleza,Picos,PCS,BR,POINT (-41.466667 -7.083333),656,,SNPC,Picos,Picos,Piaui
+PBL,America/Caracas,Puerto Cabello,PBL,VE,POINT (-68.07287449307714 10.4789026),59,,SVPC,Puerto Cabello,Municipio Puerto Cabello,Carabobo
+PBM,America/Paramaribo,Zanderij International Airport,PBM,SR,POINT (-55.18802501876111 5.45209655),52,http://www.japi-airport.com,SMJP,Onverwacht,,Para
+PBU,Asia/Rangoon,Putao,PBU,MM,POINT (97.42638917802654 27.3267245),1397,,VYPT,Zhowagoin,,Tibet Autonomous Region
+PBZ,Africa/Johannesburg,Plettenberg Bay Airport,PBZ,ZA,POINT (23.326063451340605 -34.08766745),426,,FAPG,Plettenberg Bay,Eden District Municipality,Western Cape
+PCB,Asia/Jakarta,Pondok Cabe,PCB,ID,POINT (106.76341868042863 -6.3364522),187,,WIHP,Pamulang,,West Java
+CHO,America/New_York,Charlottesville Albemarle Airport,CHO,US,POINT (-78.45246606356999 38.1410056),613,,KCHO,Hollymead,Albemarle County,Virginia
+PCD,America/Chicago,Prairie du Chien Municipal Airport,PCD,US,POINT (-91.1171306535747 43.01881145),652,,KPDC,Prairie du Chien,Crawford County,Wisconsin
+PCF,Africa/Johannesburg,Potchefstroom,PCF,ZA,POINT (27.083901971724167 -26.6704577),4458,,FAPS,Potchefstroom,Dr Kenneth Kaunda District Municipality,North-West
+PCQ,Asia/Vientiane,Bounneua,PCQ,LA,POINT (101.90007741388473 21.647483200000003),3090,,VLFL,Phongsali,,Phongsali
+PEQ,America/Chicago,Pecos City,PEQ,US,POINT (-103.5 31.433332),2565,http://www.townofpecoscitytx.com/82/Municipal-Airport,KPEQ,Pecos,Reeves County,Texas
+PER,Australia/Perth,Perth Airport,PER,AU,POINT (115.960236 -31.933603),49,http://www.perthairport.net.au,YPPH,Redcliffe,Belmont,Western Australia
+CHQ,Europe/Athens,Chania International Airport,CHQ,GR,POINT (24.148005725125465 35.529643300000004),449,,LGSA,Mouzouras,Nomos Chanias,Crete
+PES,Europe/Moscow,Petrozavodsk Airport,PES,RU,POINT (34.333332 61.683334),646,,ULPB,Petrozavodsk,,Republic of Karelia
+CIG,America/Denver,Craig-Moffat,CIG,US,POINT (-107.52412007661805 40.4941717),6181,http://www.colorado.gov/cs/Satellite/CNTY-Moffat/CBON/1251574649681,KCAG,Craig,Moffat County,Colorado
+CIH,Asia/Shanghai,Changzhi Airport,CIH,CN,POINT (113.1252850638113 36.24789875),3008,,ZBCZ,Daxinzhuang,,Shanxi Sheng
+CIY,Europe/Rome,Comiso Airport,CIY,IT,POINT (14.60748814771559 36.99482985),702,http://www.aeroportodicomiso.it/,LICB,Comiso,Ragusa,Sicily
+CMY,America/Chicago,Fort Mccoy,CMY,US,POINT (-90.77897 44.03347),987,,KCMY,Sparta,Monroe County,Wisconsin
+CMZ,Africa/Maputo,Caia,CMZ,MZ,POINT (35.4 -17.85),141,,"",Nsanje,Nsanje District,Southern Region
+PET,America/Sao_Paulo,Federal Airport,PET,BR,POINT (-52.324444 -31.718056),49,,SBPK,Pelotas,Pelotas,Rio Grande do Sul
+PEU,America/Tegucigalpa,Puerto Lempira,PEU,HN,POINT (-83.76667 15.216667),0,,MHPL,Puerto Lempira,,Gracias a Dios
+PGB,Pacific/Port_Moresby,Pangoa,PGB,PG,POINT (141.55 -7.016667),39,,AYPC,,,
+WIC,Europe/London,Wick Airport,WIC,GB,POINT (-3.092600518453557 58.458685700000004),88,http://www.hial.co.uk/wick-airport.html,EGPC,Wick,Highland,Scotland
+PFJ,Atlantic/Reykjavik,Patreksfjordur,PFJ,IS,POINT (-19.008333 65.03333),2322,,BIPA,,,
+PAW,Pacific/Port_Moresby,Pambwa,PAW,PG,POINT (154.03334 -11.416667),85,,,,,
+PDG,Asia/Jakarta,Minangkabau International Airport,PDG,ID,POINT (100.2830944686123 -0.7882247499999999),32,http://minangkabau-airport.co.id/en/general/about-us,WIEE,Lubukalung,,West Sumatra
+PDL,Atlantic/Azores,Joao Paulo II Airport,PDL,PT,POINT (-25.701156342536887 37.74310625),229,http://www.ana.pt/en-US/Aeroportos/acores/PontaDelgada/Pages/Homepage-PontaDelgada.aspx,LPPD,Arrifes,Ponta Delgada,Azores
+CJM,Asia/Bangkok,Chumphon Airport,CJM,TH,POINT (99.3541087886431 10.7082453),29,,VTSE,Pathio,,Chumphon
+CJS,America/Ojinaga,Abraham Gonzalez International Airport,CJS,MX,POINT (-106.42801011006628 31.638493750000002),3910,,MMCS,Ciudad Juarez,,Chihuahua
+WJA,Pacific/Majuro,Woja,WJA,MH,POINT (168.552002 7.4523501),45,,"",Airuk,,Ailinglaplap Atoll
+PDO,Asia/Jakarta,Pendopo,PDO,ID,POINT (103.8799973 -3.2860701),121,,WIPQ,Gunungmegang Dalam,,South Sumatra
+PDR,America/Fortaleza,Presidente Dutra,PDR,BR,POINT (-44.4858434 -5.3075836),318,,"",Presidente Dutra,Presidente Dutra,Maranhao
+PDT,America/Los_Angeles,Eastern Oregon Regional Airport,PDT,US,POINT (-118.84198828544702 45.696233899999996),1476,,KPDT,Pendleton,Umatilla County,Oregon
+PDU,America/Montevideo,Paysandu,PDU,UY,POINT (-58.06789051266426 -32.36326055),124,,SUPU,Paysandu,,Paysandu
+PDX,America/Los_Angeles,Portland International Airport,PDX,US,POINT (-122.593141 45.5875208),39,http://www.portlandairportpdx.com,KPDX,Walnut Grove,Clark County,Washington
+PDZ,America/Caracas,Pedernales,PDZ,VE,POINT (-62.23099375316998 9.978795999999999),26,,SVPE,Pedernales,Municipio Pedernales,Delta Amacuro
+PEH,America/Argentina/Buenos_Aires,Pehuajo,PEH,AR,POINT (-61.85751299916548 -35.8404065),452,,SAZP,Pehuajo,Partido de Pehuajo,Buenos Aires
+PEX,Europe/Moscow,Pechora Airport,PEX,RU,POINT (57.13726820860171 65.12160625),157,,UUYP,Puteyets,,Komi Republic
+PGN,Pacific/Port_Moresby,Pangia,PGN,PG,POINT (144.2 -6.3),4458,,AYPG,Ialibu,,Southern Highlands
+PGU,Asia/Tehran,Ala'Marvdasht Airport,PGU,IR,POINT (52.735516 27.383959),22,,OIBP,Bandar-e `Asaluyeh,,Bushehr
+PGX,Europe/Paris,Perigueux Airport,PGX,FR,POINT (0.716667 45.183334),347,,LFBX,Perigueux,Departement de la Dordogne,Aquitaine
+KND,Africa/Lubumbashi,Kindu,KND,CD,POINT (25.91523212712827 -2.916353),1630,,FZOA,,,
+CJT,America/Mexico_City,Copalar,CJT,MX,POINT (-92.04572634432391 16.1740488),5111,,MMCO,La Trinitaria,,Chiapas
+PGZ,America/Sao_Paulo,Comte Antonio Amilton Beraldo Airport,PGZ,BR,POINT (-50.15 -25.083332),2969,,SBPG,Ponta Grossa,Ponta Grossa,Parana
+PHA,Asia/Ho_Chi_Minh,Phan Rang,PHA,VN,POINT (108.95 11.633333),75,,VVPR,Phan Rang-Thap Cham,,Ninh Thuan
+PHB,America/Fortaleza,Santos Dumont,PHB,BR,POINT (-41.738335 -2.891667),19,,SBPB,Parnaiba,Parnaiba,Piaui
+PHG,Africa/Lagos,Port Harcourt City,PHC,NG,POINT (6.833333 5.033333),55,,"",Elele,,Rivers
+PHH,Asia/Ho_Chi_Minh,Phan Thiet,PHH,VN,POINT (108.066666 10.9),229,,,Phan Thiet,,Binh Thuan
+CKV,America/Chicago,Outlaw Field,CKV,US,POINT (-87.41516535331829 36.6195673),410,http://www.clarksvilleregional.com/,KCKV,Oak Grove,Christian County,Kentucky
+CLA,Asia/Dhaka,Comilla,CLA,BD,POINT (91.1880657 23.4370218),26,,VGCM,Comilla,,Chittagong
+PHI,America/Fortaleza,Pinheiro,PHI,BR,POINT (-45.083332 -2.516667),22,,SNYE,Pinheiro,Pinheiro,Maranhao
+CLE,America/New_York,Cleveland Hopkins International Airport,CLE,US,POINT (-81.85120214358412 41.406618550000005),761,http://www.clevelandairport.com/,KCLE,Brook Park,Cuyahoga County,Ohio
+PHJ,Australia/Sydney,Port Hunter,NTL,AU,POINT (151.76666 -32.916668),22,,,Carrington,Newcastle,New South Wales
+PFB,America/Sao_Paulo,Passo Fundo Airport,PFB,BR,POINT (-52.32669864043906 -28.2435244),2362,,SBPF,Passo Fundo,Passo Fundo,Rio Grande do Sul
+PFO,Asia/Nicosia,Paphos International Airport,PFO,CY,POINT (32.489094835033505 34.71791325),22,http://paphosinternationalairport.com/index_papxmas.html,LCPH,Paphos,,Pafos
+PFQ,Asia/Tehran,Parsabad,PFQ,IR,POINT (47.88360730015924 39.60367545),249,,OITP,Parsabad,,Ardabil
+CLJ,Europe/Bucharest,Avram Iancu Cluj International Airport,CLJ,RO,POINT (23.68460819169495 46.78630484999999),1033,http://www.airportcluj.ro/,LRCL,Sannicoara,Comuna Apahida,Cluj
+CLL,America/Chicago,Easterwood Airport,CLL,US,POINT (-96.3641116417029 30.58822845),288,,KCLL,College Station,Brazos County,Texas
+CON,America/New_York,Concord,CON,US,POINT (-71.53333 43.2),275,http://www.concordnh.gov/facilities/facility/details/Concord-Municipal-Airport-31,KCON,Concord,Merrimack County,New Hampshire
+PHP,America/Chicago,Philip,PHP,US,POINT (-101.666664 44.333332),2378,http://www.philipsouthdakota.com/philip_airport_19.html,KPHP,Philip,Haakon County,South Dakota
+NDD,Africa/Luanda,Sumbe,NDD,AO,POINT (13.848971603465763 -11.167935199999999),32,,FNSU,,,
+PFR,Africa/Lubumbashi,Ilebo,PFR,CD,POINT (20.58850987797728 -4.330204500000001),1446,,FZVS,Ilebo,,Kasai-Occidental
+PGH,Asia/Kolkata,Pantnagar Airport,PGH,IN,POINT (79.47558715752675 29.0324015),728,,VIPT,Kichha,Udham Singh Nagar,Uttarakhand
+CQP,Australia/Brisbane,Cape Flattery,CQP,AU,POINT (147.5 -18.2),3609,,YCFL,Magnetic Island,Townsville,Queensland
+PGK,Asia/Jakarta,Depati Amir Airport,PGK,ID,POINT (106.1396720726779 -2.16040755),65,,WIPK,Pangkalpinang,,Bangka-Belitung Islands
+LIV,America/Anchorage,Livengood,LIV,US,POINT (-148.66667 65.51667),425,,"4AK",,,
+PGQ,Asia/Jayapura,Buli Airport,PGQ,ID,POINT (128.38098388661 0.9171716999999999),19,,WAEM,Buli,,Maluku Utara
+CMX,America/Detroit,Houghton County Airport,CMX,US,POINT (-88.48651130231423 47.16827015),1007,,KCMX,Dollar Bay,Houghton County,Michigan
+CNB,Australia/Sydney,Coonamble,CNB,AU,POINT (148.37584984377042 -30.982210549999998),538,,YCNM,Coonamble,Coonamble,New South Wales
+CNF,America/Sao_Paulo,Tancredo Neves International Airport,BHZ,BR,POINT (-43.96836942393943 -19.63339785),2713,http://www.infraero.gov.br/usa/aero_prev_home.php?ai=207,SBCF,Lagoa Santa,Lagoa Santa,Minas Gerais
+PGS,America/Phoenix,Peach Springs,PGS,US,POINT (-113.4146572 35.5430476),4973,,,Peach Springs,Mohave County,Arizona
+PGV,America/New_York,Pitt-Greenville Airport,PGV,US,POINT (-77.38001839674764 35.63797635),32,,KPGV,Greenville,Pitt County,North Carolina
+PHC,Africa/Lagos,Port Harcourt International Airport,PHC,NG,POINT (6.9519059120197095 5.01669605),72,http://www.faannigeria.org/nigeria-airport.php?airport=4,DNPO,Emuoha,,Rivers
+PHF,America/New_York,Newport News/Williamsburg International Airport,PHF,US,POINT (-76.49401292414504 37.132296499999995),42,,KPHF,Yorktown,York County,Virginia
+PJM,America/Costa_Rica,Puerto Jimenez,PJM,CR,POINT (-83.333336 8.583333),0,http://www.natureair.com/destinations/jimenez_costa_rica.html,MRPJ,Golfito,Canton de Golfito,Puntarenas
+PJZ,America/Cancun,Puerto Juarez,PJZ,MX,POINT (-86.833336 21.166668),32,,,Cancun,,Quintana Roo
+PHS,Asia/Bangkok,Phitsanulok Airport,PHS,TH,POINT (100.27469884541676 16.781625400000003),144,,VTPP,Phitsanulok,,Phitsanulok
+PKB,America/New_York,Wood County Airport,PKB,US,POINT (-81.43889 39.345554),912,,KPKB,Reno,Washington County,Ohio
+CNM,America/Denver,Cavern City Air Terminal,CNM,US,POINT (-104.2624048931695 32.33739365),3267,,KCNM,Carlsbad,Eddy County,New Mexico
+PKC,Asia/Kamchatka,Petropavlovsk-Kamchatsky Airport,PKC,RU,POINT (158.65 53.016666),39,,UHPP,Petropavlovsk-Kamchatsky,,Kamtsjatka
+PKD,America/Chicago,Park Rapids,PKD,US,POINT (-95.07167 46.898335),1384,http://ci.park-rapids.mn.us/i_want_to/airport/index.php,KPKD,Park Rapids,Hubbard County,Minnesota
+PHT,America/Chicago,Henry County,PHT,US,POINT (-88.3817119 36.3417248),541,http://www.paristnairport.com/default.htm,KPHT,Paris,Henry County,Tennessee
+PKF,America/Chicago,Park Falls,PKF,US,POINT (-90.53333 45.933334),1512,http://www.cityofparkfalls.com/community-resources/municipal-airport/,KPKF,Park Falls,Price County,Wisconsin
+CNN,Asia/Kolkata,Kannur International Airport,CNN,IN,POINT (75.54478488645225 11.9172722),354,,VOKN,Mattanur,Kannur,Kerala
+PHW,Africa/Johannesburg,Phalaborwa Airport,PHW,ZA,POINT (31.15517526212288 -23.9364999),1423,,FAPH,Phalaborwa,Mopani District Municipality,Limpopo
+CNO,America/Los_Angeles,Chino,CNO,US,POINT (-117.63479292408307 33.973959300000004),610,http://cms.sbcounty.gov/airports/Airports/Chino.aspx,KCNO,Chino,San Bernardino County,California
+ANZ,Australia/Darwin,Angus Downs,ANZ,AU,POINT (132.16667 -25.083332),1656,,"",,,
+AOA,Pacific/Port_Moresby,Aroa,AOA,PG,POINT (146.8 -9.05),29,,"",,,
+PKH,Europe/Athens,Alexion,PKH,GR,POINT (23.147223 37.301388),42,,LGHL,Porto Cheli,Nomos Argolidos,Peloponnese
+PHX,America/Phoenix,Phoenix Sky Harbor International Airport,PHX,US,POINT (-112.00942230268426 33.43289075),1112,http://phoenix.gov/skyharborairport/,KPHX,Tempe Junction,Maricopa County,Arizona
+PHY,Asia/Bangkok,Phetchabun,PHY,TH,POINT (101.1905078 16.6758588),419,,VTPB,Lom Sak,,Phetchabun
+PIA,America/Chicago,Peoria International Airport,PIA,US,POINT (-89.6989893705192 40.677171349999995),666,,KPIA,Bellevue,Peoria County,Illinois
+BGJ,Atlantic/Reykjavik,Borgarfjordur Eystri,BGJ,IS,POINT (-14.5 66),0,,BIBF,,,
+BZV,Africa/Brazzaville,Maya Maya Airport,BZV,CG,POINT (15.253938331362257 -4.2509559),974,,FCBB,Brazzaville,,Brazzaville
+CMI,America/Chicago,Willard University Airport,CMI,US,POINT (-88.27156684832212 40.0383172),721,,KCMI,Savoy,Champaign County,Illinois
+CSJ,Asia/Ho_Chi_Minh,Cape St Jacques,CSJ,VN,POINT (111 10.033333),0,,,Phu Quy,,Binh Thuan
+CNS,Australia/Brisbane,Cairns Airport,CNS,AU,POINT (145.75154952736838 -16.877789200000002),59,,YBCS,Cairns,Cairns,Queensland
+CNX,Asia/Bangkok,Chiang Mai International Airport,CNX,TH,POINT (98.96487808920725 18.76684265),971,,VTCC,Chiang Mai,,Chiang Mai
+PTC,America/Anchorage,Port Alice,PTC,US,POINT (-133.585 55.78361),446,,"16K",,,
+CRK,Asia/Manila,Diosdado Macapagal International (Clark International),CRK,PH,POINT (120.55746496222983 15.18716705),462,http://www.clarkairport.com/,RPLC,Santol,,Central Luzon
+PKM,America/Guyana,Port Kaituma,PKM,GY,POINT (-59.8793252 7.7439968),19,,,,,
+EAL,Pacific/Kwajalein,Elenak,EAL,MH,POINT (166.8454746 9.3201752),26,,"",,,
+EGM,Pacific/Guadalcanal,Sege Airport,EGM,SB,POINT (157.87506 -8.577956),26,,AGGS,,,
+PIB,America/Chicago,Hattiesburg-Laurel Regional Airport,LUL,US,POINT (-89.3363366 31.4672),223,,KPIB,Rawls Springs,Forrest County,Mississippi
+PIE,America/New_York,St. Petersburg-Clearwater International Airport,TPA,US,POINT (-82.68769326031256 27.90994325),49,,KPIE,South Highpoint,Pinellas County,Florida
+PIH,America/Boise,Pocatello Regional Airport,PIH,US,POINT (-112.5928392860736 42.9074805),4442,,KPIH,Chubbuck,Bannock County,Idaho
+PIN,America/Manaus,Parintins,PIN,BR,POINT (-56.77727067382461 -2.6731800000000003),36,,SWPI,Parintins,Parintins,Amazonas
+PIR,America/Chicago,Pierre Regional Airport,PIR,US,POINT (-100.28256187290475 44.37841305),1650,,KPIR,Pierre,Hughes County,South Dakota
+PJB,America/Phoenix,Payson,PJB,US,POINT (-111.33883155349753 34.25658155),5118,http://www.paysonaz.gov/Departments/Airport/AirportHome.html,KPAN,Payson,Gila County,Arizona
+WVK,Indian/Antananarivo,Manakara,WVK,MG,POINT (48.02172132397605 -22.119326800000003),45,,FMSK,Manakara,,Vatovavy Fitovinany
+PLP,America/Panama,La Palma,PLP,PA,POINT (-78.13333 8.333333),98,,MPLP,Seteganti,,Darien
+WVL,America/New_York,Robert Lafleur,WVL,US,POINT (-69.67663290752361 44.533188249999995),291,,KWVL,Oakland,Kennebec County,Maine
+PLT,America/Bogota,Plato,PLT,CO,POINT (-74.78333 9.783333),39,,SKPL,Plato,,Magdalena
+PLU,America/Sao_Paulo,Belo Horizonte Airport,BHZ,BR,POINT (-43.75 -19.75),2545,http://www.infraero.gov.br/usa/aero_prev_home.php?ai=204,SBBH,Santa Luzia,Santa Luzia,Minas Gerais
+PLV,Europe/Kiev,Poltava,PLV,UA,POINT (34.533333 49.583332),498,,UKHP,Poltava,,Poltava
+CRL,Europe/Brussels,Charleroi Brussels South Airport,BRU,BE,POINT (4.466173283859401 50.463637250000005),567,http://www.charleroi-airport.com/doc.php?nd=o29&tid=29&lg=2&docid=1&site=1,EBCI,Charleroi,Province du Hainaut,Wallonia
+ASK,Africa/Abidjan,Yamoussoukro,ASK,CI,POINT (-5.283333 6.816667),656,,DIYO,Yamoussoukro,,Lacs
+BVC,Atlantic/Cape_Verde,Rabil Airport,BVC,CV,POINT (-22.833332 16.083332),111,,GVBA,Vila de Sal Rei,,Boa Vista
+PLY,America/Indiana/Indianapolis,Plymouth,PLY,US,POINT (-86.30167 41.365276),770,http://www.plymouthin.com/index.php/departments/airport/,C65,Plymouth,Marshall County,Indiana
+CQD,Asia/Tehran,Shahre-kord,CQD,IR,POINT (50.83988980381278 32.29394005),6692,,OIFS,Shahrekord,,Chahar Mahall va Bakhtiari
+CRA,Europe/Bucharest,Craiova Airport,CRA,RO,POINT (23.889104852848654 44.318807050000004),603,http://www.aeroportcraiova.ro/,LRCV,Carcea,Comuna Carcea,Dolj
+PMA,Africa/Dar_es_Salaam,Wawi Airport,PMA,TZ,POINT (39.801945 -5.242222),98,,HTPE,Chake Chake,,Pemba South
+CRE,America/New_York,Grand Strand Airport,MYR,US,POINT (-78.7233511 33.8112835),32,,KCRE,North Myrtle Beach,Horry County,South Carolina
+CRV,Europe/Rome,Crotone,CRV,IT,POINT (17.079721192856304 38.99735655),495,http://www.aeroporto.kr.it/cartaservizi_eng.asp,LIBC,Isola di Capo Rizzuto,Provincia di Crotone,Calabria
+PMB,America/Chicago,Intermediate,PMB,US,POINT (-98.083336 49),1299,,KPMB,Morden,,Manitoba
+PMD,America/Los_Angeles,La Palmdale Regional Airport,PMD,US,POINT (-118.083336 34.6275),2500,,KPMD,Palmdale,Los Angeles County,California
+YYE,America/Vancouver,Northern Rockies Regional Airport,YYE,CA,POINT (-122.59140459442511 58.836634450000005),1253,,CYYE,Fort Nelson,,British Columbia
+YYF,America/Vancouver,Penticton Airport,YYF,CA,POINT (-119.60252560709915 49.46486925000001),1129,,CYYF,Penticton,,British Columbia
+YYG,America/Halifax,Charlottetown Airport,YYG,CA,POINT (-63.12947829366236 46.2906776),160,,CYYG,Charlottetown,,Prince Edward Island
+YYJ,America/Vancouver,Victoria International Airport,YYJ,CA,POINT (-123.4217089740095 48.6463019),63,http://www.victoriaairport.com/,CYYJ,North Saanich,,British Columbia
+CSM,America/Chicago,Sherman,CSM,US,POINT (-96.933334 35.539165),892,,KCSM,Meeker,Lincoln County,Oklahoma
+PME,Europe/London,Portsmouth,PME,GB,POINT (-1.083333 50.8),49,,,Portsmouth,Portsmouth,England
+PMG,America/Campo_Grande,International,PMG,BR,POINT (-55.7 -22.55),2119,,SBPP,Ponta Pora,Ponta Pora,Mato Grosso do Sul
+CST,Pacific/Fiji,Castaway,CST,FJ,POINT (177.5 -17.5),0,,NFCS,Lautoka,,Western
+PMH,America/New_York,Greater Portsmouth Regional,PMH,US,POINT (-82.98333 38.75),620,http://www.sciotocountyohio.com/airports.html,KPMH,Portsmouth,Scioto County,Ohio
+POI,America/La_Paz,Potosi,POI,BO,POINT (-65.72361 -19.543056),12801,,SLPO,Potosi,,Potosi
+PNJ,Asia/Shanghai,Peng Lai/Sha He Kou,PNJ,CN,POINT (120.812775 37.808887),19,,,Nanwang,,Shandong Sheng
+PNK,Asia/Pontianak,Supadio International Airport,PNK,ID,POINT (109.40533 -0.14735),49,,WIOO,Pontianak,,West Kalimantan
+PIQ,America/Guyana,Pipillipai,PIQ,GY,POINT (-59 5.5),459,,,,,
+POM,Pacific/Port_Moresby,Jacksons International Airport,POM,PG,POINT (147.21712862095984 -9.4402674),88,,AYPY,,,
+AIG,Africa/Bangui,Yalinga,AIG,CF,POINT (23.2605938 6.521706),2001,,FEFY,,,
+AMH,Africa/Addis_Ababa,Arba Mintch Airport,AMH,ET,POINT (37.576942 6.036111),3914,,HAAM,Arba Minch',,"Southern Nations, Nationalities, and People's Region"
+AQY,America/Anchorage,Alyeska,AQY,US,POINT (-149.1234394 60.9659745),118,,"",,,
+PNG,America/Sao_Paulo,Paranagua,PNG,BR,POINT (-48.53062440956646 -25.53969285),32,,SSPG,Paranagua,Paranagua,Parana
+PNN,America/New_York,Princeton,PNN,US,POINT (-67.566666 45.233334),154,,KPNN,Calais,Washington County,Maine
+DIW,Asia/Colombo,Mawella Lagoon Airport,DIW,LK,POINT (80.73323 5.990751),0,,"",,,
+DOE,America/Paramaribo,Djoemoe,DOE,SR,POINT (-55.483334 4.016667),288,,SMDJ,,,
+PNU,America/Denver,Panguitch,PNU,US,POINT (-112.392345 37.848623),6738,http://panguitch.com/business-directory/1300/panguitch-municipal-airport/,U55,Panguitch,Garfield County,Utah
+PNT,America/Santiago,Teniente J. Gallardo,PNT,CL,POINT (-72.51667 -51.683334),209,,SCNT,Puerto Natales,,Magallanes
+PNV,Europe/Vilnius,Panevezys,PNV,LT,POINT (24.383333 55.733334),190,,EYPP,Panevezys,Panevezys City,Panevezys
+EPN,Africa/Brazzaville,Epena,EPN,CG,POINT (17.533333 1.366667),1020,,,,,
+PNX,America/Chicago,Grayson County,PNX,US,POINT (-96.611115 33.63889),738,http://www.northtexasregionalairport.com/,KGYI,Sherman,Grayson County,Texas
+PNY,Asia/Kolkata,Pondicherry,PNY,IN,POINT (79.8 12.016667),95,,VOPC,Auroville,Villupuram,Tamil Nadu
+BTO,America/Paramaribo,Botopasie,BTO,SR,POINT (-55.45 4.25),305,,SMBO,,,
+PNZ,America/Recife,Petrolina International Airport,PNZ,BR,POINT (-40.490555 -9.393333),1223,,SBPL,Petrolina,Petrolina,Pernambuco
+CBU,Europe/Berlin,Cottbus,CBU,DE,POINT (14.299167 51.77028),206,,EDCD,,,
+POB,America/New_York,Pope AFB,FAY,US,POINT (-78.88333 35.05),108,http://www.pope.af.mil/,KPOB,Fayetteville,Cumberland County,North Carolina
+COA,America/Los_Angeles,Columbia,COA,US,POINT (-120.41434359242209 38.03086945),2093,http://www.tuolumnecounty.ca.gov/index.aspx?NID=372,O22,Columbia,Tuolumne County,California
+CSK,Africa/Dakar,Cap Skirring,CSK,SN,POINT (-16.750892885762433 12.39821835),49,,GOGS,Oussouye,,Ziguinchor
+CSN,America/Los_Angeles,Carson City,CSN,US,POINT (-119.74021540263364 39.194508049999996),4698,http://flycarsoncity.com/,KCXP,Carson City,Carson City,Nevada
+CSU,America/Sao_Paulo,Santa Cruz Do Sul,CSU,BR,POINT (-52.41103406734325 -29.68380235),626,,SSSC,Santa Cruz do Sul,Santa Cruz Do Sul,Rio Grande do Sul
+BCG,America/Guyana,Bemichi,BCG,GY,POINT (-58.55 6.55),160,,SYBE,,,
+CTA,Europe/Rome,Catania-Fontanarossa Airport,CTA,IT,POINT (15.067568274467547 37.467242600000006),22,http://www.aeroporto.catania.it/,LICC,Catania,Catania,Sicily
+POC,America/Los_Angeles,Brackett Field,POC,US,POINT (-117.51667 34.033333),826,http://dpw.lacounty.gov/avi/airports/BrackettField.aspx,KPOC,Glen Avon,Riverside County,California
+GWN,Pacific/Port_Moresby,Gnarowein,GWN,PG,POINT (146.25 -6.566667),597,,"",,,
+HZP,America/Edmonton,Horizon,HZP,CA,POINT (-111.70111 57.381668),905,,CYNR,,,
+YZY,Asia/Shanghai,Zhangye Ganzhou Airport,YZY,CN,POINT (100.67144459719779 38.8038395),5280,,ZLZY,Dongle,,Gansu Sheng
+ZAD,Europe/Zagreb,Zadar Airport,ZAD,HR,POINT (15.357488127906656 44.100174949999996),289,https://www.zadar-airport.hr/en,LDZD,Galovac,,Zadarska
+ZAG,Europe/Zagreb,Zagreb International Airport,ZAG,HR,POINT (16.07231616098094 45.74027185),353,http://www.zagreb-airport.hr/,LDZA,Micevec,,Zagrebacka
+POE,America/Chicago,Polk AAF,POE,US,POINT (-93.19222 31.045834),265,http://www.jrtc-polk.army.mil/,KPOE,Fort Polk South,Vernon Parish,Louisiana
+POF,America/Chicago,Earl Fields Memorial,POF,US,POINT (-90.31389 36.71111),308,http://www.poplarbluff-mo.gov/index.asp?SEC=CFDD2948-56CF-42FC-92CA-6AAA7D0952AA&Type=B_BASIC,KPOF,Poplar Bluff,Butler County,Missouri
+ZAM,Asia/Manila,Zamboanga International Airport,ZAM,PH,POINT (122.05983240893659 6.92226375),33,http://www.zamboanga.net/airportinsert.htm,RPMZ,Zamboanga,,Zamboanga Peninsula
+ZIS,Africa/Tripoli,Alzintan Airport,ZIS,LY,POINT (12.247363631615961 31.76947005),2080,,HLZN,Az Zintan,,Sha`biyat al Jabal al Gharbi
+ZJG,America/Winnipeg,Jenpeg,ZJG,CA,POINT (-98.04607141974127 54.51907755),729,,CZJG,Thompson,,Manitoba
+BEQ,Europe/London,Honington,BEQ,GB,POINT (0.7708089433284024 52.34289805),180,,EGXH,Thetford,Norfolk,England
+ZJN,America/Winnipeg,Swan River,ZJN,CA,POINT (-101.2352046 52.1162532),1100,,CZJN,Swan River,,Manitoba
+ZKB,Africa/Lusaka,Kasaba Bay,ZKB,ZM,POINT (30.6630001 -8.5249996),2780,,FLKY,Mpulungu,,Northern
+CTG,America/Bogota,Rafael Nunez International Airport,CTG,CO,POINT (-75.51305749492116 10.441642850000001),42,,SKCG,Cartagena,,Bolivar
+CUI,America/Bogota,Currillo,CUI,CO,POINT (-72 4.666667),521,,"",Mani,,Casanare
+PPM,America/New_York,Pompano Beach,PPM,US,POINT (-80.11667 26.25),32,http://pompanobeachfl.gov/index.php/pages/pw_airpark/airpark,KPMP,Kendall Green,Broward County,Florida
+PPR,Asia/Jakarta,Pasir Pangarayan,PPR,ID,POINT (100.36667 0.833333),190,,WIDE,Pasirpengarayan,,Riau
+CVC,Australia/Adelaide,Cleve,CVC,AU,POINT (136.50503364234316 -33.709539050000004),583,,YCEE,Cleve,Cleve,South Australia
+LZM,Africa/Luanda,Luzamba,LZM,AO,POINT (18.083332 -9.05),2893,,FNLZ,,,
+CVE,America/Bogota,Covenas,CVE,CO,POINT (-75.6913 9.40092),78,,SKCV,San Antero,,Cordoba
+CVF,Europe/Paris,Courchevel,CVF,FR,POINT (6.633762365254487 45.397101),6568,,LFLJ,Courchevel,Departement de la Savoie,Rhone-Alpes
+AIW,Africa/Windhoek,Ai-ais,AIW,NA,POINT (17.596451406338325 -27.9948193),1998,,FYAA,,,
+AZB,Pacific/Port_Moresby,Amazon Bay,AZB,PG,POINT (148.81667 -10.15),42,,"",,,
+XGR,America/Montreal,Kangiqsualujjuaq Airport,XGR,CA,POINT (-65.98333 58.5),215,,CYLU,,,
+CDL,America/Anchorage,Candle,CDL,US,POINT (-161.9379772 65.9092649),68,,AK75,,,
+POJ,America/Sao_Paulo,Patos De Minas,QPT,BR,POINT (-46.4919252194623 -18.67291465),2746,,SNPD,Patos de Minas,Patos De Minas,Minas Gerais
+CUL,America/Mazatlan,Culiacan International Airport,CUL,MX,POINT (-107.47833897947221 24.76450365),88,,MMCL,El Diez,Culiacan,Sinaloa
+CUM,America/Caracas,Cumana,CUM,VE,POINT (-64.13215209001493 10.4510747),32,,SVCU,Cumana,Municipio Sucre,Sucre
+PPU,Asia/Rangoon,Papun,PPU,MM,POINT (97.45 18.066668),367,,VYPP,Sop Moei,,Mae Hong Son
+CUN,America/Cancun,Cancun International Airport,CUN,MX,POINT (-86.8818149087711 21.0407394),72,http://www.asur.com.mx/asur/ingles/aeropuertos/cancun/cancun.asp,MMUN,Alfredo V. Bonfil,,Quintana Roo
+POO,America/Sao_Paulo,Pocos De Caldas,POO,BR,POINT (-46.566647194940074 -21.842504849999997),4110,,SBPC,Pocos de Caldas,Pocos De Caldas,Minas Gerais
+POR,Europe/Helsinki,Pori Airport,POR,FI,POINT (21.7909161 61.469192),29,http://www.finavia.fi/en/pori/,EFPO,Pori,Pori,Satakunta
+PQC,Asia/Ho_Chi_Minh,Phu Quoc Airport,PQC,VN,POINT (103.96324 10.223722),26,,VVPQ,Duong GJong,,Kien Giang
+CUP,America/Caracas,Carupano,CUP,VE,POINT (-63.2615402262505 10.660728500000001),95,,SVCP,Carupano,Municipio Bermudez,Sucre
+CUR,America/Curacao,Curacao International Airport,CUR,CW,POINT (-68.96216089958281 12.1890286),13,,TNCC,Sint Michiel Liber,,
+CUT,America/Argentina/Salta,Cutral,CUT,AR,POINT (-69 -38.9),1870,,SAZW,Plaza Huincul,,Neuquen
+CUU,America/Chihuahua,Gen Fierro Villalobos Airport,CUU,MX,POINT (-105.96952 28.704048),4422,,MMCU,Ninguno [CERESO],Aquiles Serdan,Chihuahua
+CUV,America/Caracas,Casigua,CUV,VE,POINT (-70.95 11.066667),55,,SVCG,Dabajuro,Municipio Dabajuro,Falcon
+PQD,Asia/Colombo,Pasikudha SPB,BTC,LK,POINT (81.68 7.71),0,,"",Batticaloa,,Eastern Province
+PQI,America/New_York,Presque Isle Municipal Airport,PQI,US,POINT (-68.0475 46.685),459,,KPQI,Presque Isle,Aroostook County,Maine
+POS,America/Port_of_Spain,Piarco International Airport,POS,TT,POINT (-61.339509684592386 10.59734525),49,,TTPP,Arouca,,Tunapuna/Piarco
+POZ,Europe/Warsaw,Poznan Airport,POZ,PL,POINT (16.8317916444456 52.42056395),249,http://www.airport-poznan.com.pl/en/,EPPO,Baranowo,Powiat poznanski,Greater Poland Voivodeship
+PPF,America/Chicago,Tri-City,PPF,US,POINT (-95.508499 37.3323519),875,http://www.parsonsks.com/index.aspx?NID=249,KPPF,Cherryvale,Montgomery County,Kansas
+PPI,Australia/Adelaide,Port Pirie,PPI,AU,POINT (137.99909168012167 -33.239989800000004),42,,YPIR,Port Pirie,Port Pirie City and Dists,South Australia
+CUZ,America/Lima,Alejandro Velasco Astete International Airport,CUZ,PE,POINT (-71.93777215348605 -13.5362553),10774,http://www.corpac.gob.pe/,SPZO,Cusco,Provincia de Cusco,Cusco
+CVG,America/New_York,Cincinnati/Northern Kentucky Airport,CVG,US,POINT (-84.66145 39.0555),866,http://www.cvgairport.com,KCVG,Hebron,Boone County,Kentucky
+PPJ,Asia/Jakarta,Pulau Panjang,PPJ,ID,POINT (103.3004323 -0.6331905),36,,WIHG,Pulaukijang,,Riau
+XPK,America/Winnipeg,Pukatawagan,XPK,CA,POINT (-101.26402499595729 55.74924995),928,,CZFG,,,
+CVI,America/Argentina/Rio_Gallegos,Caleta Olivia,CVI,AR,POINT (-67.416664 -46.416668),0,,"",Caleta Olivia,,Santa Cruz
+PPK,Asia/Almaty,Petropavlovsk Airport,PPK,KZ,POINT (69.18321518318967 54.774539950000005),452,,UACP,Bishkul,,Soltustik Qazaqstan
+PPN,America/Bogota,Guillermo Leon Valencia Airport,PPN,CO,POINT (-76.60875093700525 2.4547051),5682,,SKPP,Popayan,,Cauca
+PPQ,Pacific/Auckland,Paraparaumu Airport,PPQ,NZ,POINT (174.9862494817145 -40.904610000000005),22,,NZPP,Paraparaumu,Kapiti Coast District,Wellington
+PPS,Asia/Manila,Puerto Princesa International Airport,PPS,PH,POINT (118.75835135731876 9.74238505),55,,RPVP,Puerto Princesa,,Mimaropa
+PSI,Asia/Karachi,Pasni,PSI,PK,POINT (63.34479438776327 25.29043135),45,,OPPI,Pasni,,Balochistan
+PSD,Africa/Cairo,Port Said,PSD,EG,POINT (32.3 31.266666),62,http://en.wikipedia.org/wiki/Port_Said_Airport,HEPS,Port Said,,Muhafazat Bur Sa`id
+PSH,Europe/Berlin,St Peter,PSH,DE,POINT (8.116667 54.5),0,,EDXO,Nebel,,Schleswig-Holstein
+PSJ,Asia/Makassar,Poso,PSJ,ID,POINT (120.73333 -1.383333),0,,WAMP,Poso,,Central Sulawesi
+PSL,Europe/London,Perth,PSL,GB,POINT (-3.566667 56.233334),1148,,EGPT,Saline,Fife,Scotland
+CVJ,America/Mexico_City,General Mariano Matamoros Airport,CVJ,MX,POINT (-99.25 18.916668),5003,,MMCB,Cuernavaca,Cuernavaca,Morelos
+CVM,America/Monterrey,Ciudad Victoria Airport,CVM,MX,POINT (-98.96528 23.713888),757,,MMCV,Ciudad Victoria,,Tamaulipas
+PSM,America/New_York,Pease Air Force Base,BOS,US,POINT (-70.88272 43.179585),131,,KPSM,Dover,Strafford County,New Hampshire
+PSN,America/Chicago,Palestine Municipalcipal Airport,PSN,US,POINT (-95.71667 31.783333),406,,KPSN,Palestine,Anderson County,Texas
+PSO,America/Bogota,Cano Airport,PSO,CO,POINT (-77.25 1.466667),3297,,SKPS,San Lorenzo,,Narino
+PSQ,America/New_York,SPB,PHL,US,POINT (-75.24861 39.868057),19,http://www.phillyseaplanebase.com/,"9N2",Paulsboro,Gloucester County,New Jersey
+CXI,Pacific/Kiritimati,Christmas Island Airport,CXI,KI,POINT (-157.45 1.966667),0,,PLCH,London Village,Kiritimati,Line Islands
+GRC,Africa/Monrovia,Grand Cess,GRC,LR,POINT (-8.166667 4.6),200,,"",,,
+CXJ,America/Sao_Paulo,Hugo Cantergiani Regional Airport,CXJ,BR,POINT (-51.1861647969846 -29.19705975),2424,,SBCX,Caxias do Sul,Caxias Do Sul,Rio Grande do Sul
+CXL,America/Los_Angeles,International,CXL,US,POINT (-115.51667 32.666668),-6,http://calexico.ca.gov/index.php?option=com_content&task=blogcategory&id=77&Itemid=90,KCXL,Calexico,Imperial County,California
+CXO,America/Chicago,Montgomery Co,CXO,US,POINT (-95.45 30.316668),226,https://web.archive.org/web/20160301220928/http://www.lonestarairport.org:80/,KCXO,Conroe,Montgomery County,Texas
+CXP,Asia/Jakarta,Tunggul Wulung,CXP,ID,POINT (109 -7.733333),32,,WIHL,Karangbadar Kidul,,Central Java
+CXR,Asia/Ho_Chi_Minh,Cam Ranh International Airport,NHA,VN,POINT (109.21728855358893 11.9968644),78,,VVCR,Cam Lam,,Khanh Hoa
+CXT,Australia/Brisbane,Charters Towers,CXT,AU,POINT (146.26917 -20.046667),935,,YCHT,,,
+CYC,America/Belize,Caye Chapel,CYC,BZ,POINT (-88.833336 17.666668),104,,"",Shipyard,,Orange Walk
+AXU,Africa/Addis_Ababa,Axum Airport,AXU,ET,POINT (38.716667 14.120833),6978,,HAAX,Aksum,,Tigray
+BDZ,Pacific/Port_Moresby,Baindoung,BDZ,PG,POINT (146.94186234928185 -6.346974149999999),4373,,AYBG,,,
+BFX,Africa/Douala,Bafoussam,BFX,CM,POINT (10.4 5.483333),4507,,FKKU,Bafoussam,,West
+BGB,Africa/Libreville,Booue,BGB,GA,POINT (11.94279 -0.1072205),538,,FOGB,,,
+BGK,America/Belize,Big Creek,BGK,BZ,POINT (-88.4098853377186 16.520128800000002),49,,MZBG,,,
+BOV,Pacific/Port_Moresby,Boang,BOV,PG,POINT (153.33333 -3.366667),0,,"",,,
+CWA,America/Chicago,Central Wisconsin Airport,AUW,US,POINT (-89.66716494412262 44.7727172),1236,,KCWA,Mosinee,Marathon County,Wisconsin
+CWB,America/Sao_Paulo,Afonso Pena International Airport,CWB,BR,POINT (-49.176544 -25.5322),2956,,SBCT,Sao Jose dos Pinhais,Sao Jose Dos Pinhais,Parana
+YAA,America/Vancouver,Anahim Lake,YAA,CA,POINT (-125.30346583772354 52.451219800000004),3635,,CAJ4,,,
+PST,America/Havana,Preston,PST,CU,POINT (-75.666664 20.75),0,,,Banes,,Holguin
+XSI,America/Winnipeg,South Indian Lake,XSI,CA,POINT (-98.90739824491808 56.7910684),830,,CZSN,,,
+CWC,Europe/Kiev,Chernivtsi International Airport,CWC,UA,POINT (25.9785329173081 48.26047165),728,,UKLN,Chernivtsi,,Chernivtsi
+CWF,America/Chicago,Chennault International.,LCH,US,POINT (-93.23189 30.305918),29,http://www.chennault.org/,KCWF,Moss Bluff,Calcasieu Parish,Louisiana
+CWI,America/Chicago,Clinton,CWI,US,POINT (-90.33195 41.829445),698,,KCWI,Camanche,Clinton County,Iowa
+CWJ,Asia/Chongqing,Cangyuan Washan Airport,CWJ,CN,POINT (99.37478144463962 23.2772471),5744,,ZPCW,Mengdong,,Yunnan
+CWL,Europe/London,Cardiff Airport,CWL,GB,POINT (-3.339210332510528 51.39850525),252,http://www.cwlfly.com/,EGFF,Rhoose,Vale of Glamorgan,Wales
+CWT,Australia/Sydney,Cowra,CWT,AU,POINT (148.6487317274209 -33.844791900000004),944,,YCWR,Cowra,Cowra,New South Wales
+CWW,Australia/Sydney,Corowa,CWW,AU,POINT (146.35 -35.966667),485,,YCOR,Corowa,Corowa Shire,New South Wales
+CWX,America/Phoenix,Cochise County Airport,CWX,US,POINT (-109.89478388178297 32.2460187),4192,,P33,Willcox,Cochise County,Arizona
+CXA,America/Caracas,Caicara Del Orinoco,CXA,VE,POINT (-66.16444198201162 7.62584735),134,,SVCD,Maripa,Municipio Sucre,Bolivar
+CXB,Asia/Dhaka,Coxs Bazar Airport,CXB,BD,POINT (91.96405269840508 21.45533845),29,,VGCB,Cox's Bazar,,Chittagong
+CXC,America/Anchorage,Chitina Airport,CXC,US,POINT (-144.4322008 61.5833487),547,,CXC,,,
+MBF,Australia/Melbourne,Mount Buffalo,MBF,AU,POINT (146.75 -36.75),4143,,,,,
+CGT,Africa/Nouakchott,Chinguitti,CGT,MR,POINT (-12.366667 20.45),1637,,"",Chinguetti,,Adrar
+MDM,Pacific/Port_Moresby,Munduku,MDM,PG,POINT (143.44975493461084 -4.61958995),78,,AYDK,,,
+CHY,Pacific/Guadalcanal,Choiseul Bay Airport,CHY,SB,POINT (156.39856 -6.713787),19,,AGGC,,,
+PQS,America/Anchorage,Pilot Station Airport,PQS,US,POINT (-162.900546 61.9348255),91,,"",,,
+CYD,America/Belize,San Ignacio Town Airstrip,CYD,BZ,POINT (-89.101389 17.104722),351,,MZMF,Benque Viejo del Carmen,,Cayo
+YCO,America/Cambridge_Bay,Kugluktuk Airport,YCO,CA,POINT (-115.14514387808345 67.81699259999999),74,,CYCO,,,
+CYE,America/New_York,Crystal Lake,CYE,US,POINT (-75.83222 41.210278),1843,,,Georgetown,Luzerne County,Pennsylvania
+CYI,Asia/Taipei,Chiayi Airport,CYI,TW,POINT (120.39371622493724 23.459325550000003),82,http://www.cya.gov.tw/web/english/index.asp,RCKU,Taibao,Chiayi,Taiwan
+GEF,Pacific/Guadalcanal,Geva Airstrip,GEF,SB,POINT (156.59778 -7.578333),160,,AGEV,,,
+RMZ,Asia/Yekaterinburg,Tobolsk Remezov Airport,RMZ,RU,POINT (68.348611 58.058333),144,,USTJ,Tobolsk,,
+QDV,America/Sao_Paulo,Comte. Rolim Adolfo Amaro State Airport,JDE,BR,POINT (-46.943611 -23.181667),2444,,SBJD,Jundiaí,,
+QKS,America/Denver,Keystone Airport,QKS,US,POINT (-79.2110977 39.7728004),2496,,,Elk Lick Township,Somerset County,Pennsylvania
+CYL,America/Tegucigalpa,Coyoles,CYL,HN,POINT (-86.5 15),3093,,MHCS,Manto,,Olancho
+SDW,Asia/Kolkata,Sindhudurg Airport,SDW,IN,POINT (73.52783617390037 16.0012133),170,,VOSR,Sindhudurg,,
+CYM,America/Sitka,Chatham SPB,CYM,US,POINT (-135 57.5),1174,,"05AA",,,
+CYO,America/Havana,Cayo Largo Del Sur Airport,CYO,CU,POINT (-81.51667 21.616667),0,,MUCL,Jaguey Grande,,Matanzas
+CYP,Asia/Manila,Calbayog Airport,CYP,PH,POINT (124.54583456483198 12.069754),29,,RPVC,Sabang,Province of Samar,Eastern Visayas
+CYR,America/Montevideo,Laguna De Los Patos,CYR,UY,POINT (-57.5 -34.166668),423,,SUCA,Tarariras,,Colonia
+CYU,Asia/Manila,Cuyo,CYU,PH,POINT (121 10.883333),0,,RPLO,Cuyo,Province of Palawan,Mimaropa
+SAP,America/Tegucigalpa,Ramon Villeda Morales International Airport,SAP,HN,POINT (-87.92431532057235 15.4537972),111,,MHLM,La Lima,,Cortes
+CYW,America/Mexico_City,Celaya,CYW,MX,POINT (-100.88527857395991 20.5456333),5731,,MMCY,Colonia Fraccionamiento el Puente,Celaya,Guanajuato
+CYX,Asia/Srednekolymsk,Cherskiy Airport,CYX,RU,POINT (161.33244351843064 68.7427218),36,,UESS,Cherskiy,,Sakha
+YBX,America/Blanc-Sablon,Blanc Sablon,YBX,CA,POINT (-57.186869516831315 51.441967250000005),91,,CYBX,,,
+SFB,America/New_York,Orlando Sanford International Airport,ORL,US,POINT (-81.24329602986423 28.7754331),55,,KSFB,Midway,Seminole County,Florida
+CYZ,Asia/Manila,Cauayan Airport,CYZ,PH,POINT (121.75222675737851 16.930542799999998),173,,RPUY,Cauayan,Province of Isabela,Cagayan Valley
+SFY,America/Chicago,Tri-Township Airport,SFY,US,POINT (-90.10958890991054 42.04550795),590,,,Savanna,Carroll County,Illinois
+CZA,America/Merida,Chichen Itza,CZA,MX,POINT (-88.566666 20.666668),118,http://www.chichen-itza-airport.com/,MMCT,Chichen-Itza,,Yucatan
+SGC,Asia/Yekaterinburg,Surgut Airport,SGC,RU,POINT (73.4052099844604 61.3414657),150,,USRR,Surgut,,Khanty-Mansiyskiy Avtonomnyy Okrug
+SGF,America/Chicago,Springfield-Branson National Airport,SGF,US,POINT (-93.39661262453578 37.2393873),1289,http://www.sgf-branson-airport.com,KSGF,Willard,Greene County,Missouri
+SGN,Asia/Ho_Chi_Minh,Tan Son Nhat International Airport,SGN,VN,POINT (106.65812173979049 10.81831885),36,http://www.tsnairport.hochiminhcity.gov.vn/,VVTS,Quan Phu Nhuan,,Ho Chi Minh City
+SGO,Australia/Brisbane,St George,SGO,AU,POINT (148.59868091576283 -28.052005700000002),643,,YSGE,Roma,Maranoa,Queensland
+SGQ,Asia/Makassar,Sanggata,SGQ,ID,POINT (117.3333588 0.5),426,,WALA,Sangatta,,East Kalimantan
+SGX,Africa/Dar_es_Salaam,Songea,SGX,TZ,POINT (35.58191536198474 -10.6812175),3477,,HTSO,Songea,,Ruvuma
+CZB,America/Sao_Paulo,Carlos Ruhl,CZB,BR,POINT (-53.558334 -28.641666),1312,,SSAK,Cruz Alta,Cruz Alta,Rio Grande do Sul
+CZE,America/Caracas,Coro,CZE,VE,POINT (-69.681946 11.415833),45,,SVCR,Coro,,Falcon
+SGY,America/Anchorage,Skagway Municipal,SGY,US,POINT (-135.3261633 59.4501954),0,,PAGY,Haines,Haines Borough,Alaska
+SGZ,Asia/Bangkok,Songkhla,SGZ,TH,POINT (100.60684192163788 7.18638335),26,,VTSH,Songkhla,,Songkhla
+SKG,Europe/Athens,Thessaloniki International Airport,SKG,GR,POINT (22.974086812428308 40.51980185),16,,LGTS,Neo Rysi,Nomos Thessalonikis,Central Macedonia
+SKN,Europe/Oslo,Stokmarknes Skagen Airport,SKN,NO,POINT (15.031124497422255 68.5799011),0,https://avinor.no/en/airport/stokmarknes-airport/,ENSK,Stokmarknes,Hadsel,Nordland
+SLU,America/St_Lucia,George F. L. Charles Airport,SLU,LC,POINT (-60.9943995169477 14.0198739),26,http://www.slaspa.com/contentPages/view/george-f-l-charles-airport,TLPC,Bisee,,Castries Quarter
+SLY,Asia/Yekaterinburg,Salekhard Airport,SLY,RU,POINT (66.59242800431481 66.59208125),209,,USDD,Salekhard,,Yamalo-Nenetskiy Avtonomnyy Okrug
+SOF,Europe/Sofia,Sofia Airport,SOF,BG,POINT (23.414218088581656 42.69557455),1722,http://sofia-airport.bg,LBSF,Sofia,Stolichna Obshtina,Sofia-Capital
+SOG,Europe/Oslo,Sogndal Airport,SOG,NO,POINT (7.1358296520257785 61.155940099999995),1633,https://avinor.no/en/airport/sogndal-airport/,ENSG,Sogndalsfjora,Sogndal,Sogn og Fjordane
+MFO,Pacific/Port_Moresby,Manguna,MFO,PG,POINT (151.79214334828256 -5.57744085),173,,AYNG,,,
+YEK,America/Rankin_Inlet,Arviat,YEK,CA,POINT (-94.07115802275632 61.0940808),32,,CYEK,,,
+YIB,America/Atikokan,Atikokan,YIB,CA,POINT (-91.63782116186894 48.773680999999996),1408,http://www.atikokaninfo.com/community/transportation/airport/,CYIB,,,
+SOJ,Europe/Oslo,Sorkjosen Airport,SOJ,NO,POINT (20.95955849087061 69.78735975000001),26,https://avinor.no/en/airport/sorkjosen-airport/,ENSR,Storslett,Nordreisa,Troms
+BMQ,Africa/Nairobi,Bamburi,BMQ,KE,POINT (39.833332 -4.5),0,,HKBM,,,
+CHU,America/Anchorage,Chuathbaluk Airport,CHU,US,POINT (-159.2160034 61.5791016),160,,PACH,,,
+CZJ,America/Panama,Corazon De Jesus,CZJ,PA,POINT (-79.368614 9.570556),45,,"",Palenque,,Colon
+CZK,America/Los_Angeles,Cascade Locks/Stevens,CZK,US,POINT (-121.9 45.666668),62,http://www.oregon.gov/Aviation/pages/warning.aspx#Cascade_Locks,KCZK,Cascade Locks,Hood River County,Oregon
+RCP,America/Anchorage,Cinder River,RCP,US,POINT (-157.80556 57.083057),144,,,,,
+QCU,America/Godthab,Heliport,QCU,GL,POINT (-52.333332 68.75),0,,,,,
+CZM,America/Cancun,Cozumel Airport,CZM,MX,POINT (-86.92943828095508 20.52296195),26,http://www.asur.com.mx/,MMCZ,San Miguel de Cozumel,,Quintana Roo
+YFX,America/St_Johns,Fox Harbour (St Lewis),YFX,CA,POINT (-55.683334 52.36667),74,,CCK4,,,
+CZS,America/Rio_Branco,Campo Internacional Airport,CZS,BR,POINT (-72.78333 -7.583333),646,http://www.infraero.gov.br/index.php/aeroportos/acre/aeroporto-cruzeiro-do-sul.html,SBCZ,Cruzeiro do Sul,Cruzeiro Do Sul,Acre
+CZT,America/Chicago,Carrizo Springs,CZT,US,POINT (-99.831245 28.523977),629,,KCZT,Carrizo Springs,Dimmit County,Texas
+CZU,America/Bogota,Corozal Airport,CZU,CO,POINT (-75.282776 9.3375),544,,SKCZ,Morroa,,Sucre
+QFI,America/Godthab,Heliport,QFI,GL,POINT (-53.25 68.166664),49,,,,,
+CZW,Europe/Warsaw,Czestochowa,CZW,PL,POINT (19.1 50.816666),859,,EPRU,Czestochowa,Czestochowa,Silesian Voivodeship
+PVK,Europe/Athens,Aktion Airport,PVK,GR,POINT (20.768427287254895 38.923843700000006),22,,LGPZ,Preveza,Nomos Prevezis,Epirus
+PVL,America/New_York,Pike County Airport,PVL,US,POINT (-82.5663934 37.5605076),1433,,KPBX,Coal Run Village,Pike County,Kentucky
+CZX,Asia/Shanghai,Changzhou Airport,CZX,CN,POINT (119.77841391568919 31.9184829),39,,ZSCG,Luoxi,,Jiangsu Sheng
+PVO,America/Guayaquil,Reales Tamarindos,PVO,EC,POINT (-80.47187110471606 -1.04184945),88,,SEPV,Portoviejo,,Manabi
+YEV,America/Inuvik,Inuvik Mike Zubko Airport,YEV,CA,POINT (-133.49767 68.30665),224,,CYEV,,,
+PVS,Asia/Anadyr,Provideniya,PVS,RU,POINT (-173.2386276724423 64.3800982),187,,UHMD,Provideniya,,Chukotskiy Avtonomnyy Okrug
+YGM,America/Winnipeg,Gimli,YGM,CA,POINT (-97 50.666668),753,,CYGM,,,
+PVU,America/Denver,Provo Airport,PVU,US,POINT (-111.72097229668498 40.2204),4491,http://www.provo.org/city-services/airport,KPVU,Provo,Utah County,Utah
+CZZ,America/Los_Angeles,Campo,CZZ,US,POINT (-102.583336 37.1),4314,,,Springfield,Baca County,Colorado
+DAA,America/New_York,Davison AAF,DAA,US,POINT (-78.75 37.5),669,,KDAA,Appomattox,Appomattox County,Virginia
+PWE,Asia/Anadyr,Pevek Airport,PWE,RU,POINT (170.59996412000802 69.78489125),19,,UHMP,Pevek,,Chukotskiy Avtonomnyy Okrug
+DAB,America/New_York,Daytona Beach International Airport,DAB,US,POINT (-81.05426943447691 29.181643899999997),29,,KDAB,Daytona Beach,Volusia County,Florida
+PWK,America/Chicago,Chicago Executive Airport,CHI,US,POINT (-87.90138470143162 42.1175026),629,http://chiexec.com/,KPWK,Wheeling,Cook County,Illinois
+PWM,America/New_York,Portland International Jetport,PWM,US,POINT (-70.31441197345607 43.6461776),42,,KPWM,South Portland Gardens,Cumberland County,Maine
+PWN,America/Nassau,Pitts Town,PWN,BS,POINT (-74.34641119146369 22.8290266),9,,MYCP,Colonel Hill,,Crooked Island and Long Cay
+DAC,Asia/Dhaka,Hazrat Shahjalal International Airport,DAC,BD,POINT (90.40375285964708 23.84229135),32,,VGHS,Tungi,,Dhaka
+PWQ,Asia/Almaty,Pavlodar Airport,PWQ,KZ,POINT (77.07365521776973 52.19522405),377,,UASP,Pavlodar,,Pavlodar
+DAD,Asia/Ho_Chi_Minh,Da Nang International Airport,DAD,VN,POINT (108.19716127833769 16.0425792),26,,VVDN,Thanh Khe,,Da Nang
+PWT,America/Los_Angeles,Bremerton,PWT,US,POINT (-122.76447901139298 47.49166485),511,https://en.wikipedia.org/wiki/Bremerton_National_Airport,KPWT,Belfair,Mason County,Washington
+SPH,Pacific/Port_Moresby,Sopu,SPH,PG,POINT (147.76666 -9),6837,,AYQO,,,
+YHC,America/Vancouver,Hakai Pass,YHC,CA,POINT (-128.11667 51.733334),0,,,,,
+DBY,Australia/Brisbane,Dalby,DBY,AU,POINT (151.2593983957837 -27.158043149999997),1112,,YDAY,Dalby,Western Downs,Queensland
+DCI,Europe/Rome,Rafsu Decimomannu,DCI,IT,POINT (8.966667 39.35),49,,LIED,Villasor,Provincia di Cagliari,Sardinia
+DCM,Europe/Paris,Mazamet Airport,DCM,FR,POINT (2.289003274410029 43.5563998),741,,LFCK,Lagarrigue,Departement du Tarn,Midi-Pyrenees
+DCR,America/Indiana/Indianapolis,Decatur Hi-Way,DCR,US,POINT (-84.933334 40.833332),790,,,Decatur,Adams County,Indiana
+DCT,America/Nassau,Duncan Town,DCT,BS,POINT (-75.75 22.25),0,,MYRD,Duncan Town,,Ragged Island
+DDP,America/Puerto_Rico,Dorado Beach,DDP,PR,POINT (-66.15 18.483334),0,,,Levittown,,Toa Baja
+DCU,America/Chicago,Pyor,DCU,US,POINT (-86.98333 34.6),610,,KDCU,Decatur,Morgan County,Alabama
+DCY,Asia/Shanghai,Daocheng Yading Airport,DCY,CN,POINT (100.06055347834386 29.31628015),14455,,ZUDC,Sangpi,,Sichuan
+YHY,America/Yellowknife,Hay River,YHY,CA,POINT (-115.78207218686978 60.83957225),541,,CYHY,,,
+DDU,Asia/Karachi,Dadu,DDU,PK,POINT (67.75 26.75),101,,OPDD,Dadu,,Sindh
+PXO,Atlantic/Madeira,Porto Santo Airport,PXO,PT,POINT (-16.34816497905559 33.07362365),252,http://www.anam.pt/Porto-Santo-411.aspx,LPPS,Vila de Porto Santo,Porto Santo,Madeira
+PXR,Asia/Bangkok,Surin,PXR,TH,POINT (103.4979606001036 14.86680565),331,,VTUJ,Surin,,Surin
+QSZ,Asia/Shanghai,Shache Airport,QSZ,CN,POINT (77.0578204375604 38.24391405),4281,,ZWSC,Zepu,,Xinjiang Uygur Zizhiqu
+RBD,America/Chicago,Redbird,DFW,US,POINT (-96.86887702681254 32.679660999999996),629,http://www.dallasexecairport.com/,KRBD,Duncanville,Dallas County,Texas
+RBF,America/Los_Angeles,Big Bear City Airport,RBF,US,POINT (-116.85603324602909 34.263582),6729,http://www.bigbearcityairport.com/,L35,Big Bear City,San Bernardino County,California
+COO,Africa/Porto-Novo,Cotonou Airport,COO,BJ,POINT (2.385905079697595 6.3577513),26,,DBBB,Cotonou,,Littoral
+RBK,America/Los_Angeles,French Valley,RBK,US,POINT (-117.12949854576331 33.573875099999995),1312,http://www.rcfva.com/,F70,Murrieta Hot Springs,Riverside County,California
+YPJ,America/Montreal,Aupaluk Airport,YPJ,CA,POINT (-69.59987231439483 59.296748050000005),119,,CYLA,,,
+CPG,America/Argentina/Buenos_Aires,Carmen De Patagones,CPG,AR,POINT (-63 -40.833332),124,,"",,,
+CUS,America/Denver,Municipal,CUS,US,POINT (-107.63333 31.833332),4022,,,Columbus,Luna County,New Mexico
+YKK,America/Vancouver,Kitkatla,YKK,CA,POINT (-130 53),0,,CAP7,,,
+RFP,Pacific/Tahiti,Raiatea Airport,RFP,PF,POINT (-151.46785441508766 -16.723401449999997),22,,NTTR,Uturoa,,Iles Sous-le-Vent
+RGO,Asia/Pyongyang,Orang,RGO,KP,POINT (129.64562224205275 41.42923175),42,,ZKHM,Hoemul-li,,Hamgyong-bukto
+DAG,America/Los_Angeles,Barstow-Daggett,DAG,US,POINT (-117.333336 34.25),4632,,KDAG,Crestline,San Bernardino County,California
+DAJ,Australia/Brisbane,Dauan Island,DAJ,AU,POINT (142.53334 -9.433333),187,,,,,
+RGS,Europe/Madrid,Burgos,RGS,ES,POINT (-3.6215852140884204 42.357639500000005),2942,http://www.aena.es/csee/Satellite?cid=1047546622026&pagename=subHome&Language=EN_GB&SiteName=LEBG&c=Page,LEBG,Cardenajimeno,Provincia de Burgos,Castille and Leon
+RHI,America/Chicago,Oneida County Airport,RHI,US,POINT (-89.47897405074303 45.6314535),1584,,KRHI,Rhinelander,Oneida County,Wisconsin
+RHO,Europe/Athens,Rhodes Airport,RHO,GR,POINT (28.087406950000002 36.4050007),9,,LGRP,Kremasti,Nomos Dodekanisou,South Aegean
+RJI,Asia/Kolkata,Rajouri,RJI,IN,POINT (74.31531414763674 33.3775715),2972,,"",Rajaori,Rajauri,Kashmir
+DAL,America/Chicago,Dallas Love Field,DFW,US,POINT (-96.8498413 32.8450229),495,http://www.dallas-lovefield.com/,KDAL,University Park,Dallas County,Texas
+DAM,Asia/Damascus,Damascus International Airport,DAM,SY,POINT (36.51391166837934 33.4108334),1991,,OSDI,Harran al `Awamid,,Rif-dimashq
+DAN,America/New_York,Municipal,DAN,US,POINT (-79.335 36.573055),557,,KDAN,Danville,City of Danville,Virginia
+SBC,Pacific/Port_Moresby,Selbang,SBC,PG,POINT (141.75206670032964 -5.3150755),5052,,AYSO,,,
+DAP,Asia/Kathmandu,Darchula,DAP,NP,POINT (80.54784910885797 29.668470399999997),2221,,VNDL,Darchula,,Western Region
+DAS,America/Yellowknife,Great Bear Lake,DAS,CA,POINT (-119.707 66.7031021),541,,CFF4,,,
+RNB,Europe/Stockholm,Kallinge Airport,RNB,SE,POINT (15.272677842123656 56.268616050000006),160,https://www.swedavia.com/ronneby/,ESDF,,,
+RJK,Europe/Zagreb,Rijeka Airport,RJK,HR,POINT (14.570968145977925 45.21678585),236,,LDRI,Omisalj,,Primorsko-Goranska
+DAT,Asia/Shanghai,Datong Airport,DAT,CN,POINT (113.4818546578876 40.06061715),3415,,ZBDT,Beijiazao,,Shanxi Sheng
+DAV,America/Panama,Enrique Malek Airport,DAV,PA,POINT (-82.433334 8.383333),39,,MPDA,Pedregal,,Chiriqui
+DAX,Asia/Shanghai,Dazhou Heshi Airport,DAX,CN,POINT (107.42848262928189 31.12818985),935,,ZUDX,Xiwai,,Sichuan
+DAY,America/New_York,James M. Cox Dayton International Airport,DAY,US,POINT (-84.22024542480268 39.905318699999995),1010,,KDAY,Vandalia,Montgomery County,Ohio
+DEB,Europe/Budapest,Debrecen Airport,DEB,HU,POINT (21.7 47.55),370,http://www.airportdebrecen.hu/,LHDC,Debrecen,,Hajdu-Bihar
+DAZ,Asia/Kabul,Darwaz,DAZ,AF,POINT (70.8824997 38.4611015),5019,,OADZ,Nusay,,Badakhshan
+DEF,Asia/Tehran,Dezful Airport,DEF,IR,POINT (48.385778 32.4401058),475,,OIAD,Andimeshk,,Khuzestan
+GRL,Pacific/Port_Moresby,Garasa,GRL,PG,POINT (147.21326904309944 -7.9802105999999995),2532,,AYGG,,,
+RJL,Europe/Madrid,Agoncillo Airport,RJL,ES,POINT (-2.3237935840275643 42.46078845),1145,,LERJ,Agoncillo,Provincia de La Rioja,La Rioja
+RJM,Asia/Jayapura,Marinda Airport,RJM,ID,POINT (130.773097135306 -0.42865185),65,,WASN,Saonek,,West Papua
+YFI,America/Edmonton,Firebag,HZP,CA,POINT (-110.9750717809142 57.26543025),1762,,CYFI,,,
+YKQ,America/Montreal,Waskaganish Airport,YKQ,CA,POINT (-78.7545877 51.4733523),80,,CYKQ,,,
+DBA,Asia/Karachi,Dalbandin,DBA,PK,POINT (64.40751848244889 28.873098),2782,,OPDB,Dalbandin,,Balochistan
+DBD,Asia/Kolkata,Dhanbad,DBD,IN,POINT (86.45 23.783333),767,,VEDB,Dhanbad,Dhanbad,Jharkhand
+DBN,America/New_York,Municipal,DBN,US,POINT (-82.986115 32.561943),288,,KDBN,Dublin,Laurens County,Georgia
+DBO,Australia/Sydney,Dubbo City Regional Airport,DBO,AU,POINT (148.5781247728455 -32.2150208),866,http://www.dubbo.nsw.gov.au/BusinessandIndustry/DubboCityRegionalAirport.html,YSDU,Dubbo,Dubbo Municipality,New South Wales
+DBP,Pacific/Port_Moresby,Debepare,DBP,PG,POINT (141.90482854785125 -6.3082279),272,,AYDB,,,
+DBQ,America/Chicago,Dubuque Municipal Airport,DBQ,US,POINT (-90.71083 42.41),1066,,KDBQ,Dubuque,Dubuque County,Iowa
+DBS,America/Boise,Dubois,DBS,US,POINT (-112.23333 44.166668),5114,,U41,Dubois,Clark County,Idaho
+DBU,Asia/Colombo,Dambulu Oya Tank,DBU,LK,POINT (80.651665 7.86),538,,"",Dambulla,,Central
+DBV,Europe/Zagreb,Dubrovnik Airport,DBV,HR,POINT (18.26433626257242 42.56149335),469,,LDDU,Jasenice,,Dubrovacko-Neretvanska
+YNA,America/Montreal,Natashquan,YNA,CA,POINT (-61.78735933332057 50.1898717),39,,CYNA,,,
+YSO,America/Goose_Bay,Postville Airport,YSO,CA,POINT (-59.966667 54.916668),193,,CCD4,,,
+YQC,America/Montreal,Quaqtaq,YQC,CA,POINT (-69.63333 61.333332),103,,CYHA,,,
+YPH,America/Montreal,Inukjuak,YPH,CA,POINT (-78.166664 58.433334),83,,CYPH,,,
+MIX,America/Bogota,Miriti,MIX,CO,POINT (-59 -6.25),501,,,,,
+RJN,Asia/Tehran,Rafsanjan,RJN,IR,POINT (56.05027354120276 30.299237849999997),5269,,OIKR,Rafsanjan,,Kerman
+RKD,America/New_York,Knox County Regional Airport,RKD,US,POINT (-69.10293581534214 44.06139565),45,,KRKD,South Thomaston,Knox County,Maine
+RKE,Europe/Copenhagen,Roskilde Airport,CPH,DK,POINT (12.132685539683798 55.5858236),167,,EKRK,Havdrup,Solrod Kommune,Zealand
+RKS,America/Denver,Rock Springs-Sweetwater County Airport,RKS,US,POINT (-109.06842143015916 41.59507585),6715,,KRKS,Rock Springs,Sweetwater County,Wyoming
+RKT,Asia/Dubai,Ras Al Khaimah International Airport,RKT,AE,POINT (55.939695904168836 25.61297345),75,,OMRK,Ras al-Khaimah,,Ra's al Khaymah
+RLG,Europe/Berlin,Laage Airport,RLG,DE,POINT (12.276204371080205 53.919142750000006),114,,ETNL,Laage,,Mecklenburg-Vorpommern
+RNP,Pacific/Majuro,Rongelap Island,RNP,MH,POINT (166.88718999407507 11.15724195),26,,"",Rongelap,,Rongelap Atoll
+RNS,Europe/Paris,Rennes Airport,RNS,FR,POINT (-1.7301868409962502 48.06890935),118,http://www.rennes.aeroport.fr/,LFRN,Saint-Jacques-de-la-Lande,Departement d'Ille-et-Vilaine,Brittany
+RNT,America/Los_Angeles,Renton,RNT,US,POINT (-122.21580618011595 47.492792550000004),39,https://rentonwa.gov/living/default.aspx?id=212,KRNT,Renton,King County,Washington
+ROB,Africa/Monrovia,Roberts International Airport,MLW,LR,POINT (-10.364287159148873 6.2311862),45,,GLRB,Kakata,,Margibi
+ROI,Asia/Bangkok,Roi Et Airport,ROI,TH,POINT (103.77485350335792 16.1150394),429,,VTUV,Chiang Khwan,,Roi Et
+ROK,Australia/Brisbane,Rockhampton Airport,ROK,AU,POINT (150.47213850960662 -23.383076950000003),36,http://www.rok.aero/,YBRK,West Rockhampton,Rockhampton,Queensland
+RUD,Asia/Tehran,Shahrud,RUD,IR,POINT (55.102012262419436 36.4248886),4232,,OIMJ,Shahrud,,Semnan
+RUL,Indian/Maldives,Maavaarulaa Airport,RUL,MV,POINT (73.511143 0.3380463),26,,VRQM,Viligili,,Gaafu Alifu Atholhu
+RUN,Indian/Reunion,Reunion Roland Garros Airport,RUN,RE,POINT (55.51860089723989 -20.8901282),36,http://www.reunion.aeroport.fr/index.htm,FMEE,Sainte-Marie,Reunion,Reunion
+RUP,Asia/Kolkata,Rupsi,RUP,IN,POINT (89.90878043767745 26.1417714),131,,VERU,Gauripur,Dhuburi,Assam
+RVN,Europe/Helsinki,Rovaniemi Airport,RVN,FI,POINT (25.8302119 66.561662),597,http://www.finavia.fi/en/rovaniemi/,EFRO,Rovaniemi,Rovaniemi,Lapland
+RVT,Australia/Perth,Ravensthorpe,RVT,AU,POINT (120.20979399613981 -33.797814450000004),131,,YNRV,Ravensthorpe,Ravensthorpe,Western Australia
+RVY,America/Montevideo,Rivera,RVY,UY,POINT (-55.476310098194325 -30.97508805),597,,SURV,Santana do Livramento,Santana Do Livramento,Rio Grande do Sul
+RZE,Europe/Warsaw,Rzeszow International Airport,RZE,PL,POINT (22.018435906021026 50.11148165),666,https://www.rzeszowairport.pl,EPRZ,Trzebownisko,Powiat rzeszowski,Subcarpathian Voivodeship
+RZH,Asia/Vladivostok,Preobrazheniye,RZH,RU,POINT (133.9031482 42.9186893),16,,UIKP,Preobrazheniye,,Primorskiy
+RZR,Asia/Tehran,Ramsar,RZR,IR,POINT (50.68299175164875 36.9089784),-104,,OINR,Ramsar,,Mazandaran
+DEC,America/Chicago,Decatur Airport,DEC,US,POINT (-88.86199100508733 39.83349835),692,,KDEC,Long Creek,Macon County,Illinois
+DED,Asia/Kolkata,Dehra Dun Airport,DED,IN,POINT (78.03333 30.316668),2142,http://aai.aero/allAirports/dehradun_generalinfo.jsp,VIDN,Dehradun,Dehradun,Uttarakhand
+DEE,Asia/Sakhalin,Mendeleyevo Airport,DEE,RU,POINT (145.6840017586635 43.96107965),692,,UHSM,Yuzhno-Kurilsk,Yuzhno-Kurilsky District,Sakhalin
+KPM,Pacific/Port_Moresby,Kompiam,KPM,PG,POINT (143.9242469519006 -5.3821271500000005),5100,,AYAQ,,,
+YPN,America/Montreal,Port Menier,YPN,CA,POINT (-64.28671832305594 49.83726715),167,,CYPN,,,
+DEH,America/Chicago,Municipal,DEH,US,POINT (-91.8 43.3),853,,KDEH,Decorah,Winneshiek County,Iowa
+DEL,Asia/Kolkata,Indira Gandhi International Airport,DEL,IN,POINT (77.08473847979485 28.5551678),757,http://www.newdelhiairport.in/,VIDP,Gurgaon,Gurgaon,Haryana
+YPY,America/Edmonton,Fort Chipewyan Airport,YPY,CA,POINT (-111.1169968 58.7672005),761,,CYPY,,,
+DEN,America/Denver,Denver International Airport,DEN,US,POINT (-104.68536732610298 39.8606676),5347,http://www.flydenver.com/,KDEN,Lochbuie,Weld County,Colorado
+DEO,America/Detroit,Hyatt Regency Heliport,DEO,US,POINT (-83.166664 42.3),587,,,Melvindale,Wayne County,Michigan
+DER,Pacific/Port_Moresby,Derim,DER,PG,POINT (147.08333 -6.1),5269,,AYDE,,,
+DET,America/Detroit,Detroit City,DTT,US,POINT (-83.00852132166864 42.4112358),600,,KDET,Hamtramck,Wayne County,Michigan
+DEZ,Asia/Damascus,Al Jafrah,DEZ,SY,POINT (40.186806 35.28755),682,,OSDZ,Deir ez-Zor,,Deir ez-Zor
+DFI,America/New_York,Memorial,DFI,US,POINT (-84.36667 41.283333),685,http://www.defiance-county.com/airport/index.html,KDFI,Defiance,Defiance County,Ohio
+DFW,America/Chicago,Dallas/Fort Worth International Airport,DFW,US,POINT (-97.0465220537124 32.89651945),574,https://www.dfwairport.com/,KDFW,Grapevine,Tarrant County,Texas
+DGN,America/New_York,NAF,DGN,US,POINT (-88.683334 38.2),511,,KNDY,Wayne City,Wayne County,Illinois
+DGO,America/Monterrey,Guadalupe Victoria Airport,DGO,MX,POINT (-104.525 24.125),6082,,MMDO,Jose Refugio Salcido,Durango,Durango
+DGP,Europe/Riga,Daugavpils,DGP,LV,POINT (26.533333 55.88333),252,,EVDA,Daugavpils,,Daugavpils
+DGU,Africa/Ouagadougou,Dedougou,DGU,BF,POINT (-3.491975385684568 12.458054449999999),967,,DFOD,Dedougou,Province du Mouhoun,Boucle du Mouhoun
+DGW,America/Denver,Converse County,DGW,US,POINT (-105.4 42.75),4786,,KDGW,Douglas,Converse County,Wyoming
+DHA,Asia/Riyadh,King Abdulaziz AB,DHA,SA,POINT (50.17475 26.39286),29,,OEDR,Dammam,,Eastern Province
+DHI,Asia/Kathmandu,Dhangarhi,DHI,NP,POINT (80.63333 28.683332),554,,VNDH,Dhangarhi,,Far Western
+BLO,Atlantic/Reykjavik,Blonduos,BLO,IS,POINT (-20.288730913273465 65.6435941),45,,BIBL,,,
+DHL,Asia/Aden,Dhala,DHL,YE,POINT (44.729168 13.7375),4763,,,Dhalie,Ad Dhale'e,Ad Dali'
+MKB,Africa/Libreville,Mekambo,MKB,GA,POINT (13.833333 1.05),1601,,FOOE,,,
+RZS,Asia/Karachi,Sawan,RZS,PK,POINT (68.87989866650139 26.96742225),167,,OPSW,Bozdar,,Sindh
+SAA,America/Denver,Shively Field,SAA,US,POINT (-106.828107 41.4439801),6938,,KSAA,Saratoga,Carbon County,Wyoming
+SAG,Asia/Colombo,Shirdi,SAG,IN,POINT (74.37319208981876 19.6904548),1912,,VASD,Shirdi,Ahmadnagar,Maharashtra
+SAT,America/Chicago,San Antonio International Airport,SAT,US,POINT (-98.46921443046924 29.5334021),708,https://www.sanantonio.gov/aviation,KSAT,Alamo Heights,Bexar County,Texas
+SAW,Europe/Istanbul,Sabiha Gokcen International Airport,IST,TR,POINT (29.307552329592077 40.89929455),305,http://www.sgairport.com/,LTFJ,Pendik,,Istanbul
+BOY,Africa/Ouagadougou,Borgo,BOY,BF,POINT (-4.324444 11.163611),1519,,DFOO,Bobo-Dioulasso,Province du Houet,High-Basins
+SBA,America/Los_Angeles,Santa Barbara Municipal Airport,SBA,US,POINT (-119.84313935656505 34.42738475),16,,KSBA,Goleta,Santa Barbara County,California
+SCF,America/Phoenix,Scottsdale Airport,PHX,US,POINT (-111.91257741010094 33.62212245),1479,http://www.scottsdaleaz.gov/airport/,KSDL,Paradise Valley,Maricopa County,Arizona
+SCN,Europe/Berlin,Ensheim Airport,SCN,DE,POINT (7.112361932435437 49.2166001),1062,http://www.flughafen-saarbruecken.de/,EDDR,Sankt Ingbert,,Saarland
+SCQ,Europe/Madrid,Santiago De Compostela Airport,SCQ,ES,POINT (-8.41891330714926 42.89764215),1135,,LEST,Oroso,Provincia da Coruna,Galicia
+SCR,Europe/Stockholm,Scandinavian Mountains Airport,SCR,SE,POINT (12.833295450012834 61.1640852),1584,https://scandinavianmountains.se/en/home/,ESKS,Innbygda,Trysil,Hedmark
+SCS,Europe/London,Scatsta,SDZ,GB,POINT (-1.2967491904404942 60.43348835),101,,EGPM,Lerwick,Shetland Islands,Scotland
+SCT,Asia/Aden,Socotra,SCT,YE,POINT (53.908822691478875 12.63834785),91,,OYSQ,Hadibu,,Muhafazat Hadramawt
+SCU,America/Havana,Antonio Maceo Airport,SCU,CU,POINT (-75.83547295807672 19.9753964),137,,MUCU,Santiago de Cuba,Municipio de Santiago de Cuba,Santiago de Cuba
+SCV,Europe/Bucharest,Suceava Airport,SCV,RO,POINT (26.352310976529836 47.68833875),1338,http://www.aeroportsuceava.ro/index_en.html,LRSV,Plopeni,Comuna Salcea,Suceava
+YXT,America/Vancouver,Northwest Regional Airport,YXT,CA,POINT (-128.57445 54.465557),713,,CYXT,,,
+DHM,Asia/Kolkata,Gaggal Airport,DHM,IN,POINT (76.26667 32.3),7900,,VIGG,Dharmsala,Kangra,Himachal Pradesh
+SDL,Europe/Stockholm,Sundsvall-Timra Airport,SDL,SE,POINT (17.44062745100433 62.5278157),0,,ESNN,Bergeforsen,Timra Kommun,Vaesternorrland
+DHN,America/Chicago,Dothan Regional Airport,DHN,US,POINT (-85.44995912385775 31.32003875),324,,KDHN,Midland City,Dale County,Alabama
+SDQ,America/Santo_Domingo,Las Americas International Airport,SDQ,DO,POINT (-69.6715123798729 18.42929615),52,http://www.aerodom.com/app/do/lasamericas.aspx,MDSD,Boca Chica,Santo Domingo,Santo Domingo
+RTE,America/Anchorage,Marguerite Bay,RTE,US,POINT (-131.63333 55.7),29,,,,,
+YTB,America/Vancouver,Hartley Bay,YTB,CA,POINT (-129.2509186 53.4229782),0,,CAY4,,,
+DHT,America/Chicago,Dalhart,DHT,US,POINT (-102.51667 36.066666),3959,,KDHT,Dalhart,Dallam County,Texas
+DIB,Asia/Kolkata,Dibrugarh Airport,DIB,IN,POINT (95.0170764 27.4854679),334,,VEMN,Dibrugarh,Dibrugarh,Assam
+DIE,Indian/Antananarivo,Antsiranana/Arrachart,DIE,MG,POINT (49.28811328393599 -12.346593299999999),331,,FMNA,Antsiranana,,Diana
+YWY,America/Yellowknife,Wrigley,YWY,CA,POINT (-123.434656 63.2099933),489,,CYWY,,,
+YXJ,America/Dawson_Creek,North Peace Regional Airport,YXJ,CA,POINT (-120.73587153404387 56.2404316),2280,,CYXJ,,,
+DIG,Asia/Shanghai,Diqing Shangri-La Airport,DIG,CN,POINT (99.68187687453684 27.796736850000002),10754,,ZPDQ,Shangri-La,Deqen Tibetan Autonomous Prefecture,Yunnan
+DIJ,Europe/Paris,Dijon,DIJ,FR,POINT (5.088719823533332 47.26619305),675,http://www.aeroport.dijon.cci.fr/,LFSD,Ouges,Departement de la Cote-d'Or,Bourgogne
+DIK,America/Boise,Dickinson Regional Airport,DIK,US,POINT (-102.9 46.833332),2506,http://dickinsonairport.com/,KDIK,Dickinson,Stark County,North Dakota
+DIL,Asia/Dili,Comoro Airport,DIL,TL,POINT (125.525 -8.549616),68,,WPDL,Dili,,Dili
+DIM,Africa/Abidjan,Dimbokro,DIM,CI,POINT (-4.766667 6.75),282,,DIDK,Dimbokro,,Lacs
+DIN,Asia/Ho_Chi_Minh,Dien Bien Airport,DIN,VN,POINT (103.00703615040092 21.3949323),1519,,VVDB,Dien Bien Phu,,Huyen Dien Bien
+DIQ,America/Sao_Paulo,Divinopolis,DIQ,BR,POINT (-44.870044517354316 -20.18147045),2562,,SNDV,Divinopolis,Divinopolis,Minas Gerais
+DIS,Africa/Brazzaville,Loubomo,DIS,CG,POINT (12.658930515565826 -4.20510725),1007,,FCPD,Dolisie,,Niari
+DIU,Asia/Kolkata,Diu Airport,DIU,IN,POINT (70.92204629253624 20.71439565),52,http://aai.aero/allAirports/diu_airpo_gi.jsp,VA1P,Diu,Diu,Daman and Diu
+DIV,Africa/Abidjan,Divo,DIV,CI,POINT (-5.25 5.8),311,,,Divo,,Sud-Bandama
+DIY,Europe/Istanbul,Diyarbakir Airport,DIY,TR,POINT (40.19921443496927 37.89232495),2227,,LTCC,Baglar,,Diyarbakir
+DJB,Asia/Jakarta,Sultan Thaha Airport,DJB,ID,POINT (103.6461509755231 -1.6392544500000001),65,,WIJJ,Jambi City,,Jambi
+DKK,America/New_York,Dunkirk,DKK,US,POINT (-79.333336 42.483334),590,,KDKK,Dunkirk,Chautauqua County,New York
+DKS,Asia/Krasnoyarsk,Dikson,DKS,RU,POINT (80.37453517180555 73.51668275),121,,UODD,Dikson,,Krasnoyarskiy
+DMB,Asia/Almaty,Jambyl Airport,DMB,KZ,POINT (71.36667 42.9),2047,,UADD,Taraz,,Zhambyl
+DME,Europe/Moscow,Moscow Domodedovo Airport,MOW,RU,POINT (37.904166212415895 55.40912105),534,http://www.domodedovo.ru/en/,UUDD,Yakovlevskoye,,Moskovskaya
+DMK,Asia/Bangkok,Don Mueang International Airport,BKK,TH,POINT (100.60353142390704 13.9122207),39,http://www2.airportthai.co.th/airportnew/bangkok/index.asp?lang=en,VTBD,Don Mueang,,Bangkok
+ZFD,America/Regina,Fond-du-Lac Airport,ZFD,CA,POINT (-107.1819992 59.3344002),814,,CZFD,Fond du Lac,,Saskatchewan
+ZEL,America/Vancouver,Bella Bella Airport,ZEL,CA,POINT (-128.05676936881662 52.1365217),141,,CBBC,,,
+BMK,Europe/Berlin,Borkum,BMK,DE,POINT (6.709057878160724 53.59522935),26,,EDWR,Borkum,,Lower Saxony
+SDR,Europe/Madrid,Santander Airport,SDR,ES,POINT (-3.822844898531179 43.42716075),19,,LEXJ,El Astillero,Provincia de Cantabria,Cantabria
+BMM,Africa/Libreville,Bitam,BMM,GA,POINT (11.493744371534572 2.0762485),1916,,FOOB,,,
+ZGS,America/Blanc-Sablon,Gethsemani,ZGS,CA,POINT (-60.666668 50.333332),90,,CTT5,,,
+SDU,America/Sao_Paulo,Santos Dumont Airport,RIO,BR,POINT (-43.16418613781168 -22.91044395),49,,SBRJ,Rio de Janeiro,Rio De Janeiro,Rio de Janeiro
+BOZ,Africa/Bangui,Bozoum,BOZ,CF,POINT (16.583332 6.416667),2171,,FEGZ,Bozoum,,Ouham-Pende
+SEA,America/Los_Angeles,Seattle-Tacoma International Airport,SEA,US,POINT (-122.3080158569515 47.4475673),206,http://www.portseattle.org/seatac/,KSEA,SeaTac,King County,Washington
+YZX,America/Halifax,Greenwood,YZX,CA,POINT (-118.666664 49.166668),92,,CYZX,,,
+SEK,Asia/Srednekolymsk,Srednekolymsk Airport,SEK,RU,POINT (153.72998522576762 67.4746917),42,,UESK,Srednekolymsk,,Sakha
+SEN,Europe/London,London Southend Airport,LON,GB,POINT (0.6966132970490921 51.570227599999996),42,http://www.southendairport.com/,EGMC,Rochford,Essex,England
+SEV,Europe/Kiev,Severodoneck,SEV,UA,POINT (38.54204574366283 48.90159785),193,,UKCS,Syevyerodonets'k,,Luhansk
+SIU,America/Managua,Siuna,SIU,NI,POINT (-84.77740075001209 13.728828799999999),590,,MNSI,Siuna,,Atlantico Norte (RAAN)
+SJY,Europe/Helsinki,Ilmajoki,SJY,FI,POINT (22.83332097896403 62.69110655),252,,EFSI,Seinaejoki,Seinaejoki,Southern Ostrobothnia
+PUO,America/Anchorage,Prudhoe Bay,PUO,US,POINT (-148.3452926 70.2527648),85,,,,,
+SKB,America/St_Kitts,Robert L. Bradshaw International Airport,SKB,KN,POINT (-62.71800233941045 17.3113064),180,,TKPK,Monkey Hill,,Saint Peter Basseterre
+SKD,Asia/Samarkand,Samarkand Airport,SKD,UZ,POINT (66.99274627772559 39.698557),2217,,UTSS,Samarqand,,Samarqand
+SKE,Europe/Oslo,Skien,SKE,NO,POINT (9.567324902216495 59.1845471),387,,ENSN,Skien,Skien,Telemark
+RED,America/New_York,Mifflin County,RED,US,POINT (-77.6259185 40.6775931),780,http://www.mifflincountyairport.com/,KRVL,Church Hill,Mifflin County,Pennsylvania
+JQA,America/Godthab,Qaarsut Airport,JQA,GL,POINT (-52.698953503271895 70.7344416),289,,BGUQ,,,
+DJJ,Asia/Jayapura,Sentani Airport,DJJ,ID,POINT (140.5184882521964 -2.5782397),269,https://sentani-airport.co.id/en,WAJJ,Sentani,,Papua
+DJO,Africa/Abidjan,Daloa,DJO,CI,POINT (-6.466667 6.866944),790,,DIDL,Daloa,,Haut-Sassandra
+ZAC,America/Winnipeg,York Landing,ZAC,CA,POINT (-96.09481 56.0898605),621,,CZAC,,,
+DKR,Africa/Dakar,Leopold Sedar Senghor International Airport,DKR,SN,POINT (-17.482709371575325 14.73702885),78,http://www.aeroportdakar.com/,GOOY,Mermoz Boabab,,Dakar
+SON,Pacific/Efate,Santo Pekoa International Airport,SON,VU,POINT (167.21868291955798 -15.50470155),121,http://www.airports.vu/Santo%20Pekoa/Santo%20Pekoa.htm,NVSS,Luganville,,Sanma
+DLB,Pacific/Port_Moresby,Dalbertis,DLB,PG,POINT (23.8911 56.7417),32,,,Olaine,,Olaine
+RMI,Europe/Rome,Miramare Airport,RMI,IT,POINT (12.625623 44.0241687),16,http://www.riminiairport.com/english/,LIPR,Rivazzurra,Provincia di Rimini,Emilia-Romagna
+RMQ,Asia/Taipei,Taichung International Airport,RMQ,TW,POINT (120.59962083032508 24.2540877),629,http://www.tca.gov.tw/English/Introduction.htm,RCMQ,Fengyuan,,Taiwan
+RNE,Europe/Paris,Renaison,RNE,FR,POINT (4.002201064060962 46.0549977),1059,,LFLO,Saint-Leger-sur-Roanne,Departement de la Loire,Rhone-Alpes
+DLE,Europe/Paris,Dole-Jura Airport,DLE,FR,POINT (5.4276467654311045 47.041742400000004),600,https://www.aeroportdolejura.com/,LFGJ,Choisey,Departement du Jura,Franche-Comte
+DLF,America/Chicago,Laughlin AFB,DRT,US,POINT (-100.9 29.366667),1007,http://www.laughlin.af.mil/,KDLF,Del Rio,Val Verde County,Texas
+DLH,America/Chicago,Duluth International Airport,DLH,US,POINT (-92.20329684929376 46.84183845),1450,http://www.duluthairport.com/,KDLH,Hermantown,Saint Louis County,Minnesota
+RNG,America/Denver,Rangely,RNG,US,POINT (-108.7567515 40.0935188),5282,,,Rangely,Rio Blanco County,Colorado
+RNN,Europe/Copenhagen,Bornholm Airport,RNN,DK,POINT (14.754150289726347 55.064855300000005),36,http://www.bornholms-lufthavn.dk/en/,EKRN,Ronne,Bornholm Kommune,Capital Region
+RNO,America/Los_Angeles,Reno/Tahoe International Airport,RNO,US,POINT (-119.7733318653608 39.498646199999996),4419,http://www.renoairport.com,KRNO,Sparks,Washoe County,Nevada
+DLI,Asia/Ho_Chi_Minh,Lien Khuong Airport,DLI,VN,POINT (108.3611709269135 11.75042785),3100,,VVDL,Duc Trong,,Lam Dong
+SCE,America/New_York,University Park Airport,SCE,US,POINT (-77.84866392425685 40.85032355),1217,http://universityparkairport.com/,KUNV,Houserville,Centre County,Pennsylvania
+DLL,America/New_York,Dillon,DLL,US,POINT (-79.36667 34.416668),164,,KDLC,Dillon,Dillon County,South Carolina
+DLM,Europe/Istanbul,Dalaman Airport,DLM,TR,POINT (28.785783840398203 36.71183085),16,,LTBS,Dalaman,,Mugla
+DLN,America/Denver,Dillon,DLN,US,POINT (-112.63333 45.216667),5091,,KDLN,Dillon,Beaverhead County,Montana
+DLR,Asia/Vladivostok,Dalnerechensk Airport,DLR,RU,POINT (133.7363 45.8783),282,,"",Dal'nerechensk,,Primorskiy
+DLS,America/Los_Angeles,Columbia Gorge Regional/The Dalles Municipal Airport,DLS,US,POINT (-121.166664 45.6),85,http://www.columbiagorgeairport.com/,KDLS,The Dalles,Wasco County,Oregon
+DLU,Asia/Shanghai,Dali Airport,DLU,CN,POINT (100.31988697229497 25.6498551),7020,,ZPDL,Dali,,Yunnan
+DLV,Australia/Darwin,Delissaville,DLV,AU,POINT (130.63333 -12.566667),134,,YDLV,Larrakeyah,Darwin,Northern Territory
+DLZ,Asia/Ulaanbaatar,Dalanzadgad,DLZ,MN,POINT (104.683334 43.966667),5147,,ZMDZ,Ogoomor,,OEmnoegovi
+DMA,America/Phoenix,Davis Monthan AFB,TUS,US,POINT (-110.86990239630313 32.17079565),2683,,KDMA,Tucson,Pima County,Arizona
+MPF,Pacific/Port_Moresby,Mapoda,MPF,PG,POINT (143.16667 -7.966667),13,,AYPO,,,
+MMP,America/Bogota,Mompos,MMP,CO,POINT (-74.43841678209353 9.257874650000002),65,,,Mompos,,Bolivar
+RFN,Atlantic/Reykjavik,Raufarhofn,RFN,IS,POINT (-15.016667 66.416664),0,,BIRG,,,
+RIR,America/Los_Angeles,Riverside Fla-Bob,RAL,US,POINT (-117.36667 33.983334),869,,,,,
+SEZ,Indian/Mahe,Seychelles International Airport,SEZ,SC,POINT (55.52120037637752 -4.674262499999999),36,,FSIA,Cascade,,Cascade
+PTV,America/Los_Angeles,Porterville,PTV,US,POINT (-119.01667 36.066666),472,http://www.ci.porterville.ca.us/depts/PortervilleAirport/,KPTV,Porterville,Tulare County,California
+PTW,America/New_York,Pottstown/Limerick,PTW,US,POINT (-75.63333 40.25),239,https://en.wikipedia.org/wiki/Heritage_Field_Airport,KPTW,Pottstown,Montgomery County,Pennsylvania
+PUN,Africa/Lubumbashi,Punia,PUN,CD,POINT (26.3483146 -1.3902988),1745,,FZOP,Kindu,,Maniema
+PUF,Europe/Paris,The Pau-Pyrenees International Airport,PUF,FR,POINT (-0.413573 43.382347),577,,LFBP,Uzein,Departement des Pyrenees-Atlantiques,Aquitaine
+PUG,Australia/Adelaide,Port Augusta,PUG,AU,POINT (137.76666 -32.5),22,,YPAG,Port Augusta,Port Augusta,South Australia
+PUH,America/Mexico_City,Pochutla,PUH,MX,POINT (-96.46667 15.733333),518,,,San Pedro Pochutla,,Oaxaca
+PTP,America/Guadeloupe,Pointe-a-Pitre International Airport,PTP,GP,POINT (-61.528368796666484 16.2658457),22,http://www.guadeloupe.aeroport.fr/,TFFR,Les Abymes,Guadeloupe,Guadeloupe
+PTQ,America/Belem,Porto de Moz,PTQ,BR,POINT (-52.237087731100814 -1.74273455),26,,SNMZ,Porto de Moz,Porto De Moz,Para
+PTS,America/Chicago,Atkinson Municipal Airport,PTS,US,POINT (-94.733295 37.4458828),921,,,Frontenac,Crawford County,Kansas
+PTY,America/Panama,Tocumen International Airport,PTY,PA,POINT (-79.38148242739149 9.0667814),164,,MPTO,Tocumen,,Panama
+PUB,America/Denver,Pueblo Memorial Airport,PUB,US,POINT (-104.50330795944865 38.298446850000005),4675,,KPUB,Pueblo,Pueblo County,Colorado
+PUT,Asia/Kolkata,Puttaprathe,PUT,IN,POINT (77.78333 14.133333),1535,,VOPN,Puttaparthi,Anantapur,Andhra Pradesh
+PUC,America/Denver,Carbon County,PUC,US,POINT (-110.751257 39.611481),5866,,KPUC,Price,Carbon County,Utah
+PUE,America/Panama,Puerto Obaldia,PUE,PA,POINT (-77.41753081051523 8.66932855),32,,MPOA,Puerto Obaldia,,Guna Yala
+ADI,Africa/Windhoek,Arandis,ADI,NA,POINT (15 -22.4),2043,,FYAR,Arandis,,Erongo
+ADY,Africa/Johannesburg,Alldays,ADY,ZA,POINT (29.053395555022227 -22.67767555),2683,,FAAL,,,
+AGW,Australia/Brisbane,Agnew,AGW,AU,POINT (142.1490609 -12.1453511),200,,"",,,
+PUJ,America/Santo_Domingo,Punta Cana International Airport,PUJ,DO,POINT (-68.36662616922789 18.5697918),52,,MDPC,Punta Cana,,San Juan
+PUL,America/Los_Angeles,Poulsbo,PUL,US,POINT (-122.648084 47.7341171),6,http://www.portofpoulsbo.com/seaplane-base/,"83Q",Poulsbo,Kitsap County,Washington
+PUM,Asia/Makassar,Pomala,PUM,ID,POINT (121.61480652344167 -4.180937050000001),49,,WAWP,Kolaka,,Sulawesi Tenggara
+PUS,Asia/Seoul,Gimhae International Airport,PUS,KR,POINT (128.93640137086572 35.1800774),39,http://gimhae.airport.co.kr/eng/index.jsp,RKPK,Kimhae,,Gyeongsangnam-do
+ZSJ,America/Winnipeg,Sandy Lake,ZSJ,CA,POINT (-93.23333 53.033333),951,,CZSJ,,,
+DMN,America/Denver,Deming,DMN,US,POINT (-107.7205839 32.2623094),4288,http://www.cityofdeming.org/deming-community/municipal-airport,KDMN,Deming,Luna County,New Mexico
+DMU,Asia/Kolkata,Dimapur Airport,DMU,IN,POINT (93.76774143023712 25.88526825),433,,VEMR,Dimapur,Dimapur,Nagaland
+DNA,Asia/Tokyo,Kadena AB,OKA,JP,POINT (127.7675 26.3555999),62,,RODN,Okinawa,,Okinawa
+DNE,America/Chicago,Dallas North Airport,DFW,US,POINT (-97.38333 32.75),656,,,Westworth,Tarrant County,Texas
+DNF,Africa/Tripoli,Martuba,DNF,LY,POINT (22.766666 32.55),1026,,"",Darnah,,Darnah
+DNK,Europe/Kiev,Dnepropetrovsk International Airport,DNK,UA,POINT (35.09662173364201 48.3612473),488,,UKDD,Aviatorskoe,,Dnipropetrovsk
+DNL,America/New_York,Daniel Field,AGS,US,POINT (-81.96667 33.466667),127,http://www.augustaga.gov/index.aspx?NID=486,KDNL,Augusta,Richmond County,Georgia
+PXA,Asia/Jakarta,Atung Bungsu Airport,PXA,ID,POINT (103.379167 -4.0225),2020,,WIPY,Kotaagung,,South Sumatra
+ALK,Africa/Addis_Ababa,Asela,ALK,ET,POINT (39.11667 7.966667),7414,,,Huruta,,Oromiya
+BCO,Africa/Addis_Ababa,Jinka,BCO,ET,POINT (36.55 5.783333),4606,,HABC,,,
+BEI,Africa/Addis_Ababa,Beica,BEI,ET,POINT (34.51957774127783 9.39096515),5275,,HABE,Asosa,Asosa,Binshangul Gumuz
+BJR,Africa/Addis_Ababa,Bahar Dar Airport,BJR,ET,POINT (37.32324 11.603292),6026,,HABD,Bahir Dar,,Amhara
+BOK,America/Los_Angeles,Brookings State,BOK,US,POINT (-124.28333 42.05),98,,KBOK,Brookings,Curry County,Oregon
+DNO,America/Araguaina,Dianopolis,DNO,BR,POINT (-46.8466988 -11.5953999),2365,,SWDN,Taguatinga,Taguatinga,Tocantins
+DNQ,Australia/Sydney,Deniliquin,DNQ,AU,POINT (144.94788406467342 -35.556630999999996),308,http://www.deniliquin.nsw.gov.au/index.php?option=com_content&view=article&id=46786:deniliquin-airport&catid=350&Itemid=1540,YDLQ,Deniliquin,Deniliquin,New South Wales
+DNR,Europe/Paris,Pleurtuit Airport,DNR,FR,POINT (-2.083611 48.587776),193,,LFRD,Pleurtuit,Departement d'Ille-et-Vilaine,Brittany
+MRH,Pacific/Port_Moresby,May River,MRH,PG,POINT (145.33333 -8.466667),0,,AYRV,,,
+DNS,America/Chicago,Municipal,DNS,US,POINT (-95.35 42.016666),1266,http://www.denisonia.com/community/airport.asp,KDNS,Denison,Crawford County,Iowa
+DNT,America/Los_Angeles,Downtown Heliport,SNA,US,POINT (-117.86667 33.766666),78,,,Santa Ana,Orange County,California
+YRR,America/Vancouver,Stuart Island,YRR,CA,POINT (-125.166664 50.416668),360,,"",,,
+RRI,Pacific/Guadalcanal,Barora,RRI,SB,POINT (158.26666 -7.5),0,,,,,
+SMI,Europe/Athens,Samos Airport,SMI,GR,POINT (26.91166205955046 37.69001595),13,,LGSM,Chora,Nomos Samou,North Aegean
+PXL,America/Phoenix,Polacca,PXL,US,POINT (-110.333336 35.8),5823,,P10,First Mesa,Navajo County,Arizona
+PXM,America/Mexico_City,Puerto Escondido Airport,PXM,MX,POINT (-97.083336 15.85),0,,MMPS,Puerto Escondido,San Pedro Mixtepec -Dto. 22 -,Oaxaca
+PXS,Europe/Madrid,Puerto De Santa Maria,PXS,ES,POINT (-6.216667 36.6),26,,,El Puerto de Santa Maria,Provincia de Cadiz,Andalusia
+PYA,America/Bogota,Puerto Boyaca,PYA,CO,POINT (-74.6 5.966667),544,,SKVL,Puerto Boyaca,,Boyaca
+PYB,Asia/Kolkata,Jeypore,PYB,IN,POINT (82.63333 18.833332),2834,,VEJP,Jaypur,Koraput,Odisha
+DEM,Africa/Addis_Ababa,Dembidollo,DEM,ET,POINT (34.85988637487796 8.5508879),5055,,HADD,Dembi Dolo,,Oromiya
+PYC,America/Panama,Playon Chico,PYC,PA,POINT (-79.605835 9.574444),121,,"",Cacique,,Colon
+DGC,Africa/Addis_Ababa,Degahbur,DGC,ET,POINT (43.583332 8.233333),3553,,HADB,Baligubadle,,Woqooyi Galbeed
+DGM,Asia/Colombo,Dongguan,DGM,LK,POINT (113.74 23.03),98,,"",Nancheng,,Guangdong
+ABK,Africa/Addis_Ababa,Kabri Dar,ABK,ET,POINT (44.26611 6.733889),1738,,HAKD,,,
+PYG,Asia/Kolkata,Gangtok-Pakyong Airport,PYG,IN,POINT (88.588333 27.2325),4629,,VEPY,Rangpo,,Sikkim
+AWA,Africa/Addis_Ababa,Awassa,AWA,ET,POINT (38.4910115 7.0643514),5511,,HALA,Hawassa,,"Southern Nations, Nationalities, and People's Region"
+DIR,Africa/Addis_Ababa,Aba Tenna D Yilma Airport,DIR,ET,POINT (41.857994 9.61338),3802,,HADR,Dire Dawa,,Dire Dawa
+PYR,Europe/Athens,Andravida,PYR,GR,POINT (21.466667 37.683334),111,,LGAD,Pyrgos,Nomos Ileias,West Greece
+PYS,America/Los_Angeles,Skypark,PYS,US,POINT (-121.616389 39.710556),1282,http://paradiseairport.com,,Paradise,Butte County,California
+BQO,Africa/Abidjan,Bouna,BQO,CI,POINT (-3.033317862466327 9.2548838),990,,DIBN,Bouna,,Zanzan
+CAX,Europe/London,Carlisle,CAX,GB,POINT (-2.808367404657008 54.93846675),141,,EGNC,Brampton,Cumbria,England
+CRF,Africa/Bangui,Carnot,CRF,CF,POINT (15.933333 4.983333),2263,,FEFC,Carnot,,Mambere-Kadei
+DBT,Africa/Addis_Ababa,Debra Tabor,DBT,ET,POINT (38.025276 11.968056),7378,,HADT,,,
+PYV,America/Panama,Yaviza,PYV,PA,POINT (-77.833336 8.166667),65,,"",Yaviza,,Darien
+PZH,Asia/Karachi,Zhob,PZH,PK,POINT (69.46402038885174 31.35787315),4685,,OPZB,Zhob,,Balochistan
+PZL,Africa/Johannesburg,Zulu Inyala,PZL,ZA,POINT (32.30991374474488 -27.849650250000003),187,,FADQ,Hluhluwe,uMkhanyakude District Municipality,KwaZulu-Natal
+PZE,Europe/London,Penzance,PZE,GB,POINT (-5.516111 50.111942),0,,,Penzance,Cornwall,England
+QGV,Europe/Berlin,Neu Isenburg,FRA,DE,POINT (8.6491225 50.0501384),393,,,Neu Isenburg,Regierungsbezirk Darmstadt,Hesse
+PZK,Pacific/Rarotonga,Puka Puka Island,PZK,CK,POINT (-165.81667 -10.883333),0,,NCPK,Faleasao,Faleasao County,Manu'a
+DJA,Africa/Porto-Novo,Djougou,DJA,BJ,POINT (1.636236 9.6922065),1466,,DBBD,Djougou,,Donga
+DJE,Africa/Tunis,Melita Airport,DJE,TN,POINT (10.775145 33.87118),68,,DTTJ,Houmt Souk,,Madanin
+DNV,America/Chicago,Vermilion County,DNV,US,POINT (-87.59618325590233 40.2003859),672,http://vrairport.com/,KDNV,Danville,Vermilion County,Illinois
+DNZ,Europe/Istanbul,Cardak Airport,DNZ,TR,POINT (29.697340303657736 37.78603475),2778,,LTAY,Cardak,,Denizli
+DOC,Europe/London,Dornoch,DOC,GB,POINT (-4.023288 57.868827),32,http://www.dornochairfield.com/,EGZJ,Dornoch,Highland,Scotland
+DOH,Asia/Qatar,Hamad International Airport,DOH,QA,POINT (51.558067 25.267569),78,http://dohahamadairport.com/,OTHH,Doha,,Baladiyat ad Dawhah
+DOL,Europe/Paris,Saint Gatien Airport,DOL,FR,POINT (0.164167 49.362778),462,,LFRG,Saint-Gatien-des-Bois,Departement du Calvados,Lower Normandy
+PZU,Africa/Khartoum,Port Sudan Airport,PZU,SD,POINT (37.21389 19.577778),29,,HSPN,Port Sudan,,Red Sea
+QAQ,Europe/Rome,L'Aquila–Preturo Airport,QAQ,IT,POINT (13.309167 42.379722),2132,http://www.aeroportodeiparchi.it/,LIAP,Preturo,Provincia dell' Aquila,Abruzzo
+DOR,Africa/Ouagadougou,Dori,DOR,BF,POINT (-0.0650342 14.0261569),918,,DFEE,Dori,Province du Seno,Sahel
+DOS,Pacific/Port_Moresby,Dios,DOS,PG,POINT (154.83333 -5.533333),298,,"",,,
+DOU,America/Campo_Grande,Dourados Airport,DOU,BR,POINT (-54.92640220192091 -22.20140635),1423,,SBDO,Dourados,Dourados,Mato Grosso do Sul
+DOV,America/New_York,Dover AFB,DOV,US,POINT (-75.46791931717073 39.128304799999995),22,http://www.dover.af.mil/,KDOV,Dover Base Housing,Kent County,Delaware
+DOY,Asia/Shanghai,Dongying Airport,DOY,CN,POINT (118.78642878231656 37.5027216),29,,ZSDY,Shengli,,Shandong Sheng
+DPA,America/Chicago,DuPage Airport,CHI,US,POINT (-88.25218333266092 41.90513465),731,http://www.dupageairport.com/,KDPA,Wayne,DuPage County,Illinois
+DPE,Europe/Paris,Dieppe,DPE,FR,POINT (1.241111 49.961388),390,,LFAB,Saint-Martin-en-Campagne,Departement de la Seine-Maritime,Haute-Normandie
+DPG,America/Denver,Michael AAF,DPG,US,POINT (-112.75 40.233334),4908,,KDPG,Grantsville,Tooele County,Utah
+DPK,America/New_York,Deer Park,DPK,US,POINT (-73.53333 41),0,,,Old Greenwich,Fairfield County,Connecticut
+DRY,Australia/Perth,Drysdale River,DRY,AU,POINT (126.416664 -15.666667),1217,,YDRD,,,
+MSG,Africa/Maseru,Matsaile,MSG,LS,POINT (28.75 -29.733334),5885,,,,,
+MTF,Africa/Addis_Ababa,Mizan Teferi,MTF,ET,POINT (35.533333 6.966667),4222,,HAMT,,,
+NEK,Africa/Addis_Ababa,Nekemt,NEK,ET,POINT (36.5 9.066667),6794,,HANK,,,
+YGT,America/Iqaluit,Igloolik Airport,YGT,CA,POINT (-81.81482446871043 69.36376179999999),174,,CYGT,,,
+ASO,Africa/Addis_Ababa,Asosa Airport,ASO,ET,POINT (34.536667 10.047222),4990,,HASO,,,
+QCY,Europe/London,Coningsby RAF Station,QCY,GB,POINT (-0.166014000773 53.0929985046),32,http://www.raf.mod.uk/rafconingsby,EGXC,Coningsby,Lincolnshire,England
+BRP,Pacific/Port_Moresby,Biaru,BRP,PG,POINT (146.7 -7.533333),7791,,AYBR,,,
+QFK,Europe/Oslo,Harbour,QFK,NO,POINT (5.366667 62.05),820,,,Selje,Selje,Sogn og Fjordane
+QFQ,Europe/Oslo,Harbour,QFQ,NO,POINT (5.1 61.95),1286,,,Maloy,Vagsoy,Sogn og Fjordane
+QGQ,America/Godthab,Heliport,QGQ,GL,POINT (-53.62278 67.94056),9,,,Sisimiut,,Qeqqata
+WMK,America/Anchorage,SPB,WMK,US,POINT (-132.18333 55.733334),0,,"84K",,,
+DND,Europe/London,Dundee Airport,DND,GB,POINT (-3.026040420149899 56.4526716),22,http://www.hial.co.uk/dundee-airport.html,EGPN,,,
+DNU,Pacific/Port_Moresby,Dinangat,DNU,PG,POINT (146.67773660731413 -6.154976),5216,,AYDN,,,
+DON,America/Guatemala,Dos Lagunas,DON,GT,POINT (-89.666664 17.633333),1049,,MGDL,,,
+DPL,Asia/Manila,Dipolog Airport,DPL,PH,POINT (123.34199697345741 8.602411799999999),29,http://www.dipologcity.com/AccommodationsDipolog%20Airport.htm,RPMG,Dipolog,Province of Zamboanga del Norte,Zamboanga Peninsula
+DPS,Asia/Makassar,Ngurah Rai International Airport,DPS,ID,POINT (115.16733897840365 -8.7458582),36,http://www.angkasapura1.co.id/eng/location/bali.htm,WADD,Kelanabian,,Bali
+DPT,Asia/Yakutsk,Deputatsky,DPT,RU,POINT (139.88914014647418 69.39220535000001),889,,UEBD,Deputatsky,Ust'-Yanskiy Rayon,Sakha
+DPU,Pacific/Port_Moresby,Dumpu,DPU,PG,POINT (145.75 -5.883333),987,,"",,,
+DQA,Asia/Shanghai,Daqing Shi Airport,DQA,CN,POINT (125.22841 46.58736),396,,ZYDQ,Wolitun,,Heilongjiang Sheng
+DRI,America/Chicago,Beauregard Parish,DRI,US,POINT (-93.28333 30.85),164,,KDRI,DeRidder,Beauregard Parish,Louisiana
+DRO,America/Denver,Durango-La Plata County Airport,DRO,US,POINT (-107.7586059173994 37.15284235),6515,http://www.durangogov.org/airport/index.cfm,KDRO,Bayfield,La Plata County,Colorado
+DRT,America/Chicago,Del Rio International Airport,DRT,US,POINT (-100.97833 29.333332),941,http://www.cityofdelrio.com/index.aspx?NID=412,KDRT,Ciudad Acuna,,Coahuila
+DRU,America/Denver,Drummond,DRU,US,POINT (-113.15 46.666668),3930,,KDRU,Philipsburg,Granite County,Montana
+DRV,Indian/Maldives,Dharavandhoo AIrport,DRV,MV,POINT (73.129714802335 5.1563788),49,,VRMD,Open Stage,,
+DRW,Australia/Darwin,Darwin International Airport,DRW,AU,POINT (130.88362011674445 -12.41190185),62,http://www.darwin-airport.com.au/,YPDN,Ludmilla,Darwin,Northern Territory
+DSA,Europe/London,Doncaster Sheffield Airport,DSA,GB,POINT (-1.0061206459207377 53.47641295),62,http://www.robinhoodairport.com/,EGCN,Finningley,Doncaster,England
+DSD,America/Guadeloupe,La Desirade,DSD,GP,POINT (-61.016666 16.333332),0,,TFFA,Grande Anse,,
+DSE,Africa/Addis_Ababa,Combolcha,DSE,ET,POINT (39.72660294465 11.106068350000001),6059,,HADC,Kombolcha,,Amhara
+DSG,Asia/Manila,Dilasag,DSG,PH,POINT (120 14),0,,"",Cabra,Province of Mindoro Occidental,Mimaropa
+DSI,America/Chicago,Destin-Fort Walton Beach Airport,DSI,US,POINT (-86.5 30.383333),22,http://www.flydts.com/,KDTS,Destin,Okaloosa County,Florida
+DSK,Asia/Karachi,Dera Ismail Khan,DSK,PK,POINT (70.88688793168731 31.91095685),587,,OPDI,Shorko,,Khyber Pakhtunkhwa
+DSM,America/Chicago,Des Moines International Airport,DSM,US,POINT (-93.65927182349738 41.534256),941,http://www.dsmairport.com/,KDSM,Norwalk,Warren County,Iowa
+DSN,Asia/Shanghai,Ordos Ejin Horo Airport,DSN,CN,POINT (110.03333 39.85),4655,,ZBDS,Tianjiao,,Inner Mongolia
+DSO,Asia/Pyongyang,Sondok,DSO,KP,POINT (127.4721274 39.7462648),29,,ZKSD,Sinsang-ni,,Hamgyong-namdo
+DSS,Africa/Dakar,Blaise Diagne International Airport,DKR,SN,POINT (-17.07343116560513 14.6655114),272,http://www.dakaraeroport.com/,GOBD,Pout,,Thies
+PYK,Asia/Tehran,Payam,PYK,IR,POINT (50.82715222099951 35.77795595),4179,,OIIP,Karaj,,Alborz
+PYY,Asia/Bangkok,Pai Airport,PYY,TH,POINT (98.43589618449332 19.37214705),1745,,VTCI,Pai,,Chiang Mai
+PZB,Africa/Johannesburg,Pietermaritzburg Airport,PZB,ZA,POINT (30.39693016850846 -29.6490015),2391,,FAPM,Pietermaritzburg,uMgungundlovu District Municipality,KwaZulu-Natal
+PZI,Asia/Shanghai,Pan Zhi Hua Bao An Ying,PZI,CN,POINT (101.79735174129432 26.539592300000002),6469,,ZUZH,Renhe,,Sichuan
+PZO,America/Caracas,Manuel Carlos Piar Guayana Airport,PZO,VE,POINT (-62.761154416306944 8.287798800000001),413,,SVPR,Ciudad Guayana,Municipio Caroni,Bolivar
+PZY,Europe/Bratislava,Piestany,PZY,SK,POINT (17.82800785784479 48.621998250000004),534,http://www.ba.psg.sk/prezenta/airport-piestany/,LZPP,Piestany,Okres Trnava,Trnavsky
+DSV,America/New_York,Dansville,DSV,US,POINT (-77.7157342 42.5670515),610,http://dansville.lib.ny.us/govern/airport.html,KDSV,Dansville,Livingston County,New York
+ALU,Africa/Mogadishu,Alula,ALU,SO,POINT (50.8 11.966667),22,,HCMA,Bereeda,,Bari
+DSX,Asia/Taipei,Dongsha Island,DSX,TW,POINT (116.72248378285387 20.706188599999997),9,,RCLM,Hudong,,Guangdong
+RAV,America/Bogota,Cravo Norte,RAV,CO,POINT (-70.183334 6.316667),429,,SKCN,Cravo Norte,,Arauca
+BBO,Africa/Mogadishu,Berbera,BBO,SO,POINT (45.00639 10.419444),59,,HCMI,Berbera,,Woqooyi Galbeed
+BIB,Africa/Mogadishu,Baidoa,BIB,SO,POINT (43.63118544127955 3.1035313),1496,,HCMB,Baidoa,,Bay
+BJM,Africa/Bujumbura,Bujumbura International Airport,BJM,BI,POINT (29.366667 -3.383333),2627,,HBBA,Bujumbura,,Bujumbura Mairie
+BLW,Pacific/Honolulu,Bellows Field,BLW,US,POINT (-157.7 21.333332),45,,HCMN,Waimanalo Beach,Honolulu County,Hawaii
+BSA,Africa/Mogadishu,Bossaso,BSA,SO,POINT (49.142991331751006 11.2778277),32,,HCMF,Bosaso,,Bari
+BSW,America/Anchorage,Boswell Bay,BSW,US,POINT (-146.1445823 60.4223364),72,,AK97,,,
+DTA,America/Denver,Delta,DTA,US,POINT (-112.5 39.38333),4737,,KDTA,Delta,Millard County,Utah
+BSY,Africa/Mogadishu,Bardera,BSY,SO,POINT (42.3115383 2.329012),383,,HCMD,Baardheere,,Gedo
+DTE,Asia/Manila,Naga,DTE,PH,POINT (122.98333 14.133333),32,,RPUD,Daet,Province of Camarines Norte,Bicol
+DTI,America/Sao_Paulo,Diamantina,DTI,BR,POINT (-43.65036719883837 -18.23369525),4527,,SNDT,Diamantina,Diamantina,Minas Gerais
+RAZ,Asia/Karachi,Rawala Kot,RAZ,PK,POINT (73.833336 33.841667),5521,,OPRT,Rawala Kot,,Azad Kashmir
+LGX,Africa/Mogadishu,Lugh Ganane,LGX,SO,POINT (42.05 3.8),507,,HCMJ,,,
+DTB,Asia/Jakarta,Sisingamangaraja XII International Airport,DTB,ID,POINT (98.97717829413855 2.26118555),4708,http://silangit-airport.co.id/,WIMN,Siborong-borong,,North Sumatra
+DTL,America/Chicago,Municipal,DTL,US,POINT (-95.88611 46.82639),1374,http://www.detroitlakesaviation.com/index.php?mod=homepage&Page=1,KDTL,Detroit Lakes,Becker County,Minnesota
+DTM,Europe/Berlin,Dortmund Airport,DTM,DE,POINT (7.609717871665552 51.51690725),410,,EDLW,Holzwickede,Regierungsbezirk Arnsberg,North Rhine-Westphalia
+DTU,Asia/Shanghai,Wudalianchi Dedu Airport,DTU,CN,POINT (126.13780921753956 48.442918399999996),941,,ZYDU,Baoquan,,Heilongjiang Sheng
+DUR,Africa/Johannesburg,King Shaka International Airport,DUR,ZA,POINT (31.11688170804795 -29.6099422),246,,FALE,Ballitoville,iLembe District Municipality,KwaZulu-Natal
+DVK,America/Yellowknife,Diavik,DVK,CA,POINT (-110.289001 64.5113983),1387,,CDK2,,,
+BUO,Africa/Mogadishu,Burao,BUO,SO,POINT (45.55417 9.5225),3379,,HCMV,Burao,,Togdheer
+DVL,America/Chicago,Devils Lake Airport,DVL,US,POINT (-98.9072037 48.1138202),1361,http://www.devilslakeairport.com/,KDVL,Devils Lake,Ramsey County,North Dakota
+CMO,Africa/Mogadishu,Obbia,CMO,SO,POINT (48.51558635890029 5.358218900000001),42,,HCMO,Hobyo,,Mudug
+DVN,America/Chicago,Davenport,DVN,US,POINT (-90.58936777613083 41.60892285),734,http://www.cityofdavenportiowa.com/department/?fDD=47-0,KDVN,Eldridge,Scott County,Iowa
+DVO,Asia/Manila,Francisco Bangoy Intl Airport,DVO,PH,POINT (125.64345755531545 7.124879699999999),72,,RPMD,Babak,Province of Davao del Norte,Davao
+CMS,Africa/Mogadishu,Scusciuban,CMS,SO,POINT (50.2032001 10.3138392),1026,,HCMS,Iskushuban,,Bari
+CSO,Europe/Berlin,Cochstedt,CSO,DE,POINT (11.415935734337616 51.8559128),580,,EDBC,Cochstedt,,Saxony-Anhalt
+CTW,America/Phoenix,Cottonwood,CTW,US,POINT (-112.03510468644183 34.72952405),3526,,,Cottonwood,Yavapai County,Arizona
+CUJ,Asia/Manila,Culion,CUJ,PH,POINT (120 11.833333),439,,"",Bulalacao,Province of Palawan,Mimaropa
+CXN,Africa/Mogadishu,Candala,CXN,SO,POINT (49.9105124 11.4957059),42,,HCMC,Qandala,,Bari
+ENS,Europe/Amsterdam,Twente,ENS,NL,POINT (6.882574 52.2781025),88,https://www.twente-airport.nl/,EHTW,,,
+RBA,Africa/Casablanca,Sale Airport,RBA,MA,POINT (-6.748619 34.036137),324,,GMME,Sale,,Rabat-Sale-Zemmour-Zaer
+ZQF,Europe/Berlin,Fohren,ZQF,DE,POINT (6.7866615 49.8647566),0,,,Bekond,,Rheinland-Pfalz
+RBE,Asia/Phnom_Penh,Ratanakiri,RBE,KH,POINT (106.98333 13.666667),800,,VDRK,Ban Lung,,Ratanakiri
+RAE,Asia/Riyadh,Arar Airport,RAE,SA,POINT (41.13773103103597 30.90475725),1791,,OERR,'Ar'ar,,Northern Borders
+RBG,America/Los_Angeles,Roseburg Municipal Airport,RBG,US,POINT (-123.35972 43.238888),482,http://www.cityofroseburg.org/departments/airport/,KRBG,Roseburg,Douglas County,Oregon
+RAI,Atlantic/Cape_Verde,Nelson Mandela International Airport,RAI,CV,POINT (-23.48478206133027 14.9412846),252,,GVNP,Praia,,Praia
+RBL,America/Los_Angeles,Red Bluff Fss,RBL,US,POINT (-122.27292 40.156555),360,,KRBL,Red Bluff,Tehama County,California
+RAK,Africa/Casablanca,Menara Airport,RAK,MA,POINT (-8.032465716209586 31.605871),1499,,GMMX,Marrakesh,Marrakech,Marrakech-Tensift-Al Haouz
+RBN,America/New_York,Fort Jefferson,RBN,US,POINT (-82.86667 24.616667),0,,,Key West,Monroe County,Florida
+RAP,America/Denver,Rapid City Regional Airport,RAP,US,POINT (-103.06068012445681 44.0448069),3120,,KRAP,Box Elder,Pennington County,South Dakota
+RAR,Pacific/Rarotonga,Rarotonga Airport,RAR,CK,POINT (-159.80567804613287 -21.201722349999997),19,,NCRG,Avarua,,
+RAS,Asia/Tehran,Rasht Airport,RAS,IR,POINT (49.6103959243627 37.32402085),-42,http://rasht.airport.ir/HomePage.aspx?site=rasht.airport&lang=fa-IR&tabid=0,OIGG,Rasht,,Gilan
+RBM,Europe/Berlin,Wallmuhle,RBM,DE,POINT (12.5151349788559 48.90102605),1010,,EDMS,Atting,Lower Bavaria,Bavaria
+RDG,America/New_York,Municipalcipal/Spaatz Field,RDG,US,POINT (-75.96389 40.378613),311,,KRDG,River View Park,Berks County,Pennsylvania
+YMU,America/Vancouver,Mansons Landing SPB,YMU,CA,POINT (-124.98369 50.07145),0,,CAV7,,,
+AAC,Africa/Cairo,El Arish International Airport,AAC,EG,POINT (33.829171518733695 31.0742836),85,,HEAR,Arish,,Muhafazat Shamal Sina'
+CNP,America/Scoresbysund,Neerlerit Inaat Airport,CNP,GL,POINT (-22.646402547542213 70.74137594999999),0,,BGCO,,,
+RCR,America/Indiana/Indianapolis,Fulton County,RCR,US,POINT (-86.18423341947808 41.06533295),764,,KRCR,Rochester,Fulton County,Indiana
+DBB,Africa/Cairo,Alalamain International,DBB,EG,POINT (28.46139 30.924444),65,,HEAL,Al `Alamayn,,Muhafazat Matruh
+RDO,Europe/Warsaw,Radom Airport,RDO,PL,POINT (21.213611 51.389167),613,http://lotnisko-radom.eu/pl/,EPRA,Radom,Radom,Masovian Voivodeship
+RDE,Asia/Jayapura,Merdey,RDE,ID,POINT (133.29729085637936 -1.5913163),344,,WASM,Merdey,,West Papua
+RDR,America/Chicago,Grand Forks AFB,RDR,US,POINT (-96.75 46.833332),892,http://www.grandforks.af.mil/,KRDR,Moorhead,Clay County,Minnesota
+RBX,Africa/Juba,Rumbek,RBX,SS,POINT (29.67025686282036 6.83140635),1361,,HSMK,Rumbek,,Lakes
+RDZ,Europe/Paris,Marcillac Airport,RDZ,FR,POINT (2.483866 44.410595),1873,,LFCR,Salles-la-Source,Departement de l'Aveyron,Midi-Pyrenees
+KEW,America/Winnipeg,Keewaywin,KEW,CA,POINT (-92.83464187322227 52.99062345),988,,CPV8,,,
+DTW,America/Detroit,Detroit Metropolitan Wayne County Airport,DTT,US,POINT (-83.35297537621658 42.205699100000004),636,http://www.metroairport.com/,KDTW,Romulus,Wayne County,Michigan
+DUA,America/Chicago,Eaker,DUA,US,POINT (-96.416664 33.983334),682,,KDUA,Durant,Bryan County,Oklahoma
+DUB,Europe/Dublin,Dublin Airport,DUB,IE,POINT (-6.247592522077657 53.4288026),246,http://www.dublinairport.com/,EIDW,Beaumont,,Leinster
+DUC,America/Chicago,Halliburton Field,DUC,US,POINT (-97.960035 34.4720262),1099,,KDUC,Duncan,Stephens County,Oklahoma
+DUD,Pacific/Auckland,Dunedin International Airport,DUD,NZ,POINT (170.20045427891455 -45.9277448),32,http://www.dnairport.co.nz/,NZDN,Milton,Clutha District,Otago
+DUG,America/Phoenix,Bisbee-Douglas International,DUG,US,POINT (-109.6048261340828 31.46388645),4091,http://www.azdot.gov/mpd/airport_development/airports/airports_list.asp?FAA=DUG,KDUG,Pirtleville,Cochise County,Arizona
+DUJ,America/New_York,Du Bois-Jefferson County,DUJ,US,POINT (-78.89889 41.178333),1784,,KDUJ,Reynoldsville,Jefferson County,Pennsylvania
+DUK,Africa/Johannesburg,Dukuduk,DUK,ZA,POINT (32.234165 -28.366667),291,,FADK,Mtubatuba,uMkhanyakude District Municipality,KwaZulu-Natal
+REB,Europe/Berlin,Rechlin,REB,DE,POINT (12.716667 53.35),177,,EDAX,Rechlin,,Mecklenburg-Vorpommern
+RCB,Africa/Johannesburg,Richards Bay Airport,RCB,ZA,POINT (32.09219139820971 -28.74096905),55,,FARB,Richards Bay,uThungulu District Municipality,KwaZulu-Natal
+RCH,America/Bogota,Riohacha Airport,RCH,CO,POINT (-72.91833288840549 11.527112500000001),45,,SKRH,Riohacha,,La Guajira
+RCO,Europe/Paris,Saint Agnant,RCO,FR,POINT (-0.9837471989711792 45.890218950000005),36,,LFDN,Saint-Agnant,Departement de la Charente-Maritime,Poitou-Charentes
+RCS,Europe/London,Rochester,RCS,GB,POINT (0.5047291110496296 51.3516919),403,http://www.rochesterairport.co.uk/,EGTO,Rochester,Medway,England
+RDD,America/Los_Angeles,Redding Municipal Airport,RDD,US,POINT (-122.29537310336356 40.509834600000005),485,,KRDD,Anderson,Shasta County,California
+RDM,America/Los_Angeles,Roberts Field Redmond Municipal Airport,RDM,US,POINT (-121.14906868928065 44.25408195),3054,,KRDM,Redmond,Deschutes County,Oregon
+RDP,Asia/Kolkata,Kazi Nazrul Islam Airport,RDP,IN,POINT (87.2411692735675 23.6247865),252,,VEDG,Bahula,Barddhaman,West Bengal
+RDS,America/Argentina/Salta,Rincon de los Sauces,RDS,AR,POINT (-68.90915307322626 -37.389602249999996),1935,,SAHS,Anelo,Departamento de Anelo,Neuquen
+DUM,Asia/Jakarta,Pinang Kampai,DUM,ID,POINT (101.43332717293623 1.60899315),72,,WIBD,Bagan Besar,,Riau
+DUQ,America/Vancouver,Duncan/Quam,DUQ,CA,POINT (-123.7 48.783333),26,,CAM3,Duncan,,British Columbia
+DVP,Australia/Brisbane,Davenport Downs,DVP,AU,POINT (141.1080017 -24.1499996),305,,YDPD,,,
+DVR,Australia/Darwin,Daly River,DVR,AU,POINT (130.69527136143924 -13.75071),72,,YDMN,,,
+DVT,America/Phoenix,Phoenix Deer Valley Airport,PHX,US,POINT (-112.07980431803716 33.68916925),1450,http://deervalleyairport.com/,KDVT,Glendale,Maricopa County,Arizona
+DWA,Africa/Blantyre,Dwangwa,DWA,MW,POINT (34.13333 -13),2014,,FWDW,Nkhotakota,Nkhotakota District,Central Region
+DWB,Indian/Antananarivo,Soalala,DWB,MG,POINT (45.3581714 -16.101381),111,,FMNO,Sitampiky,,Boeny
+DWD,Asia/Riyadh,Dawadmi Airport,DWD,SA,POINT (44.1258191651475 24.4500793),3061,,OEDM,Ad Dawadimi,,Ar Riyad
+DWS,America/New_York,Walt Disney World,ORL,US,POINT (-81.5722231 28.4020746),65,,"",Celebration,Osceola County,Florida
+MWI,Pacific/Port_Moresby,Maramuni,MWI,PG,POINT (143.4844028111116 -5.12833785),5049,,AYRM,,,
+RDT,Africa/Dakar,Richard Toll,RDT,SN,POINT (-15.659278757169893 16.4370898),19,,GOSR,Richard-Toll,,Saint-Louis
+RDU,America/New_York,Raleigh-Durham International Airport,RDU,US,POINT (-78.78723821716514 35.880361449999995),410,http://www.rdu.com,KRDU,Morrisville,Wake County,North Carolina
+UPR,Pacific/Port_Moresby,Upiara,UPR,PG,POINT (142.63333 -8.533333),52,,AYUR,,,
+REC,America/Recife,Guararapes-Gilberto Freyre International Airport,REC,BR,POINT (-34.92271835508188 -8.1256775),62,http://www.infraero.gov.br/usa/aero_prev_home.php?ai=163,SBRF,Recife,Recife,Pernambuco
+RFD,America/Chicago,Chicago Rockford International Airport,CHI,US,POINT (-89.222115 42.30364),853,,KRFD,Winnebago,Winnebago County,Illinois
+RFA,Africa/Bangui,Rafai,RFA,CF,POINT (23.9275417 4.9885029),1683,,FEGR,Rafai,,
+RFR,America/Costa_Rica,Rio Frio,RFR,CR,POINT (-83.88333 10.333333),265,,MRRF,Roxana,Canton de Pococi,Limon
+RFK,America/Chicago,Rollang Field,RFK,US,POINT (-90.8459333 32.9542936),98,,,Rolling Fork,Sharkey County,Mississippi
+RGA,America/Argentina/Ushuaia,Rio Grande Airport,RGA,AR,POINT (-67.75 -53.779167),26,,SAWE,Rio Grande,,Tierra del Fuego
+KDJ,Africa/Libreville,Ndjole-Ville,KDJ,GA,POINT (10.7616837 -0.186401),164,,FOGJ,,,
+RGH,Asia/Kolkata,Balurghat,RGH,IN,POINT (88.73333 25.25),49,,VEBG,Balurghat,Dakshin Dinajpur,West Bengal
+RHD,America/Argentina/Cordoba,Rio Hondo Airport,RHD,AR,POINT (-64.93524754924269 -27.4965282),951,,SANR,Termas de Rio Hondo,,Santiago del Estero
+RHG,Africa/Kigali,Ruhengeri,RHG,RW,POINT (29.631314047755726 -1.4968370000000002),6089,,HRYU,Musanze,,Northern Province
+RGR,America/Chicago,Ranger Municipalcipal,RGR,US,POINT (-98.683334 32.466667),1466,,F23,Ranger,Eastland County,Texas
+RGT,Asia/Jakarta,Japura,RGT,ID,POINT (102.55 -0.4),26,,WIPR,Rengat,,Riau
+ABS,Africa/Cairo,Abu Simbel,ABS,EG,POINT (31.61302768093995 22.372228200000002),511,,HEBL,,,
+ALY,Africa/Cairo,El Nohza,ALY,EG,POINT (29.953058 31.192545),32,,HEAX,,,
+ATZ,Africa/Cairo,Assiut Airport,ATZ,EG,POINT (31 27.033333),751,,HEAT,Asyut,,Asyut
+RHA,Atlantic/Reykjavik,Reykholar,RHA,IS,POINT (-21.416668 65.166664),866,,BIRE,Borgarnes,,West
+BUX,Africa/Lubumbashi,Bunia,BUX,CD,POINT (30.217270869775717 1.5666587),4041,,FZKA,Bunia,,Eastern Province
+CAI,Africa/Cairo,Cairo International Airport,CAI,EG,POINT (31.424702260069452 30.1141148),324,,HECA,,,
+CCE,America/Marigot,Grand Case,SFG,MF,POINT (-63.11667 18.05),52,http://www.avit.com.eg/index.php/projects/item/138-katameya-airport,HECP,,,
+CSE,America/Denver,Crested Butte,CSE,US,POINT (-106.98333 38.86667),8897,,"0CO2",Crested Butte,Gunnison County,Colorado
+CUX,America/Chicago,Cuddihy Field,CRP,US,POINT (-97.33611 27.75),0,,,,,
+RHE,Europe/Paris,Reims,RHE,FR,POINT (4.050556 49.310833),272,,LFSR,Betheny,Departement de la Marne,Champagne-Ardenne
+RHN,Africa/Windhoek,Rosh Pina,RHN,NA,POINT (16.7 -27.966667),1850,,FYSA,Oranjemund,,Karas
+DWR,Asia/Kabul,Dwyer Air Base,DWR,AF,POINT (64 31),2385,http://militarybases.com/overseas/afghanistan/camp-dwyer/,"",Markaz-e Hukumat-e Darweshan,,Helmand
+DAK,Africa/Cairo,Dakhla,DAK,EG,POINT (28.999166 25.414722),495,,HEDK,,,
+DXD,Australia/Brisbane,Dixie,DXD,AU,POINT (143.66667 -15.166667),574,,YDIX,,,
+DXE,America/Chicago,Bruce Campbell Field,DXE,US,POINT (-90.10313414239927 32.4392835),246,http://www.madisonthecity.com/airport,KMBO,Madison,Madison County,Mississippi
+DXR,America/New_York,Danbury Municipal Airport,DXR,US,POINT (-73.48139626519684 41.3721531),433,,KDXR,Danbury,Fairfield County,Connecticut
+DYA,Australia/Brisbane,Dysart,DYA,AU,POINT (148 -23.5),672,,YDYS,,,
+DYL,America/New_York,Doylestown,DYL,US,POINT (-75.1227001 40.3332001),400,http://www.doylestownairport.com/,KDYL,Doylestown,Bucks County,Pennsylvania
+DYR,Asia/Anadyr,Anadyr Airport,DYR,RU,POINT (177.7358336928592 64.73627164999999),121,,UHMA,Anadyr,,Chukotskiy Avtonomnyy Okrug
+DYS,America/Chicago,Dyess AFB,ABI,US,POINT (-99.71667 32.466667),1715,http://www.dyess.af.mil/,KDYS,Abilene,Taylor County,Texas
+DYU,Asia/Dushanbe,Dushanbe Airport,DYU,TJ,POINT (68.82363701984585 38.54557415),2555,,UTDD,Dushanbe,,Dushanbe
+DYW,Australia/Darwin,Daly Waters,DYW,AU,POINT (133.3775724 -16.2631641),679,,YDLW,,,
+DZA,Indian/Mayotte,Dzaoudzi Airport,DZA,YT,POINT (45.28166027969728 -12.809017149999999),59,,FMCZ,Pamandzi,,Pamandzi
+DZI,America/Bogota,Codazzi,DZI,CO,POINT (-73.283611 10.0375),295,,"",Agustin Codazzi,,Cesar
+DZN,Asia/Almaty,Zhezhazgan Airport,DZN,KZ,POINT (67.73333 47.7),1223,,UAKD,Zhezqazghan,,Qaraghandy
+EAB,Asia/Aden,Abbse,EAB,YE,POINT (43.5 14.583333),1092,,OYAB,Al Hadiyah,Al Jafariyah,Raymah
+EAM,Asia/Riyadh,Nejran,EAM,SA,POINT (44.41506761381417 17.61030315),3946,,OENG,Najran,,Najran
+EAN,America/Denver,Phifer Field,EAN,US,POINT (-104.96667 42.05),4783,,KEAN,Wheatland,Platte County,Wyoming
+EAR,America/Chicago,Kearney Regional Airport,EAR,US,POINT (-99.00166250001115 40.726652200000004),2106,,KEAR,Kearney,Buffalo County,Nebraska
+EAS,Europe/Madrid,San Sebastian Airport,EAS,ES,POINT (-1.7919036957013958 43.35662365),0,,LESO,Fuenterrabia,Provincia de Guipuzcoa,Basque Country
+EAT,America/Los_Angeles,Pangborn Field,EAT,US,POINT (-120.20778 47.399723),1210,http://www.pangbornairport.com/,KEAT,East Wenatchee Bench,Douglas County,Washington
+EAU,America/Chicago,Eau Claire Airport,EAU,US,POINT (-91.4855007489738 44.8689683),895,,KEAU,Lake Hallie,Chippewa County,Wisconsin
+EBA,Europe/Rome,Marina Di Campo Airport,EBA,IT,POINT (10.283333 42.766666),387,,LIRJ,Campo nell'Elba,Provincia di Livorno,Tuscany
+EBG,America/Bogota,El Bagre,EBG,CO,POINT (-74.80916545982383 7.595969200000001),150,,SKEB,El Bagre,,Antioquia
+DZO,America/Montevideo,Santa Bernardina,DZO,UY,POINT (-56.516666 -33.416668),255,,SUDU,Durazno,,Durazno
+KUE,Pacific/Guadalcanal,Kukundu,KUE,SB,POINT (156 -8.016667),32,,AGKU,,,
+YOH,America/Winnipeg,Oxford House,YOH,CA,POINT (-95.27646737422647 54.9344837),663,,CYOH,,,
+DZU,Asia/Shanghai,Dazu,DZU,CN,POINT (105.71667 29.7),1236,,ZUDZ,Longgang,,Chongqing Shi
+NAZ,Pacific/Guadalcanal,Nana,NAZ,SB,POINT (-74.95 -14.866667),2644,,AGNA,,,
+MZN,Pacific/Port_Moresby,Minj,MZN,PG,POINT (144.6901838 -5.9064894),5301,,,,,
+PNP,Pacific/Port_Moresby,Girua Airport,PNP,PG,POINT (148.31082121223585 -8.80380505),265,,AYGR,,,
+RHT,Asia/Chongqing,Alxa Right Banner,RHT,CN,POINT (101.6442 39.2133),4835,,ZBAR,Ehen Hudag,,Inner Mongolia
+RIA,America/Sao_Paulo,Santa Maria Airport,RIA,BR,POINT (-53.6875 -29.710556),285,,SBSM,Santa Maria,Santa Maria,Rio Grande do Sul
+RIB,America/La_Paz,Gen Buech Airport,RIB,BO,POINT (-66.093056 -11.006944),429,,SLRI,Riberalta,,El Beni
+RIZ,America/Panama,Rio Alzucar,RIZ,PA,POINT (-80.833336 8.25),232,http://www.rzairport.com.cn/,ZSRZ,El Espino de Santa Rosa,,Veraguas
+RJA,Asia/Kolkata,Rajahmundry Airport,RJA,IN,POINT (81.81832195423078 17.105190399999998),114,http://aai.aero/allAirports/rajahmundry_generalinfo.jsp,VORY,Rajahmundry,East Godavari,Andhra Pradesh
+RJH,Asia/Dhaka,Rajshahi Airport,RJH,BD,POINT (88.61425835907019 24.4382974),36,,VGRJ,Rajshahi,,Rajshahi
+ASW,Africa/Cairo,Aswan Airport,ASW,EG,POINT (32.82937355051733 23.96342585),551,,HESN,Aswan,,Aswan
+RKR,America/Chicago,Robert S Kerr,RKR,US,POINT (-94.6203052 35.019388),410,,,Poteau,Le Flore County,Oklahoma
+RKC,America/Los_Angeles,Yreka,RKC,US,POINT (-122.63333 41.733334),2608,,,Yreka,Siskiyou County,California
+BJE,Africa/Khartoum,Baleela,BJE,SD,POINT (28.522569598558693 11.19957815),1620,,"",Al Fulah,,Southern Kordofan
+BVP,Pacific/Port_Moresby,Bolovip,BVP,PG,POINT (141.7 -5.383333),4908,,"",,,
+BWJ,Pacific/Port_Moresby,Bawan,BWJ,PG,POINT (146.9 -6.4),3612,,"",,,
+CHP,America/Anchorage,Circle Hot Springs,CHP,US,POINT (-144.61840090932276 65.48552135),872,,CHP,,,
+RKH,America/New_York,Rock Hill,RKH,US,POINT (-81.01667 34.916668),613,http://www.cityofrockhill.com/departments/airport/more/airport,KUZA,Rock Hill,York County,South Carolina
+RKI,Asia/Jakarta,Rokot,RKI,ID,POINT (100.75 -0.95),4885,,"",Sirukam,,West Sumatra
+RKO,Asia/Jakarta,Sipora,RKO,ID,POINT (116 -2.083333),314,,,Kerang,,East Kalimantan
+RKP,America/Chicago,Aransas County,RKP,US,POINT (-97.05 28.033333),39,http://aransascountyairport.com/,KRKP,Rockport,Aransas County,Texas
+EBH,Africa/Algiers,El Bayadh,EBH,DZ,POINT (1.098237257604271 33.727139699999995),4543,,DAOY,El Bayadh,,El Bayadh
+EBJ,Europe/Copenhagen,Esbjerg Airport,EBJ,DK,POINT (8.551971127881163 55.525719300000006),68,http://www.esbjerg-lufthavn.dk/en/,EKEB,Tjaereborg,Esbjerg Kommune,South Denmark
+RKU,Pacific/Port_Moresby,Kairuku,RKU,PG,POINT (146.51666 -8.816667),0,,AYRK,Port Moresby,,National Capital
+EBL,Asia/Baghdad,Erbil International Airport,EBL,IQ,POINT (43.9489017061083 36.23784135),1164,,ORER,Erbil,,Arbil
+RKV,Atlantic/Reykjavik,Reykjavik International Airport,REK,IS,POINT (-21.932476 64.13106),32,,BIRK,Kopavogur,,Capital Region
+RKW,America/New_York,Rockwood Municipal Airport,RKW,US,POINT (-84.683334 35.86667),944,http://www.rockwoodtn.org/airport.html,KRKW,Rockwood,Roane County,Tennessee
+EBM,Africa/Tunis,El Borma,EBM,TN,POINT (9.254241482361664 31.70399195),790,,DTTR,Remada,,Tataouine
+RKZ,Asia/Shanghai,Peace,RKZ,CN,POINT (89.31 29.351944),12470,,ZURK,Car,,Tibet Autonomous Region
+RLI,America/Chicago,Reilly AHP,ANB,US,POINT (-85.85 33.666668),692,,,Anniston,Calhoun County,Alabama
+RLO,America/Argentina/San_Luis,Valle Del Conlara,RLO,AR,POINT (-65.5525 -32.384445),3143,,SAOS,Libertador General San Martin,,San Luis
+ROZ,Europe/Madrid,US Naval Station,ROZ,ES,POINT (-7.502778 43.119446),1427,,LERT,Mos,Provincia de Lugo,Galicia
+RPA,Asia/Kathmandu,Rolpa,RPA,NP,POINT (87.333336 26.983334),3910,,VNRP,Dhankuta,,Eastern Region
+RQW,Asia/Baghdad,West,RQW,IQ,POINT (43.125099182099994 35.76720047),728,,ORQW,Ash Sharqat,,Salah ad Din Governorate
+RRA,Europe/Madrid,Ronda,RRA,ES,POINT (-5.166667 36.75),2486,,,Ronda,Provincia de Malaga,Andalusia
+EBR,America/Chicago,Downtown,BTR,US,POINT (-91.183334 30.45),82,,,Port Allen,West Baton Rouge Parish,Louisiana
+EBS,America/Chicago,Municipal,EBS,US,POINT (-93.816666 42.466667),1056,,KEBS,Webster City,Hamilton County,Iowa
+EBU,Europe/Paris,Boutheon Airport,EBU,FR,POINT (4.296944 45.54139),1256,,LFMH,Veauche,Departement de la Loire,Rhone-Alpes
+ECA,America/Detroit,Emmet County Airport,ECA,US,POINT (-83.48333 44.266666),574,http://www.us23heritageroute.org/location.asp?ait=av&aid=839,"",East Tawas,Iosco County,Michigan
+ECG,America/New_York,Elizabeth City,ECG,US,POINT (-76.17204983902565 36.2605734),26,http://www.ecgairport.com/,KECG,Camden,Camden County,North Carolina
+ECH,Australia/Melbourne,Echuca,ECH,AU,POINT (144.7610910972121 -36.1621057),341,,YECH,Echuca,Campaspe,Victoria
+ECI,America/Managua,Costa Esmeralda Airport,ECI,NI,POINT (-86.03415499696573 11.4277197),49,http://www.mukulresort.com/costa-esmeralda-airport.html,MNCE,Tola,,Rivas
+ECN,Asia/Nicosia,Ercan Airport,ECN,CY,POINT (33.50533235019655 35.1522933),370,,LCEN,Geri,,Lefkosia
+ECP,America/Chicago,NW Florida Beaches Int,PFN,US,POINT (-85.79892 30.357803),55,http://iflybeaches.com,KECP,Laguna Beach,Bay County,Florida
+ECS,America/Denver,Mondell,ECS,US,POINT (-104.183334 43.833332),4386,,KECS,Newcastle,Weston County,Wyoming
+NRL,Europe/London,North Ronaldsay Airport,NRL,GB,POINT (-2.434117719915262 59.36716855),42,,EGEN,,,
+EDD,Australia/Darwin,Erldunda,EDD,AU,POINT (133.2 -25.25),1354,,YERL,,,
+KWS,Pacific/Guadalcanal,Kwailabesi Aerodrom,KWS,SB,POINT (-71.8069 41.350193),52,,AGKW,,,
+SGB,Pacific/Port_Moresby,Singaua,SGB,PG,POINT (147.13333 -6.7),29,,,,,
+RRG,Indian/Mauritius,Rodrigues Island Airport,RRG,MU,POINT (63.35 -19.75),0,,FIMR,Baie aux Huitres,,Rodrigues
+RRN,America/Belem,Serra Norte,RRN,BR,POINT (-59 -11),1092,,,Vilhena,Vilhena,Rondonia
+RRO,Europe/Rome,Sorrento,RRO,IT,POINT (14.366667 40.61667),912,,,Massa Lubrense,Provincia di Napoli,Campania
+RSE,Australia/Sydney,Rose Bay,SYD,AU,POINT (151.21666 -33.8),216,,"",Castlecrag,Willoughby,New South Wales
+RSG,America/Belem,Serra Pelada,RSG,BR,POINT (-49.65 -5.95),944,,,Maraba,Maraba,Para
+RSI,America/Panama,Rio Sidra,RSI,PA,POINT (-80.333336 8.966667),475,,,Puerto Escondido,,Colon
+ROP,Pacific/Saipan,Rota Airport,ROP,MP,POINT (145.24109209915855 14.17434795),606,,PGRO,Yigo Village,,Yigo
+ASA,Africa/Asmara,Assab International,ASA,ER,POINT (42.641747301941436 13.07595515),32,,HHSB,,,
+RSL,America/Chicago,Russell,RSL,US,POINT (-98.85 38.88333),1814,http://www.russellcity.org/airport.php,KRSL,Russell,Russell County,Kansas
+RSS,Africa/Khartoum,Roseires,RSS,SD,POINT (34.4 11.783333),1584,,HSDZ,Ad-Damazin,,Blue Nile
+ROR,Pacific/Palau,Airai Airport,ROR,PW,POINT (134.54430649330376 7.366885099999999),164,,PTRO,Ngetkib,,Airai
+ROU,Europe/Sofia,Rousse,ROU,BG,POINT (26.0561248660734 43.69361995),613,,LBRS,Ivanovo,Obshtina Ivanovo,Ruse
+ROV,Europe/Moscow,Platov International Airport,ROV,RU,POINT (39.92902340634963 47.49358975),167,,URRP,Grushevskaya,,Rostov
+EDE,America/New_York,Municipal,EDE,US,POINT (-76.65 36.066666),29,,KEDE,Edenton,Chowan County,North Carolina
+ROW,America/Denver,Roswell International Air Center,ROW,US,POINT (-104.5316574 33.3006936),3631,,KROW,Roswell,Chaves County,New Mexico
+TCP,Africa/Cairo,Taba International,TCP,EG,POINT (34.916668 29.55),2415,,HETB,,,
+EDG,America/New_York,Weide AAF,EDG,US,POINT (-76.360916 39.465668),246,,,Joppatowne,Harford County,Maryland
+ASM,Africa/Asmara,Asmara International Airport,ASM,ER,POINT (38.91610962389453 15.293245200000001),7591,,HHAS,Asmara,,Maekel Region
+ASV,Africa/Nairobi,Amboseli,ASV,KE,POINT (37.24857863904734 -2.64532555),3694,,HKAM,Namanga,,Kajiado
+BXZ,Pacific/Port_Moresby,Bunsil,BXZ,PG,POINT (147.86660611449997 -5.7239684),170,,AYNS,,,
+DBM,Africa/Addis_Ababa,Debra Marcos,DBM,ET,POINT (37.743057 10.319444),7946,,HADM,Debre Mark'os,,Amhara
+RRJ,America/Sao_Paulo,Jacarepaguá Airport,RRJ,BR,POINT (-43.371449464398225 -22.98641695),45,https://www4.infraero.gov.br/aeroportos/aeroporto-de-jacarepagua-roberto-marinho/,SBJR,Rio de Janeiro,,
+RPN,Asia/Jerusalem,Rosh Pina,RPN,IL,POINT (35.574680736413896 32.9816323),846,,LLIB,Rosh Pinna,,Northern District
+RPR,Asia/Kolkata,Swami Vivekananda Airport,RPR,IN,POINT (81.73994786883992 21.1826689),1017,http://aai.aero/allAirports/raipur_generalinfo.jsp,VERP,Bhatgaon,Raipur,Chhattisgarh
+RQA,Asia/Shanghai,Ruoqiang Loulan Airport,RQA,CN,POINT (88.00915914930744 38.97304815),2867,,ZWRQ,Ruoqiang,,Xinjiang Uygur Zizhiqu
+RRK,Asia/Kolkata,Rourkela,RRK,IN,POINT (84.8155119802054 22.25484455),620,,VERK,Banposh,Sundargarh,Odisha
+RSD,America/Nassau,South Eleuthera Airport,RSD,BS,POINT (-76.18381779273884 24.8910397),29,,MYER,Governor's Harbour,,Central Eleuthera
+RSK,Asia/Jayapura,Ransiki,RSK,ID,POINT (134.1726687 -1.4952691),114,,WASC,Ransiki,,West Papua
+RUH,Asia/Riyadh,King Khaled International Airport,RUH,SA,POINT (46.702877 24.95929),2086,http://www.riyadh-airport.com/,OERK,Riyadh,,Ar Riyad
+RTG,Asia/Makassar,Ruteng,RTG,ID,POINT (120.47889054784591 -8.59664555),3733,,WATG,Ruteng,,East Nusa Tenggara
+RTW,Europe/Samara,Saratov Tsentralny Airport,RTW,RU,POINT (46.04171591129158 51.5654706),485,,UWSS,Saratov,Saratovskiy Rayon,Saratov
+KLK,Africa/Nairobi,Kalokol,KLK,KE,POINT (25.783333 -6.783333),1245,,HKFG,,,
+RUM,Asia/Kathmandu,Rumjatar,RUM,NP,POINT (86.55115775693301 27.30246205),4393,,VNRT,Ramechhap,Janakpur Zone,Central Region
+RUS,Pacific/Guadalcanal,Marau Sound,RUS,SB,POINT (161.25 -8.5),0,,AGGU,Auki,,Malaita
+EDI,Europe/London,Edinburgh Airport,EDI,GB,POINT (-3.3595079855289756 55.950128899999996),72,http://www.edinburghairport.com/,EGPH,Ratho,Edinburgh,Scotland
+EDK,America/Chicago,El Dorado,EDK,US,POINT (-96.86667 37.816666),1338,http://www.eldoks.com/Airport%20Cover.html,KEQA,El Dorado,Butler County,Kansas
+EDL,Africa/Nairobi,Eldoret Airport,EDL,KE,POINT (35.23328885990355 0.4043631),6837,http://www.kenyaairports.co.ke/kaa/airports/eldoret/,HKEL,Eldoret,,Uasin Gishu
+EDM,Europe/Paris,Les Ajoncs,EDM,FR,POINT (-1.3797223100470644 46.7018458),262,,LFRI,Dompierre-sur-Yon,Departement de la Vendee,Pays de la Loire
+EDO,Europe/Istanbul,Balikesir Koca Seyit Airport,EDO,TR,POINT (27.033333 39.583332),78,,LTFD,Edremit,,Balikesir
+EDW,America/Los_Angeles,Edwards AFB,EDW,US,POINT (-117.916664 35),2368,,KEDW,North Edwards,Kern County,California
+EED,America/Los_Angeles,Needles,EED,US,POINT (-114.61667 34.85),482,http://cms.sbcounty.gov/airports/Airports/Needles.aspx,KEED,Needles,San Bernardino County,California
+EEN,America/New_York,Dillant-Hopkins,EEN,US,POINT (-72.26985656446831 42.8946227),449,,KEEN,Swanzey,Cheshire County,New Hampshire
+LOK,Africa/Nairobi,Lodwar Airport,LOK,KE,POINT (35.60945590645913 3.12213865),1633,,HKLO,,,
+OTV,Pacific/Guadalcanal,Ontong Java,OTV,SB,POINT (159.52278 -5.513889),26,,AGGQ,,,
+UVO,Pacific/Port_Moresby,Uvol,UVO,PG,POINT (150.96666 -5.975),508,,AYUZ,,,
+BYT,Europe/Dublin,Bantry,BYT,IE,POINT (-9.486540712890154 51.6774381),26,,EIBN,Bantry,County Cork,Munster
+RUT,America/New_York,Rutland Airport,RUT,US,POINT (-72.94833 43.529446),764,,KRUT,Rutland,Rutland County,Vermont
+KGM,Pacific/Port_Moresby,Kungum,KGM,PG,POINT (39.78 -5.18),349,,AYIM,,,
+RUV,America/Guatemala,Rubelsanto,RUV,GT,POINT (-90.333336 15.833333),672,,MGRB,Chisec,,Alta Verapaz
+RUY,America/Tegucigalpa,Copan,RUY,HN,POINT (-88 15),1656,,MHRU,San Buenaventura,,Cortes
+RVD,America/Sao_Paulo,Rio Verde Airport,RVD,BR,POINT (-50.933334 -17.716667),2627,,SWLC,Santa Helena de Goias,Santa Helena De Goias,Goias
+RVE,America/Bogota,Los Colonizadores,RVE,CO,POINT (-71.9 6.916667),875,,SKSA,Municipio de Fortul,,Arauca
+RVI,Europe/Moscow,Rostov Airport,ROV,RU,POINT (39.75 47.25),272,,,Imeni Chkalova,,Rostov
+YDT,America/Vancouver,Boundary Bay Airport,YVR,CA,POINT (-123.183334 49.183334),6,http://http://czbb.com/,CZBB,,,
+RVK,Europe/Oslo,Ryumsjoen Airport,RVK,NO,POINT (11.233333 64.88333),318,https://avinor.no/en/airport/rorvik-airport/,ENRM,Rorvik,Vikna,Nord-Trondelag
+EOI,Europe/London,Eday Airport,EOI,GB,POINT (-2.7696008051153758 59.19167795),32,,EGED,,,
+RVO,Africa/Johannesburg,Reivilo,RVO,ZA,POINT (24.133333 -27.6),4698,,FARI,Pampierstad,,North-West
+RVR,America/Denver,Green River,RVR,US,POINT (-110.25 38.966667),4248,,KU34,East Carbon City,Carbon County,Utah
+RVS,America/Chicago,R.Lloyd Jones,TUL,US,POINT (-95.96667 36.15),731,http://www.tulsaairports.com/general-aviation/r-l-jones/,KRVS,Tulsa,Tulsa County,Oklahoma
+EFD,America/Chicago,Ellington Field,HOU,US,POINT (-95.15 29.6),32,,KEFD,Webster,Harris County,Texas
+EFG,Pacific/Port_Moresby,Efogi,EFG,PG,POINT (147.65981923737388 -9.1537629),3887,,AYEF,,,
+EFL,Europe/Athens,Kefallinia Airport,EFL,GR,POINT (20.50046516809963 38.120146399999996),65,,LGKF,Argostolion,Nomos Kefallinias,Ionian Islands
+SAB,America/Kralendijk,J. Yrausquin Airport,SAB,BQ,POINT (-63.216667 17.65),0,,TNCS,Upper Hell's Gate,,Saba
+EFW,America/Chicago,Municipal,EFW,US,POINT (-94.38333 42.016666),1049,http://cityofjeffersoniowa.org/depts-airport.php,KEFW,Jefferson,Greene County,Iowa
+SAC,America/Los_Angeles,Sacramento Executive Airport,SAC,US,POINT (-121.933334 38.05),0,http://www.sacramento.aero/sac/,KSAC,Bay Point,Contra Costa County,California
+EGC,Europe/Paris,Roumanieres Airport,EGC,FR,POINT (0.483333 44.85),91,,LFBE,Bergerac,Departement de la Dordogne,Aquitaine
+SAD,America/Phoenix,Safford,SAD,US,POINT (-109.71667 32.833332),2942,,KSAD,Safford,Graham County,Arizona
+SAE,Asia/Makassar,Sangir,SAE,ID,POINT (118.333336 -8.366667),26,,,Kambu,,West Nusa Tenggara
+SAF,America/Denver,Santa Fe,SAF,US,POINT (-106.08833 35.6175),6299,,KSAF,La Cienega,Santa Fe County,New Mexico
+SAR,America/Chicago,Sparta Community,SAR,US,POINT (-89.69975207893714 38.1491926),334,http://www.ksarairport.com/,KSAR,Sparta,Randolph County,Illinois
+SAS,America/Los_Angeles,Salton City,SAS,US,POINT (-115.9900012 33.283651),36,,KSAS,Salton City,Imperial County,California
+SAV,America/New_York,Savannah/Hilton Head Airport,SAV,US,POINT (-81.19770644774445 32.12423765),32,,KSAV,Pooler,Chatham County,Georgia
+SAZ,Africa/Monrovia,Sasstown,SAZ,LR,POINT (-8.4344961 4.6816147),68,,GLST,Barclayville,,Grand Kru
+SAU,Asia/Makassar,Sawu,SAU,ID,POINT (121.9 -10.483333),357,,WATS,Nahura,,East Nusa Tenggara
+KEU,America/Nome,Kelly Bar,KEU,US,POINT (-162.28334 67.916664),5800,,HKKE,,,
+SAX,America/Panama,Sambu,SAX,PA,POINT (-78.083336 8.033333),528,,"",Bayamon,,Embera
+SAY,Europe/Rome,Siena,SAY,IT,POINT (11.25 43.25),570,,LIQS,Rosia,Provincia di Siena,Tuscany
+WPC,America/Edmonton,Pincher Creek,WPC,CA,POINT (-113.95 49.483334),3746,,CZPC,,,
+EGE,America/Denver,Eagle County Airport,EGE,US,POINT (-106.91347 39.63988),6525,http://www.eaglecounty.us/airport/,KEGE,Gypsum,Eagle County,Colorado
+EGI,America/Chicago,Duke Field,VPS,US,POINT (-86.5 30.483334),59,http://www.919sow.afrc.af.mil/,KEGI,Valparaiso,Okaloosa County,Florida
+EGO,Europe/Moscow,Belgorod Airport,EGO,RU,POINT (36.65 50.63333),439,,UUOB,Belgorod,Belgorodskiy Rayon,Belgorod
+EGP,America/Chicago,Maverick Co,EGP,US,POINT (-100.48055 28.702223),767,,"5T9",Las Quintas Fronterizas Colonia,Maverick County,Texas
+EGV,America/Chicago,Eagle River,EGV,US,POINT (-89.26583 45.92917),1660,http://www.erairport.com/,KEGV,Eagle River,Vilas County,Wisconsin
+EHL,America/Argentina/Salta,El Bolson,EHL,AR,POINT (-71.75 -42),4740,,SAVB,Lago Puelo,,Chubut
+EIB,Europe/Berlin,Eisenach,EIB,DE,POINT (10.483333 50.983334),974,http://www.flugplatz-eisenach.de/,EDGE,Haina,,Thuringia
+EIE,Asia/Krasnoyarsk,Eniseysk,EIE,RU,POINT (92.11667 58.466667),252,,UNII,Yeniseysk,,Krasnoyarskiy
+EIH,Australia/Brisbane,Einasleigh,EIH,AU,POINT (144.0941306835668 -18.50447295),1499,,YEIN,,,
+EIK,Europe/Moscow,Yeysk,EIK,RU,POINT (38.237158094610876 46.68697795),55,,URKE,Yeysk,,Krasnodarskiy
+EIN,Europe/Amsterdam,Eindhoven Airport,EIN,NL,POINT (5.3926936 51.4571023),62,http://www.eindhovenairport.nl/,EHEH,Meerhoven,Gemeente Eindhoven,North Brabant
+EJA,America/Bogota,Variguies Airport,EJA,CO,POINT (-73.799164 7.015833),452,,SKEJ,Barrancabermeja,,Santander
+EJH,Asia/Riyadh,Wedjh Airport,EJH,SA,POINT (36.47481 26.207716),68,,OEWJ,Al Wajh,,Mintaqat Tabuk
+MAG,Pacific/Port_Moresby,Madang Airport,MAG,PG,POINT (145.7882759984853 -5.20855725),22,,AYMD,,,
+PHR,Pacific/Fiji,Pacific Harbor,PHR,FJ,POINT (178.05 -18.2),249,,,,,
+SBB,America/Caracas,Santa Barbara Ba,SBB,VE,POINT (-71.166664 7.783333),583,,SVSB,Santa Barbara,Municipio Ezequiel Zamora,Barinas
+SCZ,Pacific/Guadalcanal,Santa Cruz Island,SCZ,SB,POINT (166.85 -11.616667),629,,AGGL,Lata,,Temotu
+DUF,America/New_York,Pine Island Airport,DUF,US,POINT (-75.78889 36.25833),26,,"7NC2",Southern Shores,Dare County,North Carolina
+SBK,Europe/Paris,Saint Brieuc-Armor,SBK,FR,POINT (-2.8506071102345047 48.53880965),416,,LFRT,Ploufragan,Departement des Cotes-d'Armor,Brittany
+SCI,America/Caracas,San Cristobal,SCI,VE,POINT (-72.23333 7.766667),2703,,SVPM,San Cristobal,Municipio San Cristobal,Tachira
+SCK,America/Los_Angeles,Stockton Airport,SAC,US,POINT (-121.23917 37.894444),3,http://www.sjgov.org/airport/,KSCK,French Camp,San Joaquin County,California
+SBQ,Asia/Karachi,Sibi,SBQ,PK,POINT (67.84442996533956 29.5741181),416,,OPSB,Sibi,,Balochistan
+SBX,America/Denver,Shelby,SBX,US,POINT (-111.87008393375243 48.540408299999996),3405,,KSBX,Shelby,Toole County,Montana
+SCW,Europe/Moscow,Syktyvkar Airport,SCW,RU,POINT (50.84684037543079 61.648572349999995),318,,UUYY,Syktyvkar,Syktyvdinskiy Rayon,Komi Republic
+SCO,Asia/Aqtau,Aktau International Airport,SCO,KZ,POINT (51.1 43.86667),59,http://aktau-airport.kz/,UATE,Aktau,,Mangghystau
+SCP,Europe/Paris,St Crepin,SCP,FR,POINT (0.616667 45.416668),738,http://www.stcrepin-aero.com/,LFNC,Brantome,Departement de la Dordogne,Aquitaine
+SCX,America/Mexico_City,Salina Cruz,SCX,MX,POINT (-95.2 16.166668),0,,MMSZ,Salina Cruz,Salina Cruz,Oaxaca
+SCY,Pacific/Galapagos,San Cristobal Airport,SCY,EC,POINT (-89.433334 -0.833333),439,,SEST,Puerto Baquerizo Moreno,,Galapagos
+SDV,Asia/Jerusalem,Dov Hoz Airport,TLV,IL,POINT (34.787857 32.104885),26,,LLSD,Tel Aviv,,Tel Aviv
+SDY,America/Denver,Richland Municipal Airport,SDY,US,POINT (-104.19194 47.706944),2011,,KSDY,Sidney,Richland County,Montana
+SED,Asia/Jerusalem,Min'hat Hashnayim,SED,IL,POINT (35.38333 31.15),-1299,,,`En Boqeq,,Southern District
+EJN,Asia/Chongqing,Ejin Banner Taolai Airport,EJN,CN,POINT (100.99725353490388 42.01684485),3028,,ZBEN,Dalain Hob,,Inner Mongolia
+SEE,America/Los_Angeles,Gillespie Field,SAN,US,POINT (-116.97222 32.82611),344,http://GillespieField.com/,KSEE,Santee,San Diego County,California
+SEF,America/New_York,Sebring Regional Airport,SEF,US,POINT (-81.416664 27.5),111,http://www.sebring-airport.com/,KSEF,Sebring,Highlands County,Florida
+SEI,America/Bahia,Senhor Do Bonfim,SEI,BR,POINT (-40.183334 -10.45),1883,,,Senhor do Bonfim,Senhor Do Bonfim,Bahia
+EKA,America/Los_Angeles,Murray Field,EKA,US,POINT (-124.11482473433841 40.8034696),26,,KEKA,Myrtletown,Humboldt County,California
+EKB,Asia/Almaty,Ekibastuz,EKB,KZ,POINT (75.21788860958364 51.590276),774,,UASB,Ekibastuz,,Pavlodar
+EKD,Australia/Darwin,Elkedra,EKD,AU,POINT (135.55 -21.15),1082,,YELK,,,
+EKI,America/Indiana/Indianapolis,Municipal,EKI,US,POINT (-85.992226 41.72222),770,http://www.elkhartindiana.org/department/index.php?structureid=2,KEKM,Simonton Lake,Elkhart County,Indiana
+EKN,America/New_York,Elkins,EKN,US,POINT (-79.85778 38.889442),1942,http://www.elkinsairport.com/,KEKN,Elkins,Randolph County,West Virginia
+EKO,America/Los_Angeles,Elko Airport,EKO,US,POINT (-115.78801112941872 40.82550195),5032,,KEKO,Elko,Elko County,Nevada
+EKS,Asia/Sakhalin,Shakhtyorsk Airport,EKS,RU,POINT (142.077703 49.190735),32,,UHSK,Shakhtersk,,Sakhalin
+SEG,America/New_York,Penn Valley,SEG,US,POINT (-76.863304 40.8167514),456,http://www.dot.state.pa.us/Internet/Bureaus/pdBOA.nsf/AviationHomepage?openframeset,KSEG,Hummels Wharf,Snyder County,Pennsylvania
+EKX,America/New_York,Elizabethtown,EKX,US,POINT (-85.92778 37.68889),767,http://www.ekxairport.com/,KEKX,Elizabethtown,Hardin County,Kentucky
+ELA,America/Chicago,Eagle Lake,ELA,US,POINT (-96.3224655 29.5994056),98,,KELA,Eagle Lake,Colorado County,Texas
+SEM,America/Chicago,Craig AFB,SES,US,POINT (-87.08722 32.226112),147,http://www.craigcomplex.com/,KSEM,Selmont-West Selmont,Dallas County,Alabama
+ELB,America/Bogota,San Bernado,ELB,CO,POINT (-73.97417 9.048889),101,,SKBC,El Banco,,Magdalena
+ELC,Australia/Darwin,Elcho Island Airport,ELC,AU,POINT (135.57417279048445 -12.01921715),108,,YELD,,,
+ELD,America/Chicago,South Arkansas Regional Airport,ELD,US,POINT (-92.81207560268578 33.21626425),236,,KELD,El Dorado,Union County,Arkansas
+ELG,Africa/Algiers,El Golea Airport,ELG,DZ,POINT (2.864480363011605 30.58654715),1328,,DAUE,Metlili Chaamba,,Ghardaia
+ELJ,America/Bogota,El Recreo,ELJ,CO,POINT (-73.833336 2),905,,"",La Macarena,,Meta
+ELK,America/Chicago,Municipal,ELK,US,POINT (-99.416664 35.416668),1981,http://www.elkcityairport.com/default.htm,KELK,Elk City,Beckham County,Oklahoma
+ELL,Africa/Johannesburg,Ellisras,ELL,ZA,POINT (27.683332 -23.716667),2746,,FAER,Lephalale,Waterberg District Municipality,Limpopo
+ELN,America/Los_Angeles,Bowers Field,ELN,US,POINT (-120.566666 46.983334),1479,http://www.wsdot.wa.gov/aviation/AllStateAirports/Ellensburg_BowersField.htm,KELN,Ellensburg,Kittitas County,Washington
+ELO,America/Argentina/Cordoba,Eldorado,ELO,AR,POINT (-54.733334 -26.5),511,,SATD,Puerto Piray,,Misiones
+ELP,America/Denver,El Paso International Airport,ELP,US,POINT (-106.36664263248113 31.8092748),3963,,KELP,Fort Bliss,El Paso County,Texas
+ELQ,Asia/Riyadh,Prince Nayef bin Abdulaziz Regional Airport,ELQ,SA,POINT (43.768177 26.305029),2145,,OEGS,Al Bukayriyah,,Al-Qassim
+ELS,Africa/Johannesburg,East London Airport,ELS,ZA,POINT (27.822560571881656 -33.0360848),374,http://www.airports.co.za/home.asp?pid=415,FAEL,East London,Buffalo City Metropolitan Municipality,Eastern Cape
+CNT,America/Argentina/Cordoba,Charata,CNT,AR,POINT (-61.2103 -27.2164),298,,"",Charata,,Chaco
+SEP,America/Chicago,Clark Field,SEP,US,POINT (-98.2 32.216667),1256,http://www.stephenvilletx.gov/city-services/airport/airport-stephenville-aviation/,KSEP,Stephenville,Erath County,Texas
+SEQ,Asia/Jakarta,Sungai Pakning,SEQ,ID,POINT (114.066666 -0.8),249,,WIBS,Buntok,,Central Kalimantan
+SER,America/Indiana/Indianapolis,Freeman Municipalcipal,SER,US,POINT (-85.88333 38.966667),626,http://seymourcity.com/departments/aviation/,KSER,Seymour,Jackson County,Indiana
+SES,America/Chicago,Selfield,SES,US,POINT (-87.08722 32.726112),291,,,Centreville,Bibb County,Alabama
+LMX,America/Bogota,Lopez De Micay,LMX,CO,POINT (-77.55 3.05),0,,,,,
+SET,America/Tegucigalpa,San Esteban,SET,HN,POINT (-85.86667 15.316667),2910,,,San Esteban,,Olancho
+SEU,Africa/Dar_es_Salaam,Seronera Airstrip,SEU,TZ,POINT (34.816666 -2.383333),4730,,HTSN,Mugumu,,Mara
+SEO,Africa/Abidjan,Seguela,SEO,CI,POINT (-6.643595778852452 7.963739500000001),1040,,DISG,Seguela,,Worodougou
+SEW,Africa/Cairo,Siwa,SEW,EG,POINT (25.516666 29.183332),-36,,HE24,Siwa Oasis,,Muhafazat Matruh
+SEY,Africa/Nouakchott,Selibaby,SEY,MR,POINT (-12.192478 15.1690919),177,,GQNS,Selibabi,,Guidimaka
+SFA,Africa/Tunis,Sfax El Maou Airport,SFA,TN,POINT (10.683333 34.716667),68,,DTTX,Sfax,,Safaqis
+SFC,America/Guadeloupe,St Francois,SFC,GP,POINT (-61.283333 16.25),49,,TFFC,Saint-Francois,Guadeloupe,Guadeloupe
+SFZ,America/New_York,North Central,SFZ,US,POINT (-71.566666 41.916668),416,,KSFZ,Smithfield,Providence County,Rhode Island
+SGA,Asia/Kabul,Sheghnan,SGA,AF,POINT (71.71667 38.033333),12303,,OASN,Rushon,,Gorno-Badakhshan
+SGD,Europe/Copenhagen,Sonderborg Airport,SGD,DK,POINT (9.792646648299392 54.9625495),26,,EKSB,Sonderborg,Sonderborg Kommune,South Denmark
+SGE,Europe/Berlin,Siegerland Airport,SGE,DE,POINT (8 50.85),810,,EDGS,Siegen,Regierungsbezirk Arnsberg,North Rhine-Westphalia
+SGV,America/Argentina/Salta,Sierra Grande,SGV,AR,POINT (-65.33930185138708 -41.5883936),715,,SAVS,Sierra Grande,,Rio Negro
+SGH,America/New_York,Springfield,SGH,US,POINT (-83.8 39.916668),1013,http://www.airparkohio.com/beckly_airport.html,KSGH,Springfield,Clark County,Ohio
+SGI,Asia/Karachi,Sargodha Airport,SGI,PK,POINT (72.666664 32.166668),606,,OPSR,Sargodha,,Punjab
+SGL,Asia/Manila,Sangley Point NAS,MNL,PH,POINT (120.95 14.6),19,,RPLS,Port Area,City of Manila,Metro Manila
+EGA,Pacific/Port_Moresby,Engati,EGA,PG,POINT (146.10562831870763 -6.917968050000001),3677,,AYEN,,,
+ELT,Africa/Cairo,Tour Sinai City,ELT,EG,POINT (33.651188381515865 28.20850445),75,,HETR,Tor,,South Sinai
+ELU,Africa/Algiers,Guemar Airport,ELU,DZ,POINT (6.783513936983928 33.511920399999994),183,,DAUO,Reguiba,,El Oued
+ELX,America/Caracas,El Tigre,ELX,VE,POINT (-64.26667 8.883333),1017,,"",El Tigre,,Anzoategui
+ELY,America/Los_Angeles,Yelland,ELY,US,POINT (-114.84194 39.301945),6236,,KELY,Ely,White Pine County,Nevada
+ELZ,America/New_York,Municipal,ELZ,US,POINT (-77.95 42.11667),1509,,KELZ,Wellsville,Allegany County,New York
+EMA,Europe/London,East Midlands Airport,NQT,GB,POINT (-1.3409974 52.832787),259,http://www.eastmidlandsairport.com/,EGNX,Castle Donington,Leicestershire,England
+EMD,Australia/Brisbane,Emerald Airport,EMD,AU,POINT (148.17632214869155 -23.5694249),616,http://www.emerald.qld.gov.au/Council/Departments/Engineering_Operations/Engineering_Operations.htm,YEML,Emerald,Central Highlands,Queensland
+EME,Europe/Berlin,Emden,EME,DE,POINT (7.2276361 53.3901805),29,,EDWE,Emden,,Lower Saxony
+EML,Europe/Zurich,Emmen,EML,CH,POINT (8.305648451412686 47.093087499999996),1348,https://saf.hermannkeist.ch/emmen.html,LSME,Emmen,Hochdorf District,Lucerne
+EMM,America/Denver,Kemerer,EMM,US,POINT (-110.55 41.783333),6994,,KEMM,Kemmerer,Lincoln County,Wyoming
+EMP,America/Chicago,Emporia,EMP,US,POINT (-96.19042974069536 38.3294305),1194,http://visitors.emporia-kansas.gov/index.php/emporia-municipal-airport,KEMP,Emporia,Lyon County,Kansas
+EMT,America/Los_Angeles,El Monte,EMT,US,POINT (-118.03333 34.083332),275,http://www.americanairports.com/Locations/EMTElMonteAirportCA.aspx,KEMT,El Monte,Los Angeles County,California
+EMX,America/Argentina/Catamarca,El Maiten,EMX,AR,POINT (-71.1685403 -42.028869),2316,,SAVD,El Maiten,,Chubut
+EMY,Africa/Cairo,El Minya,EMY,EG,POINT (30.731230123472542 28.100697150000002),82,,HEMN,Al Minya,,Al Minya
+ENA,America/Anchorage,Kenai Municipal Airport,ENA,US,POINT (-151.2472795 60.5706167),78,,PAEN,Kenai,Kenai Peninsula Borough,Alaska
+ENB,Australia/Perth,Eneabba West,ENB,AU,POINT (114.98333 -30.083332),0,,YEEB,,,
+ENC,Europe/Paris,Essey,ETZ,FR,POINT (6.229408542157108 48.692566049999996),666,,LFSN,Essey-les-Nancy,Departement de Meurthe-et-Moselle,Lorraine
+ENE,Asia/Makassar,H. Hasan Aroeboesman Airport,ENE,ID,POINT (121.6617986928928 -8.848919599999999),13,,WATE,Onekore,,East Nusa Tenggara
+ENF,Europe/Helsinki,Enontekio,ENF,FI,POINT (23.4258445 68.3595872),964,http://www.finavia.fi/en/enontekio/,EFET,Enontekioe,Tunturi-Lappi,Lapland
+ENH,Asia/Shanghai,Enshi Airport,ENH,CN,POINT (109.484107289115 30.321236499999998),1617,,ZHES,Enshi,,Hubei
+ENI,Asia/Manila,El Nido,ENI,PH,POINT (119.41738594414568 11.2015392),26,,RPEN,El Nido,Province of Palawan,Mimaropa
+ENL,America/Chicago,Municipal,ENL,US,POINT (-89.13333 38.516666),511,,KENL,Centralia,Marion County,Illinois
+ENO,America/Asuncion,Teniente Prim Alarcon,ENO,PY,POINT (-55.833332 -27.25),449,,SGEN,Capitan Miranda,,Itapua
+ENQ,America/Tegucigalpa,Coronel E Soto Cano AB,ENQ,HN,POINT (-87.617226 14.369167),2030,,,Yarumela,,La Paz
+ENU,Africa/Lagos,Enugu Airport,ENU,NG,POINT (7.55671795401768 6.471979599999999),469,http://www.faannigeria.org/nigeria-airport.php?airport=11,DNEN,Enugu,,Enugu
+ENV,America/Denver,Wendover,ENV,US,POINT (-114.02685346878005 40.7181504),4209,,KENV,Wendover,Tooele County,Utah
+ENY,Asia/Shanghai,Ershilipu Airport,ENY,CN,POINT (109.54961700070281 36.63495905),3123,,ZLYA,Bao'an,,Shaanxi
+ELW,America/Anchorage,Ellamar,ELW,US,POINT (-146.23334 60.9),1525,,"",,,
+PMN,Pacific/Port_Moresby,Pumani,PMN,PG,POINT (149.4 -9.716667),1325,,AYPQ,,,
+SGM,America/Mazatlan,San Ignacio,SGM,MX,POINT (-113 27.45),2178,,"",El Silencio,Mulege,Baja California Sur
+EMS,Pacific/Port_Moresby,Embessa,EMS,PG,POINT (148.86667 -9.45),157,,AYEB,,,
+SIM,Pacific/Port_Moresby,Simbai,SIM,PG,POINT (144.54444343387604 -5.2784417999999995),5787,,AYSJ,Rauna,,Western Highlands
+SGR,America/Chicago,Sugar Land Regional,SGR,US,POINT (-95.407776 29.698889),52,http://www.sugarlandtx.gov/index.aspx?nid=1073,KSGR,Southside Place,Harris County,Texas
+SGS,Asia/Manila,Sanga Sanga,SGS,PH,POINT (121.15 5.233333),0,,,Latung,Province of Sulu,Autonomous Region in Muslim Mindanao
+SGT,America/Chicago,Stuttgart Municipalcipal,SGT,US,POINT (-91.53333 34.5),187,http://www.stuttgartarkansas.org/work/stuttgart_municipal_airport.aspx,KSGT,Stuttgart,Arkansas County,Arkansas
+SGU,America/Denver,Saint George Municipal Airport,SGU,US,POINT (-113.51017 37.032627),2834,http://www.sgcity.org/departments/publicworks/airport/,KSGU,Washington,Washington County,Utah
+SHS,Asia/Shanghai,Shashi,SHS,CN,POINT (112.23333 30.316668),144,,ZHSS,Shashi,,Hubei
+SHT,Australia/Melbourne,Shepparton,SHT,AU,POINT (145.43333 -36.38333),334,,YSHT,Shepparton,Greater Shepparton,Victoria
+SHZ,Africa/Maseru,Seshutes,SHZ,LS,POINT (28 -29.166668),5800,,FXSS,Teyateyaneng,,Berea
+SIB,Africa/Brazzaville,Sibiti,SIB,CG,POINT (13.4 -3.733333),1673,,FCBS,Sibiti,,Lekoumou
+SIC,America/Panama,Sinop Airport,SIC,PA,POINT (35.06889 42.0175),52,,"",Sinop,,Sinop
+SIE,Europe/Lisbon,Sines,SIE,PT,POINT (-8.85 37.933334),0,,LPSI,Sines,Sines,Setubal
+YGL,America/Montreal,La Grande Airport,YGL,CA,POINT (-77.70639 53.629723),639,,CYGL,,,
+KNE,Pacific/Port_Moresby,Kanainj,KNE,PG,POINT (144.709290875 -5.288931),4064,,AYKJ,,,
+ENW,America/Chicago,Kenosha Regional Airport,ENW,US,POINT (-87.816666 42.583332),583,http://www.kenosha.org/departments/airport/,KENW,Kenosha,Kenosha County,Wisconsin
+EOH,America/Bogota,Enrique Olaya Herrera Airport,MDE,CO,POINT (-75.5864 6.218666),4891,,SKMD,Itagui,,Antioquia
+EOK,America/Chicago,Keokuk,EOK,US,POINT (-91.42688362865425 40.459676),643,http://www.cityofkeokuk.org/airport.html,KEOK,Keokuk,Lee County,Iowa
+EOZ,America/Caracas,Elorza,EOZ,VE,POINT (-69.53333 7.166667),278,,SVEZ,Elorza,Municipio Romulo Gallegos,Apure
+EPA,America/Argentina/Buenos_Aires,El Palomar,EPA,AR,POINT (-58.60976216632794 -34.6150101),95,,SADP,Hurlingham,,Buenos Aires
+YHO,America/Goose_Bay,Hopedale,YHO,CA,POINT (-60.23073681783596 55.4487663),39,,CYHO,,,
+EPG,America/Chicago,Browns,EPG,US,POINT (-96.13333 40.86667),1204,,NE69,Weeping Water,Cass County,Nebraska
+EPH,America/Los_Angeles,Ephrata,EPH,US,POINT (-119.51545 47.3063398),1230,http://www.portofephrata.com/index.htmlA,KEPH,Ephrata,Grant County,Washington
+EPL,Europe/Paris,Mirecourt,EPL,FR,POINT (6.068698232464362 48.3218532),1026,http://www.epinal-mirecourt.aeroport.fr,LFSG,Mirecourt,Departement des Vosges,Lorraine
+EPR,Australia/Perth,Esperance Airport,EPR,AU,POINT (121.82450125089962 -33.684036500000005),406,,YESP,Nulsen,Esperance Shire,Western Australia
+EPS,America/Santo_Domingo,Arroyo Barril International,EPS,DO,POINT (-69.5 19.25),974,,MDPO,Las Terrenas,,Samana
+EPU,Europe/Tallinn,Parnu,EPU,EE,POINT (24.470041647645797 58.41979255),45,,EEPU,Sauga,Sauga vald,Paernumaa
+EQS,America/Argentina/Catamarca,Esquel Airport,EQS,AR,POINT (-71.13444374688999 -42.90427405),2565,,SAVE,Esquel,Departamento de Futaleufu,Chubut
+ERA,Africa/Mogadishu,Erigavo,ERA,SO,POINT (47.3879814 10.6420505),5902,,HCMU,Ceerigaabo,,Sanaag
+ERB,Australia/Adelaide,Ernabella,ERB,AU,POINT (132.11667 -26.283333),2306,,YERN,,,
+ERC,Europe/Istanbul,Erzincan Airport,ERC,TR,POINT (39.519823771045495 39.7114734),3713,,LTCD,Erzincan,,Erzincan
+ERD,Europe/Zaporozhye,Berdyansk,ERD,UA,POINT (36.783333 46.733334),0,,UKDB,Berdyans'k,,Zaporizhia
+ERF,Europe/Berlin,Erfurt Airport,ERF,DE,POINT (10.95864662008392 50.9792725),984,http://www.airport-erfurt.de/,EDDE,Ingersleben,,Thuringia
+ERG,Asia/Irkutsk,Erbogachen Airport,ERG,RU,POINT (108.02800759789876 61.2758297),915,,UIKE,Yerbogachen,,Irkutsk
+ERM,America/Sao_Paulo,Comandante Kraemer,ERM,BR,POINT (-52.275555 -27.641666),2486,,SSER,Erechim,Erechim,Rio Grande do Sul
+ERN,America/Eirunepe,Eirunepe,ERN,BR,POINT (-69.88333 -6.583333),416,,SWEI,Eirunepe,Eirunepe,Amazonas
+ERQ,Australia/Brisbane,Elrose Mine,ERQ,AU,POINT (141.0086 -20.976667),583,,YESE,,,
+ERR,America/New_York,Errol,ERR,US,POINT (-71.16424469007605 44.7925657),1230,http://www.nh.gov/dot/org/aerorailtransit/aeronautics/sasp/airports/errol.htm,KERR,Milan,Coos County,New Hampshire
+ERS,Africa/Windhoek,Eros Airport,WDH,NA,POINT (17.083332 -22.616667),5567,,FYWE,,,
+ERT,Asia/Ulaanbaatar,Erdenet,ERT,MN,POINT (104.15 49.066666),4022,,"",Erdenet,,Orhon
+FEZ,Africa/Casablanca,Fes-Saiss Airport,FEZ,MA,POINT (-4.979095413023916 33.929115949999996),1883,,GMFF,Oulad Tayeb,Fes,Fes-Boulemane
+FIG,Africa/Conakry,Fria,FIG,GN,POINT (-13.5691599 10.3515213),547,,GUFA,Fria,Fria,Boke
+FIH,Africa/Kinshasa,N'djili Airport,FIH,CD,POINT (15.447338 -4.389588),1010,,FZAA,Masina,,Kinshasa
+FPR,America/New_York,St Lucie County,FPR,US,POINT (-80.333336 27.45),45,,KFPR,Fort Pierce,Saint Lucie County,Florida
+FPY,America/New_York,Perry-Foley,FPY,US,POINT (-83.583336 30.116667),36,http://taylorcountygov.com/airport/index.htm,KFPY,Perry,Taylor County,Florida
+GUR,Pacific/Port_Moresby,Gurney Airport,GUR,PG,POINT (150.33596193255727 -10.3106417),45,,AYGN,,,
+LPN,Pacific/Port_Moresby,Leron Plains,LPN,PG,POINT (146.45 -6.58),311,,AYLP,,,
+PEP,Australia/Darwin,Peppimenarti,PEP,AU,POINT (130.0910034 -14.1442003),55,,"",,,
+SIG,America/Puerto_Rico,Isla Grande,SJU,PR,POINT (-66.102776 18.458889),39,,TJIG,San Juan,,San Juan
+SIH,Asia/Kathmandu,Silgadi Doti,SIH,NP,POINT (80.975 29.266666),3444,,VNDT,Dipayal,,Far Western
+SIK,America/Chicago,Memorial,SIK,US,POINT (-89.55 36.86667),278,,KSIK,Sikeston,Scott County,Missouri
+KCQ,America/Anchorage,Chignik,KCL,US,POINT (-158.77777 56.261112),50,,A79,,,
+CKD,America/Anchorage,Crooked Creek,CKD,US,POINT (-158.1319634 61.8670574),134,,CJX,,,
+ERV,America/Chicago,Kerrville,ERV,US,POINT (-99.13333 30.05),1692,http://www.co.kerr.tx.us/airport/,KERV,Kerrville,Kerr County,Texas
+SIN,Asia/Singapore,Changi International Airport,SIN,SG,POINT (103.990204 1.361173),78,http://www.changiairport.com/,WSSS,Singapore,,
+SHA,Asia/Shanghai,Shanghai Hongqiao International Airport,SHA,CN,POINT (121.33448312534463 31.19767765),32,,ZSSS,Jiangqiao,,Shanghai Shi
+SIQ,Asia/Jakarta,Dabo,SIQ,ID,POINT (104.416664 -0.5),134,,WIDS,Dabo,,Riau Islands
+SIR,Europe/Zurich,Sion,SIR,CH,POINT (7.333333 46.25),2926,http://www.sionairport.ch,LSGS,Saviese,Sion District,Valais
+SIS,Africa/Johannesburg,Sishen Airport,SIS,ZA,POINT (22.983334 -27.916668),4025,,FASS,Kathu,John Taolo Gaetsewe District Municipality,Northern Cape
+SHB,Asia/Tokyo,Nakashibetsu Airport,SHB,JP,POINT (144.95758585625597 43.576615000000004),193,,RJCN,Shibetsu,,Hokkaido
+WAJ,Pacific/Port_Moresby,Wawoi Falls,WAJ,PG,POINT (143.26666 -7.8),0,,AYWF,,,
+SIV,America/Indiana/Indianapolis,County,SIV,US,POINT (-87.4 39.1),547,http://www.co.sullivan.ny.us/Departments/SullivanCountyAirport/tabid/3203/default.aspx,KSIV,Sullivan,Sullivan County,Indiana
+SIW,Asia/Jakarta,Sibisa,SIW,ID,POINT (98.93 2.67),2956,,WIMP,Parapat,,North Sumatra
+SIY,America/Los_Angeles,Siskiyou County,SIY,US,POINT (-122.53333 41.733334),2496,,,Montague,Siskiyou County,California
+SHF,Asia/Shanghai,Shihezi Huayuan Airport,SHF,CN,POINT (85.88605684097027 44.24346735),1673,,ZWHZ,Ulan Us,,Xinjiang Uygur Zizhiqu
+SHG,America/Anchorage,Shungnak Airport,SHG,US,POINT (-157.1567626 66.8861127),164,,PAGH,Barrow,North Slope Borough,Alaska
+SHM,Asia/Tokyo,Shirahama Airport,SHM,JP,POINT (135.36280893177445 33.66245835),259,,RJBD,Tanabe,,Wakayama
+ERZ,Europe/Istanbul,Erzurum Airport,ERZ,TR,POINT (41.17155807631481 39.94894825),5764,,LTCE,Ilica,,Erzurum
+SHN,America/Los_Angeles,Sanderson Field,SHN,US,POINT (-123.147374 47.2334272),249,http://www.portofshelton.com/airport.html,KSHN,Shelton,Mason County,Washington
+ESB,Europe/Istanbul,Esenboga International Airport,ANK,TR,POINT (32.99872088625601 40.1230634),3067,,LTAC,Akyurt,,Ankara
+SHV,America/Chicago,Shreveport Regional Airport,SHV,US,POINT (-93.82673715989384 32.4451121),252,,KSHV,Shreveport,Caddo Parish,Louisiana
+ESC,America/Detroit,Delta County Airport,ESC,US,POINT (-87.08899328344751 45.72455915),577,,KESC,Escanaba,Delta County,Michigan
+ESE,America/Santa_Isabel,Ensenada,ESE,MX,POINT (-116.61667 31.866667),32,,MMES,Ensenada,,Baja California
+SHW,Asia/Riyadh,Sharurah Airport,SHW,SA,POINT (47.11938422444458 17.46662415),2378,,OESH,Manwakh,Zamakh wa Manwakh,Muhafazat Hadramawt
+ESF,America/Chicago,Esler Field,AEX,US,POINT (-92.29668575105151 31.398927999999998),98,http://www.alexandria-louisiana.com/esler-field-louisiana.htm,KESF,Ball,Rapides Parish,Louisiana
+SID,Atlantic/Cape_Verde,Amilcar Cabral International Airport,SID,CV,POINT (-22.951125574679647 16.73879835),213,,GVAC,Espargos,,Sal
+ESI,America/Sao_Paulo,Espinosa,ESI,BR,POINT (-44 -15),1453,,SBEP,Itacarambi,Itacarambi,Minas Gerais
+ESK,Europe/Istanbul,Eskisehir,ESK,TR,POINT (30.582111 39.784138),2568,,LTBI,Eskisehir,,Eskisehir
+ESL,Europe/Moscow,Elista Airport,ESL,RU,POINT (44.337702209910695 46.371955549999996),479,,URWI,Troitskoye,,Kalmykiya
+ESM,America/Guayaquil,Esmeraldas Airport,ESM,EC,POINT (-79.625 0.966667),32,,SETN,Esmeraldas,,Esmeraldas
+ESN,America/New_York,Easton,ESN,US,POINT (-76.06778 38.802776),45,http://eastonairport.com/,KESN,Easton,Talbot County,Maryland
+ESO,America/Denver,Espanola,ESO,US,POINT (-106.03333 36.1),5803,,E14,Ohkay Owingeh,Rio Arriba County,New Mexico
+TEH,America/Anchorage,Tetlin,TEH,US,POINT (-142.5213126 63.1255324),0,,,,,
+ESP,America/New_York,Birchwood-Pocono,ESP,US,POINT (-75.2 40.983334),403,,KN53,Stroudsburg,Monroe County,Pennsylvania
+ESR,America/Santiago,El Salvador,ESR,CL,POINT (-69.76528 -26.315277),5127,,SCES,Diego de Almagro,Provincia de Chanaral,Atacama
+ESS,Europe/Berlin,Essen,ESS,DE,POINT (6.941667 51.40389),423,,EDLE,Muelheim (Ruhr),Regierungsbezirk Dusseldorf,North Rhine-Westphalia
+EST,America/Chicago,Municipal,EST,US,POINT (-94.833336 43.4),1325,,KEST,Estherville,Emmet County,Iowa
+ESU,Africa/Casablanca,Essaouira Airport,ESU,MA,POINT (-9.682784663461774 31.399283599999997),272,,GMMI,Essaouira,Essaouira,Marrakech-Tensift-Al Haouz
+EUF,America/Chicago,Weedon Field,EUF,US,POINT (-85.15 31.9),242,,KEUF,Eufaula,Barbour County,Alabama
+EUG,America/Los_Angeles,Eugene Airport,EUG,US,POINT (-123.21390830141057 44.123068149999995),387,,KEUG,Junction City,Lane County,Oregon
+FRA,Europe/Berlin,Frankfurt Airport,FRA,DE,POINT (8.524938151916214 50.0229437),213,http://www.frankfurt-airport.de/,EDDF,Kelsterbach,,Hesse
+FRB,Australia/Sydney,Forbes,FRB,AU,POINT (148.05 -33.4),754,,YFBS,Forbes,Forbes,New South Wales
+FRC,America/Sao_Paulo,Franca,FRC,BR,POINT (-47.4375 -20.551945),3303,http://www.daesp.sp.gov.br/aeroporto-detalhe/?id=859,SIMK,Franca,Franca,Sao Paulo
+FRE,Pacific/Guadalcanal,Fera Island Airport,FRE,SB,POINT (159.58333 -8.1),36,,AGGF,,,
+PGI,Africa/Luanda,Chitato,PGI,AO,POINT (20.8047009 -7.3588901),2454,,FNCH,,,
+CAV,Africa/Luanda,Cazombo,CAV,AO,POINT (22.866667 -11.9),3664,,FNCZ,,,
+THO,Atlantic/Reykjavik,Thorshofn,THO,IS,POINT (-15.334863039186512 66.21763305),65,,BITN,,,
+SIF,Asia/Kathmandu,Simara,SIF,NP,POINT (84.97998517606916 27.1599),406,,VNSI,Birganj,,Central Region
+SJH,America/Bogota,San Juan Del Cesar,SJH,CO,POINT (-72.9910702 10.7424287),718,,"",San Juan del Cesar,,La Guajira
+THU,America/Thule,Pituffik Airport,THU,GL,POINT (-68.7 76.53333),251,,BGTL,,,
+SJV,America/La_Paz,San Javier,SJV,BO,POINT (-62.416668 -16.233334),1725,,SLJV,Ascension,,Santa Cruz
+SJN,America/Phoenix,St. Johns Industrial Air Park,SJN,US,POINT (-109.37834294269751 34.52054225),5748,,KSJN,Saint Johns,Apache County,Arizona
+SJZ,Atlantic/Azores,Sao Jorge Island Airport,SJZ,PT,POINT (-28.16843 38.664616),321,,LPSJ,Sao Roque do Pico,Sao Roque do Pico,Azores
+SKA,America/Los_Angeles,Fairchild AFB,GEG,US,POINT (-117.4 47.666668),1906,http://www.fairchild.af.mil/,KSKA,Spokane,Spokane County,Washington
+SJQ,Africa/Lusaka,Sesheke,SJQ,ZM,POINT (24.299893005381275 -17.47731485),3083,,FLSS,Sesheke,,Western
+SKC,Pacific/Port_Moresby,Suki,SKC,PG,POINT (141.8 -8.083333),72,,AYSU,Morehead,,Western Province
+SKH,Asia/Kathmandu,Surkhet,SKH,NP,POINT (82.50833 28.333332),6181,,VNSK,Besisahar,,
+SKI,Africa/Algiers,Skikda,SKI,DZ,POINT (6.966667 36.833332),387,,DABP,Skikda,,Skikda
+SKL,Europe/London,Broadford,SKL,GB,POINT (-6.25 57.333332),833,,,Isle of Skye,Highland,Scotland
+SKO,Africa/Lagos,Sokoto,SKO,NG,POINT (5.242222 13.006389),967,http://www.faannigeria.org/nigeria-airport.php?airport=13,DNSO,Sokoto,,Sokoto
+SKP,Europe/Skopje,Skopje Alexander the Great Airport,SKP,MK,POINT (21.62872 41.95649),790,http://skp.airports.com.mk/,LWSK,Petrovec,,Petrovec
+SKQ,Africa/Maseru,Sekakes,SKQ,LS,POINT (28.166668 -29.65),5967,,FXSK,Nako,,Maseru
+ESW,America/Los_Angeles,State,ESW,US,POINT (-121.183334 47.233334),2385,http://www.wsdot.wa.gov/Public/Templates/Standard/DefaultTemplate.aspx?NRMODE=Published&NRNODEGUID=%7B3B856445-96DD-44E1-ABCE-2F,KESW,Cle Elum,Kittitas County,Washington
+ETB,America/Chicago,West Bend,ETB,US,POINT (-88.12967944787047 43.4203387),869,http://www.ci.west-bend.wi.us/Airport/,KETB,West Bend,Washington County,Wisconsin
+ETD,Australia/Adelaide,Etadunna,ETD,AU,POINT (138 -27.5),3,,YEDA,,,
+ETE,Africa/Addis_Ababa,Genda Wuha,ETE,ET,POINT (36.1669998 12.9329996),2450,,HAMM,Doka,,Al Qadarif
+ETL,Asia/Vladivostok,Svetlaya Airport,ETL,RU,POINT (138.32973 46.54217),22,,UHTQ,Svetlaya,,Primorskiy
+ETN,America/Chicago,Municipal,ETN,US,POINT (-98.833336 32.38333),1469,,KETN,Eastland,Eastland County,Texas
+ETR,America/Guayaquil,Coronel Artilleria Victor Larrea Airport,ETR,EC,POINT (-79.99629303403673 -3.4422879999999996),36,,SERO,Santa Rosa,,El Oro
+ETS,America/Chicago,Municipal,ETS,US,POINT (-85.85 31.316668),351,,KEDN,Enterprise,Coffee County,Alabama
+ETZ,Europe/Paris,Metz-Nancy-Lorraine Airport,ETZ,FR,POINT (6.243003 48.98165),810,,LFJL,Verny,Departement de la Moselle,Lorraine
+SKR,Africa/Addis_Ababa,Shakiso,SKR,ET,POINT (38.966667 5.883333),5577,,HASK,Kibre Mengist,,Oromiya
+SKT,Asia/Karachi,Sialkot Airport,SKT,PK,POINT (74.5 32.533333),780,,OPST,Sialkot,,Punjab
+SKU,Europe/Athens,Skiros Airport,SKU,GR,POINT (24.566668 38.916668),29,,LGSY,Skyros,Nomos Evvoias,Central Greece
+SKV,Africa/Cairo,Mount Sinai,SKV,EG,POINT (33.95 28.5),7683,,HESC,Saint Catherine,,South Sinai
+SKX,Europe/Moscow,Saransk Airport,SKX,RU,POINT (45.166668 54.166668),492,,UWPS,Saransk,,Mordoviya
+SLV,Asia/Kolkata,Simla,SLV,IN,POINT (77.15 31.116667),5610,,VISM,Shimla,Shimla,Himachal Pradesh
+TKD,Africa/Accra,Takoradi Airport,TKD,GH,POINT (-1.7740750697405612 4.8966362),21,,DGTK,,,
+EUC,Australia/Eucla,Eucla,EUC,AU,POINT (128.8778591 -31.7068251),26,,YECL,,,
+EUM,Europe/Berlin,Neumuenster,EUM,DE,POINT (9.966667 54.066666),45,,EDHN,Neumunster,,Schleswig-Holstein
+EUN,Africa/Casablanca,Hassan I Airport,EUN,MA,POINT (-13.222369376759582 27.1406223),246,,GMML,Laayoune / El Aaiun,,Oued Ed-Dahab-Lagouira
+EUO,America/Bogota,Paratebueno,EUO,CO,POINT (-73.2 4.383333),820,,"",Paratebueno,,Cundinamarca
+EUQ,Asia/Manila,Evelio Javier,EUQ,PH,POINT (121.93250316239744 10.766609549999998),26,,RPVS,San Pedro,Province of Antique,Western Visayas
+EUX,America/Kralendijk,F D Roosevelt Airport,EUX,NL,POINT (-62.97907065409406 17.496818849999997),137,,TNCE,Oranjestad,,Sint Eustatius
+EVA,America/Chicago,Landing Strip,EVA,US,POINT (-94.066666 30.35),75,,"4TE8",Evadale,Jasper County,Texas
+EVD,Australia/Darwin,Eva Downs,EVD,AU,POINT (134.8630066 -18.0009995),685,,YEVA,,,
+EVE,Europe/Oslo,Harstad/Narvik Airport Evenes,EVE,NO,POINT (16.69630495853246 68.49033025),111,https://avinor.no/en/airport/harstadnarvik-airport/,ENEV,Evenskjer,Skanland,Troms
+EVG,Europe/Stockholm,Sveg Airport,EVG,SE,POINT (14.421909903501437 62.04774175),1141,,ESND,Sveg,Harjedalens Kommun,Jaemtland
+EZV,Asia/Yekaterinburg,Berezovo,EZV,RU,POINT (65.03761633944282 63.922656950000004),111,,USHB,Berezovo,,Khanty-Mansiyskiy Avtonomnyy Okrug
+FRG,America/New_York,Republic Field,FRG,US,POINT (-73.416664 40.733334),62,http://www.republicairport.net/,KFRG,East Farmingdale,Suffolk County,New York
+FRH,America/Indiana/Indianapolis,Municipal,FRH,US,POINT (-86.61667 38.55),469,,KFRH,French Lick,Orange County,Indiana
+FRI,America/Chicago,Marshall AAF,FRI,US,POINT (-96.78333 39.083332),1210,,KFRI,Fort Riley North,Riley County,Kansas
+FRL,Europe/Rome,Luigi Ridolfi,FRL,IT,POINT (12.067528607688963 44.195467199999996),68,,LIPK,Forli,Forli-Cesena,Emilia-Romagna
+DYM,Australia/Brisbane,Diamantina Lakes,DYM,AU,POINT (139.16667 -26.75),68,,"",,,
+SLW,America/Monterrey,Plan de Guadalupe International Airport,SLW,MX,POINT (-100.93094739181647 25.5387871),4698,,MMIO,Ramos Arizpe,Ramos Arizpe,Coahuila
+SMO,America/Los_Angeles,Santa Monica,SMO,US,POINT (-118.45060361170552 34.01659745),134,http://www.smgov.net/departments/airport/,KSMO,Santa Monica,Los Angeles County,California
+SMA,Atlantic/Azores,Vila Do Porto Airport,SMA,PT,POINT (-25.1 36.966667),679,,LPAZ,Vila Franca do Campo,Vila Franca do Campo,Azores
+SMB,America/Santiago,Cerro Sombrero,SMB,CL,POINT (-69.34278 -52.738335),85,,SCSB,Rio Gallegos,,Santa Cruz
+SMD,America/Indiana/Indianapolis,Smith Field,FWA,US,POINT (-85.15 41.066666),784,https://fwairport.com/smith-field/,KSMD,Fort Wayne,Allen County,Indiana
+SME,America/New_York,Pulaski County,SME,US,POINT (-84.6 37.083332),931,,KSME,Somerset,Pulaski County,Kentucky
+SMG,America/Lima,Santa Maria,SMG,PE,POINT (-72 -12.5),7598,,SPMR,Quebrada Honda,Provincia de Calca,Cusco
+TKB,Pacific/Port_Moresby,Tekadu,TKB,PG,POINT (146.5503408810951 -7.68129255),1310,,AYTZ,,,
+BIZ,Pacific/Port_Moresby,Bimin,BIZ,PG,POINT (142.01409459396484 -5.2893777),6522,,"",,,
+SML,America/Nassau,Estate Airstrip,SML,BS,POINT (-75.26806 23.583332),29,,MYLS,Port Nelson,,Rum Cay
+SMM,Asia/Kuching,Semporna,SMM,MY,POINT (118.833336 4.416667),0,,WBKA,Semporna,,Sabah
+SMN,America/Boise,Salmon,SMN,US,POINT (-113.916664 45.183334),4192,http://lemhicountyairport.com/,KSMN,Salmon,Lemhi County,Idaho
+SMQ,Asia/Pontianak,H. Asan Airport,SMQ,ID,POINT (113.05 -3.083333),0,,WAGS,Semuda,,Central Kalimantan
+SMR,America/Bogota,Simon Bolivar International Airport,SMR,CO,POINT (-74.232704 11.117132),39,,SKSM,Cienaga,,Magdalena
+SMT,Asia/Taipei,Sun Moon Lake,SMT,TW,POINT (120.933334 23.883333),2355,,SBSO,Puli,Nantou,Taiwan
+SNO,Asia/Bangkok,Sakon Nakhon Airport,SNO,TH,POINT (104.1 17.283333),570,,VTUI,Sakon Nakhon,,Sakon Nakhon
+EVH,Australia/Sydney,Evans Head,EVH,AU,POINT (153.4204875 -29.1014886),22,,YEVD,Evans Head,Richmond Valley,New South Wales
+EVM,America/Chicago,Eveleth,EVM,US,POINT (-92.5060179 47.4281731),1387,,KEVM,Eveleth,Saint Louis County,Minnesota
+EVN,Asia/Yerevan,Zvartnots International Airport,EVN,AM,POINT (44.4018985198437 40.1493974),2805,http://www.aia-zvartnots.aero/,UDYZ,Arbat',,Armavir
+EVV,America/Chicago,Evansville Regional Airport,EVV,US,POINT (-87.5296839642167 38.04188775),377,,KEVV,Melody Hill,Vanderburgh County,Indiana
+EVW,America/Denver,Evanston,EVW,US,POINT (-110.96667 41.266666),6765,,KEVW,Evanston,Uinta County,Wyoming
+TKI,America/Anchorage,Tokeen,TKI,US,POINT (-133.3261834 55.9369008),0,,"57A",,,
+EVX,Europe/Paris,Evreux,EVX,FR,POINT (1.15 49.016666),393,,LFOE,Evreux,Departement de l'Eure,Haute-Normandie
+EWB,America/New_York,New Bedford Airport,EWB,US,POINT (-70.95929008264703 41.6765725),62,,KEWB,New Bedford,Bristol County,Massachusetts
+EWI,Asia/Jayapura,Enarotali,EWI,ID,POINT (136.33333 -3.966667),6679,,WABT,Enarotali,,Papua
+EWK,America/Chicago,City-County,EWK,US,POINT (-97.36667 38.033333),1456,http://www.newtonkansas.com/index.aspx?page=40,KEWK,Newton,Harvey County,Kansas
+EWN,America/New_York,Coastal Carolina Regional Airport,EWN,US,POINT (-77.039500540912 35.070979949999995),29,,KEWN,James City,Craven County,North Carolina
+EXM,Australia/Perth,Exmouth Gulf,EXM,AU,POINT (114.25 -22.25),0,,YEXM,,,
+EYK,Asia/Yekaterinburg,Beloyarsky Airport,EYK,RU,POINT (66.70121 63.696682),59,,USHQ,Beloyarskiy,,Khanty-Mansiyskiy Avtonomnyy Okrug
+FCS,America/Denver,Butts AAF,COS,US,POINT (-104.816666 38.833332),6030,,KFCS,Colorado Springs,El Paso County,Colorado
+FRN,America/Anchorage,Bryant AAF,FRN,US,POINT (-149.68333 61.25),278,,PAFR,Elmendorf Air Force Base,Anchorage Municipality,Alaska
+FRO,Europe/Oslo,Flora Airport,FRO,NO,POINT (5.024577 61.58643),29,https://avinor.no/en/airport/floro-airport/,ENFL,Floro,Flora,Sogn og Fjordane
+FSP,America/Miquelon,Saint Pierre Airport,FSP,PM,POINT (-56.166668 46.916668),0,,LFVP,Saint-Pierre,,Saint-Pierre
+FSS,Europe/London,Kinloss,FSS,GB,POINT (-3.566667 57.65),36,,EGQK,Kinloss,Moray,Scotland
+FST,America/Chicago,Pecos County,FST,US,POINT (-102.87889 30.893888),2969,,KFST,Fort Stockton,Pecos County,Texas
+FSU,America/Denver,Fort Sumner,FSU,US,POINT (-104.2163436 34.4876919),4124,,KFSU,Fort Sumner,De Baca County,New Mexico
+FWM,Europe/London,Heliport,FWM,GB,POINT (-5.116667 56.816666),0,,,Fort William,Highland,Scotland
+FXE,America/New_York,Fort Lauderdale Executive Airport,FLL,US,POINT (-80.15 26.066668),22,http://www.fortlauderdale.gov/fxE/index.htm,KFXE,Dania Beach,Broward County,Florida
+FXY,America/Chicago,Municipal,FXY,US,POINT (-93.65 43.266666),1276,http://www.cityofforestcity.com/departments/airport.asp,KFXY,Forest City,Winnebago County,Iowa
+FYM,America/Chicago,Municipal,FYM,US,POINT (-86.566666 35.15),669,http://www.fayettevillemunicipalairport.com/,KFYM,Fayetteville,Lincoln County,Tennessee
+FZO,Europe/London,Filton,FZO,GB,POINT (-2.583333 51.516666),242,http://www.bristolfilton.co.uk/,EGTG,Almondsbury,South Gloucestershire,England
+GAK,America/Anchorage,Gakona,GAK,US,POINT (-145.31667 62.333332),1758,,,,,
+GAQ,Africa/Bamako,Gao,GAQ,ML,POINT (-0.001389 16.248611),833,,GAGO,Gao,,Gao
+GAT,Europe/Paris,Tallard,GAT,FR,POINT (6.083333 44.55),2969,,LFNA,Gap,Departement des Hautes-Alpes,Provence-Alpes-Cote d'Azur
+GAU,Asia/Kolkata,Lokpriya Gopinath Bordoloi International Airport,GAU,IN,POINT (91.58297415485129 26.111372250000002),134,http://aai.aero/guwahati/index.jsp,VEGT,Palasbari,Kamrup,Assam
+GBM,Africa/Mogadishu,Garbaharey,GBM,SO,POINT (42.2127663 3.3226676),715,,"",Garbahaarrey,,Gedo
+GBT,Asia/Tehran,Gorgon Airport,GBT,IR,POINT (54.410515 36.90851),-13,,OING,Gorgan,,Golestan
+EBO,Pacific/Majuro,Ebon Airport,EBO,MH,POINT (168.7530556 4.5988889),26,,"",Ebon,,Ebon Atoll
+SNW,Asia/Rangoon,Thandwe Airport,SNW,MM,POINT (94.30248266206729 18.46793215),29,,VYTD,Pyay,,Bago
+EYR,America/Los_Angeles,Yerington,EYR,US,POINT (-119.25 39),5721,http://www.yerington.net/index.aspx?nid=86,O43,Yerington,Lyon County,Nevada
+ACC,Africa/Accra,Kotoka International Airport,ACC,GH,POINT (-0.167967625794569 5.60428935),196,,DGAA,Accra,,Greater Accra
+SNQ,America/Santa_Isabel,San Quintin,SNQ,MX,POINT (-116 30.5),22,,"",Pueblo Benito Garcia,Ensenada,Baja California
+CBP,Europe/Lisbon,Coimbra,CBP,PT,POINT (-8.416667 40.2),177,,,Coimbra,Coimbra,Coimbra
+SNR,Europe/Paris,Montoir Airport,SNR,FR,POINT (-2.182222 47.29111),29,,LFRZ,Saint-Nazaire,Departement de la Loire-Atlantique,Pays de la Loire
+SNT,America/Bogota,Sabana De Torres,SNT,CO,POINT (-73 7.666667),9734,,"",Cachira,,Norte de Santander
+SNU,America/Havana,Santa Clara Airport,SNU,CU,POINT (-79.94194 22.491943),311,,MUSC,Santa Clara,,Villa Clara
+SMZ,America/Paramaribo,Stoelmans Eiland,SMZ,SR,POINT (-54.41691100927227 4.3500591),141,,SMST,Grand-Santi,Guyane,Guyane
+SNX,America/Santo_Domingo,Sabana De Mar,SNX,DO,POINT (-69.4 19.116667),0,,OIIS,Sabana de La Mar,,Hato Mayor
+SNY,America/Denver,Sidney,SNY,US,POINT (-102.9825 41.099445),4265,http://www.cityofsidney.org/283/Airport,KSNY,Sidney,Cheyenne County,Nebraska
+SNZ,America/Fortaleza,Santa Cruz,SNZ,BR,POINT (-36.016666 -6.216667),813,,SBSC,Santa Cruz,Santa Cruz,Rio Grande do Norte
+SOA,Asia/Ho_Chi_Minh,Soc Trang,SOA,VN,POINT (105.833336 9.616667),39,,"",Huynh Huu Nghia,,Soc Trang
+SOB,Europe/Budapest,Sármellék/Balaton,SOB,HU,POINT (17.240444 46.71347),377,http://www.flybalaton.com/?null&lang=en,LHSM,Keszthely,,Zala
+SOC,Asia/Jakarta,Adi Sumarmo International Airport,SOC,ID,POINT (110.75667 -7.51583),367,,WAHQ,Colomadu,,Central Java
+SNB,Australia/Darwin,Snake Bay,SNB,AU,POINT (130.64965697107698 -11.41888685),154,,YSNB,Leanyer,Darwin,Northern Territory
+SNH,Australia/Brisbane,Stanthorpe,SNH,AU,POINT (151.98121215512776 -28.6201255),2890,,YSPE,Stanthorpe,Southern Downs,Queensland
+EYS,Africa/Nairobi,Eliye Springs,EYS,KE,POINT (35.9745739 3.2367462),1427,,HKES,,,
+EZS,Europe/Istanbul,Elazig Airport,EZS,TR,POINT (39.291668 38.608334),2896,,LTCA,Mollakendi,,Elazig
+YRL,America/Winnipeg,Red Lake Airport,YRL,CA,POINT (-93.78762992720274 51.06810435),1265,,CYRL,,,
+FAA,Africa/Conakry,Faranah,FAA,GN,POINT (-10.76962816625008 10.0359509),1502,,GUFH,Faranah,Faranah Prefecture,Faranah
+YSY,America/Yellowknife,Sachs Harbour,YSY,CA,POINT (-125.2487637741074 71.99336145000001),282,,CYSY,,,
+FAB,Europe/London,Farnborough,FAB,GB,POINT (-0.7704595 51.2786335),229,http://www.tagaviation.com,EGLF,Farnborough,Hampshire,England
+SNL,America/Chicago,Shawnee Municipal,SNL,US,POINT (-96.9430788 35.3542366),967,http://www.shawneeairport.com/,KSNL,Shawnee,Pottawatomie County,Oklahoma
+SNS,America/Los_Angeles,Salinas,SNS,US,POINT (-121.6089494054428 36.662864150000004),62,http://www.ci.salinas.ca.us/services/airport/airport.cfm,KSNS,Salinas,Monterey County,California
+FAE,Atlantic/Faroe,Vagar Airport,FAE,FO,POINT (-7.272963736388841 62.06214025),190,http://www.floghavn.fo/,EKVG,Midvagur,,Vagar
+SOK,Africa/Maseru,Semongkong,SOK,LS,POINT (28.5 -29.833332),8690,,FXSM,Thaba-Tseka,,Thaba-Tseka
+FAH,Asia/Kabul,Farah,FAH,AF,POINT (62.16252289843064 32.3655368),2194,,OAFR,Farah,,Farah
+SOM,America/Caracas,Edmundo Barrios,SOM,VE,POINT (-64.145836 8.949167),820,,SVST,San Jose de Guanipa,Municipio San Jose de Guanipa,Anzoategui
+FAJ,America/Puerto_Rico,Diego Jimenez Torres,FAJ,PR,POINT (-65.50222 18.338888),0,,TJFA,Luis M. Cintron,,Fajardo
+SOD,America/Sao_Paulo,Sorocaba,SOD,BR,POINT (-47.49014641930361 -23.4777055),2070,,SDCO,Sorocaba,Sorocaba,Sao Paulo
+SPN,Pacific/Saipan,Saipan International Airport,SPN,MP,POINT (145.72962519467052 15.12049075),196,,PGSN,Saipan,,Saipan
+SPR,America/Belize,San Pedro,SPR,BZ,POINT (-87.9708621044903 17.9141504),26,,MZSP,San Pedro,,Belize
+SPS,America/Chicago,Sheppard AFB,SPS,US,POINT (-98.50127258819343 33.98750455),987,http://www.flywichitafalls.net/,KSPS,Wichita Falls,Wichita County,Texas
+FAL,America/Chicago,Falcon State,FAL,US,POINT (-99.13333 26.583332),328,,,Nueva Ciudad Guerrero,,Tamaulipas
+FAM,America/Chicago,Regional,FAM,US,POINT (-90.42167 37.780834),925,http://farmington-mo.gov/airport.cfm,KFAM,Farmington,Saint Francois County,Missouri
+FAR,America/Chicago,Hector International Airport,FAR,US,POINT (-96.81448802996968 46.9208925),813,http://www.fargoairport.com/,KFAR,Oakport,Clay County,Minnesota
+FAT,America/Los_Angeles,Fresno Yosemite International Airport,FAT,US,POINT (-119.71974456209355 36.776006),285,https://flyfresno.com/,KFAT,Sunnyside,Fresno County,California
+FAY,America/New_York,Fayetteville Regional Airport,FAY,US,POINT (-78.88416820521829 34.9921371),206,,KFAY,Hope Mills,Cumberland County,North Carolina
+FAZ,Asia/Tehran,Fasa,FAZ,IR,POINT (53.7 28.933332),4399,,OISF,Fasa,,Fars
+FBD,Asia/Kabul,Faizabad Airport,FBD,AF,POINT (70.566666 37.1),4383,,OAFZ,Fayzabad,,Badakhshan
+FBE,America/Sao_Paulo,Francisco Beltrao,FBE,BR,POINT (-53.062941314576875 -26.05892195),2106,,SSFB,Francisco Beltrao,Francisco Beltrao,Parana
+FBG,America/New_York,Simmons AAF,FBG,US,POINT (-79.01667 35.166668),209,,KFBG,Fort Bragg,Cumberland County,North Carolina
+FBL,America/Chicago,Municipal,FBL,US,POINT (-93.26667 44.3),1003,http://www.faribault.org/departments/publicworks/airport,KFBL,Faribault,Rice County,Minnesota
+FBM,Africa/Lubumbashi,Lubumbashi International Airport,FBM,CD,POINT (27.527636755291578 -11.5907528),4291,,FZQA,Lubumbashi,,Katanga
+FHU,America/Phoenix,Municipal,FHU,US,POINT (-110.343056 31.588888),4625,,KFHU,Huachuca City,Cochise County,Arizona
+NAQ,America/Godthab,Qaanaaq Airport,NAQ,GL,POINT (-69.38334487262374 77.48813885),32,,BGQQ,,,
+CKR,America/Los_Angeles,Crane Island,CKR,US,POINT (-122.9976495 48.5977402),75,,"",,,
+SMC,America/Bogota,Santa Maria,SMC,CO,POINT (-77.05 8.166667),26,,,,,
+SPU,Europe/Zagreb,Split Airport,SPU,HR,POINT (16.300224163865497 43.5397753),55,,LDSP,Trogir,Grad Trogir,Splitsko-Dalmatinska
+SPW,America/Chicago,Spencer Municipal,SPW,US,POINT (-95.20352113315774 43.166146850000004),1332,http://spenceriowacity.com/airport.php,KSPW,Spencer,Clay County,Iowa
+SQD,Asia/Shanghai,Shangrao Sanqingshan Airport,SQD,CN,POINT (117.96398931725957 28.37956695),331,,ZSSR,Xuri,,Jiangxi Sheng
+SQI,America/Chicago,Whiteside County,SQI,US,POINT (-89.66774129514164 41.743649149999996),620,http://www.visitrockfalls.com/visitor-s-guide/airport/whiteside-county-airport.html,KSQI,Rock Falls,Whiteside County,Illinois
+SQJ,Asia/Shanghai,Sanming Shaxian Airport,SQJ,CN,POINT (117.83500979652453 26.4254583),800,,ZSSM,Langkou,,Fujian
+STN,Europe/London,Stansted Airport,LON,GB,POINT (0.244192901573303 51.88696515),351,http://www.stanstedairport.com/,EGSS,Takeley,Essex,England
+SVM,Australia/Brisbane,St Pauls,SVM,AU,POINT (142.11667 -10.366667),0,,,,,
+YWR,America/Toronto,White River,YWR,CA,POINT (-85.333336 48.583332),1380,,CNJ8,,,
+SPJ,Europe/Athens,Eleftherios Venizelos,SPJ,GR,POINT (22.533333 36.983334),364,,LGSP,Krokeai,Nomos Lakonias,Peloponnese
+SPM,Europe/Berlin,Spangdahlem,SPM,DE,POINT (6.835917 50.06547),1240,http://www.spangdahlem.af.mil/,ETAD,Pantenburg,,Rheinland-Pfalz
+SPO,Europe/Madrid,San Pablo,SPO,ES,POINT (-5.75 37.38333),469,,,Mairena del Alcor,Provincia de Sevilla,Andalusia
+SPQ,America/Los_Angeles,Catalina SPB,SPQ,US,POINT (-118.27278 33.750557),0,,,San Pedro,Los Angeles County,California
+YFA,America/Toronto,Fort Albany,YFA,CA,POINT (-81.59167 52.24167),48,,CYFA,,,
+SPD,Asia/Dhaka,Saidpur Airport,SPD,BD,POINT (88.90942375402783 25.757940650000002),49,,VGSD,Saidpur,,Rajshahi
+SPP,Africa/Luanda,Menongue,SPP,AO,POINT (17.71826276366948 -14.65800685),4632,,FNME,Menongue,,Cuando Cubango
+SPT,Asia/Kuching,Sipitang,SPT,MY,POINT (115.55 5.083333),0,,"",Beaufort,,Sabah
+SPZ,America/Chicago,Springdale Municipal,SPZ,US,POINT (-94.11966333062685 36.17580785),1345,,KASG,Springdale,Washington County,Arkansas
+SPX,America/Chicago,Houston Gulf Airport,HOU,US,POINT (-95.433334 29.766666),157,,HESX,West University Place,Harris County,Texas
+SPY,Africa/Abidjan,San Pedro,SPY,CI,POINT (-6.626944 4.730278),13,,DISP,San-Pedro,,Bas-Sassandra
+FBR,America/Denver,Fort Bridger,FBR,US,POINT (-110.38333 41.316666),6669,,KFBR,Mountain View,Uinta County,Wyoming
+FBY,America/Chicago,Municipal,FBY,US,POINT (-97.183334 40.13333),1302,http://www.fairbury.com/pages/fairbury_airport.html,KFBY,Fairbury,Jefferson County,Nebraska
+FCA,America/Denver,Glacier Park International Airport,FCA,US,POINT (-114.25569373421675 48.3108042),2959,http://www.iflyglacier.com/,KGPI,Evergreen,Flathead County,Montana
+SQA,America/Los_Angeles,Santa Ynez,SQA,US,POINT (-118.566666 34.066666),1033,http://www.santaynezairport.com/info.html,KIZA,Topanga,Los Angeles County,California
+SQB,America/Bogota,Santa Ana,SQB,CO,POINT (-74.583336 9.316667),59,,"",Talaigua Viejo,,Bolivar
+FCB,Africa/Johannesburg,Ficksburg Sentra Oes,FCB,ZA,POINT (27.908333 -28.825),5282,,FAFB,Ficksburg,Thabo Mofutsanyana District Municipality,Orange Free State
+FCH,America/Los_Angeles,Fresno-Chandler,FAT,US,POINT (-119.8205186684981 36.73238155),232,https://flyfresno.com/chandler-executive/,KFCH,Fresno,Fresno County,California
+FCN,Europe/Berlin,Cuxhaven/Nordholz,FCN,DE,POINT (8.662276556603832 53.7721471),45,,ETMN,Midlum,,Lower Saxony
+FCO,Europe/Rome,Leonardo da Vinci-Fiumicino Airport,ROM,IT,POINT (12.226901204880779 41.8144309),32,http://www.adr.it/portal/portal/adr/Fiumicino/Leonardo_da_vinci/Header_Window?action=2,LIRF,Fiumicino-Isola Sacra,Citta metropolitana di Roma Capitale,Latium
+FCY,America/Chicago,Municipal,FCY,US,POINT (-90.76667 34.95),246,http://www.fly.arkansas.gov/Airports/ForrestCity/FORREST_CITY-2.pdf,KFCY,Forrest City,Saint Francis County,Arkansas
+FDE,Europe/Oslo,Bringeland Airport,FDE,NO,POINT (5.760503549358087 61.39153845),1056,https://avinor.no/en/airport/forde-airport/,ENBL,Sande,Gaular,Sogn og Fjordane
+FDF,America/Martinique,Martinique Aime Cesaire International Airport,FDF,MQ,POINT (-61.00559445393026 14.5906832),26,http://www.martinique.aeroport.fr/,TFFF,Le Lamentin,Martinique,Martinique
+FDH,Europe/Berlin,Friedrichshafen Airport,FDH,DE,POINT (9.5243796 47.6730679),1377,,EDNY,Friedrichshafen,Tuebingen Region,Baden-Wuerttemberg
+FDK,America/New_York,Frederick Municipal,FDK,US,POINT (-77.37190318935188 39.416500850000006),337,https://www.cityoffrederick.com/index.aspx?NID=152,KFDK,Frederick,Frederick County,Maryland
+FDR,America/Chicago,Municipal,FDR,US,POINT (-99.01667 34.38333),1299,,KFDR,Frederick,Tillman County,Oklahoma
+FDY,America/New_York,Findlay,FDY,US,POINT (-84.53333 41.033333),728,http://www.ci.findlay.oh.us/?id=56,KFDY,Paulding,Paulding County,Ohio
+FEA,Europe/London,Fetlar,FEA,GB,POINT (-0.966667 60.583332),0,,"",,,
+FEB,Asia/Kathmandu,Sanfebagar,FEB,NP,POINT (81.21593253262924 29.236758299999998),1912,,VNSR,Achham,Seti Zone,Far Western
+FLM,America/Asuncion,Filadelfia,FLM,PY,POINT (-60.053753667301976 -22.357841),495,,SGFI,Filadelfia,,Boqueron
+GBZ,Pacific/Auckland,Great Barrier Island,GBZ,NZ,POINT (175.41667 -36.25),511,,NZGB,Coromandel,Thames-Coromandel District,Waikato
+GCA,America/Bogota,Guacamaya,GCA,CO,POINT (-75.5 2.316667),4865,,"",Gigante,Gigante,Huila
+GCC,America/Denver,Campbell County Airport,GCC,US,POINT (-105.532684 44.346355),4324,http://www.iflygillette.com/,KGCC,Gillette,Campbell County,Wyoming
+GES,Asia/Manila,General Santos International Airport,GES,PH,POINT (125.23424 6.108066),22,,RPMR,Buayan,General Santos City,Soccsksargen
+FEC,America/Bahia,Feira De Santana,FEC,BR,POINT (-38.90841809405157 -12.2001342),761,,SDIY,Feira de Santana,Feira De Santana,Bahia
+TWA,America/Anchorage,Twin Hills,TWA,US,POINT (-159.99167 59.166668),82,,A63,,,
+SQE,America/Bogota,San Luis De Pale,SQE,CO,POINT (-77 -12.066667),784,,"",San Luis,Lima,Lima
+SQG,Asia/Makassar,Sorong Airport,SQG,ID,POINT (111.583336 0.083333),65,,WIOS,Simanggang,,Sarawak
+TSW,Pacific/Port_Moresby,Tsewi,TSW,PG,POINT (146.03334 -6.966667),4185,,AYTS,,,
+SQK,Africa/Cairo,Sidi Barani,SQK,EG,POINT (25.933332 31.6),82,,"",Bardiyah,,Sha`biyat al Butnan
+SQL,America/Los_Angeles,San Carlos,SQL,US,POINT (-122.25 37.483334),91,http://publicworks.smcgov.org/san-carlos-airport,KSQL,Redwood City,San Mateo County,California
+SQM,America/Sao_Paulo,São Miguel de Aragao,SQM,BR,POINT (-50.216667 -13.316667),1171,,SWUA,Sao Miguel do Araguaia,Sao Miguel Do Araguaia,Goias
+YWB,America/Montreal,Kangiqsujuaq Airport,YWB,CA,POINT (-71.92727553346413 61.5877768),501,,CYKG,,,
+SQN,Asia/Jayapura,Sanana,SQN,ID,POINT (125.916664 -2.2),741,,WAPN,Sanana,,Maluku Utara
+SQO,Europe/Stockholm,Gunnarn,SQO,SE,POINT (17.8 64.96222),816,,ESUD,Soderfors,Lycksele Kommun,Vaesterbotten
+FEG,Asia/Tashkent,Fergana Airport,FEG,UZ,POINT (71.7510007489508 40.3583628),1998,,UTFF,Fergana,,Fergana
+FEJ,America/Rio_Branco,Feijo,FEJ,BR,POINT (-70.3402582680074 -8.1398638),498,,SNOU,Feijo,Feijo,Acre
+FEK,Africa/Abidjan,Ferkessedougou,FEK,CI,POINT (-5.1999998 9.6000004),1020,,DIFK,Ferkessedougou,,Savanes
+SQQ,Europe/Vilnius,Siauliai International Airport,SQQ,LT,POINT (23.316668 55.933334),426,http://www.airport.siauliai.lt/,EYSA,Siauliai,Siauliai,Siauliu apskritis
+FEL,Europe/Berlin,Fuerstenfeldbruck,FEL,DE,POINT (11.266667 48.2),1709,,ETSF,Maisach,Upper Bavaria,Bavaria
+FEN,America/Noronha,Fernando De Noronha Airport,FEN,BR,POINT (-32.4227495764598 -3.8546858),150,,SBFN,Fernando de Noronha (Distrito Estadual),Fernando De Noronha,Pernambuco
+SRF,America/Los_Angeles,Hamilton Field,SRF,US,POINT (-122.522224 38.015278),22,,"",Santa Venetia,Marin County,California
+SRG,Asia/Jakarta,Achmad Yani International Airport,SRG,ID,POINT (110.37855 -6.979155),22,,WAHS,Semarang,,Central Java
+SRH,Africa/Ndjamena,Sarh,SRH,TD,POINT (18.383333 9.083333),1171,,FTTA,Sagh,,Moyen-Chari
+SRJ,America/La_Paz,Capitan G Q Guardia,SRJ,BO,POINT (-66.833336 -14.816667),672,,SLSB,San Borja,,El Beni
+SRL,America/Mazatlan,Santa Rosalia,SRL,MX,POINT (-112.25 27.2),856,,"",Santa Rosalia,,Baja California Sur
+SRP,Europe/Oslo,Stord Airport,SRP,NO,POINT (5.416667 59.833332),1263,,ENSO,Sagvag,Stord,Hordaland
+SRC,America/Chicago,Searcy,SRC,US,POINT (-91.73813412652575 35.2086856),213,,,Searcy,White County,Arkansas
+SRR,Australia/Brisbane,Dunwich,SRR,AU,POINT (-105.6625 33.360832),6909,http://www.stradair.com/,YDUN,Ruidoso,Lincoln County,New Mexico
+SRS,America/Bogota,Cartagena,SRS,CO,POINT (-75.13333 8.65),52,,SKSR,San Marcos,,Sucre
+SRU,America/Los_Angeles,Skypark,SRU,US,POINT (-122.01667 36.966667),29,,,Santa Cruz,Santa Cruz County,California
+SRW,America/New_York,Rowan County,SRW,US,POINT (-80.48333 35.666668),734,https://www.rowancountync.gov/GOVERNMENT/Departments/Airport.aspx,KRUQ,Salisbury,Rowan County,North Carolina
+FEP,America/Chicago,Albertus,FEP,US,POINT (-89.58328993042613 42.24424695),830,http://www.ci.freeport.il.us/business/albertus.htm,KFEP,Freeport,Stephenson County,Illinois
+SRX,Africa/Tripoli,Sert,SRX,LY,POINT (16.612036 31.060917),262,,HLGD,Qasr Abu Hadi,,Surt
+FES,Europe/Madrid,San Fernando,FES,ES,POINT (-6.183333 36.466667),22,,,San Fernando,Provincia de Cadiz,Andalusia
+FET,America/Chicago,Municipal,FET,US,POINT (-96.5 41.433334),1217,http://www.fremontne.gov/index.aspx?nid=398,KFET,Fremont,Dodge County,Nebraska
+FEW,America/Denver,Warren AFB,CYS,US,POINT (-104.87201176270457 41.14232855),6148,,,Cheyenne,Laramie County,Wyoming
+FFD,Europe/London,Fairford RAF Station,FFD,GB,POINT (-1.783333 51.733334),377,,EGVA,Fairford,Gloucestershire,England
+SRY,Asia/Tehran,Dashte Naz Airport,SRY,IR,POINT (53.197277 36.635727),78,,OINZ,Surak,,Mazandaran
+FFL,America/Chicago,Municipal,FFL,US,POINT (-91.95 40.933334),731,http://cityoffairfieldiowa.com/index.aspx?nid=65,KFFL,Fairfield,Jefferson County,Iowa
+SRI,Asia/Makassar,Temindung Airport,SRI,ID,POINT (117.1567381154631 -0.48319035),39,,,Samarinda,,East Kalimantan
+FFM,America/Chicago,Fergus Falls,FFM,US,POINT (-96.066666 46.283333),1200,http://www.ci.fergus-falls.mn.us/index.asp?Type=B_BASIC&SEC=%7B6362A7EF-126F-4694-9568-23D51B3A6337%7D,KFFM,Fergus Falls,Otter Tail County,Minnesota
+SRT,Africa/Kampala,Soroti,SRT,UG,POINT (33.619214069817254 1.72693535),3667,,HUSO,Soroti,Soroti District,Eastern Region
+FFO,America/New_York,Patterson AFB,DAY,US,POINT (-84.2 39.75),744,http://www.wpafb.af.mil/,KFFO,Dayton,Montgomery County,Ohio
+FFT,America/New_York,Capital City,FFT,US,POINT (-84.905 38.18222),774,http://cca.ky.gov/Pages/default.aspx,KFFT,Frankfort,Franklin County,Kentucky
+FFU,America/Santiago,Futaleufu,FFU,CL,POINT (-71.85031648848118 -43.1889648),1125,,SCFT,Futaleufu,Provincia de Palena,Los Lagos
+FGI,Pacific/Apia,Fagali I Airport,APW,WS,POINT (-171.73900401758772 -13.8495609),111,,NSFI,Apia,,Tuamasaga
+FIL,America/Denver,Municipal,FIL,US,POINT (-112.3625 38.958332),4967,,KFOM,Fillmore,Millard County,Utah
+FJR,Asia/Dubai,Al-Fujairah International,FJR,AE,POINT (56.32334682899914 25.1102772),95,,OMFJ,Al Fujayrah,,Al Fujayrah
+FKB,Europe/Berlin,Baden-Airpark,FKB,DE,POINT (8.081971309890005 48.7787136),406,http://www.baden-airpark.de/startseite.html,EDSB,Hugelsheim,Karlsruhe Region,Baden-Wuerttemberg
+IES,Europe/Berlin,Riesa,IES,DE,POINT (13.283333 51.3),354,,EDAU,,,
+CFF,Africa/Luanda,Cafunfo,CFF,AO,POINT (17.9897003 -8.7836103),2746,,FNCF,,,
+PSV,Europe/London,Papa Stour,PSV,GB,POINT (-1.69306 60.321701),32,,EGSZ,,,
+SSE,Asia/Kolkata,Sholapur,SSE,IN,POINT (75.933334 17.633333),1558,,VASL,Solapur,Solapur,Maharashtra
+SSF,America/Chicago,Stinson Municipalcipal,SAT,US,POINT (-98.5 29.416668),646,http://www.sanantonio.gov/SSF.aspx,KSSF,San Antonio,Bexar County,Texas
+SSG,Africa/Malabo,Malabo Airport,SSG,GQ,POINT (8.716096 3.757791),45,,FGSL,Malabo,,Bioko Norte
+SSD,America/Bogota,San Felipe,SSD,CO,POINT (-67.0772208 1.9133422),269,,SCSF,San Carlos de Rio Negro,Municipio Autonomo Rio Negro,Amazonas
+SSI,America/New_York,Malcolm Mckinnon,SSI,US,POINT (-81.46347 31.165916),32,http://www.goldenisles.com/listing/mckinnon-st-simons-island-airport,KSSI,Brunswick,Glynn County,Georgia
+SSL,America/Bogota,Santa Rosalia,SSL,CO,POINT (-72.23333 1.466667),839,,SKSL,Miraflores,,Guaviare
+SQV,America/Los_Angeles,Sequim Valley Airport,SQV,US,POINT (-123.187123 48.0981478),114,http://www.sequimvalleyairport.com/,W28,Sequim,Clallam County,Washington
+SSN,Asia/Seoul,Seoul AB,SEL,KR,POINT (127.11667 37.45),45,,RKSM,Seongnam-si,,Gyeonggi-do
+YMN,America/Goose_Bay,Makkovik Airport,YMN,CA,POINT (-59.166668 55.166668),234,,CYFT,,,
+SSO,America/Sao_Paulo,Sao Lourenco,SSO,BR,POINT (-45.05 -22.116667),2903,,SNLO,Sao Lourenco,Sao Lourenco,Minas Gerais
+SQY,America/Sao_Paulo,Sao Lourenco Do Sul,SQY,BR,POINT (-52.0334202565532 -31.38606845),121,,SSRU,Sao Lourenco do Sul,Sao Lourenco Do Sul,Rio Grande do Sul
+SRQ,America/New_York,Sarasota Bradenton International Airport,SRQ,US,POINT (-82.55407423064528 27.395988350000003),32,,KSRQ,Whitfield,Manatee County,Florida
+SRZ,America/La_Paz,El Trompillo,SRZ,BO,POINT (-63.1716737506149 -17.81122735),1397,,SLET,Santa Cruz de la Sierra,,Santa Cruz
+SSA,America/Bahia,Deputado Luis Eduardo Magalhaes International Airport,SSA,BR,POINT (-38.33497451468749 -12.91102045),19,,SBSV,Lauro de Freitas,Lauro De Freitas,Bahia
+SSH,Africa/Cairo,Sharm El Sheikh Airport,SSH,EG,POINT (34.3879836 27.9807161),203,,HESH,Sharm el-Sheikh,,South Sinai
+SSJ,Europe/Oslo,Stokka Airport,SSJ,NO,POINT (12.471089782822334 65.95806195),78,https://avinor.no/en/airport/sandnessjoen-airport/,ENST,Solfjellsjoen,Donna,Nordland
+YHR,America/Blanc-Sablon,Chevery,YHR,CA,POINT (-59.5 50.5),39,,CYHR,,,
+SUH,Asia/Muscat,Sur,SUH,OM,POINT (59.47670376491024 22.537570000000002),45,,"",Sur,,Ash Sharqiyah
+STM,America/Santarem,Santarem-Maestro Wilson Fonseca Airport,STM,BR,POINT (-54.80445559036728 -2.42713895),206,,SBSN,Santarem,Santarem,Para
+TWP,Australia/Brisbane,Torwood,TWP,AU,POINT (143.75 -17.3633003),0,,"",,,
+FKI,Africa/Lubumbashi,Bangoka International Airport,FKI,CD,POINT (25.2 0.516667),1259,,FZIC,Kisangani,,Eastern Province
+FKJ,Asia/Tokyo,Fukui,FKJ,JP,POINT (136.22667 36.13972),29,,RJNF,Maruoka,,Fukui
+FKL,America/New_York,Venango Regional Airport,FKL,US,POINT (-79.8580804756028 41.3775283),1541,,KFKL,Franklin,Venango County,Pennsylvania
+FKN,America/New_York,Municipal,FKN,US,POINT (-76.933334 36.683334),45,http://www.franklinva.com/index.php?option=com_content&view=article&id=30&Itemid=168,KFKN,Franklin,City of Franklin,Virginia
+FKQ,Asia/Jayapura,Fak Fak Airport,FKQ,ID,POINT (132.3 -2.916667),511,,WASF,Fakfak,,Papua
+FKS,Asia/Tokyo,Fukushima Airport,FKS,JP,POINT (140.4306 37.2272),1194,http://www.fks-ab.co.jp/,RJSF,Sukagawa,,Fukushima
+FLA,America/Bogota,Capitolio Airport,FLA,CO,POINT (-75.55889 1.588889),761,,SKFL,Florencia,,Caqueta
+FLB,America/Fortaleza,Cangapara,FLB,BR,POINT (-43.033333 -6.8),442,,SNQG,Floriano,Floriano,Piaui
+FLC,Australia/Melbourne,Falls Creek,FLC,AU,POINT (143.28334 -36.833332),1151,,,Maryborough,Central Goldfields,Victoria
+CVL,Pacific/Port_Moresby,Cape Vogel,CVL,PG,POINT (150.5 -9.466667),741,,"",,,
+FLD,America/Chicago,Fond Du Lac,FLD,US,POINT (-88.48444 43.771667),790,http://www.fdlco.wi.gov/departments/departments-a-e/airport,KFLD,North Fond du Lac,Fond du Lac County,Wisconsin
+FLF,Europe/Berlin,Schaferhaus,FLF,DE,POINT (9.37996456704682 54.77174585),111,,EDXF,Harrislee,,Schleswig-Holstein
+FLG,America/Phoenix,Flagstaff Pulliam Airport,GCN,US,POINT (-111.67020441781051 35.140398250000004),7004,,KFLG,Kachina Village,Coconino County,Arizona
+FLJ,America/Anchorage,Falls Bay,FLJ,US,POINT (-148.00833 60.0325),393,,,,,
+FLN,America/Sao_Paulo,Hercilio Luz International Airport,FLN,BR,POINT (-48.54468648648172 -27.670113450000002),19,http://www.infraero.gov.br/usa/aero_prev_home.php?ai=228,SBFL,Carianos,Florianopolis,Santa Catarina
+FLO,America/New_York,Florence Airport,FLO,US,POINT (-79.72444 34.18889),108,,KFLO,Florence,Florence County,South Carolina
+FLP,America/Chicago,Flippin,FLP,US,POINT (-92.587468 36.292153),698,http://www.marioncountyairport.com/default.htm,KFLP,Flippin,Marion County,Arkansas
+FLR,Europe/Rome,Firenze-Peretola Airport,FLR,IT,POINT (11.199120619746795 43.80928725),104,http://www.aeroporto.firenze.it/,LIRQ,Sesto Fiorentino,Province of Florence,Tuscany
+FRM,America/Chicago,Fairmont,FRM,US,POINT (-94.423615 43.64722),1135,,KFRM,Fairmont,Martin County,Minnesota
+GET,Australia/Perth,Geraldton Airport,GET,AU,POINT (114.70368764816294 -28.79957515),29,,YGEL,Geraldton,Geraldton-Greenough,Western Australia
+GEV,Europe/Stockholm,Gallivare Airport,GEV,SE,POINT (20.81734626236164 67.13180875),944,,ESNG,Gaellivare,Gallivare Kommun,Norrbotten
+GEW,Pacific/Port_Moresby,Gewoia,GEW,PG,POINT (148.46666 -9.3),3041,,AYGC,,,
+GEX,Australia/Melbourne,Geelong,GEX,AU,POINT (144.35 -38.13333),72,,YGLG,Geelong West,Greater Geelong,Victoria
+GEY,America/Denver,South Big Horn County,GEY,US,POINT (-108.083695988344 44.518039200000004),3904,http://www.bighorncountywy.gov/res-airports.htm,KGEY,Greybull,Big Horn County,Wyoming
+HBT,Asia/Colombo,Hafr Albatin,HRI,LK,POINT (45.522972 27.911552),1368,,"",,,
+RIN,Pacific/Guadalcanal,Ringi Cove,RIN,SB,POINT (157.03334 -8.2),252,,AGRC,,,
+STS,America/Los_Angeles,Sonoma County Airport,STS,US,POINT (-122.7842318 38.5100124),131,http://www.sonomacountyairport.org/,KSTS,Windsor,Sonoma County,California
+XTL,America/Winnipeg,Tadoule Lake,XTL,CA,POINT (-98.51213499738532 58.706157149999996),902,,CYBQ,,,
+STQ,America/New_York,St Marys,STQ,US,POINT (-78.566666 41.433334),1725,http://stmarysmunicipalairport.com/,KOYM,Saint Marys,Elk County,Pennsylvania
+STR,Europe/Berlin,Stuttgart Airport,STR,DE,POINT (9.193624 48.69073),1312,http://www.flughafen-stuttgart.de/,EDDS,Leinfelden-Echterdingen,Regierungsbezirk Stuttgart,Baden-Wuerttemberg
+SUA,America/New_York,Witham Field,SUA,US,POINT (-80.22488623222156 27.1831531),16,"http://ap3server.martin.fl.us/portal/page?_pageid=413,234422&_dad=portal&_schema=PORTAL",KSUA,Stuart,Martin County,Florida
+STU,America/Belize,Santa Cruz,STU,BZ,POINT (-88.45 18.266666),16,,,Corozal,,Corozal
+SUC,America/Denver,Schloredt,SUC,US,POINT (-104.4113572 44.3922301),4914,,,Sundance,Crook County,Wyoming
+STW,Europe/Moscow,Stavropol Airport,STW,RU,POINT (42.00833 45.333332),971,,URMT,Moskovskoye,,Stavropol'skiy
+STY,America/Montevideo,Salto,STY,UY,POINT (-57.988335 -31.436666),65,,SUSO,Concordia,,Entre Rios
+SUD,America/Chicago,Stroud,SUD,US,POINT (-96.683334 35.75),951,,KSUD,Stroud,Lincoln County,Oklahoma
+SUI,Asia/Tbilisi,Babusheri,SUI,GE,POINT (41.11667 42.86667),19,,UGSS,Dranda,,Abkhazia
+SVI,America/Bogota,San Vicente,SVI,CO,POINT (-74.76667 2.15),866,,SKSV,Puerto Rico,,Caqueta
+SVJ,Europe/Oslo,Helle Airport,SVJ,NO,POINT (14.667774 68.24498),0,https://avinor.no/en/airport/svolvar-airport/,ENSH,Svolvaer,Vagan,Nordland
+FLS,Australia/Hobart,Flinders Island Airport,FLS,AU,POINT (148.00199212585613 -40.089789749999994),22,http://www.flinders.tas.gov.au/flinders-island-airport,YFLI,Bridport,Dorset,Tasmania
+FLV,America/Chicago,Sherman AAF,FLV,US,POINT (-94.916664 39.36667),787,http://www.lvks.org/department/division.php?structureid=141,KFLV,Weston,Platte County,Missouri
+FLZ,Asia/Jakarta,Ferdinand Lumban Tobing Airport,FLZ,ID,POINT (98.88774911868903 1.5584287),29,,WIMS,Batangtoru,,North Sumatra
+UMC,Pacific/Port_Moresby,Umba,UMC,PG,POINT (145.96630039886003 -7.021325),5950,,AYUC,,,
+LLP,Australia/Brisbane,Linda Downs,LLP,AU,POINT (138.7 -23.166668),0,,,,,
+SVN,America/New_York,Hunter AAF,SAV,US,POINT (-81.1 32.083332),32,http://www.stewart.army.mil/units/home.asp?id=186,KSVN,Savannah,Chatham County,Georgia
+KIF,America/Winnipeg,Kingfisher Lake,KIF,CA,POINT (-89.85188116702054 53.01166125),866,,CNM5,,,
+FMA,America/Argentina/Cordoba,El Pucu Airport,FMA,AR,POINT (-58.22846252379796 -26.213222950000002),127,,SARF,Formosa,,Formosa
+SUL,Asia/Karachi,Sui,SUL,PK,POINT (69.1761193 28.6452566),708,,OPSU,Dera Bugti,,Balochistan
+SVT,Africa/Gaborone,Savuti,SVT,BW,POINT (24.083332 -18.633333),3034,,FBSV,Katima Mulilo,,Zambezi
+SVX,Asia/Yekaterinburg,Koltsovo International Airport,SVX,RU,POINT (60.804314 56.750336),728,http://www.koltsovo.ru/en/,USSS,Istok,,Sverdlovsk
+SVZ,America/Caracas,San Antonio,SVZ,VE,POINT (-72.43806 7.843056),1364,,SVSA,San Antonio del Tachira,Municipio Bolivar,Tachira
+FME,America/New_York,Tipton AAF,FME,US,POINT (-76.84414 39.103863),150,http://tiptonairport.org/,KFME,Laurel,Prince George's County,Maryland
+XRR,America/Whitehorse,Ross River,XRR,CA,POINT (-132.41763070144344 61.9696858),2273,,CYDM,,,
+FMH,America/New_York,Otis AFB,FMH,US,POINT (-70.55 41.666668),134,http://www.uscg.mil/d1/airstacapecod/,KFMH,Forestdale,Barnstable County,Massachusetts
+FMI,Africa/Lubumbashi,Kalemie Airport,FMI,CD,POINT (29.245703687724784 -5.8767486),2539,,FZRF,Kalemie,,Katanga
+FMM,Europe/Berlin,Memmingen Allgau Airport,FMM,DE,POINT (10.235409335315072 47.9892386),2060,,EDJA,Memmingerberg,Swabia,Bavaria
+FMN,America/Denver,Four Corners Regional Airport,FMN,US,POINT (-108.22886455865157 36.7414404),5492,,KFMN,Farmington,San Juan County,New Mexico
+FMO,Europe/Berlin,Munster Osnabruck International Airport,FMO,DE,POINT (7.682959395054385 52.13422065),141,,EDDG,Ladbergen,Regierungsbezirk Munster,North Rhine-Westphalia
+FMS,America/Chicago,Municipal,FMS,US,POINT (-91.3275 40.65889),718,,KFSW,Fort Madison,Lee County,Iowa
+FMU,America/Los_Angeles,Florence Municipal,FMU,US,POINT (-124.11217901372595 43.98641155),42,http://www.ci.florence.or.us/airport,"",Florence,Lane County,Oregon
+FMY,America/New_York,Page Field,FMY,US,POINT (-81.86208116020099 26.58587405),16,http://www.flylcpa.com/aboutfmy,KFMY,Pine Manor,Lee County,Florida
+FNG,Africa/Ouagadougou,Fada Ngourma,FNG,BF,POINT (0.35 12.066667),948,,DFEF,Fada N'gourma,Province du Gourma,Est
+FNH,Africa/Addis_Ababa,Fincha,FNH,ET,POINT (37.433334 9.583333),5318,,HAFN,Shambu,,Oromiya
+FNI,Europe/Paris,Garons Airport,FNI,FR,POINT (4.416667 43.75),295,,LFTW,Garons,Departement du Gard,Languedoc-Roussillon
+FNJ,Asia/Pyongyang,Pyongyang Sunan International Airport,FNJ,KP,POINT (125.67704274664212 39.2295753),62,,ZKPY,Sunan,,Pyongyang
+GFD,America/Indiana/Indianapolis,Pope Field,GFD,US,POINT (-85.73558027671119 39.792199499999995),843,,KGFD,Greenfield,Hancock County,Indiana
+GFE,Australia/Sydney,Grenfell,GFE,AU,POINT (148.18333 -33.9),1374,,YGNF,Grenfell,Weddin,New South Wales
+GFF,Australia/Sydney,Griffith Airport,GFF,AU,POINT (146.06375907653336 -34.252893349999994),383,,YGTH,Griffith,Griffith,New South Wales
+GFK,America/Chicago,Grand Forks International Airport,GFK,US,POINT (-97.17587 47.9488),823,http://www.gfkairport.com/,KGFK,Grand Forks,Grand Forks County,North Dakota
+GFL,America/New_York,Warren County,GFL,US,POINT (-73.61011807510613 43.3439637),305,http://www.warrencountydpw.com/airport_07/,KGFL,Queensbury,Warren County,New York
+GFN,Australia/Sydney,Grafton Airport,GFN,AU,POINT (153.03149432219152 -29.752186100000003),88,,YGFN,South Grafton,Clarence Valley,New South Wales
+SUN,America/Boise,Friedman Memorial Airport,SUN,US,POINT (-114.29715419952583 43.50392605),5249,,KSUN,Hailey,Blaine County,Idaho
+SUV,Pacific/Fiji,Nausori Airport,SUV,FJ,POINT (178.5604976825565 -18.04373695),42,,NFNA,Suva,,Central
+SUW,America/Chicago,Richard I Bong Airport,SUW,US,POINT (-92.09586667538971 46.68933065),685,http://www.ci.superior.wi.us/index.aspx?NID=231,KSUW,Superior,Douglas County,Wisconsin
+SWH,Australia/Melbourne,Swan Hill,SWH,AU,POINT (143.61667 -35.38333),200,,YSWH,Swan Hill,Swan Hill,Victoria
+SUX,America/Chicago,Sioux Gateway Airport,SUX,US,POINT (-96.3836488 42.4036084),1026,https://www.sioux-city.org/government/departments-a-f/airport,KSUX,Sergeant Bluff,Woodbury County,Iowa
+SUY,Asia/Yakutsk,Suntar,SUY,RU,POINT (117.63562654945319 62.18569095),357,,UENS,Suntar,,Sakha
+AKF,Africa/Tripoli,Kufrah,AKF,LY,POINT (23.31398075824509 24.17807115),1148,,HLKF,Al Jawf,,Al Kufrah
+BEN,Africa/Tripoli,Benina International,BEN,LY,POINT (20.27332790949631 32.1011324),387,,HLLB,Benghazi,,Banghazi
+SVA,America/Anchorage,Savoonga Airport,SVA,US,POINT (-170.4909222727266 63.686885700000005),59,,PASA,Lavrentiya,,Chukotskiy Avtonomnyy Okrug
+SVC,America/Denver,Grant County Airport,SVC,US,POINT (-108.1527351258874 32.6384522),5396,,KSVC,Hurley,Grant County,New Mexico
+SVG,Europe/Oslo,Stavanger Airport Sola,SVG,NO,POINT (5.622712653837669 58.88099305),22,http://www.avinor.no/en/airport/stavanger/,ENZV,Sola,Sola,Rogaland
+BUA,Pacific/Port_Moresby,Buka,BUA,PG,POINT (154.6732872176393 -5.4221082),42,,AYBK,,,
+FNT,America/Detroit,Bishop International Airport,FNT,US,POINT (-83.74563177999201 42.9607553),777,,KFNT,Flint,Genesee County,Michigan
+SVH,America/New_York,Statesville Municipal,SVH,US,POINT (-80.8872959 35.7826363),921,http://www.statesvillenc.net/Resident/Airport/tabid/82/Default.aspx,KSVH,Statesville,Iredell County,North Carolina
+SVL,Europe/Helsinki,Savonlinna Airport,SVL,FI,POINT (28.9356922 61.9453398),278,http://www.finavia.fi/en/savonlinna/,EFSA,Savonlinna,Savonlinna,Southern Savonia
+FNU,Europe/Rome,Fenosu,FNU,IT,POINT (8.640620134900566 39.8951383),32,http://www.sogeaor.it,LIER,Palmas Arborea,Provincia di Oristano,Sardinia
+FOB,America/Los_Angeles,Fort Bragg,FOB,US,POINT (-123.7952935 39.4731697),62,,"82CL",Fort Bragg,Mendocino County,California
+SVO,Europe/Moscow,Sheremetyevo International Airport,MOW,RU,POINT (37.4238008194297 55.97608755),603,http://www.svo.aero/en/,UUEE,Khimki,,Moscow
+FOD,America/Chicago,Fort Dodge Airport,FOD,US,POINT (-94.18972 42.5525),1105,,KFOD,Fort Dodge,Webster County,Iowa
+SXE,Australia/Melbourne,Sale,SXE,AU,POINT (147 -38.166668),65,,YWSL,Sale,Wellington,Victoria
+SXF,Europe/Berlin,Schonefeld Airport,BER,DE,POINT (13.489561415210032 52.3663978),137,,,Schonefeld,,Brandenburg
+SXJ,Asia/Shanghai,Shanshan,SXJ,CN,POINT (90.23333 42.816666),1505,,ZWSS,Shanshan,,Xinjiang Uygur Zizhiqu
+SXK,Asia/Jayapura,Saumlaki Olilit Airport,SXK,ID,POINT (131.31667 -7.966667),170,,WAPI,Tual,,Maluku
+SXG,Africa/Lusaka,Senanga,SXG,ZM,POINT (23.29875591158206 -16.113010799999998),3316,,FLSN,Senanga,,Western
+SXN,Africa/Gaborone,Suapan,SXN,BW,POINT (26.116667 -20.55),2969,,FBSN,Dukwe,,North East
+SXO,America/Cuiaba,Sao Felix Do Araguaia,SXO,BR,POINT (-50.65 -11.6),639,,SWFX,Gurupi,Gurupi,Tocantins
+SXU,Africa/Addis_Ababa,Soddu,SXU,ET,POINT (37.75 6.8169999),6056,,HASD,Boditi,,"Southern Nations, Nationalities, and People's Region"
+SXR,Asia/Kolkata,Srinagar International Airport,SXR,IN,POINT (74.762634 34.002308),5416,,VISR,Soyibug,Baramula,Kashmir
+SXS,Asia/Kuching,Sahabat 16,SXS,MY,POINT (119.09167 5.089722),26,,WBKH,Larap,Province of Tawi-Tawi,Autonomous Region in Muslim Mindanao
+SXT,Asia/Kuala_Lumpur,Taman Negara,SXT,MY,POINT (102.39667 4.330556),295,,WMAN,Kuala Lipis,,Pahang
+SXV,Asia/Kolkata,Salem,SXV,IN,POINT (78.166664 11.65),944,,VOSM,Salem,Salem,Tamil Nadu
+SXY,America/New_York,Sidney,SXY,US,POINT (-75.4 42.316666),1000,,N23,Sidney,Delaware County,New York
+SXX,America/Belem,Sao Felix Do Xingu,SXX,BR,POINT (-51.952638481072114 -6.64104735),652,,SNFX,Sao Felix do Xingu,Sao Felix Do Xingu,Para
+SYA,America/Adak,Shemya AFB,SYA,US,POINT (174.08945 52.7175),45,,PASY,Tilichiki,,Kamtsjatka
+SYC,America/Lima,Shiringayoc,SYC,PE,POINT (-69.166664 -11.9),800,,SPSY,San Lorenzo,Provincia de Tahuamanu,Madre de Dios
+FOK,America/New_York,Suffolk County,FOK,US,POINT (-72.666664 40.833332),59,http://www.suffolkcountyny.gov/Departments/EconomicDevelopmentandPlanning/FrancisSGabreskiAirport.aspx,KFOK,Westhampton,Suffolk County,New York
+FON,America/Costa_Rica,Fortuna Airport,FON,CR,POINT (-84.48333 10.4),206,,MRAN,Quesada,,Alajuela
+SYE,Asia/Aden,Sadah,SYE,YE,POINT (43.61667 16.866667),7253,,OYSH,Saqayn,Saqayn,Sa'dah
+FOP,America/New_York,Morris AAF,FOP,US,POINT (-84.36667 33.61667),971,,,Forest Park,Clayton County,Georgia
+SYK,Atlantic/Reykjavik,Stykkisholmur,SYK,IS,POINT (-22.8 65.1),0,,BIST,Stykkisholmur,,West
+FOR,America/Fortaleza,Pinto Martins Airport,FOR,BR,POINT (-38.540836 -3.779073),141,,SBFZ,Fortaleza,Fortaleza,Ceara
+FOT,Australia/Sydney,Forster,FOT,AU,POINT (151.51666 -32.183334),1266,,YFST,Dungog,Dungog,New South Wales
+FOX,America/Anchorage,Fox,FOX,US,POINT (-147 64),3740,,,Salcha,Fairbanks North Star Borough,Alaska
+FOY,Africa/Monrovia,Foya,FOY,LR,POINT (-10.2274232 8.3557615),1440,,"",Buedu,,Eastern Province
+FPO,America/Nassau,Grand Bahama International Airport,FPO,BS,POINT (-78.6955864137168 26.556512750000003),55,,MYGF,Freeport,,Freeport
+SYL,America/Los_Angeles,Roberts AAF,SYL,US,POINT (-120.7 35.75),692,,,San Miguel,San Luis Obispo County,California
+SOY,Europe/London,Stronsay Airport,SOY,GB,POINT (-2.641866109987369 59.154877),19,,EGER,,,
+SYN,America/Chicago,Carleton,SYN,US,POINT (-101.8 32.13333),2667,,KSYN,Stanton,Martin County,Texas
+YDL,America/Vancouver,Dease Lake,YDL,CA,POINT (-130.03334 58.583332),2600,,CYDL,,,
+ATB,Africa/Khartoum,Atbara,ATB,SD,POINT (34.05635032638109 17.7068787),1246,,HSAT,Atbara,,River Nile
+BTQ,Africa/Kigali,Butare,BTQ,RW,POINT (29.736554 -2.595473),5797,,HRYI,Butare,,Southern Province
+DOG,Africa/Khartoum,Dongola,DOG,SD,POINT (30.43057893663059 19.1533534),702,,HSDN,Dongola,,Northern State
+EDB,Africa/Khartoum,Eldebba,EDB,SD,POINT (30.959722 18.013889),734,,HSDB,Ad Dabbah,,Northern State
+EDQ,America/Tegucigalpa,Erandique,EDQ,HN,POINT (-88.3925018 14.2569437),3838,,MHGU,Erandique,,Lempira
+EJT,Pacific/Majuro,Enijet,EJT,MH,POINT (171.95 6.083333),0,,"",,,
+ELF,Africa/Khartoum,El Fasher Airport,ELF,SD,POINT (25.32711263900582 13.6133482),2368,,HSFS,El Fasher,,Northern Darfur
+EYL,Africa/Bamako,Yelimane,EYL,ML,POINT (-10.568124022412686 15.1232036),324,,GAYE,Yelimane,,Kayes
+FRR,America/New_York,Front Royal-Warren County,FRR,US,POINT (-78.2547337875 38.91737455),682,,KFRR,Front Royal,Warren County,Virginia
+FRS,America/Guatemala,Santa Elena Airport,FRS,GT,POINT (-89.88333 16.916668),410,,MGMM,Flores,Municipio de Flores,Peten
+FRT,America/Santiago,Frutillar,FRT,CL,POINT (-73.06417233013931 -41.129892),479,,SCEV,Frutillar,Provincia de Llanquihue,Los Lagos
+FRU,Asia/Bishkek,Manas International Airport,FRU,KG,POINT (74.46359489585606 43.0581795),2073,,UCFM,Bishkek,,Chuy
+FRW,Africa/Gaborone,Francistown Airport,FRW,BW,POINT (27.471582024432315 -21.15918875),3264,,FBFT,Francistown,,North East
+FRY,America/New_York,Fryeburg,FRY,US,POINT (-70.94755088747952 43.9900665),403,,KIZG,Fryeburg,Oxford County,Maine
+FRZ,Europe/Berlin,Fritzlar Airbase,FRZ,DE,POINT (9.266667 51.11667),570,,ETHF,Fritzlar,,Hesse
+FSC,Europe/Paris,Sud Corse Airport,FSC,FR,POINT (9.098223 41.498634),59,,LFKF,Bonifacio,Departement de la Corse-du-Sud,Corsica
+FSD,America/Chicago,Sioux Falls Regional Airport (Joe Foss Field),FSD,US,POINT (-96.73115 43.580296),1430,http://www.sfairport.com/,KFSD,Sioux Falls,Minnehaha County,South Dakota
+FSK,America/Chicago,Municipal,FSK,US,POINT (-94.7 37.833332),846,http://www.fscity.org/index.php?option=com_content&view=article&id=98&Itemid=195,KFSK,Fort Scott,Bourbon County,Kansas
+FSM,America/Chicago,Fort Smith Regional Airport,FSM,US,POINT (-94.35697826263008 35.3392525),436,,KFSM,Barling,Sebastian County,Arkansas
+FSN,America/Chicago,Haley AAF,FSN,US,POINT (-87.96667 42.15),669,,,Buffalo Grove,Cook County,Illinois
+YAZ,America/Vancouver,Tofino Airport,YAZ,CA,POINT (-125.77932069107595 49.08161545),62,http://www.acrd.bc.ca/long-beach-airport,CYAZ,,,
+DNX,Africa/Khartoum,Galegu,DNX,SD,POINT (33.066666 14.1),1440,,HSGG,Kinana,,Sinnar
+YAL,America/Vancouver,Alert Bay,YAL,CA,POINT (-126.91651160241355 50.5825431),206,,CYAL,,,
+EBD,Africa/Khartoum,El Obeid,EBD,SD,POINT (30.23172170483516 13.14999945),1814,,HSOB,El Obeid,,Shamal Kurdufan
+YBE,America/Regina,Uranium City,YBE,CA,POINT (-108.48303238506128 59.56092115),1013,,CYBE,,,
+YBS,America/Toronto,Musselwhite,YBS,CA,POINT (-90.3746927 52.6081293),980,,CKM8,,,
+YBL,America/Vancouver,Campbell River Airport,YBL,CA,POINT (-125.27572028227023 49.9540995),291,,CYBL,,,
+JUV,America/Godthab,Heliport,JUV,GL,POINT (-56.150833 72.78528),414,,BGUK,,,
+WOA,Pacific/Port_Moresby,Wonenara,WOA,PG,POINT (145.89236349345992 -6.79699265),4993,,AYWO,,,
+UVA,America/Chicago,Garner Field,UVA,US,POINT (-99.74200497745827 29.2124834),915,http://uvaldeflightcenter.com/,KUVA,Uvalde,Uvalde County,Texas
+UVE,Pacific/Noumea,Ouvea Airport,UVE,NC,POINT (166.57158652129007 -20.639107199999998),36,,NWWV,Fayaoue,Ouvea,Loyalty Islands
+UVF,America/St_Lucia,Hewanorra Airport,SLU,LC,POINT (-60.95388420129784 13.7342774),42,http://www.slaspa.com/contentPages/view/hewanorra-international-airport,TLPL,Vieux Fort,,Vieux-Fort
+UVL,Africa/Cairo,Kharga,UVL,EG,POINT (30.5859709913301 25.46922955),173,,HEKG,Al Kharijah,,Muhafazat al Wadi al Jadid
+UZC,Europe/Belgrade,Uzice-Ponikve,UZC,RS,POINT (19.682303078044633 43.8993239),2988,,,Bajina Basta,Zlatiborski Okrug,Central Serbia
+WWD,America/New_York,Cape May County,WWD,US,POINT (-74.9080999 39.0080873),29,,KWWD,Erma,Cape May County,New Jersey
+VAM,Indian/Maldives,Villa International Airport Maamigili,VAM,MV,POINT (72.83512809829097 3.4717292),0,,VRMV,Mahibadhoo,,North Central
+VAS,Europe/Istanbul,Sivas Airport,VAS,TR,POINT (36.89970901198242 39.8128659),5187,http://www.sivas.dhmi.gov.tr/havaalanlari/default.aspx?hv=35,LTAR,Sivas,,Sivas
+VAV,Pacific/Tongatapu,Lupepau'u Airport,VAV,TO,POINT (-173.9637047315632 -18.58558155),262,,NFTV,Neiafu,,Vava`u
+VBA,Asia/Rangoon,Ann,VBA,MM,POINT (94.02635921340655 19.7704774),29,,VYAN,Minbu,,Magway
+VBC,Asia/Yangon,Mandalay Chanmyathazi Airport,VBC,MM,POINT (96.08892957340962 21.9368685),157,,,Mandalay,,Mandalay
+VBP,Asia/Rangoon,Bokpyin Airport,VBP,MM,POINT (98.7363448190028 11.14878895),65,,VYBP,Tha Sae,,Chumphon
+VBS,Europe/Rome,Montichiari Airport,VRN,IT,POINT (10.328465676993805 45.4279922),305,http://www.aeroportobrescia.it/en/business_t6/,LIPO,Vighizzolo,Provincia di Brescia,Lombardy
+VBY,Europe/Stockholm,Visby Airport,VBY,SE,POINT (18.34705855149554 57.66543765),78,https://www.swedavia.com/visby/,ESSV,Visby,Gotland,Gotland
+EGN,Africa/Khartoum,Geneina Airport,EGN,SD,POINT (22.469444 13.4875),2598,,HSGN,Geneina,,Western Darfur
+FSZ,Asia/Tokyo,Shizuoka Airport,FSZ,JP,POINT (138.18413707216476 34.796503799999996),383,http://www.mtfuji-shizuokaairport.jp/english/index.html,RJNS,Shimada,,Shizuoka
+FTK,America/Chicago,Godman AAF,FTK,US,POINT (-85.95 37.9),770,,KFTK,Fort Knox,Hardin County,Kentucky
+YFR,America/Yellowknife,Fort Resolution,YFR,CA,POINT (-113.690002 61.1808014),526,,CYFR,,,
+JVA,Indian/Antananarivo,Ankavandra,JVA,MG,POINT (45.2739652 -18.805817),427,,FMMK,,,
+FTU,Indian/Antananarivo,Marillac Airport,FTU,MG,POINT (46.95019958578181 -25.04204875),32,,FMSD,Fort Dauphin,,Anosy
+FTX,Africa/Brazzaville,Owando,FTX,CG,POINT (16.008333 -0.983333),1059,,FCOO,Owando,,Cuvette
+FTY,America/New_York,Fulton County,ATL,US,POINT (-84.51667 33.783333),803,http://www.fultoncountyga.gov/component/content/article/223-general-services/2098-fulton-county-airport-brown-field,KFTY,Mableton,Cobb County,Georgia
+FUE,Atlantic/Canary,Fuerteventura Airport,FUE,ES,POINT (-13.866147581598085 28.447124199999998),45,,GCFV,Puerto del Rosario,Provincia de Las Palmas,Canary Islands
+FUG,Asia/Shanghai,Fuyang Airport,FUG,CN,POINT (115.73542956188618 32.87931785),104,,ZSFY,Fuyang,,Anhui Sheng
+FUJ,Asia/Tokyo,Fukue Airport,FUJ,JP,POINT (128.8329748928134 32.666393850000006),190,,RJFE,Fukuecho,,Nagasaki
+FUK,Asia/Tokyo,Fukuoka Airport,FUK,JP,POINT (130.44739386660302 33.586802),32,http://www.fuk-ab.co.jp/english/frame_index.html,RJFF,Fukuoka-shi,,Fukuoka
+FUL,America/Los_Angeles,Municipal,FUL,US,POINT (-117.975 33.86667),82,http://www.cityoffullerton.com/depts/airport/,KFUL,Buena Park,Orange County,California
+FUM,Pacific/Port_Moresby,Fuma,FUM,PG,POINT (142.43981673417176 -6.393814949999999),462,,AYFU,,,
+VCD,Australia/Darwin,Victoria River Downs,VCD,AU,POINT (131.0049744 -16.4021244),285,,YVRD,Katherine,Katherine,Northern Territory
+VCP,America/Sao_Paulo,Viracopos Airport,SAO,BR,POINT (-47.1418432690333 -23.00605625),2096,,SBKP,Indaiatuba,Indaiatuba,Sao Paulo
+VDH,Asia/Ho_Chi_Minh,Dong Hoi Airport,VDH,VN,POINT (106.5933951536215 17.512602800000003),39,,VVDH,Kwang Binh,,Quang Binh
+VDS,Europe/Oslo,Vadso Airport,VDS,NO,POINT (29.846431239541218 70.0649621),91,https://avinor.no/en/airport/vadso-airport/,ENVD,Vadso,Vadso,Finnmark Fylke
+FUN,Pacific/Funafuti,Funafuti Atol International Airport,FUN,TV,POINT (179.20833 -8.516667),0,,NGFU,Fakaifou Village,,Funafuti
+FUO,Asia/Shanghai,Fuoshan Airport,FUO,CN,POINT (113.28333 23.133333),62,,ZGFS,Guangzhou,,Guangdong
+FUT,Pacific/Wallis,Futuna Island,FUT,WF,POINT (-178.15 -14.25),0,,NLWF,Sigave,,Circonscription de Sigave
+FVM,Indian/Maldives,Fumawula,FVM,MV,POINT (73.43278 -0.309444),26,,VRMR,Fuvahmulah,,Gnyaviyani Atoll
+FWA,America/Indiana/Indianapolis,Fort Wayne International Airport,FWA,US,POINT (-85.18791163159256 40.9798288),790,https://fwairport.com/,KFWA,Ossian,Wells County,Indiana
+VDY,Asia/Kolkata,Jindal,VDY,IN,POINT (76.6334746 15.1743056),1656,,VOJV,Sandur,Bellary,Karnataka
+KDE,Pacific/Port_Moresby,Koroba,KDE,PG,POINT (142.7444630326167 -5.6954202),5638,,AYOW,,,
+KBD,Australia/Perth,Kimberley Downs,KBD,AU,POINT (124.35 -17.333332),0,,"",,,
+MOS,America/Anchorage,Intermediate,MOS,US,POINT (-162.04333 64.69556),39,,,,,
+YHS,America/Vancouver,Sechelt,YHS,CA,POINT (-123.7249873 49.4617472),340,,CAP3,,,
+VEY,Atlantic/Reykjavik,Vestmannaeyjar,VEY,IS,POINT (-20.278156148378084 63.42546055),0,,BIVM,Vestmannaeyjar,,South
+VGA,Asia/Kolkata,Vijayawada Airport,VGA,IN,POINT (80.79127464592091 16.52364325),59,https://www.aai.aero/en/airports/vijayawada,VOBZ,Gannavaram,Krishna,Andhra Pradesh
+VGD,Europe/Moscow,Vologda Airport,VGD,RU,POINT (39.939323172224164 59.28111415),377,,ULWW,Vologda,,Vologda
+VGO,Europe/Madrid,Vigo Airport,VGO,ES,POINT (-8.626166079129476 42.232922450000004),833,,LEVX,Redondela,Provincia de Pontevedra,Galicia
+VHY,Europe/Paris,Charmeil,VHY,FR,POINT (3.4031454015741196 46.1702041),777,,LFLV,Creuzier-le-Vieux,Departement de l'Allier,Auvergne
+KBG,Africa/Kampala,Kabalega Falls,KBG,UG,POINT (31.49639 2.329444),0,,,,,
+VIH,America/Chicago,Rolla National,VIH,US,POINT (-91.7696061 38.1278213),1115,http://www.rollacity.org/airport/airport.shtml,KVIH,Belle,Maries County,Missouri
+VIJ,America/Tortola,Virgin Gorda Airport,VIJ,VG,POINT (-64.4279001888192 18.4466072),36,,TUPW,Tortola,,
+VIL,Africa/Casablanca,Dakhla Airport,VIL,MA,POINT (-15.927466161127052 23.724744049999998),42,,GMMH,Dakhla,,Oued Ed-Dahab-Lagouira
+VIQ,Asia/Dili,Viqueque,VIQ,TL,POINT (126.37425064703558 -8.885402899999999),72,,WPVQ,Viqueque,,Viqueque
+VIS,America/Los_Angeles,Visalia,VIS,US,POINT (-119.39042842451215 36.3161377),249,,KVIS,Goshen,Tulare County,California
+VLD,America/New_York,Valdosta Regional Airport,VLD,US,POINT (-83.2780341085929 30.77831025),167,,KVLD,Valdosta,Lowndes County,Georgia
+VLK,Europe/Moscow,Volgodonsk,VLK,RU,POINT (42.07608291596857 47.6788908),232,,URRQ,Tsimlyansk,,Rostov
+VLL,Europe/Madrid,Valladolid Airport,VLL,ES,POINT (-4.854374275220002 41.706834349999994),2772,,LEVD,Villanubla,Provincia de Valladolid,Castille and Leon
+VLN,America/Caracas,Arturo Michelena International Airport,VLN,VE,POINT (-67.92881547478783 10.151676850000001),1433,,SVVA,Los Guayos,Municipio Los Guayos,Carabobo
+VLR,America/Santiago,Vallenar,VLR,CL,POINT (-70.75508240859287 -28.596016),1771,,SCLL,Vallenar,Provincia de Huasco,Atacama
+VLU,Europe/Moscow,Velikiye Luki,VLU,RU,POINT (30.603672872051018 56.38057965),318,,ULOL,Velikiye Luki,,Pskov
+KBQ,Africa/Blantyre,Kasungu,KBQ,MW,POINT (33.468218990157354 -13.014691299999999),3470,,FWKG,,,
+EKE,America/Guyana,Ekereku,EKE,GY,POINT (-59.88333 5.916667),314,,,,,
+VLY,Europe/London,Anglesey Airport,VLY,GB,POINT (-4.536680520802992 53.248175),39,http://www.angleseyairport.com/,EGOV,Valley,Anglesey,Wales
+FYN,Asia/Shanghai,Fuyun Koktokay Airport,FYN,CN,POINT (89.51329957121251 46.8037006),3038,,ZWFY,Kalatongke,,Xinjiang Uygur Zizhiqu
+FYV,America/Chicago,Municipal (Drake Field),FYV,US,POINT (-94.17 36.003613),1194,,KFYV,Greenland,Washington County,Arkansas
+YIF,America/Blanc-Sablon,Pakuashipi,YIF,CA,POINT (-58.65734963137882 51.209919549999995),20,,CYIF,,,
+GAA,America/Bogota,Guamal,GAA,CO,POINT (-74.233333 9.15),88,,,Guamal,,Magdalena
+GAC,America/Tegucigalpa,Gracias,GAC,HN,POINT (-88.59389 14.596667),2703,,MHGS,Gracias,,Lempira
+GAD,America/Chicago,Municipal,GAD,US,POINT (-86.08722 33.97361),531,http://www.nealair.com/,KGAD,Attalla,Etowah County,Alabama
+GAG,America/Chicago,Gage,GAG,US,POINT (-99.88333 36.35),2404,,KGAG,Shattuck,Ellis County,Oklahoma
+GAH,Australia/Brisbane,Gayndah,GAH,AU,POINT (151.48334 -25.433332),465,,YGAY,Gayndah,North Burnett,Queensland
+GAI,America/New_York,Montgomery County,GAI,US,POINT (-77.2 39.15),505,http://www.montgomerycountyairpark.com/,KGAI,Gaithersburg,Montgomery County,Maryland
+KAP,Africa/Lubumbashi,Kapanga,KAP,CD,POINT (22.666668 -8.5),3025,,FZSK,,,
+GAJ,Asia/Tokyo,Junmachi Airport,GAJ,JP,POINT (140.36583 38.410645),308,,RJSC,Higashine,,Yamagata
+GAM,America/Nome,Gambell Airport,GAM,US,POINT (-171.73268001027537 63.7663034),0,,PAGM,,,
+GAN,Indian/Maldives,Gan/Seenu Airport,GAN,MV,POINT (73.15654 -0.690003),0,http://www.airports.com.mv/domestic/gan.htm,VRMG,Hithadhoo,,South Province
+GAS,Africa/Nairobi,Garissa,GAS,KE,POINT (39.64902376499191 -0.4658059),544,,HKGA,,,
+GAW,Asia/Rangoon,Gangaw,GAW,MM,POINT (94.1336688 22.1750007),705,,VYGG,Hakha,,Chin
+GAY,Asia/Kolkata,Gaya Airport,GAY,IN,POINT (84.94583 24.746668),383,,VEGY,Bodh Gaya,Gaya,Bihar
+GBA,Pacific/Efate,Big Bay,GBA,VU,POINT (166 -15),0,http://www.cotswoldairport.com/,EGBP,,,
+GBB,Asia/Baku,Gabala International Airport,GBB,AZ,POINT (47.4245 40.4936),19,,UBBQ,Agdas,,Agdas
+GBD,America/Chicago,Great Bend,GBD,US,POINT (-98.8503743 38.3472526),1876,,KGBD,Great Bend,Barton County,Kansas
+GBE,Africa/Gaborone,Sir Seretse Khama International Airport,GBE,BW,POINT (25.924967923222077 -24.5533921),3274,,FBSK,Mmopone,,Kweneng
+GBI,America/Nassau,Auxiliary Airfield,GBI,BS,POINT (-78.5 26.666668),22,,MYGM,Lucaya,,Freeport
+GFR,Europe/Paris,Granville,GFR,FR,POINT (-1.566667 48.88333),49,,LFRF,Donville-les-Bains,Departement de la Manche,Lower Normandy
+GFY,Africa/Windhoek,Grootfontein,GFY,NA,POINT (18.1252746 -19.5968074),4576,,FYGF,Grootfontein,,Otjozondjupa
+GGC,Africa/Luanda,Lumbala,GGC,AO,POINT (22.566668 -12.65),3569,,FNBL,Zambezi,,North-Western
+GGE,America/New_York,Georgetown,GGE,US,POINT (-79.28333 33.38333),32,http://www.georgetowncountyairport.com/,KGGE,Georgetown,Georgetown County,South Carolina
+GGG,America/Chicago,Gregg County Airport,GGG,US,POINT (-94.71366357672933 32.38381895),344,,KGGG,Longview,Gregg County,Texas
+GGL,America/Bogota,Gilgal,GGL,CO,POINT (-77.083336 8.333333),0,,"",Acandi,,Choco
+VND,Indian/Antananarivo,Vangaindrano,VND,MG,POINT (47.5818934 -23.350713),39,,FMSU,Vangaindrano,,Atsimo-Atsinanana
+VNY,America/Los_Angeles,Van Nuys Airport,LAX,US,POINT (-118.49014837369748 34.20713175),725,,KVNY,Northridge,Los Angeles County,California
+VOG,Europe/Volgograd,Volgograd International Airport,VOG,RU,POINT (44.347290075526445 48.78335465),462,,URWW,Gumrak,,Volgograd
+VOH,Indian/Antananarivo,Vohemar,VOH,MG,POINT (50.0000818 -13.3721237),19,,FMNV,Sambava,,Sava
+VOZ,Europe/Moscow,Voronezh Airport,VOZ,RU,POINT (39.221421059214435 51.8151081),505,,UUOO,Podgornoye,,Voronezj
+VRB,America/New_York,Vero Beach Municipal Airport,VRB,US,POINT (-80.41832980247389 27.657214949999997),52,http://verobeachairport.org/,KVRB,Vero Beach,Indian River County,Florida
+VRC,Asia/Manila,Virac Airport,VRC,PH,POINT (124.20444774204489 13.57660885),85,,RPUV,Calatagan,Province of Catanduanes,Bicol
+VTE,Asia/Vientiane,Wattay International Airport,VTE,LA,POINT (102.56389705740517 17.9866469),501,http://www.vientianeairport.com/,VLVT,Si Chiang Mai,,Nong Khai
+VTG,Asia/Ho_Chi_Minh,Vung Tau,VTG,VN,POINT (107.09622577687115 10.37630815),39,,VVVT,Vung Tau,,Ba Ria-Vung Tau
+VUP,America/Bogota,Valledupar Airport,VUP,CO,POINT (-73.24902965045095 10.4354221),410,,SKVP,Valledupar,,Cesar
+VVB,Indian/Antananarivo,Mahanoro,VVB,MG,POINT (48.7999442 -19.8329851),32,,FMMH,Mahanoro,,Atsinanana
+VVI,America/La_Paz,Viru Viru International Airport,SRZ,BO,POINT (-63.13846624460784 -17.6594809),1236,,SLVR,La Belgica,,Santa Cruz
+VXC,Africa/Maputo,Lichinga Airport,VXC,MZ,POINT (35.258074917828395 -13.274676),4478,,FQLC,Lichinga,,Niassa
+VXE,Atlantic/Cape_Verde,Cesaria Evora International Airport,VXE,CV,POINT (-25.055170870134756 16.8345053),88,,GVSV,Mindelo,,Sao Vicente
+AVW,America/Phoenix,Avra Valley,TUS,US,POINT (-111.21748791631757 32.4113732),2004,,KAVQ,Marana,Pima County,Arizona
+COB,Australia/Darwin,Coolibah,COB,AU,POINT (130.9620056 -15.5482998),101,,"",,,
+VXO,Europe/Stockholm,Vaxjo Airport,VXO,SE,POINT (14.72916420418904 56.928141749999995),570,,ESMX,Vaexjoe,Vaxjo Kommun,Kronoberg
+YCY,America/Iqaluit,Clyde River,YCY,CA,POINT (-68.5 70.416664),87,,CYCY,,,
+VYD,Africa/Johannesburg,Vryheid,VYD,ZA,POINT (30.79519172870966 -27.78928405),3766,,FAVY,Vryheid,Zululand District Municipality,KwaZulu-Natal
+WHA,Asia/Shanghai,Wuhu Xuanzhou Airport,WHA,CN,POINT (118.66472096651194 31.10427305),68,,,Xinfeng,,Anhui Sheng
+FUB,Pacific/Port_Moresby,Fulleborn,FUB,PG,POINT (150.65 -6.066667),1715,,"",,,
+WHK,Pacific/Auckland,Whakatane Airport,WHK,NZ,POINT (176.9146790652377 -37.92149575),29,,NZWK,Whakatane,Whakatane District,Bay of Plenty
+GBJ,America/Guadeloupe,Les Bases,GBJ,GP,POINT (-61.266666 15.866667),0,,TFFM,Grand-Bourg,Guadeloupe,Guadeloupe
+GBK,Africa/Freetown,Gbangbatok,GBK,SL,POINT (-12.377632906257602 7.81271795),167,,GFGK,Mogbwemo,,Southern Province
+GBR,America/New_York,Walter J. Koladza Airport,GBR,US,POINT (-73.40333226677501 42.18405305),695,http://greatbarringtonairport.com/,KGBR,Great Barrington,Berkshire County,Massachusetts
+GBS,Pacific/Auckland,Port Fitzroy,GBS,NZ,POINT (175.33333 -36.13333),45,,,,,
+GBU,Africa/Khartoum,Khashm El Girba,GBU,SD,POINT (35.8779984 14.9250002),1581,,HSKG,,,
+GCH,Asia/Tehran,Gachsaran,GCH,IR,POINT (50.833620327200975 30.33416055),2404,,OIAH,Dogonbadan,,Kohgiluyeh va Buyer Ahmad
+WHO,Pacific/Auckland,Franz Josef,WHO,NZ,POINT (170.1803436 -43.36951),400,,NZFJ,Hokitika,Westland District,West Coast
+GCK,America/Chicago,Garden City Municipal Airport,GCK,US,POINT (-100.72972 37.92861),2883,,KGCK,Garden City,Finney County,Kansas
+WMT,Asia/Shanghai,Zunyi Maotai Airport,WMT,CN,POINT (106.43593156796578 27.956382650000002),4019,,ZUMT,Daba,,Guizhou Sheng
+GCM,America/Cayman,Owen Roberts International Airport,GCM,KY,POINT (-81.35854363791051 19.292621150000002),32,,MWCR,George Town,,
+WNI,Asia/Makassar,Matahora Airport,WNI,ID,POINT (123.63676547709963 -5.2908854000000005),42,,WAWD,Katabu,,Sulawesi Tenggara
+WFB,America/Sitka,Waterfront SPB,KTN,US,POINT (-131.66833 55.358055),1279,,"",,,
+GCV,America/Sao_Paulo,Gravatai,GCV,BR,POINT (-50.994167 -29.941668),127,,,Gravatai,Gravatai,Rio Grande do Sul
+GCW,America/Phoenix,Grand Canyon West,GCW,US,POINT (-113.9495 36.07211),4173,,K1G4,Meadview,Mohave County,Arizona
+GCY,America/New_York,Municipal,GCY,US,POINT (-82.85 36.216667),1272,http://www.greenevilleaviation.com/,KGCY,Greeneville,Greene County,Tennessee
+GDC,America/New_York,Donaldson Center,GSP,US,POINT (-82.35 34.8),895,,KGYH,Mauldin,Greenville County,South Carolina
+GDE,Africa/Addis_Ababa,Gode/Iddidole Airport,GDE,ET,POINT (43.628334 5.902222),908,,HAGO,Yeed,,Bakool
+GDG,Asia/Yakutsk,Magdagachi,GDG,RU,POINT (125.79374691860171 53.47645795),1210,,UHBI,Magdagachi,,Amur
+GDH,America/Anchorage,Golden Horn Lodge SPB,GDH,US,POINT (-158.16667 59.716667),413,,"3Z8",,,
+GDJ,Africa/Lubumbashi,Gandajika,GDJ,CD,POINT (23.966667 -6.766667),2477,,FZWC,,,
+GDL,America/Mexico_City,Don Miguel Hidal Y Costilla International Airport,GDL,MX,POINT (-103.29921 20.525198),5009,,MMGL,El Quince,,Jalisco
+GDM,America/New_York,Municipal,GDM,US,POINT (-71.98333 42.566666),1033,,KGDM,Gardner,Worcester County,Massachusetts
+GDN,Europe/Warsaw,Gdansk Lech Walesa Airport,GDN,PL,POINT (18.468655 54.380978),442,http://www.airport.gdansk.pl/,EPGD,Banino,Powiat kartuski,Pomeranian Voivodeship
+GGM,Africa/Nairobi,Kakamega Airport,GGM,KE,POINT (34.787255666880995 0.27144975),5029,,HKKG,Kakamega,,Kakamega
+GGN,Africa/Abidjan,Gagnoa,GGN,CI,POINT (-5.933333 6.133333),554,,DIGA,Gagnoa,,Fromager
+GGO,Africa/Abidjan,Guiglo,GGO,CI,POINT (-7.75 6.333333),711,,DIGL,Guiglo,,Dix-Huit Montagnes
+GGR,Africa/Mogadishu,Garoe,GGR,SO,POINT (48.333332 8.283333),1893,,HCMW,,,
+GGS,America/Argentina/Rio_Gallegos,Gobernador Gregores,GGS,AR,POINT (-70.25 -48.766666),905,,SAWR,Gobernador Gregores,,Santa Cruz
+WTK,America/Anchorage,Noatak,WTK,US,POINT (-162.9729713 67.5662264),55,,PAWN,Kotzebue,Northwest Arctic Borough,Alaska
+WTP,Pacific/Port_Moresby,Woitape,WTP,PG,POINT (147.25395091465032 -8.54772455),5144,,AYWT,Kokoda,Sohe,Northern Province
+WBM,Pacific/Port_Moresby,Wapenamanda Airport,WBM,PG,POINT (143.8922603983255 -5.635423599999999),5889,,AYWD,,,
+WAI,Indian/Antananarivo,Antsohihy,WAI,MG,POINT (47.95 -14.916667),229,,FMNW,,,
+WTS,Indian/Antananarivo,Tsiroanomandidy,WTS,MG,POINT (46.0511898 -18.7633668),2719,,FMMX,Tsiroanomandidy,,Bongolava
+WTZ,Pacific/Auckland,Whitianga,WTZ,NZ,POINT (175.68306307022814 -36.8286352),26,,NZWT,Whitianga,Thames-Coromandel District,Waikato
+WUA,Asia/Shanghai,Wuhai Airport,WUA,CN,POINT (106.80162442724838 39.79309335),3566,,ZBUH,Wuhai,,Inner Mongolia
+WUI,Australia/Perth,Murrin Murrin Airport,WUI,AU,POINT (121.89100406989175 -28.7040187),1541,,YMMI,Kalgoorlie,Kalgoorlie/Boulder,Western Australia
+WUM,Pacific/Port_Moresby,Wasum,WUM,PG,POINT (149.33863657437524 -6.04938985),150,,AYZM,Kandrian,,West New Britain
+YMD,America/Rankin_Inlet,Mould Bay,YMD,CA,POINT (-119.5 76.25),30,,"",,,
+WUT,Asia/Shanghai,Xinzhou Wutaishan Airport,WUT,CN,POINT (112.97622810790583 38.599099800000005),2539,,ZBXZ,Jinchang,,Shanxi Sheng
+WUV,Pacific/Port_Moresby,Wuvulu Island,WUV,PG,POINT (142.83592570294093 -1.73585645),42,,AYVW,Aitape,,Sandaun
+GDO,America/Caracas,Vare Maria,GDO,VE,POINT (-70.8 7.233333),429,,SVGD,Guasdualito,,Apure
+YNO,America/Winnipeg,North Spirit Lake,YNO,CA,POINT (-92.416664 52.5),1082,,CKQ3,,,
+WUX,Asia/Shanghai,Sunan Shuofang International Airport,WUX,CN,POINT (120.43007861805665 31.4984408),32,,ZSWX,Shuofang,,Jiangsu Sheng
+GDP,America/Fortaleza,Guadalupe,GDP,BR,POINT (-43.58167 -6.781944),570,,SNGD,Sao Joao dos Patos,Sao Joao Dos Patos,Maranhao
+GDQ,Africa/Addis_Ababa,Gondar Airport,GDQ,ET,POINT (37.431602248601635 12.51886),6459,,HAGN,Gondar,,Amhara
+GDV,America/Denver,Dawson Community Airport,GDV,US,POINT (-104.80864332732662 47.13812935),2460,,KGDV,West Glendive,Dawson County,Montana
+WUZ,Asia/Shanghai,Changzhoudao,WUZ,CN,POINT (111.24874690075387 23.4573358),118,,ZGWZ,Longxu,,Guangxi Zhuangzu Zizhiqu
+GDW,America/Detroit,Gladwin,GDW,US,POINT (-84.4754327 43.9708308),767,http://www.gladwin.org/airport/airport.htm,KGDW,Gladwin,Gladwin County,Michigan
+CEH,Africa/Blantyre,Chelinda,CEH,MW,POINT (33.7979301 -10.5575399),7726,,FWCD,Livingstonia,Rumphi District,Northern Region
+WWK,Pacific/Port_Moresby,Boram Airport,WWK,PG,POINT (143.66909229313853 -3.5802372),29,,AYWK,Wewak,Wewak,East Sepik
+YWA,America/Toronto,Petawawa,YWA,CA,POINT (-77.28333 45.9),427,,CYWA,,,
+CPI,Pacific/Port_Moresby,Cape Orford,CPI,PG,POINT (152.0807731606676 -5.44872185),26,,"",,,
+WWR,America/Chicago,West Woodward,WWR,US,POINT (-99.52612982581888 36.436084550000004),2181,http://www.cityofwoodward.com/airport-89/,KWWR,Woodward,Woodward County,Oklahoma
+CTS,Asia/Tokyo,New Chitose Airport,SPK,JP,POINT (141.68295976251358 42.786787000000004),62,http://www.new-chitose-airport.jp/language/english/,RJCC,Chitose,,Hokkaido
+CTT,Europe/Paris,Le Castellet,CTT,FR,POINT (5.782726668745948 43.2522806),1351,,LFMQ,Le Castellet,Departement du Var,Provence-Alpes-Cote d'Azur
+CTY,America/New_York,Cross City,CTY,US,POINT (-83.10488329268765 29.63640735),68,,KCTY,Cross City,Dixie County,Florida
+WOR,Indian/Antananarivo,Moramba,WOR,MG,POINT (47.283333 -14.883333),0,,,,,
+CUC,America/Bogota,Camilo Daza International Airport,CUC,CO,POINT (-72.51151602924828 7.92892685),1040,,SKCC,Cucuta,,Norte de Santander
+CUF,Europe/Rome,Levaldigi Airport,CUF,IT,POINT (7.623336248505572 44.54739375),1253,http://www.aeroporto.cuneo.it/,LIMZ,Centallo,Provincia di Cuneo,Piedmont
+CXH,America/Vancouver,Coal Harbour Sea Plane Base,YVR,CA,POINT (-123.11667 49.266666),82,,CYHC,,,
+WXN,Asia/Shanghai,Wanxian Airport,WXN,CN,POINT (108.43117732034935 30.801388600000003),1774,,ZUWX,Wuqiao,,Chongqing Shi
+GDX,Asia/Magadan,Magadan Airport,GDX,RU,POINT (150.72149352389195 59.9147712),554,,UHMM,Sokol,,Magadan
+WYA,Australia/Adelaide,Whyalla Airport,WYA,AU,POINT (137.50974861152625 -33.057068650000005),36,,YWHA,Whyalla,Whyalla,South Australia
+XPP,America/Winnipeg,Poplar River,XPP,CA,POINT (-97.273715983906 52.99613225),685,,CZNG,,,
+YAC,America/Winnipeg,Cat Lake,YAC,CA,POINT (-91.82639809412494 51.72729395),1345,,CYAC,,,
+WNN,America/Winnipeg,Wunnummin Lake Airport,WNN,CA,POINT (-89.166664 52.916668),800,,CKL3,,,
+GDZ,Europe/Moscow,Gelendzik Airport,GDZ,RU,POINT (38.01254026690559 44.5817785),121,http://basel.aero/en/gelendjik/,URKG,Gelendzhik,,Krasnodarskiy
+GEA,Pacific/Noumea,Noumea Magenta Airport,NOU,NC,POINT (166.47299068887037 -22.25761285),32,,NWWM,Noumea,Noumea,South Province
+YBK,America/Rankin_Inlet,Baker Lake,YBK,CA,POINT (-96.07822306058817 64.2995541),45,,CYBK,,,
+GEB,Asia/Jayapura,Gebe,GEB,ID,POINT (129.41667 0.083333),0,,WAMJ,Petani,,Maluku Utara
+GED,America/New_York,Sussex County,GED,US,POINT (-75.35956548781664 38.6898781),72,https://www.sussexcountyde.gov/about/airport/,KGED,Georgetown,Sussex County,Delaware
+GEG,America/Los_Angeles,Spokane International Airport,GEG,US,POINT (-117.54236665513882 47.620044050000004),2342,http://www.spokaneairports.net/,KGEG,Airway Heights,Spokane County,Washington
+GEL,America/Sao_Paulo,Sepe Tiaraju,GEL,BR,POINT (-54.165611958794074 -28.28341965),1013,,SBNM,Santo Angelo,Santo Angelo,Rio Grande do Sul
+GGT,America/Nassau,Exuma International Airport,GGT,BS,POINT (-75.87650228984003 23.5624053),42,,MYEF,George Town,,Exuma
+GGW,America/Denver,Glasgow International Airport,GGW,US,POINT (-106.615555 48.212776),2263,http://www.glasgowmtairport.com/,KGGW,Glasgow,Valley County,Montana
+LNG,Pacific/Port_Moresby,Lese,LNG,PG,POINT (146.11667 -8.166667),62,,AYLS,,,
+YBT,America/Winnipeg,Brochet,YBT,CA,POINT (-101.67757557904116 57.8904941),1089,,CYBT,,,
+WBO,Indian/Antananarivo,Beroroha,WBO,MG,POINT (45.13333 -21.6),879,,FMSB,,,
+KLL,America/Anchorage,Levelock,KLL,US,POINT (-156.86113347994 59.12690265),39,,"9Z8",,,
+WML,Indian/Antananarivo,Malaimbandy,WML,MG,POINT (45.5425319 -20.3557542),528,,FMMC,,,
+WLR,America/Sitka,Loring,WLR,US,POINT (-131.66667 55.666668),1876,,"13Z",,,
+WPL,America/Vancouver,Powell Lake,WPL,CA,POINT (-124.4 50.183334),216,,CAQ8,,,
+YBG,America/Montreal,Saguenay-Bagotville Airport,YBG,CA,POINT (-70.99492946501087 48.331432500000005),501,,CYBG,,,
+YAH,America/Montreal,Lagrande 4,YAH,CA,POINT (-73.65 53.75),1066,,CYAH,,,
+VCT,America/Chicago,County-Foster,VCT,US,POINT (-96.914444 28.85111),85,,KVCT,Victoria,Victoria County,Texas
+VCV,America/Los_Angeles,Southern California Logistics,VCV,US,POINT (-117.3 34.533333),2831,http://www.logisticsairport.com/page.aspx?pgid=3,KVCV,Victorville,San Bernardino County,California
+VDA,Asia/Jerusalem,Ovda Airport,ETH,IL,POINT (34.9339 29.952015),1417,,LLOV,Eilat,,Southern District
+VDB,Europe/Oslo,Valdres Lufthavn Leirin,VDB,NO,POINT (9.333333 61.083332),2979,https://avinor.no/en/airport/fagernes-airport/,ENFG,Fagernes,Nord-Aurdal,Oppland
+VDE,Atlantic/Canary,Hierro Airport,VDE,ES,POINT (-17.884937 27.813969),59,,GCHI,Valverde,Provincia de Santa Cruz de Tenerife,Canary Islands
+VEV,Pacific/Guadalcanal,Barakoma,VEV,SB,POINT (159.55 -7.85),0,,AGBA,Buala,,Isabel
+VAI,Pacific/Port_Moresby,Vanimo Airport,VAI,PG,POINT (141.30212067449594 -2.69197705),32,,AYVN,Vanimo,,Sandaun
+VDC,America/Bahia,Vitoria Da Conquista Airport,VDC,BR,POINT (-40.862788613186495 -14.86450825),2916,,SBVC,Vitoria da Conquista,Vitoria Da Conquista,Bahia
+VHM,Europe/Stockholm,Vilhelmina Airport,VHM,SE,POINT (16.65 64.61667),1085,,ESNV,Vilhelmina,Vilhelmina Kommun,Vaesterbotten
+FLT,America/Anchorage,Flat,FLT,US,POINT (-157.9888889 62.4525),328,,FLT,,,
+VHN,America/Chicago,Culberson County,VHN,US,POINT (-104.833336 31.05),4074,,KVHN,Van Horn,Culberson County,Texas
+VHV,Asia/Yakutsk,Verhnevilyuisk,VHV,RU,POINT (120.26444 63.45667),344,,UENI,Verkhnevilyuysk,Verkhnevilyuysky District,Sakha
+YRG,America/Goose_Bay,Rigolet,YRG,CA,POINT (-58.416668 54.333332),180,,CCZ2,,,
+VIA,America/Sao_Paulo,Vienna,VIA,BR,POINT (-51.136112 -27.008333),2588,,SSVI,Videira,Videira,Santa Catarina
+VIB,America/Mazatlan,Villa Constitucion,VIB,MX,POINT (-111.7 25.058332),160,,"",Ciudad Constitucion,,Baja California Sur
+VDO,Asia/Ho_Chi_Minh,Van Don,VDO,VN,POINT (107.41680680237144 21.1177533),26,http://www.vandon-airport.com/,VVVD,Cam Pha Mines,,Quang Ninh
+YCN,America/Toronto,Cochrane,YCN,CA,POINT (-81.01621235324185 49.10794825),861,,CYCN,,,
+VIF,Europe/Rome,Vieste,VIF,IT,POINT (16.176945 41.885277),29,,,Vieste,Provincia di Foggia,Apulia
+VII,Asia/Ho_Chi_Minh,Vinh Airport,VII,VN,POINT (105.63333 18.7),42,,VVVH,Hung Nguyen,,Nghe An
+VDP,America/Caracas,Valle De Pascua,VDP,VE,POINT (-65.99245012577492 9.22178785),541,,SVVP,Valle de La Pascua,Municipio Leonardo Infante,Guarico
+VIN,Europe/Kiev,Havryshivka Vinnytsia International Airport,VIN,UA,POINT (28.483334 49.233334),793,,UKWW,Vinnytsya,,Vinnyts'ka
+VIT,Europe/Madrid,Vitoria Airport,VIT,ES,POINT (-2.5 42.833332),1902,,LEVT,Salvatierra,Provincia de Alava,Basque Country
+VDR,America/Argentina/Cordoba,Villa Dolores,VDR,AR,POINT (-65.1479642056974 -31.9438459),1801,,SAOD,Villa Dolores,,Cordoba
+VEE,America/Anchorage,Venetie,VEE,US,POINT (-146.3659973 67.0086975),636,,PAVE,Eielson Air Force Base,Fairbanks North Star Borough,Alaska
+VIE,Europe/Vienna,Vienna International Airport,VIE,AT,POINT (16.5848987032657 48.10499675),561,http://www.viennaairport.com/en/,LOWW,Fischamend Dorf,Politischer Bezirk Wien-Umgebung,Lower Austria
+VIG,America/Caracas,El Vigia,VIG,VE,POINT (-71.67132508302207 8.62391785),216,,SVVG,El Vigia,Municipio Alberto Adriani,Merida
+VIU,Pacific/Guadalcanal,Viru Harbour Airstrip,VIU,SB,POINT (157.6868504 -8.5064514),82,,AGVH,Gizo,,Western Province
+VNT,Europe/Riga,Ventspils,VNT,LV,POINT (87.2 27.3),830,http://www.airport.ventspils.lv/,EVVA,Khandbari,,Eastern Region
+VKO,Europe/Moscow,Vnukovo Airport,MOW,RU,POINT (37.27357516712458 55.5995278),662,http://www.vnukovo.ru/eng,UUWW,Vnukovo,Leninskiy Rayon,Moskovskaya
+VOI,Africa/Monrovia,Voinjama,VOI,LR,POINT (-9.75 8.416667),1771,,GLVA,Voinjama,,Lofa
+VOL,Europe/Athens,Nea Anchialos,VOL,GR,POINT (22.93111 39.38333),144,,LGBL,Nea Ionia,Nomos Magnisias,Thessaly
+VOT,America/Sao_Paulo,Votuporanga,VOT,BR,POINT (-49.88333 -20.433332),1692,,SDVG,Votuporanga,Votuporanga,Sao Paulo
+VKT,Europe/Moscow,Vorkuta Airport,VKT,RU,POINT (64.00333895184659 67.48792929999999),551,,UUYW,Vorkuta,,Komi Republic
+VLP,America/Cuiaba,Vila Rica,VLP,BR,POINT (-51.14049738118665 -9.981114550000001),813,,SWVC,Conceicao do Araguaia,Conceicao Do Araguaia,Para
+VLS,Pacific/Efate,Valesdir,VLS,VU,POINT (168.177002 -16.7961006),55,,NVSV,Port-Vila,,Shefa
+VNA,Asia/Vientiane,Saravane,VNA,LA,POINT (106.4156619 15.7112708),610,,VLSV,Salavan,,Salavan
+VNX,Africa/Maputo,Vilanculos Airport,VNX,MZ,POINT (35.312615522016074 -22.01664005),42,,FQVL,Maxixe,,Inhambane
+GEN,Europe/Madrid,Oslo Gardermoen Airport,GEN,NO,POINT (11.09967535417638 60.19786535),659,,ENGM,Gardermoen,,
+SSK,Australia/Perth,Sturt Creek,SSK,AU,POINT (128.13333 -19.2),1043,,"",,,
+YCB,America/Cambridge_Bay,Cambridge Bay Airport,YCB,CA,POINT (-105.13765258864144 69.1080144),42,,CYCB,,,
+VOK,America/Chicago,Volk Field,VOK,US,POINT (-90.255398 43.9385501),892,http://www.volkfield.ang.af.mil/,KVOK,New Lisbon,Juneau County,Wisconsin
+VST,Europe/Stockholm,Vasteras/Hasslo Airport,STO,SE,POINT (16.630556 59.58917),78,,ESOW,Vasteras,Vasteras,Vaestmanland
+VTB,Europe/Minsk,Vitebsk,VTB,BY,POINT (30.366667 55.13333),623,,UMII,Vitebsk,,Vitebsk
+VTM,Asia/Jerusalem,Nevatim AFB,VTM,IL,POINT (35.012298584 31.208299636799996),1269,,LLNV,Dimona,,Southern District
+VTN,America/Chicago,Miller Field,VTN,US,POINT (-100.55 42.86667),2572,,KVTN,Valentine,Cherry County,Nebraska
+VTZ,Asia/Kolkata,Vishakhapatnam Airport,VTZ,IN,POINT (83.22675 17.728151),26,http://www.vizagairport.in/,VOVZ,Gajuwaka,Vishakhapatnam,Andhra Pradesh
+YCR,America/Winnipeg,Cross Lake,YCR,CA,POINT (-97.7675598 54.6089003),709,,CYCR,,,
+VUU,Africa/Blantyre,Mvuu Camp,VUU,MW,POINT (35 -15.683333),2608,,"",Blantyre,Blantyre District,Southern Region
+VVC,America/Bogota,La Vanguardia Airport,VVC,CO,POINT (-73.566666 4.078889),1286,,SKVV,Villavicencio,Villavicencio,Meta
+VVK,Europe/Stockholm,Vastervik,VVK,SE,POINT (16.633333 57.75),85,,ESSW,Vaestervik,Vasterviks Kommun,Kalmar
+KKK,America/Anchorage,Kalakaket AFS,KKK,US,POINT (-156.84111 64.425),1598,,"1KC",,,
+VVN,America/Lima,Malvinas,VVN,PE,POINT (-72.939332 -11.854861),1384,,SPWT,Pangoa,Provincia de La Convencion,Cusco
+VVZ,Africa/Algiers,Illizi Airport,VVZ,DZ,POINT (8.55 26.533333),1824,,DAAP,Illizi,,Illizi
+KTH,America/Anchorage,SPB,KTH,US,POINT (-158.33333 59.966667),304,,AK56,,,
+VRI,Europe/Moscow,Varandey,VRI,RU,POINT (58.2025419175187 68.8489378),0,,ULDW,Parma,,Komi Republic
+VPG,Africa/Nairobi,Vipingo,VPG,KE,POINT (39.7967284 -3.8153992),88,,"",Takaungu,,Kilifi
+VPN,Atlantic/Reykjavik,Vopnafjordur,VPN,IS,POINT (-14.851202040101853 65.7198681),42,,BIVO,Egilsstadir,,East
+VRN,Europe/Rome,Verona Villafranca Airport,VRN,IT,POINT (10.885895928972548 45.39717245),216,http://www.aeroportoverona.it/,LIPX,Dossobuono,Provincia di Verona,Veneto
+YDP,America/Goose_Bay,Nain,YDP,CA,POINT (-61.682021423249765 56.55111965),22,,CYDP,,,
+VTF,Pacific/Fiji,Vatulele,VTF,FJ,POINT (177.63872588965222 -18.512366),29,,NFVL,Nadi,,Western
+VTL,Europe/Paris,Vittel,VTL,FR,POINT (5.9352798 48.2238998),1033,,,Vittel,Departement des Vosges,Lorraine
+VTU,America/Havana,Las Tunas,VTU,CU,POINT (-76.93672586344488 20.987316200000002),314,,MUVT,Las Tunas,,Las Tunas
+YDV,America/Winnipeg,Bloodvein,YDV,CA,POINT (-96.69189650331379 51.7825305),721,,CZTA,,,
+VUS,Europe/Moscow,Velikij Ustyug Airport,VUS,RU,POINT (46.266067439927596 60.7934202),262,,ULWU,Velikiy Ustyug,,Vologda
+VVO,Asia/Vladivostok,Vladivostok International Airport,VVO,RU,POINT (132.14617665194015 43.3925287),36,http://www.vladivostokavia.ru/en/airport/,UHWW,Artem,,Primorskiy
+WAZ,Australia/Brisbane,Warwick,WAZ,AU,POINT (151.94322804581208 -28.14902855),1512,,YWCK,Warwick,Southern Downs,Queensland
+WBA,Asia/Jayapura,Wahai,WBA,ID,POINT (129.4855084818511 -2.8114998),488,,WAPV,Wahai,,Maluku
+WBE,Indian/Antananarivo,Bealanana,WBE,MG,POINT (48.6897102 -14.5400804),3651,,FMNB,Bealanana,,Sofia
+WBG,Europe/Berlin,Schleswig-jagel,WBG,DE,POINT (9.519220361389436 54.46404005),36,,ETNS,Jagel,,Schleswig-Holstein
+WBK,America/Detroit,Community,WBK,US,POINT (-84.179802 44.244801),849,http://www.westbranch.com/airport.pdf,"",West Branch,Ogemaw County,Michigan
+WBQ,America/Anchorage,Beaver,WBQ,US,POINT (-147.4011111 66.3613889),354,,PAWB,Fairbanks,Fairbanks North Star Borough,Alaska
+YDF,America/St_Johns,Deer Lake Regional Airport,YDF,CA,POINT (-57.399727 49.21027),72,,CYDF,,,
+WBN,America/New_York,Cummings Park,WBN,US,POINT (-71.15 42.466667),88,,,Woburn,Middlesex County,Massachusetts
+WCR,America/Anchorage,Chandalar,WCR,US,POINT (-148.4909808 67.5028851),1912,,PALR,Ester,Fairbanks North Star Borough,Alaska
+WDG,America/Chicago,Enid Woodring Mun.,WDG,US,POINT (-97.78743382045698 36.37508555),1151,http://www.enidairport.com/default.htm,KWDG,Enid,Garfield County,Oklahoma
+WBW,America/New_York,Wilkes-Barre/Wyoming Valley,AVP,US,POINT (-75.88333 41.233334),662,,KWBW,Wilkes-Barre,Luzerne County,Pennsylvania
+WCA,America/Santiago,Gamboa,WCA,CL,POINT (-73.833336 -42.5),1404,,SCST,Castro,Provincia de Chiloe,Los Lagos
+WCD,Australia/Perth,Carosue Dam Airport,WCD,AU,POINT (122.3221 -30.1737),1279,,YSCD,Stoneville,Kalgoorlie/Boulder,Western Australia
+WCH,America/Santiago,Chaiten,WCH,CL,POINT (-72.71667 -42.916668),0,,SCTN,Chaiten,Provincia de Palena,Los Lagos
+WDA,Asia/Aden,Wadi Ain,WDA,YE,POINT (45.55 14.866667),3937,,"",Al Hajab,Ain,Shabwah
+WAH,America/Chicago,Wahpeton,WAH,US,POINT (-96.60699724016004 46.245350349999995),948,,KBWP,Wahpeton,Richland County,North Dakota
+WBR,America/Detroit,Big Rapids,WBR,US,POINT (-85.49839607843418 43.72222695),908,,KRQB,Big Rapids,Mecosta County,Michigan
+WDI,Australia/Brisbane,Wondai,WDI,AU,POINT (151.81667 -26.333332),1335,,YWND,Wondai,South Burnett,Queensland
+WGB,Asia/Karachi,Bahawalnagar,WGB,PK,POINT (73.25 30),508,,,Bahawalnagar,,Punjab
+WGN,Pacific/Auckland,Waitangi,WGN,NZ,POINT (174.1 -36.266945),131,,ZGSY,Dargaville,Kaipara District,Northland
+YUX,America/Iqaluit,Hall Beach,YUX,CA,POINT (-81.2435989 68.7761002),30,,CYUX,,,
+YDU,America/Yellowknife,Kasba Lake,YDU,CA,POINT (-102.501998 60.2919006),1131,,CJL8,,,
+LAE,Pacific/Port_Moresby,Nadzab Airport,LAE,PG,POINT (146.72620196586914 -6.5684807),239,,AYNZ,,,
+WGP,Asia/Makassar,Waingapu Airport,WGP,ID,POINT (120.3 -9.666667),55,,WATU,Mangga Dua,,East Nusa Tenggara
+WGT,Australia/Melbourne,Wangaratta,WGT,AU,POINT (146.33333 -36.36667),465,,YWGT,Wangaratta,Wangaratta,Victoria
+WEH,Asia/Shanghai,Weihai International Airport,WEH,CN,POINT (122.22940860931081 37.1864922),95,,ZSWH,Dashuipo,,Shandong Sheng
+WGY,Africa/Libreville,Wagny,WGY,GA,POINT (10.433333 0.516667),1456,,"",Acurenam,,Centro Sur
+WEI,Australia/Brisbane,Weipa Airport,WEI,AU,POINT (141.9247355 -12.6784998),91,,YBWP,Weipa,Cook,Queensland
+WHF,Africa/Khartoum,Wadi Halfa,WHF,SD,POINT (31.5 21.75),830,,HSSW,Abu Sunbul,,Aswan
+WGA,Australia/Sydney,Wagga Wagga Airport,WGA,AU,POINT (147.46300325635022 -35.16567315),669,http://www.wagga.nsw.gov.au/www/html/271-airport.asp,YSWG,Forest Hill,Wagga Wagga,New South Wales
+WHL,Australia/Melbourne,Welshpool,WHL,AU,POINT (146.45 -38.68889),32,,"",Morwell,Latrobe,Victoria
+WHP,America/Los_Angeles,Whiteman,LAX,US,POINT (-118.25 34.05),387,,KWHP,Los Angeles,Los Angeles County,California
+DDM,Pacific/Port_Moresby,Dodoima,DDM,PG,POINT (145.16667 -8.483333),0,,"",,,
+LDZ,Africa/Johannesburg,Londolozi Airport,LDZ,ZA,POINT (31.5051123 -24.8092116),1300,,FALD,,,
+ARK,Africa/Dar_es_Salaam,Arusha Airport,ARK,TZ,POINT (36.683334 -3.366667),4609,,HTAR,Arusha,,Arusha
+WHT,America/Chicago,Wharton,WHT,US,POINT (-96.1 29.316668),111,http://www.cityofwharton.com/page/Airport,KARM,Wharton,Wharton County,Texas
+WHU,Asia/Shanghai,Wuhu,WHU,CN,POINT (118.36667 31.366667),45,,ZSWU,Jinghu,,Anhui Sheng
+WIB,America/Chicago,Wilbarger County,WIB,US,POINT (101.446884 0.464563),157,http://www.co.wilbarger.tx.us/Airport2.htm,F05,Pekanbaru,,Riau
+WIE,Europe/Berlin,Air Base,WIE,DE,POINT (8.233333 50.083332),442,,ETOU,Wiesbaden,Regierungsbezirk Darmstadt,Hesse
+KIY,Africa/Dar_es_Salaam,Kilwa Masoko Airport,KIY,TZ,POINT (39.5111048 -8.9120263),50,,HTKI,,,
+WIK,Pacific/Auckland,Surfdale,WIK,NZ,POINT (175.08333 -36.833332),42,,NZKE,Pakuranga,Auckland,Auckland
+WIL,Africa/Nairobi,Wilson Airport,NBO,KE,POINT (36.813248 -1.318018),5495,http://www.kenyaairports.co.ke/kaa/airports/wilson/,HKNW,Nairobi,,Nairobi Area
+DNI,Africa/Khartoum,Wad Medani,DNI,SD,POINT (33.5273548 14.383801),1341,,HSWD,Wad Medani,,Al Jazirah
+WIN,Australia/Brisbane,Winton Airport,WIN,AU,POINT (143.06667 -22.35),620,,YWTN,Hughenden,Flinders,Queensland
+BBH,Europe/Berlin,Barth,BBH,DE,POINT (12.712626338183224 54.33965175),26,,EDBH,,,
+WIO,Australia/Sydney,Wilcannia,WIO,AU,POINT (143.55 -31.083332),226,,YWCA,Broken Hill,Broken Hill Municipality,New South Wales
+ZQN,Pacific/Auckland,Queenstown Airport,ZQN,NZ,POINT (168.74343994415125 -45.019299950000004),1171,,NZQN,Queenstown,Queenstown-Lakes District,Otago
+BKZ,Africa/Dar_es_Salaam,Bukoba Airport,BKZ,TZ,POINT (31.820484188574866 -1.33063155),3750,,HTBU,Bukoba,,Kagera
+WGC,Asia/Kolkata,Warangal,WGC,IN,POINT (79.6036086 17.9140552),958,http://aai.aero/allAirports/warrangal.jsp,VOWA,Warangal,Warangal,Telangana
+ZQZ,Asia/Shanghai,Zhangjiakou Ningyuan Airport,ZQZ,CN,POINT (114.93866671510466 40.73820405),2347,,ZBZJ,Zhangjiakou,,Hebei
+ZTS,America/Vancouver,Tahsis,ZTS,CA,POINT (-126.6534942 49.9218048),0,,CAL9,Tofino,Regional District of Alberni-Clayoquot,British Columbia
+ZUM,America/Goose_Bay,Churchill Falls,ZUM,CA,POINT (-64.1063995 53.5619011),1442,,CZUM,Labrador City,,Newfoundland and Labrador
+WIU,Pacific/Port_Moresby,Witu,WIU,PG,POINT (149.5 -4.666667),0,,AYIX,Kimbe,,West New Britain
+DAR,Africa/Dar_es_Salaam,Julius Nyerere International Airport,DAR,TZ,POINT (39.20752396159325 -6.8741937),75,http://www.tanzaniairports.com/,HTDA,Dar es Salaam,,Dar es Salaam
+ZVK,Asia/Vientiane,Savannakhet,ZVK,LA,POINT (104.76031944401174 16.556469),509,,VLSK,Savannakhet,,Savannahkhet
+WGE,Australia/Sydney,Walgett,WGE,AU,POINT (148.12542342678233 -30.0321528),439,,YWLG,Lightning Ridge,Walgett,New South Wales
+WDR,America/New_York,Winder,WDR,US,POINT (-83.66526062716945 33.9817836),898,http://www.wdrairport.com/,KWDR,Winder,Barrow County,Georgia
+WHS,Europe/London,Whalsay,WHS,GB,POINT (-0.9273154337203355 60.3765415),78,,EGEH,Shetland,Shetland Islands,Scotland
+ZWA,Indian/Antananarivo,Andapa,ZWA,MG,POINT (49.6206017 -14.6517),1552,,FMND,Andapa,Andapa District,Sava
+WIR,Pacific/Auckland,Wairoa,WIR,NZ,POINT (177.40428900521073 -39.01045995),36,,NZWO,Wairoa,Wairoa District,Hawke's Bay
+WKR,America/Nassau,Walker's Cay,WKR,BS,POINT (-78.4014295 27.259706),19,,MYAW,High Rock,,East Grand Bahama
+WLG,Pacific/Auckland,Wellington International Airport,WLG,NZ,POINT (174.8077029634527 -41.32691975),19,http://www.wellingtonairport.co.nz/,NZWN,Wellington,Wellington City,Wellington
+WLP,Australia/Perth,West Angelas Airport,WLP,AU,POINT (118.7072 -23.1356),2257,,YANG,Tom Price,Ashburton,Western Australia
+WLH,Pacific/Efate,Walaha,WLH,VU,POINT (167.69118229180754 -15.4111246),101,,NVSW,Saratamata,,Penama
+WLS,Pacific/Wallis,Wallis Island Airport,WLS,WF,POINT (-176.16667 -13.233333),0,,NLWW,Mata-Utu,,Circonscription d'Uvea
+WLW,America/Los_Angeles,Glenn County,WLW,US,POINT (-122.35 39.88333),505,,KWLW,Rancho Tehama Reserve,Tehama County,California
+WMC,America/Los_Angeles,Winnemucca,WMC,US,POINT (-117.73333 40.966667),4320,,KWMC,Winnemucca,Humboldt County,Nevada
+WMD,Indian/Antananarivo,Mandabe,WMD,MG,POINT (44.95 -21.033333),921,,FMSC,Beroroha,,Atsimo-Andrefana
+WMA,Indian/Antananarivo,Mandritsara,WMA,MG,POINT (48.8390163 -15.8454475),994,,FMNX,Antsirabe Afovoany,,Sofia
+DOD,Africa/Dar_es_Salaam,Dodoma Airport,DOD,TZ,POINT (35.754430618763045 -6.1700681500000005),3622,,HTDO,Dodoma,,Dodoma
+DES,Indian/Mahe,Desroches,DES,SC,POINT (53.655951954638475 -5.696611750000001),32,,FSDR,Port Glaud,,Port Glaud
+BYK,Africa/Abidjan,Bouake,BYK,CI,POINT (-5.068606828539775 7.7404244),1220,,DIBK,Bouake,,Vallee du Bandama
+MSA,America/Winnipeg,Muskrat Dam,MSA,CA,POINT (-91.98333 53.816666),869,,CZMD,,,
+BYR,Europe/Copenhagen,Laeso Airport,BYR,DK,POINT (10.996545925940573 57.27657225),36,,EKLS,Byrum,Laeso Kommune,North Denmark
+DHR,Europe/Amsterdam,De Kooy/Den Helder Airport,DHR,NL,POINT (4.75 52.95),32,,EHKD,Den Helder,Gemeente Den Helder,North Holland
+YCD,America/Vancouver,Nanaimo Airport,YCD,CA,POINT (-123.87077170725448 49.05294715),68,,CYCD,,,
+WMH,America/Chicago,Mountain Home,WMH,US,POINT (-92.38333 36.333332),787,http://www.flytheozarks.com/,KBPK,Mountain Home,Baxter County,Arkansas
+WMB,Australia/Melbourne,Warrnambool,WMB,AU,POINT (142.44886030231498 -38.29311165),213,,YWBL,Warrnambool,Warrnambool,Victoria
+CZN,America/Anchorage,Chisana Field,CZN,US,POINT (-142.05 62.07083),3261,,CZN,,,
+WMI,Europe/Warsaw,Warsaw-Modlin Airport,WAW,PL,POINT (20.648988117621318 52.450885650000004),328,http://modlinairport.pl/,EPMO,Zakroczym,Powiat nowodworski,Masovian Voivodeship
+GHF,Europe/Berlin,Giebelstadt,GHF,DE,POINT (9.979900076875726 49.654131),951,http://www.edqg.de/,EDQG,Giebelstadt,Regierungsbezirk Unterfranken,Bavaria
+WMP,Indian/Antananarivo,Mampikony,WMP,MG,POINT (47.59722 -16.075),134,,FMNP,Tsaratanana,,Betsiboka
+GHM,America/Chicago,Municipal,GHM,US,POINT (-87.46667 35.783333),551,,KGHM,Centerville,Hickman County,Tennessee
+WMV,Indian/Antananarivo,Madirovalo,WMV,MG,POINT (46.566666 -16.45),170,,,Ambato Boeny,,Boeny
+WMN,Indian/Antananarivo,Maroantsetra,WMN,MG,POINT (49.6897486 -15.4376416),26,,FMNR,Maroantsetra,,Analanjirofo
+WMO,America/Anchorage,White Mountain Airport,WMO,US,POINT (-163.4102675 64.6886809),177,,PAWM,Nome,Nome Census Area,Alaska
+WMR,Indian/Antananarivo,Mananara,WMR,MG,POINT (49.7737999 -16.1637981),22,,FMNC,Mananara,,Analanjirofo
+WNE,Africa/Libreville,Wora Na Ye,WNE,GA,POINT (9.333333 -1.35),16,,,Omboue,,Ogooue-Maritime
+GHN,Asia/Shanghai,Guanghan,GHN,CN,POINT (106.65 30.466667),790,,ZUGH,Guang'an,,Sichuan
+LCY,Europe/London,London City Airport,LON,GB,POINT (0.0549024013303768 51.5042655),19,http://www.londoncityairport.com/,EGLC,,,
+WNH,Asia/Shanghai,Wenshan Puzhehei Airport,WNH,CN,POINT (104.24256 23.374907),4179,,ZPWS,Wenshan City,Wenshan Zhuangzu Miaozu Zizhizhou,Yunnan
+WMX,Asia/Jayapura,Wamena Airport,WMX,ID,POINT (138.95220458580468 -4.09665775),5403,,WAJW,Wurigelebur,,Papua
+WOW,America/Anchorage,Willow,WOW,US,POINT (-150.16667 61.833332),108,,PAUO,Willow,Matanuska-Susitna Borough,Alaska
+WPA,America/Santiago,Puerto Aisen,WPA,CL,POINT (-72.7 -45.4),19,,SCAS,Puerto Aisen,Provincia de Aisen,Aisen
+WPB,Indian/Antananarivo,Port Berge,WPB,MG,POINT (47.666668 -15.55),49,,FMNG,Antsohihy,,Sofia
+WRT,Europe/London,Warton Aerodrome,WRT,GB,POINT (-2.8863127 53.7440449),39,,EGNO,Warton,Lancashire,England
+ZWL,America/Regina,Wollaston Lake,ZWL,CA,POINT (-103.17224020533234 58.10592265),1360,,CZWL,Flin Flon,,Manitoba
+WRY,Europe/London,Westray Airport,WRY,GB,POINT (-2.9490450908151673 59.350831400000004),13,,EGEW,Kirkwall,Orkney Islands,Scotland
+WPO,America/Denver,North Fork Valley,WPO,US,POINT (-107.6 38.86667),5649,,K7V2,Paonia,Delta County,Colorado
+WPR,America/Santiago,Porvenir,WPR,CL,POINT (-70.333336 -53.25),39,,SCFM,Punta Arenas,Provincia de Magallanes,Magallanes
+DAF,Pacific/Port_Moresby,Daup,DAF,PG,POINT (144.95 -4.733333),311,,"",,,
+WPU,America/Santiago,Puerto Williams,WPU,CL,POINT (-68.25 -54.95),1381,,SCGZ,Ushuaia,,Tierra del Fuego
+WRB,America/New_York,Robins AFB,MCN,US,POINT (-83.64778 32.695557),337,http://www.robins.af.mil/,KWRB,Centerville,Houston County,Georgia
+WSA,Pacific/Port_Moresby,Wasua,WSA,PG,POINT (142.8705373 -8.2831906),62,,AYIW,Daru,,Western Province
+WSF,America/Anchorage,Sarichef,WSF,US,POINT (-164.902081 54.5861889),236,,,Akutan,Aleutians East Borough,Alaska
+WRI,America/New_York,Mc Guire AFB,WRI,US,POINT (-74.65017 40.155308),78,http://www.mcguire.af.mil/,KWRI,Groveville,Mercer County,New Jersey
+WRL,America/Denver,Worland Municipalcipal,WRL,US,POINT (-107.95306 43.9675),4084,,KWRL,Worland,Washakie County,Wyoming
+WRZ,Asia/Colombo,Wirawila,WRZ,LK,POINT (81.238335 6.251667),131,,VCCW,Tangalla,,Southern
+WPK,Australia/Brisbane,Wrotham Park,WPK,AU,POINT (144.0019989 -16.6583004),515,,YWMP,Mareeba,Tablelands,Queensland
+WSB,America/Anchorage,SPB,WSB,US,POINT (-119.73333 39.36667),4665,,WSB,Virginia City,Storey County,Nevada
+WSD,America/Denver,Condron AAF,WSD,US,POINT (-106.48333 32.38333),4291,,KWSD,White Sands,Dona Ana County,New Mexico
+WSG,America/New_York,County,WSG,US,POINT (-80.25 40.166668),1040,,KAFJ,Washington,Washington County,Pennsylvania
+WSH,America/New_York,Brookhaven,WSH,US,POINT (-72.833336 40.75),0,,KHWV,Mastic Beach,Suffolk County,New York
+WSJ,America/Anchorage,San Juan SPB,WSJ,US,POINT (-153.31833 57.73111),42,,,Kodiak Station,Kodiak Island Borough,Alaska
+WSK,Asia/Shanghai,Chongqing Wushan Airport,WSK,CN,POINT (109.71336937776792 31.07157155),5800,,ZUWS,Quchi,,Chongqing Shi
+WSM,America/Anchorage,Wiseman,WSM,US,POINT (-150.1190072 67.4059294),1286,,WSM,Nuiqsut,North Slope Borough,Alaska
+GHT,Africa/Tripoli,Ghat,GHT,LY,POINT (10.166667 24.966667),2201,,HLGT,Ghat,,Sha`biyat Ghat
+GHU,America/Argentina/Cordoba,Gualeguaychu,GHU,AR,POINT (-58.6145981728766 -33.00510395),45,,SAAG,Gualeguaychu,,Entre Rios
+GKN,America/Anchorage,Gulkana,GKN,US,POINT (-145.45182003437623 62.154535),1499,,PAGK,,,
+YVN,America/Pangnirtung,Cape Dyer,YVN,CA,POINT (-61.57952572 66.597376),0,,,,,
+TEP,Pacific/Port_Moresby,Teptep,TEP,PG,POINT (146.5 -5.85),7011,,AYTP,,,
+GSO,America/New_York,Piedmont Triad International Airport,GSO,US,POINT (-79.94356850477837 36.1031477),889,,KGSO,Oak Ridge,Guilford County,North Carolina
+GSP,America/New_York,Greenville-Spartanburg International Airport,GSP,US,POINT (-82.21722845651891 34.8954456),948,,KGSP,Greer,Greenville County,South Carolina
+GSS,Africa/Johannesburg,Sabi Sabi,GSS,ZA,POINT (30.8 -25.116667),4215,,FASE,Graksop,Ehlanzeni District,Mpumalanga
+GSU,Africa/Khartoum,Gedaref,GSU,SD,POINT (35.466667 14.033333),2070,,HSGF,Al Qadarif,,Al Qadarif
+SOP,America/New_York,Pinehurst-S. Pines,SOP,US,POINT (-79.423139 35.214368),524,http://moorecountyairport.com/,KSOP,Whispering Pines,Moore County,North Carolina
+RRT,America/Chicago,Warroad,RRT,US,POINT (-95.3 48.9),1059,,KRRT,,,
+WRO,Europe/Warsaw,Wroclaw Airport,WRO,PL,POINT (16.8756697 51.1075552),367,http://www.airport.wroclaw.pl/en/index.php,EPWR,Smolec,Powiat wroclawski,Lower Silesian Voivodeship
+GSV,Europe/Saratov,Saratov Gagarin Airport,RTW,RU,POINT (46.166667 51.716667),82,,,Shumeyka,,Saratov
+WRW,Australia/Perth,Warrawagine,WRW,AU,POINT (120.7029244 -20.8437035),465,,YWWG,Port Hedland,Port Hedland,Western Australia
+WSN,America/Anchorage,South Naknek,WSN,US,POINT (-156.99996786405472 58.6995042),85,,PFWS,Dillingham,Dillingham Census Area,Alaska
+WUU,Africa/Juba,Wau,WUU,SS,POINT (27.970441309724833 7.72599855),1532,,HSWW,Wau,,Western Bahr al Ghazal
+WVI,America/Los_Angeles,Watsonville,WVI,US,POINT (-121.79168201412561 36.933656400000004),167,,KWVI,Watsonville,Santa Cruz County,California
+WWT,America/Anchorage,Newtok,WWT,US,POINT (-164.64216823666695 60.9398817),19,,PAEW,Hooper Bay,Wade Hampton Census Area,Alaska
+XBJ,Asia/Tehran,Birjand Airport,XBJ,IR,POINT (59.26414453526587 32.89977375),4904,,OIMB,Birjand,,Khorasan-e Jonubi
+WYN,Australia/Perth,Wyndham,WYN,AU,POINT (128.15314435918117 -15.5113853),13,,YWYM,Kununurra,Wyndham-East Kimberley,Western Australia
+XBG,Africa/Ouagadougou,Bogande,XBG,BF,POINT (-0.162316 12.9810906),971,,DFEB,Bogande,Gnagna Province,Est
+THL,Asia/Rangoon,Tachilek Airport,THL,MM,POINT (99.93498439739474 20.48499535),1280,,VYTL,Mae Sai,,Chiang Rai
+THR,Asia/Tehran,Mehrabad International Airport,THR,IR,POINT (51.278399738353954 35.6979248),3962,,OIII,Tehran,,Tehran
+BYL,Africa/Monrovia,Bella Yella,BYL,LR,POINT (-10 7.366667),744,,"",,,
+CBC,Australia/Perth,Cherrabun,CBC,AU,POINT (125.55 -18.916668),538,,"",,,
+XDE,Africa/Ouagadougou,Diebougou,XDE,BF,POINT (-3.2525186 10.9488727),961,,DFOU,Diebougou,Province de la Bougouriba,Southwest
+XDJ,Africa/Ouagadougou,Djibo,XDJ,BF,POINT (-1.6280623 14.1221595),964,,DFCJ,Djibo,Province du Soum,Sahel
+XEQ,America/Godthab,Harbour,XEQ,GL,POINT (-44.63333 60.266666),3,,,Nanortalik,,Kujalleq
+XIL,Asia/Shanghai,Xilinhot Airport,XIL,CN,POINT (115.95968470359296 43.91391455),3287,,ZBXH,Xilin Hot,,Inner Mongolia
+XIY,Asia/Shanghai,Xianyang International Airport,SIA,CN,POINT (108.7580567206632 34.43866385),1532,http://www.xxia.com/,ZLXY,Dizhang,,Shaanxi
+XGG,Africa/Ouagadougou,Gorom-Gorom,XGG,BF,POINT (-0.2182764 14.454266),905,,DFEG,Gorom-Gorom,Province de l'Oudalan,Sahel
+XMD,America/Chicago,Madison,XMD,US,POINT (-97.11667 44),1653,,KMDS,Madison,Lake County,South Dakota
+XMG,Asia/Kathmandu,Mahendranagar,XMG,NP,POINT (80.2 28.966667),698,,VNMN,Banbasa,,Uttar Pradesh
+XML,Australia/Adelaide,Minlaton,XML,AU,POINT (137.5 -35),52,,YMIN,Honiton,Yorke Peninsula,South Australia
+XMY,Australia/Brisbane,Yam Island,XMY,AU,POINT (142.45 -10.483333),0,,YYMI,Thursday Island,Torres,Queensland
+DHB,America/Los_Angeles,Deer Harbor,DHB,US,POINT (-123.0032063 48.6209117),0,,"",,,
+DMR,Asia/Aden,Dhamar,DMR,YE,POINT (44.433334 14.533333),7969,,,Dhamar,Madinat Dhamar,Dhamar
+XNA,America/Chicago,Northwest Arkansas Regional,FYV,US,POINT (-94.29711 36.275257),1253,http://www.flyxna.com/,KXNA,Cave Springs,Benton County,Arkansas
+EBB,Africa/Kampala,Entebbe International Airport,EBB,UG,POINT (32.4429895 0.044802),3805,https://entebbe-airport.com/,HUEN,Entebbe,Wakiso District,Central Region
+FLI,Atlantic/Reykjavik,Flateyri,FLI,IS,POINT (-23.7 65.98333),1906,,BIHT,,,
+GIB,Europe/Gibraltar,North Front Airport,GIB,GI,POINT (-5.347921386651571 36.15157405),19,,LXGB,Gibraltar,,
+GID,Africa/Bujumbura,Gitega,GID,BI,POINT (29.912829749986052 -3.41787695),5383,,HBBE,Gitega,,Gitega
+GIF,America/New_York,Gilbert Field,GIF,US,POINT (-81.75 28.066668),114,http://kgif.mywinterhaven.com/,KGIF,Inwood,Polk County,Florida
+GIG,America/Sao_Paulo,Galeao Antonio Carlos Jobim International Airport,RIO,BR,POINT (-43.258620204081936 -22.81122025),32,,SBGL,Duque de Caxias,Duque De Caxias,Rio de Janeiro
+GII,Africa/Conakry,Siguiri,GII,GN,POINT (-9.166667 11.516667),1263,,GUSI,Siguiri,Siguiri Prefecture,Kankan
+GIL,Asia/Karachi,Gilgit Airport,GIL,PK,POINT (74.33391939584052 35.91896215),4783,,OPGT,Gilgit,,Gilgit-Baltistan
+GIR,America/Bogota,Girardot,GIR,CO,POINT (-74.8 4.3),915,,SKGI,Girardot City,Girardot,Cundinamarca
+GIS,Pacific/Auckland,Gisborne Airport,GIS,NZ,POINT (177.97828688661417 -38.6639081),32,,NZGS,Gisborne,Gisborne District,Gisborne
+GIT,Africa/Dar_es_Salaam,Geita,GIT,TZ,POINT (32.2 -2.8),4232,,HTRU,Geita,,Geita
+GIU,Asia/Colombo,Sigiriya Slaf Base,GIU,LK,POINT (80.7595754 7.9564084),1010,http://www.airforce.lk/pages.php?pages=sigiriya,VCCS,Sigiriya,,Central
+GTP,America/Los_Angeles,Grants Pass,GTP,US,POINT (-123.3885181 42.5101682),1079,,KSXT,Merlin,Josephine County,Oregon
+GTR,America/Chicago,Golden Triangle Regional Airport,UBS,US,POINT (-88.5903986 33.4502),200,,KGTR,West Point,Clay County,Mississippi
+GTW,Europe/Prague,Holesov,GTW,CZ,POINT (17.516666 49.2),561,,LKHO,Otrokovice,,Zlin
+GTY,America/New_York,Gettysburg,GTY,US,POINT (-77.23333 39.833332),518,http://flygra.com/,W05,Gettysburg,Adams County,Pennsylvania
+GTZ,Africa/Dar_es_Salaam,Kirawira B,GTZ,TZ,POINT (34.225555 -2.160833),3963,,HTGR,Issenye,,Mara
+GUA,America/Guatemala,La Aurora International Airport,GUA,GT,POINT (-90.52716040808703 14.58331705),4872,,MGGT,Santa Catarina Pinula,,Guatemala
+GUB,America/Mazatlan,Guerrero Negro,GUB,MX,POINT (-114.02220983499515 28.02557195),26,,MMGR,San Luis,,Baja California
+MBU,Pacific/Guadalcanal,Mbambanakira,MBU,SB,POINT (160.75 -9.733333),85,,AGGI,,,
+GUC,America/Denver,Gunnison Airport,GUC,US,POINT (-106.93982729134346 38.5323609),7604,,KGUC,Gunnison,Gunnison County,Colorado
+GUD,Africa/Bamako,Goundam,GUD,ML,POINT (-3.5990064 16.3625833),849,,GAGM,Goundam,,Tombouctou
+LNI,America/Anchorage,Dew Station,LNI,US,POINT (-153.25 70.916664),0,,PALN,,,
+MBV,Pacific/Port_Moresby,Masa,MBV,PG,POINT (147.5910079872877 -6.3452645),5879,,AYSX,,,
+GUF,America/Chicago,Edwards,GUF,US,POINT (-87.583336 30.166668),0,http://www.jka.us.com/,KJKA,Orange Beach,Baldwin County,Alabama
+MBR,Africa/Nouakchott,Mbout,MBR,MR,POINT (-12.583333 16.033333),104,,,,,
+SWP,Africa/Windhoek,Swakopmund,SWP,NA,POINT (14.5600131 -22.660858),190,,FYSM,,,
+GUH,Australia/Sydney,Gunnedah,GUH,AU,POINT (150.24905249486724 -30.95742505),823,,YGDH,Gunnedah,Gunnedah,New South Wales
+GUI,America/Caracas,Guiria,GUI,VE,POINT (-62.31121093515691 10.5764238),65,,SVGI,Gueiria,Municipio Valdez,Sucre
+AAP,America/Chicago,Andrau Airpark,HOU,US,POINT (-95.666664 29.833332),154,http://www.proyek.dishubprovkaltim.info/?pro=1,WALS,,,
+AAS,Asia/Jayapura,Apalapsili,AAS,ID,POINT (139.3107060627146 -3.880849),3005,,,,,
+AKQ,Asia/Jakarta,Gunung Batin,AKQ,ID,POINT (105.23333 -4.616667),147,,"",Menggala,,Lampung
+AKS,Pacific/Guadalcanal,Gwaunaru'u,AKS,SB,POINT (160.6817763 -8.7042047),42,,AGGA,,,
+XNG,Asia/Ho_Chi_Minh,Quang Ngai,XNG,VN,POINT (108.77583 15.113611),45,,"",Quang Ngai,,Quang Ngai
+AYW,Asia/Jayapura,Ayawasi,AYW,ID,POINT (132.5 -1.2),1840,,WASA,Aifat,,West Papua
+BWX,Asia/Jakarta,Bandar Udara Internasional Banyuwangi,BWX,ID,POINT (114.33786464963038 -8.310454799999999),78,,WADY,Kepuh Wetan,,East Java
+BXW,Asia/Jakarta,Harun Thohir Airport,BXW,ID,POINT (112.67693068947918 -5.72494045),72,,WARW,Paloh,,East Java
+BYW,America/Los_Angeles,Blakely Island,BYW,US,POINT (-123 48.5),0,,"38WA",,,
+BZM,Indian/Antananarivo,Bemolanga Airport,BZM,MG,POINT (45.087 -17.696),938,,,,,
+EGL,Africa/Addis_Ababa,Neghelli,EGL,ET,POINT (39.7525564 5.2758674),5085,,HANG,Shakiso,,Oromiya
+GIY,Africa/Johannesburg,Giyani,GIY,ZA,POINT (30.649513125158514 -23.282815550000002),1604,,FAGI,Giyani,Mopani District Municipality,Limpopo
+GIZ,Asia/Riyadh,Jazan Regional Airport,GIZ,SA,POINT (42.582344 16.898949),42,,OEGN,Jizan,,Jizan
+GJA,America/Tegucigalpa,Guanaja,GJA,HN,POINT (-85.90583 16.445),26,,MHNJ,Guanaja,,Bay Islands
+GJL,Africa/Algiers,Jijel Ferhat Abbas Airport,GJL,DZ,POINT (5.875569778538126 36.7943535),39,,DAAV,Jijel,,Jijel
+GJM,America/Porto_Velho,Guajara-Mirim,GJM,BR,POINT (-65.36667 -10.783333),387,,SBGM,Guajara Mirim,Guajara-Mirim,Rondonia
+GUJ,America/Sao_Paulo,Guaratingueta,GUJ,BR,POINT (-45.20482610775648 -22.791205050000002),1748,,SBGW,Guaratingueta,Guaratingueta,Sao Paulo
+XLS,Africa/Dakar,St Louis,XLS,SN,POINT (-16.461452955345397 16.0532913),36,,GOSS,Saint-Louis,,Saint-Louis
+XMC,Australia/Melbourne,Mallacoota,XMC,AU,POINT (149.7202123 -37.6002405),85,,YMCO,Eden,Bega Valley,New South Wales
+XMH,Pacific/Tahiti,Manihi,XMH,PF,POINT (-146.06681847632717 -14.43432505),19,,NTGI,Tiarei,,
+XMN,Asia/Shanghai,Xiamen Gaoqi International Airport,XMN,CN,POINT (118.13265145897324 24.543830049999997),26,http://www.xiagc.com.cn/enweb/,ZSAM,Yingcun,,Fujian
+XMA,Asia/Manila,Maramag,XMA,PH,POINT (125.0335636 7.7576709),902,http://www.pbase.com/philippineaviation/maramagoadi_airport_bukidnon,"",Maramag,Province of Bukidnon,Northern Mindanao
+XMI,Africa/Dar_es_Salaam,Masasi,XMI,TZ,POINT (38.771822446316946 -10.738714),1272,,HTMI,Masasi,,Mtwara
+XMS,America/Guayaquil,Macas,XMS,EC,POINT (-78.12077668408403 -2.2992943500000003),3395,,SEMC,Macas,,Morona-Santiago
+GAP,Pacific/Port_Moresby,Gusap,GAP,PG,POINT (146.33333 -6.5),524,,AYGP,,,
+GAV,Asia/Jayapura,Gag Island,GAV,ID,POINT (130.88333 -26),2240,,"",,,
+GJT,America/Denver,Grand Junction Regional Airport,GJT,US,POINT (-108.52444920306618 39.123415800000004),4849,http://www.gjairport.com/,KGJT,Fruitvale,Mesa County,Colorado
+GKD,Europe/Istanbul,Gokceada,GKD,TR,POINT (25.883715373974397 40.20526735),45,,LTFK,Gokceada,Goekceada,Canakkale
+XSM,America/New_York,St Marys,XSM,US,POINT (-76.63333 38.283333),0,,,Leonardtown,Saint Mary's County,Maryland
+XTG,Australia/Brisbane,Thargomindah,XTG,AU,POINT (143.76666 -27.966667),390,,YTGM,Bourke,Bourke,New South Wales
+YAB,America/Iqaluit,Arctic Bay,YAB,CA,POINT (-85.183334 73.03333),72,,CYAB,,,
+GKE,Europe/Berlin,Geilenkirchen,GKE,DE,POINT (6.133333 50.966667),203,,ETNG,Geilenkirchen,,North Rhine-Westphalia
+BJG,Asia/Makassar,Bolaang,BJG,ID,POINT (122.1 -0.95),0,,"",,,
+YVZ,America/Winnipeg,Deer Lake,YVZ,CA,POINT (-94.5 52.666668),1092,,CYVZ,,,
+GKH,Asia/Kathmandu,Gorkha,GKH,NP,POINT (84.675 28),1909,,VNGK,Lamjung,Gandaki Zone,Western Region
+BXM,Asia/Jayapura,Batom,BXM,ID,POINT (140.85 -4.116667),570,,WAJG,,,
+XNN,Asia/Shanghai,Xining Caojiabao Airport,XNN,CN,POINT (102.03821999842393 36.5297578),7129,,ZLXN,Gaozhai,,Qinghai Sheng
+YMH,America/St_Johns,Mary's Harbour,YMH,CA,POINT (-55.8471985 52.3027992),38,,CYMH,,,
+XSE,Africa/Ouagadougou,Sebba,XSE,BF,POINT (0.5037673 13.4571544),816,,DFES,Sebba,Province du Yagha,Sahel
+YZW,America/Whitehorse,Teslin,YZW,CA,POINT (-132.73434 60.1739957),2313,,CYZW,,,
+XSO,Asia/Manila,Siocon,XSO,PH,POINT (122.16196502253516 7.7100627),42,,PRNO,Siocon,Province of Zamboanga del Norte,Zamboanga Peninsula
+GKL,Australia/Brisbane,Great Keppel Island,GKL,AU,POINT (150.938504 -23.1830573),39,,YGKL,Yeppoon,Rockhampton,Queensland
+GKO,Africa/Libreville,Kongoboumba,GKO,GA,POINT (11.466667 -0.083333),429,,,Booue,,Ogooue-Ivindo
+GKT,America/New_York,Gatlinburg,GKT,US,POINT (-83.53061283130717 35.8584744),997,,KGKT,Sevierville,Sevier County,Tennessee
+KCD,Asia/Jayapura,Kamur,KCD,ID,POINT (138.71666 -6.2),25,,WAKM,,,
+DRH,Asia/Jayapura,Dabra,DRH,ID,POINT (138.56667 -3.25),190,,WAJC,Dabra,,Papua
+EMO,Pacific/Port_Moresby,Emo,EMO,PG,POINT (147.95 -9.15),7752,,AYEO,,,
+ENK,Europe/London,Enniskillen St. Angelo,ENK,GB,POINT (-7.633333 54.35),157,,EGAB,Enniskillen,Fermanagh District,Northern Ireland
+ERU,Pacific/Port_Moresby,Erume,ERU,PG,POINT (147.08333 -8.416667),6351,,AYER,,,
+ESH,Europe/London,Shoreham,ESH,GB,POINT (-0.2906099605168267 50.83351595),49,http://flybrighton.com,EGKA,Lancing,West Sussex,England
+EWE,Asia/Jayapura,Ewer,EWE,ID,POINT (138.080500210884 -5.4949737),36,,"",,,
+FAS,Atlantic/Reykjavik,Faskrudsfjordur,FAS,IS,POINT (-14.04742674000002 64.9314193),13,,BIFF,Eskifjoerdur,,East
+FOO,Asia/Jayapura,Numfoor,FOO,ID,POINT (134.9 -1.05),111,,WABF,Kameri,,Papua
+GLA,Europe/London,Glasgow International Airport,GLA,GB,POINT (-4.431782 55.864212),39,http://www.glasgowairport.com/,EGPF,Inchinnan,Renfrewshire,Scotland
+GLC,Africa/Addis_Ababa,Geladi,GLC,ET,POINT (46.4213982 6.9844398),1338,,HAGL,,,
+GLD,America/Denver,Renner Field,GLD,US,POINT (-101.70038367181789 39.3678063),3648,,KGLD,Goodland,Sherman County,Kansas
+GLE,America/Chicago,Municipal,GLE,US,POINT (-97.13333 33.63333),728,http://www.gainesville.tx.us/index.aspx?nid=99,KGLE,Gainesville,Cooke County,Texas
+GLH,America/Chicago,Greenville Airport,GLH,US,POINT (-90.985 33.484444),111,,KGLH,Metcalfe,Washington County,Mississippi
+GLI,Australia/Sydney,Glen Innes,GLI,AU,POINT (151.6914255 -29.6752835),3421,,YGLI,Glen Innes,Glen Innes Severn,New South Wales
+GUG,Pacific/Port_Moresby,Guari,GUG,PG,POINT (146.9 -8.516667),2769,,AYGF,,,
+LRQ,America/Winnipeg,Laurie River,LRQ,CA,POINT (-101 56.216667),921,,CJC8,,,
+GWT,Europe/Berlin,Westerland - Sylt Airport,GWT,DE,POINT (8.343056 54.91528),26,,EDXW,Tinnum,,Schleswig-Holstein
+YRF,America/Goose_Bay,Cartwright,YRF,CA,POINT (-57.04176422196099 53.6826849),40,,CYCA,,,
+GWV,America/New_York,Glendale,GWV,US,POINT (-87.95 43.11667),613,,WV66,Glendale,Milwaukee County,Wisconsin
+RDA,Australia/Darwin,Rockhampton Downs,RDA,AU,POINT (135.1992998 -18.9522653),728,,"",,,
+SPV,Pacific/Port_Moresby,Sepik Plains,SPV,PG,POINT (144.5 -3.816667),26,,AYSQ,,,
+GWY,Europe/Dublin,Carnmore,GWY,IE,POINT (-9.033333 53.283333),45,http://www.galwayairport.com/,EICM,Gaillimh,County Galway,Connaught
+ATN,Pacific/Port_Moresby,Namatanai,ATN,PG,POINT (152.43814978543128 -3.66958625),124,,AYNX,,,
+BKF,America/Anchorage,Lake Brooks SPB,BKF,US,POINT (-156.23334 58.6),29,,"5Z9",,,
+YDE,America/Goose_Bay,Paradise River,YDE,CA,POINT (-57.233334 53.433334),0,,"",,,
+DAH,Asia/Aden,Dathina,DAH,YE,POINT (46.13333 13.866667),2483,,,Mudiyah,Mudiyah,Abyan
+YGH,America/Yellowknife,Fort Good Hope,YGH,CA,POINT (-128.64740819217258 66.2424039),268,,CYGH,,,
+EOS,America/Chicago,Neosho,EOS,US,POINT (-94.36667 36.86667),1056,,,Neosho,Newton County,Missouri
+EWO,Africa/Brazzaville,Ewo,EWO,CG,POINT (14.805484564521853 -0.8591409999999999),1535,,FCOE,,,
+GLK,Africa/Mogadishu,Galcaio,GLK,SO,POINT (47.433334 6.766667),895,,HCMR,Gaalkacyo,,Mudug
+GLL,Europe/Oslo,Klanten Airport,GLL,NO,POINT (8.95 60.7),711,http://hallingdalflyklubb.no/wordpress/,ENKL,Gol,Gol,Buskerud
+GLN,Africa/Casablanca,Goulimime Airport,GLN,MA,POINT (-10.066667 29.016666),1023,,GMAG,Guelmim,Guelmim,Guelmim-Es Smara
+GLO,Europe/London,Gloucestershire,GLO,GB,POINT (-2.233333 51.88333),29,,EGBJ,Gloucester,Gloucestershire,England
+GLR,America/Detroit,Otsego County,GLR,US,POINT (-84.7023032695021 45.0087112),1299,http://www.gaylordregional.com/default.htm,KGLR,Gaylord,Otsego County,Michigan
+GLS,America/Chicago,Scholes Field,GLS,US,POINT (-94.860275 29.2675),26,,KGLS,Galveston,Galveston County,Texas
+GLU,Asia/Thimphu,Gelephu Airport,GLU,BT,POINT (90.46150604689606 26.88757475),980,,VQGP,Sarpang,,Geylegphug
+GLW,America/Chicago,Municipal,GLW,US,POINT (-85.916664 37),770,http://www.glasgowaviation.com/,KGLW,Glasgow,Barren County,Kentucky
+GXF,Asia/Aden,Seiyun,GXF,YE,POINT (48.789005860185995 15.96591155),2083,,OYSY,Al Hamdi,,Muhafazat Hadramawt
+GXH,Asia/Shanghai,Gannan Xiahe Airport,GXH,CN,POINT (102.62235479262483 34.819082699999996),10357,,ZLXH,Nawu,,Gansu Sheng
+GOS,Australia/Sydney,Gosford,GOS,AU,POINT (151.35 -33.433334),104,,,East Gosford,Gosford Shire,New South Wales
+YVQ,America/Yellowknife,Norman Wells,YVQ,CA,POINT (-126.79806851473037 65.2805699),238,,CYVQ,,,
+GUU,Atlantic/Reykjavik,Grundarfjordur,GUU,IS,POINT (-23.218415679889333 64.9944471),45,,BIGF,,,
+BDK,Africa/Abidjan,Bondoukou,BDK,CI,POINT (-2.763268015586016 8.0151654),1227,,DIBU,Bondoukou,,Zanzan
+FXO,Africa/Maputo,Cuamba,FXO,MZ,POINT (36.53171848953477 -14.817214400000001),1879,,FQCB,Cuamba,,Niassa
+GLZ,Europe/Amsterdam,Gilze-Rijen,GLZ,NL,POINT (4.75 51.583332),29,http://www.defensie.nl/luchtmacht/luchtmachtbases/gilze-rijen/,EHGR,Breda,Gemeente Breda,North Brabant
+GMA,Africa/Kinshasa,Gemena,GMA,CD,POINT (19.77047305669 3.2355095),1348,,FZFK,Gemena,,Equateur
+GMB,Africa/Addis_Ababa,Gambela Airport,GMB,ET,POINT (34.583332 8.283333),1561,,HAGM,Gambela,,Gambela
+GMC,America/Bogota,Guerima,GMC,CO,POINT (-2.6 49.433334),328,,,Saint Peter Port,,St Peter Port
+GMD,Africa/Casablanca,Ben Slimane,GMD,MA,POINT (-7.217645444756327 33.65400975),577,,GMMB,Bouznika,Benslimane,Chaouia-Ouardigha
+GME,Europe/Minsk,Gomel Airport,GME,BY,POINT (31 52.416668),462,http://www.gomelavia.com/,UMGG,Gomel,,Gomel
+TLW,Pacific/Port_Moresby,Talasea,TLW,PG,POINT (150.01666 -5.366667),44,,AYVL,,,
+GMM,Africa/Brazzaville,Gamboma,GMM,CG,POINT (15.866667 -1.933333),1056,,FCOG,Gamboma,,Plateaux
+GMN,Pacific/Auckland,Greymouth,GMN,NZ,POINT (171.19048929277787 -42.4623486),55,,NZGM,Greymouth,Grey District,West Coast
+GMO,Africa/Lagos,Gombe Lawanti International Airport,GMO,NG,POINT (10.89639355471698 10.296975199999999),1509,,DNGO,Akko,,Gombe
+GMP,Asia/Seoul,Gimpo International Airport,SEL,KR,POINT (126.7942402657747 37.55900775),52,http://gimpo.airport.co.kr/eng/index.jsp,RKSS,Bucheon-si,,Gyeonggi-do
+GMQ,Asia/Shanghai,Golog Maqin Airport,GMQ,CN,POINT (100.2996592925447 34.41974775),12322,,ZLGL,Dawu,,Qinghai Sheng
+GMS,America/Fortaleza,Guimaraes,GMS,BR,POINT (-44.7 -2.15),177,,SNYW,Bequimao,Bequimao,Maranhao
+GMU,America/New_York,Greenville Downtown,GSP,US,POINT (-82.35213836642926 34.84803945),977,http://www.greenvilledowntownairport.com/,KGMU,Greenville,Greenville County,South Carolina
+GMZ,Atlantic/Canary,La Gomera Airport,GMZ,ES,POINT (-17.2143289320269 28.030483750000002),695,,GCGM,Alajero,Provincia de Santa Cruz de Tenerife,Canary Islands
+GNA,Europe/Minsk,Grodno Airport,GNA,BY,POINT (23.8 53.666668),406,,UMMG,Hrodna,,Grodnenskaya
+GNB,Europe/Paris,Grenoble-Isere Airport,LYS,FR,POINT (5.332019 45.359833),1250,,LFLS,Saint-Etienne-de-Saint-Geoirs,Departement de l'Isere,Rhone-Alpes
+GND,America/Grenada,Maurice Bishop International Airport,GND,GD,POINT (-61.78567212577312 12.0047984),29,http://www.psiagrenada.com/,TGPY,Saint George's,,Saint George
+YWJ,America/Yellowknife,Deline,YWJ,CA,POINT (-123.5 65.166664),703,,CYWJ,,,
+GNF,America/Los_Angeles,Gansner Field,GNF,US,POINT (-89.93228 33.975307),318,,"",Charleston,Tallahatchie County,Mississippi
+GNG,America/Boise,Gooding,GNG,US,POINT (-114.71667 42.933334),3556,http://www.goodingidaho.org/departments/840-2/,KGNG,Gooding,Gooding County,Idaho
+GNI,Asia/Taipei,Green Island,GNI,TW,POINT (121.46667 23.1),0,,RCGI,Taitung,Taitung,Taiwan
+GNM,America/Bahia,Guanambi,GNM,BR,POINT (-42.783333 -14.3),1729,,SNGI,Guanambi,Guanambi,Bahia
+GNN,Africa/Addis_Ababa,Ghinnir,GNN,ET,POINT (40.7152085 7.1455035),6325,,HAGH,Ginir,,Oromiya
+GNR,America/Argentina/Salta,General Roca,GNR,AR,POINT (-67.6 -39.983334),1446,,SAHR,Sierra Colorada,,Rio Negro
+YGX,America/Winnipeg,Gillam,YGX,CA,POINT (-94.7121796275236 56.356811949999994),476,,CYGX,,,
+HAD,Europe/Stockholm,Halmstad Airport,HAD,SE,POINT (12.820655511825056 56.69265085000001),32,,ESMT,Halmstad,Halmstads Kommun,Halland
+YVP,America/Montreal,Kuujjuaq Airport,YVP,CA,POINT (-68.42739348649496 58.0906856),129,,CYVP,,,
+XLB,America/Winnipeg,Lac Brochet,XLB,CA,POINT (-101.46968211120176 58.61344095),1211,,CZWH,,,
+HCA,America/Chicago,Howard County,HCA,US,POINT (-101.43389 32.30361),2542,http://www.mybigspring.com/pages/airport,KHCA,Big Spring,Howard County,Texas
+HCC,America/New_York,Columbia County,HCC,US,POINT (-73.71160128274613 42.29045015),190,,"1B1",Stottville,Columbia County,New York
+HCJ,Asia/Shanghai,Hechi Jinchengjiang Airport,HCJ,CN,POINT (107.71074985180161 24.8048431),2125,,ZGHC,Nandan Chengguanzhen,,Guangxi Zhuangzu Zizhiqu
+HCM,Africa/Mogadishu,Eil,HCM,SO,POINT (49.8 7.916667),452,,HCME,Eyl,,Nugaal
+BAP,Pacific/Port_Moresby,Baibara,BAP,PG,POINT (149.75 -10.333333),104,,"",,,
+CNZ,Africa/Luanda,Cangamba,CNZ,AO,POINT (19 -11.5),4320,,"",Luena,,Moxico
+YRN,America/Vancouver,Rivers Inlet,YRN,CA,POINT (-127.583336 51.466667),0,,CAU8,,,
+YRS,America/Winnipeg,Red Sucker Lake,YRS,CA,POINT (-93.5571976 54.1671982),729,,CYRS,,,
+GAE,Africa/Tunis,Gabès Matmata International Airport,GAE,TN,POINT (9.91434898577769 33.7307163),367,,DTTG,Gabes,,Qabis
+GEC,Asia/Nicosia,Gecitkale,GEC,CY,POINT (33.72248004854772 35.23600295),121,,LCGK,Lefkonoiko,,Ammochostos
+GIM,Africa/Libreville,Miele Mimbale,GIM,GA,POINT (11.4 -0.016667),954,,,,,
+GJR,Atlantic/Reykjavik,Gjogur,GJR,IS,POINT (-21.32550892668984 65.99647665),49,,BIGJ,,,
+GNT,America/Denver,Milan,GNT,US,POINT (-107.86667 35.15),6453,,KGNT,Grants,Cibola County,New Mexico
+GNV,America/New_York,Gainesville Regional Airport,GNV,US,POINT (-82.27670959706018 29.6865213),104,,KGNV,Gainesville,Alachua County,Florida
+GNZ,Africa/Gaborone,Ghanzi,GNZ,BW,POINT (21.65829447260062 -21.6924038),3684,,FBGZ,Ghanzi,,Ghanzi
+GOA,Europe/Rome,Genoa Cristoforo Colombo Airport,GOA,IT,POINT (8.843503285615387 44.4127072),16,http://www.aeroportodigenova.com/en/home/index.php,LIMJ,San Teodoro,Provincia di Genova,Liguria
+GOB,Africa/Addis_Ababa,Goba,GOB,ET,POINT (39.980556 7.013889),8832,,HAGB,,,
+GOG,Africa/Windhoek,Gobabis,GOG,NA,POINT (18.97155062506426 -22.5053774),4681,,FYGB,,,
+GOH,America/Godthab,Nuuk Airport,GOH,GL,POINT (-51.67788040878934 64.1927724),203,,BGGH,Nuuk,,Sermersooq
+GOI,Asia/Kolkata,Dabolim Airport,GOI,IN,POINT (73.8317012646639 15.380501500000001),141,,VOGO,Chicalim,South Goa,Goa
+GOJ,Europe/Moscow,Nizhny Novgorod International Airport,GOJ,RU,POINT (43.789764 56.218613),239,http://www.airportnn.ru/en/,UWGG,Gorbatovka,,Nizjnij Novgorod
+GOK,America/Chicago,Guthrie,GOK,US,POINT (-97.4172535481175 35.85228895),1076,http://www.guthrieedmondregionalairport.com/,KGOK,Guthrie,Logan County,Oklahoma
+GOL,America/Los_Angeles,State,GOL,US,POINT (-124.416664 42.416668),160,http://www.portofgoldbeach.com/Airport.htm,K4S1,Gold Beach,Curry County,Oregon
+GOM,Africa/Lubumbashi,Goma Airport,GOM,CD,POINT (29.238111563658414 -1.66486355),5009,,FZNA,Goma,,Nord Kivu
+GUT,Europe/Berlin,Guetersloh,GUT,DE,POINT (8.383333 51.9),252,,ETUO,,,
+TWE,America/Anchorage,Taylor,TWE,US,POINT (-164.85 65.73333),440,,AK49,,,
+GCJ,Africa/Johannesburg,Grand Central,JNB,ZA,POINT (28.15 -26.233334),5364,,FAGC,Germiston,Ekurhuleni Metropolitan Municipality,Gauteng
+GON,America/New_York,New London,GON,US,POINT (-72.04639 41.328888),26,,KGON,Long Hill,New London County,Connecticut
+GOO,Australia/Brisbane,Goondiwindi,GOO,AU,POINT (150.31944 -28.524445),679,,YGDI,Goondiwindi,Goondiwindi,Queensland
+GOP,Asia/Kolkata,Gorakhpur Airport,GOP,IN,POINT (83.4518935 26.7441884),236,http://www.aai.aero/allAirports/gorakhpur.jsp,VEGK,Gorakhpur,Gorakhpur,Uttar Pradesh
+GOQ,Asia/Shanghai,Golmud Airport,GOQ,CN,POINT (94.78625877168798 36.40046475),9327,,ZLGM,Guolemude,,Heilongjiang Sheng
+GOR,Africa/Addis_Ababa,Gore,GOR,ET,POINT (35.552288 8.1594382),6604,,HAGR,Gore,,Oromiya
+GOU,Africa/Douala,Garoua Airport,GOU,CM,POINT (13.377202011034774 9.3372216),751,,FKKR,Garoua,,North Province
+GOZ,Europe/Sofia,Gorna Oriahovitsa,GOZ,BG,POINT (25.666668 43.11667),793,,LBGO,Gorna Oryakhovitsa,Obshtina Gorna Oryakhovitsa,Veliko Turnovo
+GPA,Europe/Athens,Araxos Airport,GPA,GR,POINT (21.733334 38.25),16,http://www.araxos-airport.gr/,LGRX,Patra,Nomos Achaias,West Greece
+GPB,America/Sao_Paulo,Tancredo Thomaz Faria,GPB,BR,POINT (-51.5 -25.333332),3395,,SSGG,Guarapuava,Guarapuava,Parana
+GPL,America/Costa_Rica,Guapiles,GPL,CR,POINT (-83.79711538455672 10.21719575),843,,MRGP,Guapiles,Canton de Pococi,Limon
+GPN,Australia/Darwin,Garden Point,GPN,AU,POINT (130.01666 -11.766667),0,,YGPT,Nightcliff,Darwin,Northern Territory
+GPO,America/Argentina/Salta,General Pico,GPO,AR,POINT (-63.766666 -35.63333),446,,SAZG,General Pico,,La Pampa
+GPS,Pacific/Galapagos,Baltra Airport,GPS,EC,POINT (-90.26511110483055 -0.4548118),180,,SEGS,Puerto Ayora,,Galapagos
+GPT,America/Chicago,Gulfport-Biloxi International Airport,GPT,US,POINT (-89.07143302103171 30.40711375),29,,KGPT,West Gulfport,Harrison County,Mississippi
+GPZ,America/Chicago,Grand Rapids,GPZ,US,POINT (-93.51111 47.214443),1282,http://grandrapids.govoffice.com/vertical/Sites/%7B938C328A-AD1C-45AA-A862-764C60A37DEF%7D/uploads/%7B7E8C4920-D1DC-4696-9A43-FF,KGPZ,Grand Rapids,Itasca County,Minnesota
+GQQ,America/New_York,Galion,GQQ,US,POINT (-82.72416303076787 40.752639450000004),1246,http://www.ci.galion.oh.us/airport/airport.html,KGQQ,Galion,Crawford County,Ohio
+YTE,America/Iqaluit,Cape Dorset,YTE,CA,POINT (-76.52438761760335 64.2301779),164,,CYTE,,,
+KOF,Africa/Johannesburg,Komatipoort,KOF,ZA,POINT (31.9300219 -25.4405985),541,,FAKP,,,
+GYI,Africa/Kigali,Gisenyi,GYI,RW,POINT (29.259052480220763 -1.6788652499999999),5026,,HRYG,Gisenyi,,Western Province
+HHI,Pacific/Honolulu,Wheeler AFB,HHI,US,POINT (-158.03334 21.5),869,,PHHI,Wahiawa,Honolulu County,Hawaii
+KFA,Africa/Nouakchott,Kiffa,KFA,MR,POINT (-11.41207796210941 16.58686265),430,,GQNF,,,
+HHN,Europe/Berlin,Frankfurt - Hahn Airport,FRA,DE,POINT (7.261210336785306 49.944633350000004),1692,,EDFH,Lautzenhausen,,Rheinland-Pfalz
+AWE,Africa/Libreville,Alowe,AWE,GA,POINT (9.45 -0.75),360,,FOGW,,,
+GRA,America/Bogota,Gamarra,GRA,CO,POINT (-73.7 8.333333),216,,,Gamarra,,Cesar
+GRB,America/Chicago,Austin Straubel International Airport,GRB,US,POINT (-88.14362007159838 44.47848805),679,,KGRB,Ashwaubenon,Brown County,Wisconsin
+GRD,America/New_York,Greenwood,GRD,US,POINT (-82.15833 34.25139),587,,KGRD,Greenwood,Greenwood County,South Carolina
+GRE,America/Chicago,Municipal,GRE,US,POINT (-89.416664 38.88333),557,,KGRE,Greenville,Bond County,Illinois
+GRF,America/Los_Angeles,Gray AAF,TIW,US,POINT (-122.58225073031072 47.07929475),134,,KGRF,Fort Lewis,Pierce County,Washington
+GRG,Asia/Kabul,Gardez,GRG,AF,POINT (69.11667 33.61667),7791,,OAGZ,Gardez,,Paktia
+GRI,America/Chicago,Grand Island Airport,GRI,US,POINT (-98.30753671710008 40.970514949999995),1856,,KGRI,Grand Island,Hall County,Nebraska
+GRJ,Africa/Johannesburg,George Airport,GRJ,ZA,POINT (22.382235 -34.00148),616,,FAGG,George,Eden District Municipality,Western Cape
+GRK,America/Chicago,Robert Gray Army Airfield,ILE,US,POINT (-97.83186644916418 31.0677835),895,,KGRK,Fort Hood,Bell County,Texas
+GRM,America/Chicago,Devils Track,GRM,US,POINT (-85.98333 46.666668),728,http://www.boreal.org/airport/,KCKC,Newberry,Luce County,Michigan
+GRN,America/Denver,Gordon,GRN,US,POINT (-102.2 42.8),3523,,KGRN,Gordon,Sheridan County,Nebraska
+GRO,Europe/Madrid,Girona-Costa Brava Airport,GRO,ES,POINT (2.762426044162633 41.904494650000004),383,,LEGE,Vilobi d'Onyar,Provincia de Girona,Catalonia
+GRQ,Europe/Amsterdam,Eelde Airport,GRQ,NL,POINT (6.581723234492909 53.1214959),36,,EHGG,Vries,Gemeente Tynaarlo,Drenthe
+GRR,America/Detroit,Gerald R. Ford International Airport,GRR,US,POINT (-85.53488239724246 42.876614700000005),784,http://www.grr.org/,KGRR,Forest Hills,Kent County,Michigan
+GRS,Europe/Rome,Baccarini,GRS,IT,POINT (11.070556 42.761944),32,,LIRS,Grosseto,Provincia di Grosseto,Tuscany
+KBF,Asia/Jayapura,Karubaga,KBF,ID,POINT (138.45 -3.716667),5200,,WABK,,,
+WKK,America/Anchorage,Aleknagik,WKK,US,POINT (-158.6181 59.2824),29,,"5A8",,,
+HKS,America/Chicago,Hawkins Field,JAN,US,POINT (-90.2 32.3),311,http://jmaa.com/hks/,KHKS,Jackson,Hinds County,Mississippi
+AUJ,Pacific/Port_Moresby,Ambunti,AUJ,PG,POINT (142.82335592047713 -4.21583375),72,,AYAT,,,
+KRI,Pacific/Port_Moresby,Kikori,KRI,PG,POINT (144.26666 -7.483333),50,,AYKK,,,
+KNP,Africa/Luanda,Capanda,KNP,AO,POINT (15.456842705242192 -9.77093795),3366,,FNCP,,,
+GRT,Asia/Karachi,Gujrat,GRT,PK,POINT (74.03333 32.666668),764,,"",Lala Musa,,Punjab
+GRU,America/Sao_Paulo,Sao Paulo-Guarulhos International Airport,SAO,BR,POINT (-46.481320528800595 -23.43779495),2460,http://www.infraero.gov.br/,SBGR,Guarulhos,Guarulhos,Sao Paulo
+KGB,Pacific/Port_Moresby,Konge,KGB,PG,POINT (147.65 -6.133333),5900,,AYOE,,,
+YMA,America/Whitehorse,Mayo,YMA,CA,POINT (-135.8690225156807 63.6166166),1653,,CYMA,,,
+GRV,Europe/Moscow,Groznyy Airport,GRV,RU,POINT (45.75 43.333332),354,,URMG,Staraya Sunzha,,Chechnya
+KSB,Pacific/Port_Moresby,Kasanombe,KSB,PG,POINT (146.98550760964184 -6.381604),5800,,AYNM,,,
+YHN,America/Toronto,Hornepayne,YHN,CA,POINT (-84.7589035 49.1931),1099,,CYHN,,,
+GRW,Atlantic/Azores,Graciosa Island Airport,GRW,PT,POINT (-28.027958 39.090954),82,,LPGR,Lagoa,Santa Cruz da Graciosa,Azores
+GRX,Europe/Madrid,Granada Airport,GRX,ES,POINT (-3.7773012289734282 37.186798749999994),1840,,LEGR,Chauchina,Provincia de Granada,Andalusia
+GRY,Atlantic/Reykjavik,Grimsey,GRY,IS,POINT (-18.017508841990626 66.54678075),39,,BIGR,Dalvik,,Northeast
+GRZ,Europe/Vienna,Graz Airport,GRZ,AT,POINT (15.440023285611247 46.98874805),1076,http://www.flughafen-graz.at/,LOWG,Feldkirchen bei Graz,Politischer Bezirk Graz-Umgebung,Styria
+GSA,Asia/Kuching,Long Pasia,GSA,MY,POINT (115.7247525 4.4090966),3316,,WBKN,Kayan Hulu,,North Kalimantan
+GSB,America/New_York,Seymour Johnson AFB,GSB,US,POINT (-77.98333 35.38333),121,http://www.seymourjohnson.af.mil/,KGSB,Goldsboro,Wayne County,North Carolina
+GSE,Europe/Stockholm,Gothenburg City Airport,GOT,SE,POINT (11.864513 57.77775),26,https://www.saveflygplats.com/,ESGP,Majorna,Goteborg,Vaestra Goetaland
+GSH,America/Indiana/Indianapolis,Goshen,GSH,US,POINT (-85.833336 41.583332),810,http://www.goshenindiana.org/content/goshen-municipal-airport,KGSH,Goshen,Elkhart County,Indiana
+GSQ,Africa/Cairo,Shark Elowainat,GSQ,EG,POINT (28.716667 22.583332),797,,HEOW,,,
+GSR,Africa/Mogadishu,Gardo,GSR,SO,POINT (49.05 9.5),2503,,HCMG,,,
+GSY,Europe/London,Binbrook,GSY,GB,POINT (-0.083333 53.583332),0,,,Grimsby,North East Lincolnshire,England
+GTC,America/Nassau,Green Turtle,GTC,BS,POINT (-77.36667 26.25),0,,,Hard Bargain,,Moore's Island
+KLP,America/Sitka,Kelp Bay,KLP,US,POINT (-134.86667 57.55),0,,,,,
+YCA,America/Vancouver,Courtenay,YCA,CA,POINT (-124.98333 49.683334),19,,CAH3,,,
+GTF,America/Denver,Great Falls International Airport,GTF,US,POINT (-111.37557897482165 47.4800263),3664,,KGTF,Great Falls,Cascade County,Montana
+KOZ,America/Anchorage,Ouzinkie SPB,KOZ,US,POINT (-152.5 57.916668),55,,"",,,
+LAB,Pacific/Port_Moresby,Lablab,LAB,PG,POINT (148.06667 -5.633333),160,,AYLB,,,
+KYX,Pacific/Port_Moresby,Yalumet,KYX,PG,POINT (147.01666 -6.183333),2600,,AYYE,,,
+BAW,Africa/Libreville,Biawonque,BAW,GA,POINT (146.35 -0.666667),0,,,,,
+HNI,Pacific/Port_Moresby,Heiweni,HNI,PG,POINT (159.44695 22.213057),3480,,AYHE,Enewetak,,Enewetak Atoll
+YGB,America/Vancouver,Gillies Bay,YGB,CA,POINT (-124.5066531 49.6909262),326,,CYGB,,,
+GTG,America/Chicago,Municipal,GTG,US,POINT (-92.683334 45.783333),921,http://www.grantsburgwi.com/airport.html,KGTG,Grantsburg,Burnett County,Wisconsin
+GTI,Europe/Berlin,Guettin,GTI,DE,POINT (12.316667 54.38333),0,,EDCG,Ostseebad Dierhagen,,Mecklenburg-Vorpommern
+YHH,America/Vancouver,Harbor SPB,YBL,CA,POINT (-125.26556 49.94639),0,,CAE3,,,
+GTK,Asia/Kuala_Lumpur,Sungei Tekai,GTK,MY,POINT (102.916664 2.6),154,,,Segamat,,Johor
+YHG,America/St_Johns,Charlottetown,YHG,CA,POINT (-56.1 52.766666),0,,,,,
+GTO,Asia/Makassar,Tolotio Airport,GTO,ID,POINT (122.850876 0.639039),121,,WAMG,Isimu,,Gorontalo
+GUL,Australia/Sydney,Goulburn,GUL,AU,POINT (149.71666 -34.75),2080,,YGLB,Goulburn,Goulburn Mulwaree,New South Wales
+GUM,Pacific/Guam,A.B. Won Pat International Airport,GUM,GU,POINT (144.80486 13.492787),282,http://www.guamairport.com/,PGUM,Tamuning-Tumon-Harmon Village,,Tamuning
+GUO,America/Tegucigalpa,Gualaco,GUO,HN,POINT (-86.13333 15.116667),2152,,MHJI,Gualaco,,Olancho
+GUP,America/Denver,Senator Clark,GUP,US,POINT (-108.78667 35.511112),6463,,KGUP,Gallup,McKinley County,New Mexico
+GUS,America/Indiana/Indianapolis,Grissom AFB,GUS,US,POINT (-86.066666 40.75),639,http://www.grissom.afrc.af.mil/,KGUS,Peru,Miami County,Indiana
+GUW,Asia/Aqtau,Atyrau Airport,GUW,KZ,POINT (51.8232747235264 47.12124025),-114,,UATG,Atyrau,,Atyrau
+GUX,Asia/Kolkata,Guna,GUX,IN,POINT (77.316666 24.666668),1571,,VAGN,Guna,Guna,Madhya Pradesh
+GUY,America/Chicago,Guymon,GUY,US,POINT (-101.50770533358747 36.68606775),3202,http://www.guymonok.org/index.aspx?NID=179,KGUY,Guymon,Texas County,Oklahoma
+GUZ,America/Sao_Paulo,Guarapari,QDL,BR,POINT (-40.49178638456354 -20.6469745),39,,SNGA,Guarapari,Guarapari,Espirito Santo
+GVA,Europe/Zurich,Geneve Airport,GVA,CH,POINT (6.108121245519259 46.23781635),1368,http://www.gva.ch/,LSGG,Les Avanchets,Geneva,Geneva
+GVE,America/New_York,Municipal,GVE,US,POINT (-78.2 38.13333),508,http://www.townofgordonsville.org/index.aspx?nid=125,KGVE,Gordonsville,Orange County,Virginia
+GVL,America/New_York,Lee Gilmer Memorial,GVL,US,POINT (-83.82681674804135 34.27232265),1253,https://www.gainesville.org/lee-gilmer-memorial-airport,KGVL,Gainesville,Hall County,Georgia
+GVN,Asia/Vladivostok,May-Gatka,GVN,RU,POINT (140.0297395 48.9249059),790,,UHKM,Mayskiy,,Khabarovsk Krai
+GVR,America/Sao_Paulo,Governador Valadares Airport,GVR,BR,POINT (-41.933334 -18.850279),492,,SBGV,Governador Valadares,Governador Valadares,Minas Gerais
+GVT,America/Chicago,Majors Field,GVT,US,POINT (-96.06167 33.066666),564,,KGVT,Greenville,Hunt County,Texas
+GVW,America/Chicago,Richards-Gebaur,GVW,US,POINT (-94.53333 38.88333),1053,,,Grandview,Jackson County,Missouri
+GVX,Europe/Stockholm,Sandviken,GVX,SE,POINT (16.95115381638249 60.592861799999994),49,,ESSK,Valbo,Gavle Kommun,Gaevleborg
+HOR,Atlantic/Azores,Horta Airport,HOR,PT,POINT (-28.716209171173396 38.52036765),78,,LPHR,Ribeira Grande,,Azores
+HOS,America/Argentina/Salta,Oscar Reguera,HOS,AR,POINT (-70.21667 -37.416668),2680,,SAHC,Chos Malal,,Neuquen
+HOT,America/Chicago,Memorial Field,HOT,US,POINT (-93.09566931295522 34.4826632),524,,KHOT,Piney,Garland County,Arkansas
+HOV,Europe/Oslo,Hovden Airport,HOV,NO,POINT (6.068381079971115 62.17820605),249,https://avinor.no/en/airport/orsta-volda-airport/,ENOV,Volda,Volda,More og Romsdal
+HOX,Asia/Rangoon,Homalin Airport,HOX,MM,POINT (94.91514266572523 24.899037149999998),511,,VYHL,Yairipok,Thoubal,Manipur
+MUF,Asia/Jayapura,Muting,MUF,ID,POINT (140.33333 -7.5),16,,"",,,
+RUF,Asia/Jayapura,Yuruf,RUF,ID,POINT (140.9064281 -3.6036479),1197,,WAJE,,,
+RAQ,Asia/Makassar,Sugimanuru,RAQ,ID,POINT (122.583336 -4.916667),288,,WAWR,,,
+LIQ,Africa/Kinshasa,Lisala,LIQ,CD,POINT (21.495832 2.172222),1509,,FZGA,,,
+BBT,Africa/Bangui,Berberati,BBT,CF,POINT (15.786019586870358 4.2228219),1886,,FEFT,Berberati,,Mambere-Kadei
+BPF,Pacific/Guadalcanal,Batuna Aerodrome,BPF,SB,POINT (158.11667 -8.55),259,,AGBT,,,
+FDU,Africa/Kinshasa,Bandundu,FDU,CD,POINT (17.38124252269217 -3.3113069),1072,,FZBO,Bandundu,,Bandundu
+FNE,Pacific/Port_Moresby,Fane,FNE,PG,POINT (147.23334 -8.6),6295,,AYFA,,,
+FYT,Africa/Ndjamena,Faya,FYT,TD,POINT (19.107749750503856 17.91760565),728,,FTTY,Faya-Largeau,,Borkou
+GWE,Africa/Harare,Gweru,GWE,ZW,POINT (29.86111 -19.435833),4714,,FVTL,Gweru,,Midlands
+GXQ,America/Santiago,Ten. Vidal,GXQ,CL,POINT (-72.09861 -45.58889),984,,SCCY,Coihaique,Provincia de Coyhaique,Aisen
+GXX,Africa/Douala,Yagoua,GXX,CM,POINT (15.2378592 10.3563758),1066,,FKKJ,Yagoua,,Far North
+GXY,America/Denver,Weld County,GXY,US,POINT (-104.7 40.416668),4701,http://www.gxy.net/,KGXY,Greeley,Weld County,Colorado
+GYA,America/La_Paz,Guayaramerin Airport,GYA,BO,POINT (-65.361664 -10.83),459,,SLGY,Guayaramerin,,El Beni
+GYD,Asia/Baku,Heydar Aliyev International Airport,BAK,AZ,POINT (50.04917439624536 40.4728196),-26,http://www.airport-baku.com/,UBBB,Yeni Suraxani,,Baki
+GYE,America/Guayaquil,Jose Joaquin de Olmedo Airport,GYE,EC,POINT (-79.88032 -2.142654),36,,SEGU,Eloy Alfaro,,Guayas
+GYG,Asia/Yakutsk,Magan Airport,GYG,RU,POINT (129.5622651182063 62.108316349999996),574,,UEMM,Magan,,Sakha
+GYM,America/Hermosillo,Gen Jose M Yanez,GYM,MX,POINT (-110.93056 27.955557),65,http://guaymas.asa.gob.mx/wb/webasa/guaymas_aeropuertos,MMGM,Heroica Guaymas,,Sonora
+GYN,America/Sao_Paulo,Santa Genoveva Airport,GYN,BR,POINT (-49.226624 -16.632631),2440,,SBGO,Goiania,Goiania,Goias
+GYP,Australia/Brisbane,Gympie,GYP,AU,POINT (152.63333 -26.183332),311,,YGYM,Gympie,Gympie Regional Council,Queensland
+GYR,America/Phoenix,Litchfield,GYR,US,POINT (-112.35 33.433334),958,http://goodyearairport.com/,KGYR,Avondale,Maricopa County,Arizona
+GYS,Asia/Shanghai,Guang Yuan Airport,GYS,CN,POINT (105.69534195351403 32.3907322),2047,,ZUGU,Guangyuan,,Sichuan
+GYU,Asia/Shanghai,Guyuan Liupanshan Airport,GYU,CN,POINT (43.9 40.833332),5223,,ZLGY,Shirak,,Shirak
+GYY,America/Chicago,Gary/Chicago International,GYY,US,POINT (-87.41414025428601 41.61782635),564,,,East Chicago,Lake County,Indiana
+GZA,Asia/Gaza,Gaza - Yaser Arafat International Airport,GZA,PS,POINT (34.27611 31.24639),288,,LVGZ,Shukat as Sufi,,Gaza Strip
+GZG,Asia/Shanghai,Garze Gesar Airport,GZG,CN,POINT (99.553507 31.7548325),13484,,ZUGZ,Ganzi,,Sichuan
+GZI,Asia/Kabul,Ghazni,GZI,AF,POINT (68.416664 33),7654,,OAGN,Khayr Kot,,Paktika
+GZM,Europe/Malta,Gozo Heliport,GZM,MT,POINT (14.208333 36.041668),347,,,Saint Lucia,,Saint Lucia
+HDB,Europe/Berlin,Airfield Heidelberg,HDB,DE,POINT (8.6525 49.3933),780,,ETIE,Heidelberg,,
+FAK,America/Sitka,False Island,FAK,US,POINT (-135.2132601 57.5324682),0,,"2Z6",,,
+HRJ,Asia/Kathmandu,Chaurjhari,HRJ,NP,POINT (82.333336 28),2437,,,Tulsipur,,Mid Western
+FOM,Africa/Douala,Foumban,FOM,CM,POINT (10.833333 5.75),3881,,FKKM,Foumban,,West
+FRQ,Pacific/Port_Moresby,Feramin,FRQ,PG,POINT (141.7 -5.416667),5236,,AYFE,,,
+GAX,Africa/Libreville,Gamba,GAX,GA,POINT (9.983333 -2.766667),26,,FOGX,,,
+AHW,Asia/Tehran,Saih Rawl,AHW,OM,POINT (48.74668 31.34292),55,,,,,
+BKR,Africa/Ndjamena,Bokoro,BKR,TD,POINT (17.233334 12.416667),974,,FTTK,Bokoro,,Hadjer-Lamis
+BMW,Africa/Algiers,Bordj Badji Mokhtar,BMW,DZ,POINT (1.033333 21.316668),1361,,DATM,Tessalit,,Kidal
+BNQ,Asia/Manila,Baganga,BNQ,PH,POINT (121.05 13.25),3963,,"",Aurora,Province of Mindoro Oriental,Mimaropa
+BNR,Africa/Ouagadougou,Banfora,BNR,BF,POINT (-4.666667 10.666667),1013,,DFOB,Banfora,Province de la Comoe,Cascades
+BNV,Pacific/Port_Moresby,Boana,BNV,PG,POINT (146.81667 -6.425),2627,,"",,,
+BOP,Africa/Bangui,Bouar,BOP,CF,POINT (15.666667 6),3179,,FEFO,Bouar,,Nana-Mambere
+BTG,Africa/Bangui,Batangafo,BTG,CF,POINT (18.333332 7.416667),1423,,FEGF,Batangafo,,Ouham
+BZB,Africa/Maputo,Bazaruto Island,BZB,MZ,POINT (35.49167 -21.534721),104,,"",,,
+HRK,Europe/Kiev,Kharkov Airport,HRK,UA,POINT (36.281185 49.92078),469,http://www.airport.kharkov.ua/,UKHH,Bezlyudivka,,Kharkiv
+HRL,America/Chicago,Valley International Airport,HRL,US,POINT (-97.65348464393676 26.231114849999997),29,,KHRL,Harlingen,Cameron County,Texas
+GBF,Pacific/Port_Moresby,Negarbo,GBF,PG,POINT (144.7040875277135 -6.56774825),4491,,AYNE,,,
+GDI,Africa/Bangui,Gordil,GDI,CF,POINT (21.583332 9.733333),1371,,FEGL,,,
+GZO,Pacific/Guadalcanal,Gizo Airport,GZO,SB,POINT (156.86506062321428 -8.0999822),62,,AGGN,,,
+GZW,Asia/Tehran,Ghazvin,GZW,IR,POINT (50.033333 36.233334),4156,,OIIK,Qazvin,,Qazvin
+HAA,Europe/Oslo,Hasvik Airport,HAA,NO,POINT (22.15 70.46667),0,https://avinor.no/en/airport/hasvik-airport/,ENHK,Breivikbotn,Hasvik,Finnmark Fylke
+HAB,America/Chicago,Marion County,HAB,US,POINT (-88.1 34.15),541,,KHAB,Hamilton,Marion County,Alabama
+HAF,America/Los_Angeles,Half Moon,HAF,US,POINT (-122.433334 37.466667),59,,KHAF,Half Moon Bay,San Mateo County,California
+HOQ,Europe/Berlin,Hof,HOQ,DE,POINT (11.862222 50.289165),1893,,EDQM,Konradsreuth,Upper Franconia,Bavaria
+HTG,Asia/Krasnoyarsk,Hatanga Airport,HTG,RU,POINT (102.51148804695876 71.97928245),49,,UOHH,Khatanga,,Krasnoyarskiy
+HTH,America/Los_Angeles,Hawthorne,HTH,US,POINT (-118.63333 38.533333),4245,,KHTH,Hawthorne,Mineral County,Nevada
+HTL,America/Detroit,Roscommon County,HTL,US,POINT (-84.71111 44.448055),1230,,KHTL,Roscommon,Roscommon County,Michigan
+HTM,Asia/Ulaanbaatar,Khatgal,HTM,MN,POINT (100.13378814138233 50.4410984),5485,,ZMHG,Manhan,,Hovsgol
+HTN,Asia/Shanghai,Hotan Airport,HTN,CN,POINT (79.86284691607489 37.032160149999996),4655,,ZWTN,Nu'erbage,,Xinjiang Uygur Zizhiqu
+HTO,America/New_York,East Hampton,HTO,US,POINT (-72.24989487955673 40.96146555),32,http://www.town.east-hampton.ny.us/htmlpages/Airport/AirportHome.htm,KHTO,Bridgehampton,Suffolk County,New York
+HTS,America/New_York,Tri-State/Milton Airport,HTS,US,POINT (-82.55960211897741 38.36796505),800,,KHTS,Ceredo,Wayne County,West Virginia
+HTT,Asia/Shanghai,Huatugou Airport,HTT,CN,POINT (90.84588923213853 38.1926285),9527,,ZLHX,Gasi,,Qinghai Sheng
+AFD,Africa/Johannesburg,Port Alfred,AFD,ZA,POINT (26.883333 -33.583332),118,,FAPA,,,
+AGD,Asia/Jayapura,Anggi,AGD,ID,POINT (133.86667 -1.383333),6627,,WASG,Warmare,,West Papua
+AII,Africa/Djibouti,Alisabieh,AII,DJ,POINT (42.716667 11.15),2290,,HDAS,'Ali Sabieh,,Ali Sabieh
+BTB,Africa/Brazzaville,Betou,BTB,CG,POINT (18.5 3.05),1099,,FCOT,Mongoumba,,Lobaye
+CDO,Africa/Johannesburg,Cradock,CDO,ZA,POINT (25.6 -32.13333),3005,,FACD,Cradock,Chris Hani District Municipality,Eastern Cape
+CEX,America/Anchorage,Chena Hot Springs,CEX,US,POINT (-146.16667 65.05),1099,,AK13,,,
+ELR,Asia/Jayapura,Elelim,ELR,ID,POINT (140.06667 -3.816667),1807,,WAJN,,,
+EMG,Africa/Johannesburg,Empangeni,EMG,ZA,POINT (31.8927469 -28.7195011),209,,FAEM,Empangeni,uThungulu District Municipality,KwaZulu-Natal
+GXG,Africa/Luanda,Negage,GXG,AO,POINT (15.45 -7.783333),4160,,FNNG,Camabatela,,Cuanza Norte
+HAI,America/Detroit,Dr Haines,HAI,US,POINT (-85.63333 41.95),856,,KHAI,Three Rivers,Saint Joseph County,Michigan
+YNM,America/Montreal,Matagami,YNM,CA,POINT (-77.7987925166334 49.76001035),918,,CYNM,,,
+HTV,America/Chicago,Huntsville,HTV,US,POINT (-95.55 30.716667),459,,KUTS,Huntsville,Walker County,Texas
+HAJ,Europe/Berlin,Hannover Airport,HAJ,DE,POINT (9.687236575826585 52.46144075),131,,EDDV,Langenhagen,,Lower Saxony
+HAM,Europe/Berlin,Hamburg Airport,HAM,DE,POINT (9.994550134684175 53.63636215),36,https://www.hamburg-airport.de/en/,EDDH,Fuhlsbuettel,,Hamburg
+HAN,Asia/Ho_Chi_Minh,Noi Bai International Airport,HAN,VN,POINT (105.8044969796485 21.2190339),32,,VVNB,Soc Son,,Ha Noi
+DST,Asia/Dubai,Dubai Seaplane Terminal,DST,AE,POINT (55.27162933 25.25971985),0,,,,,
+GCT,America/Phoenix,Grand Canyon Bar 10 Airport,GCT,US,POINT (-113.2311 36.258),3933,,"",,,
+RPU,Asia/Manila,San Fernando Airport,RPU,PH,POINT (120.3027532763389 16.5907558),32,,,,,
+BZX,Asia/Shanghai,Bazhong Enyang Airport,BZX,CN,POINT (106.64551555782924 31.7383789),1761,,ZUBZ,Bazhou,,Sichuan
+CFM,America/Edmonton,Conklin (Leismer) Airport,CFM,CA,POINT (-111.26878839918302 55.69372395),1870,,CET2,,,
+DBC,Asia/Harbin,Baicheng Chang'an,DBC,CN,POINT (123.02069991148937 45.5065501),449,,ZYBA,Deshun,,Jilin Sheng
+AAD,Africa/Khartoum,Adado,AAD,SO,POINT (46.637708371259194 6.09628635),980,,,Adado,,
+ADV,Africa/Khartoum,El Daein,ADV,SD,POINT (26.1186495 11.4043102),1522,,"",El Daein,,Eastern Darfur
+AEQ,Asia/Shanghai,Ar Horqin Airport,AEQ,CN,POINT (120.14934798559226 43.90797955),1400,,"",Tianshan,,Inner Mongolia
+AHJ,Asia/Shanghai,Hongyuan Airport,AHJ,CN,POINT (102.35022953452355 32.536783299999996),11591,,ZUHY,Qiongxi,,Sichuan
+GGB,America/Cuiaba,Água Boa,GGB,BR,POINT (-52.15026599220484 -14.01962765),1479,,,Mozarlandia,Mozarlandia,Goias
+AXF,Asia/Chongqing,Alxa Left Banner,AXF,CN,POINT (105.58612402368684 38.747697099999996),4580,,ZBAL,Bayan Hot,Alxa Left Banner,Inner Mongolia
+GGF,America/Santarem,Almeirim,GGF,BR,POINT (-52.57808006493803 -1.47928445),597,,,,,
+GGH,America/Sao_Paulo,Gastão Mesquita Airport,GGH,BR,POINT (-52.642222 -23.691667),1692,,,Cianorte,Cianorte,Parana
+HAO,America/New_York,Hamilton,HAO,US,POINT (-84.566666 39.4),570,http://bcra.butlercountyohio.org/,KHAO,Hamilton,Butler County,Ohio
+AYM,Asia/Dubai,Yas Island SPB,AUH,AE,POINT (54.6103 24.467),42,,"",,,
+HAR,America/New_York,Capital City,HAR,US,POINT (-76.85222 40.21611),334,http://www.flycxy.com/,KCXY,Steelton,Dauphin County,Pennsylvania
+DHG,Asia/Vladivostok,Dalnegorks,DHG,RU,POINT (135.491233 44.55892),846,,"",Dal'negorsk,,Primorskiy
+BKV,Asia/Shanghai,Bailing Airport,BKV,CN,POINT (110.3125 41.656944),4645,,,Bailingmiao,,Inner Mongolia
+HAS,Asia/Riyadh,Hail Airport,HAS,SA,POINT (41.6856697 27.4397262),3159,,OEHL,Hayil,,Mintaqat Ha'il
+BVJ,Asia/Yekaterinburg,Bovanenkovo Airport,BVJ,RU,POINT (68.34863157383327 70.3115293),26,,USDB,Aksarka,,Yamalo-Nenetskiy Avtonomnyy Okrug
+HAU,Europe/Oslo,Haugesund Airport,HAU,NO,POINT (5.2152365479364455 59.34292),88,https://avinor.no/en/airport/haugesund-airport/,ENHD,Vedavagen,Karmoy,Rogaland
+HAV,America/Havana,Jose Marti International Airport,HAV,CU,POINT (-82.41424753295806 22.987384849999998),288,,MUHA,Boyeros,,La Habana
+HAW,Europe/London,Haverfordwest,HAW,GB,POINT (-4.9610359 51.8331205),154,,EGFE,Haverfordwest,Pembrokeshire,Wales
+DJH,Asia/Dubai,Jebel Ali Seaplane Base,DJH,AE,POINT (55.023889 24.988889),29,,,Jebel Ali,,
+KFM,America/Edmonton,Kirby Lake Aerodrome,KFM,CA,POINT (-110.6375 55.355556),0,,,,,
+JWO,Asia/Seoul,Jungwon Air Base,JWO,KR,POINT (127.8855023 37.030101),0,,,Koesan,,Chungcheongbuk-do
+HAY,America/Anchorage,Haycock,HAY,US,POINT (-161.1566667 65.2008333),150,,HAY,,,
+HAZ,Pacific/Port_Moresby,Hatzfeldthaven,HAZ,PG,POINT (145.18333 -4.433333),921,,"",,,
+HBA,Australia/Hobart,Hobart International Airport,HBA,AU,POINT (147.50519 -42.837257),26,,YMHB,Seven Mile Beach,Clarence,Tasmania
+HBD,Pacific/Port_Moresby,Habi,HBD,PG,POINT (142.48902706934854 -6.32042775),935,,AYHB,,,
+HBE,Africa/Cairo,Borg El Arab Airport,ALY,EG,POINT (29.686504 30.922234),167,,HEBA,Alexandria,,Alexandria
+DBK,Asia/Colombo,Dutch Bay SPB Seaplane Base,DBK,LK,POINT (79.756 8.273),0,,"",Puttalam,,North Western
+HWD,America/Los_Angeles,Hayward Executive Airport,HWD,US,POINT (-122.1213368359861 37.65906510000001),39,http://www.hayward-ca.gov/CITY-GOVERNMENT/DEPARTMENTS/PUBLIC-WORKS-ET/HEA/,KHWD,Hayward,Alameda County,California
+HWN,Africa/Harare,Hwange Nat Park,HWN,ZW,POINT (26.518333 -19.3625),3284,,FVWN,Sua,,Central
+HWO,America/New_York,North Perry,HWO,US,POINT (-80.15 26),49,http://www.broward.org/airport/northperryairport/Pages/Default.aspx,KHWO,Hollywood,Broward County,Florida
+KQR,Australia/Perth,Karara Airport,KQR,AU,POINT (116.6872798 -29.2152397),0,,,,,
+DEQ,Asia/Shanghai,Deqing Moganshan Airport,DEQ,CN,POINT (120.107222 30.504167),29,,"",Leidian,,Zhejiang Sheng
+DWO,Asia/Colombo,Diyawanna Oya Seaplane Base,DWO,LK,POINT (79.9093208 6.904439),42,,"",Battaramulla South,,Western
+GEM,Africa/Malabo,President Obiang Nguema International Airport,GEM,GQ,POINT (11.023465279817616 1.68179985),2234,,FGMY,Mongomo,,Wele-Nzas
+GGJ,America/Sao_Paulo,Guaíra Airport,GGJ,BR,POINT (-54.19114629441818 -24.080879449999998),862,,SSGY,Salto del Guaira,,Canindeyu
+GHK,America/Yellowknife,Gahcho Kue Aerodrome,GHK,CA,POINT (-109.144785 63.4353409),1430,,CGK2,,,
+GYZ,Australia/Perth,Gruyere Mine Airport,GYZ,AU,POINT (123.8140464 -28.0339912),1502,,YGRM,,,
+HBG,America/Chicago,The Hattiesburg-Bobby L. Chain Mun.,HBG,US,POINT (-89.26667 31.316668),124,,KHBG,Hattiesburg,Forrest County,Mississippi
+HBI,America/Nassau,Harbour Island,HBI,BS,POINT (-76.6 25.516666),0,,,Dunmore Town,,Harbour Island
+HBK,America/Phoenix,Holbrook Municipal,HBK,US,POINT (-110.14722023079597 34.941733150000005),5236,,P14,Holbrook,Navajo County,Arizona
+HBN,Asia/Ho_Chi_Minh,Flamingo,HBN,VN,POINT (106 12),229,,,Tan Bien,,Tay Ninh
+HBO,America/Chicago,Municipal,HBO,US,POINT (-95.95 40.166668),1010,,,Pawnee City,Pawnee County,Nebraska
+HBR,America/Chicago,Hobart,HBR,US,POINT (-99.1 35.016666),1541,,KHBR,Hobart,Kiowa County,Oklahoma
+HBU,Asia/Hovd,Bulgan Hovd,HBU,MN,POINT (91.5836487910197 46.100496899999996),3845,,ZMBS,Burenhayrhan,Bulgan District,Hovd
+HBX,Asia/Kolkata,Hubli Airport,HBX,IN,POINT (75.07761238064964 15.360478350000001),2162,http://www.airportsindia.org.in/allAirports/hubli_generalinfo.jsp,VOHB,Hubli,Dharwad,Karnataka
+HCW,America/New_York,Cheraw,HCW,US,POINT (-79.88333 34.7),157,,KCQW,Cheraw,Chesterfield County,South Carolina
+HDD,Asia/Karachi,Hyderabad,HDD,PK,POINT (68.36835559267595 25.319433349999997),141,,OPKD,Kotri,,Sindh
+HDE,America/Chicago,Brewster Field,HDE,US,POINT (-99.33835078099264 40.4518458),2303,,KHDE,Holdrege,Phelps County,Nebraska
+HDF,Europe/Berlin,Heringsdorf Airport,HDF,DE,POINT (14.152571077560175 53.8785322),39,,EDAH,Seebad Heringsdorf,,Mecklenburg-Vorpommern
+HDG,Asia/Shanghai,Handan Airport,HDG,CN,POINT (114.42768905006909 36.52498965),206,,ZBHD,Handan,,Hebei
+HDH,Pacific/Honolulu,Dillingham Airfield,HDH,US,POINT (-157.96666 21.466667),764,,PHDH,Mililani Town,Honolulu County,Hawaii
+HXD,Asia/Urumqi,Delingha Airport,HXD,CN,POINT (97.26338813123307 37.123800599999996),9366,,ZLDL,Keluke,,Qinghai Sheng
+NQZ,Asia/Almaty,Nursultan Nazarbayev International Airport,NQZ,KZ,POINT (71.46419813232808 51.0258535),1141,,,Nur-Sultan,Esil-District,Akmola
+HZL,America/New_York,Hazleton,HZL,US,POINT (-75.99555034026227 40.98328465),1561,http://hazletonfbo.com/default.htm,KHZL,Harleigh,Luzerne County,Pennsylvania
+PFM,America/Edmonton,Primrose Aerodrome,PFM,CA,POINT (-111.120278 55.390556),2257,,,,,
+OJU,Asia/Jakarta,Tanjung Api Airport,OJU,ID,POINT (121.623083 -0.864417),78,,,,,
+DFA,Asia/Shanghai,Danfeng Airport,DFA,CN,POINT (110.2493 33.7085),1850,,,Yaoshi,,Shaanxi
+GXA,Asia/Pontianak,Beringin Airport,GXA,ID,POINT (114.89368285416867 -0.9418045500000001),62,,,,,
+HBQ,Asia/Shanghai,Qilian Airport,HBQ,CN,POINT (100.63671075340743 38.009560449999995),10367,,"",Hongtu,,Qinghai Sheng
+HDK,Indian/Maldives,Kulhudhuffushi Airport,HDK,MV,POINT (73.06709444256374 6.6312204999999995),22,,VRBK,Kulhudhuffushi,,Haa Dhaalu Atholhu
+HDM,Asia/Tehran,Hamadan Airport,HDM,IR,POINT (48.55918810158661 34.8663962),5738,,OIHH,Hamadan,,Hamadan
+HDR,Asia/Tehran,Havadarya,HDR,IR,POINT (56.166668 27.05),0,,OIKP,Qeshm,Qeshm,Hormozgan
+HDS,Africa/Johannesburg,Hoedspruit Airport,HDS,ZA,POINT (30.95 -24.35),1778,,FAHS,Hoedspruit,Mopani District Municipality,Limpopo
+HEB,Asia/Rangoon,Henzada,HEB,MM,POINT (95.46667 17.633333),39,,VYHT,Hinthada,,Ayeyarwady
+HEE,America/Chicago,Thompson-Robbins,HEE,US,POINT (-90.6 34.533333),246,http://www.fly.arkansas.gov/Airports/Helena/HELENA%20_%20WEST%20HELENA.pdf,KHEE,Helena,Phillips County,Arkansas
+HEI,Europe/Berlin,Heide-Buesum,HEI,DE,POINT (8.902778 54.155556),26,http://www.edxb.de,EDXB,Oesterdeichstrich,,Schleswig-Holstein
+HEM,Europe/Helsinki,Helsinki-malmi,HEL,FI,POINT (25.0437312 60.2521109),49,,EFHF,,,
+HEN,Europe/Helsinki,Hendon,HEL,FI,POINT (-0.233333 51.583332),269,,,Hendon,Greater London,England
+HEO,Pacific/Port_Moresby,Haelogo,HEO,PG,POINT (147.59857131851487 -9.13662165),3188,,AYHG,,,
+HES,America/Los_Angeles,State,HES,US,POINT (-119.28333 45.85),442,,KHRI,Hermiston,Umatilla County,Oregon
+HET,Asia/Shanghai,Hohhot Baita International Airport,HET,CN,POINT (111.81798726025258 40.850898099999995),3487,http://www.hhhtbtjc.com/,ZBHH,Haoxinying,,Inner Mongolia
+HEV,Europe/Madrid,Huelva,HEV,ES,POINT (-6.95 37.266666),59,,,Huelva,Provincia de Huelva,Andalusia
+HEW,Asia/Shanghai,Hengdian Airport,HEW,CN,POINT (120.24493415336624 29.1257754),334,,LGAT,Nanshi,,Zhejiang Sheng
+HEY,America/Chicago,Hanchey Army Heliport,OZR,US,POINT (-84.53333 31.416668),190,,,Morgan,Calhoun County,Georgia
+HEZ,America/Chicago,Hardy-Anders,HEZ,US,POINT (-91.29639 31.614721),239,https://www.adamscountyms.net/natchez-adams-county-airport,KHEZ,Morgantown,Adams County,Mississippi
+HFA,Asia/Jerusalem,Haifa Airport,HFA,IL,POINT (35.043082565539606 32.8105658),29,http://www.iaa.gov.il/Rashat/en-US/Airports/Haifa/,LLHA,Qiryat Mozqin,,Haifa
+HFD,America/New_York,Brainard,HFD,US,POINT (-72.64876748368077 41.7378691),39,,KHFD,Wethersfield,Hartford County,Connecticut
+HFF,America/New_York,Mackall AAF,HFF,US,POINT (-79.566666 35.033333),515,,KHFF,Pinebluff,Moore County,North Carolina
+HFN,Atlantic/Reykjavik,Hornafjordur,HFN,IS,POINT (-15.227721075402844 64.29642104999999),39,,BIHN,Hoefn,,East
+HFS,Europe/Stockholm,Hagfors Airport,HFS,SE,POINT (13.57844144654195 60.020452),305,,ESOH,Hagfors,Hagfors Kommun,Vaermland
+HFT,Europe/Oslo,Hammerfest Airport,HFT,NO,POINT (23.670357520019607 70.67963795),190,https://avinor.no/en/airport/hammerfest-airport/,ENHF,Hammerfest,Hammerfest,Finnmark Fylke
+HGE,America/Caracas,Higuerote Airport,HGE,VE,POINT (-66.09609106977287 10.46339655),26,,SVHG,Higuerote,Municipio Brion,Miranda
+HGI,Africa/Khartoum,Higlieg,HGI,SD,POINT (32 10.98333333),1279,,,Abu Jibeha,,Southern Kordofan
+HGL,Europe/Berlin,Helgoland,HGL,DE,POINT (7.9143290146581595 54.18553595),26,http://www.flughafen-helgoland.de,EDXH,Helgoland,,Schleswig-Holstein
+MCJ,America/Bogota,Maicao,MCJ,CO,POINT (-72.2424609 11.3890982),127,,SKLM,Maicao,,La Guajira
+DEX,Asia/Jakarta,Nop Goliat Airport,DEX,ID,POINT (139.47972109915636 -4.8560338000000005),154,,WAVD,,,
+NIU,Pacific/Tahiti,Niau,NIU,PF,POINT (-146.36837041439884 -16.119114949999997),32,,NTKN,,,
+ORV,America/Anchorage,Robert (Bob) Curtis Memorial Airport,ORV,US,POINT (-161.02719296028909 66.81738435),39,,PFNO,,,
+EUE,America/Los_Angeles,Eureka,EUE,US,POINT (-115.916664 39.5),7614,,"05U",Eureka,Eureka County,Nevada
+HID,Australia/Brisbane,Horn Island Airport,HID,AU,POINT (142.2862673040163 -10.586416400000001),29,,YHID,,,
+WOG,Australia/Darwin,Woodgreen Airport,WOG,AU,POINT (134.25 -22.5),1866,,,,,
+HIG,Australia/Brisbane,Highbury,HIG,AU,POINT (143.1459961 -16.4244003),334,,YHHY,,,
+FID,America/New_York,Elizabeth Field,FID,US,POINT (-72 41),0,https://www.dot.ny.gov/divisions/operating/opdm/aviation/repository/air_dir2/Elizabeth-revised.pdf,"0B8",,,
+JOP,Pacific/Port_Moresby,Josephstaal,JOP,PG,POINT (145.00650776801166 -4.74841855),250,,AYJS,,,
+KXU,Pacific/Tahiti,Katiu,KXU,PF,POINT (-144.4029999 -16.3393993),7,,NTKT,,,
+GHS,Asia/Makassar,Melak Airport,GHS,ID,POINT (115.76 -0.2036),282,,,,,
+GSM,Asia/Tehran,Dayrestan Airport,GSM,IR,POINT (55.89917705614705 26.753171950000002),39,,OIKQ,Bandar-e Khamir,,Hormozgan
+AMK,America/Denver,Animas Airpark,DRO,US,POINT (-107.75 37.15),6637,http://www.websmart66.net/cgi-bin/p/w66p-airportinfo.cgi?d=greggs-flying-service,"",,,
+BDX,America/Denver,Broadus,BDX,US,POINT (-105.36667 45.466667),3077,,"00F",Broadus,Powder River County,Montana
+BER,Europe/Berlin,Berlin Brandenburg Airport,BER,DE,POINT (13.5367764 52.3976851),239,https://ber.berlin-airport.de/,EDDB,,,
+BHX,Europe/London,Birmingham International Airport,BHX,GB,POINT (-1.733256 52.45252),331,http://www.bhx.co.uk/,EGBB,Bickenhill,Solihull,England
+CQW,America/New_York,CHERAW MUNI/LYNCH BELLINGER FLD AIRPORT,CQW,US,POINT (-79.957 34.7129),209,,,,,
+GYB,Australia/Perth,Wodgina Airport,GYB,AU,POINT (118.6933762 -21.1397729),465,,,Wodgina,,Western Australia
+HCQ,Australia/Perth,Halls Creek,HCQ,AU,POINT (127.66458487725606 -18.23649795),1315,,YHLC,,,
+HGD,Australia/Brisbane,Hughenden,HGD,AU,POINT (144.2268828 -20.816494),1003,,YHUG,,,
+HGN,Asia/Bangkok,Mae Hong Son Airport,HGN,TH,POINT (97.97606956686425 19.3010716),875,,VTCH,Mae Hong Son,,Mae Hong Son
+HGO,Africa/Abidjan,Korhogo Airport,HGO,CI,POINT (-5.616667 9.413889),1236,,DIKO,Korhogo,,Savanes
+HGR,America/New_York,Wash. County Regional Airport,HGR,US,POINT (-77.73 39.70778),675,,KHGR,State Line,Franklin County,Pennsylvania
+HGS,Africa/Freetown,Hastings,FNA,SL,POINT (-13.13 8.393056),75,,GFHA,Hastings,,Western Area
+HGU,Pacific/Port_Moresby,Mount Hagen Airport,HGU,PG,POINT (144.29964153501777 -5.8275371),5380,,AYMH,Mount Hagen,Hagen,Western Highlands
+HGZ,America/Anchorage,Hogatza,HGZ,US,POINT (-155.7047114 66.1849596),439,,"2AK6",,,
+HIP,Australia/Brisbane,Headingly,HIP,AU,POINT (138.2954338 -21.3221345),593,,YHDY,,,
+HRY,Australia/Darwin,Henbury,HRY,AU,POINT (133.2355683009487 -24.584002249999998),1387,,YHBY,,,
+MCT,Asia/Muscat,Muscat International Airport,MCT,OM,POINT (58.29212963328453 23.599458),49,,OOMS,Bawshar,,Muhafazat Masqat
+LTW,America/New_York,St Marys County,LTW,US,POINT (-76.666664 38.25),0,,"",,,
+PCT,America/New_York,Princeton,PCT,US,POINT (-74.65 40.35),203,http://www.princetonairport.com/recent-history/,"39N",,,
+ROF,America/Los_Angeles,Yreka Rohrer Field,SIY,US,POINT (-122.5442634 41.7315629),2509,http://www.ci.montague.ca.us/rohrerfield.html,K1O5,,,
+AHD,America/Chicago,Downtown,ADM,US,POINT (-97.13333 34.166668),902,,"",Ardmore,Carter County,Oklahoma
+AHF,America/Chicago,Municipal,AHF,US,POINT (-99.9 40.3),2152,,"",Arapahoe,Furnas County,Nebraska
+ATE,America/Chicago,Antlers,ATE,US,POINT (-95.61667 34.233334),538,,"80F",Antlers,Pushmataha County,Oklahoma
+BLD,America/Los_Angeles,Boulder City,LAS,US,POINT (-114.833336 35.983334),2434,,KBVU,Boulder City,Clark County,Nevada
+CHZ,America/Los_Angeles,State,CHZ,US,POINT (-121.86667 42.583332),4333,,K2S7,Klamath Falls,Klamath County,Oregon
+CIL,America/Nome,Melsing Creek,CIL,US,POINT (-163.73334 64.90833),68,,K29,,,
+CKE,America/Los_Angeles,Clear Lake,CKE,US,POINT (-122.62222 38.934723),1374,http://lakecountyairmen.mymcn.org/index.html,"1O2",Clearlake,Lake County,California
+CNE,America/Denver,Canon City,CNE,US,POINT (-105.23333 38.45),5337,http://www.fremontco.com/airport/,"1V6",Canon City,Fremont County,Colorado
+COP,America/New_York,Cooperstown - Westville Airport,COP,US,POINT (-74.933334 42.7),1312,,K23,Cooperstown,Otsego County,New York
+JVI,America/New_York,Central Jersey Regional Airport,JVI,US,POINT (-104.61667 42.783333),86,http://www.centraljerseyairport.com/,"47N",,,
+CTK,America/Chicago,Canton,CTK,US,POINT (-96.583336 43.3),1253,https://cantonsd.org/our-community/cornerstones/airport/,"",Canton,Lincoln County,South Dakota
+CTO,America/New_York,Peconic River,CTO,US,POINT (-77.683334 38.63333),305,,"3C8",Bealeton,Fauquier County,Virginia
+HHE,Asia/Tokyo,Hachinohe,HHE,JP,POINT (141.468868 40.5541994),124,,RJSH,Uchimaru,Hachinohe Shi,Aomori
+HHH,America/New_York,Hilton Head Airport,HHH,US,POINT (-80.69610111140818 32.22564625),104,,KHXD,Hilton Head Island,Beaufort County,South Carolina
+HHQ,Asia/Bangkok,Hua Hin Airport,HHQ,TH,POINT (99.9510244942222 12.636825250000001),26,,VTPH,Hua Hin,,Prachuap Khiri Khan
+HHR,America/Los_Angeles,Hawthorne,HHR,US,POINT (-118.33639 33.926945),62,,KHHR,Hawthorne,Los Angeles County,California
+HIA,Asia/Shanghai,Huai'an Lianshui Airport,HIA,CN,POINT (119.12775073657423 33.79193035),62,,ZSSH,Huai'an,,Jiangsu Sheng
+HIB,America/Chicago,Chisholm Airport,HIB,US,POINT (-92.83861 47.38861),1345,,KHIB,Hibbing,Saint Louis County,Minnesota
+HIE,America/New_York,Regional,HIE,US,POINT (-71.548615 44.365833),1026,http://www.mountwashingtonairport.com/,KHIE,Whitefield,Coos County,New Hampshire
+HIF,America/Denver,Hill AFB,OGD,US,POINT (-111.96667 41.216667),4347,http://www.hill.af.mil/,KHIF,Ogden,Weber County,Utah
+HII,America/Phoenix,Municipal,HII,US,POINT (-114.35528 34.568333),741,,KHII,Desert Hills,Mohave County,Arizona
+HIJ,Asia/Tokyo,Hiroshima Airport,HIJ,JP,POINT (132.91951481722555 34.437479100000004),1076,,RJOA,Takehara,,Hiroshima
+HIK,Pacific/Honolulu,Hickam AFB,HNL,US,POINT (-157.86667 21.316668),39,,,Honolulu,Honolulu County,Hawaii
+HIL,Africa/Addis_Ababa,Shillavo,HIL,ET,POINT (44.766666 6.083333),1269,,HASL,,,
+HIM,Asia/Colombo,Hingurakgoda,HIM,LK,POINT (80.9516787 8.0407681),219,http://www.airforce.lk/pages.php?pages=hingurakgoda,VCCH,Polonnaruwa,,North Central
+HIN,Asia/Seoul,Sacheon Airport,HIN,KR,POINT (128.08665041662874 35.0921956),36,,RKPS,Chinju,,Gyeongsangnam-do
+HIO,America/Los_Angeles,Portland,HIO,US,POINT (-122.98333 45.516666),160,http://www.flypdx.com/Airports/Hillsboro/,KHIO,Hillsboro,Washington County,Oregon
+HIR,Pacific/Guadalcanal,Honiara International Airport,HIR,SB,POINT (160.04987604652325 -9.429441749999999),22,,AGGH,,,
+HIW,Asia/Tokyo,Hiroshima West,HIJ,JP,POINT (132.41638 34.36361),19,,RJBH,Hiroshima-shi,,Hiroshima
+HJJ,Asia/Shanghai,Zhijiang Airport,HJJ,CN,POINT (109.70710797175595 27.44585455),856,,ZGCJ,Zhijiang,,Hunan
+BXP,Europe/Warsaw,Biala Podlaska,BXP,PL,POINT (23.14742202715444 52.007389700000004),492,,EPBP,Biala Podlaska,Biala Podlaska,Lublin Voivodeship
+HJR,Asia/Kolkata,Khajuraho Airport,HJR,IN,POINT (79.91582702072975 24.813829300000002),705,http://www.aai.aero/allAirports/khajuraho_generalinfo.jsp,VAKJ,Khajuraho,Chhatarpur,Madhya Pradesh
+HKA,America/Chicago,Municipal,BYH,US,POINT (-89.916664 35.933334),239,,KHKA,Blytheville,Mississippi County,Arkansas
+AAF,America/New_York,Apalachicola Regional,AAF,US,POINT (-85.02964472072705 29.7302356),19,,KAAF,Apalachicola,Franklin County,Florida
+HKB,America/Anchorage,Healy Lake,HKB,US,POINT (-148.96666 63.86667),1194,,"",,,
+HKD,Asia/Tokyo,Hakodate Airport,HKD,JP,POINT (140.82501678734644 41.76987575),98,,RJCH,Hakodate,,Hokkaido
+ABE,America/New_York,Lehigh Valley International Airport,ABE,US,POINT (-75.44225386838299 40.651163100000005),374,,KABE,Catasauqua,Lehigh County,Pennsylvania
+HKG,Asia/Hong_Kong,Hong Kong International Airport,HKG,HK,POINT (113.91732378641939 22.3125986),26,http://www.hongkongairport.com/,VHHX,Tuen Mun,,Tuen Mun
+HKN,Pacific/Port_Moresby,Hoskins Airport,HKN,PG,POINT (150.40481931573086 -5.46145235),32,,AYHK,,,
+ABI,America/Chicago,Abilene Regional Airport,ABI,US,POINT (-99.67936992920886 32.407743749999995),1791,,KABI,,,
+HKR,Africa/Nairobi,Mara North Airstrip,HKR,KE,POINT (35.124722 -1.145556),5429,,HKMF,Keroka,,Nyamira District
+HKV,Europe/Sofia,Haskovo,HKV,BG,POINT (25.55 41.933334),597,,"",Haskovo,Obshtina Khaskovo,Khaskovo
+ABQ,America/Denver,Albuquerque International Sunport,ABQ,US,POINT (-106.61096752176844 35.037669449999996),5308,http://www.abqsunport.com/,KABQ,Albuquerque,Bernalillo County,New Mexico
+HKY,America/New_York,Hickory,HKY,US,POINT (-81.39167 35.73861),1125,,KHKY,Longview,Catawba County,North Carolina
+HLA,Africa/Johannesburg,Lanseria International Airport,JNB,ZA,POINT (27.924736167011847 -25.93444955),4517,,FALA,Diepsloot,City of Johannesburg Metropolitan Municipality,Gauteng
+HLB,America/Indiana/Indianapolis,Hillenbrand,HLB,US,POINT (-85.21667 39.3),954,,KHLB,Batesville,Ripley County,Indiana
+HLC,America/Chicago,Hill City,HLC,US,POINT (-99.85 39.36667),2211,,KHLC,Hill City,Graham County,Kansas
+HLD,Asia/Shanghai,Hulunbuir Hailar Airport,HLD,CN,POINT (119.82751910954758 49.2079077),2142,,ZBLA,Fendou,,Inner Mongolia
+HLE,Atlantic/St_Helena,Saint Helena Airport,HLE,SH,POINT (-5.646064223218827 -15.9586281),1095,http://sthelenaairport.com/,FHSH,Jamestown,,Saint Helena
+ABR,America/Chicago,Aberdeen Municipal Airport,ABR,US,POINT (-98.42611 45.4525),1289,,KABR,Aberdeen,Brown County,South Dakota
+HLF,Europe/Stockholm,Hultsfred - Vimmerby,HLF,SE,POINT (15.827778 57.52639),344,http://www.hultsfredairport.se/,ESSF,Hultsfred,Hultsfreds Kommun,Kalmar
+HLG,America/New_York,Ohio County,HLG,US,POINT (-80.65 40.183334),1079,,KHLG,Tiltonsville,Jefferson County,Ohio
+ABY,America/New_York,Southwest Georgia Regional Airport,ABY,US,POINT (-84.19254493414799 31.5339678),213,,KABY,,,
+ACB,America/Detroit,Antrim County,ACB,US,POINT (-85.19719629581977 44.98832545),659,,KACB,Bellaire,Antrim County,Michigan
+ACK,America/New_York,Nantucket Memorial Airport,ACK,US,POINT (-70.0642270361515 41.256350600000005),45,,KACK,Nantucket,Nantucket County,Massachusetts
+HLH,Asia/Shanghai,Ulanhot Airport,HLH,CN,POINT (121.99797999914493 46.200979149999995),984,,ZBUL,Heping,,Inner Mongolia
+YOW,America/Toronto,Ottawa/Macdonald-Cartier International Airport,YOW,CA,POINT (-75.66726438915012 45.32203645),374,http://www.ottawa-airport.ca/,CYOW,,,
+ACT,America/Chicago,Waco Municipal Airport,ACT,US,POINT (-97.22321 31.609133),498,,KACT,Gholson,McLennan County,Texas
+ACV,America/Los_Angeles,Arcata-Eureka Airport,ACV,US,POINT (-124.10842589937442 40.9763645),147,,KACV,McKinleyville,Humboldt County,California
+ACY,America/New_York,Atlantic City International Airport,AIY,US,POINT (-74.57027649092205 39.45708535),55,https://www.sjta.com/acairport/,KACY,Pomona,Atlantic County,New Jersey
+ADG,America/Detroit,Lenawee County,ADG,US,POINT (-84.03333 41.9),800,,KADG,Adrian,Lenawee County,Michigan
+ADM,America/Chicago,Ardmore Municipal Airport,ADM,US,POINT (-97.0192 34.3028),711,,KADM,Dickson,Carter County,Oklahoma
+ADS,America/Chicago,Addison Airport,DFW,US,POINT (-97.3 32.783333),521,,KADS,Haltom City,Tarrant County,Texas
+ADT,America/Chicago,Ada Municipal,ADT,US,POINT (-96.66761600367232 34.80490015),977,,KADH,Ada,Pontotoc County,Oklahoma
+KAE,America/Sitka,SPB,KAE,US,POINT (-133.95 56.966667),0,,"",,,
+HLI,America/Los_Angeles,Hollister,HLI,US,POINT (-121.4 36.85),262,http://www.hollister.ca.gov/site/html/gov/office/airport.asp,KCVH,Hollister,San Benito County,California
+ADW,America/New_York,Andrews AFB,ADW,US,POINT (-76.87741646487015 38.8057469),255,http://www.jba.af.mil/,KADW,Andrews AFB,Prince George's County,Maryland
+KAF,Pacific/Port_Moresby,Karato,KAF,PG,POINT (155.35 -6.283333),109,,"",,,
+AEE,Africa/Juba,Adareil Airport,AEE,SS,POINT (32.962007213556745 10.052439199999998),1246,,"",,,
+HLM,America/Detroit,Park Township,HLM,US,POINT (-86.11667 42.783333),613,https://web.archive.org/web/20160430210208/http://park-township-airport.com/,"",Holland,Ottawa County,Michigan
+AEL,America/Chicago,Albert Lea,AEL,US,POINT (-93.36737639309429 43.6800949),1250,,KAEL,Albert Lea,Freeborn County,Minnesota
+IDG,America/Chicago,Municipal,IDG,US,POINT (-95.46667 42.35),1246,,,Ida Grove,Ida County,Iowa
+HLN,America/Denver,Helena Regional Airport,HLN,US,POINT (-111.98274447010309 46.6063969),3848,,KHLN,Helena,Lewis and Clark County,Montana
+AEX,America/Chicago,Alexandria International Airport,AEX,US,POINT (-92.54095486627727 31.329273649999998),65,,KAEX,Alexandria,Rapides Parish,Louisiana
+AFF,America/Denver,USAF Academy Airstrip,COS,US,POINT (-104.7 38.833332),6266,,KAFF,Cimarron Hills,El Paso County,Colorado
+SXZ,Europe/Istanbul,Siirt Airport,SXZ,TR,POINT (41.8311361958944 37.97602965),1938,,LTCL,Civankan,,Siirt
+AFN,America/New_York,Municipal,AFN,US,POINT (-72.066666 42.833332),1122,http://silverranchairpark.com/,KAFN,Jaffrey,Cheshire County,New Hampshire
+AFO,America/Denver,Municipal,AFO,US,POINT (-110.933334 42.733334),6230,http://www.aftonairpark.com/,KAFO,Afton,Lincoln County,Wyoming
+AFW,America/Chicago,Fort Worth Alliance Airport,DFW,US,POINT (-97.31836461280574 32.992997849999995),643,http://www.allianceairport.com/,KAFW,Haslet,Tarrant County,Texas
+AGC,America/New_York,Allegheny County Airport,PIT,US,POINT (-79.92904654320128 40.3534454),1250,,KAGC,Pleasant Hills,Allegheny County,Pennsylvania
+AGO,America/Chicago,Municipal,AGO,US,POINT (-93.23333 33.266666),314,,KAGO,Magnolia,Columbia County,Arkansas
+KAK,Pacific/Port_Moresby,Kar,KAK,PG,POINT (146 -4.666667),4965,,"",,,
+AGS,America/New_York,Augusta Regional Airport,AGS,US,POINT (-81.9650639098103 33.37230205),101,,KAGS,,,
+AHC,America/Los_Angeles,Amedee AAF,AHC,US,POINT (-120.13333 40.15),4055,,KAHC,Janesville,Lassen County,California
+NML,America/Edmonton,Mildred Lake,NML,CA,POINT (-111.5708846 57.0537491),1112,,CER4,,,
+AHH,America/Chicago,Municipal,AHH,US,POINT (-92.35 45.3),1089,,KAHH,Amery,Polk County,Wisconsin
+AHN,America/New_York,Athens-Ben Epps,AHN,US,POINT (-83.32973997812988 33.9487053),767,,KAHN,Winterville,Clarke County,Georgia
+AIA,America/Denver,Alliance Airport,AIA,US,POINT (-102.80666 42.051666),3904,,KAIA,Alliance,Box Butte County,Nebraska
+AID,America/Indiana/Indianapolis,Municipal,AID,US,POINT (-85.683334 40.166668),882,,KAID,Anderson,Madison County,Indiana
+AIK,America/New_York,Municipal,AIK,US,POINT (-81.71667 33.566666),580,,KAIK,Aiken,Aiken County,South Carolina
+TBU,Pacific/Tongatapu,Fua'amotu International Airport,TBU,TO,POINT (-175.1443417987285 -21.2421623),126,,NFTF,Vaini,,Tongatapu
+AIO,America/Chicago,Municipal,AIO,US,POINT (-95.01667 41.4),1250,,KAIO,Atlantic,Cass County,Iowa
+AIV,America/Chicago,George Downer,AIV,US,POINT (-88.15 33.13333),269,,KAIV,Aliceville,Pickens County,Alabama
+AIZ,America/Chicago,Lee C Fine Memorial,AIZ,US,POINT (-92.55351790002943 38.0924572),889,,KAIZ,,,
+AKC,America/New_York,Fulton International,CAK,US,POINT (-81.46778 41.04),1010,,KAKR,Sawyerwood,Summit County,Ohio
+AKO,America/Denver,Colorado Plains Regional Airport,AKO,US,POINT (-103.22743550494955 40.17740845),4655,http://www.co.washington.co.us/airport.htm,KAKO,Akron,Washington County,Colorado
+ALB,America/New_York,Albany International Airport,ALB,US,POINT (-73.8092091 42.7457516),301,http://www.albanyairport.com/,KALB,Colonie,Albany County,New York
+TDJ,Africa/Djibouti,Tadjoura,TDJ,DJ,POINT (42.913057 11.7881991),246,,HDTJ,Tadjoura,,Tadjourah
+TDV,Indian/Antananarivo,Tanandava,TDV,MG,POINT (43.7289097 -21.7011439),89,,FMSN,Manja,Manja District,Menabe
+ALI,America/Chicago,International,ALI,US,POINT (-98.066666 27.75),193,,KALI,Alice,Jim Wells County,Texas
+TDX,Asia/Bangkok,Trat Airport,TDX,TH,POINT (102.3236367 12.2808021),105,,VTBO,Laem Ngop,,Trat
+GCD,America/Los_Angeles,Grand Coulee Dam,GCD,US,POINT (-119.080579 47.9234839),1571,http://www.wsdot.wa.gov/aviation/AllStateAirports/ElectricCity_GrandCouleeDam.htm,"3W7",Coulee Dam,Okanogan County,Washington
+HLP,Asia/Jakarta,Halim Perdanakusuma Airport,JKT,ID,POINT (106.8989505677548 -6.2630208),55,http://www.angkasapura2.co.id/cabang/hlp/content.php?menu=8&page_id=1,WIHH,Jakarta,,Jakarta Raya
+HLR,America/Chicago,Fort Hood AAF,ILE,US,POINT (-97.73333 31.116667),797,,KHLR,Killeen,Bell County,Texas
+HLS,Australia/Hobart,St Helens,HLS,AU,POINT (148.25 -41.266666),239,,YSTH,St Helens,Break O'Day,Tasmania
+HLU,Pacific/Noumea,Houailou,HLU,NC,POINT (166.06667 -21.033333),0,,,Canala,Canala,North Province
+HLV,Australia/Brisbane,Helenvale,HLV,AU,POINT (145.2188078 -15.6860941),485,,"",,,
+HLY,Europe/London,Anglesey Airport,HLY,GB,POINT (-4.633333 53.3),55,,,Holyhead,Anglesey,Wales
+HLZ,Pacific/Auckland,Hamilton International Airport,HLZ,NZ,POINT (175.3315424211442 -37.8649356),98,http://www.hamiltonairport.co.nz/,NZHN,Hamilton,Hamilton City,Waikato
+HMA,Asia/Yekaterinburg,Khanty-Mansiysk Airport,HMA,RU,POINT (69.09482038194037 61.0289346),114,,USHH,Khanty-Mansiysk,,Khanty-Mansiyskiy Avtonomnyy Okrug
+HMB,Africa/Cairo,Mubarak International Airport,HMB,EG,POINT (31.731065840096637 26.3417454),324,,HESG,Al Manshah,,Suhaj
+HME,Africa/Algiers,Oued Irara Airport,HME,DZ,POINT (6.141752805006766 31.6753963),429,,DAUH,Hassi Messaoud,,Ouargla
+HMI,Asia/Shanghai,Hami Airport,HMI,CN,POINT (93.416664 42.916668),2664,,ZWHM,Hami,,Xinjiang Uygur Zizhiqu
+HMJ,Europe/Kiev,Khmelnitskiy,HMJ,UA,POINT (27 49.416668),954,,UKLH,Khmel'nyts'kyy,,Khmelnytskyi
+HMN,America/Denver,Holloman AFB,ALM,US,POINT (-105.95 32.9),4386,http://www.holloman.af.mil/,KHMN,Alamogordo,Otero County,New Mexico
+HMO,America/Hermosillo,Gen Pesqueira Garcia Airport,HMO,MX,POINT (-111.05463682353957 29.09210995),616,,MMHO,Hermosillo,,Sonora
+HMR,Europe/Oslo,Hamar Airport,HMR,NO,POINT (11.067417618542727 60.81817005),679,,ENHA,Hamar,Hamar,Hedmark
+HMS,America/Juneau,Homeshore,HMS,US,POINT (-135.34723 58.294445),433,,,,,
+HMT,America/Los_Angeles,Ryan Field,HMT,US,POINT (-117.025 33.733334),1479,http://www.rchmtra.com/,KHMT,Green Acres,Riverside County,California
+HMV,Europe/Stockholm,Hemavan Airport,HMV,SE,POINT (15.273056 65.727776),2578,,ESUT,,,
+IDP,America/Chicago,Independence,IDP,US,POINT (-95.7 37.233334),764,,KIDP,Independence,Montgomery County,Kansas
+IDR,Asia/Kolkata,Devi Ahilya Bai Holkar Airport,IDR,IN,POINT (75.80944 22.728651),1840,http://aai.aero/allAirports/indore_technicalinfo.jsp,VAID,Indore,Indore,Madhya Pradesh
+AXB,America/New_York,Alexandria Bay,AXB,US,POINT (-75.90139 44.2525),423,http://www.maxsonairfield.com/,"89NY",Alexandria Bay,Jefferson County,New York
+HMY,Asia/Seoul,Seosan Airport,HMY,KR,POINT (126.486 36.703999),55,,RKTP,Suisan,,Chungcheongnam-do
+HNA,Asia/Tokyo,Hanamaki Airport,HNA,JP,POINT (141.13528215177976 39.4265171),255,,RJSI,Hanamaki,,Iwate
+HNB,America/Indiana/Vincennes,Municipal,HNB,US,POINT (-86.95 38.3),501,http://huntingburgairport.com/,KHNB,Huntingburg,Dubois County,Indiana
+HNC,America/New_York,Hatteras,HNC,US,POINT (-75.7 35.216667),0,http://www.outerbanks.com/billy-mitchel-airport.html,KHSE,Buxton,Dare County,North Carolina
+HND,Asia/Tokyo,Haneda Airport,TYO,JP,POINT (139.78058713123818 35.54572095),22,http://www.haneda-airport.jp/,RJTT,Kawasaki,Kawasaki-shi,Kanagawa
+HNE,America/Anchorage,Tahneta Pass,HNE,US,POINT (-147.3349662 61.8852019),2942,,,,,
+HNG,Pacific/Noumea,Hienghene,HNG,NC,POINT (164.9 -20.666668),626,,,Hienghene,Hienghene,North Province
+HNL,Pacific/Honolulu,Honolulu International Airport,HNL,US,POINT (-157.9173135198164 21.32040435),45,http://airports.hawaii.gov/hnl/,PHNL,Hickam Field,Honolulu County,Hawaii
+HNM,Pacific/Honolulu,Hana Airport,HNM,US,POINT (-156.01442472183896 20.7950029),42,,PHHN,Hana,Maui County,Hawaii
+HNN,Pacific/Port_Moresby,Honinabi,HNN,PG,POINT (142.23334 -6.133333),495,,AYHH,,,
+HNY,Asia/Shanghai,Hengyang Nanyue Airport,HNY,CN,POINT (112.5 26.85),193,,ZGHY,Hengyang,Hengyang Shi,Hunan
+HOA,Africa/Nairobi,Hola,HOA,KE,POINT (40 -1),344,,HKHO,Hola,,Tana River
+HOB,America/Denver,Lea County Airport,HOB,US,POINT (-103.21694 32.68861),3641,,KHOB,Hobbs,Lea County,New Mexico
+HOC,Pacific/Port_Moresby,Komako,HOC,PG,POINT (145.8829293819037 -7.398479050000001),3956,,AYOK,,,
+HOD,Asia/Aden,Hodeidah Airport,HOD,YE,POINT (42.970478 14.755638),49,,OYHD,Al Hudaydah,Al Hawak,Muhafazat al Hudaydah
+HOF,Asia/Riyadh,Al-Ahsa Airport,HOF,SA,POINT (49.487066980107045 25.2879377),544,,OEAH,Al Hufuf,,Eastern Province
+HOG,America/Havana,Frank Pais Airport,HOG,CU,POINT (-76.315 20.785278),308,,MUHG,Cacocum,,Holguin
+HOK,Australia/Darwin,Hooker Creek,HOK,AU,POINT (130.65502900523728 -18.3312301),1000,,YHOO,,,
+HOL,America/Anchorage,Holikachu,HOL,US,POINT (-159.65 62.86667),55,,,,,
+IHA,Asia/Tokyo,Niihama,IHA,JP,POINT (133.26666 33.916668),242,,,Niihama,,Ehime
+HON,America/Chicago,Howes,HON,US,POINT (-98.22639 44.38361),1269,,KHON,Huron,Beadle County,South Dakota
+HOO,Asia/Ho_Chi_Minh,Nhon Co,HOO,VN,POINT (107.68806 12.009722),1958,,"",Gia Nghia,,Dak Nong
+HOP,America/Chicago,Campbell AAF,HOP,US,POINT (-87.48333 36.86667),574,,KHOP,Hopkinsville,Christian County,Kentucky
+HOW,America/Panama,Howard AFB,HOW,PA,POINT (-79.59463331569 8.92006357521),39,,,,,
+HOY,Europe/London,Hoy Island,HOY,GB,POINT (-3.3 58.833332),731,,"",Stromness,Orkney Islands,Scotland
+HPA,Pacific/Tongatapu,Salote Pilolevu,HPA,TO,POINT (-174.3414548343137 -19.776888200000002),26,,NFTL,Pangai,,Ha`apai
+HPE,Australia/Brisbane,Hope Vale,HPE,AU,POINT (144.91667 -14.666667),52,,YHPV,,,
+HPG,Asia/Shanghai,Shennongjia Hongping Airport,HPG,CN,POINT (110.33976618226815 31.62624495),8497,,ZHSN,Hongping,,Hubei
+HPH,Asia/Ho_Chi_Minh,Cat Bi International Airport,HPH,VN,POINT (106.71946503587628 20.8173019),16,,VVCI,Haiphong,,Hai Phong
+HPN,America/New_York,Westchester County Airport,HPN,US,POINT (-73.70833333823488 41.0680174),387,,KHPN,Purchase,Westchester County,New York
+HPT,America/Chicago,Municipal,HPT,US,POINT (-93.2 42.75),1145,,KHPT,Hampton,Franklin County,Iowa
+HPV,Pacific/Honolulu,Princeville,LIH,US,POINT (-159.44548629063752 22.209272),367,,HI01,Princeville,Kauai County,Hawaii
+HPY,America/Chicago,Baytown Airport,HPY,US,POINT (-94.96667 29.733334),39,http://www.baytownairport.com/,KHPY,Baytown,Harris County,Texas
+HQM,America/Los_Angeles,Bowerman,HQM,US,POINT (-123.93609009107766 46.971942999999996),22,http://www.portofgraysharbor.com/airport/airport.php,KHQM,Hoquiam,Grays Harbor County,Washington
+HRA,Asia/Karachi,Mansehra,HRA,PK,POINT (73.2 34.333332),3572,,,Mansehra,,Khyber Pakhtunkhwa
+HRC,Asia/Almaty,Zhairem,HRC,KZ,POINT (70.46667 48.466667),1384,,"",Qarazhal,,Qaraghandy
+HRE,Africa/Harare,Harare International Airport,HRE,ZW,POINT (31.090709006942333 -17.9332616),4786,,FVRG,Epworth,,Harare
+HRF,Indian/Maldives,Hoarafushi Airport,HRF,MV,POINT (72.895833 6.980556),19,http://www.macl.aero/,VRAH,Hoarafushi,,
+HRG,Africa/Cairo,Hurghada International Airport,HRG,EG,POINT (33.79432766304178 27.1798365),82,,HEGN,Hurghada,,Red Sea
+HRM,Africa/Algiers,Tilrempt,HRM,DZ,POINT (3.2 33.166668),2621,,DAFH,Berriane,,Ghardaia
+HRN,Australia/Brisbane,Heliport,HRN,AU,POINT (151.91667 -23.433332),0,,,Gladstone,Gladstone,Queensland
+HRO,America/Chicago,Boone County Airport,HRO,US,POINT (-93.15402100590016 36.26118925),1351,,KHRO,Harrison,Boone County,Arkansas
+IJK,Europe/Samara,Izhevsk Airport,IJK,RU,POINT (53.463128329289745 56.836190450000004),406,,USII,Khokhryaki,,Udmurtiya
+HRS,Africa/Johannesburg,Harrismith Airport,HRS,ZA,POINT (29.1 -26.233334),5196,,FAHR,Kriel,Nkangala District Municipality,Mpumalanga
+HRT,Europe/London,Linton-On-Ouse,HRT,GB,POINT (-1.55 54),321,,EGXU,Harrogate,North Yorkshire,England
+HRZ,America/Sao_Paulo,Horizontina,HRZ,BR,POINT (-54.34020485995269 -27.637036000000002),990,,SSHZ,Horizontina,Horizontina,Rio Grande do Sul
+HSA,Asia/Almaty,Hazret Sultan International Airport,HSA,KZ,POINT (68.55004013059735 43.3136878),944,,UAIT,Kentau,,Ongtustik Qazaqstan
+HSB,America/Chicago,Raleigh,HSB,US,POINT (-88.53333 37.733334),337,,KHSB,Harrisburg,Saline County,Illinois
+HSG,Asia/Tokyo,Saga Airport,HSG,JP,POINT (130.30332995504318 33.15328875),42,,RJFS,Okawa,,Saga Prefecture
+HSH,America/Los_Angeles,Henderson Executive,LAS,US,POINT (-115.13607563609398 35.97313425),2417,http://www.hnd.aero/,KHND,Whitney,Clark County,Nevada
+HSI,America/Chicago,Hastings,HSI,US,POINT (-98.42694 40.605556),1952,http://www.cityofhastings.org/airport/,KHSI,Hastings,Adams County,Nebraska
+HSJ,Asia/Shanghai,Shangjie Airport,HSJ,CN,POINT (113.27575637441387 34.8402945),436,,"",Gongyi,,Henan Sheng
+HSK,Europe/Madrid,Huesca-Pirineos,HSK,ES,POINT (-0.3195459397319872 42.07723575),1719,http://aena.mobi/m/en/huesca-pirineos-airport/huesca-pirineos.html,LEHC,Alcala del Obispo,Provincia de Huesca,Aragon
+HSM,Australia/Melbourne,Horsham,HSM,AU,POINT (142.16667 -36.666668),439,,YHSM,,,
+HSN,Asia/Shanghai,Putuoshan Airport,HSN,CN,POINT (122.3604503213771 29.9350153),29,,ZSZS,Dadong'ao,,Zhejiang Sheng
+HSP,America/New_York,Ingalls Field,HSP,US,POINT (-79.833885 37.950558),3727,,KHSP,Warm Springs,Bath County,Virginia
+HSS,Asia/Kolkata,Hissar,HSS,IN,POINT (75.8 29.166668),682,,VIHR,Hisar,Hisar,Haryana
+HST,America/New_York,AFB,HST,US,POINT (-80.48333 25.483334),39,http://www.homestead.afrc.af.mil/,KHST,Homestead,Miami-Dade County,Florida
+HSV,America/Chicago,Huntsville International Airport,HSV,US,POINT (-86.76383388377238 34.63699305),583,http://www.flyhuntsville.com/portal/#.VbaG-_lVhBc,KHSV,Madison,Madison County,Alabama
+HSZ,Asia/Taipei,Hsinchu,HSZ,TW,POINT (120.94343356118459 24.818723900000002),29,,RCPO,Hsinchu,Hsinchu,Taiwan
+HTA,Asia/Chita,Chita Airport,HTA,RU,POINT (113.31022128113224 52.02481615),2188,http://aerochita.ru/,UIAA,Domna,,Transbaikal Territory
+HTB,America/Guadeloupe,Terre-de-Bas,HTB,GP,POINT (-61.63333 15.716667),0,,,,,
+HTU,Australia/Melbourne,Hopetoun,HTU,AU,POINT (142.3590913 -35.7160559),223,,YHPN,,,
+HTY,Europe/Istanbul,Hatay Airport,HTY,TR,POINT (36.28454289535709 36.361761349999995),213,,LTDA,Serinyol,,Hatay
+HTZ,America/Bogota,Hato Corozal,HTZ,CO,POINT (-72.63333 6.033333),8198,,SKHC,Socota,,Boyaca
+HUA,America/Chicago,Redstone AAF,HSV,US,POINT (-86.583336 34.733334),646,,KHUA,Huntsville,Madison County,Alabama
+HUB,Australia/Darwin,Humbert River,HUB,AU,POINT (130.75 -16.5),354,,YHBR,,,
+HUC,America/Puerto_Rico,Humacao Airport,HUC,PR,POINT (-65.80035340531828 18.138246),29,,"",Bajandas,,Humacao
+HUD,America/Chicago,Humboldt,HUD,US,POINT (-94.21667 42.733334),1066,http://www.iowadot.gov/aviation/airports/AirportIntermediate.aspx?FAACode=0K7,"0K7",Humboldt,Humboldt County,Iowa
+HUE,Africa/Addis_Ababa,Humera Airport,HUE,ET,POINT (36.583332 14.25),1889,,HAHU,,,
+HUF,America/Indiana/Indianapolis,Hulman Field,HUF,US,POINT (-87.30348729752123 39.44968565),567,http://huf.com/,KHUF,Seelyville,Vigo County,Indiana
+HUG,America/Guatemala,Huehuetenango,HUG,GT,POINT (-91.46667 15.333333),6387,,MGHT,Huehuetenango,Municipio de Huehuetenango,Huehuetenango
+HUH,Pacific/Tahiti,Huahine Airport,HUH,PF,POINT (-151.0283868 -16.689207),26,,NTTH,Fare,,Iles Sous-le-Vent
+HUI,Asia/Ho_Chi_Minh,Phu Bai International Airport,HUI,VN,POINT (107.705353995889 16.39973765),42,,VVPB,Phu Vang,,Thua Thien-Hue
+HUJ,America/Chicago,Hugo,HUJ,US,POINT (-95.5413914 34.0326919),554,,KHHW,Hugo,Choctaw County,Oklahoma
+HUK,Africa/Gaborone,Hukuntsi,HUK,BW,POINT (21.75946734798346 -23.9866674),3608,,FBHK,Hukuntsi,,Kgalagadi
+HUL,America/New_York,International,HUL,US,POINT (-67.8 46.13333),469,,KHUL,Houlton,Aroostook County,Maine
+HUM,America/Chicago,Terrebonne,HUM,US,POINT (-90.65990048690243 29.5665962),36,http://www.houma-airport.com/,KHUM,Presquille,Terrebonne Parish,Louisiana
+HUO,Asia/Shanghai,Holingol Huolinhe Airport,HUO,CN,POINT (119.4150518376749 45.486205850000005),3202,,ZBHZ,Mositai,,Inner Mongolia
+TEC,America/Sao_Paulo,Telemaco Borba,TEC,BR,POINT (-50.65176291354726 -24.31767995),2610,,SSVL,Telemaco Borba,Telemaco Borba,Parana
+HUQ,Africa/Tripoli,Houn,HUQ,LY,POINT (15.5 29.5),1279,,HLON,Hun,,Al Jufrah
+HUT,America/Chicago,Hutchinson,HUT,US,POINT (-97.861115 38.068054),1519,http://www.hutchgov.com/department/?fDD=20-0,KHUT,Hutchinson,Reno County,Kansas
+HUU,America/Lima,Huanuco Airport,HUU,PE,POINT (-76.2050280466014 -9.8786937),6072,,SPNC,Huanuco,Provincia de Huanuco,Huanuco
+HUV,Europe/Stockholm,Hudiksvall,HUV,SE,POINT (17.081638942254507 61.76782215),45,,ESNH,Hudiksvall,Hudiksvalls Kommun,Gaevleborg
+HUX,America/Mexico_City,Huatulco Airport,HUX,MX,POINT (-96.25869871122916 15.7759827),423,,MMBT,Sector H Tres,Santa Maria Huatulco,Oaxaca
+HUY,Europe/London,Humberside Airport,HUY,GB,POINT (-0.3534607323460707 53.5713963),285,http://www.humbersideairport.com/,EGNJ,Croxton,North Lincolnshire,England
+HUZ,Asia/Shanghai,Huizhou Airport,HUZ,CN,POINT (114.36667 23.083332),574,,ZGHZ,Longfeng,,Guangdong
+HVB,Australia/Brisbane,Hervey Bay Airport,HVB,AU,POINT (152.8841465 -25.3209078),65,,YHBA,,,
+HVD,Asia/Hovd,Khovd Airport,HVD,MN,POINT (91.65 48.016666),4543,,ZMKD,Khovd,,Hovd
+HVE,America/Denver,Intermediate,HVE,US,POINT (-110.71667 38.36667),4317,,KHVE,Ferron,Emery County,Utah
+HVG,Europe/Oslo,Valan Airport,HVG,NO,POINT (25.833332 70.98333),459,https://avinor.no/en/airport/honningsvag-airport/,ENHV,Honningsvag,Nordkapp,Finnmark Fylke
+HVK,Atlantic/Reykjavik,Holmavik,HVK,IS,POINT (-22.466667 65.7),1341,,BIHK,,,
+HVN,America/New_York,New Haven Airport,HVN,US,POINT (-72.888336 41.265278),26,,KHVN,East Haven,New Haven County,Connecticut
+HVR,America/Denver,Havre City County Airport,HVR,US,POINT (-109.7624 48.543),2614,,KHVR,Havre,Hill County,Montana
+HVS,America/New_York,Municipal,HVS,US,POINT (-80.066666 34.38333),206,http://hartsvillesc.gov/visitors/hartsville-airport/,KHVS,North Hartsville,Darlington County,South Carolina
+HWA,Pacific/Port_Moresby,Hawabango,HWA,PG,POINT (145.96666 -7.433333),2201,,AYHU,,,
+HWI,America/Juneau,SPB,HWI,US,POINT (-134.75417 58.11778),88,,,,,
+HWK,Australia/Adelaide,Wilpena Pound,HWK,AU,POINT (138.41667 -31.716667),879,,YHAW,,,
+HXX,Australia/Sydney,Hay,HXX,AU,POINT (144.8326332 -34.5311898),275,,YHAY,Hay,Hay,New South Wales
+HYA,America/New_York,Barnstable Municipal Airport,HYA,US,POINT (-70.28439042526892 41.6707658),29,,KHYA,Hyannis,Barnstable County,Massachusetts
+HYC,Europe/London,High Wycombe,HYC,GB,POINT (-0.75 51.61667),508,,EGTB,High Wycombe,Buckinghamshire,England
+HYD,Asia/Kolkata,Rajiv Gandhi International Airport,HYD,IN,POINT (78.43178336758146 17.231163600000002),1978,http://www.hyderabad.aero/,VOHS,Balapur,Rangareddi,Telangana
+HYL,America/Sitka,SPB,HYL,US,POINT (-132.65062 55.48263),65,,HYL,,,
+HYN,Asia/Shanghai,Luqiao Airport,HYN,CN,POINT (121.4248379160332 28.562648799999998),32,,ZSLQ,Hengjie,,Zhejiang Sheng
+ITQ,America/Sao_Paulo,Itaqui,ITQ,BR,POINT (-56.540659559488645 -29.17210465),213,,SSIQ,Itaqui,Itaqui,Rio Grande do Sul
+HYR,America/Chicago,Municipal,HYR,US,POINT (-91.44444 46.024445),1197,http://sawyercountygov.org/Departments/Airport/tabid/93/Default.aspx,KHYR,Hayward,Sawyer County,Wisconsin
+HYS,America/Chicago,Hays Municipal Airport,HYS,US,POINT (-99.27417 38.84611),1965,,KHYS,Hays,Ellis County,Kansas
+HZA,America/Argentina/Buenos_Aires,Establecimiento El Araza Airport,HZA,AR,POINT (-57.6414 -36.7756),26,,,General Guido,Partido de General Guido,Buenos Aires
+HZG,Asia/Shanghai,Hanzhong Airport,HZG,CN,POINT (107.183334 32.983334),1843,,ZLHZ,Xiangshui,,Shaanxi
+HZH,Asia/Shanghai,Liping Airport,HZH,CN,POINT (109.15044436646232 26.32249205),1617,,ZUNP,Longlisuo,,Guizhou Sheng
+IAA,Asia/Krasnoyarsk,Igarka Airport,IAA,RU,POINT (86.63030252298526 67.43420384999999),55,,UOII,Igarka,,Krasnoyarskiy
+IAD,America/New_York,Washington Dulles International Airport,WAS,US,POINT (-77.4534849116007 38.95226625),298,http://www.mwaa.com/dulles/,KIAD,Floris,Fairfax County,Virginia
+IAG,America/New_York,Niagara Falls International Airport,IAG,US,POINT (-78.95086767626398 43.1074871),570,,KIAG,Sanborn,Niagara County,New York
+IAO,Asia/Manila,Sayak (Siargao),IAO,PH,POINT (126.01524291807397 9.8588579),42,,RPNS,Libas,Province of Surigao del Sur,Caraga
+IAQ,Asia/Tehran,Bahregan,IAQ,IR,POINT (50.833332 28.933332),49,,OI20,Bandar-e Bushehr,,Bushehr
+IAR,Europe/Moscow,Tunoshna Airport,IAR,RU,POINT (39.88333 57.61667),239,,UUDL,Yaroslavl,,Jaroslavl
+IAS,Europe/Bucharest,Iasi Airport,IAS,RO,POINT (27.616993 47.176987),337,http://www.aeroport.ro/,LRIA,Iasi,Municipiul Iasi,Iasi
+IAU,Pacific/Port_Moresby,Iaura,IAU,PG,POINT (148.1 -9.783333),1981,,,,,
+IBA,Africa/Lagos,Ibadan Airport,IBA,NG,POINT (3.911111 7.431944),754,http://www.faannigeria.org/nigeria-airport.php?airport=7,DNIB,Ibadan,,Oyo
+IBB,Pacific/Galapagos,General Villamil,IBB,EC,POINT (-90.95354920435727 -0.93954245),32,,SEII,Puerto Villamil,Canton Isabela,Galapagos
+IBE,America/Bogota,Ibague Airport,IBE,CO,POINT (-75.13465345063345 4.42177875),3001,,SKIB,Ibague,,Tolima
+HGA,Africa/Mogadishu,Hargeisa Airport,HGA,SO,POINT (44.079853877194694 9.512619050000001),4461,http://l.facebook.com/l.php?u=http%3A%2F%2Fwww.somalilandaviation.com%2F&h=AT2r8UIJqOYWDa0S_hV1mbRmYgqrpbW3KArb9oL43ykG2KOE0Obep,HCMH,Hargeysa,,Woqooyi Galbeed
+IBI,Pacific/Port_Moresby,Iboki,IBI,PG,POINT (149.19028 -5.553333),32,,"",,,
+IBL,Africa/Maputo,Indigo Bay Lodge,IBL,MZ,POINT (35.452801 -21.708),39,,"",Beira,,Sofala
+IBM,Australia/Perth,Iron Bridge Mine Airport,IBM,AU,POINT (118.88711754386 -21.288219641995),597,,YIBO,Marble Bar,,Western Australia
+IBP,America/Lima,Iberia,IBP,PE,POINT (-69.583336 -11.366667),954,,SPBR,Iberia,Provincia de Tahuamanu,Madre de Dios
+IBR,Asia/Tokyo,Ibaraki Airport,IBR,JP,POINT (140.40694559765183 36.17627924999999),95,,RJAH,Okunoya,,Ibaraki
+IBZ,Europe/Madrid,Ibiza Airport,IBZ,ES,POINT (1.370372414235323 38.87294785),16,,LEIB,Ibiza,Illes Balears,Balearic Islands
+ICC,America/Caracas,Andrés Miguel Salazar Marcano Airport,ICC,VE,POINT (-63.981485910982265 10.7941896),29,,SVIE,Punta de Piedras,Municipio Tubores,Nueva Esparta
+ICK,America/Paramaribo,Nieuw Nickerie,ICK,SR,POINT (-56.983334 5.933333),78,,SMNI,Nieuw Nickerie,,Nickerie
+ICL,America/Chicago,Municipal,ICL,US,POINT (-95.03333 40.733334),997,,KICL,Clarinda,Page County,Iowa
+ICO,Asia/Manila,Sicogon Island,ICO,PH,POINT (123.2505409 11.4593295),32,,"",San Fernando,Province of Iloilo,Western Visayas
+ICR,America/Havana,Nicaro,ICR,CU,POINT (-75.975 20.983334),423,,,Gibara,,Holguin
+ICS,America/Boise,Cascade,ICS,US,POINT (-116.0151769717505 44.492787),4708,,KU70,Cascade,Valley County,Idaho
+ICT,America/Chicago,Wichita Dwight D. Eisenhower National Airport,ICT,US,POINT (-97.43088979155792 37.65333905),1338,,KICT,Wichita,Sedgwick County,Kansas
+ICY,America/Anchorage,Icy Bay,ICY,US,POINT (-141.25 60),82,,"19AK",,,
+IDA,America/Boise,Idaho Falls Regional Airport,IDA,US,POINT (-112.06621704111444 43.5151828),4734,,KIDA,Idaho Falls,Bonneville County,Idaho
+JHY,America/New_York,Hyatt Regency Heliport,JHY,US,POINT (-71.102776 42.36667),36,,,Cambridge,Middlesex County,Massachusetts
+JIB,Africa/Djibouti,Djibouti-Ambouli International Airport,JIB,DJ,POINT (43.15864050716333 11.54800385),29,,HDAM,Djibouti,,Djibouti
+ALN,America/Chicago,Alton,ALN,US,POINT (-90.04833 38.891666),515,,KALN,Bethalto,Madison County,Illinois
+IDC,Africa/Maputo,Ila Da Chilonzuene,IDC,MZ,POINT (-4.55 42.533333333333),2900,,,Villasila de Valdavia,Provincia de Palencia,Castille and Leon
+IDF,Africa/Kinshasa,Idiofa,IDF,CD,POINT (19.6 -5.033333),2007,,FZCB,,,
+IDI,America/New_York,ndiana County Airport (Jimmy Stewart Field),IDI,US,POINT (-79.15 40.61667),1250,http://www.jimmystewartairport.com/,KIDI,Indiana,Indiana County,Pennsylvania
+IDK,Australia/Adelaide,Indulkana,IDK,AU,POINT (133.325 -26.966667),1269,,YIDK,,,
+IDN,Pacific/Port_Moresby,Indagen,IDN,PG,POINT (147.24335835561104 -6.2266791),5715,,AYID,,,
+IDY,Europe/Paris,Ile d'Yeu,IDY,FR,POINT (-2.3908226881728325 46.7170388),45,,LFEY,Notre-Dame-de-Monts,Departement de la Vendee,Pays de la Loire
+IEG,Europe/Warsaw,Zielona Gora-Babimost Airport,IEG,PL,POINT (15.516667 51.933334),574,http://www.lotnisko.zielonagora.pl/,EPZG,Zielona Gora,Zielona Gora,Lubusz
+IEV,Europe/Kiev,Kyiv International Airport,IEV,UA,POINT (30.450832 50.401943),554,https://iev.aero/,UKKK,Chabany,,Kiev
+IFA,America/Chicago,Iowa Falls,IFA,US,POINT (-93.26667 42.516666),1112,http://www.cityofiowafalls.com/airport.asp,KIFA,Iowa Falls,Hardin County,Iowa
+IFF,Australia/Brisbane,Iffley,IFF,AU,POINT (141.2150007 -18.8773769),101,,YIFY,,,
+IFH,Asia/Tehran,Hesa,IFH,IR,POINT (51.56215824869354 32.9223228),5291,,OIFE,Shahin Shahr,,Isfahan
+IFJ,Atlantic/Reykjavik,Isafjordur Airport,IFJ,IS,POINT (-23.138580266091083 66.05682685),39,,BIIS,,,
+IFL,Australia/Brisbane,Innisfail,IFL,AU,POINT (146.01666 -17.55),55,,YIFL,Innisfail,Cassowary Coast,Queensland
+IFN,Asia/Tehran,Isfahan International Airport,IFN,IR,POINT (51.88885076271911 32.76145385),5045,,OIFM,Dowlatabad,,Isfahan
+IFO,Europe/Kiev,Ivano-Frankovsk Airport,IFO,UA,POINT (24.707565 48.887535),892,http://www.aeroportifua.ifrastudio.com/index.php?area=2,UKLI,Cherniyiv,,Ivano-Frankivsk
+JNX,Europe/Athens,Naxos Airport,JNX,GR,POINT (25.368368326596347 37.08109625),10,,LGNX,Naxos,Nomos Kykladon,South Aegean
+JNP,America/Los_Angeles,Heliport,JNP,US,POINT (-117.933334 33.61667),0,,,Newport Beach,Orange County,California
+IFP,America/Phoenix,Laughlin Bullhead International Airport,IFP,US,POINT (-114.55868214120348 35.154391),672,,KIFP,Laughlin,Clark County,Nevada
+JOI,America/Sao_Paulo,Joinville-Lauro Carneiro de Loyola Airport,JOI,BR,POINT (-48.79862231685878 -26.2249688),15,,SBJV,Joinville,Joinville,Santa Catarina
+IFU,Indian/Maldives,Ifuru Airport,IFU,MV,POINT (73.0249 5.70877),32,,VREI,Ugoofaaru,,Raa Atoll
+JOH,Africa/Johannesburg,Port Saint Johns,JOH,ZA,POINT (29.533333 -31.616667),1227,,FAPJ,Port Saint John's,OR Tambo District Municipality,Eastern Cape
+IGA,America/Nassau,Inagua Airport,IGA,BS,POINT (-73.66096105058631 20.97447),19,,MYIG,Matthew Town,,Inagua
+IGB,America/Argentina/Salta,Ingeniero Jacobacci,IGB,AR,POINT (-69.5749678567449 -41.318589599999996),2919,,SAVJ,Ingeniero Jacobacci,,Rio Negro
+IGD,Europe/Istanbul,Igdir,IGD,TR,POINT (43.88397823369516 39.97341175),3061,http://igdır.dhmi.gov.tr/,LTCT,Getashen,,Armavir
+IGG,America/Anchorage,Igiugig Airport,IGG,US,POINT (-155.8999872 59.3251656),68,,PAIG,,,
+JOR,America/Los_Angeles,The City Heliport,JOR,US,POINT (-117.85 33.783333),0,,,Orange,Orange County,California
+IGH,Australia/Brisbane,Ingham,IGH,AU,POINT (146.16667 -18.716667),65,,YIGM,,,
+JOT,America/Chicago,Municipal,JOT,US,POINT (-88.083336 41.533333),582,http://www.jolietpark.org/index.php/facilities/joliet-regional-airport,KJOT,Joliet,Will County,Illinois
+IGL,Europe/Istanbul,Cigli AB,IZM,TR,POINT (27.159445 38.31889),383,,LTBL,Gaziemir,,Izmir
+JPD,America/Los_Angeles,Heliport,JPD,US,POINT (-118.15 34.15),0,,,Pasadena,Los Angeles County,California
+JPN,America/New_York,Pentagon Army,WAS,US,POINT (-77.066666 38.766666),0,,,Groveton,Fairfax County,Virginia
+JPR,America/Porto_Velho,Ji-Parana Airport,JPR,BR,POINT (-61.84667 -10.870556),598,,SBJI,Ji Parana,Ji-Parana,Rondonia
+JPT,America/Chicago,Park Ten Heliport,HOU,US,POINT (-95.81167 29.786388),0,,,Katy,Harris County,Texas
+JQE,America/Panama,Jaque Airport,JQE,PA,POINT (-78.166664 7.5),29,,MPJE,Jaque,,Darien
+JRC,America/Chicago,Municipalcipal Heliport,RST,US,POINT (-92.46667 44.016666),0,,,Rochester,Olmsted County,Minnesota
+IGM,America/Phoenix,Kingman,IGM,US,POINT (-113.93766340065625 35.2601902),3385,,KIGM,New Kingman-Butler,Mohave County,Arizona
+IGN,Asia/Manila,Maria Cristina,IGN,PH,POINT (124.21519679580359 8.130893799999999),1256,,RPMI,Mamungan,Province of Lanao del Norte,Northern Mindanao
+IGO,America/Bogota,Chigorodo,IGO,CO,POINT (-76.68408579314085 7.68002405),32,,SKIG,Chigorodo,,Antioquia
+IGS,Europe/Berlin,Ingolstadt-manching,IGS,DE,POINT (11.535868767571744 48.713641249999995),1190,,ETSI,Manching,Upper Bavaria,Bavaria
+JRK,America/Godthab,Arsuk,JRK,GL,POINT (-48.416668 61.166668),0,,,Paamiut,,Sermersooq
+JOE,Europe/Helsinki,Joensuu Airport,JOE,FI,POINT (29.621541792964734 62.659663949999995),398,http://www.finavia.fi/en/joensuu/,EFJO,Joensuu,Joensuu,North Karelia
+JOG,Asia/Jakarta,Adisutjipto International Airport,JOG,ID,POINT (110.42680947529018 -7.793306149999999),379,http://adisutjipto-airport.co.id/,WAHH,Depok,,Daerah Istimewa Yogyakarta
+JRT,America/Manaus,Juruti Airport,JRT,BR,POINT (-56.0902786255 -2.1866669655),0,,,Juruti,Juruti,Para
+JSA,Asia/Kolkata,Jaisalmer,JSA,IN,POINT (70.9 26.916668),751,,VIJR,Jaisalmer,Jaisalmer,Rajasthan
+JSD,America/New_York,Sikorsky Heliport,JSD,US,POINT (-73.13333 41.2),0,,,Stratford,Fairfield County,Connecticut
+JSG,America/Los_Angeles,San Rafael Heliport,SRF,US,POINT (-122.53333 37.966667),0,,,San Rafael,Marin County,California
+JOK,Europe/Moscow,Yoshkar-Ola Airport,JOK,RU,POINT (47.8973702593122 56.706104800000006),348,,UWKJ,Yoshkar-Ola,,Mariy-El
+JOL,Asia/Manila,Jolo,JOL,PH,POINT (121.01270615673849 6.053464),118,,RPMJ,Jolo,Province of Sulu,Autonomous Region in Muslim Mindanao
+JOM,Africa/Dar_es_Salaam,Njombe,JOM,TZ,POINT (34.77796910746214 -9.3588371),6400,,HTNJ,Njombe,,Njombe
+JOS,Africa/Lagos,Jos Airport,JOS,NG,POINT (8.88721124329111 9.868407600000001),4232,http://www.faannigeria.org/nigeria-airport.php?airport=15,DNJO,Jos,,Plateau
+JPA,America/Fortaleza,Presidente Castro Pinto International Airport,JPA,BR,POINT (-34.95030583440195 -7.148930699999999),217,,SBJP,Bayeux,Bayeux,Paraiba
+JRG,Asia/Kolkata,Jharsuguda Airport,JRG,IN,POINT (84.05050482566077 21.91594295),751,,VEJH,Jharsuguda,Jharsuguda,Odisha
+JRH,Asia/Kolkata,Rowriah Airport,JRH,IN,POINT (94.1720966824326 26.72934295),311,http://aai.aero/allAirports/jorhat_airpo_gi.jsp,VEJT,Jorhat,Jorhat,Assam
+JRO,Africa/Dar_es_Salaam,Kilimanjaro International Airport,JRO,TZ,POINT (37.076288891574904 -3.4280793999999997),2932,http://www.kilimanjaroairport.co.tz/,HTKJ,Merelani,,Arusha
+JRS,Asia/Jerusalem,Atarot,JRS,IL,POINT (35.2192424 31.8651161),2485,,LLJR,Qalandiya,,West Bank
+IGT,Europe/Moscow,Magas Airport,IGT,RU,POINT (45.02122159240803 43.31963055),1141,,URMS,Troitskaya,,Ingushetiya
+IGU,America/Sao_Paulo,Cataratas International Airport,IGU,BR,POINT (-54.49060873125 -25.5930616),757,,SBFI,Puerto Iguazu,Departamento de Iguazu,Misiones
+IHC,Africa/Maputo,Inhaca,IHC,MZ,POINT (32.929576339642985 -25.99802725),59,,FQIA,,,
+IHN,Asia/Aden,Qishn,IHN,YE,POINT (50.05 15.05),1302,,OYQN,Ad Dis ash Sharqiyah,Ad Dis,Muhafazat Hadramawt
+IHO,Indian/Antananarivo,Ihosy,IHO,MG,POINT (46.11667 -22.416668),2322,,FMSI,Ihosy,,Ihorombe
+JSL,America/New_York,Steel Pier Heliport,AIY,US,POINT (-74.45 39.333332),0,,,Ventnor City,Atlantic County,New Jersey
+IHR,Asia/Tehran,Iran Shahr,IHR,IR,POINT (60.71806 27.228365),1942,,OIZI,Iranshahr,,Sistan and Baluchestan
+JSP,Asia/Seoul,Seogwipo Heliport,CJU,KR,POINT (126.566666 33.483334),0,,,Jeju-si,,Jeju-do
+JSM,America/Argentina/Catamarca,Jose De San Martin,JSM,AR,POINT (-70.44501939480728 -44.04784775),2407,,SAWS,Jose de San Martin,,Chubut
+JTY,Europe/Athens,Astypalaia Airport,JTY,GR,POINT (26.3800026 36.5771451),165,,LGPL,Astypalaia,Nomos Dodekanisou,South Aegean
+JSU,America/Godthab,Heliport,JSU,GL,POINT (-52.9 65.416664),91,,BGMQ,Maniitsoq,,Qeqqata
+JSY,Europe/Athens,Syros Island Airport,JSY,GR,POINT (24.95 37.42361),236,,LGSO,Ermoupolis,Nomos Kykladon,South Aegean
+JUR,Australia/Perth,Jurien Bay,JUR,AU,POINT (115.0543855 -30.3031808),15,,YJNB,Jurien Bay,Dandaragan,Western Australia
+JTI,America/Sao_Paulo,Jatai,JTI,BR,POINT (-51.774723 -17.829445),2529,,SWJW,Jatai,Jatai,Goias
+JTO,America/Los_Angeles,Heliport,JTO,US,POINT (-118.833336 34.166668),0,,,Thousand Oaks,Ventura County,California
+JTR,Europe/Athens,Santorini International Airport,JTR,GR,POINT (25.483334 36.4),127,,LGSR,Mesaria,Nomos Kykladon,South Aegean
+IIL,Asia/Tehran,Ilaam Airport,IIL,IR,POINT (46.399235 33.58637),4343,,OICI,Ilam,,Ilam
+JWA,Africa/Gaborone,Jwaneng,JWA,BW,POINT (24.692185516131104 -24.6009592),3900,,FBJW,Letlhakeng,,Kweneng
+JUC,America/Los_Angeles,Universal City Heliport,LAX,US,POINT (-118.26667 34.083332),0,,,Silver Lake,Los Angeles County,California
+JUH,Asia/Shanghai,Chizhou Jiuhuashan Airport,JUH,CN,POINT (72.84722 19.222221),60,,ZSJH,Borivli,Mumbai Suburban,Maharashtra
+IJU,America/Sao_Paulo,J. Batista Bos Filho Airport,IJU,BR,POINT (-53.916668 -28.416668),1227,,SSIJ,Ijui,Ijui,Rio Grande do Sul
+JUJ,America/Argentina/Jujuy,El Cadillal Airport,JUJ,AR,POINT (-65.083336 -24.4),3019,,SASJ,La Mendieta,,Jujuy
+IJX,America/Chicago,Municipal,IJX,US,POINT (-90.23722 39.774166),606,,,Jacksonville,Morgan County,Illinois
+IKA,Asia/Tehran,Imam Khomeini International Airport,THR,IR,POINT (51.144760916142786 35.4164909),3261,http://www.ikia.ir/,OIIE,Robat Karim,,Tehran
+JUO,America/Bogota,Jurado,JUO,CO,POINT (-77.75 7.116667),2184,,SKJU,Jurado,,Choco
+JUP,America/Los_Angeles,Cable Heliport,CCB,US,POINT (-117.63333 34.1),0,,,Upland,San Bernardino County,California
+IKB,America/New_York,Wilkes County,IKB,US,POINT (-81.15 36.15),1010,http://wilkescounty.net/airport/,KUKF,North Wilkesboro,Wilkes County,North Carolina
+JUT,America/Tegucigalpa,Juticalpa,JUT,HN,POINT (-86.29305 14.673333),1314,,MHJU,La Concepcion,,Olancho
+JUZ,Asia/Shanghai,Quzhou Airport,JUZ,CN,POINT (118.833336 28.966667),0,,ZSJU,Quzhou,,Zhejiang Sheng
+JVL,America/Chicago,Rock County,JVL,US,POINT (-89.01667 42.683334),808,http://www.jvlairport.com/,KJVL,Janesville,Rock County,Wisconsin
+IKI,Asia/Tokyo,Iki Airport,IKI,JP,POINT (129.785263 33.749026),32,,RJDB,Karatsu,,Saga Prefecture
+IKK,America/Chicago,Greater Kankakee,IKK,US,POINT (-88.25 41.38333),501,http://kvaa.com/,KIKK,Channahon,Will County,Illinois
+JWL,America/Chicago,Woodlawns,HOU,US,POINT (-95.47139 30.150557),0,,,The Woodlands,Montgomery County,Texas
+IKP,Australia/Brisbane,Inkerman,IKP,AU,POINT (141.5 -16.25),82,,YIKM,,,
+JXN,America/Detroit,Reynolds Municipal,JXN,US,POINT (-84.46139 42.25889),1001,http://www.co.jackson.mi.us/airport/,KJXN,Jackson,Jackson County,Michigan
+IKS,Asia/Yakutsk,Tiksi Airport,IKS,RU,POINT (128.89743950212954 71.69780095),26,,UEST,Tiksi,,Sakha
+IKT,Asia/Irkutsk,Irkutsk International Airport,IKT,RU,POINT (104.35607 52.273308),1594,http://www.iktport.ru/,UIII,Dzerzhinsk,,Irkutsk
+IKU,Asia/Bishkek,Issyk-Kul International Airport,IKU,KG,POINT (76.70732070846512 42.58600115),5416,http://www.airport.kg/index.php?option=com_content&view=article&id=4&Itemid=6,UCFL,Cholpon-Ata,,Ysyk-Koel
+JSR,Asia/Dhaka,Jessore Airport,JSR,BD,POINT (89.1611447 23.1831797),20,,VGJR,Jessore,,Khulna
+JST,America/New_York,Cambria County Airport,JST,US,POINT (-78.83353249226279 40.31459165),2284,,KJST,Geistown,Cambria County,Pennsylvania
+KAC,Asia/Damascus,Kameshly Airport,KAC,SY,POINT (41.20556 37.031025),1480,,OSKL,Al Qamishli,,Al-Hasakah
+KAD,Africa/Lagos,Kaduna Airport,KAD,NG,POINT (7.440278 10.595833),2073,http://www.faannigeria.org/nigeria-airport.php?airport=10,DNKA,Kaduna,,Kaduna
+KUZ,Asia/Seoul,Gunsan Airbase,KUZ,KR,POINT (128.81667 37.716667),0,,,Kang-neung,,Gangwon-do
+JTC,America/Sao_Paulo,Bauru-Arealva Airport,JTC,BR,POINT (-49.07515943787047 -22.15705835),1962,http://www.daesp.sp.gov.br/aeroporto-estadual-de-bauru-arealva-moussa-nakhal-tobias/,SBAE,Bauru,Bauru,Sao Paulo
+JUB,Africa/Juba,Juba International Airport,JUB,SS,POINT (31.598731911290322 4.873847),1513,,HSSJ,Juba,,Central Equatoria
+JUI,Europe/Berlin,Juist,JUI,DE,POINT (7.0556541 53.6816569),7,,EDWJ,Juist,,Lower Saxony
+JUL,America/Lima,Juliaca Airport,JUL,PE,POINT (-70.15719993301872 -15.4675198),12552,,SPJL,Juliaca,San Roman,Puno
+JUM,Asia/Kathmandu,Jumla,JUM,NP,POINT (82.1923411641879 29.274171000000003),7700,,VNJL,Jumla,Karnali Zone,Mid Western
+JWN,Asia/Tehran,Zanjan,JWN,IR,POINT (48.36540846861334 36.771809149999996),5382,,OITZ,Zanjan,,Zanjan
+JYR,Asia/Tehran,Jiroft,JYR,IR,POINT (57.67470001645022 28.72371005),2663,,OIKJ,Jiroft,,Kerman
+JYV,Europe/Helsinki,Jyvaskyla Airport,JYV,FI,POINT (25.67528039132857 62.399106450000005),459,https://www.finavia.fi/en/jyvaskyla/,EFJY,Jyvaeskylae,Jyvaeskylae,Central Finland
+JZH,Asia/Shanghai,Jiuzhai Huanglong Airport,JZH,CN,POINT (103.68318963961931 32.852786449999996),11327,,ZUJZ,Jin'an,,Sichuan
+KAA,Africa/Lusaka,Kasama Airport,KAA,ZM,POINT (31.12233206276602 -10.20950815),4541,,FLKS,Kasama,,Northern
+ILB,America/Campo_Grande,Ilha Solteira,ILB,BR,POINT (-51.333332 -20.333332),1056,,,Ilha Solteira,Ilha Solteira,Sao Paulo
+KAJ,Europe/Helsinki,Kajaani Airport,KAJ,FI,POINT (27.6784449 64.2834484),483,https://www.finavia.fi/en/kajaani/,EFKI,Kajaani,Kajaani,Kainuu
+KAM,Asia/Aden,Kamaran Island,KAM,YE,POINT (41.666668 15.35),51,,OYKM,As Salif,As Salif,Muhafazat al Hudaydah
+KAN,Africa/Lagos,Mallam Aminu Kano International Airport,KAN,NG,POINT (8.521322889378638 12.0468517),1562,http://www.faannigeria.org/nigeria-airport.php?airport=2,DNKN,Kano,,Kano
+KAO,Europe/Helsinki,Kuusamo Airport,KAO,FI,POINT (29.239381704797808 65.9880455),866,http://www.finavia.fi/en/kuusamo/,EFKS,Kuusamo,Koillismaa,Northern Ostrobothnia
+ILD,Europe/Madrid,Lleida-Alguaire Airport,ILD,ES,POINT (0.5391262971137656 41.72779095),1122,http://www.aeroportlleida.cat/?L=2,LEDA,Alguaire,Provincia de Lleida,Catalonia
+KAT,Pacific/Auckland,Kaitaia,KAT,NZ,POINT (173.28715561627322 -35.071054649999994),270,,NZKT,Kaitaia,Far North District,Northland
+ILE,America/Chicago,Municipal,ILE,US,POINT (-97.68667 31.08639),836,http://www.skylarkfield.net/,KILE,Harker Heights,Bell County,Texas
+KAX,Australia/Perth,Kalbarri,KAX,AU,POINT (114.13333 -27.866667),157,,YKBR,Kalbarri,Northampton Shire,Western Australia
+KAZ,Asia/Jayapura,Kau,KAZ,ID,POINT (127.86667 1.166667),27,,WAMK,Subaim,,Maluku Utara
+KBA,Africa/Freetown,Kabala,KBA,SL,POINT (-12 9.333333),1012,,GFKB,Kamakwie,,Northern Province
+KBH,Asia/Karachi,Kalat,KBH,PK,POINT (66.5166702 29.1333332),0,,"",Kalat,,Balochistan
+KBL,Asia/Kabul,Kabul International Airport,KBL,AF,POINT (69.20650065196745 34.566688400000004),5877,http://hamidkarzaiairport.com/,OAKB,Kabul,,Kabul
+KBP,Europe/Kiev,Boryspil International Airport,IEV,UA,POINT (30.891557297991227 50.3401779),427,http://www.airport-borispol.kiev.ua/,UKBB,Boryspil',,Kiev
+KBI,Africa/Douala,Kribi,KBI,CM,POINT (9.916667 2.95),148,,FKKB,Kribi,,South Province
+KBR,Asia/Kuala_Lumpur,Sultan Ismail Petra Airport,KBR,MY,POINT (102.29385129118026 6.166653350000001),16,,WMKC,Kota Bharu,,Kelantan
+KBS,Africa/Freetown,Bo,KBS,SL,POINT (-11.760596425074066 7.9453471),328,,GFBO,Bo,,Southern Province
+KBV,Asia/Bangkok,Krabi Airport,KBV,TH,POINT (98.98512384231734 8.096407899999999),82,,VTSG,Nuea Khlong,,Krabi
+KBN,Africa/Lubumbashi,Kabinda,KBN,CD,POINT (24.533333 -6.116667),2766,,FZWT,Kabinda,,Kasai-Oriental
+KCF,Asia/Karachi,Kadanwari,KCF,PK,POINT (69.14420755137438 27.2056908),248,,OPKW,Kot Diji,,Sindh
+KCH,Asia/Kuching,Kuching International Airport,KCH,MY,POINT (110.35175975877235 1.4882398499999998),89,,WBGG,Kuching,,Sarawak
+KAS,Africa/Windhoek,Karasburg,KAS,NA,POINT (18.7384885 -28.0285536),3275,,FYKB,Karasburg,,Karas
+KAU,Europe/Helsinki,Kauhava,KAU,FI,POINT (23.0561654 63.1197155),151,,EFKA,Kauhava,Seinaejoki,Southern Ostrobothnia
+ILG,America/New_York,Greater Wilmington,ILG,US,POINT (-75.6075 39.678333),59,,KILG,Wilmington Manor,New Castle County,Delaware
+ILH,Europe/Berlin,Illis Airbase,ILH,DE,POINT (10.39 49.47),1062,,ETIK,Illesheim,Regierungsbezirk Mittelfranken,Bavaria
+KBU,Asia/Makassar,Gusti Syamsir Alam Airport,KBU,ID,POINT (116.333336 -3.333333),4,,WAOK,Sungaibali,,South Kalimantan
+ILI,America/Anchorage,Iliamna Airport,ILI,US,POINT (-154.9113768697929 59.7560681),42,,PAIL,,,
+ILK,Indian/Antananarivo,Ilaka,ILK,MG,POINT (47.166668 -20.333332),4586,,FMMQ,Ambositra,,Amoron'i Mania
+KBX,Asia/Jayapura,Kambuaya,KBX,ID,POINT (132.25 -1),1422,,WASU,Ayamaru,,West Papua
+ILL,America/Chicago,Willmar,ILL,US,POINT (-95.09201583920142 45.11607405),1115,http://www.willmarmn.gov/residents/travel-transportation/airport,KBDH,Willmar,Kandiyohi County,Minnesota
+KBZ,Pacific/Auckland,Kaikoura,KBZ,NZ,POINT (173.68333 -42.416668),20,,NZKI,Kaikoura,Kaikoura District,Canterbury
+KCA,Asia/Shanghai,Kuqa Airport,KCA,CN,POINT (83.7 41.166668),3524,,ZWKC,Luntai,,Xinjiang Uygur Zizhiqu
+ILM,America/New_York,Wilmington International Airport,ILM,US,POINT (-77.90994125738278 34.26664065),49,,KILM,Wrightsboro,New Hanover County,North Carolina
+ILN,America/New_York,Clinton Field,ILN,US,POINT (-83.74083 39.493057),1026,http://www.wilmingtonairpark.com/,KILN,Wilmington,Clinton County,Ohio
+ILO,Asia/Manila,Mandurriao Airport,ILO,PH,POINT (122.5488757 10.7229603),26,,RPVI,Pakiad,Province of Iloilo,Western Visayas
+ILP,Pacific/Noumea,Ile Des Pins Airport,ILP,NC,POINT (167.4475 -22.589722),321,,NWWE,Vao,,
+ILQ,America/Lima,Ilo,ILQ,PE,POINT (-71.33880937843196 -17.6952578),65,,SPLO,Ilo,Provincia de Ilo,Moquegua
+ILR,Africa/Lagos,Ilorin International Airport,ILR,NG,POINT (4.533333 8.5),1043,http://www.faannigeria.org/nigeria-airport.php?airport=20,DNIL,Ilorin,,Kwara
+ILS,America/El_Salvador,Ilopango International Airport,ILS,SV,POINT (-89.1183354304395 13.6995807),2034,,,Ilopango,,San Salvador
+ILU,Africa/Nairobi,Kilaguni,ILU,KE,POINT (38.0698869 -2.913064),2716,,HKKL,Mtito Andei,,Makueni
+ILX,Pacific/Port_Moresby,Ileg,ILX,PG,POINT (145.83 -5.48),42,,"",,,
+ILZ,Europe/Bratislava,Zilina,ILZ,SK,POINT (18.766666 49.233334),1827,,LZZI,Zilina,Okres Zilina,Zilinsky
+IMA,Pacific/Port_Moresby,Iamalele,IMA,PG,POINT (150.5 -9.466667),741,,"",,,
+IMD,Pacific/Port_Moresby,Imonda,IMD,PG,POINT (141.2 -3.433333),1141,,AYIO,,,
+IMF,Asia/Kolkata,Imphal Municipal Airport,IMF,IN,POINT (93.897064 24.76457),2549,http://www.aai.aero/allAirports/imphal_gen.jsp,VEIM,Imphal,Imphal East,Manipur
+IMG,Africa/Maputo,Inhaminga,IMG,MZ,POINT (35.00449126929533 -18.4092755),1049,,"",Dondo,,Sofala
+IML,America/Denver,Imperial,IML,US,POINT (-101.65 40.516666),3254,,KIML,Imperial,Chase County,Nebraska
+IMM,America/New_York,Immokalee,IMM,US,POINT (-81.40392304753274 26.4263713),65,http://www.colliergov.net/index.aspx?page=59,KIMM,Immokalee,Collier County,Florida
+IMO,Africa/Bangui,Zemio,IMO,CF,POINT (25.101617002879774 5.002750949999999),1938,,FEFZ,Zemio,,Haut-Mbomou
+IMP,America/Fortaleza,Imperatriz Airport,IMP,BR,POINT (-47.45800807097166 -5.5301267),390,,SBIZ,Imperatriz,Imperatriz,Maranhao
+KCK,Asia/Irkutsk,Kirensk Airport,KCK,RU,POINT (108.06092345212144 57.77171985),840,,UIKK,Kirensk,,Irkutsk
+KCM,Europe/Istanbul,Kahramanmaras Airport,KCM,TR,POINT (36.950558 37.534443),1723,,LTCN,Kahramanmaras,,Kahramanmaras
+KCO,Europe/Istanbul,Cengiz Topel Airport,KCO,TR,POINT (29.833332 40.75),182,,LTBQ,Derince,,Kocaeli
+KCP,Europe/Kiev,Kamenets-podolskiy,KCP,UA,POINT (26.616667 48.683334),0,,,Kamieniec Podolski,Chemerovets'kyy Rayon,Khmelnytskyi
+KCU,Africa/Kampala,Masindi,KCU,UG,POINT (31.716667 1.683333),3850,,HUMI,Masindi,Masindi District,Western Region
+KCZ,Asia/Tokyo,Kochi Ryoma Airport,KCZ,JP,POINT (133.67104869652374 33.54634005),42,,RJOK,Kochi-shi,,Kochi
+ALO,America/Chicago,Waterloo Airport,ALO,US,POINT (-92.39972 42.55611),872,,KALO,Cedar Falls,Black Hawk County,Iowa
+IMT,America/Menominee,Ford Airport,IMT,US,POINT (-88.11311416188468 45.8213995),1233,http://www.fordairport.org/,KIMT,Kingsford,Dickinson County,Michigan
+KDH,Asia/Kabul,Kandahar Airport,KDH,AF,POINT (65.8421901219367 31.505839549999997),3337,,OAKN,Kandahar,,Kandahar
+KDM,Indian/Maldives,Kaadedhdhoo,KDM,MV,POINT (72.9969 0.4881),2,,VRMT,Thinadhoo,,Gaafu Dhaalu Atholhu
+INA,Europe/Moscow,Inta Airport,INA,RU,POINT (60.11288766942258 66.0555323),137,,UUYI,Inta,,Komi Republic
+KDX,Africa/Khartoum,Kadugli,KDX,SD,POINT (29.7010994 11.1379995),1848,,HSLI,Kadugli,,Southern Kordofan
+KDN,Africa/Libreville,Ndende,KDN,GA,POINT (11.166667 -2.5),417,,FOGE,Ndende,,Ngounie
+INB,America/Belize,Independence,INB,BZ,POINT (-88.3 17.547222),19,,MZSV,,,
+KED,Africa/Nouakchott,Kaedi,KED,MR,POINT (-13.506780293555911 16.16018205),75,,GQNK,Kaedi,,Gorgol
+KEF,Atlantic/Reykjavik,Keflavik International Airport,REK,IS,POINT (-22.626598187703223 63.98486065),171,https://www.isavia.is/en/keflavik-airport,BIKF,Reykjanesbaer,,Southern Peninsula
+KDR,Pacific/Port_Moresby,Kandrian,KDR,PG,POINT (25.333332 41.61667),280,,AYKC,Kurdzhali,Obshtina Kurdzhali,Kurdzhali
+KEH,America/Los_Angeles,Kenmore Air Harbor,KEH,US,POINT (-122.25778715198109 47.757192950000004),14,,S60,Kenmore,King County,Washington
+KDT,Asia/Bangkok,Kamphangsaen,KDT,TH,POINT (99.916664 14.1),30,,VTBK,Kamphaeng Saen,,Nakhon Pathom
+KDU,Asia/Karachi,Skardu Airport,KDU,PK,POINT (75.73333 35.3),7316,,OPSD,Skardu,,Gilgit-Baltistan
+KEJ,Asia/Novokuznetsk,Kemerovo Airport,KEJ,RU,POINT (86.11175735730419 55.27376325),863,,UNEE,Kemerovo,,Kemerovo
+KEL,Europe/Berlin,Kiel-Holtenau,KEL,DE,POINT (10.144719060049372 54.37953465),102,,EDHK,Altenholz,,Schleswig-Holstein
+KDY,Asia/Colombo,Mahaweli,KDY,LK,POINT (80.51667 7.466667),925,,UEMH,Kurunegala,,North Western
+KDZ,Asia/Colombo,Polgolla Reservoir Airport,KDZ,LK,POINT (80.64167 7.330555),1473,,"",Kandy,,Central
+KEM,Europe/Helsinki,Kemi/Tornio Airport,KEM,FI,POINT (24.58187809050273 65.78208085),61,http://www.finavia.fi/en/kemi-tornio/,EFKE,Keminmaa,Kemi-Tornio,Lapland
+KDA,Africa/Dakar,Kolda,KDA,SN,POINT (-14.96736663625622 12.8989844),33,,GODK,Kolda,,Kolda
+KEC,Africa/Lubumbashi,Kasenga,KEC,CD,POINT (28.75 -10.333333),3146,,FZQG,Mwense,,Luapula
+KDC,Africa/Porto-Novo,Kandi,KDC,BJ,POINT (2.9400172445229504 11.1447651),951,,DBBK,Kandi,,Alibori
+KDD,Asia/Karachi,Khuzdar,KDD,PK,POINT (66.64226336610271 27.79291495),4012,,OPKH,Khuzdar,,Balochistan
+KDL,Europe/Tallinn,Kardla Airport,KDL,EE,POINT (22.833788164013534 58.9883153),18,,EEKA,Kardla,Kaerdla linn,Hiiumaa
+KDO,Indian/Maldives,Kadhdhoo,KDO,MV,POINT (73.52078472657755 1.8604839),4,,VRMK,Fonadhoo,,Laamu
+KEN,Africa/Freetown,Kenema,KEN,SL,POINT (-11.17400539707163 7.89635595),485,,GFKE,Kenema,,Eastern Province
+INC,Asia/Shanghai,Yinchuan Hedong International Airport,INC,CN,POINT (106.38861654513931 38.3211525),3766,http://www.ningxiaairport.com/,ZLIC,Yanghe,,Ningxia Huizu Zizhiqu
+IND,America/Indiana/Indianapolis,Indianapolis International Airport,IND,US,POINT (-86.29508388539975 39.7162533),797,http://www.indianapolisairport.com/,KIND,Speedway,Marion County,Indiana
+INE,Africa/Maputo,Chinde,INE,MZ,POINT (36.4 -18.616667),42,,"",,,
+ING,America/Argentina/Rio_Gallegos,Lago Argentino,ING,AR,POINT (-72.666664 -50.583332),2506,,,El Calafate,,Santa Cruz
+INH,Africa/Maputo,Inhambane Airport,INH,MZ,POINT (35.408333 -23.874443),55,,FQIN,Inhambane,,Inhambane
+INI,Europe/Belgrade,Nis Constantine the Great Airport,INI,RS,POINT (21.85733488617226 43.336109),613,,LYNI,Nis,Nisavski Okrug,Central Serbia
+INJ,Australia/Brisbane,Injune,INJ,AU,POINT (148.5518976 -25.8526452),1269,,YINJ,,,
+INK,America/Chicago,Wink,INK,US,POINT (-103.15 31.75),2772,http://www.co.winkler.tx.us/default.aspx?Winkler_County/County.Airport,KINK,Kermit,Winkler County,Texas
+INL,America/Chicago,Falls International Airport,INL,US,POINT (-93.40407638044815 48.5661049),1164,,KINL,Fort Frances,,Ontario
+INN,Europe/Vienna,Innsbruck Airport,INN,AT,POINT (11.341870474999986 47.2597258),1873,http://www.innsbruck-airport.com/,LOWI,Vols,Politischer Bezirk Innsbruck Land,Tyrol
+INO,Africa/Kinshasa,Inongo,INO,CD,POINT (18.282769476435583 -1.94713965),1013,,FZBA,,,
+INQ,Europe/Dublin,Inisheer,INQ,IE,POINT (-9.433333 53.033333),0,,EIIR,Bearna,County Galway,Connaught
+INT,America/New_York,Smith-Reynolds Airport,INT,US,POINT (-80.22487459746776 36.1347765),948,,KINT,Winston-Salem,Forsyth County,North Carolina
+INU,Pacific/Nauru,Nauru International,INU,NR,POINT (166.92074283910955 -0.54887245),42,,ANYN,Arijejen,,Aiwo
+INV,Europe/London,Inverness Airport,INV,GB,POINT (-4.063738 57.539345),29,http://www.hial.co.uk/inverness-airport.html,EGPE,Fortrose,Highland,Scotland
+INW,America/Phoenix,Winslow-Lindbergh,INW,US,POINT (-110.725 35.024166),4891,,KINW,Winslow,Navajo County,Arizona
+KEO,Africa/Abidjan,Odienne,KEO,CI,POINT (-7.570833 9.49),1365,,DIOD,Odienne,,Denguele
+KEP,Asia/Kathmandu,Nepalganj Airport,KEP,NP,POINT (81.576385 28.1325),540,,VNNG,Nepalgunj,Bheri Zone,Mid Western
+KEQ,Asia/Jayapura,Kebar,KEQ,ID,POINT (134.83333 -5.833333),2050,,WASE,Dobo,,Maluku
+KER,Asia/Tehran,Kerman Airport,KER,IR,POINT (56.96192 30.258778),5741,,OIKK,Kerman,,Kerman
+KEV,Europe/Helsinki,Halli,KEV,FI,POINT (24.75 61.583332),479,,EFHA,Kuhmalahti,Tampere,Pirkanmaa
+KEY,Africa/Nairobi,Kericho,KEY,KE,POINT (35.283333 -0.366667),6446,,HKKR,Kericho,,Kericho
+KEZ,Asia/Colombo,Kelaniya River,KEZ,LK,POINT (79.916664 6.983333),0,,"",Wattala,,Western
+KGY,Australia/Brisbane,Kingaroy,KGY,AU,POINT (151.8402221 -26.5773206),1492,,YKRY,Kingaroy,South Burnett,Queensland
+KGA,Africa/Lubumbashi,Kananga,KGA,CD,POINT (22.416668 -5.9),2139,,FZUA,Kananga,,Kasai-Occidental
+KHC,Europe/Simferopol,Kerch,KHC,UA,POINT (36.40351612303412 45.3715154),171,,UKFK,Voykove,,Crimea
+INX,Asia/Jayapura,Inanwatan,INX,ID,POINT (132.23334 -2.166667),82,,WASI,Inanwatan,,West Papua
+INZ,Africa/Algiers,In Salah Airport,INZ,DZ,POINT (2.510509421934017 27.250692200000003),872,,DAUI,I-n-Salah,,Tamanghasset
+IOA,Europe/Athens,Ioannina Airport,IOA,GR,POINT (20.820293435868088 39.697841600000004),1555,,LGIO,Eksochi,Nomos Ioanninon,Epirus
+IOK,Pacific/Port_Moresby,Iokea,IOK,PG,POINT (146.26666 -8.4),0,,"",,,
+IOM,Europe/Isle_of_Man,Isle of Man Airport,IOM,IM,POINT (-4.6269258046304556 54.0827808),59,http://www.iom-airport.com/,EGNS,Castletown,,Castletown
+KGN,Africa/Kinshasa,Kasongo Lunda,KGN,CD,POINT (16.816668 -6.583333),0,,,Kasongo-Lunda,,Bandundu
+ION,Africa/Brazzaville,Impfondo,ION,CG,POINT (18.050921240957845 1.59018215),1010,,FCOI,Impfondo,,Likouala
+KGP,Asia/Yekaterinburg,Kogalym International Airport,KGP,RU,POINT (74.53361 62.19583),220,,USRK,Kogalym,,Khanty-Mansiyskiy Avtonomnyy Okrug
+IOP,Pacific/Port_Moresby,Ioma,IOP,PG,POINT (147.75 -8.35),285,,"",,,
+IOR,Europe/Dublin,Kilronan,IOR,IE,POINT (-9.75 53.11667),0,,EIIM,Clifden,County Galway,Connaught
+IOS,America/Bahia,Ilheus/Bahia-Jorge Amado Airport,IOS,BR,POINT (-39.03 -14.813889),13,,SBIL,Ilheus,Ilheus,Bahia
+IOU,Pacific/Noumea,Ile Ouen,IOU,NC,POINT (166.78305 -22.463888),0,,,Mont-Dore,Le Mont-Dore,South Province
+IOW,America/Chicago,Iowa City,IOW,US,POINT (-91.53333 41.666668),718,http://www.icgov.org/?id=1501,KIOW,Iowa City,Johnson County,Iowa
+IPC,Pacific/Easter,Mataveri International Airport,IPC,CL,POINT (-109.36667 -27.116667),757,,SCIP,Ostrov Paskhi,,
+IPE,Asia/Manila,Ipil,IPE,PH,POINT (122.60140194737215 7.785657),78,,RPMV,Ipil,Province of Zamboanga Sibugay,Zamboanga Peninsula
+IPG,America/Manaus,Ipiranga,IPG,BR,POINT (-65.95 -3.216667),265,,SWII,Fonte Boa,Fonte Boa,Amazonas
+KHA,Asia/Tehran,Khaneh,KHA,IR,POINT (45.15 36.733334),4804,,OITH,Piranshahr,,Azarbayjan-e Gharbi
+IPH,Asia/Kuala_Lumpur,Ipoh Airport,IPH,MY,POINT (101.0904297764127 4.56661635),98,,WMKI,Ipoh,,Perak
+IPI,America/Bogota,San Luis Airport,IPI,CO,POINT (-77.71167 0.866389),9763,,SKIP,Carlosama,,Narino
+KHE,Europe/Kiev,Kherson International Airport,KHE,UA,POINT (32.627777 46.675278),148,http://airport.kherson.ua/,UKOH,Kherson,,Kherson
+KHG,Asia/Shanghai,Kashi Airport,KHG,CN,POINT (76.01107 39.534973),4529,,ZWSH,Kashi,,Xinjiang Uygur Zizhiqu
+KFS,Europe/Istanbul,Kastamonu Airport,KFS,TR,POINT (33.79743930040898 41.314185949999995),3520,,LTAL,Kastamonu,Cide,Kastamonu
+KGD,Europe/Kaliningrad,Khrabrovo Airport,KGD,RU,POINT (20.58772076792804 54.88969255000001),42,,UMKK,Gur'yevsk,,Kaliningrad
+KGF,Asia/Almaty,Karaganda Airport,KGF,KZ,POINT (73.33836907065458 49.67500345),1765,,UAKK,Koktal,,Qaraghandy
+KGG,Africa/Dakar,Kedougou,KGG,SN,POINT (-12.22004179999755 12.5723579),584,,GOTK,Kedougou,,Kedougou
+KGI,Australia/Perth,Kalgoorlie Airport,KGI,AU,POINT (121.45566353087348 -30.78775205),1203,,YPKG,Boulder,Kalgoorlie/Boulder,Western Australia
+KGJ,Africa/Blantyre,Karonga,KGJ,MW,POINT (33.89315797325383 -9.95328455),1765,,FWKA,Karonga,Karonga District,Northern Region
+KGL,Africa/Kigali,Kigali International Airport,KGL,RW,POINT (30.137584308337644 -1.96827605),4859,,HRYR,Kigali,,Kigali
+KGO,Europe/Kiev,Kirovograd,KGO,UA,POINT (32.28340000954539 48.5427829),568,,UKKG,Kirovohrad,,Kirovohrad
+KGS,Europe/Athens,Kos Airport,KGS,GR,POINT (27.08849007034415 36.79545565),412,,LGKO,Antimacheia,Nomos Dodekanisou,South Aegean
+KHD,Asia/Tehran,Khorramabad,KHD,IR,POINT (48.28578127560067 33.438182499999996),3782,,OICK,Khorramabad,,Lorestan
+KHH,Asia/Taipei,Kaohsiung International Airport,KHH,TW,POINT (120.35186186510414 22.5750247),31,http://www.kia.gov.tw/english/e_index.asp,RCKH,Kaohsiung,,Kaohsiung
+KHI,Asia/Karachi,Jinnah International Airport,KHI,PK,POINT (67.15934789666397 24.9014311),100,,OPKC,Malir Cantonment,,Sindh
+KHJ,Europe/Helsinki,Kauhajoki,KHJ,FI,POINT (22.3924001 62.4641745),407,,EFKJ,Kurikka,Seinaejoki,Southern Ostrobothnia
+KHK,Asia/Tehran,Khark Island,KHK,IR,POINT (50.32162557125538 29.261031000000003),17,,OIBQ,Khark,,Bushehr
+KHM,Asia/Rangoon,Khamti,KHM,MM,POINT (95.67215487158401 25.98555425),6000,,VYKI,Tuensang,Tuensang District,Nagaland
+KHN,Asia/Shanghai,Nanchang Changbei International Airport,KHN,CN,POINT (115.90823277913566 28.8616845),143,,ZSCN,Lehua,,Jiangxi Sheng
+IPN,America/Sao_Paulo,Usiminas Airport,IPN,BR,POINT (-42.533333 -19.5),725,,SBIP,Ipatinga,Ipatinga,Minas Gerais
+IPT,America/New_York,Lycoming County Airport,IPT,US,POINT (-76.91980562932577 41.24135285),515,,KIPT,Montoursville,Lycoming County,Pennsylvania
+IPU,America/Bahia,Ipiau,IPU,BR,POINT (-39.733334 -14.133333),410,,SNIU,Ipiau,Ipiau,Bahia
+IPW,Europe/London,Ipswich,IPW,GB,POINT (1.166667 52.066666),147,,,Ipswich,Suffolk,England
+KHR,Asia/Ulaanbaatar,Kharkhorin,KHR,MN,POINT (102.85 46.783333),4759,,ZMHH,Khujirt,,OEvoerhangay
+KHU,Europe/Kiev,Kremenchug,KHU,UA,POINT (33.47942415772828 49.1294423),266,,UKHK,Kremenchuk,,Poltava
+KHT,Asia/Kabul,Khost,KHT,AF,POINT (72 35),3756,,"",Kakad Wari Dir Upper,,Khyber Pakhtunkhwa
+IPZ,America/Costa_Rica,San Isidro de El General Airport,IPZ,CR,POINT (-83.7125 9.348611),2486,,MRSI,San Isidro,,San Jose
+KIC,America/Los_Angeles,Mesa Del Rey,KIC,US,POINT (-121.1209996416406 36.22833355),370,http://www.kingcity.com/index.php?option=com_content&task=view&id=39&Itemid=112,KKIC,King City,Monterey County,California
+KHX,Africa/Kampala,Savannah Airstrip,KHX,UG,POINT (29.7 0.719444),3600,,"",Beni,,Nord Kivu
+KIE,Pacific/Port_Moresby,Aropa,KIE,PG,POINT (155.7252866 -6.304755),20,,AYIQ,Kieta,,Bougainville
+IQN,Asia/Shanghai,Qingyang Airport,IQN,CN,POINT (107.60345395551448 35.801524900000004),4629,,ZLQY,Nanjie,,Gansu Sheng
+KIS,Africa/Nairobi,Kisumu Airport,KIS,KE,POINT (34.7232548 -0.0918383),3734,http://www.kenyaairports.co.ke/kaa/airports/kisumu/,HKKI,Kisumu,,Kisumu
+IQQ,America/Santiago,Diego Aracena International Airport,IQQ,CL,POINT (-70.17848 -20.547937),219,,SCDA,Iquique,Provincia de Iquique,Tarapaca
+KIG,Africa/Johannesburg,Koinghaas,KIG,ZA,POINT (17.266666 -30.2),228,,"",Garies,Namakwa District Municipality,Northern Cape
+KIT,Europe/Athens,Kithira Airport,KIT,GR,POINT (23.016697308202744 36.274017900000004),1045,,LGKC,Kythira,Nomos Piraios,Attica
+KIX,Asia/Tokyo,Kansai International Airport,OSA,JP,POINT (135.2225230169576 34.43420455),26,http://www.kansai-airport.or.jp/en/index.asp,RJBB,Kaizuka,,Osaka
+KIK,Asia/Baghdad,Kirkuk,KIK,IQ,POINT (44.283333 35.516666),1061,,ORKK,Kirkuk,,Muhafazat Kirkuk
+KIL,Africa/Lubumbashi,Kilwa,KIL,CD,POINT (28.05 -8.4),3120,,"",Nchelenge,,Luapula
+KJT,Asia/Jakarta,Kertajati International Airport,KJT,ID,POINT (108.15537620433665 -6.648582149999999),134,,WICA,Jatiwangi,,West Java
+KIO,Pacific/Majuro,Kili Island,KIO,MH,POINT (169.2 5.65),5,,"",Kili,,Kili Island
+IQT,America/Lima,C.F. Secada Vignetta International Airport,IQT,PE,POINT (-73.30284 -3.785098),301,,SPQT,Iquitos,Provincia de Maynas,Loreto
+IRB,America/Chicago,Municipal,IRB,US,POINT (-101.933334 30.7),2627,,"",Iraan,Pecos County,Texas
+IRC,America/Anchorage,Circle City,IRC,US,POINT (-144.0760698 65.8277862),613,,PACR,Deltana,Southeast Fairbanks Census Area,Alaska
+KIU,Africa/Nairobi,Kiunga,KIU,KE,POINT (41.516666 -1.733333),1,,"",Buur Gaabo,,Lower Juba
+IRD,Asia/Dhaka,Ishurdi,IRD,BD,POINT (89.04754247501182 24.155554600000002),32,,VGIS,Ishurdi,,Rajshahi
+KIW,Africa/Lusaka,Southdowns,KIW,ZM,POINT (28.230556 -12.839444),4145,,FLSO,Kitwe,,Copperbelt
+IRE,America/Bahia,Irece,IRE,BR,POINT (-41.86667 -11.3),2316,,SNIC,Irece,Irece,Bahia
+KJA,Asia/Krasnoyarsk,Yemelyanovo Airport,KJA,RU,POINT (92.48286 56.18113),942,http://www.kja.aero,UNKL,Yemel'yanovo,,Krasnoyarskiy
+IRI,Africa/Dar_es_Salaam,Nduli Airport,IRI,TZ,POINT (35.75028 -7.670556),4639,,HTIR,Iringa,,Iringa
+KJI,Asia/Shanghai,Kanasi Airport,KJI,CN,POINT (86.99611 48.22167),3921,,ZWKN,Oymak,,Xinjiang Uygur Zizhiqu
+IRJ,America/Argentina/La_Rioja,La Rioja Airport,IRJ,AR,POINT (-66.79424589587754 -29.37883865),1364,,SANL,La Rioja,,La Rioja
+KJP,Asia/Tokyo,Kerama,KJP,JP,POINT (127.333336 26.083332),156,http://www.pref.okinawa.jp/airport/index/kr/kerama00-e.htm,ROKR,Itoman,,Okinawa
+IRK,America/Chicago,Kirksville Municipal Airport,IRK,US,POINT (-92.54389 40.0925),941,,KIRK,La Plata,Macon County,Missouri
+KJX,Asia/Jakarta,Blangpidie Airport,KJX,ID,POINT (96.791111 3.734444),0,,,Susoh,,Aceh
+IRM,Asia/Yekaterinburg,Igrim,IRM,RU,POINT (64.43934727993724 63.1980487),75,,USHI,Igrim,,Khanty-Mansiyskiy Avtonomnyy Okrug
+IRN,America/Tegucigalpa,Iriona,IRN,HN,POINT (-85.183334 15.95),0,,MHIR,Punta Piedra,,Colon
+KHS,Asia/Muscat,Khasab Airport,KHS,OM,POINT (56.239746782744405 26.171636550000002),100,,OOKB,Khasab,,Musandam
+KHV,Asia/Vladivostok,Khabarovsk Airport,KHV,RU,POINT (135.18291320418953 48.528096),244,http://airkhv.ru/,UHHH,Topolevo,,Khabarovsk Krai
+KHY,Asia/Tehran,Khoy,KHY,IR,POINT (44.97083385648209 38.42877745),3981,,OITK,Khvoy,,Azarbayjan-e Gharbi
+KID,Europe/Stockholm,Kristianstad Airport,KID,SE,POINT (14.087236141896444 55.920444950000004),76,,ESMK,Degeberga,Kristianstads Kommun,Skane
+KIH,Asia/Tehran,Kish International Airport,KIH,IR,POINT (53.97501298963428 26.5299696),101,,OIBK,Kish,,Hormozgan
+KIJ,Asia/Tokyo,Niigata Airport,KIJ,JP,POINT (139.118527 37.9555294),29,,RJSN,Kameda-honcho,,Niigata
+KIM,Africa/Johannesburg,Kimberley Airport,KIM,ZA,POINT (24.766859619333 -28.806550549999997),3950,,FAKM,Kimberley,Frances Baard District Municipality,Northern Cape
+KIR,Europe/Dublin,Kerry County Airport,KIR,IE,POINT (-9.525779717512439 52.180909650000004),112,http://www.kerryairport.ie/,EIKY,Castleisland,Ciarrai,Munster
+KIV,Europe/Chisinau,Chisinau International Airport,KIV,MD,POINT (28.937152073283357 46.92960965),399,http://www.airport.md/,LUKK,Singera,,Chisinau
+KJH,Asia/Shanghai,Kaili Huangping Airport,KJH,CN,POINT (107.98666700671217 26.970256),3115,,ZUKJ,Shiqian,,Guizhou Sheng
+KJK,Europe/Brussels,Kortrijk,KJK,BE,POINT (3.2061592 50.8153884),55,http://www.kortrijkairport.be,EBKT,Wevelgem,Provincie West-Vlaanderen,Flanders
+KKC,Asia/Bangkok,Khon Kaen Airport,KKC,TH,POINT (102.78522834671722 16.4662033),670,,VTUK,Khon Kaen,,Khon Kaen
+KKE,Pacific/Auckland,Kerikeri Airport,KKE,NZ,POINT (173.911817139377 -35.25801885),492,http://www.kerikeri-airport.co.nz/,NZKK,Kerikeri,Far North District,Northland
+IRO,Africa/Bangui,Birao,IRO,CF,POINT (22.713888 10.186389),1676,,FEFI,Birao,,Vakaga
+IRP,Africa/Lubumbashi,Matari,IRP,CD,POINT (27.630833 2.781944),2477,,FZJH,Isiro,,Eastern Province
+IRS,America/Detroit,Kirsch Municipal,IRS,US,POINT (-85.4388715 41.8128281),938,http://www.sturgismi.gov/airport/,KIRS,Sturgis,Saint Joseph County,Michigan
+KKJ,Asia/Tokyo,Kitakyushu Airport,KKJ,JP,POINT (130.9435 33.834373),21,,RJFR,Kanda,,Fukuoka
+KKM,Asia/Bangkok,Lop Buri,KKM,TH,POINT (100.61667 14.8),95,,VTBH,Lop Buri,,Lop Buri
+KKN,Europe/Oslo,Kirkenes Airport Hoeybuktmoen,KKN,NO,POINT (29.891184 69.7235),283,https://avinor.no/en/airport/kirkenes-airport/,ENKR,Bjornevatn,Sor-Varanger,Finnmark Fylke
+KKO,Pacific/Auckland,Kaikohe,KKO,NZ,POINT (173.81667 -35.452778),571,,NZKO,Waimate North,Far North District,Northland
+KKS,Asia/Tehran,Kashan Airport,KKS,IR,POINT (51.579687960697086 33.890191200000004),3465,,OIFK,Kashan,,Isfahan
+KKT,America/Chicago,Kentland,KKT,US,POINT (-87.43458204618196 40.75960355),698,,"50I",Kentland,Newton County,Indiana
+IRU,Asia/Colombo,Iranamadu SPB,IRU,LK,POINT (139.50674 35.921055),22,,"",Kawagoe,,Saitama
+IRZ,America/Manaus,Tapuruquara,IRZ,BR,POINT (-64.99261880076497 -0.37810525),137,,SWTP,Santa Isabel do Rio Negro,Santa Isabel Do Rio Negro,Amazonas
+KLC,Africa/Dakar,Kaolack,KLC,SN,POINT (-16.5 14.083333),26,,GOOK,Foundiougne,,Fatick
+KLD,Europe/Moscow,Migalovo,KLD,RU,POINT (35.916668 56.916668),469,,UUEM,Tver,,Tverskaya
+ISB,Asia/Karachi,Islamabad International Airport,ISB,PK,POINT (72.82560416238321 33.55153275),1751,http://www.islamabadairport.com.pk/,OPIS,Rawalpindi,,Punjab
+KLF,Europe/Moscow,Grabtsevo Airport,KLF,RU,POINT (36.368889 54.546667),656,,UUBC,Kaluga,,Kaluga
+KLO,Asia/Manila,Kalibo International Airport,KLO,PH,POINT (122.3748426278658 11.6789701),14,,RPVK,"Brgy. Nalook, kalibo",Province of Aklan,Western Visayas
+KLH,Asia/Kolkata,Kolhapur,KLH,IN,POINT (74.333336 16.666668),1996,,VAKP,Kagal,Kolhapur,Maharashtra
+KLU,Europe/Vienna,Klagenfurt Airport,KLU,AT,POINT (14.328599613147205 46.64348185),1472,http://www.klagenfurt-airport.com/,LOWK,Klagenfurt am Woerthersee,Klagenfurt am Woerthersee,Carinthia
+KLJ,Europe/Vilnius,Klaipeda,PLQ,LT,POINT (21.143408 55.424284),0,,,Neringa,,
+KLV,Europe/Prague,Karlovy Vary Airport,KLV,CZ,POINT (12.913358570496666 50.2018781),1989,http://www.airport-k-vary.cz/indexEN.php,LKKV,Dalovice,,Karlovarsky
+KLX,Europe/Athens,Kalamata Airport,KLX,GR,POINT (22.025095209751395 37.068318950000005),26,,LGKL,Thouria,Nomos Messinias,Peloponnese
+ISC,Europe/London,St Marys,ISC,GB,POINT (-6.291667 49.913334),82,http://www.scilly.gov.uk/transport/airandsea/airport/,EGHE,St Mary's,Isles of Scilly,England
+KME,Africa/Kigali,Kamembe,KME,RW,POINT (28.907970898635014 -2.4624077),5192,,HRZA,Cyangugu,,Western Province
+KMG,Asia/Shanghai,Kunming Changshui International Airport,KMG,CN,POINT (102.93841345267796 25.10710645),6903,,ZPPP,Qidian,,Yunnan
+KMI,Asia/Tokyo,Miyazaki Airport,KMI,JP,POINT (131.44801903631105 31.876688),20,,RJFM,Miyazaki-shi,,Miyazaki
+KLQ,Asia/Jakarta,Keluang,KLQ,ID,POINT (103.9 -2.683333),76,,WIPV,Sekayu,,South Sumatra
+KLR,Europe/Stockholm,Kalmar Oland Airport,KLR,SE,POINT (16.287222 56.685),17,,ESMQ,Rinkabyholm,Kalmar Kommun,Kalmar
+KMJ,Asia/Tokyo,Kumamoto Airport,KMJ,JP,POINT (130.85543996230052 32.8362322),642,,RJFT,Ozu,,Kumamoto
+KLT,Europe/Berlin,Kaiserslautern,KLT,DE,POINT (7.75 49.433334),0,,,Kaiserslautern,,Rheinland-Pfalz
+KKY,Europe/Dublin,Kilkenny,KKY,IE,POINT (-7.295995331355858 52.650913),319,http://www.kilkennyflying-glidingclub.com/,EIKK,Kilkenny,Kilkenny,Leinster
+KKZ,Asia/Phnom_Penh,Koh Kong,KKZ,KH,POINT (102.95048775000001 11.63982745),0,,VDKK,Koh Kong,,Koh Kong
+KLB,Africa/Lusaka,Kalabo Airport,KLB,ZM,POINT (22.645694279940336 -14.9981928),3450,,FLKL,Kalabo,,Western
+KLE,Africa/Douala,Kaele,KLE,CM,POINT (14.4455654 10.0926682),1276,,FKKH,Kaele,,Far North
+KLM,Asia/Tehran,Kalaleh,KLM,IR,POINT (55.44509053533892 37.38468075),425,,OINE,Kalaleh,,Golestan
+ISD,America/Bogota,Iscuande,ISD,CO,POINT (-77.9813151 2.4468635),16,,"",Iscuande,,Narino
+KLZ,Africa/Johannesburg,Kleinzee,KLZ,ZA,POINT (17.099445804329402 -29.6881558),270,,FAKZ,Port Nolloth,Namakwa District Municipality,Northern Cape
+ISE,Europe/Istanbul,Isparta Suleyman Demirel Airport,ISE,TR,POINT (30.36730433725927 37.85602305),2847,http://www.dhmi.gov.tr/dosyalar/limanvemeydanlar/sdemirel/sdemirel.asp,LTFC,Keciborlu,,Isparta
+KMC,Asia/Riyadh,King Khalid Military,KMC,SA,POINT (45.523495 27.911282),1352,,OEKK,Hajrat al Khinbish,,
+ISG,Asia/Tokyo,Painushima Ishigaki Airport,ISG,JP,POINT (124.16889 24.336945),55,,ROIG,Ishigaki,,Okinawa
+ISH,Europe/Rome,Ischia Airport,ISH,IT,POINT (13.95 40.733334),72,,,Ischia,Provincia di Napoli,Campania
+ISJ,America/Cancun,Isla Mujeres,ISJ,MX,POINT (-86.74047119765788 21.24591925),22,,MMIM,Isla Mujeres,,Quintana Roo
+KMH,Africa/Johannesburg,Kuruman,KMH,ZA,POINT (23.466667 -27.466667),4382,,FAKU,Kuruman,John Taolo Gaetsewe District Municipality,Northern Cape
+ISK,Asia/Kolkata,Gandhinagar Airport,ISK,IN,POINT (73.811264 19.966942),1948,,VAOZ,Deolali,Nashik Division,Maharashtra
+ISM,America/New_York,Kissimmee Gateway,ISM,US,POINT (-81.333336 28.45),88,http://www.kissimmee.org/index.aspx?page=111,KISM,Belle Isle,Orange County,Florida
+ISO,America/New_York,Stallings Field,ISO,US,POINT (-77.6077152 35.3290496),75,http://www.jetkinston.com/,KISO,Kinston,Lenoir County,North Carolina
+ISP,America/New_York,Long Island MacArthur Airport,ISP,US,POINT (-73.09920017603784 40.79578465),72,,KISP,Bohemia,Suffolk County,New York
+ISQ,America/Detroit,Schoolcraft County,ISQ,US,POINT (-86.25 45.95),580,,KISQ,Manistique,Schoolcraft County,Michigan
+ISS,America/New_York,Wiscasset,ISS,US,POINT (-69.666664 44),22,http://www.wiscasset.org/departments/airport/,KIWI,Wiscasset,Lincoln County,Maine
+IST,Europe/Istanbul,Istanbul New Airport,IST,TR,POINT (28.8298952 40.9912282),82,http://www.igairport.com/en,LTFM,Bahcelievler,,Istanbul
+ISU,Asia/Baghdad,Sulaimaniyah International Airport,ISU,IQ,POINT (45.31510843970692 35.5626087),2388,,ORSU,As Sulaymaniyah,,As Sulaymaniyah
+KMN,Africa/Lubumbashi,Kamina,KMN,CD,POINT (25.25 -8.641111),3543,,FZSA,Kamina,,Katanga
+KMP,Africa/Windhoek,J.G.H. Van Der Wath,KMP,NA,POINT (18.1 -26.533611),3506,,FYKT,Keetmanshoop,,Karas
+KMQ,Asia/Tokyo,Komatsu Airport,KMQ,JP,POINT (136.40924640121113 36.39344695),36,,RJNK,Komatsu,,Ishikawa
+KMS,Africa/Accra,Kumasi Airport,KMS,GH,POINT (-1.5903265519696532 6.7150762),942,,DGSI,Tafo,,Ashanti
+KMT,Asia/Phnom_Penh,Kampot,KMT,KH,POINT (104.166664 10.6),44,,"",Kampot,,Kampot
+KMU,Africa/Mogadishu,Kismayu,KMU,SO,POINT (42.841667 -0.416667),49,,HCMK,Kismayo,,Lower Juba
+KMV,Asia/Rangoon,Kalemyo Airport,KMV,MM,POINT (94.0493952559469 23.18896165),499,,VYKL,Falam,,Chin
+KMW,Europe/Moscow,Sokerkino,KMW,RU,POINT (40.933334 57.75),446,http://www.kmtn.ru/~koao/,UUBA,Kostroma,Kostromskoy Rayon,Kostroma
+KMX,Asia/Riyadh,Khamis Mushait,KMX,SA,POINT (42.716667 18.3),6778,,OEKM,Khamis Mushait,,Mintaqat `Asir
+KMZ,Africa/Lusaka,Kaoma,KMZ,ZM,POINT (24.807671023589144 -14.79717745),3670,,FLKO,Kaoma,,Western
+KNA,America/Santiago,Vina del Mar,KNA,CL,POINT (-71.566666 -33.033333),461,,SCVM,Vina del Mar,Provincia de Valparaiso,Valparaiso
+ISW,America/Chicago,Alexander Field,ISW,US,POINT (-89.83686021248172 44.36169675),1000,http://www.wirapids.org/department/?fDD=27-0,KISW,Port Edwards,Wood County,Wisconsin
+KNF,Europe/London,Marham RAF,KNF,GB,POINT (0.4 52.75),75,http://www.raf.mod.uk/rafmarham/,EGYM,King's Lynn,Norfolk,England
+KNG,Asia/Jayapura,Kaimana Airport,KNG,ID,POINT (133.75 -3.65),19,,WASK,Kaimana,,West Papua
+ITA,America/Manaus,Itacoatiara,ITA,BR,POINT (-58.416668 -3.133333),62,,SBIC,Itacoatiara,Itacoatiara,Amazonas
+KNI,Australia/Perth,Katanning,KNI,AU,POINT (117.55 -33.7),0,,YKNG,Katanning,Katanning,Western Australia
+KNJ,Africa/Brazzaville,Kindamba,KNJ,CG,POINT (14.516667 -3.95),1460,,FCBK,Kinkala,,Pool
+KNO,Asia/Jakarta,Kuala Namu International Airport,MES,ID,POINT (98.86748596472728 3.6312752),23,http://www.kualanamu-airport.co.id/,WIMM,Percut,,North Sumatra
+KNM,Africa/Lubumbashi,Kaniama,KNM,CD,POINT (24.183332 -7.516667),2772,,FZTK,Gandajika,,Kasai-Oriental
+KNN,Africa/Conakry,Kankan,KNN,GN,POINT (-9.305556 10.3975),1234,,GUXN,Kankan,Kankan Prefecture,Kankan
+KNR,Asia/Tehran,Jam,KNR,IR,POINT (52.357625547146384 27.817524650000003),2173,,OIBJ,Jam,,Bushehr
+KNS,Australia/Currie,King Island Airport,KNS,AU,POINT (143.88268453090632 -39.877928749999995),132,,YKII,Currie,King Island,Tasmania
+KNQ,Pacific/Noumea,Kone,KNQ,NC,POINT (164.83778 -21.053333),23,,NWWD,Kone,Kone,North Province
+KNZ,Africa/Bamako,Kenieba,KNZ,ML,POINT (-11.2510981 12.8410617),449,,GAKA,Dire,,
+KNB,America/Denver,Kanab,KNB,US,POINT (-112.53000907611442 37.00973985),0,,,Kanab,Kane County,Utah
+KNT,America/Chicago,Municipal,KNT,US,POINT (-90.03472 36.230556),262,http://www.ktkx.us/,KTKX,Kennett,Dunklin County,Missouri
+ITB,America/Santarem,Itaituba,ITB,BR,POINT (-55.983334 -4.283333),22,,SBIH,Itaituba,Itaituba,Para
+KNH,Asia/Taipei,Kinmen Airport,KNH,TW,POINT (118.35939629231481 24.4284527),93,http://www.kma.gov.tw/,RCBS,Jincheng,Kinmen,Fukien
+KNU,Asia/Kolkata,Kanpur Airport,KNU,IN,POINT (80.40040718434199 26.4174559),410,,VICX,Kanpur,Kanpur,Uttar Pradesh
+KOO,Africa/Lubumbashi,Kongolo,KOO,CD,POINT (26.98669647670348 -5.39325675),1850,,FZRQ,Kongolo,,Katanga
+ITE,America/Bahia,Itubera,ITE,BR,POINT (-39.2 -13.7),554,,SNZW,Itubera,Itubera,Bahia
+ITH,America/New_York,Ithaca Tompkins Regional Airport,ITH,US,POINT (-76.4587 42.491),1056,,KITH,Lansing,Tompkins County,New York
+ITK,Pacific/Port_Moresby,Itokama,ITK,PG,POINT (148.2 -9.3),2391,,AYIK,,,
+KOC,Pacific/Noumea,Koumac,KOC,NC,POINT (164.41667 -20.5),42,,NWWK,Koumac,Koumac,North Province
+KOD,Asia/Makassar,Kotabangun,KOD,ID,POINT (116.583336 -0.266667),13,,"",Sebulu,,East Kalimantan
+ITM,Asia/Tokyo,Itami Airport,OSA,JP,POINT (135.43904072806066 34.783984700000005),29,,RJOO,Toyonaka,,Osaka
+ITN,America/Bahia,Itabuna,ITN,BR,POINT (-39.3 -14.8),505,,SWTX,Itabuna,Itabuna,Bahia
+KOG,Asia/Vientiane,Khong,KOG,LA,POINT (105.816666 15.566667),0,,,Khong Chiam,,Changwat Ubon Ratchathani
+ITR,America/Sao_Paulo,Hidroeletrica,ITR,BR,POINT (-49.21306537143137 -18.44603765),1538,,SBIT,Itumbiara,Itumbiara,Goias
+ITU,Asia/Srednekolymsk,Iturup,ITU,RU,POINT (147.96086383247862 45.25471985),383,,UHSI,Kuril'sk,,Hokkaido
+IUE,Pacific/Niue,Hanan Airport,IUE,NU,POINT (-169.92138016169685 -19.0804765),167,,NIUE,Alofi,,
+IUL,Asia/Jayapura,Ilu,IUL,ID,POINT (138.20039368553904 -3.7065730500000003),6358,,WABE,,,
+IUS,Pacific/Port_Moresby,Inus,IUS,PG,POINT (155.16667 -5.816667),147,,"",,,
+IVA,Indian/Antananarivo,Ambanja,IVA,MG,POINT (48.4565628 -13.6446652),45,,FMNZ,Ambanja,,Diana
+KON,Asia/Ho_Chi_Minh,Kontum,KON,VN,POINT (108.021385 14.354167),1804,,"",Kon Tum,,Kon Tum
+IVC,Pacific/Auckland,Invercargill Airport,IVC,NZ,POINT (168.32427540446304 -46.416380000000004),22,http://www.invercargillairport.co.nz/index.htm,NZNV,Invercargill,Invercargill City,Southland
+IVG,Europe/Podgorica,Ivangrad,IVG,ME,POINT (19.8619995 42.8390007),2267,,LYBR,Berane,,Berane
+IVH,America/Anchorage,Ivishak,IVH,US,POINT (-148.25 69.4),590,,,,,
+IVI,America/Panama,Isla Viveros,IVI,PA,POINT (-148.25 69.4),590,,"",,,
+IVL,Europe/Helsinki,Ivalo Airport,IVL,FI,POINT (27.4179369 68.6093255),400,http://www.finavia.fi/en/ivalo/,EFIV,Ivalo,Pohjois-Lappi,Lapland
+IVO,America/Bogota,Chivolo,IVO,CO,POINT (-74.53333 9.516667),114,,,Santa Ana,,Magdalena
+IVR,Australia/Sydney,Inverell,IVR,AU,POINT (151.14301942198557 -29.8901554),2660,,YIVL,Gilgai,Inverell,New South Wales
+IWA,Europe/Moscow,Ivanovo Yuzhny Airport,IWA,RU,POINT (40.938972708101915 56.941138),390,,UUBI,Ivanovo,Gorod Ivanovo,Ivanovo
+IWD,America/Menominee,Gogebic County Airport,IWD,US,POINT (-90.13408914920565 46.5274978),1217,,KIWD,Ironwood,Gogebic County,Michigan
+KOQ,Europe/Berlin,Koethen,KOQ,DE,POINT (11.95 51.716667),305,http://flugplatz-koethen.jimdo.com/,EDCK,Edderitz,,Saxony-Anhalt
+KOS,Asia/Phnom_Penh,Sihanouk International Airport,KOS,KH,POINT (103.5 10.633333),33,http://www.sihanoukville-cambodia.com/about-sihanoukville/airport.html,VDSV,Sihanoukville,,Preah Sihanouk
+KOU,Africa/Libreville,Koulamoutou,KOU,GA,POINT (12.508333 -1.116667),1070,,FOGK,Koulamoutou,,Ogooue-Lolo
+KOV,Asia/Almaty,Kokshetau Airport,KOV,KZ,POINT (69.4 53.316666),900,,UACK,Kokshetau,,Aqmola
+KOW,Asia/Shanghai,Ganzhou Airport,KOW,CN,POINT (114.77981001603592 25.853333499999998),387,,ZSGZ,Ganzhou,,Jiangxi Sheng
+KPD,America/New_York,King Of Prussia,KPD,US,POINT (-75.4 40.083332),0,,,King of Prussia,Montgomery County,Pennsylvania
+KPO,Asia/Seoul,Pohang Airport,KPO,KR,POINT (129.4206163073351 35.9878003),70,http://pohang.airport.co.kr/,RKTH,Pohang,,Gyeongsangbuk-do
+KPS,Australia/Sydney,Kempsey,KPS,AU,POINT (152.76862911519808 -31.07219245),54,,YKMP,Kempsey,Kempsey,New South Wales
+KPT,America/Los_Angeles,Jackpot,KPT,US,POINT (-114.65728359004397 41.97348675),5213,,"06U",Jackpot,Elko County,Nevada
+KPW,Asia/Kamchatka,Keperveyem Airport,KPW,RU,POINT (166.1371445295592 67.8471745),623,,UHMK,Bilibino,Bilibinskiy Rayon,Chukotskiy Avtonomnyy Okrug
+KQH,Asia/Kolkata,Kishangarh Airport,KQH,IN,POINT (74.81260202239429 26.58696425),0,,VIKG,Kishangarh,Ajmer,Rajasthan
+KQT,Asia/Dushanbe,Qurghonteppa International Airport,KQT,TJ,POINT (68.86170436808374 37.86674825),1473,,UTDT,Bustonqal'a,,Khatlon
+KRF,Europe/Stockholm,Kramfors Airport,KRF,SE,POINT (17.765907573315225 63.0494837),34,,ESNK,Bollstabruk,Kramfors Kommun,Vaesternorrland
+KRN,Europe/Stockholm,Kiruna Airport,KRN,SE,POINT (20.333082140070225 67.8200558),1508,https://www.swedavia.com/kiruna/,ESNQ,Kiruna,Kiruna Kommun,Norrbotten
+IWJ,Asia/Tokyo,Hagi-Iwami Airport,IWJ,JP,POINT (131.811698 34.676127),118,,RJOW,Masuda,,Shimane
+IWK,Asia/Tokyo,Iwakuni Kintaikyo Airport,IWK,JP,POINT (132.23592865418775 34.159093150000004),13,http://www.iwakuni-airport.jp/,RJOI,Iwakuni,,Yamaguchi
+IXG,Asia/Kolkata,Belgaum Airport,IXG,IN,POINT (74.6142405432812 15.8593476),2427,,VOBM,Belgaum,Belgaum,Karnataka
+IXL,Asia/Kolkata,Leh Airport,IXL,IN,POINT (77.54709128588135 34.13526),10695,http://airportsindia.org.in/allAirports/leh_generalinfo.jsp,VILH,Leh,Ladakh,Kashmir
+IXN,Asia/Kolkata,Khowai,IXN,IN,POINT (91.60333 24.063889),49,,VEKW,Khowai,,Tripura
+IXP,Asia/Kolkata,Pathankot,IXP,IN,POINT (75.63287694903185 32.23798645),1000,,VIPK,Pathankot,Pathankot,Punjab
+IXQ,Asia/Kolkata,Kamalpur,IXQ,IN,POINT (91.81556 24.1325),104,,VEKM,Kamalpur,Dhalai,Tripura
+IXS,Asia/Kolkata,Kumbhirgram Airport,IXS,IN,POINT (92.979256 24.916018),364,http://aai.aero/allAirports/silchar_general.jsp,VEKU,Lakhipur,Cachar,Assam
+IXT,Asia/Kolkata,Pasighat,IXT,IN,POINT (95.333336 28.016666),472,,VEPG,Pasighat,East Siang,Arunachal Pradesh
+IXV,Asia/Kolkata,Along,IXV,IN,POINT (94.8054770760935 28.1769663),784,,VEAN,Along,West Siang,Arunachal Pradesh
+IXX,Asia/Kolkata,Bidar Air Force Station,IXX,IN,POINT (77.487099 17.9081),2171,,VOBR,Bidar,Bidar,Karnataka
+IYK,America/Los_Angeles,Kern County,IYK,US,POINT (-117.82917 35.656666),2404,,KIYK,Inyokern,Kern County,California
+IZA,America/Sao_Paulo,Zona da Mata Regional Airport,JDF,BR,POINT (-43.173058 -21.513056),1318,,SBZM,Rio Novo,Rio Novo,Minas Gerais
+IZE,Europe/Berlin,Itzehoe/Hungriger Wolf Airport,IZE,DE,POINT (9.5786113739 53.9944458008),45,,EDHF,Peissen,Salzland,Schleswig-Holstein
+IZO,Asia/Tokyo,Izumo Airport,IZO,JP,POINT (132.88780550678308 35.41314345),29,,RJOC,Hiratacho,,Shimane
+IZT,America/Mexico_City,Ixtepec,IZT,MX,POINT (-95.10833 16.569166),223,,MMIT,San Jeronimo Ixtepec,,Oaxaca
+KRC,Asia/Jakarta,Kerinci,KRC,ID,POINT (101.25 -1.716667),2600,,WIPH,Siulakderasmudik,,Jambi
+JAA,Asia/Kabul,Jalalabad,JAA,AF,POINT (70.49910110579532 34.39979555),1801,,OAJL,Jalalabad,,Nangarhar
+KRE,Africa/Bujumbura,Kirundo,KRE,BI,POINT (29 -3.333333),4511,,HBBO,Uvira,,South Kivu
+JAC,America/Denver,Jackson Hole Airport,JAC,US,POINT (-110.73803248494762 43.6087926),6469,,KJAC,Jackson,Teton County,Wyoming
+JAD,Australia/Perth,Jandakot,PER,AU,POINT (115.87474821252181 -32.0976113),65,,YPJT,Willetton,Canning,Western Australia
+JAF,Asia/Colombo,Kankesanturai,JAF,LK,POINT (80.0689781508496 9.792629949999998),39,,VCCJ,Valvedditturai,,Northern Province
+JAG,Asia/Karachi,Jacobabad,JAG,PK,POINT (68.45826131062442 28.28384345),177,,OPJA,Jacobabad,,Sindh
+KRK,Europe/Warsaw,J. Paul II International Airport Krakow-Balice,KRK,PL,POINT (19.793743 50.075493),791,http://www.krakowairport.pl/en/,EPKK,Balice,Powiat krakowski,Lesser Poland Voivodeship
+KRL,Asia/Shanghai,Korla Airport,KRL,CN,POINT (86.12434 41.689896),0,,ZWKL,Sayibage,,Xinjiang Uygur Zizhiqu
+JAI,Asia/Kolkata,Jaipur Airport,JAI,IN,POINT (75.8059454340161 26.8281087),1250,https://www.jaipurairport.com/,VIJP,Jaipur,Jaipur,Rajasthan
+JAJ,America/New_York,Perimeter Mall,ATL,US,POINT (-84.42167 33.635277),974,,,Hapeville,Fulton County,Georgia
+JAK,America/Port-au-Prince,Jacmel Regional Airport,JAK,HT,POINT (-72.51861 18.240557),121,,MTJA,Jacmel,,Sud-Est
+JAL,America/Mexico_City,Jalapa,JAL,MX,POINT (-96.781944 19.472221),3038,,MMJA,Dos Rios,Emiliano Zapata,Veracruz
+JAM,Europe/Sofia,Jambol,JAM,BG,POINT (26.483334 42.516666),531,,LBIA,Yambol,Obshtina Yambol,Yambol
+JAN,America/Chicago,Jackson-Evers International Airport,JAN,US,POINT (-90.07677829423244 32.312110399999995),298,http://www.jmaa.com,KJAN,Flowood,Rankin County,Mississippi
+JAO,America/New_York,Beaver Ruin,ATL,US,POINT (-84.43278 33.64639),997,,,College Park,Fulton County,Georgia
+JAP,America/Costa_Rica,Punta Renes,JAP,CR,POINT (-84.833336 9.966667),0,,MRCH,Puntarenas,Canton Central de Puntarenas,Puntarenas
+JAR,Asia/Tehran,Jahrom,JAR,IR,POINT (53.55 28.516666),3441,,OISJ,Jahrom,,Fars
+JAU,America/Lima,Jauja Airport,JAU,PE,POINT (-75.25 -11.75),14947,,SPJJ,Masma Chicche,Provincia de Jauja,Junin
+KRO,Asia/Yekaterinburg,Kurgan Airport,KRO,RU,POINT (65.3 55.433334),240,,USUU,Kurgan,,Kurgan
+KBM,Pacific/Port_Moresby,Kabwum,KBM,PG,POINT (147.19190660256731 -6.1551721),4450,,AYKB,,,
+KRR,Europe/Moscow,Krasnodar International Airport,KRR,RU,POINT (39.18144291163304 45.03371395),118,http://basel.aero/en/krasnodar/,URKK,Pashkovskiy,,Krasnodarskiy
+KSH,Asia/Tehran,Kermanshah Airport,KSH,IR,POINT (47.1688282549366 34.347537349999996),4307,,OICC,Kermanshah,,Kermanshah
+JBB,Asia/Jakarta,Notohadinegoro Airport,JBB,ID,POINT (113.69370831834904 -8.2421527),223,,WARE,Renes,,East Java
+KSI,Africa/Conakry,Kissidougou,KSI,GN,POINT (-10.1245813 9.1608546),1808,,GUKU,Kissidougou,Kissidougou,Faranah
+KSK,Europe/Stockholm,Karlskoga,KSK,SE,POINT (14.4947222 59.3444444),400,,ESKK,Karlskoga,Karlskoga Kommun,OErebro
+KRW,Asia/Ashgabat,Turkmanbashi Airport,KRW,TM,POINT (53.083332 40.083332),279,,UTAK,Turkmenbasy,,Balkan
+KRZ,Africa/Kinshasa,Kiri,KRZ,CD,POINT (19 -1.483333),1013,,FZBT,Inongo,,Bandundu
+KSW,Asia/Jerusalem,Kiryat Shmona,KSW,IL,POINT (35.5929008 33.2133046),381,,LLKS,Qiryat Shemona,,Northern District
+KTF,Pacific/Auckland,Takaka,KTF,NZ,POINT (172.7757468055504 -40.8146632),102,,NZTK,Takaka,Tasman District,Tasman
+KSD,Europe/Stockholm,Karlstad Airport,KSD,SE,POINT (13.472059 59.360283),352,,ESOK,Karlstad,Karlstads Kommun,Vaermland
+JBC,America/New_York,Boston City Heliport,BOS,US,POINT (-71.049446 42.343887),29,,,South Boston,Suffolk County,Massachusetts
+JBK,America/Los_Angeles,Berkeley,JBK,US,POINT (-122.3 37.86667),36,,,Albany,Alameda County,California
+KSJ,Europe/Athens,Kasos Island Airport,KSJ,GR,POINT (26.916668 35.42139),35,,LGKS,Fry,Nomos Dodekanisou,South Aegean
+JBR,America/Chicago,Jonesboro Airport,JBR,US,POINT (-90.64833 35.83),229,,KJBR,Jonesboro,Craighead County,Arkansas
+KSL,Africa/Khartoum,Kassala Airport,KSL,SD,POINT (36.34222 15.390278),1671,,HSKA,Kassala,,Kassala
+JBS,America/Los_Angeles,Hacienda Bus.Park Heliport,JBS,US,POINT (-121.9 37.699722),360,,SSSB,Dublin,Alameda County,California
+KSO,Europe/Athens,Aristoteles Airport,KSO,GR,POINT (21.273333 40.450832),2167,,LGKA,Argos Orestiko,Nomos Kastorias,West Macedonia
+KSQ,Asia/Samarkand,Karshi Airport,KSQ,UZ,POINT (65.77531 38.80981),1365,,UTSK,Qarshi,,Qashqadaryo
+KSS,Africa/Bamako,Sikasso,KSS,ML,POINT (-5.583333 11.3),1378,,GASK,Sikasso,,Sikasso
+KST,Africa/Khartoum,Kosti,KST,SD,POINT (32.716667 13.133333),1289,,HSKI,Rabak,,White Nile
+JCA,Europe/Paris,Croisette Heliport,CEQ,FR,POINT (7.044444 43.53889),0,,,,,
+JCB,America/Sao_Paulo,Joacaba,JCB,BR,POINT (-51.55345654971351 -27.17148265),2516,,SSJA,Joacaba,Joacaba,Santa Catarina
+KSY,Europe/Istanbul,Kars Airport,KSY,TR,POINT (43.085835 40.551666),5889,,LTCF,Kars,,Kars
+JCC,America/Los_Angeles,China Basin Heliport,SFO,US,POINT (-122.416664 37.75),104,,,San Francisco,San Francisco County,California
+JCD,America/St_Thomas,Downtown Heliport,STX,VI,POINT (-64.78333 17.7),36,,,,,
+KTC,Africa/Abidjan,Katiola,KTC,CI,POINT (-5.166667 8.166667),1026,,"",Katiola,,Vallee du Bandama
+JCE,America/Los_Angeles,Convention Center Heliport,OAK,US,POINT (-122.26667 37.816666),85,,,Oakland,Alameda County,California
+JCI,America/Chicago,New Century Aircenter Airport,MKC,US,POINT (-94.9 38.833332),1118,,KIXD,Gardner,Johnson County,Kansas
+KTG,Asia/Pontianak,Ketapang Airport,KTG,ID,POINT (109.98333 -1.833333),46,,WIOK,Ketapang,,West Kalimantan
+KTI,Asia/Phnom_Penh,Kratie,KTI,KH,POINT (106.05 12.5),0,,VDKT,Kratie,,Kratie
+JCM,America/Bahia,Jacobina,JCM,BR,POINT (-40.55150285692899 -11.1640584),1548,,SNJB,Jacobina,Jacobina,Bahia
+KRP,Europe/Copenhagen,Karup Airport,KRP,DK,POINT (9.123758915387072 56.311227349999996),170,,EKKA,Karup,Viborg Kommune,Central Jutland
+KRQ,Europe/Kiev,Kramatorsk,KRQ,UA,POINT (37.62058851535039 48.70923835),646,,UKCK,Kramators'k,,Donetsk
+KRS,Europe/Oslo,Kristiansand Airport,KSU,NO,POINT (8.08327172379055 58.20414355),57,http://www.avinor.no/en/airport/kristiansand,ENCN,Justvik,Kristiansand,Vest-Agder
+KRT,Africa/Khartoum,Khartoum International Airport,KRT,SD,POINT (32.5496203 15.5915979),1265,,HSSS,Khartoum,,Khartoum
+KSA,Pacific/Kosrae,Kosrae Airport,KSA,FM,POINT (162.95809189251776 5.35674455),11,,PTSA,Tafunsak,Tafunsak Municipality,Kosrae
+KSC,Europe/Bratislava,Barca Airport,KSC,SK,POINT (21.239139749265533 48.661434150000005),755,,LZKZ,Kosice,,Kosicky
+KSE,Africa/Kampala,Kasese Airport,KSE,UG,POINT (30.1011131 0.1902797),3146,,HUKS,Kasese,Kasese District,Western Region
+KSF,Europe/Berlin,Kassel-Calden Airport,KSF,DE,POINT (9.39631469346704 51.419416049999995),820,http://www.flughafenkassel.de/,EDVK,Calden,Regierungsbezirk Kassel,Hesse
+KSN,Asia/Almaty,Kostanay Airport,KSN,KZ,POINT (63.549854554025714 53.2046156),595,,UAUU,Kostanay,,Qostanay
+KSU,Europe/Oslo,Kristiansund Airport Kvernberget,KSU,NO,POINT (7.82937981793134 63.1125744),204,https://avinor.no/en/airport/kristiansund-airport/,ENKB,Rensvik,Kristiansund,More og Romsdal
+KSZ,Europe/Moscow,Kotlas Airport,KSZ,RU,POINT (46.70281599725706 61.237540249999995),184,,ULKK,Kotlas,,Arkhangelskaya
+KTA,Australia/Perth,Karratha Airport,KTA,AU,POINT (116.77288184805626 -20.71125455),29,,YPKA,Nickol,Roebourne,Western Australia
+KTE,Asia/Kuala_Lumpur,Kerteh Airport,KTE,MY,POINT (103.42797614308233 4.534348),18,,WMKE,Kertih,,Terengganu
+KTL,Africa/Nairobi,Kitale Airport,KTL,KE,POINT (34.95890481081758 0.97257645),6070,,HKKT,Kitale,,Trans Nzoia
+JCN,Asia/Seoul,Incheon Heliport,JCN,KR,POINT (126.6 37.466667),16,,,Incheon,,Incheon
+JCO,Europe/Malta,Heliport,JCO,MT,POINT (14.333333 36.016666),42,,,Qala,,Il-Qala
+JCT,America/Chicago,Kimble County,JCT,US,POINT (-99.76556102069245 30.510357550000002),1666,,KJCT,Junction,Kimble County,Texas
+JCU,Africa/Ceuta,Ceuta Heliport,JCU,ES,POINT (-5.338333 35.899166),0,,,Ceuta,Ceuta,Ceuta
+KGZ,America/Anchorage,Glacier Creek,KGZ,US,POINT (-142.38333 61.45),2380,,KGZ,,,
+JCY,America/Chicago,Johnson,JCY,US,POINT (-98.416664 30.283333),1200,,"0TE7",Johnson City,Blanco County,Texas
+JDA,America/Los_Angeles,John Day,JDA,US,POINT (-118.97729130421767 44.403653399999996),3638,,KGCD,John Day,Grant County,Oregon
+KTU,Asia/Kolkata,Kota,KTU,IN,POINT (76.5 25),896,,VIKO,Baran,Baran,Rajasthan
+JDB,America/Chicago,Downtown Heliport,DFW,US,POINT (-97.316666 32.766666),518,,,Fort Worth,Tarrant County,Texas
+KTX,Africa/Bamako,Koutiala,KTX,ML,POINT (-5.383333 12.416667),1240,,GAKO,Koutiala,,Sikasso
+KTY,Asia/Colombo,Katukurunda Slaf Base,KTY,LK,POINT (80.3 6),10,,VCCN,Talpe,,Southern
+JDF,America/Sao_Paulo,Francisco De Assis,JDF,BR,POINT (-43.333332 -21.75),2562,,SBJF,Juiz de Fora,Juiz De Fora,Minas Gerais
+JDG,Asia/Seoul,Jeongseok,JDG,KR,POINT (126.71186447715885 33.3926049),1053,,RKPD,Seogwipo,,Jeju-do
+JDH,Asia/Kolkata,Jodhpur Airport,JDH,IN,POINT (73.05054509038675 26.263920249999998),751,,VIJO,Jodhpur,Jodhpur,Rajasthan
+JDM,America/New_York,Miami Downtown Heliport,MIA,US,POINT (-80.25 25.75),65,,,Coral Gables,Miami-Dade County,Florida
+KUI,Pacific/Auckland,Kawau Island,KUI,NZ,POINT (174.83333 -36.416668),0,,,Warkworth,Auckland,Auckland
+KUJ,Asia/Tokyo,Kushimoto,KUJ,JP,POINT (135.78334 33.433334),0,,,Shingu,,Wakayama
+JDN,America/Denver,Jordan,JDN,US,POINT (-106.88333 47.316666),2624,,KJDN,Jordan,Garfield County,Montana
+KUN,Europe/Vilnius,Kaunas Airport,KUN,LT,POINT (23.916668 54.9),256,http://www.kaunasair.lt/index.php?lang=2&m=2&p=210,EYKA,Kaunas,Kaunas,Kauno apskritis
+JDO,America/Fortaleza,Orlando Bezerra de Menezes Airport,JDO,BR,POINT (-39.316666 -7.2),1243,,SBJU,Juazeiro do Norte,Juazeiro Do Norte,Ceara
+KUR,Asia/Kabul,Kuran-O-Munjan,KUR,AF,POINT (71.11667 38.4),0,,,Maymay,,Badakhshan
+JDP,Europe/Paris,Heliport De Paris,PAR,FR,POINT (2.283333 48.816666),255,,,Issy-les-Moulineaux,Departement des Hauts-de-Seine,Ile-de-France
+KUT,Asia/Tbilisi,Kutaisi International Airport,KUT,GE,POINT (42.7 42.25),223,,UGKO,Kutaisi,,Imereti
+KUU,Asia/Kolkata,Bhuntar Airport,KUU,IN,POINT (77.1 31.983334),3573,,VIBR,Kulu,Kulu,Himachal Pradesh
+KUV,Asia/Seoul,Gunsan Airport,KUV,KR,POINT (126.75 35.983334),29,,RKJK,Kunsan,,Jeollabuk-do
+JDR,America/Sao_Paulo,Sao Joao Del Rei,JDR,BR,POINT (-44.224610172835526 -21.0852396),3057,,SNJR,Tiradentes,Tiradentes,Minas Gerais
+JDT,America/Chicago,Downtown Heliport,MSP,US,POINT (-93.26667 44.983334),902,,,Minneapolis,Hennepin County,Minnesota
+KVD,Asia/Baku,Gyandzha Airport,KVD,AZ,POINT (46.316666 40.733334),1083,,UBBG,Qarayeri,,Samux
+KVK,Europe/Moscow,Kirovsk Airport,KVK,RU,POINT (33.583332 67.583336),515,http://www.airkirovsk.ru/,ULMK,Kirovsk,,Murmansk
+JDY,America/Los_Angeles,Heliport,JDY,US,POINT (-118.11667 33.933334),118,,,Downey,Los Angeles County,California
+JDZ,Asia/Shanghai,Jingdezhen Airport,JDZ,CN,POINT (117.17988248363616 29.3432402),147,,ZSJD,Hongyuan,,Jiangxi Sheng
+JED,Asia/Riyadh,King Abdulaziz International Airport,JED,SA,POINT (39.16367476310531 21.6836591),26,http://www.jed-airport.com/,OEJN,Jeddah,,Makkah
+KWA,Pacific/Kwajalein,Kwajalein Airport,KWA,MH,POINT (167.72195 8.720843),9,,PKWA,Ebaye,,Kwajalein Atoll
+KTP,America/Jamaica,Tinson,KIN,JM,POINT (-76.8251459214969 17.98903215),16,,MKTP,Kingston,,Kingston
+KWD,Africa/Bangui,Kawadjia,KWD,CF,POINT (124.97 -1.95),0,,,Dofa,,Maluku Utara
+KTQ,Europe/Helsinki,Kitee,KTQ,FI,POINT (30.07532758837193 62.1666101),364,,EFIT,Kitee,Keski-Karjala,North Karelia
+KTT,Europe/Helsinki,Kittila Airport,KTT,FI,POINT (24.8518905 67.6954569),644,http://www.finavia.fi/en/kittila/,EFKT,Kittilae,Tunturi-Lappi,Lapland
+KTW,Europe/Warsaw,Katowice International Airport,KTW,PL,POINT (19.074529251172088 50.469128600000005),995,http://katowice.airport.com,EPKT,Ozarowice,Powiat tarnogorski,Silesian Voivodeship
+KUA,Asia/Kuala_Lumpur,Sultan Haji Ahmad Shah Airport,KUA,MY,POINT (103.20939361083198 3.7748226999999996),58,,WMKD,Kuantan,,Pahang
+KUD,Asia/Kuching,Kudat Airport,KUD,MY,POINT (116.8371483211516 6.9237294),10,,WBKT,Kudat,,Sabah
+KUF,Europe/Samara,Kurumoch International Airport,KUF,RU,POINT (50.15699388903002 53.50575105),477,http://airport.samara.ru/en/,UWWW,Bereza,,Samara
+KUH,Asia/Tokyo,Kushiro Airport,KUH,JP,POINT (144.19370437389728 43.04308625),327,,RJCK,Kushiro,,Hokkaido
+KUL,Asia/Kuala_Lumpur,Kuala Lumpur International Airport,KUL,MY,POINT (101.7066224803332 2.74476355),69,http://www.klia.com.my,WMKK,Kampung Baharu Nilai,,Negeri Sembilan
+KUO,Europe/Helsinki,Kuopio Airport,KUO,FI,POINT (27.798881769455257 63.00506195),323,https://www.finavia.fi/en/kuopio/,EFKU,Siilinjaervi,Kuopio,Northern Savo
+KUS,America/Godthab,Kulusuk Airport,KUS,GL,POINT (-37.124473406699465 65.57415205000001),117,,BGKK,Tasiilaq,,Sermersooq
+KVA,Europe/Athens,Kavala International Airport,KVA,GR,POINT (24.61461321003228 40.914999300000005),18,,LGKV,Nea Karya,Nomos Kavalas,East Macedonia and Thrace
+KVB,Europe/Stockholm,Skovde,KVB,SE,POINT (13.9727778 58.4561111),324,,ESGR,Stopen,Skovde Kommun,Vaestra Goetaland
+KVO,Europe/Belgrade,Morava Airport,KVO,RS,POINT (20.58749071863892 43.818194),686,,LYKV,Kraljevo,Raski Okrug,Central Serbia
+KVR,Asia/Vladivostok,Kavalerovo,KVR,RU,POINT (135.03005504251027 44.2715589),730,,UHWK,Kavalerovo,,Primorskiy
+KVX,Europe/Moscow,Kirov Airport,KVX,RU,POINT (49.339953586030674 58.50217025),479,http://www.pobedilovo.com/,USKK,Strizhi,,Kirov
+KWE,Asia/Shanghai,Guiyang Longdongbao International Airport,KWE,CN,POINT (106.79986394417297 26.538273699999998),3736,,ZUGY,Guiyang,,Guizhou Sheng
+JEE,America/Port-au-Prince,Jeremie,JEE,HT,POINT (-74.16970398819535 18.66309045),177,,MTJE,Jeremie,,Grandans
+KWG,Europe/Kiev,Krivoy Rog,KWG,UA,POINT (33.216667 48.05),408,,UKDR,Lozuvatka,,Kirovohrad
+KWH,Asia/Kabul,Khwahan,KWH,AF,POINT (66.333336 33.916668),3593,,OAHN,Quchanghi,,Daykundi
+JEF,America/Chicago,Memorial,JEF,US,POINT (-92.15639 38.59222),544,https://www.jeffcitymo.org/publicworks/airport/airport.html,KJEF,Jefferson City,Cole County,Missouri
+KWJ,Asia/Seoul,Gwangju Airport,KWJ,KR,POINT (126.81177837965002 35.140833400000005),39,http://gwangju.airport.co.kr/doc/gwangju/index.jsp,RKJJ,Gwangju,,Gwangju
+KWL,Asia/Shanghai,Guilin Liangjiang International Airport,KWL,CN,POINT (110.316666 25.133333),570,,ZGKL,Guilin,,Guangxi Zhuangzu Zizhiqu
+KWU,Pacific/Auckland,Mansion House,KWU,NZ,POINT (114.21667 22.316668),0,,,Kowloon,,Kowloon City
+KWZ,Africa/Lubumbashi,Kolwezi,KWZ,CD,POINT (25.507373712208576 -10.7663435),5007,,FZQM,Kolwezi,,Katanga
+KXE,Africa/Johannesburg,Klerksdorp,KXE,ZA,POINT (26.72008605043584 -26.870343849999998),4444,,FAKD,Klerksdorp,Dr Kenneth Kaunda District Municipality,North-West
+KXK,Asia/Vladivostok,Khurba Airport,KXK,RU,POINT (136.93794822104104 50.40795985),92,,UHKK,Khurba,,Khabarovsk Krai
+KYA,Europe/Istanbul,Konya Airport,KYA,TR,POINT (32.57541721017705 37.98569035),3392,http://www.konya.dhmi.gov.tr/havaalanlari/default.aspx?hv=28,LTAN,Asagipinarbasi,,Konya
+KZI,Europe/Athens,Philippos Airport,KZI,GR,POINT (21.841440993464275 40.28699355),2059,,LGKZ,Krokos,Nomos Kozanis,West Macedonia
+KXD,Asia/Yekaterinburg,Kondinskoye Airport,KXD,RU,POINT (67.433333 59.65),0,,,Kondinskoye,,Khanty-Mansiyskiy Avtonomnyy Okrug
+KZN,Europe/Moscow,Kazan International Airport,KZN,RU,POINT (49.28551379228139 55.60740975),411,http://www.kazan.aero/en/,UWKD,Stolbishchi,,Tatarstan
+KZO,Asia/Qyzylorda,Kzyl-Orda Airport,KZO,KZ,POINT (65.58855590395623 44.705641299999996),433,,UAOO,Tasboget,,Qyzylorda
+KWI,Asia/Kuwait,Kuwait International Airport,KWI,KW,POINT (47.955110833063436 29.2202789),206,http://www.kuwait-airport.com.kw/Index_e.htm,OKBK,Janub as Surrah,,Al Farwaniyah
+KZG,Europe/Berlin,Kitzingen,KZG,DE,POINT (10.203628630722946 49.743484949999996),689,https://www.flugplatz-kitzingen.de/,EDGY,Kitzingen,Regierungsbezirk Unterfranken,Bavaria
+JEG,America/Godthab,Aasiaat Airport,JEG,GL,POINT (-52.784103450705786 68.7218676),39,http://airgreenland.com/om_rejsen/efter_rejsen/din_destination_/aasiaat/,BGAA,,,
+JEK,Africa/Lusaka,Jeki Airport,JEK,ZM,POINT (29.6036 -15.6334),1131,,FLJK,Luangwa,,Lusaka
+KYD,Asia/Taipei,Orchid Island,KYD,TW,POINT (121.5 22.083332),44,,RCLY,Hengchun,,Taiwan
+KYE,Asia/Beirut,Kleyate,KYE,LB,POINT (36.002777 34.58611),75,,OLKA,Halba,,Aakkar
+JEM,America/Los_Angeles,Heliport,JEM,US,POINT (-122.3 37.833332),0,,,Emeryville,Alameda County,California
+JEQ,America/Bahia,Jequie,JEQ,BR,POINT (-40.071268208841715 -13.8775218),610,,SNJK,Jequie,Jequie,Bahia
+JFM,Australia/Perth,Heliport,JFM,AU,POINT (115.75 -32.05),26,,,North Fremantle,Fremantle,Western Australia
+KYL,America/New_York,Port Largo,KYL,US,POINT (-80.46667 25.066668),0,,,Key Largo,Monroe County,Florida
+KYN,Europe/London,Milton Keynes,KYN,GB,POINT (-0.774107 52.03428),0,,,Loughton,Milton Keynes,England
+KYO,America/New_York,Topp Of Tampa,TPA,US,POINT (-82.36667 28.216667),68,http://www.tampanorth.com/,X39,Wesley Chapel,Pasco County,Florida
+JFN,America/New_York,Ashtabula,JFN,US,POINT (-80.76667 41.733334),925,http://www.neohioregionalairport.com/,KHZY,Jefferson,Ashtabula County,Ohio
+KYS,Africa/Bamako,Kayes,KYS,ML,POINT (-11.439444 14.431944),164,,GAKY,Kayes,,Kayes
+KYT,Asia/Rangoon,Kyauktaw,KYT,MM,POINT (94.13333 21.4),1250,,VYKU,Chauk,,Magway
+JFR,America/Godthab,Paamiut Airport,JFR,GL,POINT (-49.67085832613154 62.014621250000005),78,,BGPT,,,
+JGE,Asia/Seoul,Heliport,JGE,KR,POINT (128.68333 34.9),137,,,Sinhyeon,,Gyeongsangnam-do
+KYZ,Asia/Krasnoyarsk,Kyzyl Airport,KYZ,RU,POINT (94.46667 51.7),2123,,UNKY,Kyzyl,,Tyva
+JGL,America/New_York,Galleria Heliport,ATL,US,POINT (-84.46694 33.886112),961,,,Vinings,Cobb County,Georgia
+KZC,Asia/Phnom_Penh,Kompong-Chhna,KZC,KH,POINT (104.583336 12.333333),56,,VDKH,Kampong Chhnang,,Kampong Chhnang
+KZD,Asia/Phnom_Penh,Krakor,KZD,KH,POINT (104.2 12.533333),62,,VDSY,Pursat,,Pursat
+JGN,Asia/Shanghai,Jiayuguan Airport,JGN,CN,POINT (98.416664 39.833332),4960,,ZLJQ,Jiayuguan,,Gansu Sheng
+JGO,America/Godthab,Qeqertarsuaq,JGO,GL,POINT (-53.566666 69.25),0,,,,,
+JGP,America/Chicago,Greenway Plaza Heliport,HOU,US,POINT (-95.25 29.666668),49,,,South Houston,Harris County,Texas
+JGQ,America/Chicago,Transco Twr Galleria,HOU,US,POINT (-95.46667 29.766666),104,,,Hunters Creek Village,Harris County,Texas
+JGR,America/Godthab,Heliport,JGR,GL,POINT (-48.1 61.233334),26,,,,,
+JGS,Asia/Shanghai,Ji'An/Jing Gang Shan Airport,JGS,CN,POINT (114.7375 26.899721),219,,ZSJA,Denglong,,Jiangxi Sheng
+JGX,America/Los_Angeles,Heliport,JGX,US,POINT (-118.28333 34.166668),492,,,North Glendale,Los Angeles County,California
+JHB,Asia/Kuala_Lumpur,Senai Airport,JHB,MY,POINT (103.6482705 1.605881),59,,WMKJ,Taman Senai,,Johor
+JHC,America/New_York,Island Heliport,JHC,US,POINT (-74.1 40.783333),36,,,North Arlington,Bergen County,New Jersey
+JHE,Europe/Stockholm,Heliport,AGH,SE,POINT (12.7 56.033333),19,,,,,
+JHG,Asia/Shanghai,Xishuangbanna Gasa Airport,JHG,CN,POINT (100.76425763644288 21.9746108),1797,,ZPJH,Jinghong,,Yunnan
+JHL,America/Edmonton,Albian,HZP,CA,POINT (-111.4254582 57.2329368),964,,CAL4,,,
+JHM,Pacific/Honolulu,Kapalua Airport,JHM,US,POINT (-156.6715646726954 20.965572799999997),223,,PHJH,Napili-Honokowai,Maui County,Hawaii
+JHS,America/Godthab,Sisimiut Airport,JHS,GL,POINT (-53.72691239490176 66.9508865),9,https://www.mit.gl/en/todays-flights/airports/sisimiut-airport/,BGSS,,,
+JIC,Asia/Shanghai,Jinchuan Airport,JIC,CN,POINT (102.3486172295005 38.54139000000001),4776,,ZLJC,Jinchang,Jinchang Shi,Gansu Sheng
+KZS,Europe/Athens,Kastellorizo Airport,KZS,GR,POINT (29.333332 36.083332),489,,LGKJ,Kalkan,,Antalya
+LAA,America/Denver,Lamar Field,LAA,US,POINT (-102.69028 38.06861),3706,http://www.ci.lamar.co.us/index.asp?Type=B_BASIC&SEC={C91FC3CC-5A83-4F9C-9AF7-A96F374C2EE5}&DE=,KLAA,Lamar,Prowers County,Colorado
+LAD,Africa/Luanda,Quatro de Fevereiro Airport,LAD,AO,POINT (13.234862 -8.847951),243,,FNLU,Luanda,,Luanda
+LAH,Asia/Jayapura,Labuha,LAH,ID,POINT (127.50552915228928 -0.63359055),49,,WAEL,Labuha,,Maluku Utara
+LAG,America/Caracas,La Guaira,LAG,VE,POINT (-66.933334 10.6),0,,,La Guaira,Municipio Vargas,Vargas
+JID,America/Los_Angeles,City Of Industry Heliport,LAX,US,POINT (-118 34),889,,,Hacienda Heights,Los Angeles County,California
+LAI,Europe/Paris,Servel Airport,LAI,FR,POINT (-3.481944 48.754166),290,http://www.lannion.aeroport.fr,LFRO,Lannion,Departement des Cotes-d'Armor,Brittany
+LAJ,America/Sao_Paulo,Correia Pinto Airport,LAJ,BR,POINT (-50.316666 -27.8),3065,,SBLJ,Lages,Lages,Santa Catarina
+LAL,America/New_York,Municipal,LAL,US,POINT (-82.014725 27.98889),142,,KLAL,Winston,Polk County,Florida
+JIJ,Africa/Addis_Ababa,Jigiga Airport,JIJ,ET,POINT (42.766666 9.366667),5570,,HAJJ,Jijiga,,Somali
+LAM,America/Denver,Los Alamos,LAM,US,POINT (-106.2700004432636 35.87994155),7171,,KLAM,Los Alamos,Los Alamos County,New Mexico
+LBI,Europe/Paris,Le Sequestre,LBI,FR,POINT (2.1187767745482504 43.91423365),564,,LFCI,Albi,Departement du Tarn,Midi-Pyrenees
+LAP,America/Mazatlan,Leon Airport,LAP,MX,POINT (-110.367836 24.076088),69,http://aeropuertosgap.com.mx/aeropuertos/lapaz?lang=eng,MMLP,El Centenario,La Paz,Baja California Sur
+LAQ,Africa/Tripoli,La Braq Airport,LAQ,LY,POINT (21.964167 32.788612),2157,,HLLQ,Al Bayda',,Al Jabal al Akhdar
+LAR,America/Denver,General Brees Field,LAR,US,POINT (-105.67306 41.31361),7284,,KLAR,Laramie,Albany County,Wyoming
+LAT,America/Bogota,La Uribe,LAT,CO,POINT (-74.05 4.75),0,,,Cota,,Cundinamarca
+LAU,Africa/Nairobi,Lamu,LAU,KE,POINT (40.911667 -2.25),20,http://www.kenyaairports.co.ke/kaa/airports/airstrips/manda_intro.html,HKLU,Lamu,,Lamu
+LAV,Pacific/Apia,Lalomalava,LAV,WS,POINT (-171.73334 -14.016667),0,,,Matavai,,
+LBJ,Asia/Makassar,Komodo Airport,LBJ,ID,POINT (119.88841166087786 -8.4825947),66,,WATO,Labuhanbajo,,East Nusa Tenggara
+JIK,Europe/Athens,Ikaria Airport,JIK,GR,POINT (26.346215400974874 37.6829412),65,,LGIK,Agios Kirykos,Nomos Samou,North Aegean
+JIM,Africa/Addis_Ababa,Jimma Airport,JIM,ET,POINT (36.82030042171516 7.6614832),5583,,HAJM,Jima,,Oromiya
+JIN,Africa/Kampala,Jinja,JIN,UG,POINT (33.192223 0.456389),3802,,HUJI,Jinja,Jinja District,Eastern Region
+LBA,Europe/London,Leeds Bradford International Airport,LBA,GB,POINT (-1.659985 53.86934),681,http://www.lbia.co.uk/,EGNM,Yeadon,City and Borough of Leeds,England
+JIO,America/Los_Angeles,International Heliport,ONT,US,POINT (-117.65 34.066666),994,,"",Ontario,San Bernardino County,California
+JIP,America/Guayaquil,Jipijapa,JIP,EC,POINT (-80.666664 -1),239,,SEJI,Montecristi,,Manabi
+LAF,America/Indiana/Indianapolis,Purdue University,LAF,US,POINT (-86.9392955985291 40.4122378),606,,KLAF,West Lafayette,Tippecanoe County,Indiana
+LAN,America/Detroit,Capital Region International Airport,LAN,US,POINT (-84.58586005736913 42.778071249999996),861,,KLAN,Edgemont Park,Ingham County,Michigan
+LAO,Asia/Manila,Laoag Airport,LAO,PH,POINT (120.53176511814134 18.176479450000002),25,,RPLI,San Nicolas,Province of Ilocos Norte,Ilocos
+LBH,Australia/Sydney,Palm Beach SPB,SYD,AU,POINT (151.17583 -33.944168),0,,"",Botany,Botany Bay,New South Wales
+JIQ,Asia/Shanghai,Qianjiang Wulingshan Airport,JIQ,CN,POINT (108.83089524946274 29.5152164),2073,,ZUQJ,Zhoubai,,Chongqing Shi
+JIW,Asia/Karachi,Jiwani,JIW,PK,POINT (61.80274157648067 25.0670778),164,,OPJI,Jiwani,,Balochistan
+LBK,Africa/Nairobi,Liboi,LBK,KE,POINT (40.966667 0.383333),280,,"",Garissa,,Garissa
+LBL,America/Chicago,Liberal Municipal Airport,LBL,US,POINT (-100.960556 37.044445),2885,,KLBL,Liberal,Seward County,Kansas
+LBN,Africa/Nairobi,Lake Baringo,LBN,KE,POINT (36.083332 0.666667),3226,,"",Baringo,,Baringo
+LBO,Africa/Lubumbashi,Lusambo,LBO,CD,POINT (23.45 -4.966667),1407,,FZVI,Lusambo,,Kasai-Oriental
+LBP,Asia/Kuching,Long Banga Airfield,LBP,MY,POINT (115.4 3.2),750,,"",Long Layu,,North Kalimantan
+LAW,America/Chicago,Lawton-Fort Sill Regional Airport,LAW,US,POINT (-98.41812229900623 34.569849500000004),1110,,KLAW,Lawton,Comanche County,Oklahoma
+LBR,America/Manaus,Labrea,LBR,BR,POINT (-64.85 -7.25),190,,SWLB,Canutama,Canutama,Amazonas
+LBT,America/New_York,Lumberton,LBT,US,POINT (-79.06011 34.61404),126,http://www.lumbertonmunicipalairport.com/default.htm,KLBT,Lumberton,Robeson County,North Carolina
+LAX,America/Los_Angeles,Los Angeles International Airport,LAX,US,POINT (-118.42139298414197 33.94216754999999),125,https://www.flylax.com/,KLAX,El Segundo,Los Angeles County,California
+LAY,Africa/Johannesburg,Ladysmith,LAY,ZA,POINT (29.751201906708054 -28.580999300000002),3548,,FALY,Ladysmith,uThukela District Municipality,KwaZulu-Natal
+LAZ,America/Bahia,Bom Jesus Da Lapa,LAZ,BR,POINT (-43.409181138408584 -13.26170655),1454,,SBLP,Bom Jesus da Lapa,Bom Jesus Da Lapa,Bahia
+LBC,Europe/Berlin,Lubeck Blankensee,HAM,DE,POINT (10.712610058244511 53.804942999999994),53,,EDHL,Gross Gronau,,Schleswig-Holstein
+LBD,Asia/Dushanbe,Khujand Airport,LBD,TJ,POINT (69.70003078769972 40.218460300000004),1450,,UTDL,Chkalov,,Viloyati Sughd
+JJA,Pacific/Guadalcanal,Jajao,JJA,SB,POINT (159.26666 -8.21666),580,,,,,
+JJD,Brazil/East,Jericoacoara,JJD,BR,POINT (-40.357153993491025 -2.9061462999999996),29,,SBJE,Cruz,Cruz,Ceara
+JJG,America/Sao_Paulo,Jaguaruna Regional Airport,JJG,BR,POINT (-49.05437795338313 -28.66726125),82,http://www.jaguaruna.sc.gov.br/turismo/item/detalhe/6369,SBJA,Jaguaruna,Jaguaruna,Santa Catarina
+JJI,America/Lima,Juanjui,JJI,PE,POINT (-76.72659659021983 -7.1661),849,,SPJI,Juanjui,Provincia de Mariscal Caceres,San Martin
+JJM,Africa/Nairobi,Mulika Lodge Airport,JJM,KE,POINT (38.183334 0.233194),2158,,HKMK,Maua,,Isiolo
+LBW,Asia/Makassar,Long Bawan,LBW,ID,POINT (115.166664 0.583333),3165,,WALB,Sungaiboh,,North Kalimantan
+LBX,Asia/Manila,Lubang,LBX,PH,POINT (120.10584364695308 13.85592045),43,,RPLU,Lubang,Province of Mindoro Occidental,Mimaropa
+LBY,Europe/Paris,Montoir,LBY,FR,POINT (-2.345833 47.28889),105,,LFRE,La Baule-Escoublac,Departement de la Loire-Atlantique,Pays de la Loire
+LBZ,Africa/Luanda,Lukapa,LBZ,AO,POINT (20.666668 -8.383333),3029,,FNLK,Lucapa,,Lunda Norte
+LCA,Asia/Nicosia,Larnaca International Airport,LCA,CY,POINT (33.618511556449484 34.87033995),8,http://www.cyprusairports.com.cy/showpage.php?PageID=2,LCLK,Meneou,,Larnaka
+LCC,Europe/Rome,Galatina,LCC,IT,POINT (18.1375237109655 40.24047975),156,,LIBN,Collemeto,Provincia di Lecce,Apulia
+LCD,Africa/Johannesburg,Louis Trichardt,LCD,ZA,POINT (29.716667 -23.016666),3025,,FALO,Louis Trichardt,Vhembe District Municipality,Limpopo
+LCE,America/Tegucigalpa,Goloson International Airport,LCE,HN,POINT (-86.85722 15.740556),39,,MHLC,El Porvenir,,Atlantida
+LCF,America/Guatemala,Las Vegas,LCF,GT,POINT (-88.94778 15.667778),28,,MGRD,Morales,,Izabal
+LCG,Europe/Madrid,A Coruna Airport,LCG,ES,POINT (-8.379608542189715 43.300259499999996),326,http://www.aena.es/csee/Satellite?cid=1048146841342&pagename=subHome&SiteName=LCG&c=Page&Language=EN_GB,LECO,Culleredo,Provincia da Coruna,Galicia
+LCN,Australia/Adelaide,Balcanoona,LCN,AU,POINT (139.3370056 -30.5349998),144,,YBLC,Quorn,Flinders Ranges,South Australia
+LCI,America/New_York,Municipal,LCI,US,POINT (-71.42111 43.57139),545,http://www.laconiaairport.com/,KLCI,Gilford,Belknap County,New Hampshire
+LCJ,Europe/Warsaw,Lodz Lublinek Airport,LCJ,PL,POINT (19.398333 51.721943),604,,EPLL,Ksawerow,Powiat pabianicki,Lodz Voivodeship
+LCP,America/Argentina/Salta,Loncopue,LCP,AR,POINT (-70.64557894377303 -38.08149105),3627,,"",Loncopue,Departamento de Loncopue,Neuquen
+LCL,America/Havana,La Coloma,LCL,CU,POINT (-83.61667 22.283333),131,,MULM,San Luis,,Pinar del Rio
+LCM,America/Argentina/Cordoba,La Cumbre,LCM,AR,POINT (-64.5 -30.966667),3733,,SACC,La Cumbre,,Cordoba
+JJU,America/Godthab,Heliport,JJU,GL,POINT (-46.033333 60.716667),0,,,Qaqortoq,,Kujalleq
+JKV,America/Chicago,Cherokee County,JKV,US,POINT (-95.333336 31.966667),620,,KJSO,Jacksonville,Cherokee County,Texas
+LCQ,America/New_York,Lake City,LCQ,US,POINT (-82.66861 30.320557),201,http://www.lcfla.com/index.php/departments/gateway-airport-klcq,KLCQ,Five Points,Columbia County,Florida
+LCV,Europe/Rome,Lucca,LCV,IT,POINT (10.583333 43.833332),39,,LIQL,Capannori,Provincia di Lucca,Tuscany
+LDA,Asia/Kolkata,Malda,LDA,IN,POINT (88.1238441608836 25.0111083),79,,VEMH,Ingraj Bazar,Maldah,West Bengal
+LDK,Europe/Stockholm,Hovby,LDK,SE,POINT (13.1744003 58.4654999),200,http://www.lidkopingairport.com/,ESGL,Lidkoping,Lidkopings Kommun,Vaestra Goetaland
+JLB,America/Los_Angeles,Long Beach Heliport,LGB,US,POINT (-118.190323 33.749293),16,,,Long Beach,,California
+LDB,America/Sao_Paulo,Londrina Airport,LDB,BR,POINT (-51.137714 -23.328457),1867,,SBLO,Londrina,Londrina,Parana
+LDC,Australia/Lindeman,Lindeman Island,LDC,AU,POINT (149 -21),0,,YLIN,Walkerston,Mackay,Queensland
+LDE,Europe/Paris,Tarbes Ossun Lourdes Airport,LDE,FR,POINT (0.003368 43.18651),1260,,LFBT,Juillan,Departement des Hautes-Pyrenees,Midi-Pyrenees
+LDN,Asia/Kathmandu,Lamidanda,LDN,NP,POINT (86.671523179221 27.2525998),4100,,VNLD,Bhojpur,Kosi Zone,Eastern Region
+LDX,America/Cayenne,St-Laurent du Maroni,LDX,GF,POINT (-54.03484137257817 5.48215965),16,,SOOM,Albina,,Marowijne
+JLD,Europe/Stockholm,Heliport,JLD,SE,POINT (12.7 56.05),108,,,Helsingborg,Helsingborg,Skane
+JLH,America/Chicago,US Army Heliport,JLH,US,POINT (-87.98333 42.083332),708,,,Arlington Heights,Cook County,Illinois
+JLN,America/Chicago,Joplin Airport,JLN,US,POINT (-94.49778 37.149723),944,,KJLN,Webb City,Jasper County,Missouri
+LDM,America/Detroit,Mason County,LDM,US,POINT (-86.479164 44.075333),646,,KLDM,Ludington,Mason County,Michigan
+JLR,Asia/Kolkata,Jabalpur Airport,JLR,IN,POINT (79.925 22.666668),1781,,VAJB,Ghansor,Seoni,Madhya Pradesh
+LDO,America/Paramaribo,Ladouanie,LDO,SR,POINT (-55.233334 4.216667),236,,SMDO,Brownsweg,,Brokopondo
+LDR,Asia/Aden,Lodar,LDR,YE,POINT (45.86667 13.9),0,,,Lawdar,Lawdar,Abyan
+JLS,America/Sao_Paulo,Jales,JLS,BR,POINT (-50.55 -20.166668),1532,,SDJL,Jales,Jales,Sao Paulo
+LDV,Europe/Paris,Landivisiau,LDV,FR,POINT (-4.1 48.5),348,,LFRJ,Landivisiau,Departement du Finistere,Brittany
+JLX,America/Los_Angeles,Union Station Heliport,LAX,US,POINT (-118.333336 34.166668),554,,,Burbank,Los Angeles County,California
+JMA,America/Chicago,Marriot Astrodome,HOU,US,POINT (-95.34 29.983334),121,,,Aldine,Harris County,Texas
+JMB,Africa/Luanda,Jamba,JMB,AO,POINT (16.0643943 -14.6981594),4914,,"",Caconda,,Huila
+JMC,America/Los_Angeles,Marin County,JMC,US,POINT (-122.50972 37.878613),0,,,Marin City,Marin County,California
+JMD,America/Chicago,Market Centre Heliport,DFW,US,POINT (-97.333336 32.8),561,,,,,
+JMH,America/Chicago,Marriott Heliport,JMH,US,POINT (-88.05265951601996 42.04783305),721,,,Schaumburg,Cook County,Illinois
+JMJ,Asia/Shanghai,Lancang Jingmai Airport,JMJ,CN,POINT (99.78555418663683 22.4162629),4347,,ZPJM,Menglang,,Yunnan
+JMK,Europe/Athens,Mikonos Airport,JMK,GR,POINT (25.347326478108187 37.43499285),357,,LGMK,Mykonos,Nomos Kykladon,South Aegean
+JMM,Europe/Stockholm,Malmo Harbour Heliport,MMA,SE,POINT (13 55.6),39,,,,,
+JMN,America/Chicago,Municipal Heliport,MKT,US,POINT (-94.01667 44.166668),797,,,Mankato,Blue Earth County,Minnesota
+JMO,Asia/Kathmandu,Jomsom,JMO,NP,POINT (83.72299188531906 28.7803407),8982,,VNJS,Jomsom,Dhawalagiri Zone,Western Region
+LEB,America/New_York,Lebanon Regional Airport,LEB,US,POINT (-72.310005 43.62936),603,http://flyleb.com/,KLEB,White River Junction,Windsor County,Vermont
+LEC,America/Bahia,Coronel Horacio de Mattos Airport,LEC,BR,POINT (-41.281113 -12.48),1676,,SBLE,Vera Cruz,Andarai,Bahia
+JMS,America/Chicago,Jamestown Airport,JMS,US,POINT (-98.67833 46.93),1473,,KJMS,Jamestown,Stutsman County,North Dakota
+LEE,America/New_York,Leesburg,LEE,US,POINT (-81.816666 28.833332),76,http://www.leesburgflorida.gov/index.aspx?page=45,KLEE,Silver Lake,Lake County,Florida
+LEH,Europe/Paris,Octeville,LEH,FR,POINT (0.0904336239438063 49.534665),313,,LFOH,Sainte-Adresse,Departement de la Seine-Maritime,Haute-Normandie
+LEI,Europe/Madrid,Almeria Airport,LEI,ES,POINT (-2.3719995931572844 36.84399365),70,http://www.aena.es/csee/Satellite?cid=1048146844127&pagename=subHome&Language=EN_GB&SiteName=LEI&c=Page,LEAM,Retamar,Provincia de Almeria,Andalusia
+LEK,Africa/Conakry,Labe,LEK,GN,POINT (-12.29172796866526 11.3369569),3396,,GULB,Labe,Labe Prefecture,Labe
+JMY,Africa/Freetown,Mammy Yoko Heliport,FNA,SL,POINT (-13.266667 8.483333),360,,,Freetown,,Western Area
+LEN,Europe/Madrid,Leon Airport,LEN,ES,POINT (-5.64629 42.59057),3006,,LELN,San Andres del Rabanedo,Provincia de Leon,Castille and Leon
+LEO,Africa/Libreville,Leconi,LEO,GA,POINT (14.216667 -1.566667),2036,,"",Lekoni,,Haut-Ogooue
+LEP,America/Sao_Paulo,Leopoldina,LEP,BR,POINT (-42.666668 -21.466667),919,,"",Leopoldina,Leopoldina,Minas Gerais
+LEQ,Europe/London,Lands End,LEQ,GB,POINT (-5.733333 50.05),398,http://www.landsendairport.co.uk/,EGHC,Sennen,Cornwall,England
+LET,America/Bogota,Gen. A.V. Cobo Airport,LET,CO,POINT (-69.939445 -4.196389),277,,SKLT,Leticia,,Amazonas
+LEU,Europe/Madrid,Seo de Urgel,LEU,ES,POINT (1.466667 42.416668),2625,http://www10.gencat.net/ptop/AppJava/cat/aerotrans/aerodroms/aerodroms/pirineus.jsp,LESU,Sant Julia de Loria,,Sant Julia de Loria
+LEW,America/New_York,Auburn,LEW,US,POINT (-70.23333 44.1),288,http://www.flytome.com/,KLEW,Auburn,Androscoggin County,Maine
+LEX,America/New_York,Blue Grass Airport,LEX,US,POINT (-84.60492174770525 38.03480425),979,http://www.bluegrassairport.com/,KLEX,Monticello,Fayette County,Kentucky
+LEY,Europe/Amsterdam,Lelystad,LEY,NL,POINT (5.520509513947877 52.4548912),-13,https://www.lelystadairport.nl/,EHLE,Lelystad,Gemeente Lelystad,Flevoland
+LEZ,America/Tegucigalpa,La Esperanza,LEZ,HN,POINT (-88.166664 14.25),5475,,MHLE,La Esperanza,,Intibuca
+LFB,Africa/Maputo,Lumbo,LFB,MZ,POINT (40.671658330315736 -15.035866299999999),33,,FQLU,Ilha de Mocambique,,Nampula
+LFH,Asia/Shanghai,Lanping Feng Hua Airport,LFH,CN,POINT (99.54446199297831 26.64507115),0,,,Jinding,,Yunnan
+LFK,America/Chicago,Lufkin Angelina County,OCH,US,POINT (-94.750275 31.234167),296,http://www.angelinacounty.net/departments/airport,KLFK,Diboll,Angelina County,Texas
+LFM,Asia/Tehran,Lamerd Airport,LFM,IR,POINT (53.18793251072508 27.372541650000002),1337,,OISR,Lamerd,,Fars
+LFN,America/New_York,Franklin,LFN,US,POINT (-78.3 36.1),369,http://www.franklincountync.us/services/airport,KLHZ,Louisburg,Franklin County,North Carolina
+JNA,America/Sao_Paulo,Januaria,JNA,BR,POINT (-44.38438081278936 -15.473317399999999),1571,,SNJN,Januaria,Januaria,Minas Gerais
+LFQ,Asia/Shanghai,Linfen Qiaoli Airport,LFQ,CN,POINT (111.6397991130359 36.139029199999996),1483,,ZBLF,Linfen,,Shanxi Sheng
+LFR,America/Caracas,La Fria Airport,LFR,VE,POINT (-72.272224 8.240556),305,,SVLF,La Fria,Municipio Garcia de Hevia,Tachira
+LED,Europe/Moscow,Pulkovo Airport,LED,RU,POINT (30.267601113109503 59.801698599999995),78,http://www.pulkovoairport.ru/,ULLI,Dachnoye,,St.-Petersburg
+LEM,America/Denver,Lemmon,LEM,US,POINT (-102.10936730796331 45.92038755),2571,http://www.lemmonsd.com/ray-kolb-field-airport.php,KLEM,Lemmon,Perkins County,South Dakota
+LFO,Africa/Addis_Ababa,Kelafo,LFO,ET,POINT (44.3496766 5.6572136),1730,,HAKL,Beledweyne,,Hiiraan
+JNB,Africa/Johannesburg,O.R. Tambo International Airport,JNB,ZA,POINT (28.244977230368022 -26.13601315),5472,https://www.airports.co.za/airports/or-tambo-international-airport/,FAOR,Modderfontein,City of Johannesburg Metropolitan Municipality,Gauteng
+LGC,America/New_York,Calloway,LGC,US,POINT (-85.07083 33.0075),693,http://lagrangeairport.com/,KLGC,La Grange,Troup County,Georgia
+JNG,Asia/Shanghai,Jining Airport,JNG,CN,POINT (116.53333 35.416668),141,,ZSJG,Jining,,Shandong Sheng
+JNH,America/Chicago,North Park Inn Heliport,DFW,US,POINT (-97.35 32.816666),659,,,Blue Mound,Tarrant County,Texas
+JNI,America/Argentina/Buenos_Aires,Junin,JNI,AR,POINT (-60.966667 -34.583332),275,,SAAJ,Junin,Partido de Junin,Buenos Aires
+LGO,Europe/Berlin,Langeoog,LGO,DE,POINT (7.533333 53.766666),7,,EDWL,Langeoog,,Lower Saxony
+LGQ,America/Guayaquil,Lago Agrio Airport,LGQ,EC,POINT (-76.87013302295729 0.0919515),980,,SENL,Nueva Loja,,Sucumbios
+LGR,America/Santiago,Cochrane,LGR,CL,POINT (-72 -47.166668),643,,SCHR,Cochrane,Provincia Capitan Prat,Aisen
+LIN,Europe/Rome,Milano Linate Airport,MIL,IT,POINT (9.277832922158506 45.44420495),353,http://www.sea-aeroportimilano.it/en/,LIML,Novegro-Tregarezzo-San Felice,Citta metropolitana di Milano,Lombardy
+LGT,America/Bogota,Las Gaviotas,LGT,CO,POINT (-74.5 9.166667),0,,SKGA,San Zenon,,Bolivar
+LGU,America/Denver,Cache,LGU,US,POINT (-111.855 41.7875),4457,http://logan-cacheairport.org/,KLGU,Hyde Park,Cache County,Utah
+LIP,America/Sao_Paulo,Lins,LIP,BR,POINT (-49.73213046125255 -21.66259085),1559,,SWXQ,Lins,Lins,Sao Paulo
+LGY,America/Caracas,Lagunillas,LGY,VE,POINT (-71.4 8.516667),2469,,"",Lagunillas,Municipio Sucre,Merida
+LHA,Europe/Berlin,Black Forest,LHA,DE,POINT (7.883333 48.333332),511,http://airport-lahr.de/,EDTL,Lahr,Freiburg Region,Baden-Wuerttemberg
+ALS,America/Denver,Alamosa Municipal Airport,ALS,US,POINT (-105.86667 37.43667),7519,https://www.sanluisvalleyairport.org/,KALS,Alamosa,Alamosa County,Colorado
+LHI,Asia/Jayapura,Lereh,LHI,ID,POINT (139.9 -3.133333),820,,WAJL,Genyem,,Papua
+LHK,Asia/Shanghai,Guanghua,LHK,CN,POINT (111.63333 32.266666),0,,ZHGH,Gucheng Chengguanzhen,,Hubei
+LHN,Asia/Taipei,Lishan,LHN,TW,POINT (121.3 23.433332),0,,,Hualian,Hualien,Taiwan
+LHV,America/New_York,W T Piper Memorial,LHV,US,POINT (-77.45 41.13333),556,http://www.piperairport.com/default.htm,KLHV,Lock Haven,Clinton County,Pennsylvania
+LIA,Asia/Shanghai,Liangping,LIA,CN,POINT (107.7 30.816668),0,,ZULP,Longmen,,Chongqing Shi
+LIC,America/Denver,Municipal,LIC,US,POINT (-103.683334 39.266666),5374,,KLIC,Limon,Lincoln County,Colorado
+LIF,Pacific/Noumea,Lifou Airport,LIF,NC,POINT (167.25 -20.766666),92,,NWWL,We,Lifou,Loyalty Islands
+LIG,Europe/Paris,Bellegarde Airport,LIG,FR,POINT (1.176245 45.86218),1300,,LFBL,Couzeix,Departement de la Haute-Vienne,Limousin
+LIT,America/Chicago,Bill and Hillary Clinton National Airport,LIT,US,POINT (-92.221375 34.727432),262,,KLIT,North Little Rock,Pulaski County,Arkansas
+LGP,Asia/Manila,Legaspi Airport,LGP,PH,POINT (123.73422647609632 13.157237550000001),66,,RPLP,Sagpon,Province of Albay,Bicol
+LGS,America/Argentina/Mendoza,Malargue,LGS,AR,POINT (-69.57298722844945 -35.493180800000005),4685,,SAMM,Malargue,,Mendoza
+LIY,America/New_York,Wright AAF,LIY,US,POINT (-81.6 31.85),45,,KLHW,Hinesville,Liberty County,Georgia
+LGW,Europe/London,London Gatwick Airport,LON,GB,POINT (-0.1823116499127204 51.1541082),202,http://www.gatwickairport.com/,EGKK,Horley,Surrey,England
+LHE,Asia/Karachi,Allama Iqbal International Airport,LHE,PK,POINT (74.40099966094238 31.51939965),712,,OPLA,Lahore,,Punjab
+LHR,Europe/London,London Heathrow Airport,LON,GB,POINT (-0.4587800741571181 51.46773895),83,http://www.heathrowairport.com/,EGLL,West Drayton,Greater London,England
+LIE,Africa/Kinshasa,Libenge,LIE,CD,POINT (18.6389325 3.6236844),1125,,FZFA,Libenge,,Equateur
+LIH,Pacific/Honolulu,Lihue Airport,LIH,US,POINT (-159.33671538390365 21.97206585),153,,PHLI,Hanama'ulu,Kauai County,Hawaii
+LIK,Pacific/Majuro,Likiep Island,LIK,MH,POINT (169.30807220544634 9.82326265),0,,"",Likiep,,Likiep Atoll
+LIL,Europe/Paris,Lille Airport,LIL,FR,POINT (3.105251611858831 50.5681339),157,,LFQQ,Lesquin,Departement du Nord,Nord-Pas-de-Calais
+LIM,America/Lima,Jorge Chavez International Airport,LIM,PE,POINT (-77.11123822674789 -12.02178305),113,http://www.lap.com.pe/,SPJC,Callao,Callao,Callao
+LIO,America/Costa_Rica,Limon International Airport,LIO,CR,POINT (-83.02066457707782 9.95635245),7,,MRLM,Limon,,Limon
+LIR,America/Costa_Rica,Liberia Airport,LIR,CR,POINT (-85.53862961331669 10.595176200000001),270,,MRLB,Liberia,,Guanacaste
+LIS,Europe/Lisbon,Lisbon Portela Airport,LIS,PT,POINT (-9.131900592219496 38.7809542),374,http://www.ana.pt/en-US/Aeroportos/lisboa/Lisboa/Pages/HomeLisboa.aspx,LPPT,Moscavide,Loures,Lisbon
+LIW,Asia/Rangoon,Loikaw Airport,LIW,MM,POINT (97.21571752982794 19.694852150000003),2940,,VYLK,Loikaw,,Kayah
+LIZ,America/New_York,Loring AFB,LIZ,US,POINT (-78.63333 42.033333),746,,ME16,Foster Brook,McKean County,Pennsylvania
+LJA,Africa/Lubumbashi,Lodja,LJA,CD,POINT (23.444445 -3.397222),1647,,FZVA,Lodja,,Kasai-Oriental
+LJC,America/Kentucky/Louisville,Intercontinental,SDF,US,POINT (-85.75 36.266666),0,,,Lafayette,Putnam County,Tennessee
+LKG,Africa/Nairobi,Lokichoggio,LKG,KE,POINT (34.34841238716451 4.203761350000001),2074,http://www.kenyaairports.co.ke/kaa/airports/loki/,HKLK,Kaabong,Kaabong District,Northern Region
+LJN,America/Chicago,Brazoria County,LJN,US,POINT (-95.45695 29.038334),25,http://www.flylbx.org/,KLJN,Lake Jackson,Brazoria County,Texas
+LKP,America/New_York,Lake Placid,LKP,US,POINT (-73.96449549652145 44.2649482),1747,,KLKP,Lake Placid,Essex County,New York
+LKA,Asia/Makassar,Gewayenta Airport,LKA,ID,POINT (122.98333 -8.35),63,,WATL,Balela,,East Nusa Tenggara
+LKC,Africa/Brazzaville,Lekana,LKC,CG,POINT (14.6 -2.316667),2634,,"",Djambala,,Plateaux
+LKE,America/Los_Angeles,Kenmore Air Harbor SPB,SEA,US,POINT (-122.331665 47.6275),14,http://www.kenmoreair.com/flight-information/terminals/seattle-terminals/seattle-lake-union-seaplane-terminal/,W55,Seattle,King County,Washington
+LKR,Africa/Mogadishu,Las Khoreh,LKR,SO,POINT (48.2080558 11.1707986),0,,,Las Khorey,,Sanaag
+LKI,America/Chicago,Lakeside USAF,DLH,US,POINT (-92.1 46.783333),0,,,Duluth,Saint Louis County,Minnesota
+LLK,Asia/Baku,Lankaran International Airport,LLK,AZ,POINT (48.80560137474302 38.759755999999996),30,,UBBL,Lankaran,,Lankaran
+LLS,America/Argentina/Cordoba,Las Lomitas,LLS,AR,POINT (-60.5495104 -24.7261244),426,,SATK,Las Lomitas,,Formosa
+LKS,America/Chicago,Lakeside,LKS,US,POINT (-98.14694 30.500834),0,,,Briarcliff,Travis County,Texas
+LKV,America/Los_Angeles,Lake County,LKV,US,POINT (-120.4 42.166668),4733,http://www.lakecountyor.org/government/airport/index.php,KLKV,Lakeview,Lake County,Oregon
+LKY,Africa/Dar_es_Salaam,Lake Manyara Airport,LKY,TZ,POINT (36.416668 -3.5),4150,,HTLM,Monduli,,Arusha
+LKZ,Europe/London,RAF Lakenheath,LKZ,GB,POINT (0.67609 52.49167),32,http://www.lakenheath.af.mil/,EGUL,Mundford,Norfolk,England
+LLB,Asia/Shanghai,Libo County Libo City Airport,LLB,CN,POINT (107.961914 25.452477),0,,ZULB,Chuanshan,,Guangxi Zhuangzu Zizhiqu
+LJG,Asia/Shanghai,Lijiang Airport,LJG,CN,POINT (100.24519087992596 26.67695645),0,,ZPLJ,Huangshan,,Yunnan
+LLI,Africa/Addis_Ababa,Lalibela Airport,LLI,ET,POINT (39.066666 12.016667),6506,,HALL,Lalibela,,Amhara
+LJU,Europe/Ljubljana,Ljubljana Joze Pucnik Airport,LJU,SI,POINT (14.463847697380164 46.22247455),1273,http://www.lju-airport.si/,LJLJ,Sencur,,Sencur
+LLN,Asia/Jayapura,Kelila,LLN,ID,POINT (138.66667 -3.75),9092,,"",Bikondini,,Papua
+LKH,Asia/Kuching,Long Akah,LKH,MY,POINT (114.78568113463946 3.3110571999999996),289,,WBGL,Long Ampan Aing or Abanang,,Sarawak
+LKL,Europe/Oslo,Banak Airport,LKL,NO,POINT (24.96706388175396 70.06704400000001),25,https://avinor.no/en/airport/lakselv-airport/,ENNA,Lakselv,Porsanger,Finnmark Fylke
+LLV,Asia/Shanghai,Lüliang Airport,LLV,CN,POINT (111.142778 37.683333),0,,ZBLL,Lishi,Lueliang,Shanxi Sheng
+LKN,Europe/Oslo,Leknes Airport,LKN,NO,POINT (13.610591306639233 68.1528581),78,https://avinor.no/en/airport/leknes-airport/,ENLK,Leknes,Vestvagoy,Nordland
+LLX,America/New_York,Lyndonville,LLX,US,POINT (-72.01667 44.5),1188,,KCDA,Lyndon,Caledonia County,Vermont
+LLY,America/New_York,Burlington County,LLY,US,POINT (-74.75 39.916668),53,http://southjerseyairport.com/,KVAY,Leisuretowne,Burlington County,New Jersey
+LKO,Asia/Kolkata,Chaudhary Charan Singh International Airport,LKO,IN,POINT (80.87779945060207 26.7584263),410,http://aai.aero/allAirports/lucknow_generalinfo.jsp,VILK,Lucknow,Lucknow District,Uttar Pradesh
+LKW,Asia/Muscat,Lekhwair,LKW,OM,POINT (55.37312130426234 22.80543685),354,,OOLK,`Ibri,,Az Zahirah
+LLA,Europe/Stockholm,Lulea Airport,LLA,SE,POINT (22.116712311166633 65.54783875000001),65,https://www.swedavia.com/lulea/,ESPA,Bergnaset,Lulea Kommun,Norrbotten
+LLC,Asia/Manila,Cagayan North International Airport,LLC,PH,POINT (121.74805933504305 18.18240175),148,,RPLH,Bagumbayan,Province of Cagayan,Cagayan Valley
+LLF,Asia/Shanghai,Lingling Airport,LLF,CN,POINT (111.6102314546818 26.33901115),340,,ZGLG,Lengshuitan,,Hunan
+LML,Pacific/Majuro,Lae Island,LML,MH,POINT (166.265565 8.9218403),0,,"",Lae,,Lae Atoll
+LMC,America/Bogota,Lamacarena,LMC,CO,POINT (-73.9 3.316667),793,,SKNA,San Juan de Arama,,Meta
+LMD,America/Argentina/Salta,Los Menucos,LMD,AR,POINT (-68.13333 -40.833332),2571,,"",Los Menucos,,Rio Negro
+LND,America/Denver,Hunt Field,LND,US,POINT (-108.7287457 42.8156248),5577,,KLND,Lander,Fremont County,Wyoming
+LME,Europe/Paris,Arnage,LME,FR,POINT (1.25 48),194,,LFRM,Cloyes-sur-le-Loir,Departement d'Eure-et-Loir,Centre
+LMH,America/Tegucigalpa,Limon,LMH,HN,POINT (-85.55 15.866667),0,,,Francia,,Colon
+LMO,Europe/London,Lossiemouth RAF Station,LMO,GB,POINT (-3.333333 57.716667),42,http://www.raf.mod.uk/raflossiemouth/,EGQS,Lossiemouth,Moray,Scotland
+ALW,America/Los_Angeles,Walla Walla Airport,ALW,US,POINT (-118.29114232396819 46.094085699999994),1138,,KALW,Walla Walla East,Walla Walla County,Washington
+LMM,America/Mazatlan,Federal Airport,LMM,MX,POINT (-108.98333 25.816668),16,http://aeropuertosgap.com.mx/english/index-site.html,MMLM,Los Mochis,,Sinaloa
+LMN,Asia/Kuching,Limbang Airport,LMN,MY,POINT (115 4.666667),14,,WBGJ,Limbang,,Sarawak
+LNK,America/Chicago,Lincoln Airport,LNK,US,POINT (-96.75471 40.846176),1154,http://www.lincolnairport.com/,KLNK,Lincoln,Lancaster County,Nebraska
+LNN,America/New_York,Lost Nation,LNN,US,POINT (-81.416664 41.63333),685,,KLNN,Willoughby,Lake County,Ohio
+LNP,America/New_York,Wise,LNP,US,POINT (-82.566666 36.983334),2450,,KLNP,Wise,Wise County,Virginia
+LMS,America/Chicago,Winston County,LMS,US,POINT (-89.05 33.11667),575,,KLMS,Louisville,Winston County,Mississippi
+LNR,America/Chicago,Tri County,LNR,US,POINT (-90.2 43.183334),705,,KLNR,Spring Green,Sauk County,Wisconsin
+LMZ,Africa/Maputo,Palma,LMZ,MZ,POINT (40.483334 -10.766667),177,,"",Madimba,,Mtwara
+LNU,Asia/Makassar,Robert Atty Bessing Airport,LNU,ID,POINT (116.619722 3.575278),29,,WAQM,Mensalong,,North Kalimantan
+LNX,Europe/Moscow,Smolensk,LNX,RU,POINT (32.05 54.8),616,,"",Smolensk,,Smolensk
+LOB,America/Santiago,Los Andes,LOB,CL,POINT (-71.53333 -29.966667),0,,SCAN,Coquimbo,Provincia de Elqui,Coquimbo
+LNJ,Asia/Shanghai,Lincang Airport,LNJ,CN,POINT (100.02475569461826 23.738333500000003),6174,,ZPLC,Mengmeng,,Yunnan
+LNL,Asia/Shanghai,Longnan Chengzhou Airport,LNL,CN,POINT (105.78141552874546 33.788989400000006),3782,,ZLLN,Diancun,,Gansu Sheng
+LNS,America/New_York,Lancaster Airport,LNS,US,POINT (-76.29811136898198 40.118872749999994),367,,KLNS,Lititz,Lancaster County,Pennsylvania
+LNV,Pacific/Port_Moresby,Lihir Island,LNV,PG,POINT (152.63153224026627 -3.04601225),167,,AYKY,Rabaul,,East New Britain
+LNY,Pacific/Honolulu,Lanai Airport,LNY,US,POINT (-156.9529100541685 20.78414325),1286,,PHNY,Lana'i City,Maui County,Hawaii
+LMB,Africa/Blantyre,Salima,LMB,MW,POINT (34.58571563252856 -13.76016915),1688,,FWSM,Salima,Salima District,Central Region
+LMP,Europe/Rome,Lampedusa Airport,LMP,IT,POINT (12.62234782535575 35.4985355),70,,LICD,Lampedusa,Agrigento,Sicily
+LMQ,Africa/Tripoli,Marsa Brega,LMQ,LY,POINT (19.574452774905275 30.3783988),50,,HLMB,Al Burayqah,,Sha`biyat al Wahat
+LMR,Africa/Johannesburg,Lime Acres,LMR,ZA,POINT (23.43873591342355 -28.359279100000002),4900,,FALC,Danielskuil,Siyanda District Municipality,Northern Cape
+LOF,Pacific/Majuro,Loen,LOF,MH,POINT (169.91667 7.916667),23,,"",Jabat,,Jabat Island
+LMT,America/Los_Angeles,Crater Lake Klamath Regional Airport,LMT,US,POINT (-121.7327761549667 42.156436549999995),4095,,KLMT,Altamont,Klamath County,Oregon
+LNZ,Europe/Vienna,Linz Airport,LNZ,AT,POINT (14.187713380617474 48.23637495),967,http://www.flughafen-linz.at/,LOWL,Horsching,Politischer Bezirk Linz-Land,Upper Austria
+LOE,Asia/Bangkok,Loei Airport,LOE,TH,POINT (101.724971 17.4442856),823,,VTUL,Loei,,Loei
+LOG,America/Los_Angeles,Longview,LOG,US,POINT (-122.88333 46.11667),141,,,Kelso,Cowlitz County,Washington
+LOH,America/Guayaquil,Ciudad de Catamayo Airport,LOH,EC,POINT (-79.37361 -3.993611),3943,,SETM,Catamayo,,Loja
+LOI,America/Sao_Paulo,Helmuth Baungartem,LOI,BR,POINT (-49.542778 -27.159721),1062,,SSLN,Ibirama,Ibirama,Santa Catarina
+LOL,America/Los_Angeles,Derby Field,LOL,US,POINT (-118.5583090738808 40.0693592),3894,http://pershingcounty.net/index.php/Derby-Field-Airport/derby-field-airport.html,KLOL,Lovelock,Pershing County,Nevada
+LOM,America/Mexico_City,Francisco P. V. Y R.,LOM,MX,POINT (-101.933334 21.266666),6151,,"",Geovillas Laureles del Campanario,Lagos de Moreno,Jalisco
+LOO,Africa/Algiers,L'Mekrareg Airport,LOO,DZ,POINT (2.983333 33.833332),2490,,DAUL,Laghouat,,Laghouat
+LOP,Asia/Makassar,Lombok International Airport,LOP,ID,POINT (116.2710722149254 -8.759159499999999),357,http://www.lombok-airport.co.id/,WADL,Tanakawu Dua,,West Nusa Tenggara
+LOR,America/Chicago,Lowe Army Heliport,OZR,US,POINT (-85.433334 31.5),354,,,Headland,Henry County,Alabama
+LOS,Africa/Lagos,Murtala Muhammed International Airport,LOS,NG,POINT (3.321178 6.577871),177,http://www.faannigeria.org/nigeria-airport.php?airport=1,DNMM,Oshodi,,Lagos
+LOT,America/Chicago,Lewis Lockport,LOT,US,POINT (-88.05 41.583332),662,http://www.flylot.com/,KLOT,Lockport,Will County,Illinois
+LOU,America/Kentucky/Louisville,Bowman Field Airport,SDF,US,POINT (-85.75 38.266666),429,http://www.flylouisville.com/bowman-field/fast-facts/,KLOU,Louisville,Jefferson County,Kentucky
+LOV,America/Monterrey,Monclova,LOV,MX,POINT (-101.416664 26.9),2053,,MMMV,Monclova,,Coahuila
+LOW,America/New_York,Louisa,LOW,US,POINT (-77.9719418 38.0098619),479,http://www.yeslouisa.com/business-in-louisa/transportation-infrastructure/,KLKU,Louisa,Louisa County,Virginia
+LOX,America/Guatemala,Los Tablones Airport,LOX,GT,POINT (-90.17 14.97),2073,,,Morazan,,El Progreso
+LOY,Africa/Nairobi,Loyangalani,LOY,KE,POINT (36.716667 2.75),1250,,HKLY,Lodwar,,Turkana
+LQN,Asia/Kabul,Qala Nau,LQN,AF,POINT (63.666668 34.95),4809,,OAQN,Qadis,,Badghis
+LRG,Asia/Karachi,Lora Lai,LRG,PK,POINT (65.083336 27.85),2634,,OPLL,Kharan,,Balochistan
+ALX,America/Chicago,Thomas C Russell Field,ALX,US,POINT (-85.96246743466183 32.91343435),367,,KALX,Alexander City,Tallapoosa County,Alabama
+LRH,Europe/Paris,Laleu Airport,LRH,FR,POINT (-1.185833 46.180557),68,,LFBH,Nieul-sur-Mer,Departement de la Charente-Maritime,Poitou-Charentes
+LRI,America/Bogota,Lorica,LRI,CO,POINT (-75.7 9.033333),39,,,Cotorra,,Cordoba
+LRJ,America/Chicago,Municipal,LRJ,US,POINT (-96.166664 42.8),1187,http://www.lemarsiowa.com/citygov/airport.htm,KLRJ,Le Mars,Plymouth County,Iowa
+LRK,America/Sitka,Coast Guard,LRK,US,POINT (-68.32 -16.12),17011,,,Batallas,,La Paz
+LRL,Africa/Lome,Niamtougou,LRL,TG,POINT (1.133333 9.833333),1394,,DXNG,Niamtougou,,Kara
+LRM,America/Santo_Domingo,La Romana Airport,LRM,DO,POINT (-68.9 18.416668),131,,MDLR,La Romana,,La Romana
+LRN,America/Los_Angeles,Larson AFB,MWH,US,POINT (-119.28333 47.13333),1053,,,Moses Lake,Grant County,Washington
+LRO,America/Los_Angeles,Sharpe AAF,LRO,US,POINT (-94.333336 39.55),1066,,,Lathrop,Clinton County,Missouri
+LRR,Asia/Tehran,Lar Airport,LRR,IR,POINT (54.38276 27.66969),2634,,OISL,Lar,,Fars
+LRS,Europe/Athens,Leros Airport,LRS,GR,POINT (26.783333 37.516666),0,,LGLE,Megalo Chorio,,South Aegean
+LTN,Europe/London,London Luton Airport,LON,GB,POINT (-0.3664573292436831 51.87814035),482,http://www.london-luton.co.uk/en/,EGGW,Luton,Luton,England
+LTO,America/Mazatlan,Loreto Airport,LTO,MX,POINT (-111.35 25.983334),29,,MMLT,Loreto,Loreto,Baja California Sur
+LTQ,Europe/Paris,Le Touquet,LTQ,FR,POINT (1.619250526144084 50.5188587),16,,LFAT,Etaples,Departement du Pas-de-Calais,Nord-Pas-de-Calais
+LTR,Europe/Dublin,Letterkenny,LTR,IE,POINT (-7.733333 54.95),82,,EILT,Letterkenny,County Donegal,Ulster
+LTS,America/Chicago,Altus AFB,LTS,US,POINT (-99.33806 34.696667),1430,http://www.altus.af.mil/,KLTS,Altus,Jackson County,Oklahoma
+LTU,Asia/Kolkata,Latur,LTU,IN,POINT (76.46537025646941 18.41270495),2162,,VALT,Latur,Latur,Maharashtra
+LTX,America/Guayaquil,Cotapaxi International Airport,LTX,EC,POINT (-78.6025 -0.901111),9222,,SELT,Latacunga,,Cotopaxi
+LUD,Africa/Windhoek,Luderitz Airport,LUD,NA,POINT (15.24772170425748 -26.682012),380,,FYLZ,Luderitz,,Karas
+LUE,Europe/Bratislava,Lucenec,LUE,SK,POINT (19.666668 48.333332),616,,LZLU,Lucenec,,Banskobystricky
+LUL,America/Chicago,Hesler-Noble Field,LUL,US,POINT (-89.17064951513436 31.67150365),232,,KLUL,Laurel,Jones County,Mississippi
+LUG,Europe/Zurich,Lugano Airport,LUG,CH,POINT (8.966667 46.016666),997,,LSZA,Viganello,Lugano District,Ticino
+LUH,Asia/Kolkata,Ludhiana Sahnewal Airport,LUH,IN,POINT (75.85 30.9),849,,VILD,Ludhiana,Ludhiana,Punjab
+LUI,America/Tegucigalpa,La Union,LUI,HN,POINT (-87.85 13.333333),85,,MHCR,La Union,,La Union
+LUK,America/New_York,Cincinnati Municipal Lunken Airport,CVG,US,POINT (-84.666664 39.033333),816,,KLUK,Oakbrook,Boone County,Kentucky
+LUS,Africa/Kinshasa,Lusanga,LUS,CD,POINT (18.720414135604273 -4.8047487),1437,,FZCE,Kikwit,,Bandundu
+LUX,Europe/Luxembourg,Luxembourg Airport,LUX,LU,POINT (6.209403407206421 49.62637155),1200,http://www.lux-airport.lu/en/,ELLX,Sandweiler,Canton de Luxembourg,Luxembourg
+LUO,Africa/Luanda,Luena,LUO,AO,POINT (20.166668 -11.5),4087,,FNUE,Leua,,Moxico
+LVK,America/Los_Angeles,Livermore,LVK,US,POINT (-121.81872436237782 37.6934357),380,http://www.cityoflivermore.net/citygov/pw/public_works_divisions/airport/default.asp,KLVK,Livermore,Alameda County,California
+LUQ,America/Argentina/San_Luis,San Luis Airport,LUQ,AR,POINT (-66.35861 -33.274445),2280,,SAOU,San Luis,,San Luis
+LVP,Asia/Tehran,Lavan,LVP,IR,POINT (53.35430898029914 26.810223399999998),75,,OIBV,Gavbandi,,Hormozgan
+LTL,Africa/Libreville,Lastourville,LTL,GA,POINT (12.7471516 -0.8260877),1515,,FOOR,Lastoursville,,Ogooue-Lolo
+LWB,America/New_York,Greenbrier Valley Airport,LWB,US,POINT (-80.4000448 37.858788),2312,,KLWB,Lewisburg,Greenbrier County,West Virginia
+LWC,America/Chicago,Lawrence,LWC,US,POINT (-95.2175 39.009167),846,http://www.lawrenceks.org/airport,KLWC,Lawrence,Douglas County,Kansas
+LWE,Asia/Makassar,Lewoleba,LWE,ID,POINT (123.36667 -8.5),1358,,WATW,Boto,,East Nusa Tenggara
+LYE,Europe/London,Lyneham RAF Station,LYE,GB,POINT (-1.966667 51.516666),406,http://www.raf.mod.uk/raflyneham/,EGDL,Lyneham,Wiltshire,England
+LWL,America/Los_Angeles,Harriet Field,LWL,US,POINT (-114.96667 41.11667),5603,http://www.cityofwellsnv.com/airport.shtml,KLWL,Wells,Elko County,Nevada
+LWM,America/New_York,Lawrence,LWM,US,POINT (-71.1225 42.7175),114,http://www.lawrencemunicipalairport.com/,KLWM,North Andover,Essex County,Massachusetts
+LWN,Asia/Yerevan,Leninakan Airport,LWN,AM,POINT (43.833332 40.716667),4881,http://www.aviation.am/eng/gorc/aeroport.htm,UDSG,Azatan,,Shirak
+LWO,Europe/Kiev,Lviv International Airport,LWO,UA,POINT (23.955318 49.816418),1043,http://www.airport.lviv.ua/index.php?id=home&L=1,UKLL,Rudne,,Lviv
+KOY,America/Anchorage,Olga Bay SPB,KOY,US,POINT (-154.2275 57.162224),0,,KOY,,,
+LWR,Europe/Amsterdam,Leeuwarden,LWR,NL,POINT (5.8 53.25),36,http://www.defensie.nl/luchtmacht/luchtmachtbases/leeuwarden/,EHLW,Britsum,Gemeente Leeuwarderadeel,Friesland
+LWS,America/Los_Angeles,Lewiston-Nez Perce County Regional Airport,LWS,US,POINT (-117.01444 46.37472),1443,,KLWS,Lewiston Orchards,Nez Perce County,Idaho
+LWT,America/Denver,Municipal,LWT,US,POINT (-109.47111 47.05111),4127,,KLWT,Lewistown,Fergus County,Montana
+LWV,America/Chicago,Municipal,LWV,US,POINT (-87.683334 38.733334),433,http://www.midamericanaircenter.com/,KLWV,Lawrenceville,Lawrence County,Illinois
+LWY,Asia/Kuching,Lawas Airport,LWY,MY,POINT (115.416664 4.916667),36,,WBGW,Victoria,,Labuan
+LXA,Asia/Shanghai,Lhasa Gonggar Airport,LXA,CN,POINT (90.8967647384088 29.29416095),11748,,ZULS,Konggar,,Tibet Autonomous Region
+MAE,America/Los_Angeles,Madera,MAE,US,POINT (-120.066666 36.95),246,,KMAE,Madera,Madera County,California
+BKT,America/New_York,Blackstone AAF,BKT,US,POINT (-78 37.066666),433,,KBKT,Blackstone,Nottoway County,Virginia
+MAH,Europe/Madrid,Menorca Airport,MAH,ES,POINT (4.220607231805899 39.86298645),291,,LEMH,Sant Lluis,Illes Balears,Balearic Islands
+MAI,Africa/Blantyre,Mangochi,MAI,MW,POINT (35.25 -14.5),1571,,FWMG,Mangochi,Mangochi District,Southern Region
+MAJ,Pacific/Majuro,Amata Kabua International Airport,MAJ,MH,POINT (171.27149916297407 7.0649864),32,,PKMJ,Majuro,,Majuro Atoll
+MAK,Africa/Juba,Malakal,MAK,SS,POINT (31.644444 9.555556),1259,,HSSM,Malakal,,Upper Nile
+MAM,America/Matamoros,Matamoros Airport,MAM,MX,POINT (-97.52118771072375 25.76121775),55,,MMMA,Heroica Matamoros,Matamoros,Tamaulipas
+MAN,Europe/London,Manchester Airport,MAN,GB,POINT (-2.273354 53.362907),249,http://www.manchesterairport.co.uk/,EGCC,Ringway,Manchester,England
+MAQ,Asia/Bangkok,Mae Sot Airport,MAQ,TH,POINT (98.583336 16.666668),721,,VTPM,Mae Sot,,Tak
+MAR,America/Caracas,La Chinita Airport,MAR,VE,POINT (-71.7254962784662 10.557807100000002),187,,SVMC,San Francisco,Municipio San Francisco,Zulia
+MAS,Pacific/Port_Moresby,Momote Airport,MAS,PG,POINT (147.42442232289721 -2.0629359000000003),68,,AYMO,Lorengau,,Manus
+MAT,Africa/Kinshasa,Matadi,MAT,CD,POINT (13.441667 -5.798333),1118,,FZAM,Matadi,,Bas-Congo
+MAU,Pacific/Tahiti,Maupiti,MAU,PF,POINT (-152.241621 -16.4268907),19,,NTTP,Vaitape,,Iles Sous-le-Vent
+MAV,Pacific/Majuro,Maloelap Island,MAV,MH,POINT (171.1 8.75),0,,"",Taroa,,Maloelap Atoll
+MAD,Europe/Madrid,Adolfo Suarez Madrid-Barajas Airport,MAD,ES,POINT (-3.5740806206811313 40.4948384),1955,http://www.aena.es/en/passengers/passengers.html,LEMD,Barajas de Madrid,Provincia de Madrid,Madrid
+MBE,Asia/Tokyo,Monbetsu Airport,MBE,JP,POINT (143.40591414398716 44.30254515),29,,RJEB,Mombetsu,,Hokkaido
+MAZ,America/Puerto_Rico,Eugenio M. De Hostos Airport,MAZ,PR,POINT (-67.14889 18.257778),42,,TJMZ,Anasco,,Anasco
+MBG,America/Chicago,Mobridge,MBG,US,POINT (-100.4039521679061 45.546469200000004),1689,,KMBG,Mobridge,Walworth County,South Dakota
+MBM,Africa/Johannesburg,Mkambati,MBM,ZA,POINT (29.9882501 -31.2851115),282,,"",Bizana,Alfred Nzo District Municipality,Eastern Cape
+MBC,Africa/Libreville,Mbigou,MBC,GA,POINT (12 -2),2224,,FOGG,Mbigou,,Ngounie
+MBD,Africa/Johannesburg,Mmabatho International Airport,MBD,ZA,POINT (25.5 -25.816668),4143,,FAMM,Mmabatho,Ngaka Modiri Molema District Municipality,North-West
+MBZ,America/Manaus,Maues,MBZ,BR,POINT (-57.724955102848156 -3.3699246499999997),59,,SWMW,Maues,Maues,Amazonas
+MBK,America/Cuiaba,Matupa,MBK,BR,POINT (-54.932777 -10.0575),994,,SWXM,Alta Floresta,Alta Floresta,Mato Grosso
+KAQ,Pacific/Port_Moresby,Kamulai,KAQ,PG,POINT (146.83403170693762 -8.1497659),5800,,AYKH,,,
+AMN,America/Detroit,Gratiot Community,AMN,US,POINT (-84.65 43.38333),751,http://www.ci.alma.mi.us/1/307/airport.asp,KAMN,Alma,Gratiot County,Michigan
+AMW,America/Chicago,Ames,AMW,US,POINT (-93.62215445364684 41.9903107),908,,KAMW,Ames,Story County,Iowa
+ANB,America/Chicago,Anniston Metropolitan,ANB,US,POINT (-85.855835 33.59028),626,,KANB,Oxford,Calhoun County,Alabama
+AND,America/New_York,Anderson,AND,US,POINT (-82.71 34.49361),728,,KAND,Centerville,Anderson County,South Carolina
+ANP,America/New_York,Lee,ANP,US,POINT (-76.5 38.983334),29,,KANP,Annapolis,Anne Arundel County,Maryland
+ANQ,America/Indiana/Indianapolis,Tri-State Steuben County,ANQ,US,POINT (-85 41.63333),1053,,KANQ,Angola,Steuben County,Indiana
+ANW,America/Chicago,Ainsworth,ANW,US,POINT (-99.86667 42.55),2513,,KANW,Ainsworth,Brown County,Nebraska
+ANY,America/Chicago,Anthony,ANY,US,POINT (-98.03333 37.15),1335,,KANY,Anthony,Harper County,Kansas
+AOH,America/New_York,Allen County,AOH,US,POINT (-84.1 40.766666),879,,KAOH,Lima,Allen County,Ohio
+APA,America/Denver,Centennial Airport,DEN,US,POINT (-104.98333 39.733334),5285,,KAPA,,,
+ATL,America/New_York,Hartsfield-Jackson Atlanta International Airport,ATL,US,POINT (-84.42927118585675 33.63779875),1049,http://www.atlanta-airport.com/,KATL,,,
+WBU,America/Denver,Boulder Municipal,WBU,US,POINT (-105.23111831575551 40.0374058),5301,http://www.bouldercolorado.gov/index.php?option=com_content&view=article&id=201&Itemid=740,KBDU,,,
+AVX,America/Los_Angeles,Avalon Bay,AVX,US,POINT (-118.31528 33.341667),0,http://www.catalinaconservancy.org/index.php?s=visit&p=pilot_information,KAVX,,,
+AXS,America/Chicago,Municipal,LTS,US,POINT (-99.33806 34.696667),1430,,KAXS,,,
+BCE,America/Denver,Bryce,BCE,US,POINT (-112.15013994170272 37.707521650000004),7582,http://www.brycecanyonairport.com/,KBCE,,,
+BDE,America/Chicago,Baudette,BDE,US,POINT (-94.6044845 48.7232658),1056,,KBDE,,,
+BDR,America/New_York,Igor I. Sikorsky Memorial,BDR,US,POINT (-73.12617523031957 41.16271485),22,,KBDR,,,
+BEC,America/Chicago,Beech,ICT,US,POINT (-97.333336 37.683334),1295,,KBEC,,,
+BFM,America/Chicago,Mobile Downtown Airport,MOB,US,POINT (-88.23333 30.683332),200,,KBFM,,,
+KBE,America/Sitka,Hot Springs SPB,KBE,US,POINT (-131.57 55.929443),0,,KBE,,,
+BFP,America/New_York,Beaver Falls,BFP,US,POINT (-80.4 40.766666),1187,,KBVI,West Mayfield,Beaver County,Pennsylvania
+BML,America/New_York,Berlin Municipal Airport,BML,US,POINT (-71.17547494910397 44.57479855),1089,,KBML,,,
+BQK,America/New_York,Glynco Jetport,SSI,US,POINT (-81.48333 31.166668),36,,KBQK,,,
+BTY,America/Los_Angeles,Beatty,BTY,US,POINT (-116.76667 36.9),3366,,KBTY,,,
+BYH,America/Chicago,Blytheville AFB,BYH,US,POINT (-89.916664 35.933334),239,,KBYH,,,
+CAE,America/New_York,Columbia Metropolitan Airport,CAE,US,POINT (-81.1139715103596 33.93886305),183,,KCAE,,,
+CBM,America/Chicago,Columbus AFB,UBS,US,POINT (-88.416664 33.5),177,,KCBM,,,
+CEA,America/Chicago,Cessna Aircraft Field,ICT,US,POINT (-97.333336 37.7),1338,,KCEA,,,
+CGS,America/New_York,College Park,CGS,US,POINT (-84.45 33.666668),1049,http://www.collegeparkairport.aero/,KCGS,,,
+CIU,America/Detroit,Chippewa County Airport,SSM,US,POINT (-84.35 46.5),606,,KCIU,,,
+KCC,America/Sitka,Coffman Cove SPB,KCC,US,POINT (-132.83333 55.983334),0,,KCC,,,
+KCG,America/Anchorage,Fisheries,KCL,US,POINT (-158.37361 56.310833),25,,"",,,
+KCR,America/Anchorage,Colorado Creek,KCR,US,POINT (-156.0038862 63.5673168),860,,KCR,,,
+KCL,America/Anchorage,Lagoon,KCL,US,POINT (-158.53194 56.308334),25,,KCL,,,
+CLT,America/New_York,Charlotte Douglas International Airport,CLT,US,POINT (-80.9457435226013 35.21074145),685,http://www.charlotteairport.com/,KCLT,,,
+CRG,America/New_York,Craig Municipal,JAX,US,POINT (-81.666664 30.5),82,http://www.flyjacksonville.com/content.aspx?id=86,KCRG,,,
+CRP,America/Chicago,Corpus Christi International Airport,CRP,US,POINT (-97.50657535472868 27.7702374),55,,KCRP,,,
+CSG,America/New_York,Columbus Airport,CSG,US,POINT (-84.98333 32.466667),252,,KCSG,,,
+KCN,America/Nome,SPB,KCN,US,POINT (-167.55 53.4),0,,KCN,,,
+CUB,America/New_York,Owens Field,CAE,US,POINT (-81.11528 33.936943),180,http://www.columbiasouthcarolina.com/owens.html,KCUB,,,
+CYS,America/Denver,Cheyenne,CYS,US,POINT (-104.819273 41.1528709),6174,,KCYS,,,
+DCA,America/New_York,Ronald Reagan National Airport,WAS,US,POINT (-77.04346 38.853436),52,http://www.flyreagan.com/dca/reagan-national-airport,KDCA,,,
+DGL,America/Phoenix,Douglas Municipal,DUG,US,POINT (-109.566666 31.35),3959,,KDGL,,,
+KIP,America/Chicago,Kickapoo,SPS,US,POINT (-98.5 33.9),1003,http://www.wichitafallstx.gov/index.aspx?nid=704,KCWC,,,
+DNN,America/New_York,Municipal,DNN,US,POINT (-84.96667 34.766666),764,,KDNN,,,
+MRE,Africa/Nairobi,Mara Lodges Airport,MRE,KE,POINT (35.05885 -1.300368),5072,,"",,,
+KTJ,Africa/Nairobi,Kichwa Tembo Airport,KTJ,KE,POINT (35.027596 -1.263508),0,,HKTB,Narok,,
+KDQ,Pacific/Port_Moresby,Kamberatoro,KDQ,PG,POINT (141.05177324474255 -3.6006247),1350,,AYTO,,,
+KDS,Australia/Brisbane,Kamaran Downs,KDS,AU,POINT (139.16667 -24.333332),322,,"",,,
+LKU,Africa/Nairobi,Lake Rudolf,LKU,KE,POINT (35.8833313 3.416667),1300,,"",,,
+KEB,America/Anchorage,Nanwalek,KEB,US,POINT (-151.92467201361427 59.35235445),27,,KEB,,,
+KDP,Pacific/Port_Moresby,Kandep,KDP,PG,POINT (143.50714258950853 -5.84057595),7710,,AYNN,,,
+DRA,America/Los_Angeles,Desert Rock,DRA,US,POINT (-115.96667 36.666668),4261,,KDRA,,,
+DRE,America/Detroit,Drummond Island,DRE,US,POINT (-83.7414303 46.0096005),666,,KDRM,,,
+DTN,America/Chicago,Shreveport Downtown,SHV,US,POINT (-93.74500728259136 32.54041615),187,http://www.shreveportla.gov/airport/dtnairport.htm,KDTN,,,
+DWH,America/Chicago,David Wayne Hooks,HOU,US,POINT (-95.416664 29.75),78,http://www.hooksairport.com/,KDWH,,,
+KDW,Asia/Colombo,Vic. Resevour Kandy,KDW,LK,POINT (80.63333 7.3),1402,,"",,,
+KRV,Africa/Nairobi,Kerio Valley,KRV,KE,POINT (36.11667 2.983333),4325,,"",,,
+KEK,America/Anchorage,Ekwok,KEK,US,POINT (-157.4736499 59.3532975),135,,KEK,,,
+KEG,Pacific/Port_Moresby,Keglsugl,KEG,PG,POINT (145.09762766425712 -5.8325365),8400,,AYLG,,,
+EFK,America/New_York,Newport,EFK,US,POINT (-72.23 44.889442),928,,KEFK,,,
+END,America/Chicago,Vance AFB,WDG,US,POINT (-97.88333 36.4),1266,http://www.vance.af.mil/,KEND,,,
+KEX,Pacific/Port_Moresby,Kanabea,KEX,PG,POINT (145.91667 -7.483333),4288,,AYNB,,,
+FAF,America/New_York,Felker AAF,FAF,US,POINT (-76.6 37.166668),114,,KFAF,,,
+FCM,America/Chicago,Flying Cloud Airport,MSP,US,POINT (-93.26667 44.983334),902,http://www.metroairports.org/General-Aviation/Airports/Flying-Cloud.aspx,KFCM,,,
+FLL,America/New_York,Fort Lauderdale-Hollywood International Airport,FLL,US,POINT (-80.15099673135214 26.072017000000002),45,http://www.broward.org/airport,KFLL,,,
+FLX,America/Los_Angeles,Municipal,NFL,US,POINT (-118.78333 39.466667),3943,,KFLX,,,
+FNL,America/Denver,Municipalcipal Airport,FNL,US,POINT (-105.083336 40.583332),5039,http://www.flynoco.com/,KFNL,,,
+FOE,America/Chicago,Forbes Field,TOP,US,POINT (-95.68149974712881 38.96168595),1007,,KFOE,,,
+FRD,America/Los_Angeles,Friday Harbor Airport,FRD,US,POINT (-123.0251061580843 48.5236309),52,http://www.portfridayharbor.org/?page_id=49,KFHR,,,
+FSI,America/Chicago,Henry Post AAF,FSI,US,POINT (-98.419975 34.650723),1187,http://sill-www.army.mil/History/Airfield/henrypost.htm,KFSI,,,
+FTW,America/Chicago,Meacham Field,FTW,US,POINT (-97.333336 32.75),636,http://meacham.com/,KFTW,,,
+GCN,America/Phoenix,National Park,GCN,US,POINT (-112.1475 35.951942),6591,http://www.azdot.gov/aviation/airports/airports_list.asp?FAA=GCN,KGCN,,,
+KGX,America/Anchorage,Grayling Airport,KGX,US,POINT (-160.06731907546552 62.8890322),99,,PAGX,,,
+GWS,America/Denver,Glenwood Springs,GWS,US,POINT (-107.41441 39.583168),7145,http://www.glenwoodspringsairport.com/,KGWS,,,
+KGW,Pacific/Port_Moresby,Kagi,KGW,PG,POINT (146.83333 -9.05),4200,,AYKQ,,,
+HOU,America/Chicago,William P. Hobby Airport,HOU,US,POINT (-95.27692608634595 29.64714905),49,http://www.fly2houston.com/hobbyHome,KHOU,,,
+HTW,America/New_York,Lawrence County Airpark,HTW,US,POINT (-76.28333 36.833332),29,,KHTW,,,
+IAB,America/Chicago,Mcconnell AFB,ICT,US,POINT (-97.27617 37.68114),1377,http://public.mcconnell.amc.af.mil/,KIAB,,,
+IAH,America/Chicago,George Bush Intercontinental Airport,HOU,US,POINT (-95.33298595614491 29.9841416),88,http://www.fly2houston.com/iah,KIAH,,,
+INS,America/Los_Angeles,Af Aux,INS,US,POINT (-115.666664 36.583332),3103,http://www.creech.af.mil/,KINS,,,
+IPL,America/Los_Angeles,Imperial County Airport,IPL,US,POINT (-115.57428270065972 32.83500895),-82,,KIPL,,,
+KIA,Pacific/Port_Moresby,Kaiapit,KIA,PG,POINT (146.25 -6.266667),1030,,"",,,
+ISN,America/Chicago,Sloulin Field International Airport,ISN,US,POINT (-103.63611 48.17611),1886,,KISN,,,
+KIB,America/Anchorage,SPB,KIB,US,POINT (-159.5675 55.893612),0,,KIB,,,
+KIQ,Pacific/Port_Moresby,Kira,KIQ,PG,POINT (147.35 -8.116667),1700,,AYRA,,,
+LAS,America/Los_Angeles,McCarran International Airport,LAS,US,POINT (-115.16111989849915 36.0861034),2181,http://www.mccarran.com/,KLAS,,,
+KIZ,Pacific/Port_Moresby,Kikinonda,KIZ,PG,POINT (147.91667 -8.65),95,,"",,,
+LBB,America/Chicago,Lubbock Preston Smith International Airport,LBB,US,POINT (-101.82670576722407 33.665023500000004),3282,http://www.flylia.com/,KLBB,,,
+DTH,America/Los_Angeles,Death Valley,DTH,US,POINT (-117 36.5),629,,"",,,
+JAS,America/Chicago,County,JAS,US,POINT (-94.01667 30.933332),255,,KJAS,Jasper,Jasper County,Texas
+KJU,Pacific/Port_Moresby,Kamiraba,KJU,PG,POINT (151.25 -2.883333),40,,"",,,
+KKB,America/Anchorage,SPB,KKB,US,POINT (-152.35 58.183334),0,,KKB,,,
+KKL,America/Anchorage,Karluk Lake SPB,KKL,US,POINT (-154.53334 57.55),368,,KKL,,,
+KLS,America/Los_Angeles,Longview,KLS,US,POINT (-122.9 46.15),20,http://www.kelso.gov/Departments%20%2526%20Services/Airport,KKLS,,,
+LPC,America/Los_Angeles,Lompoc Airport,LPC,US,POINT (-120.46708251675622 34.66583955),52,http://www.cityoflompoc.com/transit/airport/,KLPC,,,
+LSF,America/New_York,Lawson AAF,LSF,US,POINT (-84.986046 32.3405),236,,KLSF,,,
+LUF,America/Phoenix,Luke AFB,PHX,US,POINT (-111.916664 33.61667),1446,http://www.luke.af.mil/,KLUF,,,
+LFI,America/New_York,Langley AFB,PHF,US,POINT (-76.5 37.083332),11,http://www.langleyafb.us/,KLFI,,,
+LGF,America/Phoenix,Laguna AAF,YUM,US,POINT (-114.61667 32.716667),433,http://www.yuma.army.mil/,KLGF,,,
+LNA,America/New_York,Palm Beach County Park,PBI,US,POINT (-80.05 26.716667),14,,KLNA,,,
+KMB,Pacific/Port_Moresby,Koinambe,KMB,PG,POINT (144.60745567616368 -5.48775765),3000,,AYON,,,
+MAF,America/Chicago,Midland International Airport,MAF,US,POINT (-102.21061868215736 31.946026099999997),2834,,KMAF,,,
+MAC,America/New_York,Smart,MCN,US,POINT (-83.63333 32.833332),357,,KMAC,,,
+MCE,America/Los_Angeles,Merced Municipal Airport,MCE,US,POINT (-120.51278 37.28472),137,,KMCE,,,
+MCF,America/New_York,Mac Dill AFB,TPA,US,POINT (-82.45 27.95),32,http://www.macdill.af.mil/,KMCF,,,
+MCN,America/New_York,Lewis B Wilson,MCN,US,POINT (-83.64865 32.70199),377,,KMCN,,,
+KMF,Pacific/Port_Moresby,Kamina,KMF,PG,POINT (145.99583 -7.616667),2157,,AYKD,,,
+MGE,America/New_York,Dobbins AFB,MGE,US,POINT (-84.51667 33.916668),994,http://www.dobbins.afrc.af.mil/,KMGE,,,
+MGM,America/Chicago,Montgomery Regional Airport,MGM,US,POINT (-86.39039567484974 32.29656065),121,http://www.flymgm.com/,KMGM,,,
+MGR,America/New_York,Moultrie Municipal,MGR,US,POINT (-83.8042272 31.0833651),255,http://www.moultriega.com/?page_id=38,KMGR,,,
+MHR,America/Los_Angeles,Mather Airport,SAC,US,POINT (-121.933334 38.05),0,http://www.sacramento.aero/mhr/,KMHR,,,
+MIB,America/Chicago,Minot AFB,MOT,US,POINT (-101.3 48.233334),1591,http://www.minot.af.mil/,KMIB,,,
+KMM,Asia/Jayapura,Kimam,KMM,ID,POINT (136.16667 -3.666667),26,,"",,,
+MVY,America/New_York,Martha's Vineyard Airport,MVY,US,POINT (-70.61158 41.38959),55,,KMVY,,,
+FWH,America/Chicago,Fort Worth NAS Jrb/Carswell Field,DFW,US,POINT (-97.3 32.76389),577,http://www.cnic.navy.mil/regions/cnrse/installations/nas_jrb_fort_worth.html,KNFW,,,
+MWC,America/Chicago,Lawrence J Timmerman,MKE,US,POINT (-87.916664 43.033333),597,,KMWC,,,
+MYF,America/Los_Angeles,Montgomery Field,SAN,US,POINT (-117.15 32.716667),85,http://www.sandiego.gov/airports/montgomery/index.shtml,KMYF,,,
+NIP,America/New_York,Jacksonville NAS,JAX,US,POINT (-81.6791856791564 30.232195599999997),29,,KNIP,,,
+NJK,America/Los_Angeles,El Centro NAF,IPL,US,POINT (-115.57472 32.837223),-72,https://www.cnic.navy.mil/regions/cnrsw/installations/naf_el_centro.html,KNJK,,,
+KMY,America/Anchorage,Moser Bay,KMY,US,POINT (-154.15 57.533333),0,,"",,,
+KNL,Pacific/Port_Moresby,Kelanoa,KNL,PG,POINT (147.5 -6),40,,"",,,
+KOL,Africa/Bangui,Koumala,KOL,CF,POINT (21.257677 8.4999931),2175,,"",,,
+NQX,America/New_York,Key West NAS /Boca Chica Field (private U. S. Navy ),EYW,US,POINT (-81.8 24.55),39,http://www.cnic.navy.mil/regions/cnrse/installations/nas_key_west.html,KNQX,,,
+NRB,America/Chicago,Ns,NRB,US,POINT (-81.65 30.333332),39,http://www.cnic.navy.mil/regions/cnrse/installations/ns_mayport.html,KNRB,,,
+OKC,America/Chicago,Will Rogers World Airport,OKC,US,POINT (-97.60534425082406 35.3848053),1299,http://www.flyokc.com,KOKC,,,
+KOM,Pacific/Port_Moresby,Komo-Manda,KOM,PG,POINT (143.63333 -6.133333),5057,,AYOO,,,
+KOR,Pacific/Port_Moresby,Kokoro,KOR,PG,POINT (146.55 -7.808333),230,,AYRO,,,
+ESD,America/Los_Angeles,Orcas Island Airport,ESD,US,POINT (-122.9107622489896 48.70740765),22,http://www.portoforcas.com/,KORS,,,
+GLB,America/Phoenix,San Calos Apache,GLB,US,POINT (-10.033333 5.95),36,,P13,,,
+KPB,America/Anchorage,Point Baker SPB,KPB,US,POINT (-133.58333 56.333332),0,,KPB,,,
+KPE,Pacific/Port_Moresby,Yapsiei,KPE,PG,POINT (141.16667 -4.05),600,,AYYP,,,
+KPL,Pacific/Port_Moresby,Kapal,KPL,PG,POINT (142.82360395 -8.6303459),170,,"",,,
+KPR,America/Anchorage,Port Williams SPB,KPR,US,POINT (-152.58333 58.433334),0,,KPR,,,
+KRJ,Pacific/Port_Moresby,Karawari,KRJ,PG,POINT (143.52293596367795 -4.5968995),70,,AYQA,,,
+RFG,America/Chicago,Rooke Field,RFG,US,POINT (-97.35 28.333332),127,,KRFG,,,
+RHV,America/Los_Angeles,Reid-Hillview,SJC,US,POINT (-121.88333 37.333332),91,http://www.countyairports.org/rhv.html,KRHV,,,
+KPY,America/Anchorage,Port Bailey SPB,KPY,US,POINT (-153.03334 57.933334),0,,KPY,,,
+KQA,America/Nome,Akutan,KQA,US,POINT (-165.78334 54.13333),0,,KQA,,,
+KQL,Pacific/Port_Moresby,Kol,KQL,PG,POINT (144.86667 -5.65),5350,,AYOL,,,
+KRU,Pacific/Port_Moresby,Kerau,KRU,PG,POINT (147.07180272949768 -8.2709847),7360,,AYEA,,,
+RND,America/Chicago,Randolph AFB,SAT,US,POINT (-98.5 29.416668),646,http://www.military.com/base-guide/randolph-air-force-base,KRND,,,
+ROC,America/New_York,Greater Rochester International Airport,ROC,US,POINT (-77.66522075259782 43.12759065),508,,KROC,,,
+SCH,America/New_York,Schenectady County,SCH,US,POINT (-73.92842766947919 42.85544945),374,http://www.schenectadycounty.com/FullStory.aspx?m=100&amid=432,KSCH,,,
+SDM,America/Los_Angeles,Brown Field Municipalcipal,SAN,US,POINT (-116.98 32.572224),505,http://www.sandiego.gov/airports/brown/,KSDM,,,
+SFF,America/Los_Angeles,Felts Field,GEG,US,POINT (-117.4 47.666668),1906,http://feltsfield.spokaneairports.net/,KSFF,,,
+SKF,America/Chicago,Kelly AFB,SAT,US,POINT (-98.5 29.416668),646,,KSKF,,,
+SVQ,Europe/Madrid,Seville Airport,SVQ,ES,POINT (-5.900136 37.423477),144,,LEZL,,,
+KSG,Pacific/Port_Moresby,Kisengan,KSG,PG,POINT (146.71666 -6.35),3700,,"",,,
+KTB,America/Anchorage,Thorne Bay,KTB,US,POINT (-132.5366667 55.6877778),0,,KTB,,,
+RUI,America/Denver,Ruidoso Sierra Blanca Regional Airport,RUI,US,POINT (-105.6625 33.360832),6909,,KSRR,,,
+SSC,America/New_York,Shaw AFB,SSC,US,POINT (-80.11667 33.9),180,http://www.shaw.af.mil/,KSSC,,,
+KSP,Pacific/Port_Moresby,Kosipe,KSP,PG,POINT (147.46666 -8.55),6350,,AYOP,,,
+TEX,America/Denver,Telluride Regional,TEX,US,POINT (-107.816666 37.933334),9070,,KTEX,,,
+THA,America/Chicago,Tullahoma/William Northern Field,THA,US,POINT (-86.183334 35.36667),1083,http://www.tullahomatn.gov/airport/,KTHA,,,
+KTK,Pacific/Port_Moresby,Kanua,KTK,PG,POINT (154.75 -5.338889),60,,"",,,
+TPH,America/Los_Angeles,Tonopah Airport,TPH,US,POINT (-117.23333 38.066666),5430,http://www.tonopahnevada.com/airport.html,KTPH,,,
+VAD,America/New_York,Moody AFB,VLD,US,POINT (-83.28333 30.833332),190,http://www.moody.af.mil/,KVAD,,,
+KUX,Pacific/Port_Moresby,Kuyol,KUX,PG,POINT (141.62561895159217 -5.3717997),3290,,AYUY,,,
+BFG,America/Denver,Bullfrog Basin,BFG,US,POINT (-110.713199 37.5458239),4150,,KU07,,,
+KUP,Pacific/Port_Moresby,Kupiano,KUP,PG,POINT (148.16667 -10.091667),90,,"",,,
+KVE,Pacific/Port_Moresby,Kitava,KVE,PG,POINT (151.33333 -8.666667),194,,"",,,
+KWF,America/Anchorage,Waterfall SPB,KWF,US,POINT (-133.24167 55.297222),0,,KWF,,,
+KWP,America/Anchorage,Village SPB,KWP,US,POINT (-153.55 57.766945),0,,KWP,,,
+KWV,Pacific/Port_Moresby,Kurwina,KWV,PG,POINT (155.33333 -6.183333),65,,"",,,
+KWX,Pacific/Port_Moresby,Kiwai Island,KWX,PG,POINT (143.41667 -8.583333),30,,"",,,
+KWY,Africa/Nairobi,Kiwayu,KWY,KE,POINT (41.266666 -2.016667),21,,"",,,
+KXA,America/Sitka,Kasaan SPB,KXA,US,POINT (-132.39583 55.537777),0,,KXA,,,
+KZB,America/Anchorage,Zachar Bay SPB,KZB,US,POINT (-153.75 57.55),0,,"",,,
+KZF,Pacific/Port_Moresby,Kaintiba,KZF,PG,POINT (146 -7.466667),2050,,AYKT,,,
+LAC,Asia/Kuching,Layang-Layang Airstrip,LAC,MY,POINT (113.85 7.4),7,,"",,,
+LBM,Africa/Maputo,Luabo,LBM,MZ,POINT (36.166668 -18.5),36,,"",,,
+VLC,Europe/Madrid,Valencia Airport,VLC,ES,POINT (-0.481209186098332 39.4878647),180,,LEVC,,,
+XRY,Europe/Madrid,Jerez Airport,XRY,ES,POINT (-6.064049514261415 36.74377795),93,,LEJR,,,
+LDW,Australia/Perth,Lansdowne,LDW,AU,POINT (126.65 -17.883333),1190,,"",,,
+ABC,Europe/Madrid,Los Llanos,ABC,ES,POINT (-1.863333 38.948334),2276,http://www.aena.es/csee/Satellite?cid=1046767815090&pagename=subHome&Language=EN_GB&SiteName=LEAB&c=Page,LEAB,,,
+AGP,Europe/Madrid,Malaga Airport,AGP,ES,POINT (-4.499980126161259 36.67876135),52,,LEMG,,,
+ALC,Europe/Madrid,Alicante-Elche Airport,ALC,ES,POINT (-0.5542897 38.2888263),72,http://www.aena.es/csee/Satellite?cid=1049437849176&pagename=subHome&Language=EN_GB&SiteName=ALC&c=Page,LEAL,,,
+CQM,Europe/Madrid,Ciudad Real Central,CQM,ES,POINT (-3.916667 38.983334),2093,http://www.aeropuertocentralcr.com/,LERL,,,
+ANE,Europe/Paris,Angers-Marce Airport,ANE,FR,POINT (-0.55 47.466667),144,,LFJR,,,
+LTT,Europe/Paris,La Mole,LTT,FR,POINT (6.633333 43.283333),0,,LFTZ,,,
+BSL,Europe/Zurich,EuroAirport Swiss,EAP,CH,POINT (7.532604 47.59961),862,http://www.euroairport.com/,LFSB,,,
+CDG,Europe/Paris,Charles de Gaulle Airport,PAR,FR,POINT (2.5710819691019156 49.0068908),337,http://www.aeroportsdeparis.fr/,LFPG,,,
+SXB,Europe/Paris,Strasbourg Airport,SXB,FR,POINT (7.625009702296425 48.538652549999995),498,http://www.strasbourg.aeroport.fr/E/index.php,LFST,,,
+TLN,Europe/Paris,Hyeres Airport,TLN,FR,POINT (6.159303 43.09349),7,http://toulon-hyeres.aeroport.fr/,LFTH,,,
+PEV,Europe/Budapest,Pecs Pogany,PEV,HU,POINT (170.6 69.78333),29,http://www.airport-pecs.hu/,LHPP,,,
+LGE,Australia/Perth,Lake Gregory,LGE,AU,POINT (127.566666 -20.133333),978,,"",,,
+AOK,Europe/Athens,Karpathos Airport,AOK,GR,POINT (27.145333449162123 35.42109615),29,,LGKP,Karpathos,Nomos Dodekanisou,South Aegean
+FOG,Europe/Rome,Gino Lisa,FOG,IT,POINT (15.544367 41.43399),269,,LIBF,,,
+LGM,Pacific/Port_Moresby,Laiagam,LGM,PG,POINT (145.41667 -4.333333),7267,,"",,,
+LGN,Pacific/Port_Moresby,Linga Linga,LGN,PG,POINT (149.41667 -5.683333),17,,AYLL,,,
+LHP,Pacific/Port_Moresby,Lehu,LHP,PG,POINT (155.7 -6.5),1770,,"",,,
+PIX,Atlantic/Azores,Pico Island Airport,PIX,PT,POINT (-28.3 38.466667),2112,,LPPI,,,
+VIC,Europe/Rome,Trissino,VIC,IT,POINT (11.55 45.55),85,,LIPT,,,
+LNM,Pacific/Port_Moresby,Langimar,LNM,PG,POINT (146.21679472212242 -7.22214215),5055,,AYLN,,,
+LNC,Pacific/Port_Moresby,Lengbati,LNC,PG,POINT (147.3688609027392 -6.3844947),5715,,AYLT,,,
+LNF,Pacific/Port_Moresby,Munbil,LNF,PG,POINT (141.21666 -4.866667),4215,,AYYM,,,
+LNQ,Pacific/Port_Moresby,Loani,LNQ,PG,POINT (150.15 -10.433333),52,,"",,,
+LLH,America/Tegucigalpa,Las Limas,LLH,HN,POINT (-87.89889 15.443056),96,,"",,,
+AVR,Europe/Lisbon,Alverca,AVR,PT,POINT (-9.0300999 38.8833008),42,,LPAR,Sobralinho,Vila Franca de Xira,Lisbon
+CAT,America/Nassau,Cascais Municipal Aerodrome,CAT,PT,POINT (-75.45361 24.315),32,http://aerodromo-cascais.pt/?lang=en,LPCS,,,
+CVU,Atlantic/Azores,Corvo Island (Azores) Airport,CVU,PT,POINT (-31.1 39.7),1778,,LPCR,,,
+LLL,Australia/Perth,Lissadell,LLL,AU,POINT (128.63333 -16.566668),374,,"",,,
+PED,Europe/Prague,Pardubice Airport,PED,CZ,POINT (15.738799963989463 50.01305945),711,http://www.airport-pardubice.cz/?lang=en,LKPD,,,
+VOD,Europe/Prague,Vodochody,PRG,CZ,POINT (14.4204598 50.0878114),666,http://www.lkvo.cz,LKVO,,,
+EIY,Asia/Jerusalem,Ein Yahav,EIY,IL,POINT (35.2013787 30.6176292),-187,,LLEY,,,
+ETH,Asia/Jerusalem,Eilat Airport,ETH,IL,POINT (34.958889 29.558333),26,,LLET,,,
+ETM,Asia/Jerusalem,Ramon Airport,ETH,IL,POINT (35.011417 29.72369),269,,LLER,,,
+FAO,Europe/Lisbon,Faro Airport,FAO,PT,POINT (-7.973911065722614 37.017459599999995),29,http://www.ana.pt/en-US/Aeroportos/algarve/Faro/Pages/HomeFaro.aspx,LPFR,,,
+FLW,Atlantic/Azores,Santa Cruz Airport,FLW,PT,POINT (-31.15 39.466667),383,,LPFL,,,
+HOH,Europe/Vienna,Hohenems-Dornbirn,HOH,AT,POINT (9.699329804822927 47.3844036),1328,http://www.loih.at/,LOIH,,,
+SZG,Europe/Vienna,W. A. Mozart Salzburg Airport,SZG,AT,POINT (12.997331 47.791225),1411,http://www.salzburg-airport.com/,LOWS,,,
+BBU,Europe/Bucharest,Baneasa,BUH,RO,POINT (26.090228324484794 44.50029205),278,http://www.baneasa-airport.ro/,LRBS,,,
+LTF,Pacific/Port_Moresby,Leitre,LTF,PG,POINT (141.62480460905633 -2.8333213),29,,,Leitre,,Sandaun
+LUZ,Europe/Warsaw,Lublin Airport,LUZ,PL,POINT (22.706753771844266 51.2382497),629,,EPLB,,,
+KZR,Europe/Istanbul,Zafer Airport,KZR,TR,POINT (30.13712970523825 39.1090247),3327,,LTBZ,,,
+NOP,Europe/Istanbul,Sinop Airport - Turkey,NOP,TR,POINT (35.06889 42.0175),52,,LTCM,,,
+ADB,Europe/Istanbul,Izmir Adnan Menderes Airport,IZM,TR,POINT (27.15881973653169 38.289593249999996),337,http://www.adnanmenderesairport.com,LTBJ,,,
+AOE,Europe/Istanbul,Anadolu University,ESK,TR,POINT (30.519444 39.81),2595,,LTBY,,,
+GNY,Europe/Istanbul,Sanliurfa GAP Airport,GNY,TR,POINT (38.846943 37.094166),1450,http://gap.dhmi.gov.tr/havaalanlari/home.aspx?hv=36,LTCS,,,
+ISL,Europe/Istanbul,Istanbul Ataturk Airport,IST,TR,POINT (28.81089438997946 40.98179415),114,http://www.ataturkairport.com/eng/,LTBA,,,
+MDR,America/Anchorage,Medfra,MDR,US,POINT (-154.7166666 63.1068643),518,,"",,,
+MAP,Pacific/Port_Moresby,Mamai,MAP,PG,POINT (149.5 -10.333333),351,,"",,,
+MDS,America/Grand_Turk,Middle Caicos,MDS,TC,POINT (-71.71667 21.783333),13,,MBMC,,,
+NCA,America/Grand_Turk,North Caicos,NCA,TC,POINT (-71.9443193415783 21.9157059),42,,MBNC,,,
+MDV,Africa/Libreville,Medouneu,MDV,GA,POINT (10.783333 0.95),2165,,"",,,
+MGG,Pacific/Port_Moresby,Margarima,MGG,PG,POINT (143.36667 -6.033333),6725,,"",,,
+MGP,Pacific/Port_Moresby,Manga,MGP,PG,POINT (152.96666 -4.033333),0,,"",,,
+PIC,America/Grand_Turk,Pine Cay,PIC,TC,POINT (-72.0916582724344 21.87481975),32,,MBPI,,,
+AAZ,America/Guatemala,Quetzaltenango,AAZ,GT,POINT (-91.5067713438188 14.8611558),7795,,MGQZ,Olintepeque,,Quetzaltenango
+AIM,Pacific/Majuro,Ailuk Island,AIM,MH,POINT (169.9825736 10.2164987),45,,"",,,
+BII,Pacific/Majuro,Enyu Airfield,BII,MH,POINT (165.5650024 11.5225),36,,"",,,
+BTS,Europe/Bratislava,Bratislava Airport,BTS,SK,POINT (17.21349735712755 48.17229025),429,,LZIB,,,
+CMM,America/Guatemala,Carmelita,CMM,GT,POINT (-90.0538516 17.4621687),734,,MGCR,,,
+SLX,America/Grand_Turk,Salt Cay,SLX,TC,POINT (-71.19947991592187 21.33455605),26,,MBSY,,,
+DOA,Indian/Antananarivo,Doany,DOA,MG,POINT (49.5107994 -14.3681002),1204,,"",,,
+GDT,America/Grand_Turk,Grand Turk Island,GDT,TC,POINT (-71.14172992600774 21.44441545),29,,MBGT,,,
+CDD,America/Tegucigalpa,Cauquira,CDD,HN,POINT (-83.60406201630377 15.32120995),22,,MHCU,,,
+MJE,Pacific/Majuro,Majkin,MJE,MH,POINT (170 9),0,,"",,,
+MHY,Pacific/Port_Moresby,Morehead,MHY,PG,POINT (141.64384120183462 -8.7140625),42,,AYEH,,,
+KBT,Pacific/Majuro,Kaben,KBT,MH,POINT (170.91667 9.166667),0,,"",,,
+MIZ,Australia/Darwin,Mainoru,MIZ,AU,POINT (134.1 -14),419,,"",,,
+KIN,America/Jamaica,Norman Manley International Airport,KIN,JM,POINT (-76.78098090118962 17.93556065),10,,MKJP,,,
+MJJ,Pacific/Port_Moresby,Moki,MJJ,PG,POINT (145.25 -5.7),4520,,"",,,
+EBN,Pacific/Kwajalein,Ebadon,EBN,MH,POINT (166.8200073 9.3305597),29,,"",,,
+JAT,Pacific/Majuro,Jabot,JAT,MH,POINT (168.9774105 7.749272),39,,"",,,
+JEJ,Pacific/Majuro,Jeh,JEJ,MH,POINT (168.9620056 7.5653501),45,,"",,,
+MKN,Pacific/Port_Moresby,Malekolon,MKN,PG,POINT (153.675 -4.016667),65,,AYMV,,,
+MLQ,Pacific/Port_Moresby,Malalaua,MLQ,PG,POINT (146.085 -7.991667),144,,AYMP,,,
+MUG,America/Mazatlan,Mulege,MUG,MX,POINT (-111.98333 26.916668),754,,MMMG,,,
+NOG,America/Hermosillo,Nogales,NOG,MX,POINT (-110.933334 31.333332),3979,,MMNG,,,
+ACN,America/Matamoros,International,ACN,MX,POINT (-100.916664 29.3),944,,MMCC,,,
+AZP,America/Mexico_City,Atizapan,MEX,MX,POINT (-99.1 19.416668),7322,,MMJC,Iztacalco,Iztacalco,Mexico City
+CUA,America/Mazatlan,Ciudad Constitución Airport,CUA,MX,POINT (-111.664444 25.036943),187,,MMDA,,,
+BZA,America/Managua,San Pedro,BZA,NI,POINT (-84.6 13.95),1099,,MNBZ,,,
+MNP,Pacific/Port_Moresby,Maron,MNP,PG,POINT (-83.38361 14.045278),39,,"",,,
+MPG,Pacific/Port_Moresby,Makini,MPG,PG,POINT (147.71666 -6.533333),1233,,AYMJ,,,
+MPU,Pacific/Port_Moresby,Mapua,MPU,PG,POINT (151.4 -2.9),65,,AYMZ,,,
+MPX,Pacific/Port_Moresby,Miyanmin,MPX,PG,POINT (141.61667 -4.9),2408,,AYIY,,,
+MQO,Pacific/Port_Moresby,Malam,MQO,PG,POINT (142.65111 -8.703889),98,,AYMQ,,,
+CSC,America/Costa_Rica,Canas,CSC,CR,POINT (-85.48333 10.766667),636,,MRMJ,,,
+NCT,America/Costa_Rica,Guanacaste,NCT,CR,POINT (-85.445 10.138889),393,,MRNC,,,
+MRT,Australia/Darwin,Moroak,MRT,AU,POINT (133.41667 -14.483333),396,,"",,,
+NOB,America/Costa_Rica,Nosara Beach,NOB,CR,POINT (-85.65236200460156 9.97733305),59,,MRNS,,,
+DRK,America/Costa_Rica,Drake Bay,DRK,CR,POINT (-83.63672168650808 8.718110249999999),45,,MRDK,,,
+GAO,America/Havana,Los Canos Airport,GAO,CU,POINT (-75.15861 20.084723),95,,MUGT,,,
+GER,America/Havana,Rafael Cabrera Airport,GER,CU,POINT (-82.78 21.8375),19,,MUNG,,,
+GLF,America/Costa_Rica,Golfito Airport,GLF,CR,POINT (-83.18107346615636 8.653068600000001),49,,MRGF,,,
+MVI,Pacific/Port_Moresby,Manetai,MVI,PG,POINT (155.33333 -6),472,,"",,,
+MWR,Africa/Johannesburg,Motswari Airfield,MWR,ZA,POINT (31.3864 -24.1903),1174,,"",,,
+MAY,America/Nassau,Mangrove Cay,MAY,BS,POINT (-77.68183595696914 24.28800325),13,,MYAB,,,
+NAS,America/Nassau,Lynden Pindling International Airport,NAS,BS,POINT (-77.47012287193701 25.03933675),39,http://www.nas.bs/,MYNN,,,
+MYX,Pacific/Port_Moresby,Menyamya,MYX,PG,POINT (146.01938490925158 -7.2118918999999995),3891,,AYMC,,,
+MXK,Pacific/Port_Moresby,Mindik,MXK,PG,POINT (147.61667 -6.383333),2929,,AYMI,,,
+LLM,Asia/Kuching,Long Lama,LLM,MY,POINT (114.46667 3.766667),286,,"",,,
+MYK,America/Anchorage,May Creek,MYK,US,POINT (-142.91667 61.416668),1637,,MYK,,,
+MYG,America/Nassau,Mayaguana Airport,MYG,BS,POINT (-73.01833 22.376667),13,,MYMM,,,
+ASD,America/Nassau,Andros Town,ASD,BS,POINT (-77.77238141570106 24.70832875),32,,MYAF,,,
+ATC,America/Nassau,Arthur's Town,ATC,BS,POINT (-75.67591799805398 24.630217299999998),29,,MYCA,,,
+BIM,America/Nassau,Bimini International Airport,BIM,BS,POINT (-79.28333 25.7),16,,MYBS,,,
+CCZ,America/Nassau,Chub Cay,CCZ,BS,POINT (-77.87826580832996 25.416515099999998),16,,MYBC,,,
+CRI,America/Nassau,Crooked Island Airport,CRI,BS,POINT (-74.17689403811961 22.7467692),36,,MYCI,,,
+CXY,America/Nassau,Cat Cays,CXY,BS,POINT (-77.816666 25.416668),0,https://www.catcayyachtclub.com/club/scripts/library/view_document.asp?NS=IS&DN=AIRPORT,MYCC,,,
+CYB,America/Cayman,Charles Kirkconnel International Airport,CYB,KY,POINT (-79.87941 19.690191),55,,MWCB,,,
+MFW,Africa/Maputo,Magaruque,MFW,MZ,POINT (35.591667 -21.972221),0,,"",,,
+NMC,America/Nassau,Norman's Cay,NMC,BS,POINT (-76.81803288300762 24.59807545),9,,MYEN,,,
+RCY,America/Nassau,Rum Cay,RCY,BS,POINT (-74.96667 23.666668),0,,MYRP,,,
+ELH,America/Nassau,North Eleuthera International Airport,ELH,BS,POINT (-76.6811753569954 25.4760797),26,,MYEH,,,
+GHB,America/Nassau,Governor's Harbour Airport,GHB,BS,POINT (-76.33000405847706 25.2840555),62,,MYEM,,,
+GHC,America/Nassau,Great Harbour,GHC,BS,POINT (-77.84028 25.738056),29,,MYBG,,,
+MZE,America/Belize,Manatee,MZE,BZ,POINT (-89.6 17.083332),1040,,"",,,
+MGS,Pacific/Rarotonga,Mangaia Island,MGS,CK,POINT (-157.93333 -21.933332),505,,NCMG,,,
+AQS,Pacific/Fiji,Saqani,AQS,FJ,POINT (170.9 -17),32,,NFBG,,,
+MUK,Pacific/Rarotonga,Mauke Island,MUK,CK,POINT (-158.5 -19.333332),0,,NCMK,,,
+MHX,Pacific/Rarotonga,Manihiki Island,MHX,CK,POINT (-161.000703305665 -10.37867795),13,,NCMH,,,
+KDV,Pacific/Fiji,Kandavu Airport,KDV,FJ,POINT (178.15607 -19.053968),6,,NFKD,,,
+NDI,Pacific/Port_Moresby,Namudi,NDI,PG,POINT (148.26666 -9.433333),1384,,AYNJ,,,
+LBS,Pacific/Fiji,Labasa Airport,LBS,FJ,POINT (179.33916291168302 -16.467181099999998),44,,NFNL,,,
+LEV,Pacific/Fiji,Levuka Airfield,LEV,FJ,POINT (178.83333 -17.683332),11,,NFNB,,,
+LKB,Pacific/Fiji,Lakeba Airport,LKB,FJ,POINT (179.2 -18.2),280,,NFNK,,,
+KXF,Pacific/Fiji,Koro Island,KXF,FJ,POINT (179.83333 -17.333332),358,,NFNO,,,
+MOI,Pacific/Rarotonga,Mitiaro Island,MOI,CK,POINT (-157.7046704915573 -19.84221065),82,,NCMR,,,
+KAY,Pacific/Fiji,Wakaya Island,KAY,FJ,POINT (178.56612 -17.041111),130,,NFNW,,,
+AIT,Pacific/Rarotonga,Aitutaki Airport,AIT,CK,POINT (-159.76131004763312 -18.8364468),78,,NCAI,,,
+AIU,Pacific/Rarotonga,Atiu Island,AIU,CK,POINT (-158.1 -20.033333),0,,NCAT,,,
+BEZ,Pacific/Tarawa,Beru,BEZ,KI,POINT (176.0070038 -1.35472),26,,NGBR,,,
+BVF,Pacific/Fiji,Dama,BVF,FJ,POINT (178.5 -17),0,,NFNU,,,
+BZE,America/Belize,Philip S.W. Goldson International Airport,BZE,BZ,POINT (-88.30483122697225 17.5392339),22,http://www.pgiabelize.com/,MZBZ,,,
+IBO,Africa/Maputo,Ibo,IBO,MZ,POINT (40.583332 -12.333333),0,,FQIB,,,
+TTL,Pacific/Fiji,Turtle Island,TTL,FJ,POINT (179 -16.833332),0,,NFUL,,,
+ICI,Pacific/Fiji,Cicia,ICI,FJ,POINT (-179.34202519218303 -17.7442632),39,,NFCI,,,
+IMI,Pacific/Majuro,Ine Island,IMI,MH,POINT (171.61667 6.983333),0,,"",,,
+NDN,Pacific/Port_Moresby,Nadunumu,NDN,PG,POINT (147.684147735888 -9.14364895),5055,,AYNC,,,
+MNF,Pacific/Fiji,Mana Island Airstrip,MNF,FJ,POINT (177.11667 -17.633333),0,,NFMA,,,
+LUC,Pacific/Fiji,Laucala Island,LUC,FJ,POINT (179.41667 -16.75),1079,,NFNH,,,
+NAN,Pacific/Fiji,Nadi International Airport,NAN,FJ,POINT (177.43747042786867 -17.762453299999997),39,,NFFN,,,
+MFJ,Pacific/Fiji,Moala,MFJ,FJ,POINT (179.9493282 -18.5634988),26,,NFMO,,,
+NFO,Pacific/Tongatapu,Mata'aho,NFO,TO,POINT (-175.62891795 -15.571831),141,,NFTO,,,
+KUC,Pacific/Tarawa,Kuria,KUC,KI,POINT (173.38333 0.233333),0,,NGKT,,,
+PTF,Pacific/Fiji,Malololailai,PTF,FJ,POINT (177.21666 -17.783333),0,,NFFO,,,
+ONU,Pacific/Fiji,Ono I Lau,ONU,FJ,POINT (179 -16.333332),0,,NFOL,,,
+NIG,Pacific/Tarawa,Nikunau,NIG,KI,POINT (176.4100037 -1.31444),9,,NGNU,,,
+OOT,Pacific/Tarawa,Onotoa,OOT,KI,POINT (175.56667 -1.916667),0,,NGON,,,
+PYE,Pacific/Rarotonga,Penrhyn Island,PYE,CK,POINT (-158.03334 -9.016667),0,,NCPY,,,
+SVU,Pacific/Fiji,Savusavu Airport,SVU,FJ,POINT (179.34068266209127 -16.8034908),-9,,NFNS,,,
+VAU,Pacific/Fiji,Vatukoula,VAU,FJ,POINT (177.86308715740847 -17.499572399999998),154,,NFNV,,,
+MKP,Pacific/Tahiti,Makemo,MKP,PF,POINT (-143.6580048 -16.5839005),19,,NTGM,,,
+FAC,Pacific/Tahiti,Faaite,FAC,PF,POINT (-145.33269885244562 -16.68716835),6,,NTKF,,,
+TBF,Pacific/Tarawa,Tabiteuea North,TBF,KI,POINT (174.776001 -1.22447),7,,NGTE,,,
+FAV,Pacific/Tahiti,Fakarava Airport,FAV,PF,POINT (-145.66022274529297 -16.0556585),9,,NTGF,,,
+FGU,Pacific/Tahiti,Fangatau,FGU,PF,POINT (-141.83333 -16.05),0,,NTGB,,,
+FHZ,Pacific/Tahiti,Fakahina,FHZ,PF,POINT (-140.1647412 -15.9916371),32,,NTKH,,,
+NAU,Pacific/Tahiti,Napuka Island,NAU,PF,POINT (-141.58333 -14.166667),0,,NTGN,,,
+FTI,Pacific/Pago_Pago,Fitiuta,FTI,AS,POINT (-169.42350846539222 -14.2161361),82,,NSFQ,,,
+GMR,Pacific/Gambier,Gambier Island,GMR,PF,POINT (-134.88757 -23.084),19,,NTGJ,,,
+HBB,America/Denver,Industrial Airpark,HOB,US,POINT (-103.13333 32.7),3608,,NM83,,,
+MVT,Pacific/Tahiti,Mataiva,MVT,PF,POINT (-148.41667 -14.833333),0,,NTGV,,,
+NON,Pacific/Tarawa,Nonouti,NON,KI,POINT (174.35 -0.680556),0,,NGTO,,,
+HHZ,Pacific/Tahiti,Hikueru,HHZ,PF,POINT (-142.53334 -17.533333),0,,NTGH,,,
+RVV,Pacific/Tahiti,Raivavae,RVV,PF,POINT (-147.65 -25.883333),7,,NTAV,,,
+TIH,Pacific/Tahiti,Tikehau Atoll Airport,TIH,PF,POINT (-148.2338 -15.118639),6,,NTGC,,,
+KKR,Pacific/Tahiti,Kaukura Atoll Airport,KKR,PF,POINT (-146.66667 -15.783333),11,,NTGK,,,
+TKV,Pacific/Tahiti,Tatakoto,TKV,PF,POINT (-138.33333 -17.283333),12,,NTGO,,,
+TKP,Pacific/Tahiti,Takapoto,TKP,PF,POINT (-145.14166 -15.45),12,,NTGT,,,
+KHZ,Pacific/Tahiti,Kauehi Airport,KHZ,PF,POINT (-145.1241247 -15.7821774),13,,NTKA,,,
+NOO,Pacific/Port_Moresby,Naoro,NOO,PG,POINT (147.53334 -9.2),2870,,"",,,
+AAA,Pacific/Tahiti,Anaa,AAA,PF,POINT (-145.51111994065877 -17.3506654),36,,NTGA,,,
+AAK,Pacific/Tarawa,Aranuka,AAK,KI,POINT (173.58333 0.166667),0,,NGUK,,,
+AEA,Pacific/Tarawa,Abemama Atoll,AEA,KI,POINT (173.8289948 0.490833),36,,NGTB,,,
+AHE,Pacific/Tahiti,Ahe Airport,AHE,PF,POINT (-146.2570038 -14.4280996),32,http://www.sia.aviation-civile.gouv.fr/aip/enligne/PDF_AIPparSSection/AIP%20PAC-P/AD/2/0703_AD%202.NTHE.pdf,NTHE,,,
+APK,Pacific/Tahiti,Apataki,APK,PF,POINT (-146.08333 -15.416667),0,,NTGD,,,
+AXR,Pacific/Tahiti,Arutua Airport,AXR,PF,POINT (-146.75 -15.25),0,,NTGU,Arutua,,
+BBG,Pacific/Tarawa,Butaritari,BBG,KI,POINT (172.75 3.166667),0,,NGTU,,,
+NPG,Pacific/Port_Moresby,Nipa,NPG,PG,POINT (143.36667 -6.133333),5931,,"",,,
+NRY,Australia/Darwin,Newry,NRY,AU,POINT (129.23334 -16.016666),236,,"",,,
+NIK,Africa/Dakar,Niokolo Koba,NIK,SN,POINT (-12.7266741 13.0523055),265,,"",,,
+NOM,Pacific/Port_Moresby,Nomad River,NOM,PG,POINT (142.23412449302776 -6.2939573),259,,"",,,
+PKP,Pacific/Tahiti,Puka Puka,PKP,PF,POINT (-138.96666 -14.75),0,,NTGP,,,
+NTA,Pacific/Fiji,Natadola,NTA,FJ,POINT (177.3180715 -18.1025294),0,,"",,,
+NUK,Pacific/Tahiti,Nukutavake,NUK,PF,POINT (-138.7 -19.183332),0,,NTGW,,,
+RMT,Pacific/Tahiti,Rimatara,RMT,PF,POINT (-152.8053277 -22.6382712),52,,NTAM,,,
+PUK,Pacific/Tahiti,Pukarua,PUK,PF,POINT (-137.0169983 -18.2956009),22,,NTGQ,,,
+RKA,Pacific/Tahiti,Aratika-Nord,RKA,PF,POINT (-145.4698939 -15.4861066),9,,NTKK,,,
+REA,Pacific/Tahiti,Reao,REA,PF,POINT (-136.4 -18.5),0,,NTGE,,,
+RUR,Pacific/Tahiti,Rurutu,RUR,PF,POINT (-151.3586681802683 -22.434386449999998),22,,NTAR,,,
+RRR,Pacific/Tahiti,Raroia,RRR,PF,POINT (-142.47556 -16.044859),29,,NTKO,,,
+UAH,Pacific/Marquesas,Ua Huka,UAH,PF,POINT (-139.55388264695694 -8.936267650000001),160,,NTMU,,,
+LOD,Pacific/Efate,Longana,LOD,VU,POINT (167.96903185 -15.3061063),82,,NVSG,,,
+LNE,Pacific/Efate,Lonorore,LNE,VU,POINT (168.17305421313333 -15.8687823),59,,NVSO,,,
+MTV,Pacific/Efate,Mota Lava,MTV,VU,POINT (167.66667 -13.666667),666,,NVSA,,,
+UOA,Pacific/Tahiti,Mururoa Airstrip,UOA,PF,POINT (-138.813055 -21.809443),7,,NTTX,,,
+TGH,Pacific/Efate,Tongoa,TGH,VU,POINT (168.55130308029692 -16.890869549999998),443,,NVST,,,
+MWF,Pacific/Efate,Maewo,MWF,VU,POINT (168.16667 -15.166667),0,,NVSN,,,
+TOH,Pacific/Efate,Torres Airstrip,TOH,VU,POINT (166.75 -13.166667),75,,NVSD,,,
+LPM,Pacific/Efate,Lamap,LPM,VU,POINT (167.8287869 -16.4566477),36,,NVSL,,,
+AUQ,Pacific/Marquesas,Hiva Oa Airport,AUQ,PF,POINT (-139.00971485835828 -9.76667795),1515,,NTMN,,,
+AUY,Pacific/Efate,Aneityum,AUY,VU,POINT (169.66667 -20.333332),0,,NVVA,,,
+AWD,Pacific/Efate,Aniwa,AWD,VU,POINT (169.5 -19.25),0,,NVVB,,,
+BOB,Pacific/Tahiti,Motu Mute Airport,BOB,PF,POINT (-151.75254418187558 -16.444335350000003),16,,NTTB,,,
+CCV,Pacific/Efate,Craig Cove,CCV,VU,POINT (167.5 -16.2),1263,,NVSF,,,
+LNB,Pacific/Efate,Lamen Bay,LNB,VU,POINT (168.1589966 -16.5841999),39,,NVSM,,,
+MEE,Pacific/Noumea,Mare Airport,MEE,NC,POINT (168.03609 -21.482311),121,,NWWR,,,
+NHV,Pacific/Marquesas,Nuku Hiva Airport,NHV,PF,POINT (-140.22223 -8.795214),203,,NTMD,,,
+UIQ,Pacific/Efate,Quine Hill,UIQ,VU,POINT (168.16667 -17),16,,NVVQ,,,
+DLY,Pacific/Efate,Dillons Bay,DLY,VU,POINT (169.15 -18.7),423,,NVVD,,,
+EAE,Pacific/Efate,Emae,EAE,VU,POINT (168.41667 -17.166668),0,,NVSE,,,
+FTA,Pacific/Efate,Futuna Airport,FTA,VU,POINT (170.25 -19.416668),0,,NVVF,,,
+HOI,Pacific/Tahiti,Hao Island,HOI,PF,POINT (-140.96529 -18.06248),6,,NTTO,,,
+IPA,Pacific/Efate,Ipota,IPA,VU,POINT (169.18333 -18.75),446,,NVVI,,,
+NUG,Pacific/Port_Moresby,Nuguria,NUG,PG,POINT (150.81667 -3.466667),0,,AYNI,,,
+PBJ,Pacific/Efate,Paama,PBJ,VU,POINT (168.23523696852922 -16.432021900000002),45,,NVSI,,,
+RGI,Pacific/Tahiti,Rangiroa Airport,RGI,PF,POINT (-147.65915 -14.956334),29,,NTTG,,,
+SLH,Pacific/Efate,Sola,SLH,VU,POINT (167.5373349 -13.8528474),32,,NVSC,,,
+SSR,Pacific/Efate,Sara,SSR,VU,POINT (168.3 -15.5),0,,NVSH,,,
+SWJ,Pacific/Efate,South West Bay,SWJ,VU,POINT (167.16667 -16.25),0,,NVSX,,,
+VHZ,Pacific/Tahiti,Vahitahi,VHZ,PF,POINT (-138.83333 -18.583332),0,,NTUV,,,
+VLI,Pacific/Efate,Bauerfield Airport,VLI,VU,POINT (168.3193165665017 -17.69913085),75,,NVVV,,,
+MON,Pacific/Auckland,Mount Cook Airport,MON,NZ,POINT (170.13344355705374 -43.7665583),2139,,NZMC,,,
+MFN,Pacific/Auckland,Milford Sound,MFN,NZ,POINT (167.92485953395476 -44.67391965),869,,NZMF,,,
+RAG,Pacific/Auckland,Raglan,RAG,NZ,POINT (174.86667 -37.833332),131,,NZRA,,,
+ALR,Pacific/Auckland,Alexandra,ALR,NZ,POINT (169.36945 -45.21389),728,,NZLX,,,
+CMV,Pacific/Auckland,Coromandel,CMV,NZ,POINT (175.66667 -37),1302,,NZCX,,,
+DGR,Pacific/Auckland,Dargaville,DGR,NZ,POINT (173.89407140060214 -35.93911065),36,,NZDA,,,
+GTN,Pacific/Auckland,Glentanner,MON,NZ,POINT (170.13611 -43.766666),2122,,NZGT,,,
+HKK,Pacific/Auckland,Hokitika Airport,HKK,NZ,POINT (170.98582566679983 -42.71319285),124,,NZHK,,,
+OAZ,Asia/Kabul,Camp Bastion,OAZ,AF,POINT (61.983334 31.1),1571,,OAZI,,,
+AHB,Asia/Riyadh,Abha Regional Airport,AHB,SA,POINT (42.657574 18.23429),6876,,OEAB,,,
+OGE,Pacific/Port_Moresby,Ogeranang,OGE,PG,POINT (147.46666 -6.466667),2841,,AYOG,,,
+SLF,Asia/Riyadh,Sulayel,SLF,SA,POINT (45.6195984 20.4647007),2014,,OESL,,,
+OGM,America/Panama,Ogobsucum,OGM,PA,POINT (-77.933266 83.382225),13,,"",,,
+ACP,Asia/Tehran,Sahand,ACP,IR,POINT (46.12410489796737 37.347790399999994),4340,,OITM,Bonab,,East Azerbaijan
+AEU,Asia/Tehran,Abu Musa,AEU,IR,POINT (55.034265964970395 25.875993649999998),16,,OIBA,,,
+BUZ,Asia/Tehran,Bushehr Airport,BUZ,IR,POINT (50.8229405 28.9572989),22,http://booshehr.airport.ir/,OIBB,Bushehr,,
+JSK,America/Chicago,Municipalcipal Heliport,STC,US,POINT (-94.166664 45.55),19,,OIZJ,,,
+OKV,Pacific/Port_Moresby,Okao,OKV,PG,POINT (141.0320208205246 -5.556893049999999),416,,AYOF,,,
+XSB,Asia/Dubai,Sir Bani Yas Island Airport,XSB,AE,POINT (52.58180669778059 24.2832317),25,,OMBY,,,
+OLH,America/Anchorage,Old Harbor SPB,OLH,US,POINT (-153.3 57.204166),0,,"",,,
+OLQ,Pacific/Port_Moresby,Olsobip,OLQ,PG,POINT (141.5 -5.466667),2306,,AYOV,,,
+ONB,Pacific/Port_Moresby,Ononge,ONB,PG,POINT (147.2 -8.583333),6706,,AYQQ,,,
+OMM,Asia/Muscat,Marmul,OMM,OM,POINT (55.266666 18.133333),948,,OOMX,,,
+SHJ,Asia/Dubai,Sharjah International Airport,SHJ,AE,POINT (55.5137442 25.3401476),49,,OMSJ,,,
+SLL,Asia/Muscat,Salalah International Airport,SLL,OM,POINT (54.088312622997904 17.04651015),114,http://www.dgcam.gov.om/str/airsalah.htm,OOSA,,,
+AAN,Asia/Dubai,Al Ain Airport,AAN,AE,POINT (55.616627 24.260231),830,,OMAL,,,
+ADJ,Asia/Amman,Marka International Airport,AMM,JO,POINT (35.994612548528934 31.97342425),2454,,OJAM,Amman,,Amman
+AUH,Asia/Dubai,Abu Dhabi International Airport,AUH,AE,POINT (54.641976680103 24.43189915),55,http://www.abudhabiairport.ae/,OMAA,,,
+AZI,Asia/Dubai,Bateen,AUH,AE,POINT (54.451668 24.419167),36,,OMAD,,,
+BHW,Asia/Karachi,Bhagatanwala Airport,SGI,PK,POINT (72.666664 32.166668),606,,OPBG,,,
+DEA,Asia/Karachi,Dera Ghazi Khan Airport,DEA,PK,POINT (70.5222664 29.9462594),383,,OPDG,,,
+DHF,Asia/Dubai,Al Dhafra Military Airport,AUH,AE,POINT (54.65 24.433332),42,https://www.dhafra.af.mil/,OMAM,,,
+DQM,Asia/Muscat,Duqm International Airport,DQM,OM,POINT (57.64392817085982 19.502193249999998),367,http://www.omanairports.com/,OODQ,,,
+DWC,Asia/Dubai,Dubai World Central - Al Maktoum International Airport,DXB,AE,POINT (55.175278 24.918056),104,,OMDW,,,
+DXB,Asia/Dubai,Dubai Airport,DXB,AE,POINT (55.352917 25.248665),39,http://www.dubaiairport.com/dia/english/home/,OMDB,,,
+FAU,Asia/Muscat,Fahud,FAU,OM,POINT (56.481527723689126 22.35697855),538,,OOFD,,,
+JNJ,Asia/Muscat,Jaaluni,JNJ,OM,POINT (57.3083 19.4749),538,,OOJA,,,
+IQA,Asia/Baghdad,Al Asad Air Base,IQA,IQ,POINT (-68.53658 63.75175),45,,ORAA,,,
+OSE,Pacific/Port_Moresby,Omora,OSE,PG,POINT (147.08075878830908 -7.82732305),2536,,AYOM,,,
+ORI,America/Anchorage,Port Lions SPB,ORI,US,POINT (-152.84389 57.886112),36,,"",,,
+OSG,Pacific/Port_Moresby,Ossima,OSG,PG,POINT (141.33333 -2.966667),278,,AYZS,,,
+OTY,Pacific/Port_Moresby,Oria,OTY,PG,POINT (155.76666 -6.6),469,,"",,,
+OXO,Australia/Brisbane,Orientos,OXO,AU,POINT (141.33333 -27.666668),232,,"",,,
+BMX,America/Anchorage,Big Mountain,BMX,US,POINT (-155.2515943 59.3622374),646,,PABM,,,
+BRW,America/Anchorage,Wiley Post-Will Rogers Memorial Airport,BRW,US,POINT (-156.77500248341514 71.28620995),22,,PABR,,,
+BTI,America/Anchorage,Barter Island Airport,BTI,US,POINT (-143.58252540563527 70.1339763),22,,PABA,,,
+BTT,America/Anchorage,Bettles,BTT,US,POINT (-151.5282119 66.9157348),656,,PABT,,,
+BVU,America/Anchorage,Beluga,BVU,US,POINT (-151.048254 61.1731772),49,,PABG,,,
+CDB,America/Nome,Cold Bay Airport,CDB,US,POINT (-162.7198441 55.2014611),55,,PACD,,,
+CDV,America/Anchorage,Mudhole Smith Airport,CDV,US,POINT (-145.47370526084313 60.4916501),26,,PACV,,,
+CEM,America/Anchorage,Central,CEM,US,POINT (-144.7779019786591 65.5736598),885,,PACE,,,
+ADK,America/Adak,Adak Island Ns,ADK,US,POINT (-176.64473 51.88278),29,,PADK,,,
+ADQ,America/Anchorage,Kodiak Benny Benson State Airport,ADQ,US,POINT (-152.51297 57.755276),45,,PADQ,,,
+AKB,America/Adak,Atka,AKB,US,POINT (-174.2066819239687 52.222215250000005),29,,PAAK,,,
+ATU,America/Adak,Casco Cove,ATU,US,POINT (173.17278 52.825832),36,,PAAT,,,
+AXK,Asia/Aden,Ataq,AXK,YE,POINT (46.3 13.866667),2221,,OYAT,,,
+BET,America/Anchorage,Bethel Airport,BET,US,POINT (-161.84026194740966 60.78043015),111,,PABE,,,
+BFQ,America/Panama,Bahia Pinas,BFQ,PA,POINT (-78.166664 7.583333),551,,"",,,
+BIG,America/Anchorage,Intermediate Field,BIG,US,POINT (-145.73277 64.06778),1138,,PABI,,,
+BKC,America/Anchorage,Buckland Airport,BKC,US,POINT (-161.1492319 65.9815616),26,,PABL,,,
+CIK,America/Anchorage,Chalkyitsik,CIK,US,POINT (-143.7299015 66.6486145),518,,PACI,,,
+CTE,America/Panama,Carti,CTE,PA,POINT (-80.833336 8.833333),190,,"",,,
+CXF,America/Anchorage,Coldfoot,CXF,US,POINT (-150.20423999491425 67.25154445000001),1108,,PACX,,,
+KKH,America/Nome,Kongiganak Airport,KKH,US,POINT (-162.75 59.966667),30,,PADY,,,
+CYF,America/Nome,Chefornak Sea Plane Base,CYF,US,POINT (-164.2 60.216667),49,,PACK,,,
+CYT,America/Anchorage,Intermediate,CYT,US,POINT (-142.49445 60.08),19,,PACY,,,
+MPP,America/Panama,Mulatupo,MPP,PA,POINT (-77.86667 9),367,,"",,,
+CZF,America/Nome,Cape Romanzof,CZF,US,POINT (-166.04040401105107 61.7803453),383,,PACZ,,,
+MLL,America/Anchorage,Marshall Don Hunter Sr. Airport,MLL,US,POINT (-162.0320792 61.8658239),45,,PADM,,,
+PML,America/Anchorage,AFS,PML,US,POINT (-160.55833 56.005554),22,,PAAL,,,
+PTD,America/Anchorage,Port Alexander,PTD,US,POINT (-134.65 56.25),29,,PAAP,,,
+SCM,America/Anchorage,SPB,SCM,US,POINT (-165.59389 61.84639),0,,PACM,,,
+RDB,America/Anchorage,Red Dog,RDB,US,POINT (-163.66667 67.75),498,,PADG,,,
+DLG,America/Anchorage,Dillingham Airport,DLG,US,POINT (-158.5112028 59.0433568),75,,PADL,,,
+DRG,America/Nome,Deering Airport,DRG,US,POINT (-162.7661743 66.0685517),45,,PADE,,,
+EHM,America/Nome,Cape Newenham,EHM,US,POINT (-162.0625 58.6463889),288,,PAEH,,,
+EIL,America/Anchorage,Eielson AFB,FAI,US,POINT (-147.71666 64.85),423,,PAEI,,,
+ELE,America/Panama,El Real,ELE,PA,POINT (-77.833336 8.166667),65,,"",,,
+ELV,America/Juneau,Elfin Cove SPB,ELV,US,POINT (-136.31667 58.183334),1630,,PAEL,,,
+EMK,America/Nome,Emmonak Airport,EMK,US,POINT (-164.4944494 62.7772076),32,,PAEM,,,
+DUT,America/Nome,Unalaska Airport,DUT,US,POINT (-166.5415409 53.8966037),16,,PADU,,,
+EAA,America/Anchorage,Eagle,EAA,US,POINT (-141.14893514397033 64.77788825),895,,PAEG,,,
+EDF,America/Anchorage,Elmendorf AFB,ANC,US,POINT (-149.80818022420294 61.25323915),200,,PAED,,,
+EEK,America/Nome,Eek Airport,EEK,US,POINT (-162.04395780488488 60.21367395),32,,PAEE,,,
+JNU,America/Juneau,Juneau International Airport,JNU,US,POINT (-134.58019300175383 58.3566191),21,,PAJN,Juneau,,Alaska
+MCG,America/Anchorage,McGrath Airport,MCG,US,POINT (-155.6035548 62.9523309),223,,PAMC,,,
+MOU,America/Anchorage,Mountain Village Airport,MOU,US,POINT (-163.6843667 62.0944378),357,,PAMO,,,
+MCL,America/Anchorage,Mt Mckinley,MCL,US,POINT (-149.0064 63.875973),1437,,PAIN,,,
+MDO,America/Anchorage,Intermediate,MDO,US,POINT (-146.3 59.453056),26,,PAMD,,,
+MTM,America/Metlakatla,SPB,MTM,US,POINT (-131.58333 55.13333),0,https://www.fhwa.dot.gov/tribal/tribalprgm/govts/metlakatla.htm,PAMM,,,
+KWK,America/Nome,Kwigillingok Airport,KWK,US,POINT (-163.13333 59.833332),18,,PAGG,,,
+KLW,America/Sitka,Klawock Airport,KLW,US,POINT (-133.07405023974576 55.57910895),80,,PAKW,,,
+NIB,America/Anchorage,Nikolai,NIB,US,POINT (-154.3579666 63.0182542),472,,PAFS,,,
+WAA,America/Anchorage,Wales Airport,WAA,US,POINT (-168.09480332269186 65.62301604999999),29,,PAIW,,,
+ABL,America/Anchorage,Ambler Airport,ABL,US,POINT (-157.8536111 67.1058333),190,,PAFM,,,
+AGN,America/Juneau,Angoon,AGN,US,POINT (-134.58333 57.503887),0,,PAGN,,,
+AKK,America/Anchorage,Akhiok SPB,AKK,US,POINT (-154.16667 56.944443),0,,PAKH,,,
+UTO,America/Anchorage,Indian Mountain AFS,UTO,US,POINT (-153.70166 65.99333),1273,,PAIM,,,
+KGK,America/Anchorage,New Koliganek,KGK,US,POINT (-157.23334 59.8),269,,PAJZ,,,
+KDK,America/Anchorage,Municipal,ADQ,US,POINT (-152.37 57.80722),139,,PAKD,,,
+KPN,America/Nome,Kipnuk SPB,KPN,US,POINT (-164.05 59.933334),11,,PAKI,,,
+EGX,America/Anchorage,Egegik Airport,EGX,US,POINT (-157.3757513 58.1876085),36,,PAII,,,
+LKK,America/Anchorage,Kulik Lake,LKK,US,POINT (-158.83333 59.816666),717,,PAKL,,,
+FAI,America/Anchorage,Fairbanks International Airport,FAI,US,POINT (-147.86784231862563 64.81761),442,,PAFA,,,
+FBK,America/Anchorage,Ft Wainwright,FAI,US,POINT (-147.7 64.833336),429,,PAFB,,,
+FWL,America/Anchorage,Farewell,FWL,US,POINT (-153.89687510043274 62.50177185),1492,,PAFW,,,
+UUK,America/Anchorage,Kuparuk,UUK,US,POINT (-148.91667 70.416664),67,,PAKU,,,
+GAL,America/Anchorage,Edward G. Pitka Sr. Airport,GAL,US,POINT (-156.9332819814526 64.73703425),141,,PAGA,,,
+GBH,America/Anchorage,Galbraith Lake,GBH,US,POINT (-149.49 68.4788889),2634,,PAGB,,,
+HNS,America/Juneau,Haines Municipal Airport,HNS,US,POINT (-135.51889 59.245834),55,,PAHN,,,
+KLN,America/Anchorage,Larsen SPB,KLN,US,POINT (-154 57.533333),87,,PALB,,,
+KLG,America/Anchorage,Kalskag Municipal Airport,KLG,US,POINT (-160.3465 61.53258),55,,PALG,,,
+HUS,America/Anchorage,Hughes Municipal Airport,HUS,US,POINT (-154.26334 66.04056),62,,PAHU,,,
+KMO,America/Anchorage,Manokotak SPB,KMO,US,POINT (-159.03583 58.984444),100,,PAMB,,,
+HYG,America/Sitka,Hydaburg Sea Plane Base,HYG,US,POINT (-132.82666 55.20667),39,,PAHY,,,
+IKO,America/Anchorage,Nikolski AFS,IKO,US,POINT (-168.85 52.941666),52,,PAKO,,,
+HNH,America/Juneau,Hoonah Airport,HNH,US,POINT (-135.4118093 58.0977585),19,,PAOH,,,
+MYU,America/Anchorage,Ellis Field,MYU,US,POINT (-166.26805 60.37278),65,,PAMY,,,
+MXY,America/Anchorage,Mccarthy,MXY,US,POINT (-142.897613 61.4394256),1496,,PAMX,,,
+NNL,America/Anchorage,Nondalton,NNL,US,POINT (-154.8394444 59.9788889),469,,PANO,,,
+NUL,America/Anchorage,Nulato Airport,NUL,US,POINT (-158.0722359 64.7312131),347,,PANU,,,
+OBU,America/Anchorage,Kobuk/Wien Airport,OBU,US,POINT (-156.8861424 66.910468),101,,PAOB,,,
+PCA,America/Anchorage,Portage Creek,PCA,US,POINT (-157.715863 58.9058958),95,,PAOC,,,
+UNK,America/Anchorage,Unalakleet Airport,UNK,US,POINT (-160.8010690245273 63.890888849999996),27,,PAUN,,,
+PIP,America/Anchorage,Pilot Point,PIP,US,POINT (-157.5713625 57.5788751),26,,PAPN,,,
+KNW,America/Anchorage,New Stuyahok,KNW,US,POINT (-157.3746663 59.4564459),364,,PANW,,,
+KPV,America/Anchorage,Perryville SPB,KPV,US,POINT (-159.145 55.906666),29,,PAPE,,,
+PPC,America/Anchorage,Prospect Creek,PPC,US,POINT (-150.64384646872813 66.81395885),1069,,PAPR,,,
+PSG,America/Anchorage,Petersburg Municipal Airport,PSG,US,POINT (-132.9425 56.80417),75,,PAPG,,,
+KWN,America/Anchorage,Kwinhagak Airport,KWN,US,POINT (-161.83333 59.761112),42,,PAQH,,,
+PKA,America/Anchorage,Napaskiak Sea Plane Base,PKA,US,POINT (-161.75806 60.710835),0,,PAPK,,,
+SHH,America/Anchorage,Shishmaref Airport,SHH,US,POINT (-166.09094133387003 66.24925765),32,,PASH,,,
+SNP,America/Anchorage,Saint Paul Island Airport,SNP,US,POINT (-170.22192467527617 57.1674267),39,,PASN,,,
+ANC,America/Anchorage,Ted Stevens Anchorage International Airport,ANC,US,POINT (-149.99789189730433 61.18103525),62,,PANC,,,
+ANI,America/Anchorage,Aniak Airport,ANI,US,POINT (-159.5427778 61.5813889),49,,PANI,,,
+ANN,America/Metlakatla,Annette Island,ANN,US,POINT (-131.5646264739308 55.0415764),78,,PANT,,,
+ANV,America/Anchorage,Anvik Airport,ANV,US,POINT (-160.1932999 62.6451092),265,,PANV,,,
+ARC,America/Anchorage,Arctic Village,ARC,US,POINT (-145.575639 68.1156573),2303,,PARC,,,
+ATK,America/Anchorage,Atqasuk Edward Burnell Sr. Memorial Airport,ATK,US,POINT (-157.33333 70.5),111,,PATQ,,,
+TAL,America/Anchorage,Ralph Calhoun,TAL,US,POINT (-152.10806 65.175),236,,PATA,,,
+TNC,America/Anchorage,Tin City Afs,TNC,US,POINT (-167.91888 65.56389),271,,PATC,,,
+AUK,America/Nome,Alakanuk Airport,AUK,US,POINT (-164.61084 62.689167),0,,PAUK,,,
+TOG,America/Anchorage,Togiak Village,TOG,US,POINT (-160.38222 59.056667),21,,PATG,,,
+RSH,America/Anchorage,Russian SPB,RSH,US,POINT (-161.31917 61.783054),49,,PARS,,,
+TLJ,America/Anchorage,Tatalina AFS,TLJ,US,POINT (-155.96806 62.885277),964,,PATL,,,
+UMT,America/Anchorage,Umiat,UMT,US,POINT (-152.33333 69.416664),267,,PAUM,,,
+SIT,America/Sitka,Sitka Airport,SIT,US,POINT (-135.23334 57.04861),55,,PASI,,,
+ENN,America/Anchorage,Municipal,ENN,US,POINT (-149.11667 64.566666),351,,PANN,,,
+FNR,America/Juneau,SPB,FNR,US,POINT (-134.58333 58.333332),114,,PANR,,,
+SKW,America/Anchorage,Intermediate,SKW,US,POINT (-151.18861 61.96583),121,,PASW,,,
+TLA,America/Anchorage,Teller Airport,TLA,US,POINT (-166.33930313262823 65.24050875),294,,PATE,,,
+SVW,America/Anchorage,Sparrevohn AFS,SVW,US,POINT (-155.57222 61.0975),1430,,PASV,,,
+WNA,America/Anchorage,Napakiak Sea Plane Base,WNA,US,POINT (-162.11667 60.7),0,,PANA,,,
+WLK,America/Anchorage,Selawik Airport,WLK,US,POINT (-159.9946695 66.6003169),26,,PASK,,,
+EMI,Pacific/Port_Moresby,Emirau,EMI,PG,POINT (149.96822611350206 -1.65217065),173,,AYEE,,,
+ERE,Pacific/Port_Moresby,Erave,ERE,PG,POINT (143.900818885788 -6.60649775),3605,,AYEV,,,
+KVC,America/Nome,King Cove,KVC,US,POINT (-162.31334 55.055),155,,PAVC,,,
+ESA,Pacific/Port_Moresby,Esa'Ala,ESA,PG,POINT (150.81667 -9.733333),0,,"",,,
+GMI,Pacific/Port_Moresby,Gasmata Island,GMI,PG,POINT (150.33274406425977 -6.2709086),32,,AYGT,,,
+GOE,Pacific/Port_Moresby,Gonalia,GOE,PG,POINT (151.85 -5.366667),3146,,AYGL,,,
+KVL,America/Nome,Kivalina Airport,KVL,US,POINT (-164.561402 67.7354927),13,,PAVL,,,
+GVI,Pacific/Port_Moresby,Green River,GVI,PG,POINT (141.15 -3.966667),173,,AYGV,,,
+HYF,Pacific/Port_Moresby,Hayfields,HYF,PG,POINT (143.05 -3.633333),823,,AYHF,,,
+IIS,Pacific/Port_Moresby,Nissan Island,IIS,PG,POINT (154.34166 -4.333333),0,,AYIA,,,
+JAQ,Pacific/Port_Moresby,Jacquinot Bay,JAQ,PG,POINT (151.51666 -5.6),0,,AYJB,,,
+NCN,America/Anchorage,New Chenega,NCN,US,POINT (-147.9963558 60.0790937),0,,PFCB,,,
+KUK,America/Nome,Kasigluk Airport,KUK,US,POINT (-162.52453842216684 60.8723835),48,,PFKA,,,
+KOT,America/Nome,Kotlik Airport,KOT,US,POINT (-163.5332323376074 63.030162849999996),15,,PFKO,,,
+PCO,America/Mazatlan,Punta Colorada,PCO,MX,POINT (-109.5 23.583332),0,,MMPL,,,
+KTS,America/Anchorage,Brevig Mission Airport,KTS,US,POINT (-166.470379 65.331951),38,,PFKT,,,
+TKJ,America/Anchorage,Tok,TKJ,US,POINT (-143 63.3),1639,,PFTO,,,
+KYU,America/Anchorage,Koyukuk Airport,KYU,US,POINT (-157.7177478964701 64.87707825),149,,PFKU,,,
+KNK,America/Anchorage,Kokhanok Airport,KNK,US,POINT (-154.7967494 59.4348297),115,,PFKK,,,
+PDI,Pacific/Port_Moresby,Pindiu,PDI,PG,POINT (147.58333 -6.5),2811,,AYPD,,,
+AET,America/Anchorage,Allakaket,AET,US,POINT (-152.62144819086524 66.55193399999999),439,,PFAL,,,
+KWT,America/Anchorage,Kwethluk Airport,KWT,US,POINT (-161.4412536 60.7931676),25,,PFKW,,,
+TAJ,Pacific/Port_Moresby,Tadji,ATP,PG,POINT (142.43104149875361 -3.19791675),33,,AYTJ,,,
+KII,Pacific/Port_Moresby,Kibuli,KII,PG,POINT (142.69528 -9.016389),54,,AYLI,,,
+AIN,America/Anchorage,Wainwright,AIN,US,POINT (-160.0150279490063 70.63790295000001),22,,PAWI,,,
+AKG,Pacific/Port_Moresby,Anguganak,AKG,PG,POINT (142.01666 -3.633333),918,,AYGU,,,
+AKI,America/Anchorage,Akiak,AKI,US,POINT (-161.2268225 60.9052437),62,,PFAK,,,
+AWB,Pacific/Port_Moresby,Awaba Airport,AWB,PG,POINT (142.75 -8.016667),0,,AYAW,Awaba,,Western Province
+BAA,Pacific/Port_Moresby,Bialla,BAA,PG,POINT (151.00962156530997 -5.3315012500000005),59,,AYBL,,,
+CLP,America/Anchorage,Clarks Point,CLP,US,POINT (-158.5299892 58.8366014),39,,PFCL,,,
+KXR,Pacific/Port_Moresby,Karoola,KXR,PG,POINT (154.58333 -5.15),52,,"",,,
+CVB,Pacific/Port_Moresby,Chungribu,CVB,PG,POINT (144.7149963 -4.8066201),101,,AYCB,,,
+PEC,America/Anchorage,Pelican SPB,PEC,US,POINT (-136.23334 57.95),0,,PEC,,,
+SKK,America/Anchorage,Shaktoolik Airport,SKK,US,POINT (-161.13889 64.324165),29,,PFSH,,,
+SGK,Pacific/Port_Moresby,Sangapi,SGK,PG,POINT (144.76666 -5.083333),193,,AYSK,,,
+VAK,America/Nome,Chevak Airport,VAK,US,POINT (-165.59992091200826 61.54164765),78,,PAVA,,,
+ELI,America/Nome,Elim Airport,ELI,US,POINT (-162.2702575 64.6187457),101,,PFEL,,,
+WRG,America/Anchorage,Wrangell Airport,WRG,US,POINT (-132.36889739256793 56.4839528),36,,PAWG,,,
+YAK,America/Yakutat,Yakutat Airport,YAK,US,POINT (-139.64408083356284 59.500813550000004),19,,PAYA,,,
+LMI,Pacific/Port_Moresby,Lumi,LMI,PG,POINT (142.0399482961893 -3.4765865),1750,,AYLU,,,
+LMY,Pacific/Port_Moresby,Lake Murray,LMY,PG,POINT (141.36667 -6.833333),52,,AYLM,,,
+BKH,Pacific/Honolulu,Barking Sands PMRF,BKH,US,POINT (-159.71666 21.966667),0,,PHBK,,,
+LUP,Pacific/Honolulu,Kalaupapa,LUP,US,POINT (-156.9741246297112 21.21115355),42,,PHLU,,,
+TFM,Pacific/Port_Moresby,Telefomin,TFM,PG,POINT (141.63333 -5.183333),4950,,AYTE,,,
+ENT,Pacific/Majuro,Enewetak Island,ENT,MH,POINT (162.25 11.5),0,,PKMA,,,
+UKU,Pacific/Port_Moresby,Nuku,UKU,PG,POINT (142.46666 -3.683333),870,,AYNU,,,
+MDY,Pacific/Midway,Sand Island Field,MDY,UM,POINT (-177.38333 28.2),49,,PMDY,,,
+JRF,Pacific/Honolulu,Kalaeloa,JRF,US,POINT (-158.07260091830352 21.30863315),30,http://hawaii.gov/hnl/airport-information/kalaeloa-airport-jrf,PHJR,,,
+KOA,Pacific/Honolulu,Kona International Airport at Keahole,KOA,US,POINT (-156.0422959812206 19.743906),47,,PHKO,,,
+TFI,Pacific/Port_Moresby,Tufi,TFI,PG,POINT (149.31981992421777 -9.075992800000002),85,,AYTU,,,
+TLO,Pacific/Port_Moresby,Tol,TLO,PG,POINT (152.0101551072929 -4.9809364),49,,AYXO,,,
+PGE,Pacific/Port_Moresby,Yegepa,PGE,PG,POINT (146.1560903035904 -7.134069050000001),4163,,"",,,
+PGM,America/Anchorage,Port Graham,PGM,US,POINT (-151.82866522036903 59.347423),39,,PGM,,,
+OPU,Pacific/Port_Moresby,Balimo,OPU,PG,POINT (142.9373403906789 -8.050463350000001),49,,AYBM,,,
+PLE,Pacific/Port_Moresby,Paiela,PLE,PG,POINT (142.98334 -5.383333),5951,,AYPB,,,
+PIZ,America/Anchorage,Dew Station Airport,PIZ,US,POINT (-163.16667 69.75),0,,PPIZ,,,
+PPX,Pacific/Port_Moresby,Param,PPX,PG,POINT (149.59166 -9.995833),3700,,"",,,
+WPM,Pacific/Port_Moresby,Wipim,WPM,PG,POINT (143.03334 -8.816667),118,,AYXP,,,
+VMU,Pacific/Port_Moresby,Baimuru,VMU,PG,POINT (144.82143109558854 -7.4972747),55,,AYBA,,,
+KAI,America/Guyana,Kaieteur,KAI,GY,POINT (-60.619446 5.883333),1520,,SYKA,,,
+TNQ,Pacific/Kiritimati,Teraina,TNQ,KI,POINT (-160.33333 4.7),30,,PLWN,,,
+LZN,Asia/Taipei,Matsu Nangan Airport,LZN,TW,POINT (119.95859825495418 26.160281349999998),354,http://www.tsa.gov.tw/tsaLZN/zh/home.aspx,RCFG,,,
+MZG,Asia/Taipei,Magong Airport,MZG,TW,POINT (119.62900903089835 23.56878795),85,http://www.mkport.gov.tw/english/,RCQC,,,
+MUS,Asia/Tokyo,Marcus Island,MUS,JP,POINT (153.97899985266764 24.28961385),26,,RJAM,,,
+RAA,Pacific/Port_Moresby,Rakanda,RAA,PG,POINT (152.16667 -4.5),38,,"",,,
+OLK,America/Asuncion,Fuerte Olimpo,OLK,PY,POINT (-57.883057 -21.996944),305,,SGOL,,,
+PCJ,America/Asuncion,Puerto La Victoria,PCJ,PY,POINT (-57.92861 -22.268888),252,,SGLV,,,
+AWK,Pacific/Wake,Wake Island,AWK,UM,POINT (166.633616987325 19.28335215),19,,PWAK,,,
+BFA,America/Asuncion,Bahia Negra,BFA,PY,POINT (-58.17057022420163 -20.2311349),242,,SGBN,,,
+HCN,Asia/Taipei,Hengchun,HCN,TW,POINT (120.833336 21.933332),291,,RCKW,,,
+HUN,Asia/Taipei,Hualien Airport,HUN,TW,POINT (121.61998199610741 24.02372475),88,http://www.hulairport.gov.tw/,RCYU,Hualien City,Hualien County,
+IWO,Asia/Tokyo,Iwo Jima Airbase,IWO,JP,POINT (141.31667 24.783333),347,,RJAW,,,
+PUA,Pacific/Port_Moresby,Puas,PUA,PG,POINT (150.23334 -2.4),29,,,Puas Mission,,New Ireland
+PUI,Pacific/Port_Moresby,Pureni,PUI,PG,POINT (142.83333 -5.833333),5446,,"",,,
+PWR,America/Anchorage,Port Walter,PWR,US,POINT (-134.6501593 56.3814011),0,,PWR,,,
+RDV,America/Anchorage,Red Devil,RDV,US,POINT (-157.3564192014307 61.78976215),137,,RDV,,,
+RAW,Pacific/Port_Moresby,Arawa,RAW,PG,POINT (155.5712068948912 -6.22072885),22,,"",,,
+RAX,Pacific/Port_Moresby,Oram,RAX,PG,POINT (148.0483454335737 -9.63285215),3467,,AYYO,,,
+RBP,Pacific/Port_Moresby,Rabaraba,RBP,PG,POINT (149.83119998404325 -9.969589150000001),59,,AYRE,,,
+RGE,Pacific/Port_Moresby,Porgera,RGE,PG,POINT (143.15 -5.416667),5780,,"",,,
+RHR,Asia/Dubai,Al Hamra SPB,RHR,AE,POINT (55.778 25.691),0,,"",,,
+RBJ,Asia/Tokyo,Rebun,RBJ,JP,POINT (141.03334 45.38333),738,,RJCR,,,
+KUM,Asia/Tokyo,Yakushima Airport,KUM,JP,POINT (130.6567876840263 30.38751365),124,,RJFC,,,
+NGS,Asia/Tokyo,Nagasaki Airport,NGS,JP,POINT (129.91545060447868 32.917846),22,,RJFU,,,
+OKE,Asia/Tokyo,Okino Erabu,OKE,JP,POINT (128.70555 27.431667),88,,RJKB,,,
+OKI,Asia/Tokyo,Oki Island,OKI,JP,POINT (133.31667 36.166668),0,,RJNO,,,
+AOJ,Asia/Tokyo,Aomori Airport,AOJ,JP,POINT (140.689686 40.7340525),652,,RJSA,,,
+ASJ,Asia/Tokyo,Amami Airport,ASJ,JP,POINT (129.7122505 28.431206),29,,RJKA,,,
+CHN,Asia/Seoul,Jeonju,CHN,KR,POINT (127.933334 37.016945),249,,RKJU,,,
+HAC,Asia/Tokyo,Hachijo Jima Airport,HAC,JP,POINT (139.78122 33.117947),387,,RJTH,,,
+KKX,Asia/Tokyo,Kikaiga Shima,KKX,JP,POINT (129.92805 28.321388),21,,RJKI,,,
+KAG,Asia/Seoul,Gangneung,KAG,KR,POINT (128.953031 37.763768),35,,RKNN,,,
+MMY,Asia/Tokyo,Miyako Airport,MMY,JP,POINT (125.2948325 24.7823495),134,,ROMY,,,
+MMD,Asia/Tokyo,Maridor,MMD,JP,POINT (131.24722 25.841389),22,,ROMD,,,
+RSU,Asia/Seoul,Yeosu Airport,RSU,KR,POINT (127.61618910716163 34.84243345),32,,RKJY,,,
+SHO,Africa/Mbabane,King Mswati III International Airport,MTS,SZ,POINT (128.6 38.13333),164,http://www.eswacaa.co.sz/airports/kingmswatiIII/,RKND,,,
+KTD,Asia/Tokyo,Kitadaito,KTD,JP,POINT (131.32580819133835 25.94475485),80,,RORK,,,
+AGJ,Asia/Tokyo,Aguni,AGJ,JP,POINT (127.23985985060742 26.59300295),32,,RORA,,,
+RLP,Australia/Brisbane,Rosella Plains,RLP,AU,POINT (145 -18),1855,,"",,,
+CJU,Asia/Seoul,Jeju International Airport,CJU,KR,POINT (126.4916441196128 33.50707105),62,,RKPC,,,
+HTR,Asia/Tokyo,Hateruma,HTR,JP,POINT (123.80524134249 24.059665950000003),45,,RORH,,,
+ICN,Asia/Seoul,Incheon International Airport,SEL,KR,POINT (126.44164409450852 37.4634169),55,,RKSI,,,
+IEJ,Asia/Tokyo,Iejima,IEJ,JP,POINT (127.786988 26.722637),285,,RORE,,,
+RMP,America/Anchorage,Rampart,RMP,US,POINT (-150.1391024582195 65.50719735),236,,"",,,
+SHI,Asia/Tokyo,Shimojishima,SHI,JP,POINT (125.1468439713185 24.824514399999998),52,,RORS,,,
+RKY,Australia/Brisbane,Rokeby,RKY,AU,POINT (143.43333 -13.166667),200,,"",,,
+RNR,Pacific/Port_Moresby,Robinson River,RNR,PG,POINT (147.75 -10.133333),0,,"",,,
+USU,Asia/Manila,Busuanga Airport,USU,PH,POINT (120.166664 12.1),148,,RPVV,,,
+LPS,America/Los_Angeles,Lopez Island,LPS,US,POINT (-122.937472 48.4845639),68,,S31,,,
+RRM,Africa/Maputo,Marromeu,RRM,MZ,POINT (35.93474297584764 -18.291566),16,,"",,,
+RPV,Australia/Darwin,Roper Valley,RPV,AU,POINT (134.03334 -14.966667),249,,"",,,
+RUU,Pacific/Port_Moresby,Ruti,RUU,PG,POINT (144.15 -5.183333),1236,,"",,,
+RAF,America/Argentina/Cordoba,Rafaela,RAF,AR,POINT (34.85 29.6),2431,,SAFR,,,
+SAM,Pacific/Port_Moresby,Salamo,SAM,PG,POINT (150.80833 -9.65),32,,"",,,
+CVH,America/Argentina/Salta,Caviahue,CVH,AR,POINT (-71 -37.916668),5787,,SAHE,,,
+FTE,America/Argentina/Rio_Gallegos,El Calafate Airport,FTE,AR,POINT (-72.05064458669506 -50.28083645),620,http://www.aeropuertoelcalafate.com/en/,SAWC,,,
+IGR,America/Argentina/Cordoba,Cataratas del Iguazu International Airport,IGR,AR,POINT (-54.47470721141072 -25.736028150000003),862,http://www.aa2000.com.ar/iguazu,SARI,,,
+LHS,America/Argentina/Rio_Gallegos,Las Heras,LHS,AR,POINT (-68.816666 -32.85),1082,,SAVH,,,
+USH,America/Argentina/Ushuaia,Malvinas Argentinas International Airport,USH,AR,POINT (-68.31245 -54.839348),102,,SAWH,Ushuaia,,Tierra del Fuego Province
+MDQ,America/Argentina/Buenos_Aires,Mar Del Plata Airport,MDQ,AR,POINT (-57.572224 -37.934723),59,,SAZM,,,
+RGL,America/Argentina/Rio_Gallegos,Rio Gallegos Internacional Airport,RGL,AR,POINT (-69.30470368936014 -51.6078149),29,,SAWG,,,
+AFL,America/Cuiaba,Alta Floresta Airport,AFL,BR,POINT (-56.10603812089458 -9.866163),790,,SBAT,,,
+CDJ,America/Belem,Conceicao Do Araguaia,CDJ,BR,POINT (-49.283333 -8.233333),518,,SBAA,,,
+CKS,America/Belem,Carajas Airport,CKS,BR,POINT (-49.99774268663904 -6.11655575),2063,http://www.infraero.gov.br/index.php/us/airports/para/carajas-airport.html,SBCJ,,,
+MAO,America/Manaus,Eduardo Gomes International Airport,MAO,BR,POINT (-60.04575303314657 -3.03553825),259,https://www4.infraero.gov.br/aeroportos/aeroporto-internacional-de-manaus-eduardo-gomes/,SBEG,,,
+CMG,America/Campo_Grande,Corumba Internacional Airport,CMG,BR,POINT (-57.66975905679873 -19.0125785),485,,SBCR,,,
+JCR,America/Santarem,Jacareacanga,JCR,BR,POINT (-57.533333 -5.983333),557,,SBEK,,,
+MAB,America/Belem,Maraba Airport,MAB,BR,POINT (-49.166668 -5.366667),334,,SBMA,,,
+OYK,America/Belem,Oiapoque,OYK,BR,POINT (-51.795727219974765 3.8562182),36,,SBOI,,,
+PMW,America/Araguaina,Palmas Airport,PMW,BR,POINT (-48.35278 -10.241667),757,,SBPJ,,,
+ARI,America/Santiago,Chacalluta Airport,ARI,CL,POINT (-70.34121844263257 -18.352784200000002),127,,SCAR,Arica,Provincia de Arica,Arica y Parinacota
+BBA,America/Santiago,Teniente Vidal Airport,BBA,CL,POINT (-71.695 -45.916668),1696,,SCBA,,,
+BVH,America/Porto_Velho,Vilhena Airport,BVH,BR,POINT (-60.09875397255124 -12.6940825),1922,,SBVH,,,
+DPB,America/Santiago,Pampa Guanaco Airport,DPB,CL,POINT (-68.808333 -54.05),505,,SCBI,,,
+MHC,America/Santiago,Mocopulli Airport,WCA,CL,POINT (-73.71585344124517 -42.341692),544,,SCPQ,,,
+OIA,America/Belem,Ourilandia,OIA,BR,POINT (-51.047096751155294 -6.76392515),856,,SDOW,,,
+ATF,America/Guayaquil,Chachoan,ATF,EC,POINT (-78.7 -1.083333),10603,,SEAM,San Miguel de Salcedo,,Cotopaxi
+CNR,America/Santiago,Chanaral,CNR,CL,POINT (-70.60733997511832 -26.33254),104,,SCRA,,,
+CPP,America/Santiago,Coposa Airport,CPP,CL,POINT (-68.683333 -20.75),12391,,SCKP,,,
+PUQ,America/Santiago,Pres Ibanez Airport,PUQ,CL,POINT (-70.84307 -53.005356),65,,SCCI,,,
+SCL,America/Santiago,Arturo Merino Benitez Airport,SCL,CL,POINT (-70.79382 -33.397175),1610,http://www.aeropuertosantiago.cl/ingles/index.php,SCEL,,,
+PZS,America/Santiago,Temuco Maquehue Airport,PZS,CL,POINT (-72.62841243018514 -38.7670058),278,,SCTC,,,
+SDI,Pacific/Port_Moresby,Saidor,SDI,PG,POINT (146.5 -5.55),0,,AYSD,,,
+LVR,America/Cuiaba,Mun. Do Bom Futuro,LVR,BR,POINT (-55.95025 -13.037861),1312,,SILC,,,
+PRE,America/Bogota,Pore,PRE,CO,POINT (-71.983333 5.733333),902,,"",,,
+PSY,Atlantic/Stanley,Port Stanley,PSY,FK,POINT (-57.85 -51.7),62,,SFAL,,,
+ACL,America/Bogota,Aguaclara,ACL,CO,POINT (-72.9919234 4.7470509),1036,,"",Sabanalarga,,Casanare
+AYI,America/Bogota,Yari,AYI,CO,POINT (-72.333336 -0.333333),485,,"",,,
+CFO,America/Cuiaba,Confreza,CFO,BR,POINT (-51.566666 -10.633333),751,,SJHG,,,
+PJC,America/Asuncion,Pedro Juan Caballero,PJC,PY,POINT (-55.666668 -22.5),2017,,SGPJ,,,
+NPR,America/Santarem,Novo Progresso Municipal,NPR,BR,POINT (-55.400833 -7.125833),751,,SJNP,,,
+ECO,America/Bogota,El Encanto,ECO,CO,POINT (-73.23333 -1.616667),554,,"",,,
+ESG,America/Asuncion,Mariscal Estigarribia,ESG,PY,POINT (-60.62174247722405 -22.047942499999998),518,,SGME,,,
+PCC,America/Bogota,Puerto Rico,PCC,CO,POINT (-75.15 1.9),793,,"",,,
+PTZ,America/Guayaquil,Pastaza,PTZ,EC,POINT (-77 -2),1112,,SESM,,,
+SFU,Pacific/Port_Moresby,Safia,SFU,PG,POINT (148.66667 -9.666667),994,,AYSF,,,
+SIZ,Pacific/Port_Moresby,Sissano,SIZ,PG,POINT (142.05 -3),36,,AYZN,,,
+SQF,America/Bogota,Solano,SQF,CO,POINT (-66.96667 2),374,,"",,,
+JUA,America/Cuiaba,Juara,JUA,BR,POINT (-57.466667 -11.333333),870,,SIZX,,,
+NBB,America/Bogota,Barrancominas,NBB,CO,POINT (-70.333336 3.333333),580,,SKBM,,,
+MFB,America/Bogota,Monfort,MFB,CO,POINT (-69.7486638 0.6228313),472,,"",,,
+MHF,America/Bogota,Morichal,MHF,CO,POINT (-70.583336 2.15),672,,"",,,
+PUU,America/Bogota,Puerto Asis Airport,PUU,CO,POINT (-76.50086995370918 0.5056368),816,,SKAS,,,
+SOH,America/Bogota,Solita,SOH,CO,POINT (-71.76667 9.2),52,,"",,,
+ACD,America/Bogota,Acandi,ACD,CO,POINT (-77.3 8.516667),72,,SKAD,,,
+ACR,America/Bogota,Araracuara,ACR,CO,POINT (-72.3 -0.383333),482,,SKAC,,,
+ARF,America/Bogota,Acaricuara,ARF,CO,POINT (-70.133333 0.533333),593,,"",,,
+BHF,America/Bogota,Bahia Cupica,BHF,CO,POINT (-77.4946873 6.6940746),36,,"",,,
+CCO,America/Bogota,Carimagua,CCO,CO,POINT (-71.3364 4.56417),544,,SKCI,,,
+CPB,America/Bogota,Capurgana,CPB,CO,POINT (-77.35012186981567 8.632427),95,,SKCA,,,
+CQT,America/Bogota,Caquetania,CQT,CO,POINT (-74.166664 1.616667),807,,"",,,
+CSR,America/Bogota,Casuarito,CSR,CO,POINT (-68.133333 5.833333),242,,"",,,
+CUO,America/Bogota,Caruru,CUO,CO,POINT (-71.23333 1.033333),639,,SKCR,,,
+ECR,America/Bogota,El Charco,ECR,CO,POINT (-78 2.5),75,,SKEH,,,
+GPI,America/Bogota,Guapi Airport,GPI,CO,POINT (-78.34167 2.5),0,,SKGP,,,
+HRR,America/Bogota,Herrera,HRR,CO,POINT (-75.85 3.216667),8139,,"",,,
+NAR,America/Bogota,Nare,NAR,CO,POINT (-74.5906 6.21002),416,,SKPN,,,
+NCI,America/Bogota,Necocli,NCI,CO,POINT (-76.77978960044452 8.45545345),45,,SKNC,,,
+ASC,America/La_Paz,Ascension,ASC,BO,POINT (-63.15 -15.916667),800,,SLAS,,,
+AYG,America/Bogota,Yaguara,AYG,CO,POINT (-73.933334 1.533333),770,,SKYA,,,
+LPD,America/Bogota,La Pedrera,LPD,CO,POINT (-69.71667 -1.3),216,,SKLP,,,
+MVP,America/Bogota,Mitu,MVP,CO,POINT (-70.05 1.133333),751,,SKMU,,,
+PCR,America/Bogota,Puerto Carreno Airport,PCR,CO,POINT (-67.63333 6.183333),134,,SKPC,,,
+PAL,America/Bogota,Palanquero,PAL,CO,POINT (-74.65 52.15),990,,SKPQ,,,
+PZA,America/Bogota,Casanare,PZA,CO,POINT (-71.885 5.877778),826,,SKPZ,,,
+MGD,America/La_Paz,Magdalena,MGD,BO,POINT (-64.124725 -13.325278),459,,SLMG,,,
+OEM,America/Paramaribo,Vincent Fayks,OEM,SR,POINT (-55.446192118676834 3.3444506),511,,SMPA,,,
+ABN,America/Paramaribo,Albina,ABN,SR,POINT (-54.083332 5.5),108,,SMBN,,,
+BVK,America/La_Paz,Huacaraje,BVK,BO,POINT (-63.75 -13.55),482,,SLHJ,,,
+CCA,America/Chicago,Chaffee AFB,CCA,US,POINT (-94.3 35.316666),482,,SLCH,,,
+CEP,America/La_Paz,Concepcion,CEP,BO,POINT (-62.083332 -16.233334),1696,,SLCP,,,
+SJB,America/La_Paz,San Joaquin,SJB,BO,POINT (-64.8 -13.083333),449,,SLJO,,,
+DRJ,America/Paramaribo,Drietabbetje,DRJ,SR,POINT (-54.672780800765764 4.1114213),242,,SMDA,,,
+RDC,America/Belem,Redencao,RDC,BR,POINT (-49.97954959577524 -8.03127325),603,,SNDC,,,
+PUR,America/La_Paz,Puerto Rico,PUR,BO,POINT (-67.52 -11.1125),600,,SLPR,,,
+SBL,America/La_Paz,Yacuma,SBL,BO,POINT (-65.45 -13.716667),495,,SLSA,,,
+SNM,America/La_Paz,San Ignacio De M,SNM,BO,POINT (-65.63556 -14.966389),541,,SLSM,,,
+SMH,Pacific/Port_Moresby,Sapmanga,SMH,PG,POINT (146.75 -6.083333),3241,,AYSP,,,
+SMP,Pacific/Port_Moresby,Stockholm,SMP,PG,POINT (151.96666 -4.566667),1978,,"",,,
+MPY,America/Cayenne,Maripasoula,MPY,GF,POINT (-54.039308904431564 3.65601315),328,,SOOA,,,
+ALD,America/Lima,Alerta,ALD,PE,POINT (-69.333336 -11.683333),859,,SPAR,,,
+GSI,Pacific/Guadalcanal,Guadalcanal,GSI,SB,POINT (160.2 -9.533333),272,,SOGS,,,
+GTA,Pacific/Guadalcanal,Gatokae Aerodrom,GTA,SB,POINT (158.18333 -8.766667),823,,AGOK,,,
+ITI,America/Sao_Paulo,Itambacuri,ITI,BR,POINT (-41.5 -18),1394,,SNYH,,,
+OBI,America/Santarem,Obidos,OBI,BR,POINT (-55.516666 -1.916667),95,,SNTI,,,
+SRV,America/Anchorage,Stony River,SRV,US,POINT (-156.5912304 61.7860128),134,,SRV,,,
+KCB,America/Paramaribo,Tepoe Airstrip,KCB,SR,POINT (-55.7151323 3.1557421),596,,SMTP,,,
+SQT,Pacific/Port_Moresby,China Straits Airstrip,SQT,PG,POINT (150.68333 -10.55),72,,AYCS,,,
+SRM,Australia/Brisbane,Sandringham,SRM,AU,POINT (139.06667 -24.05),278,,"",,,
+AAJ,America/Paramaribo,Cayana Airstrip,AAJ,SR,POINT (-55.5779688 3.8987445),278,,SMCA,Kajana,Boven Suriname,Sipaliwini
+APU,America/Sao_Paulo,Apucarana,APU,BR,POINT (-51.483334 -23.55),2408,,SSAP,,,
+JAE,America/New_York,Shumba Airport,CIX,PE,POINT (-84.424446 33.638058),994,,SPJE,,,
+CAJ,America/Caracas,Canaima,CAJ,VE,POINT (-62.85459148224869 6.2295804),1377,,SVCN,,,
+SSS,Pacific/Port_Moresby,Siassi,SSS,PG,POINT (147.81102083962213 -5.5971687),1194,,"",,,
+SUZ,Pacific/Port_Moresby,Suria,SUZ,PG,POINT (147.6 -9.133333),3385,,"",,,
+EOR,America/Caracas,El Dorado,EOR,VE,POINT (-61.88333 6.733333),515,,SVED,,,
+ICA,America/Caracas,Icabaru,ICA,VE,POINT (-61.7385793 4.3380481),1656,,SVIC,,,
+KAV,America/Caracas,Kavanayen,KAV,VE,POINT (-61.766666 5.666667),3900,,SVKA,,,
+PPH,America/Caracas,Peraitepuy,PPH,VE,POINT (-61.516666 4.583333),2916,,SVPX,,,
+PBV,America/Cuiaba,Porto Dos Gauchos,PBV,BR,POINT (-57.3333333 -11.5166667),807,,SWPG,,,
+PBX,America/Cuiaba,Porto Alegre Do Norte,PBX,BR,POINT (-51.6844371 -10.8612428),629,,SWPQ,,,
+JRN,America/Cuiaba,Juruena,JRN,BR,POINT (-58.49488557867951 -10.314160600000001),525,,SWJU,,,
+OPS,America/Cuiaba,Sinop Airport,OPS,BR,POINT (-55.585581084918076 -11.88507355),1240,,SBSI,,,
+URM,America/Caracas,Uriman,URM,VE,POINT (-62.75833 5.341667),1148,,SVUM,,,
+AIR,America/Cuiaba,Aripuana,AIR,BR,POINT (-59.38333 -10.25),1095,,SSOU,,,
+CCX,America/Cuiaba,Caceres,CCX,BR,POINT (-57.7 -16.066668),374,,SWKC,,,
+CQA,America/Cuiaba,Canarana Airport,CQA,BR,POINT (-52.26867717855606 -13.57509615),1325,,SWEK,,,
+LCB,America/Cuiaba,Pontes e Lacerda,LCB,BR,POINT (-59.99861 -13.013333),870,,SWBG,,,
+CQS,America/Porto_Velho,Costa Marques,CQS,BR,POINT (-64.25192287574623 -12.4249231),456,,SWCQ,,,
+SNV,America/Caracas,Santa Elena,SNV,VE,POINT (-61.11667 4.55),3011,,SVSE,,,
+SVS,America/Anchorage,Stevens Village,SVS,US,POINT (-149.05205269763286 66.0175314),321,,SVS,,,
+DMT,America/Cuiaba,Diamantino,DMT,BR,POINT (-56.5 -14.5),744,,SWDM,,,
+FBA,America/Manaus,Fonte Boa,FBA,BR,POINT (-66.08396647634501 -2.5323850500000002),150,,SWOB,,,
+GRP,America/Araguaina,Gurupi,GRP,BR,POINT (-49.216667 -11.666667),898,,SWGI,,,
+HUW,America/Manaus,Humaita,HUW,BR,POINT (-0.348669 53.583447),59,,SWHT,,,
+IDO,America/Araguaina,Rio,IDO,BR,POINT (-50.666668 -11.566667),649,,SWIY,,,
+JIA,America/Cuiaba,Juina,JIA,BR,POINT (-58.88333 -11.5),1069,,SWJN,,,
+SWE,Pacific/Port_Moresby,Siwea,SWE,PG,POINT (147.58245151900186 -6.2840761),5875,,AYEW,,,
+SWG,Pacific/Port_Moresby,Satwag,SWG,PG,POINT (147.27878072846525 -6.1394439),4248,,AYSW,,,
+SWR,Pacific/Port_Moresby,Silur,SWR,PG,POINT (153.05 -4.533333),282,,AYZI,,,
+STZ,America/Cuiaba,Confresa,STZ,BR,POINT (-50.45 -10.300278),583,,SWST,,,
+NAI,America/Guyana,Annai,NAI,GY,POINT (-59 3.75),446,,SYAN,,,
+LUB,America/Guyana,Lumid Pau,LUB,GY,POINT (-59.4332352 2.3936457),508,,SYLP,,,
+LTM,America/Guyana,Lethem,LTM,GY,POINT (-59.79003670007906 3.37211225),278,,SYLT,,,
+MYM,America/Guyana,Monkey Mountain,MYM,GY,POINT (-59.63333 4.6),1883,,SYMM,,,
+KRM,America/Guyana,Karanambo,KRM,GY,POINT (-59.316666 3.75),300,,SYKR,,,
+AHL,America/Guyana,Aishalton,AHL,GY,POINT (-59.31944770153805 2.4755665000000002),521,,SYAH,,,
+AZL,America/Cuiaba,Fazenda Tucunare Airport,AZL,BR,POINT (-58.866935 -13.465528),2020,,SWTU,,,
+KKG,America/Guyana,Konawaruk,KKG,GY,POINT (-59.816666 5.266667),230,,SYKZ,,,
+MHA,America/Guyana,Mahdia,MHA,GY,POINT (-59.14942234096078 5.27323),282,,SYMD,,,
+BGI,America/Barbados,Grantley Adams International Airport,BGI,BB,POINT (-59.48794597973022 13.077278799999998),167,http://www.gaia.bb/content/about-gaia-inc,TBPB,,,
+ORJ,America/Guyana,Orinduik,ORJ,GY,POINT (-60.03368460237346 4.72726475),1856,,SYOR,,,
+TDS,Pacific/Port_Moresby,Sasereme,TDS,PG,POINT (142.86649100752646 -7.6194099),121,,AYSS,,,
+TFB,Pacific/Port_Moresby,Tifalmin,TFB,PG,POINT (141.4191281251933 -5.11707885),4735,,AYTH,,,
+BMJ,America/Guyana,Baramita,BMJ,GY,POINT (-60 6.75),390,,SYBR,,,
+KAR,America/Guyana,Kamarang,KAR,GY,POINT (-60.6187376 5.8625858),1601,,SYKM,,,
+PRR,America/Guyana,Paruima,PRR,GY,POINT (-61.0588321 5.8159679),1624,,SYPR,,,
+KRG,America/Guyana,Karasabai,KRG,GY,POINT (-59.55413 4.0288204),731,,SYKS,,,
+KTO,America/Guyana,Kato,KTO,GY,POINT (-59.8351817 4.6480905),2299,,SYKT,,,
+TBA,Pacific/Port_Moresby,Tabibuga,TBA,PG,POINT (144.63333 -5.55),4400,,"",,,
+SKM,America/Guyana,Skeldon,SKM,GY,POINT (-57.1481892 5.8625547),19,,SYSK,,,
+SFG,America/Marigot,Esperance Airport,SFG,MF,POINT (-63.04889 18.100555),0,,TFFG,,,
+TBQ,Pacific/Port_Moresby,Tarabo,TBQ,PG,POINT (22.75 12.3),6100,,AYTR,,,
+DCF,America/Dominica,Canefield Airport,DOM,DM,POINT (-61.333332 15.5),1610,,TDCF,,,
+DOM,America/Dominica,Melville Hall Airport,DOM,DM,POINT (-61.302080403796325 15.546485449999999),72,,TDPD,,,
+GFO,America/Guyana,Bartica,GFO,GY,POINT (-58.583332 6.416667),127,,SYBT,,,
+TDB,Pacific/Port_Moresby,Tetabedi,TDB,PG,POINT (148.43333 -8.997222),3365,,AYTF,,,
+IMB,America/Guyana,Imbaimadai,IMB,GY,POINT (-60.29699298309782 5.70585585),1643,,SYIB,,,
+SXP,America/Anchorage,Sheldon Sea Plane Base,SXP,US,POINT (-164.83333 62.533333),0,,"",,,
+SYB,America/Anchorage,Seal Bay,SYB,US,POINT (-152.5 58.166668),1299,,"",,,
+SYF,America/Vancouver,Silva Bay,SYF,CA,POINT (-123.69722 49.15),0,,"",,,
+TCT,America/Anchorage,Takotna,TCT,US,POINT (-156.03323842451846 62.99175675),825,,PPCT,,,
+SXH,Pacific/Port_Moresby,Sehulea,SXH,PG,POINT (151.16207079487572 -9.96508625),22,,AYSL,,,
+NGD,America/Tortola,Captain Auguste George,NGD,VG,POINT (-64.3 18.716667),236,,TUPA,,,
+THW,Asia/Colombo,Harbour SPB,TRR,LK,POINT (81.23291 8.569151),0,,"",,,
+TIG,Pacific/Port_Moresby,Tingwon,TIG,PG,POINT (149.78334 -2.6),30,,"",,,
+TLP,Pacific/Port_Moresby,Tumolbil,TLP,PG,POINT (141.012953774115 -4.7744129),3590,,AYQL,,,
+TLT,America/Anchorage,Tuluksak Airport,TLT,US,POINT (-160.9660798 61.0985829),30,,TLT,,,
+ARE,America/Puerto_Rico,Arecibo,ARE,PR,POINT (-66.6742983331904 18.4506187),19,,TJAB,Bajadero,,Arecibo
+AUA,America/Aruba,Reina Beatrix International Airport,AUA,AW,POINT (-70.013885 12.502222),36,,TNCA,Oranjestad,,
+AXA,America/Anguilla,Clayton J. Lloyd International Airport,AXA,AI,POINT (-63.05608188224072 18.2054832),114,http://www.news.ai/ref/airport.html,TQPF,The Valley,,
+CRU,America/Grenada,Carriacou Island,CRU,GD,POINT (-61.471411871125355 12.476431),22,,TGPZ,,,
+TKL,America/Anchorage,Taku SPB,TKL,US,POINT (-134 58),0,,TKL,,,
+EIS,America/Tortola,Terrance B. Lettsome International Airport,EIS,VG,POINT (-64.53946733632488 18.4457823),26,http://www.bareboatsbvi.com/beef_island.html,TUPJ,,,
+TNW,America/Guayaquil,Jumandy,TNW,EC,POINT (-153.7112 62.666195),1234,http://www.dgac.gob.ec/tena/,SEJD,,,
+TOK,Pacific/Port_Moresby,Torokina,TOK,PG,POINT (155.33333 -6.233333),130,,"",,,
+TOV,America/Tortola,West End SPB,TOV,VG,POINT (-64.583336 18.45),0,,"",,,
+TSG,America/Anchorage,Intermediate,TSG,US,POINT (-143.5 63.35),1549,,TSG,,,
+TSI,Pacific/Port_Moresby,Tsili Tsili,TSI,PG,POINT (146.35 -6.85),500,,"",,,
+TUT,Pacific/Port_Moresby,Tauta,TUT,PG,POINT (145.56667 -5.5),4200,,"",,,
+MQJ,Asia/Srednekolymsk,Moma,MQJ,RU,POINT (143.25843906288407 66.4511768),613,,UEMA,,,
+UNI,America/St_Vincent,Union Island,UNI,VC,POINT (-61 13.5),16,,TVSU,,,
+BDA,Atlantic/Bermuda,L.F. Wade International Airport,BDA,BM,POINT (-64.66575513844553 32.3616236),19,http://www.bermudaairport.com/,TXKF,,,
+BQU,America/St_Vincent,J. F. Mitchell,BQU,VC,POINT (-61.261128891589536 12.98875915),29,,TVSB,,,
+TZO,Indian/Antananarivo,Tsimiroro,TZO,MG,POINT (45.015643 -18.345064),755,,"",,,
+CIW,America/St_Vincent,Canouan Island,CIW,VC,POINT (-61.316666 12.7),0,,TVSC,,,
+CMJ,Asia/Taipei,Chi Mei,CMJ,TW,POINT (119.416664 23.25),0,,RCCM,,,
+KVM,Asia/Anadyr,Markovo Airport,KVM,RU,POINT (170.41172757254944 64.66665714999999),0,,UHMO,,,
+AEM,Asia/Vladivostok,Amgu,AEM,RU,POINT (137.67364088576272 45.8414555),22,,UHTG,,,
+BVV,Asia/Sakhalin,Burevestnik AFB,BVV,RU,POINT (147.61337 44.928646),59,,UHSB,,,
+EDN,America/Chicago,Enterprise Muni Airport,EDN,US,POINT (-85.8998 31.2997),377,,UHWE,,,
+UGB,America/Anchorage,Ugashik Bay,PIP,US,POINT (-157.55112 57.552223),132,,UGB,,,
+SBT,Asia/Dushanbe,Sabetta,SBT,RU,POINT (71.25 72.1028),101,,USDA,,,
+LHU,Africa/Windhoek,Lianshulu,LHU,NA,POINT (23.3924459 -18.1163087),3143,,"",,,
+KKQ,Asia/Yekaterinburg,Krasnoselkup,KKQ,RU,POINT (82.45909720388723 65.71956255),101,,USDP,,,
+AAQ,Europe/Moscow,Anapa Airport,AAQ,RU,POINT (37.34498313723325 45.00265265),137,http://basel.aero/en/anapa/,URKA,Anapa,,Krasnodarskiy
+BNH,America/New_York,Barnes,HFD,US,POINT (-72.683334 41.766666),52,,MA87,,,
+USO,Pacific/Port_Moresby,Usino,USO,PG,POINT (145.43333 -5.5),430,,"",,,
+GMV,America/Denver,Monument Valley,GMV,US,POINT (-110.20226180130138 37.017583200000004),5131,http://gouldings.com/new/wp-content/uploads/2010/09/Gouldings_Airport_Rules.pdf,UT25,,,
+UUU,Pacific/Port_Moresby,Manumu,UUU,PG,POINT (147.46666 -8.999722),3828,,"",,,
+ULV,Europe/Samara,Baratayevka,ULY,RU,POINT (48.22490186377723 54.269227099999995),463,,UWLL,,,
+UZM,America/Cambridge_Bay,Hope Bay,UZM,CA,POINT (-106.61625764888016 68.15850165),65,,"",,,
+SVV,America/Caracas,San Salvador De,SVV,VE,POINT (-62 7),600,,"",,,
+KCT,Asia/Colombo,Koggala Airport,KCT,LK,POINT (80.3205948 5.9941046),10,,VCCK,,,
+ADP,Asia/Colombo,Ampara,ADP,LK,POINT (81.62522424646704 7.338524700000001),144,,VCCG,,,
+BTC,Asia/Colombo,Batticaloa,BTC,LK,POINT (81.67520240155659 7.70607375),19,,VCCB,,,
+DEP,Asia/Kolkata,Deparizo,DEP,IN,POINT (94 27.35),1115,,VEDZ,,,
+HRI,Asia/Colombo,Mattala Rajapaksa International Airport,HRI,LK,POINT (81.1225232733857 6.28627825),137,http://www.mria.lk/,VCRI,,,
+IXH,Asia/Kolkata,Kailashahar,IXH,IN,POINT (92.0070366789366 24.3085982),78,,VEKR,,,
+KTV,America/Caracas,Kamarata,KTV,VE,POINT (-62.416668 5.75),1770,,SVKM,,,
+SPB,America/St_Thomas,SPB,STT,VI,POINT (-64.916664 18.35),833,,VI22,,,
+SSB,America/St_Thomas,SPB,STX,VI,POINT (-64.75 17.75),433,,VI32,,,
+VIV,Pacific/Port_Moresby,Vivigani,VIV,PG,POINT (150.34166 -9.330556),36,,"",,,
+AGR,Asia/Kolkata,Kheria,AGR,IN,POINT (77.962776 27.158333),574,,VIAG,Agra,Agra,Uttar Pradesh
+AIP,Pacific/Majuro,Ailinglapalap Island,AIP,MH,POINT (168.81667 7.266667),0,,VIAX,,,
+AOU,Asia/Vientiane,Attopeu,AOU,LA,POINT (106.833336 14.8),288,,VLAP,Attapu,,Attapu
+HOE,Asia/Vientiane,Houeisay,HOE,LA,POINT (103.75 20.5),2234,,VLHS,,,
+LUA,Asia/Kathmandu,Lukla,LUA,NP,POINT (86.72916496713384 27.686601250000002),9225,,VNLK,,,
+MFM,Asia/Macau,Macau International Airport,MFM,MO,POINT (113.58936073979396 22.149929),0,http://www.macau-airport.gov.mo/en/index.php,VMMC,,,
+KTM,Asia/Kathmandu,Tribhuvan International Airport,KTM,NP,POINT (85.3582197389141 27.6939119),4390,http://www.tiairport.com.np/index.php,VNKT,,,
+TPJ,Asia/Kathmandu,Taplejung Suketar,TPJ,NP,POINT (87.69565259671111 27.35088365),7990,,VNTJ,,,
+PPL,Asia/Kathmandu,Phaplu,PPL,NP,POINT (86.58514934531868 27.518013449999998),8149,,VNPL,,,
+RHP,Asia/Kathmandu,Ramechhap,RHP,NP,POINT (86.083336 27.333332),3326,,VNRC,,,
+BHP,Asia/Kathmandu,Bhojpur,BHP,NP,POINT (87.05143680581317 27.147317899999997),3904,,VNBJ,,,
+BHR,Asia/Kathmandu,Bharatpur Airport,BHR,NP,POINT (84.42889698026414 27.676911),613,,VNBP,,,
+BJH,Asia/Kathmandu,Bajhang,BJH,NP,POINT (81.25 29.55),5580,,VNBG,,,
+BJU,Asia/Kathmandu,Bajura Airport,BJU,NP,POINT (81.333336 29.366667),4130,,VNBR,,,
+DNP,Asia/Kathmandu,Dang,DNP,NP,POINT (82.2903094 28.1121283),2027,,VNDG,,,
+DOP,Asia/Kathmandu,Dolpa,DOP,NP,POINT (82.81900213950593 28.9853814),8182,,VNDP,,,
+JIR,Asia/Kathmandu,Jiri,JIR,NP,POINT (86.2306576 27.6258495),5944,,VNJI,,,
+TMI,Asia/Kathmandu,Tumling Tar Airport,TMI,NP,POINT (87.2 27.3),1700,,VNTR,,,
+BKK,Asia/Bangkok,Suvarnabhumi Airport,BKK,TH,POINT (100.74858027718852 13.68187665),29,,VTBS,Lat Krabang,,Bangkok
+CBD,Asia/Kolkata,Car Nicobar,CBD,IN,POINT (92.8215167 9.156225),26,,VOCX,,,
+GKK,Indian/Maldives,Kooddoo Airport,GKK,MV,POINT (73.433056 0.730833),78,,VRMO,,,
+NYU,Asia/Rangoon,Nyaung U Airport,NYU,MM,POINT (94.92953995057687 21.17631445),318,,VYBG,,,
+GWA,Asia/Rangoon,Gwa,GWA,MM,POINT (94 21),3959,,VYGW,,,
+HEH,Asia/Rangoon,Heho Airport,HEH,MM,POINT (96.79266859459293 20.74775785),3828,,VYHH,,,
+HKT,Asia/Bangkok,Phuket International Airport,HKT,TH,POINT (98.30581527719204 8.11013195),29,,VTSP,,,
+KOP,Asia/Bangkok,Nakhon Phanom Airport,KOP,TH,POINT (104.75 17.4),587,,VTUW,,,
+KET,Asia/Rangoon,Keng Tung Airport,KET,MM,POINT (99.61667 21.3),2798,,VYKG,,,
+KYP,Asia/Rangoon,Kyaukpyu Airport,KYP,MM,POINT (93.53527784349123 19.42229405),20,,VYKP,,,
+LSH,Asia/Rangoon,Lashio,LSH,MM,POINT (97.75089767599788 22.980234000000003),2493,,VYLS,,,
+KAW,Asia/Rangoon,Kawthaung Airport,KAW,MM,POINT (98.53912236822767 10.04976155),180,,VYKT,,,
+AKY,Asia/Rangoon,Civil Airport,AKY,MM,POINT (92.88028 20.130278),26,,VYSW,,,
+BUI,Asia/Jayapura,Bokondini,BUI,ID,POINT (133.58333 -2),541,,WAJB,,,
+MDL,Asia/Rangoon,Mandalay International Airport,MDL,MM,POINT (96.0875 21.940052),223,,VYMD,,,
+FBS,America/Los_Angeles,Friday Harbor SPB,FBS,US,POINT (-123.00611 48.54361),0,,W33,,,
+KOX,Asia/Jayapura,Kokonao,KOX,ID,POINT (136.4344910014281 -4.7101185999999995),59,,WABN,,,
+ILA,Asia/Jayapura,Illaga,ILA,ID,POINT (133.73334 -3.65),0,,WABL,,,
+MGK,Asia/Rangoon,Mong Ton,MGK,MM,POINT (98.8989029 20.2966995),1578,,VYMT,,,
+NBX,Asia/Jayapura,Nabire,NBX,ID,POINT (135.43333 -3.366667),0,,WABI,,,
+PRU,Asia/Rangoon,Prome,PRU,MM,POINT (95.26752966607295 18.8256187),141,,VYPY,,,
+PAU,Asia/Rangoon,Pauk,PAU,MM,POINT (94.48656617197045 21.44900345),488,,VYPK,,,
+RCE,America/Los_Angeles,Roche Harbor,RCE,US,POINT (-123.13889 48.6116145),75,http://www.wsdot.wa.gov/aviation/AllStateAirports/RocheHarbor_RocheHarbor.htm,WA09,,,
+RSJ,America/Los_Angeles,Rosario SPB,RSJ,US,POINT (-122.85 48.63333),715,,W49,,,
+WAD,Indian/Antananarivo,Andriamena,WAD,MG,POINT (47.51294480698367 -17.4505982),2578,,"",,,
+WAB,Pacific/Port_Moresby,Wabag,WAB,PG,POINT (143.73334 -5.483333),6827,,"",,,
+MDP,Asia/Jayapura,Mindiptana,MDP,ID,POINT (140.83333 -5.833333),216,,WAKD,,,
+LII,Asia/Jayapura,Mulia,LII,ID,POINT (137.95983994203024 -3.7015140000000004),6527,,WABQ,,,
+UBR,Asia/Jayapura,Ubrub,UBR,ID,POINT (140.88441053702942 -3.67572165),1370,,WAJU,,,
+MKQ,Asia/Jayapura,Mopah Airport,MKQ,ID,POINT (140.5 -8.516667),49,,WAKK,,,
+KEI,Asia/Jayapura,Kepi,KEI,ID,POINT (139.33154405168852 -6.5412524),67,,WAKP,,,
+KWB,Asia/Jakarta,Karimunjawa,KWB,ID,POINT (110.47588289378987 -5.7990851),35,,WARU,,,
+BEJ,Asia/Makassar,Kalimarau Airport,BEJ,ID,POINT (117.7 2.166667),49,,WAQT,,,
+BJK,Asia/Jayapura,Benjina,BJK,ID,POINT (134.27397162462086 -6.066095949999999),82,,WAPK,,,
+BYQ,Asia/Makassar,Bunyu,BYQ,ID,POINT (117.833336 3.583333),0,,WALV,,,
+MAL,Asia/Jayapura,Mangole,MAL,ID,POINT (125.916664 -1.833333),564,,WAPE,,,
+LUV,Asia/Jayapura,Langgur Airport,LUV,ID,POINT (132.71666 -5.666667),78,,WAPF,,,
+DOB,Asia/Jayapura,Dobo Airport,DOB,ID,POINT (134 -5.75),0,,WAPD,,,
+DTD,Asia/Makassar,Datadawai,DTD,ID,POINT (116.60037 0.621316),206,,WALJ,,,
+GLX,Asia/Jayapura,Galela,GLX,ID,POINT (127.833336 1.833333),538,,WAMA,,,
+OKL,Asia/Jayapura,Oksibil,OKL,ID,POINT (140.66667 -5.1),1558,,WAJO,,,
+LSU,Asia/Kuching,Long Sukang,LSU,MY,POINT (115.49472189970038 4.553006),1259,,WBGU,,,
+KDI,Asia/Makassar,Haluoleo Airport,KDI,ID,POINT (122.42267523736868 -4.0797433000000005),538,,WAWW,,,
+MKM,Asia/Kuching,Mukah Airport,MKM,MY,POINT (112.04408780641342 2.8821367),49,,WBGK,,,
+KPI,Asia/Kuching,Kapit,KPI,MY,POINT (112.9317606 2.0102839),65,,WBGP,,,
+LDU,Asia/Kuching,Lahad Datu Airport,LDU,MY,POINT (118.32430708721583 5.03246825),45,,WBKD,,,
+KGU,Asia/Kuching,Keningau,KGU,MY,POINT (116.1650289 5.3554763),1036,,WBKG,,,
+LBU,Asia/Kuching,Labuan Airport,LBU,MY,POINT (115.25064888839793 5.30240635),101,,WBKL,,,
+KSR,America/Anchorage,Federal No 1,KSR,US,POINT (-160.23306 56.233334),13,,WAWH,,,
+BBN,Asia/Kuching,Bario Airport,BBN,MY,POINT (115.46667 3.683333),3497,,WBGZ,,,
+BKM,Asia/Kuching,Bakalalan,BKM,MY,POINT (115.61667 3.966667),3087,,WBGQ,,,
+BSE,Asia/Kuching,Sematan,BSE,MY,POINT (109.76441012827749 1.81320515),65,,WBGN,,,
+BUW,Asia/Makassar,Baubau Airport,BUW,ID,POINT (122.63333 -5.466667),534,,WAWB,,,
+BXB,Asia/Jayapura,Babo,BXB,ID,POINT (133.44118235237067 -2.52683255),42,,WASO,,,
+MUR,Asia/Kuching,Marudi Airport,MUR,MY,POINT (114.33093776067301 4.17861775),49,,WBGM,,,
+LGL,Asia/Kuching,Long Lellang,LGL,MY,POINT (114.25 4.183333),1400,,WBGF,,,
+MZV,Asia/Kuching,Mulu Airport,MZV,MY,POINT (114.81046866236548 4.05234795),111,,WBMU,,,
+PAY,Asia/Kuching,Pamol,PAY,MY,POINT (117.39445 5.993056),65,,WBKP,,,
+RNU,Asia/Kuching,Ranau,RNU,MY,POINT (116.6793387 5.9559637),1643,,WBKR,,,
+WBB,America/Anchorage,Stebbins Airport,WBB,US,POINT (-162.2852396 63.5153856),26,,WBB,,,
+WBC,Pacific/Port_Moresby,Wapolu,WBC,PG,POINT (150.35 -9.316667),32,,AYWJ,,,
+BTH,Asia/Jakarta,Hang Nadim International Airport,BTH,ID,POINT (104.11570805549073 1.1219929),45,,WIDD,,,
+MWK,Asia/Jakarta,Matak,MWK,ID,POINT (106.26667 3.3),242,,WIOM,,,
+LMU,Asia/Jakarta,Letung Airport,LMU,ID,POINT (105.75421355822093 2.9642438),33,,WIDL,,,
+GNS,Asia/Jakarta,Gunungsitoli Airport,GNS,ID,POINT (97.5 1.25),360,,WIMB,,,
+PKU,Asia/Jakarta,Sultan Syarif Kasim II International Airport,PKU,ID,POINT (101.440153194186 0.45756595),170,,WIBB,,,
+WGU,Pacific/Port_Moresby,Wagau,WGU,PG,POINT (146.8 -6.8),4550,,"",,,
+WED,Pacific/Port_Moresby,Wedau,WED,PG,POINT (150.08359419886068 -10.09498645),59,,"",,,
+MPB,America/New_York,Miami Sea Plane Base,MIA,US,POINT (-80.166664 25.75),0,,X44,,,
+QPG,Asia/Singapore,Paya Lebar,SIN,SG,POINT (103.89989076529653 1.35248525),65,,WSAP,,,
+PKG,Asia/Kuala_Lumpur,Pangkor Airport,PKG,MY,POINT (100.7 4.216667),39,,WMPA,,,
+ABU,Asia/Makassar,Haliwen Airport,ABU,ID,POINT (124.88333 -9.133333),1250,,WATA,Atambua,,East Nusa Tenggara
+AUT,Asia/Dili,Atauro,AUT,ID,POINT (125.6066862 -8.2435667),42,,WPAT,,,
+RDN,Asia/Kuala_Lumpur,LTS Pulau Redang,RDN,MY,POINT (103.00505552363154 5.7652263999999995),55,,WMPR,,,
+DTR,America/Los_Angeles,Decatur Island,DTR,US,POINT (-122.813495 48.5034859),39,,WN07,,,
+XSP,Asia/Singapore,Seletar,SIN,SG,POINT (103.96667 1.366667),91,,WSSL,,,
+UGI,America/Anchorage,Uganik,UGI,US,POINT (-153.5 57.88333),0,,"",,,
+XBB,America/Vancouver,Blubber Bay,XBB,CA,POINT (-123 50),0,,"",,,
+AAB,Australia/Brisbane,Arrabury Airport,AAB,AU,POINT (141.049092 -26.6967835),328,,YARY,Tanbar,Barcoo Shire,Queensland
+BKP,Australia/Brisbane,Barkly Downs,BKP,AU,POINT (138.4727656 -20.4905978),797,,YBAW,,,
+ABG,Australia/Brisbane,Abingdon,ABG,AU,POINT (143.2 -17.666668),600,,YABI,,,
+ABH,Australia/Brisbane,Alpha,ABH,AU,POINT (146.63333 -23.65),1190,,YAPH,,,
+ADO,Australia/Adelaide,Andamooka,ADO,AU,POINT (137.15 -31.016666),442,,YAMK,,,
+BKQ,Australia/Brisbane,Blackall Airport,BKQ,AU,POINT (145.43625323056347 -24.42789765),875,,YBCK,,,
+BQW,Australia/Perth,Balgo Hills,BQW,AU,POINT (127.8 -20.183332),1135,,YBGO,,,
+AMT,Australia/Adelaide,Amata,AMT,AU,POINT (132.03334 -26.766666),1748,,YAMT,,,
+AMX,Australia/Darwin,Ammaroo,AMX,AU,POINT (135.2420044 -21.7383003),1259,,YAMM,,,
+ASP,Australia/Darwin,Alice Springs Airport,ASP,AU,POINT (133.89773500499115 -23.8062855),1758,http://www.alicespringsairport.com.au/,YBAS,,,
+BRK,Australia/Sydney,Bourke,BRK,AU,POINT (145.93333 -30.083332),337,,YBKE,,,
+AUD,Australia/Brisbane,Augustus Downs,AUD,AU,POINT (139.878006 -18.5149994),98,,YAGD,,,
+AUU,Australia/Brisbane,Aurukun Mission,AUU,AU,POINT (142.25 -13.166667),200,,YAUR,,,
+MRP,Australia/Adelaide,Marla,MRP,AU,POINT (135 -27),564,,YALA,,,
+YAJ,America/Vancouver,Lyall Harbour,YAJ,CA,POINT (-123.2023758 48.7984705),0,,"",,,
+BXF,Australia/Perth,Belburn,BXF,AU,POINT (128.30779 -17.545555),784,,YBEB,,,
+BZP,Australia/Brisbane,Bizant,BZP,AU,POINT (144.63333 -15.216667),190,,YBIZ,,,
+CTL,Australia/Brisbane,Charleville Airport,CTL,AU,POINT (146.2619934 -26.4132996),977,,YBCV,,,
+GYL,Australia/Perth,Argyle,GYL,AU,POINT (128.66667 -16.333332),285,,YARG,,,
+YAQ,America/Vancouver,Maple Bay,YAQ,CA,POINT (-123.5999202 48.803377),0,,"",,,
+YBH,America/Vancouver,Bull Harbour,YBH,CA,POINT (-127.9355689 50.9143849),0,,"",,,
+YBJ,America/Montreal,Baie Johan Beetz,YBJ,CA,POINT (-62.916668 50.5),501,,"",,,
+AVG,Australia/Darwin,Auvergne,AVG,AU,POINT (130.0083823 -15.6852565),45,,YAUV,,,
+AWN,Australia/Adelaide,Alton Downs,AWN,AU,POINT (138.66667 -26.25),104,,YADS,,,
+AWP,Australia/Darwin,Austral Downs Airport,AWP,AU,POINT (137.7652929 -20.4940024),672,,YAUS,,,
+AXC,Australia/Brisbane,Aramac,AXC,AU,POINT (145.24832864576317 -22.95728355),751,,YAMC,,,
+AXL,Australia/Darwin,Alexandria,AXL,AU,POINT (136.66667 -19.083332),751,,YALX,,,
+AYL,Australia/Darwin,Anthony Lagoon,AYL,AU,POINT (135.5420203 -18.0197941),711,,YANL,,,
+AYQ,Australia/Darwin,Connellan Airport,AYQ,AU,POINT (130.975767814586 -25.18184745),1591,,YAYE,,,
+BCI,Australia/Brisbane,Barcaldine Airport,BCI,AU,POINT (145.30206293946705 -23.56550565),846,,YBAR,,,
+BDD,Australia/Brisbane,Badu Island,BDD,AU,POINT (142.17305925905555 -10.14901485),16,,YBAU,,,
+BEE,Australia/Perth,Beagle Bay,BEE,AU,POINT (122.666664 -16.966667),19,,YBGB,,,
+BEU,Australia/Brisbane,Bedourie,BEU,AU,POINT (139.445 -24.23),301,,YBIE,,,
+BFC,Australia/Brisbane,Bloomfield,BFC,AU,POINT (145.3300018 -15.8736),59,,YBMD,,,
+BIW,Australia/Perth,Billiluna,BIW,AU,POINT (127.166664 -19.566668),1105,,YBIL,,,
+CMA,Australia/Brisbane,Cunnamulla,CMA,AU,POINT (145.6239117 -28.03324135),606,,YCMU,,,
+BIP,Australia/Brisbane,Bulimba,BIP,AU,POINT (143.75 -16.15),715,,YBWM,,,
+BME,Australia/Perth,Broome Airport,BME,AU,POINT (122.23069434861999 -17.9492125),32,,YBRM,,,
+BMP,Australia/Brisbane,Brampton Island,BMP,AU,POINT (149.23334 -20.783333),0,,YBPI,,,
+BOX,Australia/Darwin,Borroloola,BOX,AU,POINT (136.3031001483854 -16.07668335),52,,YBRL,,,
+PPP,Australia/Brisbane,Whitsunday Coast Airport,PPP,AU,POINT (148.55346993636186 -20.4923508),55,,YBPN,,,
+NIF,Australia/Perth,Nifty Airport,NIF,AU,POINT (121.588329 -21.6709193),964,,YCNF,,,
+ODL,Australia/Adelaide,Cordillo Downs,ODL,AU,POINT (140.6380005 -26.7453003),177,,YCOD,,,
+DCN,Australia/Perth,RAAF Curtin,DRB,AU,POINT (123.82154363476033 -17.580804),236,,YCIN,,,
+YBQ,America/Vancouver,Telegraph Harbour,YBQ,CA,POINT (-123.6713198 48.9820506),0,,"",,,
+YCF,America/Vancouver,Cortes Bay,YCF,CA,POINT (-124.9307509 50.0619618),0,,"",,,
+LLG,Australia/Brisbane,Chillagoe,LLG,AU,POINT (144.52862775582386 -17.137981449999998),1110,,YCGO,,,
+BRT,Australia/Darwin,Bathurst Island,BRT,AU,POINT (130.61379362586405 -11.76157225),49,,YBTI,,,
+BTD,Australia/Darwin,Brunette Downs,BTD,AU,POINT (135.9409543069218 -18.63357715),695,,YBRU,,,
+BVW,Australia/Brisbane,Batavia Downs,BVW,AU,POINT (143.21666 -12.65),928,,YBTV,,,
+BVZ,Australia/Perth,Beverley Springs,BVZ,AU,POINT (124 -15),0,,YBYS,,,
+BWB,Australia/Perth,Barrow Island,BWB,AU,POINT (115.416664 -20.783333),98,,YBWX,,,
+BYP,Australia/Perth,Barimunya Airport,BYP,AU,POINT (119.16560290883734 -22.67434605),2080,,YBRY,,,
+BZD,Australia/Sydney,Balranald,BZD,AU,POINT (143.5764236 -34.6240084),193,,YBRN,,,
+CBI,Australia/Hobart,Cape Barren Island,CBI,AU,POINT (148.16667 -40.333332),0,,YCBN,,,
+CBX,Australia/Sydney,Condobolin,CBX,AU,POINT (148.25 -33.86667),1394,,YCDO,,,
+CBY,Australia/Brisbane,Canobie,CBY,AU,POINT (140.9273389 -19.4788726),213,,YCBE,,,
+CCL,Australia/Brisbane,Chinchilla,CCL,AU,POINT (150.619946415279 -26.772074449999998),1017,,YCCA,,,
+CED,Australia/Adelaide,Ceduna Airport,CED,AU,POINT (133.70730954308243 -32.130567549999995),39,,YCDU,,,
+CFH,Australia/Adelaide,Clifton Hills,CFH,AU,POINT (139 -27),88,,YCFH,,,
+CFI,Australia/Darwin,Camfield,CFI,AU,POINT (131.3269958 -17.0216999),367,,YCFD,,,
+CKI,Australia/Darwin,Croker Island,CKI,AU,POINT (132.53334 -11.2),22,,YCKI,,,
+CML,Australia/Brisbane,Camooweal,CML,AU,POINT (138.11667 -19.933332),728,,YCMW,,,
+CMQ,Australia/Brisbane,Clermont,CMQ,AU,POINT (147.5 -22.866667),977,,YCMT,,,
+CNC,Australia/Brisbane,Coconut Island,CNC,AU,POINT (143.07078934368198 -10.0500321),22,,YCCT,,,
+CNJ,Australia/Brisbane,Cloncurry Airport,CNJ,AU,POINT (140.50851 -20.668905),606,,YCCY,,,
+CPD,Australia/Adelaide,Coober Pedy Airport,CPD,AU,POINT (134.72258592176874 -29.041282199999998),767,,YCBP,,,
+CRB,Australia/Sydney,Collarenebri,CRB,AU,POINT (148.5768224 -29.524299),462,,YCBR,,,
+NLF,Australia/Brisbane,Darnley Island,NLF,AU,POINT (143.77959298295636 -9.579059099999998),141,,YDNI,,,
+KCE,Australia/Brisbane,Collinsville,KCE,AU,POINT (147.86667 -20.55),180,,YCSV,,,
+CCW,Australia/Adelaide,Cowell,CCW,AU,POINT (136.83333 -33.63333),616,,YCWL,,,
+CDA,Australia/Darwin,Cooinda,CDA,AU,POINT (132.53301052481424 -12.90328085),32,,YCOO,,,
+CDQ,Australia/Brisbane,Croydon,CDQ,AU,POINT (142.25 -18.3),344,,YCRY,,,
+CFP,Australia/Brisbane,Carpentaria Downs,CFP,AU,POINT (144.35 -18.783333),1673,,YCPN,,,
+CJF,Australia/Perth,Coondewanna Airport,CJF,AU,POINT (118.8123347 -22.9642029),2267,,YCWA,,,
+COY,Australia/Perth,Coolawanyah,COY,AU,POINT (117.75 -21.85),1151,,YCWY,,,
+CUG,Australia/Sydney,Cudal,CUG,AU,POINT (151 -32),846,,YCUA,,,
+CUQ,Australia/Brisbane,Coen,CUQ,AU,POINT (143.11575726213246 -13.76219095),498,,YCOE,,,
+CUY,Australia/Perth,Cue,CUY,AU,POINT (117.9177756 -27.4469307),1430,,YCUE,,,
+CWR,Australia/Adelaide,Cowarie,CWR,AU,POINT (138.32563455173027 -27.7125889),49,,YCWI,,,
+CXQ,Australia/Perth,Christmas Creek,CXQ,AU,POINT (125.916664 -18.866667),534,,YCRK,,,
+CYG,Australia/Melbourne,Corryong,CYG,AU,POINT (147.9 -36.25),1551,,YCRG,,,
+DDN,Australia/Brisbane,Delta Downs,DDN,AU,POINT (141.3 -16.916668),45,,YDLT,,,
+DFP,Australia/Brisbane,Drumduff,DFP,AU,POINT (143.33333 -16),416,,YDDF,,,
+DGD,Australia/Perth,Dalgaranga,DGD,AU,POINT (117.30139 -27.818056),1371,,YDGA,,,
+DHD,Australia/Brisbane,Durham Downs,DHD,AU,POINT (149.08333 -26.1),1020,,YDRH,,,
+DKI,Australia/Brisbane,Dunk Island,DKI,AU,POINT (146.140759 -17.9371869),49,,YDKI,,,
+DKV,Australia/Darwin,Docker River,DKV,AU,POINT (129.12215688442302 -24.859699650000003),1896,,YDVR,,,
+DLK,Australia/Adelaide,Dulkaninna,DLK,AU,POINT (139.46666 -29.016666),68,,YDLK,,,
+DMD,Australia/Brisbane,Doomadgee Airport,DMD,AU,POINT (138.81453566389803 -17.936965049999998),150,,YDMG,,,
+DNB,Australia/Brisbane,Dunbar,DNB,AU,POINT (142.39055 -16.010834),177,,YDBR,,,
+DNG,Australia/Perth,Doongan,DNG,AU,POINT (126.2993393 -15.3894937),1295,,YDGN,,,
+DOX,Australia/Perth,Dongara,DOX,AU,POINT (114.933334 -29.25),13,,YDRA,,,
+DPO,Australia/Hobart,Devonport Airport,DPO,AU,POINT (146.42759229572462 -41.1717979),29,http://www.tasports.com.au/infrastructure/devonport_airport.html,YDPO,,,
+DRB,Australia/Perth,Derby,DRB,AU,POINT (123.66251856898089 -17.3719837),32,,YDBY,,,
+DRD,Australia/Brisbane,Dorunda Station,DRD,AU,POINT (142.33333 -16.5),160,,YDOR,,,
+DRN,Australia/Brisbane,Dirranbandi,DRN,AU,POINT (148.2195588 -28.5845215),554,,YDBI,,,
+DRR,Australia/Brisbane,Durrie,DRR,AU,POINT (140.21666 -25.616667),164,,YDRI,,,
+KFE,Australia/Perth,Fortescue Dave Forrest,KFE,AU,POINT (119.43834860371055 -22.29124225),1555,,YFDF,,,
+FOS,Australia/Perth,Forrest,FOS,AU,POINT (128.05 -30.816668),538,,YFRT,,,
+FVL,Australia/Perth,Flora Valey,FVL,AU,POINT (128.41667 -18.283333),1200,,YFLO,,,
+FVR,Australia/Perth,Forrest River Airport,FVR,AU,POINT (127.833336 -15.253056),396,,YFRV,,,
+YGE,America/Vancouver,Gorge Harbor,YGE,CA,POINT (-124.95 50.083332),0,,"",,,
+GBL,Australia/Darwin,Goulburn Island,GBL,AU,POINT (133.43333 -11.55),0,,YGBI,,,
+YGN,America/Vancouver,Greenway Sound,YGN,CA,POINT (-126.85 50.85),0,,CYGN,,,
+FIK,Australia/Darwin,Finke,FIK,AU,POINT (134.58333 -25.566668),928,,YFNE,,,
+FIZ,Australia/Perth,Fitzroy Crossing,FIZ,AU,POINT (125.55918151085643 -18.1818248),400,,YFTZ,,,
+FLY,Australia/Sydney,Finley,FLY,AU,POINT (145.58333 -35.65),367,,YFIL,,,
+GBP,Australia/Brisbane,Gamboola,GBP,AU,POINT (143.6696981 -16.5434964),426,,YGAM,,,
+GBV,Australia/Perth,Gibb River,GBV,AU,POINT (126.63333 -15.65),1167,,YGIB,,,
+GBW,Australia/Perth,Ginbata Airport,GBW,AU,POINT (120.03553 -22.5812),1364,,YGIA,,,
+GDD,Australia/Perth,Gordon Downs,GDD,AU,POINT (128.55 -18.716667),1141,,YGDN,,,
+GEE,Australia/Hobart,George Town,GEE,AU,POINT (143.55 -18.283333),938,,YGTO,,,
+GGD,Australia/Brisbane,Gregory Downs,GGD,AU,POINT (139.2340103489768 -18.6297729),242,,YGDS,,,
+GLG,Australia/Brisbane,Glengyle,GLG,AU,POINT (139.5948939 -24.797187),278,,YGLE,,,
+GLM,Australia/Brisbane,Glenormiston,GLM,AU,POINT (138.8210152 -22.8901443),452,,YGLO,,,
+GLT,Australia/Brisbane,Gladstone Airport,GLT,AU,POINT (151.22385043997647 -23.869519150000002),45,,YGLA,,,
+GPD,Australia/Brisbane,Mount Gordon Mine,GPD,AU,POINT (139.91777 -19.999445),856,,YGON,,,
+GSC,Australia/Perth,Gascoyne Junction,GSC,AU,POINT (115.25 -25.166668),505,,YGSC,,,
+GTE,Australia/Darwin,Alyangula Airport,GTE,AU,POINT (136.46002 -13.973887),39,,YGTE,,,
+GTT,Australia/Brisbane,Georgetown Airport,GTT,AU,POINT (143.78334 -18.416668),2070,,YGTN,Georgetown,,Queensland
+GVP,Australia/Brisbane,Greenvale,GVP,AU,POINT (144.61667 -15.783333),551,,YGNV,,,
+HAT,Australia/Brisbane,Heathlands,HAT,AU,POINT (140.58333 -19.720833),367,,YHTL,,,
+HLL,Australia/Perth,Hillside,HLL,AU,POINT (119.333336 -21.783333),954,,YHIL,,,
+HMG,Australia/Darwin,Hermannsburg,HMG,AU,POINT (132.75 -23.95),1916,,YHMB,,,
+INM,Australia/Adelaide,Innamincka,INM,AU,POINT (140.73334 -27.75),127,,YINN,,,
+KUG,Australia/Brisbane,Kubin Island,KUG,AU,POINT (142.3 -10.233333),15,,YKUB,Kubin,Moa Island,Queensland
+IRG,Australia/Brisbane,Lockhart River,IRG,AU,POINT (143.3049927 -12.7868996),49,,YLHR,,,
+ISI,Australia/Brisbane,Isisford,ISI,AU,POINT (144.4282046 -24.2619884),652,,YISF,,,
+UBU,Australia/Perth,Kalumburu,UBU,AU,POINT (126.65 -14.3),29,,YKAL,,,
+KDB,Australia/Perth,Kambalda,KDB,AU,POINT (120 -30),1073,,YKBL,,,
+KBY,Australia/Adelaide,Streaky Bay,KBY,AU,POINT (134 -33),69,,YKBY,,,
+IVW,Australia/Darwin,Inverway,IVW,AU,POINT (129.6432857 -17.8419621),1341,,YINW,,,
+KCS,Australia/Darwin,Kings Creek Station,KCS,AU,POINT (131.68333 -24.383333),615,,YKCS,,,
+KRA,Australia/Melbourne,Kerang,KRA,AU,POINT (143.91667 -35.666668),254,,YKER,,,
+JAB,Australia/Darwin,Jabiru,JAB,AU,POINT (132.8930054 -12.6583004),49,,YJAB,,,
+KFG,Australia/Darwin,Kalkurung,KFG,AU,POINT (130.81667 -17.433332),646,,YKKG,,,
+KOH,Australia/Brisbane,Koolatah,KOH,AU,POINT (142.41667 -15.966667),0,,YKLA,,,
+KKP,Australia/Brisbane,Koolburra,KKP,AU,POINT (143.95 -15.583333),350,,YKLB,,,
+JCK,Australia/Brisbane,Julia Creek,JCK,AU,POINT (141.7 -20.583332),387,,YJLC,,,
+KML,Australia/Brisbane,Kamileroi,KML,AU,POINT (140.05 -19.366667),91,,YKML,,,
+LZR,Australia/Brisbane,Lizard Island,LZR,AU,POINT (145.4518133 -14.6697872),101,,YLZI,,,
+KPP,Australia/Brisbane,Kalpowar,KPP,AU,POINT (143.93333 -19.966667),90,,YKPR,,,
+LWH,Australia/Brisbane,Lawn Hill,LWH,AU,POINT (138.58333 -18.583332),383,,YLAH,,,
+LTP,Australia/Brisbane,Lyndhurst,LTP,AU,POINT (138.35 -30.283333),396,,YLHS,,,
+KRD,Australia/Darwin,Kurundi,KRD,AU,POINT (134.66667 -20.516666),1340,,YKUR,,,
+LGH,Australia/Adelaide,Leigh Creek,LGH,AU,POINT (138.41667 -30.466667),856,,YLEC,,,
+LNH,Australia/Darwin,Lake Nash,LNH,AU,POINT (138 -20.95),662,,YLKN,,,
+LOC,Australia/Adelaide,Lock,LOC,AU,POINT (135.75 -33.55),413,,YLOK,,,
+LFP,Australia/Brisbane,Lakefield,LFP,AU,POINT (144.00555 -15.05),107,,YLFD,,,
+LTV,Australia/Brisbane,Lotusvale,LTV,AU,POINT (141.38333 -17.05),65,,YLOV,,,
+LIB,Australia/Darwin,Limbunya,LIB,AU,POINT (129.8 -17.2),0,,YLIM,,,
+BBL,Australia/Brisbane,Ballera Airport,BBL,AU,POINT (141.808333 27.408333),385,,YLLE,,,
+LKD,Australia/Brisbane,Lakeland Downs,LKD,AU,POINT (144.95 -15.816667),930,,YLND,,,
+LUU,Australia/Brisbane,Laura,LUU,AU,POINT (144.16667 -15.666667),764,,YLRA,,,
+YLP,America/Montreal,Mingan,YLP,CA,POINT (-64.15 50.283333),70,,"",,,
+LUT,Australia/Brisbane,Laura Station,LUT,AU,POINT (144.81667 -15.433333),583,,YLRS,,,
+LVO,Australia/Perth,Laverton,LVO,AU,POINT (122.36667 -28.633333),1479,,YLTN,,,
+LER,Australia/Perth,Leinster,LER,AU,POINT (120.61667 -27.833332),1631,,YLST,,,
+MRG,Australia/Brisbane,Mareeba,MRG,AU,POINT (145.46666 -17),1341,,YMBA,,,
+MBB,Australia/Perth,Marble Bar,MBB,AU,POINT (119.583336 -21.25),797,,YMBL,,,
+LNO,Australia/Perth,Leonora,LNO,AU,POINT (121.3150024 -28.8780994),1197,http://www.leonora.wa.gov.au/services_facilities/airport.html,YLEO,,,
+JUN,Australia/Brisbane,Jundah,JUN,AU,POINT (143.0609407 -24.8359579),145,,YJDA,,,
+KBJ,Australia/Darwin,Kings Canyon,KBJ,AU,POINT (131.48957557557296 -24.260631949999997),2100,,YKCA,,,
+KBB,Australia/Darwin,Kirkimbie,KBB,AU,POINT (129.2100067 -17.7791996),0,,YKIR,,,
+KRB,Australia/Brisbane,Karumba Airport,KRB,AU,POINT (140.83177203881445 -17.45582115),5,,YKMB,,,
+KWM,Australia/Brisbane,Kowanyama,KWM,AU,POINT (141.75344930472147 -15.485966099999999),35,,YKOW,,,
+KGC,Australia/Adelaide,Kingscote Airport,KGC,AU,POINT (137.5230169675114 -35.71409045),24,,YKSC,,,
+YKT,America/Vancouver,Klemtu,YKT,CA,POINT (-128.521423 52.5936075),0,,"",,,
+LEL,Australia/Darwin,Lake Evella,LEL,AU,POINT (135.80659526698466 -12.4979104),256,,YLEV,,,
+LOA,Australia/Brisbane,Lorraine,LOA,AU,POINT (139.9069977 -18.9932995),190,,YLOR,,,
+UBB,Australia/Brisbane,Mabuiag Island,UBB,AU,POINT (142.19493860304968 -9.9495927),0,,YMAA,,,
+ONR,Australia/Brisbane,Monkira,ONR,AU,POINT (140.5536061 -24.8185891),229,,YMNK,,,
+GSN,Australia/Adelaide,Mount Gunson,GSN,AU,POINT (137.76666 -31.666668),134,,YMGN,,,
+OXY,Australia/Brisbane,Morney,OXY,AU,POINT (141.36667 -25.35),301,,YMNY,,,
+OOR,Australia/Brisbane,Mooraberree,OOR,AU,POINT (141.23334 -25.05),328,,YMOO,,,
+ONG,Australia/Brisbane,Mornington Airport,ONG,AU,POINT (139.17004 -16.662558),42,,YMTI,,,
+NMR,Australia/Brisbane,Nappa Merry,NMR,AU,POINT (141.11667 -27.6),170,,YNAP,,,
+UTB,Australia/Brisbane,Muttaburra,UTB,AU,POINT (144.52879 -22.5852806),230,,YMTB,,,
+MFP,Australia/Darwin,Manners Creek,MFP,AU,POINT (137.98517638728612 -22.09844175),656,,YMCR,,,
+MKR,Australia/Perth,Meekatharra,MKR,AU,POINT (118.55059893170588 -26.617335),1696,,YMEK,,,
+MLV,Australia/Brisbane,Merluna,MLV,AU,POINT (142.98334 -13.016667),442,,YMEU,,,
+MGT,Australia/Darwin,Milingimbi,MGT,AU,POINT (134.8950872773013 -12.095758),45,,YMGB,,,
+MGV,Australia/Perth,Margaret River,MGV,AU,POINT (126.86667 -18.616667),875,,YMGR,,,
+MNG,Australia/Darwin,Maningrida Airport,MNG,AU,POINT (134.2339935 -12.0560999),104,,YMGD,,,
+MHO,Australia/Perth,Mount House,MHO,AU,POINT (125.76667 -17.133333),872,,YMHO,,,
+MCV,Australia/Darwin,Mcarthur River Airport,MCV,AU,POINT (136.095 -16.466667),75,,YMHU,,,
+MNQ,Australia/Brisbane,Monto,MNQ,AU,POINT (151.09860058954558 -24.89228125),770,,YMTO,,,
+MIH,Australia/Perth,Mitchell Plateau,MIH,AU,POINT (147.96666 -26.483334),1069,,YMIP,,,
+MTQ,Australia/Brisbane,Mitchell,MTQ,AU,POINT (147.96666 -26.583332),1227,,YMIT,,,
+MNW,Australia/Darwin,Macdonald Downs,MNW,AU,POINT (135.2330017 -22.4666996),1459,,YMDS,,,
+MMG,Australia/Perth,Mount Magnet,MMG,AU,POINT (117.8362348155679 -28.108109),1371,,YMOG,,,
+MSF,Australia/Darwin,Mount Swan,MSF,AU,POINT (135 -22.516666),1624,,YMNS,,,
+MET,Australia/Brisbane,Moreton,MET,AU,POINT (142.76666 -12.75),278,,YMOT,,,
+MQE,Australia/Darwin,Marqua,MQE,AU,POINT (137.35 -22.816668),734,,YMQA,,,
+MTD,Australia/Darwin,Mt Sandford,MTD,AU,POINT (130.56667 -17),731,,YMSF,,,
+MIY,Australia/Darwin,Mittiebah,MIY,AU,POINT (137.08 -18.81),869,,YMTA,,,
+MUQ,Australia/Perth,Muccan,MUQ,AU,POINT (120 -20.666668),298,,YMUC,,,
+MNE,Australia/Adelaide,Mungeranie,MNE,AU,POINT (138.6 -28),167,,YMUG,,,
+MVK,Australia/Adelaide,Mulka,MVK,AU,POINT (138 -27.25),114,,YMUK,,,
+MUP,Australia/Darwin,Mulga Park,MUP,AU,POINT (141.05 -31.133333),269,,YMUP,,,
+MKV,Australia/Darwin,Mt Cavenagh,MKV,AU,POINT (133.25 -25.966667),1686,,YMVG,,,
+MWT,Australia/Adelaide,Moolawatana,MWT,AU,POINT (138 -28.5),42,,YMWT,,,
+MXD,Australia/Brisbane,Marion Downs,MXD,AU,POINT (139.6 -23.333332),518,,YMWX,,,
+RRE,Australia/Adelaide,Marree,RRE,AU,POINT (138.0707139 -29.6587891),111,,YMRE,,,
+WME,Australia/Perth,Mount Keith,WME,AU,POINT (120.5497756 -27.2852621),1781,,YMNE,,,
+YOI,America/Montreal,Opinaca,YOI,CA,POINT (-76.60716027805023 52.2211),692,,"",,,
+RPM,Australia/Darwin,Ngukurr,RPM,AU,POINT (134 -14.933333),249,,YNGU,,,
+PXH,Australia/Adelaide,Prominent Hill,PXH,AU,POINT (135.52772941953702 -29.7101355),692,,YPMH,,,
+NAA,Australia/Sydney,Narrabri,NAA,AU,POINT (149.8250651 -30.3292011),725,http://narrabri.cfm.predelegation.com/index.cfm?page_id=1249,YNBR,,,
+ABM,Australia/Brisbane,Northern Peninsula Airport,ABM,AU,POINT (142.45033 -10.942619),98,http://www.nparc.qld.gov.au/airport,YNPE,,,
+MOO,Australia/Adelaide,Moomba,MOO,AU,POINT (149.83333 -27.5),1046,,YOOM,,,
+KNX,Australia/Perth,Kununurra Airport,KNX,AU,POINT (128.70522745340165 -15.77628825),145,,YPKU,,,
+UTD,Australia/Darwin,Nutwood Downs,UTD,AU,POINT (134.1462010899545 -15.8083904),500,,YNUT,,,
+EDR,Australia/Brisbane,Edward River,EDR,AU,POINT (141.61667 -14.9),52,,YPMP,,,
+GOV,Australia/Darwin,Nhulunbuy Airport,GOV,AU,POINT (136.82265 -12.269595),127,,YPGV,,,
+NLS,Australia/Perth,Nicholson,NLS,AU,POINT (128.89583 -18.050833),1263,,YNIC,,,
+NMP,Australia/Brisbane,New Moon,NMP,AU,POINT (143.96666 -20.166668),1443,,YNMN,,,
+NPP,Australia/Darwin,Napperby,NPP,AU,POINT (132.68333 -22.5),2129,,YNPB,,,
+NSM,Australia/Perth,Norseman,NSM,AU,POINT (121.7549973 -32.2099991),833,,YNSM,,,
+LEA,Australia/Perth,Learmonth Airport,LEA,AU,POINT (114.09427 -22.239883),19,,YPLM,,,
+NUR,Australia/Adelaide,Nullarbor,NUR,AU,POINT (130.91667 -31.433332),183,,YNUB,,,
+NLL,Australia/Perth,Nullagine,NLL,AU,POINT (120.2 -21.75),1122,,YNUL,,,
+NTN,Australia/Brisbane,Normanton Airport,NTN,AU,POINT (141.0746285 -17.68517),55,,YNTN,,,
+NUB,Australia/Darwin,Numbulwar,NUB,AU,POINT (135.71378042625975 -14.26815415),42,,YNUM,,,
+ODD,Australia/Adelaide,Oodnadatta,ODD,AU,POINT (135.45 -27.550278),403,,YOOD,,,
+OLP,Australia/Adelaide,Olympic Dam Airport,OLP,AU,POINT (136.87764439593963 -30.48471425),285,,YOLD,,,
+OSO,Australia/Brisbane,Osborne Mine,OSO,AU,POINT (140.5568295 -22.0792179),898,,YOSB,,,
+KTR,Australia/Darwin,Tindal,KTR,AU,POINT (132.2714 -14.4575),443,,YPTN,,,
+ODR,Australia/Perth,Ord River,ODR,AU,POINT (128.8 -17.5),633,,YORV,,,
+PBO,Australia/Perth,Paraburdoo Airport,PBO,AU,POINT (117.74584925439711 -23.17202315),1361,,YPBO,,,
+PKT,Australia/Darwin,Port Keats,PKT,AU,POINT (129.53016901828997 -14.251098899999999),104,,YPKT,,,
+PQQ,Australia/Sydney,Port Macquarie Airport,PQQ,AU,POINT (152.87350282041024 -31.4357662),26,http://www.hastings.nsw.gov.au/www/html/455-welcome-to-port-macquarie-airport.asp?intLocationID=455,YPMQ,,,
+PHE,Australia/Perth,Port Hedland International Airport,PHE,AU,POINT (118.62407240179644 -20.3737968),52,,YPPD,,,
+PDN,Australia/Adelaide,Parndana,PDN,AU,POINT (138.08333 -35.916668),0,,YPDA,,,
+PDE,Australia/Adelaide,Pandie Pandie,PDE,AU,POINT (138.66667 -26),104,,YPDI,,,
+PRD,Australia/Perth,Pardoo,PRD,AU,POINT (119.11667 -20.1),26,,YPDO,,,
+OYN,Australia/Melbourne,Ouyen,OYN,AU,POINT (142.3486862 -35.0892885),154,,YOUY,,,
+PEA,Australia/Adelaide,Penneshaw,PEA,AU,POINT (137.95867 -35.758188),462,,YPSH,,,
+YQJ,America/Vancouver,April Point SPB,YQJ,CA,POINT (-125.26748 50.19675),0,,"",,,
+ULP,Australia/Brisbane,Quilpie,ULP,AU,POINT (144.3 -26.633333),655,,YQLP,,,
+TDR,Australia/Brisbane,Theodore,TDR,AU,POINT (150.09309654520848 -24.9876164),171,,YTDR,,,
+CDU,Australia/Sydney,Camden,CDU,AU,POINT (124.416664 -15.45),0,,YSCN,,,
+TQP,Australia/Brisbane,Trepell Airport,TQP,AU,POINT (140.894352 -21.8402176),891,,YTEE,,,
+NDS,Australia/Perth,Sandstone,NDS,AU,POINT (119.2969971 -27.9799995),1696,,YSAN,,,
+MJK,Australia/Perth,Shark Bay,MJK,AU,POINT (113.57594702287881 -25.8975961),200,,YSHK,,,
+RMA,Australia/Brisbane,Roma Airport,RMA,AU,POINT (148.7770438 -26.5423989),961,,YROM,,,
+RCM,Australia/Brisbane,Richmond,RCM,AU,POINT (143.11667 -20.70389),600,,YRMD,,,
+ROH,Australia/Brisbane,Robinhood,ROH,AU,POINT (144 -18.25),1302,,YROB,,,
+SBR,Australia/Brisbane,Saibai Island,SBR,AU,POINT (142.62580939318673 -9.379058950000001),22,,YSII,,,
+RPB,Australia/Darwin,Roper Bar,RPB,AU,POINT (134.73334 -14.733333),65,,YRRB,,,
+RTP,Australia/Brisbane,Rutland Plains,RTP,AU,POINT (141.83333 -15.6),59,,YRTP,,,
+RHL,Australia/Perth,Roy Hill,RHL,AU,POINT (120 -22.75),1358,,YRYH,,,
+RSB,Australia/Brisbane,Roseberth,RSB,AU,POINT (139.623569 -25.8215655),147,,YRSB,,,
+SHU,Australia/Darwin,Smith Point,SHU,AU,POINT (132.16191415898072 -11.13463955),9,,YSMP,,,
+SGP,Australia/Perth,Shay Gap,SGP,AU,POINT (120.23333 -20.816668),741,,YSHG,,,
+SCG,Australia/Brisbane,Spring Creek,SCG,AU,POINT (142.41667 -38.016666),367,,YSPK,,,
+STH,Australia/Brisbane,Strathmore,STH,AU,POINT (142.55871288265564 -17.862645649999997),403,,YSMR,,,
+SRN,Australia/Hobart,Strahan,SRN,AU,POINT (145.2897 -42.1556),42,,YSRN,,,
+KSV,Australia/Brisbane,Springvale,KSV,AU,POINT (140.68333 -23.55),0,,YSPV,,,
+SYD,Australia/Sydney,Sydney (Kingsford Smith) Airport,SYD,AU,POINT (151.18196819346016 -33.9498935),16,http://www.sydneyairport.com.au/,YSSY,,,
+SQC,Australia/Perth,Southern Cross,SQC,AU,POINT (119.35 -31.25),1148,,YSCR,,,
+STF,Australia/Brisbane,Stephen Island,STF,AU,POINT (143.56667 -9.5),0,,YSTI,,,
+SSP,Australia/Brisbane,Silver Plains,SSP,AU,POINT (143.55 -13.983333),29,,YSVP,,,
+TBL,Australia/Perth,Tableland,TBL,AU,POINT (126.833336 -17.3),0,,YTAB,,,
+TBK,Australia/Darwin,Timber Creek,TBK,AU,POINT (130.48334 -15.65),16,,YTBR,,,
+CZY,Australia/Brisbane,Cluny,CZY,AU,POINT (139.53334 -24.516666),275,,YUNY,,,
+GTS,Australia/Darwin,Granites,GTS,AU,POINT (133.61667 -26.966667),1085,,YTGT,,,
+MFL,Australia/Brisbane,Mount Full Stop,MFL,AU,POINT (144.9 -19.666668),1843,,YWDV,,,
+PHQ,Australia/Brisbane,The Monument Airport,PHQ,AU,POINT (139.9215968643398 -21.80924245),954,,YTMO,,,
+TKY,Australia/Perth,Turkey Creek,TKY,AU,POINT (128.25 -17.066668),0,,YTKY,,,
+TYB,Australia/Sydney,Tibooburra,TYB,AU,POINT (142.0578807 -29.4496046),584,,YTIB,,,
+OKR,Australia/Brisbane,Yorke Island,OKR,AU,POINT (143.40680922150324 -9.75350265),29,,YYKI,,,
+SYU,Australia/Brisbane,Warraber Island,SYU,AU,POINT (142.8245966096468 -10.208072099999999),29,,YWBS,,,
+TXR,Australia/Brisbane,Tanbar,TXR,AU,POINT (141.9279938 -25.8477993),344,,YTNB,,,
+TTX,Australia/Perth,Mungalalu Truscott Airbase,TTX,AU,POINT (126.38204570326874 -14.089066500000001),181,,YTST,,,
+WNR,Australia/Brisbane,Windorah,WNR,AU,POINT (142.67334736968547 -25.4069931),396,,YWDH,,,
+THG,Australia/Brisbane,Thangool,THG,AU,POINT (150.57686173589832 -24.4946875),644,,YTNG,,,
+KYF,Australia/Perth,Yeelirrie,KYF,AU,POINT (120.0830002 -27.2833004),0,,YYLR,,,
+VNR,Australia/Brisbane,Vanrook,VNR,AU,POINT (141.91667 -16.866667),85,,YVRS,,,
+WON,Australia/Brisbane,Wondoola,WON,AU,POINT (140.8919983 -18.5750008),124,,YWDL,,,
+WAV,Australia/Darwin,Kalkgurung,WAV,AU,POINT (130.95 -17.483334),702,,YWAV,,,
+WND,Australia/Perth,Windarra,WND,AU,POINT (121.833336 -28.266666),1387,,YWDA,,,
+WUN,Australia/Perth,Wiluna,WUN,AU,POINT (120.2205593 -26.6287769),1640,,YWLU,,,
+WLO,Australia/Darwin,Waterloo,WLO,AU,POINT (129.3200073 -16.6299992),406,,YWTL,,,
+WIT,Australia/Perth,Wittenoom,WIT,AU,POINT (118.333336 -22.266666),2342,,YWIT,,,
+WLA,Australia/Perth,Wallal,WLA,AU,POINT (120.65183811802402 -19.776862649999998),29,,YWAL,,,
+TEF,Australia/Perth,Telfer Airport,TEF,AU,POINT (122.22815627252444 -21.7139933),970,,YTEF,,,
+TDN,Australia/Perth,Theda Station,TDN,AU,POINT (126.4980529 -14.7892361),700,,YTHD,,,
+TYG,Australia/Brisbane,Thylungra,TYG,AU,POINT (143.4669952 -26.0832996),165,,YTHY,,,
+TYP,Australia/Darwin,Tobermorey,TYP,AU,POINT (137.9529707 -22.2560087),0,,YTMY,,,
+WWI,Australia/Perth,Woodie Woodie,WWI,AU,POINT (121.2340012 -21.6627998),882,,YWWI,,,
+PEK,Asia/Shanghai,Beijing Capital International Airport,BJS,CN,POINT (116.5942601992765 40.079155549999996),55,http://en.bcia.com.cn/,ZBAA,,,
+ORR,Australia/Adelaide,Yorketown,ORR,AU,POINT (137.6192858035999 -35.002820299999996),206,,YYOR,,,
+BHY,Asia/Chongqing,Beihai Fucheng Airport,BHY,CN,POINT (109.29173962146939 21.5391801),59,,ZGBH,Beihai,,
+KKI,America/Anchorage,Spb,KKI,US,POINT (-161.42223 60.906944),23,,Z13,,,
+SJW,Asia/Shanghai,Shijiazhuang Daguocun Airport,SJW,CN,POINT (114.68964497905779 38.2803561),216,,ZBSJ,,,
+BPE,Asia/Shanghai,Qinhuangdao Beidaihe Airport,SHP,CN,POINT (96 24),570,,ZBDH,,,
+KBC,America/Anchorage,Birch Creek,KBC,US,POINT (-145.8181182617975 66.2752817),450,,Z91,,,
+TDT,Africa/Johannesburg,Tanda Tula,TDT,ZA,POINT (31.3 -24.533333),1555,,FATD,,,
+CAN,Asia/Shanghai,Guangzhou Baiyun International Airport,CAN,CN,POINT (113.3015079267467 23.3931854),39,http://www.baiyunairport.com/english/index.jsp,ZGGG,,,
+KHO,Africa/Johannesburg,Khoka Moya,KHO,ZA,POINT (31.4152173 -24.5940802),1440,,"",,,
+TSN,Asia/Shanghai,Tianjin Binhai International Airport,TSN,CN,POINT (117.35483617593881 39.12745995),10,,ZBTJ,,,
+ZDY,Asia/Dubai,Delma Island Airport,ZDY,AE,POINT (52.33512436277246 24.51105115),30,http://www.adac.ae/english/what-we-do/airports/delma-airport,OMDL,,,
+KYI,Australia/Adelaide,Yalata Mission,KYI,AU,POINT (131.82077058060463 -31.46916915),0,,YYTA,,,
+KBW,America/Anchorage,Chignik Bay,KCL,US,POINT (-158.4013889 56.2955556),0,,Z78,,,
+CIF,Asia/Shanghai,Chifeng Airport,CIF,CN,POINT (118.91089 42.237392),1902,,ZBCF,,,
+CSX,Asia/Shanghai,Changsha Huanghua Airport,CSX,CN,POINT (113.21991433924589 28.190666049999997),45,,ZGHA,,,
+CZC,America/Anchorage,Copper Centre,CZC,US,POINT (-145.3 61.966667),994,,Z93,,,
+CZP,America/Sitka,Cape Pole,CZP,US,POINT (-133.7966667 55.9661111),0,,Z71,,,
+DYG,Asia/Shanghai,Zhangjiajie Hehua Airport,DYG,CN,POINT (110.44472066563625 29.103868499999997),679,,ZGDY,,,
+HZV,Africa/Johannesburg,Hazyview,HZV,ZA,POINT (31.1319476 -25.0494316),1745,,"",,,
+INY,Africa/Johannesburg,Inyati,INY,ZA,POINT (31.383333 -24.783333),1220,,"",,,
+JBT,America/Anchorage,City Landing,BET,US,POINT (-161.75 60.8),36,,Z59,,,
+LYA,Asia/Shanghai,Luoyang Beijiao Airport,LYA,CN,POINT (112.38655833509651 34.74071765),833,,ZHLY,,,
+NNG,Asia/Shanghai,Nanning Airport,NNG,CN,POINT (108.1778206273208 22.6087962),413,http://www.nnairport.com/,ZGNN,,,
+SYX,Asia/Shanghai,Sanya Phoenix International Airport,SYX,CN,POINT (109.4125578036077 18.30441145),92,,ZJSY,,,
+ZHY,Asia/Shanghai,Zhongwei Airport,ZHY,CN,POINT (105.15233253938072 37.5710553),8202,,ZLZW,,,
+NNY,Asia/Shanghai,Nanyang Airport,NNY,CN,POINT (112.61568318665394 32.9822422),360,,ZHNY,,,
+BAR,America/Sitka,Baker AAF,BAR,US,POINT (-133.6 55.333332),954,,ZJQH,,,
+CGO,Asia/Shanghai,Zhengzhou Xinzheng Airport,CGO,CN,POINT (113.84801423633316 34.5270534),475,,ZHCC,,,
+COQ,Asia/Choibalsan,Choibalsan,COQ,MN,POINT (114.9 48.13333),2450,,ZMCD,,,
+SIA,Asia/Shanghai,Xi'an Xiguan Airport,SIA,CN,POINT (108.75874 34.44104),1515,,ZLSN,,,
+DNH,Asia/Shanghai,Dunhuang Airport,DNH,CN,POINT (94.683334 40.2),3704,,ZLDH,,,
+HAK,Asia/Shanghai,Haikou Airport,HAK,CN,POINT (110.45927325175722 19.9442567),88,,ZJHK,,,
+SWA,Asia/Shanghai,Jieyang Chaoshan Airport,SWA,CN,POINT (116.75859 23.430237),85,,ZGOW,,,
+WUH,Asia/Shanghai,Wuhan Tianhe International Airport,WUH,CN,POINT (114.21236810445089 30.77382425),78,http://www.whairport.com/,ZHHH,,,
+WOS,Asia/Pyongyang,Wonsan,WOS,KP,POINT (-126.61667 50.216667),544,,ZKWS,,,
+LHW,Asia/Shanghai,Lanzhou Zhongchuan International Airport,LHW,CN,POINT (103.86667 36.033333),6388,,ZLLL,,,
+LUM,Asia/Shanghai,Dehong Mangshi Airport,LUM,CN,POINT (98.52863867335108 24.399627),2870,,ZPMS,,,
+TAO,Asia/Shanghai,Qingdao Liuting International Airport,TAO,CN,POINT (120.37679264563059 36.26799135),33,,ZSQD,,,
+ULN,Asia/Ulaanbaatar,Chinggis Khaan International Airport,ULN,MN,POINT (106.76327 47.85275),4364,,ZMUB,,,
+FOC,Asia/Shanghai,Changle International Airport,FOC,CN,POINT (119.66617231883538 25.934525450000002),154,http://www.xiafz.com.cn/en/index.asp,ZSFZ,,,
+HFE,Asia/Shanghai,Hefei Xinqiao Airport,HFE,CN,POINT (117.28333 31.85),95,,ZSOF,,,
+HGH,Asia/Shanghai,Hangzhou Xiaoshan International Airport,HGH,CN,POINT (120.42912444938366 30.2368729),26,http://www.hzairport.com/,ZSHC,,,
+ZNU,America/Vancouver,Namu,ZNU,CA,POINT (-127.86667 51.85),0,,"",,,
+HJT,Asia/Ulaanbaatar,Khujirt,HJT,MN,POINT (102.7695436 46.9214273),5410,,ZMHU,,,
+JIU,Asia/Shanghai,Jiujiang,JIU,CN,POINT (115.96667 29.7),52,,ZSJJ,,,
+URC,Asia/Shanghai,Urumqi Diwopu International Airport,URC,CN,POINT (87.46801888787405 43.903818349999995),2125,,ZWWW,,,
+IQM,Asia/Shanghai,Qiemo Airport,IQM,CN,POINT (85.53253116530601 38.14958345),4137,,ZWCM,,,
+KGT,Asia/Shanghai,Kangding Airport,KGT,CN,POINT (101.73869761734343 30.143070950000002),14042,,ZUKD,,,
+NGQ,Asia/Shanghai,Ngari Gunsa/Ali Kunsha,NGQ,CN,POINT (80.05632796534377 32.101337400000006),13986,,ZUAL,,,
+KRY,Asia/Shanghai,Karamay Airport,KRY,CN,POINT (84.88333 45.61667),0,,ZWKM,,,
+YUS,Asia/Shanghai,Yushu Batang Airport,YUS,CN,POINT (97.03762704809733 32.836430500000006),12816,,ZYLS,,,
+YNJ,Asia/Shanghai,Yanji Chaoyangchuan Airport,YNJ,CN,POINT (129.4487048951637 42.8787858),624,,ZYYJ,,,
+MCC,America/Los_Angeles,Mcclellan AFB,SAC,US,POINT (-121.40950556672901 38.6646655),62,,KMCC,North Highlands,Sacramento County,California
+MCD,America/Detroit,Mackinac Island,MCD,US,POINT (-84.63660473216783 45.8647948),725,,KMCD,Saint Ignace,Mackinac County,Michigan
+MCI,America/Chicago,Kansas City International Airport,MKC,US,POINT (-94.72118991743454 39.3023103),977,http://www.flykci.com/,KMCI,Weatherby Lake,Platte County,Missouri
+MCO,America/New_York,Orlando International Airport,ORL,US,POINT (-81.30944309752753 28.412903550000003),82,http://www.orlandoairports.net/,KMCO,Taft,Orange County,Florida
+MCA,Africa/Conakry,Macenta,MCA,GN,POINT (-9.466667 8.55),1768,,GUMA,Macenta,Macenta,Nzerekore
+JSJ,Asia/Shanghai,Jiansanjiang Shidi Airport,JSJ,CN,POINT (132.6632288591807 47.1066465),0,,ZYJS,Fujin,,Heilongjiang Sheng
+LDS,Asia/Shanghai,Yichun Shi Airport,LDS,CN,POINT (129.01718760024562 47.75241185),791,,ZYLD,Xuri,,Heilongjiang Sheng
+MCB,America/Chicago,Pike County,MCB,US,POINT (-90.469444 31.175556),367,,KMCB,Magnolia,Pike County,Mississippi
+MCQ,Europe/Budapest,Miskolc,MCQ,HU,POINT (20.789699376565146 48.1377737),406,http://www.lhmc.hu/,LHMC,Arnot,,Borsod-Abauj-Zemplen
+MCH,America/Guayaquil,Machala,MCH,EC,POINT (-79.98333 -3.266667),26,,SEMH,Puerto Bolivar,,El Oro
+JNZ,Asia/Shanghai,Liaoning Province Airport,JNZ,CN,POINT (121.01667 41.11667),0,,ZYJZ,Wanghu,,Liaoning
+JXA,Asia/Shanghai,Jixi Airport,JXA,CN,POINT (130.99675 45.306084),760,,ZYJX,Hongjunlu,,Heilongjiang Sheng
+DLC,Asia/Shanghai,Dalian Zhoushuizi International Airport,DLC,CN,POINT (121.54142723753361 38.96412695),62,,ZYTL,Dalian,Dalian Shi,Liaoning
+FYJ,Asia/Shanghai,Fuyuan Dongji Airport,FYJ,CN,POINT (134.366447 48.199494),167,,ZYFY,Fuyuan,,Heilongjiang Sheng
+HEK,Asia/Shanghai,Heihe Airport,HEK,CN,POINT (127.433334 50.216667),547,,ZYHE,Xinfu,,Heilongjiang Sheng
+HRB,Asia/Shanghai,Harbin Taiping International Airport,HRB,CN,POINT (126.24525735616052 45.62212125),456,,ZYHB,,,
+JIL,Asia/Shanghai,Jilin,JIL,CN,POINT (126.65 43.86667),859,,ZYJL,Jilin,,Jilin Sheng
+JMU,Asia/Shanghai,Jiamusi Airport,JMU,CN,POINT (130.46148538753062 46.843340850000004),249,,ZYJM,Songjiang,,Heilongjiang Sheng
+MCK,America/Chicago,Mc Cook Airport,MCK,US,POINT (-100.66805 40.26389),2657,,KMCK,McCook,Red Willow County,Nebraska
+MCM,Europe/Monaco,Fontvieille Heliport,MCM,MC,POINT (7.416667 43.733334),229,,,Monaco,,Commune de Monaco
+MCR,America/Guatemala,Melchor De Menco,MCR,GT,POINT (-92.00833 17),4455,,,Chiquinival,Chilon,Chiapas
+MCU,Europe/Paris,Gueret (Lepaud),MCU,FR,POINT (2.6 46.35),652,,LFBK,Montlucon,Departement de l'Allier,Auvergne
+MCW,America/Chicago,Mason City Airport,MCW,US,POINT (-93.329445 43.156944),1197,,KMCW,Clear Lake,Cerro Gordo County,Iowa
+MFU,Africa/Lusaka,Mfuwe,MFU,ZM,POINT (31.942546721089855 -13.25844945),1820,,FLMF,Chipata,,Eastern
+MFX,Europe/Paris,Meribel,MFX,FR,POINT (6.57733888687692 45.407949900000006),5534,,LFKX,Meribel,Departement de la Savoie,Rhone-Alpes
+MFY,Asia/Aden,Mayfa'ah,MFY,YE,POINT (46.00833 13.666667),2755,,,Al Wuday`,Al Wade'a,Abyan
+MGA,America/Managua,Augusto C Sandino International Airport,MGA,NI,POINT (-86.16885964895833 12.141385),157,,MNMG,Managua,,Managua
+MGB,Australia/Adelaide,Mount Gambier Airport,MGB,AU,POINT (140.78467447439613 -37.74632345),137,,YMTG,Mount Gambier,Mount Gambier,South Australia
+MGC,America/Chicago,Michigan City Airport,MGC,US,POINT (-86.8214164 41.7030963),636,http://www.emichigancity.com/cityhall/departments/airport/index.htm,KMGC,Trail Creek,LaPorte County,Indiana
+MGF,America/Sao_Paulo,Regional De Maringa,MGF,BR,POINT (-51.933334 -23.383612),1594,,SBMG,Maringa,Maringa,Parana
+MGH,Africa/Johannesburg,Margate Airport,MGH,ZA,POINT (30.25 -30.916668),734,,FAMG,Margate,Ugu District Municipality,KwaZulu-Natal
+MGI,America/Chicago,Aransas National Wildlife Refuge,MGI,US,POINT (-96.5 28.25),0,,"",Port O'Connor,Calhoun County,Texas
+MGJ,America/New_York,Orange County,MGJ,US,POINT (-74.26667 41.516666),344,http://www.orangecountygov.com/content/124/1354/default.aspx,KMGJ,Montgomery,Orange County,New York
+MFV,America/New_York,Accomack County,MFV,US,POINT (-75.76022473099388 37.64691175),49,http://www.co.accomack.va.us/departments/airport,KMFV,Onancock,Accomack County,Virginia
+MGL,Europe/Berlin,Moenchen-gl. - Dus Exp,DUS,DE,POINT (6.544444 51.35278),91,,EDLN,Krefeld,Regierungsbezirk Dusseldorf,North Rhine-Westphalia
+MHN,America/Denver,Mullen,MHN,US,POINT (-101.058808 42.0421657),3211,,"",Mullen,Hooker County,Nebraska
+MGN,America/Bogota,Baracoa,MGN,CO,POINT (-74.845 9.288056),157,,SKMG,Magangue,,Bolivar
+MGO,Africa/Libreville,Manega,MGO,GA,POINT (10.216667 -1.733333),157,,"",Fougamou,,Ngounie
+MGU,Asia/Rangoon,Manaung,MGU,MM,POINT (93.73889 18.958332),0,,VYMN,Sittwe,,Rakhine
+MGW,America/New_York,Morgantown Airport,MGW,US,POINT (-79.91583 39.642776),1181,,KMGW,Brookhaven,Monongalia County,West Virginia
+MGY,America/New_York,Dayton-Wright Brothers Airport,DAY,US,POINT (-84.25444 39.933334),938,http://www.flydayton.com/?page=wright-brothers-airport-2,KMGY,Union,Montgomery County,Ohio
+MHE,America/Chicago,Municipal,MHE,US,POINT (-98.038055 43.775276),1312,http://www.cityofmitchell.org/index.asp?SEC=0E5EB6F8-1E38-48AD-8D27-2CDD01C4E949&Type=B_BASIC,KMHE,Mitchell,Davison County,South Dakota
+MHI,Africa/Djibouti,Musha,MHI,DJ,POINT (43 11),1302,,HDMO,Danan,,Ali Sabieh
+MHL,America/Chicago,Memorial Municipal,MHL,US,POINT (-93.2 39.11667),790,http://www.marshall-mo.com/cm_airport.html,KMHL,Marshall,Saline County,Missouri
+MHP,Europe/Minsk,Minsk International 1,MSQ,BY,POINT (27.55 53.85),770,,UMMM,Syenitsa,,Minsk
+MHS,America/Los_Angeles,Rep,MHS,US,POINT (-122.316666 41.316666),3572,,KMHS,Mount Shasta,Siskiyou County,California
+MIU,Africa/Lagos,Maiduguri,MIU,NG,POINT (13.085247833739285 11.85667135),1053,http://www.faannigeria.org/nigeria-airport.php?airport=14,DNMA,Maiduguri,,Borno
+MHU,Australia/Melbourne,Mount Hotham,MHU,AU,POINT (147.18333 -36.966667),5013,,YHOT,Mount Beauty,Alpine,Victoria
+MHV,America/Los_Angeles,Kern County,MHV,US,POINT (-118.15 35.066666),2765,,KMHV,Mojave,Kern County,California
+MIV,America/New_York,Millville,MIV,US,POINT (-75.0718554 39.3688419),75,,KMIV,Millville,Cumberland County,New Jersey
+MHZ,Europe/London,Mildenhall Airport,MHZ,GB,POINT (0.483333 52.36667),26,http://www.mildenhall.af.mil/,EGUN,Lakenheath,Suffolk,England
+MJP,Australia/Perth,Manjimup,MJP,AU,POINT (116.1368076 -34.2635031),882,http://www.manjimupwa.com,YMJM,Manjimup,Manjimup,Western Australia
+MIE,America/Indiana/Indianapolis,Delaware County,MIE,US,POINT (-85.39445 40.239723),928,,KMIE,Muncie,Delaware County,Indiana
+MOH,Asia/Makassar,Maleo Airport,MOH,ID,POINT (121.660278 -2.203333),19,https://en.wikipedia.org/wiki/Maleo_Airport,"",Malili,,South Sulawesi
+MIF,America/Chicago,Roy Hurd Memorial,MIF,US,POINT (-102.9 31.6),2618,http://www.cityofmonahans.org/index.asp?SEC=63860F5B-0F7B-4986-B494-851041B4C76D&Type=B_BASIC,E01,Monahans,Ward County,Texas
+MIG,Asia/Shanghai,Mianyang Nanjiao Airport,MIG,CN,POINT (104.73805 31.43111),1666,,ZUMY,Mianyang,,Sichuan
+MII,America/Sao_Paulo,Dr Gastao Vidigal Airport,MII,BR,POINT (-49.933334 -22.2),2014,,SBML,Marilia,Marilia,Sao Paulo
+MIJ,Pacific/Majuro,Mili Island,MIJ,MH,POINT (171.75 6.083333),0,,MLIP,Mili,,Mili Atoll
+MIO,America/Chicago,Miami,MIO,US,POINT (-94.9 36.88333),807,,,Miami,Ottawa County,Oklahoma
+MJS,Africa/Maputo,Maganja Da Costa,MJS,MZ,POINT (32.22 -25.35),272,,"",Ressano Garcia,,Maputo
+MJT,Europe/Athens,Mytilene International Airport,MJT,GR,POINT (26.599060222770895 39.057918),26,,LGMT,Vareia,Nomos Lesvou,North Aegean
+MJU,Asia/Makassar,Tampa Padang Airport,MJU,ID,POINT (118.833336 -2.5),0,,WAWJ,Mamuju,,Sulawesi Barat
+MJV,Europe/Madrid,Murcia-San Javier Airport,MJV,ES,POINT (-0.817794776107736 37.77661405),32,,LELC,San Javier,Murcia,Murcia
+MJW,Africa/Harare,Mahenye,MJW,ZW,POINT (32.3334757 -21.2302956),875,,FVMH,Chiredzi,,Masvingo
+MJX,America/New_York,Robert J. Miller,MJX,US,POINT (-74.2 39.966667),49,http://www.planning.co.ocean.nj.us/rjmiller/index.htm,KMJX,Toms River,Ocean County,New Jersey
+MJY,Asia/Jakarta,Mangunjaya,MJY,ID,POINT (103.5670013 -2.73333),75,,,Babat,,South Sumatra
+MJZ,Asia/Yakutsk,Mirnyj Airport,MJZ,RU,POINT (114.03333 62.533333),1243,,UERR,Mirny,,Sakha
+MKA,Europe/Prague,Marianske Lazne,MKA,CZ,POINT (12.716667 49.983334),2398,,LKMR,Marianske Lazne,Okres Cheb,Karlovarsky
+MKC,America/Chicago,Charles B. Wheeler Downtown Airport,MKC,US,POINT (-94.59283934048761 39.12417015),754,,KMKC,Kansas City,Jackson County,Missouri
+MKE,America/Chicago,General Mitchell International Airport,MKE,US,POINT (-87.89722765596173 42.946542300000004),679,http://www.mitchellairport.com,KMKE,Saint Francis,Milwaukee County,Wisconsin
+MKF,America/New_York,Mckenna AAF,CSG,US,POINT (-84.98333 32.466667),252,,,Columbus,Muscogee County,Georgia
+MKG,America/Detroit,Muskegon Airport,MKG,US,POINT (-86.2370531 43.1703365),613,,KMKG,Norton Shores,Muskegon County,Michigan
+MKI,Africa/Bangui,Mboki,MKI,CF,POINT (25.95 5.316667),1965,,FEGE,Obo,,Haut-Mbomou
+MKJ,Africa/Brazzaville,Makoua,MKJ,CG,POINT (15.5803939 -0.0199679),1243,,FCOM,Makoua,,Cuvette
+MKK,Pacific/Honolulu,Molokai Airport,MKK,US,POINT (-157.09621613900626 21.15264475),459,,PHMK,Kualapu'u,Maui County,Hawaii
+MKU,Africa/Libreville,Makokou,MKU,GA,POINT (12.89079014893444 0.57961795),1679,,FOOK,Makokou,,Ogooue-Ivindo
+MLA,Europe/Malta,Malta International Airport,MLA,MT,POINT (14.492295178989536 35.84739655),183,http://www.maltairport.com/en/home.htm,LMML,Luqa,,Luqa
+MKS,Africa/Addis_Ababa,Mekane Selam,MKS,ET,POINT (38.15 11.683333),9734,,HAMA,Debre Tabor,,Amhara
+MKT,America/Chicago,Municipal,MKT,US,POINT (-93.918335 44.22361),918,,,Eagle Lake,Blue Earth County,Minnesota
+MLB,America/New_York,Orlando Melbourne International Airport,MLB,US,POINT (-80.64815801235798 28.1027201),49,,KMLB,Melbourne,Brevard County,Florida
+MLD,America/Boise,Malad City,MLD,US,POINT (-112.45 42.2),7244,,,Malad City,Oneida County,Idaho
+MLT,America/New_York,Millinocket,MLT,US,POINT (-68.69098380008309 45.6478685),370,,,Millinocket,Penobscot County,Maine
+MLW,Africa/Monrovia,Sprigg Payne,MLW,LR,POINT (-10.758333 6.289444),39,,GLMR,Monrovia,,Montserrado
+MLX,Europe/Istanbul,Malatya Airport,MLX,TR,POINT (38.253613 38.354443),3008,,LTAT,Yesilyurt,,Malatya
+MMA,Europe/Stockholm,Malmö Bulltofta Airport,MMA,DK,POINT (13.059722 55.605),16,,,Arloev,Burlovs Kommun,Skane
+MMC,America/Monterrey,Ciudad Mante,MMC,MX,POINT (-99 22.833332),206,,MMDM,Ciudad Mante,,Tamaulipas
+MLZ,America/Montevideo,Cerro Largo,MLZ,UY,POINT (-54.21795722761725 -32.33858835),311,,SUMO,Melo,,Cerro Largo
+MMB,Asia/Tokyo,Memanbetsu Airport,MMB,JP,POINT (144.16144903777698 43.88265885),75,,RJCM,Bihoro,,Hokkaido
+MMN,America/New_York,Minute Man Airfield,MMN,US,POINT (-71.51801357130509 42.460355899999996),226,,,Stow,Middlesex County,Massachusetts
+MNH,Asia/Colombo,Minneriya,MNH,LK,POINT (83 7.75),372,,OOMN,Kalmunai,,Eastern Province
+MMI,America/New_York,McMinn County,MMI,US,POINT (-84.6757 35.52303),853,http://www.mcminncountytn.gov/airport/airport.html,KMMI,Decatur,Meigs County,Tennessee
+MMJ,Asia/Tokyo,Matsumoto Airport,MMJ,JP,POINT (137.96666 36.233334),1932,http://www.matsumoto-airport.co.jp/,RJAF,Matsumoto,,Nagano
+MMS,America/Chicago,Selfs,MMS,US,POINT (-90.2895376 34.2315002),141,,KMMS,Marks,Quitman County,Mississippi
+MML,America/Chicago,Municipal-Ryan Field,MML,US,POINT (-95.8175 44.447224),1141,http://marshallmn.com/main/index.php/public-works/airport,KMML,Marshall,Lyon County,Minnesota
+MMZ,Asia/Kabul,Maimana,MMZ,AF,POINT (64.76118060946182 35.9304371),2723,,OAMN,Maymana,,Faryab
+MMO,Atlantic/Cape_Verde,Vila Do Maio,MMO,CV,POINT (-23.166668 15.25),95,,GVMA,Vila do Maio,,Maio
+MNK,Pacific/Tarawa,Maiana,MNK,KI,POINT (173.0310059 1.00361),19,,NGMA,Tarawa,Tarawa,Gilbert Islands
+MNU,Asia/Rangoon,Maulmyine,MNU,MM,POINT (97.66944 16.441668),275,,VYMM,Mawlamyine,,Mon
+MOF,Asia/Makassar,Wai Oti Airport,MOF,ID,POINT (122.23624998248422 -8.64105065),98,,WATC,Waioti,,East Nusa Tenggara
+MNZ,America/New_York,Manassas Regional Airport/Harry P. Davis Field,MNZ,US,POINT (-77.51806 38.721943),164,http://www.manassascity.org/Index.aspx?NID=131,KHEF,Manassas,City of Manassas,Virginia
+MOA,America/Havana,Orestes Acosta,MOA,CU,POINT (-74.88333 20.5),2854,,MUMO,Moa,,Holguin
+MOG,Asia/Rangoon,Mong Hsat,MOG,MM,POINT (99.26262107388541 20.51560855),1870,,VYMS,Mae Ai,,Chiang Mai
+MOD,America/Los_Angeles,Modesto Municipal Airport,MOD,US,POINT (-120.95528 37.626945),42,,KMOD,Bystrom,Stanislaus County,California
+NDE,Africa/Nairobi,Mandera,NDE,KE,POINT (41.8433732 3.9337923),675,,HKMA,Mandera,,Mandera
+MOJ,America/Paramaribo,Moengo,MOJ,SR,POINT (-54.333332 5.75),95,,SMMO,Moengo,,Marowijne
+MOM,Africa/Nouakchott,Moudjeria,MOM,MR,POINT (-12.5 17.75),239,,GQNL,Barkewol,,Assaba
+MOP,America/Detroit,Municipal,MOP,US,POINT (-84.73333 43.61667),748,,,Mount Pleasant,Isabella County,Michigan
+MOR,America/New_York,Moore-Murrell,MOR,US,POINT (-83.3 36.216667),1417,,,Morristown,Hamblen County,Tennessee
+MOX,America/Chicago,Municipal,MOX,US,POINT (-95.916664 45.583332),1128,,,Morris,Stevens County,Minnesota
+MOY,America/Bogota,Monterrey,MOY,CO,POINT (-72.89528 4.884167),1496,,"",Monterrey,,Casanare
+MOZ,Pacific/Tahiti,Temae Airport,MOZ,PF,POINT (-149.76414 -17.490433),32,,NTTM,Teavaro,,
+MPC,Asia/Jakarta,Muko-Muko,MPC,ID,POINT (101.1 -2.55),36,,WIPU,Sungai Penuh,,Jambi
+MPD,Asia/Karachi,Mirpur Khas,MPD,PK,POINT (69.03333 25.65),45,,OPMP,Mirpur Khas,,Sindh
+MPI,America/Panama,Mamitupo,MPI,PA,POINT (-79.843056 9.578333),0,,"",Maria Chiquita,,Colon
+MPV,America/New_York,Edward F Knapp State,MPV,US,POINT (-72.56498067174682 44.2038643),1102,,KMPV,Montpelier,Washington County,Vermont
+MPW,Europe/Kiev,Mariupol,MPW,UA,POINT (37.55 47.1),170,http://www.maraero.com/,UKCM,Mariupol,,Donetsk
+MPZ,America/Chicago,Municipal,MPZ,US,POINT (-91.55 40.966667),738,https://www.cityofmountpleasantiowa.org/citysite/citydepartments/publicworks_airport.aspx,KMPZ,Mount Pleasant,Henry County,Iowa
+MQA,Australia/Perth,Mandora,MQA,AU,POINT (120.8376903313825 -19.737702),32,,YMDI,Broome,Broome,Western Australia
+MQB,America/Chicago,Municipal,MQB,US,POINT (-90.62139 40.4525),652,http://www.macombairport.com/,KMQB,Macomb,McDonough County,Illinois
+MQC,America/Miquelon,Miquelon Airport,MQC,PM,POINT (-56.333332 47.05),380,,LFVM,Miquelon,,Miquelon-Langlade
+MQF,Asia/Yekaterinburg,Magnitogorsk Airport,MQF,RU,POINT (59.066666 53.45),1279,,USCM,Magnitogorsk,Gorod Magnitogorsk,Chelyabinsk
+MQG,Africa/Windhoek,Midgard,MQG,NA,POINT (17.366667 -22.083332),5203,,FYMG,Okahandja,,Otjozondjupa
+MQH,America/Sao_Paulo,Municipal,MQH,BR,POINT (-48.233334 -13.533333),1312,,SWIQ,Cavalcante,Cavalcante,Goias
+MQI,America/New_York,Quincy,MQI,US,POINT (-71 42.25),62,,,Quincy,Norfolk County,Massachusetts
+MQL,Australia/Melbourne,Mildura Airport,MQL,AU,POINT (142.08837740764827 -34.23063835),124,http://www.milduraairport.com.au/,YMIA,Mildura,Mildura Shire,Victoria
+MQM,Europe/Istanbul,Mardin Airport,MQM,TR,POINT (40.630733428599925 37.2224305),1643,,LTCR,Kiziltepe,,Mardin
+MQN,Europe/Oslo,Mo i Rana Airport,MQN,NO,POINT (14.301861576067283 66.36408109999999),173,https://avinor.no/en/airport/mo-i-rana-airport/,ENRA,Mo i Rana,Rana,Nordland
+MQP,Africa/Johannesburg,Kruger Mpumalanga International Airport,NLP,ZA,POINT (31.106954598075028 -25.38178745),2775,,FAKN,White River,Ehlanzeni District,Mpumalanga
+MQD,America/Argentina/Salta,Maquinchao,MQD,AR,POINT (-68.7072439 -41.2413728),2880,,SAVQ,Maquinchao,,Rio Negro
+MQR,America/Bogota,Mosquera,MQR,CO,POINT (-78.416664 2.5),104,,"",Mosquera,,Narino
+MRS,Europe/Paris,Marseille Provence Airport,MRS,FR,POINT (5.222137 43.44178),55,http://www.marseille.aeroport.fr,LFML,Saint-Victoret,Departement des Bouches-du-Rhone,Provence-Alpes-Cote d'Azur
+MRU,Indian/Mauritius,Sir Seewoosagur Ramgoolam International Airport,MRU,MU,POINT (57.684949281775644 -20.4325615),104,http://aml.mru.aero/,FIMP,Plaine Magnien,,Grand Port
+MRV,Europe/Moscow,Mineralnye Vody Airport,MRV,RU,POINT (43.081651070827434 44.22621995),1059,,URMM,Andzhiyevskiy,,Stavropol'skiy
+MRW,Europe/Copenhagen,Maribo,MRW,DK,POINT (11.435 54.685833),32,http://www.lollandfalsterairport.dk/,EKMB,Holeby,Lolland Kommune,Zealand
+MRY,America/Los_Angeles,Monterey Regional Airport,MRY,US,POINT (-121.84193978436595 36.58705795),209,,KMRY,Del Rey Oaks,Monterey County,California
+MRZ,Australia/Sydney,Moree Airport,MRZ,AU,POINT (149.8512411 -29.4939246),702,,YMOR,Moree,Moree Plains,New South Wales
+MSC,America/Phoenix,Falcon Field,MSC,US,POINT (-111.833336 33.416668),1230,http://www.falconfieldairport.com/,KFFZ,Mesa,Maricopa County,Arizona
+MSD,America/Denver,Mt Pleasant,MSD,US,POINT (-111.47444 39.524723),5853,,"",Mount Pleasant,Sanpete County,Utah
+MTK,Pacific/Tarawa,Makin Island,MTK,KI,POINT (174 3),0,,NGMN,Makin Village,Makin,Gilbert Islands
+MSE,Europe/London,Kent International,MSE,GB,POINT (1.35 51.35),121,http://www.kentinternationalairport-manston.com/,EGMH,Westgate on Sea,Kent,England
+MSH,Asia/Muscat,Masirah,MSH,OM,POINT (58.89080893136915 20.667274749999997),52,,OOMA,Badiyah,,Ash Sharqiyah
+MSI,Asia/Jakarta,Masalembo,MSI,ID,POINT (114.433334 -5.583333),62,,"",Perreng,,East Java
+MSJ,Asia/Tokyo,Misawa,MSJ,JP,POINT (141.3717860384605 40.701300950000004),91,,RJSM,Misawa,,Aomori
+MSL,America/Chicago,Northwest Alabama Regional Airport,MSL,US,POINT (-87.61152944061621 34.745892749999996),508,,KMSL,Muscle Shoals,Colbert County,Alabama
+MSM,Africa/Kinshasa,Masi Manimba,MSM,CD,POINT (17.916668 -4.766667),1263,,FZCV,Bulungu,,Bandundu
+MSN,America/Chicago,Dane County Regional Airport,MSN,US,POINT (-89.33774533660622 43.1420815),846,,KMSN,Maple Bluff,Dane County,Wisconsin
+MRX,Asia/Tehran,Mahshahr Airport,MRX,IR,POINT (49.14683456086563 30.56090975),39,,OIAM,Bandar-e Mahshahr,,Khuzestan
+MSX,Africa/Brazzaville,Mossendjo,MSX,CG,POINT (12.699002 -2.9461641),1466,,FCMM,Mossendjo,,Niari
+MUH,Africa/Cairo,Mersa Matruh,MUH,EG,POINT (27.2265777423804 31.3168929),91,,HEMM,Mersa Matruh,,Muhafazat Matruh
+MVE,America/Chicago,Montevideo-Chippewa,MVE,US,POINT (-95.70993869562936 44.96828215),997,,KMVE,Montevideo,Chippewa County,Minnesota
+MTS,Africa/Mbabane,Matsapha International,MTS,SZ,POINT (31.314133 -26.52033),2073,http://www.eswacaa.co.sz/airports/matsapha/index.php,FDMS,Kwaluseni,,Manzini
+MTT,America/Mexico_City,Minatitlan Airport,MTT,MX,POINT (-94.51667 17.983334),3,http://www.asur.com.mx/asur/ingles/aeropuertos/minatitlan/minatitlan.asp,MMMT,Minatitlan,,Veracruz
+MTU,Africa/Maputo,Montepuez,MTU,MZ,POINT (38.983334 -13.133333),1656,,"",Montepuez,,Cabo Delgado
+MTW,America/Chicago,Municipal,MTW,US,POINT (-87.68222 44.129723),639,,KMTW,Manitowoc,Manitowoc County,Wisconsin
+MTX,America/Anchorage,Metro Field,FAI,US,POINT (-147.86667 64.816666),426,,MTF,College,Fairbanks North Star Borough,Alaska
+MTY,America/Monterrey,Gen Mariano Escobedo Airport,MTY,MX,POINT (-100.114395 25.77657),1286,,MMMY,Ladrillera (Entronque Pesqueria),Pesqueria,Nuevo Leon
+MTZ,Asia/Jerusalem,Masada,MTZ,IL,POINT (35.75 33.233334),2962,,LLMZ,Mas`adah,,Quneitra
+MUC,Europe/Berlin,Franz Josef Strauss Airport,MUC,DE,POINT (11.790143 48.353004),1486,http://www.munich-airport.com/,EDDM,Hallbergmoos,Upper Bavaria,Bavaria
+MUD,Africa/Maputo,Mueda,MUD,MZ,POINT (39.516666 -11.666667),1912,,FQMD,Newala Kisimani,,Mtwara
+MVR,Africa/Douala,Salam,MVR,CM,POINT (14.256389 10.452222),1332,,FKKL,Maroua,,Far North
+MVS,America/Bahia,Aeroporto Max Feffer,MVS,BR,POINT (-39.566666 -18.083332),32,,SNMU,Mucuri,Mucuri,Bahia
+MVU,Australia/Brisbane,Musgrave,MVU,AU,POINT (143.68333 -14.166667),32,,YMGV,Cooktown,Cook,Queensland
+MVX,Africa/Libreville,Minvoul,MVX,GA,POINT (12.1065891 2.1533679),1909,,FOGV,Bitam,,Woleu-Ntem
+MVW,America/Los_Angeles,Skagit Regional,MVW,US,POINT (-122.333336 48.416668),32,http://www.portofskagit.com/skagit-regional-airport/,KBVS,Mount Vernon,Skagit County,Washington
+MWD,Asia/Karachi,Mianwali,MWD,PK,POINT (71.56651476611873 32.5643063),705,,OPMI,Mianwali,,Punjab
+MXF,America/Chicago,Maxwell AFB,MGM,US,POINT (-86.35332352896833 32.3819625),167,,KMXF,Montgomery,Montgomery County,Alabama
+MXR,Europe/Kiev,Mirgorod,MXR,UA,POINT (33.6344544431705 49.93083825),364,,"",Myrhorod,,Poltava
+MWH,America/Los_Angeles,Grant County,MWH,US,POINT (-119.31556 47.205),1128,http://www.portofmoseslake.com/the-center-of-washington-aviation/,KMWH,Moses Lake North,Grant County,Washington
+MWJ,America/Guyana,Matthews Ridge,MWJ,GY,POINT (-59.9 6.55),426,,SYMR,Bartica,,Cuyuni-Mazaruni
+MWN,Africa/Dar_es_Salaam,Mwadui,MWN,TZ,POINT (33.6 -3.55),3963,,HTMD,Mwadui,,Shinyanga
+MWQ,Asia/Rangoon,Magwe,MWQ,MM,POINT (94.94111 20.166668),288,,VYMW,Magway,,Magway
+MWS,America/Los_Angeles,Mount Wilson,MWS,US,POINT (-118.066666 34.216667),4619,,,Sierra Madre,Los Angeles County,California
+MWV,Asia/Phnom_Penh,Mundulkiri,MWV,KH,POINT (107.190834 12.460556),2270,,VDMK,Senmonourom,,Mondolkiri
+MXS,Pacific/Apia,Maota Savaii Island,MXS,WS,POINT (-172.23334 -13.716667),305,,NSMA,Safotulafai,,Fa`asaleleaga
+MXU,Australia/Perth,Mullewa,MXU,AU,POINT (115.51667 -28.55),971,,YMWA,Waggrakine,Geraldton-Greenough,Western Australia
+MXV,Asia/Ulaanbaatar,Moron,MXV,MN,POINT (100.166664 49.63333),4202,,ZMMN,Murun-kuren,,Hovsgol
+MXX,Europe/Stockholm,Mora Airport,MXX,SE,POINT (14.504529 60.95812),574,,ESKM,Mora,Mora Kommun,Dalarna
+MXZ,Asia/Shanghai,Mei Xian Airport,MXZ,CN,POINT (116.10449 24.266811),298,,ZGMX,Sanjiao,,Guangdong
+MXW,Asia/Ulaanbaatar,Mandalgobi,MXW,MN,POINT (106.267345 45.7426207),4550,,ZMMG,Mandalgovi,,Middle Govi
+MYB,Africa/Libreville,Mayoumba,MYB,GA,POINT (10.683333 -3.45),0,,FOOY,Mayumba,,Nyanga
+MYC,America/Caracas,Maracay,MYC,VE,POINT (-68.166664 10.5),82,,SVBS,Moron,Municipio Juan Jose Mora,Carabobo
+MYE,Asia/Tokyo,Miyake Jima,MYE,JP,POINT (139.5625 34.069443),0,,RJTQ,Shimoda,,Shizuoka
+MYL,America/Boise,Mccall,MYL,US,POINT (-116.1 44.916668),5003,http://www.mccall.id.us/services/airport.html,KMYL,McCall,Valley County,Idaho
+MYP,Asia/Ashgabat,Mary Airport,MYP,TM,POINT (61.833332 37.666668),708,,UTAM,Mary,,Mary
+MYQ,Asia/Kolkata,Mysore,MYQ,IN,POINT (76.65 12.3),2404,,VOMY,Mysore,Mysore,Karnataka
+MYT,Asia/Rangoon,Myitkyina Airport,MYT,MM,POINT (97.29889 25.354168),439,,VYMK,Myitkyina,,Kachin
+MYZ,Africa/Blantyre,Monkey Bay,MYZ,MW,POINT (34.533333 -14.1),1594,,FWMY,Chipoka,Salima District,Central Region
+MZA,America/Lima,Mayor Pnp Nancy Flore Airport,MZA,PE,POINT (-74.536111 -11.325),2234,,SPMF,Mazamari,Provincia de Satipo,Junin
+MZC,Africa/Libreville,Mitzic,MZC,GA,POINT (11.566667 0.783333),1801,,FOOM,Mitzic,,Woleu-Ntem
+MZW,Africa/Algiers,Mechria,MZW,DZ,POINT (-0.242848009039097 33.52692475),3641,,DAAY,Naama,,Wilaya de Naama
+MZU,Asia/Kolkata,Muzaffarpur,MZU,IN,POINT (85.38333 26.116667),190,,VEMZ,Muzaffarpur,Muzaffarpur,Bihar
+MZX,Africa/Addis_Ababa,Mena,MZX,ET,POINT (39.716667 6.35),4406,,,Goba,,Oromiya
+MZZ,America/Indiana/Indianapolis,Marion,MZZ,US,POINT (-85.67944 40.490833),839,http://kmzzairport.com/,KMZZ,Jonesboro,Grant County,Indiana
+NAB,America/New_York,Albany NAS,ABY,US,POINT (-84.166664 31.583332),193,,,Albany,Dougherty County,Georgia
+NAC,Australia/Adelaide,Naracoorte,NAC,AU,POINT (140.83333 -36.95),236,,YNRC,Naracoorte,Naracoorte and Lucindale,South Australia
+MZY,Africa/Johannesburg,Mossel Bay,MZY,ZA,POINT (22.060188793545002 -34.1563616),521,http://www.mosselbayaero.com/wmenu.php,FAMO,Mossel Bay,Eden District Municipality,Western Cape
+NAX,Pacific/Honolulu,Kalaeloa John Rodgers Field,NAX,US,POINT (-158.07260091830352 21.30863315),52,,,Makakilo City,Honolulu County,Hawaii
+NAF,Asia/Makassar,Banaina,NAF,ID,POINT (117.05 2.75),321,,"",Long Beluah,,North Kalimantan
+NBH,Australia/Sydney,Nambucca Heads,NBH,AU,POINT (152.98322072164777 -30.673263249999998),42,,YNHS,Nambucca,Nambucca Shire,New South Wales
+NAH,Asia/Makassar,Naha,NAH,ID,POINT (125.36667 3.716667),0,,WAMH,Enemawira,,North Sulawesi
+NAK,Asia/Bangkok,Nakhon Ratchasima,NAK,TH,POINT (102.083336 14.933333),698,,VTUQ,Nakhon Ratchasima,,Nakhon Ratchasima
+NAL,Europe/Moscow,Nalchik Airport,NAL,RU,POINT (43.7 43.533333),1210,,URMN,Nartan,,Kabardino-Balkariya
+NAM,Asia/Jayapura,Namlea,NAM,ID,POINT (127.1 -3.3),0,,WAPR,Namlea,,Maluku
+NAO,Asia/Shanghai,Nanchong Airport,NAO,CN,POINT (106.066666 30.8),905,,ZUNC,Nanchong,,Sichuan
+NDL,Africa/Bangui,Ndele,NDL,CF,POINT (20.635557191670586 8.4247438),1578,,FEFN,Ndele,,Bamingui-Bangoran
+NEG,America/Jamaica,Negril,NEG,JM,POINT (-78.3360557 18.3398797),49,,MKNG,Negril,,Westmoreland
+NCO,America/New_York,NAS,NCO,US,POINT (-71 41),0,,KOQU,West Tisbury,Dukes County,Massachusetts
+NCQ,America/New_York,Atlanta NAS,MGE,US,POINT (-84.51667 33.916668),994,,,Fair Oaks,Cobb County,Georgia
+NCR,America/Managua,San Carlos,NCR,NI,POINT (-84.833336 11.25),101,,MNSC,San Carlos,,Rio San Juan
+NCS,Africa/Johannesburg,Newcastle,NCS,ZA,POINT (29.99 -27.774166),4064,,FANC,Newcastle,Amajuba District Municipality,KwaZulu-Natal
+NCY,Europe/Paris,Annecy-Meythe,NCY,FR,POINT (6.100833 45.930557),1502,,LFLP,Metz-Tessy,Departement de la Haute-Savoie,Rhone-Alpes
+NDF,Africa/Luanda,Ndalatandos,NDF,AO,POINT (14.833333 -9.333333),2424,,"",N'dalatando,,Cuanza Norte
+NDG,Asia/Shanghai,Qiqihar Airport,NDG,CN,POINT (123.916664 47.316666),482,,ZYQQ,Nanhang,,Heilongjiang Sheng
+NDK,Pacific/Majuro,Namdrik Island,NDK,MH,POINT (168.11667 5.633333),0,,"",Namdrik,,Namdrik Atoll
+NFR,Africa/Tripoli,Nafoora,NFR,LY,POINT (21.5872796 29.2172182),111,,HLNR,Gialo,,
+NGA,Australia/Sydney,Young,NGA,AU,POINT (148.25 -34.25),1197,,YYNG,Young,Young,New South Wales
+NGB,Asia/Shanghai,Ningbo Airport,NGB,CN,POINT (121.45840490871828 29.8261878),32,,ZSNB,Gulin,,Zhejiang Sheng
+NGC,America/Phoenix,North Rim,GCN,US,POINT (-112.129166 36.38972),8756,,,Grand Canyon,Coconino County,Arizona
+NGE,Africa/Douala,Ngaoundéré,NGE,CM,POINT (13.558885789363384 7.35617015),3622,,FKKN,Ngaoundere,,Adamaoua
+NGF,Pacific/Honolulu,Marine Corps Air Station Kaneohe Bay,NGF,US,POINT (-157.769722 21.445833),26,http://www.mcbhawaii.marines.mil/Units/SubordinateCommands/MarineCorpsAirStation.aspx,PHNG,Marine Corps Base Hawaii - MCBH,Honolulu County,Hawaii
+NGI,Pacific/Fiji,Ngau Island,NGI,FJ,POINT (179.33333 -18),16,,NFNG,Levuka,,Eastern
+NGL,Africa/Johannesburg,Ngala Airfield,NGL,ZA,POINT (21.55 2.45),1351,,FANG,Lisala,,Equateur
+NGN,America/Panama,Nargana,NGN,PA,POINT (-79.25 9.568611),0,,,Palmira,,Colon
+NGO,Asia/Tokyo,Chubu Centrair International Airport,NGO,JP,POINT (136.81136334974985 34.858719699999995),29,,RJGG,Tokoname,,Aichi
+NGU,America/New_York,NAS Chambers,ORF,US,POINT (-76.28333 35.833332),39,,KNGU,Columbia,Tyrrell County,North Carolina
+NGW,America/Chicago,Cabaniss Field,CRP,US,POINT (-97.4 27.783333),42,,,Corpus Christi,Nueces County,Texas
+NGX,Asia/Kathmandu,Manang,NGX,NP,POINT (85.36305 27.700556),4347,,VNMA,Kathmandu,Bagmati Zone,Central Region
+NGZ,America/Los_Angeles,NAS,NGZ,US,POINT (-122.25 37.766666),85,,,Alameda,Alameda County,California
+NHD,Asia/Dubai,Minhad AB,DXB,AE,POINT (55.373653 25.023756),131,,OMDM,Dubai,,Dubai
+NHF,Africa/Khartoum,New Halfa,NHF,SD,POINT (35.7283939 15.3561652),1456,,HSNW,Aroma,,Kassala
+NHK,America/New_York,Patuxent River NAS,NHK,US,POINT (-76.433334 38.3),0,,KNHK,Drum Point,Calvert County,Maryland
+NHS,Asia/Karachi,Nushki,NHS,PK,POINT (66 29.583332),3133,,OPNK,Nushki,,Balochistan
+NHX,America/Chicago,Barin Olf Osn,NHX,US,POINT (-87.683334 30.4),78,,KNBJ,Foley,Baldwin County,Alabama
+NIA,Africa/Monrovia,Nimba,NIA,LR,POINT (-8.584478839771435 7.4939464000000005),1574,,GLNA,New Yekepa,,Nimba
+NKB,Australia/Perth,Noonkanbah,NKB,AU,POINT (124.85 -18.55),229,,YNKA,Derby,Derby-West Kimberley,Western Australia
+NKY,Africa/Brazzaville,Nkayi,NKY,CG,POINT (13.2858039 -4.2220518),534,,FCBY,Kayes,,Bouenza
+NKD,Asia/Jayapura,Sinak,NKD,ID,POINT (110.46667 -5.85),505,,"",Batang,,Central Java
+NMA,Asia/Tashkent,Namangan Airport,NMA,UZ,POINT (71.56264283498558 40.98413205),1555,,UTFN,Namangan Shahri,,Namangan
+NKL,Africa/Kinshasa,Nkolo,NKL,CD,POINT (16.466667 -1.983333),925,,FZAR,Bolobo,,Bandundu
+NMS,Asia/Rangoon,Namsang,NMS,MM,POINT (97.73494550734442 20.89112305),3169,,VYNS,Taunggyi,,Shan
+NKO,Indian/Antananarivo,Ankokoambo,NKO,MG,POINT (-44.45 -16.583332),2516,,,Coracao de Jesus,Coracao De Jesus,Minas Gerais
+NKS,Africa/Douala,Nkongsamba,NKS,CM,POINT (9.933333 4.95),2650,,FKAN,Nkongsamba,,Littoral
+NKT,Europe/Istanbul,Shirnak,NKT,TR,POINT (42.06 37.363889),2030,,LTCV,Tililan,,Sirnak
+NKX,America/Los_Angeles,Miramar MS,SAN,US,POINT (-117.11667 32.86667),436,http://www.miramar.marines.mil/,KNKX,Poway,San Diego County,California
+NLA,Africa/Lusaka,Simon Mwansa Kapwepwe International Airport,NLA,ZM,POINT (28.665024 -12.993449),4156,,FLSK,Ndola,,Copperbelt
+NLC,America/Los_Angeles,Lemoore NAS (Reeves Field),NLC,US,POINT (-119.76667 36.3),180,http://www.cnic.navy.mil/regions/cnrsw/installations/nas_lemoore.html,KNLC,Lemoore,Kings County,California
+NLU,America/Mexico_City,Santa Lucia,MEX,MX,POINT (-99.15 19.4),7355,,MMSM,Benito Juarez,,Mexico City
+NMB,Asia/Kolkata,Daman,NMB,IN,POINT (72.95 20.416668),55,,VADN,Vapi,Valsad,Gujarat
+NKC,Africa/Nouakchott,Nouakchott International Airport,NKC,MR,POINT (-15.947778345835808 18.0960415),42,,GQNO,Nouakchott,,Nouakchott
+NMG,America/Panama,San Miguel,NMG,PA,POINT (-78.28333 8.366667),0,,"",La Palma,,Darien
+NOD,Europe/Berlin,Norden Norddeich Airport,NOD,DE,POINT (7.2 53.583332),22,,EDWS,Norden,,Lower Saxony
+NNM,Europe/Moscow,Naryan-Mar Airport,NNM,RU,POINT (53.088479998003734 67.6366017),45,,ULAM,Iskateley,,Nenetskiy Avtonomnyy Okrug
+NNX,Asia/Makassar,Nunukan Airport,NNX,ID,POINT (117.66940505016953 4.13425035),55,,WAQA,Binalawan,,North Kalimantan
+NPO,Asia/Makassar,Nangapinoh,NPO,ID,POINT (111.74578514539873 -0.3484114),82,,WIOG,Kenyau,,West Kalimantan
+NOA,Australia/Sydney,Nowra,NOA,AU,POINT (150.5375 -34.950558),351,,YSNW,Falls Creek,Shoalhaven Shire,New South Wales
+NQU,America/Bogota,Nuqui,NQU,CO,POINT (-77.26097161811673 5.711395100000001),26,,SKNQ,Nuqui,,Choco
+NOI,Europe/Moscow,Novorossijsk,NOI,RU,POINT (37.766666 44.716667),127,,,Novorossiysk,,Krasnodarskiy
+NOJ,Asia/Yekaterinburg,Nojabrxsk Airport,NOJ,RU,POINT (75.29459 63.17673),400,,USRO,Noyabrsk,,Yamalo-Nenetskiy Avtonomnyy Okrug
+NOZ,Asia/Novokuznetsk,Novokuznetsk Airport,NOZ,RU,POINT (87.166664 53.75),692,,UNWW,Novokuznetsk,,Kemerovo
+NPA,America/Chicago,Pensacola NAS,PNS,US,POINT (-87.21667 30.416668),32,http://www.cnic.navy.mil/regions/cnrse/installations/nas_pensacola.html,KNPA,Pensacola,Escambia County,Florida
+NPE,Pacific/Auckland,Hawkes Bay Airport,NPE,NZ,POINT (176.87225 -39.46667),16,http://www.hawkesbay-airport.co.nz/,NZNR,Napier,Napier City,Hawke's Bay
+NPT,America/New_York,State,NPT,US,POINT (-71.2825 41.530834),118,,KUUU,Newport East,Newport County,Rhode Island
+NPU,America/Bogota,San Pedro Uraba,NPU,CO,POINT (-71.916664 4.95),524,,"",Villanueva,,Casanare
+NQA,America/Chicago,Millington Regional Jetport,MEM,US,POINT (-90.05 35.13333),246,https://millingtonairport.com/,KNQA,Memphis,Shelby County,Tennessee
+NQI,America/Chicago,NAS,NQI,US,POINT (-97.86667 27.516666),78,http://www.cnic.navy.mil/regions/cnrse/installations/nas_kingsville.html,KNQI,Kingsville,Kleberg County,Texas
+NQL,America/Sao_Paulo,Niquelandia,NQL,BR,POINT (-48.983334 -14),1758,,SWNQ,Uruacu,Uruacu,Goias
+NQN,America/Argentina/Salta,Presidente Peron International Airport,NQN,AR,POINT (-68.15222 -38.95),866,,SAZN,Plottier,,Neuquen
+NRC,America/Los_Angeles,Aux Field,NRC,US,POINT (-121.1 37.38333),164,,KNRC,Patterson,Stanislaus County,California
+NRD,Europe/Berlin,Norderney,NRD,DE,POINT (7.166667 53.833332),0,,EDWY,Norderney,,Lower Saxony
+NRG,Australia/Perth,Narrogin,NRG,AU,POINT (117.166664 -32.933334),1161,http://www.narroginshire.wa.gov.au/airport.aspx,YNRG,Narrogin,Narrogin,Western Australia
+NRI,America/Chicago,Shangri-la,NRI,US,POINT (-99.833336 35.166668),2037,http://www.thelandingsgrandlake.com/airport.htm,"3O9",Erick,Beckham County,Oklahoma
+NRE,Asia/Jayapura,Namrole,NRE,ID,POINT (126.70050982463769 -3.8553334),19,,WAPG,Leksula,,Maluku
+NRM,Africa/Bamako,Nara,NRM,ML,POINT (-7.2616197 15.2276899),875,,GANK,Nara,,Koulikoro
+NRR,America/Puerto_Rico,Roosevelt NAS,NRR,PR,POINT (-65.638885 18.25),59,,TJRV,Aguas Claras,,Ceiba
+NRS,America/Los_Angeles,NAS,NRS,US,POINT (-115.57472 32.837223),-72,https://www.basedirectory.com/nolf-imperial-beach-directory,KNRS,Imperial,Imperial County,California
+NSK,Asia/Krasnoyarsk,Noril'sk Airport,NSK,RU,POINT (87.31467521266606 69.3087924),547,,UOOO,Kayyerkan,,Krasnoyarskiy
+NSB,America/Nassau,North SPB,BIM,BS,POINT (-79.25 25.775),0,,"",Alice Town,,Bimini
+NSP,Asia/Manila,NAF,NSP,PH,POINT (120.9 14.5),0,,,Cavite City,Province of Cavite,Calabarzon
+NZA,Africa/Luanda,Nzagi,NZA,AO,POINT (21.3631532 -7.7142539),2434,,FNZG,Nzagi,,Lunda Norte
+NUD,Africa/Khartoum,En Nahud,NUD,SD,POINT (28.416668 12.75),1958,,HSNH,An Nuhud,,Shamal Kurdufan
+NUE,Europe/Berlin,Nuremberg Airport,NUE,DE,POINT (11.078106331160273 49.49826845),977,https://www.airport-nuernberg.de/english,EDDN,Nuernberg,Regierungsbezirk Mittelfranken,Bavaria
+NUF,Asia/Colombo,Castlereigh Reservoir Waterdrome,NUF,LK,POINT (80.586 6.858),3546,,"",Hatton,,Central
+NUJ,Asia/Tehran,Nojeh,NUJ,IR,POINT (48.660325592564575 35.2016421),5541,,,Kabudarahang,,Hamadan
+NUM,Asia/Riyadh,Neom Airport,NUM,SA,POINT (35.29143328972205 27.92758955),22,,OENN,Duba,,Mintaqat Tabuk
+NUN,America/Chicago,Saufley NAS,PNS,US,POINT (-87.18833 30.4725),75,,,East Pensacola Heights,Escambia County,Florida
+NUQ,America/Los_Angeles,Moffett Field,NUQ,US,POINT (-122.083336 37.38333),127,,KNUQ,Mountain View,Santa Clara County,California
+NUU,Africa/Nairobi,Nakuru,NUU,KE,POINT (36.1564327 -0.2966963),6217,,HKNK,Nakuru,,Nakuru
+NUW,America/Los_Angeles,Whidbey Island NAS (Ault Field),NUW,US,POINT (-122.65583 48.351944),19,,KNUW,Ault Field,Island County,Washington
+NUX,Asia/Yekaterinburg,Novy Urengoy Airport,NUX,RU,POINT (76.5260642832238 66.06984804999999),144,,USMU,Novyy Urengoy,,Yamalo-Nenetskiy Avtonomnyy Okrug
+NVA,America/Bogota,Benito Salas Airport,NVA,CO,POINT (-75.29355179494848 2.9517519500000002),1473,,SKNV,Neiva,,Huila
+NVD,America/Chicago,Nevada,NVD,US,POINT (-94.30389 37.85139),856,,,Nevada,Vernon County,Missouri
+NVG,America/Managua,Nueva Guinea,NVG,NI,POINT (-84.45 11.666667),728,,MNNG,Nueva Guinea,,Atlantico Sur
+NVI,Asia/Samarkand,Navoi Airport,NVI,UZ,POINT (65.159164 40.115),1099,,UTSA,Konimex,,Navoiy
+NVK,Europe/Oslo,Framnes,NVK,NO,POINT (17.425 68.425),0,,,Narvik,Narvik,Nordland
+NUH,America/Bogota,Nunchia,NUH,CO,POINT (-72.2003693 5.6303907),1217,,,Nunchia,,Casanare
+NVR,Europe/Moscow,Novgorod,NVR,RU,POINT (31.3 58.516666),78,,ULNN,Velikiy Novgorod,,Novgorod
+NVY,Asia/Kolkata,Neyveli,NVY,IN,POINT (79.433334 11.6),249,,VONV,Vriddhachalam,Cuddalore,Tamil Nadu
+NZC,America/Lima,Maria Reiche Neuman Airport,NZC,PE,POINT (-74.96191613177118 -14.85435005),1765,,SPZA,Nazca,Provincia de Nazca,Ica
+NZE,Africa/Conakry,Nzerekore,NZE,GN,POINT (-8.7038786 7.8155778),1594,,GUNZ,Nzerekore,Nzerekore Prefecture,Nzerekore
+NZH,Asia/Shanghai,Manzhouli Airport,NZH,CN,POINT (117.3271129010715 49.567472499999994),2168,,ZBMZ,Zabaykal'sk,,Transbaikal Territory
+NZL,Asia/Shanghai,Zhalantun Chengjisihan Airport,NZL,CN,POINT (122.7675 47.865833),859,,ZBZL,Qinggis Han,,Inner Mongolia
+NZW,America/New_York,South Weymouth,NZW,US,POINT (-70.933334 42.166668),150,,,Rockland,Plymouth County,Massachusetts
+NZY,America/Los_Angeles,North Island NAS,SAN,US,POINT (-117.2 32.7),26,,KNZY,Coronado,San Diego County,California
+OAA,Asia/Kabul,Shank Air Base,OAA,AF,POINT (69.07781253482375 33.9232357),6722,,OASH,Pul-e `Alam,,Lowgar
+OAG,Australia/Sydney,Orange Airport,OAG,AU,POINT (149.12447 -33.3816),3106,,YORG,Millthorpe,Blayney,New South Wales
+OAH,Asia/Kabul,Shindand Air Base,OAH,AF,POINT (62.2610015869 33.3913002014),3756,,OASD,Shindand,,Herat
+OAJ,America/New_York,Albert J Ellis Airport,OAJ,US,POINT (-77.61492003540857 34.82679245),101,,KOAJ,Richlands,Onslow County,North Carolina
+OAK,America/Los_Angeles,Metropolitan Oakland International Airport,OAK,US,POINT (-122.21707443336842 37.7221623),26,http://www.oaklandairport.com/,KOAK,San Leandro,Alameda County,California
+OAL,America/Porto_Velho,Cacoal Airport,OAL,BR,POINT (-61.4825 -11.433889),597,,SSKW,Cacoal,Cacoal,Rondonia
+OAM,Pacific/Auckland,Oamaru,OAM,NZ,POINT (171.08399522261243 -44.9679956),85,,NZOU,Oamaru,,Otago
+OAN,America/Tegucigalpa,Olanchito,OAN,HN,POINT (-86.57472 15.504444),662,,MHOA,Olanchito,Olanchito,Yoro
+OAR,America/Los_Angeles,Marina Municipal,MRY,US,POINT (-121.916664 36.61667),173,,KOAR,Pacific Grove,Monterey County,California
+OAS,Asia/Kabul,Sharana Air Base,OAS,AF,POINT (68.838517 33.12575),7342,,OASA,Zarah Sharan,,Paktika
+OAI,Asia/Kabul,Bagram,OAI,AF,POINT (69.2425695 34.9346662),4875,,OAIX,Ghulam `Ali,,Parvan
+OBE,America/New_York,County,OBE,US,POINT (-80.833336 27.25),32,,KOBE,Okeechobee,Okeechobee County,Florida
+OBC,Africa/Djibouti,Obock,OBC,DJ,POINT (43.280430193392874 11.9677305),65,,HDOB,Obock,,Obock
+ODB,Europe/Madrid,Cordoba,ODB,ES,POINT (-4.84662521007113 37.84333905),295,http://www.aena.es/csee/Satellite?cid=1046972065602&pagename=subHome&Language=EN_GB&SiteName=ODB&c=Page,LEBA,Villarrubia,Province of Cordoba,Andalusia
+ODC,America/Los_Angeles,Oakdale,ODC,US,POINT (-120.80203737956205 37.757711),206,http://www.oakdalegov.com/#!oakdale-municipal-airport/c1tnd,O27,East Oakdale,Stanislaus County,California
+ODH,Europe/London,Odiham RAF Station,ODH,GB,POINT (-0.95 51.25),387,,EGVO,Odiham,Hampshire,England
+ODE,Europe/Copenhagen,Beldringe,ODE,DK,POINT (10.327968321284805 55.4751004),59,,EKOD,Sonderso,Nordfyns Kommune,South Denmark
+ODM,America/New_York,Garrett County Airport,ODM,US,POINT (-79.3353230153204 39.5811968),2906,,,Oakland,Garrett County,Maryland
+ODN,Asia/Kuching,Long Seridan Airport,ODN,MY,POINT (115.066666 4.033333),1837,,WBGI,Bangar,,Temburong
+ODO,Asia/Irkutsk,Bodaybo Airport,ODO,RU,POINT (114.23895228377594 57.8652039),954,,UIKB,Bodaybo,,Irkutsk
+ODS,Europe/Kiev,Odessa International Airport,ODS,UA,POINT (30.671640336265803 46.42729675),164,http://www.airport.od.ua/,UKOO,Odessa,,Odessa
+ODW,America/Los_Angeles,Oak Harbor,ODW,US,POINT (-122.68611 48.25139),95,,KOKH,Coupeville,Island County,Washington
+ODY,Asia/Vientiane,Oudomxay Airport,ODY,LA,POINT (104.166664 20.583332),3822,,VLOS,Viangxai,,Houaphan
+OEA,America/Indiana/Vincennes,Oneal,OEA,US,POINT (-87.53333 38.683334),416,,,Vincennes,Knox County,Indiana
+OEC,Asia/Dili,Ocussi,OEC,TL,POINT (124.34167 -9.205),26,,WPOC,Pante Makasar,,Oecusse
+OEL,Europe/Moscow,Orel,OEL,RU,POINT (36.1 52.983334),567,,UUOR,Orel,,Orjol
+OEO,America/Chicago,Municipal,OEO,US,POINT (-92.7 45.3),882,http://www.vil.osceola.wi.us/index.asp?Type=B_BASIC&SEC={9098926A-C937-4069-95AA-D331D2F38500},KOEO,Osceola,Polk County,Wisconsin
+OER,Europe/Stockholm,Ornskoldsvik Airport,OER,SE,POINT (18.99366 63.4098521),357,,ESNO,Husum,OErnskoeldsviks Kommun,Vaesternorrland
+OES,America/Argentina/Salta,San Antonio Oeste,OES,AR,POINT (-64.95 -40.733334),55,,SAVN,San Antonio Oeste,,Rio Negro
+OGA,America/Denver,Searle Field,OGA,US,POINT (-101.7643000698065 41.121144900000004),3231,http://www.ogallala-ne.gov/city_services/airport/index.php,KOGA,Ogallala,Keith County,Nebraska
+OFK,America/Chicago,Stefan Field,OFK,US,POINT (-97.434166 41.984165),1548,http://www.norfolkairportservices.com/default.htm,KOFK,Norfolk,Madison County,Nebraska
+OFU,Pacific/Pago_Pago,Airstrip,OFU,AS,POINT (-169.7 -14.166667),0,,NSAS,Ofu,,Manu'a
+OKQ,Asia/Jayapura,Okaba,OKQ,ID,POINT (139.72263530699698 -8.09474415),29,,WAKO,Kimaam,,Papua
+OHT,Asia/Karachi,Kohat,OHT,PK,POINT (71.433334 33.583332),1686,,OPKT,Kohat,,Khyber Pakhtunkhwa
+OIC,America/New_York,Eaton,OIC,US,POINT (-75.53333 42.533333),1013,http://www.co.chenango.ny.us/airport/,KOIC,Norwich,Chenango County,New York
+OIL,America/New_York,Splane Memorial,OIL,US,POINT (-79.7 41.433334),1194,,,Oil City,Venango County,Pennsylvania
+OIR,Asia/Tokyo,Okushiri Airport,OIR,JP,POINT (139.51666 42.166668),0,,RJEO,Kamiiso,,Hokkaido
+OKB,Australia/Brisbane,Fraser Island,OKB,AU,POINT (153.16667 -25.25),577,,YORC,Urangan,Fraser Coast,Queensland
+OKF,Africa/Windhoek,Okaukuejo,OKF,NA,POINT (16 -19.166668),3602,,FYOO,Outjo,,Kunene
+OKG,Africa/Brazzaville,Okoyo,OKG,CG,POINT (15 -1.466667),1305,,"",Ewo,,Cuvette-Ouest
+OKH,Europe/London,Cottesmor RAF,OKH,GB,POINT (-0.716667 52.666668),331,http://www.raf.mod.uk/rafcottesmore/,EGXJ,Oakham,District of Rutland,England
+OKM,America/Chicago,Okmulgee,OKM,US,POINT (-95.96667 35.61667),682,http://okmulgeeairport.org/,KOKM,Okmulgee,Okmulgee County,Oklahoma
+OKN,Africa/Libreville,Okondja,OKN,GA,POINT (14.008333 -1),1581,,FOGQ,Okondja,,Haut-Ogooue
+OKO,Asia/Tokyo,Yokota AFB,TYO,JP,POINT (139.35 35.75),403,,RJTY,Fussa,,Tokyo
+OKS,America/Chicago,Oshkosh,OKS,US,POINT (-102.35 41.4),3346,http://www.ci.oshkosh.ne.us/airport.asp,KOKS,Oshkosh,Garden County,Nebraska
+OLU,America/Chicago,Columbus Municipal,OLU,US,POINT (-97.34167 41.447224),1437,,,Columbus,Platte County,Nebraska
+OLV,America/Chicago,Olive Branch Airport,OLV,US,POINT (-89.7875203 34.9785229),360,,KOLV,Olive Branch,De Soto County,Mississippi
+OLY,America/Chicago,Olney-Noble,OLY,US,POINT (-88.083336 38.716667),505,,,Olney,Richland County,Illinois
+OMJ,Asia/Tokyo,Omura,OMJ,JP,POINT (129.91545060447868 32.917846),22,,,Omura,,Nagasaki
+OMI,Asia/Tehran,Omidieh,OMI,IR,POINT (49.533333 30.833332),52,,OIAJ,Ramshir,,Khuzestan
+OMK,America/Los_Angeles,Municipal,OMK,US,POINT (-119.51667 48.416668),925,http://www.omakcity.com/airport.html,KOMK,Omak,Okanogan County,Washington
+OML,Pacific/Port_Moresby,Omkalai,OML,PG,POINT (144.95833 -6.185556),4064,,"",Kundiawa,,Chimbu
+OMY,Asia/Phnom_Penh,Oddor Meanche,OMY,KH,POINT (104.96667 13.816667),134,,"",Tbeng Meanchey,,Preah Vihear
+ONA,America/Chicago,Municipal,ONA,US,POINT (-91.70611 44.076668),646,,,Goodview,Winona County,Minnesota
+ONH,America/New_York,Municipal,ONH,US,POINT (-75.00056 42.482777),1564,,,Oneonta,Otsego County,New York
+ONI,Asia/Jayapura,Moanamani,ONI,ID,POINT (135.5 -3.333333),0,,WABD,Nabire,,Papua
+ONL,America/Chicago,Municipal,ONL,US,POINT (-98.65 42.45),1952,,KONL,O'Neill,Holt County,Nebraska
+ONM,America/Denver,Socorro,ONM,US,POINT (-106.9 34.066666),4593,,,Socorro,Socorro County,New Mexico
+ONP,America/Los_Angeles,Newport,ONP,US,POINT (-124.05 44.63333),118,,KONP,Newport,Lincoln County,Oregon
+OLX,Africa/Nairobi,Olkiombo Airport,OLX,KE,POINT (35.1105164 -1.4087924),4996,,HKOK,Kihancha,,Migori
+ONX,America/Panama,Enrique Adolfo Jimenez,ONX,PA,POINT (-79.9 9.35),32,,MPEJ,Colon,,Colon
+ONY,America/Chicago,Olney,ONY,US,POINT (-98.75 33.36667),1154,,,Olney,Young County,Texas
+OOA,America/Chicago,Municipal,OOA,US,POINT (-92.65 41.3),882,,,Oskaloosa,Mahaska County,Iowa
+OLZ,Asia/Yakutsk,Olokminsk Airport,OLZ,RU,POINT (120.47476771681603 60.4008072),718,,UEMO,Olyokminsk,,Sakha
+OPI,Australia/Darwin,Oenpelli,OPI,AU,POINT (133.06667 -12.333333),101,,YOEN,McMinns Lagoon,Litchfield,Northern Territory
+OPO,Europe/Lisbon,Porto Airport,OPO,PT,POINT (-8.681037254488 41.248830350000006),114,http://www.ana.pt/en-US/Aeroportos/porto/Porto/Pages/Homepage-Porto.aspx,LPPR,Santa Cruz do Bispo,Matosinhos,Porto
+OPW,Africa/Windhoek,Opuwa,OPW,NA,POINT (13.833333 -18.066668),3759,,FYOP,Opuwo,,Kunene
+ORA,America/Argentina/Salta,Oran,ORA,AR,POINT (-64.166664 -23.333332),931,,SASO,Embarcacion,,Salta
+ORB,Europe/Stockholm,Orebro-Bofors Airport,ORB,SE,POINT (15.047543 59.225758),173,,ESOE,Vintrosa,Orebro Kommun,OErebro
+ORC,America/Bogota,Orocue,ORC,CO,POINT (-71.333336 4.9),518,,SKOE,Orocue,,Casanare
+ORD,America/Chicago,O'Hare International Airport,CHI,US,POINT (-87.90917584851792 41.97795725),639,https://www.flychicago.com/ohare/home/pages/default.aspx,KORD,Rosemont,Cook County,Illinois
+ORE,Europe/Paris,Orleans,ORE,FR,POINT (1.9 47.916668),364,https://orleans.aeroport.fr/,LFOZ,Orleans,Departement du Loiret,Centre
+ORF,America/New_York,Norfolk International Airport,ORF,US,POINT (-76.20229629965002 36.8946697),42,http://www.norfolkairport.com,KORF,Norfolk,City of Norfolk,Virginia
+ORG,America/Paramaribo,Zorg En Hoop,PBM,SR,POINT (-55.19112768743059 5.8111098),29,,SMZO,Paramaribo,,Paramaribo
+ORH,America/New_York,Worcester Regional Airport,ORH,US,POINT (-71.87306398339443 42.2686095),977,,KORH,Leicester,Worcester County,Massachusetts
+ORK,Europe/Dublin,Cork Airport,ORK,IE,POINT (-8.493798524458427 51.84173815),472,http://www.corkairport.com/,EICK,Cork,County Cork,Munster
+OPL,America/Chicago,St Landry Parish,OPL,US,POINT (-92.0998865 30.5544108),52,,,Opelousas,Saint Landry Parish,Louisiana
+ORM,Europe/London,Northampton,ORM,GB,POINT (-0.9 52.233334),196,http://www.sywellaerodrome.co.uk/,EGBK,Northampton,Northamptonshire,England
+ORO,America/Tegucigalpa,Yoro,ORO,HN,POINT (-87.13389 15.125278),2158,,MHYR,Yoro,,Yoro
+ORP,Africa/Gaborone,Orapa,ORP,BW,POINT (24.5 -21),2975,,FBOR,Rakops,,Central
+ORQ,America/New_York,Heliport,ORQ,US,POINT (-73.36667 41.11667),68,,,Westport,Fairfield County,Connecticut
+ORW,Asia/Karachi,Ormara,ORW,PK,POINT (64.59265873771524 25.279114200000002),22,,OPOR,Ormara,,Balochistan
+ORY,Europe/Paris,Paris Orly Airport,PAR,FR,POINT (2.35572229362018 48.748477050000005),301,http://www.adp.fr,LFPO,Paray-Vieille-Poste,Departement de l'Essonne,Ile-de-France
+ORX,America/Santarem,Oriximina,ORX,BR,POINT (-55.86667 -1.75),141,,SNOX,Oriximina,Oriximina,Para
+ORZ,America/Belize,Orange Walk,ORZ,BZ,POINT (-88.75 17.166668),485,,"",Belmopan,,Cayo
+OSC,America/Detroit,Wurtsmith AFB,OSC,US,POINT (-83.333336 44.433334),590,,KOSC,Au Sable,Iosco County,Michigan
+OSW,Asia/Yekaterinburg,Orsk Airport,OSW,RU,POINT (58.566666 51.2),652,,UWOR,Orsk,,Orenburg
+OSY,Europe/Oslo,Namsos Airport,OSY,NO,POINT (11.577900229729934 64.47214034999999),19,https://avinor.no/en/airport/namsos-airport/,ENNM,Namsos,Namsos,Nord-Trondelag
+OSZ,Europe/Warsaw,Koszalin,OSZ,PL,POINT (16.264444 54.042778),196,,EPKZ,Tychowo,Powiat bialogardzki,West Pomeranian Voivodeship
+OTA,Africa/Addis_Ababa,Mota,OTA,ET,POINT (37.88333 11.066667),7870,,,Addiet Canna,,Amhara
+OTC,Africa/Ndjamena,Bol,OTC,TD,POINT (14.733333 13.433333),918,,FTTL,Bol,,Lac
+OTD,America/Panama,Contadora,OTD,PA,POINT (-79.566666 8.666667),0,,"",Veracruz,,Panama
+OTG,America/Chicago,Worthington,OTG,US,POINT (-95.58361 43.65222),1479,,,Worthington,Nobles County,Minnesota
+OTH,America/Los_Angeles,Southwest Oregon Regional Airport,OTH,US,POINT (-124.2434654166912 43.41549325),19,,KOTH,North Bend,Coos County,Oregon
+OTI,Asia/Jayapura,Pitu,OTI,ID,POINT (128.5 2.833333),0,,WAMR,Tobelo,,Maluku Utara
+OTJ,Africa/Windhoek,Otjiwarongo,OTJ,NA,POINT (16.661328 -20.4319984),4855,,FYOW,Otjiwarongo,,Otjozondjupa
+OTK,America/Los_Angeles,Tillamook,OTK,US,POINT (-123.81568010572308 45.4182929),39,,KTMK,Tillamook,Tillamook County,Oregon
+OTL,Africa/Nouakchott,Boutilimit,OTL,MR,POINT (-14.666667 17.75),183,,GQNB,Aleg,,Brakna
+OTM,America/Chicago,Industrial,OTM,US,POINT (-92.449165 41.106388),833,,KOTM,Ottumwa,Wapello County,Iowa
+OTO,America/Denver,Vor,OTO,US,POINT (-105.933334 35.066666),6276,,,Moriarty,Torrance County,New Mexico
+OTP,Europe/Bucharest,Bucharest Henri Coanda International Airport,BUH,RO,POINT (26.077063 44.571156),318,http://www.bucharestairports.ro/en/,LROP,Otopeni,Comuna Otopeni,Ilfov
+OTR,America/Costa_Rica,Coto 47,OTR,CR,POINT (-82.933334 8.566667),42,,MRCC,Corredor,,Puntarenas
+OTS,America/Los_Angeles,Anacortes,OTS,US,POINT (-122.66173193624057 48.4974928),219,,"",Anacortes,Skagit County,Washington
+OWE,Africa/Libreville,Owendo,OWE,GA,POINT (9.483333 0.35),26,,,Libreville,,Estuaire
+OZI,Europe/Madrid,Bobadilla,OZI,ES,POINT (-24.9 37.6625),0,,,Furnas,Povoacao,Azores
+OWK,America/New_York,Central Maine Airport of Norridgewock,OWK,US,POINT (-69.8 44.716667),147,http://www.townofnorridgewock.com/airport.html,KOWK,Norridgewock,Somerset County,Maine
+OXB,Africa/Bissau,Osvaldo Vieira Airport,OXB,GW,POINT (-15.657222 11.888889),127,,GGOV,Bissau,,Bissau
+OXC,America/New_York,Waterbury-oxford,OXC,US,POINT (-73.13638864590519 41.47916145),721,http://www.ctairports.org/GeneralAviationAirports/WaterburyOxford/AbouttheAirport.aspx,KOXC,Oxford,New Haven County,Connecticut
+OXD,America/New_York,Miami University,OXD,US,POINT (-84.76111 39.86028),1145,http://www.units.miamioh.edu/businessservices/Airport,KOXD,New Paris,Preble County,Ohio
+OXF,Europe/London,Oxford (Kidlington),OXF,GB,POINT (-1.25 51.766666),223,http://www.oxfordairport.co.uk/,EGTK,Oxford,Oxfordshire,England
+OXR,America/Los_Angeles,Ventura,OXR,US,POINT (-119.20789455598106 34.20009175),22,,KOXR,Oxnard,Ventura County,California
+OYA,America/Argentina/Cordoba,Goya,OYA,AR,POINT (-59.21913085958373 -29.1052849),104,,SATG,Goya,,Corrientes
+OYG,Africa/Kampala,Moyo,OYG,UG,POINT (31.716667 3.65),3083,,HUMY,Moyo,Moyo District,Northern Region
+OYL,Africa/Nairobi,Moyale,OYL,KE,POINT (39.05 3.533333),3517,,HKMY,Moyale,,Marsabit
+OYO,America/Argentina/Buenos_Aires,Tres Arroyos,OYO,AR,POINT (-60.25 -38.36667),321,,SAZH,Tres Arroyos,Partido de Tres Arroyos,Buenos Aires
+OYP,America/Cayenne,St-Georges de lOyapock,OYP,GF,POINT (-51.8 3.9),19,,SOOG,Saint-Georges-de-l'Oyapock,Guyane,Guyane
+PBG,America/New_York,Plattsburgh International Airport,PBG,US,POINT (-73.4719379 44.6689275),206,http://www.plattsburghinternationalairport.com/,KPBG,Plattsburgh West,Clinton County,New York
+PAZ,America/Mexico_City,El Tajin National Airport,PAZ,MX,POINT (-97.467224 20.516666),209,,MMPA,Poza Rica de Hidalgo,,Veracruz
+PBB,America/Campo_Grande,Paranaiba,PBB,BR,POINT (-51.183334 -19.666668),1348,,SSPN,Paranaiba,Paranaiba,Mato Grosso do Sul
+PBC,America/Mexico_City,Huejotsingo Airport,PBC,MX,POINT (-98.3675 19.135),7260,http://www.aeropuertopuebla.com/,MMPB,Santa Maria Zacatepec,Juan C. Bonilla,Puebla
+PBH,Asia/Thimphu,Paro Airport,PBH,BT,POINT (89.42341649453166 27.403184449999998),7293,,VQPR,Paro,,Paro
+PBE,America/Bogota,Puerto Berrio,PBE,CO,POINT (-74.48333 6.483333),524,,SKPR,Puerto Berrio,,Antioquia
+PBN,Africa/Luanda,Porto Amboim,PBN,AO,POINT (13.765036832632958 -10.7218306),26,,FNPA,Sumbe,,Cuanza Sul
+PBR,America/Guatemala,Puerto Barrios,PBR,GT,POINT (-88.58476326578091 15.73187325),45,,MGPB,Puerto Barrios,Municipio de Puerto Barrios,Izabal
+PBP,America/Costa_Rica,Punta Islita,PBP,CR,POINT (-85.166664 10.416667),68,,MRIA,Canas,Canton de Canas,Guanacaste
+PBQ,America/Porto_Velho,Pimenta Bueno,PBQ,BR,POINT (-61.2 -11.7),626,,SWPM,Pimenta Bueno,Pimenta Bueno,Rondonia
+PBS,Asia/Bangkok,Patong Beach,PBS,TH,POINT (98.291664 7.895278),0,,,Patong,,Phuket
+PBT,America/Asuncion,Puerto Leda,PBT,PY,POINT (-58.026943 -20.616667),262,,"",Fuerte Olimpo,,Alto Paraguay
+PBW,Asia/Makassar,Palibelo,PBW,ID,POINT (-0.22 9.53),649,,,Yendi,Yendi,Northern
+PCG,America/Guatemala,Paso Caballos,PCG,GT,POINT (-90.24722 17.26),167,,,San Andres,Municipio de San Andres,Peten
+PCH,America/Tegucigalpa,Palacios,PCH,HN,POINT (-89 15),1975,,MHPC,Buenos Aires,,Copan
+PAX,America/Port-au-Prince,Port De Paix,PAX,HT,POINT (-72.84678863305224 19.93488935),55,,MTPX,Ti Port-de-Paix,,Nord-Ouest
+PCU,America/Chicago,Pearl River County,PCU,US,POINT (-89.683334 30.433332),32,,M13,Nicholson,Pearl River County,Mississippi
+PCV,America/Mazatlan,Punta Chivato,PCV,MX,POINT (-111.961998 27.0692005),22,,"",Mulege,,Baja California Sur
+PDD,Africa/Maputo,Ponta de Ouro,PDD,MZ,POINT (32.880554 -26.783056),49,,FQPO,Maputo,,Maputo City
+PDF,America/Bahia,Prado,PDF,BR,POINT (-39.216667 -17.35),32,,SNRD,Prado,Prado,Bahia
+PDA,America/Bogota,Puerto Inirida,PDA,CO,POINT (-67.9067415536814 3.8545536499999997),275,,SKPD,Inirida,,Guainia
+PDK,America/New_York,DeKalb Peachtree Airport,ATL,US,POINT (-84.25 33.88333),967,http://web.co.dekalb.ga.us/pdkairport/index.asp,KPDK,Doraville,DeKalb County,Georgia
+PEM,America/Lima,Puerto Maldonado Airport,PEM,PE,POINT (-69.22684890376946 -12.6162537),672,,SPTU,Puerto Maldonado,Provincia de Tambopata,Madre de Dios
+PDM,America/Panama,Pedasí Airport,PDM,PA,POINT (-80.023611 7.556944),42,,MP00,Pedasi,,Los Santos
+PDP,America/Montevideo,Capitan de Corbeta Carlos A. Curbelo International Airport,PDP,UY,POINT (-54.919167 -34.914444),39,http://www.puntadeleste.aero/,SULS,Maldonado,,Maldonado
+PDS,America/Matamoros,Piedras Negras International Airport,PDS,MX,POINT (-100.51667 28.7),731,,MMPG,Piedras Negras,Piedras Negras,Coahuila
+PDV,Europe/Sofia,Plovdiv Airport,PDV,BG,POINT (24.716667 42.3),629,http://www.plovdivairport.com/,LBPD,Kaloyanovo,Obshtina Kaloyanovo,Plovdiv
+PEE,Asia/Yekaterinburg,Perm International Airport,PEE,RU,POINT (56.01918 57.920025),377,http://www.aviaperm.ru/,USPP,Kultayevo,,Perm
+PEF,Europe/Berlin,Peenemuende,PEF,DE,POINT (13.766667 54.166668),16,,EDCP,Kroslin,,Mecklenburg-Vorpommern
+PEG,Europe/Rome,Sant Egidio Airport,PEG,IT,POINT (12.366667 43.13333),1299,http://www.airport.umbria.it/,LIRZ,Perugia,Provincia di Perugia,Umbria
+PEJ,Europe/Rome,Peschiei,PEJ,IT,POINT (15.730556 41.701668),1735,,,San Giovanni Rotondo,Provincia di Foggia,Apulia
+PDC,Pacific/Noumea,Mueo,PDC,NC,POINT (164.9989929 -21.3164005),173,,NWWQ,Poya,Poya,North Province
+PFC,America/Los_Angeles,Pacific City State,PFC,US,POINT (-123.96171871467799 45.198597250000006),32,,KPFC,Pacific City,Tillamook County,Oregon
+PFN,America/Chicago,Bay County,PFN,US,POINT (-85.68309 30.207085),19,,,Pretty Bayou,Bay County,Florida
+PGO,America/Denver,Stevens Field,PGO,US,POINT (-107.05715539919868 37.28460005),7706,http://www.stevensfield.com/,KPSO,Pagosa Springs,Archuleta County,Colorado
+PGR,America/Chicago,Paragould Kirk Field,PGR,US,POINT (-90.5105521 36.061285),282,http://cityofparagould.com/index.php?pageID=11287_2,KPGR,Paragould,Greene County,Arkansas
+PHD,America/New_York,Harry Clever Field,PHD,US,POINT (-81.4194073248456 40.471302550000004),816,,KPHD,New Philadelphia,Tuscarawas County,Ohio
+PGA,America/Phoenix,Page Airport,PGA,US,POINT (-111.44722 36.926388),4274,,KPGA,Page,Coconino County,Arizona
+PGC,America/New_York,Grant County,PGC,US,POINT (-79.11667 39),898,,W99,Petersburg,Grant County,West Virginia
+PGD,America/New_York,Charlotte County Airport,PGD,US,POINT (-81.99139 26.919167),22,http://www.flypgd.com/,KPGD,Cleveland,Charlotte County,Florida
+PGF,Europe/Paris,Llabanere Airport,PGF,FR,POINT (2.868183 42.741016),124,,LFMP,Peyrestortes,Departement des Pyrenees-Orientales,Languedoc-Roussillon
+PGG,America/Santarem,Progresso,PGG,BR,POINT (-55.46111 -6.954167),688,,,Jacareacanga,Jacareacanga,Para
+PHK,America/New_York,Palm Beach Co Glades,PHK,US,POINT (-80.69270838990238 26.78591995),36,http://www.pbia.org/about/general-aviation/glades-airport/,KPHK,Pahokee,Palm Beach County,Florida
+PGL,America/Chicago,Jackson County,PGL,US,POINT (-88.51667 30.383333),49,http://www.co.jackson.ms.us/departments/airport.php,KPQL,Moss Point,Jackson County,Mississippi
+PIK,Europe/London,Glasgow Prestwick Airport,GLA,GB,POINT (-4.577596602973978 55.50230535),49,http://www.glasgowprestwick.com/,EGPK,Prestwick,South Ayrshire,Scotland
+PIT,America/New_York,Pittsburgh International Airport,PIT,US,POINT (-80.23702448873742 40.49178275),1125,http://www.pitairport.com,KPIT,Carnot-Moon,Allegheny County,Pennsylvania
+PHU,Asia/Ho_Chi_Minh,Phu Vinh,PHU,VN,POINT (106.333336 9.95),42,,,Tra Vinh,,Tra Vinh
+PJG,Asia/Karachi,Panjgur,PJG,PK,POINT (64.13388676391679 26.9553442),3264,,OPPG,Panjgur,,Balochistan
+PHZ,Asia/Bangkok,Phi Phi Island,PHZ,TH,POINT (98.28333 8.166667),0,,,Thalang,,Phuket
+PIF,Asia/Taipei,Pingtung,PIF,TW,POINT (120.490234 22.705004),62,,RCSQ,Pingtung,Pingtung,Taiwan
+PIG,America/Boa_Vista,Pitinga,PIG,BR,POINT (-51.716667 -24.75),2808,,,Pitanga,Pitanga,Parana
+PIL,America/Asuncion,Pilar,PIL,PY,POINT (-58.333332 -26.866667),144,,SGPI,Pilar,,Neembucu
+PIM,America/New_York,Garden Harris County,PIM,US,POINT (-84.833336 32.86667),908,http://harriscountyga.gov/departments/airport/,KPIM,Pine Mountain,Harris County,Georgia
+PIO,America/Lima,Capitan FAP Renan Elias Olivera Airport,PIO,PE,POINT (-76.21667 -13.75),55,,SPSO,Pisco,Provincia de Pisco,Ica
+PIS,Europe/Paris,Poitiers-Biard Airport,PIS,FR,POINT (0.306389 46.58611),324,,LFBI,Biard,Departement de la Vienne,Poitou-Charentes
+PIU,America/Lima,Cap. FAP Guillermo Concha Iberico International Airport,PIU,PE,POINT (-80.613335 -5.201667),82,,SPUR,Piura,Provincia de Piura,Piura
+PIV,America/Sao_Paulo,Pirapora,PIV,BR,POINT (-44.93222 -17.338612),1653,,SNPX,Pirapora,Pirapora,Minas Gerais
+PJA,Europe/Stockholm,Pajala Airport,PJA,SE,POINT (23.075 67.246666),498,,ESUP,Pajala,Pajala Kommun,Norrbotten
+PKJ,America/Guatemala,Playa Grande,PKJ,GT,POINT (-90.76195 15.6425),2769,,MGPG,Chicaman,,Quiche
+PKK,Asia/Rangoon,Pakokku,PKK,MM,POINT (95.10639 21.343332),216,,VYPU,Pakokku,,Magway
+PKN,Asia/Pontianak,Iskandar Airport,PKN,ID,POINT (111.67340824897687 -2.7057634),36,,WAGI,Pangkalanbuun,,Central Kalimantan
+PKO,Africa/Porto-Novo,Parakou,PKO,BJ,POINT (2.6096799 9.3576899),1269,,DBBP,Parakou,,Borgou
+PKR,Asia/Kathmandu,Pokhara Airport,PKR,NP,POINT (83.98219244397883 28.2006145),2677,,VNPK,Pokhara,Gandaki Zone,Western Region
+PKS,Asia/Vientiane,Paksane,PKS,LA,POINT (103.683334 18.366667),518,,,Muang Pakxan,,Bolikhamxai
+PKV,Europe/Moscow,Pskov Airport,PKV,RU,POINT (28.3 57.816666),141,,ULOO,Pskov,,Pskov
+PKW,Africa/Gaborone,Selebi-Phikwe,PKW,BW,POINT (27.82922757526034 -22.0580912),2913,,FBSP,Selebi-Phikwe,,Central
+PKX,Asia/Shanghai,Beijing Daxing International Airport,BJS,CN,POINT (116.41231485294932 39.49734235),68,,ZBAD,Lixian,,Beijing
+PKY,Asia/Pontianak,Tjilik Riwut Airport,PKY,ID,POINT (113.94638459638963 -2.2323114),22,,WAOP,Palangkaraya,,Central Kalimantan
+PLC,America/Bogota,Planeta Rica,PLC,CO,POINT (-75.6 8.4),242,,,Planeta Rica,Planeta Rica,Cordoba
+PLQ,Europe/Vilnius,Palanga International Airport,PLQ,LT,POINT (21.094675861557334 55.972598899999994),32,http://www.palanga-airport.lt/,EYPA,Palanga,Klaipeda,Klaipedos apskritis
+PLD,America/Costa_Rica,Playa Samara,PLD,CR,POINT (-85.416664 10.25),104,,MRCR,Nicoya,Canton de Nicoya,Guanacaste
+PLR,America/Chicago,St Clair County,PLR,US,POINT (-86.24804279670902 33.55862815),498,http://www.plrairport.com/,KPLR,Pell City,Saint Clair County,Alabama
+PLH,Europe/London,Plymouth,PLH,GB,POINT (-4.110009 50.422337),479,http://www.plymouthairport.com/,EGHD,Plympton,Devon,England
+PLI,America/St_Vincent,Palm Island,PLI,VC,POINT (-61.233334 12.35),0,,,Hillsborough,,Carriacou and Petite Martinique
+PLX,Asia/Almaty,Semipalatinsk Airport,PLX,KZ,POINT (80.23222798253937 50.34996445),734,,UASS,Semey,,East Kazakhstan
+PLK,America/Chicago,M. Graham Clark - Taney County,PLK,US,POINT (-93.21667 36.65),725,http://flyplk.com/,KPLK,Branson,Taney County,Missouri
+PMF,Europe/Rome,Parma Airport,MIL,IT,POINT (10.296814771033567 44.82609055),88,,LIMP,Parma,Provincia di Parma,Emilia-Romagna
+PMT,America/Guyana,Paramakotoi,PMT,GY,POINT (-57.183334 7.566667),2600,,SYPM,Mahaica Village,,Demerara-Mahaica
+PMK,Australia/Brisbane,Palm Island Airport,PMK,AU,POINT (146.66667 -18.333332),0,,YPAM,Ingham,Hinchinbrook,Queensland
+PMM,Asia/Bangkok,Phanom Sarakham,PMM,TH,POINT (101.35 13.75),22,,,Phanom Sarakham,,Chachoengsao
+PMO,Europe/Rome,Falcone-Borsellino Airport,PMO,IT,POINT (13.104779 38.186523),39,http://www.gesap.it/index.php,LICJ,Cinisi,Palermo,Sicily
+PMP,Pacific/Port_Moresby,Pimaga,PMP,PG,POINT (143.41667 -6.666667),1833,,AYPJ,Mendi,,Southern Highlands
+PMQ,America/Argentina/Rio_Gallegos,Perito Moreno,PMQ,AR,POINT (-70.97131502202217 -46.541759150000004),1414,,SAWP,Perito Moreno,,Santa Cruz
+PMR,Pacific/Auckland,Palmerston North Airport,PMR,NZ,POINT (175.61964008329613 -40.32289885),95,http://www.pnairport.co.nz/index.php,NZPM,Palmerston North,Palmerston North City,Manawatu-Wanganui
+PMS,Asia/Damascus,Palmyra,PMS,SY,POINT (38.25 34.6),1909,,OSPR,Tadmur,,Homs
+PMV,America/Caracas,Santiago Marino International Airport,PMV,VE,POINT (-63.96899 10.917189),68,,SVMG,San Juan Bautista,Municipio Diaz,Nueva Esparta
+PMX,America/New_York,Metropolitan,PMX,US,POINT (-72.316666 42.15),377,,"13MA",Palmer,Hampden County,Massachusetts
+PMZ,America/Costa_Rica,Palmar Sur,PMZ,CR,POINT (-83.46844869976553 8.9513576),65,,MRPM,Ciudad Cortes,,Puntarenas
+PNA,Europe/Madrid,Pamplona Airport,PNA,ES,POINT (-1.6405366491380857 42.7684468),1459,,LEPP,Beriain,Provincia de Navarra,Navarre
+PNC,America/Chicago,Ponca City,PNC,US,POINT (-97.09903145822298 36.7314036),987,http://www.poncacityok.gov/index.aspx?nid=181,KPNC,Ponca City,Kay County,Oklahoma
+PND,America/Belize,Punta Gorda,PND,BZ,POINT (-88.816666 16.1),32,,"",Punta Gorda,,Toledo
+PNE,America/New_York,North Philadelphia,PHL,US,POINT (-75.0125 40.080276),88,http://www.phl.org/pne/pne.html,KPNE,Cornwells Heights,Bucks County,Pennsylvania
+PMY,America/Argentina/Catamarca,El Tehuelche,PMY,AR,POINT (-65.10186771520623 -42.758652049999995),416,,SAVY,Puerto Madryn,,Chubut
+PNB,America/Araguaina,Porto Nacional,PNB,BR,POINT (-48.39911065205263 -10.71799955),810,,SDPE,Palmas,Palmas,Tocantins
+PON,America/Guatemala,Poptun,PON,GT,POINT (-89.4137530262015 16.32617325),1683,,MGPP,Poptun,,Peten
+POL,Africa/Maputo,Pemba Airport,POL,MZ,POINT (40.5225 -12.988333),252,,FQPB,Pemba,,Cabo Delgado
+PPG,Pacific/Pago_Pago,Pago Pago International Airport,PPG,AS,POINT (-170.71596862723766 -14.3347658),52,,NSTU,Tafuna,,Western District
+POP,America/Santo_Domingo,La Union Airport,POP,DO,POINT (-70.56315 19.754942),59,,MDPP,Puerto Plata,Puerto Plata,Puerto Plata
+PQM,America/Mexico_City,Palenque,PQM,MX,POINT (-92.01424161757578 17.53322045),173,,MMPQ,Palenque,,Chiapas
+POT,America/Jamaica,Ken Jones,POT,JM,POINT (-76.53555 18.198334),32,,MKKJ,Hope Bay,,Portland
+POU,America/New_York,Dutchess County,POU,US,POINT (-73.882774 41.628056),121,,KPOU,Myers Corner,Dutchess County,New York
+POV,Europe/Bratislava,Presov,POV,SK,POINT (21.25 49),908,,LZPW,Presov,Okres Presov,Presovsky
+POW,Europe/Ljubljana,Portoroz,POW,SI,POINT (13.583333 45.516666),154,http://www.portoroz-airport.si/,LJPZ,Portoroz,,Piran-Pirano
+POX,Europe/Paris,Paris Cergy Pontoise,PAR,FR,POINT (2.1 49.05),160,,LFPT,Pontoise,Departement du Val-d'Oise,Ile-de-France
+POY,America/Denver,Powell,POY,US,POINT (-108.76667 44.75),4416,http://www.cityofpowell.com/assets/pages/city/airport.aspx,KPOY,Powell,Park County,Wyoming
+PPA,America/Chicago,Perry Lefors Field,PPA,US,POINT (-100.96667 35.533333),3244,,KPPA,Pampa,Gray County,Texas
+PPB,America/Sao_Paulo,A. De Barros Airport,PPB,BR,POINT (-51.45 -22.1),1332,http://www.daesp.sp.gov.br/aeroporto-detalhe/?id=879,SBDN,Alvares Machado,Alvares Machado,Sao Paulo
+PPD,America/Puerto_Rico,Palmas Del Mar,HUC,PR,POINT (-65.833336 18.15),78,,,Humacao,,Humacao
+PPE,America/Hermosillo,Puerto Penasco,PPE,MX,POINT (-113.5 31.383333),65,,MMPE,Puerto Penasco,Puerto Penasco,Sonora
+PRA,America/Argentina/Cordoba,General Justo Jose de Urquiza Airport,PRA,AR,POINT (-60.4829340773004 -31.7975709),242,,SAAP,San Benito,,Entre Rios
+PRB,America/Los_Angeles,Paso Robles,PRB,US,POINT (-120.63062553873178 35.6756407),741,http://www.prcity.com/government/departments/publicworks/airport/,KPRB,Paso Robles,San Luis Obispo County,California
+PRC,America/Phoenix,Prescott Airport,PRC,US,POINT (-112.424164 34.65),5022,,KPRC,Chino Valley,Yavapai County,Arizona
+PRG,Europe/Prague,Vaclav Havel Airport Prague,PRG,CZ,POINT (14.27056489323675 50.1020451),1181,http://www.prg.aero,LKPR,Hostivice,,Central Bohemia
+PRI,Indian/Mahe,Praslin Island Airport,PRI,SC,POINT (55.691294938853574 -4.3186006500000005),55,,FSPP,Victoria,,English River
+PRJ,Europe/Rome,Capri,PRJ,IT,POINT (14.233333 40.55),652,,,Capri,Provincia di Napoli,Campania
+PRK,Africa/Johannesburg,Prieska,PRK,ZA,POINT (22.7 -29.666668),3238,,FAPK,Prieska,Pixley ka Seme District Municipality,Northern Cape
+PRL,America/Anchorage,Port Oceanic,PRL,US,POINT (-147.81944 60.208332),0,,,Girdwood,Anchorage Municipality,Alaska
+PRM,Europe/Lisbon,Portimao Airport,PRM,PT,POINT (-8.533333 37.13333),0,,LPPM,Portimao,Portimao,Faro
+PRN,Europe/Belgrade,Pristina International Airport,PRN,XK,POINT (21.032371075473243 42.57643955),1758,http://www.airportpristina.com/,BKPR,Glanica,Komuna e Gracanices,Pristina
+PRO,America/Chicago,Perry Municipal,PRO,US,POINT (-94.1 41.85),1003,http://www.perryia.org/perry-municipal-airport.html,KPRO,Perry,Dallas County,Iowa
+PRP,Europe/Paris,Propriano,PRP,FR,POINT (8.89373649895094 41.660028),19,,LFKO,Propriano,Departement de la Corse-du-Sud,Corsica
+PRQ,America/Argentina/Cordoba,Pres. Roque Saenz Pena,PRQ,AR,POINT (-60.666668 -26.833332),321,,SARS,Napenay,,Chaco
+PRV,Europe/Prague,Prerov,PRV,CZ,POINT (17.208332 49.59028),780,,LKPO,Hnevotin,,Olomoucky
+PRW,America/Chicago,Prentice,PRW,US,POINT (-90.2800207 45.5387512),1561,http://vil.prentice.wi.gov/departments/airport/,"",Phillips,Price County,Wisconsin
+PRX,America/Chicago,Cox Field,PRX,US,POINT (-95.45083555830917 33.6348213),531,,KPRX,Reno,Lamar County,Texas
+PRH,Asia/Bangkok,Phrae Airport,PRH,TH,POINT (100.16354112141005 18.13174175),515,,VTCP,Phrae,,Phrae
+PRZ,America/Los_Angeles,Prineville,PRZ,US,POINT (-120.9035 44.2869),3244,http://www.prinevilleairport.com/,S39,Prineville,Crook County,Oregon
+PSB,America/New_York,Bellefonte,PSB,US,POINT (-78.08583 40.88333),1889,,,Stormstown,Centre County,Pennsylvania
+PSW,America/Sao_Paulo,Passos,PSW,BR,POINT (-46.61667 -20.716667),2427,,SNOS,Passos,Passos,Minas Gerais
+PSX,America/Chicago,Palacios,PSX,US,POINT (-96.25 28.7),39,http://cityofpalacios.org/airport/,KPSX,Palacios,Matagorda County,Texas
+PTA,America/Anchorage,Port Alsworth,PTA,US,POINT (-145.33333 60.2),0,,PALJ,Cordova,Valdez-Cordova Census Area,Alaska
+PTB,America/New_York,Dinwiddie County Airport,PTB,US,POINT (-77.4 37.216667),108,http://www.ptbairport.com/,KPTB,Petersburg,City of Petersburg,Virginia
+PSZ,America/La_Paz,Puerto Suarez,PSZ,BO,POINT (-57.81779376757808 -18.97391885),406,,SLPS,Corumba,Corumba,Mato Grosso do Sul
+PTG,Africa/Johannesburg,Polokwane Airport,PTG,ZA,POINT (29.966667 -23.916668),4872,,FAPP,Mankoeng,Capricorn District Municipality,Limpopo
+PTI,Australia/Brisbane,Port Douglas,PTI,AU,POINT (145.46388 -16.48611),29,,,Port Douglas,Cairns,Queensland
+PTJ,Australia/Melbourne,Portland,PTJ,AU,POINT (141.625 -38.384167),88,,YPOD,Portland,Glenelg,Victoria
+PTK,America/Detroit,Pontiac,PTK,US,POINT (-83.41139 42.664722),971,https://www.oakgov.com/aviation/ocia,KPTK,Waterford,Oakland County,Michigan
+PTM,America/Caracas,Palmarito,PTM,VE,POINT (-70.183334 7.566667),341,,SVPT,Maporal,Municipio Pedraza,Barinas
+PTN,America/Chicago,Williams Memorial,PTN,US,POINT (-91.3375 29.708332),26,,KPTN,Patterson,Saint Mary Parish,Louisiana
+PTO,America/Sao_Paulo,Pato Branco,PTO,BR,POINT (-52.694225841764215 -26.2169937),2687,,SBPO,Pato Branco,Pato Branco,Parana
+PUD,America/Argentina/Rio_Gallegos,Puerto Deseado,PUD,AR,POINT (-65.90289157339043 -47.7346017),269,,SAWD,Puerto Deseado,,Santa Cruz
+PTT,America/Chicago,Pratt,PTT,US,POINT (-98.75 37.716667),1955,,KPTT,Pratt,Pratt County,Kansas
+PTX,America/Bogota,Pitalito,PTX,CO,POINT (-76.03333 1.85),4160,,SKPI,Pitalito,,Huila
+PUV,Pacific/Noumea,Poum,PUV,NC,POINT (164.098999 -20.2891998),29,,NWWP,Poum,Poum,North Province
+PUW,America/Los_Angeles,Moscow Regional Airport,PUW,US,POINT (-117.11616790689413 46.74046085),2513,http://www.pullman-wa.gov/airport/,KPUW,Pullman,Whitman County,Washington
+PUX,America/Santiago,Puerto Varas,PUX,CL,POINT (-72.94444 -40.34028),187,,SCPV,Rio Bueno,Provincia del Ranco,Los Rios
+PUY,Europe/Zagreb,Pula Airport,PUY,HR,POINT (13.918971947969927 44.89567215),154,,LDPL,Galizana,,Istarska
+PUZ,America/Managua,Puerto Cabezas,PUZ,NI,POINT (-83.38361 14.045278),39,,MNPC,Puerto Cabezas,,Atlantico Norte (RAAN)
+PVA,America/Bogota,Providencia,PVA,CO,POINT (-81.35 13.35),0,,SKPV,Mountain,,"Archipielago de San Andres, Providencia y Santa Catalina"
+PVC,America/New_York,Provincetown Airport,PVC,US,POINT (-70.22338042668076 42.071795699999996),16,,KPVC,Provincetown,Barnstable County,Massachusetts
+PVF,America/Los_Angeles,Placerville,PVF,US,POINT (-120.75281014418529 38.72498965),2572,,KPVF,Placerville,El Dorado County,California
+PVE,America/Panama,El Porvenir,PVE,PA,POINT (-81 9),0,,MPVR,El Cope,Distrito La Pintada,Cocle
+PVW,America/Chicago,Hale County,PVW,US,POINT (-101.71604068993707 34.166811100000004),3366,,KPVW,Plainview,Hale County,Texas
+PWD,America/Denver,Sherwood,PWD,US,POINT (-104.526672 48.7886728),2217,http://www.co.sheridan.mt.us/index.php?airport,KPWD,Plentywood,Sheridan County,Montana
+PVI,America/Sao_Paulo,Edu Chaves,PVI,BR,POINT (-52.466667 -23.066668),1358,,SSPI,Paranavai,Paranavai,Parana
+PWI,Africa/Addis_Ababa,Beles,PWI,ET,POINT (36.4098768 11.3100309),3661,,HAPW,Bure,,Amhara
+PVR,America/Mexico_City,Gustavo Diaz Ordaz International Airport,PVR,MX,POINT (-105.24898 20.678297),32,http://vallarta.aeropuertosgap.com.mx/index.php?lang=eng,MMPR,Las Jarretaderas,Bahia de Banderas,Nayarit
+PVZ,America/New_York,Casement,PVZ,US,POINT (-81.25 41.716667),698,,,Painesville,Lake County,Ohio
+PWA,America/Chicago,Wiley Post,OKC,US,POINT (-97.53333 35.466667),1220,http://www.wileypostairport.com/Home.aspx,KPWA,Oklahoma City,Oklahoma County,Oklahoma
+PWL,Asia/Jakarta,Purwokerto,PWL,ID,POINT (109.15 -7.466667),242,,WICP,Tipar,,Central Java
+PWO,Africa/Lubumbashi,Pweto,PWO,CD,POINT (28.9 -8.466667),3113,,FZQC,Kaputa,,Northern
+PWY,America/Denver,Ralph Wenz Field,PWY,US,POINT (-109.807222 42.795556),7063,http://www.pinedaleonline.com/pinedaleairport.HTM,KPNA,Pinedale,Sublette County,Wyoming
+PYH,America/Caracas,Puerto Ayacucho,PYH,VE,POINT (-67.5 5.6),580,,SVPA,Puerto Ayacucho,Municipio Autonomo Atures,Amazonas
+PYJ,Asia/Yakutsk,Polyarnyj Airport,PYJ,RU,POINT (112.05 66.416664),1578,,UERP,Udachny,,Sakha
+PYX,Asia/Bangkok,Pattaya,PYX,TH,POINT (100.8980935 12.9328063),104,,,Phatthaya,,Chon Buri
+PYL,America/Anchorage,Perry SPB,PYL,US,POINT (-92.816666 35.033333),692,,PYL,Perryville,Perry County,Arkansas
+PYM,America/New_York,Plymouth,PYM,US,POINT (-70.683334 41.966667),108,,KPYM,North Plymouth,Plymouth County,Massachusetts
+PYN,America/Bogota,Payan,PYN,CO,POINT (-78.13333 1.816667),337,,,Payan,,Narino
+PYO,America/Guayaquil,Putumayo,PYO,EC,POINT (-75.9 0.083333),748,,SEPT,Puerto Asis,,Putumayo
+QOW,Africa/Lagos,Sam Mbakwe International Airport,QOW,NG,POINT (7.204520853248672 5.42797015),373,http://www.faannigeria.org/nigeria-airport.php?airport=17,DNIM,Ihuo,,Imo
+RLT,Africa/Niamey,Arlit,RLT,NE,POINT (7.368073637080116 18.7905162),1361,,DRZL,Arlit,,Agadez
+QLU,Europe/Warsaw,Lublin Radawiec Airport,QLU,PL,POINT (22.713611 51.240278),0,,,Swidnik,Powiat swidnicki,Lublin Voivodeship
+QHU,Europe/Berlin,Husum,QHU,DE,POINT (9.138333320620001 54.5099983215),134,,EDXJ,Schwesing,,Schleswig-Holstein
+QMV,America/New_York,Montvale,QMV,US,POINT (-74.01667 41.033333),0,,,Montvale,Bergen County,New Jersey
+QOR,Asia/Istanbul,Ordu,QOR,TR,POINT (40.9671805 38.0687895),0,,,Silvan,,Diyarbakir
+QRW,Africa/Lagos,Warri,QRW,NG,POINT (5.818545655443176 5.5985715),242,http://www.faannigeria.org/nigeria-airport.php?airport=25,DNSU,Orerokpe,,Delta
+QLV,Europe/Berlin,Leverkusen Mitte,QLV,DE,POINT (7.00798689246378 51.013395900000006),0,,,Leverkusen,Regierungsbezirk Koln,North Rhine-Westphalia
+QKU,Europe/Berlin,Messe/Deutz Rail Station,CGN,DE,POINT (6.9599115 50.9406645),150,,,Altstadt Nord,Regierungsbezirk Koln,North Rhine-Westphalia
+QUB,Africa/Tripoli,Ubari,QUB,LY,POINT (12.766667 26.6),1528,,HLUB,Awbari,,Sha`biyat Wadi al Hayat
+QLR,Europe/Lisbon,Leiria Gandara Airport,QLR,PT,POINT (-8.81972 39.778599),108,,LPMR,Leiria,Leiria,Leiria
+QRA,Africa/Johannesburg,Rand/Germiston,JNB,ZA,POINT (28.242779 -26.140278),5511,,FAGM,Boksburg,Ekurhuleni Metropolitan Municipality,Gauteng
+QRO,America/Mexico_City,Queretaro Intercontinental Airport,QRO,MX,POINT (-100.38333 20.6),6023,http://www.aiq.com.mx/,MMQT,Santiago de Queretaro,Queretaro,Queretaro
+QSC,America/Sao_Paulo,Sao Carlos,QSC,BR,POINT (-47.90275820931602 -21.8730674),2637,,SDSC,Ibate,Ibate,Sao Paulo
+QRY,America/Godthab,Heliport,QRY,GL,POINT (-53.45 68.15),147,,,Aasiaat,,Qaasuitsup
+QSF,Africa/Algiers,Setif Airport,QSF,DZ,POINT (5.325335614861902 36.18053795),3297,http://www.egsa-constantine.dz/,DAAS,Ain Arnat,,Setif
+QSR,Europe/Rome,Pontecagnano,QSR,IT,POINT (14.911103145423613 40.61887125),98,http://www.aeroportosalerno.it/,LIRI,Pratole,Provincia di Salerno,Campania
+QUG,Europe/London,Goodwood,QUG,GB,POINT (-0.842248 50.941666),406,http://www.goodwood.co.uk/aviation/,EGHR,Milland,West Sussex,England
+QUY,Europe/London,Wyton RAF Station,QUY,GB,POINT (-0.107832998037 52.3572006226),108,,EGUY,Hemingford Grey,Cambridgeshire,England
+QWG,America/New_York,Wilgrove Air Park,CLT,US,POINT (-80.85 35.216667),741,https://web.archive.org/web/20200910142246/http://www.wilgroveairport.net/,"",Charlotte,Mecklenburg County,North Carolina
+QYW,Europe/Paris,Vieux Port,CEQ,FR,POINT (7.044444 43.53889),0,,,Cannes,Departement des Alpes-Maritimes,Provence-Alpes-Cote d'Azur
+RAC,America/Chicago,John H. Batten Field,RAC,US,POINT (-87.85 42.683334),718,http://www.battenairport.aero/,KRAC,Sturtevant,Racine County,Wisconsin
+QZD,Europe/Budapest,Szeged,QZD,HU,POINT (20.091849841099055 46.245457650000006),0,,,Szeged,,Csongrad
+RAD,America/Tortola,Road Town,TOV,VG,POINT (-64.620834 18.427778),9,,,Road Town,,
+RAH,Asia/Riyadh,Rafha Airport,RAH,SA,POINT (43.488785 29.623463),1450,,OERF,As Salman,,Al Muthanna
+RBB,America/Manaus,Borba,RBB,BR,POINT (-59.60435028003239 -4.40582015),88,,SWBR,Borba,Borba,Amazonas
+RAJ,Asia/Kolkata,Civil Airport,RAJ,IN,POINT (70.78235 22.308674),479,http://www.airportsindia.org.in/allAirports/rajkot.jsp,VARK,Rajkot,Rajkot,Gujarat
+RBC,Australia/Melbourne,Robinvale,RBC,AU,POINT (142.776421775 -34.64239995),203,,YROI,Ouyen,Mildura Shire,Victoria
+RAL,America/Los_Angeles,Riverside Municipalcipal,RAL,US,POINT (-117.44222 33.951668),761,http://www.riversideca.gov/airport/,KRAL,Pedley,Riverside County,California
+RBI,Pacific/Fiji,Rabi,RBI,FJ,POINT (-179 15),88,,NFFR,Kekaha,Kauai County,Hawaii
+RAM,Australia/Darwin,Ramingining,RAM,AU,POINT (134.81667 -12),0,,YRNG,Nhulunbuy,East Arnhem,Northern Territory
+RAN,Europe/Rome,La Spreta,RAN,IT,POINT (12.223333 44.36667),26,http://www.aeroclubravenna.com,LIDR,Classe,Provincia di Ravenna,Emilia-Romagna
+RAO,America/Sao_Paulo,Dr. Leite Lopes State Airport,RAO,BR,POINT (-47.773335 -21.135834),1791,,SBRP,Ribeirao Preto,Ribeirao Preto,Sao Paulo
+RAT,Asia/Yekaterinburg,Raduzhnyi,RAT,RU,POINT (77 62.5),295,,USNR,Raduzhny,,Khanty-Mansiyskiy Avtonomnyy Okrug
+RBQ,America/La_Paz,Rurrenabaque,RBQ,BO,POINT (-67.55 -14.45),1246,,SLRQ,Rurrenabaque,,El Beni
+RBR,America/Rio_Branco,Pres. Medici Airport,RBR,BR,POINT (-67.8 -9.966667),462,,SBRB,Rio Branco,Rio Branco,Acre
+RBS,Australia/Melbourne,Orbost,RBS,AU,POINT (148.5 -37.7),164,,YORB,Lakes Entrance,East Gippsland,Victoria
+RBO,America/La_Paz,Robore,RBO,BO,POINT (-59.765530649507966 -18.32741565),823,,SLRB,Robore,,Santa Cruz
+RCA,America/Denver,Ellsworth AFB,RAP,US,POINT (-103.23333 44.083332),3251,http://www.ellsworth.af.mil/,KRCA,Rapid City,Pennington County,South Dakota
+RBT,Africa/Nairobi,Marsabit,RBT,KE,POINT (37.99959281192161 2.3446157999999997),4347,,HKMB,Marsabit,,Marsabit
+RBU,Australia/Perth,Roebourne,RBU,AU,POINT (117.1569977 -20.7616997),22,,YROE,Roebourne,Roebourne,Western Australia
+RCL,Pacific/Efate,Redcliffe,RCL,VU,POINT (153.07333 -27.207035),19,,NVSR,Scarborough,Moreton Bay,Queensland
+RCN,Australia/Adelaide,American River,RCN,AU,POINT (138 -35.833332),278,,"",Kingscote,Kangaroo Island,South Australia
+RBW,America/New_York,Lowcountry Regional,RBW,US,POINT (-80.6415027 32.9201327),95,http://lowcountryairport.com/,KRBW,Walterboro,Colleton County,South Carolina
+RCK,America/Chicago,Coffield,RCK,US,POINT (-96.98958330499806 30.6318297),462,http://www.rockdalecityhall.com/index.aspx?nid=127,KRCK,Rockdale,Milam County,Texas
+RCT,America/Detroit,Miller Field,RCT,US,POINT (-85.51667 43.88333),1033,,KRCT,Reed City,Osceola County,Michigan
+RCU,America/Argentina/Cordoba,Rio Cuarto,RCU,AR,POINT (-64.331665 -33.165558),1407,,SAOC,Rio Cuarto,Departamento de Rio Cuarto,Cordoba
+RCQ,America/Argentina/Cordoba,Reconquista,RCQ,AR,POINT (-59.69118665812828 -29.202801899999997),160,,SATR,Reconquista,Departamento de General Obligado,Santa Fe
+REE,America/Chicago,Reese AFB,LBB,US,POINT (-101.85 33.583332),3205,http://reesetechnologycenter.com/index.php/facilities/airfield-pad-site-development,"8XS8",Lubbock,Lubbock County,Texas
+REG,Europe/Rome,Tito Menniti Airport,REG,IT,POINT (15.650833 38.07528),68,,LICR,Reggio Calabria,Provincia di Reggio Calabria,Calabria
+REI,America/Cayenne,Regina,REI,GF,POINT (-52.133573607074794 4.3130527999999995),78,,SOOR,Roura,Guyane,Guyane
+REL,America/Argentina/Catamarca,Trelew Airport,REL,AR,POINT (-65.32400374999756 -43.2325274),108,,SAVT,Trelew,,Chubut
+REN,Asia/Yekaterinburg,Orenburg Airport,REN,RU,POINT (55.45557495440096 51.7957696),390,http://www.airoport.orenair.ru/,UWOO,Nezhinka,,Orenburg
+REO,America/Los_Angeles,Rome State,REO,US,POINT (-117.61667 42.833332),3704,http://www.oregon.gov/aviation/Pages/Rome.aspx,KREO,Homedale,Owyhee County,Idaho
+REP,Asia/Phnom_Penh,Siem Reap International Airport,REP,KH,POINT (103.81347888302334 13.41068555),55,http://www.cambodia-airports.com/siemreap/en,VDSR,Siem Reap,,Siem Reap
+REQ,Asia/Karachi,Reko Diq,REQ,PK,POINT (-73.86667 -5.064947),308,,"",Requena,Provincia de Requena,Loreto
+RER,America/Guatemala,Base Aerea Del Sur,RER,GT,POINT (-91.696945 14.520278),649,,MGRT,Retalhuleu,Municipio de Retalhuleu,Retalhuleu
+RES,America/Argentina/Cordoba,Resistencia Airport,RES,AR,POINT (-59.05377708929865 -27.4476154),141,,SARE,Fontana,,Chaco
+RET,Europe/Oslo,Stolport Airport,RET,NO,POINT (12.083333 67.48333),0,https://avinor.no/en/airport/rost-airport/,ENRS,Rost,Rost,Nordland
+REU,Europe/Madrid,Reus Airport,REU,ES,POINT (1.1574354225597268 41.1464121),219,,LERS,Vila-seca,Provincia de Tarragona,Catalonia
+REW,Asia/Kolkata,Rewa,REW,IN,POINT (81.3 24.533333),994,,VA1G,Rewa,Rewa,Madhya Pradesh
+REX,America/Matamoros,Gen Lucio Blanco International Airport,REX,MX,POINT (-98.2241938925834 26.005776500000003),124,,MMRX,Vamos Tamaulipas,Reynosa,Tamaulipas
+REY,America/La_Paz,Reyes,REY,BO,POINT (-67.26667 -14.316667),521,,SLRY,Reyes,,El Beni
+REH,America/New_York,Rehoboth Beach,REH,US,POINT (-75.12238929445395 38.7219659),36,,,Rehoboth Beach,Sussex County,Delaware
+RIC,America/New_York,Richmond International Airport (Byrd Field),RIC,US,POINT (-77.3225 37.50611),114,http://www.flyrichmond.com/,KRIC,Fort Lee,Henrico County,Virginia
+RID,America/Indiana/Indianapolis,Richmond Municipalcipal Airport,RID,US,POINT (-84.9 39.833332),935,,,Richmond,Wayne County,Indiana
+RIE,America/Chicago,Rice Lake,RIE,US,POINT (-91.72361 45.47861),1131,http://www.ricelakeairport.com/,KRPD,Rice Lake,Barron County,Wisconsin
+RIF,America/Denver,Reynolds,RIF,US,POINT (-112.094444 38.74111),5269,,,Richfield,Sevier County,Utah
+RIG,America/Sao_Paulo,Rio Grande,RIG,BR,POINT (-52.16620090786992 -32.0824308),49,,SJRG,Rio Grande,Rio Grande,Rio Grande do Sul
+RIH,America/Panama,Scarlett Martínez International Airport,RIH,PA,POINT (-80.127778 8.375833),65,,MPSM,Rio Hato,,Cocle
+RIJ,America/Lima,Rioja,RIJ,PE,POINT (-77.15 -6.05),2709,,SPJA,Rioja,Provincia de Rioja,San Martin
+RIK,America/Costa_Rica,Carrillo,RIK,CR,POINT (-85.48333 9.866667),22,,,Samara,,Guanacaste
+RIL,America/Denver,Garfield County,RIL,US,POINT (-107.78333 39.533333),5367,http://www.rifleairport.com/,KRIL,Rifle,Garfield County,Colorado
+RIM,America/Lima,Rodriguez De Mendoza,RIM,PE,POINT (-78 -6),6607,,SPLN,Churuja,Provincia de Bongara,Amazonas
+RIS,Asia/Tokyo,Rishiri Airport,RIS,JP,POINT (141.25 45.183334),4068,,RJER,Rishiri Town,,Hokkaido
+RIT,America/Panama,Rio Tigre,RIT,PA,POINT (-80.8 7.833333),1013,,,Las Minas,,Herrera
+RIV,America/Los_Angeles,March ARB,RAL,US,POINT (-117.36667 33.983334),869,,KRIV,Rubidoux,Riverside County,California
+RIW,America/Denver,Riverton Airport,RIW,US,POINT (-108.45695 43.064445),5442,,KRIW,Riverton,Fremont County,Wyoming
+RIX,Europe/Riga,Riga International Airport,RIX,LV,POINT (23.97264338931523 56.922239649999995),39,http://www.riga-airport.com/,EVRA,Pinki,,Babite
+RIY,Asia/Aden,Riyan Mukalla,RIY,YE,POINT (49.37876752804668 14.660666299999999),49,,OYRN,Ghayl Ba Wazir,Ghayl Ba Wazir,Muhafazat Hadramawt
+RJB,Asia/Kathmandu,Rajbiraj,RJB,NP,POINT (86.833336 26.483334),209,,VNRB,Rajbiraj,,Eastern Region
+RLR,Indian/Antananarivo,Relais de la Reine,RLR,MG,POINT (45.3258098 -22.6415869),2618,,,Ranohira,,Ihorombe
+RMB,Asia/Muscat,Buraimi,RMB,OM,POINT (55.78885539166737 24.23882485),967,,OOBR,Al Buraymi,,Al Buraimi
+RMD,Asia/Kolkata,Ramagundam,RMD,IN,POINT (79.4 18.766666),610,,VORG,Ramgundam,Karimnagar,Telangana
+RME,America/New_York,Griffiss AFB,RME,US,POINT (-75.45 43.216667),479,http://www.ocgov.net/oneida/airport,KRME,Rome,Oneida County,New York
+RMF,Africa/Cairo,Marsa Alam International Airport,RMF,EG,POINT (34.586226362149766 25.5566869),209,http://www.marsa-alam-airport.com,HEMA,Marsa Alam,,Red Sea
+RMG,America/New_York,Richard B Russell,RMG,US,POINT (-85.15983218608625 34.35150285),626,http://www.romefloyd.com/EconomicDevelopment/Airport/tabid/306/Default.aspx,KRMG,Shannon,Floyd County,Georgia
+RML,Asia/Colombo,Ratmalana,CMB,LK,POINT (79.8871535365376 6.8218321500000005),45,,VCCC,Galkissa,,Western
+RMK,Australia/Adelaide,Renmark,RMK,AU,POINT (140.66329884806268 -34.199031149999996),68,,YREN,Renmark West,Renmark Paringa,South Australia
+RMS,Europe/Berlin,Ramstein,RMS,DE,POINT (7.601240124264638 49.44142600000001),777,http://www.ramstein.af.mil/,ETAR,Ramstein-Miesenbach,,Rheinland-Pfalz
+RMU,Europe/Madrid,Corvera International,RMU,ES,POINT (-1.125 37.803),620,,LEMI,Fuente-Alamo de Murcia,Murcia,Murcia
+RMY,America/Los_Angeles,Mariposa-Yosemite,RMY,US,POINT (-85.004524 42.261806),892,,KMPI,Marshall,Calhoun County,Michigan
+RNI,America/Managua,Corn Island,RNI,NI,POINT (-83.05909221898577 12.1733502),32,,MNCI,Corn Island,,Atlantico Sur
+RNC,America/Chicago,Warren County,RNC,US,POINT (-85.93816 35.837082),1167,http://www.warrencountymemorialairport.com/default.htm,KRNC,Woodbury,Cannon County,Tennessee
+RNZ,America/Chicago,Rensselaer,RNZ,US,POINT (-87.18256339999999 40.9472638),669,,KRZL,Rensselaer,Jasper County,Indiana
+RNH,America/Chicago,New Richmond Municipal Airport,RNH,US,POINT (-92.55 45.13333),990,,,New Richmond,Saint Croix County,Wisconsin
+RNJ,Asia/Tokyo,Yoron Airport,RNJ,JP,POINT (128.43333 27.033333),278,,RORY,Nago,,Okinawa
+RNL,Pacific/Guadalcanal,Rennell,RNL,SB,POINT (160.3 -11.666667),72,,AGGR,Kirakira,,Makira
+RNM,Asia/Muscat,Qarn Alam,RNM,OM,POINT (-117.03639 33.089054),649,,OOGB,Escondido,San Diego County,California
+ROA,America/New_York,Roanoke-Blacksburg Regional Airport,ROA,US,POINT (-79.97038 37.32051),1138,http://www.roanokeairport.com/,KROA,Hollins,Roanoke County,Virginia
+ROD,Africa/Johannesburg,Robertson,ROD,ZA,POINT (19.9 -33.816666),587,,FARS,Ashton,Cape Winelands District Municipality,Western Cape
+ROG,America/Chicago,Rogers,ROG,US,POINT (-94.10667 36.372223),1476,,KROG,Little Flock,Benton County,Arkansas
+ROL,America/Denver,Roosevelt,ROL,US,POINT (-109.98333 40.3),5065,http://www.rooseveltcity.com/164/Airport,"",Roosevelt,Duchesne County,Utah
+RON,America/Bogota,Rondon,RON,CO,POINT (-71.083336 6.3),436,,,Puerto Rondon,,Arauca
+ROO,America/Cuiaba,Rondonopolis Airport,ROO,BR,POINT (-54.716667 -16.433332),1085,http://www.rondonopolis.mt.gov.br/orgaos-municipais/aeroporto-municipal-maestro-marinho-franco/,SBRD,Rondonopolis,Rondonopolis,Mato Grosso
+RPX,America/Denver,Roundup,RPX,US,POINT (-108.549839 46.4721014),3484,,KRPX,Roundup,Musselshell County,Montana
+RRL,America/Chicago,Merrill Municipal Airport,RRL,US,POINT (-89.71268279016502 45.1989797),1282,http://www.ci.merrill.wi.us/index.asp?SEC=4F5D638A-3ECD-45E8-8226-20D66738C412&Type=B_BASIC,KRRL,Merrill,Lincoln County,Wisconsin
+ROS,America/Argentina/Cordoba,Fisherton Airport,ROS,AR,POINT (-60.783333 -32.933334),62,,SAAR,Funes,,Santa Fe
+ROT,Pacific/Auckland,Rotorua International Airport,ROT,NZ,POINT (176.31746 -38.10982),954,,NZRO,Rotorua,Rotorua District,Bay of Plenty
+RRV,Australia/Darwin,Robinson River,RRV,AU,POINT (136.94278941021534 -16.7153847),196,,YRBR,Alyangula,,Northern Territory
+RSA,America/Argentina/Salta,Santa Rosa Airport,RSA,AR,POINT (-64.27518346113247 -36.5872513),583,,SAZR,Santa Rosa,,La Pampa
+RSN,America/Chicago,Ruston,RSN,US,POINT (-92.5890211 32.5136789),111,http://www.ruston.org/departments.aspx?p_PageAlias=regional-airport,KRSN,Ruston,Lincoln Parish,Louisiana
+ROX,America/Chicago,Roseau Municipal Airport,ROX,US,POINT (-95.76667 48.85),1030,http://www.city.roseau.mn.us/index.asp?Type=B_BASIC&SEC=%7BAE9D09FA-04AA-46A5-AD2E-2F95D91128A2%7D,KROX,Roseau,Roseau County,Minnesota
+ROY,America/Argentina/Catamarca,Rio Mayo,ROY,AR,POINT (-70.25 -45.666668),1653,,SAWM,Rio Mayo,,Chubut
+RST,America/Chicago,Rochester International Airport,RST,US,POINT (-92.49544412529157 43.904309749999996),1309,,KRST,Stewartville,Olmsted County,Minnesota
+RSW,America/New_York,Southwest Florida International Airport,FMY,US,POINT (-81.75880562612211 26.53294975),32,http://www.flylcpa.com/,KRSW,Gateway,Lee County,Florida
+RSX,America/New_York,Rouses Point,RSX,US,POINT (-73.3629941 44.991696),95,https://www.dot.ny.gov/divisions/operating/opdm/aviation/repository/air_dir2/Rouses-Point-revised.pdf,K21,Rouses Point,Clinton County,New York
+RTA,Pacific/Fiji,Rotuma Island,RTA,FJ,POINT (177.0711 -12.4825),16,,NFNR,Ahau,,Rotuma
+RTB,America/Tegucigalpa,Roatan Airport,RTB,HN,POINT (-86.5248116875334 16.3169504),36,,MHRO,Coxen Hole,Roatan,Bay Islands
+RTD,America/New_York,Rotunda,RTD,US,POINT (-82.26667 26.866667),36,,,Rotonda,Charlotte County,Florida
+RTI,Asia/Makassar,Roti,RTI,ID,POINT (122.96667 -10.883333),0,http://rti.otoritasbandara.info/,WATR,Batutua Satu,,East Nusa Tenggara
+RTL,America/Chicago,Spirit Lake,RTL,US,POINT (-116.86667 47.95),2539,,"",Spirit Lake,Kootenai County,Idaho
+RTM,Europe/Amsterdam,Rotterdam The Hague Airport,RTM,NL,POINT (4.439731915265206 51.95633585),32,,EHRD,Delfshaven,Gemeente Rotterdam,South Holland
+RTN,America/Denver,Crews Field,RTN,US,POINT (-104.501114 36.74139),6335,,KRTN,Raton,Colfax County,New Mexico
+RTS,Australia/Perth,Rottnest Island,RTS,AU,POINT (115.54434807748402 -32.00573915),22,,YRTI,Mosman Park,,Western Australia
+RTY,Australia/Adelaide,Merty,RTY,AU,POINT (139 -28.25),101,,YMYT,The Sill,,South Australia
+RUA,Africa/Kampala,Arua,RUA,UG,POINT (30.933332 3.033333),3769,,HUAR,Arua,Arua District,Northern Region
+RTC,Asia/Kolkata,Ratnagiri,RTC,IN,POINT (73.3303872302339 17.01486015),344,,VARG,Ratnagiri,Ratnagiri,Maharashtra
+RUE,Africa/Lubumbashi,Butembo,RUE,CD,POINT (-93.0973 35.260094),370,,FZMB,Russellville,Pope County,Arkansas
+RUG,Asia/Shanghai,Rugao,RUG,CN,POINT (120.555275 32.388332),36,,ZSRG,Rucheng,,Jiangsu Sheng
+RUK,Asia/Kathmandu,Rukumkot,RUK,NP,POINT (82.46667 28.625),5377,,VNRK,Salyan,Rapti Zone,Mid Western
+RWF,America/Chicago,Redwood Falls Municipal,RWF,US,POINT (-95.1 44.5),1043,,KRWF,Redwood Falls,Redwood County,Minnesota
+RWI,America/New_York,Rocky Mount-wilson,RWI,US,POINT (-77.89056 35.854443),137,,KRWI,Elm City,Wilson County,North Carolina
+RWL,America/Denver,Rawlins,RWL,US,POINT (-107.2037043391423 41.805990949999995),6748,http://www.wyomingairports.org/index.php?/main/airports_detail/rawlins_municipal_airport/,KRWL,Rawlins,Carbon County,Wyoming
+RWN,Europe/Kiev,Rovno,RWN,UA,POINT (26.15 50.6),708,http://www.aeroport.rv.ua/,UKLR,Tynne,,Rivne
+RWS,America/Sao_Paulo,Sumare,RWS,BR,POINT (-47.192223 -22.800556),1961,,,Paulinia,Paulinia,Sao Paulo
+RXS,Asia/Manila,Roxas City Airport,RXS,PH,POINT (122.75278252625999 11.59774925),42,,RPVR,Roxas City,Province of Capiz,Western Visayas
+RXE,America/Boise,Madison County,RXE,US,POINT (-111.85106 43.83911),4852,,KRXE,Rexburg,Madison County,Idaho
+RYK,Asia/Karachi,Rahim Yar Khan Airport,RYK,PK,POINT (70.27883701621482 28.38205395),236,,OPRK,Sadiqabad,,Punjab
+RYB,Europe/Moscow,Rybinsk,RYB,RU,POINT (38.86667 58.13333),360,,UUBK,Rybinsk,,Jaroslavl
+RYG,Europe/Oslo,Moss Airport,OSL,NO,POINT (10.800161 59.37903),124,http://www.en.ryg.no/,ENRY,Rygge,Rygge,Ostfold
+RYN,Europe/Paris,Medis,RYN,FR,POINT (-0.976158661680053 45.631762300000005),32,,LFCY,Royan,Departement de la Charente-Maritime,Poitou-Charentes
+RYL,Africa/Lusaka,Royal Airport,RYL,ZM,POINT (29.296678 -15.726728),1236,http://www.royalzambezilodge.com/,FLRZ,Chirundu,,
+RYO,America/Argentina/Rio_Gallegos,Rio Turbio,RYO,AR,POINT (-72.21667 -51.583332),803,,SAWT,"28 de Noviembre",,Santa Cruz
+RZA,America/Argentina/Rio_Gallegos,Santa Cruz,RZA,AR,POINT (-68.57538456977755 -50.012986049999995),337,,SAWU,Puerto Santa Cruz,,Santa Cruz
+SAK,Atlantic/Reykjavik,Saudarkrokur,SAK,IS,POINT (-19.573516091073024 65.73138320000001),39,,BIKR,Saudarkrokur,,Northwest
+RZN,Europe/Moscow,Ryazan,RZN,RU,POINT (39.583332 54.63333),383,,UUWR,Ryazan',,Rjazan
+RZP,Asia/Manila,CLR Airport,RZP,PH,POINT (119.50667 10.7625),538,,RPSD,Taytay,Province of Palawan,Mimaropa
+RZZ,America/New_York,Halifax County,RZZ,US,POINT (-77.666664 36.466667),177,,KRZZ,Roanoke Rapids,Halifax County,North Carolina
+SBF,Asia/Kabul,Sardeh Band,SBF,AF,POINT (68.53333 33.61667),7795,,OADS,Ghazni,,Ghazni
+SBG,Asia/Jakarta,Maimun Saleh,SBG,ID,POINT (95.333336 5.55),16,,WITN,Lambaro,,Aceh
+SBH,America/St_Barthelemy,St. Barthelemy Airport,SBH,GP,POINT (-62.84405045922078 17.9042856),36,,TFFJ,Gustavia,,
+SBI,Africa/Conakry,Sambailo,SBI,GN,POINT (-13.3 12.483333),229,,GUSB,Koundara,Koundara Prefecture,Boke
+SBJ,America/Sao_Paulo,Sao Mateus,SBJ,BR,POINT (-39.733334 -18.583332),19,,SNMX,Conceicao da Barra,Conceicao Da Barra,Espirito Santo
+SBM,America/Chicago,Memorial,SBM,US,POINT (-87.85222 43.771667),715,,KSBM,Sheboygan Falls,Sheboygan County,Wisconsin
+SBN,America/Indiana/Indianapolis,South Bend Regional,SBN,US,POINT (-86.3134791 41.7007238),761,,KSBN,South Bend,Saint Joseph County,Indiana
+SBO,America/Denver,Salina,SBO,US,POINT (-111.8375 39.029167),5170,http://www.gunnisoncity.org/airport.htm,"44U",Salina,Sevier County,Utah
+SBP,America/Los_Angeles,San Luis County Regional Airport,CSL,US,POINT (-120.64331992943252 35.237491399999996),164,http://www.sloairport.com/,KSBP,San Luis Obispo,San Luis Obispo County,California
+SBS,America/Denver,Steamboat Springs,SBS,US,POINT (-106.86574518347439 40.51690415),6860,,KSBS,Steamboat Springs,Routt County,Colorado
+SBU,Africa/Johannesburg,Springbok,SBU,ZA,POINT (17.93317570001623 -29.69107455),2627,,FASB,Springbok,Namakwa District Municipality,Northern Cape
+SBV,Pacific/Port_Moresby,Sabah,SBV,PG,POINT (155.01666 -5.333333),0,,AYSH,Buka,,Bougainville
+SBW,Asia/Kuching,Sibu Airport,SBW,MY,POINT (111.98448157700102 2.2626938),65,,WBGS,Sibu,,Sarawak
+SBY,America/New_York,Wicomico Regional Airport,SBY,US,POINT (-75.51010495530244 38.33941605),55,,KSBY,Salisbury,Wicomico County,Maryland
+SBZ,Europe/Bucharest,Sibiu Airport,SBZ,RO,POINT (24.08663457694282 45.787050300000004),1440,http://www.sibiuairport.ro/,LRSB,Sura Mica,Comuna Sura Mica,Sibiu
+SCA,America/Bogota,Santa Catalina,SCA,CO,POINT (-75.28333 10.6),127,,,Santa Catalina,,Bolivar
+SCB,America/Chicago,State,SCB,US,POINT (-96.666664 41.65),1217,http://www.aero.nebraska.gov/scribner.pdf,KSCB,West Point,Cuming County,Nebraska
+SCD,America/Tegucigalpa,Sulaco,SCD,HN,POINT (-87.26667 14.916111),1374,,MHUL,Sulaco,,Yoro
+SBD,America/Whitehorse,Norton AFB,SBD,US,POINT (-117.23456910141377 34.095996850000006),1105,http://sbdairport.com/,KSBD,Highland,San Bernardino County,California
+SDB,Africa/Johannesburg,Langebaanweg,SDB,ZA,POINT (18 -33.066666),0,,FALW,Saldanha,West Coast District Municipality,Western Cape
+SDC,America/Guyana,Sandcreek,SDC,GY,POINT (-58.166668 3.333333),567,,SYSC,Lethem,,Upper Takutu-Upper Essequibo
+SDD,Africa/Luanda,Lubango Airport,SDD,AO,POINT (13.578154582927786 -14.925853400000001),5728,,FNUB,Lubango,,Huila
+SDE,America/Argentina/Cordoba,Santiago Del Estero Airport,SDE,AR,POINT (-64.32222 -27.765278),613,,SANE,Santiago del Estero,,Santiago del Estero
+SDG,Asia/Tehran,Sanandaj Airport,SDG,IR,POINT (47.008426212179316 35.244203999999996),4425,,OICS,Sanandaj,,Kordestan
+SDH,America/Tegucigalpa,Santa Rosa Copan,SDH,HN,POINT (-88.77639 14.777222),3510,,MHSR,Santa Rosa de Copan,,Copan
+SDJ,Asia/Tokyo,Sendai Airport,SDJ,JP,POINT (140.92135212368083 38.137423),22,,RJSS,Iwanuma,,Miyagi
+SDF,America/Kentucky/Louisville,Louisville International Airport,SDF,US,POINT (-85.73540756381095 38.1716962),518,http://www.flylouisville.com,KSDF,Audubon Park,Jefferson County,Kentucky
+SDX,America/Phoenix,Sedona,SDX,US,POINT (-111.79062911457635 34.8481983),4773,http://sedonaairport.org/,KSEZ,Sedona,Coconino County,Arizona
+SDN,Europe/Oslo,Sandane Airport,SDN,NO,POINT (6.216667 61.766666),200,https://avinor.no/en/airport/sandane-airport/,ENSD,Sandane,Gloppen,Sogn og Fjordane
+SDP,America/Anchorage,Sand Point Municipal Airport,SDP,US,POINT (-160.51389 55.316666),167,,PASD,Sand Point,Aleutians East Borough,Alaska
+SEB,Africa/Tripoli,Sebha,SEB,LY,POINT (14.466095085170046 26.99269925),1404,,HLLS,Sabha,,Sabha
+SDS,Asia/Tokyo,Sado Shima,SDS,JP,POINT (138.41667 38),118,,RJSD,Ryotsu-minato,,Niigata
+SDT,Asia/Karachi,Saidu Sharif,SDT,PK,POINT (72.35 34.75),3146,,OPSS,Saidu Sharif,,Khyber Pakhtunkhwa
+SEH,Asia/Jayapura,Senggeh,SEH,ID,POINT (140.77864699543625 -3.43980705),803,,WAJS,Sengge,,Papua
+SFD,America/Caracas,Las Flecheras,SFD,VE,POINT (-67.44415083311858 7.88396165),157,,SVSR,San Fernando Apure,,Apure
+SFE,Asia/Manila,San Fernando,SFE,PH,POINT (120.3 16.6),0,,RPUS,San Fernando,Province of La Union,Ilocos
+SFH,America/Santa_Isabel,San Felipe,SFH,MX,POINT (-114.86667 31),164,,MMSF,San Felipe,,Baja California
+SFJ,America/Godthab,Kangerlussuaq Airport,SFJ,GL,POINT (-50.70745791678873 67.01133010000001),127,,BGSF,Qasigiannguit,,Qaasuitsup
+SFK,America/Belem,Soure,SFK,BR,POINT (-48.522920096540616 -0.69864855),39,,SNSW,Soure,Soure,Para
+SFM,America/New_York,Sanford,SFM,US,POINT (-70.76667 43.433334),275,http://www.sanfordmaine.org/index.asp?Type=B_BASIC&SEC={DEE316C2-D149-450A-922E-9B2B686815B4},KSFM,Sanford (historical),York County,Maine
+SFN,America/Argentina/Cordoba,Santa Fe Airport,SFN,AR,POINT (-60.80930044284597 -31.70823055),39,,SAAV,Santo Tome,,Santa Fe
+SFO,America/Los_Angeles,San Francisco International Airport,SFO,US,POINT (-122.38407160781362 37.622451999999996),26,http://www.flysfo.com/,KSFO,Millbrae,San Mateo County,California
+SFP,Australia/Brisbane,Surfers Paradise,SFP,AU,POINT (153 -28),147,,,Cedar Vale,Logan,Queensland
+SFQ,Europe/Istanbul,Sanliurfa,GNY,TR,POINT (38.847883721513895 37.09342925),1453,,LTCH,Sanliurfa,,Sanliurfa
+SFR,America/Los_Angeles,San Fernando,SFR,US,POINT (-118.433334 34.266666),977,,,San Fernando,Los Angeles County,California
+SFS,Asia/Manila,Subic Bay International,SFS,PH,POINT (120.26870192132773 14.7937674),42,,RPLB,Subic Bay Freeport Zone,,
+SFT,Europe/Stockholm,Skelleftea Airport,SFT,SE,POINT (21.0699419 64.6246447),118,,ESNS,Soedra Bergsbyn,Skelleftea Kommun,Vaesterbotten
+SFV,America/Sao_Paulo,Santa Fe Do Sul,SFV,BR,POINT (-50.166668 -19.833332),1443,,,Iturama,Iturama,Minas Gerais
+SFW,America/Panama,Santa Fe,SFW,PA,POINT (-81.166664 8.833333),0,,,Canazas,,Veraguas
+SFX,America/Caracas,San Felix,SFX,VE,POINT (-62.38333 8.216667),885,,SVMU,Upata,Municipio Piar,Bolivar
+SFL,Atlantic/Cape_Verde,Sao Filipe,SFL,CV,POINT (-24.480895853305185 14.8857869),538,,GVSF,Sao Filipe,,Sao Filipe
+SHY,Africa/Dar_es_Salaam,Shinyanga,SHY,TZ,POINT (33.5182435 -3.6146904),3832,,HTSY,Songwa,,Shinyanga
+SII,Africa/Casablanca,Sidi Ifni,SII,MA,POINT (-10.1761455 29.3711009),216,,GMMF,Sidi Ifni,Tiznit,Souss-Massa-Draa
+SHC,Africa/Addis_Ababa,Indaselassie,SHC,ET,POINT (39.13333 12.983333),4511,,"",Maych'ew,,Tigray
+SHD,America/New_York,Shenandoah Valley Airport,SHD,US,POINT (-78.89667 38.26389),1190,,KSHD,Weyers Cave,Augusta County,Virginia
+SHE,Asia/Shanghai,Shenyang Taoxian International Airport,SHE,CN,POINT (123.426926 41.861084),144,,ZYTX,Shenyang,Shenyang Shi,Liaoning
+SIJ,Atlantic/Reykjavik,Siglufjordur,SIJ,IS,POINT (-18.911259104155448 66.1364552),82,,BISI,Siglufjoerdur,,Northeast
+SIP,Europe/Simferopol,Simferopol International Airport,SIP,KX,POINT (33.97007140630278 45.039428650000005),518,http://www.airport.crimea.ua/,"",Rodnykove,Simferopol's'kyy Rayon,Crimea
+SHL,Asia/Kolkata,Shillong Airport,SHL,IN,POINT (91.88333 25.566668),4960,,VEBI,Shillong,East Khasi Hills,Meghalaya
+SIX,Australia/Sydney,Singleton,SIX,AU,POINT (151.19291175889765 -32.6002242),104,,YSGT,Singleton,Singleton,New South Wales
+SHP,Asia/Shanghai,Qinhuangdao,SHP,CN,POINT (119.71656 39.965214),39,,,Shanhaiguan,,Hebei
+SHQ,Australia/Brisbane,Southport,SHQ,AU,POINT (153.42778 -27.951944),22,,YSPT,Main Beach,Gold Coast,Queensland
+SHR,America/Denver,Sheridan,SHR,US,POINT (-106.97722 44.774166),3979,,KSHR,Sheridan,Sheridan County,Wyoming
+SJA,America/Lima,San Juan,SJA,PE,POINT (-75.15 -15.35),26,,SPJN,San Juan de Marcona,Provincia de Nazca,Ica
+SJC,America/Los_Angeles,Norman Y. Mineta San Jose International Airport,SJC,US,POINT (-121.92933857603218 37.3633278),55,http://www.flysanjose.com/,KSJC,Santa Clara,Santa Clara County,California
+SJE,America/Bogota,San Jose Del Gua,SJE,CO,POINT (-72.666664 2.583333),616,,SKSJ,San Jose del Guaviare,,Guaviare
+SJF,America/St_Thomas,St John Island,SJF,VI,POINT (-64.75 18.333332),744,,"",Cruz Bay,,Saint John Island
+SJG,America/Bogota,San Pedro Jagua,SJG,CO,POINT (-75.066666 9.4),515,,,San Pedro,,Sucre
+SJI,Asia/Manila,San Jose,SJI,PH,POINT (121.04458254709422 12.36166935),22,,RPUH,Babug,Province of Mindoro Occidental,Mimaropa
+SJJ,Europe/Sarajevo,Sarajevo International Airport,SJJ,BA,POINT (18.333154918143215 43.8253475),1673,http://www.sarajevo-airport.ba/,LQSA,Sarajevo,Kanton Sarajevo,Federation of Bosnia and Herzegovina
+SJK,America/Sao_Paulo,Sao Jose Dos Campos,SJK,BR,POINT (-46.11667 -23.183332),2303,,SBSJ,Santa Isabel,Santa Isabel,Sao Paulo
+SJL,America/Manaus,Da Cachoeira,SJL,BR,POINT (-66.98557275279653 -0.1483109),239,,SBUA,Sao Gabriel da Cachoeira,Sao Gabriel Da Cachoeira,Amazonas
+SJM,America/Santo_Domingo,San Juan,SJM,DO,POINT (-71.23333 18.833332),1407,,,San Juan de la Maguana,,San Juan
+SJO,America/Costa_Rica,Juan Santamaria International Airport,SJO,CR,POINT (-84.21152052685673 9.993411550000001),2962,,MROC,Alajuela,,Alajuela
+SJD,America/Mazatlan,Los Cabos International Airport,SJD,MX,POINT (-109.71801287922258 23.1451694),295,http://loscabos.aeropuertosgap.com.mx/index.php?lang=eng,MMSD,Las Veredas,Los Cabos,Baja California Sur
+SJR,America/Bogota,San Juan D Ur,SJR,CO,POINT (-76.53333 8.766667),32,,"",San Juan de Uraba,,Antioquia
+SJS,America/La_Paz,San Jose,SJS,BO,POINT (-60.738335 -17.827223),944,,SLJE,San Pedro,,Santa Cruz
+SJT,America/Chicago,San Angelo Regional Airport,SJT,US,POINT (-100.496389 31.355),1906,,KSJT,San Angelo,Tom Green County,Texas
+SKY,America/New_York,Griffing Sandusky,SKY,US,POINT (-83 41.45),564,,KSKY,Port Clinton,Ottawa County,Ohio
+SKZ,Asia/Karachi,Sukkur Airport,SKZ,PK,POINT (68.79402517317112 27.721784200000002),177,,OPSK,Bagarji,,Sindh
+SLB,America/Chicago,Storm Lake Municipal Airport,SLB,US,POINT (-95.2 42.63333),1404,http://www.stormlake.org/index.aspx?NID=16,KSLB,Storm Lake,Buena Vista County,Iowa
+SLC,America/Denver,Salt Lake City International Airport,SLC,US,POINT (-111.97989846185591 40.790066100000004),4209,http://www.slcairport.com ,KSLC,Salt Lake City,Salt Lake County,Utah
+SLD,Europe/Bratislava,Sliac,SLD,SK,POINT (19.135614217671737 48.63783305),994,http://www.airportsliac.sk/home-engle.html,LZSL,Zvolen,Okres Banska Bystrica,Banskobystricky
+SLE,America/Los_Angeles,Mcnary Field,SLE,US,POINT (-123.025 44.995277),121,http://www.flysalem.com/,KSLE,Keizer,Marion County,Oregon
+SLI,Africa/Lusaka,Solwezi,SLI,ZM,POINT (26.369208569229826 -12.17304205),4557,,FLSW,Solwezi,,North-Western
+SLJ,Australia/Perth,Stellar Air Park,SLJ,AU,POINT (-111.91589596570569 33.29893305),1112,,YSOL,Chandler,Maricopa County,Arizona
+SLK,America/New_York,Adirondack Airport,SLK,US,POINT (-74.206665 44.38278),1637,,KSLK,Saranac Lake,Franklin County,New York
+SLM,Europe/Madrid,Matacan Airport,SLM,ES,POINT (-5.65 40.966667),2614,,LESA,Salamanca,Provincia de Salamanca,Castille and Leon
+SLN,America/Chicago,Salina Regional Airport,SLN,US,POINT (-97.654859825 38.792754099999996),1243,,KSLN,Salina,Saline County,Kansas
+SLA,America/Argentina/Salta,Martin Miguel de Guemes International Airport,SLA,AR,POINT (-65.48193100917669 -24.85952535),4009,,SASA,Cerrillos,Departamento de Cerrillos,Salta
+SLG,America/Chicago,Smith Field,SLG,US,POINT (-94.490772 36.1903579),977,http://www.siloamsprings.com/departments/airport/,KSLG,Siloam Springs,Benton County,Arkansas
+SLS,Europe/Sofia,Silistra,SLS,BG,POINT (27.180555 44.05639),396,,LBSS,Silistra,Obshtina Silistra,Silistra
+SLT,America/Denver,Salida,SLT,US,POINT (-106 38.533333),7089,http://cityofsalida.com/departments/harriet-alexander-field-airport/,KANK,Salida,Chaffee County,Colorado
+SLR,America/Chicago,Sulphur Springs,SLR,US,POINT (-95.6204855 33.1598443),416,http://www.slr.aero/,KSLR,Sulphur Springs,Hopkins County,Texas
+SMU,America/Anchorage,Sheep Mountain,SMU,US,POINT (-147.66667 61.8),1945,,PASP,Sutton-Alpine,Matanuska-Susitna Borough,Alaska
+SMV,Europe/Zurich,Samedan,SMV,CH,POINT (9.8841105 46.5340996),5577,,LSZS,Samedan,Maloja District,Grisons
+SMW,Africa/Casablanca,Smara,SMW,MA,POINT (-11.684303688564786 26.732671699999997),574,,GMMA,Smara,,
+SMX,America/Los_Angeles,Santa Maria Public Airport,SMX,US,POINT (-120.45551617973354 34.8994719),177,,KSMX,Orcutt,Santa Barbara County,California
+SMY,Africa/Dakar,Simenti,SMY,SN,POINT (-13.166667 13.166667),196,,GOTS,Youkounkoun,Koundara Prefecture,Boke
+SNA,America/Los_Angeles,John Wayne Airport,SNA,US,POINT (-117.86801480770461 33.67420559999999),45,http://www.ocair.com/,KSNA,Irvine,Orange County,California
+SNC,America/Guayaquil,General Ulpiano Paez Airport,SNC,EC,POINT (-80.98333 -2.2),29,,SESA,Salinas,Canton Salinas,Santa Elena
+SND,Asia/Vientiane,Seno,SND,LA,POINT (105.01667 16.666668),610,,,Wan Yai,,Mukdahan
+SNE,Atlantic/Cape_Verde,Preguica,SNE,CV,POINT (-24.286408063861867 16.58982335),597,,GVSN,Vila da Ribeira Brava,,Ribeira Brava
+SNF,America/Caracas,San Felipe,SNF,VE,POINT (-68.75389 10.280278),816,,SVSP,Boraure,Municipio La Trinidad,Yaracuy
+SNG,America/La_Paz,San Ignacio De Velasco,SNG,BO,POINT (-60.97639 -16.383057),1397,,SLSI,San Ignacio de Velasco,,Santa Cruz
+SNI,Africa/Monrovia,R.E. Murray,SNI,LR,POINT (-9.063611 5.033056),29,,GLGE,Greenville,,Sinoe
+SNJ,America/Havana,San Julian,SNJ,CU,POINT (-84.15 22.083332),65,,MUSJ,Guane,,Pinar del Rio
+SNK,America/Chicago,Winston Field,SNK,US,POINT (-100.9 32.716667),2355,,KSNK,Snyder,Scurry County,Texas
+SNN,Europe/Dublin,Shannon Airport,SNN,IE,POINT (-8.920721565103284 52.69960575),19,http://www.shannonairport.com/,EINN,Shannon,An Clar,Munster
+SOQ,Asia/Jayapura,Sorong Airport,SOQ,ID,POINT (131.28701517493656 -0.8931468),42,,WASS,Sorong,,West Papua
+SOR,Asia/Damascus,Al Thaurah,SOR,SY,POINT (40.166668 34.4),1246,,"",Subaykhan,,Deir ez-Zor
+SOT,Europe/Helsinki,Sodankyla,SOT,FI,POINT (26.61357195 67.3952951),561,,EFSO,Sodankylae,Pohjois-Lappi,Lapland
+SOU,Europe/London,Southampton Airport,SOU,GB,POINT (-1.361318 50.950726),55,http://www.southamptonairport.com/,EGHI,Eastleigh,Hampshire,England
+SOV,America/Anchorage,Seldovia,SOV,US,POINT (-151.7047612 59.4424492),22,http://www.seldovia.com/transportation-to-and-around-seldovia/by-air/,PASO,Homer,Kenai Peninsula Borough,Alaska
+SOW,America/Phoenix,Show Low Airport,SOW,US,POINT (-110.0104171080209 34.2650057),6407,,KSOW,Show Low,Navajo County,Arizona
+SOX,America/Bogota,Alberto Lleras Camargo,SOX,CO,POINT (-72.933334 5.716667),8182,,SKSO,Sogamoso,,Boyaca
+SOZ,Europe/Paris,Solenzara,SOZ,FR,POINT (9.401126164216805 41.92388965),32,,LFKS,Sari-Solenzara,Departement de la Corse-du-Sud,Corsica
+SPA,America/New_York,Spartanburg Downtown Memorial,SPA,US,POINT (-81.916664 34.95),780,http://www.cityofspartanburg.org/airport,KSPA,Spartanburg,Spartanburg County,South Carolina
+SPC,Atlantic/Canary,La Palma Airport,SPC,ES,POINT (-17.755484706917592 28.626975700000003),32,,GCLA,Mazo,Provincia de Santa Cruz de Tenerife,Canary Islands
+SPE,Asia/Kuching,Sepulot,SPE,MY,POINT (116.45695 4.712222),859,,WBKO,Keningau,,Sabah
+SPF,America/Denver,Black Hills,SPF,US,POINT (-103.86667 44.5),3608,http://www.lawrence.sd.us/airport.htm,KSPF,Spearfish,Lawrence County,South Dakota
+SQH,Asia/Ho_Chi_Minh,Na-San,SQH,VN,POINT (104.0348576 21.215353),2040,,VVNS,Thi Tran Hat Lot,,Son La
+SPI,America/Chicago,Capital Airport,SPI,US,POINT (-89.67889 39.844166),564,,KSPI,Springfield,Sangamon County,Illinois
+SQR,Asia/Makassar,Inco Soroako Waws,SQR,ID,POINT (122.666664 -3.166667),0,,WAWS,Kendari,,Sulawesi Tenggara
+SQZ,Europe/London,Scampton RAF Station,SQZ,GB,POINT (-0.583333 53.3),85,,EGXP,Burton,Lincolnshire,England
+SQS,America/Belize,Matthew Spain,SQS,BZ,POINT (-89.01239565083979 17.1855872),167,,MZCF,San Ignacio,,Cayo
+SQX,America/Sao_Paulo,Sao Miguel do Oeste,SQX,BR,POINT (-53.502777 -26.780556),2112,,SSOE,Bernardo de Irigoyen,,Misiones
+SRO,America/Bogota,Santana Ramos,SRO,CO,POINT (-126.06694 9.916944),6017,,"",Cabo San Lucas,,Baja California Sur
+SQU,America/Lima,Saposoa,SQU,PE,POINT (-76.7684021 -6.9600301),1040,,SPOA,Saposoa,Provincia de Huallaga,San Martin
+SRA,America/Sao_Paulo,Santa Rosa,SRA,BR,POINT (-54.483334 -27.866667),862,,SSZR,Santa Rosa,Santa Rosa,Rio Grande do Sul
+SRB,America/La_Paz,Santa Rosa,SRB,BO,POINT (-67.333336 -10.6),587,,SLSR,Placido de Castro,Placido De Castro,Acre
+SRD,America/La_Paz,San Ramon,SRD,BO,POINT (-64.71667 -13.283333),446,,SLRA,San Ramon,,El Beni
+SRE,America/La_Paz,Juana Azurduy de Padilla International Airport,SRE,BO,POINT (-65.30167 -19.007778),9619,,SLAL,Sucre,,Chuquisaca
+SSQ,America/Montreal,La Sarre,SSQ,CA,POINT (-79.17988932378344 48.91712455),1010,http://www.ville.lasarre.qc.ca/fr/ville/services-municipaux/aeroport-municipal/index.cfm,CSR8,La Sarre,Abitibi-Temiscamingue,Quebec
+SST,America/Argentina/Buenos_Aires,Santa Teresita,SST,AR,POINT (-60.783333 -33.416668),157,,SAZL,Arroyo Seco,,Santa Fe
+SSU,America/New_York,Greenbrier,SSU,US,POINT (-80.3 37.8),1860,,,White Sulphur Springs,Greenbrier County,West Virginia
+SSV,Asia/Manila,Siasi,SSV,PH,POINT (120.816666 5.5),0,,"",Manubul,Province of Sulu,Autonomous Region in Muslim Mindanao
+SSX,Europe/Istanbul,Samsun Samair Airport,SSX,TR,POINT (36.336289 41.276765),200,,FASP,Samsun,,Samsun
+SSY,Africa/Luanda,M'banza Congo,SSY,AO,POINT (14.247235115042066 -6.2693545),1876,,FNBC,Mbanza Congo,,Zaire
+SSZ,America/Sao_Paulo,Santos,SSZ,BR,POINT (-46.36667 -23.933332),29,https://www.fab.mil.br/organizacoes/mostra/50/BASE%20AÉREA%20DE%20SANTOS,SBST,Sao Vicente,Sao Vicente,Sao Paulo
+STA,Europe/Copenhagen,Stauning Vestjyllands Airport,STA,DK,POINT (8.355 55.990276),39,,EKVJ,Ringkobing,Ringkobing-Skjern Kommune,Central Jutland
+STB,America/Caracas,L Delicias,STB,VE,POINT (-71.95 9.033333),72,,SVSZ,San Carlos del Zulia,Municipio Colon,Zulia
+STC,America/Chicago,Saint Cloud Regional,STC,US,POINT (-94.166664 45.55),1089,,KSTC,Saint Cloud,Stearns County,Minnesota
+STD,America/Caracas,Mayo Guerrero,STD,VE,POINT (-72.066666 7.583333),1584,,SVSO,San Rafael del Pinal,Municipio Fernandez Feo,Tachira
+STE,America/Chicago,Stevens Point,STE,US,POINT (-89.5315509154407 44.5461205),1102,http://www.stevenspoint.com/airport,KSTE,Stevens Point,Portage County,Wisconsin
+STG,America/Anchorage,St. George Island Airport,STG,US,POINT (-169.5525 56.6),213,,PAPB,Dutch Harbor,Aleutians West Census Area,Alaska
+STI,America/Santo_Domingo,Cibao International Airport,STI,DO,POINT (-70.60372192260436 19.405476),554,,MDST,Licey al Medio,,Santiago
+STJ,America/Chicago,Rosecrans Memorial,STJ,US,POINT (-94.925 39.960556),1154,http://www.stjoemo.info/index.aspx?NID=303,KSTJ,Savannah,Andrew County,Missouri
+STK,America/Denver,Crosson Field,STK,US,POINT (-103.264933 40.6149848),3976,https://www.codot.gov/programs/aeronautics/colorado-airport-system/general-aviation-airports/ga-airports-r-y/STK,KSTK,Sterling,Logan County,Colorado
+SUK,Asia/Seoul,Sakkyryr Airport,SUK,RU,POINT (129.13695 37.494446),0,,UEBS,Tonghae,,Gangwon-do
+SUT,Africa/Dar_es_Salaam,Sumbawanga,SUT,TZ,POINT (31.61107548285324 -7.9484409),5928,,HTSU,Sumbawanga,,Rukwa
+SUM,America/New_York,Sumter Municipal Airport,SSC,US,POINT (-80.11667 33.9),180,http://www.sumtersc.gov/airport.aspx,KSMS,East Sumter,Sumter County,South Carolina
+SUU,America/Los_Angeles,Travis AFB,SUU,US,POINT (-121.94536296461476 38.26321985),59,http://www.travis.af.mil/,KSUU,Vacaville,Solano County,California
+SUO,America/Los_Angeles,Sun River,SUO,US,POINT (-121.5 43.916668),4780,http://www.sunriver-resort.com/resort/sunriver-airport,S21,Sunriver,Deschutes County,Oregon
+SUP,Asia/Jakarta,Trunojoyo,SUP,ID,POINT (113.933334 -7.066667),0,,WART,Sumurasin,,East Java
+SUQ,America/Guayaquil,Sucua,SUQ,EC,POINT (-78.166664 -2.466667),2667,,SESC,Sucua,,Morona-Santiago
+SUS,America/Chicago,Spirit of St. Louis Airport,STL,US,POINT (-90.36667 38.75),511,http://spiritairport.com/spiritairport/index.jsp,KSUS,Hazelwood,Saint Louis County,Missouri
+SVK,America/Belize,Silver Creek,SVK,BZ,POINT (-88.37079390456988 16.7285586),164,,MZKT,Placencia,,Stann Creek
+SWC,Australia/Melbourne,Stawell,SWC,AU,POINT (142.74132531474385 -37.0730434),675,,YSWL,Stawell,Northern Grampians,Victoria
+SWF,America/New_York,Stewart International Airport,SWF,US,POINT (-74.12120288016584 41.5020532),449,,KSWF,Orange Lake,Orange County,New York
+SVD,America/St_Vincent,Argyle International Airport,SVD,VC,POINT (-61.21038 13.14604),55,http://www.svgiadc.com,TVSV,Kingstown,,Saint George
+SVE,America/Los_Angeles,Susanville,SVE,US,POINT (-120.65 40.416668),4232,,KSVE,Susanville,Lassen County,California
+SVF,Africa/Porto-Novo,Save,SVF,BJ,POINT (2.483333 8.033333),659,,DBBS,Save,,Collines
+SWL,America/Nassau,Spanish Wells,SWL,BS,POINT (-76.75 25.54),45,,RPSV,Spanish Wells,,Spanish Wells
+SWM,America/Cuiaba,Suia-Missu,SWM,BR,POINT (-53.25 -11.216667),895,,"",Sinop,Sinop,Mato Grosso
+SWN,Asia/Karachi,Sahiwal,SWN,PK,POINT (73.13333 30.75),508,,OPSW,Sahiwal,Sahiwal District,Punjab
+SWO,America/Chicago,Searcy Field,SWO,US,POINT (-97.085556 36.15889),954,http://stillwater.org/government/city_facilities/stillwater_regional_airport/,KSWO,Stillwater,Payne County,Oklahoma
+SWS,Europe/London,Swansea Airport,SWS,GB,POINT (-4.069261043742652 51.60422715),288,https://www.swansea-airport.wales/,EGFH,Fairwood Common,City and County of Swansea,Wales
+SWQ,Asia/Makassar,Sultan Muhammad Kaharuddin III Airport,SWQ,ID,POINT (117.416664 -8.5),59,,WADS,Karangbugis,,West Nusa Tenggara
+SWV,Asia/Karachi,Severo-Evensk Airport,SWV,RU,POINT (159.22741991819004 61.922587899999996),0,,UHMW,Evensk,,Magadan
+SWX,Africa/Gaborone,Shakawe,SWX,BW,POINT (21.8361789268602 -18.373261149999998),3277,http://www.dca.gov.bw/index.php?sectid=248,FBSW,Shakawe,,North West
+SWT,Asia/Novosibirsk,Strezhevoy Airport,SWT,RU,POINT (77 60.5),131,,UNSS,Izluchinsk,,Khanty-Mansiyskiy Avtonomnyy Okrug
+SWU,Asia/Seoul,Suwon,SWU,KR,POINT (127.01667 37.283333),144,,RKSW,Suwon-si,,Gyeonggi-do
+SWY,Asia/Kuala_Lumpur,Sitiawan,SWY,MY,POINT (100.69948385000001 4.22234085),42,,WMBA,Lumut,,Perak
+SWW,America/Chicago,Sweetwater,SWW,US,POINT (-100.4 32.466667),2089,http://www.flyavenger.com/,KSWW,Sweetwater,Nolan County,Texas
+SXI,Asia/Tehran,Sirri Island,SXI,IR,POINT (54.540427980277315 25.908850700000002),42,,OIBS,Abu Musa,,Hormozgan
+SXM,America/Lower_Princes,Princess Juliana International Airport,SXM,SX,POINT (-63.11185168371077 18.04087385),16,,TNCM,Marigot,,
+SXA,Pacific/Port_Moresby,Sialum,SXA,PG,POINT (147.61667 -6.033333),0,,AYQS,Finschhafen,,Morobe
+SYV,America/New_York,Sylvester,SYV,US,POINT (-83.833336 31.516666),403,,KSYV,Sylvester,Worth County,Georgia
+SYW,Asia/Karachi,Sehwen Sharif,SYW,PK,POINT (67.85 26.416668),121,,OPSN,Sehwan,,Sindh
+SYY,Europe/London,Stornoway Airport,SYY,GB,POINT (-6.32651344733495 58.2143799),26,http://www.hial.co.uk/stornoway-airport.html,EGPO,Stornoway,Eilean Siar,Scotland
+SYZ,Asia/Tehran,Shiraz International Airport,SYZ,IR,POINT (52.580523125907916 29.5424396),4927,http://shirazairport.ir/,OISS,Shiraz,,Fars
+SZA,Africa/Luanda,Soyo Airport,SZA,AO,POINT (12.416667 -6.033333),15,,FNSO,Soio,,Zaire
+SZB,Asia/Kuala_Lumpur,Sultan Abdul Aziz Shah Airport,KUL,MY,POINT (101.55028764274799 3.1308814500000004),90,,WMSA,Kampung Baru Subang,,Selangor
+SZE,Africa/Addis_Ababa,Semera Airport,SZE,ET,POINT (41.083332 11.5),1390,,HASM,Dubti,,Afar
+SZH,Asia/Makassar,Senipah,SZH,ID,POINT (117.14661846836306 -0.9778551),0,,,Samboja,,East Kalimantan
+SYO,Asia/Tokyo,Shonai Airport,SYO,JP,POINT (139.78777585339822 38.815828550000006),95,,RJSY,Tsuruoka,,Yamagata
+SZI,Asia/Almaty,Zaisan,SZI,KZ,POINT (84.86667 47.7),1877,,UASZ,Zaysan,,East Kazakhstan
+SZJ,America/Havana,Siguanea,SZJ,CU,POINT (-82.95 21.633333),39,,MUSN,Nueva Gerona,,Isla de la Juventud
+SZL,America/Chicago,Whiteman AFB,SZL,US,POINT (-93.73333 38.766666),870,http://www.whiteman.af.mil/,KSZL,Warrensburg,Johnson County,Missouri
+SZM,Africa/Windhoek,Sesriem,SZM,NA,POINT (15.833333 -24.583332),2454,,FYSS,Maltahohe,,Hardap
+SYP,America/Panama,Santiago,SYP,PA,POINT (-80.98333 8.1),341,,MPSA,Santiago de Veraguas,,Veraguas
+SZP,America/Los_Angeles,Oxnard,SZP,US,POINT (-119.066666 34.35),243,,KSZP,Santa Paula,Ventura County,California
+SZQ,America/Argentina/Buenos_Aires,Saenz Pena,SZQ,AR,POINT (-58.533333 -34.61667),0,,,Caseros,,Buenos Aires
+SZR,Europe/Sofia,Stara Zagora,SZR,BG,POINT (25.616667 42.433334),558,,LBSZ,Stara Zagora,Obshtina Stara Zagora,Stara Zagora
+SZS,Pacific/Auckland,Stewart Island,SZS,NZ,POINT (167.86667 -47),62,,NZRC,Bluff,Invercargill City,Southland
+SZT,America/Mexico_City,San Cristobal Airport,SZT,MX,POINT (-92.54417 16.690556),0,,,Mitziton,San Cristobal De Casas,Chiapas
+SZU,Africa/Bamako,Segou,SZU,ML,POINT (-6.283333 13.433333),0,,,Segou,,Segou
+SZV,Asia/Shanghai,Suzhou,SZV,CN,POINT (120.63333 31.3),0,,ZSSZ,Shuangta,,Jiangsu Sheng
+SZW,Europe/Berlin,Parchim Airport,SZW,DE,POINT (11.783333 53.433334),166,,EDOP,Domsuhl,,Mecklenburg-Vorpommern
+SYQ,America/Costa_Rica,Tobias Bolaños International,SYQ,CR,POINT (-84.13972891419559 9.95749965),3241,,MRPV,San Rafael,,San Jose
+SZY,Europe/Warsaw,Olsztyn-Mazury Airport,SZY,PL,POINT (20.938334 52.43611),463,http://mazuryairport.pl/,EPSY,Michalow-Reginow,Powiat legionowski,Masovian Voivodeship
+SYR,America/New_York,Hancock International Airport,SYR,US,POINT (-76.1114685894623 43.1138409),413,http://www.syrairport.org/,KSYR,North Syracuse,Onondaga County,New York
+TAA,Pacific/Guadalcanal,Tarapaina,TAA,SB,POINT (161.35 -9.4),80,,"",Taro'a,,Choiseul
+SYS,Asia/Seoul,Yeosu,SYS,KR,POINT (127.61618910716163 34.84243345),32,,UERS,Yeosu,,Jeollanam-do
+TAC,Asia/Manila,D. Z. Romualdez Airport,TAC,PH,POINT (125.02592 11.22684),10,,RPVA,Panalanoy,Province of Leyte,Eastern Visayas
+TAD,America/Denver,Las Animas,TAD,US,POINT (-104.325 37.305557),5762,,KTAD,Trinidad,Las Animas County,Colorado
+SYT,Europe/Paris,Charolais Bourgogne S.,SYT,FR,POINT (4.033333 46.4),748,,LFLN,Saint-Yan,Departement de Saone-et-Loire,Bourgogne
+TAF,Africa/Algiers,Tafaraoui,ORN,DZ,POINT (-0.610556 35.627777),367,,DAOL,Es Senia,,Oran
+TAG,Asia/Manila,Bohol-Panglao,TAG,PH,POINT (123.853615 9.657587),38,,RPVT,Tagbilaran City,Province of Bohol,Central Visayas
+TAI,Asia/Aden,Al Janad,TAI,YE,POINT (44.134346 13.685553),4838,,OYTZ,Dhi as Sufal,Dhi as Sufal,Ibb
+TAN,Australia/Brisbane,Tangalooma,TAN,AU,POINT (153.25 -27.083332),0,,YTGA,Woorim,Moreton Bay,Queensland
+TAP,America/Mexico_City,Tapachula International Airport,TAP,MX,POINT (-92.25306 14.909722),97,http://www.asur.com.mx/asur/Ingles/aeropuertos/tapachula/tapachula.asp,MMTP,Tapachula,,Chiapas
+TAR,Europe/Rome,M. A. Grottag,TAR,IT,POINT (17.401943 40.517776),215,,LIBG,Monteiasi,Provincia di Taranto,Apulia
+TAT,Europe/Bratislava,Poprad/Tatry Airport,TAT,SK,POINT (20.24725741197063 49.07121425),2356,,LZTT,Svit,Okres Poprad,Presovsky
+TAU,America/Bogota,Tauramena,TAU,CO,POINT (-72.73333 5),1462,,SKTA,Tauramena,,Casanare
+TAV,Pacific/Pago_Pago,Tau Island Airport,TAV,AS,POINT (-169.45 -14.25),185,,"",Ta`u,,Manu'a
+TAW,America/Montevideo,Tacuarembo,TAW,UY,POINT (-55.9284465 -31.7502801),440,,SUTB,Tacuarembo,,Tacuarembo
+TAX,Asia/Jayapura,Taliabu,TAX,ID,POINT (124.8 -1.766667),9,,WAPT,Bobong,,Maluku Utara
+TAZ,Asia/Ashgabat,Dashoguz,TAZ,TM,POINT (59.966667 41.833332),272,,UTAT,Dasoguz,,Dasoguz
+TBB,Asia/Ho_Chi_Minh,Tuy Hoa Airport,TBB,VN,POINT (109.33679655153662 13.04798705),20,,VVTH,Tuy Hoa,,Phu Yen
+TBC,America/Shiprock,Tuba City,TBC,US,POINT (-111.23333 36.13333),4513,,"",Tuba City,Coconino County,Arizona
+TBE,Pacific/Port_Moresby,Timbunke,TBE,PG,POINT (143.51666 -4.2),24,,AYTV,Angoram,,East Sepik
+TBH,Asia/Manila,Romblon,TBH,PH,POINT (122.0788289984535 12.30915775),10,,RPVU,Tugdan,Province of Romblon,Mimaropa
+TBI,America/Nassau,New Bright,TBI,BS,POINT (-75.45361 24.315),5,,MYCB,Arthur's Town,,Cat Island
+TBJ,Africa/Tunis,Tabarka,TBJ,TN,POINT (8.880022080372964 36.9770903),230,,DTKA,Tabarka,,Jundubah
+TBM,Asia/Makassar,Tumbang Samba,TBM,ID,POINT (112.583336 -3.25),160,,WAOW,Halimaung Jaya (F-3),Kabupaten Seruyan,Central Kalimantan
+TBN,America/Chicago,Forney AAF,TBN,US,POINT (-92.14056 37.74139),1159,,KTBN,Fort Leonard Wood,Pulaski County,Missouri
+TBO,Africa/Dar_es_Salaam,Tabora Airport,TBO,TZ,POINT (32.834239572410276 -5.0775058),3868,,HTTB,Tabora,,Tabora
+TBP,America/Lima,Capitan FAP Pedro Canga Rodriguez Airport,TBP,PE,POINT (-80.416664 -3.566667),115,,SPME,Tumbes,Provincia de Tumbes,Tumbes
+TAQ,Australia/Adelaide,Tarcoola,TAQ,AU,POINT (134.5839996 -30.7033005),0,,YTAR,Coober Pedy,Coober Pedy,South Australia
+TAS,Asia/Tashkent,Yuzhny Airport,TAS,UZ,POINT (69.28560672931962 41.25992855),1417,,UTTT,Tashkent,,Toshkent Shahri
+TBT,America/Manaus,Tabatinga International Airport,TBT,BR,POINT (-69.933334 -4.233333),279,,SBTT,Tabatinga,Tabatinga,Amazonas
+TAY,Europe/Tallinn,Tartu Airport,TAY,EE,POINT (26.69296862697855 58.30867755),219,,EETU,Ulenurme,UElenurme vald,Tartu
+TBV,Pacific/Majuro,Tabal,TBV,MH,POINT (169.94722 10.038889),32,,"",Ailuk,,Ailuk Atoll
+TBW,Europe/Moscow,Tambov Donskoye Airport,TBW,RU,POINT (41.433334 52.716667),413,,UUOT,Tambov,,Tambov
+TBX,Asia/Jakarta,Tambelan Airport,TBX,ID,POINT (96.849444 0.984194),0,,,Pulo Batal,,Aceh
+TBY,Africa/Gaborone,Tsabong,TBY,BW,POINT (22.466667 -26.066668),3179,,FBTS,Tshabong,,Kgalagadi
+TBD,America/Bogota,Timbiqui,TBD,CO,POINT (-77.667651 2.7771306),0,,,Timbiqui,,Cauca
+TCB,America/Nassau,Treasure Cay Airport,TCB,BS,POINT (-77.3944193821033 26.74774145),8,,MYAT,Cooper's Town,,North Abaco
+TCC,America/Denver,Tucumcari,TCC,US,POINT (-103.73333 35.166668),4065,http://www.cityoftucumcari.com/airport.html,KTCC,Tucumcari,Quay County,New Mexico
+TCE,Europe/Bucharest,Tulcea,TCE,RO,POINT (28.816668 45.183334),200,,LRTC,Tulcea,Municipiul Tulcea,Tulcea
+TCF,America/Tegucigalpa,Tocoa,TCF,HN,POINT (-85.99472 15.658889),0,,,Tocoa,,Colon
+TCD,America/Bogota,Tarapaca,TCD,CO,POINT (-69.7484515 -2.8953312),253,,SKRA,Tarapaca,,Amazonas
+TCH,Africa/Libreville,Tchibanga,TCH,GA,POINT (11 -2.816667),269,,FOOT,Tchibanga,Mougoutsi Department,Nyanga
+TCI,Asia/Vladivostok,Terney Airport,TCI,RU,POINT (136.5912 45.0825),0,,,Terney,,Primorskiy
+TCK,Pacific/Port_Moresby,Tinboli Airport,TCK,PG,POINT (143.38333 -4.083333),59,,AYYL,Ambunti,,East Sepik
+TCL,America/Chicago,Van De Graaf,TCL,US,POINT (-87.61083 33.22111),170,http://www.tuscaloosa.com/Government/Departments/Transportation/airport,KTCL,Northport,Tuscaloosa County,Alabama
+TCM,America/Los_Angeles,McChord AFB,TIW,US,POINT (-122.56461 47.176666),322,,KTCM,Steilacoom,Pierce County,Washington
+TTC,America/Santiago,Taltal,TTC,CL,POINT (-70.42222 -25.517778),2580,,SCTT,Taltal,,Antofagasta
+TCO,America/Bogota,La Florida Airport,TCO,CO,POINT (-78.76667 1.816667),8,,SKCO,Tumaco,,Narino
+TCQ,America/Lima,Tacna Airport,TCQ,PE,POINT (-70.27672109059051 -18.05252005),1538,,SPTN,Tacna,Provincia de Tacna,Tacna
+TCR,Asia/Kolkata,Tuticorin Airport,TCR,IN,POINT (78.02526513619867 8.7235267),129,,VOTK,Korampallam,Thoothukkudi,Tamil Nadu
+TCS,America/Denver,Truth or Consequences,TCS,US,POINT (-107.25 33.13333),4853,http://www.torcnm.org/departments/airport.html,KTCS,Truth or Consequences,Sierra County,New Mexico
+TCU,Africa/Johannesburg,Thaba Nchu,TCU,ZA,POINT (26.866667 -29.283333),4941,,FATN,Thaba Nchu,Mangaung Metropolitan Municipality,Orange Free State
+TCW,Australia/Sydney,Tocumwal,TCW,AU,POINT (145.60267118039968 -35.810401999999996),372,,YTOC,Finley,Berrigan,New South Wales
+TCX,Asia/Tehran,Tabas,TCX,IR,POINT (56.89065199485168 33.67412945),2312,,OIMT,Tabas,,Yazd
+TCZ,Asia/Shanghai,Tengchong Tuofeng Airport,TCZ,CN,POINT (98.48459529816768 24.93792805),6250,,ZUTC,Tengyue,Baoshan Shi,Yunnan
+TDA,America/Bogota,Trinidad,TDA,CO,POINT (-71.72444 5.423611),649,,SKTD,San Luis de Palenque,,Casanare
+TDD,America/La_Paz,Teniente Jorge Henrich Arauz Airport,TDD,BO,POINT (-64.92052050146933 -14.81894455),509,,SLTR,Trinidad,,El Beni
+TDG,Asia/Manila,Tandag,TDG,PH,POINT (126.00833 9.5),16,,RPMW,Socorro,Province of Surigao del Norte,Caraga
+TCY,Africa/Windhoek,Terrace Bay,TCY,NA,POINT (13.025048834858996 -19.971410249999998),32,,FYTE,Khorixas,,Kunene
+TDL,America/Argentina/Buenos_Aires,Tandil,TDL,AR,POINT (-59.083332 -37.333332),574,,SAZT,Tandil,Partido de Tandil,Buenos Aires
+TDO,America/Los_Angeles,Winlock,TDO,US,POINT (-122.85 46.433334),374,,KTDO,Winlock,Lewis County,Washington
+TDP,America/Lima,Trompeteros,TDP,PE,POINT (-61.309166 15.543056),427,,SPDR,Marigot,,Saint Andrew
+TDK,Asia/Almaty,Taldy-Kurgan,TDK,KZ,POINT (78.4417333 45.1176715),1925,,UAAT,Taldykorgan,,Almaty Oblysy
+TEE,Africa/Algiers,Cheikh Larbi Tebessi Airport,TEE,DZ,POINT (8.122162859575312 35.43140775),2661,,DABS,Tebessa,,Tebessa
+TDW,America/Chicago,Tradewind,AMA,US,POINT (-101.833336 35.216667),3649,http://tradewindairport.com/index.html,KTDW,Amarillo,Potter County,Texas
+TDZ,America/New_York,Toledo,TOL,US,POINT (-83.55 41.65),623,,KTDZ,Toledo,Lucas County,Ohio
+TEG,Africa/Ouagadougou,Tenkodogo,TEG,BF,POINT (-0.316667 11.9),1017,,DFET,Tenkodogo,Province du Boulgou,Centre-Est
+TEL,Asia/Kuching,Telupid,TEL,MY,POINT (117.11667 5.583333),343,,WBKE,Ranau,,Sabah
+TEO,Pacific/Port_Moresby,Terapo,TEO,PG,POINT (146.06667 -8.083333),15,,AYTY,Kerema,,Gulf
+TEQ,Europe/Istanbul,Corlu,TEQ,TR,POINT (27.5 40.966667),574,,LTBU,Tekirdag,,Tekirdag
+TET,Africa/Maputo,Matundo Airport,TET,MZ,POINT (33.63889 -16.103333),525,,FQTT,Tete,,Tete
+TEU,Pacific/Auckland,Manapouri,TEU,NZ,POINT (167.7264 -45.419445),687,,NZMO,Te Anau,Southland District,Southland
+TEV,Europe/Madrid,Teruel Airport,TEV,ES,POINT (-1.2175 40.411944),3380,http://www.aeropuertodeteruel.com/en/,LETL,Cella,Provincia de Teruel,Aragon
+TEY,Atlantic/Reykjavik,Thingeyri,TEY,IS,POINT (-23.45 65.88333),65,,BITE,Isafjoerdur,,Westfjords
+TEZ,Asia/Kolkata,Tezpur Airport,TEZ,IN,POINT (92.79611 26.710833),240,,VETZ,Tezpur,Sontipur,Assam
+TFL,America/Sao_Paulo,Teofilo Otoni,TFL,BR,POINT (-41.5 -17.85),1572,,SNTO,Teofilo Otoni,Teofilo Otoni,Minas Gerais
+TFN,Atlantic/Canary,Tenerife North Airport,TCI,ES,POINT (-16.34122474502233 28.48275745),2076,,GCXO,La Laguna,Provincia de Santa Cruz de Tenerife,Canary Islands
+TFR,Africa/Cairo,Ramadan,TFR,EG,POINT (31.400833 30.1175),0,,,Al Khankah,,Muhafazat al Qalyubiyah
+TFS,Atlantic/Canary,Tenerife South Airport,TCI,ES,POINT (-16.57271529967347 28.046054650000002),209,,GCTS,San Isidro,Provincia de Santa Cruz de Tenerife,Canary Islands
+TFT,Asia/Karachi,Taftan,TFT,PK,POINT (61.36667 28.583332),2742,,OPTT,Khash,,Sistan and Baluchestan
+TFY,Asia/Jakarta,Muhammad Taufiq Kiemas Airport,TFY,ID,POINT (103.936501 -5.211562),118,,WILP,Krui,,Lampung
+TGA,Asia/Singapore,Tengah Air Base,TGA,SG,POINT (103.699468 1.390031),50,,WSAT,Johor Bahru,,Johor
+TGB,Asia/Manila,Tagbita,TGB,PH,POINT (126.78333 1.416667),0,,,Susupu,,Maluku Utara
+TGC,Asia/Kuching,Tanjung Manis Airport,TGC,MY,POINT (111.20472401142936 2.1800914),15,,WBGT,Sarikei,,Sarawak
+TGD,Europe/Podgorica,Podgorica Airport,TGD,ME,POINT (19.25007158353284 42.3605703),141,http://www.montenegroairports.com/?menu=2,LYPG,Mojanovici,,
+TGE,America/Chicago,Sharpe Field,TGE,US,POINT (-85.683334 32.466667),253,,AL73,Tuskegee,Macon County,Alabama
+TGG,Asia/Kuala_Lumpur,Sultan Mahmud Airport,TGG,MY,POINT (103.0984306408296 5.37710725),21,,WMKN,Kuala Terengganu,,Terengganu
+TFF,America/Manaus,Tefe Airport,TFF,BR,POINT (-64.72460759140549 -3.3824045),188,,SBTF,Tefe,Tefe,Amazonas
+TGK,Europe/Moscow,Taganrog,TGK,RU,POINT (38.864017 47.243378),117,http://www.beriev.com/rus/airport.html,URRT,Taganrog,,Rostov
+TGL,Pacific/Port_Moresby,Tagula,TGL,PG,POINT (153.5 -11.5),59,,AYTG,Samarai,,Milne Bay
+TGM,Europe/Bucharest,Transilvania,TGM,RO,POINT (24.533333 46.533333),963,,LRTM,Sancraiu de Mures,Comuna Sancraiu de Mures,Mures
+TGN,Australia/Melbourne,La Trobe Regional,TGN,AU,POINT (146.56667 -38.2),180,,YLTV,Traralgon,Latrobe,Victoria
+TFU,Asia/Chongqing,Chengdu Tianfu International Airport,TFU,CN,POINT (104.44626140754374 30.302939549999998),1444,,ZUTF,Jiancheng,,Sichuan
+TGI,America/Lima,Tingo Maria,TGI,PE,POINT (-76.00496646862787 -9.288856299999999),2010,,SPGM,Tingo Maria,Provincia de Leoncio Prado,Huanuco
+TGR,Africa/Algiers,Touggourt Airport,TGR,DZ,POINT (6.090476641530314 33.0733139),279,,DAUK,Touggourt,,Ouargla
+TGS,Africa/Maputo,Chokwe,TGS,MZ,POINT (32.416668 -24.616667),0,,"",Chokwe,,Gaza
+THC,Africa/Monrovia,Tchien,THC,LR,POINT (-8.138741449938696 6.04680205),790,,GLTN,Zwedru,,Grand Gedeh
+THH,Pacific/Auckland,Taharoa,THH,NZ,POINT (174.70515267688035 -38.166109649999996),69,,NZTS,Raglan,Waikato District,Waikato
+TGV,Europe/Sofia,Targovishte,TGV,BG,POINT (24.5 42.416668),666,,LBTG,Suedinenie,Obshtina Suedinenie,Plovdiv
+TGZ,America/Mexico_City,Angel Albino Corzo International Airport,TGZ,MX,POINT (-93.0225 16.56361),1499,http://www.chiapas.aero/index.html,MMTG,Ignacio Allende,Chiapa de Corzo,Chiapas
+THB,Africa/Maseru,Thaba-Tseka,THB,LS,POINT (29.5 -28.833332),7500,,FXTA,Bergville,uThukela District Municipality,KwaZulu-Natal
+THD,Asia/Ho_Chi_Minh,Bai Thuong Airport,THD,VN,POINT (105.467778 19.901667),59,,VVTX,Thi Tran Tho Xuan,,Thanh Hoa
+THM,America/Chicago,Thompsonfield,THM,US,POINT (-91.98333 39.183334),2467,,KTHM,Mexico,Audrain County,Missouri
+THN,Europe/Stockholm,Trollhattan Airport,THN,SE,POINT (12.3 58.266666),137,,ESGT,Trollhattan,Trollhattan,Vaestra Goetaland
+THP,America/Denver,Hot Springs,THP,US,POINT (-108.21667 43.65),4895,,KHSG,Thermopolis,Hot Springs County,Wyoming
+THT,Africa/Nouakchott,Tamchakett,THT,MR,POINT (-10.816667 17.233334),620,,GQNT,Kiffa,,Assaba
+THI,Africa/Nouakchott,Tichitt,THI,MR,POINT (-9.486411 18.4339423),561,,GQNC,'Ayoun el 'Atrous,,Hodh el Gharbi
+THK,Asia/Vientiane,Thakhek,THK,LA,POINT (104.8552895 17.3778899),449,,VLTK,Thakhek,,Khammouan
+THV,America/New_York,York Airport,THV,US,POINT (-76.71667 39.95),495,,KTHV,Valley View,York County,Pennsylvania
+THX,Asia/Krasnoyarsk,Turukhansk Airport,THX,RU,POINT (87.92869527915198 65.80012070000001),128,,UOTT,Turukhansk,,Krasnoyarskiy
+THY,Africa/Johannesburg,Thohoyandou,THY,ZA,POINT (30.55 -22.883333),2021,,FATH,Thohoyandou,Vhembe District Municipality,Limpopo
+THZ,Africa/Niamey,Tahoua,THZ,NE,POINT (5.253089017440471 14.8676617),1266,,DRRT,Tahoua,,Tahoua
+TIA,Europe/Tirane,Tirana International Airport,TIA,AL,POINT (19.71328 41.419132),126,http://www.tirana-airport.com/,LATI,Preze,Rrethi i Tiranes,Tirane
+TIB,America/Bogota,Tibu,TIB,CO,POINT (-72.73192370904502 8.631475550000001),194,,SKTB,Tibu,,Norte de Santander
+TIC,Pacific/Majuro,Tinak Island,TIC,MH,POINT (171.78334 7.05),4,,"",Arno,,Arno Atoll
+TID,Africa/Algiers,Bouchekif Abde Al-hafidh Boussof,TID,DZ,POINT (1.35 35.466667),3245,,DAOB,Tiaret,,Tiaret
+TIE,Africa/Addis_Ababa,Tippi,TIE,ET,POINT (35.41528 7.201111),1100,,HATP,Tippi,,"Southern Nations, Nationalities, and People's Region"
+TIF,Asia/Riyadh,Taif Airport,TIF,SA,POINT (40.539456606786985 21.4854494),4848,,OETF,Ta'if,,Makkah
+TII,Asia/Kabul,Tirinkot,TII,AF,POINT (65.63333 32.86667),4429,,OATN,Tarinkot,Tarin Kot,Oruzgan
+TIJ,America/Tijuana,Tijuana Airport,TIJ,MX,POINT (-116.97017165699292 32.54236105),489,http://aeropuertosgap.com.mx/english/airports/tijuana-airport,MMTJ,Tijuana,,Baja California
+TIK,America/Chicago,Tinker AFB,OKC,US,POINT (-97.39079739063683 35.4117548),1291,http://www.tinker.af.mil/,KTIK,Midwest City,Oklahoma County,Oklahoma
+TIL,America/Edmonton,Inverlake,TIL,CA,POINT (-1.03 50.5),3300,,CFQ4,Bembridge,Isle of Wight,England
+TIN,Africa/Algiers,Tindouf Airport,TIN,DZ,POINT (-8.167237444382948 27.7014134),1453,,DAOF,Tindouf,,Tindouf
+TIO,Asia/Rangoon,Tilin,TIO,MM,POINT (96 20),1385,,VYHN,Nay Pyi Taw,,Mandalay
+TIZ,Pacific/Port_Moresby,Tari Airport,TIZ,PG,POINT (142.94694677779594 -5.8446016),5500,,AYTA,Tari,,Hela
+TJA,America/La_Paz,Capitan Oriel Lea Plaza Airport,TJA,BO,POINT (-64.70115841633374 -21.55652125),6079,,SLTJ,Tarija,,Tarija
+TKC,Africa/Douala,Tiko,TKC,CM,POINT (9.36040578895086 4.0900417000000004),151,,FKKC,Mutengene,,South-West Province
+TIW,America/Los_Angeles,Industrial,TIW,US,POINT (-122.57306 47.270557),294,,KTIW,Wollochet,Pierce County,Washington
+TJB,Asia/Jakarta,Tanjung Balai,TJB,ID,POINT (99.73333 2.916667),33,,WIBT,Tanjungbalai,,North Sumatra
+TJC,America/Panama,Ticantiki,TJC,PA,POINT (-78.48889 9.408333),17,,"",Nargana,,Guna Yala
+TJG,Asia/Jakarta,Tanjung Warukin,TJG,ID,POINT (103.96667 -1.4),197,,WAON,Simpang,,Jambi
+TJI,America/Tegucigalpa,Capiro,TJI,HN,POINT (-85.939445 15.925833),3,,MHTJ,Trujillo,,Colon
+TJL,America/Campo_Grande,Três Lagoas Airport,TJL,BR,POINT (-51.683889 -20.754444),1050,http://guia.3lagoas.com.br/empresa/aeroporto-municipal-plinio-alarcon,SBTG,Tres Lagoas,Tres Lagoas,Mato Grosso do Sul
+TJQ,Asia/Jakarta,Bulutumbang Airport,TJQ,ID,POINT (107.65 -2.75),164,,WIKT,Tanjung Pandan,,Bangka-Belitung Islands
+TJU,Asia/Dushanbe,Kulyab Airport,TJU,TJ,POINT (69.80666 37.988335),2293,,UTDK,Kulob,,Khatlon
+TJV,Asia/Kolkata,Thanjavur,TJV,IN,POINT (79.2 10.8),253,,VOTJ,Thanjavur,Thanjavur,Tamil Nadu
+TKE,America/Anchorage,Tenakee SPB,TKE,US,POINT (-135.21666 57.783333),0,http://www.tenakeespringsak.com/,TKE,Sitka,Sitka City and Borough,Alaska
+TKW,Pacific/Port_Moresby,Tekin,TKW,PG,POINT (142.1648387971141 -5.24379985),5785,,AYTN,Porgera,,Enga
+TKH,Asia/Bangkok,Nakhon Sawan,TKH,TH,POINT (100.35 15.25),107,,VTPI,Takhli,,Nakhon Sawan
+TLD,Africa/Gaborone,Limpopo Valley,TLD,BW,POINT (29.132088297657788 -22.192227449999997),1772,,FBLV,Mathathane,,Central
+TKN,Asia/Tokyo,Tokunoshima,TKN,JP,POINT (128.88333 27.833332),17,,RJKN,Naze,,Kagoshima
+TLL,Europe/Tallinn,Tallinn Airport,TLL,EE,POINT (24.836840478778107 59.414388),131,http://www.tallinn-airport.ee/eng,EETN,Tallinn,Tallinna linn,Harju
+TLS,Europe/Paris,Toulouse-Blagnac Airport,TLS,FR,POINT (1.3580811802322725 43.64332175),499,http://www.toulouse.aeroport.fr/,LFBO,Blagnac,Departement de la Haute-Garonne,Midi-Pyrenees
+TKT,Asia/Bangkok,Tak,TKT,TH,POINT (99.15222 16.878332),478,,VTPT,Tak,,Tak
+TKZ,Pacific/Auckland,Tokoroa,TKZ,NZ,POINT (175.83333 -38.216667),1220,,NZTO,Tokoroa,South Waikato District,Waikato
+TLB,Asia/Karachi,Tarbela,TLB,PK,POINT (72.816666 34.13333),1114,,OPTA,Khalabat,,Khyber Pakhtunkhwa
+TLC,America/Mexico_City,Toluca International Airport,MEX,MX,POINT (-99.666664 19.283333),8466,,MMTO,Toluca,,Mexico
+TLE,Indian/Antananarivo,Tulear,TLE,MG,POINT (43.724167 -23.389723),29,,FMST,Toliara,Toliara I District,Atsimo-Andrefana
+TLF,America/Anchorage,Telida,TLF,US,POINT (-152.5 63.666668),650,,"2K5",Y,Matanuska-Susitna Borough,Alaska
+TLG,Pacific/Guadalcanal,Tulagi Island,TLG,SB,POINT (160.15 -9.1),0,,,Tulaghi,,Central Province
+TLI,Asia/Makassar,Tolitoli,TLI,ID,POINT (120.816666 1.033333),40,,WAMI,Tolitoli,,Central Sulawesi
+TLR,America/Los_Angeles,Mefford Field,TLR,US,POINT (-119.35 36.216667),265,http://www.ci.tulare.ca.us/local_government/departments/administrative_services/airport.htm,KTLR,Tulare,Tulare County,California
+TLU,America/Bogota,Tolu,TLU,CO,POINT (-75.583336 9.516667),16,,SKTL,Tolu,,Sucre
+TLX,America/Santiago,Talca,TLX,CL,POINT (-71.666664 -35.466667),371,,SCTL,Talca,Provincia de Talca,Maule
+TKG,Asia/Jakarta,Radin Inten II Airport,TKG,ID,POINT (105.18205915548504 -5.24672045),282,,WILL,Natar,,Lampung
+TLZ,America/Sao_Paulo,Catalao,TLZ,BR,POINT (-47.95 -18.166668),2612,,SWKT,Catalao,Catalao,Goias
+TKK,Pacific/Chuuk,Chuuk International Airport,TKK,FM,POINT (151.84307838327413 7.461951600000001),11,,PTKK,Weno Town,Weno-Choniro Municipality,Chuuk
+TKO,Africa/Maseru,Tlokoeng,TKO,LS,POINT (28.8829994 -29.2329998),7000,,FXTK,Mokhotlong,,Mokhotlong
+TMC,Asia/Makassar,Tambolaka Airport,TMC,ID,POINT (119.18306 -9.340278),161,,WATK,Maredakamau,,East Nusa Tenggara
+TKQ,Africa/Dar_es_Salaam,Kigoma Airport,TKQ,TZ,POINT (29.667859635949778 -4.88471085),2700,,HTKA,Kigoma,,Kigoma
+TME,America/Bogota,Gabriel Vargas Santos Airport,TME,CO,POINT (-71.76667 6.5),1050,,SKTM,Tame,,Arauca
+TKR,Asia/Dhaka,Thakurgaon,TKR,BD,POINT (88.4036026 26.0163994),176,,VGSG,Thakurgaon,,Rangpur Division
+TKS,Asia/Tokyo,Tokushima Awaodori Airport,TKS,JP,POINT (134.60537300786413 34.1329797),26,,RJOS,Narutocho-mitsuishi,,Tokushima
+TKU,Europe/Helsinki,Turku Airport,TKU,FI,POINT (22.26333725991195 60.5133902),161,https://www.finavia.fi/en/turku/,EFTU,Turku,Turku,Varsinais-Suomi
+TKX,Pacific/Tahiti,Takaroa,TKX,PF,POINT (-145.0259031 -14.4563277),13,,NTKR,Tautira,,
+TLH,America/New_York,Tallahassee International Airport,TLH,US,POINT (-84.35908394368526 30.39782605),81,,KTLH,Tallahassee,Leon County,Florida
+TLK,Asia/Yakutsk,Talakan,TLK,RU,POINT (111.04548950618738 59.8818206),1329,,UECT,Vitim,,Sakha
+TLM,Africa/Algiers,Zenata Airport,TLM,DZ,POINT (-1.4558047297278263 35.0127915),814,,DAON,Remchi,,Tlemcen
+TLQ,Asia/Shanghai,Turpan Jiaohe Airport,TLQ,CN,POINT (89.10067669465826 43.0283315),934,,ZWTP,Laochenglu,,Xinjiang Uygur Zizhiqu
+TLV,Asia/Jerusalem,Ben Gurion International Airport,TLV,IL,POINT (34.88091934223253 32.0027142),135,http://www.iaa.gov.il/Rashat/en-US/Airports/BenGurion/,LLBG,Kefar Habad,,Central District
+TLY,Asia/Vladivostok,Plastun Airport,TLY,RU,POINT (136.28809008859224 44.816066),66,,UHWP,Plastun,,Primorskiy
+TMF,Indian/Maldives,Thimarafushi Airport,TMF,MV,POINT (73.151111 2.208611),6,,VRNT,Veymandoo,,Thaa Atholhu
+TMG,Asia/Kuching,Tomanggong,TMG,MY,POINT (118.6593361 5.4013078),26,,WBKM,Lahad Datu,,Sabah
+TMH,Asia/Jayapura,Tanahmerah,TMH,ID,POINT (140.26666 -6.083333),57,,WAKT,Tanahmerah,,Papua
+TMJ,Asia/Samarkand,Termez Airport,TMJ,UZ,POINT (67.31165927426764 37.285766100000004),1027,,UTST,Tirmiz,,Surxondaryo
+TMK,Asia/Ho_Chi_Minh,Tamky,TMK,VN,POINT (108.48333 15.566667),0,,,Tam Ky,,Quang Nam
+TML,Africa/Accra,Tamale Airport,TML,GH,POINT (-0.879167 9.406944),553,,DGLE,Tamale,,Northern
+TMM,Indian/Antananarivo,Tamatave,TMM,MG,POINT (49.392372747399406 -18.10852705),22,,FMMT,Toamasina,,Atsinanana
+TMN,Pacific/Tarawa,Tamana Island,TMN,KI,POINT (175.98334 -2.483333),0,,NGTM,Toga Village,,Nanumanga
+TMO,America/Caracas,Tumeremo,TMO,VE,POINT (-61.5 7.3),345,,SVTM,Guasipati,Municipio Roscio,Bolivar
+TMP,Europe/Helsinki,Tampere-Pirkkala Airport,TMP,FI,POINT (23.608124582625788 61.41482),390,https://www.finavia.fi/en/tampere-pirkkala/,EFTP,Pirkkala,Tampere,Pirkanmaa
+TMQ,Africa/Ouagadougou,Tambao,TMQ,BF,POINT (0.083333 14.783333),820,,DFEM,Tin-Akoff,Province de l'Oudalan,Sahel
+TMR,Africa/Algiers,Aguenar - Hadj Bey Akhamok Airport,TMR,DZ,POINT (5.451241709209654 22.813385099999998),4518,,DAAT,Tamanrasset,,Tamanghasset
+TMS,Africa/Sao_Tome,Sao Tome Island Airport,TMS,ST,POINT (6.725 0.378333),33,,FPST,Sao Tome,,Sao Tome Island
+TMT,America/Santarem,Trombetas,TMT,BR,POINT (-55.583332 -1.916667),287,,SBTB,Abidos,Obidos,Para
+TMU,America/Costa_Rica,Tambor Airport,TMU,CR,POINT (-85.01667 9.733333),33,,MRTR,Paquera,,Puntarenas
+TMX,Africa/Algiers,Timimoun Airport,TMX,DZ,POINT (0.2729093608047118 29.23472915),1027,,DAUT,Timimoun,,Adrar
+TNP,America/Los_Angeles,Twentynine Palms,TNP,US,POINT (-115.946 34.1317),1888,http://cms.sbcounty.gov/airports/Airports/TwentyninePalms.aspx,KTNP,Twentynine Palms,San Bernardino County,California
+TMY,Asia/Jayapura,Tiom,TMY,ID,POINT (138.41667 -3.95),6931,,"",Karubaga,,Papua
+TMZ,Pacific/Auckland,Thames,TMZ,NZ,POINT (175.56667 -37.11667),10,,NZTH,Thames,Thames-Coromandel District,Waikato
+TNX,Asia/Phnom_Penh,Stung Treng,TNX,KH,POINT (106.01475211610405 13.5325495),203,,VDST,Stung Treng,,Stung Treng
+TNB,Asia/Makassar,Tanah Grogot,TNB,ID,POINT (116.2 -1.916667),17,,WRLH,Tanahgrogot,,East Kalimantan
+TND,America/Havana,Trinidad,TND,CU,POINT (-80 21.8),125,,MUTD,Trinidad,,Sancti Spiritus
+TNE,Asia/Tokyo,Tanegashima,TNE,JP,POINT (130.95416 30.541111),768,,RJFG,Nishinoomote,,Kagoshima
+TOA,America/Los_Angeles,Torrance Airport,TOA,US,POINT (-118.34003744467967 33.8027967),103,http://www.torranceca.gov/487.htm,KTOA,Torrance,Los Angeles County,California
+TOE,Africa/Tunis,Tozeur Airport,TOE,TN,POINT (8.098227764127163 33.93710375),287,,DTTZ,Tozeur,,Tawzar
+TNH,Asia/Shanghai,Tonghua Sanyuanpu Airport,TNH,CN,POINT (125.95 41.75),1200,,ZYTN,Hulutao,,Jilin Sheng
+TNJ,Asia/Jakarta,Kidjang Airport,TNJ,ID,POINT (104.53611 0.919167),52,,WIDN,Tanjungpinang,,Riau Islands
+TNL,Europe/Kiev,Ternopol,TNL,UA,POINT (25.6 49.566666),0,,,Ternopil',,Ternopil
+TNM,America/Santiago,Teniente R. Marsh Martin,TNM,AQ,POINT (-58.98639 -62.190556),147,,SCRM,Stanley,,
+TNR,Indian/Antananarivo,Antananarivo Airport,TNR,MG,POINT (47.47503 -18.799631),4198,,FMMI,Antananarivo,,Analamanga
+TNT,America/New_York,Dade Collier,MIA,US,POINT (-80.183334 25.783333),13,http://www.miami-airport.com/dade_collier.asp,KTNT,Miami,Miami-Dade County,Florida
+TNU,America/Chicago,Newton Municipal Airport,TNU,US,POINT (-93.05 41.7),953,http://www.newtongov.org/index.aspx?nid=189,KTNU,Newton,Jasper County,Iowa
+TNV,Pacific/Kiritimati,Tabuaeran,TNV,KI,POINT (-159.35 3.833333),0,,PLFA,Napari Village,Tabuaeran,Line Islands
+TOC,America/New_York,Toccoa RG Letourneau Field,TOC,US,POINT (-83.316666 34.583332),996,http://www.stephenscountyga.com/airport.cfm?lid=249,KTOC,Toccoa,Stephens County,Georgia
+TOD,Asia/Kuala_Lumpur,Tioman,TOD,MY,POINT (104.166664 2.75),15,,WMBT,Kampung Tekek,,Pahang
+TOF,Asia/Novokuznetsk,Tomsk Airport,TOF,RU,POINT (84.96667 56.5),597,http://www.tomskairport.ru,UNTT,Tomsk,Tomskiy Rayon,Tomsk
+TOI,America/Chicago,Troy Municipal Airport,TOI,US,POINT (-85.96667 31.8),398,http://www.troyal.gov/KTOI,KTOI,Troy,Pike County,Alabama
+TOJ,Europe/Madrid,Torrejon AFB,MAD,ES,POINT (-3.546667 40.455555),2026,,LETO,San Fernando de Henares,Provincia de Madrid,Madrid
+TOR,America/Denver,Torrington Municipal Airport,TOR,US,POINT (-104.15450940762278 42.065280099999995),4207,,KTOR,Torrington,Goshen County,Wyoming
+TOM,Africa/Bamako,Tombouctou,TOM,ML,POINT (-3.005278 16.732222),863,,GATB,Timbuktu,,Tombouctou
+TOO,America/Costa_Rica,San Vito,TOO,CR,POINT (-82.96667 8.833333),3228,,MRSV,San Vito,,Puntarenas
+TOP,America/Chicago,Philip Billard,TOP,US,POINT (-95.6225 39.06972),881,http://www.mtaa-topeka.org/billard-airport,KTOP,Topeka,Shawnee County,Kansas
+TOT,America/Paramaribo,Coronie,TOT,SR,POINT (-56.32703014643889 5.8656299),10,,SMCO,Totness,,Coronie
+TOZ,Africa/Abidjan,Touba,TOZ,CI,POINT (-7.6730977 8.2968),1583,,DITM,Touba,,Bafing
+TPF,America/New_York,Peter O'Knight,TPA,US,POINT (-82.44917241637293 27.9153058),8,http://www.tampaairport.com/peter-o-knight-airport,KTPF,Tampa,Hillsborough County,Florida
+TOW,America/Sao_Paulo,Toledo,TOW,BR,POINT (-53.69611 -24.69861),1843,,SBTD,Toledo,Toledo,Parana
+TOX,Asia/Yekaterinburg,Tobolsk,TOX,RU,POINT (68.23333 58.13333),167,,USTO,Tobol'sk,,Tjumen
+TPO,America/Anchorage,Tanalian Point,TPO,US,POINT (-154.3191843 60.2029778),0,,,Anchor Point,Kenai Peninsula Borough,Alaska
+TPX,Pacific/Tahiti,Tupai,TPX,PF,POINT (-151.83445375610447 -16.24195505),32,,NTTU,Faanui,,
+TPC,America/Guayaquil,Tarapoa,TPC,EC,POINT (-76.78333 -1.416667),814,,SETR,Montalvo,Canton Pastaza,Pastaza
+TRA,Asia/Tokyo,Tarama,TRA,JP,POINT (124.67635410839722 24.653999050000003),36,,RORT,Hirara,,Okinawa
+TPG,Asia/Kuala_Lumpur,Taiping,TPG,MY,POINT (100.73333 4.85),40,,WMBI,Taiping,,Perak
+TPK,Asia/Jakarta,Tapaktuan,TPK,ID,POINT (97.183334 3.266667),17,,WITA,Tapaktuan,,Aceh
+TPL,America/Chicago,Draughon-miller Central Texas Regional,TPL,US,POINT (-97.409164 31.150278),682,,KTPL,Morgans Point Resort,Bell County,Texas
+TPP,America/Lima,Cad. FAP Guillermo del Castillo Paredes Airport,TPP,PE,POINT (-76.39861 -6.511111),869,,SPST,Tarapoto,Provincia de San Martin,San Martin
+TPQ,America/Mazatlan,Tepic Airport,TPQ,MX,POINT (-104.9 21.5),3020,http://tepic.asa.gob.mx/wb/webasa/tepic_aeropuertos,MMEP,Tepic,,Nayarit
+TPT,Africa/Monrovia,Tapeta,TPT,LR,POINT (-8.866667 6.483333),870,,"",Toulepleu Guere,,Dix-Huit Montagnes
+TPU,Asia/Kathmandu,Tikapur,TPU,NP,POINT (81.191666 28.55),522,,VNTP,Tikapur,,Far Western
+TQD,Asia/Baghdad,Al Taqaddum AB,TQD,IQ,POINT (43.597099304199 33.33810043335),275,,ORAT,Al Fallujah,,Anbar
+TOL,America/New_York,Toledo Express Airport,TOL,US,POINT (-83.81308521269543 41.586415099999996),683,,KTOL,Whitehouse,Lucas County,Ohio
+TOQ,America/Santiago,Barriles,TOQ,CL,POINT (-70.05970181081793 -22.14378115),3475,,SCBE,Tocopilla,Provincia de Tocopilla,Antofagasta
+TOS,Europe/Oslo,Tromso/Langnes Airport,TOS,NO,POINT (18.91540972267273 69.68179375),31,http://www.avinor.no/en/airport/tromso,ENTC,Tromso,Tromso,Troms
+TOU,Pacific/Noumea,Touho,TOU,NC,POINT (165.2590027 -20.7900009),10,,NWWU,Touho,Touho,North Province
+TQR,Europe/Rome,San Domino Island,TQR,IT,POINT (15.483333 42.11667),0,,,Isole Tremiti,Provincia di Foggia,Apulia
+TQS,America/Bogota,Tres Esquinas,TQS,CO,POINT (-75.23333 0.733333),585,,SKTQ,Solano,,Caqueta
+TRB,America/Bogota,Gonzalo,TRB,CO,POINT (-76.748055 8.078333),6,,SKTU,Turbo,,Antioquia
+TOY,Asia/Tokyo,Toyama Airport,TOY,JP,POINT (137.18721380281647 36.649042050000006),95,,RJNT,Toyama-shi,,Toyama
+TPA,America/New_York,Tampa International Airport,TPA,US,POINT (-82.5349276153517 27.9791649),26,http://www.tampaairport.com,KTPA,Egypt Lake-Leto,Hillsborough County,Florida
+TPE,Asia/Taipei,Taiwan Taoyuan International Airport,TPE,TW,POINT (121.23459767526805 25.079317449999998),106,http://www.taoyuan-airport.com/,RCTP,Taoyuan City,,Taiwan
+TPN,America/Guayaquil,Tiputini,TPN,EC,POINT (-75.52839598806818 -0.77613245),997,,SETI,Pantoja,Provincia de Maynas,Loreto
+TPS,Europe/Rome,Trapani-Birgi Airport,TPS,IT,POINT (12.492621862041094 37.913008950000005),25,,LICT,Marsala,Trapani,Sicily
+TRE,Europe/London,Tiree Airport,TRE,GB,POINT (-6.871612898428247 56.500386899999995),38,http://www.hial.co.uk/tiree-airport.html,EGPU,Barra,Eilean Siar,Scotland
+TRF,Europe/Oslo,Torp Sandefjord Airport,OSL,NO,POINT (10.251807 59.178085),286,,ENTO,Sandefjord,Sandefjord,Vestfold
+TRG,Pacific/Auckland,Tauranga City Airport,TRG,NZ,POINT (176.19899683027774 -37.673016950000004),13,,NZTG,Tauranga,Tauranga City,Bay of Plenty
+TRH,America/Los_Angeles,Trona,TRH,US,POINT (-117.32706632572544 35.816331500000004),1716,http://www.trona-ca.com/trona-airport/,L72,Searles Valley,San Bernardino County,California
+TRY,Africa/Kampala,Tororo,TRY,UG,POINT (34.16826253010921 0.682152),3840,,HUTO,Tororo,Tororo District,Eastern Region
+TSM,America/Denver,Taos,TSM,US,POINT (-105.66894183952934 36.442847099999994),7095,http://www.taosairport.org/,KSKX,Taos,Taos County,New Mexico
+TRK,Asia/Makassar,Juwata International Airport,TRK,ID,POINT (117.56528 3.327222),23,http://www.tarakan-airport.com,WAQQ,Tarakan,,North Kalimantan
+TRL,America/Chicago,Terrell Field,TRL,US,POINT (-96.275 32.735832),474,http://www.terrellairport.com/,KTRL,Terrell,Kaufman County,Texas
+TRM,America/Los_Angeles,Thermal,TRM,US,POINT (-116.93611 33.630554),-115,http://www.rcjcra.com/,KTRM,East Hemet,Riverside County,California
+TRQ,America/Rio_Branco,Tarauaca,TRQ,BR,POINT (-70.75 -8.1),646,,SBTK,Tarauaca,Tarauaca,Acre
+TRT,America/Denver,Tremonton,TRT,US,POINT (-112.166664 41.716667),0,,,Tremonton,Box Elder County,Utah
+TRU,America/Lima,Trujillo Airport,TRU,PE,POINT (-79.115 -8.09),106,,SPRU,Huanchaco,Provincia de Trujillo,La Libertad
+TRW,Pacific/Tarawa,Bonriki Airport,TRW,KI,POINT (172.94167 1.358333),9,,NGTA,Betio Village,Tarawa,Gilbert Islands
+TRX,America/Chicago,Memorial,TRX,US,POINT (-93.61667 40.083332),0,,,Trenton,Grundy County,Missouri
+TSH,Africa/Lubumbashi,Tshikapa,TSH,CD,POINT (20.797222 -6.441111),1595,,FZUK,Tshikapa,,Kasai-Occidental
+TSK,Pacific/Port_Moresby,Taskul,TSK,PG,POINT (150.41667 -2.566667),100,,"",Kavieng,,New Ireland
+TSL,America/Mexico_City,Tamuin,TSL,MX,POINT (-98.75 21.983334),164,,MMTN,Tamuin,,San Luis Potosi
+TSO,Europe/London,Tresco,ISC,GB,POINT (-6.331389 49.945557),0,,,Hugh Town,Isles of Scilly,England
+TSP,America/Los_Angeles,Kern County,TSP,US,POINT (-118.441666 35.1375),4001,http://www.liveuptehachapi.com/index.aspx?nid=26,KTSP,Tehachapi,Kern County,California
+TSQ,America/Sao_Paulo,Torres,TSQ,BR,POINT (-49.746113 -29.3325),26,,SBTR,Torres,Torres,Rio Grande do Sul
+TSS,America/New_York,East 34th St Heliport,NYC,US,POINT (-74.166664 40.766666),0,,,East Newark,Hudson County,New Jersey
+TSU,Pacific/Tarawa,Tabiteuea South,TSU,KI,POINT (174.83333 -1.416667),0,,NGTS,Temaiku Village,Tarawa,Gilbert Islands
+TSY,Asia/Jakarta,Tasikmalaya,TSY,ID,POINT (108.2 -7.3),1148,,WICM,Jati,,West Java
+TSZ,Asia/Ulaanbaatar,Tsetserleg,TSZ,MN,POINT (101.76667 47.733334),5530,,ZMTG,Jargalant,,Arhangay
+TTA,Africa/Casablanca,Tan Tan Airport,TTA,MA,POINT (-11.083333 28.45),653,,GMAT,Tan-Tan,,Guelmim-Es Smara
+TXU,Africa/Abidjan,Tabou,TXU,CI,POINT (-7.3627281 4.4378095),39,,DITB,Tabou,,Bas-Sassandra
+TTD,America/Los_Angeles,Troutdale,TTD,US,POINT (-122.65 45.9),39,https://www2.portofportland.com/Airports/Troutdale/,KTTD,La Center,Clark County,Washington
+TTG,America/Argentina/Salta,Tartagal,TTG,AR,POINT (-63.833332 -22.533333),1472,,SAST,Tartagal,,Salta
+TTH,Asia/Muscat,Thumrait,TTH,OM,POINT (54 17.633333),1570,,OOTH,Salalah,,Zufar
+TTI,Pacific/Tahiti,Tetiaroa Island,TTI,PF,POINT (-149.5 -17.083332),7,,NTTE,Mahina,,Iles du Vent
+TTQ,America/Costa_Rica,Tortuquero,TTQ,CR,POINT (-83.51667 10.566667),92,,MRAO,Cariari,Canton de Pococi,Limon
+TTW,Asia/Colombo,Tissa Tank,TTW,LK,POINT (81.2906 6.2876),75,,"",Wattegama,,Uva
+TTJ,Asia/Tokyo,Tottori Airport,TTJ,JP,POINT (134.16846688099204 35.5287531),65,,RJOR,Tottori,,Tottori
+TUB,Pacific/Tahiti,Tubuai,TUB,PF,POINT (-149.46666 -23.35),7,,NTAT,Moerai,,Iles Australes
+TUC,America/Argentina/Tucuman,Benj Matienzo,TUC,AR,POINT (-65.2 -26.833332),1493,,SANT,San Miguel de Tucuman,,Tucuman
+TUE,America/Panama,Tupile,TUE,PA,POINT (-79.48722 9.5725),0,,,Nombre de Dios,,Colon
+TUF,Europe/Paris,Val de Loire Airport,TUF,FR,POINT (0.7275 47.428333),357,http://www.tours.aeroport.fr/index_en.php,LFOT,Parcay-Meslay,Departement d'Indre-et-Loire,Centre
+TUH,America/Chicago,Arnold AFS,THA,US,POINT (-86.21667 35.36667),0,,,Tullahoma,Coffee County,Tennessee
+TUJ,Africa/Addis_Ababa,Tum,TUJ,ET,POINT (35.566666 5.833333),4700,,"",Bako,,"Southern Nations, Nationalities, and People's Region"
+TUQ,Africa/Ouagadougou,Tougan,TUQ,BF,POINT (-3 13),984,,DFOT,Tougan,Province du Sourou,Boucle du Mouhoun
+TUR,America/Belem,Tucurui,TUR,BR,POINT (-49.733334 -3.7),830,,SBTU,Tucurui,Tucurui,Para
+TTM,America/Bogota,Tablon De Tamara,TTM,CO,POINT (-72.1006111 5.7268777),0,,,Pore,,Casanare
+TUU,Asia/Riyadh,Tabuk Regional Airport,TUU,SA,POINT (36.608288 28.375784),2551,,OETB,Tabuk,,Mintaqat Tabuk
+TUV,America/Caracas,Tucupita,TUV,VE,POINT (-62.05 9.091667),16,,SVTC,Tucupita,Municipio Tucupita,Delta Amacuro
+TUW,America/Panama,Tubala,TUW,PA,POINT (-77.666664 8.833333),0,,,Mulatupo,,Guna Yala
+TUX,America/Vancouver,Tumbler Ridge,TUX,CA,POINT (-121.083336 55.1),3075,,CBX7,Tumbler Ridge,,British Columbia
+TUZ,America/Belem,Tucuma,TUZ,BR,POINT (-50.5 -21.883333),1060,,"",Tupa,Tupa,Sao Paulo
+TVU,Pacific/Fiji,Matei Airport,TVU,FJ,POINT (179.87416 -16.693056),60,,NFNM,Lambasa,,Northern
+TTN,America/New_York,Trenton-Mercer Airport,PHL,US,POINT (-74.81321108368704 40.276411949999996),213,,KTTN,Ewing,Mercer County,New Jersey
+TTO,America/Chicago,Britton Municipal Airport,TTO,US,POINT (-97.74395892099608 45.81380745),1318,,KBTN,Britton,Marshall County,South Dakota
+TTE,Asia/Jayapura,Babullah Airport,TTE,ID,POINT (127.38087456611015 0.8311787500000001),49,,WAEE,Ternate,,Maluku Utara
+TUK,Asia/Karachi,Turbat Airport,TUK,PK,POINT (63.03028137910644 25.98209085),498,,OPTU,Turbat,,Balochistan
+TUM,Australia/Sydney,Tumut,TUM,AU,POINT (148.24157409011264 -35.2688977),878,,YTMU,Tumut,Tumut Shire,New South Wales
+TUY,America/Cancun,Tulum,TUY,MX,POINT (-87.4382019 20.2273006),7,,MMTU,Tulum,,Quintana Roo
+TVY,Asia/Rangoon,Dawe Airport,TVY,MM,POINT (98.2 14.1),84,,VYDW,Dawei,,Tanintharyi
+TWB,Australia/Brisbane,Toowoomba,TWB,AU,POINT (151.91589923018938 -27.5435266),2086,,YTWB,Wilsonton Heights,Toowoomba,Queensland
+TWD,America/Los_Angeles,Port Townsend,TWD,US,POINT (-122.76667 48.11667),108,http://www.portofpt.com/airport.htm,K0S9,Port Townsend,Jefferson County,Washington
+TWC,Asia/Shanghai,Tumxuk Tangwangcheng Airport,TWC,CN,POINT (79.23153844028876 39.885721450000005),0,,"",Aqal,,Xinjiang Uygur Zizhiqu
+TWF,America/Boise,Magic Valley Regional Airport,TWF,US,POINT (-114.4877 42.4817),4154,,KTWF,Twin Falls,Twin Falls County,Idaho
+TWT,Asia/Manila,Tawitawi,TWT,PH,POINT (119.74403 5.044958),15,,RPMN,Bongao,Province of Tawi-Tawi,Autonomous Region in Muslim Mindanao
+TWU,Asia/Kuching,Tawau Airport,TWU,MY,POINT (117.884865 4.26275),57,,WBKW,Tawau,Bahagian Tawau,Sabah
+TWH,America/Los_Angeles,Two Harbors,AVX,US,POINT (-118.508601 33.4325701),0,,,Avalon,Los Angeles County,California
+TWZ,Pacific/Auckland,Pukaki/Twizel,MON,NZ,POINT (170.11722 -44.234165),1575,,NZUK,Pleasant Point,Timaru District,Canterbury
+TXF,America/Bahia,Teixeira de Freitas Airport,TXF,BR,POINT (-37.183334 -7.133333),344,,SNTF,Teixeira,Teixeira,Paraiba
+TXG,Asia/Taipei,Taichung,TXG,TW,POINT (120.64611 24.15),0,,,Taichung,Taichung City,Taiwan
+TXK,America/Chicago,Texarkana Municipal Airport,TXK,US,POINT (-93.98917 33.45639),390,,KTXK,Texarkana,Miller County,Arkansas
+TXE,Asia/Jakarta,Rembele Airport,TXE,ID,POINT (96.8491092260279 4.7229057),4648,,WITK,Simpang Teritit,,Aceh
+TYA,Europe/Moscow,Tula,TYA,RU,POINT (37.61667 54.2),499,,UUBT,Tula,,Tula
+TXL,Europe/Berlin,Tegel Airport,BER,DE,POINT (13.30375552174911 52.5568088),122,http://www.berlin-airport.de/en/travellers-txl/index.php,EDDT,Tegel,,Berlin
+TYE,America/Anchorage,Tyonek,TYE,US,POINT (-151.33333 61.016666),110,,TYE,Nikiski,Kenai Peninsula Borough,Alaska
+TXM,Asia/Jayapura,Teminabuan,TXM,ID,POINT (132.0208113874629 -1.4453588499999999),141,,WAST,Teminabuan,,West Papua
+TYL,America/Lima,Captain FAP Victor Montes Arias Airport,TYL,PE,POINT (-81.25278 -4.564722),282,,SPYL,Talara,Provincia de Talara,Piura
+TXN,Asia/Shanghai,Huangshan Tunxi International Airport,TXN,CN,POINT (118.25567849391369 29.73328205),0,,ZSTX,Yiqi,,Anhui Sheng
+TYT,America/Montevideo,Treinta-y-Tres,TYT,UY,POINT (-54.283333 -33.266666),337,,SUTR,Treinta y Tres,,Treinta y Tres
+TZA,America/Belize,Municipal,BZE,BZ,POINT (-88.191666 17.51639),8,,MZBE,Belize City,,Belize
+TZL,Europe/Sarajevo,Tuzla International Airport,TZL,BA,POINT (18.709167 44.40972),784,http://www.tuzla-airport.ba/,LQTZ,Svojat,,
+UAB,Europe/Istanbul,Adana-Incirlik Airbase,ADA,TR,POINT (35.41833 37.00028),238,,LTAG,Yuregir,,Adana
+UAK,America/Godthab,Narsarsuaq Airport,UAK,GL,POINT (-45.316666 61.166668),112,,BGBW,Narsaq,,Kujalleq
+UAL,Africa/Luanda,Luau,UAL,AO,POINT (22.5 -11),3609,,FNUA,Luau,,Moxico
+TWN,Australia/Brisbane,Tewantin,TWN,AU,POINT (153.06349594526466 -26.422261),0,,,Noosaville,Sunshine Coast,Queensland
+TYD,Asia/Yakutsk,Tynda Airport,TYD,RU,POINT (124.77325658919317 55.2843738),2001,,UHBW,Tynda,,Amur
+TYM,America/Nassau,Staniel Cay,TYM,BS,POINT (-76.43981379985384 24.16933685),5,,MYES,Black Point,,Black Point
+TYZ,America/Phoenix,Taylor,TYZ,US,POINT (-110.11645561432404 34.45143875),5823,,KTYL,Taylor,Navajo County,Arizona
+TZM,America/Merida,Tizimin,TZM,MX,POINT (-88.17237438239351 21.15550795),56,,MM72,Tizimin,Tizimin,Yucatan
+UAE,Pacific/Port_Moresby,Mount Aue,UAE,PG,POINT (144.66450798802197 -6.23028875),4250,,AYAE,Minj,,Jiwaka
+UAM,Pacific/Guam,Andersen AFB,GUM,GU,POINT (144.76666 13.466667),627,http://www.andersen.af.mil/,PGUA,Hagatna Village,,Hagatna
+UAQ,America/Argentina/San_Juan,San Juan Airport,UAQ,AR,POINT (-68.51667 -31.55),1958,,SANU,San Juan,,San Juan
+UAX,America/Guatemala,Uaxactun,UAX,GT,POINT (-89.6348411 17.3931494),573,,MGUX,San Jose,Municipio de San Jose,Peten
+UAS,Africa/Nairobi,Samburu,UAS,KE,POINT (37.55 0.466667),3295,,HKSB,Isiolo,,Isiolo
+UBA,America/Sao_Paulo,Uberaba Airport,UBA,BR,POINT (-47.958332 -19.776388),2655,,SBUR,Uberaba,Uberaba,Minas Gerais
+UBJ,Asia/Tokyo,Yamaguchi Ube Airport,UBJ,JP,POINT (131.27519368983468 33.9294836),23,,RJDC,Ube,,Yamaguchi
+UBN,Asia/Ulaanbaatar,New Ulaanbaatar International Airport,UBN,MN,POINT (106.818889 47.65),4482,,ZMCK,Zuunmod,,Central Aimak
+UBP,Asia/Bangkok,Ubon Ratchathani International Airport,UBP,TH,POINT (104.87068 15.246491),406,,VTUU,Ubon Ratchathani,,Changwat Ubon Ratchathani
+UBT,America/Sao_Paulo,Ubatuba,UBT,BR,POINT (-45.07459704874877 -23.441335600000002),13,,SDUB,Ubatuba,Ubatuba,Sao Paulo
+UBS,America/Chicago,Lowndes County,UBS,US,POINT (-88.38333 33.466667),188,,KUBS,Columbus,Lowndes County,Mississippi
+UCT,Europe/Moscow,Ukhta Airport,UCT,RU,POINT (53.80787502884279 63.56549785),482,,UUYH,Sosnogorsk,,Komi Republic
+UCA,America/New_York,Oneida County,UCA,US,POINT (-75.38028 43.141388),0,,,Clark Mills,Oneida County,New York
+UCC,America/Los_Angeles,Yucca Flat,UCC,US,POINT (-116.05 37),3919,,NV11,Beatty,Nye County,Nevada
+UCK,Europe/Kiev,Lutsk,UCK,UA,POINT (25.333332 50.75),774,,UKLC,Luts'k,,Volyn
+UCN,Africa/Monrovia,Buchanan,UCN,LR,POINT (-10.033333 5.95),41,,GLBU,Buchanan,,Grand Bassa
+UCY,America/Chicago,Everett-Stewart,UCY,US,POINT (-89.05 36.433334),336,,KUCY,Union City,Obion County,Tennessee
+UDA,Australia/Brisbane,Undarra,UDA,AU,POINT (144.6 -18.183332),0,,YUDA,Ravenshoe,Tablelands,Queensland
+UDE,Europe/Amsterdam,Volkel,UDE,NL,POINT (5.616667 51.666668),0,,,Uden,Gemeente Uden,North Brabant
+UDI,America/Sao_Paulo,Uberlandia-Ten. Cel. Av. Cesar Bombonato Airport,UDI,BR,POINT (-48.233334 -18.9),3094,,SBUL,Uberlandia,Uberlandia,Minas Gerais
+UDN,Europe/Rome,Airfield,UDN,IT,POINT (13.183333 46.033333),305,,LIPD,Pasian di Prato,Provincia di Udine,Friuli Venezia Giulia
+UDO,Asia/Vientiane,Udomxay,UDO,LA,POINT (103.816666 19.133333),0,,,Muong Xen,,Nghe An
+UEE,Australia/Hobart,Queenstown,UEE,AU,POINT (145.55 -42.083332),867,,YQNS,Queenstown,West Coast,Tasmania
+UEL,Africa/Maputo,Quelimane Airport,UEL,MZ,POINT (36.865555 -17.847221),36,,FQQL,Quelimane,,Zambezia
+UEO,Asia/Tokyo,Kume-jima Airport,UEO,JP,POINT (126.719444 26.365278),23,,ROKJ,Naha-shi,,Okinawa
+UER,Europe/Madrid,Puertollano,UER,ES,POINT (-4.116667 38.7),0,,,Puertollano,Provincia de Ciudad Real,Castille-La Mancha
+UGA,Asia/Ulaanbaatar,Bulgan,UGA,MN,POINT (103.55 48.8),4311,,ZMBN,Bulgan,Bulgan District,Bulgan
+UDD,America/Los_Angeles,Bermuda Dunes,PSP,US,POINT (-116.2738214785457 33.7479089),73,,KUDD,Bermuda Dunes,Riverside County,California
+UDJ,Europe/Uzhgorod,Uzhgorod,UDJ,UA,POINT (22.26068962869202 48.63582435),383,,UKLU,Uzhhorod,Uzhgorodskiy Raion,Zakarpattia
+UGN,America/Chicago,Memorial,UGN,US,POINT (-87.833336 42.36667),727,http://waukeganport.com/wkgn_airport/,KUGN,Waukegan,Lake County,Illinois
+UGO,Africa/Luanda,Uige,UGO,AO,POINT (15.15 -7.816667),2720,,FNUG,Uige,,Uige
+UEN,Asia/Yekaterinburg,Urengoy,UEN,RU,POINT (78.43674503060257 65.96057339999999),56,,USDU,Urengoy,,Yamalo-Nenetskiy Avtonomnyy Okrug
+UGT,Asia/Ulaanbaatar,Umnugobitour,UGT,MN,POINT (104.12778 43.752777),4659,,ZMBR,Dalandzadgad,,OEmnoegovi
+UIH,Asia/Ho_Chi_Minh,Phu Cat Airport,UIH,VN,POINT (109.22639 13.766111),80,https://vietnamairport.vn/phucatairport/,VVPC,Qui Nhon,,Binh Dinh
+UBI,Pacific/Port_Moresby,Buin,UBI,PG,POINT (155.6839500874595 -6.7309104),230,,AYUI,Panguna,,Bougainville
+UCB,Asia/Shanghai,Ulanqab Jining Airport,UCB,MN,POINT (113.1319445 41.1219377),0,,ZBUC,Jining,,Inner Mongolia
+UCE,America/Chicago,Eunice,UCE,US,POINT (-92.42320287905048 30.463455600000003),42,,"4R7",Eunice,Saint Landry Parish,Louisiana
+UHE,Europe/Prague,Kunovice,UHE,CZ,POINT (17.441398282177662 49.03290305),581,,LKKU,Uherske Hradiste,Okres Uherske Hradiste,Zlin
+UIL,America/Los_Angeles,Quillayute State,UIL,US,POINT (-124.63333 47.9),194,http://www.wsdot.wa.gov/aviation/AllStateAirports/Quillayute_Quillayute.htm,KUIL,Forks,Clallam County,Washington
+UIN,America/Chicago,Quincy Municipal Airport,UIN,US,POINT (-91.19722 39.944168),768,,KUIN,Payson,Adams County,Illinois
+UIO,America/Guayaquil,Mariscal Sucre International Airport,UIO,EC,POINT (-78.49053 -0.145528),7841,,SEQM,Quito,,Pichincha
+UIP,Europe/Paris,Pluguffan Airport,UIP,FR,POINT (-4.170833 47.974445),297,,LFRQ,Pluguffan,Departement du Finistere,Brittany
+UII,America/Tegucigalpa,Utila,UII,HN,POINT (-86.8934553 16.1017166),29,,MHUT,Corozal,,Atlantida
+UIT,Pacific/Majuro,Jaluit Island,UIT,MH,POINT (169.61667 5.833333),4,,"",Jabor,,Jaluit Atoll
+UIZ,America/Detroit,Berz-Macomb,UIZ,US,POINT (-83.05 42.61667),0,,,Utica,Macomb County,Michigan
+UJE,Pacific/Majuro,Ujae Island,UJE,MH,POINT (165.66667 9.083333),29,,"",Ujae,,Ujae Atoll
+UKA,Africa/Nairobi,Ukunda Airport,UKA,KE,POINT (39.566666 -4.3),98,http://www.kenyaairports.co.ke/kaa/airports/airstrips/ukunda_intro.html,HKUK,Gazi,,Kwale
+UKG,Asia/Yakutsk,Ust-Kuiga,UKG,RU,POINT (135.54972 70.00139),327,,UEBT,Ust-Kuyga,,Sakha
+UKR,Asia/Aden,Mukeiras,UKR,YE,POINT (45.683334 13.933333),7080,,OYMS,Mukayras,Mukayras,Muhafazat al Bayda'
+UKT,America/New_York,Upper Bucks,UKT,US,POINT (-75.35 40.433334),526,http://www.bcaanet.org/quakertown.html,KUKT,Quakertown,Bucks County,Pennsylvania
+UIK,Asia/Irkutsk,Ust-Ilimsk,UIK,RU,POINT (102.55715185379071 58.13569575),1339,,UIBS,Ust'-Ilimsk,,Irkutsk
+ULA,America/Argentina/Rio_Gallegos,San Julian,ULA,AR,POINT (-67.666664 -49.316666),203,,SAWJ,San Julian,,Santa Cruz
+ULB,Pacific/Efate,Ulei,ULB,VU,POINT (168.33333 -16.416668),170,,NVSU,Lakatoro,,Malampa
+ULC,America/Santiago,Los Cerrillos,SCL,CL,POINT (-70.694725 -33.489723),0,,,Lo Prado,Provincia de Santiago,Santiago Metropolitan
+ULE,Pacific/Port_Moresby,Sule,ULE,PG,POINT (151.26666 -4.933333),100,,"",Kokopo,,East New Britain
+ULG,Asia/Hovd,Ulgit,ULG,MN,POINT (89.96667 48.966667),5732,,ZMUL,OElgiy,,Bayan-Olgiy
+ULH,Asia/Riyadh,Prince Abdul Majeed bin Abdulaziz Airport,ULH,SA,POINT (37.866665 26.616667),2050,,OEAO,Al 'Ula,,Al Madinah al Munawwarah
+ULL,Europe/London,Mull,ULL,GB,POINT (-6 56.45),0,,,Isle Of Mull,Argyll and Bute,Scotland
+UIR,Australia/Sydney,Quirindi,UIR,AU,POINT (150.5221114 -31.4965337),1054,,YQDI,Quirindi,Liverpool Plains,New South Wales
+ULO,Asia/Hovd,Ulaangom,ULO,MN,POINT (92.066666 49.983334),0,,ZMUG,Ulaangom,,Uvs
+UJN,Asia/Seoul,Uljin,UJN,KR,POINT (129.46312595227198 36.7775619),191,,RKTL,Cheongsong gun,,Gyeongsangbuk-do
+ULS,America/Bogota,Mulatos,ULS,CO,POINT (-76.75 8.65),0,,,Necocli,,Antioquia
+ULY,Europe/Samara,Ulyanovsk Vostochny Airport,ULY,RU,POINT (48.216667 54.266666),252,,UWLW,Isheyevka,,Ulyanovsk
+UJU,Asia/Pyongyang,Uiju Airfield,UJU,KP,POINT (124.49878687367472 40.1505605),0,,,Uiju,,P'yongan-bukto
+UKB,Asia/Tokyo,Kobe Airport,OSA,JP,POINT (135.22785050798507 34.63428055),22,,RJBE,Kobe,,Hyogo
+UMD,America/Godthab,Uummannaq,UMD,GL,POINT (-52.11778 70.66889),0,,,Uummannaq,,Qaasuitsup
+UKH,Asia/Muscat,Mukhaizna,UKH,OM,POINT (56.40542506293076 19.3823858),473,,"",Hayma',,Al Wusta
+UKN,America/Chicago,Waukon Municipal Airport,UKN,US,POINT (-91.46737927591344 43.2808998),1281,,Y01,Waukon,Allamakee County,Iowa
+UKY,Asia/Tokyo,Kyoto,UKY,JP,POINT (135.7726723 35.0082126),0,,,Kyoto,,Kyoto
+ULD,Africa/Johannesburg,Ulundi,ULD,ZA,POINT (31.417100515549492 -28.3188641),1720,,FAUL,Ulundi,Zululand District Municipality,KwaZulu-Natal
+ULU,Africa/Kampala,Gulu,ULU,UG,POINT (32.26994056577095 2.81080155),3510,,HUGU,Gulu,Gulu District,Northern Region
+UMI,America/Lima,Quincemil,UMI,PE,POINT (-70.666664 -13.25),2047,,SPIL,Quince Mil,Provincia de Quispicanchis,Cusco
+UMM,America/Anchorage,Summit,UMM,US,POINT (-149.31667 63.316666),2409,,PAST,Healy,Denali Borough,Alaska
+UMR,Australia/Adelaide,Woomera,UMR,AU,POINT (136.8157731 -31.1439553),548,,YPWR,Roxby Downs,Roxby Downs,South Australia
+UMU,America/Sao_Paulo,Ernesto Geisel,UMU,BR,POINT (-53.31333 -23.798332),1558,,SSUM,Umuarama,Umuarama,Parana
+UMY,Europe/Kiev,Sumy,UMY,UA,POINT (34.783333 50.933334),594,,UKHS,Sumy,,Sumy
+UNA,America/Bahia,Una,UNA,BR,POINT (-38.997223 -15.353333),20,,SBTC,Una,Una,Bahia
+UNC,America/Bogota,Unguia,UNC,CO,POINT (-77.083336 8.033333),120,,"",Ungia,,Choco
+UNE,Africa/Maseru,Qachas Nek,UNE,LS,POINT (27.166668 -30.166668),6100,,FXQN,Zastron,Xhariep District Municipality,Orange Free State
+UMS,Asia/Yakutsk,Ust-Maya,UMS,RU,POINT (134.4363971888119 60.356989),561,,UEMU,Ust-Maya,,Sakha
+UMZ,America/Chicago,Mena Intermountain Municipal Airport,UMZ,US,POINT (-94.2078223 34.5443206),0,,,Mena,Polk County,Arkansas
+UNN,Asia/Bangkok,Ranong Airport,UNN,TH,POINT (98.629166 9.852778),57,,VTSR,Ranong,,Ranong
+UNR,Asia/Ulaanbaatar,Underkhaan,UNR,MN,POINT (110.666664 47.316666),3410,,ZMUH,Undurkhaan,,Hentiy
+UNS,America/Anchorage,Umnak,UMB,US,POINT (-168.33333 53.25),0,,,Unalaska,Aleutians West Census Area,Alaska
+UND,Asia/Kabul,Kunduz,UND,AF,POINT (68.91431620383656 36.66430175),1457,,OAUZ,Kunduz,,Kunduz
+UNU,America/Chicago,Dodge County,UNU,US,POINT (-134.41667 58.3),934,http://www.co.dodge.wi.us/index.aspx?page=44,KUNU,Juneau,Juneau City and Borough,Alaska
+UNG,Pacific/Port_Moresby,Kiunga,UNG,PG,POINT (141.28035046233754 -6.12578775),88,,AYKI,Kiunga,,Western Province
+UOL,Asia/Makassar,Buol,UOL,ID,POINT (121.433334 1.166667),27,,WAMY,Kali,,Central Sulawesi
+UON,Asia/Vientiane,Muong Sai,UON,LA,POINT (101.98333 20.7),0,,,Muang Xay,,Oudomxai
+UPA,America/Havana,Punta Alegre,UPA,CU,POINT (-78.816666 22.383333),0,,,Chambas,,Ciego de Avila
+UPL,America/Costa_Rica,Upala,UPL,CR,POINT (-85.03333 10.783333),184,https://www.google.com/url?sa=t&source=web&rct=j&url=https://m.facebook.com/Aerodromo-de-Upala-913599102022097/&ved=0ahUKEwjajLC,MRUP,Bijagua,,Alajuela
+UPN,America/Mexico_City,Licenciado y General Ignacio Lopez Rayon Airport,UPN,MX,POINT (-102.04722 19.411112),5258,,MMPN,Uruapan,Uruapan,Michoacan
+UOX,America/Chicago,University-Oxford,UOX,US,POINT (-89.53205882081014 34.382689299999996),452,http://airport.olemiss.edu/,KUOX,University,Lafayette County,Mississippi
+UPB,America/Havana,Playa Baracoa,UPB,CU,POINT (-82.57921215824531 23.028541099999998),102,,MUPB,Bauta,,Artemisa
+URB,America/Sao_Paulo,Ernesto Pochler,URB,BR,POINT (-51.566666 -20.783333),1169,,"",Castilho,Castilho,Sao Paulo
+UPP,Pacific/Honolulu,Upolu Point,UPP,US,POINT (-155.85961196910415 20.265102),96,,PHUP,Hawi,Hawaii County,Hawaii
+URG,America/Sao_Paulo,Ruben Berta Airport,URG,BR,POINT (-57.038334 -29.781668),256,,SBUG,Uruguaiana,Uruguaiana,Rio Grande do Sul
+URI,America/Bogota,Uribe,URI,CO,POINT (-74.4 3.216667),2750,,"",Mesetas,,Meta
+URA,Asia/Oral,Uralsk Airport,URA,KZ,POINT (51.541522050576205 51.15188705),125,,UARR,Oral,,Batys Qazaqstan
+URN,Asia/Kabul,Urgoon,URN,AF,POINT (69.183334 32.95),7300,,OAOG,Urgun,,Paktika
+URO,Europe/Paris,Boos,URO,FR,POINT (1.1875 49.38861),512,,LFOP,Boos,Departement de la Seine-Maritime,Haute-Normandie
+URZ,Asia/Kabul,Uruzgan,URZ,AF,POINT (66.61667 32.9),6725,,OARG,Uruzgan,,Oruzgan
+URD,Europe/Berlin,Burg Feuerstein,URD,DE,POINT (11.1311445 49.7937551),1673,http://www.edqe.de/home/,EDQE,Ebermannstadt,Upper Franconia,Bavaria
+UOS,America/Chicago,Franklin County,UOS,US,POINT (-85.8995529 35.2047567),1953,,KUOS,Sewanee,Franklin County,Tennessee
+UPG,Asia/Makassar,Sultan Hasanuddin International Airport,UPG,ID,POINT (119.55303856777952 -5.07668215),47,,WAAA,Makassar,,South Sulawesi
+UPV,Europe/London,Upavon,UPV,GB,POINT (-1.783640664251557 51.287953099999996),574,,EGDJ,Rushall,Wiltshire,England
+URE,Europe/Tallinn,Kuressaare Airport,URE,EE,POINT (22.50913324606583 58.2345785),14,http://www.eeke.ee/,EEKE,Kuressaare,Kuressaare linn,Saare
+URR,America/Bogota,Urrao,URR,CO,POINT (-76.1413477 6.3275845),6090,,SKUR,Urrao,,Antioquia
+URS,Europe/Moscow,Kursk Vostochny Airport,URS,RU,POINT (36.292384936972404 51.752429250000006),686,,UUOK,Kursk,,Kursk
+URU,Pacific/Port_Moresby,Uroubi,URU,PG,POINT (148.56089981077918 -9.515883800000001),481,,AYUE,Popondetta,Sohe,Northern Province
+UUS,Asia/Srednekolymsk,Yuzhno-Sakhalinsk Airport,UUS,RU,POINT (142.75 46.966667),239,http://www.airportus.ru/,UHSS,Yuzhno-Sakhalinsk,,Sakhalin
+USC,America/New_York,Union County Airport,USC,US,POINT (-81.641111 34.686944),0,,,Union,Union County,South Carolina
+USA,America/New_York,Concord-Padgett Regional Airport,USA,US,POINT (-80.71022221657768 35.38989575),705,http://www.concordnc.gov/Departments/Concord-Regional-Airport,KJQF,Harrisburg,Cabarrus County,North Carolina
+USI,America/Guyana,Mabaruma,USI,GY,POINT (-59.833332 8.166667),45,,SYMB,Mabaruma,,Barima-Waini
+USJ,Asia/Almaty,Usharal,USJ,KZ,POINT (80.813005 46.1899941),1288,,UAAL,Sarkand,,Almaty Oblysy
+USK,Europe/Moscow,Usinsk Airport,USK,RU,POINT (57.4 65.95),262,,UUYS,Usinsk,,Komi Republic
+USL,Australia/Perth,Useless Loop,USL,AU,POINT (113.11667 -25.966667),0,,YUSL,Carnarvon,Carnarvon,Western Australia
+UVI,America/Sao_Paulo,União da Vitória Airport,UVI,BR,POINT (-51.068889 -26.231667),2437,,,Porto Uniao,Porto Uniao,Santa Catarina
+UYL,Africa/Khartoum,Nyala,UYL,SD,POINT (24.894722 12.071667),2185,,HSNN,Nyala,,Southern Darfur
+USM,Asia/Bangkok,Koh Samui Airport,USM,TH,POINT (100.06319930633575 9.5488263),64,http://www.samuiairportonline.com,VTSM,Ko Samui,,Surat Thani
+UYN,Asia/Shanghai,Yulin Yuyang Airport,UYN,CN,POINT (109.73038 38.274155),3510,http://www.cwag-yl.com/,ZLYL,Yulin,,Shaanxi
+UUN,Asia/Choibalsan,Baruun-Urt,UUN,MN,POINT (113.2862698 46.6673688),3172,,ZMBU,Baruun-Urt,,Suhbaatar
+USS,America/Havana,Sancti Spiritus,USS,CU,POINT (-79.55 21.866667),295,,MUSS,Sancti Spiritus,,Sancti Spiritus
+UST,America/New_York,St. Augustine Airport,UST,US,POINT (-81.333336 29.95),10,http://www.flynf.com/,KSGJ,Villano Beach,Saint Johns County,Florida
+USN,Asia/Seoul,Ulsan Airport,USN,KR,POINT (129.35279208634356 35.5935453),45,,RKPU,Ulsan,,Ulsan
+UTA,Africa/Harare,Mutare,UTA,ZW,POINT (32.666668 -18.966667),3410,,FVMU,Mutare,,Manicaland
+USQ,Europe/Istanbul,Usak,USQ,TR,POINT (29.46821280911017 38.6847749),2897,,LTBO,Usak,,Usak
+UTC,Europe/Amsterdam,Soesterberg,UTC,NL,POINT (5.166667 52.083332),66,,EHSB,De Bilt,Gemeente De Bilt,Utrecht
+USR,Asia/Ust-Nera,Ust-Nera Airport,USR,RU,POINT (143.11385789052775 64.5499628),1805,,UEMT,Ust-Nera,,Sakha
+UTG,Africa/Maseru,Quthing,UTG,LS,POINT (27.6 -30.5),5350,,FXQG,Quthing,,Quthing
+UWA,America/New_York,Ware,UWA,US,POINT (-72.2165524 42.2809643),465,,MA53,Ware,Hampshire County,Massachusetts
+UTL,Europe/Madrid,Torremolinos,UTL,ES,POINT (-4.5 36.63333),0,,,Torremolinos,Provincia de Malaga,Andalusia
+UTM,America/Chicago,Tunica Municipalcipal Airport,UTM,US,POINT (-90.36767 34.667694),194,http://tunicaairport.com/,KUTA,Tunica,Tunica County,Mississippi
+UTP,Asia/Bangkok,Utapao Airport,UTP,TH,POINT (101.01667 12.683333),42,http://www.utapao.com/,VTBU,Ban Chang,,Rayong
+UTT,Africa/Johannesburg,Umtata Airport,UTT,ZA,POINT (28.783333 -31.583332),2400,,FAUT,Mthatha,OR Tambo District Municipality,Eastern Cape
+UTU,America/Panama,Ustupo,UTU,PA,POINT (-78.833336 9.666667),9,,"",El Porvenir,,Guna Yala
+UTW,Africa/Johannesburg,Queenstown,UTW,ZA,POINT (26.866667 -31.866667),3637,,FAQT,Queenstown,Chris Hani District Municipality,Eastern Cape
+UTH,Asia/Bangkok,Udon Thani International Airport,UTH,TH,POINT (102.7775596 17.3867791),579,http://www.udonthaniairport.com/,VTUD,Udon Thani,,Changwat Udon Thani
+UTI,Europe/Helsinki,Utti,UTI,FI,POINT (26.9338175 60.8968577),339,,EFUT,Kouvola,Kouvola,Kymenlaakso
+UTN,Africa/Johannesburg,Upington Airport,UTN,ZA,POINT (21.258329003972364 -28.402504),2782,,FAUP,Upington,Siyanda District Municipality,Northern Cape
+UTR,Asia/Bangkok,Uttaradit,UTR,TH,POINT (100.2334897 17.6735746),0,,,Uttaradit,,Uttaradit
+UTK,Pacific/Majuro,Utirik Island,UTK,MH,POINT (169.85190447841075 11.2223226),4,,K03N,Utrik,,Utrik Atoll
+UUA,Europe/Moscow,Bugulma Airport,UUA,RU,POINT (52.79764179905476 54.63757215),991,,UWKB,Bugul'ma,Bugul'minskiy Rayon,Tatarstan
+UUD,Asia/Irkutsk,Ulan-Ude Airport,UUD,RU,POINT (107.44900751452916 51.80990495),1690,,UIUU,Zarechnyy,,Respublika Buryatiya
+UZH,Asia/Riyadh,Unayzah,UZH,SA,POINT (43.933334 26.1),2145,,,Unaizah,,Al-Qassim
+VCL,Asia/Ho_Chi_Minh,Chu Lai International Airport,VCL,VN,POINT (108.7125534766665 15.4075042),32,,VVCA,Nui Thanh,,Quang Nam
+UZU,America/Argentina/Cordoba,Curuzu Cuatia,UZU,AR,POINT (-58.095554 -29.778889),213,,SATU,Curuzu Cuatia,,Corrientes
+VAB,America/Bogota,Yavarate,VAB,CO,POINT (-70.75 1.116667),646,,,Mitu,,Vaupes
+UZR,Asia/Almaty,Urzhar Airport,UZR,KZ,POINT (81.6558493669576 47.0891041),1614,,UASU,Urzhar,,East Kazakhstan
+VAG,America/Sao_Paulo,Major-Brigadeiro Trompowsky Airport,VAG,BR,POINT (-45.433334 -21.55),2870,,SBVG,Varginha,Varginha,Minas Gerais
+VAA,Europe/Helsinki,Vaasa Airport,VAA,FI,POINT (21.7641844 63.0449579),29,http://www.finavia.fi/en/vaasa/,EFVA,Ristinummi,Vaasa,Ostrobothnia
+VAL,America/Bahia,Valenca,VAL,BR,POINT (-39.083332 -13.333333),249,,SNVB,Valenca,Valenca,Bahia
+VAP,America/Santiago,Valparaiso,VAP,CL,POINT (-71.666664 -33.033333),0,,SCRD,Valparaiso,Provincia de Valparaiso,Valparaiso
+VAT,Indian/Antananarivo,Vatomandry,VAT,MG,POINT (48.833332 -19.283333),59,,FMMY,Andovoranto,,Atsinanana
+VAC,Europe/Berlin,Varrelbusch,VAC,DE,POINT (8.04353746914224 52.90988165),88,http://www.lsv-cloppenburg.de,EDWU,Garrel,,Lower Saxony
+VAW,Europe/Oslo,Vardoe Airport,VAW,NO,POINT (31.045555 70.35472),0,https://avinor.no/en/airport/vardo-airport/,ENSS,Vuorea,Vardo,Finnmark Fylke
+VBG,America/Los_Angeles,Vandenberg AFB,LPC,US,POINT (-120.46667 34.63333),52,,KVBG,Lompoc,Santa Barbara County,California
+VAF,Europe/Paris,Chabeuil,VAF,FR,POINT (4.9700703742515815 44.92211625),465,http://www.valenceaeroport.fr,LFLU,Malissard,Departement de la Drome,Rhone-Alpes
+VBV,Pacific/Fiji,Vanuabalavu,VBV,FJ,POINT (-178.95 -17.233334),226,,NFVB,Alo,,Circonscription d'Alo
+VCA,Asia/Ho_Chi_Minh,Can Tho Airport,VCA,VN,POINT (105.76639 10.047222),19,,VVCT,Can Tho,,Can Tho
+VAH,America/La_Paz,Vallegrande,VAH,BO,POINT (-64.09835759403896 -18.4794416),6476,,SLVG,Vallegrande,,Santa Cruz
+VCF,America/Argentina/Salta,Valcheta Airport,VCF,AR,POINT (-66.15 -40.7),557,,,Valcheta,,Rio Negro
+VCH,America/Montevideo,Vichadero,VCH,UY,POINT (-54.25 -31.733334),570,,SUVO,Isidoro Noblia,,Cerro Largo
+VCR,America/Caracas,Carora,VCR,VE,POINT (-70.083336 10.183333),1420,,SVCO,Carora,Municipio Torres,Lara
+VCS,Asia/Ho_Chi_Minh,Con Dao,VCS,VN,POINT (106.63333 10.371389),13,,VVCS,Vinh Binh,,Tien Giang
+VDI,America/New_York,Vidalia Municipal Airport,VDI,US,POINT (-82.416664 32.216667),285,http://www.vidaliaga.com/airport.html,KVDI,Vidalia,Toombs County,Georgia
+VDM,America/Argentina/Salta,Gobernador Edgardo Castello Airport,VDM,AR,POINT (-63.016666 -40.85),52,,SAVV,Viedma,,Rio Negro
+VDU,America/Chicago,Tom O'Connor Oilfield,RFG,US,POINT (-97.28333 28.3),26,,,Refugio,Refugio County,Texas
+VDZ,America/Anchorage,Valdez Municipal Airport,VDZ,US,POINT (-146.23889 61.1325),65,,PAVD,Valdez,Valdez-Cordova Census Area,Alaska
+VEG,America/Guyana,Maikwak,VEG,GY,POINT (-59.283333 5.55),331,,SYMK,Mahdia,,Potaro-Siparuni
+VEL,America/Denver,Vernal Regional Airport,VEL,US,POINT (-109.51028 40.43889),5062,,KVEL,Naples,Uintah County,Utah
+VER,America/Mexico_City,Veracruz International Airport,VER,MX,POINT (-96.18321 19.142275),88,http://www.asur.com.mx/asur/ingles/aeropuertos/veracruz/veracruz.asp,MMVR,Hacienda Sotavento,Veracruz,Veracruz
+VEX,America/Chicago,Tioga Municipal Airport,VEX,US,POINT (-77.13333 41.916668),1033,http://www.tiogand.net/index.asp?SEC=D996B72D-EE0E-4AA1-929E-1F5F0C5C46CE&Type=B_BASIC,D60,Mansfield,Tioga County,Pennsylvania
+VFA,Africa/Harare,Victoria Falls Airport,VFA,ZW,POINT (25.840279 -18.093056),3503,,FVFA,Victoria Falls,Hwange District,Matabeleland North
+VGG,Asia/Vientiane,Vangrieng,VGG,LA,POINT (11.07 62.53),2155,,,Tolga,Tolga,Hedmark
+VGS,America/Argentina/Buenos_Aires,General Villegas,VGS,AR,POINT (-63 -35.083332),413,,"",General Villegas,,Buenos Aires
+VGT,America/Los_Angeles,North Air Terminal,LAS,US,POINT (-115.16889 36.09667),2125,http://www.vgt.aero/index.html,KVGT,Paradise,Clark County,Nevada
+VGZ,America/Bogota,Villagarzon,VGZ,CO,POINT (-76.71667 1.066667),3471,,SKVG,Villagarzon,,Putumayo
+VHC,Africa/Luanda,Saurimo,VHC,AO,POINT (20.55 -9.75),3612,,FNSA,Saurimo,,Lunda Sul
+VPE,Africa/Luanda,Ondjiva,VPE,AO,POINT (15.68272926770972 -17.04360815),3664,,FNGI,Ondjiva,,Cunene
+VIY,Europe/Paris,Villa Coublay,PAR,FR,POINT (2.191667 48.774166),564,,LFPV,Velizy-Villacoublay,Departement des Yvelines,Ile-de-France
+VJQ,Africa/Maputo,Gurue,VJQ,MZ,POINT (36.966667 -15.416667),4186,,"",Mutuali,,Nampula
+VKG,Asia/Ho_Chi_Minh,Rach Gia Airport,VKG,VN,POINT (105.083336 10.083333),32,,VVRG,Rach Gia,,Kien Giang
+VKS,America/Chicago,Vicksburg,VKS,US,POINT (-90.85 32.35),331,http://www.vicksburg.org/departments/airport,KVKS,Vicksburg,Warren County,Mississippi
+VLA,America/Chicago,Vandalia,VLA,US,POINT (-89.1 38.966667),521,,KVLA,Vandalia,Fayette County,Illinois
+VIX,America/Sao_Paulo,Eurico de Aguiar Salles Airport,VIX,BR,POINT (-40.28135718192593 -20.256092950000003),49,,SBVT,Vila Velha,Vila Velha,Espirito Santo
+VLE,America/Phoenix,J t Robidoux,VLE,US,POINT (-112.183334 35.65),5902,http://www.valleairport.com/,"40G",Grand Canyon Village,Coconino County,Arizona
+VLG,America/Argentina/Buenos_Aires,Villa Gesell,VLG,AR,POINT (-57.583332 -38.016666),39,,SAZV,Mar del Plata,,Buenos Aires
+VLM,America/La_Paz,Villamontes,VLM,BO,POINT (-63.5 -21.25),1410,,SLVM,Villamontes,,Tarija
+VLO,America/Los_Angeles,Stolport,VLO,US,POINT (-122.23333 38.11667),88,,,Vallejo,Solano County,California
+VLV,America/Caracas,Carvajal,VLV,VE,POINT (-70.58583 9.339167),1870,,SVVL,Valera,Municipio Valera,Trujillo
+VME,America/Argentina/San_Luis,Villa Mercedes,VME,AR,POINT (-65.416664 -33.63333),1624,,SAOR,Villa Mercedes,,San Luis
+VMI,America/Asuncion,INC,VMI,PY,POINT (-58 -22.25),282,,"",Porto Murtinho,Porto Murtinho,Mato Grosso do Sul
+VJB,Africa/Maputo,Xai Xai,VJB,MZ,POINT (33.6273994 -25.0377998),95,,FQXA,Xai-Xai,Xai-Xai District,Gaza
+VNC,America/New_York,Venice Municipalcipal,VNC,US,POINT (-82.433334 27.066668),45,http://www.venicegov.com/Municipal_links/Airport/airport.asp,KVNC,South Venice,Sarasota County,Florida
+VNE,Europe/Paris,Meucon,VNE,FR,POINT (-2.766667 47.65),75,,LFRV,Vannes,Departement du Morbihan,Brittany
+VNG,Asia/Vientiane,Viengxay,VNG,LA,POINT (102.5 18.933332),1505,,,Vangviang,,Vientiane
+VJI,America/New_York,Virginia Highlands,VJI,US,POINT (-82.03803442660512 36.6869088),2076,http://www.vahighlandsairport.com/,KVJI,Abingdon,Washington County,Virginia
+VPY,Africa/Maputo,Chimoio Airport,VPY,MZ,POINT (33.483334 -19.133333),2362,,FQCH,Chimoio,,Manica
+VQQ,America/New_York,Cecil Field,JAX,US,POINT (-81.65 30.333332),39,http://www.jaxjetport.aero/index.php/cecil-airport/,KVQQ,Jacksonville,Duval County,Florida
+VQS,America/Puerto_Rico,Antonio Rivera Rodriguez Airport,VQS,PR,POINT (-65.48803 18.134089),65,,TJVQ,Esperanza,,Vieques Municipality
+VRA,America/Havana,Juan Gualberto Gomez Airport,VRA,CU,POINT (-81.43694 23.039896),200,,MUVR,Matanzas,,Matanzas
+VRE,Africa/Johannesburg,Vredendal,VRE,ZA,POINT (18.5 -31.666668),95,,FAVR,Vredendal,West Coast District Municipality,Western Cape
+VRK,Europe/Helsinki,Varkaus,VRK,FI,POINT (27.933332 62.3),314,http://www.finavia.fi/en/varkaus/,EFVR,Varkaus,Varkaus,Northern Savo
+VRL,Europe/Lisbon,Vila Real Airport,VRL,PT,POINT (-7.75 41.3),1437,,LPVR,Vila Real,Vila Real,Vila Real
+VRO,America/Havana,Kawama,VRO,CU,POINT (-81.3 23.133333),13,,MUKW,Varadero,,Matanzas
+VRS,America/Chicago,Versailles,VRS,US,POINT (-92.85 38.433334),964,,"3VS",Versailles,Morgan County,Missouri
+VRU,Africa/Johannesburg,Vryburg,VRU,ZA,POINT (24.75 -26.916668),3884,,FAVB,Vryburg,Dr Ruth Segomotsi Mompati District Municipality,North-West
+VRY,Europe/Oslo,Stolport (Not operational),VRY,NO,POINT (12.683333 67.666664),16,,,Sorland,Vaeroy,Nordland
+VSE,Europe/Lisbon,Viseu Airport,VSE,PT,POINT (-7.916667 40.65),1643,,LPVZ,Viseu,Viseu,Viseu
+VSF,America/New_York,State,VSF,US,POINT (-72.583336 42.11667),193,,KVSF,Springfield,Hampden County,Massachusetts
+VSG,Europe/Kiev,Lugansk,VSG,UA,POINT (39.333332 48.566666),219,,UKCW,Luhansk,,Luhansk
+VSO,Asia/Ho_Chi_Minh,Phuoclong,VSO,VN,POINT (105.46667 9.433333),36,,,Thi Tran Phuoc Long,,Bac Lieu
+VTA,America/Tegucigalpa,Victoria,VTA,HN,POINT (-87.4 14.95),1253,,,Las Vegas,,Yoro
+VYS,America/Chicago,Illinois Valley Regnl,VYS,US,POINT (-89.13333 41.333332),587,http://www.peru.il.us/airport,KVYS,Peru,LaSalle County,Illinois
+WAC,Africa/Addis_Ababa,Waca,WAC,ET,POINT (37.1669998 7.1669998),4146,,HAWC,Areka,,"Southern Nations, Nationalities, and People's Region"
+WAE,Asia/Riyadh,Wadi Ad Dawasir Airport,WAE,SA,POINT (45.20010307753773 20.5026726),2053,,OEWD,As Sulayyil,,Ar Riyad
+WAG,Pacific/Auckland,Wanganui Airport,WAG,NZ,POINT (175.0237094821025 -39.960698550000004),22,,NZWU,Wanganui,Wanganui District,Manawatu-Wanganui
+WAF,Asia/Karachi,Wana,WAF,PK,POINT (69.53333 32.333332),4865,,OPWN,Wana,,Federally Administered Tribal Areas
+WAK,Indian/Antananarivo,Ankazoabo,WAK,MG,POINT (44.5328871 -22.2988757),1387,,FMSZ,Ankazoabo,,Atsimo-Andrefana
+WAM,Indian/Antananarivo,Ambatondrazaka,WAM,MG,POINT (48.4424785 -17.7953922),2496,,FMMZ,Ambatondrazaka,,Alaotra Mangoro
+WAL,America/New_York,Wallops Flight Center,WAL,US,POINT (-75.38333 37.933334),0,,KWAL,Chincoteague,Accomack County,Virginia
+WAP,America/Santiago,Alto Palena,WAP,CL,POINT (-71.80569953439687 -43.611506000000006),813,http://angelesflying.com/aboutus.html,SCAP,Palena,Provincia de Palena,Los Lagos
+WAO,Pacific/Port_Moresby,Wabo,WAO,PG,POINT (144.8243 -7.495086),72,,AYWB,Ihu,Kikori,Gulf
+WAT,Europe/Dublin,Waterford,WAT,IE,POINT (-7.086350954115158 52.1868444),114,http://flywaterford.com/,EIWF,Waterford,Waterford,Munster
+WAR,Asia/Jayapura,Waris,WAR,ID,POINT (140.88333 -3.116667),1236,,WAJR,Banda,,Papua
+WAU,Australia/Darwin,Wauchope,WAU,AU,POINT (152.75 -31.466667),16,,YWAC,Port Macquarie,Port Macquarie-Hastings,New South Wales
+WAX,Africa/Tripoli,Zuwarah,WAX,LY,POINT (12.016156691309183 32.952084400000004),26,,HLZW,Zuwarah,,An Nuqat al Khams
+WAW,Europe/Warsaw,Frederic Chopin Airport,WAW,PL,POINT (20.97329 52.170906),396,http://www.lotnisko-chopina.pl/?lang=en,EPWA,Wlochy,Warszawa,Masovian Voivodeship
+WAY,America/New_York,Greene County,WAY,US,POINT (-77.583336 39.75),725,,KWAY,Waynesboro,Franklin County,Pennsylvania
+WDS,Asia/Shanghai,Shiyan Wudangshan Airport,WDS,CN,POINT (114.591667 37.913056),164,,ZHSY,Luancheng,,Hebei
+WDY,America/Anchorage,Kodiak Fss,ADQ,US,POINT (-152.4 57.783333),118,,,Kodiak,Kodiak Island Borough,Alaska
+WEA,America/Chicago,Parker County,WEA,US,POINT (-97.8 32.766666),1003,,KWEA,Weatherford,Parker County,Texas
+WEL,Africa/Johannesburg,Welkom,WEL,ZA,POINT (26.75 -28),4419,,,Welkom,Lejweleputswa District Municipality,Orange Free State
+WEP,Pacific/Port_Moresby,Weam,WEP,PG,POINT (148.16667 -10.066667),29,,AYXW,Kwikila,Rigo,Central Province
+WES,Africa/Monrovia,Weasua Airport,WES,LR,POINT (-10.4833 7.2833),1151,,,Bopolu,,Gbarpolu
+WET,Asia/Jayapura,Wagethe,WET,ID,POINT (135.83333 -4.166667),4862,,WABG,Bomomani,,Papua
+WEW,Australia/Sydney,Wee Waa,WEW,AU,POINT (149.43333 -30.233334),590,,YWWA,Narrabri,Narrabri,New South Wales
+WEF,Asia/Shanghai,Weifang Airport,WEF,CN,POINT (119.11501057347209 36.647181450000005),141,,ZSWF,Weifang,,Shandong Sheng
+WFD,Europe/London,Woodford,WFD,GB,POINT (-2.148889 53.338055),308,,,Adlington,Cheshire East,England
+WFI,Indian/Antananarivo,Fianarantsoa,WFI,MG,POINT (47.083332 -21.466667),3917,,FMSF,Fianarantsoa,,Upper Matsiatra
+WFK,America/New_York,Frenchville,WFK,US,POINT (-68.333336 47.35),682,,KFVE,Madawaska,Aroostook County,Maine
+WJF,America/Los_Angeles,William J Fox,WJF,US,POINT (-118.13333 34.7),2339,,KWJF,Lancaster,Los Angeles County,California
+WJR,Africa/Nairobi,Wajir Airport,WJR,KE,POINT (40.6 1.766667),682,,HKWJ,Wajir,,Wajir
+WKB,Australia/Melbourne,Warracknabeal,WKB,AU,POINT (142.43333 -36.15),334,,YWKB,Horsham,Horsham,Victoria
+WKF,Africa/Johannesburg,Waterkloof AFB,PRY,ZA,POINT (25.3 -30.316668),4311,,FAWK,Colesberg,Pixley ka Seme District Municipality,Northern Cape
+WKJ,Asia/Tokyo,Hokkaido Airport,WKJ,JP,POINT (141.7974 45.39943),52,,RJCW,Makubetsu,,Hokkaido
+WJU,Asia/Seoul,Wonju Airport,WJU,KR,POINT (127.96739325776014 37.43917275),410,http://wonju.airport.co.kr/,RKNW,Wonju,,Gangwon-do
+WKL,Pacific/Honolulu,Waikoloa Airport,WKL,US,POINT (-156.33333 19.85),0,,,Kalaoa,Hawaii County,Hawaii
+WKA,Pacific/Auckland,Wanaka,WKA,NZ,POINT (169.24417303213897 -44.7230858),1141,,NZWF,Wanaka,Queenstown-Lakes District,Otago
+WKI,Africa/Harare,Hwange,WKI,ZW,POINT (26.52106461017609 -18.3623096),2463,,FVWT,Hwange,Hwange District,Matabeleland North
+WLC,Australia/Sydney,Walcha,WLC,AU,POINT (151.6 -30.983334),3448,,YWCH,Enmore,Armidale Dumaresq,New South Wales
+WLD,America/Chicago,Arkansas City,WLD,US,POINT (-97.05028 37.166943),1158,,KWLD,Winfield,Cowley County,Kansas
+WLE,Australia/Brisbane,Miles Airport,WLE,AU,POINT (150.165 -26.809167),958,,YMLS,Westcourt,Western Downs,Queensland
+WKN,Pacific/Port_Moresby,Wakunai,WKN,PG,POINT (155.22238548987872 -5.8604274499999995),22,,AYWQ,Arawa,,Bougainville
+WLL,Australia/Darwin,Wollogorang,WLL,AU,POINT (137.91667 -17.616667),918,,YWOR,Mount Isa,Mount Isa,Queensland
+WLM,America/New_York,Waltham,WLM,US,POINT (-71.25139 42.385277),164,,,Waltham,Middlesex County,Massachusetts
+WNP,Asia/Manila,Naga Airport,WNP,PH,POINT (123.2693739243056 13.584019699999999),206,,RPUN,San Agustin,Province of Camarines Sur,Bicol
+WNS,Asia/Karachi,Nawabshah,WNS,PK,POINT (68.38923334846139 26.21551985),72,,OPNH,Nawabshah,,Sindh
+WNU,Pacific/Port_Moresby,Wanuma,WNU,PG,POINT (145.31667 -4.9),1938,,AYWH,Madang,,Madang
+WNZ,Asia/Shanghai,Wenzhou Longwan International Airport,WNZ,CN,POINT (120.84686367619172 27.908789300000002),32,,ZSWZ,Qidu,,Zhejiang Sheng
+WOD,America/Anchorage,Wood River,WOD,US,POINT (-90.083336 38.86667),429,,,Wood River,Madison County,Illinois
+WOE,Europe/Amsterdam,Woensdrecht,WOE,NL,POINT (4.336315574532236 51.443396899999996),32,http://www.defensie.nl/luchtmacht/luchtmachtbases/woensdrecht/,EHWO,Woensdrecht,Gemeente Woensdrecht,North Brabant
+WOK,America/Caracas,Wonken,WOK,VE,POINT (-61.733334 5.25),3192,,"",Santa Elena de Uairen,Municipio Gran Sabana,Bolivar
+WOL,Australia/Sydney,Wollongong,WOL,AU,POINT (150.78334 -34.566666),19,,YSHL,Albion Park Rail,Shellharbour,New South Wales
+WRA,Africa/Addis_Ababa,Warder,WRA,ET,POINT (45.3371073 6.9755902),1833,,HAWR,Dhuusamarreeb,,Galguduud
+WRE,Pacific/Auckland,Whangarei Airport,WRE,NZ,POINT (174.3612111575483 -35.76978905),95,,NZWR,Whangarei,Whangarei,Northland
+WRN,Australia/Perth,Windarling Airport,WRN,AU,POINT (119.38368131919077 -30.031651099999998),1456,,YWDG,Merredin,Merredin,Western Australia
+WOT,Asia/Taipei,Wonan,WOT,TW,POINT (119.5 23.416668),0,http://www.mkport.gov.tw/English/index.htm,RCWA,Ma-kung,Penghu,Taiwan
+WSP,America/Managua,Waspam,WSP,NI,POINT (-84.01667 14.683333),239,,MNWP,Waspam,,Atlantico Norte (RAAN)
+WSU,Pacific/Port_Moresby,Wasu,WSU,PG,POINT (147.23334 -5.95),26,,AYWS,Lae,,Morobe
+WSX,America/Los_Angeles,Westsound,WSX,US,POINT (-122.88333 48.666668),36,,WA83,Friday Harbor,San Juan County,Washington
+WSY,Australia/Brisbane,Whitsunday Airstrip,WSY,AU,POINT (148.75278 -20.502777),0,http://www.whitsundayairport.com/,YWHI,Proserpine,Whitsunday,Queensland
+WSZ,Pacific/Auckland,Westport Airport,WSZ,NZ,POINT (171.57858 -41.74002),22,,NZWS,Westport,Buller District,West Coast
+WTN,Europe/London,Waddington RAF Station,WTN,GB,POINT (-0.516667 53.166668),213,http://www.raf.mod.uk/rafwaddington,EGXW,Waddington,Lincolnshire,England
+WSO,America/Paramaribo,Washabo,WSO,SR,POINT (-57.18576351610666 5.21277015),13,,SMWS,Skeldon,,East Berbice-Corentyne
+WTR,America/Phoenix,White River,WTR,US,POINT (-109.96667 33.85),5364,,E24,Whiteriver,Navajo County,Arizona
+WTT,Pacific/Port_Moresby,Wantoat,WTT,PG,POINT (146.4 -6.05),8999,,AYWC,Kainantu,,Eastern Highlands
+WUD,Australia/Adelaide,Wudinna,WUD,AU,POINT (135.61945 -33.016666),272,,YWUD,Caralue,Kimba,South Australia
+WSR,Asia/Jayapura,Wasior,WSR,ID,POINT (134.50590705997075 -2.7193901499999997),29,,WASW,Wasior,,Papua
+WST,America/New_York,Westerly State,WST,US,POINT (-71.80321330152228 41.34881540000001),95,,KWST,Westerly,Washington County,Rhode Island
+WTA,Indian/Antananarivo,Tambohorano,WTA,MG,POINT (43.9728012 -17.4761009),36,,FMMU,Maintirano,,Melaky
+WVB,Africa/Windhoek,Rooikop Airport,WVB,NA,POINT (14.517222 -22.978611),29,,FYWB,Walvis Bay,,Erongo
+WVN,Europe/Berlin,Wilhelmshaven,WVN,DE,POINT (8.116667 53.533333),36,,EDWI,Wilhelmshaven,,Lower Saxony
+WWA,America/Anchorage,Wasilla,WWA,US,POINT (-149.43333 61.583332),331,,PAWS,Wasilla,Matanuska-Susitna Borough,Alaska
+WTB,Australia/Queensland,Toowoomba Wellcamp Airport,TWB,AU,POINT (151.79365149879573 -27.558470149999998),1459,http://www.wellcamp.com.au,YBWW,Westbrook,Toowoomba,Queensland
+WWP,America/Anchorage,Whale Pass,WWP,US,POINT (-133.83333 56.666668),433,,"",Petersburg,Wrangell-Petersburg Census Area,Alaska
+WWY,Australia/Sydney,West Wyalong,WWY,AU,POINT (147.25 -33.933334),751,,YWWL,West Wyalong,Bland,New South Wales
+WTD,America/Nassau,West End,WTD,BS,POINT (-78.9834305553414 26.6883433),32,,MYGW,West End,,West Grand Bahama
+WYE,Africa/Freetown,Yengema,WYE,SL,POINT (-11.05025123743889 8.6176481),1259,,GFYE,Motema,,Eastern Province
+WTE,Pacific/Majuro,Wotje Island,WTE,MH,POINT (170.2378303572175 9.4592211),49,,"",Wotje,,Wotje Atoll
+WTO,Pacific/Majuro,Wotho Island,WTO,MH,POINT (166.0027914 10.1737116),42,,"",Wotho,,Wotho Atoll
+WUS,Asia/Shanghai,Wuyishan Airport,WUS,CN,POINT (117.99996959399512 27.70298965),620,,ZSWY,Xingtian,,Fujian
+WZQ,Asia/Shanghai,Urad Middle Banner,WZQ,CN,POINT (108.5345 41.4596),3937,,"",Haliut,,Inner Mongolia
+WZY,America/Nassau,Paradise Island Seaplane Base,NAS,BS,POINT (-77.327225 25.0825),29,,,Nassau,,New Providence
+XAA,Asia/Yerevan,Yerevan Stadium,EVN,AM,POINT (44.5011413 40.1762089),3097,,,Yerevan,,Yerevan
+XAL,America/Hermosillo,Alamos,XAL,MX,POINT (-108.933334 27.016666),1312,,"",Alamos,,Sonora
+XAP,America/Sao_Paulo,Chapeco Airport,XAP,BR,POINT (-52.629723 -27.088612),2146,,SBCH,Chapeco,Chapeco,Santa Catarina
+XAY,Asia/Vientiane,Xayabury,XAY,LA,POINT (104.71667 18.666668),2791,,,Con Cuong,,Nghe An
+XBL,Africa/Addis_Ababa,Buno Bedelle,XBL,ET,POINT (36.333332 8.45),6335,,,Bedele,,Oromiya
+XBN,Pacific/Port_Moresby,Biniguni,XBN,PG,POINT (149.3 -9.633333),190,,AYBZ,Alotau,,Milne Bay
+XCH,Indian/Christmas,Christmas Island Airport,XCH,CX,POINT (105.666664 -10.5),916,http://www.christmasislandairport.com/,YPXM,Flying Fish Cove,,
+XBO,Africa/Ouagadougou,Boulsa,XBO,BF,POINT (-0.566667 12.65),1013,,DFEA,Boulsa,Province du Namentenga,Centre-Nord
+XBR,America/Toronto,Brockville,XBR,CA,POINT (-75.683334 44.583332),239,,CNL3,Brockville,,Ontario
+XAU,America/Cayenne,Saul,XAU,GF,POINT (-53.20361524516272 3.6151981),656,,SOOS,Camopi,Guyane,Guyane
+XAR,Africa/Ouagadougou,Aribinda,XAR,BF,POINT (-0.883 14.217),1122,,DFOY,Deou,Province de l'Oudalan,Sahel
+XBW,America/Montreal,Killineq,XBW,CA,POINT (-80.82 42.65),666,,,Aylmer,,Ontario
+XCM,America/Toronto,Chatham,XCM,CA,POINT (-82.183334 42.4),616,,CYCK,Walpole Island,Lambton County,Ontario
+XEN,Asia/Shanghai,Xingcheng,XEN,CN,POINT (118.61667 40.733334),30,,ZYXC,Kuancheng,,Hebei
+XCN,Asia/Manila,Coron Airport,XCN,PH,POINT (120.2 12.016667),49,,,Coron,Province of Palawan,Mimaropa
+XCO,Australia/Melbourne,Colac,XCO,AU,POINT (143.58333 -38.35),449,,YOLA,Colac,Colac-Otway,Victoria
+XCR,Europe/Paris,Chalons Vatry Airport,PAR,FR,POINT (4.201111 48.767776),538,,LFOK,Mailly-le-Camp,Departement de l'Aube,Champagne-Ardenne
+WYS,America/Denver,Yellowstone Airport,WYS,US,POINT (-111.11688394311122 44.6889409),6646,,KWYS,West Yellowstone,Gallatin County,Montana
+WZA,Africa/Accra,Wa Airport,WZA,GH,POINT (-2.5078313317209595 10.08289355),1003,,,Wa,,Upper West
+XAI,Asia/Shanghai,Xinyang Minggang Airport,XAI,CN,POINT (114.07562648032489 32.5401692),285,,ZHXY,Minggang,,Henan Sheng
+XES,America/Chicago,Lake Geneva Aire Estates Airport,XES,US,POINT (-88.428055 42.627777),1003,,"",Lake Geneva,Walworth County,Wisconsin
+XFW,Europe/Berlin,Hamburg Finkenwerder Airport,HAM,DE,POINT (9.836945 52.535835),23,,EDHI,Isernhagen Farster Bauerschaft,,Lower Saxony
+XEX,Europe/Paris,Aerogare,PAR,FR,POINT (2.65 48.833332),324,,,Torcy,Departement de Seine-et-Marne,Ile-de-France
+XFZ,America/Montreal,Charny,YQB,CA,POINT (-71.25 46.716667),229,,,Breakeyville,Chaudiere-Appalaches,Quebec
+XGA,Africa/Ouagadougou,Gaoua,XGA,BF,POINT (-3.183333 10.333333),1026,,DFOG,Gaoua,Province du Poni,Southwest
+XIG,America/Belem,Xinguara,XIG,BR,POINT (-48.8 -6.966667),810,,SWSX,Sao Geraldo do Araguaia,Sao Geraldo Do Araguaia,Para
+XIJ,Asia/Kuwait,Ahmed Al Jaber,XIJ,KW,POINT (47.791900634799994 28.9347991943),409,,OKAJ,Al Ahmadi,,Al Ahmadi
+XIN,Asia/Shanghai,Xingning,XIN,CN,POINT (116 24),0,,ZGXN,Shejiang,,Guangdong
+XIQ,America/Godthab,Harbour,XIQ,GL,POINT (-51 69),0,,,Ilulissat,,Qaasuitsup
+XFN,Asia/Shanghai,Xiangyang Airport,XFN,CN,POINT (112.2893745002323 32.151361050000006),0,,ZHXF,Shuanggou,,Hubei
+XJD,Asia/Qatar,Al Udeid AB,XJD,QA,POINT (51.3149986267 25.1173000336),130,,OTBH,Ar Rayyan,,Baladiyat ar Rayyan
+XGN,Africa/Luanda,Xangongo,XGN,AO,POINT (14.9660327 -16.7516871),3635,,FNXA,Outapi,,Omusati
+XIC,Asia/Shanghai,Xichang Airport,XIC,CN,POINT (102.1845480169798 27.98876455),5112,,ZUXC,Xichang,,Sichuan
+XIE,Asia/Vientiane,Xienglom,XIE,LA,POINT (100.8121238 19.6199582),1830,,VLXL,Chaloem Phra Kiat,,Nan
+XHN,Europe/Brussels,"Guillemins, Raiway Stn",LGG,BE,POINT (5.56666 50.63333),249,,,Liege,Province de Liege,Wallonia
+XJH,Asia/Hong_Kong,Hong Kong Harbour,HKG,HK,POINT (114.2033843 22.2478599),666,,,Wan Chai,,Wanchai
+XJM,Asia/Karachi,Mangla Airport,XJM,PK,POINT (73.638333 33.05),826,,OPMA,Jhelum,,Punjab
+XKH,Asia/Vientiane,Xieng Khouang Airport,XKH,LA,POINT (103.36667 19.3),3638,,VLXK,Muang Phonsavan,,Xiangkhoang
+XLO,Asia/Ho_Chi_Minh,Long Xuyen,XLO,VN,POINT (105.46667 10.333333),36,,"",Lap Vo,,Dong Thap
+XKA,Africa/Ouagadougou,Kantchari,XKA,BF,POINT (1.4932335 12.4640118),879,,DFEL,Diapaga,Province de la Tapoa,Est
+XKY,Africa/Ouagadougou,Kaya,XKY,BF,POINT (-1.1002443 13.0774092),984,,DFCA,Kaya,Province du Sanmatenga,Centre-Nord
+XLU,Africa/Ouagadougou,Leo,XLU,BF,POINT (-2.1 11.1),1141,,DFCL,Leo,Province de la Sissili,Centre-Ouest
+XLW,Europe/Berlin,Lemwerder,XLW,DE,POINT (8.6 53.166668),29,,EDWD,Lemwerder,,Lower Saxony
+XNH,Asia/Baghdad,Nasiriyah Airport,XNH,IQ,POINT (46.0925 30.939722),29,,ORTL,An Nasiriyah,,Dhi Qar
+XNT,Asia/Shanghai,Xingtai,XNT,CN,POINT (114.5 37.1),280,,ZBXT,Xingtai,,Hebei
+XNY,America/New_York,"39th Street Ferry",NYC,US,POINT (-74.003 40.76),0,,,Weehawken,Hudson County,New Jersey
+XPU,America/Anchorage,West Kuparuk,XPU,US,POINT (-149.33333 70.333336),0,,,Prudhoe Bay,North Slope Borough,Alaska
+XPZ,Europe/Paris,Harbour,LTT,FR,POINT (6.633333 43.283333),0,,,Saint-Tropez,Departement du Var,Provence-Alpes-Cote d'Azur
+XQP,America/Costa_Rica,Quepos Airport,XQP,CR,POINT (-84.13335 9.439146),85,,MRQP,Quepos,,Puntarenas
+XPA,Africa/Ouagadougou,Pama,XPA,BF,POINT (0.7 11.25),666,,DFEP,Pama,Province de la Kompienga,Est
+XRH,Australia/Sydney,Richmond AFB,XRH,AU,POINT (150.76889 -33.6),67,,YSRI,Richmond,Hawkesbury,New South Wales
+XRQ,Asia/Shanghai,Xinbarag Youqi Baogede Airport,XRQ,CN,POINT (116.93779 48.57615),1798,,"",Hulun,,Inner Mongolia
+XSC,America/Grand_Turk,International,XSC,TC,POINT (-71.529724 21.515833),6,,MBSC,Cockburn Town,,
+XSD,America/Los_Angeles,Test Range,TPH,US,POINT (-117.23333 38.033333),5549,,KTNX,Tonopah,Nye County,Nevada
+XPL,America/Tegucigalpa,Coronel Enrique Soto Cano AB,XPL,HN,POINT (-87.61667 14.416667),2024,,MHSC,Comayagua,,Comayagua
+XNU,Africa/Ouagadougou,Nouna,XNU,BF,POINT (-3.8607879 12.7433307),886,,DFON,Nouna,Province de la Kossi,Boucle du Mouhoun
+XQU,America/Vancouver,Qualicum,XQU,CA,POINT (-124.39209943796178 49.337536549999996),191,http://www.qualicumbeach.com/cms.asp?wpID=437,CAT4,Parksville,Regional District of Nanaimo,British Columbia
+XPR,America/Denver,Pine Ridge,XPR,US,POINT (-102.51667 43.016666),3254,,KIEN,Pine Ridge,Shannon County,South Dakota
+XTO,Australia/Brisbane,Taroom,XTO,AU,POINT (149.8 -25.433332),675,,YTAM,Taroom,Banana,Queensland
+XVL,Asia/Ho_Chi_Minh,Vinh Long,XVL,VN,POINT (105.95 10.25),27,,"",Vinh Long,,Vinh Long
+XUZ,Asia/Shanghai,Xuzhou Guanyin Airport,XUZ,CN,POINT (117.55572772215724 34.058505499999995),0,,ZSXZ,Suicheng,,Jiangsu Sheng
+XTR,Australia/Brisbane,Tara,XTR,AU,POINT (150.46666 -27.283333),1000,,YTAA,Chinchilla,Western Downs,Queensland
+XWZ,Europe/Stockholm,Nykoping,XWZ,SE,POINT (17.0085329 58.7531378),0,,,Nykoping,Nykopings Kommun,Soedermanland
+XTT,Europe/Paris,Etoile,PAR,FR,POINT (2.3522219 48.856614),157,,,Paris,Paris,Ile-de-France
+XYR,Pacific/Port_Moresby,Yellow River,XYR,PG,POINT (141.78334 -3.883333),190,,AYED,Ubrub,,Papua
+XZA,Africa/Ouagadougou,Zabre,XZA,BF,POINT (-1 11.133333),886,,DFEZ,Po,Nahouri Province,Centre-Sud
+XWA,America/Toronto,Williston Basin International Airport,XWA,CA,POINT (-103.74677072876773 48.260548400000005),2344,http://www.xwaproject.com/,KXWA,Williston,Williams County,North Dakota
+XXK,Europe/Stockholm,Katrineholm,XXK,SE,POINT (16.2222304 59.0167742),0,,,Katrineholm,Katrineholms Kommun,Soedermanland
+XYA,Pacific/Guadalcanal,Yandina,XYA,SB,POINT (159.2190933 -9.0932316),60,,AGGY,Honiara,,Guadalcanal
+XYE,Asia/Rangoon,Ye,XYE,MM,POINT (97.85 15.25),32,,VYYE,Sangkhla Buri,,Kanchanaburi
+YEI,Europe/Istanbul,Yenisehir Airport,YEI,TR,POINT (29.56209181082114 40.25584005),764,,LTBR,Hamzabey,,Bursa
+YAG,America/Winnipeg,Fort Frances Municipal Airport,YAG,CA,POINT (-93.44405183970974 48.65356595),1135,,CYAG,International Falls,Koochiching County,Minnesota
+YAM,America/Toronto,Sault Ste. Marie Airport,YAM,CA,POINT (-84.50019623151833 46.484818000000004),597,http://www.saultairport.com/,CYAM,Sault Ste. Marie,Chippewa County,Michigan
+YAO,Africa/Douala,Yaounde Airport,YAO,CM,POINT (11.521790801578737 3.8360955),2398,,FKKY,Yaounde,,Centre
+YAF,America/Montreal,Asbestos Hill,YAF,CA,POINT (-71.95 45.766666),643,,,Asbestos,Estrie,Quebec
+YAP,Pacific/Chuuk,Yap International Airport,YAP,FM,POINT (138.08313625016342 9.49898575),108,,PTYA,Colonia,Weloy Municipality,Yap
+YAI,America/Santiago,Chillan,YAI,CL,POINT (-72.11667 -36.6),367,,SCCH,Chillan,Provincia de Nuble,Biobio
+YBO,America/Vancouver,Bob Quinn Lake,YBO,CA,POINT (-130.2494541105189 56.966727250000005),1870,,CBW4,Ketchikan,Ketchikan Gateway Borough,Alaska
+YBP,Asia/Shanghai,Yibin Caiba Airport,YBP,CN,POINT (104.54960581879803 28.8015702),948,,ZUYB,Yibin,,Sichuan
+YBR,America/Winnipeg,Brandon Municipal Airport,YBR,CA,POINT (-99.95229733417132 49.907492000000005),1312,,CYBR,Brandon,,Manitoba
+YAN,Africa/Lubumbashi,Yangambi,YAN,CD,POINT (24.4 0.783333),1394,,FZIR,Yangambi,Sous-Region de la Tshopo,Eastern Province
+YAS,Pacific/Fiji,Yasawa Island,YAS,FJ,POINT (177.54566412061018 -16.759369999999997),26,,NFSW,Ba,,Western
+YAR,America/Montreal,Lagrande 3,YAR,CA,POINT (-76.2 53.55),629,,CYAD,Chapais,Nord-du-Quebec,Quebec
+YAW,America/Halifax,Shearwater,YHZ,CA,POINT (-63.61667 44.86667),104,,,Dartmouth,,Nova Scotia
+YAY,America/St_Johns,St Anthony,YAY,CA,POINT (-55.583332 51.36667),0,,CYAY,Lewisporte,,Newfoundland and Labrador
+YBA,America/Edmonton,Banff,YBA,CA,POINT (-115.566666 51.166668),4609,,CYBA,Banff,,Alberta
+YBC,America/Montreal,Baie-Comeau Airport,YBC,CA,POINT (-68.26667 49.2),154,,CYBC,Baie-Comeau,Cote-Nord,Quebec
+YBD,America/Vancouver,New Westminster,YBD,CA,POINT (-122.9 49.216667),157,,,New Westminster,,British Columbia
+YBN,America/Toronto,Borden,YBN,CA,POINT (-63.783333 46.3),0,,,Summerside,,Prince Edward Island
+YCL,America/Moncton,Charlo,YCL,CA,POINT (-66.3302994 47.990799),132,,CYCL,Carleton-sur-Mer,Gaspesie-Iles-de-la-Madeleine,Quebec
+YCZ,America/Edmonton,Fairmont Hot Springs,YCZ,CA,POINT (-115.87288439005582 50.3280976),2661,,CYCZ,Invermere,,British Columbia
+YCG,America/Vancouver,Castlegar Airport,YCG,CA,POINT (-117.6330645059673 49.2957603),1617,,CYCG,Castlegar,,British Columbia
+YDQ,America/Dawson_Creek,Dawson Creek,YDQ,CA,POINT (-120.18246225853473 55.7414723),2148,,CYDQ,Dawson Creek,Peace River Regional District,British Columbia
+YCT,America/Edmonton,Coronation,YCT,CA,POINT (-111.44789331265046 52.0747079),2595,,CYCT,Hanna,,Alberta
+YCH,America/Moncton,Miramichi,YCH,CA,POINT (-65.4492035 47.0078011),85,,CYCH,Miramichi,Northumberland County,New Brunswick
+YBY,America/Edmonton,Bonnyville,YBY,CA,POINT (-110.74275356469474 54.30508195),1837,http://town.bonnyville.ab.ca/livingin/airport/index.html,CYBF,Bonnyville,,Alberta
+YCC,America/Toronto,Regional,YCC,CA,POINT (-74.566666 45.1),183,,CYCC,Cornwall,,Ontario
+YCE,America/Toronto,Centralia,YCE,CA,POINT (-81.48333 43.283333),839,,CYCE,South Huron,,Ontario
+YCU,Asia/Shanghai,Yuncheng Airport,YCU,CN,POINT (110.993 35.018),1242,,ZBYC,Yuncheng,,Shanxi Sheng
+YCW,America/Vancouver,Chilliwack Municipalcipal Airport,YCW,CA,POINT (-121.9 49.166668),32,,CYCW,Chilliwack,Fraser Valley Regional District,British Columbia
+YDC,America/Edmonton,Industrial Airport,YDC,CA,POINT (-114.96667 53.2),2776,,CER3,Drayton Valley,,Alberta
+YDG,America/Halifax,Digby,YDG,CA,POINT (-65.76667 44.61667),499,,CYID,Digby,,Nova Scotia
+YDN,America/Winnipeg,Dauphin,YDN,CA,POINT (-100.05 51.1),999,,CYDN,Dauphin,,Manitoba
+YDO,America/Montreal,St Methode,YDO,CA,POINT (-72.23333 48.86667),372,,CYDO,Dolbeau-Mistassini,Saguenay/Lac-Saint-Jean,Quebec
+YDR,America/Regina,Broadview,YDR,CA,POINT (-102.583336 50.36667),0,,,Esterhazy,,Saskatchewan
+YEB,America/Toronto,Bar River,YEB,CA,POINT (-84.09847131915903 46.417639300000005),591,,CPF2,Sault Ste. Marie,Algoma,Ontario
+YEC,Asia/Seoul,Yecheon,YEC,KR,POINT (128.353105602085 36.628844799999996),354,,RKTY,Mungyeong,,Gyeongsangbuk-do
+YEG,America/Edmonton,Edmonton International Airport,YEA,CA,POINT (-113.5838087 53.3072596),2373,http://www.edmontonairports.com/,CYEG,Leduc,,Alberta
+YEQ,Pacific/Port_Moresby,Yenkis,YEQ,PG,POINT (143.9173608942616 -5.10940055),3692,,AYYK,Wabag,,Enga
+YET,America/Edmonton,Edson,YET,CA,POINT (-116.46673278027205 53.57913155),3043,,CYET,Edson,,Alberta
+YEH,Asia/Shanghai,Yinchuan Helanshan Airport,YEH,CN,POINT (106.0094 38.4822),3770,,"",Yinchuan,,Ningxia Huizu Zizhiqu
+YFC,America/Moncton,Fredericton International Airport,YFC,CA,POINT (-66.53510204365679 45.87018365),68,,CYFC,Oromocto,,New Brunswick
+YGC,America/Edmonton,Grande Cache,YGC,CA,POINT (-118.87270502477494 53.91684925),4117,,CEQ5,Grande Cache,,Alberta
+YEM,America/Toronto,East Manitoulin,YEM,CA,POINT (-81.858055 45.842777),869,,CYEM,Little Current,,Ontario
+YEN,America/Regina,Estevan,YEN,CA,POINT (-102.98333 49.166668),1905,,CYEN,Estevan,,Saskatchewan
+YEO,Europe/London,Yeovilton,YEO,GB,POINT (-2.55 51.016666),75,,EGDY,Sherborne,Dorset,England
+YGJ,Asia/Tokyo,Miho Airport,YGJ,JP,POINT (133.2428347112177 35.4933476),20,,RJOH,Sakaiminato,,Shimane
+YES,Asia/Tehran,Yasouj,YES,IR,POINT (51.55276 30.699774),5939,,OISY,Yasuj,,Kohgiluyeh va Buyer Ahmad
+YFE,America/Montreal,Forestville,YFE,CA,POINT (-69.0880375 48.7455867),293,,CYFE,Forestville,Cote-Nord,Quebec
+YEY,America/Montreal,Amos,YEY,CA,POINT (-78.25 48.552223),1068,,CYEY,Amos,Abitibi-Temiscamingue,Quebec
+YGG,America/Vancouver,Ganges Harbor,YGG,CA,POINT (-123.5 48.85),0,,CAX6,North Cowichan,,British Columbia
+YGP,America/Montreal,Michel-Pouliot Gaspe Airport,YGP,CA,POINT (-64.48333 48.766666),112,,CYGP,Gaspe,Gaspesie-Iles-de-la-Madeleine,Quebec
+YGR,America/Halifax,Iles De La Madeleine,YGR,CA,POINT (-61.9 47.36667),35,,CYGR,Souris,,Prince Edward Island
+YHB,America/Regina,Hudson Bay,YHB,CA,POINT (-102.416664 52.86667),1175,,CYHB,Hudson Bay,,Saskatchewan
+YHZ,America/Halifax,Halifax Stanfield International Airport,YHZ,CA,POINT (-63.512633 44.8767923),477,http://www.hiaa.ca/,CYHZ,Cole Harbour,,Nova Scotia
+YIA,Asia/Jakarta,Yogyakarta International Airport,YIA,ID,POINT (110.05119439547553 -7.89983735),24,,WAHI,Srandakan,,Daerah Istimewa Yogyakarta
+YHE,America/Vancouver,Hope,YHE,CA,POINT (-121.416664 49.416668),128,,CYHE,Hope,,British Columbia
+YIC,Asia/Shanghai,Yichun Mingyueshan Airport,YIC,CN,POINT (114.30823201252983 27.802212400000002),430,,ZSYC,Hutian,,Jiangxi Sheng
+YIH,Asia/Shanghai,Yichang Sanxia Airport,YIH,CN,POINT (111.48149557919456 30.5526031),673,http://www.sanxiaairport.com/,ZHYC,Yunchi,,Hubei
+YIN,Asia/Shanghai,Yining Airport,YIN,CN,POINT (81.32869644640027 43.9564347),0,,ZWYN,Dadamtu,,Xinjiang Uygur Zizhiqu
+YIP,America/Detroit,Willow Run Airport,DTT,US,POINT (-83.52605021746999 42.23492795),716,,KYIP,Belleville,Wayne County,Michigan
+YIW,Asia/Shanghai,Yiwu Airport,YIW,CN,POINT (120.02868898781665 29.342204799999998),262,,ZSYW,Yiwu,,Zhejiang Sheng
+YHM,America/Toronto,Hamilton Airport,YTO,CA,POINT (-79.92631 43.16138),780,http://www.flyhi.ca/,CYHM,Ancaster,,Ontario
+YJA,America/Edmonton,Jasper Airport,YJA,CA,POINT (-118.0612726 52.9972169),3350,,CYJA,Jasper Park Lodge,,Alberta
+YHT,America/Whitehorse,Haines Junction,YHT,CA,POINT (-137.5 60.75),2150,,CYHT,Haines Junction,,Yukon
+YIE,Asia/Shanghai,Arxan Yiershi Airport,YIE,CN,POINT (119.910835 47.31),2925,,ZBES,Wenquan,,Inner Mongolia
+YWN,America/Toronto,Winisk,YWN,CA,POINT (-85.11667 55.25),0,,,Hearst,,Ontario
+YJN,America/Montreal,St Jean,YJN,CA,POINT (-73.333336 45.333332),136,,CYJN,Saint-Jean-sur-Richelieu,Monteregie,Quebec
+YJP,America/Edmonton,Jasper-hinton,YJP,CA,POINT (-117.75306 53.319168),4006,,CEC4,Hinton,,Alberta
+YKC,America/Regina,Collins Bay,YKC,CA,POINT (-76.6 44.25),1341,,CYKC,Kingston,,Ontario
+YKD,America/Toronto,Township Airport,YKD,CA,POINT (-81.60667 44.20139),772,http://www.kincardineairport.com/,CYKM,Wingham,,Ontario
+YKI,America/Winnipeg,Kennosao Lake,YKI,CA,POINT (23.86 58.98),0,,,Uuemoisa,Ridala Parish,Laeaene
+YJS,Asia/Pyongyang,Samjiyon,YJS,KP,POINT (128.4101275564893 41.90659475),4547,,ZKSE,Changbai,,Jilin Sheng
+YJT,America/St_Johns,Stephenville,YJT,CA,POINT (-58.559355183351315 48.543099299999994),84,,CYJT,Stephenville,,Newfoundland and Labrador
+YKN,America/Chicago,Chan Gurney,YKN,US,POINT (-97.38639 42.916943),1306,http://www.cityofyankton.org/publicworks/airport/,KYKN,Yankton,Yankton County,South Dakota
+YKA,America/Vancouver,Kamloops Airport,YKA,CA,POINT (-120.4415990390244 50.7051481),1133,,CYKA,Kamloops,,British Columbia
+YKF,America/Toronto,Region of Waterloo International Airport,YKF,CA,POINT (-80.38573581162505 43.455854849999994),1055,http://www.waterlooairport.ca/,CYKF,Cambridge,,Ontario
+YKH,Asia/Shanghai,Yingkou Lanqi Airport,YKH,CN,POINT (122.36111194233801 40.54587515),0,,ZYYK,Qingshiling,,Liaoning
+YKX,America/Toronto,Kirkland Lake,YKX,CA,POINT (-80.03333 48.15),1157,,CYKX,Kirkland Lake,,Ontario
+YKY,America/Regina,Kindersley,YKY,CA,POINT (-109.166664 51.45),2277,,CYKY,Kindersley,,Saskatchewan
+YKZ,America/Toronto,Buttonville Municipalcipal,YTO,CA,POINT (-79.36667 43.86667),650,http://www.torontoairways.com/,CYKZ,Richmond Hill,York,Ontario
+YLA,America/Vancouver,Langara,YLA,CA,POINT (-133.01666 54.233334),0,,,Craig,Annette Island Reserve,Alaska
+YLB,America/Edmonton,Lac Biche,YLB,CA,POINT (-112.01667 54.766666),1884,,CYLB,Lac La Biche,,Alberta
+YKM,America/Los_Angeles,Yakima Air Terminal,YKM,US,POINT (-120.53679819122016 46.566810149999995),1099,,KYKM,Yakima,Yakima County,Washington
+YKO,Europe/Istanbul,Hakkari–Yüksekova Airport,YKO,TR,POINT (44.23310235139638 37.551828900000004),6400,,LTCW,Yuksekova,,Hakkari
+YKS,Asia/Yakutsk,Yakutsk Airport,YKS,RU,POINT (129.76969577334057 62.091462500000006),325,,UEEE,Markha,,Sakha
+YLD,America/Toronto,Chapleau,YLD,CA,POINT (-83.3549858 47.8209323),1470,,CYLD,Thessalon,,Ontario
+YLG,Australia/Perth,Yalgoo,YLG,AU,POINT (116.68231759482914 -28.354116949999998),0,,YYAL,Melville,Yalgoo,Western Australia
+YLI,Europe/Helsinki,Ylivieska,YLI,FI,POINT (24.7213378 64.054201),252,"http://www.ylivieska.fi/alltypes.asp?d_type=5&menu_id=17643&menupath=16922,17643",EFYL,Ylivieska,Ylivieska,Northern Ostrobothnia
+YLN,Asia/Shanghai,Yilan,YLN,CN,POINT (129.5 46.38333),0,,,Yinglan,,Heilongjiang Sheng
+YLO,America/Winnipeg,Shilo,YLO,CA,POINT (-99.638336 49.781666),0,,,Carberry,,Manitoba
+YLK,America/Toronto,Lake Simcoe Regional,YLK,CA,POINT (-79.5460696 44.4841513),972,http://www.lakesimcoeairport.com/,CYLS,Barrie,,Ontario
+YLQ,America/Montreal,La Tuque,YLQ,CA,POINT (-72.833336 47.5),548,,CYLQ,La Tuque,Mauricie,Quebec
+YLL,America/Edmonton,Lloydminster,YLL,CA,POINT (-110.0726685775977 53.31182105),2193,,CYLL,Lloydminster,,Saskatchewan
+YLT,America/Pangnirtung,Alert,YLT,CA,POINT (-62.272470382524084 82.51855470000001),100,,CYLT,Upernavik,,Qaasuitsup
+YLV,Asia/Baku,Yevlakh Airport,YLV,AZ,POINT (47.1460404 40.6264779),49,,UBEE,Yevlakh,,Yevlax City
+YLW,America/Vancouver,Kelowna International Airport,YLW,CA,POINT (-119.37954941396475 49.956703700000006),1421,http://www.kelowna.ca/CM/Page68.aspx,CYLW,Kelowna,,British Columbia
+YMB,America/Vancouver,Merritt,YMB,CA,POINT (-120.75 50.11667),2080,,CAD5,Merritt,,British Columbia
+YLY,America/Vancouver,Langley Regional,YLY,CA,POINT (-122.62808976800964 49.100854049999995),34,,CYNJ,Langley,,British Columbia
+YME,America/Montreal,Matane,YME,CA,POINT (-67.51667 48.833332),102,,CYME,Matane,Bas-Saint-Laurent,Quebec
+YMF,America/Vancouver,Montagne Harbor,YMF,CA,POINT (-123.2 48.816666),0,,,Point Roberts,Whatcom County,Washington
+YMK,Asia/Yekaterinburg,Mys-Kamenny,YMK,RU,POINT (73.59914344849958 68.46217225000001),98,,USDK,Mys-Kamennyy,,Yamalo-Nenetskiy Avtonomnyy Okrug
+YMM,America/Edmonton,Fort McMurray International Airport,YMM,CA,POINT (-111.22838956157571 56.65179285),1211,,CYMM,Fort McMurray,,Alberta
+YMJ,America/Regina,Moose Jaw / Air Vice Marshal C. M. Mcewen Airport,YMJ,CA,POINT (-105.53333 50.38333),1892,,CYMJ,Moose Jaw,,Saskatchewan
+YML,America/Montreal,Charlevoix,YML,CA,POINT (-70.166664 47.65),977,,CYML,La Malbaie,Capitale-Nationale,Quebec
+YMO,America/Toronto,Moosonee,YMO,CA,POINT (-80.6106136870039 51.29122475),30,,CYMO,Iroquois Falls,,Ontario
+YMV,America/Iqaluit,Mary River,YMV,CA,POINT (-79.3448993 71.3224319),584,,"",Clyde River,,Nunavut
+YNB,Asia/Riyadh,Yanbu Airport,YNB,SA,POINT (38.0626738365901 24.148030149999997),26,https://gaca.gov.sa/web/en-gb/airport/prince-abdulmohsin-bin-abdulaziz-airport,OEYN,Yanbu` al Bahr,,Al Madinah al Munawwarah
+YMT,America/Montreal,Chibougamau Airport,YMT,CA,POINT (-74.36667 49.916668),1270,,CYMT,Chibougamau,Nord-du-Quebec,Quebec
+YNG,America/New_York,Youngstown,YNG,US,POINT (-80.67497084511017 41.26073745),1192,,KYNG,Howland Center,Trumbull County,Ohio
+YMW,America/Montreal,Maniwaki,YMW,CA,POINT (-75.96667 46.38333),656,,CYMW,Maniwaki,Outaouais,Quebec
+YNZ,Asia/Shanghai,Yancheng Nanyang International Airport,YNZ,CN,POINT (120.20320242554347 33.428409349999995),0,,ZSYN,Yulong,,Jiangsu Sheng
+YMI,America/Winnipeg,Minaki,YMI,CA,POINT (-94.70090530242254 49.97063745),0,,,Warroad,Roseau County,Minnesota
+YMS,America/Lima,Yurimaguas,YMS,PE,POINT (-76.11400054301723 -5.89407265),587,,SPMS,Yurimaguas,Provincia de Alto Amazonas,Loreto
+YMX,America/Montreal,Mirabel International Airport,YMQ,CA,POINT (-74.0275252 45.6825019),270,,CYMX,Mirabel,Laurentides,Quebec
+YNH,America/Edmonton,Hudson Hope,YNH,CA,POINT (-121.9 56),2220,,CYNH,Chetwynd,,British Columbia
+YNI,America/Montreal,Nitchequon,YNI,CA,POINT (-70.96667 53.166668),0,,,Fermont,Cote-Nord,Quebec
+YNS,America/Montreal,Nemiscau Airport,YNS,CA,POINT (-76.74167 49.74167),802,,CYHH,Lebel-sur-Quevillon,Nord-du-Quebec,Quebec
+YNT,Asia/Shanghai,Yantai Laishan International Airport,YNT,CN,POINT (121.3711 37.407326),154,http://www.ytairport.com.cn/,ZSYT,Laishan,,Shandong Sheng
+YNY,Asia/Seoul,Yangyang Airport,YNY,KR,POINT (128.6 38.066666),241,,RKNY,Sokcho,,Gangwon-do
+YOD,America/Edmonton,Cold Lake,YOD,CA,POINT (-110.25 54.466667),1775,,CYOD,Cold Lake,,Alberta
+YOE,America/Edmonton,Falher,YOE,CA,POINT (-117.25 55.733334),1949,,CFM4,Falher,,Alberta
+YOL,Africa/Lagos,Yola Airport,YOL,NG,POINT (12.431171311028873 9.25639295),599,http://www.faannigeria.org/nigeria-airport.php?airport=16,DNYO,Jimeta,,Adamawa
+YON,Asia/Thimphu,Yongphulla Airport,YON,BT,POINT (91.51530783849674 27.2559902),9000,,VQTY,Trashigang,,Tashigang
+YOO,America/Toronto,Oshawa,QWA,CA,POINT (-78.8950068 43.9227762),460,http://www.oshawa-airport.com/,CYOO,Oshawa,,Ontario
+YOK,Asia/Tokyo,Yokohama,YOK,JP,POINT (139.46666 35.466667),0,,,Minami-rinkan,,Kanagawa
+YOP,America/Edmonton,Rainbow Lake,YOP,CA,POINT (-119.40651632509058 58.490890300000004),1759,,CYOP,High Level,,Alberta
+YOT,Asia/Jerusalem,Yotvata,YOT,IL,POINT (35.0669918 29.8987599),249,,LLYT,Al Quwayrah,,Ma'an
+YOY,America/Montreal,Valcartier,YOY,CA,POINT (-72 45),0,,,Newport,Orleans County,Vermont
+YPA,America/Regina,Glass Field,YPA,CA,POINT (-105.675088 53.2166982),1405,,CYPA,Prince Albert,,Saskatchewan
+YPE,America/Edmonton,Peace River,YPE,CA,POINT (-117.45390176565917 56.225776100000004),1873,,CYPE,Peace River,,Alberta
+YPD,America/Toronto,Parry Sound,YPD,CA,POINT (-79.916664 45.416668),832,http://www.seguin.ca/en/municipalairport.asp,CNK4,Parry Sound,Parry Sound District,Ontario
+YQA,America/Toronto,Muskoka,YQA,CA,POINT (-79.30674035378686 44.9754065),925,,CYQA,Bracebridge,,Ontario
+YXZ,America/Toronto,Wawa Airport,YXZ,CA,POINT (-84.78941127387685 47.9641218),942,,CYXZ,Hornepayne,Algoma,Ontario
+YQB,America/Montreal,Quebec City Jean Lesage International Airport,YQB,CA,POINT (-71.38577821056776 46.792174849999995),244,http://www.aeroportdequebec.com/,CYQB,L'Ancienne-Lorette,,Quebec
+YQF,America/Edmonton,Red Deer Regional Airport,YQF,CA,POINT (-113.88599970807856 52.18576525),2968,,CYQF,Penhold,,Alberta
+YQH,America/Whitehorse,Watson Lake,YQH,CA,POINT (-128.81643855172976 60.11951655),2255,,CYQH,Watson Lake,,Yukon
+YQI,America/Halifax,Yarmouth,YQI,CA,POINT (-66.08582716371048 43.8244588),141,,CYQI,Yarmouth,,Nova Scotia
+YQK,America/Winnipeg,Kenora Airport,YQK,CA,POINT (-94.3622078 49.7896669),1332,,CYQK,Baudette,Lake of the Woods County,Minnesota
+YQL,America/Edmonton,Lethbridge Airport,YQL,CA,POINT (-112.79092858608405 49.629112),3048,,CYQL,Lethbridge,,Alberta
+YOC,America/Whitehorse,Old Crow,YOC,CA,POINT (-139.849274 67.5673747),824,,CYOC,Dawson City,,Yukon
+YPP,America/Yellowknife,Pine Point,YPP,CA,POINT (-114.85 60.85),0,,,Hay River,,Northwest Territories
+YPQ,America/Toronto,Peterborough,YPQ,CA,POINT (-78.316666 44.3),628,,CYPQ,Peterborough,,Ontario
+YPG,America/Winnipeg,Portage La Prairie,YPG,CA,POINT (-98.30544590302465 49.99481965),885,http://southport.ca/,CYPG,Portage la Prairie,,Manitoba
+YPW,America/Vancouver,Powell River,YPW,CA,POINT (-124.49884784745427 49.83348945),425,,CYPW,Powell River,Powell River Regional District,British Columbia
+YPT,America/Vancouver,Pender Harbor,YPT,CA,POINT (-123.98066 49.493492),0,,CAG8,Sechelt,Sunshine Coast Regional District,British Columbia
+YPZ,America/Vancouver,Burns Lake,YPZ,CA,POINT (-125.7568784 54.2102362),2343,,CYPZ,Burns Lake,,British Columbia
+YQD,America/Winnipeg,Clearwater,YQD,CA,POINT (-101.1 53.966667),887,,CYQD,The Pas,,Manitoba
+YQE,America/Vancouver,Kimberley,YQE,CA,POINT (-115.98333 49.666668),0,,,Kimberley,Regional District of East Kootenay,British Columbia
+YQG,America/Toronto,Windsor International Airport,YQG,CA,POINT (-82.96389 42.274166),622,,CYQG,Windsor,,Ontario
+YQS,America/Toronto,Pembroke Area Municipalcipal,YQS,CA,POINT (-81.2 42.783333),778,,CYQS,St. Thomas,,Ontario
+YQM,America/Moncton,Greater Moncton International Airport,YQM,CA,POINT (-64.67556069377879 46.11647835),232,https://cyqm.ca/,CYQM,Dieppe,,New Brunswick
+YQV,America/Regina,Yorkton,YQV,CA,POINT (-102.46667 51.216667),1635,,CYQV,Yorkton,,Saskatchewan
+YQY,America/Glace_Bay,Sydney Airport,YQY,CA,POINT (-60.05 46.166668),203,http://www.sydneyairport.ca/,CYQY,Glace Bay,,Nova Scotia
+YQQ,America/Vancouver,Comox Airport,YQQ,CA,POINT (-124.9076713 49.7059024),84,,CYQQ,Courtenay,,British Columbia
+YQR,America/Regina,Regina International Airport,YQR,CA,POINT (-104.66560618608906 50.4309977),1894,,CYQR,Regina,,Saskatchewan
+YRC,America/Vancouver,Refuge Cove SPB,YRC,CA,POINT (-71.05734 48.526764),0,,"",Saguenay,Saguenay/Lac-Saint-Jean,Quebec
+YQU,America/Edmonton,Grande Prairie Airport,YQU,CA,POINT (-118.87829242532925 55.1800502),2195,http://www.grandeprairieairport.com/,CYQU,Grande Prairie,,Alberta
+YQW,America/Regina,North Battleford,YQW,CA,POINT (-108.25243233738087 52.768967),1799,,CYQW,North Battleford,,Saskatchewan
+YQX,America/St_Johns,Gander International Airport,YQX,CA,POINT (-54.57370404301988 48.935634300000004),496,,CYQX,Gambo,,Newfoundland and Labrador
+YRI,America/Montreal,Riviere Du Loup,YRI,CA,POINT (-69.53333 47.833332),427,http://www.ville.riviere-du-loup.qc.ca/anglais/aeroport.php,CYRI,Riviere-du-Loup,Bas-Saint-Laurent,Quebec
+YQZ,America/Vancouver,Quesnel Airport,YQZ,CA,POINT (-122.5073650587199 53.0246193),1789,,CYQZ,Quesnel,,British Columbia
+YRM,America/Edmonton,Rocky Mountain House,YRM,CA,POINT (-114.916664 52.36667),3244,,CYRM,Rocky Mountain House,,Alberta
+YRQ,America/Montreal,Trois-Rivieres,YRQ,CA,POINT (-72.67815017616294 46.3567288),199,,CYRQ,Sainte-Catherine,,Quebec
+YRO,America/Toronto,Rockcliffe St,YOW,CA,POINT (-75.7 45.45),188,http://www.rfc.ca/,CYRO,Gatineau,Outaouais,Quebec
+YSL,America/Moncton,St Leonard,YSL,CA,POINT (-67.89345704431818 47.17880085),793,,CYSL,Saint-Leonard,Madawaska County,New Brunswick
+YSM,America/Yellowknife,Fort Smith Airport,YSM,CA,POINT (-111.96200473689623 60.0192725),671,,CYSM,Fort Smith,,Northwest Territories
+YSN,America/Vancouver,Salmon Arm,YSN,CA,POINT (-119.228996 50.6828003),1751,http://www.salmonarm.ca/index.aspx?nid=228,CZAM,Salmon Arm,,British Columbia
+YSA,America/Halifax,Sable Island,YSA,CA,POINT (-60 44),4,http://www.sableislandairport.com/Photo-Gallery-1.html,CSB2,Port Hawkesbury,,Nova Scotia
+YSB,America/Toronto,Sudbury Airport,YSB,CA,POINT (-80.79592 46.62296),1141,,CYSB,Greater Sudbury,,Ontario
+YSC,America/Montreal,Sherbrooke,YSC,CA,POINT (-71.9 45.416668),792,,CYSC,Sherbrooke,Estrie,Quebec
+YSD,America/Edmonton,Suffield,YSD,CA,POINT (-111.166664 50.2),0,,,Bow Island,,Alberta
+YRD,America/Vancouver,Dean River,YRD,CA,POINT (-126.96497259176871 52.82399555),62,,"",Houston,,British Columbia
+YRJ,America/Montreal,Roberval,YRJ,CA,POINT (-72.2656021 48.5200005),586,,CYRJ,Roberval,Saguenay/Lac-Saint-Jean,Quebec
+YSH,America/Toronto,Smith Falls,YSH,CA,POINT (-75.93959 44.94829),416,http://www.smithsfallsflyingclub.com/,CYSH,Smiths Falls,Lanark County,Ontario
+YRV,America/Vancouver,Revelstoke,YRV,CA,POINT (-118.18376908076137 50.9621846),1459,,CYRV,Revelstoke,,British Columbia
+YSJ,America/Moncton,Saint John Airport,YSJ,CA,POINT (-65.88597941149104 45.31381415),357,,CYSJ,Saint John,,New Brunswick
+YSQ,America/Vancouver,Spring Island,YSQ,CA,POINT (-1.78 59.45),459,,ZYSQ,Sandwick,Shetland Islands,Scotland
+YSS,America/Toronto,Slate Island,YSS,CA,POINT (151.1799 -33.932922),0,,,Mascot,Botany Bay,New South Wales
+YSU,America/Halifax,Summerside,YSU,CA,POINT (-57.983334 49),56,,CYSU,Corner Brook,,Newfoundland and Labrador
+YTS,America/Toronto,Timmins Victor M. Power Airport,YTS,CA,POINT (-81.37862174994194 48.57027225),967,http://portal.timmins.ca/portal/en/timmins/residents/airport,CYTS,Timmins,,Ontario
+YTT,America/Regina,Tisdale,YTT,CA,POINT (-104.06634 52.8394466),1525,,CJY3,Tisdale,,Saskatchewan
+YTY,Asia/Shanghai,Yangzhou Taizhou Airport,YTY,CN,POINT (119.71641345101672 32.5608476),7,http://www.yztzairport.net/,ZSYA,Dinggou,,Jiangsu Sheng
+YUB,America/Yellowknife,Tuktoyaktuk,YUB,CA,POINT (-133.01773322448315 69.4309915),15,,CYUB,Inuvik,,Northwest Territories
+YUL,America/Montreal,Montreal-Pierre Elliott Trudeau International Airport,YMQ,CA,POINT (-73.74257166095532 45.46873715),118,http://www.admtl.com/passager/Home.aspx,CYUL,Dorval,,Quebec
+YUM,America/Phoenix,Yuma International Airport,YUM,US,POINT (-114.5985167 32.6685246),213,,KNYL,Yuma,Yuma County,Arizona
+YUY,America/Montreal,Rouyn-Noranda Airport,YUY,CA,POINT (-78.8323492 48.2083786),988,,CYUY,Rouyn-Noranda,Abitibi-Temiscamingue,Quebec
+YVD,Pacific/Port_Moresby,Yeva,YVD,PG,POINT (146.18817001949634 -7.5493875),4510,,AYXE,Wau,Bulolo,Morobe
+YVE,America/Vancouver,Vernon Regional Airport,YVE,CA,POINT (-119.32845362575485 50.2465422),1140,,CYVK,Vernon,Regional District of North Okanagan,British Columbia
+YVG,America/Edmonton,Vermilion,YVG,CA,POINT (-110.8266663 53.3572817),2025,,CYVG,Vermilion,,Alberta
+YTJ,America/Toronto,Terrace Bay,YTJ,CA,POINT (-87.166664 48.75),0,,,Marathon,,Ontario
+YVO,America/Montreal,Val-d'Or Airport,YVO,CA,POINT (-77.7846334 48.0537795),1107,http://www.arvo.qc.ca/,CYVO,Val-d'Or,Abitibi-Temiscamingue,Quebec
+YVR,America/Vancouver,Vancouver International Airport,YVR,CA,POINT (-123.17986424460963 49.193044),14,http://www.yvr.ca/,CYVR,Richmond,,British Columbia
+YTM,America/Montreal,La Macaza,YTM,CA,POINT (-74.75528 46.515556),827,http://www.mtia.ca/,CYFJ,Riviere-Rouge,Laurentides,Quebec
+YTF,America/Montreal,Alma,YTF,CA,POINT (-71.6502761 48.5098133),445,,CYTF,Alma,Saguenay/Lac-Saint-Jean,Quebec
+YTP,America/Vancouver,Seaplane Base,YAZ,CA,POINT (-125.40806 49.154446),0,,CAB4,Ucluelet,Regional District of Alberni-Clayoquot,British Columbia
+YTG,America/Vancouver,Sullivan Bay,YTG,CA,POINT (-126.826895 50.8851419),0,,CAV5,Campbell River,,British Columbia
+YTR,America/Toronto,Trenton,YTR,CA,POINT (-77.583336 44.1),283,,CYTR,Quinte West,,Ontario
+YTU,America/Vancouver,Tasu,YTU,CA,POINT (-124.933334 49.1),0,,"",Port Alberni,,British Columbia
+YTZ,America/Toronto,Toronto City Centre Airport,YTO,CA,POINT (-79.39585 43.632023),252,http://www.torontoport.com/airport.aspx,CYTZ,Toronto,,Ontario
+YUA,Asia/Shanghai,Yuanmou,YUA,CN,POINT (101.916664 25.65),3810,,ZPYM,Yuanmou,,Yunnan
+YTX,America/Vancouver,Telegraph Creek,YTX,CA,POINT (-131.1289992 57.9124585),1100,,CBM5,Wrangell,City and Borough of Wrangell,Alaska
+YUE,Australia/Darwin,Yuendumu,YUE,AU,POINT (131.7819977 -22.2542),2205,,YYND,Alice Springs,Alice Springs,Northern Territory
+YVB,America/Montreal,Bonaventure,YVB,CA,POINT (-65.46021846014798 48.07118955),123,,CYVB,Bonaventure,Gaspesie-Iles-de-la-Madeleine,Quebec
+YVT,America/Regina,Buffalo Narrows,YVT,CA,POINT (-108.41638572509842 55.8418654),1423,,CYVT,Meadow Lake,,Saskatchewan
+YVA,Indian/Comoro,Iconi,YVA,KM,POINT (43.261112 -11.531944),33,,FMCN,Oussivo,,Grande Comore
+YVV,America/Toronto,Wiarton/Keppel Airport,YVV,CA,POINT (-81.166664 44.666668),729,http://wiartonairport.ca/,CYVV,Owen Sound,,Ontario
+YWG,America/Winnipeg,Winnipeg James Armstrong Richardson International Airport,YWG,CA,POINT (-97.2379281374448 49.91046085),783,http://www.waa.ca/,CYWG,Winnipeg,,Manitoba
+YWO,America/Yellowknife,Lupin,YWO,CA,POINT (-111.24983314553009 65.75816295),0,,,Kugluktuk,,Nunavut
+YWF,America/Halifax,Downtown Waterfront Heliport,YHZ,CA,POINT (-63.583332 44.63333),0,,,Halifax,,Nova Scotia
+YWP,America/Toronto,Webequie,YWP,CA,POINT (-87.37462162415397 52.95896385),685,,CYWP,Greenstone,,Ontario
+YXC,America/Edmonton,Canadian Rockies International Airport,YXC,CA,POINT (-115.78391098859873 49.612860850000004),3082,,CYXC,Cranbrook,,British Columbia
+YXE,America/Regina,Saskatoon International Airport,YXE,CA,POINT (-106.69161089220799 52.172371999999996),1653,,CYXE,Saskatoon,,Saskatchewan
+YXH,America/Edmonton,Medicine Hat Regional Airport,YXH,CA,POINT (-110.72105082680821 50.0185704),2352,,CYXH,Medicine Hat,,Alberta
+YWQ,America/Montreal,Chute-Des-Passes,YWQ,CA,POINT (-71.25389 49.887222),1310,,CTM3,Pont Rouge,,Quebec
+YXL,America/Winnipeg,Sioux Lookout Airport,YXL,CA,POINT (-91.9052963 50.1138992),1258,,CYXL,Dryden,,Ontario
+YXD,America/Edmonton,Edmonton City Centre (Blatchford Field) Airport,YEA,CA,POINT (-113.51667 53.566666),2202,http://corporate.flyeia.com/general_aviation/edmonton_city_centre,CYXD,Edmonton,,Alberta
+YXI,America/Toronto,Killaloe,YXI,CA,POINT (-77.416664 45.55),0,,,Petawawa,,Ontario
+YXP,America/Pangnirtung,Pangnirtung Airport,YXP,CA,POINT (-65.71324179494323 66.14491480000001),75,,CYXP,Pangnirtung,,Nunavut
+YXK,America/Montreal,Rimouski,YXK,CA,POINT (-68.55 48.433334),82,,CYXK,Rimouski,Bas-Saint-Laurent,Quebec
+YXS,America/Vancouver,Prince George Airport,YXS,CA,POINT (-122.675001 53.8847174),2267,,CYXS,Prince George,,British Columbia
+YXQ,America/Whitehorse,Beaver Creek,YXQ,CA,POINT (-141 62),2131,,CYXQ,Tok,Southeast Fairbanks Census Area,Alaska
+YXR,America/Toronto,Earlton,YXR,CA,POINT (-79.851944 47.697224),800,,CYXR,Englehart,,Ontario
+YXU,America/Toronto,London International Airport,YXU,CA,POINT (-81.14876380261438 43.03236375),912,http://www.londonairport.on.ca/,CYXU,Dorchester,,Ontario
+YXX,America/Vancouver,Abbotsford Airport,YXX,CA,POINT (-122.36 49.025278),195,http://www.abbotsfordairport.ca/,CYXX,Sumas,Whatcom County,Washington
+YWH,America/Vancouver,Victoria Inner Harbour Airport,YYJ,CA,POINT (-123.3904221 48.4253301),0,,CYWH,Victoria,,British Columbia
+YYA,America/Vancouver,Big Bay Yacht Club,YYA,CA,POINT (-123.13333 50.4),230,,ZGYY,Whistler,,British Columbia
+YYB,America/Toronto,Jack Garland Airport,YYB,CA,POINT (-79.42725 46.356823),1215,https://yyb.ca/,CYYB,North Bay,Nipissing District,Ontario
+YYH,America/Cambridge_Bay,Taloyoak,YYH,CA,POINT (-93.57816844804634 69.54798305),92,,CYYH,Gjoa Haven,,Nunavut
+YYI,America/Winnipeg,Rivers,YYI,CA,POINT (-100.23333 50.033333),1550,,"",Rivers,,Manitoba
+YYM,America/Edmonton,Cowley,YYM,CA,POINT (-114.166664 49.86667),3876,,CYYM,Pincher Creek,,Alberta
+YYN,America/Swift_Current,Swift Current,YYN,CA,POINT (-107.833336 50.283333),2680,http://www.swiftcurrentairport.com/,CYYN,Swift Current,,Saskatchewan
+YYC,America/Edmonton,Calgary International Airport,YYC,CA,POINT (-114.01057234296194 51.120751),3557,http://www.calgaryairport.com/,CYYC,Calgary,,Alberta
+YYR,America/Goose_Bay,Goose Bay Airport,YYR,CA,POINT (-60.4124 53.313534),160,,CYYR,Happy Valley-Goose Bay,,Newfoundland and Labrador
+YYD,America/Vancouver,Smithers Airport,YYD,CA,POINT (-127.18542810245555 54.82451285),1712,,CYYD,Smithers,,British Columbia
+YYW,America/Toronto,Armstrong,YYW,CA,POINT (-89.03333 50.283333),1058,,CYYW,Thunder Bay,Thunder Bay District,Ontario
+YYZ,America/Toronto,Pearson International Airport,YTO,CA,POINT (-79.61146 43.681583),569,http://www.gtaa.com/,CYYZ,Etobicoke,,Ontario
+YZA,America/Vancouver,Ashcroft,YZA,CA,POINT (-121.333336 50.666668),2034,,CAZ5,Ashcroft,Thompson-Nicola Regional District,British Columbia
+YZC,America/Vancouver,Beatton River,YZC,CA,POINT (-121.333336 57.433334),0,,,Fort St. John,,British Columbia
+YZE,America/Toronto,Gore Bay,YZE,CA,POINT (-82.56778 45.885277),635,,CYZE,Elliot Lake,,Ontario
+YZM,America/St_Johns,Buchans,YZM,CA,POINT (-56.86667 48.833332),0,,,Deer Lake,,Newfoundland and Labrador
+YZZ,America/Vancouver,Trail Regional Airport,YZZ,CA,POINT (-117.6 49.066666),1427,,CAD4,Fruitvale,,British Columbia
+ZAH,Asia/Tehran,Zahedan Airport,ZAH,IR,POINT (60.90033 29.475756),4564,,OIZH,Zahedan,,Sistan and Baluchestan
+ZAJ,Asia/Kabul,Zaranj,ZAJ,AF,POINT (61.983334 31.1),1572,,OAZJ,Zaranj,Zaranj,Nimruz
+ZAL,America/Santiago,Pichoy Airport,ZAL,CL,POINT (-73.23944 -39.791668),59,,SCVD,Valdivia,Provincia de Valdivia,Los Rios
+ZAO,Europe/Paris,Laberandie,ZAO,FR,POINT (1.45 44.45),912,,LFCC,Cahors,Departement du Lot,Midi-Pyrenees
+ZAR,Africa/Lagos,Zaria,ZAR,NG,POINT (7.666667 11),2170,http://www.faannigeria.org/nigeria-airport.php?airport=24,DNZA,Zaria,,Kaduna
+YYT,America/St_Johns,St. John's International Airport,YYT,CA,POINT (-52.74791992027517 47.619738299999995),461,http://www.stjohnsairport.com/,CYYT,Torbay,,Newfoundland and Labrador
+ZBE,Europe/Prague,Dolni Benesov,ZBE,CZ,POINT (16.866667 49.88333),791,,LKZA,Zabreh,,Olomoucky
+ZBF,America/Moncton,Bathurst Airport,ZBF,CA,POINT (-65.73944 47.629166),193,,CZBF,Bathurst,,New Brunswick
+ZBK,Europe/Podgorica,Zabljak,ZBK,ME,POINT (19.116667 43.15),4252,,"",Zabljak,,Opstina Zabljak
+ZBL,Australia/Brisbane,Biloela,ZBL,AU,POINT (150.51666 -24.4),0,,,Biloela,Banana,Queensland
+ZBM,America/Montreal,Bromont,ZBM,CA,POINT (-72.833336 45.316666),375,,CZBM,Granby,Monteregie,Quebec
+ZBO,Australia/Brisbane,Bowen,ZBO,AU,POINT (148.21666 -20.016666),8,,YBWN,Bowen,Whitsunday,Queensland
+YYY,America/Montreal,Mont Joli Airport,YYY,CA,POINT (-68.2080994 48.6086006),172,,CYYY,Mont-Joli,Bas-Saint-Laurent,Quebec
+ZBR,Asia/Tehran,Chah-Bahar Airport,ZBR,IR,POINT (60.379562 25.436478),43,,OIZC,Konarak,,Sistan and Baluchestan
+YZF,America/Yellowknife,Yellowknife Airport,YZF,CA,POINT (-114.44111467626608 62.457386650000004),675,,CYZF,Yellowknife,,Northwest Territories
+YZH,America/Edmonton,Slave Lake,YZH,CA,POINT (-114.7770004 55.2930984),1912,http://slavelakeairport.com,CYZH,Slave Lake,,Alberta
+YZR,America/Toronto,Sarnia Airport,YZR,CA,POINT (-82.30882048716478 42.998174399999996),594,,CYZR,Sarnia,Lambton County,Ontario
+YZS,America/Coral_Harbour,Coral Harbour Airport,YZS,CA,POINT (-83.35760462035266 64.197343),210,,CYZS,Rankin Inlet,,Nunavut
+YZU,America/Edmonton,Whitecourt,YZU,CA,POINT (-115.78616583832758 54.14253795),2567,,CYZU,Whitecourt,,Alberta
+YZV,America/Montreal,Sept-Iles Airport,YZV,CA,POINT (-66.2656021 50.2233009),180,,CYZV,Sept-Iles,Cote-Nord,Quebec
+YZG,America/Montreal,Salluit,YSW,CA,POINT (-75.66740714445996 62.1792874),743,,CYZG,Iqaluit,,Nunavut
+ZAA,America/Vancouver,Alice Arm,ZAA,CA,POINT (-129.4817122 55.4596468),0,,CAC3,Terrace,,British Columbia
+ZAT,Asia/Shanghai,Zhaotong Airport,ZAT,CN,POINT (103.75572039170027 27.32755695),0,,ZPZT,Zhaotong,,Yunnan
+ZAZ,Europe/Madrid,Zaragoza Airport,ZAZ,ES,POINT (-1.0437423279666378 41.6676807),863,,LEZG,Utebo,Provincia de Zaragoza,Aragon
+ZBY,Asia/Vientiane,Sayaboury,ZBY,LA,POINT (101.70990990145297 19.242310850000003),962,,VLSB,Sainyabuli,,Xiagnabouli
+ZCL,America/Mexico_City,La Calera Airport,ZCL,MX,POINT (-102.55 22.8),7141,http://www.oma.aero/es/aeropuertos/zacatecas/,MMZC,Zacatecas,,Zacatecas
+ZEC,Africa/Johannesburg,Secunda,ZEC,ZA,POINT (28 -27),5250,,FASC,Deneysville,Fezile Dabi District Municipality,Orange Free State
+ZEG,Asia/Jayapura,Senggo,ZEG,ID,POINT (139.36667 -5.983333),52,,WAKQ,Eci,,Papua
+ZEM,America/Montreal,East Main,ZEM,CA,POINT (-78.51667 52.25),24,,CZEM,Matagami,Nord-du-Quebec,Quebec
+ZEN,Pacific/Port_Moresby,Zenag,ZEN,PG,POINT (146.61667 -6.95),3200,,AYZA,Bulolo,Bulolo,Morobe
+ZER,Asia/Kolkata,Zero,ZER,IN,POINT (93.833336 27.633333),5403,,VEZO,Ziro,Lower Subansiri,Arunachal Pradesh
+ZFA,America/Whitehorse,Faro,ZFA,CA,POINT (-133.36667 63.216667),2351,,CZFA,Whitehorse,,Yukon
+ZFM,America/Yellowknife,Fort Mcpherson,ZFM,CA,POINT (-134.95277 67.477776),116,,CZFM,Fort McPherson,,Northwest Territories
+ZFU,America/Sao_Paulo,Aruja,ZFU,BR,POINT (-46.3214444 -23.3964516),0,,,Aruja,Aruja,Sao Paulo
+ZFW,America/Edmonton,Fairview,ZFW,CA,POINT (-118.38333 56.066666),2166,,CEB5,Fairview,,Alberta
+ZCO,America/Santiago,Temuco Airport,ZCO,CL,POINT (-72.62841243018514 -38.7670058),333,,SCQP,Temuco,Provincia de Cautin,Araucania
+ZFN,America/Yellowknife,Tulita,ZFN,CA,POINT (-125.56970777368883 64.90878649999999),332,,CZFN,Norman Wells,,Northwest Territories
+ZGM,Africa/Lusaka,Ngoma,ZGM,ZM,POINT (25.934444 -15.958333),3400,,FLNA,Namwala,,Southern
+ZGF,America/Vancouver,Grand Forks,ZGF,CA,POINT (-118.430999 49.0155983),1720,,CZGF,Grand Forks,,British Columbia
+ZGL,Australia/Brisbane,South Galway,ZGL,AU,POINT (142.0951185 -25.6770073),116,,YSGW,Innamincka,,South Australia
+ZGY,Asia/Kuching,Kuching Port,ZGY,MY,POINT (100.550003052 5.96667003632),0,,,Gurun,,Kedah
+ZIE,Europe/Rome,Harbour (Eolie Island),ZIE,IT,POINT (14.9 38.533333),0,,,Santa Marina Salina,Messina,Sicily
+ZIH,America/Mexico_City,Ixtapa/Zihuatanejo Internacional Airport,ZIH,MX,POINT (-101.464066 17.606783),26,,MMZH,Colonia Aeropuerto,Zihuatanejo de Azueta,Guerrero
+ZIP,Europe/Rome,Harbour (Eolie Island),ZIP,IT,POINT (11.646667 49.871666),0,,,Emtmannsberg,Upper Franconia,Bavaria
+ZGU,Pacific/Efate,Gaua,ZGU,VU,POINT (167.5897821 -14.2208883),100,,NVSQ,Sola,,Torba
+ZIX,Asia/Yakutsk,Zhigansk Airport,ZIX,RU,POINT (123.361389 66.796667),292,,UEVV,Zhigansk,,Sakha
+ZIZ,Asia/Karachi,Zamzama,ZIZ,PK,POINT (67.666664 26.733334),128,,"",Johi,,Sindh
+ZJT,Asia/Kuala_Lumpur,Tanjung Pelepas Port,ZJT,MY,POINT (103.5554116 1.362896654),0,,,Pekan Nenas,,Johor
+ZKE,America/Toronto,Kaschechewan,ZKE,CA,POINT (-81.333336 52.333332),35,,CZKE,Kapuskasing,,Ontario
+ZKL,Asia/Jayapura,Steenkool,ZKL,ID,POINT (133.51666 -2.102778),1133,,"",Bintuni,,West Papua
+ZKP,Asia/Srednekolymsk,Zyryanka Airport,ZKP,RU,POINT (150.707778 65.738333),140,,UESU,Zyryanka,Verkhnekolymsky District,Sakha
+ZHA,Asia/Shanghai,Zhanjiang Airport,ZHA,CN,POINT (110.35930740779222 21.21472515),125,,ZGZJ,Haitou,,Guangdong
+ZHM,Asia/Dhaka,Shamshernagar,ZHM,BD,POINT (91.9128379 24.396824),56,,VGSH,Kailashahar,North Tripura,Tripura
+ZHP,America/Edmonton,High Prairie,ZHP,CA,POINT (-116.48689885394634 55.394484649999995),1974,,CZHP,High Prairie,,Alberta
+ZIG,Africa/Dakar,Ziguinchor,ZIG,SN,POINT (-16.27910290979382 12.5565053),75,,GOGG,Ziguinchor,,Ziguinchor
+ZGR,America/Winnipeg,Little Grand Rapids,ZGR,CA,POINT (-95.46527983522518 52.04476915),1005,,CZGR,Lac du Bonnet,,Manitoba
+ZHI,Europe/Zurich,Grenchen,ZHI,CH,POINT (7.415404983009971 47.1810051),0,,,Grenchen,Bezirk Lebern,Solothurn
+ZIA,Europe/Moscow,Zhukovsky International Airport,MOW,RU,POINT (38.14866077990443 55.5527354),377,http://zia.aero/,UUBW,Zhukovskiy,,Moskovskaya
+ZIC,America/Santiago,Victoria,ZIC,CL,POINT (-72.34748426534875 -38.2441698),1148,,SCTO,Victoria,Provincia de Malleco,Araucania
+ZKG,America/Blanc-Sablon,Kegaska,ZKG,CA,POINT (-61.2672140605186 50.19551115),32,,CTK6,Havre-Saint-Pierre,Cote-Nord,Quebec
+ZKM,Africa/Libreville,Sette Cama,ZKM,GA,POINT (9.7670002 -2.533),0,,,Gamba,,Ogooue-Maritime
+ZLG,Europe/Budapest,El Gouera,ZLG,HU,POINT (-17.078333 20.842222),0,,,Nouadhibou,,Dakhlet Nouadhibou
+ZLO,America/Mexico_City,Manzanillo Airport,ZLO,MX,POINT (-104.350555 19.113333),30,http://manzanillo.aeropuertosgap.com.mx/index.php?lang=eng,MMZO,Manzanillo,Manzanillo,Colima
+ZLW,Asia/Kuala_Lumpur,Pasir Gudang Port,ZLW,MY,POINT (103.9066392 1.44492244),0,,,Kampung Pasir Gudang Baru,,Johor
+ZMH,America/Vancouver,South Cariboo Regional Airport,ZMH,CA,POINT (-121.33244427979807 51.735007249999995),3129,,CZML,Williams Lake,,British Columbia
+ZMD,America/Rio_Branco,Sena Madureira,ZMD,BR,POINT (-68.75 -9.083333),540,,"",Sena Madureira,Sena Madureira,Acre
+ZMJ,Europe/Rome,Mergellina Harbour,NAP,IT,POINT (14.2516357 40.8400969),0,,,Napoli,Provincia di Napoli,Campania
+ZML,America/Chicago,Milwaukee General Mitchell,MKE,US,POINT (-87.9065334 43.0387949),0,,,Milwaukee,Milwaukee County,Wisconsin
+ZMM,America/Mexico_City,Zamora,ZMM,MX,POINT (-102.26667 19.983334),5141,,MMZM,Fraccionamiento Monte Olivo,Zamora,Michoacan
+ZMY,Asia/Shanghai,Harbour,ZMY,CN,POINT (116.43333 30.55),0,,,Meicheng,,Anhui Sheng
+ZNA,America/Vancouver,Nanaimo Harbour,YCD,CA,POINT (-123.87485 49.05293),0,,CAC8,Ladysmith,Cowichan Valley Regional District,British Columbia
+ZOF,America/Vancouver,Ocean Falls,ZOF,CA,POINT (-127.7 52.36667),0,,CAH2,Kitimat,,British Columbia
+ZPC,America/Santiago,Pucon,ZPC,CL,POINT (-71.63333 -39.76389),853,,SCPC,San Martin de los Andes,Departamento de Lacar,Neuquen
+ZPO,America/Regina,Pine House,ZPO,CA,POINT (-106.583336 55.516666),1278,,CZPO,La Ronge,,Saskatchewan
+ZLX,Africa/Khartoum,Zalingei Airport,ZLX,SD,POINT (23.5644544 12.9447732),2953,,HSZA,Zalingei,,Central Darfur
+ZND,Africa/Niamey,Zinder,ZND,NE,POINT (8.98236761070802 13.7779059),1516,,DRZR,Zinder,,Zinder
+ZNE,Australia/Perth,Newman Airport,ZNE,AU,POINT (119.8030015 -23.4178009),1724,,YNWN,Newman,East Pilbara,Western Australia
+ZNG,America/Winnipeg,Negginan,ZNG,CA,POINT (-97.273715983906 52.99613225),0,,,Gimli,,Manitoba
+ZNZ,Africa/Dar_es_Salaam,Zanzibar International Airport,ZNZ,TZ,POINT (39.224891924186615 -6.22659875),54,,HTZA,Zanzibar,,Zanzibar Urban/West
+ZOS,America/Santiago,Canal Bajo Airport,ZOS,CL,POINT (-73.0610391488569 -40.6045516),187,,SCJO,Osorno,Provincia de Osorno,Los Lagos
+ZMT,America/Vancouver,Masset Airport,ZMT,CA,POINT (-132.1238959748132 54.0258747),25,,CZMT,Metlakatla,Annette Island Reserve,Alaska
+ZNC,America/Anchorage,Nyac,ZNC,US,POINT (-160.0029934 60.9782629),460,,ZNC,Bethel,Bethel Census Area,Alaska
+ZPH,America/New_York,Zephyrhills,ZPH,US,POINT (-82.15837574200106 28.2265942),90,,KZPH,Zephyrhills,Pasco County,Florida
+ZRI,Asia/Jayapura,Serui,ZRI,ID,POINT (136.23334 -1.883333),50,,WABO,Serui,,Papua
+ZRJ,America/Winnipeg,Round Lake Airport,ZRJ,CA,POINT (-91.316666 52.95),974,,CZRJ,Ear Falls,,Ontario
+ZSE,Indian/Reunion,St Pierre dela Reunion,ZSE,RE,POINT (55.483334 -21.333332),59,http://www.grandsudreunion.org/FR2004/aeroport.php,FMEP,Saint-Pierre,Reunion,Reunion
+ZSP,America/Montreal,St Paul,ZSP,CA,POINT (-69.25 47.916668),0,,,Saint-Antonin,Bas-Saint-Laurent,Quebec
+ZSW,America/Vancouver,Seal Cove,YPR,CA,POINT (-130.28334 54.333332),0,,CZSW,Prince Rupert,Skeena-Queen Charlotte Regional District,British Columbia
+ZTA,Pacific/Tahiti,Tureira,ZTA,PF,POINT (-138.5 -20.816668),12,,NTGY,Rikitea,,
+ZTB,America/Blanc-Sablon,Tete-a-La Baleine,ZTB,CA,POINT (-59.333332 50.716667),107,,CTB6,Saint-Augustin,Cote-Nord,Quebec
+ZTH,Europe/Athens,Zakinthos Airport,ZTH,GR,POINT (20.888332 37.755833),15,https://www.zth-airport.gr,LGZA,Ambelokipoi,Nomos Zakynthou,Ionian Islands
+ZRM,Asia/Jayapura,Sarmi,ZRM,ID,POINT (138.7539608322614 -1.87386245),10,,WAJI,Sarmi,,Papua
+ZTR,Europe/Kiev,Zhitomir Airport,ZTR,UA,POINT (28.65 50.25),0,,UKKV,Zhytomyr,,Zhytomyr
+ZTU,Asia/Baku,Zaqatala,ZTU,AZ,POINT (46.664787 41.56166),1279,,UBBY,Zaqatala,,Zaqatala
+ZUC,America/Winnipeg,Ignace,ZUC,CA,POINT (-91.833336 49.5),1435,,CZUC,Atikokan,Rainy River District,Ontario
+ZUD,America/Santiago,Ancud,ZUD,CL,POINT (-73.833336 -42),315,,SCAC,Ancud,Provincia de Chiloe,Los Lagos
+ZRH,Europe/Zurich,Zurich Airport,ZRH,CH,POINT (8.553204683227131 47.4635489),1416,http://www.zurich-airport.com/,LSZH,Glattbrugg / Rohr/Platten-Balsberg,Bezirk Buelach,Zurich
+ZSA,America/Nassau,San Salvador Airport,ZSA,BS,POINT (-74.53177411551994 24.06595985),24,,MYSM,Cockburn Town,,San Salvador
+ZSS,Africa/Abidjan,Sassandra,ZSS,CI,POINT (-6.1304294 4.9303139),203,,DISS,Sassandra,,Bas-Sassandra
+ZTM,America/Winnipeg,Shamattawa Airport,ZTM,CA,POINT (-92.0808371169133 55.8647665),289,,CZTM,Red Lake,,Ontario
+ZUL,Asia/Riyadh,Zilfi,ZUL,SA,POINT (44.833332 26.25),1900,,OEZL,Az Zulfi,,Ar Riyad
+ZVA,Indian/Antananarivo,Miandrivazo,ZVA,MG,POINT (45.466667 -19.5),203,,FMMN,Miandrivazo,,Menabe
+ZUH,Asia/Shanghai,Zhuhai Jinwan Airport,ZUH,CN,POINT (113.37242495504282 22.0084784),23,,ZGSD,Sanzao,,Guangdong
+ZVG,Australia/Perth,Springvale,ZVG,AU,POINT (127.583336 -17.866667),0,,"",Halls Creek,Halls Creek,Western Australia
+ZWR,Asia/Kuching,Kota Kinabalu Port,ZWR,MY,POINT (116.115777 5.976474),0,,,Kota Kinabalu,,Sabah
+ZXT,Asia/Baku,Heydar Aliyev,BAK,AZ,POINT (49.983612 40.485),36,,UBTT,Zabrat,,Baki
+ZYD,Europe/Lisbon,Lisbon TP,LIS,PT,POINT (124.28081 40.032368),0,,,Langtou,,Liaoning
+ZYF,Europe/Lisbon,Faro TP,FAO,PT,POINT (-7.935113 37.0153597),0,,,Faro,Faro,Faro
+ZYI,Asia/Shanghai,Zunyi Xinzhou Airport,ZYI,CN,POINT (106.833336 27.666668),2920,,ZUZY,Zunyi,,Guizhou Sheng
+ZYL,Asia/Dhaka,Civil Airport,ZYL,BD,POINT (91.870476 24.957598),50,,VGSY,Sylhet,,Sylhet
+ZZO,Asia/Sakhalin,Zonalnoye,ZZO,RU,POINT (142.77230001516781 50.660627399999996),479,,UHSO,Tymovskoye,,Sakhalin
+ZZN,Europe/Oslo,Nationaltheatret RailS,OSL,NO,POINT (10.7522454 59.9138688),0,,,Oslo,Oslo,Oslo
+ZZV,America/New_York,Zanesville,ZZV,US,POINT (-82.01667 39.933334),900,,KZZV,Zanesville,Muskingum County,Ohio
+ZZU,Africa/Blantyre,Mzuzu,ZZU,MW,POINT (34.01193333198202 -11.443044350000001),4115,,FWUU,Mzuzu,Mzimba District,Northern Region
+HQL,Asia/Urumqi,Tashkurgan Airport,HQL,CN,POINT (75.29227 37.66271),10499,,,Taxkorgan Tajik,,Xinjiang
+ACF,Asia/Urumqi,Alaer Talimu Airport,ACF,CN,POINT (81.246944 40.464167),3323,,ZWAL,Aral,,Xinjian Autonomous Region
+BQB,Australia/Perth,Bussellton Regional Airport,BQB,AU,POINT (115.25 -33.716667),45,http://www.busselton.wa.gov.au/facilities/airport,YBLN,Vasse,Busselton,Western Australia
+ZZE,Asia/Baku,Zangilan International Airport,ZZE,AZ,POINT (46.7336184452897 39.09512199158182),1604,,UBBZ,Karabakh,,
+BTZ,Asia/Bangkok,Yala Betong International Airport,BTZ,TH,POINT (101.1475 5.785833),801,,VTSY,Betong,,
+DDR,Asia/Shanghai,Shigatse Tingri Airport,DDR,CN,POINT (86.798 28.604567),14108,,,Xigaze,,
+NSR,America/Fortaleza,São Raimundo Nonato Airport,NSR,BR,POINT (-42.644444 -9.082778),1362,,SWKY,São Raimundo Nonato,,
+OPP,America/Belem,Salinópolis Airport,OPP,BR,POINT (-47.337778 -0.696944),89,,SNSM,Salinópolis,,
+RZV,Europe/Istanbul,Rize–Artvin Airport,RZV,TR,POINT (40.828889 41.169167),0,,LTFO,,,
+MOK,Asia/Samarkand,Muynak Airport,MOK,UZ,POINT (59.030833 43.755),177,,UTMN,Muynak,,
+LZG,Asia/Shanghai,Langzhong Airport,LZG,CN,POINT (106.03535 31.50366),1450,,,Shilong,,Sichuan
+JAW,America/Recife,Aeroporto de Araripina,JAW,BR,POINT (-40.535556 -7.586389),2195,,SNAB,,,
+DGH,Asia/Kolkata,Deoghar International Airport,DGH,IN,POINT (86.7025 24.444722),833,https://www.aai.aero/en/airports/deoghar,VEDO,Deoghar,,Jharkhand
+QGP,America/Recife,Garanhuns Airport,QGP,BR,POINT (-36.471389 -8.834444),2533,,SNGN,Garanhuns,,
+VRZ,America/Sao_Paulo,Lavras Airport,VRZ,BR,POINT (-44.9639 -21.2406),3156,,SSOL,Lavras,,
+QIG,America/Fortaleza,Dr. Francisco Tomé da Frota Airport,QIG,BR,POINT (-39.298611 -6.347778),692,,SNIG,Iguatu,,
+GOX,Asia/Kolkata,Mopa Airport,GOX,IN,POINT (73.8631 15.7302),518,,VOGA,Mopa,,Goa

+ 202 - 0
assets/fonts/roboto/LICENSE.txt

@@ -0,0 +1,202 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.

+ 77 - 0
assets/fonts/roboto/README.txt

@@ -0,0 +1,77 @@
+Roboto Mono Variable Font
+=========================
+
+This download contains Roboto Mono as both variable fonts and static fonts.
+
+Roboto Mono is a variable font with this axis:
+  wght
+
+This means all the styles are contained in these files:
+  RobotoMono-VariableFont_wght.ttf
+  RobotoMono-Italic-VariableFont_wght.ttf
+
+If your app fully supports variable fonts, you can now pick intermediate styles
+that aren’t available as static fonts. Not all apps support variable fonts, and
+in those cases you can use the static font files for Roboto Mono:
+  static/RobotoMono-Thin.ttf
+  static/RobotoMono-ExtraLight.ttf
+  static/RobotoMono-Light.ttf
+  static/RobotoMono-Regular.ttf
+  static/RobotoMono-Medium.ttf
+  static/RobotoMono-SemiBold.ttf
+  static/RobotoMono-Bold.ttf
+  static/RobotoMono-ThinItalic.ttf
+  static/RobotoMono-ExtraLightItalic.ttf
+  static/RobotoMono-LightItalic.ttf
+  static/RobotoMono-Italic.ttf
+  static/RobotoMono-MediumItalic.ttf
+  static/RobotoMono-SemiBoldItalic.ttf
+  static/RobotoMono-BoldItalic.ttf
+
+Get started
+-----------
+
+1. Install the font files you want to use
+
+2. Use your app's font picker to view the font family and all the
+available styles
+
+Learn more about variable fonts
+-------------------------------
+
+  https://developers.google.com/web/fundamentals/design-and-ux/typography/variable-fonts
+  https://variablefonts.typenetwork.com
+  https://medium.com/variable-fonts
+
+In desktop apps
+
+  https://theblog.adobe.com/can-variable-fonts-illustrator-cc
+  https://helpx.adobe.com/nz/photoshop/using/fonts.html#variable_fonts
+
+Online
+
+  https://developers.google.com/fonts/docs/getting_started
+  https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Fonts/Variable_Fonts_Guide
+  https://developer.microsoft.com/en-us/microsoft-edge/testdrive/demos/variable-fonts
+
+Installing fonts
+
+  MacOS: https://support.apple.com/en-us/HT201749
+  Linux: https://www.google.com/search?q=how+to+install+a+font+on+gnu%2Blinux
+  Windows: https://support.microsoft.com/en-us/help/314960/how-to-install-or-remove-a-font-in-windows
+
+Android Apps
+
+  https://developers.google.com/fonts/docs/android
+  https://developer.android.com/guide/topics/ui/look-and-feel/downloadable-fonts
+
+License
+-------
+Please read the full license text (LICENSE.txt) to understand the permissions,
+restrictions and requirements for usage, redistribution, and modification.
+
+You can use them in your products & projects – print or digital,
+commercial or otherwise.
+
+This isn't legal advice, please consider consulting a lawyer and see the full
+license for all details.

BIN
assets/fonts/roboto/RobotoMono-Italic-VariableFont_wght.ttf


BIN
assets/fonts/roboto/RobotoMono-VariableFont_wght.ttf


BIN
assets/fonts/roboto/static/RobotoMono-Bold.ttf


BIN
assets/fonts/roboto/static/RobotoMono-BoldItalic.ttf


BIN
assets/fonts/roboto/static/RobotoMono-ExtraLight.ttf


BIN
assets/fonts/roboto/static/RobotoMono-ExtraLightItalic.ttf


BIN
assets/fonts/roboto/static/RobotoMono-Italic.ttf


BIN
assets/fonts/roboto/static/RobotoMono-Light.ttf


BIN
assets/fonts/roboto/static/RobotoMono-LightItalic.ttf


BIN
assets/fonts/roboto/static/RobotoMono-Medium.ttf


BIN
assets/fonts/roboto/static/RobotoMono-MediumItalic.ttf


BIN
assets/fonts/roboto/static/RobotoMono-Regular.ttf


BIN
assets/fonts/roboto/static/RobotoMono-SemiBold.ttf


BIN
assets/fonts/roboto/static/RobotoMono-SemiBoldItalic.ttf


BIN
assets/fonts/roboto/static/RobotoMono-Thin.ttf


BIN
assets/fonts/roboto/static/RobotoMono-ThinItalic.ttf


BIN
assets/logo.png


BIN
assets/pdficon.png


BIN
keys/my-release-key.jks


+ 9 - 0
lib/api/oaca.http

@@ -0,0 +1,9 @@
+GET https://www.oaca.nat.tn/vols/api/flight/filter
+?frmmvtCod=D
+&frmaeropVil=-1
+&frmnumVol=
+&frmairport=djerba
+&frmhour=0
+&frmday=16
+&frmmonth=9
+&frmacty=2024

+ 25 - 0
lib/auth/api/auth_repository.dart

@@ -0,0 +1,25 @@
+import 'package:riverpod_annotation/riverpod_annotation.dart';
+import 'package:supabase_flutter/supabase_flutter.dart';
+
+part 'auth_repository.g.dart';
+
+@riverpod
+AuthRepository authRepository(AuthRepositoryRef _) => AuthRepository();
+
+class AuthRepository {
+  final _client = Supabase.instance.client;
+
+  Stream<AuthState> get authState => _client.auth.onAuthStateChange;
+
+  Future<AuthResponse> logIn({
+    required String email,
+    required String password,
+  }) async {
+    return _client.auth.signInWithPassword(
+      email: email,
+      password: password,
+    );
+  }
+
+  Future<void> logout() => _client.auth.signOut();
+}

+ 25 - 0
lib/auth/api/auth_repository.g.dart

@@ -0,0 +1,25 @@
+// GENERATED CODE - DO NOT MODIFY BY HAND
+
+part of 'auth_repository.dart';
+
+// **************************************************************************
+// RiverpodGenerator
+// **************************************************************************
+
+String _$authRepositoryHash() => r'7a5e497d6eb8c4c1f189e277e25a7a1d9bae8433';
+
+/// See also [authRepository].
+@ProviderFor(authRepository)
+final authRepositoryProvider = AutoDisposeProvider<AuthRepository>.internal(
+  authRepository,
+  name: r'authRepositoryProvider',
+  debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
+      ? null
+      : _$authRepositoryHash,
+  dependencies: null,
+  allTransitiveDependencies: null,
+);
+
+typedef AuthRepositoryRef = AutoDisposeProviderRef<AuthRepository>;
+// ignore_for_file: type=lint
+// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member

+ 3 - 0
lib/auth/auth.dart

@@ -0,0 +1,3 @@
+export 'api/auth_repository.dart';
+export 'providers/auth_user.dart';
+export 'view/login_page.dart';

+ 13 - 0
lib/auth/providers/auth_user.dart

@@ -0,0 +1,13 @@
+import 'package:tp5/auth/auth.dart';
+import 'package:riverpod_annotation/riverpod_annotation.dart';
+import 'package:supabase_flutter/supabase_flutter.dart';
+
+part 'auth_user.g.dart';
+
+@riverpod
+Stream<User?> authUser(AuthUserRef ref) async* {
+  final authStream = ref.read(authRepositoryProvider).authState;
+  await for (final authState in authStream) {
+    yield authState.session?.user;
+  }
+}

+ 24 - 0
lib/auth/providers/auth_user.g.dart

@@ -0,0 +1,24 @@
+// GENERATED CODE - DO NOT MODIFY BY HAND
+
+part of 'auth_user.dart';
+
+// **************************************************************************
+// RiverpodGenerator
+// **************************************************************************
+
+String _$authUserHash() => r'2ef9e300270e1713a88dd02760e11f302633e843';
+
+/// See also [authUser].
+@ProviderFor(authUser)
+final authUserProvider = AutoDisposeStreamProvider<User?>.internal(
+  authUser,
+  name: r'authUserProvider',
+  debugGetCreateSourceHash:
+      const bool.fromEnvironment('dart.vm.product') ? null : _$authUserHash,
+  dependencies: null,
+  allTransitiveDependencies: null,
+);
+
+typedef AuthUserRef = AutoDisposeStreamProviderRef<User?>;
+// ignore_for_file: type=lint
+// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member

+ 238 - 0
lib/auth/view/login_page.dart

@@ -0,0 +1,238 @@
+// ignore_for_file: use_build_context_synchronously
+
+import 'package:flutter/material.dart';
+import 'package:flutter_riverpod/flutter_riverpod.dart';
+import 'package:go_router/go_router.dart';
+import 'package:tp5/auth/auth.dart';
+import 'package:tp5/core/core.dart';
+import 'package:tp5/core/my_theme.dart';
+import 'package:tp5/onboarding/onboarding.dart';
+
+class LoginPage extends ConsumerStatefulWidget {
+  const LoginPage({super.key});
+
+  @override
+  ConsumerState<LoginPage> createState() => _LoginPageState();
+}
+
+class _LoginPageState extends ConsumerState<LoginPage> {
+  final _formKey = GlobalKey<FormState>();
+  AutovalidateMode? _autovalidateMode;
+  bool _isSubmitting = false;
+
+  final _emailCtrl = TextEditingController();
+  final _passwordCtrl = TextEditingController();
+  final _usernameCtrl = TextEditingController();
+
+  Future<void> _login() async {
+    try {
+      setState(() {
+        _isSubmitting = true;
+      });
+
+      await ref.read(authRepositoryProvider).logIn(
+            email: _emailCtrl.text,
+            password: _passwordCtrl.text,
+          );
+
+      if (mounted) {
+        context.pop();
+      }
+    } catch (e) {
+      setState(() {
+        _isSubmitting = false;
+      });
+
+      context.showAlert(e.toString());
+    }
+  }
+
+  Future<void> _createAccount() async {
+    try {
+      setState(() {
+        _isSubmitting = true;
+      });
+
+      await ref.read(onboardingRepositoryProvider).signUp(
+            email: _emailCtrl.text,
+            password: _passwordCtrl.text,
+            username: _usernameCtrl.text,
+          );
+
+      if (mounted) {
+        context.push(
+          '/verification',
+          extra: VerificationPageParams(
+            email: _emailCtrl.text,
+            password: _passwordCtrl.text,
+            username: _usernameCtrl.text,
+          ),
+        );
+      }
+    } catch (e) {
+      context.showAlert(e.toString());
+    }
+
+    setState(() {
+      _isSubmitting = false;
+    });
+  }
+
+  @override
+  Widget build(BuildContext context) {
+    final isDarkMode = ref.watch(appThemeProvider);
+
+    return Scaffold(
+      appBar: AppBar(
+        title: Row(
+          children: [
+            const Text("GeeksforGeeks"),
+            Switch(
+                activeColor: Colors.orange,
+                onChanged: (value) {
+                  ref.read(appThemeProvider.notifier).state = value;
+                },
+                value: isDarkMode)
+          ],
+        ),
+      ),
+      body: SingleChildScrollView(
+        child: Form(
+          key: _formKey,
+          autovalidateMode: _autovalidateMode,
+          child: Column(
+            children: <Widget>[
+              Padding(
+                padding: const EdgeInsets.all(20),
+                child: Center(
+                  child: SizedBox(
+                    width: 300,
+                    child: Image.asset('assets/logo.png'),
+                  ),
+                ),
+              ),
+              Padding(
+                //padding: const EdgeInsets.only(left:15.0,right: 15.0,top:0,bottom: 0),
+                padding: const EdgeInsets.symmetric(horizontal: 15),
+                child: TextFormField(
+                  controller: _emailCtrl,
+                  readOnly: _isSubmitting,
+                  validator: (value) {
+                    if (value == null || value.isEmpty) {
+                      return 'Please enter your email';
+                    }
+
+                    return null;
+                  },
+                  decoration: const InputDecoration(
+                      border: OutlineInputBorder(),
+                      labelText: 'Phone number, email or username',
+                      hintText: 'Enter valid email id as abc@gmail.com'),
+                ),
+              ),
+              Padding(
+                padding: const EdgeInsets.only(
+                    left: 15.0, right: 15.0, top: 15, bottom: 0),
+                //padding: EdgeInsets.symmetric(horizontal: 15),
+                child: TextFormField(
+                  controller: _passwordCtrl,
+                  readOnly: _isSubmitting,
+                  obscureText: true,
+                  validator: (value) {
+                    if (value == null || value.isEmpty) {
+                      return 'Please enter your password';
+                    }
+
+                    return null;
+                  },
+                  decoration: const InputDecoration(
+                      border: OutlineInputBorder(),
+                      labelText: 'Password',
+                      hintText: 'Enter secure password'),
+                ),
+              ),
+              SizedBox(
+                //height: 65,
+                width: 360,
+                child: Padding(
+                  padding: const EdgeInsets.only(top: 20.0),
+                  child: ElevatedButton(
+                    onPressed: _isSubmitting
+                        ? null
+                        : () {
+                            if (_formKey.currentState!.validate()) {
+                              _login();
+                            } else {
+                              setState(() {
+                                _autovalidateMode = AutovalidateMode.always;
+                              });
+                            }
+                          },
+                    child: const Padding(
+                      padding: EdgeInsets.all(8.0),
+                      child: Text(
+                        'Log in ',
+                        style: TextStyle(color: Colors.white, fontSize: 20),
+                      ),
+                    ),
+                  ),
+                ),
+              ),
+              const SizedBox(
+                height: 20,
+              ),
+              Center(
+                child: Row(
+                  children: [
+                    const Padding(
+                      padding: EdgeInsets.only(left: 62),
+                      child: Text('Forgot your login details? '),
+                    ),
+                    Padding(
+                      padding: const EdgeInsets.only(left: 1.0),
+                      child: InkWell(
+                          onTap: () {
+                            // print('hello');
+                          },
+                          child: const Text(
+                            'Get help logging in.',
+                            style: TextStyle(fontSize: 14, color: Colors.blue),
+                          )),
+                    ),
+                  ],
+                ),
+              ),
+              const SizedBox(
+                height: 50,
+              ),
+              Center(
+                child: Row(
+                  children: [
+                    const Padding(
+                      padding: EdgeInsets.only(left: 62),
+                      child: Text('don\'t have an account yet? '),
+                    ),
+                    Padding(
+                      padding: const EdgeInsets.only(left: 1.0),
+                      child: InkWell(
+                          onTap: () {
+                            _createAccount();
+                          },
+                          child: const Text(
+                            'Create an account.',
+                            style: TextStyle(
+                                fontSize: 14,
+                                color: Colors.blue,
+                                fontWeight: FontWeight.bold),
+                          )),
+                    ),
+                  ],
+                ),
+              ),
+            ],
+          ),
+        ),
+      ),
+    );
+  }
+}

+ 238 - 0
lib/auth/view/signup_page.dart

@@ -0,0 +1,238 @@
+// ignore_for_file: use_build_context_synchronously
+
+import 'package:flutter/material.dart';
+import 'package:flutter_riverpod/flutter_riverpod.dart';
+import 'package:go_router/go_router.dart';
+import 'package:tp5/auth/auth.dart';
+import 'package:tp5/core/core.dart';
+import 'package:tp5/core/my_theme.dart';
+import 'package:tp5/onboarding/onboarding.dart';
+
+class SignUp extends ConsumerStatefulWidget {
+  const SignUp({super.key});
+
+  @override
+  ConsumerState<SignUp> createState() => _SignUpState();
+}
+
+class _SignUpState extends ConsumerState<SignUp> {
+  final _formKey = GlobalKey<FormState>();
+  AutovalidateMode? _autovalidateMode;
+  bool _isSubmitting = false;
+
+  final _emailCtrl = TextEditingController();
+  final _passwordCtrl = TextEditingController();
+  final _usernameCtrl = TextEditingController();
+
+  Future<void> _login() async {
+    try {
+      setState(() {
+        _isSubmitting = true;
+      });
+
+      await ref.read(authRepositoryProvider).logIn(
+            email: _emailCtrl.text,
+            password: _passwordCtrl.text,
+          );
+
+      if (mounted) {
+        context.pop();
+      }
+    } catch (e) {
+      setState(() {
+        _isSubmitting = false;
+      });
+
+      context.showAlert(e.toString());
+    }
+  }
+
+  Future<void> _createAccount() async {
+    try {
+      setState(() {
+        _isSubmitting = true;
+      });
+
+      await ref.read(onboardingRepositoryProvider).signUp(
+            email: _emailCtrl.text,
+            password: _passwordCtrl.text,
+            username: _usernameCtrl.text,
+          );
+
+      if (mounted) {
+        context.push(
+          '/verification',
+          extra: VerificationPageParams(
+            email: _emailCtrl.text,
+            password: _passwordCtrl.text,
+            username: _usernameCtrl.text,
+          ),
+        );
+      }
+    } catch (e) {
+      context.showAlert(e.toString());
+    }
+
+    setState(() {
+      _isSubmitting = false;
+    });
+  }
+
+  @override
+  Widget build(BuildContext context) {
+    final isDarkMode = ref.watch(appThemeProvider);
+
+    return Scaffold(
+      appBar: AppBar(
+        title: Row(
+          children: [
+            const Text("GeeksforGeeks"),
+            Switch(
+                activeColor: Colors.orange,
+                onChanged: (value) {
+                  ref.read(appThemeProvider.notifier).state = value;
+                },
+                value: isDarkMode)
+          ],
+        ),
+      ),
+      body: SingleChildScrollView(
+        child: Form(
+          key: _formKey,
+          autovalidateMode: _autovalidateMode,
+          child: Column(
+            children: <Widget>[
+              Padding(
+                padding: const EdgeInsets.all(20),
+                child: Center(
+                  child: SizedBox(
+                    width: 300,
+                    child: Image.asset('assets/logo.png'),
+                  ),
+                ),
+              ),
+              Padding(
+                //padding: const EdgeInsets.only(left:15.0,right: 15.0,top:0,bottom: 0),
+                padding: const EdgeInsets.symmetric(horizontal: 15),
+                child: TextFormField(
+                  controller: _emailCtrl,
+                  readOnly: _isSubmitting,
+                  validator: (value) {
+                    if (value == null || value.isEmpty) {
+                      return 'Please enter your email';
+                    }
+
+                    return null;
+                  },
+                  decoration: const InputDecoration(
+                      border: OutlineInputBorder(),
+                      labelText: 'Phone number, email or username',
+                      hintText: 'Enter valid email id as abc@gmail.com'),
+                ),
+              ),
+              Padding(
+                padding: const EdgeInsets.only(
+                    left: 15.0, right: 15.0, top: 15, bottom: 0),
+                //padding: EdgeInsets.symmetric(horizontal: 15),
+                child: TextFormField(
+                  controller: _passwordCtrl,
+                  readOnly: _isSubmitting,
+                  obscureText: true,
+                  validator: (value) {
+                    if (value == null || value.isEmpty) {
+                      return 'Please enter your password';
+                    }
+
+                    return null;
+                  },
+                  decoration: const InputDecoration(
+                      border: OutlineInputBorder(),
+                      labelText: 'Password',
+                      hintText: 'Enter secure password'),
+                ),
+              ),
+              SizedBox(
+                //height: 65,
+                width: 360,
+                child: Padding(
+                  padding: const EdgeInsets.only(top: 20.0),
+                  child: ElevatedButton(
+                    onPressed: _isSubmitting
+                        ? null
+                        : () {
+                            if (_formKey.currentState!.validate()) {
+                              _login();
+                            } else {
+                              setState(() {
+                                _autovalidateMode = AutovalidateMode.always;
+                              });
+                            }
+                          },
+                    child: const Padding(
+                      padding: EdgeInsets.all(8.0),
+                      child: Text(
+                        'Log in ',
+                        style: TextStyle(color: Colors.white, fontSize: 20),
+                      ),
+                    ),
+                  ),
+                ),
+              ),
+              const SizedBox(
+                height: 20,
+              ),
+              Center(
+                child: Row(
+                  children: [
+                    const Padding(
+                      padding: EdgeInsets.only(left: 62),
+                      child: Text('Forgot your login details? '),
+                    ),
+                    Padding(
+                      padding: const EdgeInsets.only(left: 1.0),
+                      child: InkWell(
+                          onTap: () {
+                            // print('hello');
+                          },
+                          child: const Text(
+                            'Get help logging in.',
+                            style: TextStyle(fontSize: 14, color: Colors.blue),
+                          )),
+                    ),
+                  ],
+                ),
+              ),
+              const SizedBox(
+                height: 50,
+              ),
+              Center(
+                child: Row(
+                  children: [
+                    const Padding(
+                      padding: EdgeInsets.only(left: 62),
+                      child: Text('don\'t have an account yet? '),
+                    ),
+                    Padding(
+                      padding: const EdgeInsets.only(left: 1.0),
+                      child: InkWell(
+                          onTap: () {
+                            _createAccount();
+                          },
+                          child: const Text(
+                            'Create an account.',
+                            style: TextStyle(
+                                fontSize: 14,
+                                color: Colors.blue,
+                                fontWeight: FontWeight.bold),
+                          )),
+                    ),
+                  ],
+                ),
+              ),
+            ],
+          ),
+        ),
+      ),
+    );
+  }
+}

+ 74 - 0
lib/core/basic_page.dart

@@ -0,0 +1,74 @@
+import 'package:flutter/material.dart';
+import 'package:flutter_riverpod/flutter_riverpod.dart';
+import 'package:tp5/widgets/nav_drawer.dart';
+
+class BasicPage extends ConsumerStatefulWidget {
+  final String? title;
+  final Widget body;
+  final AppBar? appBar;
+  final Widget? drawer;
+  final Widget? floatingActionButton;
+  final Widget? bottomSheet;
+  final List<Widget>? persistentFooterButtons;
+  final dynamic floatingActionButtonLocation;
+  final Widget? bottomNavigationBar;
+  final List<Widget>? actions;
+
+  const BasicPage({
+    this.title,
+    required this.body,
+    this.drawer,
+    this.appBar,
+    this.floatingActionButton,
+    this.bottomSheet,
+    this.persistentFooterButtons,
+    this.floatingActionButtonLocation,
+    this.bottomNavigationBar,
+    this.actions,
+    super.key,
+  });
+
+  @override
+  ConsumerState<ConsumerStatefulWidget> createState() => _BasicPageState();
+}
+
+class _BasicPageState extends ConsumerState<BasicPage> {
+  @override
+  Widget build(BuildContext context) {
+    return Scaffold(
+      bottomNavigationBar: widget.bottomNavigationBar,
+      appBar: widget.appBar ??
+          AppBar(
+            title: Row(
+              children: [
+                Text(widget.title ?? "myLog"),
+                // Switch(
+                //     activeColor: Colors.orange,
+                //     onChanged: (value) {
+                //       ref.read(appThemeProvider.notifier).state = value;
+                //     },
+                //     value: isDarkMode)
+              ],
+            ),
+            actions: [
+              ...widget.actions ?? [],
+              if (ref.watch(isLoadingProvider))
+                const Padding(
+                    padding: EdgeInsets.all(10),
+                    child: CircularProgressIndicator())
+            ],
+          ),
+      body: widget.body,
+      drawer: widget.drawer ?? const NavDrawer(),
+      floatingActionButton: widget.floatingActionButton,
+      floatingActionButtonLocation: widget.floatingActionButtonLocation,
+      bottomSheet: widget.bottomSheet,
+      persistentFooterButtons: widget.persistentFooterButtons,
+    );
+  }
+}
+
+final isLoadingProvider = StateProvider<bool>(
+  // We return the default sort type, here name.
+  (ref) => false,
+);

+ 2 - 0
lib/core/core.dart

@@ -0,0 +1,2 @@
+export 'routes.dart';
+export 'utils.dart';

+ 0 - 0
lib/core/my_cache.dart


+ 92 - 0
lib/core/my_theme.dart

@@ -0,0 +1,92 @@
+import 'package:flutter/material.dart';
+import 'package:flutter_riverpod/flutter_riverpod.dart';
+
+final appThemeProvider = StateProvider<bool>((ref) => true);
+
+ThemeData myTheme(BuildContext context, bool isDarkTheme) {
+  if (isDarkTheme) {
+    return ThemeData.dark();
+  } else {
+    return ThemeData.light();
+  }
+}
+
+// import 'package:flutter/material.dart';
+// import 'package:flutter_riverpod/flutter_riverpod.dart';
+
+// AppColors colors(context) => Theme.of(context).extension<AppColors>()!;
+
+// final appThemeProvider = StateProvider<bool>((ref) => true);
+
+// ThemeData getAppTheme(BuildContext context, bool isDarkTheme) {
+//   //return isDarkTheme ? ThemeData.dark() : ThemeData.light();
+
+//   return (isDarkTheme ? ThemeData.dark() : ThemeData.light()).copyWith(
+//     extensions: <ThemeExtension<AppColors>>[
+//       AppColors(
+//         color1: isDarkTheme ? Colors.blue : Colors.green,
+//         color2: isDarkTheme ? Colors.pink : Colors.blue,
+//         color3: isDarkTheme ? Colors.yellow : Colors.red,
+//       ),
+//     ],
+//     scaffoldBackgroundColor: isDarkTheme ? Colors.black : Colors.white,
+//     textTheme: Theme.of(context)
+//         .textTheme
+//         .copyWith(
+//           titleSmall:
+//               Theme.of(context).textTheme.titleSmall?.copyWith(fontSize: 12),
+//         )
+//         .apply(
+//           bodyColor: isDarkTheme ? Colors.white : Colors.black,
+//           displayColor: Colors.grey,
+//         ),
+//     switchTheme: SwitchThemeData(
+//       thumbColor: MaterialStateProperty.all(
+//           isDarkTheme ? Colors.orange : Colors.purple),
+//     ),
+//     listTileTheme: ListTileThemeData(
+//         iconColor: isDarkTheme ? Colors.orange : Colors.purple),
+//     appBarTheme: AppBarTheme(
+//         //backgroundColor: isDarkTheme ? Colors.black : Colors.white,
+//         iconTheme:
+//             IconThemeData(color: isDarkTheme ? Colors.white : Colors.black54)),
+//   );
+// }
+
+// @immutable
+// class AppColors extends ThemeExtension<AppColors> {
+//   final Color? color1;
+//   final Color? color2;
+//   final Color? color3;
+
+//   const AppColors({
+//     required this.color1,
+//     required this.color2,
+//     required this.color3,
+//   });
+
+//   @override
+//   AppColors copyWith({
+//     Color? color1,
+//     Color? color2,
+//     Color? color3,
+//   }) {
+//     return AppColors(
+//       color1: color1 ?? this.color1,
+//       color2: color2 ?? this.color2,
+//       color3: color3 ?? this.color3,
+//     );
+//   }
+
+//   @override
+//   AppColors lerp(ThemeExtension<AppColors>? other, double t) {
+//     if (other is! AppColors) {
+//       return this;
+//     }
+//     return AppColors(
+//       color1: Color.lerp(color1, other.color1, t),
+//       color2: Color.lerp(color2, other.color2, t),
+//       color3: Color.lerp(color3, other.color3, t),
+//     );
+//   }
+// }

+ 252 - 0
lib/core/routes.dart

@@ -0,0 +1,252 @@
+import 'dart:developer';
+
+import 'package:flutter/material.dart';
+import 'package:flutter_riverpod/flutter_riverpod.dart';
+import 'package:go_router/go_router.dart';
+import 'package:hive_flutter/hive_flutter.dart';
+import 'package:jiffy/jiffy.dart';
+import 'package:tp5/auth/auth.dart';
+import 'package:tp5/core/basic_page.dart';
+import 'package:tp5/core/utils.dart';
+import 'package:tp5/flightslist/flightslist_page.dart';
+import 'package:tp5/fltinfo/view/dutyinfo_page.dart';
+import 'package:tp5/fltinfo/view/fltinfo_page.dart';
+import 'package:tp5/ftl/view/ftl_page.dart';
+import 'package:tp5/lido/view/lido_form.dart';
+import 'package:tp5/lido/view/lidolist_page.dart';
+import 'package:tp5/lido/view/lidoofp_page.dart';
+import 'package:tp5/onboarding/onboarding.dart';
+import 'package:tp5/pdf/pdf_page.dart';
+import 'package:tp5/roster/view/crewlink_form.dart';
+import 'package:tp5/roster/view/crewlist_page.dart';
+import 'package:tp5/roster/view/roster_page.dart';
+import 'package:tp5/rosters/rosters_page.dart';
+
+final routeProvider = Provider<RouterConfig<Object>?>((ref) {
+  return _routes;
+});
+
+final _routes = GoRouter(
+  debugLogDiagnostics: false,
+  redirect: (_, s) {
+    log("${s.fullPath} | ${s.extra.runtimeType.toString()}", name: "routes");
+    if (DateTime.now().isAfter(DateTime(2024, 11, 1))) {
+      return "/expired";
+    }
+
+    return null;
+  },
+//  initialLocation: '/test',
+  initialLocation: '/crewlink/roster',
+  routes: [
+    GoRoute(
+      path: '/test',
+      builder: (context, state) => BasicPage(
+        appBar: AppBar(
+          automaticallyImplyLeading: false,
+          title: const Text("TAR Pilot v5"),
+        ),
+        drawer: ListView(),
+        body: Column(
+          children: [
+            Text("${Jiffy.parseFromList([
+                  2024,
+                  9,
+                  1,
+                  20,
+                  0
+                ], isUtc: true).setTz(ap: "TUN").toUtc().dateTime}"),
+            Text(DTInterval.fromHm(
+                    apartir:
+                        Jiffy.parseFromList([2024, 9, 1, 1, 1], isUtc: true)
+                            .setTz(ap: "TUN"),
+                    h: 2,
+                    m: 0,
+                    duration: const Duration(hours: 2, minutes: 59),
+                    ap: "TUN")
+                .start
+                .dateTime
+                .toIso8601String())
+          ],
+        ),
+      ),
+    ),
+    GoRoute(
+      path: '/expired',
+      builder: (context, state) => BasicPage(
+          appBar: AppBar(
+            automaticallyImplyLeading: false,
+            title: const Text("TAR Pilot v5"),
+          ),
+          drawer: ListView(),
+          body: const Text("App is Expired please Update")),
+    ),
+    GoRoute(
+      path: '/login',
+      builder: (context, state) => const LoginPage(),
+    ),
+    GoRoute(
+      path: '/verification',
+      builder: (context, state) {
+        final params = state.extra as VerificationPageParams?;
+
+        if (params == null) {
+          throw 'Missing `VerificationPageParams` object';
+        }
+
+        return VerificationPage(params: params);
+      },
+    ),
+    GoRoute(
+      path: '/pdf',
+      builder: (context, state) {
+        final params = state.extra as PdfPageParams;
+        return PdfPage(params: params);
+      },
+    ),
+    GoRoute(
+      path: '/rosters',
+      builder: (context, state) {
+        return const RostersPage();
+      },
+    ),
+    GoRoute(
+      path: '/flightslist',
+      builder: (context, state) {
+        return const FlightslistPage();
+      },
+    ),
+    GoRoute(
+      path: '/ftl',
+      builder: (context, state) {
+        final params = (state.extra as FtlPageParams?) ?? const FtlPageParams();
+        return FtlPage(params: params);
+      },
+    ),
+    GoRoute(
+      path: '/fltinfo',
+      builder: (context, state) {
+        final params = (state.extra as FltinfoParams?) ?? const FltinfoParams();
+        return FltinfoPage(params: params);
+      },
+    ),
+    GoRoute(
+      path: '/dutyinfo',
+      builder: (context, state) {
+        final params =
+            (state.extra as DutyinfoParams?) ?? const DutyinfoParams();
+        return DutyinfoPage(params: params);
+      },
+    ),
+    GoRoute(
+        path: "/lido",
+        redirect: (_, state) {
+          // log(state.fullPath.toString());
+          if
+              // (["/crewlink/roster"].contains(state.uri.toString())&&
+              (state.fullPath != "/lido/settings" &&
+                  (((Hive.box("profile").get("lido_user") ?? "") == "") ||
+                      ((Hive.box("profile").get("lido_pass") ?? "") == ""))) {
+            return "/lido/settings";
+          }
+          return null;
+        },
+        routes: [
+          GoRoute(
+              name: "lido.list",
+              path: 'list',
+              builder: (context, state) {
+                final params = (state.extra as LidolistPageParams?) ??
+                    const LidolistPageParams();
+                return LidolistPage(params: params);
+              }),
+          GoRoute(
+              name: "lido.ofp",
+              path: 'ofp',
+              builder: (context, state) {
+                final params = (state.extra as LidoofpPageParams?) ??
+                    const LidoofpPageParams();
+                return LidoofpPage(params: params);
+              }),
+          GoRoute(
+              path: 'settings', builder: (context, state) => const LidoForm()),
+        ]),
+    GoRoute(
+        path: "/crewlink",
+        redirect: (_, state) {
+          // log(state.fullPath.toString());
+          if
+              // (["/crewlink/roster"].contains(state.uri.toString())&&
+              (state.fullPath != "/crewlink/settings" &&
+                  (((Hive.box("profile").get("crewlink_user") ?? "") == "") ||
+                      ((Hive.box("profile").get("crewlink_pass") ?? "") ==
+                          ""))) {
+            return "/crewlink/settings";
+          }
+          return null;
+        },
+        routes: [
+          GoRoute(
+              name: "crewlink.roster",
+              path: 'roster',
+              builder: (context, state) {
+                final params = (state.extra as RosterPageParams?) ??
+                    const RosterPageParams();
+
+                return RosterPage(
+                  params: RosterPageParams(
+                      datestart: params.datestart ??
+                          Jiffy.now()
+                              .toUtc()
+                              .startOf(Unit.month)
+                              // .subtract(days: 30)
+                              .format(pattern: "ddMMMyy"),
+                      dateend: params.dateend ??
+                          Jiffy.now()
+                              .toUtc()
+                              .endOf(Unit.month)
+                              .format(pattern: "ddMMMyy"),
+                      crewlinkuser: params.crewlinkuser ??
+                          Hive.box("profile").get("crewlink_user") ??
+                          "",
+                      crewlinkpass: params.crewlinkpass ??
+                          Hive.box("profile").get("crewlink_pass") ??
+                          ""),
+                );
+              }),
+          GoRoute(
+              name: "crewlink.crewlist",
+              path: 'crewlist',
+              builder: (context, state) {
+                final params = (state.extra as CrewlistPageParams?) ??
+                    const CrewlistPageParams();
+                print(
+                    "${params.datestart} ${params.dateend} ${params.al} ${params.fnum} ${params.dep} ${params.des}");
+                return CrewlistPage(
+                  params: CrewlistPageParams(
+                      datestart: params.datestart ?? //"04Dec23",
+                          Jiffy.now()
+                              .toUtc()
+                              //.subtract(days: 1)
+                              .format(pattern: "ddMMMyy"),
+                      dateend: params.dateend ?? //"05Dec23",
+                          params.datestart ??
+                          Jiffy.now().toUtc().format(pattern: "ddMMMyy"),
+                      al: params.al ?? "",
+                      fnum: params.fnum ?? "",
+                      dep: params.dep ?? "",
+                      des: params.des ?? "",
+                      crewlinkuser: params.crewlinkuser ??
+                          Hive.box("profile").get("crewlink_user") ??
+                          "",
+                      crewlinkpass: params.crewlinkpass ??
+                          Hive.box("profile").get("crewlink_pass") ??
+                          ""),
+                );
+              }),
+          GoRoute(
+              path: 'settings',
+              builder: (context, state) => const CrewlinkForm()),
+        ])
+  ],
+);

+ 365 - 0
lib/core/utils.dart

@@ -0,0 +1,365 @@
+import 'dart:async';
+import 'dart:io';
+
+import 'package:collection/collection.dart';
+import 'package:flutter/material.dart';
+import 'package:flutter_riverpod/flutter_riverpod.dart';
+import 'package:intl/intl.dart';
+import 'package:jiffy/jiffy.dart';
+import 'package:path_provider/path_provider.dart';
+import 'package:timezone/timezone.dart' as tz;
+import 'package:tp5/providers/airports.dart';
+
+extension JiffyExtensions on Jiffy? {
+  Jiffy? latest(Jiffy? val2) {
+    if (this == null) return val2;
+    if (val2 == null) return this;
+    if (this!.isBefore(val2)) {
+      return val2;
+    } else {
+      return this;
+    }
+  }
+
+  Jiffy? earliset(Jiffy? val2) {
+    if (this == null) return val2;
+    if (val2 == null) return this;
+    if (this!.isAfter(val2)) {
+      return val2;
+    } else {
+      return this;
+    }
+  }
+
+  Jiffy max(Jiffy val2) {
+    if (this!.isBefore(val2)) {
+      return val2;
+    } else {
+      return this!;
+    }
+  }
+
+  Jiffy min(Jiffy val2) {
+    if (this!.isAfter(val2)) {
+      return val2;
+    } else {
+      return this!;
+    }
+  }
+
+  Jiffy setTz({String? newtz, String? ap}) =>
+      Jiffy.parseFromDateTime(tz.TZDateTime.from(
+          this!.dateTime,
+          (ap != null)
+              ? (tz.getLocation(Airports.find(ap)?.timezoneid ?? "UTC"))
+              : (tz.getLocation(newtz ?? "UTC"))));
+}
+
+extension DurationLExtensions on List<Duration> {
+  Duration get sum => fold(
+      Duration.zero, (p, e) => Duration(minutes: p.inMinutes + e.inMinutes));
+}
+
+extension DurationExtensions on Duration {
+  Duration max(Duration value) {
+    return Duration(
+        milliseconds: (inMilliseconds >= value.inMilliseconds)
+            ? inMilliseconds
+            : value.inMilliseconds);
+  }
+
+  Duration add(Duration value) {
+    return Duration(milliseconds: inMilliseconds + value.inMilliseconds);
+  }
+
+  Duration subtract(Duration value) {
+    return Duration(milliseconds: inMilliseconds - value.inMilliseconds);
+  }
+
+  Duration multiply(double value) {
+    return Duration(milliseconds: (inMilliseconds * value).ceil());
+  }
+  // Duration intersect(Jiffy start, Jiffy end, dynamic interval) {
+  //   if (interval is List<Jiffy> && interval.length == 2) {
+  //     if ((interval[0].isSameOrBefore(start) &&
+  //             interval[1].isSameOrBefore(start)) ||
+  //         (interval[0].isSameOrAfter(end) && interval[1].isSameOrAfter(end))) {
+  //       return Duration.zero;
+  //     } else if (interval[0].isSameOrAfter(start) &&
+  //         interval[1].isSameOrBefore(end)) {
+  //       return Duration(
+  //           minutes:
+  //               interval[1].diff(interval[0], unit: Unit.minute).toInt().abs());
+  //     } else if (interval[0].isSameOrBefore(start) &&
+  //         interval[1].isSameOrAfter(end)) {
+  //       return Duration(
+  //           minutes: start.diff(end, unit: Unit.minute).toInt().abs());
+  //     } else if (interval[0].isSameOrBefore(start) &&
+  //         interval[1].isSameOrBefore(end)) {
+  //       return Duration(
+  //           minutes: start.diff(interval[1], unit: Unit.minute).toInt().abs());
+  //     } else if (interval[0].isSameOrAfter(start) &&
+  //         interval[1].isSameOrAfter(end)) {
+  //       return Duration(
+  //           minutes: interval[0].diff(end, unit: Unit.minute).toInt().abs());
+  //     } else {
+  //       return Duration.zero;
+  //     }
+  //   } else if (interval is List<List<Jiffy>>) {
+  //     return Duration(
+  //         minutes: interval.map((e) => intersect(start, end, e).inMinutes).sum);
+  //   }
+
+  //   throw ("Unknown type in Duration intersect: ${interval.first.runtimeType}");
+  //   // return Duration.zero;
+  // }
+
+  String get tohhmm =>
+      "${NumberFormat("00").format(inHours)}:${NumberFormat("00").format(inMinutes % 60)}";
+}
+
+extension StringExtensions on String {
+  String capitalize() {
+    if (isEmpty) {
+      return this;
+    } else {
+      return "${this[0].toUpperCase()}${substring(1).toLowerCase()}";
+    }
+  }
+
+  String capitalizeword() {
+    return split(' ').map((word) => word.capitalize()).join(' ');
+  }
+
+  Jiffy? parseddmmyyyyhhmm() => length >= 15
+      ? Jiffy.parse(
+          "${substring(6, 10)}-${substring(3, 5)}-${substring(0, 2)} ${substring(11, 13)}:${substring(13, 15)}",
+          pattern: 'yyyy-MM-dd HH:mm',
+          isUtc: true)
+      : null;
+  Jiffy? parseyyyymmddhhmm() => length >= 16
+      ? Jiffy.parse(this,
+          pattern: 'yyyy-MM-dd HH:mm:ss',
+          // "${substring(6, 10)}-${substring(3, 5)}-${substring(0, 2)} ${substring(11, 13)}${substring(13, 16)}",
+          // pattern: 'yyyy-MM-dd HH:mm',
+          isUtc: true)
+      : null;
+}
+
+extension BuildContextExt on BuildContext {
+  ScaffoldFeatureController<SnackBar, SnackBarClosedReason> showAlert(
+    String message,
+  ) =>
+      ScaffoldMessenger.of(this).showSnackBar(
+        SnackBar(
+          content: Text(
+            message,
+          ),
+          duration: const Duration(milliseconds: 5000),
+        ),
+      );
+  ScaffoldFeatureController<SnackBar, SnackBarClosedReason> showError(
+    String message,
+  ) =>
+      ScaffoldMessenger.of(this).showSnackBar(
+        SnackBar(
+          backgroundColor: Colors.red,
+          content: Text(
+            message,
+            style: const TextStyle(
+                color: Colors.white, fontWeight: FontWeight.w700),
+          ),
+          duration: const Duration(milliseconds: 5000),
+        ),
+      );
+
+  ScaffoldFeatureController<SnackBar, SnackBarClosedReason> showSuccess(
+    String message,
+  ) =>
+      ScaffoldMessenger.of(this).showSnackBar(
+        SnackBar(
+          backgroundColor: Colors.green,
+          content: Text(
+            message,
+            style: const TextStyle(
+                color: Colors.white, fontWeight: FontWeight.w700),
+          ),
+          duration: const Duration(milliseconds: 5000),
+        ),
+      );
+
+  Future<T?> showBottomSheet<T>({
+    required Widget child,
+  }) =>
+      showModalBottomSheet<T>(
+        context: this,
+        builder: (_) => child,
+      );
+}
+
+extension AlertDialogExt on AlertDialog {
+  dynamic show(BuildContext context) => showDialog(
+        context: context,
+        builder: (BuildContext mycontext) => this,
+      );
+}
+
+class ClockNotifier extends StateNotifier<Jiffy> {
+  ClockNotifier() : super(Jiffy.now()) {
+    timer = Timer.periodic(const Duration(minutes: 1), (timer) {
+      state = Jiffy.now().toUtc();
+    });
+  }
+  @override
+  void dispose() {
+    timer.cancel();
+    super.dispose();
+  }
+
+  late final Timer timer;
+}
+
+final StateNotifierProvider<ClockNotifier, Jiffy> clockProvider =
+    StateNotifierProvider<ClockNotifier, Jiffy>(
+  (_) => ClockNotifier(),
+);
+
+class PathTo {
+  static final PathTo _instance = PathTo._internal();
+  factory PathTo() => _instance;
+  PathTo._internal();
+  late Directory _doc;
+  Future<void> initialize() async {
+    _doc = await getApplicationDocumentsDirectory();
+    for (var dir in dirs) {
+      if (!subd(dir).existsSync()) {
+        subd(dir).createSync(recursive: true);
+      }
+    }
+  }
+
+  Directory subd(dynamic x) {
+    if (x is String) {
+      return Directory("${_doc.path}/$x");
+      // } else if (x is Directory) {
+      //   return Directory("${_doc.path}/${x.path}");
+    } else if (x is List<String>) {
+      return subd(x.join("/"));
+    } else {
+      throw ("subd : x is not String nor List");
+    }
+  }
+
+  final List<String> dirs = ["crewlink", "lido", "csv", "download"];
+
+  String crewlinkFile(String file) => subd(["crewlink", file]).path;
+  String csvFile(String file) => subd(["csv", file]).path;
+  String lidoFile(String file) => subd(["lido", file]).path;
+  String downloadFile(String file) => subd(["download", file]).path;
+}
+
+class DTInterval {
+  late Jiffy start;
+  late Jiffy end;
+  DTInterval(this.start, this.end);
+  @override
+  String toString() =>
+      "<${start.format(pattern: "ddMMMyy HH:mm")} - ${end.format(pattern: "ddMMMyy HH:mm")}>";
+
+//apartir has to be utc
+  DTInterval.fromHm({
+    required Jiffy apartir,
+    required int h,
+    required int m,
+    required Duration duration,
+    required String ap,
+  }) {
+    final Jiffy apartirCorrected = apartir.clone().setTz(ap: ap);
+    Jiffy newval = Jiffy.parseFromDateTime(
+        apartirCorrected.dateTime.copyWith(hour: h, minute: m));
+    if (newval.isBefore(apartirCorrected)) newval = newval.add(days: 1);
+    start = newval.toUtc();
+    end = start.addDuration(duration).toUtc();
+  }
+  // DTInterval.fromHm({
+  //   required Jiffy apartir,
+  //   required int h,
+  //   required int m,
+  //   required Duration duration,
+  // }) {
+  //   Jiffy newval = Jiffy.parseFromDateTime(
+  //       apartir.clone().dateTime.copyWith(hour: h, minute: m));
+  //   if (newval.isBefore(apartir)) newval = newval.add(days: 1);
+  //   start = newval;
+  //   end = start.addDuration(duration);
+  // }
+
+  bool include(Jiffy x) {
+    return x.isSameOrAfter(start) && x.isSameOrBefore(end);
+  }
+
+  bool isOverlap(DTInterval x) {
+    return x.start.isSameOrBefore(end) && x.end.isSameOrAfter(start);
+  }
+
+  bool contains(DTInterval x) {
+    return include(x.start) && include(x.end);
+  }
+
+  DTInterval? intersection(DTInterval x) {
+    if (!isOverlap(x)) {
+      return null;
+    } else {
+      return DTInterval(start.max(x.start), end.min(x.end));
+    }
+  }
+
+  List<DTInterval> intersectionmany(List<DTInterval> x) {
+    return x.map((e) => intersection(e)).nonNulls.toList();
+  }
+
+  List<DTInterval> minus(DTInterval x) {
+    if (!isOverlap(x)) {
+      return [this];
+    } else if (x.include(start) && x.include(end)) {
+      return [];
+    } else if (x.include(start)) {
+      return [DTInterval(x.end, end)];
+    } else if (x.include(end)) {
+      return [DTInterval(start, x.start)];
+    } else {
+      return [DTInterval(start, x.start), DTInterval(x.end, end)];
+    }
+  }
+
+  // List<DTInterval> minus(DTInterval other) {
+  //   List<DTInterval> result = [];
+  //   if (start.isBefore(other.start) && end.isAfter(other.start)) {
+  //     result.add(DTInterval(start, other.start));
+  //   }
+  //   if (start.isBefore(other.end) && end.isAfter(other.end)) {
+  //     result.add(DTInterval(other.end, end));
+  //   }
+  //   return result;
+  // }
+
+  List<DTInterval> minusmany(List<DTInterval> x) {
+    List<DTInterval> res = [this];
+    for (var e in x) {
+      res = res.map((f) => f.minus(e)).flattened.toList();
+    }
+    return res;
+  }
+
+  Duration get duration => end.dateTime.difference(start.dateTime);
+  // Duration get duration => Duration(
+  //     milliseconds: end.diff(start, unit: Unit.millisecond).abs().ceil());
+
+  bool isEmpty() {
+    return start.isSameOrAfter(end);
+  }
+
+  DTInterval toUtc() {
+    return DTInterval(start.toUtc(), end.toUtc());
+  }
+}

+ 54 - 0
lib/csv/acleginfo.txt

@@ -0,0 +1,54 @@
+LEG_NO,
+FN_CARRIER,
+FN_NUMBER,
+FN_SUFFIX,
+DAY_OF_ORIGIN,
+AC_OWNER,
+AC_SUBTYPE,
+AC_VERSION,
+AC_REGISTRATION,
+DEP_AP_ACTUAL,
+DEP_AP_SCHED,
+DEP_DT_EST,
+DEP_SCHED_DT,
+ARR_AP_ACTUAL,
+ARR_AP_SCHED,
+ARR_DT_EST,
+ARR_SCHED_DT,
+SLOT_TIME_ACTUAL,
+LEG_TYPE,
+STATUS,
+EMPLOYER_COCKPIT,
+EMPLOYER_CABIN,
+CYCLES,
+DELAY_CODE_01,
+DELAY_CODE_02,
+DELAY_CODE_03,
+DELAY_CODE_04,
+DELAY_TIME_01,
+DELAY_TIME_02,
+DELAY_TIME_03,
+DELAY_TIME_04,
+SUBDELAY_CODE_01,
+SUBDELAY_CODE_02,
+SUBDELAY_CODE_03,
+SUBDELAY_CODE_04,
+PAX_BOOKED_C,
+PAX_BOOKED_Y,
+PAX_BOOKED_TRS_C,
+PAX_BOOKED_TRS_Y,
+PAD_BOOKED_C,
+PAD_BOOKED_Y,
+OFFBLOCK_DT_A,
+AIRBORNE_DT_A,
+LANDING_DT_A,
+ONBLOCK_DT_A,
+OFFBLOCK_DT_F,
+AIRBORNE_DT_F,
+LANDING_DT_F,
+ONBLOCK_DT_F,
+OFFBLOCK_DT_M,
+AIRBORNE_DT_M,
+LANDING_DT_M,
+ONBLOCK_DT_M,
+EET

+ 71 - 0
lib/csv/csv_data.dart

@@ -0,0 +1,71 @@
+import 'dart:io';
+import 'package:archive/archive.dart';
+import 'package:jiffy/jiffy.dart';
+// import 'package:tp5/core/utils.dart';
+
+class CsvData {
+  static Future<String> extractTextFileFromZip(
+      String zipPath, String textFileName) async {
+    // Read the Zip file from disk.
+    try {
+      final bytes = File(zipPath).readAsBytesSync();
+
+      // Decode the Zip file
+      final archive = ZipDecoder().decodeBytes(bytes);
+
+      // Look for the text file in the archive
+      for (final file in archive) {
+        if (file.name == textFileName) {
+          // Found the text file
+          if (file.isFile) {
+            final data = file.content as List<int>;
+            String content = String.fromCharCodes(data);
+            return content;
+          }
+        }
+      }
+    } finally {}
+    return "";
+  }
+
+  static Jiffy? getLastModified(String zipPath, String textFileName) {
+    final bytes = File(zipPath).readAsBytesSync();
+    final archive = ZipDecoder().decodeBytes(bytes);
+    for (final file in archive) {
+      if (file.name == textFileName) {
+        if (file.isFile) {
+          return Jiffy.parseFromDateTime(file.lastModDateTime);
+        }
+      }
+    }
+    return null;
+  }
+
+  static List<List<dynamic>> csv2list(String text,
+      {bool nulling = true, bool quotes = true, bool trim = true}) {
+    List<List<dynamic>> out = [];
+    final lines = text.split("\n");
+    for (var line in lines) {
+      final cols = line.split(",").map((String? e) {
+        if (e != null && quotes) {
+          e = e.replaceAll('"', "");
+        }
+        if (e != null && trim) {
+          e = e.trim();
+        }
+        if (nulling) {
+          e = (e == "") ? null : e;
+        }
+        return e;
+      }).toList();
+      // print("${out.length}: $cols");
+      if (cols.isNotEmpty && cols.length > 1) out.add(cols);
+    }
+    return out;
+  }
+
+// Usage
+  void main() {
+    extractTextFileFromZip('path/to/your/zipfile.zip', 'your_text_file.txt');
+  }
+}

+ 1539 - 0
lib/csv/data copy.dart.bak

@@ -0,0 +1,1539 @@
+// ignore_for_file: non_constant_identifier_names
+
+import 'dart:async';
+import 'dart:convert';
+import 'dart:io';
+
+import 'package:collection/collection.dart';
+import 'package:flutter/foundation.dart';
+import 'package:flutter_riverpod/flutter_riverpod.dart';
+import 'package:jiffy/jiffy.dart';
+//import 'package:supabase_flutter/supabase_flutter.dart';
+
+import "package:tp5/core/utils.dart";
+import "package:tp5/csv/csv_data.dart";
+
+class CrewFilter {
+  String? college;
+  String? ac;
+  String? tlc;
+  String? fname;
+  String? lname;
+  String? searchname;
+  CrewFilter({
+    this.college,
+    this.ac,
+    this.tlc,
+    this.fname,
+    this.lname,
+    this.searchname,
+  });
+
+  CrewFilter copyWith({
+    ValueGetter<String?>? college,
+    ValueGetter<String?>? ac,
+    ValueGetter<String?>? tlc,
+    ValueGetter<String?>? fname,
+    ValueGetter<String?>? lname,
+    ValueGetter<String?>? searchname,
+  }) {
+    return CrewFilter(
+      college: college != null ? college() : this.college,
+      ac: ac != null ? ac() : this.ac,
+      tlc: tlc != null ? tlc() : this.tlc,
+      fname: fname != null ? fname() : this.fname,
+      lname: lname != null ? lname() : this.lname,
+      searchname: searchname != null ? searchname() : this.searchname,
+    );
+  }
+
+  Map<String, dynamic> toMap() {
+    return {
+      'college': college,
+      'ac': ac,
+      'tlc': tlc,
+      'fname': fname,
+      'lname': lname,
+      'searchname': searchname,
+    };
+  }
+
+  factory CrewFilter.fromMap(Map<String, dynamic> map) {
+    return CrewFilter(
+      college: map['college'],
+      ac: map['ac'],
+      tlc: map['tlc'],
+      fname: map['fname'],
+      lname: map['lname'],
+      searchname: map['searchname'],
+    );
+  }
+
+  String toJson() => json.encode(toMap());
+
+  factory CrewFilter.fromJson(String source) =>
+      CrewFilter.fromMap(json.decode(source));
+
+  @override
+  String toString() {
+    return 'CrewFilter(college: $college, ac: $ac, tlc: $tlc, fname: $fname, lname: $lname, searchname: $searchname)';
+  }
+
+  @override
+  bool operator ==(Object other) {
+    if (identical(this, other)) return true;
+
+    return other is CrewFilter &&
+        other.college == college &&
+        other.ac == ac &&
+        other.tlc == tlc &&
+        other.fname == fname &&
+        other.lname == lname &&
+        other.searchname == searchname;
+  }
+
+  @override
+  int get hashCode {
+    return college.hashCode ^
+        ac.hashCode ^
+        tlc.hashCode ^
+        fname.hashCode ^
+        lname.hashCode ^
+        searchname.hashCode;
+  }
+}
+
+class FlightFilter {
+  String? al;
+  String? fnum;
+  String? date;
+  String? dep;
+  String? arr;
+  Jiffy? jdep;
+  Jiffy? jarr;
+  String? tlc;
+  String? reg;
+  FlightFilter(
+      {this.al,
+      this.fnum,
+      this.date,
+      this.dep,
+      this.arr,
+      this.jdep,
+      this.jarr,
+      this.tlc,
+      this.reg});
+  @override
+  bool operator ==(Object other) {
+    if (identical(this, other)) return true;
+
+    return other is FlightFilter &&
+        other.al == al &&
+        other.fnum == fnum &&
+        other.date == date &&
+        other.dep == dep &&
+        other.arr == arr &&
+        other.jdep == jdep &&
+        other.jarr == jarr &&
+        other.tlc == tlc &&
+        other.reg == reg;
+  }
+
+  FlightFilter copyWith({
+    ValueGetter<String?>? al,
+    ValueGetter<String?>? fnum,
+    ValueGetter<String?>? date,
+    ValueGetter<String?>? dep,
+    ValueGetter<String?>? arr,
+    ValueGetter<Jiffy?>? jdep,
+    ValueGetter<Jiffy?>? jarr,
+    ValueGetter<String?>? tlc,
+    ValueGetter<String?>? reg,
+  }) {
+    return FlightFilter(
+      al: al != null ? al() : this.al,
+      fnum: fnum != null ? fnum() : this.fnum,
+      date: date != null ? date() : this.date,
+      dep: dep != null ? dep() : this.dep,
+      arr: arr != null ? arr() : this.arr,
+      jdep: jdep != null ? jdep() : this.jdep,
+      jarr: jarr != null ? jarr() : this.jarr,
+      tlc: tlc != null ? tlc() : this.tlc,
+      reg: reg != null ? reg() : this.reg,
+    );
+  }
+
+  Map<String, dynamic> toMap() {
+    return {
+      'al': al,
+      'fnum': fnum,
+      'date': date,
+      'dep': dep,
+      'arr': arr,
+      'jdep': jdep?.toString(),
+      'jarr': jarr?.toString(),
+      'tlc': tlc,
+      'reg': reg,
+    };
+  }
+
+  factory FlightFilter.fromMap(Map<String, dynamic> map) {
+    return FlightFilter(
+      al: map['al'],
+      fnum: map['fnum'],
+      date: map['date'],
+      dep: map['dep'],
+      arr: map['arr'],
+      jdep: map['jdep'] != null ? Jiffy.parse(map['jdep']) : null,
+      jarr: map['jarr'] != null ? Jiffy.parse(map['jarr']) : null,
+      tlc: map['tlc'],
+      reg: map['reg'],
+    );
+  }
+
+  String toJson() => json.encode(toMap());
+
+  factory FlightFilter.fromJson(String source) =>
+      FlightFilter.fromMap(json.decode(source));
+
+  @override
+  String toString() {
+    return 'FlightFilter(al: $al, fnum: $fnum, date: $date, dep: $dep, arr: $arr, jdep: $jdep, jarr: $jarr, tlc: $tlc, reg: $reg)';
+  }
+
+  @override
+  int get hashCode {
+    return al.hashCode ^
+        fnum.hashCode ^
+        date.hashCode ^
+        dep.hashCode ^
+        arr.hashCode ^
+        jdep.hashCode ^
+        jarr.hashCode ^
+        tlc.hashCode ^
+        reg.hashCode;
+  }
+}
+
+final pnlegByTlcProvider =
+    Provider. /*autoDispose.*/ family<List<Pnleg>, String>((ref, tlc) => ref
+        .watch(dataProvider)
+        .pnleg
+        .where((leg) => leg.tlc == tlc)
+        .sortedBy((e) =>
+            e.jdep?.dateTime ??
+            Jiffy.parse(e.depdate ?? "01/01/2001",
+                    pattern: "dd/MM/yyyy", isUtc: true)
+                .dateTime)
+        .toList());
+
+final pnlegProvider = Provider.autoDispose.family<List<Pnleg>, FlightFilter>(
+    (ref, flightFilter) => ref
+        .watch(dataProvider)
+        .pnleg
+        .where((leg) =>
+            (leg.al == (flightFilter.al ?? leg.al)) &&
+            (leg.fnum == (flightFilter.fnum ?? leg.fnum)) &&
+            // (leg.jdep?.yMd ==
+            //     (flightFilter.date ?? leg.jdep?.yMd)) && //format yyyy-MM-dd
+            (leg.dep == (flightFilter.dep ?? leg.dep)) &&
+            (leg.arr == (flightFilter.arr ?? leg.arr)) &&
+            (flightFilter.jdep == null ||
+                (leg.jdep != null &&
+                    flightFilter.jdep != null &&
+                    flightFilter.jdep!.isBetween(leg.jdep!.subtract(hours: 5),
+                        leg.jdep!.add(hours: 5)))) &&
+            (flightFilter.jarr == null ||
+                (leg.jarr != null &&
+                    flightFilter.jarr != null &&
+                    flightFilter.jarr!.isBetween(leg.jarr!.subtract(hours: 5),
+                        leg.jarr!.add(hours: 5)))) &&
+            (leg.tlc == (flightFilter.tlc ?? leg.tlc)))
+        .toList());
+
+/*
+final pnlegInterval = Provider((ref) {
+  final pnleg = ref.watch(dataProvider).pnleg;
+  return pnleg.where((leg) => leg.jdep != null && leg.jarr != null).toList();
+});
+
+
+final pnlegDates = Provider((ref) {
+  final pnleg = ref.watch(dataProvider).pnleg;
+  return pnleg.fold(
+      <Jiffy?>{},
+      (t, e) => [...t, e.jdep?.startOf(Unit.day)]
+          .whereNotNull()
+          .sortedBy((k) => k.millisecondsSinceEpoch.toString())
+          .toSet());
+});
+
+final pnlegTlcs = Provider((ref) {
+  final data = ref.watch(dataProvider);
+  final pnleg = data.pnleg;
+  final qualif = data.qualif;
+
+  return pnleg.fold(<String?>{}, (t, e) => {...t, e.tlc}).sortedBy((k) =>
+      qualif.firstWhereOrNull((q) => q.tlc == k)?.lname ?? "zzzzzzzzzzzzz");
+});
+*/
+
+class PnlegMeta {
+  PnlegMeta({required this.tlcs, required this.dates});
+  final List<String> tlcs;
+  final List<Jiffy> dates;
+}
+
+final pnlegMeta = Provider((ref) {
+  print("data: start analyzing pnleg");
+  final now = Jiffy.now();
+  final pnlegs = ref.watch(dataProvider).pnleg;
+  final qualif = ref.watch(dataProvider).qualif;
+  Set<String> tlcs = {};
+  Set<Jiffy> dates = {};
+  for (Pnleg pnleg in pnlegs) {
+    tlcs.add(pnleg.tlc ?? "");
+    dates.add(pnleg.jdep?.startOf(Unit.day) ??
+        Jiffy.parse(pnleg.date ?? "01/01/1970",
+            pattern: "dd/MM/yyyy", isUtc: true));
+  }
+  final restlcs = tlcs.sortedBy((k) =>
+      qualif.firstWhereOrNull((q) => q.tlc == k)?.lname ?? "zzzzzzzzzzzzz");
+  final resdates = dates.sortedBy((k) => k.millisecondsSinceEpoch.toString());
+  print(
+      "data: end analyzing pnleg ${Duration(milliseconds: Jiffy.now().millisecondsSinceEpoch - now.millisecondsSinceEpoch).inSeconds} sec");
+  return PnlegMeta(tlcs: restlcs, dates: resdates);
+});
+
+final aclegProvider = Provider.autoDispose.family<List<Acleg>, FlightFilter>(
+    (ref, flightFilter) => ref
+        .watch(dataProvider)
+        .acleg
+        .where((leg) =>
+            (leg.FN_CARRIER == (flightFilter.al ?? leg.FN_CARRIER)) &&
+            (leg.FN_NUMBER == (flightFilter.fnum ?? leg.FN_NUMBER)) &&
+//            (leg.jdep?.yMd ==
+//                (flightFilter.date ?? leg.jdep?.yMd)) && //format yyyy-MM-dd
+            (leg.DEP_AP_ACTUAL == (flightFilter.dep ?? leg.DEP_AP_ACTUAL)) &&
+            (leg.DEP_AP_SCHED == (flightFilter.dep ?? leg.DEP_AP_SCHED)) &&
+            (leg.ARR_AP_ACTUAL == (flightFilter.arr ?? leg.ARR_AP_ACTUAL)) &&
+            (leg.ARR_AP_SCHED == (flightFilter.arr ?? leg.ARR_AP_SCHED)) &&
+            (flightFilter.jdep == null ||
+                (leg.jdep != null &&
+                    flightFilter.jdep != null &&
+                    flightFilter.jdep!.isBetween(leg.jdep!.subtract(hours: 5),
+                        leg.jdep!.add(hours: 5)))) &&
+            (flightFilter.jarr == null ||
+                (leg.jarr != null &&
+                    flightFilter.jarr != null &&
+                    flightFilter.jarr!.isBetween(leg.jarr!.subtract(hours: 5),
+                        leg.jarr!.add(hours: 5)))) &&
+            (leg.AC_REGISTRATION == (flightFilter.reg ?? leg.AC_REGISTRATION)))
+        .toList());
+
+final qualifProvider = Provider.family<List<Qualif>, CrewFilter>(
+    (ref, crewFilter) => ref
+        .watch(dataProvider)
+        .qualif
+        .where((x) => (((crewFilter.tlc ?? x.tlc) == x.tlc &&
+            (crewFilter.college ?? x.college) == x.college &&
+            (crewFilter.ac ?? x.ac) == x.ac &&
+            (crewFilter.lname ?? x.lname ?? "").capitalize() ==
+                (x.lname ?? "").capitalize() &&
+            (crewFilter.fname ?? x.fname ?? "").capitalize() ==
+                (x.fname ?? "").capitalize() &&
+            //search like
+            (crewFilter.searchname == null ||
+                (x.fname ?? "")
+                    .capitalize()
+                    .contains(crewFilter.searchname!.capitalize())) &&
+            (crewFilter.searchname == null ||
+                (x.lname ?? "")
+                    .capitalize()
+                    .contains(crewFilter.searchname!.capitalize())))))
+        .toList());
+
+final dataProvider = StateNotifierProvider<DataNotifier, DataState>((ref) {
+  return DataNotifier();
+});
+
+class DataState {
+  List<Qualif> qualif;
+
+  List<Pnleg> pnleg;
+
+  List<Acleg> acleg;
+
+  Jiffy? qualifupdate;
+  Jiffy? pnlegupdate;
+  Jiffy? aclegupdate;
+
+  DataState({
+    this.qualif = const [],
+    this.pnleg = const [],
+    this.acleg = const [],
+    this.qualifupdate,
+    this.pnlegupdate,
+    this.aclegupdate,
+  });
+
+  DataState copyWith({
+    List<Qualif>? qualif,
+    List<Pnleg>? pnleg,
+    List<Acleg>? acleg,
+    Jiffy? qualifupdate,
+    Jiffy? pnlegupdate,
+    Jiffy? aclegupdate,
+  }) {
+    return DataState(
+      qualif: qualif ?? this.qualif,
+      pnleg: pnleg ?? this.pnleg,
+      acleg: acleg ?? this.acleg,
+      qualifupdate: qualifupdate ?? this.qualifupdate,
+      pnlegupdate: pnlegupdate ?? this.pnlegupdate,
+      aclegupdate: aclegupdate ?? this.aclegupdate,
+    );
+  }
+
+  @override
+  String toString() {
+    return 'DataState(qualif: $qualif, pnleg: $pnleg, acleg: $acleg, qualifupdate: $qualifupdate, pnlegupdate: $pnlegupdate, aclegupdate: $aclegupdate)';
+  }
+
+  @override
+  bool operator ==(Object other) {
+    if (identical(this, other)) return true;
+
+    return other is DataState &&
+        listEquals(other.qualif, qualif) &&
+        listEquals(other.pnleg, pnleg) &&
+        listEquals(other.acleg, acleg) &&
+        other.qualifupdate == qualifupdate &&
+        other.pnlegupdate == pnlegupdate &&
+        other.aclegupdate == aclegupdate;
+  }
+
+  @override
+  int get hashCode {
+    return qualif.hashCode ^
+        pnleg.hashCode ^
+        acleg.hashCode ^
+        qualifupdate.hashCode ^
+        pnlegupdate.hashCode ^
+        aclegupdate.hashCode;
+  }
+}
+
+class DataNotifier extends StateNotifier<DataState> {
+  DataNotifier() : super(DataState()) {
+    loadAll();
+    _timer = Timer.periodic(const Duration(seconds: 10), (timer) async {
+      //update file and load
+      // final response = await Supabase.instance.client.storage.from('your_bucket_name').;
+      print("data: timer tick, check csv files");
+      // print(acleg.where((x) => x.pad_booked != null).map((x) => x.pad_booked));
+      await loadAll();
+    });
+  }
+
+  @override
+  void dispose() {
+    _timer.cancel();
+    super.dispose();
+  }
+
+  loadAll() async {
+    if (pnlegmoistime != pnlegmoisupdate) await loadPnlegsmois();
+    if (aclegtime != aclegupdate) await loadAclegs();
+    if (pnleg3time != pnleg3update) await loadPnlegs3();
+    if (qualiftime != qualifupdate) await loadQualif();
+  }
+
+  late Timer _timer;
+
+  Jiffy? qualifupdate;
+  String get qualiffile => PathTo().csvFile("exportlicence.txt");
+  Jiffy? get qualiftime => File(qualiffile).existsSync()
+      ? Jiffy.parseFromDateTime(
+          File(PathTo().csvFile("exportlicence.txt")).lastModifiedSync())
+      : null;
+  List<Qualif> qualif = [];
+  loadQualif() async {
+    print("data: qualif update ${qualiftime?.dateTime}");
+    final txt = await File(qualiffile).readAsString();
+    qualif = CsvData.csv2list(txt).map((e) => Qualif.fromList(e)).toList();
+    qualifupdate = qualiftime;
+    state = state.copyWith(qualifupdate: qualifupdate, qualif: qualif);
+  }
+
+  Jiffy? aclegupdate;
+  String get aclegfile => PathTo().csvFile("secondprgtype.zip");
+  Jiffy? get aclegtime => File(aclegfile).existsSync()
+      ? Jiffy.parseFromDateTime(
+          File(PathTo().csvFile("secondprgtype.zip")).lastModifiedSync())
+      : null;
+  List<Acleg> acleg = [];
+  loadAclegs() async {
+    print("data: acleg update ${aclegtime?.dateTime}");
+
+    final txt =
+        await CsvData.extractTextFileFromZip(aclegfile, "secondprgtype.txt");
+    acleg = CsvData.csv2list(txt)
+        .map((e) => Acleg.fromList(e))
+        .where((leg) =>
+            //only flights of Tunisair
+            (leg.EMPLOYER_CABIN == "TU" ||
+                leg.EMPLOYER_COCKPIT == "TU" ||
+                leg.AC_OWNER == "TU"))
+        .sortedBy((e) => e.jdep!.dateTime)
+        .toList();
+    aclegupdate = aclegtime;
+    state = state.copyWith(aclegupdate: aclegupdate, acleg: acleg);
+
+    //print(acleg);
+  }
+
+  List<Pnleg> get pnleg {
+    if (pnlegmoistime != null &&
+        pnleg3time != null &&
+        pnlegmoistime!.isSameOrBefore(pnleg3time!)) {
+      return pnlegmois;
+    } else if (pnlegmoistime != null &&
+        pnleg3time != null &&
+        pnlegmoistime!.isAfter(pnleg3time!)) {
+      final dates3tlc3 = pnleg3.fold(
+          [],
+          (p, e) => p.contains([e.date, e.tlc]) ? p : p
+            ..add([e.date, e.tlc]));
+      return pnlegmois
+          .where((x) => !dates3tlc3.contains([x.date, x.tlc]))
+          .toList()
+        ..addAll(pnleg3); //pnleg3 dabord
+    } else if (pnlegmoistime == null && pnleg3time != null) {
+      return pnleg3;
+    } else if (pnlegmoistime != null && pnleg3time == null) {
+      return pnlegmois;
+    } else {
+      return <Pnleg>[];
+    }
+  }
+
+  Jiffy? pnlegmoisupdate;
+  String get pnlegmoisfile => PathTo().csvFile("ExportPGRGPNmois.zip");
+  Jiffy? get pnlegmoistime => File(pnlegmoisfile).existsSync()
+      ? Jiffy.parseFromDateTime(
+          File(PathTo().csvFile("ExportPGRGPNmois.zip")).lastModifiedSync())
+      : null;
+  List<Pnleg> pnlegmois = [];
+  loadPnlegsmois() async {
+    print("data: pnlegmois update ${pnlegmoistime?.dateTime}");
+
+    final txt = await CsvData.extractTextFileFromZip(
+        pnlegmoisfile, "ExportPGRGPNmois.txt");
+    pnlegmois = CsvData.csv2list(txt).map((e) => Pnleg.fromList(e)).toList();
+    pnlegmoisupdate = pnlegmoistime;
+    state = state.copyWith(pnlegupdate: pnlegmoisupdate, pnleg: pnleg);
+
+    //print(pnlegmois);
+  }
+
+  Jiffy? pnleg3update;
+  String get pnleg3file => PathTo().csvFile("exportPGRGPN.zip");
+  Jiffy? get pnleg3time => File(pnleg3file).existsSync()
+      ? Jiffy.parseFromDateTime(
+          File(PathTo().csvFile("ExportPGRGPNmois.zip")).lastModifiedSync())
+      : null;
+  List<Pnleg> pnleg3 = [];
+  loadPnlegs3() async {
+    print("data: pnleg3 update ${pnleg3time?.dateTime}");
+
+    final txt =
+        await CsvData.extractTextFileFromZip(pnleg3file, "exportPGRGPN.txt");
+    pnleg3 = CsvData.csv2list(txt).map((e) => Pnleg.fromList(e)).toList();
+    pnleg3update = pnleg3time;
+    state = state.copyWith(pnlegupdate: pnleg3update, pnleg: pnleg);
+
+    //print(pnleg3);
+  }
+}
+
+class Qualif {
+  String? tlc;
+  String? lname;
+  String? mname;
+  String? fname;
+  String? date;
+  String? ac;
+  String? college;
+  String? base;
+  Qualif({
+    this.tlc,
+    this.lname,
+    this.mname,
+    this.fname,
+    this.date,
+    this.ac,
+    this.college,
+    this.base,
+  });
+
+  Qualif copyWith({
+    String? tlc,
+    String? lname,
+    String? mname,
+    String? fname,
+    String? date,
+    String? ac,
+    String? college,
+    String? base,
+  }) {
+    return Qualif(
+      tlc: tlc ?? this.tlc,
+      lname: lname ?? this.lname,
+      mname: mname ?? this.mname,
+      fname: fname ?? this.fname,
+      date: date ?? this.date,
+      ac: ac ?? this.ac,
+      college: college ?? this.college,
+      base: base ?? this.base,
+    );
+  }
+
+  Map<String, dynamic> toMap() {
+    return <String, dynamic>{
+      'tlc': tlc,
+      'lname': lname,
+      'mname': mname,
+      'fname': fname,
+      'date': date,
+      'ac': ac,
+      'college': college,
+      'base': base,
+    };
+  }
+
+  factory Qualif.fromList(List datalist) {
+    return Qualif(
+        tlc: datalist[0],
+        lname: datalist[1],
+        mname: datalist[2],
+        fname: datalist[3],
+        date: datalist[4],
+        ac: datalist[5],
+        college: datalist[6],
+        base: datalist[7]);
+  }
+
+  factory Qualif.fromMap(Map<String, dynamic> map) {
+    return Qualif(
+      tlc: map['tlc'] != null ? map['tlc'] as String : null,
+      lname: map['lname'] != null ? map['lname'] as String : null,
+      mname: map['mname'] != null ? map['mname'] as String : null,
+      fname: map['fname'] != null ? map['fname'] as String : null,
+      date: map['date'] != null ? map['date'] as String : null,
+      ac: map['ac'] != null ? map['ac'] as String : null,
+      college: map['college'] != null ? map['college'] as String : null,
+      base: map['base'] != null ? map['base'] as String : null,
+    );
+  }
+
+  String toJson() => json.encode(toMap());
+
+  factory Qualif.fromJson(String source) =>
+      Qualif.fromMap(json.decode(source) as Map<String, dynamic>);
+
+  @override
+  String toString() {
+    return 'Qualif(tlc: $tlc, lname: $lname, mname: $mname, fname: $fname, date: $date, ac: $ac, college: $college, base: $base)';
+  }
+
+  @override
+  bool operator ==(covariant Qualif other) {
+    if (identical(this, other)) return true;
+
+    return other.tlc == tlc &&
+        other.lname == lname &&
+        other.mname == mname &&
+        other.fname == fname &&
+        other.date == date &&
+        other.ac == ac &&
+        other.college == college &&
+        other.base == base;
+  }
+
+  @override
+  int get hashCode {
+    return tlc.hashCode ^
+        lname.hashCode ^
+        mname.hashCode ^
+        fname.hashCode ^
+        date.hashCode ^
+        ac.hashCode ^
+        college.hashCode ^
+        base.hashCode;
+  }
+}
+
+class Pnleg {
+  String? date;
+  Jiffy? get jdate => date != null
+      ? Jiffy.parse(date ?? "01/01/1970", pattern: "dd/MM/yyyy", isUtc: true)
+      : null;
+
+  String? tlc;
+  String? actype;
+  String? al;
+  String? fnum;
+  String? depdate;
+  String? deptime;
+  String? arrdate;
+  String? arrtime;
+  String? dep;
+  String? arr;
+  String? label;
+  String? type;
+  Jiffy? get jdep =>
+      deptime != null ? "$depdate $deptime".parseddmmyyyyhhmm() : null;
+  Jiffy? get jarr =>
+      arrtime != null ? "$arrdate $arrtime".parseddmmyyyyhhmm() : null;
+  Pnleg({
+    this.date,
+    this.tlc,
+    this.actype,
+    this.al,
+    this.fnum,
+    this.depdate,
+    this.deptime,
+    this.arrdate,
+    this.arrtime,
+    this.dep,
+    this.arr,
+    this.label,
+    this.type,
+  });
+
+  Pnleg copyWith({
+    String? date,
+    String? tlc,
+    String? actype,
+    String? al,
+    String? fnum,
+    String? depdate,
+    String? deptime,
+    String? arrdate,
+    String? arrtime,
+    String? dep,
+    String? arr,
+    String? label,
+    String? type,
+  }) {
+    return Pnleg(
+      date: date ?? this.date,
+      tlc: tlc ?? this.tlc,
+      actype: actype ?? this.actype,
+      al: al ?? this.al,
+      fnum: fnum ?? this.fnum,
+      depdate: depdate ?? this.depdate,
+      deptime: deptime ?? this.deptime,
+      arrdate: arrdate ?? this.arrdate,
+      arrtime: arrtime ?? this.arrtime,
+      dep: dep ?? this.dep,
+      arr: arr ?? this.arr,
+      label: label ?? this.label,
+      type: type ?? this.type,
+    );
+  }
+
+  Map<String, dynamic> toMap() {
+    return <String, dynamic>{
+      'date': date,
+      'tlc': tlc,
+      'actype': actype,
+      'al': al,
+      'fnum': fnum,
+      'depdate': depdate,
+      'deptime': deptime,
+      'arrdate': arrdate,
+      'arrtime': arrtime,
+      'dep': dep,
+      'arr': arr,
+      'label': label,
+      'type': type,
+    };
+  }
+
+  factory Pnleg.fromList(List datalist) {
+    return Pnleg(
+        date: datalist[0],
+        tlc: datalist[1],
+        actype: datalist[2],
+        al: datalist[3],
+        fnum: datalist[4],
+        depdate: datalist[5],
+        deptime: datalist[6],
+        arrdate: datalist[7],
+        arrtime: datalist[8],
+        dep: datalist[9],
+        arr: datalist[10],
+        label: datalist[11],
+        type: datalist[12]);
+  }
+
+  factory Pnleg.fromMap(Map<String, dynamic> map) {
+    return Pnleg(
+      date: map['date'] != null ? map['date'] as String : null,
+      tlc: map['tlc'] != null ? map['tlc'] as String : null,
+      actype: map['actype'] != null ? map['actype'] as String : null,
+      al: map['al'] != null ? map['al'] as String : null,
+      fnum: map['fnum'] != null ? map['fnum'] as String : null,
+      depdate: map['depdate'] != null ? map['depdate'] as String : null,
+      deptime: map['deptime'] != null ? map['deptime'] as String : null,
+      arrdate: map['arrdate'] != null ? map['arrdate'] as String : null,
+      arrtime: map['arrtime'] != null ? map['arrtime'] as String : null,
+      dep: map['dep'] != null ? map['dep'] as String : null,
+      arr: map['arr'] != null ? map['arr'] as String : null,
+      label: map['label'] != null ? map['label'] as String : null,
+      type: map['type'] != null ? map['type'] as String : null,
+    );
+  }
+
+  String toJson() => json.encode(toMap());
+
+  factory Pnleg.fromJson(String source) =>
+      Pnleg.fromMap(json.decode(source) as Map<String, dynamic>);
+
+  @override
+  String toString() {
+    return 'Pnleg(date: $date, tlc: $tlc, actype: $actype, al: $al, fnum: $fnum, depdate: $depdate, deptime: $deptime, arrdate: $arrdate, arrtime: $arrtime, dep: $dep, arr: $arr, label: $label, type: $type)';
+  }
+
+  @override
+  bool operator ==(covariant Pnleg other) {
+    if (identical(this, other)) return true;
+
+    return other.date == date &&
+        other.tlc == tlc &&
+        other.actype == actype &&
+        other.al == al &&
+        other.fnum == fnum &&
+        other.depdate == depdate &&
+        other.deptime == deptime &&
+        other.arrdate == arrdate &&
+        other.arrtime == arrtime &&
+        other.dep == dep &&
+        other.arr == arr &&
+        other.label == label &&
+        other.type == type;
+  }
+
+  @override
+  int get hashCode {
+    return date.hashCode ^
+        tlc.hashCode ^
+        actype.hashCode ^
+        al.hashCode ^
+        fnum.hashCode ^
+        depdate.hashCode ^
+        deptime.hashCode ^
+        arrdate.hashCode ^
+        arrtime.hashCode ^
+        dep.hashCode ^
+        arr.hashCode ^
+        label.hashCode ^
+        type.hashCode;
+  }
+}
+
+//enum flt_status { sched, delayed, taxiout, enroute, landed, arrived }
+
+class Acleg {
+  String? LEG_NO;
+  String? FN_CARRIER;
+  String? FN_NUMBER;
+  String? FN_SUFFIX;
+  String? DAY_OF_ORIGIN;
+  String? AC_OWNER;
+  String? AC_SUBTYPE;
+  String? AC_VERSION;
+  String? AC_REGISTRATION;
+  String? DEP_AP_ACTUAL;
+  String? DEP_AP_SCHED;
+  String? DEP_DT_EST;
+  Jiffy? get jdepest =>
+      (DEP_DT_EST == null) ? null : DEP_DT_EST!.parseyyyymmddhhmm();
+  String? DEP_SCHED_DT;
+  Jiffy? get jdepsched =>
+      (DEP_SCHED_DT == null) ? null : DEP_SCHED_DT!.parseyyyymmddhhmm();
+  String? ARR_AP_ACTUAL;
+  String? ARR_AP_SCHED;
+  String? ARR_DT_EST;
+  Jiffy? get jarrest =>
+      (ARR_DT_EST == null) ? null : ARR_DT_EST!.parseyyyymmddhhmm();
+  String? ARR_SCHED_DT;
+  Jiffy? get jarrsched =>
+      (ARR_SCHED_DT == null) ? null : ARR_SCHED_DT!.parseyyyymmddhhmm();
+  String? SLOT_TIME_ACTUAL;
+  Jiffy? get slot =>
+      (SLOT_TIME_ACTUAL == null) ? null : SLOT_TIME_ACTUAL!.parseyyyymmddhhmm();
+  String? LEG_TYPE;
+  String? STATUS;
+  String? EMPLOYER_COCKPIT;
+  String? EMPLOYER_CABIN;
+  String? CYCLES;
+  String? DELAY_CODE_01;
+  String? DELAY_CODE_02;
+  String? DELAY_CODE_03;
+  String? DELAY_CODE_04;
+  String? DELAY_TIME_01;
+  String? DELAY_TIME_02;
+  String? DELAY_TIME_03;
+  String? DELAY_TIME_04;
+  String? SUBDELAY_CODE_01;
+  String? SUBDELAY_CODE_02;
+  String? SUBDELAY_CODE_03;
+  String? SUBDELAY_CODE_04;
+  List<String> get delaycode => [
+        DELAY_CODE_01,
+        DELAY_CODE_02,
+        DELAY_CODE_03,
+        DELAY_CODE_04
+      ].whereNotNull().toList();
+  List<String> get delaysubcode => [
+        SUBDELAY_CODE_01,
+        SUBDELAY_CODE_02,
+        SUBDELAY_CODE_03,
+        SUBDELAY_CODE_04
+      ].whereNotNull().toList();
+  List<Duration?> get delaytime => [
+        DELAY_TIME_01 == null
+            ? null
+            : Duration(minutes: int.parse(DELAY_TIME_01!)),
+        DELAY_TIME_02 == null
+            ? null
+            : Duration(minutes: int.parse(DELAY_TIME_02!)),
+        DELAY_TIME_03 == null
+            ? null
+            : Duration(minutes: int.parse(DELAY_TIME_03!)),
+        DELAY_TIME_04 == null
+            ? null
+            : Duration(minutes: int.parse(DELAY_TIME_04!))
+      ].whereNotNull().toList();
+
+  String? PAX_BOOKED_C;
+  String? PAX_BOOKED_Y;
+  String? get pax_booked => (PAX_BOOKED_C != null || PAX_BOOKED_Y != null)
+      ? "C${PAX_BOOKED_C ?? 0}/Y${PAX_BOOKED_Y ?? 0}"
+      : null;
+  String? PAX_BOOKED_TRS_C;
+  String? PAX_BOOKED_TRS_Y;
+  String? get pax_trs => (PAX_BOOKED_TRS_C != null || PAX_BOOKED_TRS_Y != null)
+      ? "C${PAX_BOOKED_TRS_C ?? 0}/Y${PAX_BOOKED_TRS_Y ?? 0}"
+      : null;
+  String? PAD_BOOKED_C;
+  String? PAD_BOOKED_Y;
+  String? get pad_booked => (PAD_BOOKED_C != null || PAD_BOOKED_Y != null)
+      ? "C${PAD_BOOKED_C ?? 0}/Y${PAD_BOOKED_Y ?? 0}"
+      : null;
+  String? OFFBLOCK_DT_A;
+  String? AIRBORNE_DT_A;
+  String? LANDING_DT_A;
+  String? ONBLOCK_DT_A;
+  List<Jiffy?> get blocks_a => [
+        (OFFBLOCK_DT_A ?? "").parseyyyymmddhhmm(),
+        (AIRBORNE_DT_A ?? "").parseyyyymmddhhmm(),
+        (LANDING_DT_A ?? "").parseyyyymmddhhmm(),
+        (ONBLOCK_DT_A ?? "").parseyyyymmddhhmm()
+      ];
+  String get flt_status {
+    if (blocks[3] != null) {
+      return "Arrived";
+    } else if (blocks[2] != null) {
+      return "Landed";
+    } else if (blocks[1] != null) {
+      return "Inflight";
+    } else if (blocks[0] != null) {
+      return "Taxiout";
+    } else if (jdepest != null &&
+        jarrsched != null &&
+        jdepest!.isAfter(jdepsched!)) {
+      return "Delayed";
+    } else {
+      return "Sched";
+    }
+  }
+
+  String? OFFBLOCK_DT_F;
+  String? AIRBORNE_DT_F;
+  String? LANDING_DT_F;
+  String? ONBLOCK_DT_F;
+  List<Jiffy?> get blocks_f => [
+        (OFFBLOCK_DT_F ?? "").parseyyyymmddhhmm(),
+        (AIRBORNE_DT_F ?? "").parseyyyymmddhhmm(),
+        (LANDING_DT_F ?? "").parseyyyymmddhhmm(),
+        (ONBLOCK_DT_F ?? "").parseyyyymmddhhmm()
+      ];
+
+  String? OFFBLOCK_DT_M;
+  String? AIRBORNE_DT_M;
+  String? LANDING_DT_M;
+  String? ONBLOCK_DT_M;
+  List<Jiffy?> get blocks_m => [
+        (OFFBLOCK_DT_M ?? "").parseyyyymmddhhmm(),
+        (AIRBORNE_DT_M ?? "").parseyyyymmddhhmm(),
+        (LANDING_DT_M ?? "").parseyyyymmddhhmm(),
+        (ONBLOCK_DT_M ?? "").parseyyyymmddhhmm()
+      ];
+  List<Jiffy?> get blocks => [
+        blocks_m[0] ?? blocks_a[0] ?? blocks_f[0],
+        blocks_m[1] ?? blocks_a[1] ?? blocks_f[1],
+        blocks_m[2] ?? blocks_a[2] ?? blocks_f[2],
+        blocks_m[3] ?? blocks_a[3] ?? blocks_f[3]
+      ];
+  Jiffy? get jdep => blocks[0] ?? jdepest ?? jdepsched;
+  Jiffy? get jarr =>
+      blocks[3] ??
+      blocks[2]?.add(minutes: 5) ??
+      (eet == null ? null : blocks[1]?.addDuration(eet!).add(minutes: 8)) ??
+      (eet == null
+          ? null
+          : blocks[0]?.add(minutes: 5).addDuration(eet!).add(minutes: 8)) ??
+      (eet == null
+          ? null
+          : jdep?.addDuration(eet!).add(minutes: 8).add(minutes: 5)) ??
+      jarrest ??
+      jarrsched;
+  String? EET;
+  Duration? get eet => EET == null ? null : Duration(minutes: int.parse(EET!));
+  Acleg({
+    this.LEG_NO,
+    this.FN_CARRIER,
+    this.FN_NUMBER,
+    this.FN_SUFFIX,
+    this.DAY_OF_ORIGIN,
+    this.AC_OWNER,
+    this.AC_SUBTYPE,
+    this.AC_VERSION,
+    this.AC_REGISTRATION,
+    this.DEP_AP_ACTUAL,
+    this.DEP_AP_SCHED,
+    this.DEP_DT_EST,
+    this.DEP_SCHED_DT,
+    this.ARR_AP_ACTUAL,
+    this.ARR_AP_SCHED,
+    this.ARR_DT_EST,
+    this.ARR_SCHED_DT,
+    this.SLOT_TIME_ACTUAL,
+    this.LEG_TYPE,
+    this.STATUS,
+    this.EMPLOYER_COCKPIT,
+    this.EMPLOYER_CABIN,
+    this.CYCLES,
+    this.DELAY_CODE_01,
+    this.DELAY_CODE_02,
+    this.DELAY_CODE_03,
+    this.DELAY_CODE_04,
+    this.DELAY_TIME_01,
+    this.DELAY_TIME_02,
+    this.DELAY_TIME_03,
+    this.DELAY_TIME_04,
+    this.SUBDELAY_CODE_01,
+    this.SUBDELAY_CODE_02,
+    this.SUBDELAY_CODE_03,
+    this.SUBDELAY_CODE_04,
+    this.PAX_BOOKED_C,
+    this.PAX_BOOKED_Y,
+    this.PAX_BOOKED_TRS_C,
+    this.PAX_BOOKED_TRS_Y,
+    this.PAD_BOOKED_C,
+    this.PAD_BOOKED_Y,
+    this.OFFBLOCK_DT_A,
+    this.AIRBORNE_DT_A,
+    this.LANDING_DT_A,
+    this.ONBLOCK_DT_A,
+    this.OFFBLOCK_DT_F,
+    this.AIRBORNE_DT_F,
+    this.LANDING_DT_F,
+    this.ONBLOCK_DT_F,
+    this.OFFBLOCK_DT_M,
+    this.AIRBORNE_DT_M,
+    this.LANDING_DT_M,
+    this.ONBLOCK_DT_M,
+    this.EET,
+  });
+
+  Acleg copyWith({
+    String? LEG_NO,
+    String? FN_CARRIER,
+    String? FN_NUMBER,
+    String? FN_SUFFIX,
+    String? DAY_OF_ORIGIN,
+    String? AC_OWNER,
+    String? AC_SUBTYPE,
+    String? AC_VERSION,
+    String? AC_REGISTRATION,
+    String? DEP_AP_ACTUAL,
+    String? DEP_AP_SCHED,
+    String? DEP_DT_EST,
+    String? DEP_SCHED_DT,
+    String? ARR_AP_ACTUAL,
+    String? ARR_AP_SCHED,
+    String? ARR_DT_EST,
+    String? ARR_SCHED_DT,
+    String? SLOT_TIME_ACTUAL,
+    String? LEG_TYPE,
+    String? STATUS,
+    String? EMPLOYER_COCKPIT,
+    String? EMPLOYER_CABIN,
+    String? CYCLES,
+    String? DELAY_CODE_01,
+    String? DELAY_CODE_02,
+    String? DELAY_CODE_03,
+    String? DELAY_CODE_04,
+    String? DELAY_TIME_01,
+    String? DELAY_TIME_02,
+    String? DELAY_TIME_03,
+    String? DELAY_TIME_04,
+    String? SUBDELAY_CODE_01,
+    String? SUBDELAY_CODE_02,
+    String? SUBDELAY_CODE_03,
+    String? SUBDELAY_CODE_04,
+    String? PAX_BOOKED_C,
+    String? PAX_BOOKED_Y,
+    String? PAX_BOOKED_TRS_C,
+    String? PAX_BOOKED_TRS_Y,
+    String? PAD_BOOKED_C,
+    String? PAD_BOOKED_Y,
+    String? OFFBLOCK_DT_A,
+    String? AIRBORNE_DT_A,
+    String? LANDING_DT_A,
+    String? ONBLOCK_DT_A,
+    String? OFFBLOCK_DT_F,
+    String? AIRBORNE_DT_F,
+    String? LANDING_DT_F,
+    String? ONBLOCK_DT_F,
+    String? OFFBLOCK_DT_M,
+    String? AIRBORNE_DT_M,
+    String? LANDING_DT_M,
+    String? ONBLOCK_DT_M,
+    String? EET,
+  }) {
+    return Acleg(
+      LEG_NO: LEG_NO ?? this.LEG_NO,
+      FN_CARRIER: FN_CARRIER ?? this.FN_CARRIER,
+      FN_NUMBER: FN_NUMBER ?? this.FN_NUMBER,
+      FN_SUFFIX: FN_SUFFIX ?? this.FN_SUFFIX,
+      DAY_OF_ORIGIN: DAY_OF_ORIGIN ?? this.DAY_OF_ORIGIN,
+      AC_OWNER: AC_OWNER ?? this.AC_OWNER,
+      AC_SUBTYPE: AC_SUBTYPE ?? this.AC_SUBTYPE,
+      AC_VERSION: AC_VERSION ?? this.AC_VERSION,
+      AC_REGISTRATION: AC_REGISTRATION ?? this.AC_REGISTRATION,
+      DEP_AP_ACTUAL: DEP_AP_ACTUAL ?? this.DEP_AP_ACTUAL,
+      DEP_AP_SCHED: DEP_AP_SCHED ?? this.DEP_AP_SCHED,
+      DEP_DT_EST: DEP_DT_EST ?? this.DEP_DT_EST,
+      DEP_SCHED_DT: DEP_SCHED_DT ?? this.DEP_SCHED_DT,
+      ARR_AP_ACTUAL: ARR_AP_ACTUAL ?? this.ARR_AP_ACTUAL,
+      ARR_AP_SCHED: ARR_AP_SCHED ?? this.ARR_AP_SCHED,
+      ARR_DT_EST: ARR_DT_EST ?? this.ARR_DT_EST,
+      ARR_SCHED_DT: ARR_SCHED_DT ?? this.ARR_SCHED_DT,
+      SLOT_TIME_ACTUAL: SLOT_TIME_ACTUAL ?? this.SLOT_TIME_ACTUAL,
+      LEG_TYPE: LEG_TYPE ?? this.LEG_TYPE,
+      STATUS: STATUS ?? this.STATUS,
+      EMPLOYER_COCKPIT: EMPLOYER_COCKPIT ?? this.EMPLOYER_COCKPIT,
+      EMPLOYER_CABIN: EMPLOYER_CABIN ?? this.EMPLOYER_CABIN,
+      CYCLES: CYCLES ?? this.CYCLES,
+      DELAY_CODE_01: DELAY_CODE_01 ?? this.DELAY_CODE_01,
+      DELAY_CODE_02: DELAY_CODE_02 ?? this.DELAY_CODE_02,
+      DELAY_CODE_03: DELAY_CODE_03 ?? this.DELAY_CODE_03,
+      DELAY_CODE_04: DELAY_CODE_04 ?? this.DELAY_CODE_04,
+      DELAY_TIME_01: DELAY_TIME_01 ?? this.DELAY_TIME_01,
+      DELAY_TIME_02: DELAY_TIME_02 ?? this.DELAY_TIME_02,
+      DELAY_TIME_03: DELAY_TIME_03 ?? this.DELAY_TIME_03,
+      DELAY_TIME_04: DELAY_TIME_04 ?? this.DELAY_TIME_04,
+      SUBDELAY_CODE_01: SUBDELAY_CODE_01 ?? this.SUBDELAY_CODE_01,
+      SUBDELAY_CODE_02: SUBDELAY_CODE_02 ?? this.SUBDELAY_CODE_02,
+      SUBDELAY_CODE_03: SUBDELAY_CODE_03 ?? this.SUBDELAY_CODE_03,
+      SUBDELAY_CODE_04: SUBDELAY_CODE_04 ?? this.SUBDELAY_CODE_04,
+      PAX_BOOKED_C: PAX_BOOKED_C ?? this.PAX_BOOKED_C,
+      PAX_BOOKED_Y: PAX_BOOKED_Y ?? this.PAX_BOOKED_Y,
+      PAX_BOOKED_TRS_C: PAX_BOOKED_TRS_C ?? this.PAX_BOOKED_TRS_C,
+      PAX_BOOKED_TRS_Y: PAX_BOOKED_TRS_Y ?? this.PAX_BOOKED_TRS_Y,
+      PAD_BOOKED_C: PAD_BOOKED_C ?? this.PAD_BOOKED_C,
+      PAD_BOOKED_Y: PAD_BOOKED_Y ?? this.PAD_BOOKED_Y,
+      OFFBLOCK_DT_A: OFFBLOCK_DT_A ?? this.OFFBLOCK_DT_A,
+      AIRBORNE_DT_A: AIRBORNE_DT_A ?? this.AIRBORNE_DT_A,
+      LANDING_DT_A: LANDING_DT_A ?? this.LANDING_DT_A,
+      ONBLOCK_DT_A: ONBLOCK_DT_A ?? this.ONBLOCK_DT_A,
+      OFFBLOCK_DT_F: OFFBLOCK_DT_F ?? this.OFFBLOCK_DT_F,
+      AIRBORNE_DT_F: AIRBORNE_DT_F ?? this.AIRBORNE_DT_F,
+      LANDING_DT_F: LANDING_DT_F ?? this.LANDING_DT_F,
+      ONBLOCK_DT_F: ONBLOCK_DT_F ?? this.ONBLOCK_DT_F,
+      OFFBLOCK_DT_M: OFFBLOCK_DT_M ?? this.OFFBLOCK_DT_M,
+      AIRBORNE_DT_M: AIRBORNE_DT_M ?? this.AIRBORNE_DT_M,
+      LANDING_DT_M: LANDING_DT_M ?? this.LANDING_DT_M,
+      ONBLOCK_DT_M: ONBLOCK_DT_M ?? this.ONBLOCK_DT_M,
+      EET: EET ?? this.EET,
+    );
+  }
+
+  Map<String, dynamic> toMap() {
+    return <String, dynamic>{
+      'LEG_NO': LEG_NO,
+      'FN_CARRIER': FN_CARRIER,
+      'FN_NUMBER': FN_NUMBER,
+      'FN_SUFFIX': FN_SUFFIX,
+      'DAY_OF_ORIGIN': DAY_OF_ORIGIN,
+      'AC_OWNER': AC_OWNER,
+      'AC_SUBTYPE': AC_SUBTYPE,
+      'AC_VERSION': AC_VERSION,
+      'AC_REGISTRATION': AC_REGISTRATION,
+      'DEP_AP_ACTUAL': DEP_AP_ACTUAL,
+      'DEP_AP_SCHED': DEP_AP_SCHED,
+      'DEP_DT_EST': DEP_DT_EST,
+      'DEP_SCHED_DT': DEP_SCHED_DT,
+      'ARR_AP_ACTUAL': ARR_AP_ACTUAL,
+      'ARR_AP_SCHED': ARR_AP_SCHED,
+      'ARR_DT_EST': ARR_DT_EST,
+      'ARR_SCHED_DT': ARR_SCHED_DT,
+      'SLOT_TIME_ACTUAL': SLOT_TIME_ACTUAL,
+      'LEG_TYPE': LEG_TYPE,
+      'STATUS': STATUS,
+      'EMPLOYER_COCKPIT': EMPLOYER_COCKPIT,
+      'EMPLOYER_CABIN': EMPLOYER_CABIN,
+      'CYCLES': CYCLES,
+      'DELAY_CODE_01': DELAY_CODE_01,
+      'DELAY_CODE_02': DELAY_CODE_02,
+      'DELAY_CODE_03': DELAY_CODE_03,
+      'DELAY_CODE_04': DELAY_CODE_04,
+      'DELAY_TIME_01': DELAY_TIME_01,
+      'DELAY_TIME_02': DELAY_TIME_02,
+      'DELAY_TIME_03': DELAY_TIME_03,
+      'DELAY_TIME_04': DELAY_TIME_04,
+      'SUBDELAY_CODE_01': SUBDELAY_CODE_01,
+      'SUBDELAY_CODE_02': SUBDELAY_CODE_02,
+      'SUBDELAY_CODE_03': SUBDELAY_CODE_03,
+      'SUBDELAY_CODE_04': SUBDELAY_CODE_04,
+      'PAX_BOOKED_C': PAX_BOOKED_C,
+      'PAX_BOOKED_Y': PAX_BOOKED_Y,
+      'PAX_BOOKED_TRS_C': PAX_BOOKED_TRS_C,
+      'PAX_BOOKED_TRS_Y': PAX_BOOKED_TRS_Y,
+      'PAD_BOOKED_C': PAD_BOOKED_C,
+      'PAD_BOOKED_Y': PAD_BOOKED_Y,
+      'OFFBLOCK_DT_A': OFFBLOCK_DT_A,
+      'AIRBORNE_DT_A': AIRBORNE_DT_A,
+      'LANDING_DT_A': LANDING_DT_A,
+      'ONBLOCK_DT_A': ONBLOCK_DT_A,
+      'OFFBLOCK_DT_F': OFFBLOCK_DT_F,
+      'AIRBORNE_DT_F': AIRBORNE_DT_F,
+      'LANDING_DT_F': LANDING_DT_F,
+      'ONBLOCK_DT_F': ONBLOCK_DT_F,
+      'OFFBLOCK_DT_M': OFFBLOCK_DT_M,
+      'AIRBORNE_DT_M': AIRBORNE_DT_M,
+      'LANDING_DT_M': LANDING_DT_M,
+      'ONBLOCK_DT_M': ONBLOCK_DT_M,
+      'EET': EET,
+    };
+  }
+
+  factory Acleg.fromList(List datalist) {
+    //print(datalist);
+    if (datalist.length >= 54) {
+      return Acleg(
+          LEG_NO: datalist[0],
+          FN_CARRIER: datalist[1],
+          FN_NUMBER: datalist[2],
+          FN_SUFFIX: datalist[3],
+          DAY_OF_ORIGIN: datalist[4],
+          AC_OWNER: datalist[5],
+          AC_SUBTYPE: datalist[6],
+          AC_VERSION: datalist[7],
+          AC_REGISTRATION: datalist[8],
+          DEP_AP_ACTUAL: datalist[9],
+          DEP_AP_SCHED: datalist[10],
+          DEP_DT_EST: datalist[11],
+          DEP_SCHED_DT: datalist[12],
+          ARR_AP_ACTUAL: datalist[13],
+          ARR_AP_SCHED: datalist[14],
+          ARR_DT_EST: datalist[15],
+          ARR_SCHED_DT: datalist[16],
+          SLOT_TIME_ACTUAL: datalist[17],
+          LEG_TYPE: datalist[18],
+          STATUS: datalist[19],
+          EMPLOYER_COCKPIT: datalist[20],
+          EMPLOYER_CABIN: datalist[21],
+          CYCLES: datalist[22],
+          DELAY_CODE_01: datalist[23],
+          DELAY_CODE_02: datalist[24],
+          DELAY_CODE_03: datalist[25],
+          DELAY_CODE_04: datalist[26],
+          DELAY_TIME_01: datalist[27],
+          DELAY_TIME_02: datalist[28],
+          DELAY_TIME_03: datalist[29],
+          DELAY_TIME_04: datalist[30],
+          SUBDELAY_CODE_01: datalist[31],
+          SUBDELAY_CODE_02: datalist[32],
+          SUBDELAY_CODE_03: datalist[33],
+          SUBDELAY_CODE_04: datalist[34],
+          PAX_BOOKED_C: datalist[35],
+          PAX_BOOKED_Y: datalist[36],
+          PAX_BOOKED_TRS_C: datalist[37],
+          PAX_BOOKED_TRS_Y: datalist[38],
+          PAD_BOOKED_C: datalist[39],
+          PAD_BOOKED_Y: datalist[40],
+          OFFBLOCK_DT_A: datalist[41],
+          AIRBORNE_DT_A: datalist[42],
+          LANDING_DT_A: datalist[43],
+          ONBLOCK_DT_A: datalist[44],
+          OFFBLOCK_DT_F: datalist[45],
+          AIRBORNE_DT_F: datalist[46],
+          LANDING_DT_F: datalist[47],
+          ONBLOCK_DT_F: datalist[48],
+          OFFBLOCK_DT_M: datalist[49],
+          AIRBORNE_DT_M: datalist[50],
+          LANDING_DT_M: datalist[51],
+          ONBLOCK_DT_M: datalist[52],
+          EET: datalist[53]);
+    } else {
+      return Acleg();
+    }
+  }
+
+  factory Acleg.fromMap(Map<String, dynamic> map) {
+    return Acleg(
+      LEG_NO: map['LEG_NO'] != null ? map['LEG_NO'] as String : null,
+      FN_CARRIER:
+          map['FN_CARRIER'] != null ? map['FN_CARRIER'] as String : null,
+      FN_NUMBER: map['FN_NUMBER'] != null ? map['FN_NUMBER'] as String : null,
+      FN_SUFFIX: map['FN_SUFFIX'] != null ? map['FN_SUFFIX'] as String : null,
+      DAY_OF_ORIGIN:
+          map['DAY_OF_ORIGIN'] != null ? map['DAY_OF_ORIGIN'] as String : null,
+      AC_OWNER: map['AC_OWNER'] != null ? map['AC_OWNER'] as String : null,
+      AC_SUBTYPE:
+          map['AC_SUBTYPE'] != null ? map['AC_SUBTYPE'] as String : null,
+      AC_VERSION:
+          map['AC_VERSION'] != null ? map['AC_VERSION'] as String : null,
+      AC_REGISTRATION: map['AC_REGISTRATION'] != null
+          ? map['AC_REGISTRATION'] as String
+          : null,
+      DEP_AP_ACTUAL:
+          map['DEP_AP_ACTUAL'] != null ? map['DEP_AP_ACTUAL'] as String : null,
+      DEP_AP_SCHED:
+          map['DEP_AP_SCHED'] != null ? map['DEP_AP_SCHED'] as String : null,
+      DEP_DT_EST:
+          map['DEP_DT_EST'] != null ? map['DEP_DT_EST'] as String : null,
+      DEP_SCHED_DT:
+          map['DEP_SCHED_DT'] != null ? map['DEP_SCHED_DT'] as String : null,
+      ARR_AP_ACTUAL:
+          map['ARR_AP_ACTUAL'] != null ? map['ARR_AP_ACTUAL'] as String : null,
+      ARR_AP_SCHED:
+          map['ARR_AP_SCHED'] != null ? map['ARR_AP_SCHED'] as String : null,
+      ARR_DT_EST:
+          map['ARR_DT_EST'] != null ? map['ARR_DT_EST'] as String : null,
+      ARR_SCHED_DT:
+          map['ARR_SCHED_DT'] != null ? map['ARR_SCHED_DT'] as String : null,
+      SLOT_TIME_ACTUAL: map['SLOT_TIME_ACTUAL'] != null
+          ? map['SLOT_TIME_ACTUAL'] as String
+          : null,
+      LEG_TYPE: map['LEG_TYPE'] != null ? map['LEG_TYPE'] as String : null,
+      EMPLOYER_COCKPIT: map['EMPLOYER_COCKPIT'] != null
+          ? map['EMPLOYER_COCKPIT'] as String
+          : null,
+      EMPLOYER_CABIN: map['EMPLOYER_CABIN'] != null
+          ? map['EMPLOYER_CABIN'] as String
+          : null,
+//      CYCLES: map['CYCLES'] != null ? map['CYCLES'] as String : null,
+      DELAY_CODE_01:
+          map['DELAY_CODE_01'] != null ? map['DELAY_CODE_01'] as String : null,
+      DELAY_CODE_02:
+          map['DELAY_CODE_02'] != null ? map['DELAY_CODE_02'] as String : null,
+      DELAY_CODE_03:
+          map['DELAY_CODE_03'] != null ? map['DELAY_CODE_03'] as String : null,
+      DELAY_CODE_04:
+          map['DELAY_CODE_04'] != null ? map['DELAY_CODE_04'] as String : null,
+      DELAY_TIME_01:
+          map['DELAY_TIME_01'] != null ? map['DELAY_TIME_01'] as String : null,
+      DELAY_TIME_02:
+          map['DELAY_TIME_02'] != null ? map['DELAY_TIME_02'] as String : null,
+      DELAY_TIME_03:
+          map['DELAY_TIME_03'] != null ? map['DELAY_TIME_03'] as String : null,
+      DELAY_TIME_04:
+          map['DELAY_TIME_04'] != null ? map['DELAY_TIME_04'] as String : null,
+      SUBDELAY_CODE_01: map['SUBDELAY_CODE_01'] != null
+          ? map['SUBDELAY_CODE_01'] as String
+          : null,
+      SUBDELAY_CODE_02: map['SUBDELAY_CODE_02'] != null
+          ? map['SUBDELAY_CODE_02'] as String
+          : null,
+      SUBDELAY_CODE_03: map['SUBDELAY_CODE_03'] != null
+          ? map['SUBDELAY_CODE_03'] as String
+          : null,
+      SUBDELAY_CODE_04: map['SUBDELAY_CODE_04'] != null
+          ? map['SUBDELAY_CODE_04'] as String
+          : null,
+      PAX_BOOKED_C:
+          map['PAX_BOOKED_C'] != null ? map['PAX_BOOKED_C'] as String : null,
+      PAX_BOOKED_Y:
+          map['PAX_BOOKED_Y'] != null ? map['PAX_BOOKED_Y'] as String : null,
+      PAX_BOOKED_TRS_C: map['PAX_BOOKED_TRS_C'] != null
+          ? map['PAX_BOOKED_TRS_C'] as String
+          : null,
+      PAX_BOOKED_TRS_Y: map['PAX_BOOKED_TRS_Y'] != null
+          ? map['PAX_BOOKED_TRS_Y'] as String
+          : null,
+      PAD_BOOKED_C:
+          map['PAD_BOOKED_C'] != null ? map['PAD_BOOKED_C'] as String : null,
+      PAD_BOOKED_Y:
+          map['PAD_BOOKED_Y'] != null ? map['PAD_BOOKED_Y'] as String : null,
+      OFFBLOCK_DT_A:
+          map['OFFBLOCK_DT_A'] != null ? map['OFFBLOCK_DT_A'] as String : null,
+      AIRBORNE_DT_A:
+          map['AIRBORNE_DT_A'] != null ? map['AIRBORNE_DT_A'] as String : null,
+      LANDING_DT_A:
+          map['LANDING_DT_A'] != null ? map['LANDING_DT_A'] as String : null,
+      ONBLOCK_DT_A:
+          map['ONBLOCK_DT_A'] != null ? map['ONBLOCK_DT_A'] as String : null,
+      OFFBLOCK_DT_F:
+          map['OFFBLOCK_DT_F'] != null ? map['OFFBLOCK_DT_F'] as String : null,
+      AIRBORNE_DT_F:
+          map['AIRBORNE_DT_F'] != null ? map['AIRBORNE_DT_F'] as String : null,
+      LANDING_DT_F:
+          map['LANDING_DT_F'] != null ? map['LANDING_DT_F'] as String : null,
+      ONBLOCK_DT_F:
+          map['ONBLOCK_DT_F'] != null ? map['ONBLOCK_DT_F'] as String : null,
+      OFFBLOCK_DT_M:
+          map['OFFBLOCK_DT_M'] != null ? map['OFFBLOCK_DT_M'] as String : null,
+      AIRBORNE_DT_M:
+          map['AIRBORNE_DT_M'] != null ? map['AIRBORNE_DT_M'] as String : null,
+      LANDING_DT_M:
+          map['LANDING_DT_M'] != null ? map['LANDING_DT_M'] as String : null,
+      ONBLOCK_DT_M:
+          map['ONBLOCK_DT_M'] != null ? map['ONBLOCK_DT_M'] as String : null,
+      EET: map['EET'] != null ? map['EET'] as String : null,
+    );
+  }
+
+  String toJson() => json.encode(toMap());
+
+  factory Acleg.fromJson(String source) =>
+      Acleg.fromMap(json.decode(source) as Map<String, dynamic>);
+
+  @override
+  String toString() {
+    return 'Acleg(LEG_NO: $LEG_NO, FN_CARRIER: $FN_CARRIER, FN_NUMBER: $FN_NUMBER, FN_SUFFIX: $FN_SUFFIX, DAY_OF_ORIGIN: $DAY_OF_ORIGIN, AC_OWNER: $AC_OWNER, AC_SUBTYPE: $AC_SUBTYPE, AC_VERSION: $AC_VERSION, AC_REGISTRATION: $AC_REGISTRATION, DEP_AP_ACTUAL: $DEP_AP_ACTUAL, DEP_AP_SCHED: $DEP_AP_SCHED, DEP_DT_EST: $DEP_DT_EST, DEP_SCHED_DT: $DEP_SCHED_DT, ARR_AP_ACTUAL: $ARR_AP_ACTUAL, ARR_AP_SCHED: $ARR_AP_SCHED, ARR_DT_EST: $ARR_DT_EST, ARR_SCHED_DT: $ARR_SCHED_DT, SLOT_TIME_ACTUAL: $SLOT_TIME_ACTUAL, LEG_TYPE: $LEG_TYPE, EMPLOYER_COCKPIT: $EMPLOYER_COCKPIT, EMPLOYER_CABIN: $EMPLOYER_CABIN, CYCLES: $CYCLES, DELAY_CODE_01: $DELAY_CODE_01, DELAY_CODE_02: $DELAY_CODE_02, DELAY_CODE_03: $DELAY_CODE_03, DELAY_CODE_04: $DELAY_CODE_04, DELAY_TIME_01: $DELAY_TIME_01, DELAY_TIME_02: $DELAY_TIME_02, DELAY_TIME_03: $DELAY_TIME_03, DELAY_TIME_04: $DELAY_TIME_04, SUBDELAY_CODE_01: $SUBDELAY_CODE_01, SUBDELAY_CODE_02: $SUBDELAY_CODE_02, SUBDELAY_CODE_03: $SUBDELAY_CODE_03, SUBDELAY_CODE_04: $SUBDELAY_CODE_04, PAX_BOOKED_C: $PAX_BOOKED_C, PAX_BOOKED_Y: $PAX_BOOKED_Y, PAX_BOOKED_TRS_C: $PAX_BOOKED_TRS_C, PAX_BOOKED_TRS_Y: $PAX_BOOKED_TRS_Y, PAD_BOOKED_C: $PAD_BOOKED_C, PAD_BOOKED_Y: $PAD_BOOKED_Y, OFFBLOCK_DT_A: $OFFBLOCK_DT_A, AIRBORNE_DT_A: $AIRBORNE_DT_A, LANDING_DT_A: $LANDING_DT_A, ONBLOCK_DT_A: $ONBLOCK_DT_A, OFFBLOCK_DT_F: $OFFBLOCK_DT_F, AIRBORNE_DT_F: $AIRBORNE_DT_F, LANDING_DT_F: $LANDING_DT_F, ONBLOCK_DT_F: $ONBLOCK_DT_F, OFFBLOCK_DT_M: $OFFBLOCK_DT_M, AIRBORNE_DT_M: $AIRBORNE_DT_M, LANDING_DT_M: $LANDING_DT_M, ONBLOCK_DT_M: $ONBLOCK_DT_M, EET: $EET)';
+  }
+
+  @override
+  bool operator ==(covariant Acleg other) {
+    if (identical(this, other)) return true;
+
+    return other.LEG_NO == LEG_NO &&
+        other.FN_CARRIER == FN_CARRIER &&
+        other.FN_NUMBER == FN_NUMBER &&
+        other.FN_SUFFIX == FN_SUFFIX &&
+        other.DAY_OF_ORIGIN == DAY_OF_ORIGIN &&
+        other.AC_OWNER == AC_OWNER &&
+        other.AC_SUBTYPE == AC_SUBTYPE &&
+        other.AC_VERSION == AC_VERSION &&
+        other.AC_REGISTRATION == AC_REGISTRATION &&
+        other.DEP_AP_ACTUAL == DEP_AP_ACTUAL &&
+        other.DEP_AP_SCHED == DEP_AP_SCHED &&
+        other.DEP_DT_EST == DEP_DT_EST &&
+        other.DEP_SCHED_DT == DEP_SCHED_DT &&
+        other.ARR_AP_ACTUAL == ARR_AP_ACTUAL &&
+        other.ARR_AP_SCHED == ARR_AP_SCHED &&
+        other.ARR_DT_EST == ARR_DT_EST &&
+        other.ARR_SCHED_DT == ARR_SCHED_DT &&
+        other.SLOT_TIME_ACTUAL == SLOT_TIME_ACTUAL &&
+        other.LEG_TYPE == LEG_TYPE &&
+        other.EMPLOYER_COCKPIT == EMPLOYER_COCKPIT &&
+        other.EMPLOYER_CABIN == EMPLOYER_CABIN &&
+        other.CYCLES == CYCLES &&
+        other.DELAY_CODE_01 == DELAY_CODE_01 &&
+        other.DELAY_CODE_02 == DELAY_CODE_02 &&
+        other.DELAY_CODE_03 == DELAY_CODE_03 &&
+        other.DELAY_CODE_04 == DELAY_CODE_04 &&
+        other.DELAY_TIME_01 == DELAY_TIME_01 &&
+        other.DELAY_TIME_02 == DELAY_TIME_02 &&
+        other.DELAY_TIME_03 == DELAY_TIME_03 &&
+        other.DELAY_TIME_04 == DELAY_TIME_04 &&
+        other.SUBDELAY_CODE_01 == SUBDELAY_CODE_01 &&
+        other.SUBDELAY_CODE_02 == SUBDELAY_CODE_02 &&
+        other.SUBDELAY_CODE_03 == SUBDELAY_CODE_03 &&
+        other.SUBDELAY_CODE_04 == SUBDELAY_CODE_04 &&
+        other.PAX_BOOKED_C == PAX_BOOKED_C &&
+        other.PAX_BOOKED_Y == PAX_BOOKED_Y &&
+        other.PAX_BOOKED_TRS_C == PAX_BOOKED_TRS_C &&
+        other.PAX_BOOKED_TRS_Y == PAX_BOOKED_TRS_Y &&
+        other.PAD_BOOKED_C == PAD_BOOKED_C &&
+        other.PAD_BOOKED_Y == PAD_BOOKED_Y &&
+        other.OFFBLOCK_DT_A == OFFBLOCK_DT_A &&
+        other.AIRBORNE_DT_A == AIRBORNE_DT_A &&
+        other.LANDING_DT_A == LANDING_DT_A &&
+        other.ONBLOCK_DT_A == ONBLOCK_DT_A &&
+        other.OFFBLOCK_DT_F == OFFBLOCK_DT_F &&
+        other.AIRBORNE_DT_F == AIRBORNE_DT_F &&
+        other.LANDING_DT_F == LANDING_DT_F &&
+        other.ONBLOCK_DT_F == ONBLOCK_DT_F &&
+        other.OFFBLOCK_DT_M == OFFBLOCK_DT_M &&
+        other.AIRBORNE_DT_M == AIRBORNE_DT_M &&
+        other.LANDING_DT_M == LANDING_DT_M &&
+        other.ONBLOCK_DT_M == ONBLOCK_DT_M &&
+        other.EET == EET;
+  }
+
+  @override
+  int get hashCode {
+    return LEG_NO.hashCode ^
+        FN_CARRIER.hashCode ^
+        FN_NUMBER.hashCode ^
+        FN_SUFFIX.hashCode ^
+        DAY_OF_ORIGIN.hashCode ^
+        AC_OWNER.hashCode ^
+        AC_SUBTYPE.hashCode ^
+        AC_VERSION.hashCode ^
+        AC_REGISTRATION.hashCode ^
+        DEP_AP_ACTUAL.hashCode ^
+        DEP_AP_SCHED.hashCode ^
+        DEP_DT_EST.hashCode ^
+        DEP_SCHED_DT.hashCode ^
+        ARR_AP_ACTUAL.hashCode ^
+        ARR_AP_SCHED.hashCode ^
+        ARR_DT_EST.hashCode ^
+        ARR_SCHED_DT.hashCode ^
+        SLOT_TIME_ACTUAL.hashCode ^
+        LEG_TYPE.hashCode ^
+        EMPLOYER_COCKPIT.hashCode ^
+        EMPLOYER_CABIN.hashCode ^
+        CYCLES.hashCode ^
+        DELAY_CODE_01.hashCode ^
+        DELAY_CODE_02.hashCode ^
+        DELAY_CODE_03.hashCode ^
+        DELAY_CODE_04.hashCode ^
+        DELAY_TIME_01.hashCode ^
+        DELAY_TIME_02.hashCode ^
+        DELAY_TIME_03.hashCode ^
+        DELAY_TIME_04.hashCode ^
+        SUBDELAY_CODE_01.hashCode ^
+        SUBDELAY_CODE_02.hashCode ^
+        SUBDELAY_CODE_03.hashCode ^
+        SUBDELAY_CODE_04.hashCode ^
+        PAX_BOOKED_C.hashCode ^
+        PAX_BOOKED_Y.hashCode ^
+        PAX_BOOKED_TRS_C.hashCode ^
+        PAX_BOOKED_TRS_Y.hashCode ^
+        PAD_BOOKED_C.hashCode ^
+        PAD_BOOKED_Y.hashCode ^
+        OFFBLOCK_DT_A.hashCode ^
+        AIRBORNE_DT_A.hashCode ^
+        LANDING_DT_A.hashCode ^
+        ONBLOCK_DT_A.hashCode ^
+        OFFBLOCK_DT_F.hashCode ^
+        AIRBORNE_DT_F.hashCode ^
+        LANDING_DT_F.hashCode ^
+        ONBLOCK_DT_F.hashCode ^
+        OFFBLOCK_DT_M.hashCode ^
+        AIRBORNE_DT_M.hashCode ^
+        LANDING_DT_M.hashCode ^
+        ONBLOCK_DT_M.hashCode ^
+        EET.hashCode;
+  }
+}

+ 1717 - 0
lib/csv/data.bak

@@ -0,0 +1,1717 @@
+// ignore_for_file: non_constant_identifier_names
+
+import 'dart:async';
+import 'dart:convert';
+import 'dart:io';
+
+import 'package:collection/collection.dart';
+import 'package:flutter/foundation.dart';
+import 'package:flutter_riverpod/flutter_riverpod.dart';
+import 'package:jiffy/jiffy.dart';
+import 'package:supabase_flutter/supabase_flutter.dart';
+//import 'package:supabase_flutter/supabase_flutter.dart';
+
+import "package:tp5/core/utils.dart";
+import "package:tp5/csv/csv_data.dart";
+
+class CrewFilter {
+  String? college;
+  String? ac;
+  String? tlc;
+  String? fname;
+  String? lname;
+  String? searchname;
+  CrewFilter({
+    this.college,
+    this.ac,
+    this.tlc,
+    this.fname,
+    this.lname,
+    this.searchname,
+  });
+
+  CrewFilter copyWith({
+    ValueGetter<String?>? college,
+    ValueGetter<String?>? ac,
+    ValueGetter<String?>? tlc,
+    ValueGetter<String?>? fname,
+    ValueGetter<String?>? lname,
+    ValueGetter<String?>? searchname,
+  }) {
+    return CrewFilter(
+      college: college != null ? college() : this.college,
+      ac: ac != null ? ac() : this.ac,
+      tlc: tlc != null ? tlc() : this.tlc,
+      fname: fname != null ? fname() : this.fname,
+      lname: lname != null ? lname() : this.lname,
+      searchname: searchname != null ? searchname() : this.searchname,
+    );
+  }
+
+  Map<String, dynamic> toMap() {
+    return {
+      'college': college,
+      'ac': ac,
+      'tlc': tlc,
+      'fname': fname,
+      'lname': lname,
+      'searchname': searchname,
+    };
+  }
+
+  factory CrewFilter.fromMap(Map<String, dynamic> map) {
+    return CrewFilter(
+      college: map['college'],
+      ac: map['ac'],
+      tlc: map['tlc'],
+      fname: map['fname'],
+      lname: map['lname'],
+      searchname: map['searchname'],
+    );
+  }
+
+  String toJson() => json.encode(toMap());
+
+  factory CrewFilter.fromJson(String source) =>
+      CrewFilter.fromMap(json.decode(source));
+
+  @override
+  String toString() {
+    return 'CrewFilter(college: $college, ac: $ac, tlc: $tlc, fname: $fname, lname: $lname, searchname: $searchname)';
+  }
+
+  @override
+  bool operator ==(Object other) {
+    if (identical(this, other)) return true;
+
+    return other is CrewFilter &&
+        other.college == college &&
+        other.ac == ac &&
+        other.tlc == tlc &&
+        other.fname == fname &&
+        other.lname == lname &&
+        other.searchname == searchname;
+  }
+
+  @override
+  int get hashCode {
+    return college.hashCode ^
+        ac.hashCode ^
+        tlc.hashCode ^
+        fname.hashCode ^
+        lname.hashCode ^
+        searchname.hashCode;
+  }
+}
+
+class FlightFilter {
+  String? al;
+  String? fnum;
+  String? date;
+  String? dep;
+  String? arr;
+  Jiffy? jdep;
+  Jiffy? jarr;
+  String? tlc;
+  String? reg;
+  FlightFilter(
+      {this.al,
+      this.fnum,
+      this.date,
+      this.dep,
+      this.arr,
+      this.jdep,
+      this.jarr,
+      this.tlc,
+      this.reg});
+  @override
+  bool operator ==(Object other) {
+    if (identical(this, other)) return true;
+
+    return other is FlightFilter &&
+        other.al == al &&
+        other.fnum == fnum &&
+        other.date == date &&
+        other.dep == dep &&
+        other.arr == arr &&
+        other.jdep == jdep &&
+        other.jarr == jarr &&
+        other.tlc == tlc &&
+        other.reg == reg;
+  }
+
+  FlightFilter copyWith({
+    ValueGetter<String?>? al,
+    ValueGetter<String?>? fnum,
+    ValueGetter<String?>? date,
+    ValueGetter<String?>? dep,
+    ValueGetter<String?>? arr,
+    ValueGetter<Jiffy?>? jdep,
+    ValueGetter<Jiffy?>? jarr,
+    ValueGetter<String?>? tlc,
+    ValueGetter<String?>? reg,
+  }) {
+    return FlightFilter(
+      al: al != null ? al() : this.al,
+      fnum: fnum != null ? fnum() : this.fnum,
+      date: date != null ? date() : this.date,
+      dep: dep != null ? dep() : this.dep,
+      arr: arr != null ? arr() : this.arr,
+      jdep: jdep != null ? jdep() : this.jdep,
+      jarr: jarr != null ? jarr() : this.jarr,
+      tlc: tlc != null ? tlc() : this.tlc,
+      reg: reg != null ? reg() : this.reg,
+    );
+  }
+
+  Map<String, dynamic> toMap() {
+    return {
+      'al': al,
+      'fnum': fnum,
+      'date': date,
+      'dep': dep,
+      'arr': arr,
+      'jdep': jdep?.toString(),
+      'jarr': jarr?.toString(),
+      'tlc': tlc,
+      'reg': reg,
+    };
+  }
+
+  factory FlightFilter.fromMap(Map<String, dynamic> map) {
+    return FlightFilter(
+      al: map['al'],
+      fnum: map['fnum'],
+      date: map['date'],
+      dep: map['dep'],
+      arr: map['arr'],
+      jdep: map['jdep'] != null ? Jiffy.parse(map['jdep']) : null,
+      jarr: map['jarr'] != null ? Jiffy.parse(map['jarr']) : null,
+      tlc: map['tlc'],
+      reg: map['reg'],
+    );
+  }
+
+  String toJson() => json.encode(toMap());
+
+  factory FlightFilter.fromJson(String source) =>
+      FlightFilter.fromMap(json.decode(source));
+
+  @override
+  String toString() {
+    return 'FlightFilter(al: $al, fnum: $fnum, date: $date, dep: $dep, arr: $arr, jdep: $jdep, jarr: $jarr, tlc: $tlc, reg: $reg)';
+  }
+
+  @override
+  int get hashCode {
+    return al.hashCode ^
+        fnum.hashCode ^
+        date.hashCode ^
+        dep.hashCode ^
+        arr.hashCode ^
+        jdep.hashCode ^
+        jarr.hashCode ^
+        tlc.hashCode ^
+        reg.hashCode;
+  }
+}
+
+final pnlegByTlcProvider =
+    Provider. /*autoDispose.*/ family<List<Pnleg>, String>((ref, tlc) => ref
+        .watch(dataProvider)
+        .pnleg
+        .where((leg) => leg.tlc == tlc)
+        .sortedBy((e) =>
+            e.jdep?.dateTime ??
+            Jiffy.parse(e.depdate ?? "01/01/2001",
+                    pattern: "dd/MM/yyyy", isUtc: true)
+                .dateTime)
+        .toList());
+
+final pnlegProvider = Provider. /*autoDispose.*/ family<List<Pnleg>, FlightFilter>(
+    (ref, flightFilter) => ref
+        .watch(dataProvider)
+        .pnleg
+        .where((leg) =>
+            (leg.al == (flightFilter.al ?? leg.al)) &&
+            (leg.fnum == (flightFilter.fnum ?? leg.fnum)) &&
+            // (leg.jdep?.yMd ==
+            //     (flightFilter.date ?? leg.jdep?.yMd)) && //format yyyy-MM-dd
+            (leg.dep == (flightFilter.dep ?? leg.dep)) &&
+            (leg.arr == (flightFilter.arr ?? leg.arr)) &&
+            (flightFilter.jdep == null ||
+                (leg.jdep != null &&
+                    flightFilter.jdep != null &&
+                    flightFilter.jdep!.isBetween(leg.jdep!.subtract(hours: 5),
+                        leg.jdep!.add(hours: 5)))) &&
+            (flightFilter.jarr == null ||
+                (leg.jarr != null &&
+                    flightFilter.jarr != null &&
+                    flightFilter.jarr!.isBetween(leg.jarr!.subtract(hours: 5),
+                        leg.jarr!.add(hours: 5)))) &&
+            (leg.tlc == (flightFilter.tlc ?? leg.tlc)))
+        .toList());
+
+/*
+final pnlegInterval = Provider((ref) {
+  final pnleg = ref.watch(dataProvider).pnleg;
+  return pnleg.where((leg) => leg.jdep != null && leg.jarr != null).toList();
+});
+
+
+final pnlegDates = Provider((ref) {
+  final pnleg = ref.watch(dataProvider).pnleg;
+  return pnleg.fold(
+      <Jiffy?>{},
+      (t, e) => [...t, e.jdep?.startOf(Unit.day)]
+          .nonNulls
+          .sortedBy((k) => k.millisecondsSinceEpoch.toString())
+          .toSet());
+});
+
+final pnlegTlcs = Provider((ref) {
+  final data = ref.watch(dataProvider);
+  final pnleg = data.pnleg;
+  final qualif = data.qualif;
+
+  return pnleg.fold(<String?>{}, (t, e) => {...t, e.tlc}).sortedBy((k) =>
+      qualif.firstWhereOrNull((q) => q.tlc == k)?.lname ?? "zzzzzzzzzzzzz");
+});
+*/
+
+final aclegProvider = Provider.autoDispose.family<List<Acleg>, FlightFilter>(
+    (ref, flightFilter) => ref
+        .watch(dataProvider)
+        .acleg
+        .where((leg) =>
+            (leg.FN_CARRIER == (flightFilter.al ?? leg.FN_CARRIER)) &&
+            (leg.FN_NUMBER == (flightFilter.fnum ?? leg.FN_NUMBER)) &&
+//            (leg.jdep?.yMd ==
+//                (flightFilter.date ?? leg.jdep?.yMd)) && //format yyyy-MM-dd
+            (leg.DEP_AP_ACTUAL == (flightFilter.dep ?? leg.DEP_AP_ACTUAL)) &&
+            (leg.DEP_AP_SCHED == (flightFilter.dep ?? leg.DEP_AP_SCHED)) &&
+            (leg.ARR_AP_ACTUAL == (flightFilter.arr ?? leg.ARR_AP_ACTUAL)) &&
+            (leg.ARR_AP_SCHED == (flightFilter.arr ?? leg.ARR_AP_SCHED)) &&
+            (flightFilter.jdep == null ||
+                (leg.jdep != null &&
+                    flightFilter.jdep != null &&
+                    flightFilter.jdep!.isBetween(leg.jdep!.subtract(hours: 5),
+                        leg.jdep!.add(hours: 5)))) &&
+            (flightFilter.jarr == null ||
+                (leg.jarr != null &&
+                    flightFilter.jarr != null &&
+                    flightFilter.jarr!.isBetween(leg.jarr!.subtract(hours: 5),
+                        leg.jarr!.add(hours: 5)))) &&
+            (leg.AC_REGISTRATION == (flightFilter.reg ?? leg.AC_REGISTRATION)))
+        .toList());
+
+final qualifProvider = Provider.family<List<Qualif>, CrewFilter>(
+    (ref, crewFilter) => ref
+        .watch(dataProvider)
+        .qualif
+        .where((x) => (((crewFilter.tlc ?? x.tlc) == x.tlc &&
+            (crewFilter.college ?? x.college) == x.college &&
+            (crewFilter.ac ?? x.ac) == x.ac &&
+            (crewFilter.lname ?? x.lname ?? "").capitalize() ==
+                (x.lname ?? "").capitalize() &&
+            (crewFilter.fname ?? x.fname ?? "").capitalize() ==
+                (x.fname ?? "").capitalize() &&
+            //search like
+            (crewFilter.searchname == null ||
+                (x.fname ?? "")
+                    .capitalize()
+                    .contains(crewFilter.searchname!.capitalize())) &&
+            (crewFilter.searchname == null ||
+                (x.lname ?? "")
+                    .capitalize()
+                    .contains(crewFilter.searchname!.capitalize())))))
+        .toList());
+
+final dataProvider = StateNotifierProvider<DataNotifier, DataState>((ref) {
+  return DataNotifier();
+});
+
+class DataState {
+  List<Qualif> qualif;
+
+  List<Pnleg> pnleg;
+
+  List<Acleg> acleg;
+
+  Jiffy? qualifupdate;
+  Jiffy? pnlegupdate;
+  Jiffy? aclegupdate;
+
+  List<Jiffy> get pnleg_dates => pnleg.fold(
+      <Jiffy>{},
+      (t, e) => {
+            ...t,
+            e.jdep?.startOf(Unit.day) ??
+                Jiffy.parse(e.date ?? "01/01/1970",
+                    pattern: "dd/MM/yyyy", isUtc: true)
+          }).sortedBy((e) => e.dateTime);
+
+  List<String> get pnleg_tlcs =>
+      pnleg.fold(<String>{}, (t, e) => {...t, e.tlc ?? ""}).sortedBy((e) {
+        final pn = qualif.firstWhereOrNull((q) => q.tlc == e);
+        return "${pn?.lname} ${pn?.fname}";
+      });
+
+  // PnlegMeta get pnleg_tlcs_dates {
+  //   Set<String> tlcs = {};
+  //   Set<Jiffy> dates = {};
+  //   for (Pnleg leg in pnleg) {
+  //     tlcs.add(leg.tlc ?? "");
+  //     dates.add(leg.jdep?.startOf(Unit.day) ??
+  //         Jiffy.parse(leg.date ?? "01/01/1970",
+  //             pattern: "dd/MM/yyyy", isUtc: true));
+  //   }
+  //   // final restlcs = tlcs.sortedBy((k) =>qualif.firstWhereOrNull((q) => q.tlc == k)?.lname ?? "zzzzzzzzzzzzz");
+  //   final restlcs = tlcs.sortedBy((e) =>
+  //       "${qualif.firstWhereOrNull((k) => k.tlc == e)?.lname} ${qualif.firstWhereOrNull((k) => k.tlc == e)?.fname}");
+  //   final resdates = dates.sortedBy((k) => k.millisecondsSinceEpoch.toString());
+  //   return PnlegMeta(tlcs: restlcs, dates: resdates);
+  // }
+
+  DataState({
+    this.qualif = const [],
+    this.pnleg = const [],
+    this.acleg = const [],
+    this.qualifupdate,
+    this.pnlegupdate,
+    this.aclegupdate,
+  });
+
+  DataState copyWith({
+    List<Qualif>? qualif,
+    List<Pnleg>? pnleg,
+    List<Acleg>? acleg,
+    Jiffy? qualifupdate,
+    Jiffy? pnlegupdate,
+    Jiffy? aclegupdate,
+  }) {
+    return DataState(
+      qualif: qualif ?? this.qualif,
+      pnleg: pnleg ?? this.pnleg,
+      acleg: acleg ?? this.acleg,
+      qualifupdate: qualifupdate ?? this.qualifupdate,
+      pnlegupdate: pnlegupdate ?? this.pnlegupdate,
+      aclegupdate: aclegupdate ?? this.aclegupdate,
+    );
+  }
+
+  @override
+  String toString() {
+    return 'DataState(qualif: $qualif, pnleg: $pnleg, acleg: $acleg, qualifupdate: $qualifupdate, pnlegupdate: $pnlegupdate, aclegupdate: $aclegupdate)';
+  }
+
+  @override
+  bool operator ==(Object other) {
+    if (identical(this, other)) return true;
+
+    return other is DataState &&
+        listEquals(other.qualif, qualif) &&
+        listEquals(other.pnleg, pnleg) &&
+        listEquals(other.acleg, acleg) &&
+        other.qualifupdate == qualifupdate &&
+        other.pnlegupdate == pnlegupdate &&
+        other.aclegupdate == aclegupdate;
+  }
+
+  @override
+  int get hashCode {
+    return qualif.hashCode ^
+        pnleg.hashCode ^
+        acleg.hashCode ^
+        qualifupdate.hashCode ^
+        pnlegupdate.hashCode ^
+        aclegupdate.hashCode;
+  }
+}
+
+class DataNotifier extends StateNotifier<DataState> {
+  Timer? _timer;
+
+  DataNotifier() : super(DataState()) {
+    final subscription = Supabase.instance.client
+        .from('publications')
+        .on(SupabaseEventTypes.all, (payload) {
+      print('Change received!');
+      print(payload);
+      setState(() {
+        // Update your UI or state based on the payload
+      });
+    }).subscribe();
+    Future.delayed(Duration.zero).then((x) async {
+      await loadAll();
+      // await downloadModifiedFiles();
+      _timer = Timer.periodic(const Duration(seconds: 15), (timer) async {
+        await downloadModifiedFiles();
+      });
+    });
+  }
+
+  @override
+  void dispose() {
+    if (_timer != null) _timer!.cancel();
+    super.dispose();
+  }
+
+  // void calculPnlegMeta() {
+  //   final now = Jiffy.now();
+  //   final data = state;
+  //   final pnlegs = data.pnleg;
+  //   final qualif = data.qualif;
+  //   Set<String> tlcs = {};
+  //   Set<Jiffy> dates = {};
+  //   for (Pnleg pnleg in pnlegs) {
+  //     tlcs.add(pnleg.tlc ?? "");
+  //     dates.add(pnleg.jdep?.startOf(Unit.day) ??
+  //         Jiffy.parse(pnleg.date ?? "01/01/1970",
+  //             pattern: "dd/MM/yyyy", isUtc: true));
+  //   }
+  //   // final restlcs = tlcs.sortedBy((k) =>qualif.firstWhereOrNull((q) => q.tlc == k)?.lname ?? "zzzzzzzzzzzzz");
+  //   final restlcs = tlcs.sortedBy((e) =>
+  //       "${qualif.firstWhereOrNull((k) => k.tlc == e)?.lname} ${qualif.firstWhereOrNull((k) => k.tlc == e)?.fname}");
+  //   final resdates = dates.sortedBy((k) => k.millisecondsSinceEpoch.toString());
+  //   print(
+  //       "data: end analyzing pnleg ${Duration(milliseconds: Jiffy.now().millisecondsSinceEpoch - now.millisecondsSinceEpoch).inSeconds} sec");
+  //   pnlegmeta = PnlegMeta(tlcs: restlcs, dates: resdates);
+  // }
+
+  Future<void> downloadModifiedFiles() async {
+    final supabaseClient = Supabase.instance.client;
+    //print("data: downloadmodifiedfiles");
+    // Get the local download directory
+    final String downloadPath = PathTo().subd("download").path;
+
+    // Create the download directory if it doesn't exist
+    final Directory directory = Directory(downloadPath);
+    if (!await directory.exists()) {
+      await directory.create(recursive: true);
+    }
+
+    try {
+      // List files in the "csv" bucket
+      final filelist = await supabaseClient.storage.from('csv').list();
+      // Iterate through the files and check for modifications
+      for (final file in filelist) {
+        final fileName = file.name;
+        final modifiedAt = file.updatedAt;
+
+        // Check if the file exists locally
+        final localFile = File(PathTo().downloadFile(fileName));
+        DateTime? localModifiedAt;
+
+        if (await localFile.exists()) {
+          localModifiedAt = await localFile.lastModified();
+        }
+
+        // Download the file if it has been modified
+        if (localModifiedAt == null ||
+            (modifiedAt != null &&
+                DateTime.parse(modifiedAt).isAfter(localModifiedAt))) {
+          final fileBytes =
+              await supabaseClient.storage.from('csv').download(fileName);
+          if (fileBytes.isNotEmpty) {
+            await localFile.writeAsBytes(fileBytes);
+            print('Downloaded modified file: $fileName');
+            await localFile.copy(PathTo().csvFile(fileName));
+            await loadAll();
+          } else {
+            print('Failed to download file: $fileName');
+          }
+        } else {
+          //print('File $fileName is up to date.');
+        }
+      }
+    } catch (e) {
+      print(
+          "data: downloadmodified files: unable to list files on supabase bucket");
+    }
+  }
+
+  loadAll() async {
+    if (qualiftime != qualifupdate) await loadQualif();
+    if (aclegtime != aclegupdate) await loadAclegs();
+    if (pnleg3time != pnleg3update) await loadPnlegs3();
+    if (pnlegmoistime != pnlegmoisupdate) await loadPnlegsmois();
+  }
+
+  Jiffy? qualifupdate;
+  String get qualiffile => PathTo().csvFile("exportlicence.txt");
+  Jiffy? get qualiftime => File(qualiffile).existsSync()
+      ? Jiffy.parseFromDateTime(
+          File(PathTo().csvFile("exportlicence.txt")).lastModifiedSync())
+      : null;
+  List<Qualif> qualif = [];
+  loadQualif() async {
+    print("data: qualif update ${qualiftime?.dateTime}");
+    final txt = await File(qualiffile).readAsString();
+    qualifupdate = qualiftime;
+
+    qualif =
+        await compute(csvqualiftolist, txt, debugLabel: "convert qualif csv");
+
+    state = state.copyWith(qualifupdate: qualifupdate, qualif: qualif);
+  }
+
+  static List<Qualif> csvqualiftolist(txt) {
+    return CsvData.csv2list(txt).map((e) => Qualif.fromList(e)).toList();
+  }
+
+  Jiffy? aclegupdate;
+  String get aclegfile => PathTo().csvFile("secondprgtype.zip");
+  Jiffy? get aclegtime => File(aclegfile).existsSync()
+      ? Jiffy.parseFromDateTime(
+          File(PathTo().csvFile("secondprgtype.zip")).lastModifiedSync())
+      : null;
+  List<Acleg> acleg = [];
+  loadAclegs() async {
+    print("data: acleg update ${aclegtime?.dateTime}");
+
+    final txt =
+        await CsvData.extractTextFileFromZip(aclegfile, "secondprgtype.txt");
+    aclegupdate = aclegtime;
+    acleg =
+        await compute(csvaclegtolist, txt, debugLabel: "convert aclegs csv");
+
+    state = state.copyWith(aclegupdate: aclegupdate, acleg: acleg);
+
+    //print(acleg);
+  }
+
+  static List<Acleg> csvaclegtolist(txt) {
+    return CsvData.csv2list(txt)
+        .map((e) => Acleg.fromList(e))
+        .where((leg) =>
+            //only flights of Tunisair
+            (leg.FN_CARRIER == "TU" ||
+                leg.EMPLOYER_CABIN == "TU" ||
+                leg.EMPLOYER_COCKPIT == "TU" ||
+                leg.AC_OWNER == "TU"))
+        .sortedBy((e) => e.jdep!.dateTime)
+        .toList();
+  }
+
+  List<Pnleg> pnleg = [];
+
+  static List<Pnleg> calculpnleg(Map data) {
+    print(data.keys);
+    final pnlegmoistime = data["pnlegmoistime"] as Jiffy?;
+    final pnleg3time = data["pnleg3time"] as Jiffy?;
+    final pnlegmois = data["pnlegmois"] as List<Pnleg>;
+    final pnleg3 = data["pnleg3"] as List<Pnleg>;
+    if (pnlegmoistime != null &&
+        pnleg3time != null &&
+        pnlegmoistime.isSameOrAfter(pnleg3time)) {
+      return pnlegmois;
+    } else if (pnlegmoistime != null &&
+        pnleg3time != null &&
+        pnlegmoistime.isBefore(pnleg3time)) {
+      final dates3tlc3 =
+          pnleg3.fold(<String>{}, (p, e) => {...p, "${e.date},${e.tlc}"});
+      return (pnlegmois
+          .where((x) => !(dates3tlc3.contains("${x.date},${x.tlc}")))
+          .toList())
+        ..addAll(pnleg3); //pnleg3 dabord
+    } else if (pnlegmoistime == null && pnleg3time != null) {
+      return pnleg3;
+    } else if (pnlegmoistime != null && pnleg3time == null) {
+      return pnlegmois;
+    } else {
+      return <Pnleg>[];
+    }
+  }
+
+  Jiffy? pnlegmoisupdate;
+  static String get pnlegmoisfile => PathTo().csvFile("ExportPGRGPNmois.zip");
+  Jiffy? get pnlegmoistime => File(pnlegmoisfile).existsSync()
+      ? Jiffy.parseFromDateTime(
+          File(PathTo().csvFile("ExportPGRGPNmois.zip")).lastModifiedSync())
+      : null;
+  List<Pnleg> pnlegmois = [];
+  loadPnlegsmois() async {
+    print("data: pnlegmois update ${pnlegmoistime?.dateTime}");
+
+    final txt = await CsvData.extractTextFileFromZip(
+        pnlegmoisfile, "ExportPGRGPNmois.txt");
+    // pnlegmois = CsvData.csv2list(txt).map((e) => Pnleg.fromList(e)).toList();
+    pnlegmoisupdate = pnlegmoistime;
+
+    pnlegmois =
+        await compute(csvpnlegtolist, txt, debugLabel: "convert pnlegmois csv");
+    pnleg = await compute(
+        calculpnleg,
+        {
+          "pnlegmois": pnlegmois,
+          "pnlegmoistime": pnlegmoistime,
+          "pnleg3": pnleg3,
+          "pnleg3time": pnleg3time,
+        },
+        debugLabel: "recalculate pnleg");
+    //calculPnlegMeta();
+    state = state.copyWith(pnlegupdate: pnlegmoisupdate, pnleg: pnleg);
+  }
+
+  static List<Pnleg> csvpnlegtolist(txt) {
+    return CsvData.csv2list(txt).map((e) => Pnleg.fromList(e)).toList();
+  }
+
+  Jiffy? pnleg3update;
+  String get pnleg3file => PathTo().csvFile("exportPGRGPN.zip");
+  Jiffy? get pnleg3time => File(pnleg3file).existsSync()
+      ? Jiffy.parseFromDateTime(
+          File(PathTo().csvFile("exportPGRGPN.zip")).lastModifiedSync())
+      : null;
+  List<Pnleg> pnleg3 = [];
+  loadPnlegs3() async {
+    print("data: pnleg3 update ${pnleg3time?.dateTime}");
+
+    final txt =
+        await CsvData.extractTextFileFromZip(pnleg3file, "exportPGRGPN.txt");
+    pnleg3 =
+        await compute(csvpnlegtolist, txt, debugLabel: "convert pnleg3 csv");
+    pnleg3update = pnleg3time;
+    pnleg = await compute(
+        calculpnleg,
+        {
+          "pnlegmois": pnlegmois,
+          "pnlegmoistime": pnlegmoistime,
+          "pnleg3": pnleg3,
+          "pnleg3time": pnleg3time,
+        },
+        debugLabel: "recalculating pnleg");
+
+    state = state.copyWith(pnlegupdate: pnleg3update, pnleg: pnleg);
+
+    //print(pnleg3);
+  }
+}
+
+class Qualif {
+  String? tlc;
+  String? lname;
+  String? mname;
+  String? fname;
+  String? date;
+  String? ac;
+  String? college;
+  String? base;
+  Qualif({
+    this.tlc,
+    this.lname,
+    this.mname,
+    this.fname,
+    this.date,
+    this.ac,
+    this.college,
+    this.base,
+  });
+
+  Qualif copyWith({
+    String? tlc,
+    String? lname,
+    String? mname,
+    String? fname,
+    String? date,
+    String? ac,
+    String? college,
+    String? base,
+  }) {
+    return Qualif(
+      tlc: tlc ?? this.tlc,
+      lname: lname ?? this.lname,
+      mname: mname ?? this.mname,
+      fname: fname ?? this.fname,
+      date: date ?? this.date,
+      ac: ac ?? this.ac,
+      college: college ?? this.college,
+      base: base ?? this.base,
+    );
+  }
+
+  Map<String, dynamic> toMap() {
+    return <String, dynamic>{
+      'tlc': tlc,
+      'lname': lname,
+      'mname': mname,
+      'fname': fname,
+      'date': date,
+      'ac': ac,
+      'college': college,
+      'base': base,
+    };
+  }
+
+  factory Qualif.fromList(List datalist) {
+    return Qualif(
+        tlc: datalist[0],
+        lname: datalist[1],
+        mname: datalist[2],
+        fname: datalist[3],
+        date: datalist[4],
+        ac: datalist[5],
+        college: datalist[6],
+        base: datalist[7]);
+  }
+
+  factory Qualif.fromMap(Map<String, dynamic> map) {
+    return Qualif(
+      tlc: map['tlc'] != null ? map['tlc'] as String : null,
+      lname: map['lname'] != null ? map['lname'] as String : null,
+      mname: map['mname'] != null ? map['mname'] as String : null,
+      fname: map['fname'] != null ? map['fname'] as String : null,
+      date: map['date'] != null ? map['date'] as String : null,
+      ac: map['ac'] != null ? map['ac'] as String : null,
+      college: map['college'] != null ? map['college'] as String : null,
+      base: map['base'] != null ? map['base'] as String : null,
+    );
+  }
+
+  String toJson() => json.encode(toMap());
+
+  factory Qualif.fromJson(String source) =>
+      Qualif.fromMap(json.decode(source) as Map<String, dynamic>);
+
+  @override
+  String toString() {
+    return 'Qualif(tlc: $tlc, lname: $lname, mname: $mname, fname: $fname, date: $date, ac: $ac, college: $college, base: $base)';
+  }
+
+  @override
+  bool operator ==(covariant Qualif other) {
+    if (identical(this, other)) return true;
+
+    return other.tlc == tlc &&
+        other.lname == lname &&
+        other.mname == mname &&
+        other.fname == fname &&
+        other.date == date &&
+        other.ac == ac &&
+        other.college == college &&
+        other.base == base;
+  }
+
+  @override
+  int get hashCode {
+    return tlc.hashCode ^
+        lname.hashCode ^
+        mname.hashCode ^
+        fname.hashCode ^
+        date.hashCode ^
+        ac.hashCode ^
+        college.hashCode ^
+        base.hashCode;
+  }
+}
+
+class Pnleg {
+  String? date;
+  Jiffy? get jdate => date != null
+      ? Jiffy.parse(date ?? "01/01/1970", pattern: "dd/MM/yyyy", isUtc: true)
+      : null;
+
+  String? tlc;
+  String? actype;
+  String? al;
+  String? fnum;
+  String? depdate;
+  String? deptime;
+  String? arrdate;
+  String? arrtime;
+  String? dep;
+  String? arr;
+  String? label;
+  String? type;
+  Jiffy? get jdep =>
+      deptime != null ? "$depdate $deptime".parseddmmyyyyhhmm() : null;
+  Jiffy? get jarr =>
+      arrtime != null ? "$arrdate $arrtime".parseddmmyyyyhhmm() : null;
+
+  String get dutytype {
+    if (type == "L") {
+      return "flight";
+    } else if ((type == "G")) {
+      return "dhlimo";
+    } else if ((type == "F") || ((dep ?? "") != "" && (arr ?? "") != "")) {
+      return "dhflight";
+    } else if ((label?.startsWith("SBY") ?? false) || (label == "R0")) {
+      return "standby";
+    } else if ((!["OFF", "CM", "CA", "PP"].contains(label)) &&
+        (jarr != null &&
+            jdep != null &&
+            DTInterval(jdep!, jarr!).duration.inHours < 18)) {
+      return "ground";
+    } else {
+      return "day";
+    }
+  }
+
+  Pnleg({
+    this.date,
+    this.tlc,
+    this.actype,
+    this.al,
+    this.fnum,
+    this.depdate,
+    this.deptime,
+    this.arrdate,
+    this.arrtime,
+    this.dep,
+    this.arr,
+    this.label,
+    this.type,
+  });
+
+  Pnleg copyWith({
+    String? date,
+    String? tlc,
+    String? actype,
+    String? al,
+    String? fnum,
+    String? depdate,
+    String? deptime,
+    String? arrdate,
+    String? arrtime,
+    String? dep,
+    String? arr,
+    String? label,
+    String? type,
+  }) {
+    return Pnleg(
+      date: date ?? this.date,
+      tlc: tlc ?? this.tlc,
+      actype: actype ?? this.actype,
+      al: al ?? this.al,
+      fnum: fnum ?? this.fnum,
+      depdate: depdate ?? this.depdate,
+      deptime: deptime ?? this.deptime,
+      arrdate: arrdate ?? this.arrdate,
+      arrtime: arrtime ?? this.arrtime,
+      dep: dep ?? this.dep,
+      arr: arr ?? this.arr,
+      label: label ?? this.label,
+      type: type ?? this.type,
+    );
+  }
+
+  Map<String, dynamic> toMap() {
+    return <String, dynamic>{
+      'date': date,
+      'tlc': tlc,
+      'actype': actype,
+      'al': al,
+      'fnum': fnum,
+      'depdate': depdate,
+      'deptime': deptime,
+      'arrdate': arrdate,
+      'arrtime': arrtime,
+      'dep': dep,
+      'arr': arr,
+      'label': label,
+      'type': type,
+    };
+  }
+
+  factory Pnleg.fromList(List datalist) {
+    return Pnleg(
+        date: datalist[0],
+        tlc: datalist[1],
+        actype: datalist[2],
+        al: datalist[3],
+        fnum: datalist[4],
+        depdate: datalist[5],
+        deptime: datalist[6],
+        arrdate: datalist[7],
+        arrtime: datalist[8],
+        dep: datalist[9],
+        arr: datalist[10],
+        label: datalist[11],
+        type: datalist[12]);
+  }
+
+  factory Pnleg.fromMap(Map<String, dynamic> map) {
+    return Pnleg(
+      date: map['date'] != null ? map['date'] as String : null,
+      tlc: map['tlc'] != null ? map['tlc'] as String : null,
+      actype: map['actype'] != null ? map['actype'] as String : null,
+      al: map['al'] != null ? map['al'] as String : null,
+      fnum: map['fnum'] != null ? map['fnum'] as String : null,
+      depdate: map['depdate'] != null ? map['depdate'] as String : null,
+      deptime: map['deptime'] != null ? map['deptime'] as String : null,
+      arrdate: map['arrdate'] != null ? map['arrdate'] as String : null,
+      arrtime: map['arrtime'] != null ? map['arrtime'] as String : null,
+      dep: map['dep'] != null ? map['dep'] as String : null,
+      arr: map['arr'] != null ? map['arr'] as String : null,
+      label: map['label'] != null ? map['label'] as String : null,
+      type: map['type'] != null ? map['type'] as String : null,
+    );
+  }
+
+  String toJson() => json.encode(toMap());
+
+  factory Pnleg.fromJson(String source) =>
+      Pnleg.fromMap(json.decode(source) as Map<String, dynamic>);
+
+  @override
+  String toString() {
+    return 'Pnleg(date: $date, tlc: $tlc, actype: $actype, al: $al, fnum: $fnum, depdate: $depdate, deptime: $deptime, arrdate: $arrdate, arrtime: $arrtime, dep: $dep, arr: $arr, label: $label, type: $type)';
+  }
+
+  @override
+  bool operator ==(covariant Pnleg other) {
+    if (identical(this, other)) return true;
+
+    return other.date == date &&
+        other.tlc == tlc &&
+        other.actype == actype &&
+        other.al == al &&
+        other.fnum == fnum &&
+        other.depdate == depdate &&
+        other.deptime == deptime &&
+        other.arrdate == arrdate &&
+        other.arrtime == arrtime &&
+        other.dep == dep &&
+        other.arr == arr &&
+        other.label == label &&
+        other.type == type;
+  }
+
+  @override
+  int get hashCode {
+    return date.hashCode ^
+        tlc.hashCode ^
+        actype.hashCode ^
+        al.hashCode ^
+        fnum.hashCode ^
+        depdate.hashCode ^
+        deptime.hashCode ^
+        arrdate.hashCode ^
+        arrtime.hashCode ^
+        dep.hashCode ^
+        arr.hashCode ^
+        label.hashCode ^
+        type.hashCode;
+  }
+}
+
+//enum flt_status { sched, delayed, taxiout, enroute, landed, arrived }
+
+class Acleg {
+  String? LEG_NO;
+  String? FN_CARRIER;
+  String? FN_NUMBER;
+  String? FN_SUFFIX;
+  String? DAY_OF_ORIGIN;
+  String? AC_OWNER;
+  String? AC_SUBTYPE;
+  String? AC_VERSION;
+  String? AC_REGISTRATION;
+  String? DEP_AP_ACTUAL;
+  String? DEP_AP_SCHED;
+  String? DEP_DT_EST;
+  Jiffy? get jdepest =>
+      (DEP_DT_EST == null) ? null : DEP_DT_EST!.parseyyyymmddhhmm();
+  String? DEP_SCHED_DT;
+  Jiffy? get jdepsched =>
+      (DEP_SCHED_DT == null) ? null : DEP_SCHED_DT!.parseyyyymmddhhmm();
+  String? ARR_AP_ACTUAL;
+  String? ARR_AP_SCHED;
+  String? ARR_DT_EST;
+  Jiffy? get jarrest =>
+      (ARR_DT_EST == null) ? null : ARR_DT_EST!.parseyyyymmddhhmm();
+  String? ARR_SCHED_DT;
+  Jiffy? get jarrsched =>
+      (ARR_SCHED_DT == null) ? null : ARR_SCHED_DT!.parseyyyymmddhhmm();
+  String? SLOT_TIME_ACTUAL;
+  Jiffy? get slot =>
+      (SLOT_TIME_ACTUAL == null) ? null : SLOT_TIME_ACTUAL!.parseyyyymmddhhmm();
+  String? LEG_TYPE;
+  String? STATUS;
+  String? EMPLOYER_COCKPIT;
+  String? EMPLOYER_CABIN;
+  String? CYCLES;
+  String? DELAY_CODE_01;
+  String? DELAY_CODE_02;
+  String? DELAY_CODE_03;
+  String? DELAY_CODE_04;
+  String? DELAY_TIME_01;
+  String? DELAY_TIME_02;
+  String? DELAY_TIME_03;
+  String? DELAY_TIME_04;
+  String? SUBDELAY_CODE_01;
+  String? SUBDELAY_CODE_02;
+  String? SUBDELAY_CODE_03;
+  String? SUBDELAY_CODE_04;
+  List<List> get dla => [
+        [
+          SUBDELAY_CODE_01 ?? DELAY_CODE_01,
+          DELAY_TIME_01 == null
+              ? null
+              : Duration(minutes: int.parse(DELAY_TIME_01!))
+        ],
+        [
+          SUBDELAY_CODE_02 ?? DELAY_CODE_02,
+          DELAY_TIME_02 == null
+              ? null
+              : Duration(minutes: int.parse(DELAY_TIME_02!))
+        ],
+        [
+          SUBDELAY_CODE_03 ?? DELAY_CODE_03,
+          DELAY_TIME_03 == null
+              ? null
+              : Duration(minutes: int.parse(DELAY_TIME_03!))
+        ],
+        [
+          SUBDELAY_CODE_04 ?? DELAY_CODE_04,
+          DELAY_TIME_04 == null
+              ? null
+              : Duration(minutes: int.parse(DELAY_TIME_04!))
+        ],
+      ].where((e) => e.every((f) => f != null)).toList();
+  List<String> get delaycode => [
+        DELAY_CODE_01,
+        DELAY_CODE_02,
+        DELAY_CODE_03,
+        DELAY_CODE_04
+      ].nonNulls.toList();
+  List<String> get delaysubcode => [
+        SUBDELAY_CODE_01,
+        SUBDELAY_CODE_02,
+        SUBDELAY_CODE_03,
+        SUBDELAY_CODE_04
+      ].nonNulls.toList();
+  List<Duration?> get delaytime => [
+        DELAY_TIME_01 == null
+            ? null
+            : Duration(minutes: int.parse(DELAY_TIME_01!)),
+        DELAY_TIME_02 == null
+            ? null
+            : Duration(minutes: int.parse(DELAY_TIME_02!)),
+        DELAY_TIME_03 == null
+            ? null
+            : Duration(minutes: int.parse(DELAY_TIME_03!)),
+        DELAY_TIME_04 == null
+            ? null
+            : Duration(minutes: int.parse(DELAY_TIME_04!))
+      ].nonNulls.toList();
+
+  String? PAX_BOOKED_C;
+  String? PAX_BOOKED_Y;
+  String? get pax_booked => (PAX_BOOKED_C != null || PAX_BOOKED_Y != null)
+      ? "${(AC_VERSION != null && AC_VERSION!.contains("C")) ? "C${PAX_BOOKED_C ?? 0}." : ""}Y${PAX_BOOKED_Y ?? 0}"
+      : null;
+  String? PAX_BOOKED_TRS_C;
+  String? PAX_BOOKED_TRS_Y;
+  String? get pax_trs => (PAX_BOOKED_TRS_C != null || PAX_BOOKED_TRS_Y != null)
+      ? "C${PAX_BOOKED_TRS_C ?? 0}/Y${PAX_BOOKED_TRS_Y ?? 0}"
+      : null;
+  String? PAD_BOOKED_C;
+  String? PAD_BOOKED_Y;
+  String? get pad_booked => (PAD_BOOKED_C != null || PAD_BOOKED_Y != null)
+      ? "C${PAD_BOOKED_C ?? 0}/Y${PAD_BOOKED_Y ?? 0}"
+      : null;
+  String? OFFBLOCK_DT_A;
+  String? AIRBORNE_DT_A;
+  String? LANDING_DT_A;
+  String? ONBLOCK_DT_A;
+  List<Jiffy?> get blocks_a => [
+        (OFFBLOCK_DT_A ?? "").parseyyyymmddhhmm(),
+        (AIRBORNE_DT_A ?? "").parseyyyymmddhhmm(),
+        (LANDING_DT_A ?? "").parseyyyymmddhhmm(),
+        (ONBLOCK_DT_A ?? "").parseyyyymmddhhmm()
+      ];
+  String get flt_status {
+    if (blocks[3] != null) {
+      return "Arrived";
+    } else if (blocks[2] != null) {
+      return "Landed";
+    } else if (blocks[1] != null) {
+      return "Inflight";
+    } else if (blocks[0] != null) {
+      return "Taxiout";
+    } else if (jdepest != null &&
+        jarrsched != null &&
+        jdepest!.isAfter(jdepsched!)) {
+      return "Delayed";
+    } else {
+      return "Sched";
+    }
+  }
+
+  String? OFFBLOCK_DT_F;
+  String? AIRBORNE_DT_F;
+  String? LANDING_DT_F;
+  String? ONBLOCK_DT_F;
+  List<Jiffy?> get blocks_f => [
+        (OFFBLOCK_DT_F ?? "").parseyyyymmddhhmm(),
+        (AIRBORNE_DT_F ?? "").parseyyyymmddhhmm(),
+        (LANDING_DT_F ?? "").parseyyyymmddhhmm(),
+        (ONBLOCK_DT_F ?? "").parseyyyymmddhhmm()
+      ];
+
+  String? OFFBLOCK_DT_M;
+  String? AIRBORNE_DT_M;
+  String? LANDING_DT_M;
+  String? ONBLOCK_DT_M;
+  List<Jiffy?> get blocks_m => [
+        (OFFBLOCK_DT_M ?? "").parseyyyymmddhhmm(),
+        (AIRBORNE_DT_M ?? "").parseyyyymmddhhmm(),
+        (LANDING_DT_M ?? "").parseyyyymmddhhmm(),
+        (ONBLOCK_DT_M ?? "").parseyyyymmddhhmm()
+      ];
+  List<Jiffy?> get blocks => [
+        blocks_m[0] ?? blocks_a[0] ?? blocks_f[0],
+        blocks_m[1] ?? blocks_a[1] ?? blocks_f[1],
+        blocks_m[2] ?? blocks_a[2] ?? blocks_f[2],
+        blocks_m[3] ?? blocks_a[3] ?? blocks_f[3]
+      ];
+  Jiffy? get jdep => blocks[0] ?? jdepest ?? jdepsched;
+  Jiffy? get jarr =>
+      blocks[3] ??
+      blocks[2]?.add(minutes: 5) ??
+      (eet == null ? null : blocks[1]?.addDuration(eet!).add(minutes: 8)) ??
+      (eet == null
+          ? null
+          : blocks[0]?.add(minutes: 5).addDuration(eet!).add(minutes: 8)) ??
+      (eet == null
+          ? null
+          : jdep?.addDuration(eet!).add(minutes: 8).add(minutes: 5)) ??
+      jarrest ??
+      jarrsched;
+  String? EET;
+  Duration? get eet => EET == null ? null : Duration(minutes: int.parse(EET!));
+  Acleg({
+    this.LEG_NO,
+    this.FN_CARRIER,
+    this.FN_NUMBER,
+    this.FN_SUFFIX,
+    this.DAY_OF_ORIGIN,
+    this.AC_OWNER,
+    this.AC_SUBTYPE,
+    this.AC_VERSION,
+    this.AC_REGISTRATION,
+    this.DEP_AP_ACTUAL,
+    this.DEP_AP_SCHED,
+    this.DEP_DT_EST,
+    this.DEP_SCHED_DT,
+    this.ARR_AP_ACTUAL,
+    this.ARR_AP_SCHED,
+    this.ARR_DT_EST,
+    this.ARR_SCHED_DT,
+    this.SLOT_TIME_ACTUAL,
+    this.LEG_TYPE,
+    this.STATUS,
+    this.EMPLOYER_COCKPIT,
+    this.EMPLOYER_CABIN,
+    this.CYCLES,
+    this.DELAY_CODE_01,
+    this.DELAY_CODE_02,
+    this.DELAY_CODE_03,
+    this.DELAY_CODE_04,
+    this.DELAY_TIME_01,
+    this.DELAY_TIME_02,
+    this.DELAY_TIME_03,
+    this.DELAY_TIME_04,
+    this.SUBDELAY_CODE_01,
+    this.SUBDELAY_CODE_02,
+    this.SUBDELAY_CODE_03,
+    this.SUBDELAY_CODE_04,
+    this.PAX_BOOKED_C,
+    this.PAX_BOOKED_Y,
+    this.PAX_BOOKED_TRS_C,
+    this.PAX_BOOKED_TRS_Y,
+    this.PAD_BOOKED_C,
+    this.PAD_BOOKED_Y,
+    this.OFFBLOCK_DT_A,
+    this.AIRBORNE_DT_A,
+    this.LANDING_DT_A,
+    this.ONBLOCK_DT_A,
+    this.OFFBLOCK_DT_F,
+    this.AIRBORNE_DT_F,
+    this.LANDING_DT_F,
+    this.ONBLOCK_DT_F,
+    this.OFFBLOCK_DT_M,
+    this.AIRBORNE_DT_M,
+    this.LANDING_DT_M,
+    this.ONBLOCK_DT_M,
+    this.EET,
+  });
+
+  Acleg copyWith({
+    String? LEG_NO,
+    String? FN_CARRIER,
+    String? FN_NUMBER,
+    String? FN_SUFFIX,
+    String? DAY_OF_ORIGIN,
+    String? AC_OWNER,
+    String? AC_SUBTYPE,
+    String? AC_VERSION,
+    String? AC_REGISTRATION,
+    String? DEP_AP_ACTUAL,
+    String? DEP_AP_SCHED,
+    String? DEP_DT_EST,
+    String? DEP_SCHED_DT,
+    String? ARR_AP_ACTUAL,
+    String? ARR_AP_SCHED,
+    String? ARR_DT_EST,
+    String? ARR_SCHED_DT,
+    String? SLOT_TIME_ACTUAL,
+    String? LEG_TYPE,
+    String? STATUS,
+    String? EMPLOYER_COCKPIT,
+    String? EMPLOYER_CABIN,
+    String? CYCLES,
+    String? DELAY_CODE_01,
+    String? DELAY_CODE_02,
+    String? DELAY_CODE_03,
+    String? DELAY_CODE_04,
+    String? DELAY_TIME_01,
+    String? DELAY_TIME_02,
+    String? DELAY_TIME_03,
+    String? DELAY_TIME_04,
+    String? SUBDELAY_CODE_01,
+    String? SUBDELAY_CODE_02,
+    String? SUBDELAY_CODE_03,
+    String? SUBDELAY_CODE_04,
+    String? PAX_BOOKED_C,
+    String? PAX_BOOKED_Y,
+    String? PAX_BOOKED_TRS_C,
+    String? PAX_BOOKED_TRS_Y,
+    String? PAD_BOOKED_C,
+    String? PAD_BOOKED_Y,
+    String? OFFBLOCK_DT_A,
+    String? AIRBORNE_DT_A,
+    String? LANDING_DT_A,
+    String? ONBLOCK_DT_A,
+    String? OFFBLOCK_DT_F,
+    String? AIRBORNE_DT_F,
+    String? LANDING_DT_F,
+    String? ONBLOCK_DT_F,
+    String? OFFBLOCK_DT_M,
+    String? AIRBORNE_DT_M,
+    String? LANDING_DT_M,
+    String? ONBLOCK_DT_M,
+    String? EET,
+  }) {
+    return Acleg(
+      LEG_NO: LEG_NO ?? this.LEG_NO,
+      FN_CARRIER: FN_CARRIER ?? this.FN_CARRIER,
+      FN_NUMBER: FN_NUMBER ?? this.FN_NUMBER,
+      FN_SUFFIX: FN_SUFFIX ?? this.FN_SUFFIX,
+      DAY_OF_ORIGIN: DAY_OF_ORIGIN ?? this.DAY_OF_ORIGIN,
+      AC_OWNER: AC_OWNER ?? this.AC_OWNER,
+      AC_SUBTYPE: AC_SUBTYPE ?? this.AC_SUBTYPE,
+      AC_VERSION: AC_VERSION ?? this.AC_VERSION,
+      AC_REGISTRATION: AC_REGISTRATION ?? this.AC_REGISTRATION,
+      DEP_AP_ACTUAL: DEP_AP_ACTUAL ?? this.DEP_AP_ACTUAL,
+      DEP_AP_SCHED: DEP_AP_SCHED ?? this.DEP_AP_SCHED,
+      DEP_DT_EST: DEP_DT_EST ?? this.DEP_DT_EST,
+      DEP_SCHED_DT: DEP_SCHED_DT ?? this.DEP_SCHED_DT,
+      ARR_AP_ACTUAL: ARR_AP_ACTUAL ?? this.ARR_AP_ACTUAL,
+      ARR_AP_SCHED: ARR_AP_SCHED ?? this.ARR_AP_SCHED,
+      ARR_DT_EST: ARR_DT_EST ?? this.ARR_DT_EST,
+      ARR_SCHED_DT: ARR_SCHED_DT ?? this.ARR_SCHED_DT,
+      SLOT_TIME_ACTUAL: SLOT_TIME_ACTUAL ?? this.SLOT_TIME_ACTUAL,
+      LEG_TYPE: LEG_TYPE ?? this.LEG_TYPE,
+      STATUS: STATUS ?? this.STATUS,
+      EMPLOYER_COCKPIT: EMPLOYER_COCKPIT ?? this.EMPLOYER_COCKPIT,
+      EMPLOYER_CABIN: EMPLOYER_CABIN ?? this.EMPLOYER_CABIN,
+      CYCLES: CYCLES ?? this.CYCLES,
+      DELAY_CODE_01: DELAY_CODE_01 ?? this.DELAY_CODE_01,
+      DELAY_CODE_02: DELAY_CODE_02 ?? this.DELAY_CODE_02,
+      DELAY_CODE_03: DELAY_CODE_03 ?? this.DELAY_CODE_03,
+      DELAY_CODE_04: DELAY_CODE_04 ?? this.DELAY_CODE_04,
+      DELAY_TIME_01: DELAY_TIME_01 ?? this.DELAY_TIME_01,
+      DELAY_TIME_02: DELAY_TIME_02 ?? this.DELAY_TIME_02,
+      DELAY_TIME_03: DELAY_TIME_03 ?? this.DELAY_TIME_03,
+      DELAY_TIME_04: DELAY_TIME_04 ?? this.DELAY_TIME_04,
+      SUBDELAY_CODE_01: SUBDELAY_CODE_01 ?? this.SUBDELAY_CODE_01,
+      SUBDELAY_CODE_02: SUBDELAY_CODE_02 ?? this.SUBDELAY_CODE_02,
+      SUBDELAY_CODE_03: SUBDELAY_CODE_03 ?? this.SUBDELAY_CODE_03,
+      SUBDELAY_CODE_04: SUBDELAY_CODE_04 ?? this.SUBDELAY_CODE_04,
+      PAX_BOOKED_C: PAX_BOOKED_C ?? this.PAX_BOOKED_C,
+      PAX_BOOKED_Y: PAX_BOOKED_Y ?? this.PAX_BOOKED_Y,
+      PAX_BOOKED_TRS_C: PAX_BOOKED_TRS_C ?? this.PAX_BOOKED_TRS_C,
+      PAX_BOOKED_TRS_Y: PAX_BOOKED_TRS_Y ?? this.PAX_BOOKED_TRS_Y,
+      PAD_BOOKED_C: PAD_BOOKED_C ?? this.PAD_BOOKED_C,
+      PAD_BOOKED_Y: PAD_BOOKED_Y ?? this.PAD_BOOKED_Y,
+      OFFBLOCK_DT_A: OFFBLOCK_DT_A ?? this.OFFBLOCK_DT_A,
+      AIRBORNE_DT_A: AIRBORNE_DT_A ?? this.AIRBORNE_DT_A,
+      LANDING_DT_A: LANDING_DT_A ?? this.LANDING_DT_A,
+      ONBLOCK_DT_A: ONBLOCK_DT_A ?? this.ONBLOCK_DT_A,
+      OFFBLOCK_DT_F: OFFBLOCK_DT_F ?? this.OFFBLOCK_DT_F,
+      AIRBORNE_DT_F: AIRBORNE_DT_F ?? this.AIRBORNE_DT_F,
+      LANDING_DT_F: LANDING_DT_F ?? this.LANDING_DT_F,
+      ONBLOCK_DT_F: ONBLOCK_DT_F ?? this.ONBLOCK_DT_F,
+      OFFBLOCK_DT_M: OFFBLOCK_DT_M ?? this.OFFBLOCK_DT_M,
+      AIRBORNE_DT_M: AIRBORNE_DT_M ?? this.AIRBORNE_DT_M,
+      LANDING_DT_M: LANDING_DT_M ?? this.LANDING_DT_M,
+      ONBLOCK_DT_M: ONBLOCK_DT_M ?? this.ONBLOCK_DT_M,
+      EET: EET ?? this.EET,
+    );
+  }
+
+  Map<String, dynamic> toMap() {
+    return <String, dynamic>{
+      'LEG_NO': LEG_NO,
+      'FN_CARRIER': FN_CARRIER,
+      'FN_NUMBER': FN_NUMBER,
+      'FN_SUFFIX': FN_SUFFIX,
+      'DAY_OF_ORIGIN': DAY_OF_ORIGIN,
+      'AC_OWNER': AC_OWNER,
+      'AC_SUBTYPE': AC_SUBTYPE,
+      'AC_VERSION': AC_VERSION,
+      'AC_REGISTRATION': AC_REGISTRATION,
+      'DEP_AP_ACTUAL': DEP_AP_ACTUAL,
+      'DEP_AP_SCHED': DEP_AP_SCHED,
+      'DEP_DT_EST': DEP_DT_EST,
+      'DEP_SCHED_DT': DEP_SCHED_DT,
+      'ARR_AP_ACTUAL': ARR_AP_ACTUAL,
+      'ARR_AP_SCHED': ARR_AP_SCHED,
+      'ARR_DT_EST': ARR_DT_EST,
+      'ARR_SCHED_DT': ARR_SCHED_DT,
+      'SLOT_TIME_ACTUAL': SLOT_TIME_ACTUAL,
+      'LEG_TYPE': LEG_TYPE,
+      'STATUS': STATUS,
+      'EMPLOYER_COCKPIT': EMPLOYER_COCKPIT,
+      'EMPLOYER_CABIN': EMPLOYER_CABIN,
+      'CYCLES': CYCLES,
+      'DELAY_CODE_01': DELAY_CODE_01,
+      'DELAY_CODE_02': DELAY_CODE_02,
+      'DELAY_CODE_03': DELAY_CODE_03,
+      'DELAY_CODE_04': DELAY_CODE_04,
+      'DELAY_TIME_01': DELAY_TIME_01,
+      'DELAY_TIME_02': DELAY_TIME_02,
+      'DELAY_TIME_03': DELAY_TIME_03,
+      'DELAY_TIME_04': DELAY_TIME_04,
+      'SUBDELAY_CODE_01': SUBDELAY_CODE_01,
+      'SUBDELAY_CODE_02': SUBDELAY_CODE_02,
+      'SUBDELAY_CODE_03': SUBDELAY_CODE_03,
+      'SUBDELAY_CODE_04': SUBDELAY_CODE_04,
+      'PAX_BOOKED_C': PAX_BOOKED_C,
+      'PAX_BOOKED_Y': PAX_BOOKED_Y,
+      'PAX_BOOKED_TRS_C': PAX_BOOKED_TRS_C,
+      'PAX_BOOKED_TRS_Y': PAX_BOOKED_TRS_Y,
+      'PAD_BOOKED_C': PAD_BOOKED_C,
+      'PAD_BOOKED_Y': PAD_BOOKED_Y,
+      'OFFBLOCK_DT_A': OFFBLOCK_DT_A,
+      'AIRBORNE_DT_A': AIRBORNE_DT_A,
+      'LANDING_DT_A': LANDING_DT_A,
+      'ONBLOCK_DT_A': ONBLOCK_DT_A,
+      'OFFBLOCK_DT_F': OFFBLOCK_DT_F,
+      'AIRBORNE_DT_F': AIRBORNE_DT_F,
+      'LANDING_DT_F': LANDING_DT_F,
+      'ONBLOCK_DT_F': ONBLOCK_DT_F,
+      'OFFBLOCK_DT_M': OFFBLOCK_DT_M,
+      'AIRBORNE_DT_M': AIRBORNE_DT_M,
+      'LANDING_DT_M': LANDING_DT_M,
+      'ONBLOCK_DT_M': ONBLOCK_DT_M,
+      'EET': EET,
+    };
+  }
+
+  factory Acleg.fromList(List datalist) {
+    //print(datalist);
+    if (datalist.length >= 54) {
+      return Acleg(
+          LEG_NO: datalist[0],
+          FN_CARRIER: datalist[1],
+          FN_NUMBER: datalist[2],
+          FN_SUFFIX: datalist[3],
+          DAY_OF_ORIGIN: datalist[4],
+          AC_OWNER: datalist[5],
+          AC_SUBTYPE: datalist[6],
+          AC_VERSION: datalist[7],
+          AC_REGISTRATION: datalist[8],
+          DEP_AP_ACTUAL: datalist[9],
+          DEP_AP_SCHED: datalist[10],
+          DEP_DT_EST: datalist[11],
+          DEP_SCHED_DT: datalist[12],
+          ARR_AP_ACTUAL: datalist[13],
+          ARR_AP_SCHED: datalist[14],
+          ARR_DT_EST: datalist[15],
+          ARR_SCHED_DT: datalist[16],
+          SLOT_TIME_ACTUAL: datalist[17],
+          LEG_TYPE: datalist[18],
+          STATUS: datalist[19],
+          EMPLOYER_COCKPIT: datalist[20],
+          EMPLOYER_CABIN: datalist[21],
+          CYCLES: datalist[22],
+          DELAY_CODE_01: datalist[23],
+          DELAY_CODE_02: datalist[24],
+          DELAY_CODE_03: datalist[25],
+          DELAY_CODE_04: datalist[26],
+          DELAY_TIME_01: datalist[27],
+          DELAY_TIME_02: datalist[28],
+          DELAY_TIME_03: datalist[29],
+          DELAY_TIME_04: datalist[30],
+          SUBDELAY_CODE_01: datalist[31],
+          SUBDELAY_CODE_02: datalist[32],
+          SUBDELAY_CODE_03: datalist[33],
+          SUBDELAY_CODE_04: datalist[34],
+          PAX_BOOKED_C: datalist[35],
+          PAX_BOOKED_Y: datalist[36],
+          PAX_BOOKED_TRS_C: datalist[37],
+          PAX_BOOKED_TRS_Y: datalist[38],
+          PAD_BOOKED_C: datalist[39],
+          PAD_BOOKED_Y: datalist[40],
+          OFFBLOCK_DT_A: datalist[41],
+          AIRBORNE_DT_A: datalist[42],
+          LANDING_DT_A: datalist[43],
+          ONBLOCK_DT_A: datalist[44],
+          OFFBLOCK_DT_F: datalist[45],
+          AIRBORNE_DT_F: datalist[46],
+          LANDING_DT_F: datalist[47],
+          ONBLOCK_DT_F: datalist[48],
+          OFFBLOCK_DT_M: datalist[49],
+          AIRBORNE_DT_M: datalist[50],
+          LANDING_DT_M: datalist[51],
+          ONBLOCK_DT_M: datalist[52],
+          EET: datalist[53]);
+    } else {
+      return Acleg();
+    }
+  }
+
+  factory Acleg.fromMap(Map<String, dynamic> map) {
+    return Acleg(
+      LEG_NO: map['LEG_NO'] != null ? map['LEG_NO'] as String : null,
+      FN_CARRIER:
+          map['FN_CARRIER'] != null ? map['FN_CARRIER'] as String : null,
+      FN_NUMBER: map['FN_NUMBER'] != null ? map['FN_NUMBER'] as String : null,
+      FN_SUFFIX: map['FN_SUFFIX'] != null ? map['FN_SUFFIX'] as String : null,
+      DAY_OF_ORIGIN:
+          map['DAY_OF_ORIGIN'] != null ? map['DAY_OF_ORIGIN'] as String : null,
+      AC_OWNER: map['AC_OWNER'] != null ? map['AC_OWNER'] as String : null,
+      AC_SUBTYPE:
+          map['AC_SUBTYPE'] != null ? map['AC_SUBTYPE'] as String : null,
+      AC_VERSION:
+          map['AC_VERSION'] != null ? map['AC_VERSION'] as String : null,
+      AC_REGISTRATION: map['AC_REGISTRATION'] != null
+          ? map['AC_REGISTRATION'] as String
+          : null,
+      DEP_AP_ACTUAL:
+          map['DEP_AP_ACTUAL'] != null ? map['DEP_AP_ACTUAL'] as String : null,
+      DEP_AP_SCHED:
+          map['DEP_AP_SCHED'] != null ? map['DEP_AP_SCHED'] as String : null,
+      DEP_DT_EST:
+          map['DEP_DT_EST'] != null ? map['DEP_DT_EST'] as String : null,
+      DEP_SCHED_DT:
+          map['DEP_SCHED_DT'] != null ? map['DEP_SCHED_DT'] as String : null,
+      ARR_AP_ACTUAL:
+          map['ARR_AP_ACTUAL'] != null ? map['ARR_AP_ACTUAL'] as String : null,
+      ARR_AP_SCHED:
+          map['ARR_AP_SCHED'] != null ? map['ARR_AP_SCHED'] as String : null,
+      ARR_DT_EST:
+          map['ARR_DT_EST'] != null ? map['ARR_DT_EST'] as String : null,
+      ARR_SCHED_DT:
+          map['ARR_SCHED_DT'] != null ? map['ARR_SCHED_DT'] as String : null,
+      SLOT_TIME_ACTUAL: map['SLOT_TIME_ACTUAL'] != null
+          ? map['SLOT_TIME_ACTUAL'] as String
+          : null,
+      LEG_TYPE: map['LEG_TYPE'] != null ? map['LEG_TYPE'] as String : null,
+      EMPLOYER_COCKPIT: map['EMPLOYER_COCKPIT'] != null
+          ? map['EMPLOYER_COCKPIT'] as String
+          : null,
+      EMPLOYER_CABIN: map['EMPLOYER_CABIN'] != null
+          ? map['EMPLOYER_CABIN'] as String
+          : null,
+//      CYCLES: map['CYCLES'] != null ? map['CYCLES'] as String : null,
+      DELAY_CODE_01:
+          map['DELAY_CODE_01'] != null ? map['DELAY_CODE_01'] as String : null,
+      DELAY_CODE_02:
+          map['DELAY_CODE_02'] != null ? map['DELAY_CODE_02'] as String : null,
+      DELAY_CODE_03:
+          map['DELAY_CODE_03'] != null ? map['DELAY_CODE_03'] as String : null,
+      DELAY_CODE_04:
+          map['DELAY_CODE_04'] != null ? map['DELAY_CODE_04'] as String : null,
+      DELAY_TIME_01:
+          map['DELAY_TIME_01'] != null ? map['DELAY_TIME_01'] as String : null,
+      DELAY_TIME_02:
+          map['DELAY_TIME_02'] != null ? map['DELAY_TIME_02'] as String : null,
+      DELAY_TIME_03:
+          map['DELAY_TIME_03'] != null ? map['DELAY_TIME_03'] as String : null,
+      DELAY_TIME_04:
+          map['DELAY_TIME_04'] != null ? map['DELAY_TIME_04'] as String : null,
+      SUBDELAY_CODE_01: map['SUBDELAY_CODE_01'] != null
+          ? map['SUBDELAY_CODE_01'] as String
+          : null,
+      SUBDELAY_CODE_02: map['SUBDELAY_CODE_02'] != null
+          ? map['SUBDELAY_CODE_02'] as String
+          : null,
+      SUBDELAY_CODE_03: map['SUBDELAY_CODE_03'] != null
+          ? map['SUBDELAY_CODE_03'] as String
+          : null,
+      SUBDELAY_CODE_04: map['SUBDELAY_CODE_04'] != null
+          ? map['SUBDELAY_CODE_04'] as String
+          : null,
+      PAX_BOOKED_C:
+          map['PAX_BOOKED_C'] != null ? map['PAX_BOOKED_C'] as String : null,
+      PAX_BOOKED_Y:
+          map['PAX_BOOKED_Y'] != null ? map['PAX_BOOKED_Y'] as String : null,
+      PAX_BOOKED_TRS_C: map['PAX_BOOKED_TRS_C'] != null
+          ? map['PAX_BOOKED_TRS_C'] as String
+          : null,
+      PAX_BOOKED_TRS_Y: map['PAX_BOOKED_TRS_Y'] != null
+          ? map['PAX_BOOKED_TRS_Y'] as String
+          : null,
+      PAD_BOOKED_C:
+          map['PAD_BOOKED_C'] != null ? map['PAD_BOOKED_C'] as String : null,
+      PAD_BOOKED_Y:
+          map['PAD_BOOKED_Y'] != null ? map['PAD_BOOKED_Y'] as String : null,
+      OFFBLOCK_DT_A:
+          map['OFFBLOCK_DT_A'] != null ? map['OFFBLOCK_DT_A'] as String : null,
+      AIRBORNE_DT_A:
+          map['AIRBORNE_DT_A'] != null ? map['AIRBORNE_DT_A'] as String : null,
+      LANDING_DT_A:
+          map['LANDING_DT_A'] != null ? map['LANDING_DT_A'] as String : null,
+      ONBLOCK_DT_A:
+          map['ONBLOCK_DT_A'] != null ? map['ONBLOCK_DT_A'] as String : null,
+      OFFBLOCK_DT_F:
+          map['OFFBLOCK_DT_F'] != null ? map['OFFBLOCK_DT_F'] as String : null,
+      AIRBORNE_DT_F:
+          map['AIRBORNE_DT_F'] != null ? map['AIRBORNE_DT_F'] as String : null,
+      LANDING_DT_F:
+          map['LANDING_DT_F'] != null ? map['LANDING_DT_F'] as String : null,
+      ONBLOCK_DT_F:
+          map['ONBLOCK_DT_F'] != null ? map['ONBLOCK_DT_F'] as String : null,
+      OFFBLOCK_DT_M:
+          map['OFFBLOCK_DT_M'] != null ? map['OFFBLOCK_DT_M'] as String : null,
+      AIRBORNE_DT_M:
+          map['AIRBORNE_DT_M'] != null ? map['AIRBORNE_DT_M'] as String : null,
+      LANDING_DT_M:
+          map['LANDING_DT_M'] != null ? map['LANDING_DT_M'] as String : null,
+      ONBLOCK_DT_M:
+          map['ONBLOCK_DT_M'] != null ? map['ONBLOCK_DT_M'] as String : null,
+      EET: map['EET'] != null ? map['EET'] as String : null,
+    );
+  }
+
+  String toJson() => json.encode(toMap());
+
+  factory Acleg.fromJson(String source) =>
+      Acleg.fromMap(json.decode(source) as Map<String, dynamic>);
+
+  @override
+  String toString() {
+    return 'Acleg(LEG_NO: $LEG_NO, FN_CARRIER: $FN_CARRIER, FN_NUMBER: $FN_NUMBER, FN_SUFFIX: $FN_SUFFIX, DAY_OF_ORIGIN: $DAY_OF_ORIGIN, AC_OWNER: $AC_OWNER, AC_SUBTYPE: $AC_SUBTYPE, AC_VERSION: $AC_VERSION, AC_REGISTRATION: $AC_REGISTRATION, DEP_AP_ACTUAL: $DEP_AP_ACTUAL, DEP_AP_SCHED: $DEP_AP_SCHED, DEP_DT_EST: $DEP_DT_EST, DEP_SCHED_DT: $DEP_SCHED_DT, ARR_AP_ACTUAL: $ARR_AP_ACTUAL, ARR_AP_SCHED: $ARR_AP_SCHED, ARR_DT_EST: $ARR_DT_EST, ARR_SCHED_DT: $ARR_SCHED_DT, SLOT_TIME_ACTUAL: $SLOT_TIME_ACTUAL, LEG_TYPE: $LEG_TYPE, EMPLOYER_COCKPIT: $EMPLOYER_COCKPIT, EMPLOYER_CABIN: $EMPLOYER_CABIN, CYCLES: $CYCLES, DELAY_CODE_01: $DELAY_CODE_01, DELAY_CODE_02: $DELAY_CODE_02, DELAY_CODE_03: $DELAY_CODE_03, DELAY_CODE_04: $DELAY_CODE_04, DELAY_TIME_01: $DELAY_TIME_01, DELAY_TIME_02: $DELAY_TIME_02, DELAY_TIME_03: $DELAY_TIME_03, DELAY_TIME_04: $DELAY_TIME_04, SUBDELAY_CODE_01: $SUBDELAY_CODE_01, SUBDELAY_CODE_02: $SUBDELAY_CODE_02, SUBDELAY_CODE_03: $SUBDELAY_CODE_03, SUBDELAY_CODE_04: $SUBDELAY_CODE_04, PAX_BOOKED_C: $PAX_BOOKED_C, PAX_BOOKED_Y: $PAX_BOOKED_Y, PAX_BOOKED_TRS_C: $PAX_BOOKED_TRS_C, PAX_BOOKED_TRS_Y: $PAX_BOOKED_TRS_Y, PAD_BOOKED_C: $PAD_BOOKED_C, PAD_BOOKED_Y: $PAD_BOOKED_Y, OFFBLOCK_DT_A: $OFFBLOCK_DT_A, AIRBORNE_DT_A: $AIRBORNE_DT_A, LANDING_DT_A: $LANDING_DT_A, ONBLOCK_DT_A: $ONBLOCK_DT_A, OFFBLOCK_DT_F: $OFFBLOCK_DT_F, AIRBORNE_DT_F: $AIRBORNE_DT_F, LANDING_DT_F: $LANDING_DT_F, ONBLOCK_DT_F: $ONBLOCK_DT_F, OFFBLOCK_DT_M: $OFFBLOCK_DT_M, AIRBORNE_DT_M: $AIRBORNE_DT_M, LANDING_DT_M: $LANDING_DT_M, ONBLOCK_DT_M: $ONBLOCK_DT_M, EET: $EET)';
+  }
+
+  @override
+  bool operator ==(covariant Acleg other) {
+    if (identical(this, other)) return true;
+
+    return other.LEG_NO == LEG_NO &&
+        other.FN_CARRIER == FN_CARRIER &&
+        other.FN_NUMBER == FN_NUMBER &&
+        other.FN_SUFFIX == FN_SUFFIX &&
+        other.DAY_OF_ORIGIN == DAY_OF_ORIGIN &&
+        other.AC_OWNER == AC_OWNER &&
+        other.AC_SUBTYPE == AC_SUBTYPE &&
+        other.AC_VERSION == AC_VERSION &&
+        other.AC_REGISTRATION == AC_REGISTRATION &&
+        other.DEP_AP_ACTUAL == DEP_AP_ACTUAL &&
+        other.DEP_AP_SCHED == DEP_AP_SCHED &&
+        other.DEP_DT_EST == DEP_DT_EST &&
+        other.DEP_SCHED_DT == DEP_SCHED_DT &&
+        other.ARR_AP_ACTUAL == ARR_AP_ACTUAL &&
+        other.ARR_AP_SCHED == ARR_AP_SCHED &&
+        other.ARR_DT_EST == ARR_DT_EST &&
+        other.ARR_SCHED_DT == ARR_SCHED_DT &&
+        other.SLOT_TIME_ACTUAL == SLOT_TIME_ACTUAL &&
+        other.LEG_TYPE == LEG_TYPE &&
+        other.EMPLOYER_COCKPIT == EMPLOYER_COCKPIT &&
+        other.EMPLOYER_CABIN == EMPLOYER_CABIN &&
+        other.CYCLES == CYCLES &&
+        other.DELAY_CODE_01 == DELAY_CODE_01 &&
+        other.DELAY_CODE_02 == DELAY_CODE_02 &&
+        other.DELAY_CODE_03 == DELAY_CODE_03 &&
+        other.DELAY_CODE_04 == DELAY_CODE_04 &&
+        other.DELAY_TIME_01 == DELAY_TIME_01 &&
+        other.DELAY_TIME_02 == DELAY_TIME_02 &&
+        other.DELAY_TIME_03 == DELAY_TIME_03 &&
+        other.DELAY_TIME_04 == DELAY_TIME_04 &&
+        other.SUBDELAY_CODE_01 == SUBDELAY_CODE_01 &&
+        other.SUBDELAY_CODE_02 == SUBDELAY_CODE_02 &&
+        other.SUBDELAY_CODE_03 == SUBDELAY_CODE_03 &&
+        other.SUBDELAY_CODE_04 == SUBDELAY_CODE_04 &&
+        other.PAX_BOOKED_C == PAX_BOOKED_C &&
+        other.PAX_BOOKED_Y == PAX_BOOKED_Y &&
+        other.PAX_BOOKED_TRS_C == PAX_BOOKED_TRS_C &&
+        other.PAX_BOOKED_TRS_Y == PAX_BOOKED_TRS_Y &&
+        other.PAD_BOOKED_C == PAD_BOOKED_C &&
+        other.PAD_BOOKED_Y == PAD_BOOKED_Y &&
+        other.OFFBLOCK_DT_A == OFFBLOCK_DT_A &&
+        other.AIRBORNE_DT_A == AIRBORNE_DT_A &&
+        other.LANDING_DT_A == LANDING_DT_A &&
+        other.ONBLOCK_DT_A == ONBLOCK_DT_A &&
+        other.OFFBLOCK_DT_F == OFFBLOCK_DT_F &&
+        other.AIRBORNE_DT_F == AIRBORNE_DT_F &&
+        other.LANDING_DT_F == LANDING_DT_F &&
+        other.ONBLOCK_DT_F == ONBLOCK_DT_F &&
+        other.OFFBLOCK_DT_M == OFFBLOCK_DT_M &&
+        other.AIRBORNE_DT_M == AIRBORNE_DT_M &&
+        other.LANDING_DT_M == LANDING_DT_M &&
+        other.ONBLOCK_DT_M == ONBLOCK_DT_M &&
+        other.EET == EET;
+  }
+
+  @override
+  int get hashCode {
+    return LEG_NO.hashCode ^
+        FN_CARRIER.hashCode ^
+        FN_NUMBER.hashCode ^
+        FN_SUFFIX.hashCode ^
+        DAY_OF_ORIGIN.hashCode ^
+        AC_OWNER.hashCode ^
+        AC_SUBTYPE.hashCode ^
+        AC_VERSION.hashCode ^
+        AC_REGISTRATION.hashCode ^
+        DEP_AP_ACTUAL.hashCode ^
+        DEP_AP_SCHED.hashCode ^
+        DEP_DT_EST.hashCode ^
+        DEP_SCHED_DT.hashCode ^
+        ARR_AP_ACTUAL.hashCode ^
+        ARR_AP_SCHED.hashCode ^
+        ARR_DT_EST.hashCode ^
+        ARR_SCHED_DT.hashCode ^
+        SLOT_TIME_ACTUAL.hashCode ^
+        LEG_TYPE.hashCode ^
+        EMPLOYER_COCKPIT.hashCode ^
+        EMPLOYER_CABIN.hashCode ^
+        CYCLES.hashCode ^
+        DELAY_CODE_01.hashCode ^
+        DELAY_CODE_02.hashCode ^
+        DELAY_CODE_03.hashCode ^
+        DELAY_CODE_04.hashCode ^
+        DELAY_TIME_01.hashCode ^
+        DELAY_TIME_02.hashCode ^
+        DELAY_TIME_03.hashCode ^
+        DELAY_TIME_04.hashCode ^
+        SUBDELAY_CODE_01.hashCode ^
+        SUBDELAY_CODE_02.hashCode ^
+        SUBDELAY_CODE_03.hashCode ^
+        SUBDELAY_CODE_04.hashCode ^
+        PAX_BOOKED_C.hashCode ^
+        PAX_BOOKED_Y.hashCode ^
+        PAX_BOOKED_TRS_C.hashCode ^
+        PAX_BOOKED_TRS_Y.hashCode ^
+        PAD_BOOKED_C.hashCode ^
+        PAD_BOOKED_Y.hashCode ^
+        OFFBLOCK_DT_A.hashCode ^
+        AIRBORNE_DT_A.hashCode ^
+        LANDING_DT_A.hashCode ^
+        ONBLOCK_DT_A.hashCode ^
+        OFFBLOCK_DT_F.hashCode ^
+        AIRBORNE_DT_F.hashCode ^
+        LANDING_DT_F.hashCode ^
+        ONBLOCK_DT_F.hashCode ^
+        OFFBLOCK_DT_M.hashCode ^
+        AIRBORNE_DT_M.hashCode ^
+        LANDING_DT_M.hashCode ^
+        ONBLOCK_DT_M.hashCode ^
+        EET.hashCode;
+  }
+}

+ 1733 - 0
lib/csv/data.dart

@@ -0,0 +1,1733 @@
+// ignore_for_file: non_constant_identifier_names
+
+import 'dart:async';
+import 'dart:convert';
+import 'dart:io';
+
+import 'package:collection/collection.dart';
+import 'package:flutter/foundation.dart';
+import 'package:flutter_riverpod/flutter_riverpod.dart';
+import 'package:jiffy/jiffy.dart';
+import 'package:supabase_flutter/supabase_flutter.dart';
+//import 'package:supabase_flutter/supabase_flutter.dart';
+
+import "package:tp5/core/utils.dart";
+import "package:tp5/csv/csv_data.dart";
+
+class CrewFilter {
+  String? college;
+  String? ac;
+  String? tlc;
+  String? fname;
+  String? lname;
+  String? searchname;
+  CrewFilter({
+    this.college,
+    this.ac,
+    this.tlc,
+    this.fname,
+    this.lname,
+    this.searchname,
+  });
+
+  CrewFilter copyWith({
+    ValueGetter<String?>? college,
+    ValueGetter<String?>? ac,
+    ValueGetter<String?>? tlc,
+    ValueGetter<String?>? fname,
+    ValueGetter<String?>? lname,
+    ValueGetter<String?>? searchname,
+  }) {
+    return CrewFilter(
+      college: college != null ? college() : this.college,
+      ac: ac != null ? ac() : this.ac,
+      tlc: tlc != null ? tlc() : this.tlc,
+      fname: fname != null ? fname() : this.fname,
+      lname: lname != null ? lname() : this.lname,
+      searchname: searchname != null ? searchname() : this.searchname,
+    );
+  }
+
+  Map<String, dynamic> toMap() {
+    return {
+      'college': college,
+      'ac': ac,
+      'tlc': tlc,
+      'fname': fname,
+      'lname': lname,
+      'searchname': searchname,
+    };
+  }
+
+  factory CrewFilter.fromMap(Map<String, dynamic> map) {
+    return CrewFilter(
+      college: map['college'],
+      ac: map['ac'],
+      tlc: map['tlc'],
+      fname: map['fname'],
+      lname: map['lname'],
+      searchname: map['searchname'],
+    );
+  }
+
+  String toJson() => json.encode(toMap());
+
+  factory CrewFilter.fromJson(String source) =>
+      CrewFilter.fromMap(json.decode(source));
+
+  @override
+  String toString() {
+    return 'CrewFilter(college: $college, ac: $ac, tlc: $tlc, fname: $fname, lname: $lname, searchname: $searchname)';
+  }
+
+  @override
+  bool operator ==(Object other) {
+    if (identical(this, other)) return true;
+
+    return other is CrewFilter &&
+        other.college == college &&
+        other.ac == ac &&
+        other.tlc == tlc &&
+        other.fname == fname &&
+        other.lname == lname &&
+        other.searchname == searchname;
+  }
+
+  @override
+  int get hashCode {
+    return college.hashCode ^
+        ac.hashCode ^
+        tlc.hashCode ^
+        fname.hashCode ^
+        lname.hashCode ^
+        searchname.hashCode;
+  }
+}
+
+class FlightFilter {
+  String? al;
+  String? fnum;
+  String? date;
+  String? dep;
+  String? arr;
+  Jiffy? jdep;
+  Jiffy? jarr;
+  String? tlc;
+  String? reg;
+  FlightFilter(
+      {this.al,
+      this.fnum,
+      this.date,
+      this.dep,
+      this.arr,
+      this.jdep,
+      this.jarr,
+      this.tlc,
+      this.reg});
+  @override
+  bool operator ==(Object other) {
+    if (identical(this, other)) return true;
+
+    return other is FlightFilter &&
+        other.al == al &&
+        other.fnum == fnum &&
+        other.date == date &&
+        other.dep == dep &&
+        other.arr == arr &&
+        other.jdep == jdep &&
+        other.jarr == jarr &&
+        other.tlc == tlc &&
+        other.reg == reg;
+  }
+
+  FlightFilter copyWith({
+    ValueGetter<String?>? al,
+    ValueGetter<String?>? fnum,
+    ValueGetter<String?>? date,
+    ValueGetter<String?>? dep,
+    ValueGetter<String?>? arr,
+    ValueGetter<Jiffy?>? jdep,
+    ValueGetter<Jiffy?>? jarr,
+    ValueGetter<String?>? tlc,
+    ValueGetter<String?>? reg,
+  }) {
+    return FlightFilter(
+      al: al != null ? al() : this.al,
+      fnum: fnum != null ? fnum() : this.fnum,
+      date: date != null ? date() : this.date,
+      dep: dep != null ? dep() : this.dep,
+      arr: arr != null ? arr() : this.arr,
+      jdep: jdep != null ? jdep() : this.jdep,
+      jarr: jarr != null ? jarr() : this.jarr,
+      tlc: tlc != null ? tlc() : this.tlc,
+      reg: reg != null ? reg() : this.reg,
+    );
+  }
+
+  Map<String, dynamic> toMap() {
+    return {
+      'al': al,
+      'fnum': fnum,
+      'date': date,
+      'dep': dep,
+      'arr': arr,
+      'jdep': jdep?.toString(),
+      'jarr': jarr?.toString(),
+      'tlc': tlc,
+      'reg': reg,
+    };
+  }
+
+  factory FlightFilter.fromMap(Map<String, dynamic> map) {
+    return FlightFilter(
+      al: map['al'],
+      fnum: map['fnum'],
+      date: map['date'],
+      dep: map['dep'],
+      arr: map['arr'],
+      jdep: map['jdep'] != null ? Jiffy.parse(map['jdep']) : null,
+      jarr: map['jarr'] != null ? Jiffy.parse(map['jarr']) : null,
+      tlc: map['tlc'],
+      reg: map['reg'],
+    );
+  }
+
+  String toJson() => json.encode(toMap());
+
+  factory FlightFilter.fromJson(String source) =>
+      FlightFilter.fromMap(json.decode(source));
+
+  @override
+  String toString() {
+    return 'FlightFilter(al: $al, fnum: $fnum, date: $date, dep: $dep, arr: $arr, jdep: $jdep, jarr: $jarr, tlc: $tlc, reg: $reg)';
+  }
+
+  @override
+  int get hashCode {
+    return al.hashCode ^
+        fnum.hashCode ^
+        date.hashCode ^
+        dep.hashCode ^
+        arr.hashCode ^
+        jdep.hashCode ^
+        jarr.hashCode ^
+        tlc.hashCode ^
+        reg.hashCode;
+  }
+}
+
+final pnlegByTlcProvider =
+    Provider. /*autoDispose.*/ family<List<Pnleg>, String>((ref, tlc) => ref
+        .watch(dataProvider)
+        .pnleg
+        .where((leg) => leg.tlc == tlc)
+        .sortedBy((e) =>
+            e.jdep?.dateTime ??
+            Jiffy.parse(e.depdate ?? "01/01/2001",
+                    pattern: "dd/MM/yyyy", isUtc: true)
+                .dateTime)
+        .toList());
+
+final pnlegProvider = Provider. /*autoDispose.*/ family<List<Pnleg>, FlightFilter>(
+    (ref, flightFilter) => ref
+        .watch(dataProvider)
+        .pnleg
+        .where((leg) =>
+            (leg.al == (flightFilter.al ?? leg.al)) &&
+            (leg.fnum == (flightFilter.fnum ?? leg.fnum)) &&
+            // (leg.jdep?.yMd ==
+            //     (flightFilter.date ?? leg.jdep?.yMd)) && //format yyyy-MM-dd
+            (leg.dep == (flightFilter.dep ?? leg.dep)) &&
+            (leg.arr == (flightFilter.arr ?? leg.arr)) &&
+            (flightFilter.jdep == null ||
+                (leg.jdep != null &&
+                    flightFilter.jdep != null &&
+                    flightFilter.jdep!.isBetween(leg.jdep!.subtract(hours: 5),
+                        leg.jdep!.add(hours: 5)))) &&
+            (flightFilter.jarr == null ||
+                (leg.jarr != null &&
+                    flightFilter.jarr != null &&
+                    flightFilter.jarr!.isBetween(leg.jarr!.subtract(hours: 5),
+                        leg.jarr!.add(hours: 5)))) &&
+            (leg.tlc == (flightFilter.tlc ?? leg.tlc)))
+        .toList());
+
+/*
+final pnlegInterval = Provider((ref) {
+  final pnleg = ref.watch(dataProvider).pnleg;
+  return pnleg.where((leg) => leg.jdep != null && leg.jarr != null).toList();
+});
+
+
+final pnlegDates = Provider((ref) {
+  final pnleg = ref.watch(dataProvider).pnleg;
+  return pnleg.fold(
+      <Jiffy?>{},
+      (t, e) => [...t, e.jdep?.startOf(Unit.day)]
+          .nonNulls
+          .sortedBy((k) => k.millisecondsSinceEpoch.toString())
+          .toSet());
+});
+
+final pnlegTlcs = Provider((ref) {
+  final data = ref.watch(dataProvider);
+  final pnleg = data.pnleg;
+  final qualif = data.qualif;
+
+  return pnleg.fold(<String?>{}, (t, e) => {...t, e.tlc}).sortedBy((k) =>
+      qualif.firstWhereOrNull((q) => q.tlc == k)?.lname ?? "zzzzzzzzzzzzz");
+});
+*/
+
+final aclegProvider = Provider.autoDispose.family<List<Acleg>, FlightFilter>(
+    (ref, flightFilter) => ref
+        .watch(dataProvider)
+        .acleg
+        .where((leg) =>
+            (leg.FN_CARRIER == (flightFilter.al ?? leg.FN_CARRIER)) &&
+            (leg.FN_NUMBER == (flightFilter.fnum ?? leg.FN_NUMBER)) &&
+//            (leg.jdep?.yMd ==
+//                (flightFilter.date ?? leg.jdep?.yMd)) && //format yyyy-MM-dd
+            (leg.DEP_AP_ACTUAL == (flightFilter.dep ?? leg.DEP_AP_ACTUAL)) &&
+            (leg.DEP_AP_SCHED == (flightFilter.dep ?? leg.DEP_AP_SCHED)) &&
+            (leg.ARR_AP_ACTUAL == (flightFilter.arr ?? leg.ARR_AP_ACTUAL)) &&
+            (leg.ARR_AP_SCHED == (flightFilter.arr ?? leg.ARR_AP_SCHED)) &&
+            (flightFilter.jdep == null ||
+                (leg.jdep != null &&
+                    flightFilter.jdep != null &&
+                    flightFilter.jdep!.isBetween(leg.jdep!.subtract(hours: 5),
+                        leg.jdep!.add(hours: 5)))) &&
+            (flightFilter.jarr == null ||
+                (leg.jarr != null &&
+                    flightFilter.jarr != null &&
+                    flightFilter.jarr!.isBetween(leg.jarr!.subtract(hours: 5),
+                        leg.jarr!.add(hours: 5)))) &&
+            (leg.AC_REGISTRATION == (flightFilter.reg ?? leg.AC_REGISTRATION)))
+        .toList());
+
+final qualifProvider = Provider.family<List<Qualif>, CrewFilter>(
+    (ref, crewFilter) => ref
+        .watch(dataProvider)
+        .qualif
+        .where((x) => (((crewFilter.tlc ?? x.tlc) == x.tlc &&
+            (crewFilter.college ?? x.college) == x.college &&
+            (crewFilter.ac ?? x.ac) == x.ac &&
+            (crewFilter.lname ?? x.lname ?? "").capitalize() ==
+                (x.lname ?? "").capitalize() &&
+            (crewFilter.fname ?? x.fname ?? "").capitalize() ==
+                (x.fname ?? "").capitalize() &&
+            //search like
+            (crewFilter.searchname == null ||
+                (x.fname ?? "")
+                    .capitalize()
+                    .contains(crewFilter.searchname!.capitalize())) &&
+            (crewFilter.searchname == null ||
+                (x.lname ?? "")
+                    .capitalize()
+                    .contains(crewFilter.searchname!.capitalize())))))
+        .toList());
+
+final dataProvider = StateNotifierProvider<DataNotifier, DataState>((ref) {
+  return DataNotifier();
+});
+
+class DataState {
+  List<Qualif> qualif;
+
+  List<Pnleg> pnleg;
+
+  List<Acleg> acleg;
+
+  Jiffy? qualifupdate;
+  Jiffy? pnlegupdate;
+  Jiffy? aclegupdate;
+
+  List<Jiffy> get pnleg_dates => pnleg.fold(
+      <Jiffy>{},
+      (t, e) => {
+            ...t,
+            e.jdep?.startOf(Unit.day) ??
+                Jiffy.parse(e.date ?? "01/01/1970",
+                    pattern: "dd/MM/yyyy", isUtc: true)
+          }).sortedBy((e) => e.dateTime);
+
+  List<String> get pnleg_tlcs =>
+      pnleg.fold(<String>{}, (t, e) => {...t, e.tlc ?? ""}).sortedBy((e) {
+        final pn = qualif.firstWhereOrNull((q) => q.tlc == e);
+        return "${pn?.lname} ${pn?.fname}";
+      });
+
+  // PnlegMeta get pnleg_tlcs_dates {
+  //   Set<String> tlcs = {};
+  //   Set<Jiffy> dates = {};
+  //   for (Pnleg leg in pnleg) {
+  //     tlcs.add(leg.tlc ?? "");
+  //     dates.add(leg.jdep?.startOf(Unit.day) ??
+  //         Jiffy.parse(leg.date ?? "01/01/1970",
+  //             pattern: "dd/MM/yyyy", isUtc: true));
+  //   }
+  //   // final restlcs = tlcs.sortedBy((k) =>qualif.firstWhereOrNull((q) => q.tlc == k)?.lname ?? "zzzzzzzzzzzzz");
+  //   final restlcs = tlcs.sortedBy((e) =>
+  //       "${qualif.firstWhereOrNull((k) => k.tlc == e)?.lname} ${qualif.firstWhereOrNull((k) => k.tlc == e)?.fname}");
+  //   final resdates = dates.sortedBy((k) => k.millisecondsSinceEpoch.toString());
+  //   return PnlegMeta(tlcs: restlcs, dates: resdates);
+  // }
+
+  DataState({
+    this.qualif = const [],
+    this.pnleg = const [],
+    this.acleg = const [],
+    this.qualifupdate,
+    this.pnlegupdate,
+    this.aclegupdate,
+  });
+
+  DataState copyWith({
+    List<Qualif>? qualif,
+    List<Pnleg>? pnleg,
+    List<Acleg>? acleg,
+    Jiffy? qualifupdate,
+    Jiffy? pnlegupdate,
+    Jiffy? aclegupdate,
+  }) {
+    return DataState(
+      qualif: qualif ?? this.qualif,
+      pnleg: pnleg ?? this.pnleg,
+      acleg: acleg ?? this.acleg,
+      qualifupdate: qualifupdate ?? this.qualifupdate,
+      pnlegupdate: pnlegupdate ?? this.pnlegupdate,
+      aclegupdate: aclegupdate ?? this.aclegupdate,
+    );
+  }
+
+  @override
+  String toString() {
+    return 'DataState(qualif: $qualif, pnleg: $pnleg, acleg: $acleg, qualifupdate: $qualifupdate, pnlegupdate: $pnlegupdate, aclegupdate: $aclegupdate)';
+  }
+
+  @override
+  bool operator ==(Object other) {
+    if (identical(this, other)) return true;
+
+    return other is DataState &&
+        listEquals(other.qualif, qualif) &&
+        listEquals(other.pnleg, pnleg) &&
+        listEquals(other.acleg, acleg) &&
+        other.qualifupdate == qualifupdate &&
+        other.pnlegupdate == pnlegupdate &&
+        other.aclegupdate == aclegupdate;
+  }
+
+  @override
+  int get hashCode {
+    return qualif.hashCode ^
+        pnleg.hashCode ^
+        acleg.hashCode ^
+        qualifupdate.hashCode ^
+        pnlegupdate.hashCode ^
+        aclegupdate.hashCode;
+  }
+}
+
+class DataNotifier extends StateNotifier<DataState> {
+  RealtimeChannel? realtimeCsvupdates;
+  Timer? _timer;
+
+  final timerretrymin = Duration(minutes: 1);
+  final timerretrymax = Duration(minutes: 5);
+
+  _resetTimer(Duration dur) {
+    print(
+        "data: datastate: resettimer: timer reseteed ${dur.inMinutes}min ${Jiffy.now().Hms}");
+    _timer?.cancel();
+    _timer = Timer.periodic(dur, (timer) async {
+      print("data: datastate: timer: activated ${Jiffy.now().Hms}");
+      await downloadModifiedFiles();
+    });
+  }
+
+  DataNotifier() : super(DataState()) {
+    Future.delayed(Duration.zero).then((x) async {
+      await downloadModifiedFiles();
+      await loadAll();
+
+      realtimeCsvupdates = Supabase.instance.client
+          .channel('public:csvupdates')
+          .onPostgresChanges(
+              event: PostgresChangeEvent.insert,
+              schema: 'public',
+              table: 'csvupdates',
+              callback: (payload) async {
+                print(
+                    "data: datanotifier: realtime: ${payload.newRecord["filename"]}");
+                await downloadFile(payload.newRecord["filename"]);
+              })
+          .subscribe();
+    });
+  }
+
+  @override
+  void dispose() {
+    if (_timer != null) _timer!.cancel();
+
+    if (realtimeCsvupdates != null) realtimeCsvupdates!.unsubscribe();
+    super.dispose();
+  }
+
+  Future<void> downloadFile(String fileName) async {
+    final supabaseClient = Supabase.instance.client;
+    final localFile = File(PathTo().downloadFile(fileName));
+
+    final fileBytes =
+        await supabaseClient.storage.from('csv').download(fileName);
+    if (fileBytes.isNotEmpty) {
+      await localFile.writeAsBytes(fileBytes);
+      print('data: downloadfile: Downloaded  file: $fileName');
+      await localFile.copy(PathTo().csvFile(fileName));
+      await loadAll();
+      _resetTimer(timerretrymax);
+    } else {
+      _resetTimer(timerretrymin);
+    }
+  }
+
+  Future<void> downloadModifiedFiles() async {
+    final supabaseClient = Supabase.instance.client;
+    //print("data: downloadmodifiedfiles");
+    // Get the local download directory
+    final String downloadPath = PathTo().subd("download").path;
+
+    // Create the download directory if it doesn't exist
+    final Directory directory = Directory(downloadPath);
+    if (!await directory.exists()) {
+      await directory.create(recursive: true);
+    }
+    Duration timerdur = timerretrymin;
+    try {
+      // List files in the "csv" bucket
+      final filelist = await supabaseClient.storage.from('csv').list();
+      // Iterate through the files and check for modifications
+      for (final file in filelist) {
+        final fileName = file.name;
+        final modifiedAt = file.updatedAt;
+
+        // Check if the file exists locally
+        final localFile = File(PathTo().downloadFile(fileName));
+        DateTime? localModifiedAt;
+
+        if (await localFile.exists()) {
+          localModifiedAt = await localFile.lastModified();
+        }
+
+        // Download the file if it has been modified
+        if (localModifiedAt == null ||
+            (modifiedAt != null &&
+                DateTime.parse(modifiedAt).isAfter(localModifiedAt))) {
+          final fileBytes =
+              await supabaseClient.storage.from('csv').download(fileName);
+          if (fileBytes.isNotEmpty) {
+            await localFile.writeAsBytes(fileBytes);
+            print(
+                'data: downloadmodified file: Downloaded modified file: $fileName');
+            await localFile.copy(PathTo().csvFile(fileName));
+            timerdur = timerretrymax;
+            await loadAll();
+          } else {
+            print('Failed to download file: $fileName');
+          }
+        } else {
+          //print('File $fileName is up to date.');
+        }
+      }
+    } catch (e) {
+      print(
+          "data: downloadmodified files: unable to list files on supabase bucket");
+    } finally {
+      _resetTimer(timerdur);
+    }
+  }
+
+  loadAll() async {
+    if (qualiftime != qualifupdate) await loadQualif();
+    if (aclegtime != aclegupdate) await loadAclegs();
+    if (pnleg3time != pnleg3update) await loadPnlegs3();
+    if (pnlegmoistime != pnlegmoisupdate) await loadPnlegsmois();
+  }
+
+  Jiffy? qualifupdate;
+  String get qualiffile => PathTo().csvFile("exportlicence.txt");
+  Jiffy? get qualiftime => File(qualiffile).existsSync()
+      ? Jiffy.parseFromDateTime(
+          File(PathTo().csvFile("exportlicence.txt")).lastModifiedSync())
+      : null;
+  List<Qualif> qualif = [];
+  loadQualif() async {
+    print("data: qualif update ${qualiftime?.dateTime}");
+    final txt = await File(qualiffile).readAsString();
+    qualifupdate = qualiftime;
+
+    qualif =
+        await compute(csvqualiftolist, txt, debugLabel: "convert qualif csv");
+
+    state = state.copyWith(qualifupdate: qualifupdate, qualif: qualif);
+  }
+
+  static List<Qualif> csvqualiftolist(txt) {
+    return CsvData.csv2list(txt).map((e) => Qualif.fromList(e)).toList();
+  }
+
+  Jiffy? aclegupdate;
+  String get aclegfile => PathTo().csvFile("secondprgtype.zip");
+  Jiffy? get aclegtime => File(aclegfile).existsSync()
+      ? Jiffy.parseFromDateTime(
+          File(PathTo().csvFile("secondprgtype.zip")).lastModifiedSync())
+      : null;
+  List<Acleg> acleg = [];
+  loadAclegs() async {
+    print("data: acleg update ${aclegtime?.dateTime}");
+
+    final txt =
+        await CsvData.extractTextFileFromZip(aclegfile, "secondprgtype.txt");
+    aclegupdate = aclegtime;
+    acleg =
+        await compute(csvaclegtolist, txt, debugLabel: "convert aclegs csv");
+
+    state = state.copyWith(aclegupdate: aclegupdate, acleg: acleg);
+
+    //print(acleg);
+  }
+
+  static List<Acleg> csvaclegtolist(txt) {
+    return CsvData.csv2list(txt)
+        .map((e) => Acleg.fromList(e))
+        .where((leg) =>
+            //only flights of Tunisair
+            (leg.FN_CARRIER == "TU" ||
+                leg.EMPLOYER_CABIN == "TU" ||
+                leg.EMPLOYER_COCKPIT == "TU" ||
+                leg.AC_OWNER == "TU"))
+        .sortedBy((e) => e.jdep!.dateTime)
+        .toList();
+  }
+
+  List<Pnleg> pnleg = [];
+
+  static List<Pnleg> calculpnleg(Map data) {
+    //print(data.keys);
+    final pnlegmoistime = data["pnlegmoistime"] as Jiffy?;
+    final pnleg3time = data["pnleg3time"] as Jiffy?;
+    final pnlegmois = data["pnlegmois"] as List<Pnleg>;
+    final pnleg3 = data["pnleg3"] as List<Pnleg>;
+    if (pnlegmoistime != null &&
+        pnleg3time != null &&
+        pnlegmoistime.isSameOrAfter(pnleg3time)) {
+      return pnlegmois;
+    } else if (pnlegmoistime != null &&
+        pnleg3time != null &&
+        pnlegmoistime.isBefore(pnleg3time)) {
+      final dates3tlc3 =
+          pnleg3.fold(<String>{}, (p, e) => {...p, "${e.date},${e.tlc}"});
+      return (pnlegmois
+          .where((x) => !(dates3tlc3.contains("${x.date},${x.tlc}")))
+          .toList())
+        ..addAll(pnleg3); //pnleg3 dabord
+    } else if (pnlegmoistime == null && pnleg3time != null) {
+      return pnleg3;
+    } else if (pnlegmoistime != null && pnleg3time == null) {
+      return pnlegmois;
+    } else {
+      return <Pnleg>[];
+    }
+  }
+
+  Jiffy? pnlegmoisupdate;
+  static String get pnlegmoisfile => PathTo().csvFile("ExportPGRGPNmois.zip");
+  Jiffy? get pnlegmoistime => File(pnlegmoisfile).existsSync()
+      ? Jiffy.parseFromDateTime(
+          File(PathTo().csvFile("ExportPGRGPNmois.zip")).lastModifiedSync())
+      : null;
+  List<Pnleg> pnlegmois = [];
+  loadPnlegsmois() async {
+    print("data: pnlegmois update ${pnlegmoistime?.dateTime}");
+
+    final txt = await CsvData.extractTextFileFromZip(
+        pnlegmoisfile, "ExportPGRGPNmois.txt");
+    // pnlegmois = CsvData.csv2list(txt).map((e) => Pnleg.fromList(e)).toList();
+    pnlegmoisupdate = pnlegmoistime;
+
+    pnlegmois =
+        await compute(csvpnlegtolist, txt, debugLabel: "convert pnlegmois csv");
+    pnleg = await compute(
+        calculpnleg,
+        {
+          "pnlegmois": pnlegmois,
+          "pnlegmoistime": pnlegmoistime,
+          "pnleg3": pnleg3,
+          "pnleg3time": pnleg3time,
+        },
+        debugLabel: "recalculate pnleg");
+    //calculPnlegMeta();
+    state = state.copyWith(pnlegupdate: pnlegmoisupdate, pnleg: pnleg);
+  }
+
+  static List<Pnleg> csvpnlegtolist(txt) {
+    return CsvData.csv2list(txt).map((e) => Pnleg.fromList(e)).toList();
+  }
+
+  Jiffy? pnleg3update;
+  String get pnleg3file => PathTo().csvFile("exportPGRGPN.zip");
+  Jiffy? get pnleg3time => File(pnleg3file).existsSync()
+      ? Jiffy.parseFromDateTime(
+          File(PathTo().csvFile("exportPGRGPN.zip")).lastModifiedSync())
+      : null;
+  List<Pnleg> pnleg3 = [];
+  loadPnlegs3() async {
+    print("data: pnleg3 update ${pnleg3time?.dateTime}");
+
+    final txt =
+        await CsvData.extractTextFileFromZip(pnleg3file, "exportPGRGPN.txt");
+    pnleg3 =
+        await compute(csvpnlegtolist, txt, debugLabel: "convert pnleg3 csv");
+    pnleg3update = pnleg3time;
+    pnleg = await compute(
+        calculpnleg,
+        {
+          "pnlegmois": pnlegmois,
+          "pnlegmoistime": pnlegmoistime,
+          "pnleg3": pnleg3,
+          "pnleg3time": pnleg3time,
+        },
+        debugLabel: "recalculating pnleg");
+
+    state = state.copyWith(pnlegupdate: pnleg3update, pnleg: pnleg);
+
+    //print(pnleg3);
+  }
+}
+
+class Qualif {
+  String? tlc;
+  String? lname;
+  String? mname;
+  String? fname;
+  String? date;
+  String? ac;
+  String? college;
+  String? base;
+  Qualif({
+    this.tlc,
+    this.lname,
+    this.mname,
+    this.fname,
+    this.date,
+    this.ac,
+    this.college,
+    this.base,
+  });
+
+  Qualif copyWith({
+    String? tlc,
+    String? lname,
+    String? mname,
+    String? fname,
+    String? date,
+    String? ac,
+    String? college,
+    String? base,
+  }) {
+    return Qualif(
+      tlc: tlc ?? this.tlc,
+      lname: lname ?? this.lname,
+      mname: mname ?? this.mname,
+      fname: fname ?? this.fname,
+      date: date ?? this.date,
+      ac: ac ?? this.ac,
+      college: college ?? this.college,
+      base: base ?? this.base,
+    );
+  }
+
+  Map<String, dynamic> toMap() {
+    return <String, dynamic>{
+      'tlc': tlc,
+      'lname': lname,
+      'mname': mname,
+      'fname': fname,
+      'date': date,
+      'ac': ac,
+      'college': college,
+      'base': base,
+    };
+  }
+
+  factory Qualif.fromList(List datalist) {
+    return Qualif(
+        tlc: datalist[0],
+        lname: datalist[1],
+        mname: datalist[2],
+        fname: datalist[3],
+        date: datalist[4],
+        ac: datalist[5],
+        college: datalist[6],
+        base: datalist[7]);
+  }
+
+  factory Qualif.fromMap(Map<String, dynamic> map) {
+    return Qualif(
+      tlc: map['tlc'] != null ? map['tlc'] as String : null,
+      lname: map['lname'] != null ? map['lname'] as String : null,
+      mname: map['mname'] != null ? map['mname'] as String : null,
+      fname: map['fname'] != null ? map['fname'] as String : null,
+      date: map['date'] != null ? map['date'] as String : null,
+      ac: map['ac'] != null ? map['ac'] as String : null,
+      college: map['college'] != null ? map['college'] as String : null,
+      base: map['base'] != null ? map['base'] as String : null,
+    );
+  }
+
+  String toJson() => json.encode(toMap());
+
+  factory Qualif.fromJson(String source) =>
+      Qualif.fromMap(json.decode(source) as Map<String, dynamic>);
+
+  @override
+  String toString() {
+    return 'Qualif(tlc: $tlc, lname: $lname, mname: $mname, fname: $fname, date: $date, ac: $ac, college: $college, base: $base)';
+  }
+
+  @override
+  bool operator ==(covariant Qualif other) {
+    if (identical(this, other)) return true;
+
+    return other.tlc == tlc &&
+        other.lname == lname &&
+        other.mname == mname &&
+        other.fname == fname &&
+        other.date == date &&
+        other.ac == ac &&
+        other.college == college &&
+        other.base == base;
+  }
+
+  @override
+  int get hashCode {
+    return tlc.hashCode ^
+        lname.hashCode ^
+        mname.hashCode ^
+        fname.hashCode ^
+        date.hashCode ^
+        ac.hashCode ^
+        college.hashCode ^
+        base.hashCode;
+  }
+}
+
+class Pnleg {
+  String? date;
+  Jiffy? get jdate => date != null
+      ? Jiffy.parse(date ?? "01/01/1970", pattern: "dd/MM/yyyy", isUtc: true)
+      : null;
+
+  String? tlc;
+  String? actype;
+  String? al;
+  String? fnum;
+  String? depdate;
+  String? deptime;
+  String? arrdate;
+  String? arrtime;
+  String? dep;
+  String? arr;
+  String? label;
+  String? type;
+  Jiffy? get jdep =>
+      deptime != null ? "$depdate $deptime".parseddmmyyyyhhmm() : null;
+  Jiffy? get jarr =>
+      arrtime != null ? "$arrdate $arrtime".parseddmmyyyyhhmm() : null;
+
+  String get dutytype {
+    if (type == "L") {
+      return "flight";
+    } else if ((type == "G")) {
+      return "dhlimo";
+    } else if ((type == "F") || ((dep ?? "") != "" && (arr ?? "") != "")) {
+      return "dhflight";
+    } else if ((label?.startsWith("SBY") ?? false) || (label == "R0")) {
+      return "standby";
+    } else if ((!["OFF", "CM", "CA", "PP"].contains(label)) &&
+        (jarr != null &&
+            jdep != null &&
+            DTInterval(jdep!, jarr!).duration.inHours < 18)) {
+      return "ground";
+    } else {
+      return "day";
+    }
+  }
+
+  Pnleg({
+    this.date,
+    this.tlc,
+    this.actype,
+    this.al,
+    this.fnum,
+    this.depdate,
+    this.deptime,
+    this.arrdate,
+    this.arrtime,
+    this.dep,
+    this.arr,
+    this.label,
+    this.type,
+  });
+
+  Pnleg copyWith({
+    String? date,
+    String? tlc,
+    String? actype,
+    String? al,
+    String? fnum,
+    String? depdate,
+    String? deptime,
+    String? arrdate,
+    String? arrtime,
+    String? dep,
+    String? arr,
+    String? label,
+    String? type,
+  }) {
+    return Pnleg(
+      date: date ?? this.date,
+      tlc: tlc ?? this.tlc,
+      actype: actype ?? this.actype,
+      al: al ?? this.al,
+      fnum: fnum ?? this.fnum,
+      depdate: depdate ?? this.depdate,
+      deptime: deptime ?? this.deptime,
+      arrdate: arrdate ?? this.arrdate,
+      arrtime: arrtime ?? this.arrtime,
+      dep: dep ?? this.dep,
+      arr: arr ?? this.arr,
+      label: label ?? this.label,
+      type: type ?? this.type,
+    );
+  }
+
+  Map<String, dynamic> toMap() {
+    return <String, dynamic>{
+      'date': date,
+      'tlc': tlc,
+      'actype': actype,
+      'al': al,
+      'fnum': fnum,
+      'depdate': depdate,
+      'deptime': deptime,
+      'arrdate': arrdate,
+      'arrtime': arrtime,
+      'dep': dep,
+      'arr': arr,
+      'label': label,
+      'type': type,
+    };
+  }
+
+  factory Pnleg.fromList(List datalist) {
+    return Pnleg(
+        date: datalist[0],
+        tlc: datalist[1],
+        actype: datalist[2],
+        al: datalist[3],
+        fnum: datalist[4],
+        depdate: datalist[5],
+        deptime: datalist[6],
+        arrdate: datalist[7],
+        arrtime: datalist[8],
+        dep: datalist[9],
+        arr: datalist[10],
+        label: datalist[11],
+        type: datalist[12]);
+  }
+
+  factory Pnleg.fromMap(Map<String, dynamic> map) {
+    return Pnleg(
+      date: map['date'] != null ? map['date'] as String : null,
+      tlc: map['tlc'] != null ? map['tlc'] as String : null,
+      actype: map['actype'] != null ? map['actype'] as String : null,
+      al: map['al'] != null ? map['al'] as String : null,
+      fnum: map['fnum'] != null ? map['fnum'] as String : null,
+      depdate: map['depdate'] != null ? map['depdate'] as String : null,
+      deptime: map['deptime'] != null ? map['deptime'] as String : null,
+      arrdate: map['arrdate'] != null ? map['arrdate'] as String : null,
+      arrtime: map['arrtime'] != null ? map['arrtime'] as String : null,
+      dep: map['dep'] != null ? map['dep'] as String : null,
+      arr: map['arr'] != null ? map['arr'] as String : null,
+      label: map['label'] != null ? map['label'] as String : null,
+      type: map['type'] != null ? map['type'] as String : null,
+    );
+  }
+
+  String toJson() => json.encode(toMap());
+
+  factory Pnleg.fromJson(String source) =>
+      Pnleg.fromMap(json.decode(source) as Map<String, dynamic>);
+
+  @override
+  String toString() {
+    return 'Pnleg(date: $date, tlc: $tlc, actype: $actype, al: $al, fnum: $fnum, depdate: $depdate, deptime: $deptime, arrdate: $arrdate, arrtime: $arrtime, dep: $dep, arr: $arr, label: $label, type: $type)';
+  }
+
+  @override
+  bool operator ==(covariant Pnleg other) {
+    if (identical(this, other)) return true;
+
+    return other.date == date &&
+        other.tlc == tlc &&
+        other.actype == actype &&
+        other.al == al &&
+        other.fnum == fnum &&
+        other.depdate == depdate &&
+        other.deptime == deptime &&
+        other.arrdate == arrdate &&
+        other.arrtime == arrtime &&
+        other.dep == dep &&
+        other.arr == arr &&
+        other.label == label &&
+        other.type == type;
+  }
+
+  @override
+  int get hashCode {
+    return date.hashCode ^
+        tlc.hashCode ^
+        actype.hashCode ^
+        al.hashCode ^
+        fnum.hashCode ^
+        depdate.hashCode ^
+        deptime.hashCode ^
+        arrdate.hashCode ^
+        arrtime.hashCode ^
+        dep.hashCode ^
+        arr.hashCode ^
+        label.hashCode ^
+        type.hashCode;
+  }
+}
+
+//enum flt_status { sched, delayed, taxiout, enroute, landed, arrived }
+
+class Acleg {
+  String? LEG_NO;
+  String? FN_CARRIER;
+  String? FN_NUMBER;
+  String? FN_SUFFIX;
+  String? DAY_OF_ORIGIN;
+  String? AC_OWNER;
+  String? AC_SUBTYPE;
+  String? AC_VERSION;
+  String? AC_REGISTRATION;
+  String? DEP_AP_ACTUAL;
+  String? DEP_AP_SCHED;
+  String? DEP_DT_EST;
+  Jiffy? get jdepest =>
+      (DEP_DT_EST == null) ? null : DEP_DT_EST!.parseyyyymmddhhmm();
+  String? DEP_SCHED_DT;
+  Jiffy? get jdepsched =>
+      (DEP_SCHED_DT == null) ? null : DEP_SCHED_DT!.parseyyyymmddhhmm();
+  String? ARR_AP_ACTUAL;
+  String? ARR_AP_SCHED;
+  String? ARR_DT_EST;
+  Jiffy? get jarrest =>
+      (ARR_DT_EST == null) ? null : ARR_DT_EST!.parseyyyymmddhhmm();
+  String? ARR_SCHED_DT;
+  Jiffy? get jarrsched =>
+      (ARR_SCHED_DT == null) ? null : ARR_SCHED_DT!.parseyyyymmddhhmm();
+  String? SLOT_TIME_ACTUAL;
+  Jiffy? get slot =>
+      (SLOT_TIME_ACTUAL == null) ? null : SLOT_TIME_ACTUAL!.parseyyyymmddhhmm();
+  String? LEG_TYPE;
+  String? STATUS;
+  String? EMPLOYER_COCKPIT;
+  String? EMPLOYER_CABIN;
+  String? CYCLES;
+  String? DELAY_CODE_01;
+  String? DELAY_CODE_02;
+  String? DELAY_CODE_03;
+  String? DELAY_CODE_04;
+  String? DELAY_TIME_01;
+  String? DELAY_TIME_02;
+  String? DELAY_TIME_03;
+  String? DELAY_TIME_04;
+  String? SUBDELAY_CODE_01;
+  String? SUBDELAY_CODE_02;
+  String? SUBDELAY_CODE_03;
+  String? SUBDELAY_CODE_04;
+  List<List> get dla => [
+        [
+          SUBDELAY_CODE_01 ?? DELAY_CODE_01,
+          DELAY_TIME_01 == null
+              ? null
+              : Duration(minutes: int.parse(DELAY_TIME_01!))
+        ],
+        [
+          SUBDELAY_CODE_02 ?? DELAY_CODE_02,
+          DELAY_TIME_02 == null
+              ? null
+              : Duration(minutes: int.parse(DELAY_TIME_02!))
+        ],
+        [
+          SUBDELAY_CODE_03 ?? DELAY_CODE_03,
+          DELAY_TIME_03 == null
+              ? null
+              : Duration(minutes: int.parse(DELAY_TIME_03!))
+        ],
+        [
+          SUBDELAY_CODE_04 ?? DELAY_CODE_04,
+          DELAY_TIME_04 == null
+              ? null
+              : Duration(minutes: int.parse(DELAY_TIME_04!))
+        ],
+      ].where((e) => e.every((f) => f != null)).toList();
+  List<String> get delaycode => [
+        DELAY_CODE_01,
+        DELAY_CODE_02,
+        DELAY_CODE_03,
+        DELAY_CODE_04
+      ].nonNulls.toList();
+  List<String> get delaysubcode => [
+        SUBDELAY_CODE_01,
+        SUBDELAY_CODE_02,
+        SUBDELAY_CODE_03,
+        SUBDELAY_CODE_04
+      ].nonNulls.toList();
+  List<Duration?> get delaytime => [
+        DELAY_TIME_01 == null
+            ? null
+            : Duration(minutes: int.parse(DELAY_TIME_01!)),
+        DELAY_TIME_02 == null
+            ? null
+            : Duration(minutes: int.parse(DELAY_TIME_02!)),
+        DELAY_TIME_03 == null
+            ? null
+            : Duration(minutes: int.parse(DELAY_TIME_03!)),
+        DELAY_TIME_04 == null
+            ? null
+            : Duration(minutes: int.parse(DELAY_TIME_04!))
+      ].nonNulls.toList();
+
+  String? PAX_BOOKED_C;
+  String? PAX_BOOKED_Y;
+  String? get pax_booked => (PAX_BOOKED_C != null || PAX_BOOKED_Y != null)
+      ? "${(AC_VERSION != null && AC_VERSION!.contains("C")) ? "C${PAX_BOOKED_C ?? 0}." : ""}Y${PAX_BOOKED_Y ?? 0}"
+      : null;
+  String? PAX_BOOKED_TRS_C;
+  String? PAX_BOOKED_TRS_Y;
+  String? get pax_trs => (PAX_BOOKED_TRS_C != null || PAX_BOOKED_TRS_Y != null)
+      ? "C${PAX_BOOKED_TRS_C ?? 0}/Y${PAX_BOOKED_TRS_Y ?? 0}"
+      : null;
+  String? PAD_BOOKED_C;
+  String? PAD_BOOKED_Y;
+  String? get pad_booked => (PAD_BOOKED_C != null || PAD_BOOKED_Y != null)
+      ? "C${PAD_BOOKED_C ?? 0}/Y${PAD_BOOKED_Y ?? 0}"
+      : null;
+  String? OFFBLOCK_DT_A;
+  String? AIRBORNE_DT_A;
+  String? LANDING_DT_A;
+  String? ONBLOCK_DT_A;
+  List<Jiffy?> get blocks_a => [
+        (OFFBLOCK_DT_A ?? "").parseyyyymmddhhmm(),
+        (AIRBORNE_DT_A ?? "").parseyyyymmddhhmm(),
+        (LANDING_DT_A ?? "").parseyyyymmddhhmm(),
+        (ONBLOCK_DT_A ?? "").parseyyyymmddhhmm()
+      ];
+  String get flt_status {
+    if (blocks[3] != null) {
+      return "Arrived";
+    } else if (blocks[2] != null) {
+      return "Landed";
+    } else if (blocks[1] != null) {
+      return "Inflight";
+    } else if (blocks[0] != null) {
+      return "Taxiout";
+    } else if (jdepest != null &&
+        jarrsched != null &&
+        jdepest!.isAfter(jdepsched!)) {
+      return "Delayed";
+    } else {
+      return "Sched";
+    }
+  }
+
+  String? OFFBLOCK_DT_F;
+  String? AIRBORNE_DT_F;
+  String? LANDING_DT_F;
+  String? ONBLOCK_DT_F;
+  List<Jiffy?> get blocks_f => [
+        (OFFBLOCK_DT_F ?? "").parseyyyymmddhhmm(),
+        (AIRBORNE_DT_F ?? "").parseyyyymmddhhmm(),
+        (LANDING_DT_F ?? "").parseyyyymmddhhmm(),
+        (ONBLOCK_DT_F ?? "").parseyyyymmddhhmm()
+      ];
+
+  String? OFFBLOCK_DT_M;
+  String? AIRBORNE_DT_M;
+  String? LANDING_DT_M;
+  String? ONBLOCK_DT_M;
+  List<Jiffy?> get blocks_m => [
+        (OFFBLOCK_DT_M ?? "").parseyyyymmddhhmm(),
+        (AIRBORNE_DT_M ?? "").parseyyyymmddhhmm(),
+        (LANDING_DT_M ?? "").parseyyyymmddhhmm(),
+        (ONBLOCK_DT_M ?? "").parseyyyymmddhhmm()
+      ];
+  List<Jiffy?> get blocks => [
+        blocks_m[0] ?? blocks_a[0] ?? blocks_f[0],
+        blocks_m[1] ?? blocks_a[1] ?? blocks_f[1],
+        blocks_m[2] ?? blocks_a[2] ?? blocks_f[2],
+        blocks_m[3] ?? blocks_a[3] ?? blocks_f[3]
+      ];
+  Jiffy? get jdep => blocks[0] ?? jdepest ?? jdepsched;
+  Jiffy? get jarr =>
+      blocks[3] ??
+      blocks[2]?.add(minutes: 5) ??
+      (eet == null ? null : blocks[1]?.addDuration(eet!).add(minutes: 8)) ??
+      (eet == null
+          ? null
+          : blocks[0]?.add(minutes: 5).addDuration(eet!).add(minutes: 8)) ??
+      (eet == null
+          ? null
+          : jdep?.addDuration(eet!).add(minutes: 8).add(minutes: 5)) ??
+      jarrest ??
+      jarrsched;
+  String? EET;
+  Duration? get eet => EET == null ? null : Duration(minutes: int.parse(EET!));
+  Acleg({
+    this.LEG_NO,
+    this.FN_CARRIER,
+    this.FN_NUMBER,
+    this.FN_SUFFIX,
+    this.DAY_OF_ORIGIN,
+    this.AC_OWNER,
+    this.AC_SUBTYPE,
+    this.AC_VERSION,
+    this.AC_REGISTRATION,
+    this.DEP_AP_ACTUAL,
+    this.DEP_AP_SCHED,
+    this.DEP_DT_EST,
+    this.DEP_SCHED_DT,
+    this.ARR_AP_ACTUAL,
+    this.ARR_AP_SCHED,
+    this.ARR_DT_EST,
+    this.ARR_SCHED_DT,
+    this.SLOT_TIME_ACTUAL,
+    this.LEG_TYPE,
+    this.STATUS,
+    this.EMPLOYER_COCKPIT,
+    this.EMPLOYER_CABIN,
+    this.CYCLES,
+    this.DELAY_CODE_01,
+    this.DELAY_CODE_02,
+    this.DELAY_CODE_03,
+    this.DELAY_CODE_04,
+    this.DELAY_TIME_01,
+    this.DELAY_TIME_02,
+    this.DELAY_TIME_03,
+    this.DELAY_TIME_04,
+    this.SUBDELAY_CODE_01,
+    this.SUBDELAY_CODE_02,
+    this.SUBDELAY_CODE_03,
+    this.SUBDELAY_CODE_04,
+    this.PAX_BOOKED_C,
+    this.PAX_BOOKED_Y,
+    this.PAX_BOOKED_TRS_C,
+    this.PAX_BOOKED_TRS_Y,
+    this.PAD_BOOKED_C,
+    this.PAD_BOOKED_Y,
+    this.OFFBLOCK_DT_A,
+    this.AIRBORNE_DT_A,
+    this.LANDING_DT_A,
+    this.ONBLOCK_DT_A,
+    this.OFFBLOCK_DT_F,
+    this.AIRBORNE_DT_F,
+    this.LANDING_DT_F,
+    this.ONBLOCK_DT_F,
+    this.OFFBLOCK_DT_M,
+    this.AIRBORNE_DT_M,
+    this.LANDING_DT_M,
+    this.ONBLOCK_DT_M,
+    this.EET,
+  });
+
+  Acleg copyWith({
+    String? LEG_NO,
+    String? FN_CARRIER,
+    String? FN_NUMBER,
+    String? FN_SUFFIX,
+    String? DAY_OF_ORIGIN,
+    String? AC_OWNER,
+    String? AC_SUBTYPE,
+    String? AC_VERSION,
+    String? AC_REGISTRATION,
+    String? DEP_AP_ACTUAL,
+    String? DEP_AP_SCHED,
+    String? DEP_DT_EST,
+    String? DEP_SCHED_DT,
+    String? ARR_AP_ACTUAL,
+    String? ARR_AP_SCHED,
+    String? ARR_DT_EST,
+    String? ARR_SCHED_DT,
+    String? SLOT_TIME_ACTUAL,
+    String? LEG_TYPE,
+    String? STATUS,
+    String? EMPLOYER_COCKPIT,
+    String? EMPLOYER_CABIN,
+    String? CYCLES,
+    String? DELAY_CODE_01,
+    String? DELAY_CODE_02,
+    String? DELAY_CODE_03,
+    String? DELAY_CODE_04,
+    String? DELAY_TIME_01,
+    String? DELAY_TIME_02,
+    String? DELAY_TIME_03,
+    String? DELAY_TIME_04,
+    String? SUBDELAY_CODE_01,
+    String? SUBDELAY_CODE_02,
+    String? SUBDELAY_CODE_03,
+    String? SUBDELAY_CODE_04,
+    String? PAX_BOOKED_C,
+    String? PAX_BOOKED_Y,
+    String? PAX_BOOKED_TRS_C,
+    String? PAX_BOOKED_TRS_Y,
+    String? PAD_BOOKED_C,
+    String? PAD_BOOKED_Y,
+    String? OFFBLOCK_DT_A,
+    String? AIRBORNE_DT_A,
+    String? LANDING_DT_A,
+    String? ONBLOCK_DT_A,
+    String? OFFBLOCK_DT_F,
+    String? AIRBORNE_DT_F,
+    String? LANDING_DT_F,
+    String? ONBLOCK_DT_F,
+    String? OFFBLOCK_DT_M,
+    String? AIRBORNE_DT_M,
+    String? LANDING_DT_M,
+    String? ONBLOCK_DT_M,
+    String? EET,
+  }) {
+    return Acleg(
+      LEG_NO: LEG_NO ?? this.LEG_NO,
+      FN_CARRIER: FN_CARRIER ?? this.FN_CARRIER,
+      FN_NUMBER: FN_NUMBER ?? this.FN_NUMBER,
+      FN_SUFFIX: FN_SUFFIX ?? this.FN_SUFFIX,
+      DAY_OF_ORIGIN: DAY_OF_ORIGIN ?? this.DAY_OF_ORIGIN,
+      AC_OWNER: AC_OWNER ?? this.AC_OWNER,
+      AC_SUBTYPE: AC_SUBTYPE ?? this.AC_SUBTYPE,
+      AC_VERSION: AC_VERSION ?? this.AC_VERSION,
+      AC_REGISTRATION: AC_REGISTRATION ?? this.AC_REGISTRATION,
+      DEP_AP_ACTUAL: DEP_AP_ACTUAL ?? this.DEP_AP_ACTUAL,
+      DEP_AP_SCHED: DEP_AP_SCHED ?? this.DEP_AP_SCHED,
+      DEP_DT_EST: DEP_DT_EST ?? this.DEP_DT_EST,
+      DEP_SCHED_DT: DEP_SCHED_DT ?? this.DEP_SCHED_DT,
+      ARR_AP_ACTUAL: ARR_AP_ACTUAL ?? this.ARR_AP_ACTUAL,
+      ARR_AP_SCHED: ARR_AP_SCHED ?? this.ARR_AP_SCHED,
+      ARR_DT_EST: ARR_DT_EST ?? this.ARR_DT_EST,
+      ARR_SCHED_DT: ARR_SCHED_DT ?? this.ARR_SCHED_DT,
+      SLOT_TIME_ACTUAL: SLOT_TIME_ACTUAL ?? this.SLOT_TIME_ACTUAL,
+      LEG_TYPE: LEG_TYPE ?? this.LEG_TYPE,
+      STATUS: STATUS ?? this.STATUS,
+      EMPLOYER_COCKPIT: EMPLOYER_COCKPIT ?? this.EMPLOYER_COCKPIT,
+      EMPLOYER_CABIN: EMPLOYER_CABIN ?? this.EMPLOYER_CABIN,
+      CYCLES: CYCLES ?? this.CYCLES,
+      DELAY_CODE_01: DELAY_CODE_01 ?? this.DELAY_CODE_01,
+      DELAY_CODE_02: DELAY_CODE_02 ?? this.DELAY_CODE_02,
+      DELAY_CODE_03: DELAY_CODE_03 ?? this.DELAY_CODE_03,
+      DELAY_CODE_04: DELAY_CODE_04 ?? this.DELAY_CODE_04,
+      DELAY_TIME_01: DELAY_TIME_01 ?? this.DELAY_TIME_01,
+      DELAY_TIME_02: DELAY_TIME_02 ?? this.DELAY_TIME_02,
+      DELAY_TIME_03: DELAY_TIME_03 ?? this.DELAY_TIME_03,
+      DELAY_TIME_04: DELAY_TIME_04 ?? this.DELAY_TIME_04,
+      SUBDELAY_CODE_01: SUBDELAY_CODE_01 ?? this.SUBDELAY_CODE_01,
+      SUBDELAY_CODE_02: SUBDELAY_CODE_02 ?? this.SUBDELAY_CODE_02,
+      SUBDELAY_CODE_03: SUBDELAY_CODE_03 ?? this.SUBDELAY_CODE_03,
+      SUBDELAY_CODE_04: SUBDELAY_CODE_04 ?? this.SUBDELAY_CODE_04,
+      PAX_BOOKED_C: PAX_BOOKED_C ?? this.PAX_BOOKED_C,
+      PAX_BOOKED_Y: PAX_BOOKED_Y ?? this.PAX_BOOKED_Y,
+      PAX_BOOKED_TRS_C: PAX_BOOKED_TRS_C ?? this.PAX_BOOKED_TRS_C,
+      PAX_BOOKED_TRS_Y: PAX_BOOKED_TRS_Y ?? this.PAX_BOOKED_TRS_Y,
+      PAD_BOOKED_C: PAD_BOOKED_C ?? this.PAD_BOOKED_C,
+      PAD_BOOKED_Y: PAD_BOOKED_Y ?? this.PAD_BOOKED_Y,
+      OFFBLOCK_DT_A: OFFBLOCK_DT_A ?? this.OFFBLOCK_DT_A,
+      AIRBORNE_DT_A: AIRBORNE_DT_A ?? this.AIRBORNE_DT_A,
+      LANDING_DT_A: LANDING_DT_A ?? this.LANDING_DT_A,
+      ONBLOCK_DT_A: ONBLOCK_DT_A ?? this.ONBLOCK_DT_A,
+      OFFBLOCK_DT_F: OFFBLOCK_DT_F ?? this.OFFBLOCK_DT_F,
+      AIRBORNE_DT_F: AIRBORNE_DT_F ?? this.AIRBORNE_DT_F,
+      LANDING_DT_F: LANDING_DT_F ?? this.LANDING_DT_F,
+      ONBLOCK_DT_F: ONBLOCK_DT_F ?? this.ONBLOCK_DT_F,
+      OFFBLOCK_DT_M: OFFBLOCK_DT_M ?? this.OFFBLOCK_DT_M,
+      AIRBORNE_DT_M: AIRBORNE_DT_M ?? this.AIRBORNE_DT_M,
+      LANDING_DT_M: LANDING_DT_M ?? this.LANDING_DT_M,
+      ONBLOCK_DT_M: ONBLOCK_DT_M ?? this.ONBLOCK_DT_M,
+      EET: EET ?? this.EET,
+    );
+  }
+
+  Map<String, dynamic> toMap() {
+    return <String, dynamic>{
+      'LEG_NO': LEG_NO,
+      'FN_CARRIER': FN_CARRIER,
+      'FN_NUMBER': FN_NUMBER,
+      'FN_SUFFIX': FN_SUFFIX,
+      'DAY_OF_ORIGIN': DAY_OF_ORIGIN,
+      'AC_OWNER': AC_OWNER,
+      'AC_SUBTYPE': AC_SUBTYPE,
+      'AC_VERSION': AC_VERSION,
+      'AC_REGISTRATION': AC_REGISTRATION,
+      'DEP_AP_ACTUAL': DEP_AP_ACTUAL,
+      'DEP_AP_SCHED': DEP_AP_SCHED,
+      'DEP_DT_EST': DEP_DT_EST,
+      'DEP_SCHED_DT': DEP_SCHED_DT,
+      'ARR_AP_ACTUAL': ARR_AP_ACTUAL,
+      'ARR_AP_SCHED': ARR_AP_SCHED,
+      'ARR_DT_EST': ARR_DT_EST,
+      'ARR_SCHED_DT': ARR_SCHED_DT,
+      'SLOT_TIME_ACTUAL': SLOT_TIME_ACTUAL,
+      'LEG_TYPE': LEG_TYPE,
+      'STATUS': STATUS,
+      'EMPLOYER_COCKPIT': EMPLOYER_COCKPIT,
+      'EMPLOYER_CABIN': EMPLOYER_CABIN,
+      'CYCLES': CYCLES,
+      'DELAY_CODE_01': DELAY_CODE_01,
+      'DELAY_CODE_02': DELAY_CODE_02,
+      'DELAY_CODE_03': DELAY_CODE_03,
+      'DELAY_CODE_04': DELAY_CODE_04,
+      'DELAY_TIME_01': DELAY_TIME_01,
+      'DELAY_TIME_02': DELAY_TIME_02,
+      'DELAY_TIME_03': DELAY_TIME_03,
+      'DELAY_TIME_04': DELAY_TIME_04,
+      'SUBDELAY_CODE_01': SUBDELAY_CODE_01,
+      'SUBDELAY_CODE_02': SUBDELAY_CODE_02,
+      'SUBDELAY_CODE_03': SUBDELAY_CODE_03,
+      'SUBDELAY_CODE_04': SUBDELAY_CODE_04,
+      'PAX_BOOKED_C': PAX_BOOKED_C,
+      'PAX_BOOKED_Y': PAX_BOOKED_Y,
+      'PAX_BOOKED_TRS_C': PAX_BOOKED_TRS_C,
+      'PAX_BOOKED_TRS_Y': PAX_BOOKED_TRS_Y,
+      'PAD_BOOKED_C': PAD_BOOKED_C,
+      'PAD_BOOKED_Y': PAD_BOOKED_Y,
+      'OFFBLOCK_DT_A': OFFBLOCK_DT_A,
+      'AIRBORNE_DT_A': AIRBORNE_DT_A,
+      'LANDING_DT_A': LANDING_DT_A,
+      'ONBLOCK_DT_A': ONBLOCK_DT_A,
+      'OFFBLOCK_DT_F': OFFBLOCK_DT_F,
+      'AIRBORNE_DT_F': AIRBORNE_DT_F,
+      'LANDING_DT_F': LANDING_DT_F,
+      'ONBLOCK_DT_F': ONBLOCK_DT_F,
+      'OFFBLOCK_DT_M': OFFBLOCK_DT_M,
+      'AIRBORNE_DT_M': AIRBORNE_DT_M,
+      'LANDING_DT_M': LANDING_DT_M,
+      'ONBLOCK_DT_M': ONBLOCK_DT_M,
+      'EET': EET,
+    };
+  }
+
+  factory Acleg.fromList(List datalist) {
+    //print(datalist);
+    if (datalist.length >= 54) {
+      return Acleg(
+          LEG_NO: datalist[0],
+          FN_CARRIER: datalist[1],
+          FN_NUMBER: datalist[2],
+          FN_SUFFIX: datalist[3],
+          DAY_OF_ORIGIN: datalist[4],
+          AC_OWNER: datalist[5],
+          AC_SUBTYPE: datalist[6],
+          AC_VERSION: datalist[7],
+          AC_REGISTRATION: datalist[8],
+          DEP_AP_ACTUAL: datalist[9],
+          DEP_AP_SCHED: datalist[10],
+          DEP_DT_EST: datalist[11],
+          DEP_SCHED_DT: datalist[12],
+          ARR_AP_ACTUAL: datalist[13],
+          ARR_AP_SCHED: datalist[14],
+          ARR_DT_EST: datalist[15],
+          ARR_SCHED_DT: datalist[16],
+          SLOT_TIME_ACTUAL: datalist[17],
+          LEG_TYPE: datalist[18],
+          STATUS: datalist[19],
+          EMPLOYER_COCKPIT: datalist[20],
+          EMPLOYER_CABIN: datalist[21],
+          CYCLES: datalist[22],
+          DELAY_CODE_01: datalist[23],
+          DELAY_CODE_02: datalist[24],
+          DELAY_CODE_03: datalist[25],
+          DELAY_CODE_04: datalist[26],
+          DELAY_TIME_01: datalist[27],
+          DELAY_TIME_02: datalist[28],
+          DELAY_TIME_03: datalist[29],
+          DELAY_TIME_04: datalist[30],
+          SUBDELAY_CODE_01: datalist[31],
+          SUBDELAY_CODE_02: datalist[32],
+          SUBDELAY_CODE_03: datalist[33],
+          SUBDELAY_CODE_04: datalist[34],
+          PAX_BOOKED_C: datalist[35],
+          PAX_BOOKED_Y: datalist[36],
+          PAX_BOOKED_TRS_C: datalist[37],
+          PAX_BOOKED_TRS_Y: datalist[38],
+          PAD_BOOKED_C: datalist[39],
+          PAD_BOOKED_Y: datalist[40],
+          OFFBLOCK_DT_A: datalist[41],
+          AIRBORNE_DT_A: datalist[42],
+          LANDING_DT_A: datalist[43],
+          ONBLOCK_DT_A: datalist[44],
+          OFFBLOCK_DT_F: datalist[45],
+          AIRBORNE_DT_F: datalist[46],
+          LANDING_DT_F: datalist[47],
+          ONBLOCK_DT_F: datalist[48],
+          OFFBLOCK_DT_M: datalist[49],
+          AIRBORNE_DT_M: datalist[50],
+          LANDING_DT_M: datalist[51],
+          ONBLOCK_DT_M: datalist[52],
+          EET: datalist[53]);
+    } else {
+      return Acleg();
+    }
+  }
+
+  factory Acleg.fromMap(Map<String, dynamic> map) {
+    return Acleg(
+      LEG_NO: map['LEG_NO'] != null ? map['LEG_NO'] as String : null,
+      FN_CARRIER:
+          map['FN_CARRIER'] != null ? map['FN_CARRIER'] as String : null,
+      FN_NUMBER: map['FN_NUMBER'] != null ? map['FN_NUMBER'] as String : null,
+      FN_SUFFIX: map['FN_SUFFIX'] != null ? map['FN_SUFFIX'] as String : null,
+      DAY_OF_ORIGIN:
+          map['DAY_OF_ORIGIN'] != null ? map['DAY_OF_ORIGIN'] as String : null,
+      AC_OWNER: map['AC_OWNER'] != null ? map['AC_OWNER'] as String : null,
+      AC_SUBTYPE:
+          map['AC_SUBTYPE'] != null ? map['AC_SUBTYPE'] as String : null,
+      AC_VERSION:
+          map['AC_VERSION'] != null ? map['AC_VERSION'] as String : null,
+      AC_REGISTRATION: map['AC_REGISTRATION'] != null
+          ? map['AC_REGISTRATION'] as String
+          : null,
+      DEP_AP_ACTUAL:
+          map['DEP_AP_ACTUAL'] != null ? map['DEP_AP_ACTUAL'] as String : null,
+      DEP_AP_SCHED:
+          map['DEP_AP_SCHED'] != null ? map['DEP_AP_SCHED'] as String : null,
+      DEP_DT_EST:
+          map['DEP_DT_EST'] != null ? map['DEP_DT_EST'] as String : null,
+      DEP_SCHED_DT:
+          map['DEP_SCHED_DT'] != null ? map['DEP_SCHED_DT'] as String : null,
+      ARR_AP_ACTUAL:
+          map['ARR_AP_ACTUAL'] != null ? map['ARR_AP_ACTUAL'] as String : null,
+      ARR_AP_SCHED:
+          map['ARR_AP_SCHED'] != null ? map['ARR_AP_SCHED'] as String : null,
+      ARR_DT_EST:
+          map['ARR_DT_EST'] != null ? map['ARR_DT_EST'] as String : null,
+      ARR_SCHED_DT:
+          map['ARR_SCHED_DT'] != null ? map['ARR_SCHED_DT'] as String : null,
+      SLOT_TIME_ACTUAL: map['SLOT_TIME_ACTUAL'] != null
+          ? map['SLOT_TIME_ACTUAL'] as String
+          : null,
+      LEG_TYPE: map['LEG_TYPE'] != null ? map['LEG_TYPE'] as String : null,
+      EMPLOYER_COCKPIT: map['EMPLOYER_COCKPIT'] != null
+          ? map['EMPLOYER_COCKPIT'] as String
+          : null,
+      EMPLOYER_CABIN: map['EMPLOYER_CABIN'] != null
+          ? map['EMPLOYER_CABIN'] as String
+          : null,
+//      CYCLES: map['CYCLES'] != null ? map['CYCLES'] as String : null,
+      DELAY_CODE_01:
+          map['DELAY_CODE_01'] != null ? map['DELAY_CODE_01'] as String : null,
+      DELAY_CODE_02:
+          map['DELAY_CODE_02'] != null ? map['DELAY_CODE_02'] as String : null,
+      DELAY_CODE_03:
+          map['DELAY_CODE_03'] != null ? map['DELAY_CODE_03'] as String : null,
+      DELAY_CODE_04:
+          map['DELAY_CODE_04'] != null ? map['DELAY_CODE_04'] as String : null,
+      DELAY_TIME_01:
+          map['DELAY_TIME_01'] != null ? map['DELAY_TIME_01'] as String : null,
+      DELAY_TIME_02:
+          map['DELAY_TIME_02'] != null ? map['DELAY_TIME_02'] as String : null,
+      DELAY_TIME_03:
+          map['DELAY_TIME_03'] != null ? map['DELAY_TIME_03'] as String : null,
+      DELAY_TIME_04:
+          map['DELAY_TIME_04'] != null ? map['DELAY_TIME_04'] as String : null,
+      SUBDELAY_CODE_01: map['SUBDELAY_CODE_01'] != null
+          ? map['SUBDELAY_CODE_01'] as String
+          : null,
+      SUBDELAY_CODE_02: map['SUBDELAY_CODE_02'] != null
+          ? map['SUBDELAY_CODE_02'] as String
+          : null,
+      SUBDELAY_CODE_03: map['SUBDELAY_CODE_03'] != null
+          ? map['SUBDELAY_CODE_03'] as String
+          : null,
+      SUBDELAY_CODE_04: map['SUBDELAY_CODE_04'] != null
+          ? map['SUBDELAY_CODE_04'] as String
+          : null,
+      PAX_BOOKED_C:
+          map['PAX_BOOKED_C'] != null ? map['PAX_BOOKED_C'] as String : null,
+      PAX_BOOKED_Y:
+          map['PAX_BOOKED_Y'] != null ? map['PAX_BOOKED_Y'] as String : null,
+      PAX_BOOKED_TRS_C: map['PAX_BOOKED_TRS_C'] != null
+          ? map['PAX_BOOKED_TRS_C'] as String
+          : null,
+      PAX_BOOKED_TRS_Y: map['PAX_BOOKED_TRS_Y'] != null
+          ? map['PAX_BOOKED_TRS_Y'] as String
+          : null,
+      PAD_BOOKED_C:
+          map['PAD_BOOKED_C'] != null ? map['PAD_BOOKED_C'] as String : null,
+      PAD_BOOKED_Y:
+          map['PAD_BOOKED_Y'] != null ? map['PAD_BOOKED_Y'] as String : null,
+      OFFBLOCK_DT_A:
+          map['OFFBLOCK_DT_A'] != null ? map['OFFBLOCK_DT_A'] as String : null,
+      AIRBORNE_DT_A:
+          map['AIRBORNE_DT_A'] != null ? map['AIRBORNE_DT_A'] as String : null,
+      LANDING_DT_A:
+          map['LANDING_DT_A'] != null ? map['LANDING_DT_A'] as String : null,
+      ONBLOCK_DT_A:
+          map['ONBLOCK_DT_A'] != null ? map['ONBLOCK_DT_A'] as String : null,
+      OFFBLOCK_DT_F:
+          map['OFFBLOCK_DT_F'] != null ? map['OFFBLOCK_DT_F'] as String : null,
+      AIRBORNE_DT_F:
+          map['AIRBORNE_DT_F'] != null ? map['AIRBORNE_DT_F'] as String : null,
+      LANDING_DT_F:
+          map['LANDING_DT_F'] != null ? map['LANDING_DT_F'] as String : null,
+      ONBLOCK_DT_F:
+          map['ONBLOCK_DT_F'] != null ? map['ONBLOCK_DT_F'] as String : null,
+      OFFBLOCK_DT_M:
+          map['OFFBLOCK_DT_M'] != null ? map['OFFBLOCK_DT_M'] as String : null,
+      AIRBORNE_DT_M:
+          map['AIRBORNE_DT_M'] != null ? map['AIRBORNE_DT_M'] as String : null,
+      LANDING_DT_M:
+          map['LANDING_DT_M'] != null ? map['LANDING_DT_M'] as String : null,
+      ONBLOCK_DT_M:
+          map['ONBLOCK_DT_M'] != null ? map['ONBLOCK_DT_M'] as String : null,
+      EET: map['EET'] != null ? map['EET'] as String : null,
+    );
+  }
+
+  String toJson() => json.encode(toMap());
+
+  factory Acleg.fromJson(String source) =>
+      Acleg.fromMap(json.decode(source) as Map<String, dynamic>);
+
+  @override
+  String toString() {
+    return 'Acleg(LEG_NO: $LEG_NO, FN_CARRIER: $FN_CARRIER, FN_NUMBER: $FN_NUMBER, FN_SUFFIX: $FN_SUFFIX, DAY_OF_ORIGIN: $DAY_OF_ORIGIN, AC_OWNER: $AC_OWNER, AC_SUBTYPE: $AC_SUBTYPE, AC_VERSION: $AC_VERSION, AC_REGISTRATION: $AC_REGISTRATION, DEP_AP_ACTUAL: $DEP_AP_ACTUAL, DEP_AP_SCHED: $DEP_AP_SCHED, DEP_DT_EST: $DEP_DT_EST, DEP_SCHED_DT: $DEP_SCHED_DT, ARR_AP_ACTUAL: $ARR_AP_ACTUAL, ARR_AP_SCHED: $ARR_AP_SCHED, ARR_DT_EST: $ARR_DT_EST, ARR_SCHED_DT: $ARR_SCHED_DT, SLOT_TIME_ACTUAL: $SLOT_TIME_ACTUAL, LEG_TYPE: $LEG_TYPE, EMPLOYER_COCKPIT: $EMPLOYER_COCKPIT, EMPLOYER_CABIN: $EMPLOYER_CABIN, CYCLES: $CYCLES, DELAY_CODE_01: $DELAY_CODE_01, DELAY_CODE_02: $DELAY_CODE_02, DELAY_CODE_03: $DELAY_CODE_03, DELAY_CODE_04: $DELAY_CODE_04, DELAY_TIME_01: $DELAY_TIME_01, DELAY_TIME_02: $DELAY_TIME_02, DELAY_TIME_03: $DELAY_TIME_03, DELAY_TIME_04: $DELAY_TIME_04, SUBDELAY_CODE_01: $SUBDELAY_CODE_01, SUBDELAY_CODE_02: $SUBDELAY_CODE_02, SUBDELAY_CODE_03: $SUBDELAY_CODE_03, SUBDELAY_CODE_04: $SUBDELAY_CODE_04, PAX_BOOKED_C: $PAX_BOOKED_C, PAX_BOOKED_Y: $PAX_BOOKED_Y, PAX_BOOKED_TRS_C: $PAX_BOOKED_TRS_C, PAX_BOOKED_TRS_Y: $PAX_BOOKED_TRS_Y, PAD_BOOKED_C: $PAD_BOOKED_C, PAD_BOOKED_Y: $PAD_BOOKED_Y, OFFBLOCK_DT_A: $OFFBLOCK_DT_A, AIRBORNE_DT_A: $AIRBORNE_DT_A, LANDING_DT_A: $LANDING_DT_A, ONBLOCK_DT_A: $ONBLOCK_DT_A, OFFBLOCK_DT_F: $OFFBLOCK_DT_F, AIRBORNE_DT_F: $AIRBORNE_DT_F, LANDING_DT_F: $LANDING_DT_F, ONBLOCK_DT_F: $ONBLOCK_DT_F, OFFBLOCK_DT_M: $OFFBLOCK_DT_M, AIRBORNE_DT_M: $AIRBORNE_DT_M, LANDING_DT_M: $LANDING_DT_M, ONBLOCK_DT_M: $ONBLOCK_DT_M, EET: $EET)';
+  }
+
+  @override
+  bool operator ==(covariant Acleg other) {
+    if (identical(this, other)) return true;
+
+    return other.LEG_NO == LEG_NO &&
+        other.FN_CARRIER == FN_CARRIER &&
+        other.FN_NUMBER == FN_NUMBER &&
+        other.FN_SUFFIX == FN_SUFFIX &&
+        other.DAY_OF_ORIGIN == DAY_OF_ORIGIN &&
+        other.AC_OWNER == AC_OWNER &&
+        other.AC_SUBTYPE == AC_SUBTYPE &&
+        other.AC_VERSION == AC_VERSION &&
+        other.AC_REGISTRATION == AC_REGISTRATION &&
+        other.DEP_AP_ACTUAL == DEP_AP_ACTUAL &&
+        other.DEP_AP_SCHED == DEP_AP_SCHED &&
+        other.DEP_DT_EST == DEP_DT_EST &&
+        other.DEP_SCHED_DT == DEP_SCHED_DT &&
+        other.ARR_AP_ACTUAL == ARR_AP_ACTUAL &&
+        other.ARR_AP_SCHED == ARR_AP_SCHED &&
+        other.ARR_DT_EST == ARR_DT_EST &&
+        other.ARR_SCHED_DT == ARR_SCHED_DT &&
+        other.SLOT_TIME_ACTUAL == SLOT_TIME_ACTUAL &&
+        other.LEG_TYPE == LEG_TYPE &&
+        other.EMPLOYER_COCKPIT == EMPLOYER_COCKPIT &&
+        other.EMPLOYER_CABIN == EMPLOYER_CABIN &&
+        other.CYCLES == CYCLES &&
+        other.DELAY_CODE_01 == DELAY_CODE_01 &&
+        other.DELAY_CODE_02 == DELAY_CODE_02 &&
+        other.DELAY_CODE_03 == DELAY_CODE_03 &&
+        other.DELAY_CODE_04 == DELAY_CODE_04 &&
+        other.DELAY_TIME_01 == DELAY_TIME_01 &&
+        other.DELAY_TIME_02 == DELAY_TIME_02 &&
+        other.DELAY_TIME_03 == DELAY_TIME_03 &&
+        other.DELAY_TIME_04 == DELAY_TIME_04 &&
+        other.SUBDELAY_CODE_01 == SUBDELAY_CODE_01 &&
+        other.SUBDELAY_CODE_02 == SUBDELAY_CODE_02 &&
+        other.SUBDELAY_CODE_03 == SUBDELAY_CODE_03 &&
+        other.SUBDELAY_CODE_04 == SUBDELAY_CODE_04 &&
+        other.PAX_BOOKED_C == PAX_BOOKED_C &&
+        other.PAX_BOOKED_Y == PAX_BOOKED_Y &&
+        other.PAX_BOOKED_TRS_C == PAX_BOOKED_TRS_C &&
+        other.PAX_BOOKED_TRS_Y == PAX_BOOKED_TRS_Y &&
+        other.PAD_BOOKED_C == PAD_BOOKED_C &&
+        other.PAD_BOOKED_Y == PAD_BOOKED_Y &&
+        other.OFFBLOCK_DT_A == OFFBLOCK_DT_A &&
+        other.AIRBORNE_DT_A == AIRBORNE_DT_A &&
+        other.LANDING_DT_A == LANDING_DT_A &&
+        other.ONBLOCK_DT_A == ONBLOCK_DT_A &&
+        other.OFFBLOCK_DT_F == OFFBLOCK_DT_F &&
+        other.AIRBORNE_DT_F == AIRBORNE_DT_F &&
+        other.LANDING_DT_F == LANDING_DT_F &&
+        other.ONBLOCK_DT_F == ONBLOCK_DT_F &&
+        other.OFFBLOCK_DT_M == OFFBLOCK_DT_M &&
+        other.AIRBORNE_DT_M == AIRBORNE_DT_M &&
+        other.LANDING_DT_M == LANDING_DT_M &&
+        other.ONBLOCK_DT_M == ONBLOCK_DT_M &&
+        other.EET == EET;
+  }
+
+  @override
+  int get hashCode {
+    return LEG_NO.hashCode ^
+        FN_CARRIER.hashCode ^
+        FN_NUMBER.hashCode ^
+        FN_SUFFIX.hashCode ^
+        DAY_OF_ORIGIN.hashCode ^
+        AC_OWNER.hashCode ^
+        AC_SUBTYPE.hashCode ^
+        AC_VERSION.hashCode ^
+        AC_REGISTRATION.hashCode ^
+        DEP_AP_ACTUAL.hashCode ^
+        DEP_AP_SCHED.hashCode ^
+        DEP_DT_EST.hashCode ^
+        DEP_SCHED_DT.hashCode ^
+        ARR_AP_ACTUAL.hashCode ^
+        ARR_AP_SCHED.hashCode ^
+        ARR_DT_EST.hashCode ^
+        ARR_SCHED_DT.hashCode ^
+        SLOT_TIME_ACTUAL.hashCode ^
+        LEG_TYPE.hashCode ^
+        EMPLOYER_COCKPIT.hashCode ^
+        EMPLOYER_CABIN.hashCode ^
+        CYCLES.hashCode ^
+        DELAY_CODE_01.hashCode ^
+        DELAY_CODE_02.hashCode ^
+        DELAY_CODE_03.hashCode ^
+        DELAY_CODE_04.hashCode ^
+        DELAY_TIME_01.hashCode ^
+        DELAY_TIME_02.hashCode ^
+        DELAY_TIME_03.hashCode ^
+        DELAY_TIME_04.hashCode ^
+        SUBDELAY_CODE_01.hashCode ^
+        SUBDELAY_CODE_02.hashCode ^
+        SUBDELAY_CODE_03.hashCode ^
+        SUBDELAY_CODE_04.hashCode ^
+        PAX_BOOKED_C.hashCode ^
+        PAX_BOOKED_Y.hashCode ^
+        PAX_BOOKED_TRS_C.hashCode ^
+        PAX_BOOKED_TRS_Y.hashCode ^
+        PAD_BOOKED_C.hashCode ^
+        PAD_BOOKED_Y.hashCode ^
+        OFFBLOCK_DT_A.hashCode ^
+        AIRBORNE_DT_A.hashCode ^
+        LANDING_DT_A.hashCode ^
+        ONBLOCK_DT_A.hashCode ^
+        OFFBLOCK_DT_F.hashCode ^
+        AIRBORNE_DT_F.hashCode ^
+        LANDING_DT_F.hashCode ^
+        ONBLOCK_DT_F.hashCode ^
+        OFFBLOCK_DT_M.hashCode ^
+        AIRBORNE_DT_M.hashCode ^
+        LANDING_DT_M.hashCode ^
+        ONBLOCK_DT_M.hashCode ^
+        EET.hashCode;
+  }
+}

+ 13 - 0
lib/csv/pnleg.txt

@@ -0,0 +1,13 @@
+date:datalist[],
+tlc:datalist[],
+actype:datalist[],
+al:datalist[],
+fnum:datalist[],
+depdate:datalist[],
+deptime:datalist[],
+arrdate:datalist[],
+arrtime:datalist[],
+dep:datalist[],
+arr:datalist[],
+label:datalist[],
+type

+ 361 - 0
lib/flightslist/flightslist_page.dart

@@ -0,0 +1,361 @@
+// ignore: unused_import
+import 'package:collection/collection.dart';
+import 'package:flutter/material.dart';
+import 'package:flutter_riverpod/flutter_riverpod.dart';
+import 'package:gap/gap.dart';
+import 'package:go_router/go_router.dart';
+import 'package:google_fonts/google_fonts.dart';
+import 'package:hive_flutter/hive_flutter.dart';
+import 'package:jiffy/jiffy.dart';
+import 'package:super_sliver_list/super_sliver_list.dart';
+import 'package:tp5/core/basic_page.dart';
+import 'package:tp5/core/utils.dart';
+import 'package:tp5/csv/data.dart';
+import 'package:tp5/flightslist/w_flt.dart';
+import 'package:tp5/fltinfo/view/fltinfo_page.dart';
+import 'package:tp5/roster/widgets/w_day.dart';
+
+class FlightslistPage extends ConsumerStatefulWidget {
+  const FlightslistPage({super.key});
+
+  @override
+  ConsumerState<ConsumerStatefulWidget> createState() =>
+      _FlightslistPageState();
+}
+
+class _FlightslistPageState extends ConsumerState<FlightslistPage> {
+  final _listController = ListController();
+  final _scrollController = ScrollController();
+
+  void scrolltonow() {
+    final jumpindex = _aclegs.indexWhere((e) => e.jdep!.isSameOrAfter(_now));
+    if (jumpindex >= 0) {
+      jumpToItem(jumpindex);
+    }
+  }
+
+  void jumpToItem(int index) {
+    try {
+      if (_listController.isAttached && _scrollController.hasClients) {
+        _listController.jumpToItem(
+          //duration: (d) => const Duration(milliseconds: 700),
+          index: index,
+          scrollController: _scrollController,
+          alignment: 0.75,
+          //curve: (double estimatedDistance) => Curves.decelerate,
+        );
+      }
+    } catch (e) {
+      print("flistlistpage: jumptoitemscroll controller");
+    }
+  }
+
+  bool showAllLegs = false;
+  bool showInflightOnly = false;
+
+  // bool _isfirstInDay(Acleg leg) =>
+  //     leg == _aclegs.firstWhereOrNull((e) => (e.jdep?.yMEd == leg.jdep?.yMEd));
+
+  Widget get _acLegsWidget => Container(
+      child: _aclegs.isEmpty
+          ? const Text("No leg found !")
+          : SuperListView.builder(
+              delayPopulatingCacheArea: true,
+              listController: _listController,
+              controller: _scrollController,
+              itemCount: _aclegs.length,
+              itemBuilder: (context, index) {
+                final leg = _aclegs.elementAt(index);
+                return Column(
+                  children: [
+                    // if (_isfirstInDay(leg))
+                    if (index == 0 ||
+                        leg.jdep?.yMEd !=
+                            _aclegs.elementAt(index - 1).jdep?.yMEd)
+                      WDay(
+                          date: leg.jdep!,
+                          highlight: _now.yMEd == leg.jdep?.yMEd),
+                    InkWell(
+                        onTap: () => context.push("/fltinfo",
+                            extra: FltinfoParams(
+                              al: leg.FN_CARRIER,
+                              fnum: leg.FN_NUMBER,
+                              jdep: leg.jdep,
+                              jdes: leg.jarr,
+                              dep: leg.DEP_AP_ACTUAL,
+                              des: leg.ARR_AP_SCHED,
+                            )),
+                        child: WFlt(acleg: leg)),
+                  ],
+                );
+              },
+            ));
+
+  final bottomnavstyle = ElevatedButton.styleFrom(
+      shape: RoundedRectangleBorder(
+        borderRadius: BorderRadius.circular(5.0),
+      ),
+      backgroundColor:
+          const Color.fromARGB(255, 0, 36, 53) //elevated btton background color
+      );
+
+  TextEditingController ctrldep = TextEditingController();
+  TextEditingController ctrldes = TextEditingController();
+  TextEditingController ctrlairline = TextEditingController();
+  TextEditingController ctrlfnum = TextEditingController();
+
+  Widget _flightFilter(BuildContext context) {
+    return Container(
+        padding: const EdgeInsets.all(20),
+        child: Column(mainAxisSize: MainAxisSize.min, children: [
+          Row(
+            children: [
+              Expanded(
+                child: TextField(
+                  decoration:
+                      const InputDecoration(labelText: "Departure Airport"),
+                  maxLength: 3, // Set maximum length
+                  controller: ctrldep,
+                ),
+              ),
+              const SizedBox(width: 10),
+              Expanded(
+                child: TextField(
+                  decoration:
+                      const InputDecoration(labelText: "Arrival Airport"),
+                  maxLength: 3, // Set maximum length
+                  controller: ctrldes,
+                ),
+              ),
+            ],
+          ),
+          const SizedBox(height: 15),
+          Row(
+            children: [
+              Expanded(
+                child: TextField(
+                  controller: ctrlairline,
+
+                  decoration:
+                      const InputDecoration(labelText: "Airline IATA code"),
+                  maxLength: 2, // Set maximum length
+                ),
+              ),
+              const SizedBox(width: 10),
+              Expanded(
+                child: TextField(
+                  controller: ctrlfnum,
+
+                  decoration: const InputDecoration(labelText: "Flight number"),
+                  maxLength: 6, // Set maximum length
+                ),
+              ),
+            ],
+          ),
+          const SizedBox(height: 15),
+          const SizedBox(height: 35),
+          SizedBox(
+            width: 360,
+            child: ElevatedButton(
+              onPressed: () async => Navigator.pop(context, {
+                "dep": ctrldep.text.toUpperCase(),
+                "des": ctrldes.text.toUpperCase(),
+                "al": ctrlairline.text.toUpperCase(),
+                "fnum": ctrlfnum.text.toUpperCase()
+              }), // Close the bottom sheet
+              style: ElevatedButton.styleFrom(
+                backgroundColor: Colors.green, // Set button color to green
+                shape: RoundedRectangleBorder(
+                  borderRadius:
+                      BorderRadius.circular(15), // Add rounded corners
+                ),
+                padding:
+                    const EdgeInsets.symmetric(horizontal: 20, vertical: 15),
+              ),
+              child: const Text(
+                'Flight filter',
+                style: TextStyle(fontSize: 18, color: Colors.white),
+              ),
+            ),
+          ),
+        ]));
+  }
+
+  Map<String, String> flightFilter = {
+    "dep": "",
+    "des": "",
+    "al": "",
+    "fnum": ""
+  };
+
+  void _loadSearchFlights() {
+    showInflightOnly = Hive.box("settings")
+        .get("flightslist.filter.inflightonly", defaultValue: false);
+    final filter = Hive.box("settings")
+        .get("flightslist.filter.flights", defaultValue: <Map>{});
+    // print("flightslist: loadsearchflights: saved: $filter");
+    if (filter is Map) {
+      for (var e in filter.keys) {
+        flightFilter[e] = filter[e] ?? "";
+      }
+    }
+  }
+
+  void _searchFlights(xcontext) async {
+    ctrldep.text = flightFilter["dep"] ?? "";
+    ctrldes.text = flightFilter["des"] ?? "";
+    ctrlairline.text = flightFilter["al"] ?? "";
+    ctrlfnum.text = flightFilter["fnum"] ?? "";
+
+    final res = await showModalBottomSheet(
+        context: context, builder: (context) => _flightFilter(xcontext));
+    if (res is Map<String, String>) {
+      Hive.box("settings").put("flightslist.filter.flights", (res));
+      setState(() {
+        flightFilter = res;
+      });
+    }
+  }
+
+  @override
+  void initState() {
+    _loadSearchFlights();
+    Future.delayed(const Duration(milliseconds: 700)).then((x) {
+      scrolltonow();
+    });
+    super.initState();
+  }
+
+  List<Acleg> _allAclegs = [];
+  List<Acleg> get _aclegs => _allAclegs
+      .where((leg) =>
+          (!showInflightOnly ||
+              (showInflightOnly &&
+                  (leg.flt_status == "Inflight" ||
+                      leg.flt_status == "Taxiout"))) &&
+          ((flightFilter["al"] == "" || leg.FN_CARRIER == flightFilter["al"]) &&
+              (flightFilter["fnum"] == "" ||
+                  leg.FN_NUMBER == flightFilter["fnum"]) &&
+              (flightFilter["dep"] == "" ||
+                  leg.DEP_AP_ACTUAL == flightFilter["dep"] ||
+                  leg.DEP_SCHED_DT == flightFilter["dep"]) &&
+              (flightFilter["des"] == "" ||
+                  leg.ARR_AP_ACTUAL == flightFilter["des"] ||
+                  leg.ARR_AP_SCHED == flightFilter["des"])))
+      .toList();
+
+  Jiffy _now = Jiffy.now();
+
+  @override
+  Widget build(BuildContext context) {
+    final data = ref.watch(dataProvider);
+    _allAclegs = data.acleg;
+    _now = ref.watch(clockProvider);
+
+    return BasicPage(
+      appBar: AppBar(
+        title: const Text('Flights List'),
+      ),
+      body: Center(
+        child: Column(
+          children: [
+            Expanded(child: _acLegsWidget),
+            Row(
+              mainAxisAlignment: MainAxisAlignment.end,
+              children: [
+                data.aclegupdate != null
+                    ? Text("data retrieved ${data.aclegupdate?.from(_now)}",
+                        style: GoogleFonts.robotoMono(
+                            fontSize: 10, fontWeight: FontWeight.w300))
+                    : Text("no data found",
+                        style: GoogleFonts.robotoMono(
+                            fontSize: 10, fontWeight: FontWeight.w300))
+              ],
+            )
+          ],
+        ),
+      ),
+      actions: [],
+      bottomNavigationBar: Container(
+        padding: const EdgeInsets.all(8),
+        // color: Colors.black,
+        decoration: BoxDecoration(
+            gradient: LinearGradient(
+          begin: Alignment.topCenter,
+          end: Alignment.bottomCenter,
+          colors: [
+            Colors.grey[700]!,
+            Colors.black,
+          ],
+        )),
+        child: Row(
+          mainAxisAlignment: MainAxisAlignment.spaceAround,
+          children: [
+            ElevatedButton.icon(
+              onPressed: () async {
+                showInflightOnly = !showInflightOnly;
+                setState(() {});
+                Future.delayed(Duration(milliseconds: 200)).then((x) {
+                  scrolltonow();
+                });
+                await Hive.box("settings")
+                    .put("flightslist.filter.inflightonly", showInflightOnly);
+              },
+              icon: showInflightOnly
+                  ? Icon(Icons.flight_takeoff)
+                  : Icon(Icons.all_out),
+              label: showInflightOnly
+                  ? Text("Inflight\nonly")
+                  : Text("All flight\nstatus"),
+              style: bottomnavstyle,
+            ),
+            const Gap(10),
+            Row(
+              children: [
+                ElevatedButton.icon(
+                  onPressed: () {
+                    _searchFlights(context);
+                  },
+                  icon: const Icon(Icons.manage_search),
+                  label: const Text("Filter\nFlights"),
+                  style: bottomnavstyle,
+                ),
+                const Gap(10),
+                Column(
+                    mainAxisSize: MainAxisSize.min,
+                    children: flightFilter.keys
+                        .where((e) => flightFilter[e] != "")
+                        .map((e) => Text(
+                              "$e: ${flightFilter[e]}",
+                              style: const TextStyle(
+                                  fontSize: 12, color: Colors.yellow),
+                            ))
+                        .toList()),
+                const Gap(10),
+                if (flightFilter.values.any((e) => e != ""))
+                  Badge(
+                    label: Text(flightFilter.values
+                        .where((e) => e != "")
+                        .length
+                        .toString()),
+                    child: IconButton.outlined(
+                        onPressed: () {
+                          for (var k in flightFilter.keys) {
+                            flightFilter[k] = "";
+                          }
+                          Hive.box("settings")
+                              .delete("flightslist.filter.flights");
+
+                          setState(() {});
+                        },
+                        icon:
+                            const Icon(Icons.filter_alt_off_rounded, size: 18)),
+                  )
+              ],
+            ),
+          ],
+        ),
+      ),
+    );
+  }
+}

+ 175 - 0
lib/flightslist/flightslist_page.dart.bak2

@@ -0,0 +1,175 @@
+import 'package:collection/collection.dart';
+import 'package:flutter/material.dart';
+import 'package:flutter_riverpod/flutter_riverpod.dart';
+import 'package:go_router/go_router.dart';
+import 'package:tp5/core/basic_page.dart';
+import 'package:tp5/core/utils.dart';
+import 'package:tp5/csv/data.dart';
+import 'package:tp5/fltinfo/view/fltinfo_page.dart';
+import 'package:tp5/widgets/my_col.dart';
+
+class FlightslistPage extends ConsumerStatefulWidget {
+  const FlightslistPage({super.key});
+
+  @override
+  ConsumerState<ConsumerStatefulWidget> createState() =>
+      _FlightslistPageState();
+}
+
+class _FlightslistPageState extends ConsumerState<FlightslistPage> {
+  bool showAllLegs = false;
+  _acLegs() {
+    final aclegs = ref.watch(dataProvider).acleg;
+    final now = ref.watch(clockProvider);
+    final firstlegafternow =
+        aclegs.firstWhereOrNull((l) => l.jdep!.isSameOrAfter(now)) ?? Acleg();
+    return Container(
+      child: aclegs.isEmpty
+          ? const Text("No leg found !")
+          : SingleChildScrollView(
+              scrollDirection: Axis.horizontal,
+              child: MyCol(
+                children: [
+                  if (!showAllLegs)
+                    TextButton(
+                        onPressed: () => setState(() {
+                              showAllLegs = true;
+                            }),
+                        child: const Text("Show all legs")),
+                  DataTable(
+                      showCheckboxColumn: false,
+                      border: TableBorder.all(width: 2),
+                      headingRowHeight: 5,
+                      columnSpacing: 20,
+                      dataRowMaxHeight: 31,
+                      dataRowMinHeight: 30,
+                      columns: [
+                        "Time",
+                        "Dep-Arr",
+                        "FNum",
+                        "Reg",
+                        "Status",
+                        "Delay"
+                      ].map((e) => DataColumn(label: Text(e))).toList(),
+                      rows: aclegs
+                          .whereIndexed((i, leg) =>
+                              showAllLegs ||
+                              (i >= aclegs.indexOf(firstlegafternow) - 10))
+                          .map(
+                            (Acleg x) => DataRow(
+                                onSelectChanged: (s) => context.push("/fltinfo",
+                                    extra: FltinfoParams(
+                                        al: x.FN_CARRIER,
+                                        fnum: x.FN_NUMBER,
+                                        jdep: x.jdep,
+                                        jdes: x.jarr,
+                                        dep: x.DEP_AP_ACTUAL,
+                                        des: x.ARR_AP_SCHED)),
+                                color: WidgetStateProperty.all(
+                                    (x == firstlegafternow)
+                                        ? Colors.purple[900]
+                                        : ((x.jdep!.isBefore(now))
+                                            ? Colors.black
+                                            : const Color.fromARGB(
+                                                255, 2, 21, 30))),
+                                cells: [
+                                  DataCell(Column(
+                                    children: [
+                                      Text(
+                                        "${x.jdep?.format(pattern: "dd MMM'yy")}",
+                                        style: TextStyle(
+                                            color: Colors.blueGrey[200],
+                                            fontWeight: FontWeight.w700,
+                                            fontSize: 10),
+                                      ),
+                                      Text(
+                                        "${x.jdep?.Hm ?? ""} ${x.jarr?.Hm ?? ""}",
+                                        style: const TextStyle(
+                                            color: Colors.blueGrey,
+                                            fontWeight: FontWeight.w600,
+                                            fontSize: 12),
+                                      ),
+                                    ],
+                                  )),
+                                  DataCell(Text(
+                                    " ${x.DEP_AP_ACTUAL ?? ""}-${x.ARR_AP_ACTUAL ?? ""}",
+                                  )),
+                                  DataCell(Text(
+                                    " ${x.FN_CARRIER ?? ""}${x.FN_NUMBER ?? ""}${x.FN_SUFFIX ?? ""}",
+                                    style: const TextStyle(fontSize: 12),
+                                  )),
+                                  DataCell(Text(x.flt_status,
+                                      style: TextStyle(
+                                          fontSize: 10,
+                                          fontWeight: FontWeight.bold,
+                                          color: x.flt_status == "Arrived"
+                                              ? Colors.cyan
+                                              : Colors.amber))),
+                                  DataCell(Text(x.AC_REGISTRATION ?? "-----",
+                                      style: TextStyle(
+                                          fontSize: 10,
+                                          fontWeight: FontWeight.bold,
+                                          color: x.EMPLOYER_COCKPIT == "TU"
+                                              ? Colors.green
+                                              : Colors.red))),
+                                  DataCell(
+                                      placeholder: true,
+                                      (x.jdep!.isAfter(x.jdepsched!))
+                                          ? Text(x.jdep!.dateTime
+                                              .difference(x.jdepsched!.dateTime)
+                                              .tohhmm)
+                                          : const Text("")),
+                                ]),
+                          )
+                          .toList()),
+                ],
+              ),
+            ),
+    );
+  }
+
+
+  final bottomnavstyle = ElevatedButton.styleFrom(
+      shape: RoundedRectangleBorder(
+        borderRadius: BorderRadius.circular(5.0),
+      ),
+      backgroundColor:
+          const Color.fromARGB(255, 0, 36, 53) //elevated btton background color
+      );
+
+  @override
+  Widget build(BuildContext context) {
+    return BasicPage(
+      appBar: AppBar(
+        title: Text('Flights List'),
+      ),      bottomNavigationBar: Container(
+        padding: const EdgeInsets.all(8),
+        // color: Colors.black,
+        decoration: BoxDecoration(
+            gradient: LinearGradient(
+          begin: Alignment.topCenter,
+          end: Alignment.bottomCenter,
+          colors: [
+            Colors.grey[700]!,
+            Colors.black,
+          ],
+        )),
+        child: Row(
+          mainAxisAlignment: MainAxisAlignment.spaceAround,
+          children: [
+            ElevatedButton.icon(
+              onPressed: () {
+                _showMonths(context);
+              },
+              icon: const Icon(
+                  Icons.calendar_month), //icon data for elevated button
+              label: const Text("Change\nMonth"), //label text
+              style: bottomnavstyle,
+            ),
+
+      body: Center(
+        child: _acLegs(),
+      ),
+    );
+  }
+}

+ 324 - 0
lib/flightslist/w_flt.dart

@@ -0,0 +1,324 @@
+import 'package:flutter/material.dart';
+import 'package:flutter_riverpod/flutter_riverpod.dart';
+import 'package:gap/gap.dart';
+import 'package:google_fonts/google_fonts.dart';
+import 'package:linear_progress_bar/linear_progress_bar.dart';
+import 'package:tp5/core/utils.dart';
+import 'package:tp5/csv/data.dart';
+import 'package:tp5/roster/widgets/w_citypair.dart';
+import 'package:tp5/roster/widgets/w_hour.dart';
+import 'package:tp5/widgets/my_row.dart';
+
+class WFlt extends ConsumerWidget {
+  const WFlt(
+      {super.key,
+      required this.acleg,
+      this.hide = const [],
+      this.highlight = false});
+
+  final List<String> hide;
+  final bool highlight;
+  final Acleg acleg;
+
+  String get fltstate {
+    if (acleg.flt_status == "Arrived" || acleg.flt_status == "Landed") {
+      return "ARR";
+    } else if (acleg.flt_status == "Inflight" ||
+        acleg.flt_status == "Taxiout") {
+      return "DEP";
+    } else if (acleg.flt_status == "Delayed") {
+      return "DEL";
+    } else if (acleg.flt_status == "Sched") {
+      return "SCD";
+    } else {
+      return "UNK";
+    }
+  }
+
+  aclegicon() {
+    if (fltstate == "DEP") {
+      return Icons.flight_takeoff_rounded;
+    } else if (fltstate == "ARR") {
+      return Icons.flight_land_rounded;
+    } else if (fltstate == "DEL") {
+      return Icons.timer;
+    } else if (fltstate == "SCD") {
+      return Icons.check_rounded;
+    } else {
+      return Icons.device_unknown;
+    }
+  }
+
+  Color aclegcolor() {
+    if (fltstate == "DEP") {
+      return Colors.black;
+    } else if (fltstate == "ARR") {
+      return Colors.black;
+    } else if (fltstate == "DEL") {
+      return Colors.grey[900]!;
+    } else if (fltstate == "SCD") {
+      return Colors.grey[900]!;
+    } else {
+      return Colors.yellow[900]!;
+    }
+  }
+
+  @override
+  Widget build(BuildContext context, WidgetRef ref) {
+    final now = ref.watch(clockProvider);
+    return Card(
+      color: aclegcolor(),
+      // surfaceTintColor: (fltstate == "DEP") ? Colors.white : null,
+      shape: RoundedRectangleBorder(
+        borderRadius: BorderRadius.circular(5.0), // Rounded corners
+        side: BorderSide(
+          color: highlight ? Colors.yellow : Colors.transparent, // Border color
+          width: 2.0, // Border width
+        ),
+      ),
+      elevation: 8.0,
+      //margin: const EdgeInsets.symmetric(horizontal: 5.0, vertical: 4.0),
+      child: Column(
+        children: [
+          Padding(
+            padding: const EdgeInsets.symmetric(horizontal: 2, vertical: 0),
+            child: MyRow(children: [
+              if (!hide.contains("leading")) _leading(),
+              if (!hide.contains("timing")) _timing(),
+              if (!hide.contains("flight")) _flight(),
+              if (!hide.contains("actype")) _actype(),
+              if (!hide.contains("booking")) _booking(),
+              if (!hide.contains("delay")) _delay(),
+            ]),
+          ),
+          if (fltstate == "DEP" && now.isBefore(acleg.jarr!))
+            Row(children: [
+              const Gap(60),
+              Text(
+                "departed\n${now.dateTime.difference(acleg.jdep!.dateTime).tohhmm} ago",
+                style: const TextStyle(
+                    fontSize: 9, letterSpacing: 1, color: Colors.grey),
+              ),
+              const Gap(5),
+              Expanded(
+                child: LinearProgressBar(
+                  maxSteps: acleg.jarr!.dateTime
+                      .difference(acleg.jdep!.dateTime)
+                      .inMinutes,
+                  progressType: LinearProgressBar
+                      .progressTypeLinear, // Use Linear progress
+                  currentStep:
+                      now.dateTime.difference(acleg.jdep!.dateTime).inMinutes,
+                  progressColor: Colors.cyan,
+                  backgroundColor: Colors.grey[700],
+                  borderRadius: BorderRadius.circular(10), //  NEW
+                ),
+              ),
+              const Gap(5),
+              Text(
+                "arrives\nin ${acleg.jarr!.dateTime.difference(now.dateTime).tohhmm}",
+                style: const TextStyle(
+                    fontSize: 9, letterSpacing: 1, color: Colors.grey),
+              ),
+              const Gap(5)
+            ]),
+          const Gap(2),
+        ],
+      ),
+    );
+  }
+
+  _leading() => SizedBox(
+        width: 50,
+        child: Padding(
+          padding: const EdgeInsets.all(4.0),
+          child: Column(children: [
+            Icon(aclegicon()),
+            Text(
+              acleg.flt_status,
+              style: const TextStyle(fontSize: 9),
+            )
+          ]),
+        ),
+      );
+
+  _flight() => SizedBox(
+        width: 100,
+        child: Column(crossAxisAlignment: CrossAxisAlignment.center, children: [
+          WCitypair(
+            iata1: acleg.DEP_AP_ACTUAL ?? "---",
+            iata2: acleg.ARR_AP_SCHED ?? "---",
+            size: 14,
+            color:
+                (acleg.ARR_AP_ACTUAL == acleg.ARR_AP_SCHED) ? null : Colors.red,
+          ),
+          MyRow(
+            children: [
+              Text(
+                  "${acleg.FN_CARRIER}${acleg.FN_NUMBER ?? "---"}${acleg.FN_SUFFIX ?? ""}",
+                  style: const TextStyle(color: Colors.white70, fontSize: 12)),
+              const Gap(10),
+              if (acleg.ARR_AP_ACTUAL != acleg.ARR_AP_SCHED &&
+                  acleg.DEP_AP_ACTUAL != acleg.ARR_AP_ACTUAL &&
+                  acleg.blocks[1] != null)
+                Column(
+                  crossAxisAlignment: CrossAxisAlignment.center,
+                  children: [
+                    const Text("Diverted to",
+                        style: TextStyle(color: Colors.red, fontSize: 9)),
+                    Text(acleg.ARR_AP_ACTUAL ?? "---",
+                        style: const TextStyle(
+                            color: Colors.yellow,
+                            fontSize: 12,
+                            fontWeight: FontWeight.w600)),
+                  ],
+                ),
+              if (acleg.ARR_AP_ACTUAL != acleg.ARR_AP_SCHED &&
+                  acleg.DEP_AP_ACTUAL == acleg.ARR_AP_ACTUAL)
+                Column(
+                  crossAxisAlignment: CrossAxisAlignment.center,
+                  children: [
+                    Text(
+                        (acleg.blocks[1] != null)
+                            ? "Flight back to"
+                            : "Return to",
+                        style: const TextStyle(color: Colors.red, fontSize: 9)),
+                    Text(acleg.ARR_AP_ACTUAL ?? "---",
+                        style: const TextStyle(
+                            color: Colors.yellow,
+                            fontSize: 12,
+                            fontWeight: FontWeight.w600)),
+                  ],
+                ),
+            ],
+          ),
+        ]),
+      );
+
+  _actype() => SizedBox(
+        width: 60,
+        child: Column(
+          crossAxisAlignment: CrossAxisAlignment.start,
+          children: [
+            Text(acleg.AC_REGISTRATION ?? "-----",
+                style: TextStyle(
+                    color: Colors.yellow[800]!, fontWeight: FontWeight.w700)),
+            Row(
+              mainAxisAlignment: MainAxisAlignment.spaceBetween,
+              children: [
+                Text(acleg.AC_SUBTYPE ?? "---",
+                    style: const TextStyle(
+                        fontSize: 12,
+                        color: Colors.grey,
+                        fontWeight: FontWeight.w500)),
+                Text(acleg.AC_OWNER ?? "---",
+                    style: TextStyle(
+                        fontSize: 12,
+                        color: Colors.grey[400]!,
+                        fontWeight: FontWeight.w500)),
+              ],
+            )
+          ],
+        ),
+      );
+  _booking() => SizedBox(
+        width: 60,
+        child: Column(
+          crossAxisAlignment: CrossAxisAlignment.center,
+          children: [
+            Text(
+              acleg.pax_booked ?? "---",
+              style: GoogleFonts.robotoMono(
+                  fontSize: 11, fontWeight: FontWeight.w300),
+            ),
+            Text(
+              acleg.AC_VERSION ?? "---",
+              style: GoogleFonts.robotoMono(
+                  color: Colors.grey, fontSize: 9, fontWeight: FontWeight.w300),
+            ),
+          ],
+        ),
+      );
+  _timing() => SizedBox(
+        width: 80,
+        child: Column(
+          crossAxisAlignment: CrossAxisAlignment.start,
+          children: [
+            Text(
+              acleg.jdep!.format(pattern: "dd MMM 'yy"),
+              style: const TextStyle(fontSize: 11, color: Colors.grey),
+            ),
+            Row(
+              children: [
+                WHour(jiffy: acleg.jdep!, size: 13),
+                const Gap(10),
+                WHour(jiffy: acleg.jarr!, size: 13)
+              ],
+            ),
+            if (acleg.jdep!.isAfter(acleg.jdepsched!.add(minutes: 15)))
+              Row(
+                mainAxisAlignment: MainAxisAlignment.end,
+                children: [
+                  Text(
+                    "Delay ",
+                    style: GoogleFonts.robotoMono(
+                        fontSize: 10,
+                        fontWeight: FontWeight.w400,
+                        color: Colors.red[600]),
+                  ),
+                  Padding(
+                    padding: const EdgeInsets.only(right: 8),
+                    child: Text(
+                      acleg.jdep!.dateTime
+                          .difference(acleg.jdepsched!.dateTime)
+                          .tohhmm,
+                      style: GoogleFonts.robotoMono(
+                          fontSize: 10,
+                          fontWeight: FontWeight.w400,
+                          color: Colors.red[200]),
+                    ),
+                  )
+                ],
+              ),
+            if (acleg.slot != null && acleg.slot!.year > 2000)
+              Row(
+                mainAxisAlignment: MainAxisAlignment.end,
+                children: [
+                  Text(
+                    "CTOT ",
+                    style: GoogleFonts.robotoMono(
+                        fontSize: 10,
+                        fontWeight: FontWeight.w600,
+                        color: Colors.amber),
+                  ),
+                  Padding(
+                    padding: const EdgeInsets.only(right: 8),
+                    child: Text(
+                      acleg.slot!.Hm,
+                      style: GoogleFonts.robotoMono(
+                          fontSize: 10,
+                          fontWeight: FontWeight.w400,
+                          color: Colors.amber),
+                    ),
+                  )
+                ],
+              ),
+          ],
+        ),
+      );
+
+  _delay() => SizedBox(
+      width: 60,
+      child: Column(
+        children: [
+          if (acleg.dla.isNotEmpty) ...[
+            const Text("DLA",
+                style: TextStyle(fontSize: 10, color: Colors.grey)),
+            ...acleg.dla.map((e) => Text(
+                  "${e[0]} = ${e[1] is Duration ? ((e[1] as Duration).tohhmm) : ""}",
+                  style: const TextStyle(fontSize: 10),
+                ))
+          ]
+        ],
+      ));
+}

+ 1145 - 0
lib/fltinfo/delaycodes.dart

@@ -0,0 +1,1145 @@
+class Delaycodes {
+  static String? exp(String code) {
+    return codes[code];
+  }
+
+  static final Map<String, String> codes = {
+    "00": "Further induced delay due to scheduled flight time",
+    "01": "Further induced delay due to DCP",
+    "02": "Further induced delay due to DCTI",
+    "03": "Further induced delay due to DOA",
+    "04": "Further induced delay due to CATERING",
+    "05": "Further induced delay due to SECURITY",
+    "06": "Further induced delay due to ATC",
+    "07": "Further induced delay due to METEO",
+    "08": "Other further induced delay",
+    "09":
+        "SCHEDULED GROUND TIME - Planned turnaround less than declared minimum",
+    "11": "LATE CHECK-IN, acceptance after published deadlines",
+    "11A":
+        "Acceptation Pax after the latest check-in time (Handler responsibility)",
+    "11B": "Acceptation Pax after the latest check-in time (Airline decision)",
+    "11C": "Absence or lack of check-in staff",
+    "11D": "Queue at ticket counter",
+    "12": "LATE CHECK-IN, congestion in check-in area",
+    "12A": "Queue at check-in counter/departure hall",
+    "12B": "Queue at transit hall",
+    "12C": "Other cases to be specified in the SI",
+    "13": "CHECK-IN ERROR, passenger and baggage",
+    "13A": "Check-in error/station staff",
+    "13B": "Check-in error/other functions",
+    "13C": "Late boarding caused by wrong or missing seating",
+    "13D":
+        "Discrepancy between the actual number of passengers onboard and loadsheet",
+    "14": "OVERSALES, booking errors",
+    "14A": "Overbook due to system error",
+    "14B": "Offloading of OK passengers, involuntary down/upgradings",
+    "14C": "Altea system error",
+    "15": "BOARDING, discrepancies and paging, missing checked-in passengers",
+    "15A": "Check-in error/gate staff",
+    "15B": "Travel documents check at gate",
+    "15C": "Lack of/late boarding staff positioning",
+    "15D": "Awaiting checked-in passengers without baggage",
+    "15E":
+        "Transfer of booked passengers from oversold/cancelled/delayed flight",
+    "16": "COMMERCIAL PUBLICITY / PASSENGER CONVENIENCE",
+    "16A": "Passenger Illness/death……accident",
+    "16B": "Loss, missing passenger personal effects",
+    "16C": "VIP",
+    "16D": "Handling of excessive/volumetric hand baggage",
+    "16E": "Processing elderly passengers",
+    "16F": "Other cases to be specified in the SI",
+    "17": "CATERING ORDER late or incorrect order given to supplier",
+    "17A":
+        "Catering new order NOTE: If the crew refuses to accept passengers without meals, use code 65",
+    "18":
+        "BAGGAGE PROCESSING, SORTING etc. NOTE: If the delay is caused by a baggage sorting system inoperative or insufficient capacity and system owned by airport authorities, use code 87. If the system is operated by airport authority staff and the delay is caused by operator error, use code 87",
+    "18A":
+        "Delivery of baggage after the deadline (other than load connection)",
+    "18B": "Weight/volumetric problems with baggage handling",
+    "19":
+        "Reduced Mobility Boarding/Deboarding of passengers with reduced mobility - Treatment of passengers disabled, sick",
+    "21": "DOCUMENTATION",
+    "21A": "Late Cargo documentation to aircraft",
+    "21B":
+        "Incorrect cargo figures in the FIDO system or wrongly stated to load control by the cargo dept.",
+    "22": "LATE POSITIONING",
+    "22A": "Late cargo at aircraft side",
+    "22B": "Missing ULD’s c - breakdown or lack of tractor",
+    "22C": "Insufficient and/or lack of trucks",
+    "22D": "Service provider responsibility",
+    "23": "LATE ACCEPTANCE OF CARGO",
+    "23A": "Late acceptance of cargo for commercial reasons",
+    "23B": "Without object",
+    "23C": "Exceptionally large amount of in/outbound cargo",
+    "24": "INADEQUATE PACKING",
+    "24A": "Leaking/spillage from ULD’s",
+    "25": "CARGO SCREENING",
+    "25A": "X-Ray",
+    "25B": "Sniffer dogs",
+    "25C": "Physical Check",
+    "26": "OTHER CARGO",
+    "26A": "GHA’s fault",
+    "26B": "Overweight cargo",
+    "26C": "Cargo requires special handling equipment not available",
+    "27": "DOCUMENTATION, PACKING, ETC.",
+    "27A": "Mail documents late delivery to aircraft",
+    "27B":
+        "Incorrect mail figures in the FIDO system or wrongly stated to load control from the mail dept.",
+    "27C": "Delays due to mail volumetric limitations",
+    "27D": "Missing weight documentation on mail ULD’s or tags",
+    "28": "LATE POSITIONING",
+    "28A": "Late mail delivery at aircraft side",
+    "28B": "Breakdown or lack of tractor",
+    "29": "LATE ACCEPTANCE",
+    "29A": "Late acceptance of mail for commercial reasons",
+    "29B": "Volumetric mail in transit",
+    "31":
+        "AIRCRAFT DOCUMENTATION, late/inaccurate weight and balance documentation, general declaration, etc.",
+    "31A": "Lack of/late ramp agent (D1/D3)",
+    "31B": "Missing/late GD",
+    "31C": "Late given loading instructions",
+    "31D": "Error load sheet and weight balance",
+    "31E": "Reseating of passengers for balance reasons",
+    "31F": "Without object Deadload",
+    "31G": "Other details to specify on SI",
+    "32": "LOADING/UNLOADING, bulky items, special load, lack loading staff",
+    "32A": "Lack or /late loaders",
+    "32B": "Special cargo loading (HEA, HUM…)",
+    "32C": "Loaders late from another flight",
+    "32D": "Cabin load",
+    "32E": "Exceptionally large amount of in/outbound baggage",
+    "32F": "DLA not specify",
+    "33":
+        "LOADING EQUIPMENT, lack of or breakdown, e.g. container/pallet loader, lack of operating staff",
+    "33A": "Lack of/late staff",
+    "33B":
+        "Lack of/late highloader, conveyor belt/other motorized loading device",
+    "33C": "Lack of carts or dollies",
+    "33D": "Lack of lashing/supporting material",
+    "34": "SERVICING EQUIPMENT, lack of or breakdown",
+    "34A": "Potable water supplier",
+    "34B": "GPU",
+    "34C": "ACU",
+    "34D": "Toilet service",
+    "34E": "Passenger steps",
+    "34F": "De-icing equipment (service provider)",
+    "34G": "Cleaning equipment (service provider)",
+    "34H": "ASU",
+    "35": "CABIN CLEANING",
+    "35A": "Lack of/late cleaning staff",
+    "35B": "Slow cleaning",
+    "35C": "Lack headrests)",
+    "35D": "Other cases to be specified in the SI",
+    "36": "FUELING/DEFUELLING Late delivery; excludes late order",
+    "36A": "Late fuel truck arrival",
+    "36B": "Late station engineer arrival",
+    "36C": "Defueling due to error petrolier",
+    "37": "CATERING Late and/or incompatible delivery; late loading",
+    "37A": "Latte/wrong delivery",
+    "37B": "Lack of/late Loader",
+    "37C": "Breakdown of catering equipment",
+    "37D": "Late loading - loaders from another flight",
+    "37E": "Missing equipment to be delivered by the catering company",
+    "37F": "Transfer of pre-orders from compartment to cabin",
+    "37G": "Transit servicing (service provider)",
+    "37H": "Wrong given orders",
+    "37I": "Free shop articles late delivery(service provider)",
+    "37J": "Late crew meal delivery",
+    "37K": "Medical kit late delivery",
+    "37L": "Pharmacy kit late delivery",
+    "38": "ULD 38 lack of or/unserviceable ULD’s or pallets",
+    "39": "TECHNICAL EQUIPMENT lack and/or breakdown",
+    "39A": "Late tractor (towing)",
+    "39B": "Lack or late arrival station engineer",
+    "41": "TECHNICAL DEFECT Aircraft defects including items covered by MEL",
+    "41A": "Failures in the aircraft system",
+    "41B": "Leased aircraft",
+    "42": "SCHEDULED MAINTENANCE 42 Late release from maintenance",
+    "43":
+        "NON-SCHEDULED MAINTENANCE 43 Special checks and/or additional works beyond the normal maintenance schedule",
+    "44": "SPARES AND MAINTENANCE",
+    "44A": "Lack/shortage of spares",
+    "44B":
+        "Lack of and/or breakdown of maintenance equipment (service provider)",
+    "44C": "Waiting Engineer",
+    "45": "AOG SPARES To carry to another station 45 Late delivery to aircraft",
+    "46": "AIRCRAFT CHANGE",
+    "46A": "Due to technical reasons (own aircraft)",
+    "46B": "Due to technical reasons (leased aircraft)",
+    "47":
+        "STAND-BY AIRCRAFT 47 Stand-by aircraft unavailable for technical reasons",
+    "48": "SCHEDULED CABIN MAINTENANCE/ CLEANING 48",
+    "48A": "Deep cleaning",
+    "48B": "Cabin configuration, Class divider",
+    "48C": "IFE (In-flight entertainment system)",
+    "49": "OTHER EQUIPMENT",
+    "49A": "Lavatory service",
+    "49B": "Water Service",
+    "51": "PREVIOUSLY UNREPORTED DAMAGE 51",
+    "52": "DAMAGE BY OWN HANDLING",
+    "52A": "Catering",
+    "52B": "Passenger Boarding Bridge",
+    "52C": "Ground Handling Equipment",
+    "52D": "Towing",
+    "52E": "Extreme weather conditions",
+    "55":
+        "DEPARTURE CONTROL Failure of automated systems including check-in, load control systems producing mass and balance",
+    "55A": "FIDO-check-in",
+    "55B": "FIDO-weight and balance calculations",
+    "55C": "Equipment breakdown (printer/boarding pass printer)",
+    "55D": "Long response time/terminal locked",
+    "56":
+        "CARGO PREPARATION DOCUMENTATION Failure of documentation and/or load control systems covering cargo",
+    "56A": "From Tunisian stations",
+    "56B": "From foreign stations",
+    "57":
+        "OPS FLIGHT PLAN 57 Failure of automates flight plan systems (excluding ATC)",
+    "58": "OTHER AUTOMATED EQUIPMENT FAILURE 58 Other service provider systems",
+    "61": "FLIGHT PLANS late completion or change of flight documentation",
+    "61A": "Late fueling order (dispatch)",
+    "61B": "Late fueling order (pilots)",
+    "61C": "Complete change of flight documentation",
+    "61D": "Lack of/late ATC flight plan",
+    "62": "OPERATIONAL REQUIREMENTS Late alteration to fuel or payload",
+    "62A": "Defueling on captain’s request",
+    "62B": "Extra fuel order",
+    "63":
+        "LATE CREW BOARDING OR DEPARTURE PROCEDURES Late flight deck or entire crew, other than stand-by; late completion of flight deck crew checks",
+    "63A": "Late crew arrival at aircraft due to ground transport",
+    "63B": "Cabin crew shuttle late arrival",
+    "63C":
+        "Departure procedures in cockpit(special request not within operational requirements technical tolerance denial. fuelling for operational or economic reasons",
+    "63D": "Late Cockpit crew arrival",
+    "63E": "Customs and police formalities (Crew)",
+    "63F": "Late pickup crew (in the foreign station)",
+    "64": "FLIGHT DECK CREW SHORTAGE",
+    "64A": "Sickness, disease",
+    "64B": "Awaiting stand-by/late crew",
+    "64C": "Flight time limitations",
+    "64D": "Late Crew meals order",
+    "64E": "Visa, health documents",
+    "64F": "Scheduling/disposition errors",
+    "64G": "Regulating error",
+    "64H":
+        "Flight time limitation/sickness/pick-up, cockpit crew (leased aircraft)",
+    "64J": "Awaiting crew on proposal",
+    "65":
+        "FLIGHT DECK CREW SPECIAL REQUEST, not within operational requirements",
+    "65A": "Catering order (captain’s request)",
+    "65B":
+        "Technical tolerance denial, excluding operational reason (refer to 41 A)",
+    "66":
+        "LATE CABIN CREW BOARDING OR DEPARTURE PROCEDURES, other than connection and stand-by",
+    "66A": "Late crew bus arrival (airport)",
+    "66B": "Late crew transportation (hotel)",
+    "66C": "Safety / Security procedures",
+    "66D": "Late cabin crew positioning",
+    "66E": "Crew disembarkation",
+    "66F": "Police and customs formalities",
+    "66G": "Late free-shop crew member arrival",
+    "67": "CABIN CREW SHORTAGE",
+    "67A": "Sickness, disease",
+    "67B": "Awaiting stand-by/late crew from home",
+    "67C": "Flight time limitations",
+    "67D": "Crew meals",
+    "67E": "Visa, health documents",
+    "67F": "Scheduling/disposition errors",
+    "67G": "Regulating error",
+    "67H":
+        "Flight time limitation/sickness/pick-up, cockpit crew (leased aircraft)",
+    "68":
+        "CABIN CREW ERROR OR SPECIAL REQUEST Not within operational requirements",
+    "68A": "Headcount mismatch of passengers on board",
+    "68B": "Late embarkation due to Cabin attendant order",
+    "68C": "Cabin configuration, Class divider",
+    "68D": "Special cabin crew request",
+    "69": "CAPTAIN REQUEST FOR SECURITY CHECK Extraordinary requests",
+    "69A": "Baggage check requested by PIC",
+    "69B": "Without object",
+    "71": "DEPARTURE STATION, Below operating limits",
+    "71A": "Departure station",
+    "71B": "Volcanic ash > operating limits",
+    "72": "DESTINATION STATION, below operating limits",
+    "72A": "Destination station",
+    "72B": "Volcanic ash > operating limits",
+    "73": "EN-ROUTE OR ALTERNATE below operating limits",
+    "73A": "En-route",
+    "73B": "Volcanic ash > operating limits",
+    "74": "DEPARTURE, DESTINATION OR EN-ROUTE, Volcanic ash < operating limits",
+    "75": "DEICING OF AIRCRAFT",
+    "75A": "De-icing before push-back > 5 min",
+    "75B": "Miss De-icing (handler responsibility)",
+    "75C": "De-icing after push-back (remote stand)",
+    "75D": "De-icing equipment late positioning",
+    "75E": "Volcanic ash decontamination",
+    "76":
+        "REMOVAL OF SNOW, ICE, WATER AND SAND FROM AIRPORT 76 Runway, taxiway conditions",
+    "77":
+        "GROUND HANDLING IMPAIRED BY ADVERSE WEATHER CONDITIONS 77 High winds, heavy rains, blizzard, etc.",
+    "78": "Waiting for Weather improvement",
+    "79": "Without object",
+    "81": "ATC EN-ROUTE DEMAND 81 Capacity problems",
+    "82": "ATFM DUE TO ATC STAFF/EQUIPMENT EN-ROUTE",
+    "82A": "Industrial action",
+    "82B": "Staff shortage",
+    "82C": "Equipment shortage/failure",
+    "83": "ATC AIPORT DESTINATION",
+    "83A": "Runway closed due to obstruction",
+    "83B": "Noise abatement",
+    "83C": "Special events",
+    "84": "ATC DUE TO WEATHER CONDITIONS AT DESTINATION 84 Weather conditions",
+    "85": "MANDATORY SECURITY, involving passengers and/or cargo",
+    "85A": "Queues at security check",
+    "85B": "Lack of security staff",
+    "85C": "Lack of equipment/facilities",
+    "85D":
+        "Late or missing passengers with baggage at the gate due to passengers’ own fault",
+    "85E": "Baggage search for a missing passenger at boarding (PIC request)",
+    "85F": "Additional security check",
+    "86": "GOVERNMENTALAUTHORITIES, customs, immigration, health, etc.",
+    "86A": "Departure",
+    "86B": "Arrival",
+    "87":
+        "AIRPORT, terminal, apron congestion, lack of or breakdown of airport passenger or baggage handling equipment",
+    "87A": "Congestion at the airport",
+    "87B":
+        "Lack of or breakdown of airport equipment (lifts, escalators, walkways)",
+    "87C": "Breakdown or lack of baggage handling system",
+    "87D": "Customs formalities",
+    "87E": "Police formalities",
+    "87F": "Authority control (CAA, SAFA…)",
+    "88":
+        "RESTRICTIONS AT DESTINATION AIRPORT, airport and/or runway closed due to obstruction, industrial action, staff shortage, political unrest, noise abatement, night curfew, special flights",
+    "88A": "Airport and/or runway closed due to obstructions",
+    "88B": "Political unrest or industrial action",
+    "88C": "Noise abatement",
+    "88D": "Special flights",
+    "89":
+        "RESTRICTIONS AT AIRPORT OF DEPARTURE including Air Traffic Services, start-up and push-back, airport and/or runway closed due to obstruction or weather (restriction due to weather in case of ATFM regulation only, else refer to code 71), industrial action, staff shortage, political unrest, noise abatement, night curfew, special flights",
+    "89A": "Late Start-up push-back due to ATC local",
+    "89B": "Industrial action",
+    "89C": "Special flights",
+    "89D": "Airport and/or runway closed due to obstruction",
+    "89E": "Traffic congestion",
+    "91": "LOAD CONNECTION, awaiting load from another flight",
+    "91A": "Passengers and baggage wait",
+    "91B": "Cargo and/or mail wait",
+    "91C": "Bag transit wait",
+    "92":
+        "THROUGH CHECKING ERROR, passenger or baggage check-in error at the originating station",
+    "92A": "Wrong passenger/baggage info from the previous station",
+    "92B": "Too many pieces of hand baggage from the previous flight",
+    "93":
+        "AIRCRAFT ROTATION Late arrival of aircraft, crew, etc., from another flight or duty",
+    "94": "DOWNGRADING OF AIRCRAFT TYPE",
+    "94A": "Technical reasons (own aircraft)",
+    "94B": "Commercial reasons (own aircraft)",
+    "94C": "Technical reasons (leased aircraft)",
+    "95": "FLIGHT CANCELLED DUE TO IRREGULARITY",
+    "95A": "Own Irregularity",
+    "95B": "Other airline’s irregularity",
+    "96": "FLIGHT CANCELLED DUE TO OWN REASONS",
+    "96A": "Commercial reasons",
+    "96B": "Technical reasons",
+    "96C": "Operational reasons",
+    "97": "INDUSTRIAL ACTION WITHIN OWN AIRLINE",
+    "97A": "Operations staff’s strike (dispatch)",
+    "97B": "Maintenance strike",
+    "97C": "Ground Handling strike",
+    "97D": "Crew’s strike",
+    "97E": "Refuelling companies strike",
+    "97F": "Cargo handling strike",
+    "97G": "IOCC’s strike",
+    "98":
+        "INDUSTRIAL ACTION OUTSIDE OWN AIRLINE 98 Industrial action(service providers)",
+    "99":
+        "MISCELLANEOUS No suitable code 99 Any other case, the reason must always be reported in plain text in the SI element of MVT"
+  };
+  /*
+  static String? exp(String code) {
+    for (var dtype in codes.keys) {
+      final list = codes[dtype];
+      for (var dcode in (list as Map).keys) {
+        final dldata = codes[dtype]?[dcode];
+        if (dcode == code) {
+          return "${(dldata as Map)["meaning"]}\n${(dldata as Map)["explanation"]}";
+        }
+        if ((dldata?["sub-code"] is Map) &&
+            (((dldata?["sub-code"] ?? {}) as Map).keys.contains(code)))
+          return (dldata?["sub-code"] as Map)[code];
+      }
+    }
+
+    // for (var dla in codes) {
+    //   if (dla["code"] == code) return dla["meaning"].toString();
+    //   for (var subdla in dla["subcodes"] as List) {
+    //     if (subdla["subcode"] == code) {
+    //       return "${dla["meaning"].toString()}\n${subdla["explanation"].toString()}";
+    //     }
+    //   }
+    // }
+    return null;
+  }
+
+
+
+  static final codes = {
+    "TU Internal Codes": {
+      "00": {
+        "abbreviation": " ",
+        "meaning": "Further induced delay due to scheduled flight time",
+        "sub-code": "00",
+        "explanation": " "
+      },
+      "01": {
+        "abbreviation": " ",
+        "meaning": "Further induced delay due to DCP",
+        "sub-code": "01",
+        "explanation": " "
+      },
+      "02": {
+        "abbreviation": " ",
+        "meaning": "Further induced delay due to DCTI",
+        "sub-code": "02",
+        "explanation": " "
+      },
+      "03": {
+        "abbreviation": " ",
+        "meaning": "Further induced delay due to DOA",
+        "sub-code": "03",
+        "explanation": " "
+      },
+      "04": {
+        "abbreviation": " ",
+        "meaning": "Further induced delay due to CATERING",
+        "sub-code": "04",
+        "explanation": " "
+      },
+      "05": {
+        "abbreviation": " ",
+        "meaning": "Further induced delay due to SECURITY",
+        "sub-code": "05",
+        "explanation": " "
+      },
+      "06": {
+        "abbreviation": " ",
+        "meaning": "Further induced delay due to ATC",
+        "sub-code": "06",
+        "explanation": " "
+      },
+      "07": {
+        "abbreviation": " ",
+        "meaning": "Further induced delay due to METEO",
+        "sub-code": "07",
+        "explanation": " "
+      },
+      "08": {
+        "abbreviation": " ",
+        "meaning": "Other further induced delay",
+        "sub-code": "08",
+        "explanation": " "
+      }
+    },
+    "Others": {
+      "09": {
+        "abbreviation": "SG",
+        "meaning": "SCHEDULED GROUND TIME",
+        "sub-code": "9",
+        "explanation": "Planned turnaround less than declared minimum."
+      },
+      "11": {
+        "abbreviation": "PD",
+        "meaning": "LATE CHECK-IN, acceptance after published deadlines",
+        "sub-code": {
+          "11A":
+              "Acceptation Pax after the latest check in time (Handler responsibility)",
+          "11B":
+              "Acceptation Pax after the latest check in time (Airline decision)"
+        },
+        "explanation": " "
+      },
+      "12": {
+        "abbreviation": "PC",
+        "meaning": "CABIN CLEANING, late/incomplete cleaning",
+        "sub-code": " ",
+        "explanation": " "
+      },
+      "13": {
+        "abbreviation": "PF",
+        "meaning":
+            "AIRCRAFT FUEL, late/incorrect fuelling, defuelling, fuel company",
+        "sub-code": " ",
+        "explanation": " "
+      },
+      "14": {
+        "abbreviation": "PG",
+        "meaning": "LATE BOARDING OR DEPARTURE PROCEDURES",
+        "sub-code": {
+          "14A":
+              "Late/ incorrect information given to passengers by airline, handling agents",
+          "14B": "Late handling of connecting passengers",
+          "14C": "Late handling of through check passengers",
+          "14D": "Late crew transport",
+          "14E": "Long queues at check-in, passport/emigration control",
+          "14F": "Waiting for documents/clearance/late dispatch release",
+          "14G": "Late handling of UM",
+          "14H": "Gate change"
+        },
+        "explanation": " "
+      },
+      "15": {
+        "abbreviation": "PB",
+        "meaning": "BAGGAGE, late loading/unloading, baggage reconciliation",
+        "sub-code": {
+          "15A": "Late baggage arrival at aircraft side from terminal",
+          "15B": "Late baggage arrival at aircraft side from late flight",
+          "15C": "Baggage reconciliation, missing baggage",
+          "15D": "Baggage overload",
+          "15E": "Search of baggage for security reasons",
+          "15F": "Late boarding of disabled passengers in transit",
+          "15G": "Late/ or lack of buses",
+          "15H":
+              "Check/counting of boarding passes onboard or at gate due to discrepancies on loadsheet and passengers onboard"
+        },
+        "explanation": " "
+      },
+      "16": {
+        "abbreviation": "PS",
+        "meaning": "COMMERCIAL PUBLICITY / PASSENGER CONVENIENCE",
+        "sub-code": {
+          "16A": "Passenger illness/death - accident",
+          "16B": "Loss, missing passenger personal effects",
+          "16C": "VIP",
+          "16D": "Handling of excessive/volumetric hand baggage",
+          "16E": "Processing elderly passengers",
+          "16F": "Other cases to be specified in the \"SI\""
+        },
+        "explanation": " "
+      },
+      "17": {
+        "abbreviation": "PC",
+        "meaning": "CATERING ORDER - late or incorrect order given to supplier",
+        "sub-code": "17A",
+        "explanation":
+            "Catering new order NOTE: If crew refuses to accept passengers without meals, use code 65"
+      },
+      "18": {
+        "abbreviation": "PB",
+        "meaning":
+            "BAGGAGE PROCESSING, SORTING etc NOTE: If delay caused by baggage sorting system inoperative or insufficient capacity and system owned by airport authorities, use code 87. If system operated by airport authority staff and delay caused by operator error, use code 87.",
+        "sub-code": "18A",
+        "explanation":
+            "Delivery of baggage after deadline (other than load connection)"
+      },
+      "19": {
+        "abbreviation": "PW",
+        "meaning":
+            "Reduced Mobility Boarding/Deboarding of passengers with reduced mobility. - Treatment of passengers disabled, sick,.........",
+        "sub-code": " ",
+        "explanation": " "
+      }
+    },
+    "Cargo": {
+      "21": {
+        "abbreviation": "CD",
+        "meaning": "DOCUMENTATION, PACKING, ETC.",
+        "sub-code": "21A",
+        "explanation": "Cargo documents not ready / late delivery to aircraft"
+      },
+      "22": {
+        "abbreviation": "CL",
+        "meaning": "LATE POSITIONING",
+        "sub-code": {
+          "22A": "Late cargo delivery at aircraft side",
+          "22B": "Breakdown or lack of equipment/staff"
+        },
+        "explanation": " "
+      },
+      "23": {
+        "abbreviation": "CA",
+        "meaning": "LATE ACCEPTANCE",
+        "sub-code": {
+          "23A": "Late acceptance of cargo for commercial reasons",
+          "23B": "Volumetric cargo, awaiting later flight",
+          "23C": "Dangerous goods, awaiting later flight",
+          "23D": "Cargo weight in excess"
+        },
+        "explanation": " "
+      },
+      "24": {
+        "abbreviation": "CS",
+        "meaning": "CARGO SEARCH, for security or other reasons",
+        "sub-code": " ",
+        "explanation": " "
+      },
+      "25": {
+        "abbreviation": "CG",
+        "meaning": "GOVERNMENTAL FORMALITIES, customs, health, etc.",
+        "sub-code": " ",
+        "explanation": " "
+      },
+      "26": {
+        "abbreviation": "CB",
+        "meaning": "TRANSFER MANIFEST / INCOMPATIBLE ULD",
+        "sub-code": "26A",
+        "explanation": "Transfer manifest  late from other airline"
+      }
+    },
+    "Mail": {
+      "27": {
+        "abbreviation": "CE",
+        "meaning": "DOCUMENTATION, PACKING, ETC.",
+        "sub-code": "27A",
+        "explanation": "Mail documents late delivery to aircraft"
+      },
+      "28": {
+        "abbreviation": "CL",
+        "meaning": "LATE POSITIONING",
+        "sub-code": {
+          "28A": "Late mail delivery at aircraft side",
+          "28B": "Breakdown or lack of tractor"
+        },
+        "explanation": " "
+      },
+      "29": {
+        "abbreviation": "CA",
+        "meaning": "LATE ACCEPTANCE",
+        "sub-code": {
+          "29A": "Late acceptance of mail for commercial reasons",
+          "29B": "Volumetric mail in transit"
+        },
+        "explanation": " "
+      }
+    },
+    "Aircraft and ramp handling": {
+      "31": {
+        "abbreviation": "GD",
+        "meaning":
+            "AIRCRAFT DOCUMENTATION, late/inaccurate weight and balance documentation, general declaration, etc.",
+        "sub-code": {
+          "31A": "Lack of/late ramp agent (D1/D3)",
+          "31B": "Missing/late GD",
+          "31C": "Late given loading instructions",
+          "31D": "Error load sheet and weight balance",
+          "31E": "Reseating of passengers for balance reasons",
+          "31F": "Without object Deadload",
+          "31G": "Other details to specify on SI"
+        },
+        "explanation": " "
+      },
+      "32": {
+        "abbreviation": "GL",
+        "meaning":
+            "LOADING/UNLOADING, bulky items, special load, lack loading staff",
+        "sub-code": {
+          "32A": "Late arrival /shortage of loading staff /equipment",
+          "32B": "Special load /OHG / AVI",
+          "32C": "ULD off-load due Netz malfunction",
+          "32D": "ULD off-load due to discrepancies"
+        },
+        "explanation": " "
+      },
+      "33": {
+        "abbreviation": "GS",
+        "meaning": "STAIRS/BRIDGE, late positioning/ removal, malfunction",
+        "sub-code": " ",
+        "explanation": " "
+      },
+      "34": {
+        "abbreviation": "GT",
+        "meaning": "WATER SERVICE/ TOILET SERVICE",
+        "sub-code": {
+          "34A": "Late arrival of water truck",
+          "34B": "Late arrival of toilet service truck",
+          "34C": "Breakdown of water truck/equipment",
+          "34D": "Breakdown of toilet truck/equipment"
+        },
+        "explanation": " "
+      },
+      "35": {
+        "abbreviation": "GC",
+        "meaning":
+            "CABIN  CLEANING - late and/or incompatible delivery; late loading",
+        "sub-code": {
+          "35A": "Lack of/late cleaning staff",
+          "35B": "Slow cleaning",
+          "35C": "Lack headrests",
+          "35D": "Other cases to be specified in the \"SI"
+        },
+        "explanation": " "
+      },
+      "36": {
+        "abbreviation": "GF",
+        "meaning": "FUELING/DEFUELLING - Late delivery; excludes late order",
+        "sub-code": {
+          "36A": "Late fuel truck arrival",
+          "36B": "Late station engineer arrival",
+          "36C": "Defueling due to error petrolier"
+        },
+        "explanation": " "
+      },
+      "37": {
+        "abbreviation": "GB",
+        "meaning": "CATERING - Late and/or incompatible delivery; late loading",
+        "sub-code": {
+          "37A": "Late/wrong delivery",
+          "37B": "Lack of/late loader",
+          "37C": "Breakdown of catering equipment",
+          "37D": "Late loading - loaders from another flight"
+        },
+        "explanation": " "
+      },
+      "38": {
+        "abbreviation": "GP",
+        "meaning": "PUSH BACK, late arrival of push back tug, etc.",
+        "sub-code": " ",
+        "explanation": " "
+      },
+      "39": {
+        "abbreviation": "GA",
+        "meaning": "DE-ICING / ANTI-ICING",
+        "sub-code": " ",
+        "explanation": " "
+      }
+    },
+    "Technical and aircraft equipment": {
+      "41": {
+        "abbreviation": "TD",
+        "meaning":
+            "TECHNICAL DEFECT - Aircraft defects including items covered by MEL",
+        "sub-code": "41A",
+        "explanation": "Failures in aircraft system"
+      },
+      "42": {
+        "abbreviation": "TM",
+        "meaning": "SCHEDULED MAINTENANCE",
+        "sub-code": "42",
+        "explanation": "Late release from maintenance"
+      },
+      "43": {
+        "abbreviation": "TN",
+        "meaning":
+            "NON-SCHEDULED MAINTENANCE - Awaiting spare parts/engine change, etc.",
+        "sub-code": " ",
+        "explanation": " "
+      },
+      "44": {
+        "abbreviation": "TA",
+        "meaning": "AIRCRAFT CHANGE, for technical reasons",
+        "sub-code": " ",
+        "explanation": " "
+      },
+      "45": {
+        "abbreviation": "TC",
+        "meaning": "CLEANING OF AIRCRAFT, for technical reasons",
+        "sub-code": " ",
+        "explanation": " "
+      },
+      "46": {
+        "abbreviation": "TO",
+        "meaning": "TECHNICAL LOG, late completion, etc.",
+        "sub-code": " ",
+        "explanation": " "
+      },
+      "47": {
+        "abbreviation": "TS",
+        "meaning":
+            "SPECIAL FREIGHT REGULATIONS, dangerous goods, animals, etc.",
+        "sub-code": {
+          "47A": "Special load",
+          "47B": "Dangerous goods",
+          "47C": "Animals"
+        },
+        "explanation": " "
+      },
+      "48": {
+        "abbreviation": "TR",
+        "meaning":
+            "ARRIVAL WITH TECHNICAL PROBLEMS - Defects reported after landing. Technical short delay",
+        "sub-code": " ",
+        "explanation": " "
+      },
+      "49": {
+        "abbreviation": "TT",
+        "meaning":
+            "TECHNICAL PROBLEMS WITH PREVIOUS AIRCRAFT - Technical defects leading to aircraft change/delay on next flight",
+        "sub-code": " ",
+        "explanation": " "
+      }
+    },
+    "Damage to aircraft": {
+      "51": {
+        "abbreviation": "DA",
+        "meaning": "DAMAGE TO AIRCRAFT - Damage caused by own handling",
+        "sub-code": " ",
+        "explanation": " "
+      },
+      "52": {
+        "abbreviation": "DB",
+        "meaning": "BIRD STRIKE",
+        "sub-code": " ",
+        "explanation": " "
+      }
+    },
+    "EDP / Automated equipment failure": {
+      "55": {
+        "abbreviation": "ED",
+        "meaning": "EDP FAILURE",
+        "sub-code": "55A",
+        "explanation": "From Tunisian stations"
+      },
+      "56": {
+        "abbreviation": "EI",
+        "meaning": "AUTOMATED BAGGAGE/CARGO HANDLING SYSTEM, inoperative",
+        "sub-code": "56A",
+        "explanation": "From Tunisian stations"
+      },
+      "57": {
+        "abbreviation": "EF",
+        "meaning":
+            "OPS FLIGHT PLAN - Failure of automates flight plan systems (excluding ATC)",
+        "sub-code": "57",
+        "explanation": " "
+      },
+      "58": {
+        "abbreviation": "EO",
+        "meaning": "OTHER AUTOMATED EQUIPMENT FAILURE",
+        "sub-code": "58",
+        "explanation": "Other service provider systems"
+      }
+    },
+    "Flight operations and crewing": {
+      "61": {
+        "abbreviation": "FP",
+        "meaning":
+            "FLIGHT PLANS - late completion or change of flight documentation",
+        "sub-code": {
+          "61A": "Late fueling order (dispatch)",
+          "61B": "Late fueling order (pilots)",
+          "61C": "Complete change of flight documentation",
+          "61D": "Lack of/late ATC flight plan"
+        },
+        "explanation": " "
+      },
+      "62": {
+        "abbreviation": "FF",
+        "meaning":
+            "OPERATIONAL REQUIREMENTS - Late alteration to fuel or payload",
+        "sub-code": {
+          "62A": "Defueling on captain’s request",
+          "62B": "Extra fuel order"
+        },
+        "explanation": " "
+      },
+      "63": {
+        "abbreviation": "FT",
+        "meaning":
+            "LATE CREW BOARDING OR DEPARTURE PROCEDURES - Late flight deck or entire crew, other than stand-by ;late completion of flight deck crew checks",
+        "sub-code": {
+          "63A": "Late crew arrival at aircraft due to ground transport",
+          "63B": "Cabin crew shuttle late arrival",
+          "63C":
+              "Departure procedures in cockpit (special request not within operational requirements technical tolerance denial, fuelling for operational or economic reasons",
+          "63D": "Late cockpit crew arrival",
+          "63E": "Customs and police formalities (crew)",
+          "63F": "Late pick up crew (in the foreign station)"
+        },
+        "explanation": " "
+      },
+      "64": {
+        "abbreviation": "FS",
+        "meaning": "FLIGHT DECK CREW SHORTAGE",
+        "sub-code": {
+          "64A": "Sickness, disease",
+          "64B": "Awaiting standby / late crew",
+          "64C": "Flight time limitations",
+          "64D": "Late crew meals order",
+          "64E": "Visa, health documents",
+          "64F": "Scheduling / disposition errors",
+          "64G": "Regulating error",
+          "64H":
+              "Flight time limitation / sickness / pick-up, cockpit crew (leased aircraft)",
+          "64J": "Awaiting crew on proposal"
+        },
+        "explanation": " "
+      },
+      "65": {
+        "abbreviation": "FR",
+        "meaning":
+            "FLIGHT DECK CREW SPECIAL REQUEST, not within operational requirements",
+        "sub-code": {
+          "65A": "Catering order (captain’s request)",
+          "65B":
+              "Technical tolerance denial, excluding operational reason (refer to 41A)"
+        },
+        "explanation": " "
+      },
+      "66": {
+        "abbreviation": "FL",
+        "meaning":
+            "LATE CABIN CREW BOARDING OR DEPARTURE PROCEDURES, other than connection and stand-by",
+        "sub-code": {
+          "66A": "Late crew bus arrival (airport)",
+          "66B": "Late crew transportation (hotel)",
+          "66C": "Safety/security procedures",
+          "66D": "Late cabin crew positioning",
+          "66E": "Crew disembarkation",
+          "66F": "Police and customs formalities",
+          "66G": "Late free-shop crew member arrival"
+        },
+        "explanation": " "
+      },
+      "67": {
+        "abbreviation": "FC",
+        "meaning": "CABIN CREW SHORTAGE",
+        "sub-code": {
+          "67A": "Sickness, disease",
+          "67B": "Awaiting stand-by / late crew",
+          "67C": "Flight time limitations",
+          "67D": "Visa, health documents",
+          "67E": "Scheduling / disposition errors",
+          "67F": "Regulating error",
+          "67G":
+              "Flight time limitation / sickness / pick-up, cockpit (leased aircraft)",
+          "67H": "Late position"
+        },
+        "explanation": " "
+      },
+      "68": {
+        "abbreviation": "FI",
+        "meaning": "CABIN CREW, INDUSTRIAL ACTION",
+        "sub-code": " ",
+        "explanation": " "
+      },
+      "69": {
+        "abbreviation": "FV",
+        "meaning": "CABIN CREW, SICK PASSENGER",
+        "sub-code": " ",
+        "explanation": " "
+      }
+    },
+    "Weather": {
+      "71": {
+        "abbreviation": "WT",
+        "meaning":
+            "AIRCRAFT DE-ICING/ ANTI-ICING - Take-off delayed due to aircraft de-icing/anti-icing",
+        "sub-code": " ",
+        "explanation": " "
+      },
+      "72": {
+        "abbreviation": "WV",
+        "meaning":
+            "POOR VISIBILITY, below airport minima, fog, smoke, haze, dust, sandstorms",
+        "sub-code": " ",
+        "explanation": " "
+      },
+      "73": {
+        "abbreviation": "WS",
+        "meaning": "WINDSHEAR, wind gusts, strong crosswind, storm",
+        "sub-code": " ",
+        "explanation": " "
+      },
+      "74": {
+        "abbreviation": "WP",
+        "meaning": "PRECIPITATION, snow, hail, ice, heavy rain",
+        "sub-code": " ",
+        "explanation": " "
+      },
+      "75": {
+        "abbreviation": "WL",
+        "meaning": "THUNDERSTORM / LIGHTNING, hurricane",
+        "sub-code": " ",
+        "explanation": " "
+      },
+      "76": {
+        "abbreviation": "WC",
+        "meaning": "CLOUD, fog",
+        "sub-code": " ",
+        "explanation": " "
+      },
+      "77": {
+        "abbreviation": "WG",
+        "meaning": "HAIL",
+        "sub-code": " ",
+        "explanation": " "
+      },
+      "78": {
+        "abbreviation": "WH",
+        "meaning": "SANDSTORMS, DUSTSTORMS",
+        "sub-code": " ",
+        "explanation": " "
+      },
+      "79": {
+        "abbreviation": "WO",
+        "meaning": "OTHER METEOROLOGICAL CONDITIONS",
+        "sub-code": " ",
+        "explanation": " "
+      }
+    },
+    "Air Traffic Flow Management Restrictions": {
+      "81": {
+        "abbreviation": "AT",
+        "meaning": "ATC EN-ROUTE DEMAND",
+        "sub-code": "81",
+        "explanation": "Capacity problems"
+      },
+      "82": {
+        "abbreviation": "AX",
+        "meaning": "ATFM DUE TO ATC STAFF/EQUIPMENT EN-ROUTE",
+        "sub-code": {
+          "82A": "Industrial action",
+          "82B": "Staff shortage",
+          "82C": "Equipment shortage/failure"
+        },
+        "explanation": " "
+      },
+      "83": {
+        "abbreviation": "AE",
+        "meaning": "ATC AIRPORT DESTINATION",
+        "sub-code": {
+          "83A": "Runaway closed due to obstruction",
+          "83B": "Noise abatement",
+          "83C": "Industrial action",
+          "83D": "Previous events"
+        },
+        "explanation": " "
+      },
+      "84": {
+        "abbreviation": "AD",
+        "meaning": "ATFM DUE TO AIRPORT/RUNWAY CONDITIONS DESTINATION",
+        "sub-code": {"84A": "Runway closure", "84B": "Work in progress"},
+        "explanation": " "
+      }
+    },
+    "Airport and Governmental Authorities": {
+      "85": {
+        "abbreviation": "AP",
+        "meaning":
+            "AIRPORT AND/OR TERMINAL SERVICES, security, customs, health, bus service, baggage sorting system, etc.",
+        "sub-code": {"85A": "Industrial action", "85B": "Equipment failure"},
+        "explanation": " "
+      },
+      "86": {
+        "abbreviation": "AS",
+        "meaning":
+            "SECURITY - Security check of aircraft, passenger or baggage search",
+        "sub-code": {
+          "86A": "Security check on arrival",
+          "86B": "Security check on departure"
+        },
+        "explanation": " "
+      },
+      "87": {
+        "abbreviation": "AG",
+        "meaning": "AIRPORT AND/OR TERMINAL CONGESTION",
+        "sub-code": {
+          "87A": "Passenger congestion in terminal",
+          "87B": "Aircraft congestion on ramp/taxiways"
+        },
+        "explanation": " "
+      },
+      "88": {
+        "abbreviation": "AI",
+        "meaning":
+            "IMMIGRATION, CUSTOMS, HEALTH - Immigration, quarantine, customs and/or other governmental authorities",
+        "sub-code": {
+          "88A": "Police/customs formalities (passengers)",
+          "88B": "Health control (passengers)"
+        },
+        "explanation": " "
+      },
+      "89": {
+        "abbreviation": "AO",
+        "meaning":
+            "AIRPORT AND/OR RUNWAY CLOSED/INOPERATIVE - Due to accident, incident, bomb scare, etc.",
+        "sub-code": {
+          "89A": "Accident",
+          "89B": "Incident",
+          "89C": "Bomb scare",
+          "89D": "Airport and/or runaway closed due to obstruction",
+          "89E": "Traffic congestion"
+        },
+        "explanation": " "
+      }
+    },
+    "Reactionary": {
+      "91": {
+        "abbreviation": "RL",
+        "meaning": "LOAD CONNECTION, awaiting load from another flight",
+        "sub-code": {
+          "91A": "Passengers and baggage wait",
+          "91B": "Cargo and/or mail wait",
+          "91C": "Bag transit wait"
+        },
+        "explanation": " "
+      },
+      "92": {
+        "abbreviation": "RT",
+        "meaning":
+            "THROUGH CHECKING ERROR, passenger or baggage check-in error at originating station",
+        "sub-code": {
+          "92A": "Wrong passenger/baggage info from previous station",
+          "92B": "Too many pieces of hand baggage from previous flight"
+        },
+        "explanation": " "
+      },
+      "93": {
+        "abbreviation": "RA",
+        "meaning":
+            "AIRCRAFT ROTATION - Late arrival of aircraft due to late release from previous station. (Technical, operational or commercial delay on previous flight leg. Excludes knock-on effect of own delay.)",
+        "sub-code": " ",
+        "explanation": " "
+      },
+      "94": {
+        "abbreviation": "RD",
+        "meaning":
+            "DIVERSION - Aircraft of previous flight diverted and delay on this flight leg a consequence. Excludes knock-on effect of own delay.)",
+        "sub-code": " ",
+        "explanation": " "
+      },
+      "95": {
+        "abbreviation": "RC",
+        "meaning":
+            "CREW CONNECTION - Late arrival of crew due to delayed flight from previous station. Excludes knock-on effect of own delay.",
+        "sub-code": " ",
+        "explanation": " "
+      },
+      "96": {
+        "abbreviation": "RV",
+        "meaning":
+            "PASSENGERS AND/OR BAGGAGE, awaiting connecting flight from another airport",
+        "sub-code": " ",
+        "explanation": " "
+      },
+      "97": {
+        "abbreviation": "MI",
+        "meaning": "INDUSTRIAL ACTION WITHIN OWN AIRLINE",
+        "sub-code": {
+          "97A": "Dispatch strike",
+          "97B": "Maintenance strike",
+          "97C": "Ground handling strike",
+          "97D": "Crew’s strike",
+          "97E": "Refuelling companies strike",
+          "97F": "Cargo handling strike",
+          "97G": "IOCC's strike"
+        },
+        "explanation": " "
+      },
+      "98": {
+        "abbreviation": "MO",
+        "meaning": "INDUSTRIAL ACTION OUTSIDE OWN AIRLINE",
+        "sub-code": "98",
+        "explanation": "Industrial action (service providers)"
+      },
+      "99": {
+        "abbreviation": "MX",
+        "meaning": "MISCELLANEOUS - No suitable code",
+        "sub-code": "99",
+        "explanation":
+            "Any other case, reason must always be reported in plain text in SI element of MVT"
+      }
+    }
+  };
+*/
+}

+ 37 - 0
lib/fltinfo/view/datatable.dart.bak

@@ -0,0 +1,37 @@
+DataTable _createDataTable() {
+    return DataTable(
+      columns: _createColumns(),
+      rows: _createRows(),
+      sortColumnIndex: _currentSortColumn,
+      sortAscending: _isSortAsc,
+    );
+  }
+List<DataColumn> _createColumns() {
+    return [
+      DataColumn(
+        label: Text('ID'),
+        onSort: (columnIndex, _) {
+          setState(() {
+            _currentSortColumn = columnIndex;
+            if (_isSortAsc) {
+              _books.sort((a, b) => b['id'].compareTo(a['id']));
+            } else {
+              _books.sort((a, b) => a['id'].compareTo(b['id']));
+            }
+            _isSortAsc = !_isSortAsc;
+          });
+        },
+      ),
+      DataColumn(label: Text('Book')),
+      DataColumn(label: Text('Author'))
+    ];
+  }
+List<DataRow> _createRows() {
+    return _books
+        .map((book) => DataRow(cells: [
+              DataCell(Text('#' + book['id'].toString())),
+              DataCell(Text(book['title'])),
+              DataCell(Text(book['author']))
+            ]))
+        .toList();
+  }

+ 284 - 0
lib/fltinfo/view/dutyinfo_page.dart

@@ -0,0 +1,284 @@
+// ignore_for_file: unused_import
+
+import 'dart:developer';
+
+import 'package:collection/collection.dart';
+import 'package:flutter/foundation.dart';
+import 'package:flutter/material.dart';
+import 'package:flutter_riverpod/flutter_riverpod.dart';
+import 'package:gap/gap.dart';
+import 'package:go_router/go_router.dart';
+import 'package:google_fonts/google_fonts.dart';
+import 'package:jiffy/jiffy.dart';
+import 'package:linear_progress_bar/linear_progress_bar.dart';
+import 'package:tp5/core/core.dart';
+import 'package:tp5/csv/csv_data.dart';
+import 'package:tp5/csv/data.dart';
+import 'package:tp5/flightslist/w_flt.dart';
+import 'package:tp5/fltinfo/delaycodes.dart';
+import 'package:tp5/fltinfo/widget/w_cadre.dart';
+import 'package:tp5/ftl/widget/w_shadowbox.dart';
+import 'package:tp5/lido/lido_api.dart';
+import 'package:tp5/lido/model/Lidoapi_list.dart';
+import 'package:tp5/lido/model/Lidoapi_ofp.dart';
+import 'package:tp5/lido/w_lidoflt.dart';
+import 'package:tp5/pdf/pdf_page.dart';
+import 'package:tp5/roster/api/crewlink_api.dart';
+import 'package:tp5/roster/models/duty.dart';
+import 'package:tp5/roster/widgets/w_airport.dart';
+import 'package:tp5/roster/widgets/w_citypair.dart';
+import 'package:tp5/roster/widgets/w_crew.dart';
+import 'package:tp5/roster/widgets/w_day.dart';
+import 'package:tp5/roster/widgets/w_fnum.dart';
+import 'package:tp5/roster/widgets/w_hour.dart';
+import 'package:tp5/widgets/my_row.dart';
+
+class DutyinfoPage extends ConsumerStatefulWidget {
+  const DutyinfoPage({required this.params, super.key});
+  final DutyinfoParams params;
+
+  @override
+  ConsumerState<ConsumerStatefulWidget> createState() => _DutyinfoPageState();
+}
+
+class _DutyinfoPageState extends ConsumerState<DutyinfoPage> {
+  @override
+  void initState() {
+    Future.delayed(Duration.zero, () {
+      crewPnlegLoad();
+    });
+    super.initState();
+  }
+
+  // List crew = [];
+
+  Jiffy _now = Jiffy.now().toUtc();
+
+  @override
+  Widget build(BuildContext context) {
+    final data = ref.watch(dataProvider);
+    //final pnleg = data.pnleg;
+    // final _dateNotifiedcrew = data.pnlegupdate;
+
+    _now = ref.watch(clockProvider);
+
+    //final qualif = ref.watch(dataProvider).qualif;
+
+    return Scaffold(
+      appBar: AppBar(
+        title: MyRow(
+          // mainAxisAlignment: MainAxisAlignment.spaceBetween,
+          children: [
+            Text(
+                '${widget.params.dutytype ?? ""} ${widget.params.label} ${widget.params.dep}${widget.params.des != null ? "-${widget.params.des}" : ""}'),
+            const Gap(10),
+            Text(widget.params.jdep!.format(pattern: "EEE ddMMM'yy"),
+                style: const TextStyle(fontSize: 12)),
+          ],
+        ),
+        leading: IconButton(
+          icon: const Icon(Icons.arrow_back),
+          onPressed: () {
+            context.pop(context);
+          },
+        ),
+        actions: [
+          Text(
+            '${widget.params.dutytype ?? "Duty"} info',
+            style: TextStyle(
+                fontSize: 12,
+                fontWeight: FontWeight.w700,
+                color: Colors.yellow),
+          ),
+          Gap(10)
+        ],
+      ),
+      body: ListView(
+        padding: const EdgeInsets.all(5),
+        children: [
+          WCadre(
+            child: Column(
+              children: [
+                WDay(date: widget.params.jdep!),
+                Row(
+                  mainAxisAlignment: MainAxisAlignment.center,
+                  mainAxisSize: MainAxisSize.max,
+                  children: [
+                    if (widget.params.des != null)
+                      WCitypair(
+                          iata1: "${widget.params.dep}",
+                          iata2: widget.params.des ?? "---")
+                    else
+                      WAirport(iata: widget.params.dep ?? "---"),
+                  ],
+                ),
+                Row(
+                    mainAxisAlignment: MainAxisAlignment.center,
+                    mainAxisSize: MainAxisSize.max,
+                    children: [
+                      WHour(jiffy: widget.params.jdep!),
+                      if (widget.params.jdes != null) ...[
+                        const Gap(20),
+                        WHour(jiffy: widget.params.jdes!)
+                      ],
+                    ]),
+                const Gap(10)
+              ],
+            ),
+          ),
+          const Gap(20),
+          _notifiedCrew(),
+        ],
+      ),
+    );
+  }
+
+  Jiffy? _dateNotifiedcrew;
+
+  static List<Pnleg> filterPnleg(Map data) {
+    final List<Pnleg> pnleg = data["pnleg"];
+    final DutyinfoParams filter = data["filter"];
+    return pnleg
+        .where((leg) => ((filter.jdep == null || leg.jdep == filter.jdep) &&
+            (filter.jdes == null || leg.jarr == filter.jdes) &&
+            (filter.dep == null || leg.dep == filter.dep) &&
+            (filter.des == null || leg.arr == filter.des) &&
+            (filter.label == null || leg.label == filter.label) &&
+            (filter.dutytype == null || leg.dutytype == filter.dutytype)))
+        .toList();
+  }
+
+  List<Pnleg> crewPnleg = [];
+  bool crewPnlegLoading = false;
+  crewPnlegLoad() async {
+    crewPnlegLoading = true;
+
+    setState(() {});
+    final data = ref.watch(dataProvider);
+    final pnleg = data.pnleg;
+    _dateNotifiedcrew = data.pnlegupdate;
+
+    crewPnleg =
+        await compute(filterPnleg, {"pnleg": pnleg, "filter": widget.params});
+    crewPnlegLoading = false;
+    setState(() {});
+  }
+
+  _notifiedCrew() {
+    final qualif = ref.watch(qualifProvider(CrewFilter()));
+    // final crewPnleg = pnleg.where((leg) =>
+    //     ((widget.params.jdep == null || leg.jdep == widget.params.jdep) &&
+    //         (widget.params.jdes == null || leg.jarr == widget.params.jdes) &&
+    //         (widget.params.dep == null || leg.dep == widget.params.dep) &&
+    //         (widget.params.des == null || leg.arr == widget.params.des) &&
+    //         (widget.params.label == null || leg.label == widget.params.label) &&
+    //         (widget.params.dutytype == null ||
+    //             leg.dutytype == widget.params.dutytype)));
+
+    return WCadre(
+      titleright: crewPnlegLoading
+          ? Padding(
+              padding: const EdgeInsets.all(5.0),
+              child: CircularProgressIndicator(),
+            )
+          : null,
+      title: "Notified Crew (alt)",
+      bottomright: _dateNotifiedcrew != null
+          ? Text("data retrieved ${_dateNotifiedcrew?.from(_now)}",
+              style: GoogleFonts.robotoMono(
+                  fontSize: 10, fontWeight: FontWeight.w300))
+          : null,
+      child: crewPnleg.isEmpty
+          ? const Text("No Flights found !")
+          : Column(
+              children: [
+                Padding(
+                  padding: const EdgeInsets.all(8.0),
+                  child: Column(
+                      children: crewPnleg
+                          .mapIndexed((int i, leg) => {
+                                "index": i,
+                                "college": (["F", ""].contains(leg.type))
+                                    ? "DH"
+                                    : (qualif
+                                            .firstWhereOrNull((e) =>
+                                                (e.tlc == leg.tlc) &&
+                                                (e.ac == leg.actype))
+                                            ?.college ??
+                                        qualif
+                                            .firstWhereOrNull(
+                                                (e) => e.tlc == leg.tlc)
+                                            ?.college ??
+                                        "--")
+                              })
+                          .sortedByCompare(
+                              (e) => e["college"].toString(), collegeSort)
+                          .map<Widget>((e) {
+                    final x = crewPnleg.elementAt(e["index"] as int);
+                    final pn = qualif.firstWhereOrNull((e) => e.tlc == x.tlc);
+                    return WCrew(
+                      college: pn?.college,
+                      mle: x.tlc,
+                      base: pn?.base,
+                      name: "${pn?.lname}, ${pn?.fname}",
+                    );
+                  }).toList()),
+                )
+
+                // Padding(
+                //   padding: const EdgeInsets.all(8.0),
+                //   child: Column(
+                //       children: crewPnleg[
+                //               crewPnleg.keys.elementAt(crewPosPnleg)]!
+                //           .map<Widget>((x) {
+                //     final pn =
+                //         qualif.firstWhereOrNull((e) => e.tlc == x.tlc);
+                //     return WCrew(
+                //       college: pn?.college,
+                //       mle: x.tlc,
+                //       base: pn?.base,
+                //       name: "${pn?.lname}, ${pn?.fname}",
+                //     );
+                //   }).toList()),
+                // )
+              ],
+            ),
+    );
+  }
+}
+
+class DutyinfoParams {
+  const DutyinfoParams({
+    this.date,
+    this.start,
+    this.end,
+    this.label,
+    this.dutytype,
+    this.jdep,
+    this.jdes,
+    this.dep,
+    this.des,
+  });
+
+  final Jiffy? start;
+  final Jiffy? end;
+  final String? date;
+  final String? label;
+  final String? dutytype;
+  final Jiffy? jdep;
+  final Jiffy? jdes;
+  final String? dep;
+  final String? des;
+}
+
+int collegeSort(String a, String b) {
+  // Define the order based on your requirements
+  final order = ['CP', 'FO', 'PU', 'SE', 'ST', 'JU'];
+
+  // Get the index of each element in the order list
+  final indexA = order.indexOf(a);
+  final indexB = order.indexOf(b);
+
+  // Compare based on the index
+  return indexA.compareTo(indexB);
+}

+ 831 - 0
lib/fltinfo/view/fltinfo_page.dart

@@ -0,0 +1,831 @@
+// ignore_for_file: unused_import
+
+import 'dart:developer';
+
+import 'package:collection/collection.dart';
+import 'package:flutter/material.dart';
+import 'package:flutter_riverpod/flutter_riverpod.dart';
+import 'package:gap/gap.dart';
+import 'package:go_router/go_router.dart';
+import 'package:google_fonts/google_fonts.dart';
+import 'package:jiffy/jiffy.dart';
+import 'package:tp5/core/core.dart';
+import 'package:tp5/csv/csv_data.dart';
+import 'package:tp5/csv/data.dart';
+import 'package:tp5/flightslist/w_flt.dart';
+import 'package:tp5/fltinfo/delaycodes.dart';
+import 'package:tp5/fltinfo/widget/w_cadre.dart';
+import 'package:tp5/ftl/widget/w_shadowbox.dart';
+import 'package:tp5/lido/lido_api.dart';
+import 'package:tp5/lido/model/Lidoapi_list.dart';
+import 'package:tp5/lido/model/Lidoapi_ofp.dart';
+import 'package:tp5/lido/w_lidoflt.dart';
+import 'package:tp5/pdf/pdf_page.dart';
+import 'package:tp5/roster/api/crewlink_api.dart';
+import 'package:tp5/roster/models/duty.dart';
+import 'package:tp5/roster/widgets/w_citypair.dart';
+import 'package:tp5/roster/widgets/w_crew.dart';
+import 'package:tp5/roster/widgets/w_day.dart';
+import 'package:tp5/roster/widgets/w_fnum.dart';
+import 'package:tp5/roster/widgets/w_hour.dart';
+import 'package:tp5/widgets/my_row.dart';
+
+class FltinfoPage extends ConsumerStatefulWidget {
+  const FltinfoPage({required this.params, super.key});
+  final FltinfoParams params;
+
+  @override
+  ConsumerState<ConsumerStatefulWidget> createState() => _FltinfoPageState();
+}
+
+class _FltinfoPageState extends ConsumerState<FltinfoPage> {
+  @override
+  void initState() {
+    Future.delayed(Duration.zero).then(
+      (v) async {
+        _loadCrewFromCrewlink();
+        _loadOfpFromLido();
+      },
+    );
+    super.initState();
+  }
+
+  bool showNotifCrew = true;
+  bool showAllLegs = false;
+
+  bool _loadingCrew = false;
+  List crew = [];
+  int _crewPos = 0;
+  Map<String, List<Pnleg>> crewPnleg = {};
+  int crewPosPnleg = 0;
+
+  int _legPos = 0;
+
+  bool _loadingOFP = false;
+
+  Jiffy _now = Jiffy.now().toUtc();
+
+  _loadCrewFromCrewlink() async {
+    setState(() {
+      _loadingCrew = true;
+    });
+    final res = await ref.read(crewlinkapiProvider).showCrew(
+        crewlist: true,
+        start: widget.params.jdep?.format(pattern: "ddMMMyy") ?? "",
+        end: widget.params.jdes?.format(pattern: "ddMMMyy") ?? "",
+        al: widget.params.al ?? "",
+        fnum: widget.params.fnum ?? "",
+        dep: widget.params.dep ?? "",
+        des: widget.params.des ?? "");
+    crew = res?["data"]?["leglist"] ?? [];
+    if (crew.isNotEmpty) _dateCrewbox = Jiffy.now().toUtc();
+    //print(_crewList);
+    setState(() {
+      _loadingCrew = false;
+      showNotifCrew = crew.isEmpty;
+    });
+  }
+
+  bool _loadingLido = false;
+  List<LidoapiList> lido = [];
+  int _lidoPos = 0;
+  //Map<String, List<LidoapiList>> lidoOfps = {};
+
+  _loadOfpFromLido() async {
+    setState(() {
+      _loadingLido = true;
+    });
+    final res = await ref.read(lidoapiProvider).list(
+        start: widget.params.jdep?.subtract(hours: 7),
+        end: widget.params.jdes?.add(hours: 7),
+        al: widget.params.al ?? "",
+        fnum: widget.params.fnum ?? "",
+        dep: widget.params.dep ?? "",
+        des: widget.params.des ?? "");
+    if ((res["error"] == null && res["data"] is List) ||
+        (res["cache"] != null && (res["cache"]?["data"]) is List)) {
+      _dateLido = Jiffy.now().toUtc();
+      lido.clear();
+      for (var e in (res["cache"]?["data"]) ?? res["data"] ?? []) {
+        //print(e);
+        lido.add(LidoapiList.fromJson(e));
+      }
+    }
+    //print(lido);
+    setState(() {
+      _loadingLido = false;
+    });
+  }
+
+  _titleInfo(String? title, String? info,
+          {double sizetitle = 10,
+          double sizeinfo = 16,
+          Color color = Colors.blueGrey,
+          bool bold = false}) =>
+      Column(
+        children: [
+          Text(
+            title ?? "---",
+            style: TextStyle(color: Colors.grey, fontSize: sizetitle),
+          ),
+          Text(info ?? "---",
+              style: TextStyle(
+                  color: color,
+                  fontSize: sizeinfo,
+                  fontWeight: bold ? FontWeight.bold : null)),
+        ],
+      );
+
+  @override
+  Widget build(BuildContext context) {
+    final data = ref.watch(dataProvider);
+    _dateAclegs = data.aclegupdate;
+    _dateNotifiedcrew = data.pnlegupdate;
+
+    _now = ref.watch(clockProvider);
+
+    final pnlegs = ref
+        .watch(pnlegProvider(FlightFilter(
+          dep: widget.params.dep,
+          arr: widget.params.des,
+          al: widget.params.al,
+          fnum: widget.params.fnum,
+          jdep: widget.params.jdep,
+          jarr: widget.params.jdes,
+        )))
+        .groupListsBy((Pnleg x) =>
+            "${x.al} ${x.fnum} ${x.jdep?.format(pattern: "ddMMMyy")} ${x.dep} ${x.deptime} ${x.arrtime} ${x.arr}");
+
+    //final qualif = ref.watch(dataProvider).qualif;
+
+    crewPnleg = pnlegs;
+
+    return Scaffold(
+      appBar: AppBar(
+        title: MyRow(
+          // mainAxisAlignment: MainAxisAlignment.spaceBetween,
+          children: [
+            Text(
+                '${widget.params.al}${widget.params.fnum} ${widget.params.dep}-${widget.params.des}'),
+            const Gap(10),
+            Text(widget.params.jdep!.format(pattern: "EEE ddMMM'yy"),
+                style: const TextStyle(fontSize: 12)),
+          ],
+        ),
+        leading: IconButton(
+          icon: const Icon(Icons.arrow_back),
+          onPressed: () {
+            context.pop(context);
+          },
+        ),
+        actions: const [
+          Text(
+            'Flight info',
+            style: TextStyle(
+                fontSize: 12,
+                fontWeight: FontWeight.w700,
+                color: Colors.yellow),
+          ),
+          Gap(10)
+        ],
+      ),
+      body: ListView(
+        padding: const EdgeInsets.all(5),
+        children: [
+          WCadre(
+            child: Column(
+              children: [
+                WDay(date: widget.params.jdep!),
+                WFnum(al: "${widget.params.al}", fnum: "${widget.params.fnum}"),
+                Row(
+                  mainAxisAlignment: MainAxisAlignment.center,
+                  mainAxisSize: MainAxisSize.max,
+                  children: [
+                    WCitypair(
+                        iata1: "${widget.params.dep}",
+                        iata2: widget.params.des ?? "---"),
+                  ],
+                ),
+                Row(
+                    mainAxisAlignment: MainAxisAlignment.center,
+                    mainAxisSize: MainAxisSize.max,
+                    children: [
+                      WHour(jiffy: widget.params.jdep!),
+                      if (widget.params.jdes != null) ...[
+                        const Gap(20),
+                        WHour(jiffy: widget.params.jdes!)
+                      ],
+                    ]),
+                const Gap(10)
+              ],
+            ),
+          ),
+          const Gap(20),
+          _crewBox(),
+          const Gap(20),
+          _notifiedCrew(),
+          const Gap(20),
+          _acStatus(),
+          const Gap(20),
+          _acLegs(),
+          const Gap(20),
+          _lidoBox(),
+          const Gap(20),
+          TextButton(
+              onPressed: () async {
+                await ref.read(dataProvider.notifier).loadPnlegsmois();
+              },
+              child: const Text("upd"))
+        ],
+      ),
+    );
+  }
+
+  Jiffy? _dateCrewbox;
+  _crewBox() {
+    return WCadre(
+      title: "Crew",
+      titleright: _loadingCrew
+          ? const SizedBox.square(
+              dimension: 20,
+              child: CircularProgressIndicator(),
+            )
+          : ElevatedButton.icon(
+              label: const Text("Update", style: TextStyle(fontSize: 9)),
+              onPressed: () async {
+                await _loadCrewFromCrewlink();
+              },
+              icon: const Icon(Icons.update)),
+      bottomright: _dateCrewbox != null
+          ? Text("data retrieved ${_dateCrewbox?.from(_now)}",
+              style: GoogleFonts.robotoMono(
+                  fontSize: 10, fontWeight: FontWeight.w300))
+          : null,
+      child: crew.isEmpty
+          ? const Text("No Flights found on Crewlink!")
+          : Column(
+              children: [
+                Column(children: [
+                  if (crew.length > 1)
+                    Row(mainAxisSize: MainAxisSize.min, children: [
+                      IconButton(
+                          iconSize: 30,
+                          onPressed: () {
+                            _crewPos =
+                                (_crewPos - 1 < 0 ? _crewPos : _crewPos - 1);
+                            setState(() {});
+                          },
+                          icon: const Icon(Icons.arrow_left)),
+                      Text("Flt ${_crewPos + 1} / ${crew.length}"),
+                      IconButton(
+                          iconSize: 30,
+                          onPressed: () {
+                            _crewPos = (_crewPos + 1 >= crew.length
+                                ? _crewPos
+                                : _crewPos + 1);
+                            setState(() {});
+                          },
+                          icon: const Icon(Icons.arrow_right))
+                    ]),
+                  Row(
+                    mainAxisSize: MainAxisSize.min,
+                    children: [
+                      Text(
+                          "${crew[_crewPos][1]} ${crew[_crewPos][2]} ${crew[_crewPos][3]} ${crew[_crewPos][4]} ${crew[_crewPos][5]} ${crew[_crewPos][6]}"),
+                    ],
+                  )
+                ]),
+                Padding(
+                  padding: const EdgeInsets.all(8.0),
+                  child: Column(
+                      children: crew[_crewPos][8]
+                          .map<Widget>((x) => WCrew(
+                                college: x[1],
+                                mle: x[0],
+                                base: x[3],
+                                name: x[5],
+                              ))
+                          .toList()),
+                )
+              ],
+            ),
+    );
+  }
+
+  Jiffy? _dateNotifiedcrew;
+  _notifiedCrew() {
+    final qualif = ref.watch(qualifProvider(CrewFilter()));
+    // final data = ref.watch(dataProvider);
+
+    return WCadre(
+      title: "Notified Crew (alt)",
+      titleright: IconButton(
+          onPressed: () => setState(() {
+                showNotifCrew = !showNotifCrew;
+              }),
+          icon: showNotifCrew
+              ? const Icon(Icons.visibility)
+              : const Icon(Icons.visibility_off)),
+      bottomright: _dateNotifiedcrew != null
+          ? Text("data retrieved ${_dateNotifiedcrew?.from(_now)}",
+              style: GoogleFonts.robotoMono(
+                  fontSize: 10, fontWeight: FontWeight.w300))
+          : null,
+      child: crewPnleg.isEmpty
+          ? const Text("No Flights found !")
+          : !showNotifCrew
+              ? TextButton(
+                  onPressed: () {
+                    showNotifCrew = true;
+                    setState(() {});
+                  },
+                  child: const Text("Tap to show"))
+              : Column(
+                  children: [
+                    Column(children: [
+                      if (crewPnleg.length > 1)
+                        Row(mainAxisSize: MainAxisSize.min, children: [
+                          IconButton(
+                              iconSize: 30,
+                              onPressed: () {
+                                crewPosPnleg = (crewPosPnleg - 1 < 0
+                                    ? crewPosPnleg
+                                    : crewPosPnleg - 1);
+                                setState(() {});
+                              },
+                              icon: const Icon(Icons.arrow_left)),
+                          Text(
+                              "Flt ${crewPosPnleg + 1} / ${crewPnleg.keys.length}"),
+                          IconButton(
+                              iconSize: 30,
+                              onPressed: () {
+                                crewPosPnleg =
+                                    (crewPosPnleg + 1 >= crewPnleg.keys.length
+                                        ? crewPosPnleg
+                                        : crewPosPnleg + 1);
+                                setState(() {});
+                              },
+                              icon: const Icon(Icons.arrow_right))
+                        ]),
+                      Row(
+                        mainAxisSize: MainAxisSize.min,
+                        children: [
+                          Text(crewPnleg.keys.elementAt(crewPosPnleg)),
+                        ],
+                      )
+                    ]),
+                    Padding(
+                      padding: const EdgeInsets.all(8.0),
+                      child: Column(
+                          children: crewPnleg[
+                                  crewPnleg.keys.elementAt(crewPosPnleg)]!
+                              .mapIndexed((int i, leg) => {
+                                    "index": i,
+                                    "college": (["F", ""].contains(leg.type))
+                                        ? "DH"
+                                        : (qualif
+                                                .firstWhereOrNull((e) =>
+                                                    (e.tlc == leg.tlc) &&
+                                                    (e.ac == leg.actype))
+                                                ?.college ??
+                                            qualif
+                                                .firstWhereOrNull(
+                                                    (e) => e.tlc == leg.tlc)
+                                                ?.college ??
+                                            "--")
+                                  })
+                              .sortedByCompare(
+                                  (e) => e["college"].toString(), collegeSort)
+                              .map<Widget>((e) {
+                        final x =
+                            crewPnleg[crewPnleg.keys.elementAt(crewPosPnleg)]!
+                                .elementAt(e["index"] as int);
+                        final pn =
+                            qualif.firstWhereOrNull((e) => e.tlc == x.tlc);
+                        return WCrew(
+                          college: pn?.college,
+                          mle: x.tlc,
+                          base: pn?.base,
+                          name: "${pn?.lname}, ${pn?.fname}",
+                        );
+                      }).toList()),
+                    )
+
+                    // Padding(
+                    //   padding: const EdgeInsets.all(8.0),
+                    //   child: Column(
+                    //       children: crewPnleg[
+                    //               crewPnleg.keys.elementAt(crewPosPnleg)]!
+                    //           .map<Widget>((x) {
+                    //     final pn =
+                    //         qualif.firstWhereOrNull((e) => e.tlc == x.tlc);
+                    //     return WCrew(
+                    //       college: pn?.college,
+                    //       mle: x.tlc,
+                    //       base: pn?.base,
+                    //       name: "${pn?.lname}, ${pn?.fname}",
+                    //     );
+                    //   }).toList()),
+                    // )
+                  ],
+                ),
+    );
+  }
+
+  Jiffy? _dateAclegs;
+  _acStatus() {
+    final acleg = ref.watch(aclegProvider(FlightFilter(
+      dep: widget.params.dep,
+      arr: widget.params.des,
+      al: widget.params.al,
+      fnum: widget.params.fnum,
+      jdep: widget.params.jdep,
+      jarr: widget.params.jdes,
+    )));
+
+    return WCadre(
+      title: "Aircraft & status",
+      bottomright: _dateAclegs != null
+          ? Text("data retrieved ${_dateAclegs?.from(_now)}",
+              style: GoogleFonts.robotoMono(
+                  fontSize: 10, fontWeight: FontWeight.w300))
+          : null,
+      child: acleg.isEmpty
+          ? const Text("No data found !")
+          : Column(
+              children: [
+                Column(children: [
+                  if (acleg.length > 1)
+                    Row(mainAxisSize: MainAxisSize.min, children: [
+                      IconButton(
+                          iconSize: 30,
+                          onPressed: () {
+                            _legPos = (_legPos - 1 < 0 ? _legPos : _legPos - 1);
+                            setState(() {});
+                          },
+                          icon: const Icon(Icons.arrow_left)),
+                      Text("Flt ${_legPos + 1} / ${acleg.length}"),
+                      IconButton(
+                          iconSize: 30,
+                          onPressed: () {
+                            _legPos = (_legPos + 1 >= acleg.length
+                                ? _legPos
+                                : _legPos + 1);
+                            setState(() {});
+                          },
+                          icon: const Icon(Icons.arrow_right))
+                    ]),
+                  Row(
+                    mainAxisSize: MainAxisSize.min,
+                    children: [
+                      Text(
+                          "${acleg[_legPos].FN_CARRIER} ${acleg[_legPos].FN_NUMBER} ${acleg[_legPos].jdep?.format(pattern: "ddMMMyy")} ${acleg[_legPos].DEP_AP_ACTUAL} ${acleg[_legPos].jdep?.format(pattern: "HHmm")} ${acleg[_legPos].jarr?.format(pattern: "HHmm")} ${acleg[_legPos].ARR_AP_ACTUAL}"),
+                    ],
+                  )
+                ]),
+                Padding(
+                  padding: const EdgeInsets.all(8.0),
+                  child: Column(children: [
+                    SingleChildScrollView(
+                      scrollDirection: Axis.horizontal,
+                      child: Row(
+                        children: [
+                          _titleInfo("Reg", acleg[_legPos].AC_REGISTRATION,
+                              color: Colors.amber, bold: true),
+                          const Gap(20),
+                          _titleInfo("AC Type", acleg[_legPos].AC_SUBTYPE,
+                              sizeinfo: 14),
+                          const Gap(20),
+                          _titleInfo("Owner", acleg[_legPos].AC_OWNER),
+                          const Gap(50),
+                          _titleInfo("Version", acleg[_legPos].AC_VERSION,
+                              sizeinfo: 11),
+                          const Gap(20),
+                          _titleInfo("Booking", acleg[_legPos].pax_booked,
+                              color: Colors.white, bold: false),
+                          if (acleg[_legPos].pad_booked != null) ...[
+                            const Gap(20),
+                            _titleInfo("PAD", acleg[_legPos].pad_booked)
+                          ],
+                        ],
+                      ),
+                    ),
+                    const Gap(10),
+                    MyRow(
+                      children: [
+                        _titleInfo("Schedule",
+                            "${acleg[_legPos].jdepsched?.format(pattern: "ddMMM HH:mm")}-${acleg[_legPos].jarrsched?.format(pattern: "HH:mm")}",
+                            color: Colors.green[600]!,
+                            sizeinfo: 14,
+                            bold: true),
+                        const Gap(50),
+                        _titleInfo("actual/estimate dep/arr",
+                            "${acleg[_legPos].jdep?.format(pattern: "ddMMM HH:mm")}-${acleg[_legPos].jarr?.format(pattern: "HH:mm")}",
+                            color: Colors.cyan[600]!, sizeinfo: 14, bold: true),
+                      ],
+                    ),
+                    const Gap(10),
+                    MyRow(
+                      children: [
+                        _titleInfo("status", acleg[_legPos].flt_status,
+                            bold: true, sizeinfo: 14, color: Colors.yellow),
+                        if (acleg[_legPos].slot != null) ...[
+                          const Gap(50),
+                          _titleInfo("CTOT",
+                              "${(acleg[_legPos].slot?.year == 1970) ? "Cancel" : acleg[_legPos].slot?.format(pattern: "HH:mm")}",
+                              color: Colors.amber),
+                        ],
+                        if (acleg[_legPos].eet != null) ...[
+                          const Gap(50),
+                          _titleInfo("EET", "${acleg[_legPos].eet?.tohhmm}",
+                              sizetitle: 14, color: Colors.amber[900]!),
+                        ],
+                      ],
+                    ),
+                    if (acleg[_legPos].blocks.nonNulls.isNotEmpty)
+                      MyRow(children: [
+                        _titleInfo(
+                            "blocks",
+                            acleg[_legPos]
+                                .blocks
+                                .map((x) => x?.Hm ?? "----")
+                                .fold("", (t, e) => t == "" ? e : "$t , $e"),
+                            color: Colors.indigo,
+                            sizeinfo: 14,
+                            bold: true),
+                      ]),
+                    const Gap(10),
+                    if (((acleg[_legPos]).dla).any((e) => e[0] != null))
+                      Row(
+                        children: [
+                          Column(
+                            crossAxisAlignment: CrossAxisAlignment.start,
+                            children: [
+                              const Row(
+                                children: [
+                                  Text("Delay Codes:"),
+                                ],
+                              ),
+                              ...((acleg[_legPos]).dla).map((d) => Column(
+                                    children: [
+                                      Row(
+                                          crossAxisAlignment:
+                                              CrossAxisAlignment.start,
+                                          children: [
+                                            Text(
+                                              "DLA${d[0]}",
+                                              style: const TextStyle(
+                                                  fontWeight: FontWeight.w600),
+                                            ),
+                                            const Gap(10),
+                                            Text(
+                                                (d[1] as Duration?)?.tohhmm ??
+                                                    "--:--",
+                                                style: GoogleFonts.robotoMono(
+                                                    color: Colors.grey,
+                                                    fontSize: 12,
+                                                    fontWeight:
+                                                        FontWeight.w300)),
+                                            const Gap(10),
+                                            SizedBox(
+                                              width: 200,
+                                              child: Text(
+                                                (Delaycodes.exp(d[0]) ?? "???")
+                                                    .toLowerCase()
+                                                    .capitalize(),
+                                                style: const TextStyle(
+                                                    fontSize: 11),
+                                              ),
+                                            )
+                                          ]),
+                                      const Gap(20)
+                                    ],
+                                  ))
+                            ],
+                          ),
+                        ],
+                      ),
+                  ]),
+                )
+              ],
+            ),
+    );
+  }
+
+  _acLegs() {
+    final acleg = ref.watch(aclegProvider(FlightFilter(
+      dep: widget.params.dep,
+      arr: widget.params.des,
+      al: widget.params.al,
+      fnum: widget.params.fnum,
+      jdep: widget.params.jdep,
+      jarr: widget.params.jdes,
+    )));
+    final aclegs = acleg.isEmpty
+        ? <Acleg>[]
+        : ref.watch(aclegProvider(FlightFilter(
+            reg: acleg.isEmpty ? null : acleg.first.AC_REGISTRATION)));
+
+    return WCadre(
+      height: aclegs.isEmpty ? null : 350,
+      title: "Aircraft legs",
+      bottomright: _dateAclegs != null
+          ? Text("data retrieved ${_dateAclegs?.from(_now)}",
+              style: GoogleFonts.robotoMono(
+                  fontSize: 10, fontWeight: FontWeight.w300))
+          : null,
+      child: aclegs.isEmpty
+          ? const Text("No leg found !")
+          :
+          // SingleChildScrollView(
+          //     scrollDirection: Axis.horizontal,
+          //     child:
+          Column(
+              children: [
+                if (!showAllLegs)
+                  TextButton(
+                      onPressed: () => setState(() {
+                            showAllLegs = true;
+                          }),
+                      child: const Text("Show all legs")),
+                ...aclegs
+                    .whereIndexed((i, leg) =>
+                        showAllLegs ||
+                        (i >= aclegs.indexOf(acleg.firstOrNull ?? Acleg()) - 3))
+                    .map((Acleg x) => InkWell(
+                          onTap: () => context.pushReplacement("/fltinfo",
+                              extra: FltinfoParams(
+                                al: x.FN_CARRIER,
+                                fnum: x.FN_NUMBER,
+                                jdep: x.jdep,
+                                jdes: x.jarr,
+                                dep: x.DEP_AP_ACTUAL,
+                                des: x.ARR_AP_SCHED,
+                              )),
+                          child: WFlt(
+                            acleg: x,
+                            hide: const ["actype"],
+                            highlight: acleg.firstOrNull == x,
+                          ),
+                        ))
+              ],
+              // ),
+            ),
+    );
+  }
+
+  Jiffy? _dateLido;
+  _lidoBox() {
+    final lidoactivated = ref.watch(lidoapiProvider).credSaved();
+    return WCadre(
+      title: "Lido OFP",
+      titleright: _loadingLido
+          ? const SizedBox.square(
+              dimension: 20,
+              child: CircularProgressIndicator(),
+            )
+          : ElevatedButton.icon(
+              label: const Text("Update", style: TextStyle(fontSize: 9)),
+              onPressed: () async {
+                await _loadOfpFromLido();
+              },
+              icon: const Icon(Icons.update)),
+      bottomright: _dateLido != null
+          ? Text("data retrieved ${_dateLido?.from(_now)}",
+              style: GoogleFonts.robotoMono(
+                  fontSize: 10, fontWeight: FontWeight.w300))
+          : null,
+      child: lido.isEmpty
+          ? (lidoactivated
+              ? const Text("No OFPs found on lido!")
+              : ElevatedButton.icon(
+                  label: const Text("Activate Lido",
+                      style: TextStyle(fontSize: 9)),
+                  onPressed: () {
+                    context.push("/lido/settings");
+                  },
+                  icon: const Icon(Icons.update)))
+          : Column(
+              children: [
+                Column(children: [
+                  if (lido.length > 1)
+                    Row(mainAxisSize: MainAxisSize.min, children: [
+                      IconButton(
+                          iconSize: 30,
+                          onPressed: () {
+                            _lidoPos =
+                                (_lidoPos - 1 < 0 ? _lidoPos : _lidoPos - 1);
+                            setState(() {});
+                          },
+                          icon: const Icon(Icons.arrow_left)),
+                      Text("Flt ${_lidoPos + 1} / ${lido.length}"),
+                      IconButton(
+                          iconSize: 30,
+                          onPressed: () {
+                            _lidoPos = (_lidoPos + 1 >= lido.length
+                                ? _lidoPos
+                                : _lidoPos + 1);
+                            setState(() {});
+                          },
+                          icon: const Icon(Icons.arrow_right))
+                    ]),
+                  Row(
+                    mainAxisSize: MainAxisSize.min,
+                    children: [
+                      Text(
+                          "${lido[_lidoPos].leg?.aircraftOperatorIata} ${lido[_lidoPos].leg?.flightNumber} ${Jiffy.parseFromMillisecondsSinceEpoch(lido[_lidoPos].leg?.estimatedDepartureTime ?? 0).format(pattern: "ddMMMyy")} ${lido[_lidoPos].leg?.departureAirport} ${Jiffy.parseFromMillisecondsSinceEpoch(lido[_lidoPos].leg?.estimatedDepartureTime ?? 0).Hm} ${Jiffy.parseFromMillisecondsSinceEpoch(lido[_lidoPos].leg?.estimatedTimeOfArrival ?? 0).Hm} ${lido[_lidoPos].leg?.destinationAirport}"),
+                    ],
+                  )
+                ]),
+                Padding(
+                  padding: const EdgeInsets.all(8.0),
+                  child: Column(children: [
+                    WLidoflt(lidoapilist: lido[_lidoPos]),
+                    _loadingOFP
+                        ? const CircularProgressIndicator()
+                        : ElevatedButton.icon(
+                            onPressed: () async {
+                              // final fileid = PathTo().lidoFile(
+                              //     "${lido[_lidoPos].briefingId ?? ""}.pdf");
+
+                              final legid = lido[_lidoPos].briefingId ?? "";
+                              if (_loadingOFP == false) {
+                                setState(() {
+                                  _loadingOFP = true;
+                                });
+                                final ofp = await ref
+                                    .read(lidoapiProvider)
+                                    .ofppdf(legid: legid);
+                                setState(() {
+                                  _loadingOFP = false;
+                                });
+                                log(ofp.toString());
+                                if (((ofp["data"] is Map) &&
+                                        (ofp["data"]?["downloaded"] ?? false) ==
+                                            true) ||
+                                    (ofp["cache"] != null)) {
+                                  context.push("/pdf",
+                                      extra: PdfPageParams(
+                                          file: ofp["cache"] ??
+                                              ofp["data"]?["fileid"] ??
+                                              "",
+                                          title: legid,
+                                          initialZoom: 1));
+                                } else {
+                                  context.showError(
+                                      "Cannot download PDF File !!!");
+                                }
+                              }
+                            },
+
+                            icon: Image.asset(
+                              'assets/pdficon.png',
+                              width: 28,
+                            ), //icon data for elevated button
+                            label: const Text(
+                                "Load OFP in\n  PDF Format"), //label text
+                            // style: bottomnavstyle,
+                          ),
+                  ]),
+                )
+              ],
+            ),
+    );
+  }
+}
+
+class FltinfoParams {
+  const FltinfoParams({
+    this.al,
+    this.fnum,
+    this.date,
+    this.start,
+    this.end,
+    this.jdep,
+    this.jdes,
+    this.dep,
+    this.des,
+  });
+
+  final Jiffy? start;
+  final Jiffy? end;
+  final String? al;
+  final String? fnum;
+  final String? date;
+  final Jiffy? jdep;
+  final Jiffy? jdes;
+  final String? dep;
+  final String? des;
+}
+
+int collegeSort(String a, String b) {
+  // Define the order based on your requirements
+  final order = ['CP', 'FO', 'PU', 'SE', 'ST', 'JU'];
+
+  // Get the index of each element in the order list
+  final indexA = order.indexOf(a);
+  final indexB = order.indexOf(b);
+
+  // Compare based on the index
+  return indexA.compareTo(indexB);
+}

+ 8 - 0
lib/fltinfo/view/qualif.txt

@@ -0,0 +1,8 @@
+String? tlc;
+String? lname;
+String? mname;
+String? fname;
+String? date;
+String? ac;
+String? college;
+String? base;

+ 103 - 0
lib/fltinfo/widget/w_cadre.dart

@@ -0,0 +1,103 @@
+import 'package:flutter/material.dart';
+
+class WCadre extends StatelessWidget {
+  const WCadre(
+      {required this.child,
+      this.title = "",
+      this.titleleft,
+      this.titleright,
+      this.bottom,
+      this.bottomright,
+      this.bottomleft,
+      this.color = Colors.grey,
+      this.background = Colors.black,
+      this.height,
+      super.key});
+  final dynamic title;
+  final Widget? titleright;
+  final Widget? titleleft;
+  final Widget child;
+  final dynamic bottom;
+  final Widget? bottomright;
+  final Widget? bottomleft;
+  final Color color;
+  final Color background;
+  final double? height;
+
+  @override
+  Widget build(BuildContext context) {
+    return Container(
+      // width: 300,
+      height: height,
+      decoration: BoxDecoration(
+        color: Colors.black,
+        border: Border.all(
+          width: 3,
+          color: Colors.grey,
+        ),
+      ),
+      child: Column(
+        children: [
+          if (titleleft != null || title != "" || titleright != null) ...[
+            Row(
+              mainAxisSize: MainAxisSize.max,
+              children: [
+                if (titleleft != null) titleleft!,
+                Expanded(
+                    child: Container(
+                        alignment: Alignment.center,
+                        child: (title is Widget)
+                            ? title
+                            : Text(
+                                "$title",
+                                style: const TextStyle(
+                                    fontSize: 22,
+                                    fontWeight: FontWeight.w600,
+                                    color: Colors.blue),
+                              ))),
+                if (titleright != null) titleright!,
+              ],
+            ),
+            Divider(
+              height: 3,
+              thickness: 2,
+              color: color,
+            )
+          ],
+          if (height == null)
+            child
+          else
+            Expanded(
+              child: SingleChildScrollView(
+                child: child,
+              ),
+            ),
+          if (bottomleft != null || bottom != null || bottomright != null) ...[
+            Divider(
+              height: 2,
+              thickness: 1,
+              color: color,
+            ),
+            Row(
+              children: [
+                if (bottomleft != null) bottomleft!,
+                Expanded(
+                  child: Container(
+                      alignment: Alignment.center,
+                      child: (bottom is Widget)
+                          ? bottom
+                          : Text(
+                              "${bottom ?? ''}",
+                              style: const TextStyle(
+                                  fontSize: 12, color: Colors.grey),
+                            )),
+                ),
+                if (bottomright != null) bottomright!,
+              ],
+            )
+          ],
+        ],
+      ),
+    );
+  }
+}

+ 1441 - 0
lib/ftl/provider/ftl copy.dart.bak

@@ -0,0 +1,1441 @@
+import 'dart:developer';
+
+import 'package:collection/collection.dart';
+import 'package:jiffy/jiffy.dart';
+import 'package:tp5/core/core.dart';
+import 'package:tp5/providers/airports.dart';
+import 'package:tp5/roster/models/duty.dart';
+
+import 'package:timezone/timezone.dart' as tz;
+
+class Ftl {
+  Duration minimumrest(String? station) =>
+      Duration(hours: station == base ? 12 : 12, minutes: 0, seconds: 0);
+  static Duration postflight = const Duration(minutes: 30);
+  static Duration preflight = const Duration(minutes: 60);
+  static Duration maxdutylast7 = const Duration(hours: 60);
+  static Duration maxdutylast14 = const Duration(hours: 110);
+  static Duration maxdutylast28 = const Duration(hours: 190);
+  static Duration maxfltlast28 = const Duration(hours: 100);
+  static Duration maxfltlastyear = const Duration(hours: 900);
+  static Duration maxfltlast12 = const Duration(hours: 1000);
+  Duration travelling(String station) {
+    if (base == station) return Duration.zero;
+    switch (station) {
+      case "DSS":
+        return const Duration(minutes: 60);
+      case "ORY":
+        return const Duration(minutes: 5);
+      default:
+        return const Duration(minutes: 30);
+    }
+  }
+
+  String base;
+
+  List<FtlDutyDetails> dutiesDetails = [];
+  List<Duty> clDuties = [];
+  List<FtlDuty> duties = [];
+
+  // List<FtlDutyTotal> dutiesLength = [];
+
+  List<DTInterval> get dutiesAsInterval => duties
+      .map((e) =>
+          (e.type != FtlDutyType.other) ? DTInterval(e.start!, e.end!) : null)
+      .whereNotNull()
+      .toList();
+  List<DTInterval> get stdbyAsInterval => dutiesDetails
+      .map((e) => (e.type == FtlDutyDetailsType.standby)
+          ? DTInterval(e.start!, e.end!)
+          : null)
+      .whereNotNull()
+      .toList();
+  List<DTInterval> get fltsAsInterval => dutiesDetails
+      .map((e) => (e.type == FtlDutyDetailsType.flight)
+          ? DTInterval(e.start!, e.end!)
+          : null)
+      .whereNotNull()
+      .toList();
+  bool frms;
+  Ftl({required this.dutiesDetails, required this.base, this.frms = false});
+  Ftl.fromCrewlink(
+      {required this.clDuties, required this.base, this.frms = false}) {
+    for (Duty one in clDuties) {
+      switch (one.type) {
+        case "flight":
+          dutiesDetails.add(
+            FtlDutyDetails(
+              start: one.start,
+              end: one.end,
+              placeStart: one.data["dep"],
+              placeEnd: one.data["des"],
+              type: FtlDutyDetailsType.flight,
+              label: one.data["label"],
+            ),
+          );
+        case "dhflight":
+          dutiesDetails.add(
+            FtlDutyDetails(
+              start: one.start,
+              end: one.end,
+              placeStart: one.data["dep"],
+              placeEnd: one.data["des"],
+              type: FtlDutyDetailsType.dhflight,
+              label: one.data["label"],
+            ),
+          );
+        case "dhlimo":
+          dutiesDetails.add(
+            FtlDutyDetails(
+              start: one.start,
+              end: one.end,
+              placeStart: one.data["dep"],
+              placeEnd: one.data["des"],
+              type: FtlDutyDetailsType.dhlimo,
+              label: one.data["label"],
+            ),
+          );
+        case "ground":
+          if (["SBY1", "SBY2", "SBY3"].contains(one.data["label"])) {
+            dutiesDetails.add(
+              FtlDutyDetails(
+                start: one.start,
+                end: one.end,
+                placeStart: one.data["dep"],
+                // placeEnd: one.data["des"],
+                type: FtlDutyDetailsType.standby,
+                label: one.data["label"],
+              ),
+            );
+          } else if (["R0"].contains(one.data["label"])) {
+            //reserve is not duty
+            dutiesDetails.add(
+              FtlDutyDetails(
+                start: one.start,
+                end: one.end,
+                placeStart: one.data["dep"],
+                // placeEnd: one.data["des"],
+                type: FtlDutyDetailsType.reserve,
+                label: one.data["label"],
+              ),
+            );
+          } else if ((one.data["actype"] ?? "") != "") {
+            dutiesDetails.add(
+              FtlDutyDetails(
+                start: one.start,
+                end: one.end,
+                placeStart: one.data["dep"],
+                // placeEnd: one.data["des"],
+                type: FtlDutyDetailsType.sim,
+                label: one.data["label"],
+              ),
+            );
+          } else if (one.start != null &&
+              one.end != null &&
+              one.end!.diff(one.start!, unit: Unit.hour).abs() < 12) {
+            dutiesDetails.add(
+              FtlDutyDetails(
+                start: one.start,
+                end: one.end,
+                placeStart: one.data["dep"],
+                // placeEnd: one.data["des"],
+                type: FtlDutyDetailsType.ground,
+                label: one.data["label"],
+              ),
+            );
+          } else {
+            // print("ftl: constr: unknown ${one.date} ${one.type} ${one.data}");
+          }
+        case "checkin":
+          dutiesDetails.add(
+            FtlDutyDetails(
+              start: one.start,
+              end: one.end,
+              placeStart: one.data["dep"],
+              // placeEnd: one.data["des"],
+              type: FtlDutyDetailsType.preflight,
+            ),
+          );
+
+        case "checkout":
+          dutiesDetails.add(
+            FtlDutyDetails(
+              start: one.start,
+              end: one.end,
+              // placeStart: one.data["dep"],
+              placeEnd: one.data["des"],
+              type: FtlDutyDetailsType.postflight,
+            ),
+          );
+        case "credit":
+        case "wholeday":
+          break;
+        default:
+        // print("ftl: unk: ${one.date} ${one.type} ${one.data}");
+      }
+    }
+  }
+
+  Jiffy? _calcPostflight(FtlDutyDetails xduty) {
+    if (xduty.end != null &&
+        [FtlDutyDetailsType.flight, FtlDutyDetailsType.dhflight]
+            .contains(xduty.type)) {
+      return xduty.end!.addDuration(postflight);
+    } else {
+      return xduty.end;
+    }
+  }
+
+  Jiffy? _calcPreflight(FtlDutyDetails xduty) {
+    if (xduty.start != null &&
+        [
+          FtlDutyDetailsType.flight,
+          FtlDutyDetailsType.dhflight,
+          FtlDutyDetailsType.dhlimo,
+          FtlDutyDetailsType.sim,
+        ].contains(xduty.type)) {
+      return (base == (xduty.placeStart ?? ""))
+          ? xduty.start!.subtractDuration(const Duration(minutes: 60))
+          : (xduty.start!.subtractDuration(preflight));
+    } else {
+      return xduty.start;
+    }
+  }
+
+  final List<FtlDutyDetailsType> _fdpList = [
+    FtlDutyDetailsType.flight,
+    FtlDutyDetailsType.dhflight,
+    FtlDutyDetailsType.dhlimo
+  ];
+
+  //calcul duties
+  calcduties({Jiffy? date}) {
+    log("FTL: start calcduties");
+    duties.clear();
+
+    final t1 = Jiffy.now();
+    _calcDuty();
+
+    log("FTL: start _calcfdpmax");
+    _calcfdpmax();
+
+    log("FTL: start _clacdutytotal");
+    // _calcDutyTotal();
+
+    log("FTL: start calclegal");
+    _calcLegal(date: date);
+
+    final t4 = Jiffy.now();
+    print(
+        "ftl: calcduties calculation :  ${t4.diff(t1, unit: Unit.second, asFloat: true)} ms");
+
+    log("FTL: finish calcduties");
+
+    // return [duties, dutiesDetails, dutiesLength];
+    return [duties, dutiesDetails];
+  }
+
+  _calcDuty() {
+    for (int i = 0; i < dutiesDetails.length; i++) {
+      var last = i > 0 ? dutiesDetails[i - 1] : null;
+
+      final checkin = ((last?.type == FtlDutyDetailsType.preflight)
+          ? dutiesDetails[i - 1].start
+          : null);
+
+      final newduty =
+          _addDutyDetail(index: i, duty: FtlDuty(), checkin: checkin);
+      //print("${dutiesDetails[i].type} $newduty");
+      if (newduty != null) {
+        if (duties.isEmpty) {
+          //first duty
+          duties.add(newduty);
+        } else if ((newduty.start!.isAfter(duties.last.end!)) &&
+            (duties.last.type == FtlDutyType.other ||
+                newduty.type == FtlDutyType.other)) {
+          //last and new are not duty nor fdp (other=>stdby or rsrv)
+          duties.add(newduty);
+        } else if ((newduty.start!
+                .subtractDuration(travelling(newduty.placeStart ?? base))
+                .isAfter(
+                  duties.last.end!
+                      .addDuration(travelling(duties.last.placeEnd ?? base)),
+                )) &&
+            // duties.last.type == FtlDutyType.duty &&
+            newduty.type == FtlDutyType.duty) {
+          //last is duty
+          duties.add(newduty);
+        } else if (newduty.start!.diff(duties.last.end!, unit: Unit.minute) <
+            minimumrest(duties.last.placeEnd).inMinutes) {
+          //diff < minimumrest
+          //ilhim
+          final mergedduty = _addDutyDetail(
+              index: i,
+              duty: duties.isNotEmpty ? duties.last : FtlDuty(),
+              checkin: checkin);
+          duties[duties.length - 1] = mergedduty!;
+        } else {
+          //jdida
+          duties.add(newduty);
+        }
+      }
+    }
+  }
+
+  _calcfdpmax() {
+    for (var i = 0; i < duties.length; i++) {
+      FtlDuty duty = duties[i];
+      FtlDuty? lastduty = i == 0 ? null : duties[i - 1];
+      if (duty.type == FtlDutyType.fdp) {
+        String acclim = _acclimatized(
+            tzoffset: tzDiff(duty.placeStart!, lastduty?.placeEnd ?? base,
+                duty.start!.dateTime),
+            timeElapsed:
+                lastduty?.end!.dateTime.difference(duty.start!.dateTime) ??
+                    const Duration());
+        duties[i].acclim = acclim;
+        duties[i].reftime = changeTz(duty.start!, duty.placeStart ?? base).Hm;
+
+        Jiffy reftime = duty.start!;
+        if (duty.reportdelay2 != null && duty.reportdelay1 != null) {
+          if (duty.start!.dateTime
+                  .difference(duty.reportdelay2!.dateTime)
+                  .inMinutes <
+              (4 * 60)) {
+            reftime = duty.start!;
+            duty.start =
+                duty.notification2!.add(hours: 1).min(duty.reportdelay1!);
+          } else {
+            reftime = duty.reportdelay2!;
+            duty.start = duty.reportdelay2!;
+          }
+        } else if (duty.reportdelay1 != null) {
+          if (duty.start!.dateTime
+                  .difference(duty.reportdelay1!.dateTime)
+                  .inMinutes <
+              (4 * 60)) {
+            reftime = duty.start!;
+            duty.start = duty.reportdelay1!;
+          } else {
+            reftime = duty.reportdelay1!;
+            duty.start = duty.reportdelay1!;
+          }
+        }
+
+        switch (acclim) {
+          case "D":
+            // print("${duty.start?.yMMMd} ${duty.start?.toUtc().Hm}");
+            duties[i].fdpMax = fdpMaxBasic(
+                reftime: reftime, iata: duty.placeStart, sectors: duty.sectors);
+            duties[i].fdpExtMax = fdpMaxExtBasic(
+                reftime: reftime, iata: duty.placeStart, sectors: duty.sectors);
+          case "B":
+            duties[i].fdpMax = fdpMaxBasic(
+                reftime: reftime,
+                iata: lastduty?.placeEnd ?? lastduty?.placeStart ?? base,
+                sectors: duty.sectors);
+            duties[i].fdpExtMax = fdpMaxExtBasic(
+                reftime: reftime,
+                iata: lastduty?.placeEnd ?? lastduty?.placeStart ?? base,
+                sectors: duty.sectors);
+          case "X":
+            if (frms) {
+              duties[i].fdpMax = fdpMaxUnk(
+                  reftime: reftime,
+                  iata: duty.placeStart,
+                  sectors: duty.sectors);
+            } else {
+              duties[i].fdpMax = fdpMaxUnkFrms(
+                  reftime: reftime,
+                  iata: duty.placeStart,
+                  sectors: duty.sectors);
+            }
+            break;
+          default:
+        }
+      }
+    }
+  }
+
+  _calcLegal({Jiffy? date}) {
+    if (date == null) {
+      for (var i = 0; i < duties.length; i++) {
+        _checklegal(index: i);
+      }
+    } else {
+      duties.forEachIndexed((i, e) {
+        if (duties[i]
+            .start!
+            .isSameOrAfter(date.startOf(Unit.day).subtract(days: 1))) {
+          _checklegal(index: i);
+        }
+      });
+    }
+  }
+
+  Duration _sumDuration(List<DTInterval> x) =>
+      Duration(milliseconds: x.map((e) => e.duration.inMilliseconds).sum);
+
+  List<DTInterval> breaks(FtlDuty duty) {
+    List<DTInterval> out = [];
+    for (var e in duty.dutiesDetailsIndex) {
+      final dutydetail = dutiesDetails[e];
+      final deptravel = (base == (dutydetail.placeStart ?? ""))
+          ? Duration.zero
+          : travelling(dutydetail.placeStart ?? "");
+      final destravel = (base == (dutydetail.placeEnd ?? ""))
+          ? Duration.zero
+          : travelling(dutydetail.placeEnd ?? dutydetail.placeStart ?? "");
+      final start = _calcPreflight(dutydetail)!.subtractDuration(deptravel);
+      final finish = _calcPostflight(dutydetail)!.addDuration(destravel);
+      if (finish.isAfter(start)) {
+        out.add(DTInterval(start, finish));
+      }
+    }
+    return duty.interval.minusmany(out);
+  }
+
+  _checklegal({required int index}) {
+    FtlDuty duty = duties[index];
+
+    final date = changeTz(duty.start!, base).endOf(Unit.day);
+    // log("ftl: dutylenght date=${date.format(pattern: "ddMMMyy HHmm")} \n date-7=${date.subtract(days: 7 - 1).startOf(Unit.day).format(pattern: "ddMMMyy HHmm")}");
+    // print("${date.yMEd}");
+    final dutyLength = FtlDutyTotal(
+        date: date, dutyLength: Duration.zero, fltLength: Duration.zero)
+      ..dutylast7 = _sumDuration(
+              DTInterval(date.subtract(days: 7 - 1).startOf(Unit.day), date)
+                  .intersectionmany(dutiesAsInterval))
+          .add(_sumDuration(
+                  DTInterval(date.subtract(days: 7 - 1).startOf(Unit.day), date)
+                      .intersectionmany(stdbyAsInterval))
+              .multiply(0.25))
+      ..dutylast14 = _sumDuration(
+              DTInterval(date.subtract(days: 14 - 1).startOf(Unit.day), date)
+                  .intersectionmany(dutiesAsInterval))
+          .add(_sumDuration(DTInterval(
+                      date.subtract(days: 14 - 1).startOf(Unit.day), date)
+                  .intersectionmany(stdbyAsInterval))
+              .multiply(0.25))
+      ..dutylast28 = _sumDuration(
+              DTInterval(date.subtract(days: 28 - 1).startOf(Unit.day), date)
+                  .intersectionmany(dutiesAsInterval))
+          .add(_sumDuration(DTInterval(
+                      date.subtract(days: 28 - 1).startOf(Unit.day), date)
+                  .intersectionmany(stdbyAsInterval))
+              .multiply(0.25))
+      ..fltlast28 = _sumDuration(
+          DTInterval(date.subtract(days: 28 - 1).startOf(Unit.day), date)
+              .intersectionmany(fltsAsInterval))
+      ..fltlast12 = _sumDuration(DTInterval(
+              date.endOf(Unit.month).subtract(months: 12).startOf(Unit.month),
+              date)
+          .intersectionmany(fltsAsInterval))
+      ..fltyear = _sumDuration(DTInterval(date.startOf(Unit.year), date)
+          .intersectionmany(fltsAsInterval));
+    duty.dutyTotal = dutyLength;
+    // print("${date.yMEd} ${dutyLength.fltyear?.tohhmm}");
+
+    // dutylast7,
+    if ((dutyLength.dutylast7?.inMinutes ?? 0) > maxdutylast7.inMinutes) {
+      duty.legals.add(FtlLegal(
+          legalCause: FtlLegalCause.dutylast7,
+          legalCauseMsg:
+              "Max duty in 7 days ending ${duty.start?.format(pattern: "ddMMMyy")} exceeded: ${dutyLength.dutylast7?.tohhmm} / ${maxdutylast7.inHours}h"));
+    }
+    // dutylast14,
+    if ((dutyLength.dutylast14?.inMinutes ?? 0) > maxdutylast14.inMinutes) {
+      duty.legals.add(FtlLegal(
+          legalCause: FtlLegalCause.dutylast14,
+          legalCauseMsg:
+              "Max duty in 14 days ending ${duty.start?.format(pattern: "ddMMMyy")} exceeded: ${dutyLength.dutylast14?.tohhmm} / ${maxdutylast14.inHours}h"));
+    }
+    // dutylast28,
+    if ((dutyLength.dutylast28?.inMinutes ?? 0) > maxdutylast28.inMinutes) {
+      duty.legals.add(FtlLegal(
+          legalCause: FtlLegalCause.dutylast28,
+          legalCauseMsg:
+              "Max duty in 28 days ending ${duty.start?.format(pattern: "ddMMMyy")} exceeded: ${dutyLength.dutylast28?.tohhmm} / ${maxdutylast28.inHours}h"));
+    }
+    // fltlast28,
+    if ((dutyLength.fltlast28?.inMinutes ?? 0) > maxfltlast28.inMinutes) {
+      duty.legals.add(FtlLegal(
+          legalCause: FtlLegalCause.fltlast28,
+          legalCauseMsg:
+              "Max flight hours in 28 days ending ${duty.start?.format(pattern: "ddMMMyy")} exceeded: ${dutyLength.fltlast28?.tohhmm} / ${maxfltlast28.inHours}h"));
+    }
+
+    // fltyear,
+    if ((dutyLength.fltyear?.inMinutes ?? 0) > maxfltlastyear.inMinutes) {
+      duty.legals.add(FtlLegal(
+          legalCause: FtlLegalCause.fltyear,
+          legalCauseMsg:
+              "Max flight hours in calendar year ${duty.start?.format(pattern: "yyyy")} exceeded: ${dutyLength.fltyear?.tohhmm} / ${maxfltlastyear.inHours}h"));
+    }
+    // fltlast12,
+    if ((dutyLength.fltlast12?.inMinutes ?? 0) > maxfltlast12.inMinutes) {
+      duty.legals.add(FtlLegal(
+          legalCause: FtlLegalCause.fltlast12,
+          legalCauseMsg:
+              "Max flight hours in 12 months ending ${duty.start?.format(pattern: "ddMMMyy")} exceeded: ${dutyLength.fltlast12?.tohhmm} / ${maxfltlast12.inHours}h"));
+    }
+
+    // fdpmax,
+    if (duty.type == FtlDutyType.fdp && duty.fdpMax != null) {
+      if (duty.fdpLength.inMinutes <= duty.fdpMax!.inMinutes) {
+      } else if (duty.fdpExtMax != null &&
+          duty.fdpLength.inMinutes <= duty.fdpExtMax!.inMinutes) {
+        int nbFdpExt = 0;
+        for (var i = index;
+            i >= 0 &&
+                DTInterval(
+                        changeTz(duty.start!, base)
+                            .startOf(Unit.day)
+                            .subtract(days: 7),
+                        changeTz(duty.end!, base))
+                    .isOverlap(DTInterval(duties[i].start!, duties[i].end!));
+            i--) {
+          if (duties[i].fdpExt) nbFdpExt++;
+        }
+
+        if (nbFdpExt < 2) {
+          duty.fdpExt = true;
+          duties[index] = duty;
+        } else {
+          //nbext more than2 in 7days
+          duty.legals.add(FtlLegal(
+              legalCause: FtlLegalCause.fdpmax,
+              legalCauseMsg:
+                  "FDP Ext used more than twice in 7 days. ${duty.fdpLength.tohhmm} / ${duty.fdpMax?.tohhmm} / ext${duty.fdpExtMax?.tohhmm}"));
+        }
+      } else if (breaks(duty).any((e) => (e.duration.inHours > 3)
+          //&&
+          // ((duty.fdpLength.inMinutes) <=
+          //     (e.duration
+          //         .multiply(0.5)
+          //         .add(duty.fdpMax ?? Duration.zero)
+          //         .inMinutes)))) {
+          )) {
+        //split duty check
+        final fdpmaxbreak = breaks(duty)
+            .map((e) => ((e.duration.inHours > 3)
+                ? ((e.duration.multiply(0.5).add(duty.fdpMax ?? Duration.zero)))
+                : null))
+            .whereNotNull();
+        if (fdpmaxbreak.isNotEmpty && duty.fdpLength < fdpmaxbreak.first) {
+          duty.legals.add(FtlLegal(
+              legalCause: FtlLegalCause.fdpmax,
+              condition:
+                  "A break on ground must be considered to extend FDP Max to ${fdpmaxbreak.first.tohhmm}, ",
+              legalCauseMsg: "FDP is: ${duty.fdpLength.tohhmm}"));
+        } else {
+          duty.legals.add(FtlLegal(
+              legalCause: FtlLegalCause.fdpmax,
+              legalCauseMsg:
+                  "FDP Max is excedeed even with ground break of ${breaks(duty).map((e) => ((e.duration.inHours > 3) ? (e.duration) : null)).whereNotNull().first.tohhmm}.  FDP:${duty.fdpLength.tohhmm}/Max:${fdpmaxbreak.first.tohhmm}"));
+        }
+      } else {
+        duty.legals.add(FtlLegal(
+            legalCause: FtlLegalCause.fdpmax,
+            legalCauseMsg:
+                "FDP is ${duty.fdpLength.tohhmm}/Max:${duty.fdpMax?.tohhmm}"));
+      }
+    }
+    // restfdp without ext,
+    final FtlDuty? lastduty = (index > 0) ? duties[index - 1] : null;
+    // log("ftl: checking duty <${duty}> lastduty ended <${lastduty}>");
+
+    if (lastduty != null &&
+        duty.type == FtlDutyType.fdp &&
+        (lastduty.type == FtlDutyType.fdp ||
+            lastduty.type == FtlDutyType.duty ||
+            lastduty.dutiesDetailsIndex.any(
+                (e) => dutiesDetails[e].type == FtlDutyDetailsType.standby))) {
+      final rest = minimumrest(lastduty.placeEnd)
+          .max(duty.end!.dateTime.difference(duty.start!.dateTime));
+      duties[index - 1].restends = lastduty.end!.addDuration(rest);
+
+      if (lastduty.restends!.isAfter(duty.start!)) {
+        duty.legals.add(FtlLegal(
+            legalCause: FtlLegalCause.restfdp,
+            legalCauseMsg:
+                "Need more rest before starting FDP. rest: ${duty.start!.dateTime.difference(lastduty.end!.dateTime).tohhmm} / ${rest.tohhmm}"));
+      }
+    }
+    // restfdp with ext,
+    duty = duties[index];
+    FtlDuty? nextduty = (index < duties.length - 1) ? duties[index + 1] : null;
+    if (duty.fdpExt) {
+      final restbefore = (lastduty == null)
+          ? null
+          : minimumrest(lastduty.placeEnd)
+              .max(lastduty.end!.dateTime.difference(lastduty.start!.dateTime));
+      final restafter = (nextduty == null)
+          ? null
+          : minimumrest(duty.placeEnd)
+              .max(duty.end!.dateTime.difference(duty.start!.dateTime));
+//+2h rest before && 2h rest after
+      if ((lastduty == null ||
+              duty.start!.dateTime
+                      .difference(lastduty.end!.dateTime)
+                      .inMinutes >=
+                  (restbefore?.inMinutes ?? 0) + (2 * 60)) &&
+          (nextduty == null ||
+              nextduty.start!.dateTime
+                      .difference(duty.end!.dateTime)
+                      .inMinutes >=
+                  (restafter?.inMinutes ?? 0) + (60 * 2))) {
+      }
+//+4h rest after
+      else if ((nextduty == null ||
+          nextduty.start!.dateTime.difference(duty.end!.dateTime).inMinutes >=
+              (restafter?.inMinutes ?? 0) + (60 * 4))) {
+      }
+//not enough rest
+      else {
+        duty.restends = duty.end!.addDuration(restafter!).add(hours: 4);
+        duties[index] = duty;
+        nextduty.legals.add(FtlLegal(
+            legalCause: FtlLegalCause.restfdp,
+            legalCauseMsg:
+                "Need more rest after ExtFDP before starting FDP on ${nextduty.start?.format(pattern: "ddMMMyy HH:mm")} rest: ${nextduty.start?.dateTime.difference(duty.end!.dateTime).tohhmm} / ${restafter.tohhmm}"));
+        duties[index + 1] = nextduty;
+      }
+    }
+    // restrecurrent,
+
+    //   36h inc 2 local nights or (60h if 4 disruptive)
+    Duration maxdutyrecrest = const Duration(hours: 168);
+    Duration minrecrest = const Duration(hours: 36);
+
+    DTInterval rest = DTInterval(duty.start!, duty.start!);
+    var i = index;
+
+    int nbdisruptive = 0;
+
+    while (i >= 1 &&
+        !(rest.duration.inMinutes >= const Duration(hours: 36).inMinutes &&
+            rest.contains(DTInterval.fromHm(
+                apartir: changeTz(rest.start, duties[i].placeStart!),
+                h: 23,
+                m: 0,
+                duration: const Duration(hours: 7, minutes: 59))) &&
+            rest.contains(DTInterval.fromHm(
+                apartir:
+                    changeTz(rest.start.add(hours: 24), duties[i].placeStart!),
+                h: 23,
+                m: 0,
+                duration: const Duration(hours: 7, minutes: 59))))) {
+      final thisduty = duties[i];
+
+      if (_isEarlyStart(thisduty) ||
+          _isLateFinish(thisduty) ||
+          _isNightDuty(thisduty)) {
+        // log("${thisduty}");
+        nbdisruptive++;
+        if (nbdisruptive == 4) {
+          minrecrest = const Duration(hours: 60);
+        }
+      }
+      i--;
+      rest = DTInterval(duties[i].end!, duties[i + 1].start!);
+    }
+
+    if (DTInterval(rest.end, duty.end!).duration.inMinutes >
+        maxdutyrecrest.inMinutes) {
+      duty.legals.add(FtlLegal(
+          legalCause: FtlLegalCause.restrecurrent,
+          legalCauseMsg:
+              "Before duty, need ${minrecrest.inHours}h rest including 2 local nights. from: ${rest.end.format(pattern: "ddMMMyy HH:mm")} ${DTInterval(rest.end, duty.end!).duration.tohhmm}/${maxdutyrecrest.tohhmm} "));
+    }
+
+    //   48h inc 2 local days
+
+    final startmonth = changeTz(duty.start!.startOf(Unit.month), base);
+    final endmonth = startmonth.endOf(Unit.month);
+    if (duty.interval.isOverlap(
+        DTInterval(endmonth.subtract(days: 4).add(minutes: 1), endmonth))) {
+      int nb48inmonth = 0;
+      List<FtlDuty> dutiesmonth = duties
+          .where((e) => DTInterval(startmonth, endmonth)
+              .isOverlap(DTInterval(e.start!, e.end!)))
+          .toList();
+
+      List<DTInterval> restmonth = DTInterval(startmonth, endmonth).minusmany(
+          dutiesmonth
+              .map((e) => DTInterval(changeTz(e.start!, e.placeStart!),
+                  changeTz(e.end!, e.placeStart!)))
+              .toList());
+      // print(restmonth);
+
+      while (restmonth.isNotEmpty) {
+        final e = restmonth.removeAt(0);
+
+        final localdays = DTInterval.fromHm(
+            apartir: e.start,
+            h: 0,
+            m: 0,
+            duration: const Duration(hours: 47, minutes: 59));
+        if (e.contains(localdays)) {
+          nb48inmonth++;
+          // print(
+          //     "2localdays: ${localdays.start.format(pattern: "ddMMMyy HH:mm")} ${localdays.end.format(pattern: "ddMMMyy HH:mm")}");
+          // print(
+          //     "in rest ${e.start.format(pattern: "ddMMMyy HH:mm")} ${e.end.format(pattern: "ddMMMyy HH:mm")}");
+          restmonth = [...e.minus(localdays), ...restmonth];
+        }
+      }
+
+      if (nb48inmonth == 0) {
+        duty.legals.add(FtlLegal(
+            legalCause: FtlLegalCause.restrecurrent,
+            legalCauseMsg:
+                "Before duty, need 2x2 local days rest from: ${startmonth.format(pattern: "ddMMMyy HH:mm")} to:  ${endmonth.format(pattern: "ddMMMyy HH:mm")}"));
+      } else if (nb48inmonth == 1 &&
+          DTInterval(endmonth.subtract(days: 2).add(minutes: 1), endmonth)
+              .isOverlap(duty.interval)) {
+        duty.legals.add(FtlLegal(
+            legalCause: FtlLegalCause.restrecurrent,
+            legalCauseMsg:
+                "Before duty, need 2x2 local days rest from: ${startmonth.format(pattern: "ddMMMyy HH:mm")} to:  ${endmonth.format(pattern: "ddMMMyy HH:mm")}"));
+      } else if (nb48inmonth == 1 &&
+          DTInterval(endmonth.subtract(days: 4).add(minutes: 1),
+                  endmonth.subtract(days: 2))
+              .isOverlap(duty.interval) &&
+          DTInterval(endmonth.subtract(days: 4).add(minutes: 1),
+                  endmonth.subtract(days: 2))
+              .intersectionmany(
+                  [...dutiesAsInterval, ...stdbyAsInterval]).isEmpty) {
+        duty.legals.add(FtlLegal(
+            legalCause: FtlLegalCause.restrecurrent,
+            legalCauseMsg:
+                "Before duty, need 2x2 local days rest from: ${startmonth.format(pattern: "ddMMMyy HH:mm")} to:  ${endmonth.format(pattern: "ddMMMyy HH:mm")}"));
+      }
+    }
+    // disruptive
+    duty.lateFinish = _isLateFinish(duty);
+    duty.earlyStart = _isEarlyStart(duty);
+    duty.nightDuty = _isNightDuty(duty);
+    if (duty.fdpStart != null &&
+        lastduty != null &&
+        base == lastduty.placeEnd &&
+        (_isLateFinish(lastduty) || _isNightDuty(lastduty)) &&
+        _isEarlyStart(duty)) {
+      // log("ftl: found late finish or nighty <${duty.start!.format(pattern: "ddMMMyy HH:mm")}");
+      if (!DTInterval(lastduty.end!, duty.start!).contains(DTInterval.fromHm(
+          apartir: changeTz(lastduty.end!, lastduty.placeEnd!),
+          h: 23,
+          m: 0,
+          duration: const Duration(hours: 7, minutes: 59)))) {
+        duty.legals.add(FtlLegal(
+            legalCause: FtlLegalCause.disruptive,
+            legalCauseMsg:
+                "Disruptive duty; one local night of rest is required before early departure."));
+      }
+    }
+
+    //consecutive night duty
+    if (_isConsecutiveNight(duty, lastduty)) {
+      var i = index;
+      final monthint = DTInterval(
+          changeTz(duty.start!.startOf(Unit.month), base),
+          changeTz(duty.start!.endOf(Unit.month), base));
+      int nbconsnight = 0;
+      while (i > 0 && duties[i].interval.isOverlap(monthint)) {
+        if (_isConsecutiveNight(duties[i], duties[i - 1])) {
+          nbconsnight++;
+        }
+        i--;
+      }
+      if (nbconsnight > 1) {
+        duty.legals.add(FtlLegal(
+            legalCause: FtlLegalCause.disruptive,
+            legalCauseMsg:
+                "Consecutive nights is allowed only once per civil month."));
+      } else {
+        duty.legals.add(FtlLegal(
+            legalCause: FtlLegalCause.disruptive,
+            condition:
+                "Two consecutive night duties; crew member agreement is required.",
+            legalCauseMsg: ""));
+      }
+    }
+
+    //local day rest if night duty
+    if (lastduty != null && _isNightDuty(lastduty)) {
+      if (DTInterval.fromHm(
+              apartir: changeTz(lastduty.end!, lastduty.placeEnd!),
+              h: 0,
+              m: 0,
+              duration: const Duration(hours: 23, minutes: 59))
+          .isOverlap(duty.interval)) {
+        duty.legals.add(FtlLegal(
+            legalCause: FtlLegalCause.disruptive,
+            condition: "You can request a local day off after last night duty.",
+            legalCauseMsg: ""));
+      }
+    }
+
+    // if (duty.legals.isNotEmpty) {
+    //   log("${duty.legals.map((e) => e.legalCauseMsg)}");
+    // }
+    // duties[index] = duty;
+  }
+
+  bool _isConsecutiveNight(FtlDuty duty, FtlDuty? lastduty) =>
+      _isNightDuty(duty) &&
+      lastduty != null &&
+      DTInterval.fromHm(
+              apartir: changeTz(lastduty.end!, lastduty.placeEnd!),
+              h: 2,
+              m: 0,
+              duration: const Duration(hours: 2, minutes: 59))
+          .isOverlap(lastduty.interval);
+
+  FtlDuty? _addDutyDetail(
+      {required int index, required FtlDuty duty, Jiffy? checkin}) {
+    final one = dutiesDetails[index];
+    if (_fdpList.contains(one.type)) {
+      duty.placeStart = duty.placeStart ?? one.placeStart;
+      duty.placeEnd = one.placeEnd;
+
+      //duty.start = duty.start ?? _calcPreflight(one).latest(checkin);
+      duty.start = duty.start ?? checkin ?? _calcPreflight(one);
+
+      duty.end = _calcPostflight(one);
+      if (one.type == FtlDutyDetailsType.flight) {
+        duty.type = FtlDutyType.fdp;
+        duty.sectors++;
+        duty.fdpStart = duty.start;
+        duty.fdpEnd = one.end;
+      } else {
+        duty.type = duty.type ?? FtlDutyType.duty;
+      }
+      duty.dutiesDetailsIndex.add(index);
+    } else if ([FtlDutyDetailsType.standby, FtlDutyDetailsType.reserve]
+        .contains(one.type)) {
+      duty.placeStart = duty.placeStart ?? one.placeStart;
+      duty.placeEnd = one.placeStart;
+      duty.start = duty.start ?? _calcPreflight(one);
+      duty.end = one.end;
+      duty.type = FtlDutyType.other;
+      duty.dutiesDetailsIndex.add(index);
+    } else if ([FtlDutyDetailsType.ground, FtlDutyDetailsType.sim]
+        .contains(one.type)) {
+      duty.placeStart = duty.placeStart ?? one.placeStart;
+      duty.placeEnd = one.placeStart;
+      duty.start = duty.start ?? _calcPreflight(one);
+      duty.end = one.end;
+      duty.type = duty.type ?? FtlDutyType.duty;
+      duty.dutiesDetailsIndex.add(index);
+    } else {
+      return null;
+    }
+    return duty;
+  }
+
+  static bool _isEarlyStart(FtlDuty x) {
+//500 559
+    // print(
+    //     "$x is earlystart: ${DTInterval.fromHm(apartir: changeTz(x.start!, x.placeStart!), h: 5, m: 0, duration: const Duration(minutes: 59)).include(x.start!)}");
+    return (x.fdpStart != null &&
+        DTInterval.fromHm(
+                apartir: changeTz(x.start!.subtract(hours: 24), x.placeStart!),
+                h: 5,
+                m: 0,
+                duration: const Duration(minutes: 59))
+            .include(x.start!));
+  }
+
+  static bool _isLateFinish(FtlDuty x) {
+//2300  159
+    // print(
+    //     "$x is latefinish: ${DTInterval.fromHm(apartir: changeTz(x.start!, x.placeStart!), h: 23, m: 0, duration: const Duration(hours: 2, minutes: 59)).include(x.end!)}");
+    return (x.type != FtlDutyType.other) &&
+        (DTInterval.fromHm(
+                apartir: changeTz(x.start!, x.placeStart!),
+                h: 23,
+                m: 0,
+                duration: const Duration(hours: 2, minutes: 59))
+            .include(x.end!));
+  }
+
+  static bool _isNightDuty(FtlDuty x) {
+//200  459
+    // print(
+    //     "$x is Night duty: ${DTInterval.fromHm(apartir: changeTz(x.start!, x.placeStart!), h: 2, m: 0, duration: const Duration(hours: 2, minutes: 59)).include(x.end!)}");
+    return (x.type != FtlDutyType.other) &&
+        (DTInterval.fromHm(
+                apartir: changeTz(x.start!, x.placeStart!),
+                h: 2,
+                m: 0,
+                duration: const Duration(hours: 2, minutes: 59)))
+            .isOverlap(x.interval);
+  }
+
+  Duration tzDiff(String iata1, String iata2, DateTime sourceDateTime) {
+    // print(Airports.instance.find(iata1)!.timezoneid);
+    // print(Airports.instance.find(iata2)!.timezoneid);
+    final iata1Location = tz.getLocation(Airports.find(iata1)!.timezoneid);
+    final iata2Location = tz.getLocation(Airports.find(iata2)!.timezoneid);
+    tz.TZDateTime iata1TZDateTime =
+        tz.TZDateTime.from(sourceDateTime, iata1Location);
+    tz.TZDateTime iata2TZDateTime =
+        tz.TZDateTime.from(sourceDateTime, iata2Location);
+    return Duration(
+        minutes: (iata2TZDateTime.timeZoneOffset.inMinutes -
+                iata1TZDateTime.timeZoneOffset.inMinutes)
+            .abs());
+  }
+
+  String _acclimatized(
+      {required Duration tzoffset, required Duration timeElapsed}) {
+    if (tzoffset.inHours <= 2) {
+      return "D";
+    } else if (timeElapsed.inHours < 48) {
+      return "B";
+    } else if (tzoffset.inHours < 4 && timeElapsed.inHours >= 48) {
+      return "D";
+    } else if (tzoffset.inHours <= 6 && timeElapsed.inHours >= 72) {
+      return "D";
+    } else if (tzoffset.inHours <= 9 && timeElapsed.inHours >= 96) {
+      return "D";
+    } else if (tzoffset.inHours <= 12 && timeElapsed.inHours >= 120) {
+      return "D";
+    } else {
+      return "X";
+    }
+  }
+
+  static Jiffy changeTz(Jiffy jiffy, String iata) {
+    return Jiffy.parseFromDateTime(tz.TZDateTime.from(jiffy.dateTime,
+        tz.getLocation(Airports.find(iata)?.timezoneid ?? "UTC")));
+  }
+
+  Duration _fdpMax(
+      {required reftime,
+      String? iata,
+      required int sectors,
+      required Map<String, List<String>> tab}) {
+    Jiffy reftjiffy = Jiffy.now();
+    String reft = "";
+
+    if (reftime is Jiffy && iata != null) {
+      reftjiffy = reftime;
+      reftjiffy = changeTz(reftjiffy, iata);
+      reft = reftjiffy.format(pattern: "HHmm");
+    } else if (reftime is DateTime && iata != null) {
+      reftjiffy = Jiffy.parseFromDateTime(reftime);
+      reftjiffy = changeTz(reftjiffy, iata);
+      reft = reftjiffy.format(pattern: "HHmm");
+    } else if (reftime is String && reftime.length == 4) {
+      reft = reftime;
+    } else if (reftime is String && iata != null) {
+      reftjiffy = Jiffy.parse(reftime);
+      reftjiffy = changeTz(reftjiffy, iata);
+
+      reft = reftjiffy.format(pattern: "HHmm");
+    } else {
+      throw ("_fdpMax type of reftime unrecognized!!!");
+    }
+    // print("$iata  $reft ${reftjiffy.toUtc().Hm}");
+    for (String key in tab.keys) {
+      List<String> intervalle = key.split("-");
+      int cmph1 = reft.compareTo(intervalle[0]);
+      int cmph2 = reft.compareTo(intervalle[1]);
+
+      bool inint = (intervalle[0].compareTo(intervalle[1]) < 0)
+          ? (cmph1 >= 0 && cmph2 <= 0)
+          : ((cmph1 >= 0 || cmph2 <= 0));
+      if (inint) {
+        final List<String>? lres = tab[key];
+        final int nrow = ((sectors == 1) ? 2 : sectors) - 2;
+        final String? res =
+            (lres != null && nrow < lres.length) ? lres[nrow] : null;
+        if (res != null && res != "Not allowed") {
+          return Duration(
+              hours: int.parse(res.split(".")[0]),
+              minutes: int.parse(res.split(".")[1]));
+        }
+      }
+    }
+    return Duration.zero;
+  }
+
+  Duration fdpMaxBasic(
+          {required reftime, String? iata, required int sectors}) =>
+      _fdpMax(reftime: reftime, iata: iata, sectors: sectors, tab: _fdpMaxTab);
+
+  Duration fdpMaxExtBasic(
+          {required reftime, String? iata, required int sectors}) =>
+      _fdpMax(
+          reftime: reftime, iata: iata, sectors: sectors, tab: _fdpMaxExtTab);
+
+  Duration fdpMaxUnk({required reftime, String? iata, required int sectors}) =>
+      _fdpMax(reftime: reftime, iata: iata, sectors: sectors, tab: _fdpUnkTab);
+
+  Duration fdpMaxUnkFrms(
+          {required reftime, String? iata, required int sectors}) =>
+      _fdpMax(
+          reftime: reftime, iata: iata, sectors: sectors, tab: _fdpUnkFrmsTab);
+
+//acclim
+
+  final Map<String, List<String>> _fdpMaxTab = {
+    "0600-1329": [
+      "13.00",
+      "12.30",
+      "12.00",
+      "11.30",
+      "11.00",
+      "10.30",
+      "10.00",
+      "09.30",
+      "09.00",
+    ],
+    "1330-1359": [
+      "12.45",
+      "12.15",
+      "11.45",
+      "11.15",
+      "10.45",
+      "10.15",
+      "09.45",
+      "09.15",
+      "09.00",
+    ],
+    "1400-1429": [
+      "12.30",
+      "12.00",
+      "11.30",
+      "11.00",
+      "10.30",
+      "10.00",
+      "09.30",
+      "09.00",
+      "09.00",
+    ],
+    "1430-1459": [
+      "12.15",
+      "11.45",
+      "11.15",
+      "10.45",
+      "10.15",
+      "09.45",
+      "09.15",
+      "09.00",
+      "09.00",
+    ],
+    "1500-1529": [
+      "12.00",
+      "11.30",
+      "11.00",
+      "10.30",
+      "10.00",
+      "09.30",
+      "09.00",
+      "09.00",
+      "09.00",
+    ],
+    "1530-1559": [
+      "11.45",
+      "11.15",
+      "10.45",
+      "10.15",
+      "09.45",
+      "09.15",
+      "09.00",
+      "09.00",
+      "09.00",
+    ],
+    "1600-1629": [
+      "11.30",
+      "11.00",
+      "10.30",
+      "10.00",
+      "09.30",
+      "09.00",
+      "09.00",
+      "09.00",
+      "09.00",
+    ],
+    "1630-1659": [
+      "11.15",
+      "10.45",
+      "10.15",
+      "09.45",
+      "09.15",
+      "09.00",
+      "09.00",
+      "09.00",
+      "09.00",
+    ],
+    "1700-0459": [
+      "11.00",
+      "10.30",
+      "10.00",
+      "09.30",
+      "09.00",
+      "09.00",
+      "09.00",
+      "09.00",
+      "09.00",
+    ],
+    "0500-0514": [
+      "12.00",
+      "11.30",
+      "11.00",
+      "10.30",
+      "10.00",
+      "09.30",
+      "09.00",
+      "09.00",
+      "09.00",
+    ],
+    "0515-0529": [
+      "12.15",
+      "11.45",
+      "11.15",
+      "10.45",
+      "10.15",
+      "09.45",
+      "09.15",
+      "09.00",
+      "09.00",
+    ],
+    "0530-0544": [
+      "12.30",
+      "12.00",
+      "11.30",
+      "11.00",
+      "10.30",
+      "10.00",
+      "09.30",
+      "09.00",
+      "09.00",
+    ],
+    "0545-0559": [
+      "12.45",
+      "12.15",
+      "11.45",
+      "11.15",
+      "10.45",
+      "10.15",
+      "09.45",
+      "09.15",
+      "09.00",
+    ],
+  };
+  final Map<String, List<String>> _fdpMaxExtTab = {
+    "0600-0614": [
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+    ],
+    "0615-0629": [
+      "13.15",
+      "12.45",
+      "12.15",
+      "11.45",
+    ],
+    "0630-0644": [
+      "13.30",
+      "13.00",
+      "12.30",
+      "12.00",
+    ],
+    "0645-0659": [
+      "13.45",
+      "13.15",
+      "12.45",
+      "12.15",
+    ],
+    "0700-1329": [
+      "14.00",
+      "13.30",
+      "13.00",
+      "12.30",
+    ],
+    "1330-1359": [
+      "13.45",
+      "13.15",
+      "12.45",
+      "Not allowed",
+    ],
+    "1400-1429": [
+      "13.30",
+      "13.00",
+      "12.30",
+      "Not allowed",
+    ],
+    "1430-1459": [
+      "13.15",
+      "12.45",
+      "12.15",
+      "Not allowed",
+    ],
+    "1500-1529": [
+      "13.00",
+      "12.30",
+      "12.00",
+      "Not allowed",
+    ],
+    "1530-1559": [
+      "12.45",
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+    ],
+    "1600-1629": [
+      "12.30",
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+    ],
+    "1630-1659": [
+      "12.15",
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+    ],
+    "1700-1729": [
+      "12.00",
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+    ],
+    "1730-1759": [
+      "11.45",
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+    ],
+    "1800-1829": [
+      "11.30",
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+    ],
+    "1830-1859": [
+      "11.15",
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+    ],
+    "1900-0359": [
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+    ],
+    "0400-0414": [
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+    ],
+    "0415-0429": [
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+    ],
+    "0430-0444": [
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+    ],
+    "0445-0459": [
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+    ],
+    "0500-0514": [
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+    ],
+    "0515-0529": [
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+    ],
+    "0530-0544": [
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+    ],
+    "0545-0559": [
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+    ]
+  };
+  final Map<String, List<String>> _fdpUnkTab = {
+    "0000-2359": ["11.00", "10:30", "10.00", "09.30", "09.00", "09.00", "09.00"]
+  };
+  final Map<String, List<String>> _fdpUnkFrmsTab = {
+    "0000-2359": ["12.00", "11.30", "11.00", "10.30", "10.00", "09.30", "09.00"]
+  };
+}
+
+class FtlDuty {
+  FtlDuty({this.start, this.end, this.placeStart, this.placeEnd, this.type});
+  @override
+  String toString() {
+    return "${start?.yMEd} ${start?.Hm} >>> ${end?.Hm} : ${fdpLength.inMinutes > 0 ? "FDP" : "DUTY"} ${dutiesDetailsIndex.length}leg(s)";
+  }
+
+  Jiffy? start;
+  Jiffy? end;
+  DTInterval get interval => DTInterval(start!, end!);
+  String? placeStart;
+  String? placeEnd;
+  FtlDutyType? type;
+  List<int> dutiesDetailsIndex = [];
+  Jiffy? fdpStart;
+  Jiffy? fdpEnd;
+  int sectors = 0;
+  Duration? fdpMax;
+  Duration? fdpExtMax;
+  //Duration? fdpIfRExtMax;//if inflight rest rest
+
+  bool fdpExt = false;
+  List<FtlLegal> legals = [];
+
+  Duration get dutyLength => (start != null && end != null)
+      ? end!.dateTime.difference(start!.dateTime)
+      : Duration.zero;
+  Duration get fdpLength => (fdpStart != null && fdpEnd != null)
+      ? fdpEnd!.dateTime.difference(fdpStart!.dateTime)
+      : Duration.zero;
+
+  // Duration? get rest => (dutyLength.max(Ftl.minimumrest(placeEnd)));
+  Jiffy? restends;
+
+  String? acclim;
+  String? reftime;
+
+  FtlDutyTotal? dutyTotal;
+
+  //Jiffy? report;
+  Jiffy? reportdelay1;
+  Jiffy? notification1;
+  Jiffy? reportdelay2;
+  Jiffy? notification2;
+  bool earlyStart = false;
+  bool lateFinish = false;
+  bool nightDuty = false;
+}
+
+class FtlLegal {
+  FtlLegal(
+      {required this.legalCause,
+      required this.legalCauseMsg,
+      this.legalIndex,
+      this.condition});
+  FtlLegalCause legalCause;
+  String legalCauseMsg;
+  int? legalIndex;
+  String? condition;
+}
+
+enum FtlDutyType { duty, fdp, other }
+
+class FtlDutyDetails {
+  FtlDutyDetails({
+    this.start,
+    this.end,
+    this.placeStart,
+    this.placeEnd,
+    this.type,
+    this.label,
+  });
+
+  Jiffy? start;
+  Jiffy? end;
+  DTInterval get interval => DTInterval(start!, end!);
+
+  Duration get duration => end!.dateTime.difference(start!.dateTime);
+  String? placeStart;
+  String? placeEnd;
+  FtlDutyDetailsType? type;
+  String get typeString {
+    switch (type) {
+      case FtlDutyDetailsType.flight:
+        return "FLT";
+      case FtlDutyDetailsType.dhflight:
+        return "DH-FLT";
+      case FtlDutyDetailsType.dhlimo:
+        return "DH-LIMO";
+      case FtlDutyDetailsType.sim:
+        return "SIM";
+      case FtlDutyDetailsType.standby:
+        return "STBY";
+      case FtlDutyDetailsType.reserve:
+        return "RSRV";
+      case FtlDutyDetailsType.ground:
+        return "GRND";
+
+      default:
+        return "UNK";
+    }
+  }
+
+  String? label;
+}
+
+enum FtlDutyDetailsType {
+  preflight,
+  flight,
+  postflight,
+  dhflight,
+  dhlimo,
+  ground,
+  standby,
+  reserve,
+  sim,
+//  training,
+//  other
+}
+
+class FtlDutyTotal {
+  FtlDutyTotal(
+      {required this.date, required this.dutyLength, required this.fltLength});
+  Jiffy date;
+  Duration dutyLength;
+  Duration fltLength;
+  Duration? dutylast7;
+  Duration? dutylast14;
+  Duration? dutylast28;
+  Duration? fltlast28;
+  Duration? fltyear;
+  Duration? fltlast12;
+}
+
+enum FtlLegalCause {
+  dutylast7,
+  dutylast14,
+  dutylast28,
+  fltlast28,
+  fltyear,
+  fltlast12,
+  fdpmax,
+  restfdp,
+  restrecurrent,
+  disruptive
+  //check duty length && flt length
+
+  //check fdp leength
+
+  //check rest before fdp
+  //check recurrent rest
+  //check disruptive sched
+}

+ 1467 - 0
lib/ftl/provider/ftl copy2.dart.bak

@@ -0,0 +1,1467 @@
+import 'dart:developer';
+
+import 'package:collection/collection.dart';
+import 'package:jiffy/jiffy.dart';
+import 'package:tp5/core/core.dart';
+import 'package:tp5/providers/airports.dart';
+import 'package:tp5/roster/models/duty.dart';
+
+import 'package:timezone/timezone.dart' as tz;
+
+class Ftl {
+  Duration minimumrest(String? station) =>
+      Duration(hours: station == base ? 12 : 12, minutes: 0, seconds: 0);
+  static Duration postflight = const Duration(minutes: 30);
+  static Duration preflight = const Duration(minutes: 60);
+  static Duration maxdutylast7 = const Duration(hours: 60);
+  static Duration maxdutylast14 = const Duration(hours: 110);
+  static Duration maxdutylast28 = const Duration(hours: 190);
+  static Duration maxfltlast28 = const Duration(hours: 100);
+  static Duration maxfltlastyear = const Duration(hours: 900);
+  static Duration maxfltlast12 = const Duration(hours: 1000);
+  Duration travelling(String station) {
+    if (base == station) return Duration.zero;
+    switch (station) {
+      case "DSS":
+        return const Duration(minutes: 60);
+      case "ORY":
+        return const Duration(minutes: 5);
+      default:
+        return const Duration(minutes: 30);
+    }
+  }
+
+  String base;
+
+  List<FtlDutyDetails> dutiesDetails = [];
+  List<Duty> clDuties = [];
+  List<FtlDuty> duties = [];
+
+  // List<FtlDutyTotal> dutiesLength = [];
+
+  List<DTInterval> get dutiesAsInterval => duties
+      .map((e) =>
+          (e.type != FtlDutyType.other) ? DTInterval(e.start!, e.end!) : null)
+      .whereNotNull()
+      .toList();
+  List<DTInterval> get stdbyAsInterval => dutiesDetails
+      .map((e) => (e.type == FtlDutyDetailsType.standby)
+          ? DTInterval(e.start!, e.end!)
+          : null)
+      .whereNotNull()
+      .toList();
+  List<DTInterval> get fltsAsInterval => dutiesDetails
+      .map((e) => (e.type == FtlDutyDetailsType.flight)
+          ? DTInterval(e.start!, e.end!)
+          : null)
+      .whereNotNull()
+      .toList();
+  bool frms;
+  Ftl({required this.dutiesDetails, required this.base, this.frms = false});
+  Ftl.fromCrewlink(
+      {required this.clDuties, required this.base, this.frms = false}) {
+    for (Duty one in clDuties) {
+      switch (one.type) {
+        case "flight":
+          dutiesDetails.add(
+            FtlDutyDetails(
+              start: one.start,
+              end: one.end,
+              placeStart: one.data["dep"],
+              placeEnd: one.data["des"],
+              type: FtlDutyDetailsType.flight,
+              label: one.data["label"],
+            ),
+          );
+        case "dhflight":
+          dutiesDetails.add(
+            FtlDutyDetails(
+              start: one.start,
+              end: one.end,
+              placeStart: one.data["dep"],
+              placeEnd: one.data["des"],
+              type: FtlDutyDetailsType.dhflight,
+              label: one.data["label"],
+            ),
+          );
+        case "dhlimo":
+          dutiesDetails.add(
+            FtlDutyDetails(
+              start: one.start,
+              end: one.end,
+              placeStart: one.data["dep"],
+              placeEnd: one.data["des"],
+              type: FtlDutyDetailsType.dhlimo,
+              label: one.data["label"],
+            ),
+          );
+        case "ground":
+          if (["SBY1", "SBY2", "SBY3"].contains(one.data["label"])) {
+            dutiesDetails.add(
+              FtlDutyDetails(
+                start: one.start,
+                end: one.end,
+                placeStart: one.data["dep"],
+                // placeEnd: one.data["des"],
+                type: FtlDutyDetailsType.standby,
+                label: one.data["label"],
+              ),
+            );
+          } else if (["R0"].contains(one.data["label"])) {
+            //reserve is not duty
+            dutiesDetails.add(
+              FtlDutyDetails(
+                start: one.start,
+                end: one.end,
+                placeStart: one.data["dep"],
+                // placeEnd: one.data["des"],
+                type: FtlDutyDetailsType.reserve,
+                label: one.data["label"],
+              ),
+            );
+          } else if ((one.data["actype"] ?? "") != "") {
+            dutiesDetails.add(
+              FtlDutyDetails(
+                start: one.start,
+                end: one.end,
+                placeStart: one.data["dep"],
+                // placeEnd: one.data["des"],
+                type: FtlDutyDetailsType.sim,
+                label: one.data["label"],
+              ),
+            );
+          } else if (one.start != null &&
+              one.end != null &&
+              one.end!.diff(one.start!, unit: Unit.hour).abs() < 12) {
+            dutiesDetails.add(
+              FtlDutyDetails(
+                start: one.start,
+                end: one.end,
+                placeStart: one.data["dep"],
+                // placeEnd: one.data["des"],
+                type: FtlDutyDetailsType.ground,
+                label: one.data["label"],
+              ),
+            );
+          } else {
+            // print("ftl: constr: unknown ${one.date} ${one.type} ${one.data}");
+          }
+        case "checkin":
+          dutiesDetails.add(
+            FtlDutyDetails(
+              start: one.start,
+              end: one.end,
+              placeStart: one.data["dep"],
+              // placeEnd: one.data["des"],
+              type: FtlDutyDetailsType.preflight,
+            ),
+          );
+
+        case "checkout":
+          dutiesDetails.add(
+            FtlDutyDetails(
+              start: one.start,
+              end: one.end,
+              // placeStart: one.data["dep"],
+              placeEnd: one.data["des"],
+              type: FtlDutyDetailsType.postflight,
+            ),
+          );
+        case "credit":
+        case "wholeday":
+          break;
+        default:
+        // print("ftl: unk: ${one.date} ${one.type} ${one.data}");
+      }
+    }
+  }
+
+  Jiffy? _calcPostflight(FtlDutyDetails xduty) {
+    if (xduty.end != null &&
+        [FtlDutyDetailsType.flight, FtlDutyDetailsType.dhflight]
+            .contains(xduty.type)) {
+      return xduty.end!.addDuration(postflight);
+    } else {
+      return xduty.end;
+    }
+  }
+
+  Jiffy? _calcPreflight(FtlDutyDetails xduty) {
+    if (xduty.start != null &&
+        [
+          FtlDutyDetailsType.flight,
+          FtlDutyDetailsType.dhflight,
+          FtlDutyDetailsType.dhlimo,
+          FtlDutyDetailsType.sim,
+        ].contains(xduty.type)) {
+      return (base == (xduty.placeStart ?? ""))
+          ? xduty.start!.subtractDuration(const Duration(minutes: 60))
+          : (xduty.start!.subtractDuration(preflight));
+    } else {
+      return xduty.start;
+    }
+  }
+
+  final List<FtlDutyDetailsType> _fdpList = [
+    FtlDutyDetailsType.flight,
+    FtlDutyDetailsType.dhflight,
+    FtlDutyDetailsType.dhlimo
+  ];
+
+  //calcul duties
+  calcduties({Jiffy? date}) {
+    log("FTL: start calcduties");
+    duties.clear();
+
+    final t1 = Jiffy.now();
+    _calcDuty();
+
+    log("FTL: start _calcfdpmax");
+    _calcfdpmax();
+
+    log("FTL: start _clacdutytotal");
+    // _calcDutyTotal();
+
+    log("FTL: start calclegal");
+    _calcLegal(date: date);
+
+    final t4 = Jiffy.now();
+    print(
+        "ftl: calcduties calculation :  ${t4.diff(t1, unit: Unit.second, asFloat: true)} ms");
+
+    log("FTL: finish calcduties");
+
+    // return [duties, dutiesDetails, dutiesLength];
+    return [duties, dutiesDetails];
+  }
+
+  _calcDuty() {
+    for (int i = 0; i < dutiesDetails.length; i++) {
+      var last = i > 0 ? dutiesDetails[i - 1] : null;
+
+      final checkin = ((last?.type == FtlDutyDetailsType.preflight)
+          ? dutiesDetails[i - 1].start
+          : null);
+
+      final newduty =
+          _addDutyDetail(index: i, duty: FtlDuty(), checkin: checkin);
+      //print("${dutiesDetails[i].type} $newduty");
+      if (newduty != null) {
+        if (duties.isEmpty) {
+          //first duty
+          duties.add(newduty);
+        } else if ((newduty.start!.isAfter(duties.last.end!)) &&
+            (duties.last.type == FtlDutyType.other ||
+                newduty.type == FtlDutyType.other)) {
+          //last and new are not duty nor fdp (other=>stdby or rsrv)
+          duties.add(newduty);
+        } else if ((newduty.start!
+                .subtractDuration(travelling(newduty.placeStart ?? base))
+                .isAfter(
+                  duties.last.end!
+                      .addDuration(travelling(duties.last.placeEnd ?? base)),
+                )) &&
+            // duties.last.type == FtlDutyType.duty &&
+            newduty.type == FtlDutyType.duty) {
+          //last is duty
+          duties.add(newduty);
+        } else if (newduty.start!.diff(duties.last.end!, unit: Unit.minute) <
+            minimumrest(duties.last.placeEnd).inMinutes) {
+          //diff < minimumrest
+          //ilhim
+          final mergedduty = _addDutyDetail(
+              index: i,
+              duty: duties.isNotEmpty ? duties.last : FtlDuty(),
+              checkin: checkin);
+          duties[duties.length - 1] = mergedduty!;
+        } else {
+          //jdida
+          duties.add(newduty);
+        }
+      }
+    }
+  }
+
+  _calcfdpmax() {
+    for (var i = 0; i < duties.length; i++) {
+      FtlDuty duty = duties[i];
+      FtlDuty? lastduty = i == 0 ? null : duties[i - 1];
+      if (duty.type == FtlDutyType.fdp) {
+        String acclim = _acclimatized(
+            tzoffset: tzDiff(duty.placeStart!, lastduty?.placeEnd ?? base,
+                duty.start!.dateTime),
+            timeElapsed:
+                lastduty?.end!.dateTime.difference(duty.start!.dateTime) ??
+                    const Duration());
+        duties[i].acclim = acclim;
+        duties[i].reftime = changeTz(duty.start!, duty.placeStart ?? base).Hm;
+
+        Jiffy reftime = duty.start!;
+        if (duty.reportdelay2 != null && duty.reportdelay1 != null) {
+          if (duty.start!.dateTime
+                  .difference(duty.reportdelay2!.dateTime)
+                  .inMinutes <
+              (4 * 60)) {
+            reftime = duty.start!;
+            duty.start =
+                duty.notification2!.add(hours: 1).min(duty.reportdelay1!);
+          } else {
+            reftime = duty.reportdelay2!;
+            duty.start = duty.reportdelay2!;
+          }
+        } else if (duty.reportdelay1 != null) {
+          if (duty.start!.dateTime
+                  .difference(duty.reportdelay1!.dateTime)
+                  .inMinutes <
+              (4 * 60)) {
+            reftime = duty.start!;
+            duty.start = duty.reportdelay1!;
+          } else {
+            reftime = duty.reportdelay1!;
+            duty.start = duty.reportdelay1!;
+          }
+        }
+
+        switch (acclim) {
+          case "D":
+            // print("${duty.start?.yMMMd} ${duty.start?.toUtc().Hm}");
+            duties[i].fdpMax = fdpMaxBasic(
+                reftime: reftime, iata: duty.placeStart, sectors: duty.sectors);
+            duties[i].fdpExtMax = fdpMaxExtBasic(
+                reftime: reftime, iata: duty.placeStart, sectors: duty.sectors);
+          case "B":
+            duties[i].fdpMax = fdpMaxBasic(
+                reftime: reftime,
+                iata: lastduty?.placeEnd ?? lastduty?.placeStart ?? base,
+                sectors: duty.sectors);
+            duties[i].fdpExtMax = fdpMaxExtBasic(
+                reftime: reftime,
+                iata: lastduty?.placeEnd ?? lastduty?.placeStart ?? base,
+                sectors: duty.sectors);
+          case "X":
+            if (frms) {
+              duties[i].fdpMax = fdpMaxUnk(
+                  reftime: reftime,
+                  iata: duty.placeStart,
+                  sectors: duty.sectors);
+            } else {
+              duties[i].fdpMax = fdpMaxUnkFrms(
+                  reftime: reftime,
+                  iata: duty.placeStart,
+                  sectors: duty.sectors);
+            }
+            break;
+          default:
+        }
+      }
+    }
+  }
+
+  _calcLegal({Jiffy? date}) {
+    if (date == null) {
+      for (var i = 0; i < duties.length; i++) {
+        _checklegal(index: i);
+      }
+    } else {
+      duties.forEachIndexed((i, e) {
+        if (duties[i]
+            .start!
+            .isSameOrAfter(date.startOf(Unit.day).subtract(days: 1))) {
+          _checklegal(index: i);
+        }
+      });
+    }
+  }
+
+  Duration _sumDuration(List<DTInterval> x) =>
+      Duration(milliseconds: x.map((e) => e.duration.inMilliseconds).sum);
+
+  List<DTInterval> breaks(FtlDuty duty) {
+    List<DTInterval> out = [];
+    for (var e in duty.dutiesDetailsIndex) {
+      final dutydetail = dutiesDetails[e];
+      final deptravel = (base == (dutydetail.placeStart ?? ""))
+          ? Duration.zero
+          : travelling(dutydetail.placeStart ?? "");
+      final destravel = (base == (dutydetail.placeEnd ?? ""))
+          ? Duration.zero
+          : travelling(dutydetail.placeEnd ?? dutydetail.placeStart ?? "");
+      final start = _calcPreflight(dutydetail)!.subtractDuration(deptravel);
+      final finish = _calcPostflight(dutydetail)!.addDuration(destravel);
+      if (finish.isAfter(start)) {
+        out.add(DTInterval(start, finish));
+      }
+    }
+    return duty.interval.minusmany(out);
+  }
+
+  _checklegal({required int index}) {
+    FtlDuty duty = duties[index];
+
+    final date = changeTz(duty.start!, base).endOf(Unit.day);
+
+    // log("ftl: dutylenght date=${date.format(pattern: "ddMMMyy HHmm")} \n date-7=${date.subtract(days: 7 - 1).startOf(Unit.day).format(pattern: "ddMMMyy HHmm")}");
+    // print("${date.yMEd}");
+    final dutyLength = FtlDutyTotal(
+        date: date, dutyLength: Duration.zero, fltLength: Duration.zero)
+      ..dutylast7 = _sumDuration(
+              DTInterval(date.subtract(days: 7 - 1).startOf(Unit.day), date)
+                  .intersectionmany(dutiesAsInterval))
+          .add(_sumDuration(
+                  DTInterval(date.subtract(days: 7 - 1).startOf(Unit.day), date)
+                      .intersectionmany(stdbyAsInterval))
+              .multiply(0.25))
+      ..dutylast14 = _sumDuration(
+              DTInterval(date.subtract(days: 14 - 1).startOf(Unit.day), date)
+                  .intersectionmany(dutiesAsInterval))
+          .add(_sumDuration(DTInterval(
+                      date.subtract(days: 14 - 1).startOf(Unit.day), date)
+                  .intersectionmany(stdbyAsInterval))
+              .multiply(0.25))
+      ..dutylast28 = _sumDuration(
+              DTInterval(date.subtract(days: 28 - 1).startOf(Unit.day), date)
+                  .intersectionmany(dutiesAsInterval))
+          .add(_sumDuration(DTInterval(
+                      date.subtract(days: 28 - 1).startOf(Unit.day), date)
+                  .intersectionmany(stdbyAsInterval))
+              .multiply(0.25))
+      ..fltlast28 = _sumDuration(
+          DTInterval(date.subtract(days: 28 - 1).startOf(Unit.day), date)
+              .intersectionmany(fltsAsInterval))
+      ..fltlast12 = _sumDuration(DTInterval(
+              date.endOf(Unit.month).subtract(months: 12).startOf(Unit.month),
+              date)
+          .intersectionmany(fltsAsInterval))
+      ..fltyear = _sumDuration(DTInterval(date.startOf(Unit.year), date)
+          .intersectionmany(fltsAsInterval));
+    duty.dutyTotal = dutyLength;
+    // print("${date.yMEd} ${dutyLength.fltyear?.tohhmm}");
+
+    // dutylast7,
+    if ((dutyLength.dutylast7?.inMinutes ?? 0) > maxdutylast7.inMinutes) {
+      duty.legals.add(FtlLegal(
+          legalCause: FtlLegalCause.dutylast7,
+          legalCauseMsg:
+              "Max duty in 7 days ending ${duty.start?.format(pattern: "ddMMMyy")} exceeded: ${dutyLength.dutylast7?.tohhmm} / ${maxdutylast7.inHours}h"));
+    }
+    // dutylast14,
+    if ((dutyLength.dutylast14?.inMinutes ?? 0) > maxdutylast14.inMinutes) {
+      duty.legals.add(FtlLegal(
+          legalCause: FtlLegalCause.dutylast14,
+          legalCauseMsg:
+              "Max duty in 14 days ending ${duty.start?.format(pattern: "ddMMMyy")} exceeded: ${dutyLength.dutylast14?.tohhmm} / ${maxdutylast14.inHours}h"));
+    }
+    // dutylast28,
+    if ((dutyLength.dutylast28?.inMinutes ?? 0) > maxdutylast28.inMinutes) {
+      duty.legals.add(FtlLegal(
+          legalCause: FtlLegalCause.dutylast28,
+          legalCauseMsg:
+              "Max duty in 28 days ending ${duty.start?.format(pattern: "ddMMMyy")} exceeded: ${dutyLength.dutylast28?.tohhmm} / ${maxdutylast28.inHours}h"));
+    }
+    // fltlast28,
+    if ((dutyLength.fltlast28?.inMinutes ?? 0) > maxfltlast28.inMinutes) {
+      duty.legals.add(FtlLegal(
+          legalCause: FtlLegalCause.fltlast28,
+          legalCauseMsg:
+              "Max flight hours in 28 days ending ${duty.start?.format(pattern: "ddMMMyy")} exceeded: ${dutyLength.fltlast28?.tohhmm} / ${maxfltlast28.inHours}h"));
+    }
+
+    // fltyear,
+    if ((dutyLength.fltyear?.inMinutes ?? 0) > maxfltlastyear.inMinutes) {
+      duty.legals.add(FtlLegal(
+          legalCause: FtlLegalCause.fltyear,
+          legalCauseMsg:
+              "Max flight hours in calendar year ${duty.start?.format(pattern: "yyyy")} exceeded: ${dutyLength.fltyear?.tohhmm} / ${maxfltlastyear.inHours}h"));
+    }
+    // fltlast12,
+    if ((dutyLength.fltlast12?.inMinutes ?? 0) > maxfltlast12.inMinutes) {
+      duty.legals.add(FtlLegal(
+          legalCause: FtlLegalCause.fltlast12,
+          legalCauseMsg:
+              "Max flight hours in 12 months ending ${duty.start?.format(pattern: "ddMMMyy")} exceeded: ${dutyLength.fltlast12?.tohhmm} / ${maxfltlast12.inHours}h"));
+    }
+
+    // fdpmax,
+    if (duty.type == FtlDutyType.fdp && duty.fdpMax != null) {
+      if (duty.fdpLength.inMinutes <= duty.fdpMax!.inMinutes) {
+      } else if (duty.fdpExtMax != null &&
+          duty.fdpLength.inMinutes <= duty.fdpExtMax!.inMinutes) {
+        int nbFdpExt = 0;
+        for (var i = index;
+            i >= 0 &&
+                DTInterval(
+                        changeTz(duty.start!, base)
+                            .startOf(Unit.day)
+                            .subtract(days: 7),
+                        changeTz(duty.end!, base))
+                    .isOverlap(DTInterval(duties[i].start!, duties[i].end!));
+            i--) {
+          if (duties[i].fdpExt) nbFdpExt++;
+        }
+
+        if (nbFdpExt < 2) {
+          duty.fdpExt = true;
+          duties[index] = duty;
+        } else {
+          //nbext more than2 in 7days
+          duty.legals.add(FtlLegal(
+              legalCause: FtlLegalCause.fdpmax,
+              legalCauseMsg:
+                  "FDP Ext used more than twice in 7 days. ${duty.fdpLength.tohhmm} / ${duty.fdpMax?.tohhmm} / ext${duty.fdpExtMax?.tohhmm}"));
+        }
+      } else if (breaks(duty).any((e) => (e.duration.inHours > 3)
+          //&&
+          // ((duty.fdpLength.inMinutes) <=
+          //     (e.duration
+          //         .multiply(0.5)
+          //         .add(duty.fdpMax ?? Duration.zero)
+          //         .inMinutes)))) {
+          )) {
+        //split duty check
+        final fdpmaxbreak = breaks(duty)
+            .map((e) => ((e.duration.inHours > 3)
+                ? ((e.duration.multiply(0.5).add(duty.fdpMax ?? Duration.zero)))
+                : null))
+            .whereNotNull();
+        if (fdpmaxbreak.isNotEmpty && duty.fdpLength < fdpmaxbreak.first) {
+          duty.legals.add(FtlLegal(
+              legalCause: FtlLegalCause.fdpmax,
+              condition:
+                  "A break on ground must be considered to extend FDP Max to ${fdpmaxbreak.first.tohhmm}, ",
+              legalCauseMsg: "FDP is: ${duty.fdpLength.tohhmm}"));
+        } else {
+          duty.legals.add(FtlLegal(
+              legalCause: FtlLegalCause.fdpmax,
+              legalCauseMsg:
+                  "FDP Max is excedeed even with ground break of ${breaks(duty).map((e) => ((e.duration.inHours > 3) ? (e.duration) : null)).whereNotNull().first.tohhmm}.  FDP:${duty.fdpLength.tohhmm}/Max:${fdpmaxbreak.first.tohhmm}"));
+        }
+      } else {
+        duty.legals.add(FtlLegal(
+            legalCause: FtlLegalCause.fdpmax,
+            legalCauseMsg:
+                "FDP is ${duty.fdpLength.tohhmm}/Max:${duty.fdpMax?.tohhmm}"));
+      }
+    }
+    // restfdp without ext,
+    final FtlDuty? lastduty = (index > 0) ? duties[index - 1] : null;
+    // log("ftl: checking duty <${duty}> lastduty ended <${lastduty}>");
+
+    if (lastduty != null &&
+        duty.type == FtlDutyType.fdp &&
+        (lastduty.type == FtlDutyType.fdp ||
+            lastduty.type == FtlDutyType.duty ||
+            lastduty.dutiesDetailsIndex.any(
+                (e) => dutiesDetails[e].type == FtlDutyDetailsType.standby))) {
+      final rest = minimumrest(lastduty.placeEnd)
+          .max(duty.end!.dateTime.difference(duty.start!.dateTime));
+      duties[index - 1].restends = lastduty.end!.addDuration(rest);
+
+      if (lastduty.restends!.isAfter(duty.start!)) {
+        duty.legals.add(FtlLegal(
+            legalCause: FtlLegalCause.restfdp,
+            legalCauseMsg:
+                "Need more rest before starting FDP. rest: ${duty.start!.dateTime.difference(lastduty.end!.dateTime).tohhmm} / ${rest.tohhmm}"));
+      }
+    }
+    // restfdp with ext,
+    duty = duties[index];
+    FtlDuty? nextduty = (index < duties.length - 1) ? duties[index + 1] : null;
+    if (duty.fdpExt) {
+      final restbefore = (lastduty == null)
+          ? null
+          : minimumrest(lastduty.placeEnd)
+              .max(lastduty.end!.dateTime.difference(lastduty.start!.dateTime));
+      final restafter = (nextduty == null)
+          ? null
+          : minimumrest(duty.placeEnd)
+              .max(duty.end!.dateTime.difference(duty.start!.dateTime));
+//+2h rest before && 2h rest after
+      if ((lastduty == null ||
+              duty.start!.dateTime
+                      .difference(lastduty.end!.dateTime)
+                      .inMinutes >=
+                  (restbefore?.inMinutes ?? 0) + (2 * 60)) &&
+          (nextduty == null ||
+              nextduty.start!.dateTime
+                      .difference(duty.end!.dateTime)
+                      .inMinutes >=
+                  (restafter?.inMinutes ?? 0) + (60 * 2))) {
+      }
+//+4h rest after
+      else if ((nextduty == null ||
+          nextduty.start!.dateTime.difference(duty.end!.dateTime).inMinutes >=
+              (restafter?.inMinutes ?? 0) + (60 * 4))) {
+      }
+//not enough rest
+      else {
+        duty.restends = duty.end!.addDuration(restafter!).add(hours: 4);
+        duties[index] = duty;
+        nextduty.legals.add(FtlLegal(
+            legalCause: FtlLegalCause.restfdp,
+            legalCauseMsg:
+                "Need more rest after ExtFDP before starting FDP on ${nextduty.start?.format(pattern: "ddMMMyy HH:mm")} rest: ${nextduty.start?.dateTime.difference(duty.end!.dateTime).tohhmm} / ${restafter.add(const Duration(hours: 4)).tohhmm}"));
+        duties[index + 1] = nextduty;
+      }
+    }
+    // restrecurrent,
+
+    //   36h inc 2 local nights or (60h if 4 disruptive)
+    const Duration maxdutyrecrest = Duration(hours: 168);
+    Duration minrecrest = const Duration(hours: 36);
+
+    DTInterval rest = DTInterval(duty.start!, duty.start!);
+    var i = index;
+
+    int nbdisruptive = 0;
+
+    while (i >= 1 &&
+        !(rest.duration.inMinutes >= const Duration(hours: 36).inMinutes &&
+            rest.contains(DTInterval.fromHm(
+                apartir: changeTz(rest.start, duties[i].placeStart!).toUtc(),
+                h: 23,
+                m: 0,
+                duration: const Duration(hours: 7, minutes: 59),
+                ap: duties[i].placeStart!)) &&
+            rest.contains(DTInterval.fromHm(
+                apartir:
+                    changeTz(rest.start.add(hours: 24), duties[i].placeStart!)
+                        .toUtc(),
+                h: 23,
+                m: 0,
+                duration: const Duration(hours: 7, minutes: 59),
+                ap: duties[i].placeStart!)))) {
+      final thisduty = duties[i];
+
+      if (_isEarlyStart(thisduty) ||
+          _isLateFinish(thisduty) ||
+          _isNightDuty(thisduty)) {
+        //log("${thisduty}");
+        nbdisruptive++;
+        if (nbdisruptive == 4) {
+          minrecrest = const Duration(hours: 60);
+        }
+      }
+      i--;
+      rest = DTInterval(duties[i].end!, duties[i + 1].start!);
+    }
+
+    if (DTInterval(rest.end, duty.end!).duration.inMinutes >
+        maxdutyrecrest.inMinutes) {
+      duty.legals.add(FtlLegal(
+          legalCause: FtlLegalCause.restrecurrent,
+          legalCauseMsg:
+              "Before duty, need ${minrecrest.inHours}h rest including 2 local nights. from: ${rest.end.format(pattern: "ddMMMyy HH:mm")} ${DTInterval(rest.end, duty.end!).duration.tohhmm}/${maxdutyrecrest.tohhmm} "));
+    }
+
+    //   48h inc 2 local days
+
+    final startmonth = changeTz(duty.start!.startOf(Unit.month), base);
+    final endmonth = startmonth.endOf(Unit.month);
+    if (duty.interval.isOverlap(
+        DTInterval(endmonth.subtract(days: 4).add(minutes: 1), endmonth))) {
+      int nb48inmonth = 0;
+      List<FtlDuty> dutiesmonth = duties
+          .where((e) => DTInterval(startmonth, endmonth)
+              .isOverlap(DTInterval(e.start!, e.end!)))
+          .toList();
+
+      List<DTInterval> restmonth = DTInterval(startmonth, endmonth).minusmany(
+          dutiesmonth
+              .map((e) => DTInterval(changeTz(e.start!, e.placeStart!),
+                  changeTz(e.end!, e.placeStart!)))
+              .toList());
+      // print(restmonth);
+
+      while (restmonth.isNotEmpty) {
+        final e = restmonth.removeAt(0);
+
+        final localdays = DTInterval.fromHm(
+            apartir: e.start.toUtc(),
+            h: 0,
+            m: 0,
+            duration: const Duration(hours: 47, minutes: 59),
+            ap: base);
+        if (e.contains(localdays)) {
+          nb48inmonth++;
+          // print(
+          //     "2localdays: ${localdays.start.format(pattern: "ddMMMyy HH:mm")} ${localdays.end.format(pattern: "ddMMMyy HH:mm")}");
+          // print(
+          //     "in rest ${e.start.format(pattern: "ddMMMyy HH:mm")} ${e.end.format(pattern: "ddMMMyy HH:mm")}");
+          restmonth = [...e.minus(localdays), ...restmonth];
+        }
+      }
+
+      if (nb48inmonth == 0) {
+        duty.legals.add(FtlLegal(
+            legalCause: FtlLegalCause.restrecurrent,
+            legalCauseMsg:
+                "Before duty, need 2x2 local days rest from: ${startmonth.format(pattern: "ddMMMyy HH:mm")} to:  ${endmonth.format(pattern: "ddMMMyy HH:mm")}"));
+      } else if (nb48inmonth == 1 &&
+          DTInterval(endmonth.subtract(days: 2).add(minutes: 1), endmonth)
+              .isOverlap(duty.interval)) {
+        duty.legals.add(FtlLegal(
+            legalCause: FtlLegalCause.restrecurrent,
+            legalCauseMsg:
+                "Before duty, need 2x2 local days rest from: ${startmonth.format(pattern: "ddMMMyy HH:mm")} to:  ${endmonth.format(pattern: "ddMMMyy HH:mm")}"));
+      } else if (nb48inmonth == 1 &&
+          DTInterval(endmonth.subtract(days: 4).add(minutes: 1),
+                  endmonth.subtract(days: 2))
+              .isOverlap(duty.interval) &&
+          DTInterval(endmonth.subtract(days: 4).add(minutes: 1),
+                  endmonth.subtract(days: 2))
+              .intersectionmany(
+                  [...dutiesAsInterval, ...stdbyAsInterval]).isEmpty) {
+        duty.legals.add(FtlLegal(
+            legalCause: FtlLegalCause.restrecurrent,
+            legalCauseMsg:
+                "Before duty, need 2x2 local days rest from: ${startmonth.format(pattern: "ddMMMyy HH:mm")} to:  ${endmonth.format(pattern: "ddMMMyy HH:mm")}"));
+      }
+    }
+    // disruptive
+    duty.lateFinish = _isLateFinish(duty);
+    duty.earlyStart = _isEarlyStart(duty);
+    duty.nightDuty = _isNightDuty(duty);
+    if (duty.fdpStart != null &&
+        lastduty != null &&
+        base == lastduty.placeEnd &&
+        (_isLateFinish(lastduty) || _isNightDuty(lastduty)) &&
+        _isEarlyStart(duty)) {
+      // log("ftl: found late finish or nighty <${duty.start!.format(pattern: "ddMMMyy HH:mm")}");
+      if (!DTInterval(lastduty.end!, duty.start!).contains(DTInterval.fromHm(
+          apartir: changeTz(lastduty.end!, lastduty.placeEnd!).toUtc(),
+          h: 23,
+          m: 0,
+          duration: const Duration(hours: 7, minutes: 59),
+          ap: duty.placeStart!))) {
+        duty.legals.add(FtlLegal(
+            legalCause: FtlLegalCause.disruptive,
+            legalCauseMsg:
+                "Disruptive duty; one local night of rest is required before early departure."));
+      }
+    }
+
+    //consecutive night duty
+    if (_isConsecutiveNight(duty, lastduty)) {
+      var i = index;
+      final monthint = DTInterval(
+          changeTz(duty.start!.startOf(Unit.month), base),
+          changeTz(duty.start!.endOf(Unit.month), base));
+      int nbconsnight = 0;
+      while (i > 0 &&
+          duties[i]
+              .interval
+              .isOverlap(changeTzDt(monthint, duty.placeStart!))) {
+        if (_isConsecutiveNight(duties[i], duties[i - 1])) {
+          nbconsnight++;
+        }
+        i--;
+      }
+      if (nbconsnight > 1) {
+        duty.legals.add(FtlLegal(
+            legalCause: FtlLegalCause.disruptive,
+            legalCauseMsg:
+                "Consecutive nights is allowed only once per civil month."));
+      } else {
+        duty.legals.add(FtlLegal(
+            legalCause: FtlLegalCause.disruptive,
+            condition:
+                "Two consecutive night duties; crew member agreement is required.",
+            legalCauseMsg: ""));
+      }
+    }
+
+    //local day rest if night duty
+    if (lastduty != null && _isNightDuty(lastduty)) {
+      if (DTInterval.fromHm(
+              apartir: changeTz(lastduty.end!, lastduty.placeEnd!).toUtc(),
+              h: 0,
+              m: 0,
+              duration: const Duration(hours: 23, minutes: 59),
+              ap: lastduty.placeEnd!)
+          .isOverlap(changeTzDt(duty.interval, duty.placeStart!))) {
+        duty.legals.add(FtlLegal(
+            legalCause: FtlLegalCause.disruptive,
+            condition: "You can request a local day off after last night duty.",
+            legalCauseMsg: ""));
+      }
+    }
+
+    // if (duty.legals.isNotEmpty) {
+    //   log("${duty.legals.map((e) => e.legalCauseMsg)}");
+    // }
+    // duties[index] = duty;
+  }
+
+  bool _isConsecutiveNight(FtlDuty duty, FtlDuty? lastduty) =>
+      _isNightDuty(duty) &&
+      lastduty != null &&
+      DTInterval.fromHm(
+              apartir: changeTz(lastduty.end!, lastduty.placeEnd!).toUtc(),
+              h: 2,
+              m: 0,
+              duration: const Duration(hours: 2, minutes: 59),
+              ap: lastduty.placeEnd!)
+          .isOverlap(lastduty.interval.toUtc());
+
+  FtlDuty? _addDutyDetail(
+      {required int index, required FtlDuty duty, Jiffy? checkin}) {
+    final one = dutiesDetails[index];
+    if (_fdpList.contains(one.type)) {
+      duty.placeStart = duty.placeStart ?? one.placeStart;
+      duty.placeEnd = one.placeEnd;
+
+      //duty.start = duty.start ?? _calcPreflight(one).latest(checkin);
+      duty.start = duty.start ?? checkin ?? _calcPreflight(one);
+
+      duty.end = _calcPostflight(one);
+      if (one.type == FtlDutyDetailsType.flight) {
+        duty.type = FtlDutyType.fdp;
+        duty.sectors++;
+        duty.fdpStart = duty.start;
+        duty.fdpEnd = one.end;
+      } else {
+        duty.type = duty.type ?? FtlDutyType.duty;
+      }
+      duty.dutiesDetailsIndex.add(index);
+    } else if ([FtlDutyDetailsType.standby, FtlDutyDetailsType.reserve]
+        .contains(one.type)) {
+      duty.placeStart = duty.placeStart ?? one.placeStart;
+      duty.placeEnd = one.placeStart;
+      duty.start = duty.start ?? _calcPreflight(one);
+      duty.end = one.end;
+      duty.type = FtlDutyType.other;
+      duty.dutiesDetailsIndex.add(index);
+    } else if ([FtlDutyDetailsType.ground, FtlDutyDetailsType.sim]
+        .contains(one.type)) {
+      duty.placeStart = duty.placeStart ?? one.placeStart;
+      duty.placeEnd = one.placeStart;
+      duty.start = duty.start ?? _calcPreflight(one);
+      duty.end = one.end;
+      duty.type = duty.type ?? FtlDutyType.duty;
+      duty.dutiesDetailsIndex.add(index);
+    } else {
+      return null;
+    }
+    return duty;
+  }
+
+  static bool _isEarlyStart(FtlDuty x) {
+//500 559
+    // print(
+    //     "$x is earlystart: ${DTInterval.fromHm(apartir: changeTz(x.start!, x.placeStart!), h: 5, m: 0, duration: const Duration(minutes: 59)).include(x.start!)}");
+    return (x.fdpStart != null &&
+        DTInterval.fromHm(
+                apartir: changeTz(x.start!.subtract(hours: 24), x.placeStart!)
+                    .toUtc(),
+                h: 5,
+                m: 0,
+                duration: const Duration(minutes: 59),
+                ap: x.placeStart!)
+            .include(changeTz(x.start!, x.placeStart!)));
+  }
+
+  static bool _isLateFinish(FtlDuty x) {
+//2300  159
+    // print(
+    //     "$x is latefinish: ${DTInterval.fromHm(apartir: changeTz(x.start!, x.placeStart!), h: 23, m: 0, duration: const Duration(hours: 2, minutes: 59)).include(x.end!)}");
+    return (x.type != FtlDutyType.other) &&
+        (DTInterval.fromHm(
+                apartir: changeTz(x.start!, x.placeStart!).toUtc(),
+                h: 23,
+                m: 0,
+                duration: const Duration(hours: 2, minutes: 59),
+                ap: x.placeStart!)
+            .include(changeTz(x.end!, x.placeStart!)));
+  }
+
+  static bool _isNightDuty(FtlDuty x) {
+//200  459
+    // print(
+    //     "$x is Night duty: ${DTInterval.fromHm(apartir: changeTz(x.start!, x.placeStart!), h: 2, m: 0, duration: const Duration(hours: 2, minutes: 59)).include(x.end!)}");
+    return (x.type != FtlDutyType.other) &&
+        ((DTInterval.fromHm(
+                    apartir: x.start!.toUtc(),
+                    h: 2,
+                    m: 0,
+                    duration: const Duration(hours: 2, minutes: 59),
+                    ap: x.placeStart!))
+                .isOverlap(x.interval.toUtc()) ||
+            (DTInterval.fromHm(
+                    apartir: x.start!.subtract(days: 1).toUtc(),
+                    h: 2,
+                    m: 0,
+                    duration: const Duration(hours: 2, minutes: 59),
+                    ap: x.placeStart!))
+                .isOverlap(x.interval.toUtc()));
+  }
+
+  Duration tzDiff(String iata1, String iata2, DateTime sourceDateTime) {
+    // print(Airports.instance.find(iata1)!.timezoneid);
+    // print(Airports.instance.find(iata2)!.timezoneid);
+    final iata1Location = tz.getLocation(Airports.find(iata1)!.timezoneid);
+    final iata2Location = tz.getLocation(Airports.find(iata2)!.timezoneid);
+    tz.TZDateTime iata1TZDateTime =
+        tz.TZDateTime.from(sourceDateTime, iata1Location);
+    tz.TZDateTime iata2TZDateTime =
+        tz.TZDateTime.from(sourceDateTime, iata2Location);
+    return Duration(
+        minutes: (iata2TZDateTime.timeZoneOffset.inMinutes -
+                iata1TZDateTime.timeZoneOffset.inMinutes)
+            .abs());
+  }
+
+  String _acclimatized(
+      {required Duration tzoffset, required Duration timeElapsed}) {
+    if (tzoffset.inHours <= 2) {
+      return "D";
+    } else if (timeElapsed.inHours < 48) {
+      return "B";
+    } else if (tzoffset.inHours < 4 && timeElapsed.inHours >= 48) {
+      return "D";
+    } else if (tzoffset.inHours <= 6 && timeElapsed.inHours >= 72) {
+      return "D";
+    } else if (tzoffset.inHours <= 9 && timeElapsed.inHours >= 96) {
+      return "D";
+    } else if (tzoffset.inHours <= 12 && timeElapsed.inHours >= 120) {
+      return "D";
+    } else {
+      return "X";
+    }
+  }
+
+  static Jiffy changeTz(Jiffy jiffy, String iata) {
+    return Jiffy.parseFromDateTime(tz.TZDateTime.from(jiffy.dateTime,
+        tz.getLocation(Airports.find(iata)?.timezoneid ?? "UTC")));
+  }
+
+  static DTInterval changeTzDt(DTInterval dt, String iata) {
+    return DTInterval(changeTz(dt.start, iata), changeTz(dt.end, iata));
+  }
+
+  Duration _fdpMax(
+      {required reftime,
+      String? iata,
+      required int sectors,
+      required Map<String, List<String>> tab}) {
+    Jiffy reftjiffy = Jiffy.now();
+    String reft = "";
+
+    if (reftime is Jiffy && iata != null) {
+      reftjiffy = reftime;
+      reftjiffy = changeTz(reftjiffy, iata);
+      reft = reftjiffy.format(pattern: "HHmm");
+    } else if (reftime is DateTime && iata != null) {
+      reftjiffy = Jiffy.parseFromDateTime(reftime);
+      reftjiffy = changeTz(reftjiffy, iata);
+      reft = reftjiffy.format(pattern: "HHmm");
+    } else if (reftime is String && reftime.length == 4) {
+      reft = reftime;
+    } else if (reftime is String && iata != null) {
+      reftjiffy = Jiffy.parse(reftime);
+      reftjiffy = changeTz(reftjiffy, iata);
+
+      reft = reftjiffy.format(pattern: "HHmm");
+    } else {
+      throw ("_fdpMax type of reftime unrecognized!!!");
+    }
+    // print("$iata  $reft ${reftjiffy.toUtc().Hm}");
+    for (String key in tab.keys) {
+      List<String> intervalle = key.split("-");
+      int cmph1 = reft.compareTo(intervalle[0]);
+      int cmph2 = reft.compareTo(intervalle[1]);
+
+      bool inint = (intervalle[0].compareTo(intervalle[1]) < 0)
+          ? (cmph1 >= 0 && cmph2 <= 0)
+          : ((cmph1 >= 0 || cmph2 <= 0));
+      if (inint) {
+        final List<String>? lres = tab[key];
+        final int nrow = ((sectors == 1) ? 2 : sectors) - 2;
+        final String? res =
+            (lres != null && nrow < lres.length) ? lres[nrow] : null;
+        if (res != null && res != "Not allowed") {
+          return Duration(
+              hours: int.parse(res.split(".")[0]),
+              minutes: int.parse(res.split(".")[1]));
+        }
+      }
+    }
+    return Duration.zero;
+  }
+
+  Duration fdpMaxBasic(
+          {required reftime, String? iata, required int sectors}) =>
+      _fdpMax(reftime: reftime, iata: iata, sectors: sectors, tab: _fdpMaxTab);
+
+  Duration fdpMaxExtBasic(
+          {required reftime, String? iata, required int sectors}) =>
+      _fdpMax(
+          reftime: reftime, iata: iata, sectors: sectors, tab: _fdpMaxExtTab);
+
+  Duration fdpMaxUnk({required reftime, String? iata, required int sectors}) =>
+      _fdpMax(reftime: reftime, iata: iata, sectors: sectors, tab: _fdpUnkTab);
+
+  Duration fdpMaxUnkFrms(
+          {required reftime, String? iata, required int sectors}) =>
+      _fdpMax(
+          reftime: reftime, iata: iata, sectors: sectors, tab: _fdpUnkFrmsTab);
+
+//acclim
+
+  final Map<String, List<String>> _fdpMaxTab = {
+    "0600-1329": [
+      "13.00",
+      "12.30",
+      "12.00",
+      "11.30",
+      "11.00",
+      "10.30",
+      "10.00",
+      "09.30",
+      "09.00",
+    ],
+    "1330-1359": [
+      "12.45",
+      "12.15",
+      "11.45",
+      "11.15",
+      "10.45",
+      "10.15",
+      "09.45",
+      "09.15",
+      "09.00",
+    ],
+    "1400-1429": [
+      "12.30",
+      "12.00",
+      "11.30",
+      "11.00",
+      "10.30",
+      "10.00",
+      "09.30",
+      "09.00",
+      "09.00",
+    ],
+    "1430-1459": [
+      "12.15",
+      "11.45",
+      "11.15",
+      "10.45",
+      "10.15",
+      "09.45",
+      "09.15",
+      "09.00",
+      "09.00",
+    ],
+    "1500-1529": [
+      "12.00",
+      "11.30",
+      "11.00",
+      "10.30",
+      "10.00",
+      "09.30",
+      "09.00",
+      "09.00",
+      "09.00",
+    ],
+    "1530-1559": [
+      "11.45",
+      "11.15",
+      "10.45",
+      "10.15",
+      "09.45",
+      "09.15",
+      "09.00",
+      "09.00",
+      "09.00",
+    ],
+    "1600-1629": [
+      "11.30",
+      "11.00",
+      "10.30",
+      "10.00",
+      "09.30",
+      "09.00",
+      "09.00",
+      "09.00",
+      "09.00",
+    ],
+    "1630-1659": [
+      "11.15",
+      "10.45",
+      "10.15",
+      "09.45",
+      "09.15",
+      "09.00",
+      "09.00",
+      "09.00",
+      "09.00",
+    ],
+    "1700-0459": [
+      "11.00",
+      "10.30",
+      "10.00",
+      "09.30",
+      "09.00",
+      "09.00",
+      "09.00",
+      "09.00",
+      "09.00",
+    ],
+    "0500-0514": [
+      "12.00",
+      "11.30",
+      "11.00",
+      "10.30",
+      "10.00",
+      "09.30",
+      "09.00",
+      "09.00",
+      "09.00",
+    ],
+    "0515-0529": [
+      "12.15",
+      "11.45",
+      "11.15",
+      "10.45",
+      "10.15",
+      "09.45",
+      "09.15",
+      "09.00",
+      "09.00",
+    ],
+    "0530-0544": [
+      "12.30",
+      "12.00",
+      "11.30",
+      "11.00",
+      "10.30",
+      "10.00",
+      "09.30",
+      "09.00",
+      "09.00",
+    ],
+    "0545-0559": [
+      "12.45",
+      "12.15",
+      "11.45",
+      "11.15",
+      "10.45",
+      "10.15",
+      "09.45",
+      "09.15",
+      "09.00",
+    ],
+  };
+  final Map<String, List<String>> _fdpMaxExtTab = {
+    "0600-0614": [
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+    ],
+    "0615-0629": [
+      "13.15",
+      "12.45",
+      "12.15",
+      "11.45",
+    ],
+    "0630-0644": [
+      "13.30",
+      "13.00",
+      "12.30",
+      "12.00",
+    ],
+    "0645-0659": [
+      "13.45",
+      "13.15",
+      "12.45",
+      "12.15",
+    ],
+    "0700-1329": [
+      "14.00",
+      "13.30",
+      "13.00",
+      "12.30",
+    ],
+    "1330-1359": [
+      "13.45",
+      "13.15",
+      "12.45",
+      "Not allowed",
+    ],
+    "1400-1429": [
+      "13.30",
+      "13.00",
+      "12.30",
+      "Not allowed",
+    ],
+    "1430-1459": [
+      "13.15",
+      "12.45",
+      "12.15",
+      "Not allowed",
+    ],
+    "1500-1529": [
+      "13.00",
+      "12.30",
+      "12.00",
+      "Not allowed",
+    ],
+    "1530-1559": [
+      "12.45",
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+    ],
+    "1600-1629": [
+      "12.30",
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+    ],
+    "1630-1659": [
+      "12.15",
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+    ],
+    "1700-1729": [
+      "12.00",
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+    ],
+    "1730-1759": [
+      "11.45",
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+    ],
+    "1800-1829": [
+      "11.30",
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+    ],
+    "1830-1859": [
+      "11.15",
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+    ],
+    "1900-0359": [
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+    ],
+    "0400-0414": [
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+    ],
+    "0415-0429": [
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+    ],
+    "0430-0444": [
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+    ],
+    "0445-0459": [
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+    ],
+    "0500-0514": [
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+    ],
+    "0515-0529": [
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+    ],
+    "0530-0544": [
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+    ],
+    "0545-0559": [
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+    ]
+  };
+  final Map<String, List<String>> _fdpUnkTab = {
+    "0000-2359": ["11.00", "10:30", "10.00", "09.30", "09.00", "09.00", "09.00"]
+  };
+  final Map<String, List<String>> _fdpUnkFrmsTab = {
+    "0000-2359": ["12.00", "11.30", "11.00", "10.30", "10.00", "09.30", "09.00"]
+  };
+}
+
+class FtlDuty {
+  FtlDuty({this.start, this.end, this.placeStart, this.placeEnd, this.type});
+  @override
+  String toString() {
+    return "${start?.yMEd} ${start?.Hm} >>> ${end?.Hm} : ${fdpLength.inMinutes > 0 ? "FDP" : "DUTY"} ${dutiesDetailsIndex.length}leg(s)";
+  }
+
+  Jiffy? start;
+  Jiffy? end;
+  DTInterval get interval => DTInterval(start!, end!);
+  String? placeStart;
+  String? placeEnd;
+  FtlDutyType? type;
+  List<int> dutiesDetailsIndex = [];
+  Jiffy? fdpStart;
+  Jiffy? fdpEnd;
+  int sectors = 0;
+  Duration? fdpMax;
+  Duration? fdpExtMax;
+  //Duration? fdpIfRExtMax;//if inflight rest rest
+
+  bool fdpExt = false;
+  List<FtlLegal> legals = [];
+
+  Duration get dutyLength => (start != null && end != null)
+      ? end!.dateTime.difference(start!.dateTime)
+      : Duration.zero;
+  Duration get fdpLength => (fdpStart != null && fdpEnd != null)
+      ? fdpEnd!.dateTime.difference(fdpStart!.dateTime)
+      : Duration.zero;
+
+  // Duration? get rest => (dutyLength.max(Ftl.minimumrest(placeEnd)));
+  Jiffy? restends;
+
+  String? acclim;
+  String? reftime;
+
+  FtlDutyTotal? dutyTotal;
+
+  //Jiffy? report;
+  Jiffy? reportdelay1;
+  Jiffy? notification1;
+  Jiffy? reportdelay2;
+  Jiffy? notification2;
+  bool earlyStart = false;
+  bool lateFinish = false;
+  bool nightDuty = false;
+}
+
+class FtlLegal {
+  FtlLegal(
+      {required this.legalCause,
+      required this.legalCauseMsg,
+      this.legalIndex,
+      this.condition});
+  FtlLegalCause legalCause;
+  String legalCauseMsg;
+  int? legalIndex;
+  String? condition;
+}
+
+enum FtlDutyType { duty, fdp, other }
+
+class FtlDutyDetails {
+  FtlDutyDetails({
+    this.start,
+    this.end,
+    this.placeStart,
+    this.placeEnd,
+    this.type,
+    this.label,
+  });
+
+  Jiffy? start;
+  Jiffy? end;
+  DTInterval get interval => DTInterval(start!, end!);
+
+  Duration get duration => end!.dateTime.difference(start!.dateTime);
+  String? placeStart;
+  String? placeEnd;
+  FtlDutyDetailsType? type;
+  String get typeString {
+    switch (type) {
+      case FtlDutyDetailsType.flight:
+        return "FLT";
+      case FtlDutyDetailsType.dhflight:
+        return "DH-FLT";
+      case FtlDutyDetailsType.dhlimo:
+        return "DH-LIMO";
+      case FtlDutyDetailsType.sim:
+        return "SIM";
+      case FtlDutyDetailsType.standby:
+        return "STBY";
+      case FtlDutyDetailsType.reserve:
+        return "RSRV";
+      case FtlDutyDetailsType.ground:
+        return "GRND";
+
+      default:
+        return "UNK";
+    }
+  }
+
+  String? label;
+}
+
+enum FtlDutyDetailsType {
+  preflight,
+  flight,
+  postflight,
+  dhflight,
+  dhlimo,
+  ground,
+  standby,
+  reserve,
+  sim,
+//  training,
+//  other
+}
+
+class FtlDutyTotal {
+  FtlDutyTotal(
+      {required this.date, required this.dutyLength, required this.fltLength});
+  Jiffy date;
+  Duration dutyLength;
+  Duration fltLength;
+  Duration? dutylast7;
+  Duration? dutylast14;
+  Duration? dutylast28;
+  Duration? fltlast28;
+  Duration? fltyear;
+  Duration? fltlast12;
+}
+
+enum FtlLegalCause {
+  dutylast7,
+  dutylast14,
+  dutylast28,
+  fltlast28,
+  fltyear,
+  fltlast12,
+  fdpmax,
+  restfdp,
+  restrecurrent,
+  disruptive
+  //check duty length && flt length
+
+  //check fdp leength
+
+  //check rest before fdp
+  //check recurrent rest
+  //check disruptive sched
+}

+ 1557 - 0
lib/ftl/provider/ftl copy3.dart.bak

@@ -0,0 +1,1557 @@
+import 'dart:developer';
+
+import 'package:collection/collection.dart';
+import 'package:jiffy/jiffy.dart';
+import 'package:tp5/core/core.dart';
+import 'package:tp5/providers/airports.dart';
+import 'package:tp5/roster/models/duty.dart';
+
+import 'package:timezone/timezone.dart' as tz;
+
+class Ftl {
+  Duration minimumrest(String? station) =>
+      Duration(hours: station == base ? 12 : 12, minutes: 0, seconds: 0);
+  static Duration postflight = const Duration(minutes: 30);
+  static Duration preflight = const Duration(minutes: 60);
+  static Duration maxdutylast7 = const Duration(hours: 60);
+  static Duration maxdutylast14 = const Duration(hours: 110);
+  static Duration maxdutylast28 = const Duration(hours: 190);
+  static Duration maxfltlast28 = const Duration(hours: 100);
+  static Duration maxfltlastyear = const Duration(hours: 900);
+  static Duration maxfltlast12 = const Duration(hours: 1000);
+  Duration travelling(String station) {
+    if (base == station) return Duration.zero;
+    switch (station) {
+      case "DSS":
+        return const Duration(minutes: 60);
+      case "ORY":
+        return const Duration(minutes: 5);
+      default:
+        return const Duration(minutes: 30);
+    }
+  }
+
+  String base;
+
+  List<FtlDutyDetails> dutiesDetails = [];
+  List<Duty> clDuties = [];
+  List<FtlDuty> duties = [];
+
+  // List<FtlDutyTotal> dutiesLength = [];
+
+  List<DTInterval> get dutiesAsInterval => duties
+      .map((e) =>
+          (e.type != FtlDutyType.other) ? DTInterval(e.start!, e.end!) : null)
+      .whereNotNull()
+      .toList();
+  List<DTInterval> get stdbyAsInterval => dutiesDetails
+      .map((e) => (e.type == FtlDutyDetailsType.standby)
+          ? DTInterval(e.start!, e.end!)
+          : null)
+      .whereNotNull()
+      .toList();
+  List<DTInterval> get fltsAsInterval => dutiesDetails
+      .map((e) => (e.type == FtlDutyDetailsType.flight)
+          ? DTInterval(e.start!, e.end!)
+          : null)
+      .whereNotNull()
+      .toList();
+  bool frms;
+  Ftl({required this.dutiesDetails, required this.base, this.frms = false});
+  Ftl.fromCrewlink(
+      {required this.clDuties, required this.base, this.frms = false}) {
+    for (Duty one in clDuties) {
+      switch (one.type) {
+        case "flight":
+          dutiesDetails.add(
+            FtlDutyDetails(
+              start: one.start,
+              end: one.end,
+              placeStart: one.data["dep"],
+              placeEnd: one.data["des"],
+              type: FtlDutyDetailsType.flight,
+              label: one.data["label"],
+            ),
+          );
+        case "dhflight":
+          dutiesDetails.add(
+            FtlDutyDetails(
+              start: one.start,
+              end: one.end,
+              placeStart: one.data["dep"],
+              placeEnd: one.data["des"],
+              type: FtlDutyDetailsType.dhflight,
+              label: one.data["label"],
+            ),
+          );
+        case "dhlimo":
+          dutiesDetails.add(
+            FtlDutyDetails(
+              start: one.start,
+              end: one.end,
+              placeStart: one.data["dep"],
+              placeEnd: one.data["des"],
+              type: FtlDutyDetailsType.dhlimo,
+              label: one.data["label"],
+            ),
+          );
+        case "ground":
+          if (["SBY1", "SBY2", "SBY3"].contains(one.data["label"])) {
+            dutiesDetails.add(
+              FtlDutyDetails(
+                start: one.start,
+                end: one.end,
+                placeStart: one.data["dep"],
+                // placeEnd: one.data["des"],
+                type: FtlDutyDetailsType.standby,
+                label: one.data["label"],
+              ),
+            );
+          } else if (["R0"].contains(one.data["label"])) {
+            //reserve is not duty
+            dutiesDetails.add(
+              FtlDutyDetails(
+                start: one.start,
+                end: one.end,
+                placeStart: one.data["dep"],
+                // placeEnd: one.data["des"],
+                type: FtlDutyDetailsType.reserve,
+                label: one.data["label"],
+              ),
+            );
+          } else if ((one.data["actype"] ?? "") != "") {
+            dutiesDetails.add(
+              FtlDutyDetails(
+                start: one.start,
+                end: one.end,
+                placeStart: one.data["dep"],
+                // placeEnd: one.data["des"],
+                type: FtlDutyDetailsType.sim,
+                label: one.data["label"],
+              ),
+            );
+          } else if (one.start != null &&
+              one.end != null &&
+              one.end!.diff(one.start!, unit: Unit.hour).abs() < 12) {
+            dutiesDetails.add(
+              FtlDutyDetails(
+                start: one.start,
+                end: one.end,
+                placeStart: one.data["dep"],
+                // placeEnd: one.data["des"],
+                type: FtlDutyDetailsType.ground,
+                label: one.data["label"],
+              ),
+            );
+          } else {
+            // print("ftl: constr: unknown ${one.date} ${one.type} ${one.data}");
+          }
+        case "checkin":
+          dutiesDetails.add(
+            FtlDutyDetails(
+              start: one.start,
+              end: one.end,
+              placeStart: one.data["dep"],
+              // placeEnd: one.data["des"],
+              type: FtlDutyDetailsType.preflight,
+            ),
+          );
+
+        case "checkout":
+          dutiesDetails.add(
+            FtlDutyDetails(
+              start: one.start,
+              end: one.end,
+              // placeStart: one.data["dep"],
+              placeEnd: one.data["des"],
+              type: FtlDutyDetailsType.postflight,
+            ),
+          );
+        case "credit":
+        case "wholeday":
+          break;
+        default:
+        // print("ftl: unk: ${one.date} ${one.type} ${one.data}");
+      }
+    }
+  }
+
+  Jiffy? _calcPostflight(FtlDutyDetails xduty) {
+    if (xduty.end != null &&
+        [FtlDutyDetailsType.flight, FtlDutyDetailsType.dhflight]
+            .contains(xduty.type)) {
+      return xduty.end!.addDuration(postflight);
+    } else {
+      return xduty.end;
+    }
+  }
+
+  Jiffy? _calcPreflight(FtlDutyDetails xduty) {
+    if (xduty.start != null &&
+        [
+          FtlDutyDetailsType.flight,
+          FtlDutyDetailsType.dhflight,
+          FtlDutyDetailsType.dhlimo,
+          FtlDutyDetailsType.sim,
+        ].contains(xduty.type)) {
+      return (base == (xduty.placeStart ?? ""))
+          ? xduty.start!.subtractDuration(const Duration(minutes: 60))
+          : (xduty.start!.subtractDuration(preflight));
+    } else {
+      return xduty.start;
+    }
+  }
+
+  final List<FtlDutyDetailsType> _fdpList = [
+    FtlDutyDetailsType.flight,
+    FtlDutyDetailsType.dhflight,
+    FtlDutyDetailsType.dhlimo
+  ];
+
+  //calcul duties
+  calcduties({Jiffy? date}) {
+    log("FTL: start calcduties");
+    duties.clear();
+
+    final t1 = Jiffy.now();
+    _calcDuty();
+
+    log("FTL: start _calcfdpmax");
+    _calcfdpmax();
+
+    log("FTL: start _clacdutytotal");
+    // _calcDutyTotal();
+
+    log("FTL: start calclegal");
+    _calcLegal(date: date);
+
+    final t4 = Jiffy.now();
+    print(
+        "ftl: calcduties calculation :  ${t4.diff(t1, unit: Unit.second, asFloat: true)} ms");
+
+    log("FTL: finish calcduties");
+
+    // return [duties, dutiesDetails, dutiesLength];
+    return [duties, dutiesDetails];
+  }
+
+  _calcDuty() {
+    for (int i = 0; i < dutiesDetails.length; i++) {
+      var last = i > 0 ? dutiesDetails[i - 1] : null;
+
+      final checkin = ((last?.type == FtlDutyDetailsType.preflight)
+          ? dutiesDetails[i - 1].start
+          : null);
+
+      final newduty =
+          _addDutyDetail(index: i, duty: FtlDuty(), checkin: checkin);
+      //print("${dutiesDetails[i].type} $newduty");
+      if (newduty != null) {
+        if (duties.isEmpty) {
+          //first duty
+          duties.add(newduty);
+        } else if ((newduty.start!.isAfter(duties.last.end!)) &&
+            (duties.last.type == FtlDutyType.other ||
+                newduty.type == FtlDutyType.other)) {
+          //last and new are not duty nor fdp (other=>stdby or rsrv)
+          duties.add(newduty);
+        } else if ((newduty.start!
+                .subtractDuration(travelling(newduty.placeStart ?? base))
+                .isAfter(
+                  duties.last.end!
+                      .addDuration(travelling(duties.last.placeEnd ?? base)),
+                )) &&
+            // duties.last.type == FtlDutyType.duty &&
+            newduty.type == FtlDutyType.duty) {
+          //last is duty
+          duties.add(newduty);
+        } else if (newduty.start!.diff(duties.last.end!, unit: Unit.minute) <
+            minimumrest(duties.last.placeEnd).inMinutes) {
+          //diff < minimumrest
+          //ilhim
+          final mergedduty = _addDutyDetail(
+              index: i,
+              duty: duties.isNotEmpty ? duties.last : FtlDuty(),
+              checkin: checkin);
+          duties[duties.length - 1] = mergedduty!;
+        } else {
+          //jdida
+          duties.add(newduty);
+        }
+      }
+    }
+  }
+
+  _calcfdpmax() {
+    for (var i = 0; i < duties.length; i++) {
+      FtlDuty duty = duties[i];
+      FtlDuty? lastduty = i == 0 ? null : duties[i - 1];
+      if (duty.type == FtlDutyType.fdp) {
+        String acclim = _acclimatized(
+            tzoffset: tzDiff(duty.placeStart!, lastduty?.placeEnd ?? base,
+                duty.start!.dateTime),
+            timeElapsed:
+                lastduty?.end!.dateTime.difference(duty.start!.dateTime) ??
+                    const Duration());
+        duties[i].acclim = acclim;
+        duties[i].reftime = changeTz(duty.start!, duty.placeStart ?? base).Hm;
+
+        Jiffy reftime = duty.start!;
+        if (duty.reportdelay2 != null && duty.reportdelay1 != null) {
+          if (duty.start!.dateTime
+                  .difference(duty.reportdelay2!.dateTime)
+                  .inMinutes <
+              (4 * 60)) {
+            reftime = duty.start!;
+            duty.start =
+                duty.notification2!.add(hours: 1).min(duty.reportdelay1!);
+          } else {
+            reftime = duty.reportdelay2!;
+            duty.start = duty.reportdelay2!;
+          }
+        } else if (duty.reportdelay1 != null) {
+          if (duty.start!.dateTime
+                  .difference(duty.reportdelay1!.dateTime)
+                  .inMinutes <
+              (4 * 60)) {
+            reftime = duty.start!;
+            duty.start = duty.reportdelay1!;
+          } else {
+            reftime = duty.reportdelay1!;
+            duty.start = duty.reportdelay1!;
+          }
+        }
+
+        switch (acclim) {
+          case "D":
+            // print("${duty.start?.yMMMd} ${duty.start?.toUtc().Hm}");
+            duties[i].fdpMax = fdpMaxBasic(
+                reftime: reftime, iata: duty.placeStart, sectors: duty.sectors);
+            duties[i].fdpExtMax = fdpMaxExtBasic(
+                reftime: reftime, iata: duty.placeStart, sectors: duty.sectors);
+          case "B":
+            duties[i].fdpMax = fdpMaxBasic(
+                reftime: reftime,
+                iata: lastduty?.placeEnd ?? lastduty?.placeStart ?? base,
+                sectors: duty.sectors);
+            duties[i].fdpExtMax = fdpMaxExtBasic(
+                reftime: reftime,
+                iata: lastduty?.placeEnd ?? lastduty?.placeStart ?? base,
+                sectors: duty.sectors);
+          case "X":
+            if (frms) {
+              duties[i].fdpMax = fdpMaxUnk(
+                  reftime: reftime,
+                  iata: duty.placeStart,
+                  sectors: duty.sectors);
+            } else {
+              duties[i].fdpMax = fdpMaxUnkFrms(
+                  reftime: reftime,
+                  iata: duty.placeStart,
+                  sectors: duty.sectors);
+            }
+            break;
+          default:
+        }
+      }
+    }
+  }
+
+  _calcLegal({Jiffy? date}) {
+    if (date == null) {
+      for (var i = 0; i < duties.length; i++) {
+        _checklegal(index: i);
+      }
+    } else {
+      duties.forEachIndexed((i, e) {
+        if (duties[i]
+            .start!
+            .isSameOrAfter(date.startOf(Unit.day).subtract(days: 1))) {
+          _checklegal(index: i);
+        }
+      });
+    }
+  }
+
+  Duration _sumDuration(List<DTInterval> x) =>
+      Duration(milliseconds: x.map((e) => e.duration.inMilliseconds).sum);
+
+  List<DTInterval> breaks(FtlDuty duty) {
+    List<DTInterval> out = [];
+    for (var e in duty.dutiesDetailsIndex) {
+      final dutydetail = dutiesDetails[e];
+      final deptravel = (base == (dutydetail.placeStart ?? ""))
+          ? Duration.zero
+          : travelling(dutydetail.placeStart ?? "");
+      final destravel = (base == (dutydetail.placeEnd ?? ""))
+          ? Duration.zero
+          : travelling(dutydetail.placeEnd ?? dutydetail.placeStart ?? "");
+      final start = _calcPreflight(dutydetail)!.subtractDuration(deptravel);
+      final finish = _calcPostflight(dutydetail)!.addDuration(destravel);
+      if (finish.isAfter(start)) {
+        out.add(DTInterval(start, finish));
+      }
+    }
+    return duty.interval.minusmany(out);
+  }
+
+  _checklegal({required int index}) {
+    FtlDuty duty = duties[index];
+
+    final date = changeTz(duty.start!, base).endOf(Unit.day);
+
+    // log("ftl: dutylenght date=${date.format(pattern: "ddMMMyy HHmm")} \n date-7=${date.subtract(days: 7 - 1).startOf(Unit.day).format(pattern: "ddMMMyy HHmm")}");
+    // print("${date.yMEd}");
+    final dutyLength = FtlDutyTotal(
+        date: date, dutyLength: Duration.zero, fltLength: Duration.zero)
+      ..dutylast7 = _sumDuration(
+              DTInterval(date.subtract(days: 7 - 1).startOf(Unit.day), date)
+                  .intersectionmany(dutiesAsInterval))
+          .add(_sumDuration(
+                  DTInterval(date.subtract(days: 7 - 1).startOf(Unit.day), date)
+                      .intersectionmany(stdbyAsInterval))
+              .multiply(0.25))
+      ..dutylast14 = _sumDuration(
+              DTInterval(date.subtract(days: 14 - 1).startOf(Unit.day), date)
+                  .intersectionmany(dutiesAsInterval))
+          .add(_sumDuration(DTInterval(
+                      date.subtract(days: 14 - 1).startOf(Unit.day), date)
+                  .intersectionmany(stdbyAsInterval))
+              .multiply(0.25))
+      ..dutylast28 = _sumDuration(
+              DTInterval(date.subtract(days: 28 - 1).startOf(Unit.day), date)
+                  .intersectionmany(dutiesAsInterval))
+          .add(_sumDuration(DTInterval(
+                      date.subtract(days: 28 - 1).startOf(Unit.day), date)
+                  .intersectionmany(stdbyAsInterval))
+              .multiply(0.25))
+      ..fltlast28 = _sumDuration(
+          DTInterval(date.subtract(days: 28 - 1).startOf(Unit.day), date)
+              .intersectionmany(fltsAsInterval))
+      ..fltlast12 = _sumDuration(DTInterval(
+              date.endOf(Unit.month).subtract(months: 12).startOf(Unit.month),
+              date)
+          .intersectionmany(fltsAsInterval))
+      ..fltyear = _sumDuration(DTInterval(date.startOf(Unit.year), date)
+          .intersectionmany(fltsAsInterval));
+    duty.dutyTotal = dutyLength;
+    // print("${date.yMEd} ${dutyLength.fltyear?.tohhmm}");
+
+    // dutylast7,
+    if ((dutyLength.dutylast7?.inMinutes ?? 0) > maxdutylast7.inMinutes) {
+      duty.legals.add(FtlLegal(
+          legalCause: FtlLegalCause.dutylast7,
+          legalCauseMsg:
+              "Max duty in 7 days ending ${duty.start?.format(pattern: "ddMMMyy")} exceeded: ${dutyLength.dutylast7?.tohhmm} / ${maxdutylast7.inHours}h"));
+    }
+    // dutylast14,
+    if ((dutyLength.dutylast14?.inMinutes ?? 0) > maxdutylast14.inMinutes) {
+      duty.legals.add(FtlLegal(
+          legalCause: FtlLegalCause.dutylast14,
+          legalCauseMsg:
+              "Max duty in 14 days ending ${duty.start?.format(pattern: "ddMMMyy")} exceeded: ${dutyLength.dutylast14?.tohhmm} / ${maxdutylast14.inHours}h"));
+    }
+    // dutylast28,
+    if ((dutyLength.dutylast28?.inMinutes ?? 0) > maxdutylast28.inMinutes) {
+      duty.legals.add(FtlLegal(
+          legalCause: FtlLegalCause.dutylast28,
+          legalCauseMsg:
+              "Max duty in 28 days ending ${duty.start?.format(pattern: "ddMMMyy")} exceeded: ${dutyLength.dutylast28?.tohhmm} / ${maxdutylast28.inHours}h"));
+    }
+    // fltlast28,
+    if ((dutyLength.fltlast28?.inMinutes ?? 0) > maxfltlast28.inMinutes) {
+      duty.legals.add(FtlLegal(
+          legalCause: FtlLegalCause.fltlast28,
+          legalCauseMsg:
+              "Max flight hours in 28 days ending ${duty.start?.format(pattern: "ddMMMyy")} exceeded: ${dutyLength.fltlast28?.tohhmm} / ${maxfltlast28.inHours}h"));
+    }
+
+    // fltyear,
+    if ((dutyLength.fltyear?.inMinutes ?? 0) > maxfltlastyear.inMinutes) {
+      duty.legals.add(FtlLegal(
+          legalCause: FtlLegalCause.fltyear,
+          legalCauseMsg:
+              "Max flight hours in calendar year ${duty.start?.format(pattern: "yyyy")} exceeded: ${dutyLength.fltyear?.tohhmm} / ${maxfltlastyear.inHours}h"));
+    }
+    // fltlast12,
+    if ((dutyLength.fltlast12?.inMinutes ?? 0) > maxfltlast12.inMinutes) {
+      duty.legals.add(FtlLegal(
+          legalCause: FtlLegalCause.fltlast12,
+          legalCauseMsg:
+              "Max flight hours in 12 months ending ${duty.start?.format(pattern: "ddMMMyy")} exceeded: ${dutyLength.fltlast12?.tohhmm} / ${maxfltlast12.inHours}h"));
+    }
+
+    // fdpmax,
+    if (duty.type == FtlDutyType.fdp && duty.fdpMax != null) {
+      if (duty.fdpLength.inMinutes <= duty.fdpMax!.inMinutes) {
+      } else if (duty.fdpExtMax != null &&
+          duty.fdpLength.inMinutes <= duty.fdpExtMax!.inMinutes) {
+        int nbFdpExt = 0;
+        for (var i = index;
+            i >= 0 &&
+                DTInterval(
+                        changeTz(duty.start!, base)
+                            .startOf(Unit.day)
+                            .subtract(days: 7),
+                        changeTz(duty.end!, base))
+                    .isOverlap(DTInterval(duties[i].start!, duties[i].end!));
+            i--) {
+          if (duties[i].fdpExt) nbFdpExt++;
+        }
+
+        if (nbFdpExt < 2) {
+          duty.fdpExt = true;
+          duties[index] = duty;
+        } else {
+          //nbext more than2 in 7days
+          duty.legals.add(FtlLegal(
+              legalCause: FtlLegalCause.fdpmax,
+              legalCauseMsg:
+                  "FDP Ext used more than twice in 7 days. ${duty.fdpLength.tohhmm} / ${duty.fdpMax?.tohhmm} / ext${duty.fdpExtMax?.tohhmm}"));
+        }
+      } else if (breaks(duty).any((e) => (e.duration.inHours > 3)
+          //&&
+          // ((duty.fdpLength.inMinutes) <=
+          //     (e.duration
+          //         .multiply(0.5)
+          //         .add(duty.fdpMax ?? Duration.zero)
+          //         .inMinutes)))) {
+          )) {
+        //split duty check
+        final fdpmaxbreak = breaks(duty)
+            .map((e) => ((e.duration.inHours > 3)
+                ? ((e.duration.multiply(0.5).add(duty.fdpMax ?? Duration.zero)))
+                : null))
+            .whereNotNull();
+        if (fdpmaxbreak.isNotEmpty && duty.fdpLength < fdpmaxbreak.first) {
+          duty.legals.add(FtlLegal(
+              legalCause: FtlLegalCause.fdpmax,
+              condition:
+                  "A break on ground must be considered to extend FDP Max to ${fdpmaxbreak.first.tohhmm}, ",
+              legalCauseMsg: "FDP is: ${duty.fdpLength.tohhmm}"));
+        } else {
+          duty.legals.add(FtlLegal(
+              legalCause: FtlLegalCause.fdpmax,
+              legalCauseMsg:
+                  "FDP Max is excedeed even with ground break of ${breaks(duty).map((e) => ((e.duration.inHours > 3) ? (e.duration) : null)).whereNotNull().first.tohhmm}.  FDP:${duty.fdpLength.tohhmm}/Max:${fdpmaxbreak.first.tohhmm}"));
+        }
+      } else {
+        duty.legals.add(FtlLegal(
+            legalCause: FtlLegalCause.fdpmax,
+            legalCauseMsg:
+                "FDP is ${duty.fdpLength.tohhmm}/Max:${duty.fdpMax?.tohhmm}"));
+      }
+    }
+    // restfdp without ext,
+    final FtlDuty? lastduty = (index > 0) ? duties[index - 1] : null;
+    // log("ftl: checking duty <${duty}> lastduty ended <${lastduty}>");
+
+    if (lastduty != null &&
+        duty.type == FtlDutyType.fdp &&
+        (lastduty.type == FtlDutyType.fdp ||
+            lastduty.type == FtlDutyType.duty ||
+            lastduty.dutiesDetailsIndex.any(
+                (e) => dutiesDetails[e].type == FtlDutyDetailsType.standby))) {
+      final rest = minimumrest(lastduty.placeEnd)
+          .max(duty.end!.dateTime.difference(duty.start!.dateTime));
+      duties[index - 1].restends = lastduty.end!.addDuration(rest);
+
+      if (lastduty.restends!.isAfter(duty.start!)) {
+        duty.legals.add(FtlLegal(
+            legalCause: FtlLegalCause.restfdp,
+            legalCauseMsg:
+                "Need more rest before starting FDP. rest: ${duty.start!.dateTime.difference(lastduty.end!.dateTime).tohhmm} / ${rest.tohhmm}"));
+      }
+    }
+    // restfdp with ext,
+    duty = duties[index];
+    FtlDuty? nextduty = (index < duties.length - 1) ? duties[index + 1] : null;
+    if (duty.fdpExt) {
+      final restbefore = (lastduty == null)
+          ? null
+          : minimumrest(lastduty.placeEnd)
+              .max(lastduty.end!.dateTime.difference(lastduty.start!.dateTime));
+      final restafter = (nextduty == null)
+          ? null
+          : minimumrest(duty.placeEnd)
+              .max(duty.end!.dateTime.difference(duty.start!.dateTime));
+//+2h rest before && 2h rest after
+      if ((lastduty == null ||
+              duty.start!.dateTime
+                      .difference(lastduty.end!.dateTime)
+                      .inMinutes >=
+                  (restbefore?.inMinutes ?? 0) + (2 * 60)) &&
+          (nextduty == null ||
+              nextduty.start!.dateTime
+                      .difference(duty.end!.dateTime)
+                      .inMinutes >=
+                  (restafter?.inMinutes ?? 0) + (60 * 2))) {
+      }
+//+4h rest after
+      else if ((nextduty == null ||
+          nextduty.start!.dateTime.difference(duty.end!.dateTime).inMinutes >=
+              (restafter?.inMinutes ?? 0) + (60 * 4))) {
+      }
+//not enough rest
+      else {
+        duty.restends = duty.end!.addDuration(restafter!).add(hours: 4);
+        duties[index] = duty;
+        nextduty.legals.add(FtlLegal(
+            legalCause: FtlLegalCause.restfdp,
+            legalCauseMsg:
+                "Need more rest after ExtFDP before starting FDP on ${nextduty.start?.format(pattern: "ddMMMyy HH:mm")} rest: ${nextduty.start?.dateTime.difference(duty.end!.dateTime).tohhmm} / ${restafter.add(const Duration(hours: 4)).tohhmm}"));
+        duties[index + 1] = nextduty;
+      }
+    }
+    // restrecurrent,
+
+    //   36h inc 2 local nights or (60h if 4 disruptive)
+    const Duration maxdutyrecrest = Duration(hours: 168);
+    Duration minrecrest = const Duration(hours: 36);
+    bool foundrecrest = false;
+
+    var i = index;
+    int nbdisruptive = 0;
+    DTInterval rest = DTInterval(duty.start!.toUtc(), duty.start!.toUtc());
+    String restPlace = duty.placeStart!;
+    DTInterval dutyl = DTInterval(duty.start!.toUtc(), duty.end!.toUtc());
+    Jiffy lastdutystart = duty.start!.toUtc();
+
+    //find last recrest
+    while (i >= 1 && !(foundrecrest)) {
+      i--;
+
+      lastdutystart = duties[i + 1].start!.toUtc();
+      dutyl = DTInterval(lastdutystart, duty.end!.toUtc());
+      bool disruptive = (_isEarlyStart(duties[i + 1]) ||
+          _isLateFinish(duties[i + 1]) ||
+          _isNightDuty(duties[i + 1]));
+
+      while (i >= 1 &&
+          duties[i]
+              .legals
+              .any((e) => e.legalCause == FtlLegalCause.restrecurrent)) {
+        i--;
+      }
+
+      rest = DTInterval(duties[i].end!.toUtc(), lastdutystart);
+      restPlace = duties[i].placeStart!;
+
+      foundrecrest = (rest.duration.inMinutes >= minrecrest.inMinutes) &&
+          rest.contains(DTInterval.fromHm(
+              apartir: rest.start.toUtc(),
+              h: 23,
+              m: 0,
+              duration: const Duration(hours: 7, minutes: 59),
+              ap: restPlace)) &&
+          rest.contains(DTInterval.fromHm(
+              apartir: rest.start.toUtc().add(days: 1),
+              h: 23,
+              m: 0,
+              duration: const Duration(hours: 7, minutes: 59),
+              ap: restPlace));
+
+      if (foundrecrest) print("ftl: recrest 36h: $rest");
+      if (!foundrecrest && disruptive) {
+        nbdisruptive++;
+      }
+    }
+
+    //check if 60h rest needed
+
+    //find recrest before last recrest
+
+    int j = i;
+    final duty2 = duties[j];
+    bool foundrecrest2 = false;
+    int nbdisruptive2 = 0;
+    DTInterval rest2 = DTInterval(duty2.start!.toUtc(), duty2.start!.toUtc());
+    String restPlace2 = duty2.placeStart!;
+    DTInterval dutyl2 = DTInterval(duty2.start!.toUtc(), duty2.end!.toUtc());
+    Jiffy lastdutystart2 = duty2.start!.toUtc();
+    if (duty.start!.isBefore(rest.start.add(hours: 60))) {
+      print("ftl 60h: $duty");
+      while (j >= 1 && !(foundrecrest2)) {
+        j--;
+
+        lastdutystart2 = duties[j + 1].start!.toUtc();
+        dutyl2 = DTInterval(lastdutystart2, duty2.end!.toUtc());
+        bool disruptive2 = (_isEarlyStart(duties[j + 1]) ||
+            _isLateFinish(duties[j + 1]) ||
+            _isNightDuty(duties[j + 1]));
+
+        while (j >= 1 &&
+            duties[j]
+                .legals
+                .any((e) => e.legalCause == FtlLegalCause.restrecurrent)) {
+          j--;
+        }
+
+        rest2 = DTInterval(duties[j].end!.toUtc(), lastdutystart2);
+        restPlace2 = duties[j].placeStart!;
+
+        foundrecrest2 = (rest2.duration.inMinutes >= minrecrest.inMinutes) &&
+            rest2.contains(DTInterval.fromHm(
+                apartir: rest2.start.toUtc(),
+                h: 23,
+                m: 0,
+                duration: const Duration(hours: 7, minutes: 59),
+                ap: restPlace2)) &&
+            rest2.contains(DTInterval.fromHm(
+                apartir: rest2.start.toUtc().add(days: 1),
+                h: 23,
+                m: 0,
+                duration: const Duration(hours: 7, minutes: 59),
+                ap: restPlace2));
+
+        // if (foundrecrest) print(rest);
+        if (!foundrecrest2 && disruptive2) {
+          nbdisruptive2++;
+        }
+      }
+      print("ftl: duty 60h: nbdisruptive: $nbdisruptive2");
+    }
+
+    if (nbdisruptive2 >= 4) {
+      const restlength = Duration(hours: 60);
+      final lastduty = ((index >= 2 &&
+              duties[index - 1]
+                  .legals
+                  .any((e) => e.legalCause == FtlLegalCause.restrecurrent))
+          ? duties[index - 2]
+          : duties[index - 1]);
+      duty.legals.add(FtlLegal(
+          legalCause: FtlLegalCause.restrecurrent,
+          legalCauseMsg:
+              "More than 4 disruptive duties found before recurrent rest. Need ${restlength.inHours}h rest. Next duty can be started after <${lastduty.end!.addDuration(restlength).max(DTInterval.fromHm(apartir: lastduty.end!.toUtc(), h: 23, m: 0, duration: const Duration(hours: 7, minutes: 59), ap: lastduty.placeEnd!).end.add(days: 1)).format(pattern: "ddMMMyy HH:mm")}>"));
+    } else {
+      // if (DTInterval(duties[i].start!, duty.end!).duration.inMinutes >
+      // print("ftl nb disruptive $nbdisruptive");
+      if (dutyl.duration.inMinutes > maxdutyrecrest.inMinutes) {
+        final restlength =
+            ((nbdisruptive <= 4) ? minrecrest : const Duration(hours: 60));
+        final lastduty = ((index >= 2 &&
+                duties[index - 1]
+                    .legals
+                    .any((e) => e.legalCause == FtlLegalCause.restrecurrent))
+            ? duties[index - 2]
+            : duties[index - 1]);
+        duty.legals.add(FtlLegal(
+            legalCause: FtlLegalCause.restrecurrent,
+            legalCauseMsg:
+                "More than ${maxdutyrecrest.inHours}h without recurrent rest. from <${rest.end.format(pattern: "ddMMMyy HH:mm")}> to <${duty.end!.format(pattern: "ddMMMyy HH:mm")}> ${DTInterval(rest.end, duty.end!).duration.tohhmm}. ${maxdutyrecrest.inHours}h ends at <${rest.end.addDuration(maxdutyrecrest).format(pattern: "ddMMMyy HH:mm")}>. Need ${restlength.inHours}h rest. Next duty can be started after <${lastduty.end!.addDuration(restlength).max(DTInterval.fromHm(apartir: lastduty.end!.toUtc(), h: 23, m: 0, duration: const Duration(hours: 7, minutes: 59), ap: lastduty.placeEnd!).end.add(days: 1)).format(pattern: "ddMMMyy HH:mm")}>"));
+      }
+    }
+
+    //   48h inc 2 local days
+
+    final startmonth = changeTz(duty.start!.startOf(Unit.month), base);
+    final endmonth = startmonth.endOf(Unit.month);
+    if (duty.interval.isOverlap(
+        DTInterval(endmonth.subtract(days: 4).add(minutes: 1), endmonth))) {
+      int nb48inmonth = 0;
+      List<FtlDuty> dutiesmonth = duties
+          .where((e) => DTInterval(startmonth, endmonth)
+              .isOverlap(DTInterval(e.start!, e.end!)))
+          .toList();
+
+      List<DTInterval> restmonth = DTInterval(startmonth, endmonth).minusmany(
+          dutiesmonth
+              .map((e) => DTInterval(changeTz(e.start!, e.placeStart!),
+                  changeTz(e.end!, e.placeStart!)))
+              .toList());
+      // print(restmonth);
+
+      while (restmonth.isNotEmpty) {
+        final e = restmonth.removeAt(0);
+
+        final localdays = DTInterval.fromHm(
+            apartir: e.start.toUtc(),
+            h: 0,
+            m: 0,
+            duration: const Duration(hours: 47, minutes: 59),
+            ap: base);
+        if (e.contains(localdays)) {
+          nb48inmonth++;
+          // print(
+          //     "2localdays: ${localdays.start.format(pattern: "ddMMMyy HH:mm")} ${localdays.end.format(pattern: "ddMMMyy HH:mm")}");
+          // print(
+          //     "in rest ${e.start.format(pattern: "ddMMMyy HH:mm")} ${e.end.format(pattern: "ddMMMyy HH:mm")}");
+          restmonth = [...e.minus(localdays), ...restmonth];
+        }
+      }
+
+      if (nb48inmonth == 0) {
+        duty.legals.add(FtlLegal(
+            legalCause: FtlLegalCause.restrecurrent,
+            legalCauseMsg:
+                "Before duty, need 2x2 local days rest from: ${startmonth.format(pattern: "ddMMMyy HH:mm")} to:  ${endmonth.format(pattern: "ddMMMyy HH:mm")}"));
+      } else if (nb48inmonth == 1 &&
+          DTInterval(endmonth.subtract(days: 2).add(minutes: 1), endmonth)
+              .isOverlap(duty.interval)) {
+        duty.legals.add(FtlLegal(
+            legalCause: FtlLegalCause.restrecurrent,
+            legalCauseMsg:
+                "Before duty, need 2x2 local days rest from: ${startmonth.format(pattern: "ddMMMyy HH:mm")} to:  ${endmonth.format(pattern: "ddMMMyy HH:mm")}"));
+      } else if (nb48inmonth == 1 &&
+          DTInterval(endmonth.subtract(days: 4).add(minutes: 1),
+                  endmonth.subtract(days: 2))
+              .isOverlap(duty.interval) &&
+          DTInterval(endmonth.subtract(days: 4).add(minutes: 1),
+                  endmonth.subtract(days: 2))
+              .intersectionmany(
+                  [...dutiesAsInterval, ...stdbyAsInterval]).isEmpty) {
+        duty.legals.add(FtlLegal(
+            legalCause: FtlLegalCause.restrecurrent,
+            legalCauseMsg:
+                "Before duty, need 2x2 local days rest from: ${startmonth.format(pattern: "ddMMMyy HH:mm")} to:  ${endmonth.format(pattern: "ddMMMyy HH:mm")}"));
+      }
+    }
+    // disruptive
+    duty.lateFinish = _isLateFinish(duty);
+    duty.earlyStart = _isEarlyStart(duty);
+    duty.nightDuty = _isNightDuty(duty);
+    if (duty.fdpStart != null &&
+        lastduty != null &&
+        base == lastduty.placeEnd &&
+        (_isLateFinish(lastduty) || _isNightDuty(lastduty)) &&
+        _isEarlyStart(duty)) {
+      // log("ftl: found late finish or nighty <${duty.start!.format(pattern: "ddMMMyy HH:mm")}");
+      if (!DTInterval(lastduty.end!, duty.start!).contains(DTInterval.fromHm(
+          apartir: changeTz(lastduty.end!, lastduty.placeEnd!).toUtc(),
+          h: 23,
+          m: 0,
+          duration: const Duration(hours: 7, minutes: 59),
+          ap: duty.placeStart!))) {
+        duty.legals.add(FtlLegal(
+            legalCause: FtlLegalCause.disruptive,
+            legalCauseMsg:
+                "Disruptive duty; one local night of rest is required before early departure."));
+      }
+    }
+
+    //consecutive night duty
+    if (_isConsecutiveNight(duty, lastduty)) {
+      var i = index;
+      final monthint = DTInterval(
+          changeTz(duty.start!.startOf(Unit.month), base),
+          changeTz(duty.start!.endOf(Unit.month), base));
+      int nbconsnight = 0;
+      while (i > 0 &&
+          duties[i]
+              .interval
+              .isOverlap(changeTzDt(monthint, duty.placeStart!))) {
+        if (_isConsecutiveNight(duties[i], duties[i - 1])) {
+          nbconsnight++;
+        }
+        i--;
+      }
+      if (nbconsnight > 1) {
+        duty.legals.add(FtlLegal(
+            legalCause: FtlLegalCause.disruptive,
+            legalCauseMsg:
+                "Consecutive nights is allowed only once per civil month."));
+      } else {
+        duty.legals.add(FtlLegal(
+            legalCause: FtlLegalCause.disruptive,
+            condition:
+                "Two consecutive night duties; crew member agreement is required.",
+            legalCauseMsg: ""));
+      }
+    }
+
+    //local day rest if night duty
+    if (lastduty != null && _isNightDuty(lastduty)) {
+      if (DTInterval.fromHm(
+              apartir: changeTz(lastduty.end!, lastduty.placeEnd!).toUtc(),
+              h: 0,
+              m: 0,
+              duration: const Duration(hours: 23, minutes: 59),
+              ap: lastduty.placeEnd!)
+          .isOverlap(changeTzDt(duty.interval, duty.placeStart!))) {
+        duty.legals.add(FtlLegal(
+            legalCause: FtlLegalCause.disruptive,
+            condition: "You can request a local day off after last night duty.",
+            legalCauseMsg: ""));
+      }
+    }
+
+    // if (duty.legals.isNotEmpty) {
+    //   log("${duty.legals.map((e) => e.legalCauseMsg)}");
+    // }
+    // duties[index] = duty;
+  }
+
+  bool _isConsecutiveNight(FtlDuty duty, FtlDuty? lastduty) =>
+      _isNightDuty(duty) &&
+      lastduty != null &&
+      DTInterval.fromHm(
+              apartir: changeTz(lastduty.end!, lastduty.placeEnd!).toUtc(),
+              h: 2,
+              m: 0,
+              duration: const Duration(hours: 2, minutes: 59),
+              ap: lastduty.placeEnd!)
+          .isOverlap(lastduty.interval.toUtc());
+
+  FtlDuty? _addDutyDetail(
+      {required int index, required FtlDuty duty, Jiffy? checkin}) {
+    final one = dutiesDetails[index];
+    if (_fdpList.contains(one.type)) {
+      duty.placeStart = duty.placeStart ?? one.placeStart;
+      duty.placeEnd = one.placeEnd;
+
+      //duty.start = duty.start ?? _calcPreflight(one).latest(checkin);
+      duty.start = duty.start ?? checkin ?? _calcPreflight(one);
+
+      duty.end = _calcPostflight(one);
+      if (one.type == FtlDutyDetailsType.flight) {
+        duty.type = FtlDutyType.fdp;
+        duty.sectors++;
+        duty.fdpStart = duty.start;
+        duty.fdpEnd = one.end;
+      } else {
+        duty.type = duty.type ?? FtlDutyType.duty;
+      }
+      duty.dutiesDetailsIndex.add(index);
+    } else if ([FtlDutyDetailsType.standby, FtlDutyDetailsType.reserve]
+        .contains(one.type)) {
+      duty.placeStart = duty.placeStart ?? one.placeStart;
+      duty.placeEnd = one.placeStart;
+      duty.start = duty.start ?? _calcPreflight(one);
+      duty.end = one.end;
+      duty.type = FtlDutyType.other;
+      duty.dutiesDetailsIndex.add(index);
+    } else if ([FtlDutyDetailsType.ground, FtlDutyDetailsType.sim]
+        .contains(one.type)) {
+      duty.placeStart = duty.placeStart ?? one.placeStart;
+      duty.placeEnd = one.placeStart;
+      duty.start = duty.start ?? _calcPreflight(one);
+      duty.end = one.end;
+      duty.type = duty.type ?? FtlDutyType.duty;
+      duty.dutiesDetailsIndex.add(index);
+    } else {
+      return null;
+    }
+    return duty;
+  }
+
+  static bool _isEarlyStart(FtlDuty x) {
+//500 559
+    // print(
+    //     "$x is earlystart: ${DTInterval.fromHm(apartir: changeTz(x.start!, x.placeStart!), h: 5, m: 0, duration: const Duration(minutes: 59)).include(x.start!)}");
+    return (x.fdpStart != null &&
+        DTInterval.fromHm(
+                apartir: changeTz(x.start!.subtract(hours: 24), x.placeStart!)
+                    .toUtc(),
+                h: 5,
+                m: 0,
+                duration: const Duration(minutes: 59),
+                ap: x.placeStart!)
+            .include(changeTz(x.start!, x.placeStart!)));
+  }
+
+  static bool _isLateFinish(FtlDuty x) {
+//2300  159
+    // print(
+    //     "$x is latefinish: ${DTInterval.fromHm(apartir: changeTz(x.start!, x.placeStart!), h: 23, m: 0, duration: const Duration(hours: 2, minutes: 59)).include(x.end!)}");
+    return (x.type != FtlDutyType.other) &&
+        (DTInterval.fromHm(
+                apartir: changeTz(x.start!, x.placeStart!).toUtc(),
+                h: 23,
+                m: 0,
+                duration: const Duration(hours: 2, minutes: 59),
+                ap: x.placeStart!)
+            .include(changeTz(x.end!, x.placeStart!)));
+  }
+
+  static bool _isNightDuty(FtlDuty x) {
+//200  459
+    // print(
+    //     "$x is Night duty: ${DTInterval.fromHm(apartir: changeTz(x.start!, x.placeStart!), h: 2, m: 0, duration: const Duration(hours: 2, minutes: 59)).include(x.end!)}");
+    return (x.type != FtlDutyType.other) &&
+        ((DTInterval.fromHm(
+                    apartir: x.start!.toUtc(),
+                    h: 2,
+                    m: 0,
+                    duration: const Duration(hours: 2, minutes: 59),
+                    ap: x.placeStart!))
+                .isOverlap(x.interval.toUtc()) ||
+            (DTInterval.fromHm(
+                    apartir: x.start!.subtract(days: 1).toUtc(),
+                    h: 2,
+                    m: 0,
+                    duration: const Duration(hours: 2, minutes: 59),
+                    ap: x.placeStart!))
+                .isOverlap(x.interval.toUtc()));
+  }
+
+  Duration tzDiff(String iata1, String iata2, DateTime sourceDateTime) {
+    // print(Airports.instance.find(iata1)!.timezoneid);
+    // print(Airports.instance.find(iata2)!.timezoneid);
+    final iata1Location = tz.getLocation(Airports.find(iata1)!.timezoneid);
+    final iata2Location = tz.getLocation(Airports.find(iata2)!.timezoneid);
+    tz.TZDateTime iata1TZDateTime =
+        tz.TZDateTime.from(sourceDateTime, iata1Location);
+    tz.TZDateTime iata2TZDateTime =
+        tz.TZDateTime.from(sourceDateTime, iata2Location);
+    return Duration(
+        minutes: (iata2TZDateTime.timeZoneOffset.inMinutes -
+                iata1TZDateTime.timeZoneOffset.inMinutes)
+            .abs());
+  }
+
+  String _acclimatized(
+      {required Duration tzoffset, required Duration timeElapsed}) {
+    if (tzoffset.inHours <= 2) {
+      return "D";
+    } else if (timeElapsed.inHours < 48) {
+      return "B";
+    } else if (tzoffset.inHours < 4 && timeElapsed.inHours >= 48) {
+      return "D";
+    } else if (tzoffset.inHours <= 6 && timeElapsed.inHours >= 72) {
+      return "D";
+    } else if (tzoffset.inHours <= 9 && timeElapsed.inHours >= 96) {
+      return "D";
+    } else if (tzoffset.inHours <= 12 && timeElapsed.inHours >= 120) {
+      return "D";
+    } else {
+      return "X";
+    }
+  }
+
+  static Jiffy changeTz(Jiffy jiffy, String iata) {
+    return Jiffy.parseFromDateTime(tz.TZDateTime.from(jiffy.dateTime,
+        tz.getLocation(Airports.find(iata)?.timezoneid ?? "UTC")));
+  }
+
+  static DTInterval changeTzDt(DTInterval dt, String iata) {
+    return DTInterval(changeTz(dt.start, iata), changeTz(dt.end, iata));
+  }
+
+  Duration _fdpMax(
+      {required reftime,
+      String? iata,
+      required int sectors,
+      required Map<String, List<String>> tab}) {
+    Jiffy reftjiffy = Jiffy.now();
+    String reft = "";
+
+    if (reftime is Jiffy && iata != null) {
+      reftjiffy = reftime;
+      reftjiffy = changeTz(reftjiffy, iata);
+      reft = reftjiffy.format(pattern: "HHmm");
+    } else if (reftime is DateTime && iata != null) {
+      reftjiffy = Jiffy.parseFromDateTime(reftime);
+      reftjiffy = changeTz(reftjiffy, iata);
+      reft = reftjiffy.format(pattern: "HHmm");
+    } else if (reftime is String && reftime.length == 4) {
+      reft = reftime;
+    } else if (reftime is String && iata != null) {
+      reftjiffy = Jiffy.parse(reftime);
+      reftjiffy = changeTz(reftjiffy, iata);
+
+      reft = reftjiffy.format(pattern: "HHmm");
+    } else {
+      throw ("_fdpMax type of reftime unrecognized!!!");
+    }
+    // print("$iata  $reft ${reftjiffy.toUtc().Hm}");
+    for (String key in tab.keys) {
+      List<String> intervalle = key.split("-");
+      int cmph1 = reft.compareTo(intervalle[0]);
+      int cmph2 = reft.compareTo(intervalle[1]);
+
+      bool inint = (intervalle[0].compareTo(intervalle[1]) < 0)
+          ? (cmph1 >= 0 && cmph2 <= 0)
+          : ((cmph1 >= 0 || cmph2 <= 0));
+      if (inint) {
+        final List<String>? lres = tab[key];
+        final int nrow = ((sectors == 1) ? 2 : sectors) - 2;
+        final String? res =
+            (lres != null && nrow < lres.length) ? lres[nrow] : null;
+        if (res != null && res != "Not allowed") {
+          return Duration(
+              hours: int.parse(res.split(".")[0]),
+              minutes: int.parse(res.split(".")[1]));
+        }
+      }
+    }
+    return Duration.zero;
+  }
+
+  Duration fdpMaxBasic(
+          {required reftime, String? iata, required int sectors}) =>
+      _fdpMax(reftime: reftime, iata: iata, sectors: sectors, tab: _fdpMaxTab);
+
+  Duration fdpMaxExtBasic(
+          {required reftime, String? iata, required int sectors}) =>
+      _fdpMax(
+          reftime: reftime, iata: iata, sectors: sectors, tab: _fdpMaxExtTab);
+
+  Duration fdpMaxUnk({required reftime, String? iata, required int sectors}) =>
+      _fdpMax(reftime: reftime, iata: iata, sectors: sectors, tab: _fdpUnkTab);
+
+  Duration fdpMaxUnkFrms(
+          {required reftime, String? iata, required int sectors}) =>
+      _fdpMax(
+          reftime: reftime, iata: iata, sectors: sectors, tab: _fdpUnkFrmsTab);
+
+//acclim
+
+  final Map<String, List<String>> _fdpMaxTab = {
+    "0600-1329": [
+      "13.00",
+      "12.30",
+      "12.00",
+      "11.30",
+      "11.00",
+      "10.30",
+      "10.00",
+      "09.30",
+      "09.00",
+    ],
+    "1330-1359": [
+      "12.45",
+      "12.15",
+      "11.45",
+      "11.15",
+      "10.45",
+      "10.15",
+      "09.45",
+      "09.15",
+      "09.00",
+    ],
+    "1400-1429": [
+      "12.30",
+      "12.00",
+      "11.30",
+      "11.00",
+      "10.30",
+      "10.00",
+      "09.30",
+      "09.00",
+      "09.00",
+    ],
+    "1430-1459": [
+      "12.15",
+      "11.45",
+      "11.15",
+      "10.45",
+      "10.15",
+      "09.45",
+      "09.15",
+      "09.00",
+      "09.00",
+    ],
+    "1500-1529": [
+      "12.00",
+      "11.30",
+      "11.00",
+      "10.30",
+      "10.00",
+      "09.30",
+      "09.00",
+      "09.00",
+      "09.00",
+    ],
+    "1530-1559": [
+      "11.45",
+      "11.15",
+      "10.45",
+      "10.15",
+      "09.45",
+      "09.15",
+      "09.00",
+      "09.00",
+      "09.00",
+    ],
+    "1600-1629": [
+      "11.30",
+      "11.00",
+      "10.30",
+      "10.00",
+      "09.30",
+      "09.00",
+      "09.00",
+      "09.00",
+      "09.00",
+    ],
+    "1630-1659": [
+      "11.15",
+      "10.45",
+      "10.15",
+      "09.45",
+      "09.15",
+      "09.00",
+      "09.00",
+      "09.00",
+      "09.00",
+    ],
+    "1700-0459": [
+      "11.00",
+      "10.30",
+      "10.00",
+      "09.30",
+      "09.00",
+      "09.00",
+      "09.00",
+      "09.00",
+      "09.00",
+    ],
+    "0500-0514": [
+      "12.00",
+      "11.30",
+      "11.00",
+      "10.30",
+      "10.00",
+      "09.30",
+      "09.00",
+      "09.00",
+      "09.00",
+    ],
+    "0515-0529": [
+      "12.15",
+      "11.45",
+      "11.15",
+      "10.45",
+      "10.15",
+      "09.45",
+      "09.15",
+      "09.00",
+      "09.00",
+    ],
+    "0530-0544": [
+      "12.30",
+      "12.00",
+      "11.30",
+      "11.00",
+      "10.30",
+      "10.00",
+      "09.30",
+      "09.00",
+      "09.00",
+    ],
+    "0545-0559": [
+      "12.45",
+      "12.15",
+      "11.45",
+      "11.15",
+      "10.45",
+      "10.15",
+      "09.45",
+      "09.15",
+      "09.00",
+    ],
+  };
+  final Map<String, List<String>> _fdpMaxExtTab = {
+    "0600-0614": [
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+    ],
+    "0615-0629": [
+      "13.15",
+      "12.45",
+      "12.15",
+      "11.45",
+    ],
+    "0630-0644": [
+      "13.30",
+      "13.00",
+      "12.30",
+      "12.00",
+    ],
+    "0645-0659": [
+      "13.45",
+      "13.15",
+      "12.45",
+      "12.15",
+    ],
+    "0700-1329": [
+      "14.00",
+      "13.30",
+      "13.00",
+      "12.30",
+    ],
+    "1330-1359": [
+      "13.45",
+      "13.15",
+      "12.45",
+      "Not allowed",
+    ],
+    "1400-1429": [
+      "13.30",
+      "13.00",
+      "12.30",
+      "Not allowed",
+    ],
+    "1430-1459": [
+      "13.15",
+      "12.45",
+      "12.15",
+      "Not allowed",
+    ],
+    "1500-1529": [
+      "13.00",
+      "12.30",
+      "12.00",
+      "Not allowed",
+    ],
+    "1530-1559": [
+      "12.45",
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+    ],
+    "1600-1629": [
+      "12.30",
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+    ],
+    "1630-1659": [
+      "12.15",
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+    ],
+    "1700-1729": [
+      "12.00",
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+    ],
+    "1730-1759": [
+      "11.45",
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+    ],
+    "1800-1829": [
+      "11.30",
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+    ],
+    "1830-1859": [
+      "11.15",
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+    ],
+    "1900-0359": [
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+    ],
+    "0400-0414": [
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+    ],
+    "0415-0429": [
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+    ],
+    "0430-0444": [
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+    ],
+    "0445-0459": [
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+    ],
+    "0500-0514": [
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+    ],
+    "0515-0529": [
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+    ],
+    "0530-0544": [
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+    ],
+    "0545-0559": [
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+    ]
+  };
+  final Map<String, List<String>> _fdpUnkTab = {
+    "0000-2359": ["11.00", "10:30", "10.00", "09.30", "09.00", "09.00", "09.00"]
+  };
+  final Map<String, List<String>> _fdpUnkFrmsTab = {
+    "0000-2359": ["12.00", "11.30", "11.00", "10.30", "10.00", "09.30", "09.00"]
+  };
+}
+
+class FtlDuty {
+  FtlDuty({this.start, this.end, this.placeStart, this.placeEnd, this.type});
+  @override
+  String toString() {
+    return "${start?.yMEd} ${start?.Hm} >>> ${end?.Hm} : ${fdpLength.inMinutes > 0 ? "FDP" : "DUTY"} ${dutiesDetailsIndex.length}leg(s)";
+  }
+
+  Jiffy? start;
+  Jiffy? end;
+  DTInterval get interval => DTInterval(start!, end!);
+  String? placeStart;
+  String? placeEnd;
+  FtlDutyType? type;
+  List<int> dutiesDetailsIndex = [];
+  Jiffy? fdpStart;
+  Jiffy? fdpEnd;
+  int sectors = 0;
+  Duration? fdpMax;
+  Duration? fdpExtMax;
+  //Duration? fdpIfRExtMax;//if inflight rest rest
+
+  bool fdpExt = false;
+  List<FtlLegal> legals = [];
+
+  Duration get dutyLength => (start != null && end != null)
+      ? end!.dateTime.difference(start!.dateTime)
+      : Duration.zero;
+  Duration get fdpLength => (fdpStart != null && fdpEnd != null)
+      ? fdpEnd!.dateTime.difference(fdpStart!.dateTime)
+      : Duration.zero;
+
+  // Duration? get rest => (dutyLength.max(Ftl.minimumrest(placeEnd)));
+  Jiffy? restends;
+
+  String? acclim;
+  String? reftime;
+
+  FtlDutyTotal? dutyTotal;
+
+  //Jiffy? report;
+  Jiffy? reportdelay1;
+  Jiffy? notification1;
+  Jiffy? reportdelay2;
+  Jiffy? notification2;
+  bool earlyStart = false;
+  bool lateFinish = false;
+  bool nightDuty = false;
+}
+
+class FtlLegal {
+  FtlLegal(
+      {required this.legalCause,
+      required this.legalCauseMsg,
+      this.legalIndex,
+      this.condition});
+  FtlLegalCause legalCause;
+  String legalCauseMsg;
+  int? legalIndex;
+  String? condition;
+}
+
+enum FtlDutyType { duty, fdp, other }
+
+class FtlDutyDetails {
+  FtlDutyDetails({
+    this.start,
+    this.end,
+    this.placeStart,
+    this.placeEnd,
+    this.type,
+    this.label,
+  });
+
+  Jiffy? start;
+  Jiffy? end;
+  DTInterval get interval => DTInterval(start!, end!);
+
+  Duration get duration => end!.dateTime.difference(start!.dateTime);
+  String? placeStart;
+  String? placeEnd;
+  FtlDutyDetailsType? type;
+  String get typeString {
+    switch (type) {
+      case FtlDutyDetailsType.flight:
+        return "FLT";
+      case FtlDutyDetailsType.dhflight:
+        return "DH-FLT";
+      case FtlDutyDetailsType.dhlimo:
+        return "DH-LIMO";
+      case FtlDutyDetailsType.sim:
+        return "SIM";
+      case FtlDutyDetailsType.standby:
+        return "STBY";
+      case FtlDutyDetailsType.reserve:
+        return "RSRV";
+      case FtlDutyDetailsType.ground:
+        return "GRND";
+
+      default:
+        return "UNK";
+    }
+  }
+
+  String? label;
+}
+
+enum FtlDutyDetailsType {
+  preflight,
+  flight,
+  postflight,
+  dhflight,
+  dhlimo,
+  ground,
+  standby,
+  reserve,
+  sim,
+//  training,
+//  other
+}
+
+class FtlDutyTotal {
+  FtlDutyTotal(
+      {required this.date, required this.dutyLength, required this.fltLength});
+  Jiffy date;
+  Duration dutyLength;
+  Duration fltLength;
+  Duration? dutylast7;
+  Duration? dutylast14;
+  Duration? dutylast28;
+  Duration? fltlast28;
+  Duration? fltyear;
+  Duration? fltlast12;
+}
+
+enum FtlLegalCause {
+  dutylast7,
+  dutylast14,
+  dutylast28,
+  fltlast28,
+  fltyear,
+  fltlast12,
+  fdpmax,
+  restfdp,
+  restrecurrent,
+  disruptive
+  //check duty length && flt length
+
+  //check fdp leength
+
+  //check rest before fdp
+  //check recurrent rest
+  //check disruptive sched
+}

+ 1558 - 0
lib/ftl/provider/ftl.dart

@@ -0,0 +1,1558 @@
+import 'dart:developer';
+
+import 'package:collection/collection.dart';
+import 'package:jiffy/jiffy.dart';
+import 'package:tp5/core/core.dart';
+import 'package:tp5/providers/airports.dart';
+import 'package:tp5/roster/models/duty.dart';
+
+import 'package:timezone/timezone.dart' as tz;
+
+class Ftl {
+  Duration minimumrest(String? station) =>
+      Duration(hours: station == base ? 12 : 12, minutes: 0, seconds: 0);
+  static Duration postflight = const Duration(minutes: 30);
+  static Duration preflight = const Duration(minutes: 60);
+  static Duration maxdutylast7 = const Duration(hours: 60);
+  static Duration maxdutylast14 = const Duration(hours: 110);
+  static Duration maxdutylast28 = const Duration(hours: 190);
+  static Duration maxfltlast28 = const Duration(hours: 100);
+  static Duration maxfltlastyear = const Duration(hours: 900);
+  static Duration maxfltlast12 = const Duration(hours: 1000);
+  Duration travelling(String station) {
+    if (base == station) return Duration.zero;
+    switch (station) {
+      case "DSS":
+        return const Duration(minutes: 60);
+      case "ORY":
+        return const Duration(minutes: 5);
+      default:
+        return const Duration(minutes: 30);
+    }
+  }
+
+  String base;
+
+  List<FtlDutyDetails> dutiesDetails = [];
+  List<Duty> clDuties = [];
+  List<FtlDuty> duties = [];
+
+  // List<FtlDutyTotal> dutiesLength = [];
+
+  List<DTInterval> get dutiesAsInterval => duties
+      .map((e) =>
+          (e.type != FtlDutyType.other) ? DTInterval(e.start!, e.end!) : null)
+      .whereNotNull()
+      .toList();
+  List<DTInterval> get stdbyAsInterval => dutiesDetails
+      .map((e) => (e.type == FtlDutyDetailsType.standby)
+          ? DTInterval(e.start!, e.end!)
+          : null)
+      .whereNotNull()
+      .toList();
+  List<DTInterval> get fltsAsInterval => dutiesDetails
+      .map((e) => (e.type == FtlDutyDetailsType.flight)
+          ? DTInterval(e.start!, e.end!)
+          : null)
+      .whereNotNull()
+      .toList();
+  bool frms;
+  Ftl({required this.dutiesDetails, required this.base, this.frms = false});
+  Ftl.fromCrewlink(
+      {required this.clDuties, required this.base, this.frms = false}) {
+    for (Duty one in clDuties) {
+      switch (one.type) {
+        case "flight":
+          dutiesDetails.add(
+            FtlDutyDetails(
+              start: one.start,
+              end: one.end,
+              placeStart: one.data["dep"],
+              placeEnd: one.data["des"],
+              type: FtlDutyDetailsType.flight,
+              label: one.data["label"],
+            ),
+          );
+        case "dhflight":
+          dutiesDetails.add(
+            FtlDutyDetails(
+              start: one.start,
+              end: one.end,
+              placeStart: one.data["dep"],
+              placeEnd: one.data["des"],
+              type: FtlDutyDetailsType.dhflight,
+              label: one.data["label"],
+            ),
+          );
+        case "dhlimo":
+          dutiesDetails.add(
+            FtlDutyDetails(
+              start: one.start,
+              end: one.end,
+              placeStart: one.data["dep"],
+              placeEnd: one.data["des"],
+              type: FtlDutyDetailsType.dhlimo,
+              label: one.data["label"],
+            ),
+          );
+        case "ground":
+          if (["SBY1", "SBY2", "SBY3"].contains(one.data["label"])) {
+            dutiesDetails.add(
+              FtlDutyDetails(
+                start: one.start,
+                end: one.end,
+                placeStart: one.data["dep"],
+                // placeEnd: one.data["des"],
+                type: FtlDutyDetailsType.standby,
+                label: one.data["label"],
+              ),
+            );
+          } else if (["R0"].contains(one.data["label"])) {
+            //reserve is not duty
+            dutiesDetails.add(
+              FtlDutyDetails(
+                start: one.start,
+                end: one.end,
+                placeStart: one.data["dep"],
+                // placeEnd: one.data["des"],
+                type: FtlDutyDetailsType.reserve,
+                label: one.data["label"],
+              ),
+            );
+          } else if ((one.data["actype"] ?? "") != "") {
+            dutiesDetails.add(
+              FtlDutyDetails(
+                start: one.start,
+                end: one.end,
+                placeStart: one.data["dep"],
+                // placeEnd: one.data["des"],
+                type: FtlDutyDetailsType.sim,
+                label: one.data["label"],
+              ),
+            );
+          } else if (one.start != null &&
+              one.end != null &&
+              one.end!.diff(one.start!, unit: Unit.hour).abs() < 12) {
+            dutiesDetails.add(
+              FtlDutyDetails(
+                start: one.start,
+                end: one.end,
+                placeStart: one.data["dep"],
+                // placeEnd: one.data["des"],
+                type: FtlDutyDetailsType.ground,
+                label: one.data["label"],
+              ),
+            );
+          } else {
+            // print("ftl: constr: unknown ${one.date} ${one.type} ${one.data}");
+          }
+        case "checkin":
+          dutiesDetails.add(
+            FtlDutyDetails(
+              start: one.start,
+              end: one.end,
+              placeStart: one.data["dep"],
+              // placeEnd: one.data["des"],
+              type: FtlDutyDetailsType.preflight,
+            ),
+          );
+
+        case "checkout":
+          dutiesDetails.add(
+            FtlDutyDetails(
+              start: one.start,
+              end: one.end,
+              // placeStart: one.data["dep"],
+              placeEnd: one.data["des"],
+              type: FtlDutyDetailsType.postflight,
+            ),
+          );
+        case "credit":
+        case "wholeday":
+          break;
+        default:
+        // print("ftl: unk: ${one.date} ${one.type} ${one.data}");
+      }
+    }
+  }
+
+  Jiffy? _calcPostflight(FtlDutyDetails xduty) {
+    if (xduty.end != null &&
+        [FtlDutyDetailsType.flight, FtlDutyDetailsType.dhflight]
+            .contains(xduty.type)) {
+      return xduty.end!.addDuration(postflight);
+    } else {
+      return xduty.end;
+    }
+  }
+
+  Jiffy? _calcPreflight(FtlDutyDetails xduty) {
+    if (xduty.start != null &&
+        [
+          FtlDutyDetailsType.flight,
+          FtlDutyDetailsType.dhflight,
+          FtlDutyDetailsType.dhlimo,
+          FtlDutyDetailsType.sim,
+        ].contains(xduty.type)) {
+      return (base == (xduty.placeStart ?? ""))
+          ? xduty.start!.subtractDuration(const Duration(minutes: 60))
+          : (xduty.start!.subtractDuration(preflight));
+    } else {
+      return xduty.start;
+    }
+  }
+
+  final List<FtlDutyDetailsType> _fdpList = [
+    FtlDutyDetailsType.flight,
+    FtlDutyDetailsType.dhflight,
+    FtlDutyDetailsType.dhlimo
+  ];
+
+  //calcul duties
+  calcduties({Jiffy? date}) {
+    log("FTL: start calcduties");
+    duties.clear();
+
+    final t1 = Jiffy.now();
+    _calcDuty();
+
+    log("FTL: start _calcfdpmax");
+    _calcfdpmax();
+
+    log("FTL: start _clacdutytotal");
+    // _calcDutyTotal();
+
+    log("FTL: start calclegal");
+    _calcLegal(date: date);
+
+    final t4 = Jiffy.now();
+    print(
+        "ftl: calcduties calculation :  ${t4.diff(t1, unit: Unit.second, asFloat: true)} ms");
+
+    log("FTL: finish calcduties");
+
+    // return [duties, dutiesDetails, dutiesLength];
+    return [duties, dutiesDetails];
+  }
+
+  _calcDuty() {
+    for (int i = 0; i < dutiesDetails.length; i++) {
+      var last = i > 0 ? dutiesDetails[i - 1] : null;
+
+      final checkin = ((last?.type == FtlDutyDetailsType.preflight)
+          ? dutiesDetails[i - 1].start
+          : null);
+
+      final newduty =
+          _addDutyDetail(index: i, duty: FtlDuty(), checkin: checkin);
+      //print("${dutiesDetails[i].type} $newduty");
+      if (newduty != null) {
+        if (duties.isEmpty) {
+          //first duty
+          duties.add(newduty);
+        } else if ((newduty.start!.isAfter(duties.last.end!)) &&
+            (duties.last.type == FtlDutyType.other ||
+                newduty.type == FtlDutyType.other)) {
+          //last and new are not duty nor fdp (other=>stdby or rsrv)
+          duties.add(newduty);
+        } else if ((newduty.start!
+                .subtractDuration(travelling(newduty.placeStart ?? base))
+                .isAfter(
+                  duties.last.end!
+                      .addDuration(travelling(duties.last.placeEnd ?? base)),
+                )) &&
+            // duties.last.type == FtlDutyType.duty &&
+            newduty.type == FtlDutyType.duty) {
+          //last is duty
+          duties.add(newduty);
+        } else if (newduty.start!.diff(duties.last.end!, unit: Unit.minute) <
+            minimumrest(duties.last.placeEnd).inMinutes) {
+          //diff < minimumrest
+          //ilhim
+          final mergedduty = _addDutyDetail(
+              index: i,
+              duty: duties.isNotEmpty ? duties.last : FtlDuty(),
+              checkin: checkin);
+          duties[duties.length - 1] = mergedduty!;
+        } else {
+          //jdida
+          duties.add(newduty);
+        }
+      }
+    }
+  }
+
+  _calcfdpmax() {
+    for (var i = 0; i < duties.length; i++) {
+      FtlDuty duty = duties[i];
+      FtlDuty? lastduty = i == 0 ? null : duties[i - 1];
+      if (duty.type == FtlDutyType.fdp) {
+        String acclim = _acclimatized(
+            tzoffset: tzDiff(duty.placeStart!, lastduty?.placeEnd ?? base,
+                duty.start!.dateTime),
+            timeElapsed:
+                lastduty?.end!.dateTime.difference(duty.start!.dateTime) ??
+                    const Duration());
+        duties[i].acclim = acclim;
+        duties[i].reftime = changeTz(duty.start!, duty.placeStart ?? base).Hm;
+
+        Jiffy reftime = duty.start!;
+        if (duty.reportdelay2 != null && duty.reportdelay1 != null) {
+          if (duty.start!.dateTime
+                  .difference(duty.reportdelay2!.dateTime)
+                  .inMinutes <
+              (4 * 60)) {
+            reftime = duty.start!;
+            duty.start =
+                duty.notification2!.add(hours: 1).min(duty.reportdelay1!);
+          } else {
+            reftime = duty.reportdelay2!;
+            duty.start = duty.reportdelay2!;
+          }
+        } else if (duty.reportdelay1 != null) {
+          if (duty.start!.dateTime
+                  .difference(duty.reportdelay1!.dateTime)
+                  .inMinutes <
+              (4 * 60)) {
+            reftime = duty.start!;
+            duty.start = duty.reportdelay1!;
+          } else {
+            reftime = duty.reportdelay1!;
+            duty.start = duty.reportdelay1!;
+          }
+        }
+
+        switch (acclim) {
+          case "D":
+            // print("${duty.start?.yMMMd} ${duty.start?.toUtc().Hm}");
+            duties[i].fdpMax = fdpMaxBasic(
+                reftime: reftime, iata: duty.placeStart, sectors: duty.sectors);
+            duties[i].fdpExtMax = fdpMaxExtBasic(
+                reftime: reftime, iata: duty.placeStart, sectors: duty.sectors);
+          case "B":
+            duties[i].fdpMax = fdpMaxBasic(
+                reftime: reftime,
+                iata: lastduty?.placeEnd ?? lastduty?.placeStart ?? base,
+                sectors: duty.sectors);
+            duties[i].fdpExtMax = fdpMaxExtBasic(
+                reftime: reftime,
+                iata: lastduty?.placeEnd ?? lastduty?.placeStart ?? base,
+                sectors: duty.sectors);
+          case "X":
+            if (frms) {
+              duties[i].fdpMax = fdpMaxUnk(
+                  reftime: reftime,
+                  iata: duty.placeStart,
+                  sectors: duty.sectors);
+            } else {
+              duties[i].fdpMax = fdpMaxUnkFrms(
+                  reftime: reftime,
+                  iata: duty.placeStart,
+                  sectors: duty.sectors);
+            }
+            break;
+          default:
+        }
+      }
+    }
+  }
+
+  _calcLegal({Jiffy? date}) {
+    if (date == null) {
+      for (var i = 0; i < duties.length; i++) {
+        _checklegal(index: i);
+      }
+    } else {
+      duties.forEachIndexed((i, e) {
+        if (duties[i]
+            .start!
+            .isSameOrAfter(date.startOf(Unit.day).subtract(days: 1))) {
+          _checklegal(index: i);
+        }
+      });
+    }
+  }
+
+  Duration _sumDuration(List<DTInterval> x) =>
+      Duration(milliseconds: x.map((e) => e.duration.inMilliseconds).sum);
+
+  List<DTInterval> breaks(FtlDuty duty) {
+    List<DTInterval> out = [];
+    for (var e in duty.dutiesDetailsIndex) {
+      final dutydetail = dutiesDetails[e];
+      final deptravel = (base == (dutydetail.placeStart ?? ""))
+          ? Duration.zero
+          : travelling(dutydetail.placeStart ?? "");
+      final destravel = (base == (dutydetail.placeEnd ?? ""))
+          ? Duration.zero
+          : travelling(dutydetail.placeEnd ?? dutydetail.placeStart ?? "");
+      final start = _calcPreflight(dutydetail)!.subtractDuration(deptravel);
+      final finish = _calcPostflight(dutydetail)!.addDuration(destravel);
+      if (finish.isAfter(start)) {
+        out.add(DTInterval(start, finish));
+      }
+    }
+    return duty.interval.minusmany(out);
+  }
+
+  _checklegal({required int index}) {
+    FtlDuty duty = duties[index];
+
+    final date = changeTz(duty.start!, base).endOf(Unit.day);
+
+    // log("ftl: dutylenght date=${date.format(pattern: "ddMMMyy HHmm")} \n date-7=${date.subtract(days: 7 - 1).startOf(Unit.day).format(pattern: "ddMMMyy HHmm")}");
+    // print("${date.yMEd}");
+    final dutyLength = FtlDutyTotal(
+        date: date, dutyLength: Duration.zero, fltLength: Duration.zero)
+      ..dutylast7 = _sumDuration(
+              DTInterval(date.subtract(days: 7 - 1).startOf(Unit.day), date)
+                  .intersectionmany(dutiesAsInterval))
+          .add(_sumDuration(
+                  DTInterval(date.subtract(days: 7 - 1).startOf(Unit.day), date)
+                      .intersectionmany(stdbyAsInterval))
+              .multiply(0.25))
+      ..dutylast14 = _sumDuration(
+              DTInterval(date.subtract(days: 14 - 1).startOf(Unit.day), date)
+                  .intersectionmany(dutiesAsInterval))
+          .add(_sumDuration(DTInterval(
+                      date.subtract(days: 14 - 1).startOf(Unit.day), date)
+                  .intersectionmany(stdbyAsInterval))
+              .multiply(0.25))
+      ..dutylast28 = _sumDuration(
+              DTInterval(date.subtract(days: 28 - 1).startOf(Unit.day), date)
+                  .intersectionmany(dutiesAsInterval))
+          .add(_sumDuration(DTInterval(
+                      date.subtract(days: 28 - 1).startOf(Unit.day), date)
+                  .intersectionmany(stdbyAsInterval))
+              .multiply(0.25))
+      ..fltlast28 = _sumDuration(
+          DTInterval(date.subtract(days: 28 - 1).startOf(Unit.day), date)
+              .intersectionmany(fltsAsInterval))
+      ..fltlast12 = _sumDuration(DTInterval(
+              date.endOf(Unit.month).subtract(months: 12).startOf(Unit.month),
+              date)
+          .intersectionmany(fltsAsInterval))
+      ..fltyear = _sumDuration(DTInterval(date.startOf(Unit.year), date)
+          .intersectionmany(fltsAsInterval));
+    duty.dutyTotal = dutyLength;
+    // print("${date.yMEd} ${dutyLength.fltyear?.tohhmm}");
+
+    // dutylast7,
+    if ((dutyLength.dutylast7?.inMinutes ?? 0) > maxdutylast7.inMinutes) {
+      duty.legals.add(FtlLegal(
+          legalCause: FtlLegalCause.dutylast7,
+          legalCauseMsg:
+              "Max duty in 7 days ending ${duty.start?.format(pattern: "ddMMMyy")} exceeded: ${dutyLength.dutylast7?.tohhmm} / ${maxdutylast7.inHours}h"));
+    }
+    // dutylast14,
+    if ((dutyLength.dutylast14?.inMinutes ?? 0) > maxdutylast14.inMinutes) {
+      duty.legals.add(FtlLegal(
+          legalCause: FtlLegalCause.dutylast14,
+          legalCauseMsg:
+              "Max duty in 14 days ending ${duty.start?.format(pattern: "ddMMMyy")} exceeded: ${dutyLength.dutylast14?.tohhmm} / ${maxdutylast14.inHours}h"));
+    }
+    // dutylast28,
+    if ((dutyLength.dutylast28?.inMinutes ?? 0) > maxdutylast28.inMinutes) {
+      duty.legals.add(FtlLegal(
+          legalCause: FtlLegalCause.dutylast28,
+          legalCauseMsg:
+              "Max duty in 28 days ending ${duty.start?.format(pattern: "ddMMMyy")} exceeded: ${dutyLength.dutylast28?.tohhmm} / ${maxdutylast28.inHours}h"));
+    }
+    // fltlast28,
+    if ((dutyLength.fltlast28?.inMinutes ?? 0) > maxfltlast28.inMinutes) {
+      duty.legals.add(FtlLegal(
+          legalCause: FtlLegalCause.fltlast28,
+          legalCauseMsg:
+              "Max flight hours in 28 days ending ${duty.start?.format(pattern: "ddMMMyy")} exceeded: ${dutyLength.fltlast28?.tohhmm} / ${maxfltlast28.inHours}h"));
+    }
+
+    // fltyear,
+    if ((dutyLength.fltyear?.inMinutes ?? 0) > maxfltlastyear.inMinutes) {
+      duty.legals.add(FtlLegal(
+          legalCause: FtlLegalCause.fltyear,
+          legalCauseMsg:
+              "Max flight hours in calendar year ${duty.start?.format(pattern: "yyyy")} exceeded: ${dutyLength.fltyear?.tohhmm} / ${maxfltlastyear.inHours}h"));
+    }
+    // fltlast12,
+    if ((dutyLength.fltlast12?.inMinutes ?? 0) > maxfltlast12.inMinutes) {
+      duty.legals.add(FtlLegal(
+          legalCause: FtlLegalCause.fltlast12,
+          legalCauseMsg:
+              "Max flight hours in 12 months ending ${duty.start?.format(pattern: "ddMMMyy")} exceeded: ${dutyLength.fltlast12?.tohhmm} / ${maxfltlast12.inHours}h"));
+    }
+
+    // fdpmax,
+    if (duty.type == FtlDutyType.fdp && duty.fdpMax != null) {
+      if (duty.fdpLength.inMinutes <= duty.fdpMax!.inMinutes) {
+      } else if (duty.fdpExtMax != null &&
+          duty.fdpLength.inMinutes <= duty.fdpExtMax!.inMinutes) {
+        int nbFdpExt = 0;
+        for (var i = index;
+            i >= 0 &&
+                DTInterval(
+                        changeTz(duty.start!, base)
+                            .startOf(Unit.day)
+                            .subtract(days: 7),
+                        changeTz(duty.end!, base))
+                    .isOverlap(DTInterval(duties[i].start!, duties[i].end!));
+            i--) {
+          if (duties[i].fdpExt) nbFdpExt++;
+        }
+
+        if (nbFdpExt < 2) {
+          duty.fdpExt = true;
+          duties[index] = duty;
+        } else {
+          //nbext more than2 in 7days
+          duty.legals.add(FtlLegal(
+              legalCause: FtlLegalCause.fdpmax,
+              legalCauseMsg:
+                  "FDP Ext used more than twice in 7 days. ${duty.fdpLength.tohhmm} / ${duty.fdpMax?.tohhmm} / ext${duty.fdpExtMax?.tohhmm}"));
+        }
+      } else if (breaks(duty).any((e) => (e.duration.inHours > 3)
+          //&&
+          // ((duty.fdpLength.inMinutes) <=
+          //     (e.duration
+          //         .multiply(0.5)
+          //         .add(duty.fdpMax ?? Duration.zero)
+          //         .inMinutes)))) {
+          )) {
+        //split duty check
+        final fdpmaxbreak = breaks(duty)
+            .map((e) => ((e.duration.inHours > 3)
+                ? ((e.duration.multiply(0.5).add(duty.fdpMax ?? Duration.zero)))
+                : null))
+            .whereNotNull();
+        if (fdpmaxbreak.isNotEmpty && duty.fdpLength < fdpmaxbreak.first) {
+          duty.legals.add(FtlLegal(
+              legalCause: FtlLegalCause.fdpmax,
+              condition:
+                  "A break on ground must be considered to extend FDP Max to ${fdpmaxbreak.first.tohhmm}, ",
+              legalCauseMsg: "FDP is: ${duty.fdpLength.tohhmm}"));
+        } else {
+          duty.legals.add(FtlLegal(
+              legalCause: FtlLegalCause.fdpmax,
+              legalCauseMsg:
+                  "FDP Max is excedeed even with ground break of ${breaks(duty).map((e) => ((e.duration.inHours > 3) ? (e.duration) : null)).whereNotNull().first.tohhmm}.  FDP:${duty.fdpLength.tohhmm}/Max:${fdpmaxbreak.first.tohhmm}"));
+        }
+      } else {
+        duty.legals.add(FtlLegal(
+            legalCause: FtlLegalCause.fdpmax,
+            legalCauseMsg:
+                "FDP is ${duty.fdpLength.tohhmm}/Max:${duty.fdpMax?.tohhmm}"));
+      }
+    }
+    // restfdp without ext,
+    final FtlDuty? lastduty = (index > 0) ? duties[index - 1] : null;
+    // log("ftl: checking duty <${duty}> lastduty ended <${lastduty}>");
+
+    if (lastduty != null &&
+        duty.type == FtlDutyType.fdp &&
+        (lastduty.type == FtlDutyType.fdp ||
+            lastduty.type == FtlDutyType.duty ||
+            lastduty.dutiesDetailsIndex.any(
+                (e) => dutiesDetails[e].type == FtlDutyDetailsType.standby))) {
+      final rest = minimumrest(lastduty.placeEnd)
+          .max(duty.end!.dateTime.difference(duty.start!.dateTime));
+      duties[index - 1].restends = lastduty.end!.addDuration(rest);
+
+      if (lastduty.restends!.isAfter(duty.start!)) {
+        duty.legals.add(FtlLegal(
+            legalCause: FtlLegalCause.restfdp,
+            legalCauseMsg:
+                "Need more rest before starting FDP. rest: ${duty.start!.dateTime.difference(lastduty.end!.dateTime).tohhmm} / ${rest.tohhmm}"));
+      }
+    }
+    // restfdp with ext,
+    duty = duties[index];
+    FtlDuty? nextduty = (index < duties.length - 1) ? duties[index + 1] : null;
+    if (duty.fdpExt) {
+      final restbefore = (lastduty == null)
+          ? null
+          : minimumrest(lastduty.placeEnd)
+              .max(lastduty.end!.dateTime.difference(lastduty.start!.dateTime));
+      final restafter = (nextduty == null)
+          ? null
+          : minimumrest(duty.placeEnd)
+              .max(duty.end!.dateTime.difference(duty.start!.dateTime));
+//+2h rest before && 2h rest after
+      if ((lastduty == null ||
+              duty.start!.dateTime
+                      .difference(lastduty.end!.dateTime)
+                      .inMinutes >=
+                  (restbefore?.inMinutes ?? 0) + (2 * 60)) &&
+          (nextduty == null ||
+              nextduty.start!.dateTime
+                      .difference(duty.end!.dateTime)
+                      .inMinutes >=
+                  (restafter?.inMinutes ?? 0) + (60 * 2))) {
+      }
+//+4h rest after
+      else if ((nextduty == null ||
+          nextduty.start!.dateTime.difference(duty.end!.dateTime).inMinutes >=
+              (restafter?.inMinutes ?? 0) + (60 * 4))) {
+      }
+//not enough rest
+      else {
+        duty.restends = duty.end!.addDuration(restafter!).add(hours: 4);
+        duties[index] = duty;
+        nextduty.legals.add(FtlLegal(
+            legalCause: FtlLegalCause.restfdp,
+            legalCauseMsg:
+                "Need more rest after ExtFDP before starting FDP on ${nextduty.start?.format(pattern: "ddMMMyy HH:mm")} rest: ${nextduty.start?.dateTime.difference(duty.end!.dateTime).tohhmm} / ${restafter.add(const Duration(hours: 4)).tohhmm}"));
+        duties[index + 1] = nextduty;
+      }
+    }
+    // restrecurrent,
+
+    //   36h inc 2 local nights or (60h if 4 disruptive)
+    const Duration maxdutyrecrest = Duration(hours: 168);
+    Duration minrecrest = const Duration(hours: 36);
+    bool foundrecrest = false;
+
+    var i = index;
+    int nbdisruptive = 0;
+    DTInterval rest = DTInterval(duty.start!.toUtc(), duty.start!.toUtc());
+    String restPlace = duty.placeStart!;
+    DTInterval dutyl = DTInterval(duty.start!.toUtc(), duty.end!.toUtc());
+    Jiffy lastdutystart = duty.start!.toUtc();
+    DTInterval? recrest;
+    //find last recrest
+    while (i >= 1 && !(foundrecrest)) {
+      i--;
+
+      lastdutystart = duties[i + 1].start!.toUtc();
+      dutyl = DTInterval(lastdutystart, duty.end!.toUtc());
+      bool disruptive = (_isEarlyStart(duties[i + 1]) ||
+          _isLateFinish(duties[i + 1]) ||
+          _isNightDuty(duties[i + 1]));
+
+      while (i >= 1 &&
+          duties[i]
+              .legals
+              .any((e) => e.legalCause == FtlLegalCause.restrecurrent)) {
+        i--;
+      }
+
+      rest = DTInterval(duties[i].end!.toUtc(), lastdutystart);
+      restPlace = duties[i].placeStart!;
+
+      foundrecrest = (rest.duration.inMinutes >= minrecrest.inMinutes) &&
+          rest.contains(DTInterval.fromHm(
+              apartir: rest.start.toUtc(),
+              h: 23,
+              m: 0,
+              duration: const Duration(hours: 7, minutes: 59),
+              ap: restPlace)) &&
+          rest.contains(DTInterval.fromHm(
+              apartir: rest.start.toUtc().add(days: 1),
+              h: 23,
+              m: 0,
+              duration: const Duration(hours: 7, minutes: 59),
+              ap: restPlace));
+
+      if (foundrecrest) {
+        //print(("ftl: recrest 36h: $rest");
+        recrest = rest;
+      }
+      if (!foundrecrest && disruptive) {
+        nbdisruptive++;
+      }
+    }
+
+    //check if 60h rest needed
+
+    //find recrest before last recrest
+
+    int j = i;
+    final duty2 = duties[j];
+    bool foundrecrest2 = false;
+    int nbdisruptive2 = 0;
+    DTInterval rest2 = DTInterval(duty2.start!.toUtc(), duty2.start!.toUtc());
+    String restPlace2 = duty2.placeStart!;
+    Jiffy lastdutystart2 = duty2.start!.toUtc();
+    if (recrest != null && duty.start!.isBefore(recrest.start.add(hours: 60))) {
+      //print(("ftl 60h check: $duty");
+      while (j >= 1 && !(foundrecrest2)) {
+        j--;
+
+        lastdutystart2 = duties[j + 1].start!.toUtc();
+
+        while (j >= 1 &&
+            duties[j]
+                .legals
+                .any((e) => e.legalCause == FtlLegalCause.restrecurrent)) {
+          j--;
+        }
+
+        rest2 = DTInterval(duties[j].end!.toUtc(), lastdutystart2);
+        restPlace2 = duties[j].placeStart!;
+
+        foundrecrest2 = (rest2.duration.inMinutes >= minrecrest.inMinutes) &&
+            rest2.contains(DTInterval.fromHm(
+                apartir: rest2.start.toUtc(),
+                h: 23,
+                m: 0,
+                duration: const Duration(hours: 7, minutes: 59),
+                ap: restPlace2)) &&
+            rest2.contains(DTInterval.fromHm(
+                apartir: rest2.start.toUtc().add(days: 1),
+                h: 23,
+                m: 0,
+                duration: const Duration(hours: 7, minutes: 59),
+                ap: restPlace2));
+
+        // if (foundrecrest) print((rest);
+        bool disruptive2 = (_isEarlyStart(duties[j]) ||
+            _isLateFinish(duties[j]) ||
+            _isNightDuty(duties[j]));
+        if (!foundrecrest2 && disruptive2) {
+          nbdisruptive2++;
+        }
+      }
+      //print(("ftl: duty 60h: nbdisruptive: $nbdisruptive2");
+    }
+
+    if (nbdisruptive2 >= 4) {
+      const restlength = Duration(hours: 60);
+      final lastduty = ((index >= 2 &&
+              duties[index - 1]
+                  .legals
+                  .any((e) => e.legalCause == FtlLegalCause.restrecurrent))
+          ? duties[index - 2]
+          : duties[index - 1]);
+      duty.legals.add(FtlLegal(
+          legalCause: FtlLegalCause.restrecurrent,
+          legalCauseMsg:
+              "More than 4 disruptive duties found before recurrent rest. Need ${restlength.inHours}h rest. Next duty can be started after <${lastduty.end!.addDuration(restlength).max(DTInterval.fromHm(apartir: lastduty.end!.toUtc(), h: 23, m: 0, duration: const Duration(hours: 7, minutes: 59), ap: lastduty.placeEnd!).end.add(days: 1)).format(pattern: "ddMMMyy HH:mm")}>"));
+    } else {
+      // if (DTInterval(duties[i].start!, duty.end!).duration.inMinutes >
+      // print("ftl nb disruptive $nbdisruptive");
+      if (dutyl.duration.inMinutes > maxdutyrecrest.inMinutes) {
+        final restlength =
+            ((nbdisruptive <= 4) ? minrecrest : const Duration(hours: 60));
+        final lastduty = ((index >= 2 &&
+                duties[index - 1]
+                    .legals
+                    .any((e) => e.legalCause == FtlLegalCause.restrecurrent))
+            ? duties[index - 2]
+            : duties[index - 1]);
+        duty.legals.add(FtlLegal(
+            legalCause: FtlLegalCause.restrecurrent,
+            legalCauseMsg:
+                "More than ${maxdutyrecrest.inHours}h without recurrent rest. from <${rest.end.format(pattern: "ddMMMyy HH:mm")}> to <${duty.end!.format(pattern: "ddMMMyy HH:mm")}> ${DTInterval(rest.end, duty.end!).duration.tohhmm}. ${maxdutyrecrest.inHours}h ends at <${rest.end.addDuration(maxdutyrecrest).format(pattern: "ddMMMyy HH:mm")}>. Need ${restlength.inHours}h rest. Next duty can be started after <${lastduty.end!.addDuration(restlength).max(DTInterval.fromHm(apartir: lastduty.end!.toUtc(), h: 23, m: 0, duration: const Duration(hours: 7, minutes: 59), ap: lastduty.placeEnd!).end.add(days: 1)).format(pattern: "ddMMMyy HH:mm")}>"));
+      }
+    }
+
+    //   48h inc 2 local days
+
+    final startmonth = changeTz(duty.start!.startOf(Unit.month), base);
+    final endmonth = startmonth.endOf(Unit.month);
+    if (duty.interval.isOverlap(
+        DTInterval(endmonth.subtract(days: 4).add(minutes: 1), endmonth))) {
+      int nb48inmonth = 0;
+      List<FtlDuty> dutiesmonth = duties
+          .where((e) => DTInterval(startmonth, endmonth)
+              .isOverlap(DTInterval(e.start!, e.end!)))
+          .toList();
+
+      List<DTInterval> restmonth = DTInterval(startmonth, endmonth).minusmany(
+          dutiesmonth
+              .map((e) => DTInterval(changeTz(e.start!, e.placeStart!),
+                  changeTz(e.end!, e.placeStart!)))
+              .toList());
+      // print(restmonth);
+
+      while (restmonth.isNotEmpty) {
+        final e = restmonth.removeAt(0);
+
+        final localdays = DTInterval.fromHm(
+            apartir: e.start.toUtc(),
+            h: 0,
+            m: 0,
+            duration: const Duration(hours: 47, minutes: 59),
+            ap: base);
+        if (e.contains(localdays)) {
+          nb48inmonth++;
+          // print(
+          //     "2localdays: ${localdays.start.format(pattern: "ddMMMyy HH:mm")} ${localdays.end.format(pattern: "ddMMMyy HH:mm")}");
+          // print(
+          //     "in rest ${e.start.format(pattern: "ddMMMyy HH:mm")} ${e.end.format(pattern: "ddMMMyy HH:mm")}");
+          restmonth = [...e.minus(localdays), ...restmonth];
+        }
+      }
+
+      if (nb48inmonth == 0) {
+        duty.legals.add(FtlLegal(
+            legalCause: FtlLegalCause.restrecurrent,
+            legalCauseMsg:
+                "Before duty, need 2x2 local days rest from: ${startmonth.format(pattern: "ddMMMyy HH:mm")} to:  ${endmonth.format(pattern: "ddMMMyy HH:mm")}"));
+      } else if (nb48inmonth == 1 &&
+          DTInterval(endmonth.subtract(days: 2).add(minutes: 1), endmonth)
+              .isOverlap(duty.interval)) {
+        duty.legals.add(FtlLegal(
+            legalCause: FtlLegalCause.restrecurrent,
+            legalCauseMsg:
+                "Before duty, need 2x2 local days rest from: ${startmonth.format(pattern: "ddMMMyy HH:mm")} to:  ${endmonth.format(pattern: "ddMMMyy HH:mm")}"));
+      } else if (nb48inmonth == 1 &&
+          DTInterval(endmonth.subtract(days: 4).add(minutes: 1),
+                  endmonth.subtract(days: 2))
+              .isOverlap(duty.interval) &&
+          DTInterval(endmonth.subtract(days: 4).add(minutes: 1),
+                  endmonth.subtract(days: 2))
+              .intersectionmany(
+                  [...dutiesAsInterval, ...stdbyAsInterval]).isEmpty) {
+        duty.legals.add(FtlLegal(
+            legalCause: FtlLegalCause.restrecurrent,
+            legalCauseMsg:
+                "Before duty, need 2x2 local days rest from: ${startmonth.format(pattern: "ddMMMyy HH:mm")} to:  ${endmonth.format(pattern: "ddMMMyy HH:mm")}"));
+      }
+    }
+    // disruptive
+    duty.lateFinish = _isLateFinish(duty);
+    duty.earlyStart = _isEarlyStart(duty);
+    duty.nightDuty = _isNightDuty(duty);
+    if (duty.fdpStart != null &&
+        lastduty != null &&
+        base == lastduty.placeEnd &&
+        (_isLateFinish(lastduty) || _isNightDuty(lastduty)) &&
+        _isEarlyStart(duty)) {
+      // log("ftl: found late finish or nighty <${duty.start!.format(pattern: "ddMMMyy HH:mm")}");
+      if (!DTInterval(lastduty.end!, duty.start!).contains(DTInterval.fromHm(
+          apartir: changeTz(lastduty.end!, lastduty.placeEnd!).toUtc(),
+          h: 23,
+          m: 0,
+          duration: const Duration(hours: 7, minutes: 59),
+          ap: duty.placeStart!))) {
+        duty.legals.add(FtlLegal(
+            legalCause: FtlLegalCause.disruptive,
+            legalCauseMsg:
+                "Disruptive duty; one local night of rest is required before early departure."));
+      }
+    }
+
+    //consecutive night duty
+    if (_isConsecutiveNight(duty, lastduty)) {
+      var i = index;
+      final monthint = DTInterval(
+          changeTz(duty.start!.startOf(Unit.month), base),
+          changeTz(duty.start!.endOf(Unit.month), base));
+      int nbconsnight = 0;
+      while (i > 0 &&
+          duties[i]
+              .interval
+              .isOverlap(changeTzDt(monthint, duty.placeStart!))) {
+        if (_isConsecutiveNight(duties[i], duties[i - 1])) {
+          nbconsnight++;
+        }
+        i--;
+      }
+      if (nbconsnight > 1) {
+        duty.legals.add(FtlLegal(
+            legalCause: FtlLegalCause.disruptive,
+            legalCauseMsg:
+                "Consecutive nights is allowed only once per civil month."));
+      } else {
+        duty.legals.add(FtlLegal(
+            legalCause: FtlLegalCause.disruptive,
+            condition:
+                "Two consecutive night duties; crew member agreement is required.",
+            legalCauseMsg: ""));
+      }
+    }
+
+    //local day rest if night duty
+    if (lastduty != null && _isNightDuty(lastduty)) {
+      if (DTInterval.fromHm(
+              apartir: changeTz(lastduty.end!, lastduty.placeEnd!).toUtc(),
+              h: 0,
+              m: 0,
+              duration: const Duration(hours: 23, minutes: 59),
+              ap: lastduty.placeEnd!)
+          .isOverlap(changeTzDt(duty.interval, duty.placeStart!))) {
+        duty.legals.add(FtlLegal(
+            legalCause: FtlLegalCause.disruptive,
+            condition: "You can request a local day off after last night duty.",
+            legalCauseMsg: ""));
+      }
+    }
+
+    // if (duty.legals.isNotEmpty) {
+    //   log("${duty.legals.map((e) => e.legalCauseMsg)}");
+    // }
+    // duties[index] = duty;
+  }
+
+  bool _isConsecutiveNight(FtlDuty duty, FtlDuty? lastduty) =>
+      _isNightDuty(duty) &&
+      lastduty != null &&
+      DTInterval.fromHm(
+              apartir: changeTz(lastduty.end!, lastduty.placeEnd!).toUtc(),
+              h: 2,
+              m: 0,
+              duration: const Duration(hours: 2, minutes: 59),
+              ap: lastduty.placeEnd!)
+          .isOverlap(lastduty.interval.toUtc());
+
+  FtlDuty? _addDutyDetail(
+      {required int index, required FtlDuty duty, Jiffy? checkin}) {
+    final one = dutiesDetails[index];
+    if (_fdpList.contains(one.type)) {
+      duty.placeStart = duty.placeStart ?? one.placeStart;
+      duty.placeEnd = one.placeEnd;
+
+      //duty.start = duty.start ?? _calcPreflight(one).latest(checkin);
+      duty.start = duty.start ?? checkin ?? _calcPreflight(one);
+
+      duty.end = _calcPostflight(one);
+      if (one.type == FtlDutyDetailsType.flight) {
+        duty.type = FtlDutyType.fdp;
+        duty.sectors++;
+        duty.fdpStart = duty.start;
+        duty.fdpEnd = one.end;
+      } else {
+        duty.type = duty.type ?? FtlDutyType.duty;
+      }
+      duty.dutiesDetailsIndex.add(index);
+    } else if ([FtlDutyDetailsType.standby, FtlDutyDetailsType.reserve]
+        .contains(one.type)) {
+      duty.placeStart = duty.placeStart ?? one.placeStart;
+      duty.placeEnd = one.placeStart;
+      duty.start = duty.start ?? _calcPreflight(one);
+      duty.end = one.end;
+      duty.type = FtlDutyType.other;
+      duty.dutiesDetailsIndex.add(index);
+    } else if ([FtlDutyDetailsType.ground, FtlDutyDetailsType.sim]
+        .contains(one.type)) {
+      duty.placeStart = duty.placeStart ?? one.placeStart;
+      duty.placeEnd = one.placeStart;
+      duty.start = duty.start ?? _calcPreflight(one);
+      duty.end = one.end;
+      duty.type = duty.type ?? FtlDutyType.duty;
+      duty.dutiesDetailsIndex.add(index);
+    } else {
+      return null;
+    }
+    return duty;
+  }
+
+  static bool _isEarlyStart(FtlDuty x) {
+//500 559
+    // print(
+    //     "$x is earlystart: ${DTInterval.fromHm(apartir: changeTz(x.start!, x.placeStart!), h: 5, m: 0, duration: const Duration(minutes: 59)).include(x.start!)}");
+    return (x.fdpStart != null &&
+        DTInterval.fromHm(
+                apartir: changeTz(x.start!.subtract(hours: 24), x.placeStart!)
+                    .toUtc(),
+                h: 5,
+                m: 0,
+                duration: const Duration(minutes: 59),
+                ap: x.placeStart!)
+            .include(changeTz(x.start!, x.placeStart!)));
+  }
+
+  static bool _isLateFinish(FtlDuty x) {
+//2300  159
+    // print(
+    //     "$x is latefinish: ${DTInterval.fromHm(apartir: changeTz(x.start!, x.placeStart!), h: 23, m: 0, duration: const Duration(hours: 2, minutes: 59)).include(x.end!)}");
+    return (x.type != FtlDutyType.other) &&
+        (DTInterval.fromHm(
+                apartir: changeTz(x.start!, x.placeStart!).toUtc(),
+                h: 23,
+                m: 0,
+                duration: const Duration(hours: 2, minutes: 59),
+                ap: x.placeStart!)
+            .include(changeTz(x.end!, x.placeStart!)));
+  }
+
+  static bool _isNightDuty(FtlDuty x) {
+//200  459
+    // print(
+    //     "$x is Night duty: ${DTInterval.fromHm(apartir: changeTz(x.start!, x.placeStart!), h: 2, m: 0, duration: const Duration(hours: 2, minutes: 59)).include(x.end!)}");
+    return (x.type != FtlDutyType.other) &&
+        ((DTInterval.fromHm(
+                    apartir: x.start!.toUtc(),
+                    h: 2,
+                    m: 0,
+                    duration: const Duration(hours: 2, minutes: 59),
+                    ap: x.placeStart!))
+                .isOverlap(x.interval.toUtc()) ||
+            (DTInterval.fromHm(
+                    apartir: x.start!.subtract(days: 1).toUtc(),
+                    h: 2,
+                    m: 0,
+                    duration: const Duration(hours: 2, minutes: 59),
+                    ap: x.placeStart!))
+                .isOverlap(x.interval.toUtc()));
+  }
+
+  Duration tzDiff(String iata1, String iata2, DateTime sourceDateTime) {
+    // print(Airports.instance.find(iata1)!.timezoneid);
+    // print(Airports.instance.find(iata2)!.timezoneid);
+    final iata1Location = tz.getLocation(Airports.find(iata1)!.timezoneid);
+    final iata2Location = tz.getLocation(Airports.find(iata2)!.timezoneid);
+    tz.TZDateTime iata1TZDateTime =
+        tz.TZDateTime.from(sourceDateTime, iata1Location);
+    tz.TZDateTime iata2TZDateTime =
+        tz.TZDateTime.from(sourceDateTime, iata2Location);
+    return Duration(
+        minutes: (iata2TZDateTime.timeZoneOffset.inMinutes -
+                iata1TZDateTime.timeZoneOffset.inMinutes)
+            .abs());
+  }
+
+  String _acclimatized(
+      {required Duration tzoffset, required Duration timeElapsed}) {
+    if (tzoffset.inHours <= 2) {
+      return "D";
+    } else if (timeElapsed.inHours < 48) {
+      return "B";
+    } else if (tzoffset.inHours < 4 && timeElapsed.inHours >= 48) {
+      return "D";
+    } else if (tzoffset.inHours <= 6 && timeElapsed.inHours >= 72) {
+      return "D";
+    } else if (tzoffset.inHours <= 9 && timeElapsed.inHours >= 96) {
+      return "D";
+    } else if (tzoffset.inHours <= 12 && timeElapsed.inHours >= 120) {
+      return "D";
+    } else {
+      return "X";
+    }
+  }
+
+  static Jiffy changeTz(Jiffy jiffy, String iata) {
+    return Jiffy.parseFromDateTime(tz.TZDateTime.from(jiffy.dateTime,
+        tz.getLocation(Airports.find(iata)?.timezoneid ?? "UTC")));
+  }
+
+  static DTInterval changeTzDt(DTInterval dt, String iata) {
+    return DTInterval(changeTz(dt.start, iata), changeTz(dt.end, iata));
+  }
+
+  Duration _fdpMax(
+      {required reftime,
+      String? iata,
+      required int sectors,
+      required Map<String, List<String>> tab}) {
+    Jiffy reftjiffy = Jiffy.now();
+    String reft = "";
+
+    if (reftime is Jiffy && iata != null) {
+      reftjiffy = reftime;
+      reftjiffy = changeTz(reftjiffy, iata);
+      reft = reftjiffy.format(pattern: "HHmm");
+    } else if (reftime is DateTime && iata != null) {
+      reftjiffy = Jiffy.parseFromDateTime(reftime);
+      reftjiffy = changeTz(reftjiffy, iata);
+      reft = reftjiffy.format(pattern: "HHmm");
+    } else if (reftime is String && reftime.length == 4) {
+      reft = reftime;
+    } else if (reftime is String && iata != null) {
+      reftjiffy = Jiffy.parse(reftime);
+      reftjiffy = changeTz(reftjiffy, iata);
+
+      reft = reftjiffy.format(pattern: "HHmm");
+    } else {
+      throw ("_fdpMax type of reftime unrecognized!!!");
+    }
+    // print("$iata  $reft ${reftjiffy.toUtc().Hm}");
+    for (String key in tab.keys) {
+      List<String> intervalle = key.split("-");
+      int cmph1 = reft.compareTo(intervalle[0]);
+      int cmph2 = reft.compareTo(intervalle[1]);
+
+      bool inint = (intervalle[0].compareTo(intervalle[1]) < 0)
+          ? (cmph1 >= 0 && cmph2 <= 0)
+          : ((cmph1 >= 0 || cmph2 <= 0));
+      if (inint) {
+        final List<String>? lres = tab[key];
+        final int nrow = ((sectors == 1) ? 2 : sectors) - 2;
+        final String? res =
+            (lres != null && nrow < lres.length) ? lres[nrow] : null;
+        if (res != null && res != "Not allowed") {
+          return Duration(
+              hours: int.parse(res.split(".")[0]),
+              minutes: int.parse(res.split(".")[1]));
+        }
+      }
+    }
+    return Duration.zero;
+  }
+
+  Duration fdpMaxBasic(
+          {required reftime, String? iata, required int sectors}) =>
+      _fdpMax(reftime: reftime, iata: iata, sectors: sectors, tab: _fdpMaxTab);
+
+  Duration fdpMaxExtBasic(
+          {required reftime, String? iata, required int sectors}) =>
+      _fdpMax(
+          reftime: reftime, iata: iata, sectors: sectors, tab: _fdpMaxExtTab);
+
+  Duration fdpMaxUnk({required reftime, String? iata, required int sectors}) =>
+      _fdpMax(reftime: reftime, iata: iata, sectors: sectors, tab: _fdpUnkTab);
+
+  Duration fdpMaxUnkFrms(
+          {required reftime, String? iata, required int sectors}) =>
+      _fdpMax(
+          reftime: reftime, iata: iata, sectors: sectors, tab: _fdpUnkFrmsTab);
+
+//acclim
+
+  final Map<String, List<String>> _fdpMaxTab = {
+    "0600-1329": [
+      "13.00",
+      "12.30",
+      "12.00",
+      "11.30",
+      "11.00",
+      "10.30",
+      "10.00",
+      "09.30",
+      "09.00",
+    ],
+    "1330-1359": [
+      "12.45",
+      "12.15",
+      "11.45",
+      "11.15",
+      "10.45",
+      "10.15",
+      "09.45",
+      "09.15",
+      "09.00",
+    ],
+    "1400-1429": [
+      "12.30",
+      "12.00",
+      "11.30",
+      "11.00",
+      "10.30",
+      "10.00",
+      "09.30",
+      "09.00",
+      "09.00",
+    ],
+    "1430-1459": [
+      "12.15",
+      "11.45",
+      "11.15",
+      "10.45",
+      "10.15",
+      "09.45",
+      "09.15",
+      "09.00",
+      "09.00",
+    ],
+    "1500-1529": [
+      "12.00",
+      "11.30",
+      "11.00",
+      "10.30",
+      "10.00",
+      "09.30",
+      "09.00",
+      "09.00",
+      "09.00",
+    ],
+    "1530-1559": [
+      "11.45",
+      "11.15",
+      "10.45",
+      "10.15",
+      "09.45",
+      "09.15",
+      "09.00",
+      "09.00",
+      "09.00",
+    ],
+    "1600-1629": [
+      "11.30",
+      "11.00",
+      "10.30",
+      "10.00",
+      "09.30",
+      "09.00",
+      "09.00",
+      "09.00",
+      "09.00",
+    ],
+    "1630-1659": [
+      "11.15",
+      "10.45",
+      "10.15",
+      "09.45",
+      "09.15",
+      "09.00",
+      "09.00",
+      "09.00",
+      "09.00",
+    ],
+    "1700-0459": [
+      "11.00",
+      "10.30",
+      "10.00",
+      "09.30",
+      "09.00",
+      "09.00",
+      "09.00",
+      "09.00",
+      "09.00",
+    ],
+    "0500-0514": [
+      "12.00",
+      "11.30",
+      "11.00",
+      "10.30",
+      "10.00",
+      "09.30",
+      "09.00",
+      "09.00",
+      "09.00",
+    ],
+    "0515-0529": [
+      "12.15",
+      "11.45",
+      "11.15",
+      "10.45",
+      "10.15",
+      "09.45",
+      "09.15",
+      "09.00",
+      "09.00",
+    ],
+    "0530-0544": [
+      "12.30",
+      "12.00",
+      "11.30",
+      "11.00",
+      "10.30",
+      "10.00",
+      "09.30",
+      "09.00",
+      "09.00",
+    ],
+    "0545-0559": [
+      "12.45",
+      "12.15",
+      "11.45",
+      "11.15",
+      "10.45",
+      "10.15",
+      "09.45",
+      "09.15",
+      "09.00",
+    ],
+  };
+  final Map<String, List<String>> _fdpMaxExtTab = {
+    "0600-0614": [
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+    ],
+    "0615-0629": [
+      "13.15",
+      "12.45",
+      "12.15",
+      "11.45",
+    ],
+    "0630-0644": [
+      "13.30",
+      "13.00",
+      "12.30",
+      "12.00",
+    ],
+    "0645-0659": [
+      "13.45",
+      "13.15",
+      "12.45",
+      "12.15",
+    ],
+    "0700-1329": [
+      "14.00",
+      "13.30",
+      "13.00",
+      "12.30",
+    ],
+    "1330-1359": [
+      "13.45",
+      "13.15",
+      "12.45",
+      "Not allowed",
+    ],
+    "1400-1429": [
+      "13.30",
+      "13.00",
+      "12.30",
+      "Not allowed",
+    ],
+    "1430-1459": [
+      "13.15",
+      "12.45",
+      "12.15",
+      "Not allowed",
+    ],
+    "1500-1529": [
+      "13.00",
+      "12.30",
+      "12.00",
+      "Not allowed",
+    ],
+    "1530-1559": [
+      "12.45",
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+    ],
+    "1600-1629": [
+      "12.30",
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+    ],
+    "1630-1659": [
+      "12.15",
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+    ],
+    "1700-1729": [
+      "12.00",
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+    ],
+    "1730-1759": [
+      "11.45",
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+    ],
+    "1800-1829": [
+      "11.30",
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+    ],
+    "1830-1859": [
+      "11.15",
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+    ],
+    "1900-0359": [
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+    ],
+    "0400-0414": [
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+    ],
+    "0415-0429": [
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+    ],
+    "0430-0444": [
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+    ],
+    "0445-0459": [
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+    ],
+    "0500-0514": [
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+    ],
+    "0515-0529": [
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+    ],
+    "0530-0544": [
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+    ],
+    "0545-0559": [
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+      "Not allowed",
+    ]
+  };
+  final Map<String, List<String>> _fdpUnkTab = {
+    "0000-2359": ["11.00", "10:30", "10.00", "09.30", "09.00", "09.00", "09.00"]
+  };
+  final Map<String, List<String>> _fdpUnkFrmsTab = {
+    "0000-2359": ["12.00", "11.30", "11.00", "10.30", "10.00", "09.30", "09.00"]
+  };
+}
+
+class FtlDuty {
+  FtlDuty({this.start, this.end, this.placeStart, this.placeEnd, this.type});
+  @override
+  String toString() {
+    return "${start?.yMEd} ${start?.Hm} >>> ${end?.Hm} : ${fdpLength.inMinutes > 0 ? "FDP" : "DUTY"} ${dutiesDetailsIndex.length}leg(s)";
+  }
+
+  Jiffy? start;
+  Jiffy? end;
+  DTInterval get interval => DTInterval(start!, end!);
+  String? placeStart;
+  String? placeEnd;
+  FtlDutyType? type;
+  List<int> dutiesDetailsIndex = [];
+  Jiffy? fdpStart;
+  Jiffy? fdpEnd;
+  int sectors = 0;
+  Duration? fdpMax;
+  Duration? fdpExtMax;
+  //Duration? fdpIfRExtMax;//if inflight rest rest
+
+  bool fdpExt = false;
+  List<FtlLegal> legals = [];
+
+  Duration get dutyLength => (start != null && end != null)
+      ? end!.dateTime.difference(start!.dateTime)
+      : Duration.zero;
+  Duration get fdpLength => (fdpStart != null && fdpEnd != null)
+      ? fdpEnd!.dateTime.difference(fdpStart!.dateTime)
+      : Duration.zero;
+
+  // Duration? get rest => (dutyLength.max(Ftl.minimumrest(placeEnd)));
+  Jiffy? restends;
+
+  String? acclim;
+  String? reftime;
+
+  FtlDutyTotal? dutyTotal;
+
+  //Jiffy? report;
+  Jiffy? reportdelay1;
+  Jiffy? notification1;
+  Jiffy? reportdelay2;
+  Jiffy? notification2;
+  bool earlyStart = false;
+  bool lateFinish = false;
+  bool nightDuty = false;
+}
+
+class FtlLegal {
+  FtlLegal(
+      {required this.legalCause,
+      required this.legalCauseMsg,
+      this.legalIndex,
+      this.condition});
+  FtlLegalCause legalCause;
+  String legalCauseMsg;
+  int? legalIndex;
+  String? condition;
+}
+
+enum FtlDutyType { duty, fdp, other }
+
+class FtlDutyDetails {
+  FtlDutyDetails({
+    this.start,
+    this.end,
+    this.placeStart,
+    this.placeEnd,
+    this.type,
+    this.label,
+  });
+
+  Jiffy? start;
+  Jiffy? end;
+  DTInterval get interval => DTInterval(start!, end!);
+
+  Duration get duration => end!.dateTime.difference(start!.dateTime);
+  String? placeStart;
+  String? placeEnd;
+  FtlDutyDetailsType? type;
+  String get typeString {
+    switch (type) {
+      case FtlDutyDetailsType.flight:
+        return "FLT";
+      case FtlDutyDetailsType.dhflight:
+        return "DH-FLT";
+      case FtlDutyDetailsType.dhlimo:
+        return "DH-LIMO";
+      case FtlDutyDetailsType.sim:
+        return "SIM";
+      case FtlDutyDetailsType.standby:
+        return "STBY";
+      case FtlDutyDetailsType.reserve:
+        return "RSRV";
+      case FtlDutyDetailsType.ground:
+        return "GRND";
+
+      default:
+        return "UNK";
+    }
+  }
+
+  String? label;
+}
+
+enum FtlDutyDetailsType {
+  preflight,
+  flight,
+  postflight,
+  dhflight,
+  dhlimo,
+  ground,
+  standby,
+  reserve,
+  sim,
+//  training,
+//  other
+}
+
+class FtlDutyTotal {
+  FtlDutyTotal(
+      {required this.date, required this.dutyLength, required this.fltLength});
+  Jiffy date;
+  Duration dutyLength;
+  Duration fltLength;
+  Duration? dutylast7;
+  Duration? dutylast14;
+  Duration? dutylast28;
+  Duration? fltlast28;
+  Duration? fltyear;
+  Duration? fltlast12;
+}
+
+enum FtlLegalCause {
+  dutylast7,
+  dutylast14,
+  dutylast28,
+  fltlast28,
+  fltyear,
+  fltlast12,
+  fdpmax,
+  restfdp,
+  restrecurrent,
+  disruptive
+  //check duty length && flt length
+
+  //check fdp leength
+
+  //check rest before fdp
+  //check recurrent rest
+  //check disruptive sched
+}

+ 11 - 0
lib/ftl/provider/ftlcompute.dart

@@ -0,0 +1,11 @@
+import 'package:timezone/data/latest.dart';
+import 'package:tp5/ftl/provider/ftl.dart';
+import 'package:tp5/roster/models/duty.dart';
+
+ftlCalc(Map data) {
+  initializeTimeZones();
+  //tz.initializeTimeZones();
+  final clDuties = data['clDuties'] as List<Duty>;
+  final base = data['base'] as String;
+  return Ftl.fromCrewlink(clDuties: clDuties, base: base).calcduties();
+}

+ 787 - 0
lib/ftl/view/ftl_page copy.dart.bak

@@ -0,0 +1,787 @@
+// ignore_for_file: use_build_context_synchronously
+
+import 'package:collection/collection.dart';
+import 'package:flutter/material.dart';
+import 'package:flutter_riverpod/flutter_riverpod.dart';
+import 'package:gap/gap.dart';
+import 'package:go_router/go_router.dart';
+import 'package:hive_flutter/hive_flutter.dart';
+import 'package:jiffy/jiffy.dart';
+import 'package:modal_bottom_sheet/modal_bottom_sheet.dart';
+import 'package:tp5/core/basic_page.dart';
+import 'package:tp5/core/utils.dart';
+import 'package:tp5/ftl/provider/ftl.dart';
+import 'package:tp5/ftl/widget/w_shadowbox.dart';
+import 'package:tp5/roster/api/crewlink_api.dart';
+import 'package:tp5/roster/models/duty.dart';
+import 'package:scroll_to_index/scroll_to_index.dart';
+import 'package:tp5/roster/widgets/w_airport.dart';
+import 'package:tp5/roster/widgets/w_hour.dart';
+
+class FtlPage extends ConsumerStatefulWidget {
+  const FtlPage({super.key, required this.params});
+  final FtlPageParams params;
+  @override
+  ConsumerState<ConsumerStatefulWidget> createState() => _FtlPageState();
+}
+
+class _FtlPageState extends ConsumerState<FtlPage> {
+  late String crewlinkUser;
+  late String crewlinkPass;
+  late String startdate;
+  late String enddate;
+  Map? roster;
+  List<Duty> duties = [];
+
+  String _rosterKey({String? clUser, String? start, String? end}) =>
+      "roster_${clUser ?? crewlinkUser}_${start ?? startdate}_${end ?? enddate}";
+  String fileidroster({String? clUser, String? start, String? end}) =>
+      PathTo().crewlinkFile(
+          "${_rosterKey(clUser: clUser, start: start, end: end)}.pdf");
+  // String get _rosterKey =>
+  //     "roster_${crewlinkUser}_${widget.params.datestart}_${widget.params.dateend}";
+  // String get fileidroster => PathTo().crewlinkFile("$_rosterKey.pdf");
+  final AutoScrollController _scrollCtrl = AutoScrollController();
+  late Jiffy now;
+
+  @override
+  void initState() {
+    crewlinkUser = widget.params.crewlinkuser ??
+        Hive.box("profile").get("crewlink_user") ??
+        "";
+    crewlinkPass = widget.params.crewlinkpass ??
+        Hive.box("profile").get("crewlink_pass") ??
+        "";
+
+    startdate = widget.params.datestart ??
+        Jiffy.now().toUtc().startOf(Unit.month).format(pattern: "ddMMMyy");
+    enddate = widget.params.dateend ??
+        Jiffy.now()
+            .toUtc()
+            //.add(months: 1)
+            .endOf(Unit.month)
+            .format(pattern: "ddMMMyy");
+
+    Future.delayed(Duration.zero, () async {
+      await _loadMinMax();
+      //await _loadRoster();
+      await _loadOldRoster();
+      await _ftlCalc(base: 'DJE');
+    }).then(
+        (value) => Future.delayed(const Duration(milliseconds: 200), () async {
+              _scrollToDate();
+            }));
+
+    super.initState();
+  }
+
+  bool _isLoading = false;
+
+  Future<Map?> _loadRosterOnline(
+      {String? clUser, String? start, String? end}) async {
+    //print("FtlPage: Requesting ONline roster $start -> $end");
+    if (!ref.read(crewlinkapiProvider).logged) {
+      final login = await ref
+          .read(crewlinkapiProvider)
+          .login(username: crewlinkUser, password: crewlinkPass);
+      if (login["data"]?["logged"] != true) {
+        context.showError(login["error"] ?? "Unknown error");
+        return null;
+      }
+    }
+
+    final roster = await ref.read(crewlinkapiProvider).roster(
+        start: start ?? startdate
+        //??Jiffy.now().toUtc().startOf(Unit.month).format(pattern: "ddMMMyy")
+        ,
+        end: end ?? enddate
+        //??Jiffy.now().toUtc().endOf(Unit.month).format(pattern: "ddMMMyy")
+        ,
+        fileid: fileidroster(clUser: clUser, start: start, end: end));
+
+    if (roster?["data"]?["msg"] != null) {
+      context.showError(roster?["data"]?["msg"] ?? "Unknown error");
+    }
+    if (roster["error"] == null && roster["data"] != null) {
+      if (roster["msg"] != null) context.showAlert(roster["msg"]);
+      Hive.box("crewlink")
+          .put(_rosterKey(clUser: clUser, start: start, end: end), roster);
+
+      return roster;
+    }
+
+    return null;
+  }
+
+  Future<Map?> _loadRosterOffline(
+      {String? clUser, String? start, String? end}) async {
+    //print("FtlPage: Requesting OFFline roster $start -> $end");
+
+    return Hive.box("crewlink")
+        .get(_rosterKey(clUser: clUser, start: start, end: end));
+  }
+
+  _loadRoster(
+      {String? clUser,
+      String? start,
+      String? end,
+      bool cachefirst = false}) async {
+    try {
+      ref.read(isLoadingProvider.notifier).state = true;
+
+      final rosterOffline =
+          await _loadRosterOffline(clUser: clUser, start: start, end: end);
+      if (rosterOffline?["data"]?["decoded"] is Map) {
+        print(
+            "FTL Page: found offline: $start ${rosterOffline?["data"]?["decoded"] is Map}");
+        _convertRoster(rosterOffline);
+        setState(() {});
+      }
+
+      if (rosterOffline?["data"]?["decoded"] is! Map || !cachefirst) {
+        final rosterOnline =
+            await _loadRosterOnline(clUser: clUser, start: start, end: end);
+
+        if (rosterOnline?["data"]?["decoded"] is Map) {
+          print(
+              "FTL Page: found online: $start ${rosterOnline?["data"]?["decoded"] is Map}");
+          _convertRoster(rosterOnline);
+          setState(() {});
+        } else if (rosterOffline?["data"]?["decoded"] is Map) {
+          print(
+              "FTL Page: found offline: $start ${rosterOffline?["data"]?["decoded"] is Map}");
+          _convertRoster(rosterOnline);
+          setState(() {});
+        }
+      }
+    } finally {
+      ref.read(isLoadingProvider.notifier).state = false;
+    }
+  }
+
+  _loadOldRoster() async {
+    bool exitnow = false;
+    // _rosterMax = Jiffy.now().toUtc().endOf(Unit.month).subtract(hours: 10);
+
+    Jiffy date1 = Jiffy.parse(startdate, pattern: "ddMMMyy")
+        .subtract(months: 11)
+        .startOf(Unit.day)
+        .startOf(Unit.month)
+        .max(_rosterMin ?? Jiffy.now().toUtc().startOf(Unit.month));
+    while (!exitnow) {
+      Jiffy date2 = date1
+          .endOf(Unit.month)
+          .min(_rosterMax?.endOf(Unit.day) ?? Jiffy.now().toUtc().add(days: 3));
+      if (date2.isAfter(date1) &&
+          date2.endOf(Unit.month) == date1.endOf(Unit.month)) {
+        //print("ftlpage: loadoldroster: loading ${DTInterval(date1, date2)}");
+        await _loadRoster(
+            start: date1.format(pattern: "ddMMMyy"),
+            end: date2.format(pattern: "ddMMMyy"),
+            cachefirst: date1
+                .endOf(Unit.month)
+                .isBefore(Jiffy.now().endOf(Unit.month)));
+      } else {
+        exitnow = true;
+      }
+      date1 = date1.add(months: 1).startOf(Unit.month);
+    }
+  }
+
+  String get _rosterMinMaxKey => "minmax_$crewlinkUser";
+
+  _loadMinMax() async {
+    final resoff = Hive.box("crewlink").get(_rosterMinMaxKey);
+    //print("ftlpage: resoff: $resoff");
+
+    final reson = await ref.read(crewlinkapiProvider).rosterMinMax();
+    //print("ftlpage: reson: $reson");
+    ref.read(isLoadingProvider.notifier).state = false;
+
+    dynamic res;
+
+    if (reson != null && reson["error"] == null && reson?["data"] != null) {
+      Hive.box("crewlink").put(_rosterMinMaxKey, reson["data"]);
+      res = reson["data"];
+    } else if (resoff == null) {
+      //print(reson["error"] ?? "Unknown error");
+    }
+    res = res ?? resoff;
+
+    _rosterMin =
+        Jiffy.parse(res["mindate"], pattern: "yyyy-MM-dd", isUtc: true);
+    _rosterMax =
+        Jiffy.parse(res["maxdate"], pattern: "yyyy-MM-dd", isUtc: true);
+  }
+
+  Jiffy? _rosterMin;
+  Jiffy? _rosterMax;
+
+  _scrollToDate({Jiffy? date}) async {
+    final jdate = date ?? Jiffy.now().toUtc();
+    bool found = false;
+
+    int id = 0;
+    for (Duty duty in duties) {
+      // if (duty.jdate.yMd == jdate.yMd) {
+      if (duty.jdate.isSameOrAfter(jdate)) {
+        found = true;
+        break;
+      }
+      id++;
+    }
+
+    if (found && mounted && _scrollCtrl.hasClients) {
+      // await _scrollCtrl.scrollToIndex(duties.length - 30,
+      //     duration: const Duration(milliseconds: 500),
+      //     preferPosition: AutoScrollPosition.end);
+      await _scrollCtrl.scrollToIndex(0,
+          duration: const Duration(milliseconds: 1000),
+          preferPosition: AutoScrollPosition.end);
+      await _scrollCtrl.scrollToIndex(id,
+          duration: const Duration(milliseconds: 1000),
+          preferPosition: AutoScrollPosition.end);
+    }
+  }
+
+  int i = 0;
+  _convertRoster(Map? input) {
+    roster = input;
+    final decoded = (input?["data"]?["decoded"]?["roster"] ?? {});
+    for (var date in decoded.keys) {
+      duties = duties.where((e) => e.date != date).toList();
+      var dutylist = (decoded[date] as List);
+      for (var duty in dutylist) {
+        i++;
+        duties.add(
+            Duty(date: date, type: duty["type"], data: duty["data"], order: i));
+        //print("${(duties.last).jdate.yMd} ${(duties.last).type} ${(duties.last).start?.Hm} ${(duties.last).end?.Hm}");
+      }
+    }
+  }
+
+  Ftl ftldata = Ftl.fromCrewlink(clDuties: [], base: 'DJE');
+
+  Jiffy ftlcalcdate = Jiffy.now().subtract(days: 30).startOf(Unit.month);
+
+  _ftlCalc({required String base}) async {
+    ref.read(isLoadingProvider.notifier).state = true;
+
+    ftldata = Ftl.fromCrewlink(clDuties: duties, base: base);
+    //await compute(ftlCalc, {"clDuties": duties, "base": base});
+
+    // await ftldata.calcduties(date: null);
+    await ftldata.calcduties(date: ftlcalcdate);
+
+    ref.read(isLoadingProvider.notifier).state = false;
+  }
+
+  @override
+  Widget build(BuildContext context) {
+    return BasicPage(
+      actions: [
+        ElevatedButton(
+            onPressed: _isLoading
+                ? null
+                : () async {
+                    setState(() {
+                      _isLoading = true;
+                    });
+                    await _ftlCalc(base: "DJE");
+                    setState(() {
+                      _isLoading = false;
+                    });
+                  },
+            child: const Text("calc"))
+      ],
+      title: "FTL",
+      body: ftldata.duties.isEmpty
+          ? const Text("Please wait, calculations in progress...")
+          : ListView.builder(
+              itemCount: ftldata.duties.length,
+              itemBuilder: (contexte, index) => AutoScrollTag(
+                key: ValueKey(index),
+                controller: _scrollCtrl,
+                index: index,
+                child: (ftldata.duties
+                        .elementAt(index)
+                        .start!
+                        .isSameOrAfter(ftlcalcdate))
+                    ? _getItem(contexte, index)
+                    : Container(),
+              ),
+              shrinkWrap: false,
+              controller: _scrollCtrl,
+            ),
+    );
+  }
+
+  bool _is36h(DTInterval? e, String station) {
+    if (e == null) return false;
+    final firstnight = DTInterval.fromHm(
+        apartir: Ftl.changeTz(e.start, station).toUtc(),
+        h: 23,
+        m: 0,
+        duration: const Duration(hours: 7, minutes: 59),
+        ap: station);
+    final secondnight =
+        DTInterval(firstnight.start.add(days: 1), firstnight.end.add(days: 1));
+    if (e.duration.inHours >= 36 &&
+        e.contains(firstnight) &&
+        e.contains(secondnight)) {
+      return true;
+    } else {
+      return false;
+    }
+  }
+
+  bool _is48h(DTInterval? e, String station) {
+    if (e == null) return false;
+    final localdays = DTInterval.fromHm(
+        apartir: Ftl.changeTz(e.start, station).toUtc(),
+        h: 0,
+        m: 0,
+        duration: const Duration(hours: 47, minutes: 59),
+        ap: station);
+    if (e.contains(localdays)) {
+      return true;
+    } else {
+      return false;
+    }
+  }
+
+  _showDutyInfo(int i) {
+    final duty = ftldata.duties[i];
+    //print("ftlpage: ${duty.interval}  ${duty.type}");
+    final margin =
+        ((duty.fdpExt ? duty.fdpExtMax : duty.fdpMax) ?? Duration.zero)
+            .subtract(duty.fdpLength);
+    showMaterialModalBottomSheet(
+      bounce: true,
+      context: context,
+      builder: (context) => Container(
+        padding: const EdgeInsets.all(10),
+        decoration: const BoxDecoration(
+            border: Border(top: BorderSide(width: 3, color: Colors.white70))),
+        //height: 250,
+        child: SingleChildScrollView(
+          child: Column(
+            children: [
+              const Gap(5),
+              ElevatedButton(
+                  onPressed: () {
+                    context.pop();
+                  },
+                  child: const Text(
+                    "Close",
+                    style: TextStyle(
+                        color: Colors.red, fontWeight: FontWeight.w700),
+                  )),
+              const Gap(5),
+              const Text(
+                "Duty FTL Details",
+                style: TextStyle(fontSize: 22),
+              ),
+              const Gap(10),
+              Row(
+                children: [
+                  const Text("Duty:",
+                      style: TextStyle(fontWeight: FontWeight.w800)),
+                  const Gap(20),
+                  _titleInfo(duty.start!.yMMMEd, duty.start!.Hm),
+                  const Gap(20),
+                  _titleInfo(duty.start!.yMMMEd, duty.end!.Hm)
+                ],
+              ),
+              const Gap(20),
+              if (duty.fdpStart != null)
+                Row(
+                  children: [
+                    const Text("FDP:",
+                        style: TextStyle(fontWeight: FontWeight.w800)),
+                    const Gap(20),
+                    _titleInfo("FDP Length", duty.fdpLength.tohhmm),
+                    const Gap(20),
+                    _titleInfo("Fdp Max", duty.fdpMax!.tohhmm),
+                    const Gap(20),
+                    _titleInfo("Fdp Ext Max", duty.fdpExtMax!.tohhmm),
+                    const Gap(20),
+                    _titleInfo(margin.isNegative ? "Exceeded" : "Margin",
+                        margin.abs().tohhmm,
+                        color: margin.isNegative ? Colors.red : Colors.green,
+                        sizeinfo: 12),
+                  ],
+                ),
+              const Gap(20),
+              if (duty.fdpStart != null)
+                Row(
+                  children: [
+                    const Text("Acclim:",
+                        style: TextStyle(fontWeight: FontWeight.w800)),
+                    const Gap(20),
+                    _titleInfo("Acclim type", duty.acclim),
+                    const Gap(20),
+                    _titleInfo("Ref time", duty.reftime),
+                  ],
+                ),
+              const Gap(20),
+              if (duty.fdpStart != null)
+                Row(
+                  children: [
+                    const Text("Report:",
+                        style: TextStyle(fontWeight: FontWeight.w800)),
+                    const Gap(10),
+                    _titleInfo("Report time", duty.start?.Hm ?? "----"),
+                    const Gap(10),
+                    _titleInfo(
+                        "Delayed Report1", duty.reportdelay1?.Hm ?? "----"),
+                    const Gap(10),
+                    _titleInfo(
+                        "Delayed Report1", duty.reportdelay2?.Hm ?? "----"),
+                  ],
+                ),
+              const Gap(20),
+              if (duty.fdpStart != null &&
+                  (duty.lateFinish || duty.earlyStart || duty.nightDuty))
+                Row(
+                  children: [
+                    const Text("Disruptive:",
+                        style: TextStyle(fontWeight: FontWeight.w800)),
+                    const Gap(10),
+                    if (duty.earlyStart)
+                      const Text("early start duty",
+                          style: TextStyle(
+                              fontWeight: FontWeight.w800,
+                              fontSize: 12,
+                              color: Colors.cyan)),
+                    const Gap(10),
+                    if (duty.lateFinish)
+                      const Text("late finish duty",
+                          style: TextStyle(
+                              fontWeight: FontWeight.w800,
+                              fontSize: 12,
+                              color: Colors.cyan)),
+                    const Gap(10),
+                    if (duty.nightDuty)
+                      const Text("night duty",
+                          style: TextStyle(
+                              fontWeight: FontWeight.w800,
+                              fontSize: 12,
+                              color: Colors.cyan)),
+                    const Gap(10),
+                  ],
+                ),
+              const Gap(20),
+              Row(
+                children: [
+                  SingleChildScrollView(
+                    scrollDirection: Axis.horizontal,
+                    child: Row(
+                        mainAxisSize: MainAxisSize.max,
+                        mainAxisAlignment: MainAxisAlignment.start,
+                        children: [
+                          const Text("Detail:",
+                              style: TextStyle(fontWeight: FontWeight.w800)),
+                          ...(duty.dutiesDetailsIndex.map((e) {
+                            final detail = ftldata.dutiesDetails[e];
+                            final label = (detail.placeEnd != null)
+                                ? "${detail.placeStart}-${detail.placeEnd}"
+                                : "${detail.label}";
+                            return [
+                              const Gap(20),
+                              _titleInfo(label,
+                                  "${detail.start?.Hm}-${detail.end?.Hm}",
+                                  sizeinfo: 10)
+                            ];
+                          }).flattened),
+                        ]),
+                  ),
+                ],
+              ),
+              const Gap(20),
+              Row(
+                children: [
+                  const Text("Tot duties hrs:",
+                      style: TextStyle(fontWeight: FontWeight.w800)),
+                  const Gap(10),
+                  _titleInfo("7 days",
+                      "${duty.dutyTotal?.dutylast7?.tohhmm}|${Ftl.maxdutylast7.tohhmm}",
+                      sizeinfo: 10),
+                  const Gap(5),
+                  _titleInfo("14 days",
+                      "${duty.dutyTotal?.dutylast14?.tohhmm}|${Ftl.maxdutylast14.tohhmm}",
+                      sizeinfo: 10),
+                  const Gap(5),
+                  _titleInfo("28 days",
+                      "${duty.dutyTotal?.dutylast28?.tohhmm}|${Ftl.maxdutylast28.tohhmm}",
+                      sizeinfo: 10),
+                ],
+              ),
+              const Gap(20),
+              Row(
+                children: [
+                  const Text("Tot Flt hrs:",
+                      style: TextStyle(fontWeight: FontWeight.w800)),
+                  const Gap(10),
+                  _titleInfo("28 days",
+                      "${duty.dutyTotal?.fltlast28?.tohhmm}|${Ftl.maxfltlast28.tohhmm}",
+                      sizeinfo: 10),
+                  const Gap(5),
+                  _titleInfo("12 months",
+                      "${duty.dutyTotal?.fltlast12?.tohhmm}|${Ftl.maxfltlast12.tohhmm}",
+                      sizeinfo: 10),
+                  const Gap(5),
+                  _titleInfo("year",
+                      "${duty.dutyTotal?.fltyear?.tohhmm}|${Ftl.maxfltlastyear.tohhmm}",
+                      sizeinfo: 10),
+                ],
+              ),
+            ],
+          ),
+        ),
+      ),
+    );
+  }
+
+  _titleInfo(String? title, String? info,
+          {double sizetitle = 10,
+          double sizeinfo = 16,
+          Color color = Colors.blueGrey}) =>
+      Column(
+        children: [
+          Text(
+            title ?? "---",
+            style: TextStyle(color: Colors.grey, fontSize: sizetitle),
+          ),
+          Text(info ?? "---",
+              style: TextStyle(color: color, fontSize: sizeinfo)),
+        ],
+      );
+
+  Widget _getItem(BuildContext _, int i) {
+    final duty = ftldata.duties.elementAt(i);
+    final lastduty = i == 0 ? null : ftldata.duties.elementAt(i - 1);
+
+    final rest =
+        lastduty == null ? null : DTInterval(lastduty.end!, duty.start!);
+
+    Color legal;
+    if (duty.legals.isEmpty) {
+      legal = Colors.green[900]!;
+    } else if (duty.legals.every((e) => (e.condition ?? "") != "")) {
+      legal = Colors.amber;
+    } else {
+      legal = Colors.red;
+    }
+
+    return Column(
+      children: [
+        if (lastduty != null)
+          WShadowbox(
+              child: Column(children: [
+            Container(
+              decoration: const BoxDecoration(
+                color: Color.fromARGB(255, 8, 9, 9),
+                border: Border(top: BorderSide(width: 5)),
+                borderRadius: BorderRadius.all(Radius.circular(10.0)),
+              ),
+              padding: const EdgeInsets.all(5),
+              // width: double.infinity,
+              child: Row(
+                mainAxisAlignment: MainAxisAlignment.spaceBetween,
+                children: [
+                  Column(
+                    children: [
+                      _titleInfo("Rest",
+                          "${(rest?.duration.inDays ?? 0)} days, ${(rest?.duration.inHours ?? 0) % 24} hours, ${(rest?.duration.inMinutes ?? 0) % 60} minutes",
+                          sizeinfo: 10),
+                    ],
+                  ),
+                  Column(children: [
+                    if (_is48h(rest, lastduty.placeEnd ?? "UTC"))
+                      Container(
+                          color: Colors.teal[900],
+                          padding: const EdgeInsets.all(5),
+                          child: Text(
+                            "48h with 2 local days",
+                            style: TextStyle(
+                                color: Colors.yellow[600]!,
+                                fontSize: 11,
+                                fontWeight: FontWeight.w600),
+                          )),
+                    if (_is36h(rest, lastduty.placeEnd ?? "UTC"))
+                      Container(
+                          color: Colors.teal[800],
+                          padding: const EdgeInsets.all(5),
+                          child: Text(
+                            "36h with 2 local nights",
+                            style: TextStyle(
+                                color: Colors.yellow[500]!,
+                                fontSize: 11,
+                                fontWeight: FontWeight.w600),
+                          ))
+                  ]),
+                ],
+              ),
+            )
+          ])),
+        InkWell(
+          onTap: () => _showDutyInfo(i),
+          child: WShadowbox(
+            child: Column(
+              children: [
+                Container(
+                  decoration: BoxDecoration(
+                    color: const Color.fromARGB(255, 1, 45, 47),
+                    border: Border(top: BorderSide(width: 5, color: legal)),
+                    borderRadius:
+                        const BorderRadius.vertical(top: Radius.circular(10.0)),
+                  ),
+                  padding: const EdgeInsets.symmetric(horizontal: 20),
+                  // width: double.infinity,
+                  child: Row(
+                    mainAxisAlignment: MainAxisAlignment.spaceBetween,
+                    children: [
+                      Text(
+                        "${duty.start?.format(pattern: "dd MMM'yy")}",
+                        style: const TextStyle(color: Colors.white54),
+                      ),
+                      if (duty.start != null) WHour(jiffy: duty.start!),
+                    ],
+                  ),
+                ),
+
+                Container(
+                  width: double.infinity,
+                  padding: const EdgeInsets.only(left: 20, right: 10),
+                  decoration: const BoxDecoration(
+                    color: Colors.black,
+                  ),
+                  child: Column(
+                      crossAxisAlignment: CrossAxisAlignment.start,
+                      children: duty.legals
+                          .map((e) => Text(
+                                "+ ${e.condition ?? ""} ${e.legalCauseMsg}",
+                                style: const TextStyle(fontSize: 10),
+                              ))
+                          .toList()),
+                ),
+
+                //details
+
+                ...duty.dutiesDetailsIndex.map((index) {
+                  final FtlDutyDetails dutydetail =
+                      ftldata.dutiesDetails[index];
+                  return Row(
+                    children: [
+                      const Gap(40),
+                      SizedBox(
+                        width: 50,
+                        child: Row(children: [
+                          Text(
+                            dutydetail.typeString,
+                            style: TextStyle(
+                              backgroundColor: Colors.blueGrey[900],
+                              color: Colors.yellow,
+                              fontSize: 10,
+                              fontWeight: FontWeight.w600,
+                            ),
+                          )
+                        ]),
+                      ),
+                      SizedBox(
+                        width: 60,
+                        child: Row(
+                          children: [
+                            WHour(
+                              jiffy: dutydetail.start!,
+                              size: 12,
+                              color: Colors.white38,
+                            ),
+                            const Gap(5),
+                            WHour(
+                              jiffy: dutydetail.end!,
+                              size: 12,
+                              color: Colors.white38,
+                            ),
+                          ],
+                        ),
+                      ),
+                      SizedBox(
+                        // width: 80,
+                        child: Row(children: [
+                          const Gap(10),
+                          if (dutydetail.placeStart != null)
+                            WAirport(iata: dutydetail.placeStart!, size: 12),
+                          if (dutydetail.placeEnd != null) ...[
+                            const Icon(Icons.arrow_right_alt, size: 9),
+                            WAirport(iata: dutydetail.placeEnd!, size: 12)
+                          ] else if ((dutydetail.label ?? "") != "")
+                            Text(" (${dutydetail.label})",
+                                style: const TextStyle(
+                                    color: Colors.white54,
+                                    fontSize: 10,
+                                    letterSpacing: 2),
+                                overflow: TextOverflow.ellipsis),
+                        ]),
+                      ),
+                    ],
+                  );
+                }),
+
+                Container(
+                  decoration: const BoxDecoration(
+                    color: Color.fromARGB(255, 1, 45, 47),
+                    borderRadius:
+                        BorderRadius.vertical(bottom: Radius.circular(10.0)),
+                  ),
+                  padding: const EdgeInsets.symmetric(horizontal: 20),
+                  // width: double.infinity,
+                  child: Row(
+                    mainAxisAlignment: MainAxisAlignment.spaceBetween,
+                    children: [
+                      if (duty.end != null && duty.start != null)
+                        _titleInfo(
+                            "Duty length",
+                            duty.end!.dateTime
+                                .difference(duty.start!.dateTime)
+                                .tohhmm),
+                      const Row(children: []),
+                      Column(
+                        mainAxisSize: MainAxisSize.min,
+                        children: [
+                          Text(
+                            (duty.end?.yMMMd != duty.start?.yMMMd)
+                                ? "${duty.end?.format(pattern: "dd MMM")}"
+                                : "",
+                            style: const TextStyle(
+                                color: Colors.white54, fontSize: 12),
+                          ),
+                          if (duty.end != null) WHour(jiffy: duty.end!),
+                        ],
+                      ),
+                    ],
+                  ),
+                ),
+              ],
+            ),
+          ),
+        ),
+      ],
+    );
+  }
+}
+
+class FtlPageParams {
+  const FtlPageParams({
+    this.dateend,
+    this.datestart,
+    this.crewlinkuser,
+    this.crewlinkpass,
+  });
+
+  final String? dateend;
+  final String? datestart;
+  final String? crewlinkuser;
+  final String? crewlinkpass;
+}

+ 786 - 0
lib/ftl/view/ftl_page.dart

@@ -0,0 +1,786 @@
+// ignore_for_file: use_build_context_synchronously
+
+import 'package:collection/collection.dart';
+import 'package:flutter/material.dart';
+import 'package:flutter_riverpod/flutter_riverpod.dart';
+import 'package:gap/gap.dart';
+import 'package:go_router/go_router.dart';
+import 'package:hive_flutter/hive_flutter.dart';
+import 'package:jiffy/jiffy.dart';
+import 'package:modal_bottom_sheet/modal_bottom_sheet.dart';
+import 'package:super_sliver_list/super_sliver_list.dart';
+import 'package:tp5/core/basic_page.dart';
+import 'package:tp5/core/utils.dart';
+import 'package:tp5/ftl/provider/ftl.dart';
+import 'package:tp5/ftl/widget/w_shadowbox.dart';
+import 'package:tp5/roster/api/crewlink_api.dart';
+import 'package:tp5/roster/models/duty.dart';
+import 'package:tp5/roster/widgets/w_airport.dart';
+import 'package:tp5/roster/widgets/w_hour.dart';
+
+class FtlPage extends ConsumerStatefulWidget {
+  const FtlPage({super.key, required this.params});
+  final FtlPageParams params;
+  @override
+  ConsumerState<ConsumerStatefulWidget> createState() => _FtlPageState();
+}
+
+class _FtlPageState extends ConsumerState<FtlPage> {
+  late String crewlinkUser;
+  late String crewlinkPass;
+  late String startdate;
+  late String enddate;
+  Map? roster;
+  List<Duty> duties = [];
+
+  String _rosterKey({String? clUser, String? start, String? end}) =>
+      "roster_${clUser ?? crewlinkUser}_${start ?? startdate}_${end ?? enddate}";
+  String fileidroster({String? clUser, String? start, String? end}) =>
+      PathTo().crewlinkFile(
+          "${_rosterKey(clUser: clUser, start: start, end: end)}.pdf");
+  // String get _rosterKey =>
+  //     "roster_${crewlinkUser}_${widget.params.datestart}_${widget.params.dateend}";
+  // String get fileidroster => PathTo().crewlinkFile("$_rosterKey.pdf");
+  final ScrollController _scrollCtrl = ScrollController();
+  final ListController _listCtrl = ListController();
+  late Jiffy now;
+
+  @override
+  void initState() {
+    crewlinkUser = widget.params.crewlinkuser ??
+        Hive.box("profile").get("crewlink_user") ??
+        "";
+    crewlinkPass = widget.params.crewlinkpass ??
+        Hive.box("profile").get("crewlink_pass") ??
+        "";
+
+    startdate = widget.params.datestart ??
+        Jiffy.now().toUtc().startOf(Unit.month).format(pattern: "ddMMMyy");
+    enddate = widget.params.dateend ??
+        Jiffy.now()
+            .toUtc()
+            //.add(months: 1)
+            .endOf(Unit.month)
+            .format(pattern: "ddMMMyy");
+
+    Future.delayed(Duration.zero, () async {
+      await _loadMinMax();
+      //await _loadRoster();
+      await _loadOldRoster();
+      await _ftlCalc(base: 'DJE');
+    }).then(
+        (value) => Future.delayed(const Duration(milliseconds: 200), () async {
+              _scrollToDate();
+            }));
+
+    super.initState();
+  }
+
+  bool _isLoading = false;
+
+  Future<Map?> _loadRosterOnline(
+      {String? clUser, String? start, String? end}) async {
+    //print("FtlPage: Requesting ONline roster $start -> $end");
+    if (!ref.read(crewlinkapiProvider).logged) {
+      final login = await ref
+          .read(crewlinkapiProvider)
+          .login(username: crewlinkUser, password: crewlinkPass);
+      if (login["data"]?["logged"] != true) {
+        context.showError(login["error"] ?? "Unknown error");
+        return null;
+      }
+    }
+
+    final roster = await ref.read(crewlinkapiProvider).roster(
+        start: start ?? startdate
+        //??Jiffy.now().toUtc().startOf(Unit.month).format(pattern: "ddMMMyy")
+        ,
+        end: end ?? enddate
+        //??Jiffy.now().toUtc().endOf(Unit.month).format(pattern: "ddMMMyy")
+        ,
+        fileid: fileidroster(clUser: clUser, start: start, end: end));
+
+    if (roster?["data"]?["msg"] != null) {
+      context.showError(roster?["data"]?["msg"] ?? "Unknown error");
+    }
+    if (roster["error"] == null && roster["data"] != null) {
+      if (roster["msg"] != null) context.showAlert(roster["msg"]);
+      Hive.box("crewlink")
+          .put(_rosterKey(clUser: clUser, start: start, end: end), roster);
+
+      return roster;
+    }
+
+    return null;
+  }
+
+  Future<Map?> _loadRosterOffline(
+      {String? clUser, String? start, String? end}) async {
+    //print("FtlPage: Requesting OFFline roster $start -> $end");
+
+    return Hive.box("crewlink")
+        .get(_rosterKey(clUser: clUser, start: start, end: end));
+  }
+
+  _loadRoster(
+      {String? clUser,
+      String? start,
+      String? end,
+      bool cachefirst = false}) async {
+    try {
+      ref.read(isLoadingProvider.notifier).state = true;
+
+      final rosterOffline =
+          await _loadRosterOffline(clUser: clUser, start: start, end: end);
+      if (rosterOffline?["data"]?["decoded"] is Map) {
+        print(
+            "FTL Page: found offline: $start ${rosterOffline?["data"]?["decoded"] is Map}");
+        _convertRoster(rosterOffline);
+        setState(() {});
+      }
+
+      if (rosterOffline?["data"]?["decoded"] is! Map || !cachefirst) {
+        final rosterOnline =
+            await _loadRosterOnline(clUser: clUser, start: start, end: end);
+
+        if (rosterOnline?["data"]?["decoded"] is Map) {
+          print(
+              "FTL Page: found online: $start ${rosterOnline?["data"]?["decoded"] is Map}");
+          _convertRoster(rosterOnline);
+          setState(() {});
+        } else if (rosterOffline?["data"]?["decoded"] is Map) {
+          print(
+              "FTL Page: found offline: $start ${rosterOffline?["data"]?["decoded"] is Map}");
+          _convertRoster(rosterOnline);
+          setState(() {});
+        }
+      }
+    } finally {
+      ref.read(isLoadingProvider.notifier).state = false;
+    }
+  }
+
+  _loadOldRoster() async {
+    bool exitnow = false;
+    // _rosterMax = Jiffy.now().toUtc().endOf(Unit.month).subtract(hours: 10);
+
+    Jiffy date1 = Jiffy.parse(startdate, pattern: "ddMMMyy")
+        .subtract(months: 11)
+        .startOf(Unit.day)
+        .startOf(Unit.month)
+        .max(_rosterMin ?? Jiffy.now().toUtc().startOf(Unit.month));
+    while (!exitnow) {
+      Jiffy date2 = date1
+          .endOf(Unit.month)
+          .min(_rosterMax?.endOf(Unit.day) ?? Jiffy.now().toUtc().add(days: 3));
+      if (date2.isAfter(date1) &&
+          date2.endOf(Unit.month) == date1.endOf(Unit.month)) {
+        //print("ftlpage: loadoldroster: loading ${DTInterval(date1, date2)}");
+        await _loadRoster(
+            start: date1.format(pattern: "ddMMMyy"),
+            end: date2.format(pattern: "ddMMMyy"),
+            cachefirst: date1
+                .endOf(Unit.month)
+                .isBefore(Jiffy.now().endOf(Unit.month)));
+      } else {
+        exitnow = true;
+      }
+      date1 = date1.add(months: 1).startOf(Unit.month);
+    }
+  }
+
+  String get _rosterMinMaxKey => "minmax_$crewlinkUser";
+
+  _loadMinMax() async {
+    final resoff = Hive.box("crewlink").get(_rosterMinMaxKey);
+    //print("ftlpage: resoff: $resoff");
+
+    final reson = await ref.read(crewlinkapiProvider).rosterMinMax();
+    //print("ftlpage: reson: $reson");
+    ref.read(isLoadingProvider.notifier).state = false;
+
+    dynamic res;
+
+    if (reson != null && reson["error"] == null && reson?["data"] != null) {
+      Hive.box("crewlink").put(_rosterMinMaxKey, reson["data"]);
+      res = reson["data"];
+    } else if (resoff == null) {
+      //print(reson["error"] ?? "Unknown error");
+    }
+    res = res ?? resoff;
+
+    _rosterMin =
+        Jiffy.parse(res["mindate"], pattern: "yyyy-MM-dd", isUtc: true);
+    _rosterMax =
+        Jiffy.parse(res["maxdate"], pattern: "yyyy-MM-dd", isUtc: true);
+  }
+
+  Jiffy? _rosterMin;
+  Jiffy? _rosterMax;
+
+  _scrollToDate({Jiffy? date}) async {
+    final jdate = date ?? Jiffy.now().toUtc();
+    bool found = false;
+
+    int id = 0;
+    for (FtlDuty duty in dutiestodisplay) {
+      // if (duty.jdate.yMd == jdate.yMd) {
+      if (duty.start!.isSameOrAfter(jdate)) {
+        found = true;
+        break;
+      }
+      id++;
+    }
+
+    if (found && mounted && _scrollCtrl.hasClients) {
+      // await _scrollCtrl.scrollToIndex(duties.length - 30,
+      //     duration: const Duration(milliseconds: 500),
+      //     preferPosition: AutoScrollPosition.end);
+      _listCtrl.animateToItem(
+        duration: (d) => const Duration(milliseconds: 700),
+        index: id,
+        scrollController: _scrollCtrl,
+        alignment: 0.75,
+        curve: (double estimatedDistance) => Curves.decelerate,
+      );
+    }
+  }
+
+  int i = 0;
+  _convertRoster(Map? input) {
+    roster = input;
+    final decoded = (input?["data"]?["decoded"]?["roster"] ?? {});
+    for (var date in decoded.keys) {
+      duties = duties.where((e) => e.date != date).toList();
+      var dutylist = (decoded[date] as List);
+      for (var duty in dutylist) {
+        i++;
+        duties.add(
+            Duty(date: date, type: duty["type"], data: duty["data"], order: i));
+        //print("${(duties.last).jdate.yMd} ${(duties.last).type} ${(duties.last).start?.Hm} ${(duties.last).end?.Hm}");
+      }
+    }
+  }
+
+  Ftl ftldata = Ftl.fromCrewlink(clDuties: [], base: 'DJE');
+
+  Jiffy ftlcalcdate = Jiffy.now().subtract(days: 30).startOf(Unit.month);
+
+  _ftlCalc({required String base}) async {
+    ref.read(isLoadingProvider.notifier).state = true;
+
+    ftldata = Ftl.fromCrewlink(clDuties: duties, base: base);
+    //await compute(ftlCalc, {"clDuties": duties, "base": base});
+
+    // await ftldata.calcduties(date: null);
+    await ftldata.calcduties(date: ftlcalcdate);
+
+    ref.read(isLoadingProvider.notifier).state = false;
+  }
+
+  List<FtlDuty> get dutiestodisplay => ftldata.duties
+      .whereIndexed((i, e) => e.start!.isSameOrAfter(ftlcalcdate))
+      .toList();
+
+  @override
+  Widget build(BuildContext context) {
+    return BasicPage(
+      actions: [
+        ElevatedButton(
+            onPressed: _isLoading
+                ? null
+                : () async {
+                    setState(() {
+                      _isLoading = true;
+                    });
+                    await _ftlCalc(base: "DJE");
+                    setState(() {
+                      _isLoading = false;
+                    });
+                  },
+            child: const Text("calc"))
+      ],
+      title: "FTL",
+      body: ftldata.duties.isEmpty
+          ? const Text("Please wait, calculations in progress...")
+          : SuperListView.builder(
+              itemCount: dutiestodisplay.length,
+              itemBuilder: (contexte, index) => _getItem(contexte, index),
+              listController: _listCtrl,
+              shrinkWrap: false,
+              controller: _scrollCtrl,
+            ),
+    );
+  }
+
+  bool _is36h(DTInterval? e, String station) {
+    if (e == null) return false;
+    final firstnight = DTInterval.fromHm(
+        apartir: Ftl.changeTz(e.start, station).toUtc(),
+        h: 23,
+        m: 0,
+        duration: const Duration(hours: 7, minutes: 59),
+        ap: station);
+    final secondnight =
+        DTInterval(firstnight.start.add(days: 1), firstnight.end.add(days: 1));
+    if (e.duration.inHours >= 36 &&
+        e.contains(firstnight) &&
+        e.contains(secondnight)) {
+      return true;
+    } else {
+      return false;
+    }
+  }
+
+  bool _is48h(DTInterval? e, String station) {
+    if (e == null) return false;
+    final localdays = DTInterval.fromHm(
+        apartir: Ftl.changeTz(e.start, station).toUtc(),
+        h: 0,
+        m: 0,
+        duration: const Duration(hours: 47, minutes: 59),
+        ap: station);
+    if (e.contains(localdays)) {
+      return true;
+    } else {
+      return false;
+    }
+  }
+
+  _showDutyInfo(int i) {
+    final duty = dutiestodisplay[i];
+    //print("ftlpage: ${duty.interval}  ${duty.type}");
+    final margin =
+        ((duty.fdpExt ? duty.fdpExtMax : duty.fdpMax) ?? Duration.zero)
+            .subtract(duty.fdpLength);
+    showMaterialModalBottomSheet(
+      bounce: true,
+      context: context,
+      builder: (context) => Container(
+        padding: const EdgeInsets.all(10),
+        decoration: const BoxDecoration(
+            border: Border(top: BorderSide(width: 3, color: Colors.white70))),
+        //height: 250,
+        child: SingleChildScrollView(
+          child: Column(
+            children: [
+              const Gap(5),
+              ElevatedButton(
+                  onPressed: () {
+                    context.pop();
+                  },
+                  child: const Text(
+                    "Close",
+                    style: TextStyle(
+                        color: Colors.red, fontWeight: FontWeight.w700),
+                  )),
+              const Gap(5),
+              const Text(
+                "Duty FTL Details",
+                style: TextStyle(fontSize: 22),
+              ),
+              const Gap(10),
+              Row(
+                children: [
+                  const Text("Duty:",
+                      style: TextStyle(fontWeight: FontWeight.w800)),
+                  const Gap(20),
+                  _titleInfo(duty.start!.yMMMEd, duty.start!.Hm),
+                  const Gap(20),
+                  _titleInfo(duty.start!.yMMMEd, duty.end!.Hm)
+                ],
+              ),
+              const Gap(20),
+              if (duty.fdpStart != null)
+                Row(
+                  children: [
+                    const Text("FDP:",
+                        style: TextStyle(fontWeight: FontWeight.w800)),
+                    const Gap(20),
+                    _titleInfo("FDP Length", duty.fdpLength.tohhmm),
+                    const Gap(20),
+                    _titleInfo("Fdp Max", duty.fdpMax!.tohhmm),
+                    const Gap(20),
+                    _titleInfo("Fdp Ext Max", duty.fdpExtMax!.tohhmm),
+                    const Gap(20),
+                    _titleInfo(margin.isNegative ? "Exceeded" : "Margin",
+                        margin.abs().tohhmm,
+                        color: margin.isNegative ? Colors.red : Colors.green,
+                        sizeinfo: 12),
+                  ],
+                ),
+              const Gap(20),
+              if (duty.fdpStart != null)
+                Row(
+                  children: [
+                    const Text("Acclim:",
+                        style: TextStyle(fontWeight: FontWeight.w800)),
+                    const Gap(20),
+                    _titleInfo("Acclim type", duty.acclim),
+                    const Gap(20),
+                    _titleInfo("Ref time", duty.reftime),
+                  ],
+                ),
+              const Gap(20),
+              if (duty.fdpStart != null)
+                Row(
+                  children: [
+                    const Text("Report:",
+                        style: TextStyle(fontWeight: FontWeight.w800)),
+                    const Gap(10),
+                    _titleInfo("Report time", duty.start?.Hm ?? "----"),
+                    const Gap(10),
+                    _titleInfo(
+                        "Delayed Report1", duty.reportdelay1?.Hm ?? "----"),
+                    const Gap(10),
+                    _titleInfo(
+                        "Delayed Report1", duty.reportdelay2?.Hm ?? "----"),
+                  ],
+                ),
+              const Gap(20),
+              if (duty.fdpStart != null &&
+                  (duty.lateFinish || duty.earlyStart || duty.nightDuty))
+                Row(
+                  children: [
+                    const Text("Disruptive:",
+                        style: TextStyle(fontWeight: FontWeight.w800)),
+                    const Gap(10),
+                    if (duty.earlyStart)
+                      const Text("early start duty",
+                          style: TextStyle(
+                              fontWeight: FontWeight.w800,
+                              fontSize: 12,
+                              color: Colors.cyan)),
+                    const Gap(10),
+                    if (duty.lateFinish)
+                      const Text("late finish duty",
+                          style: TextStyle(
+                              fontWeight: FontWeight.w800,
+                              fontSize: 12,
+                              color: Colors.cyan)),
+                    const Gap(10),
+                    if (duty.nightDuty)
+                      const Text("night duty",
+                          style: TextStyle(
+                              fontWeight: FontWeight.w800,
+                              fontSize: 12,
+                              color: Colors.cyan)),
+                    const Gap(10),
+                  ],
+                ),
+              const Gap(20),
+              Row(
+                children: [
+                  SingleChildScrollView(
+                    scrollDirection: Axis.horizontal,
+                    child: Row(
+                        mainAxisSize: MainAxisSize.max,
+                        mainAxisAlignment: MainAxisAlignment.start,
+                        children: [
+                          const Text("Detail:",
+                              style: TextStyle(fontWeight: FontWeight.w800)),
+                          ...(duty.dutiesDetailsIndex.map((e) {
+                            final detail = ftldata.dutiesDetails[e];
+                            final label = (detail.placeEnd != null)
+                                ? "${detail.placeStart}-${detail.placeEnd}"
+                                : "${detail.label}";
+                            return [
+                              const Gap(20),
+                              _titleInfo(label,
+                                  "${detail.start?.Hm}-${detail.end?.Hm}",
+                                  sizeinfo: 10)
+                            ];
+                          }).flattened),
+                        ]),
+                  ),
+                ],
+              ),
+              const Gap(20),
+              Row(
+                children: [
+                  const Text("Tot duties hrs:",
+                      style: TextStyle(fontWeight: FontWeight.w800)),
+                  const Gap(10),
+                  _titleInfo("7 days",
+                      "${duty.dutyTotal?.dutylast7?.tohhmm}|${Ftl.maxdutylast7.tohhmm}",
+                      sizeinfo: 10),
+                  const Gap(5),
+                  _titleInfo("14 days",
+                      "${duty.dutyTotal?.dutylast14?.tohhmm}|${Ftl.maxdutylast14.tohhmm}",
+                      sizeinfo: 10),
+                  const Gap(5),
+                  _titleInfo("28 days",
+                      "${duty.dutyTotal?.dutylast28?.tohhmm}|${Ftl.maxdutylast28.tohhmm}",
+                      sizeinfo: 10),
+                ],
+              ),
+              const Gap(20),
+              Row(
+                children: [
+                  const Text("Tot Flt hrs:",
+                      style: TextStyle(fontWeight: FontWeight.w800)),
+                  const Gap(10),
+                  _titleInfo("28 days",
+                      "${duty.dutyTotal?.fltlast28?.tohhmm}|${Ftl.maxfltlast28.tohhmm}",
+                      sizeinfo: 10),
+                  const Gap(5),
+                  _titleInfo("12 months",
+                      "${duty.dutyTotal?.fltlast12?.tohhmm}|${Ftl.maxfltlast12.tohhmm}",
+                      sizeinfo: 10),
+                  const Gap(5),
+                  _titleInfo("year",
+                      "${duty.dutyTotal?.fltyear?.tohhmm}|${Ftl.maxfltlastyear.tohhmm}",
+                      sizeinfo: 10),
+                ],
+              ),
+            ],
+          ),
+        ),
+      ),
+    );
+  }
+
+  _titleInfo(String? title, String? info,
+          {double sizetitle = 10,
+          double sizeinfo = 16,
+          Color color = Colors.blueGrey}) =>
+      Column(
+        children: [
+          Text(
+            title ?? "---",
+            style: TextStyle(color: Colors.grey, fontSize: sizetitle),
+          ),
+          Text(info ?? "---",
+              style: TextStyle(color: color, fontSize: sizeinfo)),
+        ],
+      );
+
+  Widget _getItem(BuildContext _, int i) {
+    final duty = dutiestodisplay.elementAt(i);
+    final lastduty = i == 0 ? null : dutiestodisplay.elementAt(i - 1);
+
+    final rest =
+        lastduty == null ? null : DTInterval(lastduty.end!, duty.start!);
+
+    Color legal;
+    if (duty.legals.isEmpty) {
+      legal = Colors.green[900]!;
+    } else if (duty.legals.every((e) => (e.condition ?? "") != "")) {
+      legal = Colors.amber;
+    } else {
+      legal = Colors.red;
+    }
+
+    return Column(
+      children: [
+        if (lastduty != null)
+          WShadowbox(
+              child: Column(children: [
+            Container(
+              decoration: const BoxDecoration(
+                color: Color.fromARGB(255, 8, 9, 9),
+                border: Border(top: BorderSide(width: 5)),
+                borderRadius: BorderRadius.all(Radius.circular(10.0)),
+              ),
+              padding: const EdgeInsets.all(5),
+              // width: double.infinity,
+              child: Row(
+                mainAxisAlignment: MainAxisAlignment.spaceBetween,
+                children: [
+                  Column(
+                    children: [
+                      _titleInfo("Rest",
+                          "${(rest?.duration.inDays ?? 0)} days, ${(rest?.duration.inHours ?? 0) % 24} hours, ${(rest?.duration.inMinutes ?? 0) % 60} minutes",
+                          sizeinfo: 10),
+                    ],
+                  ),
+                  Column(children: [
+                    if (_is48h(rest, lastduty.placeEnd ?? "UTC"))
+                      Container(
+                          color: Colors.teal[900],
+                          padding: const EdgeInsets.all(5),
+                          child: Text(
+                            "48h with 2 local days",
+                            style: TextStyle(
+                                color: Colors.yellow[600]!,
+                                fontSize: 11,
+                                fontWeight: FontWeight.w600),
+                          )),
+                    if (_is36h(rest, lastduty.placeEnd ?? "UTC"))
+                      Container(
+                          color: Colors.teal[800],
+                          padding: const EdgeInsets.all(5),
+                          child: Text(
+                            "36h with 2 local nights",
+                            style: TextStyle(
+                                color: Colors.yellow[500]!,
+                                fontSize: 11,
+                                fontWeight: FontWeight.w600),
+                          ))
+                  ]),
+                ],
+              ),
+            )
+          ])),
+        InkWell(
+          onTap: () => _showDutyInfo(i),
+          child: WShadowbox(
+            child: Column(
+              children: [
+                Container(
+                  decoration: BoxDecoration(
+                    color: Color.fromARGB(
+                        duty.start!.isAfter(Jiffy.now()) ? 255 : 70, 1, 45, 47),
+                    border: Border(top: BorderSide(width: 5, color: legal)),
+                    borderRadius:
+                        const BorderRadius.vertical(top: Radius.circular(10.0)),
+                  ),
+                  padding: const EdgeInsets.symmetric(horizontal: 20),
+                  // width: double.infinity,
+                  child: Row(
+                    mainAxisAlignment: MainAxisAlignment.spaceBetween,
+                    children: [
+                      Text(
+                        "${duty.start?.format(pattern: "dd MMM'yy")}",
+                        style: const TextStyle(color: Colors.white54),
+                      ),
+                      if (duty.start != null) WHour(jiffy: duty.start!),
+                    ],
+                  ),
+                ),
+
+                Container(
+                  width: double.infinity,
+                  padding: const EdgeInsets.only(left: 20, right: 10),
+                  decoration: const BoxDecoration(
+                    color: Colors.black,
+                  ),
+                  child: Column(
+                      crossAxisAlignment: CrossAxisAlignment.start,
+                      children: duty.legals
+                          .map((e) => Text(
+                                "+ ${e.condition ?? ""} ${e.legalCauseMsg}",
+                                style: const TextStyle(fontSize: 10),
+                              ))
+                          .toList()),
+                ),
+
+                //details
+
+                ...duty.dutiesDetailsIndex.map((index) {
+                  final FtlDutyDetails dutydetail =
+                      ftldata.dutiesDetails[index];
+                  return Row(
+                    children: [
+                      const Gap(40),
+                      SizedBox(
+                        width: 50,
+                        child: Row(children: [
+                          Text(
+                            dutydetail.typeString,
+                            style: TextStyle(
+                              backgroundColor: Colors.blueGrey[900],
+                              color: Colors.yellow,
+                              fontSize: 10,
+                              fontWeight: FontWeight.w600,
+                            ),
+                          )
+                        ]),
+                      ),
+                      SizedBox(
+                        width: 60,
+                        child: Row(
+                          children: [
+                            WHour(
+                              jiffy: dutydetail.start!,
+                              size: 12,
+                              color: Colors.white38,
+                            ),
+                            const Gap(5),
+                            WHour(
+                              jiffy: dutydetail.end!,
+                              size: 12,
+                              color: Colors.white38,
+                            ),
+                          ],
+                        ),
+                      ),
+                      SizedBox(
+                        // width: 80,
+                        child: Row(children: [
+                          const Gap(10),
+                          if (dutydetail.placeStart != null)
+                            WAirport(iata: dutydetail.placeStart!, size: 12),
+                          if (dutydetail.placeEnd != null) ...[
+                            const Icon(Icons.arrow_right_alt, size: 9),
+                            WAirport(iata: dutydetail.placeEnd!, size: 12)
+                          ] else if ((dutydetail.label ?? "") != "")
+                            Text(" (${dutydetail.label})",
+                                style: const TextStyle(
+                                    color: Colors.white54,
+                                    fontSize: 10,
+                                    letterSpacing: 2),
+                                overflow: TextOverflow.ellipsis),
+                        ]),
+                      ),
+                    ],
+                  );
+                }),
+
+                Container(
+                  decoration: BoxDecoration(
+                    color: Color.fromARGB(
+                        duty.start!.isAfter(Jiffy.now()) ? 255 : 70, 1, 45, 47),
+                    borderRadius:
+                        BorderRadius.vertical(bottom: Radius.circular(10.0)),
+                  ),
+                  padding: const EdgeInsets.symmetric(horizontal: 20),
+                  // width: double.infinity,
+                  child: Row(
+                    mainAxisAlignment: MainAxisAlignment.spaceBetween,
+                    children: [
+                      if (duty.end != null && duty.start != null)
+                        _titleInfo(
+                            "Duty length",
+                            duty.end!.dateTime
+                                .difference(duty.start!.dateTime)
+                                .tohhmm),
+                      const Row(children: []),
+                      Column(
+                        mainAxisSize: MainAxisSize.min,
+                        children: [
+                          Text(
+                            (duty.end?.yMMMd != duty.start?.yMMMd)
+                                ? "${duty.end?.format(pattern: "dd MMM")}"
+                                : "",
+                            style: const TextStyle(
+                                color: Colors.white54, fontSize: 12),
+                          ),
+                          if (duty.end != null) WHour(jiffy: duty.end!),
+                        ],
+                      ),
+                    ],
+                  ),
+                ),
+              ],
+            ),
+          ),
+        ),
+      ],
+    );
+  }
+}
+
+class FtlPageParams {
+  const FtlPageParams({
+    this.dateend,
+    this.datestart,
+    this.crewlinkuser,
+    this.crewlinkpass,
+  });
+
+  final String? dateend;
+  final String? datestart;
+  final String? crewlinkuser;
+  final String? crewlinkpass;
+}

+ 26 - 0
lib/ftl/widget/w_shadowbox.dart

@@ -0,0 +1,26 @@
+import 'package:flutter/material.dart';
+
+class WShadowbox extends StatelessWidget {
+  const WShadowbox({super.key, required this.child});
+  final Widget child;
+
+  @override
+  Widget build(BuildContext context) {
+    return Container(
+      margin: const EdgeInsets.all(20),
+      // padding: const EdgeInsets.all(10),
+      decoration: BoxDecoration(
+        color: const Color.fromARGB(255, 0, 22, 41),
+        borderRadius: BorderRadius.circular(10.0),
+        boxShadow: const [
+          BoxShadow(
+            color: Color.fromARGB(255, 49, 84, 110),
+            offset: Offset(0, 0),
+            blurRadius: 10,
+          ),
+        ],
+      ),
+      child: child,
+    );
+  }
+}

+ 441 - 0
lib/lido/api_lido4d copy.dart.bak

@@ -0,0 +1,441 @@
+//import 'package:html';
+
+import 'dart:convert';
+import 'dart:developer';
+
+import 'package:flutter/foundation.dart';
+import 'package:intl/intl.dart';
+
+class ApiLido4d {
+  //static const url = "https://tar.lido.aero";
+  static const url =
+      kIsWeb ? "https://proxy.fares.cyou" : "https://tar.lido.aero";
+  //static const url = "https://proxy.fares.cyou";
+  static const realurl = "https://tar.lido.aero";
+  ApiLido4d({this.username = "", this.password = ""});
+  bool get logged => cookieMap.isNotEmpty;
+  String username;
+  String password;
+  String get cookie =>
+      "${cookieMap.keys.fold("", (t, e) => (t == "") ? "$e=${cookieMap[e]}" : "$t; $e=${cookieMap[e]}")};SameSite=None; Secure";
+
+  Map cookieMap = {};
+  Map get headers => {
+        "Accept": "application/vnd.lsy.lido.lcb.v1.hal+json",
+        "Accept-Encoding": "gzip, deflate, br",
+        "Accept-Language": "en",
+        "Connection": "keep-alive",
+        "Content-Type": "application/json;charset=UTF-8",
+        //"Host": Uri.parse(realurl).host,
+        "Origin": Uri.parse(realurl).host,
+        //"sec-ch-ua":'" Not A;Brand";v="99", "Chromium";v="101", "Google Chrome";v="101"',
+        // "sec-ch-ua-mobile": "?0",
+        // "sec-ch-ua-platform": "Windows",
+        // "Sec-Fetch-Dest": "empty",
+        // "Sec-Fetch-Mode": "cors",
+        // "Sec-Fetch-Site": "same-origin",
+        "User-Agent":
+            'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.67 Safari/537.36',
+        "X-lido-applicationId": "lido-lcb",
+        "X-lido-clientId": "lido-lcb-web",
+        "X-lido-customerId": "TAR",
+        "X-lido-operatingAirline": "",
+        "X-lido-timeStamp": DateTime.now().toUtc().toIso8601String(),
+        "X-lido-traceId": "0c497133-2a92-45a0-8ffe-a03c77852201",
+        "cookie": "SERVERID=docker2; ${cookie}",
+        "X-lido-csrf": cookieMap["lido_csrf"] ?? "",
+      };
+  Future logout() async {
+    var response = await post(Uri.parse('${url}USR/actionLogout.jsp'),
+        body: {"Cookie": cookie});
+  }
+
+  Future login() async {
+    try {
+      var response = await get(
+        Uri.parse(
+            '$url/lido/las/login.jsp?DESMON_RESULT_PAGE=$realurl/briefing//'),
+      );
+      cookieMap.addAll(_getcookies(response.headers["set-cookie"] ??
+          response.headers["_set-cookie"] ??
+          ""));
+      //print(response.headers);
+      response = await post(
+          Uri.parse('$url/lido/las/dwr/call/plaincall/LoginBean.login.dwr'),
+          body: {
+            "callCount": "1",
+            "windowName": "DWR-5F9BFD0ECADDCF42109A9C1099F4B49B",
+            "c0-scriptName": "LoginBean",
+            "c0-methodName": "login",
+            "c0-id": "0",
+            "c0-param0": "boolean:false",
+            "c0-param1": "boolean:false",
+            "c0-param2": "string:$username",
+            "c0-param3": "string:$password",
+            "c0-param4": "string:",
+            "c0-param5": "string:LIDO",
+            "c0-param6": "string:en",
+            "batchId": "1",
+            "page":
+                "/lido/las/login.jsp?DESMON_RESULT_PAGE=$realurl/briefing&DESMON_CODE=LAS_002&DESMON_LANG=en",
+            "httpSessionId": "",
+            "scriptSessionId": "C63C650BEED5A9D544876B2756E3ECF0"
+          },
+          headers: {});
+      cookieMap.addAll(_getcookies(response.headers["set-cookie"] ?? ""));
+      //log("$username $password ${response.statusCode} ${response.body}");
+
+      final message = RegExp(r'(?<=errorMessage2:")(.+)(?=",)')
+              .firstMatch(response.body)
+              ?.group(0) ??
+          RegExp(r'(?<=errorMessage1:")(.+)(?=",)')
+              .firstMatch(response.body)
+              ?.group(0);
+
+      final changepass = RegExp(r'(?<=forcePasswdChange:)(.+)(?=,)')
+              .firstMatch(response.body)
+              ?.group(0) ==
+          "true";
+
+      cookieMap = (message != null) ? {} : cookieMap;
+      log("api lido 4d login $username $password ${response.statusCode} logged:$logged msg:${message}");
+
+      return {
+        'error': logged ? null : message,
+        'data': {"logged": logged},
+        'meta': {
+          "changepass": changepass,
+          "user": username,
+          "pass": password,
+          "cookie": cookieMap
+        }
+      };
+    } catch (e) {
+      return {
+        'error': e.toString(),
+        'data': {"logged": false},
+        'meta': {"user": username, "pass": password, "cookie": null}
+      };
+    }
+  }
+
+  Future list(
+      {String date = "",
+      String dep = "",
+      String des = "",
+      String al = "",
+      String fnum = ""}) async {
+    try {
+      final startdate = (date == "")
+          ? DateTime.now()
+              .subtract(const Duration(hours: 36))
+              .toUtc()
+              .millisecondsSinceEpoch
+          : DateTime.parse(date).millisecondsSinceEpoch;
+      final endate = startdate + (1000 * 60 * 60 * 36);
+      var response = await get(
+          Uri.parse(
+                  "$url/lido/lcb/ui/flights?page=0&size=100&startDateTime=1653148128544&endDateTime=1653191328544")
+              .replace(queryParameters: {
+            "page": "0",
+            "size": "1000",
+            "startDateTime": startdate.toString(),
+            "endDateTime": endate.toString(),
+            ...(al != "" ? {"commAirLine": al} : {}),
+            ...(fnum != "" ? {"flightNumber": fnum} : {}),
+            ...(dep != "" ? {"departure": dep} : {}),
+            ...(des != "" ? {"destination": des} : {}),
+          }),
+          headers: {"X-lido-businessId": "SearchFlights", ...headers});
+      //log(response.headers.toString());
+      Map decodedresponse;
+
+      // print("${response.body}");
+      try {
+        decodedresponse = json.decode(response.body) ?? {};
+      } catch (e) {
+        decodedresponse = {
+          "body": response.body,
+          "response": response.statusCode
+        };
+      }
+      String? message = decodedresponse["errorsAndWarnings"]?["warnings"]?[0]
+              ?["message"] ??
+          decodedresponse["errorsAndWarnings"]?["errors"]?[0]?["message"] ??
+          ((response.statusCode == 200) ? null : "ERR");
+
+      /*
+      print(((decodedresponse["totalElements"] ?? 0) > 0
+          ? decodedresponse["content"].fold([], (t, e) {
+              t.add(e["leg"]);
+              return t;
+            })
+          : []));
+      */
+
+      return {
+        'error': message,
+        'data': (message == null) ? decodedresponse["content"] : null,
+        'meta': {
+          "legs": (decodedresponse["totalElements"] ?? 0) > 0
+              ? decodedresponse["content"].fold([], (t, e) {
+                  t.add(e["leg"]["legidentifier"]);
+                  return t;
+                })
+              : [],
+          "user": username,
+          "pass": password,
+          "nb": decodedresponse["totalElements"] ?? 0,
+          "cookie": cookieMap
+        }
+      };
+    } catch (e) {
+      return {'error': e.toString(), 'data': {}, 'meta': {}};
+    }
+  }
+
+  Future ofp(
+      {String al = "",
+      String fnum = "",
+      String date = "",
+      String origin = "",
+      String dep = '',
+      String des = ''}) async {
+    try {
+      final dateoforigin =
+          DateTime.parse("${(origin == "") ? date : origin}T00:00:00Z")
+              .millisecondsSinceEpoch;
+      String brieflink = "";
+      String legid = "";
+      if (origin == "") {
+        final res = await list(
+            date: date != "" ? date : origin,
+            al: al,
+            fnum: fnum,
+            dep: dep,
+            des: des);
+        if (res["error"] != null) {
+          return res;
+        } else if (res["data"]?[0]?["_links"]?["self"]?["href"] != null) {
+          //(res["data"]?[0]?["_links"]?["self"]?["href"] ?? "").toString());
+          brieflink = res["data"]?[0]?["_links"]?["self"]?["href"];
+          legid = res["data"]?[0]?["leg"]?["legidentifier"];
+        } else {
+          // no link found
+          return {
+            'error': "Can't find the requested OFP.",
+            'data': res["data"],
+            'meta': {"user": username, "pass": password, "cookie": cookieMap}
+          };
+        }
+      } else {
+        legid =
+            '$al.$fnum.${DateFormat("ddLLLy").format(DateTime.fromMillisecondsSinceEpoch(dateoforigin))}.$dep.$des.';
+
+        brieflink = "$url/lido/lcb/ui/$legid/briefing";
+      }
+
+      var response = await put(Uri.parse(brieflink),
+          headers: {
+            "X-lido-businessId": 'SearchBP',
+            ...headers,
+          },
+          //body: json.encode(({"commercialAirline": al,"flightNumber": fnum,"operationalSuffix": "","date": dateoforigin.toString()
+
+          body: json.encode(({
+            "categories": [
+              "APLI",
+              "APTDXML",
+              "SOFP",
+              "CDA",
+              "RADAR",
+              "OFPDLK",
+              "ATSXML",
+              "REGWXXML",
+              "WXSIGWX",
+              "SIGWXROUTE",
+              "VAATCA",
+              "ASPDXML",
+              "NOTAMXML",
+              "OTS",
+              "SFC",
+              "WINDDATA",
+              "RAIMXML",
+              "ARPTWXXML",
+              "SOFPINFO",
+              "IWFRXML",
+              "OFPNLXML",
+              "VERTPROF",
+              "SOFPSUM",
+              "RAIM",
+              "UAD",
+              "DISMAP",
+              "WXSATWX"
+            ],
+          })));
+      //log(response.body);
+
+      Map decodedresponse;
+      try {
+        decodedresponse = (json.decode(response.body) ?? {});
+      } catch (e) {
+        decodedresponse = {};
+      }
+      String? message = decodedresponse["errorsAndWarnings"]?["warnings"]?[0]
+              ?["message"] ??
+          decodedresponse["errorsAndWarnings"]?["errors"]?[0]?["message"] ??
+          ((response.statusCode == 201) ? null : "ERR");
+
+      return {
+        'error': (message == null) ? null : message,
+        'data': decodedresponse,
+        'meta': {
+          "user": username,
+          "pass": password,
+          "cookie": cookieMap,
+          "legid": legid
+        }
+      };
+    } catch (e) {
+      return {'error': e.toString(), 'data': {}, 'meta': {}};
+    }
+  }
+
+  Future ofppdf(
+      {String al = "",
+      String fnum = "",
+      String date = "",
+      String origin = "",
+      String dep = '',
+      String des = ''}) async {
+    try {
+      final dateoforigin =
+          DateTime.parse("${(origin == "") ? date : origin}T00:00:00Z")
+              .millisecondsSinceEpoch;
+
+      String legid = "";
+      if (origin == "") {
+        final res = await list(
+            date: date != "" ? date : origin,
+            al: al,
+            fnum: fnum,
+            dep: dep,
+            des: des);
+        if (res["error"] != null) {
+          log("lido4d: ofps listed, ${res["error"]}");
+          return res;
+        } else if (res["data"]?[0]?["_links"]?["self"]?["href"] != null) {
+          legid = res["data"]?[0]?["leg"]?["legidentifier"];
+        } else {
+          log("lido4d: no link found");
+          // no link found
+          return {
+            'error': "Can't find the requested OFP.",
+            'data': res["data"],
+            'meta': {"user": username, "pass": password, "cookie": cookieMap}
+          };
+        }
+      } else {
+        legid =
+            '$al.$fnum.${DateFormat("ddLLLy").format(DateTime.fromMillisecondsSinceEpoch(dateoforigin))}.$dep.$des.';
+      }
+
+      var response = await put(
+          Uri.parse("$url/lido/lcb/ui/briefing/multi/print?force=true"),
+          headers: {
+            "Accept":
+                "application/vnd.lsy.lido.lcb.v1.hal+json,application/pdf",
+            //"Accept-Encoding": "gzip, deflate, br",
+            "Accept-Language": "en",
+            "Connection": "keep-alive",
+            "Content-Type": "application/json;charset=UTF-8",
+            "Cookie": cookie,
+            //"host": Uri.parse(realurl).host,
+            "Origin": Uri.parse(realurl).host,
+            // "sec-ch-ua":'" Not A;Brand";v="99", "Chromium";v="101", "Google Chrome";v="101"',
+
+            "User-Agent":
+                "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.67 Safari/537.36",
+            "X-lido-applicationId": "lido-lcb",
+            "X-lido-businessId": "printBP",
+            "X-lido-clientId": "lido-lcb-web",
+            "X-lido-csrf": cookieMap["lido_csrf"],
+            "X-lido-customerId": "TAR",
+            "X-lido-operatingAirline": "TU",
+            "X-lido-timeStamp": "2022-05-25T06:29:56.659Z",
+            "X-lido-traceId": "3cbab7e0-56ca-49ec-b158-8899c0d3bbbb",
+          },
+          body: json.encode({
+            "legIdentifiers": [legid],
+            "categories": [
+              "OFP",
+              "ATS",
+              "CREWINFO",
+              "DISP",
+              "IWFR",
+              "NOTAM",
+              "UAD",
+              "WXSIGWX",
+              "VERTPROF",
+              "RAIM",
+              "DMS",
+              "WXNOTAM",
+              "ABD",
+              "SIGWXROUTE",
+              //"WXSATWX"
+            ],
+            "merge": false,
+            "quickprint": false,
+            "weatherDataRequired": false,
+          }));
+
+      Map decodedresponse;
+      try {
+        //decodedresponse = (json.decode(response.body) ?? {});
+        decodedresponse = {};
+      } catch (e) {
+        decodedresponse = {};
+      }
+      String? message = decodedresponse["errorsAndWarnings"]?["warnings"]?[0]
+              ?["message"] ??
+          decodedresponse["errorsAndWarnings"]?["errors"]?[0]?["message"] ??
+          ((response.statusCode == 201) ? null : "ERR");
+      //log("xx ${response.headers}");
+      //final id ="${DateFormat("yyyyMMdd").format(DateTime.fromMillisecondsSinceEpoch(dateoforigin))}_${dep}_${des}_$al$fnum";
+      final id = Lido4dService.filename(
+          al: al, fnum: fnum, dep: dep, des: des, origin: origin, date: date);
+      var filepdf =
+          await Io.getFile(response, filename: "$id.pdf", folder: "ofps");
+
+      return {
+        'error': (message == null) ? null : message,
+        'data': (message == null)
+            ? {"file": filepdf["location"], "bytes": filepdf["bytes"], "id": id}
+            : null,
+        'meta': {"user": username, "pass": password, "cookie": cookieMap}
+      };
+    } catch (e) {
+      return {'error': e.toString(), 'data': {}, 'meta': {}};
+    }
+  }
+
+  Map<String, String> _getcookies(String cookiesData,
+      {List<String> vars = const [
+        "lido_auth",
+        "lido_csrf",
+        "JSESSIONID",
+        "SERVERID"
+      ]}) {
+    Map<String, String> cookies = {};
+    for (var title in vars) {
+      if (cookiesData.contains(title)) {
+        List at =
+            (RegExp(r'(' + title + ')(.*?)[^;]+').stringMatch(cookiesData) ??
+                    "")
+                .split('=');
+        cookies[title] = at[1];
+      }
+    }
+    return cookies;
+  }
+}

+ 577 - 0
lib/lido/lido_api.dart

@@ -0,0 +1,577 @@
+//import 'package:html';
+
+import 'dart:convert';
+import 'dart:developer';
+import 'dart:io';
+
+import 'package:flutter_riverpod/flutter_riverpod.dart';
+import 'package:hive_flutter/hive_flutter.dart';
+import 'package:http/http.dart' as http;
+
+import 'package:flutter/foundation.dart';
+import 'package:jiffy/jiffy.dart';
+import 'package:tp5/core/utils.dart';
+
+final lidoapiProvider = Provider<LidoApi>((ref) {
+  return LidoApi();
+});
+
+class LidoApi {
+  //static const url = "https://tar.lido.aero";
+  static const url =
+      kIsWeb ? "https://proxy.fares.cyou" : "https://tar.lido.aero";
+  //static const url = "https://proxy.fares.cyou";
+  static const realurl = "https://tar.lido.aero";
+
+  final timeout = Duration(seconds: 7);
+  LidoApi({this.username = "", this.password = ""});
+  bool logged = false;
+  String username;
+  String password;
+  String get cookie =>
+      "${cookieMap.keys.fold("", (t, e) => (t == "") ? "$e=${cookieMap[e]}" : "$t; $e=${cookieMap[e]}")};SameSite=None; Secure";
+
+  Map cookieMap = {};
+  Map<String, String> get headers => {
+        "Accept": "application/vnd.lsy.lido.lcb.v1.hal+json",
+        "Accept-Encoding": "gzip, deflate, br",
+        "Accept-Language": "en",
+        "Connection": "keep-alive",
+        "Content-Type": "application/json;charset=UTF-8",
+        //"Host": Uri.parse(realurl).host,
+        "Origin": Uri.parse(realurl).host,
+        //"sec-ch-ua":'" Not A;Brand";v="99", "Chromium";v="101", "Google Chrome";v="101"',
+        // "sec-ch-ua-mobile": "?0",
+        // "sec-ch-ua-platform": "Windows",
+        // "Sec-Fetch-Dest": "empty",
+        // "Sec-Fetch-Mode": "cors",
+        // "Sec-Fetch-Site": "same-origin",
+        "User-Agent":
+            'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.67 Safari/537.36',
+        "X-lido-applicationId": "lido-lcb",
+        "X-lido-clientId": "lido-lcb-web",
+        "X-lido-customerId": "TAR",
+        "X-lido-operatingAirline": "",
+        "X-lido-timeStamp": DateTime.now().toUtc().toIso8601String(),
+        "X-lido-traceId": "0c497133-2a92-45a0-8ffe-a03c77852201",
+        "cookie": "SERVERID=docker2; $cookie",
+        "X-lido-csrf": cookieMap["lido_csrf"] ?? "",
+      };
+  Future logout() async {
+    var response = await http.post(Uri.parse('${url}USR/actionLogout.jsp'),
+        body: {"Cookie": cookie});
+    logged = false;
+  }
+
+  bool credSaved() {
+    return (Hive.box("profile").get("lido_user", defaultValue: "") != null) &&
+        (Hive.box("profile").get("lido_pass", defaultValue: "") != "");
+  }
+
+  Future login({String? user, String? pass}) async {
+    username = user ?? Hive.box("profile").get("lido_user", defaultValue: "");
+    password = pass ?? Hive.box("profile").get("lido_pass", defaultValue: "");
+    try {
+      var response = await http
+          .get(
+            Uri.parse(
+                '$url/lido/las/login.jsp?DESMON_RESULT_PAGE=$realurl/briefing//'),
+          )
+          .timeout(timeout);
+      cookieMap.addAll(_getcookies(response.headers["set-cookie"] ??
+          response.headers["_set-cookie"] ??
+          ""));
+      //print(response.headers);
+      response = await http.post(
+          Uri.parse('$url/lido/las/dwr/call/plaincall/LoginBean.login.dwr'),
+          body: {
+            "callCount": "1",
+            "nextReverseAjaxIndex": "0",
+            "c0-scriptName": "LoginBean",
+            "c0-methodName": "login",
+            "c0-id": "0",
+            "c0-param0": "string:$username",
+            "c0-param1": "string:$password",
+            "c0-param2": "string:",
+            "c0-param3": "string:LIDO",
+            "c0-param4": "string:en",
+            "batchId": "0",
+            "instanceId": "0",
+            "page":
+                "/lido/las/login.jsp?DESMON_RESULT_PAGE=$realurl/briefing&DESMON_CODE=LAS_002&DESMON_LANG=en",
+            "scriptSessionId":
+                "lSUqDnaTyhevHY6vpNvPdIR~IuUygzP8a2p/kYr1m2p-BgwpWJ4*a"
+          },
+          headers: {});
+      cookieMap.addAll(_getcookies(response.headers["set-cookie"] ?? ""));
+      //log("lidoapi: login : $username $password ${response.statusCode} ${response.body}");
+
+      final message = RegExp(r'(?<=errorMessage2:")(.+)(?=",)')
+              .firstMatch(response.body)
+              ?.group(0) ??
+          RegExp(r'(?<=errorMessage1:")(.+)(?=",)')
+              .firstMatch(response.body)
+              ?.group(0);
+      final errorcode = RegExp(r'(?<=errorCode:)(.+?)(?=,)')
+              .firstMatch(response.body)
+              ?.group(0) ??
+          "xx";
+      // print(errorcode);
+      final changepass = RegExp(r'(?<=forcePasswdChange:)(.+)(?=,)')
+              .firstMatch(response.body)
+              ?.group(0) ==
+          "true";
+
+      logged = errorcode == "null";
+
+      cookieMap = (!logged) ? {} : cookieMap;
+      // log("api lido 4d login \nuser:$username\npass:$password\nstatuscode${response.statusCode}\nlogged:$logged\nmsg:$message");
+      log("api lido 4d login errorcode: $errorcode");
+
+//invalide username or password
+      if (errorcode == "LAS_112" && (user == null) && (pass == null)) {
+        await Hive.box("profile").delete("lido_user");
+        await Hive.box("profile").delete("lido_pass");
+        await Hive.box("profile").put("lido_user_old", username);
+        await Hive.box("profile").put("lido_pass_old", pass);
+      }
+
+      return {
+        'error': logged ? null : message,
+        'data': {"logged": logged, "message": message},
+        'meta': {
+          "changepass": changepass,
+          "user": username,
+          "pass": password,
+          "cookie": cookieMap,
+          "errorcode": errorcode
+        }
+      };
+    } catch (e) {
+      return {
+        'error': e.toString(),
+        'data': {"logged": false},
+        'meta': {"user": username, "pass": password, "cookie": null}
+      };
+    }
+  }
+
+  Future getDoc(String link,
+      {String? mediaType, bool loginfirst = false}) async {
+    try {
+      if (loginfirst) {
+        final out = await login();
+        if (!logged) return out;
+      }
+
+      final murl = link.replaceFirst(realurl, url);
+      var response = await http.get(
+          Uri.parse(murl)
+          // .replace(queryParameters: {}),
+          ,
+          headers: {"X-lido-businessId": "ViewBP", ...headers});
+      // log(response.headers.toString());
+      Map decodedresponse;
+
+      print("lidoapi: getdoc: ${response.statusCode} ");
+      // try {
+      //   decodedresponse = json.decode(response.body) ?? {};
+      // } catch (e) {
+      //   decodedresponse = {
+      //     "body": response.body,
+      //     "response": response.statusCode
+      //   };
+      // }
+      //log("lidoapi: getDoc: responsestatus: ${response.body}");
+      if (!loginfirst && response.statusCode != 200) {
+        return await getDoc(link, mediaType: mediaType, loginfirst: true);
+      }
+      // String? message = decodedresponse["errorsAndWarnings"]?["warnings"]?[0]
+      //         ?["message"] ??
+      //     decodedresponse["errorsAndWarnings"]?["errors"]?[0]?["message"] ??
+      //     ((response.statusCode == 200) ? null : "ERR");
+
+      // log("lidoapi: getDoc: success: ${decodedresponse["content"]}");
+
+      return {
+        'error': response.statusCode >= 300 ? response.statusCode : null,
+        'data': response.body,
+        'meta': {"user": username, "pass": password, "cookie": cookieMap}
+      };
+    } catch (e) {
+      return {'error': e.toString(), 'data': {}, 'meta': {}};
+    }
+  }
+
+  Future list(
+      {Jiffy? start,
+      Jiffy? end,
+      String dep = "",
+      String des = "",
+      String al = "",
+      String fnum = "",
+      bool loginfirst = false}) async {
+    final key =
+        "${start?.format(pattern: "yyyyMMdd_HH_mm") ?? ""} $dep $des $al $fnum";
+
+    try {
+      if (loginfirst) {
+        final out = await login();
+        if (!logged) return out;
+      }
+
+      final startdate = (start ?? (Jiffy.now().toUtc().subtract(hours: 12)))
+          .millisecondsSinceEpoch;
+      final enddate = (end ??
+              Jiffy.parseFromMillisecondsSinceEpoch(startdate).add(hours: 48))
+          .millisecondsSinceEpoch;
+      var response = await http.get(
+          Uri.parse(
+                  "$url/lido/lcb/ui/flights?page=0&size=100&startDateTime=1653148128544&endDateTime=1653191328544")
+              .replace(queryParameters: {
+            "page": "0",
+            "size": "1000",
+            "startDateTime": startdate.toString(),
+            "endDateTime": enddate.toString(),
+            ...(al != "" ? {"commAirLine": al} : {}),
+            ...(fnum != "" ? {"flightNumber": fnum} : {}),
+            ...(dep != "" ? {"departure": dep} : {}),
+            ...(des != "" ? {"destination": des} : {}),
+          }),
+          headers: {"X-lido-businessId": "SearchFlights", ...headers});
+      //log(response.headers.toString());
+      Map decodedresponse;
+
+      // print("${response.body}");
+      try {
+        decodedresponse = json.decode(response.body) ?? {};
+      } catch (e) {
+        decodedresponse = {
+          "body": response.body,
+          "response": response.statusCode
+        };
+      }
+      //log("lidoapi: list: responsestatus: ${response.statusCode}");
+      if (!loginfirst && response.statusCode != 200) {
+        return await list(
+            al: al,
+            fnum: fnum,
+            dep: dep,
+            des: des,
+            start: start,
+            end: end,
+            loginfirst: true);
+      }
+      String? message = decodedresponse["errorsAndWarnings"]?["warnings"]?[0]
+              ?["message"] ??
+          decodedresponse["errorsAndWarnings"]?["errors"]?[0]?["message"] ??
+          ((response.statusCode == 200) ? null : "ERR");
+
+      // log("lidoapi: list: success: ${decodedresponse["content"]}");
+      Map res = {
+        'error': message,
+        'data': (message == null) ? decodedresponse["content"] : null,
+        'meta': {
+          "legs": (decodedresponse["totalElements"] ?? 0) > 0
+              ? decodedresponse["content"].fold([], (t, e) {
+                  t.add(e["leg"]["legidentifier"]);
+                  return t;
+                })
+              : [],
+          "user": username,
+          "pass": password,
+          "nb": decodedresponse["totalElements"] ?? 0,
+          "cookie": cookieMap
+        }
+      };
+
+      // cache response if success
+      Hive.box("lido").put(key, json.encode(res));
+
+      return res;
+    } catch (e) {
+      print("lidoapi: list:");
+      final res = {
+        'error': e.toString(),
+        'data': {},
+        'meta': {},
+        'cache': json.decode(Hive.box("lido").get(key, defaultValue: "{}"))
+      };
+      return res;
+    }
+  }
+
+  Future ofp(
+      {required String legid,
+      String? brieflink,
+      bool loginfirst = false}) async {
+    try {
+      if (loginfirst) {
+        final out = await login();
+        if (!logged) return out;
+      }
+
+      // brieflink = res["data"]?[0]?["_links"]?["self"]?["href"];
+      // legid = res["data"]?[0]?["leg"]?["legidentifier"];
+
+      brieflink = brieflink ?? "$url/lido/lcb/ui/$legid/briefing";
+      var response = await http.put(Uri.parse(brieflink),
+          headers: {
+            "X-lido-businessId": 'SearchBP',
+            ...headers,
+          },
+          //body: json.encode(({"commercialAirline": al,"flightNumber": fnum,"operationalSuffix": "","date": dateoforigin.toString()
+
+          body: json.encode(({
+            "categories": [
+              "OFP",
+              "IWFR",
+              "ATS",
+              "DISP",
+              "NOTAM",
+              "SIGWXROUTE",
+              "VERTPROF",
+              "CREWINFO",
+              "UAD",
+              "RAIM",
+              "VAATCA",
+              "CDA",
+              "DISMAP",
+              "DMS",
+              "ABD",
+              "OFPDLK",
+              "TLR",
+
+              // "OFP",
+              // "NOTAM",
+              // // "APTDXML",
+              // "SOFP",
+              // "CDA",
+              // "RADAR",
+              // "OFPDLK",
+              // // "ATSXML",
+              // // "REGWXXML",
+              // "WXSIGWX",
+              // "SIGWXROUTE",
+              // "VAATCA",
+              // // "ASPDXML",
+              // // "NOTAMXML",
+              // "OTS",
+              // "SFC",
+              // "WINDDATA",
+              // // "RAIMXML",
+              // "TLR",
+              // // "ARPTWXXML",
+              // "SOFPINFO",
+              // // "HAZARDADVISORYXML",
+              // "IWFRXML",
+              // "OFPNLXML",
+              // "VERTPROF",
+              // "SOFPSUM",
+              // "APLI",
+              // "RAIM",
+              // "UAD",
+              // "DISMAP",
+              // "WXSATWX"
+
+              // "APLI",
+              // "APTDXML",
+              // "SOFP",
+              // "CDA",
+              // "RADAR",
+              // "OFPDLK",
+              // "ATSXML",
+              // "REGWXXML",
+              // "WXSIGWX",
+              // "SIGWXROUTE",
+              // "VAATCA",
+              // "ASPDXML",
+              // "NOTAMXML",
+              // "OTS",
+              // "SFC",
+              // "WINDDATA",
+              // "RAIMXML",
+              // "ARPTWXXML",
+              // "SOFPINFO",
+              // "IWFRXML",
+              // "OFPNLXML",
+              // "VERTPROF",
+              // "SOFPSUM",
+              // "RAIM",
+              // "UAD",
+              // "DISMAP",
+              // "WXSATWX"
+            ],
+          })));
+      //log(response.body);
+
+      Map decodedresponse;
+      try {
+        decodedresponse = (json.decode(response.body) ?? {});
+      } catch (e) {
+        decodedresponse = {};
+      }
+      String? message = decodedresponse["errorsAndWarnings"]?["warnings"]?[0]
+              ?["message"] ??
+          decodedresponse["errorsAndWarnings"]?["errors"]?[0]?["message"] ??
+          ((response.statusCode == 201) ? null : "ERR");
+
+      log("lidoapi: ofp: statuscode: ${response.statusCode} msg: $message");
+
+      return {
+        'error': (message == null) ? null : message,
+        'data': decodedresponse,
+        'meta': {
+          "user": username,
+          "pass": password,
+          "cookie": cookieMap,
+          "legid": legid
+        }
+      };
+    } catch (e) {
+      return {'error': e.toString(), 'data': {}, 'meta': {}};
+    }
+  }
+
+  Future ofppdf(
+      {required String legid, String? fileid, bool loginfirst = false}) async {
+    try {
+      if (loginfirst) {
+        final out = await login();
+        if (!logged) return out;
+      }
+
+      var response = await http.put(
+          Uri.parse("$url/lido/lcb/ui/briefing/multi/print?force=true"),
+          headers: {
+            "Accept":
+                "application/vnd.lsy.lido.lcb.v1.hal+json,application/pdf",
+            //"Accept-Encoding": "gzip, deflate, br",
+            "Accept-Language": "en",
+            "Connection": "keep-alive",
+            "Content-Type": "application/json;charset=UTF-8",
+            "Cookie": cookie,
+            //"host": Uri.parse(realurl).host,
+            "Origin": Uri.parse(realurl).host,
+            // "sec-ch-ua":'" Not A;Brand";v="99", "Chromium";v="101", "Google Chrome";v="101"',
+
+            "User-Agent":
+                "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.67 Safari/537.36",
+            "X-lido-applicationId": "lido-lcb",
+            "X-lido-businessId": "printBP",
+            "X-lido-clientId": "lido-lcb-web",
+            "X-lido-csrf": cookieMap["lido_csrf"] ?? "",
+            "X-lido-customerId": "TAR",
+            "X-lido-operatingAirline": "TU",
+            "X-lido-timeStamp": "2022-05-25T06:29:56.659Z",
+            "X-lido-traceId": "3cbab7e0-56ca-49ec-b158-8899c0d3bbbb",
+          },
+          body: json.encode({
+            "legIdentifiers": [legid],
+            "categories": [
+              "OFP",
+              "ATS",
+              "CREWINFO",
+              "DISP",
+              "IWFR",
+              "NOTAM",
+              "UAD",
+              "WXSIGWX",
+              "VERTPROF",
+              "RAIM",
+              "DMS",
+              "WXNOTAM",
+              "ABD",
+              "SIGWXROUTE",
+              //"WXSATWX"
+            ],
+            "merge": false,
+            "quickprint": false,
+            "weatherDataRequired": false,
+          }));
+
+      if (!loginfirst && response.statusCode > 201) {
+        return ofppdf(legid: legid, fileid: fileid, loginfirst: true);
+      }
+
+      // log("lidoapi: pdfofp2: status: ${response.statusCode} fileid: $fileid ");
+      //final id ="${DateFormat("yyyyMMdd").format(DateTime.fromMillisecondsSinceEpoch(dateoforigin))}_${dep}_${des}_$al$fnum";
+      final ok = response.headers.containsKey("content-disposition");
+      // log("lidoapi: pdfofp2: status: ${response.headers} ");
+
+      final xfileid = fileid ?? PathTo().lidoFile("$legid.pdf");
+
+      if (ok) {
+        await downloadPdf(response, xfileid);
+      }
+      final res = {
+        'error': (ok) ? null : "no PDF downloaded",
+        'data': (ok)
+            ? {
+                "downloaded": true,
+                "fileid": xfileid,
+              }
+            : {
+                "downloaded": false,
+                "fileid": null,
+              },
+        'meta': {"user": username, "pass": password, "cookie": cookieMap}
+      };
+
+      return res;
+    } catch (e) {
+      final res = {
+        'error': e.toString(),
+        'data': {
+          {
+            "downloaded": false,
+            "fileid": null,
+          }
+        },
+        'meta': {}
+      };
+
+      final xfileid = fileid ?? PathTo().lidoFile("$legid.pdf");
+      if (File(xfileid).existsSync()) {
+        res["cache"] = xfileid;
+      }
+
+      return res;
+    }
+  }
+
+  Map<String, String> _getcookies(String cookiesData,
+      {List<String> vars = const [
+        "lido_auth",
+        "lido_csrf",
+        "JSESSIONID",
+        "SERVERID"
+      ]}) {
+    Map<String, String> cookies = {};
+    for (var title in vars) {
+      if (cookiesData.contains(title)) {
+        List at =
+            (RegExp(r'(' + title + ')(.*?)[^;]+').stringMatch(cookiesData) ??
+                    "")
+                .split('=');
+        cookies[title] = at[1];
+      }
+    }
+    return cookies;
+  }
+
+  Future<void> downloadPdf(http.Response response, String fileid) async {
+    try {
+      if (response.statusCode == 201) {
+        final pdfBytes = response.bodyBytes;
+        final file = File(fileid);
+        await file.writeAsBytes(pdfBytes);
+        print('PDF downloaded and saved to $fileid');
+      } else {
+        print('Error downloading PDF: ${response.statusCode}');
+      }
+    } catch (e) {
+      print('Error downloading file: $e');
+    }
+  }
+}

+ 1010 - 0
lib/lido/lidoapi_ofp.json

@@ -0,0 +1,1010 @@
+{
+    "briefingPackages":[
+       {
+          "status":"Started",
+          "previousStatus":"Not Started",
+          "leg":[
+             {
+                "legidentifier":"TU.634.28May2024.DJE.ORY.",
+                "commercialAirlineIATA":"TU",
+                "commercialAirlineICAO":"TAR",
+                "flightNumber":634,
+                "operationalSuffix":"",
+                "aircraftOperatorIATA":"TU",
+                "aircraftOperatorICAO":"TAR",
+                "departureAirport":"DJE",
+                "destinationAirport":"ORY",
+                "ofpNumber":"3/0/0",
+                "aircraftDetails":{
+                   "aircraftRegistration":"TSIMS",
+                   "aircraftModel":"A320-214",
+                   "aircraftICAOType":"A320"
+                },
+                "dispatcherInformation":{
+                   "dispatchOffice":"TAR",
+                   "dispatcherName":"NIZAR ZANNED",
+                   "dispatcherTelephoneNumber":"00216 71 942 709",
+                   "dispatcherRemarks":null
+                },
+                "ctot":1716876600000,
+                "slotAction":"allocate",
+                "estimatedDepartureTime":1716876000000,
+                "scheduledDepartureTime":1716876000000,
+                "estimatedTimeOfArrival":1716885900000,
+                "scheduledTimeOfArrival":1716885900000,
+                "crewMembers":[
+                   {
+                      "position":0,
+                      "name":"TORKHANI",
+                      "crewId":13654
+                   }
+                ],
+                "fuel":{
+                   "unitOfMeasure":"K",
+                   "tankCapacity":19000,
+                   "averageFuelFlow":2541,
+                   "taxiFuel":109,
+                   "tripFuel":6720,
+                   "blockFuel":9192,
+                   "possibleExtra":6417,
+                   "totalTripTimeMinutes":159,
+                   "taxiTimeMinutes":8,
+                   "estimTotalFlightTime":219,
+                   "takeOffFuel":9083,
+                   "takeOffFuelTime":219,
+                   "averageTaxiFuelFlow":820,
+                   "fuelOnBoard":{
+                      "remainingFuel":0,
+                      "unitOfMeasure":"K",
+                      "remainingFuelIndicator":null
+                   }
+                },
+                "weight":{
+                   "maxZfw":62500,
+                   "maxTaxiWeight":77400,
+                   "maxTakeOffWeight":77000,
+                   "plannedZfw":57220,
+                   "restrictedTakeOffWeight":77000,
+                   "maxLandingWeight":66000
+                },
+                "reclearanceIndicator":false,
+                "dateOfOrigin":1716854400000,
+                "dateOfOperation":1716876000000,
+                "masterOffice":"",
+                "responsibleOffice":"TAR",
+                "flightDuplicationNumber":null,
+                "destinationAirportICAO":"LFPO",
+                "departureAirportICAO":"DTTJ",
+                "flightRoute":"DTTJ/09 F360 KBIRA1A KBIRA V334 NEDOS UV334 NATLA UV334 TBK UG869 DOPEL DCT DEC/F380 DCT LUNAM DCT UPDUT DCT CORSI DCT OMEDA DCT MERLU DCT PIGOS UM733 BULOL/F340 UM733 IDAVO DCT ARDOL ARDOL9W LFPO/24"
+             }
+          ],
+          "categories":[
+             {
+                "name":"APLI",
+                "documents":[
+                   {
+                      "fileId":"66555722cb59ef6639d8027f",
+                      "legIdentifier":"TU.634.28May2024.DJE.ORY.",
+                      "mediaType":"text/plain",
+                      "creationTime":1716868898705,
+                      "metadata":null,
+                      "_links":{
+                         "self":{
+                            "href":"https://tar.lido.aero/lido/lcb/ui/TU.634.28May2024.DJE.ORY./briefing/66555722cb59ef6639d8027f/docs"
+                         }
+                      },
+                      "fileName":"APLI"
+                   }
+                ],
+                "flightRelated":true,
+                "type":"APLI"
+             },
+             {
+                "name":"ATSXML",
+                "documents":[
+                   {
+                      "fileId":"66555722cb59ef6639d80283",
+                      "legIdentifier":"TU.634.28May2024.DJE.ORY.",
+                      "mediaType":"application/xml",
+                      "creationTime":1716868898735,
+                      "metadata":[
+                         {
+                            "key":"mainATS",
+                            "value":true
+                         }
+                      ],
+                      "_links":{
+                         "self":{
+                            "href":"https://tar.lido.aero/lido/lcb/ui/TU.634.28May2024.DJE.ORY./briefing/66555722cb59ef6639d80283/docs"
+                         }
+                      },
+                      "fileName":"ATS.xml"
+                   }
+                ],
+                "flightRelated":true,
+                "type":"ATSXML"
+             },
+             {
+                "name":"NOTAMXML",
+                "documents":[
+                   {
+                      "fileId":"66555722cb59ef6639d80287",
+                      "legIdentifier":"TU.634.28May2024.DJE.ORY.",
+                      "mediaType":"application/xml",
+                      "creationTime":1716868898785,
+                      "metadata":null,
+                      "_links":{
+                         "self":{
+                            "href":"https://tar.lido.aero/lido/lcb/ui/TU.634.28May2024.DJE.ORY./briefing/66555722cb59ef6639d80287/docs"
+                         }
+                      },
+                      "fileName":"NOTA.xml"
+                   }
+                ],
+                "flightRelated":true,
+                "type":"NOTAMXML"
+             },
+             {
+                "name":"RAIM",
+                "documents":[
+                   {
+                      "fileId":"6654bc29bc956b15f509f973",
+                      "legIdentifier":"TU.634.28May2024.DJE.ORY.",
+                      "mediaType":"text/plain",
+                      "creationTime":1716868898832,
+                      "metadata":null,
+                      "_links":{
+                         "self":{
+                            "href":"https://tar.lido.aero/lido/lcb/ui/TU.634.28May2024.DJE.ORY./briefing/6654bc29bc956b15f509f973/docs"
+                         }
+                      },
+                      "fileName":"RAIM"
+                   }
+                ],
+                "flightRelated":true,
+                "type":"RAIM"
+             },
+             {
+                "name":"RAIMXML",
+                "documents":[
+                   {
+                      "fileId":"66555722cb59ef6639d8028d",
+                      "legIdentifier":"TU.634.28May2024.DJE.ORY.",
+                      "mediaType":"application/xml",
+                      "creationTime":1716868898847,
+                      "metadata":null,
+                      "_links":{
+                         "self":{
+                            "href":"https://tar.lido.aero/lido/lcb/ui/TU.634.28May2024.DJE.ORY./briefing/66555722cb59ef6639d8028d/docs"
+                         }
+                      },
+                      "fileName":"RAIM.xml"
+                   }
+                ],
+                "flightRelated":true,
+                "type":"RAIMXML"
+             },
+             {
+                "name":"UAD",
+                "documents":[
+                   {
+                      "fileId":"66555723cb59ef6639d80297",
+                      "legIdentifier":"TU.634.28May2024.DJE.ORY.",
+                      "mediaType":"image/gif",
+                      "creationTime":1716868899692,
+                      "metadata":[
+                         {
+                            "key":"flightLevel",
+                            "value":"380"
+                         },
+                         {
+                            "key":"layer",
+                            "value":[
+                               
+                            ]
+                         },
+                         {
+                            "key":"validityTime",
+                            "value":"2024-05-28T0700:00Z"
+                         }
+                      ],
+                      "_links":{
+                         "self":{
+                            "href":"https://tar.lido.aero/lido/lcb/ui/TU.634.28May2024.DJE.ORY./briefing/66555723cb59ef6639d80297/docs"
+                         }
+                      },
+                      "fileName":"(UAD_FL380_WND_TMP_EDTO.GIF)"
+                   },
+                   {
+                      "fileId":"66555723cb59ef6639d80299",
+                      "legIdentifier":"TU.634.28May2024.DJE.ORY.",
+                      "mediaType":"image/gif",
+                      "creationTime":1716868899764,
+                      "metadata":[
+                         {
+                            "key":"flightLevel",
+                            "value":"100"
+                         },
+                         {
+                            "key":"layer",
+                            "value":[
+                               
+                            ]
+                         },
+                         {
+                            "key":"validityTime",
+                            "value":"2024-05-28T07 00:00Z"
+                         }
+                      ],
+                      "_links":{
+                         "self":{
+                            "href":"https://tar.lido.aero/lido/lcb/ui/TU.634.28May2024.DJE.ORY./briefing/66555723cb59ef6639d80299/docs"
+                         }
+                      },
+                      "fileName":"(UAD_FL100_WND_TMP.GIF)"
+                   },
+                   {
+                      "fileId":"66555723cb59ef6639d8029b",
+                      "legIdentifier":"TU.634.28May2024.DJE.ORY.",
+                      "mediaType":"image/gif",
+                      "creationTime":1716868899828,
+                      "metadata":[
+                         {
+                            "key":"flightLevel",
+                            "value":"340"
+                         },
+                         {
+                            "key":"layer",
+                            "value":[
+                               
+                            ]
+                         },
+                         {
+                            "key":"validityTime",
+                            "value":"2024-05-28T07 00:00Z"
+                         }
+                      ],
+                      "_links":{
+                         "self":{
+                            "href":"https://tar.lido.aero/lido/lcb/ui/TU.634.28May2024.DJE.ORY./briefing/66555723cb59ef6639d8029b/docs"
+                         }
+                      },
+                      "fileName":"(UAD_FL340_WND_TMP.GIF)"
+                   },
+                   {
+                      "fileId":"66555723cb59ef6639d8029d",
+                      "legIdentifier":"TU.634.28May2024.DJE.ORY.",
+                      "mediaType":"image/gif",
+                      "creationTime":1716868899892,
+                      "metadata":[
+                         {
+                            "key":"flightLevel",
+                            "value":"420"
+                         },
+                         {
+                            "key":"layer",
+                            "value":[
+                               
+                            ]
+                         },
+                         {
+                            "key":"validityTime",
+                            "value":"2024-05-28T07 00:00Z"
+                         }
+                      ],
+                      "_links":{
+                         "self":{
+                            "href":"https://tar.lido.aero/lido/lcb/ui/TU.634.28May2024.DJE.ORY./briefing/66555723cb59ef6639d8029d/docs"
+                         }
+                      },
+                      "fileName":"(UAD_FL420_WND_TMP.GIF)"
+                   }
+                ],
+                "flightRelated":true,
+                "type":"UAD"
+             },
+             {
+                "name":"VERTPROF",
+                "documents":[
+                   {
+                      "fileId":"66555723cb59ef6639d8029f",
+                      "legIdentifier":"TU.634.28May2024.DJE.ORY.",
+                      "mediaType":"image/gif",
+                      "creationTime":1716868899910,
+                      "metadata":[
+                         {
+                            "key":"validityTime",
+                            "value":"2024-05-28T07 00:00Z"
+                         }
+                      ],
+                      "_links":{
+                         "self":{
+                            "href":"https://tar.lido.aero/lido/lcb/ui/TU.634.28May2024.DJE.ORY./briefing/66555723cb59ef6639d8029f/docs"
+                         }
+                      },
+                      "fileName":"VertProf.GIF"
+                   }
+                ],
+                "flightRelated":true,
+                "type":"VERTPROF"
+             },
+             {
+                "name":"WXSATWX",
+                "documents":[
+                   {
+                      "fileId":"6655d03c2951de4718f8ab16",
+                      "legIdentifier":"TU.634.28May2024.DJE.ORY.",
+                      "mediaType":"image/jpeg",
+                      "creationTime":1716899769269,
+                      "metadata":[
+                         {
+                            "key":"region",
+                            "value":"Europe"
+                         },
+                         {
+                            "key":"validityTime",
+                            "value":"2024-05-28T12 00:00.000Z"
+                         },
+                         {
+                            "key":"satellite",
+                            "value":"msg2-ir_108"
+                         },
+                         {
+                            "key":"regionCode",
+                            "value":"001"
+                         }
+                      ],
+                      "fileName":"(20241491200_msg2-ir_108_001.jpeg)"
+                   }
+                ],
+                "flightRelated":false,
+                "type":"WXSATWX",
+                "_links":{
+                   "self":{
+                      "href":"https://tar.lido.aero/lido/lcb/ui/TU.634.28May2024.DJE.ORY./briefing?cat=WXSATWX"
+                   }
+                }
+             },
+             {
+                "name":"WXSIGWX",
+                "documents":[
+                   {
+                      "fileId":"665483df2951de4718f8a5a7",
+                      "legIdentifier":"TU.634.28May2024.DJE.ORY.",
+                      "mediaType":"image/png",
+                      "creationTime":1716814666420,
+                      "metadata":[
+                         {
+                            "key":"region",
+                            "value":"Europe"
+                         },
+                         {
+                            "key":"validityTime",
+                            "value":"2024-05-28T06 00:00.000Z"
+                         },
+                         {
+                            "key":"regionCode",
+                            "value":"PGDE14"
+                         },
+                         {
+                            "key":"publisher",
+                            "value":"EGRR"
+                         }
+                      ],
+                      "_links":{
+                         "self":{
+                            "href":"https://tar.lido.aero/lido/lcb/ui/TU.634.28May2024.DJE.ORY./briefing/665483df2951de4718f8a5a7/docs"
+                         }
+                      },
+                      "fileName":"(PGDE14_EGRR_270600.png)"
+                   },
+                   {
+                      "fileId":"665483e02951de4718f8a5af",
+                      "legIdentifier":"TU.634.28May2024.DJE.ORY.",
+                      "mediaType":"image/png",
+                      "creationTime":1716814666354,
+                      "metadata":[
+                         {
+                            "key":"region",
+                            "value":"Europe Africa"
+                         },
+                         {
+                            "key":"validityTime",
+                            "value":"2024-05-28T06 00:00.000Z"
+                         },
+                         {
+                            "key":"regionCode",
+                            "value":"PGRE05"
+                         },
+                         {
+                            "key":"publisher",
+                            "value":"EGRR"
+                         }
+                      ],
+                      "_links":{
+                         "self":{
+                            "href":"https://tar.lido.aero/lido/lcb/ui/TU.634.28May2024.DJE.ORY./briefing/665483e02951de4718f8a5af/docs"
+                         }
+                      },
+                      "fileName":"(PGRE05_EGRR_270600.png)"
+                   }
+                ],
+                "flightRelated":false,
+                "type":"WXSIGWX"
+             },
+             {
+                "name":"IWFRXML",
+                "documents":[
+                   {
+                      "fileId":"6655d03c2951de4718f8ab18",
+                      "legIdentifier":"TU.634.28May2024.DJE.ORY.",
+                      "mediaType":"application/xml",
+                      "creationTime":1716899900445,
+                      "metadata":[
+                         {
+                            "key":"_requestDigest",
+                            "value":"fa8bccf9bdd005edf3d7e28bc48671d08f03b92278fca1795d08850cd59c1132"
+                         }
+                      ],
+                      "fileName":"IWFRXML"
+                   }
+                ],
+                "flightRelated":true,
+                "type":"IWFRXML",
+                "_links":{
+                   "self":{
+                      "href":"https://tar.lido.aero/lido/lcb/ui/TU.634.28May2024.DJE.ORY./briefing?cat=IWFRXML"
+                   }
+                }
+             },
+             {
+                "name":"ARPTWXXML",
+                "documents":[
+                   {
+                      "fileId":"6655d03c2951de4718f8ab1a",
+                      "legIdentifier":"TU.634.28May2024.DJE.ORY.",
+                      "mediaType":"application/xml",
+                      "creationTime":1716899900760,
+                      "metadata":[
+                         {
+                            "key":"_requestDigest",
+                            "value":"00ca7babcc1d612a8e922564b9b4af4f77971bc49d0e2de212a3cd50f57ae3bd"
+                         }
+                      ],
+                      "fileName":"ARPTWXXML"
+                   }
+                ],
+                "flightRelated":true,
+                "type":"ARPTWXXML",
+                "_links":{
+                   "self":{
+                      "href":"https://tar.lido.aero/lido/lcb/ui/TU.634.28May2024.DJE.ORY./briefing?cat=ARPTWXXML"
+                   }
+                }
+             },
+             {
+                "name":"REGWXXML",
+                "documents":[
+                   {
+                      "fileId":"6655d03d2951de4718f8ab1c",
+                      "legIdentifier":"TU.634.28May2024.DJE.ORY.",
+                      "mediaType":"application/xml",
+                      "creationTime":1716899901064,
+                      "metadata":[
+                         {
+                            "key":"_requestDigest",
+                            "value":"2464b6ce193350cad11a361a00aa7ad6388f1aabff34d72a8d42ce18c131270e"
+                         }
+                      ],
+                      "fileName":"REGWXXML"
+                   }
+                ],
+                "flightRelated":true,
+                "type":"REGWXXML",
+                "_links":{
+                   "self":{
+                      "href":"https://tar.lido.aero/lido/lcb/ui/TU.634.28May2024.DJE.ORY./briefing?cat=REGWXXML"
+                   }
+                }
+             }
+          ],
+          "lidoBriefingData":{
+             "briefingStatus":"final"
+          },
+          "flightLegIdentifier":null,
+          "briefingPackageDocuments":[
+             {
+                "name":"TU634_May28_DJEORY_NIZARZANNED_20240528044427.pdf",
+                "creationTime":1716871425643,
+                "printedBy":"DJERBA Dispatch"
+             },
+             {
+                "name":"TU634_May28_DJEORY_NIZARZANNED_20240528044618.pdf",
+                "creationTime":1716871536434,
+                "printedBy":"DJERBA Dispatch"
+             }
+          ],
+          "briefingPackageOrigin":"LF",
+          "briefingPackageConfirmationHistory":[
+             
+          ],
+          "bpVersion":3,
+          "version":25,
+          "creationTimeStamp":1716868898686,
+          "latestFuelOrder":null,
+          "interfaceHistory":{
+             "interfaceTimestamp":1716868898054
+          },
+          "_links":{
+             "self":{
+                "href":"https://tar.lido.aero/lido/lcb/ui/TU.634.28May2024.DJE.ORY./briefing"
+             }
+          }
+       }
+    ],
+    "categories":[
+       {
+          "name":"APLI",
+          "documents":[
+             {
+                "fileId":"66555722cb59ef6639d8027f",
+                "legIdentifier":"TU.634.28May2024.DJE.ORY.",
+                "mediaType":"text/plain",
+                "creationTime":1716868898705,
+                "metadata":null,
+                "_links":{
+                   "self":{
+                      "href":"https://tar.lido.aero/lido/lcb/ui/TU.634.28May2024.DJE.ORY./briefing/66555722cb59ef6639d8027f/docs"
+                   }
+                },
+                "fileName":"APLI"
+             }
+          ],
+          "flightRelated":true,
+          "type":"APLI"
+       },
+       {
+          "name":"ATSXML",
+          "documents":[
+             {
+                "fileId":"66555722cb59ef6639d80283",
+                "legIdentifier":"TU.634.28May2024.DJE.ORY.",
+                "mediaType":"application/xml",
+                "creationTime":1716868898735,
+                "metadata":[
+                   {
+                      "key":"mainATS",
+                      "value":true
+                   }
+                ],
+                "_links":{
+                   "self":{
+                      "href":"https://tar.lido.aero/lido/lcb/ui/TU.634.28May2024.DJE.ORY./briefing/66555722cb59ef6639d80283/docs"
+                   }
+                },
+                "fileName":"ATS.xml"
+             }
+          ],
+          "flightRelated":true,
+          "type":"ATSXML"
+       },
+       {
+          "name":"NOTAMXML",
+          "documents":[
+             {
+                "fileId":"66555722cb59ef6639d80287",
+                "legIdentifier":"TU.634.28May2024.DJE.ORY.",
+                "mediaType":"application/xml",
+                "creationTime":1716868898785,
+                "metadata":null,
+                "_links":{
+                   "self":{
+                      "href":"https://tar.lido.aero/lido/lcb/ui/TU.634.28May2024.DJE.ORY./briefing/66555722cb59ef6639d80287/docs"
+                   }
+                },
+                "fileName":"NOTA.xml"
+             }
+          ],
+          "flightRelated":true,
+          "type":"NOTAMXML"
+       },
+       {
+          "name":"RAIM",
+          "documents":[
+             {
+                "fileId":"6654bc29bc956b15f509f973",
+                "legIdentifier":"TU.634.28May2024.DJE.ORY.",
+                "mediaType":"text/plain",
+                "creationTime":1716868898832,
+                "metadata":null,
+                "_links":{
+                   "self":{
+                      "href":"https://tar.lido.aero/lido/lcb/ui/TU.634.28May2024.DJE.ORY./briefing/6654bc29bc956b15f509f973/docs"
+                   }
+                },
+                "fileName":"RAIM"
+             }
+          ],
+          "flightRelated":true,
+          "type":"RAIM"
+       },
+       {
+          "name":"RAIMXML",
+          "documents":[
+             {
+                "fileId":"66555722cb59ef6639d8028d",
+                "legIdentifier":"TU.634.28May2024.DJE.ORY.",
+                "mediaType":"application/xml",
+                "creationTime":1716868898847,
+                "metadata":null,
+                "_links":{
+                   "self":{
+                      "href":"https://tar.lido.aero/lido/lcb/ui/TU.634.28May2024.DJE.ORY./briefing/66555722cb59ef6639d8028d/docs"
+                   }
+                },
+                "fileName":"RAIM.xml"
+             }
+          ],
+          "flightRelated":true,
+          "type":"RAIMXML"
+       },
+       {
+          "name":"UAD",
+          "documents":[
+             {
+                "fileId":"66555723cb59ef6639d80297",
+                "legIdentifier":"TU.634.28May2024.DJE.ORY.",
+                "mediaType":"image/gif",
+                "creationTime":1716868899692,
+                "metadata":[
+                   {
+                      "key":"flightLevel",
+                      "value":"380"
+                   },
+                   {
+                      "key":"layer",
+                      "value":[
+                         
+                      ]
+                   },
+                   {
+                      "key":"validityTime",
+                      "value":"2024-05-28T07 00:00Z"
+                   }
+                ],
+                "_links":{
+                   "self":{
+                      "href":"https://tar.lido.aero/lido/lcb/ui/TU.634.28May2024.DJE.ORY./briefing/66555723cb59ef6639d80297/docs"
+                   }
+                },
+                "fileName":"(UAD_FL380_WND_TMP_EDTO.GIF)"
+             },
+             {
+                "fileId":"66555723cb59ef6639d80299",
+                "legIdentifier":"TU.634.28May2024.DJE.ORY.",
+                "mediaType":"image/gif",
+                "creationTime":1716868899764,
+                "metadata":[
+                   {
+                      "key":"flightLevel",
+                      "value":"100"
+                   },
+                   {
+                      "key":"layer",
+                      "value":[
+                         
+                      ]
+                   },
+                   {
+                      "key":"validityTime",
+                      "value":"2024-05-28T07 00:00Z"
+                   }
+                ],
+                "_links":{
+                   "self":{
+                      "href":"https://tar.lido.aero/lido/lcb/ui/TU.634.28May2024.DJE.ORY./briefing/66555723cb59ef6639d80299/docs"
+                   }
+                },
+                "fileName":"(UAD_FL100_WND_TMP.GIF)"
+             },
+             {
+                "fileId":"66555723cb59ef6639d8029b",
+                "legIdentifier":"TU.634.28May2024.DJE.ORY.",
+                "mediaType":"image/gif",
+                "creationTime":1716868899828,
+                "metadata":[
+                   {
+                      "key":"flightLevel",
+                      "value":"340"
+                   },
+                   {
+                      "key":"layer",
+                      "value":[
+                         
+                      ]
+                   },
+                   {
+                      "key":"validityTime",
+                      "value":"2024-05-28T07 00:00Z"
+                   }
+                ],
+                "_links":{
+                   "self":{
+                      "href":"https://tar.lido.aero/lido/lcb/ui/TU.634.28May2024.DJE.ORY./briefing/66555723cb59ef6639d8029b/docs"
+                   }
+                },
+                "fileName":"(UAD_FL340_WND_TMP.GIF)"
+             },
+             {
+                "fileId":"66555723cb59ef6639d8029d",
+                "legIdentifier":"TU.634.28May2024.DJE.ORY.",
+                "mediaType":"image/gif",
+                "creationTime":1716868899892,
+                "metadata":[
+                   {
+                      "key":"flightLevel",
+                      "value":"420"
+                   },
+                   {
+                      "key":"layer",
+                      "value":[
+                         
+                      ]
+                   },
+                   {
+                      "key":"validityTime",
+                      "value":"2024-05-28T07 00:00Z"
+                   }
+                ],
+                "_links":{
+                   "self":{
+                      "href":"https://tar.lido.aero/lido/lcb/ui/TU.634.28May2024.DJE.ORY./briefing/66555723cb59ef6639d8029d/docs"
+                   }
+                },
+                "fileName":"(UAD_FL420_WND_TMP.GIF)"
+             }
+          ],
+          "flightRelated":true,
+          "type":"UAD"
+       },
+       {
+          "name":"VERTPROF",
+          "documents":[
+             {
+                "fileId":"66555723cb59ef6639d8029f",
+                "legIdentifier":"TU.634.28May2024.DJE.ORY.",
+                "mediaType":"image/gif",
+                "creationTime":1716868899910,
+                "metadata":[
+                   {
+                      "key":"validityTime",
+                      "value":"2024-05-28T07 00:00Z"
+                   }
+                ],
+                "_links":{
+                   "self":{
+                      "href":"https://tar.lido.aero/lido/lcb/ui/TU.634.28May2024.DJE.ORY./briefing/66555723cb59ef6639d8029f/docs"
+                   }
+                },
+                "fileName":"VertProf.GIF"
+             }
+          ],
+          "flightRelated":true,
+          "type":"VERTPROF"
+       },
+       {
+          "name":"WXSATWX",
+          "documents":[
+             {
+                "fileId":"6655d03c2951de4718f8ab16",
+                "legIdentifier":"TU.634.28May2024.DJE.ORY.",
+                "mediaType":"image/jpeg",
+                "creationTime":1716899769269,
+                "metadata":[
+                   {
+                      "key":"region",
+                      "value":"Europe"
+                   },
+                   {
+                      "key":"validityTime",
+                      "value":"2024-05-28T12 00:00.000Z"
+                   },
+                   {
+                      "key":"satellite",
+                      "value":"msg2-ir_108"
+                   },
+                   {
+                      "key":"regionCode",
+                      "value":"001"
+                   }
+                ],
+                "fileName":"(20241491200_msg2-ir_108_001.jpeg)"
+             }
+          ],
+          "flightRelated":false,
+          "type":"WXSATWX",
+          "_links":{
+             "self":{
+                "href":"https://tar.lido.aero/lido/lcb/ui/TU.634.28May2024.DJE.ORY./briefing?cat=WXSATWX"
+             }
+          }
+       },
+       {
+          "name":"WXSIGWX",
+          "documents":[
+             {
+                "fileId":"665483df2951de4718f8a5a7",
+                "legIdentifier":"TU.634.28May2024.DJE.ORY.",
+                "mediaType":"image/png",
+                "creationTime":1716814666420,
+                "metadata":[
+                   {
+                      "key":"region",
+                      "value":"Europe"
+                   },
+                   {
+                      "key":"validityTime",
+                      "value":"2024-05-28T06 00:00.000Z"
+                   },
+                   {
+                      "key":"regionCode",
+                      "value":"PGDE14"
+                   },
+                   {
+                      "key":"publisher",
+                      "value":"EGRR"
+                   }
+                ],
+                "_links":{
+                   "self":{
+                      "href":"https://tar.lido.aero/lido/lcb/ui/TU.634.28May2024.DJE.ORY./briefing/665483df2951de4718f8a5a7/docs"
+                   }
+                },
+                "fileName":"(PGDE14_EGRR_270600.png)"
+             },
+             {
+                "fileId":"665483e02951de4718f8a5af",
+                "legIdentifier":"TU.634.28May2024.DJE.ORY.",
+                "mediaType":"image/png",
+                "creationTime":1716814666354,
+                "metadata":[
+                   {
+                      "key":"region",
+                      "value":"Europe Africa"
+                   },
+                   {
+                      "key":"validityTime",
+                      "value":"2024-05-28T06 00:00.000Z"
+                   },
+                   {
+                      "key":"regionCode",
+                      "value":"PGRE05"
+                   },
+                   {
+                      "key":"publisher",
+                      "value":"EGRR"
+                   }
+                ],
+                "_links":{
+                   "self":{
+                      "href":"https://tar.lido.aero/lido/lcb/ui/TU.634.28May2024.DJE.ORY./briefing/665483e02951de4718f8a5af/docs"
+                   }
+                },
+                "fileName":"(PGRE05_EGRR_270600.png)"
+             }
+          ],
+          "flightRelated":false,
+          "type":"WXSIGWX"
+       },
+       {
+          "name":"IWFRXML",
+          "documents":[
+             {
+                "fileId":"6655d03c2951de4718f8ab18",
+                "legIdentifier":"TU.634.28May2024.DJE.ORY.",
+                "mediaType":"application/xml",
+                "creationTime":1716899900445,
+                "metadata":[
+                   {
+                      "key":"_requestDigest",
+                      "value":"fa8bccf9bdd005edf3d7e28bc48671d08f03b92278fca1795d08850cd59c1132"
+                   }
+                ],
+                "fileName":"IWFRXML"
+             }
+          ],
+          "flightRelated":true,
+          "type":"IWFRXML",
+          "_links":{
+             "self":{
+                "href":"https://tar.lido.aero/lido/lcb/ui/TU.634.28May2024.DJE.ORY./briefing?cat=IWFRXML"
+             }
+          }
+       },
+       {
+          "name":"ARPTWXXML",
+          "documents":[
+             {
+                "fileId":"6655d03c2951de4718f8ab1a",
+                "legIdentifier":"TU.634.28May2024.DJE.ORY.",
+                "mediaType":"application/xml",
+                "creationTime":1716899900760,
+                "metadata":[
+                   {
+                      "key":"_requestDigest",
+                      "value":"00ca7babcc1d612a8e922564b9b4af4f77971bc49d0e2de212a3cd50f57ae3bd"
+                   }
+                ],
+                "fileName":"ARPTWXXML"
+             }
+          ],
+          "flightRelated":true,
+          "type":"ARPTWXXML",
+          "_links":{
+             "self":{
+                "href":"https://tar.lido.aero/lido/lcb/ui/TU.634.28May2024.DJE.ORY./briefing?cat=ARPTWXXML"
+             }
+          }
+       },
+       {
+          "name":"REGWXXML",
+          "documents":[
+             {
+                "fileId":"6655d03d2951de4718f8ab1c",
+                "legIdentifier":"TU.634.28May2024.DJE.ORY.",
+                "mediaType":"application/xml",
+                "creationTime":1716899901064,
+                "metadata":[
+                   {
+                      "key":"_requestDigest",
+                      "value":"2464b6ce193350cad11a361a00aa7ad6388f1aabff34d72a8d42ce18c131270e"
+                   }
+                ],
+                "fileName":"REGWXXML"
+             }
+          ],
+          "flightRelated":true,
+          "type":"REGWXXML",
+          "_links":{
+             "self":{
+                "href":"https://tar.lido.aero/lido/lcb/ui/TU.634.28May2024.DJE.ORY./briefing?cat=REGWXXML"
+             }
+          }
+       }
+    ],
+    "merge":false,
+    "bpRestrictions":[
+       
+    ],
+    "categoriesNames":{
+       "RAIM":"RAIM",
+       "CDA":"CDA",
+       "VERTPROF":"Vertical Profile",
+       "IWFR":"Weather",
+       "UAD":"UAD Maps",
+       "DMS":"Additional Docs",
+       "DISP":"Dispatch Information",
+       "ATS":"ATC Flight Plan",
+       "ADDWXNOTAM":"ADDWXNOTAM",
+       "FIRNOTAM":"Airspace NOTAM",
+       "WXNOTAM":"WX/NOTAM",
+       "ADVAA":"VAA",
+       "WXSATWX":"Satellite WX",
+       "ADMTRTAF":"Airport WX",
+       "NOTAM":"NOTAM",
+       "SIGWXROUTE":"SigWX With Route",
+       "ADSIGMETS":"SIGMET",
+       "RADAR":"RADAR",
+       "ADWXSATWX":"Satellite Map",
+       "ABD":"Additional Briefing Documents",
+       "OFP":"OFP",
+       "VAATCA":"Official VAA/TCA",
+       "TLR":"TLR",
+       "DISMAP":"Dispatcher Maps",
+       "CREWINFO":"Crew Information",
+       "ARPTNOTAM":"Airport NOTAM",
+       "ADWXSIGWX":"SIGWX Chart",
+       "WXSIGWX":"Significant WX",
+       "SFC":"SFC"
+    }
+ }

+ 107 - 0
lib/lido/lidoapilist.json

@@ -0,0 +1,107 @@
+{
+	"briefingId": "TU.2655.26May2024.CDG.DJE.",
+	"leg": {
+		"legidentifier": "TU.2655.26May2024.CDG.DJE.",
+		"commercialAirlineIATA": "TU",
+		"commercialAirlineICAO": "TAR",
+		"flightNumber": "2655",
+		"operationalSuffix": "",
+		"aircraftOperatorIATA": "TU",
+		"aircraftOperatorICAO": "TAR",
+		"departureAirport": "CDG",
+		"destinationAirport": "DJE",
+		"ofpNumber": "9/0/0",
+		"aircraftDetails": {
+			"aircraftRegistration": "TSIMU",
+			"aircraftModel": "A320-214",
+			"aircraftICAOType": "A320"
+		},
+		"dispatcherInformation": {
+			"dispatchOffice": "TAR",
+			"dispatcherName": "ATEF GHARSALLAH",
+			"dispatcherTelephoneNumber": "00216 71 942 709",
+			"dispatcherRemarks": null
+		},
+		"ctot": null,
+		"slotAction": null,
+		"estimatedDepartureTime": 1716694200000,
+		"scheduledDepartureTime": 1716692400000,
+		"estimatedTimeOfArrival": 1716704100000,
+		"scheduledTimeOfArrival": 1716702300000,
+		"crewMembers": [
+			{
+				"position": 0,
+				"name": "MAALEJ",
+				"crewId": 13176
+			}
+		],
+		"fuel": {
+			"unitOfMeasure": "K",
+			"tankCapacity": 19000,
+			"averageFuelFlow": 2427,
+			"taxiFuel": 205,
+			"tripFuel": 5963,
+			"blockFuel": 8467,
+			"possibleExtra": 10533,
+			"totalTripTimeMinutes": 147,
+			"taxiTimeMinutes": 15,
+			"estimTotalFlightTime": 209,
+			"takeOffFuel": 8262,
+			"takeOffFuelTime": 209,
+			"averageTaxiFuelFlow": 820,
+			"fuelOnBoard": {
+				"remainingFuel": 0,
+				"unitOfMeasure": "K",
+				"remainingFuelIndicator": null
+			}
+		},
+		"weight": {
+			"maxZfw": 62500,
+			"maxTaxiWeight": 77400,
+			"maxTakeOffWeight": 77000,
+			"plannedZfw": 53086,
+			"restrictedTakeOffWeight": 77000,
+			"maxLandingWeight": 66000
+		},
+		"reclearanceIndicator": false,
+		"dateOfOrigin": 1716681600000,
+		"dateOfOperation": 1716694200000,
+		"masterOffice": "",
+		"responsibleOffice": "TAR",
+		"flightDuplicationNumber": null,
+		"destinationAirportICAO": "DTTJ",
+		"departureAirportICAO": "LFPG",
+		"flightRoute": "LFPG/27L F350 LANVI5A LANVI DCT DEVDI DCT ODINA DCT ELB/F370 DCT PININ DCT TUNEX UG737 CBN UG727 SFX A411 BISKO DCT DTTJ/27"
+	},
+	"lastGenerated": 1716695406141,
+	"readinessTimeStamp": 1716695405850,
+	"lidoBriefingData": {
+		"briefingStatus": "final"
+	},
+	"latestFuelOrder": null,
+	"status": "Confirmed",
+	"previousStatus": "Started",
+	"interfaceHistory": {
+		"interfaceTimestamp": 1716695404920
+	},
+	"bpRestrictions": [],
+	"briefingPackageOrigin": "LF",
+	"briefingPackageConfirmationHistory": [
+		{
+			"confirmedBy": "F.MAALEJ",
+			"creationTime": 1716695672612
+		}
+	],
+	"bplinkDecorator": {
+		"link": "self",
+		"pathParams": [
+			"TU.2655.26May2024.CDG.DJE."
+		],
+		"queryParams": {}
+	},
+	"_links": {
+		"self": {
+			"href": "https://tar.lido.aero/lido/lcb/ui/TU.2655.26May2024.CDG.DJE./briefing"
+		}
+	}
+}

+ 1085 - 0
lib/lido/model/Lidoapi_list.dart

@@ -0,0 +1,1085 @@
+class LidoapiList {
+  LidoapiList({
+    required this.briefingId,
+    required this.leg,
+    required this.lastGenerated,
+    required this.readinessTimeStamp,
+    required this.lidoBriefingData,
+    required this.latestFuelOrder,
+    required this.status,
+    required this.previousStatus,
+    required this.interfaceHistory,
+    required this.bpRestrictions,
+    required this.briefingPackageOrigin,
+    required this.briefingPackageConfirmationHistory,
+    required this.bplinkDecorator,
+    required this.links,
+  });
+
+  final String? briefingId;
+  static const String briefingIdKey = "briefingId";
+
+  final Leg? leg;
+  static const String legKey = "leg";
+
+  final int? lastGenerated;
+  static const String lastGeneratedKey = "lastGenerated";
+
+  final int? readinessTimeStamp;
+  static const String readinessTimeStampKey = "readinessTimeStamp";
+
+  final LidoBriefingData? lidoBriefingData;
+  static const String lidoBriefingDataKey = "lidoBriefingData";
+
+  final dynamic latestFuelOrder;
+  static const String latestFuelOrderKey = "latestFuelOrder";
+
+  final String? status;
+  static const String statusKey = "status";
+
+  final String? previousStatus;
+  static const String previousStatusKey = "previousStatus";
+
+  final InterfaceHistory? interfaceHistory;
+  static const String interfaceHistoryKey = "interfaceHistory";
+
+  final List<dynamic> bpRestrictions;
+  static const String bpRestrictionsKey = "bpRestrictions";
+
+  final String? briefingPackageOrigin;
+  static const String briefingPackageOriginKey = "briefingPackageOrigin";
+
+  final List<BriefingPackageConfirmationHistory>
+      briefingPackageConfirmationHistory;
+  static const String briefingPackageConfirmationHistoryKey =
+      "briefingPackageConfirmationHistory";
+
+  final BplinkDecorator? bplinkDecorator;
+  static const String bplinkDecoratorKey = "bplinkDecorator";
+
+  final Links? links;
+  static const String linksKey = "_links";
+
+  LidoapiList copyWith({
+    String? briefingId,
+    Leg? leg,
+    int? lastGenerated,
+    int? readinessTimeStamp,
+    LidoBriefingData? lidoBriefingData,
+    dynamic latestFuelOrder,
+    String? status,
+    String? previousStatus,
+    InterfaceHistory? interfaceHistory,
+    List<dynamic>? bpRestrictions,
+    String? briefingPackageOrigin,
+    List<BriefingPackageConfirmationHistory>?
+        briefingPackageConfirmationHistory,
+    BplinkDecorator? bplinkDecorator,
+    Links? links,
+  }) {
+    return LidoapiList(
+      briefingId: briefingId ?? this.briefingId,
+      leg: leg ?? this.leg,
+      lastGenerated: lastGenerated ?? this.lastGenerated,
+      readinessTimeStamp: readinessTimeStamp ?? this.readinessTimeStamp,
+      lidoBriefingData: lidoBriefingData ?? this.lidoBriefingData,
+      latestFuelOrder: latestFuelOrder ?? this.latestFuelOrder,
+      status: status ?? this.status,
+      previousStatus: previousStatus ?? this.previousStatus,
+      interfaceHistory: interfaceHistory ?? this.interfaceHistory,
+      bpRestrictions: bpRestrictions ?? this.bpRestrictions,
+      briefingPackageOrigin:
+          briefingPackageOrigin ?? this.briefingPackageOrigin,
+      briefingPackageConfirmationHistory: briefingPackageConfirmationHistory ??
+          this.briefingPackageConfirmationHistory,
+      bplinkDecorator: bplinkDecorator ?? this.bplinkDecorator,
+      links: links ?? this.links,
+    );
+  }
+
+  factory LidoapiList.fromJson(Map<String, dynamic> json) {
+    return LidoapiList(
+      briefingId: json["briefingId"],
+      leg: json["leg"] == null ? null : Leg.fromJson(json["leg"]),
+      lastGenerated: json["lastGenerated"],
+      readinessTimeStamp: json["readinessTimeStamp"],
+      lidoBriefingData: json["lidoBriefingData"] == null
+          ? null
+          : LidoBriefingData.fromJson(json["lidoBriefingData"]),
+      latestFuelOrder: json["latestFuelOrder"],
+      status: json["status"],
+      previousStatus: json["previousStatus"],
+      interfaceHistory: json["interfaceHistory"] == null
+          ? null
+          : InterfaceHistory.fromJson(json["interfaceHistory"]),
+      bpRestrictions: json["bpRestrictions"] == null
+          ? []
+          : List<dynamic>.from(json["bpRestrictions"]!.map((x) => x)),
+      briefingPackageOrigin: json["briefingPackageOrigin"],
+      briefingPackageConfirmationHistory:
+          json["briefingPackageConfirmationHistory"] == null
+              ? []
+              : List<BriefingPackageConfirmationHistory>.from(
+                  json["briefingPackageConfirmationHistory"]!.map(
+                      (x) => BriefingPackageConfirmationHistory.fromJson(x))),
+      bplinkDecorator: json["bplinkDecorator"] == null
+          ? null
+          : BplinkDecorator.fromJson(json["bplinkDecorator"]),
+      links: json["_links"] == null ? null : Links.fromJson(json["_links"]),
+    );
+  }
+
+  Map<String, dynamic> toJson() => {
+        "briefingId": briefingId,
+        "leg": leg?.toJson(),
+        "lastGenerated": lastGenerated,
+        "readinessTimeStamp": readinessTimeStamp,
+        "lidoBriefingData": lidoBriefingData?.toJson(),
+        "latestFuelOrder": latestFuelOrder,
+        "status": status,
+        "previousStatus": previousStatus,
+        "interfaceHistory": interfaceHistory?.toJson(),
+        "bpRestrictions": bpRestrictions.map((x) => x).toList(),
+        "briefingPackageOrigin": briefingPackageOrigin,
+        "briefingPackageConfirmationHistory":
+            briefingPackageConfirmationHistory.map((x) => x.toJson()).toList(),
+        "bplinkDecorator": bplinkDecorator?.toJson(),
+        "_links": links?.toJson(),
+      };
+
+  @override
+  String toString() {
+    return "$briefingId, $leg, $lastGenerated, $readinessTimeStamp, $lidoBriefingData, $latestFuelOrder, $status, $previousStatus, $interfaceHistory, $bpRestrictions, $briefingPackageOrigin, $briefingPackageConfirmationHistory, $bplinkDecorator, $links, ";
+  }
+}
+
+class BplinkDecorator {
+  BplinkDecorator({
+    required this.link,
+    required this.pathParams,
+    required this.queryParams,
+  });
+
+  final String? link;
+  static const String linkKey = "link";
+
+  final List<String> pathParams;
+  static const String pathParamsKey = "pathParams";
+
+  final QueryParams? queryParams;
+  static const String queryParamsKey = "queryParams";
+
+  BplinkDecorator copyWith({
+    String? link,
+    List<String>? pathParams,
+    QueryParams? queryParams,
+  }) {
+    return BplinkDecorator(
+      link: link ?? this.link,
+      pathParams: pathParams ?? this.pathParams,
+      queryParams: queryParams ?? this.queryParams,
+    );
+  }
+
+  factory BplinkDecorator.fromJson(Map<String, dynamic> json) {
+    return BplinkDecorator(
+      link: json["link"],
+      pathParams: json["pathParams"] == null
+          ? []
+          : List<String>.from(json["pathParams"]!.map((x) => x)),
+      queryParams: json["queryParams"] == null
+          ? null
+          : QueryParams.fromJson(json["queryParams"]),
+    );
+  }
+
+  Map<String, dynamic> toJson() => {
+        "link": link,
+        "pathParams": pathParams.map((x) => x).toList(),
+        "queryParams": queryParams?.toJson(),
+      };
+
+  @override
+  String toString() {
+    return "$link, $pathParams, $queryParams, ";
+  }
+}
+
+class QueryParams {
+  QueryParams({required this.json});
+  final Map<String, dynamic> json;
+
+  factory QueryParams.fromJson(Map<String, dynamic> json) {
+    return QueryParams(json: json);
+  }
+
+  Map<String, dynamic> toJson() => {};
+
+  @override
+  String toString() {
+    return "";
+  }
+}
+
+class BriefingPackageConfirmationHistory {
+  BriefingPackageConfirmationHistory({
+    required this.confirmedBy,
+    required this.creationTime,
+  });
+
+  final String? confirmedBy;
+  static const String confirmedByKey = "confirmedBy";
+
+  final int? creationTime;
+  static const String creationTimeKey = "creationTime";
+
+  BriefingPackageConfirmationHistory copyWith({
+    String? confirmedBy,
+    int? creationTime,
+  }) {
+    return BriefingPackageConfirmationHistory(
+      confirmedBy: confirmedBy ?? this.confirmedBy,
+      creationTime: creationTime ?? this.creationTime,
+    );
+  }
+
+  factory BriefingPackageConfirmationHistory.fromJson(
+      Map<String, dynamic> json) {
+    return BriefingPackageConfirmationHistory(
+      confirmedBy: json["confirmedBy"],
+      creationTime: json["creationTime"],
+    );
+  }
+
+  Map<String, dynamic> toJson() => {
+        "confirmedBy": confirmedBy,
+        "creationTime": creationTime,
+      };
+
+  @override
+  String toString() {
+    return "$confirmedBy, $creationTime, ";
+  }
+}
+
+class InterfaceHistory {
+  InterfaceHistory({
+    required this.interfaceTimestamp,
+  });
+
+  final int? interfaceTimestamp;
+  static const String interfaceTimestampKey = "interfaceTimestamp";
+
+  InterfaceHistory copyWith({
+    int? interfaceTimestamp,
+  }) {
+    return InterfaceHistory(
+      interfaceTimestamp: interfaceTimestamp ?? this.interfaceTimestamp,
+    );
+  }
+
+  factory InterfaceHistory.fromJson(Map<String, dynamic> json) {
+    return InterfaceHistory(
+      interfaceTimestamp: json["interfaceTimestamp"],
+    );
+  }
+
+  Map<String, dynamic> toJson() => {
+        "interfaceTimestamp": interfaceTimestamp,
+      };
+
+  @override
+  String toString() {
+    return "$interfaceTimestamp, ";
+  }
+}
+
+class Leg {
+  Leg({
+    required this.legidentifier,
+    required this.commercialAirlineIata,
+    required this.commercialAirlineIcao,
+    required this.flightNumber,
+    required this.operationalSuffix,
+    required this.aircraftOperatorIata,
+    required this.aircraftOperatorIcao,
+    required this.departureAirport,
+    required this.destinationAirport,
+    required this.ofpNumber,
+    required this.aircraftDetails,
+    required this.dispatcherInformation,
+    required this.ctot,
+    required this.slotAction,
+    required this.estimatedDepartureTime,
+    required this.scheduledDepartureTime,
+    required this.estimatedTimeOfArrival,
+    required this.scheduledTimeOfArrival,
+    required this.crewMembers,
+    required this.fuel,
+    required this.weight,
+    required this.reclearanceIndicator,
+    required this.dateOfOrigin,
+    required this.dateOfOperation,
+    required this.masterOffice,
+    required this.responsibleOffice,
+    required this.flightDuplicationNumber,
+    required this.destinationAirportIcao,
+    required this.departureAirportIcao,
+    required this.flightRoute,
+  });
+
+  final String? legidentifier;
+  static const String legidentifierKey = "legidentifier";
+
+  final String? commercialAirlineIata;
+  static const String commercialAirlineIataKey = "commercialAirlineIATA";
+
+  final String? commercialAirlineIcao;
+  static const String commercialAirlineIcaoKey = "commercialAirlineICAO";
+
+  final String? flightNumber;
+  static const String flightNumberKey = "flightNumber";
+
+  final String? operationalSuffix;
+  static const String operationalSuffixKey = "operationalSuffix";
+
+  final String? aircraftOperatorIata;
+  static const String aircraftOperatorIataKey = "aircraftOperatorIATA";
+
+  final String? aircraftOperatorIcao;
+  static const String aircraftOperatorIcaoKey = "aircraftOperatorICAO";
+
+  final String? departureAirport;
+  static const String departureAirportKey = "departureAirport";
+
+  final String? destinationAirport;
+  static const String destinationAirportKey = "destinationAirport";
+
+  final String? ofpNumber;
+  static const String ofpNumberKey = "ofpNumber";
+
+  final AircraftDetails? aircraftDetails;
+  static const String aircraftDetailsKey = "aircraftDetails";
+
+  final DispatcherInformation? dispatcherInformation;
+  static const String dispatcherInformationKey = "dispatcherInformation";
+
+  final dynamic ctot;
+  static const String ctotKey = "ctot";
+
+  final dynamic slotAction;
+  static const String slotActionKey = "slotAction";
+
+  final int? estimatedDepartureTime;
+  static const String estimatedDepartureTimeKey = "estimatedDepartureTime";
+
+  final int? scheduledDepartureTime;
+  static const String scheduledDepartureTimeKey = "scheduledDepartureTime";
+
+  final int? estimatedTimeOfArrival;
+  static const String estimatedTimeOfArrivalKey = "estimatedTimeOfArrival";
+
+  final int? scheduledTimeOfArrival;
+  static const String scheduledTimeOfArrivalKey = "scheduledTimeOfArrival";
+
+  final List<CrewMember> crewMembers;
+  static const String crewMembersKey = "crewMembers";
+
+  final Fuel? fuel;
+  static const String fuelKey = "fuel";
+
+  final Weight? weight;
+  static const String weightKey = "weight";
+
+  final bool? reclearanceIndicator;
+  static const String reclearanceIndicatorKey = "reclearanceIndicator";
+
+  final int? dateOfOrigin;
+  static const String dateOfOriginKey = "dateOfOrigin";
+
+  final int? dateOfOperation;
+  static const String dateOfOperationKey = "dateOfOperation";
+
+  final String? masterOffice;
+  static const String masterOfficeKey = "masterOffice";
+
+  final String? responsibleOffice;
+  static const String responsibleOfficeKey = "responsibleOffice";
+
+  final dynamic flightDuplicationNumber;
+  static const String flightDuplicationNumberKey = "flightDuplicationNumber";
+
+  final String? destinationAirportIcao;
+  static const String destinationAirportIcaoKey = "destinationAirportICAO";
+
+  final String? departureAirportIcao;
+  static const String departureAirportIcaoKey = "departureAirportICAO";
+
+  final String? flightRoute;
+  static const String flightRouteKey = "flightRoute";
+
+  Leg copyWith({
+    String? legidentifier,
+    String? commercialAirlineIata,
+    String? commercialAirlineIcao,
+    String? flightNumber,
+    String? operationalSuffix,
+    String? aircraftOperatorIata,
+    String? aircraftOperatorIcao,
+    String? departureAirport,
+    String? destinationAirport,
+    String? ofpNumber,
+    AircraftDetails? aircraftDetails,
+    DispatcherInformation? dispatcherInformation,
+    dynamic ctot,
+    dynamic slotAction,
+    int? estimatedDepartureTime,
+    int? scheduledDepartureTime,
+    int? estimatedTimeOfArrival,
+    int? scheduledTimeOfArrival,
+    List<CrewMember>? crewMembers,
+    Fuel? fuel,
+    Weight? weight,
+    bool? reclearanceIndicator,
+    int? dateOfOrigin,
+    int? dateOfOperation,
+    String? masterOffice,
+    String? responsibleOffice,
+    dynamic flightDuplicationNumber,
+    String? destinationAirportIcao,
+    String? departureAirportIcao,
+    String? flightRoute,
+  }) {
+    return Leg(
+      legidentifier: legidentifier ?? this.legidentifier,
+      commercialAirlineIata:
+          commercialAirlineIata ?? this.commercialAirlineIata,
+      commercialAirlineIcao:
+          commercialAirlineIcao ?? this.commercialAirlineIcao,
+      flightNumber: flightNumber ?? this.flightNumber,
+      operationalSuffix: operationalSuffix ?? this.operationalSuffix,
+      aircraftOperatorIata: aircraftOperatorIata ?? this.aircraftOperatorIata,
+      aircraftOperatorIcao: aircraftOperatorIcao ?? this.aircraftOperatorIcao,
+      departureAirport: departureAirport ?? this.departureAirport,
+      destinationAirport: destinationAirport ?? this.destinationAirport,
+      ofpNumber: ofpNumber ?? this.ofpNumber,
+      aircraftDetails: aircraftDetails ?? this.aircraftDetails,
+      dispatcherInformation:
+          dispatcherInformation ?? this.dispatcherInformation,
+      ctot: ctot ?? this.ctot,
+      slotAction: slotAction ?? this.slotAction,
+      estimatedDepartureTime:
+          estimatedDepartureTime ?? this.estimatedDepartureTime,
+      scheduledDepartureTime:
+          scheduledDepartureTime ?? this.scheduledDepartureTime,
+      estimatedTimeOfArrival:
+          estimatedTimeOfArrival ?? this.estimatedTimeOfArrival,
+      scheduledTimeOfArrival:
+          scheduledTimeOfArrival ?? this.scheduledTimeOfArrival,
+      crewMembers: crewMembers ?? this.crewMembers,
+      fuel: fuel ?? this.fuel,
+      weight: weight ?? this.weight,
+      reclearanceIndicator: reclearanceIndicator ?? this.reclearanceIndicator,
+      dateOfOrigin: dateOfOrigin ?? this.dateOfOrigin,
+      dateOfOperation: dateOfOperation ?? this.dateOfOperation,
+      masterOffice: masterOffice ?? this.masterOffice,
+      responsibleOffice: responsibleOffice ?? this.responsibleOffice,
+      flightDuplicationNumber:
+          flightDuplicationNumber ?? this.flightDuplicationNumber,
+      destinationAirportIcao:
+          destinationAirportIcao ?? this.destinationAirportIcao,
+      departureAirportIcao: departureAirportIcao ?? this.departureAirportIcao,
+      flightRoute: flightRoute ?? this.flightRoute,
+    );
+  }
+
+  factory Leg.fromJson(Map<String, dynamic> json) {
+    return Leg(
+      legidentifier: json["legidentifier"],
+      commercialAirlineIata: json["commercialAirlineIATA"],
+      commercialAirlineIcao: json["commercialAirlineICAO"],
+      flightNumber: json["flightNumber"],
+      operationalSuffix: json["operationalSuffix"],
+      aircraftOperatorIata: json["aircraftOperatorIATA"],
+      aircraftOperatorIcao: json["aircraftOperatorICAO"],
+      departureAirport: json["departureAirport"],
+      destinationAirport: json["destinationAirport"],
+      ofpNumber: json["ofpNumber"],
+      aircraftDetails: json["aircraftDetails"] == null
+          ? null
+          : AircraftDetails.fromJson(json["aircraftDetails"]),
+      dispatcherInformation: json["dispatcherInformation"] == null
+          ? null
+          : DispatcherInformation.fromJson(json["dispatcherInformation"]),
+      ctot: json["ctot"],
+      slotAction: json["slotAction"],
+      estimatedDepartureTime: json["estimatedDepartureTime"],
+      scheduledDepartureTime: json["scheduledDepartureTime"],
+      estimatedTimeOfArrival: json["estimatedTimeOfArrival"],
+      scheduledTimeOfArrival: json["scheduledTimeOfArrival"],
+      crewMembers: json["crewMembers"] == null
+          ? []
+          : List<CrewMember>.from(
+              json["crewMembers"]!.map((x) => CrewMember.fromJson(x))),
+      fuel: json["fuel"] == null ? null : Fuel.fromJson(json["fuel"]),
+      weight: json["weight"] == null ? null : Weight.fromJson(json["weight"]),
+      reclearanceIndicator: json["reclearanceIndicator"],
+      dateOfOrigin: json["dateOfOrigin"],
+      dateOfOperation: json["dateOfOperation"],
+      masterOffice: json["masterOffice"],
+      responsibleOffice: json["responsibleOffice"],
+      flightDuplicationNumber: json["flightDuplicationNumber"],
+      destinationAirportIcao: json["destinationAirportICAO"],
+      departureAirportIcao: json["departureAirportICAO"],
+      flightRoute: json["flightRoute"],
+    );
+  }
+
+  Map<String, dynamic> toJson() => {
+        "legidentifier": legidentifier,
+        "commercialAirlineIATA": commercialAirlineIata,
+        "commercialAirlineICAO": commercialAirlineIcao,
+        "flightNumber": flightNumber,
+        "operationalSuffix": operationalSuffix,
+        "aircraftOperatorIATA": aircraftOperatorIata,
+        "aircraftOperatorICAO": aircraftOperatorIcao,
+        "departureAirport": departureAirport,
+        "destinationAirport": destinationAirport,
+        "ofpNumber": ofpNumber,
+        "aircraftDetails": aircraftDetails?.toJson(),
+        "dispatcherInformation": dispatcherInformation?.toJson(),
+        "ctot": ctot,
+        "slotAction": slotAction,
+        "estimatedDepartureTime": estimatedDepartureTime,
+        "scheduledDepartureTime": scheduledDepartureTime,
+        "estimatedTimeOfArrival": estimatedTimeOfArrival,
+        "scheduledTimeOfArrival": scheduledTimeOfArrival,
+        "crewMembers": crewMembers.map((x) => x.toJson()).toList(),
+        "fuel": fuel?.toJson(),
+        "weight": weight?.toJson(),
+        "reclearanceIndicator": reclearanceIndicator,
+        "dateOfOrigin": dateOfOrigin,
+        "dateOfOperation": dateOfOperation,
+        "masterOffice": masterOffice,
+        "responsibleOffice": responsibleOffice,
+        "flightDuplicationNumber": flightDuplicationNumber,
+        "destinationAirportICAO": destinationAirportIcao,
+        "departureAirportICAO": departureAirportIcao,
+        "flightRoute": flightRoute,
+      };
+
+  @override
+  String toString() {
+    return "$legidentifier, $commercialAirlineIata, $commercialAirlineIcao, $flightNumber, $operationalSuffix, $aircraftOperatorIata, $aircraftOperatorIcao, $departureAirport, $destinationAirport, $ofpNumber, $aircraftDetails, $dispatcherInformation, $ctot, $slotAction, $estimatedDepartureTime, $scheduledDepartureTime, $estimatedTimeOfArrival, $scheduledTimeOfArrival, $crewMembers, $fuel, $weight, $reclearanceIndicator, $dateOfOrigin, $dateOfOperation, $masterOffice, $responsibleOffice, $flightDuplicationNumber, $destinationAirportIcao, $departureAirportIcao, $flightRoute, ";
+  }
+}
+
+class AircraftDetails {
+  AircraftDetails({
+    required this.aircraftRegistration,
+    required this.aircraftModel,
+    required this.aircraftIcaoType,
+  });
+
+  final String? aircraftRegistration;
+  static const String aircraftRegistrationKey = "aircraftRegistration";
+
+  final String? aircraftModel;
+  static const String aircraftModelKey = "aircraftModel";
+
+  final String? aircraftIcaoType;
+  static const String aircraftIcaoTypeKey = "aircraftICAOType";
+
+  AircraftDetails copyWith({
+    String? aircraftRegistration,
+    String? aircraftModel,
+    String? aircraftIcaoType,
+  }) {
+    return AircraftDetails(
+      aircraftRegistration: aircraftRegistration ?? this.aircraftRegistration,
+      aircraftModel: aircraftModel ?? this.aircraftModel,
+      aircraftIcaoType: aircraftIcaoType ?? this.aircraftIcaoType,
+    );
+  }
+
+  factory AircraftDetails.fromJson(Map<String, dynamic> json) {
+    return AircraftDetails(
+      aircraftRegistration: json["aircraftRegistration"],
+      aircraftModel: json["aircraftModel"],
+      aircraftIcaoType: json["aircraftICAOType"],
+    );
+  }
+
+  Map<String, dynamic> toJson() => {
+        "aircraftRegistration": aircraftRegistration,
+        "aircraftModel": aircraftModel,
+        "aircraftICAOType": aircraftIcaoType,
+      };
+
+  @override
+  String toString() {
+    return "$aircraftRegistration, $aircraftModel, $aircraftIcaoType, ";
+  }
+}
+
+class CrewMember {
+  CrewMember({
+    required this.position,
+    required this.name,
+    required this.crewId,
+  });
+
+  final String? position;
+  static const String positionKey = "position";
+
+  final String? name;
+  static const String nameKey = "name";
+
+  final String? crewId;
+  static const String crewIdKey = "crewId";
+
+  CrewMember copyWith({
+    String? position,
+    String? name,
+    String? crewId,
+  }) {
+    return CrewMember(
+      position: position ?? this.position,
+      name: name ?? this.name,
+      crewId: crewId ?? this.crewId,
+    );
+  }
+
+  factory CrewMember.fromJson(Map<String, dynamic> json) {
+    return CrewMember(
+      position: json["position"],
+      name: json["name"],
+      crewId: json["crewId"],
+    );
+  }
+
+  Map<String, dynamic> toJson() => {
+        "position": position,
+        "name": name,
+        "crewId": crewId,
+      };
+
+  @override
+  String toString() {
+    return "$position, $name, $crewId, ";
+  }
+}
+
+class DispatcherInformation {
+  DispatcherInformation({
+    required this.dispatchOffice,
+    required this.dispatcherName,
+    required this.dispatcherTelephoneNumber,
+    required this.dispatcherRemarks,
+  });
+
+  final String? dispatchOffice;
+  static const String dispatchOfficeKey = "dispatchOffice";
+
+  final String? dispatcherName;
+  static const String dispatcherNameKey = "dispatcherName";
+
+  final String? dispatcherTelephoneNumber;
+  static const String dispatcherTelephoneNumberKey =
+      "dispatcherTelephoneNumber";
+
+  final dynamic dispatcherRemarks;
+  static const String dispatcherRemarksKey = "dispatcherRemarks";
+
+  DispatcherInformation copyWith({
+    String? dispatchOffice,
+    String? dispatcherName,
+    String? dispatcherTelephoneNumber,
+    dynamic dispatcherRemarks,
+  }) {
+    return DispatcherInformation(
+      dispatchOffice: dispatchOffice ?? this.dispatchOffice,
+      dispatcherName: dispatcherName ?? this.dispatcherName,
+      dispatcherTelephoneNumber:
+          dispatcherTelephoneNumber ?? this.dispatcherTelephoneNumber,
+      dispatcherRemarks: dispatcherRemarks ?? this.dispatcherRemarks,
+    );
+  }
+
+  factory DispatcherInformation.fromJson(Map<String, dynamic> json) {
+    return DispatcherInformation(
+      dispatchOffice: json["dispatchOffice"],
+      dispatcherName: json["dispatcherName"],
+      dispatcherTelephoneNumber: json["dispatcherTelephoneNumber"],
+      dispatcherRemarks: json["dispatcherRemarks"],
+    );
+  }
+
+  Map<String, dynamic> toJson() => {
+        "dispatchOffice": dispatchOffice,
+        "dispatcherName": dispatcherName,
+        "dispatcherTelephoneNumber": dispatcherTelephoneNumber,
+        "dispatcherRemarks": dispatcherRemarks,
+      };
+
+  @override
+  String toString() {
+    return "$dispatchOffice, $dispatcherName, $dispatcherTelephoneNumber, $dispatcherRemarks, ";
+  }
+}
+
+class Fuel {
+  Fuel({
+    required this.unitOfMeasure,
+    required this.tankCapacity,
+    required this.averageFuelFlow,
+    required this.taxiFuel,
+    required this.tripFuel,
+    required this.blockFuel,
+    required this.possibleExtra,
+    required this.totalTripTimeMinutes,
+    required this.taxiTimeMinutes,
+    required this.estimTotalFlightTime,
+    required this.takeOffFuel,
+    required this.takeOffFuelTime,
+    required this.averageTaxiFuelFlow,
+    required this.fuelOnBoard,
+  });
+
+  final String? unitOfMeasure;
+  static const String unitOfMeasureKey = "unitOfMeasure";
+
+  final int? tankCapacity;
+  static const String tankCapacityKey = "tankCapacity";
+
+  final int? averageFuelFlow;
+  static const String averageFuelFlowKey = "averageFuelFlow";
+
+  final int? taxiFuel;
+  static const String taxiFuelKey = "taxiFuel";
+
+  final int? tripFuel;
+  static const String tripFuelKey = "tripFuel";
+
+  final int? blockFuel;
+  static const String blockFuelKey = "blockFuel";
+
+  final int? possibleExtra;
+  static const String possibleExtraKey = "possibleExtra";
+
+  final int? totalTripTimeMinutes;
+  static const String totalTripTimeMinutesKey = "totalTripTimeMinutes";
+
+  final int? taxiTimeMinutes;
+  static const String taxiTimeMinutesKey = "taxiTimeMinutes";
+
+  final int? estimTotalFlightTime;
+  static const String estimTotalFlightTimeKey = "estimTotalFlightTime";
+
+  final int? takeOffFuel;
+  static const String takeOffFuelKey = "takeOffFuel";
+
+  final int? takeOffFuelTime;
+  static const String takeOffFuelTimeKey = "takeOffFuelTime";
+
+  final int? averageTaxiFuelFlow;
+  static const String averageTaxiFuelFlowKey = "averageTaxiFuelFlow";
+
+  final FuelOnBoard? fuelOnBoard;
+  static const String fuelOnBoardKey = "fuelOnBoard";
+
+  Fuel copyWith({
+    String? unitOfMeasure,
+    int? tankCapacity,
+    int? averageFuelFlow,
+    int? taxiFuel,
+    int? tripFuel,
+    int? blockFuel,
+    int? possibleExtra,
+    int? totalTripTimeMinutes,
+    int? taxiTimeMinutes,
+    int? estimTotalFlightTime,
+    int? takeOffFuel,
+    int? takeOffFuelTime,
+    int? averageTaxiFuelFlow,
+    FuelOnBoard? fuelOnBoard,
+  }) {
+    return Fuel(
+      unitOfMeasure: unitOfMeasure ?? this.unitOfMeasure,
+      tankCapacity: tankCapacity ?? this.tankCapacity,
+      averageFuelFlow: averageFuelFlow ?? this.averageFuelFlow,
+      taxiFuel: taxiFuel ?? this.taxiFuel,
+      tripFuel: tripFuel ?? this.tripFuel,
+      blockFuel: blockFuel ?? this.blockFuel,
+      possibleExtra: possibleExtra ?? this.possibleExtra,
+      totalTripTimeMinutes: totalTripTimeMinutes ?? this.totalTripTimeMinutes,
+      taxiTimeMinutes: taxiTimeMinutes ?? this.taxiTimeMinutes,
+      estimTotalFlightTime: estimTotalFlightTime ?? this.estimTotalFlightTime,
+      takeOffFuel: takeOffFuel ?? this.takeOffFuel,
+      takeOffFuelTime: takeOffFuelTime ?? this.takeOffFuelTime,
+      averageTaxiFuelFlow: averageTaxiFuelFlow ?? this.averageTaxiFuelFlow,
+      fuelOnBoard: fuelOnBoard ?? this.fuelOnBoard,
+    );
+  }
+
+  factory Fuel.fromJson(Map<String, dynamic> json) {
+    return Fuel(
+      unitOfMeasure: json["unitOfMeasure"],
+      tankCapacity: json["tankCapacity"],
+      averageFuelFlow: json["averageFuelFlow"],
+      taxiFuel: json["taxiFuel"],
+      tripFuel: json["tripFuel"],
+      blockFuel: json["blockFuel"],
+      possibleExtra: json["possibleExtra"],
+      totalTripTimeMinutes: json["totalTripTimeMinutes"],
+      taxiTimeMinutes: json["taxiTimeMinutes"],
+      estimTotalFlightTime: json["estimTotalFlightTime"],
+      takeOffFuel: json["takeOffFuel"],
+      takeOffFuelTime: json["takeOffFuelTime"],
+      averageTaxiFuelFlow: json["averageTaxiFuelFlow"],
+      fuelOnBoard: json["fuelOnBoard"] == null
+          ? null
+          : FuelOnBoard.fromJson(json["fuelOnBoard"]),
+    );
+  }
+
+  Map<String, dynamic> toJson() => {
+        "unitOfMeasure": unitOfMeasure,
+        "tankCapacity": tankCapacity,
+        "averageFuelFlow": averageFuelFlow,
+        "taxiFuel": taxiFuel,
+        "tripFuel": tripFuel,
+        "blockFuel": blockFuel,
+        "possibleExtra": possibleExtra,
+        "totalTripTimeMinutes": totalTripTimeMinutes,
+        "taxiTimeMinutes": taxiTimeMinutes,
+        "estimTotalFlightTime": estimTotalFlightTime,
+        "takeOffFuel": takeOffFuel,
+        "takeOffFuelTime": takeOffFuelTime,
+        "averageTaxiFuelFlow": averageTaxiFuelFlow,
+        "fuelOnBoard": fuelOnBoard?.toJson(),
+      };
+
+  @override
+  String toString() {
+    return "$unitOfMeasure, $tankCapacity, $averageFuelFlow, $taxiFuel, $tripFuel, $blockFuel, $possibleExtra, $totalTripTimeMinutes, $taxiTimeMinutes, $estimTotalFlightTime, $takeOffFuel, $takeOffFuelTime, $averageTaxiFuelFlow, $fuelOnBoard, ";
+  }
+}
+
+class FuelOnBoard {
+  FuelOnBoard({
+    required this.remainingFuel,
+    required this.unitOfMeasure,
+    required this.remainingFuelIndicator,
+  });
+
+  final int? remainingFuel;
+  static const String remainingFuelKey = "remainingFuel";
+
+  final String? unitOfMeasure;
+  static const String unitOfMeasureKey = "unitOfMeasure";
+
+  final dynamic remainingFuelIndicator;
+  static const String remainingFuelIndicatorKey = "remainingFuelIndicator";
+
+  FuelOnBoard copyWith({
+    int? remainingFuel,
+    String? unitOfMeasure,
+    dynamic remainingFuelIndicator,
+  }) {
+    return FuelOnBoard(
+      remainingFuel: remainingFuel ?? this.remainingFuel,
+      unitOfMeasure: unitOfMeasure ?? this.unitOfMeasure,
+      remainingFuelIndicator:
+          remainingFuelIndicator ?? this.remainingFuelIndicator,
+    );
+  }
+
+  factory FuelOnBoard.fromJson(Map<String, dynamic> json) {
+    return FuelOnBoard(
+      remainingFuel: json["remainingFuel"],
+      unitOfMeasure: json["unitOfMeasure"],
+      remainingFuelIndicator: json["remainingFuelIndicator"],
+    );
+  }
+
+  Map<String, dynamic> toJson() => {
+        "remainingFuel": remainingFuel,
+        "unitOfMeasure": unitOfMeasure,
+        "remainingFuelIndicator": remainingFuelIndicator,
+      };
+
+  @override
+  String toString() {
+    return "$remainingFuel, $unitOfMeasure, $remainingFuelIndicator, ";
+  }
+}
+
+class Weight {
+  Weight({
+    required this.maxZfw,
+    required this.maxTaxiWeight,
+    required this.maxTakeOffWeight,
+    required this.plannedZfw,
+    required this.restrictedTakeOffWeight,
+    required this.maxLandingWeight,
+  });
+
+  final int? maxZfw;
+  static const String maxZfwKey = "maxZfw";
+
+  final int? maxTaxiWeight;
+  static const String maxTaxiWeightKey = "maxTaxiWeight";
+
+  final int? maxTakeOffWeight;
+  static const String maxTakeOffWeightKey = "maxTakeOffWeight";
+
+  final int? plannedZfw;
+  static const String plannedZfwKey = "plannedZfw";
+
+  final int? restrictedTakeOffWeight;
+  static const String restrictedTakeOffWeightKey = "restrictedTakeOffWeight";
+
+  final int? maxLandingWeight;
+  static const String maxLandingWeightKey = "maxLandingWeight";
+
+  Weight copyWith({
+    int? maxZfw,
+    int? maxTaxiWeight,
+    int? maxTakeOffWeight,
+    int? plannedZfw,
+    int? restrictedTakeOffWeight,
+    int? maxLandingWeight,
+  }) {
+    return Weight(
+      maxZfw: maxZfw ?? this.maxZfw,
+      maxTaxiWeight: maxTaxiWeight ?? this.maxTaxiWeight,
+      maxTakeOffWeight: maxTakeOffWeight ?? this.maxTakeOffWeight,
+      plannedZfw: plannedZfw ?? this.plannedZfw,
+      restrictedTakeOffWeight:
+          restrictedTakeOffWeight ?? this.restrictedTakeOffWeight,
+      maxLandingWeight: maxLandingWeight ?? this.maxLandingWeight,
+    );
+  }
+
+  factory Weight.fromJson(Map<String, dynamic> json) {
+    return Weight(
+      maxZfw: json["maxZfw"],
+      maxTaxiWeight: json["maxTaxiWeight"],
+      maxTakeOffWeight: json["maxTakeOffWeight"],
+      plannedZfw: json["plannedZfw"],
+      restrictedTakeOffWeight: json["restrictedTakeOffWeight"],
+      maxLandingWeight: json["maxLandingWeight"],
+    );
+  }
+
+  Map<String, dynamic> toJson() => {
+        "maxZfw": maxZfw,
+        "maxTaxiWeight": maxTaxiWeight,
+        "maxTakeOffWeight": maxTakeOffWeight,
+        "plannedZfw": plannedZfw,
+        "restrictedTakeOffWeight": restrictedTakeOffWeight,
+        "maxLandingWeight": maxLandingWeight,
+      };
+
+  @override
+  String toString() {
+    return "$maxZfw, $maxTaxiWeight, $maxTakeOffWeight, $plannedZfw, $restrictedTakeOffWeight, $maxLandingWeight, ";
+  }
+}
+
+class LidoBriefingData {
+  LidoBriefingData({
+    required this.briefingStatus,
+  });
+
+  final String? briefingStatus;
+  static const String briefingStatusKey = "briefingStatus";
+
+  LidoBriefingData copyWith({
+    String? briefingStatus,
+  }) {
+    return LidoBriefingData(
+      briefingStatus: briefingStatus ?? this.briefingStatus,
+    );
+  }
+
+  factory LidoBriefingData.fromJson(Map<String, dynamic> json) {
+    return LidoBriefingData(
+      briefingStatus: json["briefingStatus"],
+    );
+  }
+
+  Map<String, dynamic> toJson() => {
+        "briefingStatus": briefingStatus,
+      };
+
+  @override
+  String toString() {
+    return "$briefingStatus, ";
+  }
+}
+
+class Links {
+  Links({
+    required this.self,
+  });
+
+  final Self? self;
+  static const String selfKey = "self";
+
+  Links copyWith({
+    Self? self,
+  }) {
+    return Links(
+      self: self ?? this.self,
+    );
+  }
+
+  factory Links.fromJson(Map<String, dynamic> json) {
+    return Links(
+      self: json["self"] == null ? null : Self.fromJson(json["self"]),
+    );
+  }
+
+  Map<String, dynamic> toJson() => {
+        "self": self?.toJson(),
+      };
+
+  @override
+  String toString() {
+    return "$self, ";
+  }
+}
+
+class Self {
+  Self({
+    required this.href,
+  });
+
+  final String? href;
+  static const String hrefKey = "href";
+
+  Self copyWith({
+    String? href,
+  }) {
+    return Self(
+      href: href ?? this.href,
+    );
+  }
+
+  factory Self.fromJson(Map<String, dynamic> json) {
+    return Self(
+      href: json["href"],
+    );
+  }
+
+  Map<String, dynamic> toJson() => {
+        "href": href,
+      };
+
+  @override
+  String toString() {
+    return "$href, ";
+  }
+}

+ 1555 - 0
lib/lido/model/Lidoapi_ofp.dart

@@ -0,0 +1,1555 @@
+class LidoapiOfp {
+  LidoapiOfp({
+    required this.briefingPackages,
+    required this.categories,
+    required this.merge,
+    required this.bpRestrictions,
+    required this.categoriesNames,
+  });
+
+  final List<BriefingPackage> briefingPackages;
+  static const String briefingPackagesKey = "briefingPackages";
+
+  final List<Category> categories;
+  static const String categoriesKey = "categories";
+
+  final bool? merge;
+  static const String mergeKey = "merge";
+
+  final List<dynamic> bpRestrictions;
+  static const String bpRestrictionsKey = "bpRestrictions";
+
+  final CategoriesNames? categoriesNames;
+  static const String categoriesNamesKey = "categoriesNames";
+
+  LidoapiOfp copyWith({
+    List<BriefingPackage>? briefingPackages,
+    List<Category>? categories,
+    bool? merge,
+    List<dynamic>? bpRestrictions,
+    CategoriesNames? categoriesNames,
+  }) {
+    return LidoapiOfp(
+      briefingPackages: briefingPackages ?? this.briefingPackages,
+      categories: categories ?? this.categories,
+      merge: merge ?? this.merge,
+      bpRestrictions: bpRestrictions ?? this.bpRestrictions,
+      categoriesNames: categoriesNames ?? this.categoriesNames,
+    );
+  }
+
+  factory LidoapiOfp.fromJson(Map<String, dynamic> json) {
+    return LidoapiOfp(
+      briefingPackages: json["briefingPackages"] == null
+          ? []
+          : List<BriefingPackage>.from(json["briefingPackages"]!
+              .map((x) => BriefingPackage.fromJson(x))),
+      categories: json["categories"] == null
+          ? []
+          : List<Category>.from(
+              json["categories"]!.map((x) => Category.fromJson(x))),
+      merge: json["merge"],
+      bpRestrictions: json["bpRestrictions"] == null
+          ? []
+          : List<dynamic>.from(json["bpRestrictions"]!.map((x) => x)),
+      categoriesNames: json["categoriesNames"] == null
+          ? null
+          : CategoriesNames.fromJson(json["categoriesNames"]),
+    );
+  }
+
+  Map<String, dynamic> toJson() => {
+        "briefingPackages": briefingPackages.map((x) => x.toJson()).toList(),
+        "categories": categories.map((x) => x.toJson()).toList(),
+        "merge": merge,
+        "bpRestrictions": bpRestrictions.map((x) => x).toList(),
+        "categoriesNames": categoriesNames?.toJson(),
+      };
+
+  @override
+  String toString() {
+    return "$briefingPackages, $categories, $merge, $bpRestrictions, $categoriesNames, ";
+  }
+}
+
+class BriefingPackage {
+  BriefingPackage({
+    required this.status,
+    required this.previousStatus,
+    required this.leg,
+    required this.categories,
+    required this.lidoBriefingData,
+    required this.flightLegIdentifier,
+    required this.briefingPackageDocuments,
+    required this.briefingPackageOrigin,
+    required this.briefingPackageConfirmationHistory,
+    required this.bpVersion,
+    required this.version,
+    required this.creationTimeStamp,
+    required this.latestFuelOrder,
+    required this.interfaceHistory,
+    required this.links,
+  });
+
+  final String? status;
+  static const String statusKey = "status";
+
+  final String? previousStatus;
+  static const String previousStatusKey = "previousStatus";
+
+  final List<Leg> leg;
+  static const String legKey = "leg";
+
+  final List<Category> categories;
+  static const String categoriesKey = "categories";
+
+  final LidoBriefingData? lidoBriefingData;
+  static const String lidoBriefingDataKey = "lidoBriefingData";
+
+  final dynamic flightLegIdentifier;
+  static const String flightLegIdentifierKey = "flightLegIdentifier";
+
+  final List<BriefingPackageDocument> briefingPackageDocuments;
+  static const String briefingPackageDocumentsKey = "briefingPackageDocuments";
+
+  final String? briefingPackageOrigin;
+  static const String briefingPackageOriginKey = "briefingPackageOrigin";
+
+  final List<dynamic> briefingPackageConfirmationHistory;
+  static const String briefingPackageConfirmationHistoryKey =
+      "briefingPackageConfirmationHistory";
+
+  final int? bpVersion;
+  static const String bpVersionKey = "bpVersion";
+
+  final int? version;
+  static const String versionKey = "version";
+
+  final int? creationTimeStamp;
+  static const String creationTimeStampKey = "creationTimeStamp";
+
+  final dynamic latestFuelOrder;
+  static const String latestFuelOrderKey = "latestFuelOrder";
+
+  final InterfaceHistory? interfaceHistory;
+  static const String interfaceHistoryKey = "interfaceHistory";
+
+  final Links? links;
+  static const String linksKey = "_links";
+
+  BriefingPackage copyWith({
+    String? status,
+    String? previousStatus,
+    List<Leg>? leg,
+    List<Category>? categories,
+    LidoBriefingData? lidoBriefingData,
+    dynamic flightLegIdentifier,
+    List<BriefingPackageDocument>? briefingPackageDocuments,
+    String? briefingPackageOrigin,
+    List<dynamic>? briefingPackageConfirmationHistory,
+    int? bpVersion,
+    int? version,
+    int? creationTimeStamp,
+    dynamic latestFuelOrder,
+    InterfaceHistory? interfaceHistory,
+    Links? links,
+  }) {
+    return BriefingPackage(
+      status: status ?? this.status,
+      previousStatus: previousStatus ?? this.previousStatus,
+      leg: leg ?? this.leg,
+      categories: categories ?? this.categories,
+      lidoBriefingData: lidoBriefingData ?? this.lidoBriefingData,
+      flightLegIdentifier: flightLegIdentifier ?? this.flightLegIdentifier,
+      briefingPackageDocuments:
+          briefingPackageDocuments ?? this.briefingPackageDocuments,
+      briefingPackageOrigin:
+          briefingPackageOrigin ?? this.briefingPackageOrigin,
+      briefingPackageConfirmationHistory: briefingPackageConfirmationHistory ??
+          this.briefingPackageConfirmationHistory,
+      bpVersion: bpVersion ?? this.bpVersion,
+      version: version ?? this.version,
+      creationTimeStamp: creationTimeStamp ?? this.creationTimeStamp,
+      latestFuelOrder: latestFuelOrder ?? this.latestFuelOrder,
+      interfaceHistory: interfaceHistory ?? this.interfaceHistory,
+      links: links ?? this.links,
+    );
+  }
+
+  factory BriefingPackage.fromJson(Map<String, dynamic> json) {
+    return BriefingPackage(
+      status: json["status"],
+      previousStatus: json["previousStatus"],
+      leg: json["leg"] == null
+          ? []
+          : List<Leg>.from(json["leg"]!.map((x) => Leg.fromJson(x))),
+      categories: json["categories"] == null
+          ? []
+          : List<Category>.from(
+              json["categories"]!.map((x) => Category.fromJson(x))),
+      lidoBriefingData: json["lidoBriefingData"] == null
+          ? null
+          : LidoBriefingData.fromJson(json["lidoBriefingData"]),
+      flightLegIdentifier: json["flightLegIdentifier"],
+      briefingPackageDocuments: json["briefingPackageDocuments"] == null
+          ? []
+          : List<BriefingPackageDocument>.from(json["briefingPackageDocuments"]!
+              .map((x) => BriefingPackageDocument.fromJson(x))),
+      briefingPackageOrigin: json["briefingPackageOrigin"],
+      briefingPackageConfirmationHistory:
+          json["briefingPackageConfirmationHistory"] == null
+              ? []
+              : List<dynamic>.from(
+                  json["briefingPackageConfirmationHistory"]!.map((x) => x)),
+      bpVersion: json["bpVersion"],
+      version: json["version"],
+      creationTimeStamp: json["creationTimeStamp"],
+      latestFuelOrder: json["latestFuelOrder"],
+      interfaceHistory: json["interfaceHistory"] == null
+          ? null
+          : InterfaceHistory.fromJson(json["interfaceHistory"]),
+      links: json["_links"] == null ? null : Links.fromJson(json["_links"]),
+    );
+  }
+
+  Map<String, dynamic> toJson() => {
+        "status": status,
+        "previousStatus": previousStatus,
+        "leg": leg.map((x) => x.toJson()).toList(),
+        "categories": categories.map((x) => x.toJson()).toList(),
+        "lidoBriefingData": lidoBriefingData?.toJson(),
+        "flightLegIdentifier": flightLegIdentifier,
+        "briefingPackageDocuments":
+            briefingPackageDocuments.map((x) => x.toJson()).toList(),
+        "briefingPackageOrigin": briefingPackageOrigin,
+        "briefingPackageConfirmationHistory":
+            briefingPackageConfirmationHistory.map((x) => x).toList(),
+        "bpVersion": bpVersion,
+        "version": version,
+        "creationTimeStamp": creationTimeStamp,
+        "latestFuelOrder": latestFuelOrder,
+        "interfaceHistory": interfaceHistory?.toJson(),
+        "_links": links?.toJson(),
+      };
+
+  @override
+  String toString() {
+    return "$status, $previousStatus, $leg, $categories, $lidoBriefingData, $flightLegIdentifier, $briefingPackageDocuments, $briefingPackageOrigin, $briefingPackageConfirmationHistory, $bpVersion, $version, $creationTimeStamp, $latestFuelOrder, $interfaceHistory, $links, ";
+  }
+}
+
+class BriefingPackageDocument {
+  BriefingPackageDocument({
+    required this.name,
+    required this.creationTime,
+    required this.printedBy,
+  });
+
+  final String? name;
+  static const String nameKey = "name";
+
+  final int? creationTime;
+  static const String creationTimeKey = "creationTime";
+
+  final String? printedBy;
+  static const String printedByKey = "printedBy";
+
+  BriefingPackageDocument copyWith({
+    String? name,
+    int? creationTime,
+    String? printedBy,
+  }) {
+    return BriefingPackageDocument(
+      name: name ?? this.name,
+      creationTime: creationTime ?? this.creationTime,
+      printedBy: printedBy ?? this.printedBy,
+    );
+  }
+
+  factory BriefingPackageDocument.fromJson(Map<String, dynamic> json) {
+    return BriefingPackageDocument(
+      name: json["name"],
+      creationTime: json["creationTime"],
+      printedBy: json["printedBy"],
+    );
+  }
+
+  Map<String, dynamic> toJson() => {
+        "name": name,
+        "creationTime": creationTime,
+        "printedBy": printedBy,
+      };
+
+  @override
+  String toString() {
+    return "$name, $creationTime, $printedBy, ";
+  }
+}
+
+class Category {
+  Category({
+    required this.name,
+    required this.documents,
+    required this.flightRelated,
+    required this.type,
+    required this.links,
+  });
+
+  final String? name;
+  static const String nameKey = "name";
+
+  final List<Document> documents;
+  static const String documentsKey = "documents";
+
+  final bool? flightRelated;
+  static const String flightRelatedKey = "flightRelated";
+
+  final String? type;
+  static const String typeKey = "type";
+
+  final Links? links;
+  static const String linksKey = "_links";
+
+  Category copyWith({
+    String? name,
+    List<Document>? documents,
+    bool? flightRelated,
+    String? type,
+    Links? links,
+  }) {
+    return Category(
+      name: name ?? this.name,
+      documents: documents ?? this.documents,
+      flightRelated: flightRelated ?? this.flightRelated,
+      type: type ?? this.type,
+      links: links ?? this.links,
+    );
+  }
+
+  factory Category.fromJson(Map<String, dynamic> json) {
+    return Category(
+      name: json["name"],
+      documents: json["documents"] == null
+          ? []
+          : List<Document>.from(
+              json["documents"]!.map((x) => Document.fromJson(x))),
+      flightRelated: json["flightRelated"],
+      type: json["type"],
+      links: json["_links"] == null ? null : Links.fromJson(json["_links"]),
+    );
+  }
+
+  Map<String, dynamic> toJson() => {
+        "name": name,
+        "documents": documents.map((x) => x.toJson()).toList(),
+        "flightRelated": flightRelated,
+        "type": type,
+        "_links": links?.toJson(),
+      };
+
+  @override
+  String toString() {
+    return "$name, $documents, $flightRelated, $type, $links, ";
+  }
+}
+
+class Document {
+  Document({
+    required this.fileId,
+    required this.legIdentifier,
+    required this.mediaType,
+    required this.creationTime,
+    required this.metadata,
+    required this.links,
+    required this.fileName,
+  });
+
+  final String? fileId;
+  static const String fileIdKey = "fileId";
+
+  final String? legIdentifier;
+  static const String legIdentifierKey = "legIdentifier";
+
+  final String? mediaType;
+  static const String mediaTypeKey = "mediaType";
+
+  final int? creationTime;
+  static const String creationTimeKey = "creationTime";
+
+  final List<Metadatum> metadata;
+  static const String metadataKey = "metadata";
+
+  final Links? links;
+  static const String linksKey = "_links";
+
+  final String? fileName;
+  static const String fileNameKey = "fileName";
+
+  Document copyWith({
+    String? fileId,
+    String? legIdentifier,
+    String? mediaType,
+    int? creationTime,
+    List<Metadatum>? metadata,
+    Links? links,
+    String? fileName,
+  }) {
+    return Document(
+      fileId: fileId ?? this.fileId,
+      legIdentifier: legIdentifier ?? this.legIdentifier,
+      mediaType: mediaType ?? this.mediaType,
+      creationTime: creationTime ?? this.creationTime,
+      metadata: metadata ?? this.metadata,
+      links: links ?? this.links,
+      fileName: fileName ?? this.fileName,
+    );
+  }
+
+  factory Document.fromJson(Map<String, dynamic> json) {
+    return Document(
+      fileId: json["fileId"],
+      legIdentifier: json["legIdentifier"],
+      mediaType: json["mediaType"],
+      creationTime: json["creationTime"],
+      metadata: json["metadata"] == null
+          ? []
+          : List<Metadatum>.from(
+              json["metadata"]!.map((x) => Metadatum.fromJson(x))),
+      links: json["_links"] == null ? null : Links.fromJson(json["_links"]),
+      fileName: json["fileName"],
+    );
+  }
+
+  Map<String, dynamic> toJson() => {
+        "fileId": fileId,
+        "legIdentifier": legIdentifier,
+        "mediaType": mediaType,
+        "creationTime": creationTime,
+        "metadata": metadata.map((x) => x.toJson()).toList(),
+        "_links": links?.toJson(),
+        "fileName": fileName,
+      };
+
+  @override
+  String toString() {
+    return "$fileId, $legIdentifier, $mediaType, $creationTime, $metadata, $links, $fileName, ";
+  }
+}
+
+class Links {
+  Links({
+    required this.self,
+  });
+
+  final Self? self;
+  static const String selfKey = "self";
+
+  Links copyWith({
+    Self? self,
+  }) {
+    return Links(
+      self: self ?? this.self,
+    );
+  }
+
+  factory Links.fromJson(Map<String, dynamic> json) {
+    return Links(
+      self: json["self"] == null ? null : Self.fromJson(json["self"]),
+    );
+  }
+
+  Map<String, dynamic> toJson() => {
+        "self": self?.toJson(),
+      };
+
+  @override
+  String toString() {
+    return "$self, ";
+  }
+}
+
+class Self {
+  Self({
+    required this.href,
+  });
+
+  final String? href;
+  static const String hrefKey = "href";
+
+  Self copyWith({
+    String? href,
+  }) {
+    return Self(
+      href: href ?? this.href,
+    );
+  }
+
+  factory Self.fromJson(Map<String, dynamic> json) {
+    return Self(
+      href: json["href"],
+    );
+  }
+
+  Map<String, dynamic> toJson() => {
+        "href": href,
+      };
+
+  @override
+  String toString() {
+    return "$href, ";
+  }
+}
+
+class Metadatum {
+  Metadatum({
+    required this.key,
+    required this.value,
+  });
+
+  final String? key;
+  static const String keyKey = "key";
+
+  final dynamic value;
+  static const String valueKey = "value";
+
+  Metadatum copyWith({
+    String? key,
+    dynamic value,
+  }) {
+    return Metadatum(
+      key: key ?? this.key,
+      value: value ?? this.value,
+    );
+  }
+
+  factory Metadatum.fromJson(Map<String, dynamic> json) {
+    return Metadatum(
+      key: json["key"],
+      value: json["value"],
+    );
+  }
+
+  Map<String, dynamic> toJson() => {
+        "key": key,
+        "value": value,
+      };
+
+  @override
+  String toString() {
+    return "$key, $value, ";
+  }
+}
+
+class InterfaceHistory {
+  InterfaceHistory({
+    required this.interfaceTimestamp,
+  });
+
+  final int? interfaceTimestamp;
+  static const String interfaceTimestampKey = "interfaceTimestamp";
+
+  InterfaceHistory copyWith({
+    int? interfaceTimestamp,
+  }) {
+    return InterfaceHistory(
+      interfaceTimestamp: interfaceTimestamp ?? this.interfaceTimestamp,
+    );
+  }
+
+  factory InterfaceHistory.fromJson(Map<String, dynamic> json) {
+    return InterfaceHistory(
+      interfaceTimestamp: json["interfaceTimestamp"],
+    );
+  }
+
+  Map<String, dynamic> toJson() => {
+        "interfaceTimestamp": interfaceTimestamp,
+      };
+
+  @override
+  String toString() {
+    return "$interfaceTimestamp, ";
+  }
+}
+
+class Leg {
+  Leg({
+    required this.legidentifier,
+    required this.commercialAirlineIata,
+    required this.commercialAirlineIcao,
+    required this.flightNumber,
+    required this.operationalSuffix,
+    required this.aircraftOperatorIata,
+    required this.aircraftOperatorIcao,
+    required this.departureAirport,
+    required this.destinationAirport,
+    required this.ofpNumber,
+    required this.aircraftDetails,
+    required this.dispatcherInformation,
+    required this.ctot,
+    required this.slotAction,
+    required this.estimatedDepartureTime,
+    required this.scheduledDepartureTime,
+    required this.estimatedTimeOfArrival,
+    required this.scheduledTimeOfArrival,
+    required this.crewMembers,
+    required this.fuel,
+    required this.weight,
+    required this.reclearanceIndicator,
+    required this.dateOfOrigin,
+    required this.dateOfOperation,
+    required this.masterOffice,
+    required this.responsibleOffice,
+    required this.flightDuplicationNumber,
+    required this.destinationAirportIcao,
+    required this.departureAirportIcao,
+    required this.flightRoute,
+  });
+
+  final String? legidentifier;
+  static const String legidentifierKey = "legidentifier";
+
+  final String? commercialAirlineIata;
+  static const String commercialAirlineIataKey = "commercialAirlineIATA";
+
+  final String? commercialAirlineIcao;
+  static const String commercialAirlineIcaoKey = "commercialAirlineICAO";
+
+  final String? flightNumber;
+  static const String flightNumberKey = "flightNumber";
+
+  final String? operationalSuffix;
+  static const String operationalSuffixKey = "operationalSuffix";
+
+  final String? aircraftOperatorIata;
+  static const String aircraftOperatorIataKey = "aircraftOperatorIATA";
+
+  final String? aircraftOperatorIcao;
+  static const String aircraftOperatorIcaoKey = "aircraftOperatorICAO";
+
+  final String? departureAirport;
+  static const String departureAirportKey = "departureAirport";
+
+  final String? destinationAirport;
+  static const String destinationAirportKey = "destinationAirport";
+
+  final String? ofpNumber;
+  static const String ofpNumberKey = "ofpNumber";
+
+  final AircraftDetails? aircraftDetails;
+  static const String aircraftDetailsKey = "aircraftDetails";
+
+  final DispatcherInformation? dispatcherInformation;
+  static const String dispatcherInformationKey = "dispatcherInformation";
+
+  final int? ctot;
+  static const String ctotKey = "ctot";
+
+  final String? slotAction;
+  static const String slotActionKey = "slotAction";
+
+  final int? estimatedDepartureTime;
+  static const String estimatedDepartureTimeKey = "estimatedDepartureTime";
+
+  final int? scheduledDepartureTime;
+  static const String scheduledDepartureTimeKey = "scheduledDepartureTime";
+
+  final int? estimatedTimeOfArrival;
+  static const String estimatedTimeOfArrivalKey = "estimatedTimeOfArrival";
+
+  final int? scheduledTimeOfArrival;
+  static const String scheduledTimeOfArrivalKey = "scheduledTimeOfArrival";
+
+  final List<CrewMember> crewMembers;
+  static const String crewMembersKey = "crewMembers";
+
+  final Fuel? fuel;
+  static const String fuelKey = "fuel";
+
+  final Weight? weight;
+  static const String weightKey = "weight";
+
+  final bool? reclearanceIndicator;
+  static const String reclearanceIndicatorKey = "reclearanceIndicator";
+
+  final int? dateOfOrigin;
+  static const String dateOfOriginKey = "dateOfOrigin";
+
+  final int? dateOfOperation;
+  static const String dateOfOperationKey = "dateOfOperation";
+
+  final String? masterOffice;
+  static const String masterOfficeKey = "masterOffice";
+
+  final String? responsibleOffice;
+  static const String responsibleOfficeKey = "responsibleOffice";
+
+  final dynamic flightDuplicationNumber;
+  static const String flightDuplicationNumberKey = "flightDuplicationNumber";
+
+  final String? destinationAirportIcao;
+  static const String destinationAirportIcaoKey = "destinationAirportICAO";
+
+  final String? departureAirportIcao;
+  static const String departureAirportIcaoKey = "departureAirportICAO";
+
+  final String? flightRoute;
+  static const String flightRouteKey = "flightRoute";
+
+  Leg copyWith({
+    String? legidentifier,
+    String? commercialAirlineIata,
+    String? commercialAirlineIcao,
+    String? flightNumber,
+    String? operationalSuffix,
+    String? aircraftOperatorIata,
+    String? aircraftOperatorIcao,
+    String? departureAirport,
+    String? destinationAirport,
+    String? ofpNumber,
+    AircraftDetails? aircraftDetails,
+    DispatcherInformation? dispatcherInformation,
+    int? ctot,
+    String? slotAction,
+    int? estimatedDepartureTime,
+    int? scheduledDepartureTime,
+    int? estimatedTimeOfArrival,
+    int? scheduledTimeOfArrival,
+    List<CrewMember>? crewMembers,
+    Fuel? fuel,
+    Weight? weight,
+    bool? reclearanceIndicator,
+    int? dateOfOrigin,
+    int? dateOfOperation,
+    String? masterOffice,
+    String? responsibleOffice,
+    dynamic flightDuplicationNumber,
+    String? destinationAirportIcao,
+    String? departureAirportIcao,
+    String? flightRoute,
+  }) {
+    return Leg(
+      legidentifier: legidentifier ?? this.legidentifier,
+      commercialAirlineIata:
+          commercialAirlineIata ?? this.commercialAirlineIata,
+      commercialAirlineIcao:
+          commercialAirlineIcao ?? this.commercialAirlineIcao,
+      flightNumber: flightNumber ?? this.flightNumber,
+      operationalSuffix: operationalSuffix ?? this.operationalSuffix,
+      aircraftOperatorIata: aircraftOperatorIata ?? this.aircraftOperatorIata,
+      aircraftOperatorIcao: aircraftOperatorIcao ?? this.aircraftOperatorIcao,
+      departureAirport: departureAirport ?? this.departureAirport,
+      destinationAirport: destinationAirport ?? this.destinationAirport,
+      ofpNumber: ofpNumber ?? this.ofpNumber,
+      aircraftDetails: aircraftDetails ?? this.aircraftDetails,
+      dispatcherInformation:
+          dispatcherInformation ?? this.dispatcherInformation,
+      ctot: ctot ?? this.ctot,
+      slotAction: slotAction ?? this.slotAction,
+      estimatedDepartureTime:
+          estimatedDepartureTime ?? this.estimatedDepartureTime,
+      scheduledDepartureTime:
+          scheduledDepartureTime ?? this.scheduledDepartureTime,
+      estimatedTimeOfArrival:
+          estimatedTimeOfArrival ?? this.estimatedTimeOfArrival,
+      scheduledTimeOfArrival:
+          scheduledTimeOfArrival ?? this.scheduledTimeOfArrival,
+      crewMembers: crewMembers ?? this.crewMembers,
+      fuel: fuel ?? this.fuel,
+      weight: weight ?? this.weight,
+      reclearanceIndicator: reclearanceIndicator ?? this.reclearanceIndicator,
+      dateOfOrigin: dateOfOrigin ?? this.dateOfOrigin,
+      dateOfOperation: dateOfOperation ?? this.dateOfOperation,
+      masterOffice: masterOffice ?? this.masterOffice,
+      responsibleOffice: responsibleOffice ?? this.responsibleOffice,
+      flightDuplicationNumber:
+          flightDuplicationNumber ?? this.flightDuplicationNumber,
+      destinationAirportIcao:
+          destinationAirportIcao ?? this.destinationAirportIcao,
+      departureAirportIcao: departureAirportIcao ?? this.departureAirportIcao,
+      flightRoute: flightRoute ?? this.flightRoute,
+    );
+  }
+
+  factory Leg.fromJson(Map<String, dynamic> json) {
+    return Leg(
+      legidentifier: json["legidentifier"],
+      commercialAirlineIata: json["commercialAirlineIATA"],
+      commercialAirlineIcao: json["commercialAirlineICAO"],
+      flightNumber: json["flightNumber"],
+      operationalSuffix: json["operationalSuffix"],
+      aircraftOperatorIata: json["aircraftOperatorIATA"],
+      aircraftOperatorIcao: json["aircraftOperatorICAO"],
+      departureAirport: json["departureAirport"],
+      destinationAirport: json["destinationAirport"],
+      ofpNumber: json["ofpNumber"],
+      aircraftDetails: json["aircraftDetails"] == null
+          ? null
+          : AircraftDetails.fromJson(json["aircraftDetails"]),
+      dispatcherInformation: json["dispatcherInformation"] == null
+          ? null
+          : DispatcherInformation.fromJson(json["dispatcherInformation"]),
+      ctot: json["ctot"],
+      slotAction: json["slotAction"],
+      estimatedDepartureTime: json["estimatedDepartureTime"],
+      scheduledDepartureTime: json["scheduledDepartureTime"],
+      estimatedTimeOfArrival: json["estimatedTimeOfArrival"],
+      scheduledTimeOfArrival: json["scheduledTimeOfArrival"],
+      crewMembers: json["crewMembers"] == null
+          ? []
+          : List<CrewMember>.from(
+              json["crewMembers"]!.map((x) => CrewMember.fromJson(x))),
+      fuel: json["fuel"] == null ? null : Fuel.fromJson(json["fuel"]),
+      weight: json["weight"] == null ? null : Weight.fromJson(json["weight"]),
+      reclearanceIndicator: json["reclearanceIndicator"],
+      dateOfOrigin: json["dateOfOrigin"],
+      dateOfOperation: json["dateOfOperation"],
+      masterOffice: json["masterOffice"],
+      responsibleOffice: json["responsibleOffice"],
+      flightDuplicationNumber: json["flightDuplicationNumber"],
+      destinationAirportIcao: json["destinationAirportICAO"],
+      departureAirportIcao: json["departureAirportICAO"],
+      flightRoute: json["flightRoute"],
+    );
+  }
+
+  Map<String, dynamic> toJson() => {
+        "legidentifier": legidentifier,
+        "commercialAirlineIATA": commercialAirlineIata,
+        "commercialAirlineICAO": commercialAirlineIcao,
+        "flightNumber": flightNumber,
+        "operationalSuffix": operationalSuffix,
+        "aircraftOperatorIATA": aircraftOperatorIata,
+        "aircraftOperatorICAO": aircraftOperatorIcao,
+        "departureAirport": departureAirport,
+        "destinationAirport": destinationAirport,
+        "ofpNumber": ofpNumber,
+        "aircraftDetails": aircraftDetails?.toJson(),
+        "dispatcherInformation": dispatcherInformation?.toJson(),
+        "ctot": ctot,
+        "slotAction": slotAction,
+        "estimatedDepartureTime": estimatedDepartureTime,
+        "scheduledDepartureTime": scheduledDepartureTime,
+        "estimatedTimeOfArrival": estimatedTimeOfArrival,
+        "scheduledTimeOfArrival": scheduledTimeOfArrival,
+        "crewMembers": crewMembers.map((x) => x.toJson()).toList(),
+        "fuel": fuel?.toJson(),
+        "weight": weight?.toJson(),
+        "reclearanceIndicator": reclearanceIndicator,
+        "dateOfOrigin": dateOfOrigin,
+        "dateOfOperation": dateOfOperation,
+        "masterOffice": masterOffice,
+        "responsibleOffice": responsibleOffice,
+        "flightDuplicationNumber": flightDuplicationNumber,
+        "destinationAirportICAO": destinationAirportIcao,
+        "departureAirportICAO": departureAirportIcao,
+        "flightRoute": flightRoute,
+      };
+
+  @override
+  String toString() {
+    return "$legidentifier, $commercialAirlineIata, $commercialAirlineIcao, $flightNumber, $operationalSuffix, $aircraftOperatorIata, $aircraftOperatorIcao, $departureAirport, $destinationAirport, $ofpNumber, $aircraftDetails, $dispatcherInformation, $ctot, $slotAction, $estimatedDepartureTime, $scheduledDepartureTime, $estimatedTimeOfArrival, $scheduledTimeOfArrival, $crewMembers, $fuel, $weight, $reclearanceIndicator, $dateOfOrigin, $dateOfOperation, $masterOffice, $responsibleOffice, $flightDuplicationNumber, $destinationAirportIcao, $departureAirportIcao, $flightRoute, ";
+  }
+}
+
+class AircraftDetails {
+  AircraftDetails({
+    required this.aircraftRegistration,
+    required this.aircraftModel,
+    required this.aircraftIcaoType,
+  });
+
+  final String? aircraftRegistration;
+  static const String aircraftRegistrationKey = "aircraftRegistration";
+
+  final String? aircraftModel;
+  static const String aircraftModelKey = "aircraftModel";
+
+  final String? aircraftIcaoType;
+  static const String aircraftIcaoTypeKey = "aircraftICAOType";
+
+  AircraftDetails copyWith({
+    String? aircraftRegistration,
+    String? aircraftModel,
+    String? aircraftIcaoType,
+  }) {
+    return AircraftDetails(
+      aircraftRegistration: aircraftRegistration ?? this.aircraftRegistration,
+      aircraftModel: aircraftModel ?? this.aircraftModel,
+      aircraftIcaoType: aircraftIcaoType ?? this.aircraftIcaoType,
+    );
+  }
+
+  factory AircraftDetails.fromJson(Map<String, dynamic> json) {
+    return AircraftDetails(
+      aircraftRegistration: json["aircraftRegistration"],
+      aircraftModel: json["aircraftModel"],
+      aircraftIcaoType: json["aircraftICAOType"],
+    );
+  }
+
+  Map<String, dynamic> toJson() => {
+        "aircraftRegistration": aircraftRegistration,
+        "aircraftModel": aircraftModel,
+        "aircraftICAOType": aircraftIcaoType,
+      };
+
+  @override
+  String toString() {
+    return "$aircraftRegistration, $aircraftModel, $aircraftIcaoType, ";
+  }
+}
+
+class CrewMember {
+  CrewMember({
+    required this.position,
+    required this.name,
+    required this.crewId,
+  });
+
+  final String? position;
+  static const String positionKey = "position";
+
+  final String? name;
+  static const String nameKey = "name";
+
+  final String? crewId;
+  static const String crewIdKey = "crewId";
+
+  CrewMember copyWith({
+    String? position,
+    String? name,
+    String? crewId,
+  }) {
+    return CrewMember(
+      position: position ?? this.position,
+      name: name ?? this.name,
+      crewId: crewId ?? this.crewId,
+    );
+  }
+
+  factory CrewMember.fromJson(Map<String, dynamic> json) {
+    return CrewMember(
+      position: json["position"],
+      name: json["name"],
+      crewId: json["crewId"],
+    );
+  }
+
+  Map<String, dynamic> toJson() => {
+        "position": position,
+        "name": name,
+        "crewId": crewId,
+      };
+
+  @override
+  String toString() {
+    return "$position, $name, $crewId, ";
+  }
+}
+
+class DispatcherInformation {
+  DispatcherInformation({
+    required this.dispatchOffice,
+    required this.dispatcherName,
+    required this.dispatcherTelephoneNumber,
+    required this.dispatcherRemarks,
+  });
+
+  final String? dispatchOffice;
+  static const String dispatchOfficeKey = "dispatchOffice";
+
+  final String? dispatcherName;
+  static const String dispatcherNameKey = "dispatcherName";
+
+  final String? dispatcherTelephoneNumber;
+  static const String dispatcherTelephoneNumberKey =
+      "dispatcherTelephoneNumber";
+
+  final dynamic dispatcherRemarks;
+  static const String dispatcherRemarksKey = "dispatcherRemarks";
+
+  DispatcherInformation copyWith({
+    String? dispatchOffice,
+    String? dispatcherName,
+    String? dispatcherTelephoneNumber,
+    dynamic dispatcherRemarks,
+  }) {
+    return DispatcherInformation(
+      dispatchOffice: dispatchOffice ?? this.dispatchOffice,
+      dispatcherName: dispatcherName ?? this.dispatcherName,
+      dispatcherTelephoneNumber:
+          dispatcherTelephoneNumber ?? this.dispatcherTelephoneNumber,
+      dispatcherRemarks: dispatcherRemarks ?? this.dispatcherRemarks,
+    );
+  }
+
+  factory DispatcherInformation.fromJson(Map<String, dynamic> json) {
+    return DispatcherInformation(
+      dispatchOffice: json["dispatchOffice"],
+      dispatcherName: json["dispatcherName"],
+      dispatcherTelephoneNumber: json["dispatcherTelephoneNumber"],
+      dispatcherRemarks: json["dispatcherRemarks"],
+    );
+  }
+
+  Map<String, dynamic> toJson() => {
+        "dispatchOffice": dispatchOffice,
+        "dispatcherName": dispatcherName,
+        "dispatcherTelephoneNumber": dispatcherTelephoneNumber,
+        "dispatcherRemarks": dispatcherRemarks,
+      };
+
+  @override
+  String toString() {
+    return "$dispatchOffice, $dispatcherName, $dispatcherTelephoneNumber, $dispatcherRemarks, ";
+  }
+}
+
+class Fuel {
+  Fuel({
+    required this.unitOfMeasure,
+    required this.tankCapacity,
+    required this.averageFuelFlow,
+    required this.taxiFuel,
+    required this.tripFuel,
+    required this.blockFuel,
+    required this.possibleExtra,
+    required this.totalTripTimeMinutes,
+    required this.taxiTimeMinutes,
+    required this.estimTotalFlightTime,
+    required this.takeOffFuel,
+    required this.takeOffFuelTime,
+    required this.averageTaxiFuelFlow,
+    required this.fuelOnBoard,
+  });
+
+  final String? unitOfMeasure;
+  static const String unitOfMeasureKey = "unitOfMeasure";
+
+  final int? tankCapacity;
+  static const String tankCapacityKey = "tankCapacity";
+
+  final int? averageFuelFlow;
+  static const String averageFuelFlowKey = "averageFuelFlow";
+
+  final int? taxiFuel;
+  static const String taxiFuelKey = "taxiFuel";
+
+  final int? tripFuel;
+  static const String tripFuelKey = "tripFuel";
+
+  final int? blockFuel;
+  static const String blockFuelKey = "blockFuel";
+
+  final int? possibleExtra;
+  static const String possibleExtraKey = "possibleExtra";
+
+  final int? totalTripTimeMinutes;
+  static const String totalTripTimeMinutesKey = "totalTripTimeMinutes";
+
+  final int? taxiTimeMinutes;
+  static const String taxiTimeMinutesKey = "taxiTimeMinutes";
+
+  final int? estimTotalFlightTime;
+  static const String estimTotalFlightTimeKey = "estimTotalFlightTime";
+
+  final int? takeOffFuel;
+  static const String takeOffFuelKey = "takeOffFuel";
+
+  final int? takeOffFuelTime;
+  static const String takeOffFuelTimeKey = "takeOffFuelTime";
+
+  final int? averageTaxiFuelFlow;
+  static const String averageTaxiFuelFlowKey = "averageTaxiFuelFlow";
+
+  final FuelOnBoard? fuelOnBoard;
+  static const String fuelOnBoardKey = "fuelOnBoard";
+
+  Fuel copyWith({
+    String? unitOfMeasure,
+    int? tankCapacity,
+    int? averageFuelFlow,
+    int? taxiFuel,
+    int? tripFuel,
+    int? blockFuel,
+    int? possibleExtra,
+    int? totalTripTimeMinutes,
+    int? taxiTimeMinutes,
+    int? estimTotalFlightTime,
+    int? takeOffFuel,
+    int? takeOffFuelTime,
+    int? averageTaxiFuelFlow,
+    FuelOnBoard? fuelOnBoard,
+  }) {
+    return Fuel(
+      unitOfMeasure: unitOfMeasure ?? this.unitOfMeasure,
+      tankCapacity: tankCapacity ?? this.tankCapacity,
+      averageFuelFlow: averageFuelFlow ?? this.averageFuelFlow,
+      taxiFuel: taxiFuel ?? this.taxiFuel,
+      tripFuel: tripFuel ?? this.tripFuel,
+      blockFuel: blockFuel ?? this.blockFuel,
+      possibleExtra: possibleExtra ?? this.possibleExtra,
+      totalTripTimeMinutes: totalTripTimeMinutes ?? this.totalTripTimeMinutes,
+      taxiTimeMinutes: taxiTimeMinutes ?? this.taxiTimeMinutes,
+      estimTotalFlightTime: estimTotalFlightTime ?? this.estimTotalFlightTime,
+      takeOffFuel: takeOffFuel ?? this.takeOffFuel,
+      takeOffFuelTime: takeOffFuelTime ?? this.takeOffFuelTime,
+      averageTaxiFuelFlow: averageTaxiFuelFlow ?? this.averageTaxiFuelFlow,
+      fuelOnBoard: fuelOnBoard ?? this.fuelOnBoard,
+    );
+  }
+
+  factory Fuel.fromJson(Map<String, dynamic> json) {
+    return Fuel(
+      unitOfMeasure: json["unitOfMeasure"],
+      tankCapacity: json["tankCapacity"],
+      averageFuelFlow: json["averageFuelFlow"],
+      taxiFuel: json["taxiFuel"],
+      tripFuel: json["tripFuel"],
+      blockFuel: json["blockFuel"],
+      possibleExtra: json["possibleExtra"],
+      totalTripTimeMinutes: json["totalTripTimeMinutes"],
+      taxiTimeMinutes: json["taxiTimeMinutes"],
+      estimTotalFlightTime: json["estimTotalFlightTime"],
+      takeOffFuel: json["takeOffFuel"],
+      takeOffFuelTime: json["takeOffFuelTime"],
+      averageTaxiFuelFlow: json["averageTaxiFuelFlow"],
+      fuelOnBoard: json["fuelOnBoard"] == null
+          ? null
+          : FuelOnBoard.fromJson(json["fuelOnBoard"]),
+    );
+  }
+
+  Map<String, dynamic> toJson() => {
+        "unitOfMeasure": unitOfMeasure,
+        "tankCapacity": tankCapacity,
+        "averageFuelFlow": averageFuelFlow,
+        "taxiFuel": taxiFuel,
+        "tripFuel": tripFuel,
+        "blockFuel": blockFuel,
+        "possibleExtra": possibleExtra,
+        "totalTripTimeMinutes": totalTripTimeMinutes,
+        "taxiTimeMinutes": taxiTimeMinutes,
+        "estimTotalFlightTime": estimTotalFlightTime,
+        "takeOffFuel": takeOffFuel,
+        "takeOffFuelTime": takeOffFuelTime,
+        "averageTaxiFuelFlow": averageTaxiFuelFlow,
+        "fuelOnBoard": fuelOnBoard?.toJson(),
+      };
+
+  @override
+  String toString() {
+    return "$unitOfMeasure, $tankCapacity, $averageFuelFlow, $taxiFuel, $tripFuel, $blockFuel, $possibleExtra, $totalTripTimeMinutes, $taxiTimeMinutes, $estimTotalFlightTime, $takeOffFuel, $takeOffFuelTime, $averageTaxiFuelFlow, $fuelOnBoard, ";
+  }
+}
+
+class FuelOnBoard {
+  FuelOnBoard({
+    required this.remainingFuel,
+    required this.unitOfMeasure,
+    required this.remainingFuelIndicator,
+  });
+
+  final int? remainingFuel;
+  static const String remainingFuelKey = "remainingFuel";
+
+  final String? unitOfMeasure;
+  static const String unitOfMeasureKey = "unitOfMeasure";
+
+  final dynamic remainingFuelIndicator;
+  static const String remainingFuelIndicatorKey = "remainingFuelIndicator";
+
+  FuelOnBoard copyWith({
+    int? remainingFuel,
+    String? unitOfMeasure,
+    dynamic remainingFuelIndicator,
+  }) {
+    return FuelOnBoard(
+      remainingFuel: remainingFuel ?? this.remainingFuel,
+      unitOfMeasure: unitOfMeasure ?? this.unitOfMeasure,
+      remainingFuelIndicator:
+          remainingFuelIndicator ?? this.remainingFuelIndicator,
+    );
+  }
+
+  factory FuelOnBoard.fromJson(Map<String, dynamic> json) {
+    return FuelOnBoard(
+      remainingFuel: json["remainingFuel"],
+      unitOfMeasure: json["unitOfMeasure"],
+      remainingFuelIndicator: json["remainingFuelIndicator"],
+    );
+  }
+
+  Map<String, dynamic> toJson() => {
+        "remainingFuel": remainingFuel,
+        "unitOfMeasure": unitOfMeasure,
+        "remainingFuelIndicator": remainingFuelIndicator,
+      };
+
+  @override
+  String toString() {
+    return "$remainingFuel, $unitOfMeasure, $remainingFuelIndicator, ";
+  }
+}
+
+class Weight {
+  Weight({
+    required this.maxZfw,
+    required this.maxTaxiWeight,
+    required this.maxTakeOffWeight,
+    required this.plannedZfw,
+    required this.restrictedTakeOffWeight,
+    required this.maxLandingWeight,
+  });
+
+  final int? maxZfw;
+  static const String maxZfwKey = "maxZfw";
+
+  final int? maxTaxiWeight;
+  static const String maxTaxiWeightKey = "maxTaxiWeight";
+
+  final int? maxTakeOffWeight;
+  static const String maxTakeOffWeightKey = "maxTakeOffWeight";
+
+  final int? plannedZfw;
+  static const String plannedZfwKey = "plannedZfw";
+
+  final int? restrictedTakeOffWeight;
+  static const String restrictedTakeOffWeightKey = "restrictedTakeOffWeight";
+
+  final int? maxLandingWeight;
+  static const String maxLandingWeightKey = "maxLandingWeight";
+
+  Weight copyWith({
+    int? maxZfw,
+    int? maxTaxiWeight,
+    int? maxTakeOffWeight,
+    int? plannedZfw,
+    int? restrictedTakeOffWeight,
+    int? maxLandingWeight,
+  }) {
+    return Weight(
+      maxZfw: maxZfw ?? this.maxZfw,
+      maxTaxiWeight: maxTaxiWeight ?? this.maxTaxiWeight,
+      maxTakeOffWeight: maxTakeOffWeight ?? this.maxTakeOffWeight,
+      plannedZfw: plannedZfw ?? this.plannedZfw,
+      restrictedTakeOffWeight:
+          restrictedTakeOffWeight ?? this.restrictedTakeOffWeight,
+      maxLandingWeight: maxLandingWeight ?? this.maxLandingWeight,
+    );
+  }
+
+  factory Weight.fromJson(Map<String, dynamic> json) {
+    return Weight(
+      maxZfw: json["maxZfw"],
+      maxTaxiWeight: json["maxTaxiWeight"],
+      maxTakeOffWeight: json["maxTakeOffWeight"],
+      plannedZfw: json["plannedZfw"],
+      restrictedTakeOffWeight: json["restrictedTakeOffWeight"],
+      maxLandingWeight: json["maxLandingWeight"],
+    );
+  }
+
+  Map<String, dynamic> toJson() => {
+        "maxZfw": maxZfw,
+        "maxTaxiWeight": maxTaxiWeight,
+        "maxTakeOffWeight": maxTakeOffWeight,
+        "plannedZfw": plannedZfw,
+        "restrictedTakeOffWeight": restrictedTakeOffWeight,
+        "maxLandingWeight": maxLandingWeight,
+      };
+
+  @override
+  String toString() {
+    return "$maxZfw, $maxTaxiWeight, $maxTakeOffWeight, $plannedZfw, $restrictedTakeOffWeight, $maxLandingWeight, ";
+  }
+}
+
+class LidoBriefingData {
+  LidoBriefingData({
+    required this.briefingStatus,
+  });
+
+  final String? briefingStatus;
+  static const String briefingStatusKey = "briefingStatus";
+
+  LidoBriefingData copyWith({
+    String? briefingStatus,
+  }) {
+    return LidoBriefingData(
+      briefingStatus: briefingStatus ?? this.briefingStatus,
+    );
+  }
+
+  factory LidoBriefingData.fromJson(Map<String, dynamic> json) {
+    return LidoBriefingData(
+      briefingStatus: json["briefingStatus"],
+    );
+  }
+
+  Map<String, dynamic> toJson() => {
+        "briefingStatus": briefingStatus,
+      };
+
+  @override
+  String toString() {
+    return "$briefingStatus, ";
+  }
+}
+
+class CategoriesNames {
+  CategoriesNames({
+    required this.raim,
+    required this.cda,
+    required this.vertprof,
+    required this.iwfr,
+    required this.uad,
+    required this.dms,
+    required this.disp,
+    required this.ats,
+    required this.addwxnotam,
+    required this.firnotam,
+    required this.wxnotam,
+    required this.advaa,
+    required this.wxsatwx,
+    required this.admtrtaf,
+    required this.notam,
+    required this.sigwxroute,
+    required this.adsigmets,
+    required this.radar,
+    required this.adwxsatwx,
+    required this.abd,
+    required this.ofp,
+    required this.vaatca,
+    required this.tlr,
+    required this.dismap,
+    required this.crewinfo,
+    required this.arptnotam,
+    required this.adwxsigwx,
+    required this.wxsigwx,
+    required this.sfc,
+  });
+
+  final String? raim;
+  static const String raimKey = "RAIM";
+
+  final String? cda;
+  static const String cdaKey = "CDA";
+
+  final String? vertprof;
+  static const String vertprofKey = "VERTPROF";
+
+  final String? iwfr;
+  static const String iwfrKey = "IWFR";
+
+  final String? uad;
+  static const String uadKey = "UAD";
+
+  final String? dms;
+  static const String dmsKey = "DMS";
+
+  final String? disp;
+  static const String dispKey = "DISP";
+
+  final String? ats;
+  static const String atsKey = "ATS";
+
+  final String? addwxnotam;
+  static const String addwxnotamKey = "ADDWXNOTAM";
+
+  final String? firnotam;
+  static const String firnotamKey = "FIRNOTAM";
+
+  final String? wxnotam;
+  static const String wxnotamKey = "WXNOTAM";
+
+  final String? advaa;
+  static const String advaaKey = "ADVAA";
+
+  final String? wxsatwx;
+  static const String wxsatwxKey = "WXSATWX";
+
+  final String? admtrtaf;
+  static const String admtrtafKey = "ADMTRTAF";
+
+  final String? notam;
+  static const String notamKey = "NOTAM";
+
+  final String? sigwxroute;
+  static const String sigwxrouteKey = "SIGWXROUTE";
+
+  final String? adsigmets;
+  static const String adsigmetsKey = "ADSIGMETS";
+
+  final String? radar;
+  static const String radarKey = "RADAR";
+
+  final String? adwxsatwx;
+  static const String adwxsatwxKey = "ADWXSATWX";
+
+  final String? abd;
+  static const String abdKey = "ABD";
+
+  final String? ofp;
+  static const String ofpKey = "OFP";
+
+  final String? vaatca;
+  static const String vaatcaKey = "VAATCA";
+
+  final String? tlr;
+  static const String tlrKey = "TLR";
+
+  final String? dismap;
+  static const String dismapKey = "DISMAP";
+
+  final String? crewinfo;
+  static const String crewinfoKey = "CREWINFO";
+
+  final String? arptnotam;
+  static const String arptnotamKey = "ARPTNOTAM";
+
+  final String? adwxsigwx;
+  static const String adwxsigwxKey = "ADWXSIGWX";
+
+  final String? wxsigwx;
+  static const String wxsigwxKey = "WXSIGWX";
+
+  final String? sfc;
+  static const String sfcKey = "SFC";
+
+  CategoriesNames copyWith({
+    String? raim,
+    String? cda,
+    String? vertprof,
+    String? iwfr,
+    String? uad,
+    String? dms,
+    String? disp,
+    String? ats,
+    String? addwxnotam,
+    String? firnotam,
+    String? wxnotam,
+    String? advaa,
+    String? wxsatwx,
+    String? admtrtaf,
+    String? notam,
+    String? sigwxroute,
+    String? adsigmets,
+    String? radar,
+    String? adwxsatwx,
+    String? abd,
+    String? ofp,
+    String? vaatca,
+    String? tlr,
+    String? dismap,
+    String? crewinfo,
+    String? arptnotam,
+    String? adwxsigwx,
+    String? wxsigwx,
+    String? sfc,
+  }) {
+    return CategoriesNames(
+      raim: raim ?? this.raim,
+      cda: cda ?? this.cda,
+      vertprof: vertprof ?? this.vertprof,
+      iwfr: iwfr ?? this.iwfr,
+      uad: uad ?? this.uad,
+      dms: dms ?? this.dms,
+      disp: disp ?? this.disp,
+      ats: ats ?? this.ats,
+      addwxnotam: addwxnotam ?? this.addwxnotam,
+      firnotam: firnotam ?? this.firnotam,
+      wxnotam: wxnotam ?? this.wxnotam,
+      advaa: advaa ?? this.advaa,
+      wxsatwx: wxsatwx ?? this.wxsatwx,
+      admtrtaf: admtrtaf ?? this.admtrtaf,
+      notam: notam ?? this.notam,
+      sigwxroute: sigwxroute ?? this.sigwxroute,
+      adsigmets: adsigmets ?? this.adsigmets,
+      radar: radar ?? this.radar,
+      adwxsatwx: adwxsatwx ?? this.adwxsatwx,
+      abd: abd ?? this.abd,
+      ofp: ofp ?? this.ofp,
+      vaatca: vaatca ?? this.vaatca,
+      tlr: tlr ?? this.tlr,
+      dismap: dismap ?? this.dismap,
+      crewinfo: crewinfo ?? this.crewinfo,
+      arptnotam: arptnotam ?? this.arptnotam,
+      adwxsigwx: adwxsigwx ?? this.adwxsigwx,
+      wxsigwx: wxsigwx ?? this.wxsigwx,
+      sfc: sfc ?? this.sfc,
+    );
+  }
+
+  factory CategoriesNames.fromJson(Map<String, dynamic> json) {
+    return CategoriesNames(
+      raim: json["RAIM"],
+      cda: json["CDA"],
+      vertprof: json["VERTPROF"],
+      iwfr: json["IWFR"],
+      uad: json["UAD"],
+      dms: json["DMS"],
+      disp: json["DISP"],
+      ats: json["ATS"],
+      addwxnotam: json["ADDWXNOTAM"],
+      firnotam: json["FIRNOTAM"],
+      wxnotam: json["WXNOTAM"],
+      advaa: json["ADVAA"],
+      wxsatwx: json["WXSATWX"],
+      admtrtaf: json["ADMTRTAF"],
+      notam: json["NOTAM"],
+      sigwxroute: json["SIGWXROUTE"],
+      adsigmets: json["ADSIGMETS"],
+      radar: json["RADAR"],
+      adwxsatwx: json["ADWXSATWX"],
+      abd: json["ABD"],
+      ofp: json["OFP"],
+      vaatca: json["VAATCA"],
+      tlr: json["TLR"],
+      dismap: json["DISMAP"],
+      crewinfo: json["CREWINFO"],
+      arptnotam: json["ARPTNOTAM"],
+      adwxsigwx: json["ADWXSIGWX"],
+      wxsigwx: json["WXSIGWX"],
+      sfc: json["SFC"],
+    );
+  }
+
+  Map<String, dynamic> toJson() => {
+        "RAIM": raim,
+        "CDA": cda,
+        "VERTPROF": vertprof,
+        "IWFR": iwfr,
+        "UAD": uad,
+        "DMS": dms,
+        "DISP": disp,
+        "ATS": ats,
+        "ADDWXNOTAM": addwxnotam,
+        "FIRNOTAM": firnotam,
+        "WXNOTAM": wxnotam,
+        "ADVAA": advaa,
+        "WXSATWX": wxsatwx,
+        "ADMTRTAF": admtrtaf,
+        "NOTAM": notam,
+        "SIGWXROUTE": sigwxroute,
+        "ADSIGMETS": adsigmets,
+        "RADAR": radar,
+        "ADWXSATWX": adwxsatwx,
+        "ABD": abd,
+        "OFP": ofp,
+        "VAATCA": vaatca,
+        "TLR": tlr,
+        "DISMAP": dismap,
+        "CREWINFO": crewinfo,
+        "ARPTNOTAM": arptnotam,
+        "ADWXSIGWX": adwxsigwx,
+        "WXSIGWX": wxsigwx,
+        "SFC": sfc,
+      };
+
+  @override
+  String toString() {
+    return "$raim, $cda, $vertprof, $iwfr, $uad, $dms, $disp, $ats, $addwxnotam, $firnotam, $wxnotam, $advaa, $wxsatwx, $admtrtaf, $notam, $sigwxroute, $adsigmets, $radar, $adwxsatwx, $abd, $ofp, $vaatca, $tlr, $dismap, $crewinfo, $arptnotam, $adwxsigwx, $wxsigwx, $sfc, ";
+  }
+}

+ 223 - 0
lib/lido/view/lido_form.dart

@@ -0,0 +1,223 @@
+// ignore_for_file: use_build_context_synchronously
+
+import 'package:flutter/material.dart';
+import 'package:flutter_riverpod/flutter_riverpod.dart';
+import 'package:gap/gap.dart';
+import 'package:go_router/go_router.dart';
+import 'package:hive_flutter/hive_flutter.dart';
+import 'package:tp5/core/basic_page.dart';
+import 'package:tp5/core/core.dart';
+import 'package:tp5/core/utils.dart';
+import 'package:tp5/lido/lido_api.dart';
+
+class LidoForm extends ConsumerStatefulWidget {
+  const LidoForm({super.key});
+
+  @override
+  createState() => _LidoFormState();
+}
+
+class _LidoFormState extends ConsumerState<LidoForm> {
+  final _formKey = GlobalKey<FormState>();
+  AutovalidateMode? _autovalidateMode;
+  bool _isSubmitting = false;
+
+  final _userCtrl = TextEditingController()
+    ..text = Hive.box("profile").get("lido_user") ?? "";
+  final _passCtrl = TextEditingController()
+    ..text = Hive.box("profile").get("lido_pass") ?? "";
+
+  @override
+  Widget build(BuildContext context) {
+    return BasicPage(
+      title: "Lido / Connect",
+      body: SingleChildScrollView(
+        child: Form(
+          key: _formKey,
+          autovalidateMode: _autovalidateMode,
+          child: Column(
+            children: <Widget>[
+              const Padding(
+                padding: EdgeInsets.all(20),
+                child: Center(
+                  child: Text("Lido Connect", style: TextStyle(fontSize: 40)),
+                ),
+              ),
+              Padding(
+                //padding: const EdgeInsets.only(left:15.0,right: 15.0,top:0,bottom: 0),
+                padding: const EdgeInsets.symmetric(horizontal: 15),
+                child: TextFormField(
+                  controller: _userCtrl,
+                  readOnly: _isSubmitting,
+                  validator: (value) {
+                    if (value == null || value.isEmpty) {
+                      return 'Please enter your Lido username';
+                    }
+
+                    return null;
+                  },
+                  decoration: const InputDecoration(
+                      border: OutlineInputBorder(),
+                      labelText: 'Lido Username',
+                      hintText: 'matricule'),
+                ),
+              ),
+              Padding(
+                padding: const EdgeInsets.only(
+                    left: 15.0, right: 15.0, top: 15, bottom: 0),
+                //padding: EdgeInsets.symmetric(horizontal: 15),
+                child: TextFormField(
+                  controller: _passCtrl,
+                  readOnly: _isSubmitting,
+                  obscureText: true,
+                  validator: (value) {
+                    if (value == null || value.isEmpty) {
+                      return 'Please enter your Lido password';
+                    }
+
+                    return null;
+                  },
+                  decoration: const InputDecoration(
+                      border: OutlineInputBorder(),
+                      labelText: 'Lido Password',
+                      hintText: 'Enter Lido Password'),
+                ),
+              ),
+              SizedBox(
+                //height: 65,
+                width: 360,
+                child: Padding(
+                  padding: const EdgeInsets.only(top: 20.0),
+                  child: ElevatedButton(
+                    style: ElevatedButton.styleFrom(
+                        backgroundColor: Colors.green[900]),
+                    onPressed: _isSubmitting
+                        ? null
+                        : () {
+                            if (_formKey.currentState!.validate()) {
+                              _login();
+                            } else {
+                              setState(() {
+                                _autovalidateMode = AutovalidateMode.always;
+                              });
+                            }
+                          },
+                    child: Padding(
+                      padding: const EdgeInsets.all(8.0),
+                      child: _isSubmitting
+                          ? const CircularProgressIndicator()
+                          : const Text(
+                              'Connect to Lido',
+                              style:
+                                  TextStyle(color: Colors.white, fontSize: 20),
+                            ),
+                    ),
+                  ),
+                ),
+              ),
+              const SizedBox(
+                height: 20,
+              ),
+              Center(
+                child: Row(
+                  children: [
+                    const Padding(
+                      padding: EdgeInsets.only(left: 62),
+                      child: Text('Forgot your login details? '),
+                    ),
+                    Padding(
+                      padding: const EdgeInsets.only(left: 1.0),
+                      child: InkWell(
+                          onTap: () {},
+                          child: const Text(
+                            'Contact your company \nLido administrator.',
+                            style: TextStyle(fontSize: 14, color: Colors.blue),
+                          )),
+                    ),
+                  ],
+                ),
+              ),
+              const SizedBox(
+                height: 50,
+              ),
+              const Gap(50),
+              ElevatedButton(
+                style:
+                    ElevatedButton.styleFrom(backgroundColor: Colors.red[900]),
+                onPressed: () {
+                  AlertDialog(
+                      title: const Text('Reset Lido'),
+                      content:
+                          // ack["data"]?["msg"] ??
+                          const Text(
+                              'Are you sure, you want to reset all Lido Data?'),
+                      actions: [
+                        TextButton(
+                            child: const Text("Yes, I do"),
+                            onPressed: () async {
+                              await Hive.box("lido").clear();
+                              context.showSuccess(
+                                  "Lido Data cleared, try to login again.");
+                              context.pop();
+                            }),
+                        TextButton(
+                            child: const Text("No, don't do it"),
+                            onPressed: () {
+                              context.pop();
+                            })
+                      ]).show(context);
+                },
+                child: const Text("Reset all Lido data"),
+              )
+            ],
+          ),
+        ),
+      ),
+    );
+  }
+
+  Future<void> _login() async {
+    try {
+      setState(() {
+        _isSubmitting = true;
+      });
+
+//check auth
+      final Map out = await ref
+          .read(lidoapiProvider)
+          .login(user: _userCtrl.text, pass: _passCtrl.text);
+
+      setState(() {
+        _isSubmitting = false;
+      });
+      print("lidoform: login: out= $out");
+      if (out["data"]?["logged"] == true) {
+        await Hive.box("profile").put("lido_user", _userCtrl.text);
+        await Hive.box("profile").put("lido_pass", _passCtrl.text);
+
+        context.showSuccess(
+            "Your Credentials are correct and saved. Now you're connected to Lido!!!");
+
+        if (mounted) {
+          context.push("/lido/list");
+        }
+      } else if (out["error"] != "") {
+        context.showError("Unable to connect to Lido!!!\n${out["error"]}");
+        if (((Hive.box("profile").get("lido_user") ?? "") != "") &&
+            ((Hive.box("profile").get("lido_pass") ?? "") != "")) {
+          // context.push("/lido/list");
+        }
+      } else if (out["data"]?["logged"] == false) {
+        context.showError(
+            "Your Credentials are incorrect. You're disconnected from Lido!!! Try other credentials.");
+      }
+    } catch (e) {
+      setState(() {
+        _isSubmitting = false;
+      });
+
+      // print(e);
+      context.showError(e.toString());
+    }
+  }
+}

+ 443 - 0
lib/lido/view/lidolist_page.dart

@@ -0,0 +1,443 @@
+import 'dart:io';
+
+import 'package:flutter/material.dart';
+import 'package:flutter_riverpod/flutter_riverpod.dart';
+import 'package:gap/gap.dart';
+import 'package:go_router/go_router.dart';
+import 'package:jiffy/jiffy.dart';
+import 'package:path_provider/path_provider.dart';
+import 'package:scroll_to_index/scroll_to_index.dart';
+import 'package:tp5/core/basic_page.dart';
+import 'package:tp5/core/utils.dart';
+import 'package:tp5/lido/lido_api.dart';
+import 'package:tp5/lido/model/Lidoapi_list.dart';
+import 'package:tp5/lido/w_lidoflt.dart';
+import 'package:tp5/pdf/pdf_page.dart';
+
+class LidolistPage extends ConsumerStatefulWidget {
+  const LidolistPage({super.key, required this.params});
+  final LidolistPageParams params;
+
+  @override
+  ConsumerState<ConsumerStatefulWidget> createState() => _LidolistPageState();
+}
+
+class _LidolistPageState extends ConsumerState<LidolistPage> {
+  final bottomnavstyle = ElevatedButton.styleFrom(
+      shape: RoundedRectangleBorder(
+        borderRadius: BorderRadius.circular(5.0),
+      ),
+      backgroundColor:
+          const Color.fromARGB(255, 0, 36, 53) //elevated btton background color
+      );
+  final AutoScrollController _scrollCtrl = AutoScrollController();
+  List<LidoapiList> legs = <LidoapiList>[];
+
+  _scrollToDate({Jiffy? date}) {
+    final jdate = date ?? Jiffy.now().toUtc();
+    bool found = false;
+    int id = 0;
+    for (var leg in legs) {
+      if (Jiffy.parseFromMillisecondsSinceEpoch(
+              leg.leg?.estimatedDepartureTime ?? 0,
+              isUtc: true)
+          .isSameOrAfter(jdate.subtract(hours: 1))) {
+        found = true;
+        break;
+      }
+      id++;
+    }
+    Future.delayed(const Duration(milliseconds: 100)).then((value) {
+      if (found && mounted && _scrollCtrl.hasClients) {
+        _scrollCtrl.scrollToIndex(id,
+            duration: const Duration(milliseconds: 1300),
+            preferPosition: AutoScrollPosition.begin);
+      }
+    });
+  }
+
+  @override
+  void initState() {
+    Future.delayed(Duration.zero).then((x) async {
+      // print(await ref
+      //     .read(lidoapiProvider)
+      //     .login(user: "TAR13176", pass: "FaresWiem08_a"));
+      ref.read(isLoadingProvider.notifier).state = true;
+
+      final out = await ref.read(lidoapiProvider).list(
+            start: widget.params.datestart,
+            end: widget.params.dateend,
+            dep: widget.params.dep ?? "",
+            des: widget.params.des ?? "",
+            al: widget.params.al ?? "",
+            fnum: widget.params.fnum ?? "",
+          );
+
+      if ((out["error"] == null && out["data"] is List) ||
+          (out["cache"] != null)) {
+        final data =
+            (out["error"] == null ? out["data"] : (out["cache"])["data"]);
+        legs.clear();
+        for (var e in data ?? []) {
+          //print(e);
+          legs.add(LidoapiList.fromJson(e));
+        }
+      } else {
+        context.showError(out["error"]);
+      }
+      setState(() {});
+      ref.read(isLoadingProvider.notifier).state = false;
+      _scrollToDate();
+      //print("Lidolistpage: out= $out");
+      // print((LidoapiList.fromJson(out["data"][0])));
+      // writeStringToFile("${out["data"][0]}");
+    });
+    super.initState();
+  }
+
+  Future<void> writeStringToFile(String content) async {
+    try {
+      final directory = await getApplicationDocumentsDirectory();
+      final file = File('${directory.path}/lidoapilist.txt');
+
+      // Write the content to the file
+      await file.writeAsString(content);
+
+      print('Content written to file: ${file.path}');
+    } catch (e) {
+      print('Error writing to file: $e');
+    }
+  }
+
+  @override
+  Widget build(BuildContext context) {
+    // final now = ref.watch(clockProvider);
+
+    return BasicPage(
+      actions: [
+        IconButton(
+            onPressed: () => context.push("/lido/settings"),
+            icon: const Icon(Icons.settings)),
+        const Gap(10)
+      ],
+      bottomNavigationBar: Container(
+        padding: const EdgeInsets.all(8),
+        // color: Colors.black,
+        decoration: BoxDecoration(
+            gradient: LinearGradient(
+          begin: Alignment.topCenter,
+          end: Alignment.bottomCenter,
+          colors: [
+            Colors.grey[700]!,
+            Colors.black,
+          ],
+        )),
+        child: Row(
+          mainAxisAlignment: MainAxisAlignment.spaceAround,
+          children: [
+            ElevatedButton.icon(
+              onPressed: () {
+                _changeDay(context);
+              },
+              icon: const Icon(
+                  Icons.calendar_month), //icon data for elevated button
+              label: const Text("Change\n  Day"), //label text
+              style: bottomnavstyle,
+            ),
+            const Gap(10),
+            ElevatedButton.icon(
+              onPressed: () {
+                _searchFlights(context);
+              },
+              icon: const Icon(Icons.manage_search),
+              label: const Text("Search\nFlights"),
+              style: bottomnavstyle,
+            ),
+            const Gap(10), //icon data for elevated button
+          ],
+        ),
+      ),
+      title: "Lido / List",
+      body: ListView.builder(
+        itemCount: legs.length,
+        itemBuilder: (_, index) => AutoScrollTag(
+            key: ValueKey(index),
+            controller: _scrollCtrl,
+            index: index,
+            child: _getItem(_, index)),
+        shrinkWrap: true,
+        controller: _scrollCtrl,
+      ),
+    );
+  }
+
+  int? _loadingOFP;
+
+  _getItem(BuildContext buildContext, int index) {
+    return InkWell(
+        onTap: () async {
+          final legid = legs[index].briefingId ?? "";
+          if (_loadingOFP == null) {
+            setState(() {
+              _loadingOFP = index;
+            });
+            final ofp = await ref.read(lidoapiProvider).ofppdf(legid: legid);
+            setState(() {
+              _loadingOFP = null;
+            });
+
+            if (((ofp["data"] is Map) &&
+                    (ofp["data"]?["downloaded"] ?? false) == true) ||
+                (ofp["cache"] != null)) {
+              context.push("/pdf",
+                  extra: PdfPageParams(
+                      file: ofp["cache"] ?? ofp["data"]?["fileid"] ?? "",
+                      title: legid,
+                      initialZoom: 1));
+            } else {
+              context.showError("Cannot download PDF File !!!");
+            }
+          }
+        },
+        child:
+            // Text("${legs[index].leg?.departureAirportIcao} ${legs[index].leg?.destinationAirportIcao} ${legs[index].leg?.flightNumber} ${Jiffy.parseFromMillisecondsSinceEpoch(legs[index].leg?.estimatedDepartureTime ?? 0, isUtc: true).format(pattern: "ddMMMyy HHmm")} ${Jiffy.parseFromMillisecondsSinceEpoch(legs[index].leg?.scheduledDepartureTime ?? 0, isUtc: true).format(pattern: "ddMMMyy HHmm")} ${legs[index].leg?.fuel?.blockFuel}"),
+            Row(children: [
+          if (_loadingOFP == index) const CircularProgressIndicator(),
+          Expanded(child: WLidoflt(lidoapilist: legs[index]))
+        ]));
+  }
+
+  void _changeDay(BuildContext context) {}
+
+  TextEditingController ctrldep = TextEditingController();
+  TextEditingController ctrldes = TextEditingController();
+  TextEditingController ctrlairline = TextEditingController();
+  TextEditingController ctrlfnum = TextEditingController();
+  TextEditingController ctrlstartdate = TextEditingController();
+  TextEditingController ctrlenddate = TextEditingController();
+
+  void _searchFlights(xcontext) async {
+    ref.read(isLoadingProvider.notifier).state = true;
+    ref.read(isLoadingProvider.notifier).state = false;
+    ctrldep.text = widget.params.dep ?? "";
+    ctrldes.text = widget.params.des ?? "";
+    ctrlairline.text = widget.params.al ?? "";
+    ctrlfnum.text = widget.params.fnum ?? "";
+    ctrlstartdate.text =
+        widget.params.datestart?.format(pattern: "ddMMMyy") ?? "";
+    ctrlenddate.text = widget.params.dateend?.format(pattern: "ddMMMyy") ?? "";
+
+    final res = await showModalBottomSheet(
+        context: context,
+        builder: (context) => _searchFilter(xcontext, null, null));
+    if (res is LidolistPageParams) context.push("/lido/list", extra: res);
+  }
+
+  Widget _searchFilter(BuildContext context, DateTime? min, DateTime? max) {
+    min = min ?? DateTime.now().subtract(const Duration(days: 7));
+    max = max ?? DateTime.now().add(const Duration(days: 7));
+    return Container(
+      padding: const EdgeInsets.all(20),
+      child: Column(
+        mainAxisSize: MainAxisSize.min,
+        children: [
+          Row(
+            children: [
+              Expanded(
+                child: TextField(
+                  decoration:
+                      const InputDecoration(labelText: "Departure Airport"),
+                  maxLength: 3, // Set maximum length
+                  controller: ctrldep,
+                ),
+              ),
+              const SizedBox(width: 10),
+              Expanded(
+                child: TextField(
+                  decoration:
+                      const InputDecoration(labelText: "Arrival Airport"),
+                  maxLength: 3, // Set maximum length
+                  controller: ctrldes,
+                ),
+              ),
+            ],
+          ),
+          const SizedBox(height: 15),
+          Row(
+            children: [
+              Expanded(
+                child: TextField(
+                  controller: ctrlairline,
+
+                  decoration:
+                      const InputDecoration(labelText: "Airline IATA code"),
+                  maxLength: 2, // Set maximum length
+                ),
+              ),
+              const SizedBox(width: 10),
+              Expanded(
+                child: TextField(
+                  controller: ctrlfnum,
+
+                  decoration: const InputDecoration(labelText: "Flight number"),
+                  maxLength: 6, // Set maximum length
+                ),
+              ),
+            ],
+          ),
+          const SizedBox(height: 15),
+          Row(
+            children: [
+              Expanded(
+                child: TextField(
+                    decoration:
+                        const InputDecoration(labelText: "Starting date"),
+                    controller: ctrlstartdate,
+                    readOnly:
+                        true, //set it true, so that user will not able to edit text
+                    onTap: () async {
+                      DateTime? pickedDate = await showDatePicker(
+                          context: context,
+                          initialDate: DateTime.now().toUtc(),
+                          firstDate:
+                              min!, //DateTime.now () - not to allow to choose before today.
+                          lastDate: max!);
+                      if (pickedDate != null) {
+                        String formattedDate =
+                            Jiffy.parseFromDateTime(pickedDate).format(
+                                pattern:
+                                    "ddMMMyy"); //formatted date output using intl package => 2021-03-16
+                        setState(() {
+                          ctrlstartdate.text = formattedDate;
+                          if (ctrlenddate.text == "" ||
+                              Jiffy.parseFromDateTime(pickedDate).isAfter(
+                                  Jiffy.parse(ctrlenddate.text,
+                                      pattern: "ddMMMyy", isUtc: true))) {
+                            ctrlenddate.text = formattedDate;
+                          }
+                        });
+                      } else {
+                        print("Date is not selected");
+                      }
+                    }),
+              ),
+              const SizedBox(width: 10),
+              Expanded(
+                child: TextField(
+                    decoration: const InputDecoration(labelText: "Ending date"),
+                    controller: ctrlenddate,
+                    readOnly:
+                        true, //set it true, so that user will not able to edit text
+                    onTap: () async {
+                      DateTime? pickedDate = await showDatePicker(
+                          context: context,
+                          initialDate: DateTime.now().toUtc(),
+                          firstDate: min!,
+                          lastDate: max!);
+                      if (pickedDate != null) {
+                        String formattedDate =
+                            Jiffy.parseFromDateTime(pickedDate)
+                                .format(pattern: "ddMMMyy");
+                        setState(() {
+                          ctrlenddate.text = formattedDate;
+                          if (ctrlstartdate.text == "" ||
+                              Jiffy.parseFromDateTime(pickedDate).isBefore(
+                                  Jiffy.parse(ctrlstartdate.text,
+                                      pattern: "ddMMMyy", isUtc: true))) {
+                            ctrlstartdate.text = formattedDate;
+                          }
+                        });
+                      } else {
+                        print("Date is not selected");
+                      }
+                    }),
+              ),
+            ],
+          ),
+          const SizedBox(height: 35),
+          SizedBox(
+            width: 360,
+            child: ElevatedButton(
+              onPressed: () async =>
+                  // await context.push("/lido/list",
+                  //     extra: LidolistPageParams(
+                  //       dep: ctrldep.text.toUpperCase(),
+                  //       des: ctrldes.text.toUpperCase(),
+                  //       al: ctrlairline.text.toUpperCase(),
+                  //       fnum: ctrlfnum.text,
+                  //       datestart: ctrlstartdate.text,
+                  //       dateend: ctrlenddate.text,
+                  //     )),
+                  Navigator.pop(
+                      context,
+                      LidolistPageParams(
+                        dep: ctrldep.text.toUpperCase(),
+                        des: ctrldes.text.toUpperCase(),
+                        al: ctrlairline.text.toUpperCase(),
+                        fnum: ctrlfnum.text,
+                        datestart: ctrlstartdate.text == ""
+                            ? null
+                            : Jiffy.parse(ctrlstartdate.text,
+                                pattern: "ddMMMyy", isUtc: true),
+                        dateend: ctrlenddate.text == ""
+                            ? null
+                            : Jiffy.parse(ctrlenddate.text,
+                                pattern: "ddMMMyy", isUtc: true),
+                      )), // Close the bottom sheet
+              style: ElevatedButton.styleFrom(
+                backgroundColor: Colors.green, // Set button color to green
+                shape: RoundedRectangleBorder(
+                  borderRadius:
+                      BorderRadius.circular(15), // Add rounded corners
+                ),
+                padding:
+                    const EdgeInsets.symmetric(horizontal: 20, vertical: 15),
+              ),
+              child: const Text(
+                'Search Flights',
+                style: TextStyle(fontSize: 18, color: Colors.white),
+              ),
+            ),
+          ),
+        ],
+      ),
+    );
+  }
+
+  _titleInfo(String? title, String? info,
+          {double sizetitle = 10,
+          double sizeinfo = 16,
+          Color color = Colors.blueGrey}) =>
+      Column(
+        children: [
+          Text(
+            title ?? "---",
+            style: TextStyle(color: Colors.grey, fontSize: sizetitle),
+          ),
+          Text(info ?? "---",
+              style: TextStyle(color: color, fontSize: sizeinfo)),
+        ],
+      );
+}
+
+class LidolistPageParams {
+  const LidolistPageParams({
+    this.dateend,
+    this.datestart,
+    this.dep,
+    this.des,
+    this.al,
+    this.fnum,
+    this.lidouser,
+    this.lidopass,
+  });
+
+  final Jiffy? dateend;
+  final Jiffy? datestart;
+  final String? dep;
+  final String? des;
+  final String? al;
+  final String? fnum;
+  final String? lidouser;
+  final String? lidopass;
+}

+ 108 - 0
lib/lido/view/lidoofp_page.dart

@@ -0,0 +1,108 @@
+import 'package:flutter/material.dart';
+import 'package:flutter_riverpod/flutter_riverpod.dart';
+import 'package:tp5/fltinfo/widget/w_cadre.dart';
+import 'package:tp5/lido/lido_api.dart';
+import 'package:tp5/lido/model/Lidoapi_ofp.dart';
+
+class LidoofpPage extends ConsumerStatefulWidget {
+  const LidoofpPage({super.key, required this.params});
+  final LidoofpPageParams params;
+
+  @override
+  LidoofpPageState createState() => LidoofpPageState();
+}
+
+class LidoofpPageState extends ConsumerState<LidoofpPage> {
+  @override
+  void initState() {
+    super.initState();
+  }
+
+  Map<String, dynamic> ofpcat = {};
+  Map<String, String> ofpcattype = {};
+
+  String? _getCatName(String? cat) {
+    var json = widget.params.lidoofp?.categoriesNames?.toJson() ?? {};
+    json.addAll({
+      "WXSIGWX": "Significant WX",
+      "CREWINFO": "Crew Information",
+      "IWFR": "Weather",
+      "NOTAM": "NOTAM",
+      "ATS": "ATC Flight Plan",
+      "DISP": "Dispatch Information",
+      "VERTPROF": "Vertical Profile",
+      "DMS": "Additional Docs",
+      "ABD": "Additional Briefing Documents",
+      "UAD": "UAD Maps",
+      "DISMAP": "Dispatcher Maps",
+      "OFP": "OFP",
+      "WXNOTAM": "WX/NOTAM",
+      "ADDWXNOTAM": "WX/NOTAM",
+      "WXSATWX": "Satellite WX",
+      "RAIM": "RAIM"
+    });
+    if (json.containsKey(cat ?? "")) {
+      return json[cat];
+    }
+    return null;
+  }
+
+  @override
+  Widget build(BuildContext context) {
+    final params = widget.params;
+
+    // log(params.lidoofp?.briefingPackages.first.categories.map((e)=>e.name).toString() ?? "null",
+    //     name: "LidoofpPage");
+    return Scaffold(
+      appBar: AppBar(
+          title: Text(params.title ??
+              params.lidoofp?.briefingPackages.firstOrNull?.leg.first
+                  .legidentifier ??
+              "---")),
+      body: params.lidoofp == null
+          ? const Text("No OFP found")
+          : ListView(
+              children: params.lidoofp?.categories
+                      .map((cat) => Padding(
+                          padding: const EdgeInsets.symmetric(
+                              vertical: 10, horizontal: 5),
+                          child: WCadre(
+                              title: "${_getCatName(cat.name) ?? {cat.name}}",
+                              child: InkWell(
+                                  onTap: () async {
+                                    final link =
+                                        cat.documents.first.links?.self?.href ??
+                                            cat.links?.self?.href ??
+                                            "nolink";
+                                    print(
+                                        "lidoofppage: build: onTap: link: $link");
+                                    final out = await ref
+                                        .read(lidoapiProvider)
+                                        .getDoc(link,
+                                            mediaType:
+                                                cat.documents.first.mediaType);
+                                    setState(() {
+                                      ofpcat[cat.name ?? "xxxx"] = out;
+                                      ofpcattype[cat.name ?? "xxxx"] =
+                                          cat.documents.first.mediaType ?? "";
+                                    }); //print(out);
+                                  },
+                                  child: ofpcat.containsKey(cat.name ?? "xxx")
+                                      ? Text(ofpcat[cat.name ?? "xxxx"]["data"]
+                                          .toString())
+                                      : const Text("Tap to load content...")
+                                  // Text(
+                                  //     "${cat.name}: ${_getCatName(cat.name)}\n    docs: ${cat.documents.first.mediaType} ${cat.documents.first.links?.self}\n    link: ${cat.links?.self}")
+
+                                  ))))
+                      .toList() ??
+                  [const Text("No categories found on OFP")]),
+    );
+  }
+}
+
+class LidoofpPageParams {
+  const LidoofpPageParams({this.lidoofp, this.title});
+  final String? title;
+  final LidoapiOfp? lidoofp;
+}

+ 234 - 0
lib/lido/w_lidoflt.dart

@@ -0,0 +1,234 @@
+import 'package:flutter/material.dart';
+import 'package:gap/gap.dart';
+import 'package:jiffy/jiffy.dart';
+import 'package:tp5/core/utils.dart';
+import 'package:tp5/lido/model/Lidoapi_list.dart';
+import 'package:tp5/roster/widgets/w_citypair.dart';
+import 'package:tp5/roster/widgets/w_fnum.dart';
+import 'package:tp5/roster/widgets/w_hour.dart';
+import 'package:tp5/widgets/my_row.dart';
+
+class WLidoflt extends StatelessWidget {
+  const WLidoflt(
+      {super.key, required this.lidoapilist, this.onTap, this.iata = true});
+  final LidoapiList lidoapilist;
+  final bool iata;
+
+  final dynamic onTap;
+  _estDepTime() => Column(
+        children: [
+          Text(
+            Jiffy.parseFromMillisecondsSinceEpoch(
+                    lidoapilist.leg?.estimatedDepartureTime ?? 0,
+                    isUtc: true)
+                .format(pattern: "ddMMMyy"),
+            style: const TextStyle(fontSize: 12, color: Colors.grey),
+          ),
+          WHour(
+              jiffy: Jiffy.parseFromMillisecondsSinceEpoch(
+                  lidoapilist.leg?.estimatedDepartureTime ?? 0,
+                  isUtc: true)),
+        ],
+      );
+
+  _fnumCitypair() => Row(
+        children: [
+          WFnum(
+              al: iata
+                  ? (lidoapilist.leg?.commercialAirlineIata ?? "++")
+                  : (lidoapilist.leg?.commercialAirlineIcao ?? "+++"),
+              fnum: lidoapilist.leg?.flightNumber ?? "---"),
+          const Gap(10),
+          WCitypair(
+            iata1: iata
+                ? (lidoapilist.leg?.departureAirport ?? "---")
+                : (lidoapilist.leg?.departureAirportIcao ?? "----"),
+            iata2: iata
+                ? (lidoapilist.leg?.destinationAirport ?? "---")
+                : (lidoapilist.leg?.destinationAirportIcao ?? "----"),
+            size: 14,
+          )
+        ],
+      );
+
+  _aircraft() => Row(children: [
+        Text(lidoapilist.leg?.aircraftDetails?.aircraftIcaoType ?? "---",
+            style: const TextStyle(
+                color: Colors.grey, fontWeight: FontWeight.w600)),
+        const Gap(10),
+        Text(
+          lidoapilist.leg?.aircraftDetails?.aircraftRegistration ?? "---",
+          style: const TextStyle(fontSize: 14, color: Colors.yellow),
+        ),
+      ]);
+
+  _schedCtot() => Row(
+        children: [
+          if (lidoapilist.leg?.estimatedDepartureTime !=
+              lidoapilist.leg?.scheduledDepartureTime) ...[
+            const Text(
+              "Sched",
+              style: TextStyle(color: Colors.white38, fontSize: 10),
+            ),
+            const Gap(5),
+            WHour(
+              jiffy: Jiffy.parseFromMillisecondsSinceEpoch(
+                  lidoapilist.leg?.scheduledDepartureTime ?? 0,
+                  isUtc: true),
+              size: 12,
+              color: Colors.grey[500],
+            ),
+            const Gap(10)
+          ],
+          if (lidoapilist.leg?.ctot != null) ...[
+            const Text(
+              "CTOT ",
+              style: TextStyle(color: Colors.white24, fontSize: 10),
+            ),
+            WHour(
+              jiffy: Jiffy.parseFromMillisecondsSinceEpoch(
+                  lidoapilist.leg?.ctot ?? 0,
+                  isUtc: true),
+              size: 12,
+              color: Colors.orange,
+            )
+          ]
+        ],
+      );
+
+  _fuel() => Column(crossAxisAlignment: CrossAxisAlignment.end, children: [
+        Text(
+          "ZFW ${kilo2ton(lidoapilist.leg?.weight?.plannedZfw)}",
+          style: const TextStyle(color: Colors.grey),
+        ),
+        Column(
+          children: [
+            Text(
+              "Fuel  ${kilo2ton(lidoapilist.leg?.fuel?.blockFuel)}",
+              style: const TextStyle(
+                  color: Colors.cyan, fontWeight: FontWeight.w700),
+            ),
+            Text(
+              "Max xtra +${kilo2ton(lidoapilist.leg?.fuel?.possibleExtra, ceil: true)}",
+              style: const TextStyle(color: Colors.amber, fontSize: 10),
+            ),
+          ],
+        ),
+        Text(
+          "Trip ${kilo2ton(lidoapilist.leg?.fuel?.tripFuel)} / ${Duration(minutes: lidoapilist.leg?.fuel?.totalTripTimeMinutes ?? 0).tohhmm}",
+          style: const TextStyle(
+              color: Colors.green, fontWeight: FontWeight.w600, fontSize: 10),
+        ),
+        // Text("Trip  ${kilo2ton(lidoapilist.leg?.fuel?.tripFuel)}"),
+      ]);
+  _ofpVer() => Column(crossAxisAlignment: CrossAxisAlignment.center, children: [
+        Text(
+          "OFP ${lidoapilist.leg?.ofpNumber}",
+          style: const TextStyle(
+              color: Colors.white54, fontWeight: FontWeight.w600),
+        ),
+        Text(
+          // ignore: unnecessary_string_interpolations
+          "${Jiffy.parseFromMillisecondsSinceEpoch(lidoapilist.lastGenerated ?? 0, isUtc: true).format(pattern: "ddMMMyy")}",
+          style: const TextStyle(color: Colors.white, fontSize: 12),
+        ),
+        Text(
+          // ignore: unnecessary_string_interpolations
+          "${Jiffy.parseFromMillisecondsSinceEpoch(lidoapilist.lastGenerated ?? 0, isUtc: true).format(pattern: "HH:mm")}",
+          style: const TextStyle(color: Colors.white70, fontSize: 14),
+        ),
+      ]);
+  _crew() => Row(children: [
+        const Text("Crew: ",
+            style: TextStyle(fontSize: 10, color: Colors.white30)),
+        if (lidoapilist.leg?.crewMembers.isNotEmpty ?? false)
+          Text(
+            "${lidoapilist.leg?.crewMembers.map((e) => e.name?.capitalize())}",
+            style: const TextStyle(
+                color: Colors.white60,
+                fontWeight: FontWeight.w400,
+                fontSize: 12),
+          )
+        else
+          const Text("-----"),
+      ]);
+  _fuelOrder() => Row(
+        children: [
+          const Text("Fuel order: ",
+              style: TextStyle(fontSize: 10, color: Colors.white30)),
+          Text(
+            "${lidoapilist.latestFuelOrder["fuelOrder"]}",
+            style: const TextStyle(
+                color: Colors.white60,
+                fontWeight: FontWeight.w400,
+                fontSize: 12),
+          ),
+          Text(
+            " by ${lidoapilist.latestFuelOrder["source"]}",
+            style: const TextStyle(
+                color: Colors.white54,
+                fontWeight: FontWeight.w300,
+                fontSize: 12),
+          ),
+        ],
+      );
+  @override
+  Widget build(BuildContext context) {
+    return InkWell(
+      onTap: onTap,
+      child: Card(
+        color: Colors.grey[900],
+        shape: RoundedRectangleBorder(
+          borderRadius: BorderRadius.circular(6.0),
+        ),
+        elevation: 8.0,
+        margin: const EdgeInsets.symmetric(horizontal: 10.0, vertical: 6.0),
+        child: Padding(
+          padding: const EdgeInsets.all(8.0),
+          child: MyRow(crossAxisAlignment: CrossAxisAlignment.start, children: [
+            _estDepTime(),
+            const Gap(20),
+            Column(
+              children: [
+                Row(children: [
+                  Column(
+                    crossAxisAlignment: CrossAxisAlignment.start,
+                    children: [
+                      _fnumCitypair(),
+                      _aircraft(),
+                      _schedCtot(),
+                    ],
+                  ),
+                  const Gap(20),
+                  _fuel(),
+                  const Gap(20),
+                  _ofpVer(),
+                ]),
+                const Gap(5),
+                Row(
+                  crossAxisAlignment: CrossAxisAlignment.start,
+                  mainAxisAlignment: MainAxisAlignment.start,
+                  children: [
+                    _crew(),
+                    if (lidoapilist.latestFuelOrder != null) _fuelOrder(),
+                  ],
+                ),
+              ],
+            )
+          ]),
+        ),
+      ),
+    );
+  }
+
+  kilo2ton(int? k, {bool ceil = true}) {
+    if (k == null) return null;
+    const double conversionFactor = 0.001;
+    double tons = k * conversionFactor;
+    if (ceil) {
+      return "${double.parse(((tons * 10).ceilToDouble() / 10).toStringAsFixed(1))}T";
+    } else {
+      return "${double.parse(((tons * 10).floorToDouble() / 10).toStringAsFixed(1))}T";
+    }
+  }
+}

+ 102 - 0
lib/lido/w_lidoofp.dart

@@ -0,0 +1,102 @@
+import 'package:flutter/material.dart';
+import 'package:gap/gap.dart';
+import 'package:jiffy/jiffy.dart';
+import 'package:tp5/lido/model/Lidoapi_ofp.dart';
+import 'package:tp5/widgets/my_row.dart';
+
+class WLidoOfp extends StatelessWidget {
+  const WLidoOfp({super.key, required this.lidoapiofp, this.onTap});
+  final LidoapiOfp lidoapiofp;
+
+  final dynamic onTap;
+
+  Map<String, dynamic> get categories =>
+      lidoapiofp.categoriesNames?.toJson() ?? {};
+
+  @override
+  Widget build(BuildContext context) {
+    return InkWell(
+      onTap: onTap,
+      child: Column(children: [
+        ...lidoapiofp.briefingPackages.map((brief) => Card(
+              color: Colors.grey[900],
+              shape: RoundedRectangleBorder(
+                borderRadius: BorderRadius.circular(6.0),
+              ),
+              elevation: 8.0,
+              margin:
+                  const EdgeInsets.symmetric(horizontal: 10.0, vertical: 6.0),
+              child: Padding(
+                  padding: const EdgeInsets.all(8.0),
+                  child: Column(children: [
+                    MyRow(children: [
+                      ...brief.leg.map((leg) => Column(children: [
+                            MyRow(children: [
+                              const Text("Schedule:"),
+                              _titleInfo(
+                                  "Schedule",
+                                  "${Jiffy.parseFromMillisecondsSinceEpoch(leg.scheduledDepartureTime ?? 0).format(pattern: "Hm")}-${Jiffy.parseFromMillisecondsSinceEpoch(leg.scheduledTimeOfArrival ?? 0).format(pattern: "Hm")}",
+                                  Jiffy.parseFromMillisecondsSinceEpoch(
+                                          leg.scheduledDepartureTime ?? 0)
+                                      .format(pattern: "dd MMMyy")),
+                              const Gap(15),
+                              _titleInfo(
+                                  "Estimate",
+                                  "${Jiffy.parseFromMillisecondsSinceEpoch(leg.estimatedDepartureTime ?? 0).format(pattern: "Hm")}-${Jiffy.parseFromMillisecondsSinceEpoch(leg.estimatedTimeOfArrival ?? 0).format(pattern: "Hm")}",
+                                  Jiffy.parseFromMillisecondsSinceEpoch(
+                                          leg.estimatedDepartureTime ?? 0)
+                                      .format(pattern: "dd MMMyy")),
+                              const Gap(15),
+                              _titleInfo(
+                                  "CTOT",
+                                  Jiffy.parseFromMillisecondsSinceEpoch(
+                                          leg.ctot ?? 0)
+                                      .format(pattern: "Hm"),
+                                  Jiffy.parseFromMillisecondsSinceEpoch(
+                                          leg.ctot ?? 0)
+                                      .format(pattern: "dd MMMyy")),
+                            ]),
+                          ]))
+                    ]),
+                  ])),
+            ))
+      ]),
+    );
+  }
+
+  _titleInfo(String? title, String? info, String? secondary,
+          {double sizetitle = 10,
+          double sizeinfo = 16,
+          Color color = Colors.blueGrey,
+          bool bold = false}) =>
+      Column(
+        children: [
+          Text(
+            title ?? "---",
+            style: TextStyle(color: Colors.grey, fontSize: sizetitle),
+          ),
+          Text(info ?? "---",
+              style: TextStyle(
+                  color: color,
+                  fontSize: sizeinfo,
+                  fontWeight: bold ? FontWeight.bold : null)),
+          if (secondary != null)
+            Text(secondary == "" ? "---" : secondary,
+                style: TextStyle(
+                    color: color,
+                    fontSize: sizeinfo - 4,
+                    fontWeight: bold ? FontWeight.w700 : null)),
+        ],
+      );
+
+  kilo2ton(int? k, {bool ceil = true}) {
+    if (k == null) return null;
+    const double conversionFactor = 0.001;
+    double tons = k * conversionFactor;
+    if (ceil) {
+      return "${double.parse(((tons * 10).ceilToDouble() / 10).toStringAsFixed(1))}T";
+    } else {
+      return "${double.parse(((tons * 10).floorToDouble() / 10).toStringAsFixed(1))}T";
+    }
+  }
+}

+ 100 - 0
lib/main.dart

@@ -0,0 +1,100 @@
+import 'dart:developer';
+
+import 'package:flutter_riverpod/flutter_riverpod.dart';
+import 'package:permission_handler/permission_handler.dart';
+import 'package:tp5/core/my_theme.dart';
+import 'package:tp5/providers/airports.dart';
+import 'package:supabase_flutter/supabase_flutter.dart';
+import 'package:hive_flutter/hive_flutter.dart';
+import 'package:flutter/material.dart';
+import 'package:tp5/core/core.dart';
+import 'package:timezone/data/latest.dart' as tz;
+
+main() async {
+  WidgetsBinding widgetsBinding = WidgetsFlutterBinding.ensureInitialized();
+  // FlutterNativeSplash.preserve(widgetsBinding: widgetsBinding);
+
+  await Permission.mediaLibrary.onDeniedCallback(() {
+    // Your code
+  }).onGrantedCallback(() {
+    // Your code
+  }).onPermanentlyDeniedCallback(() {
+    // Your code
+  }).onRestrictedCallback(() {
+    // Your code
+  }).onLimitedCallback(() {
+    // Your code
+  }).onProvisionalCallback(() {
+    // Your code
+  }).request();
+
+  // await Permission.manageExternalStorage.onDeniedCallback(() {
+  //   // Your code
+  // }).onGrantedCallback(() {
+  //   // Your code
+  // }).onPermanentlyDeniedCallback(() {
+  //   // Your code
+  // }).onRestrictedCallback(() {
+  //   // Your code
+  // }).onLimitedCallback(() {
+  //   // Your code
+  // }).onProvisionalCallback(() {
+  //   // Your code
+  // }).request();
+
+  // await Permission.storage.onDeniedCallback(() {
+  //   // Your code
+  // }).onGrantedCallback(() {
+  //   // Your code
+  // }).onPermanentlyDeniedCallback(() {
+  //   // Your code
+  // }).onRestrictedCallback(() {
+  //   // Your code
+  // }).onLimitedCallback(() {
+  //   // Your code
+  // }).onProvisionalCallback(() {
+  //   // Your code
+  // }).request();
+
+  await Hive.initFlutter();
+  await Hive.openBox("crewlink");
+  await Hive.openBox("lido");
+  await Hive.openBox("settings");
+  await Hive.openBox("profile");
+
+  await PathTo().initialize();
+
+  await Airports.init();
+
+  tz.initializeTimeZones();
+
+  try {
+    Supabase.initialize(
+        url: 'https://baas.fares.cyou',
+        anonKey:
+            'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyAgCiAgICAicm9sZSI6ICJhbm9uIiwKICAgICJpc3MiOiAic3VwYWJhc2UtZGVtbyIsCiAgICAiaWF0IjogMTY0MTc2OTIwMCwKICAgICJleHAiOiAxNzk5NTM1NjAwCn0.dc_X5iR_VP_qT0zsiyj_I_OZ2T9FtRU2BBNWN8Bu4GE',
+        debug: true);
+  } catch (e) {
+    log("Supabase: $e");
+  }
+  // FlutterNativeSplash.remove();
+
+  runApp(const ProviderScope(child: MyApp()));
+}
+
+class MyApp extends ConsumerWidget {
+  const MyApp({super.key});
+
+  @override
+  Widget build(BuildContext context, WidgetRef ref) {
+    final routes = ref.read(routeProvider);
+    return MaterialApp.router(
+      title: 'Memories App',
+      debugShowCheckedModeBanner: false,
+      theme: myTheme(context, false),
+      darkTheme: myTheme(context, true),
+      themeMode: ref.watch(appThemeProvider) ? ThemeMode.dark : ThemeMode.light,
+      routerConfig: routes,
+    );
+  }
+}

+ 35 - 0
lib/onboarding/api/onboarding_repository.dart

@@ -0,0 +1,35 @@
+import 'package:riverpod_annotation/riverpod_annotation.dart';
+import 'package:supabase_flutter/supabase_flutter.dart';
+
+part 'onboarding_repository.g.dart';
+
+@riverpod
+OnboardingRepository onboardingRepository(OnboardingRepositoryRef _) =>
+    OnboardingRepository();
+
+class OnboardingRepository {
+  final _client = Supabase.instance.client;
+
+  Future<AuthResponse> signUp({
+    required String email,
+    required String password,
+    required String username,
+  }) async {
+    return _client.auth.signUp(
+      email: email,
+      password: password,
+      data: {'username': username},
+    );
+  }
+
+  Future<AuthResponse> verifyCode({
+    required String email,
+    required String code,
+  }) async {
+    return _client.auth.verifyOTP(
+      email: email,
+      token: code,
+      type: OtpType.signup,
+    );
+  }
+}

+ 27 - 0
lib/onboarding/api/onboarding_repository.g.dart

@@ -0,0 +1,27 @@
+// GENERATED CODE - DO NOT MODIFY BY HAND
+
+part of 'onboarding_repository.dart';
+
+// **************************************************************************
+// RiverpodGenerator
+// **************************************************************************
+
+String _$onboardingRepositoryHash() =>
+    r'21645c74071e67aecc651c4ff3cb1eb4740ea6b1';
+
+/// See also [onboardingRepository].
+@ProviderFor(onboardingRepository)
+final onboardingRepositoryProvider =
+    AutoDisposeProvider<OnboardingRepository>.internal(
+  onboardingRepository,
+  name: r'onboardingRepositoryProvider',
+  debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
+      ? null
+      : _$onboardingRepositoryHash,
+  dependencies: null,
+  allTransitiveDependencies: null,
+);
+
+typedef OnboardingRepositoryRef = AutoDisposeProviderRef<OnboardingRepository>;
+// ignore_for_file: type=lint
+// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member

+ 2 - 0
lib/onboarding/onboarding.dart

@@ -0,0 +1,2 @@
+export 'api/onboarding_repository.dart';
+export 'view/verification_page.dart';

+ 154 - 0
lib/onboarding/view/verification_page.dart

@@ -0,0 +1,154 @@
+// ignore_for_file: use_build_context_synchronously
+
+import 'package:flutter/material.dart';
+import 'package:flutter_riverpod/flutter_riverpod.dart';
+import 'package:go_router/go_router.dart';
+import 'package:tp5/core/core.dart';
+import 'package:tp5/onboarding/onboarding.dart';
+
+class VerificationPageParams {
+  const VerificationPageParams({
+    required this.email,
+    required this.password,
+    required this.username,
+  });
+
+  final String email;
+  final String password;
+  final String username;
+}
+
+class VerificationPage extends ConsumerStatefulWidget {
+  const VerificationPage({required this.params, super.key});
+
+  final VerificationPageParams params;
+
+  @override
+  ConsumerState<VerificationPage> createState() => _VerificationPageState();
+}
+
+class _VerificationPageState extends ConsumerState<VerificationPage> {
+  final _formKey = GlobalKey<FormState>();
+  AutovalidateMode? _autovalidateMode;
+  bool _isSubmitting = false;
+
+  final _codeCtrl = TextEditingController();
+
+  Future<void> _resendCode() async {
+    try {
+      setState(() {
+        _isSubmitting = true;
+      });
+
+      await ref.read(onboardingRepositoryProvider).signUp(
+            email: widget.params.email,
+            password: widget.params.password,
+            username: widget.params.username,
+          );
+
+      if (mounted) {
+        context.showAlert('Code resent');
+      }
+    } catch (e) {
+      context.showAlert(e.toString());
+    }
+
+    setState(() {
+      _isSubmitting = false;
+    });
+  }
+
+  Future<void> _verify() async {
+    try {
+      setState(() {
+        _isSubmitting = true;
+      });
+
+      await ref.read(onboardingRepositoryProvider).verifyCode(
+            email: widget.params.email,
+            code: _codeCtrl.text,
+          );
+
+      if (mounted) {
+        context.showAlert('Successfully signed up');
+
+        context.go('/');
+      }
+    } catch (e) {
+      setState(() {
+        _isSubmitting = false;
+      });
+
+      context.showAlert(e.toString());
+    }
+  }
+
+  @override
+  Widget build(BuildContext context) {
+    return Scaffold(
+      appBar: AppBar(
+        title: const Text('Verify Account'),
+      ),
+      body: Padding(
+        padding: const EdgeInsets.symmetric(
+          horizontal: 20,
+          vertical: 30,
+        ),
+        child: Form(
+          key: _formKey,
+          autovalidateMode: _autovalidateMode,
+          child: Column(
+            children: [
+              Text(
+                'Enter the verification code sent '
+                'to your email address ${widget.params.email}',
+              ),
+              const SizedBox(height: 30),
+              TextFormField(
+                controller: _codeCtrl,
+                readOnly: _isSubmitting,
+                decoration: const InputDecoration(
+                  labelText: 'Verification code',
+                  border: OutlineInputBorder(),
+                ),
+                validator: (value) {
+                  if (value == null || value.isEmpty) {
+                    return 'Missing the verification code';
+                  }
+
+                  return null;
+                },
+              ),
+              const SizedBox(height: 20),
+              SizedBox(
+                width: double.infinity,
+                child: OutlinedButton(
+                  onPressed: _isSubmitting ? null : _resendCode,
+                  child: const Text('Resend Code'),
+                ),
+              ),
+              const SizedBox(height: 10),
+              SizedBox(
+                width: double.infinity,
+                child: FilledButton(
+                  onPressed: _isSubmitting
+                      ? null
+                      : () {
+                          if (_formKey.currentState!.validate()) {
+                            _verify();
+                          } else {
+                            setState(() {
+                              _autovalidateMode = AutovalidateMode.always;
+                            });
+                          }
+                        },
+                  child: const Text('Submit'),
+                ),
+              ),
+            ],
+          ),
+        ),
+      ),
+    );
+  }
+}

+ 56 - 0
lib/pdf/pdf_page.dart

@@ -0,0 +1,56 @@
+import 'dart:developer';
+import 'dart:io';
+
+import 'package:flutter/material.dart';
+import 'package:syncfusion_flutter_pdfviewer/pdfviewer.dart';
+
+class PdfPage extends StatelessWidget {
+  PdfPage({super.key, required this.params});
+  final PdfPageParams params;
+  final GlobalKey<SfPdfViewerState> _pdfViewerKey = GlobalKey();
+  @override
+  Widget build(BuildContext context) {
+    log(params.file, name: "PdfPage");
+    return Scaffold(
+      appBar: AppBar(
+        title: Text(params.title),
+        actions: [
+          IconButton(
+              onPressed: () {
+                _pdfViewerKey.currentState?.openBookmarkView();
+              },
+              icon: Icon(Icons.bookmark_add)),
+        ],
+      ),
+      body: SfPdfViewer.file(
+        key: _pdfViewerKey,
+        File(params.file),
+        // canShowPageLoadingIndicator: true,
+        canShowScrollHead: true,
+        canShowScrollStatus: true,
+        enableDoubleTapZooming: true,
+        initialZoomLevel: params.initialZoom,
+        // maxZoomLevel: 6,
+      ),
+      bottomNavigationBar: (params.bottom == null)
+          ? null
+          : Padding(
+              padding: const EdgeInsets.all(8.0),
+              child: params.bottom,
+            ),
+    );
+  }
+}
+
+class PdfPageParams {
+  const PdfPageParams(
+      {required this.file,
+      required this.title,
+      this.bottom,
+      this.initialZoom = 3});
+  final String title;
+  final String file;
+  final Widget? bottom;
+
+  final double initialZoom;
+}

+ 74 - 0
lib/providers/airports.dart

@@ -0,0 +1,74 @@
+import 'package:collection/collection.dart';
+import 'package:flutter/services.dart';
+//import 'package:csv/csv.dart';
+
+class Airport {
+  String code;
+  String timezoneid;
+  String name;
+  String citycode;
+  String countryid;
+  String location;
+  String elevation;
+  String url;
+  String icao;
+  String city;
+  String county;
+  String state;
+  Airport(
+      this.code,
+      this.timezoneid,
+      this.name,
+      this.citycode,
+      this.countryid,
+      this.location,
+      this.elevation,
+      this.url,
+      this.icao,
+      this.city,
+      this.county,
+      this.state);
+}
+
+class Airports {
+  // static final Airports instance = Airports._();
+  // Airports._();
+
+  // List lines = [];
+  // List titles = [];
+  static Airport? find(String code) =>
+      Airports.list.firstWhereOrNull((e) => e.code == code);
+
+  static Future<void> init() async {
+    String x = await rootBundle.loadString('assets/csv/airports.csv');
+    // lines = x.replaceAll('"', "").split("\n");
+    // titles = lines[0].split(",");
+
+    // lines.removeAt(0);
+
+    // lines = lines
+    //     .map((e) => Map.fromIterables(
+    //         titles,
+    //         e.split(",").length == titles.length
+    //             ? e.split(",")
+    //             : List.generate(titles.length, (w) => "")))
+    //     .toList();
+
+    // List<List<dynamic>> listData = const CsvToListConverter().convert(x);
+    // for (var ap in listData) {
+    //   list.add(Airport(ap[0], ap[1], ap[2], ap[3], ap[4], ap[5],
+    //       ap[6].toString(), ap[7], ap[8], ap[9], ap[10], ap[11]));
+    // }
+
+    List<List<dynamic>> listData =
+        x.split("\n").map((e) => e.split(",").toList()).toList();
+    for (var ap in listData) {
+      list.add(Airport(ap[0], ap[1], ap[2], ap[3], ap[4], ap[5],
+          ap[6].toString(), ap[7], ap[8], ap[9], ap[10], ap[11]));
+    }
+
+    print("Airports: loaded ${list.length} Airports");
+  }
+
+  static List<Airport> list = [];
+}

Niektóre pliki nie zostały wyświetlone z powodu dużej ilości zmienionych plików