@signalk/freeboard-sk 2.19.1-beta.1 → 2.19.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@signalk/freeboard-sk",
3
- "version": "2.19.1-beta.1",
3
+ "version": "2.19.2",
4
4
  "description": "Openlayers chart plotter implementation for Signal K",
5
5
  "keywords": [
6
6
  "signalk-webapp",
@@ -39,55 +39,51 @@
39
39
  ],
40
40
  "license": "Apache-v2",
41
41
  "dependencies": {
42
- "@signalk/server-api": "^2.3.0",
42
+ "@signalk/server-api": "^2.9.0",
43
43
  "tslib": "^2.0.0",
44
44
  "uuid": "^11.1.0"
45
45
  },
46
46
  "devDependencies": {
47
47
  "@angular-builders/custom-webpack": "^20.0.0",
48
- "@angular-devkit/build-angular": "^20.1.1",
49
- "@angular/animations": "^20.1.2",
50
- "@angular/cdk": "^20.1.2",
51
- "@angular/cli": "^20.1.1",
52
- "@angular/common": "^20.1.2",
53
- "@angular/compiler": "^20.1.2",
54
- "@angular/compiler-cli": "^20.1.2",
55
- "@angular/core": "^20.1.2",
56
- "@angular/forms": "^20.1.2",
57
- "@angular/language-service": "^20.1.2",
58
- "@angular/material": "^20.1.2",
59
- "@angular/platform-browser": "^20.1.2",
60
- "@angular/platform-browser-dynamic": "^20.1.2",
48
+ "@angular-devkit/build-angular": "^20.3.9",
49
+ "@angular/animations": "^20.3.10",
50
+ "@angular/cdk": "^20.2.12",
51
+ "@angular/cli": "^20.3.9",
52
+ "@angular/common": "^20.3.10",
53
+ "@angular/compiler": "^20.3.10",
54
+ "@angular/compiler-cli": "^20.3.10",
55
+ "@angular/core": "^20.3.10",
56
+ "@angular/forms": "^20.3.10",
57
+ "@angular/language-service": "^20.3.10",
58
+ "@angular/material": "^20.2.12",
59
+ "@angular/platform-browser": "^20.3.10",
60
+ "@angular/platform-browser-dynamic": "^20.3.10",
61
61
  "@kolkov/angular-editor": "^2.1.0",
62
62
  "@types/arcgis-rest-api": "^10.4.5",
63
63
  "@types/express": "^4.17.17",
64
64
  "@types/geojson": "^7946.0.10",
65
- "@types/jasmine": "~3.6.0",
66
- "@types/jasminewd2": "~2.0.3",
67
- "@types/node": "^20.4.5",
65
+ "@types/jasmine": "~5.1.0",
66
+ "@types/node": "^24.10.1",
68
67
  "@types/topojson-specification": "^1.0.2",
69
68
  "@types/xml2js": "^0.4.14",
70
- "@typescript-eslint/eslint-plugin": "^8.27.0",
71
- "@typescript-eslint/parser": "^8.27.0",
72
- "codelyzer": "^6.0.0",
69
+ "@typescript-eslint/eslint-plugin": "^8.46.3",
70
+ "@typescript-eslint/parser": "^8.46.3",
73
71
  "eslint": "^9.17.0",
74
72
  "geolib": "^3.3.3",
75
- "jasmine-core": "~3.8.0",
76
- "jasmine-spec-reporter": "~5.0.0",
77
- "karma": "^6.4.4",
73
+ "jasmine-core": "~5.5.0",
74
+ "karma": "~6.4.0",
78
75
  "karma-chrome-launcher": "~3.1.0",
79
- "karma-coverage-istanbul-reporter": "~3.0.2",
80
- "karma-jasmine": "~4.0.0",
81
- "karma-jasmine-html-reporter": "^1.5.0",
76
+ "karma-coverage": "~2.2.0",
77
+ "karma-jasmine": "~5.1.0",
78
+ "karma-jasmine-html-reporter": "~2.1.0",
82
79
  "ng-packagr": "^20.1.0",
83
80
  "ngeohash": "^0.6.3",
84
81
  "ol": "^10.2.1",
85
82
  "ol-mapbox-style": "^12.3.5",
86
83
  "pmtiles": "^2.7.0",
87
- "prettier": "^2.5.1",
88
- "prettier-plugin-organize-attributes": "^0.0.5",
84
+ "prettier": "^3.6.2",
85
+ "prettier-plugin-organize-attributes": "^1.0.0",
89
86
  "proj4": "2.6.2",
90
- "protractor": "~7.0.0",
91
87
  "rxjs": "~6.6.3",
92
88
  "semver": "^7.6.0",
93
89
  "signalk-client-angular": "^2.0.3",
@@ -1,8 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.shutdownAlarms = exports.initAlarms = void 0;
4
+ const tslib_1 = require("tslib");
4
5
  const server_api_1 = require("@signalk/server-api");
5
- const uuid = require("uuid");
6
+ const uuid = tslib_1.__importStar(require("uuid"));
6
7
  const geolib_1 = require("geolib");
7
8
  const AREA_TRIGGERS = ['entry', 'exit'];
8
9
  const AREA_GEOMETRIES = ['polygon', 'circle', 'region'];
package/plugin/index.js CHANGED
@@ -1,8 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
3
4
  const server_api_1 = require("@signalk/server-api");
4
5
  const alarms_1 = require("./alarms/alarms");
5
- const openapi = require("./openApi.json");
6
+ const openapi = tslib_1.__importStar(require("./openApi.json"));
6
7
  const defaultPollInterval = 60;
7
8
  const CONFIG_SCHEMA = {
8
9
  properties: {}
@@ -1,9 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.post = exports.fetch = void 0;
4
- const https = require("https");
5
- const url = require("url");
6
- const http = require("http");
4
+ const tslib_1 = require("tslib");
5
+ const https = tslib_1.__importStar(require("https"));
6
+ const url = tslib_1.__importStar(require("url"));
7
+ const http = tslib_1.__importStar(require("http"));
7
8
  // HTTP GET
8
9
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
9
10
  const fetch = (href) => {
@@ -39,10 +40,10 @@ exports.fetch = fetch;
39
40
  const post = (href, data) => {
40
41
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
41
42
  const opt = url.parse(href);
42
- (opt.method = 'POST'),
43
+ ((opt.method = 'POST'),
43
44
  (opt.headers = {
44
45
  'Content-Type': 'application/json'
45
- });
46
+ }));
46
47
  const req = href.indexOf('https') !== -1 ? https : http;
47
48
  return new Promise((resolve, reject) => {
48
49
  const postReq = req
@@ -0,0 +1 @@
1
+ (()=>{"use strict";var Yv={179:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=n(7636);t.default=function(a){var l=r.areaConversion[arguments.length>1&&void 0!==arguments[1]?arguments[1]:"m"];if(l)return a*l;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=c(n(7029)),o=c(n(3100)),i=c(n(5705)),s=c(n(942)),a=n(7636);function c(d){return d&&d.__esModule?d:{default:d}}t.default=function(f,h){var V,J,p=(0,r.default)(f),g=(0,o.default)(f),m=(0,i.default)(p),y=(0,i.default)(g),v=h/a.earthRadius,_=m-v,I=m+v,b=(0,i.default)(a.MAXLAT),k=(0,i.default)(a.MINLAT),L=(0,i.default)(a.MAXLON),H=(0,i.default)(a.MINLON);if(_>k&&I<b){var qt=Math.asin(Math.sin(v)/Math.cos(m));(V=y-qt)<H&&(V+=2*Math.PI),(J=y+qt)>L&&(J-=2*Math.PI)}else _=Math.max(_,k),I=Math.min(I,b),V=H,J=L;return[{latitude:(0,s.default)(_),longitude:(0,s.default)(V)},{latitude:(0,s.default)(I),longitude:(0,s.default)(J)}]}},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(c,l,u){return(0,r.default)(c,l,.01)<u}},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(u){return u&&u.__esModule?u:{default:u}}t.default=function u(d){return(0,r.default)(d)?!(parseFloat(d)>s.MAXLON||d<s.MINLON):!!(0,o.default)(d)&&u((0,i.default)(d))}},354:(e,t)=>{function i(u,d){(null==d||d>u.length)&&(d=u.length);for(var f=0,h=new Array(d);f<d;f++)h[f]=u[f];return h}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(p){var m=function n(u,d){return function a(u){if(Array.isArray(u))return u}(u)||function s(u,d){if(!(typeof Symbol>"u")&&Symbol.iterator in Object(u)){var f=[],h=!0,p=!1,g=void 0;try{for(var y,m=u[Symbol.iterator]();!(h=(y=m.next()).done)&&(f.push(y.value),!d||f.length!==d);h=!0);}catch(v){p=!0,g=v}finally{try{!h&&null!=m.return&&m.return()}finally{if(p)throw g}}return f}}(u,d)||function o(u,d){if(u){if("string"==typeof u)return i(u,d);var f=Object.prototype.toString.call(u).slice(8,-1);if("Object"===f&&u.constructor&&(f=u.constructor.name),"Map"===f||"Set"===f)return Array.from(u);if("Arguments"===f||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(f))return i(u,d)}}(u,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.")}()}(p.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(u){return u&&u.__esModule?u:{default:u}}t.default=function(d,f){var h=(0,r.default)(f),p=(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)(p)-(0,i.default)(m))*Math.cos((0,i.default)(h)),Math.cos((0,i.default)(g))*Math.sin((0,i.default)(h))-Math.sin((0,i.default)(g))*Math.cos((0,i.default)(h))*Math.cos((0,i.default)(p)-(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 l=r.distanceConversion[arguments.length>1&&void 0!==arguments[1]?arguments[1]:"m"];if(l)return a*l;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(u){return u&&u.__esModule?u:{default:u}}t.default=function(d,f){var h=(0,i.default)((0,o.default)(f))-(0,i.default)((0,o.default)(d)),p=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(h)>Math.PI&&(h=h>0?-1*(2*Math.PI-h):2*Math.PI+h),((0,s.default)(Math.atan2(h,p))+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(c,l){return(0,r.default)(c,l)[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 c=new RegExp(r.sexagesimalPattern).exec(a.toString().trim());if(typeof c>"u"||null===c)throw new Error("Given value is not in sexagesimal format");var l=Number(c[2])/60||0,u=Number(c[4])/3600||0,d=parseFloat(c[1])+l+u;return["S","W"].includes(c[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(u){return u&&u.__esModule?u:{default:u}}t.default=function(d){var f=0;if(d.length>2){for(var h,p,g,m=0;m<d.length;m++){m===d.length-2?(h=d.length-2,p=d.length-1,g=0):m===d.length-1?(h=d.length-1,p=0,g=1):(h=m,p=m+1,g=m+2);var y=(0,i.default)(d[h]),v=(0,o.default)(d[p]),_=(0,i.default)(d[g]);f+=((0,r.default)(_)-(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=c(n(7029)),o=c(n(3100)),i=c(n(5705)),s=c(n(942)),a=n(7636);function c(d){return d&&d.__esModule?d:{default:d}}t.default=function(f,h,p){var g=arguments.length>3&&void 0!==arguments[3]?arguments[3]:6371e3,m=(0,r.default)(f),y=(0,o.default)(f),v=h/g,_=(0,i.default)(p),I=(0,i.default)(m),b=(0,i.default)(y),k=Math.asin(Math.sin(I)*Math.cos(v)+Math.cos(I)*Math.sin(v)*Math.cos(_)),L=b+Math.atan2(Math.sin(_)*Math.sin(v)*Math.cos(I),Math.cos(v)-Math.sin(I)*Math.sin(k)),H=(0,s.default)(L);return(H<a.MINLON||H>a.MAXLON)&&(L=(L+3*Math.PI)%(2*Math.PI)-Math.PI,H=(0,s.default)(L)),{latitude:(0,s.default)(k),longitude:H}}},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(c,l){var u=arguments.length>2&&void 0!==arguments[2]?arguments[2]:r.default;return u="function"==typeof u?u:r.default,l.slice().sort(function(d,f){return u(c,d)-u(c,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 c.default}}),Object.defineProperty(t,"findNearest",{enumerable:!0,get:function(){return l.default}}),Object.defineProperty(t,"getAreaOfPolygon",{enumerable:!0,get:function(){return u.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 h.default}}),Object.defineProperty(t,"getCenterOfBounds",{enumerable:!0,get:function(){return p.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 _.default}}),Object.defineProperty(t,"getGreatCircleBearing",{enumerable:!0,get:function(){return I.default}}),Object.defineProperty(t,"getLatitude",{enumerable:!0,get:function(){return b.default}}),Object.defineProperty(t,"getLongitude",{enumerable:!0,get:function(){return k.default}}),Object.defineProperty(t,"getPathLength",{enumerable:!0,get:function(){return L.default}}),Object.defineProperty(t,"getPreciseDistance",{enumerable:!0,get:function(){return H.default}}),Object.defineProperty(t,"getRhumbLineBearing",{enumerable:!0,get:function(){return V.default}}),Object.defineProperty(t,"getRoughCompassDirection",{enumerable:!0,get:function(){return J.default}}),Object.defineProperty(t,"getSpeed",{enumerable:!0,get:function(){return qt.default}}),Object.defineProperty(t,"isDecimal",{enumerable:!0,get:function(){return ks.default}}),Object.defineProperty(t,"isPointInLine",{enumerable:!0,get:function(){return Zn.default}}),Object.defineProperty(t,"isPointInPolygon",{enumerable:!0,get:function(){return Xn.default}}),Object.defineProperty(t,"isPointNearLine",{enumerable:!0,get:function(){return er.default}}),Object.defineProperty(t,"isPointWithinRadius",{enumerable:!0,get:function(){return ht.default}}),Object.defineProperty(t,"isSexagesimal",{enumerable:!0,get:function(){return zt.default}}),Object.defineProperty(t,"isValidCoordinate",{enumerable:!0,get:function(){return Os.default}}),Object.defineProperty(t,"isValidLatitude",{enumerable:!0,get:function(){return xs.default}}),Object.defineProperty(t,"isValidLongitude",{enumerable:!0,get:function(){return Do.default}}),Object.defineProperty(t,"orderByDistance",{enumerable:!0,get:function(){return To.default}}),Object.defineProperty(t,"sexagesimalToDecimal",{enumerable:!0,get:function(){return bo.default}}),Object.defineProperty(t,"toDecimal",{enumerable:!0,get:function(){return $e.default}}),Object.defineProperty(t,"toRad",{enumerable:!0,get:function(){return bu.default}}),Object.defineProperty(t,"toDeg",{enumerable:!0,get:function(){return wo.default}}),Object.defineProperty(t,"wktToPolygon",{enumerable:!0,get:function(){return wu.default}});var o=A(n(2222)),i=A(n(179)),s=A(n(917)),a=A(n(1167)),c=A(n(8948)),l=A(n(1118)),u=A(n(1691)),d=A(n(9144)),f=A(n(190)),h=A(n(5524)),p=A(n(7088)),g=A(n(9952)),m=A(n(8744)),y=A(n(4695)),v=A(n(8674)),_=A(n(7504)),I=A(n(884)),b=A(n(7029)),k=A(n(3100)),L=A(n(5378)),H=A(n(2671)),V=A(n(939)),J=A(n(2845)),qt=A(n(8950)),ks=A(n(3026)),Zn=A(n(4194)),Xn=A(n(3536)),er=A(n(2787)),ht=A(n(202)),zt=A(n(4902)),Os=A(n(7637)),xs=A(n(6563)),Do=A(n(266)),To=A(n(2447)),bo=A(n(1532)),$e=A(n(5101)),bu=A(n(5705)),wo=A(n(942)),wu=A(n(354)),Ps=n(7636);function A(w){return w&&w.__esModule?w:{default:w}}Object.keys(Ps).forEach(function(w){"default"===w||"__esModule"===w||Object.prototype.hasOwnProperty.call(r,w)||Object.defineProperty(t,w,{enumerable:!0,get:function(){return Ps[w]}})})},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(u){return u&&u.__esModule?u:{default:u}}t.default=function(d,f){var h=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;h=typeof h<"u"&&!isNaN(h)?h:1;var b,k,L,H,V,J,Os,p=(0,r.default)(d),g=(0,o.default)(d),m=(0,r.default)(f),y=(0,o.default)(f),v=6356752.314245,_=1/298.257223563,I=(0,i.default)(y-g),qt=Math.atan((1-_)*Math.tan((0,i.default)(parseFloat(p)))),ks=Math.atan((1-_)*Math.tan((0,i.default)(parseFloat(m)))),Zn=Math.sin(qt),Xn=Math.cos(qt),er=Math.sin(ks),ht=Math.cos(ks),zt=I,xs=100;do{var Do=Math.sin(zt),To=Math.cos(zt);if(0===(J=Math.sqrt(ht*Do*(ht*Do)+(Xn*er-Zn*ht*To)*(Xn*er-Zn*ht*To))))return 0;b=Zn*er+Xn*ht*To,k=Math.atan2(J,b),V=b-2*Zn*er/(H=1-(L=Xn*ht*Do/J)*L),isNaN(V)&&(V=0);var bo=_/16*H*(4+_*(4-3*H));Os=zt,zt=I+(1-bo)*_*L*(k+bo*J*(V+bo*b*(2*V*V-1)))}while(Math.abs(zt-Os)>1e-12&&--xs>0);if(0===xs)return NaN;var $e=H*(s.earthRadius*s.earthRadius-v*v)/(v*v),wo=$e/1024*(256+$e*($e*(74-47*$e)-128));return Math.round(v*(1+$e/16384*(4096+$e*($e*(320-175*$e)-768)))*(k-wo*J*(V+wo/4*(b*(2*V*V-1)-wo/6*V*(4*J*J-3)*(4*V*V-3))))/h)*h}},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(c,l,u,d){return(0,r.default)(c,l,u)<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(l){return l&&l.__esModule?l:{default:l}}t.default=function(u,d){var f=(0,o.default)(u,r.longitudeKeys);if(!(typeof f>"u"||null===f)){var h=u[f];return!0===d?h:(0,i.default)(h)}}},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(c){return c&&c.__esModule?c:{default:c}}t.default=function(l,u){for(var d=!1,f=u.length,h=-1,p=f-1;++h<f;p=h)((0,o.default)(u[h])<=(0,o.default)(l)&&(0,o.default)(l)<(0,o.default)(u[p])||(0,o.default)(u[p])<=(0,o.default)(l)&&(0,o.default)(l)<(0,o.default)(u[h]))&&(0,r.default)(l)<((0,r.default)(u[p])-(0,r.default)(u[h]))*((0,o.default)(l)-(0,o.default)(u[h]))/((0,o.default)(u[p])-(0,o.default)(u[h]))+(0,r.default)(u[h])&&(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(c,l,u){return(0,r.default)(l,c)+(0,r.default)(c,u)===(0,r.default)(l,u)}},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 h=Object.keys(d);if(Object.getOwnPropertySymbols){var p=Object.getOwnPropertySymbols(d);f&&(p=p.filter(function(g){return Object.getOwnPropertyDescriptor(d,g).enumerable})),h.push.apply(h,p)}return h}function c(d,f,h){return f in d?Object.defineProperty(d,f,{value:h,enumerable:!0,configurable:!0,writable:!0}):d[f]=h,d}t.default=function(f){var h=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{longitude:r.longitudeKeys,latitude:r.latitudeKeys,altitude:r.altitudeKeys},p=(0,o.default)(f,h.longitude),g=(0,o.default)(f,h.latitude),m=(0,o.default)(f,h.altitude);return function a(d){for(var f=1;f<arguments.length;f++){var h=null!=arguments[f]?arguments[f]:{};f%2?s(Object(h),!0).forEach(function(p){c(d,p,h[p])}):Object.getOwnPropertyDescriptors?Object.defineProperties(d,Object.getOwnPropertyDescriptors(h)):s(Object(h)).forEach(function(p){Object.defineProperty(d,p,Object.getOwnPropertyDescriptor(h,p))})}return d}({latitude:g,longitude:p},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=c(n(3026)),o=c(n(4902)),i=c(n(1532)),s=c(n(7637)),a=c(n(4695));function c(p){return p&&p.__esModule?p:{default:p}}function l(p,g){var m=Object.keys(p);if(Object.getOwnPropertySymbols){var y=Object.getOwnPropertySymbols(p);g&&(y=y.filter(function(v){return Object.getOwnPropertyDescriptor(p,v).enumerable})),m.push.apply(m,y)}return m}function u(p){for(var g=1;g<arguments.length;g++){var m=null!=arguments[g]?arguments[g]:{};g%2?l(Object(m),!0).forEach(function(y){d(p,y,m[y])}):Object.getOwnPropertyDescriptors?Object.defineProperties(p,Object.getOwnPropertyDescriptors(m)):l(Object(m)).forEach(function(y){Object.defineProperty(p,y,Object.getOwnPropertyDescriptor(m,y))})}return p}function d(p,g,m){return g in p?Object.defineProperty(p,g,{value:m,enumerable:!0,configurable:!0,writable:!0}):p[g]=m,p}t.default=function p(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)?p(y):y}):u(u(u({},g),m.latitude&&d({},m.latitude,p(g[m.latitude]))),m.longitude&&d({},m.longitude,p(g[m.longitude])))}return Array.isArray(g)?g.map(function(y){return(0,s.default)(y)?p(y):y}):g}},5378:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=function o(c){return c&&c.__esModule?c:{default:c}}(n(8674));function i(c){return(i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(u){return typeof u}:function(u){return u&&"function"==typeof Symbol&&u.constructor===Symbol&&u!==Symbol.prototype?"symbol":typeof u})(c)}t.default=function(l){var u=arguments.length>1&&void 0!==arguments[1]?arguments[1]:r.default;return l.reduce(function(d,f){return"object"===i(d)&&null!==d.last&&(d.distance+=u(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(u){return u&&u.__esModule?u:{default:u}}t.default=function(d){if(!1===Array.isArray(d)||0===d.length)return!1;var f=d.length,h=d.reduce(function(y,v){var _=(0,i.default)((0,r.default)(v)),I=(0,i.default)((0,o.default)(v));return{X:y.X+Math.cos(_)*Math.cos(I),Y:y.Y+Math.cos(_)*Math.sin(I),Z:y.Z+Math.sin(_)}},{X:0,Y:0,Z:0}),p=h.X/f,g=h.Y/f,m=h.Z/f;return{longitude:(0,s.default)(Math.atan2(g,p)),latitude:(0,s.default)(Math.atan2(m,Math.sqrt(p*p+g*g)))}}},5551:(e,t)=>{function n(l,u){return l*l+u*u}function r(l,u){return n(l.longitude-u.longitude,l.latitude-u.latitude)}function o(l,u,d){var f=u.longitude,h=u.latitude,p=d.longitude-f,g=d.latitude-h;if(0!==p||0!==g){var m=((l.longitude-f)*p+(l.latitude-h)*g)/n(p,g);m>1?(f=d.longitude,h=d.latitude):m>0&&(f+=p*m,h+=g*m)}return n(l.longitude-f,l.latitude-h)}function s(l,u,d,f,h){for(var g,p=f,m=u+1;m<d;m++){var y=o(l[m],l[u],l[d]);y>p&&(g=m,p=y)}p>f&&(g-u>1&&s(l,u,g,f,h),h.push(l[g]),d-g>1&&s(l,g,d,f,h))}function a(l,u){var d=l.length-1,f=[l[0]];return s(l,0,d,u,f),f.push(l[d]),f}t.__esModule=!0,t.SimplifyLL=function c(l,u,d){if(void 0===u&&(u=1),void 0===d&&(d=!1),l.length<=2)return l;var f=u*u;return a(l=d?l:function i(l,u){for(var f,d=l[0],h=[d],p=1,g=l.length;p<g;p++)r(f=l[p],d)>u&&(h.push(f),d=f);return d!==f&&h.push(f),h}(l,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(l,u){return l*l+u*u}function r(l,u){return n(l.x-u.x,l.y-u.y)}function o(l,u,d){var f=u.x,h=u.y,p=d.x-f,g=d.y-h;if(0!==p||0!==g){var m=((l.x-f)*p+(l.y-h)*g)/n(p,g);m>1?(f=d.x,h=d.y):m>0&&(f+=p*m,h+=g*m)}return n(l.x-f,l.y-h)}function s(l,u,d,f,h){for(var g,p=f,m=u+1;m<d;m++){var y=o(l[m],l[u],l[d]);y>p&&(g=m,p=y)}p>f&&(g-u>1&&s(l,u,g,f,h),h.push(l[g]),d-g>1&&s(l,g,d,f,h))}function a(l,u){var d=l.length-1,f=[l[0]];return s(l,0,d,u,f),f.push(l[d]),f}t.__esModule=!0,t.Simplify=function c(l,u,d){if(void 0===u&&(u=1),void 0===d&&(d=!1),l.length<=2)return l;var f=u*u;return a(l=d?l:function i(l,u){for(var f,d=l[0],h=[d],p=1,g=l.length;p<g;p++)r(f=l[p],d)>u&&(h.push(f),d=f);return d!==f&&h.push(f),h}(l,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(u){return u&&u.__esModule?u:{default:u}}t.default=function u(d){return(0,r.default)(d)?!(parseFloat(d)>s.MAXLAT||d<s.MINLAT):!!(0,o.default)(d)&&u((0,i.default)(d))}},6729:(e,t)=>{function n(l,u){return l*l+u*u}function r(l,u){return n(l[0]-u[0],l[1]-u[1])}function o(l,u,d){var f=u[0],h=u[1],p=d[0]-f,g=d[1]-h;if(0!==p||0!==g){var m=((l[0]-f)*p+(l[1]-h)*g)/n(p,g);m>1?(f=d[0],h=d[1]):m>0&&(f+=p*m,h+=g*m)}return n(l[0]-f,l[1]-h)}function s(l,u,d,f,h){for(var g,p=f,m=u+1;m<d;m++){var y=o(l[m],l[u],l[d]);y>p&&(g=m,p=y)}p>f&&(g-u>1&&s(l,u,g,f,h),h.push(l[g]),d-g>1&&s(l,g,d,f,h))}function a(l,u){var d=l.length-1,f=[l[0]];return s(l,0,d,u,f),f.push(l[d]),f}t.__esModule=!0,t.SimplifyAP=function c(l,u,d){if(void 0===u&&(u=1),void 0===d&&(d=!1),l.length<=2)return l;var f=u*u;return a(l=d?l:function i(l,u){for(var f,d=l[0],h=[d],p=1,g=l.length;p<g;p++)r(f=l[p],d)>u&&(h.push(f),d=f);return d!==f&&h.push(f),h}(l,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(l){return l&&l.__esModule?l:{default:l}}t.default=function(u,d){var f=(0,o.default)(u,r.latitudeKeys);if(!(typeof f>"u"||null===f)){var h=u[f];return!0===d?h:(0,i.default)(h)}}},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(c){var l=(0,r.default)(c),d=l.minLng+(l.maxLng-l.minLng)/2;return{latitude:parseFloat((l.minLat+(l.maxLat-l.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(c){return c&&c.__esModule?c:{default:c}}t.default=function(l,u,d){var f=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1,h=(0,r.default)(u,l,f),p=(0,r.default)(l,d,f),g=(0,r.default)(u,d,f),m=Math.acos((0,o.default)((h*h+g*g-p*p)/(2*h*g))),y=Math.acos((0,o.default)((p*p+g*g-h*h)/(2*p*g)));return m>Math.PI/2?h:y>Math.PI/2?p:Math.sin(m)*h}},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 h={m2:1,km2:1e-6,ha:1e-4,a:.01,ft2:10.763911,yd2:1.19599,in2:1550.0031};t.areaConversion=h,h.sqm=h.m2,h.sqkm=h.km2,h.sqft=h.ft2,h.sqyd=h.yd2,h.sqin=h.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(l){return l&&l.__esModule?l:{default:l}}t.default=function(u){var d=(0,r.default)(u),f=d.latitude,h=d.longitude;if(Array.isArray(u)&&u.length>=2)return(0,i.default)(u[0])&&(0,o.default)(u[1]);if(typeof f>"u"||typeof h>"u")return!1;var p=u[h],g=u[f];return!(typeof g>"u"||typeof p>"u"||!1===(0,o.default)(g)||!1===(0,i.default)(p))}},8674:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=c(n(7029)),o=c(n(3100)),i=c(n(5705)),s=c(n(6522)),a=n(7636);function c(d){return d&&d.__esModule?d:{default:d}}t.default=function(f,h){var p=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;p=typeof p<"u"&&!isNaN(p)?p:1;var g=(0,r.default)(f),m=(0,o.default)(f),y=(0,r.default)(h),v=(0,o.default)(h),_=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(_/p)*p}},8744:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0,t.default=function(i,s){return s.reduce(function(a,c){if(typeof i>"u"||null===i)throw new Error("'".concat(i,"' is no valid coordinate."));return Object.prototype.hasOwnProperty.call(i,c)&&typeof c<"u"&&typeof a>"u"?(a=c,c):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 h=[],p=!0,g=!1,m=void 0;try{for(var v,y=d[Symbol.iterator]();!(p=(v=y.next()).done)&&(h.push(v.value),!f||h.length!==f);p=!0);}catch(_){g=!0,m=_}finally{try{!p&&null!=y.return&&y.return()}finally{if(g)throw m}}return h}}(d,f)||function o(d,f){if(d){if("string"==typeof d)return i(d,f);var h=Object.prototype.toString.call(d).slice(8,-1);if("Object"===h&&d.constructor&&(h=d.constructor.name),"Map"===h||"Set"===h)return Array.from(d);if("Arguments"===h||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(h))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 h=0,p=new Array(f);h<f;h++)p[h]=d[h];return p}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0,t.default=function(f){var p=n(f.toString().split("."),2),m=p[1],y=Math.abs(Number(p[0])),v=60*+("0."+(m||0)),_=v.toString().split("."),I=Math.floor(v),b=function(f){var p=Math.pow(10,arguments.length>1&&void 0!==arguments[1]?arguments[1]:4);return Math.round(f*p)/p}(60*+("0."+(_[1]||0))).toString(),L=n(b.split("."),2),H=L[0],V=L[1],J=void 0===V?"0":V;return y+"\xb0 "+I.toString().padStart(2,"0")+"' "+H.padStart(2,"0")+"."+J.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(c,l){return(arguments.length>2&&void 0!==arguments[2]?arguments[2]:r.default)(c,l)/(Number(l.time)-Number(c.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(c){return c&&c.__esModule?c:{default:c}}t.default=function(l){if(!1===Array.isArray(l)||0===l.length)throw new Error("No points were given.");return l.reduce(function(u,d){var f=(0,r.default)(d),h=(0,o.default)(d);return{maxLat:Math.max(f,u.maxLat),minLat:Math.min(f,u.minLat),maxLng:Math.max(h,u.maxLng),minLng:Math.min(h,u.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(c,l){var u=arguments.length>2&&void 0!==arguments[2]?arguments[2]:r.default,d="function"==typeof u?u(c,l):(0,r.default)(c,l);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"}}}},Cu={};function Ls(e){var t=Cu[e];if(void 0!==t)return t.exports;var n=Cu[e]={exports:{}};return Yv[e](n,n.exports,Ls),n.exports}function Fs(e){return"function"==typeof e}let Vs=!1;const Se={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 Vs&&console.log("RxJS: Back to a better error behavior. Thank you. <3");Vs=e},get useDeprecatedSynchronousErrorHandling(){return Vs}};function Yt(e){setTimeout(()=>{throw e},0)}const Co={closed:!0,next(e){},error(e){if(Se.useDeprecatedSynchronousErrorHandling)throw e;Yt(e)},complete(){}},Kv=Array.isArray||(e=>e&&"number"==typeof e.length);function Mu(e){return null!==e&&"object"==typeof e}const Mo=(()=>{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 G{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 G)n.remove(this);else if(null!==n)for(let s=0;s<n.length;++s)n[s].remove(this);if(Fs(o)){r&&(this._unsubscribe=void 0);try{o.call(this)}catch(s){t=s instanceof Mo?Nu(s.errors):[s]}}if(Kv(i)){let s=-1,a=i.length;for(;++s<a;){const c=i[s];if(Mu(c))try{c.unsubscribe()}catch(l){t=t||[],l instanceof Mo?t=t.concat(Nu(l.errors)):t.push(l)}}}if(t)throw new Mo(t)}add(t){let n=t;if(!t)return G.EMPTY;switch(typeof t){case"function":n=new G(t);case"object":if(n===this||n.closed||"function"!=typeof n.unsubscribe)return n;if(this.closed)return n.unsubscribe(),n;if(!(n instanceof G)){const i=n;n=new G,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 G){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 Nu(e){return e.reduce((t,n)=>t.concat(n instanceof Mo?n.errors:n),[])}G.EMPTY=((e=new G).closed=!0,e);const No="function"==typeof Symbol?Symbol("rxSubscriber"):"@@rxSubscriber_"+Math.random();class ae extends G{constructor(t,n,r){switch(super(),this.syncErrorValue=null,this.syncErrorThrown=!1,this.syncErrorThrowable=!1,this.isStopped=!1,arguments.length){case 0:this.destination=Co;break;case 1:if(!t){this.destination=Co;break}if("object"==typeof t){t instanceof ae?(this.syncErrorThrowable=t.syncErrorThrowable,this.destination=t,t.add(this)):(this.syncErrorThrowable=!0,this.destination=new Su(this,t));break}default:this.syncErrorThrowable=!0,this.destination=new Su(this,t,n,r)}}[No](){return this}static create(t,n,r){const o=new ae(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 Su extends ae{constructor(t,n,r,o){super(),this._parentSubscriber=t;let i,s=this;Fs(n)?i=n:n&&(i=n.next,r=n.error,o=n.complete,n!==Co&&(s=Object.create(n),Fs(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;Se.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}=Se;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):Yt(t),this.unsubscribe();else{if(this.unsubscribe(),r)throw t;Yt(t)}}}complete(){if(!this.isStopped){const{_parentSubscriber:t}=this;if(this._complete){const n=()=>this._complete.call(this._context);Se.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(),Se.useDeprecatedSynchronousErrorHandling)throw r;Yt(r)}}__tryOrSetError(t,n,r){if(!Se.useDeprecatedSynchronousErrorHandling)throw new Error("bad call");try{n.call(this._context,r)}catch(o){return Se.useDeprecatedSynchronousErrorHandling?(t.syncErrorValue=o,t.syncErrorThrown=!0,!0):(Yt(o),!0)}return!1}_unsubscribe(){const{_parentSubscriber:t}=this;this._context=null,this._parentSubscriber=null,t.unsubscribe()}}const tr="function"==typeof Symbol&&Symbol.observable||"@@observable";function Zv(e){return e}let ye=(()=>{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 Qv(e,t,n){if(e){if(e instanceof ae)return e;if(e[No])return e[No]()}return e||t||n?new ae(e,t,n):new ae(Co)}(n,r,o);if(s.add(i?i.call(s,this.source):this.source||Se.useDeprecatedSynchronousErrorHandling&&!s.syncErrorThrowable?this._subscribe(s):this._trySubscribe(s)),Se.useDeprecatedSynchronousErrorHandling&&s.syncErrorThrowable&&(s.syncErrorThrowable=!1,s.syncErrorThrown))throw s.syncErrorValue;return s}_trySubscribe(n){try{return this._subscribe(n)}catch(r){Se.useDeprecatedSynchronousErrorHandling&&(n.syncErrorThrown=!0,n.syncErrorValue=r),function Jv(e){for(;e;){const{closed:t,destination:n,isStopped:r}=e;if(t||r)return!1;e=n&&n instanceof ae?n:null}return!0}(n)?n.error(r):console.warn(r)}}forEach(n,r){return new(r=Au(r))((o,i)=>{let s;s=this.subscribe(a=>{try{n(a)}catch(c){i(c),s&&s.unsubscribe()}},i,o)})}_subscribe(n){const{source:r}=this;return r&&r.subscribe(n)}[tr](){return this}pipe(...n){return 0===n.length?this:function Ru(e){return 0===e.length?Zv:1===e.length?e[0]:function(n){return e.reduce((r,o)=>o(r),n)}}(n)(this)}toPromise(n){return new(n=Au(n))((r,o)=>{let i;this.subscribe(s=>i=s,s=>o(s),()=>r(i))})}}return e.create=t=>new e(t),e})();function Au(e){if(e||(e=Se.Promise||Promise),!e)throw new Error("no Promise impl found");return e}const Kt=(()=>{function e(){return Error.call(this),this.message="object unsubscribed",this.name="ObjectUnsubscribedError",this}return e.prototype=Object.create(Error.prototype),e})();class Xv extends G{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 e_ extends ae{constructor(t){super(t),this.destination=t}}let ve=(()=>{class e extends ye{constructor(){super(),this.observers=[],this.closed=!1,this.isStopped=!1,this.hasError=!1,this.thrownError=null}[No](){return new e_(this)}lift(n){const r=new ku(this,this);return r.operator=n,r}next(n){if(this.closed)throw new Kt;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 Kt;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 Kt;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 Kt;return super._trySubscribe(n)}_subscribe(n){if(this.closed)throw new Kt;return this.hasError?(n.error(this.thrownError),G.EMPTY):this.isStopped?(n.complete(),G.EMPTY):(this.observers.push(n),new Xv(this,n))}asObservable(){const n=new ye;return n.source=this,n}}return e.create=(t,n)=>new ku(t,n),e})();class ku extends ve{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):G.EMPTY}}Error;function U(e){return{token:e.token,providedIn:e.providedIn||null,factory:e.factory,value:void 0}}Error,globalThis,Symbol,typeof document<"u"&&document,function cA(){"function"==typeof Symbol&&Symbol.iterator&&Symbol}();class lk{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 Ns{static updates(){return{context:null,updates:[]}}static subscribe(){return{context:null,subscribe:[]}}static unsubscribe(){return{context:null,unsubscribe:[]}}static request(){return{requestId:(new lk).toString()}}}let dk=(()=>{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 ve,this.onConnect=this._connect.asObservable(),this._close=new ve,this.onClose=this._close.asObservable(),this._error=new ve,this.onError=this._error.asObservable(),this._message=new ve,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=Ns.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=Ns.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=Ns.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=Ns.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=U({token:e,factory:e.\u0275fac,providedIn:"root"}),e})();class hk{constructor(t,n,r,o){this._method=[],this._message="",this._message=typeof t<"u"?t:"",this._state=typeof n<"u"?n:kv.alarm,r&&this._method.push(gu.visual),o&&this._method.push(gu.sound)}get value(){return{message:this._message,state:this._state,method:this._method}}}var kv=function(e){return e.normal="normal",e.alert="alert",e.warn="warn",e.alarm="alarm",e.emergency="emergency",e}(kv||{}),gu=function(e){return e.visual="visual",e.sound="sound",e}(gu||{});class gk{constructor(){this.obsList=[],this.stream=new dk,this._connect=new ve,this.onConnect=this._connect.asObservable(),this._close=new ve,this.onClose=this._close.asObservable(),this._error=new ve,this.onError=this._error.asObservable(),this._message=new ve,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 Ss{id;name;mmsi;position=[0,0];positionReceived=!1;state;type={id:-1,name:""};properties={};lastUpdated=new Date;callsignVhf;callsignHf;orientation=0;virtual}class Ov extends Ss{anchor={maxRadius:null,radius:null,position:null};autopilot={state:null,mode:null,target:null,enabled:!1,default:null,availableActions:[]};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 mk extends Ss{constructor(){super()}}class yk extends Ss{sog=0;track=[];constructor(){super()}}class xv extends Ss{constructor(){super()}}class vk extends xv{twd;tws;temperature;constructor(){super()}}class mu{static celsiusToKelvin(t=0){return t+273.15}static kelvinToCelsius(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 Ut=Ls(2541);class He{static destCoordinate(t,n,r){const o=(0,Ut.computeDestinationPoint)(t,r,mu.radiansToDegrees(n));return[o.longitude,o.latitude]}static distanceTo(t,n){return(0,Ut.getDistance)(t,n)}static routeLength(t){return(0,Ut.getPathLength)(t)}static routeLegs(t,n){if(t.length<2)return[];const r=[];r.push(n?{bearing:(0,Ut.getGreatCircleBearing)(n,t[0]),distance:He.distanceTo(n,t[0])}:{bearing:0,distance:0});for(let o=1;o<t.length;++o){const i={bearing:(0,Ut.getGreatCircleBearing)(t[o-1],t[o]),distance:He.distanceTo(t[o-1],t[o])};r.push(i)}return r}static centreOfPolygon(t){const n=(0,Ut.getCenter)(t);return[n.longitude,n.latitude]}static inDLCrossingZone(t,n=170){return Math.abs(t[0])>=n}static inBounds(t,n){return(0,Ut.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(mu.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 Ik{action="notification";playback=!1;result=null;self=null;timestamp=(new Date).toISOString();sourceRef}class vu{action;playback=!1;result=null;timestamp;self=null;constructor(){this.action="update"}}class Dk extends vu{constructor(){super(),this.action="resource"}}class Tk extends vu{constructor(){super(),this.action="trail"}}var bk=Ls(6380);const wk=["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 N,X,Pv;const yo=[];let Eu,Rs=[],_u=!1,Iu=!1;const Q={signalk:{},aisState:[]};let le,Vv,Lv=[0,0,0,0],Fv=60,vo=0,Wt={},Gt=500,Be=!1;const Je={maxAge:54e4,staleAge:36e4,lastTick:(new Date).valueOf(),maxTrack:20};let Du={cogLine:10,aisCogLine:10};const _o={trailDuration:24,trailResolution:{lastHour:"5s",next23:"10s",beyond24:"1m"}};let ft,Qn="freeboard-sk";function jv(){le={updated:{},stale:{},expired:{}}}function As({action:e,msg:t}){switch(e){case"onConnect":postMessage({action:"open",playback:Be,result:t.target.readyState});break;case"onClose":Bv(!1);break;case"onError":postMessage({action:"error",playback:Be,result:"Connection error!"});break;case"onMessage":!function Ak(e){X.isHello(e)?(postMessage({action:"hello",result:e,self:e.self,playback:Be}),Gt&&Wv()):X.isDelta(e)?(_u=!0,e.updates.forEach(t=>{t.values&&(ft=t.$source,t.values.forEach(n=>{if(Vv=t.timestamp,e.context)switch(e.context.split(".")[0]){case"shore":case"atons":Q?.signalk.atons&&function Pk(e,t){let n=!1;if(-1!==e.indexOf("shore.basestations")&&(n=!0),!N.atons.has(e)){const o=new xv;o.id=e,o.position=null,n&&(o.type.id=-1,o.type.name="Basestation"),N.atons.set(e,o)}const r=N.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),Io(e.context,N.atons,Q?.signalk.atons);break;case"sar":Q?.signalk.sar&&function Lk(e,t){if(!N.sar.has(e)){const r=new mk;r.id=e,r.position=null,r.type.id=-1,r.type.name="SaR Beacon",N.sar.set(e,r)}const n=N.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=He.normaliseCoords([t.value.longitude,t.value.latitude]),n.positionReceived=!0)}(e.context,n),Io(e.context,N.sar,Q?.signalk.sar);break;case"aircraft":Q?.signalk.aircraft&&function Vk(e,t){if(!N.aircraft.has(e)){const r=new yk;r.id=e,r.position=null,N.aircraft.set(e,r)}const n=N.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=He.normaliseCoords([t.value.longitude,t.value.latitude]),n.positionReceived=!0,Tu(n)):"navigation.courseOverGroundTrue"===t.path?n.orientation=t.value:"navigation.speedOverGround"===t.path&&(n.sog=t.value)}(e.context,n),Io(e.context,N.aircraft,Q?.signalk.aircraft);break;case"meteo":Q?.signalk.meteo&&(function Fk(e,t){if(!N.meteo.has(e)){const r=new vk;r.id=e,r.position=null,r.type.id=-1,r.type.name="Weather Station",N.meteo.set(e,r)}const n=N.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=He.normaliseCoords([t.value.longitude,t.value.latitude]),n.positionReceived=!0)}(e.context,n),zv(n)),Io(e.context,N.meteo,Q?.signalk.meteo);break;case"vessels":if(X.isSelf(e))N.self.id||(N.self.id=e.context),qv(N.self,n,!0),zv(n);else{if(Q?.signalk.vessels){const r=function kk(e){if(!N.aisTargets.has(e)){const t=new Ov;t.id=e,t.position=null,N.aisTargets.set(e,t)}return N.aisTargets.get(e)}(e.context);qv(r,n)}Io(e.context,N.aisTargets,Q?.signalk.vessels,Q?.aisState)}}}))}),Uv()):X.isResponse(e)&&postMessage({action:"response",result:e})}(t)}}function Hv(e={config:{}}){e.interval&&"number"==typeof e.interval&&(Gt=e.interval,Gv(),Wv(),Fv=1/(Gt/1e3)*60),Be=!!e.playback,e.config&&(typeof e.config.units.preferredPaths<"u"&&(Wt=e.config.units.preferredPaths),e.config.vessels.aisMaxAge&&"number"==typeof e.config.vessels.aisMaxAge&&(Je.maxAge=e.config.vessels.aisMaxAge),e.config.vessels.aisStaleAge&&"number"==typeof e.config.vessels.aisStaleAge&&(Je.staleAge=e.config.vessels.aisStaleAge),"number"==typeof e.config.signalk.maxRadius&&(Q.signalk=e.config.signalk),typeof e.config.selections.aisState<"u"&&Array.isArray(e.config.selections.aisState)&&(Q.aisState=e.config.selections.aisState),Du=e.config.vessels)}function Bv(e=!1){Gv(),yo.forEach(t=>t.unsubscribe()),X&&e&&X.close(),X=null,postMessage({action:"close",result:e,playback:Be})}function Eo(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 $v(){Eo(Eu+"/tracks"+(Q&&Q.signalk&&Q.signalk.maxRadius?`?radius=${Q.signalk.maxRadius}`:"?radius=10000")).then(t=>{Iu=!0,Object.entries(t).forEach(n=>{if(N.aisTargets.has(n[0])){const r=N.aisTargets.get(n[0]);r.track=n[1].coordinates,Tu(r)}})}).catch(()=>{Iu=!1})}function Io(e,t,n=!0,r=[]){if(n){let o=t.get(e);o&&r.includes(o?.state)&&(le.expired[e]=!0,o=null),o&&Q.signalk.maxRadius?o.positionReceived&&He.inBounds(o.position,Lv)?le.updated[e]=!0:(t.delete(e),le.expired[e]=!0):le.updated[e]=!0}else 0!==t.size&&(t.forEach((o,i)=>{le.expired[i]=!0}),t.clear())}function Uv(e=!1){if(!Gt||e){const t=new vu;t.playback=Be,N.aisStatus.updated=Object.keys(le.updated),N.aisStatus.stale=Object.keys(le.stale),N.aisStatus.expired=Object.keys(le.expired),t.result=N,t.timestamp=Be?Vv:N.self.lastUpdated.toISOString(),postMessage(t),jv(),N.self.resourceUpdates=[],0===vo&&(function xk(){const e=(new Date).valueOf();N.aisTargets.forEach((t,n)=>{t.lastUpdated.valueOf()<e-Je.maxAge?(le.expired[n]=!0,N.aisTargets.delete(n)):t.lastUpdated.valueOf()<e-Je.staleAge&&(le.stale[n]=!0)}),N.aircraft.forEach((t,n)=>{t.lastUpdated.valueOf()<e-Je.maxAge?(le.expired[n]=!0,N.aircraft.delete(n)):t.lastUpdated.valueOf()<e-Je.staleAge&&(le.stale[n]=!0)}),N.sar.forEach((t,n)=>{t.lastUpdated.valueOf()<e-Je.maxAge?(le.expired[n]=!0,N.sar.delete(n)):t.lastUpdated.valueOf()<e-Je.staleAge&&(le.stale[n]=!0)})}(),N.self.positionReceived&&Q?.signalk.maxRadius&&(Lv=He.calcMapifiedExtent(N.self.position,Q.signalk.maxRadius),vo++)),vo=vo>=Fv?0:vo+1}}function Wv(){Gt&&"number"==typeof Gt&&Rs.push(setInterval(()=>{_u&&(Uv(!0),_u=!1)},Gt)),Rs.push(setInterval(()=>{Iu&&$v()},6e4))}function Gv(){Rs.forEach(e=>clearInterval(e)),Rs=[]}function qv(e,t,n=!1){if(n){if(e.lastUpdated=new Date,t.path.startsWith("resources."))e.resourceUpdates.push(t),function Ok(e){const t=new Dk;t.playback=Be,t.result={path:e.path,value:e.value,sourceRef:ft},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:t.path.includes("nextPoint")?e.courseApi.nextPoint=t.value:t.path.includes("previousPoint")?e.courseApi.previousPoint=t.value:t.path.includes("arrivalCircle")&&(e.courseApi.arrivalCircle=t.value);const o=-1!==t.path.indexOf("course")?t.path.split(".").slice(0,2).join("."):t.path;-1!==wk.indexOf(o)&&(N.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,e.lastUpdated=new Date),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=He.normaliseCoords([t.value.longitude,t.value.latitude]),e.positionReceived=!0,n||Tu(e)}else"navigation.state"===t.path?e.state=t.value:"navigation.speedOverGround"===t.path?e.sog=t.value:"environment.mode"===t.path?e.environment.mode=t.value:"environment.sun"===t.path?e.environment.sun=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&&ft===Qn?e.autopilot.state=t.value:"steering.autopilot.mode"===t.path&&ft===Qn?e.autopilot.mode=t.value:"steering.autopilot.target"===t.path&&ft===Qn?e.autopilot.target=t.value:"steering.autopilot.engaged"===t.path&&ft===Qn?e.autopilot.enabled=t.value:"steering.autopilot.defaultPilot"===t.path?(e.autopilot.default=t.value,Qn=t.value):"steering.autopilot.availableActions"===t.path&&ft===Qn?e.autopilot.availableActions=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 Wt.heading<"u"&&t.path===Wt.heading&&(e.orientation=t.value),typeof Wt.tws<"u"&&t.path===Wt.tws&&(e.wind.tws=t.value),typeof Wt.twd<"u"&&t.path===Wt.twd&&(e.wind.direction="environment.wind.angleTrueGround"===t.path||"environment.wind.angleTrueWater"===t.path?mu.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,He.destCoordinate(e.position,r,(e.sog??0)*(60*(n?Du.cogLine:Du.aisCogLine)))])}function zv(e){if(e.path.includes("notifications.")){const t=new Ik;t.playback=Be,t.result={path:e.path,value:e.value,sourceRef:ft},postMessage(t)}}function Tu(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-Je.maxTrack)}addEventListener("message",({data:e})=>{!function Mk(e){if(e.cmd)switch(e.cmd){case"open":Hv(e.options),function Sk(e){if(X)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:",Eu=t.join("/"),function Ck(){N={self:new Ov,aisTargets:new Map,aisStatus:{updated:[],stale:[],expired:[]},paths:{},atons:new Map,aircraft:new Map,sar:new Map,meteo:new Map},N.self.positionReceived=!1,jv()}(),X=new gk,yo.push(X.onConnect.subscribe(n=>As({action:"onConnect",msg:n}))),yo.push(X.onClose.subscribe(n=>As({action:"onClose",msg:n}))),yo.push(X.onError.subscribe(n=>As({action:"onError",msg:n}))),yo.push(X.onMessage.subscribe(n=>As({action:"onMessage",msg:n}))),X.authToken=Pv,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,X.open(`${e.url}${n||""}${r||""}`,e.playbackOptions.subscribe,e.token)}else X.open(e.url,e.subscribe,e.token),$v()}(e.options);break;case"close":Bv(!0);break;case"subscribe":X.subscribe(e.options.context,e.options.path);break;case"settings":Hv(e.options);break;case"alarm":!function Rk(e){const t=-1===e.type.indexOf("notifications.")?`notifications.${e.type}`:e.type;e.raise?X.raiseAlarm("self",t,new hk(e.message,e.state,!0,!0)):X.clearAlarm("self",t)}(e.options);break;case"vessel":if(e.options){let t;t="self"===e.options.context?N.self:N.aisTargets.get(e.options.context),t&&e.options.name&&(t.name=e.options.name)}break;case"auth":e.options&&typeof e.options.token<"u"&&(Pv=e.options.token);break;case"trail":e.options&&(_o.trailDuration=e.options.trailDuration??24,e.options.trailResolution&&(_o.trailResolution.lastHour=e.options.trailResolution.lastHour??"5s",_o.trailResolution.next23=e.options.trailResolution.next23??"1m",_o.trailResolution.beyond24=e.options.trailResolution.beyond24??"5m")),function Nk(e){const t=Eu+"/self/track?",n=[];e.trailDuration>24&&(n.push(Eo(`${t}timespan=${e.trailDuration-24}h&resolution=${e.trailResolution.beyond24}&timespanOffset=24`)),n.push(Eo(`${t}timespan=23h&resolution=${e.trailResolution.next23}&timespanOffset=1`))),e.trailDuration>1&&e.trailDuration<25&&n.push(Eo(`${t}timespan=${e.trailDuration-1}h&resolution=${e.trailResolution.next23}&timespanOffset=1`)),n.push(Eo(`${t}timespan=1h&resolution=${e.trailResolution.lastHour}`));let i=[];const s=new Tk;s.playback=Be,Promise.all(n).then(a=>{let c=0;const l=n.length-1;a.forEach(d=>{if(d.type&&"MultiLineString"===d.type&&d.coordinates&&Array.isArray(d.coordinates))if(c!==l){let f=[];for(d.coordinates.forEach(h=>{f=f.concat(h)}),f=(0,bk.p$)(f,5e-4,true);f.length>60;){const h=f.slice(0,60);i.push(h),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);c++}),s.result=i,postMessage(s)}).catch(()=>{s.result=null,postMessage(s)})}(_o)}}(e)})})();
@@ -1,28 +1,3 @@
1
- @angular/animations
2
- MIT
3
- The MIT License
4
-
5
- Copyright (c) 2010-2025 Google LLC. https://angular.dev/license
6
-
7
- Permission is hereby granted, free of charge, to any person obtaining a copy
8
- of this software and associated documentation files (the "Software"), to deal
9
- in the Software without restriction, including without limitation the rights
10
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11
- copies of the Software, and to permit persons to whom the Software is
12
- furnished to do so, subject to the following conditions:
13
-
14
- The above copyright notice and this permission notice shall be included in
15
- all copies or substantial portions of the Software.
16
-
17
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
23
- THE SOFTWARE.
24
-
25
-
26
1
  @angular/cdk
27
2
  MIT
28
3
  The MIT License
@@ -318,14 +293,36 @@ ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
318
293
  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
319
294
 
320
295
 
321
- @signalk/server-api
322
- Apache-2.0
296
+ base64-js
297
+ MIT
298
+ The MIT License (MIT)
299
+
300
+ Copyright (c) 2014 Jameson Little
323
301
 
324
- baconjs
302
+ Permission is hereby granted, free of charge, to any person obtaining a copy
303
+ of this software and associated documentation files (the "Software"), to deal
304
+ in the Software without restriction, including without limitation the rights
305
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
306
+ copies of the Software, and to permit persons to whom the Software is
307
+ furnished to do so, subject to the following conditions:
308
+
309
+ The above copyright notice and this permission notice shall be included in
310
+ all copies or substantial portions of the Software.
311
+
312
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
313
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
314
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
315
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
316
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
317
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
318
+ THE SOFTWARE.
319
+
320
+
321
+ buffer
325
322
  MIT
326
- The MIT License
323
+ The MIT License (MIT)
327
324
 
328
- Copyright (c) 2017 Juha Paananen
325
+ Copyright (c) Feross Aboukhadijeh, and other contributors.
329
326
 
330
327
  Permission is hereby granted, free of charge, to any person obtaining a copy
331
328
  of this software and associated documentation files (the "Software"), to deal
@@ -399,6 +396,21 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
399
396
  SOFTWARE.
400
397
 
401
398
 
399
+ ieee754
400
+ BSD-3-Clause
401
+ Copyright 2008 Fair Oaks Labs, Inc.
402
+
403
+ Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
404
+
405
+ 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
406
+
407
+ 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
408
+
409
+ 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
410
+
411
+ 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.
412
+
413
+
402
414
  mapbox-to-css-font
403
415
  BSD-2-Clause
404
416
  Copyright 2016-present mapbox-to-css-font contributors
@@ -868,48 +880,62 @@ THE SOFTWARE.
868
880
 
869
881
 
870
882
  sax
871
- ISC
872
- The ISC License
883
+ BlueOak-1.0.0
884
+ # Blue Oak Model License
873
885
 
874
- Copyright (c) 2010-2024 Isaac Z. Schlueter and Contributors
886
+ Version 1.0.0
875
887
 
876
- Permission to use, copy, modify, and/or distribute this software for any
877
- purpose with or without fee is hereby granted, provided that the above
878
- copyright notice and this permission notice appear in all copies.
888
+ ## Purpose
879
889
 
880
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
881
- WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
882
- MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
883
- ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
884
- WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
885
- ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
886
- IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
890
+ This license gives everyone as much permission to work with
891
+ this software as possible, while protecting contributors
892
+ from liability.
893
+
894
+ ## Acceptance
895
+
896
+ In order to receive this license, you must agree to its
897
+ rules. The rules of this license are both obligations
898
+ under that agreement and conditions to your license.
899
+ You must not do anything with this software that triggers
900
+ a rule that you cannot or will not follow.
901
+
902
+ ## Copyright
903
+
904
+ Each contributor licenses you to do everything with this
905
+ software that would otherwise infringe that contributor's
906
+ copyright in it.
907
+
908
+ ## Notices
909
+
910
+ You must ensure that everyone who gets a copy of
911
+ any part of this software from you, with or without
912
+ changes, also gets the text of this license or a link to
913
+ <https://blueoakcouncil.org/license/1.0.0>.
914
+
915
+ ## Excuse
916
+
917
+ If anyone notifies you in writing that you have not
918
+ complied with [Notices](#notices), you can keep your
919
+ license by taking all practical steps to comply within 30
920
+ days after the notice. If you do not do so, your license
921
+ ends immediately.
887
922
 
888
- ====
923
+ ## Patent
889
924
 
890
- `String.fromCodePoint` by Mathias Bynens used according to terms of MIT
891
- License, as follows:
925
+ Each contributor licenses you to do everything with this
926
+ software that would otherwise infringe any patent claims
927
+ they can license or become able to license.
892
928
 
893
- Copyright (c) 2010-2024 Mathias Bynens <https://mathiasbynens.be/>
929
+ ## Reliability
894
930
 
895
- Permission is hereby granted, free of charge, to any person obtaining
896
- a copy of this software and associated documentation files (the
897
- "Software"), to deal in the Software without restriction, including
898
- without limitation the rights to use, copy, modify, merge, publish,
899
- distribute, sublicense, and/or sell copies of the Software, and to
900
- permit persons to whom the Software is furnished to do so, subject to
901
- the following conditions:
931
+ No contributor can revoke this license.
902
932
 
903
- The above copyright notice and this permission notice shall be
904
- included in all copies or substantial portions of the Software.
933
+ ## No Liability
905
934
 
906
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
907
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
908
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
909
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
910
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
911
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
912
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
935
+ ***As far as the law allows, this software comes as is,
936
+ without any warranty or condition, and no contributor
937
+ will be liable to anyone for any damages related to this
938
+ software or this license, under any kind of legal claim.***
913
939
 
914
940
 
915
941
  semver
@@ -1,4 +1,4 @@
1
- <!DOCTYPE html>
1
+ <!doctype html>
2
2
  <html>
3
3
  <head>
4
4
  <title>Freeboard | Help</title>
@@ -1455,6 +1455,10 @@
1455
1455
  <b>Measure</b>: Measure distances by clicking locations on the
1456
1456
  map.
1457
1457
  </li>
1458
+ <li>
1459
+ <b>Measure Radius</b>: Measure radius of a circle centered at
1460
+ the selected location on the map.
1461
+ </li>
1458
1462
  <li>
1459
1463
  <b>Draw Route</b>: Create a route by clicking locations on the
1460
1464
  map.
@@ -1463,6 +1467,10 @@
1463
1467
  <b>Build Route</b>: Displays the route builder screen where
1464
1468
  you can create a route from the available waypoints.
1465
1469
  </li>
1470
+ <li>
1471
+ <b>Add Waypoint at Vessel</b>: Create a waypoint at the
1472
+ current vessel position.
1473
+ </li>
1466
1474
  <li>
1467
1475
  <b>Drop Waypoint</b>: Create a waypoint by clicking a location
1468
1476
  on the map