liana-core 0.1.35 → 0.1.36
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/implementation/refiners/primitives/list_of_characters.js +438 -0
- package/dist/implementation/{manual/refiners → refiners}/unmarshalled/astn_parse_tree.d.ts +1 -1
- package/dist/implementation/refiners/unmarshalled/astn_parse_tree.js +121 -0
- package/dist/implementation/transformers/deserialize/location.d.ts +2 -0
- package/dist/implementation/transformers/deserialize/location.js +12 -0
- package/dist/implementation/transformers/deserialize/prose.d.ts +2 -0
- package/dist/implementation/transformers/deserialize/prose.js +12 -0
- package/dist/implementation/transformers/deserialize_resolved/location.d.ts +2 -0
- package/dist/implementation/transformers/deserialize_resolved/location.js +12 -0
- package/dist/implementation/transformers/deserialize_resolved/prose.d.ts +2 -0
- package/dist/implementation/transformers/deserialize_resolved/prose.js +12 -0
- package/dist/implementation/transformers/leap_days_before_year/year.d.ts +2 -0
- package/dist/implementation/transformers/leap_days_before_year/year.js +14 -0
- package/dist/implementation/transformers/location/prose.d.ts +2 -0
- package/dist/implementation/transformers/location/prose.js +25 -0
- package/dist/implementation/transformers/parse_tree/start_token_range.d.ts +2 -0
- package/dist/implementation/transformers/parse_tree/start_token_range.js +11 -0
- package/dist/implementation/{manual/transformers → transformers}/primitives/date_struct.js +1 -1
- package/dist/implementation/{manual/transformers → transformers}/primitives/text.d.ts +1 -1
- package/dist/implementation/transformers/primitives/text.js +297 -0
- package/dist/implementation/transformers/resolve/location.d.ts +2 -0
- package/dist/implementation/transformers/resolve/location.js +9 -0
- package/dist/implementation/transformers/resolve/prose.d.ts +2 -0
- package/dist/implementation/transformers/resolve/prose.js +47 -0
- package/dist/implementation/transformers/unmarshall/location_in_main_document.d.ts +2 -0
- package/dist/implementation/transformers/unmarshall/location_in_main_document.js +15 -0
- package/dist/implementation/transformers/unmarshall/prose.d.ts +2 -0
- package/dist/implementation/transformers/unmarshall/prose.js +71 -0
- package/package.json +1 -1
- package/dist/implementation/manual/refiners/primitives/list_of_characters.js +0 -440
- package/dist/implementation/manual/refiners/unmarshalled/astn_parse_tree.js +0 -121
- package/dist/implementation/manual/transformers/deserialize/location.d.ts +0 -2
- package/dist/implementation/manual/transformers/deserialize/location.js +0 -12
- package/dist/implementation/manual/transformers/deserialize/prose.d.ts +0 -2
- package/dist/implementation/manual/transformers/deserialize/prose.js +0 -12
- package/dist/implementation/manual/transformers/deserialize_resolved/location.d.ts +0 -2
- package/dist/implementation/manual/transformers/deserialize_resolved/location.js +0 -12
- package/dist/implementation/manual/transformers/deserialize_resolved/prose.d.ts +0 -2
- package/dist/implementation/manual/transformers/deserialize_resolved/prose.js +0 -12
- package/dist/implementation/manual/transformers/leap_days_before_year/year.d.ts +0 -2
- package/dist/implementation/manual/transformers/leap_days_before_year/year.js +0 -14
- package/dist/implementation/manual/transformers/location/prose.d.ts +0 -2
- package/dist/implementation/manual/transformers/location/prose.js +0 -25
- package/dist/implementation/manual/transformers/parse_tree/start_token_range.d.ts +0 -2
- package/dist/implementation/manual/transformers/parse_tree/start_token_range.js +0 -11
- package/dist/implementation/manual/transformers/primitives/text.js +0 -297
- package/dist/implementation/manual/transformers/resolve/location.d.ts +0 -2
- package/dist/implementation/manual/transformers/resolve/location.js +0 -9
- package/dist/implementation/manual/transformers/resolve/prose.d.ts +0 -2
- package/dist/implementation/manual/transformers/resolve/prose.js +0 -47
- package/dist/implementation/manual/transformers/unmarshall/location_in_main_document.d.ts +0 -2
- package/dist/implementation/manual/transformers/unmarshall/location_in_main_document.js +0 -15
- package/dist/implementation/manual/transformers/unmarshall/prose.d.ts +0 -2
- package/dist/implementation/manual/transformers/unmarshall/prose.js +0 -71
- /package/dist/implementation/{manual/refiners → refiners}/primitives/list_of_characters.d.ts +0 -0
- /package/dist/implementation/{manual/transformers → transformers}/primitives/date_struct.d.ts +0 -0
|
@@ -0,0 +1,438 @@
|
|
|
1
|
+
import * as p_ from 'pareto-core/implementation/refiner';
|
|
2
|
+
import * as p_t from 'pareto-core/implementation/transformer';
|
|
3
|
+
import p_text_from_list from 'pareto-core/implementation/transformer/specials/text_from_list';
|
|
4
|
+
//dependencies
|
|
5
|
+
import * as t_leap_days_before_year from "../../transformers/leap_days_before_year/year.js";
|
|
6
|
+
export const decimal = ($, abort) => {
|
|
7
|
+
const characters = $;
|
|
8
|
+
let result = 0;
|
|
9
|
+
let isNegative = false;
|
|
10
|
+
let startIndex = 0;
|
|
11
|
+
// const new_imp = p_iterate({
|
|
12
|
+
// list: characters,
|
|
13
|
+
// end_info: null,
|
|
14
|
+
// assign: (iterator): number => {
|
|
15
|
+
// return 42
|
|
16
|
+
// },
|
|
17
|
+
// on_dangling_item: ($) => abort("Invalid character in decimal string"),
|
|
18
|
+
// })
|
|
19
|
+
// Check for empty string
|
|
20
|
+
if (p_t.from.list(characters).amount_of_items() === 0) {
|
|
21
|
+
abort("Empty string is not a valid decimal number");
|
|
22
|
+
}
|
|
23
|
+
const get_character_at = (index) => {
|
|
24
|
+
return characters.__deprecated_get_item_at(index, {
|
|
25
|
+
out_of_bounds: () => abort("index out of bounds")
|
|
26
|
+
});
|
|
27
|
+
};
|
|
28
|
+
// Check for negative sign
|
|
29
|
+
if (p_t.from.list(characters).amount_of_items() > 0 && get_character_at(0) === 45) { // '-'
|
|
30
|
+
isNegative = true;
|
|
31
|
+
startIndex = 1;
|
|
32
|
+
}
|
|
33
|
+
// Parse digits from left to right
|
|
34
|
+
for (let i = startIndex; i < p_t.from.list(characters).amount_of_items(); i++) {
|
|
35
|
+
const charCode = get_character_at(i);
|
|
36
|
+
// Check if character is a digit (48-57 for '0'-'9')
|
|
37
|
+
if (charCode >= 48 && charCode <= 57) {
|
|
38
|
+
const digit = charCode - 48;
|
|
39
|
+
result = result * 10 + digit;
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
// Invalid character
|
|
43
|
+
abort("Invalid character in decimal string");
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
const old_imp = isNegative ? -result : result;
|
|
47
|
+
return old_imp;
|
|
48
|
+
};
|
|
49
|
+
// export const decimal_new: p_i.Refiner<
|
|
50
|
+
// number, string, d_loc.List_of_Characters
|
|
51
|
+
// > = ($, abort) => {
|
|
52
|
+
// return p_iterate({
|
|
53
|
+
// list: $,
|
|
54
|
+
// end_info: null,
|
|
55
|
+
// assign: (iterator): number => {
|
|
56
|
+
// iterator.peek(
|
|
57
|
+
// ($) => abort("no characters found"),
|
|
58
|
+
// ($) => {
|
|
59
|
+
// const handle_absolute_value = (): number => {
|
|
60
|
+
// let result = 0
|
|
61
|
+
// }
|
|
62
|
+
// return $ === 45
|
|
63
|
+
// ? iterator.consume(
|
|
64
|
+
// ($) => p_unreachable_code_path("just peeked"),
|
|
65
|
+
// ($) => - handle_absolute_value()
|
|
66
|
+
// )
|
|
67
|
+
// : handle_absolute_value()
|
|
68
|
+
// }
|
|
69
|
+
// )
|
|
70
|
+
// },
|
|
71
|
+
// on_dangling_item: ($) => abort("Invalid character in decimal string"),
|
|
72
|
+
// })
|
|
73
|
+
// }
|
|
74
|
+
export const scientific_notation = ($, abort, $p) => {
|
|
75
|
+
const characters = $;
|
|
76
|
+
let result = 0;
|
|
77
|
+
let isNegative = false;
|
|
78
|
+
let startIndex = 0;
|
|
79
|
+
let decimalPart = 0;
|
|
80
|
+
let decimalDivisor = 1;
|
|
81
|
+
let exponent = 0;
|
|
82
|
+
let isExponentNegative = false;
|
|
83
|
+
let hasDecimal = false;
|
|
84
|
+
let inExponent = false;
|
|
85
|
+
const get_character_at = (index) => characters.__deprecated_get_item_at(index, {
|
|
86
|
+
out_of_bounds: () => abort("index out of bounds")
|
|
87
|
+
});
|
|
88
|
+
// Check for negative sign
|
|
89
|
+
if (p_t.from.list(characters).amount_of_items() > 0 && get_character_at(0) === 45) { // '-'
|
|
90
|
+
isNegative = true;
|
|
91
|
+
startIndex = 1;
|
|
92
|
+
}
|
|
93
|
+
// Parse the number
|
|
94
|
+
for (let i = startIndex; i < p_t.from.list(characters).amount_of_items(); i++) {
|
|
95
|
+
const charCode = get_character_at(i);
|
|
96
|
+
if (charCode === 46) { // '.'
|
|
97
|
+
if (hasDecimal || inExponent) {
|
|
98
|
+
abort("Invalid decimal format: multiple decimal points or decimal in exponent");
|
|
99
|
+
}
|
|
100
|
+
hasDecimal = true;
|
|
101
|
+
}
|
|
102
|
+
else if (charCode === 101 || charCode === 69) { // 'e' or 'E'
|
|
103
|
+
if (inExponent) {
|
|
104
|
+
abort("Invalid decimal format: multiple exponent markers");
|
|
105
|
+
}
|
|
106
|
+
inExponent = true;
|
|
107
|
+
// Check for exponent sign
|
|
108
|
+
if (i + 1 < p_t.from.list(characters).amount_of_items()) {
|
|
109
|
+
const nextChar = get_character_at(i + 1);
|
|
110
|
+
if (nextChar === 45) { // '-'
|
|
111
|
+
isExponentNegative = true;
|
|
112
|
+
i++;
|
|
113
|
+
}
|
|
114
|
+
else if (nextChar === 43) { // '+'
|
|
115
|
+
i++;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
else if (charCode >= 48 && charCode <= 57) { // '0'-'9'
|
|
120
|
+
const digit = charCode - 48;
|
|
121
|
+
if (inExponent) {
|
|
122
|
+
exponent = exponent * 10 + digit;
|
|
123
|
+
}
|
|
124
|
+
else if (hasDecimal) {
|
|
125
|
+
decimalPart = decimalPart * 10 + digit;
|
|
126
|
+
decimalDivisor = decimalDivisor * 10;
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
result = result * 10 + digit;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
abort("Invalid character in decimal string");
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
// Combine integer and decimal parts
|
|
137
|
+
let finalResult = result + (decimalPart / decimalDivisor);
|
|
138
|
+
// Apply exponent
|
|
139
|
+
if (isExponentNegative) {
|
|
140
|
+
exponent = -exponent;
|
|
141
|
+
}
|
|
142
|
+
// Apply exponent by multiplying/dividing by 10
|
|
143
|
+
if (exponent > 0) {
|
|
144
|
+
for (let i = 0; i < exponent; i++) {
|
|
145
|
+
finalResult = finalResult * 10;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
else if (exponent < 0) {
|
|
149
|
+
for (let i = 0; i < -exponent; i++) {
|
|
150
|
+
finalResult = finalResult / 10;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
return isNegative ? -finalResult : finalResult;
|
|
154
|
+
};
|
|
155
|
+
export const true_false = ($, abort) => {
|
|
156
|
+
const as_string = p_text_from_list($, ($) => $);
|
|
157
|
+
return as_string === "true"
|
|
158
|
+
? true
|
|
159
|
+
: as_string === "false"
|
|
160
|
+
? false
|
|
161
|
+
: abort("HANDLE UNEXPECTED VALUE!");
|
|
162
|
+
};
|
|
163
|
+
export const binary = ($, abort) => {
|
|
164
|
+
const characters = $;
|
|
165
|
+
let result = 0;
|
|
166
|
+
let isNegative = false;
|
|
167
|
+
let startIndex = 0;
|
|
168
|
+
// Check for empty string
|
|
169
|
+
if (p_t.from.list(characters).amount_of_items() === 0) {
|
|
170
|
+
abort("Empty string is not a valid binary number");
|
|
171
|
+
}
|
|
172
|
+
const get_character_at = (index) => characters.__deprecated_get_item_at(index, {
|
|
173
|
+
out_of_bounds: () => abort("index out of bounds")
|
|
174
|
+
});
|
|
175
|
+
// Check for negative sign
|
|
176
|
+
if (p_t.from.list(characters).amount_of_items() > 0 && get_character_at(0) === 45) { // '-'
|
|
177
|
+
isNegative = true;
|
|
178
|
+
startIndex = 1;
|
|
179
|
+
}
|
|
180
|
+
// Check for "0b" prefix - REQUIRE it for binary
|
|
181
|
+
if (p_t.from.list(characters).amount_of_items() <= startIndex + 1 ||
|
|
182
|
+
get_character_at(startIndex) !== 48 || // '0'
|
|
183
|
+
get_character_at(startIndex + 1) !== 98) { // 'b'
|
|
184
|
+
abort("Binary number must have '0b' prefix");
|
|
185
|
+
}
|
|
186
|
+
startIndex += 2;
|
|
187
|
+
// Check if there are digits after the prefix
|
|
188
|
+
if (startIndex >= p_t.from.list(characters).amount_of_items()) {
|
|
189
|
+
abort("Binary number must have digits after '0b' prefix");
|
|
190
|
+
}
|
|
191
|
+
// Parse binary digits from left to right
|
|
192
|
+
for (let i = startIndex; i < p_t.from.list(characters).amount_of_items(); i++) {
|
|
193
|
+
const charCode = get_character_at(i);
|
|
194
|
+
// Check if character is a binary digit (48-49 for '0'-'1')
|
|
195
|
+
if (charCode >= 48 && charCode <= 49) { // '0'-'1'
|
|
196
|
+
const digit = charCode - 48;
|
|
197
|
+
result = result * 2 + digit;
|
|
198
|
+
}
|
|
199
|
+
else {
|
|
200
|
+
// Invalid character
|
|
201
|
+
abort("Invalid character in binary string");
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
return isNegative ? -result : result;
|
|
205
|
+
};
|
|
206
|
+
export const fractional_decimal = ($, abort, $p) => {
|
|
207
|
+
const characters = $;
|
|
208
|
+
let isNegative = false;
|
|
209
|
+
let startIndex = 0;
|
|
210
|
+
let decimalPointIndex = -1;
|
|
211
|
+
// Check for empty string
|
|
212
|
+
if (p_t.from.list(characters).amount_of_items() === 0) {
|
|
213
|
+
abort("Empty string is not a valid fractional decimal number");
|
|
214
|
+
}
|
|
215
|
+
const get_character_at = (index) => {
|
|
216
|
+
return characters.__deprecated_get_item_at(index, {
|
|
217
|
+
out_of_bounds: () => abort("index out of bounds")
|
|
218
|
+
});
|
|
219
|
+
};
|
|
220
|
+
// Check for negative sign
|
|
221
|
+
if (p_t.from.list(characters).amount_of_items() > 0 && get_character_at(0) === 45) { // '-'
|
|
222
|
+
isNegative = true;
|
|
223
|
+
startIndex = 1;
|
|
224
|
+
}
|
|
225
|
+
// Find decimal point and validate characters
|
|
226
|
+
for (let i = startIndex; i < p_t.from.list(characters).amount_of_items(); i++) {
|
|
227
|
+
const charCode = get_character_at(i);
|
|
228
|
+
if (charCode === 46) { // '.'
|
|
229
|
+
if (decimalPointIndex !== -1) {
|
|
230
|
+
abort("Multiple decimal points found");
|
|
231
|
+
}
|
|
232
|
+
decimalPointIndex = i;
|
|
233
|
+
}
|
|
234
|
+
else if (!(charCode >= 48 && charCode <= 57)) {
|
|
235
|
+
abort("Invalid character in fractional decimal string");
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
// Must have a decimal point
|
|
239
|
+
if (decimalPointIndex === -1) {
|
|
240
|
+
abort("No decimal point found in fractional decimal string");
|
|
241
|
+
}
|
|
242
|
+
// Check that we have digits before decimal point
|
|
243
|
+
if (decimalPointIndex === startIndex) {
|
|
244
|
+
abort("No digits before decimal point");
|
|
245
|
+
}
|
|
246
|
+
// Calculate number of fractional digits in input
|
|
247
|
+
const inputFractionalDigits = p_t.from.list(characters).amount_of_items() - decimalPointIndex - 1;
|
|
248
|
+
const expectedFractionalDigits = $p['number of fractional digits'];
|
|
249
|
+
// Check that the number of fractional digits matches expected
|
|
250
|
+
if (inputFractionalDigits !== expectedFractionalDigits) {
|
|
251
|
+
abort(`Expected ${expectedFractionalDigits} fractional digits, but found ${inputFractionalDigits}`);
|
|
252
|
+
}
|
|
253
|
+
// Parse integer part
|
|
254
|
+
let result = 0;
|
|
255
|
+
for (let i = startIndex; i < decimalPointIndex; i++) {
|
|
256
|
+
const charCode = get_character_at(i);
|
|
257
|
+
const digit = charCode - 48;
|
|
258
|
+
result = result * 10 + digit;
|
|
259
|
+
}
|
|
260
|
+
// Parse fractional part
|
|
261
|
+
for (let i = decimalPointIndex + 1; i < p_t.from.list(characters).amount_of_items(); i++) {
|
|
262
|
+
const charCode = get_character_at(i);
|
|
263
|
+
const digit = charCode - 48;
|
|
264
|
+
result = result * 10 + digit;
|
|
265
|
+
}
|
|
266
|
+
return isNegative ? -result : result;
|
|
267
|
+
};
|
|
268
|
+
export const hexadecimal = ($, abort) => {
|
|
269
|
+
const characters = $;
|
|
270
|
+
let result = 0;
|
|
271
|
+
let isNegative = false;
|
|
272
|
+
let startIndex = 0;
|
|
273
|
+
// Check for empty string
|
|
274
|
+
if (p_t.from.list(characters).amount_of_items() === 0) {
|
|
275
|
+
abort("Empty string is not a valid hexadecimal number");
|
|
276
|
+
}
|
|
277
|
+
const get_character_at = (index) => {
|
|
278
|
+
return characters.__deprecated_get_item_at(index, {
|
|
279
|
+
out_of_bounds: () => abort("index out of bounds")
|
|
280
|
+
});
|
|
281
|
+
};
|
|
282
|
+
// Check for negative sign
|
|
283
|
+
if (p_t.from.list(characters).amount_of_items() > 0 && get_character_at(0) === 45) { // '-'
|
|
284
|
+
isNegative = true;
|
|
285
|
+
startIndex = 1;
|
|
286
|
+
}
|
|
287
|
+
// Check for "0x" prefix - REQUIRE it for hex
|
|
288
|
+
if (p_t.from.list(characters).amount_of_items() <= startIndex + 1 ||
|
|
289
|
+
get_character_at(startIndex) !== 48 || // '0'
|
|
290
|
+
get_character_at(startIndex + 1) !== 120) { // 'x'
|
|
291
|
+
abort("Hexadecimal number must have '0x' prefix");
|
|
292
|
+
}
|
|
293
|
+
startIndex += 2;
|
|
294
|
+
// Check if there are digits after the prefix
|
|
295
|
+
if (startIndex >= p_t.from.list(characters).amount_of_items()) {
|
|
296
|
+
abort("Hexadecimal number must have digits after '0x' prefix");
|
|
297
|
+
}
|
|
298
|
+
// Parse hex digits from left to right
|
|
299
|
+
for (let i = startIndex; i < p_t.from.list(characters).amount_of_items(); i++) {
|
|
300
|
+
const charCode = get_character_at(i);
|
|
301
|
+
let digit;
|
|
302
|
+
// Check if character is a hex digit
|
|
303
|
+
if (charCode >= 48 && charCode <= 57) { // '0'-'9'
|
|
304
|
+
digit = charCode - 48;
|
|
305
|
+
}
|
|
306
|
+
else if (charCode >= 65 && charCode <= 70) { // 'A'-'F'
|
|
307
|
+
digit = charCode - 65 + 10;
|
|
308
|
+
}
|
|
309
|
+
else if (charCode >= 97 && charCode <= 102) { // 'a'-'f'
|
|
310
|
+
digit = charCode - 97 + 10;
|
|
311
|
+
}
|
|
312
|
+
else {
|
|
313
|
+
// Invalid character
|
|
314
|
+
return abort("Invalid character in hexadecimal string");
|
|
315
|
+
}
|
|
316
|
+
result = result * 16 + digit;
|
|
317
|
+
}
|
|
318
|
+
return isNegative ? -result : result;
|
|
319
|
+
};
|
|
320
|
+
/**
|
|
321
|
+
*
|
|
322
|
+
* uhdr is a numerical representation of dates where day 0 is 1948-12-10 (the date of the adoption of the Universal Declaration of Human Rights)
|
|
323
|
+
*
|
|
324
|
+
* This function converts an ISO 8601 date string (YYYY-MM-DD) to a udhr day number
|
|
325
|
+
*/
|
|
326
|
+
export const iso_date_udhr = ($, abort) => {
|
|
327
|
+
const iso_day_0_offset = -711471; // the number of days that iso day 1 (0001-01-01) is offset relative to udhr day 0 (1948-12-10)
|
|
328
|
+
const month_day_table_normal = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334];
|
|
329
|
+
const month_day_table_leap = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335];
|
|
330
|
+
const is_leap_year = (year) => (year % 4 === 0 && year % 100 !== 0) || (year % 400 === 0);
|
|
331
|
+
const characters = $;
|
|
332
|
+
const parse_iso_date = (characters) => {
|
|
333
|
+
const get_certain_character_at = (characters, index) => {
|
|
334
|
+
return p_.from.optional(characters.__deprecated_get_possible_item_at(index)).decide(($) => $, () => abort("index out of bounds"));
|
|
335
|
+
};
|
|
336
|
+
const string_to_number = (characters, start, end) => {
|
|
337
|
+
let result = 0;
|
|
338
|
+
for (let i = start; i < end; i++) {
|
|
339
|
+
const digit = get_certain_character_at(characters, i) - 48;
|
|
340
|
+
if (digit < 0 || digit > 9)
|
|
341
|
+
return abort("invalid date format");
|
|
342
|
+
result = result * 10 + digit;
|
|
343
|
+
}
|
|
344
|
+
return result;
|
|
345
|
+
};
|
|
346
|
+
const dash = 45;
|
|
347
|
+
//validate format
|
|
348
|
+
if (p_t.from.list(characters).amount_of_items() !== 10) { // YYYY-MM-DD
|
|
349
|
+
return abort("invalid date format");
|
|
350
|
+
}
|
|
351
|
+
if (get_certain_character_at(characters, 4) !== dash) { // -
|
|
352
|
+
return abort("invalid date format");
|
|
353
|
+
}
|
|
354
|
+
if (get_certain_character_at(characters, 7) !== dash) { // -
|
|
355
|
+
return abort("invalid date format");
|
|
356
|
+
}
|
|
357
|
+
return {
|
|
358
|
+
year: string_to_number(characters, 0, 4),
|
|
359
|
+
month: string_to_number(characters, 5, 7),
|
|
360
|
+
day: string_to_number(characters, 8, 10)
|
|
361
|
+
};
|
|
362
|
+
};
|
|
363
|
+
const iso_date = parse_iso_date(characters);
|
|
364
|
+
// Validate month (1-12)
|
|
365
|
+
if (iso_date.month < 1 || iso_date.month > 12) {
|
|
366
|
+
abort(`Invalid month: ${iso_date.month}. Month must be between 1 and 12`);
|
|
367
|
+
}
|
|
368
|
+
// Validate day (1-31, depending on month)
|
|
369
|
+
if (iso_date.day < 1) {
|
|
370
|
+
abort(`Invalid day: ${iso_date.day}. Day must be at least 1`);
|
|
371
|
+
}
|
|
372
|
+
// Check days per month
|
|
373
|
+
const days_in_month = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
|
|
374
|
+
let max_day = days_in_month[iso_date.month - 1];
|
|
375
|
+
// Adjust for leap year in February
|
|
376
|
+
if (iso_date.month === 2 && is_leap_year(iso_date.year)) {
|
|
377
|
+
max_day = 29;
|
|
378
|
+
}
|
|
379
|
+
if (iso_date.day > max_day) {
|
|
380
|
+
abort(`Invalid day: ${iso_date.day}. Month ${iso_date.month} has at most ${max_day} days`);
|
|
381
|
+
}
|
|
382
|
+
const full_years = iso_date.year - 1;
|
|
383
|
+
const leap_days_before_current_year = t_leap_days_before_year.Year(full_years);
|
|
384
|
+
const total_days_before_current_year = full_years * 365 + leap_days_before_current_year;
|
|
385
|
+
const month_days = is_leap_year(iso_date.year)
|
|
386
|
+
? month_day_table_leap
|
|
387
|
+
: month_day_table_normal;
|
|
388
|
+
const days_in_current_year = month_days[iso_date.month - 1] + iso_date.day;
|
|
389
|
+
// Calculate total days since January 1, year 1 CE
|
|
390
|
+
const total_days_since_iso_year_1 = total_days_before_current_year + days_in_current_year;
|
|
391
|
+
// Convert to UDHR day number (add days from 1948-12-10)
|
|
392
|
+
const udhr_day = total_days_since_iso_year_1 + iso_day_0_offset;
|
|
393
|
+
return udhr_day;
|
|
394
|
+
};
|
|
395
|
+
export const octal = ($, abort) => {
|
|
396
|
+
const characters = $;
|
|
397
|
+
let result = 0;
|
|
398
|
+
let isNegative = false;
|
|
399
|
+
let startIndex = 0;
|
|
400
|
+
// Check for empty string
|
|
401
|
+
if (p_t.from.list(characters).amount_of_items() === 0) {
|
|
402
|
+
abort("Empty string is not a valid octal number");
|
|
403
|
+
}
|
|
404
|
+
const get_character_at = (index) => characters.__deprecated_get_item_at(index, {
|
|
405
|
+
out_of_bounds: () => abort("Index out of bounds while parsing octal string"),
|
|
406
|
+
});
|
|
407
|
+
// Check for negative sign
|
|
408
|
+
if (p_t.from.list(characters).amount_of_items() > 0 && get_character_at(0) === 45) { // '-'
|
|
409
|
+
isNegative = true;
|
|
410
|
+
startIndex = 1;
|
|
411
|
+
}
|
|
412
|
+
// Check for "0o" prefix - REQUIRE it for octal
|
|
413
|
+
if (p_t.from.list(characters).amount_of_items() <= startIndex + 1 ||
|
|
414
|
+
get_character_at(startIndex) !== 48 || // '0'
|
|
415
|
+
get_character_at(startIndex + 1) !== 111) { // 'o'
|
|
416
|
+
abort("Octal number must have '0o' prefix");
|
|
417
|
+
}
|
|
418
|
+
startIndex += 2;
|
|
419
|
+
// Check if there are digits after the prefix
|
|
420
|
+
if (startIndex >= p_t.from.list(characters).amount_of_items()) {
|
|
421
|
+
abort("Octal number must have digits after '0o' prefix");
|
|
422
|
+
}
|
|
423
|
+
// Parse octal digits from left to right
|
|
424
|
+
for (let i = startIndex; i < p_t.from.list(characters).amount_of_items(); i++) {
|
|
425
|
+
const charCode = get_character_at(i);
|
|
426
|
+
// Check if character is an octal digit (48-55 for '0'-'7')
|
|
427
|
+
if (charCode >= 48 && charCode <= 55) { // '0'-'7'
|
|
428
|
+
const digit = charCode - 48;
|
|
429
|
+
result = result * 8 + digit;
|
|
430
|
+
}
|
|
431
|
+
else {
|
|
432
|
+
// Invalid character
|
|
433
|
+
abort("Invalid character in octal string");
|
|
434
|
+
}
|
|
435
|
+
}
|
|
436
|
+
return isNegative ? -result : result;
|
|
437
|
+
};
|
|
438
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdF9vZl9jaGFyYWN0ZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2ltcGxlbWVudGF0aW9uL3JlZmluZXJzL3ByaW1pdGl2ZXMvbGlzdF9vZl9jaGFyYWN0ZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLE1BQU0sb0NBQW9DLENBQUE7QUFDeEQsT0FBTyxLQUFLLEdBQUcsTUFBTSx3Q0FBd0MsQ0FBQTtBQUc3RCxPQUFPLGdCQUFnQixNQUFNLGdFQUFnRSxDQUFBO0FBSzdGLGNBQWM7QUFDZCxPQUFPLEtBQUssdUJBQXVCLE1BQU0sa0RBQWtELENBQUE7QUFFM0YsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUVoQixDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRTtJQUNiLE1BQU0sVUFBVSxHQUFHLENBQUMsQ0FBQTtJQUNwQixJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUE7SUFDZCxJQUFJLFVBQVUsR0FBRyxLQUFLLENBQUE7SUFDdEIsSUFBSSxVQUFVLEdBQUcsQ0FBQyxDQUFBO0lBRWxCLDhCQUE4QjtJQUM5Qix3QkFBd0I7SUFDeEIsc0JBQXNCO0lBQ3RCLHNDQUFzQztJQUN0QyxvQkFBb0I7SUFDcEIsU0FBUztJQUNULDZFQUE2RTtJQUM3RSxLQUFLO0lBRUwseUJBQXlCO0lBQ3pCLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsZUFBZSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDcEQsS0FBSyxDQUFDLDRDQUE0QyxDQUFDLENBQUE7SUFDdkQsQ0FBQztJQUVELE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxLQUFhLEVBQVUsRUFBRTtRQUMvQyxPQUFPLFVBQVUsQ0FBQyx3QkFBd0IsQ0FDdEMsS0FBSyxFQUNMO1lBQ0ksYUFBYSxFQUFFLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQztTQUNwRCxD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
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type * as interface_ from "
|
|
1
|
+
import type * as interface_ from "../../../declarations/refiners/unmarshalled/astn_parse_tree.js";
|
|
2
2
|
export declare const Number: interface_.Number;
|
|
3
3
|
export declare const Boolean: interface_.Boolean;
|
|
4
4
|
export declare const Dictionary: interface_.Dictionary;
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import * as p_ from 'pareto-core/implementation/refiner';
|
|
2
|
+
import p_list_from_text from 'pareto-core/implementation/refiner/specials/list_from_text';
|
|
3
|
+
import p_change_context from 'pareto-core/implementation/refiner/specials/change_context';
|
|
4
|
+
//dependencies
|
|
5
|
+
import * as t_parse_tree_to_location from "../../transformers/parse_tree/start_token_range.js";
|
|
6
|
+
import * as r_astn_unmarshalled_from_parse_tree from "astn-core/implementation/refiners/unmarshalled/parse_tree";
|
|
7
|
+
import * as t_from_loc from "../primitives/list_of_characters.js";
|
|
8
|
+
export const Number = ($, abort, $p) => {
|
|
9
|
+
const value = $;
|
|
10
|
+
const as_loc = p_list_from_text(r_astn_unmarshalled_from_parse_tree.Text($, ($) => abort(['astn', $])).token.value, ($) => $);
|
|
11
|
+
return p_.from.state($p.type).decide(($) => {
|
|
12
|
+
switch ($[0]) {
|
|
13
|
+
case 'binary': return p_.option($, ($) => t_from_loc.binary(as_loc, ($) => abort(['liana', {
|
|
14
|
+
'type': ['not a valid number', {
|
|
15
|
+
'expected format': "-?(0|1)+"
|
|
16
|
+
}],
|
|
17
|
+
range: t_parse_tree_to_location.Value(value, { 'subdocument context': $p['subdocument context'] })
|
|
18
|
+
}])));
|
|
19
|
+
case 'decimal': return p_.option($, ($) => t_from_loc.decimal(as_loc, ($) => abort(['liana', {
|
|
20
|
+
'type': ['not a valid number', {
|
|
21
|
+
'expected format': "-?(0|[1-9][0-9]*)"
|
|
22
|
+
}],
|
|
23
|
+
range: t_parse_tree_to_location.Value(value, { 'subdocument context': $p['subdocument context'] })
|
|
24
|
+
}])));
|
|
25
|
+
case 'fractional decimal': return p_.option($, ($) => t_from_loc.fractional_decimal(as_loc, ($) => abort(['liana', {
|
|
26
|
+
'type': ['not a valid number', {
|
|
27
|
+
'expected format': "-?(0|[1-9][0-9]*)(\\.[0-9]+)?"
|
|
28
|
+
}],
|
|
29
|
+
range: t_parse_tree_to_location.Value(value, { 'subdocument context': $p['subdocument context'] })
|
|
30
|
+
}]), {
|
|
31
|
+
'number of fractional digits': $.digits
|
|
32
|
+
}));
|
|
33
|
+
case 'hexadecimal': return p_.option($, ($) => t_from_loc.hexadecimal(as_loc, ($) => abort(['liana', {
|
|
34
|
+
'type': ['not a valid number', {
|
|
35
|
+
'expected format': "-?0x(0|[1-9a-fA-F][0-9a-fA-F]*)"
|
|
36
|
+
}],
|
|
37
|
+
range: t_parse_tree_to_location.Value(value, { 'subdocument context': $p['subdocument context'] })
|
|
38
|
+
}])));
|
|
39
|
+
case 'iso date': return p_.option($, ($) => t_from_loc.iso_date_udhr(as_loc, ($) => abort(['liana', {
|
|
40
|
+
'type': ['not a valid number', {
|
|
41
|
+
'expected format': "YYYY-MM-DD"
|
|
42
|
+
}],
|
|
43
|
+
range: t_parse_tree_to_location.Value(value, { 'subdocument context': $p['subdocument context'] })
|
|
44
|
+
}])));
|
|
45
|
+
case 'octal': return p_.option($, ($) => t_from_loc.octal(as_loc, ($) => abort(['liana', {
|
|
46
|
+
'type': ['not a valid number', {
|
|
47
|
+
'expected format': "-?0o(0|[1-7][0-7]*)"
|
|
48
|
+
}],
|
|
49
|
+
range: t_parse_tree_to_location.Value(value, { 'subdocument context': $p['subdocument context'] })
|
|
50
|
+
}])));
|
|
51
|
+
case 'scientific notation': return p_.option($, ($) => t_from_loc.scientific_notation(as_loc, ($) => abort(['liana', {
|
|
52
|
+
'type': ['not a valid number', {
|
|
53
|
+
'expected format': "-?(0|[1-9][0-9]*)(\\.[0-9]+)?([eE][+-]?[0-9]+)?"
|
|
54
|
+
}],
|
|
55
|
+
range: t_parse_tree_to_location.Value(value, { 'subdocument context': $p['subdocument context'] })
|
|
56
|
+
}]), {
|
|
57
|
+
'precision': $.precision
|
|
58
|
+
}));
|
|
59
|
+
default: return p_.exhaustive($[0]);
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
};
|
|
63
|
+
export const Boolean = ($, abort, $p) => {
|
|
64
|
+
const value = $;
|
|
65
|
+
const as_loc = p_list_from_text(r_astn_unmarshalled_from_parse_tree.Text($, ($) => abort(['astn', $])).token.value, ($) => $);
|
|
66
|
+
return p_.from.state($p.type).decide(($) => {
|
|
67
|
+
switch ($[0]) {
|
|
68
|
+
case 'true/false': return p_.option($, ($) => t_from_loc.true_false(as_loc, ($) => abort(['liana', {
|
|
69
|
+
'type': ['not a valid boolean', {
|
|
70
|
+
'expected format': "true|false"
|
|
71
|
+
}],
|
|
72
|
+
range: t_parse_tree_to_location.Value(value, { 'subdocument context': $p['subdocument context'] })
|
|
73
|
+
}])));
|
|
74
|
+
default: return p_.exhaustive($[0]);
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
};
|
|
78
|
+
export const Dictionary = ($, abort, $p) => {
|
|
79
|
+
return p_change_context(r_astn_unmarshalled_from_parse_tree.Dictionary($, ($) => abort(['astn', $])), ($) => {
|
|
80
|
+
const value = $.value;
|
|
81
|
+
return {
|
|
82
|
+
'value': $.value,
|
|
83
|
+
'entries': p_.from.dictionary($.entries).map(($, id) => p_.from.optional($.assignment).decide(($) => p_.from.optional($.value).decide(($) => $, () => abort(['liana', {
|
|
84
|
+
'range': t_parse_tree_to_location.Value(value, { 'subdocument context': $p['subdocument context'] }),
|
|
85
|
+
'type': ['dictionary', ['entry not set', id]]
|
|
86
|
+
}])), () => abort(['liana', {
|
|
87
|
+
'range': t_parse_tree_to_location.Value(value, { 'subdocument context': $p['subdocument context'] }),
|
|
88
|
+
'type': ['dictionary', ['entry not set', id]]
|
|
89
|
+
}])))
|
|
90
|
+
};
|
|
91
|
+
});
|
|
92
|
+
};
|
|
93
|
+
export const List = ($, abort) => {
|
|
94
|
+
return r_astn_unmarshalled_from_parse_tree.List($, ($) => abort(['astn', $]));
|
|
95
|
+
};
|
|
96
|
+
export const Nothing = ($, abort) => r_astn_unmarshalled_from_parse_tree.Nothing($, ($) => abort(['astn', $])).null;
|
|
97
|
+
export const Optional = ($, abort) => r_astn_unmarshalled_from_parse_tree.Optional($, ($) => abort(['astn', $]));
|
|
98
|
+
export const Property = ($, abort, $p) => p_.from.dictionary($.properties).get_entry($p.id, {
|
|
99
|
+
no_such_entry: () => abort(['liana', {
|
|
100
|
+
'range': t_parse_tree_to_location.Value($.value, { 'subdocument context': $p['subdocument context'] }),
|
|
101
|
+
'type': ['type', ['missing property', $p.id]]
|
|
102
|
+
}])
|
|
103
|
+
});
|
|
104
|
+
export const State = ($, abort) => r_astn_unmarshalled_from_parse_tree.State($, ($) => abort(['astn', $]));
|
|
105
|
+
export const Text = ($, abort) => r_astn_unmarshalled_from_parse_tree.Text($, ($) => abort(['astn', $])).token.value;
|
|
106
|
+
export const Verbose_Group = ($, abort, $p) => {
|
|
107
|
+
return p_change_context(r_astn_unmarshalled_from_parse_tree.Verbose_Group($, ($) => abort(['astn', $]), $p), ($) => {
|
|
108
|
+
const value = $.value;
|
|
109
|
+
return {
|
|
110
|
+
'value': $.value,
|
|
111
|
+
'properties': p_.from.dictionary($.properties).map(($, id) => p_.from.optional($.assignment).decide(($) => p_.from.optional($.value).decide(($) => $, () => abort(['liana', {
|
|
112
|
+
'range': t_parse_tree_to_location.Value(value, { 'subdocument context': $p['subdocument context'] }),
|
|
113
|
+
'type': ['dictionary', ['entry not set', id]]
|
|
114
|
+
}])), () => abort(['liana', {
|
|
115
|
+
'range': t_parse_tree_to_location.Value(value, { 'subdocument context': $p['subdocument context'] }),
|
|
116
|
+
'type': ['dictionary', ['entry not set', id]]
|
|
117
|
+
}])))
|
|
118
|
+
};
|
|
119
|
+
});
|
|
120
|
+
};
|
|
121
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN0bl9wYXJzZV90cmVlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2ltcGxlbWVudGF0aW9uL3JlZmluZXJzL3VubWFyc2hhbGxlZC9hc3RuX3BhcnNlX3RyZWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQTtBQUN4RCxPQUFPLGdCQUFnQixNQUFNLDREQUE0RCxDQUFBO0FBQ3pGLE9BQU8sZ0JBQWdCLE1BQU0sNERBQTRELENBQUE7QUFJekYsY0FBYztBQUNkLE9BQU8sS0FBSyx3QkFBd0IsTUFBTSxvREFBb0QsQ0FBQTtBQUM5RixPQUFPLEtBQUssbUNBQW1DLE1BQU0sMkRBQTJELENBQUE7QUFDaEgsT0FBTyxLQUFLLFVBQVUsTUFBTSxxQ0FBcUMsQ0FBQTtBQUVqRSxNQUFNLENBQUMsTUFBTSxNQUFNLEdBQXNCLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBRTtJQUN0RCxNQUFNLEtBQUssR0FBRyxDQUFDLENBQUE7SUFFZixNQUFNLE1BQU0sR0FBRyxnQkFBZ0IsQ0FDM0IsbUNBQW1DLENBQUMsSUFBSSxDQUNwQyxDQUFDLEVBQ0QsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUM1QixDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQ2IsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FDWCxDQUFBO0lBRUQsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUNoQyxDQUFDLENBQUMsRUFBRSxFQUFFO1FBQ0YsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNYLEtBQUssUUFBUSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsRUFB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
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import * as p_ from 'pareto-core/implementation/transformer';
|
|
2
|
+
//dependencies
|
|
3
|
+
import * as t_deserialize_parse_tree_to_location from "astn-core/implementation/transformers/deserialize_parse_tree/location";
|
|
4
|
+
import * as t_unmarshall_to_location from "../unmarshall/location_in_main_document.js";
|
|
5
|
+
export const Error = ($) => p_.from.state($).decide(($) => {
|
|
6
|
+
switch ($[0]) {
|
|
7
|
+
case 'parse error': return p_.option($, ($) => t_deserialize_parse_tree_to_location.Error($));
|
|
8
|
+
case 'unmarshall error': return p_.option($, ($) => ['range', t_unmarshall_to_location.Error($)]);
|
|
9
|
+
default: return p_.exhaustive($[0]);
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvaW1wbGVtZW50YXRpb24vdHJhbnNmb3JtZXJzL2Rlc2VyaWFsaXplL2xvY2F0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLE1BQU0sd0NBQXdDLENBQUE7QUFJNUQsY0FBYztBQUNkLE9BQU8sS0FBSyxvQ0FBb0MsTUFBTSx1RUFBdUUsQ0FBQTtBQUM3SCxPQUFPLEtBQUssd0JBQXdCLE1BQU0sNENBQTRDLENBQUE7QUFFdEYsTUFBTSxDQUFDLE1BQU0sS0FBSyxHQUFxQixDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUNqRSxDQUFDLENBQUMsRUFBRSxFQUFFO0lBQ0YsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNYLEtBQUssYUFBYSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsb0NBQW9DLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDN0YsS0FBSyxrQkFBa0IsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLHdCQUF3QixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDakcsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ3ZDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQSJ9
|