@openglobus/og 0.21.0 → 0.22.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/LICENSE.md +2 -2
- package/lib/@openglobus/js/Globe.d.ts +4 -0
- package/lib/@openglobus/js/Object3d.d.ts +7 -2
- package/lib/@openglobus/js/camera/Camera.d.ts +2 -0
- package/lib/@openglobus/js/control/geoObjectEditor/GeoObjectEditorScene.d.ts +58 -0
- package/lib/@openglobus/js/ellipsoid/Ellipsoid.d.ts +2 -1
- package/lib/@openglobus/js/ellipsoid/index.d.ts +4 -3
- package/lib/@openglobus/js/ellipsoid/mars.d.ts +6 -0
- package/lib/@openglobus/js/ellipsoid/moon.d.ts +6 -0
- package/lib/@openglobus/js/entity/Entity.d.ts +4 -2
- package/lib/@openglobus/js/entity/EntityCollection.d.ts +3 -2
- package/lib/@openglobus/js/entity/GeoObject.d.ts +6 -1
- package/lib/@openglobus/js/entity/GeoObjectHandler.d.ts +4 -0
- package/lib/@openglobus/js/entity/Label.d.ts +14 -0
- package/lib/@openglobus/js/entity/LabelHandler.d.ts +1 -1
- package/lib/@openglobus/js/index.d.ts +3 -3
- package/lib/@openglobus/js/layer/Vector.d.ts +12 -29
- package/lib/@openglobus/js/proj/equi.d.ts +9 -0
- package/lib/@openglobus/js/quadTree/{EPSG4326QuadTreeStrategy.d.ts → EPSG4326/EPSG4326QuadTreeStrategy.d.ts} +2 -2
- package/lib/@openglobus/js/quadTree/EntityCollectionNode.d.ts +5 -13
- package/lib/@openglobus/js/quadTree/EntityCollectionsTreeStrategy.d.ts +25 -0
- package/lib/@openglobus/js/quadTree/QuadTreeStrategy.d.ts +11 -0
- package/lib/@openglobus/js/quadTree/earth/EarthEntityCollectionNodeLonLat.d.ts +18 -0
- package/lib/@openglobus/js/quadTree/earth/EarthEntityCollectionsTreeStrategy.d.ts +19 -0
- package/lib/@openglobus/js/quadTree/earth/EarthQuadTreeStrategy.d.ts +29 -0
- package/lib/@openglobus/js/quadTree/equi/EquiEntityCollectionNodeLonLat.d.ts +17 -0
- package/lib/@openglobus/js/quadTree/equi/EquiEntityCollectionsTreeStrategy.d.ts +17 -0
- package/lib/@openglobus/js/quadTree/equi/EquiQuadTreeStrategy.d.ts +19 -0
- package/lib/@openglobus/js/quadTree/index.d.ts +6 -6
- package/lib/{js/quadTree → @openglobus/js/quadTree/wgs84}/Wgs84QuadTreeStrategy.d.ts +2 -2
- package/lib/@openglobus/js/renderer/Renderer.d.ts +2 -0
- package/lib/@openglobus/js/scene/Planet.d.ts +0 -27
- package/lib/@openglobus/js/segment/Segment.d.ts +0 -1
- package/lib/@openglobus/js/segment/SegmentLonLat.d.ts +0 -4
- package/lib/@openglobus/js/segment/{SegmentLonLatWgs84.d.ts → SegmentLonLatEqui.d.ts} +4 -1
- package/lib/@openglobus/js/terrain/RgbTerrain.d.ts +11 -0
- package/lib/@openglobus/og.esm.js +1 -1
- package/lib/@openglobus/og.esm.js.map +1 -1
- package/lib/@openglobus/og.umd.js +1 -1
- package/lib/@openglobus/og.umd.js.map +1 -1
- package/lib/@openglobus/res/fonts/Ephesis-Regular.json +4648 -0
- package/lib/@openglobus/res/fonts/Ephesis-Regular.ttf.cfg +1282 -0
- package/lib/@openglobus/res/fonts/Ephesis-Regular.ttf.png +0 -0
- package/lib/js/Globe.d.ts +4 -0
- package/lib/js/Globe.js +8 -4
- package/lib/js/Object3d.d.ts +7 -2
- package/lib/js/Object3d.js +46 -6
- package/lib/js/camera/Camera.d.ts +2 -0
- package/lib/js/camera/Camera.js +8 -0
- package/lib/js/control/elevationProfile/ElevationProfileScene.js +2 -0
- package/lib/js/control/geoObjectEditor/GeoObjectEditorScene.d.ts +58 -0
- package/lib/js/control/geoObjectEditor/GeoObjectEditorScene.js +105 -0
- package/lib/js/ellipsoid/Ellipsoid.d.ts +2 -1
- package/lib/js/ellipsoid/Ellipsoid.js +17 -1
- package/lib/js/ellipsoid/index.d.ts +4 -3
- package/lib/js/ellipsoid/index.js +4 -3
- package/lib/js/ellipsoid/mars.d.ts +6 -0
- package/lib/js/ellipsoid/mars.js +6 -0
- package/lib/js/ellipsoid/moon.d.ts +6 -0
- package/lib/js/ellipsoid/moon.js +6 -0
- package/lib/js/entity/Entity.d.ts +4 -2
- package/lib/js/entity/Entity.js +4 -1
- package/lib/js/entity/EntityCollection.d.ts +3 -2
- package/lib/js/entity/EntityCollection.js +26 -2
- package/lib/js/entity/GeoObject.d.ts +6 -1
- package/lib/js/entity/GeoObject.js +9 -0
- package/lib/js/entity/GeoObjectHandler.d.ts +4 -0
- package/lib/js/entity/GeoObjectHandler.js +32 -1
- package/lib/js/entity/GeometryHandler.js +16 -14
- package/lib/js/entity/Label.d.ts +14 -0
- package/lib/js/entity/Label.js +24 -4
- package/lib/js/entity/LabelHandler.d.ts +1 -1
- package/lib/js/entity/LabelHandler.js +4 -4
- package/lib/js/entity/Polyline.js +1 -1
- package/lib/js/index.d.ts +3 -3
- package/lib/js/index.js +3 -3
- package/lib/js/layer/CanvasTiles.js +1 -11
- package/lib/js/layer/Layer.js +9 -28
- package/lib/js/layer/Vector.d.ts +12 -29
- package/lib/js/layer/Vector.js +45 -160
- package/lib/js/layer/XYZ.js +10 -10
- package/lib/js/proj/equi.d.ts +9 -0
- package/lib/js/proj/equi.js +9 -0
- package/lib/js/quadTree/{EPSG4326QuadTreeStrategy.d.ts → EPSG4326/EPSG4326QuadTreeStrategy.d.ts} +2 -2
- package/lib/js/quadTree/EPSG4326/EPSG4326QuadTreeStrategy.js +16 -0
- package/lib/js/quadTree/EntityCollectionNode.d.ts +5 -13
- package/lib/js/quadTree/EntityCollectionNode.js +18 -83
- package/lib/js/quadTree/EntityCollectionsTreeStrategy.d.ts +25 -0
- package/lib/js/quadTree/EntityCollectionsTreeStrategy.js +49 -0
- package/lib/js/quadTree/Node.js +6 -12
- package/lib/js/quadTree/QuadTreeStrategy.d.ts +11 -0
- package/lib/js/quadTree/QuadTreeStrategy.js +12 -0
- package/lib/js/quadTree/earth/EarthEntityCollectionNodeLonLat.d.ts +18 -0
- package/lib/js/quadTree/earth/EarthEntityCollectionNodeLonLat.js +74 -0
- package/lib/js/quadTree/earth/EarthEntityCollectionsTreeStrategy.d.ts +19 -0
- package/lib/js/quadTree/earth/EarthEntityCollectionsTreeStrategy.js +103 -0
- package/lib/js/quadTree/earth/EarthQuadTreeStrategy.d.ts +29 -0
- package/lib/js/quadTree/{EarthQuadTreeStrategy.js → earth/EarthQuadTreeStrategy.js} +29 -6
- package/lib/js/quadTree/equi/EquiEntityCollectionNodeLonLat.d.ts +17 -0
- package/lib/js/quadTree/equi/EquiEntityCollectionNodeLonLat.js +70 -0
- package/lib/js/quadTree/equi/EquiEntityCollectionsTreeStrategy.d.ts +17 -0
- package/lib/js/quadTree/equi/EquiEntityCollectionsTreeStrategy.js +75 -0
- package/lib/js/quadTree/equi/EquiQuadTreeStrategy.d.ts +19 -0
- package/lib/js/quadTree/equi/EquiQuadTreeStrategy.js +62 -0
- package/lib/js/quadTree/index.d.ts +6 -6
- package/lib/js/quadTree/index.js +6 -6
- package/lib/{@openglobus/js/quadTree → js/quadTree/wgs84}/Wgs84QuadTreeStrategy.d.ts +2 -2
- package/lib/js/quadTree/wgs84/Wgs84QuadTreeStrategy.js +15 -0
- package/lib/js/renderer/Renderer.d.ts +2 -0
- package/lib/js/renderer/Renderer.js +2 -2
- package/lib/js/scene/Planet.d.ts +0 -27
- package/lib/js/scene/Planet.js +2 -9
- package/lib/js/segment/Segment.d.ts +0 -1
- package/lib/js/segment/Segment.js +0 -3
- package/lib/js/segment/SegmentLonLat.d.ts +0 -4
- package/lib/js/segment/SegmentLonLat.js +0 -11
- package/lib/js/segment/{SegmentLonLatWgs84.d.ts → SegmentLonLatEqui.d.ts} +4 -1
- package/lib/js/segment/SegmentLonLatEqui.js +46 -0
- package/lib/js/shaders/geoObject.js +10 -5
- package/lib/js/shaders/polyline.js +8 -6
- package/lib/js/terrain/RgbTerrain.d.ts +11 -0
- package/lib/js/terrain/RgbTerrain.js +12 -1
- package/lib/js/utils/PlainSegmentWorker.js +3 -1
- package/lib/js/webgl/Handler.js +1 -1
- package/package.json +4 -4
- package/lib/@openglobus/js/quadTree/EarthQuadTreeStrategy.d.ts +0 -9
- package/lib/@openglobus/js/quadTree/MarsQuadTreeStrategy.d.ts +0 -11
- package/lib/js/quadTree/EPSG4326QuadTreeStrategy.js +0 -16
- package/lib/js/quadTree/EarthQuadTreeStrategy.d.ts +0 -9
- package/lib/js/quadTree/MarsQuadTreeStrategy.d.ts +0 -11
- package/lib/js/quadTree/MarsQuadTreeStrategy.js +0 -43
- package/lib/js/quadTree/Wgs84QuadTreeStrategy.js +0 -15
- package/lib/js/segment/SegmentLonLatWgs84.js +0 -25
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { Node } from "../Node";
|
|
2
|
+
import { Planet } from "../../scene/Planet";
|
|
3
|
+
import { QuadTreeStrategy } from "../QuadTreeStrategy";
|
|
4
|
+
import { LonLat } from "../../LonLat";
|
|
5
|
+
import { Vector } from "../../layer/Vector";
|
|
6
|
+
import { EarthEntityCollectionsTreeStrategy } from "./EarthEntityCollectionsTreeStrategy";
|
|
7
|
+
export declare class EarthQuadTreeStrategy extends QuadTreeStrategy {
|
|
8
|
+
/**
|
|
9
|
+
* Current visible north pole nodes tree nodes array.
|
|
10
|
+
* @public
|
|
11
|
+
* @type {Node}
|
|
12
|
+
* @todo
|
|
13
|
+
*/
|
|
14
|
+
_visibleNodesNorth: Record<number, Node>;
|
|
15
|
+
/**
|
|
16
|
+
* Current visible south pole nodes tree nodes array.
|
|
17
|
+
* @public
|
|
18
|
+
* @type {Node}
|
|
19
|
+
* @todo
|
|
20
|
+
*/
|
|
21
|
+
_visibleNodesSouth: Record<number, Node>;
|
|
22
|
+
constructor(planet: Planet);
|
|
23
|
+
collectVisibleNode(node: Node): void;
|
|
24
|
+
protected _clearVisibleNodes(): void;
|
|
25
|
+
createEntitiCollectionsTreeStrategy(layer: Vector, nodeCapacity: number): EarthEntityCollectionsTreeStrategy;
|
|
26
|
+
init(): void;
|
|
27
|
+
getTileXY(lonLat: LonLat, zoom: number): [number, number, number, number];
|
|
28
|
+
getLonLatTileOffset(lonLat: LonLat, x: number, y: number, z: number, gridSize: number): [number, number];
|
|
29
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Extent } from "../../Extent";
|
|
2
|
+
import { Planet } from "../../scene/Planet";
|
|
3
|
+
import { LonLat } from "../../LonLat";
|
|
4
|
+
import { Entity } from "../../entity/Entity";
|
|
5
|
+
import { EntityCollection } from "../../entity/EntityCollection";
|
|
6
|
+
import { EntityCollectionNode, NodesDict } from "../EntityCollectionNode";
|
|
7
|
+
import { EquiEntityCollectionsTreeStrategy } from "./EquiEntityCollectionsTreeStrategy";
|
|
8
|
+
export declare class EquiEntityCollectionNodeLonLat extends EntityCollectionNode {
|
|
9
|
+
strategy: EquiEntityCollectionsTreeStrategy;
|
|
10
|
+
constructor(strategy: EquiEntityCollectionsTreeStrategy, partId: number, parent: EquiEntityCollectionNodeLonLat | null, extent: Extent, planet: Planet, zoom: number);
|
|
11
|
+
createChildrenNodes(): void;
|
|
12
|
+
protected _setExtentBounds(): void;
|
|
13
|
+
__setLonLat__(entity: Entity): LonLat;
|
|
14
|
+
isVisible(): boolean;
|
|
15
|
+
isInside(entity: Entity): boolean;
|
|
16
|
+
renderCollection(outArr: EntityCollection[], visibleNodes: NodesDict, renderingNode: number): void;
|
|
17
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Vector } from "../../layer/Vector";
|
|
2
|
+
import { Entity } from "../../entity/Entity";
|
|
3
|
+
import { EntityCollection } from "../../entity/EntityCollection";
|
|
4
|
+
import { EntityCollectionsTreeStrategy } from "../EntityCollectionsTreeStrategy";
|
|
5
|
+
import { EquiEntityCollectionNodeLonLat } from "./EquiEntityCollectionNodeLonLat";
|
|
6
|
+
export declare class EquiEntityCollectionsTreeStrategy extends EntityCollectionsTreeStrategy {
|
|
7
|
+
protected _entityCollectionsTreeWest: EquiEntityCollectionNodeLonLat;
|
|
8
|
+
protected _entityCollectionsTreeEast: EquiEntityCollectionNodeLonLat;
|
|
9
|
+
_renderingNodesWest: Record<number, boolean>;
|
|
10
|
+
_renderingNodesEast: Record<number, boolean>;
|
|
11
|
+
constructor(layer: Vector, nodeCapacity: number);
|
|
12
|
+
insertEntity(entity: Entity, rightNow?: boolean): void;
|
|
13
|
+
setPickingEnabled(pickingEnabled: boolean): void;
|
|
14
|
+
dispose(): void;
|
|
15
|
+
insertEntities(entitiesForTree: Entity[]): void;
|
|
16
|
+
collectVisibleEntityCollections(outArr: EntityCollection[]): void;
|
|
17
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Node } from "../Node";
|
|
2
|
+
import { Planet } from "../../scene/Planet";
|
|
3
|
+
import { QuadTreeStrategy } from "../QuadTreeStrategy";
|
|
4
|
+
import { LonLat } from "../../LonLat";
|
|
5
|
+
import { Vector } from "../../layer/Vector";
|
|
6
|
+
import { EntityCollectionsTreeStrategy } from "../EntityCollectionsTreeStrategy";
|
|
7
|
+
export declare class EquiQuadTreeStrategy extends QuadTreeStrategy {
|
|
8
|
+
private _westExtent;
|
|
9
|
+
private _eastExtent;
|
|
10
|
+
_visibleNodesWest: Record<number, Node>;
|
|
11
|
+
_visibleNodesEast: Record<number, Node>;
|
|
12
|
+
constructor(planet: Planet);
|
|
13
|
+
init(): void;
|
|
14
|
+
getTileXY(lonLat: LonLat, zoom: number): [number, number, number, number];
|
|
15
|
+
getLonLatTileOffset(lonLat: LonLat, x: number, y: number, z: number, gridSize: number): [number, number];
|
|
16
|
+
createEntitiCollectionsTreeStrategy(layer: Vector, nodeCapacity: number): EntityCollectionsTreeStrategy;
|
|
17
|
+
collectVisibleNode(node: Node): void;
|
|
18
|
+
protected _clearVisibleNodes(): void;
|
|
19
|
+
}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { EarthQuadTreeStrategy } from "./EarthQuadTreeStrategy";
|
|
2
|
-
import {
|
|
3
|
-
import { EPSG4326QuadTreeStrategy } from "./EPSG4326QuadTreeStrategy";
|
|
1
|
+
import { EarthQuadTreeStrategy } from "./earth/EarthQuadTreeStrategy";
|
|
2
|
+
import { EquiQuadTreeStrategy } from "./equi/EquiQuadTreeStrategy";
|
|
3
|
+
import { EPSG4326QuadTreeStrategy } from "./EPSG4326/EPSG4326QuadTreeStrategy";
|
|
4
4
|
import { QuadTreeStrategy } from "./QuadTreeStrategy";
|
|
5
|
-
import { Wgs84QuadTreeStrategy } from "./Wgs84QuadTreeStrategy";
|
|
5
|
+
import { Wgs84QuadTreeStrategy } from "./wgs84/Wgs84QuadTreeStrategy";
|
|
6
6
|
declare const quadTreeStrategyType: {
|
|
7
7
|
epsg4326: typeof EPSG4326QuadTreeStrategy;
|
|
8
8
|
earth: typeof EarthQuadTreeStrategy;
|
|
9
|
-
|
|
9
|
+
equi: typeof EquiQuadTreeStrategy;
|
|
10
10
|
wgs84: typeof Wgs84QuadTreeStrategy;
|
|
11
11
|
};
|
|
12
|
-
export { quadTreeStrategyType, QuadTreeStrategy, Wgs84QuadTreeStrategy,
|
|
12
|
+
export { quadTreeStrategyType, QuadTreeStrategy, Wgs84QuadTreeStrategy, EquiQuadTreeStrategy, EarthQuadTreeStrategy };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Planet } from "
|
|
2
|
-
import { QuadTreeStrategy } from "
|
|
1
|
+
import { Planet } from "../../scene/Planet";
|
|
2
|
+
import { QuadTreeStrategy } from "../QuadTreeStrategy";
|
|
3
3
|
export declare class Wgs84QuadTreeStrategy extends QuadTreeStrategy {
|
|
4
4
|
constructor(planet: Planet);
|
|
5
5
|
init(): void;
|
|
@@ -184,33 +184,6 @@ export declare class Planet extends RenderNode {
|
|
|
184
184
|
_renderedNodesInFrustum: Node[][];
|
|
185
185
|
_fadingNodes: Map<number, Node>;
|
|
186
186
|
_fadingNodesInFrustum: Node[][];
|
|
187
|
-
/**
|
|
188
|
-
* Current visible mercator segments tree nodes array.
|
|
189
|
-
* @public
|
|
190
|
-
* @type {Node}
|
|
191
|
-
*
|
|
192
|
-
* @todo
|
|
193
|
-
* _visibleNodes, _visibleNodesNorth and _visibleNodesSouth should
|
|
194
|
-
* be replaced to strategy and Vector layer reworked in collecting methods.
|
|
195
|
-
* _visibleNodes, and _visibleNodesNorth and South are used in Vector
|
|
196
|
-
* layer only, for entity terrain collision
|
|
197
|
-
*
|
|
198
|
-
*/
|
|
199
|
-
_visibleNodes: Record<number, Node>;
|
|
200
|
-
/**
|
|
201
|
-
* Current visible north pole nodes tree nodes array.
|
|
202
|
-
* @public
|
|
203
|
-
* @type {Node}
|
|
204
|
-
* @todo
|
|
205
|
-
*/
|
|
206
|
-
_visibleNodesNorth: Record<number, Node>;
|
|
207
|
-
/**
|
|
208
|
-
* Current visible south pole nodes tree nodes array.
|
|
209
|
-
* @public
|
|
210
|
-
* @type {Node}
|
|
211
|
-
* @todo
|
|
212
|
-
*/
|
|
213
|
-
_visibleNodesSouth: Record<number, Node>;
|
|
214
187
|
/**
|
|
215
188
|
* Layers activity lock.
|
|
216
189
|
* @public
|
|
@@ -277,7 +277,6 @@ declare class Segment {
|
|
|
277
277
|
colorPickingRendering(sh: Program, layerSlice: Layer[], sliceIndex: number, defaultTexture?: WebGLTextureExt | null, isOverlay?: boolean): void;
|
|
278
278
|
depthRendering(sh: Program, layerSlice: Layer[]): void;
|
|
279
279
|
protected _getIndexBuffer(): WebGLBufferExt;
|
|
280
|
-
_collectVisibleNodes(): void;
|
|
281
280
|
layerOverlap(layer: Layer): boolean;
|
|
282
281
|
getDefaultTexture(): WebGLTextureExt | null;
|
|
283
282
|
getExtentLonLat(): Extent;
|
|
@@ -25,10 +25,6 @@ declare class SegmentLonLat extends Segment {
|
|
|
25
25
|
protected _assignTileYIndexes(extent: Extent): void;
|
|
26
26
|
protected _projToDeg(lon: number, lat: number): LonLat;
|
|
27
27
|
protected _assignGlobalTextureCoordinates(): void;
|
|
28
|
-
/**
|
|
29
|
-
* @todo: replace to the strategy
|
|
30
|
-
*/
|
|
31
|
-
_collectVisibleNodes(): void;
|
|
32
28
|
/**
|
|
33
29
|
* @param layer
|
|
34
30
|
* @protected
|
|
@@ -2,9 +2,12 @@ import { Extent } from "../Extent";
|
|
|
2
2
|
import { Node } from "../quadTree/Node";
|
|
3
3
|
import { Planet } from "../scene/Planet";
|
|
4
4
|
import { SegmentLonLat } from "./SegmentLonLat";
|
|
5
|
-
|
|
5
|
+
import { WebGLTextureExt } from "../webgl/Handler";
|
|
6
|
+
export declare const POLE_PIECE_SIZE: number;
|
|
7
|
+
export declare class SegmentLonLatEqui extends SegmentLonLat {
|
|
6
8
|
constructor(node: Node, planet: Planet, tileZoom: number, extent: Extent);
|
|
7
9
|
protected _getMaxZoom(): number;
|
|
8
10
|
protected _assignTileYIndexes(extent: Extent): void;
|
|
9
11
|
protected _assignTileXIndexes(extent: Extent): void;
|
|
12
|
+
getDefaultTexture(): WebGLTextureExt | null;
|
|
10
13
|
}
|
|
@@ -10,6 +10,17 @@ export interface IRgbTerrainParams extends IGlobusTerrainParams {
|
|
|
10
10
|
minHeight?: number;
|
|
11
11
|
resolution?: number;
|
|
12
12
|
}
|
|
13
|
+
/**
|
|
14
|
+
* @class
|
|
15
|
+
* @extends {GlobusTerrain}
|
|
16
|
+
* @param {string} [name=""] - Terrain provider name.
|
|
17
|
+
* @param {IRgbTerrainParams} [options]:
|
|
18
|
+
* @param {boolean} [equalizeNormals=true] - Make normal equalization on the edges of the tiles.
|
|
19
|
+
* @param {string} [key=""] - API key.
|
|
20
|
+
* @param {number} [imageSize=256] - Image size.
|
|
21
|
+
* @param {number} [minHeight=-10000] - Minimal height for rgb to height converter.
|
|
22
|
+
* @param {number} [resolution=0.1] - Height converter resolution.
|
|
23
|
+
*/
|
|
13
24
|
declare class RgbTerrain extends GlobusTerrain {
|
|
14
25
|
protected _imageSize: number;
|
|
15
26
|
protected _ctx: CanvasRenderingContext2D;
|