From 49296e53f0b516eed3b8bc3d454477432a9ecc6a Mon Sep 17 00:00:00 2001 From: Matt Walsh Date: Wed, 14 Dec 2022 11:22:55 -0600 Subject: [PATCH] make gulp output easier to read --- dist/index.html | 2 +- dist/resources/data.min.js | 2 +- dist/resources/ws.min.css | 2 +- dist/resources/ws.min.js | 2 +- gulp/publish-frontend.js | 4 +++- 5 files changed, 7 insertions(+), 5 deletions(-) diff --git a/dist/index.html b/dist/index.html index b1dd881..c519606 100644 --- a/dist/index.html +++ b/dist/index.html @@ -1 +1 @@ -WeatherStar 4000+

WeatherStar 4000+
v5.7.1
Enter your location above to continue
WeatherStar
4000+ v5.7.1
Current Conditions
Hourly Forecast
TEMP
WIND
Hourly Graph
Temperature
Cloud %
Precip %
75
65
55
12a
6a
12p
6p
12a
Travel Forecast
For
LOW
HIGH
Current
Conditions
Wind:
Humidity:
Dewpoint:
Ceiling:
Visibility:
Pressure:
Local
Forecast
Latest
Observations
°F
°C
Weather
Wind
Regional
Observations
Almanac
Monday
Tuesday
Sunrise:
6:24 am
6:25 am
Sunset:
6:24 am
6:25 am
Moon Data:
Extended
Forecast
Lo
Hi
Local
Radar
PRECIP
Light
Heavy

More information
Selected displays
Location:
Station Id:
Radar Id:
Zone Id:
Last Update: (None)
\ No newline at end of file +WeatherStar 4000+

WeatherStar 4000+
v5.8.0
Enter your location above to continue
WeatherStar
4000+ v5.8.0
Current Conditions
Hourly Forecast
TEMP
WIND
Hourly Graph
Temperature
Cloud %
Precip %
75
65
55
12a
6a
12p
6p
12a
Travel Forecast
For
LOW
HIGH
Current
Conditions
Wind:
Humidity:
Dewpoint:
Ceiling:
Visibility:
Pressure:
Local
Forecast
Latest
Observations
°F
°C
Weather
Wind
Regional
Observations
Almanac
Monday
Tuesday
Sunrise:
6:24 am
6:25 am
Sunset:
6:24 am
6:25 am
Moon Data:
Extended
Forecast
Lo
Hi
Local
Radar
PRECIP
Light
Heavy

More information
Selected displays
Location:
Station Id:
Radar Id:
Zone Id:
Last Update: (None)
\ No newline at end of file diff --git a/dist/resources/data.min.js b/dist/resources/data.min.js index 97e8b61..27a4068 100644 --- a/dist/resources/data.min.js +++ b/dist/resources/data.min.js @@ -1 +1 @@ -const TravelCities=[{Name:"Atlanta",Latitude:33.749,Longitude:-84.388,point:{x:50,y:86,wfo:"FFC"}},{Name:"Boston",Latitude:42.3584,Longitude:-71.0598,point:{x:71,y:90,wfo:"BOX"}},{Name:"Chicago",Latitude:41.9796,Longitude:-87.9045,point:{x:65,y:76,wfo:"LOT"}},{Name:"Cleveland",Latitude:41.4995,Longitude:-81.6954,point:{x:82,y:64,wfo:"CLE"}},{Name:"Dallas",Latitude:32.8959,Longitude:-97.0372,point:{x:79,y:108,wfo:"FWD"}},{Name:"Denver",Latitude:39.7391,Longitude:-104.9847,point:{x:62,y:60,wfo:"BOU"}},{Name:"Detroit",Latitude:42.3314,Longitude:-83.0457,point:{x:65,y:33,wfo:"DTX"}},{Name:"Hartford",Latitude:41.7637,Longitude:-72.6851,point:{x:21,y:54,wfo:"BOX"}},{Name:"Houston",Latitude:29.7633,Longitude:-95.3633,point:{x:65,y:97,wfo:"HGX"}},{Name:"Indianapolis",Latitude:39.7684,Longitude:-86.158,point:{x:57,y:68,wfo:"IND"}},{Name:"Los Angeles",Latitude:34.0522,Longitude:-118.2437,point:{x:154,y:44,wfo:"LOX"}},{Name:"Miami",Latitude:25.7743,Longitude:-80.1937,point:{x:109,y:50,wfo:"MFL"}},{Name:"Minneapolis",Latitude:44.98,Longitude:-93.2638,point:{x:107,y:71,wfo:"MPX"}},{Name:"New York",Latitude:40.7142,Longitude:-74.0059,point:{x:32,y:34,wfo:"OKX"}},{Name:"Norfolk",Latitude:36.8468,Longitude:-76.2852,point:{x:89,y:51,wfo:"AKQ"}},{Name:"Orlando",Latitude:28.5383,Longitude:-81.3792,point:{x:26,y:68,wfo:"MLB"}},{Name:"Philadelphia",Latitude:39.9523,Longitude:-75.1638,point:{x:49,y:75,wfo:"PHI"}},{Name:"Pittsburgh",Latitude:40.4406,Longitude:-79.9959,point:{x:77,y:65,wfo:"PBZ"}},{Name:"St. Louis",Latitude:38.6273,Longitude:-90.1979,point:{x:94,y:73,wfo:"LSX"}},{Name:"San Francisco",Latitude:37.7749,Longitude:-122.4194,point:{x:85,y:105,wfo:"MTR"}},{Name:"Seattle",Latitude:47.6062,Longitude:-122.3321,point:{x:124,y:67,wfo:"SEW"}},{Name:"Syracuse",Latitude:43.0481,Longitude:-76.1474,point:{x:51,y:98,wfo:"BGM"}},{Name:"Tampa",Latitude:27.9475,Longitude:-82.4584,point:{x:70,y:96,wfo:"TBW"}},{Name:"Washington DC",Latitude:38.8951,Longitude:-77.0364,point:{x:97,y:71,wfo:"LWX"}}],RegionalCities=[{city:"Atlanta",lat:33.749,lon:-84.388,point:{x:50,y:86,wfo:"FFC"}},{city:"Boston",lat:42.3584,lon:-71.0598,point:{x:71,y:90,wfo:"BOX"}},{city:"Chicago",lat:41.9796,lon:-87.9045,point:{x:65,y:76,wfo:"LOT"}},{city:"Cleveland",lat:41.4995,lon:-81.6954,point:{x:82,y:64,wfo:"CLE"}},{city:"Dallas",lat:32.8959,lon:-97.0372,point:{x:79,y:108,wfo:"FWD"}},{city:"Denver",lat:39.7391,lon:-104.9847,point:{x:62,y:60,wfo:"BOU"}},{city:"Detroit",lat:42.3314,lon:-83.0457,point:{x:65,y:33,wfo:"DTX"}},{city:"Hartford",lat:41.7637,lon:-72.6851,point:{x:21,y:54,wfo:"BOX"}},{city:"Houston",lat:29.7633,lon:-95.3633,point:{x:65,y:97,wfo:"HGX"}},{city:"Indianapolis",lat:39.7684,lon:-86.158,point:{x:57,y:68,wfo:"IND"}},{city:"Los Angeles",lat:34.0522,lon:-118.2437,point:{x:154,y:44,wfo:"LOX"}},{city:"Miami",lat:25.7743,lon:-80.1937,point:{x:109,y:50,wfo:"MFL"}},{city:"Minneapolis",lat:44.98,lon:-93.2638,point:{x:107,y:71,wfo:"MPX"}},{city:"New York",lat:40.78,lon:-73.88,point:{x:36,y:38,wfo:"OKX"}},{city:"Norfolk",lat:36.8468,lon:-76.2852,point:{x:89,y:51,wfo:"AKQ"}},{city:"Orlando",lat:28.5383,lon:-81.3792,point:{x:26,y:68,wfo:"MLB"}},{city:"Philadelphia",lat:39.9523,lon:-75.1638,point:{x:49,y:75,wfo:"PHI"}},{city:"Pittsburgh",lat:40.4406,lon:-79.9959,point:{x:77,y:65,wfo:"PBZ"}},{city:"St. Louis",lat:38.6273,lon:-90.1979,point:{x:94,y:73,wfo:"LSX"}},{city:"San Francisco",lat:37.6148,lon:-122.3918,point:{x:84,y:98,wfo:"MTR"}},{city:"Seattle",lat:47.6062,lon:-122.3321,point:{x:124,y:67,wfo:"SEW"}},{city:"Syracuse",lat:43.0481,lon:-76.1474,point:{x:51,y:98,wfo:"BGM"}},{city:"Tampa",lat:27.9756,lon:-82.5329,point:{x:67,y:97,wfo:"TBW"}},{city:"Washington DC",lat:38.8951,lon:-77.0364,point:{x:97,y:71,wfo:"LWX"}},{city:"Albany",lat:42.6526,lon:-73.7562,point:{x:58,y:58,wfo:"ALY"}},{city:"Albuquerque",lat:35.0845,lon:-106.6511,point:{x:97,y:118,wfo:"ABQ"}},{city:"Amarillo",lat:35.222,lon:-101.8313,point:{x:47,y:25,wfo:"AMA"}},{city:"Anchorage",lat:61.2181,lon:-149.9003,point:{x:125,y:236,wfo:"AER"}},{city:"Austin",lat:30.2671,lon:-97.7431,point:{x:155,y:90,wfo:"EWX"}},{city:"Baker",lat:44.7502,lon:-117.6677,point:{x:93,y:145,wfo:"BOI"}},{city:"Baltimore",lat:39.2904,lon:-76.6122,point:{x:109,y:91,wfo:"LWX"}},{city:"Bangor",lat:44.8012,lon:-68.7778,point:{x:72,y:62,wfo:"CAR"}},{city:"Birmingham",lat:33.5207,lon:-86.8025,point:{x:58,y:83,wfo:"BMX"}},{city:"Bismarck",lat:46.8083,lon:-100.7837,point:{x:109,y:46,wfo:"BIS"}},{city:"Boise",lat:43.6135,lon:-116.2034,point:{x:132,y:85,wfo:"BOI"}},{city:"Buffalo",lat:42.8864,lon:-78.8784,point:{x:35,y:46,wfo:"BUF"}},{city:"Carlsbad",lat:32.4207,lon:-104.2288,point:{x:44,y:156,wfo:"MAF"}},{city:"Charleston",lat:32.7766,lon:-79.9309,point:{x:86,y:76,wfo:"CHS"}},{city:"Charleston",lat:38.3498,lon:-81.6326,point:{x:62,y:66,wfo:"RLX"}},{city:"Charlotte",lat:35.2271,lon:-80.8431,point:{x:118,y:64,wfo:"GSP"}},{city:"Cheyenne",lat:41.14,lon:-104.8202,point:{x:109,y:13,wfo:"CYS"}},{city:"Cincinnati",lat:39.162,lon:-84.4569,point:{x:36,y:40,wfo:"ILN"}},{city:"Columbia",lat:34.0007,lon:-81.0348,point:{x:65,y:61,wfo:"CAE"}},{city:"Columbus",lat:39.9612,lon:-82.9988,point:{x:84,y:80,wfo:"ILN"}},{city:"Des Moines",lat:41.6005,lon:-93.6091,point:{x:73,y:49,wfo:"DMX"}},{city:"Dubuque",lat:42.5006,lon:-90.6646,point:{x:62,y:110,wfo:"DVN"}},{city:"Duluth",lat:46.7833,lon:-92.1066,point:{x:91,y:69,wfo:"DLH"}},{city:"Eastport",lat:44.9062,lon:-66.99,point:{x:129,y:79,wfo:"CAR"}},{city:"El Centro",lat:32.792,lon:-115.563,point:{x:26,y:46,wfo:"PSR"}},{city:"El Paso",lat:31.7587,lon:-106.4869,point:{x:99,y:55,wfo:"EPZ"}},{city:"Eugene",lat:44.0521,lon:-123.0867,point:{x:84,y:38,wfo:"PQR"}},{city:"Fargo",lat:46.8772,lon:-96.7898,point:{x:99,y:56,wfo:"FGF"}},{city:"Flagstaff",lat:35.1981,lon:-111.6513,point:{x:73,y:88,wfo:"FGZ"}},{city:"Fresno",lat:36.7477,lon:-119.7724,point:{x:53,y:100,wfo:"HNX"}},{city:"Grand Junction",lat:39.0639,lon:-108.5506,point:{x:94,y:101,wfo:"GJT"}},{city:"Grand Rapids",lat:42.9634,lon:-85.6681,point:{x:40,y:46,wfo:"GRR"}},{city:"Havre",lat:48.55,lon:-109.6841,point:{x:154,y:187,wfo:"TFX"}},{city:"Helena",lat:46.5927,lon:-112.0361,point:{x:68,y:103,wfo:"TFX"}},{city:"Honolulu",lat:21.3069,lon:-157.8583,point:{x:153,y:144,wfo:"HFO"}},{city:"Hot Springs",lat:34.5037,lon:-93.0552,point:{x:53,y:60,wfo:"LZK"}},{city:"Idaho Falls",lat:43.4666,lon:-112.0341,point:{x:115,y:72,wfo:"PIH"}},{city:"Jackson",lat:32.2988,lon:-90.1848,point:{x:75,y:62,wfo:"JAN"}},{city:"Jacksonville",lat:30.3322,lon:-81.6556,point:{x:65,y:64,wfo:"JAX"}},{city:"Juneau",lat:58.3019,lon:-134.4197,point:{x:194,y:163,wfo:"AJK"}},{city:"Kansas City",lat:39.1142,lon:-94.6275,point:{x:41,y:50,wfo:"EAX"}},{city:"Key West",lat:24.5557,lon:-81.7826,point:{x:61,y:47,wfo:"KEY"}},{city:"Klamath Falls",lat:42.2249,lon:-121.7817,point:{x:141,y:61,wfo:"MFR"}},{city:"Knoxville",lat:35.9606,lon:-83.9207,point:{x:71,y:51,wfo:"MRX"}},{city:"Las Vegas",lat:36.175,lon:-115.1372,point:{x:122,y:97,wfo:"VEF"}},{city:"Lewiston",lat:46.4165,lon:-117.0177,point:{x:144,y:30,wfo:"OTX"}},{city:"Lincoln",lat:40.8,lon:-96.667,point:{x:56,y:38,wfo:"OAX"}},{city:"Long Beach",lat:33.767,lon:-118.1892,point:{x:154,y:31,wfo:"LOX"}},{city:"Louisville",lat:38.2542,lon:-85.7594,point:{x:49,y:77,wfo:"LMK"}},{city:"Manchester",lat:42.9956,lon:-71.4548,point:{x:41,y:20,wfo:"GYX"}},{city:"Memphis",lat:35.1495,lon:-90.049,point:{x:41,y:66,wfo:"MEG"}},{city:"Milwaukee",lat:43.0389,lon:-87.9065,point:{x:87,y:64,wfo:"MKX"}},{city:"Mobile",lat:30.6944,lon:-88.043,point:{x:51,y:66,wfo:"MOB"}},{city:"Montgomery",lat:32.3668,lon:-86.3,point:{x:80,y:34,wfo:"BMX"}},{city:"Montpelier",lat:44.2601,lon:-72.5754,point:{x:110,y:49,wfo:"BTV"}},{city:"Nashville",lat:36.1659,lon:-86.7844,point:{x:49,y:56,wfo:"OHX"}},{city:"Newark",lat:40.7357,lon:-74.1724,point:{x:26,y:34,wfo:"OKX"}},{city:"New Haven",lat:41.3081,lon:-72.9282,point:{x:65,y:67,wfo:"OKX"}},{city:"New Orleans",lat:29.9546,lon:-90.0751,point:{x:68,y:88,wfo:"LIX"}},{city:"Nome",lat:64.5011,lon:-165.4064,point:{x:217,y:139,wfo:"AFG"}},{city:"Oklahoma City",lat:35.4676,lon:-97.5164,point:{x:97,y:93,wfo:"OUN"}},{city:"Omaha",lat:41.2586,lon:-95.9378,point:{x:82,y:59,wfo:"OAX"}},{city:"Phoenix",lat:33.4484,lon:-112.074,point:{x:158,y:57,wfo:"PSR"}},{city:"Pierre",lat:44.3683,lon:-100.351,point:{x:54,y:43,wfo:"ABR"}},{city:"Portland",lat:43.6615,lon:-70.2553,point:{x:75,y:58,wfo:"GYX"}},{city:"Portland",lat:45.5234,lon:-122.6762,point:{x:112,y:103,wfo:"PQR"}},{city:"Providence",lat:41.824,lon:-71.4128,point:{x:64,y:64,wfo:"BOX"}},{city:"Raleigh",lat:35.7721,lon:-78.6386,point:{x:74,y:56,wfo:"RAH"}},{city:"Reno",lat:39.4986,lon:-119.7681,point:{x:45,y:104,wfo:"REV"}},{city:"Richfield",lat:38.7725,lon:-112.0841,point:{x:81,y:86,wfo:"SLC"}},{city:"Richmond",lat:37.5538,lon:-77.4603,point:{x:44,y:76,wfo:"AKQ"}},{city:"Roanoke",lat:37.271,lon:-79.9414,point:{x:73,y:68,wfo:"RNK"}},{city:"Sacramento",lat:38.5816,lon:-121.4944,point:{x:40,y:67,wfo:"STO"}},{city:"Salt Lake City",lat:40.7608,lon:-111.891,point:{x:99,y:174,wfo:"SLC"}},{city:"San Antonio",lat:29.4241,lon:-98.4936,point:{x:125,y:53,wfo:"EWX"}},{city:"San Diego",lat:32.7153,lon:-117.1573,point:{x:56,y:13,wfo:"SGX"}},{city:"San Jose",lat:37.3394,lon:-121.895,point:{x:99,y:82,wfo:"MTR"}},{city:"Santa Fe",lat:35.687,lon:-105.9378,point:{x:125,y:143,wfo:"ABQ"}},{city:"Savannah",lat:32.0835,lon:-81.0998,point:{x:46,y:40,wfo:"CHS"}},{city:"Shreveport",lat:32.5251,lon:-93.7502,point:{x:76,y:69,wfo:"SHV"}},{city:"Sioux Falls",lat:43.55,lon:-96.7003,point:{x:99,y:65,wfo:"FSD"}},{city:"Sitka",lat:57.0531,lon:-135.33,point:{x:188,y:112,wfo:"AJK"}},{city:"Spokane",lat:47.6597,lon:-117.4291,point:{x:140,y:90,wfo:"OTX"}},{city:"Springfield",lat:39.8017,lon:-89.6437,point:{x:47,y:55,wfo:"ILX"}},{city:"Springfield",lat:42.1015,lon:-72.5898,point:{x:22,y:69,wfo:"BOX"}},{city:"Springfield",lat:37.2153,lon:-93.2982,point:{x:66,y:34,wfo:"SGF"}},{city:"Toledo",lat:41.6639,lon:-83.5552,point:{x:18,y:66,wfo:"CLE"}},{city:"Tulsa",lat:36.154,lon:-95.9928,point:{x:40,y:104,wfo:"TSA"}},{city:"Virginia Beach",lat:36.8529,lon:-75.978,point:{x:100,y:52,wfo:"AKQ"}},{city:"Wichita",lat:37.6922,lon:-97.3375,point:{x:61,y:33,wfo:"ICT"}},{city:"Wilmington",lat:34.2257,lon:-77.9447,point:{x:88,y:67,wfo:"ILM"}},{city:"Tuscan",lat:32.2216,lon:-110.9698,point:{x:90,y:48,wfo:"TWC"}}],StationInfo={KBID:{id:"KBID",city:"Block Island State Airport",state:"RI",lat:41.1694699,lon:-71.5787299},KOQU:{id:"KOQU",city:"N. Kingston / Quonset",state:"RI",lat:41.6,lon:-71.41667},KPVD:{id:"KPVD",city:"Providence, Theodore Francis Green State Airport",state:"RI",lat:41.72249,lon:-71.43247},KSFZ:{id:"KSFZ",city:"Pawtucket, North Central State Airport",state:"RI",lat:41.91667,lon:-71.5},KUUU:{id:"KUUU",city:"Newport, Newport State Airport",state:"RI",lat:41.53,lon:-71.28361},KWST:{id:"KWST",city:"Westerly, Westerly State Airport",state:"RI",lat:41.34972,lon:-71.79889},KBDL:{id:"KBDL",city:"Windsor Locks, Bradley International Airport",state:"CT",lat:41.93806,lon:-72.6825},KBDR:{id:"KBDR",city:"Bridgeport, Sikorsky Memorial Airport",state:"CT",lat:41.16421,lon:-73.12663},KDXR:{id:"KDXR",city:"Danbury, Danbury Municipal Airport",state:"CT",lat:41.37167,lon:-73.48444},KGON:{id:"KGON",city:"Groton / New London, Groton / New London Airport",state:"CT",lat:41.3275,lon:-72.04944},KHFD:{id:"KHFD",city:"Hartford, Hartford-Brainard Airport",state:"CT",lat:41.735,lon:-72.65167},KHVN:{id:"KHVN",city:"New Haven, Tweed-New Haven Airport",state:"CT",lat:41.26389,lon:-72.88722},KIJD:{id:"KIJD",city:"Willimantic, Windham Airport",state:"CT",lat:41.74194,lon:-72.18361},KMMK:{id:"KMMK",city:"Meriden, Meriden Markham Municipal Airport",state:"CT",lat:41.50972,lon:-72.82778},KOXC:{id:"KOXC",city:"Oxford, Waterbury-Oxford Airport",state:"CT",lat:41.48333,lon:-73.13333},KSNC:{id:"KSNC",city:"Chester, Chester Airport",state:"CT",lat:41.38389,lon:-72.50583},KBTV:{id:"KBTV",city:"Burlington, Burlington International Airport",state:"VT",lat:44.46806,lon:-73.15028},KCDA:{id:"KCDA",city:"Caledonia County Airport",state:"VT",lat:44.5691142,lon:-72.0179789},KDDH:{id:"KDDH",city:"Bennington Morse State Airport",state:"VT",lat:42.89355,lon:-73.2486},KEFK:{id:"KEFK",city:"Northeast Kingdom International Airport",state:"VT",lat:44.88846,lon:-72.23593},KFSO:{id:"KFSO",city:"Franklin County State Airport",state:"VT",lat:44.9402807,lon:-73.09746},KMPV:{id:"KMPV",city:"Barre / Montpelier, Knapp State Airport",state:"VT",lat:44.20472,lon:-72.56611},KMVL:{id:"KMVL",city:"Morrisville-Stowe State Airport",state:"VT",lat:44.53589,lon:-72.6162499},KRUT:{id:"KRUT",city:"Rutland-Southern Vermont Regional Airport",state:"VT",lat:43.53333,lon:-72.95},KVSF:{id:"KVSF",city:"Springfield, Hartness State Springfield Airport",state:"VT",lat:43.3425,lon:-72.52167},PHBK:{id:"PHBK",city:"Kekaha, Pacific Missile Test Facility Barking Sands",state:"HI",lat:22.03639,lon:-159.78639},PHHI:{id:"PHHI",city:"Wheeler Air Force Base / Oahu",state:"HI",lat:21.48333,lon:-158.03333},PHJH:{id:"PHJH",city:"Lahaina - West Maui",state:"HI",lat:20.9630699,lon:-156.67466},PHJR:{id:"PHJR",city:"Oahu, Kalaeloa Airport",state:"HI",lat:21.30833,lon:-158.06806},PHKO:{id:"PHKO",city:"Kailua / Kona, Keahole Airport",state:"HI",lat:19.74083,lon:-156.05056},PHLI:{id:"PHLI",city:"Lihue, Lihue Airport",state:"HI",lat:21.98389,lon:-159.3411099},PHMK:{id:"PHMK",city:"Kaunakakai, Molokai Airport",state:"HI",lat:21.15,lon:-157.1},PHNG:{id:"PHNG",city:"Kaneohe, Marine Corps Air Station",state:"HI",lat:21.45389,lon:-157.76556},PHNL:{id:"PHNL",city:"Daniel K Inouye International Airport",state:"HI",lat:21.3275,lon:-157.94306},PHNY:{id:"PHNY",city:"Lanai City, Lanai Airport",state:"HI",lat:20.78556,lon:-156.95139},PHOG:{id:"PHOG",city:"Kahului, Kahului Airport",state:"HI",lat:20.8924999,lon:-156.43694},PHSF:{id:"PHSF",city:"Bradshaw Army Air Field / Hawaii",state:"HI",lat:19.78333,lon:-155.55},PHTO:{id:"PHTO",city:"Hilo, Hilo International Airport",state:"HI",lat:19.72222,lon:-155.0558299},KADU:{id:"KADU",city:"Audubon, Audubon County Airport",state:"IA",lat:41.70111,lon:-94.92028},KAIO:{id:"KAIO",city:"Atlantic",state:"IA",lat:41.4,lon:-95.05},KALO:{id:"KALO",city:"Waterloo, Waterloo Municipal Airport",state:"IA",lat:42.55444,lon:-92.40111},KAMW:{id:"KAMW",city:"Ames, Ames Municipal Airport",state:"IA",lat:41.99056,lon:-93.6188899},KAWG:{id:"KAWG",city:"Washington",state:"IA",lat:41.28333,lon:-91.66667},KAXA:{id:"KAXA",city:"Algona",state:"IA",lat:43.0833299,lon:-94.26667},KBNW:{id:"KBNW",city:"Boone Municipal",state:"IA",lat:42.05,lon:-93.85},KBRL:{id:"KBRL",city:"Burlington Regional Airport",state:"IA",lat:40.77293,lon:-91.12543},KCAV:{id:"KCAV",city:"Clarion",state:"IA",lat:42.75,lon:-93.76667},KCBF:{id:"KCBF",city:"Council Bluffs",state:"IA",lat:41.2612499,lon:-95.7604},KCCY:{id:"KCCY",city:"Charles City",state:"IA",lat:43.06667,lon:-92.61667},KCID:{id:"KCID",city:"Cedar Rapids Airport",state:"IA",lat:41.88295,lon:-91.72456},KCIN:{id:"KCIN",city:"Carroll",state:"IA",lat:42.05,lon:-94.78333},KCKP:{id:"KCKP",city:"Cherokee, Cherokee Municipal Airport",state:"IA",lat:42.73167,lon:-95.55583},KCNC:{id:"KCNC",city:"Chariton",state:"IA",lat:41.03333,lon:-93.36667},KCSQ:{id:"KCSQ",city:"Creston Municipal Airport",state:"IA",lat:41.0188599,lon:-94.361},KCWI:{id:"KCWI",city:"Clinton Municipal Airport",state:"IA",lat:41.82954,lon:-90.33279},KDBQ:{id:"KDBQ",city:"Dubuque Regional Airport",state:"IA",lat:42.39837,lon:-90.7091},KDEH:{id:"KDEH",city:"Decorah",state:"IA",lat:43.28333,lon:-91.73333},KDNS:{id:"KDNS",city:"Denison",state:"IA",lat:41.98333,lon:-95.38333},KDSM:{id:"KDSM",city:"Des Moines International Airport",state:"IA",lat:41.53399,lon:-93.65307},KDVN:{id:"KDVN",city:"Davenport Municipal Airport",state:"IA",lat:41.61338,lon:-90.59479},KEBS:{id:"KEBS",city:"Webster City Municipal Airport",state:"IA",lat:42.43724,lon:-93.87237},KEOK:{id:"KEOK",city:"Keokuk Municipal Airport",state:"IA",lat:40.46149,lon:-91.42739},KEST:{id:"KEST",city:"Estherville, Estherville Municipal Airport",state:"IA",lat:43.40111,lon:-94.74722},KFFL:{id:"KFFL",city:"Fairfield Municipal Airport",state:"IA",lat:41.0521,lon:-91.98339},KFOD:{id:"KFOD",city:"Fort Dodge",state:"IA",lat:42.55,lon:-94.18333},KFSW:{id:"KFSW",city:"Fort Madison Municipal Airport",state:"IA",lat:40.66154,lon:-91.32672},KFXY:{id:"KFXY",city:"Forest City Municipal Airport",state:"IA",lat:43.235,lon:-93.624},KGGI:{id:"KGGI",city:"Grinnell Municipal Airfield",state:"IA",lat:41.7092,lon:-92.7349},KHNR:{id:"KHNR",city:"Harlan, Harlan Municipal Airport",state:"IA",lat:41.58444,lon:-95.33972},KHPT:{id:"KHPT",city:"Hampton Municipal Airport",state:"IA",lat:42.72369,lon:-93.22633},KICL:{id:"KICL",city:"Schenck Field Airport",state:"IA",lat:40.72421,lon:-95.02224},KIFA:{id:"KIFA",city:"Iowa Falls Municipal Airport",state:"IA",lat:42.4709999,lon:-93.27},KIIB:{id:"KIIB",city:"Independence, Independence Municipal Airport",state:"IA",lat:42.45,lon:-91.93333},KIKV:{id:"KIKV",city:"Ankeny Regional Airport",state:"IA",lat:41.68782,lon:-93.56944},KIOW:{id:"KIOW",city:"Iowa City Municipal Airport",state:"IA",lat:41.6394499,lon:-91.5445},KLRJ:{id:"KLRJ",city:"Le Mars Municipal Airport",state:"IA",lat:42.77478,lon:-96.19239},KLWD:{id:"KLWD",city:"Lamoni, Lamoni Municipal Airport",state:"IA",lat:40.63056,lon:-93.90083},KMCW:{id:"KMCW",city:"Mason City Municipal Airport",state:"IA",lat:43.15442,lon:-93.32607},KMIW:{id:"KMIW",city:"Marshalltown, Marshalltown Municipal Airport",state:"IA",lat:42.11056,lon:-92.91611},KMPZ:{id:"KMPZ",city:"Mount Pleasant, Mount Pleasant Municipal Airport",state:"IA",lat:40.94667,lon:-91.51111},KMUT:{id:"KMUT",city:"Muscatine",state:"IA",lat:41.36667,lon:-91.15},KMXO:{id:"KMXO",city:"Monticello Regional Airport",state:"IA",lat:42.22035,lon:-91.16041},KOLZ:{id:"KOLZ",city:"Oelwein Municipal Airport",state:"IA",lat:42.68316,lon:-91.97595},KOOA:{id:"KOOA",city:"Oskaloosa, Oskaloosa Municipal Airport",state:"IA",lat:41.22611,lon:-92.49361},KOTM:{id:"KOTM",city:"Ottumwa Regional Airport",state:"IA",lat:41.10082,lon:-92.4445099},KOXV:{id:"KOXV",city:"Knoxville",state:"IA",lat:41.3,lon:-93.11667},KPEA:{id:"KPEA",city:"Pella, Pella Municipal Airport",state:"IA",lat:41.4,lon:-92.93333},KPRO:{id:"KPRO",city:"Perry Municipal Airport",state:"IA",lat:41.828,lon:-94.1598999},KRDK:{id:"KRDK",city:"Red Oak",state:"IA",lat:41.01667,lon:-95.26667},KSDA:{id:"KSDA",city:"Shenandoah Municipal",state:"IA",lat:40.75,lon:-95.41667},KSHL:{id:"KSHL",city:"Sheldon",state:"IA",lat:43.21667,lon:-95.83333},KSLB:{id:"KSLB",city:"Storm Lake",state:"IA",lat:42.6,lon:-95.23333},KSPW:{id:"KSPW",city:"Spencer Municipal Airport",state:"IA",lat:43.16825,lon:-95.21008},KSUX:{id:"KSUX",city:"Sioux City, Sioux Gateway Airport",state:"IA",lat:42.4025,lon:-96.38444},KSXK:{id:"KSXK",city:"Sioux County Regional Airport",state:"IA",lat:42.98583,lon:-96.1614},KTNU:{id:"KTNU",city:"Newton Municipal Airport - Earl Johnson Field",state:"IA",lat:41.67014,lon:-93.01902},KTVK:{id:"KTVK",city:"Centerville Municipal Airport",state:"IA",lat:40.6839,lon:-92.901},KVTI:{id:"KVTI",city:"Vinton, Vinton Veterans Memorial Airpark Airport",state:"IA",lat:42.21861,lon:-92.02583},KAFK:{id:"KAFK",city:"Nebraska City, Nebraska City Municipal Airport",state:"NE",lat:40.6,lon:-95.85},KAHQ:{id:"KAHQ",city:"Wahoo",state:"NE",lat:41.2406,lon:-96.5946},KAIA:{id:"KAIA",city:"Alliance, Alliance Municipal Airport",state:"NE",lat:42.05722,lon:-102.8},KANW:{id:"KANW",city:"Ainsworth Regional Airport",state:"NE",lat:42.57484,lon:-99.99832},KAUH:{id:"KAUH",city:"Aurora, Aurora Municipal Airport",state:"NE",lat:40.89389,lon:-97.99444},KBBW:{id:"KBBW",city:"Broken Bow, Broken Bow Municipal Airport",state:"NE",lat:41.43333,lon:-99.65},KBFF:{id:"KBFF",city:"Scottsbluff, Heilig Field",state:"NE",lat:41.86694,lon:-103.58583},KBIE:{id:"KBIE",city:"Beatrice Municipal",state:"NE",lat:40.3,lon:-96.75},KBTA:{id:"KBTA",city:"Blair Municipal Airport",state:"NE",lat:41.4148,lon:-96.109},KBVN:{id:"KBVN",city:"Albion Municipal Airport",state:"NE",lat:41.73016,lon:-98.05453},KCDR:{id:"KCDR",city:"Chadron, Chadron Municipal Airport",state:"NE",lat:42.8375,lon:-103.09528},KEAR:{id:"KEAR",city:"Kearney, Kearney Municipal Airport",state:"NE",lat:40.73333,lon:-99},KFET:{id:"KFET",city:"Fremont Municipal Airport",state:"NE",lat:41.45,lon:-96.51667},KFNB:{id:"KFNB",city:"Falls City, Brenner Field Airport",state:"NE",lat:40.07889,lon:-95.5919399},KGRI:{id:"KGRI",city:"Grand Island, Central Nebraska Regional Airport",state:"NE",lat:40.9583299,lon:-98.3125},KGRN:{id:"KGRN",city:"Gordon Municipal",state:"NE",lat:42.8,lon:-102.16667},KHDE:{id:"KHDE",city:"Brewster Field Airport",state:"NE",lat:40.45,lon:-99.33333},KHJH:{id:"KHJH",city:"Hebron, Hebron Municipal Airport",state:"NE",lat:40.15222,lon:-97.58694},KHSI:{id:"KHSI",city:"Hastings, Hastings Municipal Airport",state:"NE",lat:40.60056,lon:-98.42583},KIBM:{id:"KIBM",city:"Kimball, Kimball Municipal Airport/Robert E Arraj Field",state:"NE",lat:41.18333,lon:-103.66667},KIML:{id:"KIML",city:"Imperial, Imperial Municipal Airport",state:"NE",lat:40.51667,lon:-101.61667},KJYR:{id:"KJYR",city:"York, York Municipal Airport",state:"NE",lat:40.89667,lon:-97.62278},KLBF:{id:"KLBF",city:"North Platte, North Platte Regional Airport",state:"NE",lat:41.12194,lon:-100.66833},KLCG:{id:"KLCG",city:"Wayne, Wayne Municipal Airport",state:"NE",lat:42.24167,lon:-96.98139},KLNK:{id:"KLNK",city:"Lincoln, Lincoln Municipal Airport",state:"NE",lat:40.83111,lon:-96.7644399},KLXN:{id:"KLXN",city:"Lexington, Jim Kelly Field Airport",state:"NE",lat:40.79111,lon:-99.77722},KMCK:{id:"KMCK",city:"McCook, McCook Municipal Airport",state:"NE",lat:40.20306,lon:-100.58833},KMLE:{id:"KMLE",city:"Omaha, Millard Airport",state:"NE",lat:41.19583,lon:-96.1122199},KODX:{id:"KODX",city:"Ord, Evelyn Sharp Field Airport",state:"NE",lat:41.62417,lon:-98.9525},KOFF:{id:"KOFF",city:"Omaha / Offutt Air Force Base",state:"NE",lat:41.11667,lon:-95.9},KOFK:{id:"KOFK",city:"Norfolk, Stefan Memorial Airport",state:"NE",lat:41.9805599,lon:-97.43694},KOGA:{id:"KOGA",city:"Ogallala, Searle Field Airport",state:"NE",lat:41.11972,lon:-101.76889},KOLU:{id:"KOLU",city:"Columbus, Columbus Municipal Airport",state:"NE",lat:41.45,lon:-97.33333},KOMA:{id:"KOMA",city:"Omaha - Eppley Airfield",state:"NE",lat:41.3119,lon:-95.90185},KONL:{id:"KONL",city:"O'Neill / Baker Field",state:"NE",lat:42.46667,lon:-98.68333},KPMV:{id:"KPMV",city:"Plattsmouth, Plattsmouth Municipal Airport",state:"NE",lat:40.95,lon:-95.9177799},KSNY:{id:"KSNY",city:"Sidney, Sidney Municipal Airport",state:"NE",lat:41.09944,lon:-102.98556},KTIF:{id:"KTIF",city:"Thedford, Thomas County Airport",state:"NE",lat:41.96194,lon:-100.56889},KTQE:{id:"KTQE",city:"Tekamah, Tekamah Municipal Airport",state:"NE",lat:41.76694,lon:-96.17778},KVTN:{id:"KVTN",city:"Valentine, Miller Field",state:"NE",lat:42.85861,lon:-100.55139},KDOV:{id:"KDOV",city:"Dover Air Force Base",state:"DE",lat:39.13333,lon:-75.4666699},KGED:{id:"KGED",city:"Georgetown - Delaware Coastal Airport",state:"DE",lat:38.68974,lon:-75.36245},KILG:{id:"KILG",city:"Wilmington, New Castle County Airport",state:"DE",lat:39.67442,lon:-75.60567},KBKW:{id:"KBKW",city:"Beckley, Raleigh County Memorial Airport",state:"WV",lat:37.795,lon:-81.12472},KBLF:{id:"KBLF",city:"Bluefield, Mercer County Airport",state:"WV",lat:37.29583,lon:-81.20778},KCBE:{id:"KCBE",city:"Cumberland, Greater Cumberland Regional Airport",state:"WV",lat:39.61528,lon:-78.76083},KCKB:{id:"KCKB",city:"Clarksburg, Clarksburg Benedum Airport",state:"WV",lat:39.3,lon:-80.22472},KCRW:{id:"KCRW",city:"Charleston, Yeager Airport",state:"WV",lat:38.37944,lon:-81.59139},KEKN:{id:"KEKN",city:"Elkins, Elkins-Randolph County-Jennings Randolph Field",state:"WV",lat:38.88528,lon:-79.85278},KHLG:{id:"KHLG",city:"Wheeling, Wheeling Ohio County Airport",state:"WV",lat:40.17028,lon:-80.64444},KHTS:{id:"KHTS",city:"Huntington, Tri-State Airport",state:"WV",lat:38.365,lon:-82.555},KLWB:{id:"KLWB",city:"Lewisburg / Greenbrier",state:"WV",lat:37.86667,lon:-80.4},KMGW:{id:"KMGW",city:"Morgantown Municipal-Hart Field",state:"WV",lat:39.64985,lon:-79.92065},KMRB:{id:"KMRB",city:"Eastern WV Regional Airport/Shepherd Field",state:"WV",lat:39.40372,lon:-77.975},KPKB:{id:"KPKB",city:"Parkersburg, Mid-Ohio Valley Regional Airport",state:"WV",lat:39.345,lon:-81.43917},KACQ:{id:"KACQ",city:"Waseca Municipal Airport",state:"MN",lat:44.07024,lon:-93.55342},KADC:{id:"KADC",city:"Wadena Municipal Airport",state:"MN",lat:46.45022,lon:-95.21353},KAEL:{id:"KAEL",city:"Albert Lea, Albert Lea Municipal Airport",state:"MN",lat:43.68333,lon:-93.36667},KAIT:{id:"KAIT",city:"Aitkin Municipal Airport - Steve Kurtz Field",state:"MN",lat:46.54899,lon:-93.67573},KANE:{id:"KANE",city:"Minneapolis / Blaine",state:"MN",lat:45.14258,lon:-93.21272},KAQP:{id:"KAQP",city:"Appleton Municipal Airport",state:"MN",lat:45.22488,lon:-96.00412},KACB:{id:"KACB",city:"Bellaire, Antrim County Airport",state:"MI",lat:44.98833,lon:-85.19833},KADG:{id:"KADG",city:"Adrian, Lenawee County Airport",state:"MI",lat:41.86778,lon:-84.07944},KAMN:{id:"KAMN",city:"Alma, Gratiot Community Airport",state:"MI",lat:43.32194,lon:-84.68778},KANJ:{id:"KANJ",city:"Sault Ste. Marie",state:"MI",lat:46.4794399,lon:-84.35722},KAPN:{id:"KAPN",city:"Alpena, Alpena County Regional Airport",state:"MI",lat:45.07167,lon:-83.56444},KARB:{id:"KARB",city:"Ann Arbor, Ann Arbor Municipal Airport",state:"MI",lat:42.22389,lon:-83.74},KAZO:{id:"KAZO",city:"Kalamazoo/Battle Creek International Airport",state:"MI",lat:42.2283,lon:-85.54595},KBAX:{id:"KBAX",city:"Huron County Memorial Airport",state:"MI",lat:43.77741,lon:-82.98271},KBEH:{id:"KBEH",city:"Southwest Michigan Regional Airport",state:"MI",lat:42.12896,lon:-86.41515},KBIV:{id:"KBIV",city:"Holland - West Michigan Regional Airport",state:"MI",lat:42.74611,lon:-86.09667},KBTL:{id:"KBTL",city:"Battle Creek Executive Airport",state:"MI",lat:42.31197,lon:-85.24144},KCAD:{id:"KCAD",city:"Wexford County Airport",state:"MI",lat:44.27847,lon:-85.4206899},KCFS:{id:"KCFS",city:"Caro, Tuscola Area Airport",state:"MI",lat:43.45861,lon:-83.44528},KCIU:{id:"KCIU",city:"Sault Ste Marie, Chippewa County International Airport",state:"MI",lat:46.25,lon:-84.4666699},KCMX:{id:"KCMX",city:"Houghton County Memorial Airport",state:"MI",lat:47.16597,lon:-88.48072},KCVX:{id:"KCVX",city:"Charlevoix, Charlevoix Municipal Airport",state:"MI",lat:45.30472,lon:-85.27472},KDET:{id:"KDET",city:"Coleman A Young Municipal Airport",state:"MI",lat:42.40729,lon:-83.00894},KDRM:{id:"KDRM",city:"Drummond Island Airport",state:"MI",lat:46.0072,lon:-83.7427},KDTW:{id:"KDTW",city:"Detroit, Detroit Metropolitan Wayne County Airport",state:"MI",lat:42.23139,lon:-83.33083},KDUH:{id:"KDUH",city:"Lambertville, Toledo Suburban Airport",state:"MI",lat:41.73583,lon:-83.65528},KERY:{id:"KERY",city:"Newberry, Luce County Airport",state:"MI",lat:46.31111,lon:-85.45722},KESC:{id:"KESC",city:"Delta County Airport",state:"MI",lat:45.7226799,lon:-87.09372},KFFX:{id:"KFFX",city:"Fremont Municipal Airport",state:"MI",lat:43.43933,lon:-85.9948299},KFKS:{id:"KFKS",city:"Frankfort, Frankfort Dow Memorial Field Airport",state:"MI",lat:44.625,lon:-86.20056},KFNT:{id:"KFNT",city:"Flint, Bishop International Airport",state:"MI",lat:42.96667,lon:-83.74944},KFPK:{id:"KFPK",city:"Charlotte, Fitch H Beach Airport",state:"MI",lat:42.57444,lon:-84.81139},KGLR:{id:"KGLR",city:"Gaylord Regional Airport",state:"MI",lat:45.01658,lon:-84.68937},KGOV:{id:"KGOV",city:"Grayling, Grayling Army Airfield",state:"MI",lat:44.68028,lon:-84.72889},KGRR:{id:"KGRR",city:"Grand Rapids, Gerald R. Ford International Airport",state:"MI",lat:42.88083,lon:-85.52278},KHAI:{id:"KHAI",city:"Haines Memorial Airport",state:"MI",lat:41.9598,lon:-85.5934},KHTL:{id:"KHTL",city:"Houghton Lake, Roscommon County Airport",state:"MI",lat:44.35111,lon:-84.67417},KABR:{id:"KABR",city:"Aberdeen, Aberdeen Regional Airport",state:"SD",lat:45.44333,lon:-98.41306},KAGZ:{id:"KAGZ",city:"WAGNERMUNC",state:"SD",lat:43.06332,lon:-98.29618},KATY:{id:"KATY",city:"Watertown, Watertown Municipal Airport",state:"SD",lat:44.90472,lon:-97.14944},KBKX:{id:"KBKX",city:"Brookings, Brookings Municipal Airport",state:"SD",lat:44.3,lon:-96.81667},KCUT:{id:"KCUT",city:"Custer, Custer County Airport",state:"SD",lat:43.73306,lon:-103.6175},KEFC:{id:"KEFC",city:"BELLEFCHE",state:"SD",lat:44.7342,lon:-103.86199},KFSD:{id:"KFSD",city:"Sioux Falls, Foss Field",state:"SD",lat:43.57694,lon:-96.75361},KHON:{id:"KHON",city:"Huron, Huron Regional Airport",state:"SD",lat:44.38806,lon:-98.22833},KICR:{id:"KICR",city:"Winner, Bob Wiley Field Airport",state:"SD",lat:43.39056,lon:-99.8425},KIEN:{id:"KIEN",city:"Pine Ridge, Pine Ridge Airport",state:"SD",lat:43.02556,lon:-102.52306},KLEM:{id:"KLEM",city:"LEMMON",state:"SD",lat:45.91869,lon:-102.10617},KMBG:{id:"KMBG",city:"Mobridge, Mobridge Municipal Airport",state:"SD",lat:45.55,lon:-100.40861},KMDS:{id:"KMDS",city:"Madison Municipal Airport",state:"SD",lat:44.0164147,lon:-97.0855992},KMHE:{id:"KMHE",city:"Mitchell, Mitchell Municipal Airport",state:"SD",lat:43.76667,lon:-98.03333},KMKA:{id:"KMKA",city:"MILLERMUNC",state:"SD",lat:44.5252399,lon:-98.95811},KPHP:{id:"KPHP",city:"Philip, Philip Airport",state:"SD",lat:44.05111,lon:-101.60111},KPIR:{id:"KPIR",city:"Pierre, Pierre Regional Airport",state:"SD",lat:44.3827799,lon:-100.28583},KRAP:{id:"KRAP",city:"Rapid City, Rapid City Regional Airport",state:"SD",lat:44.04556,lon:-103.05389},KRCA:{id:"KRCA",city:"Ellsworth Air Force Base",state:"SD",lat:44.15,lon:-103.1},KSPF:{id:"KSPF",city:"Spearfish / Clyde Ice",state:"SD",lat:44.48333,lon:-103.78333},KUNR:{id:"KUNR",city:"Rapid City/WFO",state:"SD",lat:44.0727,lon:-103.2108},KVMR:{id:"KVMR",city:"VERMILLION",state:"SD",lat:42.76528,lon:-96.93425},KYKN:{id:"KYKN",city:"Yankton, Chan Gurney Municipal Airport",state:"SD",lat:42.91667,lon:-97.38333},KALX:{id:"KALX",city:"Alexander City, Thomas C Russell Field Airport",state:"AL",lat:32.91472,lon:-85.96278},KANB:{id:"KANB",city:"Anniston Metro Airport",state:"AL",lat:33.59045,lon:-85.84789},KASN:{id:"KASN",city:"Talladega Municipal Airport",state:"AL",lat:33.5695,lon:-86.0512},KAUO:{id:"KAUO",city:"Auburn-Opelika Airport",state:"AL",lat:32.61667,lon:-85.43333},KBFM:{id:"KBFM",city:"Mobile, Mobile Downtown Airport",state:"AL",lat:30.61389,lon:-88.0633299},KBHM:{id:"KBHM",city:"Birmingham, Birmingham International Airport",state:"AL",lat:33.56556,lon:-86.745},KCMD:{id:"KCMD",city:"Cullman Regional Folsom Field",state:"AL",lat:34.2687,lon:-86.858},KCQF:{id:"KCQF",city:"Sonny Callahan Airport",state:"AL",lat:30.461,lon:-87.877},KDCU:{id:"KDCU",city:"Decatur, Pryor Field",state:"AL",lat:34.65806,lon:-86.94333},KDHN:{id:"KDHN",city:"Dothan, Dothan Regional Airport",state:"AL",lat:31.32139,lon:-85.44972},KDYA:{id:"KDYA",city:"Demopolis Municipal Airport",state:"AL",lat:32.4638,lon:-87.9541},KEDN:{id:"KEDN",city:"Enterprise Municipal Airport",state:"AL",lat:31.2982,lon:-85.9048},KEET:{id:"KEET",city:"Alabaster, Shelby County Airport",state:"AL",lat:33.17833,lon:-86.78167},KEKY:{id:"KEKY",city:"Bessemer Airport",state:"AL",lat:33.3126,lon:-86.9263},KEUF:{id:"KEUF",city:"Eufaula Municipal Airport",state:"AL",lat:31.951,lon:-85.129},KGAD:{id:"KGAD",city:"Gadsden, Gadsden Municipal Airport",state:"AL",lat:33.96667,lon:-86.08333},KGZH:{id:"KGZH",city:"Evergreen, Middleton Field",state:"AL",lat:31.41889,lon:-87.04806},KHEY:{id:"KHEY",city:"Hanchey AHP / Ozark",state:"AL",lat:31.35,lon:-85.66667},KHSV:{id:"KHSV",city:"Huntsville, Huntsville International / Jones Field",state:"AL",lat:34.64361,lon:-86.78556},KHUA:{id:"KHUA",city:"Redstone Airfield",state:"AL",lat:34.6786,lon:-86.6847},KJFX:{id:"KJFX",city:"Jasper Walker County Airport & Bevill Field",state:"AL",lat:33.902,lon:-87.31417},KJKA:{id:"KJKA",city:"Jack Edwards Airport",state:"AL",lat:30.2896,lon:-87.6718},KLOR:{id:"KLOR",city:"Fort Rucker, Lowe Army Heliport",state:"AL",lat:31.35889,lon:-85.74833},KMDQ:{id:"KMDQ",city:"Huntsville, Madison County Executive Airport",state:"AL",lat:34.86139,lon:-86.55722},KMGM:{id:"KMGM",city:"Montgomery, Dannelly Field",state:"AL",lat:32.30028,lon:-86.40611},KMOB:{id:"KMOB",city:"Mobile, Mobile Regional Airport",state:"AL",lat:30.68833,lon:-88.24556},KMSL:{id:"KMSL",city:"Muscle Shoals, North West Alabama Regional Airport",state:"AL",lat:34.74389,lon:-87.59944},KMXF:{id:"KMXF",city:"Maxwell Air Force Base / Montgomery",state:"AL",lat:32.38333,lon:-86.36667},KOZR:{id:"KOZR",city:"Cairns Army Air Field / Ozark",state:"AL",lat:31.27672,lon:-85.71099},KPLR:{id:"KPLR",city:"St Clair County Airport",state:"AL",lat:33.5588,lon:-86.2491},KPRN:{id:"KPRN",city:"Mac Crenshaw Memorial Airport",state:"AL",lat:31.8457,lon:-86.6107},KSCD:{id:"KSCD",city:"Merkel Field Sylacauga Municipal Airport",state:"AL",lat:33.1718,lon:-86.3055},KSEM:{id:"KSEM",city:"Craig Field / Selma",state:"AL",lat:32.35,lon:-86.98333},KSXS:{id:"KSXS",city:"SCHELL AHP",state:"AL",lat:31.35,lon:-85.85},KTCL:{id:"KTCL",city:"Tuscaloosa Regional Airport",state:"AL",lat:33.21215,lon:-87.61554},KTOI:{id:"KTOI",city:"Troy, Troy Municipal Airport",state:"AL",lat:31.86056,lon:-86.01222},KAFN:{id:"KAFN",city:"Jaffrey Airport-Silver Ranch",state:"NH",lat:42.8066699,lon:-72.00127},KASH:{id:"KASH",city:"Nashua - Boire Field Airport",state:"NH",lat:42.77981,lon:-71.51409},KBML:{id:"KBML",city:"Berlin, Berlin Municipal Airport",state:"NH",lat:44.57611,lon:-71.17861},KCON:{id:"KCON",city:"Concord Municipal Airport",state:"NH",lat:43.20489,lon:-71.50257},KDAW:{id:"KDAW",city:"Rochester - Skyhaven Airport",state:"NH",lat:43.27939,lon:-70.92426},KEEN:{id:"KEEN",city:"Keene, Dillant-Hopkins Airport",state:"NH",lat:42.9,lon:-72.26667},KHIE:{id:"KHIE",city:"Whitefield - Mount Washington Regional Airport",state:"NH",lat:44.36595,lon:-71.55218},KLCI:{id:"KLCI",city:"Laconia, Laconia Municipal Airport",state:"NH",lat:43.56667,lon:-71.41667},KLEB:{id:"KLEB",city:"Lebanon Municipal Airport",state:"NH",lat:43.6271,lon:-72.30537},KMHT:{id:"KMHT",city:"Manchester Airport",state:"NH",lat:42.92964,lon:-71.43559},KMWN:{id:"KMWN",city:"Mount Washington",state:"NH",lat:44.27086,lon:-71.30337},KPSM:{id:"KPSM",city:"Pease Air Force Base / Portsmouth",state:"NH",lat:43.0833299,lon:-70.81667},KAIZ:{id:"KAIZ",city:"Kaiser Lake Ozark, Lee C Fine Memorial Airport",state:"MO",lat:38.1,lon:-92.55},KBBG:{id:"KBBG",city:"Branson",state:"MO",lat:36.5321,lon:-93.2005},KCDJ:{id:"KCDJ",city:"Chillicothe, Chillicothe Agri-Science Center",state:"MO",lat:39.81667,lon:-93.58333},KCGI:{id:"KCGI",city:"Cape Girardeau, Cape Girardeau Regional Airport",state:"MO",lat:37.22556,lon:-89.5783299},KCOU:{id:"KCOU",city:"Columbia, Columbia Regional Airport",state:"MO",lat:38.81694,lon:-92.21833},KDMO:{id:"KDMO",city:"Sedalia, Sedalia Memorial Airport",state:"MO",lat:38.71222,lon:-93.17444},KEOS:{id:"KEOS",city:"NEOSHOAIRPORT",state:"MO",lat:36.8108,lon:-94.39169},KEVU:{id:"KEVU",city:"Maryville Northwest Missouri Regional Airport",state:"MO",lat:40.3525,lon:-94.915},KEZZ:{id:"KEZZ",city:"Cameron Memorial Airport",state:"MO",lat:39.7275599,lon:-94.27639},KFAM:{id:"KFAM",city:"Farmington Airport",state:"MO",lat:37.76667,lon:-90.43333},KFWB:{id:"KFWB",city:"Branson West Muni - Emerson Field",state:"MO",lat:36.6985,lon:-93.4021999},KFYG:{id:"KFYG",city:"Washington Regional Airport",state:"MO",lat:38.5876,lon:-90.9937999},KBGF:{id:"KBGF",city:"Winchester Municipal Airport",state:"TN",lat:35.1775,lon:-86.0662},KBNA:{id:"KBNA",city:"Nashville, Nashville International Airport",state:"TN",lat:36.11889,lon:-86.68917},KCHA:{id:"KCHA",city:"Chattanooga, Lovell Field",state:"TN",lat:35.03333,lon:-85.2},KCKV:{id:"KCKV",city:"Clarksville Outlaw Field",state:"TN",lat:36.61689,lon:-87.41174},KCSV:{id:"KCSV",city:"Crossville, Crossville Memorial-Whitson Field Airport",state:"TN",lat:35.95139,lon:-85.0849999},KDKX:{id:"KDKX",city:"Knoxville Downtown Airport",state:"TN",lat:35.96581,lon:-83.87169},KDYR:{id:"KDYR",city:"Dyersburg, Dyersburg Municipal Airport",state:"TN",lat:36,lon:-89.4},KFYE:{id:"KFYE",city:"Somerville - Fayette County Airport",state:"TN",lat:35.2061,lon:-89.3929},KFYM:{id:"KFYM",city:"Fayetteville Municipal Airport",state:"TN",lat:35.0597,lon:-86.5639999},KGCY:{id:"KGCY",city:"Greeneville-Greene County Municipal Airport",state:"TN",lat:36.19601,lon:-82.81099},KGKT:{id:"KGKT",city:"Sevierville Gatlinburg - Pigeon Forge Airport",state:"TN",lat:35.85681,lon:-83.53334},KGZS:{id:"KGZS",city:"Pulaski Abernathy Field Airport",state:"TN",lat:35.1537,lon:-87.0568},KHZD:{id:"KHZD",city:"Huntingdon Carroll County Airport",state:"TN",lat:36.08896,lon:-88.46538},KJAU:{id:"KJAU",city:"Jacksboro Campbell County Airport",state:"TN",lat:36.3341,lon:-84.163},KJWN:{id:"KJWN",city:"John C Tune Airport",state:"TN",lat:36.18521,lon:-86.88331},KLUG:{id:"KLUG",city:"Ellington Airport",state:"TN",lat:35.50697,lon:-86.80389},KMBT:{id:"KMBT",city:"Murfreesboro Municipal Airport",state:"TN",lat:35.87866,lon:-86.37749},KMEG:{id:"KMEG",city:"Memphis WFO",state:"TN",lat:35.0563999,lon:-89.9863},KMEM:{id:"KMEM",city:"Memphis International Airport",state:"TN",lat:35.05644,lon:-89.98634},KMKL:{id:"KMKL",city:"Jackson, McKellar-Sipes Regional Airport",state:"TN",lat:35.59306,lon:-88.91667},KMMI:{id:"KMMI",city:"Athens McMinn County Airport",state:"TN",lat:35.3973,lon:-84.5626},KMNV:{id:"KMNV",city:"Monroe County Airport",state:"TN",lat:35.54522,lon:-84.38039},KMOR:{id:"KMOR",city:"Morristown Moore-Murrell Airport",state:"TN",lat:36.1794,lon:-83.3754},KMQY:{id:"KMQY",city:"Smyrna, Smyrna Airport",state:"TN",lat:36.00889,lon:-86.52},KMRC:{id:"KMRC",city:"Columbia / Maury County",state:"TN",lat:35.55,lon:-87.18333},KNQA:{id:"KNQA",city:"Millington, Millington Municipal Airport",state:"TN",lat:35.35667,lon:-89.8702799},KOQT:{id:"KOQT",city:"Oak Ridge",state:"TN",lat:36.02278,lon:-84.23333},KPHT:{id:"KPHT",city:"Paris - Henry County Airport",state:"TN",lat:36.34,lon:-88.38},KPVE:{id:"KPVE",city:"Lexington-Parsons Beech River Regional Airport",state:"TN",lat:35.6564,lon:-88.1954},KRKW:{id:"KRKW",city:"Rockwood Municipal Airport",state:"TN",lat:35.92501,lon:-84.691},KRNC:{id:"KRNC",city:"McMinnville Warren County Memorial Airport",state:"TN",lat:35.6991,lon:-85.8402},KSCX:{id:"KSCX",city:"Scott Municipal Airport",state:"TN",lat:36.45569,lon:-84.58575},KSNH:{id:"KSNH",city:"SAVANNAH/HARDIN CO",state:"TN",lat:35.17,lon:-88.22},KSRB:{id:"KSRB",city:"Sparta Upper Cumberland Regional Airport",state:"TN",lat:36.0559,lon:-85.5307},KSYI:{id:"KSYI",city:"Shelbyville Bomar Field & Shelbyville Municipal Airport",state:"TN",lat:35.5593999,lon:-86.4425},KTHA:{id:"KTHA",city:"Tullahoma Regional Airport/William Northern Field",state:"TN",lat:35.38,lon:-86.2467},KTRI:{id:"KTRI",city:"Bristol / Johnson / Kingsport, Tri-City Regional Airport",state:"TN",lat:36.47972,lon:-82.39889},KTYS:{id:"KTYS",city:"Knoxville, McGhee Tyson Airport",state:"TN",lat:35.81806,lon:-83.98583},KUCY:{id:"KUCY",city:"Union City - Everett-Stewart Regional Airport",state:"TN",lat:36.38,lon:-88.98},KXNX:{id:"KXNX",city:"Sumner County Regional Airport",state:"TN",lat:36.3750799,lon:-86.40842},KBAC:{id:"KBAC",city:"Valley City",state:"ND",lat:46.9412,lon:-98.018},KBIS:{id:"KBIS",city:"Bismarck, Bismarck Municipal Airport",state:"ND",lat:46.7825,lon:-100.75722},KBWP:{id:"KBWP",city:"Wahpeton, Harry Stern Airport",state:"ND",lat:46.24389,lon:-96.60722},KBWW:{id:"KBWW",city:"Bowman Regional Airport",state:"ND",lat:46.16551,lon:-103.30074},KDIK:{id:"KDIK",city:"Dickinson, Dickinson Municipal Airport",state:"ND",lat:46.79722,lon:-102.80194},KDVL:{id:"KDVL",city:"Devils Lake, Devils Lake Municipal Airport",state:"ND",lat:48.11667,lon:-98.91667},KFAR:{id:"KFAR",city:"Fargo, Hector International Airport",state:"ND",lat:46.92528,lon:-96.81111},KGAF:{id:"KGAF",city:"GRAFTON",state:"ND",lat:48.4,lon:-97.37},KGFK:{id:"KGFK",city:"Grand Forks, Grand Forks International Airport",state:"ND",lat:47.94806,lon:-97.1825},KGWR:{id:"KGWR",city:"Gwinner",state:"ND",lat:46.2187,lon:-97.6435},KHEI:{id:"KHEI",city:"Hettinger, Hettinger Municipal Airport",state:"ND",lat:46.01056,lon:-102.64972},KHZE:{id:"KHZE",city:"HAZEN",state:"ND",lat:47.28,lon:-101.58},KJMS:{id:"KJMS",city:"Jamestown, Jamestown Municipal Airport",state:"ND",lat:46.92972,lon:-98.67833},KMIB:{id:"KMIB",city:"Minot Air Force Base",state:"ND",lat:48.41667,lon:-101.35},KMOT:{id:"KMOT",city:"Minot International Airport",state:"ND",lat:48.25203,lon:-101.2689},KRDR:{id:"KRDR",city:"Grand Forks Air Force Base",state:"ND",lat:47.96667,lon:-97.4},KRUG:{id:"KRUG",city:"RUGBY",state:"ND",lat:48.38,lon:-100.02},KXWA:{id:"KXWA",city:"Williston Basin International Airport",state:"ND",lat:48.26086,lon:-103.75114},KACK:{id:"KACK",city:"Nantucket, Nantucket Memorial Airport",state:"MA",lat:41.25389,lon:-70.05972},KAQW:{id:"KAQW",city:"North Adams Harriman-and-West Airport",state:"MA",lat:42.69731,lon:-73.16955},KBAF:{id:"KBAF",city:"Westfield, Barnes Municipal Airport",state:"MA",lat:42.15972,lon:-72.71278},KBED:{id:"KBED",city:"Laurence G Hanscom Field Airport",state:"MA",lat:42.46811,lon:-71.29463},KBOS:{id:"KBOS",city:"Boston, Logan International Airport",state:"MA",lat:42.36056,lon:-71.01056},KBVY:{id:"KBVY",city:"Beverly, Beverly Municipal Airport",state:"MA",lat:42.58361,lon:-70.91639},KCEF:{id:"KCEF",city:"Chicopee Falls / Westover Air Force Base",state:"MA",lat:42.2,lon:-72.53333},KCQX:{id:"KCQX",city:"Chatham, Chatham Municipal Airport",state:"MA",lat:41.6875,lon:-69.99333},KEWB:{id:"KEWB",city:"New Bedford, New Bedford Regional Airport",state:"MA",lat:41.67528,lon:-70.95694},KFIT:{id:"KFIT",city:"Fitchburg, Fitchburg Municipal Airport",state:"MA",lat:42.55194,lon:-71.75583},KFMH:{id:"KFMH",city:"Otis Air National Guard Base",state:"MA",lat:41.65,lon:-70.51667},KGHG:{id:"KGHG",city:"Marshfield Airport",state:"MA",lat:42.0983,lon:-70.6722},KHYA:{id:"KHYA",city:"Hyannis, Barnstable Municipal-Boardman Airport",state:"MA",lat:41.67194,lon:-70.26972},KLWM:{id:"KLWM",city:"Lawrence Municipal Airport",state:"MA",lat:42.7126,lon:-71.12553},KMVY:{id:"KMVY",city:"Marthas Vineyard Airport",state:"MA",lat:41.39298,lon:-70.61588},KORE:{id:"KORE",city:"Orange Municipal Airport",state:"MA",lat:42.57,lon:-72.28693},KORH:{id:"KORH",city:"Worcester, Worcester Regional Airport",state:"MA",lat:42.27056,lon:-71.87306},KOWD:{id:"KOWD",city:"Norwood, Norwood Memorial Airport",state:"MA",lat:42.19083,lon:-71.17389},KPSF:{id:"KPSF",city:"Pittsfield Municipal Airport",state:"MA",lat:42.42691,lon:-73.28897},KPVC:{id:"KPVC",city:"Provincetown Municipal Airport",state:"MA",lat:42.07436,lon:-70.21816},KPYM:{id:"KPYM",city:"Plymouth, Plymouth Municipal Airport",state:"MA",lat:41.90861,lon:-70.72806},KTAN:{id:"KTAN",city:"Taunton, Taunton Municipal Airport",state:"MA",lat:41.87556,lon:-71.0211099},KACY:{id:"KACY",city:"Atlantic City, Atlantic City International Airport",state:"NJ",lat:39.45202,lon:-74.56699},KBLM:{id:"KBLM",city:"Belmar-Farmingdale",state:"NJ",lat:40.18333,lon:-74.13333},KCDW:{id:"KCDW",city:"Caldwell, Essex County Airport",state:"NJ",lat:40.87639,lon:-74.28306},KEWR:{id:"KEWR",city:"Newark, Newark International Airport",state:"NJ",lat:40.6825,lon:-74.16944},KFWN:{id:"KFWN",city:"Sussex, Sussex Airport",state:"NJ",lat:41.19925,lon:-74.62594},KLDJ:{id:"KLDJ",city:"Linden Airport",state:"NJ",lat:40.6174,lon:-74.2446},KMIV:{id:"KMIV",city:"Millville, Millville Municipal Airport",state:"NJ",lat:39.36623,lon:-75.0778},KMJX:{id:"KMJX",city:"Miller Air Park",state:"NJ",lat:39.927,lon:-74.292},KMMU:{id:"KMMU",city:"Morristown Municipal",state:"NJ",lat:40.8,lon:-74.41667},KNEL:{id:"KNEL",city:"Lakehurst Naval Air Station",state:"NJ",lat:40.03661,lon:-74.35251},KSMQ:{id:"KSMQ",city:"Somerville, Somerset Airport",state:"NJ",lat:40.6240499,lon:-74.66898},KTEB:{id:"KTEB",city:"Teterboro, Teterboro Airport",state:"NJ",lat:40.85889,lon:-74.05667},KTTN:{id:"KTTN",city:"Trenton, Mercer County Airport",state:"NJ",lat:40.27639,lon:-74.81639},KVAY:{id:"KVAY",city:"Mount Holly, South Jersey Regional Airport",state:"NJ",lat:39.94076,lon:-74.84071},KWRI:{id:"KWRI",city:"Mcguire Air Force Base",state:"NJ",lat:40.01667,lon:-74.6},KWWD:{id:"KWWD",city:"Wildwood, Cape May County Airport",state:"NJ",lat:39.01667,lon:-74.91667},KADW:{id:"KADW",city:"Camp Springs / Andrews Air Force Base",state:"MD",lat:38.81667,lon:-76.85},KANP:{id:"KANP",city:"LEEAIRPORT",state:"MD",lat:38.94287,lon:-76.5683899},KAPG:{id:"KAPG",city:"Phillips Army Air Field / Aberdeen",state:"MD",lat:39.46667,lon:-76.16667},KBWI:{id:"KBWI",city:"Baltimore, Baltimore-Washington International Airport",state:"MD",lat:39.17329,lon:-76.68404},KCGE:{id:"KCGE",city:"Cambridge-Dorchester Airport",state:"MD",lat:38.5393,lon:-76.0304},KCGS:{id:"KCGS",city:"College Park Airport",state:"MD",lat:38.9806,lon:-76.9223},KDMW:{id:"KDMW",city:"Carroll County Regional Jack B Poage Field",state:"MD",lat:39.6083,lon:-77.0077},KEDG:{id:"KEDG",city:"WEIDE",state:"MD",lat:39.39205,lon:-76.29106},KESN:{id:"KESN",city:"Easton / Newman Field",state:"MD",lat:38.8,lon:-76.06667},KFDK:{id:"KFDK",city:"Frederick Municipal Airport",state:"MD",lat:39.41775,lon:-77.36982},KFME:{id:"KFME",city:"Fort Meade / Tipton",state:"MD",lat:39.0833299,lon:-76.76667},KGAI:{id:"KGAI",city:"Gaithersburg - Montgomery County Airport",state:"MD",lat:39.16957,lon:-77.16551},KHGR:{id:"KHGR",city:"Hagerstown, Washington County Regional Airport",state:"MD",lat:39.70583,lon:-77.73},KMTN:{id:"KMTN",city:"Baltimore / Martin",state:"MD",lat:39.3333299,lon:-76.41667},KNAK:{id:"KNAK",city:"Annapolis, United States Naval Academy",state:"MD",lat:38.99125,lon:-76.48907},KNHK:{id:"KNHK",city:"Patuxent River, Naval Air Station",state:"MD",lat:38.27861,lon:-76.41389},KNUI:{id:"KNUI",city:"St. Inigoes, Webster Field, Naval Electronic Systems Engineering Activity",state:"MD",lat:38.14889,lon:-76.42},KOXB:{id:"KOXB",city:"Ocean City, Ocean City Municipal Airport",state:"MD",lat:38.31056,lon:-75.12389},KRSP:{id:"KRSP",city:"Camp David",state:"MD",lat:39.645,lon:-77.468},KSBY:{id:"KSBY",city:"Salisbury, Salisbury-Ocean City Wicomico County Regional Airport",state:"MD",lat:38.34056,lon:-75.51028},KVKX:{id:"KVKX",city:"POTOMAC",state:"MD",lat:38.74761,lon:-76.95719},KAIK:{id:"KAIK",city:"Aiken Municipal Airport",state:"SC",lat:33.649,lon:-81.685},KAND:{id:"KAND",city:"Anderson, Anderson County Airport",state:"SC",lat:34.49778,lon:-82.70972},KAQX:{id:"KAQX",city:"Allendale County Airport",state:"SC",lat:32.9951,lon:-81.2703},KARW:{id:"KARW",city:"Beaufort County Airport",state:"SC",lat:32.412,lon:-80.634},KBBP:{id:"KBBP",city:"Marlboro County Jetport",state:"SC",lat:34.622,lon:-79.734},KBNL:{id:"KBNL",city:"Barnwell Regional Airport",state:"SC",lat:33.258,lon:-81.388},KCAE:{id:"KCAE",city:"Columbia, Columbia Metropolitan Airport",state:"SC",lat:33.94194,lon:-81.11806},KCDN:{id:"KCDN",city:"Camden Woodward Field",state:"SC",lat:34.284,lon:-80.565},KCEU:{id:"KCEU",city:"Clemson, Clemson-Oconee County Airport",state:"SC",lat:34.67222,lon:-82.88139},KCHS:{id:"KCHS",city:"Charleston, Charleston Air Force Base",state:"SC",lat:32.89889,lon:-80.04056},KCKI:{id:"KCKI",city:"Kingstree Williamsburg Regional Airport",state:"SC",lat:33.717,lon:-79.857},KCQW:{id:"KCQW",city:"Cheraw Municipal Lynch Bellinger Field",state:"SC",lat:34.713,lon:-79.9569999},KCRE:{id:"KCRE",city:"North Myrtle Beach Grand Strand Airport",state:"SC",lat:33.81619,lon:-78.7204299},KCUB:{id:"KCUB",city:"Columbia - Jim Hamilton L.B. Owens Airport",state:"SC",lat:33.97083,lon:-80.99444},KDCM:{id:"KDCM",city:"Chester Catawba Regional Airport",state:"SC",lat:34.789,lon:-81.196},KDYB:{id:"KDYB",city:"Summerville Airport",state:"SC",lat:33.063,lon:-80.279},KEOE:{id:"KEOE",city:"Newberry County Airport",state:"SC",lat:34.309,lon:-81.64},KFDW:{id:"KFDW",city:"Winnsboro/Fairfield County Airport",state:"SC",lat:34.315,lon:-81.109},KFLO:{id:"KFLO",city:"Florence - Florence Regional Airport",state:"SC",lat:34.1877799,lon:-79.73083},KGGE:{id:"KGGE",city:"Georgetown County Airport ",state:"SC",lat:33.3117,lon:-79.3196},KGMU:{id:"KGMU",city:"Greenville Downtown Airport",state:"SC",lat:34.84873,lon:-82.35004},KGRD:{id:"KGRD",city:"Greenwood, Greenwood County Airport",state:"SC",lat:34.24722,lon:-82.15472},KGSP:{id:"KGSP",city:"Greer, Greenville-Spartanburg Airport",state:"SC",lat:34.88389,lon:-82.22083},KGYH:{id:"KGYH",city:"Greenville-Donaldson Center Airport",state:"SC",lat:34.7583,lon:-82.3764},KHVS:{id:"KHVS",city:"Hartsville Regional Airport",state:"SC",lat:34.403,lon:-80.119},KHXD:{id:"KHXD",city:"Hilton Head Island, Hilton Head Airport",state:"SC",lat:32.21667,lon:-80.7},KHYW:{id:"KHYW",city:"Conway Horry County Airport",state:"SC",lat:33.829,lon:-79.122},KJZI:{id:"KJZI",city:"Charleston Executive Airport",state:"SC",lat:32.701,lon:-80.003},KLKR:{id:"KLKR",city:"Lancaster County-mc Whirter Field",state:"SC",lat:34.723,lon:-80.855},KLQK:{id:"KLQK",city:"Pickens County Airport",state:"SC",lat:34.80997,lon:-82.70289},KLRO:{id:"KLRO",city:"Mount Pleasant Regional-Faison Field",state:"SC",lat:32.898,lon:-79.783},KLUX:{id:"KLUX",city:"Laurens County Airport",state:"SC",lat:34.507,lon:-81.947},KMAO:{id:"KMAO",city:"Marion County Airport",state:"SC",lat:34.181,lon:-79.3349999},KMKS:{id:"KMKS",city:"Moncks Corner Berkeley County",state:"SC",lat:33.1855,lon:-80.0361999},KMMT:{id:"KMMT",city:"McEntire Air National Guard Weather Facility Base",state:"SC",lat:33.91667,lon:-80.8},KMNI:{id:"KMNI",city:"Manning / Cooper Regional",state:"SC",lat:33.5833299,lon:-80.2166699},KMYR:{id:"KMYR",city:"Myrtle Beach International Airport",state:"SC",lat:33.67975,lon:-78.92833},KNBC:{id:"KNBC",city:"Beaufort, Marine Corps Air Station",state:"SC",lat:32.4936099,lon:-80.7030599},KOGB:{id:"KOGB",city:"Orangeburg, Orangeburg Municipal Airport",state:"SC",lat:33.46389,lon:-80.85361},KRBW:{id:"KRBW",city:"Walterboro Lowcountry Regional Airport",state:"SC",lat:32.921,lon:-80.641},KSMS:{id:"KSMS",city:"Sumter Airport",state:"SC",lat:33.995,lon:-80.361},KSPA:{id:"KSPA",city:"Spartanburg Memorial",state:"SC",lat:34.91667,lon:-81.95},KSSC:{id:"KSSC",city:"Shaw Air Force Base",state:"SC",lat:33.96667,lon:-80.48333},KUDG:{id:"KUDG",city:"Darlington, Darlington County Jetport Airport",state:"SC",lat:34.44917,lon:-79.89028},KUZA:{id:"KUZA",city:"Rock Hill, Rock Hill - York County Airport",state:"SC",lat:34.98389,lon:-81.05583},KXNO:{id:"KXNO",city:"North Air Force Auxiliary Field",state:"SC",lat:33.60949,lon:-81.08118},KAUG:{id:"KAUG",city:"Augusta, Augusta State Airport",state:"ME",lat:44.32056,lon:-69.79722},KBGR:{id:"KBGR",city:"Bangor, Bangor International Airport",state:"ME",lat:44.79722,lon:-68.81861},KBHB:{id:"KBHB",city:"Bar Harbor, Hancock County-Bar Harbor Airport",state:"ME",lat:44.45,lon:-68.36667},KBXM:{id:"KBXM",city:"BRUNSWICK",state:"ME",lat:43.8923599,lon:-69.93883},KCAR:{id:"KCAR",city:"Caribou, Caribou Municipal Airport",state:"ME",lat:46.86722,lon:-68.01333},KFVE:{id:"KFVE",city:"Frenchville, Northern Aroostook Regional Airport",state:"ME",lat:47.2849999,lon:-68.30722},KGNR:{id:"KGNR",city:"Greenville",state:"ME",lat:45.4646199,lon:-69.5538},KHUL:{id:"KHUL",city:"Houlton, Houlton International Airport",state:"ME",lat:46.12306,lon:-67.79194},KIWI:{id:"KIWI",city:"Wiscasset Airport",state:"ME",lat:43.96401,lon:-69.7107599},KIZG:{id:"KIZG",city:"Fryeburg, Eastern Slopes Regional Airport",state:"ME",lat:43.98917,lon:-70.95028},KLEW:{id:"KLEW",city:"Auburn-Lewiston",state:"ME",lat:44.05,lon:-70.28333},KMLT:{id:"KMLT",city:"Millinocket, Millinocket Municipal Airport",state:"ME",lat:45.64778,lon:-68.69194},KPQI:{id:"KPQI",city:"Presque Isle",state:"ME",lat:46.68333,lon:-68.05},KPWM:{id:"KPWM",city:"Portland, Portland International Jetport",state:"ME",lat:43.64222,lon:-70.30444},KRKD:{id:"KRKD",city:"Rockland, Knox County Regional Airport",state:"ME",lat:44.06667,lon:-69.1},KSFM:{id:"KSFM",city:"Sanford, Sanford Regional Airport",state:"ME",lat:43.4,lon:-70.7166699},KWVL:{id:"KWVL",city:"Waterville, Waterville Robert LaFleur Airport",state:"ME",lat:44.53333,lon:-69.68333},KBIX:{id:"KBIX",city:"Keesler Air Force Base / Biloxi",state:"MS",lat:30.41667,lon:-88.91667},KCBM:{id:"KCBM",city:"Columbus Air Force Base",state:"MS",lat:33.65,lon:-88.45},KCKM:{id:"KCKM",city:"Fletcher Field, Clarksdale",state:"MS",lat:34.2997,lon:-90.5123},KCRX:{id:"KCRX",city:"Corinth",state:"MS",lat:34.915,lon:-88.6035},KDLP:{id:"KDLP",city:"WEST DELTA OIL PLATFORM",state:"MS",lat:29.12,lon:-89.55},KGLH:{id:"KGLH",city:"Greenville, Mid Delta Regional Airport",state:"MS",lat:33.48278,lon:-90.98556},KGPT:{id:"KGPT",city:"Gulfport - Gulfport-Biloxi International Airport",state:"MS",lat:30.41194,lon:-89.08083},KGTR:{id:"KGTR",city:"Columbus/West Point/Starkville, Golden Triangle Regional Airport",state:"MS",lat:33.45,lon:-88.58333},KGWO:{id:"KGWO",city:"Greenwood, Greenwood-LeFlore Airport",state:"MS",lat:33.4925,lon:-90.0836099},KHBG:{id:"KHBG",city:"Hattiesburg, Bobby L Chain Municipal Airport",state:"MS",lat:31.26945,lon:-89.25613},KHEZ:{id:"KHEZ",city:"Natchez, Hardy-Anders Field Natchez-Adams County Airport",state:"MS",lat:31.61593,lon:-91.29724},KHKS:{id:"KHKS",city:"Jackson, Hawkins Field Airport",state:"MS",lat:32.33472,lon:-90.2225},KHSA:{id:"KHSA",city:"Bay St. Louis, Stennis International Airport",state:"MS",lat:30.36778,lon:-89.45472},KJAN:{id:"KJAN",city:"Jackson, Jackson International Airport",state:"MS",lat:32.3197199,lon:-90.0775},KJVW:{id:"KJVW",city:"JB Williams Airport",state:"MS",lat:32.30447,lon:-90.41053},KLUL:{id:"KLUL",city:"LAUREL/NOBLE FIELD",state:"MS",lat:31.67,lon:-89.17},KMBO:{id:"KMBO",city:"Madison Bruce Campbell Field Airport",state:"MS",lat:32.4384,lon:-90.1014},KMCB:{id:"KMCB",city:"McComb, McComb / Pike County / John E Lewis Field Airport",state:"MS",lat:31.17833,lon:-90.47194},KMEI:{id:"KMEI",city:"Meridian, Key Field",state:"MS",lat:32.33806,lon:-88.74778},KMJD:{id:"KMJD",city:"Picayune Municipal Airport",state:"MS",lat:30.48747,lon:-89.65119},KNMM:{id:"KNMM",city:"Meridian, Meridian Naval Air Station - McCain Field",state:"MS",lat:32.55194,lon:-88.55528},KOLV:{id:"KOLV",city:"Olive Branch, Olive Branch Airport",state:"MS",lat:34.97889,lon:-89.78694},KPIB:{id:"KPIB",city:"Hattiesburg/Laurel, Hattiesburg-Laurel Regional Airport",state:"MS",lat:31.46667,lon:-89.33333},KPMU:{id:"KPMU",city:"Batesville Panola County",state:"MS",lat:34.3635,lon:-89.8929},KPQL:{id:"KPQL",city:"Moss Point - Trent Lott International Airport",state:"MS",lat:30.46305,lon:-88.53155},KSTF:{id:"KSTF",city:"George M Bryan Airport, Starkville",state:"MS",lat:33.4331,lon:-88.8486},KTUP:{id:"KTUP",city:"Tupelo, Tupelo Regional Airport",state:"MS",lat:34.26806,lon:-88.77},KUOX:{id:"KUOX",city:"Oxford, University-Oxford Airport",state:"MS",lat:34.38444,lon:-89.53556},KUTA:{id:"KUTA",city:"Tunica, Tunica Municipal Airport",state:"MS",lat:34.68083,lon:-90.34639},KVKS:{id:"KVKS",city:"Vicksburg Municipal",state:"MS",lat:32.23333,lon:-90.93333},KBAM:{id:"KBAM",city:"Battle Mountain - Lander County Airport",state:"NV",lat:40.5989999,lon:-116.8743},KBVU:{id:"KBVU",city:"Boulder City Municipal Airport",state:"NV",lat:35.9475,lon:-114.8611},KCXP:{id:"KCXP",city:"Carson City Airport",state:"NV",lat:39.19056,lon:-119.73191},KDRA:{id:"KDRA",city:"Mercury, Desert Rock Airport",state:"NV",lat:36.6207,lon:-116.02868},KEKO:{id:"KEKO",city:"Elko, Elko Regional Airport",state:"NV",lat:40.8240399,lon:-115.78635},KELY:{id:"KELY",city:"Ely, Ely Airport",state:"NV",lat:39.295,lon:-114.84528},KHND:{id:"KHND",city:"Las Vegas - Henderson Executive Airport",state:"NV",lat:35.97665,lon:-115.13221},KHTH:{id:"KHTH",city:"Hawthorne Industrial Airport",state:"NV",lat:38.54482,lon:-118.63137},KINS:{id:"KINS",city:"Nellis AFB - Indian Springs Auxiliary Airfield",state:"NV",lat:36.58573,lon:-115.69008},KLAS:{id:"KLAS",city:"Las Vegas, McCarran International Airport",state:"NV",lat:36.07188,lon:-115.1634},KLOL:{id:"KLOL",city:"Lovelock, Derby Field Airport",state:"NV",lat:40.0683999,lon:-118.57017},KLSV:{id:"KLSV",city:"Nellis Air Force Base",state:"NV",lat:36.23333,lon:-115.03333},KMEV:{id:"KMEV",city:"Minden-Tahoe Airport",state:"NV",lat:38.9963,lon:-119.75},KNFL:{id:"KNFL",city:"Fallon, Naval Air Station",state:"NV",lat:39.43222,lon:-118.68556},KRNO:{id:"KRNO",city:"Reno, Reno Tahoe International Airport",state:"NV",lat:39.50776,lon:-119.76819},KRTS:{id:"KRTS",city:"Reno/Stead",state:"NV",lat:39.6682,lon:-119.8764},KTMT:{id:"KTMT",city:"Austin Airport",state:"NV",lat:39.46794,lon:-117.19745},KTPH:{id:"KTPH",city:"Tonopah, Tonopah Airport",state:"NV",lat:38.06028,lon:-117.08722},KVGT:{id:"KVGT",city:"Las Vegas, North Las Vegas Airport",state:"NV",lat:36.21205,lon:-115.19395},KWMC:{id:"KWMC",city:"Winnemucca, Winnemucca Municipal Airport",state:"NV",lat:40.90194,lon:-117.80722},KAFO:{id:"KAFO",city:"Afton WY",state:"WY",lat:42.7113299,lon:-110.94217},KARL:{id:"KARL",city:"I80 - Arlington",state:"WY",lat:41.5980599,lon:-106.21487},KBFU:{id:"KBFU",city:"WY59 - Belle Fourche",state:"WY",lat:43.93253,lon:-105.4467},KBIT:{id:"KBIT",city:"I80/US30 - Bitter Creek",state:"WY",lat:41.64599,lon:-108.5836},KBPI:{id:"KBPI",city:"Big Piney - Marbleton Airport",state:"WY",lat:42.57805,lon:-110.10972},KBRX:{id:"KBRX",city:"I25/US87 - Bordeaux Interchange",state:"WY",lat:41.93066,lon:-104.9436},KBVR:{id:"KBVR",city:"US287/WY789 - Beaver Rim",state:"WY",lat:42.58565,lon:-108.28199},KBYG:{id:"KBYG",city:"Buffalo - Johnson County Airport",state:"WY",lat:44.38122,lon:-106.71947},KCHJ:{id:"KCHJ",city:"WY296 - Chief Joseph",state:"WY",lat:44.73997,lon:-109.38088},KCMS:{id:"KCMS",city:"I80/US30 - Peru Hill",state:"WY",lat:41.54958,lon:-109.60197},KCOD:{id:"KCOD",city:"Cody",state:"WY",lat:44.51667,lon:-109.01667},KCPR:{id:"KCPR",city:"Casper, Natrona County International Airport",state:"WY",lat:42.8975,lon:-106.47306},KCTD:{id:"KCTD",city:"I80/US30 - Continental Divide",state:"WY",lat:41.71586,lon:-107.78256},KCYS:{id:"KCYS",city:"Cheyenne, Cheyenne Airport",state:"WY",lat:41.15789,lon:-104.80812},KDGW:{id:"KDGW",city:"Douglas, Converse County Airport",state:"WY",lat:42.79417,lon:-105.38194},KDHS:{id:"KDHS",city:"I90 - Dead Horse",state:"WY",lat:44.21906,lon:-106.10478},KDRC:{id:"KDRC",city:"I25 - Deer Creek",state:"WY",lat:42.83687,lon:-105.86063},KDUB:{id:"KDUB",city:"Dubois Municipal Airport",state:"WY",lat:43.5484,lon:-109.6903},KDWX:{id:"KDWX",city:"Dixon Airport",state:"WY",lat:41.03704,lon:-107.49976},KEAN:{id:"KEAN",city:"Phifer Airfield - Wheatland",state:"WY",lat:42.05472,lon:-104.93711},KECS:{id:"KECS",city:"Mondell Field",state:"WY",lat:43.8854,lon:-104.3179},KEHY:{id:"KEHY",city:"Elk Mountain AWOS",state:"WY",lat:41.7253,lon:-106.4594},KEMM:{id:"KEMM",city:"KEMMERER",state:"WY",lat:41.82,lon:-110.56},KEVW:{id:"KEVW",city:"Evanston, Evanston-Uinta County Burns Field",state:"WY",lat:41.27306,lon:-111.03056},KFBR:{id:"KFBR",city:"Fort Bridger WY",state:"WY",lat:41.392,lon:-110.40683},KFEW:{id:"KFEW",city:"Francis E Warren Air Force Base Heliport",state:"WY",lat:41.13332,lon:-104.8671899},KFIR:{id:"KFIR",city:"I80/US189 - First Divide",state:"WY",lat:41.27649,lon:-110.80066},KGCC:{id:"KGCC",city:"Gillette, Gillette-Campbell County Airport",state:"WY",lat:44.33944,lon:-105.54194},KGEY:{id:"KGEY",city:"South Big Horn County Airport",state:"WY",lat:44.5174,lon:-108.0752},KGUN:{id:"KGUN",city:"US85 - Gun Barrel",state:"WY",lat:41.44368,lon:-104.34428},KGUR:{id:"KGUR",city:"Camp Guernsey",state:"WY",lat:42.2597,lon:-104.7283},KHLD:{id:"KHLD",city:"US20/US26 - Hiland",state:"WY",lat:43.0923,lon:-107.32198},KHSG:{id:"KHSG",city:"Hot Springs County Airport",state:"WY",lat:43.7136,lon:-108.3897},KIDV:{id:"KIDV",city:"I25/US87 - I-25 Divide",state:"WY",lat:43.89864,lon:-106.63833},KIKA:{id:"KIKA",city:"I90 - Inyan Kara",state:"WY",lat:44.29414,lon:-104.62926},KJAC:{id:"KJAC",city:"Jackson, Jackson Hole Airport",state:"WY",lat:43.6,lon:-110.73333},KLAR:{id:"KLAR",city:"Laramie Regional Airport",state:"WY",lat:41.3165,lon:-105.67287},KLND:{id:"KLND",city:"Lander",state:"WY",lat:42.81472,lon:-108.72806},KMTR:{id:"KMTR",city:"WY120 - Meeteetse Rim",state:"WY",lat:44.27011,lon:-108.87343},KPAT:{id:"KPAT",city:"WY220 - Pathfinder",state:"WY",lat:42.5581,lon:-106.8453399},KPER:{id:"KPER",city:"I80/US30 - Green River Tunnel East",state:"WY",lat:41.53186,lon:-109.45995},KPNA:{id:"KPNA",city:"Pinedale, Ralph Wenz Field Airport",state:"WY",lat:42.79528,lon:-109.80694},KPOY:{id:"KPOY",city:"Powell Municipal Airport",state:"WY",lat:44.8671999,lon:-108.7934},KPUM:{id:"KPUM",city:"US287 - Pumpkin Vine",state:"WY",lat:41.05218,lon:-105.46906},KREC:{id:"KREC",city:"WY28 - Lower Red Canyon",state:"WY",lat:42.61795,lon:-108.61093},KRIW:{id:"KRIW",city:"Riverton Regional Airport",state:"WY",lat:43.06219,lon:-108.44701},KRKS:{id:"KRKS",city:"Rock Springs, Rock Springs-Sweetwater County Airport",state:"WY",lat:41.59417,lon:-109.06528},KRWL:{id:"KRWL",city:"Rawlins Municipal Airport",state:"WY",lat:41.80648,lon:-107.19516},KSAA:{id:"KSAA",city:"Saratoga WY",state:"WY",lat:41.44483,lon:-106.8235},KSGE:{id:"KSGE",city:"US30 - Sage Junction",state:"WY",lat:41.82447,lon:-110.90764},KSHC:{id:"KSHC",city:"WY372 - Shute Creek",state:"WY",lat:41.94409,lon:-110.00399},KSHR:{id:"KSHR",city:"Sheridan County Airport",state:"WY",lat:44.7603099,lon:-106.97411},KSKL:{id:"KSKL",city:"WY230 - Skyline",state:"WY",lat:41.13753,lon:-106.57687},KSOU:{id:"KSOU",city:"WY28 - South Pass",state:"WY",lat:42.47752,lon:-108.8444},KTBX:{id:"KTBX",city:"Boysen",state:"WY",lat:43.4667,lon:-108.2333},KTET:{id:"KTET",city:"WY22 - Teton Pass",state:"WY",lat:43.49873,lon:-110.9562},KTMH:{id:"KTMH",city:"I25/US87 - Twenty Mile Hill",state:"WY",lat:43.12271,lon:-106.33705},KTOR:{id:"KTOR",city:"Torrington Municipal Airport",state:"WY",lat:42.06134,lon:-104.15842},KVDW:{id:"KVDW",city:"I80/US30 - Vedauwoo",state:"WY",lat:41.15687,lon:-105.40237},KWRL:{id:"KWRL",city:"Worland, Worland Municipal Airport",state:"WY",lat:43.9658299,lon:-107.95083},KWTR:{id:"KWTR",city:"I25/US87 - Whitaker",state:"WY",lat:41.41772,lon:-104.87502},KWYH:{id:"KWYH",city:"I25/US87 - Wyo Hill",state:"WY",lat:41.04746,lon:-104.8901},KAAS:{id:"KAAS",city:"Taylor County Airport",state:"KY",lat:37.35828,lon:-85.30942},KBRY:{id:"KBRY",city:"Samuels Field Airport",state:"KY",lat:37.81433,lon:-85.49964},KBWG:{id:"KBWG",city:"Bowling Green, Bowling Green-Warren County Regional Airport",state:"KY",lat:36.96444,lon:-86.41944},KBYL:{id:"KBYL",city:"Williamsburg-Whitley County Airport",state:"KY",lat:36.7954099,lon:-84.2012699},KCEY:{id:"KCEY",city:"Murray Kyle Oakley Field, KY",state:"KY",lat:36.6646,lon:-88.3728},KCPF:{id:"KCPF",city:"Wendell H Ford Airport",state:"KY",lat:37.38736,lon:-83.26161},KCVG:{id:"KCVG",city:"Cincinnati/Northern Kentucky International Airport",state:"KY",lat:39.04456,lon:-84.67229},KDVK:{id:"KDVK",city:"Stuart Powell Field Airport",state:"KY",lat:37.5775751,lon:-84.7694978},KDWU:{id:"KDWU",city:"Ashland Regional Airport",state:"KY",lat:38.5545,lon:-82.738},KEHR:{id:"KEHR",city:"Henderson City",state:"KY",lat:37.81667,lon:-87.68333},KEKQ:{id:"KEKQ",city:"Monticello, Wayne County Airport",state:"KY",lat:36.85528,lon:-84.85611},KEKX:{id:"KEKX",city:"Elizabethtown Addington Field Airport",state:"KY",lat:37.686,lon:-85.925},KFFT:{id:"KFFT",city:"Frankfort, Capital City Airport",state:"KY",lat:38.18472,lon:-84.90333},KFGX:{id:"KFGX",city:"Flemingsburg Fleming-Mason Airport",state:"KY",lat:38.5418,lon:-83.7434},KFTK:{id:"KFTK",city:"Fort Knox",state:"KY",lat:37.9,lon:-85.9666699},KGLW:{id:"KGLW",city:"Glasgow, Glasgow Municipal Airport",state:"KY",lat:37.03167,lon:-85.95361},KHOP:{id:"KHOP",city:"Fort Campbell U. S. Army Airfield",state:"KY",lat:36.66667,lon:-87.5},KIOB:{id:"KIOB",city:"Mount Sterling-Montgomery County Airport",state:"KY",lat:38.0575,lon:-83.9829},KJKL:{id:"KJKL",city:"Jackson, Carroll Airport",state:"KY",lat:37.5913899,lon:-83.31444},KLEX:{id:"KLEX",city:"Lexington Blue Grass Airport",state:"KY",lat:38.0339,lon:-84.6114599},KLOU:{id:"KLOU",city:"Louisville, Bowman Field Airport",state:"KY",lat:38.22778,lon:-85.66361},KLOZ:{id:"KLOZ",city:"London, London-Corbin Airport-Magee Field",state:"KY",lat:37.08944,lon:-84.06861},KOWB:{id:"KOWB",city:"Owensboro, Owensboro-Daviess County Airport",state:"KY",lat:37.74,lon:-87.16667},KPAH:{id:"KPAH",city:"Paducah, Barkley Regional Airport",state:"KY",lat:37.05639,lon:-88.77389},KPBX:{id:"KPBX",city:"Pikeville Pike County Airport and Hatcher Field",state:"KY",lat:37.5587,lon:-82.5674},KRGA:{id:"KRGA",city:"Central Kentucky Regional Airport",state:"KY",lat:37.6308475,lon:-84.3323372},KSDF:{id:"KSDF",city:"Louisville Muhammad Ali International Airport",state:"KY",lat:38.17406,lon:-85.7365},KSJS:{id:"KSJS",city:"Big Sandy Regional Airport",state:"KY",lat:37.751,lon:-82.6367},KSME:{id:"KSME",city:"Somerset, Somerset-Pulaski County - J.T. Wilson Field Airport",state:"KY",lat:37.05417,lon:-84.615},KSYM:{id:"KSYM",city:"Clyde A. Thomas Regional Airport",state:"KY",lat:38.215,lon:-83.5874},KTWT:{id:"KTWT",city:"Sturgis, Sturgis Municipal Airport",state:"KY",lat:37.54083,lon:-87.9516699},KADF:{id:"KADF",city:"Dexter B Florence Memorial Field",state:"AR",lat:34.0998,lon:-93.0661},KARG:{id:"KARG",city:"Walnut Ridge Regional Airport",state:"AR",lat:36.12562,lon:-90.92148},KASG:{id:"KASG",city:"Springdale Municipal",state:"AR",lat:36.18333,lon:-94.11667},KAWM:{id:"KAWM",city:"West Memphis, West Memphis Municipal Airport",state:"AR",lat:35.13333,lon:-90.23333},KBPK:{id:"KBPK",city:"Baxter County Airport",state:"AR",lat:36.37056,lon:-92.47194},KBVX:{id:"KBVX",city:"Batesville, Batesville Regional Airport",state:"AR",lat:35.73333,lon:-91.65},KBYH:{id:"KBYH",city:"Eaker Air Force Base",state:"AR",lat:35.96667,lon:-89.95},KCCA:{id:"KCCA",city:"Clinton Memorial Airfield",state:"AR",lat:35.598,lon:-92.4516},KCDH:{id:"KCDH",city:"Camden / Harrell Field",state:"AR",lat:33.61667,lon:-92.76667},KCXW:{id:"KCXW",city:"Conway - Cantrell Field",state:"AR",lat:35.0199,lon:-92.5551},KDEQ:{id:"KDEQ",city:"De Queen, J Lynn Helms Sevier County Airport",state:"AR",lat:34.04694,lon:-94.39944},KELD:{id:"KELD",city:"South Arkansas Regional Airport",state:"AR",lat:33.22075,lon:-92.8139999},KFLP:{id:"KFLP",city:"Flippin, Marion County Regional Airport",state:"AR",lat:36.3,lon:-92.58333},KFSM:{id:"KFSM",city:"Fort Smith Regional Airport",state:"AR",lat:35.3335,lon:-94.36524},KFYV:{id:"KFYV",city:"Fayetteville, Drake Field",state:"AR",lat:36.01028,lon:-94.1677799},KHKA:{id:"KHKA",city:"Blytheville, Blytheville Municipal Airport",state:"AR",lat:35.93889,lon:-89.8325},KHOT:{id:"KHOT",city:"Hot Springs, Memorial Field Airport",state:"AR",lat:34.47806,lon:-93.09611},KHRO:{id:"KHRO",city:"Harrison, Boone County Airport",state:"AR",lat:36.26167,lon:-93.15472},KJBR:{id:"KJBR",city:"Jonesboro, Jonesboro Municipal Airport",state:"AR",lat:35.83722,lon:-90.64306},KLIT:{id:"KLIT",city:"Little Rock, Adams Field",state:"AR",lat:34.72667,lon:-92.23611},KLLQ:{id:"KLLQ",city:"Monticello, Monticello Municipal Airport/Ellis Field",state:"AR",lat:33.63833,lon:-91.75111},KLRF:{id:"KLRF",city:"Little Rock Air Force Base",state:"AR",lat:34.91667,lon:-92.15},KMEZ:{id:"KMEZ",city:"Mena, Mena Intermountain Municipal Airport",state:"AR",lat:34.54528,lon:-94.2025},KMWT:{id:"KMWT",city:"Mount Ida",state:"AR",lat:34.55,lon:-93.58333},KORK:{id:"KORK",city:"North Little Rock Municipal Airport",state:"AR",lat:34.83314,lon:-92.25414},KPBF:{id:"KPBF",city:"Pine Bluff, Grider Field Airport",state:"AR",lat:34.175,lon:-91.93472},KROG:{id:"KROG",city:"Rogers - Rogers Executive Airport - Carter Field",state:"AR",lat:36.36667,lon:-94.1},KRUE:{id:"KRUE",city:"Russelville Municipal Airport",state:"AR",lat:35.25737,lon:-93.0949399},KSGT:{id:"KSGT",city:"Stuttgart, Stuttgart Municipal Airport",state:"AR",lat:34.6,lon:-91.56667},KSLG:{id:"KSLG",city:"Siloam Springs, Smith Field Airport",state:"AR",lat:36.2,lon:-94.48333},KSRC:{id:"KSRC",city:"Searcy Municipal Airport",state:"AR",lat:35.21349,lon:-91.7392799},KSUZ:{id:"KSUZ",city:"Saline County Regional Airport",state:"AR",lat:34.59039,lon:-92.47944},KTXK:{id:"KTXK",city:"Texarkana, Texarkana Regional-Webb Field",state:"AR",lat:33.45611,lon:-93.9875},KVBT:{id:"KVBT",city:"Bentonville, Bentonville Municipal Airport/Louise M Thaden Field",state:"AR",lat:36.35,lon:-94.2166699},KXNA:{id:"KXNA",city:"Northwest Arkansas Regional Airport",state:"AR",lat:36.28977,lon:-94.3114499},KBOI:{id:"KBOI",city:"Boise Air Terminal",state:"ID",lat:43.56704,lon:-116.24053},KBYI:{id:"KBYI",city:"Burley Municipal Airport",state:"ID",lat:42.54525,lon:-113.7686},KCOE:{id:"KCOE",city:"Coeur d'Alene Airport - Pappy Boyington Field",state:"ID",lat:47.76667,lon:-116.81667},KDIJ:{id:"KDIJ",city:"Driggs, Driggs-Reed Memorial Airport",state:"ID",lat:43.74167,lon:-111.09778},KEUL:{id:"KEUL",city:"Caldwell - Caldwell Industrial Airport",state:"ID",lat:43.64055,lon:-116.63017},KGIC:{id:"KGIC",city:"Grangeville - Idaho County Airport",state:"ID",lat:45.94111,lon:-116.13257},KGNG:{id:"KGNG",city:"Gooding Municipal Airport",state:"ID",lat:42.91716,lon:-114.76516},KIDA:{id:"KIDA",city:"Idaho Falls Regional Airport",state:"ID",lat:43.5208299,lon:-112.06611},KJER:{id:"KJER",city:"Jerome County Airport",state:"ID",lat:42.72736,lon:-114.45469},KLLJ:{id:"KLLJ",city:"Challis - Challis Airport",state:"ID",lat:44.523,lon:-114.21611},KLWS:{id:"KLWS",city:"Lewiston, Lewiston-Nez Perce County Airport",state:"ID",lat:46.37472,lon:-117.01444},KMAN:{id:"KMAN",city:"Nampa Municipal Airport",state:"ID",lat:43.5813,lon:-116.5231},KMUO:{id:"KMUO",city:"Mountain Home Air Force Base",state:"ID",lat:43.05,lon:-115.86667},KMYL:{id:"KMYL",city:"McCall Airport",state:"ID",lat:44.89425,lon:-116.09978},KPIH:{id:"KPIH",city:"Pocatello, Pocatello Regional Airport",state:"ID",lat:42.92028,lon:-112.57111},KRXE:{id:"KRXE",city:"Rexburg, Rexburg-Madison County Airport",state:"ID",lat:43.83167,lon:-111.80611},KSMN:{id:"KSMN",city:"Salmon, Lemhi County Airport",state:"ID",lat:45.11667,lon:-113.88333},KSNT:{id:"KSNT",city:"Stanley, Stanley Ranger Station",state:"ID",lat:44.20861,lon:-114.93444},KSUN:{id:"KSUN",city:"Hailey, Friedman Memorial Airport",state:"ID",lat:43.5,lon:-114.3},KAID:{id:"KAID",city:"Anderson Municipal Airport",state:"IN",lat:40.10612,lon:-85.60977},KANQ:{id:"KANQ",city:"Angola Tri-State Steuben County Airport",state:"IN",lat:41.6404,lon:-85.0851},KASW:{id:"KASW",city:"Warsaw, Warsaw Municipal Airport",state:"IN",lat:41.27444,lon:-85.84},KBAK:{id:"KBAK",city:"Columbus / Bakalar",state:"IN",lat:39.26667,lon:-85.9},KBMG:{id:"KBMG",city:"Bloomington, Monroe County Airport",state:"IN",lat:39.14306,lon:-86.61667},KCFJ:{id:"KCFJ",city:"Crawfordsville Municipal Airport",state:"IN",lat:39.9756,lon:-86.9199},KDCY:{id:"KDCY",city:"Daviess County Airport",state:"IN",lat:38.7004,lon:-87.1297},KEKM:{id:"KEKM",city:"Elkhart Municipal",state:"IN",lat:41.71667,lon:-86},KEVV:{id:"KEVV",city:"Evansville, Evansville Regional Airport",state:"IN",lat:38.0430599,lon:-87.52028},KEYE:{id:"KEYE",city:"Indianapolis, Eagle Creek Airpark",state:"IN",lat:39.825,lon:-86.29583},KFKR:{id:"KFKR",city:"Frankfort Municipal Airport",state:"IN",lat:40.2734,lon:-86.5622},KFRH:{id:"KFRH",city:"French Lick Municipal Airport",state:"IN",lat:38.50622,lon:-86.63694},KFWA:{id:"KFWA",city:"Fort Wayne International Airport",state:"IN",lat:40.97251,lon:-85.20637},KGEZ:{id:"KGEZ",city:"Shelbyville Municipal Airport",state:"IN",lat:39.58546,lon:-85.79982},KGGP:{id:"KGGP",city:"Logansport/Cass County Airport",state:"IN",lat:40.711,lon:-86.373},KGPC:{id:"KGPC",city:"Putnam County Regional Airport",state:"IN",lat:39.6354,lon:-86.8155},KGSH:{id:"KGSH",city:"Goshen, Goshen Municipal Airport",state:"IN",lat:41.52611,lon:-85.78667},KGUS:{id:"KGUS",city:"Grissom Air Force Base / Peru",state:"IN",lat:40.65,lon:-86.15},KGWB:{id:"KGWB",city:"Auburn De Kalb County Airport",state:"IN",lat:41.307,lon:-85.0639999},KGYY:{id:"KGYY",city:"Gary Regional Airport",state:"IN",lat:41.61212,lon:-87.40908},KHHG:{id:"KHHG",city:"Huntington Municipal Airport",state:"IN",lat:40.8529,lon:-85.4571},KHLB:{id:"KHLB",city:"Batesville Airport",state:"IN",lat:39.34313,lon:-85.25843},KHNB:{id:"KHNB",city:"Huntingburg",state:"IN",lat:38.25,lon:-86.95},KHUF:{id:"KHUF",city:"Terre Haute Regional Airport",state:"IN",lat:39.4429,lon:-87.32207},KIMS:{id:"KIMS",city:"Madison Municipal Airport",state:"IN",lat:38.7589,lon:-85.4655},KIND:{id:"KIND",city:"Indianapolis International Airport",state:"IN",lat:39.72518,lon:-86.2816},KJVY:{id:"KJVY",city:"Clark Regional Airport",state:"IN",lat:38.36661,lon:-85.73814},KLAF:{id:"KLAF",city:"Lafayette, Purdue University Airport",state:"IN",lat:40.4125,lon:-86.9475},KMCX:{id:"KMCX",city:"Monticello White County Airport",state:"IN",lat:40.7087999,lon:-86.7668},KMGC:{id:"KMGC",city:"Michigan City Municipal Airport",state:"IN",lat:41.7033,lon:-86.8212},KMIE:{id:"KMIE",city:"Muncie, Delaware County-Johnson Field",state:"IN",lat:40.23417,lon:-85.39361},KMQJ:{id:"KMQJ",city:"Indianapolis Mount Comfort Airport",state:"IN",lat:39.8435,lon:-85.8971},KMZZ:{id:"KMZZ",city:"Marion Municipal Airport",state:"IN",lat:40.49,lon:-85.68},KOKK:{id:"KOKK",city:"Kokomo, Kokomo Municipal Airport",state:"IN",lat:40.53333,lon:-86.06667},KOXI:{id:"KOXI",city:"Starke County Airport",state:"IN",lat:41.33,lon:-86.665},KPLD:{id:"KPLD",city:"Portland Municipal Airport",state:"IN",lat:40.45158,lon:-84.98903},KPPO:{id:"KPPO",city:"La Porte Municipal Airport",state:"IN",lat:41.5725,lon:-86.7345},KRCR:{id:"KRCR",city:"Rochester Fulton County Airport",state:"IN",lat:41.06553,lon:-86.18169},KRID:{id:"KRID",city:"Richmond Municipal Airport",state:"IN",lat:39.7572,lon:-84.8428},KRZL:{id:"KRZL",city:"Rensselaer Jasper County Airport",state:"IN",lat:40.94789,lon:-87.18258},KSBN:{id:"KSBN",city:"South Bend International Airport",state:"IN",lat:41.7088899,lon:-86.31861},KTYQ:{id:"KTYQ",city:"INDIANAPOLIS",state:"IN",lat:40.03066,lon:-86.2514999},KVPZ:{id:"KVPZ",city:"Valparaiso Porter County Municipal Airport",state:"IN",lat:41.45349,lon:-86.99805},KABQ:{id:"KABQ",city:"Albuquerque, Albuquerque International Airport",state:"NM",lat:35.04167,lon:-106.61472},KAEG:{id:"KAEG",city:"Albuquerque, Double Eagle II Airport",state:"NM",lat:35.145,lon:-106.795},KALM:{id:"KALM",city:"Alamogordo-White",state:"NM",lat:32.83512,lon:-105.99408},KATS:{id:"KATS",city:"Artesia Municipal Airport",state:"NM",lat:32.85239,lon:-104.46444},KAXX:{id:"KAXX",city:"Angel Fire Airport",state:"NM",lat:36.42586,lon:-105.29028},KBRG:{id:"KBRG",city:"Belen Regional Airport",state:"NM",lat:34.64586,lon:-106.83634},KCAO:{id:"KCAO",city:"Clayton Municipal Airpark",state:"NM",lat:36.44834,lon:-103.15367},KCNM:{id:"KCNM",city:"Carlsbad, Cavern City Air Terminal Airport",state:"NM",lat:32.3375,lon:-104.26333},KCQC:{id:"KCQC",city:"Clines Corners",state:"NM",lat:35,lon:-105.66667},KCVN:{id:"KCVN",city:"Clovis Municipal Airport",state:"NM",lat:34.42274,lon:-103.0802},KCVS:{id:"KCVS",city:"Cannon Air Force Base / Clovis",state:"NM",lat:34.38333,lon:-103.31667},KDMN:{id:"KDMN",city:"Deming Municipal Airport",state:"NM",lat:32.25927,lon:-107.72051},KDNA:{id:"KDNA",city:"Dona Ana County Jetport, Santa Teresa",state:"NM",lat:31.87495,lon:-106.69385},KFMN:{id:"KFMN",city:"Farmington, Four Corners Regional Airport",state:"NM",lat:36.7436099,lon:-108.22917},KGNT:{id:"KGNT",city:"Grants, Grants-Milan Municipal Airport",state:"NM",lat:35.16528,lon:-107.90222},KGUP:{id:"KGUP",city:"Gallup Municipal Airport",state:"NM",lat:35.50859,lon:-108.79316},KHMN:{id:"KHMN",city:"Holloman Air Force Base",state:"NM",lat:32.85,lon:-106.1},KHOB:{id:"KHOB",city:"Hobbs / Lea County",state:"NM",lat:32.68333,lon:-103.2166699},KLAM:{id:"KLAM",city:"Los Alamos Airport",state:"NM",lat:35.8796899,lon:-106.26869},KLRU:{id:"KLRU",city:"Las Cruces, Las Cruces International Airport",state:"NM",lat:32.28944,lon:-106.92194},KLVS:{id:"KLVS",city:"Las Vegas Municipal Airport",state:"NM",lat:35.65584,lon:-105.13852},KONM:{id:"KONM",city:"Socorro Municipal Airport",state:"NM",lat:34.02633,lon:-106.90372},KROW:{id:"KROW",city:"Roswell International Air Center Airport",state:"NM",lat:33.30737,lon:-104.50816},KRTN:{id:"KRTN",city:"Raton Municipal - Crews Field Airport",state:"NM",lat:36.741528,lon:-104.502183},KSAF:{id:"KSAF",city:"Santa Fe County Municipal Airport",state:"NM",lat:35.61097,lon:-106.09573},KSKX:{id:"KSKX",city:"Taos, Taos Regional Airport",state:"NM",lat:36.45,lon:-105.66667},KSRR:{id:"KSRR",city:"Sierra Blanca Regional Airport",state:"NM",lat:33.4667699,lon:-105.52778},KSVC:{id:"KSVC",city:"Grant County Airport",state:"NM",lat:32.63099,lon:-108.14658},KSXU:{id:"KSXU",city:"Santa Rosa Route 66 Airport",state:"NM",lat:34.93567,lon:-104.64256},KTCC:{id:"KTCC",city:"Tucumcari Municipal Airport",state:"NM",lat:35.18053,lon:-103.60145},KTCS:{id:"KTCS",city:"Truth Or Consequences, Truth Or Consequences Municipal Airport",state:"NM",lat:33.2366699,lon:-107.26806},KADH:{id:"KADH",city:"Ada, Ada Municipal Airport",state:"OK",lat:34.80444,lon:-96.67139},KADM:{id:"KADM",city:"Ardmore, Ardmore Municipal Airport",state:"OK",lat:34.30306,lon:-97.01944},KAVK:{id:"KAVK",city:"Alva, Alva Regional Airport",state:"OK",lat:36.77306,lon:-98.67},KAXS:{id:"KAXS",city:"Altus, Altus/Quartz Mountain Regional Airport",state:"OK",lat:34.69861,lon:-99.33806},KBKN:{id:"KBKN",city:"Blackwell-Tonkawa Municipal Airport",state:"OK",lat:36.7451099,lon:-97.34958},KBVO:{id:"KBVO",city:"Bartlesville, Bartlesville Municipal Airport",state:"OK",lat:36.76833,lon:-96.02611},KCHK:{id:"KCHK",city:"Chickasha, Chickasha Municipal Airport",state:"OK",lat:35.09611,lon:-97.96611},KCLK:{id:"KCLK",city:"Clinton, Clinton Regional Airport",state:"OK",lat:35.53806,lon:-98.92139},KCQB:{id:"KCQB",city:"Chandler, Chandler Municipal Airport",state:"OK",lat:35.72389,lon:-96.82028},KCSM:{id:"KCSM",city:"Clinton, Clinton-Sherman Airport",state:"OK",lat:35.35667,lon:-99.20361},KCUH:{id:"KCUH",city:"Cushing, Cushing Municipal Airport",state:"OK",lat:35.94972,lon:-96.77278},KDUA:{id:"KDUA",city:"Durant, Eaker Field Airport",state:"OK",lat:33.94222,lon:-96.39444},KDUC:{id:"KDUC",city:"Duncan, Halliburton Field Airport",state:"OK",lat:34.47083,lon:-97.9599999},KELK:{id:"KELK",city:"Elk City Regional Business Airport",state:"OK",lat:35.4308,lon:-99.3943},KEND:{id:"KEND",city:"Vance Air Force Base / Enid",state:"OK",lat:36.3333299,lon:-97.91667},KFDR:{id:"KFDR",city:"Frederick, Frederick Municipal Airport",state:"OK",lat:34.34444,lon:-98.98306},KFSI:{id:"KFSI",city:"Fort Sill",state:"OK",lat:34.6,lon:-98.4},KGAG:{id:"KGAG",city:"Gage, Gage Airport",state:"OK",lat:36.29667,lon:-99.76889},KGCM:{id:"KGCM",city:"Claremore, Claremore Regional Airport",state:"OK",lat:36.29444,lon:-95.47972},KGMJ:{id:"KGMJ",city:"Grove, Grove Municipal Airport",state:"OK",lat:36.60528,lon:-94.73861},KGOK:{id:"KGOK",city:"Guthrie, Guthrie Municipal Airport",state:"OK",lat:35.85194,lon:-97.4075},KGUY:{id:"KGUY",city:"Guymon / Guymon Municipal Airport",state:"OK",lat:36.6816699,lon:-101.50528},KGZL:{id:"KGZL",city:"Stigler",state:"OK",lat:35.2891,lon:-95.0939},KHBR:{id:"KHBR",city:"Hobart, Hobart Municipal Airport",state:"OK",lat:34.98944,lon:-99.0525},KHHW:{id:"KHHW",city:"Hugo Stan Stamper Municipal Airport",state:"OK",lat:34.0348,lon:-95.5419},KHMY:{id:"KHMY",city:"MULDROWARMY",state:"OK",lat:35.02638,lon:-97.23163},KHSD:{id:"KHSD",city:"Sundance Airport",state:"OK",lat:35.60183,lon:-97.70616},KJSV:{id:"KJSV",city:"Sallisaw, Sallisaw Municipal Airport",state:"OK",lat:35.43806,lon:-94.80278},KJWG:{id:"KJWG",city:"Watonga, Watonga Airport",state:"OK",lat:35.86472,lon:-98.42083},KLAW:{id:"KLAW",city:"Lawton, Lawton Municipal Airport",state:"OK",lat:34.5575,lon:-98.41667},KLTS:{id:"KLTS",city:"Altus Air Force Base",state:"OK",lat:34.65,lon:-99.26667},KMIO:{id:"KMIO",city:"Miami Regional Airport",state:"OK",lat:36.90922,lon:-94.8875},KMKO:{id:"KMKO",city:"Muskogee-Davis Regional Airport",state:"OK",lat:35.65694,lon:-95.35972},KMLC:{id:"KMLC",city:"McAlester, McAlester Regional Airport",state:"OK",lat:34.8822199,lon:-95.78306},KOJA:{id:"KOJA",city:"Weatherford, Thomas P Stafford Airport",state:"OK",lat:35.54472,lon:-98.66833},KOKC:{id:"KOKC",city:"Oklahoma City, Will Rogers World Airport",state:"OK",lat:35.38861,lon:-97.60028},KOKM:{id:"KOKM",city:"Okmulgee, Okmulgee Municipal Airport",state:"OK",lat:35.6680599,lon:-95.94861},KOUN:{id:"KOUN",city:"Norman / Max Westheimer",state:"OK",lat:35.2435,lon:-97.4708},KOWP:{id:"KOWP",city:"William R Pogue Municipal Airport",state:"OK",lat:36.1753,lon:-96.1518},KPNC:{id:"KPNC",city:"Ponca City, Ponca City Municipal Airport",state:"OK",lat:36.7305599,lon:-97.09972},KPVJ:{id:"KPVJ",city:"Pauls Valley, Pauls Valley Municipal Airport",state:"OK",lat:34.71111,lon:-97.22333},KPWA:{id:"KPWA",city:"Oklahoma City, Wiley Post Airport",state:"OK",lat:35.54111,lon:-97.64667},KRCE:{id:"KRCE",city:"Clarence E Page Municipal Airport",state:"OK",lat:35.4880799,lon:-97.82356},KRKR:{id:"KRKR",city:"Poteau, Robert S Kerr Airport",state:"OK",lat:35.02167,lon:-94.62139},KRQO:{id:"KRQO",city:"El Reno, El Reno Regional Airport",state:"OK",lat:35.4724999,lon:-98.00556},KRVS:{id:"KRVS",city:"Tulsa - Jones Jr. Airport",state:"OK",lat:36.04255,lon:-95.99005},KSNL:{id:"KSNL",city:"Shawnee, Shawnee Municipal Airport",state:"OK",lat:35.35722,lon:-96.94278},KSRE:{id:"KSRE",city:"Seminole, Seminole Municipal Airport",state:"OK",lat:35.27444,lon:-96.675},KSWO:{id:"KSWO",city:"Stillwater, Stillwater Regional Airport",state:"OK",lat:36.16222,lon:-97.08917},KTIK:{id:"KTIK",city:"Tinker Air Force Base",state:"OK",lat:35.41667,lon:-97.38333},KTQH:{id:"KTQH",city:"Tahlequah, Tahlequah Municipal Airport",state:"OK",lat:35.92889,lon:-95.00444},KTUL:{id:"KTUL",city:"Tulsa, Tulsa International Airport",state:"OK",lat:36.1975,lon:-95.88639},KWDG:{id:"KWDG",city:"Enid, Enid Woodring Regional Airport",state:"OK",lat:36.37917,lon:-97.79111},KWWR:{id:"KWWR",city:"Woodward, West Woodward Airport",state:"OK",lat:36.43667,lon:-99.5211099},KAIG:{id:"KAIG",city:"Langlade County Airport",state:"WI",lat:45.15659,lon:-89.11144},KARV:{id:"KARV",city:"Minocqua/Woodruff, Lakeland Airport/Noble F. Lee Memorial Field",state:"WI",lat:45.93333,lon:-89.73333},KASX:{id:"KASX",city:"John F Kennedy Memorial Airport",state:"WI",lat:46.54679,lon:-90.91841},KATW:{id:"KATW",city:"Appleton-Outagamie",state:"WI",lat:44.2595,lon:-88.51567},KAUW:{id:"KAUW",city:"Wausau Downtown Airport",state:"WI",lat:44.92759,lon:-89.62512},KBCK:{id:"KBCK",city:"Black River Falls Area Airport",state:"WI",lat:44.24996,lon:-90.84999},KBUU:{id:"KBUU",city:"Burlington Municipal Airport",state:"WI",lat:42.69088,lon:-88.308},KCMY:{id:"KCMY",city:"Sparta, Sparta / Fort McCoy Airport",state:"WI",lat:43.9583299,lon:-90.73778},KCWA:{id:"KCWA",city:"Mosinee",state:"WI",lat:44.77944,lon:-89.67098},KDLL:{id:"KDLL",city:"Baraboo Wisconsin Dells Airport",state:"WI",lat:43.52372,lon:-89.77345},KEAU:{id:"KEAU",city:"Chippewa Valley Regional Airport",state:"WI",lat:44.86668,lon:-91.488},KEFT:{id:"KEFT",city:"Monroe Municipal Airport",state:"WI",lat:42.61959,lon:-89.59309},KEGV:{id:"KEGV",city:"Eagle River Union Airport",state:"WI",lat:45.9309299,lon:-89.26702},KENW:{id:"KENW",city:"Kenosha, Kenosha Regional Airport",state:"WI",lat:42.595,lon:-87.9380599},KETB:{id:"KETB",city:"West Bend Municipal Airport",state:"WI",lat:43.42256,lon:-88.1326},KEZS:{id:"KEZS",city:"Shawano Municipal Airport",state:"WI",lat:44.787,lon:-88.56},KFLD:{id:"KFLD",city:"Fond Du Lac County Airport",state:"WI",lat:43.76955,lon:-88.49072},KGRB:{id:"KGRB",city:"Green Bay, Austin Straubel International Airport",state:"WI",lat:44.4794399,lon:-88.13667},KHYR:{id:"KHYR",city:"Sawyer County Airport",state:"WI",lat:46.03029,lon:-91.44259},KISW:{id:"KISW",city:"Wisconsin Rapids, Alexander Field South Wood County Airport",state:"WI",lat:44.35917,lon:-89.83694},KJVL:{id:"KJVL",city:"Janesville-Rock County",state:"WI",lat:42.62135,lon:-89.04186},KLNL:{id:"KLNL",city:"Land O' Lakes, Kings Land O' Lakes Airport",state:"WI",lat:46.1538899,lon:-89.21194},KLNR:{id:"KLNR",city:"Lone Rock Tri-County Regional Airport",state:"WI",lat:43.21108,lon:-90.18735},KLSE:{id:"KLSE",city:"La Crosse - La Crosse Regional Airport",state:"WI",lat:43.87944,lon:-91.25667},KLUM:{id:"KLUM",city:"Menomonie Municipal Airport-Score Field",state:"WI",lat:44.89363,lon:-91.86652},KMDZ:{id:"KMDZ",city:"Taylor County Airport",state:"WI",lat:45.10462,lon:-90.30253},KMFI:{id:"KMFI",city:"Marshfield, Marshfield Municipal Airport",state:"WI",lat:44.63806,lon:-90.1875},KMKE:{id:"KMKE",city:"Milwaukee, General Mitchell International Airport",state:"WI",lat:42.955,lon:-87.9044399},KMRJ:{id:"KMRJ",city:"Iowa County Airport",state:"WI",lat:42.88754,lon:-90.23147},KMSN:{id:"KMSN",city:"Madison, Dane County Regional-Truax Field",state:"WI",lat:43.14056,lon:-89.34528},KMTW:{id:"KMTW",city:"Manitowoc, Manitowoc County Airport",state:"WI",lat:44.13333,lon:-87.68333},KMWC:{id:"KMWC",city:"Milwaukee-Timmerman",state:"WI",lat:43.10961,lon:-88.03048},KOCQ:{id:"KOCQ",city:"Oconto J. Douglas Bake Municipal Airport",state:"WI",lat:44.8742,lon:-87.9096},KOEO:{id:"KOEO",city:"L O Simenstad Municipal Airport",state:"WI",lat:45.31084,lon:-92.6948},KOLG:{id:"KOLG",city:"Solon Springs Municipal Airport",state:"WI",lat:46.3148,lon:-91.8164},KOSH:{id:"KOSH",city:"Wittman Regional Airport",state:"WI",lat:43.96701,lon:-88.55814},KOVS:{id:"KOVS",city:"Boscobel, Boscobel Airport",state:"WI",lat:43.15611,lon:-90.6775},KPBH:{id:"KPBH",city:"Phillips / Price County",state:"WI",lat:45.7,lon:-90.4},KPCZ:{id:"KPCZ",city:"Waupaca Municipal Airport",state:"WI",lat:44.33425,lon:-89.02023},KPDC:{id:"KPDC",city:"Prairie Du Chien Municipal Airport",state:"WI",lat:43.01938,lon:-91.12112},KPVB:{id:"KPVB",city:"Platteville Municipal Airport",state:"WI",lat:42.69092,lon:-90.4412399},KRAC:{id:"KRAC",city:"Racine, Batten International Airport",state:"WI",lat:42.75861,lon:-87.81778},KRCX:{id:"KRCX",city:"Ladysmith - Rusk County Airport",state:"WI",lat:45.4935,lon:-90.9985},KRGK:{id:"KRGK",city:"Red Wing - Red Wing Regional Airport",state:"WI",lat:44.5926,lon:-92.48439},KRHI:{id:"KRHI",city:"Rhinelander, Rhinelander-Oneida County Airport",state:"WI",lat:45.63167,lon:-89.48222},KRNH:{id:"KRNH",city:"New Richmond Municipal Airport",state:"WI",lat:45.14762,lon:-92.53349},KRPD:{id:"KRPD",city:"Rice Lake, Rice Lake Regional-Carl's Field Airport",state:"WI",lat:45.4180599,lon:-91.77361},KRRL:{id:"KRRL",city:"Merrill, Merrill Municipal Airport",state:"WI",lat:45.19844,lon:-89.70996},KRYV:{id:"KRYV",city:"Watertown",state:"WI",lat:43.17016,lon:-88.72497},KRZN:{id:"KRZN",city:"Siren, Burnett County Airport",state:"WI",lat:45.82278,lon:-92.3725},KSBM:{id:"KSBM",city:"Sheboygan County Memorial Airport",state:"WI",lat:43.77483,lon:-87.84897},KSTE:{id:"KSTE",city:"Stevens Point Municipal Airport",state:"WI",lat:44.54371,lon:-89.53468},KSUE:{id:"KSUE",city:"Door County Cherryland Airport",state:"WI",lat:44.83941,lon:-87.42188},KSUW:{id:"KSUW",city:"Richard I. Bong Airport",state:"WI",lat:46.68335,lon:-92.09254},KTKV:{id:"KTKV",city:"Tomahawk Regional Airport",state:"WI",lat:45.46801,lon:-89.80962},KUBE:{id:"KUBE",city:"Cumberland",state:"WI",lat:45.506,lon:-91.9811},KUES:{id:"KUES",city:"Waukesha County Airport",state:"WI",lat:43.04245,lon:-88.24607},KUNU:{id:"KUNU",city:"Juneau, Dodge County Airport",state:"WI",lat:43.42667,lon:-88.7033299},KVOK:{id:"KVOK",city:"Volk / Camp Douglas",state:"WI",lat:43.93333,lon:-90.26667},KACP:{id:"KACP",city:"Oakdale, Allen Parish Airport",state:"LA",lat:30.75056,lon:-92.68861},KAEX:{id:"KAEX",city:"Alexandria, Alexandria International Airport",state:"LA",lat:31.33472,lon:-92.55861},KAPS:{id:"KAPS",city:"Port of South Louisiana Executive Regional Airport",state:"LA",lat:30.08747,lon:-90.58283},KAQV:{id:"KAQV",city:"Ft. Polk - Peason Ridge",state:"LA",lat:31.4,lon:-93.2833},KARA:{id:"KARA",city:"Acadiana Regional Airport",state:"LA",lat:30.02918,lon:-91.88451},KASD:{id:"KASD",city:"Slidell, Slidell Airport",state:"LA",lat:30.34306,lon:-89.82194},KATP:{id:"KATP",city:"Green Canyon 787 Atlantis",state:"LA",lat:27.195,lon:-90.027},KBAD:{id:"KBAD",city:"Barksdale Air Force Base",state:"LA",lat:32.5,lon:-93.66667},KBKB:{id:"KBKB",city:"Ft. Polk - Fullerton Landing Strip",state:"LA",lat:31.0217,lon:-92.9107},KBTR:{id:"KBTR",city:"Baton Rouge, Baton Rouge Metropolitan, Ryan Field",state:"LA",lat:30.53722,lon:-91.14694},KBXA:{id:"KBXA",city:"Bogalusa, George R Carr Memorial Air Field",state:"LA",lat:30.81361,lon:-89.86472},KCWF:{id:"KCWF",city:"Chenault Airpark",state:"LA",lat:30.21667,lon:-93.15},KDRI:{id:"KDRI",city:"De Ridder, Beauregard Parish Airport",state:"LA",lat:30.83167,lon:-93.33972},KDSF:{id:"KDSF",city:"Mississippi Canyon",state:"LA",lat:28.35,lon:-88.26667},KDTN:{id:"KDTN",city:"Shreveport, Shreveport Downtown Airport",state:"LA",lat:32.5424999,lon:-93.74472},KEIR:{id:"KEIR",city:"Eugene Island",state:"LA",lat:28.634,lon:-91.489},KESF:{id:"KESF",city:"Alexandria Esler Regional Airport",state:"LA",lat:31.39634,lon:-92.28273},KGAO:{id:"KGAO",city:"Galliano, South Lafourche Airport",state:"LA",lat:29.44472,lon:-90.26111},KGHB:{id:"KGHB",city:"GB172/Salsa (Shell E-P)",state:"LA",lat:27.84,lon:-91.988},KGRY:{id:"KGRY",city:"Green Canyon 338 Front Runner",state:"LA",lat:27.625,lon:-90.441},KHDC:{id:"KHDC",city:"Hammond, Hammond Municipal Airport",state:"LA",lat:30.52083,lon:-90.4175},KHUM:{id:"KHUM",city:"Houma-Terrebonne Airport",state:"LA",lat:29.56341,lon:-90.66283},KHZR:{id:"KHZR",city:"New Roads False River Regional Airport",state:"LA",lat:30.7183,lon:-91.4787},KIER:{id:"KIER",city:"Natchitoches, Natchitoches Regional Airport",state:"LA",lat:31.73583,lon:-93.09917},KIYA:{id:"KIYA",city:"Abbeville Chris Crusta Memorial Airport",state:"LA",lat:29.97578,lon:-92.08422},KLCH:{id:"KLCH",city:"Lake Charles Regional Airport",state:"LA",lat:30.12556,lon:-93.22767},KLFT:{id:"KLFT",city:"Lafayette, Lafayette Regional Airport",state:"LA",lat:30.20222,lon:-91.99306},KLNQ:{id:"KLNQ",city:"Boothville Heliport",state:"LA",lat:29.35414,lon:-89.43591},KMDJ:{id:"KMDJ",city:"MISS CANYON OIL PLATFORM",state:"LA",lat:28.65,lon:-89.8},KMIS:{id:"KMIS",city:"Main Pass 140B (Apache Corp)",state:"LA",lat:29.296,lon:-88.842},KMLU:{id:"KMLU",city:"Monroe Regional Airport",state:"LA",lat:32.5155699,lon:-92.02995},KMNE:{id:"KMNE",city:"Minden Airport",state:"LA",lat:32.64603,lon:-93.29808},KMSY:{id:"KMSY",city:"New Orleans, New Orleans International Airport",state:"LA",lat:29.99278,lon:-90.2508299},KNBG:{id:"KNBG",city:"New Orleans Naval Air Station - Alvin Callender Field",state:"LA",lat:29.83736,lon:-90.02445},KNEW:{id:"KNEW",city:"New Orleans, New Orleans Lakefront Airport",state:"LA",lat:30.04944,lon:-90.02889},KOPL:{id:"KOPL",city:"Opelousas St Landry Parish Airport",state:"LA",lat:30.5584,lon:-92.0994},KPOE:{id:"KPOE",city:"Fort Polk, Polk AAF Ft Polk",state:"LA",lat:31.05,lon:-93.19389},KPTN:{id:"KPTN",city:"Patterson Memorial",state:"LA",lat:29.71667,lon:-91.33333},KREG:{id:"KREG",city:"Louisiana Regional Airport",state:"LA",lat:30.1714,lon:-90.9404},KRSN:{id:"KRSN",city:"Ruston, Ruston Regional Airport",state:"LA",lat:32.51444,lon:-92.58833},KSHV:{id:"KSHV",city:"Shreveport, Shreveport Regional Airport",state:"LA",lat:32.44694,lon:-93.82417},KTVR:{id:"KTVR",city:"Vicksburg, Vicksburg / Tallulah Regional Airport",state:"LA",lat:32.3480599,lon:-91.03},KUXL:{id:"KUXL",city:"Southland Field",state:"LA",lat:30.1314,lon:-93.3760999},KVKY:{id:"KVKY",city:"Main Pass 289C (Apache Corp)",state:"LA",lat:29.248,lon:-88.441},KVOA:{id:"KVOA",city:"VK 786/Petronius (Chevron)",state:"LA",lat:29.229,lon:-87.781},KBHK:{id:"KBHK",city:"Baker, Baker Municipal Airport",state:"MT",lat:46.34778,lon:-104.2574999},KBIL:{id:"KBIL",city:"Billings, Billings Logan International Airport",state:"MT",lat:45.80694,lon:-108.54222},KBTM:{id:"KBTM",city:"Butte, Bert Mooney Airport",state:"MT",lat:45.95472,lon:-112.4975},KBZN:{id:"KBZN",city:"Bozeman, Gallatin Field",state:"MT",lat:45.78806,lon:-111.16083},KCII:{id:"KCII",city:"Choteau Airport",state:"MT",lat:47.82835,lon:-112.16834},KCTB:{id:"KCTB",city:"Cut Bank, Cut Bank Municipal Airport",state:"MT",lat:48.60833,lon:-112.37611},KDLN:{id:"KDLN",city:"Dillon, Dillon Airport",state:"MT",lat:45.2575,lon:-112.55444},KEKS:{id:"KEKS",city:"Ennis - Big Sky Airport",state:"MT",lat:45.27436,lon:-111.64886},KGDV:{id:"KGDV",city:"Glendive, Dawson Community Airport",state:"MT",lat:47.13333,lon:-104.8},KGFA:{id:"KGFA",city:"Malmstrom Air Force Base",state:"MT",lat:47.5,lon:-111.18333},KGGW:{id:"KGGW",city:"Glasgow, Glasgow International Airport",state:"MT",lat:48.21389,lon:-106.62139},KGPI:{id:"KGPI",city:"Kalispell, Glacier Park International Airport",state:"MT",lat:48.30417,lon:-114.26361},KGTF:{id:"KGTF",city:"Great Falls, Great Falls International Airport",state:"MT",lat:47.47333,lon:-111.38222},KHLN:{id:"KHLN",city:"Helena Regional Airport",state:"MT",lat:46.60445,lon:-111.9892},KHVR:{id:"KHVR",city:"Havre, Havre City-County Airport",state:"MT",lat:48.54278,lon:-109.76333},KJDN:{id:"KJDN",city:"Jordan, Jordan Airport",state:"MT",lat:47.32583,lon:-106.9475},KLVM:{id:"KLVM",city:"Livingston, Mission Field Airport",state:"MT",lat:45.69944,lon:-110.44833},KLWT:{id:"KLWT",city:"Lewistown, Lewistown Municipal Airport",state:"MT",lat:47.0491699,lon:-109.46639},KMLP:{id:"KMLP",city:"Mullan Pass, Mullan Pass Vor",state:"MT",lat:47.45417,lon:-115.66972},KMLS:{id:"KMLS",city:"Miles City, Frank Wiley Field Airport",state:"MT",lat:46.42806,lon:-105.88639},KMSO:{id:"KMSO",city:"Missoula, Missoula International Airport",state:"MT",lat:46.92083,lon:-114.0925},KMVH:{id:"KMVH",city:"N BAR Ranch Airport",state:"MT",lat:46.8381,lon:-108.9368},KOLF:{id:"KOLF",city:"Wolf Point, Clayton Airport",state:"MT",lat:48.09444,lon:-105.57722},KPWD:{id:"KPWD",city:"Sher-Wood Airport",state:"MT",lat:48.789,lon:-104.52297},KRPX:{id:"KRPX",city:"ROUNDUP",state:"MT",lat:46.47499,lon:-108.54339},KRVF:{id:"KRVF",city:"Ruby Valley Field Airport",state:"MT",lat:45.53542,lon:-112.30228},KSDY:{id:"KSDY",city:"Sidney-Richland",state:"MT",lat:47.7,lon:-104.2},KTHM:{id:"KTHM",city:"THOMPSON FALLS",state:"MT",lat:47.5735,lon:-115.28066},KWYS:{id:"KWYS",city:"West Yellowstone",state:"MT",lat:44.68333,lon:-111.11667},KHYX:{id:"KHYX",city:"Saginaw County H W Browne Airport",state:"MI",lat:43.43191,lon:-83.86476},KIKW:{id:"KIKW",city:"Jack Barstow Airport",state:"MI",lat:43.6624,lon:-84.26213},KIMT:{id:"KIMT",city:"Iron Mountain / Kingsford, Ford Airport",state:"MI",lat:45.81417,lon:-88.10889},KIRS:{id:"KIRS",city:"Sturgis, Kirsch Municipal Airport",state:"MI",lat:41.8127799,lon:-85.43917},KISQ:{id:"KISQ",city:"Manistique, Schoolcraft County Airport",state:"MI",lat:45.97472,lon:-86.17194},KIWD:{id:"KIWD",city:"Ironwood, Gogebic-Iron County Airport",state:"MI",lat:46.53333,lon:-90.13333},KJXN:{id:"KJXN",city:"Jackson County Airport - Reynolds Field",state:"MI",lat:42.26171,lon:-84.46147},KJYM:{id:"KJYM",city:"Hillsdale Municipal Airport",state:"MI",lat:41.91972,lon:-84.58528},KLAN:{id:"KLAN",city:"Capital Region International Airport",state:"MI",lat:42.77616,lon:-84.5997},KLDM:{id:"KLDM",city:"Ludington, Mason County Airport",state:"MI",lat:43.96667,lon:-86.4},KLWA:{id:"KLWA",city:"South Haven, South Haven Area Regional Airport",state:"MI",lat:42.35083,lon:-86.25611},KMBL:{id:"KMBL",city:"Manistee County - Blacker Airport",state:"MI",lat:44.27142,lon:-86.23773},KMBS:{id:"KMBS",city:"MBS International Airport",state:"MI",lat:43.5281,lon:-84.08129},KMCD:{id:"KMCD",city:"Mackinac Island Airport",state:"MI",lat:45.86628,lon:-84.63437},KMGN:{id:"KMGN",city:"Harbor Springs, Harbor Springs Airport",state:"MI",lat:45.42556,lon:-84.91333},KMKG:{id:"KMKG",city:"Muskegon, Muskegon County Airport",state:"MI",lat:43.17111,lon:-86.23667},KMNM:{id:"KMNM",city:"Menominee - Marinette Twin County Airport",state:"MI",lat:45.12628,lon:-87.64438},KMOP:{id:"KMOP",city:"Mount Pleasant, Mount Pleasant Municipal Airport",state:"MI",lat:43.61667,lon:-84.73333},KMTC:{id:"KMTC",city:"Selfridge Air National Guard Base",state:"MI",lat:42.60458,lon:-82.83528},KOEB:{id:"KOEB",city:"Branch County Memorial Airport",state:"MI",lat:41.93085,lon:-85.05429},KONZ:{id:"KONZ",city:"Detroit/Grosse Ile, Grosse Ile Airport",state:"MI",lat:42.09861,lon:-83.1611099},KOSC:{id:"KOSC",city:"Oscoda, Oscoda-Wurtsmith Airport",state:"MI",lat:44.45,lon:-83.36667},KOZW:{id:"KOZW",city:"Howell, Livingston County Airport",state:"MI",lat:42.62944,lon:-83.98417},KPHN:{id:"KPHN",city:"St Clair County International Airport",state:"MI",lat:42.91031,lon:-82.53315},KPLN:{id:"KPLN",city:"Pellston Regional Airport of Emmet County",state:"MI",lat:45.56443,lon:-84.7928699},KPTK:{id:"KPTK",city:"Pontiac, Oakland County International Airport",state:"MI",lat:42.66306,lon:-83.41},KPZQ:{id:"KPZQ",city:"Rogers City, Presque Isle County Airport",state:"MI",lat:45.40694,lon:-83.81278},KRMY:{id:"KRMY",city:"Brooks Field Airport",state:"MI",lat:42.25238,lon:-84.95253},KRNP:{id:"KRNP",city:"Owosso, Owosso Community Airport",state:"MI",lat:42.99278,lon:-84.13889},KRQB:{id:"KRQB",city:"Big Rapids, Roben-Hood Airport",state:"MI",lat:43.7224999,lon:-85.50417},KSAW:{id:"KSAW",city:"Marquette, Sawyer International Airport",state:"MI",lat:46.35361,lon:-87.39528},KSJX:{id:"KSJX",city:"Beaver Island, Beaver Island Airport",state:"MI",lat:45.69222,lon:-85.56639},KSLH:{id:"KSLH",city:"Cheboygan, Cheboygan County Airport",state:"MI",lat:45.65361,lon:-84.51917},KTEW:{id:"KTEW",city:"Mason, Mason Jewett Field Airport",state:"MI",lat:42.56583,lon:-84.42333},KTTF:{id:"KTTF",city:"Monroe, Custer Airport",state:"MI",lat:41.94,lon:-83.43472},KTVC:{id:"KTVC",city:"Cherry Capital Airport",state:"MI",lat:44.73898,lon:-85.56788},KVLL:{id:"KVLL",city:"Troy, Oakland/Troy Airport",state:"MI",lat:42.54278,lon:-83.17778},KYIP:{id:"KYIP",city:"Detroit, Willow Run Airport",state:"MI",lat:42.2366699,lon:-83.52611},KAFP:{id:"KAFP",city:"Anson County Airport",state:"NC",lat:35.01944,lon:-80.07836},KAKH:{id:"KAKH",city:"Gastonia Municipal Airport",state:"NC",lat:35.1968699,lon:-81.15545},KASJ:{id:"KASJ",city:"Ahoskie, Tri-County Airport",state:"NC",lat:36.2975,lon:-77.17083},KAVL:{id:"KAVL",city:"Asheville, Asheville Regional Airport",state:"NC",lat:35.43194,lon:-82.5375},KBUY:{id:"KBUY",city:"Burlington Alamance Regional Airport",state:"NC",lat:36.04753,lon:-79.47375},KCLT:{id:"KCLT",city:"Charlotte, Charlotte / Douglas International Airport",state:"NC",lat:35.21333,lon:-80.94861},KCPC:{id:"KCPC",city:"Whiteville, Columbus County Municipal Airport",state:"NC",lat:34.27278,lon:-78.715},KCTZ:{id:"KCTZ",city:"Sampson County Airport",state:"NC",lat:34.97522,lon:-78.36276},KDPL:{id:"KDPL",city:"Duplin County Airport",state:"NC",lat:34.99942,lon:-77.97995},KECG:{id:"KECG",city:"Elizabeth City C/G Regional Airport",state:"NC",lat:36.25771,lon:-76.1716},KEDE:{id:"KEDE",city:"Edenton, Northeastern Regional Airport",state:"NC",lat:36.02778,lon:-76.56722},KEHO:{id:"KEHO",city:"Shelby Municipal Airport",state:"NC",lat:35.2556299,lon:-81.59858},KEQY:{id:"KEQY",city:"Monroe, Monroe Airport",state:"NC",lat:35.01694,lon:-80.62056},KETC:{id:"KETC",city:"Tarboro-Edgecombe Airport",state:"NC",lat:35.9373,lon:-77.54648},KEWN:{id:"KEWN",city:"New Bern, Craven County Regional Airport",state:"NC",lat:35.0675,lon:-77.04722},KEXX:{id:"KEXX",city:"Lexington, Davidson County Airport",state:"NC",lat:35.78111,lon:-80.30389},KEYF:{id:"KEYF",city:"Curtis L Brown Jr. Field Airport",state:"NC",lat:34.60418,lon:-78.57902},KFAY:{id:"KFAY",city:"Fayetteville, Fayetteville Regional Airport",state:"NC",lat:34.98944,lon:-78.88},KFBG:{id:"KFBG",city:"Fort Bragg / Simmons Army Airfield",state:"NC",lat:35.1314,lon:-78.93158},KFFA:{id:"KFFA",city:"Kill Devil Hills, First Flight Airport",state:"NC",lat:36.01667,lon:-75.66667},KFQD:{id:"KFQD",city:"Rutherfordton, Rutherford County-Marchman Field Airport",state:"NC",lat:35.42833,lon:-81.935},KGEV:{id:"KGEV",city:"Jefferson - Ashe County Airport",state:"NC",lat:36.43333,lon:-81.41667},KGSB:{id:"KGSB",city:"Seymour-Johnson Air Force Base",state:"NC",lat:35.34457,lon:-77.94583},KGSO:{id:"KGSO",city:"Greensboro, Piedmont Triad International Airport",state:"NC",lat:36.0974999,lon:-79.94361},KGWW:{id:"KGWW",city:"Goldsboro, Goldsboro-Wayne Municipal Airport",state:"NC",lat:35.46056,lon:-77.965},KHBI:{id:"KHBI",city:"Asheboro, Asheboro Municipal Airport",state:"NC",lat:35.6538899,lon:-79.895},KHFF:{id:"KHFF",city:"Mackall U. S. Army Airfield",state:"NC",lat:35.03333,lon:-79.5},KHKY:{id:"KHKY",city:"Hickory, Hickory Regional Airport",state:"NC",lat:35.74222,lon:-81.38222},KHNZ:{id:"KHNZ",city:"Henderson-Oxford Airport",state:"NC",lat:36.36352,lon:-78.52889},KHRJ:{id:"KHRJ",city:"Erwin, Harnett County Airport",state:"NC",lat:35.37861,lon:-78.73361},KHSE:{id:"KHSE",city:"Hatteras, Mitchell Field",state:"NC",lat:35.23222,lon:-75.6225},KILM:{id:"KILM",city:"Wilmington International Airport",state:"NC",lat:34.26681,lon:-77.89987},KINT:{id:"KINT",city:"Winston Salem, Smith Reynolds Airport",state:"NC",lat:36.13333,lon:-80.22472},KIPJ:{id:"KIPJ",city:"Lincolnton, Lincolnton-Lincoln County Regional Airport",state:"NC",lat:35.48306,lon:-81.16139},KISO:{id:"KISO",city:"Kinston, Kinston Regional Jetport at Stallings Field",state:"NC",lat:35.3333299,lon:-77.61667},KIXA:{id:"KIXA",city:"Halifax-Northampton Regional Airport",state:"NC",lat:36.33,lon:-77.635},KJNX:{id:"KJNX",city:"Smithfield, Johnston County Airport",state:"NC",lat:35.54083,lon:-78.39028},KJQF:{id:"KJQF",city:"Concord Regional Airport",state:"NC",lat:35.3896299,lon:-80.70735},KLHZ:{id:"KLHZ",city:"Franklin County Airport",state:"NC",lat:36.02288,lon:-78.33405},KMEB:{id:"KMEB",city:"Laurinburg Maxton Airport",state:"NC",lat:34.79132,lon:-79.3683},KMQI:{id:"KMQI",city:"Manteo / Dare County Regional",state:"NC",lat:35.91667,lon:-75.7},KMRH:{id:"KMRH",city:"Beaufort Smith Field",state:"NC",lat:34.73259,lon:-76.6566},KMRN:{id:"KMRN",city:"Morganton-Lenoir Airport",state:"NC",lat:35.81922,lon:-81.60971},KMWK:{id:"KMWK",city:"Mount Airy/Surry County Airport",state:"NC",lat:36.45675,lon:-80.55483},KNBT:{id:"KNBT",city:"Piney Island, Bt-11 Bombing Range",state:"NC",lat:35.02222,lon:-76.4625},KNCA:{id:"KNCA",city:"MCAS New River",state:"NC",lat:34.70627,lon:-77.44066},KNJM:{id:"KNJM",city:"Bogue Field Marine Corps Auxiliary Field",state:"NC",lat:34.69403,lon:-77.02945},KNKT:{id:"KNKT",city:"Cherry Point Marine Corps Air Station",state:"NC",lat:34.89719,lon:-76.88135},KOAJ:{id:"KOAJ",city:"Jacksonville, Albert J Ellis Airport",state:"NC",lat:34.8333299,lon:-77.61667},KOCW:{id:"KOCW",city:"Washington, Warren Field Airport",state:"NC",lat:35.57056,lon:-77.0497199},KONX:{id:"KONX",city:"Currituck, Currituck County Airport",state:"NC",lat:36.39889,lon:-76.01611},KPGV:{id:"KPGV",city:"Pitt-Greenville Airport",state:"NC",lat:35.63742,lon:-77.38506},KPOB:{id:"KPOB",city:"Pope Air Force Base",state:"NC",lat:35.17531,lon:-79.00771},KRCZ:{id:"KRCZ",city:"Rockingham-Hamlet Airport",state:"NC",lat:34.8954499,lon:-79.75755},KRDU:{id:"KRDU",city:"Raleigh / Durham, Raleigh-Durham International Airport",state:"NC",lat:35.89223,lon:-78.78185},KRHP:{id:"KRHP",city:"Andrews-Murphy Airport",state:"NC",lat:35.19394,lon:-83.86182},KRUQ:{id:"KRUQ",city:"Rowan County Airport",state:"NC",lat:35.64417,lon:-80.52359},KRWI:{id:"KRWI",city:"Rocky Mount, Rocky Mount-Wilson Regional Airport",state:"NC",lat:35.8549999,lon:-77.89306},KSCR:{id:"KSCR",city:"Siler City Municipal Airport",state:"NC",lat:35.7043,lon:-79.5043},KSIF:{id:"KSIF",city:"Reidsville, Rockingham County NC Shiloh Airport",state:"NC",lat:36.43722,lon:-79.85083},KSOP:{id:"KSOP",city:"Pinehurst/Southern Pines, Moore County Airport",state:"NC",lat:35.23333,lon:-79.4},KSUT:{id:"KSUT",city:"Brunswick County Airport",state:"NC",lat:33.92921,lon:-78.07223},KSVH:{id:"KSVH",city:"Statesville Municipal Airport",state:"NC",lat:35.76362,lon:-80.9473},KTDF:{id:"KTDF",city:"Roxboro, Person County Airport",state:"NC",lat:36.2849999,lon:-78.98417},KTNB:{id:"KTNB",city:"Watauga County Hospital Heliport",state:"NC",lat:36.19856,lon:-81.65171},KTTA:{id:"KTTA",city:"Sanford, Sanford-Lee County Regional Airport",state:"NC",lat:35.5825,lon:-79.10139},KUKF:{id:"KUKF",city:"North Wilkesboro, Wilkes County Airport",state:"NC",lat:36.21667,lon:-81.08333},KVUJ:{id:"KVUJ",city:"Albemarle, Stanly County Airport",state:"NC",lat:35.41667,lon:-80.15083},KAKR:{id:"KAKR",city:"Akron, Akron Fulton International Airport",state:"OH",lat:41.0375,lon:-81.46417},KAOH:{id:"KAOH",city:"Lima, Lima Allen County Airport",state:"OH",lat:40.70806,lon:-84.02139},KAXV:{id:"KAXV",city:"Neil Armstrong Airport",state:"OH",lat:40.49356,lon:-84.29808},KBJJ:{id:"KBJJ",city:"Wooster, Wayne County Airport",state:"OH",lat:40.87306,lon:-81.88667},KBKL:{id:"KBKL",city:"Cleveland, Burke Lakefront Airport",state:"OH",lat:41.52556,lon:-81.66889},KCAK:{id:"KCAK",city:"Akron Canton Regional Airport",state:"OH",lat:40.91811,lon:-81.44343},KCDI:{id:"KCDI",city:"Cambridge Municipal Airport",state:"OH",lat:39.975,lon:-81.5776},KCGF:{id:"KCGF",city:"Cleveland / Cuyahoga",state:"OH",lat:41.56667,lon:-81.48333},KCLE:{id:"KCLE",city:"Cleveland Hopkins International Airport",state:"OH",lat:41.40569,lon:-81.85193},KCMH:{id:"KCMH",city:"John Glenn Columbus International Airport",state:"OH",lat:39.9906999,lon:-82.87691},KDAY:{id:"KDAY",city:"Dayton, Cox Dayton International Airport",state:"OH",lat:39.90611,lon:-84.21861},KDFI:{id:"KDFI",city:"Defiance, Defiance Memorial Airport",state:"OH",lat:41.33639,lon:-84.42944},KDLZ:{id:"KDLZ",city:"Delaware Municipal Airport",state:"OH",lat:40.2797,lon:-83.1148},KEDJ:{id:"KEDJ",city:"Bellefontaine Regional Airport",state:"OH",lat:40.3723,lon:-83.8192},KFDY:{id:"KFDY",city:"Findlay, Findlay Airport",state:"OH",lat:41.01361,lon:-83.66861},KFFO:{id:"KFFO",city:"Dayton / Wright-Patterson Air Force Base",state:"OH",lat:39.8333299,lon:-84.05},KHAO:{id:"KHAO",city:"Butler County Regional Airport",state:"OH",lat:39.36121,lon:-84.52061},KHZY:{id:"KHZY",city:"Ashtabula - Northeast Ohio Regional Airport",state:"OH",lat:41.77944,lon:-80.69667},KILN:{id:"KILN",city:"Wilmington, Airborne Airpark Airport",state:"OH",lat:39.42833,lon:-83.7791699},KLCK:{id:"KLCK",city:"Rickenbacker Air National Guard Base",state:"OH",lat:39.81667,lon:-82.93333},KLHQ:{id:"KLHQ",city:"Lancaster, Fairfield County Airport",state:"OH",lat:39.7572199,lon:-82.66333},KLNN:{id:"KLNN",city:"Willoughby",state:"OH",lat:41.68333,lon:-81.38333},KLPR:{id:"KLPR",city:"Lorain / Elyria, Lorain County Regional Airport",state:"OH",lat:41.34611,lon:-82.17944},KLUK:{id:"KLUK",city:"Cincinnati, Cincinnati Municipal Airport Lunken Field",state:"OH",lat:39.10583,lon:-84.41583},KMFD:{id:"KMFD",city:"Mansfield - Mansfield Lahm Regional Airport",state:"OH",lat:40.8202799,lon:-82.51778},KMGY:{id:"KMGY",city:"Dayton, Dayton-Wright Brothers Airport",state:"OH",lat:39.58889,lon:-84.22472},KMNN:{id:"KMNN",city:"Marion, Marion Municipal Airport",state:"OH",lat:40.61667,lon:-83.06833},KMRT:{id:"KMRT",city:"Marysville Union County Airport",state:"OH",lat:40.2247,lon:-83.3516},KMWO:{id:"KMWO",city:"Hook Field Municipal Airport",state:"OH",lat:39.531,lon:-84.3953},KOSU:{id:"KOSU",city:"Columbus, Ohio State University Airport",state:"OH",lat:40.07806,lon:-83.0780599},KOWX:{id:"KOWX",city:"Ottawa Putnam County Airport",state:"OH",lat:41.0356,lon:-83.982},KPCW:{id:"KPCW",city:"Port Clinton Carl R Keller Field Airport",state:"OH",lat:41.5163,lon:-82.8687},KPHD:{id:"KPHD",city:"New Philadelphia, Harry Clever Field",state:"OH",lat:40.4719399,lon:-81.42361},KPMH:{id:"KPMH",city:"Greater Portsmouth Regional Airport",state:"OH",lat:38.84047,lon:-82.8473099},KPOV:{id:"KPOV",city:"Portage County Airport",state:"OH",lat:41.21,lon:-81.252},KRZT:{id:"KRZT",city:"Chillicothe Ross County Airport",state:"OH",lat:39.4403999,lon:-83.0231},KSGH:{id:"KSGH",city:"Springfield, Springfield-Beckley Municipal Airport",state:"OH",lat:39.84028,lon:-83.84},KTDZ:{id:"KTDZ",city:"Toledo - Toledo Executive Airport",state:"OH",lat:41.56306,lon:-83.47639},KTOL:{id:"KTOL",city:"Toledo - Toledo Express Airport",state:"OH",lat:41.58704,lon:-83.80539},KTZR:{id:"KTZR",city:"Columbus, Bolton Field Airport",state:"OH",lat:39.90083,lon:-83.13722},KUNI:{id:"KUNI",city:"OHIO U/ATHEN-ALBANY",state:"OH",lat:39.22,lon:-82.23},KUSE:{id:"KUSE",city:"Wauseon Fulton County Airport",state:"OH",lat:41.6101,lon:-84.1272},KUYF:{id:"KUYF",city:"London Madison County Airport",state:"OH",lat:39.9326999,lon:-83.462},KVES:{id:"KVES",city:"Versailles Darke County Airport",state:"OH",lat:40.2044,lon:-84.5318999},KVNW:{id:"KVNW",city:"Van Wert County Airport",state:"OH",lat:40.86383,lon:-84.60636},KVTA:{id:"KVTA",city:"Newark, Newark Heath Airport",state:"OH",lat:40.02278,lon:-82.4625},KYNG:{id:"KYNG",city:"Youngstown, Youngstown-Warren Regional Airport",state:"OH",lat:41.25444,lon:-80.67389},KZZV:{id:"KZZV",city:"Zanesville, Zanesville Municipal Airport",state:"OH",lat:39.94444,lon:-81.89222},KAST:{id:"KAST",city:"Astoria, Astoria Regional Airport",state:"OR",lat:46.15694,lon:-123.8825},KBDN:{id:"KBDN",city:"Bend Airport AWOS",state:"OR",lat:44.0948,lon:-121.2006},KBKE:{id:"KBKE",city:"Baker Municipal Airport",state:"OR",lat:44.84302,lon:-117.80987},KBNO:{id:"KBNO",city:"Burns Municipal Airport",state:"OR",lat:43.59488,lon:-118.95791},KBOK:{id:"KBOK",city:"Brookings, Brookings Airport",state:"OR",lat:42.07444,lon:-124.29},KCVO:{id:"KCVO",city:"Corvallis, Corvallis Municipal Airport",state:"OR",lat:44.5,lon:-123.28333},KEUG:{id:"KEUG",city:"Eugene, Mahlon Sweet Field",state:"OR",lat:44.13333,lon:-123.21444},KGCD:{id:"KGCD",city:"Grant County Regional Airport",state:"OR",lat:44.40287,lon:-118.96715},KHIO:{id:"KHIO",city:"Portland-Hillsboro Airport",state:"OR",lat:45.54765,lon:-122.95568},KHRI:{id:"KHRI",city:"Hermiston, Hermiston Municipal Airport",state:"OR",lat:45.82583,lon:-119.26111},KABE:{id:"KABE",city:"Allentown, Lehigh Valley International Airport",state:"PA",lat:40.64985,lon:-75.44771},KAFJ:{id:"KAFJ",city:"Washington - Washington County Airport",state:"PA",lat:40.13333,lon:-80.28333},KAGC:{id:"KAGC",city:"Pittsburgh - Allegheny County Airport",state:"PA",lat:40.35521,lon:-79.92144},KAOO:{id:"KAOO",city:"Altoona - Blair County Airport",state:"PA",lat:40.29994,lon:-78.3168},KAVP:{id:"KAVP",city:"Wilkes-Barre - Scranton, Wilkes-Barre / Scranton International Airport",state:"PA",lat:41.33889,lon:-75.72667},KBFD:{id:"KBFD",city:"Bradford Regional Airport",state:"PA",lat:41.79838,lon:-78.63539},KBTP:{id:"KBTP",city:"Butler, Butler County Airport/K W Scholter Field",state:"PA",lat:40.78333,lon:-79.95},KBVI:{id:"KBVI",city:"Beaver County Airport",state:"PA",lat:40.77351,lon:-80.38248},KCKZ:{id:"KCKZ",city:"Pennridge Airport",state:"PA",lat:40.38919,lon:-75.29047},KCXY:{id:"KCXY",city:"Harrisburg, Capital City Airport",state:"PA",lat:40.21843,lon:-76.8552},KDUJ:{id:"KDUJ",city:"Du Bois - Jefferson County Airport",state:"PA",lat:41.17948,lon:-78.89326},KDYL:{id:"KDYL",city:"Doylestown, Doylestown Airport",state:"PA",lat:40.33016,lon:-75.12286},KERI:{id:"KERI",city:"Erie, Erie International Airport",state:"PA",lat:42.08,lon:-80.1825},KFIG:{id:"KFIG",city:"Clearfield, Clearfield-Lawrence Airport",state:"PA",lat:41.04667,lon:-78.41167},KFKL:{id:"KFKL",city:"Franklin, Venango Regional Airport",state:"PA",lat:41.38333,lon:-79.86667},KGKJ:{id:"KGKJ",city:"Port Meadville Airport",state:"PA",lat:41.6258399,lon:-80.21231},KHMZ:{id:"KHMZ",city:"Bedford, Bedford County Airport",state:"PA",lat:40.08528,lon:-78.51222},KHZL:{id:"KHZL",city:"Hazleton Municipal Airport",state:"PA",lat:40.98447,lon:-75.99005},KIDI:{id:"KIDI",city:"Indiana / Stewart Field",state:"PA",lat:40.63333,lon:-79.1},KIPT:{id:"KIPT",city:"Williamsport - Lycoming County Airport",state:"PA",lat:41.24298,lon:-76.92173},KJST:{id:"KJST",city:"Johnstown - Cambria County Airport",state:"PA",lat:40.3149,lon:-78.83074},KLBE:{id:"KLBE",city:"Latrobe / Westmoreland",state:"PA",lat:40.2731,lon:-79.41033},KLNS:{id:"KLNS",city:"Lancaster, Lancaster Airport",state:"PA",lat:40.1205799,lon:-76.29446},KLOM:{id:"KLOM",city:"Philadelphia - Wings Field Airport",state:"PA",lat:40.13758,lon:-75.2684},KMDT:{id:"KMDT",city:"Harrisburg, Harrisburg International Airport",state:"PA",lat:40.19361,lon:-76.76333},KMPO:{id:"KMPO",city:"Mount Pocono, Pocono Mountains Municipal Airport",state:"PA",lat:41.13821,lon:-75.37971},KMQS:{id:"KMQS",city:"Chester County Airport",state:"PA",lat:39.98333,lon:-75.86667},KMUI:{id:"KMUI",city:"Muir Army Air Field / Indiantown",state:"PA",lat:40.43808,lon:-76.56434},KOQN:{id:"KOQN",city:"Brandywine Regional Airport",state:"PA",lat:39.99011,lon:-75.5819},KOYM:{id:"KOYM",city:"St Marys Municipal Airport",state:"PA",lat:41.41248,lon:-78.50263},KPHL:{id:"KPHL",city:"Philadelphia, Philadelphia International Airport",state:"PA",lat:39.87327,lon:-75.22678},KPIT:{id:"KPIT",city:"Pittsburgh, Pittsburgh International Airport",state:"PA",lat:40.50389,lon:-80.26639},KPJC:{id:"KPJC",city:"Zelienople Municipal Airport",state:"PA",lat:40.80197,lon:-80.16086},KPNE:{id:"KPNE",city:"Philadelphia, Northeast Philadelphia Airport",state:"PA",lat:40.07889,lon:-75.01361},KPTW:{id:"KPTW",city:"Pottstown, Pottstown Limerick Airport",state:"PA",lat:40.23802,lon:-75.5548699},KRDG:{id:"KRDG",city:"Reading, Reading Regional Airport",state:"PA",lat:40.37333,lon:-75.95944},KRVL:{id:"KRVL",city:"Reedsville / Mifflin",state:"PA",lat:40.68333,lon:-77.63333},KSEG:{id:"KSEG",city:"Selinsgrove Penn Valley Airport",state:"PA",lat:40.81929,lon:-76.86582},KTHV:{id:"KTHV",city:"York, York Airport",state:"PA",lat:39.91944,lon:-76.87694},KUCP:{id:"KUCP",city:"New Castle, New Castle Municipal Airport",state:"PA",lat:41.02528,lon:-80.41333},KUKT:{id:"KUKT",city:"Quakertown Airport",state:"PA",lat:40.4368,lon:-75.38016},KUNV:{id:"KUNV",city:"State College - University Park Airport",state:"PA",lat:40.85344,lon:-77.8401},KVVS:{id:"KVVS",city:"Joseph A Hardy Connellsville Airport",state:"PA",lat:39.95906,lon:-79.65742},KXLL:{id:"KXLL",city:"Allentown Queen City Municipal Airport",state:"PA",lat:40.57,lon:-75.488},KALB:{id:"KALB",city:"Albany International Airport",state:"NY",lat:42.74722,lon:-73.79912},KART:{id:"KART",city:"Watertown, Watertown International Airport",state:"NY",lat:43.99194,lon:-76.02167},KBGM:{id:"KBGM",city:"Binghamton, Binghamton Regional Airport",state:"NY",lat:42.20778,lon:-75.98139},KBUF:{id:"KBUF",city:"Buffalo, Greater Buffalo International Airport",state:"NY",lat:42.93998,lon:-78.73604},KDKK:{id:"KDKK",city:"Dunkirk, Chautauqua County / Dunkirk Airport",state:"NY",lat:42.49306,lon:-79.27583},KDSV:{id:"KDSV",city:"Dansville, Dansville Municipal Airport",state:"NY",lat:42.56944,lon:-77.71444},KELM:{id:"KELM",city:"Elmira, Elmira / Corning Regional Airport",state:"NY",lat:42.15639,lon:-76.90278},KELZ:{id:"KELZ",city:"Wellsville, Wellsville Municipal Airport",state:"NY",lat:42.1075,lon:-77.98444},KFOK:{id:"KFOK",city:"The Gabreski Airport",state:"NY",lat:40.85053,lon:-72.61927},KFRG:{id:"KFRG",city:"Farmingdale - Republic Airport",state:"NY",lat:40.73443,lon:-73.41639},KFZY:{id:"KFZY",city:"Fulton, Oswego County Airport",state:"NY",lat:43.35083,lon:-76.38806},KGFL:{id:"KGFL",city:"Glens Falls, Floyd Bennett Memorial Airport",state:"NY",lat:43.34111,lon:-73.61056},KGTB:{id:"KGTB",city:"Fort Drum / Wheeler-Sack U. S. Army Airfield",state:"NY",lat:44.05,lon:-75.73333},KGVQ:{id:"KGVQ",city:"Genesee County Airport",state:"NY",lat:43.03175,lon:-78.16967},KHPN:{id:"KHPN",city:"White Plains - Westchester County Airport",state:"NY",lat:41.06237,lon:-73.70456},KHTO:{id:"KHTO",city:"East Hampton, East Hampton Airport",state:"NY",lat:40.95944,lon:-72.25194},KHWV:{id:"KHWV",city:"Shirley, Brookhaven Airport",state:"NY",lat:40.82167,lon:-72.8688899},KIAG:{id:"KIAG",city:"Niagara Falls, Niagara Falls International Airport",state:"NY",lat:43.1082899,lon:-78.93818},KISP:{id:"KISP",city:"Islip, Long Island Mac Arthur Airport",state:"NY",lat:40.79389,lon:-73.10167},KITH:{id:"KITH",city:"Ithaca, Ithaca Tompkins Regional Airport",state:"NY",lat:42.49083,lon:-76.45833},KJFK:{id:"KJFK",city:"New York, Kennedy International Airport",state:"NY",lat:40.63915,lon:-73.76393},KJHW:{id:"KJHW",city:"Jamestown, Chautauqua County/Jamestown Airport",state:"NY",lat:42.15,lon:-79.26667},KJRB:{id:"KJRB",city:"New York Downtown Manhattan",state:"NY",lat:40.7012,lon:-74.009},KLGA:{id:"KLGA",city:"New York, La Guardia Airport",state:"NY",lat:40.77917,lon:-73.88},KMGJ:{id:"KMGJ",city:"Montgomery, Orange County Airport",state:"NY",lat:41.50917,lon:-74.265},KMSS:{id:"KMSS",city:"Massena, Massena International-Richards Field",state:"NY",lat:44.93583,lon:-74.84556},KMSV:{id:"KMSV",city:"Monticello, Sullivan County International Airport",state:"NY",lat:41.7,lon:-74.8},KMTP:{id:"KMTP",city:"Montauk, Montauk Airport",state:"NY",lat:41.07306,lon:-71.92333},KNYC:{id:"KNYC",city:"New York City, Central Park",state:"NY",lat:40.78333,lon:-73.9666699},KOGS:{id:"KOGS",city:"Ogdensburg International Airport",state:"NY",lat:44.68186,lon:-75.4655},KOLE:{id:"KOLE",city:"Cattaraugus County-Olean Airport",state:"NY",lat:42.24119,lon:-78.37136},KPBG:{id:"KPBG",city:"Plattsburgh International Airport ",state:"NY",lat:44.65,lon:-73.4666699},KPEO:{id:"KPEO",city:"Penn Yan, Penn Yan Airport",state:"NY",lat:42.64306,lon:-77.04944},KPOU:{id:"KPOU",city:"Poughkeepsie, Dutchess County Airport",state:"NY",lat:41.62667,lon:-73.88417},KPTD:{id:"KPTD",city:"Potsdam Municipal Airport/Damon Field",state:"NY",lat:44.67667,lon:-74.94844},KRME:{id:"KRME",city:"Griffiss Air Force Base / Rome",state:"NY",lat:43.23333,lon:-75.4},KROC:{id:"KROC",city:"Rochester, Greater Rochester International Airport",state:"NY",lat:43.11667,lon:-77.67667},KSCH:{id:"KSCH",city:"Schenectady Airport",state:"NY",lat:42.85,lon:-73.93333},KSDC:{id:"KSDC",city:"Williamson-Sodus Airport",state:"NY",lat:43.23459,lon:-77.11946},KSLK:{id:"KSLK",city:"Saranac Lake, Adirondack Regional Airport",state:"NY",lat:44.39306,lon:-74.20278},KSWF:{id:"KSWF",city:"Newburgh / Stewart",state:"NY",lat:41.5,lon:-74.1},KSYR:{id:"KSYR",city:"Syracuse, Syracuse Hancock International Airport",state:"NY",lat:43.10917,lon:-76.10333},KVGC:{id:"KVGC",city:"Hamilton Municipal Airport",state:"NY",lat:42.84344,lon:-75.56119},KGLY:{id:"KGLY",city:"Clinton, MO",state:"MO",lat:38.3566,lon:-93.6842},KGPH:{id:"KGPH",city:"Mosby Midwest National Air Center Airport",state:"MO",lat:39.3325,lon:-94.3096},KHAE:{id:"KHAE",city:"Hannibal Regional Airport",state:"MO",lat:39.7252,lon:-91.4439},KHFJ:{id:"KHFJ",city:"Monett",state:"MO",lat:36.9062,lon:-94.0128},KIRK:{id:"KIRK",city:"Kirksville, Kirksville Regional Airport",state:"MO",lat:40.09722,lon:-92.54333},KJEF:{id:"KJEF",city:"Jefferson City, Jefferson City Memorial Airport",state:"MO",lat:38.59444,lon:-92.15583},KJLN:{id:"KJLN",city:"Joplin, Joplin Regional Airport",state:"MO",lat:37.15611,lon:-94.5005599},KLBO:{id:"KLBO",city:"LEBANON",state:"MO",lat:37.64833,lon:-92.6525},KLRY:{id:"KLRY",city:"Harrisonville Lawrence Smith Memorial Airport",state:"MO",lat:38.611,lon:-94.3421},KLXT:{id:"KLXT",city:"Lee's Summit, Lee's Summit Municipal Airport",state:"MO",lat:38.95972,lon:-94.37167},KMAW:{id:"KMAW",city:"Malden Municipal Airport",state:"MO",lat:36.6004999,lon:-89.9922},KMBY:{id:"KMBY",city:"Omar N Bradley Airport",state:"MO",lat:39.46341,lon:-92.42638},KMCI:{id:"KMCI",city:"Kansas City, Kansas City International Airport",state:"MO",lat:39.29722,lon:-94.73056},KMHL:{id:"KMHL",city:"Marshall Memorial Municipal Airport",state:"MO",lat:39.0955,lon:-93.2028},KMKC:{id:"KMKC",city:"Kansas City, Kansas City Downtown Airport",state:"MO",lat:39.12083,lon:-94.59694},KMYJ:{id:"KMYJ",city:"Mexico Memorial Airport",state:"MO",lat:39.1575,lon:-91.8182999},KOZS:{id:"KOZS",city:"Camdenton Memorial Airport",state:"MO",lat:37.9739999,lon:-92.6912},KPCD:{id:"KPCD",city:"Perryville Regional Airport",state:"MO",lat:37.86867,lon:-89.86214},KPOF:{id:"KPOF",city:"Poplar Bluff, Poplar Bluff Municipal Airport",state:"MO",lat:36.77056,lon:-90.32222},KRAW:{id:"KRAW",city:"Warsaw Municipal Airport",state:"MO",lat:38.3469,lon:-93.3454},KRCM:{id:"KRCM",city:"Skyhaven Airport",state:"MO",lat:38.7842,lon:-93.8028999},KSET:{id:"KSET",city:"St. Charles, St. Charles County Smartt Airport",state:"MO",lat:38.93056,lon:-90.4325},KSGF:{id:"KSGF",city:"Springfield, Springfield Regional Airport",state:"MO",lat:37.23972,lon:-93.38972},KSIK:{id:"KSIK",city:"Sikeston Memorial Municipal Airport",state:"MO",lat:36.8989,lon:-89.5618},KSTJ:{id:"KSTJ",city:"St. Joseph, Rosecrans Memorial Airport",state:"MO",lat:39.76806,lon:-94.90917},KSTL:{id:"KSTL",city:"St. Louis Lambert International Airport",state:"MO",lat:38.7525,lon:-90.37361},KSUS:{id:"KSUS",city:"St. Louis, Spirit Of St. Louis Airport",state:"MO",lat:38.65722,lon:-90.65583},KSZL:{id:"KSZL",city:"Whiteman Air Force Base",state:"MO",lat:38.73333,lon:-93.55},KTBN:{id:"KTBN",city:"Fort Leonard Wood",state:"MO",lat:37.73333,lon:-92.13333},KTKX:{id:"KTKX",city:"Kennett - Kennett Memorial Airport",state:"MO",lat:36.22256,lon:-90.03671},KUNO:{id:"KUNO",city:"West Plains, West Plains Municipal Airport",state:"MO",lat:36.87917,lon:-91.905},KVER:{id:"KVER",city:"Jesse Viertel Memorial Airport",state:"MO",lat:38.94672,lon:-92.68267},KVIH:{id:"KVIH",city:"Rolla / Vichy, Rolla National Airport",state:"MO",lat:38.13194,lon:-91.76528},KABY:{id:"KABY",city:"Southwest Georgia Regional Airport",state:"GA",lat:31.53652,lon:-84.19571},KACJ:{id:"KACJ",city:"Americus Souther Field Airport",state:"GA",lat:32.11081,lon:-84.18886},KAGS:{id:"KAGS",city:"Augusta, Bush Field",state:"GA",lat:33.36444,lon:-81.96333},KAHN:{id:"KAHN",city:"Athens, Athens Airport",state:"GA",lat:33.95083,lon:-83.3280599},KAJR:{id:"KAJR",city:"Cornelia Habersham County Airport",state:"GA",lat:34.4998,lon:-83.5567},KAMG:{id:"KAMG",city:"Alma, Bacon County Airport",state:"GA",lat:31.53611,lon:-82.50667},KATL:{id:"KATL",city:"Atlanta, Hartsfield - Jackson Atlanta International Airport",state:"GA",lat:33.64028,lon:-84.42694},KAYS:{id:"KAYS",city:"Waycross / Ware County, Ga",state:"GA",lat:31.25,lon:-82.4},KAZE:{id:"KAZE",city:"Hazlehurst Airport",state:"GA",lat:31.8847,lon:-82.6474},KBGE:{id:"KBGE",city:"Bainbridge, Decatur County Industrial Air Park Airport",state:"GA",lat:30.96667,lon:-84.63333},KBHC:{id:"KBHC",city:"Baxley Municipal Airport",state:"GA",lat:31.7138,lon:-82.3938},KBIJ:{id:"KBIJ",city:"Blakely, Early County Airport",state:"GA",lat:31.39694,lon:-84.895},KBQK:{id:"KBQK",city:"Brunswick / Glynco",state:"GA",lat:31.25,lon:-81.4666699},KCCO:{id:"KCCO",city:"Newnan, Newnan Coweta County Airport",state:"GA",lat:33.31222,lon:-84.77028},KCKF:{id:"KCKF",city:"Cordele Crisp County Airport",state:"GA",lat:31.9888,lon:-83.7739},KCNI:{id:"KCNI",city:"Canton, Cherokee County Airport",state:"GA",lat:34.31056,lon:-84.42389},KCSG:{id:"KCSG",city:"Columbus, Columbus Metropolitan Airport",state:"GA",lat:32.51611,lon:-84.94222},KCTJ:{id:"KCTJ",city:"Carrollton West Georgia Regional Airport",state:"GA",lat:33.63,lon:-85.15},KCVC:{id:"KCVC",city:"Covington Municipal Airport",state:"GA",lat:33.632,lon:-83.85},KCWV:{id:"KCWV",city:"Claxton Evans County Airport",state:"GA",lat:32.1950999,lon:-81.8696},KCXU:{id:"KCXU",city:"Camilla-Mitchell County Airport",state:"GA",lat:31.2132,lon:-84.2352},KCZL:{id:"KCZL",city:"Calhoun Tom B. David Field Airport",state:"GA",lat:34.4554,lon:-84.9392},KDBN:{id:"KDBN",city:"Dublin, W H 'Bud' Barron Airport",state:"GA",lat:32.56444,lon:-82.985},KDNL:{id:"KDNL",city:"Augusta Daniel Field",state:"GA",lat:33.4669,lon:-82.03836},KDNN:{id:"KDNN",city:"Dalton, Dalton Municipal Airport",state:"GA",lat:34.72167,lon:-84.86917},KDQH:{id:"KDQH",city:"Douglas, Douglas Municipal Airport",state:"GA",lat:31.47667,lon:-82.86028},KDZJ:{id:"KDZJ",city:"Blairsville Airport",state:"GA",lat:34.8544,lon:-83.9973},KEZM:{id:"KEZM",city:"Eastman, Heart of Georgia Regional Airport",state:"GA",lat:32.21417,lon:-83.12778},KFFC:{id:"KFFC",city:"Atlanta Regional Airport-Falcon Field",state:"GA",lat:33.35436,lon:-84.56893},KFTY:{id:"KFTY",city:"Fulton County Airport-Brown Field",state:"GA",lat:33.77764,lon:-84.52461},KFZG:{id:"KFZG",city:"Fitzgerald Municipal Airport",state:"GA",lat:31.6839,lon:-83.2709},KGVL:{id:"KGVL",city:"Gainesville, Gilmer Memorial Airport",state:"GA",lat:34.27194,lon:-83.83028},KHMP:{id:"KHMP",city:"Henry County Airport",state:"GA",lat:33.3899,lon:-84.331},KHOE:{id:"KHOE",city:"Homerville Airport",state:"GA",lat:31.0559,lon:-82.7741},KHQU:{id:"KHQU",city:"Thomson, Thomson-McDuffie County Airport",state:"GA",lat:33.52944,lon:-82.51639},KIIY:{id:"KIIY",city:"Washington, Washington-Wilkes County Airport",state:"GA",lat:33.77972,lon:-82.81639},KJCA:{id:"KJCA",city:"Jackson County Airport",state:"GA",lat:34.17586,lon:-83.5616},KJES:{id:"KJES",city:"Jesup-Wayne County Airport",state:"GA",lat:31.554,lon:-81.8824999},KJYL:{id:"KJYL",city:"Sylvania, Plantation Airpark",state:"GA",lat:32.64528,lon:-81.59639},KJZP:{id:"KJZP",city:"Jasper Pickens County Airport",state:"GA",lat:34.45417,lon:-84.45971},KLGC:{id:"KLGC",city:"LaGrange-Callaway Airport",state:"GA",lat:33.00617,lon:-85.06609},KLHW:{id:"KLHW",city:"Wright Army Airfield (Fort Stewart)/Midcoast Regional Airport",state:"GA",lat:31.88724,lon:-81.56244},KLSF:{id:"KLSF",city:"Fort Benning",state:"GA",lat:32.3333299,lon:-84.83333},KLZU:{id:"KLZU",city:"Gwinnett County Airport-Briscoe Field",state:"GA",lat:33.98288,lon:-83.95842},KMCN:{id:"KMCN",city:"Middle Georgia Regional Airport",state:"GA",lat:32.68892,lon:-83.65293},KMGE:{id:"KMGE",city:"Marietta / Dobbins Air Force Base",state:"GA",lat:33.91667,lon:-84.51667},KMGR:{id:"KMGR",city:"Moultrie, Moultrie Municipal Airport",state:"GA",lat:31.08472,lon:-83.80306},KMHP:{id:"KMHP",city:"Metter Municipal Airport",state:"GA",lat:32.37397,lon:-82.08144},KMLJ:{id:"KMLJ",city:"Milledgeville, Baldwin County Airport",state:"GA",lat:33.15417,lon:-83.24056},KOKZ:{id:"KOKZ",city:"Sandersville Kaolin Field Airport",state:"GA",lat:32.9667,lon:-82.8382},KOPN:{id:"KOPN",city:"Thomaston, Thomaston-Upson County Airport",state:"GA",lat:32.955,lon:-84.2644399},KPDK:{id:"KPDK",city:"Atlanta, De Kalb-Peachtree Airport",state:"GA",lat:33.87833,lon:-84.29806},KPIM:{id:"KPIM",city:"Pine Mountain Harris County Airport",state:"GA",lat:32.8407,lon:-84.8824},KPUJ:{id:"KPUJ",city:"Dallas Paulding County Regional Airport",state:"GA",lat:33.9189999,lon:-84.952},KPXE:{id:"KPXE",city:"Perry-Houston County Airport",state:"GA",lat:32.5105999,lon:-83.7673},KRMG:{id:"KRMG",city:"Rome, R. B. Russell Airport",state:"GA",lat:34.34778,lon:-85.1611099},KRVJ:{id:"KRVJ",city:"Swinton Smith Field at Reidsville Municipal Airport",state:"GA",lat:32.0594899,lon:-82.15358},KRYY:{id:"KRYY",city:"Cobb County International Airport - McCollum Field",state:"GA",lat:34.01467,lon:-84.59635},KSAV:{id:"KSAV",city:"Savannah-Hilton Head International Airport",state:"GA",lat:32.1313699,lon:-81.20226},KSBO:{id:"KSBO",city:"Swainsboro Emanuel County Airport",state:"GA",lat:32.6091,lon:-82.3699},KSSI:{id:"KSSI",city:"Brunswick, Malcolm McKinnon Airport",state:"GA",lat:31.15167,lon:-81.39139},KSVN:{id:"KSVN",city:"Hunter U. S. Army Airfield",state:"GA",lat:32.01667,lon:-81.15},KTBR:{id:"KTBR",city:"Statesboro, Statesboro-Bulloch County Airport",state:"GA",lat:32.48306,lon:-81.7372199},KTMA:{id:"KTMA",city:"Tifton Henry Tift Myers",state:"GA",lat:31.429,lon:-83.4885},KTOC:{id:"KTOC",city:"Toccoa Le Tourneau Airport",state:"GA",lat:34.5927999,lon:-83.2964},KTVI:{id:"KTVI",city:"Thomasville Regional Airport",state:"GA",lat:30.90179,lon:-83.88113},KVAD:{id:"KVAD",city:"Moody Air Force Base",state:"GA",lat:30.97913,lon:-83.19247},KVDI:{id:"KVDI",city:"Vidalia, Vidalia Municipal Airport",state:"GA",lat:32.1925,lon:-82.37194},KVLD:{id:"KVLD",city:"Valdosta Regional Airport",state:"GA",lat:30.77632,lon:-83.27389},KVPC:{id:"KVPC",city:"Cartersville Airport",state:"GA",lat:34.11589,lon:-84.85064},KWDR:{id:"KWDR",city:"Winder, Winder-Barrow Airport",state:"GA",lat:33.98222,lon:-83.66806},KWRB:{id:"KWRB",city:"Warner Robins Air Force Base",state:"GA",lat:32.63333,lon:-83.6},PAAD:{id:"PAAD",city:"Point Thomson Airstrip",state:"AK",lat:70.136,lon:-146.2901},PAAQ:{id:"PAAQ",city:"Palmer, Palmer Municipal Airport",state:"AK",lat:61.6,lon:-149.08333},PABA:{id:"PABA",city:"Barter Island, Barter Island LRRS Airport",state:"AK",lat:70.1338899,lon:-143.57694},PABE:{id:"PABE",city:"Bethel, Bethel Airport",state:"AK",lat:60.77972,lon:-161.83778},PABI:{id:"PABI",city:"Delta Junction/Ft Greely, Allen Army Airfield",state:"AK",lat:64,lon:-145.73333},PABL:{id:"PABL",city:"Buckland, Buckland Airport",state:"AK",lat:65.98222,lon:-161.15194},PABR:{id:"PABR",city:"Wiley Post-Will Rogers Memorial Airport",state:"AK",lat:71.28528,lon:-156.76583},PABT:{id:"PABT",city:"Bettles, Bettles Airport",state:"AK",lat:66.91667,lon:-151.51667},PABV:{id:"PABV",city:"Birchwood, Birchwood Airport",state:"AK",lat:61.41667,lon:-149.51667},PACD:{id:"PACD",city:"Cold Bay, Cold Bay Airport",state:"AK",lat:55.22083,lon:-162.72778},PACM:{id:"PACM",city:"Scammon Bay",state:"AK",lat:61.8453,lon:-165.5713},PACV:{id:"PACV",city:"Cordova, Merle K (Mudhole) Smith Airport",state:"AK",lat:60.49167,lon:-145.47778},PACZ:{id:"PACZ",city:"Cape Romanzof, Cape Romanzof LRRS Airport",state:"AK",lat:61.78333,lon:-166.03333},PADG:{id:"PADG",city:"Red Dog",state:"AK",lat:68.0321,lon:-162.8992},PADK:{id:"PADK",city:"Adak Island, Adak Airport",state:"AK",lat:51.87778,lon:-176.64583},PADL:{id:"PADL",city:"Dillingham, Dillingham Airport",state:"AK",lat:59.05,lon:-158.51667},PADM:{id:"PADM",city:"Marshall",state:"AK",lat:61.8643,lon:-162.0261},PADQ:{id:"PADQ",city:"Kodiak, Kodiak Airport",state:"AK",lat:57.75,lon:-152.5},PADU:{id:"PADU",city:"Unalaska, Unalaska Airport",state:"AK",lat:53.9,lon:-166.53333},PAEC:{id:"PAEC",city:"Chulitna, Chulitna Airport",state:"AK",lat:62.88333,lon:-149.83333},PAED:{id:"PAED",city:"Anchorage, Elmendorf Air Force Base",state:"AK",lat:61.25306,lon:-149.79389},PAEG:{id:"PAEG",city:"Eagle, Eagle Airport",state:"AK",lat:64.77639,lon:-141.15083},PAEH:{id:"PAEH",city:"Cape Newenham, Cape Newenham LRRS Airport",state:"AK",lat:58.65,lon:-162.0666699},PAEI:{id:"PAEI",city:"Fairbanks, Eielson Air Force Base",state:"AK",lat:64.65,lon:-147.1},PAEL:{id:"PAEL",city:"Elfin Cove - Elfin Cove Seaplane Base",state:"AK",lat:58.19467,lon:-136.34663},PAEM:{id:"PAEM",city:"Emmonak, Emmonak Airport",state:"AK",lat:62.78333,lon:-164.5},PAEN:{id:"PAEN",city:"Kenai, Kenai Municipal Airport",state:"AK",lat:60.57306,lon:-151.245},PAFA:{id:"PAFA",city:"Fairbanks, Fairbanks International Airport",state:"AK",lat:64.80389,lon:-147.87611},PAFB:{id:"PAFB",city:"Fort Wainwright AAF",state:"AK",lat:64.83667,lon:-147.59556},PAFE:{id:"PAFE",city:"Kake - Kake Airport",state:"AK",lat:56.964,lon:-133.913},PAFM:{id:"PAFM",city:"Ambler, Ambler Airport",state:"AK",lat:67.1,lon:-157.85},PAFR:{id:"PAFR",city:"Ft. Richardson / Bryant U. S. Army Heliport, Ak",state:"AK",lat:61.26667,lon:-149.65},PAFS:{id:"PAFS",city:"Nikolai",state:"AK",lat:63.019,lon:-154.358},PAGA:{id:"PAGA",city:"Galena, Edward G. Pitka Sr. Airport",state:"AK",lat:64.73333,lon:-156.93333},PAGB:{id:"PAGB",city:"Galbraith Lake, Galbraith Lake Airport",state:"AK",lat:68.48333,lon:-149.48333},PAGH:{id:"PAGH",city:"Shungnak Airport",state:"AK",lat:66.8881,lon:-157.1624},PAGK:{id:"PAGK",city:"Gulkana, Gulkana Airport",state:"AK",lat:62.15,lon:-145.45},PAGL:{id:"PAGL",city:"Golovin, Golovin Airport",state:"AK",lat:64.54333,lon:-163.03944},PAGM:{id:"PAGM",city:"Gambell, Gambell Airport",state:"AK",lat:63.76667,lon:-171.73333},PAGN:{id:"PAGN",city:"Angoon",state:"AK",lat:57.5,lon:-134.58333},PAGS:{id:"PAGS",city:"Gustavus, Gustavus Airport",state:"AK",lat:58.41667,lon:-135.7},PAGY:{id:"PAGY",city:"Skagway",state:"AK",lat:59.4544,lon:-135.3263},PAHC:{id:"PAHC",city:"Holy Cross",state:"AK",lat:62.1873,lon:-159.77657},PAHL:{id:"PAHL",city:"Huslia, Huslia Airport",state:"AK",lat:65.6975,lon:-156.35111},PAHN:{id:"PAHN",city:"Haines - Haines Airport",state:"AK",lat:59.2429,lon:-135.5114},PAHO:{id:"PAHO",city:"Homer, Homer Airport",state:"AK",lat:59.65,lon:-151.48333},PAHP:{id:"PAHP",city:"Hooper Bay, Hooper Bay Airport",state:"AK",lat:61.51667,lon:-166.13333},PAHY:{id:"PAHY",city:"Hydaburg - Hydaburg Seaplane Base",state:"AK",lat:55.2,lon:-132.83333},PAIG:{id:"PAIG",city:"Igiugig",state:"AK",lat:59.32395,lon:-155.90235},PAII:{id:"PAII",city:"Egegik, Egegik Airport",state:"AK",lat:58.18528,lon:-157.38556},PAIK:{id:"PAIK",city:"Kinana / Bob Baker Me",state:"AK",lat:66.98333,lon:-160.43333},PAIL:{id:"PAIL",city:"Iliamna, Iliamna Airport",state:"AK",lat:59.75,lon:-154.9},PAIM:{id:"PAIM",city:"Utopia Creek, Indian Mountain LRRS Airport",state:"AK",lat:66,lon:-153.7},PAIN:{id:"PAIN",city:"McKinley Park, McKinley National Park Airport",state:"AK",lat:63.73333,lon:-148.91667},PAIW:{id:"PAIW",city:"Wales",state:"AK",lat:65.6226,lon:-168.0949},PAJC:{id:"PAJC",city:"Chignik, Chignik Airport",state:"AK",lat:56.31139,lon:-158.37333},PAJK:{id:"PAJK",city:"NWS Office: Juneau",state:"AK",lat:58.4,lon:-134.57001},PAJN:{id:"PAJN",city:"Juneau, Juneau International Airport",state:"AK",lat:58.35472,lon:-134.57611},PAJZ:{id:"PAJZ",city:"Koliganek",state:"AK",lat:59.727,lon:-157.2589999},PAKF:{id:"PAKF",city:"False Pass Airport",state:"AK",lat:54.847,lon:-163.41},PAKH:{id:"PAKH",city:"Akhiok",state:"AK",lat:56.9387,lon:-154.1826},PAKI:{id:"PAKI",city:"Kipnuk, Kipnuk Airport",state:"AK",lat:59.93278,lon:-164.03028},PAKK:{id:"PAKK",city:"Koyuk, Koyuk Airport",state:"AK",lat:64.93389,lon:-161.15806},PAKN:{id:"PAKN",city:"King Salmon, King Salmon Airport",state:"AK",lat:58.67667,lon:-156.64917},PAKP:{id:"PAKP",city:"Anaktuvuk Pass, Anaktuvuk Pass Airport",state:"AK",lat:68.13361,lon:-151.7433299},PAKT:{id:"PAKT",city:"Ketchikan, Ketchikan International Airport",state:"AK",lat:55.35556,lon:-131.71361},PAKU:{id:"PAKU",city:"Kuparuk, Ugnu-Kuparuk Airport",state:"AK",lat:70.31667,lon:-149.58333},PAKV:{id:"PAKV",city:"Kaltag, Kaltag Airport",state:"AK",lat:64.31667,lon:-158.73333},PAKW:{id:"PAKW",city:"Klawock - Klawock Airport",state:"AK",lat:55.5839,lon:-133.067},PALG:{id:"PALG",city:"Kalskag",state:"AK",lat:61.5364,lon:-160.3414},PALH:{id:"PALH",city:"Anchorage, Lake Hood Seaplane Base",state:"AK",lat:61.18333,lon:-149.96667},PALJ:{id:"PALJ",city:"Port Alsworth, Port Alsworth Airport",state:"AK",lat:60.2,lon:-154.3166699},PALP:{id:"PALP",city:"Deadhorse, Alpine Airstrip",state:"AK",lat:70.33333,lon:-150.93333},PALU:{id:"PALU",city:"Cape Lisburne, Cape Lisburne LRRS Airport",state:"AK",lat:68.88333,lon:-166.1},PAMB:{id:"PAMB",city:"Manokotak",state:"AK",lat:58.9902,lon:-159.0499},PAMC:{id:"PAMC",city:"McGrath, McGrath Airport",state:"AK",lat:62.96667,lon:-155.61667},PAMD:{id:"PAMD",city:"Middleton Island Airport",state:"AK",lat:59.4423,lon:-146.3166},PAMH:{id:"PAMH",city:"Minchumina, Minchumina Airport",state:"AK",lat:63.88056,lon:-152.30056},PAMK:{id:"PAMK",city:"St Michael Airport",state:"AK",lat:63.49006,lon:-162.11039},PAMM:{id:"PAMM",city:"Metlakatla, Metlakatla Seaplane Base",state:"AK",lat:55.13111,lon:-131.57806},PAMO:{id:"PAMO",city:"Mountain Village",state:"AK",lat:62.0953,lon:-163.6819},PAMR:{id:"PAMR",city:"Anchorage, Merrill Field Airport",state:"AK",lat:61.21667,lon:-149.85},PAMY:{id:"PAMY",city:"Mekoryuk, Mekoryuk Airport",state:"AK",lat:60.36667,lon:-166.26667},PANA:{id:"PANA",city:"Napakiak Airport",state:"AK",lat:60.6903,lon:-161.9785},PANC:{id:"PANC",city:"Anchorage, Ted Stevens Anchorage International Airport",state:"AK",lat:61.17444,lon:-149.9961099},PANI:{id:"PANI",city:"Aniak, Aniak Airport",state:"AK",lat:61.58139,lon:-159.54278},PANN:{id:"PANN",city:"Nenana Municipal Airport",state:"AK",lat:64.54796,lon:-149.08398},PANV:{id:"PANV",city:"Anvik, Anvik Airport",state:"AK",lat:62.64833,lon:-160.18972},PANW:{id:"PANW",city:"New Stuyahok",state:"AK",lat:59.45,lon:-157.328},PAOH:{id:"PAOH",city:"Hoonah - Hoonah Seaplane Base",state:"AK",lat:58.097,lon:-135.4139999},PAOM:{id:"PAOM",city:"Nome, Nome Airport",state:"AK",lat:64.51194,lon:-165.445},PAOO:{id:"PAOO",city:"Toksook Bay",state:"AK",lat:60.53352,lon:-165.1142999},PAOR:{id:"PAOR",city:"Northway, Northway Airport",state:"AK",lat:62.96111,lon:-141.92889},PAOT:{id:"PAOT",city:"Ralph Wien Memorial Airport",state:"AK",lat:66.88576,lon:-162.60624},PAOU:{id:"PAOU",city:"Nelson Lagoon",state:"AK",lat:56.008,lon:-161.16},PAPB:{id:"PAPB",city:"St. George, St. George Airport",state:"AK",lat:56.57861,lon:-169.66139},PAPG:{id:"PAPG",city:"Petersburg",state:"AK",lat:56.8017,lon:-132.9453},PAPH:{id:"PAPH",city:"Port Heiden, Port Heiden Airport",state:"AK",lat:56.95,lon:-158.63333},PAPM:{id:"PAPM",city:"Platinum",state:"AK",lat:59.01667,lon:-161.8166699},PAPN:{id:"PAPN",city:"Pilot Point Airport",state:"AK",lat:57.58,lon:-157.572},PAPO:{id:"PAPO",city:"Point Hope, Point Hope Airport",state:"AK",lat:68.35,lon:-166.8},PAPR:{id:"PAPR",city:"Prospect Creek, Prospect Creek Airport",state:"AK",lat:66.81278,lon:-150.64389},PAPT:{id:"PAPT",city:"Puntilla",state:"AK",lat:62.1,lon:-152.75},PAQH:{id:"PAQH",city:"Quinhagak Airport",state:"AK",lat:59.7551,lon:-161.8454},PAQT:{id:"PAQT",city:"Nuiqsut, Nuiqsut Airport",state:"AK",lat:70.2099999,lon:-151.00556},PARC:{id:"PARC",city:"Arctic Village, Arctic Village Airport",state:"AK",lat:68.11444,lon:-145.57917},PARS:{id:"PARS",city:"Russian Mission",state:"AK",lat:61.775,lon:-161.3194},PARY:{id:"PARY",city:"Ruby",state:"AK",lat:64.7272,lon:-155.4697},PASA:{id:"PASA",city:"Savoonga Airport",state:"AK",lat:63.68333,lon:-170.5},PASC:{id:"PASC",city:"Deadhorse, Deadhorse Airport",state:"AK",lat:70.2,lon:-148.46667},PASD:{id:"PASD",city:"Sand Point",state:"AK",lat:55.31667,lon:-160.51667},PASH:{id:"PASH",city:"Shishmaref, Shishmaref Airport",state:"AK",lat:66.26667,lon:-166.08333},PASI:{id:"PASI",city:"Sitka - Sitka Airport",state:"AK",lat:57.048,lon:-135.3647},PASK:{id:"PASK",city:"Selawik",state:"AK",lat:66.61667,lon:-160},PASL:{id:"PASL",city:"Sleetmute",state:"AK",lat:61.69735,lon:-157.16712},PASM:{id:"PASM",city:"St. Mary's, St. Mary's Airport",state:"AK",lat:62.05,lon:-163.3},PASN:{id:"PASN",city:"St. Paul Island, St. Paul Island Airport",state:"AK",lat:57.16667,lon:-170.21667},PASO:{id:"PASO",city:"Seldovia, Seldovia Airport",state:"AK",lat:59.45,lon:-151.7},PASV:{id:"PASV",city:"Sparrevohn Airways Facilities Sector",state:"AK",lat:61.1,lon:-155.5666699},PASX:{id:"PASX",city:"Soldotna",state:"AK",lat:60.48333,lon:-151.03333},PASY:{id:"PASY",city:"Shemya, Eareckson AFB",state:"AK",lat:52.71667,lon:174.11667},PATA:{id:"PATA",city:"Tanana, Calhoun Memorial Airport",state:"AK",lat:65.16667,lon:-152.1},PATC:{id:"PATC",city:"Tin City Airways Facilities Sector",state:"AK",lat:65.56667,lon:-167.91667},PATE:{id:"PATE",city:"Teller",state:"AK",lat:65.2403999,lon:-166.3393},PATG:{id:"PATG",city:"Togiac Village, Togiak Airport",state:"AK",lat:59.05,lon:-160.4},PATK:{id:"PATK",city:"Talkeetna, Talkeetna Airport",state:"AK",lat:62.32056,lon:-150.09361},PATL:{id:"PATL",city:"Takotna, Tatalina LRRS Airport",state:"AK",lat:62.9,lon:-155.98333},PATO:{id:"PATO",city:"Portage, Portage Glacier",state:"AK",lat:60.78333,lon:-148.83333},PATQ:{id:"PATQ",city:"Atqasuk",state:"AK",lat:70.4673,lon:-157.4357},PAUN:{id:"PAUN",city:"Unalakleet",state:"AK",lat:63.88333,lon:-160.8},PAUT:{id:"PAUT",city:"Akun Airport",state:"AK",lat:54.1446,lon:-165.6041},PAVA:{id:"PAVA",city:"Chevak Airport",state:"AK",lat:61.5408,lon:-165.6009},PAVC:{id:"PAVC",city:"King Cove",state:"AK",lat:55.116,lon:-162.266},PAVD:{id:"PAVD",city:"Valdez 2",state:"AK",lat:61.13333,lon:-146.26667},PAVL:{id:"PAVL",city:"Kivalina, Kivalina Airport",state:"AK",lat:67.73333,lon:-164.55},PAWD:{id:"PAWD",city:"Seward",state:"AK",lat:60.11667,lon:-149.45},PAWG:{id:"PAWG",city:"Wrangell",state:"AK",lat:56.48333,lon:-132.36667},PAWI:{id:"PAWI",city:"Wainwright, Wainwright Airport",state:"AK",lat:70.63333,lon:-159.85},PAWM:{id:"PAWM",city:"White Mountain Airport",state:"AK",lat:64.6892,lon:-163.4127},PAWN:{id:"PAWN",city:"Noatak, Noatak Airport",state:"AK",lat:67.56667,lon:-162.98333},PAWS:{id:"PAWS",city:"Wasilla, Wasilla Airport",state:"AK",lat:61.57194,lon:-149.54056},PAYA:{id:"PAYA",city:"Yakutat",state:"AK",lat:59.51667,lon:-139.66667},PAZK:{id:"PAZK",city:"Eureka, Skelton Airport",state:"AK",lat:61.93333,lon:-147.16667},PFCL:{id:"PFCL",city:"Clarks Point Airport",state:"AK",lat:58.8337,lon:-158.5294},PFEL:{id:"PFEL",city:"Elim Airport",state:"AK",lat:64.615,lon:-162.2705},PFKT:{id:"PFKT",city:"Brevig Mission Airport",state:"AK",lat:65.3313,lon:-166.4657},PFKW:{id:"PFKW",city:"Kwethluk Airport",state:"AK",lat:60.7903,lon:-161.4437},PFNO:{id:"PFNO",city:"Noorvik",state:"AK",lat:66.8175,lon:-161.0223},PFSH:{id:"PFSH",city:"Shaktoolik Airport",state:"AK",lat:64.3711,lon:-161.224},PFWS:{id:"PFWS",city:"South Naknek Nr 2 Airport",state:"AK",lat:58.7021,lon:-157.0026},PFYU:{id:"PFYU",city:"Fort Yukon, Fort Yukon Airport",state:"AK",lat:66.56667,lon:-145.26667},PPIT:{id:"PPIT",city:"Nunapitchuk Airport",state:"AK",lat:60.906,lon:-162.4406},PPIZ:{id:"PPIZ",city:"Point Lay, Point Lay LRRS Airport",state:"AK",lat:69.7166699,lon:-163},KAAA:{id:"KAAA",city:"Logan County Airport",state:"IL",lat:40.15885,lon:-89.33891},KAJG:{id:"KAJG",city:"Mount Carmel, Mount Carmel Municipal Airport",state:"IL",lat:38.60928,lon:-87.72508},KALN:{id:"KALN",city:"St. Louis Regional Airport",state:"IL",lat:38.88968,lon:-90.03163},KARR:{id:"KARR",city:"Aurora Municipal Airport",state:"IL",lat:41.77132,lon:-88.48147},KBLV:{id:"KBLV",city:"Belleville, Scott AFB/MidAmerica Airport",state:"IL",lat:38.55,lon:-89.85},KBMI:{id:"KBMI",city:"Bloomington/Normal, Central Illinois Regional Airport at Bloomington-Normal",state:"IL",lat:40.47694,lon:-88.91583},KCIR:{id:"KCIR",city:"Cairo Regional Airport",state:"IL",lat:37.06388,lon:-89.2232},KCMI:{id:"KCMI",city:"University of Illinois - Willard",state:"IL",lat:40.03245,lon:-88.27547},KCPS:{id:"KCPS",city:"St. Louis Downtown Airport",state:"IL",lat:38.56403,lon:-90.14871},KCUL:{id:"KCUL",city:"Carmi Municipal Airport",state:"IL",lat:38.08875,lon:-88.12125},KDEC:{id:"KDEC",city:"Decatur Airport",state:"IL",lat:39.8308,lon:-88.87192},KDKB:{id:"KDKB",city:"De Kalb Taylor Municipal Airport",state:"IL",lat:41.93381,lon:-88.70657},KDNV:{id:"KDNV",city:"Danville, Vermilion County Airport",state:"IL",lat:40.19944,lon:-87.59556},KDPA:{id:"KDPA",city:"Chicago / West Chicago, Dupage Airport",state:"IL",lat:41.8963899,lon:-88.25111},KENL:{id:"KENL",city:"Centralia Municipal Airport",state:"IL",lat:38.50951,lon:-89.08996},KFEP:{id:"KFEP",city:"Albertus Airport",state:"IL",lat:42.24751,lon:-89.58104},KFOA:{id:"KFOA",city:"Flora Municipal Airport",state:"IL",lat:38.66726,lon:-88.4526999},KFWC:{id:"KFWC",city:"Fairfield, Fairfield Municipal Airport",state:"IL",lat:38.37861,lon:-88.41278},KGBG:{id:"KGBG",city:"Galesburg Municipal Airport",state:"IL",lat:40.9328999,lon:-90.43339},KHSB:{id:"KHSB",city:"Harrisburg-Raleigh Airport",state:"IL",lat:37.81281,lon:-88.54486},KIGQ:{id:"KIGQ",city:"Lansing Municipal Airport",state:"IL",lat:41.54125,lon:-87.52822},KIJX:{id:"KIJX",city:"Jacksonville Municipal Airport",state:"IL",lat:39.7740099,lon:-90.24187},KIKK:{id:"KIKK",city:"Greater Kankakee Airport",state:"IL",lat:41.06871,lon:-87.85372},KJOT:{id:"KJOT",city:"Joliet Regional Airport",state:"IL",lat:41.51755,lon:-88.17903},KLOT:{id:"KLOT",city:"Lewis University Airport",state:"IL",lat:41.60307,lon:-88.10164},KLWV:{id:"KLWV",city:"Lawrenceville-Vincennes International Airport",state:"IL",lat:38.76046,lon:-87.59903},KMDH:{id:"KMDH",city:"Southern Illinois Airport",state:"IL",lat:37.78328,lon:-89.24532},KMDW:{id:"KMDW",city:"Chicago, Chicago Midway Airport",state:"IL",lat:41.78417,lon:-87.75528},KMLI:{id:"KMLI",city:"Moline Quad-City Airport",state:"IL",lat:41.4482,lon:-90.52359},KMQB:{id:"KMQB",city:"Macomb Municipal Airport",state:"IL",lat:40.5176299,lon:-90.64807},KMTO:{id:"KMTO",city:"Mattoon / Charleston, Coles County Memorial Airport",state:"IL",lat:39.47806,lon:-88.2791699},KMVN:{id:"KMVN",city:"Mount Vernon Airport",state:"IL",lat:38.32842,lon:-88.85292},KMWA:{id:"KMWA",city:"Marion - Williamson County Regional Airport",state:"IL",lat:37.76671,lon:-89.00993},KOLY:{id:"KOLY",city:"Olney-Noble Airport",state:"IL",lat:38.72133,lon:-88.1799},KORD:{id:"KORD",city:"Chicago, Chicago-O'Hare International Airport",state:"IL",lat:41.97972,lon:-87.9044399},KPIA:{id:"KPIA",city:"Peoria - General Downing-Peoria International Airport",state:"IL",lat:40.6674999,lon:-89.68389},KPNT:{id:"KPNT",city:"Pontiac Municipal Airport",state:"IL",lat:40.92327,lon:-88.6213},KPPQ:{id:"KPPQ",city:"Pittsfield, Pittsfield Penstone Municipal Airport",state:"IL",lat:39.63889,lon:-90.77833},KPRG:{id:"KPRG",city:"Edgar County Airport",state:"IL",lat:39.69817,lon:-87.6669},KPWK:{id:"KPWK",city:"Chicago / Wheeling, Pal-Waukee Airport",state:"IL",lat:42.12083,lon:-87.90472},KRFD:{id:"KRFD",city:"Rockford, Greater Rockford Airport",state:"IL",lat:42.19278,lon:-89.09333},KRPJ:{id:"KRPJ",city:"Rochelle, Rochelle Municipal-Koritz Field Airport",state:"IL",lat:41.8905699,lon:-89.08175},KRSV:{id:"KRSV",city:"Robinson Municipal Airport",state:"IL",lat:39.01361,lon:-87.64846},KSAR:{id:"KSAR",city:"Sparta Community-Hunter Field Airport",state:"IL",lat:38.14624,lon:-89.70243},KSFY:{id:"KSFY",city:"Tri-Township Airport",state:"IL",lat:42.04544,lon:-90.11009},KSLO:{id:"KSLO",city:"Salem, Salem-Leckrone Airport",state:"IL",lat:38.64278,lon:-88.96417},KSPI:{id:"KSPI",city:"Springfield - Abraham Lincoln Capital Airport",state:"IL",lat:39.84527,lon:-89.68405},KSQI:{id:"KSQI",city:"Sterling Rockfalls",state:"IL",lat:41.7432,lon:-89.66547},KTAZ:{id:"KTAZ",city:"Taylorville, Taylorville Municipal Airport",state:"IL",lat:39.53417,lon:-89.32778},KTIP:{id:"KTIP",city:"Rantoul National Aviation Center Airport",state:"IL",lat:40.28952,lon:-88.1473},KUGN:{id:"KUGN",city:"Chicago/Waukegan Regional Airport",state:"IL",lat:42.42546,lon:-87.86339},KUIN:{id:"KUIN",city:"Quincy Regional Airport-Baldwin Field",state:"IL",lat:39.9371,lon:-91.19659},KVYS:{id:"KVYS",city:"Illinois Valley Regional Airport",state:"IL",lat:41.35175,lon:-89.14963},KSZT:{id:"KSZT",city:"Sandpoint, Sandpoint Airport",state:"ID",lat:48.29944,lon:-116.56},KTBI:{id:"KTBI",city:"Kettle Butte",state:"ID",lat:43.5486099,lon:-112.32583},KTWF:{id:"KTWF",city:"Joslin Field - Magic Valley Regional Airport",state:"ID",lat:42.4784999,lon:-114.47739},PICI:{id:"PICI",city:"PICABO",state:"ID",lat:43.31167,lon:-114.16583},PMAI:{id:"PMAI",city:"PARMA",state:"ID",lat:43.8,lon:-116.93333},KAAO:{id:"KAAO",city:"Wichita Jabara Airport",state:"KS",lat:37.74969,lon:-97.21908},KADT:{id:"KADT",city:"Atwood-Rawlins County City-County Airport",state:"KS",lat:39.84034,lon:-101.04248},KBEC:{id:"KBEC",city:"Beech Factory Airport",state:"KS",lat:37.69392,lon:-97.21492},KCBK:{id:"KCBK",city:"Colby Shaltz Field Airport",state:"KS",lat:39.43,lon:-101.0511},KCFV:{id:"KCFV",city:"Coffeyville, Coffeyville Municipal Airport",state:"KS",lat:37.09111,lon:-95.56639},KCNK:{id:"KCNK",city:"Concordia, Blosser Municipal Airport",state:"KS",lat:39.55139,lon:-97.65056},KCNU:{id:"KCNU",city:"Chanute, Chanute Martin Johnson Airport",state:"KS",lat:37.67028,lon:-95.48417},KDDC:{id:"KDDC",city:"Dodge City, Dodge City Regional Airport",state:"KS",lat:37.77278,lon:-99.96972},KEHA:{id:"KEHA",city:"Elkhart, Elkhart-Morton County Airport",state:"KS",lat:37,lon:-101.88333},KEMP:{id:"KEMP",city:"Emporia, Emporia Municipal Airport",state:"KS",lat:38.32889,lon:-96.19389},KEQA:{id:"KEQA",city:"El Dorado Captain Jack Thomas Airport",state:"KS",lat:37.77534,lon:-96.81449},KEWK:{id:"KEWK",city:"Newton, Newton City/County Airport",state:"KS",lat:38.05,lon:-97.28333},KFOE:{id:"KFOE",city:"Topeka, Forbes Field",state:"KS",lat:38.94139,lon:-95.65056},KFRI:{id:"KFRI",city:"Fort Riley - Marshall AAF",state:"KS",lat:39.05586,lon:-96.76166},KGBD:{id:"KGBD",city:"Great Bend, Great Bend Municipal Airport",state:"KS",lat:38.35,lon:-98.86667},KGCK:{id:"KGCK",city:"Garden City Regional Airport",state:"KS",lat:37.9275,lon:-100.72444},KGLD:{id:"KGLD",city:"Goodland, Renner Field",state:"KS",lat:39.3675,lon:-101.69306},KHLC:{id:"KHLC",city:"Hill City, Hill City Municipal Airport",state:"KS",lat:39.37472,lon:-99.82972},KHQG:{id:"KHQG",city:"Hugoton Municipal Airport",state:"KS",lat:37.16308,lon:-101.37052},KHUT:{id:"KHUT",city:"Hutchinson, Hutchinson Municipal Airport",state:"KS",lat:38.06806,lon:-97.86056},KHYS:{id:"KHYS",city:"Hays, Hays Regional Airport",state:"KS",lat:38.85,lon:-99.26667},KIAB:{id:"KIAB",city:"McConnell Air Force Base",state:"KS",lat:37.61667,lon:-97.26667},KICT:{id:"KICT",city:"Wichita - Wichita Dwight D. Eisenhower National Airport",state:"KS",lat:37.64722,lon:-97.42944},KIDP:{id:"KIDP",city:"INDEPENDENCE",state:"KS",lat:37.1584,lon:-95.7784},KIXD:{id:"KIXD",city:"Olathe, New Century Aircenter",state:"KS",lat:38.82444,lon:-94.88694},KJHN:{id:"KJHN",city:"Stanton County Municipal Airport",state:"KS",lat:37.5782,lon:-101.7304},KLBL:{id:"KLBL",city:"Liberal, Liberal Municipal Airport",state:"KS",lat:37.05,lon:-100.9666699},KLWC:{id:"KLWC",city:"Lawrence, Lawrence Municipal Airport",state:"KS",lat:39.00833,lon:-95.21167},KLYO:{id:"KLYO",city:"Lyons-Rice County Municipal Airport",state:"KS",lat:38.34025,lon:-98.22856},KMHK:{id:"KMHK",city:"Manhattan, Manhattan Municipal Airport",state:"KS",lat:39.13528,lon:-96.67778},KMYZ:{id:"KMYZ",city:"Marysville Municipal Airport",state:"KS",lat:39.8553,lon:-96.6306},KNRN:{id:"KNRN",city:"Norton Municipal Airport",state:"KS",lat:39.85047,lon:-99.89469},KOEL:{id:"KOEL",city:"Oakley Municipal Airport",state:"KS",lat:39.11178,lon:-100.81667},KOIN:{id:"KOIN",city:"Oberlin Municipal Airport",state:"KS",lat:39.83489,lon:-100.5397799},KOJC:{id:"KOJC",city:"Olathe, Johnson County Executive Airport",state:"KS",lat:38.85,lon:-94.73917},KOWI:{id:"KOWI",city:"Ottawa Municipal Airport",state:"KS",lat:38.5409,lon:-95.2542},KPPF:{id:"KPPF",city:"Parsons, Tri-City Airport",state:"KS",lat:37.32778,lon:-95.50417},KPTS:{id:"KPTS",city:"Atkinson Municipal Airport",state:"KS",lat:37.4494,lon:-94.7311},KPTT:{id:"KPTT",city:"Pratt Municipal",state:"KS",lat:37.7,lon:-98.75},KRSL:{id:"KRSL",city:"Russell, Russell Municipal Airport",state:"KS",lat:38.87278,lon:-98.8130599},KSLN:{id:"KSLN",city:"Salina, Salina Municipal Airport",state:"KS",lat:38.78,lon:-97.64417},KSYF:{id:"KSYF",city:"ST FRANCIS",state:"KS",lat:39.763884,lon:-101.797861},KTOP:{id:"KTOP",city:"Topeka, Philip Billard Municipal Airport",state:"KS",lat:39.0725,lon:-95.6258299},KTQK:{id:"KTQK",city:"Scott City Municipal Airport",state:"KS",lat:38.47502,lon:-100.88444},KUKL:{id:"KUKL",city:"Coffey County Airport",state:"KS",lat:38.30247,lon:-95.72497},KULS:{id:"KULS",city:"Ulysses Airport",state:"KS",lat:37.604,lon:-101.37356},KWLD:{id:"KWLD",city:"Winfield / Arkansas City, Strother Field",state:"KS",lat:37.1680599,lon:-97.03694},KAUM:{id:"KAUM",city:"Austin Municipal",state:"MN",lat:43.66667,lon:-92.93333},KAXN:{id:"KAXN",city:"Alexandria, Chandler Field",state:"MN",lat:45.8686099,lon:-95.39417},KBBB:{id:"KBBB",city:"Benson Municipal Airport",state:"MN",lat:45.3309799,lon:-95.64692},KBDE:{id:"KBDE",city:"Baudette International Airport",state:"MN",lat:48.72605,lon:-94.61215},KBDH:{id:"KBDH",city:"Willmar Municipal Airport - John L. Rice Field",state:"MN",lat:45.11113,lon:-95.1258299},KBJI:{id:"KBJI",city:"Bemidji",state:"MN",lat:47.50762,lon:-94.92783},KBRD:{id:"KBRD",city:"Brainerd - Crow Wing County Airport",state:"MN",lat:46.40205,lon:-94.12734},KCDD:{id:"KCDD",city:"Crane Lake - Scotts Seaplane Base",state:"MN",lat:48.26014,lon:-92.47485},KCFE:{id:"KCFE",city:"Buffalo, Buffalo Municipal Airport",state:"MN",lat:45.15889,lon:-93.84306},KCKC:{id:"KCKC",city:"Grand Marais/Cook County Airport",state:"MN",lat:47.83665,lon:-90.3864399},KCKN:{id:"KCKN",city:"Crookston Municipal Field",state:"MN",lat:47.84042,lon:-96.6200999},KCNB:{id:"KCNB",city:"Canby Airfield",state:"MN",lat:44.7295,lon:-96.266},KCOQ:{id:"KCOQ",city:"Cloquet Carlton County Airport",state:"MN",lat:46.69869,lon:-92.5034},KCQM:{id:"KCQM",city:"Cook Municipal Airport",state:"MN",lat:47.81997,lon:-92.68169},KDLH:{id:"KDLH",city:"Duluth International Airport",state:"MN",lat:46.84347,lon:-92.1866},KDTL:{id:"KDTL",city:"Detroit Lakes Airport-Wething Field",state:"MN",lat:46.8285399,lon:-95.88567},KDVP:{id:"KDVP",city:"Slayton Municipal Airport",state:"MN",lat:43.99055,lon:-95.78102},KDXX:{id:"KDXX",city:"Madison, Madison-Lac Qui Parle County Airport",state:"MN",lat:44.9839399,lon:-96.1788399},KDYT:{id:"KDYT",city:"Duluth - Sky Harbor Airport",state:"MN",lat:46.72452,lon:-92.0444799},KELO:{id:"KELO",city:"Ely, Ely Municipal Airport",state:"MN",lat:47.81667,lon:-91.83333},KETH:{id:"KETH",city:"Wheaton Municipal Airport",state:"MN",lat:45.78284,lon:-96.54607},KEVM:{id:"KEVM",city:"Eveleth-Virginia Municipal Airport",state:"MN",lat:47.4274,lon:-92.49717},KFBL:{id:"KFBL",city:"Faribault, Faribault Municipal Airport",state:"MN",lat:44.32983,lon:-93.31186},KFCM:{id:"KFCM",city:"Minneapolis - Flying Cloud Airport",state:"MN",lat:44.83217,lon:-93.47051},KFFM:{id:"KFFM",city:"Fergus Falls Municipal Airport-Einar Mickel",state:"MN",lat:46.28655,lon:-96.15338},KFGN:{id:"KFGN",city:"Flag Island",state:"MN",lat:49.31667,lon:-94.9},KFKA:{id:"KFKA",city:"Preston, Fillmore County Airport",state:"MN",lat:43.67701,lon:-92.17422},KFOZ:{id:"KFOZ",city:"Bigfork Municipal Airport",state:"MN",lat:47.78317,lon:-93.65326},KFRM:{id:"KFRM",city:"Fairmont, Fairmont Municipal Airport",state:"MN",lat:43.65,lon:-94.41667},KFSE:{id:"KFSE",city:"Fosston, Fosston Municipal Airport",state:"MN",lat:47.59278,lon:-95.77333},KGDB:{id:"KGDB",city:"Granite Falls, Granite Falls Municipal Airport/Lenzen-Roe Memorial Field",state:"MN",lat:44.75306,lon:-95.55583},KGHW:{id:"KGHW",city:"Glenwood Municipal Airport",state:"MN",lat:45.64564,lon:-95.31876},KGNA:{id:"KGNA",city:"Grand Marais, The Bay of Grand Marais",state:"MN",lat:47.7472,lon:-90.3443999},KGPZ:{id:"KGPZ",city:"Grand Rapids, Grand Rapids/Itasca County Airport-Gordon Newstrom Field",state:"MN",lat:47.21667,lon:-93.51667},KGYL:{id:"KGYL",city:"Glencoe Municipal Airport",state:"MN",lat:44.7588,lon:-94.0905},KHCD:{id:"KHCD",city:"Hutchinson, Hutchinson Municipal Airport-Butler Field",state:"MN",lat:44.85961,lon:-94.38551},KHCO:{id:"KHCO",city:"Hallock Municipal Airport",state:"MN",lat:48.75245,lon:-96.93759},KHIB:{id:"KHIB",city:"Chisholm-Hibbing Airport",state:"MN",lat:47.38039,lon:-92.83245},KHZX:{id:"KHZX",city:"Mc Gregor - Isedor Iverson Airport",state:"MN",lat:46.61904,lon:-93.31267},KINL:{id:"KINL",city:"Falls International Airport",state:"MN",lat:48.55944,lon:-93.39556},KJKJ:{id:"KJKJ",city:"Moorhead Municipal Airport",state:"MN",lat:46.8404,lon:-96.65442},KJMR:{id:"KJMR",city:"Mora Municipal Airport",state:"MN",lat:45.88863,lon:-93.26901},KJYG:{id:"KJYG",city:"St. James Municipal Airport",state:"MN",lat:43.98558,lon:-94.55299},KLJF:{id:"KLJF",city:"Litchfield Municipal Airport",state:"MN",lat:45.09485,lon:-94.50837},KLVN:{id:"KLVN",city:"Minneapolis, Airlake Airport",state:"MN",lat:44.62778,lon:-93.22806},KLXL:{id:"KLXL",city:"Little Falls, Little Falls/Morrison County Airport-Lindbergh Field",state:"MN",lat:45.95,lon:-94.35},KLYV:{id:"KLYV",city:"Quentin Aanenson Field Airport",state:"MN",lat:43.62166,lon:-96.2139399},KMGG:{id:"KMGG",city:"Maple Lake, Maple Lake Municipal Airport",state:"MN",lat:45.2353499,lon:-93.98959},KMIC:{id:"KMIC",city:"Minneapolis, Crystal Airport",state:"MN",lat:45.0625,lon:-93.35083},KMJQ:{id:"KMJQ",city:"Jackson, Jackson Municipal Airport",state:"MN",lat:43.65,lon:-94.98333},KMKT:{id:"KMKT",city:"Mankato, Mankato Regional Airport",state:"MN",lat:44.21667,lon:-93.91667},KMML:{id:"KMML",city:"Marshall, Southwest Minnesota Regional Airport - Marshall/Ryan Field",state:"MN",lat:44.45,lon:-95.81667},KMOX:{id:"KMOX",city:"Morris, Morris Municipal Airport",state:"MN",lat:45.56667,lon:-95.9666699},KMSP:{id:"KMSP",city:"Minneapolis, Minneapolis-St. Paul International Airport",state:"MN",lat:44.88306,lon:-93.22889},KMVE:{id:"KMVE",city:"Montevideo-Chippewa County Airport",state:"MN",lat:44.96749,lon:-95.71159},KMWM:{id:"KMWM",city:"Windom Municipal Airport",state:"MN",lat:43.90999,lon:-95.10723},KMZH:{id:"KMZH",city:"Moose Lake Carlton County Airport",state:"MN",lat:46.41632,lon:-92.80491},KONA:{id:"KONA",city:"Winona, Winona Municipal Airport-Max Conrad Field",state:"MN",lat:44.0833299,lon:-91.7},KORB:{id:"KORB",city:"Orr Regional Airport",state:"MN",lat:48.0170699,lon:-92.85376},KOTG:{id:"KOTG",city:"Worthington, Worthington Municipal Airport",state:"MN",lat:43.65,lon:-95.58333},KOVL:{id:"KOVL",city:"Olivia Regional Airport",state:"MN",lat:44.77923,lon:-95.03033},KOWA:{id:"KOWA",city:"Owatonna Degner Regional Airport",state:"MN",lat:44.11907,lon:-93.25687},KPEX:{id:"KPEX",city:"Paynesville, Paynesville Municipal Airport",state:"MN",lat:45.37247,lon:-94.73878},KPKD:{id:"KPKD",city:"Park Rapids Municipal Airport",state:"MN",lat:46.8996799,lon:-95.06681},KPNM:{id:"KPNM",city:"Princeton",state:"MN",lat:45.56425,lon:-93.6080099},KPQN:{id:"KPQN",city:"Pipestone Municipal Airport",state:"MN",lat:43.98542,lon:-96.29764},KPWC:{id:"KPWC",city:"Pine River Regional Airport",state:"MN",lat:46.72654,lon:-94.38485},KROS:{id:"KROS",city:"Rush City Regional Airport",state:"MN",lat:45.69628,lon:-92.95424},KROX:{id:"KROX",city:"Roseau, Roseau Municipal Airport/Rudy Billberg Field",state:"MN",lat:48.85,lon:-95.7},KRRT:{id:"KRRT",city:"Warroad International Memorial Airport",state:"MN",lat:48.93183,lon:-95.3404599},KRST:{id:"KRST",city:"Rochester, Rochester International Airport",state:"MN",lat:43.90417,lon:-92.49167},KRWF:{id:"KRWF",city:"Redwood Falls Municipal Airport",state:"MN",lat:44.54828,lon:-95.08042},KRYM:{id:"KRYM",city:"Ray S Miller Army Airfield",state:"MN",lat:46.08997,lon:-94.35986},KSAZ:{id:"KSAZ",city:"Staples, Staples Municipal Airport",state:"MN",lat:46.38083,lon:-94.80667},KSGS:{id:"KSGS",city:"South St. Paul Municipal-Richard E. Flemi",state:"MN",lat:44.86006,lon:-93.03203},KSTC:{id:"KSTC",city:"St. Cloud Regional Airport",state:"MN",lat:45.54415,lon:-94.05165},KSTP:{id:"KSTP",city:"Downtown Holman Field",state:"MN",lat:44.93237,lon:-93.05588},KSYN:{id:"KSYN",city:"Stanton Airfield",state:"MN",lat:44.4736199,lon:-93.01448},KTKC:{id:"KTKC",city:"Tracy, Tracy Municipal Airport",state:"MN",lat:44.24951,lon:-95.61189},KTOB:{id:"KTOB",city:"Dodge Center Airport",state:"MN",lat:44.02026,lon:-92.8295},KTVF:{id:"KTVF",city:"Thief River Falls, Thief River Falls Regional Airport",state:"MN",lat:48.06667,lon:-96.18333},KTWM:{id:"KTWM",city:"Two Harbors",state:"MN",lat:47.05,lon:-91.75},KULM:{id:"KULM",city:"New Ulm Municipal Airport",state:"MN",lat:44.32274,lon:-94.50244},KVVV:{id:"KVVV",city:"Ortonville, Ortonville Muncipal-Martinson Field Airport",state:"MN",lat:45.30556,lon:-96.42444},KVWU:{id:"KVWU",city:"Waskish Municipal Airport",state:"MN",lat:48.15014,lon:-94.512},KXVG:{id:"KXVG",city:"Longville, Longville Municipal Airport",state:"MN",lat:46.99028,lon:-94.20389},KAKQ:{id:"KAKQ",city:"Wakefield Municipal Airport",state:"VA",lat:36.98274,lon:-77.00137},KAVC:{id:"KAVC",city:"South Hill, Mecklenburg-Brunswick Regional Airport",state:"VA",lat:36.68861,lon:-78.05417},KBCB:{id:"KBCB",city:"Virginia Tech Airport",state:"VA",lat:37.21667,lon:-80.41667},KBKT:{id:"KBKT",city:"Ft. Pickett / Blackstone",state:"VA",lat:37.0833299,lon:-77.95},KCHO:{id:"KCHO",city:"Charlottesville-Albemarle Airport",state:"VA",lat:38.13738,lon:-78.45516},KCJR:{id:"KCJR",city:"Culpeper Regional Airport",state:"VA",lat:38.52607,lon:-77.85738},KCPK:{id:"KCPK",city:"Chesapeake, Chesapeake Municipal Airport",state:"VA",lat:36.66556,lon:-76.32056},KCXE:{id:"KCXE",city:"Chase City Municipal Airport",state:"VA",lat:36.7883,lon:-78.5016},KDAA:{id:"KDAA",city:"Fort Belvoir",state:"VA",lat:38.71667,lon:-77.18333},KDAN:{id:"KDAN",city:"Danville, Danville Regional Airport",state:"VA",lat:36.57278,lon:-79.33611},KDCA:{id:"KDCA",city:"Washington/Reagan National Airport, DC",state:"VA",lat:38.84833,lon:-77.03417},KEMV:{id:"KEMV",city:"Emporia, Emporia-Greensville Regional Airport",state:"VA",lat:36.68694,lon:-77.48278},KEZF:{id:"KEZF",city:"Fredericksburg, Shannon Airport",state:"VA",lat:38.26667,lon:-77.45},KFAF:{id:"KFAF",city:"Fort Eustis / Felker",state:"VA",lat:37.13333,lon:-76.61667},KFCI:{id:"KFCI",city:"Chesterfield County Airport",state:"VA",lat:37.406444,lon:-77.524833},KFKN:{id:"KFKN",city:"Franklin / J B Rose",state:"VA",lat:36.7,lon:-76.9},KFRR:{id:"KFRR",city:"Front Royal-warren County Airport",state:"VA",lat:38.9174999,lon:-78.2535},KFVX:{id:"KFVX",city:"Farmville",state:"VA",lat:37.35,lon:-78.43333},KFYJ:{id:"KFYJ",city:"West Point, Middle Peninsula Regional Airport",state:"VA",lat:37.52111,lon:-76.7644399},KGVE:{id:"KGVE",city:"Gordonsville Municipal Airport",state:"VA",lat:38.156,lon:-78.1658},KHEF:{id:"KHEF",city:"Manassas, Manassas Regional Airport/Harry P. Davis Field",state:"VA",lat:38.71667,lon:-77.51667},KHLX:{id:"KHLX",city:"Hillsville",state:"VA",lat:36.76667,lon:-80.81667},KHSP:{id:"KHSP",city:"Hot Springs / Ingalls",state:"VA",lat:37.95,lon:-79.83333},KHWY:{id:"KHWY",city:"Warrenton-Fauquier Airport",state:"VA",lat:38.5876499,lon:-77.71501},KIAD:{id:"KIAD",city:"Washington/Dulles International Airport, DC",state:"VA",lat:38.93472,lon:-77.4475},KJFZ:{id:"KJFZ",city:"Tazewell County Airport",state:"VA",lat:37.064,lon:-81.798},KJGG:{id:"KJGG",city:"Williamsburg-Jamestown Airport",state:"VA",lat:37.24157,lon:-76.71672},KJYO:{id:"KJYO",city:"Leesburg / Godfrey",state:"VA",lat:39.0833299,lon:-77.56667},KLFI:{id:"KLFI",city:"Langley Air Force Base",state:"VA",lat:37.0833299,lon:-76.35},KLKU:{id:"KLKU",city:"Louisa, Louisa County Airport/Freeman Field",state:"VA",lat:38.00972,lon:-77.97028},KLNP:{id:"KLNP",city:"Wise / Lonesome Pine",state:"VA",lat:36.98333,lon:-82.53333},KLUA:{id:"KLUA",city:"Luray Caverns",state:"VA",lat:38.6671,lon:-78.5006},KLVL:{id:"KLVL",city:"Lawrenceville/Brunswick Municipal Airport",state:"VA",lat:36.7727999,lon:-77.7943},KLYH:{id:"KLYH",city:"Lynchburg, Lynchburg Regional Airport",state:"VA",lat:37.32083,lon:-79.20667},KMFV:{id:"KMFV",city:"Melfa / Accomack Airport",state:"VA",lat:37.65,lon:-75.76667},KMKJ:{id:"KMKJ",city:"Marion / Wytheville",state:"VA",lat:36.9,lon:-81.35},KMTV:{id:"KMTV",city:"Martinsville",state:"VA",lat:36.63333,lon:-80.01667},KNFE:{id:"KNFE",city:"Fentress, Naval Auxiliary Landing Field",state:"VA",lat:36.70083,lon:-76.12833},KNGU:{id:"KNGU",city:"Norfolk, Naval Air Station",state:"VA",lat:36.93361,lon:-76.29583},KNTU:{id:"KNTU",city:"Virginia Beach, Oceana, Naval Air Station",state:"VA",lat:36.82111,lon:-76.02833},KNYG:{id:"KNYG",city:"Quantico Marine Corps Airfield - Turner Field",state:"VA",lat:38.50326,lon:-77.30129},KOFP:{id:"KOFP",city:"Ashland, Hanover County Municipal Airport",state:"VA",lat:37.70806,lon:-77.43444},KOKV:{id:"KOKV",city:"Winchester Regional",state:"VA",lat:39.15,lon:-78.15},KOMH:{id:"KOMH",city:"Orange, Orange County Airport",state:"VA",lat:38.24722,lon:-78.04556},KORF:{id:"KORF",city:"Norfolk, Norfolk International Airport",state:"VA",lat:36.90361,lon:-76.19194},KPHF:{id:"KPHF",city:"Newport News, Newport News / Williamsburg International Airport",state:"VA",lat:37.13194,lon:-76.49306},KPSK:{id:"KPSK",city:"Dublin / New River Valley",state:"VA",lat:37.13333,lon:-80.68333},KPTB:{id:"KPTB",city:"Petersburg, Dinwiddie County Airport",state:"VA",lat:37.18333,lon:-77.51667},KPVG:{id:"KPVG",city:"Norfolk Hampton Roads Executive Airport",state:"VA",lat:36.7801,lon:-76.4488},KRIC:{id:"KRIC",city:"Richmond, Richmond International Airport",state:"VA",lat:37.51111,lon:-77.32333},KRMN:{id:"KRMN",city:"Stafford, Stafford Regional Airport",state:"VA",lat:38.39806,lon:-77.45528},KROA:{id:"KROA",city:"Roanoke, Roanoke Regional Airport",state:"VA",lat:37.31694,lon:-79.97417},KSFQ:{id:"KSFQ",city:"Suffolk, Suffolk Municipal Airport",state:"VA",lat:36.68222,lon:-76.60194},KSHD:{id:"KSHD",city:"Staunton / Shenandoah",state:"VA",lat:38.26667,lon:-78.9},KTGI:{id:"KTGI",city:"Tangier Island Airport",state:"VA",lat:37.82587,lon:-75.99766},KVBW:{id:"KVBW",city:"Bridgewater Air Park",state:"VA",lat:38.36674,lon:-78.96033},KVJI:{id:"KVJI",city:"Abingdon",state:"VA",lat:36.68333,lon:-82.03333},KWAL:{id:"KWAL",city:"Wallops Flight Facility Airport",state:"VA",lat:37.9372,lon:-75.46619},KXSA:{id:"KXSA",city:"Tappahannock-Essex County Airport",state:"VA",lat:37.859611,lon:-76.894111},KBCE:{id:"KBCE",city:"Bryce Canyon Airport",state:"UT",lat:37.7012799,lon:-112.14897},KBDG:{id:"KBDG",city:"Blanding Municipal Airport",state:"UT",lat:37.586,lon:-109.482},KBMC:{id:"KBMC",city:"Brigham City Regional Airport",state:"UT",lat:41.5464,lon:-112.0601},KCDC:{id:"KCDC",city:"Cedar City Municipal Airport",state:"UT",lat:37.70675,lon:-113.09695},KCNY:{id:"KCNY",city:"Moab, Canyonlands Field",state:"UT",lat:38.76,lon:-109.74472},KDPG:{id:"KDPG",city:"Michael Army Airfield - Dugway Proving Ground",state:"UT",lat:40.18376,lon:-112.9217},KDTA:{id:"KDTA",city:"Delta, Delta Municipal Airport",state:"UT",lat:39.38333,lon:-112.50967},KENV:{id:"KENV",city:"Wendover / Air Force Auxillary Field",state:"UT",lat:40.72056,lon:-114.03583},KHCR:{id:"KHCR",city:"Heber City Municipal-Russ McDonald Field Airport",state:"UT",lat:40.47742,lon:-111.43295},KHIF:{id:"KHIF",city:"Hill Air Force Base",state:"UT",lat:41.11112,lon:-111.96229},KHVE:{id:"KHVE",city:"Hanksville",state:"UT",lat:38.418037,lon:-110.704038},KKNB:{id:"KKNB",city:"KANAB MUNICIPAL AIRPORT",state:"UT",lat:37.01,lon:-112.53},KLGU:{id:"KLGU",city:"Logan-Cache Airport",state:"UT",lat:41.78652,lon:-111.85187},KMLF:{id:"KMLF",city:"Milford Municipal Airport",state:"UT",lat:38.42252,lon:-113.01089},KOGD:{id:"KOGD",city:"Ogden-Hinckley Airport",state:"UT",lat:41.19406,lon:-112.01681},KPUC:{id:"KPUC",city:"Price - Carbon County Regional Airport",state:"UT",lat:39.60886,lon:-110.75548},KPVU:{id:"KPVU",city:"Provo, Provo Municipal Airport",state:"UT",lat:40.21667,lon:-111.71667},KRIF:{id:"KRIF",city:"Richfield Municipal Airport",state:"UT",lat:38.73411,lon:-112.10158},KSGU:{id:"KSGU",city:"St George Municipal Airport",state:"UT",lat:37.0451,lon:-113.50561},KSLC:{id:"KSLC",city:"Salt Lake City, Salt Lake City International Airport",state:"UT",lat:40.77069,lon:-111.96503},KSPK:{id:"KSPK",city:"Spanish Fork Municipal Airport",state:"UT",lat:40.145,lon:-111.6677},KTVY:{id:"KTVY",city:"Bolinder Field-Tooele Valley Airport",state:"UT",lat:40.61269,lon:-112.35362},KVEL:{id:"KVEL",city:"Vernal Airport",state:"UT",lat:40.44295,lon:-109.51273},KJSY:{id:"KJSY",city:"Joseph State Airport AWOS",state:"OR",lat:45.355889,lon:-117.254083},KLGD:{id:"KLGD",city:"La Grande/Union County Airport",state:"OR",lat:45.29066,lon:-118.00884},KLKV:{id:"KLKV",city:"Lake County Airport",state:"OR",lat:42.15664,lon:-120.39721},KLMT:{id:"KLMT",city:"Klamath Falls International Airport",state:"OR",lat:42.14703,lon:-121.72548},KMEH:{id:"KMEH",city:"Meacham",state:"OR",lat:45.51176,lon:-118.42466},KMFR:{id:"KMFR",city:"Rogue Valley International Airport",state:"OR",lat:42.37503,lon:-122.87696},KMMV:{id:"KMMV",city:"McMinnville, McMinnville Municipal Airport",state:"OR",lat:45.19611,lon:-123.13222},KONO:{id:"KONO",city:"Ontario Municipal Airport",state:"OR",lat:44.01424,lon:-117.00808},KONP:{id:"KONP",city:"Newport, Newport Municipal Airport",state:"OR",lat:44.58028,lon:-124.05806},KOTH:{id:"KOTH",city:"Southwest Oregon Regional Airport",state:"OR",lat:43.41948,lon:-124.2437},KPDT:{id:"KPDT",city:"Eastern Oregon Regional Airport at Pendleton",state:"OR",lat:45.69757,lon:-118.83444},KPDX:{id:"KPDX",city:"Portland, Portland International Airport",state:"OR",lat:45.59578,lon:-122.60917},KRBG:{id:"KRBG",city:"Roseburg Regional Airport",state:"OR",lat:43.23368,lon:-123.3577},KRDM:{id:"KRDM",city:"Redmond Roberts Field",state:"OR",lat:44.25588,lon:-121.14059},KREO:{id:"KREO",city:"Rome",state:"OR",lat:42.5901799,lon:-117.86458},KSLE:{id:"KSLE",city:"Salem - McNary Field",state:"OR",lat:44.90493,lon:-123.00096},KSPB:{id:"KSPB",city:"Scappoose Industrial Airpark",state:"OR",lat:45.7691,lon:-122.86365},KSXT:{id:"KSXT",city:"Sexton Summit",state:"OR",lat:42.6,lon:-123.3656},KTMK:{id:"KTMK",city:"Tillamook, Tillamook Airport",state:"OR",lat:45.4180599,lon:-123.81444},KTTD:{id:"KTTD",city:"Portland, Portland-Troutdale Airport",state:"OR",lat:45.55111,lon:-122.40889},KUAO:{id:"KUAO",city:"Aurora State Airport",state:"OR",lat:45.24658,lon:-122.77095},PARO:{id:"PARO",city:"PARKDALE",state:"OR",lat:45.54444,lon:-121.61667},PCYO:{id:"PCYO",city:"PRARIE CITY",state:"OR",lat:44.44083,lon:-118.62778},PNGO:{id:"PNGO",city:"PINEGROVE",state:"OR",lat:45.65222,lon:-121.50917},POBO:{id:"POBO",city:"POWELL BUTTE",state:"OR",lat:44.24833,lon:-120.94972},KAAF:{id:"KAAF",city:"Apalachicola, Apalachicola",state:"FL",lat:29.72694,lon:-85.02472},KAPF:{id:"KAPF",city:"Naples, Naples Municipal Airport",state:"FL",lat:26.15,lon:-81.76667},KBCT:{id:"KBCT",city:"Boca Raton, Boca Raton Airport",state:"FL",lat:26.3786099,lon:-80.10778},KBKV:{id:"KBKV",city:"Brooksville-Tampa Bay Regional Airport",state:"FL",lat:28.47361,lon:-82.45444},KBOW:{id:"KBOW",city:"Bartow Municipal",state:"FL",lat:27.95,lon:-81.78333},KCEW:{id:"KCEW",city:"Crestview, Sikes Airport",state:"FL",lat:30.77222,lon:-86.52},KCGC:{id:"KCGC",city:"Crystal River Airport",state:"FL",lat:28.8673,lon:-82.5712999},KCLW:{id:"KCLW",city:"Clearwater Air Park",state:"FL",lat:27.9742,lon:-82.7563},KCOF:{id:"KCOF",city:"Cocoa - Patrick Air Force Base",state:"FL",lat:28.24219,lon:-80.60799},KCRG:{id:"KCRG",city:"Jacksonville Craig Municipal Airport",state:"FL",lat:30.33709,lon:-81.51275},KCTY:{id:"KCTY",city:"Cross City Airport",state:"FL",lat:29.633326,lon:-83.105458},KDAB:{id:"KDAB",city:"Daytona Beach International Airport",state:"FL",lat:29.17354,lon:-81.07186},KDED:{id:"KDED",city:"DeLand Municipal Airport",state:"FL",lat:29.067,lon:-81.2837},KDTS:{id:"KDTS",city:"Destin, Destin-Ft. Walton Beach Airport",state:"FL",lat:30.39333,lon:-86.4675},KECP:{id:"KECP",city:"Panama City - Northwest Florida Beaches International Airport",state:"FL",lat:30.3582,lon:-85.7955999},KEGI:{id:"KEGI",city:"Duke Field / Eglin Auxiliary",state:"FL",lat:30.65,lon:-86.51667},KEVB:{id:"KEVB",city:"New Smyrna Beach Municipal Airport",state:"FL",lat:29.05687,lon:-80.94909},KEYW:{id:"KEYW",city:"Key West International Airport",state:"FL",lat:24.55707,lon:-81.75539},KFHB:{id:"KFHB",city:"Fernandina Beach Municipal Airport",state:"FL",lat:30.61183,lon:-81.46119},KFIN:{id:"KFIN",city:"Flagler County Airport",state:"FL",lat:29.4657,lon:-81.20872},KFLL:{id:"KFLL",city:"Fort Lauderdale/Hollywood International Airport",state:"FL",lat:26.07874,lon:-80.1622},KFMY:{id:"KFMY",city:"Fort Myers, Page Field",state:"FL",lat:26.58417,lon:-81.8625},KFPR:{id:"KFPR",city:"Fort Pierce, St. Lucie County International Airport",state:"FL",lat:27.49806,lon:-80.37667},KFPY:{id:"KFPY",city:"Perry-Foley Airport",state:"FL",lat:30.07081,lon:-83.58154},KFXE:{id:"KFXE",city:"Fort Lauderdale, Fort Lauderdale Executive Airport",state:"FL",lat:26.2,lon:-80.18333},KGIF:{id:"KGIF",city:"Winter Havens Gilbert Airport",state:"FL",lat:28.06138,lon:-81.75684},KGNV:{id:"KGNV",city:"Gainesville, Gainesville Regional Airport",state:"FL",lat:29.69194,lon:-82.27556},KHRT:{id:"KHRT",city:"Hurlburt Field",state:"FL",lat:30.41667,lon:-86.68333},KHST:{id:"KHST",city:"Homestead Air Reserve Base",state:"FL",lat:25.4948799,lon:-80.37324},KHWO:{id:"KHWO",city:"Hollywood, North Perry Airport",state:"FL",lat:25.99889,lon:-80.24111},KIMM:{id:"KIMM",city:"IMMOKALEE",state:"FL",lat:26.43,lon:-81.4},KINF:{id:"KINF",city:"Inverness Airport",state:"FL",lat:28.8086,lon:-82.3165},KISM:{id:"KISM",city:"Kissimmee Gateway Airport",state:"FL",lat:28.29236,lon:-81.43716},KJAX:{id:"KJAX",city:"Jacksonville International Airport",state:"FL",lat:30.49534,lon:-81.6937},KLAL:{id:"KLAL",city:"Lakeland Regional",state:"FL",lat:27.98333,lon:-82.01667},KLCQ:{id:"KLCQ",city:"Lake City Municipal Airport",state:"FL",lat:30.1821,lon:-82.5769},KLEE:{id:"KLEE",city:"Leesburg International Airport",state:"FL",lat:28.82142,lon:-81.80964},KLNA:{id:"KLNA",city:"Palm Beach County Park Airport",state:"FL",lat:26.59305,lon:-80.08506},KMAI:{id:"KMAI",city:"Marianna Municipal Airport",state:"FL",lat:30.83698,lon:-85.18347},KMCF:{id:"KMCF",city:"Macdill Air Force Base, Fl.",state:"FL",lat:27.85,lon:-82.5},KMCO:{id:"KMCO",city:"Orlando International Airport",state:"FL",lat:28.41826,lon:-81.32413},KMIA:{id:"KMIA",city:"Miami, Miami International Airport",state:"FL",lat:25.79056,lon:-80.31639},KMKY:{id:"KMKY",city:"Marco Island Airport",state:"FL",lat:25.995,lon:-81.6725},KMLB:{id:"KMLB",city:"Melbourne International Airport",state:"FL",lat:28.09973,lon:-80.6356},KMTH:{id:"KMTH",city:"The Florida Keys - Marathon International Airport",state:"FL",lat:24.72626,lon:-81.04765},KNDZ:{id:"KNDZ",city:"Milton, Whiting Field South",state:"FL",lat:30.69722,lon:-87.02},KNIP:{id:"KNIP",city:"Jacksonville Naval Air Station",state:"FL",lat:30.23468,lon:-81.67462},KNPA:{id:"KNPA",city:"Pensacola Naval Air Station",state:"FL",lat:30.35641,lon:-87.32326},KNQX:{id:"KNQX",city:"Key West Naval Air Station",state:"FL",lat:24.5800899,lon:-81.68293},KNRB:{id:"KNRB",city:"Mayport Naval Station - Adm David L. McDonald Field",state:"FL",lat:30.39589,lon:-81.42286},KNSE:{id:"KNSE",city:"Milton - Whiting Field Naval Air Station North",state:"FL",lat:30.72848,lon:-87.02192},KOBE:{id:"KOBE",city:"Okeechobee County Airport",state:"FL",lat:27.2628,lon:-80.8498},KOCF:{id:"KOCF",city:"Ocala International Airport - Jim Taylor Field",state:"FL",lat:29.16372,lon:-82.22097},KOMN:{id:"KOMN",city:"Ormond Beach, Ormond Beach Municipal Airport",state:"FL",lat:29.30111,lon:-81.11361},KOPF:{id:"KOPF",city:"Miami, Opa Locka Airport",state:"FL",lat:25.91,lon:-80.28306},KORL:{id:"KORL",city:"Orlando Executive Airport",state:"FL",lat:28.54655,lon:-81.33543},KPAM:{id:"KPAM",city:"Tyndall Air Force Base",state:"FL",lat:30.06444,lon:-85.5637},KPBI:{id:"KPBI",city:"West Palm Beach - Palm Beach International Airport",state:"FL",lat:26.6850999,lon:-80.0991899},KPCM:{id:"KPCM",city:"Plant City, Plant City Municipal Airport",state:"FL",lat:28,lon:-82.15},KPGD:{id:"KPGD",city:"Punta Gorda, Charlotte County Airport",state:"FL",lat:26.91778,lon:-81.99361},KPIE:{id:"KPIE",city:"St. Petersburg/Clearwater Airport",state:"FL",lat:27.91259,lon:-82.68554},KPMP:{id:"KPMP",city:"Pompano Beach, Pompano Beach Airpark",state:"FL",lat:26.24556,lon:-80.11139},KPNS:{id:"KPNS",city:"Pensacola - Pensacola International Airport",state:"FL",lat:30.47806,lon:-87.18694},KRSW:{id:"KRSW",city:"Fort Myers, Southwest Florida International Airport",state:"FL",lat:26.52694,lon:-81.76639},KSEF:{id:"KSEF",city:"Sebring Regional Airport",state:"FL",lat:27.45639,lon:-81.34239},KSFB:{id:"KSFB",city:"Orlando / Sanford Airport",state:"FL",lat:28.78333,lon:-81.25},KSGJ:{id:"KSGJ",city:"Northeast Florida Regional Airport",state:"FL",lat:29.95924,lon:-81.34105},KSPG:{id:"KSPG",city:"Albert Whitted Airport",state:"FL",lat:27.76852,lon:-82.62564},KSRQ:{id:"KSRQ",city:"Sarasota / Bradenton, Sarasota-Bradenton International Airport",state:"FL",lat:27.40139,lon:-82.55861},KSUA:{id:"KSUA",city:"Witham Field Airport",state:"FL",lat:27.18157,lon:-80.22519},KTDR:{id:"KTDR",city:"Tyndall Drone Runway",state:"FL",lat:30.0333,lon:-85.5333},KTIX:{id:"KTIX",city:"Titusville",state:"FL",lat:28.51667,lon:-80.8},KTLH:{id:"KTLH",city:"Tallahassee International Airport",state:"FL",lat:30.39675,lon:-84.35087},KTMB:{id:"KTMB",city:"Miami, Kendall-Tamiami Executive Airport",state:"FL",lat:25.64194,lon:-80.43472},KTPA:{id:"KTPA",city:"Tampa, Tampa International Airport",state:"FL",lat:27.96139,lon:-82.54028},KTPF:{id:"KTPF",city:"Tampa, Peter O Knight Airport",state:"FL",lat:27.91556,lon:-82.44917},KTTS:{id:"KTTS",city:"Titusville, NASA Shuttle Landing Facility",state:"FL",lat:28.61667,lon:-80.7},KVDF:{id:"KVDF",city:"Tampa, Vandenberg Airport",state:"FL",lat:28.01983,lon:-82.3415},KVNC:{id:"KVNC",city:"Venice Municipal Airport",state:"FL",lat:27.0716,lon:-82.44033},KVPS:{id:"KVPS",city:"Valparaiso / Eglin Air Force Base",state:"FL",lat:30.48333,lon:-86.51667},KVQQ:{id:"KVQQ",city:"Cecil Airport",state:"FL",lat:30.21292,lon:-81.8707},KVRB:{id:"KVRB",city:"Vero Beach, Vero Beach Municipal Airport",state:"FL",lat:27.65556,lon:-80.41806},KXMR:{id:"KXMR",city:"Cocoa Beach, Cape Canaveral Air Force Station Skid Strip",state:"FL",lat:28.46667,lon:-80.56667},KZPH:{id:"KZPH",city:"Zephyrhills Airport",state:"FL",lat:28.2281,lon:-82.1559},KABH:{id:"KABH",city:"ELLICOTT-B AFA",state:"CO",lat:38.7578,lon:-104.3013},KAEJ:{id:"KAEJ",city:"Central Colorado Regional Airport",state:"CO",lat:38.81416,lon:-106.12069},KAFF:{id:"KAFF",city:"Air Force Academy",state:"CO",lat:38.96667,lon:-104.81667},KAJZ:{id:"KAJZ",city:"Delta/Blake Field Airport",state:"CO",lat:38.7868799,lon:-108.06584},KAKO:{id:"KAKO",city:"Colorado Plains Regional Airport",state:"CO",lat:40.17428,lon:-103.21459},KALS:{id:"KALS",city:"San Luis Valley Regional Airport",state:"CO",lat:37.43933,lon:-105.8618},KANK:{id:"KANK",city:"Harriet Alexander Field Airport",state:"CO",lat:38.53828,lon:-106.04864},KAPA:{id:"KAPA",city:"Denver - Centennial Airport",state:"CO",lat:39.55991,lon:-104.84841},KASE:{id:"KASE",city:"Aspen-Pitkin County Airport",state:"CO",lat:39.22992,lon:-106.87051},KBDU:{id:"KBDU",city:"Boulder Municipal Airport",state:"CO",lat:40.0394297,lon:-105.2258217},KBJC:{id:"KBJC",city:"Broomfield / Jeffco",state:"CO",lat:39.90085,lon:-105.10417},KBKF:{id:"KBKF",city:"Buckley Air Force Base Airport",state:"CO",lat:39.71331,lon:-104.75806},KCAG:{id:"KCAG",city:"Craig-Moffat Airport",state:"CO",lat:40.49297,lon:-107.52394},KCCU:{id:"KCCU",city:"Copper Mountain - Red Cliff Pass",state:"CO",lat:39.47523,lon:-106.15228},KCEZ:{id:"KCEZ",city:"Cortez-Montezuma County Airport",state:"CO",lat:37.30706,lon:-108.62644},KCFO:{id:"KCFO",city:"Colorado Air and Space Port Airport",state:"CO",lat:39.78419,lon:-104.53764},KCOS:{id:"KCOS",city:"City of Colorado Springs Municipal Airport",state:"CO",lat:38.8094899,lon:-104.68873},KCPW:{id:"KCPW",city:"Pagosa Springs, Wolf Creek Pass",state:"CO",lat:37.45139,lon:-106.80028},KCWN:{id:"KCWN",city:"Cheyenne Mountain",state:"CO",lat:38.7434299,lon:-104.84334},KDEN:{id:"KDEN",city:"Denver, Denver International Airport",state:"CO",lat:39.84658,lon:-104.65622},KDRO:{id:"KDRO",city:"Durango-La Plata County Airport",state:"CO",lat:37.14312,lon:-107.76023},KEEO:{id:"KEEO",city:"Meeker Airport",state:"CO",lat:40.0444,lon:-107.88832},KEGE:{id:"KEGE",city:"Eagle County Regional",state:"CO",lat:39.65,lon:-106.91667},KEIK:{id:"KEIK",city:"Erie Municipal Airport",state:"CO",lat:40.01169,lon:-105.05033},KFCS:{id:"KFCS",city:"Butts Army Airfield (Fort Carson)",state:"CO",lat:38.68312,lon:-104.75977},KFLY:{id:"KFLY",city:"Meadow Lake Airport",state:"CO",lat:38.94391,lon:-104.5684},KFMM:{id:"KFMM",city:"Fort Morgan Municipal Airport",state:"CO",lat:40.33148,lon:-103.80704},KFNL:{id:"KFNL",city:"Fort Collins/Loveland - Northern Colorado Regional Airport",state:"CO",lat:40.45,lon:-105.01667},KGJT:{id:"KGJT",city:"Grand Junction Regional Airport",state:"CO",lat:39.13389,lon:-108.53861},KGNB:{id:"KGNB",city:"Granby-Grand County Airport",state:"CO",lat:40.09006,lon:-105.91664},KGUC:{id:"KGUC",city:"Gunnison, Gunnison-Crested Butte Regional Airport",state:"CO",lat:38.53333,lon:-106.93333},KGXY:{id:"KGXY",city:"Greeley, Greeley-Weld County Airport",state:"CO",lat:40.43333,lon:-104.63333},KHDN:{id:"KHDN",city:"Hayden, Yampa Valley Airport",state:"CO",lat:40.48333,lon:-107.2166699},KHEQ:{id:"KHEQ",city:"Holyoke Airport",state:"CO",lat:40.57155,lon:-102.27676},KITR:{id:"KITR",city:"Burlington - Carson County Airport",state:"CO",lat:39.24149,lon:-102.2818999},KLAA:{id:"KLAA",city:"Lamar Municipal Airport",state:"CO",lat:38.0717799,lon:-102.68745},KLHX:{id:"KLHX",city:"La Junta Municipal Airport",state:"CO",lat:38.04949,lon:-103.51334},KLIC:{id:"KLIC",city:"Limon Municipal Airport",state:"CO",lat:39.27334,lon:-103.66738},KLMO:{id:"KLMO",city:"Vance Brand Airport",state:"CO",lat:40.16115,lon:-105.16042},KLXV:{id:"KLXV",city:"Leadville, Lake County Airport",state:"CO",lat:39.22806,lon:-106.31611},KMNH:{id:"KMNH",city:"Elbert Mountain - Monument Pass",state:"CO",lat:39.22317,lon:-104.6422599},KMTJ:{id:"KMTJ",city:"Montrose, Montrose Regional Airport",state:"CO",lat:38.505,lon:-107.8975},KMYP:{id:"KMYP",city:"Salida - Monarch Pass",state:"CO",lat:38.4972,lon:-106.3197},KPSO:{id:"KPSO",city:"Stevens Field, Pagosa Springs",state:"CO",lat:37.2862,lon:-107.056},KPUB:{id:"KPUB",city:"Pueblo Memorial Airport",state:"CO",lat:38.28869,lon:-104.5057},KRCV:{id:"KRCV",city:"Astronaut Kent Rominger - Del Norte",state:"CO",lat:37.7138,lon:-106.352},KRIL:{id:"KRIL",city:"Garfield County Regional Airport",state:"CO",lat:39.52793,lon:-107.71961},KSBS:{id:"KSBS",city:"Steamboat Springs",state:"CO",lat:40.5153,lon:-106.86767},KSPD:{id:"KSPD",city:"Springfield, Comanche National Grassland",state:"CO",lat:37.28333,lon:-102.61667},KSTK:{id:"KSTK",city:"Sterling Municipal Airport",state:"CO",lat:40.61331,lon:-103.26109},KTAD:{id:"KTAD",city:"Perry Stokes Airport",state:"CO",lat:37.26218,lon:-104.33184},KTEX:{id:"KTEX",city:"Telluride, Telluride Regional Airport",state:"CO",lat:37.95389,lon:-107.90861},KVTP:{id:"KVTP",city:"La Veta Mountain, La Veta Pass",state:"CO",lat:37.50111,lon:-105.16694},KALW:{id:"KALW",city:"Walla Walla Regional Airport",state:"WA",lat:46.09462,lon:-118.2858},KAWO:{id:"KAWO",city:"Arlington Municipal Airport",state:"WA",lat:48.1584999,lon:-122.15909},KBFI:{id:"KBFI",city:"Boeing Field - King County International Airport",state:"WA",lat:47.54548,lon:-122.3147},KBLI:{id:"KBLI",city:"Bellingham, Bellingham International Airport",state:"WA",lat:48.79911,lon:-122.54064},KBVS:{id:"KBVS",city:"Burlington/Mount Vernon, Skagit Regional Airport",state:"WA",lat:48.47083,lon:-122.42083},KCLM:{id:"KCLM",city:"Port Angeles Fairchild International Airport",state:"WA",lat:48.12194,lon:-123.50661},KCLS:{id:"KCLS",city:"Chehalis-Centralia Airport",state:"WA",lat:46.677,lon:-122.9827},KDEW:{id:"KDEW",city:"Deer Park, Deer Park Airport",state:"WA",lat:47.97417,lon:-117.42833},KDLS:{id:"KDLS",city:"The Dalles Municipal Airport",state:"WA",lat:45.61901,lon:-121.16572},KEAT:{id:"KEAT",city:"Wenatchee - Pangborn Memorial Airport",state:"WA",lat:47.39749,lon:-120.20121},KELN:{id:"KELN",city:"Ellensburg, Ellensburg Bowers Field",state:"WA",lat:47.0337699,lon:-120.53132},KEPH:{id:"KEPH",city:"Ephrata, Ephrata Municipal Airport",state:"WA",lat:47.3075,lon:-119.51583},KFHR:{id:"KFHR",city:"Friday Harbor Airport",state:"WA",lat:48.52,lon:-123.02637},KFLW:{id:"KFLW",city:"Kettle Falls",state:"WA",lat:48.595,lon:-118.12417},KGEG:{id:"KGEG",city:"Spokane, Spokane International Airport",state:"WA",lat:47.62139,lon:-117.52778},KGRF:{id:"KGRF",city:"Fort Lewis / Gray U. S. Army Airfield",state:"WA",lat:47.11667,lon:-122.55},KHQM:{id:"KHQM",city:"Hoquiam, Bowerman Airport",state:"WA",lat:46.97111,lon:-123.92},KKLS:{id:"KKLS",city:"Southwest Washington Regional Airport",state:"WA",lat:46.11553,lon:-122.89273},KMWH:{id:"KMWH",city:"Grant County Airport",state:"WA",lat:47.19299,lon:-119.31451},KNOW:{id:"KNOW",city:"Port Angeles Coast Guard Air Station",state:"WA",lat:48.13333,lon:-123.4},KNUW:{id:"KNUW",city:"Whidbey Island Naval Air Station - Ault Field",state:"WA",lat:48.35525,lon:-122.66352},KOLM:{id:"KOLM",city:"Olympia, Olympia Airport",state:"WA",lat:46.97333,lon:-122.90333},KOMK:{id:"KOMK",city:"Omak Airport",state:"WA",lat:48.46116,lon:-119.52086},KORS:{id:"KORS",city:"Eastsound, Orcas Island Airport",state:"WA",lat:48.70806,lon:-122.91028},KPAE:{id:"KPAE",city:"Everett Snohomish County",state:"WA",lat:47.92331,lon:-122.28305},KPLU:{id:"KPLU",city:"Pierce County-Thun Field",state:"WA",lat:47.104,lon:-122.287},KPSC:{id:"KPSC",city:"Tri-Cities Airport",state:"WA",lat:46.26955,lon:-119.11813},KPUW:{id:"KPUW",city:"Pullman / Moscow Regional Airport",state:"WA",lat:46.74377,lon:-117.11579},KPWT:{id:"KPWT",city:"Bremerton, Bremerton National Airport",state:"WA",lat:47.5,lon:-122.75},KRLD:{id:"KRLD",city:"Richland Airport",state:"WA",lat:46.30859,lon:-119.3058},KRNT:{id:"KRNT",city:"Renton Municipal Airport",state:"WA",lat:47.49509,lon:-122.21437},KSEA:{id:"KSEA",city:"Seattle, Seattle-Tacoma International Airport",state:"WA",lat:47.4447199,lon:-122.31361},KSFF:{id:"KSFF",city:"Spokane, Felts Field",state:"WA",lat:47.68556,lon:-117.32028},KSHN:{id:"KSHN",city:"Shelton, Shelton Sanderson Field",state:"WA",lat:47.23806,lon:-123.14083},KSKA:{id:"KSKA",city:"Fairchild Air Force Base",state:"WA",lat:47.61667,lon:-117.65},KSMP:{id:"KSMP",city:"Stampede Pass",state:"WA",lat:47.27648,lon:-121.33817},KTCM:{id:"KTCM",city:"Tacoma / McChord Air Force Base",state:"WA",lat:47.15,lon:-122.48333},KTIW:{id:"KTIW",city:"Tacoma, Tacoma Narrows Airport",state:"WA",lat:47.2675,lon:-122.57611},KUIL:{id:"KUIL",city:"Quillayute, Quillayute State Airport",state:"WA",lat:47.9375,lon:-124.555},KVUO:{id:"KVUO",city:"Pearson Airfield",state:"WA",lat:45.62103,lon:-122.65419},KYKM:{id:"KYKM",city:"Yakima Air Terminal - McAllister Field",state:"WA",lat:46.56402,lon:-120.53484},KALK:{id:"KALK",city:"Pioneer Airfield",state:"AZ",lat:31.60564,lon:-110.4281},KAVQ:{id:"KAVQ",city:"Tucson Marana Regional Airport",state:"AZ",lat:32.4096,lon:-111.2184},KAZC:{id:"KAZC",city:"Colorado City, Colorado City Municipal Airport",state:"AZ",lat:36.95,lon:-113},KBXK:{id:"KBXK",city:"Buckeye Municipal Airport",state:"AZ",lat:33.4204,lon:-112.6862},KCGZ:{id:"KCGZ",city:"Casa Grande, Casa Grande Municipal Airport",state:"AZ",lat:32.95,lon:-111.76667},KCHD:{id:"KCHD",city:"Chandler, Chandler Municipal Airport",state:"AZ",lat:33.26917,lon:-111.81111},KCMR:{id:"KCMR",city:"Williams/Clark Memorial Airport",state:"AZ",lat:35.3054721,lon:-112.1943889},KDMA:{id:"KDMA",city:"Davis-Monthan Air Force Base",state:"AZ",lat:32.16667,lon:-110.88333},KDVT:{id:"KDVT",city:"Phoenix, Phoenix-Deer Valley Municipal Airport",state:"AZ",lat:33.69026,lon:-112.06618},KFFZ:{id:"KFFZ",city:"Mesa / Falcon Field",state:"AZ",lat:33.46667,lon:-111.73333},KFHU:{id:"KFHU",city:"Fort Huachuca, Libby AAF Ft Huachuca",state:"AZ",lat:31.58333,lon:-110.33333},KFLG:{id:"KFLG",city:"Flagstaff Pulliam Airport",state:"AZ",lat:35.1443299,lon:-111.66637},KGCN:{id:"KGCN",city:"Grand Canyon National Park Airport",state:"AZ",lat:35.94582,lon:-112.15538},KGEU:{id:"KGEU",city:"Glendale, Glendale Municipal Airport",state:"AZ",lat:33.52722,lon:-112.29528},KGXF:{id:"KGXF",city:"Gila Bend Air Force Auxiliary Field",state:"AZ",lat:32.8875,lon:-112.72},KGYR:{id:"KGYR",city:"Goodyear Municipal",state:"AZ",lat:33.41667,lon:-112.38333},KHII:{id:"KHII",city:"Havasu City Airport",state:"AZ",lat:34.56595,lon:-114.35224},KIFP:{id:"KIFP",city:"Bullhead City, Laughlin/Bullhead International Airport",state:"AZ",lat:35.1575,lon:-114.55944},KIGM:{id:"KIGM",city:"Kingman, Kingman Airport",state:"AZ",lat:35.2577799,lon:-113.93306},KINW:{id:"KINW",city:"Winslow, Winslow Municipal Airport",state:"AZ",lat:35.02806,lon:-110.72083},KIWA:{id:"KIWA",city:"Phoenix-Mesa Gateway Airport",state:"AZ",lat:33.31667,lon:-111.65},KJTC:{id:"KJTC",city:"Springerville Municipal Airport",state:"AZ",lat:34.1293999,lon:-109.3109},KLGF:{id:"KLGF",city:"Laguna Army Airfield",state:"AZ",lat:32.86459,lon:-114.39298},KLUF:{id:"KLUF",city:"Luke Air Force Base / Phoenix",state:"AZ",lat:33.53333,lon:-112.38333},KMZJ:{id:"KMZJ",city:"Pinal Airpark",state:"AZ",lat:32.50983,lon:-111.32533},KNOZ:{id:"KNOZ",city:"Yuma Auxiliary Airfield",state:"AZ",lat:32.5,lon:-114.45},KNYL:{id:"KNYL",city:"Yuma, Marine Corps Air Station",state:"AZ",lat:32.6594399,lon:-114.59306},KOLS:{id:"KOLS",city:"Nogales, Nogales International Airport",state:"AZ",lat:31.42083,lon:-110.84583},KPAN:{id:"KPAN",city:"Payson Airport",state:"AZ",lat:34.2568364,lon:-111.3392558},KPGA:{id:"KPGA",city:"Page, Page Municipal Airport",state:"AZ",lat:36.92056,lon:-111.44806},KPHX:{id:"KPHX",city:"Phoenix, Phoenix Sky Harbor International Airport",state:"AZ",lat:33.427799,lon:-112.003465},KPRC:{id:"KPRC",city:"Prescott, Love Field",state:"AZ",lat:34.64917,lon:-112.42222},KRQE:{id:"KRQE",city:"Window Rock, Window Rock Airport",state:"AZ",lat:35.65,lon:-109.06667},KRYN:{id:"KRYN",city:"Tucson Ryan Field Airport",state:"AZ",lat:32.1422,lon:-111.1746},KSAD:{id:"KSAD",city:"Safford, Safford Municipal Airport",state:"AZ",lat:32.85722,lon:-109.63556},KSDL:{id:"KSDL",city:"Scottsdale Airport",state:"AZ",lat:33.61235,lon:-111.92316},KSEZ:{id:"KSEZ",city:"Sedona Airport",state:"AZ",lat:34.85,lon:-111.78333},KSJN:{id:"KSJN",city:"St. Johns, St. Johns Industrial Airpark",state:"AZ",lat:34.51833,lon:-109.37917},KSOW:{id:"KSOW",city:"Show Low, Show Low Regional Airport",state:"AZ",lat:34.26528,lon:-110.00556},KTUS:{id:"KTUS",city:"Tucson, Tucson International Airport",state:"AZ",lat:32.13153,lon:-110.95635},KTYL:{id:"KTYL",city:"Taylor Airport",state:"AZ",lat:34.45272,lon:-110.11503},KABI:{id:"KABI",city:"Abilene, Abilene Regional Airport",state:"TX",lat:32.41028,lon:-99.68167},KACT:{id:"KACT",city:"Waco, Waco Regional Airport",state:"TX",lat:31.61722,lon:-97.22778},KADS:{id:"KADS",city:"Dallas / Addison Airport",state:"TX",lat:32.96667,lon:-96.83333},KAFW:{id:"KAFW",city:"Fort Worth, Fort Worth Alliance Airport",state:"TX",lat:32.97333,lon:-97.31806},KALI:{id:"KALI",city:"Alice, Alice International Airport",state:"TX",lat:27.74111,lon:-98.02694},KAMA:{id:"KAMA",city:"Amarillo, Amarillo International Airport",state:"TX",lat:35.22,lon:-101.71722},KAPY:{id:"KAPY",city:"Zapata, TX",state:"TX",lat:26.969,lon:-99.249},KAQO:{id:"KAQO",city:"Llano, Llano Municipal Airport",state:"TX",lat:30.78361,lon:-98.66194},KARM:{id:"KARM",city:"Wharton, Wharton Regional Airport",state:"TX",lat:29.25417,lon:-96.1541699},KASL:{id:"KASL",city:"Marshall",state:"TX",lat:32.5205,lon:-94.3078},KATT:{id:"KATT",city:"Austin City, Austin Camp Mabry",state:"TX",lat:30.31667,lon:-97.76667},KAUS:{id:"KAUS",city:"Austin-Bergstrom International Airport",state:"TX",lat:30.18304,lon:-97.6798699},KAXH:{id:"KAXH",city:"Houston Southwest Airport",state:"TX",lat:29.50613,lon:-95.47692},KBAZ:{id:"KBAZ",city:"New Braunfels Regional Airport",state:"TX",lat:29.70861,lon:-98.04528},KBBD:{id:"KBBD",city:"Brady, Curtis Field Airport",state:"TX",lat:31.17917,lon:-99.32389},KBEA:{id:"KBEA",city:"Beeville Municipal Airport",state:"TX",lat:28.362,lon:-97.791},KBGD:{id:"KBGD",city:"Borger, Hutchinson County Airport",state:"TX",lat:35.695,lon:-101.395},KBIF:{id:"KBIF",city:"Biggs Army Air Field - Fort Bliss",state:"TX",lat:31.86119,lon:-106.3691599},KBKD:{id:"KBKD",city:"Stephens County Airport",state:"TX",lat:32.719,lon:-98.891},KBKS:{id:"KBKS",city:"Falfurrias, Brooks County Airport",state:"TX",lat:27.20667,lon:-98.12111},KBMQ:{id:"KBMQ",city:"Burnet, Burnet Municipal Craddock Field",state:"TX",lat:30.74056,lon:-98.23528},KBMT:{id:"KBMT",city:"Beaumont Municipal Airport",state:"TX",lat:30.0702,lon:-94.2151},KBPC:{id:"KBPC",city:"Mesa Vista Ranch AP",state:"TX",lat:35.889,lon:-101.03},KBPG:{id:"KBPG",city:"Big Spring, Big Spring McMahon-Wrinkle Airport",state:"TX",lat:32.2,lon:-101.51667},KBPT:{id:"KBPT",city:"Beaumont/Port Arthur Southeast Texas Regional Airport",state:"TX",lat:29.9521,lon:-94.0261},KBQX:{id:"KBQX",city:"BRAZOS 451 OIL PLATFORM",state:"TX",lat:28.5,lon:-95.72},KBRO:{id:"KBRO",city:"Brownsville, Brownsville / South Padre Island International Airport",state:"TX",lat:25.91417,lon:-97.42306},KBWD:{id:"KBWD",city:"Brownwood, Brownwood Regional Airport",state:"TX",lat:31.8,lon:-98.95},KBYY:{id:"KBYY",city:"Bay City, Bay City Municipal Airport",state:"TX",lat:28.97306,lon:-95.86333},KCDS:{id:"KCDS",city:"Childress, Childress Municipal Airport",state:"TX",lat:34.4275,lon:-100.28333},KCFD:{id:"KCFD",city:"Bryan Coulter Field",state:"TX",lat:30.7157,lon:-96.3314},KCLL:{id:"KCLL",city:"College Station, Easterwood Field",state:"TX",lat:30.58222,lon:-96.36167},KCNW:{id:"KCNW",city:"Waco-James Connally Airport",state:"TX",lat:31.6378,lon:-97.0741},KCOM:{id:"KCOM",city:"COLEMAN",state:"TX",lat:31.84,lon:-99.4},KCOT:{id:"KCOT",city:"Cotulla, Cotulla-La Salle County Airport",state:"TX",lat:28.45833,lon:-99.22028},KCPT:{id:"KCPT",city:"Cleburne, Cleburne Municipal Airport",state:"TX",lat:32.35361,lon:-97.43361},KCRP:{id:"KCRP",city:"Corpus Christi, Corpus Christi International Airport",state:"TX",lat:27.77306,lon:-97.51278},KCRS:{id:"KCRS",city:"Corsicana, Campbell Field-Corsicana Municipal Airport",state:"TX",lat:32.03111,lon:-96.39889},KCVB:{id:"KCVB",city:"Castroville Municipal Airport",state:"TX",lat:29.34192,lon:-98.8509},KCWC:{id:"KCWC",city:"Kickapoo Downtown Airport",state:"TX",lat:33.8606,lon:-98.4903999},KCXO:{id:"KCXO",city:"Conroe, Montgomery County Airport",state:"TX",lat:30.35667,lon:-95.41389},KCZT:{id:"KCZT",city:"Carrizo Springs Dimmit County Airport",state:"TX",lat:28.5222,lon:-99.8236},KDAL:{id:"KDAL",city:"Dallas Love Field",state:"TX",lat:32.85416,lon:-96.85506},KDFW:{id:"KDFW",city:"Dallas/Fort Worth International Airport",state:"TX",lat:32.89743,lon:-97.02196},KDHT:{id:"KDHT",city:"Dalhart, Dalhart Municipal Airport",state:"TX",lat:36.02333,lon:-102.54722},KDKR:{id:"KDKR",city:"Crockett, Houston County Airport",state:"TX",lat:31.30694,lon:-95.40361},KDLF:{id:"KDLF",city:"Laughlin Air Force Base Auxiliary Airfield",state:"TX",lat:29.36652,lon:-100.78469},KDRT:{id:"KDRT",city:"Del Rio, Del Rio International Airport",state:"TX",lat:29.37472,lon:-100.92361},KDTO:{id:"KDTO",city:"Denton Enterprise Airport",state:"TX",lat:33.20505,lon:-97.20061},KDUX:{id:"KDUX",city:"Dumas, Moore County Airport",state:"TX",lat:35.85778,lon:-102.01306},KDWH:{id:"KDWH",city:"Houston, Hooks Memorial Airport",state:"TX",lat:30.0675,lon:-95.55611},KDYS:{id:"KDYS",city:"Abilene, Dyess Air Force Base",state:"TX",lat:32.42,lon:-99.85694},KDZB:{id:"KDZB",city:"Horseshoe Bay Resort Airpark",state:"TX",lat:30.5271,lon:-98.3588},KEBG:{id:"KEBG",city:"Edinburg, Edinburg International Airport",state:"TX",lat:26.44194,lon:-98.12944},KECU:{id:"KECU",city:"Rocksprings, Edwards County Airport",state:"TX",lat:29.94667,lon:-100.17361},KEDC:{id:"KEDC",city:"Austin Executive Airport",state:"TX",lat:30.3925,lon:-97.5621},KEFD:{id:"KEFD",city:"Houston / Ellington",state:"TX",lat:29.6,lon:-95.16667},KELA:{id:"KELA",city:"Eagle Lake",state:"TX",lat:29.6006,lon:-96.3219},KELP:{id:"KELP",city:"El Paso, El Paso International Airport",state:"TX",lat:31.81111,lon:-106.3758299},KEMK:{id:"KEMK",city:"E BREAKS OIL PLATFORM",state:"TX",lat:27.82,lon:-94.3199999},KERV:{id:"KERV",city:"Kerrville, Kerrville Municipal Airport/Louis Schreiner Field",state:"TX",lat:29.96667,lon:-99.08333},KETN:{id:"KETN",city:"Eastland Municipal Airport",state:"TX",lat:32.41489,lon:-98.80969},KFST:{id:"KFST",city:"Fort Stockton, Fort Stockton-Pecos County Airport",state:"TX",lat:30.91194,lon:-102.91667},KFTW:{id:"KFTW",city:"Fort Worth, Meacham International Airport",state:"TX",lat:32.82528,lon:-97.36417},KFWS:{id:"KFWS",city:"Fort Worth Spinks Airport",state:"TX",lat:32.56537,lon:-97.30837},KGDJ:{id:"KGDJ",city:"Granbury, Granbury Municipal Airport",state:"TX",lat:32.44417,lon:-97.81667},KGDP:{id:"KGDP",city:"Pine Springs, Guadalupe Mountains National Park",state:"TX",lat:31.83111,lon:-104.80889},KGGG:{id:"KGGG",city:"Longview - East Texas Regional Airport",state:"TX",lat:32.39056,lon:-94.71389},KGKY:{id:"KGKY",city:"Arlington Municipal Airport",state:"TX",lat:32.65829,lon:-97.09509},KGLE:{id:"KGLE",city:"Gainesville, Gainesville Municipal Airport",state:"TX",lat:33.65139,lon:-97.19694},KGLS:{id:"KGLS",city:"Galveston, Scholes Field",state:"TX",lat:29.27028,lon:-94.86417},KGNC:{id:"KGNC",city:"Seminole, Gaines County Airport",state:"TX",lat:32.67528,lon:-102.6525},KGOP:{id:"KGOP",city:"Gatesville, City-County Airport",state:"TX",lat:31.42111,lon:-97.79694},KGPM:{id:"KGPM",city:"Grand Prairie, Grand Prairie Municipal Airport",state:"TX",lat:32.69861,lon:-97.04667},KGRK:{id:"KGRK",city:"Fort Hood, Robert Gray AAF Ft Hood",state:"TX",lat:31.06667,lon:-97.81667},KGTU:{id:"KGTU",city:"Georgetown, Georgetown Municipal Airport",state:"TX",lat:30.68333,lon:-97.68333},KGVT:{id:"KGVT",city:"Greenville / Majors",state:"TX",lat:33.06667,lon:-96.06667},KGYB:{id:"KGYB",city:"Giddings, Giddings-Lee County Airport",state:"TX",lat:30.16917,lon:-96.98},KGYI:{id:"KGYI",city:"Sherman/Denison, Grayson County Airport",state:"TX",lat:33.71667,lon:-96.66667},KGZN:{id:"KGZN",city:"Gregory M Simmons Memorial Airport",state:"TX",lat:32.3658,lon:-99.0237},KHBV:{id:"KHBV",city:"Hebbronville, Jim Hogg County Airport",state:"TX",lat:27.33333,lon:-98.73333},KHDO:{id:"KHDO",city:"Hondo, Hondo Municipal Airport",state:"TX",lat:29.35944,lon:-99.17417},KHHF:{id:"KHHF",city:"Canadian, Hemphill County Airport",state:"TX",lat:35.9,lon:-100.4},KHHV:{id:"KHHV",city:"Alaminos Canyon 25/H-D (ExxonMobil)",state:"TX",lat:26.939,lon:-94.6889999},KHLR:{id:"KHLR",city:"Fort Hood, Hood AAF Ft Hood",state:"TX",lat:31.13333,lon:-97.7},KHOU:{id:"KHOU",city:"Houston, Houston Hobby Airport",state:"TX",lat:29.6375,lon:-95.2825},KHQZ:{id:"KHQZ",city:"Mesquite, Mesquite Metro Airport",state:"TX",lat:32.74694,lon:-96.53028},KHRL:{id:"KHRL",city:"Harlingen, Rio Grande Valley International Airport",state:"TX",lat:26.22972,lon:-97.65528},KHRX:{id:"KHRX",city:"Hereford Municipal Airport",state:"TX",lat:34.8578,lon:-102.3264},KHYI:{id:"KHYI",city:"San Marcos, San Marcos Municipal Airport",state:"TX",lat:29.89361,lon:-97.86472},KIAH:{id:"KIAH",city:"Houston Intercontinental Airport",state:"TX",lat:29.9844,lon:-95.36074},KIKG:{id:"KIKG",city:"Kleberg County Airport",state:"TX",lat:27.5509,lon:-98.0309},KILE:{id:"KILE",city:"Killeen, Skylark Field Airport",state:"TX",lat:31.08333,lon:-97.68333},KINJ:{id:"KINJ",city:"Hillsboro, Hillsboro Municipal Airport",state:"TX",lat:32.0833299,lon:-97.0972199},KINK:{id:"KINK",city:"Wink, Winkler County Airport",state:"TX",lat:31.77972,lon:-103.20139},KJAS:{id:"KJAS",city:"Jasper, Jasper County-Bell Field Airport",state:"TX",lat:30.88556,lon:-94.0347199},KJCT:{id:"KJCT",city:"Junction, Kimble County Airport",state:"TX",lat:30.51083,lon:-99.76639},KJDD:{id:"KJDD",city:"Mineola/Quitman, Wood County Airport",state:"TX",lat:32.74194,lon:-95.49639},KJSO:{id:"KJSO",city:"Jacksonville, Cherokee County Airport",state:"TX",lat:31.86917,lon:-95.21722},KJWY:{id:"KJWY",city:"Midlothian/Waxahachie, Mid-Way Regional Airport",state:"TX",lat:32.45583,lon:-96.91222},KJXI:{id:"KJXI",city:"Gilmer, Fox Stephens Field - Gilmer Municipal Airport",state:"TX",lat:32.69889,lon:-94.94861},KLBB:{id:"KLBB",city:"Lubbock, Lubbock International Airport",state:"TX",lat:33.6674999,lon:-101.8213899},KLBX:{id:"KLBX",city:"Angleton / Lake Jackson, Brazoria County Airport",state:"TX",lat:29.11536,lon:-95.46323},KLFK:{id:"KLFK",city:"Lufkin, Angelina County Airport",state:"TX",lat:31.23389,lon:-94.75},KLHB:{id:"KLHB",city:"Hearne, Hearne Municipal Airport",state:"TX",lat:30.87167,lon:-96.62222},KLLN:{id:"KLLN",city:"Levelland Municipal Airport",state:"TX",lat:33.55253,lon:-102.37253},KLNC:{id:"KLNC",city:"Lancaster Airport",state:"TX",lat:32.58323,lon:-96.72091},KLRD:{id:"KLRD",city:"Laredo, Laredo International Airport",state:"TX",lat:27.54361,lon:-99.46139},KLUD:{id:"KLUD",city:"Decatur, Decatur Municipal Airport",state:"TX",lat:33.25444,lon:-97.58056},KLUV:{id:"KLUV",city:"Lamesa Municipal Airport",state:"TX",lat:32.75631,lon:-101.92022},KLVJ:{id:"KLVJ",city:"Houston, Pearland Regional Airport",state:"TX",lat:29.52111,lon:-95.24194},KLXY:{id:"KLXY",city:"Mexia Limestone County Airport",state:"TX",lat:31.6412,lon:-96.5145},KLZZ:{id:"KLZZ",city:"Lampasas, Lampasas Airport",state:"TX",lat:31.10611,lon:-98.19583},KMAF:{id:"KMAF",city:"Midland, Midland International Airport",state:"TX",lat:31.94778,lon:-102.2086099},KMCJ:{id:"KMCJ",city:"John Dunn Helistop",state:"TX",lat:29.714,lon:-95.395},KMDD:{id:"KMDD",city:"Midland, Midland Airpark",state:"TX",lat:32.03639,lon:-102.10083},KMFE:{id:"KMFE",city:"McAllen, Miller International Airport",state:"TX",lat:26.17972,lon:-98.24444},KMKN:{id:"KMKN",city:"Comanche, Comanche County-City Airport",state:"TX",lat:31.91667,lon:-98.60028},KMNZ:{id:"KMNZ",city:"Hamilton Municipal Airport",state:"TX",lat:31.6659,lon:-98.1486},KMRF:{id:"KMRF",city:"Marfa",state:"TX",lat:30.36667,lon:-104.01667},KMWL:{id:"KMWL",city:"Mineral Wells, Mineral Wells Airport",state:"TX",lat:32.78167,lon:-98.06028},KNFW:{id:"KNFW",city:"Fort Worth, Naval Air Station",state:"TX",lat:32.76583,lon:-97.43333},KNGP:{id:"KNGP",city:"Corpus Christi, Corpus Christi Naval Air Station/Truax Field",state:"TX",lat:27.6925,lon:-97.29111},KNOG:{id:"KNOG",city:"Orange Grove NALF",state:"TX",lat:27.8947,lon:-98.0425099},KNQI:{id:"KNQI",city:"Kingsville, Naval Air Station",state:"TX",lat:27.50306,lon:-97.81167},KOCH:{id:"KOCH",city:"Nacogdoches, A L Mangham Jr. Regional Airport",state:"TX",lat:31.58333,lon:-94.7166699},KODO:{id:"KODO",city:"Odessa, Odessa-Schlemeyer Field",state:"TX",lat:31.92139,lon:-102.39167},KORG:{id:"KORG",city:"Orange, Orange County Airport",state:"TX",lat:30.06917,lon:-93.80361},KOSA:{id:"KOSA",city:"Mount Pleasant, Mount Pleasant Regional Airport",state:"TX",lat:33.09528,lon:-94.96139},KOZA:{id:"KOZA",city:"Ozona Municipal Airport",state:"TX",lat:30.7353,lon:-101.203},KPEQ:{id:"KPEQ",city:"Pecos, Pecos Municipal Airport",state:"TX",lat:31.38222,lon:-103.51056},KPEZ:{id:"KPEZ",city:"Pleasanton Municipal Airport",state:"TX",lat:28.9562,lon:-98.5184},KPIL:{id:"KPIL",city:"Port Isabel, Port Isabel-Cameron County Airport",state:"TX",lat:26.15917,lon:-97.3375},KPKV:{id:"KPKV",city:"Port Lavaca - Calhoun County Airport",state:"TX",lat:28.65159,lon:-96.68196},KPPA:{id:"KPPA",city:"Pampa, Perry Lefors Field Airport",state:"TX",lat:35.61278,lon:-100.99611},KPRS:{id:"KPRS",city:"Presidio Lely International Airport",state:"TX",lat:29.6341,lon:-104.3616},KPRX:{id:"KPRX",city:"Paris / Cox Field",state:"TX",lat:33.63333,lon:-95.45},KPSN:{id:"KPSN",city:"Palestine, Palestine Municipal Airport",state:"TX",lat:31.77944,lon:-95.70611},KPSX:{id:"KPSX",city:"Palacios Municipal Airport",state:"TX",lat:28.72485,lon:-96.2534699},KPVW:{id:"KPVW",city:"Plainview, Hale County Airport",state:"TX",lat:34.1680599,lon:-101.71722},KPWG:{id:"KPWG",city:"Waco, Mc Gregor Executive Airport",state:"TX",lat:31.48333,lon:-97.31667},KPYX:{id:"KPYX",city:"Perryton, Perryton Ochiltree County Airport",state:"TX",lat:36.4,lon:-100.73333},KRAS:{id:"KRAS",city:"Port Aransas, Mustang Beach Airport",state:"TX",lat:27.81167,lon:-97.08861},KRBD:{id:"KRBD",city:"Dallas, Redbird Airport",state:"TX",lat:32.67583,lon:-96.86389},KRBO:{id:"KRBO",city:"Robstown, Nueces County Airport",state:"TX",lat:27.77833,lon:-97.69028},KRFI:{id:"KRFI",city:"Rusk County Airport",state:"TX",lat:32.1417,lon:-94.8516999},KRKP:{id:"KRKP",city:"Rockport Aransas County Airport",state:"TX",lat:28.08371,lon:-97.04664},KRND:{id:"KRND",city:"Randolph Air Force Base",state:"TX",lat:29.53333,lon:-98.28333},KRWV:{id:"KRWV",city:"Caldwell, Caldwell Municipal Airport",state:"TX",lat:30.51528,lon:-96.70389},KRYW:{id:"KRYW",city:"Lago Vista TX, Rusty Allen Airport",state:"TX",lat:30.4967,lon:-97.9659},KSAT:{id:"KSAT",city:"San Antonio, San Antonio International Airport",state:"TX",lat:29.53278,lon:-98.46361},KSEP:{id:"KSEP",city:"Stephenville, Clark Field Municipal Airport",state:"TX",lat:32.21667,lon:-98.18333},KSEQ:{id:"KSEQ",city:"Seguin - Randolph AFB Auxiliary Field",state:"TX",lat:29.56579,lon:-97.90834},KSGR:{id:"KSGR",city:"Houston, Sugar Land Municipal / Hull Field Airport",state:"TX",lat:29.62222,lon:-95.65667},KSJT:{id:"KSJT",city:"San Angelo, Mathis Field",state:"TX",lat:31.35139,lon:-100.4938899},KSKF:{id:"KSKF",city:"San Antonio - Kelly Field",state:"TX",lat:29.38333,lon:-98.58333},KSLR:{id:"KSLR",city:"Sulphur Springs, Sulphur Springs Municipal Airport",state:"TX",lat:33.16111,lon:-95.62111},KSNK:{id:"KSNK",city:"Snyder, Winston Field Airport",state:"TX",lat:32.69333,lon:-100.95028},KSOA:{id:"KSOA",city:"Sonora, Sonora Municipal Airport",state:"TX",lat:30.58556,lon:-100.64833},KSPS:{id:"KSPS",city:"Wichita Falls, Sheppard Air Force Base",state:"TX",lat:33.97861,lon:-98.49278},KSSF:{id:"KSSF",city:"San Antonio, Stinson Municipal Airport",state:"TX",lat:29.33889,lon:-98.47167},KSWW:{id:"KSWW",city:"Sweetwater, Avenger Field Airport",state:"TX",lat:32.46722,lon:-100.46639},KTFP:{id:"KTFP",city:"Mc Campbell",state:"TX",lat:27.913,lon:-97.2115},KTKI:{id:"KTKI",city:"McKinney - McKinney National Airport",state:"TX",lat:33.17778,lon:-96.59028},KTME:{id:"KTME",city:"Houston Executive Airport",state:"TX",lat:29.80717,lon:-95.89791},KTPL:{id:"KTPL",city:"Temple, Draughon-Miller Central Texas Regional Airport",state:"TX",lat:31.15,lon:-97.4},KTRL:{id:"KTRL",city:"Terrell, Terrell Municipal Airport",state:"TX",lat:32.71361,lon:-96.26833},KTXW:{id:"KTXW",city:"Mid Valley Airport",state:"TX",lat:26.17871,lon:-97.97401},KTYR:{id:"KTYR",city:"Tyler, Tyler Pounds Field",state:"TX",lat:32.35861,lon:-95.40389},KUTS:{id:"KUTS",city:"Huntsville, Huntsville Municipal Airport",state:"TX",lat:30.74389,lon:-95.58611},KUVA:{id:"KUVA",city:"Uvalde, Garner Field Airport",state:"TX",lat:29.21111,lon:-99.74333},KVAF:{id:"KVAF",city:"East Breaks 643/Boomvang Spar",state:"TX",lat:27.354,lon:-94.625},KVCT:{id:"KVCT",city:"Victoria, Victoria Regional Airport",state:"TX",lat:28.8625,lon:-96.92972},KVHN:{id:"KVHN",city:"Culberson County Airport",state:"TX",lat:31.05783,lon:-104.78381},KXBP:{id:"KXBP",city:"Bridgeport, Bridgeport Municipal Airport",state:"TX",lat:33.17528,lon:-97.8283299},KAAT:{id:"KAAT",city:"Alturas",state:"CA",lat:41.48362,lon:-120.5615},KACV:{id:"KACV",city:"Arcata / Eureka, Arcata Airport",state:"CA",lat:40.97806,lon:-124.10861},KAJO:{id:"KAJO",city:"Corona Airport",state:"CA",lat:33.8977,lon:-117.6024},KAPC:{id:"KAPC",city:"Napa, Napa County Airport",state:"CA",lat:38.2075,lon:-122.27944},KAPV:{id:"KAPV",city:"APPLEVALLEY",state:"CA",lat:34.57533,lon:-117.18619},KAUN:{id:"KAUN",city:"Auburn Municipal Airport",state:"CA",lat:38.95535,lon:-121.08636},KAVX:{id:"KAVX",city:"Avalon Catalina Airport",state:"CA",lat:33.40421,lon:-118.41456},KBAB:{id:"KBAB",city:"Marysville, Beale Air Force Base",state:"CA",lat:39.13333,lon:-121.43333},KBAN:{id:"KBAN",city:"MCMWTC BRIDGEPORT",state:"CA",lat:38.3557,lon:-119.5188},KBFL:{id:"KBFL",city:"Bakersfield, Meadows Field Airport",state:"CA",lat:35.43361,lon:-119.05667},KBIH:{id:"KBIH",city:"Bishop, Bishop Airport",state:"CA",lat:37.37111,lon:-118.35806},KBLH:{id:"KBLH",city:"Blythe, Blythe Airport",state:"CA",lat:33.6191699,lon:-114.71694},KBLU:{id:"KBLU",city:"Emigrant Gap, Blue Canyon Nyack Airport",state:"CA",lat:39.27611,lon:-120.70806},KBUR:{id:"KBUR",city:"Burbank - Bob Hope Airport",state:"CA",lat:34.19967,lon:-118.36538},KBYS:{id:"KBYS",city:"Fort Irwin/Barstow, Bicycle Lake Army Airfield",state:"CA",lat:35.28333,lon:-116.61667},KCCB:{id:"KCCB",city:"Cable Airport",state:"CA",lat:34.11161,lon:-117.68739},KCCR:{id:"KCCR",city:"Concord, Buchanan Field",state:"CA",lat:37.99167,lon:-122.05194},KCEC:{id:"KCEC",city:"Crescent City, Jack McNamara Field Airport",state:"CA",lat:41.78028,lon:-124.23667},KCIC:{id:"KCIC",city:"Chico Municipal Airport",state:"CA",lat:39.7987899,lon:-121.85795},KCMA:{id:"KCMA",city:"Camarillo, Camarillo Airport",state:"CA",lat:34.21667,lon:-119.08333},KCNO:{id:"KCNO",city:"Chino, Chino Airport",state:"CA",lat:33.97556,lon:-117.62361},KCPU:{id:"KCPU",city:"San Andreas Calaveras County Airport",state:"CA",lat:38.1460999,lon:-120.6482},KCQT:{id:"KCQT",city:"Los Angeles / USC Campus Downtown",state:"CA",lat:34.02355,lon:-118.29122},KCRQ:{id:"KCRQ",city:"Carlsbad, McClellan-Palomar Airport",state:"CA",lat:33.13,lon:-117.27583},KCVH:{id:"KCVH",city:"Hollister, CA",state:"CA",lat:36.8933,lon:-121.4103},KDAG:{id:"KDAG",city:"Daggett, Barstow-Daggett Airport",state:"CA",lat:34.85361,lon:-116.78667},KDLO:{id:"KDLO",city:"Delano Municipal Airport",state:"CA",lat:35.74556,lon:-119.2365},KDVO:{id:"KDVO",city:"Novato / Gnoss Field",state:"CA",lat:38.14178,lon:-122.55463},KDWA:{id:"KDWA",city:"Yolo County Airport",state:"CA",lat:38.5793899,lon:-121.85694},KEDW:{id:"KEDW",city:"Edwards Air Force Base",state:"CA",lat:34.918,lon:-117.879},KEED:{id:"KEED",city:"Needles, Needles Airport",state:"CA",lat:34.76611,lon:-114.62333},KEMT:{id:"KEMT",city:"El Monte",state:"CA",lat:34.0833299,lon:-118.03333},KFAT:{id:"KFAT",city:"Fresno, Fresno Air Terminal",state:"CA",lat:36.78,lon:-119.71944},KFOT:{id:"KFOT",city:"Fortuna Rohnerville Airport",state:"CA",lat:40.55296,lon:-124.13338},KFUL:{id:"KFUL",city:"Fullerton, Fullerton Municipal Airport",state:"CA",lat:33.87194,lon:-117.98472},KGOO:{id:"KGOO",city:"Nevada County Air Park",state:"CA",lat:39.2240279,lon:-121.003083},KGXA:{id:"KGXA",city:"Gray Butte Field Airport",state:"CA",lat:34.5666,lon:-117.6704},KHAF:{id:"KHAF",city:"Half Moon Bay Airport",state:"CA",lat:37.5135999,lon:-122.4996},KHHR:{id:"KHHR",city:"Hawthorne, Hawthorne Municipal Airport",state:"CA",lat:33.9236099,lon:-118.33194},KHJO:{id:"KHJO",city:"Hanford Municipal Airport",state:"CA",lat:36.31145,lon:-119.62315},KHMT:{id:"KHMT",city:"Hemet-Ryan Airport",state:"CA",lat:33.73403,lon:-117.02231},KHWD:{id:"KHWD",city:"Hayward, Hayward Air Terminal",state:"CA",lat:37.66083,lon:-122.11833},KIPL:{id:"KIPL",city:"Imperial, Imperial County Airport",state:"CA",lat:32.83417,lon:-115.57861},KIZA:{id:"KIZA",city:"Santa Ynez, Santa Ynez Airport",state:"CA",lat:34.60694,lon:-120.07556},KJAQ:{id:"KJAQ",city:"Westover Field - Amador County Airport",state:"CA",lat:38.3768,lon:-120.79391},KLAX:{id:"KLAX",city:"Los Angeles, Los Angeles International Airport",state:"CA",lat:33.93806,lon:-118.38889},KLGB:{id:"KLGB",city:"Long Beach, Long Beach Airport",state:"CA",lat:33.81167,lon:-118.14639},KLHM:{id:"KLHM",city:"Lincoln Regional Karl Harder Field",state:"CA",lat:38.9092,lon:-121.3513},KLPC:{id:"KLPC",city:"Lompoc, Lompoc Airport",state:"CA",lat:34.66667,lon:-120.46667},KLVK:{id:"KLVK",city:"Livermore, Livermore Municipal Airport",state:"CA",lat:37.69278,lon:-121.81444},KMAE:{id:"KMAE",city:"Madera Municipal Airport",state:"CA",lat:36.9851,lon:-120.11064},KMCC:{id:"KMCC",city:"Sacramento, McClellan Airfield Airport",state:"CA",lat:38.66667,lon:-121.4},KMCE:{id:"KMCE",city:"Merced Regional Airport",state:"CA",lat:37.28306,lon:-120.50778},KMER:{id:"KMER",city:"Merced / Castle Air Force Base",state:"CA",lat:37.36667,lon:-120.56667},KMHR:{id:"KMHR",city:"Sacramento Mather Airport",state:"CA",lat:38.5599599,lon:-121.28397},KMHS:{id:"KMHS",city:"Mount Shasta",state:"CA",lat:41.31494,lon:-122.31702},KMHV:{id:"KMHV",city:"Mojave",state:"CA",lat:35.06667,lon:-118.15},KMMH:{id:"KMMH",city:"Mammoth Yosemite Airport",state:"CA",lat:37.6241,lon:-118.8423},KMOD:{id:"KMOD",city:"Modesto City-County Airport - Harry Sham Field",state:"CA",lat:37.62549,lon:-120.9549},KMRY:{id:"KMRY",city:"Monterey Regional Airport",state:"CA",lat:36.59047,lon:-121.84875},KMYF:{id:"KMYF",city:"San Diego, Montgomery Field",state:"CA",lat:32.81444,lon:-117.13639},KMYV:{id:"KMYV",city:"Marysville, Yuba County Airport",state:"CA",lat:39.09778,lon:-121.56972},KNFG:{id:"KNFG",city:"Oceanside, Camp Pendleton, Marine Corps Air Station",state:"CA",lat:33.30472,lon:-117.35389},KNID:{id:"KNID",city:"China Lake, Naval Air Facility",state:"CA",lat:35.68639,lon:-117.69},KNJK:{id:"KNJK",city:"El Centro, Naval Air Facility",state:"CA",lat:32.825,lon:-115.66056},KNKX:{id:"KNKX",city:"San Diego, Miramar MCAS/Mitscher Field Airport",state:"CA",lat:32.86833,lon:-117.1425},KNLC:{id:"KNLC",city:"Lemoore Naval Air Station - Reeves Field",state:"CA",lat:36.30244,lon:-119.93968},KNRS:{id:"KNRS",city:"Imperial Beach Naval Outlying Field - Ream Field",state:"CA",lat:32.56302,lon:-117.11091},KNSI:{id:"KNSI",city:"San Nicolas Island Naval Outlying Field",state:"CA",lat:33.23379,lon:-119.45588},KNTD:{id:"KNTD",city:"Point Mugu, Naval Air Warfare Center",state:"CA",lat:34.12389,lon:-119.12167},KNUC:{id:"KNUC",city:"San Clemente Island NALF",state:"CA",lat:33.0218,lon:-118.58266},KNXP:{id:"KNXP",city:"Twentynine Palms SELF Airport",state:"CA",lat:34.29401,lon:-116.14717},KNZY:{id:"KNZY",city:"San Diego, North Island, Naval Air Station",state:"CA",lat:32.69083,lon:-117.20889},KOAK:{id:"KOAK",city:"Oakland, Metro Oakland International Airport",state:"CA",lat:37.7177999,lon:-122.23294},KOAR:{id:"KOAR",city:"FORT ORD/FRITZSCHE",state:"CA",lat:36.68,lon:-121.77},KOKB:{id:"KOKB",city:"Oceanside, Oceanside Municipal Airport",state:"CA",lat:33.21806,lon:-117.35139},KONT:{id:"KONT",city:"Ontario International Airport",state:"CA",lat:34.05316,lon:-117.57685},KOVE:{id:"KOVE",city:"Oroville Municipal Airport",state:"CA",lat:39.49436,lon:-121.62223},KOXR:{id:"KOXR",city:"Oxnard, Oxnard Airport",state:"CA",lat:34.20056,lon:-119.20306},KPAO:{id:"KPAO",city:"Palo Alto Airport",state:"CA",lat:37.46667,lon:-122.11667},KPMD:{id:"KPMD",city:"Palmdale, Palmdale Production Flight Plant",state:"CA",lat:34.62972,lon:-118.08139},KPOC:{id:"KPOC",city:"Brackett Field Airport",state:"CA",lat:34.09282,lon:-117.77937},KPRB:{id:"KPRB",city:"Paso Robles Municipal Airport",state:"CA",lat:35.66941,lon:-120.62912},KPSP:{id:"KPSP",city:"Palm Springs Regional Airport",state:"CA",lat:33.82219,lon:-116.50431},KPTV:{id:"KPTV",city:"Porterville, Porterville Municipal Airport",state:"CA",lat:36.03333,lon:-119.06667},KPVF:{id:"KPVF",city:"Placerville Airport",state:"CA",lat:38.7242,lon:-120.7533},KRAL:{id:"KRAL",city:"Riverside Municipal Airport",state:"CA",lat:33.95189,lon:-117.44511},KRBL:{id:"KRBL",city:"Red Bluff, Red Bluff Municipal Airport",state:"CA",lat:40.15056,lon:-122.25222},KRDD:{id:"KRDD",city:"Redding Municipal Airport",state:"CA",lat:40.51461,lon:-122.2977},KREI:{id:"KREI",city:"REDLANDS",state:"CA",lat:34.08526,lon:-117.14637},KRHV:{id:"KRHV",city:"San Jose / Reid / Hillv",state:"CA",lat:37.3333299,lon:-121.81667},KRIV:{id:"KRIV",city:"March Air Reserve Base",state:"CA",lat:33.88194,lon:-117.25902},KRNM:{id:"KRNM",city:"Ramona, Ramona Airport",state:"CA",lat:33.0375,lon:-116.91583},KSAC:{id:"KSAC",city:"Sacramento Executive Airport",state:"CA",lat:38.50674,lon:-121.49597},KSAN:{id:"KSAN",city:"San Diego International Airport",state:"CA",lat:32.73361,lon:-117.18306},KSBA:{id:"KSBA",city:"Santa Barbara, Santa Barbara Municipal Airport",state:"CA",lat:34.42611,lon:-119.84361},KSBD:{id:"KSBD",city:"San Bernardino Intl. Airport",state:"CA",lat:34.0902699,lon:-117.24705},KSBP:{id:"KSBP",city:"San Luis Obispo, San Luis Obispo County-Mc Chesney Field",state:"CA",lat:35.2361099,lon:-120.63611},KSCK:{id:"KSCK",city:"Stockton, Stockton Metropolitan Airport",state:"CA",lat:37.8897199,lon:-121.22361},KSDB:{id:"KSDB",city:"Sandberg",state:"CA",lat:34.7436099,lon:-118.72444},KSDM:{id:"KSDM",city:"San Diego, Brown Field Municipal Airport",state:"CA",lat:32.57528,lon:-116.99306},KSEE:{id:"KSEE",city:"Gillespie Field Airport",state:"CA",lat:32.82738,lon:-116.97369},KSFO:{id:"KSFO",city:"San Francisco, San Francisco International Airport",state:"CA",lat:37.61961,lon:-122.36558},KSIY:{id:"KSIY",city:"Montague Siskiyou County Airport",state:"CA",lat:41.77375,lon:-122.46817},KSJC:{id:"KSJC",city:"San Jose, San Jose International Airport",state:"CA",lat:37.35917,lon:-121.92417},KSLI:{id:"KSLI",city:"Los Alamitos Army Airfield",state:"CA",lat:33.79628,lon:-118.04179},KSMF:{id:"KSMF",city:"Sacramento International Airport",state:"CA",lat:38.70071,lon:-121.59479},KSMO:{id:"KSMO",city:"Santa Monica, Santa Monica Municipal Airport",state:"CA",lat:34.01583,lon:-118.45139},KSMX:{id:"KSMX",city:"Santa Maria Public Airport/Capt G Allan Hancock Field",state:"CA",lat:34.89408,lon:-120.45212},KSNA:{id:"KSNA",city:"John Wayne-Orange County Airport",state:"CA",lat:33.6798,lon:-117.8674},KSNS:{id:"KSNS",city:"Salinas, Salinas Municipal Airport",state:"CA",lat:36.66361,lon:-121.60806},KSQL:{id:"KSQL",city:"San Carlos Airport",state:"CA",lat:37.51667,lon:-122.25},KSTS:{id:"KSTS",city:"Santa Rosa, Santa Rosa Sonoma County Airport",state:"CA",lat:38.5,lon:-122.81667},KSUU:{id:"KSUU",city:"Fairfield / Travis Air Force Base",state:"CA",lat:38.26667,lon:-121.95},KSVE:{id:"KSVE",city:"Susanville Municipal Airport",state:"CA",lat:40.37569,lon:-120.57269},KTCY:{id:"KTCY",city:"Tracy Municipal Airport",state:"CA",lat:37.6888999,lon:-121.44158},KTNP:{id:"KTNP",city:"29PALMS",state:"CA",lat:34.13159,lon:-115.94582},KTOA:{id:"KTOA",city:"Torrance, Zamperini Field Airport",state:"CA",lat:33.8,lon:-118.33333},KTRK:{id:"KTRK",city:"Truckee-Tahoe",state:"CA",lat:39.31667,lon:-120.13333},KTRM:{id:"KTRM",city:"Palm Springs, Jacqueline Cochran Regional Airport",state:"CA",lat:33.62667,lon:-116.15944},KTSP:{id:"KTSP",city:"Tehachapi Municipal Airport",state:"CA",lat:35.135,lon:-118.4392},KTVL:{id:"KTVL",city:"South Lake Tahoe, Lake Tahoe Airport",state:"CA",lat:38.8983599,lon:-119.99615},KUKI:{id:"KUKI",city:"Ukiah Municipal Airport",state:"CA",lat:39.12783,lon:-123.20011},KVBG:{id:"KVBG",city:"Lompoc, Vandenberg Air Force Base",state:"CA",lat:34.7294399,lon:-120.57667},KVCB:{id:"KVCB",city:"Vacaville Nut Tree Airport",state:"CA",lat:38.37755,lon:-121.95853},KVCV:{id:"KVCV",city:"Victorville, Southern California Logistics Airport",state:"CA",lat:34.59722,lon:-117.38278},KVIS:{id:"KVIS",city:"Visalia, Visalia Municipal Airport",state:"CA",lat:36.31667,lon:-119.4},KVNY:{id:"KVNY",city:"Van Nuys, Van Nuys Airport",state:"CA",lat:34.2125,lon:-118.49083},KWHP:{id:"KWHP",city:"Los Angeles, Whiteman Airport",state:"CA",lat:34.25,lon:-118.4},KWJF:{id:"KWJF",city:"General Wm J Fox Airfield",state:"CA",lat:34.74123,lon:-118.21251},KWVI:{id:"KWVI",city:"Watsonville, Watsonville Municipal Airport",state:"CA",lat:36.93944,lon:-121.78889}},states=(()=>{const t={Arizona:"AZ",Alabama:"AL",Alaska:"AK",Arkansas:"AR",California:"CA",Colorado:"CO",Connecticut:"CT",Delaware:"DE",Florida:"FL",Georgia:"GA",Hawaii:"HI",Idaho:"ID",Illinois:"IL",Indiana:"IN",Iowa:"IA",Kansas:"KS",Kentucky:"KY",Louisiana:"LA",Maine:"ME",Maryland:"MD",Massachusetts:"MA",Michigan:"MI",Minnesota:"MN",Mississippi:"MS",Missouri:"MO",Montana:"MT",Nebraska:"NE",Nevada:"NV","New Hampshire":"NH","New Jersey":"NJ","New Mexico":"NM","New York":"NY","North Carolina":"NC","North Dakota":"ND",Ohio:"OH",Oklahoma:"OK",Oregon:"OR",Pennsylvania:"PA","Rhode Island":"RI","South Carolina":"SC","South Dakota":"SD",Tennessee:"TN",Texas:"TX",Utah:"UT",Vermont:"VT",Virginia:"VA",Washington:"WA","West Virginia":"WV",Wisconsin:"WI",Wyoming:"WY"};return{getTwoDigitCode:i=>t[i]}})(); \ No newline at end of file +const TravelCities=[{Name:"Atlanta",Latitude:33.749,Longitude:-84.388,point:{x:50,y:86,wfo:"FFC"}},{Name:"Boston",Latitude:42.3584,Longitude:-71.0598,point:{x:71,y:90,wfo:"BOX"}},{Name:"Chicago",Latitude:41.9796,Longitude:-87.9045,point:{x:65,y:76,wfo:"LOT"}},{Name:"Cleveland",Latitude:41.4995,Longitude:-81.6954,point:{x:82,y:64,wfo:"CLE"}},{Name:"Dallas",Latitude:32.8959,Longitude:-97.0372,point:{x:79,y:108,wfo:"FWD"}},{Name:"Denver",Latitude:39.7391,Longitude:-104.9847,point:{x:62,y:60,wfo:"BOU"}},{Name:"Detroit",Latitude:42.3314,Longitude:-83.0457,point:{x:65,y:33,wfo:"DTX"}},{Name:"Hartford",Latitude:41.7637,Longitude:-72.6851,point:{x:21,y:54,wfo:"BOX"}},{Name:"Houston",Latitude:29.7633,Longitude:-95.3633,point:{x:65,y:97,wfo:"HGX"}},{Name:"Indianapolis",Latitude:39.7684,Longitude:-86.158,point:{x:57,y:68,wfo:"IND"}},{Name:"Los Angeles",Latitude:34.0522,Longitude:-118.2437,point:{x:154,y:44,wfo:"LOX"}},{Name:"Miami",Latitude:25.7743,Longitude:-80.1937,point:{x:109,y:50,wfo:"MFL"}},{Name:"Minneapolis",Latitude:44.98,Longitude:-93.2638,point:{x:107,y:71,wfo:"MPX"}},{Name:"New York",Latitude:40.7142,Longitude:-74.0059,point:{x:32,y:34,wfo:"OKX"}},{Name:"Norfolk",Latitude:36.8468,Longitude:-76.2852,point:{x:89,y:51,wfo:"AKQ"}},{Name:"Orlando",Latitude:28.5383,Longitude:-81.3792,point:{x:26,y:68,wfo:"MLB"}},{Name:"Philadelphia",Latitude:39.9523,Longitude:-75.1638,point:{x:49,y:75,wfo:"PHI"}},{Name:"Pittsburgh",Latitude:40.4406,Longitude:-79.9959,point:{x:77,y:65,wfo:"PBZ"}},{Name:"St. Louis",Latitude:38.6273,Longitude:-90.1979,point:{x:94,y:73,wfo:"LSX"}},{Name:"San Francisco",Latitude:37.7749,Longitude:-122.4194,point:{x:85,y:105,wfo:"MTR"}},{Name:"Seattle",Latitude:47.6062,Longitude:-122.3321,point:{x:124,y:67,wfo:"SEW"}},{Name:"Syracuse",Latitude:43.0481,Longitude:-76.1474,point:{x:51,y:98,wfo:"BGM"}},{Name:"Tampa",Latitude:27.9475,Longitude:-82.4584,point:{x:70,y:96,wfo:"TBW"}},{Name:"Washington DC",Latitude:38.8951,Longitude:-77.0364,point:{x:97,y:71,wfo:"LWX"}}],RegionalCities=[{city:"Atlanta",lat:33.749,lon:-84.388,point:{x:50,y:86,wfo:"FFC"}},{city:"Boston",lat:42.3584,lon:-71.0598,point:{x:71,y:90,wfo:"BOX"}},{city:"Chicago",lat:41.9796,lon:-87.9045,point:{x:65,y:76,wfo:"LOT"}},{city:"Cleveland",lat:41.4995,lon:-81.6954,point:{x:82,y:64,wfo:"CLE"}},{city:"Dallas",lat:32.8959,lon:-97.0372,point:{x:79,y:108,wfo:"FWD"}},{city:"Denver",lat:39.7391,lon:-104.9847,point:{x:62,y:60,wfo:"BOU"}},{city:"Detroit",lat:42.3314,lon:-83.0457,point:{x:65,y:33,wfo:"DTX"}},{city:"Hartford",lat:41.7637,lon:-72.6851,point:{x:21,y:54,wfo:"BOX"}},{city:"Houston",lat:29.7633,lon:-95.3633,point:{x:65,y:97,wfo:"HGX"}},{city:"Indianapolis",lat:39.7684,lon:-86.158,point:{x:57,y:68,wfo:"IND"}},{city:"Los Angeles",lat:34.0522,lon:-118.2437,point:{x:154,y:44,wfo:"LOX"}},{city:"Miami",lat:25.7743,lon:-80.1937,point:{x:109,y:50,wfo:"MFL"}},{city:"Minneapolis",lat:44.98,lon:-93.2638,point:{x:107,y:71,wfo:"MPX"}},{city:"New York",lat:40.78,lon:-73.88,point:{x:36,y:38,wfo:"OKX"}},{city:"Norfolk",lat:36.8468,lon:-76.2852,point:{x:89,y:51,wfo:"AKQ"}},{city:"Orlando",lat:28.5383,lon:-81.3792,point:{x:26,y:68,wfo:"MLB"}},{city:"Philadelphia",lat:39.9523,lon:-75.1638,point:{x:49,y:75,wfo:"PHI"}},{city:"Pittsburgh",lat:40.4406,lon:-79.9959,point:{x:77,y:65,wfo:"PBZ"}},{city:"St. Louis",lat:38.6273,lon:-90.1979,point:{x:94,y:73,wfo:"LSX"}},{city:"San Francisco",lat:37.6148,lon:-122.3918,point:{x:84,y:98,wfo:"MTR"}},{city:"Seattle",lat:47.6062,lon:-122.3321,point:{x:124,y:67,wfo:"SEW"}},{city:"Syracuse",lat:43.0481,lon:-76.1474,point:{x:51,y:98,wfo:"BGM"}},{city:"Tampa",lat:27.9756,lon:-82.5329,point:{x:67,y:97,wfo:"TBW"}},{city:"Washington DC",lat:38.8951,lon:-77.0364,point:{x:97,y:71,wfo:"LWX"}},{city:"Albany",lat:42.6526,lon:-73.7562,point:{x:58,y:58,wfo:"ALY"}},{city:"Albuquerque",lat:35.0845,lon:-106.6511,point:{x:97,y:118,wfo:"ABQ"}},{city:"Amarillo",lat:35.222,lon:-101.8313,point:{x:47,y:25,wfo:"AMA"}},{city:"Anchorage",lat:61.2181,lon:-149.9003,point:{x:125,y:236,wfo:"AER"}},{city:"Austin",lat:30.2671,lon:-97.7431,point:{x:155,y:90,wfo:"EWX"}},{city:"Baker",lat:44.7502,lon:-117.6677,point:{x:93,y:145,wfo:"BOI"}},{city:"Baltimore",lat:39.2904,lon:-76.6122,point:{x:109,y:91,wfo:"LWX"}},{city:"Bangor",lat:44.8012,lon:-68.7778,point:{x:72,y:62,wfo:"CAR"}},{city:"Birmingham",lat:33.5207,lon:-86.8025,point:{x:58,y:83,wfo:"BMX"}},{city:"Bismarck",lat:46.8083,lon:-100.7837,point:{x:109,y:46,wfo:"BIS"}},{city:"Boise",lat:43.6135,lon:-116.2034,point:{x:132,y:85,wfo:"BOI"}},{city:"Buffalo",lat:42.8864,lon:-78.8784,point:{x:35,y:46,wfo:"BUF"}},{city:"Carlsbad",lat:32.4207,lon:-104.2288,point:{x:44,y:156,wfo:"MAF"}},{city:"Charleston",lat:32.7766,lon:-79.9309,point:{x:86,y:76,wfo:"CHS"}},{city:"Charleston",lat:38.3498,lon:-81.6326,point:{x:62,y:66,wfo:"RLX"}},{city:"Charlotte",lat:35.2271,lon:-80.8431,point:{x:118,y:64,wfo:"GSP"}},{city:"Cheyenne",lat:41.14,lon:-104.8202,point:{x:109,y:13,wfo:"CYS"}},{city:"Cincinnati",lat:39.162,lon:-84.4569,point:{x:36,y:40,wfo:"ILN"}},{city:"Columbia",lat:34.0007,lon:-81.0348,point:{x:65,y:61,wfo:"CAE"}},{city:"Columbus",lat:39.9612,lon:-82.9988,point:{x:84,y:80,wfo:"ILN"}},{city:"Des Moines",lat:41.6005,lon:-93.6091,point:{x:73,y:49,wfo:"DMX"}},{city:"Dubuque",lat:42.5006,lon:-90.6646,point:{x:62,y:110,wfo:"DVN"}},{city:"Duluth",lat:46.7833,lon:-92.1066,point:{x:91,y:69,wfo:"DLH"}},{city:"Eastport",lat:44.9062,lon:-66.99,point:{x:129,y:79,wfo:"CAR"}},{city:"El Centro",lat:32.792,lon:-115.563,point:{x:26,y:46,wfo:"PSR"}},{city:"El Paso",lat:31.7587,lon:-106.4869,point:{x:99,y:55,wfo:"EPZ"}},{city:"Eugene",lat:44.0521,lon:-123.0867,point:{x:84,y:38,wfo:"PQR"}},{city:"Fargo",lat:46.8772,lon:-96.7898,point:{x:99,y:56,wfo:"FGF"}},{city:"Flagstaff",lat:35.1981,lon:-111.6513,point:{x:73,y:88,wfo:"FGZ"}},{city:"Fresno",lat:36.7477,lon:-119.7724,point:{x:53,y:100,wfo:"HNX"}},{city:"Grand Junction",lat:39.0639,lon:-108.5506,point:{x:94,y:101,wfo:"GJT"}},{city:"Grand Rapids",lat:42.9634,lon:-85.6681,point:{x:40,y:46,wfo:"GRR"}},{city:"Havre",lat:48.55,lon:-109.6841,point:{x:154,y:187,wfo:"TFX"}},{city:"Helena",lat:46.5927,lon:-112.0361,point:{x:68,y:103,wfo:"TFX"}},{city:"Honolulu",lat:21.3069,lon:-157.8583,point:{x:153,y:144,wfo:"HFO"}},{city:"Hot Springs",lat:34.5037,lon:-93.0552,point:{x:53,y:60,wfo:"LZK"}},{city:"Idaho Falls",lat:43.4666,lon:-112.0341,point:{x:115,y:72,wfo:"PIH"}},{city:"Jackson",lat:32.2988,lon:-90.1848,point:{x:75,y:62,wfo:"JAN"}},{city:"Jacksonville",lat:30.3322,lon:-81.6556,point:{x:65,y:64,wfo:"JAX"}},{city:"Juneau",lat:58.3019,lon:-134.4197,point:{x:194,y:163,wfo:"AJK"}},{city:"Kansas City",lat:39.1142,lon:-94.6275,point:{x:41,y:50,wfo:"EAX"}},{city:"Key West",lat:24.5557,lon:-81.7826,point:{x:61,y:47,wfo:"KEY"}},{city:"Klamath Falls",lat:42.2249,lon:-121.7817,point:{x:141,y:61,wfo:"MFR"}},{city:"Knoxville",lat:35.9606,lon:-83.9207,point:{x:71,y:51,wfo:"MRX"}},{city:"Las Vegas",lat:36.175,lon:-115.1372,point:{x:122,y:97,wfo:"VEF"}},{city:"Lewiston",lat:46.4165,lon:-117.0177,point:{x:144,y:30,wfo:"OTX"}},{city:"Lincoln",lat:40.8,lon:-96.667,point:{x:56,y:38,wfo:"OAX"}},{city:"Long Beach",lat:33.767,lon:-118.1892,point:{x:154,y:31,wfo:"LOX"}},{city:"Louisville",lat:38.2542,lon:-85.7594,point:{x:49,y:77,wfo:"LMK"}},{city:"Manchester",lat:42.9956,lon:-71.4548,point:{x:41,y:20,wfo:"GYX"}},{city:"Memphis",lat:35.1495,lon:-90.049,point:{x:41,y:66,wfo:"MEG"}},{city:"Milwaukee",lat:43.0389,lon:-87.9065,point:{x:87,y:64,wfo:"MKX"}},{city:"Mobile",lat:30.6944,lon:-88.043,point:{x:51,y:66,wfo:"MOB"}},{city:"Montgomery",lat:32.3668,lon:-86.3,point:{x:80,y:34,wfo:"BMX"}},{city:"Montpelier",lat:44.2601,lon:-72.5754,point:{x:110,y:49,wfo:"BTV"}},{city:"Nashville",lat:36.1659,lon:-86.7844,point:{x:49,y:56,wfo:"OHX"}},{city:"Newark",lat:40.7357,lon:-74.1724,point:{x:26,y:34,wfo:"OKX"}},{city:"New Haven",lat:41.3081,lon:-72.9282,point:{x:65,y:67,wfo:"OKX"}},{city:"New Orleans",lat:29.9546,lon:-90.0751,point:{x:68,y:88,wfo:"LIX"}},{city:"Nome",lat:64.5011,lon:-165.4064,point:{x:217,y:139,wfo:"AFG"}},{city:"Oklahoma City",lat:35.4676,lon:-97.5164,point:{x:97,y:93,wfo:"OUN"}},{city:"Omaha",lat:41.2586,lon:-95.9378,point:{x:82,y:59,wfo:"OAX"}},{city:"Phoenix",lat:33.4484,lon:-112.074,point:{x:158,y:57,wfo:"PSR"}},{city:"Pierre",lat:44.3683,lon:-100.351,point:{x:54,y:43,wfo:"ABR"}},{city:"Portland",lat:43.6615,lon:-70.2553,point:{x:75,y:58,wfo:"GYX"}},{city:"Portland",lat:45.5234,lon:-122.6762,point:{x:112,y:103,wfo:"PQR"}},{city:"Providence",lat:41.824,lon:-71.4128,point:{x:64,y:64,wfo:"BOX"}},{city:"Raleigh",lat:35.7721,lon:-78.6386,point:{x:74,y:56,wfo:"RAH"}},{city:"Reno",lat:39.4986,lon:-119.7681,point:{x:45,y:104,wfo:"REV"}},{city:"Richfield",lat:38.7725,lon:-112.0841,point:{x:81,y:86,wfo:"SLC"}},{city:"Richmond",lat:37.5538,lon:-77.4603,point:{x:44,y:76,wfo:"AKQ"}},{city:"Roanoke",lat:37.271,lon:-79.9414,point:{x:73,y:68,wfo:"RNK"}},{city:"Sacramento",lat:38.5816,lon:-121.4944,point:{x:40,y:67,wfo:"STO"}},{city:"Salt Lake City",lat:40.7608,lon:-111.891,point:{x:99,y:174,wfo:"SLC"}},{city:"San Antonio",lat:29.4241,lon:-98.4936,point:{x:125,y:53,wfo:"EWX"}},{city:"San Diego",lat:32.7153,lon:-117.1573,point:{x:56,y:13,wfo:"SGX"}},{city:"San Jose",lat:37.3394,lon:-121.895,point:{x:99,y:82,wfo:"MTR"}},{city:"Santa Fe",lat:35.687,lon:-105.9378,point:{x:125,y:143,wfo:"ABQ"}},{city:"Savannah",lat:32.0835,lon:-81.0998,point:{x:46,y:40,wfo:"CHS"}},{city:"Shreveport",lat:32.5251,lon:-93.7502,point:{x:76,y:69,wfo:"SHV"}},{city:"Sioux Falls",lat:43.55,lon:-96.7003,point:{x:99,y:65,wfo:"FSD"}},{city:"Sitka",lat:57.0531,lon:-135.33,point:{x:188,y:112,wfo:"AJK"}},{city:"Spokane",lat:47.6597,lon:-117.4291,point:{x:140,y:90,wfo:"OTX"}},{city:"Springfield",lat:39.8017,lon:-89.6437,point:{x:47,y:55,wfo:"ILX"}},{city:"Springfield",lat:42.1015,lon:-72.5898,point:{x:22,y:69,wfo:"BOX"}},{city:"Springfield",lat:37.2153,lon:-93.2982,point:{x:66,y:34,wfo:"SGF"}},{city:"Toledo",lat:41.6639,lon:-83.5552,point:{x:18,y:66,wfo:"CLE"}},{city:"Tulsa",lat:36.154,lon:-95.9928,point:{x:40,y:104,wfo:"TSA"}},{city:"Virginia Beach",lat:36.8529,lon:-75.978,point:{x:100,y:52,wfo:"AKQ"}},{city:"Wichita",lat:37.6922,lon:-97.3375,point:{x:61,y:33,wfo:"ICT"}},{city:"Wilmington",lat:34.2257,lon:-77.9447,point:{x:88,y:67,wfo:"ILM"}},{city:"Tuscan",lat:32.2216,lon:-110.9698,point:{x:90,y:48,wfo:"TWC"}}],StationInfo={KBID:{id:"KBID",city:"Block Island State Airport",state:"RI",lat:41.1694699,lon:-71.5787299},KOQU:{id:"KOQU",city:"N. Kingston / Quonset",state:"RI",lat:41.6,lon:-71.41667},KPVD:{id:"KPVD",city:"Providence, Theodore Francis Green State Airport",state:"RI",lat:41.72249,lon:-71.43247},KSFZ:{id:"KSFZ",city:"Pawtucket, North Central State Airport",state:"RI",lat:41.91667,lon:-71.5},KUUU:{id:"KUUU",city:"Newport, Newport State Airport",state:"RI",lat:41.53,lon:-71.28361},KWST:{id:"KWST",city:"Westerly, Westerly State Airport",state:"RI",lat:41.34972,lon:-71.79889},KBDL:{id:"KBDL",city:"Windsor Locks, Bradley International Airport",state:"CT",lat:41.93806,lon:-72.6825},KBDR:{id:"KBDR",city:"Bridgeport, Sikorsky Memorial Airport",state:"CT",lat:41.16421,lon:-73.12663},KDXR:{id:"KDXR",city:"Danbury, Danbury Municipal Airport",state:"CT",lat:41.37167,lon:-73.48444},KGON:{id:"KGON",city:"Groton / New London, Groton / New London Airport",state:"CT",lat:41.3275,lon:-72.04944},KHFD:{id:"KHFD",city:"Hartford, Hartford-Brainard Airport",state:"CT",lat:41.735,lon:-72.65167},KHVN:{id:"KHVN",city:"New Haven, Tweed-New Haven Airport",state:"CT",lat:41.26389,lon:-72.88722},KIJD:{id:"KIJD",city:"Willimantic, Windham Airport",state:"CT",lat:41.74194,lon:-72.18361},KMMK:{id:"KMMK",city:"Meriden, Meriden Markham Municipal Airport",state:"CT",lat:41.50972,lon:-72.82778},KOXC:{id:"KOXC",city:"Oxford, Waterbury-Oxford Airport",state:"CT",lat:41.48333,lon:-73.13333},KSNC:{id:"KSNC",city:"Chester, Chester Airport",state:"CT",lat:41.38389,lon:-72.50583},KBTV:{id:"KBTV",city:"Burlington, Burlington International Airport",state:"VT",lat:44.46806,lon:-73.15028},KCDA:{id:"KCDA",city:"Caledonia County Airport",state:"VT",lat:44.5691142,lon:-72.0179789},KDDH:{id:"KDDH",city:"Bennington Morse State Airport",state:"VT",lat:42.89355,lon:-73.2486},KEFK:{id:"KEFK",city:"Northeast Kingdom International Airport",state:"VT",lat:44.88846,lon:-72.23593},KFSO:{id:"KFSO",city:"Franklin County State Airport",state:"VT",lat:44.9402807,lon:-73.09746},KMPV:{id:"KMPV",city:"Barre / Montpelier, Knapp State Airport",state:"VT",lat:44.20472,lon:-72.56611},KMVL:{id:"KMVL",city:"Morrisville-Stowe State Airport",state:"VT",lat:44.53589,lon:-72.6162499},KRUT:{id:"KRUT",city:"Rutland-Southern Vermont Regional Airport",state:"VT",lat:43.53333,lon:-72.95},KVSF:{id:"KVSF",city:"Springfield, Hartness State Springfield Airport",state:"VT",lat:43.3425,lon:-72.52167},PHBK:{id:"PHBK",city:"Kekaha, Pacific Missile Test Facility Barking Sands",state:"HI",lat:22.03639,lon:-159.78639},PHHI:{id:"PHHI",city:"Wheeler Air Force Base / Oahu",state:"HI",lat:21.48333,lon:-158.03333},PHJH:{id:"PHJH",city:"Lahaina - West Maui",state:"HI",lat:20.9630699,lon:-156.67466},PHJR:{id:"PHJR",city:"Oahu, Kalaeloa Airport",state:"HI",lat:21.30833,lon:-158.06806},PHKO:{id:"PHKO",city:"Kailua / Kona, Keahole Airport",state:"HI",lat:19.74083,lon:-156.05056},PHLI:{id:"PHLI",city:"Lihue, Lihue Airport",state:"HI",lat:21.98389,lon:-159.3411099},PHMK:{id:"PHMK",city:"Kaunakakai, Molokai Airport",state:"HI",lat:21.15,lon:-157.1},PHNG:{id:"PHNG",city:"Kaneohe, Marine Corps Air Station",state:"HI",lat:21.45389,lon:-157.76556},PHNL:{id:"PHNL",city:"Daniel K Inouye International Airport",state:"HI",lat:21.3275,lon:-157.94306},PHNY:{id:"PHNY",city:"Lanai City, Lanai Airport",state:"HI",lat:20.78556,lon:-156.95139},PHOG:{id:"PHOG",city:"Kahului, Kahului Airport",state:"HI",lat:20.8924999,lon:-156.43694},PHSF:{id:"PHSF",city:"Bradshaw Army Air Field / Hawaii",state:"HI",lat:19.78333,lon:-155.55},PHTO:{id:"PHTO",city:"Hilo, Hilo International Airport",state:"HI",lat:19.72222,lon:-155.0558299},KADU:{id:"KADU",city:"Audubon, Audubon County Airport",state:"IA",lat:41.70111,lon:-94.92028},KAIO:{id:"KAIO",city:"Atlantic",state:"IA",lat:41.4,lon:-95.05},KALO:{id:"KALO",city:"Waterloo, Waterloo Municipal Airport",state:"IA",lat:42.55444,lon:-92.40111},KAMW:{id:"KAMW",city:"Ames, Ames Municipal Airport",state:"IA",lat:41.99056,lon:-93.6188899},KAWG:{id:"KAWG",city:"Washington",state:"IA",lat:41.28333,lon:-91.66667},KAXA:{id:"KAXA",city:"Algona",state:"IA",lat:43.0833299,lon:-94.26667},KBNW:{id:"KBNW",city:"Boone Municipal",state:"IA",lat:42.05,lon:-93.85},KBRL:{id:"KBRL",city:"Burlington Regional Airport",state:"IA",lat:40.77293,lon:-91.12543},KCAV:{id:"KCAV",city:"Clarion",state:"IA",lat:42.75,lon:-93.76667},KCBF:{id:"KCBF",city:"Council Bluffs",state:"IA",lat:41.2612499,lon:-95.7604},KCCY:{id:"KCCY",city:"Charles City",state:"IA",lat:43.06667,lon:-92.61667},KCID:{id:"KCID",city:"Cedar Rapids Airport",state:"IA",lat:41.88295,lon:-91.72456},KCIN:{id:"KCIN",city:"Carroll",state:"IA",lat:42.05,lon:-94.78333},KCKP:{id:"KCKP",city:"Cherokee, Cherokee Municipal Airport",state:"IA",lat:42.73167,lon:-95.55583},KCNC:{id:"KCNC",city:"Chariton",state:"IA",lat:41.03333,lon:-93.36667},KCSQ:{id:"KCSQ",city:"Creston Municipal Airport",state:"IA",lat:41.0188599,lon:-94.361},KCWI:{id:"KCWI",city:"Clinton Municipal Airport",state:"IA",lat:41.82954,lon:-90.33279},KDBQ:{id:"KDBQ",city:"Dubuque Regional Airport",state:"IA",lat:42.39837,lon:-90.7091},KDEH:{id:"KDEH",city:"Decorah",state:"IA",lat:43.28333,lon:-91.73333},KDNS:{id:"KDNS",city:"Denison",state:"IA",lat:41.98333,lon:-95.38333},KDSM:{id:"KDSM",city:"Des Moines International Airport",state:"IA",lat:41.53399,lon:-93.65307},KDVN:{id:"KDVN",city:"Davenport Municipal Airport",state:"IA",lat:41.61338,lon:-90.59479},KEBS:{id:"KEBS",city:"Webster City Municipal Airport",state:"IA",lat:42.43724,lon:-93.87237},KEOK:{id:"KEOK",city:"Keokuk Municipal Airport",state:"IA",lat:40.46149,lon:-91.42739},KEST:{id:"KEST",city:"Estherville, Estherville Municipal Airport",state:"IA",lat:43.40111,lon:-94.74722},KFFL:{id:"KFFL",city:"Fairfield Municipal Airport",state:"IA",lat:41.0521,lon:-91.98339},KFOD:{id:"KFOD",city:"Fort Dodge",state:"IA",lat:42.55,lon:-94.18333},KFSW:{id:"KFSW",city:"Fort Madison Municipal Airport",state:"IA",lat:40.66154,lon:-91.32672},KFXY:{id:"KFXY",city:"Forest City Municipal Airport",state:"IA",lat:43.235,lon:-93.624},KGGI:{id:"KGGI",city:"Grinnell Municipal Airfield",state:"IA",lat:41.7092,lon:-92.7349},KHNR:{id:"KHNR",city:"Harlan, Harlan Municipal Airport",state:"IA",lat:41.58444,lon:-95.33972},KHPT:{id:"KHPT",city:"Hampton Municipal Airport",state:"IA",lat:42.72369,lon:-93.22633},KICL:{id:"KICL",city:"Schenck Field Airport",state:"IA",lat:40.72421,lon:-95.02224},KIFA:{id:"KIFA",city:"Iowa Falls Municipal Airport",state:"IA",lat:42.4709999,lon:-93.27},KIIB:{id:"KIIB",city:"Independence, Independence Municipal Airport",state:"IA",lat:42.45,lon:-91.93333},KIKV:{id:"KIKV",city:"Ankeny Regional Airport",state:"IA",lat:41.68782,lon:-93.56944},KIOW:{id:"KIOW",city:"Iowa City Municipal Airport",state:"IA",lat:41.6394499,lon:-91.5445},KLRJ:{id:"KLRJ",city:"Le Mars Municipal Airport",state:"IA",lat:42.77478,lon:-96.19239},KLWD:{id:"KLWD",city:"Lamoni, Lamoni Municipal Airport",state:"IA",lat:40.63056,lon:-93.90083},KMCW:{id:"KMCW",city:"Mason City Municipal Airport",state:"IA",lat:43.15442,lon:-93.32607},KMIW:{id:"KMIW",city:"Marshalltown, Marshalltown Municipal Airport",state:"IA",lat:42.11056,lon:-92.91611},KMPZ:{id:"KMPZ",city:"Mount Pleasant, Mount Pleasant Municipal Airport",state:"IA",lat:40.94667,lon:-91.51111},KMUT:{id:"KMUT",city:"Muscatine",state:"IA",lat:41.36667,lon:-91.15},KMXO:{id:"KMXO",city:"Monticello Regional Airport",state:"IA",lat:42.22035,lon:-91.16041},KOLZ:{id:"KOLZ",city:"Oelwein Municipal Airport",state:"IA",lat:42.68316,lon:-91.97595},KOOA:{id:"KOOA",city:"Oskaloosa, Oskaloosa Municipal Airport",state:"IA",lat:41.22611,lon:-92.49361},KOTM:{id:"KOTM",city:"Ottumwa Regional Airport",state:"IA",lat:41.10082,lon:-92.4445099},KOXV:{id:"KOXV",city:"Knoxville",state:"IA",lat:41.3,lon:-93.11667},KPEA:{id:"KPEA",city:"Pella, Pella Municipal Airport",state:"IA",lat:41.4,lon:-92.93333},KPRO:{id:"KPRO",city:"Perry Municipal Airport",state:"IA",lat:41.828,lon:-94.1598999},KRDK:{id:"KRDK",city:"Red Oak",state:"IA",lat:41.01667,lon:-95.26667},KSDA:{id:"KSDA",city:"Shenandoah Municipal",state:"IA",lat:40.75,lon:-95.41667},KSHL:{id:"KSHL",city:"Sheldon",state:"IA",lat:43.21667,lon:-95.83333},KSLB:{id:"KSLB",city:"Storm Lake",state:"IA",lat:42.6,lon:-95.23333},KSPW:{id:"KSPW",city:"Spencer Municipal Airport",state:"IA",lat:43.16825,lon:-95.21008},KSUX:{id:"KSUX",city:"Sioux City, Sioux Gateway Airport",state:"IA",lat:42.4025,lon:-96.38444},KSXK:{id:"KSXK",city:"Sioux County Regional Airport",state:"IA",lat:42.98583,lon:-96.1614},KTNU:{id:"KTNU",city:"Newton Municipal Airport - Earl Johnson Field",state:"IA",lat:41.67014,lon:-93.01902},KTVK:{id:"KTVK",city:"Centerville Municipal Airport",state:"IA",lat:40.6839,lon:-92.901},KVTI:{id:"KVTI",city:"Vinton, Vinton Veterans Memorial Airpark Airport",state:"IA",lat:42.21861,lon:-92.02583},KAFK:{id:"KAFK",city:"Nebraska City, Nebraska City Municipal Airport",state:"NE",lat:40.6,lon:-95.85},KAHQ:{id:"KAHQ",city:"Wahoo",state:"NE",lat:41.2406,lon:-96.5946},KAIA:{id:"KAIA",city:"Alliance, Alliance Municipal Airport",state:"NE",lat:42.05722,lon:-102.8},KANW:{id:"KANW",city:"Ainsworth Regional Airport",state:"NE",lat:42.57484,lon:-99.99832},KAUH:{id:"KAUH",city:"Aurora, Aurora Municipal Airport",state:"NE",lat:40.89389,lon:-97.99444},KBBW:{id:"KBBW",city:"Broken Bow, Broken Bow Municipal Airport",state:"NE",lat:41.43333,lon:-99.65},KBFF:{id:"KBFF",city:"Scottsbluff, Heilig Field",state:"NE",lat:41.86694,lon:-103.58583},KBIE:{id:"KBIE",city:"Beatrice Municipal",state:"NE",lat:40.3,lon:-96.75},KBTA:{id:"KBTA",city:"Blair Municipal Airport",state:"NE",lat:41.4148,lon:-96.109},KBVN:{id:"KBVN",city:"Albion Municipal Airport",state:"NE",lat:41.73016,lon:-98.05453},KCDR:{id:"KCDR",city:"Chadron, Chadron Municipal Airport",state:"NE",lat:42.8375,lon:-103.09528},KEAR:{id:"KEAR",city:"Kearney, Kearney Municipal Airport",state:"NE",lat:40.73333,lon:-99},KFET:{id:"KFET",city:"Fremont Municipal Airport",state:"NE",lat:41.45,lon:-96.51667},KFNB:{id:"KFNB",city:"Falls City, Brenner Field Airport",state:"NE",lat:40.07889,lon:-95.5919399},KGRI:{id:"KGRI",city:"Grand Island, Central Nebraska Regional Airport",state:"NE",lat:40.9583299,lon:-98.3125},KGRN:{id:"KGRN",city:"Gordon Municipal",state:"NE",lat:42.8,lon:-102.16667},KHDE:{id:"KHDE",city:"Brewster Field Airport",state:"NE",lat:40.45,lon:-99.33333},KHJH:{id:"KHJH",city:"Hebron, Hebron Municipal Airport",state:"NE",lat:40.15222,lon:-97.58694},KHSI:{id:"KHSI",city:"Hastings, Hastings Municipal Airport",state:"NE",lat:40.60056,lon:-98.42583},KIBM:{id:"KIBM",city:"Kimball, Kimball Municipal Airport/Robert E Arraj Field",state:"NE",lat:41.18333,lon:-103.66667},KIML:{id:"KIML",city:"Imperial, Imperial Municipal Airport",state:"NE",lat:40.51667,lon:-101.61667},KJYR:{id:"KJYR",city:"York, York Municipal Airport",state:"NE",lat:40.89667,lon:-97.62278},KLBF:{id:"KLBF",city:"North Platte, North Platte Regional Airport",state:"NE",lat:41.12194,lon:-100.66833},KLCG:{id:"KLCG",city:"Wayne, Wayne Municipal Airport",state:"NE",lat:42.24167,lon:-96.98139},KLNK:{id:"KLNK",city:"Lincoln, Lincoln Municipal Airport",state:"NE",lat:40.83111,lon:-96.7644399},KLXN:{id:"KLXN",city:"Lexington, Jim Kelly Field Airport",state:"NE",lat:40.79111,lon:-99.77722},KMCK:{id:"KMCK",city:"McCook, McCook Municipal Airport",state:"NE",lat:40.20306,lon:-100.58833},KMLE:{id:"KMLE",city:"Omaha, Millard Airport",state:"NE",lat:41.19583,lon:-96.1122199},KODX:{id:"KODX",city:"Ord, Evelyn Sharp Field Airport",state:"NE",lat:41.62417,lon:-98.9525},KOFF:{id:"KOFF",city:"Omaha / Offutt Air Force Base",state:"NE",lat:41.11667,lon:-95.9},KOFK:{id:"KOFK",city:"Norfolk, Stefan Memorial Airport",state:"NE",lat:41.9805599,lon:-97.43694},KOGA:{id:"KOGA",city:"Ogallala, Searle Field Airport",state:"NE",lat:41.11972,lon:-101.76889},KOLU:{id:"KOLU",city:"Columbus, Columbus Municipal Airport",state:"NE",lat:41.45,lon:-97.33333},KOMA:{id:"KOMA",city:"Omaha - Eppley Airfield",state:"NE",lat:41.3119,lon:-95.90185},KONL:{id:"KONL",city:"O'Neill / Baker Field",state:"NE",lat:42.46667,lon:-98.68333},KPMV:{id:"KPMV",city:"Plattsmouth, Plattsmouth Municipal Airport",state:"NE",lat:40.95,lon:-95.9177799},KSNY:{id:"KSNY",city:"Sidney, Sidney Municipal Airport",state:"NE",lat:41.09944,lon:-102.98556},KTIF:{id:"KTIF",city:"Thedford, Thomas County Airport",state:"NE",lat:41.96194,lon:-100.56889},KTQE:{id:"KTQE",city:"Tekamah, Tekamah Municipal Airport",state:"NE",lat:41.76694,lon:-96.17778},KVTN:{id:"KVTN",city:"Valentine, Miller Field",state:"NE",lat:42.85861,lon:-100.55139},KDOV:{id:"KDOV",city:"Dover Air Force Base",state:"DE",lat:39.13333,lon:-75.4666699},KGED:{id:"KGED",city:"Georgetown - Delaware Coastal Airport",state:"DE",lat:38.68974,lon:-75.36245},KILG:{id:"KILG",city:"Wilmington, New Castle County Airport",state:"DE",lat:39.67442,lon:-75.60567},KBKW:{id:"KBKW",city:"Beckley, Raleigh County Memorial Airport",state:"WV",lat:37.795,lon:-81.12472},KBLF:{id:"KBLF",city:"Bluefield, Mercer County Airport",state:"WV",lat:37.29583,lon:-81.20778},KCBE:{id:"KCBE",city:"Cumberland, Greater Cumberland Regional Airport",state:"WV",lat:39.61528,lon:-78.76083},KCKB:{id:"KCKB",city:"Clarksburg, Clarksburg Benedum Airport",state:"WV",lat:39.3,lon:-80.22472},KCRW:{id:"KCRW",city:"Charleston, Yeager Airport",state:"WV",lat:38.37944,lon:-81.59139},KEKN:{id:"KEKN",city:"Elkins, Elkins-Randolph County-Jennings Randolph Field",state:"WV",lat:38.88528,lon:-79.85278},KHLG:{id:"KHLG",city:"Wheeling, Wheeling Ohio County Airport",state:"WV",lat:40.17028,lon:-80.64444},KHTS:{id:"KHTS",city:"Huntington, Tri-State Airport",state:"WV",lat:38.365,lon:-82.555},KLWB:{id:"KLWB",city:"Lewisburg / Greenbrier",state:"WV",lat:37.86667,lon:-80.4},KMGW:{id:"KMGW",city:"Morgantown Municipal-Hart Field",state:"WV",lat:39.64985,lon:-79.92065},KMRB:{id:"KMRB",city:"Eastern WV Regional Airport/Shepherd Field",state:"WV",lat:39.40372,lon:-77.975},KPKB:{id:"KPKB",city:"Parkersburg, Mid-Ohio Valley Regional Airport",state:"WV",lat:39.345,lon:-81.43917},KACQ:{id:"KACQ",city:"Waseca Municipal Airport",state:"MN",lat:44.07024,lon:-93.55342},KADC:{id:"KADC",city:"Wadena Municipal Airport",state:"MN",lat:46.45022,lon:-95.21353},KAEL:{id:"KAEL",city:"Albert Lea, Albert Lea Municipal Airport",state:"MN",lat:43.68333,lon:-93.36667},KAIT:{id:"KAIT",city:"Aitkin Municipal Airport - Steve Kurtz Field",state:"MN",lat:46.54899,lon:-93.67573},KANE:{id:"KANE",city:"Minneapolis / Blaine",state:"MN",lat:45.14258,lon:-93.21272},KAQP:{id:"KAQP",city:"Appleton Municipal Airport",state:"MN",lat:45.22488,lon:-96.00412},KACB:{id:"KACB",city:"Bellaire, Antrim County Airport",state:"MI",lat:44.98833,lon:-85.19833},KADG:{id:"KADG",city:"Adrian, Lenawee County Airport",state:"MI",lat:41.86778,lon:-84.07944},KAMN:{id:"KAMN",city:"Alma, Gratiot Community Airport",state:"MI",lat:43.32194,lon:-84.68778},KANJ:{id:"KANJ",city:"Sault Ste. Marie",state:"MI",lat:46.4794399,lon:-84.35722},KAPN:{id:"KAPN",city:"Alpena, Alpena County Regional Airport",state:"MI",lat:45.07167,lon:-83.56444},KARB:{id:"KARB",city:"Ann Arbor, Ann Arbor Municipal Airport",state:"MI",lat:42.22389,lon:-83.74},KAZO:{id:"KAZO",city:"Kalamazoo/Battle Creek International Airport",state:"MI",lat:42.2283,lon:-85.54595},KBAX:{id:"KBAX",city:"Huron County Memorial Airport",state:"MI",lat:43.77741,lon:-82.98271},KBEH:{id:"KBEH",city:"Southwest Michigan Regional Airport",state:"MI",lat:42.12896,lon:-86.41515},KBIV:{id:"KBIV",city:"Holland - West Michigan Regional Airport",state:"MI",lat:42.74611,lon:-86.09667},KBTL:{id:"KBTL",city:"Battle Creek Executive Airport",state:"MI",lat:42.31197,lon:-85.24144},KCAD:{id:"KCAD",city:"Wexford County Airport",state:"MI",lat:44.27847,lon:-85.4206899},KCFS:{id:"KCFS",city:"Caro, Tuscola Area Airport",state:"MI",lat:43.45861,lon:-83.44528},KCIU:{id:"KCIU",city:"Sault Ste Marie, Chippewa County International Airport",state:"MI",lat:46.25,lon:-84.4666699},KCMX:{id:"KCMX",city:"Houghton County Memorial Airport",state:"MI",lat:47.16597,lon:-88.48072},KCVX:{id:"KCVX",city:"Charlevoix, Charlevoix Municipal Airport",state:"MI",lat:45.30472,lon:-85.27472},KDET:{id:"KDET",city:"Coleman A Young Municipal Airport",state:"MI",lat:42.40729,lon:-83.00894},KDRM:{id:"KDRM",city:"Drummond Island Airport",state:"MI",lat:46.0072,lon:-83.7427},KDTW:{id:"KDTW",city:"Detroit, Detroit Metropolitan Wayne County Airport",state:"MI",lat:42.23139,lon:-83.33083},KDUH:{id:"KDUH",city:"Lambertville, Toledo Suburban Airport",state:"MI",lat:41.73583,lon:-83.65528},KERY:{id:"KERY",city:"Newberry, Luce County Airport",state:"MI",lat:46.31111,lon:-85.45722},KESC:{id:"KESC",city:"Delta County Airport",state:"MI",lat:45.7226799,lon:-87.09372},KFFX:{id:"KFFX",city:"Fremont Municipal Airport",state:"MI",lat:43.43933,lon:-85.9948299},KFKS:{id:"KFKS",city:"Frankfort, Frankfort Dow Memorial Field Airport",state:"MI",lat:44.625,lon:-86.20056},KFNT:{id:"KFNT",city:"Flint, Bishop International Airport",state:"MI",lat:42.96667,lon:-83.74944},KFPK:{id:"KFPK",city:"Charlotte, Fitch H Beach Airport",state:"MI",lat:42.57444,lon:-84.81139},KGLR:{id:"KGLR",city:"Gaylord Regional Airport",state:"MI",lat:45.01658,lon:-84.68937},KGOV:{id:"KGOV",city:"Grayling, Grayling Army Airfield",state:"MI",lat:44.68028,lon:-84.72889},KGRR:{id:"KGRR",city:"Grand Rapids, Gerald R. Ford International Airport",state:"MI",lat:42.88083,lon:-85.52278},KHAI:{id:"KHAI",city:"Haines Memorial Airport",state:"MI",lat:41.9598,lon:-85.5934},KHTL:{id:"KHTL",city:"Houghton Lake, Roscommon County Airport",state:"MI",lat:44.35111,lon:-84.67417},KABR:{id:"KABR",city:"Aberdeen, Aberdeen Regional Airport",state:"SD",lat:45.44333,lon:-98.41306},KAGZ:{id:"KAGZ",city:"WAGNERMUNC",state:"SD",lat:43.06332,lon:-98.29618},KATY:{id:"KATY",city:"Watertown, Watertown Municipal Airport",state:"SD",lat:44.90472,lon:-97.14944},KBKX:{id:"KBKX",city:"Brookings, Brookings Municipal Airport",state:"SD",lat:44.3,lon:-96.81667},KCUT:{id:"KCUT",city:"Custer, Custer County Airport",state:"SD",lat:43.73306,lon:-103.6175},KEFC:{id:"KEFC",city:"BELLEFCHE",state:"SD",lat:44.7342,lon:-103.86199},KFSD:{id:"KFSD",city:"Sioux Falls, Foss Field",state:"SD",lat:43.57694,lon:-96.75361},KHON:{id:"KHON",city:"Huron, Huron Regional Airport",state:"SD",lat:44.38806,lon:-98.22833},KICR:{id:"KICR",city:"Winner, Bob Wiley Field Airport",state:"SD",lat:43.39056,lon:-99.8425},KIEN:{id:"KIEN",city:"Pine Ridge, Pine Ridge Airport",state:"SD",lat:43.02556,lon:-102.52306},KLEM:{id:"KLEM",city:"LEMMON",state:"SD",lat:45.91869,lon:-102.10617},KMBG:{id:"KMBG",city:"Mobridge, Mobridge Municipal Airport",state:"SD",lat:45.55,lon:-100.40861},KMDS:{id:"KMDS",city:"Madison Municipal Airport",state:"SD",lat:44.0164147,lon:-97.0855992},KMHE:{id:"KMHE",city:"Mitchell, Mitchell Municipal Airport",state:"SD",lat:43.76667,lon:-98.03333},KMKA:{id:"KMKA",city:"MILLERMUNC",state:"SD",lat:44.5252399,lon:-98.95811},KPHP:{id:"KPHP",city:"Philip, Philip Airport",state:"SD",lat:44.05111,lon:-101.60111},KPIR:{id:"KPIR",city:"Pierre, Pierre Regional Airport",state:"SD",lat:44.3827799,lon:-100.28583},KRAP:{id:"KRAP",city:"Rapid City, Rapid City Regional Airport",state:"SD",lat:44.04556,lon:-103.05389},KRCA:{id:"KRCA",city:"Ellsworth Air Force Base",state:"SD",lat:44.15,lon:-103.1},KSPF:{id:"KSPF",city:"Spearfish / Clyde Ice",state:"SD",lat:44.48333,lon:-103.78333},KUNR:{id:"KUNR",city:"Rapid City/WFO",state:"SD",lat:44.0727,lon:-103.2108},KVMR:{id:"KVMR",city:"VERMILLION",state:"SD",lat:42.76528,lon:-96.93425},KYKN:{id:"KYKN",city:"Yankton, Chan Gurney Municipal Airport",state:"SD",lat:42.91667,lon:-97.38333},KALX:{id:"KALX",city:"Alexander City, Thomas C Russell Field Airport",state:"AL",lat:32.91472,lon:-85.96278},KANB:{id:"KANB",city:"Anniston Metro Airport",state:"AL",lat:33.59045,lon:-85.84789},KASN:{id:"KASN",city:"Talladega Municipal Airport",state:"AL",lat:33.5695,lon:-86.0512},KAUO:{id:"KAUO",city:"Auburn-Opelika Airport",state:"AL",lat:32.61667,lon:-85.43333},KBFM:{id:"KBFM",city:"Mobile, Mobile Downtown Airport",state:"AL",lat:30.61389,lon:-88.0633299},KBHM:{id:"KBHM",city:"Birmingham, Birmingham International Airport",state:"AL",lat:33.56556,lon:-86.745},KCMD:{id:"KCMD",city:"Cullman Regional Folsom Field",state:"AL",lat:34.2687,lon:-86.858},KCQF:{id:"KCQF",city:"Sonny Callahan Airport",state:"AL",lat:30.461,lon:-87.877},KDCU:{id:"KDCU",city:"Decatur, Pryor Field",state:"AL",lat:34.65806,lon:-86.94333},KDHN:{id:"KDHN",city:"Dothan, Dothan Regional Airport",state:"AL",lat:31.32139,lon:-85.44972},KDYA:{id:"KDYA",city:"Demopolis Municipal Airport",state:"AL",lat:32.4638,lon:-87.9541},KEDN:{id:"KEDN",city:"Enterprise Municipal Airport",state:"AL",lat:31.2982,lon:-85.9048},KEET:{id:"KEET",city:"Alabaster, Shelby County Airport",state:"AL",lat:33.17833,lon:-86.78167},KEKY:{id:"KEKY",city:"Bessemer Airport",state:"AL",lat:33.3126,lon:-86.9263},KEUF:{id:"KEUF",city:"Eufaula Municipal Airport",state:"AL",lat:31.951,lon:-85.129},KGAD:{id:"KGAD",city:"Gadsden, Gadsden Municipal Airport",state:"AL",lat:33.96667,lon:-86.08333},KGZH:{id:"KGZH",city:"Evergreen, Middleton Field",state:"AL",lat:31.41889,lon:-87.04806},KHEY:{id:"KHEY",city:"Hanchey AHP / Ozark",state:"AL",lat:31.35,lon:-85.66667},KHSV:{id:"KHSV",city:"Huntsville, Huntsville International / Jones Field",state:"AL",lat:34.64361,lon:-86.78556},KHUA:{id:"KHUA",city:"Redstone Airfield",state:"AL",lat:34.6786,lon:-86.6847},KJFX:{id:"KJFX",city:"Jasper Walker County Airport & Bevill Field",state:"AL",lat:33.902,lon:-87.31417},KJKA:{id:"KJKA",city:"Jack Edwards Airport",state:"AL",lat:30.2896,lon:-87.6718},KLOR:{id:"KLOR",city:"Fort Rucker, Lowe Army Heliport",state:"AL",lat:31.35889,lon:-85.74833},KMDQ:{id:"KMDQ",city:"Huntsville, Madison County Executive Airport",state:"AL",lat:34.86139,lon:-86.55722},KMGM:{id:"KMGM",city:"Montgomery, Dannelly Field",state:"AL",lat:32.30028,lon:-86.40611},KMOB:{id:"KMOB",city:"Mobile, Mobile Regional Airport",state:"AL",lat:30.68833,lon:-88.24556},KMSL:{id:"KMSL",city:"Muscle Shoals, North West Alabama Regional Airport",state:"AL",lat:34.74389,lon:-87.59944},KMXF:{id:"KMXF",city:"Maxwell Air Force Base / Montgomery",state:"AL",lat:32.38333,lon:-86.36667},KOZR:{id:"KOZR",city:"Cairns Army Air Field / Ozark",state:"AL",lat:31.27672,lon:-85.71099},KPLR:{id:"KPLR",city:"St Clair County Airport",state:"AL",lat:33.5588,lon:-86.2491},KPRN:{id:"KPRN",city:"Mac Crenshaw Memorial Airport",state:"AL",lat:31.8457,lon:-86.6107},KSCD:{id:"KSCD",city:"Merkel Field Sylacauga Municipal Airport",state:"AL",lat:33.1718,lon:-86.3055},KSEM:{id:"KSEM",city:"Craig Field / Selma",state:"AL",lat:32.35,lon:-86.98333},KSXS:{id:"KSXS",city:"SCHELL AHP",state:"AL",lat:31.35,lon:-85.85},KTCL:{id:"KTCL",city:"Tuscaloosa Regional Airport",state:"AL",lat:33.21215,lon:-87.61554},KTOI:{id:"KTOI",city:"Troy, Troy Municipal Airport",state:"AL",lat:31.86056,lon:-86.01222},KAFN:{id:"KAFN",city:"Jaffrey Airport-Silver Ranch",state:"NH",lat:42.8066699,lon:-72.00127},KASH:{id:"KASH",city:"Nashua - Boire Field Airport",state:"NH",lat:42.77981,lon:-71.51409},KBML:{id:"KBML",city:"Berlin, Berlin Municipal Airport",state:"NH",lat:44.57611,lon:-71.17861},KCON:{id:"KCON",city:"Concord Municipal Airport",state:"NH",lat:43.20489,lon:-71.50257},KDAW:{id:"KDAW",city:"Rochester - Skyhaven Airport",state:"NH",lat:43.27939,lon:-70.92426},KEEN:{id:"KEEN",city:"Keene, Dillant-Hopkins Airport",state:"NH",lat:42.9,lon:-72.26667},KHIE:{id:"KHIE",city:"Whitefield - Mount Washington Regional Airport",state:"NH",lat:44.36595,lon:-71.55218},KLCI:{id:"KLCI",city:"Laconia, Laconia Municipal Airport",state:"NH",lat:43.56667,lon:-71.41667},KLEB:{id:"KLEB",city:"Lebanon Municipal Airport",state:"NH",lat:43.6271,lon:-72.30537},KMHT:{id:"KMHT",city:"Manchester Airport",state:"NH",lat:42.92964,lon:-71.43559},KMWN:{id:"KMWN",city:"Mount Washington",state:"NH",lat:44.27086,lon:-71.30337},KPSM:{id:"KPSM",city:"Pease Air Force Base / Portsmouth",state:"NH",lat:43.0833299,lon:-70.81667},KAIZ:{id:"KAIZ",city:"Kaiser Lake Ozark, Lee C Fine Memorial Airport",state:"MO",lat:38.1,lon:-92.55},KBBG:{id:"KBBG",city:"Branson",state:"MO",lat:36.5321,lon:-93.2005},KCDJ:{id:"KCDJ",city:"Chillicothe, Chillicothe Agri-Science Center",state:"MO",lat:39.81667,lon:-93.58333},KCGI:{id:"KCGI",city:"Cape Girardeau, Cape Girardeau Regional Airport",state:"MO",lat:37.22556,lon:-89.5783299},KCOU:{id:"KCOU",city:"Columbia, Columbia Regional Airport",state:"MO",lat:38.81694,lon:-92.21833},KDMO:{id:"KDMO",city:"Sedalia, Sedalia Memorial Airport",state:"MO",lat:38.71222,lon:-93.17444},KEOS:{id:"KEOS",city:"NEOSHOAIRPORT",state:"MO",lat:36.8108,lon:-94.39169},KEVU:{id:"KEVU",city:"Maryville Northwest Missouri Regional Airport",state:"MO",lat:40.3525,lon:-94.915},KEZZ:{id:"KEZZ",city:"Cameron Memorial Airport",state:"MO",lat:39.7275599,lon:-94.27639},KFAM:{id:"KFAM",city:"Farmington Airport",state:"MO",lat:37.76667,lon:-90.43333},KFWB:{id:"KFWB",city:"Branson West Muni - Emerson Field",state:"MO",lat:36.6985,lon:-93.4021999},KFYG:{id:"KFYG",city:"Washington Regional Airport",state:"MO",lat:38.5876,lon:-90.9937999},KBGF:{id:"KBGF",city:"Winchester Municipal Airport",state:"TN",lat:35.1775,lon:-86.0662},KBNA:{id:"KBNA",city:"Nashville, Nashville International Airport",state:"TN",lat:36.11889,lon:-86.68917},KCHA:{id:"KCHA",city:"Chattanooga, Lovell Field",state:"TN",lat:35.03333,lon:-85.2},KCKV:{id:"KCKV",city:"Clarksville Outlaw Field",state:"TN",lat:36.61689,lon:-87.41174},KCSV:{id:"KCSV",city:"Crossville, Crossville Memorial-Whitson Field Airport",state:"TN",lat:35.95139,lon:-85.0849999},KDKX:{id:"KDKX",city:"Knoxville Downtown Airport",state:"TN",lat:35.96581,lon:-83.87169},KDYR:{id:"KDYR",city:"Dyersburg, Dyersburg Municipal Airport",state:"TN",lat:36,lon:-89.4},KFYE:{id:"KFYE",city:"Somerville - Fayette County Airport",state:"TN",lat:35.2061,lon:-89.3929},KFYM:{id:"KFYM",city:"Fayetteville Municipal Airport",state:"TN",lat:35.0597,lon:-86.5639999},KGCY:{id:"KGCY",city:"Greeneville-Greene County Municipal Airport",state:"TN",lat:36.19601,lon:-82.81099},KGKT:{id:"KGKT",city:"Sevierville Gatlinburg - Pigeon Forge Airport",state:"TN",lat:35.85681,lon:-83.53334},KGZS:{id:"KGZS",city:"Pulaski Abernathy Field Airport",state:"TN",lat:35.1537,lon:-87.0568},KHZD:{id:"KHZD",city:"Huntingdon Carroll County Airport",state:"TN",lat:36.08896,lon:-88.46538},KJAU:{id:"KJAU",city:"Jacksboro Campbell County Airport",state:"TN",lat:36.3341,lon:-84.163},KJWN:{id:"KJWN",city:"John C Tune Airport",state:"TN",lat:36.18521,lon:-86.88331},KLUG:{id:"KLUG",city:"Ellington Airport",state:"TN",lat:35.50697,lon:-86.80389},KMBT:{id:"KMBT",city:"Murfreesboro Municipal Airport",state:"TN",lat:35.87866,lon:-86.37749},KMEG:{id:"KMEG",city:"Memphis WFO",state:"TN",lat:35.0563999,lon:-89.9863},KMEM:{id:"KMEM",city:"Memphis International Airport",state:"TN",lat:35.05644,lon:-89.98634},KMKL:{id:"KMKL",city:"Jackson, McKellar-Sipes Regional Airport",state:"TN",lat:35.59306,lon:-88.91667},KMMI:{id:"KMMI",city:"Athens McMinn County Airport",state:"TN",lat:35.3973,lon:-84.5626},KMNV:{id:"KMNV",city:"Monroe County Airport",state:"TN",lat:35.54522,lon:-84.38039},KMOR:{id:"KMOR",city:"Morristown Moore-Murrell Airport",state:"TN",lat:36.1794,lon:-83.3754},KMQY:{id:"KMQY",city:"Smyrna, Smyrna Airport",state:"TN",lat:36.00889,lon:-86.52},KMRC:{id:"KMRC",city:"Columbia / Maury County",state:"TN",lat:35.55,lon:-87.18333},KNQA:{id:"KNQA",city:"Millington, Millington Municipal Airport",state:"TN",lat:35.35667,lon:-89.8702799},KOQT:{id:"KOQT",city:"Oak Ridge",state:"TN",lat:36.02278,lon:-84.23333},KPHT:{id:"KPHT",city:"Paris - Henry County Airport",state:"TN",lat:36.34,lon:-88.38},KPVE:{id:"KPVE",city:"Lexington-Parsons Beech River Regional Airport",state:"TN",lat:35.6564,lon:-88.1954},KRKW:{id:"KRKW",city:"Rockwood Municipal Airport",state:"TN",lat:35.92501,lon:-84.691},KRNC:{id:"KRNC",city:"McMinnville Warren County Memorial Airport",state:"TN",lat:35.6991,lon:-85.8402},KSCX:{id:"KSCX",city:"Scott Municipal Airport",state:"TN",lat:36.45569,lon:-84.58575},KSNH:{id:"KSNH",city:"SAVANNAH/HARDIN CO",state:"TN",lat:35.17,lon:-88.22},KSRB:{id:"KSRB",city:"Sparta Upper Cumberland Regional Airport",state:"TN",lat:36.0559,lon:-85.5307},KSYI:{id:"KSYI",city:"Shelbyville Bomar Field & Shelbyville Municipal Airport",state:"TN",lat:35.5593999,lon:-86.4425},KTHA:{id:"KTHA",city:"Tullahoma Regional Airport/William Northern Field",state:"TN",lat:35.38,lon:-86.2467},KTRI:{id:"KTRI",city:"Bristol / Johnson / Kingsport, Tri-City Regional Airport",state:"TN",lat:36.47972,lon:-82.39889},KTYS:{id:"KTYS",city:"Knoxville, McGhee Tyson Airport",state:"TN",lat:35.81806,lon:-83.98583},KUCY:{id:"KUCY",city:"Union City - Everett-Stewart Regional Airport",state:"TN",lat:36.38,lon:-88.98},KXNX:{id:"KXNX",city:"Sumner County Regional Airport",state:"TN",lat:36.3750799,lon:-86.40842},KBAC:{id:"KBAC",city:"Valley City",state:"ND",lat:46.9412,lon:-98.018},KBIS:{id:"KBIS",city:"Bismarck, Bismarck Municipal Airport",state:"ND",lat:46.7825,lon:-100.75722},KBWP:{id:"KBWP",city:"Wahpeton, Harry Stern Airport",state:"ND",lat:46.24389,lon:-96.60722},KBWW:{id:"KBWW",city:"Bowman Regional Airport",state:"ND",lat:46.16551,lon:-103.30074},KDIK:{id:"KDIK",city:"Dickinson, Dickinson Municipal Airport",state:"ND",lat:46.79722,lon:-102.80194},KDVL:{id:"KDVL",city:"Devils Lake, Devils Lake Municipal Airport",state:"ND",lat:48.11667,lon:-98.91667},KFAR:{id:"KFAR",city:"Fargo, Hector International Airport",state:"ND",lat:46.92528,lon:-96.81111},KGAF:{id:"KGAF",city:"GRAFTON",state:"ND",lat:48.4,lon:-97.37},KGFK:{id:"KGFK",city:"Grand Forks, Grand Forks International Airport",state:"ND",lat:47.94806,lon:-97.1825},KGWR:{id:"KGWR",city:"Gwinner",state:"ND",lat:46.2187,lon:-97.6435},KHEI:{id:"KHEI",city:"Hettinger, Hettinger Municipal Airport",state:"ND",lat:46.01056,lon:-102.64972},KHZE:{id:"KHZE",city:"HAZEN",state:"ND",lat:47.28,lon:-101.58},KJMS:{id:"KJMS",city:"Jamestown, Jamestown Municipal Airport",state:"ND",lat:46.92972,lon:-98.67833},KMIB:{id:"KMIB",city:"Minot Air Force Base",state:"ND",lat:48.41667,lon:-101.35},KMOT:{id:"KMOT",city:"Minot International Airport",state:"ND",lat:48.25203,lon:-101.2689},KRDR:{id:"KRDR",city:"Grand Forks Air Force Base",state:"ND",lat:47.96667,lon:-97.4},KRUG:{id:"KRUG",city:"RUGBY",state:"ND",lat:48.38,lon:-100.02},KXWA:{id:"KXWA",city:"Williston Basin International Airport",state:"ND",lat:48.26086,lon:-103.75114},KACK:{id:"KACK",city:"Nantucket, Nantucket Memorial Airport",state:"MA",lat:41.25389,lon:-70.05972},KAQW:{id:"KAQW",city:"North Adams Harriman-and-West Airport",state:"MA",lat:42.69731,lon:-73.16955},KBAF:{id:"KBAF",city:"Westfield, Barnes Municipal Airport",state:"MA",lat:42.15972,lon:-72.71278},KBED:{id:"KBED",city:"Laurence G Hanscom Field Airport",state:"MA",lat:42.46811,lon:-71.29463},KBOS:{id:"KBOS",city:"Boston, Logan International Airport",state:"MA",lat:42.36056,lon:-71.01056},KBVY:{id:"KBVY",city:"Beverly, Beverly Municipal Airport",state:"MA",lat:42.58361,lon:-70.91639},KCEF:{id:"KCEF",city:"Chicopee Falls / Westover Air Force Base",state:"MA",lat:42.2,lon:-72.53333},KCQX:{id:"KCQX",city:"Chatham, Chatham Municipal Airport",state:"MA",lat:41.6875,lon:-69.99333},KEWB:{id:"KEWB",city:"New Bedford, New Bedford Regional Airport",state:"MA",lat:41.67528,lon:-70.95694},KFIT:{id:"KFIT",city:"Fitchburg, Fitchburg Municipal Airport",state:"MA",lat:42.55194,lon:-71.75583},KFMH:{id:"KFMH",city:"Otis Air National Guard Base",state:"MA",lat:41.65,lon:-70.51667},KGHG:{id:"KGHG",city:"Marshfield Airport",state:"MA",lat:42.0983,lon:-70.6722},KHYA:{id:"KHYA",city:"Hyannis, Barnstable Municipal-Boardman Airport",state:"MA",lat:41.67194,lon:-70.26972},KLWM:{id:"KLWM",city:"Lawrence Municipal Airport",state:"MA",lat:42.7126,lon:-71.12553},KMVY:{id:"KMVY",city:"Marthas Vineyard Airport",state:"MA",lat:41.39298,lon:-70.61588},KORE:{id:"KORE",city:"Orange Municipal Airport",state:"MA",lat:42.57,lon:-72.28693},KORH:{id:"KORH",city:"Worcester, Worcester Regional Airport",state:"MA",lat:42.27056,lon:-71.87306},KOWD:{id:"KOWD",city:"Norwood, Norwood Memorial Airport",state:"MA",lat:42.19083,lon:-71.17389},KPSF:{id:"KPSF",city:"Pittsfield Municipal Airport",state:"MA",lat:42.42691,lon:-73.28897},KPVC:{id:"KPVC",city:"Provincetown Municipal Airport",state:"MA",lat:42.07436,lon:-70.21816},KPYM:{id:"KPYM",city:"Plymouth, Plymouth Municipal Airport",state:"MA",lat:41.90861,lon:-70.72806},KTAN:{id:"KTAN",city:"Taunton, Taunton Municipal Airport",state:"MA",lat:41.87556,lon:-71.0211099},KACY:{id:"KACY",city:"Atlantic City, Atlantic City International Airport",state:"NJ",lat:39.45202,lon:-74.56699},KBLM:{id:"KBLM",city:"Belmar-Farmingdale",state:"NJ",lat:40.18333,lon:-74.13333},KCDW:{id:"KCDW",city:"Caldwell, Essex County Airport",state:"NJ",lat:40.87639,lon:-74.28306},KEWR:{id:"KEWR",city:"Newark, Newark International Airport",state:"NJ",lat:40.6825,lon:-74.16944},KFWN:{id:"KFWN",city:"Sussex, Sussex Airport",state:"NJ",lat:41.19925,lon:-74.62594},KLDJ:{id:"KLDJ",city:"Linden Airport",state:"NJ",lat:40.6174,lon:-74.2446},KMIV:{id:"KMIV",city:"Millville, Millville Municipal Airport",state:"NJ",lat:39.36623,lon:-75.0778},KMJX:{id:"KMJX",city:"Miller Air Park",state:"NJ",lat:39.927,lon:-74.292},KMMU:{id:"KMMU",city:"Morristown Municipal",state:"NJ",lat:40.8,lon:-74.41667},KNEL:{id:"KNEL",city:"Lakehurst Naval Air Station",state:"NJ",lat:40.03661,lon:-74.35251},KSMQ:{id:"KSMQ",city:"Somerville, Somerset Airport",state:"NJ",lat:40.6240499,lon:-74.66898},KTEB:{id:"KTEB",city:"Teterboro, Teterboro Airport",state:"NJ",lat:40.85889,lon:-74.05667},KTTN:{id:"KTTN",city:"Trenton, Mercer County Airport",state:"NJ",lat:40.27639,lon:-74.81639},KVAY:{id:"KVAY",city:"Mount Holly, South Jersey Regional Airport",state:"NJ",lat:39.94076,lon:-74.84071},KWRI:{id:"KWRI",city:"Mcguire Air Force Base",state:"NJ",lat:40.01667,lon:-74.6},KWWD:{id:"KWWD",city:"Wildwood, Cape May County Airport",state:"NJ",lat:39.01667,lon:-74.91667},KADW:{id:"KADW",city:"Camp Springs / Andrews Air Force Base",state:"MD",lat:38.81667,lon:-76.85},KANP:{id:"KANP",city:"LEEAIRPORT",state:"MD",lat:38.94287,lon:-76.5683899},KAPG:{id:"KAPG",city:"Phillips Army Air Field / Aberdeen",state:"MD",lat:39.46667,lon:-76.16667},KBWI:{id:"KBWI",city:"Baltimore, Baltimore-Washington International Airport",state:"MD",lat:39.17329,lon:-76.68404},KCGE:{id:"KCGE",city:"Cambridge-Dorchester Airport",state:"MD",lat:38.5393,lon:-76.0304},KCGS:{id:"KCGS",city:"College Park Airport",state:"MD",lat:38.9806,lon:-76.9223},KDMW:{id:"KDMW",city:"Carroll County Regional Jack B Poage Field",state:"MD",lat:39.6083,lon:-77.0077},KEDG:{id:"KEDG",city:"WEIDE",state:"MD",lat:39.39205,lon:-76.29106},KESN:{id:"KESN",city:"Easton / Newman Field",state:"MD",lat:38.8,lon:-76.06667},KFDK:{id:"KFDK",city:"Frederick Municipal Airport",state:"MD",lat:39.41775,lon:-77.36982},KFME:{id:"KFME",city:"Fort Meade / Tipton",state:"MD",lat:39.0833299,lon:-76.76667},KGAI:{id:"KGAI",city:"Gaithersburg - Montgomery County Airport",state:"MD",lat:39.16957,lon:-77.16551},KHGR:{id:"KHGR",city:"Hagerstown, Washington County Regional Airport",state:"MD",lat:39.70583,lon:-77.73},KMTN:{id:"KMTN",city:"Baltimore / Martin",state:"MD",lat:39.3333299,lon:-76.41667},KNAK:{id:"KNAK",city:"Annapolis, United States Naval Academy",state:"MD",lat:38.99125,lon:-76.48907},KNHK:{id:"KNHK",city:"Patuxent River, Naval Air Station",state:"MD",lat:38.27861,lon:-76.41389},KNUI:{id:"KNUI",city:"St. Inigoes, Webster Field, Naval Electronic Systems Engineering Activity",state:"MD",lat:38.14889,lon:-76.42},KOXB:{id:"KOXB",city:"Ocean City, Ocean City Municipal Airport",state:"MD",lat:38.31056,lon:-75.12389},KRSP:{id:"KRSP",city:"Camp David",state:"MD",lat:39.645,lon:-77.468},KSBY:{id:"KSBY",city:"Salisbury, Salisbury-Ocean City Wicomico County Regional Airport",state:"MD",lat:38.34056,lon:-75.51028},KVKX:{id:"KVKX",city:"POTOMAC",state:"MD",lat:38.74761,lon:-76.95719},KAIK:{id:"KAIK",city:"Aiken Municipal Airport",state:"SC",lat:33.649,lon:-81.685},KAND:{id:"KAND",city:"Anderson, Anderson County Airport",state:"SC",lat:34.49778,lon:-82.70972},KAQX:{id:"KAQX",city:"Allendale County Airport",state:"SC",lat:32.9951,lon:-81.2703},KARW:{id:"KARW",city:"Beaufort County Airport",state:"SC",lat:32.412,lon:-80.634},KBBP:{id:"KBBP",city:"Marlboro County Jetport",state:"SC",lat:34.622,lon:-79.734},KBNL:{id:"KBNL",city:"Barnwell Regional Airport",state:"SC",lat:33.258,lon:-81.388},KCAE:{id:"KCAE",city:"Columbia, Columbia Metropolitan Airport",state:"SC",lat:33.94194,lon:-81.11806},KCDN:{id:"KCDN",city:"Camden Woodward Field",state:"SC",lat:34.284,lon:-80.565},KCEU:{id:"KCEU",city:"Clemson, Clemson-Oconee County Airport",state:"SC",lat:34.67222,lon:-82.88139},KCHS:{id:"KCHS",city:"Charleston, Charleston Air Force Base",state:"SC",lat:32.89889,lon:-80.04056},KCKI:{id:"KCKI",city:"Kingstree Williamsburg Regional Airport",state:"SC",lat:33.717,lon:-79.857},KCQW:{id:"KCQW",city:"Cheraw Municipal Lynch Bellinger Field",state:"SC",lat:34.713,lon:-79.9569999},KCRE:{id:"KCRE",city:"North Myrtle Beach Grand Strand Airport",state:"SC",lat:33.81619,lon:-78.7204299},KCUB:{id:"KCUB",city:"Columbia - Jim Hamilton L.B. Owens Airport",state:"SC",lat:33.97083,lon:-80.99444},KDCM:{id:"KDCM",city:"Chester Catawba Regional Airport",state:"SC",lat:34.789,lon:-81.196},KDYB:{id:"KDYB",city:"Summerville Airport",state:"SC",lat:33.063,lon:-80.279},KEOE:{id:"KEOE",city:"Newberry County Airport",state:"SC",lat:34.309,lon:-81.64},KFDW:{id:"KFDW",city:"Winnsboro/Fairfield County Airport",state:"SC",lat:34.315,lon:-81.109},KFLO:{id:"KFLO",city:"Florence - Florence Regional Airport",state:"SC",lat:34.1877799,lon:-79.73083},KGGE:{id:"KGGE",city:"Georgetown County Airport ",state:"SC",lat:33.3117,lon:-79.3196},KGMU:{id:"KGMU",city:"Greenville Downtown Airport",state:"SC",lat:34.84873,lon:-82.35004},KGRD:{id:"KGRD",city:"Greenwood, Greenwood County Airport",state:"SC",lat:34.24722,lon:-82.15472},KGSP:{id:"KGSP",city:"Greer, Greenville-Spartanburg Airport",state:"SC",lat:34.88389,lon:-82.22083},KGYH:{id:"KGYH",city:"Greenville-Donaldson Center Airport",state:"SC",lat:34.7583,lon:-82.3764},KHVS:{id:"KHVS",city:"Hartsville Regional Airport",state:"SC",lat:34.403,lon:-80.119},KHXD:{id:"KHXD",city:"Hilton Head Island, Hilton Head Airport",state:"SC",lat:32.21667,lon:-80.7},KHYW:{id:"KHYW",city:"Conway Horry County Airport",state:"SC",lat:33.829,lon:-79.122},KJZI:{id:"KJZI",city:"Charleston Executive Airport",state:"SC",lat:32.701,lon:-80.003},KLKR:{id:"KLKR",city:"Lancaster County-mc Whirter Field",state:"SC",lat:34.723,lon:-80.855},KLQK:{id:"KLQK",city:"Pickens County Airport",state:"SC",lat:34.80997,lon:-82.70289},KLRO:{id:"KLRO",city:"Mount Pleasant Regional-Faison Field",state:"SC",lat:32.898,lon:-79.783},KLUX:{id:"KLUX",city:"Laurens County Airport",state:"SC",lat:34.507,lon:-81.947},KMAO:{id:"KMAO",city:"Marion County Airport",state:"SC",lat:34.181,lon:-79.3349999},KMKS:{id:"KMKS",city:"Moncks Corner Berkeley County",state:"SC",lat:33.1855,lon:-80.0361999},KMMT:{id:"KMMT",city:"McEntire Air National Guard Weather Facility Base",state:"SC",lat:33.91667,lon:-80.8},KMNI:{id:"KMNI",city:"Manning / Cooper Regional",state:"SC",lat:33.5833299,lon:-80.2166699},KMYR:{id:"KMYR",city:"Myrtle Beach International Airport",state:"SC",lat:33.67975,lon:-78.92833},KNBC:{id:"KNBC",city:"Beaufort, Marine Corps Air Station",state:"SC",lat:32.4936099,lon:-80.7030599},KOGB:{id:"KOGB",city:"Orangeburg, Orangeburg Municipal Airport",state:"SC",lat:33.46389,lon:-80.85361},KRBW:{id:"KRBW",city:"Walterboro Lowcountry Regional Airport",state:"SC",lat:32.921,lon:-80.641},KSMS:{id:"KSMS",city:"Sumter Airport",state:"SC",lat:33.995,lon:-80.361},KSPA:{id:"KSPA",city:"Spartanburg Memorial",state:"SC",lat:34.91667,lon:-81.95},KSSC:{id:"KSSC",city:"Shaw Air Force Base",state:"SC",lat:33.96667,lon:-80.48333},KUDG:{id:"KUDG",city:"Darlington, Darlington County Jetport Airport",state:"SC",lat:34.44917,lon:-79.89028},KUZA:{id:"KUZA",city:"Rock Hill, Rock Hill - York County Airport",state:"SC",lat:34.98389,lon:-81.05583},KXNO:{id:"KXNO",city:"North Air Force Auxiliary Field",state:"SC",lat:33.60949,lon:-81.08118},KAUG:{id:"KAUG",city:"Augusta, Augusta State Airport",state:"ME",lat:44.32056,lon:-69.79722},KBGR:{id:"KBGR",city:"Bangor, Bangor International Airport",state:"ME",lat:44.79722,lon:-68.81861},KBHB:{id:"KBHB",city:"Bar Harbor, Hancock County-Bar Harbor Airport",state:"ME",lat:44.45,lon:-68.36667},KBXM:{id:"KBXM",city:"BRUNSWICK",state:"ME",lat:43.8923599,lon:-69.93883},KCAR:{id:"KCAR",city:"Caribou, Caribou Municipal Airport",state:"ME",lat:46.86722,lon:-68.01333},KFVE:{id:"KFVE",city:"Frenchville, Northern Aroostook Regional Airport",state:"ME",lat:47.2849999,lon:-68.30722},KGNR:{id:"KGNR",city:"Greenville",state:"ME",lat:45.4646199,lon:-69.5538},KHUL:{id:"KHUL",city:"Houlton, Houlton International Airport",state:"ME",lat:46.12306,lon:-67.79194},KIWI:{id:"KIWI",city:"Wiscasset Airport",state:"ME",lat:43.96401,lon:-69.7107599},KIZG:{id:"KIZG",city:"Fryeburg, Eastern Slopes Regional Airport",state:"ME",lat:43.98917,lon:-70.95028},KLEW:{id:"KLEW",city:"Auburn-Lewiston",state:"ME",lat:44.05,lon:-70.28333},KMLT:{id:"KMLT",city:"Millinocket, Millinocket Municipal Airport",state:"ME",lat:45.64778,lon:-68.69194},KPQI:{id:"KPQI",city:"Presque Isle",state:"ME",lat:46.68333,lon:-68.05},KPWM:{id:"KPWM",city:"Portland, Portland International Jetport",state:"ME",lat:43.64222,lon:-70.30444},KRKD:{id:"KRKD",city:"Rockland, Knox County Regional Airport",state:"ME",lat:44.06667,lon:-69.1},KSFM:{id:"KSFM",city:"Sanford, Sanford Regional Airport",state:"ME",lat:43.4,lon:-70.7166699},KWVL:{id:"KWVL",city:"Waterville, Waterville Robert LaFleur Airport",state:"ME",lat:44.53333,lon:-69.68333},KBIX:{id:"KBIX",city:"Keesler Air Force Base / Biloxi",state:"MS",lat:30.41667,lon:-88.91667},KCBM:{id:"KCBM",city:"Columbus Air Force Base",state:"MS",lat:33.65,lon:-88.45},KCKM:{id:"KCKM",city:"Fletcher Field, Clarksdale",state:"MS",lat:34.2997,lon:-90.5123},KCRX:{id:"KCRX",city:"Corinth",state:"MS",lat:34.915,lon:-88.6035},KDLP:{id:"KDLP",city:"WEST DELTA OIL PLATFORM",state:"MS",lat:29.12,lon:-89.55},KGLH:{id:"KGLH",city:"Greenville, Mid Delta Regional Airport",state:"MS",lat:33.48278,lon:-90.98556},KGPT:{id:"KGPT",city:"Gulfport - Gulfport-Biloxi International Airport",state:"MS",lat:30.41194,lon:-89.08083},KGTR:{id:"KGTR",city:"Columbus/West Point/Starkville, Golden Triangle Regional Airport",state:"MS",lat:33.45,lon:-88.58333},KGWO:{id:"KGWO",city:"Greenwood, Greenwood-LeFlore Airport",state:"MS",lat:33.4925,lon:-90.0836099},KHBG:{id:"KHBG",city:"Hattiesburg, Bobby L Chain Municipal Airport",state:"MS",lat:31.26945,lon:-89.25613},KHEZ:{id:"KHEZ",city:"Natchez, Hardy-Anders Field Natchez-Adams County Airport",state:"MS",lat:31.61593,lon:-91.29724},KHKS:{id:"KHKS",city:"Jackson, Hawkins Field Airport",state:"MS",lat:32.33472,lon:-90.2225},KHSA:{id:"KHSA",city:"Bay St. Louis, Stennis International Airport",state:"MS",lat:30.36778,lon:-89.45472},KJAN:{id:"KJAN",city:"Jackson, Jackson International Airport",state:"MS",lat:32.3197199,lon:-90.0775},KJVW:{id:"KJVW",city:"JB Williams Airport",state:"MS",lat:32.30447,lon:-90.41053},KLUL:{id:"KLUL",city:"LAUREL/NOBLE FIELD",state:"MS",lat:31.67,lon:-89.17},KMBO:{id:"KMBO",city:"Madison Bruce Campbell Field Airport",state:"MS",lat:32.4384,lon:-90.1014},KMCB:{id:"KMCB",city:"McComb, McComb / Pike County / John E Lewis Field Airport",state:"MS",lat:31.17833,lon:-90.47194},KMEI:{id:"KMEI",city:"Meridian, Key Field",state:"MS",lat:32.33806,lon:-88.74778},KMJD:{id:"KMJD",city:"Picayune Municipal Airport",state:"MS",lat:30.48747,lon:-89.65119},KNMM:{id:"KNMM",city:"Meridian, Meridian Naval Air Station - McCain Field",state:"MS",lat:32.55194,lon:-88.55528},KOLV:{id:"KOLV",city:"Olive Branch, Olive Branch Airport",state:"MS",lat:34.97889,lon:-89.78694},KPIB:{id:"KPIB",city:"Hattiesburg/Laurel, Hattiesburg-Laurel Regional Airport",state:"MS",lat:31.46667,lon:-89.33333},KPMU:{id:"KPMU",city:"Batesville Panola County",state:"MS",lat:34.3635,lon:-89.8929},KPQL:{id:"KPQL",city:"Moss Point - Trent Lott International Airport",state:"MS",lat:30.46305,lon:-88.53155},KSTF:{id:"KSTF",city:"George M Bryan Airport, Starkville",state:"MS",lat:33.4331,lon:-88.8486},KTUP:{id:"KTUP",city:"Tupelo, Tupelo Regional Airport",state:"MS",lat:34.26806,lon:-88.77},KUOX:{id:"KUOX",city:"Oxford, University-Oxford Airport",state:"MS",lat:34.38444,lon:-89.53556},KUTA:{id:"KUTA",city:"Tunica, Tunica Municipal Airport",state:"MS",lat:34.68083,lon:-90.34639},KVKS:{id:"KVKS",city:"Vicksburg Municipal",state:"MS",lat:32.23333,lon:-90.93333},KBAM:{id:"KBAM",city:"Battle Mountain - Lander County Airport",state:"NV",lat:40.5989999,lon:-116.8743},KBVU:{id:"KBVU",city:"Boulder City Municipal Airport",state:"NV",lat:35.9475,lon:-114.8611},KCXP:{id:"KCXP",city:"Carson City Airport",state:"NV",lat:39.19056,lon:-119.73191},KDRA:{id:"KDRA",city:"Mercury, Desert Rock Airport",state:"NV",lat:36.6207,lon:-116.02868},KEKO:{id:"KEKO",city:"Elko, Elko Regional Airport",state:"NV",lat:40.8240399,lon:-115.78635},KELY:{id:"KELY",city:"Ely, Ely Airport",state:"NV",lat:39.295,lon:-114.84528},KHND:{id:"KHND",city:"Las Vegas - Henderson Executive Airport",state:"NV",lat:35.97665,lon:-115.13221},KHTH:{id:"KHTH",city:"Hawthorne Industrial Airport",state:"NV",lat:38.54482,lon:-118.63137},KINS:{id:"KINS",city:"Nellis AFB - Indian Springs Auxiliary Airfield",state:"NV",lat:36.58573,lon:-115.69008},KLAS:{id:"KLAS",city:"Las Vegas, McCarran International Airport",state:"NV",lat:36.07188,lon:-115.1634},KLOL:{id:"KLOL",city:"Lovelock, Derby Field Airport",state:"NV",lat:40.0683999,lon:-118.57017},KLSV:{id:"KLSV",city:"Nellis Air Force Base",state:"NV",lat:36.23333,lon:-115.03333},KMEV:{id:"KMEV",city:"Minden-Tahoe Airport",state:"NV",lat:38.9963,lon:-119.75},KNFL:{id:"KNFL",city:"Fallon, Naval Air Station",state:"NV",lat:39.43222,lon:-118.68556},KRNO:{id:"KRNO",city:"Reno, Reno Tahoe International Airport",state:"NV",lat:39.50776,lon:-119.76819},KRTS:{id:"KRTS",city:"Reno/Stead",state:"NV",lat:39.6682,lon:-119.8764},KTMT:{id:"KTMT",city:"Austin Airport",state:"NV",lat:39.46794,lon:-117.19745},KTPH:{id:"KTPH",city:"Tonopah, Tonopah Airport",state:"NV",lat:38.06028,lon:-117.08722},KVGT:{id:"KVGT",city:"Las Vegas, North Las Vegas Airport",state:"NV",lat:36.21205,lon:-115.19395},KWMC:{id:"KWMC",city:"Winnemucca, Winnemucca Municipal Airport",state:"NV",lat:40.90194,lon:-117.80722},KAFO:{id:"KAFO",city:"Afton WY",state:"WY",lat:42.7113299,lon:-110.94217},KARL:{id:"KARL",city:"I80 - Arlington",state:"WY",lat:41.5980599,lon:-106.21487},KBFU:{id:"KBFU",city:"WY59 - Belle Fourche",state:"WY",lat:43.93253,lon:-105.4467},KBIT:{id:"KBIT",city:"I80/US30 - Bitter Creek",state:"WY",lat:41.64599,lon:-108.5836},KBPI:{id:"KBPI",city:"Big Piney - Marbleton Airport",state:"WY",lat:42.57805,lon:-110.10972},KBRX:{id:"KBRX",city:"I25/US87 - Bordeaux Interchange",state:"WY",lat:41.93066,lon:-104.9436},KBVR:{id:"KBVR",city:"US287/WY789 - Beaver Rim",state:"WY",lat:42.58565,lon:-108.28199},KBYG:{id:"KBYG",city:"Buffalo - Johnson County Airport",state:"WY",lat:44.38122,lon:-106.71947},KCHJ:{id:"KCHJ",city:"WY296 - Chief Joseph",state:"WY",lat:44.73997,lon:-109.38088},KCMS:{id:"KCMS",city:"I80/US30 - Peru Hill",state:"WY",lat:41.54958,lon:-109.60197},KCOD:{id:"KCOD",city:"Cody",state:"WY",lat:44.51667,lon:-109.01667},KCPR:{id:"KCPR",city:"Casper, Natrona County International Airport",state:"WY",lat:42.8975,lon:-106.47306},KCTD:{id:"KCTD",city:"I80/US30 - Continental Divide",state:"WY",lat:41.71586,lon:-107.78256},KCYS:{id:"KCYS",city:"Cheyenne, Cheyenne Airport",state:"WY",lat:41.15789,lon:-104.80812},KDGW:{id:"KDGW",city:"Douglas, Converse County Airport",state:"WY",lat:42.79417,lon:-105.38194},KDHS:{id:"KDHS",city:"I90 - Dead Horse",state:"WY",lat:44.21906,lon:-106.10478},KDRC:{id:"KDRC",city:"I25 - Deer Creek",state:"WY",lat:42.83687,lon:-105.86063},KDUB:{id:"KDUB",city:"Dubois Municipal Airport",state:"WY",lat:43.5484,lon:-109.6903},KDWX:{id:"KDWX",city:"Dixon Airport",state:"WY",lat:41.03704,lon:-107.49976},KEAN:{id:"KEAN",city:"Phifer Airfield - Wheatland",state:"WY",lat:42.05472,lon:-104.93711},KECS:{id:"KECS",city:"Mondell Field",state:"WY",lat:43.8854,lon:-104.3179},KEHY:{id:"KEHY",city:"Elk Mountain AWOS",state:"WY",lat:41.7253,lon:-106.4594},KEMM:{id:"KEMM",city:"KEMMERER",state:"WY",lat:41.82,lon:-110.56},KEVW:{id:"KEVW",city:"Evanston, Evanston-Uinta County Burns Field",state:"WY",lat:41.27306,lon:-111.03056},KFBR:{id:"KFBR",city:"Fort Bridger WY",state:"WY",lat:41.392,lon:-110.40683},KFEW:{id:"KFEW",city:"Francis E Warren Air Force Base Heliport",state:"WY",lat:41.13332,lon:-104.8671899},KFIR:{id:"KFIR",city:"I80/US189 - First Divide",state:"WY",lat:41.27649,lon:-110.80066},KGCC:{id:"KGCC",city:"Gillette, Gillette-Campbell County Airport",state:"WY",lat:44.33944,lon:-105.54194},KGEY:{id:"KGEY",city:"South Big Horn County Airport",state:"WY",lat:44.5174,lon:-108.0752},KGUN:{id:"KGUN",city:"US85 - Gun Barrel",state:"WY",lat:41.44368,lon:-104.34428},KGUR:{id:"KGUR",city:"Camp Guernsey",state:"WY",lat:42.2597,lon:-104.7283},KHLD:{id:"KHLD",city:"US20/US26 - Hiland",state:"WY",lat:43.0923,lon:-107.32198},KHSG:{id:"KHSG",city:"Hot Springs County Airport",state:"WY",lat:43.7136,lon:-108.3897},KIDV:{id:"KIDV",city:"I25/US87 - I-25 Divide",state:"WY",lat:43.89864,lon:-106.63833},KIKA:{id:"KIKA",city:"I90 - Inyan Kara",state:"WY",lat:44.29414,lon:-104.62926},KJAC:{id:"KJAC",city:"Jackson, Jackson Hole Airport",state:"WY",lat:43.6,lon:-110.73333},KLAR:{id:"KLAR",city:"Laramie Regional Airport",state:"WY",lat:41.3165,lon:-105.67287},KLND:{id:"KLND",city:"Lander",state:"WY",lat:42.81472,lon:-108.72806},KMTR:{id:"KMTR",city:"WY120 - Meeteetse Rim",state:"WY",lat:44.27011,lon:-108.87343},KPAT:{id:"KPAT",city:"WY220 - Pathfinder",state:"WY",lat:42.5581,lon:-106.8453399},KPER:{id:"KPER",city:"I80/US30 - Green River Tunnel East",state:"WY",lat:41.53186,lon:-109.45995},KPNA:{id:"KPNA",city:"Pinedale, Ralph Wenz Field Airport",state:"WY",lat:42.79528,lon:-109.80694},KPOY:{id:"KPOY",city:"Powell Municipal Airport",state:"WY",lat:44.8671999,lon:-108.7934},KPUM:{id:"KPUM",city:"US287 - Pumpkin Vine",state:"WY",lat:41.05218,lon:-105.46906},KREC:{id:"KREC",city:"WY28 - Lower Red Canyon",state:"WY",lat:42.61795,lon:-108.61093},KRIW:{id:"KRIW",city:"Riverton Regional Airport",state:"WY",lat:43.06219,lon:-108.44701},KRKS:{id:"KRKS",city:"Rock Springs, Rock Springs-Sweetwater County Airport",state:"WY",lat:41.59417,lon:-109.06528},KRWL:{id:"KRWL",city:"Rawlins Municipal Airport",state:"WY",lat:41.80648,lon:-107.19516},KSAA:{id:"KSAA",city:"Saratoga WY",state:"WY",lat:41.44483,lon:-106.8235},KSGE:{id:"KSGE",city:"US30 - Sage Junction",state:"WY",lat:41.82447,lon:-110.90764},KSHC:{id:"KSHC",city:"WY372 - Shute Creek",state:"WY",lat:41.94409,lon:-110.00399},KSHR:{id:"KSHR",city:"Sheridan County Airport",state:"WY",lat:44.7603099,lon:-106.97411},KSKL:{id:"KSKL",city:"WY230 - Skyline",state:"WY",lat:41.13753,lon:-106.57687},KSOU:{id:"KSOU",city:"WY28 - South Pass",state:"WY",lat:42.47752,lon:-108.8444},KTBX:{id:"KTBX",city:"Boysen",state:"WY",lat:43.4667,lon:-108.2333},KTET:{id:"KTET",city:"WY22 - Teton Pass",state:"WY",lat:43.49873,lon:-110.9562},KTMH:{id:"KTMH",city:"I25/US87 - Twenty Mile Hill",state:"WY",lat:43.12271,lon:-106.33705},KTOR:{id:"KTOR",city:"Torrington Municipal Airport",state:"WY",lat:42.06134,lon:-104.15842},KVDW:{id:"KVDW",city:"I80/US30 - Vedauwoo",state:"WY",lat:41.15687,lon:-105.40237},KWRL:{id:"KWRL",city:"Worland, Worland Municipal Airport",state:"WY",lat:43.9658299,lon:-107.95083},KWTR:{id:"KWTR",city:"I25/US87 - Whitaker",state:"WY",lat:41.41772,lon:-104.87502},KWYH:{id:"KWYH",city:"I25/US87 - Wyo Hill",state:"WY",lat:41.04746,lon:-104.8901},KAAS:{id:"KAAS",city:"Taylor County Airport",state:"KY",lat:37.35828,lon:-85.30942},KBRY:{id:"KBRY",city:"Samuels Field Airport",state:"KY",lat:37.81433,lon:-85.49964},KBWG:{id:"KBWG",city:"Bowling Green, Bowling Green-Warren County Regional Airport",state:"KY",lat:36.96444,lon:-86.41944},KBYL:{id:"KBYL",city:"Williamsburg-Whitley County Airport",state:"KY",lat:36.7954099,lon:-84.2012699},KCEY:{id:"KCEY",city:"Murray Kyle Oakley Field, KY",state:"KY",lat:36.6646,lon:-88.3728},KCPF:{id:"KCPF",city:"Wendell H Ford Airport",state:"KY",lat:37.38736,lon:-83.26161},KCVG:{id:"KCVG",city:"Cincinnati/Northern Kentucky International Airport",state:"KY",lat:39.04456,lon:-84.67229},KDVK:{id:"KDVK",city:"Stuart Powell Field Airport",state:"KY",lat:37.5775751,lon:-84.7694978},KDWU:{id:"KDWU",city:"Ashland Regional Airport",state:"KY",lat:38.5545,lon:-82.738},KEHR:{id:"KEHR",city:"Henderson City",state:"KY",lat:37.81667,lon:-87.68333},KEKQ:{id:"KEKQ",city:"Monticello, Wayne County Airport",state:"KY",lat:36.85528,lon:-84.85611},KEKX:{id:"KEKX",city:"Elizabethtown Addington Field Airport",state:"KY",lat:37.686,lon:-85.925},KFFT:{id:"KFFT",city:"Frankfort, Capital City Airport",state:"KY",lat:38.18472,lon:-84.90333},KFGX:{id:"KFGX",city:"Flemingsburg Fleming-Mason Airport",state:"KY",lat:38.5418,lon:-83.7434},KFTK:{id:"KFTK",city:"Fort Knox",state:"KY",lat:37.9,lon:-85.9666699},KGLW:{id:"KGLW",city:"Glasgow, Glasgow Municipal Airport",state:"KY",lat:37.03167,lon:-85.95361},KHOP:{id:"KHOP",city:"Fort Campbell U. S. Army Airfield",state:"KY",lat:36.66667,lon:-87.5},KIOB:{id:"KIOB",city:"Mount Sterling-Montgomery County Airport",state:"KY",lat:38.0575,lon:-83.9829},KJKL:{id:"KJKL",city:"Jackson, Carroll Airport",state:"KY",lat:37.5913899,lon:-83.31444},KLEX:{id:"KLEX",city:"Lexington Blue Grass Airport",state:"KY",lat:38.0339,lon:-84.6114599},KLOU:{id:"KLOU",city:"Louisville, Bowman Field Airport",state:"KY",lat:38.22778,lon:-85.66361},KLOZ:{id:"KLOZ",city:"London, London-Corbin Airport-Magee Field",state:"KY",lat:37.08944,lon:-84.06861},KOWB:{id:"KOWB",city:"Owensboro, Owensboro-Daviess County Airport",state:"KY",lat:37.74,lon:-87.16667},KPAH:{id:"KPAH",city:"Paducah, Barkley Regional Airport",state:"KY",lat:37.05639,lon:-88.77389},KPBX:{id:"KPBX",city:"Pikeville Pike County Airport and Hatcher Field",state:"KY",lat:37.5587,lon:-82.5674},KRGA:{id:"KRGA",city:"Central Kentucky Regional Airport",state:"KY",lat:37.6308475,lon:-84.3323372},KSDF:{id:"KSDF",city:"Louisville Muhammad Ali International Airport",state:"KY",lat:38.17406,lon:-85.7365},KSJS:{id:"KSJS",city:"Big Sandy Regional Airport",state:"KY",lat:37.751,lon:-82.6367},KSME:{id:"KSME",city:"Somerset, Somerset-Pulaski County - J.T. Wilson Field Airport",state:"KY",lat:37.05417,lon:-84.615},KSYM:{id:"KSYM",city:"Clyde A. Thomas Regional Airport",state:"KY",lat:38.215,lon:-83.5874},KTWT:{id:"KTWT",city:"Sturgis, Sturgis Municipal Airport",state:"KY",lat:37.54083,lon:-87.9516699},KADF:{id:"KADF",city:"Dexter B Florence Memorial Field",state:"AR",lat:34.0998,lon:-93.0661},KARG:{id:"KARG",city:"Walnut Ridge Regional Airport",state:"AR",lat:36.12562,lon:-90.92148},KASG:{id:"KASG",city:"Springdale Municipal",state:"AR",lat:36.18333,lon:-94.11667},KAWM:{id:"KAWM",city:"West Memphis, West Memphis Municipal Airport",state:"AR",lat:35.13333,lon:-90.23333},KBPK:{id:"KBPK",city:"Baxter County Airport",state:"AR",lat:36.37056,lon:-92.47194},KBVX:{id:"KBVX",city:"Batesville, Batesville Regional Airport",state:"AR",lat:35.73333,lon:-91.65},KBYH:{id:"KBYH",city:"Eaker Air Force Base",state:"AR",lat:35.96667,lon:-89.95},KCCA:{id:"KCCA",city:"Clinton Memorial Airfield",state:"AR",lat:35.598,lon:-92.4516},KCDH:{id:"KCDH",city:"Camden / Harrell Field",state:"AR",lat:33.61667,lon:-92.76667},KCXW:{id:"KCXW",city:"Conway - Cantrell Field",state:"AR",lat:35.0199,lon:-92.5551},KDEQ:{id:"KDEQ",city:"De Queen, J Lynn Helms Sevier County Airport",state:"AR",lat:34.04694,lon:-94.39944},KELD:{id:"KELD",city:"South Arkansas Regional Airport",state:"AR",lat:33.22075,lon:-92.8139999},KFLP:{id:"KFLP",city:"Flippin, Marion County Regional Airport",state:"AR",lat:36.3,lon:-92.58333},KFSM:{id:"KFSM",city:"Fort Smith Regional Airport",state:"AR",lat:35.3335,lon:-94.36524},KFYV:{id:"KFYV",city:"Fayetteville, Drake Field",state:"AR",lat:36.01028,lon:-94.1677799},KHKA:{id:"KHKA",city:"Blytheville, Blytheville Municipal Airport",state:"AR",lat:35.93889,lon:-89.8325},KHOT:{id:"KHOT",city:"Hot Springs, Memorial Field Airport",state:"AR",lat:34.47806,lon:-93.09611},KHRO:{id:"KHRO",city:"Harrison, Boone County Airport",state:"AR",lat:36.26167,lon:-93.15472},KJBR:{id:"KJBR",city:"Jonesboro, Jonesboro Municipal Airport",state:"AR",lat:35.83722,lon:-90.64306},KLIT:{id:"KLIT",city:"Little Rock, Adams Field",state:"AR",lat:34.72667,lon:-92.23611},KLLQ:{id:"KLLQ",city:"Monticello, Monticello Municipal Airport/Ellis Field",state:"AR",lat:33.63833,lon:-91.75111},KLRF:{id:"KLRF",city:"Little Rock Air Force Base",state:"AR",lat:34.91667,lon:-92.15},KMEZ:{id:"KMEZ",city:"Mena, Mena Intermountain Municipal Airport",state:"AR",lat:34.54528,lon:-94.2025},KMWT:{id:"KMWT",city:"Mount Ida",state:"AR",lat:34.55,lon:-93.58333},KORK:{id:"KORK",city:"North Little Rock Municipal Airport",state:"AR",lat:34.83314,lon:-92.25414},KPBF:{id:"KPBF",city:"Pine Bluff, Grider Field Airport",state:"AR",lat:34.175,lon:-91.93472},KROG:{id:"KROG",city:"Rogers - Rogers Executive Airport - Carter Field",state:"AR",lat:36.36667,lon:-94.1},KRUE:{id:"KRUE",city:"Russelville Municipal Airport",state:"AR",lat:35.25737,lon:-93.0949399},KSGT:{id:"KSGT",city:"Stuttgart, Stuttgart Municipal Airport",state:"AR",lat:34.6,lon:-91.56667},KSLG:{id:"KSLG",city:"Siloam Springs, Smith Field Airport",state:"AR",lat:36.2,lon:-94.48333},KSRC:{id:"KSRC",city:"Searcy Municipal Airport",state:"AR",lat:35.21349,lon:-91.7392799},KSUZ:{id:"KSUZ",city:"Saline County Regional Airport",state:"AR",lat:34.59039,lon:-92.47944},KTXK:{id:"KTXK",city:"Texarkana, Texarkana Regional-Webb Field",state:"AR",lat:33.45611,lon:-93.9875},KVBT:{id:"KVBT",city:"Bentonville, Bentonville Municipal Airport/Louise M Thaden Field",state:"AR",lat:36.35,lon:-94.2166699},KXNA:{id:"KXNA",city:"Northwest Arkansas Regional Airport",state:"AR",lat:36.28977,lon:-94.3114499},KBOI:{id:"KBOI",city:"Boise Air Terminal",state:"ID",lat:43.56704,lon:-116.24053},KBYI:{id:"KBYI",city:"Burley Municipal Airport",state:"ID",lat:42.54525,lon:-113.7686},KCOE:{id:"KCOE",city:"Coeur d'Alene Airport - Pappy Boyington Field",state:"ID",lat:47.76667,lon:-116.81667},KDIJ:{id:"KDIJ",city:"Driggs, Driggs-Reed Memorial Airport",state:"ID",lat:43.74167,lon:-111.09778},KEUL:{id:"KEUL",city:"Caldwell - Caldwell Industrial Airport",state:"ID",lat:43.64055,lon:-116.63017},KGIC:{id:"KGIC",city:"Grangeville - Idaho County Airport",state:"ID",lat:45.94111,lon:-116.13257},KGNG:{id:"KGNG",city:"Gooding Municipal Airport",state:"ID",lat:42.91716,lon:-114.76516},KIDA:{id:"KIDA",city:"Idaho Falls Regional Airport",state:"ID",lat:43.5208299,lon:-112.06611},KJER:{id:"KJER",city:"Jerome County Airport",state:"ID",lat:42.72736,lon:-114.45469},KLLJ:{id:"KLLJ",city:"Challis - Challis Airport",state:"ID",lat:44.523,lon:-114.21611},KLWS:{id:"KLWS",city:"Lewiston, Lewiston-Nez Perce County Airport",state:"ID",lat:46.37472,lon:-117.01444},KMAN:{id:"KMAN",city:"Nampa Municipal Airport",state:"ID",lat:43.5813,lon:-116.5231},KMUO:{id:"KMUO",city:"Mountain Home Air Force Base",state:"ID",lat:43.05,lon:-115.86667},KMYL:{id:"KMYL",city:"McCall Airport",state:"ID",lat:44.89425,lon:-116.09978},KPIH:{id:"KPIH",city:"Pocatello, Pocatello Regional Airport",state:"ID",lat:42.92028,lon:-112.57111},KRXE:{id:"KRXE",city:"Rexburg, Rexburg-Madison County Airport",state:"ID",lat:43.83167,lon:-111.80611},KSMN:{id:"KSMN",city:"Salmon, Lemhi County Airport",state:"ID",lat:45.11667,lon:-113.88333},KSNT:{id:"KSNT",city:"Stanley, Stanley Ranger Station",state:"ID",lat:44.20861,lon:-114.93444},KSUN:{id:"KSUN",city:"Hailey, Friedman Memorial Airport",state:"ID",lat:43.5,lon:-114.3},KAID:{id:"KAID",city:"Anderson Municipal Airport",state:"IN",lat:40.10612,lon:-85.60977},KANQ:{id:"KANQ",city:"Angola Tri-State Steuben County Airport",state:"IN",lat:41.6404,lon:-85.0851},KASW:{id:"KASW",city:"Warsaw, Warsaw Municipal Airport",state:"IN",lat:41.27444,lon:-85.84},KBAK:{id:"KBAK",city:"Columbus / Bakalar",state:"IN",lat:39.26667,lon:-85.9},KBMG:{id:"KBMG",city:"Bloomington, Monroe County Airport",state:"IN",lat:39.14306,lon:-86.61667},KCFJ:{id:"KCFJ",city:"Crawfordsville Municipal Airport",state:"IN",lat:39.9756,lon:-86.9199},KDCY:{id:"KDCY",city:"Daviess County Airport",state:"IN",lat:38.7004,lon:-87.1297},KEKM:{id:"KEKM",city:"Elkhart Municipal",state:"IN",lat:41.71667,lon:-86},KEVV:{id:"KEVV",city:"Evansville, Evansville Regional Airport",state:"IN",lat:38.0430599,lon:-87.52028},KEYE:{id:"KEYE",city:"Indianapolis, Eagle Creek Airpark",state:"IN",lat:39.825,lon:-86.29583},KFKR:{id:"KFKR",city:"Frankfort Municipal Airport",state:"IN",lat:40.2734,lon:-86.5622},KFRH:{id:"KFRH",city:"French Lick Municipal Airport",state:"IN",lat:38.50622,lon:-86.63694},KFWA:{id:"KFWA",city:"Fort Wayne International Airport",state:"IN",lat:40.97251,lon:-85.20637},KGEZ:{id:"KGEZ",city:"Shelbyville Municipal Airport",state:"IN",lat:39.58546,lon:-85.79982},KGGP:{id:"KGGP",city:"Logansport/Cass County Airport",state:"IN",lat:40.711,lon:-86.373},KGPC:{id:"KGPC",city:"Putnam County Regional Airport",state:"IN",lat:39.6354,lon:-86.8155},KGSH:{id:"KGSH",city:"Goshen, Goshen Municipal Airport",state:"IN",lat:41.52611,lon:-85.78667},KGUS:{id:"KGUS",city:"Grissom Air Force Base / Peru",state:"IN",lat:40.65,lon:-86.15},KGWB:{id:"KGWB",city:"Auburn De Kalb County Airport",state:"IN",lat:41.307,lon:-85.0639999},KGYY:{id:"KGYY",city:"Gary Regional Airport",state:"IN",lat:41.61212,lon:-87.40908},KHHG:{id:"KHHG",city:"Huntington Municipal Airport",state:"IN",lat:40.8529,lon:-85.4571},KHLB:{id:"KHLB",city:"Batesville Airport",state:"IN",lat:39.34313,lon:-85.25843},KHNB:{id:"KHNB",city:"Huntingburg",state:"IN",lat:38.25,lon:-86.95},KHUF:{id:"KHUF",city:"Terre Haute Regional Airport",state:"IN",lat:39.4429,lon:-87.32207},KIMS:{id:"KIMS",city:"Madison Municipal Airport",state:"IN",lat:38.7589,lon:-85.4655},KIND:{id:"KIND",city:"Indianapolis International Airport",state:"IN",lat:39.72518,lon:-86.2816},KJVY:{id:"KJVY",city:"Clark Regional Airport",state:"IN",lat:38.36661,lon:-85.73814},KLAF:{id:"KLAF",city:"Lafayette, Purdue University Airport",state:"IN",lat:40.4125,lon:-86.9475},KMCX:{id:"KMCX",city:"Monticello White County Airport",state:"IN",lat:40.7087999,lon:-86.7668},KMGC:{id:"KMGC",city:"Michigan City Municipal Airport",state:"IN",lat:41.7033,lon:-86.8212},KMIE:{id:"KMIE",city:"Muncie, Delaware County-Johnson Field",state:"IN",lat:40.23417,lon:-85.39361},KMQJ:{id:"KMQJ",city:"Indianapolis Mount Comfort Airport",state:"IN",lat:39.8435,lon:-85.8971},KMZZ:{id:"KMZZ",city:"Marion Municipal Airport",state:"IN",lat:40.49,lon:-85.68},KOKK:{id:"KOKK",city:"Kokomo, Kokomo Municipal Airport",state:"IN",lat:40.53333,lon:-86.06667},KOXI:{id:"KOXI",city:"Starke County Airport",state:"IN",lat:41.33,lon:-86.665},KPLD:{id:"KPLD",city:"Portland Municipal Airport",state:"IN",lat:40.45158,lon:-84.98903},KPPO:{id:"KPPO",city:"La Porte Municipal Airport",state:"IN",lat:41.5725,lon:-86.7345},KRCR:{id:"KRCR",city:"Rochester Fulton County Airport",state:"IN",lat:41.06553,lon:-86.18169},KRID:{id:"KRID",city:"Richmond Municipal Airport",state:"IN",lat:39.7572,lon:-84.8428},KRZL:{id:"KRZL",city:"Rensselaer Jasper County Airport",state:"IN",lat:40.94789,lon:-87.18258},KSBN:{id:"KSBN",city:"South Bend International Airport",state:"IN",lat:41.7088899,lon:-86.31861},KTYQ:{id:"KTYQ",city:"INDIANAPOLIS",state:"IN",lat:40.03066,lon:-86.2514999},KVPZ:{id:"KVPZ",city:"Valparaiso Porter County Municipal Airport",state:"IN",lat:41.45349,lon:-86.99805},KABQ:{id:"KABQ",city:"Albuquerque, Albuquerque International Airport",state:"NM",lat:35.04167,lon:-106.61472},KAEG:{id:"KAEG",city:"Albuquerque, Double Eagle II Airport",state:"NM",lat:35.145,lon:-106.795},KALM:{id:"KALM",city:"Alamogordo-White",state:"NM",lat:32.83512,lon:-105.99408},KATS:{id:"KATS",city:"Artesia Municipal Airport",state:"NM",lat:32.85239,lon:-104.46444},KAXX:{id:"KAXX",city:"Angel Fire Airport",state:"NM",lat:36.42586,lon:-105.29028},KBRG:{id:"KBRG",city:"Belen Regional Airport",state:"NM",lat:34.64586,lon:-106.83634},KCAO:{id:"KCAO",city:"Clayton Municipal Airpark",state:"NM",lat:36.44834,lon:-103.15367},KCNM:{id:"KCNM",city:"Carlsbad, Cavern City Air Terminal Airport",state:"NM",lat:32.3375,lon:-104.26333},KCQC:{id:"KCQC",city:"Clines Corners",state:"NM",lat:35,lon:-105.66667},KCVN:{id:"KCVN",city:"Clovis Municipal Airport",state:"NM",lat:34.42274,lon:-103.0802},KCVS:{id:"KCVS",city:"Cannon Air Force Base / Clovis",state:"NM",lat:34.38333,lon:-103.31667},KDMN:{id:"KDMN",city:"Deming Municipal Airport",state:"NM",lat:32.25927,lon:-107.72051},KDNA:{id:"KDNA",city:"Dona Ana County Jetport, Santa Teresa",state:"NM",lat:31.87495,lon:-106.69385},KFMN:{id:"KFMN",city:"Farmington, Four Corners Regional Airport",state:"NM",lat:36.7436099,lon:-108.22917},KGNT:{id:"KGNT",city:"Grants, Grants-Milan Municipal Airport",state:"NM",lat:35.16528,lon:-107.90222},KGUP:{id:"KGUP",city:"Gallup Municipal Airport",state:"NM",lat:35.50859,lon:-108.79316},KHMN:{id:"KHMN",city:"Holloman Air Force Base",state:"NM",lat:32.85,lon:-106.1},KHOB:{id:"KHOB",city:"Hobbs / Lea County",state:"NM",lat:32.68333,lon:-103.2166699},KLAM:{id:"KLAM",city:"Los Alamos Airport",state:"NM",lat:35.8796899,lon:-106.26869},KLRU:{id:"KLRU",city:"Las Cruces, Las Cruces International Airport",state:"NM",lat:32.28944,lon:-106.92194},KLVS:{id:"KLVS",city:"Las Vegas Municipal Airport",state:"NM",lat:35.65584,lon:-105.13852},KONM:{id:"KONM",city:"Socorro Municipal Airport",state:"NM",lat:34.02633,lon:-106.90372},KROW:{id:"KROW",city:"Roswell International Air Center Airport",state:"NM",lat:33.30737,lon:-104.50816},KRTN:{id:"KRTN",city:"Raton Municipal - Crews Field Airport",state:"NM",lat:36.741528,lon:-104.502183},KSAF:{id:"KSAF",city:"Santa Fe County Municipal Airport",state:"NM",lat:35.61097,lon:-106.09573},KSKX:{id:"KSKX",city:"Taos, Taos Regional Airport",state:"NM",lat:36.45,lon:-105.66667},KSRR:{id:"KSRR",city:"Sierra Blanca Regional Airport",state:"NM",lat:33.4667699,lon:-105.52778},KSVC:{id:"KSVC",city:"Grant County Airport",state:"NM",lat:32.63099,lon:-108.14658},KSXU:{id:"KSXU",city:"Santa Rosa Route 66 Airport",state:"NM",lat:34.93567,lon:-104.64256},KTCC:{id:"KTCC",city:"Tucumcari Municipal Airport",state:"NM",lat:35.18053,lon:-103.60145},KTCS:{id:"KTCS",city:"Truth Or Consequences, Truth Or Consequences Municipal Airport",state:"NM",lat:33.2366699,lon:-107.26806},KADH:{id:"KADH",city:"Ada, Ada Municipal Airport",state:"OK",lat:34.80444,lon:-96.67139},KADM:{id:"KADM",city:"Ardmore, Ardmore Municipal Airport",state:"OK",lat:34.30306,lon:-97.01944},KAVK:{id:"KAVK",city:"Alva, Alva Regional Airport",state:"OK",lat:36.77306,lon:-98.67},KAXS:{id:"KAXS",city:"Altus, Altus/Quartz Mountain Regional Airport",state:"OK",lat:34.69861,lon:-99.33806},KBKN:{id:"KBKN",city:"Blackwell-Tonkawa Municipal Airport",state:"OK",lat:36.7451099,lon:-97.34958},KBVO:{id:"KBVO",city:"Bartlesville, Bartlesville Municipal Airport",state:"OK",lat:36.76833,lon:-96.02611},KCHK:{id:"KCHK",city:"Chickasha, Chickasha Municipal Airport",state:"OK",lat:35.09611,lon:-97.96611},KCLK:{id:"KCLK",city:"Clinton, Clinton Regional Airport",state:"OK",lat:35.53806,lon:-98.92139},KCQB:{id:"KCQB",city:"Chandler, Chandler Municipal Airport",state:"OK",lat:35.72389,lon:-96.82028},KCSM:{id:"KCSM",city:"Clinton, Clinton-Sherman Airport",state:"OK",lat:35.35667,lon:-99.20361},KCUH:{id:"KCUH",city:"Cushing, Cushing Municipal Airport",state:"OK",lat:35.94972,lon:-96.77278},KDUA:{id:"KDUA",city:"Durant, Eaker Field Airport",state:"OK",lat:33.94222,lon:-96.39444},KDUC:{id:"KDUC",city:"Duncan, Halliburton Field Airport",state:"OK",lat:34.47083,lon:-97.9599999},KELK:{id:"KELK",city:"Elk City Regional Business Airport",state:"OK",lat:35.4308,lon:-99.3943},KEND:{id:"KEND",city:"Vance Air Force Base / Enid",state:"OK",lat:36.3333299,lon:-97.91667},KFDR:{id:"KFDR",city:"Frederick, Frederick Municipal Airport",state:"OK",lat:34.34444,lon:-98.98306},KFSI:{id:"KFSI",city:"Fort Sill",state:"OK",lat:34.6,lon:-98.4},KGAG:{id:"KGAG",city:"Gage, Gage Airport",state:"OK",lat:36.29667,lon:-99.76889},KGCM:{id:"KGCM",city:"Claremore, Claremore Regional Airport",state:"OK",lat:36.29444,lon:-95.47972},KGMJ:{id:"KGMJ",city:"Grove, Grove Municipal Airport",state:"OK",lat:36.60528,lon:-94.73861},KGOK:{id:"KGOK",city:"Guthrie, Guthrie Municipal Airport",state:"OK",lat:35.85194,lon:-97.4075},KGUY:{id:"KGUY",city:"Guymon / Guymon Municipal Airport",state:"OK",lat:36.6816699,lon:-101.50528},KGZL:{id:"KGZL",city:"Stigler",state:"OK",lat:35.2891,lon:-95.0939},KHBR:{id:"KHBR",city:"Hobart, Hobart Municipal Airport",state:"OK",lat:34.98944,lon:-99.0525},KHHW:{id:"KHHW",city:"Hugo Stan Stamper Municipal Airport",state:"OK",lat:34.0348,lon:-95.5419},KHMY:{id:"KHMY",city:"MULDROWARMY",state:"OK",lat:35.02638,lon:-97.23163},KHSD:{id:"KHSD",city:"Sundance Airport",state:"OK",lat:35.60183,lon:-97.70616},KJSV:{id:"KJSV",city:"Sallisaw, Sallisaw Municipal Airport",state:"OK",lat:35.43806,lon:-94.80278},KJWG:{id:"KJWG",city:"Watonga, Watonga Airport",state:"OK",lat:35.86472,lon:-98.42083},KLAW:{id:"KLAW",city:"Lawton, Lawton Municipal Airport",state:"OK",lat:34.5575,lon:-98.41667},KLTS:{id:"KLTS",city:"Altus Air Force Base",state:"OK",lat:34.65,lon:-99.26667},KMIO:{id:"KMIO",city:"Miami Regional Airport",state:"OK",lat:36.90922,lon:-94.8875},KMKO:{id:"KMKO",city:"Muskogee-Davis Regional Airport",state:"OK",lat:35.65694,lon:-95.35972},KMLC:{id:"KMLC",city:"McAlester, McAlester Regional Airport",state:"OK",lat:34.8822199,lon:-95.78306},KOJA:{id:"KOJA",city:"Weatherford, Thomas P Stafford Airport",state:"OK",lat:35.54472,lon:-98.66833},KOKC:{id:"KOKC",city:"Oklahoma City, Will Rogers World Airport",state:"OK",lat:35.38861,lon:-97.60028},KOKM:{id:"KOKM",city:"Okmulgee, Okmulgee Municipal Airport",state:"OK",lat:35.6680599,lon:-95.94861},KOUN:{id:"KOUN",city:"Norman / Max Westheimer",state:"OK",lat:35.2435,lon:-97.4708},KOWP:{id:"KOWP",city:"William R Pogue Municipal Airport",state:"OK",lat:36.1753,lon:-96.1518},KPNC:{id:"KPNC",city:"Ponca City, Ponca City Municipal Airport",state:"OK",lat:36.7305599,lon:-97.09972},KPVJ:{id:"KPVJ",city:"Pauls Valley, Pauls Valley Municipal Airport",state:"OK",lat:34.71111,lon:-97.22333},KPWA:{id:"KPWA",city:"Oklahoma City, Wiley Post Airport",state:"OK",lat:35.54111,lon:-97.64667},KRCE:{id:"KRCE",city:"Clarence E Page Municipal Airport",state:"OK",lat:35.4880799,lon:-97.82356},KRKR:{id:"KRKR",city:"Poteau, Robert S Kerr Airport",state:"OK",lat:35.02167,lon:-94.62139},KRQO:{id:"KRQO",city:"El Reno, El Reno Regional Airport",state:"OK",lat:35.4724999,lon:-98.00556},KRVS:{id:"KRVS",city:"Tulsa - Jones Jr. Airport",state:"OK",lat:36.04255,lon:-95.99005},KSNL:{id:"KSNL",city:"Shawnee, Shawnee Municipal Airport",state:"OK",lat:35.35722,lon:-96.94278},KSRE:{id:"KSRE",city:"Seminole, Seminole Municipal Airport",state:"OK",lat:35.27444,lon:-96.675},KSWO:{id:"KSWO",city:"Stillwater, Stillwater Regional Airport",state:"OK",lat:36.16222,lon:-97.08917},KTIK:{id:"KTIK",city:"Tinker Air Force Base",state:"OK",lat:35.41667,lon:-97.38333},KTQH:{id:"KTQH",city:"Tahlequah, Tahlequah Municipal Airport",state:"OK",lat:35.92889,lon:-95.00444},KTUL:{id:"KTUL",city:"Tulsa, Tulsa International Airport",state:"OK",lat:36.1975,lon:-95.88639},KWDG:{id:"KWDG",city:"Enid, Enid Woodring Regional Airport",state:"OK",lat:36.37917,lon:-97.79111},KWWR:{id:"KWWR",city:"Woodward, West Woodward Airport",state:"OK",lat:36.43667,lon:-99.5211099},KAIG:{id:"KAIG",city:"Langlade County Airport",state:"WI",lat:45.15659,lon:-89.11144},KARV:{id:"KARV",city:"Minocqua/Woodruff, Lakeland Airport/Noble F. Lee Memorial Field",state:"WI",lat:45.93333,lon:-89.73333},KASX:{id:"KASX",city:"John F Kennedy Memorial Airport",state:"WI",lat:46.54679,lon:-90.91841},KATW:{id:"KATW",city:"Appleton-Outagamie",state:"WI",lat:44.2595,lon:-88.51567},KAUW:{id:"KAUW",city:"Wausau Downtown Airport",state:"WI",lat:44.92759,lon:-89.62512},KBCK:{id:"KBCK",city:"Black River Falls Area Airport",state:"WI",lat:44.24996,lon:-90.84999},KBUU:{id:"KBUU",city:"Burlington Municipal Airport",state:"WI",lat:42.69088,lon:-88.308},KCMY:{id:"KCMY",city:"Sparta, Sparta / Fort McCoy Airport",state:"WI",lat:43.9583299,lon:-90.73778},KCWA:{id:"KCWA",city:"Mosinee",state:"WI",lat:44.77944,lon:-89.67098},KDLL:{id:"KDLL",city:"Baraboo Wisconsin Dells Airport",state:"WI",lat:43.52372,lon:-89.77345},KEAU:{id:"KEAU",city:"Chippewa Valley Regional Airport",state:"WI",lat:44.86668,lon:-91.488},KEFT:{id:"KEFT",city:"Monroe Municipal Airport",state:"WI",lat:42.61959,lon:-89.59309},KEGV:{id:"KEGV",city:"Eagle River Union Airport",state:"WI",lat:45.9309299,lon:-89.26702},KENW:{id:"KENW",city:"Kenosha, Kenosha Regional Airport",state:"WI",lat:42.595,lon:-87.9380599},KETB:{id:"KETB",city:"West Bend Municipal Airport",state:"WI",lat:43.42256,lon:-88.1326},KEZS:{id:"KEZS",city:"Shawano Municipal Airport",state:"WI",lat:44.787,lon:-88.56},KFLD:{id:"KFLD",city:"Fond Du Lac County Airport",state:"WI",lat:43.76955,lon:-88.49072},KGRB:{id:"KGRB",city:"Green Bay, Austin Straubel International Airport",state:"WI",lat:44.4794399,lon:-88.13667},KHYR:{id:"KHYR",city:"Sawyer County Airport",state:"WI",lat:46.03029,lon:-91.44259},KISW:{id:"KISW",city:"Wisconsin Rapids, Alexander Field South Wood County Airport",state:"WI",lat:44.35917,lon:-89.83694},KJVL:{id:"KJVL",city:"Janesville-Rock County",state:"WI",lat:42.62135,lon:-89.04186},KLNL:{id:"KLNL",city:"Land O' Lakes, Kings Land O' Lakes Airport",state:"WI",lat:46.1538899,lon:-89.21194},KLNR:{id:"KLNR",city:"Lone Rock Tri-County Regional Airport",state:"WI",lat:43.21108,lon:-90.18735},KLSE:{id:"KLSE",city:"La Crosse - La Crosse Regional Airport",state:"WI",lat:43.87944,lon:-91.25667},KLUM:{id:"KLUM",city:"Menomonie Municipal Airport-Score Field",state:"WI",lat:44.89363,lon:-91.86652},KMDZ:{id:"KMDZ",city:"Taylor County Airport",state:"WI",lat:45.10462,lon:-90.30253},KMFI:{id:"KMFI",city:"Marshfield, Marshfield Municipal Airport",state:"WI",lat:44.63806,lon:-90.1875},KMKE:{id:"KMKE",city:"Milwaukee, General Mitchell International Airport",state:"WI",lat:42.955,lon:-87.9044399},KMRJ:{id:"KMRJ",city:"Iowa County Airport",state:"WI",lat:42.88754,lon:-90.23147},KMSN:{id:"KMSN",city:"Madison, Dane County Regional-Truax Field",state:"WI",lat:43.14056,lon:-89.34528},KMTW:{id:"KMTW",city:"Manitowoc, Manitowoc County Airport",state:"WI",lat:44.13333,lon:-87.68333},KMWC:{id:"KMWC",city:"Milwaukee-Timmerman",state:"WI",lat:43.10961,lon:-88.03048},KOCQ:{id:"KOCQ",city:"Oconto J. Douglas Bake Municipal Airport",state:"WI",lat:44.8742,lon:-87.9096},KOEO:{id:"KOEO",city:"L O Simenstad Municipal Airport",state:"WI",lat:45.31084,lon:-92.6948},KOLG:{id:"KOLG",city:"Solon Springs Municipal Airport",state:"WI",lat:46.3148,lon:-91.8164},KOSH:{id:"KOSH",city:"Wittman Regional Airport",state:"WI",lat:43.96701,lon:-88.55814},KOVS:{id:"KOVS",city:"Boscobel, Boscobel Airport",state:"WI",lat:43.15611,lon:-90.6775},KPBH:{id:"KPBH",city:"Phillips / Price County",state:"WI",lat:45.7,lon:-90.4},KPCZ:{id:"KPCZ",city:"Waupaca Municipal Airport",state:"WI",lat:44.33425,lon:-89.02023},KPDC:{id:"KPDC",city:"Prairie Du Chien Municipal Airport",state:"WI",lat:43.01938,lon:-91.12112},KPVB:{id:"KPVB",city:"Platteville Municipal Airport",state:"WI",lat:42.69092,lon:-90.4412399},KRAC:{id:"KRAC",city:"Racine, Batten International Airport",state:"WI",lat:42.75861,lon:-87.81778},KRCX:{id:"KRCX",city:"Ladysmith - Rusk County Airport",state:"WI",lat:45.4935,lon:-90.9985},KRGK:{id:"KRGK",city:"Red Wing - Red Wing Regional Airport",state:"WI",lat:44.5926,lon:-92.48439},KRHI:{id:"KRHI",city:"Rhinelander, Rhinelander-Oneida County Airport",state:"WI",lat:45.63167,lon:-89.48222},KRNH:{id:"KRNH",city:"New Richmond Municipal Airport",state:"WI",lat:45.14762,lon:-92.53349},KRPD:{id:"KRPD",city:"Rice Lake, Rice Lake Regional-Carl's Field Airport",state:"WI",lat:45.4180599,lon:-91.77361},KRRL:{id:"KRRL",city:"Merrill, Merrill Municipal Airport",state:"WI",lat:45.19844,lon:-89.70996},KRYV:{id:"KRYV",city:"Watertown",state:"WI",lat:43.17016,lon:-88.72497},KRZN:{id:"KRZN",city:"Siren, Burnett County Airport",state:"WI",lat:45.82278,lon:-92.3725},KSBM:{id:"KSBM",city:"Sheboygan County Memorial Airport",state:"WI",lat:43.77483,lon:-87.84897},KSTE:{id:"KSTE",city:"Stevens Point Municipal Airport",state:"WI",lat:44.54371,lon:-89.53468},KSUE:{id:"KSUE",city:"Door County Cherryland Airport",state:"WI",lat:44.83941,lon:-87.42188},KSUW:{id:"KSUW",city:"Richard I. Bong Airport",state:"WI",lat:46.68335,lon:-92.09254},KTKV:{id:"KTKV",city:"Tomahawk Regional Airport",state:"WI",lat:45.46801,lon:-89.80962},KUBE:{id:"KUBE",city:"Cumberland",state:"WI",lat:45.506,lon:-91.9811},KUES:{id:"KUES",city:"Waukesha County Airport",state:"WI",lat:43.04245,lon:-88.24607},KUNU:{id:"KUNU",city:"Juneau, Dodge County Airport",state:"WI",lat:43.42667,lon:-88.7033299},KVOK:{id:"KVOK",city:"Volk / Camp Douglas",state:"WI",lat:43.93333,lon:-90.26667},KACP:{id:"KACP",city:"Oakdale, Allen Parish Airport",state:"LA",lat:30.75056,lon:-92.68861},KAEX:{id:"KAEX",city:"Alexandria, Alexandria International Airport",state:"LA",lat:31.33472,lon:-92.55861},KAPS:{id:"KAPS",city:"Port of South Louisiana Executive Regional Airport",state:"LA",lat:30.08747,lon:-90.58283},KAQV:{id:"KAQV",city:"Ft. Polk - Peason Ridge",state:"LA",lat:31.4,lon:-93.2833},KARA:{id:"KARA",city:"Acadiana Regional Airport",state:"LA",lat:30.02918,lon:-91.88451},KASD:{id:"KASD",city:"Slidell, Slidell Airport",state:"LA",lat:30.34306,lon:-89.82194},KATP:{id:"KATP",city:"Green Canyon 787 Atlantis",state:"LA",lat:27.195,lon:-90.027},KBAD:{id:"KBAD",city:"Barksdale Air Force Base",state:"LA",lat:32.5,lon:-93.66667},KBKB:{id:"KBKB",city:"Ft. Polk - Fullerton Landing Strip",state:"LA",lat:31.0217,lon:-92.9107},KBTR:{id:"KBTR",city:"Baton Rouge, Baton Rouge Metropolitan, Ryan Field",state:"LA",lat:30.53722,lon:-91.14694},KBXA:{id:"KBXA",city:"Bogalusa, George R Carr Memorial Air Field",state:"LA",lat:30.81361,lon:-89.86472},KCWF:{id:"KCWF",city:"Chenault Airpark",state:"LA",lat:30.21667,lon:-93.15},KDRI:{id:"KDRI",city:"De Ridder, Beauregard Parish Airport",state:"LA",lat:30.83167,lon:-93.33972},KDSF:{id:"KDSF",city:"Mississippi Canyon",state:"LA",lat:28.35,lon:-88.26667},KDTN:{id:"KDTN",city:"Shreveport, Shreveport Downtown Airport",state:"LA",lat:32.5424999,lon:-93.74472},KEIR:{id:"KEIR",city:"Eugene Island",state:"LA",lat:28.634,lon:-91.489},KESF:{id:"KESF",city:"Alexandria Esler Regional Airport",state:"LA",lat:31.39634,lon:-92.28273},KGAO:{id:"KGAO",city:"Galliano, South Lafourche Airport",state:"LA",lat:29.44472,lon:-90.26111},KGHB:{id:"KGHB",city:"GB172/Salsa (Shell E-P)",state:"LA",lat:27.84,lon:-91.988},KGRY:{id:"KGRY",city:"Green Canyon 338 Front Runner",state:"LA",lat:27.625,lon:-90.441},KHDC:{id:"KHDC",city:"Hammond, Hammond Municipal Airport",state:"LA",lat:30.52083,lon:-90.4175},KHUM:{id:"KHUM",city:"Houma-Terrebonne Airport",state:"LA",lat:29.56341,lon:-90.66283},KHZR:{id:"KHZR",city:"New Roads False River Regional Airport",state:"LA",lat:30.7183,lon:-91.4787},KIER:{id:"KIER",city:"Natchitoches, Natchitoches Regional Airport",state:"LA",lat:31.73583,lon:-93.09917},KIYA:{id:"KIYA",city:"Abbeville Chris Crusta Memorial Airport",state:"LA",lat:29.97578,lon:-92.08422},KLCH:{id:"KLCH",city:"Lake Charles Regional Airport",state:"LA",lat:30.12556,lon:-93.22767},KLFT:{id:"KLFT",city:"Lafayette, Lafayette Regional Airport",state:"LA",lat:30.20222,lon:-91.99306},KLNQ:{id:"KLNQ",city:"Boothville Heliport",state:"LA",lat:29.35414,lon:-89.43591},KMDJ:{id:"KMDJ",city:"MISS CANYON OIL PLATFORM",state:"LA",lat:28.65,lon:-89.8},KMIS:{id:"KMIS",city:"Main Pass 140B (Apache Corp)",state:"LA",lat:29.296,lon:-88.842},KMLU:{id:"KMLU",city:"Monroe Regional Airport",state:"LA",lat:32.5155699,lon:-92.02995},KMNE:{id:"KMNE",city:"Minden Airport",state:"LA",lat:32.64603,lon:-93.29808},KMSY:{id:"KMSY",city:"New Orleans, New Orleans International Airport",state:"LA",lat:29.99278,lon:-90.2508299},KNBG:{id:"KNBG",city:"New Orleans Naval Air Station - Alvin Callender Field",state:"LA",lat:29.83736,lon:-90.02445},KNEW:{id:"KNEW",city:"New Orleans, New Orleans Lakefront Airport",state:"LA",lat:30.04944,lon:-90.02889},KOPL:{id:"KOPL",city:"Opelousas St Landry Parish Airport",state:"LA",lat:30.5584,lon:-92.0994},KPOE:{id:"KPOE",city:"Fort Polk, Polk AAF Ft Polk",state:"LA",lat:31.05,lon:-93.19389},KPTN:{id:"KPTN",city:"Patterson Memorial",state:"LA",lat:29.71667,lon:-91.33333},KREG:{id:"KREG",city:"Louisiana Regional Airport",state:"LA",lat:30.1714,lon:-90.9404},KRSN:{id:"KRSN",city:"Ruston, Ruston Regional Airport",state:"LA",lat:32.51444,lon:-92.58833},KSHV:{id:"KSHV",city:"Shreveport, Shreveport Regional Airport",state:"LA",lat:32.44694,lon:-93.82417},KTVR:{id:"KTVR",city:"Vicksburg, Vicksburg / Tallulah Regional Airport",state:"LA",lat:32.3480599,lon:-91.03},KUXL:{id:"KUXL",city:"Southland Field",state:"LA",lat:30.1314,lon:-93.3760999},KVKY:{id:"KVKY",city:"Main Pass 289C (Apache Corp)",state:"LA",lat:29.248,lon:-88.441},KVOA:{id:"KVOA",city:"VK 786/Petronius (Chevron)",state:"LA",lat:29.229,lon:-87.781},KBHK:{id:"KBHK",city:"Baker, Baker Municipal Airport",state:"MT",lat:46.34778,lon:-104.2574999},KBIL:{id:"KBIL",city:"Billings, Billings Logan International Airport",state:"MT",lat:45.80694,lon:-108.54222},KBTM:{id:"KBTM",city:"Butte, Bert Mooney Airport",state:"MT",lat:45.95472,lon:-112.4975},KBZN:{id:"KBZN",city:"Bozeman, Gallatin Field",state:"MT",lat:45.78806,lon:-111.16083},KCII:{id:"KCII",city:"Choteau Airport",state:"MT",lat:47.82835,lon:-112.16834},KCTB:{id:"KCTB",city:"Cut Bank, Cut Bank Municipal Airport",state:"MT",lat:48.60833,lon:-112.37611},KDLN:{id:"KDLN",city:"Dillon, Dillon Airport",state:"MT",lat:45.2575,lon:-112.55444},KEKS:{id:"KEKS",city:"Ennis - Big Sky Airport",state:"MT",lat:45.27436,lon:-111.64886},KGDV:{id:"KGDV",city:"Glendive, Dawson Community Airport",state:"MT",lat:47.13333,lon:-104.8},KGFA:{id:"KGFA",city:"Malmstrom Air Force Base",state:"MT",lat:47.5,lon:-111.18333},KGGW:{id:"KGGW",city:"Glasgow, Glasgow International Airport",state:"MT",lat:48.21389,lon:-106.62139},KGPI:{id:"KGPI",city:"Kalispell, Glacier Park International Airport",state:"MT",lat:48.30417,lon:-114.26361},KGTF:{id:"KGTF",city:"Great Falls, Great Falls International Airport",state:"MT",lat:47.47333,lon:-111.38222},KHLN:{id:"KHLN",city:"Helena Regional Airport",state:"MT",lat:46.60445,lon:-111.9892},KHVR:{id:"KHVR",city:"Havre, Havre City-County Airport",state:"MT",lat:48.54278,lon:-109.76333},KJDN:{id:"KJDN",city:"Jordan, Jordan Airport",state:"MT",lat:47.32583,lon:-106.9475},KLVM:{id:"KLVM",city:"Livingston, Mission Field Airport",state:"MT",lat:45.69944,lon:-110.44833},KLWT:{id:"KLWT",city:"Lewistown, Lewistown Municipal Airport",state:"MT",lat:47.0491699,lon:-109.46639},KMLP:{id:"KMLP",city:"Mullan Pass, Mullan Pass Vor",state:"MT",lat:47.45417,lon:-115.66972},KMLS:{id:"KMLS",city:"Miles City, Frank Wiley Field Airport",state:"MT",lat:46.42806,lon:-105.88639},KMSO:{id:"KMSO",city:"Missoula, Missoula International Airport",state:"MT",lat:46.92083,lon:-114.0925},KMVH:{id:"KMVH",city:"N BAR Ranch Airport",state:"MT",lat:46.8381,lon:-108.9368},KOLF:{id:"KOLF",city:"Wolf Point, Clayton Airport",state:"MT",lat:48.09444,lon:-105.57722},KPWD:{id:"KPWD",city:"Sher-Wood Airport",state:"MT",lat:48.789,lon:-104.52297},KRPX:{id:"KRPX",city:"ROUNDUP",state:"MT",lat:46.47499,lon:-108.54339},KRVF:{id:"KRVF",city:"Ruby Valley Field Airport",state:"MT",lat:45.53542,lon:-112.30228},KSDY:{id:"KSDY",city:"Sidney-Richland",state:"MT",lat:47.7,lon:-104.2},KTHM:{id:"KTHM",city:"THOMPSON FALLS",state:"MT",lat:47.5735,lon:-115.28066},KWYS:{id:"KWYS",city:"West Yellowstone",state:"MT",lat:44.68333,lon:-111.11667},KHYX:{id:"KHYX",city:"Saginaw County H W Browne Airport",state:"MI",lat:43.43191,lon:-83.86476},KIKW:{id:"KIKW",city:"Jack Barstow Airport",state:"MI",lat:43.6624,lon:-84.26213},KIMT:{id:"KIMT",city:"Iron Mountain / Kingsford, Ford Airport",state:"MI",lat:45.81417,lon:-88.10889},KIRS:{id:"KIRS",city:"Sturgis, Kirsch Municipal Airport",state:"MI",lat:41.8127799,lon:-85.43917},KISQ:{id:"KISQ",city:"Manistique, Schoolcraft County Airport",state:"MI",lat:45.97472,lon:-86.17194},KIWD:{id:"KIWD",city:"Ironwood, Gogebic-Iron County Airport",state:"MI",lat:46.53333,lon:-90.13333},KJXN:{id:"KJXN",city:"Jackson County Airport - Reynolds Field",state:"MI",lat:42.26171,lon:-84.46147},KJYM:{id:"KJYM",city:"Hillsdale Municipal Airport",state:"MI",lat:41.91972,lon:-84.58528},KLAN:{id:"KLAN",city:"Capital Region International Airport",state:"MI",lat:42.77616,lon:-84.5997},KLDM:{id:"KLDM",city:"Ludington, Mason County Airport",state:"MI",lat:43.96667,lon:-86.4},KLWA:{id:"KLWA",city:"South Haven, South Haven Area Regional Airport",state:"MI",lat:42.35083,lon:-86.25611},KMBL:{id:"KMBL",city:"Manistee County - Blacker Airport",state:"MI",lat:44.27142,lon:-86.23773},KMBS:{id:"KMBS",city:"MBS International Airport",state:"MI",lat:43.5281,lon:-84.08129},KMCD:{id:"KMCD",city:"Mackinac Island Airport",state:"MI",lat:45.86628,lon:-84.63437},KMGN:{id:"KMGN",city:"Harbor Springs, Harbor Springs Airport",state:"MI",lat:45.42556,lon:-84.91333},KMKG:{id:"KMKG",city:"Muskegon, Muskegon County Airport",state:"MI",lat:43.17111,lon:-86.23667},KMNM:{id:"KMNM",city:"Menominee - Marinette Twin County Airport",state:"MI",lat:45.12628,lon:-87.64438},KMOP:{id:"KMOP",city:"Mount Pleasant, Mount Pleasant Municipal Airport",state:"MI",lat:43.61667,lon:-84.73333},KMTC:{id:"KMTC",city:"Selfridge Air National Guard Base",state:"MI",lat:42.60458,lon:-82.83528},KOEB:{id:"KOEB",city:"Branch County Memorial Airport",state:"MI",lat:41.93085,lon:-85.05429},KONZ:{id:"KONZ",city:"Detroit/Grosse Ile, Grosse Ile Airport",state:"MI",lat:42.09861,lon:-83.1611099},KOSC:{id:"KOSC",city:"Oscoda, Oscoda-Wurtsmith Airport",state:"MI",lat:44.45,lon:-83.36667},KOZW:{id:"KOZW",city:"Howell, Livingston County Airport",state:"MI",lat:42.62944,lon:-83.98417},KPHN:{id:"KPHN",city:"St Clair County International Airport",state:"MI",lat:42.91031,lon:-82.53315},KPLN:{id:"KPLN",city:"Pellston Regional Airport of Emmet County",state:"MI",lat:45.56443,lon:-84.7928699},KPTK:{id:"KPTK",city:"Pontiac, Oakland County International Airport",state:"MI",lat:42.66306,lon:-83.41},KPZQ:{id:"KPZQ",city:"Rogers City, Presque Isle County Airport",state:"MI",lat:45.40694,lon:-83.81278},KRMY:{id:"KRMY",city:"Brooks Field Airport",state:"MI",lat:42.25238,lon:-84.95253},KRNP:{id:"KRNP",city:"Owosso, Owosso Community Airport",state:"MI",lat:42.99278,lon:-84.13889},KRQB:{id:"KRQB",city:"Big Rapids, Roben-Hood Airport",state:"MI",lat:43.7224999,lon:-85.50417},KSAW:{id:"KSAW",city:"Marquette, Sawyer International Airport",state:"MI",lat:46.35361,lon:-87.39528},KSJX:{id:"KSJX",city:"Beaver Island, Beaver Island Airport",state:"MI",lat:45.69222,lon:-85.56639},KSLH:{id:"KSLH",city:"Cheboygan, Cheboygan County Airport",state:"MI",lat:45.65361,lon:-84.51917},KTEW:{id:"KTEW",city:"Mason, Mason Jewett Field Airport",state:"MI",lat:42.56583,lon:-84.42333},KTTF:{id:"KTTF",city:"Monroe, Custer Airport",state:"MI",lat:41.94,lon:-83.43472},KTVC:{id:"KTVC",city:"Cherry Capital Airport",state:"MI",lat:44.73898,lon:-85.56788},KVLL:{id:"KVLL",city:"Troy, Oakland/Troy Airport",state:"MI",lat:42.54278,lon:-83.17778},KYIP:{id:"KYIP",city:"Detroit, Willow Run Airport",state:"MI",lat:42.2366699,lon:-83.52611},KAFP:{id:"KAFP",city:"Anson County Airport",state:"NC",lat:35.01944,lon:-80.07836},KAKH:{id:"KAKH",city:"Gastonia Municipal Airport",state:"NC",lat:35.1968699,lon:-81.15545},KASJ:{id:"KASJ",city:"Ahoskie, Tri-County Airport",state:"NC",lat:36.2975,lon:-77.17083},KAVL:{id:"KAVL",city:"Asheville, Asheville Regional Airport",state:"NC",lat:35.43194,lon:-82.5375},KBUY:{id:"KBUY",city:"Burlington Alamance Regional Airport",state:"NC",lat:36.04753,lon:-79.47375},KCLT:{id:"KCLT",city:"Charlotte, Charlotte / Douglas International Airport",state:"NC",lat:35.21333,lon:-80.94861},KCPC:{id:"KCPC",city:"Whiteville, Columbus County Municipal Airport",state:"NC",lat:34.27278,lon:-78.715},KCTZ:{id:"KCTZ",city:"Sampson County Airport",state:"NC",lat:34.97522,lon:-78.36276},KDPL:{id:"KDPL",city:"Duplin County Airport",state:"NC",lat:34.99942,lon:-77.97995},KECG:{id:"KECG",city:"Elizabeth City C/G Regional Airport",state:"NC",lat:36.25771,lon:-76.1716},KEDE:{id:"KEDE",city:"Edenton, Northeastern Regional Airport",state:"NC",lat:36.02778,lon:-76.56722},KEHO:{id:"KEHO",city:"Shelby Municipal Airport",state:"NC",lat:35.2556299,lon:-81.59858},KEQY:{id:"KEQY",city:"Monroe, Monroe Airport",state:"NC",lat:35.01694,lon:-80.62056},KETC:{id:"KETC",city:"Tarboro-Edgecombe Airport",state:"NC",lat:35.9373,lon:-77.54648},KEWN:{id:"KEWN",city:"New Bern, Craven County Regional Airport",state:"NC",lat:35.0675,lon:-77.04722},KEXX:{id:"KEXX",city:"Lexington, Davidson County Airport",state:"NC",lat:35.78111,lon:-80.30389},KEYF:{id:"KEYF",city:"Curtis L Brown Jr. Field Airport",state:"NC",lat:34.60418,lon:-78.57902},KFAY:{id:"KFAY",city:"Fayetteville, Fayetteville Regional Airport",state:"NC",lat:34.98944,lon:-78.88},KFBG:{id:"KFBG",city:"Fort Bragg / Simmons Army Airfield",state:"NC",lat:35.1314,lon:-78.93158},KFFA:{id:"KFFA",city:"Kill Devil Hills, First Flight Airport",state:"NC",lat:36.01667,lon:-75.66667},KFQD:{id:"KFQD",city:"Rutherfordton, Rutherford County-Marchman Field Airport",state:"NC",lat:35.42833,lon:-81.935},KGEV:{id:"KGEV",city:"Jefferson - Ashe County Airport",state:"NC",lat:36.43333,lon:-81.41667},KGSB:{id:"KGSB",city:"Seymour-Johnson Air Force Base",state:"NC",lat:35.34457,lon:-77.94583},KGSO:{id:"KGSO",city:"Greensboro, Piedmont Triad International Airport",state:"NC",lat:36.0974999,lon:-79.94361},KGWW:{id:"KGWW",city:"Goldsboro, Goldsboro-Wayne Municipal Airport",state:"NC",lat:35.46056,lon:-77.965},KHBI:{id:"KHBI",city:"Asheboro, Asheboro Municipal Airport",state:"NC",lat:35.6538899,lon:-79.895},KHFF:{id:"KHFF",city:"Mackall U. S. Army Airfield",state:"NC",lat:35.03333,lon:-79.5},KHKY:{id:"KHKY",city:"Hickory, Hickory Regional Airport",state:"NC",lat:35.74222,lon:-81.38222},KHNZ:{id:"KHNZ",city:"Henderson-Oxford Airport",state:"NC",lat:36.36352,lon:-78.52889},KHRJ:{id:"KHRJ",city:"Erwin, Harnett County Airport",state:"NC",lat:35.37861,lon:-78.73361},KHSE:{id:"KHSE",city:"Hatteras, Mitchell Field",state:"NC",lat:35.23222,lon:-75.6225},KILM:{id:"KILM",city:"Wilmington International Airport",state:"NC",lat:34.26681,lon:-77.89987},KINT:{id:"KINT",city:"Winston Salem, Smith Reynolds Airport",state:"NC",lat:36.13333,lon:-80.22472},KIPJ:{id:"KIPJ",city:"Lincolnton, Lincolnton-Lincoln County Regional Airport",state:"NC",lat:35.48306,lon:-81.16139},KISO:{id:"KISO",city:"Kinston, Kinston Regional Jetport at Stallings Field",state:"NC",lat:35.3333299,lon:-77.61667},KIXA:{id:"KIXA",city:"Halifax-Northampton Regional Airport",state:"NC",lat:36.33,lon:-77.635},KJNX:{id:"KJNX",city:"Smithfield, Johnston County Airport",state:"NC",lat:35.54083,lon:-78.39028},KJQF:{id:"KJQF",city:"Concord Regional Airport",state:"NC",lat:35.3896299,lon:-80.70735},KLHZ:{id:"KLHZ",city:"Franklin County Airport",state:"NC",lat:36.02288,lon:-78.33405},KMEB:{id:"KMEB",city:"Laurinburg Maxton Airport",state:"NC",lat:34.79132,lon:-79.3683},KMQI:{id:"KMQI",city:"Manteo / Dare County Regional",state:"NC",lat:35.91667,lon:-75.7},KMRH:{id:"KMRH",city:"Beaufort Smith Field",state:"NC",lat:34.73259,lon:-76.6566},KMRN:{id:"KMRN",city:"Morganton-Lenoir Airport",state:"NC",lat:35.81922,lon:-81.60971},KMWK:{id:"KMWK",city:"Mount Airy/Surry County Airport",state:"NC",lat:36.45675,lon:-80.55483},KNBT:{id:"KNBT",city:"Piney Island, Bt-11 Bombing Range",state:"NC",lat:35.02222,lon:-76.4625},KNCA:{id:"KNCA",city:"MCAS New River",state:"NC",lat:34.70627,lon:-77.44066},KNJM:{id:"KNJM",city:"Bogue Field Marine Corps Auxiliary Field",state:"NC",lat:34.69403,lon:-77.02945},KNKT:{id:"KNKT",city:"Cherry Point Marine Corps Air Station",state:"NC",lat:34.89719,lon:-76.88135},KOAJ:{id:"KOAJ",city:"Jacksonville, Albert J Ellis Airport",state:"NC",lat:34.8333299,lon:-77.61667},KOCW:{id:"KOCW",city:"Washington, Warren Field Airport",state:"NC",lat:35.57056,lon:-77.0497199},KONX:{id:"KONX",city:"Currituck, Currituck County Airport",state:"NC",lat:36.39889,lon:-76.01611},KPGV:{id:"KPGV",city:"Pitt-Greenville Airport",state:"NC",lat:35.63742,lon:-77.38506},KPOB:{id:"KPOB",city:"Pope Air Force Base",state:"NC",lat:35.17531,lon:-79.00771},KRCZ:{id:"KRCZ",city:"Rockingham-Hamlet Airport",state:"NC",lat:34.8954499,lon:-79.75755},KRDU:{id:"KRDU",city:"Raleigh / Durham, Raleigh-Durham International Airport",state:"NC",lat:35.89223,lon:-78.78185},KRHP:{id:"KRHP",city:"Andrews-Murphy Airport",state:"NC",lat:35.19394,lon:-83.86182},KRUQ:{id:"KRUQ",city:"Rowan County Airport",state:"NC",lat:35.64417,lon:-80.52359},KRWI:{id:"KRWI",city:"Rocky Mount, Rocky Mount-Wilson Regional Airport",state:"NC",lat:35.8549999,lon:-77.89306},KSCR:{id:"KSCR",city:"Siler City Municipal Airport",state:"NC",lat:35.7043,lon:-79.5043},KSIF:{id:"KSIF",city:"Reidsville, Rockingham County NC Shiloh Airport",state:"NC",lat:36.43722,lon:-79.85083},KSOP:{id:"KSOP",city:"Pinehurst/Southern Pines, Moore County Airport",state:"NC",lat:35.23333,lon:-79.4},KSUT:{id:"KSUT",city:"Brunswick County Airport",state:"NC",lat:33.92921,lon:-78.07223},KSVH:{id:"KSVH",city:"Statesville Municipal Airport",state:"NC",lat:35.76362,lon:-80.9473},KTDF:{id:"KTDF",city:"Roxboro, Person County Airport",state:"NC",lat:36.2849999,lon:-78.98417},KTNB:{id:"KTNB",city:"Watauga County Hospital Heliport",state:"NC",lat:36.19856,lon:-81.65171},KTTA:{id:"KTTA",city:"Sanford, Sanford-Lee County Regional Airport",state:"NC",lat:35.5825,lon:-79.10139},KUKF:{id:"KUKF",city:"North Wilkesboro, Wilkes County Airport",state:"NC",lat:36.21667,lon:-81.08333},KVUJ:{id:"KVUJ",city:"Albemarle, Stanly County Airport",state:"NC",lat:35.41667,lon:-80.15083},KAKR:{id:"KAKR",city:"Akron, Akron Fulton International Airport",state:"OH",lat:41.0375,lon:-81.46417},KAOH:{id:"KAOH",city:"Lima, Lima Allen County Airport",state:"OH",lat:40.70806,lon:-84.02139},KAXV:{id:"KAXV",city:"Neil Armstrong Airport",state:"OH",lat:40.49356,lon:-84.29808},KBJJ:{id:"KBJJ",city:"Wooster, Wayne County Airport",state:"OH",lat:40.87306,lon:-81.88667},KBKL:{id:"KBKL",city:"Cleveland, Burke Lakefront Airport",state:"OH",lat:41.52556,lon:-81.66889},KCAK:{id:"KCAK",city:"Akron Canton Regional Airport",state:"OH",lat:40.91811,lon:-81.44343},KCDI:{id:"KCDI",city:"Cambridge Municipal Airport",state:"OH",lat:39.975,lon:-81.5776},KCGF:{id:"KCGF",city:"Cleveland / Cuyahoga",state:"OH",lat:41.56667,lon:-81.48333},KCLE:{id:"KCLE",city:"Cleveland Hopkins International Airport",state:"OH",lat:41.40569,lon:-81.85193},KCMH:{id:"KCMH",city:"John Glenn Columbus International Airport",state:"OH",lat:39.9906999,lon:-82.87691},KDAY:{id:"KDAY",city:"Dayton, Cox Dayton International Airport",state:"OH",lat:39.90611,lon:-84.21861},KDFI:{id:"KDFI",city:"Defiance, Defiance Memorial Airport",state:"OH",lat:41.33639,lon:-84.42944},KDLZ:{id:"KDLZ",city:"Delaware Municipal Airport",state:"OH",lat:40.2797,lon:-83.1148},KEDJ:{id:"KEDJ",city:"Bellefontaine Regional Airport",state:"OH",lat:40.3723,lon:-83.8192},KFDY:{id:"KFDY",city:"Findlay, Findlay Airport",state:"OH",lat:41.01361,lon:-83.66861},KFFO:{id:"KFFO",city:"Dayton / Wright-Patterson Air Force Base",state:"OH",lat:39.8333299,lon:-84.05},KHAO:{id:"KHAO",city:"Butler County Regional Airport",state:"OH",lat:39.36121,lon:-84.52061},KHZY:{id:"KHZY",city:"Ashtabula - Northeast Ohio Regional Airport",state:"OH",lat:41.77944,lon:-80.69667},KILN:{id:"KILN",city:"Wilmington, Airborne Airpark Airport",state:"OH",lat:39.42833,lon:-83.7791699},KLCK:{id:"KLCK",city:"Rickenbacker Air National Guard Base",state:"OH",lat:39.81667,lon:-82.93333},KLHQ:{id:"KLHQ",city:"Lancaster, Fairfield County Airport",state:"OH",lat:39.7572199,lon:-82.66333},KLNN:{id:"KLNN",city:"Willoughby",state:"OH",lat:41.68333,lon:-81.38333},KLPR:{id:"KLPR",city:"Lorain / Elyria, Lorain County Regional Airport",state:"OH",lat:41.34611,lon:-82.17944},KLUK:{id:"KLUK",city:"Cincinnati, Cincinnati Municipal Airport Lunken Field",state:"OH",lat:39.10583,lon:-84.41583},KMFD:{id:"KMFD",city:"Mansfield - Mansfield Lahm Regional Airport",state:"OH",lat:40.8202799,lon:-82.51778},KMGY:{id:"KMGY",city:"Dayton, Dayton-Wright Brothers Airport",state:"OH",lat:39.58889,lon:-84.22472},KMNN:{id:"KMNN",city:"Marion, Marion Municipal Airport",state:"OH",lat:40.61667,lon:-83.06833},KMRT:{id:"KMRT",city:"Marysville Union County Airport",state:"OH",lat:40.2247,lon:-83.3516},KMWO:{id:"KMWO",city:"Hook Field Municipal Airport",state:"OH",lat:39.531,lon:-84.3953},KOSU:{id:"KOSU",city:"Columbus, Ohio State University Airport",state:"OH",lat:40.07806,lon:-83.0780599},KOWX:{id:"KOWX",city:"Ottawa Putnam County Airport",state:"OH",lat:41.0356,lon:-83.982},KPCW:{id:"KPCW",city:"Port Clinton Carl R Keller Field Airport",state:"OH",lat:41.5163,lon:-82.8687},KPHD:{id:"KPHD",city:"New Philadelphia, Harry Clever Field",state:"OH",lat:40.4719399,lon:-81.42361},KPMH:{id:"KPMH",city:"Greater Portsmouth Regional Airport",state:"OH",lat:38.84047,lon:-82.8473099},KPOV:{id:"KPOV",city:"Portage County Airport",state:"OH",lat:41.21,lon:-81.252},KRZT:{id:"KRZT",city:"Chillicothe Ross County Airport",state:"OH",lat:39.4403999,lon:-83.0231},KSGH:{id:"KSGH",city:"Springfield, Springfield-Beckley Municipal Airport",state:"OH",lat:39.84028,lon:-83.84},KTDZ:{id:"KTDZ",city:"Toledo - Toledo Executive Airport",state:"OH",lat:41.56306,lon:-83.47639},KTOL:{id:"KTOL",city:"Toledo - Toledo Express Airport",state:"OH",lat:41.58704,lon:-83.80539},KTZR:{id:"KTZR",city:"Columbus, Bolton Field Airport",state:"OH",lat:39.90083,lon:-83.13722},KUNI:{id:"KUNI",city:"OHIO U/ATHEN-ALBANY",state:"OH",lat:39.22,lon:-82.23},KUSE:{id:"KUSE",city:"Wauseon Fulton County Airport",state:"OH",lat:41.6101,lon:-84.1272},KUYF:{id:"KUYF",city:"London Madison County Airport",state:"OH",lat:39.9326999,lon:-83.462},KVES:{id:"KVES",city:"Versailles Darke County Airport",state:"OH",lat:40.2044,lon:-84.5318999},KVNW:{id:"KVNW",city:"Van Wert County Airport",state:"OH",lat:40.86383,lon:-84.60636},KVTA:{id:"KVTA",city:"Newark, Newark Heath Airport",state:"OH",lat:40.02278,lon:-82.4625},KYNG:{id:"KYNG",city:"Youngstown, Youngstown-Warren Regional Airport",state:"OH",lat:41.25444,lon:-80.67389},KZZV:{id:"KZZV",city:"Zanesville, Zanesville Municipal Airport",state:"OH",lat:39.94444,lon:-81.89222},KAST:{id:"KAST",city:"Astoria, Astoria Regional Airport",state:"OR",lat:46.15694,lon:-123.8825},KBDN:{id:"KBDN",city:"Bend Airport AWOS",state:"OR",lat:44.0948,lon:-121.2006},KBKE:{id:"KBKE",city:"Baker Municipal Airport",state:"OR",lat:44.84302,lon:-117.80987},KBNO:{id:"KBNO",city:"Burns Municipal Airport",state:"OR",lat:43.59488,lon:-118.95791},KBOK:{id:"KBOK",city:"Brookings, Brookings Airport",state:"OR",lat:42.07444,lon:-124.29},KCVO:{id:"KCVO",city:"Corvallis, Corvallis Municipal Airport",state:"OR",lat:44.5,lon:-123.28333},KEUG:{id:"KEUG",city:"Eugene, Mahlon Sweet Field",state:"OR",lat:44.13333,lon:-123.21444},KGCD:{id:"KGCD",city:"Grant County Regional Airport",state:"OR",lat:44.40287,lon:-118.96715},KHIO:{id:"KHIO",city:"Portland-Hillsboro Airport",state:"OR",lat:45.54765,lon:-122.95568},KHRI:{id:"KHRI",city:"Hermiston, Hermiston Municipal Airport",state:"OR",lat:45.82583,lon:-119.26111},KABE:{id:"KABE",city:"Allentown, Lehigh Valley International Airport",state:"PA",lat:40.64985,lon:-75.44771},KAFJ:{id:"KAFJ",city:"Washington - Washington County Airport",state:"PA",lat:40.13333,lon:-80.28333},KAGC:{id:"KAGC",city:"Pittsburgh - Allegheny County Airport",state:"PA",lat:40.35521,lon:-79.92144},KAOO:{id:"KAOO",city:"Altoona - Blair County Airport",state:"PA",lat:40.29994,lon:-78.3168},KAVP:{id:"KAVP",city:"Wilkes-Barre - Scranton, Wilkes-Barre / Scranton International Airport",state:"PA",lat:41.33889,lon:-75.72667},KBFD:{id:"KBFD",city:"Bradford Regional Airport",state:"PA",lat:41.79838,lon:-78.63539},KBTP:{id:"KBTP",city:"Butler, Butler County Airport/K W Scholter Field",state:"PA",lat:40.78333,lon:-79.95},KBVI:{id:"KBVI",city:"Beaver County Airport",state:"PA",lat:40.77351,lon:-80.38248},KCKZ:{id:"KCKZ",city:"Pennridge Airport",state:"PA",lat:40.38919,lon:-75.29047},KCXY:{id:"KCXY",city:"Harrisburg, Capital City Airport",state:"PA",lat:40.21843,lon:-76.8552},KDUJ:{id:"KDUJ",city:"Du Bois - Jefferson County Airport",state:"PA",lat:41.17948,lon:-78.89326},KDYL:{id:"KDYL",city:"Doylestown, Doylestown Airport",state:"PA",lat:40.33016,lon:-75.12286},KERI:{id:"KERI",city:"Erie, Erie International Airport",state:"PA",lat:42.08,lon:-80.1825},KFIG:{id:"KFIG",city:"Clearfield, Clearfield-Lawrence Airport",state:"PA",lat:41.04667,lon:-78.41167},KFKL:{id:"KFKL",city:"Franklin, Venango Regional Airport",state:"PA",lat:41.38333,lon:-79.86667},KGKJ:{id:"KGKJ",city:"Port Meadville Airport",state:"PA",lat:41.6258399,lon:-80.21231},KHMZ:{id:"KHMZ",city:"Bedford, Bedford County Airport",state:"PA",lat:40.08528,lon:-78.51222},KHZL:{id:"KHZL",city:"Hazleton Municipal Airport",state:"PA",lat:40.98447,lon:-75.99005},KIDI:{id:"KIDI",city:"Indiana / Stewart Field",state:"PA",lat:40.63333,lon:-79.1},KIPT:{id:"KIPT",city:"Williamsport - Lycoming County Airport",state:"PA",lat:41.24298,lon:-76.92173},KJST:{id:"KJST",city:"Johnstown - Cambria County Airport",state:"PA",lat:40.3149,lon:-78.83074},KLBE:{id:"KLBE",city:"Latrobe / Westmoreland",state:"PA",lat:40.2731,lon:-79.41033},KLNS:{id:"KLNS",city:"Lancaster, Lancaster Airport",state:"PA",lat:40.1205799,lon:-76.29446},KLOM:{id:"KLOM",city:"Philadelphia - Wings Field Airport",state:"PA",lat:40.13758,lon:-75.2684},KMDT:{id:"KMDT",city:"Harrisburg, Harrisburg International Airport",state:"PA",lat:40.19361,lon:-76.76333},KMPO:{id:"KMPO",city:"Mount Pocono, Pocono Mountains Municipal Airport",state:"PA",lat:41.13821,lon:-75.37971},KMQS:{id:"KMQS",city:"Chester County Airport",state:"PA",lat:39.98333,lon:-75.86667},KMUI:{id:"KMUI",city:"Muir Army Air Field / Indiantown",state:"PA",lat:40.43808,lon:-76.56434},KOQN:{id:"KOQN",city:"Brandywine Regional Airport",state:"PA",lat:39.99011,lon:-75.5819},KOYM:{id:"KOYM",city:"St Marys Municipal Airport",state:"PA",lat:41.41248,lon:-78.50263},KPHL:{id:"KPHL",city:"Philadelphia, Philadelphia International Airport",state:"PA",lat:39.87327,lon:-75.22678},KPIT:{id:"KPIT",city:"Pittsburgh, Pittsburgh International Airport",state:"PA",lat:40.50389,lon:-80.26639},KPJC:{id:"KPJC",city:"Zelienople Municipal Airport",state:"PA",lat:40.80197,lon:-80.16086},KPNE:{id:"KPNE",city:"Philadelphia, Northeast Philadelphia Airport",state:"PA",lat:40.07889,lon:-75.01361},KPTW:{id:"KPTW",city:"Pottstown, Pottstown Limerick Airport",state:"PA",lat:40.23802,lon:-75.5548699},KRDG:{id:"KRDG",city:"Reading, Reading Regional Airport",state:"PA",lat:40.37333,lon:-75.95944},KRVL:{id:"KRVL",city:"Reedsville / Mifflin",state:"PA",lat:40.68333,lon:-77.63333},KSEG:{id:"KSEG",city:"Selinsgrove Penn Valley Airport",state:"PA",lat:40.81929,lon:-76.86582},KTHV:{id:"KTHV",city:"York, York Airport",state:"PA",lat:39.91944,lon:-76.87694},KUCP:{id:"KUCP",city:"New Castle, New Castle Municipal Airport",state:"PA",lat:41.02528,lon:-80.41333},KUKT:{id:"KUKT",city:"Quakertown Airport",state:"PA",lat:40.4368,lon:-75.38016},KUNV:{id:"KUNV",city:"State College - University Park Airport",state:"PA",lat:40.85344,lon:-77.8401},KVVS:{id:"KVVS",city:"Joseph A Hardy Connellsville Airport",state:"PA",lat:39.95906,lon:-79.65742},KXLL:{id:"KXLL",city:"Allentown Queen City Municipal Airport",state:"PA",lat:40.57,lon:-75.488},KALB:{id:"KALB",city:"Albany International Airport",state:"NY",lat:42.74722,lon:-73.79912},KART:{id:"KART",city:"Watertown, Watertown International Airport",state:"NY",lat:43.99194,lon:-76.02167},KBGM:{id:"KBGM",city:"Binghamton, Binghamton Regional Airport",state:"NY",lat:42.20778,lon:-75.98139},KBUF:{id:"KBUF",city:"Buffalo, Greater Buffalo International Airport",state:"NY",lat:42.93998,lon:-78.73604},KDKK:{id:"KDKK",city:"Dunkirk, Chautauqua County / Dunkirk Airport",state:"NY",lat:42.49306,lon:-79.27583},KDSV:{id:"KDSV",city:"Dansville, Dansville Municipal Airport",state:"NY",lat:42.56944,lon:-77.71444},KELM:{id:"KELM",city:"Elmira, Elmira / Corning Regional Airport",state:"NY",lat:42.15639,lon:-76.90278},KELZ:{id:"KELZ",city:"Wellsville, Wellsville Municipal Airport",state:"NY",lat:42.1075,lon:-77.98444},KFOK:{id:"KFOK",city:"The Gabreski Airport",state:"NY",lat:40.85053,lon:-72.61927},KFRG:{id:"KFRG",city:"Farmingdale - Republic Airport",state:"NY",lat:40.73443,lon:-73.41639},KFZY:{id:"KFZY",city:"Fulton, Oswego County Airport",state:"NY",lat:43.35083,lon:-76.38806},KGFL:{id:"KGFL",city:"Glens Falls, Floyd Bennett Memorial Airport",state:"NY",lat:43.34111,lon:-73.61056},KGTB:{id:"KGTB",city:"Fort Drum / Wheeler-Sack U. S. Army Airfield",state:"NY",lat:44.05,lon:-75.73333},KGVQ:{id:"KGVQ",city:"Genesee County Airport",state:"NY",lat:43.03175,lon:-78.16967},KHPN:{id:"KHPN",city:"White Plains - Westchester County Airport",state:"NY",lat:41.06237,lon:-73.70456},KHTO:{id:"KHTO",city:"East Hampton, East Hampton Airport",state:"NY",lat:40.95944,lon:-72.25194},KHWV:{id:"KHWV",city:"Shirley, Brookhaven Airport",state:"NY",lat:40.82167,lon:-72.8688899},KIAG:{id:"KIAG",city:"Niagara Falls, Niagara Falls International Airport",state:"NY",lat:43.1082899,lon:-78.93818},KISP:{id:"KISP",city:"Islip, Long Island Mac Arthur Airport",state:"NY",lat:40.79389,lon:-73.10167},KITH:{id:"KITH",city:"Ithaca, Ithaca Tompkins Regional Airport",state:"NY",lat:42.49083,lon:-76.45833},KJFK:{id:"KJFK",city:"New York, Kennedy International Airport",state:"NY",lat:40.63915,lon:-73.76393},KJHW:{id:"KJHW",city:"Jamestown, Chautauqua County/Jamestown Airport",state:"NY",lat:42.15,lon:-79.26667},KJRB:{id:"KJRB",city:"New York Downtown Manhattan",state:"NY",lat:40.7012,lon:-74.009},KLGA:{id:"KLGA",city:"New York, La Guardia Airport",state:"NY",lat:40.77917,lon:-73.88},KMGJ:{id:"KMGJ",city:"Montgomery, Orange County Airport",state:"NY",lat:41.50917,lon:-74.265},KMSS:{id:"KMSS",city:"Massena, Massena International-Richards Field",state:"NY",lat:44.93583,lon:-74.84556},KMSV:{id:"KMSV",city:"Monticello, Sullivan County International Airport",state:"NY",lat:41.7,lon:-74.8},KMTP:{id:"KMTP",city:"Montauk, Montauk Airport",state:"NY",lat:41.07306,lon:-71.92333},KNYC:{id:"KNYC",city:"New York City, Central Park",state:"NY",lat:40.78333,lon:-73.9666699},KOGS:{id:"KOGS",city:"Ogdensburg International Airport",state:"NY",lat:44.68186,lon:-75.4655},KOLE:{id:"KOLE",city:"Cattaraugus County-Olean Airport",state:"NY",lat:42.24119,lon:-78.37136},KPBG:{id:"KPBG",city:"Plattsburgh International Airport ",state:"NY",lat:44.65,lon:-73.4666699},KPEO:{id:"KPEO",city:"Penn Yan, Penn Yan Airport",state:"NY",lat:42.64306,lon:-77.04944},KPOU:{id:"KPOU",city:"Poughkeepsie, Dutchess County Airport",state:"NY",lat:41.62667,lon:-73.88417},KPTD:{id:"KPTD",city:"Potsdam Municipal Airport/Damon Field",state:"NY",lat:44.67667,lon:-74.94844},KRME:{id:"KRME",city:"Griffiss Air Force Base / Rome",state:"NY",lat:43.23333,lon:-75.4},KROC:{id:"KROC",city:"Rochester, Greater Rochester International Airport",state:"NY",lat:43.11667,lon:-77.67667},KSCH:{id:"KSCH",city:"Schenectady Airport",state:"NY",lat:42.85,lon:-73.93333},KSDC:{id:"KSDC",city:"Williamson-Sodus Airport",state:"NY",lat:43.23459,lon:-77.11946},KSLK:{id:"KSLK",city:"Saranac Lake, Adirondack Regional Airport",state:"NY",lat:44.39306,lon:-74.20278},KSWF:{id:"KSWF",city:"Newburgh / Stewart",state:"NY",lat:41.5,lon:-74.1},KSYR:{id:"KSYR",city:"Syracuse, Syracuse Hancock International Airport",state:"NY",lat:43.10917,lon:-76.10333},KVGC:{id:"KVGC",city:"Hamilton Municipal Airport",state:"NY",lat:42.84344,lon:-75.56119},KGLY:{id:"KGLY",city:"Clinton, MO",state:"MO",lat:38.3566,lon:-93.6842},KGPH:{id:"KGPH",city:"Mosby Midwest National Air Center Airport",state:"MO",lat:39.3325,lon:-94.3096},KHAE:{id:"KHAE",city:"Hannibal Regional Airport",state:"MO",lat:39.7252,lon:-91.4439},KHFJ:{id:"KHFJ",city:"Monett",state:"MO",lat:36.9062,lon:-94.0128},KIRK:{id:"KIRK",city:"Kirksville, Kirksville Regional Airport",state:"MO",lat:40.09722,lon:-92.54333},KJEF:{id:"KJEF",city:"Jefferson City, Jefferson City Memorial Airport",state:"MO",lat:38.59444,lon:-92.15583},KJLN:{id:"KJLN",city:"Joplin, Joplin Regional Airport",state:"MO",lat:37.15611,lon:-94.5005599},KLBO:{id:"KLBO",city:"LEBANON",state:"MO",lat:37.64833,lon:-92.6525},KLRY:{id:"KLRY",city:"Harrisonville Lawrence Smith Memorial Airport",state:"MO",lat:38.611,lon:-94.3421},KLXT:{id:"KLXT",city:"Lee's Summit, Lee's Summit Municipal Airport",state:"MO",lat:38.95972,lon:-94.37167},KMAW:{id:"KMAW",city:"Malden Municipal Airport",state:"MO",lat:36.6004999,lon:-89.9922},KMBY:{id:"KMBY",city:"Omar N Bradley Airport",state:"MO",lat:39.46341,lon:-92.42638},KMCI:{id:"KMCI",city:"Kansas City, Kansas City International Airport",state:"MO",lat:39.29722,lon:-94.73056},KMHL:{id:"KMHL",city:"Marshall Memorial Municipal Airport",state:"MO",lat:39.0955,lon:-93.2028},KMKC:{id:"KMKC",city:"Kansas City, Kansas City Downtown Airport",state:"MO",lat:39.12083,lon:-94.59694},KMYJ:{id:"KMYJ",city:"Mexico Memorial Airport",state:"MO",lat:39.1575,lon:-91.8182999},KOZS:{id:"KOZS",city:"Camdenton Memorial Airport",state:"MO",lat:37.9739999,lon:-92.6912},KPCD:{id:"KPCD",city:"Perryville Regional Airport",state:"MO",lat:37.86867,lon:-89.86214},KPOF:{id:"KPOF",city:"Poplar Bluff, Poplar Bluff Municipal Airport",state:"MO",lat:36.77056,lon:-90.32222},KRAW:{id:"KRAW",city:"Warsaw Municipal Airport",state:"MO",lat:38.3469,lon:-93.3454},KRCM:{id:"KRCM",city:"Skyhaven Airport",state:"MO",lat:38.7842,lon:-93.8028999},KSET:{id:"KSET",city:"St. Charles, St. Charles County Smartt Airport",state:"MO",lat:38.93056,lon:-90.4325},KSGF:{id:"KSGF",city:"Springfield, Springfield Regional Airport",state:"MO",lat:37.23972,lon:-93.38972},KSIK:{id:"KSIK",city:"Sikeston Memorial Municipal Airport",state:"MO",lat:36.8989,lon:-89.5618},KSTJ:{id:"KSTJ",city:"St. Joseph, Rosecrans Memorial Airport",state:"MO",lat:39.76806,lon:-94.90917},KSTL:{id:"KSTL",city:"St. Louis Lambert International Airport",state:"MO",lat:38.7525,lon:-90.37361},KSUS:{id:"KSUS",city:"St. Louis, Spirit Of St. Louis Airport",state:"MO",lat:38.65722,lon:-90.65583},KSZL:{id:"KSZL",city:"Whiteman Air Force Base",state:"MO",lat:38.73333,lon:-93.55},KTBN:{id:"KTBN",city:"Fort Leonard Wood",state:"MO",lat:37.73333,lon:-92.13333},KTKX:{id:"KTKX",city:"Kennett - Kennett Memorial Airport",state:"MO",lat:36.22256,lon:-90.03671},KUNO:{id:"KUNO",city:"West Plains, West Plains Municipal Airport",state:"MO",lat:36.87917,lon:-91.905},KVER:{id:"KVER",city:"Jesse Viertel Memorial Airport",state:"MO",lat:38.94672,lon:-92.68267},KVIH:{id:"KVIH",city:"Rolla / Vichy, Rolla National Airport",state:"MO",lat:38.13194,lon:-91.76528},KABY:{id:"KABY",city:"Southwest Georgia Regional Airport",state:"GA",lat:31.53652,lon:-84.19571},KACJ:{id:"KACJ",city:"Americus Souther Field Airport",state:"GA",lat:32.11081,lon:-84.18886},KAGS:{id:"KAGS",city:"Augusta, Bush Field",state:"GA",lat:33.36444,lon:-81.96333},KAHN:{id:"KAHN",city:"Athens, Athens Airport",state:"GA",lat:33.95083,lon:-83.3280599},KAJR:{id:"KAJR",city:"Cornelia Habersham County Airport",state:"GA",lat:34.4998,lon:-83.5567},KAMG:{id:"KAMG",city:"Alma, Bacon County Airport",state:"GA",lat:31.53611,lon:-82.50667},KATL:{id:"KATL",city:"Atlanta, Hartsfield - Jackson Atlanta International Airport",state:"GA",lat:33.64028,lon:-84.42694},KAYS:{id:"KAYS",city:"Waycross / Ware County, Ga",state:"GA",lat:31.25,lon:-82.4},KAZE:{id:"KAZE",city:"Hazlehurst Airport",state:"GA",lat:31.8847,lon:-82.6474},KBGE:{id:"KBGE",city:"Bainbridge, Decatur County Industrial Air Park Airport",state:"GA",lat:30.96667,lon:-84.63333},KBHC:{id:"KBHC",city:"Baxley Municipal Airport",state:"GA",lat:31.7138,lon:-82.3938},KBIJ:{id:"KBIJ",city:"Blakely, Early County Airport",state:"GA",lat:31.39694,lon:-84.895},KBQK:{id:"KBQK",city:"Brunswick / Glynco",state:"GA",lat:31.25,lon:-81.4666699},KCCO:{id:"KCCO",city:"Newnan, Newnan Coweta County Airport",state:"GA",lat:33.31222,lon:-84.77028},KCKF:{id:"KCKF",city:"Cordele Crisp County Airport",state:"GA",lat:31.9888,lon:-83.7739},KCNI:{id:"KCNI",city:"Canton, Cherokee County Airport",state:"GA",lat:34.31056,lon:-84.42389},KCSG:{id:"KCSG",city:"Columbus, Columbus Metropolitan Airport",state:"GA",lat:32.51611,lon:-84.94222},KCTJ:{id:"KCTJ",city:"Carrollton West Georgia Regional Airport",state:"GA",lat:33.63,lon:-85.15},KCVC:{id:"KCVC",city:"Covington Municipal Airport",state:"GA",lat:33.632,lon:-83.85},KCWV:{id:"KCWV",city:"Claxton Evans County Airport",state:"GA",lat:32.1950999,lon:-81.8696},KCXU:{id:"KCXU",city:"Camilla-Mitchell County Airport",state:"GA",lat:31.2132,lon:-84.2352},KCZL:{id:"KCZL",city:"Calhoun Tom B. David Field Airport",state:"GA",lat:34.4554,lon:-84.9392},KDBN:{id:"KDBN",city:"Dublin, W H 'Bud' Barron Airport",state:"GA",lat:32.56444,lon:-82.985},KDNL:{id:"KDNL",city:"Augusta Daniel Field",state:"GA",lat:33.4669,lon:-82.03836},KDNN:{id:"KDNN",city:"Dalton, Dalton Municipal Airport",state:"GA",lat:34.72167,lon:-84.86917},KDQH:{id:"KDQH",city:"Douglas, Douglas Municipal Airport",state:"GA",lat:31.47667,lon:-82.86028},KDZJ:{id:"KDZJ",city:"Blairsville Airport",state:"GA",lat:34.8544,lon:-83.9973},KEZM:{id:"KEZM",city:"Eastman, Heart of Georgia Regional Airport",state:"GA",lat:32.21417,lon:-83.12778},KFFC:{id:"KFFC",city:"Atlanta Regional Airport-Falcon Field",state:"GA",lat:33.35436,lon:-84.56893},KFTY:{id:"KFTY",city:"Fulton County Airport-Brown Field",state:"GA",lat:33.77764,lon:-84.52461},KFZG:{id:"KFZG",city:"Fitzgerald Municipal Airport",state:"GA",lat:31.6839,lon:-83.2709},KGVL:{id:"KGVL",city:"Gainesville, Gilmer Memorial Airport",state:"GA",lat:34.27194,lon:-83.83028},KHMP:{id:"KHMP",city:"Henry County Airport",state:"GA",lat:33.3899,lon:-84.331},KHOE:{id:"KHOE",city:"Homerville Airport",state:"GA",lat:31.0559,lon:-82.7741},KHQU:{id:"KHQU",city:"Thomson, Thomson-McDuffie County Airport",state:"GA",lat:33.52944,lon:-82.51639},KIIY:{id:"KIIY",city:"Washington, Washington-Wilkes County Airport",state:"GA",lat:33.77972,lon:-82.81639},KJCA:{id:"KJCA",city:"Jackson County Airport",state:"GA",lat:34.17586,lon:-83.5616},KJES:{id:"KJES",city:"Jesup-Wayne County Airport",state:"GA",lat:31.554,lon:-81.8824999},KJYL:{id:"KJYL",city:"Sylvania, Plantation Airpark",state:"GA",lat:32.64528,lon:-81.59639},KJZP:{id:"KJZP",city:"Jasper Pickens County Airport",state:"GA",lat:34.45417,lon:-84.45971},KLGC:{id:"KLGC",city:"LaGrange-Callaway Airport",state:"GA",lat:33.00617,lon:-85.06609},KLHW:{id:"KLHW",city:"Wright Army Airfield (Fort Stewart)/Midcoast Regional Airport",state:"GA",lat:31.88724,lon:-81.56244},KLSF:{id:"KLSF",city:"Fort Benning",state:"GA",lat:32.3333299,lon:-84.83333},KLZU:{id:"KLZU",city:"Gwinnett County Airport-Briscoe Field",state:"GA",lat:33.98288,lon:-83.95842},KMCN:{id:"KMCN",city:"Middle Georgia Regional Airport",state:"GA",lat:32.68892,lon:-83.65293},KMGE:{id:"KMGE",city:"Marietta / Dobbins Air Force Base",state:"GA",lat:33.91667,lon:-84.51667},KMGR:{id:"KMGR",city:"Moultrie, Moultrie Municipal Airport",state:"GA",lat:31.08472,lon:-83.80306},KMHP:{id:"KMHP",city:"Metter Municipal Airport",state:"GA",lat:32.37397,lon:-82.08144},KMLJ:{id:"KMLJ",city:"Milledgeville, Baldwin County Airport",state:"GA",lat:33.15417,lon:-83.24056},KOKZ:{id:"KOKZ",city:"Sandersville Kaolin Field Airport",state:"GA",lat:32.9667,lon:-82.8382},KOPN:{id:"KOPN",city:"Thomaston, Thomaston-Upson County Airport",state:"GA",lat:32.955,lon:-84.2644399},KPDK:{id:"KPDK",city:"Atlanta, De Kalb-Peachtree Airport",state:"GA",lat:33.87833,lon:-84.29806},KPIM:{id:"KPIM",city:"Pine Mountain Harris County Airport",state:"GA",lat:32.8407,lon:-84.8824},KPUJ:{id:"KPUJ",city:"Dallas Paulding County Regional Airport",state:"GA",lat:33.9189999,lon:-84.952},KPXE:{id:"KPXE",city:"Perry-Houston County Airport",state:"GA",lat:32.5105999,lon:-83.7673},KRMG:{id:"KRMG",city:"Rome, R. B. Russell Airport",state:"GA",lat:34.34778,lon:-85.1611099},KRVJ:{id:"KRVJ",city:"Swinton Smith Field at Reidsville Municipal Airport",state:"GA",lat:32.0594899,lon:-82.15358},KRYY:{id:"KRYY",city:"Cobb County International Airport - McCollum Field",state:"GA",lat:34.01467,lon:-84.59635},KSAV:{id:"KSAV",city:"Savannah-Hilton Head International Airport",state:"GA",lat:32.1313699,lon:-81.20226},KSBO:{id:"KSBO",city:"Swainsboro Emanuel County Airport",state:"GA",lat:32.6091,lon:-82.3699},KSSI:{id:"KSSI",city:"Brunswick, Malcolm McKinnon Airport",state:"GA",lat:31.15167,lon:-81.39139},KSVN:{id:"KSVN",city:"Hunter U. S. Army Airfield",state:"GA",lat:32.01667,lon:-81.15},KTBR:{id:"KTBR",city:"Statesboro, Statesboro-Bulloch County Airport",state:"GA",lat:32.48306,lon:-81.7372199},KTMA:{id:"KTMA",city:"Tifton Henry Tift Myers",state:"GA",lat:31.429,lon:-83.4885},KTOC:{id:"KTOC",city:"Toccoa Le Tourneau Airport",state:"GA",lat:34.5927999,lon:-83.2964},KTVI:{id:"KTVI",city:"Thomasville Regional Airport",state:"GA",lat:30.90179,lon:-83.88113},KVAD:{id:"KVAD",city:"Moody Air Force Base",state:"GA",lat:30.97913,lon:-83.19247},KVDI:{id:"KVDI",city:"Vidalia, Vidalia Municipal Airport",state:"GA",lat:32.1925,lon:-82.37194},KVLD:{id:"KVLD",city:"Valdosta Regional Airport",state:"GA",lat:30.77632,lon:-83.27389},KVPC:{id:"KVPC",city:"Cartersville Airport",state:"GA",lat:34.11589,lon:-84.85064},KWDR:{id:"KWDR",city:"Winder, Winder-Barrow Airport",state:"GA",lat:33.98222,lon:-83.66806},KWRB:{id:"KWRB",city:"Warner Robins Air Force Base",state:"GA",lat:32.63333,lon:-83.6},PAAD:{id:"PAAD",city:"Point Thomson Airstrip",state:"AK",lat:70.136,lon:-146.2901},PAAQ:{id:"PAAQ",city:"Palmer, Palmer Municipal Airport",state:"AK",lat:61.6,lon:-149.08333},PABA:{id:"PABA",city:"Barter Island, Barter Island LRRS Airport",state:"AK",lat:70.1338899,lon:-143.57694},PABE:{id:"PABE",city:"Bethel, Bethel Airport",state:"AK",lat:60.77972,lon:-161.83778},PABI:{id:"PABI",city:"Delta Junction/Ft Greely, Allen Army Airfield",state:"AK",lat:64,lon:-145.73333},PABL:{id:"PABL",city:"Buckland, Buckland Airport",state:"AK",lat:65.98222,lon:-161.15194},PABR:{id:"PABR",city:"Wiley Post-Will Rogers Memorial Airport",state:"AK",lat:71.28528,lon:-156.76583},PABT:{id:"PABT",city:"Bettles, Bettles Airport",state:"AK",lat:66.91667,lon:-151.51667},PABV:{id:"PABV",city:"Birchwood, Birchwood Airport",state:"AK",lat:61.41667,lon:-149.51667},PACD:{id:"PACD",city:"Cold Bay, Cold Bay Airport",state:"AK",lat:55.22083,lon:-162.72778},PACM:{id:"PACM",city:"Scammon Bay",state:"AK",lat:61.8453,lon:-165.5713},PACV:{id:"PACV",city:"Cordova, Merle K (Mudhole) Smith Airport",state:"AK",lat:60.49167,lon:-145.47778},PACZ:{id:"PACZ",city:"Cape Romanzof, Cape Romanzof LRRS Airport",state:"AK",lat:61.78333,lon:-166.03333},PADG:{id:"PADG",city:"Red Dog",state:"AK",lat:68.0321,lon:-162.8992},PADK:{id:"PADK",city:"Adak Island, Adak Airport",state:"AK",lat:51.87778,lon:-176.64583},PADL:{id:"PADL",city:"Dillingham, Dillingham Airport",state:"AK",lat:59.05,lon:-158.51667},PADM:{id:"PADM",city:"Marshall",state:"AK",lat:61.8643,lon:-162.0261},PADQ:{id:"PADQ",city:"Kodiak, Kodiak Airport",state:"AK",lat:57.75,lon:-152.5},PADU:{id:"PADU",city:"Unalaska, Unalaska Airport",state:"AK",lat:53.9,lon:-166.53333},PAEC:{id:"PAEC",city:"Chulitna, Chulitna Airport",state:"AK",lat:62.88333,lon:-149.83333},PAED:{id:"PAED",city:"Anchorage, Elmendorf Air Force Base",state:"AK",lat:61.25306,lon:-149.79389},PAEG:{id:"PAEG",city:"Eagle, Eagle Airport",state:"AK",lat:64.77639,lon:-141.15083},PAEH:{id:"PAEH",city:"Cape Newenham, Cape Newenham LRRS Airport",state:"AK",lat:58.65,lon:-162.0666699},PAEI:{id:"PAEI",city:"Fairbanks, Eielson Air Force Base",state:"AK",lat:64.65,lon:-147.1},PAEL:{id:"PAEL",city:"Elfin Cove - Elfin Cove Seaplane Base",state:"AK",lat:58.19467,lon:-136.34663},PAEM:{id:"PAEM",city:"Emmonak, Emmonak Airport",state:"AK",lat:62.78333,lon:-164.5},PAEN:{id:"PAEN",city:"Kenai, Kenai Municipal Airport",state:"AK",lat:60.57306,lon:-151.245},PAFA:{id:"PAFA",city:"Fairbanks, Fairbanks International Airport",state:"AK",lat:64.80389,lon:-147.87611},PAFB:{id:"PAFB",city:"Fort Wainwright AAF",state:"AK",lat:64.83667,lon:-147.59556},PAFE:{id:"PAFE",city:"Kake - Kake Airport",state:"AK",lat:56.964,lon:-133.913},PAFM:{id:"PAFM",city:"Ambler, Ambler Airport",state:"AK",lat:67.1,lon:-157.85},PAFR:{id:"PAFR",city:"Ft. Richardson / Bryant U. S. Army Heliport, Ak",state:"AK",lat:61.26667,lon:-149.65},PAFS:{id:"PAFS",city:"Nikolai",state:"AK",lat:63.019,lon:-154.358},PAGA:{id:"PAGA",city:"Galena, Edward G. Pitka Sr. Airport",state:"AK",lat:64.73333,lon:-156.93333},PAGB:{id:"PAGB",city:"Galbraith Lake, Galbraith Lake Airport",state:"AK",lat:68.48333,lon:-149.48333},PAGH:{id:"PAGH",city:"Shungnak Airport",state:"AK",lat:66.8881,lon:-157.1624},PAGK:{id:"PAGK",city:"Gulkana, Gulkana Airport",state:"AK",lat:62.15,lon:-145.45},PAGL:{id:"PAGL",city:"Golovin, Golovin Airport",state:"AK",lat:64.54333,lon:-163.03944},PAGM:{id:"PAGM",city:"Gambell, Gambell Airport",state:"AK",lat:63.76667,lon:-171.73333},PAGN:{id:"PAGN",city:"Angoon",state:"AK",lat:57.5,lon:-134.58333},PAGS:{id:"PAGS",city:"Gustavus, Gustavus Airport",state:"AK",lat:58.41667,lon:-135.7},PAGY:{id:"PAGY",city:"Skagway",state:"AK",lat:59.4544,lon:-135.3263},PAHC:{id:"PAHC",city:"Holy Cross",state:"AK",lat:62.1873,lon:-159.77657},PAHL:{id:"PAHL",city:"Huslia, Huslia Airport",state:"AK",lat:65.6975,lon:-156.35111},PAHN:{id:"PAHN",city:"Haines - Haines Airport",state:"AK",lat:59.2429,lon:-135.5114},PAHO:{id:"PAHO",city:"Homer, Homer Airport",state:"AK",lat:59.65,lon:-151.48333},PAHP:{id:"PAHP",city:"Hooper Bay, Hooper Bay Airport",state:"AK",lat:61.51667,lon:-166.13333},PAHY:{id:"PAHY",city:"Hydaburg - Hydaburg Seaplane Base",state:"AK",lat:55.2,lon:-132.83333},PAIG:{id:"PAIG",city:"Igiugig",state:"AK",lat:59.32395,lon:-155.90235},PAII:{id:"PAII",city:"Egegik, Egegik Airport",state:"AK",lat:58.18528,lon:-157.38556},PAIK:{id:"PAIK",city:"Kinana / Bob Baker Me",state:"AK",lat:66.98333,lon:-160.43333},PAIL:{id:"PAIL",city:"Iliamna, Iliamna Airport",state:"AK",lat:59.75,lon:-154.9},PAIM:{id:"PAIM",city:"Utopia Creek, Indian Mountain LRRS Airport",state:"AK",lat:66,lon:-153.7},PAIN:{id:"PAIN",city:"McKinley Park, McKinley National Park Airport",state:"AK",lat:63.73333,lon:-148.91667},PAIW:{id:"PAIW",city:"Wales",state:"AK",lat:65.6226,lon:-168.0949},PAJC:{id:"PAJC",city:"Chignik, Chignik Airport",state:"AK",lat:56.31139,lon:-158.37333},PAJK:{id:"PAJK",city:"NWS Office: Juneau",state:"AK",lat:58.4,lon:-134.57001},PAJN:{id:"PAJN",city:"Juneau, Juneau International Airport",state:"AK",lat:58.35472,lon:-134.57611},PAJZ:{id:"PAJZ",city:"Koliganek",state:"AK",lat:59.727,lon:-157.2589999},PAKF:{id:"PAKF",city:"False Pass Airport",state:"AK",lat:54.847,lon:-163.41},PAKH:{id:"PAKH",city:"Akhiok",state:"AK",lat:56.9387,lon:-154.1826},PAKI:{id:"PAKI",city:"Kipnuk, Kipnuk Airport",state:"AK",lat:59.93278,lon:-164.03028},PAKK:{id:"PAKK",city:"Koyuk, Koyuk Airport",state:"AK",lat:64.93389,lon:-161.15806},PAKN:{id:"PAKN",city:"King Salmon, King Salmon Airport",state:"AK",lat:58.67667,lon:-156.64917},PAKP:{id:"PAKP",city:"Anaktuvuk Pass, Anaktuvuk Pass Airport",state:"AK",lat:68.13361,lon:-151.7433299},PAKT:{id:"PAKT",city:"Ketchikan, Ketchikan International Airport",state:"AK",lat:55.35556,lon:-131.71361},PAKU:{id:"PAKU",city:"Kuparuk, Ugnu-Kuparuk Airport",state:"AK",lat:70.31667,lon:-149.58333},PAKV:{id:"PAKV",city:"Kaltag, Kaltag Airport",state:"AK",lat:64.31667,lon:-158.73333},PAKW:{id:"PAKW",city:"Klawock - Klawock Airport",state:"AK",lat:55.5839,lon:-133.067},PALG:{id:"PALG",city:"Kalskag",state:"AK",lat:61.5364,lon:-160.3414},PALH:{id:"PALH",city:"Anchorage, Lake Hood Seaplane Base",state:"AK",lat:61.18333,lon:-149.96667},PALJ:{id:"PALJ",city:"Port Alsworth, Port Alsworth Airport",state:"AK",lat:60.2,lon:-154.3166699},PALP:{id:"PALP",city:"Deadhorse, Alpine Airstrip",state:"AK",lat:70.33333,lon:-150.93333},PALU:{id:"PALU",city:"Cape Lisburne, Cape Lisburne LRRS Airport",state:"AK",lat:68.88333,lon:-166.1},PAMB:{id:"PAMB",city:"Manokotak",state:"AK",lat:58.9902,lon:-159.0499},PAMC:{id:"PAMC",city:"McGrath, McGrath Airport",state:"AK",lat:62.96667,lon:-155.61667},PAMD:{id:"PAMD",city:"Middleton Island Airport",state:"AK",lat:59.4423,lon:-146.3166},PAMH:{id:"PAMH",city:"Minchumina, Minchumina Airport",state:"AK",lat:63.88056,lon:-152.30056},PAMK:{id:"PAMK",city:"St Michael Airport",state:"AK",lat:63.49006,lon:-162.11039},PAMM:{id:"PAMM",city:"Metlakatla, Metlakatla Seaplane Base",state:"AK",lat:55.13111,lon:-131.57806},PAMO:{id:"PAMO",city:"Mountain Village",state:"AK",lat:62.0953,lon:-163.6819},PAMR:{id:"PAMR",city:"Anchorage, Merrill Field Airport",state:"AK",lat:61.21667,lon:-149.85},PAMY:{id:"PAMY",city:"Mekoryuk, Mekoryuk Airport",state:"AK",lat:60.36667,lon:-166.26667},PANA:{id:"PANA",city:"Napakiak Airport",state:"AK",lat:60.6903,lon:-161.9785},PANC:{id:"PANC",city:"Anchorage, Ted Stevens Anchorage International Airport",state:"AK",lat:61.17444,lon:-149.9961099},PANI:{id:"PANI",city:"Aniak, Aniak Airport",state:"AK",lat:61.58139,lon:-159.54278},PANN:{id:"PANN",city:"Nenana Municipal Airport",state:"AK",lat:64.54796,lon:-149.08398},PANV:{id:"PANV",city:"Anvik, Anvik Airport",state:"AK",lat:62.64833,lon:-160.18972},PANW:{id:"PANW",city:"New Stuyahok",state:"AK",lat:59.45,lon:-157.328},PAOH:{id:"PAOH",city:"Hoonah - Hoonah Seaplane Base",state:"AK",lat:58.097,lon:-135.4139999},PAOM:{id:"PAOM",city:"Nome, Nome Airport",state:"AK",lat:64.51194,lon:-165.445},PAOO:{id:"PAOO",city:"Toksook Bay",state:"AK",lat:60.53352,lon:-165.1142999},PAOR:{id:"PAOR",city:"Northway, Northway Airport",state:"AK",lat:62.96111,lon:-141.92889},PAOT:{id:"PAOT",city:"Ralph Wien Memorial Airport",state:"AK",lat:66.88576,lon:-162.60624},PAOU:{id:"PAOU",city:"Nelson Lagoon",state:"AK",lat:56.008,lon:-161.16},PAPB:{id:"PAPB",city:"St. George, St. George Airport",state:"AK",lat:56.57861,lon:-169.66139},PAPG:{id:"PAPG",city:"Petersburg",state:"AK",lat:56.8017,lon:-132.9453},PAPH:{id:"PAPH",city:"Port Heiden, Port Heiden Airport",state:"AK",lat:56.95,lon:-158.63333},PAPM:{id:"PAPM",city:"Platinum",state:"AK",lat:59.01667,lon:-161.8166699},PAPN:{id:"PAPN",city:"Pilot Point Airport",state:"AK",lat:57.58,lon:-157.572},PAPO:{id:"PAPO",city:"Point Hope, Point Hope Airport",state:"AK",lat:68.35,lon:-166.8},PAPR:{id:"PAPR",city:"Prospect Creek, Prospect Creek Airport",state:"AK",lat:66.81278,lon:-150.64389},PAPT:{id:"PAPT",city:"Puntilla",state:"AK",lat:62.1,lon:-152.75},PAQH:{id:"PAQH",city:"Quinhagak Airport",state:"AK",lat:59.7551,lon:-161.8454},PAQT:{id:"PAQT",city:"Nuiqsut, Nuiqsut Airport",state:"AK",lat:70.2099999,lon:-151.00556},PARC:{id:"PARC",city:"Arctic Village, Arctic Village Airport",state:"AK",lat:68.11444,lon:-145.57917},PARS:{id:"PARS",city:"Russian Mission",state:"AK",lat:61.775,lon:-161.3194},PARY:{id:"PARY",city:"Ruby",state:"AK",lat:64.7272,lon:-155.4697},PASA:{id:"PASA",city:"Savoonga Airport",state:"AK",lat:63.68333,lon:-170.5},PASC:{id:"PASC",city:"Deadhorse, Deadhorse Airport",state:"AK",lat:70.2,lon:-148.46667},PASD:{id:"PASD",city:"Sand Point",state:"AK",lat:55.31667,lon:-160.51667},PASH:{id:"PASH",city:"Shishmaref, Shishmaref Airport",state:"AK",lat:66.26667,lon:-166.08333},PASI:{id:"PASI",city:"Sitka - Sitka Airport",state:"AK",lat:57.048,lon:-135.3647},PASK:{id:"PASK",city:"Selawik",state:"AK",lat:66.61667,lon:-160},PASL:{id:"PASL",city:"Sleetmute",state:"AK",lat:61.69735,lon:-157.16712},PASM:{id:"PASM",city:"St. Mary's, St. Mary's Airport",state:"AK",lat:62.05,lon:-163.3},PASN:{id:"PASN",city:"St. Paul Island, St. Paul Island Airport",state:"AK",lat:57.16667,lon:-170.21667},PASO:{id:"PASO",city:"Seldovia, Seldovia Airport",state:"AK",lat:59.45,lon:-151.7},PASV:{id:"PASV",city:"Sparrevohn Airways Facilities Sector",state:"AK",lat:61.1,lon:-155.5666699},PASX:{id:"PASX",city:"Soldotna",state:"AK",lat:60.48333,lon:-151.03333},PASY:{id:"PASY",city:"Shemya, Eareckson AFB",state:"AK",lat:52.71667,lon:174.11667},PATA:{id:"PATA",city:"Tanana, Calhoun Memorial Airport",state:"AK",lat:65.16667,lon:-152.1},PATC:{id:"PATC",city:"Tin City Airways Facilities Sector",state:"AK",lat:65.56667,lon:-167.91667},PATE:{id:"PATE",city:"Teller",state:"AK",lat:65.2403999,lon:-166.3393},PATG:{id:"PATG",city:"Togiac Village, Togiak Airport",state:"AK",lat:59.05,lon:-160.4},PATK:{id:"PATK",city:"Talkeetna, Talkeetna Airport",state:"AK",lat:62.32056,lon:-150.09361},PATL:{id:"PATL",city:"Takotna, Tatalina LRRS Airport",state:"AK",lat:62.9,lon:-155.98333},PATO:{id:"PATO",city:"Portage, Portage Glacier",state:"AK",lat:60.78333,lon:-148.83333},PATQ:{id:"PATQ",city:"Atqasuk",state:"AK",lat:70.4673,lon:-157.4357},PAUN:{id:"PAUN",city:"Unalakleet",state:"AK",lat:63.88333,lon:-160.8},PAUT:{id:"PAUT",city:"Akun Airport",state:"AK",lat:54.1446,lon:-165.6041},PAVA:{id:"PAVA",city:"Chevak Airport",state:"AK",lat:61.5408,lon:-165.6009},PAVC:{id:"PAVC",city:"King Cove",state:"AK",lat:55.116,lon:-162.266},PAVD:{id:"PAVD",city:"Valdez 2",state:"AK",lat:61.13333,lon:-146.26667},PAVL:{id:"PAVL",city:"Kivalina, Kivalina Airport",state:"AK",lat:67.73333,lon:-164.55},PAWD:{id:"PAWD",city:"Seward",state:"AK",lat:60.11667,lon:-149.45},PAWG:{id:"PAWG",city:"Wrangell",state:"AK",lat:56.48333,lon:-132.36667},PAWI:{id:"PAWI",city:"Wainwright, Wainwright Airport",state:"AK",lat:70.63333,lon:-159.85},PAWM:{id:"PAWM",city:"White Mountain Airport",state:"AK",lat:64.6892,lon:-163.4127},PAWN:{id:"PAWN",city:"Noatak, Noatak Airport",state:"AK",lat:67.56667,lon:-162.98333},PAWS:{id:"PAWS",city:"Wasilla, Wasilla Airport",state:"AK",lat:61.57194,lon:-149.54056},PAYA:{id:"PAYA",city:"Yakutat",state:"AK",lat:59.51667,lon:-139.66667},PAZK:{id:"PAZK",city:"Eureka, Skelton Airport",state:"AK",lat:61.93333,lon:-147.16667},PFCL:{id:"PFCL",city:"Clarks Point Airport",state:"AK",lat:58.8337,lon:-158.5294},PFEL:{id:"PFEL",city:"Elim Airport",state:"AK",lat:64.615,lon:-162.2705},PFKT:{id:"PFKT",city:"Brevig Mission Airport",state:"AK",lat:65.3313,lon:-166.4657},PFKW:{id:"PFKW",city:"Kwethluk Airport",state:"AK",lat:60.7903,lon:-161.4437},PFNO:{id:"PFNO",city:"Noorvik",state:"AK",lat:66.8175,lon:-161.0223},PFSH:{id:"PFSH",city:"Shaktoolik Airport",state:"AK",lat:64.3711,lon:-161.224},PFWS:{id:"PFWS",city:"South Naknek Nr 2 Airport",state:"AK",lat:58.7021,lon:-157.0026},PFYU:{id:"PFYU",city:"Fort Yukon, Fort Yukon Airport",state:"AK",lat:66.56667,lon:-145.26667},PPIT:{id:"PPIT",city:"Nunapitchuk Airport",state:"AK",lat:60.906,lon:-162.4406},PPIZ:{id:"PPIZ",city:"Point Lay, Point Lay LRRS Airport",state:"AK",lat:69.7166699,lon:-163},KAAA:{id:"KAAA",city:"Logan County Airport",state:"IL",lat:40.15885,lon:-89.33891},KAJG:{id:"KAJG",city:"Mount Carmel, Mount Carmel Municipal Airport",state:"IL",lat:38.60928,lon:-87.72508},KALN:{id:"KALN",city:"St. Louis Regional Airport",state:"IL",lat:38.88968,lon:-90.03163},KARR:{id:"KARR",city:"Aurora Municipal Airport",state:"IL",lat:41.77132,lon:-88.48147},KBLV:{id:"KBLV",city:"Belleville, Scott AFB/MidAmerica Airport",state:"IL",lat:38.55,lon:-89.85},KBMI:{id:"KBMI",city:"Bloomington/Normal, Central Illinois Regional Airport at Bloomington-Normal",state:"IL",lat:40.47694,lon:-88.91583},KCIR:{id:"KCIR",city:"Cairo Regional Airport",state:"IL",lat:37.06388,lon:-89.2232},KCMI:{id:"KCMI",city:"University of Illinois - Willard",state:"IL",lat:40.03245,lon:-88.27547},KCPS:{id:"KCPS",city:"St. Louis Downtown Airport",state:"IL",lat:38.56403,lon:-90.14871},KCUL:{id:"KCUL",city:"Carmi Municipal Airport",state:"IL",lat:38.08875,lon:-88.12125},KDEC:{id:"KDEC",city:"Decatur Airport",state:"IL",lat:39.8308,lon:-88.87192},KDKB:{id:"KDKB",city:"De Kalb Taylor Municipal Airport",state:"IL",lat:41.93381,lon:-88.70657},KDNV:{id:"KDNV",city:"Danville, Vermilion County Airport",state:"IL",lat:40.19944,lon:-87.59556},KDPA:{id:"KDPA",city:"Chicago / West Chicago, Dupage Airport",state:"IL",lat:41.8963899,lon:-88.25111},KENL:{id:"KENL",city:"Centralia Municipal Airport",state:"IL",lat:38.50951,lon:-89.08996},KFEP:{id:"KFEP",city:"Albertus Airport",state:"IL",lat:42.24751,lon:-89.58104},KFOA:{id:"KFOA",city:"Flora Municipal Airport",state:"IL",lat:38.66726,lon:-88.4526999},KFWC:{id:"KFWC",city:"Fairfield, Fairfield Municipal Airport",state:"IL",lat:38.37861,lon:-88.41278},KGBG:{id:"KGBG",city:"Galesburg Municipal Airport",state:"IL",lat:40.9328999,lon:-90.43339},KHSB:{id:"KHSB",city:"Harrisburg-Raleigh Airport",state:"IL",lat:37.81281,lon:-88.54486},KIGQ:{id:"KIGQ",city:"Lansing Municipal Airport",state:"IL",lat:41.54125,lon:-87.52822},KIJX:{id:"KIJX",city:"Jacksonville Municipal Airport",state:"IL",lat:39.7740099,lon:-90.24187},KIKK:{id:"KIKK",city:"Greater Kankakee Airport",state:"IL",lat:41.06871,lon:-87.85372},KJOT:{id:"KJOT",city:"Joliet Regional Airport",state:"IL",lat:41.51755,lon:-88.17903},KLOT:{id:"KLOT",city:"Lewis University Airport",state:"IL",lat:41.60307,lon:-88.10164},KLWV:{id:"KLWV",city:"Lawrenceville-Vincennes International Airport",state:"IL",lat:38.76046,lon:-87.59903},KMDH:{id:"KMDH",city:"Southern Illinois Airport",state:"IL",lat:37.78328,lon:-89.24532},KMDW:{id:"KMDW",city:"Chicago, Chicago Midway Airport",state:"IL",lat:41.78417,lon:-87.75528},KMLI:{id:"KMLI",city:"Moline Quad-City Airport",state:"IL",lat:41.4482,lon:-90.52359},KMQB:{id:"KMQB",city:"Macomb Municipal Airport",state:"IL",lat:40.5176299,lon:-90.64807},KMTO:{id:"KMTO",city:"Mattoon / Charleston, Coles County Memorial Airport",state:"IL",lat:39.47806,lon:-88.2791699},KMVN:{id:"KMVN",city:"Mount Vernon Airport",state:"IL",lat:38.32842,lon:-88.85292},KMWA:{id:"KMWA",city:"Marion - Williamson County Regional Airport",state:"IL",lat:37.76671,lon:-89.00993},KOLY:{id:"KOLY",city:"Olney-Noble Airport",state:"IL",lat:38.72133,lon:-88.1799},KORD:{id:"KORD",city:"Chicago, Chicago-O'Hare International Airport",state:"IL",lat:41.97972,lon:-87.9044399},KPIA:{id:"KPIA",city:"Peoria - General Downing-Peoria International Airport",state:"IL",lat:40.6674999,lon:-89.68389},KPNT:{id:"KPNT",city:"Pontiac Municipal Airport",state:"IL",lat:40.92327,lon:-88.6213},KPPQ:{id:"KPPQ",city:"Pittsfield, Pittsfield Penstone Municipal Airport",state:"IL",lat:39.63889,lon:-90.77833},KPRG:{id:"KPRG",city:"Edgar County Airport",state:"IL",lat:39.69817,lon:-87.6669},KPWK:{id:"KPWK",city:"Chicago / Wheeling, Pal-Waukee Airport",state:"IL",lat:42.12083,lon:-87.90472},KRFD:{id:"KRFD",city:"Rockford, Greater Rockford Airport",state:"IL",lat:42.19278,lon:-89.09333},KRPJ:{id:"KRPJ",city:"Rochelle, Rochelle Municipal-Koritz Field Airport",state:"IL",lat:41.8905699,lon:-89.08175},KRSV:{id:"KRSV",city:"Robinson Municipal Airport",state:"IL",lat:39.01361,lon:-87.64846},KSAR:{id:"KSAR",city:"Sparta Community-Hunter Field Airport",state:"IL",lat:38.14624,lon:-89.70243},KSFY:{id:"KSFY",city:"Tri-Township Airport",state:"IL",lat:42.04544,lon:-90.11009},KSLO:{id:"KSLO",city:"Salem, Salem-Leckrone Airport",state:"IL",lat:38.64278,lon:-88.96417},KSPI:{id:"KSPI",city:"Springfield - Abraham Lincoln Capital Airport",state:"IL",lat:39.84527,lon:-89.68405},KSQI:{id:"KSQI",city:"Sterling Rockfalls",state:"IL",lat:41.7432,lon:-89.66547},KTAZ:{id:"KTAZ",city:"Taylorville, Taylorville Municipal Airport",state:"IL",lat:39.53417,lon:-89.32778},KTIP:{id:"KTIP",city:"Rantoul National Aviation Center Airport",state:"IL",lat:40.28952,lon:-88.1473},KUGN:{id:"KUGN",city:"Chicago/Waukegan Regional Airport",state:"IL",lat:42.42546,lon:-87.86339},KUIN:{id:"KUIN",city:"Quincy Regional Airport-Baldwin Field",state:"IL",lat:39.9371,lon:-91.19659},KVYS:{id:"KVYS",city:"Illinois Valley Regional Airport",state:"IL",lat:41.35175,lon:-89.14963},KSZT:{id:"KSZT",city:"Sandpoint, Sandpoint Airport",state:"ID",lat:48.29944,lon:-116.56},KTBI:{id:"KTBI",city:"Kettle Butte",state:"ID",lat:43.5486099,lon:-112.32583},KTWF:{id:"KTWF",city:"Joslin Field - Magic Valley Regional Airport",state:"ID",lat:42.4784999,lon:-114.47739},PICI:{id:"PICI",city:"PICABO",state:"ID",lat:43.31167,lon:-114.16583},PMAI:{id:"PMAI",city:"PARMA",state:"ID",lat:43.8,lon:-116.93333},KAAO:{id:"KAAO",city:"Wichita Jabara Airport",state:"KS",lat:37.74969,lon:-97.21908},KADT:{id:"KADT",city:"Atwood-Rawlins County City-County Airport",state:"KS",lat:39.84034,lon:-101.04248},KBEC:{id:"KBEC",city:"Beech Factory Airport",state:"KS",lat:37.69392,lon:-97.21492},KCBK:{id:"KCBK",city:"Colby Shaltz Field Airport",state:"KS",lat:39.43,lon:-101.0511},KCFV:{id:"KCFV",city:"Coffeyville, Coffeyville Municipal Airport",state:"KS",lat:37.09111,lon:-95.56639},KCNK:{id:"KCNK",city:"Concordia, Blosser Municipal Airport",state:"KS",lat:39.55139,lon:-97.65056},KCNU:{id:"KCNU",city:"Chanute, Chanute Martin Johnson Airport",state:"KS",lat:37.67028,lon:-95.48417},KDDC:{id:"KDDC",city:"Dodge City, Dodge City Regional Airport",state:"KS",lat:37.77278,lon:-99.96972},KEHA:{id:"KEHA",city:"Elkhart, Elkhart-Morton County Airport",state:"KS",lat:37,lon:-101.88333},KEMP:{id:"KEMP",city:"Emporia, Emporia Municipal Airport",state:"KS",lat:38.32889,lon:-96.19389},KEQA:{id:"KEQA",city:"El Dorado Captain Jack Thomas Airport",state:"KS",lat:37.77534,lon:-96.81449},KEWK:{id:"KEWK",city:"Newton, Newton City/County Airport",state:"KS",lat:38.05,lon:-97.28333},KFOE:{id:"KFOE",city:"Topeka, Forbes Field",state:"KS",lat:38.94139,lon:-95.65056},KFRI:{id:"KFRI",city:"Fort Riley - Marshall AAF",state:"KS",lat:39.05586,lon:-96.76166},KGBD:{id:"KGBD",city:"Great Bend, Great Bend Municipal Airport",state:"KS",lat:38.35,lon:-98.86667},KGCK:{id:"KGCK",city:"Garden City Regional Airport",state:"KS",lat:37.9275,lon:-100.72444},KGLD:{id:"KGLD",city:"Goodland, Renner Field",state:"KS",lat:39.3675,lon:-101.69306},KHLC:{id:"KHLC",city:"Hill City, Hill City Municipal Airport",state:"KS",lat:39.37472,lon:-99.82972},KHQG:{id:"KHQG",city:"Hugoton Municipal Airport",state:"KS",lat:37.16308,lon:-101.37052},KHUT:{id:"KHUT",city:"Hutchinson, Hutchinson Municipal Airport",state:"KS",lat:38.06806,lon:-97.86056},KHYS:{id:"KHYS",city:"Hays, Hays Regional Airport",state:"KS",lat:38.85,lon:-99.26667},KIAB:{id:"KIAB",city:"McConnell Air Force Base",state:"KS",lat:37.61667,lon:-97.26667},KICT:{id:"KICT",city:"Wichita - Wichita Dwight D. Eisenhower National Airport",state:"KS",lat:37.64722,lon:-97.42944},KIDP:{id:"KIDP",city:"INDEPENDENCE",state:"KS",lat:37.1584,lon:-95.7784},KIXD:{id:"KIXD",city:"Olathe, New Century Aircenter",state:"KS",lat:38.82444,lon:-94.88694},KJHN:{id:"KJHN",city:"Stanton County Municipal Airport",state:"KS",lat:37.5782,lon:-101.7304},KLBL:{id:"KLBL",city:"Liberal, Liberal Municipal Airport",state:"KS",lat:37.05,lon:-100.9666699},KLWC:{id:"KLWC",city:"Lawrence, Lawrence Municipal Airport",state:"KS",lat:39.00833,lon:-95.21167},KLYO:{id:"KLYO",city:"Lyons-Rice County Municipal Airport",state:"KS",lat:38.34025,lon:-98.22856},KMHK:{id:"KMHK",city:"Manhattan, Manhattan Municipal Airport",state:"KS",lat:39.13528,lon:-96.67778},KMYZ:{id:"KMYZ",city:"Marysville Municipal Airport",state:"KS",lat:39.8553,lon:-96.6306},KNRN:{id:"KNRN",city:"Norton Municipal Airport",state:"KS",lat:39.85047,lon:-99.89469},KOEL:{id:"KOEL",city:"Oakley Municipal Airport",state:"KS",lat:39.11178,lon:-100.81667},KOIN:{id:"KOIN",city:"Oberlin Municipal Airport",state:"KS",lat:39.83489,lon:-100.5397799},KOJC:{id:"KOJC",city:"Olathe, Johnson County Executive Airport",state:"KS",lat:38.85,lon:-94.73917},KOWI:{id:"KOWI",city:"Ottawa Municipal Airport",state:"KS",lat:38.5409,lon:-95.2542},KPPF:{id:"KPPF",city:"Parsons, Tri-City Airport",state:"KS",lat:37.32778,lon:-95.50417},KPTS:{id:"KPTS",city:"Atkinson Municipal Airport",state:"KS",lat:37.4494,lon:-94.7311},KPTT:{id:"KPTT",city:"Pratt Municipal",state:"KS",lat:37.7,lon:-98.75},KRSL:{id:"KRSL",city:"Russell, Russell Municipal Airport",state:"KS",lat:38.87278,lon:-98.8130599},KSLN:{id:"KSLN",city:"Salina, Salina Municipal Airport",state:"KS",lat:38.78,lon:-97.64417},KSYF:{id:"KSYF",city:"ST FRANCIS",state:"KS",lat:39.763884,lon:-101.797861},KTOP:{id:"KTOP",city:"Topeka, Philip Billard Municipal Airport",state:"KS",lat:39.0725,lon:-95.6258299},KTQK:{id:"KTQK",city:"Scott City Municipal Airport",state:"KS",lat:38.47502,lon:-100.88444},KUKL:{id:"KUKL",city:"Coffey County Airport",state:"KS",lat:38.30247,lon:-95.72497},KULS:{id:"KULS",city:"Ulysses Airport",state:"KS",lat:37.604,lon:-101.37356},KWLD:{id:"KWLD",city:"Winfield / Arkansas City, Strother Field",state:"KS",lat:37.1680599,lon:-97.03694},KAUM:{id:"KAUM",city:"Austin Municipal",state:"MN",lat:43.66667,lon:-92.93333},KAXN:{id:"KAXN",city:"Alexandria, Chandler Field",state:"MN",lat:45.8686099,lon:-95.39417},KBBB:{id:"KBBB",city:"Benson Municipal Airport",state:"MN",lat:45.3309799,lon:-95.64692},KBDE:{id:"KBDE",city:"Baudette International Airport",state:"MN",lat:48.72605,lon:-94.61215},KBDH:{id:"KBDH",city:"Willmar Municipal Airport - John L. Rice Field",state:"MN",lat:45.11113,lon:-95.1258299},KBJI:{id:"KBJI",city:"Bemidji",state:"MN",lat:47.50762,lon:-94.92783},KBRD:{id:"KBRD",city:"Brainerd - Crow Wing County Airport",state:"MN",lat:46.40205,lon:-94.12734},KCDD:{id:"KCDD",city:"Crane Lake - Scotts Seaplane Base",state:"MN",lat:48.26014,lon:-92.47485},KCFE:{id:"KCFE",city:"Buffalo, Buffalo Municipal Airport",state:"MN",lat:45.15889,lon:-93.84306},KCKC:{id:"KCKC",city:"Grand Marais/Cook County Airport",state:"MN",lat:47.83665,lon:-90.3864399},KCKN:{id:"KCKN",city:"Crookston Municipal Field",state:"MN",lat:47.84042,lon:-96.6200999},KCNB:{id:"KCNB",city:"Canby Airfield",state:"MN",lat:44.7295,lon:-96.266},KCOQ:{id:"KCOQ",city:"Cloquet Carlton County Airport",state:"MN",lat:46.69869,lon:-92.5034},KCQM:{id:"KCQM",city:"Cook Municipal Airport",state:"MN",lat:47.81997,lon:-92.68169},KDLH:{id:"KDLH",city:"Duluth International Airport",state:"MN",lat:46.84347,lon:-92.1866},KDTL:{id:"KDTL",city:"Detroit Lakes Airport-Wething Field",state:"MN",lat:46.8285399,lon:-95.88567},KDVP:{id:"KDVP",city:"Slayton Municipal Airport",state:"MN",lat:43.99055,lon:-95.78102},KDXX:{id:"KDXX",city:"Madison, Madison-Lac Qui Parle County Airport",state:"MN",lat:44.9839399,lon:-96.1788399},KDYT:{id:"KDYT",city:"Duluth - Sky Harbor Airport",state:"MN",lat:46.72452,lon:-92.0444799},KELO:{id:"KELO",city:"Ely, Ely Municipal Airport",state:"MN",lat:47.81667,lon:-91.83333},KETH:{id:"KETH",city:"Wheaton Municipal Airport",state:"MN",lat:45.78284,lon:-96.54607},KEVM:{id:"KEVM",city:"Eveleth-Virginia Municipal Airport",state:"MN",lat:47.4274,lon:-92.49717},KFBL:{id:"KFBL",city:"Faribault, Faribault Municipal Airport",state:"MN",lat:44.32983,lon:-93.31186},KFCM:{id:"KFCM",city:"Minneapolis - Flying Cloud Airport",state:"MN",lat:44.83217,lon:-93.47051},KFFM:{id:"KFFM",city:"Fergus Falls Municipal Airport-Einar Mickel",state:"MN",lat:46.28655,lon:-96.15338},KFGN:{id:"KFGN",city:"Flag Island",state:"MN",lat:49.31667,lon:-94.9},KFKA:{id:"KFKA",city:"Preston, Fillmore County Airport",state:"MN",lat:43.67701,lon:-92.17422},KFOZ:{id:"KFOZ",city:"Bigfork Municipal Airport",state:"MN",lat:47.78317,lon:-93.65326},KFRM:{id:"KFRM",city:"Fairmont, Fairmont Municipal Airport",state:"MN",lat:43.65,lon:-94.41667},KFSE:{id:"KFSE",city:"Fosston, Fosston Municipal Airport",state:"MN",lat:47.59278,lon:-95.77333},KGDB:{id:"KGDB",city:"Granite Falls, Granite Falls Municipal Airport/Lenzen-Roe Memorial Field",state:"MN",lat:44.75306,lon:-95.55583},KGHW:{id:"KGHW",city:"Glenwood Municipal Airport",state:"MN",lat:45.64564,lon:-95.31876},KGNA:{id:"KGNA",city:"Grand Marais, The Bay of Grand Marais",state:"MN",lat:47.7472,lon:-90.3443999},KGPZ:{id:"KGPZ",city:"Grand Rapids, Grand Rapids/Itasca County Airport-Gordon Newstrom Field",state:"MN",lat:47.21667,lon:-93.51667},KGYL:{id:"KGYL",city:"Glencoe Municipal Airport",state:"MN",lat:44.7588,lon:-94.0905},KHCD:{id:"KHCD",city:"Hutchinson, Hutchinson Municipal Airport-Butler Field",state:"MN",lat:44.85961,lon:-94.38551},KHCO:{id:"KHCO",city:"Hallock Municipal Airport",state:"MN",lat:48.75245,lon:-96.93759},KHIB:{id:"KHIB",city:"Chisholm-Hibbing Airport",state:"MN",lat:47.38039,lon:-92.83245},KHZX:{id:"KHZX",city:"Mc Gregor - Isedor Iverson Airport",state:"MN",lat:46.61904,lon:-93.31267},KINL:{id:"KINL",city:"Falls International Airport",state:"MN",lat:48.55944,lon:-93.39556},KJKJ:{id:"KJKJ",city:"Moorhead Municipal Airport",state:"MN",lat:46.8404,lon:-96.65442},KJMR:{id:"KJMR",city:"Mora Municipal Airport",state:"MN",lat:45.88863,lon:-93.26901},KJYG:{id:"KJYG",city:"St. James Municipal Airport",state:"MN",lat:43.98558,lon:-94.55299},KLJF:{id:"KLJF",city:"Litchfield Municipal Airport",state:"MN",lat:45.09485,lon:-94.50837},KLVN:{id:"KLVN",city:"Minneapolis, Airlake Airport",state:"MN",lat:44.62778,lon:-93.22806},KLXL:{id:"KLXL",city:"Little Falls, Little Falls/Morrison County Airport-Lindbergh Field",state:"MN",lat:45.95,lon:-94.35},KLYV:{id:"KLYV",city:"Quentin Aanenson Field Airport",state:"MN",lat:43.62166,lon:-96.2139399},KMGG:{id:"KMGG",city:"Maple Lake, Maple Lake Municipal Airport",state:"MN",lat:45.2353499,lon:-93.98959},KMIC:{id:"KMIC",city:"Minneapolis, Crystal Airport",state:"MN",lat:45.0625,lon:-93.35083},KMJQ:{id:"KMJQ",city:"Jackson, Jackson Municipal Airport",state:"MN",lat:43.65,lon:-94.98333},KMKT:{id:"KMKT",city:"Mankato, Mankato Regional Airport",state:"MN",lat:44.21667,lon:-93.91667},KMML:{id:"KMML",city:"Marshall, Southwest Minnesota Regional Airport - Marshall/Ryan Field",state:"MN",lat:44.45,lon:-95.81667},KMOX:{id:"KMOX",city:"Morris, Morris Municipal Airport",state:"MN",lat:45.56667,lon:-95.9666699},KMSP:{id:"KMSP",city:"Minneapolis, Minneapolis-St. Paul International Airport",state:"MN",lat:44.88306,lon:-93.22889},KMVE:{id:"KMVE",city:"Montevideo-Chippewa County Airport",state:"MN",lat:44.96749,lon:-95.71159},KMWM:{id:"KMWM",city:"Windom Municipal Airport",state:"MN",lat:43.90999,lon:-95.10723},KMZH:{id:"KMZH",city:"Moose Lake Carlton County Airport",state:"MN",lat:46.41632,lon:-92.80491},KONA:{id:"KONA",city:"Winona, Winona Municipal Airport-Max Conrad Field",state:"MN",lat:44.0833299,lon:-91.7},KORB:{id:"KORB",city:"Orr Regional Airport",state:"MN",lat:48.0170699,lon:-92.85376},KOTG:{id:"KOTG",city:"Worthington, Worthington Municipal Airport",state:"MN",lat:43.65,lon:-95.58333},KOVL:{id:"KOVL",city:"Olivia Regional Airport",state:"MN",lat:44.77923,lon:-95.03033},KOWA:{id:"KOWA",city:"Owatonna Degner Regional Airport",state:"MN",lat:44.11907,lon:-93.25687},KPEX:{id:"KPEX",city:"Paynesville, Paynesville Municipal Airport",state:"MN",lat:45.37247,lon:-94.73878},KPKD:{id:"KPKD",city:"Park Rapids Municipal Airport",state:"MN",lat:46.8996799,lon:-95.06681},KPNM:{id:"KPNM",city:"Princeton",state:"MN",lat:45.56425,lon:-93.6080099},KPQN:{id:"KPQN",city:"Pipestone Municipal Airport",state:"MN",lat:43.98542,lon:-96.29764},KPWC:{id:"KPWC",city:"Pine River Regional Airport",state:"MN",lat:46.72654,lon:-94.38485},KROS:{id:"KROS",city:"Rush City Regional Airport",state:"MN",lat:45.69628,lon:-92.95424},KROX:{id:"KROX",city:"Roseau, Roseau Municipal Airport/Rudy Billberg Field",state:"MN",lat:48.85,lon:-95.7},KRRT:{id:"KRRT",city:"Warroad International Memorial Airport",state:"MN",lat:48.93183,lon:-95.3404599},KRST:{id:"KRST",city:"Rochester, Rochester International Airport",state:"MN",lat:43.90417,lon:-92.49167},KRWF:{id:"KRWF",city:"Redwood Falls Municipal Airport",state:"MN",lat:44.54828,lon:-95.08042},KRYM:{id:"KRYM",city:"Ray S Miller Army Airfield",state:"MN",lat:46.08997,lon:-94.35986},KSAZ:{id:"KSAZ",city:"Staples, Staples Municipal Airport",state:"MN",lat:46.38083,lon:-94.80667},KSGS:{id:"KSGS",city:"South St. Paul Municipal-Richard E. Flemi",state:"MN",lat:44.86006,lon:-93.03203},KSTC:{id:"KSTC",city:"St. Cloud Regional Airport",state:"MN",lat:45.54415,lon:-94.05165},KSTP:{id:"KSTP",city:"Downtown Holman Field",state:"MN",lat:44.93237,lon:-93.05588},KSYN:{id:"KSYN",city:"Stanton Airfield",state:"MN",lat:44.4736199,lon:-93.01448},KTKC:{id:"KTKC",city:"Tracy, Tracy Municipal Airport",state:"MN",lat:44.24951,lon:-95.61189},KTOB:{id:"KTOB",city:"Dodge Center Airport",state:"MN",lat:44.02026,lon:-92.8295},KTVF:{id:"KTVF",city:"Thief River Falls, Thief River Falls Regional Airport",state:"MN",lat:48.06667,lon:-96.18333},KTWM:{id:"KTWM",city:"Two Harbors",state:"MN",lat:47.05,lon:-91.75},KULM:{id:"KULM",city:"New Ulm Municipal Airport",state:"MN",lat:44.32274,lon:-94.50244},KVVV:{id:"KVVV",city:"Ortonville, Ortonville Muncipal-Martinson Field Airport",state:"MN",lat:45.30556,lon:-96.42444},KVWU:{id:"KVWU",city:"Waskish Municipal Airport",state:"MN",lat:48.15014,lon:-94.512},KXVG:{id:"KXVG",city:"Longville, Longville Municipal Airport",state:"MN",lat:46.99028,lon:-94.20389},KAKQ:{id:"KAKQ",city:"Wakefield Municipal Airport",state:"VA",lat:36.98274,lon:-77.00137},KAVC:{id:"KAVC",city:"South Hill, Mecklenburg-Brunswick Regional Airport",state:"VA",lat:36.68861,lon:-78.05417},KBCB:{id:"KBCB",city:"Virginia Tech Airport",state:"VA",lat:37.21667,lon:-80.41667},KBKT:{id:"KBKT",city:"Ft. Pickett / Blackstone",state:"VA",lat:37.0833299,lon:-77.95},KCHO:{id:"KCHO",city:"Charlottesville-Albemarle Airport",state:"VA",lat:38.13738,lon:-78.45516},KCJR:{id:"KCJR",city:"Culpeper Regional Airport",state:"VA",lat:38.52607,lon:-77.85738},KCPK:{id:"KCPK",city:"Chesapeake, Chesapeake Municipal Airport",state:"VA",lat:36.66556,lon:-76.32056},KCXE:{id:"KCXE",city:"Chase City Municipal Airport",state:"VA",lat:36.7883,lon:-78.5016},KDAA:{id:"KDAA",city:"Fort Belvoir",state:"VA",lat:38.71667,lon:-77.18333},KDAN:{id:"KDAN",city:"Danville, Danville Regional Airport",state:"VA",lat:36.57278,lon:-79.33611},KDCA:{id:"KDCA",city:"Washington/Reagan National Airport, DC",state:"VA",lat:38.84833,lon:-77.03417},KEMV:{id:"KEMV",city:"Emporia, Emporia-Greensville Regional Airport",state:"VA",lat:36.68694,lon:-77.48278},KEZF:{id:"KEZF",city:"Fredericksburg, Shannon Airport",state:"VA",lat:38.26667,lon:-77.45},KFAF:{id:"KFAF",city:"Fort Eustis / Felker",state:"VA",lat:37.13333,lon:-76.61667},KFCI:{id:"KFCI",city:"Chesterfield County Airport",state:"VA",lat:37.406444,lon:-77.524833},KFKN:{id:"KFKN",city:"Franklin / J B Rose",state:"VA",lat:36.7,lon:-76.9},KFRR:{id:"KFRR",city:"Front Royal-warren County Airport",state:"VA",lat:38.9174999,lon:-78.2535},KFVX:{id:"KFVX",city:"Farmville",state:"VA",lat:37.35,lon:-78.43333},KFYJ:{id:"KFYJ",city:"West Point, Middle Peninsula Regional Airport",state:"VA",lat:37.52111,lon:-76.7644399},KGVE:{id:"KGVE",city:"Gordonsville Municipal Airport",state:"VA",lat:38.156,lon:-78.1658},KHEF:{id:"KHEF",city:"Manassas, Manassas Regional Airport/Harry P. Davis Field",state:"VA",lat:38.71667,lon:-77.51667},KHLX:{id:"KHLX",city:"Hillsville",state:"VA",lat:36.76667,lon:-80.81667},KHSP:{id:"KHSP",city:"Hot Springs / Ingalls",state:"VA",lat:37.95,lon:-79.83333},KHWY:{id:"KHWY",city:"Warrenton-Fauquier Airport",state:"VA",lat:38.5876499,lon:-77.71501},KIAD:{id:"KIAD",city:"Washington/Dulles International Airport, DC",state:"VA",lat:38.93472,lon:-77.4475},KJFZ:{id:"KJFZ",city:"Tazewell County Airport",state:"VA",lat:37.064,lon:-81.798},KJGG:{id:"KJGG",city:"Williamsburg-Jamestown Airport",state:"VA",lat:37.24157,lon:-76.71672},KJYO:{id:"KJYO",city:"Leesburg / Godfrey",state:"VA",lat:39.0833299,lon:-77.56667},KLFI:{id:"KLFI",city:"Langley Air Force Base",state:"VA",lat:37.0833299,lon:-76.35},KLKU:{id:"KLKU",city:"Louisa, Louisa County Airport/Freeman Field",state:"VA",lat:38.00972,lon:-77.97028},KLNP:{id:"KLNP",city:"Wise / Lonesome Pine",state:"VA",lat:36.98333,lon:-82.53333},KLUA:{id:"KLUA",city:"Luray Caverns",state:"VA",lat:38.6671,lon:-78.5006},KLVL:{id:"KLVL",city:"Lawrenceville/Brunswick Municipal Airport",state:"VA",lat:36.7727999,lon:-77.7943},KLYH:{id:"KLYH",city:"Lynchburg, Lynchburg Regional Airport",state:"VA",lat:37.32083,lon:-79.20667},KMFV:{id:"KMFV",city:"Melfa / Accomack Airport",state:"VA",lat:37.65,lon:-75.76667},KMKJ:{id:"KMKJ",city:"Marion / Wytheville",state:"VA",lat:36.9,lon:-81.35},KMTV:{id:"KMTV",city:"Martinsville",state:"VA",lat:36.63333,lon:-80.01667},KNFE:{id:"KNFE",city:"Fentress, Naval Auxiliary Landing Field",state:"VA",lat:36.70083,lon:-76.12833},KNGU:{id:"KNGU",city:"Norfolk, Naval Air Station",state:"VA",lat:36.93361,lon:-76.29583},KNTU:{id:"KNTU",city:"Virginia Beach, Oceana, Naval Air Station",state:"VA",lat:36.82111,lon:-76.02833},KNYG:{id:"KNYG",city:"Quantico Marine Corps Airfield - Turner Field",state:"VA",lat:38.50326,lon:-77.30129},KOFP:{id:"KOFP",city:"Ashland, Hanover County Municipal Airport",state:"VA",lat:37.70806,lon:-77.43444},KOKV:{id:"KOKV",city:"Winchester Regional",state:"VA",lat:39.15,lon:-78.15},KOMH:{id:"KOMH",city:"Orange, Orange County Airport",state:"VA",lat:38.24722,lon:-78.04556},KORF:{id:"KORF",city:"Norfolk, Norfolk International Airport",state:"VA",lat:36.90361,lon:-76.19194},KPHF:{id:"KPHF",city:"Newport News, Newport News / Williamsburg International Airport",state:"VA",lat:37.13194,lon:-76.49306},KPSK:{id:"KPSK",city:"Dublin / New River Valley",state:"VA",lat:37.13333,lon:-80.68333},KPTB:{id:"KPTB",city:"Petersburg, Dinwiddie County Airport",state:"VA",lat:37.18333,lon:-77.51667},KPVG:{id:"KPVG",city:"Norfolk Hampton Roads Executive Airport",state:"VA",lat:36.7801,lon:-76.4488},KRIC:{id:"KRIC",city:"Richmond, Richmond International Airport",state:"VA",lat:37.51111,lon:-77.32333},KRMN:{id:"KRMN",city:"Stafford, Stafford Regional Airport",state:"VA",lat:38.39806,lon:-77.45528},KROA:{id:"KROA",city:"Roanoke, Roanoke Regional Airport",state:"VA",lat:37.31694,lon:-79.97417},KSFQ:{id:"KSFQ",city:"Suffolk, Suffolk Municipal Airport",state:"VA",lat:36.68222,lon:-76.60194},KSHD:{id:"KSHD",city:"Staunton / Shenandoah",state:"VA",lat:38.26667,lon:-78.9},KTGI:{id:"KTGI",city:"Tangier Island Airport",state:"VA",lat:37.82587,lon:-75.99766},KVBW:{id:"KVBW",city:"Bridgewater Air Park",state:"VA",lat:38.36674,lon:-78.96033},KVJI:{id:"KVJI",city:"Abingdon",state:"VA",lat:36.68333,lon:-82.03333},KWAL:{id:"KWAL",city:"Wallops Flight Facility Airport",state:"VA",lat:37.9372,lon:-75.46619},KXSA:{id:"KXSA",city:"Tappahannock-Essex County Airport",state:"VA",lat:37.859611,lon:-76.894111},KBCE:{id:"KBCE",city:"Bryce Canyon Airport",state:"UT",lat:37.7012799,lon:-112.14897},KBDG:{id:"KBDG",city:"Blanding Municipal Airport",state:"UT",lat:37.586,lon:-109.482},KBMC:{id:"KBMC",city:"Brigham City Regional Airport",state:"UT",lat:41.5464,lon:-112.0601},KCDC:{id:"KCDC",city:"Cedar City Municipal Airport",state:"UT",lat:37.70675,lon:-113.09695},KCNY:{id:"KCNY",city:"Moab, Canyonlands Field",state:"UT",lat:38.76,lon:-109.74472},KDPG:{id:"KDPG",city:"Michael Army Airfield - Dugway Proving Ground",state:"UT",lat:40.18376,lon:-112.9217},KDTA:{id:"KDTA",city:"Delta, Delta Municipal Airport",state:"UT",lat:39.38333,lon:-112.50967},KENV:{id:"KENV",city:"Wendover / Air Force Auxillary Field",state:"UT",lat:40.72056,lon:-114.03583},KHCR:{id:"KHCR",city:"Heber City Municipal-Russ McDonald Field Airport",state:"UT",lat:40.47742,lon:-111.43295},KHIF:{id:"KHIF",city:"Hill Air Force Base",state:"UT",lat:41.11112,lon:-111.96229},KHVE:{id:"KHVE",city:"Hanksville",state:"UT",lat:38.418037,lon:-110.704038},KKNB:{id:"KKNB",city:"KANAB MUNICIPAL AIRPORT",state:"UT",lat:37.01,lon:-112.53},KLGU:{id:"KLGU",city:"Logan-Cache Airport",state:"UT",lat:41.78652,lon:-111.85187},KMLF:{id:"KMLF",city:"Milford Municipal Airport",state:"UT",lat:38.42252,lon:-113.01089},KOGD:{id:"KOGD",city:"Ogden-Hinckley Airport",state:"UT",lat:41.19406,lon:-112.01681},KPUC:{id:"KPUC",city:"Price - Carbon County Regional Airport",state:"UT",lat:39.60886,lon:-110.75548},KPVU:{id:"KPVU",city:"Provo, Provo Municipal Airport",state:"UT",lat:40.21667,lon:-111.71667},KRIF:{id:"KRIF",city:"Richfield Municipal Airport",state:"UT",lat:38.73411,lon:-112.10158},KSGU:{id:"KSGU",city:"St George Municipal Airport",state:"UT",lat:37.0451,lon:-113.50561},KSLC:{id:"KSLC",city:"Salt Lake City, Salt Lake City International Airport",state:"UT",lat:40.77069,lon:-111.96503},KSPK:{id:"KSPK",city:"Spanish Fork Municipal Airport",state:"UT",lat:40.145,lon:-111.6677},KTVY:{id:"KTVY",city:"Bolinder Field-Tooele Valley Airport",state:"UT",lat:40.61269,lon:-112.35362},KVEL:{id:"KVEL",city:"Vernal Airport",state:"UT",lat:40.44295,lon:-109.51273},KJSY:{id:"KJSY",city:"Joseph State Airport AWOS",state:"OR",lat:45.355889,lon:-117.254083},KLGD:{id:"KLGD",city:"La Grande/Union County Airport",state:"OR",lat:45.29066,lon:-118.00884},KLKV:{id:"KLKV",city:"Lake County Airport",state:"OR",lat:42.15664,lon:-120.39721},KLMT:{id:"KLMT",city:"Klamath Falls International Airport",state:"OR",lat:42.14703,lon:-121.72548},KMEH:{id:"KMEH",city:"Meacham",state:"OR",lat:45.51176,lon:-118.42466},KMFR:{id:"KMFR",city:"Rogue Valley International Airport",state:"OR",lat:42.37503,lon:-122.87696},KMMV:{id:"KMMV",city:"McMinnville, McMinnville Municipal Airport",state:"OR",lat:45.19611,lon:-123.13222},KONO:{id:"KONO",city:"Ontario Municipal Airport",state:"OR",lat:44.01424,lon:-117.00808},KONP:{id:"KONP",city:"Newport, Newport Municipal Airport",state:"OR",lat:44.58028,lon:-124.05806},KOTH:{id:"KOTH",city:"Southwest Oregon Regional Airport",state:"OR",lat:43.41948,lon:-124.2437},KPDT:{id:"KPDT",city:"Eastern Oregon Regional Airport at Pendleton",state:"OR",lat:45.69757,lon:-118.83444},KPDX:{id:"KPDX",city:"Portland, Portland International Airport",state:"OR",lat:45.59578,lon:-122.60917},KRBG:{id:"KRBG",city:"Roseburg Regional Airport",state:"OR",lat:43.23368,lon:-123.3577},KRDM:{id:"KRDM",city:"Redmond Roberts Field",state:"OR",lat:44.25588,lon:-121.14059},KREO:{id:"KREO",city:"Rome",state:"OR",lat:42.5901799,lon:-117.86458},KSLE:{id:"KSLE",city:"Salem - McNary Field",state:"OR",lat:44.90493,lon:-123.00096},KSPB:{id:"KSPB",city:"Scappoose Industrial Airpark",state:"OR",lat:45.7691,lon:-122.86365},KSXT:{id:"KSXT",city:"Sexton Summit",state:"OR",lat:42.6,lon:-123.3656},KTMK:{id:"KTMK",city:"Tillamook, Tillamook Airport",state:"OR",lat:45.4180599,lon:-123.81444},KTTD:{id:"KTTD",city:"Portland, Portland-Troutdale Airport",state:"OR",lat:45.55111,lon:-122.40889},KUAO:{id:"KUAO",city:"Aurora State Airport",state:"OR",lat:45.24658,lon:-122.77095},PARO:{id:"PARO",city:"PARKDALE",state:"OR",lat:45.54444,lon:-121.61667},PCYO:{id:"PCYO",city:"PRARIE CITY",state:"OR",lat:44.44083,lon:-118.62778},PNGO:{id:"PNGO",city:"PINEGROVE",state:"OR",lat:45.65222,lon:-121.50917},POBO:{id:"POBO",city:"POWELL BUTTE",state:"OR",lat:44.24833,lon:-120.94972},KAAF:{id:"KAAF",city:"Apalachicola, Apalachicola",state:"FL",lat:29.72694,lon:-85.02472},KAPF:{id:"KAPF",city:"Naples, Naples Municipal Airport",state:"FL",lat:26.15,lon:-81.76667},KBCT:{id:"KBCT",city:"Boca Raton, Boca Raton Airport",state:"FL",lat:26.3786099,lon:-80.10778},KBKV:{id:"KBKV",city:"Brooksville-Tampa Bay Regional Airport",state:"FL",lat:28.47361,lon:-82.45444},KBOW:{id:"KBOW",city:"Bartow Municipal",state:"FL",lat:27.95,lon:-81.78333},KCEW:{id:"KCEW",city:"Crestview, Sikes Airport",state:"FL",lat:30.77222,lon:-86.52},KCGC:{id:"KCGC",city:"Crystal River Airport",state:"FL",lat:28.8673,lon:-82.5712999},KCLW:{id:"KCLW",city:"Clearwater Air Park",state:"FL",lat:27.9742,lon:-82.7563},KCOF:{id:"KCOF",city:"Cocoa - Patrick Air Force Base",state:"FL",lat:28.24219,lon:-80.60799},KCRG:{id:"KCRG",city:"Jacksonville Craig Municipal Airport",state:"FL",lat:30.33709,lon:-81.51275},KCTY:{id:"KCTY",city:"Cross City Airport",state:"FL",lat:29.633326,lon:-83.105458},KDAB:{id:"KDAB",city:"Daytona Beach International Airport",state:"FL",lat:29.17354,lon:-81.07186},KDED:{id:"KDED",city:"DeLand Municipal Airport",state:"FL",lat:29.067,lon:-81.2837},KDTS:{id:"KDTS",city:"Destin, Destin-Ft. Walton Beach Airport",state:"FL",lat:30.39333,lon:-86.4675},KECP:{id:"KECP",city:"Panama City - Northwest Florida Beaches International Airport",state:"FL",lat:30.3582,lon:-85.7955999},KEGI:{id:"KEGI",city:"Duke Field / Eglin Auxiliary",state:"FL",lat:30.65,lon:-86.51667},KEVB:{id:"KEVB",city:"New Smyrna Beach Municipal Airport",state:"FL",lat:29.05687,lon:-80.94909},KEYW:{id:"KEYW",city:"Key West International Airport",state:"FL",lat:24.55707,lon:-81.75539},KFHB:{id:"KFHB",city:"Fernandina Beach Municipal Airport",state:"FL",lat:30.61183,lon:-81.46119},KFIN:{id:"KFIN",city:"Flagler County Airport",state:"FL",lat:29.4657,lon:-81.20872},KFLL:{id:"KFLL",city:"Fort Lauderdale/Hollywood International Airport",state:"FL",lat:26.07874,lon:-80.1622},KFMY:{id:"KFMY",city:"Fort Myers, Page Field",state:"FL",lat:26.58417,lon:-81.8625},KFPR:{id:"KFPR",city:"Fort Pierce, St. Lucie County International Airport",state:"FL",lat:27.49806,lon:-80.37667},KFPY:{id:"KFPY",city:"Perry-Foley Airport",state:"FL",lat:30.07081,lon:-83.58154},KFXE:{id:"KFXE",city:"Fort Lauderdale, Fort Lauderdale Executive Airport",state:"FL",lat:26.2,lon:-80.18333},KGIF:{id:"KGIF",city:"Winter Havens Gilbert Airport",state:"FL",lat:28.06138,lon:-81.75684},KGNV:{id:"KGNV",city:"Gainesville, Gainesville Regional Airport",state:"FL",lat:29.69194,lon:-82.27556},KHRT:{id:"KHRT",city:"Hurlburt Field",state:"FL",lat:30.41667,lon:-86.68333},KHST:{id:"KHST",city:"Homestead Air Reserve Base",state:"FL",lat:25.4948799,lon:-80.37324},KHWO:{id:"KHWO",city:"Hollywood, North Perry Airport",state:"FL",lat:25.99889,lon:-80.24111},KIMM:{id:"KIMM",city:"IMMOKALEE",state:"FL",lat:26.43,lon:-81.4},KINF:{id:"KINF",city:"Inverness Airport",state:"FL",lat:28.8086,lon:-82.3165},KISM:{id:"KISM",city:"Kissimmee Gateway Airport",state:"FL",lat:28.29236,lon:-81.43716},KJAX:{id:"KJAX",city:"Jacksonville International Airport",state:"FL",lat:30.49534,lon:-81.6937},KLAL:{id:"KLAL",city:"Lakeland Regional",state:"FL",lat:27.98333,lon:-82.01667},KLCQ:{id:"KLCQ",city:"Lake City Municipal Airport",state:"FL",lat:30.1821,lon:-82.5769},KLEE:{id:"KLEE",city:"Leesburg International Airport",state:"FL",lat:28.82142,lon:-81.80964},KLNA:{id:"KLNA",city:"Palm Beach County Park Airport",state:"FL",lat:26.59305,lon:-80.08506},KMAI:{id:"KMAI",city:"Marianna Municipal Airport",state:"FL",lat:30.83698,lon:-85.18347},KMCF:{id:"KMCF",city:"Macdill Air Force Base, Fl.",state:"FL",lat:27.85,lon:-82.5},KMCO:{id:"KMCO",city:"Orlando International Airport",state:"FL",lat:28.41826,lon:-81.32413},KMIA:{id:"KMIA",city:"Miami, Miami International Airport",state:"FL",lat:25.79056,lon:-80.31639},KMKY:{id:"KMKY",city:"Marco Island Airport",state:"FL",lat:25.995,lon:-81.6725},KMLB:{id:"KMLB",city:"Melbourne International Airport",state:"FL",lat:28.09973,lon:-80.6356},KMTH:{id:"KMTH",city:"The Florida Keys - Marathon International Airport",state:"FL",lat:24.72626,lon:-81.04765},KNDZ:{id:"KNDZ",city:"Milton, Whiting Field South",state:"FL",lat:30.69722,lon:-87.02},KNIP:{id:"KNIP",city:"Jacksonville Naval Air Station",state:"FL",lat:30.23468,lon:-81.67462},KNPA:{id:"KNPA",city:"Pensacola Naval Air Station",state:"FL",lat:30.35641,lon:-87.32326},KNQX:{id:"KNQX",city:"Key West Naval Air Station",state:"FL",lat:24.5800899,lon:-81.68293},KNRB:{id:"KNRB",city:"Mayport Naval Station - Adm David L. McDonald Field",state:"FL",lat:30.39589,lon:-81.42286},KNSE:{id:"KNSE",city:"Milton - Whiting Field Naval Air Station North",state:"FL",lat:30.72848,lon:-87.02192},KOBE:{id:"KOBE",city:"Okeechobee County Airport",state:"FL",lat:27.2628,lon:-80.8498},KOCF:{id:"KOCF",city:"Ocala International Airport - Jim Taylor Field",state:"FL",lat:29.16372,lon:-82.22097},KOMN:{id:"KOMN",city:"Ormond Beach, Ormond Beach Municipal Airport",state:"FL",lat:29.30111,lon:-81.11361},KOPF:{id:"KOPF",city:"Miami, Opa Locka Airport",state:"FL",lat:25.91,lon:-80.28306},KORL:{id:"KORL",city:"Orlando Executive Airport",state:"FL",lat:28.54655,lon:-81.33543},KPAM:{id:"KPAM",city:"Tyndall Air Force Base",state:"FL",lat:30.06444,lon:-85.5637},KPBI:{id:"KPBI",city:"West Palm Beach - Palm Beach International Airport",state:"FL",lat:26.6850999,lon:-80.0991899},KPCM:{id:"KPCM",city:"Plant City, Plant City Municipal Airport",state:"FL",lat:28,lon:-82.15},KPGD:{id:"KPGD",city:"Punta Gorda, Charlotte County Airport",state:"FL",lat:26.91778,lon:-81.99361},KPIE:{id:"KPIE",city:"St. Petersburg/Clearwater Airport",state:"FL",lat:27.91259,lon:-82.68554},KPMP:{id:"KPMP",city:"Pompano Beach, Pompano Beach Airpark",state:"FL",lat:26.24556,lon:-80.11139},KPNS:{id:"KPNS",city:"Pensacola - Pensacola International Airport",state:"FL",lat:30.47806,lon:-87.18694},KRSW:{id:"KRSW",city:"Fort Myers, Southwest Florida International Airport",state:"FL",lat:26.52694,lon:-81.76639},KSEF:{id:"KSEF",city:"Sebring Regional Airport",state:"FL",lat:27.45639,lon:-81.34239},KSFB:{id:"KSFB",city:"Orlando / Sanford Airport",state:"FL",lat:28.78333,lon:-81.25},KSGJ:{id:"KSGJ",city:"Northeast Florida Regional Airport",state:"FL",lat:29.95924,lon:-81.34105},KSPG:{id:"KSPG",city:"Albert Whitted Airport",state:"FL",lat:27.76852,lon:-82.62564},KSRQ:{id:"KSRQ",city:"Sarasota / Bradenton, Sarasota-Bradenton International Airport",state:"FL",lat:27.40139,lon:-82.55861},KSUA:{id:"KSUA",city:"Witham Field Airport",state:"FL",lat:27.18157,lon:-80.22519},KTDR:{id:"KTDR",city:"Tyndall Drone Runway",state:"FL",lat:30.0333,lon:-85.5333},KTIX:{id:"KTIX",city:"Titusville",state:"FL",lat:28.51667,lon:-80.8},KTLH:{id:"KTLH",city:"Tallahassee International Airport",state:"FL",lat:30.39675,lon:-84.35087},KTMB:{id:"KTMB",city:"Miami, Kendall-Tamiami Executive Airport",state:"FL",lat:25.64194,lon:-80.43472},KTPA:{id:"KTPA",city:"Tampa, Tampa International Airport",state:"FL",lat:27.96139,lon:-82.54028},KTPF:{id:"KTPF",city:"Tampa, Peter O Knight Airport",state:"FL",lat:27.91556,lon:-82.44917},KTTS:{id:"KTTS",city:"Titusville, NASA Shuttle Landing Facility",state:"FL",lat:28.61667,lon:-80.7},KVDF:{id:"KVDF",city:"Tampa, Vandenberg Airport",state:"FL",lat:28.01983,lon:-82.3415},KVNC:{id:"KVNC",city:"Venice Municipal Airport",state:"FL",lat:27.0716,lon:-82.44033},KVPS:{id:"KVPS",city:"Valparaiso / Eglin Air Force Base",state:"FL",lat:30.48333,lon:-86.51667},KVQQ:{id:"KVQQ",city:"Cecil Airport",state:"FL",lat:30.21292,lon:-81.8707},KVRB:{id:"KVRB",city:"Vero Beach, Vero Beach Municipal Airport",state:"FL",lat:27.65556,lon:-80.41806},KXMR:{id:"KXMR",city:"Cocoa Beach, Cape Canaveral Air Force Station Skid Strip",state:"FL",lat:28.46667,lon:-80.56667},KZPH:{id:"KZPH",city:"Zephyrhills Airport",state:"FL",lat:28.2281,lon:-82.1559},KABH:{id:"KABH",city:"ELLICOTT-B AFA",state:"CO",lat:38.7578,lon:-104.3013},KAEJ:{id:"KAEJ",city:"Central Colorado Regional Airport",state:"CO",lat:38.81416,lon:-106.12069},KAFF:{id:"KAFF",city:"Air Force Academy",state:"CO",lat:38.96667,lon:-104.81667},KAJZ:{id:"KAJZ",city:"Delta/Blake Field Airport",state:"CO",lat:38.7868799,lon:-108.06584},KAKO:{id:"KAKO",city:"Colorado Plains Regional Airport",state:"CO",lat:40.17428,lon:-103.21459},KALS:{id:"KALS",city:"San Luis Valley Regional Airport",state:"CO",lat:37.43933,lon:-105.8618},KANK:{id:"KANK",city:"Harriet Alexander Field Airport",state:"CO",lat:38.53828,lon:-106.04864},KAPA:{id:"KAPA",city:"Denver - Centennial Airport",state:"CO",lat:39.55991,lon:-104.84841},KASE:{id:"KASE",city:"Aspen-Pitkin County Airport",state:"CO",lat:39.22992,lon:-106.87051},KBDU:{id:"KBDU",city:"Boulder Municipal Airport",state:"CO",lat:40.0394297,lon:-105.2258217},KBJC:{id:"KBJC",city:"Broomfield / Jeffco",state:"CO",lat:39.90085,lon:-105.10417},KBKF:{id:"KBKF",city:"Buckley Air Force Base Airport",state:"CO",lat:39.71331,lon:-104.75806},KCAG:{id:"KCAG",city:"Craig-Moffat Airport",state:"CO",lat:40.49297,lon:-107.52394},KCCU:{id:"KCCU",city:"Copper Mountain - Red Cliff Pass",state:"CO",lat:39.47523,lon:-106.15228},KCEZ:{id:"KCEZ",city:"Cortez-Montezuma County Airport",state:"CO",lat:37.30706,lon:-108.62644},KCFO:{id:"KCFO",city:"Colorado Air and Space Port Airport",state:"CO",lat:39.78419,lon:-104.53764},KCOS:{id:"KCOS",city:"City of Colorado Springs Municipal Airport",state:"CO",lat:38.8094899,lon:-104.68873},KCPW:{id:"KCPW",city:"Pagosa Springs, Wolf Creek Pass",state:"CO",lat:37.45139,lon:-106.80028},KCWN:{id:"KCWN",city:"Cheyenne Mountain",state:"CO",lat:38.7434299,lon:-104.84334},KDEN:{id:"KDEN",city:"Denver, Denver International Airport",state:"CO",lat:39.84658,lon:-104.65622},KDRO:{id:"KDRO",city:"Durango-La Plata County Airport",state:"CO",lat:37.14312,lon:-107.76023},KEEO:{id:"KEEO",city:"Meeker Airport",state:"CO",lat:40.0444,lon:-107.88832},KEGE:{id:"KEGE",city:"Eagle County Regional",state:"CO",lat:39.65,lon:-106.91667},KEIK:{id:"KEIK",city:"Erie Municipal Airport",state:"CO",lat:40.01169,lon:-105.05033},KFCS:{id:"KFCS",city:"Butts Army Airfield (Fort Carson)",state:"CO",lat:38.68312,lon:-104.75977},KFLY:{id:"KFLY",city:"Meadow Lake Airport",state:"CO",lat:38.94391,lon:-104.5684},KFMM:{id:"KFMM",city:"Fort Morgan Municipal Airport",state:"CO",lat:40.33148,lon:-103.80704},KFNL:{id:"KFNL",city:"Fort Collins/Loveland - Northern Colorado Regional Airport",state:"CO",lat:40.45,lon:-105.01667},KGJT:{id:"KGJT",city:"Grand Junction Regional Airport",state:"CO",lat:39.13389,lon:-108.53861},KGNB:{id:"KGNB",city:"Granby-Grand County Airport",state:"CO",lat:40.09006,lon:-105.91664},KGUC:{id:"KGUC",city:"Gunnison, Gunnison-Crested Butte Regional Airport",state:"CO",lat:38.53333,lon:-106.93333},KGXY:{id:"KGXY",city:"Greeley, Greeley-Weld County Airport",state:"CO",lat:40.43333,lon:-104.63333},KHDN:{id:"KHDN",city:"Hayden, Yampa Valley Airport",state:"CO",lat:40.48333,lon:-107.2166699},KHEQ:{id:"KHEQ",city:"Holyoke Airport",state:"CO",lat:40.57155,lon:-102.27676},KITR:{id:"KITR",city:"Burlington - Carson County Airport",state:"CO",lat:39.24149,lon:-102.2818999},KLAA:{id:"KLAA",city:"Lamar Municipal Airport",state:"CO",lat:38.0717799,lon:-102.68745},KLHX:{id:"KLHX",city:"La Junta Municipal Airport",state:"CO",lat:38.04949,lon:-103.51334},KLIC:{id:"KLIC",city:"Limon Municipal Airport",state:"CO",lat:39.27334,lon:-103.66738},KLMO:{id:"KLMO",city:"Vance Brand Airport",state:"CO",lat:40.16115,lon:-105.16042},KLXV:{id:"KLXV",city:"Leadville, Lake County Airport",state:"CO",lat:39.22806,lon:-106.31611},KMNH:{id:"KMNH",city:"Elbert Mountain - Monument Pass",state:"CO",lat:39.22317,lon:-104.6422599},KMTJ:{id:"KMTJ",city:"Montrose, Montrose Regional Airport",state:"CO",lat:38.505,lon:-107.8975},KMYP:{id:"KMYP",city:"Salida - Monarch Pass",state:"CO",lat:38.4972,lon:-106.3197},KPSO:{id:"KPSO",city:"Stevens Field, Pagosa Springs",state:"CO",lat:37.2862,lon:-107.056},KPUB:{id:"KPUB",city:"Pueblo Memorial Airport",state:"CO",lat:38.28869,lon:-104.5057},KRCV:{id:"KRCV",city:"Astronaut Kent Rominger - Del Norte",state:"CO",lat:37.7138,lon:-106.352},KRIL:{id:"KRIL",city:"Garfield County Regional Airport",state:"CO",lat:39.52793,lon:-107.71961},KSBS:{id:"KSBS",city:"Steamboat Springs",state:"CO",lat:40.5153,lon:-106.86767},KSPD:{id:"KSPD",city:"Springfield, Comanche National Grassland",state:"CO",lat:37.28333,lon:-102.61667},KSTK:{id:"KSTK",city:"Sterling Municipal Airport",state:"CO",lat:40.61331,lon:-103.26109},KTAD:{id:"KTAD",city:"Perry Stokes Airport",state:"CO",lat:37.26218,lon:-104.33184},KTEX:{id:"KTEX",city:"Telluride, Telluride Regional Airport",state:"CO",lat:37.95389,lon:-107.90861},KVTP:{id:"KVTP",city:"La Veta Mountain, La Veta Pass",state:"CO",lat:37.50111,lon:-105.16694},KALW:{id:"KALW",city:"Walla Walla Regional Airport",state:"WA",lat:46.09462,lon:-118.2858},KAWO:{id:"KAWO",city:"Arlington Municipal Airport",state:"WA",lat:48.1584999,lon:-122.15909},KBFI:{id:"KBFI",city:"Boeing Field - King County International Airport",state:"WA",lat:47.54548,lon:-122.3147},KBLI:{id:"KBLI",city:"Bellingham, Bellingham International Airport",state:"WA",lat:48.79911,lon:-122.54064},KBVS:{id:"KBVS",city:"Burlington/Mount Vernon, Skagit Regional Airport",state:"WA",lat:48.47083,lon:-122.42083},KCLM:{id:"KCLM",city:"Port Angeles Fairchild International Airport",state:"WA",lat:48.12194,lon:-123.50661},KCLS:{id:"KCLS",city:"Chehalis-Centralia Airport",state:"WA",lat:46.677,lon:-122.9827},KDEW:{id:"KDEW",city:"Deer Park, Deer Park Airport",state:"WA",lat:47.97417,lon:-117.42833},KDLS:{id:"KDLS",city:"The Dalles Municipal Airport",state:"WA",lat:45.61901,lon:-121.16572},KEAT:{id:"KEAT",city:"Wenatchee - Pangborn Memorial Airport",state:"WA",lat:47.39749,lon:-120.20121},KELN:{id:"KELN",city:"Ellensburg, Ellensburg Bowers Field",state:"WA",lat:47.0337699,lon:-120.53132},KEPH:{id:"KEPH",city:"Ephrata, Ephrata Municipal Airport",state:"WA",lat:47.3075,lon:-119.51583},KFHR:{id:"KFHR",city:"Friday Harbor Airport",state:"WA",lat:48.52,lon:-123.02637},KFLW:{id:"KFLW",city:"Kettle Falls",state:"WA",lat:48.595,lon:-118.12417},KGEG:{id:"KGEG",city:"Spokane, Spokane International Airport",state:"WA",lat:47.62139,lon:-117.52778},KGRF:{id:"KGRF",city:"Fort Lewis / Gray U. S. Army Airfield",state:"WA",lat:47.11667,lon:-122.55},KHQM:{id:"KHQM",city:"Hoquiam, Bowerman Airport",state:"WA",lat:46.97111,lon:-123.92},KKLS:{id:"KKLS",city:"Southwest Washington Regional Airport",state:"WA",lat:46.11553,lon:-122.89273},KMWH:{id:"KMWH",city:"Grant County Airport",state:"WA",lat:47.19299,lon:-119.31451},KNOW:{id:"KNOW",city:"Port Angeles Coast Guard Air Station",state:"WA",lat:48.13333,lon:-123.4},KNUW:{id:"KNUW",city:"Whidbey Island Naval Air Station - Ault Field",state:"WA",lat:48.35525,lon:-122.66352},KOLM:{id:"KOLM",city:"Olympia, Olympia Airport",state:"WA",lat:46.97333,lon:-122.90333},KOMK:{id:"KOMK",city:"Omak Airport",state:"WA",lat:48.46116,lon:-119.52086},KORS:{id:"KORS",city:"Eastsound, Orcas Island Airport",state:"WA",lat:48.70806,lon:-122.91028},KPAE:{id:"KPAE",city:"Everett Snohomish County",state:"WA",lat:47.92331,lon:-122.28305},KPLU:{id:"KPLU",city:"Pierce County-Thun Field",state:"WA",lat:47.104,lon:-122.287},KPSC:{id:"KPSC",city:"Tri-Cities Airport",state:"WA",lat:46.26955,lon:-119.11813},KPUW:{id:"KPUW",city:"Pullman / Moscow Regional Airport",state:"WA",lat:46.74377,lon:-117.11579},KPWT:{id:"KPWT",city:"Bremerton, Bremerton National Airport",state:"WA",lat:47.5,lon:-122.75},KRLD:{id:"KRLD",city:"Richland Airport",state:"WA",lat:46.30859,lon:-119.3058},KRNT:{id:"KRNT",city:"Renton Municipal Airport",state:"WA",lat:47.49509,lon:-122.21437},KSEA:{id:"KSEA",city:"Seattle, Seattle-Tacoma International Airport",state:"WA",lat:47.4447199,lon:-122.31361},KSFF:{id:"KSFF",city:"Spokane, Felts Field",state:"WA",lat:47.68556,lon:-117.32028},KSHN:{id:"KSHN",city:"Shelton, Shelton Sanderson Field",state:"WA",lat:47.23806,lon:-123.14083},KSKA:{id:"KSKA",city:"Fairchild Air Force Base",state:"WA",lat:47.61667,lon:-117.65},KSMP:{id:"KSMP",city:"Stampede Pass",state:"WA",lat:47.27648,lon:-121.33817},KTCM:{id:"KTCM",city:"Tacoma / McChord Air Force Base",state:"WA",lat:47.15,lon:-122.48333},KTIW:{id:"KTIW",city:"Tacoma, Tacoma Narrows Airport",state:"WA",lat:47.2675,lon:-122.57611},KUIL:{id:"KUIL",city:"Quillayute, Quillayute State Airport",state:"WA",lat:47.9375,lon:-124.555},KVUO:{id:"KVUO",city:"Pearson Airfield",state:"WA",lat:45.62103,lon:-122.65419},KYKM:{id:"KYKM",city:"Yakima Air Terminal - McAllister Field",state:"WA",lat:46.56402,lon:-120.53484},KALK:{id:"KALK",city:"Pioneer Airfield",state:"AZ",lat:31.60564,lon:-110.4281},KAVQ:{id:"KAVQ",city:"Tucson Marana Regional Airport",state:"AZ",lat:32.4096,lon:-111.2184},KAZC:{id:"KAZC",city:"Colorado City, Colorado City Municipal Airport",state:"AZ",lat:36.95,lon:-113},KBXK:{id:"KBXK",city:"Buckeye Municipal Airport",state:"AZ",lat:33.4204,lon:-112.6862},KCGZ:{id:"KCGZ",city:"Casa Grande, Casa Grande Municipal Airport",state:"AZ",lat:32.95,lon:-111.76667},KCHD:{id:"KCHD",city:"Chandler, Chandler Municipal Airport",state:"AZ",lat:33.26917,lon:-111.81111},KCMR:{id:"KCMR",city:"Williams/Clark Memorial Airport",state:"AZ",lat:35.3054721,lon:-112.1943889},KDMA:{id:"KDMA",city:"Davis-Monthan Air Force Base",state:"AZ",lat:32.16667,lon:-110.88333},KDVT:{id:"KDVT",city:"Phoenix, Phoenix-Deer Valley Municipal Airport",state:"AZ",lat:33.69026,lon:-112.06618},KFFZ:{id:"KFFZ",city:"Mesa / Falcon Field",state:"AZ",lat:33.46667,lon:-111.73333},KFHU:{id:"KFHU",city:"Fort Huachuca, Libby AAF Ft Huachuca",state:"AZ",lat:31.58333,lon:-110.33333},KFLG:{id:"KFLG",city:"Flagstaff Pulliam Airport",state:"AZ",lat:35.1443299,lon:-111.66637},KGCN:{id:"KGCN",city:"Grand Canyon National Park Airport",state:"AZ",lat:35.94582,lon:-112.15538},KGEU:{id:"KGEU",city:"Glendale, Glendale Municipal Airport",state:"AZ",lat:33.52722,lon:-112.29528},KGXF:{id:"KGXF",city:"Gila Bend Air Force Auxiliary Field",state:"AZ",lat:32.8875,lon:-112.72},KGYR:{id:"KGYR",city:"Goodyear Municipal",state:"AZ",lat:33.41667,lon:-112.38333},KHII:{id:"KHII",city:"Havasu City Airport",state:"AZ",lat:34.56595,lon:-114.35224},KIFP:{id:"KIFP",city:"Bullhead City, Laughlin/Bullhead International Airport",state:"AZ",lat:35.1575,lon:-114.55944},KIGM:{id:"KIGM",city:"Kingman, Kingman Airport",state:"AZ",lat:35.2577799,lon:-113.93306},KINW:{id:"KINW",city:"Winslow, Winslow Municipal Airport",state:"AZ",lat:35.02806,lon:-110.72083},KIWA:{id:"KIWA",city:"Phoenix-Mesa Gateway Airport",state:"AZ",lat:33.31667,lon:-111.65},KJTC:{id:"KJTC",city:"Springerville Municipal Airport",state:"AZ",lat:34.1293999,lon:-109.3109},KLGF:{id:"KLGF",city:"Laguna Army Airfield",state:"AZ",lat:32.86459,lon:-114.39298},KLUF:{id:"KLUF",city:"Luke Air Force Base / Phoenix",state:"AZ",lat:33.53333,lon:-112.38333},KMZJ:{id:"KMZJ",city:"Pinal Airpark",state:"AZ",lat:32.50983,lon:-111.32533},KNOZ:{id:"KNOZ",city:"Yuma Auxiliary Airfield",state:"AZ",lat:32.5,lon:-114.45},KNYL:{id:"KNYL",city:"Yuma, Marine Corps Air Station",state:"AZ",lat:32.6594399,lon:-114.59306},KOLS:{id:"KOLS",city:"Nogales, Nogales International Airport",state:"AZ",lat:31.42083,lon:-110.84583},KPAN:{id:"KPAN",city:"Payson Airport",state:"AZ",lat:34.2568364,lon:-111.3392558},KPGA:{id:"KPGA",city:"Page, Page Municipal Airport",state:"AZ",lat:36.92056,lon:-111.44806},KPHX:{id:"KPHX",city:"Phoenix, Phoenix Sky Harbor International Airport",state:"AZ",lat:33.427799,lon:-112.003465},KPRC:{id:"KPRC",city:"Prescott, Love Field",state:"AZ",lat:34.64917,lon:-112.42222},KRQE:{id:"KRQE",city:"Window Rock, Window Rock Airport",state:"AZ",lat:35.65,lon:-109.06667},KRYN:{id:"KRYN",city:"Tucson Ryan Field Airport",state:"AZ",lat:32.1422,lon:-111.1746},KSAD:{id:"KSAD",city:"Safford, Safford Municipal Airport",state:"AZ",lat:32.85722,lon:-109.63556},KSDL:{id:"KSDL",city:"Scottsdale Airport",state:"AZ",lat:33.61235,lon:-111.92316},KSEZ:{id:"KSEZ",city:"Sedona Airport",state:"AZ",lat:34.85,lon:-111.78333},KSJN:{id:"KSJN",city:"St. Johns, St. Johns Industrial Airpark",state:"AZ",lat:34.51833,lon:-109.37917},KSOW:{id:"KSOW",city:"Show Low, Show Low Regional Airport",state:"AZ",lat:34.26528,lon:-110.00556},KTUS:{id:"KTUS",city:"Tucson, Tucson International Airport",state:"AZ",lat:32.13153,lon:-110.95635},KTYL:{id:"KTYL",city:"Taylor Airport",state:"AZ",lat:34.45272,lon:-110.11503},KABI:{id:"KABI",city:"Abilene, Abilene Regional Airport",state:"TX",lat:32.41028,lon:-99.68167},KACT:{id:"KACT",city:"Waco, Waco Regional Airport",state:"TX",lat:31.61722,lon:-97.22778},KADS:{id:"KADS",city:"Dallas / Addison Airport",state:"TX",lat:32.96667,lon:-96.83333},KAFW:{id:"KAFW",city:"Fort Worth, Fort Worth Alliance Airport",state:"TX",lat:32.97333,lon:-97.31806},KALI:{id:"KALI",city:"Alice, Alice International Airport",state:"TX",lat:27.74111,lon:-98.02694},KAMA:{id:"KAMA",city:"Amarillo, Amarillo International Airport",state:"TX",lat:35.22,lon:-101.71722},KAPY:{id:"KAPY",city:"Zapata, TX",state:"TX",lat:26.969,lon:-99.249},KAQO:{id:"KAQO",city:"Llano, Llano Municipal Airport",state:"TX",lat:30.78361,lon:-98.66194},KARM:{id:"KARM",city:"Wharton, Wharton Regional Airport",state:"TX",lat:29.25417,lon:-96.1541699},KASL:{id:"KASL",city:"Marshall",state:"TX",lat:32.5205,lon:-94.3078},KATT:{id:"KATT",city:"Austin City, Austin Camp Mabry",state:"TX",lat:30.31667,lon:-97.76667},KAUS:{id:"KAUS",city:"Austin-Bergstrom International Airport",state:"TX",lat:30.18304,lon:-97.6798699},KAXH:{id:"KAXH",city:"Houston Southwest Airport",state:"TX",lat:29.50613,lon:-95.47692},KBAZ:{id:"KBAZ",city:"New Braunfels Regional Airport",state:"TX",lat:29.70861,lon:-98.04528},KBBD:{id:"KBBD",city:"Brady, Curtis Field Airport",state:"TX",lat:31.17917,lon:-99.32389},KBEA:{id:"KBEA",city:"Beeville Municipal Airport",state:"TX",lat:28.362,lon:-97.791},KBGD:{id:"KBGD",city:"Borger, Hutchinson County Airport",state:"TX",lat:35.695,lon:-101.395},KBIF:{id:"KBIF",city:"Biggs Army Air Field - Fort Bliss",state:"TX",lat:31.86119,lon:-106.3691599},KBKD:{id:"KBKD",city:"Stephens County Airport",state:"TX",lat:32.719,lon:-98.891},KBKS:{id:"KBKS",city:"Falfurrias, Brooks County Airport",state:"TX",lat:27.20667,lon:-98.12111},KBMQ:{id:"KBMQ",city:"Burnet, Burnet Municipal Craddock Field",state:"TX",lat:30.74056,lon:-98.23528},KBMT:{id:"KBMT",city:"Beaumont Municipal Airport",state:"TX",lat:30.0702,lon:-94.2151},KBPC:{id:"KBPC",city:"Mesa Vista Ranch AP",state:"TX",lat:35.889,lon:-101.03},KBPG:{id:"KBPG",city:"Big Spring, Big Spring McMahon-Wrinkle Airport",state:"TX",lat:32.2,lon:-101.51667},KBPT:{id:"KBPT",city:"Beaumont/Port Arthur Southeast Texas Regional Airport",state:"TX",lat:29.9521,lon:-94.0261},KBQX:{id:"KBQX",city:"BRAZOS 451 OIL PLATFORM",state:"TX",lat:28.5,lon:-95.72},KBRO:{id:"KBRO",city:"Brownsville, Brownsville / South Padre Island International Airport",state:"TX",lat:25.91417,lon:-97.42306},KBWD:{id:"KBWD",city:"Brownwood, Brownwood Regional Airport",state:"TX",lat:31.8,lon:-98.95},KBYY:{id:"KBYY",city:"Bay City, Bay City Municipal Airport",state:"TX",lat:28.97306,lon:-95.86333},KCDS:{id:"KCDS",city:"Childress, Childress Municipal Airport",state:"TX",lat:34.4275,lon:-100.28333},KCFD:{id:"KCFD",city:"Bryan Coulter Field",state:"TX",lat:30.7157,lon:-96.3314},KCLL:{id:"KCLL",city:"College Station, Easterwood Field",state:"TX",lat:30.58222,lon:-96.36167},KCNW:{id:"KCNW",city:"Waco-James Connally Airport",state:"TX",lat:31.6378,lon:-97.0741},KCOM:{id:"KCOM",city:"COLEMAN",state:"TX",lat:31.84,lon:-99.4},KCOT:{id:"KCOT",city:"Cotulla, Cotulla-La Salle County Airport",state:"TX",lat:28.45833,lon:-99.22028},KCPT:{id:"KCPT",city:"Cleburne, Cleburne Municipal Airport",state:"TX",lat:32.35361,lon:-97.43361},KCRP:{id:"KCRP",city:"Corpus Christi, Corpus Christi International Airport",state:"TX",lat:27.77306,lon:-97.51278},KCRS:{id:"KCRS",city:"Corsicana, Campbell Field-Corsicana Municipal Airport",state:"TX",lat:32.03111,lon:-96.39889},KCVB:{id:"KCVB",city:"Castroville Municipal Airport",state:"TX",lat:29.34192,lon:-98.8509},KCWC:{id:"KCWC",city:"Kickapoo Downtown Airport",state:"TX",lat:33.8606,lon:-98.4903999},KCXO:{id:"KCXO",city:"Conroe, Montgomery County Airport",state:"TX",lat:30.35667,lon:-95.41389},KCZT:{id:"KCZT",city:"Carrizo Springs Dimmit County Airport",state:"TX",lat:28.5222,lon:-99.8236},KDAL:{id:"KDAL",city:"Dallas Love Field",state:"TX",lat:32.85416,lon:-96.85506},KDFW:{id:"KDFW",city:"Dallas/Fort Worth International Airport",state:"TX",lat:32.89743,lon:-97.02196},KDHT:{id:"KDHT",city:"Dalhart, Dalhart Municipal Airport",state:"TX",lat:36.02333,lon:-102.54722},KDKR:{id:"KDKR",city:"Crockett, Houston County Airport",state:"TX",lat:31.30694,lon:-95.40361},KDLF:{id:"KDLF",city:"Laughlin Air Force Base Auxiliary Airfield",state:"TX",lat:29.36652,lon:-100.78469},KDRT:{id:"KDRT",city:"Del Rio, Del Rio International Airport",state:"TX",lat:29.37472,lon:-100.92361},KDTO:{id:"KDTO",city:"Denton Enterprise Airport",state:"TX",lat:33.20505,lon:-97.20061},KDUX:{id:"KDUX",city:"Dumas, Moore County Airport",state:"TX",lat:35.85778,lon:-102.01306},KDWH:{id:"KDWH",city:"Houston, Hooks Memorial Airport",state:"TX",lat:30.0675,lon:-95.55611},KDYS:{id:"KDYS",city:"Abilene, Dyess Air Force Base",state:"TX",lat:32.42,lon:-99.85694},KDZB:{id:"KDZB",city:"Horseshoe Bay Resort Airpark",state:"TX",lat:30.5271,lon:-98.3588},KEBG:{id:"KEBG",city:"Edinburg, Edinburg International Airport",state:"TX",lat:26.44194,lon:-98.12944},KECU:{id:"KECU",city:"Rocksprings, Edwards County Airport",state:"TX",lat:29.94667,lon:-100.17361},KEDC:{id:"KEDC",city:"Austin Executive Airport",state:"TX",lat:30.3925,lon:-97.5621},KEFD:{id:"KEFD",city:"Houston / Ellington",state:"TX",lat:29.6,lon:-95.16667},KELA:{id:"KELA",city:"Eagle Lake",state:"TX",lat:29.6006,lon:-96.3219},KELP:{id:"KELP",city:"El Paso, El Paso International Airport",state:"TX",lat:31.81111,lon:-106.3758299},KEMK:{id:"KEMK",city:"E BREAKS OIL PLATFORM",state:"TX",lat:27.82,lon:-94.3199999},KERV:{id:"KERV",city:"Kerrville, Kerrville Municipal Airport/Louis Schreiner Field",state:"TX",lat:29.96667,lon:-99.08333},KETN:{id:"KETN",city:"Eastland Municipal Airport",state:"TX",lat:32.41489,lon:-98.80969},KFST:{id:"KFST",city:"Fort Stockton, Fort Stockton-Pecos County Airport",state:"TX",lat:30.91194,lon:-102.91667},KFTW:{id:"KFTW",city:"Fort Worth, Meacham International Airport",state:"TX",lat:32.82528,lon:-97.36417},KFWS:{id:"KFWS",city:"Fort Worth Spinks Airport",state:"TX",lat:32.56537,lon:-97.30837},KGDJ:{id:"KGDJ",city:"Granbury, Granbury Municipal Airport",state:"TX",lat:32.44417,lon:-97.81667},KGDP:{id:"KGDP",city:"Pine Springs, Guadalupe Mountains National Park",state:"TX",lat:31.83111,lon:-104.80889},KGGG:{id:"KGGG",city:"Longview - East Texas Regional Airport",state:"TX",lat:32.39056,lon:-94.71389},KGKY:{id:"KGKY",city:"Arlington Municipal Airport",state:"TX",lat:32.65829,lon:-97.09509},KGLE:{id:"KGLE",city:"Gainesville, Gainesville Municipal Airport",state:"TX",lat:33.65139,lon:-97.19694},KGLS:{id:"KGLS",city:"Galveston, Scholes Field",state:"TX",lat:29.27028,lon:-94.86417},KGNC:{id:"KGNC",city:"Seminole, Gaines County Airport",state:"TX",lat:32.67528,lon:-102.6525},KGOP:{id:"KGOP",city:"Gatesville, City-County Airport",state:"TX",lat:31.42111,lon:-97.79694},KGPM:{id:"KGPM",city:"Grand Prairie, Grand Prairie Municipal Airport",state:"TX",lat:32.69861,lon:-97.04667},KGRK:{id:"KGRK",city:"Fort Hood, Robert Gray AAF Ft Hood",state:"TX",lat:31.06667,lon:-97.81667},KGTU:{id:"KGTU",city:"Georgetown, Georgetown Municipal Airport",state:"TX",lat:30.68333,lon:-97.68333},KGVT:{id:"KGVT",city:"Greenville / Majors",state:"TX",lat:33.06667,lon:-96.06667},KGYB:{id:"KGYB",city:"Giddings, Giddings-Lee County Airport",state:"TX",lat:30.16917,lon:-96.98},KGYI:{id:"KGYI",city:"Sherman/Denison, Grayson County Airport",state:"TX",lat:33.71667,lon:-96.66667},KGZN:{id:"KGZN",city:"Gregory M Simmons Memorial Airport",state:"TX",lat:32.3658,lon:-99.0237},KHBV:{id:"KHBV",city:"Hebbronville, Jim Hogg County Airport",state:"TX",lat:27.33333,lon:-98.73333},KHDO:{id:"KHDO",city:"Hondo, Hondo Municipal Airport",state:"TX",lat:29.35944,lon:-99.17417},KHHF:{id:"KHHF",city:"Canadian, Hemphill County Airport",state:"TX",lat:35.9,lon:-100.4},KHHV:{id:"KHHV",city:"Alaminos Canyon 25/H-D (ExxonMobil)",state:"TX",lat:26.939,lon:-94.6889999},KHLR:{id:"KHLR",city:"Fort Hood, Hood AAF Ft Hood",state:"TX",lat:31.13333,lon:-97.7},KHOU:{id:"KHOU",city:"Houston, Houston Hobby Airport",state:"TX",lat:29.6375,lon:-95.2825},KHQZ:{id:"KHQZ",city:"Mesquite, Mesquite Metro Airport",state:"TX",lat:32.74694,lon:-96.53028},KHRL:{id:"KHRL",city:"Harlingen, Rio Grande Valley International Airport",state:"TX",lat:26.22972,lon:-97.65528},KHRX:{id:"KHRX",city:"Hereford Municipal Airport",state:"TX",lat:34.8578,lon:-102.3264},KHYI:{id:"KHYI",city:"San Marcos, San Marcos Municipal Airport",state:"TX",lat:29.89361,lon:-97.86472},KIAH:{id:"KIAH",city:"Houston Intercontinental Airport",state:"TX",lat:29.9844,lon:-95.36074},KIKG:{id:"KIKG",city:"Kleberg County Airport",state:"TX",lat:27.5509,lon:-98.0309},KILE:{id:"KILE",city:"Killeen, Skylark Field Airport",state:"TX",lat:31.08333,lon:-97.68333},KINJ:{id:"KINJ",city:"Hillsboro, Hillsboro Municipal Airport",state:"TX",lat:32.0833299,lon:-97.0972199},KINK:{id:"KINK",city:"Wink, Winkler County Airport",state:"TX",lat:31.77972,lon:-103.20139},KJAS:{id:"KJAS",city:"Jasper, Jasper County-Bell Field Airport",state:"TX",lat:30.88556,lon:-94.0347199},KJCT:{id:"KJCT",city:"Junction, Kimble County Airport",state:"TX",lat:30.51083,lon:-99.76639},KJDD:{id:"KJDD",city:"Mineola/Quitman, Wood County Airport",state:"TX",lat:32.74194,lon:-95.49639},KJSO:{id:"KJSO",city:"Jacksonville, Cherokee County Airport",state:"TX",lat:31.86917,lon:-95.21722},KJWY:{id:"KJWY",city:"Midlothian/Waxahachie, Mid-Way Regional Airport",state:"TX",lat:32.45583,lon:-96.91222},KJXI:{id:"KJXI",city:"Gilmer, Fox Stephens Field - Gilmer Municipal Airport",state:"TX",lat:32.69889,lon:-94.94861},KLBB:{id:"KLBB",city:"Lubbock, Lubbock International Airport",state:"TX",lat:33.6674999,lon:-101.8213899},KLBX:{id:"KLBX",city:"Angleton / Lake Jackson, Brazoria County Airport",state:"TX",lat:29.11536,lon:-95.46323},KLFK:{id:"KLFK",city:"Lufkin, Angelina County Airport",state:"TX",lat:31.23389,lon:-94.75},KLHB:{id:"KLHB",city:"Hearne, Hearne Municipal Airport",state:"TX",lat:30.87167,lon:-96.62222},KLLN:{id:"KLLN",city:"Levelland Municipal Airport",state:"TX",lat:33.55253,lon:-102.37253},KLNC:{id:"KLNC",city:"Lancaster Airport",state:"TX",lat:32.58323,lon:-96.72091},KLRD:{id:"KLRD",city:"Laredo, Laredo International Airport",state:"TX",lat:27.54361,lon:-99.46139},KLUD:{id:"KLUD",city:"Decatur, Decatur Municipal Airport",state:"TX",lat:33.25444,lon:-97.58056},KLUV:{id:"KLUV",city:"Lamesa Municipal Airport",state:"TX",lat:32.75631,lon:-101.92022},KLVJ:{id:"KLVJ",city:"Houston, Pearland Regional Airport",state:"TX",lat:29.52111,lon:-95.24194},KLXY:{id:"KLXY",city:"Mexia Limestone County Airport",state:"TX",lat:31.6412,lon:-96.5145},KLZZ:{id:"KLZZ",city:"Lampasas, Lampasas Airport",state:"TX",lat:31.10611,lon:-98.19583},KMAF:{id:"KMAF",city:"Midland, Midland International Airport",state:"TX",lat:31.94778,lon:-102.2086099},KMCJ:{id:"KMCJ",city:"John Dunn Helistop",state:"TX",lat:29.714,lon:-95.395},KMDD:{id:"KMDD",city:"Midland, Midland Airpark",state:"TX",lat:32.03639,lon:-102.10083},KMFE:{id:"KMFE",city:"McAllen, Miller International Airport",state:"TX",lat:26.17972,lon:-98.24444},KMKN:{id:"KMKN",city:"Comanche, Comanche County-City Airport",state:"TX",lat:31.91667,lon:-98.60028},KMNZ:{id:"KMNZ",city:"Hamilton Municipal Airport",state:"TX",lat:31.6659,lon:-98.1486},KMRF:{id:"KMRF",city:"Marfa",state:"TX",lat:30.36667,lon:-104.01667},KMWL:{id:"KMWL",city:"Mineral Wells, Mineral Wells Airport",state:"TX",lat:32.78167,lon:-98.06028},KNFW:{id:"KNFW",city:"Fort Worth, Naval Air Station",state:"TX",lat:32.76583,lon:-97.43333},KNGP:{id:"KNGP",city:"Corpus Christi, Corpus Christi Naval Air Station/Truax Field",state:"TX",lat:27.6925,lon:-97.29111},KNOG:{id:"KNOG",city:"Orange Grove NALF",state:"TX",lat:27.8947,lon:-98.0425099},KNQI:{id:"KNQI",city:"Kingsville, Naval Air Station",state:"TX",lat:27.50306,lon:-97.81167},KOCH:{id:"KOCH",city:"Nacogdoches, A L Mangham Jr. Regional Airport",state:"TX",lat:31.58333,lon:-94.7166699},KODO:{id:"KODO",city:"Odessa, Odessa-Schlemeyer Field",state:"TX",lat:31.92139,lon:-102.39167},KORG:{id:"KORG",city:"Orange, Orange County Airport",state:"TX",lat:30.06917,lon:-93.80361},KOSA:{id:"KOSA",city:"Mount Pleasant, Mount Pleasant Regional Airport",state:"TX",lat:33.09528,lon:-94.96139},KOZA:{id:"KOZA",city:"Ozona Municipal Airport",state:"TX",lat:30.7353,lon:-101.203},KPEQ:{id:"KPEQ",city:"Pecos, Pecos Municipal Airport",state:"TX",lat:31.38222,lon:-103.51056},KPEZ:{id:"KPEZ",city:"Pleasanton Municipal Airport",state:"TX",lat:28.9562,lon:-98.5184},KPIL:{id:"KPIL",city:"Port Isabel, Port Isabel-Cameron County Airport",state:"TX",lat:26.15917,lon:-97.3375},KPKV:{id:"KPKV",city:"Port Lavaca - Calhoun County Airport",state:"TX",lat:28.65159,lon:-96.68196},KPPA:{id:"KPPA",city:"Pampa, Perry Lefors Field Airport",state:"TX",lat:35.61278,lon:-100.99611},KPRS:{id:"KPRS",city:"Presidio Lely International Airport",state:"TX",lat:29.6341,lon:-104.3616},KPRX:{id:"KPRX",city:"Paris / Cox Field",state:"TX",lat:33.63333,lon:-95.45},KPSN:{id:"KPSN",city:"Palestine, Palestine Municipal Airport",state:"TX",lat:31.77944,lon:-95.70611},KPSX:{id:"KPSX",city:"Palacios Municipal Airport",state:"TX",lat:28.72485,lon:-96.2534699},KPVW:{id:"KPVW",city:"Plainview, Hale County Airport",state:"TX",lat:34.1680599,lon:-101.71722},KPWG:{id:"KPWG",city:"Waco, Mc Gregor Executive Airport",state:"TX",lat:31.48333,lon:-97.31667},KPYX:{id:"KPYX",city:"Perryton, Perryton Ochiltree County Airport",state:"TX",lat:36.4,lon:-100.73333},KRAS:{id:"KRAS",city:"Port Aransas, Mustang Beach Airport",state:"TX",lat:27.81167,lon:-97.08861},KRBD:{id:"KRBD",city:"Dallas, Redbird Airport",state:"TX",lat:32.67583,lon:-96.86389},KRBO:{id:"KRBO",city:"Robstown, Nueces County Airport",state:"TX",lat:27.77833,lon:-97.69028},KRFI:{id:"KRFI",city:"Rusk County Airport",state:"TX",lat:32.1417,lon:-94.8516999},KRKP:{id:"KRKP",city:"Rockport Aransas County Airport",state:"TX",lat:28.08371,lon:-97.04664},KRND:{id:"KRND",city:"Randolph Air Force Base",state:"TX",lat:29.53333,lon:-98.28333},KRWV:{id:"KRWV",city:"Caldwell, Caldwell Municipal Airport",state:"TX",lat:30.51528,lon:-96.70389},KRYW:{id:"KRYW",city:"Lago Vista TX, Rusty Allen Airport",state:"TX",lat:30.4967,lon:-97.9659},KSAT:{id:"KSAT",city:"San Antonio, San Antonio International Airport",state:"TX",lat:29.53278,lon:-98.46361},KSEP:{id:"KSEP",city:"Stephenville, Clark Field Municipal Airport",state:"TX",lat:32.21667,lon:-98.18333},KSEQ:{id:"KSEQ",city:"Seguin - Randolph AFB Auxiliary Field",state:"TX",lat:29.56579,lon:-97.90834},KSGR:{id:"KSGR",city:"Houston, Sugar Land Municipal / Hull Field Airport",state:"TX",lat:29.62222,lon:-95.65667},KSJT:{id:"KSJT",city:"San Angelo, Mathis Field",state:"TX",lat:31.35139,lon:-100.4938899},KSKF:{id:"KSKF",city:"San Antonio - Kelly Field",state:"TX",lat:29.38333,lon:-98.58333},KSLR:{id:"KSLR",city:"Sulphur Springs, Sulphur Springs Municipal Airport",state:"TX",lat:33.16111,lon:-95.62111},KSNK:{id:"KSNK",city:"Snyder, Winston Field Airport",state:"TX",lat:32.69333,lon:-100.95028},KSOA:{id:"KSOA",city:"Sonora, Sonora Municipal Airport",state:"TX",lat:30.58556,lon:-100.64833},KSPS:{id:"KSPS",city:"Wichita Falls, Sheppard Air Force Base",state:"TX",lat:33.97861,lon:-98.49278},KSSF:{id:"KSSF",city:"San Antonio, Stinson Municipal Airport",state:"TX",lat:29.33889,lon:-98.47167},KSWW:{id:"KSWW",city:"Sweetwater, Avenger Field Airport",state:"TX",lat:32.46722,lon:-100.46639},KTFP:{id:"KTFP",city:"Mc Campbell",state:"TX",lat:27.913,lon:-97.2115},KTKI:{id:"KTKI",city:"McKinney - McKinney National Airport",state:"TX",lat:33.17778,lon:-96.59028},KTME:{id:"KTME",city:"Houston Executive Airport",state:"TX",lat:29.80717,lon:-95.89791},KTPL:{id:"KTPL",city:"Temple, Draughon-Miller Central Texas Regional Airport",state:"TX",lat:31.15,lon:-97.4},KTRL:{id:"KTRL",city:"Terrell, Terrell Municipal Airport",state:"TX",lat:32.71361,lon:-96.26833},KTXW:{id:"KTXW",city:"Mid Valley Airport",state:"TX",lat:26.17871,lon:-97.97401},KTYR:{id:"KTYR",city:"Tyler, Tyler Pounds Field",state:"TX",lat:32.35861,lon:-95.40389},KUTS:{id:"KUTS",city:"Huntsville, Huntsville Municipal Airport",state:"TX",lat:30.74389,lon:-95.58611},KUVA:{id:"KUVA",city:"Uvalde, Garner Field Airport",state:"TX",lat:29.21111,lon:-99.74333},KVAF:{id:"KVAF",city:"East Breaks 643/Boomvang Spar",state:"TX",lat:27.354,lon:-94.625},KVCT:{id:"KVCT",city:"Victoria, Victoria Regional Airport",state:"TX",lat:28.8625,lon:-96.92972},KVHN:{id:"KVHN",city:"Culberson County Airport",state:"TX",lat:31.05783,lon:-104.78381},KXBP:{id:"KXBP",city:"Bridgeport, Bridgeport Municipal Airport",state:"TX",lat:33.17528,lon:-97.8283299},KAAT:{id:"KAAT",city:"Alturas",state:"CA",lat:41.48362,lon:-120.5615},KACV:{id:"KACV",city:"Arcata / Eureka, Arcata Airport",state:"CA",lat:40.97806,lon:-124.10861},KAJO:{id:"KAJO",city:"Corona Airport",state:"CA",lat:33.8977,lon:-117.6024},KAPC:{id:"KAPC",city:"Napa, Napa County Airport",state:"CA",lat:38.2075,lon:-122.27944},KAPV:{id:"KAPV",city:"APPLEVALLEY",state:"CA",lat:34.57533,lon:-117.18619},KAUN:{id:"KAUN",city:"Auburn Municipal Airport",state:"CA",lat:38.95535,lon:-121.08636},KAVX:{id:"KAVX",city:"Avalon Catalina Airport",state:"CA",lat:33.40421,lon:-118.41456},KBAB:{id:"KBAB",city:"Marysville, Beale Air Force Base",state:"CA",lat:39.13333,lon:-121.43333},KBAN:{id:"KBAN",city:"MCMWTC BRIDGEPORT",state:"CA",lat:38.3557,lon:-119.5188},KBFL:{id:"KBFL",city:"Bakersfield, Meadows Field Airport",state:"CA",lat:35.43361,lon:-119.05667},KBIH:{id:"KBIH",city:"Bishop, Bishop Airport",state:"CA",lat:37.37111,lon:-118.35806},KBLH:{id:"KBLH",city:"Blythe, Blythe Airport",state:"CA",lat:33.6191699,lon:-114.71694},KBLU:{id:"KBLU",city:"Emigrant Gap, Blue Canyon Nyack Airport",state:"CA",lat:39.27611,lon:-120.70806},KBUR:{id:"KBUR",city:"Burbank - Bob Hope Airport",state:"CA",lat:34.19967,lon:-118.36538},KBYS:{id:"KBYS",city:"Fort Irwin/Barstow, Bicycle Lake Army Airfield",state:"CA",lat:35.28333,lon:-116.61667},KCCB:{id:"KCCB",city:"Cable Airport",state:"CA",lat:34.11161,lon:-117.68739},KCCR:{id:"KCCR",city:"Concord, Buchanan Field",state:"CA",lat:37.99167,lon:-122.05194},KCEC:{id:"KCEC",city:"Crescent City, Jack McNamara Field Airport",state:"CA",lat:41.78028,lon:-124.23667},KCIC:{id:"KCIC",city:"Chico Municipal Airport",state:"CA",lat:39.7987899,lon:-121.85795},KCMA:{id:"KCMA",city:"Camarillo, Camarillo Airport",state:"CA",lat:34.21667,lon:-119.08333},KCNO:{id:"KCNO",city:"Chino, Chino Airport",state:"CA",lat:33.97556,lon:-117.62361},KCPU:{id:"KCPU",city:"San Andreas Calaveras County Airport",state:"CA",lat:38.1460999,lon:-120.6482},KCQT:{id:"KCQT",city:"Los Angeles / USC Campus Downtown",state:"CA",lat:34.02355,lon:-118.29122},KCRQ:{id:"KCRQ",city:"Carlsbad, McClellan-Palomar Airport",state:"CA",lat:33.13,lon:-117.27583},KCVH:{id:"KCVH",city:"Hollister, CA",state:"CA",lat:36.8933,lon:-121.4103},KDAG:{id:"KDAG",city:"Daggett, Barstow-Daggett Airport",state:"CA",lat:34.85361,lon:-116.78667},KDLO:{id:"KDLO",city:"Delano Municipal Airport",state:"CA",lat:35.74556,lon:-119.2365},KDVO:{id:"KDVO",city:"Novato / Gnoss Field",state:"CA",lat:38.14178,lon:-122.55463},KDWA:{id:"KDWA",city:"Yolo County Airport",state:"CA",lat:38.5793899,lon:-121.85694},KEDW:{id:"KEDW",city:"Edwards Air Force Base",state:"CA",lat:34.918,lon:-117.879},KEED:{id:"KEED",city:"Needles, Needles Airport",state:"CA",lat:34.76611,lon:-114.62333},KEMT:{id:"KEMT",city:"El Monte",state:"CA",lat:34.0833299,lon:-118.03333},KFAT:{id:"KFAT",city:"Fresno, Fresno Air Terminal",state:"CA",lat:36.78,lon:-119.71944},KFOT:{id:"KFOT",city:"Fortuna Rohnerville Airport",state:"CA",lat:40.55296,lon:-124.13338},KFUL:{id:"KFUL",city:"Fullerton, Fullerton Municipal Airport",state:"CA",lat:33.87194,lon:-117.98472},KGOO:{id:"KGOO",city:"Nevada County Air Park",state:"CA",lat:39.2240279,lon:-121.003083},KGXA:{id:"KGXA",city:"Gray Butte Field Airport",state:"CA",lat:34.5666,lon:-117.6704},KHAF:{id:"KHAF",city:"Half Moon Bay Airport",state:"CA",lat:37.5135999,lon:-122.4996},KHHR:{id:"KHHR",city:"Hawthorne, Hawthorne Municipal Airport",state:"CA",lat:33.9236099,lon:-118.33194},KHJO:{id:"KHJO",city:"Hanford Municipal Airport",state:"CA",lat:36.31145,lon:-119.62315},KHMT:{id:"KHMT",city:"Hemet-Ryan Airport",state:"CA",lat:33.73403,lon:-117.02231},KHWD:{id:"KHWD",city:"Hayward, Hayward Air Terminal",state:"CA",lat:37.66083,lon:-122.11833},KIPL:{id:"KIPL",city:"Imperial, Imperial County Airport",state:"CA",lat:32.83417,lon:-115.57861},KIZA:{id:"KIZA",city:"Santa Ynez, Santa Ynez Airport",state:"CA",lat:34.60694,lon:-120.07556},KJAQ:{id:"KJAQ",city:"Westover Field - Amador County Airport",state:"CA",lat:38.3768,lon:-120.79391},KLAX:{id:"KLAX",city:"Los Angeles, Los Angeles International Airport",state:"CA",lat:33.93806,lon:-118.38889},KLGB:{id:"KLGB",city:"Long Beach, Long Beach Airport",state:"CA",lat:33.81167,lon:-118.14639},KLHM:{id:"KLHM",city:"Lincoln Regional Karl Harder Field",state:"CA",lat:38.9092,lon:-121.3513},KLPC:{id:"KLPC",city:"Lompoc, Lompoc Airport",state:"CA",lat:34.66667,lon:-120.46667},KLVK:{id:"KLVK",city:"Livermore, Livermore Municipal Airport",state:"CA",lat:37.69278,lon:-121.81444},KMAE:{id:"KMAE",city:"Madera Municipal Airport",state:"CA",lat:36.9851,lon:-120.11064},KMCC:{id:"KMCC",city:"Sacramento, McClellan Airfield Airport",state:"CA",lat:38.66667,lon:-121.4},KMCE:{id:"KMCE",city:"Merced Regional Airport",state:"CA",lat:37.28306,lon:-120.50778},KMER:{id:"KMER",city:"Merced / Castle Air Force Base",state:"CA",lat:37.36667,lon:-120.56667},KMHR:{id:"KMHR",city:"Sacramento Mather Airport",state:"CA",lat:38.5599599,lon:-121.28397},KMHS:{id:"KMHS",city:"Mount Shasta",state:"CA",lat:41.31494,lon:-122.31702},KMHV:{id:"KMHV",city:"Mojave",state:"CA",lat:35.06667,lon:-118.15},KMMH:{id:"KMMH",city:"Mammoth Yosemite Airport",state:"CA",lat:37.6241,lon:-118.8423},KMOD:{id:"KMOD",city:"Modesto City-County Airport - Harry Sham Field",state:"CA",lat:37.62549,lon:-120.9549},KMRY:{id:"KMRY",city:"Monterey Regional Airport",state:"CA",lat:36.59047,lon:-121.84875},KMYF:{id:"KMYF",city:"San Diego, Montgomery Field",state:"CA",lat:32.81444,lon:-117.13639},KMYV:{id:"KMYV",city:"Marysville, Yuba County Airport",state:"CA",lat:39.09778,lon:-121.56972},KNFG:{id:"KNFG",city:"Oceanside, Camp Pendleton, Marine Corps Air Station",state:"CA",lat:33.30472,lon:-117.35389},KNID:{id:"KNID",city:"China Lake, Naval Air Facility",state:"CA",lat:35.68639,lon:-117.69},KNJK:{id:"KNJK",city:"El Centro, Naval Air Facility",state:"CA",lat:32.825,lon:-115.66056},KNKX:{id:"KNKX",city:"San Diego, Miramar MCAS/Mitscher Field Airport",state:"CA",lat:32.86833,lon:-117.1425},KNLC:{id:"KNLC",city:"Lemoore Naval Air Station - Reeves Field",state:"CA",lat:36.30244,lon:-119.93968},KNRS:{id:"KNRS",city:"Imperial Beach Naval Outlying Field - Ream Field",state:"CA",lat:32.56302,lon:-117.11091},KNSI:{id:"KNSI",city:"San Nicolas Island Naval Outlying Field",state:"CA",lat:33.23379,lon:-119.45588},KNTD:{id:"KNTD",city:"Point Mugu, Naval Air Warfare Center",state:"CA",lat:34.12389,lon:-119.12167},KNUC:{id:"KNUC",city:"San Clemente Island NALF",state:"CA",lat:33.0218,lon:-118.58266},KNXP:{id:"KNXP",city:"Twentynine Palms SELF Airport",state:"CA",lat:34.29401,lon:-116.14717},KNZY:{id:"KNZY",city:"San Diego, North Island, Naval Air Station",state:"CA",lat:32.69083,lon:-117.20889},KOAK:{id:"KOAK",city:"Oakland, Metro Oakland International Airport",state:"CA",lat:37.7177999,lon:-122.23294},KOAR:{id:"KOAR",city:"FORT ORD/FRITZSCHE",state:"CA",lat:36.68,lon:-121.77},KOKB:{id:"KOKB",city:"Oceanside, Oceanside Municipal Airport",state:"CA",lat:33.21806,lon:-117.35139},KONT:{id:"KONT",city:"Ontario International Airport",state:"CA",lat:34.05316,lon:-117.57685},KOVE:{id:"KOVE",city:"Oroville Municipal Airport",state:"CA",lat:39.49436,lon:-121.62223},KOXR:{id:"KOXR",city:"Oxnard, Oxnard Airport",state:"CA",lat:34.20056,lon:-119.20306},KPAO:{id:"KPAO",city:"Palo Alto Airport",state:"CA",lat:37.46667,lon:-122.11667},KPMD:{id:"KPMD",city:"Palmdale, Palmdale Production Flight Plant",state:"CA",lat:34.62972,lon:-118.08139},KPOC:{id:"KPOC",city:"Brackett Field Airport",state:"CA",lat:34.09282,lon:-117.77937},KPRB:{id:"KPRB",city:"Paso Robles Municipal Airport",state:"CA",lat:35.66941,lon:-120.62912},KPSP:{id:"KPSP",city:"Palm Springs Regional Airport",state:"CA",lat:33.82219,lon:-116.50431},KPTV:{id:"KPTV",city:"Porterville, Porterville Municipal Airport",state:"CA",lat:36.03333,lon:-119.06667},KPVF:{id:"KPVF",city:"Placerville Airport",state:"CA",lat:38.7242,lon:-120.7533},KRAL:{id:"KRAL",city:"Riverside Municipal Airport",state:"CA",lat:33.95189,lon:-117.44511},KRBL:{id:"KRBL",city:"Red Bluff, Red Bluff Municipal Airport",state:"CA",lat:40.15056,lon:-122.25222},KRDD:{id:"KRDD",city:"Redding Municipal Airport",state:"CA",lat:40.51461,lon:-122.2977},KREI:{id:"KREI",city:"REDLANDS",state:"CA",lat:34.08526,lon:-117.14637},KRHV:{id:"KRHV",city:"San Jose / Reid / Hillv",state:"CA",lat:37.3333299,lon:-121.81667},KRIV:{id:"KRIV",city:"March Air Reserve Base",state:"CA",lat:33.88194,lon:-117.25902},KRNM:{id:"KRNM",city:"Ramona, Ramona Airport",state:"CA",lat:33.0375,lon:-116.91583},KSAC:{id:"KSAC",city:"Sacramento Executive Airport",state:"CA",lat:38.50674,lon:-121.49597},KSAN:{id:"KSAN",city:"San Diego International Airport",state:"CA",lat:32.73361,lon:-117.18306},KSBA:{id:"KSBA",city:"Santa Barbara, Santa Barbara Municipal Airport",state:"CA",lat:34.42611,lon:-119.84361},KSBD:{id:"KSBD",city:"San Bernardino Intl. Airport",state:"CA",lat:34.0902699,lon:-117.24705},KSBP:{id:"KSBP",city:"San Luis Obispo, San Luis Obispo County-Mc Chesney Field",state:"CA",lat:35.2361099,lon:-120.63611},KSCK:{id:"KSCK",city:"Stockton, Stockton Metropolitan Airport",state:"CA",lat:37.8897199,lon:-121.22361},KSDB:{id:"KSDB",city:"Sandberg",state:"CA",lat:34.7436099,lon:-118.72444},KSDM:{id:"KSDM",city:"San Diego, Brown Field Municipal Airport",state:"CA",lat:32.57528,lon:-116.99306},KSEE:{id:"KSEE",city:"Gillespie Field Airport",state:"CA",lat:32.82738,lon:-116.97369},KSFO:{id:"KSFO",city:"San Francisco, San Francisco International Airport",state:"CA",lat:37.61961,lon:-122.36558},KSIY:{id:"KSIY",city:"Montague Siskiyou County Airport",state:"CA",lat:41.77375,lon:-122.46817},KSJC:{id:"KSJC",city:"San Jose, San Jose International Airport",state:"CA",lat:37.35917,lon:-121.92417},KSLI:{id:"KSLI",city:"Los Alamitos Army Airfield",state:"CA",lat:33.79628,lon:-118.04179},KSMF:{id:"KSMF",city:"Sacramento International Airport",state:"CA",lat:38.70071,lon:-121.59479},KSMO:{id:"KSMO",city:"Santa Monica, Santa Monica Municipal Airport",state:"CA",lat:34.01583,lon:-118.45139},KSMX:{id:"KSMX",city:"Santa Maria Public Airport/Capt G Allan Hancock Field",state:"CA",lat:34.89408,lon:-120.45212},KSNA:{id:"KSNA",city:"John Wayne-Orange County Airport",state:"CA",lat:33.6798,lon:-117.8674},KSNS:{id:"KSNS",city:"Salinas, Salinas Municipal Airport",state:"CA",lat:36.66361,lon:-121.60806},KSQL:{id:"KSQL",city:"San Carlos Airport",state:"CA",lat:37.51667,lon:-122.25},KSTS:{id:"KSTS",city:"Santa Rosa, Santa Rosa Sonoma County Airport",state:"CA",lat:38.5,lon:-122.81667},KSUU:{id:"KSUU",city:"Fairfield / Travis Air Force Base",state:"CA",lat:38.26667,lon:-121.95},KSVE:{id:"KSVE",city:"Susanville Municipal Airport",state:"CA",lat:40.37569,lon:-120.57269},KTCY:{id:"KTCY",city:"Tracy Municipal Airport",state:"CA",lat:37.6888999,lon:-121.44158},KTNP:{id:"KTNP",city:"29PALMS",state:"CA",lat:34.13159,lon:-115.94582},KTOA:{id:"KTOA",city:"Torrance, Zamperini Field Airport",state:"CA",lat:33.8,lon:-118.33333},KTRK:{id:"KTRK",city:"Truckee-Tahoe",state:"CA",lat:39.31667,lon:-120.13333},KTRM:{id:"KTRM",city:"Palm Springs, Jacqueline Cochran Regional Airport",state:"CA",lat:33.62667,lon:-116.15944},KTSP:{id:"KTSP",city:"Tehachapi Municipal Airport",state:"CA",lat:35.135,lon:-118.4392},KTVL:{id:"KTVL",city:"South Lake Tahoe, Lake Tahoe Airport",state:"CA",lat:38.8983599,lon:-119.99615},KUKI:{id:"KUKI",city:"Ukiah Municipal Airport",state:"CA",lat:39.12783,lon:-123.20011},KVBG:{id:"KVBG",city:"Lompoc, Vandenberg Air Force Base",state:"CA",lat:34.7294399,lon:-120.57667},KVCB:{id:"KVCB",city:"Vacaville Nut Tree Airport",state:"CA",lat:38.37755,lon:-121.95853},KVCV:{id:"KVCV",city:"Victorville, Southern California Logistics Airport",state:"CA",lat:34.59722,lon:-117.38278},KVIS:{id:"KVIS",city:"Visalia, Visalia Municipal Airport",state:"CA",lat:36.31667,lon:-119.4},KVNY:{id:"KVNY",city:"Van Nuys, Van Nuys Airport",state:"CA",lat:34.2125,lon:-118.49083},KWHP:{id:"KWHP",city:"Los Angeles, Whiteman Airport",state:"CA",lat:34.25,lon:-118.4},KWJF:{id:"KWJF",city:"General Wm J Fox Airfield",state:"CA",lat:34.74123,lon:-118.21251},KWVI:{id:"KWVI",city:"Watsonville, Watsonville Municipal Airport",state:"CA",lat:36.93944,lon:-121.78889}}; \ No newline at end of file diff --git a/dist/resources/ws.min.css b/dist/resources/ws.min.css index 3b13087..91516f7 100644 --- a/dist/resources/ws.min.css +++ b/dist/resources/ws.min.css @@ -1 +1 @@ -@font-face{font-family:"Star4000";src:url("../fonts/Star4000.woff") format("woff")}body{font-family:"Star4000"}@media(prefers-color-scheme: dark){body{background-color:#000;color:#fff}}@media(prefers-color-scheme: dark){body a{color:#add8e6}}input,button{font-family:"Star4000"}#imgGetGps{height:13px;vertical-align:middle}#txtAddress{width:490px;font-size:16pt;max-width:calc(100% - 8px)}@media(prefers-color-scheme: dark){#txtAddress{background-color:#000;color:#fff;border:1px solid #a9a9a9}}#btnGetGps,#btnGetLatLng,#btnClearQuery{font-size:16pt;border:1px solid #a9a9a9}@media(prefers-color-scheme: dark){#btnGetGps,#btnGetLatLng,#btnClearQuery{background-color:#000;color:#fff}}#btnGetGps img.dark{display:none}@media(prefers-color-scheme: dark){#btnGetGps img.dark{display:inline-block}}@media(prefers-color-scheme: dark){#btnGetGps img.light{display:none}}#btnGetGps.active{background-color:#000}@media(prefers-color-scheme: dark){#btnGetGps.active{background-color:#fff}}#btnGetGps.active img{filter:invert(1)}.autocomplete-suggestions{background-color:#fff;border:1px solid #000}@media(prefers-color-scheme: dark){.autocomplete-suggestions{background-color:#000}}.autocomplete-suggestion{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:16pt}.autocomplete-selected{background-color:blue;color:#fff}#divTwc{display:block;background-color:#000;color:#fff;width:100%;max-width:640px}#divTwcLeft{display:none;text-align:right;flex-direction:column;vertical-align:middle}#divTwcLeft>div{flex:1;padding-right:12px;display:flex;flex-direction:column;justify-content:center}#divTwcRight{text-align:left;display:none;flex-direction:column;vertical-align:middle}#divTwcRight>div{flex:1;padding-left:12px;display:flex;flex-direction:column;justify-content:center}#divTwcBottom{display:flex;flex-direction:row;background-color:#000;color:#fff;width:100%}@media(prefers-color-scheme: dark){#divTwcBottom{background-color:#303030}}#divTwcBottom>div{padding-left:6px;padding-right:6px}#divTwcBottomLeft{flex:1;text-align:left}#divTwcBottomMiddle{flex:0;text-align:center}#divTwcBottomRight{flex:1;text-align:right}#divTwcNavContainer{display:none}#divTwcNav{width:100%;display:flex;flex-direction:row;background-color:#000;color:#fff;max-width:640px}#divTwcNav>div{padding-left:6px;padding-right:6px}#divTwcNavLeft{flex:1;text-align:left}#divTwcNavMiddle{flex:0;text-align:center}#divTwcNavRight{flex:1;text-align:right}#imgPause1x,#imgPause2x{visibility:hidden;position:absolute}.HideCursor{cursor:none !important}#txtScrollText{width:475px}@font-face{font-family:"Star4000";src:url("../fonts/Star4000.woff") format("woff")}@font-face{font-family:"Star 4 Radar";src:url("../fonts/Star 4 Radar.woff") format("woff")}@font-face{font-family:"Star4000 Extended";src:url("../fonts/Star4000 Extended.woff") format("woff")}@font-face{font-family:"Star4000LCN";src:url("../fonts/Star4000LCN.woff") format("woff")}@font-face{font-family:"Star4000 Large Compressed";src:url("../fonts/Star4000 Large Compressed.woff") format("woff")}@font-face{font-family:"Star4000 Large";src:url("../fonts/Star4000 Large.ttf") format("truetype")}@font-face{font-family:"Star4000 Small";src:url("../fonts/Star4000 Small.woff") format("woff")}#display{font-family:"Star4000";margin:0 0 0 0;width:100%}jsgif{display:none}#Star4000{font-family:"Star4000"}#Star4000Extended{font-family:"Star4000 Extended"}#Star4000LargeCompressed{font-family:"Star4000 Large Compressed"}#Star4000Large{font-family:"Star4000 Large"}#Star4000LargeCompressedNumbers{font-family:"Star4000LCN"}#Star4000Small{font-family:"Star4000 Small"}#Star4Radar{font-family:"Star 4 Radar"}#container{position:relative;width:100%;height:100%;background-image:url(../images/BackGround1_1.png)}#divTwc:-webkit-full-screen #container{background-image:none;width:unset;height:unset}#divTwc:-ms-fullscreen #container{background-image:none;width:unset;height:unset}#divTwc:fullscreen #container{background-image:none;width:unset;height:unset}#loading{width:640px;height:480px;max-width:100%;text-shadow:4px 4px #000;display:flex;align-items:center;text-align:center;justify-content:center}#loading .title{font-family:Star4000 Large;font-size:36px;color:#ff0;margin-bottom:0px}#loading .version{margin-bottom:35px}#loading .instructions{font-size:18pt}.heading{font-weight:bold;margin-top:15px}#enabledDisplays{margin-bottom:15px}#enabledDisplays label{display:block;max-width:300px}#divTwcBottom img{zoom:150%}#divTwc:-webkit-full-screen{display:flex;align-items:center;justify-content:center;align-content:center}#divTwc:-ms-fullscreen{display:flex;align-items:center;justify-content:center;align-content:center}#divTwc:fullscreen{display:flex;align-items:center;justify-content:center;align-content:center}#divTwc:-webkit-full-screen #display{position:relative}#divTwc:-ms-fullscreen #display{position:relative}#divTwc:fullscreen #display{position:relative}#divTwc:-webkit-full-screen #divTwcBottom{display:flex;flex-direction:row;background-color:rgba(0,0,0,.5);color:#fff;width:100%;position:absolute;bottom:0px}#divTwc:-ms-fullscreen #divTwcBottom{display:flex;flex-direction:row;background-color:rgba(0,0,0,.5);color:#fff;width:100%;position:absolute;bottom:0px}#divTwc:fullscreen #divTwcBottom{display:flex;flex-direction:row;background-color:rgba(0,0,0,.5);color:#fff;width:100%;position:absolute;bottom:0px}.navButton{cursor:pointer}.visible{visibility:visible;opacity:1;transition:opacity 1s linear}.hidden{visibility:hidden;opacity:0;transition:visibility 0s 1s,opacity 1s linear}.github-links{width:610px;max-width:calc(100vw - 30px);display:flex;justify-content:space-evenly;flex-wrap:wrap}.weather-display{width:640px;height:480px;overflow:hidden;position:relative;background-image:url(../images/BackGround1_1.png);height:0px}.weather-display.show{height:480px}.weather-display .template{display:none}.weather-display .header{width:640px;height:60px;padding-top:30px}.weather-display .header .title{color:#ff0;text-shadow:3px 3px 0 #000,-1.5px -1.5px 0 #000,0 -1.5px 0 #000,1.5px -1.5px 0 #000,1.5px 0 0 #000,1.5px 1.5px 0 #000,0 1.5px 0 #000,-1.5px 1.5px 0 #000,-1.5px 0 0 #000;font-family:"Star4000";font-size:24pt;position:absolute;width:250px}.weather-display .header .title.single{left:170px;top:25px}.weather-display .header .title.dual{left:170px}.weather-display .header .title.dual>div{position:absolute}.weather-display .header .title.dual .top{top:-3px}.weather-display .header .title.dual .bottom{top:26px}.weather-display .header .logo{top:30px;left:50px;position:absolute;z-index:10}.weather-display .header .noaa-logo{position:absolute;top:39px;left:356px}.weather-display .header .title.single{top:40px}.weather-display .header .date-time{white-space:pre;color:#fff;font-family:"Star4000 Small";font-size:24pt;text-shadow:3px 3px 0 #000,-1.5px -1.5px 0 #000,0 -1.5px 0 #000,1.5px -1.5px 0 #000,1.5px 0 0 #000,1.5px 1.5px 0 #000,0 1.5px 0 #000,-1.5px 1.5px 0 #000,-1.5px 0 0 #000;left:415px;width:170px;text-align:right;position:absolute}.weather-display .header .date-time.date{padding-top:22px}.weather-display .main{position:relative}.weather-display .main.has-scroll{width:640px;height:310px;overflow:hidden}.weather-display .main.has-box{margin-left:64px;margin-right:64px;width:calc(100% - 128px)}.weather-display .scroll{text-shadow:3px 3px 0 #000,-1.5px -1.5px 0 #000,0 -1.5px 0 #000,1.5px -1.5px 0 #000,1.5px 0 0 #000,1.5px 1.5px 0 #000,0 1.5px 0 #000,-1.5px 1.5px 0 #000,-1.5px 0 0 #000;width:640px;height:70px;overflow:hidden;margin-top:10px}.weather-display .scroll .fixed{font-family:"Star4000";font-size:24pt;margin-left:55px}.weather-display .main.current-weather.main .col{height:50px;width:255px;display:inline-block;margin-top:10px;position:absolute;text-shadow:3px 3px 0 #000,-1.5px -1.5px 0 #000,0 -1.5px 0 #000,1.5px -1.5px 0 #000,1.5px 0 0 #000,1.5px 1.5px 0 #000,0 1.5px 0 #000,-1.5px 1.5px 0 #000,-1.5px 0 0 #000}.weather-display .main.current-weather.main .col.left{font-family:"Star4000 Extended";font-size:24pt}.weather-display .main.current-weather.main .col.right{right:0px;font-family:"Star4000 Large";font-size:16pt;font-weight:bold}.weather-display .main.current-weather.main .col.right .row{margin-bottom:12px}.weather-display .main.current-weather.main .col.right .row .label,.weather-display .main.current-weather.main .col.right .row .value{display:inline-block}.weather-display .main.current-weather.main .col.right .row .label{margin-left:20px}.weather-display .main.current-weather.main .col.right .row .value{float:right;margin-right:10px}.weather-display .main.current-weather.main .center{text-align:center}.weather-display .main.current-weather.main .temp{font-family:"Star4000 Large";font-size:24pt}.weather-display .main.current-weather.main .icon{height:100px}.weather-display .main.current-weather.main .icon img{max-width:126px}.weather-display .main.current-weather.main .wind-container{margin-bottom:10px}.weather-display .main.current-weather.main .wind-container>div{width:45%;display:inline-block;margin:0px}.weather-display .main.current-weather.main .wind-container .wind-label{margin-left:5px}.weather-display .main.current-weather.main .wind-container .wind{text-align:right}.weather-display .main.current-weather.main .wind-gusts{margin-left:5px}.weather-display .main.current-weather.main .location{color:#ff0;margin-bottom:10px}#extended-forecast-html.weather-display{background-image:url("../images/BackGround2_1.png")}.weather-display .main.extended-forecast .day-container{margin-top:16px;margin-left:27px}.weather-display .main.extended-forecast .day{text-shadow:3px 3px 0 #000,-1.5px -1.5px 0 #000,0 -1.5px 0 #000,1.5px -1.5px 0 #000,1.5px 0 0 #000,1.5px 1.5px 0 #000,0 1.5px 0 #000,-1.5px 1.5px 0 #000,-1.5px 0 0 #000;padding:5px;height:285px;width:155px;display:inline-block;margin:0px 15px;font-family:"Star4000";font-size:24pt}.weather-display .main.extended-forecast .day .date{text-transform:uppercase;text-align:center;color:#ff0}.weather-display .main.extended-forecast .day .condition{text-align:center;height:74px;margin-top:10px}.weather-display .main.extended-forecast .day .icon{text-align:center;height:75px}.weather-display .main.extended-forecast .day .icon img{max-height:75px}.weather-display .main.extended-forecast .day .temperatures{width:100%;margin-top:5px}.weather-display .main.extended-forecast .day .temperatures .temperature-block{display:inline-block;width:44%;vertical-align:top}.weather-display .main.extended-forecast .day .temperatures .temperature-block>div{text-align:center}.weather-display .main.extended-forecast .day .temperatures .temperature-block .value{font-family:"Star4000 Large";margin-top:4px}.weather-display .main.extended-forecast .day .temperatures .temperature-block.lo .label{color:#8080ff}.weather-display .main.extended-forecast .day .temperatures .temperature-block.hi .label{color:#ff0}.weather-display .main.hourly.main{overflow-y:hidden}.weather-display .main.hourly.main .column-headers{background-color:#200057;height:20px;position:absolute;width:100%}.weather-display .main.hourly.main .column-headers{position:-webkit-sticky;position:sticky;top:0px;z-index:5}.weather-display .main.hourly.main .column-headers div{display:inline-block;font-family:"Star4000 Small";font-size:24pt;color:#ff0;position:absolute;top:-14px;z-index:5;text-shadow:3px 3px 0 #000,-1.5px -1.5px 0 #000,0 -1.5px 0 #000,1.5px -1.5px 0 #000,1.5px 0 0 #000,1.5px 1.5px 0 #000,0 1.5px 0 #000,-1.5px 1.5px 0 #000,-1.5px 0 0 #000}.weather-display .main.hourly.main .column-headers .temp{left:355px}.weather-display .main.hourly.main .column-headers .like{left:435px}.weather-display .main.hourly.main .column-headers .wind{left:535px}.weather-display .main.hourly.main .hourly-lines{min-height:338px;padding-top:10px;background:repeating-linear-gradient(0deg, #001040 0px, #102080 136px, #102080 202px, #001040 338px)}.weather-display .main.hourly.main .hourly-lines .hourly-row{font-family:"Star4000 Large";font-size:24pt;height:72px;color:#ff0;text-shadow:3px 3px 0 #000,-1.5px -1.5px 0 #000,0 -1.5px 0 #000,1.5px -1.5px 0 #000,1.5px 0 0 #000,1.5px 1.5px 0 #000,0 1.5px 0 #000,-1.5px 1.5px 0 #000,-1.5px 0 0 #000;position:relative}.weather-display .main.hourly.main .hourly-lines .hourly-row>div{position:absolute;white-space:pre;top:8px}.weather-display .main.hourly.main .hourly-lines .hourly-row .hour{left:25px}.weather-display .main.hourly.main .hourly-lines .hourly-row .icon{left:255px;width:70px;text-align:center;top:unset}.weather-display .main.hourly.main .hourly-lines .hourly-row .temp{left:355px}.weather-display .main.hourly.main .hourly-lines .hourly-row .like{left:425px}.weather-display .main.hourly.main .hourly-lines .hourly-row .wind{left:505px;width:100px;text-align:right}#hourly-graph-html{background-image:url(../images/BackGround1_1_Chart.png)}#hourly-graph-html .header .right{position:absolute;top:35px;right:60px;width:360px;font-family:"Star4000 Small";font-size:32px;text-shadow:3px 3px 0 #000,-1.5px -1.5px 0 #000,0 -1.5px 0 #000,1.5px -1.5px 0 #000,1.5px 0 0 #000,1.5px 1.5px 0 #000,0 1.5px 0 #000,-1.5px 1.5px 0 #000,-1.5px 0 0 #000;text-align:right}#hourly-graph-html .header .right div{margin-top:-18px}#hourly-graph-html .header .right .temperature{color:red}#hourly-graph-html .header .right .cloud{color:#d3d3d3}#hourly-graph-html .header .right .rain{color:aqua}.weather-display .main.hourly-graph.main>div{position:absolute}.weather-display .main.hourly-graph.main .label{font-family:"Star4000 Small";font-size:24pt;color:#ff0;text-shadow:3px 3px 0 #000,-1.5px -1.5px 0 #000,0 -1.5px 0 #000,1.5px -1.5px 0 #000,1.5px 0 0 #000,1.5px 1.5px 0 #000,0 1.5px 0 #000,-1.5px 1.5px 0 #000,-1.5px 0 0 #000;margin-top:-15px;position:absolute}.weather-display .main.hourly-graph.main .x-axis{bottom:0px;left:0px;width:640px;height:20px}.weather-display .main.hourly-graph.main .x-axis .label{text-align:center;width:50px}.weather-display .main.hourly-graph.main .x-axis .label.l-1{left:25px}.weather-display .main.hourly-graph.main .x-axis .label.l-2{left:158px}.weather-display .main.hourly-graph.main .x-axis .label.l-3{left:291px}.weather-display .main.hourly-graph.main .x-axis .label.l-4{left:424px}.weather-display .main.hourly-graph.main .x-axis .label.l-5{left:557px}.weather-display .main.hourly-graph.main .chart{top:0px;left:50px}.weather-display .main.hourly-graph.main .chart img{width:532px;height:285px}.weather-display .main.hourly-graph.main .y-axis{top:0px;left:0px;width:50px;height:285px}.weather-display .main.hourly-graph.main .y-axis .label{text-align:right;right:0px}.weather-display .main.hourly-graph.main .y-axis .label.l-1{top:0px}.weather-display .main.hourly-graph.main .y-axis .label.l-2{top:140px}.weather-display .main.hourly-graph.main .y-axis .label.l-3{bottom:0px}.weather-display .main.hourly-graph.main .column-headers{background-color:#200057;height:20px;position:absolute;width:100%}.weather-display .main.hourly-graph.main .column-headers{position:-webkit-sticky;position:sticky;top:0px;z-index:5}.weather-display .main.hourly-graph.main .column-headers .temp{left:355px}.weather-display .main.hourly-graph.main .column-headers .like{left:435px}.weather-display .main.hourly-graph.main .column-headers .wind{left:535px}.weather-display .main.travel.main{overflow-y:hidden}.weather-display .main.travel.main .column-headers{background-color:#200057;height:20px;position:absolute;width:100%}.weather-display .main.travel.main .column-headers{position:-webkit-sticky;position:sticky;top:0px;z-index:5}.weather-display .main.travel.main .column-headers div{display:inline-block;font-family:"Star4000 Small";font-size:24pt;color:#ff0;position:absolute;top:-14px;z-index:5;text-shadow:3px 3px 0 #000,-1.5px -1.5px 0 #000,0 -1.5px 0 #000,1.5px -1.5px 0 #000,1.5px 0 0 #000,1.5px 1.5px 0 #000,0 1.5px 0 #000,-1.5px 1.5px 0 #000,-1.5px 0 0 #000}.weather-display .main.travel.main .column-headers .temp{width:50px;text-align:center}.weather-display .main.travel.main .column-headers .temp.low{left:455px}.weather-display .main.travel.main .column-headers .temp.high{left:510px;width:60px}.weather-display .main.travel.main .travel-lines{min-height:338px;padding-top:10px;background:repeating-linear-gradient(0deg, #001040 0px, #102080 136px, #102080 202px, #001040 338px)}.weather-display .main.travel.main .travel-lines .travel-row{font-family:"Star4000 Large";font-size:24pt;height:72px;color:#ff0;text-shadow:3px 3px 0 #000,-1.5px -1.5px 0 #000,0 -1.5px 0 #000,1.5px -1.5px 0 #000,1.5px 0 0 #000,1.5px 1.5px 0 #000,0 1.5px 0 #000,-1.5px 1.5px 0 #000,-1.5px 0 0 #000;position:relative}.weather-display .main.travel.main .travel-lines .travel-row>div{position:absolute;white-space:pre;top:8px}.weather-display .main.travel.main .travel-lines .travel-row .city{left:80px}.weather-display .main.travel.main .travel-lines .travel-row .icon{left:330px;width:70px;text-align:center;top:unset}.weather-display .main.travel.main .travel-lines .travel-row .icon img{max-width:47px}.weather-display .main.travel.main .travel-lines .travel-row .temp{width:50px;text-align:center}.weather-display .main.travel.main .travel-lines .travel-row .temp.low{left:455px}.weather-display .main.travel.main .travel-lines .travel-row .temp.high{left:510px;width:60px}.weather-display .latest-observations.main{overflow-y:hidden}.weather-display .latest-observations.main .column-headers{height:20px;position:absolute;width:100%}.weather-display .latest-observations.main .column-headers{top:0px}.weather-display .latest-observations.main .column-headers div{display:inline-block;font-family:"Star4000 Small";font-size:24pt;position:absolute;top:-14px;text-shadow:3px 3px 0 #000,-1.5px -1.5px 0 #000,0 -1.5px 0 #000,1.5px -1.5px 0 #000,1.5px 0 0 #000,1.5px 1.5px 0 #000,0 1.5px 0 #000,-1.5px 1.5px 0 #000,-1.5px 0 0 #000}.weather-display .latest-observations.main .column-headers .temp{display:none}.weather-display .latest-observations.main .column-headers .temp.show{display:inline-block}.weather-display .latest-observations.main .temp{left:230px}.weather-display .latest-observations.main .weather{left:280px}.weather-display .latest-observations.main .wind{left:430px}.weather-display .latest-observations.main .observation-lines{min-height:338px;padding-top:10px}.weather-display .latest-observations.main .observation-lines .observation-row{font-family:"Star4000";font-size:24pt;text-shadow:3px 3px 0 #000,-1.5px -1.5px 0 #000,0 -1.5px 0 #000,1.5px -1.5px 0 #000,1.5px 0 0 #000,1.5px 1.5px 0 #000,0 1.5px 0 #000,-1.5px 1.5px 0 #000,-1.5px 0 0 #000;position:relative;height:40px}.weather-display .latest-observations.main .observation-lines .observation-row>div{position:absolute;top:8px}.weather-display .latest-observations.main .observation-lines .observation-row .wind{white-space:pre;text-align:right}.weather-display .local-forecast .container{position:relative;top:15px;margin:0px 10px;box-sizing:border-box;height:280px;overflow:hidden}.weather-display .local-forecast .forecasts{position:relative}.weather-display .local-forecast .forecast{font-family:"Star4000";font-size:24pt;text-transform:uppercase;text-shadow:3px 3px 0 #000,-1.5px -1.5px 0 #000,0 -1.5px 0 #000,1.5px -1.5px 0 #000,1.5px 0 0 #000,1.5px 1.5px 0 #000,0 1.5px 0 #000,-1.5px 1.5px 0 #000,-1.5px 0 0 #000;min-height:280px;line-height:40px}.weather-display .progress{text-shadow:3px 3px 0 #000,-1.5px -1.5px 0 #000,0 -1.5px 0 #000,1.5px -1.5px 0 #000,1.5px 0 0 #000,1.5px 1.5px 0 #000,0 1.5px 0 #000,-1.5px 1.5px 0 #000,-1.5px 0 0 #000;font-family:"Star4000 Extended";font-size:19pt}.weather-display .progress .container{position:relative;top:15px;margin:0px 10px;box-sizing:border-box;height:310px;overflow:hidden}.weather-display .progress .container .item{position:relative}.weather-display .progress .container .item .name{white-space:nowrap}.weather-display .progress .container .item .name::after{content:"........................................................................"}.weather-display .progress .container .item .links{position:absolute;text-align:right;right:0px;top:0px}.weather-display .progress .container .item .links>div{background-color:#26235a;display:none;padding-left:4px}.weather-display .progress .container .item .links .loading,.weather-display .progress .container .item .links .retrying{color:#ff0}.weather-display .progress .container .item .links .press-here{color:lime;cursor:pointer}.weather-display .progress .container .item .links .failed{color:red}.weather-display .progress .container .item .links .no-data{color:silver}.weather-display .progress .container .item .links .disabled{color:silver}.weather-display .progress .container .item .links.loading .loading,.weather-display .progress .container .item .links.press-here .press-here,.weather-display .progress .container .item .links.failed .failed,.weather-display .progress .container .item .links.no-data .no-data,.weather-display .progress .container .item .links.disabled .disabled,.weather-display .progress .container .item .links.retrying .retrying{display:block}@-webkit-keyframes progress-scroll{0%{background-position:-40px 0}100%{background-position:40px 0}}@keyframes progress-scroll{0%{background-position:-40px 0}100%{background-position:40px 0}}#progress-html.weather-display .scroll .progress-bar-container{border:2px solid #000;background-color:#fff;margin:20px auto;width:524px;position:relative;display:none}#progress-html.weather-display .scroll .progress-bar-container.show{display:block}#progress-html.weather-display .scroll .progress-bar-container .progress-bar{height:20px;margin:2px;width:520px;background:repeating-linear-gradient(90deg, #09246f 0px, #09246f 5px, #364ac0 5px, #364ac0 10px, #4f99f9 10px, #4f99f9 15px, #8ffdfa 15px, #8ffdfa 20px, #4f99f9 20px, #4f99f9 25px, #364ac0 25px, #364ac0 30px, #09246f 30px, #09246f 40px);-webkit-animation-duration:2s;animation-duration:2s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;-webkit-animation-name:progress-scroll;animation-name:progress-scroll;-webkit-animation-timing-function:steps(8, end);animation-timing-function:steps(8, end)}#progress-html.weather-display .scroll .progress-bar-container .cover{position:absolute;top:0px;right:0px;background-color:#fff;width:100%;height:24px;transition:width 1s steps(6)}#radar-html.weather-display{background-image:url("../images/BackGround4_1.png")}#radar-html.weather-display .header{height:83px}#radar-html.weather-display .header .title.dual{color:#fff;font-family:"Arial",sans-serif;font-weight:bold;font-size:28pt;left:155px}#radar-html.weather-display .header .title.dual .top{top:-4px}#radar-html.weather-display .header .title.dual .bottom{top:31px}#radar-html.weather-display .header .right{position:absolute;right:0px;width:360px;margin-top:2px;font-family:"Star4000";font-size:18pt;font-weight:bold;text-shadow:3px 3px 0 #000,-1.5px -1.5px 0 #000,0 -1.5px 0 #000,1.5px -1.5px 0 #000,1.5px 0 0 #000,1.5px 1.5px 0 #000,0 1.5px 0 #000,-1.5px 1.5px 0 #000,-1.5px 0 0 #000;text-align:center}#radar-html.weather-display .header .right .scale>div{display:inline-block}#radar-html.weather-display .header .right .scale-table{display:table-row;border-collapse:collapse}#radar-html.weather-display .header .right .scale-table .box{display:table-cell;border:2px solid #000;width:17px;height:24px;padding:0}#radar-html.weather-display .header .right .scale-table .box-1{background-color:#31d216}#radar-html.weather-display .header .right .scale-table .box-2{background-color:#1c8a12}#radar-html.weather-display .header .right .scale-table .box-3{background-color:#145a0f}#radar-html.weather-display .header .right .scale-table .box-4{background-color:#0a280a}#radar-html.weather-display .header .right .scale-table .box-5{background-color:#c4b346}#radar-html.weather-display .header .right .scale-table .box-6{background-color:#be4813}#radar-html.weather-display .header .right .scale-table .box-7{background-color:#ab0e0e}#radar-html.weather-display .header .right .scale-table .box-8{background-color:#731f04}#radar-html.weather-display .header .right .scale .text{position:relative;top:-5px}#radar-html.weather-display .header .right .time{position:relative;font-weight:normal;top:-14px;font-family:"Star4000 Small";font-size:24pt}.weather-display .main.radar{overflow:hidden;height:367px}.weather-display .main.radar .container .scroll-area{position:relative}#regional-forecast-html.weather-display{background-image:url("../images/BackGround5_1.png")}.weather-display .main.regional-forecast{position:relative}.weather-display .main.regional-forecast .map{position:absolute}.weather-display .main.regional-forecast .location{position:absolute;width:140px;margin-left:-40px;margin-top:-35px}.weather-display .main.regional-forecast .location>div{position:absolute;text-shadow:3px 3px 0 #000,-1.5px -1.5px 0 #000,0 -1.5px 0 #000,1.5px -1.5px 0 #000,1.5px 0 0 #000,1.5px 1.5px 0 #000,0 1.5px 0 #000,-1.5px 1.5px 0 #000,-1.5px 0 0 #000}.weather-display .main.regional-forecast .location .icon{top:26px;left:44px}.weather-display .main.regional-forecast .location .icon img{max-height:32px}.weather-display .main.regional-forecast .location .temp{font-family:"Star4000 Large";font-size:28px;color:#ff0;top:28px;text-align:right;width:40px}.weather-display .main.regional-forecast .location .city{font-family:Star4000;font-size:20px}#almanac-html.weather-display{background-image:url("../images/BackGround3_1.png")}.weather-display .main.almanac{font-family:"Star4000";font-size:24pt;text-shadow:3px 3px 0 #000,-1.5px -1.5px 0 #000,0 -1.5px 0 #000,1.5px -1.5px 0 #000,1.5px 0 0 #000,1.5px 1.5px 0 #000,0 1.5px 0 #000,-1.5px 1.5px 0 #000,-1.5px 0 0 #000}.weather-display .main.almanac .sun{display:table;margin-left:50px;height:100px}.weather-display .main.almanac .sun>div{display:table-row;position:relative}.weather-display .main.almanac .sun>div>div{display:table-cell}.weather-display .main.almanac .sun .days{color:#ff0;text-align:right;top:-5px}.weather-display .main.almanac .sun .days .day{padding-right:10px}.weather-display .main.almanac .sun .times{text-align:right}.weather-display .main.almanac .sun .times .sun-time{width:200px}.weather-display .main.almanac .sun .times.times-1{top:-10px}.weather-display .main.almanac .sun .times.times-2{top:-15px}.weather-display .main.almanac .moon{position:relative;top:-10px;padding:0px 60px}.weather-display .main.almanac .moon .title{color:#ff0}.weather-display .main.almanac .moon .day{display:inline-block;text-align:center;width:130px}.weather-display .main.almanac .moon .day .icon{padding-left:10px}.weather-display .main.almanac .moon .day .date{position:relative;top:-10px}/*# sourceMappingURL=main.css.map */ \ No newline at end of file +@font-face{font-family:"Star4000";src:url("../fonts/Star4000.woff") format("woff")}body{font-family:"Star4000"}@media(prefers-color-scheme: dark){body{background-color:#000;color:#fff}}@media(prefers-color-scheme: dark){body a{color:#add8e6}}input,button{font-family:"Star4000"}#imgGetGps{height:13px;vertical-align:middle}#txtAddress{width:490px;font-size:16pt;max-width:calc(100% - 8px)}@media(prefers-color-scheme: dark){#txtAddress{background-color:#000;color:#fff;border:1px solid #a9a9a9}}#btnGetGps,#btnGetLatLng,#btnClearQuery{font-size:16pt;border:1px solid #a9a9a9}@media(prefers-color-scheme: dark){#btnGetGps,#btnGetLatLng,#btnClearQuery{background-color:#000;color:#fff}}#btnGetGps img.dark{display:none}@media(prefers-color-scheme: dark){#btnGetGps img.dark{display:inline-block}}@media(prefers-color-scheme: dark){#btnGetGps img.light{display:none}}#btnGetGps.active{background-color:#000}@media(prefers-color-scheme: dark){#btnGetGps.active{background-color:#fff}}#btnGetGps.active img{filter:invert(1)}.autocomplete-suggestions{background-color:#fff;border:1px solid #000}@media(prefers-color-scheme: dark){.autocomplete-suggestions{background-color:#000}}.autocomplete-suggestion{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:16pt}.autocomplete-selected{background-color:blue;color:#fff}#divTwc{display:block;background-color:#000;color:#fff;width:100%;max-width:640px}#divTwcLeft{display:none;text-align:right;flex-direction:column;vertical-align:middle}#divTwcLeft>div{flex:1;padding-right:12px;display:flex;flex-direction:column;justify-content:center}#divTwcRight{text-align:left;display:none;flex-direction:column;vertical-align:middle}#divTwcRight>div{flex:1;padding-left:12px;display:flex;flex-direction:column;justify-content:center}#divTwcBottom{display:flex;flex-direction:row;background-color:#000;color:#fff;width:100%}@media(prefers-color-scheme: dark){#divTwcBottom{background-color:#303030}}#divTwcBottom>div{padding-left:6px;padding-right:6px}#divTwcBottomLeft{flex:1;text-align:left}#divTwcBottomMiddle{flex:0;text-align:center}#divTwcBottomRight{flex:1;text-align:right}#divTwcNavContainer{display:none}#divTwcNav{width:100%;display:flex;flex-direction:row;background-color:#000;color:#fff;max-width:640px}#divTwcNav>div{padding-left:6px;padding-right:6px}#divTwcNavLeft{flex:1;text-align:left}#divTwcNavMiddle{flex:0;text-align:center}#divTwcNavRight{flex:1;text-align:right}#imgPause1x,#imgPause2x{visibility:hidden;position:absolute}.HideCursor{cursor:none !important}#txtScrollText{width:475px}@font-face{font-family:"Star4000";src:url("../fonts/Star4000.woff") format("woff")}@font-face{font-family:"Star 4 Radar";src:url("../fonts/Star 4 Radar.woff") format("woff")}@font-face{font-family:"Star4000 Extended";src:url("../fonts/Star4000 Extended.woff") format("woff")}@font-face{font-family:"Star4000LCN";src:url("../fonts/Star4000LCN.woff") format("woff")}@font-face{font-family:"Star4000 Large Compressed";src:url("../fonts/Star4000 Large Compressed.woff") format("woff")}@font-face{font-family:"Star4000 Large";src:url("../fonts/Star4000 Large.ttf") format("truetype")}@font-face{font-family:"Star4000 Small";src:url("../fonts/Star4000 Small.woff") format("woff")}#display{font-family:"Star4000";margin:0 0 0 0;width:100%}#container{position:relative;width:100%;height:100%;background-image:url(../images/BackGround1_1.png)}#divTwc:-webkit-full-screen #container{background-image:none;width:unset;height:unset}#divTwc:-ms-fullscreen #container{background-image:none;width:unset;height:unset}#divTwc:fullscreen #container{background-image:none;width:unset;height:unset}#loading{width:640px;height:480px;max-width:100%;text-shadow:4px 4px #000;display:flex;align-items:center;text-align:center;justify-content:center}#loading .title{font-family:Star4000 Large;font-size:36px;color:#ff0;margin-bottom:0px}#loading .version{margin-bottom:35px}#loading .instructions{font-size:18pt}.heading{font-weight:bold;margin-top:15px}#enabledDisplays{margin-bottom:15px}#enabledDisplays .loading,#enabledDisplays .retrying{color:#ff0}#enabledDisplays .press-here{color:lime;cursor:pointer}#enabledDisplays .failed{color:red}#enabledDisplays .no-data{color:silver}#enabledDisplays .disabled{color:silver}#enabledDisplays .press-here{color:#fff}#enabledDisplays label{display:block;max-width:300px}#divTwcBottom img{zoom:150%}#divTwc:-webkit-full-screen{display:flex;align-items:center;justify-content:center;align-content:center}#divTwc:-ms-fullscreen{display:flex;align-items:center;justify-content:center;align-content:center}#divTwc:fullscreen{display:flex;align-items:center;justify-content:center;align-content:center}#divTwc:-webkit-full-screen #display{position:relative}#divTwc:-ms-fullscreen #display{position:relative}#divTwc:fullscreen #display{position:relative}#divTwc:-webkit-full-screen #divTwcBottom{display:flex;flex-direction:row;background-color:rgba(0,0,0,.5);color:#fff;width:100%;position:absolute;bottom:0px}#divTwc:-ms-fullscreen #divTwcBottom{display:flex;flex-direction:row;background-color:rgba(0,0,0,.5);color:#fff;width:100%;position:absolute;bottom:0px}#divTwc:fullscreen #divTwcBottom{display:flex;flex-direction:row;background-color:rgba(0,0,0,.5);color:#fff;width:100%;position:absolute;bottom:0px}.navButton{cursor:pointer}.visible{visibility:visible;opacity:1;transition:opacity 1s linear}.hidden{visibility:hidden;opacity:0;transition:visibility 0s 1s,opacity 1s linear}.github-links{width:610px;max-width:calc(100vw - 30px);display:flex;justify-content:space-evenly;flex-wrap:wrap}.github-links span a{text-decoration:none;outline:0}.github-links span .widget{display:inline-block;overflow:hidden;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif;font-size:0;line-height:0;white-space:nowrap}.github-links span .btn,.github-links span .social-count{position:relative;display:inline-block;display:inline-flex;height:14px;padding:2px 5px;font-size:11px;font-weight:600;line-height:14px;vertical-align:bottom;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-repeat:repeat-x;background-position:-1px -1px;background-size:110% 110%;border:1px solid}.github-links span .btn{border-radius:.25em}.github-links span .btn:not(:last-child){border-radius:.25em 0 0 .25em}.github-links span .social-count{border-left:0;border-radius:0 .25em .25em 0}.github-links span .widget-lg .btn,.github-links span .widget-lg .social-count{height:16px;padding:5px 10px;font-size:12px;line-height:16px}.github-links span .octicon{display:inline-block;vertical-align:text-top;fill:currentColor;overflow:visible}.github-links span .btn:focus-visible,.github-links span .social-count:focus-visible{outline:2px solid #0969da;outline-offset:-2px}.github-links span .btn{color:#24292f;background-color:#ebf0f4;border-color:#ccd1d5;border-color:rgba(27,31,36,.15);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg'%3e%3clinearGradient id='o' x2='0' y2='1'%3e%3cstop stop-color='%23f6f8fa'/%3e%3cstop offset='90%25' stop-color='%23ebf0f4'/%3e%3c/linearGradient%3e%3crect width='100%25' height='100%25' fill='url(%23o)'/%3e%3c/svg%3e");background-image:linear-gradient(180deg, #f6f8fa, #ebf0f4 90%);filter:progid:DXImageTransform.Microsoft.Gradient(startColorstr="#FFF6F8FA", endColorstr="#FFEAEFF3")}.github-links span :root .btn{filter:none}.github-links span .btn:hover,.github-links span .btn:focus{background-color:#e9ebef;background-position:0 -0.5em;border-color:#caccd1;border-color:rgba(27,31,36,.15);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg'%3e%3clinearGradient id='o' x2='0' y2='1'%3e%3cstop stop-color='%23f3f4f6'/%3e%3cstop offset='90%25' stop-color='%23e9ebef'/%3e%3c/linearGradient%3e%3crect width='100%25' height='100%25' fill='url(%23o)'/%3e%3c/svg%3e");background-image:linear-gradient(180deg, #f3f4f6, #e9ebef 90%);filter:progid:DXImageTransform.Microsoft.Gradient(startColorstr="#FFF3F4F6", endColorstr="#FFE8EAEE")}.github-links span :root .btn:hover,.github-links span :root .btn:focus{filter:none}.github-links span .btn:active{background-color:#e5e9ed;border-color:#c7cbcf;border-color:rgba(27,31,36,.15);box-shadow:inset 0 .15em .3em rgba(27,31,36,.15);background-image:none;filter:none}.github-links span .social-count{color:#24292f;background-color:#fff;border-color:#ddddde;border-color:rgba(27,31,36,.15)}.github-links span .social-count:hover,.github-links span .social-count:focus{color:#0969da}.github-links span .octicon-heart{color:#bf3989}@media(prefers-color-scheme: light){.github-links span .btn:focus-visible,.github-links span .social-count:focus-visible{outline:2px solid #0969da;outline-offset:-2px}.github-links span .btn{color:#24292f;background-color:#ebf0f4;border-color:#ccd1d5;border-color:rgba(27,31,36,.15);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg'%3e%3clinearGradient id='o' x2='0' y2='1'%3e%3cstop stop-color='%23f6f8fa'/%3e%3cstop offset='90%25' stop-color='%23ebf0f4'/%3e%3c/linearGradient%3e%3crect width='100%25' height='100%25' fill='url(%23o)'/%3e%3c/svg%3e");background-image:linear-gradient(180deg, #f6f8fa, #ebf0f4 90%);filter:progid:DXImageTransform.Microsoft.Gradient(startColorstr="#FFF6F8FA", endColorstr="#FFEAEFF3")}.github-links span :root .btn{filter:none}.github-links span .btn:hover,.github-links span .btn:focus{background-color:#e9ebef;background-position:0 -0.5em;border-color:#caccd1;border-color:rgba(27,31,36,.15);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg'%3e%3clinearGradient id='o' x2='0' y2='1'%3e%3cstop stop-color='%23f3f4f6'/%3e%3cstop offset='90%25' stop-color='%23e9ebef'/%3e%3c/linearGradient%3e%3crect width='100%25' height='100%25' fill='url(%23o)'/%3e%3c/svg%3e");background-image:linear-gradient(180deg, #f3f4f6, #e9ebef 90%);filter:progid:DXImageTransform.Microsoft.Gradient(startColorstr="#FFF3F4F6", endColorstr="#FFE8EAEE")}.github-links span :root .btn:hover,.github-links span :root .btn:focus{filter:none}.github-links span .btn:active{background-color:#e5e9ed;border-color:#c7cbcf;border-color:rgba(27,31,36,.15);box-shadow:inset 0 .15em .3em rgba(27,31,36,.15);background-image:none;filter:none}.github-links span .social-count{color:#24292f;background-color:#fff;border-color:#ddddde;border-color:rgba(27,31,36,.15)}.github-links span .social-count:hover,.github-links span .social-count:focus{color:#0969da}.github-links span .octicon-heart{color:#bf3989}}@media(prefers-color-scheme: dark){.github-links span .btn:focus-visible,.github-links span .social-count:focus-visible{outline:2px solid #58a6ff;outline-offset:-2px}.github-links span .btn{color:#c9d1d9;background-color:#1a1e23;border-color:#2f3439;border-color:rgba(240,246,252,.1);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg'%3e%3clinearGradient id='o' x2='0' y2='1'%3e%3cstop stop-color='%2321262d'/%3e%3cstop offset='90%25' stop-color='%231a1e23'/%3e%3c/linearGradient%3e%3crect width='100%25' height='100%25' fill='url(%23o)'/%3e%3c/svg%3e");background-image:linear-gradient(180deg, #21262d, #1a1e23 90%);filter:progid:DXImageTransform.Microsoft.Gradient(startColorstr="#FF21262D", endColorstr="#FF191D22")}.github-links span :root .btn{filter:none}.github-links span .btn:hover,.github-links span .btn:focus{background-color:#292e33;background-position:0 -0.5em;border-color:#8b949e;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg'%3e%3clinearGradient id='o' x2='0' y2='1'%3e%3cstop stop-color='%2330363d'/%3e%3cstop offset='90%25' stop-color='%23292e33'/%3e%3c/linearGradient%3e%3crect width='100%25' height='100%25' fill='url(%23o)'/%3e%3c/svg%3e");background-image:linear-gradient(180deg, #30363d, #292e33 90%);filter:progid:DXImageTransform.Microsoft.Gradient(startColorstr="#FF30363D", endColorstr="#FF282D32")}.github-links span :root .btn:hover,.github-links span :root .btn:focus{filter:none}.github-links span .btn:active{background-color:#161719;border-color:#8b949e;box-shadow:inset 0 .15em .3em rgba(1,4,9,.15);background-image:none;filter:none}.github-links span .social-count{color:#c9d1d9;background-color:#0d1117;border-color:#24282e;border-color:rgba(240,246,252,.1)}.github-links span .social-count:hover,.github-links span .social-count:focus{color:#58a6ff}.github-links span .octicon-heart{color:#db61a2}}.weather-display{width:640px;height:480px;overflow:hidden;position:relative;background-image:url(../images/BackGround1_1.png);height:0px}.weather-display.show{height:480px}.weather-display .template{display:none}.weather-display .header{width:640px;height:60px;padding-top:30px}.weather-display .header .title{color:#ff0;text-shadow:3px 3px 0 #000,-1.5px -1.5px 0 #000,0 -1.5px 0 #000,1.5px -1.5px 0 #000,1.5px 0 0 #000,1.5px 1.5px 0 #000,0 1.5px 0 #000,-1.5px 1.5px 0 #000,-1.5px 0 0 #000;font-family:"Star4000";font-size:24pt;position:absolute;width:250px}.weather-display .header .title.single{left:170px;top:25px}.weather-display .header .title.dual{left:170px}.weather-display .header .title.dual>div{position:absolute}.weather-display .header .title.dual .top{top:-3px}.weather-display .header .title.dual .bottom{top:26px}.weather-display .header .logo{top:30px;left:50px;position:absolute;z-index:10}.weather-display .header .noaa-logo{position:absolute;top:39px;left:356px}.weather-display .header .title.single{top:40px}.weather-display .header .date-time{white-space:pre;color:#fff;font-family:"Star4000 Small";font-size:24pt;text-shadow:3px 3px 0 #000,-1.5px -1.5px 0 #000,0 -1.5px 0 #000,1.5px -1.5px 0 #000,1.5px 0 0 #000,1.5px 1.5px 0 #000,0 1.5px 0 #000,-1.5px 1.5px 0 #000,-1.5px 0 0 #000;left:415px;width:170px;text-align:right;position:absolute}.weather-display .header .date-time.date{padding-top:22px}.weather-display .main{position:relative}.weather-display .main.has-scroll{width:640px;height:310px;overflow:hidden}.weather-display .main.has-box{margin-left:64px;margin-right:64px;width:calc(100% - 128px)}.weather-display .scroll{text-shadow:3px 3px 0 #000,-1.5px -1.5px 0 #000,0 -1.5px 0 #000,1.5px -1.5px 0 #000,1.5px 0 0 #000,1.5px 1.5px 0 #000,0 1.5px 0 #000,-1.5px 1.5px 0 #000,-1.5px 0 0 #000;width:640px;height:70px;overflow:hidden;margin-top:10px}.weather-display .scroll .fixed{font-family:"Star4000";font-size:24pt;margin-left:55px}.weather-display .main.current-weather.main .col{height:50px;width:255px;display:inline-block;margin-top:10px;position:absolute;text-shadow:3px 3px 0 #000,-1.5px -1.5px 0 #000,0 -1.5px 0 #000,1.5px -1.5px 0 #000,1.5px 0 0 #000,1.5px 1.5px 0 #000,0 1.5px 0 #000,-1.5px 1.5px 0 #000,-1.5px 0 0 #000}.weather-display .main.current-weather.main .col.left{font-family:"Star4000 Extended";font-size:24pt}.weather-display .main.current-weather.main .col.right{right:0px;font-family:"Star4000 Large";font-size:16pt;font-weight:bold}.weather-display .main.current-weather.main .col.right .row{margin-bottom:12px}.weather-display .main.current-weather.main .col.right .row .label,.weather-display .main.current-weather.main .col.right .row .value{display:inline-block}.weather-display .main.current-weather.main .col.right .row .label{margin-left:20px}.weather-display .main.current-weather.main .col.right .row .value{float:right;margin-right:10px}.weather-display .main.current-weather.main .center{text-align:center}.weather-display .main.current-weather.main .temp{font-family:"Star4000 Large";font-size:24pt}.weather-display .main.current-weather.main .icon{height:100px}.weather-display .main.current-weather.main .icon img{max-width:126px}.weather-display .main.current-weather.main .wind-container{margin-bottom:10px}.weather-display .main.current-weather.main .wind-container>div{width:45%;display:inline-block;margin:0px}.weather-display .main.current-weather.main .wind-container .wind-label{margin-left:5px}.weather-display .main.current-weather.main .wind-container .wind{text-align:right}.weather-display .main.current-weather.main .wind-gusts{margin-left:5px}.weather-display .main.current-weather.main .location{color:#ff0;margin-bottom:10px}#extended-forecast-html.weather-display{background-image:url("../images/BackGround2_1.png")}.weather-display .main.extended-forecast .day-container{margin-top:16px;margin-left:27px}.weather-display .main.extended-forecast .day{text-shadow:3px 3px 0 #000,-1.5px -1.5px 0 #000,0 -1.5px 0 #000,1.5px -1.5px 0 #000,1.5px 0 0 #000,1.5px 1.5px 0 #000,0 1.5px 0 #000,-1.5px 1.5px 0 #000,-1.5px 0 0 #000;padding:5px;height:285px;width:155px;display:inline-block;margin:0px 15px;font-family:"Star4000";font-size:24pt}.weather-display .main.extended-forecast .day .date{text-transform:uppercase;text-align:center;color:#ff0}.weather-display .main.extended-forecast .day .condition{text-align:center;height:74px;margin-top:10px}.weather-display .main.extended-forecast .day .icon{text-align:center;height:75px}.weather-display .main.extended-forecast .day .icon img{max-height:75px}.weather-display .main.extended-forecast .day .temperatures{width:100%;margin-top:5px}.weather-display .main.extended-forecast .day .temperatures .temperature-block{display:inline-block;width:44%;vertical-align:top}.weather-display .main.extended-forecast .day .temperatures .temperature-block>div{text-align:center}.weather-display .main.extended-forecast .day .temperatures .temperature-block .value{font-family:"Star4000 Large";margin-top:4px}.weather-display .main.extended-forecast .day .temperatures .temperature-block.lo .label{color:#8080ff}.weather-display .main.extended-forecast .day .temperatures .temperature-block.hi .label{color:#ff0}.weather-display .main.hourly.main{overflow-y:hidden}.weather-display .main.hourly.main .column-headers{background-color:#200057;height:20px;position:absolute;width:100%}.weather-display .main.hourly.main .column-headers{position:-webkit-sticky;position:sticky;top:0px;z-index:5}.weather-display .main.hourly.main .column-headers div{display:inline-block;font-family:"Star4000 Small";font-size:24pt;color:#ff0;position:absolute;top:-14px;z-index:5;text-shadow:3px 3px 0 #000,-1.5px -1.5px 0 #000,0 -1.5px 0 #000,1.5px -1.5px 0 #000,1.5px 0 0 #000,1.5px 1.5px 0 #000,0 1.5px 0 #000,-1.5px 1.5px 0 #000,-1.5px 0 0 #000}.weather-display .main.hourly.main .column-headers .temp{left:355px}.weather-display .main.hourly.main .column-headers .like{left:435px}.weather-display .main.hourly.main .column-headers .wind{left:535px}.weather-display .main.hourly.main .hourly-lines{min-height:338px;padding-top:10px;background:repeating-linear-gradient(0deg, #001040 0px, #102080 136px, #102080 202px, #001040 338px)}.weather-display .main.hourly.main .hourly-lines .hourly-row{font-family:"Star4000 Large";font-size:24pt;height:72px;color:#ff0;text-shadow:3px 3px 0 #000,-1.5px -1.5px 0 #000,0 -1.5px 0 #000,1.5px -1.5px 0 #000,1.5px 0 0 #000,1.5px 1.5px 0 #000,0 1.5px 0 #000,-1.5px 1.5px 0 #000,-1.5px 0 0 #000;position:relative}.weather-display .main.hourly.main .hourly-lines .hourly-row>div{position:absolute;white-space:pre;top:8px}.weather-display .main.hourly.main .hourly-lines .hourly-row .hour{left:25px}.weather-display .main.hourly.main .hourly-lines .hourly-row .icon{left:255px;width:70px;text-align:center;top:unset}.weather-display .main.hourly.main .hourly-lines .hourly-row .temp{left:355px}.weather-display .main.hourly.main .hourly-lines .hourly-row .like{left:425px}.weather-display .main.hourly.main .hourly-lines .hourly-row .wind{left:505px;width:100px;text-align:right}#hourly-graph-html{background-image:url(../images/BackGround1_1_Chart.png)}#hourly-graph-html .header .right{position:absolute;top:35px;right:60px;width:360px;font-family:"Star4000 Small";font-size:32px;text-shadow:3px 3px 0 #000,-1.5px -1.5px 0 #000,0 -1.5px 0 #000,1.5px -1.5px 0 #000,1.5px 0 0 #000,1.5px 1.5px 0 #000,0 1.5px 0 #000,-1.5px 1.5px 0 #000,-1.5px 0 0 #000;text-align:right}#hourly-graph-html .header .right div{margin-top:-18px}#hourly-graph-html .header .right .temperature{color:red}#hourly-graph-html .header .right .cloud{color:#d3d3d3}#hourly-graph-html .header .right .rain{color:aqua}.weather-display .main.hourly-graph.main>div{position:absolute}.weather-display .main.hourly-graph.main .label{font-family:"Star4000 Small";font-size:24pt;color:#ff0;text-shadow:3px 3px 0 #000,-1.5px -1.5px 0 #000,0 -1.5px 0 #000,1.5px -1.5px 0 #000,1.5px 0 0 #000,1.5px 1.5px 0 #000,0 1.5px 0 #000,-1.5px 1.5px 0 #000,-1.5px 0 0 #000;margin-top:-15px;position:absolute}.weather-display .main.hourly-graph.main .x-axis{bottom:0px;left:0px;width:640px;height:20px}.weather-display .main.hourly-graph.main .x-axis .label{text-align:center;width:50px}.weather-display .main.hourly-graph.main .x-axis .label.l-1{left:25px}.weather-display .main.hourly-graph.main .x-axis .label.l-2{left:158px}.weather-display .main.hourly-graph.main .x-axis .label.l-3{left:291px}.weather-display .main.hourly-graph.main .x-axis .label.l-4{left:424px}.weather-display .main.hourly-graph.main .x-axis .label.l-5{left:557px}.weather-display .main.hourly-graph.main .chart{top:0px;left:50px}.weather-display .main.hourly-graph.main .chart img{width:532px;height:285px}.weather-display .main.hourly-graph.main .y-axis{top:0px;left:0px;width:50px;height:285px}.weather-display .main.hourly-graph.main .y-axis .label{text-align:right;right:0px}.weather-display .main.hourly-graph.main .y-axis .label.l-1{top:0px}.weather-display .main.hourly-graph.main .y-axis .label.l-2{top:140px}.weather-display .main.hourly-graph.main .y-axis .label.l-3{bottom:0px}.weather-display .main.hourly-graph.main .column-headers{background-color:#200057;height:20px;position:absolute;width:100%}.weather-display .main.hourly-graph.main .column-headers{position:-webkit-sticky;position:sticky;top:0px;z-index:5}.weather-display .main.hourly-graph.main .column-headers .temp{left:355px}.weather-display .main.hourly-graph.main .column-headers .like{left:435px}.weather-display .main.hourly-graph.main .column-headers .wind{left:535px}.weather-display .main.travel.main{overflow-y:hidden}.weather-display .main.travel.main .column-headers{background-color:#200057;height:20px;position:absolute;width:100%}.weather-display .main.travel.main .column-headers{position:-webkit-sticky;position:sticky;top:0px;z-index:5}.weather-display .main.travel.main .column-headers div{display:inline-block;font-family:"Star4000 Small";font-size:24pt;color:#ff0;position:absolute;top:-14px;z-index:5;text-shadow:3px 3px 0 #000,-1.5px -1.5px 0 #000,0 -1.5px 0 #000,1.5px -1.5px 0 #000,1.5px 0 0 #000,1.5px 1.5px 0 #000,0 1.5px 0 #000,-1.5px 1.5px 0 #000,-1.5px 0 0 #000}.weather-display .main.travel.main .column-headers .temp{width:50px;text-align:center}.weather-display .main.travel.main .column-headers .temp.low{left:455px}.weather-display .main.travel.main .column-headers .temp.high{left:510px;width:60px}.weather-display .main.travel.main .travel-lines{min-height:338px;padding-top:10px;background:repeating-linear-gradient(0deg, #001040 0px, #102080 136px, #102080 202px, #001040 338px)}.weather-display .main.travel.main .travel-lines .travel-row{font-family:"Star4000 Large";font-size:24pt;height:72px;color:#ff0;text-shadow:3px 3px 0 #000,-1.5px -1.5px 0 #000,0 -1.5px 0 #000,1.5px -1.5px 0 #000,1.5px 0 0 #000,1.5px 1.5px 0 #000,0 1.5px 0 #000,-1.5px 1.5px 0 #000,-1.5px 0 0 #000;position:relative}.weather-display .main.travel.main .travel-lines .travel-row>div{position:absolute;white-space:pre;top:8px}.weather-display .main.travel.main .travel-lines .travel-row .city{left:80px}.weather-display .main.travel.main .travel-lines .travel-row .icon{left:330px;width:70px;text-align:center;top:unset}.weather-display .main.travel.main .travel-lines .travel-row .icon img{max-width:47px}.weather-display .main.travel.main .travel-lines .travel-row .temp{width:50px;text-align:center}.weather-display .main.travel.main .travel-lines .travel-row .temp.low{left:455px}.weather-display .main.travel.main .travel-lines .travel-row .temp.high{left:510px;width:60px}.weather-display .latest-observations.main{overflow-y:hidden}.weather-display .latest-observations.main .column-headers{height:20px;position:absolute;width:100%}.weather-display .latest-observations.main .column-headers{top:0px}.weather-display .latest-observations.main .column-headers div{display:inline-block;font-family:"Star4000 Small";font-size:24pt;position:absolute;top:-14px;text-shadow:3px 3px 0 #000,-1.5px -1.5px 0 #000,0 -1.5px 0 #000,1.5px -1.5px 0 #000,1.5px 0 0 #000,1.5px 1.5px 0 #000,0 1.5px 0 #000,-1.5px 1.5px 0 #000,-1.5px 0 0 #000}.weather-display .latest-observations.main .column-headers .temp{display:none}.weather-display .latest-observations.main .column-headers .temp.show{display:inline-block}.weather-display .latest-observations.main .temp{left:230px}.weather-display .latest-observations.main .weather{left:280px}.weather-display .latest-observations.main .wind{left:430px}.weather-display .latest-observations.main .observation-lines{min-height:338px;padding-top:10px}.weather-display .latest-observations.main .observation-lines .observation-row{font-family:"Star4000";font-size:24pt;text-shadow:3px 3px 0 #000,-1.5px -1.5px 0 #000,0 -1.5px 0 #000,1.5px -1.5px 0 #000,1.5px 0 0 #000,1.5px 1.5px 0 #000,0 1.5px 0 #000,-1.5px 1.5px 0 #000,-1.5px 0 0 #000;position:relative;height:40px}.weather-display .latest-observations.main .observation-lines .observation-row>div{position:absolute;top:8px}.weather-display .latest-observations.main .observation-lines .observation-row .wind{white-space:pre;text-align:right}.weather-display .local-forecast .container{position:relative;top:15px;margin:0px 10px;box-sizing:border-box;height:280px;overflow:hidden}.weather-display .local-forecast .forecasts{position:relative}.weather-display .local-forecast .forecast{font-family:"Star4000";font-size:24pt;text-transform:uppercase;text-shadow:3px 3px 0 #000,-1.5px -1.5px 0 #000,0 -1.5px 0 #000,1.5px -1.5px 0 #000,1.5px 0 0 #000,1.5px 1.5px 0 #000,0 1.5px 0 #000,-1.5px 1.5px 0 #000,-1.5px 0 0 #000;min-height:280px;line-height:40px}.weather-display .progress{text-shadow:3px 3px 0 #000,-1.5px -1.5px 0 #000,0 -1.5px 0 #000,1.5px -1.5px 0 #000,1.5px 0 0 #000,1.5px 1.5px 0 #000,0 1.5px 0 #000,-1.5px 1.5px 0 #000,-1.5px 0 0 #000;font-family:"Star4000 Extended";font-size:19pt}.weather-display .progress .container{position:relative;top:15px;margin:0px 10px;box-sizing:border-box;height:310px;overflow:hidden}.weather-display .progress .container .item{position:relative}.weather-display .progress .container .item .name{white-space:nowrap}.weather-display .progress .container .item .name::after{content:"........................................................................"}.weather-display .progress .container .item .links{position:absolute;text-align:right;right:0px;top:0px}.weather-display .progress .container .item .links>div{background-color:#26235a;display:none;padding-left:4px}.weather-display .progress .container .item .links .loading,.weather-display .progress .container .item .links .retrying{color:#ff0}.weather-display .progress .container .item .links .press-here{color:lime;cursor:pointer}.weather-display .progress .container .item .links .failed{color:red}.weather-display .progress .container .item .links .no-data{color:silver}.weather-display .progress .container .item .links .disabled{color:silver}.weather-display .progress .container .item .links.loading .loading,.weather-display .progress .container .item .links.press-here .press-here,.weather-display .progress .container .item .links.failed .failed,.weather-display .progress .container .item .links.no-data .no-data,.weather-display .progress .container .item .links.disabled .disabled,.weather-display .progress .container .item .links.retrying .retrying{display:block}@-webkit-keyframes progress-scroll{0%{background-position:-40px 0}100%{background-position:40px 0}}@keyframes progress-scroll{0%{background-position:-40px 0}100%{background-position:40px 0}}#progress-html.weather-display .scroll .progress-bar-container{border:2px solid #000;background-color:#fff;margin:20px auto;width:524px;position:relative;display:none}#progress-html.weather-display .scroll .progress-bar-container.show{display:block}#progress-html.weather-display .scroll .progress-bar-container .progress-bar{height:20px;margin:2px;width:520px;background:repeating-linear-gradient(90deg, #09246f 0px, #09246f 5px, #364ac0 5px, #364ac0 10px, #4f99f9 10px, #4f99f9 15px, #8ffdfa 15px, #8ffdfa 20px, #4f99f9 20px, #4f99f9 25px, #364ac0 25px, #364ac0 30px, #09246f 30px, #09246f 40px);-webkit-animation-duration:2s;animation-duration:2s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;-webkit-animation-name:progress-scroll;animation-name:progress-scroll;-webkit-animation-timing-function:steps(8, end);animation-timing-function:steps(8, end)}#progress-html.weather-display .scroll .progress-bar-container .cover{position:absolute;top:0px;right:0px;background-color:#fff;width:100%;height:24px;transition:width 1s steps(6)}#radar-html.weather-display{background-image:url("../images/BackGround4_1.png")}#radar-html.weather-display .header{height:83px}#radar-html.weather-display .header .title.dual{color:#fff;font-family:"Arial",sans-serif;font-weight:bold;font-size:28pt;left:155px}#radar-html.weather-display .header .title.dual .top{top:-4px}#radar-html.weather-display .header .title.dual .bottom{top:31px}#radar-html.weather-display .header .right{position:absolute;right:0px;width:360px;margin-top:2px;font-family:"Star4000";font-size:18pt;font-weight:bold;text-shadow:3px 3px 0 #000,-1.5px -1.5px 0 #000,0 -1.5px 0 #000,1.5px -1.5px 0 #000,1.5px 0 0 #000,1.5px 1.5px 0 #000,0 1.5px 0 #000,-1.5px 1.5px 0 #000,-1.5px 0 0 #000;text-align:center}#radar-html.weather-display .header .right .scale>div{display:inline-block}#radar-html.weather-display .header .right .scale-table{display:table-row;border-collapse:collapse}#radar-html.weather-display .header .right .scale-table .box{display:table-cell;border:2px solid #000;width:17px;height:24px;padding:0}#radar-html.weather-display .header .right .scale-table .box-1{background-color:#31d216}#radar-html.weather-display .header .right .scale-table .box-2{background-color:#1c8a12}#radar-html.weather-display .header .right .scale-table .box-3{background-color:#145a0f}#radar-html.weather-display .header .right .scale-table .box-4{background-color:#0a280a}#radar-html.weather-display .header .right .scale-table .box-5{background-color:#c4b346}#radar-html.weather-display .header .right .scale-table .box-6{background-color:#be4813}#radar-html.weather-display .header .right .scale-table .box-7{background-color:#ab0e0e}#radar-html.weather-display .header .right .scale-table .box-8{background-color:#731f04}#radar-html.weather-display .header .right .scale .text{position:relative;top:-5px}#radar-html.weather-display .header .right .time{position:relative;font-weight:normal;top:-14px;font-family:"Star4000 Small";font-size:24pt}.weather-display .main.radar{overflow:hidden;height:367px}.weather-display .main.radar .container .scroll-area{position:relative}#regional-forecast-html.weather-display{background-image:url("../images/BackGround5_1.png")}.weather-display .main.regional-forecast{position:relative}.weather-display .main.regional-forecast .map{position:absolute}.weather-display .main.regional-forecast .location{position:absolute;width:140px;margin-left:-40px;margin-top:-35px}.weather-display .main.regional-forecast .location>div{position:absolute;text-shadow:3px 3px 0 #000,-1.5px -1.5px 0 #000,0 -1.5px 0 #000,1.5px -1.5px 0 #000,1.5px 0 0 #000,1.5px 1.5px 0 #000,0 1.5px 0 #000,-1.5px 1.5px 0 #000,-1.5px 0 0 #000}.weather-display .main.regional-forecast .location .icon{top:26px;left:44px}.weather-display .main.regional-forecast .location .icon img{max-height:32px}.weather-display .main.regional-forecast .location .temp{font-family:"Star4000 Large";font-size:28px;color:#ff0;top:28px;text-align:right;width:40px}.weather-display .main.regional-forecast .location .city{font-family:Star4000;font-size:20px}#almanac-html.weather-display{background-image:url("../images/BackGround3_1.png")}.weather-display .main.almanac{font-family:"Star4000";font-size:24pt;text-shadow:3px 3px 0 #000,-1.5px -1.5px 0 #000,0 -1.5px 0 #000,1.5px -1.5px 0 #000,1.5px 0 0 #000,1.5px 1.5px 0 #000,0 1.5px 0 #000,-1.5px 1.5px 0 #000,-1.5px 0 0 #000}.weather-display .main.almanac .sun{display:table;margin-left:50px;height:100px}.weather-display .main.almanac .sun>div{display:table-row;position:relative}.weather-display .main.almanac .sun>div>div{display:table-cell}.weather-display .main.almanac .sun .days{color:#ff0;text-align:right;top:-5px}.weather-display .main.almanac .sun .days .day{padding-right:10px}.weather-display .main.almanac .sun .times{text-align:right}.weather-display .main.almanac .sun .times .sun-time{width:200px}.weather-display .main.almanac .sun .times.times-1{top:-10px}.weather-display .main.almanac .sun .times.times-2{top:-15px}.weather-display .main.almanac .moon{position:relative;top:-10px;padding:0px 60px}.weather-display .main.almanac .moon .title{color:#ff0}.weather-display .main.almanac .moon .day{display:inline-block;text-align:center;width:130px}.weather-display .main.almanac .moon .day .icon{padding-left:10px}.weather-display .main.almanac .moon .day .date{position:relative;top:-10px}/*# sourceMappingURL=main.css.map */ \ No newline at end of file diff --git a/dist/resources/ws.min.js b/dist/resources/ws.min.js index d1510a9..4c35f3a 100644 --- a/dist/resources/ws.min.js +++ b/dist/resources/ws.min.js @@ -1 +1 @@ -(()=>{"use strict";var e={407:(e,t,n)=>{var s=n(929),r=n(739),a=n(325),i=n(594);document.addEventListener("DOMContentLoaded",(()=>{c()}));let o=!1;const l=["Land Features","Bay","Channel","Cove","Dam","Delta","Gulf","Lagoon","Lake","Ocean","Reef","Reservoir","Sea","Sound","Strait","Waterfall","Wharf","Amusement Park","Historical Monument","Landmark","Tourist Attraction","Zoo","College","Beach","Campground","Golf Course","Harbor","Nature Reserve","Other Parks and Outdoors","Park","Racetrack","Scenic Overlook","Ski Resort","Sports Center","Sports Field","Wildlife Reserve","Airport","Ferry","Marina","Pier","Port","Resort","Postal","Populated Place"].join(","),c=()=>{document.getElementById("txtAddress").addEventListener("focus",(e=>{e.target.select()})),(0,a.uL)(y),document.getElementById("NavigateMenu").addEventListener("click",g),document.getElementById("NavigateRefresh").addEventListener("click",w),document.getElementById("NavigateNext").addEventListener("click",v),document.getElementById("NavigatePrevious").addEventListener("click",S),document.getElementById("NavigatePlay").addEventListener("click",I),document.getElementById("ToggleFullScreen").addEventListener("click",h);const e=document.getElementById("btnGetGps");e.addEventListener("click",D),navigator.geolocation||(e.style.display="none"),document.getElementById("divTwc").addEventListener("click",(()=>{document.fullscreenElement&&T()})),document.addEventListener("keydown",C),document.addEventListener("touchmove",(e=>{o&&e.preventDefault()})),$("#frmGetLatLng #txtAddress").devbridgeAutocomplete({serviceUrl:"https://geocode.arcgis.com/arcgis/rest/services/World/GeocodeServer/suggest",deferRequestBy:300,paramName:"text",params:{f:"json",countryCode:"USA",category:l,maxSuggestions:10},dataType:"json",transformResult:e=>({suggestions:e.suggestions.map((e=>({value:e.text,data:e.magicKey})))}),minChars:3,showNoSuggestionNotice:!0,noSuggestionNotice:"No results found. Please try a different search string.",onSelect(e){u(e,this)},width:490}),$("#frmGetLatLng").on("submit",(()=>{const e=$("#frmGetLatLng #txtAddress").devbridgeAutocomplete();return e.suggestions[0]&&$(e.suggestionsContainer.children[0]).trigger("click"),!1}));const t=localStorage.getItem("latLonQuery"),n=localStorage.getItem("latLon"),s=localStorage.getItem("latLonFromGPS");if(t&&n&&!s){document.getElementById("txtAddress").value=t,y(JSON.parse(n))}s&&D();const r=localStorage.getItem("play");null!==r&&"true"!==r||M("navButton","play"),document.getElementById("btnClearQuery").addEventListener("click",(()=>{document.getElementById("spanCity").innerHTML="",document.getElementById("spanState").innerHTML="",document.getElementById("spanStationId").innerHTML="",document.getElementById("spanRadarId").innerHTML="",document.getElementById("spanZoneId").innerHTML="",document.getElementById("chkAutoRefresh").checked=!0,localStorage.removeItem("autoRefresh"),localStorage.removeItem("play"),M("navButton","play"),localStorage.removeItem("latLonQuery"),localStorage.removeItem("latLon"),localStorage.removeItem("latLonFromGPS"),document.getElementById("btnGetGps").classList.remove("active")})),document.getElementById("container").addEventListener("swiped-left",(()=>p("left"))),document.getElementById("container").addEventListener("swiped-right",(()=>p("right")))},u=async(e,t)=>{if(t.previousSuggestionValue===e.value)return;const n=(await(0,s.AV)("https://geocode.arcgis.com/arcgis/rest/services/World/GeocodeServer/find",{data:{text:e.value,magicKey:e.data,f:"json"}})).locations[0];n?(localStorage.removeItem("latLonFromGPS"),document.getElementById("btnGetGps").classList.remove("active"),d(n.feature.geometry)):console.error("An unexpected error occurred. Please try a different search string.")},d=(e,t)=>{const n={lat:(0,i.Xp)(e.y,4),lon:(0,i.Xp)(e.x,4)};localStorage.setItem("latLonQuery",document.getElementById("txtAddress").value),localStorage.setItem("latLon",JSON.stringify(n)),y(n,t)},h=()=>(document.fullscreenElement?f():m(),(0,a.yA)()?(0,r.Z)(!0):(0,r.Z)(!1),T(),!1),m=()=>{const e=document.getElementById("divTwc"),t=e.requestFullScreen||e.webkitRequestFullScreen||e.mozRequestFullScreen||e.msRequestFullscreen;t?t.call(e,{navigationUI:"hide"}):(window.scrollTo(0,0),o=!0),(0,a.SI)(),T();const n=document.getElementById("ToggleFullScreen");n.src="images/nav/ic_fullscreen_exit_white_24dp_1x.png",n.title="Exit fullscreen"},f=()=>{o&&(o=!1),document.exitFullscreen?document.exitFullscreen():document.webkitExitFullscreen?document.webkitExitFullscreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.msExitFullscreen&&document.msExitFullscreen(),(0,a.SI)();const e=document.getElementById("ToggleFullScreen");e.src="images/nav/ic_fullscreen_white_24dp_1x.png",e.title="Enter fullscreen"},g=()=>(M("navButton","menu"),T(),!1),y=(e,t)=>{e&&(y.latLon=e);const{latLon:n}=y;n&&(document.getElementById("txtAddress").blur(),(0,a.QE)(),(0,a.un)(n,t))},p=e=>{if("left"===e)v();else S()},w=()=>((0,a.HC)(),y(),T(),!1),v=()=>(M("navButton","next"),T(),!1),S=()=>(M("navButton","previous"),T(),!1);let b=null;const T=()=>{document.activeElement.blur(),document.getElementById("divTwcBottom").classList.remove("hidden"),document.getElementById("divTwcBottom").classList.add("visible"),b&&(clearTimeout(b),b=null),b=setTimeout((()=>{document.fullscreenElement&&(document.getElementById("divTwcBottom").classList.remove("visible"),document.getElementById("divTwcBottom").classList.add("hidden"))}),2e3)},C=e=>{const t=e.keyCode||e.which;if((Date.now()-C.lastButton??0)<200)return!1;if(C.lastButton=Date.now(),document.fullscreenElement||document.activeElement===document.body)switch(t){case 32:return I(),!1;case 39:case 34:return v(),!1;case 37:case 33:return S(),!1;case 36:return g(),!1;case 48:return w(),!1;case 70:return h(),!1}return!1},I=()=>(M("navButton","playToggle"),T(),!1),M=(e,t={})=>{(0,a.yw)({type:e,message:t})},D=async()=>{if(!navigator.geolocation)return;const e=document.getElementById("btnGetGps");if(e.classList.contains("active"))return e.classList.remove("active"),void localStorage.removeItem("latLonFromGPS");e.classList.add("active");const t=await(async()=>new Promise((e=>{navigator.geolocation.getCurrentPosition(e)})))(),{latitude:n,longitude:s}=t.coords,r=document.getElementById("txtAddress");r.value=`${(0,i.Xp)(n,4)}, ${(0,i.Xp)(s,4)}`,d({y:n,x:s},(e=>{console.log(e);const t=e.properties.relativeLocation.properties,a=`${t.city}, ${t.state}`;localStorage.setItem("latLon",JSON.stringify({lat:n,lon:s})),localStorage.setItem("latLonQuery",a),localStorage.setItem("latLonFromGPS",!0),r.value=`${t.city}, ${t.state}`}))}},428:(e,t,n)=>{n.d(t,{Z:()=>d});var s=n(138),r=n(732),a=n(38),i=n(159),o=n(325);class l extends i.Z{constructor(e,t){super(e,t,"Almanac",!0),this.backgroundImage0=(0,s.a)("images/BackGround3_1.png"),(0,s.b)("images/2/Full-Moon.gif"),(0,s.b)("images/2/Last-Quarter.gif"),(0,s.b)("images/2/New-Moon.gif"),(0,s.b)("images/2/First-Quarter.gif"),this.timing.totalScreens=1}async getData(e){if(!super.getData(e))return;const t=e??this.weatherParameters,{sun:n,moon:s}=this.calcSunMoonData(t);this.data={sun:n,moon:s},this.setStatus(a.Z.loaded),this.getDataCallback()}calcSunMoonData(e){const t=[SunCalc.getTimes(new Date,e.latitude,e.longitude),SunCalc.getTimes(r.ou.local().plus({days:1}).toJSDate(),e.latitude,e.longitude)],n=[];let s=r.ou.local().minus({days:1}),{phase:a}=SunCalc.getMoonIllumination(s.toJSDate()),i=0;do{const e=a;s=s.plus({days:1}),a=SunCalc.getMoonIllumination(s.toJSDate()).phase,e<.25&&a>=.25&&n.push(this.getMoonTransition(.25,"First",s)),e<.5&&a>=.5&&n.push(this.getMoonTransition(.5,"Full",s)),e<.75&&a>=.75&&n.push(this.getMoonTransition(.75,"Last",s)),e>a&&n.push(this.getMoonTransition(0,"New",s)),i+=1}while(i<=30&&n.length<4);return{sun:t,moon:n}}getMoonTransition(e,t,n,s=0){let r=n,{phase:a}=SunCalc.getMoonIllumination(r.toJSDate()),i=0;const o={hours:0===s?-1:0,minutes:1===s?1:0,seconds:2===s?-1:0,milliseconds:3===s?1:0};let l=(t,n)=>t=e;s%2==0&&(l=(t,n)=>t>e&&n<=e);do{const n=a;if(r=r.plus(o),a=SunCalc.getMoonIllumination(r.toJSDate()).phase,a>.9&&(a-=1),l(n,a)){if(s>=3)break;return this.getMoonTransition(e,t,r,s+1)}i+=1}while(i<1e3);return{phase:t,date:r}}async drawCanvas(){super.drawCanvas();const e=this.data,t=r.ou.local(),n=t.plus({days:1});this.elem.querySelector(".day-1").innerHTML=t.toLocaleString({weekday:"long"}),this.elem.querySelector(".day-2").innerHTML=n.toLocaleString({weekday:"long"}),this.elem.querySelector(".rise-1").innerHTML=r.ou.fromJSDate(e.sun[0].sunrise).toLocaleString(r.ou.TIME_SIMPLE).toLowerCase(),this.elem.querySelector(".rise-2").innerHTML=r.ou.fromJSDate(e.sun[1].sunrise).toLocaleString(r.ou.TIME_SIMPLE).toLowerCase(),this.elem.querySelector(".set-1").innerHTML=r.ou.fromJSDate(e.sun[0].sunset).toLocaleString(r.ou.TIME_SIMPLE).toLowerCase(),this.elem.querySelector(".set-2").innerHTML=r.ou.fromJSDate(e.sun[1].sunset).toLocaleString(r.ou.TIME_SIMPLE).toLowerCase();const s=e.moon.map((e=>{const t={},n=e.date.toLocaleString({month:"short",day:"numeric"});return t.date=n,t.type=e.phase,t.icon={type:"img",src:c(e.phase)},this.fillTemplate("day",t)})),a=this.elem.querySelector(".moon .days");a.innerHTML="",a.append(...s),this.finishDraw()}async getSun(){return new Promise((e=>{this.data&&e(this.data),this.getDataCallbacks.push(e)}))}}const c=e=>{switch(e){case"Full":return"images/2/Full-Moon.gif";case"Last":return"images/2/Last-Quarter.gif";case"New":return"images/2/New-Moon.gif";default:return"images/2/First-Quarter.gif"}},u=new l(8,"almanac");(0,o.G1)(u);const d=u.getSun.bind(u)},172:(e,t,n)=>{n.d(t,{Z:()=>y});var s=n(38),r=n(138),a=n(929),i=n(791),o=n(206),l=n(372),c=n(159),u=n(325),d=n(594);const h=["U","C","H","W","Y","T","S","M","O","L","A","F","B","N","V","R","D","E","I","G","J"];class m extends c.Z{constructor(e,t){super(e,t,"Current Conditions",!0),this.backgroundImage=(0,r.a)("images/BackGround1_1.png")}async getData(e){const t=super.getData(e),n=(e??this.weatherParameters).stations.filter((e=>4===e?.properties?.stationIdentifier?.length&&!h.includes(e.properties.stationIdentifier.slice(0,1))));let i,o,c=0;for(;!i&&cthis.stillWaiting()}),null===i.features[0].properties.temperature.value||null===i.features[0].properties.windSpeed.value||null===i.features[0].properties.textDescription)throw i=void 0,new Error(`Unable to get observations: ${o.properties.stationIdentifier}, trying next station`)}catch(e){console.error(e)}}if(!i)return console.error("All current weather stations exhausted"),this.enabled&&this.setStatus(s.Z.failed),void this.getDataCallback(void 0);this.data={...i,station:o},this.getDataCallback(),t&&((0,r.b)((0,l.H8)(i.features[0].properties.icon)),this.setStatus(s.Z.loaded))}parseData(){if(!this.data)return!1;const e={},t=this.data.features[0].properties;e.observations=t,e.Temperature=Math.round(t.temperature.value),e.TemperatureUnit="C",e.DewPoint=Math.round(t.dewpoint.value),e.Ceiling=Math.round(t.cloudLayers[0]?.base?.value??0),e.CeilingUnit="m.",e.Visibility=Math.round(t.visibility.value/1e3),e.VisibilityUnit=" km.",e.WindSpeed=Math.round(t.windSpeed.value),e.WindDirection=(0,i.mt)(t.windDirection.value),e.Pressure=Math.round(t.barometricPressure.value),e.HeatIndex=Math.round(t.heatIndex.value),e.WindChill=Math.round(t.windChill.value),e.WindGust=Math.round(t.windGust.value),e.WindUnit="KPH",e.Humidity=Math.round(t.relativeHumidity.value),e.Icon=(0,l.H8)(t.icon),e.PressureDirection="",e.TextConditions=t.textDescription,e.station=this.data.station;const n=t.barometricPressure.value-this.data.features[1].properties.barometricPressure.value;return n>150&&(e.PressureDirection="R"),n<-150&&(e.PressureDirection="F"),e.Temperature=(0,d.NE)(e.Temperature),e.TemperatureUnit="F",e.DewPoint=(0,d.NE)(e.DewPoint),e.Ceiling=100*Math.round((0,d.AD)(e.Ceiling)/100),e.CeilingUnit="ft.",e.Visibility=(0,d.dp)(t.visibility.value/1e3),e.VisibilityUnit=" mi.",e.WindSpeed=(0,d.Kh)(e.WindSpeed),e.WindUnit="MPH",e.Pressure=(0,d.MO)(e.Pressure).toFixed(2),e.HeatIndex=(0,d.NE)(e.HeatIndex),e.WindChill=(0,d.NE)(e.WindChill),e.WindGust=(0,d.Kh)(e.WindGust),e}async drawCanvas(){super.drawCanvas();const e={},t=this.parseData();e.temp=t.Temperature+String.fromCharCode(176);let n=t.observations.textDescription;n.length>15&&(n=f(n)),e.condition=n,e.wind=t.WindDirection.padEnd(3,"")+t.WindSpeed.toString().padStart(3," "),t.WindGust&&(e["wind-gusts"]=`Gusts to ${t.WindGust}`),e.location=(0,o.a)(this.data.station.properties.name).substr(0,20),e.humidity=`${t.Humidity}%`,e.dewpoint=t.DewPoint+String.fromCharCode(176),e.ceiling=0===t.Ceiling?"Unlimited":t.Ceiling+t.CeilingUnit,e.visibility=t.Visibility+t.VisibilityUnit,e.pressure=`${t.Pressure} ${t.PressureDirection}`,t.observations.heatIndex.value&&t.HeatIndex!==t.Temperature?(e["heat-index-label"]="Heat Index:",e["heat-index"]=t.HeatIndex+String.fromCharCode(176)):t.observations.windChill.value&&""!==t.WindChill&&t.WindChill{this.data&&e(this.parseData()),this.getDataCallbacks.push((()=>e(this.parseData())))}))}}const f=e=>{let t=e;return t=t.replace(/Light/g,"L"),t=t.replace(/Heavy/g,"H"),t=t.replace(/Partly/g,"P"),t=t.replace(/Mostly/g,"M"),t=t.replace(/Few/g,"F"),t=t.replace(/Thunderstorm/g,"T'storm"),t=t.replace(/ in /g,""),t=t.replace(/Vicinity/g,""),t=t.replace(/ and /g," "),t=t.replace(/Freezing Rain/g,"Frz Rn"),t=t.replace(/Freezing/g,"Frz"),t=t.replace(/Unknown Precip/g,""),t=t.replace(/L Snow Fog/g,"L Snw/Fog"),t=t.replace(/ with /g,"/"),t},g=new m(0,"current-weather");(0,u.G1)(g);const y=g.getCurrentWeather.bind(g)},496:(e,t,n)=>{var s=n(206),r=n(946),a=n(172),i=n(325);const o=String.fromCharCode(176);let l,c=0;const u=()=>{const e=(0,i.Dw)();e?.okToDrawCurrentConditions?(c=(c+1)%h.length,d()):"progress"===e?.elemId&&(c=0)},d=async()=>{const e=await(0,a.Z)((()=>(void 0).stillWaiting()));e&&m(h[c](e))},h=[e=>`Conditions at ${(0,s.a)(e.station.properties.name).substr(0,20)}`,e=>{let t=`Temp: ${e.Temperature}${o} ${e.TemperatureUnit}`;return e.observations.heatIndex.value?t+=` Heat Index: ${e.HeatIndex}${o} ${e.TemperatureUnit}`:e.observations.windChill.value&&(t+=` Wind Chill: ${e.WindChill}${o} ${e.TemperatureUnit}`),t},e=>`Humidity: ${e.Humidity}${o} ${e.TemperatureUnit} Dewpoint: ${e.DewPoint}${o} ${e.TemperatureUnit}`,e=>`Barometric Pressure: ${e.Pressure} ${e.PressureDirection}`,e=>{let t="";return t=e.WindSpeed>0?`Wind: ${e.WindDirection} ${e.WindSpeed} ${e.WindUnit}`:"Wind: Calm",e.WindGust>0&&(t+=` Gusts to ${e.WindGust}`),t},e=>`Visib: ${e.Visibility} ${e.VisibilityUnit} Ceiling: ${0===e.Ceiling?"Unlimited":`${e.Ceiling} ${e.CeilingUnit}`}`],m=e=>{(0,r.T)(".weather-display .scroll .fixed",(t=>{t.innerHTML=e}))};document.addEventListener("DOMContentLoaded",(()=>{l||(l=setInterval(u,4e3)),d()}))},582:(e,t,n)=>{var s=n(38),r=n(929),a=n(732),i=n(372),o=n(138),l=n(159),c=n(325);class u extends l.Z{constructor(e,t){super(e,t,"Extended Forecast",!0),this.timing.totalScreens=2}async getData(e){if(!super.getData(e))return;const t=e??this.weatherParameters;let n;try{n=await(0,r.AV)(t.forecast,{data:{units:"us"},retryCount:3,stillWaiting:()=>this.stillWaiting()})}catch(e){return console.error("Unable to get extended forecast"),console.error(e.status,e.responseJSON),void this.setStatus(s.Z.failed)}this.data=d(n.properties.periods),this.screenIndex=0,this.setStatus(s.Z.loaded)}async drawCanvas(){super.drawCanvas();const e=this.data.slice(0+3*this.screenIndex,3+3*this.screenIndex).map((e=>{const t={};t.date=e.dayName;const{low:n}=e;void 0!==n&&(t["value-lo"]=Math.round(n));const{high:s}=e;return t["value-hi"]=Math.round(s),t.condition=e.text,t.icon={type:"img",src:e.icon},this.fillTemplate("day",t)})),t=this.elem.querySelector(".day-container");t.innerHTML="",t.append(...e),this.finishDraw()}}const d=e=>{const t=[0,1,2,3,4,5,6].map((e=>a.ou.local().startOf("day").plus({days:e}).toLocaleString({weekday:"short"})));let n=0;const s=[];return e.forEach((e=>{s[n]||s.push({dayName:"",low:void 0,high:void 0,text:void 0,icon:void 0});const r=s[n];r.icon=(0,i.H8)(e.icon),r.text=h(e.shortForecast),r.dayName=t[n],(0,o.b)(r.icon),e.isDaytime?(r.high=e.temperature,n+=1):r.low=e.temperature})),s},h=e=>{const t=[[/ and /gi," "],[/Slight /gi,""],[/Chance /gi,""],[/Very /gi,""],[/Patchy /gi,""],[/Areas /gi,""],[/Dense /gi,""],[/Thunderstorm/g,"T'Storm"]].reduce(((e,[t,n])=>e.replace(t,n)),e);let n=t.split(" ");-1!==t.indexOf("then")&&(n=t.split(" then "),n=n[1].split(" "));let s=n[0].substr(0,10),r="";n[1]&&(s.endsWith(".")?s=s.replace(/\./,""):r=n[1].substr(0,10),"Blowing"===r&&(r=""));let a=s;return""!==r&&(a+=` ${r}`),a};(0,c.G1)(new u(7,"extended-forecast"))},967:(e,t,n)=>{var s=n(38),r=n(583),a=n(159),i=n(325),o=n(732);class l extends a.Z{constructor(e,t,n){super(e,t,"Hourly Graph",n),document.addEventListener("DOMContentLoaded",(()=>{this.moveHeader()}))}moveHeader(){const e=this.fillTemplate("top-right",{});this.elem.querySelector(".header .right").append(e)}async getData(){if(!super.getData())return;const e=await(0,r.Z)((()=>this.stillWaiting()));if(void 0===e)return void this.setStatus(s.Z.failed);const t=e.map((e=>e.temperature)),n=e.map((e=>e.probabilityOfPrecipitation)),a=e.map((e=>e.skyCover));this.data={skyCover:a,temperature:t,probabilityOfPrecipitation:n},this.setStatus(s.Z.loaded)}drawCanvas(){this.image||(this.image=this.elem.querySelector(".chart img"));const e=285;this.image.width=532,this.image.height=e;const t=document.createElement("canvas");t.width=532,t.height=e;const n=t.getContext("2d");n.imageSmoothingEnabled=!1;const s=c(0,5,this.data.temperature.length-1,532),r=o.ou.now().startOf("hour");document.querySelector(".x-axis .l-1").innerHTML=h(r),document.querySelector(".x-axis .l-2").innerHTML=h(r.plus({hour:6})),document.querySelector(".x-axis .l-3").innerHTML=h(r.plus({hour:12})),document.querySelector(".x-axis .l-4").innerHTML=h(r.plus({hour:18})),document.querySelector(".x-axis .l-5").innerHTML=h(r.plus({hour:24}));const a=c(0,275,100,10),i=u(this.data.skyCover,s,a);d(i,n,{strokeStyle:"lightgrey",lineWidth:3});const l=u(this.data.probabilityOfPrecipitation,s,a);d(l,n,{strokeStyle:"aqua",lineWidth:3});const m=Math.min(...this.data.temperature),f=Math.max(...this.data.temperature),g=Math.round((m+f)/2),y=c(m,275,f,10),p=u(this.data.temperature,s,y);d(p,n,{strokeStyle:"red",lineWidth:3});const w=String.fromCharCode(176);this.elem.querySelector(".y-axis .l-1").innerHTML=(f+w).substring(0,3),this.elem.querySelector(".y-axis .l-2").innerHTML=(g+w).substring(0,3),this.elem.querySelector(".y-axis .l-3").innerHTML=(m+w).substring(0,3),this.image.src=t.toDataURL(),super.drawCanvas(),this.finishDraw()}}const c=(e,t,n,s)=>{const r=(s-t)/(n-e),a=t-r*e;return e=>r*e+a},u=(e,t,n)=>e.map(((e,s)=>[t(s),n(e)])),d=(e,t,n)=>{t.beginPath(),t.strokeStyle="black",t.lineWidth=(n?.lineWidth??2)+2,t.moveTo(e[0][0],e[0][1]),e.slice(1).forEach((e=>t.lineTo(e[0],e[1]+2))),t.stroke(),t.beginPath(),t.strokeStyle=n?.strokeStyle??"red",t.lineWidth=n?.lineWidth??2,t.moveTo(e[0][0],e[0][1]),e.slice(1).forEach((e=>t.lineTo(e[0],e[1]))),t.stroke()},h=e=>e.toFormat("ha").slice(0,-1);(0,i.G1)(new l(3,"hourly-graph"))},583:(e,t,n)=>{n.d(t,{Z:()=>p});var s=n(38),r=n(732),a=n(929),i=n(594),o=n(372),l=n(791),c=n(159),u=n(325),d=n(428);class h extends c.Z{constructor(e,t,n){super(e,t,"Hourly Forecast",n),this.timing.baseDelay=20;this.timing.delay=[450];for(let e=0;e<4;e+=1)this.timing.delay.push(300);this.timing.delay.push(150)}async getData(e){const t=super.getData(e);let n;try{n=await(0,a.AV)(e.forecastGridData,{retryCount:3,stillWaiting:()=>this.stillWaiting()})}catch(e){return console.error("Get hourly forecast failed"),console.error(e.status,e.responseJSON),this.enabled&&this.setStatus(s.Z.failed),void this.getDataCallback(void 0)}this.data=await m(n.properties),this.getDataCallback(),t&&(this.setStatus(s.Z.loaded),this.drawLongCanvas())}async drawLongCanvas(){const e=this.elem.querySelector(".hourly-lines");e.innerHTML="";const t=r.ou.local(),n=this.data.map(((e,n)=>{const s={},r=t.plus({hours:n}).toLocaleString({weekday:"short",hour:"numeric"});s.hour=r;const a=Math.round(e.temperature).toString().padStart(3),i=Math.round(e.apparentTemperature).toString().padStart(3);s.temp=a,a!==i&&(s.like=i);let o="Calm";if(e.windSpeed>0){const t=Math.round(e.windSpeed).toString();o=e.windDirection+Array(6-e.windDirection.length-t.length).join(" ")+t}return s.wind=o,s.icon={type:"img",src:e.icon},this.fillTemplate("hourly-row",s)}));e.append(...n)}drawCanvas(){super.drawCanvas(),this.finishDraw()}showCanvas(){this.drawCanvas(),super.showCanvas()}screenIndexChange(){this.baseCountChange(this.navBaseCount)}baseCountChange(e){let t=Math.min(this.elem.querySelector(".hourly-lines").getBoundingClientRect().height-289,e-150);t<0&&(t=0),this.elem.querySelector(".main").scrollTo(0,t)}async getCurrentData(e){return e&&this.stillWaitingCallbacks.push(e),new Promise((e=>{this.data&&e(this.data),this.getDataCallbacks.push((()=>e(this.data)))}))}}const m=async e=>{const t=g(e.temperature.values),n=g(e.apparentTemperature.values),s=g(e.windSpeed.values),r=g(e.windDirection.values),a=g(e.skyCover.values),o=g(e.weather.values),c=g(e.iceAccumulation.values),u=g(e.probabilityOfPrecipitation.values),d=g(e.snowfallAmount.values),h=await f(a,o,c,u,d,s);return t.map(((e,o)=>({temperature:(0,i.NE)(t[o]),apparentTemperature:(0,i.NE)(n[o]),windSpeed:(0,i.dp)(s[o]),windDirection:(0,l.mt)(r[o]),probabilityOfPrecipitation:u[o],skyCover:a[o],icon:h[o]})))},f=async(e,t,n,s,a,i)=>{const l=r.ou.local().startOf("hour"),c=(await(0,d.Z)()).sun,u=r.Xp.fromDateTimes(r.ou.fromJSDate(c[0].sunset),r.ou.fromJSDate(c[1].sunrise)),h=r.ou.fromJSDate(c[1].sunset);return e.map(((r,c)=>{const d=l.plus({hours:c}),m=u.contains(d)||d>h;return(0,o.V6)(e[c],t[c],n[c],s[c],a[c],i[c],m)}))},g=e=>{const t=r.ou.utc().startOf("hour").toMillis(),n=[];return e.forEach((e=>{let s=Date.parse(e.validTime.substr(0,e.validTime.indexOf("/")));const a=s+r.nL.fromISO(e.validTime.substr(e.validTime.indexOf("/")+1)).shiftTo("milliseconds").values.milliseconds;do{s>=t&&n.length<24&&n.push(e.value),s+=36e5}while(s{n.d(t,{H8:()=>r,V6:()=>a,gD:()=>s});const s=(e,t)=>{const n=t??e.indexOf("/night/")>=0,s=e=>`images/r/${e}`;let r=e.toLowerCase().match(/[^/]+$/)[0].match(/(.*?)[,?&.]/)[1];const a=+(e.match(/,(\d{2,3})/)??[0,100])[1];if("dualimage"===r){const t=e.match(/&j=(.*)&/);[,r]=t}switch(r+(n?"-n":"")){case"skc":case"hot":case"haze":return s("Sunny.gif");case"skc-n":case"nskc":case"nskc-n":case"cold-n":return s("Clear-1992.gif");case"bkn":return s("Mostly-Cloudy-1994-2.gif");case"bkn-n":case"few-n":case"nfew-n":case"nfew":return s("Partly-Clear-1994-2.gif");case"sct":case"few":return s("Partly-Cloudy.gif");case"sct-n":case"nsct":case"nsct-n":return s("Mostly-Clear.gif");case"ovc":case"ovc-n":return s("Cloudy.gif");case"fog":case"fog-n":return s("Fog.gif");case"rain_sleet":case"sleet":case"sleet-n":return s("Sleet.gif");case"rain_showers":case"rain_showers_high":return s("Scattered-Showers-1994-2.gif");case"rain_showers-n":case"rain_showers_high-n":return s("Scattered-Showers-Night-1994-2.gif");case"rain":case"rain-n":return s("Rain-1992.gif");case"snow":case"snow-n":return s(a>50?"Heavy-Snow-1994-2.gif":"Light-Snow.gif");case"rain_snow":return s("Rain-Snow-1992.gif");case"snow_fzra":case"snow_fzra-n":return s("Freezing-Rain-Snow-1992.gif");case"fzra":case"fzra-n":return s("Freezing-Rain-1992.gif");case"snow_sleet":case"snow_sleet-n":return s("Snow and Sleet.gif");case"tsra_sct":case"tsra":return s("Scattered-Tstorms-1994-2.gif");case"tsra_sct-n":case"tsra-n":return s("Scattered-Tstorms-Night-1994-2.gif");case"tsra_hi":case"tsra_hi-n":case"hurricane":case"tropical_storm":return s("Thunderstorm.gif");case"wind_few":case"wind_sct":case"wind_bkn":case"wind_ovc":return s("Wind.gif");case"wind_skc":return s("Sunny-Wind-1994.gif");case"wind_skc-n":case"wind_sct-n":return s("Clear-Wind-1994.gif");case"blizzard":return s("Blowing Snow.gif");case"cold":return s("cold.gif");default:return console.log(`Unable to locate regional icon for ${r} ${e} ${n}`),!1}},r=(e,t)=>{if(!e)return!1;const n=e=>`images/${e}`,s=t??e.indexOf("/night/")>=0;let r=e.toLowerCase().match(/[^/]+$/)[0].match(/(.*?)[,?&.]/)[1];const a=+(e.match(/,(\d{2,3})/)??[0,100])[1];if("dualimage"===r){const t=e.match(/&j=(.*)&/);[,r]=t}switch(r+(s?"-n":"")){case"skc":case"hot":case"haze":case"cold":return n("CC_Clear1.gif");case"skc-n":case"nskc":case"nskc-n":case"cold-n":return n("CC_Clear0.gif");case"sct":case"few":case"bkn":return n("CC_PartlyCloudy1.gif");case"bkn-n":case"few-n":case"nfew-n":case"nfew":case"sct-n":case"nsct":case"nsct-n":return n("CC_PartlyCloudy0.gif");case"ovc":case"novc":case"ovc-n":return n("CC_Cloudy.gif");case"fog":case"fog-n":return n("CC_Fog.gif");case"rain_sleet":return n("Sleet.gif");case"rain_showers":case"rain_showers_high":case"rain_showers-n":case"rain_showers_high-n":return n("CC_Showers.gif");case"rain":case"rain-n":return n("CC_Rain.gif");case"snow":case"snow-n":return n(a>50?"CC_Snow.gif":"CC_SnowShowers.gif");case"rain_snow":return n("CC_RainSnow.gif");case"snow_fzra":case"snow_fzra-n":case"fzra":case"fzra-n":return n("CC_FreezingRain.gif");case"snow_sleet":return n("Snow-Sleet.gif");case"tsra_sct":case"tsra":return n("EF_ScatTstorms.gif");case"tsra_sct-n":case"tsra-n":case"tsra_hi":case"tsra_hi-n":case"hurricane":case"tropical_storm":return n("CC_TStorm.gif");case"wind_few":case"wind_sct":case"wind_bkn":case"wind_ovc":case"wind_skc":case"wind_skc-n":case"wind_sct-n":return n("CC_Windy.gif");case"blizzard":return n("Blowing-Snow.gif");default:return console.log(`Unable to locate icon for ${r} ${e} ${s}`),!1}},a=(e,t,n,s,r,a,i=!1)=>{const o=e=>`images/r/${e}`;let l=!1,c=!1,u=!1,d=!1,h=!1;return t.forEach((e=>{e.weather&&(e.weather.toLowerCase().includes("thunder")&&(l=!0),e.weather.toLowerCase().includes("snow")&&(c=!0),e.weather.toLowerCase().includes("ice")&&(u=!0),e.weather.toLowerCase().includes("fog")&&(d=!0),e.weather.toLowerCase().includes("wind")&&(h=!0))})),o(n>0||u?"Freezing-Rain-1992.gif":r>10?a>30||h?"Blowing Snow.gif":"Heavy-Snow-1994.gif":(r>0||c)&&l?"ThunderSnow.gif":r>0||c?"Light-Snow.gif":l?"Thunderstorm.gif":s>70?"Rain-1992.gif":s>50?"Shower.gif":s>30?i?"Scattered-Showers-Night.gif":"Scattered-Showers-1994.gif":d?"Fog.gif":e>70?"Cloudy.gif":e>50?i?"Partly-Clear-1994.gif":"Mostly-Cloudy-1994.gif":e>30?i?"Mostly-Clear.gif":"Partly-Cloudy.gif":i?"Clear-1992.gif":"Sunny.gif")}},495:(e,t,n)=>{var s=n(791),r=n(929),a=n(38),i=n(206),o=n(594),l=n(159),c=n(325);class u extends l.Z{constructor(e,t){super(e,t,"Latest Observations",!0),this.MaximumRegionalStations=7}async getData(e){if(!super.getData(e))return;const t=e??this.weatherParameters,n=Object.keys(StationInfo).map((e=>{const n=StationInfo[e],r=(0,s.TE)(n.lat,n.lon,t.latitude,t.longitude);return{...n,distance:r}})).sort(((e,t)=>e.distance-t.distance)).slice(0,30),i=(await Promise.all(n.map((async e=>{try{const t=await(0,r.AV)(`https://api.weather.gov/stations/${e.id}/observations/latest`,{retryCount:3,stillWaiting:()=>this.stillWaiting()});return null!==t.properties.temperature.value&&""!==t.properties.textDescription&&null!==t.properties.windSpeed.value&&{...t.properties,StationId:e.id,city:e.city}}catch(t){return console.log(`Unable to get latest observations for ${e.id}`),!1}})))).filter((e=>e));this.data=i.slice(0,this.MaximumRegionalStations),this.data.length<1?this.setStatus(a.Z.noData):this.setStatus(a.Z.loaded)}async drawCanvas(){super.drawCanvas();const e=this.data.sort(((e,t)=>e.Name{const t=(0,s.mt)(e.windDirection.value),n=Math.round((0,o.NE)(e.temperature.value)),r=Math.round((0,o.Kh)(e.windSpeed.value)),a={};return a.location=(0,i.a)(e.city).substr(0,14),a.temp=n,a.weather=d(e.textDescription).substr(0,9),a.wind=r>0?t+Array(6-t.length-r.toString().length).join(" ")+r.toString():"NA"===r?"NA":"Calm",this.fillTemplate("observation-row",a)})),n=this.elem.querySelector(".observation-lines");n.innerHTML="",n.append(...t),this.finishDraw()}}const d=e=>{let t=e;return t=t.replace(/Light/,"L"),t=t.replace(/Heavy/,"H"),t=t.replace(/Partly/,"P"),t=t.replace(/Mostly/,"M"),t=t.replace(/Few/,"F"),t=t.replace(/Thunderstorm/,"T'storm"),t=t.replace(/ in /,""),t=t.replace(/Vicinity/,""),t=t.replace(/ and /," "),t=t.replace(/Freezing Rain/,"Frz Rn"),t=t.replace(/Freezing/,"Frz"),t=t.replace(/Unknown Precip/,""),t=t.replace(/L Snow Fog/,"L Snw/Fog"),t=t.replace(/ with /,"/"),t};(0,c.G1)(new u(1,"latest-observations"))},748:(e,t,n)=>{var s=n(38),r=n(929),a=n(159),i=n(325);class o extends a.Z{constructor(e,t){super(e,t,"Local Forecast",!0),this.timing.baseDelay=5e3}async getData(e){if(!super.getData(e))return;const t=e??this.weatherParameters,n=await this.getRawData(t);if(!n)return void this.setStatus(s.Z.failed);const r=l(n);this.screenTexts=r.map((e=>{let t=`${e.DayName.toUpperCase()}...`;return t+=e.Text.toUpperCase().replace("..."," "),t}));const a=this.screenTexts.map((e=>this.fillTemplate("forecast",{text:e}))),i=this.elem.querySelector(".forecasts");i.innerHTML="",i.append(...a),this.pageHeight=i.parentNode.getBoundingClientRect().height,a.forEach((e=>{const t=Math.ceil(e.scrollHeight/this.pageHeight)*this.pageHeight;e.style.height=`${t}px`})),this.timing.totalScreens=i.scrollHeight/this.pageHeight,this.calcNavTiming(),this.setStatus(s.Z.loaded)}async getRawData(e){try{return await(0,r.AV)(e.forecast,{data:{units:"us"},retryCount:3,stillWaiting:()=>this.stillWaiting()})}catch(t){return console.error(`GetWeatherForecast failed: ${e.forecast}`),console.error(t.status,t.responseJSON),this.setStatus(s.Z.failed),!1}}async drawCanvas(){super.drawCanvas();const e=-this.screenIndex*this.pageHeight;this.elem.querySelector(".forecasts").style.top=`${e}px`,this.finishDraw()}}const l=e=>e.properties.periods.slice(0,6).map((e=>({DayName:e.name.toUpperCase(),Text:e.detailedForecast})));(0,i.G1)(new o(6,"local-forecast"))},325:(e,t,n)=>{n.d(t,{Dw:()=>D,G1:()=>O,Gw:()=>$,HC:()=>N,Nf:()=>p,Pl:()=>T,QE:()=>P,SI:()=>E,WI:()=>b,nI:()=>L,uL:()=>B,un:()=>_,yA:()=>S,yw:()=>y});var s=n(739),r=n(38),a=n(791),i=n(929),o=n(735);document.addEventListener("DOMContentLoaded",(()=>{g()}));const l=[];let c,u=!1;const d={},h=6e5;let m=null,f=0;const g=async()=>{window.addEventListener("resize",E),E();const e=localStorage.getItem("TwcAutoRefresh");document.getElementById("chkAutoRefresh").checked=!e||"true"===e,document.getElementById("chkAutoRefresh").addEventListener("change",V),F()},y=e=>{if(e.type)if("navButton"===e.type)k(e.message);else console.error(`Unknown event ${e.type}`)},p=e=>{if(e.id<0)return;if(!c)return;c.drawCanvas(l,w());const t=l.findIndex((e=>e.enabled));S()&&e.id===t&&e.status===r.Z.loaded&&C(b.command.firstFrame),w()l.reduce(((e,t)=>t.status!==r.Z.loading?e+1:e),0),v=()=>{l.forEach((e=>e.hideCanvas()))},S=()=>u,b={response:{previous:Symbol("previous"),inProgress:Symbol("inProgress"),next:Symbol("next")},command:{firstFrame:Symbol("firstFrame"),previousFrame:Symbol("previousFrame"),nextFrame:Symbol("nextFrame"),lastFrame:Symbol("lastFrame")}},T=e=>{e.type===b.response.previous&&I(-1),e.type===b.response.next&&I(1)},C=e=>{const t=D();if(c.hideCanvas(),t)e===b.command.nextFrame&&D().navNext(),e===b.command.previousFrame&&D().navPrev();else{let e,t=0;do{l[t].status===r.Z.loaded&&(e=l[t]),t+=1}while(!e&&t{const t=l.length,n=M();let s;for(let i=0;i0&&i.showCanvas(b.command.firstFrame)},M=()=>l.findIndex((e=>e.isActive())),D=()=>l[M()],x=e=>{u=e;const t=document.getElementById("NavigatePlay");localStorage.setItem("TwcPlay",u),u?((0,s.Z)(!0),t.title="Pause",t.src="images/nav/ic_pause_white_24dp_1x.png"):((0,s.Z)(!1),t.title="Play",t.src="images/nav/ic_play_arrow_white_24dp_1x.png"),c&&u&&!D()&&C(b.command.firstFrame)},k=e=>{switch(e){case"play":x(!0);break;case"playToggle":x(!u);break;case"stop":x(!1);break;case"next":x(!1),C(b.command.nextFrame);break;case"previous":x(!1),C(b.command.previousFrame);break;case"menu":x(!1),c.showCanvas(),v();break;default:console.error(`Unknown navButton ${e}`)}},L=e=>l[e],E=()=>{const e=document.fullscreenElement?0:16,t=(window.innerWidth-e)/640,n=(window.innerHeight-e)/480,s=Math.min(t,n);s<1||document.fullscreenElement?document.getElementById("container").style.zoom=s:document.getElementById("container").style.zoom=1},N=()=>{l.forEach((e=>{e.status=r.Z.loading}))},O=e=>{l[e.navId]=e,F()},F=()=>{const e=document.getElementById("enabledDisplays");if(!e)return;const t=l.map((e=>e.generateCheckbox(e.defaultEnabled))).filter((e=>e));e.innerHTML="",e.append(...t)},$=e=>{c=e},Z=e=>{document.getElementById("spanCity").innerHTML=`${e.city}, `,document.getElementById("spanState").innerHTML=e.state,document.getElementById("spanStationId").innerHTML=e.stationId,document.getElementById("spanRadarId").innerHTML=e.radarId,document.getElementById("spanZoneId").innerHTML=e.zoneId},V=e=>{const{checked:t}=e.target;t?A():P(),localStorage.setItem("TwcAutoRefresh",t)},H=e=>{e?(document.getElementById("spanLastRefresh").innerHTML=e.toLocaleString("en-US",{weekday:"short",month:"short",day:"numeric",year:"numeric",hour:"numeric",minute:"numeric",second:"numeric",timeZoneName:"short"}),document.getElementById("chkAutoRefresh").checked&&A()):document.getElementById("spanLastRefresh").innerHTML="(none)"},_=(e,t)=>{(async(e,t)=>{const n=await(0,o.F)(e.lat,e.lon);"function"==typeof t&&t(n);const s=await(0,i.AV)(n.properties.observationStations),r=s.features[0].properties.stationIdentifier;let{city:a}=n.properties.relativeLocation.properties;r in StationInfo&&(a=StationInfo[r].city,[a]=a.split("/")),d.latitude=e.lat,d.longitude=e.lon,d.zoneId=n.properties.forecastZone.substr(-6),d.radarId=n.properties.radarStation.substr(-3),d.stationId=r,d.weatherOffice=n.properties.cwa,d.city=a,d.state=n.properties.relativeLocation.properties.state,d.timeZone=n.properties.relativeLocation.properties.timeZone,d.forecast=n.properties.forecast,d.forecastGridData=n.properties.forecastGridData,d.stations=s.features,Z(d),v(),document.getElementById("loading").style.display="none",c&&(await c.drawCanvas(),c.showCanvas()),l.forEach((e=>e.getData(d)))})(e,t),H(null)},A=()=>{if(m)return;f=0;const e=()=>{f+=500;let e=h-f;e<0&&(e=0);const t=new Date(e);document.getElementById("spanRefreshCountDown").innerHTML=`${t.getMinutes()<10?`0${t.getMinutes()}`:t.getMinutes()}:${t.getSeconds()<10?`0${t.getSeconds()}`:t.getSeconds()}`,f>=h&&!S()&&q()};m=window.setInterval(e,500),e()},P=()=>{m&&(window.clearInterval(m),document.getElementById("spanRefreshCountDown").innerHTML="--:--",m=null)},W=()=>f>=h&&(q(),!0),q=()=>{q.callback&&q.callback()},B=e=>{q.callback=e}},846:(e,t,n)=>{var s=n(138),r=n(38),a=n(159),i=n(325);class o extends a.Z{constructor(e,t){super(e,t,"",!1),this.backgroundImage=(0,s.a)("images/BackGround1_1.png"),this.timing=!1,document.addEventListener("DOMContentLoaded",(()=>{this.version=document.getElementById("version").innerHTML,this.elem.querySelector(".container").addEventListener("click",this.lineClick.bind(this))})),this.okToDrawCurrentConditions=!1}async drawCanvas(e,t){if(super.drawCanvas(),this.progressCover||(this.progressCover=this.elem.querySelector(".scroll .cover")),!e)return;const n=e.map(((e,t)=>{const n={};let s;switch(n.name=e.name,e.status){case r.Z.loading:s="loading";break;case r.Z.loaded:s="press-here";break;case r.Z.failed:s="failed";break;case r.Z.noData:s="no-data";break;case r.Z.disabled:s="disabled";break;case r.Z.retrying:s="retrying"}const a=this.fillTemplate("item",n);if(!a)return!1;const i=a.querySelector(".links");return i.classList.remove("loading"),i.classList.add(s),i.dataset.index=t,a})).filter((e=>e)),s=this.elem.querySelector(".container");s.innerHTML="",s.append(...n),this.finishDraw();const a=t/e.length;this.progressCover.style.width=100*(1-a)+"%",a<1?this.progressCover.parentNode.classList.add("show"):setTimeout((()=>this.progressCover.parentNode.classList.remove("show")),1e3)}lineClick(e){const t=e.target?.parentNode?.dataset?.index;if(void 0===t)return;const n=+t;(0,i.yw)("navButton");const s=(0,i.nI)(n);s&&s.status===r.Z.loaded&&(s.showCanvas(i.WI.command.firstFrame),this.elem.classList.remove("show"))}}const l=new o(-1,"progress");(0,i.Gw)(l)},478:(e,t,n)=>{var s=n(38),r=n(732),a=n(138),i=n(929),o=n(737),l=n(159),c=n(325);class u extends l.Z{constructor(e,t){super(e,t,"Local Radar",!0),this.okToDrawCurrentConditions=!1,this.okToDrawCurrentDateTime=!1,this.dopplerRadarImageMax=6,this.timing.baseDelay=350,this.timing.delay=[{time:4,si:5},{time:1,si:0},{time:1,si:1},{time:1,si:2},{time:1,si:3},{time:1,si:4},{time:4,si:5},{time:1,si:0},{time:1,si:1},{time:1,si:2},{time:1,si:3},{time:1,si:4},{time:4,si:5},{time:1,si:0},{time:1,si:1},{time:1,si:2},{time:1,si:3},{time:1,si:4},{time:12,si:5}]}async getData(e){if(!super.getData(e))return;const t=e??this.weatherParameters;if("AK"===t.state||"HI"===t.state)return void this.setStatus(s.Z.noData);let n="images/4000RadarMap2.jpg";"HI"===t.State&&(n="images/HawaiiRadarMap2.png"),this.baseMap=await(0,a.a)(n);const l=[];let c=r.ou.utc().minus({days:1}).startOf("day");for(;c<=r.ou.utc().startOf("day");)l.push(`https://mesonet.agron.iastate.edu/archive/data/${c.toFormat("yyyy/LL/dd")}/GIS/uscomp/`),c=c.plus({days:1});const u=(await Promise.all(l.map((async e=>{try{return await(0,i.fL)(e,{cors:!0})}catch(e){return console.log("Unable to get list of radars"),console.error(e),this.setStatus(s.Z.failed),!1}})))).filter((e=>e)).map(((e,t)=>{const n=(new DOMParser).parseFromString(e,"text/html"),s=n.createElement("base");s.href=l[t],n.head.append(s);const r=n.getElementsByTagName("a"),a=[];return Array.from(r).forEach((e=>{e.innerHTML?.includes(".png")&&e.innerHTML?.includes("n0r_")&&a.push(e.href)})),a})).flat(),d=u.sort(((e,t)=>Date(e){let s=0,r=0;return s=55.2*(51.75-e.latitude),s-=n,s>3200-2*n?s=3200-2*n:s<0&&(s=0),r=41.775*(-130.37-e.longitude)*-1,r-=t,r>5100-2*t?r=5100-2*t:r<0&&(r=0),{x:2*r,y:2*s}})(t,240,138),y=document.createElement("canvas");y.width=f,y.height=1600;const p=y.getContext("2d");p.imageSmoothingEnabled=!1;const w=((e,t,n)=>{let s=0,r=0;return s=61.4481*(51-e.latitude),s-=n,s>6e3-2*n?s=6e3-2*n:s<0&&(s=0),r=42.1768*(-129.138-e.longitude)*-1,r-=t,r>2800-2*t?r=2800-2*t:r<0&&(r=0),{x:2*r,y:2*s}})(t,240,138),v=w.x/2,S=w.y/2,b=await Promise.all(d.map((async e=>{const t=document.createElement("canvas");t.width=640,t.height=367;const n=t.getContext("2d");n.imageSmoothingEnabled=!1;const s=await fetch((0,o.d)(e));if(!s.ok)throw new Error(`Unable to fetch radar error ${s.status} ${s.statusText} from ${s.url}`);const i=await s.blob(),l=e.match(/_(\d{4})(\d\d)(\d\d)(\d\d)(\d\d)\./);let c;if(l){const[,e,t,n,s,a]=l;c=r.ou.fromObject({year:e,month:t,day:n,hour:s,minute:a},{zone:"UTC"}).setZone()}else c=r.ou.fromHTTP(s.headers.get("last-modified")).setZone();const u=await(0,a.a)(i);p.clearRect(0,0,f,1600),p.drawImage(u,0,0,f,1600),n.drawImage(await this.baseMap,g.x,g.y,480,276,0,0,640,367);const d=document.createElement("canvas");d.width=640,d.height=367;const h=d.getContext("2d",{willReadFrequently:!0});h.imageSmoothingEnabled=!1,h.drawImage(y,v,S,240,163.1,0,0,640,367),(e=>{const t=e.getImageData(0,0,e.canvas.width,e.canvas.height);for(let e=0;e{const n=e.getImageData(0,0,e.canvas.width,e.canvas.height),s=t.getImageData(0,0,t.canvas.width,t.canvas.height);for(let e=0;ee.elem))),this.timing.totalScreens=b.length,this.data=b.map((e=>e.canvas)),this.times=b.map((e=>e.time)),this.setStatus(s.Z.loaded)}async drawCanvas(){super.drawCanvas();const e=this.times[this.screenIndex].toLocaleString(r.ou.TIME_SIMPLE),t=e.length>=8?e:` ${e}`;this.elem.querySelector(".header .right .time").innerHTML=t,this.elem.querySelector(".scroll-area").style.top=371*-this.screenIndex+"px",this.finishDraw()}}(0,c.G1)(new u(9,"radar"))},257:(e,t,n)=>{var s=n(38),r=n(791),a=n(929),i=n(594),o=n(372),l=n(138),c=n(732),u=n(159),d=n(325);const h=(e,t,n)=>({daytime:e.isDaytime,temperature:e.temperature||0,name:v(t.city),icon:e.icon,x:n.x,y:n.y,time:e.startTime}),m=(e,t,n,s)=>{let r=0,a=0;return r=56*(73-e),r-=s,r>1142-2*s?r=1142-2*s:r<0&&(r=0),a=25*(-175-t)*-1,a-=n,a>1200-2*n?a=1200-2*n:a<0&&(a=0),{x:a,y:r}},f=(e,t,n,s)=>{let r=0,a=0;return r=55.2*(25-e),r-=s,r>571-2*s?r=571-2*s:r<0&&(r=0),a=41.775*(-164.5-t)*-1,a-=n,a>600-2*n?a=600-2*n:a<0&&(a=0),{x:a,y:r}},g=(e,t,n,s)=>({minLat:-1*((t+2*s)/56-73),maxLat:-1*(t/56-73),minLon:-1*(-1*e/25+175),maxLon:-1*(-1*(e+2*n)/25+175)}),y=(e,t,n,s)=>({minLat:-1*((t+2*s)/55.2-25),maxLat:-1*(t/55.2-25),minLon:-1*(-1*e/41.775+164.5),maxLon:-1*(-1*(e+2*n)/41.775+164.5)}),p=(e,t,n)=>{let s=37*(e.lon-n),r=70*(t-e.lat);return r<30&&(r=30),r>282&&(r=282),s<40&&(s=40),s>580&&(s=580),{x:s,y:r}},w=(e,t,n)=>{let s=57*(e.lon-n),r=70*(t-e.lat);return r<30&&(r=30),r>282&&(r=282),s<40&&(s=40),s>580&&(s=580),{x:s,y:r}},v=e=>e.match(/[^-;/\\,]*/)[0].substr(0,12);var S=n(735);class b extends u.Z{constructor(e,t){super(e,t,"Regional Forecast",!0),this.timing.totalScreens=3}async getData(e){if(!super.getData(e))return;const t=e??this.weatherParameters;let n="images/Basemap2.png";"HI"===t.state?n="images/HawaiiRadarMap4.png":"AK"===t.state&&(n="images/AlaskaRadarMap6.png"),this.elem.querySelector(".map img").src=n;const c={x:240,y:117},u=((e,t,n,s,r)=>{if("AK"===r)return m(e,t,n,s);if("HI"===r)return f(e,t,n,s);let a=0,i=0;return a=55.2*(50.5-e),a-=s,a>1600-2*s?a=1600-2*s:a<0&&(a=0),i=41.775*(-127.5-t)*-1,i-=n,i>2550-2*n?i=2550-2*n:i<0&&(i=0),{x:i,y:a}})(t.latitude,t.longitude,c.x,c.y,t.state),d=(S=u.x,b=u.y,C=c.x,I=c.y,"AK"===(M=t.state)?g(S,b,C,I):"HI"===M?y(S,b,C,I):{minLat:-1*((b+2*I)/55.2-50.5),maxLat:-1*(b/55.2-50.5),minLon:-1*(-1*S/41.775+127.5),maxLon:-1*(-1*(S+2*C)/41.775+127.5)});var S,b,C,I,M;let D=2.5;"HI"===t.state&&(D=1);const x=Object.values(StationInfo).map((e=>({...e,targetDistance:D}))),k=[...RegionalCities,...x],L=[];k.forEach((e=>{if(e.lat>d.minLat&&e.latd.minLon&&e.lon{const a=(0,r.TE)(e.lon,e.lat,s.lon,s.lat);return n&&a>=t}),!0)&&L.push(e)}}));const E=await Promise.all(L.map((async e=>{try{const n=e?.point??await T(e.lat,e.lon);if(!n)throw new Error("No pre-loaded point");const s=(async(e,t)=>{try{const t=(await(0,a.AV)(`https://api.weather.gov/gridpoints/${e.wfo}/${e.x},${e.y}/stations`)).features[0].id,n=await(0,a.AV)(`${t}/observations/latest`);return!!n.properties.icon&&((0,l.b)((0,o.gD)(n.properties.icon,!n.properties.daytime)),n.properties)}catch(e){return console.log(`Unable to get regional observations for ${t.Name??t.city}`),console.error(e.status,e.responseJSON),!1}})(n,e),r=await(0,a.AV)(`https://api.weather.gov/gridpoints/${n.wfo}/${n.x},${n.y}/forecast`),c=((e,t,n,s)=>{"AK"===s&&p(e,t,n),"HI"===s&&w(e,t,n);let r=57*(e.lon-n),a=70*(t-e.lat);return a<30&&(a=30),a>282&&(a=282),r<40&&(r=40),r>580&&(r=580),{x:r,y:a}})(e,d.maxLat,d.minLon,t.state),u=await s,m={daytime:!!u.icon.match(/\/day\//),temperature:(0,i.NE)(u.temperature.value),name:v(e.city),icon:u.icon,x:c.x,y:c.y};return(0,l.b)((0,o.gD)(m.icon,!m.daytime)),[m,h(r.properties.periods[1],e,c),h(r.properties.periods[2],e,c)]}catch(t){return console.log(`No regional forecast data for '${e.name??e.city}'`),console.log(t),!1}}))),N=E.filter((e=>e));0!==N.length?(this.data={regionalData:N,offsetXY:c,sourceXY:u},this.setStatus(s.Z.loaded)):this.setStatus(s.Z.noData)}drawCanvas(){super.drawCanvas();const{regionalData:e,sourceXY:t,offsetXY:n}=this.data,s=this.elem.querySelector(".title.dual .top"),r=this.elem.querySelector(".title.dual .bottom");if(0===this.screenIndex)s.innerHTML="Regional",r.innerHTML="Observations";else{const t=c.ou.fromISO(e[0][this.screenIndex].time).toLocaleString({weekday:"long"});s.innerHTML="Forecast for",e[0][this.screenIndex].daytime?r.innerHTML=t:r.innerHTML=`${t} Night`}const a=640/(2*n.x),i=this.elem.querySelector(".map");i.style.zoom=a,i.style.top=`-${t.y}px`,i.style.left=`-${t.x}px`;const l=e.map((e=>{const t={},n=e[this.screenIndex];t.icon={type:"img",src:(0,o.gD)(n.icon,!n.daytime)},t.city=n.name;const{temperature:s}=n;t.temp=s;const r=this.fillTemplate("location",t);return r.style.left=`${n.x}px`,r.style.top=`${n.y}px`,r})),u=this.elem.querySelector(".location-container");u.innerHTML="",u.append(...l),this.finishDraw()}}const T=async(e,t)=>{const n=await(0,S.F)(e,t);return{x:n.properties.gridX,y:n.properties.gridY,wfo:n.properties.gridId}};(0,d.G1)(new b(5,"regional-forecast"))},38:(e,t,n)=>{n.d(t,{Z:()=>s});const s={loading:Symbol("loading"),loaded:Symbol("loaded"),failed:Symbol("failed"),noData:Symbol("noData"),disabled:Symbol("disabled"),retrying:Symbol("retyring")}},449:(e,t,n)=>{var s=n(38),r=n(929),a=n(372),i=n(732),o=n(159),l=n(325);class c extends o.Z{constructor(e,t,n){super(e,t,"Travel Forecast",n),this.timing.baseDelay=20;const s=TravelCities.length/4,r=Math.floor(s)-2,a=r%1;this.timing.delay=[450];for(let e=0;e{try{if(!e.point)throw new Error("No pre-loaded point");const t=await(0,r.AV)(`https://api.weather.gov/gridpoints/${e.point.wfo}/${e.point.x},${e.point.y}/forecast`),n=t.properties.periods[0].isDaytime?0:1;return{today:0===n,high:t.properties.periods[n].temperature,low:t.properties.periods[n+1].temperature,name:e.Name,icon:(0,a.gD)(t.properties.periods[n].icon)}}catch(t){return console.error(`GetTravelWeather for ${e.Name} failed`),console.error(t.status,t.responseJSON),{name:e.Name,error:!0}}})),t=await Promise.all(e);this.data=t;this.data.reduce(((e,t)=>e||t.high),!1)?(this.setStatus(s.Z.loaded),this.drawLongCanvas()):this.setStatus(s.Z.noData)}async drawLongCanvas(){const e=this.elem.querySelector(".travel-lines");e.innerHTML="";const t=this.data.map((e=>{if(e.error)return!1;const t={};if(t.city=e,e.icon){t.city=e.name;const{low:n,high:s}=e,r=Math.round(n).toString(),a=Math.round(s).toString();t.low=r,t.high=a,t.icon={type:"img",src:e.icon}}else t.error="NO TRAVEL DATA AVAILABLE";return this.fillTemplate("travel-row",t)})).filter((e=>e));e.append(...t)}async drawCanvas(){super.drawCanvas();const e=this.data;this.elem.querySelector(".header .title.dual .bottom").innerHTML=`For ${u(e)}`,this.finishDraw()}async showCanvas(){await this.drawCanvas(),super.showCanvas()}screenIndexChange(){this.baseCountChange(this.navBaseCount)}baseCountChange(e){let t=Math.min(this.elem.querySelector(".travel-lines").getBoundingClientRect().height-289,e-150);t<0&&(t=0),this.elem.querySelector(".main").scrollTo(0,t)}getLongCanvas(){return this.longCanvas}}const u=e=>e.reduce(((e,t)=>{if(t&&""===e){return i.ou.local().plus({days:t.today?0:1}).toLocaleString({weekday:"long"})}return e}),"");(0,l.G1)(new c(4,"travel",!1))},791:(e,t,n)=>{n.d(t,{TE:()=>r,mt:()=>s,re:()=>a});const s=e=>["N","NNE","NE","ENE","E","ESE","SE","SSE","S","SSW","SW","WSW","W","WNW","NW","NNW"][Math.floor(e/22.5+.5)%16],r=(e,t,n,s)=>Math.sqrt((n-e)**2+(s-t)**2),a=(e,t)=>(e%t+t)%t},737:(e,t,n)=>{n.d(t,{d:()=>s});const s=e=>{let t=e;return t=t.replace("https://api.weather.gov/",window.location.href),t=t.replace("https://www.cpc.ncep.noaa.gov/",window.location.href),t}},946:(e,t,n)=>{n.d(t,{T:()=>s});const s=(e,t)=>{[...document.querySelectorAll(e)].forEach(t)}},929:(e,t,n)=>{n.d(t,{AV:()=>r,Ik:()=>i,fL:()=>a});var s=n(737);const r=(e,t)=>o(e,"json",t),a=(e,t)=>o(e,"text",t),i=(e,t)=>o(e,"blob",t),o=async(e,t,n={})=>{const r={method:"GET",mode:"cors",type:"GET",retryCount:0,...n};r.originalRetries=r.retryCount;let a=e;!0===r.cors&&(a=(0,s.d)(e));const i=new URL(a,`${window.location.origin}/`);i.protocol="localhost"!==window.location.hostname?window.location.protocol:i.protocol,r.data&&Object.keys(r.data).forEach((e=>{const t=r.data[e];i.searchParams.append(e,t)}));const o=await l(i,r);if(!o.ok)throw new Error(`Fetch error ${o.status} ${o.statusText} while fetching ${o.url}`);switch(t){case"json":return o.json();case"text":return o.text();case"blob":return o.blob();default:return o}},l=(e,t)=>new Promise(((n,s)=>{fetch(e,t).then((s=>{if(t.retryCount>0){if(s.status>=500&&s.status<=599&&t.retryCount>0){"function"==typeof t.stillWaiting&&t.retryCount===t.originalRetries&&t.stillWaiting();const s={...t,retryCount:t.retryCount-1};return n(c(u(t.originalRetries-s.retryCount),l,e,s))}return n(s)}return n(s)})).catch((e=>s(e)))})),c=(e,t,...n)=>new Promise((s=>{setTimeout((()=>{s(t(...n))}),e)})),u=e=>{switch(e){case 1:return 1e3;case 2:return 2e3;case 3:return 5e3;case 4:return 1e4;default:return 3e4}}},138:(e,t,n)=>{n.d(t,{a:()=>a,b:()=>o});var s=n(929),r=n(737);const a=(e,t=!1)=>new Promise((n=>{const s=new Image;if(s.onload=e=>{n(e.target)},e instanceof Blob)s.src=window.URL.createObjectURL(e);else{let n=e;t&&(n=(0,r.d)(e)),s.src=n}})),i=[],o=e=>!i.includes(e)&&((0,s.Ik)(e),!0)},739:(e,t,n)=>{n.d(t,{Z:()=>a});let s=!1;const r=(e=!1)=>(r.controller||(r.controller=new NoSleep),s!==e&&(s=e,e?r.controller.enable():r.controller.disable())),a=r},206:(e,t,n)=>{n.d(t,{a:()=>s});const s=e=>[/^[A-Za-z ]+ \/ /,/^[A-Za-z ]+\//,/^[A-Za-z ]+, /].reduce(((e,t)=>e.replace(t,"")),e)},594:(e,t,n)=>{n.d(t,{AD:()=>o,Kh:()=>r,MO:()=>l,NE:()=>a,Xp:()=>s,dp:()=>i});const s=(e,t)=>Math.trunc(e*10**t)/10**t,r=e=>Math.round(e/1.60934),a=e=>Math.round(9*e/5+32),i=e=>Math.round(e/1.60934),o=e=>Math.round(e/.3048),l=e=>s(2953e-7*e,2)},735:(e,t,n)=>{n.d(t,{F:()=>r});var s=n(929);const r=async(e,t)=>{try{return await(0,s.AV)(`https://api.weather.gov/points/${e},${t}`)}catch(n){return console.log(`Unable to get point ${e}, ${t}`),console.error(n),!1}}},159:(e,t,n)=>{n.d(t,{Z:()=>o});var s=n(38),r=n(732),a=n(946),i=n(325);const o=class{constructor(e,t,n,r){this.navId=e,this.elemId=void 0,this.gifs=[],this.data=void 0,this.loadingStatus=s.Z.loading,this.name=n??t,this.getDataCallbacks=[],this.stillWaitingCallbacks=[],this.defaultEnabled=r,this.okToDrawCurrentConditions=!0,this.okToDrawCurrentDateTime=!0,this.timing={totalScreens:1,baseDelay:9e3,delay:1},this.navBaseCount=0,this.screenIndex=-1,this.storeElemId(t),this.enabled?this.setStatus(s.Z.loading):this.setStatus(s.Z.disabled),this.startNavCount(),document.addEventListener("DOMContentLoaded",(()=>{this.loadTemplates()}))}generateCheckbox(e=!0){if("progress"===this.elemId)return!1;let t=window.localStorage.getItem(`display-enabled: ${this.elemId}`);null===t&&(t=e),this.enabled="true"===t||!0===t,window.localStorage.setItem(`display-enabled: ${this.elemId}`,this.enabled);const n=document.createElement("template");return n.innerHTML=``,n.content.firstChild.addEventListener("change",(e=>this.checkboxChange(e))),n.content.firstChild}checkboxChange(e){this.enabled=e.target.checked,window.localStorage.setItem(`display-enabled: ${this.elemId}`,this.enabled),this.getData()}setStatus(e){this.status=e,(0,i.Nf)({id:this.navId,status:this.status})}get status(){return this.loadingStatus}set status(e){this.loadingStatus=e}storeElemId(e){this.elemId||(this.elemId=e)}getData(e){return this.data=void 0,e&&(this.weatherParameters=e),this.enabled?(this.setStatus(s.Z.loading),this.calcNavTiming(),!0):(this.setStatus(s.Z.disabled),!1)}getDataCallback(){this.getDataCallbacks.forEach((e=>e(this.data))),this.getDataCallbacks=[]}drawCanvas(){this.screenIndex<0&&(this.screenIndex=0)}finishDraw(){this.okToDrawCurrentDateTime&&(this.drawCurrentDateTime(),this.dateTimeInterval||setInterval((()=>this.drawCurrentDateTime()),100))}drawCurrentDateTime(){if(!this.isActive())return;const e=r.ou.local(),t=e.toLocaleString(r.ou.TIME_WITH_SECONDS).padStart(11," ");this.lastTime!==t&&(0,a.T)(".date-time.time",(e=>{e.innerHTML=t.toUpperCase()})),this.lastTime=t;const n=e.toFormat(" ccc LLL ")+e.day.toString().padStart(2," ");this.lastDate!==n&&(0,a.T)(".date-time.date",(e=>{e.innerHTML=n.toUpperCase()})),this.lastDate=n}showCanvas(e){e===i.WI.command.firstFrame&&this.navNext(e),e===i.WI.command.lastFrame&&this.navPrev(e),this.startNavCount(),this.elem.classList.add("show")}hideCanvas(){this.resetNavBaseCount(),this.elem.classList.remove("show")}isActive(){return 0!==this.elem.offsetHeight}isEnabled(){return this.enabled}navBaseTime(){(0,i.yA)()&&this.isActive()&&(this.navBaseCount+=1,this.baseCountChange&&this.baseCountChange(this.navBaseCount),this.updateScreenFromBaseCount())}async updateScreenFromBaseCount(){const e=this.screenIndexFromBaseCount();!1!==e?e!==this.screenIndex&&(this.screenIndex=-1===e?0:e,this.screenIndexChange?this.screenIndexChange(this.screenIndex):(await this.drawCanvas(),this.showCanvas())):this.sendNavDisplayMessage(i.WI.response.next)}calcNavTiming(){if(!1===this.timing)return;Array.isArray(this.timing.delay)&&(this.timing.totalScreens=this.timing.delay.length);let e=[];if("number"==typeof this.timing.delay)for(let t=0;t"object"==typeof e?e.time:e));let t=0;if(this.timing.fullDelay=e.map((e=>{const n=t+e;return t+=e,n})),Array.isArray(this.timing.delay)&&"object"==typeof this.timing.delay[0])this.timing.screenIndexes=this.timing.delay.map((e=>e.si));else{this.timing.screenIndexes=[];for(let e=0;ee>this.navBaseCount));this.navBaseCount=e}this.updateScreenFromBaseCount()}navPrev(e){if(e===i.WI.command.lastFrame)this.navBaseCount=this.timing.fullDelay[this.timing.totalScreens-1]-1;else{const e=this.timing.fullDelay.reduce(((e,t)=>te>this.navBaseCount));return-1!==e&&this.timing.screenIndexes[e]}startNavCount(){this.navInterval||(this.navInterval=setInterval((()=>this.navBaseTime()),this.timing.baseDelay))}resetNavBaseCount(){this.navBaseCount=0,this.screenIndex=-1,this.navInterval&&(clearInterval(this.navInterval),this.navInterval=void 0)}sendNavDisplayMessage(e){(0,i.Pl)({id:this.navId,type:e})}loadTemplates(){if(this.templates={},this.elem=document.getElementById(`${this.elemId}-html`),!this.elem)return;this.elem.querySelectorAll(".template").forEach((e=>{const t=e.classList[0],n=e.cloneNode(!0);n.classList.remove("template"),this.templates[t]=n,e.remove()}))}fillTemplate(e,t){const n=this.templates[e];if(!n)return!1;const s=n.cloneNode(!0);return Object.entries(t).forEach((([e,t])=>{const n=s.querySelector(`.${e}`);n&&("string"==typeof t||"number"==typeof t?n.innerHTML=t:"img"===t?.type&&(n.querySelector("img").src=t.src))})),s}stillWaiting(){this.enabled&&this.setStatus(s.Z.retrying),this.stillWaitingCallbacks.forEach((e=>e())),this.stillWaitingCallbacks=[]}}},732:(e,t,n)=>{n.d(t,{Xp:()=>Yt,nL:()=>Gt,ou:()=>Xn});class s extends Error{}class r extends s{constructor(e){super(`Invalid DateTime: ${e.toMessage()}`)}}class a extends s{constructor(e){super(`Invalid Interval: ${e.toMessage()}`)}}class i extends s{constructor(e){super(`Invalid Duration: ${e.toMessage()}`)}}class o extends s{}class l extends s{constructor(e){super(`Invalid unit ${e}`)}}class c extends s{}class u extends s{constructor(){super("Zone is an abstract class")}}const d="numeric",h="short",m="long",f={year:d,month:d,day:d},g={year:d,month:h,day:d},y={year:d,month:h,day:d,weekday:h},p={year:d,month:m,day:d},w={year:d,month:m,day:d,weekday:m},v={hour:d,minute:d},S={hour:d,minute:d,second:d},b={hour:d,minute:d,second:d,timeZoneName:h},T={hour:d,minute:d,second:d,timeZoneName:m},C={hour:d,minute:d,hourCycle:"h23"},I={hour:d,minute:d,second:d,hourCycle:"h23"},M={hour:d,minute:d,second:d,hourCycle:"h23",timeZoneName:h},D={hour:d,minute:d,second:d,hourCycle:"h23",timeZoneName:m},x={year:d,month:d,day:d,hour:d,minute:d},k={year:d,month:d,day:d,hour:d,minute:d,second:d},L={year:d,month:h,day:d,hour:d,minute:d},E={year:d,month:h,day:d,hour:d,minute:d,second:d},N={year:d,month:h,day:d,weekday:h,hour:d,minute:d},O={year:d,month:m,day:d,hour:d,minute:d,timeZoneName:h},F={year:d,month:m,day:d,hour:d,minute:d,second:d,timeZoneName:h},$={year:d,month:m,day:d,weekday:m,hour:d,minute:d,timeZoneName:m},Z={year:d,month:m,day:d,weekday:m,hour:d,minute:d,second:d,timeZoneName:m};function V(e){return void 0===e}function H(e){return"number"==typeof e}function _(e){return"number"==typeof e&&e%1==0}function A(){try{return"undefined"!=typeof Intl&&!!Intl.RelativeTimeFormat}catch(e){return!1}}function P(e,t,n){if(0!==e.length)return e.reduce(((e,s)=>{const r=[t(s),s];return e&&n(e[0],r[0])===e[0]?e:r}),null)[1]}function W(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function q(e,t,n){return _(e)&&e>=t&&e<=n}function B(e,t=2){let n;return n=e<0?"-"+(""+-e).padStart(t,"0"):(""+e).padStart(t,"0"),n}function z(e){return V(e)||null===e||""===e?void 0:parseInt(e,10)}function R(e){return V(e)||null===e||""===e?void 0:parseFloat(e)}function U(e){if(!V(e)&&null!==e&&""!==e){const t=1e3*parseFloat("0."+e);return Math.floor(t)}}function j(e,t,n=!1){const s=10**t;return(n?Math.trunc:Math.round)(e*s)/s}function G(e){return e%4==0&&(e%100!=0||e%400==0)}function J(e){return G(e)?366:365}function Y(e,t){const n=function(e,t){return e-t*Math.floor(e/t)}(t-1,12)+1;return 2===n?G(e+(t-n)/12)?29:28:[31,null,31,30,31,30,31,31,30,31,30,31][n-1]}function Q(e){let t=Date.UTC(e.year,e.month-1,e.day,e.hour,e.minute,e.second,e.millisecond);return e.year<100&&e.year>=0&&(t=new Date(t),t.setUTCFullYear(t.getUTCFullYear()-1900)),+t}function K(e){const t=(e+Math.floor(e/4)-Math.floor(e/100)+Math.floor(e/400))%7,n=e-1,s=(n+Math.floor(n/4)-Math.floor(n/100)+Math.floor(n/400))%7;return 4===t||3===s?53:52}function X(e){return e>99?e:e>60?1900+e:2e3+e}function ee(e,t,n,s=null){const r=new Date(e),a={hourCycle:"h23",year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"};s&&(a.timeZone=s);const i={timeZoneName:t,...a},o=new Intl.DateTimeFormat(n,i).formatToParts(r).find((e=>"timezonename"===e.type.toLowerCase()));return o?o.value:null}function te(e,t){let n=parseInt(e,10);Number.isNaN(n)&&(n=0);const s=parseInt(t,10)||0;return 60*n+(n<0||Object.is(n,-0)?-s:s)}function ne(e){const t=Number(e);if("boolean"==typeof e||""===e||Number.isNaN(t))throw new c(`Invalid unit value ${e}`);return t}function se(e,t){const n={};for(const s in e)if(W(e,s)){const r=e[s];if(null==r)continue;n[t(s)]=ne(r)}return n}function re(e,t){const n=Math.trunc(Math.abs(e/60)),s=Math.trunc(Math.abs(e%60)),r=e>=0?"+":"-";switch(t){case"short":return`${r}${B(n,2)}:${B(s,2)}`;case"narrow":return`${r}${n}${s>0?`:${s}`:""}`;case"techie":return`${r}${B(n,2)}${B(s,2)}`;default:throw new RangeError(`Value format ${t} is out of range for property format`)}}function ae(e){return function(e,t){return t.reduce(((t,n)=>(t[n]=e[n],t)),{})}(e,["hour","minute","second","millisecond"])}const ie=/[A-Za-z_+-]{1,256}(?::?\/[A-Za-z0-9_+-]{1,256}(?:\/[A-Za-z0-9_+-]{1,256})?)?/,oe=["January","February","March","April","May","June","July","August","September","October","November","December"],le=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],ce=["J","F","M","A","M","J","J","A","S","O","N","D"];function ue(e){switch(e){case"narrow":return[...ce];case"short":return[...le];case"long":return[...oe];case"numeric":return["1","2","3","4","5","6","7","8","9","10","11","12"];case"2-digit":return["01","02","03","04","05","06","07","08","09","10","11","12"];default:return null}}const de=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],he=["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],me=["M","T","W","T","F","S","S"];function fe(e){switch(e){case"narrow":return[...me];case"short":return[...he];case"long":return[...de];case"numeric":return["1","2","3","4","5","6","7"];default:return null}}const ge=["AM","PM"],ye=["Before Christ","Anno Domini"],pe=["BC","AD"],we=["B","A"];function ve(e){switch(e){case"narrow":return[...we];case"short":return[...pe];case"long":return[...ye];default:return null}}function Se(e,t){let n="";for(const s of e)s.literal?n+=s.val:n+=t(s.val);return n}const be={D:f,DD:g,DDD:p,DDDD:w,t:v,tt:S,ttt:b,tttt:T,T:C,TT:I,TTT:M,TTTT:D,f:x,ff:L,fff:O,ffff:$,F:k,FF:E,FFF:F,FFFF:Z};class Te{static create(e,t={}){return new Te(e,t)}static parseFormat(e){let t=null,n="",s=!1;const r=[];for(let a=0;a0&&r.push({literal:s,val:n}),t=null,n="",s=!s):s||i===t?n+=i:(n.length>0&&r.push({literal:!1,val:n}),n=i,t=i)}return n.length>0&&r.push({literal:s,val:n}),r}static macroTokenToFormatOpts(e){return be[e]}constructor(e,t){this.opts=t,this.loc=e,this.systemLoc=null}formatWithSystemDefault(e,t){null===this.systemLoc&&(this.systemLoc=this.loc.redefaultToSystem());return this.systemLoc.dtFormatter(e,{...this.opts,...t}).format()}formatDateTime(e,t={}){return this.loc.dtFormatter(e,{...this.opts,...t}).format()}formatDateTimeParts(e,t={}){return this.loc.dtFormatter(e,{...this.opts,...t}).formatToParts()}resolvedOptions(e,t={}){return this.loc.dtFormatter(e,{...this.opts,...t}).resolvedOptions()}num(e,t=0){if(this.opts.forceSimple)return B(e,t);const n={...this.opts};return t>0&&(n.padTo=t),this.loc.numberFormatter(n).format(e)}formatDateTimeFromString(e,t){const n="en"===this.loc.listingMode(),s=this.loc.outputCalendar&&"gregory"!==this.loc.outputCalendar,r=(t,n)=>this.loc.extract(e,t,n),a=t=>e.isOffsetFixed&&0===e.offset&&t.allowZ?"Z":e.isValid?e.zone.formatOffset(e.ts,t.format):"",i=()=>n?function(e){return ge[e.hour<12?0:1]}(e):r({hour:"numeric",hourCycle:"h12"},"dayperiod"),o=(t,s)=>n?function(e,t){return ue(t)[e.month-1]}(e,t):r(s?{month:t}:{month:t,day:"numeric"},"month"),l=(t,s)=>n?function(e,t){return fe(t)[e.weekday-1]}(e,t):r(s?{weekday:t}:{weekday:t,month:"long",day:"numeric"},"weekday"),c=t=>{const n=Te.macroTokenToFormatOpts(t);return n?this.formatWithSystemDefault(e,n):t},u=t=>n?function(e,t){return ve(t)[e.year<0?0:1]}(e,t):r({era:t},"era");return Se(Te.parseFormat(t),(t=>{switch(t){case"S":return this.num(e.millisecond);case"u":case"SSS":return this.num(e.millisecond,3);case"s":return this.num(e.second);case"ss":return this.num(e.second,2);case"uu":return this.num(Math.floor(e.millisecond/10),2);case"uuu":return this.num(Math.floor(e.millisecond/100));case"m":return this.num(e.minute);case"mm":return this.num(e.minute,2);case"h":return this.num(e.hour%12==0?12:e.hour%12);case"hh":return this.num(e.hour%12==0?12:e.hour%12,2);case"H":return this.num(e.hour);case"HH":return this.num(e.hour,2);case"Z":return a({format:"narrow",allowZ:this.opts.allowZ});case"ZZ":return a({format:"short",allowZ:this.opts.allowZ});case"ZZZ":return a({format:"techie",allowZ:this.opts.allowZ});case"ZZZZ":return e.zone.offsetName(e.ts,{format:"short",locale:this.loc.locale});case"ZZZZZ":return e.zone.offsetName(e.ts,{format:"long",locale:this.loc.locale});case"z":return e.zoneName;case"a":return i();case"d":return s?r({day:"numeric"},"day"):this.num(e.day);case"dd":return s?r({day:"2-digit"},"day"):this.num(e.day,2);case"c":case"E":return this.num(e.weekday);case"ccc":return l("short",!0);case"cccc":return l("long",!0);case"ccccc":return l("narrow",!0);case"EEE":return l("short",!1);case"EEEE":return l("long",!1);case"EEEEE":return l("narrow",!1);case"L":return s?r({month:"numeric",day:"numeric"},"month"):this.num(e.month);case"LL":return s?r({month:"2-digit",day:"numeric"},"month"):this.num(e.month,2);case"LLL":return o("short",!0);case"LLLL":return o("long",!0);case"LLLLL":return o("narrow",!0);case"M":return s?r({month:"numeric"},"month"):this.num(e.month);case"MM":return s?r({month:"2-digit"},"month"):this.num(e.month,2);case"MMM":return o("short",!1);case"MMMM":return o("long",!1);case"MMMMM":return o("narrow",!1);case"y":return s?r({year:"numeric"},"year"):this.num(e.year);case"yy":return s?r({year:"2-digit"},"year"):this.num(e.year.toString().slice(-2),2);case"yyyy":return s?r({year:"numeric"},"year"):this.num(e.year,4);case"yyyyyy":return s?r({year:"numeric"},"year"):this.num(e.year,6);case"G":return u("short");case"GG":return u("long");case"GGGGG":return u("narrow");case"kk":return this.num(e.weekYear.toString().slice(-2),2);case"kkkk":return this.num(e.weekYear,4);case"W":return this.num(e.weekNumber);case"WW":return this.num(e.weekNumber,2);case"o":return this.num(e.ordinal);case"ooo":return this.num(e.ordinal,3);case"q":return this.num(e.quarter);case"qq":return this.num(e.quarter,2);case"X":return this.num(Math.floor(e.ts/1e3));case"x":return this.num(e.ts);default:return c(t)}}))}formatDurationFromString(e,t){const n=e=>{switch(e[0]){case"S":return"millisecond";case"s":return"second";case"m":return"minute";case"h":return"hour";case"d":return"day";case"w":return"week";case"M":return"month";case"y":return"year";default:return null}},s=Te.parseFormat(t),r=s.reduce(((e,{literal:t,val:n})=>t?e:e.concat(n)),[]);return Se(s,(e=>t=>{const s=n(t);return s?this.num(e.get(s),t.length):t})(e.shiftTo(...r.map(n).filter((e=>e)))))}}class Ce{constructor(e,t){this.reason=e,this.explanation=t}toMessage(){return this.explanation?`${this.reason}: ${this.explanation}`:this.reason}}class Ie{get type(){throw new u}get name(){throw new u}get ianaName(){return this.name}get isUniversal(){throw new u}offsetName(e,t){throw new u}formatOffset(e,t){throw new u}offset(e){throw new u}equals(e){throw new u}get isValid(){throw new u}}let Me=null;class De extends Ie{static get instance(){return null===Me&&(Me=new De),Me}get type(){return"system"}get name(){return(new Intl.DateTimeFormat).resolvedOptions().timeZone}get isUniversal(){return!1}offsetName(e,{format:t,locale:n}){return ee(e,t,n)}formatOffset(e,t){return re(this.offset(e),t)}offset(e){return-new Date(e).getTimezoneOffset()}equals(e){return"system"===e.type}get isValid(){return!0}}let xe={};const ke={year:0,month:1,day:2,era:3,hour:4,minute:5,second:6};let Le={};class Ee extends Ie{static create(e){return Le[e]||(Le[e]=new Ee(e)),Le[e]}static resetCache(){Le={},xe={}}static isValidSpecifier(e){return this.isValidZone(e)}static isValidZone(e){if(!e)return!1;try{return new Intl.DateTimeFormat("en-US",{timeZone:e}).format(),!0}catch(e){return!1}}constructor(e){super(),this.zoneName=e,this.valid=Ee.isValidZone(e)}get type(){return"iana"}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(e,{format:t,locale:n}){return ee(e,t,n,this.name)}formatOffset(e,t){return re(this.offset(e),t)}offset(e){const t=new Date(e);if(isNaN(t))return NaN;const n=(s=this.name,xe[s]||(xe[s]=new Intl.DateTimeFormat("en-US",{hour12:!1,timeZone:s,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",era:"short"})),xe[s]);var s;let[r,a,i,o,l,c,u]=n.formatToParts?function(e,t){const n=e.formatToParts(t),s=[];for(let e=0;e=0?h:1e3+h,(Q({year:r,month:a,day:i,hour:24===l?0:l,minute:c,second:u,millisecond:0})-d)/6e4}equals(e){return"iana"===e.type&&e.name===this.name}get isValid(){return this.valid}}let Ne=null;class Oe extends Ie{static get utcInstance(){return null===Ne&&(Ne=new Oe(0)),Ne}static instance(e){return 0===e?Oe.utcInstance:new Oe(e)}static parseSpecifier(e){if(e){const t=e.match(/^utc(?:([+-]\d{1,2})(?::(\d{2}))?)?$/i);if(t)return new Oe(te(t[1],t[2]))}return null}constructor(e){super(),this.fixed=e}get type(){return"fixed"}get name(){return 0===this.fixed?"UTC":`UTC${re(this.fixed,"narrow")}`}get ianaName(){return 0===this.fixed?"Etc/UTC":`Etc/GMT${re(-this.fixed,"narrow")}`}offsetName(){return this.name}formatOffset(e,t){return re(this.fixed,t)}get isUniversal(){return!0}offset(){return this.fixed}equals(e){return"fixed"===e.type&&e.fixed===this.fixed}get isValid(){return!0}}class Fe extends Ie{constructor(e){super(),this.zoneName=e}get type(){return"invalid"}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(){return null}formatOffset(){return""}offset(){return NaN}equals(){return!1}get isValid(){return!1}}function $e(e,t){if(V(e)||null===e)return t;if(e instanceof Ie)return e;if("string"==typeof e){const n=e.toLowerCase();return"default"===n?t:"local"===n||"system"===n?De.instance:"utc"===n||"gmt"===n?Oe.utcInstance:Oe.parseSpecifier(n)||Ee.create(e)}return H(e)?Oe.instance(e):"object"==typeof e&&e.offset&&"number"==typeof e.offset?e:new Fe(e)}let Ze,Ve=()=>Date.now(),He="system",_e=null,Ae=null,Pe=null;class We{static get now(){return Ve}static set now(e){Ve=e}static set defaultZone(e){He=e}static get defaultZone(){return $e(He,De.instance)}static get defaultLocale(){return _e}static set defaultLocale(e){_e=e}static get defaultNumberingSystem(){return Ae}static set defaultNumberingSystem(e){Ae=e}static get defaultOutputCalendar(){return Pe}static set defaultOutputCalendar(e){Pe=e}static get throwOnInvalid(){return Ze}static set throwOnInvalid(e){Ze=e}static resetCaches(){Ke.resetCache(),Ee.resetCache()}}let qe={};let Be={};function ze(e,t={}){const n=JSON.stringify([e,t]);let s=Be[n];return s||(s=new Intl.DateTimeFormat(e,t),Be[n]=s),s}let Re={};let Ue={};let je=null;function Ge(e,t,n,s,r){const a=e.listingMode(n);return"error"===a?null:"en"===a?s(t):r(t)}class Je{constructor(e,t,n){this.padTo=n.padTo||0,this.floor=n.floor||!1;const{padTo:s,floor:r,...a}=n;if(!t||Object.keys(a).length>0){const t={useGrouping:!1,...n};n.padTo>0&&(t.minimumIntegerDigits=n.padTo),this.inf=function(e,t={}){const n=JSON.stringify([e,t]);let s=Re[n];return s||(s=new Intl.NumberFormat(e,t),Re[n]=s),s}(e,t)}}format(e){if(this.inf){const t=this.floor?Math.floor(e):e;return this.inf.format(t)}return B(this.floor?Math.floor(e):j(e,3),this.padTo)}}class Ye{constructor(e,t,n){let s;if(this.opts=n,e.zone.isUniversal){const t=e.offset/60*-1,r=t>=0?`Etc/GMT+${t}`:`Etc/GMT${t}`;0!==e.offset&&Ee.create(r).valid?(s=r,this.dt=e):(s="UTC",n.timeZoneName?this.dt=e:this.dt=0===e.offset?e:Xn.fromMillis(e.ts+60*e.offset*1e3))}else"system"===e.zone.type?this.dt=e:(this.dt=e,s=e.zone.name);const r={...this.opts};s&&(r.timeZone=s),this.dtf=ze(t,r)}format(){return this.dtf.format(this.dt.toJSDate())}formatToParts(){return this.dtf.formatToParts(this.dt.toJSDate())}resolvedOptions(){return this.dtf.resolvedOptions()}}class Qe{constructor(e,t,n){this.opts={style:"long",...n},!t&&A()&&(this.rtf=function(e,t={}){const{base:n,...s}=t,r=JSON.stringify([e,s]);let a=Ue[r];return a||(a=new Intl.RelativeTimeFormat(e,t),Ue[r]=a),a}(e,n))}format(e,t){return this.rtf?this.rtf.format(e,t):function(e,t,n="always",s=!1){const r={years:["year","yr."],quarters:["quarter","qtr."],months:["month","mo."],weeks:["week","wk."],days:["day","day","days"],hours:["hour","hr."],minutes:["minute","min."],seconds:["second","sec."]},a=-1===["hours","minutes","seconds"].indexOf(e);if("auto"===n&&a){const n="days"===e;switch(t){case 1:return n?"tomorrow":`next ${r[e][0]}`;case-1:return n?"yesterday":`last ${r[e][0]}`;case 0:return n?"today":`this ${r[e][0]}`}}const i=Object.is(t,-0)||t<0,o=Math.abs(t),l=1===o,c=r[e],u=s?l?c[1]:c[2]||c[1]:l?r[e][0]:e;return i?`${o} ${u} ago`:`in ${o} ${u}`}(t,e,this.opts.numeric,"long"!==this.opts.style)}formatToParts(e,t){return this.rtf?this.rtf.formatToParts(e,t):[]}}class Ke{static fromOpts(e){return Ke.create(e.locale,e.numberingSystem,e.outputCalendar,e.defaultToEN)}static create(e,t,n,s=!1){const r=e||We.defaultLocale,a=r||(s?"en-US":je||(je=(new Intl.DateTimeFormat).resolvedOptions().locale,je)),i=t||We.defaultNumberingSystem,o=n||We.defaultOutputCalendar;return new Ke(a,i,o,r)}static resetCache(){je=null,Be={},Re={},Ue={}}static fromObject({locale:e,numberingSystem:t,outputCalendar:n}={}){return Ke.create(e,t,n)}constructor(e,t,n,s){const[r,a,i]=function(e){const t=e.indexOf("-u-");if(-1===t)return[e];{let n;const s=e.substring(0,t);try{n=ze(e).resolvedOptions()}catch(e){n=ze(s).resolvedOptions()}const{numberingSystem:r,calendar:a}=n;return[s,r,a]}}(e);this.locale=r,this.numberingSystem=t||a||null,this.outputCalendar=n||i||null,this.intl=function(e,t,n){return n||t?(e+="-u",n&&(e+=`-ca-${n}`),t&&(e+=`-nu-${t}`),e):e}(this.locale,this.numberingSystem,this.outputCalendar),this.weekdaysCache={format:{},standalone:{}},this.monthsCache={format:{},standalone:{}},this.meridiemCache=null,this.eraCache={},this.specifiedLocale=s,this.fastNumbersCached=null}get fastNumbers(){var e;return null==this.fastNumbersCached&&(this.fastNumbersCached=(!(e=this).numberingSystem||"latn"===e.numberingSystem)&&("latn"===e.numberingSystem||!e.locale||e.locale.startsWith("en")||"latn"===new Intl.DateTimeFormat(e.intl).resolvedOptions().numberingSystem)),this.fastNumbersCached}listingMode(){const e=this.isEnglish(),t=!(null!==this.numberingSystem&&"latn"!==this.numberingSystem||null!==this.outputCalendar&&"gregory"!==this.outputCalendar);return e&&t?"en":"intl"}clone(e){return e&&0!==Object.getOwnPropertyNames(e).length?Ke.create(e.locale||this.specifiedLocale,e.numberingSystem||this.numberingSystem,e.outputCalendar||this.outputCalendar,e.defaultToEN||!1):this}redefaultToEN(e={}){return this.clone({...e,defaultToEN:!0})}redefaultToSystem(e={}){return this.clone({...e,defaultToEN:!1})}months(e,t=!1,n=!0){return Ge(this,e,n,ue,(()=>{const n=t?{month:e,day:"numeric"}:{month:e},s=t?"format":"standalone";return this.monthsCache[s][e]||(this.monthsCache[s][e]=function(e){const t=[];for(let n=1;n<=12;n++){const s=Xn.utc(2016,n,1);t.push(e(s))}return t}((e=>this.extract(e,n,"month")))),this.monthsCache[s][e]}))}weekdays(e,t=!1,n=!0){return Ge(this,e,n,fe,(()=>{const n=t?{weekday:e,year:"numeric",month:"long",day:"numeric"}:{weekday:e},s=t?"format":"standalone";return this.weekdaysCache[s][e]||(this.weekdaysCache[s][e]=function(e){const t=[];for(let n=1;n<=7;n++){const s=Xn.utc(2016,11,13+n);t.push(e(s))}return t}((e=>this.extract(e,n,"weekday")))),this.weekdaysCache[s][e]}))}meridiems(e=!0){return Ge(this,void 0,e,(()=>ge),(()=>{if(!this.meridiemCache){const e={hour:"numeric",hourCycle:"h12"};this.meridiemCache=[Xn.utc(2016,11,13,9),Xn.utc(2016,11,13,19)].map((t=>this.extract(t,e,"dayperiod")))}return this.meridiemCache}))}eras(e,t=!0){return Ge(this,e,t,ve,(()=>{const t={era:e};return this.eraCache[e]||(this.eraCache[e]=[Xn.utc(-40,1,1),Xn.utc(2017,1,1)].map((e=>this.extract(e,t,"era")))),this.eraCache[e]}))}extract(e,t,n){const s=this.dtFormatter(e,t).formatToParts().find((e=>e.type.toLowerCase()===n));return s?s.value:null}numberFormatter(e={}){return new Je(this.intl,e.forceSimple||this.fastNumbers,e)}dtFormatter(e,t={}){return new Ye(e,this.intl,t)}relFormatter(e={}){return new Qe(this.intl,this.isEnglish(),e)}listFormatter(e={}){return function(e,t={}){const n=JSON.stringify([e,t]);let s=qe[n];return s||(s=new Intl.ListFormat(e,t),qe[n]=s),s}(this.intl,e)}isEnglish(){return"en"===this.locale||"en-us"===this.locale.toLowerCase()||new Intl.DateTimeFormat(this.intl).resolvedOptions().locale.startsWith("en-us")}equals(e){return this.locale===e.locale&&this.numberingSystem===e.numberingSystem&&this.outputCalendar===e.outputCalendar}}function Xe(...e){const t=e.reduce(((e,t)=>e+t.source),"");return RegExp(`^${t}$`)}function et(...e){return t=>e.reduce((([e,n,s],r)=>{const[a,i,o]=r(t,s);return[{...e,...a},i||n,o]}),[{},null,1]).slice(0,2)}function tt(e,...t){if(null==e)return[null,null];for(const[n,s]of t){const t=n.exec(e);if(t)return s(t)}return[null,null]}function nt(...e){return(t,n)=>{const s={};let r;for(r=0;rvoid 0!==e&&(t||e&&u)?-e:e;return[{years:h(R(n)),months:h(R(s)),weeks:h(R(r)),days:h(R(a)),hours:h(R(i)),minutes:h(R(o)),seconds:h(R(l),"-0"===l),milliseconds:h(U(c),d)}]}const wt={GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function vt(e,t,n,s,r,a,i){const o={year:2===t.length?X(z(t)):z(t),month:le.indexOf(n)+1,day:z(s),hour:z(r),minute:z(a)};return i&&(o.second=z(i)),e&&(o.weekday=e.length>3?de.indexOf(e)+1:he.indexOf(e)+1),o}const St=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|(?:([+-]\d\d)(\d\d)))$/;function bt(e){const[,t,n,s,r,a,i,o,l,c,u,d]=e,h=vt(t,r,s,n,a,i,o);let m;return m=l?wt[l]:c?0:te(u,d),[h,new Oe(m)]}const Tt=/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\d\d) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\d{4}) (\d\d):(\d\d):(\d\d) GMT$/,Ct=/^(Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), (\d\d)-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\d\d) (\d\d):(\d\d):(\d\d) GMT$/,It=/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( \d|\d\d) (\d\d):(\d\d):(\d\d) (\d{4})$/;function Mt(e){const[,t,n,s,r,a,i,o]=e;return[vt(t,r,s,n,a,i,o),Oe.utcInstance]}function Dt(e){const[,t,n,s,r,a,i,o]=e;return[vt(t,o,n,s,r,a,i),Oe.utcInstance]}const xt=Xe(/([+-]\d{6}|\d{4})(?:-?(\d\d)(?:-?(\d\d))?)?/,it),kt=Xe(/(\d{4})-?W(\d\d)(?:-?(\d))?/,it),Lt=Xe(/(\d{4})-?(\d{3})/,it),Et=Xe(at),Nt=et((function(e,t){return[{year:dt(e,t),month:dt(e,t+1,1),day:dt(e,t+2,1)},null,t+3]}),ht,mt,ft),Ot=et(ot,ht,mt,ft),Ft=et(lt,ht,mt,ft),$t=et(ht,mt,ft);const Zt=et(ht);const Vt=Xe(/(\d{4})-(\d\d)-(\d\d)/,ut),Ht=Xe(ct),_t=et(ht,mt,ft);const At={weeks:{days:7,hours:168,minutes:10080,seconds:604800,milliseconds:6048e5},days:{hours:24,minutes:1440,seconds:86400,milliseconds:864e5},hours:{minutes:60,seconds:3600,milliseconds:36e5},minutes:{seconds:60,milliseconds:6e4},seconds:{milliseconds:1e3}},Pt={years:{quarters:4,months:12,weeks:52,days:365,hours:8760,minutes:525600,seconds:31536e3,milliseconds:31536e6},quarters:{months:3,weeks:13,days:91,hours:2184,minutes:131040,seconds:7862400,milliseconds:78624e5},months:{weeks:4,days:30,hours:720,minutes:43200,seconds:2592e3,milliseconds:2592e6},...At},Wt=365.2425,qt=30.436875,Bt={years:{quarters:4,months:12,weeks:52.1775,days:Wt,hours:8765.82,minutes:525949.2,seconds:525949.2*60,milliseconds:525949.2*60*1e3},quarters:{months:3,weeks:13.044375,days:91.310625,hours:2191.455,minutes:131487.3,seconds:525949.2*60/4,milliseconds:7889237999.999999},months:{weeks:4.3481250000000005,days:qt,hours:730.485,minutes:43829.1,seconds:2629746,milliseconds:2629746e3},...At},zt=["years","quarters","months","weeks","days","hours","minutes","seconds","milliseconds"],Rt=zt.slice(0).reverse();function Ut(e,t,n=!1){const s={values:n?t.values:{...e.values,...t.values||{}},loc:e.loc.clone(t.loc),conversionAccuracy:t.conversionAccuracy||e.conversionAccuracy,matrix:t.matrix||e.matrix};return new Gt(s)}function jt(e,t,n,s,r){const a=e[r][n],i=t[n]/a,o=!(Math.sign(i)===Math.sign(s[r]))&&0!==s[r]&&Math.abs(i)<=1?function(e){return e<0?Math.floor(e):Math.ceil(e)}(i):Math.trunc(i);s[r]+=o,t[n]-=o*a}class Gt{constructor(e){const t="longterm"===e.conversionAccuracy||!1;let n=t?Bt:Pt;e.matrix&&(n=e.matrix),this.values=e.values,this.loc=e.loc||Ke.create(),this.conversionAccuracy=t?"longterm":"casual",this.invalid=e.invalid||null,this.matrix=n,this.isLuxonDuration=!0}static fromMillis(e,t){return Gt.fromObject({milliseconds:e},t)}static fromObject(e,t={}){if(null==e||"object"!=typeof e)throw new c("Duration.fromObject: argument expected to be an object, got "+(null===e?"null":typeof e));return new Gt({values:se(e,Gt.normalizeUnit),loc:Ke.fromObject(t),conversionAccuracy:t.conversionAccuracy,matrix:t.matrix})}static fromDurationLike(e){if(H(e))return Gt.fromMillis(e);if(Gt.isDuration(e))return e;if("object"==typeof e)return Gt.fromObject(e);throw new c(`Unknown duration argument ${e} of type ${typeof e}`)}static fromISO(e,t){const[n]=function(e){return tt(e,[yt,pt])}(e);return n?Gt.fromObject(n,t):Gt.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static fromISOTime(e,t){const[n]=function(e){return tt(e,[gt,Zt])}(e);return n?Gt.fromObject(n,t):Gt.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static invalid(e,t=null){if(!e)throw new c("need to specify a reason the Duration is invalid");const n=e instanceof Ce?e:new Ce(e,t);if(We.throwOnInvalid)throw new i(n);return new Gt({invalid:n})}static normalizeUnit(e){const t={year:"years",years:"years",quarter:"quarters",quarters:"quarters",month:"months",months:"months",week:"weeks",weeks:"weeks",day:"days",days:"days",hour:"hours",hours:"hours",minute:"minutes",minutes:"minutes",second:"seconds",seconds:"seconds",millisecond:"milliseconds",milliseconds:"milliseconds"}[e?e.toLowerCase():e];if(!t)throw new l(e);return t}static isDuration(e){return e&&e.isLuxonDuration||!1}get locale(){return this.isValid?this.loc.locale:null}get numberingSystem(){return this.isValid?this.loc.numberingSystem:null}toFormat(e,t={}){const n={...t,floor:!1!==t.round&&!1!==t.floor};return this.isValid?Te.create(this.loc,n).formatDurationFromString(this,e):"Invalid Duration"}toHuman(e={}){const t=zt.map((t=>{const n=this.values[t];return V(n)?null:this.loc.numberFormatter({style:"unit",unitDisplay:"long",...e,unit:t.slice(0,-1)}).format(n)})).filter((e=>e));return this.loc.listFormatter({type:"conjunction",style:e.listStyle||"narrow",...e}).format(t)}toObject(){return this.isValid?{...this.values}:{}}toISO(){if(!this.isValid)return null;let e="P";return 0!==this.years&&(e+=this.years+"Y"),0===this.months&&0===this.quarters||(e+=this.months+3*this.quarters+"M"),0!==this.weeks&&(e+=this.weeks+"W"),0!==this.days&&(e+=this.days+"D"),0===this.hours&&0===this.minutes&&0===this.seconds&&0===this.milliseconds||(e+="T"),0!==this.hours&&(e+=this.hours+"H"),0!==this.minutes&&(e+=this.minutes+"M"),0===this.seconds&&0===this.milliseconds||(e+=j(this.seconds+this.milliseconds/1e3,3)+"S"),"P"===e&&(e+="T0S"),e}toISOTime(e={}){if(!this.isValid)return null;const t=this.toMillis();if(t<0||t>=864e5)return null;e={suppressMilliseconds:!1,suppressSeconds:!1,includePrefix:!1,format:"extended",...e};const n=this.shiftTo("hours","minutes","seconds","milliseconds");let s="basic"===e.format?"hhmm":"hh:mm";e.suppressSeconds&&0===n.seconds&&0===n.milliseconds||(s+="basic"===e.format?"ss":":ss",e.suppressMilliseconds&&0===n.milliseconds||(s+=".SSS"));let r=n.toFormat(s);return e.includePrefix&&(r="T"+r),r}toJSON(){return this.toISO()}toString(){return this.toISO()}toMillis(){return this.as("milliseconds")}valueOf(){return this.toMillis()}plus(e){if(!this.isValid)return this;const t=Gt.fromDurationLike(e),n={};for(const e of zt)(W(t.values,e)||W(this.values,e))&&(n[e]=t.get(e)+this.get(e));return Ut(this,{values:n},!0)}minus(e){if(!this.isValid)return this;const t=Gt.fromDurationLike(e);return this.plus(t.negate())}mapUnits(e){if(!this.isValid)return this;const t={};for(const n of Object.keys(this.values))t[n]=ne(e(this.values[n],n));return Ut(this,{values:t},!0)}get(e){return this[Gt.normalizeUnit(e)]}set(e){if(!this.isValid)return this;return Ut(this,{values:{...this.values,...se(e,Gt.normalizeUnit)}})}reconfigure({locale:e,numberingSystem:t,conversionAccuracy:n,matrix:s}={}){return Ut(this,{loc:this.loc.clone({locale:e,numberingSystem:t}),matrix:s,conversionAccuracy:n})}as(e){return this.isValid?this.shiftTo(e).get(e):NaN}normalize(){if(!this.isValid)return this;const e=this.toObject();return function(e,t){Rt.reduce(((n,s)=>V(t[s])?n:(n&&jt(e,t,n,t,s),s)),null)}(this.matrix,e),Ut(this,{values:e},!0)}rescale(){if(!this.isValid)return this;return Ut(this,{values:function(e){const t={};for(const[n,s]of Object.entries(e))0!==s&&(t[n]=s);return t}(this.normalize().shiftToAll().toObject())},!0)}shiftTo(...e){if(!this.isValid)return this;if(0===e.length)return this;e=e.map((e=>Gt.normalizeUnit(e)));const t={},n={},s=this.toObject();let r;for(const a of zt)if(e.indexOf(a)>=0){r=a;let e=0;for(const t in n)e+=this.matrix[t][a]*n[t],n[t]=0;H(s[a])&&(e+=s[a]);const i=Math.trunc(e);t[a]=i,n[a]=(1e3*e-1e3*i)/1e3;for(const e in s)zt.indexOf(e)>zt.indexOf(a)&&jt(this.matrix,s,e,t,a)}else H(s[a])&&(n[a]=s[a]);for(const e in n)0!==n[e]&&(t[r]+=e===r?n[e]:n[e]/this.matrix[r][e]);return Ut(this,{values:t},!0).normalize()}shiftToAll(){return this.isValid?this.shiftTo("years","months","weeks","days","hours","minutes","seconds","milliseconds"):this}negate(){if(!this.isValid)return this;const e={};for(const t of Object.keys(this.values))e[t]=0===this.values[t]?0:-this.values[t];return Ut(this,{values:e},!0)}get years(){return this.isValid?this.values.years||0:NaN}get quarters(){return this.isValid?this.values.quarters||0:NaN}get months(){return this.isValid?this.values.months||0:NaN}get weeks(){return this.isValid?this.values.weeks||0:NaN}get days(){return this.isValid?this.values.days||0:NaN}get hours(){return this.isValid?this.values.hours||0:NaN}get minutes(){return this.isValid?this.values.minutes||0:NaN}get seconds(){return this.isValid?this.values.seconds||0:NaN}get milliseconds(){return this.isValid?this.values.milliseconds||0:NaN}get isValid(){return null===this.invalid}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}equals(e){if(!this.isValid||!e.isValid)return!1;if(!this.loc.equals(e.loc))return!1;for(const s of zt)if(t=this.values[s],n=e.values[s],!(void 0===t||0===t?void 0===n||0===n:t===n))return!1;var t,n;return!0}}const Jt="Invalid Interval";class Yt{constructor(e){this.s=e.start,this.e=e.end,this.invalid=e.invalid||null,this.isLuxonInterval=!0}static invalid(e,t=null){if(!e)throw new c("need to specify a reason the Interval is invalid");const n=e instanceof Ce?e:new Ce(e,t);if(We.throwOnInvalid)throw new a(n);return new Yt({invalid:n})}static fromDateTimes(e,t){const n=es(e),s=es(t),r=function(e,t){return e&&e.isValid?t&&t.isValid?te}isBefore(e){return!!this.isValid&&this.e<=e}contains(e){return!!this.isValid&&(this.s<=e&&this.e>e)}set({start:e,end:t}={}){return this.isValid?Yt.fromDateTimes(e||this.s,t||this.e):this}splitAt(...e){if(!this.isValid)return[];const t=e.map(es).filter((e=>this.contains(e))).sort(),n=[];let{s}=this,r=0;for(;s+this.e?this.e:e;n.push(Yt.fromDateTimes(s,a)),s=a,r+=1}return n}splitBy(e){const t=Gt.fromDurationLike(e);if(!this.isValid||!t.isValid||0===t.as("milliseconds"))return[];let n,{s}=this,r=1;const a=[];for(;se*r)));n=+e>+this.e?this.e:e,a.push(Yt.fromDateTimes(s,n)),s=n,r+=1}return a}divideEqually(e){return this.isValid?this.splitBy(this.length()/e).slice(0,e):[]}overlaps(e){return this.e>e.s&&this.s=e.e)}equals(e){return!(!this.isValid||!e.isValid)&&(this.s.equals(e.s)&&this.e.equals(e.e))}intersection(e){if(!this.isValid)return this;const t=this.s>e.s?this.s:e.s,n=this.e=n?null:Yt.fromDateTimes(t,n)}union(e){if(!this.isValid)return this;const t=this.se.e?this.e:e.e;return Yt.fromDateTimes(t,n)}static merge(e){const[t,n]=e.sort(((e,t)=>e.s-t.s)).reduce((([e,t],n)=>t?t.overlaps(n)||t.abutsStart(n)?[e,t.union(n)]:[e.concat([t]),n]:[e,n]),[[],null]);return n&&t.push(n),t}static xor(e){let t=null,n=0;const s=[],r=e.map((e=>[{time:e.s,type:"s"},{time:e.e,type:"e"}])),a=Array.prototype.concat(...r).sort(((e,t)=>e.time-t.time));for(const e of a)n+="s"===e.type?1:-1,1===n?t=e.time:(t&&+t!=+e.time&&s.push(Yt.fromDateTimes(t,e.time)),t=null);return Yt.merge(s)}difference(...e){return Yt.xor([this].concat(e)).map((e=>this.intersection(e))).filter((e=>e&&!e.isEmpty()))}toString(){return this.isValid?`[${this.s.toISO()} – ${this.e.toISO()})`:Jt}toISO(e){return this.isValid?`${this.s.toISO(e)}/${this.e.toISO(e)}`:Jt}toISODate(){return this.isValid?`${this.s.toISODate()}/${this.e.toISODate()}`:Jt}toISOTime(e){return this.isValid?`${this.s.toISOTime(e)}/${this.e.toISOTime(e)}`:Jt}toFormat(e,{separator:t=" – "}={}){return this.isValid?`${this.s.toFormat(e)}${t}${this.e.toFormat(e)}`:Jt}toDuration(e,t){return this.isValid?this.e.diff(this.s,e,t):Gt.invalid(this.invalidReason)}mapEndpoints(e){return Yt.fromDateTimes(e(this.s),e(this.e))}}class Qt{static hasDST(e=We.defaultZone){const t=Xn.now().setZone(e).set({month:12});return!e.isUniversal&&t.offset!==t.set({month:6}).offset}static isValidIANAZone(e){return Ee.isValidZone(e)}static normalizeZone(e){return $e(e,We.defaultZone)}static months(e="long",{locale:t=null,numberingSystem:n=null,locObj:s=null,outputCalendar:r="gregory"}={}){return(s||Ke.create(t,n,r)).months(e)}static monthsFormat(e="long",{locale:t=null,numberingSystem:n=null,locObj:s=null,outputCalendar:r="gregory"}={}){return(s||Ke.create(t,n,r)).months(e,!0)}static weekdays(e="long",{locale:t=null,numberingSystem:n=null,locObj:s=null}={}){return(s||Ke.create(t,n,null)).weekdays(e)}static weekdaysFormat(e="long",{locale:t=null,numberingSystem:n=null,locObj:s=null}={}){return(s||Ke.create(t,n,null)).weekdays(e,!0)}static meridiems({locale:e=null}={}){return Ke.create(e).meridiems()}static eras(e="short",{locale:t=null}={}){return Ke.create(t,null,"gregory").eras(e)}static features(){return{relative:A()}}}function Kt(e,t){const n=e=>e.toUTC(0,{keepLocalTime:!0}).startOf("day").valueOf(),s=n(t)-n(e);return Math.floor(Gt.fromMillis(s).as("days"))}function Xt(e,t,n,s){let[r,a,i,o]=function(e,t,n){const s=[["years",(e,t)=>t.year-e.year],["quarters",(e,t)=>t.quarter-e.quarter+4*(t.year-e.year)],["months",(e,t)=>t.month-e.month+12*(t.year-e.year)],["weeks",(e,t)=>{const n=Kt(e,t);return(n-n%7)/7}],["days",Kt]],r={};let a,i;for(const[o,l]of s)if(n.indexOf(o)>=0){a=o;let n=l(e,t);i=e.plus({[o]:n}),i>t?(e=e.plus({[o]:n-1}),n-=1):e=i,r[o]=n}return[e,r,i,a]}(e,t,n);const l=t-r,c=n.filter((e=>["hours","minutes","seconds","milliseconds"].indexOf(e)>=0));0===c.length&&(i0?Gt.fromMillis(l,s).shiftTo(...c).plus(u):u}const en={arab:"[٠-٩]",arabext:"[۰-۹]",bali:"[᭐-᭙]",beng:"[০-৯]",deva:"[०-९]",fullwide:"[0-9]",gujr:"[૦-૯]",hanidec:"[〇|一|二|三|四|五|六|七|八|九]",khmr:"[០-៩]",knda:"[೦-೯]",laoo:"[໐-໙]",limb:"[᥆-᥏]",mlym:"[൦-൯]",mong:"[᠐-᠙]",mymr:"[၀-၉]",orya:"[୦-୯]",tamldec:"[௦-௯]",telu:"[౦-౯]",thai:"[๐-๙]",tibt:"[༠-༩]",latn:"\\d"},tn={arab:[1632,1641],arabext:[1776,1785],bali:[6992,7001],beng:[2534,2543],deva:[2406,2415],fullwide:[65296,65303],gujr:[2790,2799],khmr:[6112,6121],knda:[3302,3311],laoo:[3792,3801],limb:[6470,6479],mlym:[3430,3439],mong:[6160,6169],mymr:[4160,4169],orya:[2918,2927],tamldec:[3046,3055],telu:[3174,3183],thai:[3664,3673],tibt:[3872,3881]},nn=en.hanidec.replace(/[\[|\]]/g,"").split("");function sn({numberingSystem:e},t=""){return new RegExp(`${en[e||"latn"]}${t}`)}function rn(e,t=(e=>e)){return{regex:e,deser:([e])=>t(function(e){let t=parseInt(e,10);if(isNaN(t)){t="";for(let n=0;n=n&&s<=r&&(t+=s-n)}}return parseInt(t,10)}return t}(e))}}const an=`[ ${String.fromCharCode(160)}]`,on=new RegExp(an,"g");function ln(e){return e.replace(/\./g,"\\.?").replace(on,an)}function cn(e){return e.replace(/\./g,"").replace(on," ").toLowerCase()}function un(e,t){return null===e?null:{regex:RegExp(e.map(ln).join("|")),deser:([n])=>e.findIndex((e=>cn(n)===cn(e)))+t}}function dn(e,t){return{regex:e,deser:([,e,t])=>te(e,t),groups:t}}function hn(e){return{regex:e,deser:([e])=>e}}const mn={year:{"2-digit":"yy",numeric:"yyyyy"},month:{numeric:"M","2-digit":"MM",short:"MMM",long:"MMMM"},day:{numeric:"d","2-digit":"dd"},weekday:{short:"EEE",long:"EEEE"},dayperiod:"a",dayPeriod:"a",hour:{numeric:"h","2-digit":"hh"},minute:{numeric:"m","2-digit":"mm"},second:{numeric:"s","2-digit":"ss"},timeZoneName:{long:"ZZZZZ",short:"ZZZ"}};let fn=null;function gn(e,t){return Array.prototype.concat(...e.map((e=>function(e,t){if(e.literal)return e;const n=pn(Te.macroTokenToFormatOpts(e.val),t);return null==n||n.includes(void 0)?e:n}(e,t))))}function yn(e,t,n){const s=gn(Te.parseFormat(n),e),r=s.map((t=>function(e,t){const n=sn(t),s=sn(t,"{2}"),r=sn(t,"{3}"),a=sn(t,"{4}"),i=sn(t,"{6}"),o=sn(t,"{1,2}"),l=sn(t,"{1,3}"),c=sn(t,"{1,6}"),u=sn(t,"{1,9}"),d=sn(t,"{2,4}"),h=sn(t,"{4,6}"),m=e=>{return{regex:RegExp((t=e.val,t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&"))),deser:([e])=>e,literal:!0};var t},f=(f=>{if(e.literal)return m(f);switch(f.val){case"G":return un(t.eras("short",!1),0);case"GG":return un(t.eras("long",!1),0);case"y":return rn(c);case"yy":case"kk":return rn(d,X);case"yyyy":case"kkkk":return rn(a);case"yyyyy":return rn(h);case"yyyyyy":return rn(i);case"M":case"L":case"d":case"H":case"h":case"m":case"q":case"s":case"W":return rn(o);case"MM":case"LL":case"dd":case"HH":case"hh":case"mm":case"qq":case"ss":case"WW":return rn(s);case"MMM":return un(t.months("short",!0,!1),1);case"MMMM":return un(t.months("long",!0,!1),1);case"LLL":return un(t.months("short",!1,!1),1);case"LLLL":return un(t.months("long",!1,!1),1);case"o":case"S":return rn(l);case"ooo":case"SSS":return rn(r);case"u":return hn(u);case"uu":return hn(o);case"uuu":case"E":case"c":return rn(n);case"a":return un(t.meridiems(),0);case"EEE":return un(t.weekdays("short",!1,!1),1);case"EEEE":return un(t.weekdays("long",!1,!1),1);case"ccc":return un(t.weekdays("short",!0,!1),1);case"cccc":return un(t.weekdays("long",!0,!1),1);case"Z":case"ZZ":return dn(new RegExp(`([+-]${o.source})(?::(${s.source}))?`),2);case"ZZZ":return dn(new RegExp(`([+-]${o.source})(${s.source})?`),2);case"z":return hn(/[a-z_+-/]{1,256}?/i);default:return m(f)}})(e)||{invalidReason:"missing Intl.DateTimeFormat.formatToParts support"};return f.token=e,f}(t,e))),a=r.find((e=>e.invalidReason));if(a)return{input:t,tokens:s,invalidReason:a.invalidReason};{const[e,n]=function(e){return[`^${e.map((e=>e.regex)).reduce(((e,t)=>`${e}(${t.source})`),"")}$`,e]}(r),a=RegExp(e,"i"),[i,l]=function(e,t,n){const s=e.match(t);if(s){const e={};let t=1;for(const r in n)if(W(n,r)){const a=n[r],i=a.groups?a.groups+1:1;!a.literal&&a.token&&(e[a.token.val[0]]=a.deser(s.slice(t,t+i))),t+=i}return[s,e]}return[s,{}]}(t,a,n),[c,u,d]=l?function(e){let t,n=null;return V(e.z)||(n=Ee.create(e.z)),V(e.Z)||(n||(n=new Oe(e.Z)),t=e.Z),V(e.q)||(e.M=3*(e.q-1)+1),V(e.h)||(e.h<12&&1===e.a?e.h+=12:12===e.h&&0===e.a&&(e.h=0)),0===e.G&&e.y&&(e.y=-e.y),V(e.u)||(e.S=U(e.u)),[Object.keys(e).reduce(((t,n)=>{const s=(e=>{switch(e){case"S":return"millisecond";case"s":return"second";case"m":return"minute";case"h":case"H":return"hour";case"d":return"day";case"o":return"ordinal";case"L":case"M":return"month";case"y":return"year";case"E":case"c":return"weekday";case"W":return"weekNumber";case"k":return"weekYear";case"q":return"quarter";default:return null}})(n);return s&&(t[s]=e[n]),t}),{}),n,t]}(l):[null,null,void 0];if(W(l,"a")&&W(l,"H"))throw new o("Can't include meridiem when specifying 24-hour format");return{input:t,tokens:s,regex:a,rawMatches:i,matches:l,result:c,zone:u,specificOffset:d}}}function pn(e,t){if(!e)return null;return Te.create(t,e).formatDateTimeParts((fn||(fn=Xn.fromMillis(1555555555555)),fn)).map((t=>function(e,t,n){const{type:s,value:r}=e;if("literal"===s)return{literal:!0,val:r};const a=n[s];let i=mn[s];return"object"==typeof i&&(i=i[a]),i?{literal:!1,val:i}:void 0}(t,0,e)))}const wn=[0,31,59,90,120,151,181,212,243,273,304,334],vn=[0,31,60,91,121,152,182,213,244,274,305,335];function Sn(e,t){return new Ce("unit out of range",`you specified ${t} (of type ${typeof t}) as a ${e}, which is invalid`)}function bn(e,t,n){const s=new Date(Date.UTC(e,t-1,n));e<100&&e>=0&&s.setUTCFullYear(s.getUTCFullYear()-1900);const r=s.getUTCDay();return 0===r?7:r}function Tn(e,t,n){return n+(G(e)?vn:wn)[t-1]}function Cn(e,t){const n=G(e)?vn:wn,s=n.findIndex((e=>eK(t)?(i=t+1,o=1):i=t,{weekYear:i,weekNumber:o,weekday:a,...ae(e)}}function Mn(e){const{weekYear:t,weekNumber:n,weekday:s}=e,r=bn(t,1,4),a=J(t);let i,o=7*n+s-r-3;o<1?(i=t-1,o+=J(i)):o>a?(i=t+1,o-=J(t)):i=t;const{month:l,day:c}=Cn(i,o);return{year:i,month:l,day:c,...ae(e)}}function Dn(e){const{year:t,month:n,day:s}=e;return{year:t,ordinal:Tn(t,n,s),...ae(e)}}function xn(e){const{year:t,ordinal:n}=e,{month:s,day:r}=Cn(t,n);return{year:t,month:s,day:r,...ae(e)}}function kn(e){const t=_(e.year),n=q(e.month,1,12),s=q(e.day,1,Y(e.year,e.month));return t?n?!s&&Sn("day",e.day):Sn("month",e.month):Sn("year",e.year)}function Ln(e){const{hour:t,minute:n,second:s,millisecond:r}=e,a=q(t,0,23)||24===t&&0===n&&0===s&&0===r,i=q(n,0,59),o=q(s,0,59),l=q(r,0,999);return a?i?o?!l&&Sn("millisecond",r):Sn("second",s):Sn("minute",n):Sn("hour",t)}const En="Invalid DateTime",Nn=864e13;function On(e){return new Ce("unsupported zone",`the zone "${e.name}" is not supported`)}function Fn(e){return null===e.weekData&&(e.weekData=In(e.c)),e.weekData}function $n(e,t){const n={ts:e.ts,zone:e.zone,c:e.c,o:e.o,loc:e.loc,invalid:e.invalid};return new Xn({...n,...t,old:n})}function Zn(e,t,n){let s=e-60*t*1e3;const r=n.offset(s);if(t===r)return[s,t];s-=60*(r-t)*1e3;const a=n.offset(s);return r===a?[s,r]:[e-60*Math.min(r,a)*1e3,Math.max(r,a)]}function Vn(e,t){const n=new Date(e+=60*t*1e3);return{year:n.getUTCFullYear(),month:n.getUTCMonth()+1,day:n.getUTCDate(),hour:n.getUTCHours(),minute:n.getUTCMinutes(),second:n.getUTCSeconds(),millisecond:n.getUTCMilliseconds()}}function Hn(e,t,n){return Zn(Q(e),t,n)}function _n(e,t){const n=e.o,s=e.c.year+Math.trunc(t.years),r=e.c.month+Math.trunc(t.months)+3*Math.trunc(t.quarters),a={...e.c,year:s,month:r,day:Math.min(e.c.day,Y(s,r))+Math.trunc(t.days)+7*Math.trunc(t.weeks)},i=Gt.fromObject({years:t.years-Math.trunc(t.years),quarters:t.quarters-Math.trunc(t.quarters),months:t.months-Math.trunc(t.months),weeks:t.weeks-Math.trunc(t.weeks),days:t.days-Math.trunc(t.days),hours:t.hours,minutes:t.minutes,seconds:t.seconds,milliseconds:t.milliseconds}).as("milliseconds"),o=Q(a);let[l,c]=Zn(o,n,e.zone);return 0!==i&&(l+=i,c=e.zone.offset(l)),{ts:l,o:c}}function An(e,t,n,s,r,a){const{setZone:i,zone:o}=n;if(e&&0!==Object.keys(e).length){const s=t||o,r=Xn.fromObject(e,{...n,zone:s,specificOffset:a});return i?r:r.setZone(o)}return Xn.invalid(new Ce("unparsable",`the input "${r}" can't be parsed as ${s}`))}function Pn(e,t,n=!0){return e.isValid?Te.create(Ke.create("en-US"),{allowZ:n,forceSimple:!0}).formatDateTimeFromString(e,t):null}function Wn(e,t){const n=e.c.year>9999||e.c.year<0;let s="";return n&&e.c.year>=0&&(s+="+"),s+=B(e.c.year,n?6:4),t?(s+="-",s+=B(e.c.month),s+="-",s+=B(e.c.day)):(s+=B(e.c.month),s+=B(e.c.day)),s}function qn(e,t,n,s,r,a){let i=B(e.c.hour);return t?(i+=":",i+=B(e.c.minute),0===e.c.second&&n||(i+=":")):i+=B(e.c.minute),0===e.c.second&&n||(i+=B(e.c.second),0===e.c.millisecond&&s||(i+=".",i+=B(e.c.millisecond,3))),r&&(e.isOffsetFixed&&0===e.offset&&!a?i+="Z":e.o<0?(i+="-",i+=B(Math.trunc(-e.o/60)),i+=":",i+=B(Math.trunc(-e.o%60))):(i+="+",i+=B(Math.trunc(e.o/60)),i+=":",i+=B(Math.trunc(e.o%60)))),a&&(i+="["+e.zone.ianaName+"]"),i}const Bn={month:1,day:1,hour:0,minute:0,second:0,millisecond:0},zn={weekNumber:1,weekday:1,hour:0,minute:0,second:0,millisecond:0},Rn={ordinal:1,hour:0,minute:0,second:0,millisecond:0},Un=["year","month","day","hour","minute","second","millisecond"],jn=["weekYear","weekNumber","weekday","hour","minute","second","millisecond"],Gn=["year","ordinal","hour","minute","second","millisecond"];function Jn(e){const t={year:"year",years:"year",month:"month",months:"month",day:"day",days:"day",hour:"hour",hours:"hour",minute:"minute",minutes:"minute",quarter:"quarter",quarters:"quarter",second:"second",seconds:"second",millisecond:"millisecond",milliseconds:"millisecond",weekday:"weekday",weekdays:"weekday",weeknumber:"weekNumber",weeksnumber:"weekNumber",weeknumbers:"weekNumber",weekyear:"weekYear",weekyears:"weekYear",ordinal:"ordinal"}[e.toLowerCase()];if(!t)throw new l(e);return t}function Yn(e,t){const n=$e(t.zone,We.defaultZone),s=Ke.fromObject(t),r=We.now();let a,i;if(V(e.year))a=r;else{for(const t of Un)V(e[t])&&(e[t]=Bn[t]);const t=kn(e)||Ln(e);if(t)return Xn.invalid(t);const s=n.offset(r);[a,i]=Hn(e,s,n)}return new Xn({ts:a,zone:n,loc:s,o:i})}function Qn(e,t,n){const s=!!V(n.round)||n.round,r=(e,r)=>{e=j(e,s||n.calendary?0:2,!0);return t.loc.clone(n).relFormatter(n).format(e,r)},a=s=>n.calendary?t.hasSame(e,s)?0:t.startOf(s).diff(e.startOf(s),s).get(s):t.diff(e,s).get(s);if(n.unit)return r(a(n.unit),n.unit);for(const e of n.units){const t=a(e);if(Math.abs(t)>=1)return r(t,e)}return r(e>t?-0:0,n.units[n.units.length-1])}function Kn(e){let t,n={};return e.length>0&&"object"==typeof e[e.length-1]?(n=e[e.length-1],t=Array.from(e).slice(0,e.length-1)):t=Array.from(e),[n,t]}class Xn{constructor(e){const t=e.zone||We.defaultZone;let n=e.invalid||(Number.isNaN(e.ts)?new Ce("invalid input"):null)||(t.isValid?null:On(t));this.ts=V(e.ts)?We.now():e.ts;let s=null,r=null;if(!n){if(e.old&&e.old.ts===this.ts&&e.old.zone.equals(t))[s,r]=[e.old.c,e.old.o];else{const e=t.offset(this.ts);s=Vn(this.ts,e),n=Number.isNaN(s.year)?new Ce("invalid input"):null,s=n?null:s,r=n?null:e}}this._zone=t,this.loc=e.loc||Ke.create(),this.invalid=n,this.weekData=null,this.c=s,this.o=r,this.isLuxonDateTime=!0}static now(){return new Xn({})}static local(){const[e,t]=Kn(arguments),[n,s,r,a,i,o,l]=t;return Yn({year:n,month:s,day:r,hour:a,minute:i,second:o,millisecond:l},e)}static utc(){const[e,t]=Kn(arguments),[n,s,r,a,i,o,l]=t;return e.zone=Oe.utcInstance,Yn({year:n,month:s,day:r,hour:a,minute:i,second:o,millisecond:l},e)}static fromJSDate(e,t={}){const n=(s=e,"[object Date]"===Object.prototype.toString.call(s)?e.valueOf():NaN);var s;if(Number.isNaN(n))return Xn.invalid("invalid input");const r=$e(t.zone,We.defaultZone);return r.isValid?new Xn({ts:n,zone:r,loc:Ke.fromObject(t)}):Xn.invalid(On(r))}static fromMillis(e,t={}){if(H(e))return e<-Nn||e>Nn?Xn.invalid("Timestamp out of range"):new Xn({ts:e,zone:$e(t.zone,We.defaultZone),loc:Ke.fromObject(t)});throw new c(`fromMillis requires a numerical input, but received a ${typeof e} with value ${e}`)}static fromSeconds(e,t={}){if(H(e))return new Xn({ts:1e3*e,zone:$e(t.zone,We.defaultZone),loc:Ke.fromObject(t)});throw new c("fromSeconds requires a numerical input")}static fromObject(e,t={}){e=e||{};const n=$e(t.zone,We.defaultZone);if(!n.isValid)return Xn.invalid(On(n));const s=We.now(),r=V(t.specificOffset)?n.offset(s):t.specificOffset,a=se(e,Jn),i=!V(a.ordinal),l=!V(a.year),c=!V(a.month)||!V(a.day),u=l||c,d=a.weekYear||a.weekNumber,h=Ke.fromObject(t);if((u||i)&&d)throw new o("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(c&&i)throw new o("Can't mix ordinal dates with month/day");const m=d||a.weekday&&!u;let f,g,y=Vn(s,r);m?(f=jn,g=zn,y=In(y)):i?(f=Gn,g=Rn,y=Dn(y)):(f=Un,g=Bn);let p=!1;for(const e of f){V(a[e])?a[e]=p?g[e]:y[e]:p=!0}const w=m?function(e){const t=_(e.weekYear),n=q(e.weekNumber,1,K(e.weekYear)),s=q(e.weekday,1,7);return t?n?!s&&Sn("weekday",e.weekday):Sn("week",e.week):Sn("weekYear",e.weekYear)}(a):i?function(e){const t=_(e.year),n=q(e.ordinal,1,J(e.year));return t?!n&&Sn("ordinal",e.ordinal):Sn("year",e.year)}(a):kn(a),v=w||Ln(a);if(v)return Xn.invalid(v);const S=m?Mn(a):i?xn(a):a,[b,T]=Hn(S,r,n),C=new Xn({ts:b,zone:n,o:T,loc:h});return a.weekday&&u&&e.weekday!==C.weekday?Xn.invalid("mismatched weekday",`you can't specify both a weekday of ${a.weekday} and a date of ${C.toISO()}`):C}static fromISO(e,t={}){const[n,s]=function(e){return tt(e,[xt,Nt],[kt,Ot],[Lt,Ft],[Et,$t])}(e);return An(n,s,t,"ISO 8601",e)}static fromRFC2822(e,t={}){const[n,s]=function(e){return tt(function(e){return e.replace(/\([^)]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").trim()}(e),[St,bt])}(e);return An(n,s,t,"RFC 2822",e)}static fromHTTP(e,t={}){const[n,s]=function(e){return tt(e,[Tt,Mt],[Ct,Mt],[It,Dt])}(e);return An(n,s,t,"HTTP",t)}static fromFormat(e,t,n={}){if(V(e)||V(t))throw new c("fromFormat requires an input string and a format");const{locale:s=null,numberingSystem:r=null}=n,a=Ke.fromOpts({locale:s,numberingSystem:r,defaultToEN:!0}),[i,o,l,u]=function(e,t,n){const{result:s,zone:r,specificOffset:a,invalidReason:i}=yn(e,t,n);return[s,r,a,i]}(a,e,t);return u?Xn.invalid(u):An(i,o,n,`format ${t}`,e,l)}static fromString(e,t,n={}){return Xn.fromFormat(e,t,n)}static fromSQL(e,t={}){const[n,s]=function(e){return tt(e,[Vt,Nt],[Ht,_t])}(e);return An(n,s,t,"SQL",e)}static invalid(e,t=null){if(!e)throw new c("need to specify a reason the DateTime is invalid");const n=e instanceof Ce?e:new Ce(e,t);if(We.throwOnInvalid)throw new r(n);return new Xn({invalid:n})}static isDateTime(e){return e&&e.isLuxonDateTime||!1}static parseFormatForOpts(e,t={}){const n=pn(e,Ke.fromObject(t));return n?n.map((e=>e?e.val:null)).join(""):null}static expandFormat(e,t={}){return gn(Te.parseFormat(e),Ke.fromObject(t)).map((e=>e.val)).join("")}get(e){return this[e]}get isValid(){return null===this.invalid}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}get locale(){return this.isValid?this.loc.locale:null}get numberingSystem(){return this.isValid?this.loc.numberingSystem:null}get outputCalendar(){return this.isValid?this.loc.outputCalendar:null}get zone(){return this._zone}get zoneName(){return this.isValid?this.zone.name:null}get year(){return this.isValid?this.c.year:NaN}get quarter(){return this.isValid?Math.ceil(this.c.month/3):NaN}get month(){return this.isValid?this.c.month:NaN}get day(){return this.isValid?this.c.day:NaN}get hour(){return this.isValid?this.c.hour:NaN}get minute(){return this.isValid?this.c.minute:NaN}get second(){return this.isValid?this.c.second:NaN}get millisecond(){return this.isValid?this.c.millisecond:NaN}get weekYear(){return this.isValid?Fn(this).weekYear:NaN}get weekNumber(){return this.isValid?Fn(this).weekNumber:NaN}get weekday(){return this.isValid?Fn(this).weekday:NaN}get ordinal(){return this.isValid?Dn(this.c).ordinal:NaN}get monthShort(){return this.isValid?Qt.months("short",{locObj:this.loc})[this.month-1]:null}get monthLong(){return this.isValid?Qt.months("long",{locObj:this.loc})[this.month-1]:null}get weekdayShort(){return this.isValid?Qt.weekdays("short",{locObj:this.loc})[this.weekday-1]:null}get weekdayLong(){return this.isValid?Qt.weekdays("long",{locObj:this.loc})[this.weekday-1]:null}get offset(){return this.isValid?+this.o:NaN}get offsetNameShort(){return this.isValid?this.zone.offsetName(this.ts,{format:"short",locale:this.locale}):null}get offsetNameLong(){return this.isValid?this.zone.offsetName(this.ts,{format:"long",locale:this.locale}):null}get isOffsetFixed(){return this.isValid?this.zone.isUniversal:null}get isInDST(){return!this.isOffsetFixed&&(this.offset>this.set({month:1,day:1}).offset||this.offset>this.set({month:5}).offset)}get isInLeapYear(){return G(this.year)}get daysInMonth(){return Y(this.year,this.month)}get daysInYear(){return this.isValid?J(this.year):NaN}get weeksInWeekYear(){return this.isValid?K(this.weekYear):NaN}resolvedLocaleOptions(e={}){const{locale:t,numberingSystem:n,calendar:s}=Te.create(this.loc.clone(e),e).resolvedOptions(this);return{locale:t,numberingSystem:n,outputCalendar:s}}toUTC(e=0,t={}){return this.setZone(Oe.instance(e),t)}toLocal(){return this.setZone(We.defaultZone)}setZone(e,{keepLocalTime:t=!1,keepCalendarTime:n=!1}={}){if((e=$e(e,We.defaultZone)).equals(this.zone))return this;if(e.isValid){let s=this.ts;if(t||n){const t=e.offset(this.ts),n=this.toObject();[s]=Hn(n,t,e)}return $n(this,{ts:s,zone:e})}return Xn.invalid(On(e))}reconfigure({locale:e,numberingSystem:t,outputCalendar:n}={}){return $n(this,{loc:this.loc.clone({locale:e,numberingSystem:t,outputCalendar:n})})}setLocale(e){return this.reconfigure({locale:e})}set(e){if(!this.isValid)return this;const t=se(e,Jn),n=!V(t.weekYear)||!V(t.weekNumber)||!V(t.weekday),s=!V(t.ordinal),r=!V(t.year),a=!V(t.month)||!V(t.day),i=r||a,l=t.weekYear||t.weekNumber;if((i||s)&&l)throw new o("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(a&&s)throw new o("Can't mix ordinal dates with month/day");let c;n?c=Mn({...In(this.c),...t}):V(t.ordinal)?(c={...this.toObject(),...t},V(t.day)&&(c.day=Math.min(Y(c.year,c.month),c.day))):c=xn({...Dn(this.c),...t});const[u,d]=Hn(c,this.o,this.zone);return $n(this,{ts:u,o:d})}plus(e){if(!this.isValid)return this;return $n(this,_n(this,Gt.fromDurationLike(e)))}minus(e){if(!this.isValid)return this;return $n(this,_n(this,Gt.fromDurationLike(e).negate()))}startOf(e){if(!this.isValid)return this;const t={},n=Gt.normalizeUnit(e);switch(n){case"years":t.month=1;case"quarters":case"months":t.day=1;case"weeks":case"days":t.hour=0;case"hours":t.minute=0;case"minutes":t.second=0;case"seconds":t.millisecond=0}if("weeks"===n&&(t.weekday=1),"quarters"===n){const e=Math.ceil(this.month/3);t.month=3*(e-1)+1}return this.set(t)}endOf(e){return this.isValid?this.plus({[e]:1}).startOf(e).minus(1):this}toFormat(e,t={}){return this.isValid?Te.create(this.loc.redefaultToEN(t)).formatDateTimeFromString(this,e):En}toLocaleString(e=f,t={}){return this.isValid?Te.create(this.loc.clone(t),e).formatDateTime(this):En}toLocaleParts(e={}){return this.isValid?Te.create(this.loc.clone(e),e).formatDateTimeParts(this):[]}toISO({format:e="extended",suppressSeconds:t=!1,suppressMilliseconds:n=!1,includeOffset:s=!0,extendedZone:r=!1}={}){if(!this.isValid)return null;const a="extended"===e;let i=Wn(this,a);return i+="T",i+=qn(this,a,t,n,s,r),i}toISODate({format:e="extended"}={}){return this.isValid?Wn(this,"extended"===e):null}toISOWeekDate(){return Pn(this,"kkkk-'W'WW-c")}toISOTime({suppressMilliseconds:e=!1,suppressSeconds:t=!1,includeOffset:n=!0,includePrefix:s=!1,extendedZone:r=!1,format:a="extended"}={}){if(!this.isValid)return null;return(s?"T":"")+qn(this,"extended"===a,t,e,n,r)}toRFC2822(){return Pn(this,"EEE, dd LLL yyyy HH:mm:ss ZZZ",!1)}toHTTP(){return Pn(this.toUTC(),"EEE, dd LLL yyyy HH:mm:ss 'GMT'")}toSQLDate(){return this.isValid?Wn(this,!0):null}toSQLTime({includeOffset:e=!0,includeZone:t=!1,includeOffsetSpace:n=!0}={}){let s="HH:mm:ss.SSS";return(t||e)&&(n&&(s+=" "),t?s+="z":e&&(s+="ZZ")),Pn(this,s,!0)}toSQL(e={}){return this.isValid?`${this.toSQLDate()} ${this.toSQLTime(e)}`:null}toString(){return this.isValid?this.toISO():En}valueOf(){return this.toMillis()}toMillis(){return this.isValid?this.ts:NaN}toSeconds(){return this.isValid?this.ts/1e3:NaN}toUnixInteger(){return this.isValid?Math.floor(this.ts/1e3):NaN}toJSON(){return this.toISO()}toBSON(){return this.toJSDate()}toObject(e={}){if(!this.isValid)return{};const t={...this.c};return e.includeConfig&&(t.outputCalendar=this.outputCalendar,t.numberingSystem=this.loc.numberingSystem,t.locale=this.loc.locale),t}toJSDate(){return new Date(this.isValid?this.ts:NaN)}diff(e,t="milliseconds",n={}){if(!this.isValid||!e.isValid)return Gt.invalid("created by diffing an invalid DateTime");const s={locale:this.locale,numberingSystem:this.numberingSystem,...n},r=(o=t,Array.isArray(o)?o:[o]).map(Gt.normalizeUnit),a=e.valueOf()>this.valueOf(),i=Xt(a?this:e,a?e:this,r,s);var o;return a?i.negate():i}diffNow(e="milliseconds",t={}){return this.diff(Xn.now(),e,t)}until(e){return this.isValid?Yt.fromDateTimes(this,e):this}hasSame(e,t){if(!this.isValid)return!1;const n=e.valueOf(),s=this.setZone(e.zone,{keepLocalTime:!0});return s.startOf(t)<=n&&n<=s.endOf(t)}equals(e){return this.isValid&&e.isValid&&this.valueOf()===e.valueOf()&&this.zone.equals(e.zone)&&this.loc.equals(e.loc)}toRelative(e={}){if(!this.isValid)return null;const t=e.base||Xn.fromObject({},{zone:this.zone}),n=e.padding?thise.valueOf()),Math.min)}static max(...e){if(!e.every(Xn.isDateTime))throw new c("max requires all arguments be DateTimes");return P(e,(e=>e.valueOf()),Math.max)}static fromFormatExplain(e,t,n={}){const{locale:s=null,numberingSystem:r=null}=n;return yn(Ke.fromOpts({locale:s,numberingSystem:r,defaultToEN:!0}),e,t)}static fromStringExplain(e,t,n={}){return Xn.fromFormatExplain(e,t,n)}static get DATE_SHORT(){return f}static get DATE_MED(){return g}static get DATE_MED_WITH_WEEKDAY(){return y}static get DATE_FULL(){return p}static get DATE_HUGE(){return w}static get TIME_SIMPLE(){return v}static get TIME_WITH_SECONDS(){return S}static get TIME_WITH_SHORT_OFFSET(){return b}static get TIME_WITH_LONG_OFFSET(){return T}static get TIME_24_SIMPLE(){return C}static get TIME_24_WITH_SECONDS(){return I}static get TIME_24_WITH_SHORT_OFFSET(){return M}static get TIME_24_WITH_LONG_OFFSET(){return D}static get DATETIME_SHORT(){return x}static get DATETIME_SHORT_WITH_SECONDS(){return k}static get DATETIME_MED(){return L}static get DATETIME_MED_WITH_SECONDS(){return E}static get DATETIME_MED_WITH_WEEKDAY(){return N}static get DATETIME_FULL(){return O}static get DATETIME_FULL_WITH_SECONDS(){return F}static get DATETIME_HUGE(){return $}static get DATETIME_HUGE_WITH_SECONDS(){return Z}}function es(e){if(Xn.isDateTime(e))return e;if(e&&e.valueOf&&H(e.valueOf()))return Xn.fromJSDate(e);if(e&&"object"==typeof e)return Xn.fromObject(e);throw new c(`Unknown datetime argument: ${e}, of type ${typeof e}`)}}},t={};function n(s){var r=t[s];if(void 0!==r)return r.exports;var a=t[s]={exports:{}};return e[s](a,a.exports,n),a.exports}n.d=(e,t)=>{for(var s in t)n.o(t,s)&&!n.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:t[s]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n(496),n(172),n(428),n(372),n(582),n(583),n(967),n(495),n(748),n(478),n(257),n(449),n(846);n(407)})(); \ No newline at end of file +(()=>{"use strict";var e={407:(e,t,n)=>{var s=n(929),r=n(739),a=n(325),i=n(594);document.addEventListener("DOMContentLoaded",(()=>{c()}));let o=!1;const l=["Land Features","Bay","Channel","Cove","Dam","Delta","Gulf","Lagoon","Lake","Ocean","Reef","Reservoir","Sea","Sound","Strait","Waterfall","Wharf","Amusement Park","Historical Monument","Landmark","Tourist Attraction","Zoo","College","Beach","Campground","Golf Course","Harbor","Nature Reserve","Other Parks and Outdoors","Park","Racetrack","Scenic Overlook","Ski Resort","Sports Center","Sports Field","Wildlife Reserve","Airport","Ferry","Marina","Pier","Port","Resort","Postal","Populated Place"].join(","),c=()=>{document.getElementById("txtAddress").addEventListener("focus",(e=>{e.target.select()})),(0,a.uL)(y),document.getElementById("NavigateMenu").addEventListener("click",g),document.getElementById("NavigateRefresh").addEventListener("click",w),document.getElementById("NavigateNext").addEventListener("click",v),document.getElementById("NavigatePrevious").addEventListener("click",S),document.getElementById("NavigatePlay").addEventListener("click",I),document.getElementById("ToggleFullScreen").addEventListener("click",h);const e=document.getElementById("btnGetGps");e.addEventListener("click",M),navigator.geolocation||(e.style.display="none"),document.getElementById("divTwc").addEventListener("click",(()=>{document.fullscreenElement&&T()})),document.addEventListener("keydown",C),document.addEventListener("touchmove",(e=>{o&&e.preventDefault()})),$("#frmGetLatLng #txtAddress").devbridgeAutocomplete({serviceUrl:"https://geocode.arcgis.com/arcgis/rest/services/World/GeocodeServer/suggest",deferRequestBy:300,paramName:"text",params:{f:"json",countryCode:"USA",category:l,maxSuggestions:10},dataType:"json",transformResult:e=>({suggestions:e.suggestions.map((e=>({value:e.text,data:e.magicKey})))}),minChars:3,showNoSuggestionNotice:!0,noSuggestionNotice:"No results found. Please try a different search string.",onSelect(e){u(e,this)},width:490}),$("#frmGetLatLng").on("submit",(()=>{const e=$("#frmGetLatLng #txtAddress").devbridgeAutocomplete();return e.suggestions[0]&&$(e.suggestionsContainer.children[0]).trigger("click"),!1}));const t=localStorage.getItem("latLonQuery"),n=localStorage.getItem("latLon"),s=localStorage.getItem("latLonFromGPS");if(t&&n&&!s){document.getElementById("txtAddress").value=t,y(JSON.parse(n))}s&&M();const r=localStorage.getItem("play");null!==r&&"true"!==r||x("navButton","play"),document.getElementById("btnClearQuery").addEventListener("click",(()=>{document.getElementById("spanCity").innerHTML="",document.getElementById("spanState").innerHTML="",document.getElementById("spanStationId").innerHTML="",document.getElementById("spanRadarId").innerHTML="",document.getElementById("spanZoneId").innerHTML="",document.getElementById("chkAutoRefresh").checked=!0,localStorage.removeItem("autoRefresh"),localStorage.removeItem("play"),x("navButton","play"),localStorage.removeItem("latLonQuery"),localStorage.removeItem("latLon"),localStorage.removeItem("latLonFromGPS"),document.getElementById("btnGetGps").classList.remove("active")})),document.getElementById("container").addEventListener("swiped-left",(()=>p("left"))),document.getElementById("container").addEventListener("swiped-right",(()=>p("right")))},u=async(e,t)=>{if(t.previousSuggestionValue===e.value)return;const n=(await(0,s.AV)("https://geocode.arcgis.com/arcgis/rest/services/World/GeocodeServer/find",{data:{text:e.value,magicKey:e.data,f:"json"}})).locations[0];n?(localStorage.removeItem("latLonFromGPS"),document.getElementById("btnGetGps").classList.remove("active"),d(n.feature.geometry)):console.error("An unexpected error occurred. Please try a different search string.")},d=(e,t)=>{const n={lat:(0,i.Xp)(e.y,4),lon:(0,i.Xp)(e.x,4)};localStorage.setItem("latLonQuery",document.getElementById("txtAddress").value),localStorage.setItem("latLon",JSON.stringify(n)),y(n,t)},h=()=>(document.fullscreenElement?f():m(),(0,a.yA)()?(0,r.Z)(!0):(0,r.Z)(!1),T(),!1),m=()=>{const e=document.getElementById("divTwc"),t=e.requestFullScreen||e.webkitRequestFullScreen||e.mozRequestFullScreen||e.msRequestFullscreen;t?t.call(e,{navigationUI:"hide"}):(window.scrollTo(0,0),o=!0),(0,a.SI)(),T();const n=document.getElementById("ToggleFullScreen");n.src="images/nav/ic_fullscreen_exit_white_24dp_1x.png",n.title="Exit fullscreen"},f=()=>{o&&(o=!1),document.exitFullscreen?document.exitFullscreen():document.webkitExitFullscreen?document.webkitExitFullscreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.msExitFullscreen&&document.msExitFullscreen(),(0,a.SI)();const e=document.getElementById("ToggleFullScreen");e.src="images/nav/ic_fullscreen_white_24dp_1x.png",e.title="Enter fullscreen"},g=()=>(x("navButton","menu"),T(),!1),y=(e,t)=>{e&&(y.latLon=e);const{latLon:n}=y;n&&(document.getElementById("txtAddress").blur(),(0,a.QE)(),(0,a.un)(n,t))},p=e=>{if("left"===e)v();else S()},w=()=>((0,a.HC)(),y(),T(),!1),v=()=>(x("navButton","next"),T(),!1),S=()=>(x("navButton","previous"),T(),!1);let b=null;const T=()=>{document.activeElement.blur(),document.getElementById("divTwcBottom").classList.remove("hidden"),document.getElementById("divTwcBottom").classList.add("visible"),b&&(clearTimeout(b),b=null),b=setTimeout((()=>{document.fullscreenElement&&(document.getElementById("divTwcBottom").classList.remove("visible"),document.getElementById("divTwcBottom").classList.add("hidden"))}),2e3)},C=e=>{const t=e.keyCode||e.which;if((Date.now()-C.lastButton??0)<200)return!1;if(C.lastButton=Date.now(),document.fullscreenElement||document.activeElement===document.body)switch(t){case 32:return I(),!1;case 39:case 34:return v(),!1;case 37:case 33:return S(),!1;case 36:return g(),!1;case 48:return w(),!1;case 70:return h(),!1}return!1},I=()=>(x("navButton","playToggle"),T(),!1),x=(e,t={})=>{(0,a.yw)({type:e,message:t})},M=async()=>{if(!navigator.geolocation)return;const e=document.getElementById("btnGetGps");if(e.classList.contains("active"))return e.classList.remove("active"),void localStorage.removeItem("latLonFromGPS");e.classList.add("active");const t=await(async()=>new Promise((e=>{navigator.geolocation.getCurrentPosition(e)})))(),{latitude:n,longitude:s}=t.coords,r=document.getElementById("txtAddress");r.value=`${(0,i.Xp)(n,4)}, ${(0,i.Xp)(s,4)}`,d({y:n,x:s},(e=>{console.log(e);const t=e.properties.relativeLocation.properties,a=`${t.city}, ${t.state}`;localStorage.setItem("latLon",JSON.stringify({lat:n,lon:s})),localStorage.setItem("latLonQuery",a),localStorage.setItem("latLonFromGPS",!0),r.value=`${t.city}, ${t.state}`}))}},428:(e,t,n)=>{n.d(t,{Z:()=>d});var s=n(138),r=n(732),a=n(38),i=n(159),o=n(325);class l extends i.Z{constructor(e,t){super(e,t,"Almanac",!0),this.backgroundImage0=(0,s.a)("images/BackGround3_1.png"),(0,s.b)("images/2/Full-Moon.gif"),(0,s.b)("images/2/Last-Quarter.gif"),(0,s.b)("images/2/New-Moon.gif"),(0,s.b)("images/2/First-Quarter.gif"),this.timing.totalScreens=1}async getData(e){if(!super.getData(e))return;const t=e??this.weatherParameters,{sun:n,moon:s}=this.calcSunMoonData(t);this.data={sun:n,moon:s},this.setStatus(a.ZP.loaded),this.getDataCallback()}calcSunMoonData(e){const t=[SunCalc.getTimes(new Date,e.latitude,e.longitude),SunCalc.getTimes(r.ou.local().plus({days:1}).toJSDate(),e.latitude,e.longitude)],n=[];let s=r.ou.local().minus({days:1}),{phase:a}=SunCalc.getMoonIllumination(s.toJSDate()),i=0;do{const e=a;s=s.plus({days:1}),a=SunCalc.getMoonIllumination(s.toJSDate()).phase,e<.25&&a>=.25&&n.push(this.getMoonTransition(.25,"First",s)),e<.5&&a>=.5&&n.push(this.getMoonTransition(.5,"Full",s)),e<.75&&a>=.75&&n.push(this.getMoonTransition(.75,"Last",s)),e>a&&n.push(this.getMoonTransition(0,"New",s)),i+=1}while(i<=30&&n.length<4);return{sun:t,moon:n}}getMoonTransition(e,t,n,s=0){let r=n,{phase:a}=SunCalc.getMoonIllumination(r.toJSDate()),i=0;const o={hours:0===s?-1:0,minutes:1===s?1:0,seconds:2===s?-1:0,milliseconds:3===s?1:0};let l=(t,n)=>t=e;s%2==0&&(l=(t,n)=>t>e&&n<=e);do{const n=a;if(r=r.plus(o),a=SunCalc.getMoonIllumination(r.toJSDate()).phase,a>.9&&(a-=1),l(n,a)){if(s>=3)break;return this.getMoonTransition(e,t,r,s+1)}i+=1}while(i<1e3);return{phase:t,date:r}}async drawCanvas(){super.drawCanvas();const e=this.data,t=r.ou.local(),n=t.plus({days:1});this.elem.querySelector(".day-1").innerHTML=t.toLocaleString({weekday:"long"}),this.elem.querySelector(".day-2").innerHTML=n.toLocaleString({weekday:"long"}),this.elem.querySelector(".rise-1").innerHTML=r.ou.fromJSDate(e.sun[0].sunrise).toLocaleString(r.ou.TIME_SIMPLE).toLowerCase(),this.elem.querySelector(".rise-2").innerHTML=r.ou.fromJSDate(e.sun[1].sunrise).toLocaleString(r.ou.TIME_SIMPLE).toLowerCase(),this.elem.querySelector(".set-1").innerHTML=r.ou.fromJSDate(e.sun[0].sunset).toLocaleString(r.ou.TIME_SIMPLE).toLowerCase(),this.elem.querySelector(".set-2").innerHTML=r.ou.fromJSDate(e.sun[1].sunset).toLocaleString(r.ou.TIME_SIMPLE).toLowerCase();const s=e.moon.map((e=>{const t={},n=e.date.toLocaleString({month:"short",day:"numeric"});return t.date=n,t.type=e.phase,t.icon={type:"img",src:c(e.phase)},this.fillTemplate("day",t)})),a=this.elem.querySelector(".moon .days");a.innerHTML="",a.append(...s),this.finishDraw()}async getSun(){return new Promise((e=>{this.data&&e(this.data),this.getDataCallbacks.push(e)}))}}const c=e=>{switch(e){case"Full":return"images/2/Full-Moon.gif";case"Last":return"images/2/Last-Quarter.gif";case"New":return"images/2/New-Moon.gif";default:return"images/2/First-Quarter.gif"}},u=new l(8,"almanac");(0,o.G1)(u);const d=u.getSun.bind(u)},172:(e,t,n)=>{n.d(t,{Z:()=>y});var s=n(38),r=n(138),a=n(929),i=n(791),o=n(206),l=n(372),c=n(159),u=n(325),d=n(594);const h=["U","C","H","W","Y","T","S","M","O","L","A","F","B","N","V","R","D","E","I","G","J"];class m extends c.Z{constructor(e,t){super(e,t,"Current Conditions",!0),this.backgroundImage=(0,r.a)("images/BackGround1_1.png")}async getData(e){const t=super.getData(e),n=(e??this.weatherParameters).stations.filter((e=>4===e?.properties?.stationIdentifier?.length&&!h.includes(e.properties.stationIdentifier.slice(0,1))));let i,o,c=0;for(;!i&&cthis.stillWaiting()}),null===i.features[0].properties.temperature.value||null===i.features[0].properties.windSpeed.value||null===i.features[0].properties.textDescription)throw i=void 0,new Error(`Unable to get observations: ${o.properties.stationIdentifier}, trying next station`)}catch(e){console.error(e)}}if(!i)return console.error("All current weather stations exhausted"),this.enabled&&this.setStatus(s.ZP.failed),void this.getDataCallback(void 0);this.data={...i,station:o},this.getDataCallback(),t&&((0,r.b)((0,l.H8)(i.features[0].properties.icon)),this.setStatus(s.ZP.loaded))}parseData(){if(!this.data)return!1;const e={},t=this.data.features[0].properties;e.observations=t,e.Temperature=Math.round(t.temperature.value),e.TemperatureUnit="C",e.DewPoint=Math.round(t.dewpoint.value),e.Ceiling=Math.round(t.cloudLayers[0]?.base?.value??0),e.CeilingUnit="m.",e.Visibility=Math.round(t.visibility.value/1e3),e.VisibilityUnit=" km.",e.WindSpeed=Math.round(t.windSpeed.value),e.WindDirection=(0,i.mt)(t.windDirection.value),e.Pressure=Math.round(t.barometricPressure.value),e.HeatIndex=Math.round(t.heatIndex.value),e.WindChill=Math.round(t.windChill.value),e.WindGust=Math.round(t.windGust.value),e.WindUnit="KPH",e.Humidity=Math.round(t.relativeHumidity.value),e.Icon=(0,l.H8)(t.icon),e.PressureDirection="",e.TextConditions=t.textDescription,e.station=this.data.station;const n=t.barometricPressure.value-this.data.features[1].properties.barometricPressure.value;return n>150&&(e.PressureDirection="R"),n<-150&&(e.PressureDirection="F"),e.Temperature=(0,d.NE)(e.Temperature),e.TemperatureUnit="F",e.DewPoint=(0,d.NE)(e.DewPoint),e.Ceiling=100*Math.round((0,d.AD)(e.Ceiling)/100),e.CeilingUnit="ft.",e.Visibility=(0,d.dp)(t.visibility.value/1e3),e.VisibilityUnit=" mi.",e.WindSpeed=(0,d.Kh)(e.WindSpeed),e.WindUnit="MPH",e.Pressure=(0,d.MO)(e.Pressure).toFixed(2),e.HeatIndex=(0,d.NE)(e.HeatIndex),e.WindChill=(0,d.NE)(e.WindChill),e.WindGust=(0,d.Kh)(e.WindGust),e}async drawCanvas(){super.drawCanvas();const e={},t=this.parseData();e.temp=t.Temperature+String.fromCharCode(176);let n=t.observations.textDescription;n.length>15&&(n=f(n)),e.condition=n,e.wind=t.WindDirection.padEnd(3,"")+t.WindSpeed.toString().padStart(3," "),t.WindGust&&(e["wind-gusts"]=`Gusts to ${t.WindGust}`),e.location=(0,o.a)(this.data.station.properties.name).substr(0,20),e.humidity=`${t.Humidity}%`,e.dewpoint=t.DewPoint+String.fromCharCode(176),e.ceiling=0===t.Ceiling?"Unlimited":t.Ceiling+t.CeilingUnit,e.visibility=t.Visibility+t.VisibilityUnit,e.pressure=`${t.Pressure} ${t.PressureDirection}`,t.observations.heatIndex.value&&t.HeatIndex!==t.Temperature?(e["heat-index-label"]="Heat Index:",e["heat-index"]=t.HeatIndex+String.fromCharCode(176)):t.observations.windChill.value&&""!==t.WindChill&&t.WindChill{this.data&&e(this.parseData()),this.getDataCallbacks.push((()=>e(this.parseData())))}))}}const f=e=>{let t=e;return t=t.replace(/Light/g,"L"),t=t.replace(/Heavy/g,"H"),t=t.replace(/Partly/g,"P"),t=t.replace(/Mostly/g,"M"),t=t.replace(/Few/g,"F"),t=t.replace(/Thunderstorm/g,"T'storm"),t=t.replace(/ in /g,""),t=t.replace(/Vicinity/g,""),t=t.replace(/ and /g," "),t=t.replace(/Freezing Rain/g,"Frz Rn"),t=t.replace(/Freezing/g,"Frz"),t=t.replace(/Unknown Precip/g,""),t=t.replace(/L Snow Fog/g,"L Snw/Fog"),t=t.replace(/ with /g,"/"),t},g=new m(0,"current-weather");(0,u.G1)(g);const y=g.getCurrentWeather.bind(g)},496:(e,t,n)=>{var s=n(206),r=n(946),a=n(172),i=n(325);const o=String.fromCharCode(176);let l,c=0;const u=()=>{const e=(0,i.Dw)();e?.okToDrawCurrentConditions?(c=(c+1)%h.length,d()):"progress"===e?.elemId&&(c=0)},d=async()=>{const e=await(0,a.Z)((()=>(void 0).stillWaiting()));e&&m(h[c](e))},h=[e=>`Conditions at ${(0,s.a)(e.station.properties.name).substr(0,20)}`,e=>{let t=`Temp: ${e.Temperature}${o}${e.TemperatureUnit}`;return e.observations.heatIndex.value?t+=` Heat Index: ${e.HeatIndex}${o}${e.TemperatureUnit}`:e.observations.windChill.value&&(t+=` Wind Chill: ${e.WindChill}${o}${e.TemperatureUnit}`),t},e=>`Humidity: ${e.Humidity}% Dewpoint: ${e.DewPoint}${o}${e.TemperatureUnit}`,e=>`Barometric Pressure: ${e.Pressure} ${e.PressureDirection}`,e=>{let t="";return t=e.WindSpeed>0?`Wind: ${e.WindDirection} ${e.WindSpeed} ${e.WindUnit}`:"Wind: Calm",e.WindGust>0&&(t+=` Gusts to ${e.WindGust}`),t},e=>`Visib: ${e.Visibility} ${e.VisibilityUnit} Ceiling: ${0===e.Ceiling?"Unlimited":`${e.Ceiling} ${e.CeilingUnit}`}`],m=e=>{(0,r.T)(".weather-display .scroll .fixed",(t=>{t.innerHTML=e}))};document.addEventListener("DOMContentLoaded",(()=>{l||(l=setInterval(u,4e3)),d()}))},582:(e,t,n)=>{var s=n(38),r=n(929),a=n(732),i=n(372),o=n(138),l=n(159),c=n(325);class u extends l.Z{constructor(e,t){super(e,t,"Extended Forecast",!0),this.timing.totalScreens=2}async getData(e){if(!super.getData(e))return;const t=e??this.weatherParameters;let n;try{n=await(0,r.AV)(t.forecast,{data:{units:"us"},retryCount:3,stillWaiting:()=>this.stillWaiting()})}catch(e){return console.error("Unable to get extended forecast"),console.error(e.status,e.responseJSON),void this.setStatus(s.ZP.failed)}this.data=d(n.properties.periods),this.screenIndex=0,this.setStatus(s.ZP.loaded)}async drawCanvas(){super.drawCanvas();const e=this.data.slice(0+3*this.screenIndex,3+3*this.screenIndex).map((e=>{const t={};t.date=e.dayName;const{low:n}=e;void 0!==n&&(t["value-lo"]=Math.round(n));const{high:s}=e;return t["value-hi"]=Math.round(s),t.condition=e.text,t.icon={type:"img",src:e.icon},this.fillTemplate("day",t)})),t=this.elem.querySelector(".day-container");t.innerHTML="",t.append(...e),this.finishDraw()}}const d=e=>{const t=[0,1,2,3,4,5,6].map((e=>a.ou.local().startOf("day").plus({days:e}).toLocaleString({weekday:"short"})));let n=0;const s=[];return e.forEach((e=>{s[n]||s.push({dayName:"",low:void 0,high:void 0,text:void 0,icon:void 0});const r=s[n];r.icon=(0,i.H8)(e.icon),r.text=h(e.shortForecast),r.dayName=t[n],(0,o.b)(r.icon),e.isDaytime?(r.high=e.temperature,n+=1):r.low=e.temperature})),s},h=e=>{const t=[[/ and /gi," "],[/Slight /gi,""],[/Chance /gi,""],[/Very /gi,""],[/Patchy /gi,""],[/Areas /gi,""],[/Dense /gi,""],[/Thunderstorm/g,"T'Storm"]].reduce(((e,[t,n])=>e.replace(t,n)),e);let n=t.split(" ");-1!==t.indexOf("then")&&(n=t.split(" then "),n=n[1].split(" "));let s=n[0].substr(0,10),r="";n[1]&&(s.endsWith(".")?s=s.replace(/\./,""):r=n[1].substr(0,10),"Blowing"===r&&(r=""));let a=s;return""!==r&&(a+=` ${r}`),a};(0,c.G1)(new u(7,"extended-forecast"))},967:(e,t,n)=>{var s=n(38),r=n(583),a=n(159),i=n(325),o=n(732);class l extends a.Z{constructor(e,t,n){super(e,t,"Hourly Graph",n),document.addEventListener("DOMContentLoaded",(()=>{this.moveHeader()}))}moveHeader(){const e=this.fillTemplate("top-right",{});this.elem.querySelector(".header .right").append(e)}async getData(){if(!super.getData())return;const e=await(0,r.Z)((()=>this.stillWaiting()));if(void 0===e)return void this.setStatus(s.ZP.failed);const t=e.map((e=>e.temperature)),n=e.map((e=>e.probabilityOfPrecipitation)),a=e.map((e=>e.skyCover));this.data={skyCover:a,temperature:t,probabilityOfPrecipitation:n},this.setStatus(s.ZP.loaded)}drawCanvas(){this.image||(this.image=this.elem.querySelector(".chart img"));const e=285;this.image.width=532,this.image.height=e;const t=document.createElement("canvas");t.width=532,t.height=e;const n=t.getContext("2d");n.imageSmoothingEnabled=!1;const s=c(0,5,this.data.temperature.length-1,532),r=o.ou.now().startOf("hour");document.querySelector(".x-axis .l-1").innerHTML=h(r),document.querySelector(".x-axis .l-2").innerHTML=h(r.plus({hour:6})),document.querySelector(".x-axis .l-3").innerHTML=h(r.plus({hour:12})),document.querySelector(".x-axis .l-4").innerHTML=h(r.plus({hour:18})),document.querySelector(".x-axis .l-5").innerHTML=h(r.plus({hour:24}));const a=c(0,275,100,10),i=u(this.data.skyCover,s,a);d(i,n,{strokeStyle:"lightgrey",lineWidth:3});const l=u(this.data.probabilityOfPrecipitation,s,a);d(l,n,{strokeStyle:"aqua",lineWidth:3});const m=Math.min(...this.data.temperature),f=Math.max(...this.data.temperature),g=Math.round((m+f)/2),y=c(m,275,f,10),p=u(this.data.temperature,s,y);d(p,n,{strokeStyle:"red",lineWidth:3});const w=String.fromCharCode(176);this.elem.querySelector(".y-axis .l-1").innerHTML=(f+w).substring(0,3),this.elem.querySelector(".y-axis .l-2").innerHTML=(g+w).substring(0,3),this.elem.querySelector(".y-axis .l-3").innerHTML=(m+w).substring(0,3),this.image.src=t.toDataURL(),super.drawCanvas(),this.finishDraw()}}const c=(e,t,n,s)=>{const r=(s-t)/(n-e),a=t-r*e;return e=>r*e+a},u=(e,t,n)=>e.map(((e,s)=>[t(s),n(e)])),d=(e,t,n)=>{t.beginPath(),t.strokeStyle="black",t.lineWidth=(n?.lineWidth??2)+2,t.moveTo(e[0][0],e[0][1]),e.slice(1).forEach((e=>t.lineTo(e[0],e[1]+2))),t.stroke(),t.beginPath(),t.strokeStyle=n?.strokeStyle??"red",t.lineWidth=n?.lineWidth??2,t.moveTo(e[0][0],e[0][1]),e.slice(1).forEach((e=>t.lineTo(e[0],e[1]))),t.stroke()},h=e=>e.toFormat("ha").slice(0,-1);(0,i.G1)(new l(3,"hourly-graph"))},583:(e,t,n)=>{n.d(t,{Z:()=>p});var s=n(38),r=n(732),a=n(929),i=n(594),o=n(372),l=n(791),c=n(159),u=n(325),d=n(428);class h extends c.Z{constructor(e,t,n){super(e,t,"Hourly Forecast",n),this.timing.baseDelay=20;this.timing.delay=[450];for(let e=0;e<4;e+=1)this.timing.delay.push(300);this.timing.delay.push(150)}async getData(e){const t=super.getData(e);let n;try{n=await(0,a.AV)(e.forecastGridData,{retryCount:3,stillWaiting:()=>this.stillWaiting()})}catch(e){return console.error("Get hourly forecast failed"),console.error(e.status,e.responseJSON),this.enabled&&this.setStatus(s.ZP.failed),void this.getDataCallback(void 0)}this.data=await m(n.properties),this.getDataCallback(),t&&(this.setStatus(s.ZP.loaded),this.drawLongCanvas())}async drawLongCanvas(){const e=this.elem.querySelector(".hourly-lines");e.innerHTML="";const t=r.ou.local(),n=this.data.map(((e,n)=>{const s={},r=t.plus({hours:n}).toLocaleString({weekday:"short",hour:"numeric"});s.hour=r;const a=Math.round(e.temperature).toString().padStart(3),i=Math.round(e.apparentTemperature).toString().padStart(3);s.temp=a,a!==i&&(s.like=i);let o="Calm";if(e.windSpeed>0){const t=Math.round(e.windSpeed).toString();o=e.windDirection+Array(6-e.windDirection.length-t.length).join(" ")+t}return s.wind=o,s.icon={type:"img",src:e.icon},this.fillTemplate("hourly-row",s)}));e.append(...n)}drawCanvas(){super.drawCanvas(),this.finishDraw()}showCanvas(){this.drawCanvas(),super.showCanvas()}screenIndexChange(){this.baseCountChange(this.navBaseCount)}baseCountChange(e){let t=Math.min(this.elem.querySelector(".hourly-lines").getBoundingClientRect().height-289,e-150);t<0&&(t=0),this.elem.querySelector(".main").scrollTo(0,t)}async getCurrentData(e){return e&&this.stillWaitingCallbacks.push(e),new Promise((e=>{this.data&&e(this.data),this.getDataCallbacks.push((()=>e(this.data)))}))}}const m=async e=>{const t=g(e.temperature.values),n=g(e.apparentTemperature.values),s=g(e.windSpeed.values),r=g(e.windDirection.values),a=g(e.skyCover.values),o=g(e.weather.values),c=g(e.iceAccumulation.values),u=g(e.probabilityOfPrecipitation.values),d=g(e.snowfallAmount.values),h=await f(a,o,c,u,d,s);return t.map(((e,o)=>({temperature:(0,i.NE)(t[o]),apparentTemperature:(0,i.NE)(n[o]),windSpeed:(0,i.dp)(s[o]),windDirection:(0,l.mt)(r[o]),probabilityOfPrecipitation:u[o],skyCover:a[o],icon:h[o]})))},f=async(e,t,n,s,a,i)=>{const l=r.ou.local().startOf("hour"),c=(await(0,d.Z)()).sun,u=r.Xp.fromDateTimes(r.ou.fromJSDate(c[0].sunset),r.ou.fromJSDate(c[1].sunrise)),h=r.ou.fromJSDate(c[1].sunset);return e.map(((r,c)=>{const d=l.plus({hours:c}),m=u.contains(d)||d>h;return(0,o.V6)(e[c],t[c],n[c],s[c],a[c],i[c],m)}))},g=e=>{const t=r.ou.utc().startOf("hour").toMillis(),n=[];return e.forEach((e=>{let s=Date.parse(e.validTime.substr(0,e.validTime.indexOf("/")));const a=s+r.nL.fromISO(e.validTime.substr(e.validTime.indexOf("/")+1)).shiftTo("milliseconds").values.milliseconds;do{s>=t&&n.length<24&&n.push(e.value),s+=36e5}while(s{n.d(t,{H8:()=>r,V6:()=>a,gD:()=>s});const s=(e,t)=>{const n=t??e.indexOf("/night/")>=0,s=e=>`images/r/${e}`;let r=e.toLowerCase().match(/[^/]+$/)[0].match(/(.*?)[,?&.]/)[1];const a=+(e.match(/,(\d{2,3})/)??[0,100])[1];if("dualimage"===r){const t=e.match(/&j=(.*)&/);[,r]=t}switch(r+(n?"-n":"")){case"skc":case"hot":case"haze":return s("Sunny.gif");case"skc-n":case"nskc":case"nskc-n":case"cold-n":return s("Clear-1992.gif");case"bkn":return s("Mostly-Cloudy-1994-2.gif");case"bkn-n":case"few-n":case"nfew-n":case"nfew":return s("Partly-Clear-1994-2.gif");case"sct":case"few":return s("Partly-Cloudy.gif");case"sct-n":case"nsct":case"nsct-n":return s("Mostly-Clear.gif");case"ovc":case"ovc-n":return s("Cloudy.gif");case"fog":case"fog-n":return s("Fog.gif");case"rain_sleet":case"sleet":case"sleet-n":return s("Sleet.gif");case"rain_showers":case"rain_showers_high":return s("Scattered-Showers-1994-2.gif");case"rain_showers-n":case"rain_showers_high-n":return s("Scattered-Showers-Night-1994-2.gif");case"rain":case"rain-n":return s("Rain-1992.gif");case"snow":case"snow-n":return s(a>50?"Heavy-Snow-1994-2.gif":"Light-Snow.gif");case"rain_snow":return s("Rain-Snow-1992.gif");case"snow_fzra":case"snow_fzra-n":return s("Freezing-Rain-Snow-1992.gif");case"fzra":case"fzra-n":return s("Freezing-Rain-1992.gif");case"snow_sleet":case"snow_sleet-n":return s("Snow and Sleet.gif");case"tsra_sct":case"tsra":return s("Scattered-Tstorms-1994-2.gif");case"tsra_sct-n":case"tsra-n":return s("Scattered-Tstorms-Night-1994-2.gif");case"tsra_hi":case"tsra_hi-n":case"hurricane":case"tropical_storm":return s("Thunderstorm.gif");case"wind_few":case"wind_sct":case"wind_bkn":case"wind_ovc":return s("Wind.gif");case"wind_skc":return s("Sunny-Wind-1994.gif");case"wind_skc-n":case"wind_sct-n":return s("Clear-Wind-1994.gif");case"blizzard":return s("Blowing Snow.gif");case"cold":return s("cold.gif");default:return console.log(`Unable to locate regional icon for ${r} ${e} ${n}`),!1}},r=(e,t)=>{if(!e)return!1;const n=e=>`images/${e}`,s=t??e.indexOf("/night/")>=0;let r=e.toLowerCase().match(/[^/]+$/)[0].match(/(.*?)[,?&.]/)[1];const a=+(e.match(/,(\d{2,3})/)??[0,100])[1];if("dualimage"===r){const t=e.match(/&j=(.*)&/);[,r]=t}switch(r+(s?"-n":"")){case"skc":case"hot":case"haze":case"cold":return n("CC_Clear1.gif");case"skc-n":case"nskc":case"nskc-n":case"cold-n":return n("CC_Clear0.gif");case"sct":case"few":case"bkn":return n("CC_PartlyCloudy1.gif");case"bkn-n":case"few-n":case"nfew-n":case"nfew":case"sct-n":case"nsct":case"nsct-n":return n("CC_PartlyCloudy0.gif");case"ovc":case"novc":case"ovc-n":return n("CC_Cloudy.gif");case"fog":case"fog-n":return n("CC_Fog.gif");case"rain_sleet":return n("Sleet.gif");case"rain_showers":case"rain_showers_high":case"rain_showers-n":case"rain_showers_high-n":return n("CC_Showers.gif");case"rain":case"rain-n":return n("CC_Rain.gif");case"snow":case"snow-n":return n(a>50?"CC_Snow.gif":"CC_SnowShowers.gif");case"rain_snow":return n("CC_RainSnow.gif");case"snow_fzra":case"snow_fzra-n":case"fzra":case"fzra-n":return n("CC_FreezingRain.gif");case"snow_sleet":return n("Snow-Sleet.gif");case"tsra_sct":case"tsra":return n("EF_ScatTstorms.gif");case"tsra_sct-n":case"tsra-n":case"tsra_hi":case"tsra_hi-n":case"hurricane":case"tropical_storm":return n("CC_TStorm.gif");case"wind_few":case"wind_sct":case"wind_bkn":case"wind_ovc":case"wind_skc":case"wind_skc-n":case"wind_sct-n":return n("CC_Windy.gif");case"blizzard":return n("Blowing-Snow.gif");default:return console.log(`Unable to locate icon for ${r} ${e} ${s}`),!1}},a=(e,t,n,s,r,a,i=!1)=>{const o=e=>`images/r/${e}`;let l=!1,c=!1,u=!1,d=!1,h=!1;return t.forEach((e=>{e.weather&&(e.weather.toLowerCase().includes("thunder")&&(l=!0),e.weather.toLowerCase().includes("snow")&&(c=!0),e.weather.toLowerCase().includes("ice")&&(u=!0),e.weather.toLowerCase().includes("fog")&&(d=!0),e.weather.toLowerCase().includes("wind")&&(h=!0))})),o(n>0||u?"Freezing-Rain-1992.gif":r>10?a>30||h?"Blowing Snow.gif":"Heavy-Snow-1994.gif":(r>0||c)&&l?"ThunderSnow.gif":r>0||c?"Light-Snow.gif":l?"Thunderstorm.gif":s>70?"Rain-1992.gif":s>50?"Shower.gif":s>30?i?"Scattered-Showers-Night.gif":"Scattered-Showers-1994.gif":d?"Fog.gif":e>70?"Cloudy.gif":e>50?i?"Partly-Clear-1994.gif":"Mostly-Cloudy-1994.gif":e>30?i?"Mostly-Clear.gif":"Partly-Cloudy.gif":i?"Clear-1992.gif":"Sunny.gif")}},495:(e,t,n)=>{var s=n(791),r=n(929),a=n(38),i=n(206),o=n(594),l=n(159),c=n(325);class u extends l.Z{constructor(e,t){super(e,t,"Latest Observations",!0),this.MaximumRegionalStations=7}async getData(e){if(!super.getData(e))return;const t=e??this.weatherParameters,n=Object.keys(StationInfo).map((e=>{const n=StationInfo[e],r=(0,s.TE)(n.lat,n.lon,t.latitude,t.longitude);return{...n,distance:r}})).sort(((e,t)=>e.distance-t.distance)).slice(0,30),i=(await Promise.all(n.map((async e=>{try{const t=await(0,r.AV)(`https://api.weather.gov/stations/${e.id}/observations/latest`,{retryCount:3,stillWaiting:()=>this.stillWaiting()});return null!==t.properties.temperature.value&&""!==t.properties.textDescription&&null!==t.properties.windSpeed.value&&{...t.properties,StationId:e.id,city:e.city}}catch(t){return console.log(`Unable to get latest observations for ${e.id}`),!1}})))).filter((e=>e));this.data=i.slice(0,this.MaximumRegionalStations),this.data.length<1?this.setStatus(a.ZP.noData):this.setStatus(a.ZP.loaded)}async drawCanvas(){super.drawCanvas();const e=this.data.sort(((e,t)=>e.Name{const t=(0,s.mt)(e.windDirection.value),n=Math.round((0,o.NE)(e.temperature.value)),r=Math.round((0,o.Kh)(e.windSpeed.value)),a={};return a.location=(0,i.a)(e.city).substr(0,14),a.temp=n,a.weather=d(e.textDescription).substr(0,9),a.wind=r>0?t+Array(6-t.length-r.toString().length).join(" ")+r.toString():"NA"===r?"NA":"Calm",this.fillTemplate("observation-row",a)})),n=this.elem.querySelector(".observation-lines");n.innerHTML="",n.append(...t),this.finishDraw()}}const d=e=>{let t=e;return t=t.replace(/Light/,"L"),t=t.replace(/Heavy/,"H"),t=t.replace(/Partly/,"P"),t=t.replace(/Mostly/,"M"),t=t.replace(/Few/,"F"),t=t.replace(/Thunderstorm/,"T'storm"),t=t.replace(/ in /,""),t=t.replace(/Vicinity/,""),t=t.replace(/ and /," "),t=t.replace(/Freezing Rain/,"Frz Rn"),t=t.replace(/Freezing/,"Frz"),t=t.replace(/Unknown Precip/,""),t=t.replace(/L Snow Fog/,"L Snw/Fog"),t=t.replace(/ with /,"/"),t};(0,c.G1)(new u(1,"latest-observations"))},748:(e,t,n)=>{var s=n(38),r=n(929),a=n(159),i=n(325);class o extends a.Z{constructor(e,t){super(e,t,"Local Forecast",!0),this.timing.baseDelay=5e3}async getData(e){if(!super.getData(e))return;const t=e??this.weatherParameters,n=await this.getRawData(t);if(!n)return void this.setStatus(s.ZP.failed);const r=l(n);this.screenTexts=r.map((e=>{let t=`${e.DayName.toUpperCase()}...`;return t+=e.Text.toUpperCase().replace("..."," "),t}));const a=this.screenTexts.map((e=>this.fillTemplate("forecast",{text:e}))),i=this.elem.querySelector(".forecasts");i.innerHTML="",i.append(...a),this.pageHeight=i.parentNode.getBoundingClientRect().height,a.forEach((e=>{const t=Math.ceil(e.scrollHeight/this.pageHeight)*this.pageHeight;e.style.height=`${t}px`})),this.timing.totalScreens=i.scrollHeight/this.pageHeight,this.calcNavTiming(),this.setStatus(s.ZP.loaded)}async getRawData(e){try{return await(0,r.AV)(e.forecast,{data:{units:"us"},retryCount:3,stillWaiting:()=>this.stillWaiting()})}catch(t){return console.error(`GetWeatherForecast failed: ${e.forecast}`),console.error(t.status,t.responseJSON),this.setStatus(s.ZP.failed),!1}}async drawCanvas(){super.drawCanvas();const e=-this.screenIndex*this.pageHeight;this.elem.querySelector(".forecasts").style.top=`${e}px`,this.finishDraw()}}const l=e=>e.properties.periods.slice(0,6).map((e=>({DayName:e.name.toUpperCase(),Text:e.detailedForecast})));(0,i.G1)(new o(6,"local-forecast"))},325:(e,t,n)=>{n.d(t,{Dw:()=>M,G1:()=>O,Gw:()=>$,HC:()=>N,Nf:()=>p,Pl:()=>T,QE:()=>A,SI:()=>E,WI:()=>b,nI:()=>L,uL:()=>B,un:()=>H,yA:()=>S,yw:()=>y});var s=n(739),r=n(38),a=n(791),i=n(929),o=n(735);document.addEventListener("DOMContentLoaded",(()=>{g()}));const l=[];let c,u=!1;const d={},h=6e5;let m=null,f=0;const g=async()=>{window.addEventListener("resize",E),E();const e=localStorage.getItem("TwcAutoRefresh");document.getElementById("chkAutoRefresh").checked=!e||"true"===e,document.getElementById("chkAutoRefresh").addEventListener("change",Z),F()},y=e=>{if(e.type)if("navButton"===e.type)k(e.message);else console.error(`Unknown event ${e.type}`)},p=e=>{if(e.id<0)return;if(!c)return;c.drawCanvas(l,w());const t=l.findIndex((e=>e.enabled));S()&&e.id===t&&e.status===r.ZP.loaded&&C(b.command.firstFrame),w()l.reduce(((e,t)=>t.status!==r.ZP.loading?e+1:e),0),v=()=>{l.forEach((e=>e.hideCanvas()))},S=()=>u,b={response:{previous:Symbol("previous"),inProgress:Symbol("inProgress"),next:Symbol("next")},command:{firstFrame:Symbol("firstFrame"),previousFrame:Symbol("previousFrame"),nextFrame:Symbol("nextFrame"),lastFrame:Symbol("lastFrame")}},T=e=>{e.type===b.response.previous&&I(-1),e.type===b.response.next&&I(1)},C=e=>{const t=M();if(c.hideCanvas(),t)e===b.command.nextFrame&&M().navNext(),e===b.command.previousFrame&&M().navPrev();else{let e,t=0;do{l[t].status===r.ZP.loaded&&(e=l[t]),t+=1}while(!e&&t{const t=l.length,n=x();let s;for(let i=0;i0&&i.showCanvas(b.command.firstFrame)},x=()=>l.findIndex((e=>e.isActive())),M=()=>l[x()],D=e=>{u=e;const t=document.getElementById("NavigatePlay");localStorage.setItem("TwcPlay",u),u?((0,s.Z)(!0),t.title="Pause",t.src="images/nav/ic_pause_white_24dp_1x.png"):((0,s.Z)(!1),t.title="Play",t.src="images/nav/ic_play_arrow_white_24dp_1x.png"),c&&u&&!M()&&C(b.command.firstFrame)},k=e=>{switch(e){case"play":D(!0);break;case"playToggle":D(!u);break;case"stop":D(!1);break;case"next":D(!1),C(b.command.nextFrame);break;case"previous":D(!1),C(b.command.previousFrame);break;case"menu":D(!1),c.showCanvas(),v();break;default:console.error(`Unknown navButton ${e}`)}},L=e=>l[e],E=()=>{const e=document.fullscreenElement?0:16,t=(window.innerWidth-e)/640,n=(window.innerHeight-e)/480,s=Math.min(t,n);s<1||document.fullscreenElement?document.getElementById("container").style.zoom=s:document.getElementById("container").style.zoom=1},N=()=>{l.forEach((e=>{e.status=r.ZP.loading}))},O=e=>{l[e.navId]=e,F()},F=()=>{const e=document.getElementById("enabledDisplays");if(!e)return;const t=l.map((e=>e.generateCheckbox(e.defaultEnabled))).filter((e=>e));e.innerHTML="",e.append(...t)},$=e=>{c=e},P=e=>{document.getElementById("spanCity").innerHTML=`${e.city}, `,document.getElementById("spanState").innerHTML=e.state,document.getElementById("spanStationId").innerHTML=e.stationId,document.getElementById("spanRadarId").innerHTML=e.radarId,document.getElementById("spanZoneId").innerHTML=e.zoneId},Z=e=>{const{checked:t}=e.target;t?_():A(),localStorage.setItem("TwcAutoRefresh",t)},V=e=>{e?(document.getElementById("spanLastRefresh").innerHTML=e.toLocaleString("en-US",{weekday:"short",month:"short",day:"numeric",year:"numeric",hour:"numeric",minute:"numeric",second:"numeric",timeZoneName:"short"}),document.getElementById("chkAutoRefresh").checked&&_()):document.getElementById("spanLastRefresh").innerHTML="(none)"},H=(e,t)=>{(async(e,t)=>{const n=await(0,o.F)(e.lat,e.lon);"function"==typeof t&&t(n);const s=await(0,i.AV)(n.properties.observationStations),r=s.features[0].properties.stationIdentifier;let{city:a}=n.properties.relativeLocation.properties;r in StationInfo&&(a=StationInfo[r].city,[a]=a.split("/")),d.latitude=e.lat,d.longitude=e.lon,d.zoneId=n.properties.forecastZone.substr(-6),d.radarId=n.properties.radarStation.substr(-3),d.stationId=r,d.weatherOffice=n.properties.cwa,d.city=a,d.state=n.properties.relativeLocation.properties.state,d.timeZone=n.properties.relativeLocation.properties.timeZone,d.forecast=n.properties.forecast,d.forecastGridData=n.properties.forecastGridData,d.stations=s.features,P(d),v(),document.getElementById("loading").style.display="none",c&&(await c.drawCanvas(),c.showCanvas()),l.forEach((e=>e.getData(d)))})(e,t),V(null)},_=()=>{if(m)return;f=0;const e=()=>{f+=500;let e=h-f;e<0&&(e=0);const t=new Date(e);document.getElementById("spanRefreshCountDown").innerHTML=`${t.getMinutes()<10?`0${t.getMinutes()}`:t.getMinutes()}:${t.getSeconds()<10?`0${t.getSeconds()}`:t.getSeconds()}`,f>=h&&!S()&&q()};m=window.setInterval(e,500),e()},A=()=>{m&&(window.clearInterval(m),document.getElementById("spanRefreshCountDown").innerHTML="--:--",m=null)},W=()=>f>=h&&(q(),!0),q=()=>{q.callback&&q.callback()},B=e=>{q.callback=e}},846:(e,t,n)=>{var s=n(138),r=n(38),a=n(159),i=n(325);class o extends a.Z{constructor(e,t){super(e,t,"",!1),this.backgroundImage=(0,s.a)("images/BackGround1_1.png"),this.timing=!1,document.addEventListener("DOMContentLoaded",(()=>{this.version=document.getElementById("version").innerHTML,this.elem.querySelector(".container").addEventListener("click",this.lineClick.bind(this))})),this.okToDrawCurrentConditions=!1}async drawCanvas(e,t){if(super.drawCanvas(),this.progressCover||(this.progressCover=this.elem.querySelector(".scroll .cover")),!e)return;const n=e.map(((e,t)=>{const n={};n.name=e.name;const s=(0,r.f3)(e.status),a=this.fillTemplate("item",n);if(!a)return!1;const i=a.querySelector(".links");return i.classList.remove(...r.o7),i.classList.add(s),i.dataset.index=t,a})).filter((e=>e)),s=this.elem.querySelector(".container");s.innerHTML="",s.append(...n),this.finishDraw();const a=t/e.length;this.progressCover.style.width=100*(1-a)+"%",a<1?this.progressCover.parentNode.classList.add("show"):setTimeout((()=>this.progressCover.parentNode.classList.remove("show")),1e3)}lineClick(e){const t=e.target?.parentNode?.dataset?.index;if(void 0===t)return;const n=+t;(0,i.yw)("navButton");const s=(0,i.nI)(n);s&&s.status===r.ZP.loaded&&(s.showCanvas(i.WI.command.firstFrame),this.elem.classList.remove("show"))}}const l=new o(-1,"progress");(0,i.Gw)(l)},478:(e,t,n)=>{var s=n(38),r=n(732),a=n(138),i=n(929),o=n(737),l=n(159),c=n(325);class u extends l.Z{constructor(e,t){super(e,t,"Local Radar",!0),this.okToDrawCurrentConditions=!1,this.okToDrawCurrentDateTime=!1,this.dopplerRadarImageMax=6,this.timing.baseDelay=350,this.timing.delay=[{time:4,si:5},{time:1,si:0},{time:1,si:1},{time:1,si:2},{time:1,si:3},{time:1,si:4},{time:4,si:5},{time:1,si:0},{time:1,si:1},{time:1,si:2},{time:1,si:3},{time:1,si:4},{time:4,si:5},{time:1,si:0},{time:1,si:1},{time:1,si:2},{time:1,si:3},{time:1,si:4},{time:12,si:5}]}async getData(e){if(!super.getData(e))return;const t=e??this.weatherParameters;if("AK"===t.state||"HI"===t.state)return void this.setStatus(s.ZP.noData);let n="images/4000RadarMap2.jpg";"HI"===t.State&&(n="images/HawaiiRadarMap2.png"),this.baseMap=await(0,a.a)(n);const l=[];let c=r.ou.utc().minus({days:1}).startOf("day");for(;c<=r.ou.utc().startOf("day");)l.push(`https://mesonet.agron.iastate.edu/archive/data/${c.toFormat("yyyy/LL/dd")}/GIS/uscomp/`),c=c.plus({days:1});const u=(await Promise.all(l.map((async e=>{try{return await(0,i.fL)(e,{cors:!0})}catch(e){return console.log("Unable to get list of radars"),console.error(e),this.setStatus(s.ZP.failed),!1}})))).filter((e=>e)).map(((e,t)=>{const n=(new DOMParser).parseFromString(e,"text/html"),s=n.createElement("base");s.href=l[t],n.head.append(s);const r=n.getElementsByTagName("a"),a=[];return Array.from(r).forEach((e=>{e.innerHTML?.includes(".png")&&e.innerHTML?.includes("n0r_")&&a.push(e.href)})),a})).flat(),d=u.sort(((e,t)=>Date(e){let s=0,r=0;return s=55.2*(51.75-e.latitude),s-=n,s>3200-2*n?s=3200-2*n:s<0&&(s=0),r=41.775*(-130.37-e.longitude)*-1,r-=t,r>5100-2*t?r=5100-2*t:r<0&&(r=0),{x:2*r,y:2*s}})(t,240,138),y=document.createElement("canvas");y.width=f,y.height=1600;const p=y.getContext("2d");p.imageSmoothingEnabled=!1;const w=((e,t,n)=>{let s=0,r=0;return s=61.4481*(51-e.latitude),s-=n,s>6e3-2*n?s=6e3-2*n:s<0&&(s=0),r=42.1768*(-129.138-e.longitude)*-1,r-=t,r>2800-2*t?r=2800-2*t:r<0&&(r=0),{x:2*r,y:2*s}})(t,240,138),v=w.x/2,S=w.y/2,b=await Promise.all(d.map((async e=>{const t=document.createElement("canvas");t.width=640,t.height=367;const n=t.getContext("2d");n.imageSmoothingEnabled=!1;const s=await fetch((0,o.d)(e));if(!s.ok)throw new Error(`Unable to fetch radar error ${s.status} ${s.statusText} from ${s.url}`);const i=await s.blob(),l=e.match(/_(\d{4})(\d\d)(\d\d)(\d\d)(\d\d)\./);let c;if(l){const[,e,t,n,s,a]=l;c=r.ou.fromObject({year:e,month:t,day:n,hour:s,minute:a},{zone:"UTC"}).setZone()}else c=r.ou.fromHTTP(s.headers.get("last-modified")).setZone();const u=await(0,a.a)(i);p.clearRect(0,0,f,1600),p.drawImage(u,0,0,f,1600),n.drawImage(await this.baseMap,g.x,g.y,480,276,0,0,640,367);const d=document.createElement("canvas");d.width=640,d.height=367;const h=d.getContext("2d",{willReadFrequently:!0});h.imageSmoothingEnabled=!1,h.drawImage(y,v,S,240,163.1,0,0,640,367),(e=>{const t=e.getImageData(0,0,e.canvas.width,e.canvas.height);for(let e=0;e{const n=e.getImageData(0,0,e.canvas.width,e.canvas.height),s=t.getImageData(0,0,t.canvas.width,t.canvas.height);for(let e=0;ee.elem))),this.timing.totalScreens=b.length,this.data=b.map((e=>e.canvas)),this.times=b.map((e=>e.time)),this.setStatus(s.ZP.loaded)}async drawCanvas(){super.drawCanvas();const e=this.times[this.screenIndex].toLocaleString(r.ou.TIME_SIMPLE),t=e.length>=8?e:` ${e}`;this.elem.querySelector(".header .right .time").innerHTML=t,this.elem.querySelector(".scroll-area").style.top=371*-this.screenIndex+"px",this.finishDraw()}}(0,c.G1)(new u(9,"radar"))},257:(e,t,n)=>{var s=n(38),r=n(791),a=n(929),i=n(594),o=n(372),l=n(138),c=n(732),u=n(159),d=n(325);const h=(e,t,n)=>({daytime:e.isDaytime,temperature:e.temperature||0,name:v(t.city),icon:e.icon,x:n.x,y:n.y,time:e.startTime}),m=(e,t,n,s)=>{let r=0,a=0;return r=56*(73-e),r-=s,r>1142-2*s?r=1142-2*s:r<0&&(r=0),a=25*(-175-t)*-1,a-=n,a>1200-2*n?a=1200-2*n:a<0&&(a=0),{x:a,y:r}},f=(e,t,n,s)=>{let r=0,a=0;return r=55.2*(25-e),r-=s,r>571-2*s?r=571-2*s:r<0&&(r=0),a=41.775*(-164.5-t)*-1,a-=n,a>600-2*n?a=600-2*n:a<0&&(a=0),{x:a,y:r}},g=(e,t,n,s)=>({minLat:-1*((t+2*s)/56-73),maxLat:-1*(t/56-73),minLon:-1*(-1*e/25+175),maxLon:-1*(-1*(e+2*n)/25+175)}),y=(e,t,n,s)=>({minLat:-1*((t+2*s)/55.2-25),maxLat:-1*(t/55.2-25),minLon:-1*(-1*e/41.775+164.5),maxLon:-1*(-1*(e+2*n)/41.775+164.5)}),p=(e,t,n)=>{let s=37*(e.lon-n),r=70*(t-e.lat);return r<30&&(r=30),r>282&&(r=282),s<40&&(s=40),s>580&&(s=580),{x:s,y:r}},w=(e,t,n)=>{let s=57*(e.lon-n),r=70*(t-e.lat);return r<30&&(r=30),r>282&&(r=282),s<40&&(s=40),s>580&&(s=580),{x:s,y:r}},v=e=>e.match(/[^-;/\\,]*/)[0].substr(0,12);var S=n(735);class b extends u.Z{constructor(e,t){super(e,t,"Regional Forecast",!0),this.timing.totalScreens=3}async getData(e){if(!super.getData(e))return;const t=e??this.weatherParameters;let n="images/Basemap2.png";"HI"===t.state?n="images/HawaiiRadarMap4.png":"AK"===t.state&&(n="images/AlaskaRadarMap6.png"),this.elem.querySelector(".map img").src=n;const c={x:240,y:117},u=((e,t,n,s,r)=>{if("AK"===r)return m(e,t,n,s);if("HI"===r)return f(e,t,n,s);let a=0,i=0;return a=55.2*(50.5-e),a-=s,a>1600-2*s?a=1600-2*s:a<0&&(a=0),i=41.775*(-127.5-t)*-1,i-=n,i>2550-2*n?i=2550-2*n:i<0&&(i=0),{x:i,y:a}})(t.latitude,t.longitude,c.x,c.y,t.state),d=(S=u.x,b=u.y,C=c.x,I=c.y,"AK"===(x=t.state)?g(S,b,C,I):"HI"===x?y(S,b,C,I):{minLat:-1*((b+2*I)/55.2-50.5),maxLat:-1*(b/55.2-50.5),minLon:-1*(-1*S/41.775+127.5),maxLon:-1*(-1*(S+2*C)/41.775+127.5)});var S,b,C,I,x;let M=2.5;"HI"===t.state&&(M=1);const D=Object.values(StationInfo).map((e=>({...e,targetDistance:M}))),k=[...RegionalCities,...D],L=[];k.forEach((e=>{if(e.lat>d.minLat&&e.latd.minLon&&e.lon{const a=(0,r.TE)(e.lon,e.lat,s.lon,s.lat);return n&&a>=t}),!0)&&L.push(e)}}));const E=await Promise.all(L.map((async e=>{try{const n=e?.point??await T(e.lat,e.lon);if(!n)throw new Error("No pre-loaded point");const s=(async(e,t)=>{try{const t=(await(0,a.AV)(`https://api.weather.gov/gridpoints/${e.wfo}/${e.x},${e.y}/stations`)).features[0].id,n=await(0,a.AV)(`${t}/observations/latest`);return!!n.properties.icon&&((0,l.b)((0,o.gD)(n.properties.icon,!n.properties.daytime)),n.properties)}catch(e){return console.log(`Unable to get regional observations for ${t.Name??t.city}`),console.error(e.status,e.responseJSON),!1}})(n,e),r=await(0,a.AV)(`https://api.weather.gov/gridpoints/${n.wfo}/${n.x},${n.y}/forecast`),c=((e,t,n,s)=>{"AK"===s&&p(e,t,n),"HI"===s&&w(e,t,n);let r=57*(e.lon-n),a=70*(t-e.lat);return a<30&&(a=30),a>282&&(a=282),r<40&&(r=40),r>580&&(r=580),{x:r,y:a}})(e,d.maxLat,d.minLon,t.state),u=await s,m={daytime:!!u.icon.match(/\/day\//),temperature:(0,i.NE)(u.temperature.value),name:v(e.city),icon:u.icon,x:c.x,y:c.y};return(0,l.b)((0,o.gD)(m.icon,!m.daytime)),[m,h(r.properties.periods[1],e,c),h(r.properties.periods[2],e,c)]}catch(t){return console.log(`No regional forecast data for '${e.name??e.city}'`),console.log(t),!1}}))),N=E.filter((e=>e));0!==N.length?(this.data={regionalData:N,offsetXY:c,sourceXY:u},this.setStatus(s.ZP.loaded)):this.setStatus(s.ZP.noData)}drawCanvas(){super.drawCanvas();const{regionalData:e,sourceXY:t,offsetXY:n}=this.data,s=this.elem.querySelector(".title.dual .top"),r=this.elem.querySelector(".title.dual .bottom");if(0===this.screenIndex)s.innerHTML="Regional",r.innerHTML="Observations";else{const t=c.ou.fromISO(e[0][this.screenIndex].time).toLocaleString({weekday:"long"});s.innerHTML="Forecast for",e[0][this.screenIndex].daytime?r.innerHTML=t:r.innerHTML=`${t} Night`}const a=640/(2*n.x),i=this.elem.querySelector(".map");i.style.zoom=a,i.style.top=`-${t.y}px`,i.style.left=`-${t.x}px`;const l=e.map((e=>{const t={},n=e[this.screenIndex];t.icon={type:"img",src:(0,o.gD)(n.icon,!n.daytime)},t.city=n.name;const{temperature:s}=n;t.temp=s;const r=this.fillTemplate("location",t);return r.style.left=`${n.x}px`,r.style.top=`${n.y}px`,r})),u=this.elem.querySelector(".location-container");u.innerHTML="",u.append(...l),this.finishDraw()}}const T=async(e,t)=>{const n=await(0,S.F)(e,t);return{x:n.properties.gridX,y:n.properties.gridY,wfo:n.properties.gridId}};(0,d.G1)(new b(5,"regional-forecast"))},38:(e,t,n)=>{n.d(t,{ZP:()=>i,f3:()=>r,o7:()=>a});const s={loading:Symbol("loading"),loaded:Symbol("loaded"),failed:Symbol("failed"),noData:Symbol("noData"),disabled:Symbol("disabled"),retrying:Symbol("retyring")},r=e=>{switch(e){case s.loading:return"loading";case s.loaded:return"press-here";case s.failed:return"failed";case s.noData:return"no-data";case s.disabled:return"disabled";case s.retrying:return"retrying";default:return""}},a=["loading","press-here","failed","no-data","disabled","retrying"],i=s},449:(e,t,n)=>{var s=n(38),r=n(929),a=n(372),i=n(732),o=n(159),l=n(325);class c extends o.Z{constructor(e,t,n){super(e,t,"Travel Forecast",n),this.timing.baseDelay=20;const s=TravelCities.length/4,r=Math.floor(s)-2,a=r%1;this.timing.delay=[450];for(let e=0;e{try{if(!e.point)throw new Error("No pre-loaded point");const t=await(0,r.AV)(`https://api.weather.gov/gridpoints/${e.point.wfo}/${e.point.x},${e.point.y}/forecast`),n=t.properties.periods[0].isDaytime?0:1;return{today:0===n,high:t.properties.periods[n].temperature,low:t.properties.periods[n+1].temperature,name:e.Name,icon:(0,a.gD)(t.properties.periods[n].icon)}}catch(t){return console.error(`GetTravelWeather for ${e.Name} failed`),console.error(t.status,t.responseJSON),{name:e.Name,error:!0}}})),t=await Promise.all(e);this.data=t;this.data.reduce(((e,t)=>e||t.high),!1)?(this.setStatus(s.ZP.loaded),this.drawLongCanvas()):this.setStatus(s.ZP.noData)}async drawLongCanvas(){const e=this.elem.querySelector(".travel-lines");e.innerHTML="";const t=this.data.map((e=>{if(e.error)return!1;const t={};if(t.city=e,e.icon){t.city=e.name;const{low:n,high:s}=e,r=Math.round(n).toString(),a=Math.round(s).toString();t.low=r,t.high=a,t.icon={type:"img",src:e.icon}}else t.error="NO TRAVEL DATA AVAILABLE";return this.fillTemplate("travel-row",t)})).filter((e=>e));e.append(...t)}async drawCanvas(){super.drawCanvas();const e=this.data;this.elem.querySelector(".header .title.dual .bottom").innerHTML=`For ${u(e)}`,this.finishDraw()}async showCanvas(){await this.drawCanvas(),super.showCanvas()}screenIndexChange(){this.baseCountChange(this.navBaseCount)}baseCountChange(e){let t=Math.min(this.elem.querySelector(".travel-lines").getBoundingClientRect().height-289,e-150);t<0&&(t=0),this.elem.querySelector(".main").scrollTo(0,t)}getLongCanvas(){return this.longCanvas}}const u=e=>e.reduce(((e,t)=>{if(t&&""===e){return i.ou.local().plus({days:t.today?0:1}).toLocaleString({weekday:"long"})}return e}),"");(0,l.G1)(new c(4,"travel",!1))},791:(e,t,n)=>{n.d(t,{TE:()=>r,mt:()=>s,re:()=>a});const s=e=>["N","NNE","NE","ENE","E","ESE","SE","SSE","S","SSW","SW","WSW","W","WNW","NW","NNW"][Math.floor(e/22.5+.5)%16],r=(e,t,n,s)=>Math.sqrt((n-e)**2+(s-t)**2),a=(e,t)=>(e%t+t)%t},737:(e,t,n)=>{n.d(t,{d:()=>s});const s=e=>{let t=e;return t=t.replace("https://api.weather.gov/",window.location.href),t=t.replace("https://www.cpc.ncep.noaa.gov/",window.location.href),t}},946:(e,t,n)=>{n.d(t,{T:()=>s});const s=(e,t)=>{[...document.querySelectorAll(e)].forEach(t)}},929:(e,t,n)=>{n.d(t,{AV:()=>r,Ik:()=>i,fL:()=>a});var s=n(737);const r=(e,t)=>o(e,"json",t),a=(e,t)=>o(e,"text",t),i=(e,t)=>o(e,"blob",t),o=async(e,t,n={})=>{const r={method:"GET",mode:"cors",type:"GET",retryCount:0,...n};r.originalRetries=r.retryCount;let a=e;!0===r.cors&&(a=(0,s.d)(e));const i=new URL(a,`${window.location.origin}/`);i.protocol="localhost"!==window.location.hostname?window.location.protocol:i.protocol,r.data&&Object.keys(r.data).forEach((e=>{const t=r.data[e];i.searchParams.append(e,t)}));const o=await l(i,r);if(!o.ok)throw new Error(`Fetch error ${o.status} ${o.statusText} while fetching ${o.url}`);switch(t){case"json":return o.json();case"text":return o.text();case"blob":return o.blob();default:return o}},l=(e,t)=>new Promise(((n,s)=>{fetch(e,t).then((s=>{if(t.retryCount>0){if(s.status>=500&&s.status<=599&&t.retryCount>0){"function"==typeof t.stillWaiting&&t.retryCount===t.originalRetries&&t.stillWaiting();const s={...t,retryCount:t.retryCount-1};return n(c(u(t.originalRetries-s.retryCount),l,e,s))}return n(s)}return n(s)})).catch((e=>s(e)))})),c=(e,t,...n)=>new Promise((s=>{setTimeout((()=>{s(t(...n))}),e)})),u=e=>{switch(e){case 1:return 1e3;case 2:return 2e3;case 3:return 5e3;case 4:return 1e4;default:return 3e4}}},138:(e,t,n)=>{n.d(t,{a:()=>a,b:()=>o});var s=n(929),r=n(737);const a=(e,t=!1)=>new Promise((n=>{const s=new Image;if(s.onload=e=>{n(e.target)},e instanceof Blob)s.src=window.URL.createObjectURL(e);else{let n=e;t&&(n=(0,r.d)(e)),s.src=n}})),i=[],o=e=>!i.includes(e)&&((0,s.Ik)(e),i.push(e),!0)},739:(e,t,n)=>{n.d(t,{Z:()=>a});let s=!1;const r=(e=!1)=>(r.controller||(r.controller=new NoSleep),s!==e&&(s=e,e?r.controller.enable():r.controller.disable())),a=r},206:(e,t,n)=>{n.d(t,{a:()=>s});const s=e=>[/^[A-Za-z ]+ \/ /,/^[A-Za-z ]+\//,/^[A-Za-z ]+, /].reduce(((e,t)=>e.replace(t,"")),e)},594:(e,t,n)=>{n.d(t,{AD:()=>o,Kh:()=>r,MO:()=>l,NE:()=>a,Xp:()=>s,dp:()=>i});const s=(e,t)=>Math.trunc(e*10**t)/10**t,r=e=>Math.round(e/1.60934),a=e=>Math.round(9*e/5+32),i=e=>Math.round(e/1.60934),o=e=>Math.round(e/.3048),l=e=>s(2953e-7*e,2)},735:(e,t,n)=>{n.d(t,{F:()=>r});var s=n(929);const r=async(e,t)=>{try{return await(0,s.AV)(`https://api.weather.gov/points/${e},${t}`)}catch(n){return console.log(`Unable to get point ${e}, ${t}`),console.error(n),!1}}},159:(e,t,n)=>{n.d(t,{Z:()=>o});var s=n(38),r=n(732),a=n(946),i=n(325);const o=class{constructor(e,t,n,r){this.navId=e,this.elemId=void 0,this.gifs=[],this.data=void 0,this.loadingStatus=s.ZP.loading,this.name=n??t,this.getDataCallbacks=[],this.stillWaitingCallbacks=[],this.defaultEnabled=r,this.okToDrawCurrentConditions=!0,this.okToDrawCurrentDateTime=!0,this.timing={totalScreens:1,baseDelay:9e3,delay:1},this.navBaseCount=0,this.screenIndex=-1,this.storeElemId(t),this.enabled?this.setStatus(s.ZP.loading):this.setStatus(s.ZP.disabled),this.startNavCount(),document.addEventListener("DOMContentLoaded",(()=>{this.loadTemplates()}))}generateCheckbox(e=!0){if("progress"===this.elemId)return!1;let t=window.localStorage.getItem(`display-enabled: ${this.elemId}`);null===t&&(t=e),this.enabled="true"===t||!0===t,window.localStorage.setItem(`display-enabled: ${this.elemId}`,this.enabled);const n=document.createElement("label");n.for=`${this.elemId}-checkbox`,n.id=`${this.elemId}-label`;const s=document.createElement("input");s.type="checkbox",s.value=!0,s.id=`${this.elemId}-checkbox`,s.name=`${this.elemId}-checkbox`,s.checked=this.enabled,s.addEventListener("change",(e=>this.checkboxChange(e)));const r=document.createElement("span");return r.innerHTML=this.name,n.append(s,r),this.checkbox=n,n}checkboxChange(e){this.enabled=e.target.checked,window.localStorage.setItem(`display-enabled: ${this.elemId}`,this.enabled),this.getData()}setStatus(e){this.status=e,(0,i.Nf)({id:this.navId,status:this.status}),this.checkbox&&(this.checkbox.classList.remove(...s.o7),this.checkbox.classList.add((0,s.f3)(e)))}get status(){return this.loadingStatus}set status(e){this.loadingStatus=e}storeElemId(e){this.elemId||(this.elemId=e)}getData(e){return this.data=void 0,e&&(this.weatherParameters=e),this.enabled?(this.setStatus(s.ZP.loading),this.calcNavTiming(),!0):(this.setStatus(s.ZP.disabled),!1)}getDataCallback(){this.getDataCallbacks.forEach((e=>e(this.data))),this.getDataCallbacks=[]}drawCanvas(){this.screenIndex<0&&(this.screenIndex=0)}finishDraw(){this.okToDrawCurrentDateTime&&(this.drawCurrentDateTime(),this.dateTimeInterval||setInterval((()=>this.drawCurrentDateTime()),100))}drawCurrentDateTime(){if(!this.isActive())return;const e=r.ou.local(),t=e.toLocaleString(r.ou.TIME_WITH_SECONDS).padStart(11," ");this.lastTime!==t&&(0,a.T)(".date-time.time",(e=>{e.innerHTML=t.toUpperCase()})),this.lastTime=t;const n=e.toFormat(" ccc LLL ")+e.day.toString().padStart(2," ");this.lastDate!==n&&(0,a.T)(".date-time.date",(e=>{e.innerHTML=n.toUpperCase()})),this.lastDate=n}showCanvas(e){e===i.WI.command.firstFrame&&this.navNext(e),e===i.WI.command.lastFrame&&this.navPrev(e),this.startNavCount(),this.elem.classList.add("show")}hideCanvas(){this.resetNavBaseCount(),this.elem.classList.remove("show")}isActive(){return 0!==this.elem.offsetHeight}isEnabled(){return this.enabled}navBaseTime(){(0,i.yA)()&&this.isActive()&&(this.navBaseCount+=1,this.baseCountChange&&this.baseCountChange(this.navBaseCount),this.updateScreenFromBaseCount())}async updateScreenFromBaseCount(){const e=this.screenIndexFromBaseCount();!1!==e?e!==this.screenIndex&&(this.screenIndex=-1===e?0:e,this.screenIndexChange?this.screenIndexChange(this.screenIndex):(await this.drawCanvas(),this.showCanvas())):this.sendNavDisplayMessage(i.WI.response.next)}calcNavTiming(){if(!1===this.timing)return;Array.isArray(this.timing.delay)&&(this.timing.totalScreens=this.timing.delay.length);let e=[];if("number"==typeof this.timing.delay)for(let t=0;t"object"==typeof e?e.time:e));let t=0;if(this.timing.fullDelay=e.map((e=>{const n=t+e;return t+=e,n})),Array.isArray(this.timing.delay)&&"object"==typeof this.timing.delay[0])this.timing.screenIndexes=this.timing.delay.map((e=>e.si));else{this.timing.screenIndexes=[];for(let e=0;ee>this.navBaseCount));this.navBaseCount=e}this.updateScreenFromBaseCount()}navPrev(e){if(e===i.WI.command.lastFrame)this.navBaseCount=this.timing.fullDelay[this.timing.totalScreens-1]-1;else{const e=this.timing.fullDelay.reduce(((e,t)=>te>this.navBaseCount));return-1!==e&&this.timing.screenIndexes[e]}startNavCount(){this.navInterval||(this.navInterval=setInterval((()=>this.navBaseTime()),this.timing.baseDelay))}resetNavBaseCount(){this.navBaseCount=0,this.screenIndex=-1,this.navInterval&&(clearInterval(this.navInterval),this.navInterval=void 0)}sendNavDisplayMessage(e){(0,i.Pl)({id:this.navId,type:e})}loadTemplates(){if(this.templates={},this.elem=document.getElementById(`${this.elemId}-html`),!this.elem)return;this.elem.querySelectorAll(".template").forEach((e=>{const t=e.classList[0],n=e.cloneNode(!0);n.classList.remove("template"),this.templates[t]=n,e.remove()}))}fillTemplate(e,t){const n=this.templates[e];if(!n)return!1;const s=n.cloneNode(!0);return Object.entries(t).forEach((([e,t])=>{const n=s.querySelector(`.${e}`);n&&("string"==typeof t||"number"==typeof t?n.innerHTML=t:"img"===t?.type&&(n.querySelector("img").src=t.src))})),s}stillWaiting(){this.enabled&&this.setStatus(s.ZP.retrying),this.stillWaitingCallbacks.forEach((e=>e())),this.stillWaitingCallbacks=[]}}},732:(e,t,n)=>{n.d(t,{Xp:()=>Yt,nL:()=>Gt,ou:()=>Xn});class s extends Error{}class r extends s{constructor(e){super(`Invalid DateTime: ${e.toMessage()}`)}}class a extends s{constructor(e){super(`Invalid Interval: ${e.toMessage()}`)}}class i extends s{constructor(e){super(`Invalid Duration: ${e.toMessage()}`)}}class o extends s{}class l extends s{constructor(e){super(`Invalid unit ${e}`)}}class c extends s{}class u extends s{constructor(){super("Zone is an abstract class")}}const d="numeric",h="short",m="long",f={year:d,month:d,day:d},g={year:d,month:h,day:d},y={year:d,month:h,day:d,weekday:h},p={year:d,month:m,day:d},w={year:d,month:m,day:d,weekday:m},v={hour:d,minute:d},S={hour:d,minute:d,second:d},b={hour:d,minute:d,second:d,timeZoneName:h},T={hour:d,minute:d,second:d,timeZoneName:m},C={hour:d,minute:d,hourCycle:"h23"},I={hour:d,minute:d,second:d,hourCycle:"h23"},x={hour:d,minute:d,second:d,hourCycle:"h23",timeZoneName:h},M={hour:d,minute:d,second:d,hourCycle:"h23",timeZoneName:m},D={year:d,month:d,day:d,hour:d,minute:d},k={year:d,month:d,day:d,hour:d,minute:d,second:d},L={year:d,month:h,day:d,hour:d,minute:d},E={year:d,month:h,day:d,hour:d,minute:d,second:d},N={year:d,month:h,day:d,weekday:h,hour:d,minute:d},O={year:d,month:m,day:d,hour:d,minute:d,timeZoneName:h},F={year:d,month:m,day:d,hour:d,minute:d,second:d,timeZoneName:h},$={year:d,month:m,day:d,weekday:m,hour:d,minute:d,timeZoneName:m},P={year:d,month:m,day:d,weekday:m,hour:d,minute:d,second:d,timeZoneName:m};function Z(e){return void 0===e}function V(e){return"number"==typeof e}function H(e){return"number"==typeof e&&e%1==0}function _(){try{return"undefined"!=typeof Intl&&!!Intl.RelativeTimeFormat}catch(e){return!1}}function A(e,t,n){if(0!==e.length)return e.reduce(((e,s)=>{const r=[t(s),s];return e&&n(e[0],r[0])===e[0]?e:r}),null)[1]}function W(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function q(e,t,n){return H(e)&&e>=t&&e<=n}function B(e,t=2){let n;return n=e<0?"-"+(""+-e).padStart(t,"0"):(""+e).padStart(t,"0"),n}function z(e){return Z(e)||null===e||""===e?void 0:parseInt(e,10)}function R(e){return Z(e)||null===e||""===e?void 0:parseFloat(e)}function U(e){if(!Z(e)&&null!==e&&""!==e){const t=1e3*parseFloat("0."+e);return Math.floor(t)}}function j(e,t,n=!1){const s=10**t;return(n?Math.trunc:Math.round)(e*s)/s}function G(e){return e%4==0&&(e%100!=0||e%400==0)}function J(e){return G(e)?366:365}function Y(e,t){const n=function(e,t){return e-t*Math.floor(e/t)}(t-1,12)+1;return 2===n?G(e+(t-n)/12)?29:28:[31,null,31,30,31,30,31,31,30,31,30,31][n-1]}function Q(e){let t=Date.UTC(e.year,e.month-1,e.day,e.hour,e.minute,e.second,e.millisecond);return e.year<100&&e.year>=0&&(t=new Date(t),t.setUTCFullYear(t.getUTCFullYear()-1900)),+t}function K(e){const t=(e+Math.floor(e/4)-Math.floor(e/100)+Math.floor(e/400))%7,n=e-1,s=(n+Math.floor(n/4)-Math.floor(n/100)+Math.floor(n/400))%7;return 4===t||3===s?53:52}function X(e){return e>99?e:e>60?1900+e:2e3+e}function ee(e,t,n,s=null){const r=new Date(e),a={hourCycle:"h23",year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"};s&&(a.timeZone=s);const i={timeZoneName:t,...a},o=new Intl.DateTimeFormat(n,i).formatToParts(r).find((e=>"timezonename"===e.type.toLowerCase()));return o?o.value:null}function te(e,t){let n=parseInt(e,10);Number.isNaN(n)&&(n=0);const s=parseInt(t,10)||0;return 60*n+(n<0||Object.is(n,-0)?-s:s)}function ne(e){const t=Number(e);if("boolean"==typeof e||""===e||Number.isNaN(t))throw new c(`Invalid unit value ${e}`);return t}function se(e,t){const n={};for(const s in e)if(W(e,s)){const r=e[s];if(null==r)continue;n[t(s)]=ne(r)}return n}function re(e,t){const n=Math.trunc(Math.abs(e/60)),s=Math.trunc(Math.abs(e%60)),r=e>=0?"+":"-";switch(t){case"short":return`${r}${B(n,2)}:${B(s,2)}`;case"narrow":return`${r}${n}${s>0?`:${s}`:""}`;case"techie":return`${r}${B(n,2)}${B(s,2)}`;default:throw new RangeError(`Value format ${t} is out of range for property format`)}}function ae(e){return function(e,t){return t.reduce(((t,n)=>(t[n]=e[n],t)),{})}(e,["hour","minute","second","millisecond"])}const ie=/[A-Za-z_+-]{1,256}(?::?\/[A-Za-z0-9_+-]{1,256}(?:\/[A-Za-z0-9_+-]{1,256})?)?/,oe=["January","February","March","April","May","June","July","August","September","October","November","December"],le=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],ce=["J","F","M","A","M","J","J","A","S","O","N","D"];function ue(e){switch(e){case"narrow":return[...ce];case"short":return[...le];case"long":return[...oe];case"numeric":return["1","2","3","4","5","6","7","8","9","10","11","12"];case"2-digit":return["01","02","03","04","05","06","07","08","09","10","11","12"];default:return null}}const de=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],he=["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],me=["M","T","W","T","F","S","S"];function fe(e){switch(e){case"narrow":return[...me];case"short":return[...he];case"long":return[...de];case"numeric":return["1","2","3","4","5","6","7"];default:return null}}const ge=["AM","PM"],ye=["Before Christ","Anno Domini"],pe=["BC","AD"],we=["B","A"];function ve(e){switch(e){case"narrow":return[...we];case"short":return[...pe];case"long":return[...ye];default:return null}}function Se(e,t){let n="";for(const s of e)s.literal?n+=s.val:n+=t(s.val);return n}const be={D:f,DD:g,DDD:p,DDDD:w,t:v,tt:S,ttt:b,tttt:T,T:C,TT:I,TTT:x,TTTT:M,f:D,ff:L,fff:O,ffff:$,F:k,FF:E,FFF:F,FFFF:P};class Te{static create(e,t={}){return new Te(e,t)}static parseFormat(e){let t=null,n="",s=!1;const r=[];for(let a=0;a0&&r.push({literal:s,val:n}),t=null,n="",s=!s):s||i===t?n+=i:(n.length>0&&r.push({literal:!1,val:n}),n=i,t=i)}return n.length>0&&r.push({literal:s,val:n}),r}static macroTokenToFormatOpts(e){return be[e]}constructor(e,t){this.opts=t,this.loc=e,this.systemLoc=null}formatWithSystemDefault(e,t){null===this.systemLoc&&(this.systemLoc=this.loc.redefaultToSystem());return this.systemLoc.dtFormatter(e,{...this.opts,...t}).format()}formatDateTime(e,t={}){return this.loc.dtFormatter(e,{...this.opts,...t}).format()}formatDateTimeParts(e,t={}){return this.loc.dtFormatter(e,{...this.opts,...t}).formatToParts()}resolvedOptions(e,t={}){return this.loc.dtFormatter(e,{...this.opts,...t}).resolvedOptions()}num(e,t=0){if(this.opts.forceSimple)return B(e,t);const n={...this.opts};return t>0&&(n.padTo=t),this.loc.numberFormatter(n).format(e)}formatDateTimeFromString(e,t){const n="en"===this.loc.listingMode(),s=this.loc.outputCalendar&&"gregory"!==this.loc.outputCalendar,r=(t,n)=>this.loc.extract(e,t,n),a=t=>e.isOffsetFixed&&0===e.offset&&t.allowZ?"Z":e.isValid?e.zone.formatOffset(e.ts,t.format):"",i=()=>n?function(e){return ge[e.hour<12?0:1]}(e):r({hour:"numeric",hourCycle:"h12"},"dayperiod"),o=(t,s)=>n?function(e,t){return ue(t)[e.month-1]}(e,t):r(s?{month:t}:{month:t,day:"numeric"},"month"),l=(t,s)=>n?function(e,t){return fe(t)[e.weekday-1]}(e,t):r(s?{weekday:t}:{weekday:t,month:"long",day:"numeric"},"weekday"),c=t=>{const n=Te.macroTokenToFormatOpts(t);return n?this.formatWithSystemDefault(e,n):t},u=t=>n?function(e,t){return ve(t)[e.year<0?0:1]}(e,t):r({era:t},"era");return Se(Te.parseFormat(t),(t=>{switch(t){case"S":return this.num(e.millisecond);case"u":case"SSS":return this.num(e.millisecond,3);case"s":return this.num(e.second);case"ss":return this.num(e.second,2);case"uu":return this.num(Math.floor(e.millisecond/10),2);case"uuu":return this.num(Math.floor(e.millisecond/100));case"m":return this.num(e.minute);case"mm":return this.num(e.minute,2);case"h":return this.num(e.hour%12==0?12:e.hour%12);case"hh":return this.num(e.hour%12==0?12:e.hour%12,2);case"H":return this.num(e.hour);case"HH":return this.num(e.hour,2);case"Z":return a({format:"narrow",allowZ:this.opts.allowZ});case"ZZ":return a({format:"short",allowZ:this.opts.allowZ});case"ZZZ":return a({format:"techie",allowZ:this.opts.allowZ});case"ZZZZ":return e.zone.offsetName(e.ts,{format:"short",locale:this.loc.locale});case"ZZZZZ":return e.zone.offsetName(e.ts,{format:"long",locale:this.loc.locale});case"z":return e.zoneName;case"a":return i();case"d":return s?r({day:"numeric"},"day"):this.num(e.day);case"dd":return s?r({day:"2-digit"},"day"):this.num(e.day,2);case"c":case"E":return this.num(e.weekday);case"ccc":return l("short",!0);case"cccc":return l("long",!0);case"ccccc":return l("narrow",!0);case"EEE":return l("short",!1);case"EEEE":return l("long",!1);case"EEEEE":return l("narrow",!1);case"L":return s?r({month:"numeric",day:"numeric"},"month"):this.num(e.month);case"LL":return s?r({month:"2-digit",day:"numeric"},"month"):this.num(e.month,2);case"LLL":return o("short",!0);case"LLLL":return o("long",!0);case"LLLLL":return o("narrow",!0);case"M":return s?r({month:"numeric"},"month"):this.num(e.month);case"MM":return s?r({month:"2-digit"},"month"):this.num(e.month,2);case"MMM":return o("short",!1);case"MMMM":return o("long",!1);case"MMMMM":return o("narrow",!1);case"y":return s?r({year:"numeric"},"year"):this.num(e.year);case"yy":return s?r({year:"2-digit"},"year"):this.num(e.year.toString().slice(-2),2);case"yyyy":return s?r({year:"numeric"},"year"):this.num(e.year,4);case"yyyyyy":return s?r({year:"numeric"},"year"):this.num(e.year,6);case"G":return u("short");case"GG":return u("long");case"GGGGG":return u("narrow");case"kk":return this.num(e.weekYear.toString().slice(-2),2);case"kkkk":return this.num(e.weekYear,4);case"W":return this.num(e.weekNumber);case"WW":return this.num(e.weekNumber,2);case"o":return this.num(e.ordinal);case"ooo":return this.num(e.ordinal,3);case"q":return this.num(e.quarter);case"qq":return this.num(e.quarter,2);case"X":return this.num(Math.floor(e.ts/1e3));case"x":return this.num(e.ts);default:return c(t)}}))}formatDurationFromString(e,t){const n=e=>{switch(e[0]){case"S":return"millisecond";case"s":return"second";case"m":return"minute";case"h":return"hour";case"d":return"day";case"w":return"week";case"M":return"month";case"y":return"year";default:return null}},s=Te.parseFormat(t),r=s.reduce(((e,{literal:t,val:n})=>t?e:e.concat(n)),[]);return Se(s,(e=>t=>{const s=n(t);return s?this.num(e.get(s),t.length):t})(e.shiftTo(...r.map(n).filter((e=>e)))))}}class Ce{constructor(e,t){this.reason=e,this.explanation=t}toMessage(){return this.explanation?`${this.reason}: ${this.explanation}`:this.reason}}class Ie{get type(){throw new u}get name(){throw new u}get ianaName(){return this.name}get isUniversal(){throw new u}offsetName(e,t){throw new u}formatOffset(e,t){throw new u}offset(e){throw new u}equals(e){throw new u}get isValid(){throw new u}}let xe=null;class Me extends Ie{static get instance(){return null===xe&&(xe=new Me),xe}get type(){return"system"}get name(){return(new Intl.DateTimeFormat).resolvedOptions().timeZone}get isUniversal(){return!1}offsetName(e,{format:t,locale:n}){return ee(e,t,n)}formatOffset(e,t){return re(this.offset(e),t)}offset(e){return-new Date(e).getTimezoneOffset()}equals(e){return"system"===e.type}get isValid(){return!0}}let De={};const ke={year:0,month:1,day:2,era:3,hour:4,minute:5,second:6};let Le={};class Ee extends Ie{static create(e){return Le[e]||(Le[e]=new Ee(e)),Le[e]}static resetCache(){Le={},De={}}static isValidSpecifier(e){return this.isValidZone(e)}static isValidZone(e){if(!e)return!1;try{return new Intl.DateTimeFormat("en-US",{timeZone:e}).format(),!0}catch(e){return!1}}constructor(e){super(),this.zoneName=e,this.valid=Ee.isValidZone(e)}get type(){return"iana"}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(e,{format:t,locale:n}){return ee(e,t,n,this.name)}formatOffset(e,t){return re(this.offset(e),t)}offset(e){const t=new Date(e);if(isNaN(t))return NaN;const n=(s=this.name,De[s]||(De[s]=new Intl.DateTimeFormat("en-US",{hour12:!1,timeZone:s,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",era:"short"})),De[s]);var s;let[r,a,i,o,l,c,u]=n.formatToParts?function(e,t){const n=e.formatToParts(t),s=[];for(let e=0;e=0?h:1e3+h,(Q({year:r,month:a,day:i,hour:24===l?0:l,minute:c,second:u,millisecond:0})-d)/6e4}equals(e){return"iana"===e.type&&e.name===this.name}get isValid(){return this.valid}}let Ne=null;class Oe extends Ie{static get utcInstance(){return null===Ne&&(Ne=new Oe(0)),Ne}static instance(e){return 0===e?Oe.utcInstance:new Oe(e)}static parseSpecifier(e){if(e){const t=e.match(/^utc(?:([+-]\d{1,2})(?::(\d{2}))?)?$/i);if(t)return new Oe(te(t[1],t[2]))}return null}constructor(e){super(),this.fixed=e}get type(){return"fixed"}get name(){return 0===this.fixed?"UTC":`UTC${re(this.fixed,"narrow")}`}get ianaName(){return 0===this.fixed?"Etc/UTC":`Etc/GMT${re(-this.fixed,"narrow")}`}offsetName(){return this.name}formatOffset(e,t){return re(this.fixed,t)}get isUniversal(){return!0}offset(){return this.fixed}equals(e){return"fixed"===e.type&&e.fixed===this.fixed}get isValid(){return!0}}class Fe extends Ie{constructor(e){super(),this.zoneName=e}get type(){return"invalid"}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(){return null}formatOffset(){return""}offset(){return NaN}equals(){return!1}get isValid(){return!1}}function $e(e,t){if(Z(e)||null===e)return t;if(e instanceof Ie)return e;if("string"==typeof e){const n=e.toLowerCase();return"default"===n?t:"local"===n||"system"===n?Me.instance:"utc"===n||"gmt"===n?Oe.utcInstance:Oe.parseSpecifier(n)||Ee.create(e)}return V(e)?Oe.instance(e):"object"==typeof e&&e.offset&&"number"==typeof e.offset?e:new Fe(e)}let Pe,Ze=()=>Date.now(),Ve="system",He=null,_e=null,Ae=null;class We{static get now(){return Ze}static set now(e){Ze=e}static set defaultZone(e){Ve=e}static get defaultZone(){return $e(Ve,Me.instance)}static get defaultLocale(){return He}static set defaultLocale(e){He=e}static get defaultNumberingSystem(){return _e}static set defaultNumberingSystem(e){_e=e}static get defaultOutputCalendar(){return Ae}static set defaultOutputCalendar(e){Ae=e}static get throwOnInvalid(){return Pe}static set throwOnInvalid(e){Pe=e}static resetCaches(){Ke.resetCache(),Ee.resetCache()}}let qe={};let Be={};function ze(e,t={}){const n=JSON.stringify([e,t]);let s=Be[n];return s||(s=new Intl.DateTimeFormat(e,t),Be[n]=s),s}let Re={};let Ue={};let je=null;function Ge(e,t,n,s,r){const a=e.listingMode(n);return"error"===a?null:"en"===a?s(t):r(t)}class Je{constructor(e,t,n){this.padTo=n.padTo||0,this.floor=n.floor||!1;const{padTo:s,floor:r,...a}=n;if(!t||Object.keys(a).length>0){const t={useGrouping:!1,...n};n.padTo>0&&(t.minimumIntegerDigits=n.padTo),this.inf=function(e,t={}){const n=JSON.stringify([e,t]);let s=Re[n];return s||(s=new Intl.NumberFormat(e,t),Re[n]=s),s}(e,t)}}format(e){if(this.inf){const t=this.floor?Math.floor(e):e;return this.inf.format(t)}return B(this.floor?Math.floor(e):j(e,3),this.padTo)}}class Ye{constructor(e,t,n){let s;if(this.opts=n,e.zone.isUniversal){const t=e.offset/60*-1,r=t>=0?`Etc/GMT+${t}`:`Etc/GMT${t}`;0!==e.offset&&Ee.create(r).valid?(s=r,this.dt=e):(s="UTC",n.timeZoneName?this.dt=e:this.dt=0===e.offset?e:Xn.fromMillis(e.ts+60*e.offset*1e3))}else"system"===e.zone.type?this.dt=e:(this.dt=e,s=e.zone.name);const r={...this.opts};s&&(r.timeZone=s),this.dtf=ze(t,r)}format(){return this.dtf.format(this.dt.toJSDate())}formatToParts(){return this.dtf.formatToParts(this.dt.toJSDate())}resolvedOptions(){return this.dtf.resolvedOptions()}}class Qe{constructor(e,t,n){this.opts={style:"long",...n},!t&&_()&&(this.rtf=function(e,t={}){const{base:n,...s}=t,r=JSON.stringify([e,s]);let a=Ue[r];return a||(a=new Intl.RelativeTimeFormat(e,t),Ue[r]=a),a}(e,n))}format(e,t){return this.rtf?this.rtf.format(e,t):function(e,t,n="always",s=!1){const r={years:["year","yr."],quarters:["quarter","qtr."],months:["month","mo."],weeks:["week","wk."],days:["day","day","days"],hours:["hour","hr."],minutes:["minute","min."],seconds:["second","sec."]},a=-1===["hours","minutes","seconds"].indexOf(e);if("auto"===n&&a){const n="days"===e;switch(t){case 1:return n?"tomorrow":`next ${r[e][0]}`;case-1:return n?"yesterday":`last ${r[e][0]}`;case 0:return n?"today":`this ${r[e][0]}`}}const i=Object.is(t,-0)||t<0,o=Math.abs(t),l=1===o,c=r[e],u=s?l?c[1]:c[2]||c[1]:l?r[e][0]:e;return i?`${o} ${u} ago`:`in ${o} ${u}`}(t,e,this.opts.numeric,"long"!==this.opts.style)}formatToParts(e,t){return this.rtf?this.rtf.formatToParts(e,t):[]}}class Ke{static fromOpts(e){return Ke.create(e.locale,e.numberingSystem,e.outputCalendar,e.defaultToEN)}static create(e,t,n,s=!1){const r=e||We.defaultLocale,a=r||(s?"en-US":je||(je=(new Intl.DateTimeFormat).resolvedOptions().locale,je)),i=t||We.defaultNumberingSystem,o=n||We.defaultOutputCalendar;return new Ke(a,i,o,r)}static resetCache(){je=null,Be={},Re={},Ue={}}static fromObject({locale:e,numberingSystem:t,outputCalendar:n}={}){return Ke.create(e,t,n)}constructor(e,t,n,s){const[r,a,i]=function(e){const t=e.indexOf("-u-");if(-1===t)return[e];{let n;const s=e.substring(0,t);try{n=ze(e).resolvedOptions()}catch(e){n=ze(s).resolvedOptions()}const{numberingSystem:r,calendar:a}=n;return[s,r,a]}}(e);this.locale=r,this.numberingSystem=t||a||null,this.outputCalendar=n||i||null,this.intl=function(e,t,n){return n||t?(e+="-u",n&&(e+=`-ca-${n}`),t&&(e+=`-nu-${t}`),e):e}(this.locale,this.numberingSystem,this.outputCalendar),this.weekdaysCache={format:{},standalone:{}},this.monthsCache={format:{},standalone:{}},this.meridiemCache=null,this.eraCache={},this.specifiedLocale=s,this.fastNumbersCached=null}get fastNumbers(){var e;return null==this.fastNumbersCached&&(this.fastNumbersCached=(!(e=this).numberingSystem||"latn"===e.numberingSystem)&&("latn"===e.numberingSystem||!e.locale||e.locale.startsWith("en")||"latn"===new Intl.DateTimeFormat(e.intl).resolvedOptions().numberingSystem)),this.fastNumbersCached}listingMode(){const e=this.isEnglish(),t=!(null!==this.numberingSystem&&"latn"!==this.numberingSystem||null!==this.outputCalendar&&"gregory"!==this.outputCalendar);return e&&t?"en":"intl"}clone(e){return e&&0!==Object.getOwnPropertyNames(e).length?Ke.create(e.locale||this.specifiedLocale,e.numberingSystem||this.numberingSystem,e.outputCalendar||this.outputCalendar,e.defaultToEN||!1):this}redefaultToEN(e={}){return this.clone({...e,defaultToEN:!0})}redefaultToSystem(e={}){return this.clone({...e,defaultToEN:!1})}months(e,t=!1,n=!0){return Ge(this,e,n,ue,(()=>{const n=t?{month:e,day:"numeric"}:{month:e},s=t?"format":"standalone";return this.monthsCache[s][e]||(this.monthsCache[s][e]=function(e){const t=[];for(let n=1;n<=12;n++){const s=Xn.utc(2016,n,1);t.push(e(s))}return t}((e=>this.extract(e,n,"month")))),this.monthsCache[s][e]}))}weekdays(e,t=!1,n=!0){return Ge(this,e,n,fe,(()=>{const n=t?{weekday:e,year:"numeric",month:"long",day:"numeric"}:{weekday:e},s=t?"format":"standalone";return this.weekdaysCache[s][e]||(this.weekdaysCache[s][e]=function(e){const t=[];for(let n=1;n<=7;n++){const s=Xn.utc(2016,11,13+n);t.push(e(s))}return t}((e=>this.extract(e,n,"weekday")))),this.weekdaysCache[s][e]}))}meridiems(e=!0){return Ge(this,void 0,e,(()=>ge),(()=>{if(!this.meridiemCache){const e={hour:"numeric",hourCycle:"h12"};this.meridiemCache=[Xn.utc(2016,11,13,9),Xn.utc(2016,11,13,19)].map((t=>this.extract(t,e,"dayperiod")))}return this.meridiemCache}))}eras(e,t=!0){return Ge(this,e,t,ve,(()=>{const t={era:e};return this.eraCache[e]||(this.eraCache[e]=[Xn.utc(-40,1,1),Xn.utc(2017,1,1)].map((e=>this.extract(e,t,"era")))),this.eraCache[e]}))}extract(e,t,n){const s=this.dtFormatter(e,t).formatToParts().find((e=>e.type.toLowerCase()===n));return s?s.value:null}numberFormatter(e={}){return new Je(this.intl,e.forceSimple||this.fastNumbers,e)}dtFormatter(e,t={}){return new Ye(e,this.intl,t)}relFormatter(e={}){return new Qe(this.intl,this.isEnglish(),e)}listFormatter(e={}){return function(e,t={}){const n=JSON.stringify([e,t]);let s=qe[n];return s||(s=new Intl.ListFormat(e,t),qe[n]=s),s}(this.intl,e)}isEnglish(){return"en"===this.locale||"en-us"===this.locale.toLowerCase()||new Intl.DateTimeFormat(this.intl).resolvedOptions().locale.startsWith("en-us")}equals(e){return this.locale===e.locale&&this.numberingSystem===e.numberingSystem&&this.outputCalendar===e.outputCalendar}}function Xe(...e){const t=e.reduce(((e,t)=>e+t.source),"");return RegExp(`^${t}$`)}function et(...e){return t=>e.reduce((([e,n,s],r)=>{const[a,i,o]=r(t,s);return[{...e,...a},i||n,o]}),[{},null,1]).slice(0,2)}function tt(e,...t){if(null==e)return[null,null];for(const[n,s]of t){const t=n.exec(e);if(t)return s(t)}return[null,null]}function nt(...e){return(t,n)=>{const s={};let r;for(r=0;rvoid 0!==e&&(t||e&&u)?-e:e;return[{years:h(R(n)),months:h(R(s)),weeks:h(R(r)),days:h(R(a)),hours:h(R(i)),minutes:h(R(o)),seconds:h(R(l),"-0"===l),milliseconds:h(U(c),d)}]}const wt={GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function vt(e,t,n,s,r,a,i){const o={year:2===t.length?X(z(t)):z(t),month:le.indexOf(n)+1,day:z(s),hour:z(r),minute:z(a)};return i&&(o.second=z(i)),e&&(o.weekday=e.length>3?de.indexOf(e)+1:he.indexOf(e)+1),o}const St=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|(?:([+-]\d\d)(\d\d)))$/;function bt(e){const[,t,n,s,r,a,i,o,l,c,u,d]=e,h=vt(t,r,s,n,a,i,o);let m;return m=l?wt[l]:c?0:te(u,d),[h,new Oe(m)]}const Tt=/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\d\d) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\d{4}) (\d\d):(\d\d):(\d\d) GMT$/,Ct=/^(Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), (\d\d)-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\d\d) (\d\d):(\d\d):(\d\d) GMT$/,It=/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( \d|\d\d) (\d\d):(\d\d):(\d\d) (\d{4})$/;function xt(e){const[,t,n,s,r,a,i,o]=e;return[vt(t,r,s,n,a,i,o),Oe.utcInstance]}function Mt(e){const[,t,n,s,r,a,i,o]=e;return[vt(t,o,n,s,r,a,i),Oe.utcInstance]}const Dt=Xe(/([+-]\d{6}|\d{4})(?:-?(\d\d)(?:-?(\d\d))?)?/,it),kt=Xe(/(\d{4})-?W(\d\d)(?:-?(\d))?/,it),Lt=Xe(/(\d{4})-?(\d{3})/,it),Et=Xe(at),Nt=et((function(e,t){return[{year:dt(e,t),month:dt(e,t+1,1),day:dt(e,t+2,1)},null,t+3]}),ht,mt,ft),Ot=et(ot,ht,mt,ft),Ft=et(lt,ht,mt,ft),$t=et(ht,mt,ft);const Pt=et(ht);const Zt=Xe(/(\d{4})-(\d\d)-(\d\d)/,ut),Vt=Xe(ct),Ht=et(ht,mt,ft);const _t={weeks:{days:7,hours:168,minutes:10080,seconds:604800,milliseconds:6048e5},days:{hours:24,minutes:1440,seconds:86400,milliseconds:864e5},hours:{minutes:60,seconds:3600,milliseconds:36e5},minutes:{seconds:60,milliseconds:6e4},seconds:{milliseconds:1e3}},At={years:{quarters:4,months:12,weeks:52,days:365,hours:8760,minutes:525600,seconds:31536e3,milliseconds:31536e6},quarters:{months:3,weeks:13,days:91,hours:2184,minutes:131040,seconds:7862400,milliseconds:78624e5},months:{weeks:4,days:30,hours:720,minutes:43200,seconds:2592e3,milliseconds:2592e6},..._t},Wt=365.2425,qt=30.436875,Bt={years:{quarters:4,months:12,weeks:52.1775,days:Wt,hours:8765.82,minutes:525949.2,seconds:525949.2*60,milliseconds:525949.2*60*1e3},quarters:{months:3,weeks:13.044375,days:91.310625,hours:2191.455,minutes:131487.3,seconds:525949.2*60/4,milliseconds:7889237999.999999},months:{weeks:4.3481250000000005,days:qt,hours:730.485,minutes:43829.1,seconds:2629746,milliseconds:2629746e3},..._t},zt=["years","quarters","months","weeks","days","hours","minutes","seconds","milliseconds"],Rt=zt.slice(0).reverse();function Ut(e,t,n=!1){const s={values:n?t.values:{...e.values,...t.values||{}},loc:e.loc.clone(t.loc),conversionAccuracy:t.conversionAccuracy||e.conversionAccuracy,matrix:t.matrix||e.matrix};return new Gt(s)}function jt(e,t,n,s,r){const a=e[r][n],i=t[n]/a,o=!(Math.sign(i)===Math.sign(s[r]))&&0!==s[r]&&Math.abs(i)<=1?function(e){return e<0?Math.floor(e):Math.ceil(e)}(i):Math.trunc(i);s[r]+=o,t[n]-=o*a}class Gt{constructor(e){const t="longterm"===e.conversionAccuracy||!1;let n=t?Bt:At;e.matrix&&(n=e.matrix),this.values=e.values,this.loc=e.loc||Ke.create(),this.conversionAccuracy=t?"longterm":"casual",this.invalid=e.invalid||null,this.matrix=n,this.isLuxonDuration=!0}static fromMillis(e,t){return Gt.fromObject({milliseconds:e},t)}static fromObject(e,t={}){if(null==e||"object"!=typeof e)throw new c("Duration.fromObject: argument expected to be an object, got "+(null===e?"null":typeof e));return new Gt({values:se(e,Gt.normalizeUnit),loc:Ke.fromObject(t),conversionAccuracy:t.conversionAccuracy,matrix:t.matrix})}static fromDurationLike(e){if(V(e))return Gt.fromMillis(e);if(Gt.isDuration(e))return e;if("object"==typeof e)return Gt.fromObject(e);throw new c(`Unknown duration argument ${e} of type ${typeof e}`)}static fromISO(e,t){const[n]=function(e){return tt(e,[yt,pt])}(e);return n?Gt.fromObject(n,t):Gt.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static fromISOTime(e,t){const[n]=function(e){return tt(e,[gt,Pt])}(e);return n?Gt.fromObject(n,t):Gt.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static invalid(e,t=null){if(!e)throw new c("need to specify a reason the Duration is invalid");const n=e instanceof Ce?e:new Ce(e,t);if(We.throwOnInvalid)throw new i(n);return new Gt({invalid:n})}static normalizeUnit(e){const t={year:"years",years:"years",quarter:"quarters",quarters:"quarters",month:"months",months:"months",week:"weeks",weeks:"weeks",day:"days",days:"days",hour:"hours",hours:"hours",minute:"minutes",minutes:"minutes",second:"seconds",seconds:"seconds",millisecond:"milliseconds",milliseconds:"milliseconds"}[e?e.toLowerCase():e];if(!t)throw new l(e);return t}static isDuration(e){return e&&e.isLuxonDuration||!1}get locale(){return this.isValid?this.loc.locale:null}get numberingSystem(){return this.isValid?this.loc.numberingSystem:null}toFormat(e,t={}){const n={...t,floor:!1!==t.round&&!1!==t.floor};return this.isValid?Te.create(this.loc,n).formatDurationFromString(this,e):"Invalid Duration"}toHuman(e={}){const t=zt.map((t=>{const n=this.values[t];return Z(n)?null:this.loc.numberFormatter({style:"unit",unitDisplay:"long",...e,unit:t.slice(0,-1)}).format(n)})).filter((e=>e));return this.loc.listFormatter({type:"conjunction",style:e.listStyle||"narrow",...e}).format(t)}toObject(){return this.isValid?{...this.values}:{}}toISO(){if(!this.isValid)return null;let e="P";return 0!==this.years&&(e+=this.years+"Y"),0===this.months&&0===this.quarters||(e+=this.months+3*this.quarters+"M"),0!==this.weeks&&(e+=this.weeks+"W"),0!==this.days&&(e+=this.days+"D"),0===this.hours&&0===this.minutes&&0===this.seconds&&0===this.milliseconds||(e+="T"),0!==this.hours&&(e+=this.hours+"H"),0!==this.minutes&&(e+=this.minutes+"M"),0===this.seconds&&0===this.milliseconds||(e+=j(this.seconds+this.milliseconds/1e3,3)+"S"),"P"===e&&(e+="T0S"),e}toISOTime(e={}){if(!this.isValid)return null;const t=this.toMillis();if(t<0||t>=864e5)return null;e={suppressMilliseconds:!1,suppressSeconds:!1,includePrefix:!1,format:"extended",...e};const n=this.shiftTo("hours","minutes","seconds","milliseconds");let s="basic"===e.format?"hhmm":"hh:mm";e.suppressSeconds&&0===n.seconds&&0===n.milliseconds||(s+="basic"===e.format?"ss":":ss",e.suppressMilliseconds&&0===n.milliseconds||(s+=".SSS"));let r=n.toFormat(s);return e.includePrefix&&(r="T"+r),r}toJSON(){return this.toISO()}toString(){return this.toISO()}toMillis(){return this.as("milliseconds")}valueOf(){return this.toMillis()}plus(e){if(!this.isValid)return this;const t=Gt.fromDurationLike(e),n={};for(const e of zt)(W(t.values,e)||W(this.values,e))&&(n[e]=t.get(e)+this.get(e));return Ut(this,{values:n},!0)}minus(e){if(!this.isValid)return this;const t=Gt.fromDurationLike(e);return this.plus(t.negate())}mapUnits(e){if(!this.isValid)return this;const t={};for(const n of Object.keys(this.values))t[n]=ne(e(this.values[n],n));return Ut(this,{values:t},!0)}get(e){return this[Gt.normalizeUnit(e)]}set(e){if(!this.isValid)return this;return Ut(this,{values:{...this.values,...se(e,Gt.normalizeUnit)}})}reconfigure({locale:e,numberingSystem:t,conversionAccuracy:n,matrix:s}={}){return Ut(this,{loc:this.loc.clone({locale:e,numberingSystem:t}),matrix:s,conversionAccuracy:n})}as(e){return this.isValid?this.shiftTo(e).get(e):NaN}normalize(){if(!this.isValid)return this;const e=this.toObject();return function(e,t){Rt.reduce(((n,s)=>Z(t[s])?n:(n&&jt(e,t,n,t,s),s)),null)}(this.matrix,e),Ut(this,{values:e},!0)}rescale(){if(!this.isValid)return this;return Ut(this,{values:function(e){const t={};for(const[n,s]of Object.entries(e))0!==s&&(t[n]=s);return t}(this.normalize().shiftToAll().toObject())},!0)}shiftTo(...e){if(!this.isValid)return this;if(0===e.length)return this;e=e.map((e=>Gt.normalizeUnit(e)));const t={},n={},s=this.toObject();let r;for(const a of zt)if(e.indexOf(a)>=0){r=a;let e=0;for(const t in n)e+=this.matrix[t][a]*n[t],n[t]=0;V(s[a])&&(e+=s[a]);const i=Math.trunc(e);t[a]=i,n[a]=(1e3*e-1e3*i)/1e3;for(const e in s)zt.indexOf(e)>zt.indexOf(a)&&jt(this.matrix,s,e,t,a)}else V(s[a])&&(n[a]=s[a]);for(const e in n)0!==n[e]&&(t[r]+=e===r?n[e]:n[e]/this.matrix[r][e]);return Ut(this,{values:t},!0).normalize()}shiftToAll(){return this.isValid?this.shiftTo("years","months","weeks","days","hours","minutes","seconds","milliseconds"):this}negate(){if(!this.isValid)return this;const e={};for(const t of Object.keys(this.values))e[t]=0===this.values[t]?0:-this.values[t];return Ut(this,{values:e},!0)}get years(){return this.isValid?this.values.years||0:NaN}get quarters(){return this.isValid?this.values.quarters||0:NaN}get months(){return this.isValid?this.values.months||0:NaN}get weeks(){return this.isValid?this.values.weeks||0:NaN}get days(){return this.isValid?this.values.days||0:NaN}get hours(){return this.isValid?this.values.hours||0:NaN}get minutes(){return this.isValid?this.values.minutes||0:NaN}get seconds(){return this.isValid?this.values.seconds||0:NaN}get milliseconds(){return this.isValid?this.values.milliseconds||0:NaN}get isValid(){return null===this.invalid}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}equals(e){if(!this.isValid||!e.isValid)return!1;if(!this.loc.equals(e.loc))return!1;for(const s of zt)if(t=this.values[s],n=e.values[s],!(void 0===t||0===t?void 0===n||0===n:t===n))return!1;var t,n;return!0}}const Jt="Invalid Interval";class Yt{constructor(e){this.s=e.start,this.e=e.end,this.invalid=e.invalid||null,this.isLuxonInterval=!0}static invalid(e,t=null){if(!e)throw new c("need to specify a reason the Interval is invalid");const n=e instanceof Ce?e:new Ce(e,t);if(We.throwOnInvalid)throw new a(n);return new Yt({invalid:n})}static fromDateTimes(e,t){const n=es(e),s=es(t),r=function(e,t){return e&&e.isValid?t&&t.isValid?te}isBefore(e){return!!this.isValid&&this.e<=e}contains(e){return!!this.isValid&&(this.s<=e&&this.e>e)}set({start:e,end:t}={}){return this.isValid?Yt.fromDateTimes(e||this.s,t||this.e):this}splitAt(...e){if(!this.isValid)return[];const t=e.map(es).filter((e=>this.contains(e))).sort(),n=[];let{s}=this,r=0;for(;s+this.e?this.e:e;n.push(Yt.fromDateTimes(s,a)),s=a,r+=1}return n}splitBy(e){const t=Gt.fromDurationLike(e);if(!this.isValid||!t.isValid||0===t.as("milliseconds"))return[];let n,{s}=this,r=1;const a=[];for(;se*r)));n=+e>+this.e?this.e:e,a.push(Yt.fromDateTimes(s,n)),s=n,r+=1}return a}divideEqually(e){return this.isValid?this.splitBy(this.length()/e).slice(0,e):[]}overlaps(e){return this.e>e.s&&this.s=e.e)}equals(e){return!(!this.isValid||!e.isValid)&&(this.s.equals(e.s)&&this.e.equals(e.e))}intersection(e){if(!this.isValid)return this;const t=this.s>e.s?this.s:e.s,n=this.e=n?null:Yt.fromDateTimes(t,n)}union(e){if(!this.isValid)return this;const t=this.se.e?this.e:e.e;return Yt.fromDateTimes(t,n)}static merge(e){const[t,n]=e.sort(((e,t)=>e.s-t.s)).reduce((([e,t],n)=>t?t.overlaps(n)||t.abutsStart(n)?[e,t.union(n)]:[e.concat([t]),n]:[e,n]),[[],null]);return n&&t.push(n),t}static xor(e){let t=null,n=0;const s=[],r=e.map((e=>[{time:e.s,type:"s"},{time:e.e,type:"e"}])),a=Array.prototype.concat(...r).sort(((e,t)=>e.time-t.time));for(const e of a)n+="s"===e.type?1:-1,1===n?t=e.time:(t&&+t!=+e.time&&s.push(Yt.fromDateTimes(t,e.time)),t=null);return Yt.merge(s)}difference(...e){return Yt.xor([this].concat(e)).map((e=>this.intersection(e))).filter((e=>e&&!e.isEmpty()))}toString(){return this.isValid?`[${this.s.toISO()} – ${this.e.toISO()})`:Jt}toISO(e){return this.isValid?`${this.s.toISO(e)}/${this.e.toISO(e)}`:Jt}toISODate(){return this.isValid?`${this.s.toISODate()}/${this.e.toISODate()}`:Jt}toISOTime(e){return this.isValid?`${this.s.toISOTime(e)}/${this.e.toISOTime(e)}`:Jt}toFormat(e,{separator:t=" – "}={}){return this.isValid?`${this.s.toFormat(e)}${t}${this.e.toFormat(e)}`:Jt}toDuration(e,t){return this.isValid?this.e.diff(this.s,e,t):Gt.invalid(this.invalidReason)}mapEndpoints(e){return Yt.fromDateTimes(e(this.s),e(this.e))}}class Qt{static hasDST(e=We.defaultZone){const t=Xn.now().setZone(e).set({month:12});return!e.isUniversal&&t.offset!==t.set({month:6}).offset}static isValidIANAZone(e){return Ee.isValidZone(e)}static normalizeZone(e){return $e(e,We.defaultZone)}static months(e="long",{locale:t=null,numberingSystem:n=null,locObj:s=null,outputCalendar:r="gregory"}={}){return(s||Ke.create(t,n,r)).months(e)}static monthsFormat(e="long",{locale:t=null,numberingSystem:n=null,locObj:s=null,outputCalendar:r="gregory"}={}){return(s||Ke.create(t,n,r)).months(e,!0)}static weekdays(e="long",{locale:t=null,numberingSystem:n=null,locObj:s=null}={}){return(s||Ke.create(t,n,null)).weekdays(e)}static weekdaysFormat(e="long",{locale:t=null,numberingSystem:n=null,locObj:s=null}={}){return(s||Ke.create(t,n,null)).weekdays(e,!0)}static meridiems({locale:e=null}={}){return Ke.create(e).meridiems()}static eras(e="short",{locale:t=null}={}){return Ke.create(t,null,"gregory").eras(e)}static features(){return{relative:_()}}}function Kt(e,t){const n=e=>e.toUTC(0,{keepLocalTime:!0}).startOf("day").valueOf(),s=n(t)-n(e);return Math.floor(Gt.fromMillis(s).as("days"))}function Xt(e,t,n,s){let[r,a,i,o]=function(e,t,n){const s=[["years",(e,t)=>t.year-e.year],["quarters",(e,t)=>t.quarter-e.quarter+4*(t.year-e.year)],["months",(e,t)=>t.month-e.month+12*(t.year-e.year)],["weeks",(e,t)=>{const n=Kt(e,t);return(n-n%7)/7}],["days",Kt]],r={};let a,i;for(const[o,l]of s)if(n.indexOf(o)>=0){a=o;let n=l(e,t);i=e.plus({[o]:n}),i>t?(e=e.plus({[o]:n-1}),n-=1):e=i,r[o]=n}return[e,r,i,a]}(e,t,n);const l=t-r,c=n.filter((e=>["hours","minutes","seconds","milliseconds"].indexOf(e)>=0));0===c.length&&(i0?Gt.fromMillis(l,s).shiftTo(...c).plus(u):u}const en={arab:"[٠-٩]",arabext:"[۰-۹]",bali:"[᭐-᭙]",beng:"[০-৯]",deva:"[०-९]",fullwide:"[0-9]",gujr:"[૦-૯]",hanidec:"[〇|一|二|三|四|五|六|七|八|九]",khmr:"[០-៩]",knda:"[೦-೯]",laoo:"[໐-໙]",limb:"[᥆-᥏]",mlym:"[൦-൯]",mong:"[᠐-᠙]",mymr:"[၀-၉]",orya:"[୦-୯]",tamldec:"[௦-௯]",telu:"[౦-౯]",thai:"[๐-๙]",tibt:"[༠-༩]",latn:"\\d"},tn={arab:[1632,1641],arabext:[1776,1785],bali:[6992,7001],beng:[2534,2543],deva:[2406,2415],fullwide:[65296,65303],gujr:[2790,2799],khmr:[6112,6121],knda:[3302,3311],laoo:[3792,3801],limb:[6470,6479],mlym:[3430,3439],mong:[6160,6169],mymr:[4160,4169],orya:[2918,2927],tamldec:[3046,3055],telu:[3174,3183],thai:[3664,3673],tibt:[3872,3881]},nn=en.hanidec.replace(/[\[|\]]/g,"").split("");function sn({numberingSystem:e},t=""){return new RegExp(`${en[e||"latn"]}${t}`)}function rn(e,t=(e=>e)){return{regex:e,deser:([e])=>t(function(e){let t=parseInt(e,10);if(isNaN(t)){t="";for(let n=0;n=n&&s<=r&&(t+=s-n)}}return parseInt(t,10)}return t}(e))}}const an=`[ ${String.fromCharCode(160)}]`,on=new RegExp(an,"g");function ln(e){return e.replace(/\./g,"\\.?").replace(on,an)}function cn(e){return e.replace(/\./g,"").replace(on," ").toLowerCase()}function un(e,t){return null===e?null:{regex:RegExp(e.map(ln).join("|")),deser:([n])=>e.findIndex((e=>cn(n)===cn(e)))+t}}function dn(e,t){return{regex:e,deser:([,e,t])=>te(e,t),groups:t}}function hn(e){return{regex:e,deser:([e])=>e}}const mn={year:{"2-digit":"yy",numeric:"yyyyy"},month:{numeric:"M","2-digit":"MM",short:"MMM",long:"MMMM"},day:{numeric:"d","2-digit":"dd"},weekday:{short:"EEE",long:"EEEE"},dayperiod:"a",dayPeriod:"a",hour:{numeric:"h","2-digit":"hh"},minute:{numeric:"m","2-digit":"mm"},second:{numeric:"s","2-digit":"ss"},timeZoneName:{long:"ZZZZZ",short:"ZZZ"}};let fn=null;function gn(e,t){return Array.prototype.concat(...e.map((e=>function(e,t){if(e.literal)return e;const n=pn(Te.macroTokenToFormatOpts(e.val),t);return null==n||n.includes(void 0)?e:n}(e,t))))}function yn(e,t,n){const s=gn(Te.parseFormat(n),e),r=s.map((t=>function(e,t){const n=sn(t),s=sn(t,"{2}"),r=sn(t,"{3}"),a=sn(t,"{4}"),i=sn(t,"{6}"),o=sn(t,"{1,2}"),l=sn(t,"{1,3}"),c=sn(t,"{1,6}"),u=sn(t,"{1,9}"),d=sn(t,"{2,4}"),h=sn(t,"{4,6}"),m=e=>{return{regex:RegExp((t=e.val,t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&"))),deser:([e])=>e,literal:!0};var t},f=(f=>{if(e.literal)return m(f);switch(f.val){case"G":return un(t.eras("short",!1),0);case"GG":return un(t.eras("long",!1),0);case"y":return rn(c);case"yy":case"kk":return rn(d,X);case"yyyy":case"kkkk":return rn(a);case"yyyyy":return rn(h);case"yyyyyy":return rn(i);case"M":case"L":case"d":case"H":case"h":case"m":case"q":case"s":case"W":return rn(o);case"MM":case"LL":case"dd":case"HH":case"hh":case"mm":case"qq":case"ss":case"WW":return rn(s);case"MMM":return un(t.months("short",!0,!1),1);case"MMMM":return un(t.months("long",!0,!1),1);case"LLL":return un(t.months("short",!1,!1),1);case"LLLL":return un(t.months("long",!1,!1),1);case"o":case"S":return rn(l);case"ooo":case"SSS":return rn(r);case"u":return hn(u);case"uu":return hn(o);case"uuu":case"E":case"c":return rn(n);case"a":return un(t.meridiems(),0);case"EEE":return un(t.weekdays("short",!1,!1),1);case"EEEE":return un(t.weekdays("long",!1,!1),1);case"ccc":return un(t.weekdays("short",!0,!1),1);case"cccc":return un(t.weekdays("long",!0,!1),1);case"Z":case"ZZ":return dn(new RegExp(`([+-]${o.source})(?::(${s.source}))?`),2);case"ZZZ":return dn(new RegExp(`([+-]${o.source})(${s.source})?`),2);case"z":return hn(/[a-z_+-/]{1,256}?/i);default:return m(f)}})(e)||{invalidReason:"missing Intl.DateTimeFormat.formatToParts support"};return f.token=e,f}(t,e))),a=r.find((e=>e.invalidReason));if(a)return{input:t,tokens:s,invalidReason:a.invalidReason};{const[e,n]=function(e){return[`^${e.map((e=>e.regex)).reduce(((e,t)=>`${e}(${t.source})`),"")}$`,e]}(r),a=RegExp(e,"i"),[i,l]=function(e,t,n){const s=e.match(t);if(s){const e={};let t=1;for(const r in n)if(W(n,r)){const a=n[r],i=a.groups?a.groups+1:1;!a.literal&&a.token&&(e[a.token.val[0]]=a.deser(s.slice(t,t+i))),t+=i}return[s,e]}return[s,{}]}(t,a,n),[c,u,d]=l?function(e){let t,n=null;return Z(e.z)||(n=Ee.create(e.z)),Z(e.Z)||(n||(n=new Oe(e.Z)),t=e.Z),Z(e.q)||(e.M=3*(e.q-1)+1),Z(e.h)||(e.h<12&&1===e.a?e.h+=12:12===e.h&&0===e.a&&(e.h=0)),0===e.G&&e.y&&(e.y=-e.y),Z(e.u)||(e.S=U(e.u)),[Object.keys(e).reduce(((t,n)=>{const s=(e=>{switch(e){case"S":return"millisecond";case"s":return"second";case"m":return"minute";case"h":case"H":return"hour";case"d":return"day";case"o":return"ordinal";case"L":case"M":return"month";case"y":return"year";case"E":case"c":return"weekday";case"W":return"weekNumber";case"k":return"weekYear";case"q":return"quarter";default:return null}})(n);return s&&(t[s]=e[n]),t}),{}),n,t]}(l):[null,null,void 0];if(W(l,"a")&&W(l,"H"))throw new o("Can't include meridiem when specifying 24-hour format");return{input:t,tokens:s,regex:a,rawMatches:i,matches:l,result:c,zone:u,specificOffset:d}}}function pn(e,t){if(!e)return null;return Te.create(t,e).formatDateTimeParts((fn||(fn=Xn.fromMillis(1555555555555)),fn)).map((t=>function(e,t,n){const{type:s,value:r}=e;if("literal"===s)return{literal:!0,val:r};const a=n[s];let i=mn[s];return"object"==typeof i&&(i=i[a]),i?{literal:!1,val:i}:void 0}(t,0,e)))}const wn=[0,31,59,90,120,151,181,212,243,273,304,334],vn=[0,31,60,91,121,152,182,213,244,274,305,335];function Sn(e,t){return new Ce("unit out of range",`you specified ${t} (of type ${typeof t}) as a ${e}, which is invalid`)}function bn(e,t,n){const s=new Date(Date.UTC(e,t-1,n));e<100&&e>=0&&s.setUTCFullYear(s.getUTCFullYear()-1900);const r=s.getUTCDay();return 0===r?7:r}function Tn(e,t,n){return n+(G(e)?vn:wn)[t-1]}function Cn(e,t){const n=G(e)?vn:wn,s=n.findIndex((e=>eK(t)?(i=t+1,o=1):i=t,{weekYear:i,weekNumber:o,weekday:a,...ae(e)}}function xn(e){const{weekYear:t,weekNumber:n,weekday:s}=e,r=bn(t,1,4),a=J(t);let i,o=7*n+s-r-3;o<1?(i=t-1,o+=J(i)):o>a?(i=t+1,o-=J(t)):i=t;const{month:l,day:c}=Cn(i,o);return{year:i,month:l,day:c,...ae(e)}}function Mn(e){const{year:t,month:n,day:s}=e;return{year:t,ordinal:Tn(t,n,s),...ae(e)}}function Dn(e){const{year:t,ordinal:n}=e,{month:s,day:r}=Cn(t,n);return{year:t,month:s,day:r,...ae(e)}}function kn(e){const t=H(e.year),n=q(e.month,1,12),s=q(e.day,1,Y(e.year,e.month));return t?n?!s&&Sn("day",e.day):Sn("month",e.month):Sn("year",e.year)}function Ln(e){const{hour:t,minute:n,second:s,millisecond:r}=e,a=q(t,0,23)||24===t&&0===n&&0===s&&0===r,i=q(n,0,59),o=q(s,0,59),l=q(r,0,999);return a?i?o?!l&&Sn("millisecond",r):Sn("second",s):Sn("minute",n):Sn("hour",t)}const En="Invalid DateTime",Nn=864e13;function On(e){return new Ce("unsupported zone",`the zone "${e.name}" is not supported`)}function Fn(e){return null===e.weekData&&(e.weekData=In(e.c)),e.weekData}function $n(e,t){const n={ts:e.ts,zone:e.zone,c:e.c,o:e.o,loc:e.loc,invalid:e.invalid};return new Xn({...n,...t,old:n})}function Pn(e,t,n){let s=e-60*t*1e3;const r=n.offset(s);if(t===r)return[s,t];s-=60*(r-t)*1e3;const a=n.offset(s);return r===a?[s,r]:[e-60*Math.min(r,a)*1e3,Math.max(r,a)]}function Zn(e,t){const n=new Date(e+=60*t*1e3);return{year:n.getUTCFullYear(),month:n.getUTCMonth()+1,day:n.getUTCDate(),hour:n.getUTCHours(),minute:n.getUTCMinutes(),second:n.getUTCSeconds(),millisecond:n.getUTCMilliseconds()}}function Vn(e,t,n){return Pn(Q(e),t,n)}function Hn(e,t){const n=e.o,s=e.c.year+Math.trunc(t.years),r=e.c.month+Math.trunc(t.months)+3*Math.trunc(t.quarters),a={...e.c,year:s,month:r,day:Math.min(e.c.day,Y(s,r))+Math.trunc(t.days)+7*Math.trunc(t.weeks)},i=Gt.fromObject({years:t.years-Math.trunc(t.years),quarters:t.quarters-Math.trunc(t.quarters),months:t.months-Math.trunc(t.months),weeks:t.weeks-Math.trunc(t.weeks),days:t.days-Math.trunc(t.days),hours:t.hours,minutes:t.minutes,seconds:t.seconds,milliseconds:t.milliseconds}).as("milliseconds"),o=Q(a);let[l,c]=Pn(o,n,e.zone);return 0!==i&&(l+=i,c=e.zone.offset(l)),{ts:l,o:c}}function _n(e,t,n,s,r,a){const{setZone:i,zone:o}=n;if(e&&0!==Object.keys(e).length){const s=t||o,r=Xn.fromObject(e,{...n,zone:s,specificOffset:a});return i?r:r.setZone(o)}return Xn.invalid(new Ce("unparsable",`the input "${r}" can't be parsed as ${s}`))}function An(e,t,n=!0){return e.isValid?Te.create(Ke.create("en-US"),{allowZ:n,forceSimple:!0}).formatDateTimeFromString(e,t):null}function Wn(e,t){const n=e.c.year>9999||e.c.year<0;let s="";return n&&e.c.year>=0&&(s+="+"),s+=B(e.c.year,n?6:4),t?(s+="-",s+=B(e.c.month),s+="-",s+=B(e.c.day)):(s+=B(e.c.month),s+=B(e.c.day)),s}function qn(e,t,n,s,r,a){let i=B(e.c.hour);return t?(i+=":",i+=B(e.c.minute),0===e.c.second&&n||(i+=":")):i+=B(e.c.minute),0===e.c.second&&n||(i+=B(e.c.second),0===e.c.millisecond&&s||(i+=".",i+=B(e.c.millisecond,3))),r&&(e.isOffsetFixed&&0===e.offset&&!a?i+="Z":e.o<0?(i+="-",i+=B(Math.trunc(-e.o/60)),i+=":",i+=B(Math.trunc(-e.o%60))):(i+="+",i+=B(Math.trunc(e.o/60)),i+=":",i+=B(Math.trunc(e.o%60)))),a&&(i+="["+e.zone.ianaName+"]"),i}const Bn={month:1,day:1,hour:0,minute:0,second:0,millisecond:0},zn={weekNumber:1,weekday:1,hour:0,minute:0,second:0,millisecond:0},Rn={ordinal:1,hour:0,minute:0,second:0,millisecond:0},Un=["year","month","day","hour","minute","second","millisecond"],jn=["weekYear","weekNumber","weekday","hour","minute","second","millisecond"],Gn=["year","ordinal","hour","minute","second","millisecond"];function Jn(e){const t={year:"year",years:"year",month:"month",months:"month",day:"day",days:"day",hour:"hour",hours:"hour",minute:"minute",minutes:"minute",quarter:"quarter",quarters:"quarter",second:"second",seconds:"second",millisecond:"millisecond",milliseconds:"millisecond",weekday:"weekday",weekdays:"weekday",weeknumber:"weekNumber",weeksnumber:"weekNumber",weeknumbers:"weekNumber",weekyear:"weekYear",weekyears:"weekYear",ordinal:"ordinal"}[e.toLowerCase()];if(!t)throw new l(e);return t}function Yn(e,t){const n=$e(t.zone,We.defaultZone),s=Ke.fromObject(t),r=We.now();let a,i;if(Z(e.year))a=r;else{for(const t of Un)Z(e[t])&&(e[t]=Bn[t]);const t=kn(e)||Ln(e);if(t)return Xn.invalid(t);const s=n.offset(r);[a,i]=Vn(e,s,n)}return new Xn({ts:a,zone:n,loc:s,o:i})}function Qn(e,t,n){const s=!!Z(n.round)||n.round,r=(e,r)=>{e=j(e,s||n.calendary?0:2,!0);return t.loc.clone(n).relFormatter(n).format(e,r)},a=s=>n.calendary?t.hasSame(e,s)?0:t.startOf(s).diff(e.startOf(s),s).get(s):t.diff(e,s).get(s);if(n.unit)return r(a(n.unit),n.unit);for(const e of n.units){const t=a(e);if(Math.abs(t)>=1)return r(t,e)}return r(e>t?-0:0,n.units[n.units.length-1])}function Kn(e){let t,n={};return e.length>0&&"object"==typeof e[e.length-1]?(n=e[e.length-1],t=Array.from(e).slice(0,e.length-1)):t=Array.from(e),[n,t]}class Xn{constructor(e){const t=e.zone||We.defaultZone;let n=e.invalid||(Number.isNaN(e.ts)?new Ce("invalid input"):null)||(t.isValid?null:On(t));this.ts=Z(e.ts)?We.now():e.ts;let s=null,r=null;if(!n){if(e.old&&e.old.ts===this.ts&&e.old.zone.equals(t))[s,r]=[e.old.c,e.old.o];else{const e=t.offset(this.ts);s=Zn(this.ts,e),n=Number.isNaN(s.year)?new Ce("invalid input"):null,s=n?null:s,r=n?null:e}}this._zone=t,this.loc=e.loc||Ke.create(),this.invalid=n,this.weekData=null,this.c=s,this.o=r,this.isLuxonDateTime=!0}static now(){return new Xn({})}static local(){const[e,t]=Kn(arguments),[n,s,r,a,i,o,l]=t;return Yn({year:n,month:s,day:r,hour:a,minute:i,second:o,millisecond:l},e)}static utc(){const[e,t]=Kn(arguments),[n,s,r,a,i,o,l]=t;return e.zone=Oe.utcInstance,Yn({year:n,month:s,day:r,hour:a,minute:i,second:o,millisecond:l},e)}static fromJSDate(e,t={}){const n=(s=e,"[object Date]"===Object.prototype.toString.call(s)?e.valueOf():NaN);var s;if(Number.isNaN(n))return Xn.invalid("invalid input");const r=$e(t.zone,We.defaultZone);return r.isValid?new Xn({ts:n,zone:r,loc:Ke.fromObject(t)}):Xn.invalid(On(r))}static fromMillis(e,t={}){if(V(e))return e<-Nn||e>Nn?Xn.invalid("Timestamp out of range"):new Xn({ts:e,zone:$e(t.zone,We.defaultZone),loc:Ke.fromObject(t)});throw new c(`fromMillis requires a numerical input, but received a ${typeof e} with value ${e}`)}static fromSeconds(e,t={}){if(V(e))return new Xn({ts:1e3*e,zone:$e(t.zone,We.defaultZone),loc:Ke.fromObject(t)});throw new c("fromSeconds requires a numerical input")}static fromObject(e,t={}){e=e||{};const n=$e(t.zone,We.defaultZone);if(!n.isValid)return Xn.invalid(On(n));const s=We.now(),r=Z(t.specificOffset)?n.offset(s):t.specificOffset,a=se(e,Jn),i=!Z(a.ordinal),l=!Z(a.year),c=!Z(a.month)||!Z(a.day),u=l||c,d=a.weekYear||a.weekNumber,h=Ke.fromObject(t);if((u||i)&&d)throw new o("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(c&&i)throw new o("Can't mix ordinal dates with month/day");const m=d||a.weekday&&!u;let f,g,y=Zn(s,r);m?(f=jn,g=zn,y=In(y)):i?(f=Gn,g=Rn,y=Mn(y)):(f=Un,g=Bn);let p=!1;for(const e of f){Z(a[e])?a[e]=p?g[e]:y[e]:p=!0}const w=m?function(e){const t=H(e.weekYear),n=q(e.weekNumber,1,K(e.weekYear)),s=q(e.weekday,1,7);return t?n?!s&&Sn("weekday",e.weekday):Sn("week",e.week):Sn("weekYear",e.weekYear)}(a):i?function(e){const t=H(e.year),n=q(e.ordinal,1,J(e.year));return t?!n&&Sn("ordinal",e.ordinal):Sn("year",e.year)}(a):kn(a),v=w||Ln(a);if(v)return Xn.invalid(v);const S=m?xn(a):i?Dn(a):a,[b,T]=Vn(S,r,n),C=new Xn({ts:b,zone:n,o:T,loc:h});return a.weekday&&u&&e.weekday!==C.weekday?Xn.invalid("mismatched weekday",`you can't specify both a weekday of ${a.weekday} and a date of ${C.toISO()}`):C}static fromISO(e,t={}){const[n,s]=function(e){return tt(e,[Dt,Nt],[kt,Ot],[Lt,Ft],[Et,$t])}(e);return _n(n,s,t,"ISO 8601",e)}static fromRFC2822(e,t={}){const[n,s]=function(e){return tt(function(e){return e.replace(/\([^)]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").trim()}(e),[St,bt])}(e);return _n(n,s,t,"RFC 2822",e)}static fromHTTP(e,t={}){const[n,s]=function(e){return tt(e,[Tt,xt],[Ct,xt],[It,Mt])}(e);return _n(n,s,t,"HTTP",t)}static fromFormat(e,t,n={}){if(Z(e)||Z(t))throw new c("fromFormat requires an input string and a format");const{locale:s=null,numberingSystem:r=null}=n,a=Ke.fromOpts({locale:s,numberingSystem:r,defaultToEN:!0}),[i,o,l,u]=function(e,t,n){const{result:s,zone:r,specificOffset:a,invalidReason:i}=yn(e,t,n);return[s,r,a,i]}(a,e,t);return u?Xn.invalid(u):_n(i,o,n,`format ${t}`,e,l)}static fromString(e,t,n={}){return Xn.fromFormat(e,t,n)}static fromSQL(e,t={}){const[n,s]=function(e){return tt(e,[Zt,Nt],[Vt,Ht])}(e);return _n(n,s,t,"SQL",e)}static invalid(e,t=null){if(!e)throw new c("need to specify a reason the DateTime is invalid");const n=e instanceof Ce?e:new Ce(e,t);if(We.throwOnInvalid)throw new r(n);return new Xn({invalid:n})}static isDateTime(e){return e&&e.isLuxonDateTime||!1}static parseFormatForOpts(e,t={}){const n=pn(e,Ke.fromObject(t));return n?n.map((e=>e?e.val:null)).join(""):null}static expandFormat(e,t={}){return gn(Te.parseFormat(e),Ke.fromObject(t)).map((e=>e.val)).join("")}get(e){return this[e]}get isValid(){return null===this.invalid}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}get locale(){return this.isValid?this.loc.locale:null}get numberingSystem(){return this.isValid?this.loc.numberingSystem:null}get outputCalendar(){return this.isValid?this.loc.outputCalendar:null}get zone(){return this._zone}get zoneName(){return this.isValid?this.zone.name:null}get year(){return this.isValid?this.c.year:NaN}get quarter(){return this.isValid?Math.ceil(this.c.month/3):NaN}get month(){return this.isValid?this.c.month:NaN}get day(){return this.isValid?this.c.day:NaN}get hour(){return this.isValid?this.c.hour:NaN}get minute(){return this.isValid?this.c.minute:NaN}get second(){return this.isValid?this.c.second:NaN}get millisecond(){return this.isValid?this.c.millisecond:NaN}get weekYear(){return this.isValid?Fn(this).weekYear:NaN}get weekNumber(){return this.isValid?Fn(this).weekNumber:NaN}get weekday(){return this.isValid?Fn(this).weekday:NaN}get ordinal(){return this.isValid?Mn(this.c).ordinal:NaN}get monthShort(){return this.isValid?Qt.months("short",{locObj:this.loc})[this.month-1]:null}get monthLong(){return this.isValid?Qt.months("long",{locObj:this.loc})[this.month-1]:null}get weekdayShort(){return this.isValid?Qt.weekdays("short",{locObj:this.loc})[this.weekday-1]:null}get weekdayLong(){return this.isValid?Qt.weekdays("long",{locObj:this.loc})[this.weekday-1]:null}get offset(){return this.isValid?+this.o:NaN}get offsetNameShort(){return this.isValid?this.zone.offsetName(this.ts,{format:"short",locale:this.locale}):null}get offsetNameLong(){return this.isValid?this.zone.offsetName(this.ts,{format:"long",locale:this.locale}):null}get isOffsetFixed(){return this.isValid?this.zone.isUniversal:null}get isInDST(){return!this.isOffsetFixed&&(this.offset>this.set({month:1,day:1}).offset||this.offset>this.set({month:5}).offset)}get isInLeapYear(){return G(this.year)}get daysInMonth(){return Y(this.year,this.month)}get daysInYear(){return this.isValid?J(this.year):NaN}get weeksInWeekYear(){return this.isValid?K(this.weekYear):NaN}resolvedLocaleOptions(e={}){const{locale:t,numberingSystem:n,calendar:s}=Te.create(this.loc.clone(e),e).resolvedOptions(this);return{locale:t,numberingSystem:n,outputCalendar:s}}toUTC(e=0,t={}){return this.setZone(Oe.instance(e),t)}toLocal(){return this.setZone(We.defaultZone)}setZone(e,{keepLocalTime:t=!1,keepCalendarTime:n=!1}={}){if((e=$e(e,We.defaultZone)).equals(this.zone))return this;if(e.isValid){let s=this.ts;if(t||n){const t=e.offset(this.ts),n=this.toObject();[s]=Vn(n,t,e)}return $n(this,{ts:s,zone:e})}return Xn.invalid(On(e))}reconfigure({locale:e,numberingSystem:t,outputCalendar:n}={}){return $n(this,{loc:this.loc.clone({locale:e,numberingSystem:t,outputCalendar:n})})}setLocale(e){return this.reconfigure({locale:e})}set(e){if(!this.isValid)return this;const t=se(e,Jn),n=!Z(t.weekYear)||!Z(t.weekNumber)||!Z(t.weekday),s=!Z(t.ordinal),r=!Z(t.year),a=!Z(t.month)||!Z(t.day),i=r||a,l=t.weekYear||t.weekNumber;if((i||s)&&l)throw new o("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(a&&s)throw new o("Can't mix ordinal dates with month/day");let c;n?c=xn({...In(this.c),...t}):Z(t.ordinal)?(c={...this.toObject(),...t},Z(t.day)&&(c.day=Math.min(Y(c.year,c.month),c.day))):c=Dn({...Mn(this.c),...t});const[u,d]=Vn(c,this.o,this.zone);return $n(this,{ts:u,o:d})}plus(e){if(!this.isValid)return this;return $n(this,Hn(this,Gt.fromDurationLike(e)))}minus(e){if(!this.isValid)return this;return $n(this,Hn(this,Gt.fromDurationLike(e).negate()))}startOf(e){if(!this.isValid)return this;const t={},n=Gt.normalizeUnit(e);switch(n){case"years":t.month=1;case"quarters":case"months":t.day=1;case"weeks":case"days":t.hour=0;case"hours":t.minute=0;case"minutes":t.second=0;case"seconds":t.millisecond=0}if("weeks"===n&&(t.weekday=1),"quarters"===n){const e=Math.ceil(this.month/3);t.month=3*(e-1)+1}return this.set(t)}endOf(e){return this.isValid?this.plus({[e]:1}).startOf(e).minus(1):this}toFormat(e,t={}){return this.isValid?Te.create(this.loc.redefaultToEN(t)).formatDateTimeFromString(this,e):En}toLocaleString(e=f,t={}){return this.isValid?Te.create(this.loc.clone(t),e).formatDateTime(this):En}toLocaleParts(e={}){return this.isValid?Te.create(this.loc.clone(e),e).formatDateTimeParts(this):[]}toISO({format:e="extended",suppressSeconds:t=!1,suppressMilliseconds:n=!1,includeOffset:s=!0,extendedZone:r=!1}={}){if(!this.isValid)return null;const a="extended"===e;let i=Wn(this,a);return i+="T",i+=qn(this,a,t,n,s,r),i}toISODate({format:e="extended"}={}){return this.isValid?Wn(this,"extended"===e):null}toISOWeekDate(){return An(this,"kkkk-'W'WW-c")}toISOTime({suppressMilliseconds:e=!1,suppressSeconds:t=!1,includeOffset:n=!0,includePrefix:s=!1,extendedZone:r=!1,format:a="extended"}={}){if(!this.isValid)return null;return(s?"T":"")+qn(this,"extended"===a,t,e,n,r)}toRFC2822(){return An(this,"EEE, dd LLL yyyy HH:mm:ss ZZZ",!1)}toHTTP(){return An(this.toUTC(),"EEE, dd LLL yyyy HH:mm:ss 'GMT'")}toSQLDate(){return this.isValid?Wn(this,!0):null}toSQLTime({includeOffset:e=!0,includeZone:t=!1,includeOffsetSpace:n=!0}={}){let s="HH:mm:ss.SSS";return(t||e)&&(n&&(s+=" "),t?s+="z":e&&(s+="ZZ")),An(this,s,!0)}toSQL(e={}){return this.isValid?`${this.toSQLDate()} ${this.toSQLTime(e)}`:null}toString(){return this.isValid?this.toISO():En}valueOf(){return this.toMillis()}toMillis(){return this.isValid?this.ts:NaN}toSeconds(){return this.isValid?this.ts/1e3:NaN}toUnixInteger(){return this.isValid?Math.floor(this.ts/1e3):NaN}toJSON(){return this.toISO()}toBSON(){return this.toJSDate()}toObject(e={}){if(!this.isValid)return{};const t={...this.c};return e.includeConfig&&(t.outputCalendar=this.outputCalendar,t.numberingSystem=this.loc.numberingSystem,t.locale=this.loc.locale),t}toJSDate(){return new Date(this.isValid?this.ts:NaN)}diff(e,t="milliseconds",n={}){if(!this.isValid||!e.isValid)return Gt.invalid("created by diffing an invalid DateTime");const s={locale:this.locale,numberingSystem:this.numberingSystem,...n},r=(o=t,Array.isArray(o)?o:[o]).map(Gt.normalizeUnit),a=e.valueOf()>this.valueOf(),i=Xt(a?this:e,a?e:this,r,s);var o;return a?i.negate():i}diffNow(e="milliseconds",t={}){return this.diff(Xn.now(),e,t)}until(e){return this.isValid?Yt.fromDateTimes(this,e):this}hasSame(e,t){if(!this.isValid)return!1;const n=e.valueOf(),s=this.setZone(e.zone,{keepLocalTime:!0});return s.startOf(t)<=n&&n<=s.endOf(t)}equals(e){return this.isValid&&e.isValid&&this.valueOf()===e.valueOf()&&this.zone.equals(e.zone)&&this.loc.equals(e.loc)}toRelative(e={}){if(!this.isValid)return null;const t=e.base||Xn.fromObject({},{zone:this.zone}),n=e.padding?thise.valueOf()),Math.min)}static max(...e){if(!e.every(Xn.isDateTime))throw new c("max requires all arguments be DateTimes");return A(e,(e=>e.valueOf()),Math.max)}static fromFormatExplain(e,t,n={}){const{locale:s=null,numberingSystem:r=null}=n;return yn(Ke.fromOpts({locale:s,numberingSystem:r,defaultToEN:!0}),e,t)}static fromStringExplain(e,t,n={}){return Xn.fromFormatExplain(e,t,n)}static get DATE_SHORT(){return f}static get DATE_MED(){return g}static get DATE_MED_WITH_WEEKDAY(){return y}static get DATE_FULL(){return p}static get DATE_HUGE(){return w}static get TIME_SIMPLE(){return v}static get TIME_WITH_SECONDS(){return S}static get TIME_WITH_SHORT_OFFSET(){return b}static get TIME_WITH_LONG_OFFSET(){return T}static get TIME_24_SIMPLE(){return C}static get TIME_24_WITH_SECONDS(){return I}static get TIME_24_WITH_SHORT_OFFSET(){return x}static get TIME_24_WITH_LONG_OFFSET(){return M}static get DATETIME_SHORT(){return D}static get DATETIME_SHORT_WITH_SECONDS(){return k}static get DATETIME_MED(){return L}static get DATETIME_MED_WITH_SECONDS(){return E}static get DATETIME_MED_WITH_WEEKDAY(){return N}static get DATETIME_FULL(){return O}static get DATETIME_FULL_WITH_SECONDS(){return F}static get DATETIME_HUGE(){return $}static get DATETIME_HUGE_WITH_SECONDS(){return P}}function es(e){if(Xn.isDateTime(e))return e;if(e&&e.valueOf&&V(e.valueOf()))return Xn.fromJSDate(e);if(e&&"object"==typeof e)return Xn.fromObject(e);throw new c(`Unknown datetime argument: ${e}, of type ${typeof e}`)}}},t={};function n(s){var r=t[s];if(void 0!==r)return r.exports;var a=t[s]={exports:{}};return e[s](a,a.exports,n),a.exports}n.d=(e,t)=>{for(var s in t)n.o(t,s)&&!n.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:t[s]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n(496),n(172),n(428),n(372),n(582),n(583),n(967),n(495),n(748),n(478),n(257),n(449),n(846);n(407)})(); \ No newline at end of file diff --git a/gulp/publish-frontend.js b/gulp/publish-frontend.js index fdd2d02..b64d1b3 100644 --- a/gulp/publish-frontend.js +++ b/gulp/publish-frontend.js @@ -164,4 +164,6 @@ gulp.task('invalidate', async () => cloudfront.createInvalidation({ }, }).promise()); -module.exports = gulp.series(clean, gulp.parallel('build_js', 'compress_js_data', 'compress_js_vendor', 'copy_css', 'compress_html', 'copy_other_files'), gulp.parallel('upload', 'upload_images'), 'invalidate'); +// upload_images could be in parallel with upload, but _images logs a lot and has little changes +// by running upload last the majority of the changes will be at the bottom of the log for easy viewing +module.exports = gulp.series(clean, gulp.parallel('build_js', 'compress_js_data', 'compress_js_vendor', 'copy_css', 'compress_html', 'copy_other_files'), 'upload_images', 'upload', 'invalidate');