dmencu 0.1.15 → 0.1.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client/client/client.js +7 -3
- package/dist/server/server/app-dmencu.d.ts +89 -33
- package/dist/server/server/app-dmencu.js +27 -32
- package/dist/server/server/procedures-dmencu.js +6 -2
- package/dist/server/server/table-control_campo.js +2 -1
- package/dist/server/server/types-dmencu.js +6 -2
- package/dist/unlogged/unlogged/render-formulario.js +1 -1
- package/package.json +2 -2
|
@@ -17,6 +17,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
17
17
|
}
|
|
18
18
|
})(function (require, exports) {
|
|
19
19
|
"use strict";
|
|
20
|
+
var _a, _b;
|
|
20
21
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
21
22
|
const js_to_html_1 = require("js-to-html");
|
|
22
23
|
const redux_formulario_1 = require("../unlogged/redux-formulario");
|
|
@@ -26,6 +27,9 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
26
27
|
//TODO GENERALIZAR
|
|
27
28
|
const TAREA_DEFAULT = 'encu';
|
|
28
29
|
const OPERATIVO_DEFAULT = 'PREJU_2022';
|
|
30
|
+
//quita bootstrap del head para que no rompa los estilos de BEPlus (solo se usa bootstrap en el form)
|
|
31
|
+
var linkNode = document.querySelectorAll('[href="css/bootstrap.min.css"]');
|
|
32
|
+
(_b = (_a = linkNode[0]) === null || _a === void 0 ? void 0 : _a.parentNode) === null || _b === void 0 ? void 0 : _b.removeChild(linkNode[0]);
|
|
29
33
|
function consistir_filtro(tarea, rea_tem, rea) {
|
|
30
34
|
return tarea ? rea_tem : rea;
|
|
31
35
|
}
|
|
@@ -62,12 +66,12 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
62
66
|
],
|
|
63
67
|
autoproced: true,
|
|
64
68
|
mainAction: (params) => __awaiter(void 0, void 0, void 0, function* () {
|
|
65
|
-
var
|
|
69
|
+
var _c;
|
|
66
70
|
// antes: abrirDirecto
|
|
67
71
|
var { operativo, encuesta, tarea } = params;
|
|
68
72
|
var estructura = (0, bypass_formulario_1.getEstructura)();
|
|
69
73
|
var carga = yield my.ajax.dm_forpkraiz_cargar({ operativo, vivienda: encuesta, tarea });
|
|
70
|
-
if (!estructura || ((
|
|
74
|
+
if (!estructura || ((_c = estructura.timestamp) !== null && _c !== void 0 ? _c : 0) < carga.timestampEstructura || estructura.operativo != operativo || my.config.config.devel) {
|
|
71
75
|
estructura = yield (0, redux_formulario_1.traerEstructura)({ operativo });
|
|
72
76
|
(0, abrir_formulario_1.cargarEstructura)(estructura);
|
|
73
77
|
}
|
|
@@ -369,4 +373,4 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
369
373
|
return [].concat.apply([], arrays);
|
|
370
374
|
}
|
|
371
375
|
});
|
|
372
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NsaWVudC9jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFBQSwyQ0FBZ0M7SUFDaEMsbUVBQTZEO0lBSTdELGtDQUFrQztJQUNsQyxxRUFBb0Y7SUFDcEYsbUVBQXlJO0lBRXpJLGtCQUFrQjtJQUVsQixNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUM7SUFDN0IsTUFBTSxpQkFBaUIsR0FBRyxZQUFZLENBQUM7SUFFdkMsU0FBUyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLEdBQUc7UUFDekMsT0FBTyxLQUFLLENBQUEsQ0FBQyxDQUFBLE9BQU8sQ0FBQSxDQUFDLENBQUEsR0FBRyxDQUFDO0lBQzdCLENBQUM7SUFBQSxDQUFDO0lBRUYsSUFBSSxNQUFNLEdBQU8sSUFBSSxDQUFDO0lBRXRCLFNBQVMsVUFBVSxDQUFDLEdBQVU7UUFDMUIsT0FBTyxpQkFBSSxDQUFDLElBQUksQ0FBQyxFQUFDLEtBQUssRUFBQyxRQUFRLEVBQUMsRUFBQyxFQUFFLEdBQUMsQ0FBQyxHQUFHLGFBQUgsR0FBRyxjQUFILEdBQUcsR0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBQ25ELENBQUM7SUFFRCxJQUFJLGtCQUFrQixHQUFHLENBQU8sWUFBb0MsRUFBRSxFQUFFO1FBQ3BFLElBQUksRUFBQyxrQkFBa0IsRUFBQyxHQUFHLFlBQVksQ0FBQTtRQUNuQyxJQUFHLGtCQUFrQixJQUFFLE9BQU8sRUFBQztZQUMzQixFQUFFLENBQUMsV0FBVyxDQUFDLHFDQUFrQixFQUFFLFlBQVksQ0FBQyxDQUFBO1NBQ25EO2FBQUk7WUFDRCxFQUFFLENBQUMsYUFBYSxDQUFDLHFDQUFrQixFQUFFLFlBQVksQ0FBQyxDQUFBO1NBQ3JEO1FBQ0QsRUFBRSxDQUFDLGFBQWEsQ0FBQyxvQ0FBaUIsRUFBRSxrQkFBa0IsQ0FBQyxDQUFBO0lBQy9E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by1odG1sXCI7XHJcbmltcG9ydCB7dHJhZXJFc3RydWN0dXJhfSBmcm9tIFwiLi4vdW5sb2dnZWQvcmVkdXgtZm9ybXVsYXJpb1wiO1xyXG5pbXBvcnQgeyBDYXNvU3RhdGUsICBcclxuICAgIElkRm9ybXVsYXJpbywgRGF0b3NCeVBhc3NQZXJzaXN0aWJsZXMsIElkRW5jLCBJZE9wZXJhdGl2bywgSWRUYXJlYSxcclxufSBmcm9tIFwiLi4vdW5sb2dnZWQvdGlwb3NcIjtcclxuaW1wb3J0ICogYXMgbGlrZUFyIGZyb20gXCJsaWtlLWFyXCI7XHJcbmltcG9ydCB7Z2V0RXN0cnVjdHVyYSwgc2V0UGVyc2lzdGlyRGF0b3NCeVBhc3N9IGZyb20gXCIuLi91bmxvZ2dlZC9ieXBhc3MtZm9ybXVsYXJpb1wiXHJcbmltcG9ydCB7Y2FyZ2FyRXN0cnVjdHVyYSwgY2FyZ2FySG9qYURlUnV0YSwgR0xPVkFSX0RBVE9TQllQQVNTLCBHTE9WQVJfRVNUUlVDVFVSQSwgR0xPVkFSX01PRE9CWVBBU1N9IGZyb20gXCIuLi91bmxvZ2dlZC9hYnJpci1mb3JtdWxhcmlvXCJcclxuXHJcbi8vVE9ETyBHRU5FUkFMSVpBUlxyXG5cclxuY29uc3QgVEFSRUFfREVGQVVMVCA9ICdlbmN1JztcclxuY29uc3QgT1BFUkFUSVZPX0RFRkFVTFQgPSAnUFJFSlVfMjAyMic7XHJcblxyXG5mdW5jdGlvbiBjb25zaXN0aXJfZmlsdHJvKHRhcmVhLCByZWFfdGVtLCByZWEpe1xyXG4gICAgcmV0dXJuIHRhcmVhP3JlYV90ZW06cmVhO1xyXG59O1xyXG5cclxudmFyIHRhcmVhczphbnkgPSBudWxsO1xyXG5cclxuZnVuY3Rpb24gaHRtbE51bWVybyhudW06bnVtYmVyKXtcclxuICAgIHJldHVybiBodG1sLnNwYW4oe2NsYXNzOidudW1lcm8nfSwnJysobnVtPz8nJykpXHJcbn1cclxuXHJcbnZhciBwZXJzaXN0aXJFbk1lbW9yaWEgPSBhc3luYyAocGVyc2lzdGVudGVzOkRhdG9zQnlQYXNzUGVyc2lzdGlibGVzKSA9PiB7XHJcbiAgICB2YXIge21vZG9BbG1hY2VuYW1pZW50b30gPSBwZXJzaXN0ZW50ZXNcclxuICAgICAgICBpZihtb2RvQWxtYWNlbmFtaWVudG89PSdsb2NhbCcpe1xyXG4gICAgICAgICAgICBteS5zZXRMb2NhbFZhcihHTE9WQVJfREFUT1NCWVBBU1MsIHBlcnNpc3RlbnRlcylcclxuICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgbXkuc2V0U2Vzc2lvblZhcihHTE9WQVJfREFUT1NCWVBBU1MsIHBlcnNpc3RlbnRlcylcclxuICAgICAgICB9XHJcbiAgICAgICAgbXkuc2V0U2Vzc2lvblZhcihHTE9WQVJfTU9ET0JZUEFTUywgbW9kb0FsbWFjZW5hbWllbnRvKVxyXG59XHJcblxyXG5hc3luYyBmdW5jdGlvbiBzaW5jcm9uaXphckRhdG9zKHBlcnNpc3RlbnRlczpEYXRvc0J5UGFzc1BlcnNpc3RpYmxlc3xudWxsKXtcclxuICAgIHZhciBkYXRvcyA9IGF3YWl0IG15LmFqYXguZG1fc2luY3Jvbml6YXIoe3BlcnNpc3RlbnRlc30pO1xyXG4gICAgdmFyIG9wZXJhdGl2byA9IGRhdG9zLm9wZXJhdGl2bztcclxuICAgIHBlcnNpc3RpckVuTWVtb3JpYSh7Li4uZGF0b3MsIG1vZG9BbG1hY2VuYW1pZW50bzonbG9jYWwnfSk7XHJcbiAgICB2YXIgZXN0cnVjdHVyYSA9IGF3YWl0IHRyYWVyRXN0cnVjdHVyYSh7b3BlcmF0aXZvfSlcclxuICAgIG15LnNldExvY2FsVmFyKEdMT1ZBUl9FU1RSVUNUVVJBLCBlc3RydWN0dXJhKTtcclxuICAgIHJldHVybiBkYXRvcztcclxufVxyXG5cclxubXlPd24ud1NjcmVlbnMuYWJyaXJfZW5jdWVzdGE9e1xyXG4gICAgcGFyYW1ldGVyczpbXHJcbiAgICAgICAge25hbWU6J29wZXJhdGl2bycgLCB0eXBlTmFtZTondGV4dCcsIGRlZmF1bHRWYWx1ZTpPUEVSQVRJVk9fREVGQVVMVCwgcmVmZXJlbmNlczonb3BlcmF0aXZvcyd9LFxyXG4gICAgICAgIHtuYW1lOid0YXJlYScgICAgICwgdHlwZU5hbWU6J3RleHQnLCBkZWZhdWx0VmFsdWU6VEFSRUFfREVGQVVMVCwgcmVmZXJlbmNlczogJ3RhcmVhcyd9LFxyXG4gICAgICAgIHtuYW1lOidlbmN1ZXN0YScgICwgdHlwZU5hbWU6J2ludGVnZXInLCBkZWZhdWx0VmFsdWU6MTMwMDMxfVxyXG4gICAgXSxcclxuICAgIGF1dG9wcm9jZWQ6dHJ1ZSxcclxuICAgIG1haW5BY3Rpb246YXN5bmMgKHBhcmFtcyk9PntcclxuICAgICAgICAvLyBhbnRlczogYWJyaXJEaXJlY3RvXHJcbiAgICAgICAgdmFyIHtvcGVyYXRpdm8sIGVuY3Vlc3RhLCB0YXJlYX0gPSBwYXJhbXM7XHJcbiAgICAgICAgdmFyIGVzdHJ1Y3R1cmEgPSBnZXRFc3RydWN0dXJhKCk7XHJcbiAgICAgICAgdmFyIGNhcmdhID0gYXdhaXQgbXkuYWpheC5kbV9mb3Jwa3JhaXpfY2FyZ2FyKHtvcGVyYXRpdm8sIHZpdmllbmRhOmVuY3Vlc3RhLCB0YXJlYX0pIGFzIERhdG9zQnlQYXNzUGVyc2lzdGlibGVzO1xyXG4gICAgICAgIGlmKCFlc3RydWN0dXJhIHx8IChlc3RydWN0dXJhLnRpbWVzdGFtcD8/MCkgPCBjYXJnYS50aW1lc3RhbXBFc3RydWN0dXJhISB8fCBlc3RydWN0dXJhLm9wZXJhdGl2byAhPSBvcGVyYXRpdm8gfHwgbXkuY29uZmlnLmNvbmZpZy5kZXZlbCl7XHJcbiAgICAgICAgICAgIGVzdHJ1Y3R1cmEgPSBhd2FpdCB0cmFlckVzdHJ1Y3R1cmEoe29wZXJhdGl2b30pXHJcbiAgICAgICAgICAgIGNhcmdhckVzdHJ1Y3R1cmEoZXN0cnVjdHVyYSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgIHZhciBzdGF0ZTpDYXNvU3RhdGUgPSB7fVxyXG4gICAgICAgIGluaWNpYWxpemFyU3RhdGUoc3RhdGUpO1xyXG4gICAgICAgIHZhciBmb3JQa1JhaXogPSB7Zm9ybXVsYXJpbzpjYXJnYS5pbmZvcm1hY2lvbkhkcltlbmN1ZXN0YSBhcyBJZEVuY10udGFyZWEubWFpbl9mb3JtLCB2aXZpZW5kYTplbmN1ZXN0YX07XHJcbiAgICAgICAgc2V0UGVyc2lzdGlyRGF0b3NCeVBhc3MoXHJcbiAgICAgICAgICAgIGFzeW5jIGZ1bmN0aW9uIHBlcnNpc3RpckRhdG9zQnlQYXNzRW5CYXNlRGVEYXRvcyhwZXJzaXN0ZW50ZXM6RGF0b3NCeVBhc3NQZXJzaXN0aWJsZXMpe1xyXG4gICAgICAgICAgICAgICAgaWYocGVyc2lzdGVudGVzLnNvbG9MZWN0dXJhKXtcclxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJFc3TDoSBpbnRlbnRhbmRvIG1vZGlmaWNhciB1bmEgZW5jdWVzdGEgYWJpZXJ0YSBjb21vIHNvbG8gbGVjdHVyYSwgbm8gc2UgZ3VhcmRhcm9uIGxvcyBjYW1iaW9zXCIpXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBhd2FpdCBteS5hamF4LmRtX2ZvcnBrcmFpel9kZXNjYXJnYXIoe29wZXJhdGl2bywgcGVyc2lzdGVudGVzfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICApXHJcbiAgICAgICAgaWYoIWNhcmdhLnJlc3B1ZXN0YXMudml2aWVuZGFzW2ZvclBrUmFpei52aXZpZW5kYSFdKXtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBObyBzZSBlbmN1ZW50cmEgbGEgdml2aWVuZGEgJHtmb3JQa1JhaXoudml2aWVuZGEhfWApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXJnYXJIb2phRGVSdXRhKHsuLi5jYXJnYSwgbW9kb0FsbWFjZW5hbWllbnRvOidzZXNzaW9uJ30pO1xyXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICBkZXNwbGVnYXJGb3JtdWxhcmlvQWN0dWFsKHtvcGVyYXRpdm8sIG1vZG9EZW1vOmZhbHNlLCBmb3JQa1JhaXp9KTtcclxuICAgIH1cclxufVxyXG5cclxudmFyIG1vc3RyYXJJbmZvTG9jYWwgPSAoZGl2QXZpc29TaW5jcm86SFRNTERpdkVsZW1lbnQsIHRpdHVsbzpzdHJpbmcsIG5yb1NpbmNybzpudW1iZXJ8bnVsbCwgbW9zdHJhckxpbmtIZHI6IGJvb2xlYW4pPT57XHJcbiAgICBsZXQgZGF0b3NCeVBhc3MgPSBteS5nZXRMb2NhbFZhcihHTE9WQVJfREFUT1NCWVBBU1MpO1xyXG4gICAgaWYoZGF0b3NCeVBhc3Mpe1xyXG4gICAgICAgIGRpdkF2aXNvU2luY3JvLmFwcGVuZChodG1sLmRpdih7aWQ6J2F2aXNvLXNpbmNybyd9LCBbXHJcbiAgICAgICAgICAgIG5yb1NpbmNybz9odG1sLnAoW1wiTsO6bWVybyBkZSBzaW5jcm9uaXphY2nDs246IFwiLCBodG1sLmIoXCJcIitucm9TaW5jcm8udG9TdHJpbmcoKSldKTpudWxsLFxyXG4gICAgICAgICAgICBodG1sLmg0KHRpdHVsbyksXHJcbiAgICAgICAgICAgIGh0bWwucChbaHRtbE51bWVybyhsaWtlQXIoZGF0b3NCeVBhc3MuY2FyZ2FzKS5hcnJheSgpLmxlbmd0aCksJyBhcmVhczogJyxsaWtlQXIoZGF0b3NCeVBhc3MuY2FyZ2FzKS5rZXlzKCkuam9pbignLCAnKV0pLFxyXG4gICAgICAgICAgICBodG1sLnAoW2h0bWxOdW1lcm8obGlrZUFyKGRhdG9zQnlQYXNzLnJlc3B1ZXN0YXMudml2aWVuZGFzKS5hcnJheSgpLmxlbmd0aCksJyB2aXZpZW5kYXMnXSksXHJcbiAgICAgICAgICAgIG1vc3RyYXJMaW5rSGRyP2h0bWwuYSh7aHJlZjonLi9jYW1wbyd9LFtodG1sLmIoJ0lSIEEgTEEgSE9KQSBERSBSVVRBJyldKTpudWxsXHJcbiAgICAgICAgXSkuY3JlYXRlKCkpO1xyXG4gICAgfWVsc2V7XHJcbiAgICAgICAgZGl2QXZpc29TaW5jcm8uYXBwZW5kQ2hpbGQoaHRtbC5kaXYoe2NsYXNzOidhdmlzbyd9LFtcclxuICAgICAgICAgICAgaHRtbC5oNCgnU2lzdGVtYSB2YWPDrW8nKSxcclxuICAgICAgICAgICAgaHRtbC5wKCdObyBoYXkgaW5mb3JtYWNpw7NuIGRlIGZvcm11bGFyaW9zJyksXHJcbiAgICAgICAgICAgIGh0bWwucCgnTm8gaGF5IGluZm9ybWFjacOzbiBkZSB2aXZpZW5kYXMnKVxyXG4gICAgICAgIF0pLmNyZWF0ZSgpKTtcclxuICAgIH1cclxufVxyXG52YXIgcHJvY2VkZXJTaW5jcm9GdW4gPSBhc3luYyAoYnV0dG9uOkhUTUxCdXR0b25FbGVtZW50LCBkaXZBdmlzb1NpbmNybzpIVE1MRGl2RWxlbWVudCk9PntcclxuICAgIGJ1dHRvbi5kaXNhYmxlZD10cnVlO1xyXG4gICAgYnV0dG9uLmNsYXNzTmFtZT0nZG93bmxvYWQtZG0tYnV0dG9uJztcclxuICAgIGRpdkF2aXNvU2luY3JvLmlubmVySFRNTD0nJztcclxuICAgIHRyeXtcclxuICAgICAgICB2YXIgZGF0b3NCeVBhc3M6RGF0b3NCeVBhc3NQZXJzaXN0aWJsZXMgPSBteS5nZXRMb2NhbFZhcihHTE9WQVJfREFUT1NCWVBBU1MpO1xyXG4gICAgICAgIHZhciBkYXRvcyA9IGF3YWl0IHNpbmNyb25pemFyRGF0b3MoZGF0b3NCeVBhc3MpO1xyXG4gICAgICAgIG1vc3RyYXJJbmZvTG9jYWwoZGl2QXZpc29TaW5jcm8sICdkYXRvcyByZWNpYmlkb3MnLCBkYXRvcy5udW1fc2luY3JvLCB0cnVlKVxyXG4gICAgfWNhdGNoKGVycil7XHJcbiAgICAgICAgYWxlcnRQcm9taXNlKGVyci5tZXNzYWdlKVxyXG4gICAgICAgIHRocm93IGVyclxyXG4gICAgfWZpbmFsbHl7XHJcbiAgICAgICAgYnV0dG9uLmRpc2FibGVkPWZhbHNlO1xyXG4gICAgICAgIGJ1dHRvbi5jbGFzc05hbWU9J2Rvd25sb2FkLWRtLWJ1dHRvbi1jb250JztcclxuICAgIH1cclxufVxyXG5teU93bi53U2NyZWVucy5zaW5jcm9uaXphcl9kbT1hc3luYyBmdW5jdGlvbigpe1xyXG4gICAgdmFyIG1haW5MYXlvdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWFpbl9sYXlvdXQnKSE7XHJcbiAgICB2YXIgcHJvY2VkZXJCdXR0b24gPSBodG1sLmJ1dHRvbih7Y2xhc3M6J2Rvd25sb2FkLWRtLWJ1dHRvbi1jb250J30sJ3Byb2NlZGVyIOKHkicpLmNyZWF0ZSgpO1xyXG4gICAgdmFyIGRpdkF2aXNvU2luY3JvOkhUTUxEaXZFbGVtZW50PWh0bWwuZGl2KCkuY3JlYXRlKCk7XHJcbiAgICBtb3N0cmFySW5mb0xvY2FsKG1haW5MYXlvdXQgYXMgSFRNTERpdkVsZW1lbnQsICdpbmZvcm1hY2nDs24gYSB0cmFuc21pdGlyJywgbnVsbCwgZmFsc2UpXHJcbiAgICBtYWluTGF5b3V0LmFwcGVuZENoaWxkKHByb2NlZGVyQnV0dG9uKTtcclxuICAgIG1haW5MYXlvdXQuYXBwZW5kQ2hpbGQoZGl2QXZpc29TaW5jcm8pO1xyXG4gICAgcHJvY2VkZXJCdXR0b24ub25jbGljayA9ICgpPT5wcm9jZWRlclNpbmNyb0Z1bihwcm9jZWRlckJ1dHRvbiwgZGl2QXZpc29TaW5jcm8pXHJcbn07XHJcblxyXG5mdW5jdGlvbiBpbmljaWFsaXphclN0YXRlKHN0YXRlOiBDYXNvU3RhdGUpIHtcclxuICAgIHN0YXRlLm1vZG8gPSB7XHJcbiAgICAgICAgZGVtbzogZmFsc2VcclxuICAgIH07XHJcbiAgICAvLyBPSk8gc3RhdGUub3BjaW9uZXMgc2UgbW9kaWZpY2EgYWPDoSB5IGVuIG90cm8gbGFkbyBjb24gZXN0ZSBtaXNtbyBjYXJ0ZWxcclxuICAgIHN0YXRlLm9wY2lvbmVzID0ge1xyXG4gICAgICAgIGJpZW52ZW5pZG86IHRydWUsXHJcbiAgICAgICAgZm9yUGs6IG51bGwsXHJcbiAgICAgICAgcGlsYUZvclBrOiBbXSxcclxuICAgICAgICBtb2RvRGVzcGxpZWd1ZTogXCJyZWxldmFtaWVudG9cIixcclxuICAgICAgICBtb2RvRGlyZWN0bzogZmFsc2UsXHJcbiAgICAgICAgbW9kb0JvcnJhclJlc3B1ZXN0YTogbnVsbCxcclxuICAgICAgICBjb25DYW1wb09wY2lvbmVzOiBmYWxzZSxcclxuICAgICAgICBzYWx0b0F1dG9tYXRpY286IHRydWUsXHJcbiAgICB9O1xyXG4gICAgLy9AdHMtaWdub3JlXHJcbiAgICBzdGF0ZS5mZWVkYmFja1Jvd1ZhbGlkYXRvciA9IHt9O1xyXG59XHJcbi8qXHJcbmZ1bmN0aW9uIG1vc3RyYXJEYXRvc1BlcnNvbmEoaGF5RGF0b3M6Ym9vbGVhbiwgZGF0b3M6YW55LCBkaXZSZXN1bHQ6SFRNTERpdkVsZW1lbnQpe1xyXG4gICAgLy9UT0RPOiBFVkFMVUFSIFNJIENPTlZJRU5FIFRSQUVSTE8gREUgTEEgQkFTRVxyXG4gICAgdmFyIHRpcG9zRG9jdW1lbnRvID0gWydETkkgYXJnZW50aW5vJywgJ0RvY3VtZW50byBleHRyYW5qZXJvJywgJ05vIHRpZW5lIGRvY3VtZW50bycsICdPdHJvJ107XHJcbiAgICB2YXIgcGFpc0RvY3VtZW50byA9IFsnVXJ1Z3VheScsICdQYXJhZ3VheScsICdCcmFzaWwnLCAnQm9saXZpYScsICdDaGlsZScsICdQZXLDuicsICdWZW5lenVlbGEnLCAnT3RybyddO1xyXG4gICAgZGl2UmVzdWx0LmFwcGVuZENoaWxkKFxyXG4gICAgICAgIGhheURhdG9zP1xyXG4gICAgICAgICAgICBodG1sLmRpdih7Y2xhc3M6J2RhdG9zLXBlcnNvbmEtY2FyZ2FkYSd9LFtcclxuICAgICAgICAgICAgICAgIGh0bWwuaDIoXCJEYXRvcyBwZXJzb25hXCIpLFxyXG4gICAgICAgICAgICAgICAgaHRtbC5kaXYoe2NsYXNzOidmaWNoYS1wZXJzb25hJ30sW1xyXG4gICAgICAgICAgICAgICAgICAgIGh0bWwuZGl2KFtodG1sLmxhYmVsKCdBcGVsbGlkbzogJyksIGRhdG9zLmFwZWxsaWRvXSksXHJcbiAgICAgICAgICAgICAgICAgICAgaHRtbC5kaXYoW2h0bWwubGFiZWwoJ05vbWJyZXM6ICcpLCBkYXRvcy5ub21icmVzXSksXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0b3MudGlwb0RvY3VtZW50bz9cclxuICAgICAgICAgICAgICAgICAgICAgICAgaHRtbC5kaXYoW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaHRtbC5sYWJlbCgnVGlwbyBkb2N1bWVudG86ICcpLCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpcG9zRG9jdW1lbnRvW2RhdG9zLnRpcG9Eb2N1bWVudG8tMV0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRvcy50aXBvRG9jdW1lbnRvPT00ICYmIGRhdG9zLnRpcG9Eb2N1bWVudG9Fc3BlY2lmaWNhZG8/JyAoJysgZGF0b3MudGlwb0RvY3VtZW50b0VzcGVjaWZpY2FkbysnKSc6JycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF0pXHJcbiAgICAgICAgICAgICAgICAgICAgOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAnJyxcclxuICAgICAgICAgICAgICAgICAgICBkYXRvcy50aXBvRG9jdW1lbnRvPT0yICYmIGRhdG9zLnBhaXNEb2N1bWVudG8/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGh0bWwuZGl2KFtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0bWwubGFiZWwoJ1BhaXM6ICcpLCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhaXNEb2N1bWVudG9bZGF0b3MucGFpc0RvY3VtZW50by0xXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdG9zLnBhaXNEb2N1bWVudG89PTggJiYgZGF0b3MucGFpc0RvY3VtZW50b0VzcGVjaWZpY2Fkbz8nICgnK2RhdG9zLnBhaXNEb2N1bWVudG9Fc3BlY2lmaWNhZG8rJyknOicnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBdKVxyXG4gICAgICAgICAgICAgICAgICAgIDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgJycsXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0b3MudGlwb0RvY3VtZW50byE9MyAmJiBkYXRvcy50aXBvRG9jdW1lbnRvP2h0bWwuZGl2KFtodG1sLmxhYmVsKCdOwrogRG9jdW1lbnRvOiAnKSwgZGF0b3MuZG9jdW1lbnRvXSk6JycsXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0b3MuY2VsdWxhcj9odG1sLmRpdihbaHRtbC5sYWJlbCgnQ2VsLjogJyksIGRhdG9zLmNlbHVsYXJdKTonJyxcclxuICAgICAgICAgICAgICAgICAgICBkYXRvcy5lbWFpbD9odG1sLmRpdihbaHRtbC5sYWJlbCgnRW1haWw6ICcpLCBkYXRvcy5lbWFpbF0pOicnLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdG9zLnRlbGVmb25vQWx0ZXJuYXRpdm8/aHRtbC5kaXYoW2h0bWwubGFiZWwoJ1RlbC4gYWx0ZXJuYXRpdm86ICcpLCBkYXRvcy50ZWxlZm9ub0FsdGVybmF0aXZvXSk6JycsXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0b3Mub2JzZXJ2YWNpb25lcz9odG1sLmRpdihbaHRtbC5sYWJlbCgnT2JzZXJ2YWNpb25lczogJyksIGRhdG9zLm9ic2VydmFjaW9uZXNdKTonJyxcclxuICAgICAgICAgICAgICAgIF0pXHJcbiAgICAgICAgICAgIF0pLmNyZWF0ZSgpXHJcbiAgICAgICAgOlxyXG4gICAgICAgICAgICBodG1sLnAoXCJObyBzZSBlbmNvbnRyw7MgdW5hIGVuY3Vlc3RhIHBhcmEgbGEgZXRpcXVldGEgY2FyZ2FkYVwiKS5jcmVhdGUoKVxyXG4gICAgKVxyXG59XHJcbiovXHJcbm15T3duLmNsaWVudFNpZGVzLnRhcmVhc1RlbVJvdz17XHJcbiAgICB1cGRhdGU6KGRlcG90KT0+e1xyXG4gICAgICAgIHZhciB0YXJlYTonbmFkYSd8J3ByZWFzaWduYXInfCdjYXJnYXInfCdyZWFsaXphcid8J3ZlcmlmaWNhcic9J25hZGEnO1xyXG4gICAgICAgIHZhciByb3c9ZGVwb3Qucm93O1xyXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICB2YXIgaWRwZXI9bXkuY29uZmlnLmlkcGVyO1xyXG4gICAgICAgIHZhciBlc3BlcmFyOmJvb2xlYW49ZmFsc2U7XHJcbiAgICAgICAgaWYocm93LmhhYmlsaXRhZGEpe1xyXG4gICAgICAgICAgICBpZighcm93LmFzaWduYW50ZSAmJiAhcm93LmFzaWduYWRvKXtcclxuICAgICAgICAgICAgICAgIHRhcmVhPSdwcmVhc2lnbmFyJztcclxuICAgICAgICAgICAgICAgIGVzcGVyYXI9dHJ1ZTtcclxuICAgICAgICAgICAgfWVsc2UgaWYoIXJvdy5hc2lnbmFkbyB8fCAhcm93LmZlY2hhX2FzaWduYWNpb24gfHwgIXJvdy5vcGVyYWNpb24pe1xyXG4gICAgICAgICAgICAgICAgdGFyZWE9J2Nhcmdhcic7XHJcbiAgICAgICAgICAgICAgICBlc3BlcmFyPXJvdy5hc2lnbmFudGUhPWlkcGVyO1xyXG4gICAgICAgICAgICB9ZWxzZSBpZighcm93LnJlYSl7XHJcbiAgICAgICAgICAgICAgICB0YXJlYT0ncmVhbGl6YXInO1xyXG4gICAgICAgICAgICAgICAgZXNwZXJhcj1yb3cuYXNpZ25hZG8hPWlkcGVyO1xyXG4gICAgICAgICAgICB9ZWxzZSBpZighcm93LnZlcmlmaWNhZG8pe1xyXG4gICAgICAgICAgICAgICAgdGFyZWE9J3ZlcmlmaWNhcic7XHJcbiAgICAgICAgICAgICAgICBlc3BlcmFyPXJvdy5hc2lnbmFudGUhPWlkcGVyO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhciBwb25lcj17XHJcbiAgICAgICAgICAgIGFzaWduYW50ZSAgICAgICAgICA6dGFyZWE9PSdwcmVhc2lnbmFyJyAmJiAoZXNwZXJhcj8nZXNwZXJhcic6J25vcm1hbCcpLFxyXG4gICAgICAgICAgICBhc2lnbmFkbyAgICAgICAgICAgOnRhcmVhPT0nY2FyZ2FyJyAgICAgJiYgKGVzcGVyYXI/J2VzcGVyYXInOidub3JtYWwnKSxcclxuICAgICAgICAgICAgZmVjaGFfYXNpZ25hY2lvbiAgIDp0YXJlYT09J2NhcmdhcicgICAgICYmIChlc3BlcmFyPydlc3BlcmFyJzonbm9ybWFsJyksXHJcbiAgICAgICAgICAgIG9wZXJhY2lvbiAgICAgICAgICA6dGFyZWE9PSdjYXJnYXInICAgICAmJiAoZXNwZXJhcj8nZXNwZXJhcic6J25vcm1hbCcpLFxyXG4gICAgICAgICAgICBjYXJnYV9vYnNlcnZhY2lvbmVzOih0YXJlYT09J2NhcmdhcicgICAgIHx8IHRhcmVhPT0ncmVhbGl6YXInICYmICFyb3cuY2FyZ2FkbyAmJiAhcm93LnJlYSApICYmIHJvdy5hc2lnbmFudGU9PWlkcGVyICYmICdvcHRhdGl2bycsXHJcbiAgICAgICAgICAgIHZlcmlmaWNhZG8gICAgICAgICA6dGFyZWE9PSd2ZXJpZmljYXInICAmJiAoZXNwZXJhcj8nZXNwZXJhcic6J25vcm1hbCcpLFxyXG4gICAgICAgICAgICBvYnNfdmVyaWZpY2FkbyAgICAgOnRhcmVhPT0ndmVyaWZpY2FyJyAgJiYgKGVzcGVyYXI/J2VzcGVyYXInOidvcHRhdGl2bycpLFxyXG4gICAgICAgIH1cclxuICAgICAgICBsaWtlQXIocG9uZXIpLmZvckVhY2goKHZhbG9yLCBjYW1wbyk9PntcclxuICAgICAgICAgICAgaWYoIXZhbG9yKXtcclxuICAgICAgICAgICAgICAgIGRlcG90LnJvd0NvbnRyb2xzW2NhbXBvXS5yZW1vdmVBdHRyaWJ1dGUoJ215LW1hbmRhdG9yeScpXHJcbiAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgZGVwb3Qucm93Q29udHJvbHNbY2FtcG9dLnNldEF0dHJpYnV0ZSgnbXktbWFuZGF0b3J5Jyx2YWxvcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgfSxcclxuICAgIHByZXBhcmU6IGZ1bmN0aW9uKCl7fVxyXG59XHJcblxyXG52YXIgY3JlYXJCb3RvblZlckFicmlyRW5jdWVzdGEgPSAob3BlcmF0aXZvOklkT3BlcmF0aXZvLHRhcmVhOklkVGFyZWEsZW5jdWVzdGE6bnVtYmVyLCBsYWJlbDpzdHJpbmcpPT57XHJcbiAgICB2YXIgdXAgPSB7XHJcbiAgICAgICAgb3BlcmF0aXZvOm9wZXJhdGl2byxcclxuICAgICAgICB0YXJlYTp0YXJlYSxcclxuICAgICAgICBlbmN1ZXN0YTplbmN1ZXN0YVxyXG4gICAgfVxyXG4gICAgbGV0IHZlciA9IG15LmNyZWF0ZUZvcmtlYWJsZUJ1dHRvbih7dzonYWJyaXJfZW5jdWVzdGEnLHVwLCBhdXRvcHJvY2VkOnRydWUsIGxhYmVsfSx7fSk7XHJcbiAgICByZXR1cm4gdmVyXHJcbn1cclxuXHJcbnZhciBjcmVhckJvdG9uZXNWZXJBYnJpclRhcmVhcyA9IGFzeW5jIChkZXBvdDpteU93bi5EZXBvdCwgZmllbGROYW1lOnN0cmluZywgbGFiZWw6J2FicmlyJ3wndmVyJyk9PntcclxuICAgIHRhcmVhcyA9IHRhcmVhcz90YXJlYXM6KGF3YWl0IG15T3duLmFqYXgudGFibGVfZGF0YSh7dGFibGU6IGB0YXJlYXNgLCBmaXhlZEZpZWxkczpbXX0pKS5maWx0ZXIoKHRhcmVhKT0+ISF0YXJlYS5tYWluX2Zvcm0gJiYgdGFyZWEub3BlcmF0aXZvPT1kZXBvdC5yb3cub3BlcmF0aXZvKTtcclxuICAgIGRlcG90LnJvd0NvbnRyb2xzW2ZpZWxkTmFtZV0uaW5uZXJIVE1MPScnO1xyXG4gICAgdGFyZWFzLmZvckVhY2goKHRhcmVhOnt0YXJlYTpzdHJpbmcsIG5vbWJyZTpzdHJpbmcsIG1haW5fZm9ybTpJZEZvcm11bGFyaW99KT0+e1xyXG4gICAgICAgIGxldCBidXR0b25MYWJlbCA9IGAke2xhYmVsfSAke3RhcmVhLnRhcmVhfWA7XHJcbiAgICAgICAgbGV0IHZlciA9IGNyZWFyQm90b25WZXJBYnJpckVuY3Vlc3RhKFxyXG4gICAgICAgICAgICBkZXBvdC5yb3cub3BlcmF0aXZvIGFzIElkT3BlcmF0aXZvLFxyXG4gICAgICAgICAgICB0YXJlYS50YXJlYSBhcyBJZFRhcmVhLCBcclxuICAgICAgICAgICAgTnVtYmVyKGRlcG90LnJvdy5lbmMpLFxyXG4gICAgICAgICAgICBidXR0b25MYWJlbFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdmVyLnN0eWxlPSdtYXJnaW46MHB4IDJweDsnO1xyXG4gICAgICAgIGRlcG90LnJvd0NvbnRyb2xzW2ZpZWxkTmFtZV0uYXBwZW5kQ2hpbGQodmVyKTtcclxuICAgIH0pXHJcbn1cclxuXHJcbm15T3duLmNsaWVudFNpZGVzLmFicmlyPXtcclxuICAgIHByZXBhcmU6IChfZGVwb3QsIF9maWVsZE5hbWUpPT57fSxcclxuICAgIHVwZGF0ZTogKGRlcG90LCBmaWVsZE5hbWUpPT57XHJcbiAgICAgICAgdmFyIGxhYmVsOid2ZXInfCdhYnJpcicgPSBkZXBvdC5yb3cuY2FyZ2Fkb19kbT8ndmVyJzonYWJyaXInO1xyXG4gICAgICAgIGNyZWFyQm90b25lc1ZlckFicmlyVGFyZWFzKGRlcG90LGZpZWxkTmFtZSxsYWJlbCk7IC8vbm8gZXNwZXJvIHByb21lc2EgcG9ycXVlIG5vIGVzIG5lY2VzYXJpb1xyXG4gICAgfVxyXG59O1xyXG5cclxubXlPd24uY2xpZW50U2lkZXMuYWJyaXJSZWNlcGNpb249e1xyXG4gICAgcHJlcGFyZTogKF9kZXBvdCwgX2ZpZWxkTmFtZSk9Pnt9LFxyXG4gICAgdXBkYXRlOiAoZGVwb3QsIGZpZWxkTmFtZSk9PntcclxuICAgICAgICB2YXIgbGFiZWw6J3Zlcid8J2FicmlyJyA9IGRlcG90LnJvdy5jYXJnYWRvPyd2ZXInOidhYnJpcic7XHJcbiAgICAgICAgY3JlYXJCb3RvbmVzVmVyQWJyaXJUYXJlYXMoZGVwb3QsZmllbGROYW1lLGxhYmVsKTsgLy9ubyBlc3Blcm8gcHJvbWVzYSBwb3JxdWUgbm8gZXMgbmVjZXNhcmlvXHJcbiAgICB9XHJcbn07XHJcblxyXG5mdW5jdGlvbiBib3RvbkNsaWVudFNpZGVFbkdyaWxsYShvcHRzOiB7IG5vbWJyZUJvdG9uOiBzdHJpbmcsIGxsYW1hZGE6IChkZXBvdDogbXlPd24uRGVwb3QpID0+IFByb21pc2U8YW55PiB9KSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHByZXBhcmU6IGZ1bmN0aW9uIChkZXBvdDogbXlPd24uRGVwb3QsIGZpZWxkTmFtZTogc3RyaW5nKSB7XHJcbiAgICAgICAgICAgIHZhciB0ZCA9IGRlcG90LnJvd0NvbnRyb2xzW2ZpZWxkTmFtZV07XHJcbiAgICAgICAgICAgIHZhciBib3RvbiA9IGh0bWwuYnV0dG9uKG9wdHMubm9tYnJlQm90b24pLmNyZWF0ZSgpO1xyXG4gICAgICAgICAgICB0ZC5pbm5lckhUTUwgPSBcIlwiO1xyXG4gICAgICAgICAgICB0ZC5hcHBlbmRDaGlsZChib3Rvbik7XHJcbiAgICAgICAgICAgIHZhciByZXN0YXVyYXJCb3RvbiA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgIGJvdG9uLmRpc2FibGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICBib3Rvbi50ZXh0Q29udGVudCA9IG9wdHMubm9tYnJlQm90b247XHJcbiAgICAgICAgICAgICAgICBib3Rvbi5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAnJztcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgYm90b24ub25jbGljayA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgIGJvdG9uLmRpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIGJvdG9uLnRleHRDb250ZW50ID0gJ3Byb2Nlc2FuZG8uLi4nO1xyXG4gICAgICAgICAgICAgICAgb3B0cy5sbGFtYWRhKGRlcG90KS50aGVuKGFzeW5jIGZ1bmN0aW9uKHJlc3VsdCl7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYocmVzdWx0ICYmIHR5cGVvZiByZXN1bHQgPT09ICdvYmplY3QnICYmICdvaycgaW4gcmVzdWx0KXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYocmVzdWx0Lm9rKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBncmlkPWRlcG90Lm1hbmFnZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCBncmlkLnJldHJpZXZlUm93QW5kUmVmcmVzaChkZXBvdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGVwb3QuZGV0YWlsQ29udHJvbHMuaW5jb25zaXN0ZW5jaWFzKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBvdC5kZXRhaWxDb250cm9scy5pbmNvbnNpc3RlbmNpYXMuZm9yY2VEaXNwbGF5RGV0YWlsR3JpZCh7fSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdG9uLnRleHRDb250ZW50ID0gIHJlc3VsdC5tZXNzYWdlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm90b24udGl0bGUgPSByZXN1bHQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3Rvbi5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAnIzhGOCc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKHJlc3VsdC5tZXNzYWdlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KHJlc3RhdXJhckJvdG9uLCAyNTAwKTtcclxuICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uIChlcnIpIHtcclxuICAgICAgICAgICAgICAgICAgICBib3Rvbi50ZXh0Q29udGVudCA9ICdlcnJvcic7XHJcbiAgICAgICAgICAgICAgICAgICAgYm90b24uc3R5bGUuYmFja2dyb3VuZENvbG9yID0gJyNGRjgnO1xyXG4gICAgICAgICAgICAgICAgICAgIGFsZXJ0UHJvbWlzZShlcnIubWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vaWYgKChkZXBvdC5yb3cuY29uc2lzdGlkbz09bnVsbCAgJiYgZGVwb3Qucm93LnJlYSE9bnVsbCkgfHwgZGVwb3Qucm93Lm1vZGlmaWNhZG8hPW51bGwgJiYgZGVwb3Qucm93LmNvbnNpc3RpZG8hPW51bGwgJiYgZGVwb3Qucm93Lm1vZGlmaWNhZG8gPmRlcG90LnJvdy5jb25zaXN0aWRvKXtcclxuICAgICAgICAgICAgLy8gICAgYm90b24uc3R5bGUuYmFja2dyb3VuZENvbG9yPScjOENGJ1xyXG4gICAgICAgICAgICAvL31cclxuICAgICAgICB9ICAgICAgICBcclxuICAgIH07XHJcbn1cclxuXHJcblxyXG5teU93bi5jbGllbnRTaWRlcy5jb25zaXN0aXIgPSBib3RvbkNsaWVudFNpZGVFbkdyaWxsYSh7XHJcbiAgICBub21icmVCb3RvbjogJ2NvbnNpc3RpcicsXHJcbiAgICBsbGFtYWRhOiBmdW5jdGlvbiAoZGVwb3Q6IG15T3duLkRlcG90KSB7XHJcbiAgICAgICAgdmFyIGZpbHRyb1JlYT1jb25zaXN0aXJfZmlsdHJvKGRlcG90LnJvdy50YXJlYSwgZGVwb3Qucm93LnV0bF9yZWEsIGRlcG90LnJvdy5yZWEpXHJcbiAgICAgICAgcmV0dXJuIGZpbHRyb1JlYT8gbXlPd24uYWpheC5jb25zaXN0aXJfZW5jdWVzdGEoe1xyXG4gICAgICAgICAgICBvcGVyYXRpdm86IGRlcG90LnJvdy5vcGVyYXRpdm8sXHJcbiAgICAgICAgICAgIGlkX2Nhc286IGRlcG90LnJvdy5lbmNcclxuICAgICAgICB9KTogYWxlcnRQcm9taXNlKCdMYSBlbmN1ZXN0YSBkZWJlIHRlbmVyIGRhdG8gZW4gcmVhIHBhcmEgcG9kZXIgY29uc2lzdGlybGEuJyk7XHJcbiAgICB9XHJcbn0pO1xyXG5cclxubXlPd24ud1NjcmVlbnMuY29uc2lzdGlyX2VuY3Vlc3RhPXtcclxuICAgIHBhcmFtZXRlcnM6W1xyXG4gICAgICAgIHtuYW1lOidvcGVyYXRpdm8nICwgdHlwZU5hbWU6J3RleHQnLCBkZWZhdWx0VmFsdWU6T1BFUkFUSVZPX0RFRkFVTFQsIHJlZmVyZW5jZXM6J29wZXJhdGl2b3MnfSxcclxuICAgICAgICB7bmFtZTondGFyZWEnICAgICAsIHR5cGVOYW1lOid0ZXh0J30sXHJcbiAgICAgICAge25hbWU6J2VuY3Vlc3RhJyAgLCB0eXBlTmFtZTonaW50ZWdlcid9XHJcbiAgICBdLFxyXG4gICAgYXV0b3Byb2NlZDp0cnVlLFxyXG4gICAgbWFpbkFjdGlvbjphc3luYyAocGFyYW1zKT0+e1xyXG4gICAgICAgIHZhciB7b3BlcmF0aXZvLCB0YXJlYSwgZW5jdWVzdGEgfSA9IHBhcmFtcztcclxuICAgICAgICB2YXIgcmVzdWx0ID0gYXdhaXQgbXlPd24uYWpheC5jb25zaXN0aXJfZW5jdWVzdGEoe1xyXG4gICAgICAgICAgICBvcGVyYXRpdm86IG9wZXJhdGl2byxcclxuICAgICAgICAgICAgaWRfY2FzbzogZW5jdWVzdGFcclxuICAgICAgICB9KTtcclxuICAgICAgICBpZihyZXN1bHQub2spe1xyXG4gICAgICAgICAgICB2YXIgZml4ZWRGaWVsZHMgPSBbXTtcclxuICAgICAgICAgICAgZml4ZWRGaWVsZHMucHVzaCh7ZmllbGROYW1lOiAnb3BlcmF0aXZvJywgdmFsdWU6IG9wZXJhdGl2b30pO1xyXG4gICAgICAgICAgICBmaXhlZEZpZWxkcy5wdXNoKHtmaWVsZE5hbWU6ICd2aXZpZW5kYScsIHZhbHVlOiBlbmN1ZXN0YX0pO1xyXG4gICAgICAgICAgICB2YXIgbWFpbkxheW91dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtYWluX2xheW91dCcpITtcclxuICAgICAgICAgICAgdmFyIGRpdkdyaWxsYSA9IGh0bWwuZGl2KHtpZDonaW5jb25zaXN0ZW5jaWFzJ30pLmNyZWF0ZSgpO1xyXG4gICAgICAgICAgICBtYWluTGF5b3V0Lmluc2VydEJlZm9yZShkaXZHcmlsbGEsIG1haW5MYXlvdXQuZmlyc3RDaGlsZCk7XHJcbiAgICAgICAgICAgIG1haW5MYXlvdXQuaW5zZXJ0QmVmb3JlKFxyXG4gICAgICAgICAgICAgICAgY3JlYXJCb3RvblZlckFicmlyRW5jdWVzdGEoXHJcbiAgICAgICAgICAgICAgICAgICAgb3BlcmF0aXZvLFxyXG4gICAgICAgICAgICAgICAgICAgIHRhcmVhLFxyXG4gICAgICAgICAgICAgICAgICAgIGVuY3Vlc3RhLCBcclxuICAgICAgICAgICAgICAgICAgICBgaXIgYSBlbmN1ZXN0YSAke2VuY3Vlc3RhfWBcclxuICAgICAgICAgICAgICAgICksIFxyXG4gICAgICAgICAgICAgICAgbWFpbkxheW91dC5maXJzdENoaWxkXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIG15LnRhYmxlR3JpZChcImluY29uc2lzdGVuY2lhc1wiLCBkaXZHcmlsbGEse3RhYmxlRGVmOnt9LGZpeGVkRmllbGRzOiBmaXhlZEZpZWxkc30pO1xyXG4gICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IocmVzdWx0Lm1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxubXlPd24ud1NjcmVlbnMuZGVtbz1hc3luYyBmdW5jdGlvbihfYWRkclBhcmFtcyl7XHJcbiAgICAvLyBAdHMtaWdub3JlIGRlc3BsZWdhckZvcm11bGFyaW9BY3R1YWwgZ2xvYmFsXHJcbiAgICB3aW5kb3cuZGVzcGxlZ2FyRm9ybXVsYXJpb0FjdHVhbCh7bW9kb0RlbW86dHJ1ZX0pO1xyXG59XHJcblxyXG5mdW5jdGlvbiBhcnJheUZsYXQ8VD4oYXJyYXlzOlRbXVtdKTpUW117XHJcbiAgICByZXR1cm4gKFtdIGFzIFRbXSkuY29uY2F0LmFwcGx5KFtdLCBhcnJheXMpO1xyXG59XHJcbiJdfQ==
|
|
376
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NsaWVudC9jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBQUEsMkNBQWdDO0lBQ2hDLG1FQUE2RDtJQUk3RCxrQ0FBa0M7SUFDbEMscUVBQW9GO0lBQ3BGLG1FQUF5STtJQUV6SSxrQkFBa0I7SUFFbEIsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDO0lBQzdCLE1BQU0saUJBQWlCLEdBQUcsWUFBWSxDQUFDO0lBRXZDLHFHQUFxRztJQUNyRyxJQUFJLFFBQVEsR0FBRyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztJQUMzRSxNQUFBLE1BQUEsUUFBUSxDQUFDLENBQUMsQ0FBQywwQ0FBRSxVQUFVLDBDQUFFLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUVsRCxTQUFTLGdCQUFnQixDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsR0FBRztRQUN6QyxPQUFPLEtBQUssQ0FBQSxDQUFDLENBQUEsT0FBTyxDQUFBLENBQUMsQ0FBQSxHQUFHLENBQUM7SUFDN0IsQ0FBQztJQUFBLENBQUM7SUFFRixJQUFJLE1BQU0sR0FBTyxJQUFJLENBQUM7SUFFdEIsU0FBUyxVQUFVLENBQUMsR0FBVTtRQUMxQixPQUFPLGlCQUFJLENBQUMsSUFBSSxDQUFDLEVBQUMsS0FBSyxFQUFDLFFBQVEsRUFBQyxFQUFDLEVBQUUsR0FBQyxDQUFDLEdBQUcsYUFBSCxHQUFHLGNBQUgsR0FBRyxHQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFDbkQsQ0FBQztJQUVELElBQUksa0JBQWtCLEdBQUcsQ0FBTyxZQUFvQyxFQUFFLEVBQUU7UUFDcEUsSUFBSSxFQUFDLGtCQUFrQixFQUFDLEdBQUcsWUFBWSxDQUFBO1FBQ25DLElBQUcsa0JBQWtCLElBQUUsT0FBTyxFQUFDO1lBQzNCLEVBQUUsQ0FB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QUN0RCxDQUFDO0tBQUEsQ0FBQTtJQUVELFNBQVMsU0FBUyxDQUFJLE1BQVk7UUFDOUIsT0FBUSxFQUFVLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDaEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7aHRtbH0gZnJvbSBcImpzLXRvLWh0bWxcIjtcclxuaW1wb3J0IHt0cmFlckVzdHJ1Y3R1cmF9IGZyb20gXCIuLi91bmxvZ2dlZC9yZWR1eC1mb3JtdWxhcmlvXCI7XHJcbmltcG9ydCB7IENhc29TdGF0ZSwgIFxyXG4gICAgSWRGb3JtdWxhcmlvLCBEYXRvc0J5UGFzc1BlcnNpc3RpYmxlcywgSWRFbmMsIElkT3BlcmF0aXZvLCBJZFRhcmVhLFxyXG59IGZyb20gXCIuLi91bmxvZ2dlZC90aXBvc1wiO1xyXG5pbXBvcnQgKiBhcyBsaWtlQXIgZnJvbSBcImxpa2UtYXJcIjtcclxuaW1wb3J0IHtnZXRFc3RydWN0dXJhLCBzZXRQZXJzaXN0aXJEYXRvc0J5UGFzc30gZnJvbSBcIi4uL3VubG9nZ2VkL2J5cGFzcy1mb3JtdWxhcmlvXCJcclxuaW1wb3J0IHtjYXJnYXJFc3RydWN0dXJhLCBjYXJnYXJIb2phRGVSdXRhLCBHTE9WQVJfREFUT1NCWVBBU1MsIEdMT1ZBUl9FU1RSVUNUVVJBLCBHTE9WQVJfTU9ET0JZUEFTU30gZnJvbSBcIi4uL3VubG9nZ2VkL2FicmlyLWZvcm11bGFyaW9cIlxyXG5cclxuLy9UT0RPIEdFTkVSQUxJWkFSXHJcblxyXG5jb25zdCBUQVJFQV9ERUZBVUxUID0gJ2VuY3UnO1xyXG5jb25zdCBPUEVSQVRJVk9fREVGQVVMVCA9ICdQUkVKVV8yMDIyJztcclxuXHJcbi8vcXVpdGEgYm9vdHN0cmFwIGRlbCBoZWFkIHBhcmEgcXVlIG5vIHJvbXBhIGxvcyBlc3RpbG9zIGRlIEJFUGx1cyAoc29sbyBzZSB1c2EgYm9vdHN0cmFwIGVuIGVsIGZvcm0pXHJcbnZhciBsaW5rTm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tocmVmPVwiY3NzL2Jvb3RzdHJhcC5taW4uY3NzXCJdJyk7XHJcbmxpbmtOb2RlWzBdPy5wYXJlbnROb2RlPy5yZW1vdmVDaGlsZChsaW5rTm9kZVswXSk7XHJcblxyXG5mdW5jdGlvbiBjb25zaXN0aXJfZmlsdHJvKHRhcmVhLCByZWFfdGVtLCByZWEpe1xyXG4gICAgcmV0dXJuIHRhcmVhP3JlYV90ZW06cmVhO1xyXG59O1xyXG5cclxudmFyIHRhcmVhczphbnkgPSBudWxsO1xyXG5cclxuZnVuY3Rpb24gaHRtbE51bWVybyhudW06bnVtYmVyKXtcclxuICAgIHJldHVybiBodG1sLnNwYW4oe2NsYXNzOidudW1lcm8nfSwnJysobnVtPz8nJykpXHJcbn1cclxuXHJcbnZhciBwZXJzaXN0aXJFbk1lbW9yaWEgPSBhc3luYyAocGVyc2lzdGVudGVzOkRhdG9zQnlQYXNzUGVyc2lzdGlibGVzKSA9PiB7XHJcbiAgICB2YXIge21vZG9BbG1hY2VuYW1pZW50b30gPSBwZXJzaXN0ZW50ZXNcclxuICAgICAgICBpZihtb2RvQWxtYWNlbmFtaWVudG89PSdsb2NhbCcpe1xyXG4gICAgICAgICAgICBteS5zZXRMb2NhbFZhcihHTE9WQVJfREFUT1NCWVBBU1MsIHBlcnNpc3RlbnRlcylcclxuICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgbXkuc2V0U2Vzc2lvblZhcihHTE9WQVJfREFUT1NCWVBBU1MsIHBlcnNpc3RlbnRlcylcclxuICAgICAgICB9XHJcbiAgICAgICAgbXkuc2V0U2Vzc2lvblZhcihHTE9WQVJfTU9ET0JZUEFTUywgbW9kb0FsbWFjZW5hbWllbnRvKVxyXG59XHJcblxyXG5hc3luYyBmdW5jdGlvbiBzaW5jcm9uaXphckRhdG9zKHBlcnNpc3RlbnRlczpEYXRvc0J5UGFzc1BlcnNpc3RpYmxlc3xudWxsKXtcclxuICAgIHZhciBkYXRvcyA9IGF3YWl0IG15LmFqYXguZG1fc2luY3Jvbml6YXIoe3BlcnNpc3RlbnRlc30pO1xyXG4gICAgdmFyIG9wZXJhdGl2byA9IGRhdG9zLm9wZXJhdGl2bztcclxuICAgIHBlcnNpc3RpckVuTWVtb3JpYSh7Li4uZGF0b3MsIG1vZG9BbG1hY2VuYW1pZW50bzonbG9jYWwnfSk7XHJcbiAgICB2YXIgZXN0cnVjdHVyYSA9IGF3YWl0IHRyYWVyRXN0cnVjdHVyYSh7b3BlcmF0aXZvfSlcclxuICAgIG15LnNldExvY2FsVmFyKEdMT1ZBUl9FU1RSVUNUVVJBLCBlc3RydWN0dXJhKTtcclxuICAgIHJldHVybiBkYXRvcztcclxufVxyXG5cclxubXlPd24ud1NjcmVlbnMuYWJyaXJfZW5jdWVzdGE9e1xyXG4gICAgcGFyYW1ldGVyczpbXHJcbiAgICAgICAge25hbWU6J29wZXJhdGl2bycgLCB0eXBlTmFtZTondGV4dCcsIGRlZmF1bHRWYWx1ZTpPUEVSQVRJVk9fREVGQVVMVCwgcmVmZXJlbmNlczonb3BlcmF0aXZvcyd9LFxyXG4gICAgICAgIHtuYW1lOid0YXJlYScgICAgICwgdHlwZU5hbWU6J3RleHQnLCBkZWZhdWx0VmFsdWU6VEFSRUFfREVGQVVMVCwgcmVmZXJlbmNlczogJ3RhcmVhcyd9LFxyXG4gICAgICAgIHtuYW1lOidlbmN1ZXN0YScgICwgdHlwZU5hbWU6J2ludGVnZXInLCBkZWZhdWx0VmFsdWU6MTMwMDMxfVxyXG4gICAgXSxcclxuICAgIGF1dG9wcm9jZWQ6dHJ1ZSxcclxuICAgIG1haW5BY3Rpb246YXN5bmMgKHBhcmFtcyk9PntcclxuICAgICAgICAvLyBhbnRlczogYWJyaXJEaXJlY3RvXHJcbiAgICAgICAgdmFyIHtvcGVyYXRpdm8sIGVuY3Vlc3RhLCB0YXJlYX0gPSBwYXJhbXM7XHJcbiAgICAgICAgdmFyIGVzdHJ1Y3R1cmEgPSBnZXRFc3RydWN0dXJhKCk7XHJcbiAgICAgICAgdmFyIGNhcmdhID0gYXdhaXQgbXkuYWpheC5kbV9mb3Jwa3JhaXpfY2FyZ2FyKHtvcGVyYXRpdm8sIHZpdmllbmRhOmVuY3Vlc3RhLCB0YXJlYX0pIGFzIERhdG9zQnlQYXNzUGVyc2lzdGlibGVzO1xyXG4gICAgICAgIGlmKCFlc3RydWN0dXJhIHx8IChlc3RydWN0dXJhLnRpbWVzdGFtcD8/MCkgPCBjYXJnYS50aW1lc3RhbXBFc3RydWN0dXJhISB8fCBlc3RydWN0dXJhLm9wZXJhdGl2byAhPSBvcGVyYXRpdm8gfHwgbXkuY29uZmlnLmNvbmZpZy5kZXZlbCl7XHJcbiAgICAgICAgICAgIGVzdHJ1Y3R1cmEgPSBhd2FpdCB0cmFlckVzdHJ1Y3R1cmEoe29wZXJhdGl2b30pXHJcbiAgICAgICAgICAgIGNhcmdhckVzdHJ1Y3R1cmEoZXN0cnVjdHVyYSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgIHZhciBzdGF0ZTpDYXNvU3RhdGUgPSB7fVxyXG4gICAgICAgIGluaWNpYWxpemFyU3RhdGUoc3RhdGUpO1xyXG4gICAgICAgIHZhciBmb3JQa1JhaXogPSB7Zm9ybXVsYXJpbzpjYXJnYS5pbmZvcm1hY2lvbkhkcltlbmN1ZXN0YSBhcyBJZEVuY10udGFyZWEubWFpbl9mb3JtLCB2aXZpZW5kYTplbmN1ZXN0YX07XHJcbiAgICAgICAgc2V0UGVyc2lzdGlyRGF0b3NCeVBhc3MoXHJcbiAgICAgICAgICAgIGFzeW5jIGZ1bmN0aW9uIHBlcnNpc3RpckRhdG9zQnlQYXNzRW5CYXNlRGVEYXRvcyhwZXJzaXN0ZW50ZXM6RGF0b3NCeVBhc3NQZXJzaXN0aWJsZXMpe1xyXG4gICAgICAgICAgICAgICAgaWYocGVyc2lzdGVudGVzLnNvbG9MZWN0dXJhKXtcclxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJFc3TDoSBpbnRlbnRhbmRvIG1vZGlmaWNhciB1bmEgZW5jdWVzdGEgYWJpZXJ0YSBjb21vIHNvbG8gbGVjdHVyYSwgbm8gc2UgZ3VhcmRhcm9uIGxvcyBjYW1iaW9zXCIpXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBhd2FpdCBteS5hamF4LmRtX2ZvcnBrcmFpel9kZXNjYXJnYXIoe29wZXJhdGl2bywgcGVyc2lzdGVudGVzfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICApXHJcbiAgICAgICAgaWYoIWNhcmdhLnJlc3B1ZXN0YXMudml2aWVuZGFzW2ZvclBrUmFpei52aXZpZW5kYSFdKXtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBObyBzZSBlbmN1ZW50cmEgbGEgdml2aWVuZGEgJHtmb3JQa1JhaXoudml2aWVuZGEhfWApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXJnYXJIb2phRGVSdXRhKHsuLi5jYXJnYSwgbW9kb0FsbWFjZW5hbWllbnRvOidzZXNzaW9uJ30pO1xyXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICBkZXNwbGVnYXJGb3JtdWxhcmlvQWN0dWFsKHtvcGVyYXRpdm8sIG1vZG9EZW1vOmZhbHNlLCBmb3JQa1JhaXp9KTtcclxuICAgIH1cclxufVxyXG5cclxudmFyIG1vc3RyYXJJbmZvTG9jYWwgPSAoZGl2QXZpc29TaW5jcm86SFRNTERpdkVsZW1lbnQsIHRpdHVsbzpzdHJpbmcsIG5yb1NpbmNybzpudW1iZXJ8bnVsbCwgbW9zdHJhckxpbmtIZHI6IGJvb2xlYW4pPT57XHJcbiAgICBsZXQgZGF0b3NCeVBhc3MgPSBteS5nZXRMb2NhbFZhcihHTE9WQVJfREFUT1NCWVBBU1MpO1xyXG4gICAgaWYoZGF0b3NCeVBhc3Mpe1xyXG4gICAgICAgIGRpdkF2aXNvU2luY3JvLmFwcGVuZChodG1sLmRpdih7aWQ6J2F2aXNvLXNpbmNybyd9LCBbXHJcbiAgICAgICAgICAgIG5yb1NpbmNybz9odG1sLnAoW1wiTsO6bWVybyBkZSBzaW5jcm9uaXphY2nDs246IFwiLCBodG1sLmIoXCJcIitucm9TaW5jcm8udG9TdHJpbmcoKSldKTpudWxsLFxyXG4gICAgICAgICAgICBodG1sLmg0KHRpdHVsbyksXHJcbiAgICAgICAgICAgIGh0bWwucChbaHRtbE51bWVybyhsaWtlQXIoZGF0b3NCeVBhc3MuY2FyZ2FzKS5hcnJheSgpLmxlbmd0aCksJyBhcmVhczogJyxsaWtlQXIoZGF0b3NCeVBhc3MuY2FyZ2FzKS5rZXlzKCkuam9pbignLCAnKV0pLFxyXG4gICAgICAgICAgICBodG1sLnAoW2h0bWxOdW1lcm8obGlrZUFyKGRhdG9zQnlQYXNzLnJlc3B1ZXN0YXMudml2aWVuZGFzKS5hcnJheSgpLmxlbmd0aCksJyB2aXZpZW5kYXMnXSksXHJcbiAgICAgICAgICAgIG1vc3RyYXJMaW5rSGRyP2h0bWwuYSh7aHJlZjonLi9jYW1wbyd9LFtodG1sLmIoJ0lSIEEgTEEgSE9KQSBERSBSVVRBJyldKTpudWxsXHJcbiAgICAgICAgXSkuY3JlYXRlKCkpO1xyXG4gICAgfWVsc2V7XHJcbiAgICAgICAgZGl2QXZpc29TaW5jcm8uYXBwZW5kQ2hpbGQoaHRtbC5kaXYoe2NsYXNzOidhdmlzbyd9LFtcclxuICAgICAgICAgICAgaHRtbC5oNCgnU2lzdGVtYSB2YWPDrW8nKSxcclxuICAgICAgICAgICAgaHRtbC5wKCdObyBoYXkgaW5mb3JtYWNpw7NuIGRlIGZvcm11bGFyaW9zJyksXHJcbiAgICAgICAgICAgIGh0bWwucCgnTm8gaGF5IGluZm9ybWFjacOzbiBkZSB2aXZpZW5kYXMnKVxyXG4gICAgICAgIF0pLmNyZWF0ZSgpKTtcclxuICAgIH1cclxufVxyXG52YXIgcHJvY2VkZXJTaW5jcm9GdW4gPSBhc3luYyAoYnV0dG9uOkhUTUxCdXR0b25FbGVtZW50LCBkaXZBdmlzb1NpbmNybzpIVE1MRGl2RWxlbWVudCk9PntcclxuICAgIGJ1dHRvbi5kaXNhYmxlZD10cnVlO1xyXG4gICAgYnV0dG9uLmNsYXNzTmFtZT0nZG93bmxvYWQtZG0tYnV0dG9uJztcclxuICAgIGRpdkF2aXNvU2luY3JvLmlubmVySFRNTD0nJztcclxuICAgIHRyeXtcclxuICAgICAgICB2YXIgZGF0b3NCeVBhc3M6RGF0b3NCeVBhc3NQZXJzaXN0aWJsZXMgPSBteS5nZXRMb2NhbFZhcihHTE9WQVJfREFUT1NCWVBBU1MpO1xyXG4gICAgICAgIHZhciBkYXRvcyA9IGF3YWl0IHNpbmNyb25pemFyRGF0b3MoZGF0b3NCeVBhc3MpO1xyXG4gICAgICAgIG1vc3RyYXJJbmZvTG9jYWwoZGl2QXZpc29TaW5jcm8sICdkYXRvcyByZWNpYmlkb3MnLCBkYXRvcy5udW1fc2luY3JvLCB0cnVlKVxyXG4gICAgfWNhdGNoKGVycil7XHJcbiAgICAgICAgYWxlcnRQcm9taXNlKGVyci5tZXNzYWdlKVxyXG4gICAgICAgIHRocm93IGVyclxyXG4gICAgfWZpbmFsbHl7XHJcbiAgICAgICAgYnV0dG9uLmRpc2FibGVkPWZhbHNlO1xyXG4gICAgICAgIGJ1dHRvbi5jbGFzc05hbWU9J2Rvd25sb2FkLWRtLWJ1dHRvbi1jb250JztcclxuICAgIH1cclxufVxyXG5teU93bi53U2NyZWVucy5zaW5jcm9uaXphcl9kbT1hc3luYyBmdW5jdGlvbigpe1xyXG4gICAgdmFyIG1haW5MYXlvdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWFpbl9sYXlvdXQnKSE7XHJcbiAgICB2YXIgcHJvY2VkZXJCdXR0b24gPSBodG1sLmJ1dHRvbih7Y2xhc3M6J2Rvd25sb2FkLWRtLWJ1dHRvbi1jb250J30sJ3Byb2NlZGVyIOKHkicpLmNyZWF0ZSgpO1xyXG4gICAgdmFyIGRpdkF2aXNvU2luY3JvOkhUTUxEaXZFbGVtZW50PWh0bWwuZGl2KCkuY3JlYXRlKCk7XHJcbiAgICBtb3N0cmFySW5mb0xvY2FsKG1haW5MYXlvdXQgYXMgSFRNTERpdkVsZW1lbnQsICdpbmZvcm1hY2nDs24gYSB0cmFuc21pdGlyJywgbnVsbCwgZmFsc2UpXHJcbiAgICBtYWluTGF5b3V0LmFwcGVuZENoaWxkKHByb2NlZGVyQnV0dG9uKTtcclxuICAgIG1haW5MYXlvdXQuYXBwZW5kQ2hpbGQoZGl2QXZpc29TaW5jcm8pO1xyXG4gICAgcHJvY2VkZXJCdXR0b24ub25jbGljayA9ICgpPT5wcm9jZWRlclNpbmNyb0Z1bihwcm9jZWRlckJ1dHRvbiwgZGl2QXZpc29TaW5jcm8pXHJcbn07XHJcblxyXG5mdW5jdGlvbiBpbmljaWFsaXphclN0YXRlKHN0YXRlOiBDYXNvU3RhdGUpIHtcclxuICAgIHN0YXRlLm1vZG8gPSB7XHJcbiAgICAgICAgZGVtbzogZmFsc2VcclxuICAgIH07XHJcbiAgICAvLyBPSk8gc3RhdGUub3BjaW9uZXMgc2UgbW9kaWZpY2EgYWPDoSB5IGVuIG90cm8gbGFkbyBjb24gZXN0ZSBtaXNtbyBjYXJ0ZWxcclxuICAgIHN0YXRlLm9wY2lvbmVzID0ge1xyXG4gICAgICAgIGJpZW52ZW5pZG86IHRydWUsXHJcbiAgICAgICAgZm9yUGs6IG51bGwsXHJcbiAgICAgICAgcGlsYUZvclBrOiBbXSxcclxuICAgICAgICBtb2RvRGVzcGxpZWd1ZTogXCJyZWxldmFtaWVudG9cIixcclxuICAgICAgICBtb2RvRGlyZWN0bzogZmFsc2UsXHJcbiAgICAgICAgbW9kb0JvcnJhclJlc3B1ZXN0YTogbnVsbCxcclxuICAgICAgICBjb25DYW1wb09wY2lvbmVzOiBmYWxzZSxcclxuICAgICAgICBzYWx0b0F1dG9tYXRpY286IHRydWUsXHJcbiAgICB9O1xyXG4gICAgLy9AdHMtaWdub3JlXHJcbiAgICBzdGF0ZS5mZWVkYmFja1Jvd1ZhbGlkYXRvciA9IHt9O1xyXG59XHJcbi8qXHJcbmZ1bmN0aW9uIG1vc3RyYXJEYXRvc1BlcnNvbmEoaGF5RGF0b3M6Ym9vbGVhbiwgZGF0b3M6YW55LCBkaXZSZXN1bHQ6SFRNTERpdkVsZW1lbnQpe1xyXG4gICAgLy9UT0RPOiBFVkFMVUFSIFNJIENPTlZJRU5FIFRSQUVSTE8gREUgTEEgQkFTRVxyXG4gICAgdmFyIHRpcG9zRG9jdW1lbnRvID0gWydETkkgYXJnZW50aW5vJywgJ0RvY3VtZW50byBleHRyYW5qZXJvJywgJ05vIHRpZW5lIGRvY3VtZW50bycsICdPdHJvJ107XHJcbiAgICB2YXIgcGFpc0RvY3VtZW50byA9IFsnVXJ1Z3VheScsICdQYXJhZ3VheScsICdCcmFzaWwnLCAnQm9saXZpYScsICdDaGlsZScsICdQZXLDuicsICdWZW5lenVlbGEnLCAnT3RybyddO1xyXG4gICAgZGl2UmVzdWx0LmFwcGVuZENoaWxkKFxyXG4gICAgICAgIGhheURhdG9zP1xyXG4gICAgICAgICAgICBodG1sLmRpdih7Y2xhc3M6J2RhdG9zLXBlcnNvbmEtY2FyZ2FkYSd9LFtcclxuICAgICAgICAgICAgICAgIGh0bWwuaDIoXCJEYXRvcyBwZXJzb25hXCIpLFxyXG4gICAgICAgICAgICAgICAgaHRtbC5kaXYoe2NsYXNzOidmaWNoYS1wZXJzb25hJ30sW1xyXG4gICAgICAgICAgICAgICAgICAgIGh0bWwuZGl2KFtodG1sLmxhYmVsKCdBcGVsbGlkbzogJyksIGRhdG9zLmFwZWxsaWRvXSksXHJcbiAgICAgICAgICAgICAgICAgICAgaHRtbC5kaXYoW2h0bWwubGFiZWwoJ05vbWJyZXM6ICcpLCBkYXRvcy5ub21icmVzXSksXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0b3MudGlwb0RvY3VtZW50bz9cclxuICAgICAgICAgICAgICAgICAgICAgICAgaHRtbC5kaXYoW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaHRtbC5sYWJlbCgnVGlwbyBkb2N1bWVudG86ICcpLCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpcG9zRG9jdW1lbnRvW2RhdG9zLnRpcG9Eb2N1bWVudG8tMV0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRvcy50aXBvRG9jdW1lbnRvPT00ICYmIGRhdG9zLnRpcG9Eb2N1bWVudG9Fc3BlY2lmaWNhZG8/JyAoJysgZGF0b3MudGlwb0RvY3VtZW50b0VzcGVjaWZpY2FkbysnKSc6JycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF0pXHJcbiAgICAgICAgICAgICAgICAgICAgOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAnJyxcclxuICAgICAgICAgICAgICAgICAgICBkYXRvcy50aXBvRG9jdW1lbnRvPT0yICYmIGRhdG9zLnBhaXNEb2N1bWVudG8/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGh0bWwuZGl2KFtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0bWwubGFiZWwoJ1BhaXM6ICcpLCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhaXNEb2N1bWVudG9bZGF0b3MucGFpc0RvY3VtZW50by0xXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdG9zLnBhaXNEb2N1bWVudG89PTggJiYgZGF0b3MucGFpc0RvY3VtZW50b0VzcGVjaWZpY2Fkbz8nICgnK2RhdG9zLnBhaXNEb2N1bWVudG9Fc3BlY2lmaWNhZG8rJyknOicnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBdKVxyXG4gICAgICAgICAgICAgICAgICAgIDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgJycsXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0b3MudGlwb0RvY3VtZW50byE9MyAmJiBkYXRvcy50aXBvRG9jdW1lbnRvP2h0bWwuZGl2KFtodG1sLmxhYmVsKCdOwrogRG9jdW1lbnRvOiAnKSwgZGF0b3MuZG9jdW1lbnRvXSk6JycsXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0b3MuY2VsdWxhcj9odG1sLmRpdihbaHRtbC5sYWJlbCgnQ2VsLjogJyksIGRhdG9zLmNlbHVsYXJdKTonJyxcclxuICAgICAgICAgICAgICAgICAgICBkYXRvcy5lbWFpbD9odG1sLmRpdihbaHRtbC5sYWJlbCgnRW1haWw6ICcpLCBkYXRvcy5lbWFpbF0pOicnLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdG9zLnRlbGVmb25vQWx0ZXJuYXRpdm8/aHRtbC5kaXYoW2h0bWwubGFiZWwoJ1RlbC4gYWx0ZXJuYXRpdm86ICcpLCBkYXRvcy50ZWxlZm9ub0FsdGVybmF0aXZvXSk6JycsXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0b3Mub2JzZXJ2YWNpb25lcz9odG1sLmRpdihbaHRtbC5sYWJlbCgnT2JzZXJ2YWNpb25lczogJyksIGRhdG9zLm9ic2VydmFjaW9uZXNdKTonJyxcclxuICAgICAgICAgICAgICAgIF0pXHJcbiAgICAgICAgICAgIF0pLmNyZWF0ZSgpXHJcbiAgICAgICAgOlxyXG4gICAgICAgICAgICBodG1sLnAoXCJObyBzZSBlbmNvbnRyw7MgdW5hIGVuY3Vlc3RhIHBhcmEgbGEgZXRpcXVldGEgY2FyZ2FkYVwiKS5jcmVhdGUoKVxyXG4gICAgKVxyXG59XHJcbiovXHJcbm15T3duLmNsaWVudFNpZGVzLnRhcmVhc1RlbVJvdz17XHJcbiAgICB1cGRhdGU6KGRlcG90KT0+e1xyXG4gICAgICAgIHZhciB0YXJlYTonbmFkYSd8J3ByZWFzaWduYXInfCdjYXJnYXInfCdyZWFsaXphcid8J3ZlcmlmaWNhcic9J25hZGEnO1xyXG4gICAgICAgIHZhciByb3c9ZGVwb3Qucm93O1xyXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICB2YXIgaWRwZXI9bXkuY29uZmlnLmlkcGVyO1xyXG4gICAgICAgIHZhciBlc3BlcmFyOmJvb2xlYW49ZmFsc2U7XHJcbiAgICAgICAgaWYocm93LmhhYmlsaXRhZGEpe1xyXG4gICAgICAgICAgICBpZighcm93LmFzaWduYW50ZSAmJiAhcm93LmFzaWduYWRvKXtcclxuICAgICAgICAgICAgICAgIHRhcmVhPSdwcmVhc2lnbmFyJztcclxuICAgICAgICAgICAgICAgIGVzcGVyYXI9dHJ1ZTtcclxuICAgICAgICAgICAgfWVsc2UgaWYoIXJvdy5hc2lnbmFkbyB8fCAhcm93LmZlY2hhX2FzaWduYWNpb24gfHwgIXJvdy5vcGVyYWNpb24pe1xyXG4gICAgICAgICAgICAgICAgdGFyZWE9J2Nhcmdhcic7XHJcbiAgICAgICAgICAgICAgICBlc3BlcmFyPXJvdy5hc2lnbmFudGUhPWlkcGVyO1xyXG4gICAgICAgICAgICB9ZWxzZSBpZighcm93LnJlYSl7XHJcbiAgICAgICAgICAgICAgICB0YXJlYT0ncmVhbGl6YXInO1xyXG4gICAgICAgICAgICAgICAgZXNwZXJhcj1yb3cuYXNpZ25hZG8hPWlkcGVyO1xyXG4gICAgICAgICAgICB9ZWxzZSBpZighcm93LnZlcmlmaWNhZG8pe1xyXG4gICAgICAgICAgICAgICAgdGFyZWE9J3ZlcmlmaWNhcic7XHJcbiAgICAgICAgICAgICAgICBlc3BlcmFyPXJvdy5hc2lnbmFudGUhPWlkcGVyO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhciBwb25lcj17XHJcbiAgICAgICAgICAgIGFzaWduYW50ZSAgICAgICAgICA6dGFyZWE9PSdwcmVhc2lnbmFyJyAmJiAoZXNwZXJhcj8nZXNwZXJhcic6J25vcm1hbCcpLFxyXG4gICAgICAgICAgICBhc2lnbmFkbyAgICAgICAgICAgOnRhcmVhPT0nY2FyZ2FyJyAgICAgJiYgKGVzcGVyYXI/J2VzcGVyYXInOidub3JtYWwnKSxcclxuICAgICAgICAgICAgZmVjaGFfYXNpZ25hY2lvbiAgIDp0YXJlYT09J2NhcmdhcicgICAgICYmIChlc3BlcmFyPydlc3BlcmFyJzonbm9ybWFsJyksXHJcbiAgICAgICAgICAgIG9wZXJhY2lvbiAgICAgICAgICA6dGFyZWE9PSdjYXJnYXInICAgICAmJiAoZXNwZXJhcj8nZXNwZXJhcic6J25vcm1hbCcpLFxyXG4gICAgICAgICAgICBjYXJnYV9vYnNlcnZhY2lvbmVzOih0YXJlYT09J2NhcmdhcicgICAgIHx8IHRhcmVhPT0ncmVhbGl6YXInICYmICFyb3cuY2FyZ2FkbyAmJiAhcm93LnJlYSApICYmIHJvdy5hc2lnbmFudGU9PWlkcGVyICYmICdvcHRhdGl2bycsXHJcbiAgICAgICAgICAgIHZlcmlmaWNhZG8gICAgICAgICA6dGFyZWE9PSd2ZXJpZmljYXInICAmJiAoZXNwZXJhcj8nZXNwZXJhcic6J25vcm1hbCcpLFxyXG4gICAgICAgICAgICBvYnNfdmVyaWZpY2FkbyAgICAgOnRhcmVhPT0ndmVyaWZpY2FyJyAgJiYgKGVzcGVyYXI/J2VzcGVyYXInOidvcHRhdGl2bycpLFxyXG4gICAgICAgIH1cclxuICAgICAgICBsaWtlQXIocG9uZXIpLmZvckVhY2goKHZhbG9yLCBjYW1wbyk9PntcclxuICAgICAgICAgICAgaWYoIXZhbG9yKXtcclxuICAgICAgICAgICAgICAgIGRlcG90LnJvd0NvbnRyb2xzW2NhbXBvXS5yZW1vdmVBdHRyaWJ1dGUoJ215LW1hbmRhdG9yeScpXHJcbiAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgZGVwb3Qucm93Q29udHJvbHNbY2FtcG9dLnNldEF0dHJpYnV0ZSgnbXktbWFuZGF0b3J5Jyx2YWxvcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgfSxcclxuICAgIHByZXBhcmU6IGZ1bmN0aW9uKCl7fVxyXG59XHJcblxyXG52YXIgY3JlYXJCb3RvblZlckFicmlyRW5jdWVzdGEgPSAob3BlcmF0aXZvOklkT3BlcmF0aXZvLHRhcmVhOklkVGFyZWEsZW5jdWVzdGE6bnVtYmVyLCBsYWJlbDpzdHJpbmcpPT57XHJcbiAgICB2YXIgdXAgPSB7XHJcbiAgICAgICAgb3BlcmF0aXZvOm9wZXJhdGl2byxcclxuICAgICAgICB0YXJlYTp0YXJlYSxcclxuICAgICAgICBlbmN1ZXN0YTplbmN1ZXN0YVxyXG4gICAgfVxyXG4gICAgbGV0IHZlciA9IG15LmNyZWF0ZUZvcmtlYWJsZUJ1dHRvbih7dzonYWJyaXJfZW5jdWVzdGEnLHVwLCBhdXRvcHJvY2VkOnRydWUsIGxhYmVsfSx7fSk7XHJcbiAgICByZXR1cm4gdmVyXHJcbn1cclxuXHJcbnZhciBjcmVhckJvdG9uZXNWZXJBYnJpclRhcmVhcyA9IGFzeW5jIChkZXBvdDpteU93bi5EZXBvdCwgZmllbGROYW1lOnN0cmluZywgbGFiZWw6J2FicmlyJ3wndmVyJyk9PntcclxuICAgIHRhcmVhcyA9IHRhcmVhcz90YXJlYXM6KGF3YWl0IG15T3duLmFqYXgudGFibGVfZGF0YSh7dGFibGU6IGB0YXJlYXNgLCBmaXhlZEZpZWxkczpbXX0pKS5maWx0ZXIoKHRhcmVhKT0+ISF0YXJlYS5tYWluX2Zvcm0gJiYgdGFyZWEub3BlcmF0aXZvPT1kZXBvdC5yb3cub3BlcmF0aXZvKTtcclxuICAgIGRlcG90LnJvd0NvbnRyb2xzW2ZpZWxkTmFtZV0uaW5uZXJIVE1MPScnO1xyXG4gICAgdGFyZWFzLmZvckVhY2goKHRhcmVhOnt0YXJlYTpzdHJpbmcsIG5vbWJyZTpzdHJpbmcsIG1haW5fZm9ybTpJZEZvcm11bGFyaW99KT0+e1xyXG4gICAgICAgIGxldCBidXR0b25MYWJlbCA9IGAke2xhYmVsfSAke3RhcmVhLnRhcmVhfWA7XHJcbiAgICAgICAgbGV0IHZlciA9IGNyZWFyQm90b25WZXJBYnJpckVuY3Vlc3RhKFxyXG4gICAgICAgICAgICBkZXBvdC5yb3cub3BlcmF0aXZvIGFzIElkT3BlcmF0aXZvLFxyXG4gICAgICAgICAgICB0YXJlYS50YXJlYSBhcyBJZFRhcmVhLCBcclxuICAgICAgICAgICAgTnVtYmVyKGRlcG90LnJvdy5lbmMpLFxyXG4gICAgICAgICAgICBidXR0b25MYWJlbFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdmVyLnN0eWxlPSdtYXJnaW46MHB4IDJweDsnO1xyXG4gICAgICAgIGRlcG90LnJvd0NvbnRyb2xzW2ZpZWxkTmFtZV0uYXBwZW5kQ2hpbGQodmVyKTtcclxuICAgIH0pXHJcbn1cclxuXHJcbm15T3duLmNsaWVudFNpZGVzLmFicmlyPXtcclxuICAgIHByZXBhcmU6IChfZGVwb3QsIF9maWVsZE5hbWUpPT57fSxcclxuICAgIHVwZGF0ZTogKGRlcG90LCBmaWVsZE5hbWUpPT57XHJcbiAgICAgICAgdmFyIGxhYmVsOid2ZXInfCdhYnJpcicgPSBkZXBvdC5yb3cuY2FyZ2Fkb19kbT8ndmVyJzonYWJyaXInO1xyXG4gICAgICAgIGNyZWFyQm90b25lc1ZlckFicmlyVGFyZWFzKGRlcG90LGZpZWxkTmFtZSxsYWJlbCk7IC8vbm8gZXNwZXJvIHByb21lc2EgcG9ycXVlIG5vIGVzIG5lY2VzYXJpb1xyXG4gICAgfVxyXG59O1xyXG5cclxubXlPd24uY2xpZW50U2lkZXMuYWJyaXJSZWNlcGNpb249e1xyXG4gICAgcHJlcGFyZTogKF9kZXBvdCwgX2ZpZWxkTmFtZSk9Pnt9LFxyXG4gICAgdXBkYXRlOiAoZGVwb3QsIGZpZWxkTmFtZSk9PntcclxuICAgICAgICB2YXIgbGFiZWw6J3Zlcid8J2FicmlyJyA9IGRlcG90LnJvdy5jYXJnYWRvPyd2ZXInOidhYnJpcic7XHJcbiAgICAgICAgY3JlYXJCb3RvbmVzVmVyQWJyaXJUYXJlYXMoZGVwb3QsZmllbGROYW1lLGxhYmVsKTsgLy9ubyBlc3Blcm8gcHJvbWVzYSBwb3JxdWUgbm8gZXMgbmVjZXNhcmlvXHJcbiAgICB9XHJcbn07XHJcblxyXG5mdW5jdGlvbiBib3RvbkNsaWVudFNpZGVFbkdyaWxsYShvcHRzOiB7IG5vbWJyZUJvdG9uOiBzdHJpbmcsIGxsYW1hZGE6IChkZXBvdDogbXlPd24uRGVwb3QpID0+IFByb21pc2U8YW55PiB9KSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHByZXBhcmU6IGZ1bmN0aW9uIChkZXBvdDogbXlPd24uRGVwb3QsIGZpZWxkTmFtZTogc3RyaW5nKSB7XHJcbiAgICAgICAgICAgIHZhciB0ZCA9IGRlcG90LnJvd0NvbnRyb2xzW2ZpZWxkTmFtZV07XHJcbiAgICAgICAgICAgIHZhciBib3RvbiA9IGh0bWwuYnV0dG9uKG9wdHMubm9tYnJlQm90b24pLmNyZWF0ZSgpO1xyXG4gICAgICAgICAgICB0ZC5pbm5lckhUTUwgPSBcIlwiO1xyXG4gICAgICAgICAgICB0ZC5hcHBlbmRDaGlsZChib3Rvbik7XHJcbiAgICAgICAgICAgIHZhciByZXN0YXVyYXJCb3RvbiA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgIGJvdG9uLmRpc2FibGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICBib3Rvbi50ZXh0Q29udGVudCA9IG9wdHMubm9tYnJlQm90b247XHJcbiAgICAgICAgICAgICAgICBib3Rvbi5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAnJztcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgYm90b24ub25jbGljayA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgIGJvdG9uLmRpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIGJvdG9uLnRleHRDb250ZW50ID0gJ3Byb2Nlc2FuZG8uLi4nO1xyXG4gICAgICAgICAgICAgICAgb3B0cy5sbGFtYWRhKGRlcG90KS50aGVuKGFzeW5jIGZ1bmN0aW9uKHJlc3VsdCl7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYocmVzdWx0ICYmIHR5cGVvZiByZXN1bHQgPT09ICdvYmplY3QnICYmICdvaycgaW4gcmVzdWx0KXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYocmVzdWx0Lm9rKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBncmlkPWRlcG90Lm1hbmFnZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCBncmlkLnJldHJpZXZlUm93QW5kUmVmcmVzaChkZXBvdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGVwb3QuZGV0YWlsQ29udHJvbHMuaW5jb25zaXN0ZW5jaWFzKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBvdC5kZXRhaWxDb250cm9scy5pbmNvbnNpc3RlbmNpYXMuZm9yY2VEaXNwbGF5RGV0YWlsR3JpZCh7fSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdG9uLnRleHRDb250ZW50ID0gIHJlc3VsdC5tZXNzYWdlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm90b24udGl0bGUgPSByZXN1bHQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3Rvbi5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAnIzhGOCc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKHJlc3VsdC5tZXNzYWdlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KHJlc3RhdXJhckJvdG9uLCAyNTAwKTtcclxuICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uIChlcnIpIHtcclxuICAgICAgICAgICAgICAgICAgICBib3Rvbi50ZXh0Q29udGVudCA9ICdlcnJvcic7XHJcbiAgICAgICAgICAgICAgICAgICAgYm90b24uc3R5bGUuYmFja2dyb3VuZENvbG9yID0gJyNGRjgnO1xyXG4gICAgICAgICAgICAgICAgICAgIGFsZXJ0UHJvbWlzZShlcnIubWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vaWYgKChkZXBvdC5yb3cuY29uc2lzdGlkbz09bnVsbCAgJiYgZGVwb3Qucm93LnJlYSE9bnVsbCkgfHwgZGVwb3Qucm93Lm1vZGlmaWNhZG8hPW51bGwgJiYgZGVwb3Qucm93LmNvbnNpc3RpZG8hPW51bGwgJiYgZGVwb3Qucm93Lm1vZGlmaWNhZG8gPmRlcG90LnJvdy5jb25zaXN0aWRvKXtcclxuICAgICAgICAgICAgLy8gICAgYm90b24uc3R5bGUuYmFja2dyb3VuZENvbG9yPScjOENGJ1xyXG4gICAgICAgICAgICAvL31cclxuICAgICAgICB9ICAgICAgICBcclxuICAgIH07XHJcbn1cclxuXHJcblxyXG5teU93bi5jbGllbnRTaWRlcy5jb25zaXN0aXIgPSBib3RvbkNsaWVudFNpZGVFbkdyaWxsYSh7XHJcbiAgICBub21icmVCb3RvbjogJ2NvbnNpc3RpcicsXHJcbiAgICBsbGFtYWRhOiBmdW5jdGlvbiAoZGVwb3Q6IG15T3duLkRlcG90KSB7XHJcbiAgICAgICAgdmFyIGZpbHRyb1JlYT1jb25zaXN0aXJfZmlsdHJvKGRlcG90LnJvdy50YXJlYSwgZGVwb3Qucm93LnV0bF9yZWEsIGRlcG90LnJvdy5yZWEpXHJcbiAgICAgICAgcmV0dXJuIGZpbHRyb1JlYT8gbXlPd24uYWpheC5jb25zaXN0aXJfZW5jdWVzdGEoe1xyXG4gICAgICAgICAgICBvcGVyYXRpdm86IGRlcG90LnJvdy5vcGVyYXRpdm8sXHJcbiAgICAgICAgICAgIGlkX2Nhc286IGRlcG90LnJvdy5lbmNcclxuICAgICAgICB9KTogYWxlcnRQcm9taXNlKCdMYSBlbmN1ZXN0YSBkZWJlIHRlbmVyIGRhdG8gZW4gcmVhIHBhcmEgcG9kZXIgY29uc2lzdGlybGEuJyk7XHJcbiAgICB9XHJcbn0pO1xyXG5cclxubXlPd24ud1NjcmVlbnMuY29uc2lzdGlyX2VuY3Vlc3RhPXtcclxuICAgIHBhcmFtZXRlcnM6W1xyXG4gICAgICAgIHtuYW1lOidvcGVyYXRpdm8nICwgdHlwZU5hbWU6J3RleHQnLCBkZWZhdWx0VmFsdWU6T1BFUkFUSVZPX0RFRkFVTFQsIHJlZmVyZW5jZXM6J29wZXJhdGl2b3MnfSxcclxuICAgICAgICB7bmFtZTondGFyZWEnICAgICAsIHR5cGVOYW1lOid0ZXh0J30sXHJcbiAgICAgICAge25hbWU6J2VuY3Vlc3RhJyAgLCB0eXBlTmFtZTonaW50ZWdlcid9XHJcbiAgICBdLFxyXG4gICAgYXV0b3Byb2NlZDp0cnVlLFxyXG4gICAgbWFpbkFjdGlvbjphc3luYyAocGFyYW1zKT0+e1xyXG4gICAgICAgIHZhciB7b3BlcmF0aXZvLCB0YXJlYSwgZW5jdWVzdGEgfSA9IHBhcmFtcztcclxuICAgICAgICB2YXIgcmVzdWx0ID0gYXdhaXQgbXlPd24uYWpheC5jb25zaXN0aXJfZW5jdWVzdGEoe1xyXG4gICAgICAgICAgICBvcGVyYXRpdm86IG9wZXJhdGl2byxcclxuICAgICAgICAgICAgaWRfY2FzbzogZW5jdWVzdGFcclxuICAgICAgICB9KTtcclxuICAgICAgICBpZihyZXN1bHQub2spe1xyXG4gICAgICAgICAgICB2YXIgZml4ZWRGaWVsZHMgPSBbXTtcclxuICAgICAgICAgICAgZml4ZWRGaWVsZHMucHVzaCh7ZmllbGROYW1lOiAnb3BlcmF0aXZvJywgdmFsdWU6IG9wZXJhdGl2b30pO1xyXG4gICAgICAgICAgICBmaXhlZEZpZWxkcy5wdXNoKHtmaWVsZE5hbWU6ICd2aXZpZW5kYScsIHZhbHVlOiBlbmN1ZXN0YX0pO1xyXG4gICAgICAgICAgICB2YXIgbWFpbkxheW91dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtYWluX2xheW91dCcpITtcclxuICAgICAgICAgICAgdmFyIGRpdkdyaWxsYSA9IGh0bWwuZGl2KHtpZDonaW5jb25zaXN0ZW5jaWFzJ30pLmNyZWF0ZSgpO1xyXG4gICAgICAgICAgICBtYWluTGF5b3V0Lmluc2VydEJlZm9yZShkaXZHcmlsbGEsIG1haW5MYXlvdXQuZmlyc3RDaGlsZCk7XHJcbiAgICAgICAgICAgIG1haW5MYXlvdXQuaW5zZXJ0QmVmb3JlKFxyXG4gICAgICAgICAgICAgICAgY3JlYXJCb3RvblZlckFicmlyRW5jdWVzdGEoXHJcbiAgICAgICAgICAgICAgICAgICAgb3BlcmF0aXZvLFxyXG4gICAgICAgICAgICAgICAgICAgIHRhcmVhLFxyXG4gICAgICAgICAgICAgICAgICAgIGVuY3Vlc3RhLCBcclxuICAgICAgICAgICAgICAgICAgICBgaXIgYSBlbmN1ZXN0YSAke2VuY3Vlc3RhfWBcclxuICAgICAgICAgICAgICAgICksIFxyXG4gICAgICAgICAgICAgICAgbWFpbkxheW91dC5maXJzdENoaWxkXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIG15LnRhYmxlR3JpZChcImluY29uc2lzdGVuY2lhc1wiLCBkaXZHcmlsbGEse3RhYmxlRGVmOnt9LGZpeGVkRmllbGRzOiBmaXhlZEZpZWxkc30pO1xyXG4gICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IocmVzdWx0Lm1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxubXlPd24ud1NjcmVlbnMuZGVtbz1hc3luYyBmdW5jdGlvbihfYWRkclBhcmFtcyl7XHJcbiAgICAvLyBAdHMtaWdub3JlIGRlc3BsZWdhckZvcm11bGFyaW9BY3R1YWwgZ2xvYmFsXHJcbiAgICB3aW5kb3cuZGVzcGxlZ2FyRm9ybXVsYXJpb0FjdHVhbCh7bW9kb0RlbW86dHJ1ZX0pO1xyXG59XHJcblxyXG5mdW5jdGlvbiBhcnJheUZsYXQ8VD4oYXJyYXlzOlRbXVtdKTpUW117XHJcbiAgICByZXR1cm4gKFtdIGFzIFRbXSkuY29uY2F0LmFwcGx5KFtdLCBhcnJheXMpO1xyXG59XHJcbiJdfQ==
|
|
@@ -241,15 +241,18 @@ export declare function emergeAppDmEncu<T extends procesamiento.Constructor<proc
|
|
|
241
241
|
} & {
|
|
242
242
|
img?: string[] | undefined;
|
|
243
243
|
} & {
|
|
244
|
-
img
|
|
244
|
+
img: string[];
|
|
245
|
+
normal: string[];
|
|
245
246
|
} & {
|
|
246
247
|
img?: string[] | undefined;
|
|
247
248
|
} & {
|
|
248
249
|
img?: string[] | undefined;
|
|
249
250
|
} & {
|
|
250
|
-
img
|
|
251
|
+
img: string[];
|
|
252
|
+
normal: string[];
|
|
251
253
|
} & {
|
|
252
|
-
img
|
|
254
|
+
img: string[];
|
|
255
|
+
normal: string[];
|
|
253
256
|
} & {
|
|
254
257
|
img?: string[] | undefined;
|
|
255
258
|
} & {
|
|
@@ -257,7 +260,8 @@ export declare function emergeAppDmEncu<T extends procesamiento.Constructor<proc
|
|
|
257
260
|
} & {
|
|
258
261
|
img?: string[] | undefined;
|
|
259
262
|
} & {
|
|
260
|
-
img
|
|
263
|
+
img: string[];
|
|
264
|
+
normal: string[];
|
|
261
265
|
} & {
|
|
262
266
|
img?: string[] | undefined;
|
|
263
267
|
} & {
|
|
@@ -267,7 +271,8 @@ export declare function emergeAppDmEncu<T extends procesamiento.Constructor<proc
|
|
|
267
271
|
} & {
|
|
268
272
|
img?: string[] | undefined;
|
|
269
273
|
} & {
|
|
270
|
-
img
|
|
274
|
+
img: string[];
|
|
275
|
+
normal: string[];
|
|
271
276
|
} & {
|
|
272
277
|
img: string[];
|
|
273
278
|
normal: string[];
|
|
@@ -422,6 +427,16 @@ export declare function emergeAppDmEncu<T extends procesamiento.Constructor<proc
|
|
|
422
427
|
} & {
|
|
423
428
|
[k: string]: (context: procesamiento.ProcedureContext, defField: procesamiento.FieldDefinition, parameters: object) => any;
|
|
424
429
|
};
|
|
430
|
+
i18n: {
|
|
431
|
+
messages: Record<procesamiento.LangId, Record<string, string>>;
|
|
432
|
+
} & {
|
|
433
|
+
messages: Record<procesamiento.LangId, Record<string, string>>;
|
|
434
|
+
} & {
|
|
435
|
+
messages: Record<procesamiento.LangId, Record<string, string>>;
|
|
436
|
+
} & {
|
|
437
|
+
messages: Record<procesamiento.LangId, Record<string, string>>;
|
|
438
|
+
};
|
|
439
|
+
dumpDbTableFields: ((tableDefinition: procesamiento.TableDefinition) => string[]) & ((tableDefinition: procesamiento.TableDefinition) => string[]);
|
|
425
440
|
generateAndLoadTableDefs: (() => procesamiento.TableDefinitions) & (() => procesamiento.TableDefinitions);
|
|
426
441
|
generateBaseTableDef: ((tablaDatos: procesamiento.TablaDatos) => procesamiento.TableDefinition) & ((tablaDatos: procesamiento.TablaDatos) => procesamiento.TableDefinition) & ((tablaDatos: procesamiento.TablaDatos) => procesamiento.TableDefinition);
|
|
427
442
|
cargarGenerados: ((client: procesamiento.Client) => Promise<string>) & ((client: procesamiento.Client) => Promise<string>) & ((client: procesamiento.Client) => Promise<string>);
|
|
@@ -438,8 +453,8 @@ export declare function emergeAppDmEncu<T extends procesamiento.Constructor<proc
|
|
|
438
453
|
getTables: (() => procesamiento.TableItemDef[]) & (() => procesamiento.TableItemDef[]);
|
|
439
454
|
appendToTableDefinition: ((tableName: string, appenderFunction: (tableDef: procesamiento.TableDefinition, context?: procesamiento.TableContext | undefined) => void) => void) & ((tableName: string, appenderFunction: (tableDef: procesamiento.TableDefinition, context?: procesamiento.TableContext | undefined) => void) => void);
|
|
440
455
|
addUnloggedServices: ((mainApp: procesamiento.ExpressPlus, baseUrl: string) => void) & ((mainApp: procesamiento.ExpressPlus, baseUrl: string) => void);
|
|
441
|
-
inDbClient: (<
|
|
442
|
-
inTransaction: (<
|
|
456
|
+
inDbClient: (<T_1_1>(req: procesamiento.Request | null, doThisWithDbClient: (client: procesamiento.Client) => Promise<T_1_1>) => Promise<T_1_1>) & (<T_1>(req: procesamiento.Request | null, doThisWithDbClient: (client: procesamiento.Client) => Promise<T_1>) => Promise<T_1>);
|
|
457
|
+
inTransaction: (<T_2_1>(req: procesamiento.Request | null, doThisWithDbTransaction: (client: procesamiento.Client) => Promise<T_2_1>) => Promise<T_2_1>) & (<T_2>(req: procesamiento.Request | null, doThisWithDbTransaction: (client: procesamiento.Client) => Promise<T_2>) => Promise<T_2>);
|
|
443
458
|
procedureDefCompleter: ((procedureDef: procesamiento.ProcedureDef) => procesamiento.ProcedureDef) & ((procedureDef: procesamiento.ProcedureDef) => procesamiento.ProcedureDef);
|
|
444
459
|
tableDefAdapt: ((tableDef: procesamiento.TableDefinition, context: procesamiento.Context) => procesamiento.TableDefinition) & ((tableDef: procesamiento.TableDefinition, context: procesamiento.Context) => procesamiento.TableDefinition);
|
|
445
460
|
pushApp: ((dirname: string) => void) & ((dirname: string) => void);
|
|
@@ -457,8 +472,8 @@ export declare function emergeAppDmEncu<T extends procesamiento.Constructor<proc
|
|
|
457
472
|
}) & ((req: {} | procesamiento.Request, offlineMode?: boolean | undefined, opts?: procesamiento.OptsClientPage | undefined) => {
|
|
458
473
|
toHtmlDoc: () => string;
|
|
459
474
|
});
|
|
460
|
-
isThisProcedureAllowed: (<
|
|
461
|
-
[key: string]:
|
|
475
|
+
isThisProcedureAllowed: (<T_3>(context: procesamiento.Context, procedureDef: procesamiento.ProcedureDef, params: {
|
|
476
|
+
[key: string]: T_3;
|
|
462
477
|
}) => Promise<boolean>) & (<T_4>(context: procesamiento.Context, procedureDef: procesamiento.ProcedureDef, params: {
|
|
463
478
|
[key: string]: T_4;
|
|
464
479
|
}) => Promise<boolean>);
|
|
@@ -701,15 +716,18 @@ export declare var AppDmEncu: {
|
|
|
701
716
|
} & {
|
|
702
717
|
img?: string[] | undefined;
|
|
703
718
|
} & {
|
|
704
|
-
img
|
|
719
|
+
img: string[];
|
|
720
|
+
normal: string[];
|
|
705
721
|
} & {
|
|
706
722
|
img?: string[] | undefined;
|
|
707
723
|
} & {
|
|
708
724
|
img?: string[] | undefined;
|
|
709
725
|
} & {
|
|
710
|
-
img
|
|
726
|
+
img: string[];
|
|
727
|
+
normal: string[];
|
|
711
728
|
} & {
|
|
712
|
-
img
|
|
729
|
+
img: string[];
|
|
730
|
+
normal: string[];
|
|
713
731
|
} & {
|
|
714
732
|
img?: string[] | undefined;
|
|
715
733
|
} & {
|
|
@@ -717,7 +735,8 @@ export declare var AppDmEncu: {
|
|
|
717
735
|
} & {
|
|
718
736
|
img?: string[] | undefined;
|
|
719
737
|
} & {
|
|
720
|
-
img
|
|
738
|
+
img: string[];
|
|
739
|
+
normal: string[];
|
|
721
740
|
} & {
|
|
722
741
|
img?: string[] | undefined;
|
|
723
742
|
} & {
|
|
@@ -727,7 +746,8 @@ export declare var AppDmEncu: {
|
|
|
727
746
|
} & {
|
|
728
747
|
img?: string[] | undefined;
|
|
729
748
|
} & {
|
|
730
|
-
img
|
|
749
|
+
img: string[];
|
|
750
|
+
normal: string[];
|
|
731
751
|
} & {
|
|
732
752
|
img: string[];
|
|
733
753
|
normal: string[];
|
|
@@ -882,6 +902,16 @@ export declare var AppDmEncu: {
|
|
|
882
902
|
} & {
|
|
883
903
|
[k: string]: (context: procesamiento.ProcedureContext, defField: procesamiento.FieldDefinition, parameters: object) => any;
|
|
884
904
|
};
|
|
905
|
+
i18n: {
|
|
906
|
+
messages: Record<procesamiento.LangId, Record<string, string>>;
|
|
907
|
+
} & {
|
|
908
|
+
messages: Record<procesamiento.LangId, Record<string, string>>;
|
|
909
|
+
} & {
|
|
910
|
+
messages: Record<procesamiento.LangId, Record<string, string>>;
|
|
911
|
+
} & {
|
|
912
|
+
messages: Record<procesamiento.LangId, Record<string, string>>;
|
|
913
|
+
};
|
|
914
|
+
dumpDbTableFields: ((tableDefinition: procesamiento.TableDefinition) => string[]) & ((tableDefinition: procesamiento.TableDefinition) => string[]);
|
|
885
915
|
generateAndLoadTableDefs: (() => procesamiento.TableDefinitions) & (() => procesamiento.TableDefinitions);
|
|
886
916
|
generateBaseTableDef: ((tablaDatos: procesamiento.TablaDatos) => procesamiento.TableDefinition) & ((tablaDatos: procesamiento.TablaDatos) => procesamiento.TableDefinition) & ((tablaDatos: procesamiento.TablaDatos) => procesamiento.TableDefinition);
|
|
887
917
|
cargarGenerados: ((client: procesamiento.Client) => Promise<string>) & ((client: procesamiento.Client) => Promise<string>) & ((client: procesamiento.Client) => Promise<string>);
|
|
@@ -898,8 +928,8 @@ export declare var AppDmEncu: {
|
|
|
898
928
|
getTables: (() => procesamiento.TableItemDef[]) & (() => procesamiento.TableItemDef[]);
|
|
899
929
|
appendToTableDefinition: ((tableName: string, appenderFunction: (tableDef: procesamiento.TableDefinition, context?: procesamiento.TableContext | undefined) => void) => void) & ((tableName: string, appenderFunction: (tableDef: procesamiento.TableDefinition, context?: procesamiento.TableContext | undefined) => void) => void);
|
|
900
930
|
addUnloggedServices: ((mainApp: procesamiento.ExpressPlus, baseUrl: string) => void) & ((mainApp: procesamiento.ExpressPlus, baseUrl: string) => void);
|
|
901
|
-
inDbClient: (<
|
|
902
|
-
inTransaction: (<
|
|
931
|
+
inDbClient: (<T_1_1>(req: procesamiento.Request | null, doThisWithDbClient: (client: procesamiento.Client) => Promise<T_1_1>) => Promise<T_1_1>) & (<T>(req: procesamiento.Request | null, doThisWithDbClient: (client: procesamiento.Client) => Promise<T>) => Promise<T>);
|
|
932
|
+
inTransaction: (<T_2_1>(req: procesamiento.Request | null, doThisWithDbTransaction: (client: procesamiento.Client) => Promise<T_2_1>) => Promise<T_2_1>) & (<T_1>(req: procesamiento.Request | null, doThisWithDbTransaction: (client: procesamiento.Client) => Promise<T_1>) => Promise<T_1>);
|
|
903
933
|
procedureDefCompleter: ((procedureDef: procesamiento.ProcedureDef) => procesamiento.ProcedureDef) & ((procedureDef: procesamiento.ProcedureDef) => procesamiento.ProcedureDef);
|
|
904
934
|
tableDefAdapt: ((tableDef: procesamiento.TableDefinition, context: procesamiento.Context) => procesamiento.TableDefinition) & ((tableDef: procesamiento.TableDefinition, context: procesamiento.Context) => procesamiento.TableDefinition);
|
|
905
935
|
pushApp: ((dirname: string) => void) & ((dirname: string) => void);
|
|
@@ -917,10 +947,10 @@ export declare var AppDmEncu: {
|
|
|
917
947
|
}) & ((req: {} | procesamiento.Request, offlineMode?: boolean | undefined, opts?: procesamiento.OptsClientPage | undefined) => {
|
|
918
948
|
toHtmlDoc: () => string;
|
|
919
949
|
});
|
|
920
|
-
isThisProcedureAllowed: (<
|
|
921
|
-
[key: string]:
|
|
922
|
-
}) => Promise<boolean>) & (<
|
|
923
|
-
[key: string]:
|
|
950
|
+
isThisProcedureAllowed: (<T_3>(context: procesamiento.Context, procedureDef: procesamiento.ProcedureDef, params: {
|
|
951
|
+
[key: string]: T_3;
|
|
952
|
+
}) => Promise<boolean>) & (<T_2>(context: procesamiento.Context, procedureDef: procesamiento.ProcedureDef, params: {
|
|
953
|
+
[key: string]: T_2;
|
|
924
954
|
}) => Promise<boolean>);
|
|
925
955
|
};
|
|
926
956
|
} & (new (...args: any[]) => {
|
|
@@ -1033,15 +1063,18 @@ export declare var AppDmEncu: {
|
|
|
1033
1063
|
} & {
|
|
1034
1064
|
img?: string[] | undefined;
|
|
1035
1065
|
} & {
|
|
1036
|
-
img
|
|
1066
|
+
img: string[];
|
|
1067
|
+
normal: string[];
|
|
1037
1068
|
} & {
|
|
1038
1069
|
img?: string[] | undefined;
|
|
1039
1070
|
} & {
|
|
1040
1071
|
img?: string[] | undefined;
|
|
1041
1072
|
} & {
|
|
1042
|
-
img
|
|
1073
|
+
img: string[];
|
|
1074
|
+
normal: string[];
|
|
1043
1075
|
} & {
|
|
1044
|
-
img
|
|
1076
|
+
img: string[];
|
|
1077
|
+
normal: string[];
|
|
1045
1078
|
};
|
|
1046
1079
|
optsGenericForAll: {
|
|
1047
1080
|
allowedExts?: string[] | undefined;
|
|
@@ -1113,11 +1146,18 @@ export declare var AppDmEncu: {
|
|
|
1113
1146
|
} & {
|
|
1114
1147
|
[k: string]: (context: procesamiento.ProcedureContext, defField: procesamiento.FieldDefinition, parameters: object) => any;
|
|
1115
1148
|
};
|
|
1149
|
+
i18n: {
|
|
1150
|
+
messages: Record<procesamiento.LangId, Record<string, string>>;
|
|
1151
|
+
} & {
|
|
1152
|
+
messages: Record<procesamiento.LangId, Record<string, string>>;
|
|
1153
|
+
};
|
|
1154
|
+
dumpDbTableFields(tableDefinition: procesamiento.TableDefinition): string[];
|
|
1116
1155
|
}) & (new (...args: any[]) => {
|
|
1117
1156
|
getProcedures(): Promise<procesamiento.ProcedureDef[]>;
|
|
1118
1157
|
clientIncludes(req: procesamiento.Request, hideBEPlusInclusions: procesamiento.OptsClientPage): procesamiento.ClientModuleDefinition[];
|
|
1119
1158
|
configStaticConfig(): void;
|
|
1120
1159
|
getMenu(): procesamiento.MenuDefinition;
|
|
1160
|
+
postConfig(): Promise<void>;
|
|
1121
1161
|
prepareGetTables(): void;
|
|
1122
1162
|
generateAndLoadTableDefs(): procesamiento.TableDefinitions;
|
|
1123
1163
|
tablasDatos: procesamiento.TablaDatos[];
|
|
@@ -1182,7 +1222,8 @@ export declare var AppDmEncu: {
|
|
|
1182
1222
|
} & {
|
|
1183
1223
|
img?: string[] | undefined;
|
|
1184
1224
|
} & {
|
|
1185
|
-
img
|
|
1225
|
+
img: string[];
|
|
1226
|
+
normal: string[];
|
|
1186
1227
|
};
|
|
1187
1228
|
optsGenericForAll: {
|
|
1188
1229
|
allowedExts?: string[] | undefined;
|
|
@@ -1222,6 +1263,9 @@ export declare var AppDmEncu: {
|
|
|
1222
1263
|
} & {
|
|
1223
1264
|
[k: string]: (context: procesamiento.ProcedureContext, defField: procesamiento.FieldDefinition, parameters: object) => any;
|
|
1224
1265
|
};
|
|
1266
|
+
i18n: {
|
|
1267
|
+
messages: Record<procesamiento.LangId, Record<string, string>>;
|
|
1268
|
+
};
|
|
1225
1269
|
}) & (new (...args: any[]) => {
|
|
1226
1270
|
configStaticConfig(): void;
|
|
1227
1271
|
getProcedures(): Promise<procesamiento.ProcedureDef[]>;
|
|
@@ -1267,9 +1311,11 @@ export declare var AppDmEncu: {
|
|
|
1267
1311
|
[k: string]: Partial<procesamiento.FieldDefinition>;
|
|
1268
1312
|
};
|
|
1269
1313
|
exts: {
|
|
1270
|
-
img
|
|
1314
|
+
img: string[];
|
|
1315
|
+
normal: string[];
|
|
1271
1316
|
} & {
|
|
1272
|
-
img
|
|
1317
|
+
img: string[];
|
|
1318
|
+
normal: string[];
|
|
1273
1319
|
};
|
|
1274
1320
|
optsGenericForAll: {
|
|
1275
1321
|
allowedExts?: string[] | undefined;
|
|
@@ -1293,6 +1339,9 @@ export declare var AppDmEncu: {
|
|
|
1293
1339
|
} & {
|
|
1294
1340
|
[k: string]: (context: procesamiento.ProcedureContext, defField: procesamiento.FieldDefinition, parameters: object) => any;
|
|
1295
1341
|
};
|
|
1342
|
+
i18n: {
|
|
1343
|
+
messages: Record<procesamiento.LangId, Record<string, string>>;
|
|
1344
|
+
};
|
|
1296
1345
|
}) & (new (...args: any[]) => {
|
|
1297
1346
|
configStaticConfig(): void;
|
|
1298
1347
|
generateBaseTableDef(tablaDatos: procesamiento.TablaDatos): procesamiento.TableDefinition;
|
|
@@ -1337,9 +1386,11 @@ export declare var AppDmEncu: {
|
|
|
1337
1386
|
[k: string]: Partial<procesamiento.FieldDefinition>;
|
|
1338
1387
|
};
|
|
1339
1388
|
exts: {
|
|
1340
|
-
img
|
|
1389
|
+
img: string[];
|
|
1390
|
+
normal: string[];
|
|
1341
1391
|
} & {
|
|
1342
|
-
img
|
|
1392
|
+
img: string[];
|
|
1393
|
+
normal: string[];
|
|
1343
1394
|
};
|
|
1344
1395
|
optsGenericForAll: {
|
|
1345
1396
|
allowedExts?: string[] | undefined;
|
|
@@ -1363,6 +1414,10 @@ export declare var AppDmEncu: {
|
|
|
1363
1414
|
} & {
|
|
1364
1415
|
[k: string]: (context: procesamiento.ProcedureContext, defField: procesamiento.FieldDefinition, parameters: object) => any;
|
|
1365
1416
|
};
|
|
1417
|
+
dumpDbTableFields(tableDefinition: procesamiento.TableDefinition): string[];
|
|
1418
|
+
i18n: {
|
|
1419
|
+
messages: Record<procesamiento.LangId, Record<string, string>>;
|
|
1420
|
+
};
|
|
1366
1421
|
}) & {
|
|
1367
1422
|
new (...args: any[]): {
|
|
1368
1423
|
tablasDatos: procesamiento.TablaDatos[];
|
|
@@ -1402,7 +1457,8 @@ export declare var AppDmEncu: {
|
|
|
1402
1457
|
[k: string]: Partial<procesamiento.FieldDefinition>;
|
|
1403
1458
|
};
|
|
1404
1459
|
exts: {
|
|
1405
|
-
img
|
|
1460
|
+
img: string[];
|
|
1461
|
+
normal: string[];
|
|
1406
1462
|
};
|
|
1407
1463
|
optsGenericForAll: {
|
|
1408
1464
|
allowedExts?: string[] | undefined;
|
|
@@ -1427,8 +1483,8 @@ export declare var AppDmEncu: {
|
|
|
1427
1483
|
addUnloggedServices(mainApp: procesamiento.ExpressPlus, baseUrl: string): void;
|
|
1428
1484
|
addLoggedServices(): void;
|
|
1429
1485
|
getProcedures(): Promise<procesamiento.ProcedureDef[]>;
|
|
1430
|
-
inDbClient<
|
|
1431
|
-
inTransaction<
|
|
1486
|
+
inDbClient<T_1>(req: procesamiento.Request | null, doThisWithDbClient: (client: procesamiento.Client) => Promise<T_1>): Promise<T_1>;
|
|
1487
|
+
inTransaction<T_2>(req: procesamiento.Request | null, doThisWithDbTransaction: (client: procesamiento.Client) => Promise<T_2>): Promise<T_2>;
|
|
1432
1488
|
procedureDefCompleter(procedureDef: procesamiento.ProcedureDef): procesamiento.ProcedureDef;
|
|
1433
1489
|
tableDefAdapt(tableDef: procesamiento.TableDefinition, context: procesamiento.Context): procesamiento.TableDefinition;
|
|
1434
1490
|
pushApp(dirname: string): void;
|
|
@@ -1443,8 +1499,8 @@ export declare var AppDmEncu: {
|
|
|
1443
1499
|
mainPage(req: {} | procesamiento.Request, offlineMode?: boolean | undefined, opts?: procesamiento.OptsClientPage | undefined): {
|
|
1444
1500
|
toHtmlDoc: () => string;
|
|
1445
1501
|
};
|
|
1446
|
-
isThisProcedureAllowed<
|
|
1447
|
-
[key: string]:
|
|
1502
|
+
isThisProcedureAllowed<T_3_1>(context: procesamiento.Context, procedureDef: procesamiento.ProcedureDef, params: {
|
|
1503
|
+
[key: string]: T_3_1;
|
|
1448
1504
|
}): Promise<boolean>;
|
|
1449
1505
|
};
|
|
1450
1506
|
prefixTableName(tableName: string, prefix: string): string;
|