@signalk/freeboard-sk 2.14.0 → 2.14.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (27) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/package.json +19 -19
  3. package/plugin/weather/openweather.js +4 -4
  4. package/public/3rdpartylicenses.txt +153 -7
  5. package/public/78.d4c5c5157ba92d44.js +1 -0
  6. package/public/assets/help/index.html +92 -20
  7. package/public/assets/img/{ais_active.svg → vessels/ais_active.svg} +5 -5
  8. package/public/assets/img/{ais_buddy.svg → vessels/ais_buddy.svg} +5 -5
  9. package/public/assets/img/{ais_cargo.svg → vessels/ais_cargo.svg} +5 -5
  10. package/public/assets/img/{ais_highspeed.svg → vessels/ais_highspeed.svg} +5 -5
  11. package/public/assets/img/{ais_inactive.svg → vessels/ais_inactive.svg} +5 -5
  12. package/public/assets/img/{ais_other.svg → vessels/ais_other.svg} +5 -5
  13. package/public/assets/img/{ais_passenger.svg → vessels/ais_passenger.svg} +5 -5
  14. package/public/assets/img/{ais_special.svg → vessels/ais_special.svg} +5 -5
  15. package/public/assets/img/{ais_tanker.svg → vessels/ais_tanker.svg} +5 -5
  16. package/public/index.html +3 -3
  17. package/public/main.51f0a336e1edbb3e.js +1 -0
  18. package/public/polyfills.45968bfada535c74.js +1 -0
  19. package/public/{runtime.6aa83b1321328ad0.js → runtime.6237108b22a63408.js} +1 -1
  20. package/public/styles.ca697d30ce6fe074.css +1 -0
  21. package/plugin/autopilot/pypilot.js +0 -319
  22. package/public/852.f44ac7e36ef8ff50.js +0 -1
  23. package/public/main.9037b6c388247b8e.js +0 -1
  24. package/public/polyfills.bf508ef8069fb5c5.js +0 -1
  25. package/public/styles.d4b33102dd9d01a6.css +0 -1
  26. /package/public/assets/img/{ais_flag.svg → vessels/ais_flag.svg} +0 -0
  27. /package/public/assets/img/{ais_self.png → vessels/ais_self.png} +0 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,20 @@
1
1
  # CHANGELOG: Freeboard
2
2
 
3
+ ### v2.14.2
4
+
5
+ - **Update**: Hide More / Less buttoon when Alert does not have addittional properties (#272)
6
+ - **Fixed**: Refresh of charts list after the addition of a new chart source. (#266)
7
+
8
+
9
+ ### v2.14.1
10
+
11
+ - **Fixed**: Unhandled error when Track resource has an undefined name property. (#262)
12
+ - **Fixed**: Self Vessel trail is not reset when focus is given to another vessel. (#268)
13
+ - **Update**: Display distance from self vessel in AIS vessel information. (#269)
14
+ - **Update**: GPX Import error reporting.
15
+ - **Update**: Angular v19.
16
+
17
+
3
18
  ### v2.14.0
4
19
 
5
20
  #### Deprecated: Local PyPilot support.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@signalk/freeboard-sk",
3
- "version": "2.14.0",
3
+ "version": "2.14.2",
4
4
  "description": "Openlayers chart plotter implementation for Signal K",
5
5
  "keywords": [
6
6
  "signalk-webapp",
@@ -45,19 +45,19 @@
45
45
  "uuid": "^11.1.0"
46
46
  },
47
47
  "devDependencies": {
48
- "@angular-devkit/build-angular": "^18.1.0",
49
- "@angular/animations": "^18.1.0",
50
- "@angular/cdk": "^18.1.0",
51
- "@angular/cli": "^18.1.0",
52
- "@angular/common": "^18.1.0",
53
- "@angular/compiler": "^18.1.0",
54
- "@angular/compiler-cli": "^18.1.0",
55
- "@angular/core": "^18.1.0",
56
- "@angular/forms": "^18.1.0",
57
- "@angular/language-service": "^18.1.0",
58
- "@angular/material": "^18.1.0",
59
- "@angular/platform-browser": "^18.1.0",
60
- "@angular/platform-browser-dynamic": "^18.1.0",
48
+ "@angular-devkit/build-angular": "^19.2.4",
49
+ "@angular/animations": "^19.2.3",
50
+ "@angular/cdk": "^19.2.6",
51
+ "@angular/cli": "^19.2.4",
52
+ "@angular/common": "^19.2.3",
53
+ "@angular/compiler": "^19.2.3",
54
+ "@angular/compiler-cli": "^19.2.3",
55
+ "@angular/core": "^19.2.3",
56
+ "@angular/forms": "^19.2.3",
57
+ "@angular/language-service": "^19.2.3",
58
+ "@angular/material": "^19.2.6",
59
+ "@angular/platform-browser": "^19.2.3",
60
+ "@angular/platform-browser-dynamic": "^19.2.3",
61
61
  "@kolkov/angular-editor": "^2.1.0",
62
62
  "@types/arcgis-rest-api": "^10.4.5",
63
63
  "@types/express": "^4.17.17",
@@ -67,8 +67,8 @@
67
67
  "@types/node": "^20.4.5",
68
68
  "@types/topojson-specification": "^1.0.2",
69
69
  "@types/xml2js": "^0.4.14",
70
- "@typescript-eslint/eslint-plugin": "^8.18.1",
71
- "@typescript-eslint/parser": "^8.18.1",
70
+ "@typescript-eslint/eslint-plugin": "^8.27.0",
71
+ "@typescript-eslint/parser": "^8.27.0",
72
72
  "codelyzer": "^6.0.0",
73
73
  "eslint": "^9.17.0",
74
74
  "geolib": "^3.3.3",
@@ -79,7 +79,7 @@
79
79
  "karma-coverage-istanbul-reporter": "~3.0.2",
80
80
  "karma-jasmine": "~4.0.0",
81
81
  "karma-jasmine-html-reporter": "^1.5.0",
82
- "ng-packagr": "^18.1.0",
82
+ "ng-packagr": "^19.2.0",
83
83
  "ngeohash": "^0.6.3",
84
84
  "ol": "^10.2.1",
85
85
  "ol-mapbox-style": "^12.3.5",
@@ -96,8 +96,8 @@
96
96
  "stream": "^0.0.2",
97
97
  "timers": "^0.1.1",
98
98
  "ts-node": "~7.0.0",
99
- "typescript": "~5.4.2",
99
+ "typescript": "~5.8.2",
100
100
  "xml2js": "^0.6.2",
101
- "zone.js": "~0.14.4"
101
+ "zone.js": "~0.15.0"
102
102
  }
103
103
  }
@@ -62,13 +62,13 @@ class OpenWeather {
62
62
  },
63
63
  outside: {
64
64
  uvIndex: current.uvi ?? null,
65
- cloudCover: current.clouds / 100 ?? null,
65
+ cloudCover: current.clouds ? current.clouds / 100 : null,
66
66
  horizontalVisibility: current.visibility ?? null,
67
67
  temperature: current.temp ?? null,
68
68
  feelsLikeTemperature: current.feels_like ?? null,
69
69
  dewPointTemperature: current.dew_point ?? null,
70
70
  pressure: current.pressure ? current.pressure * 100 : null,
71
- absoluteHumidity: current.humidity / 100 ?? null,
71
+ absoluteHumidity: current.humidity ? current.humidity / 100 : null,
72
72
  precipitationType: current.rain && typeof current.rain['1h'] !== 'undefined'
73
73
  ? 'rain'
74
74
  : current.snow && typeof current.snow['1h'] !== 'undefined'
@@ -124,10 +124,10 @@ class OpenWeather {
124
124
  }
125
125
  forecast.outside.dewPointTemperature = f.dew_point ?? null;
126
126
  forecast.outside.uvIndex = f.uvi ?? null;
127
- forecast.outside.cloudCover = f.clouds / 100 ?? null;
127
+ forecast.outside.cloudCover = f.clouds ? f.clouds / 100 : null;
128
128
  forecast.outside.pressure =
129
129
  typeof f.pressure !== 'undefined' ? f.pressure * 100 : null;
130
- forecast.outside.absoluteHumidity = f.humidity / 100 ?? null;
130
+ forecast.outside.absoluteHumidity = f.humidity ? (f.humidity / 100) : null;
131
131
  forecast.wind.speedTrue = f.wind_speed ?? null;
132
132
  forecast.wind.directionTrue =
133
133
  typeof f.wind_deg !== 'undefined'
@@ -2,7 +2,7 @@
2
2
  MIT
3
3
  The MIT License
4
4
 
5
- Copyright (c) 2010-2024 Google LLC. https://angular.dev/license
5
+ Copyright (c) 2010-2025 Google LLC. https://angular.dev/license
6
6
 
7
7
  Permission is hereby granted, free of charge, to any person obtaining a copy
8
8
  of this software and associated documentation files (the "Software"), to deal
@@ -27,7 +27,7 @@ THE SOFTWARE.
27
27
  MIT
28
28
  The MIT License
29
29
 
30
- Copyright (c) 2024 Google LLC.
30
+ Copyright (c) 2025 Google LLC.
31
31
 
32
32
  Permission is hereby granted, free of charge, to any person obtaining a copy
33
33
  of this software and associated documentation files (the "Software"), to deal
@@ -52,7 +52,7 @@ THE SOFTWARE.
52
52
  MIT
53
53
  The MIT License
54
54
 
55
- Copyright (c) 2010-2024 Google LLC. https://angular.dev/license
55
+ Copyright (c) 2010-2025 Google LLC. https://angular.dev/license
56
56
 
57
57
  Permission is hereby granted, free of charge, to any person obtaining a copy
58
58
  of this software and associated documentation files (the "Software"), to deal
@@ -77,7 +77,7 @@ THE SOFTWARE.
77
77
  MIT
78
78
  The MIT License
79
79
 
80
- Copyright (c) 2010-2024 Google LLC. https://angular.dev/license
80
+ Copyright (c) 2010-2025 Google LLC. https://angular.dev/license
81
81
 
82
82
  Permission is hereby granted, free of charge, to any person obtaining a copy
83
83
  of this software and associated documentation files (the "Software"), to deal
@@ -102,7 +102,7 @@ THE SOFTWARE.
102
102
  MIT
103
103
  The MIT License
104
104
 
105
- Copyright (c) 2010-2024 Google LLC. https://angular.dev/license
105
+ Copyright (c) 2010-2025 Google LLC. https://angular.dev/license
106
106
 
107
107
  Permission is hereby granted, free of charge, to any person obtaining a copy
108
108
  of this software and associated documentation files (the "Software"), to deal
@@ -127,7 +127,7 @@ THE SOFTWARE.
127
127
  MIT
128
128
  The MIT License
129
129
 
130
- Copyright (c) 2024 Google LLC.
130
+ Copyright (c) 2025 Google LLC.
131
131
 
132
132
  Permission is hereby granted, free of charge, to any person obtaining a copy
133
133
  of this software and associated documentation files (the "Software"), to deal
@@ -152,7 +152,7 @@ THE SOFTWARE.
152
152
  MIT
153
153
  The MIT License
154
154
 
155
- Copyright (c) 2010-2024 Google LLC. https://angular.dev/license
155
+ Copyright (c) 2010-2025 Google LLC. https://angular.dev/license
156
156
 
157
157
  Permission is hereby granted, free of charge, to any person obtaining a copy
158
158
  of this software and associated documentation files (the "Software"), to deal
@@ -198,6 +198,126 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
198
198
  SOFTWARE.
199
199
 
200
200
 
201
+ @maplibre/maplibre-gl-style-spec
202
+ ISC
203
+ Copyright (c) 2020, MapLibre contributors
204
+
205
+ All rights reserved.
206
+
207
+ Redistribution and use in source and binary forms, with or without modification,
208
+ are permitted provided that the following conditions are met:
209
+
210
+ * Redistributions of source code must retain the above copyright notice,
211
+ this list of conditions and the following disclaimer.
212
+ * Redistributions in binary form must reproduce the above copyright notice,
213
+ this list of conditions and the following disclaimer in the documentation
214
+ and/or other materials provided with the distribution.
215
+ * Neither the name of MapLibre GL JS nor the names of its contributors
216
+ may be used to endorse or promote products derived from this software
217
+ without specific prior written permission.
218
+
219
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
220
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
221
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
222
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
223
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
224
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
225
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
226
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
227
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
228
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
229
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
230
+
231
+
232
+ -------------------------------------------------------------------------------
233
+
234
+ Contains code from mapbox-gl-js v1.13 and earlier
235
+
236
+ Version v1.13 of mapbox-gl-js and earlier are licensed under a BSD-3-Clause license
237
+
238
+ Copyright (c) 2020, Mapbox
239
+ Redistribution and use in source and binary forms, with or without modification,
240
+ are permitted provided that the following conditions are met:
241
+
242
+ * Redistributions of source code must retain the above copyright notice,
243
+ this list of conditions and the following disclaimer.
244
+ * Redistributions in binary form must reproduce the above copyright notice,
245
+ this list of conditions and the following disclaimer in the documentation
246
+ and/or other materials provided with the distribution.
247
+ * Neither the name of Mapbox GL JS nor the names of its contributors
248
+ may be used to endorse or promote products derived from this software
249
+ without specific prior written permission.
250
+
251
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
252
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
253
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
254
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
255
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
256
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
257
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
258
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
259
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
260
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
261
+ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
262
+
263
+
264
+ -------------------------------------------------------------------------------
265
+
266
+ Contains code from glfx.js
267
+
268
+ Copyright (C) 2011 by Evan Wallace
269
+
270
+ Permission is hereby granted, free of charge, to any person obtaining a copy
271
+ of this software and associated documentation files (the "Software"), to deal
272
+ in the Software without restriction, including without limitation the rights
273
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
274
+ copies of the Software, and to permit persons to whom the Software is
275
+ furnished to do so, subject to the following conditions:
276
+
277
+ The above copyright notice and this permission notice shall be included in
278
+ all copies or substantial portions of the Software.
279
+
280
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
281
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
282
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
283
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
284
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
285
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
286
+ THE SOFTWARE.
287
+
288
+ --------------------------------------------------------------------------------
289
+
290
+ Contains a portion of d3-color https://github.com/d3/d3-color
291
+
292
+ Copyright 2010-2016 Mike Bostock
293
+ All rights reserved.
294
+
295
+ Redistribution and use in source and binary forms, with or without modification,
296
+ are permitted provided that the following conditions are met:
297
+
298
+ * Redistributions of source code must retain the above copyright notice, this
299
+ list of conditions and the following disclaimer.
300
+
301
+ * Redistributions in binary form must reproduce the above copyright notice,
302
+ this list of conditions and the following disclaimer in the documentation
303
+ and/or other materials provided with the distribution.
304
+
305
+ * Neither the name of the author nor the names of contributors may be used to
306
+ endorse or promote products derived from this software without specific prior
307
+ written permission.
308
+
309
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
310
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
311
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
312
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
313
+ ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
314
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
315
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
316
+ ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
317
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
318
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
319
+
320
+
201
321
  @signalk/server-api
202
322
  Apache-2.0
203
323
 
@@ -409,6 +529,32 @@ Redistribution and use in source and binary forms, with or without modification,
409
529
  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
410
530
 
411
531
 
532
+ mapbox-to-css-font
533
+ BSD-2-Clause
534
+ Copyright 2016-present mapbox-to-css-font contributors
535
+
536
+ Redistribution and use in source and binary forms, with or without
537
+ modification, are permitted provided that the following conditions are met:
538
+
539
+ 1. Redistributions of source code must retain the above copyright notice, this
540
+ list of conditions and the following disclaimer.
541
+
542
+ 2. Redistributions in binary form must reproduce the above copyright notice,
543
+ this list of conditions and the following disclaimer in the documentation
544
+ and/or other materials provided with the distribution.
545
+
546
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
547
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
548
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
549
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
550
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
551
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
552
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
553
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
554
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
555
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
556
+
557
+
412
558
  mgrs
413
559
  MIT
414
560
  Copyright (c) 2012, Mike Adair, Richard Greenwood, Didier Richard, Stephen Irons, Olivier Terral, Calvin Metcalf
@@ -0,0 +1 @@
1
+ (()=>{"use strict";var nb={179:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=n(7636);t.default=function(a){var u=r.areaConversion[arguments.length>1&&void 0!==arguments[1]?arguments[1]:"m"];if(u)return a*u;throw new Error("Invalid unit used for area conversion.")}},190:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=l(n(7029)),o=l(n(3100)),i=l(n(5705)),s=l(n(942)),a=n(7636);function l(d){return d&&d.__esModule?d:{default:d}}t.default=function(f,p){var oe,Ee,h=(0,r.default)(f),g=(0,o.default)(f),m=(0,i.default)(h),y=(0,i.default)(g),v=p/a.earthRadius,M=m-v,S=m+v,P=(0,i.default)(a.MAXLAT),fe=(0,i.default)(a.MINLAT),ee=(0,i.default)(a.MAXLON),he=(0,i.default)(a.MINLON);if(M>fe&&S<P){var $n=Math.asin(Math.sin(v)/Math.cos(m));(oe=y-$n)<he&&(oe+=2*Math.PI),(Ee=y+$n)>ee&&(Ee-=2*Math.PI)}else M=Math.max(M,fe),S=Math.min(S,P),oe=he,Ee=ee;return[{latitude:(0,s.default)(M),longitude:(0,s.default)(oe)},{latitude:(0,s.default)(S),longitude:(0,s.default)(Ee)}]}},202:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=function o(a){return a&&a.__esModule?a:{default:a}}(n(8674));t.default=function(l,u,c){return(0,r.default)(l,u,.01)<c}},266:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=a(n(3026)),o=a(n(4902)),i=a(n(1532)),s=n(7636);function a(c){return c&&c.__esModule?c:{default:c}}t.default=function c(d){return(0,r.default)(d)?!(parseFloat(d)>s.MAXLON||d<s.MINLON):!!(0,o.default)(d)&&c((0,i.default)(d))}},354:(e,t)=>{function i(c,d){(null==d||d>c.length)&&(d=c.length);for(var f=0,p=new Array(d);f<d;f++)p[f]=c[f];return p}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0,t.default=function(d){if(!d.startsWith("POLYGON"))throw new Error("Invalid wkt.");return d.slice(d.indexOf("(")+2,d.indexOf(")")).split(", ").map(function(h){var m=function n(c,d){return function a(c){if(Array.isArray(c))return c}(c)||function s(c,d){if(!(typeof Symbol>"u")&&Symbol.iterator in Object(c)){var f=[],p=!0,h=!1,g=void 0;try{for(var y,m=c[Symbol.iterator]();!(p=(y=m.next()).done)&&(f.push(y.value),!d||f.length!==d);p=!0);}catch(v){h=!0,g=v}finally{try{!p&&null!=m.return&&m.return()}finally{if(h)throw g}}return f}}(c,d)||function o(c,d){if(c){if("string"==typeof c)return i(c,d);var f=Object.prototype.toString.call(c).slice(8,-1);if("Object"===f&&c.constructor&&(f=c.constructor.name),"Map"===f||"Set"===f)return Array.from(c);if("Arguments"===f||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(f))return i(c,d)}}(c,d)||function r(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}(h.split(" "),2),v=m[1];return{longitude:parseFloat(m[0]),latitude:parseFloat(v)}})}},884:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=a(n(7029)),o=a(n(3100)),i=a(n(5705)),s=a(n(942));function a(c){return c&&c.__esModule?c:{default:c}}t.default=function(d,f){var p=(0,r.default)(f),h=(0,o.default)(f),g=(0,r.default)(d),m=(0,o.default)(d);return((0,s.default)(Math.atan2(Math.sin((0,i.default)(h)-(0,i.default)(m))*Math.cos((0,i.default)(p)),Math.cos((0,i.default)(g))*Math.sin((0,i.default)(p))-Math.sin((0,i.default)(g))*Math.cos((0,i.default)(p))*Math.cos((0,i.default)(h)-(0,i.default)(m))))+360)%360}},917:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=n(7636);t.default=function(a){var u=r.distanceConversion[arguments.length>1&&void 0!==arguments[1]?arguments[1]:"m"];if(u)return a*u;throw new Error("Invalid unit used for distance conversion.")}},939:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=a(n(7029)),o=a(n(3100)),i=a(n(5705)),s=a(n(942));function a(c){return c&&c.__esModule?c:{default:c}}t.default=function(d,f){var p=(0,i.default)((0,o.default)(f))-(0,i.default)((0,o.default)(d)),h=Math.log(Math.tan((0,i.default)((0,r.default)(f))/2+Math.PI/4)/Math.tan((0,i.default)((0,r.default)(d))/2+Math.PI/4));return Math.abs(p)>Math.PI&&(p=p>0?-1*(2*Math.PI-p):2*Math.PI+p),((0,s.default)(Math.atan2(p,h))+360)%360}},942:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0,t.default=function(i){return 180*i/Math.PI}},1118:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=function o(a){return a&&a.__esModule?a:{default:a}}(n(2447));t.default=function(l,u){return(0,r.default)(l,u)[0]}},1167:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=n(7636);t.default=function(a){switch(arguments.length>1&&void 0!==arguments[1]?arguments[1]:"kmh"){case"kmh":return a*r.timeConversion.h*r.distanceConversion.km;case"mph":return a*r.timeConversion.h*r.distanceConversion.mi;default:return a}}},1532:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=n(7636);t.default=function(a){var l=new RegExp(r.sexagesimalPattern).exec(a.toString().trim());if(typeof l>"u"||null===l)throw new Error("Given value is not in sexagesimal format");var u=Number(l[2])/60||0,c=Number(l[4])/3600||0,d=parseFloat(l[1])+u+c;return["S","W"].includes(l[7])?-d:d}},1691:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=a(n(5705)),o=a(n(7029)),i=a(n(3100)),s=n(7636);function a(c){return c&&c.__esModule?c:{default:c}}t.default=function(d){var f=0;if(d.length>2){for(var p,h,g,m=0;m<d.length;m++){m===d.length-2?(p=d.length-2,h=d.length-1,g=0):m===d.length-1?(p=d.length-1,h=0,g=1):(p=m,h=m+1,g=m+2);var y=(0,i.default)(d[p]),v=(0,o.default)(d[h]),M=(0,i.default)(d[g]);f+=((0,r.default)(M)-(0,r.default)(y))*Math.sin((0,r.default)(v))}f=f*s.earthRadius*s.earthRadius/2}return Math.abs(f)}},2222:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=l(n(7029)),o=l(n(3100)),i=l(n(5705)),s=l(n(942)),a=n(7636);function l(d){return d&&d.__esModule?d:{default:d}}t.default=function(f,p,h){var g=arguments.length>3&&void 0!==arguments[3]?arguments[3]:6371e3,m=(0,r.default)(f),y=(0,o.default)(f),v=p/g,M=(0,i.default)(h),S=(0,i.default)(m),P=(0,i.default)(y),fe=Math.asin(Math.sin(S)*Math.cos(v)+Math.cos(S)*Math.sin(v)*Math.cos(M)),ee=P+Math.atan2(Math.sin(M)*Math.sin(v)*Math.cos(S),Math.cos(v)-Math.sin(S)*Math.sin(fe)),he=(0,s.default)(ee);return(he<a.MINLON||he>a.MAXLON)&&(ee=(ee+3*Math.PI)%(2*Math.PI)-Math.PI,he=(0,s.default)(ee)),{latitude:(0,s.default)(fe),longitude:he}}},2447:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=function o(a){return a&&a.__esModule?a:{default:a}}(n(8674));t.default=function(l,u){var c=arguments.length>2&&void 0!==arguments[2]?arguments[2]:r.default;return c="function"==typeof c?c:r.default,u.slice().sort(function(d,f){return c(l,d)-c(l,f)})}},2541:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0});var r={computeDestinationPoint:!0,convertArea:!0,convertDistance:!0,convertSpeed:!0,decimalToSexagesimal:!0,findNearest:!0,getAreaOfPolygon:!0,getBounds:!0,getBoundsOfDistance:!0,getCenter:!0,getCenterOfBounds:!0,getCompassDirection:!0,getCoordinateKey:!0,getCoordinateKeys:!0,getDistance:!0,getDistanceFromLine:!0,getGreatCircleBearing:!0,getLatitude:!0,getLongitude:!0,getPathLength:!0,getPreciseDistance:!0,getRhumbLineBearing:!0,getRoughCompassDirection:!0,getSpeed:!0,isDecimal:!0,isPointInLine:!0,isPointInPolygon:!0,isPointNearLine:!0,isPointWithinRadius:!0,isSexagesimal:!0,isValidCoordinate:!0,isValidLatitude:!0,isValidLongitude:!0,orderByDistance:!0,sexagesimalToDecimal:!0,toDecimal:!0,toRad:!0,toDeg:!0,wktToPolygon:!0};Object.defineProperty(t,"computeDestinationPoint",{enumerable:!0,get:function(){return o.default}}),Object.defineProperty(t,"convertArea",{enumerable:!0,get:function(){return i.default}}),Object.defineProperty(t,"convertDistance",{enumerable:!0,get:function(){return s.default}}),Object.defineProperty(t,"convertSpeed",{enumerable:!0,get:function(){return a.default}}),Object.defineProperty(t,"decimalToSexagesimal",{enumerable:!0,get:function(){return l.default}}),Object.defineProperty(t,"findNearest",{enumerable:!0,get:function(){return u.default}}),Object.defineProperty(t,"getAreaOfPolygon",{enumerable:!0,get:function(){return c.default}}),Object.defineProperty(t,"getBounds",{enumerable:!0,get:function(){return d.default}}),Object.defineProperty(t,"getBoundsOfDistance",{enumerable:!0,get:function(){return f.default}}),Object.defineProperty(t,"getCenter",{enumerable:!0,get:function(){return p.default}}),Object.defineProperty(t,"getCenterOfBounds",{enumerable:!0,get:function(){return h.default}}),Object.defineProperty(t,"getCompassDirection",{enumerable:!0,get:function(){return g.default}}),Object.defineProperty(t,"getCoordinateKey",{enumerable:!0,get:function(){return m.default}}),Object.defineProperty(t,"getCoordinateKeys",{enumerable:!0,get:function(){return y.default}}),Object.defineProperty(t,"getDistance",{enumerable:!0,get:function(){return v.default}}),Object.defineProperty(t,"getDistanceFromLine",{enumerable:!0,get:function(){return M.default}}),Object.defineProperty(t,"getGreatCircleBearing",{enumerable:!0,get:function(){return S.default}}),Object.defineProperty(t,"getLatitude",{enumerable:!0,get:function(){return P.default}}),Object.defineProperty(t,"getLongitude",{enumerable:!0,get:function(){return fe.default}}),Object.defineProperty(t,"getPathLength",{enumerable:!0,get:function(){return ee.default}}),Object.defineProperty(t,"getPreciseDistance",{enumerable:!0,get:function(){return he.default}}),Object.defineProperty(t,"getRhumbLineBearing",{enumerable:!0,get:function(){return oe.default}}),Object.defineProperty(t,"getRoughCompassDirection",{enumerable:!0,get:function(){return Ee.default}}),Object.defineProperty(t,"getSpeed",{enumerable:!0,get:function(){return $n.default}}),Object.defineProperty(t,"isDecimal",{enumerable:!0,get:function(){return ja.default}}),Object.defineProperty(t,"isPointInLine",{enumerable:!0,get:function(){return Yr.default}}),Object.defineProperty(t,"isPointInPolygon",{enumerable:!0,get:function(){return Jr.default}}),Object.defineProperty(t,"isPointNearLine",{enumerable:!0,get:function(){return Xr.default}}),Object.defineProperty(t,"isPointWithinRadius",{enumerable:!0,get:function(){return an.default}}),Object.defineProperty(t,"isSexagesimal",{enumerable:!0,get:function(){return Bn.default}}),Object.defineProperty(t,"isValidCoordinate",{enumerable:!0,get:function(){return Ha.default}}),Object.defineProperty(t,"isValidLatitude",{enumerable:!0,get:function(){return $a.default}}),Object.defineProperty(t,"isValidLongitude",{enumerable:!0,get:function(){return Si.default}}),Object.defineProperty(t,"orderByDistance",{enumerable:!0,get:function(){return ki.default}}),Object.defineProperty(t,"sexagesimalToDecimal",{enumerable:!0,get:function(){return xi.default}}),Object.defineProperty(t,"toDecimal",{enumerable:!0,get:function(){return Nt.default}}),Object.defineProperty(t,"toRad",{enumerable:!0,get:function(){return zd.default}}),Object.defineProperty(t,"toDeg",{enumerable:!0,get:function(){return Ri.default}}),Object.defineProperty(t,"wktToPolygon",{enumerable:!0,get:function(){return Gd.default}});var o=H(n(2222)),i=H(n(179)),s=H(n(917)),a=H(n(1167)),l=H(n(8948)),u=H(n(1118)),c=H(n(1691)),d=H(n(9144)),f=H(n(190)),p=H(n(5524)),h=H(n(7088)),g=H(n(9952)),m=H(n(8744)),y=H(n(4695)),v=H(n(8674)),M=H(n(7504)),S=H(n(884)),P=H(n(7029)),fe=H(n(3100)),ee=H(n(5378)),he=H(n(2671)),oe=H(n(939)),Ee=H(n(2845)),$n=H(n(8950)),ja=H(n(3026)),Yr=H(n(4194)),Jr=H(n(3536)),Xr=H(n(2787)),an=H(n(202)),Bn=H(n(4902)),Ha=H(n(7637)),$a=H(n(6563)),Si=H(n(266)),ki=H(n(2447)),xi=H(n(1532)),Nt=H(n(5101)),zd=H(n(5705)),Ri=H(n(942)),Gd=H(n(354)),Ba=n(7636);function H(x){return x&&x.__esModule?x:{default:x}}Object.keys(Ba).forEach(function(x){"default"===x||"__esModule"===x||Object.prototype.hasOwnProperty.call(r,x)||Object.defineProperty(t,x,{enumerable:!0,get:function(){return Ba[x]}})})},2671:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=a(n(7029)),o=a(n(3100)),i=a(n(5705)),s=n(7636);function a(c){return c&&c.__esModule?c:{default:c}}t.default=function(d,f){var p=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;p=typeof p<"u"&&!isNaN(p)?p:1;var P,fe,ee,he,oe,Ee,Ha,h=(0,r.default)(d),g=(0,o.default)(d),m=(0,r.default)(f),y=(0,o.default)(f),v=6356752.314245,M=1/298.257223563,S=(0,i.default)(y-g),$n=Math.atan((1-M)*Math.tan((0,i.default)(parseFloat(h)))),ja=Math.atan((1-M)*Math.tan((0,i.default)(parseFloat(m)))),Yr=Math.sin($n),Jr=Math.cos($n),Xr=Math.sin(ja),an=Math.cos(ja),Bn=S,$a=100;do{var Si=Math.sin(Bn),ki=Math.cos(Bn);if(0===(Ee=Math.sqrt(an*Si*(an*Si)+(Jr*Xr-Yr*an*ki)*(Jr*Xr-Yr*an*ki))))return 0;P=Yr*Xr+Jr*an*ki,fe=Math.atan2(Ee,P),oe=P-2*Yr*Xr/(he=1-(ee=Jr*an*Si/Ee)*ee),isNaN(oe)&&(oe=0);var xi=M/16*he*(4+M*(4-3*he));Ha=Bn,Bn=S+(1-xi)*M*ee*(fe+xi*Ee*(oe+xi*P*(2*oe*oe-1)))}while(Math.abs(Bn-Ha)>1e-12&&--$a>0);if(0===$a)return NaN;var Nt=he*(s.earthRadius*s.earthRadius-v*v)/(v*v),Ri=Nt/1024*(256+Nt*(Nt*(74-47*Nt)-128));return Math.round(v*(1+Nt/16384*(4096+Nt*(Nt*(320-175*Nt)-768)))*(fe-Ri*Ee*(oe+Ri/4*(P*(2*oe*oe-1)-Ri/6*oe*(4*Ee*Ee-3)*(4*oe*oe-3))))/p)*p}},2787:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=function o(a){return a&&a.__esModule?a:{default:a}}(n(7504));t.default=function(l,u,c,d){return(0,r.default)(l,u,c)<d}},2845:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0,t.default=function(i){return/^(NNE|NE|NNW|N)$/.test(i)?"N":/^(ENE|E|ESE|SE)$/.test(i)?"E":/^(SSE|S|SSW|SW)$/.test(i)?"S":/^(WSW|W|WNW|NW)$/.test(i)?"W":void 0}},3026:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0,t.default=function(i){var s=i.toString().trim();return!isNaN(parseFloat(s))&&parseFloat(s)===Number(s)}},3100:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=n(7636),o=s(n(8744)),i=s(n(5101));function s(u){return u&&u.__esModule?u:{default:u}}t.default=function(c,d){var f=(0,o.default)(c,r.longitudeKeys);if(!(typeof f>"u"||null===f)){var p=c[f];return!0===d?p:(0,i.default)(p)}}},3536:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=i(n(7029)),o=i(n(3100));function i(l){return l&&l.__esModule?l:{default:l}}t.default=function(u,c){for(var d=!1,f=c.length,p=-1,h=f-1;++p<f;h=p)((0,o.default)(c[p])<=(0,o.default)(u)&&(0,o.default)(u)<(0,o.default)(c[h])||(0,o.default)(c[h])<=(0,o.default)(u)&&(0,o.default)(u)<(0,o.default)(c[p]))&&(0,r.default)(u)<((0,r.default)(c[h])-(0,r.default)(c[p]))*((0,o.default)(u)-(0,o.default)(c[p]))/((0,o.default)(c[h])-(0,o.default)(c[p]))+(0,r.default)(c[p])&&(d=!d);return d}},4194:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=function o(a){return a&&a.__esModule?a:{default:a}}(n(8674));t.default=function(l,u,c){return(0,r.default)(u,l)+(0,r.default)(l,c)===(0,r.default)(u,c)}},4695:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=n(7636),o=function i(d){return d&&d.__esModule?d:{default:d}}(n(8744));function s(d,f){var p=Object.keys(d);if(Object.getOwnPropertySymbols){var h=Object.getOwnPropertySymbols(d);f&&(h=h.filter(function(g){return Object.getOwnPropertyDescriptor(d,g).enumerable})),p.push.apply(p,h)}return p}function l(d,f,p){return f in d?Object.defineProperty(d,f,{value:p,enumerable:!0,configurable:!0,writable:!0}):d[f]=p,d}t.default=function(f){var p=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{longitude:r.longitudeKeys,latitude:r.latitudeKeys,altitude:r.altitudeKeys},h=(0,o.default)(f,p.longitude),g=(0,o.default)(f,p.latitude),m=(0,o.default)(f,p.altitude);return function a(d){for(var f=1;f<arguments.length;f++){var p=null!=arguments[f]?arguments[f]:{};f%2?s(Object(p),!0).forEach(function(h){l(d,h,p[h])}):Object.getOwnPropertyDescriptors?Object.defineProperties(d,Object.getOwnPropertyDescriptors(p)):s(Object(p)).forEach(function(h){Object.defineProperty(d,h,Object.getOwnPropertyDescriptor(p,h))})}return d}({latitude:g,longitude:h},m?{altitude:m}:{})}},4902:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=n(7636);t.default=function(a){return r.sexagesimalPattern.test(a.toString().trim())}},5101:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=l(n(3026)),o=l(n(4902)),i=l(n(1532)),s=l(n(7637)),a=l(n(4695));function l(h){return h&&h.__esModule?h:{default:h}}function u(h,g){var m=Object.keys(h);if(Object.getOwnPropertySymbols){var y=Object.getOwnPropertySymbols(h);g&&(y=y.filter(function(v){return Object.getOwnPropertyDescriptor(h,v).enumerable})),m.push.apply(m,y)}return m}function c(h){for(var g=1;g<arguments.length;g++){var m=null!=arguments[g]?arguments[g]:{};g%2?u(Object(m),!0).forEach(function(y){d(h,y,m[y])}):Object.getOwnPropertyDescriptors?Object.defineProperties(h,Object.getOwnPropertyDescriptors(m)):u(Object(m)).forEach(function(y){Object.defineProperty(h,y,Object.getOwnPropertyDescriptor(m,y))})}return h}function d(h,g,m){return g in h?Object.defineProperty(h,g,{value:m,enumerable:!0,configurable:!0,writable:!0}):h[g]=m,h}t.default=function h(g){if((0,r.default)(g))return Number(g);if((0,o.default)(g))return(0,i.default)(g);if((0,s.default)(g)){var m=(0,a.default)(g);return Array.isArray(g)?g.map(function(y,v){return[0,1].includes(v)?h(y):y}):c(c(c({},g),m.latitude&&d({},m.latitude,h(g[m.latitude]))),m.longitude&&d({},m.longitude,h(g[m.longitude])))}return Array.isArray(g)?g.map(function(y){return(0,s.default)(y)?h(y):y}):g}},5378:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=function o(l){return l&&l.__esModule?l:{default:l}}(n(8674));function i(l){return(i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(c){return typeof c}:function(c){return c&&"function"==typeof Symbol&&c.constructor===Symbol&&c!==Symbol.prototype?"symbol":typeof c})(l)}t.default=function(u){var c=arguments.length>1&&void 0!==arguments[1]?arguments[1]:r.default;return u.reduce(function(d,f){return"object"===i(d)&&null!==d.last&&(d.distance+=c(f,d.last)),d.last=f,d},{last:null,distance:0}).distance}},5524:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=a(n(7029)),o=a(n(3100)),i=a(n(5705)),s=a(n(942));function a(c){return c&&c.__esModule?c:{default:c}}t.default=function(d){if(!1===Array.isArray(d)||0===d.length)return!1;var f=d.length,p=d.reduce(function(y,v){var M=(0,i.default)((0,r.default)(v)),S=(0,i.default)((0,o.default)(v));return{X:y.X+Math.cos(M)*Math.cos(S),Y:y.Y+Math.cos(M)*Math.sin(S),Z:y.Z+Math.sin(M)}},{X:0,Y:0,Z:0}),h=p.X/f,g=p.Y/f,m=p.Z/f;return{longitude:(0,s.default)(Math.atan2(g,h)),latitude:(0,s.default)(Math.atan2(m,Math.sqrt(h*h+g*g)))}}},5551:(e,t)=>{function n(u,c){return u*u+c*c}function r(u,c){return n(u.longitude-c.longitude,u.latitude-c.latitude)}function o(u,c,d){var f=c.longitude,p=c.latitude,h=d.longitude-f,g=d.latitude-p;if(0!==h||0!==g){var m=((u.longitude-f)*h+(u.latitude-p)*g)/n(h,g);m>1?(f=d.longitude,p=d.latitude):m>0&&(f+=h*m,p+=g*m)}return n(u.longitude-f,u.latitude-p)}function s(u,c,d,f,p){for(var g,h=f,m=c+1;m<d;m++){var y=o(u[m],u[c],u[d]);y>h&&(g=m,h=y)}h>f&&(g-c>1&&s(u,c,g,f,p),p.push(u[g]),d-g>1&&s(u,g,d,f,p))}function a(u,c){var d=u.length-1,f=[u[0]];return s(u,0,d,c,f),f.push(u[d]),f}t.__esModule=!0,t.SimplifyLL=function l(u,c,d){if(void 0===c&&(c=1),void 0===d&&(d=!1),u.length<=2)return u;var f=c*c;return a(u=d?u:function i(u,c){for(var f,d=u[0],p=[d],h=1,g=u.length;h<g;h++)r(f=u[h],d)>c&&(p.push(f),d=f);return d!==f&&p.push(f),p}(u,f),f)}},5705:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0,t.default=function(i){return i*Math.PI/180}},6380:(e,t,n)=>{var o=n(6729);t.p$=o.SimplifyAP,n(5551),n(6413)},6413:(e,t)=>{function n(u,c){return u*u+c*c}function r(u,c){return n(u.x-c.x,u.y-c.y)}function o(u,c,d){var f=c.x,p=c.y,h=d.x-f,g=d.y-p;if(0!==h||0!==g){var m=((u.x-f)*h+(u.y-p)*g)/n(h,g);m>1?(f=d.x,p=d.y):m>0&&(f+=h*m,p+=g*m)}return n(u.x-f,u.y-p)}function s(u,c,d,f,p){for(var g,h=f,m=c+1;m<d;m++){var y=o(u[m],u[c],u[d]);y>h&&(g=m,h=y)}h>f&&(g-c>1&&s(u,c,g,f,p),p.push(u[g]),d-g>1&&s(u,g,d,f,p))}function a(u,c){var d=u.length-1,f=[u[0]];return s(u,0,d,c,f),f.push(u[d]),f}t.__esModule=!0,t.Simplify=function l(u,c,d){if(void 0===c&&(c=1),void 0===d&&(d=!1),u.length<=2)return u;var f=c*c;return a(u=d?u:function i(u,c){for(var f,d=u[0],p=[d],h=1,g=u.length;h<g;h++)r(f=u[h],d)>c&&(p.push(f),d=f);return d!==f&&p.push(f),p}(u,f),f)}},6522:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0,t.default=function(i){return i>1?1:i<-1?-1:i}},6563:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=a(n(3026)),o=a(n(4902)),i=a(n(1532)),s=n(7636);function a(c){return c&&c.__esModule?c:{default:c}}t.default=function c(d){return(0,r.default)(d)?!(parseFloat(d)>s.MAXLAT||d<s.MINLAT):!!(0,o.default)(d)&&c((0,i.default)(d))}},6729:(e,t)=>{function n(u,c){return u*u+c*c}function r(u,c){return n(u[0]-c[0],u[1]-c[1])}function o(u,c,d){var f=c[0],p=c[1],h=d[0]-f,g=d[1]-p;if(0!==h||0!==g){var m=((u[0]-f)*h+(u[1]-p)*g)/n(h,g);m>1?(f=d[0],p=d[1]):m>0&&(f+=h*m,p+=g*m)}return n(u[0]-f,u[1]-p)}function s(u,c,d,f,p){for(var g,h=f,m=c+1;m<d;m++){var y=o(u[m],u[c],u[d]);y>h&&(g=m,h=y)}h>f&&(g-c>1&&s(u,c,g,f,p),p.push(u[g]),d-g>1&&s(u,g,d,f,p))}function a(u,c){var d=u.length-1,f=[u[0]];return s(u,0,d,c,f),f.push(u[d]),f}t.__esModule=!0,t.SimplifyAP=function l(u,c,d){if(void 0===c&&(c=1),void 0===d&&(d=!1),u.length<=2)return u;var f=c*c;return a(u=d?u:function i(u,c){for(var f,d=u[0],p=[d],h=1,g=u.length;h<g;h++)r(f=u[h],d)>c&&(p.push(f),d=f);return d!==f&&p.push(f),p}(u,f),f)}},7029:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=n(7636),o=s(n(8744)),i=s(n(5101));function s(u){return u&&u.__esModule?u:{default:u}}t.default=function(c,d){var f=(0,o.default)(c,r.latitudeKeys);if(!(typeof f>"u"||null===f)){var p=c[f];return!0===d?p:(0,i.default)(p)}}},7088:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=function o(a){return a&&a.__esModule?a:{default:a}}(n(9144));t.default=function(l){var u=(0,r.default)(l),d=u.minLng+(u.maxLng-u.minLng)/2;return{latitude:parseFloat((u.minLat+(u.maxLat-u.minLat)/2).toFixed(6)),longitude:parseFloat(d.toFixed(6))}}},7504:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=i(n(8674)),o=i(n(6522));function i(l){return l&&l.__esModule?l:{default:l}}t.default=function(u,c,d){var f=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1,p=(0,r.default)(c,u,f),h=(0,r.default)(u,d,f),g=(0,r.default)(c,d,f),m=Math.acos((0,o.default)((p*p+g*g-h*h)/(2*p*g))),y=Math.acos((0,o.default)((h*h+g*g-p*p)/(2*h*g)));return m>Math.PI/2?p:y>Math.PI/2?h:Math.sin(m)*p}},7636:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.areaConversion=t.timeConversion=t.distanceConversion=t.altitudeKeys=t.latitudeKeys=t.longitudeKeys=t.MAXLON=t.MINLON=t.MAXLAT=t.MINLAT=t.earthRadius=t.sexagesimalPattern=void 0,t.sexagesimalPattern=/^([0-9]{1,3})\xb0\s*([0-9]{1,3}(?:\.(?:[0-9]{1,}))?)['\u2032]\s*(([0-9]{1,3}(\.([0-9]{1,}))?)["\u2033]\s*)?([NEOSW]?)$/,t.earthRadius=6378137,t.MINLAT=-90,t.MAXLAT=90,t.MINLON=-180,t.MAXLON=180,t.longitudeKeys=["lng","lon","longitude",0],t.latitudeKeys=["lat","latitude",1],t.altitudeKeys=["alt","altitude","elevation","elev",2],t.distanceConversion={m:1,km:.001,cm:100,mm:1e3,mi:1/1609.344,sm:1/1852.216,ft:100/30.48,in:100/2.54,yd:1/.9144},t.timeConversion={m:60,h:3600,d:86400};var p={m2:1,km2:1e-6,ha:1e-4,a:.01,ft2:10.763911,yd2:1.19599,in2:1550.0031};t.areaConversion=p,p.sqm=p.m2,p.sqkm=p.km2,p.sqft=p.ft2,p.sqyd=p.yd2,p.sqin=p.in2},7637:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=s(n(4695)),o=s(n(6563)),i=s(n(266));function s(u){return u&&u.__esModule?u:{default:u}}t.default=function(c){var d=(0,r.default)(c),f=d.latitude,p=d.longitude;if(Array.isArray(c)&&c.length>=2)return(0,i.default)(c[0])&&(0,o.default)(c[1]);if(typeof f>"u"||typeof p>"u")return!1;var h=c[p],g=c[f];return!(typeof g>"u"||typeof h>"u"||!1===(0,o.default)(g)||!1===(0,i.default)(h))}},8674:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=l(n(7029)),o=l(n(3100)),i=l(n(5705)),s=l(n(6522)),a=n(7636);function l(d){return d&&d.__esModule?d:{default:d}}t.default=function(f,p){var h=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;h=typeof h<"u"&&!isNaN(h)?h:1;var g=(0,r.default)(f),m=(0,o.default)(f),y=(0,r.default)(p),v=(0,o.default)(p),M=Math.acos((0,s.default)(Math.sin((0,i.default)(y))*Math.sin((0,i.default)(g))+Math.cos((0,i.default)(y))*Math.cos((0,i.default)(g))*Math.cos((0,i.default)(m)-(0,i.default)(v))))*a.earthRadius;return Math.round(M/h)*h}},8744:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0,t.default=function(i,s){return s.reduce(function(a,l){if(typeof i>"u"||null===i)throw new Error("'".concat(i,"' is no valid coordinate."));return Object.prototype.hasOwnProperty.call(i,l)&&typeof l<"u"&&typeof a>"u"?(a=l,l):a},void 0)}},8948:(e,t)=>{function n(d,f){return function a(d){if(Array.isArray(d))return d}(d)||function s(d,f){if(!(typeof Symbol>"u")&&Symbol.iterator in Object(d)){var p=[],h=!0,g=!1,m=void 0;try{for(var v,y=d[Symbol.iterator]();!(h=(v=y.next()).done)&&(p.push(v.value),!f||p.length!==f);h=!0);}catch(M){g=!0,m=M}finally{try{!h&&null!=y.return&&y.return()}finally{if(g)throw m}}return p}}(d,f)||function o(d,f){if(d){if("string"==typeof d)return i(d,f);var p=Object.prototype.toString.call(d).slice(8,-1);if("Object"===p&&d.constructor&&(p=d.constructor.name),"Map"===p||"Set"===p)return Array.from(d);if("Arguments"===p||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(p))return i(d,f)}}(d,f)||function r(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function i(d,f){(null==f||f>d.length)&&(f=d.length);for(var p=0,h=new Array(f);p<f;p++)h[p]=d[p];return h}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0,t.default=function(f){var h=n(f.toString().split("."),2),m=h[1],y=Math.abs(Number(h[0])),v=60*+("0."+(m||0)),M=v.toString().split("."),S=Math.floor(v),P=function(f){var h=Math.pow(10,arguments.length>1&&void 0!==arguments[1]?arguments[1]:4);return Math.round(f*h)/h}(60*+("0."+(M[1]||0))).toString(),ee=n(P.split("."),2),he=ee[0],oe=ee[1],Ee=void 0===oe?"0":oe;return y+"\xb0 "+S.toString().padStart(2,"0")+"' "+he.padStart(2,"0")+"."+Ee.padEnd(1,"0")+'"'}},8950:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=function o(a){return a&&a.__esModule?a:{default:a}}(n(8674));t.default=function(l,u){return(arguments.length>2&&void 0!==arguments[2]?arguments[2]:r.default)(l,u)/(Number(u.time)-Number(l.time))*1e3}},9144:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=i(n(7029)),o=i(n(3100));function i(l){return l&&l.__esModule?l:{default:l}}t.default=function(u){if(!1===Array.isArray(u)||0===u.length)throw new Error("No points were given.");return u.reduce(function(c,d){var f=(0,r.default)(d),p=(0,o.default)(d);return{maxLat:Math.max(f,c.maxLat),minLat:Math.min(f,c.minLat),maxLng:Math.max(p,c.maxLng),minLng:Math.min(p,c.minLng)}},{maxLat:-1/0,minLat:1/0,maxLng:-1/0,minLng:1/0})}},9952:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=function o(a){return a&&a.__esModule?a:{default:a}}(n(939));t.default=function(l,u){var c=arguments.length>2&&void 0!==arguments[2]?arguments[2]:r.default,d="function"==typeof c?c(l,u):(0,r.default)(l,u);if(isNaN(d))throw new Error("Could not calculate bearing for given points. Check your bearing function");switch(Math.round(d/22.5)){case 1:return"NNE";case 2:return"NE";case 3:return"ENE";case 4:return"E";case 5:return"ESE";case 6:return"SE";case 7:return"SSE";case 8:return"S";case 9:return"SSW";case 10:return"SW";case 11:return"WSW";case 12:return"W";case 13:return"WNW";case 14:return"NW";case 15:return"NNW";default:return"N"}}}},Zd={};function Ua(e){var t=Zd[e];if(void 0!==t)return t.exports;var n=Zd[e]={exports:{}};return nb[e](n,n.exports,Ua),n.exports}function Wa(e){return"function"==typeof e}let qa=!1;const ot={Promise:void 0,set useDeprecatedSynchronousErrorHandling(e){if(e){const t=new Error;console.warn("DEPRECATED! RxJS was set to use deprecated synchronous error handling behavior by code at: \n"+t.stack)}else qa&&console.log("RxJS: Back to a better error behavior. Thank you. <3");qa=e},get useDeprecatedSynchronousErrorHandling(){return qa}};function eo(e){setTimeout(()=>{throw e},0)}const Oi={closed:!0,next(e){},error(e){if(ot.useDeprecatedSynchronousErrorHandling)throw e;eo(e)},complete(){}},rb=Array.isArray||(e=>e&&"number"==typeof e.length),Pi=(()=>{function e(t){return Error.call(this),this.message=t?`${t.length} errors occurred during unsubscription:\n${t.map((n,r)=>`${r+1}) ${n.toString()}`).join("\n ")}`:"",this.name="UnsubscriptionError",this.errors=t,this}return e.prototype=Object.create(Error.prototype),e})();class we{constructor(t){this.closed=!1,this._parentOrParents=null,this._subscriptions=null,t&&(this._ctorUnsubscribe=!0,this._unsubscribe=t)}unsubscribe(){let t;if(this.closed)return;let{_parentOrParents:n,_ctorUnsubscribe:r,_unsubscribe:o,_subscriptions:i}=this;if(this.closed=!0,this._parentOrParents=null,this._subscriptions=null,n instanceof we)n.remove(this);else if(null!==n)for(let s=0;s<n.length;++s)n[s].remove(this);if(Wa(o)){r&&(this._unsubscribe=void 0);try{o.call(this)}catch(s){t=s instanceof Pi?Kd(s.errors):[s]}}if(rb(i)){let s=-1,a=i.length;for(;++s<a;){const l=i[s];if(null!==(e=l)&&"object"==typeof e)try{l.unsubscribe()}catch(u){t=t||[],u instanceof Pi?t=t.concat(Kd(u.errors)):t.push(u)}}}var e;if(t)throw new Pi(t)}add(t){let n=t;if(!t)return we.EMPTY;switch(typeof t){case"function":n=new we(t);case"object":if(n===this||n.closed||"function"!=typeof n.unsubscribe)return n;if(this.closed)return n.unsubscribe(),n;if(!(n instanceof we)){const i=n;n=new we,n._subscriptions=[i]}break;default:throw new Error("unrecognized teardown "+t+" added to Subscription.")}let{_parentOrParents:r}=n;if(null===r)n._parentOrParents=this;else if(r instanceof we){if(r===this)return n;n._parentOrParents=[r,this]}else{if(-1!==r.indexOf(this))return n;r.push(this)}const o=this._subscriptions;return null===o?this._subscriptions=[n]:o.push(n),n}remove(t){const n=this._subscriptions;if(n){const r=n.indexOf(t);-1!==r&&n.splice(r,1)}}}var e;function Kd(e){return e.reduce((t,n)=>t.concat(n instanceof Pi?n.errors:n),[])}we.EMPTY=((e=new we).closed=!0,e);const Ai="function"==typeof Symbol?Symbol("rxSubscriber"):"@@rxSubscriber_"+Math.random();class ht extends we{constructor(t,n,r){switch(super(),this.syncErrorValue=null,this.syncErrorThrown=!1,this.syncErrorThrowable=!1,this.isStopped=!1,arguments.length){case 0:this.destination=Oi;break;case 1:if(!t){this.destination=Oi;break}if("object"==typeof t){t instanceof ht?(this.syncErrorThrowable=t.syncErrorThrowable,this.destination=t,t.add(this)):(this.syncErrorThrowable=!0,this.destination=new Qd(this,t));break}default:this.syncErrorThrowable=!0,this.destination=new Qd(this,t,n,r)}}[Ai](){return this}static create(t,n,r){const o=new ht(t,n,r);return o.syncErrorThrowable=!1,o}next(t){this.isStopped||this._next(t)}error(t){this.isStopped||(this.isStopped=!0,this._error(t))}complete(){this.isStopped||(this.isStopped=!0,this._complete())}unsubscribe(){this.closed||(this.isStopped=!0,super.unsubscribe())}_next(t){this.destination.next(t)}_error(t){this.destination.error(t),this.unsubscribe()}_complete(){this.destination.complete(),this.unsubscribe()}_unsubscribeAndRecycle(){const{_parentOrParents:t}=this;return this._parentOrParents=null,this.unsubscribe(),this.closed=!1,this.isStopped=!1,this._parentOrParents=t,this}}class Qd extends ht{constructor(t,n,r,o){super(),this._parentSubscriber=t;let i,s=this;Wa(n)?i=n:n&&(i=n.next,r=n.error,o=n.complete,n!==Oi&&(s=Object.create(n),Wa(s.unsubscribe)&&this.add(s.unsubscribe.bind(s)),s.unsubscribe=this.unsubscribe.bind(this))),this._context=s,this._next=i,this._error=r,this._complete=o}next(t){if(!this.isStopped&&this._next){const{_parentSubscriber:n}=this;ot.useDeprecatedSynchronousErrorHandling&&n.syncErrorThrowable?this.__tryOrSetError(n,this._next,t)&&this.unsubscribe():this.__tryOrUnsub(this._next,t)}}error(t){if(!this.isStopped){const{_parentSubscriber:n}=this,{useDeprecatedSynchronousErrorHandling:r}=ot;if(this._error)r&&n.syncErrorThrowable?(this.__tryOrSetError(n,this._error,t),this.unsubscribe()):(this.__tryOrUnsub(this._error,t),this.unsubscribe());else if(n.syncErrorThrowable)r?(n.syncErrorValue=t,n.syncErrorThrown=!0):eo(t),this.unsubscribe();else{if(this.unsubscribe(),r)throw t;eo(t)}}}complete(){if(!this.isStopped){const{_parentSubscriber:t}=this;if(this._complete){const n=()=>this._complete.call(this._context);ot.useDeprecatedSynchronousErrorHandling&&t.syncErrorThrowable?(this.__tryOrSetError(t,n),this.unsubscribe()):(this.__tryOrUnsub(n),this.unsubscribe())}else this.unsubscribe()}}__tryOrUnsub(t,n){try{t.call(this._context,n)}catch(r){if(this.unsubscribe(),ot.useDeprecatedSynchronousErrorHandling)throw r;eo(r)}}__tryOrSetError(t,n,r){if(!ot.useDeprecatedSynchronousErrorHandling)throw new Error("bad call");try{n.call(this._context,r)}catch(o){return ot.useDeprecatedSynchronousErrorHandling?(t.syncErrorValue=o,t.syncErrorThrown=!0,!0):(eo(o),!0)}return!1}_unsubscribe(){const{_parentSubscriber:t}=this;this._context=null,this._parentSubscriber=null,t.unsubscribe()}}const ab="function"==typeof Symbol&&Symbol.observable||"@@observable";function lb(e){return e}let Jd=(()=>{class e{constructor(n){this._isScalar=!1,n&&(this._subscribe=n)}lift(n){const r=new e;return r.source=this,r.operator=n,r}subscribe(n,r,o){const{operator:i}=this,s=function sb(e,t,n){if(e){if(e instanceof ht)return e;if(e[Ai])return e[Ai]()}return e||t||n?new ht(e,t,n):new ht(Oi)}(n,r,o);if(s.add(i?i.call(s,this.source):this.source||ot.useDeprecatedSynchronousErrorHandling&&!s.syncErrorThrowable?this._subscribe(s):this._trySubscribe(s)),ot.useDeprecatedSynchronousErrorHandling&&s.syncErrorThrowable&&(s.syncErrorThrowable=!1,s.syncErrorThrown))throw s.syncErrorValue;return s}_trySubscribe(n){try{return this._subscribe(n)}catch(r){ot.useDeprecatedSynchronousErrorHandling&&(n.syncErrorThrown=!0,n.syncErrorValue=r),function ib(e){for(;e;){const{closed:t,destination:n,isStopped:r}=e;if(t||r)return!1;e=n&&n instanceof ht?n:null}return!0}(n)?n.error(r):console.warn(r)}}forEach(n,r){return new(r=Xd(r))((o,i)=>{let s;s=this.subscribe(a=>{try{n(a)}catch(l){i(l),s&&s.unsubscribe()}},i,o)})}_subscribe(n){const{source:r}=this;return r&&r.subscribe(n)}[ab](){return this}pipe(...n){return 0===n.length?this:function Yd(e){return 0===e.length?lb:1===e.length?e[0]:function(n){return e.reduce((r,o)=>o(r),n)}}(n)(this)}toPromise(n){return new(n=Xd(n))((r,o)=>{let i;this.subscribe(s=>i=s,s=>o(s),()=>r(i))})}}return e.create=t=>new e(t),e})();function Xd(e){if(e||(e=ot.Promise||Promise),!e)throw new Error("no Promise impl found");return e}const Un=(()=>{function e(){return Error.call(this),this.message="object unsubscribed",this.name="ObjectUnsubscribedError",this}return e.prototype=Object.create(Error.prototype),e})();class ub extends we{constructor(t,n){super(),this.subject=t,this.subscriber=n,this.closed=!1}unsubscribe(){if(this.closed)return;this.closed=!0;const t=this.subject,n=t.observers;if(this.subject=null,!n||0===n.length||t.isStopped||t.closed)return;const r=n.indexOf(this.subscriber);-1!==r&&n.splice(r,1)}}class cb extends ht{constructor(t){super(t),this.destination=t}}let ze=(()=>{class e extends Jd{constructor(){super(),this.observers=[],this.closed=!1,this.isStopped=!1,this.hasError=!1,this.thrownError=null}[Ai](){return new cb(this)}lift(n){const r=new ef(this,this);return r.operator=n,r}next(n){if(this.closed)throw new Un;if(!this.isStopped){const{observers:r}=this,o=r.length,i=r.slice();for(let s=0;s<o;s++)i[s].next(n)}}error(n){if(this.closed)throw new Un;this.hasError=!0,this.thrownError=n,this.isStopped=!0;const{observers:r}=this,o=r.length,i=r.slice();for(let s=0;s<o;s++)i[s].error(n);this.observers.length=0}complete(){if(this.closed)throw new Un;this.isStopped=!0;const{observers:n}=this,r=n.length,o=n.slice();for(let i=0;i<r;i++)o[i].complete();this.observers.length=0}unsubscribe(){this.isStopped=!0,this.closed=!0,this.observers=null}_trySubscribe(n){if(this.closed)throw new Un;return super._trySubscribe(n)}_subscribe(n){if(this.closed)throw new Un;return this.hasError?(n.error(this.thrownError),we.EMPTY):this.isStopped?(n.complete(),we.EMPTY):(this.observers.push(n),new ub(this,n))}asObservable(){const n=new Jd;return n.source=this,n}}return e.create=(t,n)=>new ef(t,n),e})();class ef extends ze{constructor(t,n){super(),this.destination=t,this.source=n}next(t){const{destination:n}=this;n&&n.next&&n.next(t)}error(t){const{destination:n}=this;n&&n.error&&this.destination.error(t)}complete(){const{destination:t}=this;t&&t.complete&&this.destination.complete()}_subscribe(t){const{source:n}=this;return n?this.source.subscribe(t):we.EMPTY}}let ge=null;function V(e){const t=ge;return ge=e,t}const qn={version:0,lastCleanEpoch:0,dirty:!1,producerNode:void 0,producerLastReadVersion:void 0,producerIndexOfThis:void 0,nextProducerIndex:0,liveConsumerNode:void 0,liveConsumerIndexOfThis:void 0,consumerAllowSignalWrites:!1,consumerIsAlwaysLive:!1,kind:"unknown",producerMustRecompute:()=>!1,producerRecomputeValue:()=>{},consumerMarkedDirty:()=>{},consumerOnSignalRead:()=>{}};function no(e){if((!io(e)||e.dirty)&&(e.dirty||1!==e.lastCleanEpoch)){if(!e.producerMustRecompute(e)&&!ro(e))return void Fi(e);e.producerRecomputeValue(e),Fi(e)}}function Fi(e){e.dirty=!1,e.lastCleanEpoch=1}function ro(e){ji(e);for(let t=0;t<e.producerNode.length;t++){const n=e.producerNode[t],r=e.producerLastReadVersion[t];if(r!==n.version||(no(n),r!==n.version))return!0}return!1}function Vi(e,t){if(function af(e){e.liveConsumerNode??=[],e.liveConsumerIndexOfThis??=[]}(e),1===e.liveConsumerNode.length&&function lf(e){return void 0!==e.producerNode}(e))for(let r=0;r<e.producerNode.length;r++)Vi(e.producerNode[r],e.producerIndexOfThis[r]);const n=e.liveConsumerNode.length-1;if(e.liveConsumerNode[t]=e.liveConsumerNode[n],e.liveConsumerIndexOfThis[t]=e.liveConsumerIndexOfThis[n],e.liveConsumerNode.length--,e.liveConsumerIndexOfThis.length--,t<e.liveConsumerNode.length){const r=e.liveConsumerIndexOfThis[t],o=e.liveConsumerNode[t];ji(o),o.producerIndexOfThis[r]=t}}function io(e){return e.consumerIsAlwaysLive||(e?.liveConsumerNode?.length??0)>0}function ji(e){e.producerNode??=[],e.producerIndexOfThis??=[],e.producerLastReadVersion??=[]}Error;class b extends Error{code;constructor(t,n){super(function Wt(e,t){return`NG0${Math.abs(e)}${t?": "+t:""}`}(t,n)),this.code=t}}function K(e){return{token:e.token,providedIn:e.providedIn||null,factory:e.factory,value:void 0}}globalThis;class N{_desc;ngMetadataName="InjectionToken";\u0275prov;constructor(t,n){this._desc=t,this.\u0275prov=void 0,"number"==typeof n?this.__NG_ELEMENT_ID__=n:void 0!==n&&(this.\u0275prov=K({token:this,providedIn:n.providedIn||"root",factory:n.factory}))}get multi(){return this}toString(){return`InjectionToken ${this._desc}`}}var B=function(e){return e[e.Default=0]="Default",e[e.Host=1]="Host",e[e.Self=2]="Self",e[e.SkipSelf=4]="SkipSelf",e[e.Optional=8]="Optional",e}(B||{});const O={lFrame:pp(null),bindingsEnabled:!0,skipHydrationRootTNode:null};let Rl=!1;function j(){let e=function ip(){return O.lFrame.currentTNode}();for(;null!==e&&64===e.type;)e=e.parent;return e}function ds(e){const t=Rl;return Rl=e,t}function pp(e){const t={currentTNode:null,isParent:!0,lView:null,tView:null,selectedIndex:-1,contextLView:null,elementDepthCount:0,currentNamespace:null,currentDirectiveIndex:-1,bindingRootIndex:-1,bindingIndex:-1,currentQueryIndex:0,parent:e,child:null,inI18n:!1};return null!==e&&(e.child=t),t}new N("").__NG_ELEMENT_ID__=e=>{const t=j();if(null===t)throw new b(204,!1);if(2&t.type)return t.value;if(e&B.Optional)return null;throw new b(204,!1)},Symbol;class tP{constructor(){this.limitUI04=this.maxFromBits(4),this.limitUI06=this.maxFromBits(6),this.limitUI08=this.maxFromBits(8),this.limitUI12=this.maxFromBits(12),this.limitUI14=this.maxFromBits(14),this.limitUI16=this.maxFromBits(16),this.limitUI32=this.maxFromBits(32),this.limitUI40=this.maxFromBits(40),this.limitUI48=this.maxFromBits(48),this.create()}toString(){return this.hex}toURN(){return"urn:uuid:"+this.hex}toSignalK(){return`urn:mrn:signalk:uuid:${this.hex}`}toBytes(){let t=this.hex.split("-"),n=[],r=0;for(let o=0;o<t.length;o++)for(let i=0;i<t[o].length;i+=2)n[r++]=parseInt(t[o].substr(i,2),16);return n}maxFromBits(t){return Math.pow(2,t)}getRandomInt(t,n){return Math.floor(Math.random()*(n-t+1))+t}randomUI04(){return this.getRandomInt(0,this.limitUI04-1)}randomUI06(){return this.getRandomInt(0,this.limitUI06-1)}randomUI08(){return this.getRandomInt(0,this.limitUI08-1)}randomUI12(){return this.getRandomInt(0,this.limitUI12-1)}randomUI14(){return this.getRandomInt(0,this.limitUI14-1)}randomUI16(){return this.getRandomInt(0,this.limitUI16-1)}randomUI32(){return this.getRandomInt(0,this.limitUI32-1)}randomUI40(){return(0|Math.random()*(1<<30))+(0|1024*Math.random())*(1<<30)}randomUI48(){return(0|Math.random()*(1<<30))+(0|Math.random()*(1<<18))*(1<<30)}create(){this.fromParts(this.randomUI32(),this.randomUI16(),16384|this.randomUI12(),128|this.randomUI06(),this.randomUI08(),this.randomUI48())}paddedString(t,n,r=null){r=r||"0";let o=n-(t=String(t)).length;for(;o>0;o>>>=1,r+=r)1&o&&(t=r+t);return t}fromParts(t,n,r,o,i,s){return this.version=r>>12&15,this.hex=this.paddedString(t.toString(16),8)+"-"+this.paddedString(n.toString(16),4)+"-"+this.paddedString(r.toString(16),4)+"-"+this.paddedString(o.toString(16),2)+this.paddedString(i.toString(16),2)+"-"+this.paddedString(s.toString(16),12),this}}class Aa{static updates(){return{context:null,updates:[]}}static subscribe(){return{context:null,subscribe:[]}}static unsubscribe(){return{context:null,unsubscribe:[]}}static request(){return{requestId:(new tP).toString()}}}let rP=(()=>{class e{constructor(){this._filter="",this._wsTimeout=2e4,this._token="",this._playbackMode=!1,this.version=1,this.endpoint="",this.selfId="",this._source=null,this._connect=new ze,this.onConnect=this._connect.asObservable(),this._close=new ze,this.onClose=this._close.asObservable(),this._error=new ze,this.onError=this._error.asObservable(),this._message=new ze,this.onMessage=this._message.asObservable()}set source(n){this._source||(this._source={}),this._source.label=n}set authToken(n){this._token=n}get connectionTimeout(){return this._wsTimeout}set connectionTimeout(n){this._wsTimeout=n<3e3?3e3:n>6e4?6e4:n}get isOpen(){return!(!this.ws||1==this.ws.readyState||3==this.ws.readyState)}get filter(){return this._filter}set filter(n){this._filter=n&&-1!=n.indexOf("self")?this.selfId?this.selfId:"":n}get playbackMode(){return this._playbackMode}close(){this.ws&&(this.ws.close(),this.ws=null)}open(n,r,o){if(!(n=n||this.endpoint))return;let i=-1==n.indexOf("?")?"?":"&";r&&(n+=`${i}subscribe=${r}`),(this._token||o)&&(n+=`${r?"&":"?"}token=${this._token||o}`),this.close(),this.ws=new WebSocket(n),setTimeout(()=>{this.ws&&1!=this.ws.readyState&&3!=this.ws.readyState&&(console.warn(`Connection watchdog expired (${this._wsTimeout/1e3} sec): ${this.ws.readyState}... aborting connection...`),this.close())},this._wsTimeout),this.ws.onopen=s=>{this._connect.next(s)},this.ws.onclose=s=>{this._close.next(s)},this.ws.onerror=s=>{this._error.next(s)},this.ws.onmessage=s=>{this.parseOnMessage(s)}}parseOnMessage(n){let r;if("string"==typeof n.data)try{r=JSON.parse(n.data)}catch{return}this.isHello(r)?(this.selfId=r.self,this._playbackMode=typeof r.startTime<"u",this._message.next(r)):this.isResponse(r)?(typeof r.login<"u"&&typeof r.login.token<"u"&&(this._token=r.login.token),this._message.next(r)):this._filter&&this.isDelta(r)?r.context==this._filter&&this._message.next(r):this._message.next(r)}sendRequest(n){if("object"!=typeof n)return"";let r=Aa.request();return typeof n.login>"u"&&this._token&&(r.token=this._token),Object.keys(n).forEach(i=>{r[i]=n[i]}),this.send(r),r.requestId}put(n,r,o){return this.sendRequest({context:"self"==n?"vessels.self":n,put:{path:r,value:o}})}login(n,r){return this.sendRequest({login:{username:n,password:r}})}send(n){this.ws&&("object"==typeof n&&(n=JSON.stringify(n)),this.ws.send(n))}sendUpdate(n="self",r,o){let i=Aa.updates();this._token&&(i.token=this._token),i.context="self"==n?"vessels.self":n,this._token&&(i.token=this._token);let s=[];"string"==typeof r&&s.push({path:r,value:o}),"object"==typeof r&&Array.isArray(r)&&(s=r);let a={timestamp:(new Date).toISOString(),values:s};this._source&&(a.source=this._source),i.updates.push(a),this.send(i)}subscribe(n="*",r="*",o){let i=Aa.subscribe();if(this._token&&(i.token=this._token),i.context="self"==n?"vessels.self":n,this._token&&(i.token=this._token),"object"==typeof r&&Array.isArray(r)&&(i.subscribe=r),"string"==typeof r){let s={};s.path=r,o&&"object"==typeof o&&(o.period&&(s.period=o.period),o.minPeriod&&(s.minPeriod=o.period),o.format&&("delta"==o.format||"full"==o.format)&&(s.format=o.format),o.policy&&("instant"==o.policy||"ideal"==o.policy||"fixed"==o.policy)&&(s.policy=o.policy)),i.subscribe.push(s)}this.send(i)}unsubscribe(n="*",r="*"){let o=Aa.unsubscribe();this._token&&(o.token=this._token),o.context="self"==n?"vessels.self":n,this._token&&(o.token=this._token),"object"==typeof r&&Array.isArray(r)&&(o.unsubscribe=r),"string"==typeof r&&o.unsubscribe.push({path:r}),this.send(o)}raiseAlarm(n="*",r,o){let i;i="string"==typeof r&&-1==r.indexOf("notifications.")?`notifications.${r}`:r,this.put(n,i,o.value)}clearAlarm(n="*",r){let o=-1==r.indexOf("notifications.")?`notifications.${r}`:r;this.put(n,o,null)}isSelf(n){return n.context==this.selfId}isDelta(n){return typeof n.context<"u"}isHello(n){return typeof n.version<"u"&&typeof n.self<"u"}isResponse(n){return typeof n.requestId<"u"}}return e.\u0275fac=function(n){return new(n||e)},e.\u0275prov=K({token:e,factory:e.\u0275fac,providedIn:"root"}),e})();class iP{constructor(t,n,r,o){this._method=[],this._message="",this._message=typeof t<"u"?t:"",this._state=typeof n<"u"?n:HD.alarm,r&&this._method.push(Fd.visual),o&&this._method.push(Fd.sound)}get value(){return{message:this._message,state:this._state,method:this._method}}}var HD=function(e){return e.normal="normal",e.alert="alert",e.warn="warn",e.alarm="alarm",e.emergency="emergency",e}(HD||{}),Fd=function(e){return e.visual="visual",e.sound="sound",e}(Fd||{});class aP{constructor(){this.obsList=[],this.stream=new rP,this._connect=new ze,this.onConnect=this._connect.asObservable(),this._close=new ze,this.onClose=this._close.asObservable(),this._error=new ze,this.onError=this._error.asObservable(),this._message=new ze,this.onMessage=this._message.asObservable()}get endpoint(){return this.stream.endpoint}set endpoint(t){this.stream.endpoint=t}get selfId(){return this.stream.selfId}set selfId(t){this.stream.selfId=t}get _source(){return this.stream._source}set _source(t){this.stream._source=t}set source(t){this.stream.source=t}set authToken(t){this.stream.authToken=t}get connectionTimeout(){return this.stream.connectionTimeout}set connectionTimeout(t){this.stream.connectionTimeout=t}get isOpen(){return this.stream.isOpen}get filter(){return this.stream.filter}set filter(t){this.stream.filter=t}get playbackMode(){return this.stream.playbackMode}open(t,n="none",r){this.obsList.push(this.stream.onConnect.subscribe(o=>this._connect.next(o))),this.obsList.push(this.stream.onClose.subscribe(o=>this._close.next(o))),this.obsList.push(this.stream.onError.subscribe(o=>this._error.next(o))),this.obsList.push(this.stream.onMessage.subscribe(o=>this._message.next(o))),this.stream.open(t,n,r)}close(){this.stream.close(),this.obsList.forEach(t=>t.unsubscribe()),this.obsList=[]}sendRequest(t){return this.stream.sendRequest(t)}put(t,n,r){return this.stream.put(t,n,r)}login(t,n){return this.stream.login(t,n)}send(t){this.stream.send(t)}sendUpdate(t="self",n,r){this.stream.sendUpdate(t,n,r)}subscribe(t="*",n="*",r){this.stream.subscribe(t,n,r)}unsubscribe(t="*",n="*"){this.stream.unsubscribe(t,n)}raiseAlarm(t="*",n,r){this.stream.raiseAlarm(t,n,r)}clearAlarm(t="*",n){this.stream.clearAlarm(t,n)}isSelf(t){return this.stream.isSelf(t)}isDelta(t){return this.stream.isDelta(t)}isHello(t){return this.stream.isHello(t)}isResponse(t){return this.stream.isResponse(t)}}class La{id;name;mmsi;position=[0,0];state;type={id:-1,name:""};properties={};lastUpdated=new Date;callsignVhf;callsignHf;orientation=0;virtual}class $D extends La{anchor={maxRadius:null,radius:null,position:null};autopilot={};buddy=!1;cog;cogTrue=null;cogMagnetic=null;courseApi={arrivalCircle:0,activeRoute:{},nextPoint:{},previousPoint:{}};courseCalcs={};distanceToSelf;environment={mode:null,sun:null};heading;headingTrue=null;headingMagnetic=null;performance={beatAngle:null,gybeAngle:null};racing;registrations={};resourceUpdates=[];sog;track=[];vectors={cog:[]};wind={direction:null,mwd:null,twd:null,tws:null,speedTrue:null,sog:null,awa:null,aws:null};design={airHeight:null,beam:null,draft:{current:null,maximum:null},length:null};destination={name:null,eta:null};flag;port}class lP extends La{constructor(){super()}}class uP extends La{sog=0;track=[];constructor(){super()}}class BD extends La{constructor(){super()}}class cP extends BD{twd;tws;temperature;constructor(){super()}}class Vd{static celciusToKelvin(t=0){return t+273.15}static kelvinToCelcius(t=0){return t-273.15}static kelvinToFarenheit(t=0){return 1.8*t-459.67}static degreesToRadians(t=0){return t*Math.PI/180}static radiansToDegrees(t=0){return 180*t/Math.PI}static angleToDirection(t,n){const r=2*Math.PI;if(n||(n=0),t||(t=0),isNaN(n)||isNaN(t))return null;const o=n+t;return o>r?o-r:o<0?r+o:o}static directionToAngle(t,n){const r=2*Math.PI;if(n||(n=0),t||(t=0),isNaN(n)||isNaN(t))return null;const o=n-t;let i;if(o>0)i=o>Math.PI?r-o:0-o;else if(o<0){const s=Math.abs(o);i=s>Math.PI?s-r:s}else i=o;return i}static knotsToKm(t){return 1.852*t}static nauticalMilesToKm(t){return 1.852*t}static knotsToMSec(t){return.51444325460445*t}static kmToKnots(t){return.539957*t}static kmToNauticalMiles(t){return.539957*t}static kmToMiles(t){return.621371*t}static metersToFeet(t){return 3.28084*t}static msecToKnots(t){return 1.94384*t}static msecToKmh(t){return 3.6*t}static msecToMph(t){return 2.23694*t}static nauticalMilesToMiles(t){return 1.15078*t}static milesToKm(t){return 1.60934*t}static milesToNauticalMiles(t){return.868976*t}static rpmToHertz(t){return t/60}}var Fn=Ua(2541);class Ct{static destCoordinate(t,n,r){const o=(0,Fn.computeDestinationPoint)(t,r,Vd.radiansToDegrees(n));return[o.longitude,o.latitude]}static distanceTo(t,n){return(0,Fn.getDistance)(t,n)}static routeLength(t){return(0,Fn.getPathLength)(t)}static routeLegs(t,n){if(t.length<2)return[];const r=[];r.push(n?{bearing:(0,Fn.getGreatCircleBearing)(n,t[0]),distance:Ct.distanceTo(n,t[0])}:{bearing:0,distance:0});for(let o=1;o<t.length;++o){const i={bearing:(0,Fn.getGreatCircleBearing)(t[o-1],t[o]),distance:Ct.distanceTo(t[o-1],t[o])};r.push(i)}return r}static centreOfPolygon(t){const n=(0,Fn.getCenter)(t);return[n.longitude,n.latitude]}static inDLCrossingZone(t,n=170){return Math.abs(t[0])>=n}static inBounds(t,n){return(0,Fn.isPointInPolygon)(t,[[n[0],n[1]],[n[0],n[3]],[n[2],n[3]],[n[2],n[1]],[n[0],n[1]]])}static calcMapifiedExtent(t,n){const o=111111*Math.cos(Vd.degreesToRadians(t[1])),i=[0,0,0,0];return i[1]=t[1]+(0-Math.abs(n))/111111,i[3]=t[1]+Math.abs(n)/111111,i[0]=t[0]+(0-Math.abs(n))/o,i[2]=t[0]+Math.abs(n)/o,i}static normaliseCoords(t){if(!Array.isArray(t))return[0,0];if("number"==typeof t[0]){if(t[0]>180)for(;t[0]>180;)t[0]=t[0]-360;else if(t[0]<-180)for(;t[0]<-180;)t[0]=360+t[0];return t}return Array.isArray(t[0])?(t.forEach(n=>this.normaliseCoords(n)),t):void 0}}class dP{action="notification";playback=!1;result=null;self=null;timestamp=(new Date).toISOString();sourceRef}class Hd{action;playback=!1;result=null;timestamp;self=null;constructor(){this.action="update"}}class fP extends Hd{constructor(){super(),this.action="resource"}}class pP extends Hd{constructor(){super(),this.action="trail"}}var hP=Ua(6380);const gP=["environment.wind.speedTrue","environment.wind.speedOverGround","environment.wind.angleTrueGround","environment.wind.angleTrueWater","environment.wind.directionTrue","environment.wind.directionMagnetic","navigation.courseOverGroundTrue","navigation.courseOverGroundMagnetic","navigation.headingTrue","navigation.headingMagnetic"];let F,De,UD;const Ei=[];let Bd,Fa=[],$d=!1,Ud=!1;const pe={signalk:{},aisState:[]};let Ve,zD,WD=[0,0,0,0],qD=60,wi=0,Vn={},jn=500,Tt=!1;const $t={maxAge:54e4,staleAge:36e4,lastTick:(new Date).valueOf(),maxTrack:20};let Wd={cogLine:10,aisCogLine:10};const _i={trailDuration:24,trailResolution:{lastHour:"5s",next23:"10s",beyond24:"1m"}};let Hn,Ci="freeboard-sk";function GD(){Ve={updated:{},stale:{},expired:{}}}function Va({action:e,msg:t}){switch(e){case"onConnect":postMessage({action:"open",playback:Tt,result:t.target.readyState});break;case"onClose":KD(!1);break;case"onError":postMessage({action:"error",playback:Tt,result:"Connection error!"});break;case"onMessage":!function bP(e){De.isHello(e)?(postMessage({action:"hello",result:e,self:e.self,playback:Tt}),jn&&JD()):De.isDelta(e)?($d=!0,e.updates.forEach(t=>{t.values&&(Hn=t.$source,t.values.forEach(n=>{if(zD=t.timestamp,e.context)switch(e.context.split(".")[0]){case"shore":case"atons":pe?.signalk.atons&&function _P(e,t){let n=!1;if(-1!==e.indexOf("shore.basestations")&&(n=!0),!F.atons.has(e)){const o=new BD;o.id=e,o.position=null,n&&(o.type.id=-1,o.type.name="Basestation"),F.atons.set(e,o)}const r=F.atons.get(e);""===t.path?(typeof t.value.name<"u"&&(r.name=t.value.name),typeof t.value.mmsi<"u"&&(r.mmsi=t.value.mmsi),typeof t.value.atonType<"u"&&(r.type=t.value.atonType)):"atonType"===t.path?r.type=t.value:"virtual"===t.path?r.virtual=t.value:"navigation.position"===t.path?(r.position=[t.value.longitude,t.value.latitude],r.positionReceived=!0):r.properties[t.path]=t.value}(e.context,n),Ni(e.context,F.atons,pe?.signalk.atons);break;case"sar":pe?.signalk.sar&&function CP(e,t){if(!F.sar.has(e)){const r=new lP;r.id=e,r.position=null,r.type.id=-1,r.type.name="SaR Beacon",F.sar.set(e,r)}const n=F.sar.get(e);""===t.path?(typeof t.value.name<"u"&&(n.name=t.value.name),typeof t.value.mmsi<"u"&&(n.mmsi=t.value.mmsi),typeof t.value.communication<"u"&&(n.callsignVhf=t.value.communication.callsignVhf??"",n.callsignHf=t.value.communication.callsignHf??"")):"communication.callsignVhf"===t.path?n.callsignVhf=t.value:"communication.callsignHf"===t.path?n.callsignHf=t.value:"navigation.position"===t.path&&t.value&&(n.position=Ct.normaliseCoords([t.value.longitude,t.value.latitude]),n.positionReceived=!0)}(e.context,n),Ni(e.context,F.sar,pe?.signalk.sar);break;case"aircraft":pe?.signalk.aircraft&&function NP(e,t){if(!F.aircraft.has(e)){const r=new uP;r.id=e,r.position=null,F.aircraft.set(e,r)}const n=F.aircraft.get(e);""===t.path?(typeof t.value.name<"u"&&(n.name=t.value.name),typeof t.value.mmsi<"u"&&(n.mmsi=t.value.mmsi),typeof t.value.communication<"u"&&(n.callsignVhf=t.value.communication.callsignVhf??"",n.callsignHf=t.value.communication.callsignHf??"")):"communication.callsignVhf"===t.path?n.callsignVhf=t.value:"communication.callsignHf"===t.path?n.callsignHf=t.value:"navigation.position"===t.path&&t.value?(n.position=Ct.normaliseCoords([t.value.longitude,t.value.latitude]),n.positionReceived=!0,qd(n)):"navigation.courseOverGroundTrue"===t.path?n.orientation=t.value:"navigation.speedOverGround"===t.path&&(n.sog=t.value)}(e.context,n),Ni(e.context,F.aircraft,pe?.signalk.aircraft);break;case"meteo":pe?.signalk.meteo&&(function TP(e,t){if(!F.meteo.has(e)){const r=new cP;r.id=e,r.position=null,r.type.id=-1,r.type.name="Weather Station",F.meteo.set(e,r)}const n=F.meteo.get(e);if(""===t.path){if(typeof t.value.name<"u"&&(n.name=t.value.name),typeof t.value.mmsi<"u"){const r=e.split(":").slice(-2);n.mmsi=2===r.length?`${r[0]}:${r[1]}`:t.value.mmsi}typeof t.value.communication<"u"&&(n.callsignVhf=t.value.communication.callsignVhf??"",n.callsignHf=t.value.communication.callsignHf??"")}else"communication.callsignVhf"===t.path?n.callsignVhf=t.value:"communication.callsignHf"===t.path?n.callsignHf=t.value:"environment.outside.temperature"===t.path?n.temperature=t.value:"environment.wind.directionTrue"===t.path?n.twd=t.value:"environment.wind.averageSpeed"===t.path?n.tws=t.value:"navigation.position"===t.path&&t.value&&(n.position=Ct.normaliseCoords([t.value.longitude,t.value.latitude]),n.positionReceived=!0)}(e.context,n),tb(n)),Ni(e.context,F.meteo,pe?.signalk.meteo);break;case"vessels":if(De.isSelf(e))F.self.id||(F.self.id=e.context),eb(F.self,n,!0),tb(n);else{if(pe?.signalk.vessels){const r=function MP(e){if(!F.aisTargets.has(e)){const t=new $D;t.id=e,t.position=null,F.aisTargets.set(e,t)}return F.aisTargets.get(e)}(e.context);eb(r,n)}Ni(e.context,F.aisTargets,pe?.signalk.vessels,pe?.aisState)}}}))}),YD()):De.isResponse(e)&&postMessage({action:"response",result:e})}(t)}}function ZD(e={}){e.interval&&"number"==typeof e.interval&&(jn=e.interval,XD(),JD(),qD=1/(jn/1e3)*60),Tt=!!e.playback,e.selections&&(typeof e.selections.preferredPaths<"u"&&(Vn=e.selections.preferredPaths),e.selections.aisMaxAge&&"number"==typeof e.selections.aisMaxAge&&($t.maxAge=e.selections.aisMaxAge),e.selections.aisStaleAge&&"number"==typeof e.selections.aisStaleAge&&($t.staleAge=e.selections.aisStaleAge),"number"==typeof e.selections.signalk.maxRadius&&(pe.signalk=e.selections.signalk),typeof e.selections.aisState<"u"&&Array.isArray(e.selections.aisState)&&(pe.aisState=e.selections.aisState),Wd=e.selections.vessel)}function KD(e=!1){XD(),Ei.forEach(t=>t.unsubscribe()),De&&e&&De.close(),De=null,postMessage({action:"close",result:e,playback:Tt})}function Ti(e){return new Promise((t,n)=>{fetch(`${e}`).then(r=>{r.json().then(o=>t(o)).catch(o=>n(o))}).catch(r=>{n(r)})})}function QD(){Ti(Bd+"/tracks"+(pe&&pe.signalk&&pe.signalk.maxRadius?`?radius=${pe.signalk.maxRadius}`:"?radius=10000")).then(t=>{Ud=!0,Object.entries(t).forEach(n=>{if(F.aisTargets.has(n[0])){const r=F.aisTargets.get(n[0]);r.track=n[1].coordinates,qd(r)}})}).catch(()=>{Ud=!1})}function Ni(e,t,n=!0,r=[]){if(n){let o=t.get(e);o&&r.includes(o?.state)&&(Ve.expired[e]=!0,o=null),o&&pe.signalk.maxRadius?o.positionReceived&&Ct.inBounds(o.position,WD)?Ve.updated[e]=!0:(t.delete(e),Ve.expired[e]=!0):Ve.updated[e]=!0}else 0!==t.size&&(t.forEach((o,i)=>{Ve.expired[i]=!0}),t.clear())}function YD(e=!1){if(!jn||e){const t=new Hd;t.playback=Tt,F.aisStatus.updated=Object.keys(Ve.updated),F.aisStatus.stale=Object.keys(Ve.stale),F.aisStatus.expired=Object.keys(Ve.expired),t.result=F,t.timestamp=Tt?zD:F.self.lastUpdated.toISOString(),postMessage(t),GD(),F.self.resourceUpdates=[],0===wi&&(function wP(){const e=(new Date).valueOf();F.aisTargets.forEach((t,n)=>{t.lastUpdated.valueOf()<e-$t.maxAge?(Ve.expired[n]=!0,F.aisTargets.delete(n)):t.lastUpdated.valueOf()<e-$t.staleAge&&(Ve.stale[n]=!0)}),F.aircraft.forEach((t,n)=>{t.lastUpdated.valueOf()<e-$t.maxAge?(Ve.expired[n]=!0,F.aircraft.delete(n)):t.lastUpdated.valueOf()<e-$t.staleAge&&(Ve.stale[n]=!0)}),F.sar.forEach((t,n)=>{t.lastUpdated.valueOf()<e-$t.maxAge?(Ve.expired[n]=!0,F.sar.delete(n)):t.lastUpdated.valueOf()<e-$t.staleAge&&(Ve.stale[n]=!0)})}(),F.self.positionReceived&&pe?.signalk.maxRadius&&(WD=Ct.calcMapifiedExtent(F.self.position,pe.signalk.maxRadius),wi++)),wi=wi>=qD?0:wi+1}}function JD(){jn&&"number"==typeof jn&&Fa.push(setInterval(()=>{$d&&(YD(!0),$d=!1)},jn)),Fa.push(setInterval(()=>{Ud&&QD()},6e4))}function XD(){Fa.forEach(e=>clearInterval(e)),Fa=[]}function eb(e,t,n=!1){if(e.lastUpdated=new Date,n){if(t.path.startsWith("resources."))e.resourceUpdates.push(t),function EP(e){const t=new fP;t.playback=Tt,t.result={path:e.path,value:e.value,sourceRef:Hn},postMessage(t)}(t);else if(t.path.startsWith("navigation.racing"))e.properties[t.path]=t.value;else if("performance.beatAngle"===t.path)e.performance.beatAngle=t.value;else if("performance.gybeAngle"===t.path)e.performance.gybeAngle=t.value;else if(t.path.startsWith("navigation.course."))if(t.path.startsWith("navigation.course.calcValues.")){const i=t.path.split(".").slice(3).join(".");e.courseCalcs[i]=t.value}else t.path.includes("activeRoute")?e.courseApi.activeRoute=t.value:-1!==t.path.indexOf("nextPoint")?e.courseApi.nextPoint=t.value:-1!==t.path.indexOf("previousPoint")?e.courseApi.previousPoint=t.value:"arrivalCircle"===t.path&&(e.courseApi.arrivalCircle=t.value);else"environment.mode"===t.path?e.environment.mode=t.value:"environment.sun"===t.path&&(e.environment.sun=t.value);const o=-1!==t.path.indexOf("course")?t.path.split(".").slice(0,2).join("."):t.path;-1!==gP.indexOf(o)&&(F.paths[o]=null)}else"navigation.distanceToSelf"===t.path&&(e.distanceToSelf=t.value);if(""===t.path)typeof t.value.name<"u"&&(e.name=t.value.name),typeof t.value.mmsi<"u"&&(e.mmsi=t.value.mmsi),typeof t.value.registrations<"u"&&(e.registrations=t.value.registrations),typeof t.value.buddy<"u"&&(e.buddy=t.value.buddy),typeof t.value.communication<"u"&&(e.callsignVhf=t.value.communication.callsignVhf??"",e.callsignHf=t.value.communication.callsignHf??"");else if("communication.callsignVhf"===t.path)e.callsignVhf=t.value;else if("communication.callsignHf"===t.path)e.callsignHf=t.value;else if("design.aisShipType"===t.path)e.type=t.value;else if("navigation.position"===t.path&&t.value){if(typeof t.value.latitude>"u"||typeof t.value.longitude>"u")return;e.position=Ct.normaliseCoords([t.value.longitude,t.value.latitude]),e.positionReceived=!0,n||qd(e)}else"navigation.state"===t.path?e.state=t.value:"navigation.speedOverGround"===t.path?e.sog=t.value:"environment.wind.angleApparent"===t.path?e.wind.awa=t.value:"environment.wind.speedApparent"===t.path?e.wind.aws=t.value:"environment.wind.speedTrue"===t.path?e.wind.speedTrue=t.value:"environment.wind.speedOverGround"===t.path?e.wind.sog=t.value:"environment.wind.directionTrue"===t.path?e.wind.twd=t.value:"environment.wind.directionMagnetic"===t.path?e.wind.mwd=t.value:"navigation.anchor.position"===t.path?e.anchor.position=t.value:"navigation.anchor.maxRadius"===t.path?e.anchor.maxRadius=t.value:"navigation.anchor.currentRadius"===t.path?e.anchor.radius=t.value:"steering.autopilot.state"===t.path&&Hn===Ci?e.autopilot.state=t.value:"steering.autopilot.mode"===t.path&&Hn===Ci?e.autopilot.mode=t.value:"steering.autopilot.target"===t.path&&Hn===Ci?e.autopilot.target=t.value:"steering.autopilot.engaged"===t.path&&Hn===Ci?e.autopilot.enabled=t.value:"steering.autopilot.defaultPilot"===t.path?(e.autopilot.default=t.value,Ci=t.value):"navigation.courseOverGroundTrue"===t.path?e.cogTrue=t.value:"navigation.courseOverGroundMagnetic"===t.path?e.cogMagnetic=t.value:"navigation.headingTrue"===t.path?e.headingTrue=t.value:"navigation.headingMagnetic"===t.path&&(e.headingMagnetic=t.value);typeof Vn.heading<"u"&&t.path===Vn.heading&&(e.orientation=t.value),typeof Vn.tws<"u"&&t.path===Vn.tws&&(e.wind.tws=t.value),typeof Vn.twd<"u"&&t.path===Vn.twd&&(e.wind.direction="environment.wind.angleTrueGround"===t.path||"environment.wind.angleTrueWater"===t.path?Vd.angleToDirection(t.value,e.orientation??0):t.value);const r=e.cogTrue??e.cogMagnetic??void 0;typeof r<"u"&&e.position&&(e.vectors.cog=[e.position,Ct.destCoordinate(e.position,r,(e.sog??0)*(60*(n?Wd.cogLine:Wd.aisCogLine)))])}function tb(e){if(e.path.includes("notifications.")){const t=new dP;t.playback=Tt,t.result={path:e.path,value:e.value,sourceRef:Hn},postMessage(t)}}function qd(e){if(e.track&&0===e.track.length)e.track.push([e.position]);else{const n=e.track[e.track.length-1][e.track[e.track.length-1].length-1];n[0]!==e.position[0]&&n[1]!==e.position[1]&&e.track[e.track.length-1].push(e.position)}e.track[e.track.length-1]=e.track[e.track.length-1].slice(0-$t.maxTrack)}addEventListener("message",({data:e})=>{!function vP(e){if(e.cmd)switch(e.cmd){case"open":ZD(e.options),function IP(e){if(De)return;if(!e.url)return void postMessage({action:"error",result:"Valid options not provided!"});const t=e.url.split("/");if(t.pop(),t.push("api"),t[0]="wss:"===t[0]?"https:":"http:",Bd=t.join("/"),function mP(){F={self:new $D,aisTargets:new Map,aisStatus:{updated:[],stale:[],expired:[]},paths:{},atons:new Map,aircraft:new Map,sar:new Map,meteo:new Map},F.self.positionReceived=!1,GD()}(),De=new aP,Ei.push(De.onConnect.subscribe(n=>Va({action:"onConnect",msg:n}))),Ei.push(De.onClose.subscribe(n=>Va({action:"onClose",msg:n}))),Ei.push(De.onError.subscribe(n=>Va({action:"onError",msg:n}))),Ei.push(De.onMessage.subscribe(n=>Va({action:"onMessage",msg:n}))),De.authToken=UD,e.playback){const n=e.playbackOptions.startTime?`?startTime=${e.playbackOptions.startTime}`:null;let r=e.playbackOptions.playbackRate?`playbackRate=${e.playbackOptions.playbackRate}`:null;r=r?n?"&"+r:"?"+r:null,De.open(`${e.url}${n||""}${r||""}`,e.playbackOptions.subscribe,e.token)}else De.open(e.url,e.subscribe,e.token),QD()}(e.options);break;case"close":KD(!0);break;case"subscribe":De.subscribe(e.options.context,e.options.path);break;case"settings":ZD(e.options);break;case"alarm":!function DP(e){const t=-1===e.type.indexOf("notifications.")?`notifications.${e.type}`:e.type;e.raise?De.raiseAlarm("self",t,new iP(e.message,e.state,!0,!0)):De.clearAlarm("self",t)}(e.options);break;case"vessel":if(e.options){let t;t="self"===e.options.context?F.self:F.aisTargets.get(e.options.context),t&&e.options.name&&(t.name=e.options.name)}break;case"auth":e.options&&typeof e.options.token<"u"&&(UD=e.options.token);break;case"trail":e.options&&(_i.trailDuration=e.options.trailDuration??24,e.options.trailResolution&&(_i.trailResolution.lastHour=e.options.trailResolution.lastHour??"5s",_i.trailResolution.next23=e.options.trailResolution.next23??"1m",_i.trailResolution.beyond24=e.options.trailResolution.beyond24??"5m")),function yP(e){const t=Bd+"/self/track?",n=[];e.trailDuration>24&&(n.push(Ti(`${t}timespan=${e.trailDuration-24}h&resolution=${e.trailResolution.beyond24}&timespanOffset=24`)),n.push(Ti(`${t}timespan=23h&resolution=${e.trailResolution.next23}&timespanOffset=1`))),e.trailDuration>1&&e.trailDuration<25&&n.push(Ti(`${t}timespan=${e.trailDuration-1}h&resolution=${e.trailResolution.next23}&timespanOffset=1`)),n.push(Ti(`${t}timespan=1h&resolution=${e.trailResolution.lastHour}`));let i=[];const s=new pP;s.playback=Tt,Promise.all(n).then(a=>{let l=0;const u=n.length-1;a.forEach(d=>{if(d.type&&"MultiLineString"===d.type&&d.coordinates&&Array.isArray(d.coordinates))if(l!==u){let f=[];for(d.coordinates.forEach(p=>{f=f.concat(p)}),f=(0,hP.p$)(f,5e-4,true);f.length>60;){const p=f.slice(0,60);i.push(p),f=f.slice(59),f[0]=[f[0][0]+5e-9,f[0][1]+5e-9]}0!==f.length&&i.push(f)}else i=i.concat(d.coordinates);l++}),s.result=i,postMessage(s)}).catch(()=>{s.result=null,postMessage(s)})}(_i)}}(e)})})();