@camphoric/camphoric-event-import-tools 2.0.0 → 2.2.0
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/CHANGELOG.md +19 -0
- package/CamphoricEventCreator.ts +210 -15
- package/README.md +59 -5
- package/dist/CamphoricEventCreator.d.ts +30 -4
- package/dist/CamphoricEventCreator.d.ts.map +1 -1
- package/dist/CamphoricEventCreator.js +163 -15
- package/dist/CamphoricEventCreator.js.map +1 -1
- package/dist/e2e.d.ts +17 -3
- package/dist/e2e.d.ts.map +1 -1
- package/dist/e2e.js +60 -7
- package/dist/e2e.js.map +1 -1
- package/dist/e2eAdmin.d.ts +59 -0
- package/dist/e2eAdmin.d.ts.map +1 -0
- package/dist/e2eAdmin.js +103 -0
- package/dist/e2eAdmin.js.map +1 -0
- package/dist/e2eImport.d.ts +1 -0
- package/dist/e2eImport.d.ts.map +1 -1
- package/dist/e2eImport.js +8 -4
- package/dist/e2eImport.js.map +1 -1
- package/dist/e2ePayPal.d.ts +34 -0
- package/dist/e2ePayPal.d.ts.map +1 -0
- package/dist/e2ePayPal.js +104 -0
- package/dist/e2ePayPal.js.map +1 -0
- package/dist/e2eRegistrationForm.d.ts +42 -0
- package/dist/e2eRegistrationForm.d.ts.map +1 -1
- package/dist/e2eRegistrationForm.js +99 -0
- package/dist/e2eRegistrationForm.js.map +1 -1
- package/dist/e2eServer.d.ts +2 -0
- package/dist/e2eServer.d.ts.map +1 -1
- package/dist/e2eServer.js +14 -1
- package/dist/e2eServer.js.map +1 -1
- package/dist/types.d.ts +21 -0
- package/dist/types.d.ts.map +1 -1
- package/e2e-compose.yml +38 -3
- package/e2e.ts +67 -9
- package/e2eAdmin.ts +174 -0
- package/e2eFakePayPal.py +112 -0
- package/e2eImport.ts +13 -2
- package/e2ePayPal.ts +129 -0
- package/e2eRegistrationForm.ts +108 -0
- package/e2eServer.ts +19 -1
- package/package.json +4 -1
- package/types.ts +21 -0
|
@@ -18,10 +18,12 @@
|
|
|
18
18
|
* ---------
|
|
19
19
|
*
|
|
20
20
|
* data: an event import object (the spec's EventImport), checked first with
|
|
21
|
-
* `validate`, the spec's validateEventImport
|
|
22
|
-
*
|
|
23
|
-
* `
|
|
24
|
-
*
|
|
21
|
+
* `validate`, the spec's validateEventImport, and then for names it refers to
|
|
22
|
+
* (a promo code's excluded registration types must be the event's). Every
|
|
23
|
+
* field of `data.event` is sent to the events API as-is, including optional
|
|
24
|
+
* ones such as `registration_error_messages` (custom validation messages for
|
|
25
|
+
* the registration form), except its emails' fields, which are set on the
|
|
26
|
+
* event's confirmation and invoice email templates.
|
|
25
27
|
*
|
|
26
28
|
* sampleRegGenerator: a SampleRegGenerator, called with
|
|
27
29
|
* - fetch: a fetch function
|
|
@@ -38,6 +40,47 @@ import lodash from 'lodash';
|
|
|
38
40
|
import Fetcher from "./CamphoricFetcher.js";
|
|
39
41
|
import { Organizations } from "./organizations.js";
|
|
40
42
|
import { formatDate, formatDateTime } from "./utils.js";
|
|
43
|
+
// A group email's fields, as a new template has them: one the data leaves out
|
|
44
|
+
// is set to this, so a template matched by name ends up as the data declares it.
|
|
45
|
+
const GROUP_EMAIL_DEFAULTS = {
|
|
46
|
+
from_email: '',
|
|
47
|
+
reply_to: '',
|
|
48
|
+
recipient_source: 'registrations',
|
|
49
|
+
filter: {},
|
|
50
|
+
filter_expression: '',
|
|
51
|
+
address_expression: '',
|
|
52
|
+
name_expression: '',
|
|
53
|
+
recipient_list: '',
|
|
54
|
+
include_incomplete: false,
|
|
55
|
+
};
|
|
56
|
+
// Likewise for a promo code
|
|
57
|
+
const PROMO_CODE_DEFAULTS = {
|
|
58
|
+
scope: 'registration',
|
|
59
|
+
enabled: true,
|
|
60
|
+
expiration_date: null,
|
|
61
|
+
excluded_registration_types: [],
|
|
62
|
+
excludes_uninvited: false,
|
|
63
|
+
};
|
|
64
|
+
/**
|
|
65
|
+
* What the import data names that it doesn't hold: each promo code's excluded
|
|
66
|
+
* registration types must be among the event's. An empty list when there are
|
|
67
|
+
* none.
|
|
68
|
+
*/
|
|
69
|
+
export function referenceProblems(data) {
|
|
70
|
+
const typeNames = new Set(data.registration_types.map(t => t.name));
|
|
71
|
+
return (data.promo_codes ?? []).flatMap(promo => (promo.excluded_registration_types ?? [])
|
|
72
|
+
.filter(name => !typeNames.has(name))
|
|
73
|
+
.map(name => `promo code '${promo.code}' excludes registration type '${name}', which the event doesn't have`));
|
|
74
|
+
}
|
|
75
|
+
/** The problems a template check found that are errors, by template. */
|
|
76
|
+
export function templateErrors(results) {
|
|
77
|
+
return results.flatMap(result => result.diagnostics
|
|
78
|
+
.filter(d => d.severity === 'error')
|
|
79
|
+
.map(d => {
|
|
80
|
+
const where = [d.field, d.line ? `line ${d.line}` : ''].filter(Boolean).join(', ');
|
|
81
|
+
return `${result.label}${where ? ` (${where})` : ''}: ${d.message}`;
|
|
82
|
+
}));
|
|
83
|
+
}
|
|
41
84
|
/**
|
|
42
85
|
* Requests started ahead of the Promise.all that collects them, pausing
|
|
43
86
|
* between batches so the server keeps up. Each is handled as it starts, so
|
|
@@ -67,6 +110,10 @@ export default class CamphoricEventCreator extends Fetcher {
|
|
|
67
110
|
if (errors.length) {
|
|
68
111
|
throw this.error('event data object did not pass JSON schema validation', ...errors);
|
|
69
112
|
}
|
|
113
|
+
const references = referenceProblems(data);
|
|
114
|
+
if (references.length) {
|
|
115
|
+
throw this.error('event data object names what it does not hold', ...references);
|
|
116
|
+
}
|
|
70
117
|
this.setOrganizations(organizations, data.organization);
|
|
71
118
|
if (sampleRegGenerator) {
|
|
72
119
|
if (typeof sampleRegGenerator !== 'function') {
|
|
@@ -116,8 +163,9 @@ export default class CamphoricEventCreator extends Fetcher {
|
|
|
116
163
|
const existingEvent = events.find(event => event.name === this.data.event.name);
|
|
117
164
|
const emailAccounts = await this.fetch('GET', '/api/emailaccounts/');
|
|
118
165
|
const email = emailAccounts.find(e => e.organization === org.id);
|
|
119
|
-
// The confirmation
|
|
120
|
-
|
|
166
|
+
// The confirmation and invoice emails are the event's email templates,
|
|
167
|
+
// updated below.
|
|
168
|
+
const { confirmation_email_subject, confirmation_email_template, confirmation_email_reply_to, invoice_email_subject, invoice_email_template, invoice_email_from, invoice_email_reply_to, ...eventData } = this.data.event;
|
|
121
169
|
const event = {
|
|
122
170
|
organization: org.id,
|
|
123
171
|
...eventData,
|
|
@@ -136,19 +184,32 @@ export default class CamphoricEventCreator extends Fetcher {
|
|
|
136
184
|
event.confirmation_email_from || email.account;
|
|
137
185
|
}
|
|
138
186
|
const eventResponse = await this.fetch(existingEvent ? 'PUT' : 'POST', `/api/events/${existingEvent ? event.id : ''}`, event);
|
|
139
|
-
await this.
|
|
187
|
+
await this.updateEmailTemplate(eventResponse.confirmation_template, {
|
|
188
|
+
subject: confirmation_email_subject,
|
|
189
|
+
body: confirmation_email_template,
|
|
190
|
+
reply_to: confirmation_email_reply_to,
|
|
191
|
+
});
|
|
192
|
+
await this.updateEmailTemplate(eventResponse.invoice_template, {
|
|
193
|
+
subject: invoice_email_subject,
|
|
194
|
+
body: invoice_email_template,
|
|
195
|
+
from_email: invoice_email_from,
|
|
196
|
+
reply_to: invoice_email_reply_to,
|
|
197
|
+
});
|
|
140
198
|
this.results.event = eventResponse;
|
|
141
199
|
return eventResponse;
|
|
142
200
|
}
|
|
143
201
|
// An event's confirmation and a registration type's invitation are email
|
|
144
202
|
// templates, created with them (SPEC DR-45); set the text the data gives.
|
|
145
203
|
async loadEmailTemplate(templateId, subject, body) {
|
|
146
|
-
|
|
204
|
+
await this.updateEmailTemplate(templateId, { subject, body });
|
|
205
|
+
}
|
|
206
|
+
// Set the fields of an email template created with its event or
|
|
207
|
+
// registration type that the data gives (an undefined one is left as is).
|
|
208
|
+
async updateEmailTemplate(templateId, fields) {
|
|
209
|
+
const given = Object.fromEntries(Object.entries(fields).filter(([, value]) => value !== undefined));
|
|
210
|
+
if (!templateId || !Object.keys(given).length)
|
|
147
211
|
return;
|
|
148
|
-
await this.fetch('PATCH', `/api/emailtemplates/${templateId}/`,
|
|
149
|
-
...(subject !== undefined ? { subject } : {}),
|
|
150
|
-
...(body !== undefined ? { body } : {}),
|
|
151
|
-
});
|
|
212
|
+
await this.fetch('PATCH', `/api/emailtemplates/${templateId}/`, given);
|
|
152
213
|
}
|
|
153
214
|
async loadLodgings() {
|
|
154
215
|
const event = this.savedEvent();
|
|
@@ -178,6 +239,7 @@ export default class CamphoricEventCreator extends Fetcher {
|
|
|
178
239
|
reserved: lodging.reserved || 0,
|
|
179
240
|
sharing_multiplier: lodging.sharing_multiplier || 1,
|
|
180
241
|
notes: lodging.notes || '',
|
|
242
|
+
availability: lodging.availability || 'auto',
|
|
181
243
|
};
|
|
182
244
|
const saved = await this.fetch('POST', '/api/lodgings/', data);
|
|
183
245
|
createdLodging = saved;
|
|
@@ -234,18 +296,100 @@ export default class CamphoricEventCreator extends Fetcher {
|
|
|
234
296
|
const event = this.savedEvent();
|
|
235
297
|
const response = await this.fetch('GET', '/api/registrationtypes/');
|
|
236
298
|
const existingRegTypes = response.filter(regType => regType.event === event.id);
|
|
237
|
-
await Promise.all(this.data.registration_types.map(async (regType) => {
|
|
299
|
+
this.results.registration_types = await Promise.all(this.data.registration_types.map(async (regType) => {
|
|
238
300
|
const exists = existingRegTypes.find(r => r.name === regType.name);
|
|
239
|
-
const { invitation_email_subject: subject, invitation_email_template: body, ...typeData } = regType;
|
|
301
|
+
const { invitation_email_subject: subject, invitation_email_template: body, invitation_email_from: from_email, invitation_email_reply_to: reply_to, ...typeData } = regType;
|
|
240
302
|
const saved = await this.fetch(exists ? 'PUT' : 'POST', `/api/registrationtypes${exists ? `/${exists.id}` : ''}/`, {
|
|
241
303
|
...typeData,
|
|
242
304
|
...(exists ? { id: exists.id } : {}),
|
|
243
305
|
event: event.id,
|
|
244
306
|
});
|
|
245
|
-
await this.
|
|
307
|
+
await this.updateEmailTemplate(saved.invitation_template, { subject, body, from_email, reply_to });
|
|
246
308
|
return saved;
|
|
247
309
|
}));
|
|
248
310
|
}
|
|
311
|
+
// The event's group emails (SPEC §8.9): each one the data declares is
|
|
312
|
+
// created, or, when the event has one by its name, updated to match.
|
|
313
|
+
// Others the event has are left alone.
|
|
314
|
+
async loadGroupEmails() {
|
|
315
|
+
const { email_templates } = this.data;
|
|
316
|
+
if (!email_templates || !email_templates.length)
|
|
317
|
+
return;
|
|
318
|
+
const event = this.savedEvent();
|
|
319
|
+
const all = await this.fetch('GET', '/api/emailtemplates/');
|
|
320
|
+
const existing = all.filter(t => t.event === event.id && t.purpose === 'group');
|
|
321
|
+
this.results.email_templates = await Promise.all(email_templates.map((template) => {
|
|
322
|
+
const exists = existing.find(t => t.name === template.name);
|
|
323
|
+
return this.fetch(exists ? 'PUT' : 'POST', `/api/emailtemplates/${exists ? `${exists.id}/` : ''}`, { ...GROUP_EMAIL_DEFAULTS, ...template, purpose: 'group', event: event.id });
|
|
324
|
+
}));
|
|
325
|
+
}
|
|
326
|
+
// The event's promo codes (SPEC DR-67): each one the data declares is
|
|
327
|
+
// created, or, when the event has a live one with its code (ignoring case),
|
|
328
|
+
// updated to match. Its excluded registration types are given by name, so
|
|
329
|
+
// this runs once they're saved. Others the event has are left alone.
|
|
330
|
+
async loadPromoCodes() {
|
|
331
|
+
const { promo_codes } = this.data;
|
|
332
|
+
if (!promo_codes || !promo_codes.length)
|
|
333
|
+
return;
|
|
334
|
+
const event = this.savedEvent();
|
|
335
|
+
const regTypes = this.results.registration_types ?? [];
|
|
336
|
+
// Every code is worked out before any is sent, so a problem sends none.
|
|
337
|
+
const bodies = promo_codes.map((promo) => {
|
|
338
|
+
const excluded = (promo.excluded_registration_types ?? []).map((name) => {
|
|
339
|
+
const regType = regTypes.find(t => t.name === name);
|
|
340
|
+
if (!regType) {
|
|
341
|
+
throw this.error(`promo code '${promo.code}' excludes registration type '${name}', which was not imported`);
|
|
342
|
+
}
|
|
343
|
+
return regType.id;
|
|
344
|
+
});
|
|
345
|
+
// An expiry that can't be read must not save as "never expires"
|
|
346
|
+
const expiration = formatDateTime(promo.expiration_date);
|
|
347
|
+
if (promo.expiration_date !== undefined && expiration === undefined) {
|
|
348
|
+
throw this.error(`promo code '${promo.code}' has an expiration_date that can't be read: '${promo.expiration_date}'`);
|
|
349
|
+
}
|
|
350
|
+
return {
|
|
351
|
+
...PROMO_CODE_DEFAULTS,
|
|
352
|
+
...promo,
|
|
353
|
+
expiration_date: expiration ?? null,
|
|
354
|
+
excluded_registration_types: excluded,
|
|
355
|
+
event: event.id,
|
|
356
|
+
};
|
|
357
|
+
});
|
|
358
|
+
const all = await this.fetch('GET', '/api/promocodes/');
|
|
359
|
+
const existing = all.filter(p => p.event === event.id);
|
|
360
|
+
const sameCode = (a, b) => String(a).trim().toLowerCase() === b.trim().toLowerCase();
|
|
361
|
+
this.results.promo_codes = await Promise.all(bodies.map((body) => {
|
|
362
|
+
const exists = existing.find(p => sameCode(p.code, body.code));
|
|
363
|
+
return this.fetch(exists ? 'PUT' : 'POST', `/api/promocodes/${exists ? `${exists.id}/` : ''}`, body);
|
|
364
|
+
}));
|
|
365
|
+
}
|
|
366
|
+
// Check every template of the event through the server (SPEC §9.3), as
|
|
367
|
+
// `manage.py check_templates` does: each is rendered against the event's
|
|
368
|
+
// registrations (or, with none, parsed), so one that won't render fails the
|
|
369
|
+
// import rather than its first send.
|
|
370
|
+
async checkTemplates() {
|
|
371
|
+
const event = this.savedEvent();
|
|
372
|
+
const token = await this.getAuthToken();
|
|
373
|
+
// (Not this.fetch, which ends every path with a slash: this one has none.)
|
|
374
|
+
const res = await fetch(`${this.urlBase}/api/events/${event.id}/templates/check`, {
|
|
375
|
+
headers: { 'Authorization': `Token ${token}` },
|
|
376
|
+
});
|
|
377
|
+
const text = await res.text();
|
|
378
|
+
let json;
|
|
379
|
+
try {
|
|
380
|
+
json = JSON.parse(text);
|
|
381
|
+
}
|
|
382
|
+
catch {
|
|
383
|
+
throw this.error(`template check returned non-JSON (${res.status})`, { status: res.status, body: text });
|
|
384
|
+
}
|
|
385
|
+
if (!res.ok) {
|
|
386
|
+
throw this.error(`template check failed (${res.status})`, { status: res.status, response: json });
|
|
387
|
+
}
|
|
388
|
+
const errors = templateErrors(json.results ?? []);
|
|
389
|
+
if (errors.length) {
|
|
390
|
+
throw this.error(`${errors.length} template problem(s): ${errors.join('; ')}`, ...errors);
|
|
391
|
+
}
|
|
392
|
+
}
|
|
249
393
|
async loadTestRegs() {
|
|
250
394
|
if (!this.sampleRegGenerator)
|
|
251
395
|
return [];
|
|
@@ -358,6 +502,8 @@ export default class CamphoricEventCreator extends Fetcher {
|
|
|
358
502
|
await imp('custom charge types', this.loadCustomChargeTypes());
|
|
359
503
|
await imp('reports', this.loadReports());
|
|
360
504
|
await imp('registration types', this.loadRegTypes());
|
|
505
|
+
await imp('group emails', this.loadGroupEmails());
|
|
506
|
+
await imp('promo codes', this.loadPromoCodes());
|
|
361
507
|
await this.loadLodgings();
|
|
362
508
|
await imp('lodging', Promise.resolve());
|
|
363
509
|
// Run the overrides in series in case order matters
|
|
@@ -370,6 +516,8 @@ export default class CamphoricEventCreator extends Fetcher {
|
|
|
370
516
|
if (this.sampleRegGenerator && process.env.SKIP_TEST_REGS !== '1') {
|
|
371
517
|
await imp('test registrations', this.loadTestRegs());
|
|
372
518
|
}
|
|
519
|
+
// After the sample registrations, so the templates render against them
|
|
520
|
+
await imp('template check', this.checkTemplates());
|
|
373
521
|
this.log(`🎉 Finished Importing ${this.data.event.name}!`);
|
|
374
522
|
return true;
|
|
375
523
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CamphoricEventCreator.js","sourceRoot":"","sources":["../CamphoricEventCreator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AACjC,OAAO,WAAW,MAAM,cAAc,CAAC;AACvC,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,OAAO,OAAO,MAAM,uBAAuB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAqB,MAAM,oBAAoB,CAAC;AAWtE,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAiBxD;;;;;;GAMG;AACH,MAAM,UAAU,YAAY;IAC1B,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,OAAO;QACL,IAAI,MAAM,KAAK,OAAO,MAAM,CAAC,CAAC,CAAC;QAC/B,KAAK,CAAI,OAAmB;YAC1B,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACxC,OAAO,OAAO,CAAC;QACjB,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,OAAO,OAAO,qBAAsB,SAAQ,OAAO;IAExD,kBAAkB,CAAsB;IACxC,SAAS,CAAa;IACtB,OAAO,CAAgB;IACvB,YAAY,CAAqC;IAEjD,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,kBAAkB,EAAE,SAAS,GAAG,EAAE,EAAE,GAAG,EAAgC;QAClH,KAAK,CAAC,GAAG,CAAC,CAAC;QAEX,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QAEjB,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAE9B,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClB,MAAM,IAAI,CAAC,KAAK,CACd,uDAAuD,EACvD,GAAG,MAAM,CACV,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAExD,IAAI,kBAAkB,EAAE,CAAC;YACvB,IAAI,OAAO,kBAAkB,KAAK,UAAU,EAAE,CAAC;gBAC7C,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;YAC/E,CAAC;YAED,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;QAC/C,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACzD,CAAC;QAED,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,UAAU,CAAC,EAAE,CAAC;YACjD,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACzD,CAAC;QAED,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAE3B,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;IACpB,CAAC;IAED,UAAU,CAAC,IAAY;QACrB,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YACzC,IAAI,IAAI,GAAG,CAAC;QACd,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,4DAA4D;IAC5D,UAAU;QACR,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACxB,MAAM,IAAI,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;QACvD,CAAC;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;IAC5B,CAAC;IAED,0CAA0C;IAC1C,YAAY;QACV,IAAI,CAAC,UAAU,EAAE,CAAC;QAElB,OAAO,IAAI,CAAC,OAAuB,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,IAAY;QAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAChC,MAAM,QAAQ,GAAY,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC;aACpD,IAAI,CAAC,CAAC,GAAY,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;QAEjE,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAC5B,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAC9D,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,SAAS;QACb,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC;QACpC,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,IAAI,CAAC,KAAK,CAAC,iBAAiB,IAAI,CAAC,IAAI,CAAC,YAAY,aAAa,CAAC,CAAC;QACzE,CAAC;QAED,MAAM,MAAM,GAAY,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;QAEhE,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAEhF,MAAM,aAAa,GAAY,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;QAC9E,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC;QAEjE,uEAAuE;QACvE,MAAM,EACJ,0BAA0B,EAAE,OAAO,EACnC,2BAA2B,EAAE,IAAI,EACjC,GAAG,SAAS,EACb,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;QACpB,MAAM,KAAK,GAA4B;YACrC,YAAY,EAAE,GAAG,CAAC,EAAE;YACpB,GAAG,SAAS;YACZ,mEAAmE;YACnE,KAAK,EAAE,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC;YAClC,GAAG,EAAE,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC;YAC9B,kBAAkB,EAAE,cAAc,CAAC,SAAS,CAAC,kBAAkB,CAAC;YAChE,gBAAgB,EAAE,cAAc,CAAC,SAAS,CAAC,gBAAgB,CAAC;SAC7D,CAAC;QAEF,IAAI,aAAa,EAAE,CAAC;YAClB,KAAK,CAAC,EAAE,GAAG,aAAa,CAAC,EAAE,CAAC;QAC9B,CAAC;QAED,IAAI,KAAK,EAAE,CAAC;YACV,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,EAAE,CAAC;YAC/B,KAAK,CAAC,uBAAuB;gBAC3B,KAAK,CAAC,uBAAuB,IAAI,KAAK,CAAC,OAAO,CAAC;QACnD,CAAC;QAED,MAAM,aAAa,GAAU,MAAM,IAAI,CAAC,KAAK,CAC3C,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAC9B,eAAe,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAC9C,KAAK,CACN,CAAC;QAEF,MAAM,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,qBAAqB,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QAEjF,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,aAAa,CAAC;QACnC,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,yEAAyE;IACzE,0EAA0E;IAC1E,KAAK,CAAC,iBAAiB,CAAC,UAAmB,EAAE,OAAgB,EAAE,IAAa;QAC1E,IAAI,CAAC,UAAU,IAAI,CAAC,OAAO,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,CAAC;YAAE,OAAO;QACzE,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,uBAAuB,UAAU,GAAG,EAAE;YAC9D,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7C,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACxC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,SAAS,CACvC;YACE,MAAM,EAAE,2DAA2D;YACnE,eAAe,EAAE,IAAI;SACtB,EACD,WAAW,CAAC,OAAO,CAAC,cAAc,CACnC,CAAC;QAEF,yEAAyE;QACzE,MAAM,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;QAEvC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACxB,OAAO;QACT,CAAC;QAED,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;QACzC,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QACrD,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAExC,MAAM,aAAa,GAAG,KAAK,EAAE,GAAW,EAAE,OAAoB,EAAoB,EAAE;YAClF,IAAI,IAAI,EAAE,cAAiC,CAAC;YAC5C,IAAI,CAAC;gBACH,IAAI,GAAG;oBACL,KAAK,EAAE,KAAK,CAAC,EAAE;oBACf,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI;oBACtE,IAAI,EAAE,OAAO,CAAC,IAAI;oBAClB,cAAc,EAAE,OAAO,CAAC,cAAc;oBACtC,OAAO,EAAE,OAAO,CAAC,OAAO;oBACxB,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,CAAC;oBAC/B,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,CAAC;oBAC/B,kBAAkB,EAAE,OAAO,CAAC,kBAAkB,IAAI,CAAC;oBACnD,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,EAAE;iBAC3B,CAAC;gBACF,MAAM,KAAK,GAAU,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,gBAAgB,EAAE,IAAI,CAAC,CAAC;gBACtE,cAAc,GAAG,KAAK,CAAC;gBAEvB,SAAS,IAAI,CAAC,CAAC;gBACf,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;gBAC1B,IAAI,CAAC,UAAU,CAAC,mBAAmB,SAAS,IAAI,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC;gBAEzE,aAAa,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;YACnC,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAC,IAAI,EAAE,sBAAsB,EAAE,GAAG,EAAE,IAAI,EAAE,cAAc,EAAC,CAAC,CAAC;YACjF,CAAC;YAED,6CAA6C;YAC7C,MAAM,QAAQ,GAAG,EAAE,CAAC;YACpB,MAAM,QAAQ,GAAG,YAAY,EAAE,CAAC;YAChC,MAAM,GAAG,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,GAAG,CAAC,CAAC;YAClE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;gBACxD,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAExD,IAAI,QAAQ,CAAC,MAAM,GAAG,EAAE,KAAK,CAAC;oBAAE,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxD,CAAC;YAED,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC/B,CAAC,CAAC;QAEF,kDAAkD;QAClD,MAAM,aAAa,CAAC,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;QAChD,OAAO,CAAC,IAAI,EAAE,CAAC;QAEf,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,aAAa,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,WAAW;QACf,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAChC,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAC5D,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,eAAe,EAAE;YAC5C,KAAK,EAAE,KAAK,CAAC,EAAE;YACf,6EAA6E;YAC7E,gBAAgB,EAAE,QAAQ;YAC1B,GAAG,MAAM;SACV,CAAC,CACH,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,qBAAqB;QACzB,MAAM,EAAE,mBAAmB,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC;QAE1C,IAAI,CAAC,mBAAmB,IAAI,CAAC,mBAAmB,CAAC,MAAM;YAAE,OAAO;QAEhE,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAEhC,MAAM,QAAQ,GAAY,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,yBAAyB,CAAC,CAAC;QAE7E,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE,CAAC,CAAC;QAEpE,MAAM,OAAO,CAAC,GAAG,CACf,mBAAmB,CAAC,GAAG,CACrB,KAAK,EAAE,gBAAgB,EAAE,EAAE;YACzB,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,gBAAgB,CAAC,IAAI,CAAC,CAAC;YAEpE,OAAO,IAAI,CAAC,KAAK,CACf,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EACvB,yBAAyB,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EACzD;gBACE,GAAG,gBAAgB;gBACnB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpC,KAAK,EAAE,KAAK,CAAC,EAAE;aAChB,CACF,CAAC;QACJ,CAAC,CACF,CACF,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAEhC,MAAM,QAAQ,GAAY,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,yBAAyB,CAAC,CAAC;QAE7E,MAAM,gBAAgB,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE,CAAC,CAAC;QAEhF,MAAM,OAAO,CAAC,GAAG,CACf,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAC9B,KAAK,EAAE,OAAO,EAAE,EAAE;YAChB,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;YAEnE,MAAM,EACJ,wBAAwB,EAAE,OAAO,EACjC,yBAAyB,EAAE,IAAI,EAC/B,GAAG,QAAQ,EACZ,GAAG,OAAO,CAAC;YAEZ,MAAM,KAAK,GAAU,MAAM,IAAI,CAAC,KAAK,CACnC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EACvB,yBAAyB,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EACzD;gBACE,GAAG,QAAQ;gBACX,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpC,KAAK,EAAE,KAAK,CAAC,EAAE;aAChB,CACF,CAAC;YACF,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,mBAAmB,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;YACvE,OAAO,KAAK,CAAC;QACf,CAAC,CACF,CACF,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,IAAI,CAAC,IAAI,CAAC,kBAAkB;YAAE,OAAO,EAAE,CAAC;QAExC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QACxC,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAC5D,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EACrB,IAAI,CAAC,YAAY,EAAE,EACnB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CACpB,CAAC;QAEF,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAEhC,MAAM,OAAO,GAAG,KAAK,EAAE,QAA4B,EAA+B,EAAE;YAClF,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,eAAe,KAAK,CAAC,EAAE,WAAW,EAAE;gBACzE,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,cAAc,EAAE,kBAAkB;oBAClC,sEAAsE;oBACtE,gDAAgD;oBAChD,eAAe,EAAE,SAAS,KAAK,EAAE;iBAClC;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACnB,IAAI,EAAE,cAAc;oBACpB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;oBAC3B,cAAc,EAAE,QAAQ,CAAC,cAAc;iBACxC,CAAC;aACH,CAAC,CAAC;YAEH,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;YAE9B,4EAA4E;YAC5E,mEAAmE;YACnE,IAAI,IAAI,CAAC;YACT,IAAI,CAAC;gBACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC1B,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,IAAI,CAAC,KAAK,CACd,mDAAmD,GAAG,CAAC,MAAM,oBAAoB,EACjF,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CACnC,CAAC;YACJ,CAAC;YAED,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;gBACZ,MAAM,IAAI,CAAC,KAAK,CACd,0CAA0C,GAAG,CAAC,MAAM,GAAG,EACvD,EAAE,IAAI,EAAE,kBAAkB,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,QAAQ,EAAE,CACtE,CAAC;YACJ,CAAC;YAED,OAAO;gBACL,GAAG,QAAQ;gBACX,QAAQ,EAAE,IAAI,IAAI,EAAE;aACrB,CAAC;QACJ,CAAC,CAAC;QAEF,MAAM,WAAW,GAAG,KAAK,EAAE,QAA4B,EAA+B,EAAE;YACtF,qEAAqE;YACrE,sEAAsE;YACtE,2EAA2E;YAC3E,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,2BAA2B,CAAC,CAAC;YAExE,6EAA6E;YAC7E,MAAM,EAAE,KAAK,EAAE,GAAG,QAAQ,CAAC,QAAQ,CAAC;YACpC,MAAM,IAAI,GAAG;gBACX,IAAI,EAAE,SAAS;gBACf,gBAAgB,EAAE,QAAQ,CAAC,QAAQ,CAAC,gBAAgB;gBACpD,WAAW,EAAE,OAAO;gBACpB,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC3C,GAAG,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAChD,CAAC;YAEF,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,eAAe,KAAK,CAAC,EAAE,WAAW,EAAE;gBACzE,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,cAAc,EAAE,kBAAkB;oBAClC,sEAAsE;oBACtE,gDAAgD;oBAChD,eAAe,EAAE,SAAS,KAAK,EAAE;iBAClC;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;aAC3B,CAAC,CAAC;YAEH,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;YAE9B,IAAI,IAAI,CAAC;YACT,IAAI,CAAC;gBACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC1B,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,IAAI,CAAC,KAAK,CACd,8CAA8C,GAAG,CAAC,MAAM,oBAAoB,EAC5E,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CACnC,CAAC;YACJ,CAAC;YAED,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;gBACZ,MAAM,IAAI,CAAC,KAAK,CACd,qCAAqC,GAAG,CAAC,MAAM,GAAG,EAClD,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CACpD,CAAC;YACJ,CAAC;YAED,OAAO;gBACL,GAAG,QAAQ;gBACX,QAAQ,EAAE,IAAI,IAAI,EAAE;aACrB,CAAC;QAEJ,CAAC,CAAC;QAEF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;QACxE,CAAC;QAED,2BAA2B;QAC3B,MAAM,KAAK,GAAG,EAAE,CAAC;QACjB,MAAM,WAAW,GAAG,YAAY,EAAE,CAAC;QACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;YACrE,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAEzD,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC;gBAAE,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1C,CAAC;QACD,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAE3C,uBAAuB;QACvB,MAAM,KAAK,GAAG,EAAE,CAAC;QACjB,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;QAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;YAC5D,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAEpD,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC;gBAAE,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1C,CAAC;QAED,OAAO,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,MAAM;QACV,IAAI,CAAC,GAAG,CAAC,yBAAyB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;QAE3D,MAAM,GAAG,GAAG,CAAC,KAAa,EAAE,CAAmB,EAAE,EAAE,CAAC,UAAU,CAC5D,CAAC,EACD;YACE,IAAI,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,YAAY,KAAK,EAAE;YACjD,OAAO,EAAE,OAAO;SACjB,CACF,CAAC;QAEF,MAAM,GAAG,CAAC,cAAc,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;QAC9D,MAAM,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;QACrC,MAAM,GAAG,CAAC,qBAAqB,EAAE,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC;QAC/D,MAAM,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QACzC,MAAM,GAAG,CAAC,oBAAoB,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;QAErD,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QAC1B,MAAM,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QAExC,oDAAoD;QACpD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/C,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAExC,MAAM,GAAG,CAAC,YAAY,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,YAAY,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACnG,CAAC;QAED,6EAA6E;QAC7E,8DAA8D;QAC9D,IAAI,IAAI,CAAC,kBAAkB,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,KAAK,GAAG,EAAE,CAAC;YAClE,MAAM,GAAG,CAAC,oBAAoB,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;QACvD,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,yBAAyB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;QAE3D,OAAO,IAAI,CAAC;IACd,CAAC;IAED,gBAAgB,GAAG,KAAK,EAAE,aAAwC,EAAE,YAA6B,EAAE,EAAE;QACnG,IAAI,CAAC,CAAC,aAAa,YAAY,aAAa,CAAC,EAAE,CAAC;YAC9C,aAAa,GAAG,IAAI,aAAa,CAC/B,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAC/C,CAAC;QACJ,CAAC;QAED,mBAAmB;QACnB,IAAI,CAAC,YAAY,GAAG,IAAI,OAAO,CAC7B,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,aAAa,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAC/E,CAAC;QAEF,IAAI,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,iBAAiB,YAAY,aAAa,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC,CAAC;CACH"}
|
|
1
|
+
{"version":3,"file":"CamphoricEventCreator.js","sourceRoot":"","sources":["../CamphoricEventCreator.ts"],"names":[],"mappings":"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"}
|
package/dist/e2e.d.ts
CHANGED
|
@@ -20,9 +20,15 @@
|
|
|
20
20
|
* with its registration open, and removes the throwaway server when the tests
|
|
21
21
|
* end. Every test, on every device, shares that one event: a registration
|
|
22
22
|
* one test completes stays, taking up lodging capacity the others see.
|
|
23
|
+
*
|
|
24
|
+
* A throwaway server's PayPal is a fake (e2ePayPal.ts): with `onlinePayment`
|
|
25
|
+
* the payment step shows PayPal's buttons, and a test can read what the
|
|
26
|
+
* server asked PayPal for, without anything being paid.
|
|
23
27
|
*/
|
|
24
28
|
import { type PlaywrightTestConfig } from '@playwright/test';
|
|
29
|
+
import { CamphoricAdmin } from './e2eAdmin.ts';
|
|
25
30
|
import { type ImportForE2EOptions } from './e2eImport.ts';
|
|
31
|
+
import { FakePayPal } from './e2ePayPal.ts';
|
|
26
32
|
import { RegistrationForm } from './e2eRegistrationForm.ts';
|
|
27
33
|
import { type CamphoricServerOptions } from './e2eServer.ts';
|
|
28
34
|
export { expect } from '@playwright/test';
|
|
@@ -30,8 +36,12 @@ export { camphoricServer } from './e2eServer.ts';
|
|
|
30
36
|
export type { CamphoricServer, CamphoricServerOptions } from './e2eServer.ts';
|
|
31
37
|
export { importForE2E } from './e2eImport.ts';
|
|
32
38
|
export type { ImportForE2EOptions } from './e2eImport.ts';
|
|
33
|
-
export { CamperSection, FormSection, RegistrationForm } from './e2eRegistrationForm.ts';
|
|
34
|
-
export
|
|
39
|
+
export { CamperSection, FormSection, ListQuestion, RegistrationForm } from './e2eRegistrationForm.ts';
|
|
40
|
+
export { CamphoricAdmin } from './e2eAdmin.ts';
|
|
41
|
+
export type { E2EInvitation, EmailsOptions, InviteOptions, SentEmail } from './e2eAdmin.ts';
|
|
42
|
+
export { FakePayPal } from './e2ePayPal.ts';
|
|
43
|
+
export type { PayPalOrder } from './e2ePayPal.ts';
|
|
44
|
+
export type SetUpEventOptions = Pick<ImportForE2EOptions, 'event' | 'validate' | 'withSampleRegistrations' | 'openRegistration' | 'onlinePayment'> & Omit<CamphoricServerOptions, 'fakePayPal'>;
|
|
35
45
|
/**
|
|
36
46
|
* A Playwright global setup: starts the server, imports the event, and
|
|
37
47
|
* returns the teardown that removes a throwaway server.
|
|
@@ -46,10 +56,14 @@ export declare function defineEventE2EConfig({ globalSetup, ...overrides }: {
|
|
|
46
56
|
} & PlaywrightTestConfig): PlaywrightTestConfig;
|
|
47
57
|
/**
|
|
48
58
|
* Playwright's test, with the server as its baseURL and these fixtures:
|
|
49
|
-
* `eventId`, the imported event's id
|
|
59
|
+
* `eventId`, the imported event's id; `registration`, its form; `admin`,
|
|
60
|
+
* what an organizer does (invitations, the email sent); and `payPal`, the
|
|
61
|
+
* throwaway server's fake PayPal (the orders the server created).
|
|
50
62
|
*/
|
|
51
63
|
export declare const test: import("@playwright/test").TestType<import("@playwright/test").PlaywrightTestArgs & import("@playwright/test").PlaywrightTestOptions & {
|
|
52
64
|
eventId: number;
|
|
53
65
|
registration: RegistrationForm;
|
|
66
|
+
admin: CamphoricAdmin;
|
|
67
|
+
payPal: FakePayPal;
|
|
54
68
|
}, import("@playwright/test").PlaywrightWorkerArgs & import("@playwright/test").PlaywrightWorkerOptions>;
|
|
55
69
|
//# sourceMappingURL=e2e.d.ts.map
|
package/dist/e2e.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"e2e.d.ts","sourceRoot":"","sources":["../e2e.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"e2e.d.ts","sourceRoot":"","sources":["../e2e.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,EAAuC,KAAK,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAGlG,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAgB,KAAK,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACxE,OAAO,EAAmB,UAAU,EAAkB,MAAM,gBAAgB,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAmB,KAAK,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAE9E,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,YAAY,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,YAAY,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACtG,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC5F,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,YAAY,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAUlD,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,mBAAmB,EACtD,OAAO,GAAG,UAAU,GAAG,yBAAyB,GAAG,kBAAkB,GAAG,eAAe,CAAC,GACtF,IAAI,CAAC,sBAAsB,EAAE,YAAY,CAAC,CAAC;AAE/C;;;GAGG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM,OAAO,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,CAoBzF;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,EAAE,WAAW,EAAE,GAAG,SAAS,EAAE,EAAE;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,GAAG,oBAAoB,GAC5E,oBAAoB,CAkBtB;AASD;;;;;GAKG;AAGH,eAAO,MAAM,IAAI;aACN,MAAM;kBACD,gBAAgB;WACvB,cAAc;YACb,UAAU;wGAqClB,CAAC"}
|
package/dist/e2e.js
CHANGED
|
@@ -20,29 +20,51 @@
|
|
|
20
20
|
* with its registration open, and removes the throwaway server when the tests
|
|
21
21
|
* end. Every test, on every device, shares that one event: a registration
|
|
22
22
|
* one test completes stays, taking up lodging capacity the others see.
|
|
23
|
+
*
|
|
24
|
+
* A throwaway server's PayPal is a fake (e2ePayPal.ts): with `onlinePayment`
|
|
25
|
+
* the payment step shows PayPal's buttons, and a test can read what the
|
|
26
|
+
* server asked PayPal for, without anything being paid.
|
|
23
27
|
*/
|
|
24
28
|
import { defineConfig, devices, test as base } from '@playwright/test';
|
|
29
|
+
import { getAuthToken } from "./getAuthInfo.js";
|
|
30
|
+
import { CamphoricAdmin } from "./e2eAdmin.js";
|
|
25
31
|
import { importForE2E } from "./e2eImport.js";
|
|
32
|
+
import { FAKE_PAYPAL_SDK, FakePayPal, PAYPAL_SDK_URL } from "./e2ePayPal.js";
|
|
26
33
|
import { RegistrationForm } from "./e2eRegistrationForm.js";
|
|
27
34
|
import { camphoricServer } from "./e2eServer.js";
|
|
28
35
|
export { expect } from '@playwright/test';
|
|
29
36
|
export { camphoricServer } from "./e2eServer.js";
|
|
30
37
|
export { importForE2E } from "./e2eImport.js";
|
|
31
|
-
export { CamperSection, FormSection, RegistrationForm } from "./e2eRegistrationForm.js";
|
|
38
|
+
export { CamperSection, FormSection, ListQuestion, RegistrationForm } from "./e2eRegistrationForm.js";
|
|
39
|
+
export { CamphoricAdmin } from "./e2eAdmin.js";
|
|
40
|
+
export { FakePayPal } from "./e2ePayPal.js";
|
|
32
41
|
// What the global setup hands the tests (workers inherit its environment)
|
|
33
42
|
const URL_VARIABLE = 'CAMPHORIC_E2E_RUN_URL';
|
|
34
43
|
const EVENT_VARIABLE = 'CAMPHORIC_E2E_RUN_EVENT_ID';
|
|
44
|
+
// The admin's API token (signing in once: Camphoric throttles sign-in)
|
|
45
|
+
const TOKEN_VARIABLE = 'CAMPHORIC_E2E_RUN_TOKEN';
|
|
46
|
+
// A throwaway server's fake PayPal API
|
|
47
|
+
const PAYPAL_VARIABLE = 'CAMPHORIC_E2E_RUN_PAYPAL_URL';
|
|
35
48
|
/**
|
|
36
49
|
* A Playwright global setup: starts the server, imports the event, and
|
|
37
50
|
* returns the teardown that removes a throwaway server.
|
|
38
51
|
*/
|
|
39
52
|
export function setUpEvent(options) {
|
|
40
53
|
return async () => {
|
|
41
|
-
const server = await camphoricServer(options);
|
|
54
|
+
const server = await camphoricServer({ ...options, fakePayPal: options.onlinePayment });
|
|
42
55
|
try {
|
|
56
|
+
if (options.onlinePayment && !server.payPalUrl) {
|
|
57
|
+
throw new Error('onlinePayment needs the throwaway server, whose PayPal is a fake: '
|
|
58
|
+
+ 'CAMPHORIC_E2E_SERVER_URL\'s PayPal would refuse its client id');
|
|
59
|
+
}
|
|
43
60
|
const eventId = await importForE2E({ ...options, ...server });
|
|
44
61
|
process.env[URL_VARIABLE] = server.url;
|
|
45
62
|
process.env[EVENT_VARIABLE] = String(eventId);
|
|
63
|
+
process.env[TOKEN_VARIABLE] = await getAuthToken(server.url);
|
|
64
|
+
if (server.payPalUrl)
|
|
65
|
+
process.env[PAYPAL_VARIABLE] = server.payPalUrl;
|
|
66
|
+
else
|
|
67
|
+
delete process.env[PAYPAL_VARIABLE];
|
|
46
68
|
}
|
|
47
69
|
catch (e) {
|
|
48
70
|
await server.stop();
|
|
@@ -74,19 +96,35 @@ export function defineEventE2EConfig({ globalSetup, ...overrides }) {
|
|
|
74
96
|
...overrides,
|
|
75
97
|
});
|
|
76
98
|
}
|
|
99
|
+
// The server's URL, from the global setup
|
|
100
|
+
function serverUrl() {
|
|
101
|
+
const url = process.env[URL_VARIABLE];
|
|
102
|
+
if (!url)
|
|
103
|
+
throw new Error('no Camphoric server: run these tests with a config from defineEventE2EConfig');
|
|
104
|
+
return url;
|
|
105
|
+
}
|
|
77
106
|
/**
|
|
78
107
|
* Playwright's test, with the server as its baseURL and these fixtures:
|
|
79
|
-
* `eventId`, the imported event's id
|
|
108
|
+
* `eventId`, the imported event's id; `registration`, its form; `admin`,
|
|
109
|
+
* what an organizer does (invitations, the email sent); and `payPal`, the
|
|
110
|
+
* throwaway server's fake PayPal (the orders the server created).
|
|
80
111
|
*/
|
|
81
112
|
// (Playwright reads a fixture's dependencies from its destructured first
|
|
82
113
|
// argument, so one with none takes an empty pattern.)
|
|
83
114
|
export const test = base.extend({
|
|
84
115
|
// eslint-disable-next-line no-empty-pattern
|
|
85
116
|
baseURL: async ({}, use) => {
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
117
|
+
await use(serverUrl());
|
|
118
|
+
},
|
|
119
|
+
// With the fake PayPal API, the browser gets the fake PayPal script, whose
|
|
120
|
+
// buttons work with it
|
|
121
|
+
context: async ({ context }, use) => {
|
|
122
|
+
if (process.env[PAYPAL_VARIABLE]) {
|
|
123
|
+
await context.route(PAYPAL_SDK_URL, route => route.fulfill({
|
|
124
|
+
contentType: 'text/javascript', body: FAKE_PAYPAL_SDK,
|
|
125
|
+
}));
|
|
126
|
+
}
|
|
127
|
+
await use(context);
|
|
90
128
|
},
|
|
91
129
|
// eslint-disable-next-line no-empty-pattern
|
|
92
130
|
eventId: async ({}, use) => {
|
|
@@ -95,5 +133,20 @@ export const test = base.extend({
|
|
|
95
133
|
registration: async ({ page, eventId }, use) => {
|
|
96
134
|
await use(new RegistrationForm(page, eventId));
|
|
97
135
|
},
|
|
136
|
+
admin: async ({ eventId }, use) => {
|
|
137
|
+
const token = process.env[TOKEN_VARIABLE];
|
|
138
|
+
if (!token)
|
|
139
|
+
throw new Error('no admin token: run these tests with a config from defineEventE2EConfig');
|
|
140
|
+
await use(new CamphoricAdmin(serverUrl(), token, eventId));
|
|
141
|
+
},
|
|
142
|
+
// eslint-disable-next-line no-empty-pattern
|
|
143
|
+
payPal: async ({}, use) => {
|
|
144
|
+
const url = process.env[PAYPAL_VARIABLE];
|
|
145
|
+
if (!url) {
|
|
146
|
+
throw new Error('no fake PayPal: it comes with the throwaway server (not CAMPHORIC_E2E_SERVER_URL) '
|
|
147
|
+
+ 'when setUpEvent is given onlinePayment: true');
|
|
148
|
+
}
|
|
149
|
+
await use(new FakePayPal(url));
|
|
150
|
+
},
|
|
98
151
|
});
|
|
99
152
|
//# sourceMappingURL=e2e.js.map
|
package/dist/e2e.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"e2e.js","sourceRoot":"","sources":["../e2e.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"e2e.js","sourceRoot":"","sources":["../e2e.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What an organizer does in the admin, for an event's e2e tests: invitations
|
|
3
|
+
* to register as a registration type, and the emails the server sent. It
|
|
4
|
+
* uses the admin API (as the admin client does), signed in as the admin the
|
|
5
|
+
* event was imported as, so tests don't drive the admin's own pages.
|
|
6
|
+
*/
|
|
7
|
+
/** An invitation to register as one of the event's registration types. */
|
|
8
|
+
export interface E2EInvitation {
|
|
9
|
+
id: number;
|
|
10
|
+
code: string;
|
|
11
|
+
email: string;
|
|
12
|
+
registerUrl: string;
|
|
13
|
+
}
|
|
14
|
+
export interface InviteOptions {
|
|
15
|
+
email?: string;
|
|
16
|
+
name?: string;
|
|
17
|
+
send?: boolean;
|
|
18
|
+
}
|
|
19
|
+
/** An email the server sent (or queued), from its outbox. */
|
|
20
|
+
export interface SentEmail {
|
|
21
|
+
id: number;
|
|
22
|
+
kind: string;
|
|
23
|
+
status: string;
|
|
24
|
+
to: string;
|
|
25
|
+
from: string;
|
|
26
|
+
replyTo: string;
|
|
27
|
+
subject: string;
|
|
28
|
+
text: string;
|
|
29
|
+
html: string;
|
|
30
|
+
lastError: string;
|
|
31
|
+
registration: number | null;
|
|
32
|
+
invitation: number | null;
|
|
33
|
+
}
|
|
34
|
+
export interface EmailsOptions {
|
|
35
|
+
to?: string;
|
|
36
|
+
kind?: string;
|
|
37
|
+
}
|
|
38
|
+
export declare class CamphoricAdmin {
|
|
39
|
+
readonly url: string;
|
|
40
|
+
readonly eventId: number;
|
|
41
|
+
private readonly token;
|
|
42
|
+
constructor(url: string, token: string, eventId: number);
|
|
43
|
+
/**
|
|
44
|
+
* Creates an invitation to register as the registration type with this
|
|
45
|
+
* `name` (its name in the event's data, not its label), as the admin's
|
|
46
|
+
* "Invite a special registration" does. Open its form with
|
|
47
|
+
* `page.goto(invitation.registerUrl)`.
|
|
48
|
+
*/
|
|
49
|
+
invite(registrationType: string, options?: InviteOptions): Promise<E2EInvitation>;
|
|
50
|
+
/**
|
|
51
|
+
* The emails the server sent about the event (its outbox), newest first,
|
|
52
|
+
* with what each said. Email is recorded as the request that sends it ends,
|
|
53
|
+
* so after a registration it's there when the page has moved on; to wait
|
|
54
|
+
* for one: `await expect.poll(async () => (await admin.emails({ to })).length).toBe(1)`.
|
|
55
|
+
*/
|
|
56
|
+
emails(options?: EmailsOptions): Promise<SentEmail[]>;
|
|
57
|
+
private request;
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=e2eAdmin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"e2eAdmin.d.ts","sourceRoot":"","sources":["../e2eAdmin.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,0EAA0E;AAC1E,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IAGX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IAGd,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAE5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IAGd,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,6DAA6D;AAC7D,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IAEX,IAAI,EAAE,MAAM,CAAC;IAGb,MAAM,EAAE,MAAM,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,MAAM,WAAW,aAAa;IAE5B,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAyBD,qBAAa,cAAc;IACzB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;gBAEnB,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAMvD;;;;;OAKG;IACG,MAAM,CAAC,gBAAgB,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,aAAa,CAAC;IAyB3F;;;;;OAKG;IACG,MAAM,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;YAgCjD,OAAO;CActB"}
|