@bedrockio/yada 1.2.0 → 1.2.2
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/cjs/Schema.js +7 -6
- package/dist/cjs/errors.js +8 -9
- package/dist/cjs/messages.js +7 -5
- package/dist/cjs/string.js +24 -7
- package/package.json +1 -1
- package/src/Schema.js +5 -6
- package/src/errors.js +10 -9
- package/src/messages.js +7 -5
- package/src/string.js +22 -3
- package/types/Schema.d.ts.map +1 -1
- package/types/errors.d.ts +9 -9
- package/types/errors.d.ts.map +1 -1
- package/types/messages.d.ts +1 -0
- package/types/messages.d.ts.map +1 -1
- package/types/string.d.ts +1 -0
- package/types/string.d.ts.map +1 -1
package/dist/cjs/Schema.js
CHANGED
|
@@ -7,7 +7,7 @@ exports.default = void 0;
|
|
|
7
7
|
exports.isSchema = isSchema;
|
|
8
8
|
var _errors = require("./errors");
|
|
9
9
|
var _utils = require("./utils");
|
|
10
|
-
const INITIAL_TYPES = ['default', 'required', 'type', 'transform'];
|
|
10
|
+
const INITIAL_TYPES = ['default', 'required', 'type', 'transform', 'empty'];
|
|
11
11
|
const REQUIRED_TYPES = ['default', 'required'];
|
|
12
12
|
class Schema {
|
|
13
13
|
constructor(meta = {}) {
|
|
@@ -147,8 +147,6 @@ class Schema {
|
|
|
147
147
|
break;
|
|
148
148
|
} else if (value === null && options.nullable) {
|
|
149
149
|
break;
|
|
150
|
-
} else if (value === '' && !options.required && options.allowEmpty) {
|
|
151
|
-
break;
|
|
152
150
|
}
|
|
153
151
|
try {
|
|
154
152
|
const result = await this.runAssertion(assertion, value, options);
|
|
@@ -159,12 +157,15 @@ class Schema {
|
|
|
159
157
|
const {
|
|
160
158
|
type
|
|
161
159
|
} = assertion;
|
|
160
|
+
const {
|
|
161
|
+
message
|
|
162
|
+
} = error;
|
|
162
163
|
if (type === 'type') {
|
|
163
|
-
details.push(new _errors.TypeError(
|
|
164
|
+
details.push(new _errors.TypeError(message, this.meta.type));
|
|
164
165
|
} else if (type === 'format') {
|
|
165
|
-
details.push(new _errors.FormatError(
|
|
166
|
+
details.push(new _errors.FormatError(message, this.meta.format));
|
|
166
167
|
} else if (error instanceof _errors.LocalizedError) {
|
|
167
|
-
details.push(new _errors.AssertionError(
|
|
168
|
+
details.push(new _errors.AssertionError(message, type));
|
|
168
169
|
} else {
|
|
169
170
|
details.push(error);
|
|
170
171
|
}
|
package/dist/cjs/errors.js
CHANGED
|
@@ -15,8 +15,8 @@ class LocalizedError extends Error {
|
|
|
15
15
|
exports.LocalizedError = LocalizedError;
|
|
16
16
|
class ValidationError extends Error {
|
|
17
17
|
static DEFAULT_MESSAGE = 'Validation failed.';
|
|
18
|
-
constructor(
|
|
19
|
-
super(
|
|
18
|
+
constructor(message = ValidationError.DEFAULT_MESSAGE, details = []) {
|
|
19
|
+
super(message);
|
|
20
20
|
this.type = 'validation';
|
|
21
21
|
this.details = details;
|
|
22
22
|
}
|
|
@@ -24,12 +24,9 @@ class ValidationError extends Error {
|
|
|
24
24
|
const {
|
|
25
25
|
details
|
|
26
26
|
} = this;
|
|
27
|
-
const message = this.getMessage();
|
|
28
27
|
return {
|
|
29
28
|
type: this.type,
|
|
30
|
-
|
|
31
|
-
message
|
|
32
|
-
}),
|
|
29
|
+
message: this.getMessage(),
|
|
33
30
|
...(details.length && {
|
|
34
31
|
details: details.map(error => {
|
|
35
32
|
return serializeError(error);
|
|
@@ -46,7 +43,7 @@ class ValidationError extends Error {
|
|
|
46
43
|
DEFAULT_MESSAGE
|
|
47
44
|
} = this.constructor;
|
|
48
45
|
if (message && message !== DEFAULT_MESSAGE) {
|
|
49
|
-
return message;
|
|
46
|
+
return getLocalizedMessage(message);
|
|
50
47
|
}
|
|
51
48
|
}
|
|
52
49
|
getFullMessage(options) {
|
|
@@ -96,7 +93,8 @@ class FormatError extends ValidationError {
|
|
|
96
93
|
}
|
|
97
94
|
exports.FormatError = FormatError;
|
|
98
95
|
class FieldError extends ValidationError {
|
|
99
|
-
|
|
96
|
+
static DEFAULT_MESSAGE = 'Field failed validation.';
|
|
97
|
+
constructor(message = FieldError.DEFAULT_MESSAGE, field, details) {
|
|
100
98
|
super(message, details);
|
|
101
99
|
this.type = 'field';
|
|
102
100
|
this.field = field;
|
|
@@ -110,7 +108,8 @@ class FieldError extends ValidationError {
|
|
|
110
108
|
}
|
|
111
109
|
exports.FieldError = FieldError;
|
|
112
110
|
class ElementError extends ValidationError {
|
|
113
|
-
|
|
111
|
+
static DEFAULT_MESSAGE = 'Element failed validation.';
|
|
112
|
+
constructor(message = ElementError.DEFAULT_MESSAGE, index, details) {
|
|
114
113
|
super(message, details);
|
|
115
114
|
this.type = 'element';
|
|
116
115
|
this.index = index;
|
package/dist/cjs/messages.js
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
+
exports.getErrorMessage = getErrorMessage;
|
|
6
7
|
exports.getFullMessage = getFullMessage;
|
|
7
8
|
var _localization = require("./localization");
|
|
8
9
|
function getFullMessage(error, options) {
|
|
@@ -20,14 +21,15 @@ function getFullMessage(error, options) {
|
|
|
20
21
|
}).join(delimiter);
|
|
21
22
|
}
|
|
22
23
|
}
|
|
23
|
-
function
|
|
24
|
-
let message;
|
|
24
|
+
function getErrorMessage(error) {
|
|
25
25
|
if (error.getMessage) {
|
|
26
|
-
|
|
26
|
+
return error.getMessage();
|
|
27
27
|
} else {
|
|
28
|
-
|
|
28
|
+
return error.message;
|
|
29
29
|
}
|
|
30
|
-
|
|
30
|
+
}
|
|
31
|
+
function hasMessage(error) {
|
|
32
|
+
return !!getErrorMessage(error);
|
|
31
33
|
}
|
|
32
34
|
function getInnerPath(error, options) {
|
|
33
35
|
const {
|
package/dist/cjs/string.js
CHANGED
|
@@ -14,21 +14,25 @@ const PHONE_REG = /^\+\d{1,3}\d{3,14}$/;
|
|
|
14
14
|
const PHONE_DESCRIPTION = 'A phone number in [E.164](https://en.wikipedia.org/wiki/E.164) format.';
|
|
15
15
|
class StringSchema extends _TypeSchema.default {
|
|
16
16
|
constructor() {
|
|
17
|
-
super(String
|
|
18
|
-
allowEmpty: true
|
|
19
|
-
});
|
|
17
|
+
super(String);
|
|
20
18
|
this.assert('type', (val, options) => {
|
|
21
19
|
const {
|
|
22
|
-
cast
|
|
23
|
-
required,
|
|
24
|
-
allowEmpty
|
|
20
|
+
cast
|
|
25
21
|
} = options;
|
|
26
22
|
if (cast && typeof val !== 'string') {
|
|
27
23
|
val = String(val);
|
|
28
24
|
}
|
|
29
25
|
if (typeof val !== 'string') {
|
|
30
26
|
throw new _errors.LocalizedError('Must be a string.');
|
|
31
|
-
}
|
|
27
|
+
}
|
|
28
|
+
return val;
|
|
29
|
+
});
|
|
30
|
+
this.assert('empty', (val, options) => {
|
|
31
|
+
const {
|
|
32
|
+
required,
|
|
33
|
+
allowEmpty
|
|
34
|
+
} = options;
|
|
35
|
+
if (val === '' && (required || allowEmpty === false)) {
|
|
32
36
|
throw new _errors.LocalizedError('String may not be empty.');
|
|
33
37
|
}
|
|
34
38
|
return val;
|
|
@@ -377,6 +381,19 @@ class StringSchema extends _TypeSchema.default {
|
|
|
377
381
|
}
|
|
378
382
|
});
|
|
379
383
|
}
|
|
384
|
+
format(name, fn) {
|
|
385
|
+
return this.clone({
|
|
386
|
+
format: name
|
|
387
|
+
}).assert('format', function (val, options) {
|
|
388
|
+
const {
|
|
389
|
+
allowEmpty
|
|
390
|
+
} = options;
|
|
391
|
+
if (val === '' && allowEmpty !== false) {
|
|
392
|
+
return;
|
|
393
|
+
}
|
|
394
|
+
fn(val, options);
|
|
395
|
+
});
|
|
396
|
+
}
|
|
380
397
|
toOpenApi(extra) {
|
|
381
398
|
const {
|
|
382
399
|
min,
|
package/package.json
CHANGED
package/src/Schema.js
CHANGED
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
} from './errors';
|
|
9
9
|
import { omit } from './utils';
|
|
10
10
|
|
|
11
|
-
const INITIAL_TYPES = ['default', 'required', 'type', 'transform'];
|
|
11
|
+
const INITIAL_TYPES = ['default', 'required', 'type', 'transform', 'empty'];
|
|
12
12
|
const REQUIRED_TYPES = ['default', 'required'];
|
|
13
13
|
|
|
14
14
|
export default class Schema {
|
|
@@ -140,8 +140,6 @@ export default class Schema {
|
|
|
140
140
|
break;
|
|
141
141
|
} else if (value === null && options.nullable) {
|
|
142
142
|
break;
|
|
143
|
-
} else if (value === '' && !options.required && options.allowEmpty) {
|
|
144
|
-
break;
|
|
145
143
|
}
|
|
146
144
|
|
|
147
145
|
try {
|
|
@@ -151,13 +149,14 @@ export default class Schema {
|
|
|
151
149
|
}
|
|
152
150
|
} catch (error) {
|
|
153
151
|
const { type } = assertion;
|
|
152
|
+
const { message } = error;
|
|
154
153
|
|
|
155
154
|
if (type === 'type') {
|
|
156
|
-
details.push(new TypeError(
|
|
155
|
+
details.push(new TypeError(message, this.meta.type));
|
|
157
156
|
} else if (type === 'format') {
|
|
158
|
-
details.push(new FormatError(
|
|
157
|
+
details.push(new FormatError(message, this.meta.format));
|
|
159
158
|
} else if (error instanceof LocalizedError) {
|
|
160
|
-
details.push(new AssertionError(
|
|
159
|
+
details.push(new AssertionError(message, type));
|
|
161
160
|
} else {
|
|
162
161
|
details.push(error);
|
|
163
162
|
}
|
package/src/errors.js
CHANGED
|
@@ -10,20 +10,17 @@ export class LocalizedError extends Error {
|
|
|
10
10
|
export class ValidationError extends Error {
|
|
11
11
|
static DEFAULT_MESSAGE = 'Validation failed.';
|
|
12
12
|
|
|
13
|
-
constructor(
|
|
14
|
-
super(
|
|
13
|
+
constructor(message = ValidationError.DEFAULT_MESSAGE, details = []) {
|
|
14
|
+
super(message);
|
|
15
15
|
this.type = 'validation';
|
|
16
16
|
this.details = details;
|
|
17
17
|
}
|
|
18
18
|
|
|
19
19
|
toJSON() {
|
|
20
20
|
const { details } = this;
|
|
21
|
-
const message = this.getMessage();
|
|
22
21
|
return {
|
|
23
22
|
type: this.type,
|
|
24
|
-
|
|
25
|
-
message,
|
|
26
|
-
}),
|
|
23
|
+
message: this.getMessage(),
|
|
27
24
|
...(details.length && {
|
|
28
25
|
details: details.map((error) => {
|
|
29
26
|
return serializeError(error);
|
|
@@ -37,7 +34,7 @@ export class ValidationError extends Error {
|
|
|
37
34
|
// @ts-ignore
|
|
38
35
|
const { DEFAULT_MESSAGE } = this.constructor;
|
|
39
36
|
if (message && message !== DEFAULT_MESSAGE) {
|
|
40
|
-
return message;
|
|
37
|
+
return getLocalizedMessage(message);
|
|
41
38
|
}
|
|
42
39
|
}
|
|
43
40
|
|
|
@@ -91,7 +88,9 @@ export class FormatError extends ValidationError {
|
|
|
91
88
|
}
|
|
92
89
|
|
|
93
90
|
export class FieldError extends ValidationError {
|
|
94
|
-
|
|
91
|
+
static DEFAULT_MESSAGE = 'Field failed validation.';
|
|
92
|
+
|
|
93
|
+
constructor(message = FieldError.DEFAULT_MESSAGE, field, details) {
|
|
95
94
|
super(message, details);
|
|
96
95
|
this.type = 'field';
|
|
97
96
|
this.field = field;
|
|
@@ -106,7 +105,9 @@ export class FieldError extends ValidationError {
|
|
|
106
105
|
}
|
|
107
106
|
|
|
108
107
|
export class ElementError extends ValidationError {
|
|
109
|
-
|
|
108
|
+
static DEFAULT_MESSAGE = 'Element failed validation.';
|
|
109
|
+
|
|
110
|
+
constructor(message = ElementError.DEFAULT_MESSAGE, index, details) {
|
|
110
111
|
super(message, details);
|
|
111
112
|
this.type = 'element';
|
|
112
113
|
this.index = index;
|
package/src/messages.js
CHANGED
|
@@ -16,14 +16,16 @@ export function getFullMessage(error, options) {
|
|
|
16
16
|
}
|
|
17
17
|
}
|
|
18
18
|
|
|
19
|
-
function
|
|
20
|
-
let message;
|
|
19
|
+
export function getErrorMessage(error) {
|
|
21
20
|
if (error.getMessage) {
|
|
22
|
-
|
|
21
|
+
return error.getMessage();
|
|
23
22
|
} else {
|
|
24
|
-
|
|
23
|
+
return error.message;
|
|
25
24
|
}
|
|
26
|
-
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
function hasMessage(error) {
|
|
28
|
+
return !!getErrorMessage(error);
|
|
27
29
|
}
|
|
28
30
|
|
|
29
31
|
function getInnerPath(error, options) {
|
package/src/string.js
CHANGED
|
@@ -18,15 +18,21 @@ const PHONE_DESCRIPTION =
|
|
|
18
18
|
|
|
19
19
|
class StringSchema extends TypeSchema {
|
|
20
20
|
constructor() {
|
|
21
|
-
super(String
|
|
21
|
+
super(String);
|
|
22
22
|
this.assert('type', (val, options) => {
|
|
23
|
-
const { cast
|
|
23
|
+
const { cast } = options;
|
|
24
|
+
|
|
24
25
|
if (cast && typeof val !== 'string') {
|
|
25
26
|
val = String(val);
|
|
26
27
|
}
|
|
27
28
|
if (typeof val !== 'string') {
|
|
28
29
|
throw new LocalizedError('Must be a string.');
|
|
29
|
-
}
|
|
30
|
+
}
|
|
31
|
+
return val;
|
|
32
|
+
});
|
|
33
|
+
this.assert('empty', (val, options) => {
|
|
34
|
+
const { required, allowEmpty } = options;
|
|
35
|
+
if (val === '' && (required || allowEmpty === false)) {
|
|
30
36
|
throw new LocalizedError('String may not be empty.');
|
|
31
37
|
}
|
|
32
38
|
return val;
|
|
@@ -390,6 +396,19 @@ class StringSchema extends TypeSchema {
|
|
|
390
396
|
});
|
|
391
397
|
}
|
|
392
398
|
|
|
399
|
+
format(name, fn) {
|
|
400
|
+
return this.clone({ format: name }).assert(
|
|
401
|
+
'format',
|
|
402
|
+
function (val, options) {
|
|
403
|
+
const { allowEmpty } = options;
|
|
404
|
+
if (val === '' && allowEmpty !== false) {
|
|
405
|
+
return;
|
|
406
|
+
}
|
|
407
|
+
fn(val, options);
|
|
408
|
+
}
|
|
409
|
+
);
|
|
410
|
+
}
|
|
411
|
+
|
|
393
412
|
toOpenApi(extra) {
|
|
394
413
|
const { min, max } = this.meta;
|
|
395
414
|
return {
|
package/types/Schema.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Schema.d.ts","sourceRoot":"","sources":["../src/Schema.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Schema.d.ts","sourceRoot":"","sources":["../src/Schema.js"],"names":[],"mappings":"AAmYA,4CAEC;AAxXD;IACE,uBAGC;IAFC,kBAAoB;IACpB,SAAgB;IAKlB;;OAEG;IACH,YAFa,IAAI,CAQhB;IAED;;;OAGG;IACH,mBAFa,IAAI,CAShB;IAED;;;;OAIG;IACH,sBAFa,IAAI,CAShB;IAED;;;;OAIG;IACH,mBAFa,IAAI,CAIhB;IAED;;;OAGG;IACH,sBAFa,IAAI,CAIhB;IAED;;;OAGG;IACH,uBAFa,IAAI,CAIhB;IAED;;;OAGG;IACH,YAFa,IAAI,CAIhB;IAED;;OAEG;IACH,uBAFa,IAAI,CAIhB;IAED;;OAEG;IACH,gBAFa,IAAI,CAShB;IAED;;OAEG;IACH,+BAFa,IAAI,CAMhB;IAED;;OAEG;IACH,uBAFa,IAAI,CAIhB;IAED,iDA8CC;IAED;;OAEG;IACH,kBAFa,IAAI,CAOhB;IAED;;;OAGG;IACH,qBAFa,IAAI,CAMhB;IAED,2BAYC;IAED;;MAOC;IAED;;;;MASC;IAED;;MAOC;IAED,4BAMC;IAED,kBAEC;IAID;;OAEG;IACH,kCAFa,IAAI,CAiDhB;IAED;;OAEG;IACH,4BAFa,IAAI,CAUhB;IAED,oCAKC;IAED;;OAEG;IACH,oBAFa,IAAI,CAShB;IAED,gCAGC;IAED,qEAGC;IAED;;;;;;;;MAsCC;CACF"}
|
package/types/errors.d.ts
CHANGED
|
@@ -4,15 +4,15 @@ export class LocalizedError extends Error {
|
|
|
4
4
|
}
|
|
5
5
|
export class ValidationError extends Error {
|
|
6
6
|
static DEFAULT_MESSAGE: string;
|
|
7
|
-
constructor(
|
|
7
|
+
constructor(message?: string, details?: any[]);
|
|
8
8
|
type: string;
|
|
9
9
|
details: any[];
|
|
10
10
|
toJSON(): {
|
|
11
11
|
details: any[];
|
|
12
|
-
message: string;
|
|
13
12
|
type: string;
|
|
13
|
+
message: any;
|
|
14
14
|
};
|
|
15
|
-
getMessage():
|
|
15
|
+
getMessage(): any;
|
|
16
16
|
getFullMessage(options: any): any;
|
|
17
17
|
}
|
|
18
18
|
export class AssertionError extends ValidationError {
|
|
@@ -25,8 +25,8 @@ export class TypeError extends ValidationError {
|
|
|
25
25
|
toJSON(): {
|
|
26
26
|
kind: any;
|
|
27
27
|
details: any[];
|
|
28
|
-
message: string;
|
|
29
28
|
type: string;
|
|
29
|
+
message: any;
|
|
30
30
|
};
|
|
31
31
|
}
|
|
32
32
|
export class FormatError extends ValidationError {
|
|
@@ -35,28 +35,28 @@ export class FormatError extends ValidationError {
|
|
|
35
35
|
toJSON(): {
|
|
36
36
|
format: any;
|
|
37
37
|
details: any[];
|
|
38
|
-
message: string;
|
|
39
38
|
type: string;
|
|
39
|
+
message: any;
|
|
40
40
|
};
|
|
41
41
|
}
|
|
42
42
|
export class FieldError extends ValidationError {
|
|
43
|
-
constructor(message:
|
|
43
|
+
constructor(message: string, field: any, details: any);
|
|
44
44
|
field: any;
|
|
45
45
|
toJSON(): {
|
|
46
46
|
field: any;
|
|
47
47
|
details: any[];
|
|
48
|
-
message: string;
|
|
49
48
|
type: string;
|
|
49
|
+
message: any;
|
|
50
50
|
};
|
|
51
51
|
}
|
|
52
52
|
export class ElementError extends ValidationError {
|
|
53
|
-
constructor(message:
|
|
53
|
+
constructor(message: string, index: any, details: any);
|
|
54
54
|
index: any;
|
|
55
55
|
toJSON(): {
|
|
56
56
|
index: any;
|
|
57
57
|
details: any[];
|
|
58
|
-
message: string;
|
|
59
58
|
type: string;
|
|
59
|
+
message: any;
|
|
60
60
|
};
|
|
61
61
|
}
|
|
62
62
|
export class ArrayError extends ValidationError {
|
package/types/errors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.js"],"names":[],"mappings":"AAyIA,iDAEC;AAxID;IACE,uCAEC;CACF;AAED;IACE,+BAA8C;IAE9C,+CAIC;IAFC,aAAwB;IACxB,eAAsB;IAGxB;;;;MAWC;IAED,kBAOC;IAED,kCAKC;CACF;AAED;IACE,yCAGC;CACF;AAED;IACE,qCAIC;IADC,UAAgB;IAGlB,2BAEC;IAED;;;;;MAKC;CACF;AAED;IACE,uCAIC;IADC,YAAoB;IAGtB;;;;;MAKC;CACF;AAED;IAGE,uDAIC;IADC,WAAkB;IAGpB;;;;;MAKC;CACF;AAED;IAGE,uDAIC;IADC,WAAkB;IAGpB;;;;;MAKC;CACF;AAED;IACE,wCAGC;CACF;AAED;IACE,wCAGC;CACF"}
|
package/types/messages.d.ts
CHANGED
package/types/messages.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../src/messages.js"],"names":[],"mappings":"AAEA,8DAcC"}
|
|
1
|
+
{"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../src/messages.js"],"names":[],"mappings":"AAEA,8DAcC;AAED,iDAMC"}
|
package/types/string.d.ts
CHANGED
package/types/string.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"string.d.ts","sourceRoot":"","sources":["../src/string.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"string.d.ts","sourceRoot":"","sources":["../src/string.js"],"names":[],"mappings":"AAyaA;;GAEG;AACH,iDAEC;AA5ZD;IACE,cAoBC;IAED;;OAEG;IACH,YAFa,IAAI,CAQhB;IAED;;OAEG;IACH,eAFW,MAAM,gBAUhB;IAED;;OAEG;IACH,YAFW,MAAM,gBAUhB;IAED;;OAEG;IACH,YAFW,MAAM,gBAUhB;IAED,qBAIC;IAED;;OAEG;IACH,mBAFW,OAAO,gBAYjB;IAED;;OAEG;IACH,mBAFW,OAAO,gBAYjB;IAED;;OAEG;IACH,WAFW,MAAM,gBAahB;IAED,sBAMC;IAED,sBAMC;IAED,oBAMC;IAED,oBAMC;IAED,qBAMC;IAED,sBAMC;IAED;;;OAGG;IACH;QAF6B,OAAO,GAAzB,OAAO;qBAQjB;IAED,2BAMC;IAED,mBAMC;IAED,wBAMC;IAED,uBAMC;IAED,oBAMC;IAED,qBAOC;IAED,uBAMC;IAED;;OAEG;IACH,oBAFW,MAAM,gBAQhB;IAED,wBAMC;IAED;;;;;;;OAOG;IACH;QAN4B,SAAS,GAA1B,MAAM;QACW,UAAU,GAA3B,MAAM;QACW,UAAU,GAA3B,MAAM;QACW,YAAY,GAA7B,MAAM;QACW,YAAY,GAA7B,MAAM;qBA+BhB;IAED;;;;;;;;;;;OAWG;IACH;QAV6B,gBAAgB,GAAlC,OAAO;QACW,sBAAsB,GAAxC,OAAO;QACW,YAAY,GAA9B,OAAO;QACW,YAAY,GAA9B,OAAO;QACW,4BAA4B,GAA9C,OAAO;QACW,eAAe,GAAjC,OAAO;QACW,sBAAsB,GAAxC,OAAO;QACW,eAAe,GAAjC,OAAO;QACY,SAAS,GAA5B,MAAM,EAAE;qBAQlB;IAED;;;;;;;;OAQG;IACH;QAP6B,WAAW,GAA7B,OAAO;QACW,iBAAiB,GAAnC,OAAO;QACW,kBAAkB,GAApC,OAAO;QACW,iBAAiB,GAAnC,OAAO;QACW,cAAc,GAAhC,OAAO;QACW,iBAAiB,GAAnC,OAAO;qBAQjB;IAED;;OAEG;IACH,eAFW,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,gBAQ3B;IAED,oBAMC;IAED,oBAMC;IAED,sBAMC;IAED,sBAMC;IAED,yCAWC;CAcF"}
|