@senior-agronegocio/angular-components 1.0.14 → 1.0.16
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/esm2022/components/modal-invoice-pj/for-contracts/modal-invoice-pj-for-contracts.component.mjs +3 -3
- package/esm2022/components/modal-invoice-pj/for-fixation/modal-invoice-pj-for-fixation.component.mjs +3 -3
- package/esm2022/components/modal-invoice-pj/for-load-order/modal-invoice-pj-for-load-order.component.mjs +3 -3
- package/esm2022/components/modal-invoice-pj/for-origination/modal-invoice-pj-for-origination.component.mjs +3 -3
- package/esm2022/components/modal-invoice-pj/for-transfer/modal-invoice-pj-for-transfer.component.mjs +3 -3
- package/esm2022/components/modal-invoice-pj/modal-invoice-pj-base.class.mjs +5 -2
- package/esm2022/fields/lookups/core/agro-base-lookup-field.mjs +14 -2
- package/esm2022/fields/lookups/utils/agro-lookup-utils.mjs +14 -2
- package/fesm2022/senior-agronegocio-angular-components.mjs +40 -13
- package/fesm2022/senior-agronegocio-angular-components.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -4,7 +4,19 @@ import { AgroStringUtils } from '../../../common/agro-string-utils.class';
|
|
|
4
4
|
const numberTypes = ['integer', 'double'];
|
|
5
5
|
const numberPattern = /^\d+\b$/;
|
|
6
6
|
const YYYY_MM_DD_FORMAT = 'YYYY-MM-DD';
|
|
7
|
-
const LOOKUP_DOCUMENT_FIELDS = [
|
|
7
|
+
const LOOKUP_DOCUMENT_FIELDS = [
|
|
8
|
+
'cnpCpf',
|
|
9
|
+
'numCgc',
|
|
10
|
+
'e001pes.cnpCpf',
|
|
11
|
+
'e001pes.numCgc',
|
|
12
|
+
'e001pes.cpfCnpj',
|
|
13
|
+
'e001pes.cpf',
|
|
14
|
+
'e001pes.cnpj',
|
|
15
|
+
'e001pes.cgc',
|
|
16
|
+
'e001pes.cpfCgc',
|
|
17
|
+
'e001pes.cgcCpf',
|
|
18
|
+
'cpf'
|
|
19
|
+
];
|
|
8
20
|
export const mergeUnique = (array, otherArray) => array.concat(otherArray.filter((item) => !array.includes(item)));
|
|
9
21
|
export const getTypeInformation = (type, value) => {
|
|
10
22
|
switch (type) {
|
|
@@ -300,4 +312,4 @@ export function formatBrlCurrency(currencyPipe, value) {
|
|
|
300
312
|
.replace("#", ",")
|
|
301
313
|
.replace(/^(.{2})/, "$1 ");
|
|
302
314
|
}
|
|
303
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdyby1sb29rdXAtdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvZmllbGRzL2xvb2t1cHMvdXRpbHMvYWdyby1sb29rdXAtdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBRzVCLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzdELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUUxRSxNQUFNLFdBQVcsR0FBRyxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUMxQyxNQUFNLGFBQWEsR0FBRyxTQUFTLENBQUM7QUFDaEMsTUFBTSxpQkFBaUIsR0FBRyxZQUFZLENBQUM7QUFDdkMsTUFBTSxzQkFBc0IsR0FBRyxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUVwRCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxLQUFvQixFQUFFLFVBQXlCLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUVqSixNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLElBQVksRUFBRSxLQUFVLEVBQUUsRUFBRTtJQUMzRCxRQUFRLElBQUksRUFBRSxDQUFDO1FBQ1gsS0FBSyxNQUFNLENBQUM7UUFDWixLQUFLLE1BQU0sQ0FBQztRQUNaLEtBQUssZUFBZSxDQUFDO1FBQ3JCLEtBQUssVUFBVTtZQUNYLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUNyRCxLQUFLLFNBQVMsQ0FBQztRQUNm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Q0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRCxPQUFPLGlCQUFpQixDQUFDO0FBQzdCLENBQUM7QUFFRCxNQUFNLFVBQVUsdUJBQXVCLENBQUMsTUFBZ0IsRUFBRSxLQUFhO0lBQ25FLE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN0QyxNQUFNLFlBQVksR0FBRyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMzRSxNQUFNLFVBQVUsR0FBRyxZQUFZLENBQUMsS0FBSyxHQUFHLFlBQVksQ0FBQyxDQUFDO0lBRXRELElBQUksVUFBVSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ25CLGNBQWMsQ0FBQyxDQUFDLENBQUMsSUFBSSxVQUFVLENBQUM7SUFDcEMsQ0FBQztJQUVELE9BQU8sY0FBYyxDQUFDO0FBQzFCLENBQUM7QUFFRCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsWUFBMEIsRUFBRSxLQUFhO0lBQ3ZFLElBQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUMxQixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQsT0FBTyxZQUFZO1NBQ2QsU0FBUyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQztRQUMzQyxFQUFFLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDO1NBQ2xCLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDO1NBQ2pCLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDO1NBQ2pCLE9BQU8sQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDbkMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5pbXBvcnQgeyBDdXJyZW5jeVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBmb3JtYXRDUEZDTlBKV2l0aE1hc2sgfSBmcm9tICcuL2NwZi1jbnBqLWZvcm1hdHRlcic7XHJcbmltcG9ydCB7IEFncm9TdHJpbmdVdGlscyB9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9hZ3JvLXN0cmluZy11dGlscy5jbGFzcyc7XHJcblxyXG5jb25zdCBudW1iZXJUeXBlcyA9IFsnaW50ZWdlcicsICdkb3VibGUnXTtcclxuY29uc3QgbnVtYmVyUGF0dGVybiA9IC9eXFxkK1xcYiQvO1xyXG5jb25zdCBZWVlZX01NX0REX0ZPUk1BVCA9ICdZWVlZLU1NLUREJztcclxuY29uc3QgTE9PS1VQX0RPQ1VNRU5UX0ZJRUxEUyA9IFsnY25wQ3BmJywgJ251bUNnYyddO1xyXG5cclxuZXhwb3J0IGNvbnN0IG1lcmdlVW5pcXVlID0gKGFycmF5OiBBcnJheTxzdHJpbmc+LCBvdGhlckFycmF5OiBBcnJheTxzdHJpbmc+KSA9PiBhcnJheS5jb25jYXQob3RoZXJBcnJheS5maWx0ZXIoKGl0ZW0pID0+ICFhcnJheS5pbmNsdWRlcyhpdGVtKSkpO1xyXG5cclxuZXhwb3J0IGNvbnN0IGdldFR5cGVJbmZvcm1hdGlvbiA9ICh0eXBlOiBzdHJpbmcsIHZhbHVlOiBhbnkpID0+IHtcclxuICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICAgIGNhc2UgJ3RpbWUnOlxyXG4gICAgICAgIGNhc2UgJ2RhdGUnOlxyXG4gICAgICAgIGNhc2UgJ2xvY2FsRGF0ZVRpbWUnOlxyXG4gICAgICAgIGNhc2UgJ2RhdGVUaW1lJzpcclxuICAgICAgICAgICAgcmV0dXJuIHsgaXNWYWxpZFZhbHVlOiBmYWxzZSwgdHlwZUV4aXN0czogdHJ1ZSB9O1xyXG4gICAgICAgIGNhc2UgJ2ludGVnZXInOlxyXG4gICAgICAgIGNhc2UgJ2RvdWJsZSc6XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICBpc1ZhbGlkVmFsdWU6IHZhbHVlLm1hdGNoKG51bWJlclBhdHRlcm4pLFxyXG4gICAgICAgICAgICAgICAgdHlwZUV4aXN0czogbnVtYmVyVHlwZXMuaW5jbHVkZXModHlwZSksXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIGlzVmFsaWRWYWx1ZTogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICB0eXBlRXhpc3RzOiBmYWxzZSxcclxuICAgICAgICAgICAgfTtcclxuICAgIH1cclxufTtcclxuXHJcblxyXG5cclxuXHJcbmV4cG9ydCBjb25zdCBnZXRTdWdnZXN0aW9uVmFsdWUgPSAoZGlzcGxheUZpZWxkczogc3RyaW5nW10sIG93bmVyRW50aXR5OiBzdHJpbmcsIHZhbHVlOiBhbnksIHNlcGFyYXRvcjogc3RyaW5nKSA9PiB7XHJcbiAgICBpZiAoIWRpc3BsYXlGaWVsZHMgfHwgZGlzcGxheUZpZWxkcy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZGlzcGxheUZpZWxkc1xyXG4gICAgICAgIC5tYXAoKGZpZWxkKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChMT09LVVBfRE9DVU1FTlRfRklFTERTLmluY2x1ZGVzKGZpZWxkKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZvcm1hdENQRkNOUEpXaXRoTWFzayhnZXRQcm9wKHZhbHVlLCBgJHtvd25lckVudGl0eX0uJHtmaWVsZH1gKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIGdldFByb3AodmFsdWUsIGAke293bmVyRW50aXR5fS4ke2ZpZWxkfWApO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmZpbHRlcihmID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIEFncm9TdHJpbmdVdGlscy5pc1ZhbGlkKFN0cmluZyhmKSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgICAuam9pbihzZXBhcmF0b3IpO1xyXG59O1xyXG5cclxuY29uc3QgYnVpbGRFbnVtQ2xhdXNlID0gKG5hbWU6IHN0cmluZywgc2VsZWN0ZWQ6IGFueSkgPT4gYCR7bmFtZX0gZXEgJyR7c2VsZWN0ZWR9J2A7XHJcblxyXG5leHBvcnQgY29uc3QgZ2V0RW51bVF1ZXJ5ID0gKG5hbWU6IHN0cmluZywgdmFsdWU6IGFueSwgbXVsdGlwbGUgPSBmYWxzZSkgPT4ge1xyXG4gICAgaWYgKG11bHRpcGxlKSB7XHJcbiAgICAgICAgcmV0dXJuIGAoJHt2YWx1ZS5tYXAoKHNlbGVjdGVkOiBhbnkpID0+IGJ1aWxkRW51bUNsYXVzZShuYW1lLCBzZWxlY3RlZCkpLmpvaW4oJyBvciAnKX0pYDtcclxuICAgIH1cclxuICAgIHJldHVybiBgJHtuYW1lfSBlcSAnJHt2YWx1ZX0nYDtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBjcmVhdGVGaWx0ZXJTdHJpbmcgPSAoYW55OiBhbnksIHZhbHVlOiBhbnkpID0+IHtcclxuICAgIGNvbnN0IHsgbmFtZSwgdHlwZSwgbXVsdGlwbGUgfSA9IGFueTtcclxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT0gJ251bWJlcicpIHtcclxuICAgICAgICByZXR1cm4gYCR7bmFtZX0gZXEgJHt2YWx1ZX1gO1xyXG4gICAgfVxyXG5cclxuICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICAgIGNhc2UgJ2RhdGUnOlxyXG4gICAgICAgICAgICByZXR1cm4gYCR7bmFtZX0gZXEgJyR7bW9tZW50KHZhbHVlKS5mb3JtYXQoWVlZWV9NTV9ERF9GT1JNQVQpfSdgO1xyXG4gICAgICAgIGNhc2UgJ3RpbWUnOlxyXG4gICAgICAgICAgICByZXR1cm4gYCR7bmFtZX0gZXEgJyR7bW9tZW50KHZhbHVlKS5mb3JtYXQoJ0hIOm1tOnNzJyl9J2A7XHJcbiAgICAgICAgY2FzZSAnZGF0ZVRpbWUnOlxyXG4gICAgICAgICAgICByZXR1cm4gYCR7bmFtZX0gZXEgJyR7bW9tZW50KHZhbHVlKS5mb3JtYXQoKX0nYDtcclxuICAgICAgICBjYXNlICdsb2NhbERhdGVUaW1lJzpcclxuICAgICAgICAgICAgcmV0dXJuIGAke25hbWV9IGVxICcke21vbWVudCh2YWx1ZSkuZm9ybWF0KCdZWVlZLU1NLUREW1RdSEg6bW06c3MuU1NTJyl9J2A7XHJcbiAgICAgICAgY2FzZSAnZW51bSc6XHJcbiAgICAgICAgICAgIHJldHVybiBnZXRFbnVtUXVlcnkobmFtZSwgdmFsdWUsIG11bHRpcGxlKTtcclxuICAgICAgICBjYXNlICdzdHJpbmcnOlxyXG4gICAgICAgICAgICByZXR1cm4gYHVwcGVyKCR7bmFtZX0pIGxpa2UgdXBwZXIoJyUke3ZhbHVlLnJlcGxhY2UoLycvZywgXCInXCIpfSUnKWA7XHJcbiAgICAgICAgY2FzZSAnbG9va3VwJzpcclxuICAgICAgICAgICAgcmV0dXJuIGAke25hbWV9IGVxICcke3ZhbHVlLmlkfSdgO1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgIHJldHVybiBgJHtuYW1lfSBlcSAnJHt2YWx1ZX0nYDtcclxuICAgIH1cclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBjcmVhdGVGaWx0ZXJUb2tlbnMgPSAoYW55OiBhbnksIHZhbHVlOiBhbnksIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSkgPT4ge1xyXG4gICAgY29uc3QgeyBuYW1lLCB0eXBlLCBsYWJlbCwgc2VhcmNoRmllbGRzLCBvcHRpb25zIH0gPSBhbnk7XHJcbiAgICBsZXQgbGFiZWxWYWx1ZSA9IHZhbHVlO1xyXG5cclxuICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICAgIGNhc2UgJ2RhdGUnOlxyXG4gICAgICAgICAgICBsYWJlbFZhbHVlID0gbW9tZW50KHZhbHVlKS5mb3JtYXQoJ0wnKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAndGltZSc6XHJcbiAgICAgICAgICAgIGxhYmVsVmFsdWUgPSBtb21lbnQodmFsdWUpLmZvcm1hdCgnTFRTJyk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ2xvY2FsRGF0ZVRpbWUnOlxyXG4gICAgICAgIGNhc2UgJ2RhdGVUaW1lJzpcclxuICAgICAgICAgICAgbGFiZWxWYWx1ZSA9IG1vbWVudCh2YWx1ZSkuZm9ybWF0KCdMIExUUycpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdsb29rdXAnOlxyXG4gICAgICAgICAgICBsYWJlbFZhbHVlID0gc2VhcmNoRmllbGRzLm1hcCgoZmllbGQ6IGFueSkgPT4gZ2V0UHJvcCh2YWx1ZSwgZmllbGQubmFtZSkpLmpvaW4oJyAtICcpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdlbnVtJzpcclxuICAgICAgICAgICAgbGFiZWxWYWx1ZSA9IG9wdGlvbnMuZmlsdGVyKChvcHRpb246IGFueSkgPT4gb3B0aW9uLnZhbHVlID09PSBsYWJlbFZhbHVlKVswXS5sYWJlbDtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnYm9vbGVhbic6XHJcbiAgICAgICAgICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgbGFiZWxWYWx1ZSA9IHRyYW5zbGF0ZS5pbnN0YW50KCdhZ3JvLmFuZ3VsYXJfY29tcG9uZW50cy5sb29rdXBfbGlzdF9ncmlkX2Jvb2xlYW5fdHJ1ZScpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgbGFiZWxWYWx1ZSA9IHRyYW5zbGF0ZS5pbnN0YW50KCdhZ3JvLmFuZ3VsYXJfY29tcG9uZW50cy5sb29rdXBfbGlzdF9ncmlkX2Jvb2xlYW5fZmFsc2UnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4geyBpZDogbmFtZSwgbGFiZWw6IGAke2xhYmVsfTogJHtsYWJlbFZhbHVlfWAgfTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCByZXNvbHZlUmVmcyA9IChwYXlsb2FkOiBhbnkpID0+IHtcclxuICAgIGNvbnN0IGdldERhdGFGcm9tUmVmID0gKHJlZjogc3RyaW5nLCByb290T2JqOiBhbnkpID0+IHtcclxuICAgICAgICBjb25zdCByZWdleCA9IC9cXFtcIiguKj8pXCJcXF0vZztcclxuICAgICAgICBjb25zdCByZXN1bHQ6IHN0cmluZ1tdID0gW107XHJcbiAgICAgICAgbGV0IG1hdGNoO1xyXG5cclxuICAgICAgICB3aGlsZSAoKG1hdGNoID0gcmVnZXguZXhlYyhyZWYpKSAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICByZXN1bHQucHVzaChtYXRjaFsxXSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gcmVzdWx0LnJlZHVjZSgoYWNjLCBwYXJ0KSA9PiBhY2M/LltwYXJ0XSwgcm9vdE9iaik7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IHJlc29sdmUgPSAob2JqOiBhbnksIHJvb3RPYmo6IGFueSwgdmlzaXRlZCA9IG5ldyBTZXQ8YW55PigpKSA9PiB7XHJcbiAgICAgICAgaWYgKG9iaiA9PT0gbnVsbCB8fCB0eXBlb2Ygb2JqICE9PSAnb2JqZWN0JyB8fCB2aXNpdGVkLmhhcyhvYmopKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdmlzaXRlZC5hZGQob2JqKTtcclxuXHJcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkob2JqKSkge1xyXG4gICAgICAgICAgICBvYmouZm9yRWFjaCgoaXRlbSkgPT4gcmVzb2x2ZShpdGVtLCByb290T2JqLCB2aXNpdGVkKSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgT2JqZWN0LmtleXMob2JqKS5mb3JFYWNoKChrZXkpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChrZXkgPT09ICckcmVmJyAmJiBvYmpba2V5XSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlZlBhdGggPSBvYmpba2V5XTtcclxuICAgICAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKG9iaiwgZ2V0RGF0YUZyb21SZWYocmVmUGF0aCwgcm9vdE9iaikpO1xyXG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBvYmpba2V5XTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShvYmpba2V5XSwgcm9vdE9iaiwgdmlzaXRlZCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgcmVzb2x2ZShwYXlsb2FkLCBwYXlsb2FkKTtcclxuXHJcbiAgICByZXR1cm4gcGF5bG9hZDtcclxufTtcclxuXHJcbmV4cG9ydCB0eXBlIFJlbGF0aW9uVHJhbnNmb3JtQ29uZmlnID0ge1xyXG4gICAgb3JpZ2luOiBzdHJpbmc7XHJcbiAgICBrZXk6IHN0cmluZztcclxuICAgIHRyYW5zZm9ybTogKHZhbHVlOiBhbnkpID0+IGFueTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBhcHBseVJlbGF0aW9uVHJhbnNmb3JtcyA9IChlbnRpdHk6IGFueSwgb3JpZ2luRW50aXR5OiBzdHJpbmcgfCB1bmRlZmluZWQsIHJlbGF0aW9uczogUmVsYXRpb25UcmFuc2Zvcm1Db25maWdbXSkgPT4ge1xyXG4gICAgcmVsYXRpb25zLmZvckVhY2goKHsgb3JpZ2luLCBrZXksIHRyYW5zZm9ybSB9KSA9PiB7XHJcbiAgICAgICAgaWYgKG9yaWdpbkVudGl0eSAhPT0gb3JpZ2luICYmIGVudGl0eVtrZXldKSB7XHJcbiAgICAgICAgICAgIGVudGl0eVtrZXldID0gdHJhbnNmb3JtKGVudGl0eVtrZXldKTtcclxuICAgICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gZW50aXR5O1xyXG59O1xyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcbmNvbnN0IGRhdGVQYXR0ZXJuWVlZWU1NREQgPSAvXlxcZHs0fS1cXGR7Mn0tXFxkezJ9JC87XHJcblxyXG5cclxuZXhwb3J0IGNvbnN0IGlzVmFsaWRGaWx0ZXIgPSAodHlwZTogYW55LCB2YWx1ZTogYW55KSA9PiB7XHJcbiAgICBjb25zdCB7IGlzVmFsaWRWYWx1ZSwgdHlwZUV4aXN0cyB9ID0gZ2V0VHlwZUluZm9ybWF0aW9uKHR5cGUsIHZhbHVlKTtcclxuICAgIHJldHVybiAhKHR5cGVFeGlzdHMgJiYgIWlzVmFsaWRWYWx1ZSk7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgZ2V0UHJvcCA9IChvYmo6IGFueSwgcGF0aDogYW55LCBBUFBMWV9DUEZDTlBKX0ZJTFRFUiA9IGZhbHNlKSA9PiB7XHJcbiAgICBsZXQgciA9IHBhdGguc3BsaXQoXCIuXCIpLnJlZHVjZSgocmVzdWx0OiBhbnksIHByb3A6IGFueSkgPT4gKHJlc3VsdFtwcm9wXSA9PT0gdW5kZWZpbmVkID8gXCJcIiA6IHJlc3VsdFtwcm9wXSksIG9iaik7XHJcbiAgICBjb25zdCBub3JtYWxpemVkUGF0aCA9IHR5cGVvZiBwYXRoID09PSAnc3RyaW5nJyA/IHBhdGggOiAnJztcclxuICAgIGNvbnN0IGZpZWxkTmFtZSA9IG5vcm1hbGl6ZWRQYXRoLnNwbGl0KCcuJykucG9wKCkgPz8gbm9ybWFsaXplZFBhdGg7XHJcblxyXG4gICAgaWYgKGRhdGVQYXR0ZXJuWVlZWU1NREQudGVzdChyKSkge1xyXG4gICAgICAgIHIgPSBtb21lbnQociwgWVlZWV9NTV9ERF9GT1JNQVQpLmZvcm1hdChcIkREL01NL1lZWVlcIik7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKChBUFBMWV9DUEZDTlBKX0ZJTFRFUiB8fCBMT09LVVBfRE9DVU1FTlRfRklFTERTLmluY2x1ZGVzKGZpZWxkTmFtZSkpICYmIEFncm9TdHJpbmdVdGlscy5pc1ZhbGlkKHIpKSB7XHJcbiAgICAgICAgcmV0dXJuIGZvcm1hdENQRkNOUEpXaXRoTWFzayhyKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcjtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBnZXRMYWJlbFZhbHVlUmVxdWVzdCA9IChjb250ZW50czogYW55W10sIGRpc3BsYXlGaWVsZHM6IGFueVtdLCBBUFBMWV9DUEZDTlBKX0ZJTFRFUiA9IGZhbHNlKSA9PiB7XHJcbiAgICBjb25zdCByID0gY29udGVudHMubWFwKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICBjb25zdCBudW1iZXJQYXR0ZXJuVG9UZXN0ID0gL15cXGQrKFxcLlxcZHsxLDJ9KT8kLztcclxuICAgICAgICBjb25zdCBmb3JtYXR0ZWRJdGVtID0geyAuLi5pdGVtIH07XHJcblxyXG4gICAgICAgIC8vIEZvcm1hdCBjdXJyZW5jeSBmaWVsZHMgKHZsckNvdClcclxuICAgICAgICBbXCJ2bHJDb3RcIl0uZm9yRWFjaCgoZmllbGQ6IHN0cmluZykgPT4ge1xyXG4gICAgICAgICAgICBpZiAoZm9ybWF0dGVkSXRlbVtmaWVsZF0gJiYgbnVtYmVyUGF0dGVyblRvVGVzdC50ZXN0KGZvcm1hdHRlZEl0ZW1bZmllbGRdKSkge1xyXG4gICAgICAgICAgICAgICAgZm9ybWF0dGVkSXRlbVtmaWVsZF0gPSBwYXJzZUZsb2F0KGZvcm1hdHRlZEl0ZW1bZmllbGRdKS50b0xvY2FsZVN0cmluZyhcInB0LUJSXCIsIHtcclxuICAgICAgICAgICAgICAgICAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDIsXHJcbiAgICAgICAgICAgICAgICAgICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAyXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBMT09LVVBfRE9DVU1FTlRfRklFTERTLmZvckVhY2goKGZpZWxkTmFtZSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoZm9ybWF0dGVkSXRlbVtmaWVsZE5hbWVdICE9PSBudWxsICYmIGZvcm1hdHRlZEl0ZW1bZmllbGROYW1lXSAhPT0gdW5kZWZpbmVkICYmIGZvcm1hdHRlZEl0ZW1bZmllbGROYW1lXSAhPT0gJycpIHtcclxuICAgICAgICAgICAgICAgIGZvcm1hdHRlZEl0ZW1bZmllbGROYW1lXSA9IGZvcm1hdENQRkNOUEpXaXRoTWFzayhTdHJpbmcoZm9ybWF0dGVkSXRlbVtmaWVsZE5hbWVdKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgLi4uZm9ybWF0dGVkSXRlbSxcclxuICAgICAgICAgICAgbGFiZWw6IGRpc3BsYXlGaWVsZHMubWFwKGZpZWxkID0+IGdldFByb3AoZm9ybWF0dGVkSXRlbSwgZmllbGQsIEFQUExZX0NQRkNOUEpfRklMVEVSKSkuam9pbihcIiAtIFwiKVxyXG4gICAgICAgIH07XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gcjtcclxufTtcclxuXHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0RmlsdGVycyhmaWx0ZXJzOiBhbnlbXSwgdmFsdWU6IGFueSwgc3RhdHVzRmlsdGVyOiBib29sZWFuLCBjb2x1bW5OYW1lOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiBmaWx0ZXJzXHJcbiAgICAgICAgLmZpbHRlcigoeyB0eXBlIH0pID0+IGlzVmFsaWRGaWx0ZXIodHlwZSwgdmFsdWUpKVxyXG4gICAgICAgIC5maWx0ZXIoKHsgbmFtZSB9KSA9PiBuYW1lICE9PSBcInN0YXR1c1wiKVxyXG4gICAgICAgIC5tYXAoKHsgbmFtZSwgdHlwZSB9KSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiBjb252ZXJ0VmFsdWVCeVR5cGUobmFtZSwgdmFsdWUsIHR5cGUpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmpvaW4oXCIgb3IgXCIpXHJcbiAgICAgICAgLmNvbmNhdChgYW5kICR7Y29sdW1uTmFtZX0gZXEgJ1ZBJyBgKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdEZpbHRlcnNBZHZhbmNlZChcclxuICAgIGZpbHRlcnM6IGFueVtdLFxyXG4gICAgZmlsdGVyRGF0YTogYW55LFxyXG4gICAgc3RhdHVzRmlsdGVyOiBib29sZWFuLFxyXG4gICAgY29sdW1uTmFtZTogc3RyaW5nLFxyXG4gICAgZTA3MGVtcElkOiBzdHJpbmdcclxuKSB7XHJcbiAgICByZXR1cm4gZmlsdGVyc1xyXG4gICAgICAgIC5maWx0ZXIoKHsgbmFtZSB9KSA9PiBmaWx0ZXJEYXRhW25hbWVdICE9PSB1bmRlZmluZWQgJiYgZmlsdGVyRGF0YVtuYW1lXSAhPT0gXCJcIilcclxuICAgICAgICAubWFwKCh7IG5hbWUsIHR5cGUgfSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCB2YWx1ZTogYW55ID0gZmlsdGVyRGF0YVtuYW1lXTtcclxuICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRWYWx1ZUJ5VHlwZShuYW1lLCB2YWx1ZSwgdHlwZSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgICAuY29uY2F0KHN0YXR1c0ZpbHRlciA/IFtgJHtjb2x1bW5OYW1lfSBlcSAnVkEnIGFuZCBlMDcwZW1wIGVxICcke2UwNzBlbXBJZH0nYF0gOiBbXSlcclxuICAgICAgICAuam9pbihcIiBhbmQgXCIpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY29udmVydFZhbHVlQnlUeXBlKG5hbWU6IHN0cmluZywgdmFsdWU6IGFueSwgdHlwZTogYW55KTogc3RyaW5nIHtcclxuICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XHJcbiAgICAgICAgdmFsdWUgPSBcIlwiO1xyXG4gICAgfVxyXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PSBcIm51bWJlclwiKSB7XHJcbiAgICAgICAgcmV0dXJuIGAke25hbWV9IGVxICR7dmFsdWV9YDtcclxuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2RhdGUnKSB7XHJcbiAgICAgICAgcmV0dXJuIGAke25hbWV9IGVxICcke21vbWVudCh2YWx1ZSkuZm9ybWF0KFlZWVlfTU1fRERfRk9STUFUKX0nYDtcclxuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ3RpbWUnKSB7XHJcbiAgICAgICAgcmV0dXJuIGAke25hbWV9IGVxICcke21vbWVudCh2YWx1ZSkuZm9ybWF0KFwiSEg6bW06c3NcIil9J2A7XHJcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdkYXRlVGltZScpIHtcclxuICAgICAgICByZXR1cm4gYCR7bmFtZX0gZXEgJyR7bW9tZW50KHZhbHVlKS5mb3JtYXQoKX0nYDtcclxuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICByZXR1cm4gYGNvbnRhaW5pbmcodXBwZXIoJHtuYW1lfSksIHVwcGVyKCcke1N0cmluZyh2YWx1ZSkucmVwbGFjZSgvJy9nLCBcIlxcXFwnXCIpfScpKWA7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiBgJHtuYW1lfSBlcSAnJHt2YWx1ZX0nYDtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdEZpbHRlcnNXaXRob3V0U3RhdHVzKGZpbHRlcnM6IGFueVtdLCB2YWx1ZTogYW55KSB7XHJcbiAgICByZXR1cm4gZmlsdGVyc1xyXG4gICAgICAgIC5maWx0ZXIoKHsgdHlwZSB9KSA9PiBpc1ZhbGlkRmlsdGVyKHR5cGUsIHZhbHVlKSlcclxuICAgICAgICAuZmlsdGVyKCh7IG5hbWUgfSkgPT4gbmFtZSAhPT0gXCJzdGF0dXNcIilcclxuICAgICAgICAubWFwKCh7IG5hbWUsIHR5cGUgfSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09IFwibnVtYmVyXCIpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBgJHtuYW1lfSBlcSAke3ZhbHVlfWA7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2RhdGUnKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYCR7bmFtZX0gZXEgJyR7bW9tZW50KHZhbHVlKS5mb3JtYXQoWVlZWV9NTV9ERF9GT1JNQVQpfSdgO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICd0aW1lJykge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke25hbWV9IGVxICcke21vbWVudCh2YWx1ZSkuZm9ybWF0KFwiSEg6bW06c3NcIil9J2A7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2RhdGVUaW1lJykge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke25hbWV9IGVxICcke21vbWVudCh2YWx1ZSkuZm9ybWF0KCl9J2A7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBgY29udGFpbmluZyh1cHBlcigke25hbWV9KSwgdXBwZXIoJyR7dmFsdWUucmVwbGFjZSgvJy9nLCBcIlxcXFwnXCIpfScpKWA7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYCR7bmFtZX0gZXEgJyR7dmFsdWV9J2A7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICAgIC5qb2luKFwiIGFuZCBcIik7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiByb3VuZFRvVGhyZWUobnVtOiBudW1iZXIpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIE1hdGgucm91bmQobnVtICogMTAwMCkgLyAxMDAwO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY2FsY3VsYXRlQWRqdXN0ZWRQZXJjZW50YWdlc0FuZFdlaWdodHModG90YWw6IG51bWJlciwgbWF4UGVyY2VudGFnZTogbnVtYmVyLCBtYXhXZWlnaHQ6IG51bWJlcikge1xyXG4gICAgY29uc3QgY2FsY3VsYXRlZFBlcmNlbnRhZ2VzID0gY2FsY3VsYXRlQWRqdXN0ZWRQZXJjZW50YWdlcyh0b3RhbCwgbWF4UGVyY2VudGFnZSk7XHJcbiAgICBjb25zdCBjYWxjdWxhdGVkV2VpZ2h0cyA9IGNhbGN1bGF0ZUFkanVzdGVkV2VpZ2h0cyhjYWxjdWxhdGVkUGVyY2VudGFnZXMsIG1heFdlaWdodCk7XHJcbiAgICByZXR1cm4geyBjYWxjdWxhdGVkUGVyY2VudGFnZXMsIGNhbGN1bGF0ZWRXZWlnaHRzIH07XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBjYWxjdWxhdGVBZGp1c3RlZFBlcmNlbnRhZ2VzKHRvdGFsOiBudW1iZXIsIG1heFBlcmNlbnRhZ2U6IG51bWJlcikge1xyXG4gICAgY29uc3QgYmFzZVBlcmNlbnRhZ2UgPSByb3VuZFRvVGhyZWUobWF4UGVyY2VudGFnZSAvIHRvdGFsKTtcclxuICAgIGNvbnN0IGNhbGN1bGF0ZWRQZXJjZW50YWdlcyA9IEFycmF5KHRvdGFsKS5maWxsKGJhc2VQZXJjZW50YWdlKTtcclxuICAgIHJldHVybiBhZGp1c3RWYWx1ZXNJZk5lY2Vzc2FyeShjYWxjdWxhdGVkUGVyY2VudGFnZXMsIG1heFBlcmNlbnRhZ2UpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY2FsY3VsYXRlQWRqdXN0ZWRXZWlnaHRzKGNhbGN1bGF0ZWRQZXJjZW50YWdlczogbnVtYmVyW10sIG1heFdlaWdodDogbnVtYmVyKSB7XHJcbiAgICBjb25zdCB0b3RhbFBlcmNlbnRhZ2UgPSBjYWxjdWxhdGVkUGVyY2VudGFnZXMucmVkdWNlKChzdW0sIHBlcmNlbnRhZ2UpID0+IHN1bSArIHBlcmNlbnRhZ2UsIDApO1xyXG4gICAgY29uc3QgY2FsY3VsYXRlZFdlaWdodHMgPSBjYWxjdWxhdGVkUGVyY2VudGFnZXMubWFwKHBlcmNlbnRhZ2UgPT5cclxuICAgICAgICByb3VuZFRvVGhyZWUoKHBlcmNlbnRhZ2UgLyAxMDApICogbWF4V2VpZ2h0KVxyXG4gICAgKTtcclxuXHJcbiAgICBpZiAocm91bmRUb1RocmVlKHRvdGFsUGVyY2VudGFnZSkgPT09IDEwMCkge1xyXG4gICAgICAgIHJldHVybiBhZGp1c3RWYWx1ZXNJZk5lY2Vzc2FyeShjYWxjdWxhdGVkV2VpZ2h0cywgbWF4V2VpZ2h0KTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gY2FsY3VsYXRlZFdlaWdodHM7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBhZGp1c3RWYWx1ZXNJZk5lY2Vzc2FyeSh2YWx1ZXM6IG51bWJlcltdLCB0b3RhbDogbnVtYmVyKTogbnVtYmVyW10ge1xyXG4gICAgY29uc3QgYWRqdXN0ZWRWYWx1ZXMgPSB2YWx1ZXMuc2xpY2UoKTtcclxuICAgIGNvbnN0IGN1cnJlbnRUb3RhbCA9IGFkanVzdGVkVmFsdWVzLnJlZHVjZSgoc3VtLCB2YWx1ZSkgPT4gc3VtICsgdmFsdWUsIDApO1xyXG4gICAgY29uc3QgZGlmZmVyZW5jZSA9IHJvdW5kVG9UaHJlZSh0b3RhbCAtIGN1cnJlbnRUb3RhbCk7XHJcblxyXG4gICAgaWYgKGRpZmZlcmVuY2UgIT09IDApIHtcclxuICAgICAgICBhZGp1c3RlZFZhbHVlc1swXSArPSBkaWZmZXJlbmNlO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBhZGp1c3RlZFZhbHVlcztcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdEJybEN1cnJlbmN5KGN1cnJlbmN5UGlwZTogQ3VycmVuY3lQaXBlLCB2YWx1ZTogbnVtYmVyKTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCB7XHJcbiAgICBpZiAoIWN1cnJlbmN5UGlwZSB8fCAhdmFsdWUpIHtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gY3VycmVuY3lQaXBlXHJcbiAgICAgICAgLnRyYW5zZm9ybSh2YWx1ZSwgXCJCUkxcIiwgXCJzeW1ib2xcIiwgYDEuMi0yYClcclxuICAgICAgICA/LnJlcGxhY2UoXCIuXCIsIFwiI1wiKVxyXG4gICAgICAgIC5yZXBsYWNlKFwiLFwiLCBcIi5cIilcclxuICAgICAgICAucmVwbGFjZShcIiNcIiwgXCIsXCIpXHJcbiAgICAgICAgLnJlcGxhY2UoL14oLnsyfSkvLCBcIiQxIFwiKTtcclxufVxyXG5cclxuXHJcbiJdfQ==
|
|
315
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdyby1sb29rdXAtdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvZmllbGRzL2xvb2t1cHMvdXRpbHMvYWdyby1sb29rdXAtdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBRzVCLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzdELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUUxRSxNQUFNLFdBQVcsR0FBRyxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUMxQyxNQUFNLGFBQWEsR0FBRyxTQUFTLENBQUM7QUFDaEMsTUFBTSxpQkFBaUIsR0FBRyxZQUFZLENBQUM7QUFDdkMsTUFBTSxzQkFBc0IsR0FBRztJQUMzQixRQUFRO0lBQ1IsUUFBUTtJQUNSLGdCQUFnQjtJQUNoQixnQkFBZ0I7SUFDaEIsaUJBQWlCO0lBQ2pCLGFBQWE7SUFDYixjQUFjO0lBQ2QsYUFBYTtJQUNiLGdCQUFnQjtJQUNoQixnQkFBZ0I7SUFDaEIsS0FBSztDQUNSLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxLQUFvQixFQUFFLFVBQXlCLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUVqSixNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLElBQVksRUFBRSxLQUFVLEVBQUUsRUFBRTtJQUMzRCxRQUFRLElBQUksRUFBRSxDQUFDO1FBQ1gsS0FBSyxNQUFNLENBQUM7UUFDWixLQUFLLE1BQU0sQ0FBQztRQUNaLEtBQUssZUFBZSxD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b250ZW50IjpbImltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5pbXBvcnQgeyBDdXJyZW5jeVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBmb3JtYXRDUEZDTlBKV2l0aE1hc2sgfSBmcm9tICcuL2NwZi1jbnBqLWZvcm1hdHRlcic7XHJcbmltcG9ydCB7IEFncm9TdHJpbmdVdGlscyB9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9hZ3JvLXN0cmluZy11dGlscy5jbGFzcyc7XHJcblxyXG5jb25zdCBudW1iZXJUeXBlcyA9IFsnaW50ZWdlcicsICdkb3VibGUnXTtcclxuY29uc3QgbnVtYmVyUGF0dGVybiA9IC9eXFxkK1xcYiQvO1xyXG5jb25zdCBZWVlZX01NX0REX0ZPUk1BVCA9ICdZWVlZLU1NLUREJztcclxuY29uc3QgTE9PS1VQX0RPQ1VNRU5UX0ZJRUxEUyA9IFtcclxuICAgICdjbnBDcGYnLFxyXG4gICAgJ251bUNnYycsXHJcbiAgICAnZTAwMXBlcy5jbnBDcGYnLFxyXG4gICAgJ2UwMDFwZXMubnVtQ2djJyxcclxuICAgICdlMDAxcGVzLmNwZkNucGonLFxyXG4gICAgJ2UwMDFwZXMuY3BmJyxcclxuICAgICdlMDAxcGVzLmNucGonLFxyXG4gICAgJ2UwMDFwZXMuY2djJyxcclxuICAgICdlMDAxcGVzLmNwZkNnYycsXHJcbiAgICAnZTAwMXBlcy5jZ2NDcGYnLFxyXG4gICAgJ2NwZidcclxuXTtcclxuXHJcbmV4cG9ydCBjb25zdCBtZXJnZVVuaXF1ZSA9IChhcnJheTogQXJyYXk8c3RyaW5nPiwgb3RoZXJBcnJheTogQXJyYXk8c3RyaW5nPikgPT4gYXJyYXkuY29uY2F0KG90aGVyQXJyYXkuZmlsdGVyKChpdGVtKSA9PiAhYXJyYXkuaW5jbHVkZXMoaXRlbSkpKTtcclxuXHJcbmV4cG9ydCBjb25zdCBnZXRUeXBlSW5mb3JtYXRpb24gPSAodHlwZTogc3RyaW5nLCB2YWx1ZTogYW55KSA9PiB7XHJcbiAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgICBjYXNlICd0aW1lJzpcclxuICAgICAgICBjYXNlICdkYXRlJzpcclxuICAgICAgICBjYXNlICdsb2NhbERhdGVUaW1lJzpcclxuICAgICAgICBjYXNlICdkYXRlVGltZSc6XHJcbiAgICAgICAgICAgIHJldHVybiB7IGlzVmFsaWRWYWx1ZTogZmFsc2UsIHR5cGVFeGlzdHM6IHRydWUgfTtcclxuICAgICAgICBjYXNlICdpbnRlZ2VyJzpcclxuICAgICAgICBjYXNlICdkb3VibGUnOlxyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgaXNWYWxpZFZhbHVlOiB2YWx1ZS5tYXRjaChudW1iZXJQYXR0ZXJuKSxcclxuICAgICAgICAgICAgICAgIHR5cGVFeGlzdHM6IG51bWJlclR5cGVzLmluY2x1ZGVzKHR5cGUpLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICBpc1ZhbGlkVmFsdWU6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgdHlwZUV4aXN0czogZmFsc2UsXHJcbiAgICAgICAgICAgIH07XHJcbiAgICB9XHJcbn07XHJcblxyXG5cclxuXHJcblxyXG5leHBvcnQgY29uc3QgZ2V0U3VnZ2VzdGlvblZhbHVlID0gKGRpc3BsYXlGaWVsZHM6IHN0cmluZ1tdLCBvd25lckVudGl0eTogc3RyaW5nLCB2YWx1ZTogYW55LCBzZXBhcmF0b3I6IHN0cmluZykgPT4ge1xyXG4gICAgaWYgKCFkaXNwbGF5RmllbGRzIHx8IGRpc3BsYXlGaWVsZHMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgcmV0dXJuICcnO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGRpc3BsYXlGaWVsZHNcclxuICAgICAgICAubWFwKChmaWVsZCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoTE9PS1VQX0RPQ1VNRU5UX0ZJRUxEUy5pbmNsdWRlcyhmaWVsZCkpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmb3JtYXRDUEZDTlBKV2l0aE1hc2soZ2V0UHJvcCh2YWx1ZSwgYCR7b3duZXJFbnRpdHl9LiR7ZmllbGR9YCkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBnZXRQcm9wKHZhbHVlLCBgJHtvd25lckVudGl0eX0uJHtmaWVsZH1gKTtcclxuICAgICAgICB9KVxyXG4gICAgICAgIC5maWx0ZXIoZiA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiBBZ3JvU3RyaW5nVXRpbHMuaXNWYWxpZChTdHJpbmcoZikpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmpvaW4oc2VwYXJhdG9yKTtcclxufTtcclxuXHJcbmNvbnN0IGJ1aWxkRW51bUNsYXVzZSA9IChuYW1lOiBzdHJpbmcsIHNlbGVjdGVkOiBhbnkpID0+IGAke25hbWV9IGVxICcke3NlbGVjdGVkfSdgO1xyXG5cclxuZXhwb3J0IGNvbnN0IGdldEVudW1RdWVyeSA9IChuYW1lOiBzdHJpbmcsIHZhbHVlOiBhbnksIG11bHRpcGxlID0gZmFsc2UpID0+IHtcclxuICAgIGlmIChtdWx0aXBsZSkge1xyXG4gICAgICAgIHJldHVybiBgKCR7dmFsdWUubWFwKChzZWxlY3RlZDogYW55KSA9PiBidWlsZEVudW1DbGF1c2UobmFtZSwgc2VsZWN0ZWQpKS5qb2luKCcgb3IgJyl9KWA7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYCR7bmFtZX0gZXEgJyR7dmFsdWV9J2A7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgY3JlYXRlRmlsdGVyU3RyaW5nID0gKGFueTogYW55LCB2YWx1ZTogYW55KSA9PiB7XHJcbiAgICBjb25zdCB7IG5hbWUsIHR5cGUsIG11bHRpcGxlIH0gPSBhbnk7XHJcbiAgICBpZiAodHlwZW9mIHZhbHVlID09ICdudW1iZXInKSB7XHJcbiAgICAgICAgcmV0dXJuIGAke25hbWV9IGVxICR7dmFsdWV9YDtcclxuICAgIH1cclxuXHJcbiAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgICBjYXNlICdkYXRlJzpcclxuICAgICAgICAgICAgcmV0dXJuIGAke25hbWV9IGVxICcke21vbWVudCh2YWx1ZSkuZm9ybWF0KFlZWVlfTU1fRERfRk9STUFUKX0nYDtcclxuICAgICAgICBjYXNlICd0aW1lJzpcclxuICAgICAgICAgICAgcmV0dXJuIGAke25hbWV9IGVxICcke21vbWVudCh2YWx1ZSkuZm9ybWF0KCdISDptbTpzcycpfSdgO1xyXG4gICAgICAgIGNhc2UgJ2RhdGVUaW1lJzpcclxuICAgICAgICAgICAgcmV0dXJuIGAke25hbWV9IGVxICcke21vbWVudCh2YWx1ZSkuZm9ybWF0KCl9J2A7XHJcbiAgICAgICAgY2FzZSAnbG9jYWxEYXRlVGltZSc6XHJcbiAgICAgICAgICAgIHJldHVybiBgJHtuYW1lfSBlcSAnJHttb21lbnQodmFsdWUpLmZvcm1hdCgnWVlZWS1NTS1ERFtUXUhIOm1tOnNzLlNTUycpfSdgO1xyXG4gICAgICAgIGNhc2UgJ2VudW0nOlxyXG4gICAgICAgICAgICByZXR1cm4gZ2V0RW51bVF1ZXJ5KG5hbWUsIHZhbHVlLCBtdWx0aXBsZSk7XHJcbiAgICAgICAgY2FzZSAnc3RyaW5nJzpcclxuICAgICAgICAgICAgcmV0dXJuIGB1cHBlcigke25hbWV9KSBsaWtlIHVwcGVyKCclJHt2YWx1ZS5yZXBsYWNlKC8nL2csIFwiJ1wiKX0lJylgO1xyXG4gICAgICAgIGNhc2UgJ2xvb2t1cCc6XHJcbiAgICAgICAgICAgIHJldHVybiBgJHtuYW1lfSBlcSAnJHt2YWx1ZS5pZH0nYDtcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICByZXR1cm4gYCR7bmFtZX0gZXEgJyR7dmFsdWV9J2A7XHJcbiAgICB9XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgY3JlYXRlRmlsdGVyVG9rZW5zID0gKGFueTogYW55LCB2YWx1ZTogYW55LCB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UpID0+IHtcclxuICAgIGNvbnN0IHsgbmFtZSwgdHlwZSwgbGFiZWwsIHNlYXJjaEZpZWxkcywgb3B0aW9ucyB9ID0gYW55O1xyXG4gICAgbGV0IGxhYmVsVmFsdWUgPSB2YWx1ZTtcclxuXHJcbiAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgICBjYXNlICdkYXRlJzpcclxuICAgICAgICAgICAgbGFiZWxWYWx1ZSA9IG1vbWVudCh2YWx1ZSkuZm9ybWF0KCdMJyk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ3RpbWUnOlxyXG4gICAgICAgICAgICBsYWJlbFZhbHVlID0gbW9tZW50KHZhbHVlKS5mb3JtYXQoJ0xUUycpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdsb2NhbERhdGVUaW1lJzpcclxuICAgICAgICBjYXNlICdkYXRlVGltZSc6XHJcbiAgICAgICAgICAgIGxhYmVsVmFsdWUgPSBtb21lbnQodmFsdWUpLmZvcm1hdCgnTCBMVFMnKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnbG9va3VwJzpcclxuICAgICAgICAgICAgbGFiZWxWYWx1ZSA9IHNlYXJjaEZpZWxkcy5tYXAoKGZpZWxkOiBhbnkpID0+IGdldFByb3AodmFsdWUsIGZpZWxkLm5hbWUpKS5qb2luKCcgLSAnKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnZW51bSc6XHJcbiAgICAgICAgICAgIGxhYmVsVmFsdWUgPSBvcHRpb25zLmZpbHRlcigob3B0aW9uOiBhbnkpID0+IG9wdGlvbi52YWx1ZSA9PT0gbGFiZWxWYWx1ZSlbMF0ubGFiZWw7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxyXG4gICAgICAgICAgICBpZiAodmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIGxhYmVsVmFsdWUgPSB0cmFuc2xhdGUuaW5zdGFudCgnYWdyby5hbmd1bGFyX2NvbXBvbmVudHMubG9va3VwX2xpc3RfZ3JpZF9ib29sZWFuX3RydWUnKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGxhYmVsVmFsdWUgPSB0cmFuc2xhdGUuaW5zdGFudCgnYWdyby5hbmd1bGFyX2NvbXBvbmVudHMubG9va3VwX2xpc3RfZ3JpZF9ib29sZWFuX2ZhbHNlJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHsgaWQ6IG5hbWUsIGxhYmVsOiBgJHtsYWJlbH06ICR7bGFiZWxWYWx1ZX1gIH07XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgcmVzb2x2ZVJlZnMgPSAocGF5bG9hZDogYW55KSA9PiB7XHJcbiAgICBjb25zdCBnZXREYXRhRnJvbVJlZiA9IChyZWY6IHN0cmluZywgcm9vdE9iajogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3QgcmVnZXggPSAvXFxbXCIoLio/KVwiXFxdL2c7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0OiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgICAgIGxldCBtYXRjaDtcclxuXHJcbiAgICAgICAgd2hpbGUgKChtYXRjaCA9IHJlZ2V4LmV4ZWMocmVmKSkgIT09IG51bGwpIHtcclxuICAgICAgICAgICAgcmVzdWx0LnB1c2gobWF0Y2hbMV0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdC5yZWR1Y2UoKGFjYywgcGFydCkgPT4gYWNjPy5bcGFydF0sIHJvb3RPYmopO1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCByZXNvbHZlID0gKG9iajogYW55LCByb290T2JqOiBhbnksIHZpc2l0ZWQgPSBuZXcgU2V0PGFueT4oKSkgPT4ge1xyXG4gICAgICAgIGlmIChvYmogPT09IG51bGwgfHwgdHlwZW9mIG9iaiAhPT0gJ29iamVjdCcgfHwgdmlzaXRlZC5oYXMob2JqKSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZpc2l0ZWQuYWRkKG9iaik7XHJcblxyXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KG9iaikpIHtcclxuICAgICAgICAgICAgb2JqLmZvckVhY2goKGl0ZW0pID0+IHJlc29sdmUoaXRlbSwgcm9vdE9iaiwgdmlzaXRlZCkpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKG9iaikuZm9yRWFjaCgoa2V5KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoa2V5ID09PSAnJHJlZicgJiYgb2JqW2tleV0pIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCByZWZQYXRoID0gb2JqW2tleV07XHJcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihvYmosIGdldERhdGFGcm9tUmVmKHJlZlBhdGgsIHJvb3RPYmopKTtcclxuICAgICAgICAgICAgICAgICAgICBkZWxldGUgb2JqW2tleV07XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUob2JqW2tleV0sIHJvb3RPYmosIHZpc2l0ZWQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIHJlc29sdmUocGF5bG9hZCwgcGF5bG9hZCk7XHJcblxyXG4gICAgcmV0dXJuIHBheWxvYWQ7XHJcbn07XHJcblxyXG5leHBvcnQgdHlwZSBSZWxhdGlvblRyYW5zZm9ybUNvbmZpZyA9IHtcclxuICAgIG9yaWdpbjogc3RyaW5nO1xyXG4gICAga2V5OiBzdHJpbmc7XHJcbiAgICB0cmFuc2Zvcm06ICh2YWx1ZTogYW55KSA9PiBhbnk7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgYXBwbHlSZWxhdGlvblRyYW5zZm9ybXMgPSAoZW50aXR5OiBhbnksIG9yaWdpbkVudGl0eTogc3RyaW5nIHwgdW5kZWZpbmVkLCByZWxhdGlvbnM6IFJlbGF0aW9uVHJhbnNmb3JtQ29uZmlnW10pID0+IHtcclxuICAgIHJlbGF0aW9ucy5mb3JFYWNoKCh7IG9yaWdpbiwga2V5LCB0cmFuc2Zvcm0gfSkgPT4ge1xyXG4gICAgICAgIGlmIChvcmlnaW5FbnRpdHkgIT09IG9yaWdpbiAmJiBlbnRpdHlba2V5XSkge1xyXG4gICAgICAgICAgICBlbnRpdHlba2V5XSA9IHRyYW5zZm9ybShlbnRpdHlba2V5XSk7XHJcbiAgICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIGVudGl0eTtcclxufTtcclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5jb25zdCBkYXRlUGF0dGVybllZWVlNTUREID0gL15cXGR7NH0tXFxkezJ9LVxcZHsyfSQvO1xyXG5cclxuXHJcbmV4cG9ydCBjb25zdCBpc1ZhbGlkRmlsdGVyID0gKHR5cGU6IGFueSwgdmFsdWU6IGFueSkgPT4ge1xyXG4gICAgY29uc3QgeyBpc1ZhbGlkVmFsdWUsIHR5cGVFeGlzdHMgfSA9IGdldFR5cGVJbmZvcm1hdGlvbih0eXBlLCB2YWx1ZSk7XHJcbiAgICByZXR1cm4gISh0eXBlRXhpc3RzICYmICFpc1ZhbGlkVmFsdWUpO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGdldFByb3AgPSAob2JqOiBhbnksIHBhdGg6IGFueSwgQVBQTFlfQ1BGQ05QSl9GSUxURVIgPSBmYWxzZSkgPT4ge1xyXG4gICAgbGV0IHIgPSBwYXRoLnNwbGl0KFwiLlwiKS5yZWR1Y2UoKHJlc3VsdDogYW55LCBwcm9wOiBhbnkpID0+IChyZXN1bHRbcHJvcF0gPT09IHVuZGVmaW5lZCA/IFwiXCIgOiByZXN1bHRbcHJvcF0pLCBvYmopO1xyXG4gICAgY29uc3Qgbm9ybWFsaXplZFBhdGggPSB0eXBlb2YgcGF0aCA9PT0gJ3N0cmluZycgPyBwYXRoIDogJyc7XHJcbiAgICBjb25zdCBmaWVsZE5hbWUgPSBub3JtYWxpemVkUGF0aC5zcGxpdCgnLicpLnBvcCgpID8/IG5vcm1hbGl6ZWRQYXRoO1xyXG5cclxuICAgIGlmIChkYXRlUGF0dGVybllZWVlNTURELnRlc3QocikpIHtcclxuICAgICAgICByID0gbW9tZW50KHIsIFlZWVlfTU1fRERfRk9STUFUKS5mb3JtYXQoXCJERC9NTS9ZWVlZXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICgoQVBQTFlfQ1BGQ05QSl9GSUxURVIgfHwgTE9PS1VQX0RPQ1VNRU5UX0ZJRUxEUy5pbmNsdWRlcyhmaWVsZE5hbWUpKSAmJiBBZ3JvU3RyaW5nVXRpbHMuaXNWYWxpZChyKSkge1xyXG4gICAgICAgIHJldHVybiBmb3JtYXRDUEZDTlBKV2l0aE1hc2socik7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHI7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgZ2V0TGFiZWxWYWx1ZVJlcXVlc3QgPSAoY29udGVudHM6IGFueVtdLCBkaXNwbGF5RmllbGRzOiBhbnlbXSwgQVBQTFlfQ1BGQ05QSl9GSUxURVIgPSBmYWxzZSkgPT4ge1xyXG4gICAgY29uc3QgciA9IGNvbnRlbnRzLm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3QgbnVtYmVyUGF0dGVyblRvVGVzdCA9IC9eXFxkKyhcXC5cXGR7MSwyfSk/JC87XHJcbiAgICAgICAgY29uc3QgZm9ybWF0dGVkSXRlbSA9IHsgLi4uaXRlbSB9O1xyXG5cclxuICAgICAgICAvLyBGb3JtYXQgY3VycmVuY3kgZmllbGRzICh2bHJDb3QpXHJcbiAgICAgICAgW1widmxyQ290XCJdLmZvckVhY2goKGZpZWxkOiBzdHJpbmcpID0+IHtcclxuICAgICAgICAgICAgaWYgKGZvcm1hdHRlZEl0ZW1bZmllbGRdICYmIG51bWJlclBhdHRlcm5Ub1Rlc3QudGVzdChmb3JtYXR0ZWRJdGVtW2ZpZWxkXSkpIHtcclxuICAgICAgICAgICAgICAgIGZvcm1hdHRlZEl0ZW1bZmllbGRdID0gcGFyc2VGbG9hdChmb3JtYXR0ZWRJdGVtW2ZpZWxkXSkudG9Mb2NhbGVTdHJpbmcoXCJwdC1CUlwiLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAyLFxyXG4gICAgICAgICAgICAgICAgICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0czogMlxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgTE9PS1VQX0RPQ1VNRU5UX0ZJRUxEUy5mb3JFYWNoKChmaWVsZE5hbWUpID0+IHtcclxuICAgICAgICAgICAgaWYgKGZvcm1hdHRlZEl0ZW1bZmllbGROYW1lXSAhPT0gbnVsbCAmJiBmb3JtYXR0ZWRJdGVtW2ZpZWxkTmFtZV0gIT09IHVuZGVmaW5lZCAmJiBmb3JtYXR0ZWRJdGVtW2ZpZWxkTmFtZV0gIT09ICcnKSB7XHJcbiAgICAgICAgICAgICAgICBmb3JtYXR0ZWRJdGVtW2ZpZWxkTmFtZV0gPSBmb3JtYXRDUEZDTlBKV2l0aE1hc2soU3RyaW5nKGZvcm1hdHRlZEl0ZW1bZmllbGROYW1lXSkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIC4uLmZvcm1hdHRlZEl0ZW0sXHJcbiAgICAgICAgICAgIGxhYmVsOiBkaXNwbGF5RmllbGRzLm1hcChmaWVsZCA9PiBnZXRQcm9wKGZvcm1hdHRlZEl0ZW0sIGZpZWxkLCBBUFBMWV9DUEZDTlBKX0ZJTFRFUikpLmpvaW4oXCIgLSBcIilcclxuICAgICAgICB9O1xyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIHI7XHJcbn07XHJcblxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdEZpbHRlcnMoZmlsdGVyczogYW55W10sIHZhbHVlOiBhbnksIHN0YXR1c0ZpbHRlcjogYm9vbGVhbiwgY29sdW1uTmFtZTogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gZmlsdGVyc1xyXG4gICAgICAgIC5maWx0ZXIoKHsgdHlwZSB9KSA9PiBpc1ZhbGlkRmlsdGVyKHR5cGUsIHZhbHVlKSlcclxuICAgICAgICAuZmlsdGVyKCh7IG5hbWUgfSkgPT4gbmFtZSAhPT0gXCJzdGF0dXNcIilcclxuICAgICAgICAubWFwKCh7IG5hbWUsIHR5cGUgfSkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gY29udmVydFZhbHVlQnlUeXBlKG5hbWUsIHZhbHVlLCB0eXBlKTtcclxuICAgICAgICB9KVxyXG4gICAgICAgIC5qb2luKFwiIG9yIFwiKVxyXG4gICAgICAgIC5jb25jYXQoYGFuZCAke2NvbHVtbk5hbWV9IGVxICdWQScgYCk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRGaWx0ZXJzQWR2YW5jZWQoXHJcbiAgICBmaWx0ZXJzOiBhbnlbXSxcclxuICAgIGZpbHRlckRhdGE6IGFueSxcclxuICAgIHN0YXR1c0ZpbHRlcjogYm9vbGVhbixcclxuICAgIGNvbHVtbk5hbWU6IHN0cmluZyxcclxuICAgIGUwNzBlbXBJZDogc3RyaW5nXHJcbikge1xyXG4gICAgcmV0dXJuIGZpbHRlcnNcclxuICAgICAgICAuZmlsdGVyKCh7IG5hbWUgfSkgPT4gZmlsdGVyRGF0YVtuYW1lXSAhPT0gdW5kZWZpbmVkICYmIGZpbHRlckRhdGFbbmFtZV0gIT09IFwiXCIpXHJcbiAgICAgICAgLm1hcCgoeyBuYW1lLCB0eXBlIH0pID0+IHtcclxuICAgICAgICAgICAgY29uc3QgdmFsdWU6IGFueSA9IGZpbHRlckRhdGFbbmFtZV07XHJcbiAgICAgICAgICAgIHJldHVybiBjb252ZXJ0VmFsdWVCeVR5cGUobmFtZSwgdmFsdWUsIHR5cGUpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmNvbmNhdChzdGF0dXNGaWx0ZXIgPyBbYCR7Y29sdW1uTmFtZX0gZXEgJ1ZBJyBhbmQgZTA3MGVtcCBlcSAnJHtlMDcwZW1wSWR9J2BdIDogW10pXHJcbiAgICAgICAgLmpvaW4oXCIgYW5kIFwiKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRWYWx1ZUJ5VHlwZShuYW1lOiBzdHJpbmcsIHZhbHVlOiBhbnksIHR5cGU6IGFueSk6IHN0cmluZyB7XHJcbiAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xyXG4gICAgICAgIHZhbHVlID0gXCJcIjtcclxuICAgIH1cclxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT0gXCJudW1iZXJcIikge1xyXG4gICAgICAgIHJldHVybiBgJHtuYW1lfSBlcSAke3ZhbHVlfWA7XHJcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdkYXRlJykge1xyXG4gICAgICAgIHJldHVybiBgJHtuYW1lfSBlcSAnJHttb21lbnQodmFsdWUpLmZvcm1hdChZWVlZX01NX0REX0ZPUk1BVCl9J2A7XHJcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICd0aW1lJykge1xyXG4gICAgICAgIHJldHVybiBgJHtuYW1lfSBlcSAnJHttb21lbnQodmFsdWUpLmZvcm1hdChcIkhIOm1tOnNzXCIpfSdgO1xyXG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnZGF0ZVRpbWUnKSB7XHJcbiAgICAgICAgcmV0dXJuIGAke25hbWV9IGVxICcke21vbWVudCh2YWx1ZSkuZm9ybWF0KCl9J2A7XHJcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgcmV0dXJuIGBjb250YWluaW5nKHVwcGVyKCR7bmFtZX0pLCB1cHBlcignJHtTdHJpbmcodmFsdWUpLnJlcGxhY2UoLycvZywgXCJcXFxcJ1wiKX0nKSlgO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gYCR7bmFtZX0gZXEgJyR7dmFsdWV9J2A7XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRGaWx0ZXJzV2l0aG91dFN0YXR1cyhmaWx0ZXJzOiBhbnlbXSwgdmFsdWU6IGFueSkge1xyXG4gICAgcmV0dXJuIGZpbHRlcnNcclxuICAgICAgICAuZmlsdGVyKCh7IHR5cGUgfSkgPT4gaXNWYWxpZEZpbHRlcih0eXBlLCB2YWx1ZSkpXHJcbiAgICAgICAgLmZpbHRlcigoeyBuYW1lIH0pID0+IG5hbWUgIT09IFwic3RhdHVzXCIpXHJcbiAgICAgICAgLm1hcCgoeyBuYW1lLCB0eXBlIH0pID0+IHtcclxuICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PSBcIm51bWJlclwiKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYCR7bmFtZX0gZXEgJHt2YWx1ZX1gO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdkYXRlJykge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke25hbWV9IGVxICcke21vbWVudCh2YWx1ZSkuZm9ybWF0KFlZWVlfTU1fRERfRk9STUFUKX0nYDtcclxuICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAndGltZScpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBgJHtuYW1lfSBlcSAnJHttb21lbnQodmFsdWUpLmZvcm1hdChcIkhIOm1tOnNzXCIpfSdgO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdkYXRlVGltZScpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBgJHtuYW1lfSBlcSAnJHttb21lbnQodmFsdWUpLmZvcm1hdCgpfSdgO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYGNvbnRhaW5pbmcodXBwZXIoJHtuYW1lfSksIHVwcGVyKCcke3ZhbHVlLnJlcGxhY2UoLycvZywgXCJcXFxcJ1wiKX0nKSlgO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke25hbWV9IGVxICcke3ZhbHVlfSdgO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgICAuam9pbihcIiBhbmQgXCIpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gcm91bmRUb1RocmVlKG51bTogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgIHJldHVybiBNYXRoLnJvdW5kKG51bSAqIDEwMDApIC8gMTAwMDtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNhbGN1bGF0ZUFkanVzdGVkUGVyY2VudGFnZXNBbmRXZWlnaHRzKHRvdGFsOiBudW1iZXIsIG1heFBlcmNlbnRhZ2U6IG51bWJlciwgbWF4V2VpZ2h0OiBudW1iZXIpIHtcclxuICAgIGNvbnN0IGNhbGN1bGF0ZWRQZXJjZW50YWdlcyA9IGNhbGN1bGF0ZUFkanVzdGVkUGVyY2VudGFnZXModG90YWwsIG1heFBlcmNlbnRhZ2UpO1xyXG4gICAgY29uc3QgY2FsY3VsYXRlZFdlaWdodHMgPSBjYWxjdWxhdGVBZGp1c3RlZFdlaWdodHMoY2FsY3VsYXRlZFBlcmNlbnRhZ2VzLCBtYXhXZWlnaHQpO1xyXG4gICAgcmV0dXJuIHsgY2FsY3VsYXRlZFBlcmNlbnRhZ2VzLCBjYWxjdWxhdGVkV2VpZ2h0cyB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY2FsY3VsYXRlQWRqdXN0ZWRQZXJjZW50YWdlcyh0b3RhbDogbnVtYmVyLCBtYXhQZXJjZW50YWdlOiBudW1iZXIpIHtcclxuICAgIGNvbnN0IGJhc2VQZXJjZW50YWdlID0gcm91bmRUb1RocmVlKG1heFBlcmNlbnRhZ2UgLyB0b3RhbCk7XHJcbiAgICBjb25zdCBjYWxjdWxhdGVkUGVyY2VudGFnZXMgPSBBcnJheSh0b3RhbCkuZmlsbChiYXNlUGVyY2VudGFnZSk7XHJcbiAgICByZXR1cm4gYWRqdXN0VmFsdWVzSWZOZWNlc3NhcnkoY2FsY3VsYXRlZFBlcmNlbnRhZ2VzLCBtYXhQZXJjZW50YWdlKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNhbGN1bGF0ZUFkanVzdGVkV2VpZ2h0cyhjYWxjdWxhdGVkUGVyY2VudGFnZXM6IG51bWJlcltdLCBtYXhXZWlnaHQ6IG51bWJlcikge1xyXG4gICAgY29uc3QgdG90YWxQZXJjZW50YWdlID0gY2FsY3VsYXRlZFBlcmNlbnRhZ2VzLnJlZHVjZSgoc3VtLCBwZXJjZW50YWdlKSA9PiBzdW0gKyBwZXJjZW50YWdlLCAwKTtcclxuICAgIGNvbnN0IGNhbGN1bGF0ZWRXZWlnaHRzID0gY2FsY3VsYXRlZFBlcmNlbnRhZ2VzLm1hcChwZXJjZW50YWdlID0+XHJcbiAgICAgICAgcm91bmRUb1RocmVlKChwZXJjZW50YWdlIC8gMTAwKSAqIG1heFdlaWdodClcclxuICAgICk7XHJcblxyXG4gICAgaWYgKHJvdW5kVG9UaHJlZSh0b3RhbFBlcmNlbnRhZ2UpID09PSAxMDApIHtcclxuICAgICAgICByZXR1cm4gYWRqdXN0VmFsdWVzSWZOZWNlc3NhcnkoY2FsY3VsYXRlZFdlaWdodHMsIG1heFdlaWdodCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGNhbGN1bGF0ZWRXZWlnaHRzO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gYWRqdXN0VmFsdWVzSWZOZWNlc3NhcnkodmFsdWVzOiBudW1iZXJbXSwgdG90YWw6IG51bWJlcik6IG51bWJlcltdIHtcclxuICAgIGNvbnN0IGFkanVzdGVkVmFsdWVzID0gdmFsdWVzLnNsaWNlKCk7XHJcbiAgICBjb25zdCBjdXJyZW50VG90YWwgPSBhZGp1c3RlZFZhbHVlcy5yZWR1Y2UoKHN1bSwgdmFsdWUpID0+IHN1bSArIHZhbHVlLCAwKTtcclxuICAgIGNvbnN0IGRpZmZlcmVuY2UgPSByb3VuZFRvVGhyZWUodG90YWwgLSBjdXJyZW50VG90YWwpO1xyXG5cclxuICAgIGlmIChkaWZmZXJlbmNlICE9PSAwKSB7XHJcbiAgICAgICAgYWRqdXN0ZWRWYWx1ZXNbMF0gKz0gZGlmZmVyZW5jZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gYWRqdXN0ZWRWYWx1ZXM7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRCcmxDdXJyZW5jeShjdXJyZW5jeVBpcGU6IEN1cnJlbmN5UGlwZSwgdmFsdWU6IG51bWJlcik6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQge1xyXG4gICAgaWYgKCFjdXJyZW5jeVBpcGUgfHwgIXZhbHVlKSB7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGN1cnJlbmN5UGlwZVxyXG4gICAgICAgIC50cmFuc2Zvcm0odmFsdWUsIFwiQlJMXCIsIFwic3ltYm9sXCIsIGAxLjItMmApXHJcbiAgICAgICAgPy5yZXBsYWNlKFwiLlwiLCBcIiNcIilcclxuICAgICAgICAucmVwbGFjZShcIixcIiwgXCIuXCIpXHJcbiAgICAgICAgLnJlcGxhY2UoXCIjXCIsIFwiLFwiKVxyXG4gICAgICAgIC5yZXBsYWNlKC9eKC57Mn0pLywgXCIkMSBcIik7XHJcbn1cclxuXHJcblxyXG4iXX0=
|