raain-ui 1.0.15

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 (51) hide show
  1. package/README.md +19 -0
  2. package/RELEASE.md +3 -0
  3. package/drawers/CartesianDrawer.d.ts +26 -0
  4. package/drawers/CartesianDrawer.js +73 -0
  5. package/drawers/CartesianDrawerOptimization.d.ts +10 -0
  6. package/drawers/CartesianDrawerOptimization.js +42 -0
  7. package/drawers/CartesianGridValue.d.ts +15 -0
  8. package/drawers/CartesianGridValue.js +25 -0
  9. package/drawers/GridValue.d.ts +12 -0
  10. package/drawers/GridValue.js +75 -0
  11. package/drawers/PolarDrawer.d.ts +28 -0
  12. package/drawers/PolarDrawer.js +187 -0
  13. package/drawers/PolarDrawerOptimization.d.ts +14 -0
  14. package/drawers/PolarDrawerOptimization.js +54 -0
  15. package/drawers/PolarGridValue.d.ts +13 -0
  16. package/drawers/PolarGridValue.js +50 -0
  17. package/factories/ElementsFactory.d.ts +96 -0
  18. package/factories/ElementsFactory.js +762 -0
  19. package/index.d.ts +22 -0
  20. package/index.js +39 -0
  21. package/layers/CartesianLayer.d.ts +24 -0
  22. package/layers/CartesianLayer.js +96 -0
  23. package/layers/CompositeLayer.d.ts +17 -0
  24. package/layers/CompositeLayer.js +69 -0
  25. package/layers/IPixiLayer.d.ts +7 -0
  26. package/layers/IPixiLayer.js +3 -0
  27. package/layers/IPixiUniqueLayer.d.ts +8 -0
  28. package/layers/IPixiUniqueLayer.js +3 -0
  29. package/layers/MarkersLayer.d.ts +16 -0
  30. package/layers/MarkersLayer.js +73 -0
  31. package/layers/PixiGridLayer.d.ts +58 -0
  32. package/layers/PixiGridLayer.js +188 -0
  33. package/layers/PolarLayer.d.ts +26 -0
  34. package/layers/PolarLayer.js +124 -0
  35. package/layers/PolarLayerConfig.d.ts +9 -0
  36. package/layers/PolarLayerConfig.js +32 -0
  37. package/package.json +49 -0
  38. package/timeframes/FrameContainer.d.ts +9 -0
  39. package/timeframes/FrameContainer.js +13 -0
  40. package/timeframes/TimeframeContainer.d.ts +12 -0
  41. package/timeframes/TimeframeContainer.js +34 -0
  42. package/timeframes/TimeframeContainers.d.ts +9 -0
  43. package/timeframes/TimeframeContainers.js +84 -0
  44. package/tools/CartesianMapValue.d.ts +12 -0
  45. package/tools/CartesianMapValue.js +25 -0
  46. package/tools/MapLatLng.d.ts +7 -0
  47. package/tools/MapLatLng.js +14 -0
  48. package/tools/MapTools.d.ts +11 -0
  49. package/tools/MapTools.js +32 -0
  50. package/tools/PolarMapValue.d.ts +21 -0
  51. package/tools/PolarMapValue.js +67 -0
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CartesianMapValue = void 0;
4
+ const MapLatLng_1 = require("./MapLatLng");
5
+ class CartesianMapValue extends MapLatLng_1.MapLatLng {
6
+ constructor(value, latitude, longitude, latitude2, longitude2, id, name) {
7
+ super(latitude, longitude, undefined, id, name, value);
8
+ this.latitude = latitude;
9
+ this.longitude = longitude;
10
+ this.latitude2 = latitude2;
11
+ this.longitude2 = longitude2;
12
+ }
13
+ static Duplicate(src) {
14
+ return new CartesianMapValue(src.value, src.latitude, src.longitude, src.latitude2, src.longitude2, src.id, src.name);
15
+ }
16
+ static From(cartesianValues, widthForMap) {
17
+ const cartesianMapValues = [];
18
+ cartesianValues.forEach(cartesianValue => {
19
+ cartesianMapValues.push(new CartesianMapValue(cartesianValue.value, cartesianValue.lat, cartesianValue.lng, cartesianValue.lat + widthForMap.lat, cartesianValue.lng + widthForMap.lng));
20
+ });
21
+ return cartesianMapValues;
22
+ }
23
+ }
24
+ exports.CartesianMapValue = CartesianMapValue;
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2FydGVzaWFuTWFwVmFsdWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdG9vbHMvQ2FydGVzaWFuTWFwVmFsdWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsMkNBQXNDO0FBRXRDLE1BQWEsaUJBQWtCLFNBQVEscUJBQVM7SUFFNUMsWUFDSSxLQUFhLEVBQ0csUUFBZ0IsRUFDaEIsU0FBaUIsRUFDakIsU0FBa0IsRUFDbEIsVUFBbUIsRUFDbkMsRUFBVyxFQUNYLElBQWE7UUFFYixLQUFLLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztRQVB2QyxhQUFRLEdBQVIsUUFBUSxDQUFRO1FBQ2hCLGNBQVMsR0FBVCxTQUFTLENBQVE7UUFDakIsY0FBUyxHQUFULFNBQVMsQ0FBUztRQUNsQixlQUFVLEdBQVYsVUFBVSxDQUFTO0lBS3ZDLENBQUM7SUFFTSxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQXNCO1FBQzFDLE9BQU8sSUFBSSxpQkFBaUIsQ0FDeEIsR0FBRyxDQUFDLEtBQUssRUFDVCxHQUFHLENBQUMsUUFBUSxFQUNaLEdBQUcsQ0FBQyxTQUFTLEVBQ2IsR0FBRyxDQUFDLFNBQVMsRUFDYixHQUFHLENBQUMsVUFBVSxFQUNkLEdBQUcsQ0FBQyxFQUFFLEVBQ04sR0FBRyxDQUFDLElBQUksQ0FDWCxDQUFDO0lBQ04sQ0FBQztJQUVNLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBaUMsRUFBRSxXQUFtQjtRQUNyRSxNQUFNLGtCQUFrQixHQUFHLEVBQUUsQ0FBQztRQUM5QixlQUFlLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxFQUFFO1lBQ3JDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLGlCQUFpQixDQUN6QyxjQUFjLENBQUMsS0FBSyxFQUNwQixjQUFjLENBQUMsR0FBRyxFQUNsQixjQUFjLENBQUMsR0FBRyxFQUNsQixjQUFjLENBQUMsR0FBRyxHQUFHLFdBQVcsQ0FBQyxHQUFHLEVBQ3BDLGNBQWMsQ0FBQyxHQUFHLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FDdkMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLGtCQUFrQixDQUFDO0lBQzlCLENBQUM7Q0FFSjtBQXhDRCw4Q0F3Q0MifQ==
@@ -0,0 +1,7 @@
1
+ import { LatLng } from 'leaflet';
2
+ export declare class MapLatLng extends LatLng {
3
+ readonly id?: string;
4
+ readonly name?: string;
5
+ readonly value?: number;
6
+ constructor(lat: number, lng: number, alt?: number, id?: string, name?: string, value?: number);
7
+ }
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MapLatLng = void 0;
4
+ const leaflet_1 = require("leaflet");
5
+ class MapLatLng extends leaflet_1.LatLng {
6
+ constructor(lat, lng, alt, id, name, value) {
7
+ super(lat, lng, alt);
8
+ this.id = id;
9
+ this.name = name;
10
+ this.value = value;
11
+ }
12
+ }
13
+ exports.MapLatLng = MapLatLng;
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWFwTGF0TG5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rvb2xzL01hcExhdExuZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxQ0FBK0I7QUFFL0IsTUFBYSxTQUFVLFNBQVEsZ0JBQU07SUFFakMsWUFDSSxHQUFXLEVBQ1gsR0FBVyxFQUNYLEdBQVksRUFDSSxFQUFXLEVBQ1gsSUFBYSxFQUNiLEtBQWM7UUFDOUIsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFITCxPQUFFLEdBQUYsRUFBRSxDQUFTO1FBQ1gsU0FBSSxHQUFKLElBQUksQ0FBUztRQUNiLFVBQUssR0FBTCxLQUFLLENBQVM7SUFFbEMsQ0FBQztDQUVKO0FBWkQsOEJBWUMifQ==
@@ -0,0 +1,11 @@
1
+ import { LatLng, Point } from 'leaflet';
2
+ import { PolarMapValue } from './PolarMapValue';
3
+ import { CartesianMapValue } from './CartesianMapValue';
4
+ export declare class MapTools {
5
+ static getPolarDistanceRatio(centerPoint: Point, lastGeoValue: PolarMapValue, polarMap2Point: (pv: PolarMapValue) => Point): number;
6
+ static getCartesianDistanceRatio(center: LatLng, geoValues: CartesianMapValue[], cartesianMap2Points: (mapValue: CartesianMapValue) => {
7
+ p1: Point;
8
+ p2: Point;
9
+ }): number;
10
+ static hexStringToNumber(hexString: string): number;
11
+ }
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MapTools = void 0;
4
+ const PolarMapValue_1 = require("./PolarMapValue");
5
+ const CartesianMapValue_1 = require("./CartesianMapValue");
6
+ class MapTools {
7
+ static getPolarDistanceRatio(centerPoint, lastGeoValue, polarMap2Point) {
8
+ const lastGeoValueDuplicated = PolarMapValue_1.PolarMapValue.Duplicate(lastGeoValue);
9
+ // const firstGeoValue = PolarMapValue.Duplicate(geoValues[0]);
10
+ // const centerPoint = polarMap2Point(firstGeoValue);
11
+ const lastPoint = polarMap2Point(lastGeoValueDuplicated);
12
+ return Math.sqrt(Math.pow(centerPoint.x - lastPoint.x, 2) + Math.pow(centerPoint.y - lastPoint.y, 2)) / lastGeoValueDuplicated.polarDistanceInMeters;
13
+ }
14
+ static getCartesianDistanceRatio(center, geoValues, cartesianMap2Points) {
15
+ if (geoValues.length <= 1) {
16
+ return 1;
17
+ }
18
+ const centerIntermediate = new CartesianMapValue_1.CartesianMapValue(0, center.lat, center.lng, 0, 0);
19
+ const centerPoint = cartesianMap2Points(centerIntermediate).p1;
20
+ const lastGeoValue = geoValues[geoValues.length - 1];
21
+ const distanceInMeters = lastGeoValue.distanceTo(center);
22
+ const points = cartesianMap2Points(lastGeoValue);
23
+ return Math.sqrt(Math.pow(centerPoint.x - points.p1.x, 2) + Math.pow(centerPoint.y - points.p1.y, 2)) / distanceInMeters;
24
+ }
25
+ static hexStringToNumber(hexString) {
26
+ const hex = hexString.substring(1, 3) + hexString.substring(3, 5) + hexString.substring(5, 7);
27
+ // console.log('hex:', hex);
28
+ return parseInt(hex, 16);
29
+ }
30
+ }
31
+ exports.MapTools = MapTools;
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWFwVG9vbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdG9vbHMvTWFwVG9vbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsbURBQThDO0FBQzlDLDJEQUFzRDtBQUV0RCxNQUFhLFFBQVE7SUFFakIsTUFBTSxDQUFDLHFCQUFxQixDQUFDLFdBQWtCLEVBQ2xCLFlBQTJCLEVBQzNCLGNBQTRDO1FBRXJFLE1BQU0sc0JBQXNCLEdBQUcsNkJBQWEsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDckUsK0RBQStEO1FBQy9ELHFEQUFxRDtRQUNyRCxNQUFNLFNBQVMsR0FBRyxjQUFjLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUN6RCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQ1osSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQ3RGLEdBQUcsc0JBQXNCLENBQUMscUJBQXFCLENBQUM7SUFDckQsQ0FBQztJQUVELE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxNQUFjLEVBQ2QsU0FBOEIsRUFDOUIsbUJBR0M7UUFDOUIsSUFBSSxTQUFTLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRTtZQUN2QixPQUFPLENBQUMsQ0FBQztTQUNaO1FBRUQsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLHFDQUFpQixDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2xGLE1BQU0sV0FBVyxHQUFHLG1CQUFtQixDQUFDLGtCQUFrQixDQUFDLENBQUMsRUFBRSxDQUFDO1FBRS9ELE1BQU0sWUFBWSxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3JELE1BQU0sZ0JBQWdCLEdBQUcsWUFBWSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN6RCxNQUFNLE1BQU0sR0FBRyxtQkFBbUIsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNqRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQ1osSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FDdEYsR0FBRyxnQkFBZ0IsQ0FBQztJQUN6QixDQUFDO0lBRUQsTUFBTSxDQUFDLGlCQUFpQixDQUFDLFNBQWlCO1FBQ3RDLE1BQU0sR0FBRyxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzlGLDRCQUE0QjtRQUM1QixPQUFPLFFBQVEsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDN0IsQ0FBQztDQUNKO0FBekNELDRCQXlDQyJ9
@@ -0,0 +1,21 @@
1
+ import { MeasureValuePolarContainer } from 'raain-model';
2
+ import { MapLatLng } from './MapLatLng';
3
+ export declare class PolarMapValue extends MapLatLng {
4
+ polarAzimuthInDegrees: number;
5
+ polarDistanceInMeters: number;
6
+ altitude?: number;
7
+ private center;
8
+ constructor(value: number, polarAzimuthInDegrees: number, polarDistanceInMeters: number, altitude?: number, id?: string, name?: string);
9
+ static Duplicate(src: PolarMapValue): PolarMapValue;
10
+ static from(measureValuePolarContainers: MeasureValuePolarContainer[]): PolarMapValue[];
11
+ private static GetLatLngFromPolar;
12
+ setCenter(center: {
13
+ latitude: number;
14
+ longitude: number;
15
+ }): void;
16
+ setPolarAzimuthInDegrees(polarAzimuthInDegrees: number): void;
17
+ setPolarDistanceInMeters(polarDistanceInMeters: number): void;
18
+ getLatitude(): number;
19
+ getLongitude(): number;
20
+ private setLatLngConsistentWithPolar;
21
+ }
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PolarMapValue = void 0;
4
+ const leaflet_1 = require("leaflet");
5
+ const geolib_1 = require("geolib");
6
+ const MapLatLng_1 = require("./MapLatLng");
7
+ class PolarMapValue extends MapLatLng_1.MapLatLng {
8
+ constructor(value, polarAzimuthInDegrees, polarDistanceInMeters, altitude, id, name) {
9
+ super(0, 0, altitude, id, name, value);
10
+ this.polarAzimuthInDegrees = polarAzimuthInDegrees;
11
+ this.polarDistanceInMeters = polarDistanceInMeters;
12
+ this.altitude = altitude;
13
+ this.center = new leaflet_1.LatLng(0, 0);
14
+ this.setLatLngConsistentWithPolar();
15
+ }
16
+ static Duplicate(src) {
17
+ const value = new PolarMapValue(src.value, src.polarAzimuthInDegrees, src.polarDistanceInMeters, src.altitude, src.id, src.name);
18
+ value.setCenter({ latitude: src.center.lat, longitude: src.center.lng });
19
+ return value;
20
+ }
21
+ static from(measureValuePolarContainers) {
22
+ const polarMapValues = [];
23
+ measureValuePolarContainers.forEach(measureValuePolarContainer => {
24
+ measureValuePolarContainer.polarEdges.forEach((edge, index) => {
25
+ polarMapValues.push(new PolarMapValue(edge, measureValuePolarContainer.azimuth, measureValuePolarContainer.distance * (index + 1)));
26
+ });
27
+ });
28
+ return polarMapValues;
29
+ }
30
+ static GetLatLngFromPolar(center, polarAzimuthInDegrees, polarDistanceInMeters) {
31
+ const dest = (0, geolib_1.computeDestinationPoint)(center, polarDistanceInMeters, polarAzimuthInDegrees);
32
+ return {
33
+ lat: dest.latitude,
34
+ lng: dest.longitude
35
+ };
36
+ }
37
+ setCenter(center) {
38
+ this.center = new leaflet_1.LatLng(center.latitude, center.longitude);
39
+ this.setLatLngConsistentWithPolar();
40
+ }
41
+ setPolarAzimuthInDegrees(polarAzimuthInDegrees) {
42
+ this.polarAzimuthInDegrees = polarAzimuthInDegrees;
43
+ this.setLatLngConsistentWithPolar();
44
+ }
45
+ setPolarDistanceInMeters(polarDistanceInMeters) {
46
+ this.polarDistanceInMeters = polarDistanceInMeters;
47
+ this.setLatLngConsistentWithPolar();
48
+ }
49
+ getLatitude() {
50
+ this.setLatLngConsistentWithPolar();
51
+ return this.lat;
52
+ }
53
+ getLongitude() {
54
+ this.setLatLngConsistentWithPolar();
55
+ return this.lng;
56
+ }
57
+ setLatLngConsistentWithPolar() {
58
+ if (this.center.lat === 0 && this.center.lng === 0) {
59
+ return;
60
+ }
61
+ const latLng = PolarMapValue.GetLatLngFromPolar(this.center, this.polarAzimuthInDegrees, this.polarDistanceInMeters);
62
+ this.lat = latLng.lat;
63
+ this.lng = latLng.lng;
64
+ }
65
+ }
66
+ exports.PolarMapValue = PolarMapValue;
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUG9sYXJNYXBWYWx1ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90b29scy9Qb2xhck1hcFZhbHVlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFDQUErQjtBQUMvQixtQ0FBK0M7QUFFL0MsMkNBQXNDO0FBRXRDLE1BQWEsYUFBYyxTQUFRLHFCQUFTO0lBSXhDLFlBQ0ksS0FBYSxFQUNOLHFCQUE2QixFQUM3QixxQkFBNkIsRUFDN0IsUUFBaUIsRUFDeEIsRUFBVyxFQUNYLElBQWE7UUFFYixLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztRQU5oQywwQkFBcUIsR0FBckIscUJBQXFCLENBQVE7UUFDN0IsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUFRO1FBQzdCLGFBQVEsR0FBUixRQUFRLENBQVM7UUFLeEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLGdCQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQyw0QkFBNEIsRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFFRCxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQWtCO1FBQy9CLE1BQU0sS0FBSyxHQUFHLElBQUksYUFBYSxDQUMzQixHQUFHLENBQUMsS0FBSyxFQUNULEdBQUcsQ0FBQyxxQkFBcUIsRUFDekIsR0FBRyxDQUFDLHFCQUFxQixFQUN6QixHQUFHLENBQUMsUUFBUSxFQUNaLEdBQUcsQ0FBQyxFQUFFLEVBQ04sR0FBRyxDQUFDLElBQUksQ0FDWCxDQUFDO1FBRUYsS0FBSyxDQUFDLFNBQVMsQ0FBQyxFQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUMsQ0FBQyxDQUFDO1FBQ3ZFLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFF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