raain-model 2.5.4 → 2.6.1
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/RELEASE.md +1 -0
- package/cartesian/CartesianMeasureValue.d.ts +0 -10
- package/cartesian/CartesianMeasureValue.js +2 -16
- package/cartesian/CartesianMeasureValue.js.map +1 -1
- package/cartesian/CartesianTools.d.ts +36 -0
- package/cartesian/CartesianTools.js +255 -0
- package/cartesian/CartesianTools.js.map +1 -0
- package/cartesian/ICartesianMeasureValue.d.ts +0 -1
- package/cartesian/LatLng.js +5 -5
- package/cartesian/LatLng.js.map +1 -1
- package/cartesian/RadarCartesianMeasureValue.d.ts +0 -4
- package/cartesian/RadarCartesianMeasureValue.js.map +1 -1
- package/cartesian/RainCartesianMeasureValue.d.ts +0 -4
- package/cartesian/RainCartesianMeasureValue.js.map +1 -1
- package/index.d.ts +1 -0
- package/index.js +1 -0
- package/index.js.map +1 -1
- package/package.json +1 -1
- package/quality/SpeedMatrix.js +3 -6
- package/quality/SpeedMatrix.js.map +1 -1
- package/quality/tools/QualityTools.d.ts +1 -16
- package/quality/tools/QualityTools.js +3 -128
- package/quality/tools/QualityTools.js.map +1 -1
- package/rain/RainComputation.d.ts +4 -2
- package/rain/RainComputation.js +1 -2
- package/rain/RainComputation.js.map +1 -1
- package/rain/RainComputationAbstract.d.ts +32 -9
- package/rain/RainComputationAbstract.js +66 -46
- package/rain/RainComputationAbstract.js.map +1 -1
- package/rain/RainComputationMap.d.ts +7 -6
- package/rain/RainComputationMap.js +13 -12
- package/rain/RainComputationMap.js.map +1 -1
|
@@ -1,24 +1,9 @@
|
|
|
1
1
|
import { LatLng } from '../../cartesian/LatLng';
|
|
2
2
|
import { Position } from '../position/Position';
|
|
3
|
-
import { CartesianValue } from '../../cartesian/CartesianValue';
|
|
4
3
|
export declare class QualityTools {
|
|
5
|
-
static DEFAULT_SCALE: number;
|
|
6
4
|
static IndexOfDualArray(array: any, itemToFind: any): any;
|
|
7
5
|
static Precision(a: any): number;
|
|
8
|
-
static
|
|
9
|
-
static LimitWithPrecision(latOrLng: number, precision?: number): number;
|
|
10
|
-
static IsEqualsLatLng(latOrLng1: number, latOrLng2: number, cartesianStep?: number): boolean;
|
|
11
|
-
static IsAroundLatLng(latLngCenter: LatLng, latLngAround: LatLng, stepRange: number, cartesianStep?: number): boolean;
|
|
12
|
-
static IsNotAroundLatLng(latLngCenter: LatLng, latLngAround: LatLng, stepRange: number, cartesianStep?: number): boolean;
|
|
13
|
-
static MapLatLngToPosition(latLng: LatLng, rounded?: boolean, cartesianPixelWidth?: LatLng): Position;
|
|
6
|
+
static MapLatLngToPosition(latLng: LatLng): Position;
|
|
14
7
|
static MapPositionToLatLng(position: Position): LatLng;
|
|
15
|
-
static DegToRad(azimuthInDegrees: number): number;
|
|
16
|
-
static GetAzimuthRad(angleInDegrees: number): number;
|
|
17
|
-
static ComputeLatSteps(cartesianValues: CartesianValue[]): number[];
|
|
18
|
-
static ComputeLngSteps(cartesianValues: CartesianValue[]): number[];
|
|
19
|
-
static LogCartesianValues(cartesianValues: CartesianValue[], logger?: Console): void;
|
|
20
|
-
static UniqNum(a: number[]): number[];
|
|
21
|
-
static UniqStr(a: number[]): number[];
|
|
22
8
|
static CreateNDimArray(dimensions: any[], defaultValue?: any): any[];
|
|
23
|
-
protected static LabelWithSign(val: number): string;
|
|
24
9
|
}
|
|
@@ -23,68 +23,9 @@ class QualityTools {
|
|
|
23
23
|
}
|
|
24
24
|
return p;
|
|
25
25
|
}
|
|
26
|
-
static
|
|
27
|
-
const
|
|
28
|
-
|
|
29
|
-
return result;
|
|
30
|
-
}
|
|
31
|
-
return parseFloat(parseFloat('' + result).toPrecision(12));
|
|
32
|
-
// alternative ?
|
|
33
|
-
// let decimalPlaces = 0;
|
|
34
|
-
// if (('' + scale).indexOf('0.') === 0) {
|
|
35
|
-
// decimalPlaces = ('' + scale).substring(2).length;
|
|
36
|
-
// } else {
|
|
37
|
-
// return Math.round(latOrLng / scale) * scale;
|
|
38
|
-
// }
|
|
39
|
-
// const p = Math.pow(10, decimalPlaces || 0);
|
|
40
|
-
// const n = (latOrLng * p) * (1 + Number.EPSILON);
|
|
41
|
-
// return Math.round(n) / p;
|
|
42
|
-
}
|
|
43
|
-
static LimitWithPrecision(latOrLng, precision = 12) {
|
|
44
|
-
return parseFloat(parseFloat('' + latOrLng).toPrecision(precision));
|
|
45
|
-
}
|
|
46
|
-
static IsEqualsLatLng(latOrLng1, latOrLng2, cartesianStep = QualityTools.DEFAULT_SCALE) {
|
|
47
|
-
return QualityTools.RoundLatLng(latOrLng1, cartesianStep, true) === QualityTools.RoundLatLng(latOrLng2, cartesianStep, true);
|
|
48
|
-
}
|
|
49
|
-
static IsAroundLatLng(latLngCenter, latLngAround, stepRange, cartesianStep = QualityTools.DEFAULT_SCALE) {
|
|
50
|
-
let isAround = false;
|
|
51
|
-
const min = -stepRange * cartesianStep, max = stepRange * cartesianStep;
|
|
52
|
-
for (let lat = min; !isAround && lat <= max; lat += cartesianStep) {
|
|
53
|
-
for (let lng = min; !isAround && lng <= max; lng += cartesianStep) {
|
|
54
|
-
isAround = QualityTools.RoundLatLng(latLngCenter.lat, cartesianStep, true)
|
|
55
|
-
=== QualityTools.RoundLatLng(latLngAround.lat + lat, cartesianStep, true);
|
|
56
|
-
if (isAround) {
|
|
57
|
-
isAround = QualityTools.RoundLatLng(latLngCenter.lng, cartesianStep, true)
|
|
58
|
-
=== QualityTools.RoundLatLng(latLngAround.lng + lng, cartesianStep, true);
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
return isAround;
|
|
63
|
-
}
|
|
64
|
-
static IsNotAroundLatLng(latLngCenter, latLngAround, stepRange, cartesianStep = QualityTools.DEFAULT_SCALE) {
|
|
65
|
-
const max = (stepRange * cartesianStep) + Number.EPSILON;
|
|
66
|
-
let isOut = QualityTools.RoundLatLng(latLngCenter.lat, cartesianStep)
|
|
67
|
-
> QualityTools.RoundLatLng(latLngAround.lat + max, cartesianStep)
|
|
68
|
-
|| QualityTools.RoundLatLng(latLngCenter.lat, cartesianStep)
|
|
69
|
-
< QualityTools.RoundLatLng(latLngAround.lat - max, cartesianStep);
|
|
70
|
-
if (!isOut) {
|
|
71
|
-
isOut = QualityTools.RoundLatLng(latLngCenter.lng, cartesianStep)
|
|
72
|
-
> QualityTools.RoundLatLng(latLngAround.lng + max, cartesianStep)
|
|
73
|
-
|| QualityTools.RoundLatLng(latLngCenter.lng, cartesianStep)
|
|
74
|
-
< QualityTools.RoundLatLng(latLngAround.lng - max, cartesianStep);
|
|
75
|
-
}
|
|
76
|
-
return isOut;
|
|
77
|
-
}
|
|
78
|
-
static MapLatLngToPosition(latLng, rounded, cartesianPixelWidth) {
|
|
79
|
-
let x = latLng.lng;
|
|
80
|
-
let y = latLng.lat;
|
|
81
|
-
if (rounded) {
|
|
82
|
-
if (!cartesianPixelWidth) {
|
|
83
|
-
throw new Error('need cartesianPixelWidth to MapLatLngToPosition');
|
|
84
|
-
}
|
|
85
|
-
x = QualityTools.RoundLatLng(x, cartesianPixelWidth.lng, true);
|
|
86
|
-
y = QualityTools.RoundLatLng(y, cartesianPixelWidth.lat, true);
|
|
87
|
-
}
|
|
26
|
+
static MapLatLngToPosition(latLng) {
|
|
27
|
+
const x = latLng.lng;
|
|
28
|
+
const y = latLng.lat;
|
|
88
29
|
return new Position_1.Position({ x, y });
|
|
89
30
|
}
|
|
90
31
|
static MapPositionToLatLng(position) {
|
|
@@ -92,60 +33,6 @@ class QualityTools {
|
|
|
92
33
|
const lat = position.y;
|
|
93
34
|
return new LatLng_1.LatLng({ lat, lng });
|
|
94
35
|
}
|
|
95
|
-
static DegToRad(azimuthInDegrees) {
|
|
96
|
-
return azimuthInDegrees * Math.PI / 180;
|
|
97
|
-
}
|
|
98
|
-
static GetAzimuthRad(angleInDegrees) {
|
|
99
|
-
return QualityTools.DegToRad(-angleInDegrees + 90);
|
|
100
|
-
}
|
|
101
|
-
static ComputeLatSteps(cartesianValues) {
|
|
102
|
-
const lats = cartesianValues.map(c => c.lat).sort((a, b) => a - b);
|
|
103
|
-
return QualityTools.UniqNum(lats);
|
|
104
|
-
}
|
|
105
|
-
static ComputeLngSteps(cartesianValues) {
|
|
106
|
-
const lngs = cartesianValues.map(c => c.lng).sort((a, b) => a - b);
|
|
107
|
-
return QualityTools.UniqNum(lngs);
|
|
108
|
-
}
|
|
109
|
-
static LogCartesianValues(cartesianValues, logger = console) {
|
|
110
|
-
logger === null || logger === void 0 ? void 0 : logger.log('>> raain-quality ### logCartesianValues with', cartesianValues.length, QualityTools.DEFAULT_SCALE, ' in progress...');
|
|
111
|
-
const pointsToShow = {};
|
|
112
|
-
const latSteps = QualityTools.ComputeLatSteps(cartesianValues);
|
|
113
|
-
const lngSteps = QualityTools.ComputeLngSteps(cartesianValues);
|
|
114
|
-
const labelX = (v) => {
|
|
115
|
-
return QualityTools.LabelWithSign(v);
|
|
116
|
-
};
|
|
117
|
-
const labelY = (v) => {
|
|
118
|
-
return QualityTools.LabelWithSign(v);
|
|
119
|
-
};
|
|
120
|
-
const valueDisplay = (v) => {
|
|
121
|
-
return '' + Math.round(v * 100) / 100;
|
|
122
|
-
};
|
|
123
|
-
for (let lat of latSteps) {
|
|
124
|
-
const xObject = {};
|
|
125
|
-
for (let lng of lngSteps) {
|
|
126
|
-
const latLng = new LatLng_1.LatLng({ lat, lng });
|
|
127
|
-
latLng.setPrecision(12);
|
|
128
|
-
lat = latLng.lat;
|
|
129
|
-
lng = latLng.lng;
|
|
130
|
-
xObject[labelX(lng)] = valueDisplay(0);
|
|
131
|
-
}
|
|
132
|
-
pointsToShow[labelY(lat)] = xObject;
|
|
133
|
-
}
|
|
134
|
-
for (const [index, point] of cartesianValues.entries()) {
|
|
135
|
-
let value = valueDisplay(point.value);
|
|
136
|
-
if (pointsToShow[labelY(point.lat)][labelX(point.lng)] !== '0') {
|
|
137
|
-
value = '' + value + '?' + pointsToShow[labelY(point.lat)][labelX(point.lng)];
|
|
138
|
-
}
|
|
139
|
-
pointsToShow[labelY(point.lat)][labelX(point.lng)] = value;
|
|
140
|
-
}
|
|
141
|
-
logger === null || logger === void 0 ? void 0 : logger.table(pointsToShow);
|
|
142
|
-
}
|
|
143
|
-
static UniqNum(a) {
|
|
144
|
-
return [...new Set(a)];
|
|
145
|
-
}
|
|
146
|
-
static UniqStr(a) {
|
|
147
|
-
return [...new Set(a)];
|
|
148
|
-
}
|
|
149
36
|
static CreateNDimArray(dimensions, defaultValue) {
|
|
150
37
|
if (dimensions.length > 0) {
|
|
151
38
|
const dim = dimensions[0];
|
|
@@ -163,18 +50,6 @@ class QualityTools {
|
|
|
163
50
|
return undefined;
|
|
164
51
|
}
|
|
165
52
|
}
|
|
166
|
-
static LabelWithSign(val) {
|
|
167
|
-
const value = val;
|
|
168
|
-
if (value < 0) {
|
|
169
|
-
return '' + value;
|
|
170
|
-
}
|
|
171
|
-
else if (value === 0) {
|
|
172
|
-
return ' ' + 0;
|
|
173
|
-
}
|
|
174
|
-
return '+' + value;
|
|
175
|
-
}
|
|
176
53
|
}
|
|
177
54
|
exports.QualityTools = QualityTools;
|
|
178
|
-
// scale of Pixel regarding LatLng : 1 => 100km, 0.01 => 1km, 0.005 => 500m
|
|
179
|
-
QualityTools.DEFAULT_SCALE = 0.01;
|
|
180
55
|
//# sourceMappingURL=QualityTools.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QualityTools.js","sourceRoot":"","sources":["../../../src/quality/tools/QualityTools.ts"],"names":[],"mappings":";;;AAAA,mDAA8C;AAC9C,mDAA8C;
|
|
1
|
+
{"version":3,"file":"QualityTools.js","sourceRoot":"","sources":["../../../src/quality/tools/QualityTools.ts"],"names":[],"mappings":";;;AAAA,mDAA8C;AAC9C,mDAA8C;AAE9C,MAAa,YAAY;IAEd,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE,UAAU;QAC5C,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;YAC3C,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC3D,OAAO,KAAK,CAAC;YACjB,CAAC;QACL,CAAC;QACD,OAAO,CAAC,CAAC,CAAC;IACd,CAAC;IAEM,MAAM,CAAC,SAAS,CAAC,CAAC;QACrB,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;YACf,OAAO,CAAC,CAAC;QACb,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QACjB,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YACjC,CAAC,IAAI,EAAE,CAAC;YACR,CAAC,EAAE,CAAC;QACR,CAAC;QACD,OAAO,CAAC,CAAC;IACb,CAAC;IAGM,MAAM,CAAC,mBAAmB,CAAC,MAAc;QAC5C,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC;QACrB,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC;QACrB,OAAO,IAAI,mBAAQ,CAAC,EAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC;IAChC,CAAC;IAEM,MAAM,CAAC,mBAAmB,CAAC,QAAkB;QAChD,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC;QACvB,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC;QACvB,OAAO,IAAI,eAAM,CAAC,EAAC,GAAG,EAAE,GAAG,EAAC,CAAC,CAAC;IAClC,CAAC;IAEM,MAAM,CAAC,eAAe,CAAC,UAAiB,EAAE,YAAkB;QAC/D,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;YAC1B,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACjC,MAAM,QAAQ,GAAG,EAAE,CAAC;YACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC3B,QAAQ,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,eAAe,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;gBAC/D,IAAI,OAAO,QAAQ,CAAC,CAAC,CAAC,KAAK,WAAW,EAAE,CAAC;oBACrC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC;gBAC1F,CAAC;YACL,CAAC;YACD,OAAO,QAAQ,CAAC;QACpB,CAAC;aAAM,CAAC;YACJ,OAAO,SAAS,CAAC;QACrB,CAAC;IACL,CAAC;CAEJ;AArDD,oCAqDC"}
|
|
@@ -2,9 +2,10 @@ import { RaainNode } from '../organization/RaainNode';
|
|
|
2
2
|
import { Link } from '../organization/Link';
|
|
3
3
|
import { RainPolarMeasureValue } from '../polar/RainPolarMeasureValue';
|
|
4
4
|
import { RainCartesianMeasureValue } from '../cartesian/RainCartesianMeasureValue';
|
|
5
|
-
import { RainComputationAbstract } from './RainComputationAbstract';
|
|
5
|
+
import { MergeStrategy, RainComputationAbstract } from './RainComputationAbstract';
|
|
6
6
|
import { LatLng } from '../cartesian/LatLng';
|
|
7
7
|
import { RainMeasure } from './RainMeasure';
|
|
8
|
+
import { CartesianTools } from '../cartesian/CartesianTools';
|
|
8
9
|
/**
|
|
9
10
|
* api/rains/:rainId/computations/:computationId
|
|
10
11
|
* or as an array on
|
|
@@ -33,8 +34,9 @@ export declare class RainComputation extends RainComputationAbstract {
|
|
|
33
34
|
stringify: boolean;
|
|
34
35
|
}): any;
|
|
35
36
|
mergeCartesianResults(options: {
|
|
36
|
-
|
|
37
|
+
mergeStrategy: MergeStrategy;
|
|
37
38
|
mergeLimitPoints: [LatLng, LatLng];
|
|
39
|
+
cartesianTools: CartesianTools;
|
|
38
40
|
removeNullValues?: boolean;
|
|
39
41
|
}): RainMeasure[];
|
|
40
42
|
protected getLinkType(): string;
|
package/rain/RainComputation.js
CHANGED
|
@@ -24,10 +24,9 @@ class RainComputation extends RainComputationAbstract_1.RainComputationAbstract
|
|
|
24
24
|
}
|
|
25
25
|
mergeCartesianResults(options) {
|
|
26
26
|
this.buildLatLngMatrix(options);
|
|
27
|
-
const values = this.results;
|
|
28
27
|
return this.mergeRainMeasures([new RainMeasure_1.RainMeasure({
|
|
29
28
|
id: this.id,
|
|
30
|
-
values,
|
|
29
|
+
values: this.results,
|
|
31
30
|
date: this.date
|
|
32
31
|
})], options);
|
|
33
32
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RainComputation.js","sourceRoot":"","sources":["../../src/rain/RainComputation.ts"],"names":[],"mappings":";;;AAEA,0EAAqE;AACrE,sFAAiF;AACjF,
|
|
1
|
+
{"version":3,"file":"RainComputation.js","sourceRoot":"","sources":["../../src/rain/RainComputation.ts"],"names":[],"mappings":";;;AAEA,0EAAqE;AACrE,sFAAiF;AACjF,uEAAiF;AAEjF,+CAA0C;AAG1C;;;;GAIG;AACH,MAAa,eAAgB,SAAQ,iDAAuB;IAQxD,YAAY,IAgBX;QACG,KAAK,CAAC,IAAI,CAAC,CAAC;QACZ,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC;IAEM,MAAM,CAAC,OAAO,GAAG;QACpB,SAAS,EAAE,KAAK;KACnB;QACG,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;QAC5B,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QAC3D,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,qBAAqB,CAAC,OAKrB;QAEG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAEhC,OAAO,IAAI,CAAC,iBAAiB,CAAC,CAAC,IAAI,yBAAW,CAAC;gBAC3C,EAAE,EAAE,IAAI,CAAC,EAAE;gBACX,MAAM,EAAE,IAAI,CAAC,OAAO;gBACpB,IAAI,EAAE,IAAI,CAAC,IAAI;aAClB,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IAClB,CAAC;IAES,WAAW;QACjB,OAAO,eAAe,CAAC,IAAI,CAAC;IAChC,CAAC;IAEO,UAAU,CAAC,OAAyE;QACxF,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAC9B,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAClC,CAAC;QAED,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YAC9D,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;YAClB,OAAO;QACX,CAAC;QAED,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;YAC3B,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC/D,OAAO,IAAI,6CAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACpD,CAAC;iBAAM,IAAI,CAAC,CAAC,iBAAiB,EAAE,CAAC;gBAC7B,OAAO,IAAI,6CAAqB,CAAC,CAAC,CAAC,CAAC;YACxC,CAAC;YACD,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;gBACvD,OAAO,IAAI,qDAAyB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACxD,CAAC;iBAAM,IAAI,CAAC,CAAC,eAAe,EAAE,CAAC;gBAC3B,OAAO,IAAI,qDAAyB,CAAC,CAAC,CAAC,CAAC;YAC5C,CAAC;iBAAM,CAAC;gBACJ,OAAO,CAAC,CAAC;YACb,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;;AAjFL,0CAmFC;AAjFiB,oBAAI,GAAG,kBAAkB,CAAC"}
|
|
@@ -3,6 +3,19 @@ import { Link } from '../organization/Link';
|
|
|
3
3
|
import { LatLng } from '../cartesian/LatLng';
|
|
4
4
|
import { RainMeasure } from './RainMeasure';
|
|
5
5
|
import { CartesianValue } from '../cartesian/CartesianValue';
|
|
6
|
+
import { CartesianTools } from '../cartesian/CartesianTools';
|
|
7
|
+
export declare enum MergeStrategy {
|
|
8
|
+
NONE = "none",
|
|
9
|
+
SUM = "sum",
|
|
10
|
+
AVERAGE = "average",
|
|
11
|
+
MAX = "max"
|
|
12
|
+
}
|
|
13
|
+
interface MergeLatLng {
|
|
14
|
+
sum: number;
|
|
15
|
+
max: number;
|
|
16
|
+
count: number;
|
|
17
|
+
latLng: LatLng;
|
|
18
|
+
}
|
|
6
19
|
/**
|
|
7
20
|
* not used directly
|
|
8
21
|
*/
|
|
@@ -17,8 +30,8 @@ export declare class RainComputationAbstract extends RaainNode {
|
|
|
17
30
|
launchedBy: string;
|
|
18
31
|
name: string;
|
|
19
32
|
protected mergeTools: {
|
|
20
|
-
|
|
21
|
-
latsLngs:
|
|
33
|
+
cartesianTools: CartesianTools;
|
|
34
|
+
latsLngs: MergeLatLng[][];
|
|
22
35
|
limitPoints: LatLng[];
|
|
23
36
|
};
|
|
24
37
|
constructor(json: {
|
|
@@ -43,20 +56,30 @@ export declare class RainComputationAbstract extends RaainNode {
|
|
|
43
56
|
addRadarLinks(linksToAdd: Link[] | RaainNode[]): void;
|
|
44
57
|
replaceRainLink(linksToAdd: Link | RaainNode | any): void;
|
|
45
58
|
addRadarMeasureLinks(linksToAdd: Link[] | any[]): void;
|
|
46
|
-
|
|
59
|
+
getBuiltMergeTools(rainMeasures: RainMeasure[], options: {
|
|
60
|
+
cartesianTools: CartesianTools;
|
|
61
|
+
mergeLimitPoints: LatLng[];
|
|
62
|
+
}): {
|
|
63
|
+
cartesianTools: CartesianTools;
|
|
64
|
+
latsLngs: MergeLatLng[][];
|
|
65
|
+
limitPoints: LatLng[];
|
|
66
|
+
};
|
|
67
|
+
getMergeLatLngIndex(cartesianValue: CartesianValue): number[];
|
|
47
68
|
protected buildLatLngMatrix(options: {
|
|
48
|
-
|
|
69
|
+
cartesianTools: CartesianTools;
|
|
49
70
|
mergeLimitPoints: LatLng[];
|
|
50
71
|
}): {
|
|
51
|
-
|
|
52
|
-
latsLngs:
|
|
72
|
+
cartesianTools: CartesianTools;
|
|
73
|
+
latsLngs: MergeLatLng[][];
|
|
53
74
|
limitPoints: LatLng[];
|
|
54
75
|
};
|
|
76
|
+
protected buildMergeTools(rainMeasures: RainMeasure[]): void;
|
|
77
|
+
protected getLinkType(): string;
|
|
55
78
|
protected mergeRainMeasures(rainMeasures: RainMeasure[], options: {
|
|
79
|
+
mergeStrategy: MergeStrategy;
|
|
56
80
|
mergeLimitPoints: [LatLng, LatLng];
|
|
57
81
|
removeNullValues?: boolean;
|
|
58
82
|
}): RainMeasure[];
|
|
59
|
-
protected
|
|
60
|
-
protected getMergeLatLng(latIndex: number, lngIndex: number): number[];
|
|
61
|
-
protected buildMergeCartesianValues(): CartesianValue[];
|
|
83
|
+
protected buildMergeCartesianValues(mergeStrategy: MergeStrategy, removeNullValues?: boolean): CartesianValue[];
|
|
62
84
|
}
|
|
85
|
+
export {};
|
|
@@ -1,16 +1,24 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.RainComputationAbstract = void 0;
|
|
3
|
+
exports.RainComputationAbstract = exports.MergeStrategy = void 0;
|
|
4
4
|
const RaainNode_1 = require("../organization/RaainNode");
|
|
5
5
|
const Link_1 = require("../organization/Link");
|
|
6
6
|
const RadarNode_1 = require("../radar/RadarNode");
|
|
7
7
|
const RainNode_1 = require("./RainNode");
|
|
8
8
|
const RadarMeasure_1 = require("../radar/RadarMeasure");
|
|
9
|
-
const
|
|
9
|
+
const LatLng_1 = require("../cartesian/LatLng");
|
|
10
10
|
const RainMeasure_1 = require("./RainMeasure");
|
|
11
11
|
const CartesianMeasureValue_1 = require("../cartesian/CartesianMeasureValue");
|
|
12
12
|
const RainCartesianMeasureValue_1 = require("../cartesian/RainCartesianMeasureValue");
|
|
13
13
|
const CartesianValue_1 = require("../cartesian/CartesianValue");
|
|
14
|
+
const CartesianTools_1 = require("../cartesian/CartesianTools");
|
|
15
|
+
var MergeStrategy;
|
|
16
|
+
(function (MergeStrategy) {
|
|
17
|
+
MergeStrategy["NONE"] = "none";
|
|
18
|
+
MergeStrategy["SUM"] = "sum";
|
|
19
|
+
MergeStrategy["AVERAGE"] = "average";
|
|
20
|
+
MergeStrategy["MAX"] = "max";
|
|
21
|
+
})(MergeStrategy || (exports.MergeStrategy = MergeStrategy = {}));
|
|
14
22
|
/**
|
|
15
23
|
* not used directly
|
|
16
24
|
*/
|
|
@@ -98,34 +106,52 @@ class RainComputationAbstract extends RaainNode_1.RaainNode {
|
|
|
98
106
|
addRadarMeasureLinks(linksToAdd) {
|
|
99
107
|
this.addLinks(RainComputationAbstract._getRadarMeasureLinks(linksToAdd));
|
|
100
108
|
}
|
|
101
|
-
|
|
102
|
-
|
|
109
|
+
getBuiltMergeTools(rainMeasures, options) {
|
|
110
|
+
this.buildLatLngMatrix(options);
|
|
111
|
+
this.buildMergeTools(rainMeasures);
|
|
112
|
+
return this.mergeTools;
|
|
113
|
+
}
|
|
114
|
+
getMergeLatLngIndex(cartesianValue) {
|
|
115
|
+
const latLng = this.mergeTools.cartesianTools.getLatLngFromEarthMap(cartesianValue);
|
|
116
|
+
const latLngScale = this.mergeTools.cartesianTools.getScaleLatLngFromEarth(latLng);
|
|
117
|
+
const latIndex = Math.round((latLng.lat - this.mergeTools.limitPoints[0].lat) / latLngScale.lat);
|
|
118
|
+
const lngIndex = Math.round((latLng.lng - this.mergeTools.limitPoints[0].lng) / latLngScale.lng);
|
|
119
|
+
return [latIndex, lngIndex];
|
|
103
120
|
}
|
|
104
121
|
buildLatLngMatrix(options) {
|
|
105
122
|
const latsLngs = [];
|
|
106
|
-
const
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
123
|
+
const downPoint = options.cartesianTools.getLatLngFromEarthMap(options.mergeLimitPoints[0]);
|
|
124
|
+
const topPoint = options.cartesianTools.getLatLngFromEarthMap(options.mergeLimitPoints[1]);
|
|
125
|
+
const scaleLat = options.cartesianTools.getScaleLatLng(downPoint);
|
|
126
|
+
for (let lat = downPoint.lat; lat <= topPoint.lat; lat += scaleLat.lat) {
|
|
127
|
+
lat = CartesianTools_1.CartesianTools.LimitWithPrecision(lat);
|
|
128
|
+
const latLng = new LatLng_1.LatLng({ lat, lng: downPoint.lng });
|
|
129
|
+
const scaleLng = options.cartesianTools.getScaleLatLng(latLng);
|
|
130
|
+
const lngCount = Math.round((topPoint.lng - downPoint.lng) / scaleLng.lng) + 1;
|
|
131
|
+
const lngs = [];
|
|
132
|
+
for (let i = 0; i < lngCount; i++) {
|
|
133
|
+
const initValue = { sum: 0, max: 0, count: 0, latLng: undefined };
|
|
134
|
+
lngs.push(initValue);
|
|
135
|
+
}
|
|
136
|
+
latsLngs.push(lngs);
|
|
111
137
|
}
|
|
112
|
-
this.mergeTools = { latsLngs,
|
|
138
|
+
this.mergeTools = { latsLngs, cartesianTools: options.cartesianTools, limitPoints: [downPoint, topPoint] };
|
|
113
139
|
return this.mergeTools;
|
|
114
140
|
}
|
|
115
|
-
|
|
116
|
-
let rainMeasuresMerged = [];
|
|
117
|
-
let lastCartesianRainMeasure;
|
|
141
|
+
buildMergeTools(rainMeasures) {
|
|
118
142
|
for (const rainMeasure of rainMeasures) {
|
|
119
143
|
for (const value of rainMeasure.values) {
|
|
120
|
-
if (typeof value['cartesianValues'] !== 'undefined'
|
|
121
|
-
lastCartesianRainMeasure = rainMeasure;
|
|
144
|
+
if (typeof value['cartesianValues'] !== 'undefined') {
|
|
122
145
|
const cartesianMeasureValue = new CartesianMeasureValue_1.CartesianMeasureValue(value);
|
|
123
146
|
const cartesianValues = cartesianMeasureValue.getCartesianValues();
|
|
124
147
|
for (const cartesianValue of cartesianValues) {
|
|
125
148
|
const latLngIndex = this.getMergeLatLngIndex(cartesianValue);
|
|
126
149
|
if (latLngIndex[0] >= 0 && latLngIndex[1] >= 0 && latLngIndex[0] < this.mergeTools.latsLngs.length &&
|
|
127
150
|
latLngIndex[1] < this.mergeTools.latsLngs[latLngIndex[0]].length) {
|
|
128
|
-
this.mergeTools.latsLngs[latLngIndex[0]][latLngIndex[1]]
|
|
151
|
+
this.mergeTools.latsLngs[latLngIndex[0]][latLngIndex[1]].latLng = CartesianTools_1.CartesianTools.CreateLatLng(cartesianValue);
|
|
152
|
+
this.mergeTools.latsLngs[latLngIndex[0]][latLngIndex[1]].sum += cartesianValue.value;
|
|
153
|
+
this.mergeTools.latsLngs[latLngIndex[0]][latLngIndex[1]].max = Math.max(cartesianValue.value, this.mergeTools.latsLngs[latLngIndex[0]][latLngIndex[1]].max);
|
|
154
|
+
this.mergeTools.latsLngs[latLngIndex[0]][latLngIndex[1]].count++;
|
|
129
155
|
}
|
|
130
156
|
else {
|
|
131
157
|
// throw new Error(`Wrong mergeRainMeasure ${latLngIndex[0]} ${latLngIndex[1]}`);
|
|
@@ -134,45 +160,39 @@ class RainComputationAbstract extends RaainNode_1.RaainNode {
|
|
|
134
160
|
}
|
|
135
161
|
}
|
|
136
162
|
}
|
|
137
|
-
|
|
163
|
+
}
|
|
164
|
+
getLinkType() {
|
|
165
|
+
throw Error('abstract');
|
|
166
|
+
}
|
|
167
|
+
mergeRainMeasures(rainMeasures, options) {
|
|
168
|
+
if (rainMeasures.length === 0) {
|
|
138
169
|
return [];
|
|
139
170
|
}
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
const rm = new RainMeasure_1.RainMeasure(lastCartesianRainMeasure.toJSON());
|
|
171
|
+
this.buildMergeTools(rainMeasures);
|
|
172
|
+
const firstCartesianRainMeasure = rainMeasures[0];
|
|
173
|
+
const cartesianValuesMerged = this.buildMergeCartesianValues(options.mergeStrategy, options.removeNullValues);
|
|
174
|
+
const rm = new RainMeasure_1.RainMeasure(firstCartesianRainMeasure.toJSON());
|
|
145
175
|
rm.values = [new RainCartesianMeasureValue_1.RainCartesianMeasureValue({
|
|
146
176
|
cartesianValues: cartesianValuesMerged,
|
|
147
|
-
|
|
148
|
-
version: lastCartesianRainMeasure.getVersion(),
|
|
177
|
+
version: firstCartesianRainMeasure.getVersion(),
|
|
149
178
|
limitPoints: options.mergeLimitPoints,
|
|
150
179
|
})];
|
|
151
|
-
|
|
152
|
-
return rainMeasuresMerged;
|
|
180
|
+
return [rm];
|
|
153
181
|
}
|
|
154
|
-
|
|
155
|
-
const latMin = Math.round((this.mergeTools.limitPoints[0].lat) / this.mergeTools.cartesianPixelWidth.lat);
|
|
156
|
-
const lngMin = Math.round((this.mergeTools.limitPoints[0].lng) / this.mergeTools.cartesianPixelWidth.lng);
|
|
157
|
-
const latToCompare = Math.round(cartesianValue.lat / this.mergeTools.cartesianPixelWidth.lat);
|
|
158
|
-
const lngToCompare = Math.round(cartesianValue.lng / this.mergeTools.cartesianPixelWidth.lng);
|
|
159
|
-
return [latToCompare - latMin, lngToCompare - lngMin];
|
|
160
|
-
}
|
|
161
|
-
getMergeLatLng(latIndex, lngIndex) {
|
|
162
|
-
const latMin = this.mergeTools.limitPoints[0].lat;
|
|
163
|
-
const lngMin = this.mergeTools.limitPoints[0].lng;
|
|
164
|
-
const latToCompare = latIndex * this.mergeTools.cartesianPixelWidth.lat;
|
|
165
|
-
const lngToCompare = lngIndex * this.mergeTools.cartesianPixelWidth.lng;
|
|
166
|
-
return [latToCompare + latMin, lngToCompare + lngMin];
|
|
167
|
-
}
|
|
168
|
-
buildMergeCartesianValues() {
|
|
182
|
+
buildMergeCartesianValues(mergeStrategy, removeNullValues = false) {
|
|
169
183
|
const cartesianValuesMerged = [];
|
|
170
184
|
for (const [latIndex, latValues] of this.mergeTools.latsLngs.entries()) {
|
|
171
|
-
for (const [lngIndex,
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
185
|
+
for (const [lngIndex, mergeValue] of latValues.entries()) {
|
|
186
|
+
let value = mergeValue.sum;
|
|
187
|
+
if (mergeStrategy === MergeStrategy.AVERAGE) {
|
|
188
|
+
value = mergeValue.count ? value / mergeValue.count : -1;
|
|
189
|
+
}
|
|
190
|
+
else if (mergeStrategy === MergeStrategy.MAX) {
|
|
191
|
+
value = mergeValue.max;
|
|
192
|
+
}
|
|
193
|
+
if (mergeValue.count && !(removeNullValues && !value)) {
|
|
194
|
+
const lat = mergeValue.latLng.lat;
|
|
195
|
+
const lng = mergeValue.latLng.lng;
|
|
176
196
|
cartesianValuesMerged.push(new CartesianValue_1.CartesianValue({ value, lat, lng }));
|
|
177
197
|
}
|
|
178
198
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RainComputationAbstract.js","sourceRoot":"","sources":["../../src/rain/RainComputationAbstract.ts"],"names":[],"mappings":";;;AAAA,yDAAoD;AACpD,+CAA0C;AAC1C,kDAA6C;AAC7C,yCAAoC;AACpC,wDAAmD;
|
|
1
|
+
{"version":3,"file":"RainComputationAbstract.js","sourceRoot":"","sources":["../../src/rain/RainComputationAbstract.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { RainComputationAbstract } from './RainComputationAbstract';
|
|
1
|
+
import { MergeStrategy, RainComputationAbstract } from './RainComputationAbstract';
|
|
2
2
|
import { Link } from '../organization/Link';
|
|
3
3
|
import { RainMeasure } from './RainMeasure';
|
|
4
4
|
import { RaainNode } from '../organization/RaainNode';
|
|
5
5
|
import { LatLng } from '../cartesian/LatLng';
|
|
6
|
+
import { CartesianTools } from '../cartesian/CartesianTools';
|
|
6
7
|
/**
|
|
7
8
|
* api/rains/:id/computations/:computationId?format=map&...
|
|
8
9
|
* or with
|
|
@@ -27,11 +28,11 @@ export declare class RainComputationMap extends RainComputationAbstract {
|
|
|
27
28
|
radars?: Link[] | RaainNode[];
|
|
28
29
|
});
|
|
29
30
|
toJSON(): any;
|
|
30
|
-
setMapData(mapData: RainMeasure[] | string, options
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
mergeLimitPoints
|
|
34
|
-
removeNullValues
|
|
31
|
+
setMapData(mapData: RainMeasure[] | string, options: {
|
|
32
|
+
mergeStrategy: MergeStrategy;
|
|
33
|
+
cartesianTools?: CartesianTools;
|
|
34
|
+
mergeLimitPoints?: [LatLng, LatLng];
|
|
35
|
+
removeNullValues?: boolean;
|
|
35
36
|
}): void;
|
|
36
37
|
getMapData(): RainMeasure[];
|
|
37
38
|
}
|
|
@@ -2,8 +2,6 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.RainComputationMap = void 0;
|
|
4
4
|
const RainComputationAbstract_1 = require("./RainComputationAbstract");
|
|
5
|
-
const LatLng_1 = require("../cartesian/LatLng");
|
|
6
|
-
const QualityTools_1 = require("../quality/tools/QualityTools");
|
|
7
5
|
/**
|
|
8
6
|
* api/rains/:id/computations/:computationId?format=map&...
|
|
9
7
|
* or with
|
|
@@ -12,7 +10,7 @@ const QualityTools_1 = require("../quality/tools/QualityTools");
|
|
|
12
10
|
class RainComputationMap extends RainComputationAbstract_1.RainComputationAbstract {
|
|
13
11
|
constructor(json) {
|
|
14
12
|
super(json);
|
|
15
|
-
this.setMapData(json.map);
|
|
13
|
+
this.setMapData(json.map, { mergeStrategy: RainComputationAbstract_1.MergeStrategy.NONE });
|
|
16
14
|
}
|
|
17
15
|
toJSON() {
|
|
18
16
|
const json = super.toJSON();
|
|
@@ -22,18 +20,21 @@ class RainComputationMap extends RainComputationAbstract_1.RainComputationAbstra
|
|
|
22
20
|
}
|
|
23
21
|
return json;
|
|
24
22
|
}
|
|
25
|
-
setMapData(mapData, options
|
|
26
|
-
mergeCartesian: false,
|
|
27
|
-
mergeCartesianPixelWidth: new LatLng_1.LatLng({ lat: QualityTools_1.QualityTools.DEFAULT_SCALE, lng: QualityTools_1.QualityTools.DEFAULT_SCALE }),
|
|
28
|
-
mergeLimitPoints: [new LatLng_1.LatLng({ lat: 0, lng: 0 }), new LatLng_1.LatLng({ lat: 0, lng: 0 })],
|
|
29
|
-
removeNullValues: false,
|
|
30
|
-
}) {
|
|
23
|
+
setMapData(mapData, options) {
|
|
31
24
|
if (!mapData) {
|
|
32
25
|
return;
|
|
33
26
|
}
|
|
34
|
-
if (typeof (mapData) !== 'string' &&
|
|
35
|
-
|
|
36
|
-
|
|
27
|
+
if (typeof (mapData) !== 'string' && options.mergeStrategy !== RainComputationAbstract_1.MergeStrategy.NONE
|
|
28
|
+
&& (options === null || options === void 0 ? void 0 : options.cartesianTools) && (options === null || options === void 0 ? void 0 : options.mergeLimitPoints)) {
|
|
29
|
+
this.buildLatLngMatrix({
|
|
30
|
+
cartesianTools: options.cartesianTools,
|
|
31
|
+
mergeLimitPoints: options.mergeLimitPoints
|
|
32
|
+
});
|
|
33
|
+
mapData = this.mergeRainMeasures(mapData, {
|
|
34
|
+
mergeLimitPoints: options.mergeLimitPoints,
|
|
35
|
+
removeNullValues: !!options.removeNullValues,
|
|
36
|
+
mergeStrategy: options.mergeStrategy,
|
|
37
|
+
});
|
|
37
38
|
}
|
|
38
39
|
let map = mapData;
|
|
39
40
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RainComputationMap.js","sourceRoot":"","sources":["../../src/rain/RainComputationMap.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"RainComputationMap.js","sourceRoot":"","sources":["../../src/rain/RainComputationMap.ts"],"names":[],"mappings":";;;AAAA,uEAAiF;AAOjF;;;;GAIG;AACH,MAAa,kBAAmB,SAAQ,iDAAuB;IAI3D,YAAY,IAiBX;QACG,KAAK,CAAC,IAAI,CAAC,CAAC;QACZ,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,EAAC,aAAa,EAAE,uCAAa,CAAC,IAAI,EAAC,CAAC,CAAC;IACnE,CAAC;IAEM,MAAM;QACT,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;QAC5B,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YACX,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC;YACvB,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC;QAC3B,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,UAAU,CAAC,OAA+B,EAAE,OAKlD;QACG,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,OAAO;QACX,CAAC;QAED,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,aAAa,KAAK,uCAAa,CAAC,IAAI;gBAC1E,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,cAAc,CAAA,KAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,gBAAgB,CAAA,EAAE,CAAC;YAE1D,IAAI,CAAC,iBAAiB,CAAC;gBACnB,cAAc,EAAE,OAAO,CAAC,cAAc;gBACtC,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;aAC7C,CAAC,CAAC;YAEH,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAwB,EAAE;gBACvD,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;gBAC1C,gBAAgB,EAAE,CAAC,CAAC,OAAO,CAAC,gBAAgB;gBAC5C,aAAa,EAAE,OAAO,CAAC,aAAa;aACvC,CAAC,CAAC;QACP,CAAC;QAED,IAAI,GAAG,GAAG,OAAO,CAAC;QAClB,IAAI,CAAC;YACD,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;gBAChC,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YAClC,CAAC;QACL,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;QACb,CAAC;QACD,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;IAC9B,CAAC;IAEM,UAAU;QACb,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YACZ,OAAO,EAAE,CAAC;QACd,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;CACJ;AA5ED,gDA4EC"}
|