checkly 8.14.1 → 8.15.0-prerelease-cdf176f
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/ai-context/context.d.ts +18 -0
- package/dist/ai-context/context.js +89 -0
- package/dist/ai-context/context.js.map +1 -1
- package/dist/ai-context/skills-command/references/configure-grpc-monitors.md +37 -0
- package/dist/ai-context/skills-command/references/configure-playwright-checks.md +5 -5
- package/dist/ai-context/skills-command/references/configure-ssl-monitors.md +39 -0
- package/dist/ai-context/skills-command/references/configure-traceroute-monitors.md +36 -0
- package/dist/ai-context/skills-command/references/configure.md +9 -0
- package/dist/commands/checks/stats.js +1 -0
- package/dist/commands/checks/stats.js.map +1 -1
- package/dist/commands/deploy.js +25 -16
- package/dist/commands/deploy.js.map +1 -1
- package/dist/constants.d.ts +4 -1
- package/dist/constants.js +3 -0
- package/dist/constants.js.map +1 -1
- package/dist/constructs/api-assertion-codegen.js +2 -2
- package/dist/constructs/api-assertion-codegen.js.map +1 -1
- package/dist/constructs/api-assertion.d.ts +3 -3
- package/dist/constructs/check-codegen.d.ts +6 -0
- package/dist/constructs/check-codegen.js +24 -0
- package/dist/constructs/check-codegen.js.map +1 -1
- package/dist/constructs/dns-assertion-codegen.js +2 -2
- package/dist/constructs/dns-assertion-codegen.js.map +1 -1
- package/dist/constructs/dns-assertion.d.ts +3 -3
- package/dist/constructs/dns-request.d.ts +2 -2
- package/dist/constructs/grpc-assertion-codegen.d.ts +3 -0
- package/dist/constructs/grpc-assertion-codegen.js +33 -0
- package/dist/constructs/grpc-assertion-codegen.js.map +1 -0
- package/dist/constructs/grpc-assertion-validation.d.ts +13 -0
- package/dist/constructs/grpc-assertion-validation.js +53 -0
- package/dist/constructs/grpc-assertion-validation.js.map +1 -0
- package/dist/constructs/grpc-assertion.d.ts +61 -0
- package/dist/constructs/grpc-assertion.js +71 -0
- package/dist/constructs/grpc-assertion.js.map +1 -0
- package/dist/constructs/grpc-monitor-codegen.d.ts +13 -0
- package/dist/constructs/grpc-monitor-codegen.js +34 -0
- package/dist/constructs/grpc-monitor-codegen.js.map +1 -0
- package/dist/constructs/grpc-monitor.d.ts +83 -0
- package/dist/constructs/grpc-monitor.js +56 -0
- package/dist/constructs/grpc-monitor.js.map +1 -0
- package/dist/constructs/grpc-request-codegen.d.ts +4 -0
- package/dist/constructs/grpc-request-codegen.js +68 -0
- package/dist/constructs/grpc-request-codegen.js.map +1 -0
- package/dist/constructs/grpc-request.d.ts +137 -0
- package/dist/constructs/grpc-request.js +2 -0
- package/dist/constructs/grpc-request.js.map +1 -0
- package/dist/constructs/icmp-assertion-codegen.js +2 -2
- package/dist/constructs/icmp-assertion-codegen.js.map +1 -1
- package/dist/constructs/icmp-assertion.d.ts +1 -1
- package/dist/constructs/icmp-request.d.ts +2 -2
- package/dist/constructs/index.d.ts +9 -0
- package/dist/constructs/index.js +9 -0
- package/dist/constructs/index.js.map +1 -1
- package/dist/constructs/internal/assertion-codegen.d.ts +11 -0
- package/dist/constructs/internal/assertion-codegen.js +39 -0
- package/dist/constructs/internal/assertion-codegen.js.map +1 -1
- package/dist/constructs/internal/assertion-validation.d.ts +3 -0
- package/dist/constructs/internal/assertion-validation.js +17 -0
- package/dist/constructs/internal/assertion-validation.js.map +1 -0
- package/dist/constructs/internal/assertion.d.ts +17 -11
- package/dist/constructs/internal/assertion.js +39 -38
- package/dist/constructs/internal/assertion.js.map +1 -1
- package/dist/constructs/internal/common-diagnostics.d.ts +1 -0
- package/dist/constructs/internal/common-diagnostics.js +14 -0
- package/dist/constructs/internal/common-diagnostics.js.map +1 -1
- package/dist/constructs/ssl-assertion-codegen.d.ts +3 -0
- package/dist/constructs/ssl-assertion-codegen.js +36 -0
- package/dist/constructs/ssl-assertion-codegen.js.map +1 -0
- package/dist/constructs/ssl-assertion-validation.d.ts +13 -0
- package/dist/constructs/ssl-assertion-validation.js +49 -0
- package/dist/constructs/ssl-assertion-validation.js.map +1 -0
- package/dist/constructs/ssl-assertion.d.ts +197 -0
- package/dist/constructs/ssl-assertion.js +267 -0
- package/dist/constructs/ssl-assertion.js.map +1 -0
- package/dist/constructs/ssl-monitor-codegen.d.ts +36 -0
- package/dist/constructs/ssl-monitor-codegen.js +51 -0
- package/dist/constructs/ssl-monitor-codegen.js.map +1 -0
- package/dist/constructs/ssl-monitor.d.ts +89 -0
- package/dist/constructs/ssl-monitor.js +73 -0
- package/dist/constructs/ssl-monitor.js.map +1 -0
- package/dist/constructs/ssl-request-codegen.d.ts +4 -0
- package/dist/constructs/ssl-request-codegen.js +48 -0
- package/dist/constructs/ssl-request-codegen.js.map +1 -0
- package/dist/constructs/ssl-request.d.ts +143 -0
- package/dist/constructs/ssl-request.js +2 -0
- package/dist/constructs/ssl-request.js.map +1 -0
- package/dist/constructs/tcp-monitor-codegen.js +2 -2
- package/dist/constructs/tcp-monitor-codegen.js.map +1 -1
- package/dist/constructs/tcp-monitor.d.ts +1 -1
- package/dist/constructs/traceroute-assertion-codegen.d.ts +3 -0
- package/dist/constructs/traceroute-assertion-codegen.js +17 -0
- package/dist/constructs/traceroute-assertion-codegen.js.map +1 -0
- package/dist/constructs/traceroute-assertion-validation.d.ts +11 -0
- package/dist/constructs/traceroute-assertion-validation.js +77 -0
- package/dist/constructs/traceroute-assertion-validation.js.map +1 -0
- package/dist/constructs/traceroute-assertion.d.ts +67 -0
- package/dist/constructs/traceroute-assertion.js +96 -0
- package/dist/constructs/traceroute-assertion.js.map +1 -0
- package/dist/constructs/traceroute-monitor-codegen.d.ts +13 -0
- package/dist/constructs/traceroute-monitor-codegen.js +34 -0
- package/dist/constructs/traceroute-monitor-codegen.js.map +1 -0
- package/dist/constructs/traceroute-monitor.d.ts +83 -0
- package/dist/constructs/traceroute-monitor.js +54 -0
- package/dist/constructs/traceroute-monitor.js.map +1 -0
- package/dist/constructs/traceroute-request-codegen.d.ts +4 -0
- package/dist/constructs/traceroute-request-codegen.js +41 -0
- package/dist/constructs/traceroute-request-codegen.js.map +1 -0
- package/dist/constructs/traceroute-request.d.ts +81 -0
- package/dist/constructs/traceroute-request.js +2 -0
- package/dist/constructs/traceroute-request.js.map +1 -0
- package/dist/constructs/url-assertion-codegen.js +2 -2
- package/dist/constructs/url-assertion-codegen.js.map +1 -1
- package/dist/formatters/assertion-line.d.ts +27 -0
- package/dist/formatters/assertion-line.js +126 -0
- package/dist/formatters/assertion-line.js.map +1 -0
- package/dist/formatters/batch-stats.js +20 -1
- package/dist/formatters/batch-stats.js.map +1 -1
- package/dist/formatters/check-result-detail.js +604 -1
- package/dist/formatters/check-result-detail.js.map +1 -1
- package/dist/helpers/cli-mode.d.ts +2 -2
- package/dist/helpers/cli-mode.js +103 -11
- package/dist/helpers/cli-mode.js.map +1 -1
- package/dist/reporters/json.d.ts +1 -0
- package/dist/reporters/json.js +58 -0
- package/dist/reporters/json.js.map +1 -1
- package/dist/reporters/util.js +192 -89
- package/dist/reporters/util.js.map +1 -1
- package/dist/rest/analytics.js +6 -0
- package/dist/rest/analytics.js.map +1 -1
- package/dist/rest/batch-analytics.d.ts +1 -0
- package/dist/rest/batch-analytics.js.map +1 -1
- package/dist/rest/check-results.d.ts +75 -1
- package/dist/rest/check-results.js.map +1 -1
- package/dist/rest/projects.d.ts +1 -1
- package/dist/services/check-parser/bundler.d.ts +6 -0
- package/dist/services/check-parser/bundler.js +8 -0
- package/dist/services/check-parser/bundler.js.map +1 -1
- package/dist/services/check-parser/cache-hash.d.ts +24 -2
- package/dist/services/check-parser/cache-hash.js +45 -3
- package/dist/services/check-parser/cache-hash.js.map +1 -1
- package/dist/services/check-parser/package-files/resolver.d.ts +6 -1
- package/dist/services/check-parser/package-files/resolver.js +19 -0
- package/dist/services/check-parser/package-files/resolver.js.map +1 -1
- package/dist/services/util.d.ts +4 -0
- package/dist/services/util.js +4 -0
- package/dist/services/util.js.map +1 -1
- package/oclif.manifest.json +214 -208
- package/package.json +1 -1
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import indentString from 'indent-string';
|
|
3
|
+
// Shared per-assertion line renderer.
|
|
4
|
+
//
|
|
5
|
+
// This is the single source of truth for how a check-result assertion is
|
|
6
|
+
// rendered as a human-readable line. Both the `checkly test` reporter
|
|
7
|
+
// (`reporters/util.ts`) and the `checkly checks get --result` detail renderer
|
|
8
|
+
// (`formatters/check-result-detail.ts`) call `formatAssertionLine` so their
|
|
9
|
+
// output is guaranteed identical and cannot drift.
|
|
10
|
+
// Humanized labels for the `source` of an assertion. Falls back to the raw
|
|
11
|
+
// source string when unmapped.
|
|
12
|
+
const assertionSources = {
|
|
13
|
+
STATUS_CODE: 'status code',
|
|
14
|
+
JSON_BODY: 'JSON body',
|
|
15
|
+
HEADERS: 'headers',
|
|
16
|
+
TEXT_BODY: 'text body',
|
|
17
|
+
RESPONSE_TIME: 'response time',
|
|
18
|
+
RESPONSE_DATA: 'response data',
|
|
19
|
+
TEXT_ANSWER: 'answer (text)',
|
|
20
|
+
JSON_ANSWER: 'answer (JSON)',
|
|
21
|
+
RESPONSE_CODE: 'response code',
|
|
22
|
+
LATENCY: 'latency',
|
|
23
|
+
JSON_RESPONSE: 'response data (JSON)',
|
|
24
|
+
GRPC_STATUS_CODE: 'status code',
|
|
25
|
+
GRPC_HEALTHCHECK_STATUS: 'health check status',
|
|
26
|
+
GRPC_RESPONSE: 'response message',
|
|
27
|
+
GRPC_METADATA: 'metadata',
|
|
28
|
+
};
|
|
29
|
+
// Humanized phrases for the `comparison` of an assertion. Falls back to the raw
|
|
30
|
+
// comparison string when unmapped.
|
|
31
|
+
const assertionComparisons = {
|
|
32
|
+
EQUALS: 'equals',
|
|
33
|
+
NOT_EQUALS: 'doesn\'t equal',
|
|
34
|
+
HAS_KEY: 'has key',
|
|
35
|
+
NOT_HAS_KEY: 'doesn\'t have key',
|
|
36
|
+
HAS_VALUE: 'has value',
|
|
37
|
+
NOT_HAS_VALUE: 'doesn\'t have value',
|
|
38
|
+
IS_EMPTY: 'is empty',
|
|
39
|
+
NOT_EMPTY: 'is not empty',
|
|
40
|
+
GREATER_THAN: 'is greater than',
|
|
41
|
+
LESS_THAN: 'is less than',
|
|
42
|
+
CONTAINS: 'contains',
|
|
43
|
+
NOT_CONTAINS: 'doesn\'t contain',
|
|
44
|
+
IS_NULL: 'is null',
|
|
45
|
+
NOT_NULL: 'is not null',
|
|
46
|
+
MATCHES: 'matches',
|
|
47
|
+
};
|
|
48
|
+
function toString(val) {
|
|
49
|
+
if (typeof val === 'object') {
|
|
50
|
+
return JSON.stringify(val, null, 2);
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
return val.toString();
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
export function truncate(val, opts) {
|
|
57
|
+
let truncated = false;
|
|
58
|
+
let result = toString(val);
|
|
59
|
+
// Stringify first so objects/numbers/booleans (which have no meaningful
|
|
60
|
+
// `.length`) are capped too, then measure and cut in the same unit by spreading
|
|
61
|
+
// to code points. Checking the UTF-16 `.length` would flag a value made of
|
|
62
|
+
// astral characters (emoji) as truncated while the code-point cut removed
|
|
63
|
+
// nothing; cutting by code point also never splits a surrogate pair into an
|
|
64
|
+
// invalid half-character.
|
|
65
|
+
if (opts.chars) {
|
|
66
|
+
const codePoints = [...result];
|
|
67
|
+
if (codePoints.length > opts.chars) {
|
|
68
|
+
truncated = true;
|
|
69
|
+
result = codePoints.slice(0, opts.chars).join('');
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
const lines = result.split('\n');
|
|
73
|
+
if (opts.lines && lines.length > opts.lines) {
|
|
74
|
+
truncated = true;
|
|
75
|
+
result = lines.slice(0, opts.lines).join('\n');
|
|
76
|
+
}
|
|
77
|
+
return {
|
|
78
|
+
truncated,
|
|
79
|
+
result: truncated && opts.ending ? result + opts.ending : result,
|
|
80
|
+
lines: opts.lines ? Math.min(opts.lines, lines.length) : lines.length,
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
export const assertionSymbols = {
|
|
84
|
+
success: '✔',
|
|
85
|
+
error: '✖',
|
|
86
|
+
};
|
|
87
|
+
// Renders a single assertion as a colored, human-readable line (or multi-line
|
|
88
|
+
// block when the received value spans multiple lines). Green with a success
|
|
89
|
+
// symbol when the assertion passed (`error` absent/empty), red with an error
|
|
90
|
+
// symbol when it failed.
|
|
91
|
+
export function formatAssertionLine(assertion, options) {
|
|
92
|
+
const { source, property, comparison, target, regex, error, actual } = assertion;
|
|
93
|
+
const assertionFailed = !!error;
|
|
94
|
+
const humanSource = assertionSources[source] || source;
|
|
95
|
+
const humanComparison = assertionComparisons[comparison] || comparison;
|
|
96
|
+
let actualString;
|
|
97
|
+
// Render the received value whenever one is present — including falsy values
|
|
98
|
+
// like `0`, `false`, and `''`. Using a plain truthiness check here dropped the
|
|
99
|
+
// "Received:" segment for exactly those, hiding the reason a boolean/numeric
|
|
100
|
+
// assertion failed (e.g. CERT_NOT_EXPIRED received `false`, status code `0`).
|
|
101
|
+
if (actual != null) {
|
|
102
|
+
const { result: truncatedActual, lines: truncatedActualLines } = truncate(actual, {
|
|
103
|
+
chars: 300,
|
|
104
|
+
lines: 5,
|
|
105
|
+
ending: chalk.magenta('\n...truncated...'),
|
|
106
|
+
...options?.truncate,
|
|
107
|
+
});
|
|
108
|
+
if (truncatedActualLines <= 1) {
|
|
109
|
+
actualString = `Received: ${truncatedActual}.`;
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
actualString = `Received:\n${indentString(truncatedActual, 4, { indent: ' ' })}`;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
const message = [
|
|
116
|
+
assertionFailed ? assertionSymbols.error : assertionSymbols.success,
|
|
117
|
+
humanSource,
|
|
118
|
+
property ? `property "${property}"` : undefined,
|
|
119
|
+
regex ? `regex "${regex}"` : undefined,
|
|
120
|
+
humanComparison,
|
|
121
|
+
`target "${target}".`,
|
|
122
|
+
actualString,
|
|
123
|
+
].filter(Boolean).join(' ');
|
|
124
|
+
return assertionFailed ? chalk.red(message) : chalk.green(message);
|
|
125
|
+
}
|
|
126
|
+
//# sourceMappingURL=assertion-line.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assertion-line.js","sourceRoot":"","sources":["../../src/formatters/assertion-line.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,8 +2,11 @@ import chalk from 'chalk';
|
|
|
2
2
|
import { resolveStatus } from './checks.js';
|
|
3
3
|
import { renderAdaptiveTable, renderCommandHints } from './render.js';
|
|
4
4
|
import { findUnit, rangeLabels } from './analytics.js';
|
|
5
|
-
|
|
5
|
+
// TRACEROUTE stays in TIMING_TYPES so it keeps its final-hop-latency responseTime
|
|
6
|
+
// columns; it additionally gets a bespoke Hops column (see hasTraceroute below).
|
|
7
|
+
const TIMING_TYPES = new Set(['API', 'BROWSER', 'PLAYWRIGHT', 'MULTI_STEP', 'URL', 'TCP', 'DNS', 'GRPC', 'SSL', 'TRACEROUTE']);
|
|
6
8
|
const ICMP_TYPE = 'ICMP';
|
|
9
|
+
const TRACEROUTE_TYPE = 'TRACEROUTE';
|
|
7
10
|
const DASH = '—';
|
|
8
11
|
/**
|
|
9
12
|
* Format a metric value for the batch stats table.
|
|
@@ -53,6 +56,7 @@ function metricOrDash(key, value, format, applicable) {
|
|
|
53
56
|
function buildColumns(rows, format) {
|
|
54
57
|
const hasTiming = rows.some(r => TIMING_TYPES.has(r.checkType));
|
|
55
58
|
const hasIcmp = rows.some(r => r.checkType === ICMP_TYPE);
|
|
59
|
+
const hasTraceroute = rows.some(r => r.checkType === TRACEROUTE_TYPE);
|
|
56
60
|
if (format === 'md') {
|
|
57
61
|
const cols = [
|
|
58
62
|
{ header: 'Name', value: r => r.name },
|
|
@@ -88,6 +92,13 @@ function buildColumns(rows, format) {
|
|
|
88
92
|
value: (r, fmt) => metricOrDash('packetLoss_avg', r.analytics?.packetLoss_avg ?? null, fmt, r.checkType === ICMP_TYPE),
|
|
89
93
|
});
|
|
90
94
|
}
|
|
95
|
+
if (hasTraceroute) {
|
|
96
|
+
cols.push({
|
|
97
|
+
header: 'Hops (avg)',
|
|
98
|
+
align: 'right',
|
|
99
|
+
value: (r, fmt) => metricOrDash('hopCount_avg', r.analytics?.hopCount_avg ?? null, fmt, r.checkType === TRACEROUTE_TYPE),
|
|
100
|
+
});
|
|
101
|
+
}
|
|
91
102
|
return cols;
|
|
92
103
|
}
|
|
93
104
|
const typeWidth = 12;
|
|
@@ -146,6 +157,14 @@ function buildColumns(rows, format) {
|
|
|
146
157
|
value: (r, fmt) => metricOrDash('packetLoss_avg', r.analytics?.packetLoss_avg ?? null, fmt, r.checkType === ICMP_TYPE),
|
|
147
158
|
});
|
|
148
159
|
}
|
|
160
|
+
if (hasTraceroute) {
|
|
161
|
+
cols.push({
|
|
162
|
+
header: 'Hops',
|
|
163
|
+
width: metricWidth,
|
|
164
|
+
align: 'right',
|
|
165
|
+
value: (r, fmt) => metricOrDash('hopCount_avg', r.analytics?.hopCount_avg ?? null, fmt, r.checkType === TRACEROUTE_TYPE),
|
|
166
|
+
});
|
|
167
|
+
}
|
|
149
168
|
return cols;
|
|
150
169
|
}
|
|
151
170
|
export function formatBatchStats(rows, range, format) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"batch-stats.js","sourceRoot":"","sources":["../../src/formatters/batch-stats.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAA6C,aAAa,EAAE,MAAM,aAAa,CAAA;AAEtF,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AACrE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAKtD,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"batch-stats.js","sourceRoot":"","sources":["../../src/formatters/batch-stats.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAA6C,aAAa,EAAE,MAAM,aAAa,CAAA;AAEtF,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AACrE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAKtD,kFAAkF;AAClF,iFAAiF;AACjF,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC,CAAA;AAC9H,MAAM,SAAS,GAAG,MAAM,CAAA;AACxB,MAAM,eAAe,GAAG,YAAY,CAAA;AACpC,MAAM,IAAI,GAAG,GAAG,CAAA;AAEhB;;;;;;;;GAQG;AACH,SAAS,iBAAiB,CAAE,GAAW,EAAE,KAAa,EAAE,MAAoB;IAC1E,IAAI,GAAG,KAAK,cAAc,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAA;QACtC,IAAI,MAAM,KAAK,IAAI;YAAE,OAAO,OAAO,CAAA;QACnC,IAAI,KAAK,IAAI,IAAI;YAAE,OAAO,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QAC9C,IAAI,KAAK,IAAI,EAAE;YAAE,OAAO,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QAC7C,OAAO,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IAC3B,CAAC;IAED,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAA;IAC1B,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAClB,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAA;QAC/C,IAAI,MAAM,KAAK,IAAI;YAAE,OAAO,OAAO,CAAA;QACnC,IAAI,KAAK,GAAG,IAAI;YAAE,OAAO,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QAC7C,IAAI,KAAK,GAAG,IAAI;YAAE,OAAO,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QAC9C,OAAO,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IAC3B,CAAC;IAED,IAAI,IAAI,KAAK,YAAY,EAAE,CAAC;QAC1B,MAAM,OAAO,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAA;QACtC,IAAI,MAAM,KAAK,IAAI;YAAE,OAAO,OAAO,CAAA;QACnC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IAC/D,CAAC;IAED,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;AACzB,CAAC;AAED,SAAS,YAAY,CACnB,GAAW,EACX,KAAoB,EACpB,MAAoB,EACpB,UAAmB;IAEnB,IAAI,CAAC,UAAU,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;QACjC,OAAO,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IACvD,CAAC;IACD,OAAO,iBAAiB,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,CAAA;AAC9C,CAAC;AAED,SAAS,YAAY,CAAE,IAAgB,EAAE,MAAoB;IAC3D,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAA;IAC/D,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,CAAA;IACzD,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,eAAe,CAAC,CAAA;IAErE,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,MAAM,IAAI,GAA0B;YAClC,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE;YACtC,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE;YAC3C,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;YAC9D;gBACE,MAAM,EAAE,cAAc;gBACtB,KAAK,EAAE,OAAO;gBACd,KAAK,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,cAAc,EAAE,CAAC,CAAC,SAAS,EAAE,YAAY,IAAI,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC;aAC9F;SACF,CAAA;QACD,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,CAAC,IAAI,CAAC;gBACR,MAAM,EAAE,YAAY;gBACpB,KAAK,EAAE,OAAO;gBACd,KAAK,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,kBAAkB,EAAE,CAAC,CAAC,SAAS,EAAE,gBAAgB,IAAI,IAAI,EAAE,GAAG,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;aAC/H,CAAC,CAAA;YACF,IAAI,CAAC,IAAI,CAAC;gBACR,MAAM,EAAE,YAAY;gBACpB,KAAK,EAAE,OAAO;gBACd,KAAK,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,kBAAkB,EAAE,CAAC,CAAC,SAAS,EAAE,gBAAgB,IAAI,IAAI,EAAE,GAAG,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;aAC/H,CAAC,CAAA;QACJ,CAAC;QACD,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC,IAAI,CAAC;gBACR,MAAM,EAAE,eAAe;gBACvB,KAAK,EAAE,OAAO;gBACd,KAAK,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,aAAa,EAAE,CAAC,CAAC,SAAS,EAAE,WAAW,IAAI,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC;aACjH,CAAC,CAAA;YACF,IAAI,CAAC,IAAI,CAAC;gBACR,MAAM,EAAE,aAAa;gBACrB,KAAK,EAAE,OAAO;gBACd,KAAK,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,gBAAgB,EAAE,CAAC,CAAC,SAAS,EAAE,cAAc,IAAI,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC;aACvH,CAAC,CAAA;QACJ,CAAC;QACD,IAAI,aAAa,EAAE,CAAC;YAClB,IAAI,CAAC,IAAI,CAAC;gBACR,MAAM,EAAE,YAAY;gBACpB,KAAK,EAAE,OAAO;gBACd,KAAK,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,cAAc,EAAE,CAAC,CAAC,SAAS,EAAE,YAAY,IAAI,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,SAAS,KAAK,eAAe,CAAC;aACzH,CAAC,CAAA;QACJ,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,SAAS,GAAG,EAAE,CAAA;IACpB,MAAM,WAAW,GAAG,EAAE,CAAA;IACtB,MAAM,UAAU,GAAG,EAAE,CAAA;IACrB,MAAM,WAAW,GAAG,EAAE,CAAA;IAEtB,MAAM,IAAI,GAA0B;QAClC;YACE,MAAM,EAAE,MAAM;YACd,QAAQ,EAAE,EAAE;YACZ,QAAQ,EAAE,EAAE;YACZ,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI;SACnB;QACD;YACE,MAAM,EAAE,MAAM;YACd,KAAK,EAAE,SAAS;YAChB,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS;SACxB;QACD;YACE,MAAM,EAAE,QAAQ;YAChB,KAAK,EAAE,WAAW;YAClB,KAAK,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,EAAE,GAAG,CAAC;SACzC;QACD;YACE,MAAM,EAAE,OAAO;YACf,KAAK,EAAE,UAAU;YACjB,KAAK,EAAE,OAAO;YACd,KAAK,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,cAAc,EAAE,CAAC,CAAC,SAAS,EAAE,YAAY,IAAI,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC;SAC9F;KACF,CAAA;IAED,IAAI,SAAS,EAAE,CAAC;QACd,IAAI,CAAC,IAAI,CAAC;YACR,MAAM,EAAE,YAAY;YACpB,KAAK,EAAE,WAAW;YAClB,KAAK,EAAE,OAAO;YACd,KAAK,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,kBAAkB,EAAE,CAAC,CAAC,SAAS,EAAE,gBAAgB,IAAI,IAAI,EAAE,GAAG,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;SAC/H,CAAC,CAAA;QACF,IAAI,CAAC,IAAI,CAAC;YACR,MAAM,EAAE,YAAY;YACpB,KAAK,EAAE,WAAW;YAClB,KAAK,EAAE,OAAO;YACd,KAAK,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,kBAAkB,EAAE,CAAC,CAAC,SAAS,EAAE,gBAAgB,IAAI,IAAI,EAAE,GAAG,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;SAC/H,CAAC,CAAA;IACJ,CAAC;IAED,IAAI,OAAO,EAAE,CAAC;QACZ,IAAI,CAAC,IAAI,CAAC;YACR,MAAM,EAAE,SAAS;YACjB,KAAK,EAAE,WAAW;YAClB,KAAK,EAAE,OAAO;YACd,KAAK,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,aAAa,EAAE,CAAC,CAAC,SAAS,EAAE,WAAW,IAAI,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC;SACjH,CAAC,CAAA;QACF,IAAI,CAAC,IAAI,CAAC;YACR,MAAM,EAAE,UAAU;YAClB,KAAK,EAAE,WAAW;YAClB,KAAK,EAAE,OAAO;YACd,KAAK,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,gBAAgB,EAAE,CAAC,CAAC,SAAS,EAAE,cAAc,IAAI,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC;SACvH,CAAC,CAAA;IACJ,CAAC;IAED,IAAI,aAAa,EAAE,CAAC;QAClB,IAAI,CAAC,IAAI,CAAC;YACR,MAAM,EAAE,MAAM;YACd,KAAK,EAAE,WAAW;YAClB,KAAK,EAAE,OAAO;YACd,KAAK,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,cAAc,EAAE,CAAC,CAAC,SAAS,EAAE,YAAY,IAAI,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,SAAS,KAAK,eAAe,CAAC;SACzH,CAAC,CAAA;IACJ,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAE,IAAgB,EAAE,KAAa,EAAE,MAAoB;IACrF,MAAM,YAAY,GAAG,WAAW,CAAC,KAAmB,CAAC,IAAI,KAAK,CAAA;IAC9D,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IAE1C,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,MAAM,OAAO,GAAG,aAAa,YAAY,OAAO,CAAA;QAChD,OAAO,OAAO,GAAG,mBAAmB,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;IAC7D,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,YAAY,GAAG,CAAC,CAAA;IAC1E,OAAO,OAAO,GAAG,MAAM,GAAG,mBAAmB,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;AACtE,CAAC;AAED,MAAM,UAAU,+BAA+B,CAC7C,UAA0B,EAC1B,KAAa,EACb,aAAuB;IAEvB,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,UAAU,CAAA;IACzC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,CAAA;IAC3C,MAAM,KAAK,GAAkB,EAAE,CAAA;IAE/B,IAAI,IAAI,GAAG,UAAU,EAAE,CAAC;QACtB,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,+BAA+B,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC,CAAA;IACxF,CAAC;IACD,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;QACb,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,+BAA+B,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC,CAAA;IACxF,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,yBAAyB,EAAE,CAAC,CAAA;IACvE,KAAK,CAAC,IAAI,CAAC;QACT,KAAK,EAAE,cAAc;QACrB,OAAO,EAAE,gCAAgC,KAAK,KAAK,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,EAAE;KACjG,CAAC,CAAA;IACF,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,KAAK,CAAC,IAAI,CAAC;YACT,KAAK,EAAE,QAAQ;YACf,OAAO,EAAE,gEAAgE;SAC1E,CAAC,CAAA;IACJ,CAAC;IAED,OAAO,kBAAkB,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAA;AAC9C,CAAC"}
|