@fleet-frontend/mower-maps 0.2.5-beta.24 → 0.2.5-beta.25
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/dist/config/constants.d.ts +3 -0
- package/dist/config/constants.d.ts.map +1 -1
- package/dist/index.esm.js +42 -36
- package/dist/index.js +42 -36
- package/dist/utils/mapBounds.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/config/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/config/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,gCAAgC;AAChC,eAAO,MAAM,kBAAkB,EAAE,CAAC,MAAM,EAAE,MAAM,CAAU,CAAC;AAE3D,+DAA+D;AAC/D,eAAO,MAAM,mBAAmB;;;CAG/B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY,KAAK,CAAC;AAE/B;;GAEG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;CAUtB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;;;;;CAOpB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,aAAa;;;;;;CAMhB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;CAUf,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;CAYrB,CAAC;AAGX,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEjF,eAAO,MAAM,qBAAqB,sqUAqB3B,CAAC;AAER;;GAEG;AACH,eAAO,MAAM,WAAW,IAAI,CAAC;AAC7B;;GAEG;AACH,eAAO,MAAM,mBAAmB,IAAI,CAAC;AACrC;;GAEG;AACH,eAAO,MAAM,eAAe,IAAI,CAAC;AACjC;;GAEG;AACH,eAAO,MAAM,4BAA4B,IAAI,CAAC;AAC9C;;GAEG;AACH,eAAO,MAAM,uBAAuB,IAAI,CAAC;AACzC;;GAEG;AACH,eAAO,MAAM,kBAAkB,IAAI,CAAC;AACpC;;GAEG;AACH,eAAO,MAAM,qBAAqB,IAAI,CAAC;AACvC;;GAEG;AACH,eAAO,MAAM,8BAA8B,IAAI,CAAC;AAChD;;GAEG;AACH,eAAO,MAAM,oBAAoB,IAAI,CAAC;AACtC;;GAEG;AACH,eAAO,MAAM,UAAU,KAAK,CAAC;AAE7B,eAAO,MAAM,eAAe,4BAA4B,CAAC;AAEzD,eAAO,MAAM,sBAAsB,KAAK,CAAC;AACzC,eAAO,MAAM,mBAAmB,MAAM,CAAC;AACvC,eAAO,MAAM,mBAAmB,KAAK,CAAC;AAGtC,eAAO,MAAM,wBAAwB,WAAW,CAAC"}
|
package/dist/index.esm.js
CHANGED
|
@@ -10617,9 +10617,12 @@ var SvgMapOpacity;
|
|
|
10617
10617
|
// sw: [116.071044, 40.102099],
|
|
10618
10618
|
// ne: [116.0734, 40.103901],
|
|
10619
10619
|
// };
|
|
10620
|
+
/** 无效 GPS 时的兜底中心点 [lng, lat] */
|
|
10621
|
+
const DEFAULT_GPS_CENTER = [0, 0];
|
|
10622
|
+
/** 无 map_width/map_height 时的默认 GPS 边界 [lng, lat](中心约 (0,0)) */
|
|
10620
10623
|
const DEFAULT_COORDINATES = {
|
|
10621
|
-
sw: [-
|
|
10622
|
-
ne: [0.
|
|
10624
|
+
sw: [-225e-6, -225e-6],
|
|
10625
|
+
ne: [0.000225, 0.000225],
|
|
10623
10626
|
};
|
|
10624
10627
|
/**
|
|
10625
10628
|
* 缩放因子 - 将米转换为像素
|
|
@@ -18560,6 +18563,38 @@ function calculateBoundaryBoundsCenter(mapData) {
|
|
|
18560
18563
|
boundaryBounds.minY + (boundaryBounds.maxY - boundaryBounds.minY) / 2,
|
|
18561
18564
|
];
|
|
18562
18565
|
}
|
|
18566
|
+
/**
|
|
18567
|
+
* 由中心点与物理尺寸(米)计算 GPS 边界 [lng, lat]
|
|
18568
|
+
*/
|
|
18569
|
+
function computeGpsBoundsFromCenterAndSize(centerLng, centerLat, mapWidthMeters, mapHeightMeters) {
|
|
18570
|
+
const METERS_PER_DEGREE_LAT = EQUATORIAL_CIRCUMFERENCE / 360;
|
|
18571
|
+
const METERS_PER_DEGREE_LNG = METERS_PER_DEGREE_LAT * Math.cos((centerLat * Math.PI) / 180);
|
|
18572
|
+
const swLat = centerLat - mapHeightMeters / 2 / METERS_PER_DEGREE_LAT;
|
|
18573
|
+
const swLng = centerLng - mapWidthMeters / 2 / METERS_PER_DEGREE_LNG;
|
|
18574
|
+
const neLat = centerLat + mapHeightMeters / 2 / METERS_PER_DEGREE_LAT;
|
|
18575
|
+
const neLng = centerLng + mapWidthMeters / 2 / METERS_PER_DEGREE_LNG;
|
|
18576
|
+
return {
|
|
18577
|
+
sw: [swLng, swLat],
|
|
18578
|
+
ne: [neLng, neLat],
|
|
18579
|
+
};
|
|
18580
|
+
}
|
|
18581
|
+
/**
|
|
18582
|
+
* GPS 无效时:中心 (0,0) + JSON 的 map_width/map_height;无尺寸则用 DEFAULT_COORDINATES
|
|
18583
|
+
*/
|
|
18584
|
+
function getFallbackGpsBounds(mapData) {
|
|
18585
|
+
const [centerLng, centerLat] = DEFAULT_GPS_CENTER;
|
|
18586
|
+
const hasMapSize = typeof mapData.map_width === 'number' &&
|
|
18587
|
+
typeof mapData.map_height === 'number' &&
|
|
18588
|
+
mapData.map_width > 0 &&
|
|
18589
|
+
mapData.map_height > 0;
|
|
18590
|
+
if (hasMapSize) {
|
|
18591
|
+
return computeGpsBoundsFromCenterAndSize(centerLng, centerLat, mapData.map_width, mapData.map_height);
|
|
18592
|
+
}
|
|
18593
|
+
return {
|
|
18594
|
+
sw: [...DEFAULT_COORDINATES.sw],
|
|
18595
|
+
ne: [...DEFAULT_COORDINATES.ne],
|
|
18596
|
+
};
|
|
18597
|
+
}
|
|
18563
18598
|
/**
|
|
18564
18599
|
* 检查GPS坐标是否有效
|
|
18565
18600
|
*/
|
|
@@ -18700,8 +18735,8 @@ function calculateMapGpsCenter(mapData) {
|
|
|
18700
18735
|
// lng: 116.4074, // 北京经度
|
|
18701
18736
|
// };
|
|
18702
18737
|
return {
|
|
18703
|
-
lat:
|
|
18704
|
-
lng: 0,
|
|
18738
|
+
lat: DEFAULT_GPS_CENTER[1],
|
|
18739
|
+
lng: DEFAULT_GPS_CENTER[0],
|
|
18705
18740
|
};
|
|
18706
18741
|
}
|
|
18707
18742
|
// 旋转坐标点
|
|
@@ -18731,25 +18766,7 @@ const getValidGpsBounds = (mapData, rotation = 0) => {
|
|
|
18731
18766
|
mapData.map_width > 0 &&
|
|
18732
18767
|
mapData.map_height > 0) {
|
|
18733
18768
|
const [centerLng, centerLat] = mapData.center_gps;
|
|
18734
|
-
|
|
18735
|
-
const mapHeightMeters = mapData.map_height;
|
|
18736
|
-
// 精确的坐标转换常数(基于 WGS84 标准 - GPS 国际标准)
|
|
18737
|
-
// WGS84 赤道半径 = 6,378,137 米
|
|
18738
|
-
// 地球赤道周长 = 2 × π × 6,378,137 ≈ 40,075,017 米
|
|
18739
|
-
// 1度纬度 = 40075017 / 360 ≈ 111,319.49 米(在地球上任何地方都基本相同)
|
|
18740
|
-
// 1度经度 = (40075017 / 360) * cos(纬度) 米(随纬度变化)
|
|
18741
|
-
const METERS_PER_DEGREE_LAT = EQUATORIAL_CIRCUMFERENCE / 360;
|
|
18742
|
-
const METERS_PER_DEGREE_LNG = METERS_PER_DEGREE_LAT * Math.cos((centerLat * Math.PI) / 180);
|
|
18743
|
-
// 计算SW(西南角)GPS坐标:从中心点减去半个地图的宽度和高度
|
|
18744
|
-
const swLat = centerLat - mapHeightMeters / 2 / METERS_PER_DEGREE_LAT;
|
|
18745
|
-
const swLng = centerLng - mapWidthMeters / 2 / METERS_PER_DEGREE_LNG;
|
|
18746
|
-
// 计算NE(东北角)GPS坐标:从中心点加上半个地图的宽度和高度
|
|
18747
|
-
const neLat = centerLat + mapHeightMeters / 2 / METERS_PER_DEGREE_LAT;
|
|
18748
|
-
const neLng = centerLng + mapWidthMeters / 2 / METERS_PER_DEGREE_LNG;
|
|
18749
|
-
bounds = {
|
|
18750
|
-
sw: [swLng, swLat],
|
|
18751
|
-
ne: [neLng, neLat],
|
|
18752
|
-
};
|
|
18769
|
+
bounds = computeGpsBoundsFromCenterAndSize(centerLng, centerLat, mapData.map_width, mapData.map_height);
|
|
18753
18770
|
}
|
|
18754
18771
|
// else if (
|
|
18755
18772
|
// isValidGpsCoordinate(mapData.sw_gps?.[1], mapData.sw_gps?.[0]) &&
|
|
@@ -18763,19 +18780,8 @@ const getValidGpsBounds = (mapData, rotation = 0) => {
|
|
|
18763
18780
|
// };
|
|
18764
18781
|
// }
|
|
18765
18782
|
else {
|
|
18766
|
-
|
|
18767
|
-
|
|
18768
|
-
// if (sw && ne) {
|
|
18769
|
-
// console.warn('GPS坐标无效,使用地图几何数据估算边界:', sw, ne);
|
|
18770
|
-
// bounds = {
|
|
18771
|
-
// sw: [sw[0], sw[1]],
|
|
18772
|
-
// ne: [ne[0], ne[1]],
|
|
18773
|
-
// };
|
|
18774
|
-
// } else {
|
|
18775
|
-
// 最后的fallback:使用默认坐标
|
|
18776
|
-
console.warn('无法获取有效的GPS边界,使用默认坐标');
|
|
18777
|
-
bounds = DEFAULT_COORDINATES;
|
|
18778
|
-
// }
|
|
18783
|
+
console.warn('无法获取有效的GPS边界,使用 (0,0) 中心 + map_width/map_height 或 DEFAULT_COORDINATES');
|
|
18784
|
+
bounds = getFallbackGpsBounds(mapData);
|
|
18779
18785
|
}
|
|
18780
18786
|
// 如果有旋转角度,计算旋转后的边界
|
|
18781
18787
|
if (rotation !== 0) {
|
package/dist/index.js
CHANGED
|
@@ -10637,9 +10637,12 @@ var SvgMapOpacity;
|
|
|
10637
10637
|
// sw: [116.071044, 40.102099],
|
|
10638
10638
|
// ne: [116.0734, 40.103901],
|
|
10639
10639
|
// };
|
|
10640
|
+
/** 无效 GPS 时的兜底中心点 [lng, lat] */
|
|
10641
|
+
const DEFAULT_GPS_CENTER = [0, 0];
|
|
10642
|
+
/** 无 map_width/map_height 时的默认 GPS 边界 [lng, lat](中心约 (0,0)) */
|
|
10640
10643
|
const DEFAULT_COORDINATES = {
|
|
10641
|
-
sw: [-
|
|
10642
|
-
ne: [0.
|
|
10644
|
+
sw: [-225e-6, -225e-6],
|
|
10645
|
+
ne: [0.000225, 0.000225],
|
|
10643
10646
|
};
|
|
10644
10647
|
/**
|
|
10645
10648
|
* 缩放因子 - 将米转换为像素
|
|
@@ -18580,6 +18583,38 @@ function calculateBoundaryBoundsCenter(mapData) {
|
|
|
18580
18583
|
boundaryBounds.minY + (boundaryBounds.maxY - boundaryBounds.minY) / 2,
|
|
18581
18584
|
];
|
|
18582
18585
|
}
|
|
18586
|
+
/**
|
|
18587
|
+
* 由中心点与物理尺寸(米)计算 GPS 边界 [lng, lat]
|
|
18588
|
+
*/
|
|
18589
|
+
function computeGpsBoundsFromCenterAndSize(centerLng, centerLat, mapWidthMeters, mapHeightMeters) {
|
|
18590
|
+
const METERS_PER_DEGREE_LAT = EQUATORIAL_CIRCUMFERENCE / 360;
|
|
18591
|
+
const METERS_PER_DEGREE_LNG = METERS_PER_DEGREE_LAT * Math.cos((centerLat * Math.PI) / 180);
|
|
18592
|
+
const swLat = centerLat - mapHeightMeters / 2 / METERS_PER_DEGREE_LAT;
|
|
18593
|
+
const swLng = centerLng - mapWidthMeters / 2 / METERS_PER_DEGREE_LNG;
|
|
18594
|
+
const neLat = centerLat + mapHeightMeters / 2 / METERS_PER_DEGREE_LAT;
|
|
18595
|
+
const neLng = centerLng + mapWidthMeters / 2 / METERS_PER_DEGREE_LNG;
|
|
18596
|
+
return {
|
|
18597
|
+
sw: [swLng, swLat],
|
|
18598
|
+
ne: [neLng, neLat],
|
|
18599
|
+
};
|
|
18600
|
+
}
|
|
18601
|
+
/**
|
|
18602
|
+
* GPS 无效时:中心 (0,0) + JSON 的 map_width/map_height;无尺寸则用 DEFAULT_COORDINATES
|
|
18603
|
+
*/
|
|
18604
|
+
function getFallbackGpsBounds(mapData) {
|
|
18605
|
+
const [centerLng, centerLat] = DEFAULT_GPS_CENTER;
|
|
18606
|
+
const hasMapSize = typeof mapData.map_width === 'number' &&
|
|
18607
|
+
typeof mapData.map_height === 'number' &&
|
|
18608
|
+
mapData.map_width > 0 &&
|
|
18609
|
+
mapData.map_height > 0;
|
|
18610
|
+
if (hasMapSize) {
|
|
18611
|
+
return computeGpsBoundsFromCenterAndSize(centerLng, centerLat, mapData.map_width, mapData.map_height);
|
|
18612
|
+
}
|
|
18613
|
+
return {
|
|
18614
|
+
sw: [...DEFAULT_COORDINATES.sw],
|
|
18615
|
+
ne: [...DEFAULT_COORDINATES.ne],
|
|
18616
|
+
};
|
|
18617
|
+
}
|
|
18583
18618
|
/**
|
|
18584
18619
|
* 检查GPS坐标是否有效
|
|
18585
18620
|
*/
|
|
@@ -18720,8 +18755,8 @@ function calculateMapGpsCenter(mapData) {
|
|
|
18720
18755
|
// lng: 116.4074, // 北京经度
|
|
18721
18756
|
// };
|
|
18722
18757
|
return {
|
|
18723
|
-
lat:
|
|
18724
|
-
lng: 0,
|
|
18758
|
+
lat: DEFAULT_GPS_CENTER[1],
|
|
18759
|
+
lng: DEFAULT_GPS_CENTER[0],
|
|
18725
18760
|
};
|
|
18726
18761
|
}
|
|
18727
18762
|
// 旋转坐标点
|
|
@@ -18751,25 +18786,7 @@ const getValidGpsBounds = (mapData, rotation = 0) => {
|
|
|
18751
18786
|
mapData.map_width > 0 &&
|
|
18752
18787
|
mapData.map_height > 0) {
|
|
18753
18788
|
const [centerLng, centerLat] = mapData.center_gps;
|
|
18754
|
-
|
|
18755
|
-
const mapHeightMeters = mapData.map_height;
|
|
18756
|
-
// 精确的坐标转换常数(基于 WGS84 标准 - GPS 国际标准)
|
|
18757
|
-
// WGS84 赤道半径 = 6,378,137 米
|
|
18758
|
-
// 地球赤道周长 = 2 × π × 6,378,137 ≈ 40,075,017 米
|
|
18759
|
-
// 1度纬度 = 40075017 / 360 ≈ 111,319.49 米(在地球上任何地方都基本相同)
|
|
18760
|
-
// 1度经度 = (40075017 / 360) * cos(纬度) 米(随纬度变化)
|
|
18761
|
-
const METERS_PER_DEGREE_LAT = EQUATORIAL_CIRCUMFERENCE / 360;
|
|
18762
|
-
const METERS_PER_DEGREE_LNG = METERS_PER_DEGREE_LAT * Math.cos((centerLat * Math.PI) / 180);
|
|
18763
|
-
// 计算SW(西南角)GPS坐标:从中心点减去半个地图的宽度和高度
|
|
18764
|
-
const swLat = centerLat - mapHeightMeters / 2 / METERS_PER_DEGREE_LAT;
|
|
18765
|
-
const swLng = centerLng - mapWidthMeters / 2 / METERS_PER_DEGREE_LNG;
|
|
18766
|
-
// 计算NE(东北角)GPS坐标:从中心点加上半个地图的宽度和高度
|
|
18767
|
-
const neLat = centerLat + mapHeightMeters / 2 / METERS_PER_DEGREE_LAT;
|
|
18768
|
-
const neLng = centerLng + mapWidthMeters / 2 / METERS_PER_DEGREE_LNG;
|
|
18769
|
-
bounds = {
|
|
18770
|
-
sw: [swLng, swLat],
|
|
18771
|
-
ne: [neLng, neLat],
|
|
18772
|
-
};
|
|
18789
|
+
bounds = computeGpsBoundsFromCenterAndSize(centerLng, centerLat, mapData.map_width, mapData.map_height);
|
|
18773
18790
|
}
|
|
18774
18791
|
// else if (
|
|
18775
18792
|
// isValidGpsCoordinate(mapData.sw_gps?.[1], mapData.sw_gps?.[0]) &&
|
|
@@ -18783,19 +18800,8 @@ const getValidGpsBounds = (mapData, rotation = 0) => {
|
|
|
18783
18800
|
// };
|
|
18784
18801
|
// }
|
|
18785
18802
|
else {
|
|
18786
|
-
|
|
18787
|
-
|
|
18788
|
-
// if (sw && ne) {
|
|
18789
|
-
// console.warn('GPS坐标无效,使用地图几何数据估算边界:', sw, ne);
|
|
18790
|
-
// bounds = {
|
|
18791
|
-
// sw: [sw[0], sw[1]],
|
|
18792
|
-
// ne: [ne[0], ne[1]],
|
|
18793
|
-
// };
|
|
18794
|
-
// } else {
|
|
18795
|
-
// 最后的fallback:使用默认坐标
|
|
18796
|
-
console.warn('无法获取有效的GPS边界,使用默认坐标');
|
|
18797
|
-
bounds = DEFAULT_COORDINATES;
|
|
18798
|
-
// }
|
|
18803
|
+
console.warn('无法获取有效的GPS边界,使用 (0,0) 中心 + map_width/map_height 或 DEFAULT_COORDINATES');
|
|
18804
|
+
bounds = getFallbackGpsBounds(mapData);
|
|
18799
18805
|
}
|
|
18800
18806
|
// 如果有旋转角度,计算旋转后的边界
|
|
18801
18807
|
if (rotation !== 0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mapBounds.d.ts","sourceRoot":"","sources":["../../src/utils/mapBounds.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAElD,OAAO,EAAmB,OAAO,EAAE,MAAM,UAAU,CAAC;AAEpD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,oBAAoB,UAAO,GAAG,SAAS,CA2D3F;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS,CAgDnE;AAED,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,OAAO,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAShF;AACD;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,CAOzE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,GAAG,KAAK,CAKxD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAKlF;
|
|
1
|
+
{"version":3,"file":"mapBounds.d.ts","sourceRoot":"","sources":["../../src/utils/mapBounds.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAElD,OAAO,EAAmB,OAAO,EAAE,MAAM,UAAU,CAAC;AAEpD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,oBAAoB,UAAO,GAAG,SAAS,CA2D3F;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS,CAgDnE;AAED,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,OAAO,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAShF;AACD;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,CAOzE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,GAAG,KAAK,CAKxD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAKlF;AAkED;;;;GAIG;AAEH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG;IAC1D,EAAE,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrB,EAAE,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACtB,GAAG,IAAI,CA4EP;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAwDpF;AAsBD,eAAO,MAAM,iBAAiB,GAC5B,SAAS,GAAG,EACZ,WAAU,MAAU,KACnB;IAAE,EAAE,EAAE,MAAM,EAAE,CAAC;IAAC,EAAE,EAAE,MAAM,EAAE,CAAA;CAiE9B,CAAC"}
|