@ifc-lite/bcf 2.0.0 → 2.0.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/dist/numeric.d.ts CHANGED
@@ -1,11 +1,19 @@
1
1
  /**
2
- * Numeric boundary helpers for BCF.
2
+ * Numeric boundary helpers for BCF — both directions.
3
3
  *
4
4
  * A `.bcfzip` is an untrusted file, and every number in it arrives through a
5
5
  * bare `parseFloat`. `parseFloat` has no failure value that is out of band:
6
6
  * `"NaN"` parses to `NaN`, and `"1e999"` — a perfectly well-formed decimal
7
7
  * literal — parses to `Infinity`. Both then flow into the viewer camera, which
8
8
  * stores a pose verbatim by design.
9
+ *
10
+ * The WRITE side is the same boundary seen from the other end, and it is the
11
+ * half that was missing: `${Infinity}` stringifies to `"Infinity"`, which is
12
+ * not in `xs:double`'s lexical space (XSD 1.0 spells the infinities `INF` and
13
+ * `-INF`), so every non-finite number the writer touched produced an archive
14
+ * xmllint rejects. Keeping both halves in one file is deliberate: the read
15
+ * guard and the write guard have to agree on what "a usable number" means, and
16
+ * they can only be checked against each other while they sit side by side.
9
17
  */
10
18
  /**
11
19
  * `parseFloat`, but a value that is not a real number is reported as
@@ -41,4 +49,59 @@ export declare function parseFiniteFloat(raw: string): number | undefined;
41
49
  * that has never been positioned reports).
42
50
  */
43
51
  export declare function usableTargetDistance(distance: number | undefined, fallback: number): number;
52
+ /**
53
+ * A number on its way INTO an archive, as the text an XSD numeric type will
54
+ * accept — or an error naming what was wrong and where.
55
+ *
56
+ * FINITENESS, not sign, is the property. That distinction is the whole bug:
57
+ * `Infinity > 0` is `true`, so a positivity check passes it, and
58
+ * `Number.isNaN(Number('Infinity'))` is `false`, so an `isNaN` check passes it
59
+ * too. Only `Number.isFinite` rejects the pair, and each of the three
60
+ * non-finite values fails the schemas a different way, which is why none of
61
+ * them can be left to a facet:
62
+ *
63
+ * - `Infinity`/`-Infinity` stringify to `"Infinity"`/`"-Infinity"`, which
64
+ * `xs:double` does not admit at all (XSD 1.0's lexical space spells the
65
+ * infinities `INF` and `-INF`), so they are rejected as "not a valid value of
66
+ * the atomic type" wherever they appear.
67
+ * - `NaN` stringifies to `"NaN"`, which `xs:double` DOES admit. A bare
68
+ * `xs:double` element — every camera/line/clipping-plane/bitmap coordinate,
69
+ * `ViewToWorldScale`, `Bitmap/Height` — therefore validates while carrying a
70
+ * number no consumer can use, and our own reader drops it on the way back in
71
+ * ({@link parseFiniteFloat}). Schema validity is not the bar here; a value
72
+ * that survives the round trip is.
73
+ *
74
+ * Refusing is the same policy the rest of the writer already applies to
75
+ * unrepresentable input (`writer-camera.ts`'s camera-choice and AspectRatio
76
+ * checks, `writer.ts`'s `Topic/@TopicType` check): we do not silently
77
+ * substitute a number the caller never chose, and we do not emit markup a
78
+ * conforming reader may reject.
79
+ */
80
+ export declare function xsdDouble(value: number, element: string, where: string): string;
81
+ /**
82
+ * The `<X>/<Y>/<Z>` triple shared by `Point` and `Direction`, wrapped in
83
+ * `tag`, with every component checked by {@link xsdDouble}.
84
+ *
85
+ * Both schemas declare `Point` and `Direction` as three `xs:double` children in
86
+ * that order, and both are reached from four places (camera vectors, `Line`,
87
+ * `ClippingPlane`, `Bitmap`). Emitting them from one function is what stops a
88
+ * guard from being added to three of the four.
89
+ */
90
+ export declare function xsdPointElement(tag: string, point: {
91
+ x: number;
92
+ y: number;
93
+ z: number;
94
+ }, indent: string, where: string): string;
95
+ /**
96
+ * A number on its way into an `xs:int` element (`Topic/Index` is the only one
97
+ * the writer emits).
98
+ *
99
+ * `xs:int` is narrower than `xs:double` in two further ways a finiteness check
100
+ * alone would miss: `1.5` is not an `xs:int` ("'1.5' is not a valid value of
101
+ * the atomic type 'xs:int'"), and the type is 32-bit, so a whole number outside
102
+ * [-2^31, 2^31-1] is out of range too. `Number.isInteger` is false for `NaN`
103
+ * and both infinities, so finiteness comes with it rather than needing its own
104
+ * branch.
105
+ */
106
+ export declare function xsdInt(value: number, element: string, where: string): string;
44
107
  //# sourceMappingURL=numeric.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"numeric.d.ts","sourceRoot":"","sources":["../src/numeric.ts"],"names":[],"mappings":"AAIA;;;;;;;;GAQG;AAEH;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAGhE;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE3F"}
1
+ {"version":3,"file":"numeric.d.ts","sourceRoot":"","sources":["../src/numeric.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;GAgBG;AAEH;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAGhE;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE3F;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAU/E;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,MAAM,EACX,KAAK,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,EAC1C,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,GACZ,MAAM,CAQR;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAS5E"}
package/dist/numeric.js CHANGED
@@ -2,13 +2,21 @@
2
2
  * License, v. 2.0. If a copy of the MPL was not distributed with this
3
3
  * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4
4
  /**
5
- * Numeric boundary helpers for BCF.
5
+ * Numeric boundary helpers for BCF — both directions.
6
6
  *
7
7
  * A `.bcfzip` is an untrusted file, and every number in it arrives through a
8
8
  * bare `parseFloat`. `parseFloat` has no failure value that is out of band:
9
9
  * `"NaN"` parses to `NaN`, and `"1e999"` — a perfectly well-formed decimal
10
10
  * literal — parses to `Infinity`. Both then flow into the viewer camera, which
11
11
  * stores a pose verbatim by design.
12
+ *
13
+ * The WRITE side is the same boundary seen from the other end, and it is the
14
+ * half that was missing: `${Infinity}` stringifies to `"Infinity"`, which is
15
+ * not in `xs:double`'s lexical space (XSD 1.0 spells the infinities `INF` and
16
+ * `-INF`), so every non-finite number the writer touched produced an archive
17
+ * xmllint rejects. Keeping both halves in one file is deliberate: the read
18
+ * guard and the write guard have to agree on what "a usable number" means, and
19
+ * they can only be checked against each other while they sit side by side.
12
20
  */
13
21
  /**
14
22
  * `parseFloat`, but a value that is not a real number is reported as
@@ -49,4 +57,76 @@ export function parseFiniteFloat(raw) {
49
57
  export function usableTargetDistance(distance, fallback) {
50
58
  return distance !== undefined && Number.isFinite(distance) && distance > 0 ? distance : fallback;
51
59
  }
60
+ /**
61
+ * A number on its way INTO an archive, as the text an XSD numeric type will
62
+ * accept — or an error naming what was wrong and where.
63
+ *
64
+ * FINITENESS, not sign, is the property. That distinction is the whole bug:
65
+ * `Infinity > 0` is `true`, so a positivity check passes it, and
66
+ * `Number.isNaN(Number('Infinity'))` is `false`, so an `isNaN` check passes it
67
+ * too. Only `Number.isFinite` rejects the pair, and each of the three
68
+ * non-finite values fails the schemas a different way, which is why none of
69
+ * them can be left to a facet:
70
+ *
71
+ * - `Infinity`/`-Infinity` stringify to `"Infinity"`/`"-Infinity"`, which
72
+ * `xs:double` does not admit at all (XSD 1.0's lexical space spells the
73
+ * infinities `INF` and `-INF`), so they are rejected as "not a valid value of
74
+ * the atomic type" wherever they appear.
75
+ * - `NaN` stringifies to `"NaN"`, which `xs:double` DOES admit. A bare
76
+ * `xs:double` element — every camera/line/clipping-plane/bitmap coordinate,
77
+ * `ViewToWorldScale`, `Bitmap/Height` — therefore validates while carrying a
78
+ * number no consumer can use, and our own reader drops it on the way back in
79
+ * ({@link parseFiniteFloat}). Schema validity is not the bar here; a value
80
+ * that survives the round trip is.
81
+ *
82
+ * Refusing is the same policy the rest of the writer already applies to
83
+ * unrepresentable input (`writer-camera.ts`'s camera-choice and AspectRatio
84
+ * checks, `writer.ts`'s `Topic/@TopicType` check): we do not silently
85
+ * substitute a number the caller never chose, and we do not emit markup a
86
+ * conforming reader may reject.
87
+ */
88
+ export function xsdDouble(value, element, where) {
89
+ if (!Number.isFinite(value)) {
90
+ throw new Error(`BCF requires a finite number for ${element} (${where} has ${value}). ` +
91
+ `XSD numeric types cannot express Infinity, -Infinity or NaN, so writing ` +
92
+ `one produces an archive that fails schema validation or loses the value ` +
93
+ `on read. Supply a finite number before writing.`);
94
+ }
95
+ return String(value);
96
+ }
97
+ /**
98
+ * The `<X>/<Y>/<Z>` triple shared by `Point` and `Direction`, wrapped in
99
+ * `tag`, with every component checked by {@link xsdDouble}.
100
+ *
101
+ * Both schemas declare `Point` and `Direction` as three `xs:double` children in
102
+ * that order, and both are reached from four places (camera vectors, `Line`,
103
+ * `ClippingPlane`, `Bitmap`). Emitting them from one function is what stops a
104
+ * guard from being added to three of the four.
105
+ */
106
+ export function xsdPointElement(tag, point, indent, where) {
107
+ return (`\n${indent}<${tag}>` +
108
+ `\n${indent} <X>${xsdDouble(point.x, `${tag}/X`, where)}</X>` +
109
+ `\n${indent} <Y>${xsdDouble(point.y, `${tag}/Y`, where)}</Y>` +
110
+ `\n${indent} <Z>${xsdDouble(point.z, `${tag}/Z`, where)}</Z>` +
111
+ `\n${indent}</${tag}>`);
112
+ }
113
+ /**
114
+ * A number on its way into an `xs:int` element (`Topic/Index` is the only one
115
+ * the writer emits).
116
+ *
117
+ * `xs:int` is narrower than `xs:double` in two further ways a finiteness check
118
+ * alone would miss: `1.5` is not an `xs:int` ("'1.5' is not a valid value of
119
+ * the atomic type 'xs:int'"), and the type is 32-bit, so a whole number outside
120
+ * [-2^31, 2^31-1] is out of range too. `Number.isInteger` is false for `NaN`
121
+ * and both infinities, so finiteness comes with it rather than needing its own
122
+ * branch.
123
+ */
124
+ export function xsdInt(value, element, where) {
125
+ if (!Number.isInteger(value) || value < -2147483648 || value > 2147483647) {
126
+ throw new Error(`BCF requires a 32-bit integer for ${element} (${where} has ${value}). ` +
127
+ `xs:int admits neither a fractional value, a non-finite one, nor one ` +
128
+ `outside [-2147483648, 2147483647].`);
129
+ }
130
+ return String(value);
131
+ }
52
132
  //# sourceMappingURL=numeric.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"numeric.js","sourceRoot":"","sources":["../src/numeric.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D;;;;;;;;GAQG;AAEH;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAW;IAC1C,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;IAC9B,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACpD,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,oBAAoB,CAAC,QAA4B,EAAE,QAAgB;IACjF,OAAO,QAAQ,KAAK,SAAS,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;AACnG,CAAC"}
1
+ {"version":3,"file":"numeric.js","sourceRoot":"","sources":["../src/numeric.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D;;;;;;;;;;;;;;;;GAgBG;AAEH;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAW;IAC1C,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;IAC9B,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACpD,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,oBAAoB,CAAC,QAA4B,EAAE,QAAgB;IACjF,OAAO,QAAQ,KAAK,SAAS,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;AACnG,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,UAAU,SAAS,CAAC,KAAa,EAAE,OAAe,EAAE,KAAa;IACrE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CACb,oCAAoC,OAAO,KAAK,KAAK,QAAQ,KAAK,KAAK;YACrE,0EAA0E;YAC1E,0EAA0E;YAC1E,iDAAiD,CACpD,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe,CAC7B,GAAW,EACX,KAA0C,EAC1C,MAAc,EACd,KAAa;IAEb,OAAO,CACL,KAAK,MAAM,IAAI,GAAG,GAAG;QACrB,KAAK,MAAM,QAAQ,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,IAAI,EAAE,KAAK,CAAC,MAAM;QAC9D,KAAK,MAAM,QAAQ,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,IAAI,EAAE,KAAK,CAAC,MAAM;QAC9D,KAAK,MAAM,QAAQ,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,IAAI,EAAE,KAAK,CAAC,MAAM;QAC9D,KAAK,MAAM,KAAK,GAAG,GAAG,CACvB,CAAC;AACJ,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,MAAM,CAAC,KAAa,EAAE,OAAe,EAAE,KAAa;IAClE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,UAAU,IAAI,KAAK,GAAG,UAAU,EAAE,CAAC;QAC1E,MAAM,IAAI,KAAK,CACb,qCAAqC,OAAO,KAAK,KAAK,QAAQ,KAAK,KAAK;YACtE,sEAAsE;YACtE,oCAAoC,CACvC,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Writing a viewpoint's camera.
3
+ *
4
+ * Split out of `writer.ts` because the camera is the one part of
5
+ * `VisualizationInfo` whose SHAPE, CARDINALITY and ORDER all differ between
6
+ * BCF 2.1 and BCF 3.0, and keeping the three rules in one place is what makes
7
+ * them checkable against the `visinfo.xsd` copies under
8
+ * `__fixtures__/schemas/`. The parity is
9
+ * pinned by `schema-validation.test.ts` > "BCF camera cardinality and order",
10
+ * which re-derives the rules from the vendored schemas before asserting them.
11
+ */
12
+ import type { BCFViewpoint, BCFPerspectiveCamera, BCFOrthogonalCamera } from './types.js';
13
+ /**
14
+ * Enforce each version's rule for how many cameras a viewpoint may carry.
15
+ *
16
+ * The two schemas differ, and the emitted ORDER matters in one of them:
17
+ *
18
+ * - v2_1/visinfo.xsd puts `OrthogonalCamera` and `PerspectiveCamera` in
19
+ * `VisualizationInfo`'s `xs:sequence`, both `minOccurs="0"`. Either, both or
20
+ * neither may appear -- but an `xs:sequence` fixes the order, and the
21
+ * schema declares the orthogonal camera FIRST. Emitting the perspective
22
+ * camera first made a two-camera 2.1 viewpoint schema-invalid
23
+ * ("Element 'OrthogonalCamera': This element is not expected"), which is
24
+ * why `writer.ts`'s `writeViewpointFiles` now writes orthogonal first for both
25
+ * versions -- the order is required by 2.1 and harmless under 3.0's choice.
26
+ * - v3_0/visinfo.xsd replaced that pair with an `<xs:choice>` carrying no
27
+ * `minOccurs` and no `maxOccurs`, so both default to 1: EXACTLY ONE camera,
28
+ * and it is required. Two cameras and zero cameras are each invalid there.
29
+ *
30
+ * We refuse the 3.0 violations rather than guessing which camera the caller
31
+ * meant, or inventing one for a viewpoint that has none -- same policy as
32
+ * {@link requireAspectRatioElement} and the `Topic/@TopicType` checks in
33
+ * `writer.ts`'s `writeMarkupFile`. Silently dropping one of two cameras would discard
34
+ * a view the caller chose; silently emitting neither writes an archive that no
35
+ * conforming BCF 3.0 reader has to accept.
36
+ */
37
+ export declare function requireCameraChoice(viewpoint: BCFViewpoint, version: '2.1' | '3.0'): void;
38
+ /**
39
+ * Write perspective camera XML
40
+ */
41
+ export declare function writePerspectiveCamera(camera: BCFPerspectiveCamera, version: '2.1' | '3.0', viewpointGuid: string): string;
42
+ /**
43
+ * Write orthogonal camera XML
44
+ */
45
+ export declare function writeOrthogonalCamera(camera: BCFOrthogonalCamera, version: '2.1' | '3.0', viewpointGuid: string): string;
46
+ //# sourceMappingURL=writer-camera.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"writer-camera.d.ts","sourceRoot":"","sources":["../src/writer-camera.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAG1F;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,KAAK,GAAG,KAAK,GAAG,IAAI,CAUzF;AAiCD;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,oBAAoB,EAC5B,OAAO,EAAE,KAAK,GAAG,KAAK,EACtB,aAAa,EAAE,MAAM,GACpB,MAAM,CAMR;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,mBAAmB,EAC3B,OAAO,EAAE,KAAK,GAAG,KAAK,EACtB,aAAa,EAAE,MAAM,GACpB,MAAM,CAMR"}
@@ -0,0 +1,102 @@
1
+ /* This Source Code Form is subject to the terms of the Mozilla Public
2
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
3
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4
+ import { xsdDouble, xsdPointElement } from './numeric.js';
5
+ /**
6
+ * Enforce each version's rule for how many cameras a viewpoint may carry.
7
+ *
8
+ * The two schemas differ, and the emitted ORDER matters in one of them:
9
+ *
10
+ * - v2_1/visinfo.xsd puts `OrthogonalCamera` and `PerspectiveCamera` in
11
+ * `VisualizationInfo`'s `xs:sequence`, both `minOccurs="0"`. Either, both or
12
+ * neither may appear -- but an `xs:sequence` fixes the order, and the
13
+ * schema declares the orthogonal camera FIRST. Emitting the perspective
14
+ * camera first made a two-camera 2.1 viewpoint schema-invalid
15
+ * ("Element 'OrthogonalCamera': This element is not expected"), which is
16
+ * why `writer.ts`'s `writeViewpointFiles` now writes orthogonal first for both
17
+ * versions -- the order is required by 2.1 and harmless under 3.0's choice.
18
+ * - v3_0/visinfo.xsd replaced that pair with an `<xs:choice>` carrying no
19
+ * `minOccurs` and no `maxOccurs`, so both default to 1: EXACTLY ONE camera,
20
+ * and it is required. Two cameras and zero cameras are each invalid there.
21
+ *
22
+ * We refuse the 3.0 violations rather than guessing which camera the caller
23
+ * meant, or inventing one for a viewpoint that has none -- same policy as
24
+ * {@link requireAspectRatioElement} and the `Topic/@TopicType` checks in
25
+ * `writer.ts`'s `writeMarkupFile`. Silently dropping one of two cameras would discard
26
+ * a view the caller chose; silently emitting neither writes an archive that no
27
+ * conforming BCF 3.0 reader has to accept.
28
+ */
29
+ export function requireCameraChoice(viewpoint, version) {
30
+ if (version !== '3.0')
31
+ return;
32
+ const count = (viewpoint.orthogonalCamera ? 1 : 0) + (viewpoint.perspectiveCamera ? 1 : 0);
33
+ if (count === 1)
34
+ return;
35
+ throw new Error(`BCF 3.0 requires exactly one camera per viewpoint (viewpoint "${viewpoint.guid}" has ` +
36
+ `${count === 0 ? 'none' : 'both an orthogonalCamera and a perspectiveCamera'}). ` +
37
+ `visinfo.xsd declares OrthogonalCamera and PerspectiveCamera as an xs:choice, so ` +
38
+ `set exactly one before writing a 3.0 file.`);
39
+ }
40
+ /**
41
+ * Require a FINITE, positive AspectRatio for a BCF 3.0 camera and return the
42
+ * element to append.
43
+ *
44
+ * v3_0/visinfo.xsd adds `<AspectRatio>` (type `PositiveDouble`, i.e.
45
+ * `xs:double` with `minExclusive value="0"`) as a REQUIRED, no-minOccurs
46
+ * child of both `OrthogonalCamera` and `PerspectiveCamera`. 2.1 has no such
47
+ * element. We refuse to invent a value (there is no safe default aspect
48
+ * ratio) because that would assert a value the caller never chose; instead
49
+ * we fail the write so the caller supplies one -- same policy as the
50
+ * `Topic/@TopicType`/`Topic/@TopicStatus` checks in `writer.ts`'s `writeMarkupFile`.
51
+ *
52
+ * BOTH halves of `PositiveDouble` are checked here, and the positivity test
53
+ * alone did not cover them: `Infinity > 0` is `true`, so `Infinity` walked
54
+ * past this guard and was emitted as `<AspectRatio>Infinity</AspectRatio>`,
55
+ * which xmllint rejects with "'Infinity' is not a valid value of the atomic
56
+ * type 'PositiveDouble'". `xsdDouble` is what makes the `xs:double` half of
57
+ * the claim true; the `> 0` below is the `minExclusive` facet.
58
+ */
59
+ function requireAspectRatioElement(aspectRatio, viewpointGuid) {
60
+ const where = `viewpoint "${viewpointGuid}"`;
61
+ if (aspectRatio === undefined || !(aspectRatio > 0)) {
62
+ throw new Error(`BCF 3.0 requires a positive Camera/AspectRatio (${where} has ` +
63
+ `${aspectRatio === undefined ? 'none' : aspectRatio}). ` +
64
+ `Set the camera's aspectRatio before writing a 3.0 file.`);
65
+ }
66
+ return `\n <AspectRatio>${xsdDouble(aspectRatio, 'Camera/AspectRatio', where)}</AspectRatio>`;
67
+ }
68
+ /**
69
+ * Write perspective camera XML
70
+ */
71
+ export function writePerspectiveCamera(camera, version, viewpointGuid) {
72
+ const aspectRatioElement = version === '3.0' ? requireAspectRatioElement(camera.aspectRatio, viewpointGuid) : '';
73
+ const where = `viewpoint "${viewpointGuid}"`;
74
+ return `\n <PerspectiveCamera>${cameraVectors(camera, where)}
75
+ <FieldOfView>${xsdDouble(camera.fieldOfView, 'PerspectiveCamera/FieldOfView', where)}</FieldOfView>${aspectRatioElement}
76
+ </PerspectiveCamera>`;
77
+ }
78
+ /**
79
+ * Write orthogonal camera XML
80
+ */
81
+ export function writeOrthogonalCamera(camera, version, viewpointGuid) {
82
+ const aspectRatioElement = version === '3.0' ? requireAspectRatioElement(camera.aspectRatio, viewpointGuid) : '';
83
+ const where = `viewpoint "${viewpointGuid}"`;
84
+ return `\n <OrthogonalCamera>${cameraVectors(camera, where)}
85
+ <ViewToWorldScale>${xsdDouble(camera.viewToWorldScale, 'OrthogonalCamera/ViewToWorldScale', where)}</ViewToWorldScale>${aspectRatioElement}
86
+ </OrthogonalCamera>`;
87
+ }
88
+ /**
89
+ * The three vectors both camera types open with, in the order both schemas'
90
+ * `xs:sequence` declares them.
91
+ *
92
+ * Identical in `OrthogonalCamera` and `PerspectiveCamera` and in 2.1 and 3.0 --
93
+ * the cameras differ only in the single element that follows (`ViewToWorldScale`
94
+ * vs `FieldOfView`). Writing them once is what makes "every camera coordinate
95
+ * is checked" a property of the code rather than of six copied templates.
96
+ */
97
+ function cameraVectors(camera, where) {
98
+ return (xsdPointElement('CameraViewPoint', camera.cameraViewPoint, ' ', where) +
99
+ xsdPointElement('CameraDirection', camera.cameraDirection, ' ', where) +
100
+ xsdPointElement('CameraUpVector', camera.cameraUpVector, ' ', where));
101
+ }
102
+ //# sourceMappingURL=writer-camera.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"writer-camera.js","sourceRoot":"","sources":["../src/writer-camera.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAe/D,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE1D;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,UAAU,mBAAmB,CAAC,SAAuB,EAAE,OAAsB;IACjF,IAAI,OAAO,KAAK,KAAK;QAAE,OAAO;IAC9B,MAAM,KAAK,GAAG,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3F,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO;IACxB,MAAM,IAAI,KAAK,CACb,iEAAiE,SAAS,CAAC,IAAI,QAAQ;QACrF,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,kDAAkD,KAAK;QACjF,kFAAkF;QAClF,4CAA4C,CAC/C,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,SAAS,yBAAyB,CAAC,WAA+B,EAAE,aAAqB;IACvF,MAAM,KAAK,GAAG,cAAc,aAAa,GAAG,CAAC;IAC7C,IAAI,WAAW,KAAK,SAAS,IAAI,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,KAAK,CACb,mDAAmD,KAAK,OAAO;YAC7D,GAAG,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,KAAK;YACxD,yDAAyD,CAC5D,CAAC;IACJ,CAAC;IACD,OAAO,sBAAsB,SAAS,CAAC,WAAW,EAAE,oBAAoB,EAAE,KAAK,CAAC,gBAAgB,CAAC;AACnG,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CACpC,MAA4B,EAC5B,OAAsB,EACtB,aAAqB;IAErB,MAAM,kBAAkB,GAAG,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,yBAAyB,CAAC,MAAM,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACjH,MAAM,KAAK,GAAG,cAAc,aAAa,GAAG,CAAC;IAC7C,OAAO,0BAA0B,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC;mBAC5C,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,+BAA+B,EAAE,KAAK,CAAC,iBAAiB,kBAAkB;uBACpG,CAAC;AACxB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CACnC,MAA2B,EAC3B,OAAsB,EACtB,aAAqB;IAErB,MAAM,kBAAkB,GAAG,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,yBAAyB,CAAC,MAAM,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACjH,MAAM,KAAK,GAAG,cAAc,aAAa,GAAG,CAAC;IAC7C,OAAO,yBAAyB,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC;wBACtC,SAAS,CAAC,MAAM,CAAC,gBAAgB,EAAE,mCAAmC,EAAE,KAAK,CAAC,sBAAsB,kBAAkB;sBACxH,CAAC;AACvB,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,aAAa,CACpB,MAAkD,EAClD,KAAa;IAEb,OAAO,CACL,eAAe,CAAC,iBAAiB,EAAE,MAAM,CAAC,eAAe,EAAE,MAAM,EAAE,KAAK,CAAC;QACzE,eAAe,CAAC,iBAAiB,EAAE,MAAM,CAAC,eAAe,EAAE,MAAM,EAAE,KAAK,CAAC;QACzE,eAAe,CAAC,gBAAgB,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,EAAE,KAAK,CAAC,CACxE,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"writer.d.ts","sourceRoot":"","sources":["../src/writer.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EACV,UAAU,EAmBX,MAAM,YAAY,CAAC;AAGpB;;;;;GAKG;AACH,wBAAsB,QAAQ,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAuBjE"}
1
+ {"version":3,"file":"writer.d.ts","sourceRoot":"","sources":["../src/writer.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EACV,UAAU,EAiBX,MAAM,YAAY,CAAC;AASpB;;;;;GAKG;AACH,wBAAsB,QAAQ,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAuBjE"}
package/dist/writer.js CHANGED
@@ -7,6 +7,8 @@
7
7
  * Creates .bcfzip files from BCFProject structure
8
8
  */
9
9
  import JSZip from 'jszip';
10
+ import { requireCameraChoice, writeOrthogonalCamera, writePerspectiveCamera, } from './writer-camera.js';
11
+ import { xsdDouble, xsdInt, xsdPointElement } from './numeric.js';
10
12
  import { generateUuid } from '@ifc-lite/encoding';
11
13
  /**
12
14
  * Write a BCFProject to a .bcfzip file
@@ -229,7 +231,8 @@ function writeMarkupFile(folder, topic, version, viewpointBaseNames) {
229
231
  content += `\n <Priority>${escapeXml(topic.priority)}</Priority>`;
230
232
  }
231
233
  if (topic.index !== undefined) {
232
- content += `\n <Index>${topic.index}</Index>`;
234
+ // `Index` is the writer's only xs:int; see xsdInt for what that excludes.
235
+ content += `\n <Index>${xsdInt(topic.index, 'Topic/Index', `topic "${topic.guid}"`)}</Index>`;
233
236
  }
234
237
  if (topic.labels && topic.labels.length > 0) {
235
238
  // BCF 3.0's markup.xsd wraps labels in ONE `<Labels>` container holding
@@ -394,19 +397,24 @@ async function writeViewpointFiles(folder, viewpoint, baseName, version) {
394
397
  if (viewpoint.components) {
395
398
  content += writeComponents(viewpoint.components, version);
396
399
  }
397
- // Write perspective camera
398
- if (viewpoint.perspectiveCamera) {
399
- content += writePerspectiveCamera(viewpoint.perspectiveCamera, version, viewpoint.guid);
400
- }
401
- // Write orthogonal camera
400
+ // Every number below reaches an XSD numeric type, so each goes through
401
+ // `numeric.ts`'s write-side guards; `where` is what puts the offending
402
+ // viewpoint's guid in the error, as the camera checks already do.
403
+ const where = `viewpoint "${viewpoint.guid}"`;
404
+ // Write the cameras. ORTHOGONAL FIRST -- see requireCameraChoice for why the
405
+ // order is not free, and for the 3.0 cardinality rule enforced here.
406
+ requireCameraChoice(viewpoint, version);
402
407
  if (viewpoint.orthogonalCamera) {
403
408
  content += writeOrthogonalCamera(viewpoint.orthogonalCamera, version, viewpoint.guid);
404
409
  }
410
+ if (viewpoint.perspectiveCamera) {
411
+ content += writePerspectiveCamera(viewpoint.perspectiveCamera, version, viewpoint.guid);
412
+ }
405
413
  // Write lines
406
414
  if (viewpoint.lines && viewpoint.lines.length > 0) {
407
415
  content += `\n <Lines>`;
408
416
  for (const line of viewpoint.lines) {
409
- content += writeLine(line);
417
+ content += writeLine(line, where);
410
418
  }
411
419
  content += `\n </Lines>`;
412
420
  }
@@ -414,7 +422,7 @@ async function writeViewpointFiles(folder, viewpoint, baseName, version) {
414
422
  if (viewpoint.clippingPlanes && viewpoint.clippingPlanes.length > 0) {
415
423
  content += `\n <ClippingPlanes>`;
416
424
  for (const plane of viewpoint.clippingPlanes) {
417
- content += writeClippingPlane(plane);
425
+ content += writeClippingPlane(plane, where);
418
426
  }
419
427
  content += `\n </ClippingPlanes>`;
420
428
  }
@@ -430,13 +438,13 @@ async function writeViewpointFiles(folder, viewpoint, baseName, version) {
430
438
  if (version === '3.0') {
431
439
  content += `\n <Bitmaps>`;
432
440
  for (const bitmap of viewpoint.bitmaps) {
433
- content += writeBitmap(bitmap, version);
441
+ content += writeBitmap(bitmap, version, where);
434
442
  }
435
443
  content += `\n </Bitmaps>`;
436
444
  }
437
445
  else {
438
446
  for (const bitmap of viewpoint.bitmaps) {
439
- content += writeBitmap(bitmap, version);
447
+ content += writeBitmap(bitmap, version, where);
440
448
  }
441
449
  }
442
450
  }
@@ -600,105 +608,18 @@ function writeColoringEntry(coloring, version) {
600
608
  content += `\n </Color>`;
601
609
  return content;
602
610
  }
603
- /**
604
- * Require a positive AspectRatio for a BCF 3.0 camera and return the element
605
- * to append.
606
- *
607
- * v3_0/visinfo.xsd adds `<AspectRatio>` (type `PositiveDouble`, i.e.
608
- * `xs:double` with `minExclusive value="0"`) as a REQUIRED, no-minOccurs
609
- * child of both `OrthogonalCamera` and `PerspectiveCamera`. 2.1 has no such
610
- * element. We refuse to invent a value (there is no safe default aspect
611
- * ratio) because that would assert a value the caller never chose; instead
612
- * we fail the write so the caller supplies one -- same policy as the
613
- * `Topic/@TopicType`/`Topic/@TopicStatus` checks in {@link writeMarkupFile}.
614
- */
615
- function requireAspectRatioElement(aspectRatio, viewpointGuid) {
616
- if (aspectRatio === undefined || !(aspectRatio > 0)) {
617
- throw new Error(`BCF 3.0 requires a positive Camera/AspectRatio (viewpoint "${viewpointGuid}" has none). ` +
618
- `Set the camera's aspectRatio before writing a 3.0 file.`);
619
- }
620
- return `\n <AspectRatio>${aspectRatio}</AspectRatio>`;
621
- }
622
- /**
623
- * Write perspective camera XML
624
- */
625
- function writePerspectiveCamera(camera, version, viewpointGuid) {
626
- const aspectRatioElement = version === '3.0' ? requireAspectRatioElement(camera.aspectRatio, viewpointGuid) : '';
627
- return `\n <PerspectiveCamera>
628
- <CameraViewPoint>
629
- <X>${camera.cameraViewPoint.x}</X>
630
- <Y>${camera.cameraViewPoint.y}</Y>
631
- <Z>${camera.cameraViewPoint.z}</Z>
632
- </CameraViewPoint>
633
- <CameraDirection>
634
- <X>${camera.cameraDirection.x}</X>
635
- <Y>${camera.cameraDirection.y}</Y>
636
- <Z>${camera.cameraDirection.z}</Z>
637
- </CameraDirection>
638
- <CameraUpVector>
639
- <X>${camera.cameraUpVector.x}</X>
640
- <Y>${camera.cameraUpVector.y}</Y>
641
- <Z>${camera.cameraUpVector.z}</Z>
642
- </CameraUpVector>
643
- <FieldOfView>${camera.fieldOfView}</FieldOfView>${aspectRatioElement}
644
- </PerspectiveCamera>`;
645
- }
646
- /**
647
- * Write orthogonal camera XML
648
- */
649
- function writeOrthogonalCamera(camera, version, viewpointGuid) {
650
- const aspectRatioElement = version === '3.0' ? requireAspectRatioElement(camera.aspectRatio, viewpointGuid) : '';
651
- return `\n <OrthogonalCamera>
652
- <CameraViewPoint>
653
- <X>${camera.cameraViewPoint.x}</X>
654
- <Y>${camera.cameraViewPoint.y}</Y>
655
- <Z>${camera.cameraViewPoint.z}</Z>
656
- </CameraViewPoint>
657
- <CameraDirection>
658
- <X>${camera.cameraDirection.x}</X>
659
- <Y>${camera.cameraDirection.y}</Y>
660
- <Z>${camera.cameraDirection.z}</Z>
661
- </CameraDirection>
662
- <CameraUpVector>
663
- <X>${camera.cameraUpVector.x}</X>
664
- <Y>${camera.cameraUpVector.y}</Y>
665
- <Z>${camera.cameraUpVector.z}</Z>
666
- </CameraUpVector>
667
- <ViewToWorldScale>${camera.viewToWorldScale}</ViewToWorldScale>${aspectRatioElement}
668
- </OrthogonalCamera>`;
669
- }
670
611
  /**
671
612
  * Write line XML
672
613
  */
673
- function writeLine(line) {
674
- return `\n <Line>
675
- <StartPoint>
676
- <X>${line.startPoint.x}</X>
677
- <Y>${line.startPoint.y}</Y>
678
- <Z>${line.startPoint.z}</Z>
679
- </StartPoint>
680
- <EndPoint>
681
- <X>${line.endPoint.x}</X>
682
- <Y>${line.endPoint.y}</Y>
683
- <Z>${line.endPoint.z}</Z>
684
- </EndPoint>
614
+ function writeLine(line, where) {
615
+ return `\n <Line>${xsdPointElement('StartPoint', line.startPoint, ' ', where)}${xsdPointElement('EndPoint', line.endPoint, ' ', where)}
685
616
  </Line>`;
686
617
  }
687
618
  /**
688
619
  * Write clipping plane XML
689
620
  */
690
- function writeClippingPlane(plane) {
691
- return `\n <ClippingPlane>
692
- <Location>
693
- <X>${plane.location.x}</X>
694
- <Y>${plane.location.y}</Y>
695
- <Z>${plane.location.z}</Z>
696
- </Location>
697
- <Direction>
698
- <X>${plane.direction.x}</X>
699
- <Y>${plane.direction.y}</Y>
700
- <Z>${plane.direction.z}</Z>
701
- </Direction>
621
+ function writeClippingPlane(plane, where) {
622
+ return `\n <ClippingPlane>${xsdPointElement('Location', plane.location, ' ', where)}${xsdPointElement('Direction', plane.direction, ' ', where)}
702
623
  </ClippingPlane>`;
703
624
  }
704
625
  /**
@@ -716,28 +637,13 @@ function writeClippingPlane(plane) {
716
637
  * otherwise. `BCFBitmap.format` stays typed `'PNG' | 'JPG'`; we only
717
638
  * lowercase it on the wire for 3.0.
718
639
  */
719
- function writeBitmap(bitmap, version) {
640
+ function writeBitmap(bitmap, version, where) {
720
641
  const formatTag = version === '3.0' ? 'Format' : 'Bitmap';
721
642
  const formatValue = version === '3.0' ? bitmap.format.toLowerCase() : bitmap.format;
722
643
  return `\n <Bitmap>
723
644
  <${formatTag}>${formatValue}</${formatTag}>
724
- <Reference>${escapeXml(bitmap.reference)}</Reference>
725
- <Location>
726
- <X>${bitmap.location.x}</X>
727
- <Y>${bitmap.location.y}</Y>
728
- <Z>${bitmap.location.z}</Z>
729
- </Location>
730
- <Normal>
731
- <X>${bitmap.normal.x}</X>
732
- <Y>${bitmap.normal.y}</Y>
733
- <Z>${bitmap.normal.z}</Z>
734
- </Normal>
735
- <Up>
736
- <X>${bitmap.up.x}</X>
737
- <Y>${bitmap.up.y}</Y>
738
- <Z>${bitmap.up.z}</Z>
739
- </Up>
740
- <Height>${bitmap.height}</Height>
645
+ <Reference>${escapeXml(bitmap.reference)}</Reference>${xsdPointElement('Location', bitmap.location, ' ', where)}${xsdPointElement('Normal', bitmap.normal, ' ', where)}${xsdPointElement('Up', bitmap.up, ' ', where)}
646
+ <Height>${xsdDouble(bitmap.height, 'Bitmap/Height', where)}</Height>
741
647
  </Bitmap>`;
742
648
  }
743
649
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"writer.js","sourceRoot":"","sources":["../src/writer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"writer.js","sourceRoot":"","sources":["../src/writer.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D;;;;GAIG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAoB1B,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,OAAmB;IAChD,MAAM,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC;IAExB,qBAAqB;IACrB,gBAAgB,CAAC,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAEvC,gCAAgC;IAChC,IAAI,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACtC,gBAAgB,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAClD,CAAC;IAED,eAAe;IACf,MAAM,eAAe,GAAG,IAAI,GAAG,EAAU,CAAC;IAC1C,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;QAC5C,MAAM,gBAAgB,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;IACvE,CAAC;IAED,oBAAoB;IACpB,OAAO,GAAG,CAAC,aAAa,CAAC;QACvB,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,SAAS;QACtB,kBAAkB,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;KACjC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,SAAS,gBAAgB,CAAC,GAAU,EAAE,OAAsB;IAC1D,MAAM,OAAO,GACX,OAAO,KAAK,KAAK;QACf,CAAC,CAAC;yHACiH,OAAO,KAAK;QAC/H,CAAC,CAAC;yHACiH,OAAO;qBAC3G,OAAO;WACjB,CAAC;IAEV,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;AACnC,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAS,gBAAgB,CAAC,GAAU,EAAE,OAAmB,EAAE,OAAsB;IAC/E,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,YAAY,EAAE,CAAC;IACtD,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;IACxF,MAAM,WAAW,GAAG,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,kBAAkB,CAAC;IAE3E,MAAM,OAAO,GAAG;GACf,WAAW;wBACU,SAAS,KAAK,WAAW;;IAE7C,WAAW,GAAG,CAAC;IAEjB,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;AACpC,CAAC;AAED,6EAA6E;AAC7E,SAAS,aAAa,CAAC,IAAY;IACjC,IAAI,CAAC,GAAG,UAAU,CAAC;IACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACxB,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IACD,OAAO,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AACzC,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,SAAS,uBAAuB,CAAC,IAAY,EAAE,SAAsB;IACnE,OAAO,oBAAoB,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;AACxD,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,SAAS,oBAAoB,CAAC,GAAW,EAAE,SAAsB,EAAE,QAAgB;IACjF,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IAC5E,MAAM,IAAI,GAAG,OAAO,KAAK,GAAG,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;QAChD,CAAC,CAAC,OAAO;QACT,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,IAAI,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;IACvE,IAAI,SAAS,GAAG,IAAI,CAAC;IACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9C,SAAS,GAAG,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC;IAC7B,CAAC;IACD,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACzB,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,gBAAgB,CAC7B,GAAU,EACV,KAAe,EACf,OAAsB,EACtB,eAA4B;IAE5B,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,uBAAuB,CAAC,KAAK,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC;IAChF,IAAI,CAAC,MAAM;QAAE,OAAO;IAEpB,yEAAyE;IACzE,0DAA0D;IAC1D,0EAA0E;IAC1E,yEAAyE;IACzE,sDAAsD;IACtD,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAU,CAAC;IAC7C,MAAM,kBAAkB,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CACrD,oBAAoB,CAAC,EAAE,CAAC,IAAI,EAAE,kBAAkB,EAAE,WAAW,CAAC,CAC/D,CAAC;IAEF,mBAAmB;IACnB,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,kBAAkB,CAAC,CAAC;IAE5D,mBAAmB;IACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACjD,MAAM,mBAAmB,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IACzF,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAS,WAAW,CAAC,SAAuB;IAC1C,MAAM,KAAK,GAAG,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,2BAA2B,CAAC,CAAC;IACrE,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;IACjE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,4EAA4E;AAC5E,yEAAyE;AACzE,0EAA0E;AAC1E,4EAA4E;AAC5E,+BAA+B;AAC/B,MAAM,mBAAmB,GAAG,cAAc,CAAC;AAE3C,SAAS,eAAe,CACtB,MAAa,EACb,KAAe,EACf,OAAsB,EACtB,kBAA4B;IAE5B,4EAA4E;IAC5E,oEAAoE;IACpE,mEAAmE;IACnE,wEAAwE;IACxE,uEAAuE;IACvE,wEAAwE;IACxE,oCAAoC;IACpC,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;YAClE,MAAM,IAAI,KAAK,CACb,6CAA6C,KAAK,CAAC,IAAI,eAAe;gBACpE,gDAAgD,CACnD,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;YACtE,MAAM,IAAI,KAAK,CACb,+CAA+C,KAAK,CAAC,IAAI,eAAe;gBACtE,kDAAkD,CACrD,CAAC;QACJ,CAAC;IACH,CAAC;IAED,IAAI,OAAO,GAAG;4GAC4F,CAAC;IAE3G,+EAA+E;IAC/E,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5C,OAAO,IAAI,WAAW,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChD,CAAC;IAED,OAAO,IAAI;iBACI,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,iBAAiB,SAAS,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;aAC5K,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC;IAE5C,6DAA6D;IAC7D,qEAAqE;IACrE,wEAAwE;IACxE,uEAAuE;IACvE,sEAAsE;IACtE,wEAAwE;IACxE,wEAAwE;IACxE,mEAAmE;IACnE,sEAAsE;IACtE,gEAAgE;IAChE,uEAAuE;IACvE,uEAAuE;IACvE,uEAAuE;IACvE,0EAA0E;IAC1E,sBAAsB;IACtB,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QACnB,OAAO,IAAI,mBAAmB,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC;IACvE,CAAC;IAED,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC9B,0EAA0E;QAC1E,OAAO,IAAI,gBAAgB,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,aAAa,EAAE,UAAU,KAAK,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC;IACnG,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5C,wEAAwE;QACxE,0EAA0E;QAC1E,yEAAyE;QACzE,sEAAsE;QACtE,sEAAsE;QACtE,mEAAmE;QACnE,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;YACtB,OAAO,IAAI,gBAAgB,CAAC;YAC5B,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;gBACjC,OAAO,IAAI,kBAAkB,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC;YAC1D,CAAC;YACD,OAAO,IAAI,iBAAiB,CAAC;QAC/B,CAAC;aAAM,CAAC;YACN,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;gBACjC,OAAO,IAAI,iBAAiB,SAAS,CAAC,KAAK,CAAC,WAAW,CAAC;YAC1D,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,IAAI,uBAAuB,SAAS,CAAC,KAAK,CAAC,YAAY,CAAC,iBAAiB,CAAC;IACjF,OAAO,IAAI,yBAAyB,SAAS,CAAC,KAAK,CAAC,cAAc,CAAC,mBAAmB,CAAC;IAEvF,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;QACvB,OAAO,IAAI,uBAAuB,SAAS,CAAC,KAAK,CAAC,YAAY,CAAC,iBAAiB,CAAC;QACjF,gEAAgE;QAChE,MAAM,cAAc,GAAG,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,cAAc,CAAC;QACpE,OAAO,IAAI,yBAAyB,SAAS,CAAC,cAAc,CAAC,mBAAmB,CAAC;IACnF,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAClB,OAAO,IAAI,kBAAkB,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC;IACpE,CAAC;IAED,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;QACrB,OAAO,IAAI,qBAAqB,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,eAAe,CAAC;IAC7E,CAAC;IAED,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAChB,OAAO,IAAI,gBAAgB,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC;IAC9D,CAAC;IAED,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;QACtB,OAAO,IAAI,sBAAsB,SAAS,CAAC,KAAK,CAAC,WAAW,CAAC,gBAAgB,CAAC;IAChF,CAAC;IAED,8EAA8E;IAC9E,4EAA4E;IAC5E,8EAA8E;IAC9E,IAAI,KAAK,CAAC,UAAU,EAAE,eAAe,EAAE,CAAC;QACtC,OAAO,IAAI,eAAe,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACxD,CAAC;IAED,IAAI,KAAK,CAAC,kBAAkB,IAAI,KAAK,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpE,iEAAiE;QACjE,sEAAsE;QACtE,oEAAoE;QACpE,IAAI,OAAO,KAAK,KAAK;YAAE,OAAO,IAAI,4BAA4B,CAAC;QAC/D,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,kBAAkB,EAAE,CAAC;YAC9C,OAAO,IAAI,sBAAsB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACrD,CAAC;QACD,IAAI,OAAO,KAAK,KAAK;YAAE,OAAO,IAAI,6BAA6B,CAAC;IAClE,CAAC;IAED,IAAI,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1D,mEAAmE;QACnE,wEAAwE;QACxE,qEAAqE;QACrE,iBAAiB;QACjB,IAAI,OAAO,KAAK,KAAK;YAAE,OAAO,IAAI,uBAAuB,CAAC;QAC1D,KAAK,MAAM,WAAW,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;YAC9C,OAAO,IAAI,6BAA6B,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC;QACtE,CAAC;QACD,IAAI,OAAO,KAAK,KAAK;YAAE,OAAO,IAAI,wBAAwB,CAAC;IAC7D,CAAC;IAED,uEAAuE;IACvE,sEAAsE;IACtE,UAAU;IACV,MAAM,UAAU,GAAG,CAAC,MAAc,EAAE,EAAE,CACpC,KAAK,CAAC,QAAQ;SACX,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;QACf,IAAI,CAAC,GAAG,KAAK,MAAM,kBAAkB,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;QACjE,CAAC,IAAI,KAAK,MAAM,WAAW,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;QAC5D,CAAC,IAAI,KAAK,MAAM,aAAa,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC;QAClE,CAAC,IAAI,KAAK,MAAM,cAAc,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC;QACrE,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;YAC1B,CAAC,IAAI,KAAK,MAAM,sBAAsB,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC;QAC9E,CAAC;QACD,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;YACzB,CAAC,IAAI,KAAK,MAAM,mBAAmB,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,iBAAiB,CAAC;QACtF,CAAC;QACD,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;YAC3B,CAAC,IAAI,KAAK,MAAM,qBAAqB,SAAS,CAAC,OAAO,CAAC,cAAc,CAAC,mBAAmB,CAAC;QAC5F,CAAC;QACD,CAAC,IAAI,KAAK,MAAM,YAAY,CAAC;QAC7B,OAAO,CAAC,CAAC;IACX,CAAC,CAAC;SACD,IAAI,CAAC,EAAE,CAAC,CAAC;IAEd,uEAAuE;IACvE,wEAAwE;IACxE,0EAA0E;IAC1E,gEAAgE;IAChE,0EAA0E;IAC1E,4EAA4E;IAC5E,8DAA8D;IAC9D,MAAM,iBAAiB,GAAG,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC;IACzE,MAAM,YAAY,GAAG,CAAC,MAAc,EAAE,EAAE,CACtC,KAAK,CAAC,UAAU;SACb,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE;QACpB,uEAAuE;QACvE,mEAAmE;QACnE,wEAAwE;QACxE,wEAAwE;QACxE,gDAAgD;QAChD,MAAM,QAAQ,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC;QACvC,MAAM,QAAQ,GAAG,aAAa,QAAQ,OAAO,CAAC;QAC9C,MAAM,YAAY,GAAG,YAAY,QAAQ,IAAI,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC;QAEtE,IAAI,CAAC,GAAG,KAAK,MAAM,IAAI,iBAAiB,UAAU,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;QAChF,CAAC,IAAI,KAAK,MAAM,gBAAgB,QAAQ,cAAc,CAAC;QACvD,IAAI,SAAS,CAAC,QAAQ,IAAI,SAAS,CAAC,YAAY,EAAE,CAAC;YACjD,CAAC,IAAI,KAAK,MAAM,eAAe,YAAY,aAAa,CAAC;QAC3D,CAAC;QACD,CAAC,IAAI,KAAK,MAAM,KAAK,iBAAiB,GAAG,CAAC;QAC1C,OAAO,CAAC,CAAC;IACX,CAAC,CAAC;SACD,IAAI,CAAC,EAAE,CAAC,CAAC;IAEd,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;QACtB,oEAAoE;QACpE,0EAA0E;QAC1E,sEAAsE;QACtE,wEAAwE;QACxE,qEAAqE;QACrE,mEAAmE;QACnE,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,OAAO,IAAI,mBAAmB,UAAU,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QACxE,CAAC;QACD,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,OAAO,IAAI,qBAAqB,YAAY,CAAC,QAAQ,CAAC,qBAAqB,CAAC;QAC9E,CAAC;QACD,OAAO,IAAI,cAAc,CAAC;IAC5B,CAAC;SAAM,CAAC;QACN,OAAO,IAAI,cAAc,CAAC;QAC1B,gEAAgE;QAChE,qEAAqE;QACrE,gEAAgE;QAChE,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;QAC5B,OAAO,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAED,OAAO,IAAI,aAAa,CAAC;IAEzB,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;AACrC,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,mBAAmB,CAChC,MAAa,EACb,SAAuB,EACvB,QAAgB,EAChB,OAAsB;IAEtB,2EAA2E;IAC3E,yEAAyE;IACzE,0EAA0E;IAC1E,oEAAoE;IACpE,MAAM,QAAQ,GAAG,aAAa,QAAQ,OAAO,CAAC;IAC9C,MAAM,YAAY,GAAG,YAAY,QAAQ,IAAI,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC;IAEtE,0DAA0D;IAC1D,IAAI,OAAO,GAAG;8HAC8G,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;IAE1J,mBAAmB;IACnB,IAAI,SAAS,CAAC,UAAU,EAAE,CAAC;QACzB,OAAO,IAAI,eAAe,CAAC,SAAS,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAC5D,CAAC;IAED,uEAAuE;IACvE,uEAAuE;IACvE,kEAAkE;IAClE,MAAM,KAAK,GAAG,cAAc,SAAS,CAAC,IAAI,GAAG,CAAC;IAE9C,6EAA6E;IAC7E,qEAAqE;IACrE,mBAAmB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAExC,IAAI,SAAS,CAAC,gBAAgB,EAAE,CAAC;QAC/B,OAAO,IAAI,qBAAqB,CAAC,SAAS,CAAC,gBAAgB,EAAE,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;IACxF,CAAC;IAED,IAAI,SAAS,CAAC,iBAAiB,EAAE,CAAC;QAChC,OAAO,IAAI,sBAAsB,CAAC,SAAS,CAAC,iBAAiB,EAAE,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;IAC1F,CAAC;IAED,cAAc;IACd,IAAI,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClD,OAAO,IAAI,aAAa,CAAC;QACzB,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;YACnC,OAAO,IAAI,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACpC,CAAC;QACD,OAAO,IAAI,cAAc,CAAC;IAC5B,CAAC;IAED,wBAAwB;IACxB,IAAI,SAAS,CAAC,cAAc,IAAI,SAAS,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpE,OAAO,IAAI,sBAAsB,CAAC;QAClC,KAAK,MAAM,KAAK,IAAI,SAAS,CAAC,cAAc,EAAE,CAAC;YAC7C,OAAO,IAAI,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC9C,CAAC;QACD,OAAO,IAAI,uBAAuB,CAAC;IACrC,CAAC;IAED,gBAAgB;IAChB,EAAE;IACF,6EAA6E;IAC7E,wBAAwB;IACxB,yEAAyE;IACzE,yEAAyE;IACzE,yDAAyD;IACzD,wEAAwE;IACxE,IAAI,SAAS,CAAC,OAAO,IAAI,SAAS,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtD,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;YACtB,OAAO,IAAI,eAAe,CAAC;YAC3B,KAAK,MAAM,MAAM,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;gBACvC,OAAO,IAAI,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;YACjD,CAAC;YACD,OAAO,IAAI,gBAAgB,CAAC;QAC9B,CAAC;aAAM,CAAC;YACN,KAAK,MAAM,MAAM,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;gBACvC,OAAO,IAAI,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;YACjD,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,IAAI,wBAAwB,CAAC;IAEpC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAE/B,iBAAiB;IACjB,IAAI,SAAS,CAAC,YAAY,EAAE,CAAC;QAC3B,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC;IACpD,CAAC;SAAM,IAAI,SAAS,CAAC,QAAQ,IAAI,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACxE,6BAA6B;QAC7B,MAAM,UAAU,GAAG,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACpD,IAAI,UAAU,EAAE,CAAC;YACf,IAAI,CAAC;gBACH,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;gBACtC,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;gBAClD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC7C,KAAK,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;gBACxC,CAAC;gBACD,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;YACnC,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,4EAA4E;gBAC5E,OAAO,CAAC,IAAI,CAAC,6CAA6C,EAAE,CAAC,CAAC,CAAC;YACjE,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,eAAe,CAAC,UAAyB,EAAE,OAAsB;IACxE,IAAI,OAAO,GAAG,kBAAkB,CAAC;IAEjC,uEAAuE;IACvE,4DAA4D;IAC5D,IAAI,OAAO,KAAK,KAAK,IAAI,UAAU,CAAC,UAAU,EAAE,cAAc,EAAE,CAAC;QAC/D,OAAO,IAAI,0BAA0B,CAAC,UAAU,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;IAC9E,CAAC;IAED,oDAAoD;IACpD,IAAI,UAAU,CAAC,SAAS,IAAI,UAAU,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5D,OAAO,IAAI,mBAAmB,CAAC;QAC/B,KAAK,MAAM,SAAS,IAAI,UAAU,CAAC,SAAS,EAAE,CAAC;YAC7C,OAAO,IAAI,cAAc,CAAC,SAAS,CAAC,CAAC;QACvC,CAAC;QACD,OAAO,IAAI,oBAAoB,CAAC;IAClC,CAAC;IAED,2CAA2C;IAC3C,OAAO,IAAI,eAAe,CAAC,UAAU,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAE3D,oBAAoB;IACpB,IAAI,UAAU,CAAC,QAAQ,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1D,OAAO,IAAI,kBAAkB,CAAC;QAC9B,KAAK,MAAM,QAAQ,IAAI,UAAU,CAAC,QAAQ,EAAE,CAAC;YAC3C,OAAO,IAAI,kBAAkB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACnD,CAAC;QACD,OAAO,IAAI,mBAAmB,CAAC;IACjC,CAAC;IAED,OAAO,IAAI,mBAAmB,CAAC;IAC/B,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,kFAAkF;AAClF,SAAS,0BAA0B,CAAC,KAAwB,EAAE,MAAM,GAAG,MAAM;IAC3E,IAAI,OAAO,GAAG,KAAK,MAAM,iBAAiB,CAAC;IAC3C,IAAI,KAAK,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;QACtC,OAAO,IAAI,mBAAmB,KAAK,CAAC,aAAa,GAAG,CAAC;IACvD,CAAC;IACD,IAAI,KAAK,CAAC,sBAAsB,KAAK,SAAS,EAAE,CAAC;QAC/C,OAAO,IAAI,4BAA4B,KAAK,CAAC,sBAAsB,GAAG,CAAC;IACzE,CAAC;IACD,IAAI,KAAK,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;QACxC,OAAO,IAAI,qBAAqB,KAAK,CAAC,eAAe,GAAG,CAAC;IAC3D,CAAC;IACD,OAAO,IAAI,IAAI,CAAC;IAChB,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,SAAS,eAAe,CAAC,UAAqC,EAAE,OAAsB;IACpF,yDAAyD;IACzD,MAAM,UAAU,GAAG,UAAU,EAAE,iBAAiB,IAAI,IAAI,CAAC;IAEzD,IAAI,OAAO,GAAG,wCAAwC,UAAU,IAAI,CAAC;IAErE,IAAI,OAAO,KAAK,KAAK,IAAI,UAAU,EAAE,cAAc,EAAE,CAAC;QACpD,OAAO,IAAI,0BAA0B,CAAC,UAAU,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;IAC7E,CAAC;IAED,IAAI,UAAU,EAAE,UAAU,IAAI,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/D,OAAO,IAAI,sBAAsB,CAAC;QAClC,KAAK,MAAM,SAAS,IAAI,UAAU,CAAC,UAAU,EAAE,CAAC;YAC9C,OAAO,IAAI,cAAc,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QACnD,CAAC;QACD,OAAO,IAAI,uBAAuB,CAAC;IACrC,CAAC;IAED,OAAO,IAAI,qBAAqB,CAAC;IACjC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,cAAc,CAAC,SAAuB,EAAE,MAAM,GAAG,QAAQ;IAChE,MAAM,WAAW,GAAG,SAAS,CAAC,iBAAiB,IAAI,SAAS,CAAC,eAAe,CAAC;IAE7E,IAAI,OAAO,GAAG,KAAK,MAAM,YAAY,CAAC;IAEtC,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;QACtB,OAAO,IAAI,aAAa,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC;IAC1D,CAAC;IAED,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,IAAI,GAAG,CAAC;QACf,IAAI,SAAS,CAAC,iBAAiB,EAAE,CAAC;YAChC,OAAO,IAAI,KAAK,MAAM,wBAAwB,SAAS,CAAC,SAAS,CAAC,iBAAiB,CAAC,sBAAsB,CAAC;QAC7G,CAAC;QACD,IAAI,SAAS,CAAC,eAAe,EAAE,CAAC;YAC9B,OAAO,IAAI,KAAK,MAAM,sBAAsB,SAAS,CAAC,SAAS,CAAC,eAAe,CAAC,oBAAoB,CAAC;QACvG,CAAC;QACD,OAAO,IAAI,KAAK,MAAM,cAAc,CAAC;IACvC,CAAC;SAAM,CAAC;QACN,OAAO,IAAI,IAAI,CAAC;IAClB,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,kBAAkB,CAAC,QAAqB,EAAE,OAAsB;IACvE,IAAI,OAAO,GAAG,yBAAyB,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;IACrE,IAAI,OAAO,KAAK,KAAK;QAAE,OAAO,IAAI,wBAAwB,CAAC;IAC3D,KAAK,MAAM,SAAS,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;QAC5C,OAAO,IAAI,cAAc,CAAC,SAAS,EAAE,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IACtF,CAAC;IACD,IAAI,OAAO,KAAK,KAAK;QAAE,OAAO,IAAI,yBAAyB,CAAC;IAC5D,OAAO,IAAI,kBAAkB,CAAC;IAC9B,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,SAAS,SAAS,CAAC,IAAa,EAAE,KAAa;IAC7C,OAAO,eAAe,eAAe,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,EAAE,QAAQ,EAAE,KAAK,CAAC,GAAG,eAAe,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC;YACzI,CAAC;AACb,CAAC;AAED;;GAEG;AACH,SAAS,kBAAkB,CAAC,KAAuB,EAAE,KAAa;IAChE,OAAO,wBAAwB,eAAe,CAAC,UAAU,EAAE,KAAK,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,GAAG,eAAe,CAAC,WAAW,EAAE,KAAK,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC;qBACzI,CAAC;AACtB,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,SAAS,WAAW,CAAC,MAAiB,EAAE,OAAsB,EAAE,KAAa;IAC3E,MAAM,SAAS,GAAG,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC1D,MAAM,WAAW,GAAG,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;IACpF,OAAO;SACA,SAAS,IAAI,WAAW,KAAK,SAAS;mBAC5B,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,eAAe,eAAe,CAAC,UAAU,EAAE,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,GAAG,eAAe,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,GAAG,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC;gBAC1N,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,EAAE,KAAK,CAAC;cAClD,CAAC;AACf,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,WAAW,CAAC,KAAsB,EAAE,OAAsB;IACjE,MAAM,UAAU,GAAG,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;IACzD,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEnF,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;QACtB,OAAO,4BAA4B,OAAO,6BAA6B,CAAC;IAC1E,CAAC;IACD,OAAO,eAAe,OAAO,eAAe,CAAC;AAC/C,CAAC;AAED,kEAAkE;AAClE,SAAS,eAAe,CAAC,IAAmB,EAAE,MAAc,EAAE,OAAsB;IAClF,gFAAgF;IAChF,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC;IAC3C,0EAA0E;IAC1E,MAAM,cAAc,GAAG,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC;IAEvE,IAAI,KAAK,GAAG,EAAE,CAAC;IACf,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QACpB,KAAK,IAAI,gBAAgB,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;IACzD,CAAC;IACD,IAAI,IAAI,CAAC,0BAA0B,EAAE,CAAC;QACpC,KAAK,IAAI,gCAAgC,SAAS,CAAC,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC;IACzF,CAAC;IACD,KAAK,IAAI,IAAI,cAAc,KAAK,UAAU,GAAG,CAAC;IAE9C,IAAI,OAAO,GAAG,KAAK,MAAM,QAAQ,KAAK,GAAG,CAAC;IAC1C,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,OAAO,IAAI,KAAK,MAAM,eAAe,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;IAC7E,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,OAAO,IAAI,KAAK,MAAM,WAAW,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;IACjE,CAAC;IACD,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QACnB,OAAO,IAAI,KAAK,MAAM,gBAAgB,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC;IAChF,CAAC;IACD,OAAO,IAAI,KAAK,MAAM,SAAS,CAAC;IAChC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;GAMG;AACH,SAAS,eAAe,CAAC,OAAsB,EAAE,OAAsB;IACrE,2EAA2E;IAC3E,gEAAgE;IAChE,MAAM,cAAc,GAAG,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC;IACvE,IAAI,OAAO,GAAG,kCAAkC,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,cAAc,KAAK,OAAO,CAAC,UAAU,IAAI,CAAC;IAC7H,OAAO,IAAI,sBAAsB,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,cAAc,CAAC;IAC5E,OAAO,IAAI,4BAA4B,SAAS,CAAC,OAAO,CAAC,eAAe,IAAI,EAAE,CAAC,oBAAoB,CAAC;IACpG,OAAO,IAAI,qBAAqB,CAAC;IACjC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAS,sBAAsB,CAAC,MAA4B,EAAE,OAAsB;IAClF,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAExE,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;QACtB,IAAI,OAAO,GAAG,2BAA2B,QAAQ,GAAG,CAAC;QACrD,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;YACxB,OAAO,IAAI,yBAAyB,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,iBAAiB,CAAC;QACtF,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,kBAAkB,CAAC;YACpD,IAAI,GAAG,EAAE,CAAC;gBACR,OAAO,IAAI,gBAAgB,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;YACpD,CAAC;QACH,CAAC;QACD,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YACvB,OAAO,IAAI,wBAAwB,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,gBAAgB,CAAC;QACnF,CAAC;QACD,OAAO,IAAI,4BAA4B,CAAC;QACxC,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,IAAI,OAAO,GAAG,2BAA2B,QAAQ,gBAAgB,MAAM,CAAC,UAAU,IAAI,KAAK,IAAI,CAAC;IAChG,OAAO,IAAI,+BAA+B,SAAS,CAAC,MAAM,CAAC,kBAAkB,IAAI,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC,uBAAuB,CAAC;IAC1H,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;QACvB,OAAO,IAAI,wBAAwB,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,gBAAgB,CAAC;IACnF,CAAC;IACD,OAAO,IAAI,4BAA4B,CAAC;IACxC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,SAAS,SAAS,CAAC,GAAW;IAC5B,OAAO,GAAG;SACP,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;SACvB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC7B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ifc-lite/bcf",
3
- "version": "2.0.0",
3
+ "version": "2.0.1",
4
4
  "description": "BIM Collaboration Format (BCF) support for IFC-Lite",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -18,7 +18,7 @@
18
18
  },
19
19
  "devDependencies": {
20
20
  "typescript": "^6.0.3",
21
- "vitest": "^4.1.10",
21
+ "vitest": "^4.1.11",
22
22
  "xmllint-wasm": "5.3.0"
23
23
  },
24
24
  "license": "MPL-2.0",