@milkio/vite-plugin-milkio 1.3.39 → 1.3.40
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/index.js +37 -13
- package/package.json +4 -1
- package/chunk-0n8pdns7.js +0 -10
- package/chunk-3k49pqb5.js +0 -2372
- package/chunk-50hnq58q.js +0 -6822
- package/chunk-53gf2b22.js +0 -7
- package/chunk-716p476m.js +0 -18382
- package/chunk-8prfxy1y.js +0 -6083
- package/chunk-bxrexwh3.js +0 -963
- package/chunk-d85ypywj.js +0 -38
- package/chunk-dcm40dpy.js +0 -6984
- package/chunk-e6wvfs61.js +0 -22
- package/chunk-grxb9rka.js +0 -397
- package/chunk-hnjvhpbj.js +0 -6837
- package/chunk-tqpznpdp.js +0 -5411
- package/chunk-tvwsh3py.js +0 -533
- package/chunk-wp73r5y8.js +0 -7115
- package/chunk-x2ktqdp2.js +0 -67
- package/chunk-ywkaz8jz.js +0 -834
package/chunk-tvwsh3py.js
DELETED
|
@@ -1,533 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
require_lib
|
|
3
|
-
} from "./chunk-grxb9rka.js";
|
|
4
|
-
import {
|
|
5
|
-
__commonJSMin,
|
|
6
|
-
__require
|
|
7
|
-
} from "./chunk-716p476m.js";
|
|
8
|
-
import"./chunk-hnjvhpbj.js";
|
|
9
|
-
import"./chunk-53gf2b22.js";
|
|
10
|
-
import"./chunk-d85ypywj.js";
|
|
11
|
-
|
|
12
|
-
// node_modules/vite/dist/node/chunks/postcss-import.js
|
|
13
|
-
var require_format_import_prelude = /* @__PURE__ */ __commonJSMin((exports, module) => {
|
|
14
|
-
module.exports = function formatImportPrelude(layer, media, supports) {
|
|
15
|
-
const parts = [];
|
|
16
|
-
if (typeof layer !== "undefined") {
|
|
17
|
-
let layerParams = "layer";
|
|
18
|
-
if (layer)
|
|
19
|
-
layerParams = `layer(${layer})`;
|
|
20
|
-
parts.push(layerParams);
|
|
21
|
-
}
|
|
22
|
-
if (typeof supports !== "undefined")
|
|
23
|
-
parts.push(`supports(${supports})`);
|
|
24
|
-
if (typeof media !== "undefined")
|
|
25
|
-
parts.push(media);
|
|
26
|
-
return parts.join(" ");
|
|
27
|
-
};
|
|
28
|
-
});
|
|
29
|
-
var require_base64_encoded_import = /* @__PURE__ */ __commonJSMin((exports, module) => {
|
|
30
|
-
const formatImportPrelude = require_format_import_prelude();
|
|
31
|
-
module.exports = function base64EncodedConditionalImport(prelude, conditions) {
|
|
32
|
-
if (!conditions?.length)
|
|
33
|
-
return prelude;
|
|
34
|
-
conditions.reverse();
|
|
35
|
-
const first = conditions.pop();
|
|
36
|
-
let params = `${prelude} ${formatImportPrelude(first.layer, first.media, first.supports)}`;
|
|
37
|
-
for (const condition of conditions)
|
|
38
|
-
params = `'data:text/css;base64,${Buffer.from(`@import ${params}`).toString("base64")}' ${formatImportPrelude(condition.layer, condition.media, condition.supports)}`;
|
|
39
|
-
return params;
|
|
40
|
-
};
|
|
41
|
-
});
|
|
42
|
-
var require_apply_conditions = /* @__PURE__ */ __commonJSMin((exports, module) => {
|
|
43
|
-
const base64EncodedConditionalImport = require_base64_encoded_import();
|
|
44
|
-
module.exports = function applyConditions(bundle, atRule) {
|
|
45
|
-
const firstImportStatementIndex = bundle.findIndex((stmt) => stmt.type === "import");
|
|
46
|
-
const lastImportStatementIndex = bundle.findLastIndex((stmt) => stmt.type === "import");
|
|
47
|
-
bundle.forEach((stmt, index) => {
|
|
48
|
-
if (stmt.type === "charset" || stmt.type === "warning")
|
|
49
|
-
return;
|
|
50
|
-
if (stmt.type === "layer" && (index < lastImportStatementIndex && stmt.conditions?.length || index > firstImportStatementIndex && index < lastImportStatementIndex)) {
|
|
51
|
-
stmt.type = "import";
|
|
52
|
-
stmt.node = stmt.node.clone({
|
|
53
|
-
name: "import",
|
|
54
|
-
params: base64EncodedConditionalImport(`'data:text/css;base64,${Buffer.from(stmt.node.toString()).toString("base64")}'`, stmt.conditions)
|
|
55
|
-
});
|
|
56
|
-
return;
|
|
57
|
-
}
|
|
58
|
-
if (!stmt.conditions?.length)
|
|
59
|
-
return;
|
|
60
|
-
if (stmt.type === "import") {
|
|
61
|
-
stmt.node.params = base64EncodedConditionalImport(stmt.fullUri, stmt.conditions);
|
|
62
|
-
return;
|
|
63
|
-
}
|
|
64
|
-
let nodes;
|
|
65
|
-
let parent;
|
|
66
|
-
if (stmt.type === "layer") {
|
|
67
|
-
nodes = [stmt.node];
|
|
68
|
-
parent = stmt.node.parent;
|
|
69
|
-
} else {
|
|
70
|
-
nodes = stmt.nodes;
|
|
71
|
-
parent = nodes[0].parent;
|
|
72
|
-
}
|
|
73
|
-
const atRules = [];
|
|
74
|
-
for (const condition of stmt.conditions) {
|
|
75
|
-
if (typeof condition.media !== "undefined") {
|
|
76
|
-
const mediaNode = atRule({
|
|
77
|
-
name: "media",
|
|
78
|
-
params: condition.media,
|
|
79
|
-
source: parent.source
|
|
80
|
-
});
|
|
81
|
-
atRules.push(mediaNode);
|
|
82
|
-
}
|
|
83
|
-
if (typeof condition.supports !== "undefined") {
|
|
84
|
-
const supportsNode = atRule({
|
|
85
|
-
name: "supports",
|
|
86
|
-
params: `(${condition.supports})`,
|
|
87
|
-
source: parent.source
|
|
88
|
-
});
|
|
89
|
-
atRules.push(supportsNode);
|
|
90
|
-
}
|
|
91
|
-
if (typeof condition.layer !== "undefined") {
|
|
92
|
-
const layerNode = atRule({
|
|
93
|
-
name: "layer",
|
|
94
|
-
params: condition.layer,
|
|
95
|
-
source: parent.source
|
|
96
|
-
});
|
|
97
|
-
atRules.push(layerNode);
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
const outerAtRule = atRules.shift();
|
|
101
|
-
const innerAtRule = atRules.reduce((previous, next) => {
|
|
102
|
-
previous.append(next);
|
|
103
|
-
return next;
|
|
104
|
-
}, outerAtRule);
|
|
105
|
-
parent.insertBefore(nodes[0], outerAtRule);
|
|
106
|
-
nodes.forEach((node) => {
|
|
107
|
-
node.parent = undefined;
|
|
108
|
-
});
|
|
109
|
-
nodes[0].raws.before = nodes[0].raws.before || `
|
|
110
|
-
`;
|
|
111
|
-
innerAtRule.append(nodes);
|
|
112
|
-
stmt.type = "nodes";
|
|
113
|
-
stmt.nodes = [outerAtRule];
|
|
114
|
-
delete stmt.node;
|
|
115
|
-
});
|
|
116
|
-
};
|
|
117
|
-
});
|
|
118
|
-
var require_apply_raws = /* @__PURE__ */ __commonJSMin((exports, module) => {
|
|
119
|
-
module.exports = function applyRaws(bundle) {
|
|
120
|
-
bundle.forEach((stmt, index) => {
|
|
121
|
-
if (index === 0)
|
|
122
|
-
return;
|
|
123
|
-
if (stmt.parent) {
|
|
124
|
-
const { before } = stmt.parent.node.raws;
|
|
125
|
-
if (stmt.type === "nodes")
|
|
126
|
-
stmt.nodes[0].raws.before = before;
|
|
127
|
-
else
|
|
128
|
-
stmt.node.raws.before = before;
|
|
129
|
-
} else if (stmt.type === "nodes")
|
|
130
|
-
stmt.nodes[0].raws.before = stmt.nodes[0].raws.before || `
|
|
131
|
-
`;
|
|
132
|
-
});
|
|
133
|
-
};
|
|
134
|
-
});
|
|
135
|
-
var require_apply_styles = /* @__PURE__ */ __commonJSMin((exports, module) => {
|
|
136
|
-
module.exports = function applyStyles(bundle, styles) {
|
|
137
|
-
styles.nodes = [];
|
|
138
|
-
bundle.forEach((stmt) => {
|
|
139
|
-
if ([
|
|
140
|
-
"charset",
|
|
141
|
-
"import",
|
|
142
|
-
"layer"
|
|
143
|
-
].includes(stmt.type)) {
|
|
144
|
-
stmt.node.parent = undefined;
|
|
145
|
-
styles.append(stmt.node);
|
|
146
|
-
} else if (stmt.type === "nodes")
|
|
147
|
-
stmt.nodes.forEach((node) => {
|
|
148
|
-
node.parent = undefined;
|
|
149
|
-
styles.append(node);
|
|
150
|
-
});
|
|
151
|
-
});
|
|
152
|
-
};
|
|
153
|
-
});
|
|
154
|
-
var require_data_url = /* @__PURE__ */ __commonJSMin((exports, module) => {
|
|
155
|
-
const anyDataURLRegexp = /^data:text\/css(?:;(base64|plain))?,/i;
|
|
156
|
-
const base64DataURLRegexp = /^data:text\/css;base64,/i;
|
|
157
|
-
const plainDataURLRegexp = /^data:text\/css;plain,/i;
|
|
158
|
-
function isValid(url) {
|
|
159
|
-
return anyDataURLRegexp.test(url);
|
|
160
|
-
}
|
|
161
|
-
function contents(url) {
|
|
162
|
-
if (base64DataURLRegexp.test(url))
|
|
163
|
-
return Buffer.from(url.slice(21), "base64").toString();
|
|
164
|
-
if (plainDataURLRegexp.test(url))
|
|
165
|
-
return decodeURIComponent(url.slice(20));
|
|
166
|
-
return decodeURIComponent(url.slice(14));
|
|
167
|
-
}
|
|
168
|
-
module.exports = {
|
|
169
|
-
isValid,
|
|
170
|
-
contents
|
|
171
|
-
};
|
|
172
|
-
});
|
|
173
|
-
var require_parse_statements = /* @__PURE__ */ __commonJSMin((exports, module) => {
|
|
174
|
-
const valueParser = require_lib();
|
|
175
|
-
const { stringify } = valueParser;
|
|
176
|
-
module.exports = function parseStatements(result, styles, conditions, from) {
|
|
177
|
-
const statements = [];
|
|
178
|
-
let nodes = [];
|
|
179
|
-
let encounteredNonImportNodes = false;
|
|
180
|
-
styles.each((node) => {
|
|
181
|
-
let stmt;
|
|
182
|
-
if (node.type === "atrule") {
|
|
183
|
-
if (node.name === "import")
|
|
184
|
-
stmt = parseImport(result, node, conditions, from);
|
|
185
|
-
else if (node.name === "charset")
|
|
186
|
-
stmt = parseCharset(result, node, conditions, from);
|
|
187
|
-
else if (node.name === "layer" && !encounteredNonImportNodes && !node.nodes)
|
|
188
|
-
stmt = parseLayer(result, node, conditions, from);
|
|
189
|
-
} else if (node.type !== "comment")
|
|
190
|
-
encounteredNonImportNodes = true;
|
|
191
|
-
if (stmt) {
|
|
192
|
-
if (nodes.length) {
|
|
193
|
-
statements.push({
|
|
194
|
-
type: "nodes",
|
|
195
|
-
nodes,
|
|
196
|
-
conditions: [...conditions],
|
|
197
|
-
from
|
|
198
|
-
});
|
|
199
|
-
nodes = [];
|
|
200
|
-
}
|
|
201
|
-
statements.push(stmt);
|
|
202
|
-
} else
|
|
203
|
-
nodes.push(node);
|
|
204
|
-
});
|
|
205
|
-
if (nodes.length)
|
|
206
|
-
statements.push({
|
|
207
|
-
type: "nodes",
|
|
208
|
-
nodes,
|
|
209
|
-
conditions: [...conditions],
|
|
210
|
-
from
|
|
211
|
-
});
|
|
212
|
-
return statements;
|
|
213
|
-
};
|
|
214
|
-
function parseCharset(result, atRule, conditions, from) {
|
|
215
|
-
if (atRule.prev())
|
|
216
|
-
return result.warn("@charset must precede all other statements", { node: atRule });
|
|
217
|
-
return {
|
|
218
|
-
type: "charset",
|
|
219
|
-
node: atRule,
|
|
220
|
-
conditions: [...conditions],
|
|
221
|
-
from
|
|
222
|
-
};
|
|
223
|
-
}
|
|
224
|
-
function parseImport(result, atRule, conditions, from) {
|
|
225
|
-
let prev = atRule.prev();
|
|
226
|
-
if (prev)
|
|
227
|
-
do {
|
|
228
|
-
if (prev.type === "comment" || prev.type === "atrule" && prev.name === "import") {
|
|
229
|
-
prev = prev.prev();
|
|
230
|
-
continue;
|
|
231
|
-
}
|
|
232
|
-
break;
|
|
233
|
-
} while (prev);
|
|
234
|
-
if (prev)
|
|
235
|
-
do {
|
|
236
|
-
if (prev.type === "comment" || prev.type === "atrule" && (prev.name === "charset" || prev.name === "layer" && !prev.nodes)) {
|
|
237
|
-
prev = prev.prev();
|
|
238
|
-
continue;
|
|
239
|
-
}
|
|
240
|
-
return result.warn("@import must precede all other statements (besides @charset or empty @layer)", { node: atRule });
|
|
241
|
-
} while (prev);
|
|
242
|
-
if (atRule.nodes)
|
|
243
|
-
return result.warn("It looks like you didn't end your @import statement correctly. Child nodes are attached to it.", { node: atRule });
|
|
244
|
-
const params = valueParser(atRule.params).nodes;
|
|
245
|
-
const stmt = {
|
|
246
|
-
type: "import",
|
|
247
|
-
uri: "",
|
|
248
|
-
fullUri: "",
|
|
249
|
-
node: atRule,
|
|
250
|
-
conditions: [...conditions],
|
|
251
|
-
from
|
|
252
|
-
};
|
|
253
|
-
let layer;
|
|
254
|
-
let media;
|
|
255
|
-
let supports;
|
|
256
|
-
for (let i = 0;i < params.length; i++) {
|
|
257
|
-
const node = params[i];
|
|
258
|
-
if (node.type === "space" || node.type === "comment")
|
|
259
|
-
continue;
|
|
260
|
-
if (node.type === "string") {
|
|
261
|
-
if (stmt.uri)
|
|
262
|
-
return result.warn(`Multiple url's in '${atRule.toString()}'`, { node: atRule });
|
|
263
|
-
if (!node.value)
|
|
264
|
-
return result.warn(`Unable to find uri in '${atRule.toString()}'`, { node: atRule });
|
|
265
|
-
stmt.uri = node.value;
|
|
266
|
-
stmt.fullUri = stringify(node);
|
|
267
|
-
continue;
|
|
268
|
-
}
|
|
269
|
-
if (node.type === "function" && /^url$/i.test(node.value)) {
|
|
270
|
-
if (stmt.uri)
|
|
271
|
-
return result.warn(`Multiple url's in '${atRule.toString()}'`, { node: atRule });
|
|
272
|
-
if (!node.nodes?.[0]?.value)
|
|
273
|
-
return result.warn(`Unable to find uri in '${atRule.toString()}'`, { node: atRule });
|
|
274
|
-
stmt.uri = node.nodes[0].value;
|
|
275
|
-
stmt.fullUri = stringify(node);
|
|
276
|
-
continue;
|
|
277
|
-
}
|
|
278
|
-
if (!stmt.uri)
|
|
279
|
-
return result.warn(`Unable to find uri in '${atRule.toString()}'`, { node: atRule });
|
|
280
|
-
if ((node.type === "word" || node.type === "function") && /^layer$/i.test(node.value)) {
|
|
281
|
-
if (typeof layer !== "undefined")
|
|
282
|
-
return result.warn(`Multiple layers in '${atRule.toString()}'`, { node: atRule });
|
|
283
|
-
if (typeof supports !== "undefined")
|
|
284
|
-
return result.warn(`layers must be defined before support conditions in '${atRule.toString()}'`, { node: atRule });
|
|
285
|
-
if (node.nodes)
|
|
286
|
-
layer = stringify(node.nodes);
|
|
287
|
-
else
|
|
288
|
-
layer = "";
|
|
289
|
-
continue;
|
|
290
|
-
}
|
|
291
|
-
if (node.type === "function" && /^supports$/i.test(node.value)) {
|
|
292
|
-
if (typeof supports !== "undefined")
|
|
293
|
-
return result.warn(`Multiple support conditions in '${atRule.toString()}'`, { node: atRule });
|
|
294
|
-
supports = stringify(node.nodes);
|
|
295
|
-
continue;
|
|
296
|
-
}
|
|
297
|
-
media = stringify(params.slice(i));
|
|
298
|
-
break;
|
|
299
|
-
}
|
|
300
|
-
if (!stmt.uri)
|
|
301
|
-
return result.warn(`Unable to find uri in '${atRule.toString()}'`, { node: atRule });
|
|
302
|
-
if (typeof media !== "undefined" || typeof layer !== "undefined" || typeof supports !== "undefined")
|
|
303
|
-
stmt.conditions.push({
|
|
304
|
-
layer,
|
|
305
|
-
media,
|
|
306
|
-
supports
|
|
307
|
-
});
|
|
308
|
-
return stmt;
|
|
309
|
-
}
|
|
310
|
-
function parseLayer(result, atRule, conditions, from) {
|
|
311
|
-
return {
|
|
312
|
-
type: "layer",
|
|
313
|
-
node: atRule,
|
|
314
|
-
conditions: [...conditions],
|
|
315
|
-
from
|
|
316
|
-
};
|
|
317
|
-
}
|
|
318
|
-
});
|
|
319
|
-
var require_process_content = /* @__PURE__ */ __commonJSMin((exports, module) => {
|
|
320
|
-
const path$2 = __require("path");
|
|
321
|
-
let sugarss;
|
|
322
|
-
module.exports = function processContent(result, content, filename, options, postcss) {
|
|
323
|
-
const { plugins } = options;
|
|
324
|
-
const ext = path$2.extname(filename);
|
|
325
|
-
const parserList = [];
|
|
326
|
-
if (ext === ".sss") {
|
|
327
|
-
if (!sugarss)
|
|
328
|
-
try {
|
|
329
|
-
sugarss = __require("sugarss");
|
|
330
|
-
} catch {}
|
|
331
|
-
if (sugarss)
|
|
332
|
-
return runPostcss(postcss, content, filename, plugins, [sugarss]);
|
|
333
|
-
}
|
|
334
|
-
if (result.opts.syntax?.parse)
|
|
335
|
-
parserList.push(result.opts.syntax.parse);
|
|
336
|
-
if (result.opts.parser)
|
|
337
|
-
parserList.push(result.opts.parser);
|
|
338
|
-
parserList.push(null);
|
|
339
|
-
return runPostcss(postcss, content, filename, plugins, parserList);
|
|
340
|
-
};
|
|
341
|
-
function runPostcss(postcss, content, filename, plugins, parsers, index) {
|
|
342
|
-
if (!index)
|
|
343
|
-
index = 0;
|
|
344
|
-
return postcss(plugins).process(content, {
|
|
345
|
-
from: filename,
|
|
346
|
-
parser: parsers[index]
|
|
347
|
-
}).catch((err) => {
|
|
348
|
-
index++;
|
|
349
|
-
if (index === parsers.length)
|
|
350
|
-
throw err;
|
|
351
|
-
return runPostcss(postcss, content, filename, plugins, parsers, index);
|
|
352
|
-
});
|
|
353
|
-
}
|
|
354
|
-
});
|
|
355
|
-
var require_parse_styles = /* @__PURE__ */ __commonJSMin((exports, module) => {
|
|
356
|
-
const path$1 = __require("path");
|
|
357
|
-
const dataURL = require_data_url();
|
|
358
|
-
const parseStatements = require_parse_statements();
|
|
359
|
-
const processContent = require_process_content();
|
|
360
|
-
const resolveId = (id) => id;
|
|
361
|
-
const formatImportPrelude = require_format_import_prelude();
|
|
362
|
-
async function parseStyles(result, styles, options, state, conditions, from, postcss) {
|
|
363
|
-
const statements = parseStatements(result, styles, conditions, from);
|
|
364
|
-
for (const stmt of statements) {
|
|
365
|
-
if (stmt.type !== "import" || !isProcessableURL(stmt.uri))
|
|
366
|
-
continue;
|
|
367
|
-
if (options.filter && !options.filter(stmt.uri))
|
|
368
|
-
continue;
|
|
369
|
-
await resolveImportId(result, stmt, options, state, postcss);
|
|
370
|
-
}
|
|
371
|
-
let charset;
|
|
372
|
-
const beforeBundle = [];
|
|
373
|
-
const bundle = [];
|
|
374
|
-
function handleCharset(stmt) {
|
|
375
|
-
if (!charset)
|
|
376
|
-
charset = stmt;
|
|
377
|
-
else if (stmt.node.params.toLowerCase() !== charset.node.params.toLowerCase())
|
|
378
|
-
throw stmt.node.error(`Incompatible @charset statements:
|
|
379
|
-
${stmt.node.params} specified in ${stmt.node.source.input.file}
|
|
380
|
-
${charset.node.params} specified in ${charset.node.source.input.file}`);
|
|
381
|
-
}
|
|
382
|
-
statements.forEach((stmt) => {
|
|
383
|
-
if (stmt.type === "charset")
|
|
384
|
-
handleCharset(stmt);
|
|
385
|
-
else if (stmt.type === "import")
|
|
386
|
-
if (stmt.children)
|
|
387
|
-
stmt.children.forEach((child, index) => {
|
|
388
|
-
if (child.type === "import")
|
|
389
|
-
beforeBundle.push(child);
|
|
390
|
-
else if (child.type === "layer")
|
|
391
|
-
beforeBundle.push(child);
|
|
392
|
-
else if (child.type === "charset")
|
|
393
|
-
handleCharset(child);
|
|
394
|
-
else
|
|
395
|
-
bundle.push(child);
|
|
396
|
-
if (index === 0)
|
|
397
|
-
child.parent = stmt;
|
|
398
|
-
});
|
|
399
|
-
else
|
|
400
|
-
beforeBundle.push(stmt);
|
|
401
|
-
else if (stmt.type === "layer")
|
|
402
|
-
beforeBundle.push(stmt);
|
|
403
|
-
else if (stmt.type === "nodes")
|
|
404
|
-
bundle.push(stmt);
|
|
405
|
-
});
|
|
406
|
-
return charset ? [charset, ...beforeBundle.concat(bundle)] : beforeBundle.concat(bundle);
|
|
407
|
-
}
|
|
408
|
-
async function resolveImportId(result, stmt, options, state, postcss) {
|
|
409
|
-
if (dataURL.isValid(stmt.uri)) {
|
|
410
|
-
stmt.children = await loadImportContent(result, stmt, stmt.uri, options, state, postcss);
|
|
411
|
-
return;
|
|
412
|
-
} else if (dataURL.isValid(stmt.from.slice(-1)))
|
|
413
|
-
throw stmt.node.error(`Unable to import '${stmt.uri}' from a stylesheet that is embedded in a data url`);
|
|
414
|
-
const atRule = stmt.node;
|
|
415
|
-
let sourceFile;
|
|
416
|
-
if (atRule.source?.input?.file)
|
|
417
|
-
sourceFile = atRule.source.input.file;
|
|
418
|
-
const base = sourceFile ? path$1.dirname(atRule.source.input.file) : options.root;
|
|
419
|
-
const paths = [await options.resolve(stmt.uri, base, options, atRule)].flat();
|
|
420
|
-
const resolved = await Promise.all(paths.map((file) => {
|
|
421
|
-
return !path$1.isAbsolute(file) ? resolveId(file, base, options, atRule) : file;
|
|
422
|
-
}));
|
|
423
|
-
resolved.forEach((file) => {
|
|
424
|
-
result.messages.push({
|
|
425
|
-
type: "dependency",
|
|
426
|
-
plugin: "postcss-import",
|
|
427
|
-
file,
|
|
428
|
-
parent: sourceFile
|
|
429
|
-
});
|
|
430
|
-
});
|
|
431
|
-
stmt.children = (await Promise.all(resolved.map((file) => {
|
|
432
|
-
return loadImportContent(result, stmt, file, options, state, postcss);
|
|
433
|
-
}))).flat().filter((x) => !!x);
|
|
434
|
-
}
|
|
435
|
-
async function loadImportContent(result, stmt, filename, options, state, postcss) {
|
|
436
|
-
const atRule = stmt.node;
|
|
437
|
-
const { conditions, from } = stmt;
|
|
438
|
-
const stmtDuplicateCheckKey = conditions.map((condition) => formatImportPrelude(condition.layer, condition.media, condition.supports)).join(":");
|
|
439
|
-
if (options.skipDuplicates) {
|
|
440
|
-
if (state.importedFiles[filename]?.[stmtDuplicateCheckKey])
|
|
441
|
-
return;
|
|
442
|
-
if (!state.importedFiles[filename])
|
|
443
|
-
state.importedFiles[filename] = {};
|
|
444
|
-
state.importedFiles[filename][stmtDuplicateCheckKey] = true;
|
|
445
|
-
}
|
|
446
|
-
if (from.includes(filename))
|
|
447
|
-
return;
|
|
448
|
-
const content = await options.load(filename, options);
|
|
449
|
-
if (content.trim() === "" && options.warnOnEmpty) {
|
|
450
|
-
result.warn(`${filename} is empty`, { node: atRule });
|
|
451
|
-
return;
|
|
452
|
-
}
|
|
453
|
-
if (options.skipDuplicates && state.hashFiles[content]?.[stmtDuplicateCheckKey])
|
|
454
|
-
return;
|
|
455
|
-
const importedResult = await processContent(result, content, filename, options, postcss);
|
|
456
|
-
const styles = importedResult.root;
|
|
457
|
-
result.messages = result.messages.concat(importedResult.messages);
|
|
458
|
-
if (options.skipDuplicates) {
|
|
459
|
-
if (!styles.some((child) => {
|
|
460
|
-
return child.type === "atrule" && child.name === "import";
|
|
461
|
-
})) {
|
|
462
|
-
if (!state.hashFiles[content])
|
|
463
|
-
state.hashFiles[content] = {};
|
|
464
|
-
state.hashFiles[content][stmtDuplicateCheckKey] = true;
|
|
465
|
-
}
|
|
466
|
-
}
|
|
467
|
-
return parseStyles(result, styles, options, state, conditions, [...from, filename], postcss);
|
|
468
|
-
}
|
|
469
|
-
function isProcessableURL(uri) {
|
|
470
|
-
if (/^(?:[a-z]+:)?\/\//i.test(uri))
|
|
471
|
-
return false;
|
|
472
|
-
try {
|
|
473
|
-
if (new URL(uri, "https://example.com").search)
|
|
474
|
-
return false;
|
|
475
|
-
} catch {}
|
|
476
|
-
return true;
|
|
477
|
-
}
|
|
478
|
-
module.exports = parseStyles;
|
|
479
|
-
});
|
|
480
|
-
var require_postcss_import = /* @__PURE__ */ __commonJSMin((exports, module) => {
|
|
481
|
-
const path = __require("path");
|
|
482
|
-
const applyConditions = require_apply_conditions();
|
|
483
|
-
const applyRaws = require_apply_raws();
|
|
484
|
-
const applyStyles = require_apply_styles();
|
|
485
|
-
const loadContent = () => "";
|
|
486
|
-
const parseStyles = require_parse_styles();
|
|
487
|
-
const resolveId = (id) => id;
|
|
488
|
-
function AtImport(options) {
|
|
489
|
-
options = {
|
|
490
|
-
root: process.cwd(),
|
|
491
|
-
path: [],
|
|
492
|
-
skipDuplicates: true,
|
|
493
|
-
resolve: resolveId,
|
|
494
|
-
load: loadContent,
|
|
495
|
-
plugins: [],
|
|
496
|
-
addModulesDirectories: [],
|
|
497
|
-
warnOnEmpty: true,
|
|
498
|
-
...options
|
|
499
|
-
};
|
|
500
|
-
options.root = path.resolve(options.root);
|
|
501
|
-
if (typeof options.path === "string")
|
|
502
|
-
options.path = [options.path];
|
|
503
|
-
if (!Array.isArray(options.path))
|
|
504
|
-
options.path = [];
|
|
505
|
-
options.path = options.path.map((p) => path.resolve(options.root, p));
|
|
506
|
-
return {
|
|
507
|
-
postcssPlugin: "postcss-import",
|
|
508
|
-
async Once(styles, { result, atRule, postcss }) {
|
|
509
|
-
const state = {
|
|
510
|
-
importedFiles: {},
|
|
511
|
-
hashFiles: {}
|
|
512
|
-
};
|
|
513
|
-
if (styles.source?.input?.file)
|
|
514
|
-
state.importedFiles[styles.source.input.file] = {};
|
|
515
|
-
if (options.plugins && !Array.isArray(options.plugins))
|
|
516
|
-
throw new Error("plugins option must be an array");
|
|
517
|
-
const bundle = await parseStyles(result, styles, options, state, [], [], postcss);
|
|
518
|
-
applyRaws(bundle);
|
|
519
|
-
applyConditions(bundle, atRule);
|
|
520
|
-
applyStyles(bundle, styles);
|
|
521
|
-
}
|
|
522
|
-
};
|
|
523
|
-
}
|
|
524
|
-
AtImport.postcss = true;
|
|
525
|
-
module.exports = AtImport;
|
|
526
|
-
});
|
|
527
|
-
var postcss_import_default = require_postcss_import();
|
|
528
|
-
export {
|
|
529
|
-
postcss_import_default as default
|
|
530
|
-
};
|
|
531
|
-
|
|
532
|
-
//# debugId=709DA938C4F70D1F64756E2164756E21
|
|
533
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3ZpdGUvZGlzdC9ub2RlL2NodW5rcy9wb3N0Y3NzLWltcG9ydC5qcyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsKICAgICJpbXBvcnQgeyBmdCBhcyBfX2NvbW1vbkpTTWluLCBwdCBhcyBfX3JlcXVpcmUgfSBmcm9tIFwiLi9ub2RlLmpzXCI7XG5pbXBvcnQgeyB0IGFzIHJlcXVpcmVfbGliIH0gZnJvbSBcIi4vbGliLmpzXCI7XG4vLyNyZWdpb24gLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3Bvc3Rjc3MtaW1wb3J0QDE2LjEuMV9wb3N0Y3NzQDguNS4xNy9ub2RlX21vZHVsZXMvcG9zdGNzcy1pbXBvcnQvbGliL2Zvcm1hdC1pbXBvcnQtcHJlbHVkZS5qc1xudmFyIHJlcXVpcmVfZm9ybWF0X2ltcG9ydF9wcmVsdWRlID0gLyogQF9fUFVSRV9fICovIF9fY29tbW9uSlNNaW4oKChleHBvcnRzLCBtb2R1bGUpID0+IHtcblx0bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBmb3JtYXRJbXBvcnRQcmVsdWRlKGxheWVyLCBtZWRpYSwgc3VwcG9ydHMpIHtcblx0XHRjb25zdCBwYXJ0cyA9IFtdO1xuXHRcdGlmICh0eXBlb2YgbGF5ZXIgIT09IFwidW5kZWZpbmVkXCIpIHtcblx0XHRcdGxldCBsYXllclBhcmFtcyA9IFwibGF5ZXJcIjtcblx0XHRcdGlmIChsYXllcikgbGF5ZXJQYXJhbXMgPSBgbGF5ZXIoJHtsYXllcn0pYDtcblx0XHRcdHBhcnRzLnB1c2gobGF5ZXJQYXJhbXMpO1xuXHRcdH1cblx0XHRpZiAodHlwZW9mIHN1cHBvcnRzICE9PSBcInVuZGVmaW5lZFwiKSBwYXJ0cy5wdXNoKGBzdXBwb3J0cygke3N1cHBvcnRzfSlgKTtcblx0XHRpZiAodHlwZW9mIG1lZGlhICE9PSBcInVuZGVmaW5lZFwiKSBwYXJ0cy5wdXNoKG1lZGlhKTtcblx0XHRyZXR1cm4gcGFydHMuam9pbihcIiBcIik7XG5cdH07XG59KSk7XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiAuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vcG9zdGNzcy1pbXBvcnRAMTYuMS4xX3Bvc3Rjc3NAOC41LjE3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWltcG9ydC9saWIvYmFzZTY0LWVuY29kZWQtaW1wb3J0LmpzXG52YXIgcmVxdWlyZV9iYXNlNjRfZW5jb2RlZF9pbXBvcnQgPSAvKiBAX19QVVJFX18gKi8gX19jb21tb25KU01pbigoKGV4cG9ydHMsIG1vZHVsZSkgPT4ge1xuXHRjb25zdCBmb3JtYXRJbXBvcnRQcmVsdWRlID0gcmVxdWlyZV9mb3JtYXRfaW1wb3J0X3ByZWx1ZGUoKTtcblx0bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBiYXNlNjRFbmNvZGVkQ29uZGl0aW9uYWxJbXBvcnQocHJlbHVkZSwgY29uZGl0aW9ucykge1xuXHRcdGlmICghY29uZGl0aW9ucz8ubGVuZ3RoKSByZXR1cm4gcHJlbHVkZTtcblx0XHRjb25kaXRpb25zLnJldmVyc2UoKTtcblx0XHRjb25zdCBmaXJzdCA9IGNvbmRpdGlvbnMucG9wKCk7XG5cdFx0bGV0IHBhcmFtcyA9IGAke3ByZWx1ZGV9ICR7Zm9ybWF0SW1wb3J0UHJlbHVkZShmaXJzdC5sYXllciwgZmlyc3QubWVkaWEsIGZpcnN0LnN1cHBvcnRzKX1gO1xuXHRcdGZvciAoY29uc3QgY29uZGl0aW9uIG9mIGNvbmRpdGlvbnMpIHBhcmFtcyA9IGAnZGF0YTp0ZXh0L2NzcztiYXNlNjQsJHtCdWZmZXIuZnJvbShgQGltcG9ydCAke3BhcmFtc31gKS50b1N0cmluZyhcImJhc2U2NFwiKX0nICR7Zm9ybWF0SW1wb3J0UHJlbHVkZShjb25kaXRpb24ubGF5ZXIsIGNvbmRpdGlvbi5tZWRpYSwgY29uZGl0aW9uLnN1cHBvcnRzKX1gO1xuXHRcdHJldHVybiBwYXJhbXM7XG5cdH07XG59KSk7XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiAuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vcG9zdGNzcy1pbXBvcnRAMTYuMS4xX3Bvc3Rjc3NAOC41LjE3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWltcG9ydC9saWIvYXBwbHktY29uZGl0aW9ucy5qc1xudmFyIHJlcXVpcmVfYXBwbHlfY29uZGl0aW9ucyA9IC8qIEBfX1BVUkVfXyAqLyBfX2NvbW1vbkpTTWluKCgoZXhwb3J0cywgbW9kdWxlKSA9PiB7XG5cdGNvbnN0IGJhc2U2NEVuY29kZWRDb25kaXRpb25hbEltcG9ydCA9IHJlcXVpcmVfYmFzZTY0X2VuY29kZWRfaW1wb3J0KCk7XG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gYXBwbHlDb25kaXRpb25zKGJ1bmRsZSwgYXRSdWxlKSB7XG5cdFx0Y29uc3QgZmlyc3RJbXBvcnRTdGF0ZW1lbnRJbmRleCA9IGJ1bmRsZS5maW5kSW5kZXgoKHN0bXQpID0+IHN0bXQudHlwZSA9PT0gXCJpbXBvcnRcIik7XG5cdFx0Y29uc3QgbGFzdEltcG9ydFN0YXRlbWVudEluZGV4ID0gYnVuZGxlLmZpbmRMYXN0SW5kZXgoKHN0bXQpID0+IHN0bXQudHlwZSA9PT0gXCJpbXBvcnRcIik7XG5cdFx0YnVuZGxlLmZvckVhY2goKHN0bXQsIGluZGV4KSA9PiB7XG5cdFx0XHRpZiAoc3RtdC50eXBlID09PSBcImNoYXJzZXRcIiB8fCBzdG10LnR5cGUgPT09IFwid2FybmluZ1wiKSByZXR1cm47XG5cdFx0XHRpZiAoc3RtdC50eXBlID09PSBcImxheWVyXCIgJiYgKGluZGV4IDwgbGFzdEltcG9ydFN0YXRlbWVudEluZGV4ICYmIHN0bXQuY29uZGl0aW9ucz8ubGVuZ3RoIHx8IGluZGV4ID4gZmlyc3RJbXBvcnRTdGF0ZW1lbnRJbmRleCAmJiBpbmRleCA8IGxhc3RJbXBvcnRTdGF0ZW1lbnRJbmRleCkpIHtcblx0XHRcdFx0c3RtdC50eXBlID0gXCJpbXBvcnRcIjtcblx0XHRcdFx0c3RtdC5ub2RlID0gc3RtdC5ub2RlLmNsb25lKHtcblx0XHRcdFx0XHRuYW1lOiBcImltcG9ydFwiLFxuXHRcdFx0XHRcdHBhcmFtczogYmFzZTY0RW5jb2RlZENvbmRpdGlvbmFsSW1wb3J0KGAnZGF0YTp0ZXh0L2NzcztiYXNlNjQsJHtCdWZmZXIuZnJvbShzdG10Lm5vZGUudG9TdHJpbmcoKSkudG9TdHJpbmcoXCJiYXNlNjRcIil9J2AsIHN0bXQuY29uZGl0aW9ucylcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGlmICghc3RtdC5jb25kaXRpb25zPy5sZW5ndGgpIHJldHVybjtcblx0XHRcdGlmIChzdG10LnR5cGUgPT09IFwiaW1wb3J0XCIpIHtcblx0XHRcdFx0c3RtdC5ub2RlLnBhcmFtcyA9IGJhc2U2NEVuY29kZWRDb25kaXRpb25hbEltcG9ydChzdG10LmZ1bGxVcmksIHN0bXQuY29uZGl0aW9ucyk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGxldCBub2Rlcztcblx0XHRcdGxldCBwYXJlbnQ7XG5cdFx0XHRpZiAoc3RtdC50eXBlID09PSBcImxheWVyXCIpIHtcblx0XHRcdFx0bm9kZXMgPSBbc3RtdC5ub2RlXTtcblx0XHRcdFx0cGFyZW50ID0gc3RtdC5ub2RlLnBhcmVudDtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdG5vZGVzID0gc3RtdC5ub2Rlcztcblx0XHRcdFx0cGFyZW50ID0gbm9kZXNbMF0ucGFyZW50O1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgYXRSdWxlcyA9IFtdO1xuXHRcdFx0Zm9yIChjb25zdCBjb25kaXRpb24gb2Ygc3RtdC5jb25kaXRpb25zKSB7XG5cdFx0XHRcdGlmICh0eXBlb2YgY29uZGl0aW9uLm1lZGlhICE9PSBcInVuZGVmaW5lZFwiKSB7XG5cdFx0XHRcdFx0Y29uc3QgbWVkaWFOb2RlID0gYXRSdWxlKHtcblx0XHRcdFx0XHRcdG5hbWU6IFwibWVkaWFcIixcblx0XHRcdFx0XHRcdHBhcmFtczogY29uZGl0aW9uLm1lZGlhLFxuXHRcdFx0XHRcdFx0c291cmNlOiBwYXJlbnQuc291cmNlXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0YXRSdWxlcy5wdXNoKG1lZGlhTm9kZSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKHR5cGVvZiBjb25kaXRpb24uc3VwcG9ydHMgIT09IFwidW5kZWZpbmVkXCIpIHtcblx0XHRcdFx0XHRjb25zdCBzdXBwb3J0c05vZGUgPSBhdFJ1bGUoe1xuXHRcdFx0XHRcdFx0bmFtZTogXCJzdXBwb3J0c1wiLFxuXHRcdFx0XHRcdFx0cGFyYW1zOiBgKCR7Y29uZGl0aW9uLnN1cHBvcnRzfSlgLFxuXHRcdFx0XHRcdFx0c291cmNlOiBwYXJlbnQuc291cmNlXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0YXRSdWxlcy5wdXNoKHN1cHBvcnRzTm9kZSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKHR5cGVvZiBjb25kaXRpb24ubGF5ZXIgIT09IFwidW5kZWZpbmVkXCIpIHtcblx0XHRcdFx0XHRjb25zdCBsYXllck5vZGUgPSBhdFJ1bGUoe1xuXHRcdFx0XHRcdFx0bmFtZTogXCJsYXllclwiLFxuXHRcdFx0XHRcdFx0cGFyYW1zOiBjb25kaXRpb24ubGF5ZXIsXG5cdFx0XHRcdFx0XHRzb3VyY2U6IHBhcmVudC5zb3VyY2Vcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRhdFJ1bGVzLnB1c2gobGF5ZXJOb2RlKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0Y29uc3Qgb3V0ZXJBdFJ1bGUgPSBhdFJ1bGVzLnNoaWZ0KCk7XG5cdFx0XHRjb25zdCBpbm5lckF0UnVsZSA9IGF0UnVsZXMucmVkdWNlKChwcmV2aW91cywgbmV4dCkgPT4ge1xuXHRcdFx0XHRwcmV2aW91cy5hcHBlbmQobmV4dCk7XG5cdFx0XHRcdHJldHVybiBuZXh0O1xuXHRcdFx0fSwgb3V0ZXJBdFJ1bGUpO1xuXHRcdFx0cGFyZW50Lmluc2VydEJlZm9yZShub2Rlc1swXSwgb3V0ZXJBdFJ1bGUpO1xuXHRcdFx0bm9kZXMuZm9yRWFjaCgobm9kZSkgPT4ge1xuXHRcdFx0XHRub2RlLnBhcmVudCA9IHZvaWQgMDtcblx0XHRcdH0pO1xuXHRcdFx0bm9kZXNbMF0ucmF3cy5iZWZvcmUgPSBub2Rlc1swXS5yYXdzLmJlZm9yZSB8fCBcIlxcblwiO1xuXHRcdFx0aW5uZXJBdFJ1bGUuYXBwZW5kKG5vZGVzKTtcblx0XHRcdHN0bXQudHlwZSA9IFwibm9kZXNcIjtcblx0XHRcdHN0bXQubm9kZXMgPSBbb3V0ZXJBdFJ1bGVdO1xuXHRcdFx0ZGVsZXRlIHN0bXQubm9kZTtcblx0XHR9KTtcblx0fTtcbn0pKTtcbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIC4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9wb3N0Y3NzLWltcG9ydEAxNi4xLjFfcG9zdGNzc0A4LjUuMTcvbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtaW1wb3J0L2xpYi9hcHBseS1yYXdzLmpzXG52YXIgcmVxdWlyZV9hcHBseV9yYXdzID0gLyogQF9fUFVSRV9fICovIF9fY29tbW9uSlNNaW4oKChleHBvcnRzLCBtb2R1bGUpID0+IHtcblx0bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBhcHBseVJhd3MoYnVuZGxlKSB7XG5cdFx0YnVuZGxlLmZvckVhY2goKHN0bXQsIGluZGV4KSA9PiB7XG5cdFx0XHRpZiAoaW5kZXggPT09IDApIHJldHVybjtcblx0XHRcdGlmIChzdG10LnBhcmVudCkge1xuXHRcdFx0XHRjb25zdCB7IGJlZm9yZSB9ID0gc3RtdC5wYXJlbnQubm9kZS5yYXdzO1xuXHRcdFx0XHRpZiAoc3RtdC50eXBlID09PSBcIm5vZGVzXCIpIHN0bXQubm9kZXNbMF0ucmF3cy5iZWZvcmUgPSBiZWZvcmU7XG5cdFx0XHRcdGVsc2Ugc3RtdC5ub2RlLnJhd3MuYmVmb3JlID0gYmVmb3JlO1xuXHRcdFx0fSBlbHNlIGlmIChzdG10LnR5cGUgPT09IFwibm9kZXNcIikgc3RtdC5ub2Rlc1swXS5yYXdzLmJlZm9yZSA9IHN0bXQubm9kZXNbMF0ucmF3cy5iZWZvcmUgfHwgXCJcXG5cIjtcblx0XHR9KTtcblx0fTtcbn0pKTtcbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIC4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9wb3N0Y3NzLWltcG9ydEAxNi4xLjFfcG9zdGNzc0A4LjUuMTcvbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtaW1wb3J0L2xpYi9hcHBseS1zdHlsZXMuanNcbnZhciByZXF1aXJlX2FwcGx5X3N0eWxlcyA9IC8qIEBfX1BVUkVfXyAqLyBfX2NvbW1vbkpTTWluKCgoZXhwb3J0cywgbW9kdWxlKSA9PiB7XG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gYXBwbHlTdHlsZXMoYnVuZGxlLCBzdHlsZXMpIHtcblx0XHRzdHlsZXMubm9kZXMgPSBbXTtcblx0XHRidW5kbGUuZm9yRWFjaCgoc3RtdCkgPT4ge1xuXHRcdFx0aWYgKFtcblx0XHRcdFx0XCJjaGFyc2V0XCIsXG5cdFx0XHRcdFwiaW1wb3J0XCIsXG5cdFx0XHRcdFwibGF5ZXJcIlxuXHRcdFx0XS5pbmNsdWRlcyhzdG10LnR5cGUpKSB7XG5cdFx0XHRcdHN0bXQubm9kZS5wYXJlbnQgPSB2b2lkIDA7XG5cdFx0XHRcdHN0eWxlcy5hcHBlbmQoc3RtdC5ub2RlKTtcblx0XHRcdH0gZWxzZSBpZiAoc3RtdC50eXBlID09PSBcIm5vZGVzXCIpIHN0bXQubm9kZXMuZm9yRWFjaCgobm9kZSkgPT4ge1xuXHRcdFx0XHRub2RlLnBhcmVudCA9IHZvaWQgMDtcblx0XHRcdFx0c3R5bGVzLmFwcGVuZChub2RlKTtcblx0XHRcdH0pO1xuXHRcdH0pO1xuXHR9O1xufSkpO1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3Bvc3Rjc3MtaW1wb3J0QDE2LjEuMV9wb3N0Y3NzQDguNS4xNy9ub2RlX21vZHVsZXMvcG9zdGNzcy1pbXBvcnQvbGliL2RhdGEtdXJsLmpzXG52YXIgcmVxdWlyZV9kYXRhX3VybCA9IC8qIEBfX1BVUkVfXyAqLyBfX2NvbW1vbkpTTWluKCgoZXhwb3J0cywgbW9kdWxlKSA9PiB7XG5cdGNvbnN0IGFueURhdGFVUkxSZWdleHAgPSAvXmRhdGE6dGV4dFxcL2Nzcyg/OjsoYmFzZTY0fHBsYWluKSk/LC9pO1xuXHRjb25zdCBiYXNlNjREYXRhVVJMUmVnZXhwID0gL15kYXRhOnRleHRcXC9jc3M7YmFzZTY0LC9pO1xuXHRjb25zdCBwbGFpbkRhdGFVUkxSZWdleHAgPSAvXmRhdGE6dGV4dFxcL2NzcztwbGFpbiwvaTtcblx0ZnVuY3Rpb24gaXNWYWxpZCh1cmwpIHtcblx0XHRyZXR1cm4gYW55RGF0YVVSTFJlZ2V4cC50ZXN0KHVybCk7XG5cdH1cblx0ZnVuY3Rpb24gY29udGVudHModXJsKSB7XG5cdFx0aWYgKGJhc2U2NERhdGFVUkxSZWdleHAudGVzdCh1cmwpKSByZXR1cm4gQnVmZmVyLmZyb20odXJsLnNsaWNlKDIxKSwgXCJiYXNlNjRcIikudG9TdHJpbmcoKTtcblx0XHRpZiAocGxhaW5EYXRhVVJMUmVnZXhwLnRlc3QodXJsKSkgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudCh1cmwuc2xpY2UoMjApKTtcblx0XHRyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KHVybC5zbGljZSgxNCkpO1xuXHR9XG5cdG1vZHVsZS5leHBvcnRzID0ge1xuXHRcdGlzVmFsaWQsXG5cdFx0Y29udGVudHNcblx0fTtcbn0pKTtcbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIC4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9wb3N0Y3NzLWltcG9ydEAxNi4xLjFfcG9zdGNzc0A4LjUuMTcvbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtaW1wb3J0L2xpYi9wYXJzZS1zdGF0ZW1lbnRzLmpzXG52YXIgcmVxdWlyZV9wYXJzZV9zdGF0ZW1lbnRzID0gLyogQF9fUFVSRV9fICovIF9fY29tbW9uSlNNaW4oKChleHBvcnRzLCBtb2R1bGUpID0+IHtcblx0Y29uc3QgdmFsdWVQYXJzZXIgPSByZXF1aXJlX2xpYigpO1xuXHRjb25zdCB7IHN0cmluZ2lmeSB9ID0gdmFsdWVQYXJzZXI7XG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gcGFyc2VTdGF0ZW1lbnRzKHJlc3VsdCwgc3R5bGVzLCBjb25kaXRpb25zLCBmcm9tKSB7XG5cdFx0Y29uc3Qgc3RhdGVtZW50cyA9IFtdO1xuXHRcdGxldCBub2RlcyA9IFtdO1xuXHRcdGxldCBlbmNvdW50ZXJlZE5vbkltcG9ydE5vZGVzID0gZmFsc2U7XG5cdFx0c3R5bGVzLmVhY2goKG5vZGUpID0+IHtcblx0XHRcdGxldCBzdG10O1xuXHRcdFx0aWYgKG5vZGUudHlwZSA9PT0gXCJhdHJ1bGVcIikge1xuXHRcdFx0XHRpZiAobm9kZS5uYW1lID09PSBcImltcG9ydFwiKSBzdG10ID0gcGFyc2VJbXBvcnQocmVzdWx0LCBub2RlLCBjb25kaXRpb25zLCBmcm9tKTtcblx0XHRcdFx0ZWxzZSBpZiAobm9kZS5uYW1lID09PSBcImNoYXJzZXRcIikgc3RtdCA9IHBhcnNlQ2hhcnNldChyZXN1bHQsIG5vZGUsIGNvbmRpdGlvbnMsIGZyb20pO1xuXHRcdFx0XHRlbHNlIGlmIChub2RlLm5hbWUgPT09IFwibGF5ZXJcIiAmJiAhZW5jb3VudGVyZWROb25JbXBvcnROb2RlcyAmJiAhbm9kZS5ub2Rlcykgc3RtdCA9IHBhcnNlTGF5ZXIocmVzdWx0LCBub2RlLCBjb25kaXRpb25zLCBmcm9tKTtcblx0XHRcdH0gZWxzZSBpZiAobm9kZS50eXBlICE9PSBcImNvbW1lbnRcIikgZW5jb3VudGVyZWROb25JbXBvcnROb2RlcyA9IHRydWU7XG5cdFx0XHRpZiAoc3RtdCkge1xuXHRcdFx0XHRpZiAobm9kZXMubGVuZ3RoKSB7XG5cdFx0XHRcdFx0c3RhdGVtZW50cy5wdXNoKHtcblx0XHRcdFx0XHRcdHR5cGU6IFwibm9kZXNcIixcblx0XHRcdFx0XHRcdG5vZGVzLFxuXHRcdFx0XHRcdFx0Y29uZGl0aW9uczogWy4uLmNvbmRpdGlvbnNdLFxuXHRcdFx0XHRcdFx0ZnJvbVxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdG5vZGVzID0gW107XG5cdFx0XHRcdH1cblx0XHRcdFx0c3RhdGVtZW50cy5wdXNoKHN0bXQpO1xuXHRcdFx0fSBlbHNlIG5vZGVzLnB1c2gobm9kZSk7XG5cdFx0fSk7XG5cdFx0aWYgKG5vZGVzLmxlbmd0aCkgc3RhdGVtZW50cy5wdXNoKHtcblx0XHRcdHR5cGU6IFwibm9kZXNcIixcblx0XHRcdG5vZGVzLFxuXHRcdFx0Y29uZGl0aW9uczogWy4uLmNvbmRpdGlvbnNdLFxuXHRcdFx0ZnJvbVxuXHRcdH0pO1xuXHRcdHJldHVybiBzdGF0ZW1lbnRzO1xuXHR9O1xuXHRmdW5jdGlvbiBwYXJzZUNoYXJzZXQocmVzdWx0LCBhdFJ1bGUsIGNvbmRpdGlvbnMsIGZyb20pIHtcblx0XHRpZiAoYXRSdWxlLnByZXYoKSkgcmV0dXJuIHJlc3VsdC53YXJuKFwiQGNoYXJzZXQgbXVzdCBwcmVjZWRlIGFsbCBvdGhlciBzdGF0ZW1lbnRzXCIsIHsgbm9kZTogYXRSdWxlIH0pO1xuXHRcdHJldHVybiB7XG5cdFx0XHR0eXBlOiBcImNoYXJzZXRcIixcblx0XHRcdG5vZGU6IGF0UnVsZSxcblx0XHRcdGNvbmRpdGlvbnM6IFsuLi5jb25kaXRpb25zXSxcblx0XHRcdGZyb21cblx0XHR9O1xuXHR9XG5cdGZ1bmN0aW9uIHBhcnNlSW1wb3J0KHJlc3VsdCwgYXRSdWxlLCBjb25kaXRpb25zLCBmcm9tKSB7XG5cdFx0bGV0IHByZXYgPSBhdFJ1bGUucHJldigpO1xuXHRcdGlmIChwcmV2KSBkbyB7XG5cdFx0XHRpZiAocHJldi50eXBlID09PSBcImNvbW1lbnRcIiB8fCBwcmV2LnR5cGUgPT09IFwiYXRydWxlXCIgJiYgcHJldi5uYW1lID09PSBcImltcG9ydFwiKSB7XG5cdFx0XHRcdHByZXYgPSBwcmV2LnByZXYoKTtcblx0XHRcdFx0Y29udGludWU7XG5cdFx0XHR9XG5cdFx0XHRicmVhaztcblx0XHR9IHdoaWxlIChwcmV2KTtcblx0XHRpZiAocHJldikgZG8ge1xuXHRcdFx0aWYgKHByZXYudHlwZSA9PT0gXCJjb21tZW50XCIgfHwgcHJldi50eXBlID09PSBcImF0cnVsZVwiICYmIChwcmV2Lm5hbWUgPT09IFwiY2hhcnNldFwiIHx8IHByZXYubmFtZSA9PT0gXCJsYXllclwiICYmICFwcmV2Lm5vZGVzKSkge1xuXHRcdFx0XHRwcmV2ID0gcHJldi5wcmV2KCk7XG5cdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHJlc3VsdC53YXJuKFwiQGltcG9ydCBtdXN0IHByZWNlZGUgYWxsIG90aGVyIHN0YXRlbWVudHMgKGJlc2lkZXMgQGNoYXJzZXQgb3IgZW1wdHkgQGxheWVyKVwiLCB7IG5vZGU6IGF0UnVsZSB9KTtcblx0XHR9IHdoaWxlIChwcmV2KTtcblx0XHRpZiAoYXRSdWxlLm5vZGVzKSByZXR1cm4gcmVzdWx0Lndhcm4oXCJJdCBsb29rcyBsaWtlIHlvdSBkaWRuJ3QgZW5kIHlvdXIgQGltcG9ydCBzdGF0ZW1lbnQgY29ycmVjdGx5LiBDaGlsZCBub2RlcyBhcmUgYXR0YWNoZWQgdG8gaXQuXCIsIHsgbm9kZTogYXRSdWxlIH0pO1xuXHRcdGNvbnN0IHBhcmFtcyA9IHZhbHVlUGFyc2VyKGF0UnVsZS5wYXJhbXMpLm5vZGVzO1xuXHRcdGNvbnN0IHN0bXQgPSB7XG5cdFx0XHR0eXBlOiBcImltcG9ydFwiLFxuXHRcdFx0dXJpOiBcIlwiLFxuXHRcdFx0ZnVsbFVyaTogXCJcIixcblx0XHRcdG5vZGU6IGF0UnVsZSxcblx0XHRcdGNvbmRpdGlvbnM6IFsuLi5jb25kaXRpb25zXSxcblx0XHRcdGZyb21cblx0XHR9O1xuXHRcdGxldCBsYXllcjtcblx0XHRsZXQgbWVkaWE7XG5cdFx0bGV0IHN1cHBvcnRzO1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgcGFyYW1zLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRjb25zdCBub2RlID0gcGFyYW1zW2ldO1xuXHRcdFx0aWYgKG5vZGUudHlwZSA9PT0gXCJzcGFjZVwiIHx8IG5vZGUudHlwZSA9PT0gXCJjb21tZW50XCIpIGNvbnRpbnVlO1xuXHRcdFx0aWYgKG5vZGUudHlwZSA9PT0gXCJzdHJpbmdcIikge1xuXHRcdFx0XHRpZiAoc3RtdC51cmkpIHJldHVybiByZXN1bHQud2FybihgTXVsdGlwbGUgdXJsJ3MgaW4gJyR7YXRSdWxlLnRvU3RyaW5nKCl9J2AsIHsgbm9kZTogYXRSdWxlIH0pO1xuXHRcdFx0XHRpZiAoIW5vZGUudmFsdWUpIHJldHVybiByZXN1bHQud2FybihgVW5hYmxlIHRvIGZpbmQgdXJpIGluICcke2F0UnVsZS50b1N0cmluZygpfSdgLCB7IG5vZGU6IGF0UnVsZSB9KTtcblx0XHRcdFx0c3RtdC51cmkgPSBub2RlLnZhbHVlO1xuXHRcdFx0XHRzdG10LmZ1bGxVcmkgPSBzdHJpbmdpZnkobm9kZSk7XG5cdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0fVxuXHRcdFx0aWYgKG5vZGUudHlwZSA9PT0gXCJmdW5jdGlvblwiICYmIC9edXJsJC9pLnRlc3Qobm9kZS52YWx1ZSkpIHtcblx0XHRcdFx0aWYgKHN0bXQudXJpKSByZXR1cm4gcmVzdWx0Lndhcm4oYE11bHRpcGxlIHVybCdzIGluICcke2F0UnVsZS50b1N0cmluZygpfSdgLCB7IG5vZGU6IGF0UnVsZSB9KTtcblx0XHRcdFx0aWYgKCFub2RlLm5vZGVzPy5bMF0/LnZhbHVlKSByZXR1cm4gcmVzdWx0Lndhcm4oYFVuYWJsZSB0byBmaW5kIHVyaSBpbiAnJHthdFJ1bGUudG9TdHJpbmcoKX0nYCwgeyBub2RlOiBhdFJ1bGUgfSk7XG5cdFx0XHRcdHN0bXQudXJpID0gbm9kZS5ub2Rlc1swXS52YWx1ZTtcblx0XHRcdFx0c3RtdC5mdWxsVXJpID0gc3RyaW5naWZ5KG5vZGUpO1xuXHRcdFx0XHRjb250aW51ZTtcblx0XHRcdH1cblx0XHRcdGlmICghc3RtdC51cmkpIHJldHVybiByZXN1bHQud2FybihgVW5hYmxlIHRvIGZpbmQgdXJpIGluICcke2F0UnVsZS50b1N0cmluZygpfSdgLCB7IG5vZGU6IGF0UnVsZSB9KTtcblx0XHRcdGlmICgobm9kZS50eXBlID09PSBcIndvcmRcIiB8fCBub2RlLnR5cGUgPT09IFwiZnVuY3Rpb25cIikgJiYgL15sYXllciQvaS50ZXN0KG5vZGUudmFsdWUpKSB7XG5cdFx0XHRcdGlmICh0eXBlb2YgbGF5ZXIgIT09IFwidW5kZWZpbmVkXCIpIHJldHVybiByZXN1bHQud2FybihgTXVsdGlwbGUgbGF5ZXJzIGluICcke2F0UnVsZS50b1N0cmluZygpfSdgLCB7IG5vZGU6IGF0UnVsZSB9KTtcblx0XHRcdFx0aWYgKHR5cGVvZiBzdXBwb3J0cyAhPT0gXCJ1bmRlZmluZWRcIikgcmV0dXJuIHJlc3VsdC53YXJuKGBsYXllcnMgbXVzdCBiZSBkZWZpbmVkIGJlZm9yZSBzdXBwb3J0IGNvbmRpdGlvbnMgaW4gJyR7YXRSdWxlLnRvU3RyaW5nKCl9J2AsIHsgbm9kZTogYXRSdWxlIH0pO1xuXHRcdFx0XHRpZiAobm9kZS5ub2RlcykgbGF5ZXIgPSBzdHJpbmdpZnkobm9kZS5ub2Rlcyk7XG5cdFx0XHRcdGVsc2UgbGF5ZXIgPSBcIlwiO1xuXHRcdFx0XHRjb250aW51ZTtcblx0XHRcdH1cblx0XHRcdGlmIChub2RlLnR5cGUgPT09IFwiZnVuY3Rpb25cIiAmJiAvXnN1cHBvcnRzJC9pLnRlc3Qobm9kZS52YWx1ZSkpIHtcblx0XHRcdFx0aWYgKHR5cGVvZiBzdXBwb3J0cyAhPT0gXCJ1bmRlZmluZWRcIikgcmV0dXJuIHJlc3VsdC53YXJuKGBNdWx0aXBsZSBzdXBwb3J0IGNvbmRpdGlvbnMgaW4gJyR7YXRSdWxlLnRvU3RyaW5nKCl9J2AsIHsgbm9kZTogYXRSdWxlIH0pO1xuXHRcdFx0XHRzdXBwb3J0cyA9IHN0cmluZ2lmeShub2RlLm5vZGVzKTtcblx0XHRcdFx0Y29udGludWU7XG5cdFx0XHR9XG5cdFx0XHRtZWRpYSA9IHN0cmluZ2lmeShwYXJhbXMuc2xpY2UoaSkpO1xuXHRcdFx0YnJlYWs7XG5cdFx0fVxuXHRcdGlmICghc3RtdC51cmkpIHJldHVybiByZXN1bHQud2FybihgVW5hYmxlIHRvIGZpbmQgdXJpIGluICcke2F0UnVsZS50b1N0cmluZygpfSdgLCB7IG5vZGU6IGF0UnVsZSB9KTtcblx0XHRpZiAodHlwZW9mIG1lZGlhICE9PSBcInVuZGVmaW5lZFwiIHx8IHR5cGVvZiBsYXllciAhPT0gXCJ1bmRlZmluZWRcIiB8fCB0eXBlb2Ygc3VwcG9ydHMgIT09IFwidW5kZWZpbmVkXCIpIHN0bXQuY29uZGl0aW9ucy5wdXNoKHtcblx0XHRcdGxheWVyLFxuXHRcdFx0bWVkaWEsXG5cdFx0XHRzdXBwb3J0c1xuXHRcdH0pO1xuXHRcdHJldHVybiBzdG10O1xuXHR9XG5cdGZ1bmN0aW9uIHBhcnNlTGF5ZXIocmVzdWx0LCBhdFJ1bGUsIGNvbmRpdGlvbnMsIGZyb20pIHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0dHlwZTogXCJsYXllclwiLFxuXHRcdFx0bm9kZTogYXRSdWxlLFxuXHRcdFx0Y29uZGl0aW9uczogWy4uLmNvbmRpdGlvbnNdLFxuXHRcdFx0ZnJvbVxuXHRcdH07XG5cdH1cbn0pKTtcbi8vI2VuZHJlZ2lvblxuLy8jcmVnaW9uIC4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9wb3N0Y3NzLWltcG9ydEAxNi4xLjFfcG9zdGNzc0A4LjUuMTcvbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtaW1wb3J0L2xpYi9wcm9jZXNzLWNvbnRlbnQuanNcbnZhciByZXF1aXJlX3Byb2Nlc3NfY29udGVudCA9IC8qIEBfX1BVUkVfXyAqLyBfX2NvbW1vbkpTTWluKCgoZXhwb3J0cywgbW9kdWxlKSA9PiB7XG5cdGNvbnN0IHBhdGgkMiA9IF9fcmVxdWlyZShcInBhdGhcIik7XG5cdGxldCBzdWdhcnNzO1xuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHByb2Nlc3NDb250ZW50KHJlc3VsdCwgY29udGVudCwgZmlsZW5hbWUsIG9wdGlvbnMsIHBvc3Rjc3MpIHtcblx0XHRjb25zdCB7IHBsdWdpbnMgfSA9IG9wdGlvbnM7XG5cdFx0Y29uc3QgZXh0ID0gcGF0aCQyLmV4dG5hbWUoZmlsZW5hbWUpO1xuXHRcdGNvbnN0IHBhcnNlckxpc3QgPSBbXTtcblx0XHRpZiAoZXh0ID09PSBcIi5zc3NcIikge1xuXHRcdFx0aWYgKCFzdWdhcnNzKVxuIC8qIGM4IGlnbm9yZSBuZXh0IDMgKi9cblx0XHRcdHRyeSB7XG5cdFx0XHRcdHN1Z2Fyc3MgPSBfX3JlcXVpcmUoXCJzdWdhcnNzXCIpO1xuXHRcdFx0fSBjYXRjaCB7fVxuXHRcdFx0aWYgKHN1Z2Fyc3MpIHJldHVybiBydW5Qb3N0Y3NzKHBvc3Rjc3MsIGNvbnRlbnQsIGZpbGVuYW1lLCBwbHVnaW5zLCBbc3VnYXJzc10pO1xuXHRcdH1cblx0XHRpZiAocmVzdWx0Lm9wdHMuc3ludGF4Py5wYXJzZSkgcGFyc2VyTGlzdC5wdXNoKHJlc3VsdC5vcHRzLnN5bnRheC5wYXJzZSk7XG5cdFx0aWYgKHJlc3VsdC5vcHRzLnBhcnNlcikgcGFyc2VyTGlzdC5wdXNoKHJlc3VsdC5vcHRzLnBhcnNlcik7XG5cdFx0cGFyc2VyTGlzdC5wdXNoKG51bGwpO1xuXHRcdHJldHVybiBydW5Qb3N0Y3NzKHBvc3Rjc3MsIGNvbnRlbnQsIGZpbGVuYW1lLCBwbHVnaW5zLCBwYXJzZXJMaXN0KTtcblx0fTtcblx0ZnVuY3Rpb24gcnVuUG9zdGNzcyhwb3N0Y3NzLCBjb250ZW50LCBmaWxlbmFtZSwgcGx1Z2lucywgcGFyc2VycywgaW5kZXgpIHtcblx0XHRpZiAoIWluZGV4KSBpbmRleCA9IDA7XG5cdFx0cmV0dXJuIHBvc3Rjc3MocGx1Z2lucykucHJvY2Vzcyhjb250ZW50LCB7XG5cdFx0XHRmcm9tOiBmaWxlbmFtZSxcblx0XHRcdHBhcnNlcjogcGFyc2Vyc1tpbmRleF1cblx0XHR9KS5jYXRjaCgoZXJyKSA9PiB7XG5cdFx0XHRpbmRleCsrO1xuXHRcdFx0aWYgKGluZGV4ID09PSBwYXJzZXJzLmxlbmd0aCkgdGhyb3cgZXJyO1xuXHRcdFx0cmV0dXJuIHJ1blBvc3Rjc3MocG9zdGNzcywgY29udGVudCwgZmlsZW5hbWUsIHBsdWdpbnMsIHBhcnNlcnMsIGluZGV4KTtcblx0XHR9KTtcblx0fVxufSkpO1xuLy8jZW5kcmVnaW9uXG4vLyNyZWdpb24gLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3Bvc3Rjc3MtaW1wb3J0QDE2LjEuMV9wb3N0Y3NzQDguNS4xNy9ub2RlX21vZHVsZXMvcG9zdGNzcy1pbXBvcnQvbGliL3BhcnNlLXN0eWxlcy5qc1xudmFyIHJlcXVpcmVfcGFyc2Vfc3R5bGVzID0gLyogQF9fUFVSRV9fICovIF9fY29tbW9uSlNNaW4oKChleHBvcnRzLCBtb2R1bGUpID0+IHtcblx0Y29uc3QgcGF0aCQxID0gX19yZXF1aXJlKFwicGF0aFwiKTtcblx0Y29uc3QgZGF0YVVSTCA9IHJlcXVpcmVfZGF0YV91cmwoKTtcblx0Y29uc3QgcGFyc2VTdGF0ZW1lbnRzID0gcmVxdWlyZV9wYXJzZV9zdGF0ZW1lbnRzKCk7XG5cdGNvbnN0IHByb2Nlc3NDb250ZW50ID0gcmVxdWlyZV9wcm9jZXNzX2NvbnRlbnQoKTtcblx0Y29uc3QgcmVzb2x2ZUlkID0gKGlkKSA9PiBpZDtcblx0Y29uc3QgZm9ybWF0SW1wb3J0UHJlbHVkZSA9IHJlcXVpcmVfZm9ybWF0X2ltcG9ydF9wcmVsdWRlKCk7XG5cdGFzeW5jIGZ1bmN0aW9uIHBhcnNlU3R5bGVzKHJlc3VsdCwgc3R5bGVzLCBvcHRpb25zLCBzdGF0ZSwgY29uZGl0aW9ucywgZnJvbSwgcG9zdGNzcykge1xuXHRcdGNvbnN0IHN0YXRlbWVudHMgPSBwYXJzZVN0YXRlbWVudHMocmVzdWx0LCBzdHlsZXMsIGNvbmRpdGlvbnMsIGZyb20pO1xuXHRcdGZvciAoY29uc3Qgc3RtdCBvZiBzdGF0ZW1lbnRzKSB7XG5cdFx0XHRpZiAoc3RtdC50eXBlICE9PSBcImltcG9ydFwiIHx8ICFpc1Byb2Nlc3NhYmxlVVJMKHN0bXQudXJpKSkgY29udGludWU7XG5cdFx0XHRpZiAob3B0aW9ucy5maWx0ZXIgJiYgIW9wdGlvbnMuZmlsdGVyKHN0bXQudXJpKSkgY29udGludWU7XG5cdFx0XHRhd2FpdCByZXNvbHZlSW1wb3J0SWQocmVzdWx0LCBzdG10LCBvcHRpb25zLCBzdGF0ZSwgcG9zdGNzcyk7XG5cdFx0fVxuXHRcdGxldCBjaGFyc2V0O1xuXHRcdGNvbnN0IGJlZm9yZUJ1bmRsZSA9IFtdO1xuXHRcdGNvbnN0IGJ1bmRsZSA9IFtdO1xuXHRcdGZ1bmN0aW9uIGhhbmRsZUNoYXJzZXQoc3RtdCkge1xuXHRcdFx0aWYgKCFjaGFyc2V0KSBjaGFyc2V0ID0gc3RtdDtcblx0XHRcdGVsc2UgaWYgKHN0bXQubm9kZS5wYXJhbXMudG9Mb3dlckNhc2UoKSAhPT0gY2hhcnNldC5ub2RlLnBhcmFtcy50b0xvd2VyQ2FzZSgpKSB0aHJvdyBzdG10Lm5vZGUuZXJyb3IoYEluY29tcGF0aWJsZSBAY2hhcnNldCBzdGF0ZW1lbnRzOlxuICAke3N0bXQubm9kZS5wYXJhbXN9IHNwZWNpZmllZCBpbiAke3N0bXQubm9kZS5zb3VyY2UuaW5wdXQuZmlsZX1cbiAgJHtjaGFyc2V0Lm5vZGUucGFyYW1zfSBzcGVjaWZpZWQgaW4gJHtjaGFyc2V0Lm5vZGUuc291cmNlLmlucHV0LmZpbGV9YCk7XG5cdFx0fVxuXHRcdHN0YXRlbWVudHMuZm9yRWFjaCgoc3RtdCkgPT4ge1xuXHRcdFx0aWYgKHN0bXQudHlwZSA9PT0gXCJjaGFyc2V0XCIpIGhhbmRsZUNoYXJzZXQoc3RtdCk7XG5cdFx0XHRlbHNlIGlmIChzdG10LnR5cGUgPT09IFwiaW1wb3J0XCIpIGlmIChzdG10LmNoaWxkcmVuKSBzdG10LmNoaWxkcmVuLmZvckVhY2goKGNoaWxkLCBpbmRleCkgPT4ge1xuXHRcdFx0XHRpZiAoY2hpbGQudHlwZSA9PT0gXCJpbXBvcnRcIikgYmVmb3JlQnVuZGxlLnB1c2goY2hpbGQpO1xuXHRcdFx0XHRlbHNlIGlmIChjaGlsZC50eXBlID09PSBcImxheWVyXCIpIGJlZm9yZUJ1bmRsZS5wdXNoKGNoaWxkKTtcblx0XHRcdFx0ZWxzZSBpZiAoY2hpbGQudHlwZSA9PT0gXCJjaGFyc2V0XCIpIGhhbmRsZUNoYXJzZXQoY2hpbGQpO1xuXHRcdFx0XHRlbHNlIGJ1bmRsZS5wdXNoKGNoaWxkKTtcblx0XHRcdFx0aWYgKGluZGV4ID09PSAwKSBjaGlsZC5wYXJlbnQgPSBzdG10O1xuXHRcdFx0fSk7XG5cdFx0XHRlbHNlIGJlZm9yZUJ1bmRsZS5wdXNoKHN0bXQpO1xuXHRcdFx0ZWxzZSBpZiAoc3RtdC50eXBlID09PSBcImxheWVyXCIpIGJlZm9yZUJ1bmRsZS5wdXNoKHN0bXQpO1xuXHRcdFx0ZWxzZSBpZiAoc3RtdC50eXBlID09PSBcIm5vZGVzXCIpIGJ1bmRsZS5wdXNoKHN0bXQpO1xuXHRcdH0pO1xuXHRcdHJldHVybiBjaGFyc2V0ID8gW2NoYXJzZXQsIC4uLmJlZm9yZUJ1bmRsZS5jb25jYXQoYnVuZGxlKV0gOiBiZWZvcmVCdW5kbGUuY29uY2F0KGJ1bmRsZSk7XG5cdH1cblx0YXN5bmMgZnVuY3Rpb24gcmVzb2x2ZUltcG9ydElkKHJlc3VsdCwgc3RtdCwgb3B0aW9ucywgc3RhdGUsIHBvc3Rjc3MpIHtcblx0XHRpZiAoZGF0YVVSTC5pc1ZhbGlkKHN0bXQudXJpKSkge1xuXHRcdFx0c3RtdC5jaGlsZHJlbiA9IGF3YWl0IGxvYWRJbXBvcnRDb250ZW50KHJlc3VsdCwgc3RtdCwgc3RtdC51cmksIG9wdGlvbnMsIHN0YXRlLCBwb3N0Y3NzKTtcblx0XHRcdHJldHVybjtcblx0XHR9IGVsc2UgaWYgKGRhdGFVUkwuaXNWYWxpZChzdG10LmZyb20uc2xpY2UoLTEpKSkgdGhyb3cgc3RtdC5ub2RlLmVycm9yKGBVbmFibGUgdG8gaW1wb3J0ICcke3N0bXQudXJpfScgZnJvbSBhIHN0eWxlc2hlZXQgdGhhdCBpcyBlbWJlZGRlZCBpbiBhIGRhdGEgdXJsYCk7XG5cdFx0Y29uc3QgYXRSdWxlID0gc3RtdC5ub2RlO1xuXHRcdGxldCBzb3VyY2VGaWxlO1xuXHRcdGlmIChhdFJ1bGUuc291cmNlPy5pbnB1dD8uZmlsZSkgc291cmNlRmlsZSA9IGF0UnVsZS5zb3VyY2UuaW5wdXQuZmlsZTtcblx0XHRjb25zdCBiYXNlID0gc291cmNlRmlsZSA/IHBhdGgkMS5kaXJuYW1lKGF0UnVsZS5zb3VyY2UuaW5wdXQuZmlsZSkgOiBvcHRpb25zLnJvb3Q7XG5cdFx0Y29uc3QgcGF0aHMgPSBbYXdhaXQgb3B0aW9ucy5yZXNvbHZlKHN0bXQudXJpLCBiYXNlLCBvcHRpb25zLCBhdFJ1bGUpXS5mbGF0KCk7XG5cdFx0Y29uc3QgcmVzb2x2ZWQgPSBhd2FpdCBQcm9taXNlLmFsbChwYXRocy5tYXAoKGZpbGUpID0+IHtcblx0XHRcdHJldHVybiAhcGF0aCQxLmlzQWJzb2x1dGUoZmlsZSkgPyByZXNvbHZlSWQoZmlsZSwgYmFzZSwgb3B0aW9ucywgYXRSdWxlKSA6IGZpbGU7XG5cdFx0fSkpO1xuXHRcdHJlc29sdmVkLmZvckVhY2goKGZpbGUpID0+IHtcblx0XHRcdHJlc3VsdC5tZXNzYWdlcy5wdXNoKHtcblx0XHRcdFx0dHlwZTogXCJkZXBlbmRlbmN5XCIsXG5cdFx0XHRcdHBsdWdpbjogXCJwb3N0Y3NzLWltcG9ydFwiLFxuXHRcdFx0XHRmaWxlLFxuXHRcdFx0XHRwYXJlbnQ6IHNvdXJjZUZpbGVcblx0XHRcdH0pO1xuXHRcdH0pO1xuXHRcdHN0bXQuY2hpbGRyZW4gPSAoYXdhaXQgUHJvbWlzZS5hbGwocmVzb2x2ZWQubWFwKChmaWxlKSA9PiB7XG5cdFx0XHRyZXR1cm4gbG9hZEltcG9ydENvbnRlbnQocmVzdWx0LCBzdG10LCBmaWxlLCBvcHRpb25zLCBzdGF0ZSwgcG9zdGNzcyk7XG5cdFx0fSkpKS5mbGF0KCkuZmlsdGVyKCh4KSA9PiAhIXgpO1xuXHR9XG5cdGFzeW5jIGZ1bmN0aW9uIGxvYWRJbXBvcnRDb250ZW50KHJlc3VsdCwgc3RtdCwgZmlsZW5hbWUsIG9wdGlvbnMsIHN0YXRlLCBwb3N0Y3NzKSB7XG5cdFx0Y29uc3QgYXRSdWxlID0gc3RtdC5ub2RlO1xuXHRcdGNvbnN0IHsgY29uZGl0aW9ucywgZnJvbSB9ID0gc3RtdDtcblx0XHRjb25zdCBzdG10RHVwbGljYXRlQ2hlY2tLZXkgPSBjb25kaXRpb25zLm1hcCgoY29uZGl0aW9uKSA9PiBmb3JtYXRJbXBvcnRQcmVsdWRlKGNvbmRpdGlvbi5sYXllciwgY29uZGl0aW9uLm1lZGlhLCBjb25kaXRpb24uc3VwcG9ydHMpKS5qb2luKFwiOlwiKTtcblx0XHRpZiAob3B0aW9ucy5za2lwRHVwbGljYXRlcykge1xuXHRcdFx0aWYgKHN0YXRlLmltcG9ydGVkRmlsZXNbZmlsZW5hbWVdPy5bc3RtdER1cGxpY2F0ZUNoZWNrS2V5XSkgcmV0dXJuO1xuXHRcdFx0aWYgKCFzdGF0ZS5pbXBvcnRlZEZpbGVzW2ZpbGVuYW1lXSkgc3RhdGUuaW1wb3J0ZWRGaWxlc1tmaWxlbmFtZV0gPSB7fTtcblx0XHRcdHN0YXRlLmltcG9ydGVkRmlsZXNbZmlsZW5hbWVdW3N0bXREdXBsaWNhdGVDaGVja0tleV0gPSB0cnVlO1xuXHRcdH1cblx0XHRpZiAoZnJvbS5pbmNsdWRlcyhmaWxlbmFtZSkpIHJldHVybjtcblx0XHRjb25zdCBjb250ZW50ID0gYXdhaXQgb3B0aW9ucy5sb2FkKGZpbGVuYW1lLCBvcHRpb25zKTtcblx0XHRpZiAoY29udGVudC50cmltKCkgPT09IFwiXCIgJiYgb3B0aW9ucy53YXJuT25FbXB0eSkge1xuXHRcdFx0cmVzdWx0Lndhcm4oYCR7ZmlsZW5hbWV9IGlzIGVtcHR5YCwgeyBub2RlOiBhdFJ1bGUgfSk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGlmIChvcHRpb25zLnNraXBEdXBsaWNhdGVzICYmIHN0YXRlLmhhc2hGaWxlc1tjb250ZW50XT8uW3N0bXREdXBsaWNhdGVDaGVja0tleV0pIHJldHVybjtcblx0XHRjb25zdCBpbXBvcnRlZFJlc3VsdCA9IGF3YWl0IHByb2Nlc3NDb250ZW50KHJlc3VsdCwgY29udGVudCwgZmlsZW5hbWUsIG9wdGlvbnMsIHBvc3Rjc3MpO1xuXHRcdGNvbnN0IHN0eWxlcyA9IGltcG9ydGVkUmVzdWx0LnJvb3Q7XG5cdFx0cmVzdWx0Lm1lc3NhZ2VzID0gcmVzdWx0Lm1lc3NhZ2VzLmNvbmNhdChpbXBvcnRlZFJlc3VsdC5tZXNzYWdlcyk7XG5cdFx0aWYgKG9wdGlvbnMuc2tpcER1cGxpY2F0ZXMpIHtcblx0XHRcdGlmICghc3R5bGVzLnNvbWUoKGNoaWxkKSA9PiB7XG5cdFx0XHRcdHJldHVybiBjaGlsZC50eXBlID09PSBcImF0cnVsZVwiICYmIGNoaWxkLm5hbWUgPT09IFwiaW1wb3J0XCI7XG5cdFx0XHR9KSkge1xuXHRcdFx0XHRpZiAoIXN0YXRlLmhhc2hGaWxlc1tjb250ZW50XSkgc3RhdGUuaGFzaEZpbGVzW2NvbnRlbnRdID0ge307XG5cdFx0XHRcdHN0YXRlLmhhc2hGaWxlc1tjb250ZW50XVtzdG10RHVwbGljYXRlQ2hlY2tLZXldID0gdHJ1ZTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIHBhcnNlU3R5bGVzKHJlc3VsdCwgc3R5bGVzLCBvcHRpb25zLCBzdGF0ZSwgY29uZGl0aW9ucywgWy4uLmZyb20sIGZpbGVuYW1lXSwgcG9zdGNzcyk7XG5cdH1cblx0ZnVuY3Rpb24gaXNQcm9jZXNzYWJsZVVSTCh1cmkpIHtcblx0XHRpZiAoL14oPzpbYS16XSs6KT9cXC9cXC8vaS50ZXN0KHVyaSkpIHJldHVybiBmYWxzZTtcblx0XHR0cnkge1xuXHRcdFx0aWYgKG5ldyBVUkwodXJpLCBcImh0dHBzOi8vZXhhbXBsZS5jb21cIikuc2VhcmNoKSByZXR1cm4gZmFsc2U7XG5cdFx0fSBjYXRjaCB7fVxuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cdG1vZHVsZS5leHBvcnRzID0gcGFyc2VTdHlsZXM7XG59KSk7XG4vLyNlbmRyZWdpb25cbi8vI3JlZ2lvbiAuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vcG9zdGNzcy1pbXBvcnRAMTYuMS4xX3Bvc3Rjc3NAOC41LjE3L25vZGVfbW9kdWxlcy9wb3N0Y3NzLWltcG9ydC9pbmRleC5qc1xudmFyIHJlcXVpcmVfcG9zdGNzc19pbXBvcnQgPSAvKiBAX19QVVJFX18gKi8gX19jb21tb25KU01pbigoKGV4cG9ydHMsIG1vZHVsZSkgPT4ge1xuXHRjb25zdCBwYXRoID0gX19yZXF1aXJlKFwicGF0aFwiKTtcblx0Y29uc3QgYXBwbHlDb25kaXRpb25zID0gcmVxdWlyZV9hcHBseV9jb25kaXRpb25zKCk7XG5cdGNvbnN0IGFwcGx5UmF3cyA9IHJlcXVpcmVfYXBwbHlfcmF3cygpO1xuXHRjb25zdCBhcHBseVN0eWxlcyA9IHJlcXVpcmVfYXBwbHlfc3R5bGVzKCk7XG5cdGNvbnN0IGxvYWRDb250ZW50ID0gKCkgPT4gXCJcIjtcblx0Y29uc3QgcGFyc2VTdHlsZXMgPSByZXF1aXJlX3BhcnNlX3N0eWxlcygpO1xuXHRjb25zdCByZXNvbHZlSWQgPSAoaWQpID0+IGlkO1xuXHRmdW5jdGlvbiBBdEltcG9ydChvcHRpb25zKSB7XG5cdFx0b3B0aW9ucyA9IHtcblx0XHRcdHJvb3Q6IHByb2Nlc3MuY3dkKCksXG5cdFx0XHRwYXRoOiBbXSxcblx0XHRcdHNraXBEdXBsaWNhdGVzOiB0cnVlLFxuXHRcdFx0cmVzb2x2ZTogcmVzb2x2ZUlkLFxuXHRcdFx0bG9hZDogbG9hZENvbnRlbnQsXG5cdFx0XHRwbHVnaW5zOiBbXSxcblx0XHRcdGFkZE1vZHVsZXNEaXJlY3RvcmllczogW10sXG5cdFx0XHR3YXJuT25FbXB0eTogdHJ1ZSxcblx0XHRcdC4uLm9wdGlvbnNcblx0XHR9O1xuXHRcdG9wdGlvbnMucm9vdCA9IHBhdGgucmVzb2x2ZShvcHRpb25zLnJvb3QpO1xuXHRcdGlmICh0eXBlb2Ygb3B0aW9ucy5wYXRoID09PSBcInN0cmluZ1wiKSBvcHRpb25zLnBhdGggPSBbb3B0aW9ucy5wYXRoXTtcblx0XHRpZiAoIUFycmF5LmlzQXJyYXkob3B0aW9ucy5wYXRoKSkgb3B0aW9ucy5wYXRoID0gW107XG5cdFx0b3B0aW9ucy5wYXRoID0gb3B0aW9ucy5wYXRoLm1hcCgocCkgPT4gcGF0aC5yZXNvbHZlKG9wdGlvbnMucm9vdCwgcCkpO1xuXHRcdHJldHVybiB7XG5cdFx0XHRwb3N0Y3NzUGx1Z2luOiBcInBvc3Rjc3MtaW1wb3J0XCIsXG5cdFx0XHRhc3luYyBPbmNlKHN0eWxlcywgeyByZXN1bHQsIGF0UnVsZSwgcG9zdGNzcyB9KSB7XG5cdFx0XHRcdGNvbnN0IHN0YXRlID0ge1xuXHRcdFx0XHRcdGltcG9ydGVkRmlsZXM6IHt9LFxuXHRcdFx0XHRcdGhhc2hGaWxlczoge31cblx0XHRcdFx0fTtcblx0XHRcdFx0aWYgKHN0eWxlcy5zb3VyY2U/LmlucHV0Py5maWxlKSBzdGF0ZS5pbXBvcnRlZEZpbGVzW3N0eWxlcy5zb3VyY2UuaW5wdXQuZmlsZV0gPSB7fTtcblx0XHRcdFx0aWYgKG9wdGlvbnMucGx1Z2lucyAmJiAhQXJyYXkuaXNBcnJheShvcHRpb25zLnBsdWdpbnMpKSB0aHJvdyBuZXcgRXJyb3IoXCJwbHVnaW5zIG9wdGlvbiBtdXN0IGJlIGFuIGFycmF5XCIpO1xuXHRcdFx0XHRjb25zdCBidW5kbGUgPSBhd2FpdCBwYXJzZVN0eWxlcyhyZXN1bHQsIHN0eWxlcywgb3B0aW9ucywgc3RhdGUsIFtdLCBbXSwgcG9zdGNzcyk7XG5cdFx0XHRcdGFwcGx5UmF3cyhidW5kbGUpO1xuXHRcdFx0XHRhcHBseUNvbmRpdGlvbnMoYnVuZGxlLCBhdFJ1bGUpO1xuXHRcdFx0XHRhcHBseVN0eWxlcyhidW5kbGUsIHN0eWxlcyk7XG5cdFx0XHR9XG5cdFx0fTtcblx0fVxuXHRBdEltcG9ydC5wb3N0Y3NzID0gdHJ1ZTtcblx0bW9kdWxlLmV4cG9ydHMgPSBBdEltcG9ydDtcbn0pKTtcbi8vI2VuZHJlZ2lvblxuZXhwb3J0IGRlZmF1bHQgcmVxdWlyZV9wb3N0Y3NzX2ltcG9ydCgpO1xuZXhwb3J0IHt9O1xuIgogIF0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7O0FBR0EsSUFBSSxnREFBZ0QsY0FBZSxDQUFDLFNBQVMsV0FBVztBQUFBLEVBQ3ZGLE9BQU8sVUFBVSxTQUFTLG1CQUFtQixDQUFDLE9BQU8sT0FBTyxVQUFVO0FBQUEsSUFDckUsTUFBTSxRQUFRLENBQUM7QUFBQSxJQUNmLElBQUksT0FBTyxVQUFVLGFBQWE7QUFBQSxNQUNqQyxJQUFJLGNBQWM7QUFBQSxNQUNsQixJQUFJO0FBQUEsUUFBTyxjQUFjLFNBQVM7QUFBQSxNQUNsQyxNQUFNLEtBQUssV0FBVztBQUFBLElBQ3ZCO0FBQUEsSUFDQSxJQUFJLE9BQU8sYUFBYTtBQUFBLE1BQWEsTUFBTSxLQUFLLFlBQVksV0FBVztBQUFBLElBQ3ZFLElBQUksT0FBTyxVQUFVO0FBQUEsTUFBYSxNQUFNLEtBQUssS0FBSztBQUFBLElBQ2xELE9BQU8sTUFBTSxLQUFLLEdBQUc7QUFBQTtBQUFBLENBRXJCO0FBR0YsSUFBSSxnREFBZ0QsY0FBZSxDQUFDLFNBQVMsV0FBVztBQUFBLEVBQ3ZGLE1BQU0sc0JBQXNCLDhCQUE4QjtBQUFBLEVBQzFELE9BQU8sVUFBVSxTQUFTLDhCQUE4QixDQUFDLFNBQVMsWUFBWTtBQUFBLElBQzdFLElBQUksQ0FBQyxZQUFZO0FBQUEsTUFBUSxPQUFPO0FBQUEsSUFDaEMsV0FBVyxRQUFRO0FBQUEsSUFDbkIsTUFBTSxRQUFRLFdBQVcsSUFBSTtBQUFBLElBQzdCLElBQUksU0FBUyxHQUFHLFdBQVcsb0JBQW9CLE1BQU0sT0FBTyxNQUFNLE9BQU8sTUFBTSxRQUFRO0FBQUEsSUFDdkYsV0FBVyxhQUFhO0FBQUEsTUFBWSxTQUFTLHlCQUF5QixPQUFPLEtBQUssV0FBVyxRQUFRLEVBQUUsU0FBUyxRQUFRLE1BQU0sb0JBQW9CLFVBQVUsT0FBTyxVQUFVLE9BQU8sVUFBVSxRQUFRO0FBQUEsSUFDdE0sT0FBTztBQUFBO0FBQUEsQ0FFUDtBQUdGLElBQUksMkNBQTJDLGNBQWUsQ0FBQyxTQUFTLFdBQVc7QUFBQSxFQUNsRixNQUFNLGlDQUFpQyw4QkFBOEI7QUFBQSxFQUNyRSxPQUFPLFVBQVUsU0FBUyxlQUFlLENBQUMsUUFBUSxRQUFRO0FBQUEsSUFDekQsTUFBTSw0QkFBNEIsT0FBTyxVQUFVLENBQUMsU0FBUyxLQUFLLFNBQVMsUUFBUTtBQUFBLElBQ25GLE1BQU0sMkJBQTJCLE9BQU8sY0FBYyxDQUFDLFNBQVMsS0FBSyxTQUFTLFFBQVE7QUFBQSxJQUN0RixPQUFPLFFBQVEsQ0FBQyxNQUFNLFVBQVU7QUFBQSxNQUMvQixJQUFJLEtBQUssU0FBUyxhQUFhLEtBQUssU0FBUztBQUFBLFFBQVc7QUFBQSxNQUN4RCxJQUFJLEtBQUssU0FBUyxZQUFZLFFBQVEsNEJBQTRCLEtBQUssWUFBWSxVQUFVLFFBQVEsNkJBQTZCLFFBQVEsMkJBQTJCO0FBQUEsUUFDcEssS0FBSyxPQUFPO0FBQUEsUUFDWixLQUFLLE9BQU8sS0FBSyxLQUFLLE1BQU07QUFBQSxVQUMzQixNQUFNO0FBQUEsVUFDTixRQUFRLCtCQUErQix5QkFBeUIsT0FBTyxLQUFLLEtBQUssS0FBSyxTQUFTLENBQUMsRUFBRSxTQUFTLFFBQVEsTUFBTSxLQUFLLFVBQVU7QUFBQSxRQUN6SSxDQUFDO0FBQUEsUUFDRDtBQUFBLE1BQ0Q7QUFBQSxNQUNBLElBQUksQ0FBQyxLQUFLLFlBQVk7QUFBQSxRQUFRO0FBQUEsTUFDOUIsSUFBSSxLQUFLLFNBQVMsVUFBVTtBQUFBLFFBQzNCLEtBQUssS0FBSyxTQUFTLCtCQUErQixLQUFLLFNBQVMsS0FBSyxVQUFVO0FBQUEsUUFDL0U7QUFBQSxNQUNEO0FBQUEsTUFDQSxJQUFJO0FBQUEsTUFDSixJQUFJO0FBQUEsTUFDSixJQUFJLEtBQUssU0FBUyxTQUFTO0FBQUEsUUFDMUIsUUFBUSxDQUFDLEtBQUssSUFBSTtBQUFBLFFBQ2xCLFNBQVMsS0FBSyxLQUFLO0FBQUEsTUFDcEIsRUFBTztBQUFBLFFBQ04sUUFBUSxLQUFLO0FBQUEsUUFDYixTQUFTLE1BQU0sR0FBRztBQUFBO0FBQUEsTUFFbkIsTUFBTSxVQUFVLENBQUM7QUFBQSxNQUNqQixXQUFXLGFBQWEsS0FBSyxZQUFZO0FBQUEsUUFDeEMsSUFBSSxPQUFPLFVBQVUsVUFBVSxhQUFhO0FBQUEsVUFDM0MsTUFBTSxZQUFZLE9BQU87QUFBQSxZQUN4QixNQUFNO0FBQUEsWUFDTixRQUFRLFVBQVU7QUFBQSxZQUNsQixRQUFRLE9BQU87QUFBQSxVQUNoQixDQUFDO0FBQUEsVUFDRCxRQUFRLEtBQUssU0FBUztBQUFBLFFBQ3ZCO0FBQUEsUUFDQSxJQUFJLE9BQU8sVUFBVSxhQUFhLGFBQWE7QUFBQSxVQUM5QyxNQUFNLGVBQWUsT0FBTztBQUFBLFlBQzNCLE1BQU07QUFBQSxZQUNOLFFBQVEsSUFBSSxVQUFVO0FBQUEsWUFDdEIsUUFBUSxPQUFPO0FBQUEsVUFDaEIsQ0FBQztBQUFBLFVBQ0QsUUFBUSxLQUFLLFlBQVk7QUFBQSxRQUMxQjtBQUFBLFFBQ0EsSUFBSSxPQUFPLFVBQVUsVUFBVSxhQUFhO0FBQUEsVUFDM0MsTUFBTSxZQUFZLE9BQU87QUFBQSxZQUN4QixNQUFNO0FBQUEsWUFDTixRQUFRLFVBQVU7QUFBQSxZQUNsQixRQUFRLE9BQU87QUFBQSxVQUNoQixDQUFDO0FBQUEsVUFDRCxRQUFRLEtBQUssU0FBUztBQUFBLFFBQ3ZCO0FBQUEsTUFDRDtBQUFBLE1BQ0EsTUFBTSxjQUFjLFFBQVEsTUFBTTtBQUFBLE1BQ2xDLE1BQU0sY0FBYyxRQUFRLE9BQU8sQ0FBQyxVQUFVLFNBQVM7QUFBQSxRQUN0RCxTQUFTLE9BQU8sSUFBSTtBQUFBLFFBQ3BCLE9BQU87QUFBQSxTQUNMLFdBQVc7QUFBQSxNQUNkLE9BQU8sYUFBYSxNQUFNLElBQUksV0FBVztBQUFBLE1BQ3pDLE1BQU0sUUFBUSxDQUFDLFNBQVM7QUFBQSxRQUN2QixLQUFLLFNBQWM7QUFBQSxPQUNuQjtBQUFBLE1BQ0QsTUFBTSxHQUFHLEtBQUssU0FBUyxNQUFNLEdBQUcsS0FBSyxVQUFVO0FBQUE7QUFBQSxNQUMvQyxZQUFZLE9BQU8sS0FBSztBQUFBLE1BQ3hCLEtBQUssT0FBTztBQUFBLE1BQ1osS0FBSyxRQUFRLENBQUMsV0FBVztBQUFBLE1BQ3pCLE9BQU8sS0FBSztBQUFBLEtBQ1o7QUFBQTtBQUFBLENBRUQ7QUFHRixJQUFJLHFDQUFxQyxjQUFlLENBQUMsU0FBUyxXQUFXO0FBQUEsRUFDNUUsT0FBTyxVQUFVLFNBQVMsU0FBUyxDQUFDLFFBQVE7QUFBQSxJQUMzQyxPQUFPLFFBQVEsQ0FBQyxNQUFNLFVBQVU7QUFBQSxNQUMvQixJQUFJLFVBQVU7QUFBQSxRQUFHO0FBQUEsTUFDakIsSUFBSSxLQUFLLFFBQVE7QUFBQSxRQUNoQixRQUFRLFdBQVcsS0FBSyxPQUFPLEtBQUs7QUFBQSxRQUNwQyxJQUFJLEtBQUssU0FBUztBQUFBLFVBQVMsS0FBSyxNQUFNLEdBQUcsS0FBSyxTQUFTO0FBQUEsUUFDbEQ7QUFBQSxlQUFLLEtBQUssS0FBSyxTQUFTO0FBQUEsTUFDOUIsRUFBTyxTQUFJLEtBQUssU0FBUztBQUFBLFFBQVMsS0FBSyxNQUFNLEdBQUcsS0FBSyxTQUFTLEtBQUssTUFBTSxHQUFHLEtBQUssVUFBVTtBQUFBO0FBQUEsS0FDM0Y7QUFBQTtBQUFBLENBRUQ7QUFHRixJQUFJLHVDQUF1QyxjQUFlLENBQUMsU0FBUyxXQUFXO0FBQUEsRUFDOUUsT0FBTyxVQUFVLFNBQVMsV0FBVyxDQUFDLFFBQVEsUUFBUTtBQUFBLElBQ3JELE9BQU8sUUFBUSxDQUFDO0FBQUEsSUFDaEIsT0FBTyxRQUFRLENBQUMsU0FBUztBQUFBLE1BQ3hCLElBQUk7QUFBQSxRQUNIO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxNQUNELEVBQUUsU0FBUyxLQUFLLElBQUksR0FBRztBQUFBLFFBQ3RCLEtBQUssS0FBSyxTQUFjO0FBQUEsUUFDeEIsT0FBTyxPQUFPLEtBQUssSUFBSTtBQUFBLE1BQ3hCLEVBQU8sU0FBSSxLQUFLLFNBQVM7QUFBQSxRQUFTLEtBQUssTUFBTSxRQUFRLENBQUMsU0FBUztBQUFBLFVBQzlELEtBQUssU0FBYztBQUFBLFVBQ25CLE9BQU8sT0FBTyxJQUFJO0FBQUEsU0FDbEI7QUFBQSxLQUNEO0FBQUE7QUFBQSxDQUVEO0FBR0YsSUFBSSxtQ0FBbUMsY0FBZSxDQUFDLFNBQVMsV0FBVztBQUFBLEVBQzFFLE1BQU0sbUJBQW1CO0FBQUEsRUFDekIsTUFBTSxzQkFBc0I7QUFBQSxFQUM1QixNQUFNLHFCQUFxQjtBQUFBLEVBQzNCLFNBQVMsT0FBTyxDQUFDLEtBQUs7QUFBQSxJQUNyQixPQUFPLGlCQUFpQixLQUFLLEdBQUc7QUFBQTtBQUFBLEVBRWpDLFNBQVMsUUFBUSxDQUFDLEtBQUs7QUFBQSxJQUN0QixJQUFJLG9CQUFvQixLQUFLLEdBQUc7QUFBQSxNQUFHLE9BQU8sT0FBTyxLQUFLLElBQUksTUFBTSxFQUFFLEdBQUcsUUFBUSxFQUFFLFNBQVM7QUFBQSxJQUN4RixJQUFJLG1CQUFtQixLQUFLLEdBQUc7QUFBQSxNQUFHLE9BQU8sbUJBQW1CLElBQUksTUFBTSxFQUFFLENBQUM7QUFBQSxJQUN6RSxPQUFPLG1CQUFtQixJQUFJLE1BQU0sRUFBRSxDQUFDO0FBQUE7QUFBQSxFQUV4QyxPQUFPLFVBQVU7QUFBQSxJQUNoQjtBQUFBLElBQ0E7QUFBQSxFQUNEO0FBQUEsQ0FDQztBQUdGLElBQUksMkNBQTJDLGNBQWUsQ0FBQyxTQUFTLFdBQVc7QUFBQSxFQUNsRixNQUFNLGNBQWMsWUFBWTtBQUFBLEVBQ2hDLFFBQVEsY0FBYztBQUFBLEVBQ3RCLE9BQU8sVUFBVSxTQUFTLGVBQWUsQ0FBQyxRQUFRLFFBQVEsWUFBWSxNQUFNO0FBQUEsSUFDM0UsTUFBTSxhQUFhLENBQUM7QUFBQSxJQUNwQixJQUFJLFFBQVEsQ0FBQztBQUFBLElBQ2IsSUFBSSw0QkFBNEI7QUFBQSxJQUNoQyxPQUFPLEtBQUssQ0FBQyxTQUFTO0FBQUEsTUFDckIsSUFBSTtBQUFBLE1BQ0osSUFBSSxLQUFLLFNBQVMsVUFBVTtBQUFBLFFBQzNCLElBQUksS0FBSyxTQUFTO0FBQUEsVUFBVSxPQUFPLFlBQVksUUFBUSxNQUFNLFlBQVksSUFBSTtBQUFBLFFBQ3hFLFNBQUksS0FBSyxTQUFTO0FBQUEsVUFBVyxPQUFPLGFBQWEsUUFBUSxNQUFNLFlBQVksSUFBSTtBQUFBLFFBQy9FLFNBQUksS0FBSyxTQUFTLFdBQVcsQ0FBQyw2QkFBNkIsQ0FBQyxLQUFLO0FBQUEsVUFBTyxPQUFPLFdBQVcsUUFBUSxNQUFNLFlBQVksSUFBSTtBQUFBLE1BQzlILEVBQU8sU0FBSSxLQUFLLFNBQVM7QUFBQSxRQUFXLDRCQUE0QjtBQUFBLE1BQ2hFLElBQUksTUFBTTtBQUFBLFFBQ1QsSUFBSSxNQUFNLFFBQVE7QUFBQSxVQUNqQixXQUFXLEtBQUs7QUFBQSxZQUNmLE1BQU07QUFBQSxZQUNOO0FBQUEsWUFDQSxZQUFZLENBQUMsR0FBRyxVQUFVO0FBQUEsWUFDMUI7QUFBQSxVQUNELENBQUM7QUFBQSxVQUNELFFBQVEsQ0FBQztBQUFBLFFBQ1Y7QUFBQSxRQUNBLFdBQVcsS0FBSyxJQUFJO0FBQUEsTUFDckIsRUFBTztBQUFBLGNBQU0sS0FBSyxJQUFJO0FBQUEsS0FDdEI7QUFBQSxJQUNELElBQUksTUFBTTtBQUFBLE1BQVEsV0FBVyxLQUFLO0FBQUEsUUFDakMsTUFBTTtBQUFBLFFBQ047QUFBQSxRQUNBLFlBQVksQ0FBQyxHQUFHLFVBQVU7QUFBQSxRQUMxQjtBQUFBLE1BQ0QsQ0FBQztBQUFBLElBQ0QsT0FBTztBQUFBO0FBQUEsRUFFUixTQUFTLFlBQVksQ0FBQyxRQUFRLFFBQVEsWUFBWSxNQUFNO0FBQUEsSUFDdkQsSUFBSSxPQUFPLEtBQUs7QUFBQSxNQUFHLE9BQU8sT0FBTyxLQUFLLDhDQUE4QyxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQUEsSUFDcEcsT0FBTztBQUFBLE1BQ04sTUFBTTtBQUFBLE1BQ04sTUFBTTtBQUFBLE1BQ04sWUFBWSxDQUFDLEdBQUcsVUFBVTtBQUFBLE1BQzFCO0FBQUEsSUFDRDtBQUFBO0FBQUEsRUFFRCxTQUFTLFdBQVcsQ0FBQyxRQUFRLFFBQVEsWUFBWSxNQUFNO0FBQUEsSUFDdEQsSUFBSSxPQUFPLE9BQU8sS0FBSztBQUFBLElBQ3ZCLElBQUk7QUFBQSxNQUFNLEdBQUc7QUFBQSxRQUNaLElBQUksS0FBSyxTQUFTLGFBQWEsS0FBSyxTQUFTLFlBQVksS0FBSyxTQUFTLFVBQVU7QUFBQSxVQUNoRixPQUFPLEtBQUssS0FBSztBQUFBLFVBQ2pCO0FBQUEsUUFDRDtBQUFBLFFBQ0E7QUFBQSxNQUNELFNBQVM7QUFBQSxJQUNULElBQUk7QUFBQSxNQUFNLEdBQUc7QUFBQSxRQUNaLElBQUksS0FBSyxTQUFTLGFBQWEsS0FBSyxTQUFTLGFBQWEsS0FBSyxTQUFTLGFBQWEsS0FBSyxTQUFTLFdBQVcsQ0FBQyxLQUFLLFFBQVE7QUFBQSxVQUMzSCxPQUFPLEtBQUssS0FBSztBQUFBLFVBQ2pCO0FBQUEsUUFDRDtBQUFBLFFBQ0EsT0FBTyxPQUFPLEtBQUssZ0ZBQWdGLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFBQSxNQUNwSCxTQUFTO0FBQUEsSUFDVCxJQUFJLE9BQU87QUFBQSxNQUFPLE9BQU8sT0FBTyxLQUFLLGtHQUFrRyxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQUEsSUFDdkosTUFBTSxTQUFTLFlBQVksT0FBTyxNQUFNLEVBQUU7QUFBQSxJQUMxQyxNQUFNLE9BQU87QUFBQSxNQUNaLE1BQU07QUFBQSxNQUNOLEtBQUs7QUFBQSxNQUNMLFNBQVM7QUFBQSxNQUNULE1BQU07QUFBQSxNQUNOLFlBQVksQ0FBQyxHQUFHLFVBQVU7QUFBQSxNQUMxQjtBQUFBLElBQ0Q7QUFBQSxJQUNBLElBQUk7QUFBQSxJQUNKLElBQUk7QUFBQSxJQUNKLElBQUk7QUFBQSxJQUNKLFNBQVMsSUFBSSxFQUFHLElBQUksT0FBTyxRQUFRLEtBQUs7QUFBQSxNQUN2QyxNQUFNLE9BQU8sT0FBTztBQUFBLE1BQ3BCLElBQUksS0FBSyxTQUFTLFdBQVcsS0FBSyxTQUFTO0FBQUEsUUFBVztBQUFBLE1BQ3RELElBQUksS0FBSyxTQUFTLFVBQVU7QUFBQSxRQUMzQixJQUFJLEtBQUs7QUFBQSxVQUFLLE9BQU8sT0FBTyxLQUFLLHNCQUFzQixPQUFPLFNBQVMsTUFBTSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQUEsUUFDN0YsSUFBSSxDQUFDLEtBQUs7QUFBQSxVQUFPLE9BQU8sT0FBTyxLQUFLLDBCQUEwQixPQUFPLFNBQVMsTUFBTSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQUEsUUFDcEcsS0FBSyxNQUFNLEtBQUs7QUFBQSxRQUNoQixLQUFLLFVBQVUsVUFBVSxJQUFJO0FBQUEsUUFDN0I7QUFBQSxNQUNEO0FBQUEsTUFDQSxJQUFJLEtBQUssU0FBUyxjQUFjLFNBQVMsS0FBSyxLQUFLLEtBQUssR0FBRztBQUFBLFFBQzFELElBQUksS0FBSztBQUFBLFVBQUssT0FBTyxPQUFPLEtBQUssc0JBQXNCLE9BQU8sU0FBUyxNQUFNLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFBQSxRQUM3RixJQUFJLENBQUMsS0FBSyxRQUFRLElBQUk7QUFBQSxVQUFPLE9BQU8sT0FBTyxLQUFLLDBCQUEwQixPQUFPLFNBQVMsTUFBTSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQUEsUUFDaEgsS0FBSyxNQUFNLEtBQUssTUFBTSxHQUFHO0FBQUEsUUFDekIsS0FBSyxVQUFVLFVBQVUsSUFBSTtBQUFBLFFBQzdCO0FBQUEsTUFDRDtBQUFBLE1BQ0EsSUFBSSxDQUFDLEtBQUs7QUFBQSxRQUFLLE9BQU8sT0FBTyxLQUFLLDBCQUEwQixPQUFPLFNBQVMsTUFBTSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQUEsTUFDbEcsS0FBSyxLQUFLLFNBQVMsVUFBVSxLQUFLLFNBQVMsZUFBZSxXQUFXLEtBQUssS0FBSyxLQUFLLEdBQUc7QUFBQSxRQUN0RixJQUFJLE9BQU8sVUFBVTtBQUFBLFVBQWEsT0FBTyxPQUFPLEtBQUssdUJBQXVCLE9BQU8sU0FBUyxNQUFNLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFBQSxRQUNsSCxJQUFJLE9BQU8sYUFBYTtBQUFBLFVBQWEsT0FBTyxPQUFPLEtBQUssd0RBQXdELE9BQU8sU0FBUyxNQUFNLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFBQSxRQUN0SixJQUFJLEtBQUs7QUFBQSxVQUFPLFFBQVEsVUFBVSxLQUFLLEtBQUs7QUFBQSxRQUN2QztBQUFBLGtCQUFRO0FBQUEsUUFDYjtBQUFBLE1BQ0Q7QUFBQSxNQUNBLElBQUksS0FBSyxTQUFTLGNBQWMsY0FBYyxLQUFLLEtBQUssS0FBSyxHQUFHO0FBQUEsUUFDL0QsSUFBSSxPQUFPLGFBQWE7QUFBQSxVQUFhLE9BQU8sT0FBTyxLQUFLLG1DQUFtQyxPQUFPLFNBQVMsTUFBTSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQUEsUUFDakksV0FBVyxVQUFVLEtBQUssS0FBSztBQUFBLFFBQy9CO0FBQUEsTUFDRDtBQUFBLE1BQ0EsUUFBUSxVQUFVLE9BQU8sTUFBTSxDQUFDLENBQUM7QUFBQSxNQUNqQztBQUFBLElBQ0Q7QUFBQSxJQUNBLElBQUksQ0FBQyxLQUFLO0FBQUEsTUFBSyxPQUFPLE9BQU8sS0FBSywwQkFBMEIsT0FBTyxTQUFTLE1BQU0sRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUFBLElBQ2xHLElBQUksT0FBTyxVQUFVLGVBQWUsT0FBTyxVQUFVLGVBQWUsT0FBTyxhQUFhO0FBQUEsTUFBYSxLQUFLLFdBQVcsS0FBSztBQUFBLFFBQ3pIO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxNQUNELENBQUM7QUFBQSxJQUNELE9BQU87QUFBQTtBQUFBLEVBRVIsU0FBUyxVQUFVLENBQUMsUUFBUSxRQUFRLFlBQVksTUFBTTtBQUFBLElBQ3JELE9BQU87QUFBQSxNQUNOLE1BQU07QUFBQSxNQUNOLE1BQU07QUFBQSxNQUNOLFlBQVksQ0FBQyxHQUFHLFVBQVU7QUFBQSxNQUMxQjtBQUFBLElBQ0Q7QUFBQTtBQUFBLENBRUE7QUFHRixJQUFJLDBDQUEwQyxjQUFlLENBQUMsU0FBUyxXQUFXO0FBQUEsRUFDakYsTUFBTSxTQUFTLFVBQVUsTUFBTTtBQUFBLEVBQy9CLElBQUk7QUFBQSxFQUNKLE9BQU8sVUFBVSxTQUFTLGNBQWMsQ0FBQyxRQUFRLFNBQVMsVUFBVSxTQUFTLFNBQVM7QUFBQSxJQUNyRixRQUFRLFlBQVk7QUFBQSxJQUNwQixNQUFNLE1BQU0sT0FBTyxRQUFRLFFBQVE7QUFBQSxJQUNuQyxNQUFNLGFBQWEsQ0FBQztBQUFBLElBQ3BCLElBQUksUUFBUSxRQUFRO0FBQUEsTUFDbkIsSUFBSSxDQUFDO0FBQUEsUUFFTCxJQUFJO0FBQUEsVUFDSCxVQUFVLFVBQVUsU0FBUztBQUFBLFVBQzVCLE1BQU07QUFBQSxNQUNSLElBQUk7QUFBQSxRQUFTLE9BQU8sV0FBVyxTQUFTLFNBQVMsVUFBVSxTQUFTLENBQUMsT0FBTyxDQUFDO0FBQUEsSUFDOUU7QUFBQSxJQUNBLElBQUksT0FBTyxLQUFLLFFBQVE7QUFBQSxNQUFPLFdBQVcsS0FBSyxPQUFPLEtBQUssT0FBTyxLQUFLO0FBQUEsSUFDdkUsSUFBSSxPQUFPLEtBQUs7QUFBQSxNQUFRLFdBQVcsS0FBSyxPQUFPLEtBQUssTUFBTTtBQUFBLElBQzFELFdBQVcsS0FBSyxJQUFJO0FBQUEsSUFDcEIsT0FBTyxXQUFXLFNBQVMsU0FBUyxVQUFVLFNBQVMsVUFBVTtBQUFBO0FBQUEsRUFFbEUsU0FBUyxVQUFVLENBQUMsU0FBUyxTQUFTLFVBQVUsU0FBUyxTQUFTLE9BQU87QUFBQSxJQUN4RSxJQUFJLENBQUM7QUFBQSxNQUFPLFFBQVE7QUFBQSxJQUNwQixPQUFPLFFBQVEsT0FBTyxFQUFFLFFBQVEsU0FBUztBQUFBLE1BQ3hDLE1BQU07QUFBQSxNQUNOLFFBQVEsUUFBUTtBQUFBLElBQ2pCLENBQUMsRUFBRSxNQUFNLENBQUMsUUFBUTtBQUFBLE1BQ2pCO0FBQUEsTUFDQSxJQUFJLFVBQVUsUUFBUTtBQUFBLFFBQVEsTUFBTTtBQUFBLE1BQ3BDLE9BQU8sV0FBVyxTQUFTLFNBQVMsVUFBVSxTQUFTLFNBQVMsS0FBSztBQUFBLEtBQ3JFO0FBQUE7QUFBQSxDQUVEO0FBR0YsSUFBSSx1Q0FBdUMsY0FBZSxDQUFDLFNBQVMsV0FBVztBQUFBLEVBQzlFLE1BQU0sU0FBUyxVQUFVLE1BQU07QUFBQSxFQUMvQixNQUFNLFVBQVUsaUJBQWlCO0FBQUEsRUFDakMsTUFBTSxrQkFBa0IseUJBQXlCO0FBQUEsRUFDakQsTUFBTSxpQkFBaUIsd0JBQXdCO0FBQUEsRUFDL0MsTUFBTSxZQUFZLENBQUMsT0FBTztBQUFBLEVBQzFCLE1BQU0sc0JBQXNCLDhCQUE4QjtBQUFBLEVBQzFELGVBQWUsV0FBVyxDQUFDLFFBQVEsUUFBUSxTQUFTLE9BQU8sWUFBWSxNQUFNLFNBQVM7QUFBQSxJQUNyRixNQUFNLGFBQWEsZ0JBQWdCLFFBQVEsUUFBUSxZQUFZLElBQUk7QUFBQSxJQUNuRSxXQUFXLFFBQVEsWUFBWTtBQUFBLE1BQzlCLElBQUksS0FBSyxTQUFTLFlBQVksQ0FBQyxpQkFBaUIsS0FBSyxHQUFHO0FBQUEsUUFBRztBQUFBLE1BQzNELElBQUksUUFBUSxVQUFVLENBQUMsUUFBUSxPQUFPLEtBQUssR0FBRztBQUFBLFFBQUc7QUFBQSxNQUNqRCxNQUFNLGdCQUFnQixRQUFRLE1BQU0sU0FBUyxPQUFPLE9BQU87QUFBQSxJQUM1RDtBQUFBLElBQ0EsSUFBSTtBQUFBLElBQ0osTUFBTSxlQUFlLENBQUM7QUFBQSxJQUN0QixNQUFNLFNBQVMsQ0FBQztBQUFBLElBQ2hCLFNBQVMsYUFBYSxDQUFDLE1BQU07QUFBQSxNQUM1QixJQUFJLENBQUM7QUFBQSxRQUFTLFVBQVU7QUFBQSxNQUNuQixTQUFJLEtBQUssS0FBSyxPQUFPLFlBQVksTUFBTSxRQUFRLEtBQUssT0FBTyxZQUFZO0FBQUEsUUFBRyxNQUFNLEtBQUssS0FBSyxNQUFNO0FBQUEsSUFDcEcsS0FBSyxLQUFLLHVCQUF1QixLQUFLLEtBQUssT0FBTyxNQUFNO0FBQUEsSUFDeEQsUUFBUSxLQUFLLHVCQUF1QixRQUFRLEtBQUssT0FBTyxNQUFNLE1BQU07QUFBQTtBQUFBLElBRXRFLFdBQVcsUUFBUSxDQUFDLFNBQVM7QUFBQSxNQUM1QixJQUFJLEtBQUssU0FBUztBQUFBLFFBQVcsY0FBYyxJQUFJO0FBQUEsTUFDMUMsU0FBSSxLQUFLLFNBQVM7QUFBQSxRQUFVLElBQUksS0FBSztBQUFBLFVBQVUsS0FBSyxTQUFTLFFBQVEsQ0FBQyxPQUFPLFVBQVU7QUFBQSxZQUMzRixJQUFJLE1BQU0sU0FBUztBQUFBLGNBQVUsYUFBYSxLQUFLLEtBQUs7QUFBQSxZQUMvQyxTQUFJLE1BQU0sU0FBUztBQUFBLGNBQVMsYUFBYSxLQUFLLEtBQUs7QUFBQSxZQUNuRCxTQUFJLE1BQU0sU0FBUztBQUFBLGNBQVcsY0FBYyxLQUFLO0FBQUEsWUFDakQ7QUFBQSxxQkFBTyxLQUFLLEtBQUs7QUFBQSxZQUN0QixJQUFJLFVBQVU7QUFBQSxjQUFHLE1BQU0sU0FBUztBQUFBLFdBQ2hDO0FBQUEsUUFDSTtBQUFBLHVCQUFhLEtBQUssSUFBSTtBQUFBLE1BQ3RCLFNBQUksS0FBSyxTQUFTO0FBQUEsUUFBUyxhQUFhLEtBQUssSUFBSTtBQUFBLE1BQ2pELFNBQUksS0FBSyxTQUFTO0FBQUEsUUFBUyxPQUFPLEtBQUssSUFBSTtBQUFBLEtBQ2hEO0FBQUEsSUFDRCxPQUFPLFVBQVUsQ0FBQyxTQUFTLEdBQUcsYUFBYSxPQUFPLE1BQU0sQ0FBQyxJQUFJLGFBQWEsT0FBTyxNQUFNO0FBQUE7QUFBQSxFQUV4RixlQUFlLGVBQWUsQ0FBQyxRQUFRLE1BQU0sU0FBUyxPQUFPLFNBQVM7QUFBQSxJQUNyRSxJQUFJLFFBQVEsUUFBUSxLQUFLLEdBQUcsR0FBRztBQUFBLE1BQzlCLEtBQUssV0FBVyxNQUFNLGtCQUFrQixRQUFRLE1BQU0sS0FBSyxLQUFLLFNBQVMsT0FBTyxPQUFPO0FBQUEsTUFDdkY7QUFBQSxJQUNELEVBQU8sU0FBSSxRQUFRLFFBQVEsS0FBSyxLQUFLLE1BQU0sRUFBRSxDQUFDO0FBQUEsTUFBRyxNQUFNLEtBQUssS0FBSyxNQUFNLHFCQUFxQixLQUFLLHVEQUF1RDtBQUFBLElBQ3hKLE1BQU0sU0FBUyxLQUFLO0FBQUEsSUFDcEIsSUFBSTtBQUFBLElBQ0osSUFBSSxPQUFPLFFBQVEsT0FBTztBQUFBLE1BQU0sYUFBYSxPQUFPLE9BQU8sTUFBTTtBQUFBLElBQ2pFLE1BQU0sT0FBTyxhQUFhLE9BQU8sUUFBUSxPQUFPLE9BQU8sTUFBTSxJQUFJLElBQUksUUFBUTtBQUFBLElBQzdFLE1BQU0sUUFBUSxDQUFDLE1BQU0sUUFBUSxRQUFRLEtBQUssS0FBSyxNQUFNLFNBQVMsTUFBTSxDQUFDLEVBQUUsS0FBSztBQUFBLElBQzVFLE1BQU0sV0FBVyxNQUFNLFFBQVEsSUFBSSxNQUFNLElBQUksQ0FBQyxTQUFTO0FBQUEsTUFDdEQsT0FBTyxDQUFDLE9BQU8sV0FBVyxJQUFJLElBQUksVUFBVSxNQUFNLE1BQU0sU0FBUyxNQUFNLElBQUk7QUFBQSxLQUMzRSxDQUFDO0FBQUEsSUFDRixTQUFTLFFBQVEsQ0FBQyxTQUFTO0FBQUEsTUFDMUIsT0FBTyxTQUFTLEtBQUs7QUFBQSxRQUNwQixNQUFNO0FBQUEsUUFDTixRQUFRO0FBQUEsUUFDUjtBQUFBLFFBQ0EsUUFBUTtBQUFBLE1BQ1QsQ0FBQztBQUFBLEtBQ0Q7QUFBQSxJQUNELEtBQUssWUFBWSxNQUFNLFFBQVEsSUFBSSxTQUFTLElBQUksQ0FBQyxTQUFTO0FBQUEsTUFDekQsT0FBTyxrQkFBa0IsUUFBUSxNQUFNLE1BQU0sU0FBUyxPQUFPLE9BQU87QUFBQSxLQUNwRSxDQUFDLEdBQUcsS0FBSyxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQUE7QUFBQSxFQUU5QixlQUFlLGlCQUFpQixDQUFDLFFBQVEsTUFBTSxVQUFVLFNBQVMsT0FBTyxTQUFTO0FBQUEsSUFDakYsTUFBTSxTQUFTLEtBQUs7QUFBQSxJQUNwQixRQUFRLFlBQVksU0FBUztBQUFBLElBQzdCLE1BQU0sd0JBQXdCLFdBQVcsSUFBSSxDQUFDLGNBQWMsb0JBQW9CLFVBQVUsT0FBTyxVQUFVLE9BQU8sVUFBVSxRQUFRLENBQUMsRUFBRSxLQUFLLEdBQUc7QUFBQSxJQUMvSSxJQUFJLFFBQVEsZ0JBQWdCO0FBQUEsTUFDM0IsSUFBSSxNQUFNLGNBQWMsWUFBWTtBQUFBLFFBQXdCO0FBQUEsTUFDNUQsSUFBSSxDQUFDLE1BQU0sY0FBYztBQUFBLFFBQVcsTUFBTSxjQUFjLFlBQVksQ0FBQztBQUFBLE1BQ3JFLE1BQU0sY0FBYyxVQUFVLHlCQUF5QjtBQUFBLElBQ3hEO0FBQUEsSUFDQSxJQUFJLEtBQUssU0FBUyxRQUFRO0FBQUEsTUFBRztBQUFBLElBQzdCLE1BQU0sVUFBVSxNQUFNLFFBQVEsS0FBSyxVQUFVLE9BQU87QUFBQSxJQUNwRCxJQUFJLFFBQVEsS0FBSyxNQUFNLE1BQU0sUUFBUSxhQUFhO0FBQUEsTUFDakQsT0FBTyxLQUFLLEdBQUcscUJBQXFCLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFBQSxNQUNwRDtBQUFBLElBQ0Q7QUFBQSxJQUNBLElBQUksUUFBUSxrQkFBa0IsTUFBTSxVQUFVLFdBQVc7QUFBQSxNQUF3QjtBQUFBLElBQ2pGLE1BQU0saUJBQWlCLE1BQU0sZUFBZSxRQUFRLFNBQVMsVUFBVSxTQUFTLE9BQU87QUFBQSxJQUN2RixNQUFNLFNBQVMsZUFBZTtBQUFBLElBQzlCLE9BQU8sV0FBVyxPQUFPLFNBQVMsT0FBTyxlQUFlLFFBQVE7QUFBQSxJQUNoRSxJQUFJLFFBQVEsZ0JBQWdCO0FBQUEsTUFDM0IsSUFBSSxDQUFDLE9BQU8sS0FBSyxDQUFDLFVBQVU7QUFBQSxRQUMzQixPQUFPLE1BQU0sU0FBUyxZQUFZLE1BQU0sU0FBUztBQUFBLE9BQ2pELEdBQUc7QUFBQSxRQUNILElBQUksQ0FBQyxNQUFNLFVBQVU7QUFBQSxVQUFVLE1BQU0sVUFBVSxXQUFXLENBQUM7QUFBQSxRQUMzRCxNQUFNLFVBQVUsU0FBUyx5QkFBeUI7QUFBQSxNQUNuRDtBQUFBLElBQ0Q7QUFBQSxJQUNBLE9BQU8sWUFBWSxRQUFRLFFBQVEsU0FBUyxPQUFPLFlBQVksQ0FBQyxHQUFHLE1BQU0sUUFBUSxHQUFHLE9BQU87QUFBQTtBQUFBLEVBRTVGLFNBQVMsZ0JBQWdCLENBQUMsS0FBSztBQUFBLElBQzlCLElBQUkscUJBQXFCLEtBQUssR0FBRztBQUFBLE1BQUcsT0FBTztBQUFBLElBQzNDLElBQUk7QUFBQSxNQUNILElBQUksSUFBSSxJQUFJLEtBQUsscUJBQXFCLEVBQUU7QUFBQSxRQUFRLE9BQU87QUFBQSxNQUN0RCxNQUFNO0FBQUEsSUFDUixPQUFPO0FBQUE7QUFBQSxFQUVSLE9BQU8sVUFBVTtBQUFBLENBQ2hCO0FBR0YsSUFBSSx5Q0FBeUMsY0FBZSxDQUFDLFNBQVMsV0FBVztBQUFBLEVBQ2hGLE1BQU0sT0FBTyxVQUFVLE1BQU07QUFBQSxFQUM3QixNQUFNLGtCQUFrQix5QkFBeUI7QUFBQSxFQUNqRCxNQUFNLFlBQVksbUJBQW1CO0FBQUEsRUFDckMsTUFBTSxjQUFjLHFCQUFxQjtBQUFBLEVBQ3pDLE1BQU0sY0FBYyxNQUFNO0FBQUEsRUFDMUIsTUFBTSxjQUFjLHFCQUFxQjtBQUFBLEVBQ3pDLE1BQU0sWUFBWSxDQUFDLE9BQU87QUFBQSxFQUMxQixTQUFTLFFBQVEsQ0FBQyxTQUFTO0FBQUEsSUFDMUIsVUFBVTtBQUFBLE1BQ1QsTUFBTSxRQUFRLElBQUk7QUFBQSxNQUNsQixNQUFNLENBQUM7QUFBQSxNQUNQLGdCQUFnQjtBQUFBLE1BQ2hCLFNBQVM7QUFBQSxNQUNULE1BQU07QUFBQSxNQUNOLFNBQVMsQ0FBQztBQUFBLE1BQ1YsdUJBQXVCLENBQUM7QUFBQSxNQUN4QixhQUFhO0FBQUEsU0FDVjtBQUFBLElBQ0o7QUFBQSxJQUNBLFFBQVEsT0FBTyxLQUFLLFFBQVEsUUFBUSxJQUFJO0FBQUEsSUFDeEMsSUFBSSxPQUFPLFFBQVEsU0FBUztBQUFBLE1BQVUsUUFBUSxPQUFPLENBQUMsUUFBUSxJQUFJO0FBQUEsSUFDbEUsSUFBSSxDQUFDLE1BQU0sUUFBUSxRQUFRLElBQUk7QUFBQSxNQUFHLFFBQVEsT0FBTyxDQUFDO0FBQUEsSUFDbEQsUUFBUSxPQUFPLFFBQVEsS0FBSyxJQUFJLENBQUMsTUFBTSxLQUFLLFFBQVEsUUFBUSxNQUFNLENBQUMsQ0FBQztBQUFBLElBQ3BFLE9BQU87QUFBQSxNQUNOLGVBQWU7QUFBQSxXQUNULEtBQUksQ0FBQyxVQUFVLFFBQVEsUUFBUSxXQUFXO0FBQUEsUUFDL0MsTUFBTSxRQUFRO0FBQUEsVUFDYixlQUFlLENBQUM7QUFBQSxVQUNoQixXQUFXLENBQUM7QUFBQSxRQUNiO0FBQUEsUUFDQSxJQUFJLE9BQU8sUUFBUSxPQUFPO0FBQUEsVUFBTSxNQUFNLGNBQWMsT0FBTyxPQUFPLE1BQU0sUUFBUSxDQUFDO0FBQUEsUUFDakYsSUFBSSxRQUFRLFdBQVcsQ0FBQyxNQUFNLFFBQVEsUUFBUSxPQUFPO0FBQUEsVUFBRyxNQUFNLElBQUksTUFBTSxpQ0FBaUM7QUFBQSxRQUN6RyxNQUFNLFNBQVMsTUFBTSxZQUFZLFFBQVEsUUFBUSxTQUFTLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxPQUFPO0FBQUEsUUFDaEYsVUFBVSxNQUFNO0FBQUEsUUFDaEIsZ0JBQWdCLFFBQVEsTUFBTTtBQUFBLFFBQzlCLFlBQVksUUFBUSxNQUFNO0FBQUE7QUFBQSxJQUU1QjtBQUFBO0FBQUEsRUFFRCxTQUFTLFVBQVU7QUFBQSxFQUNuQixPQUFPLFVBQVU7QUFBQSxDQUNoQjtBQUVGLElBQWUsZ0RBQXVCOyIsCiAgImRlYnVnSWQiOiAiNzA5REE5MzhDNEY3MEQxRjY0NzU2RTIxNjQ3NTZFMjEiLAogICJuYW1lcyI6IFtdCn0=
|