general-library-union 2.9.97 → 2.9.98

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.
@@ -345,7 +345,7 @@ export class CarguePlantillaGeneralComponent {
345
345
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: CarguePlantillaGeneralComponent, deps: [{ token: i1.PlantillasService }, { token: i2.AuthService }, { token: i3.TranslateService }, { token: i4.CargarControlFuncionalidadService }, { token: i5.ConfirmationService }, { token: i6.ToastService }, { token: i7.CargarArchivosService }, { token: i8.EncriptadoBasicoService }, { token: i9.GeneralPipe }, { token: i10.UtilsService }], target: i0.ɵɵFactoryTarget.Component });
346
346
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.4", type: CarguePlantillaGeneralComponent, isStandalone: true, selector: "app-cargue-plantilla-general", providers: [
347
347
  ConfirmationService
348
- ], viewQueries: [{ propertyName: "popupConvertirPlantillasComponent", first: true, predicate: PopupConvertirPlantillasComponent, descendants: true }, { propertyName: "miFormulario", first: true, predicate: ["miFormulario"], descendants: true }, { propertyName: "treeComponent", first: true, predicate: ["tree"], descendants: true }], ngImport: i0, template: "<div id=\"cargue-plantillas\">\r\n<p-confirmPopup key=\"eliminarCarpeta\"></p-confirmPopup>\r\n<p-confirmPopup key=\"eliminarArchivo\"></p-confirmPopup>\r\n\r\n<h1 class=\"mb-4\">{{'cargue' | translate}} {{'plantillas' | translate}}</h1>\r\n\r\n<div class=\"p-fluid p-formgrid grid\">\r\n\r\n <div class=\"field col-12 md:col-6 lg:col-5 card p-5\">\r\n <div class=\"flex justify-content-between align-items-center justify-content-center relative\">\r\n <input type=\"text\" pInputText [(ngModel)]=\"filterValue\" placeholder=\"{{'filtro' | translate}}\"\r\n (keydown)=\"filtrarEnter($event)\" />\r\n <button type=\"button\" pButton pRipple icon=\"pi pi-search text-xl\" (click)=\"aplicarFiltro()\"\r\n class=\"p-element p-ripple p-button-rounded p-button-secondary p-button p-component p-button-icon-only absolute right-0 border-none bg-white-alpha-10\"\r\n tooltipPosition=\"bottom\" pTooltip=\"Editar HTML\"></button>\r\n </div>\r\n\r\n <p-tree #tree scrollHeight=\"670px\" [value]=\"filteredFiles\" selectionMode=\"single\" [(selection)]=\"dataSelected\"\r\n [filter]=\"false\" [filterPlaceholder]=\"'filtro' | translate\" filterMode=\"strict\"\r\n (onNodeSelect)=\"seleccionarArchivo($event)\" [loading]=\"loading\"\r\n (onNodeUnselect)=\"deseleccionarArchivo($event)\"></p-tree>\r\n </div>\r\n\r\n <!-- OPCINES DIRECTORIOS - ARCHIVOS -->\r\n <div class=\"field col-12 md:col-6 lg:col-7 p-0 pl-3\">\r\n\r\n @if(this.loading){\r\n <p-progressBar mode=\"indeterminate\" [style]=\"{ height: '6px' }\"></p-progressBar>\r\n }\r\n\r\n @if(!this.loading){\r\n <div class=\"encabezado-acciones sombra-caja mb-3\">\r\n\r\n <!-- CARPETA -->\r\n @if(archivoSeleccionado.expanded){\r\n <div class=\"flex align-items-center\">\r\n <h1 class=\"text-xl mt-2 mb-4 mr-3\">Carpeta: </h1>\r\n <h5 class=\"text-sm mt-2 mb-4\"> {{archivoSeleccionado.label}} </h5>\r\n </div>\r\n\r\n <div class=\"flex justify-content-between\">\r\n\r\n <!-- Convertir -->\r\n <button type=\"button\" pButton pRipple (click)=\"convertirArchivos()\"\r\n *ngIf=\"verConvertir && controlFuncionService.getControlFuncionalidad('seguplacor:guardar')\"\r\n tooltipPosition=\"bottom\" label=\"{{'convertir' | translate}}\"\r\n class=\"w-full mr-3 p-button-secondary boton-accion-principal color-500\"\r\n pTooltip=\"Convertir archivo\" tooltipPosition=\"bottom\">\r\n <div class=\"contenedor-icono-acciones-principal\">\r\n <i class=\"pi pi-arrow-right-arrow-left color-500\"></i>\r\n </div>\r\n </button>\r\n\r\n <!--Nueva Carpeta-->\r\n <button *ngIf=\"controlFuncionService.getControlFuncionalidad('seguplacor:guardar')\" pButton pRipple\r\n class=\"w-full mr-3 p-button-secondary boton-accion-principal color-500\"\r\n label=\"{{'link_nuevo' | translate}}\" (click)=\"crearCarpeta()\">\r\n <div class=\"contenedor-icono-acciones-principal\">\r\n <i class=\"glyphicons glyphicons-plus color-500\"></i>\r\n </div>\r\n </button>\r\n\r\n <!--Eliminar-->\r\n <div class=\"btn-fileupload-claro\">\r\n <button *ngIf=\"controlFuncionService.getControlFuncionalidad('seguplacor:guardar')\" pButton pRipple\r\n class=\"p-button p-button-secondary font-semibold flex-shrink-0 boton-accion-principal mr-3\"\r\n label=\"{{'link_eliminar' | translate}}\" (click)=\"eliminarCarpeta()\">\r\n <div class=\"contenedor-icono-acciones-principal\">\r\n <i style=\"color: var(--color-500)\" class=\"glyphicons glyphicons-bin\"></i>\r\n </div>\r\n </button>\r\n </div>\r\n\r\n <!-- Cargar Archivo -->\r\n <div class=\"btn-fileupload-claro\" [ngClass]=\"{ 'min-width-100': !verConvertir, 'min-width-20': verConvertir }\">\r\n <p-fileUpload #fubauto mode=\"basic\" [auto]=\"true\" [customUpload]=\"true\" chooseIcon=\"pi pi-paperclip\"\r\n *ngIf=\"controlFuncionService.getControlFuncionalidad('seguplacor:guardar')\"\r\n chooseLabel=\"{{'link_subirarchivos' | translate}}\" (onSelect)=\"cargarNuevo($event, fubauto)\">\r\n <div class=\"contenedor-icono-acciones-principal\">\r\n <i class=\"pi pi-trash\"></i>\r\n </div>\r\n </p-fileUpload>\r\n </div>\r\n </div>\r\n }\r\n\r\n <!-- ARCHIVO-->\r\n @if(!archivoSeleccionado.expanded){\r\n\r\n <div class=\"flex align-items-center\">\r\n <h1 class=\"text-xl mt-2 mb-4 mr-3\">Archivo: </h1>\r\n <h5 class=\"text-sm mt-2 mb-4\"> {{archivoSeleccionado.label}} </h5>\r\n </div>\r\n\r\n <div class=\"flex justify-content-end\">\r\n @if(archivoSeleccionado.label.includes('.html')){\r\n\r\n <!--EDITAR HTML-->\r\n <button type=\"button\" pButton pRipple icon=\"pi pi-code text-xl color-500\" (click)=\"editarAction()\"\r\n class=\"mr-3 w-full p-button-secondary boton-accion-principal \" label=\"Editar HTML\">\r\n </button>\r\n }\r\n\r\n <!-- DESCARGAR-->\r\n <button pButton pRipple class=\"mr-3 w-full p-button-secondary boton-accion-principal color-500\"\r\n label=\"{{'link_descargar' | translate}}\" (click)=\"descargarAnexo()\"\r\n *ngIf=\"controlFuncionService.getControlFuncionalidad('seguplacor:descargar')\">\r\n <div class=\"contenedor-icono-acciones-principal\">\r\n <i class=\"glyphicons glyphicons-download color-500\"></i>\r\n </div>\r\n </button>\r\n\r\n <!--ELIMINAR-->\r\n <button pButton pRipple class=\"w-full p-button-secondary boton-accion-principal color-500\"\r\n label=\"{{'link_eliminar' | translate}}\" (click)=\"eliminarArchivo()\"\r\n *ngIf=\"controlFuncionService.getControlFuncionalidad('seguplacor:guardar')\">\r\n <div class=\"contenedor-icono-acciones-principal\">\r\n <i class=\"glyphicons glyphicons-bin color-500\"></i>\r\n </div>\r\n </button>\r\n </div>\r\n }\r\n </div>\r\n }\r\n\r\n @if(archivoSeleccionado.expanded && isVisualizarCrearCaperta){\r\n <div class=\"card\">\r\n\r\n <h5 class=\"mt-2\"><i class=\"glyphicons glyphicons-note\"></i> Nueva carpeta</h5>\r\n\r\n <form #miFormulario=\"ngForm\">\r\n <!-- campos -->\r\n <div class=\"flex mb-3\">\r\n <!-- Nombre -->\r\n <div class=\"w-full p-0 mb-0\">\r\n <span class=\"p-float-label mr-2\">\r\n <input pInputText id=\"id_numero_de_evento\" [(ngModel)]=\"nomNuevaCarpeta\" required\r\n name=\"nombreCarpeta\">\r\n <label for=\"id_numero_de_evento\">{{'nombre' | translate}} *</label>\r\n </span>\r\n </div>\r\n\r\n <div class=\"flex justify-content-end\">\r\n <!--Guardar Carpeta-->\r\n <button pButton pRipple class=\"mr-2 p-button-raised\" icon=\"glyphicons glyphicons-floppy-save\"\r\n [label]=\"('link_guardar' | translate)\" (click)=\"guardarCarpeta()\">\r\n </button>\r\n </div>\r\n </div>\r\n </form>\r\n\r\n </div>\r\n }\r\n <!-- EDITOR DE HTML -->\r\n <div *ngIf=\"isHtml() && mostrarEditor\">\r\n\r\n <div class=\"flex justify-content-end align-items-center mb-3\">\r\n <!-- Bot\u00F3n guardar HTML -->\r\n <button pButton pRipple label=\"{{'link_guardar' | translate }}\" (click)=\"guardarHtml()\"\r\n icon=\"glyphicons glyphicons-floppy-save\" class=\"p-button-raised\"\r\n *ngIf=\"controlFuncionService.getControlFuncionalidad('seguplacor:guardar')\"></button>\r\n </div>\r\n\r\n <p-editor id=\"editor\" [style]=\"{ height: '500px' }\" required [(ngModel)]=\"modificarHTML\"\r\n name=\"htmlPublicacion\"></p-editor>\r\n\r\n </div>\r\n </div>\r\n</div>\r\n\r\n@if(isMostrarPopupConvertir){\r\n<app-popup-convertir-plantillas (regresar)=\"regresarPopupConvertir($event)\"></app-popup-convertir-plantillas>\r\n}\r\n\r\n</div>", styles: [":host ::ng-deep #cargue-plantillas .p-fluid .p-fileupload .p-button{width:100%;background:var(--color-85);border:none;box-shadow:none;color:var(--color-500);border-radius:10px}:host ::ng-deep #cargue-plantillas .p-fluid .p-fileupload .p-button:hover{background:var(--color-100)!important}:host ::ng-deep #cargue-plantillas .min-width-20{min-width:20%}:host ::ng-deep #cargue-plantillas .min-width-100{min-width:30%}#cargue-plantillas .btn-fileupload-claro .p-button{background:var(--color-85)!important;color:var(--color-500)!important;border-radius:10px}#cargue-plantillas .btn-fileupload-claro .p-button:hover{background:var(--color-100)!important}#cargue-plantillas .btn-fileupload-claro .contenedor-icono-acciones-principal{background:#fff;margin-right:8px;padding:12px}#cargue-plantillas .btn-fileupload-claro .boton-accion-principal i{margin:0!important}#cargue-plantillas .contenedor-icono-acciones-principal{display:inline-block;background-color:#fff;border-radius:50%;width:25px;height:25px;display:flex;align-items:center;justify-content:center}#cargue-plantillas .boton-accion-principal i{margin-right:0!important}:host ::ng-deep span.p-button-icon.p-button-icon-left.pi.pi-paperclip{padding:6px;background:#fff;border:none;border-radius:50%;color:var(--color-400)}:host ::ng-deep span.p-button-icon.p-button-icon-left.pi.pi-code{background:#fff;padding:5px;border-radius:50%}\n"], dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i11.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i11.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: TreeModule }, { kind: "component", type: i12.Tree, selector: "p-tree", inputs: ["value", "selectionMode", "loadingMode", "selection", "style", "styleClass", "contextMenu", "layout", "draggableScope", "droppableScope", "draggableNodes", "droppableNodes", "metaKeySelection", "propagateSelectionUp", "propagateSelectionDown", "loading", "loadingIcon", "emptyMessage", "ariaLabel", "togglerAriaLabel", "ariaLabelledBy", "validateDrop", "filter", "filterBy", "filterMode", "filterPlaceholder", "filteredNodes", "filterLocale", "scrollHeight", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "indentation", "_templateMap", "trackBy", "virtualNodeHeight"], outputs: ["selectionChange", "onNodeSelect", "onNodeUnselect", "onNodeExpand", "onNodeCollapse", "onNodeContextMenuSelect", "onNodeDrop", "onLazyLoad", "onScroll", "onScrollIndexChange", "onFilter"] }, { kind: "ngmodule", type: InputTextModule }, { kind: "directive", type: i13.InputText, selector: "[pInputText]", inputs: ["variant"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i14.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading", "severity", "raised", "rounded", "text", "outlined", "size", "plain"] }, { kind: "ngmodule", type: SplitButtonModule }, { kind: "directive", type: i15.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "ngmodule", type: ConfirmPopupModule }, { kind: "component", type: i16.ConfirmPopup, selector: "p-confirmPopup", inputs: ["key", "defaultFocus", "showTransitionOptions", "hideTransitionOptions", "autoZIndex", "baseZIndex", "style", "styleClass", "visible"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i17.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i17.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i17.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i17.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i17.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i17.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i17.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FieldsetModule }, { kind: "ngmodule", type: FileUploadModule }, { kind: "component", type: i18.FileUpload, selector: "p-fileUpload", inputs: ["name", "url", "method", "multiple", "accept", "disabled", "auto", "withCredentials", "maxFileSize", "invalidFileSizeMessageSummary", "invalidFileSizeMessageDetail", "invalidFileTypeMessageSummary", "invalidFileTypeMessageDetail", "invalidFileLimitMessageDetail", "invalidFileLimitMessageSummary", "style", "styleClass", "previewWidth", "chooseLabel", "uploadLabel", "cancelLabel", "chooseIcon", "uploadIcon", "cancelIcon", "showUploadButton", "showCancelButton", "mode", "headers", "customUpload", "fileLimit", "uploadStyleClass", "cancelStyleClass", "removeStyleClass", "chooseStyleClass", "files"], outputs: ["onBeforeUpload", "onSend", "onUpload", "onError", "onClear", "onRemove", "onSelect", "onProgress", "uploadHandler", "onImageError", "onRemoveUploadedFile"] }, { kind: "component", type: i19.ProgressBar, selector: "p-progressBar", inputs: ["value", "showValue", "styleClass", "style", "unit", "mode", "color"] }, { kind: "component", type: PopupConvertirPlantillasComponent, selector: "app-popup-convertir-plantillas", inputs: ["showDialog"], outputs: ["onSelected", "regresar"] }, { kind: "ngmodule", type: EditorModule }, { kind: "component", type: i20.Editor, selector: "p-editor", inputs: ["style", "styleClass", "placeholder", "formats", "modules", "bounds", "scrollingContainer", "debug", "readonly"], outputs: ["onInit", "onTextChange", "onSelectionChange"] }, { kind: "ngmodule", type: ProgressBarModule }] });
348
+ ], viewQueries: [{ propertyName: "popupConvertirPlantillasComponent", first: true, predicate: PopupConvertirPlantillasComponent, descendants: true }, { propertyName: "miFormulario", first: true, predicate: ["miFormulario"], descendants: true }, { propertyName: "treeComponent", first: true, predicate: ["tree"], descendants: true }], ngImport: i0, template: "<div id=\"cargue-plantillas\">\r\n<p-confirmPopup key=\"eliminarCarpeta\"></p-confirmPopup>\r\n<p-confirmPopup key=\"eliminarArchivo\"></p-confirmPopup>\r\n\r\n<h1 class=\"mb-4\">{{'cargue' | translate}} {{'plantillas' | translate}}</h1>\r\n\r\n<div class=\"p-fluid p-formgrid grid\">\r\n\r\n <div class=\"field col-12 md:col-6 lg:col-5 card p-5\">\r\n <div class=\"flex justify-content-between align-items-center justify-content-center relative\">\r\n <input type=\"text\" pInputText [(ngModel)]=\"filterValue\" placeholder=\"{{'filtro' | translate}}\"\r\n (keydown)=\"filtrarEnter($event)\" />\r\n <button type=\"button\" pButton pRipple icon=\"pi pi-search text-xl\" (click)=\"aplicarFiltro()\"\r\n class=\"p-element p-ripple p-button-rounded p-button-secondary p-button p-component p-button-icon-only absolute right-0 border-none bg-white-alpha-10\"\r\n tooltipPosition=\"bottom\" pTooltip=\"Editar HTML\"></button>\r\n </div>\r\n\r\n <p-tree #tree scrollHeight=\"670px\" [value]=\"filteredFiles\" selectionMode=\"single\" [(selection)]=\"dataSelected\"\r\n [filter]=\"false\" [filterPlaceholder]=\"'filtro' | translate\" filterMode=\"strict\"\r\n (onNodeSelect)=\"seleccionarArchivo($event)\" [loading]=\"loading\"\r\n (onNodeUnselect)=\"deseleccionarArchivo($event)\"></p-tree>\r\n </div>\r\n\r\n <!-- OPCINES DIRECTORIOS - ARCHIVOS -->\r\n <div class=\"field col-12 md:col-6 lg:col-7 p-0 pl-3\">\r\n\r\n @if(this.loading){\r\n <p-progressBar mode=\"indeterminate\" [style]=\"{ height: '6px' }\"></p-progressBar>\r\n }\r\n\r\n @if(!this.loading){\r\n <div class=\"encabezado-acciones sombra-caja mb-3\">\r\n\r\n <!-- CARPETA -->\r\n @if(archivoSeleccionado.expanded){\r\n <div class=\"flex align-items-center\">\r\n <h1 class=\"text-xl mt-2 mb-4 mr-3\">Carpeta: </h1>\r\n <h5 class=\"text-sm mt-2 mb-4\"> {{archivoSeleccionado.label}} </h5>\r\n </div>\r\n\r\n <div class=\"flex justify-content-between\">\r\n\r\n <!-- Convertir -->\r\n <button type=\"button\" pButton pRipple (click)=\"convertirArchivos()\"\r\n *ngIf=\"verConvertir && controlFuncionService.getControlFuncionalidad('seguplacor:guardar')\"\r\n tooltipPosition=\"bottom\" label=\"{{'convertir' | translate}}\"\r\n class=\"w-full mr-3 p-button-secondary boton-accion-principal color-500\"\r\n pTooltip=\"Convertir archivo\" tooltipPosition=\"bottom\">\r\n <div class=\"contenedor-icono-acciones-principal\">\r\n <i class=\"pi pi-arrow-right-arrow-left color-500\"></i>\r\n </div>\r\n </button>\r\n\r\n <!--Nueva Carpeta-->\r\n <button *ngIf=\"controlFuncionService.getControlFuncionalidad('seguplacor:guardar')\" pButton pRipple\r\n class=\"w-full mr-3 p-button-secondary boton-accion-principal color-500\"\r\n label=\"{{'link_nuevo' | translate}}\" (click)=\"crearCarpeta()\">\r\n <div class=\"contenedor-icono-acciones-principal\">\r\n <i class=\"glyphicons glyphicons-plus color-500\"></i>\r\n </div>\r\n </button>\r\n\r\n <!--Eliminar-->\r\n <div class=\"btn-fileupload-claro\">\r\n <button *ngIf=\"controlFuncionService.getControlFuncionalidad('seguplacor:guardar')\" pButton pRipple\r\n class=\"p-button p-button-secondary font-semibold flex-shrink-0 boton-accion-principal mr-3\"\r\n label=\"{{'link_eliminar' | translate}}\" (click)=\"eliminarCarpeta()\">\r\n <div class=\"contenedor-icono-acciones-principal\">\r\n <i style=\"color: var(--color-500)\" class=\"glyphicons glyphicons-bin\"></i>\r\n </div>\r\n </button>\r\n </div>\r\n\r\n <!-- Cargar Archivo -->\r\n <div class=\"btn-fileupload-claro\" [ngClass]=\"{ 'min-width-100': !verConvertir, 'min-width-20': verConvertir }\">\r\n <p-fileUpload #fubauto mode=\"basic\" [auto]=\"true\" [customUpload]=\"true\" chooseIcon=\"pi pi-paperclip\"\r\n *ngIf=\"controlFuncionService.getControlFuncionalidad('seguplacor:guardar')\"\r\n chooseLabel=\"{{'link_subirarchivos' | translate}}\" (onSelect)=\"cargarNuevo($event, fubauto)\">\r\n <div class=\"contenedor-icono-acciones-principal\">\r\n <i class=\"pi pi-trash\"></i>\r\n </div>\r\n </p-fileUpload>\r\n </div>\r\n </div>\r\n }\r\n\r\n <!-- ARCHIVO-->\r\n @if(!archivoSeleccionado.expanded){\r\n\r\n <div class=\"flex align-items-center\">\r\n <h1 class=\"text-xl mt-2 mb-4 mr-3\">Archivo: </h1>\r\n <h5 class=\"text-sm mt-2 mb-4\"> {{archivoSeleccionado.label}} </h5>\r\n </div>\r\n\r\n <div class=\"flex justify-content-end\">\r\n @if(archivoSeleccionado.label.includes('.html')){\r\n\r\n <!--EDITAR HTML-->\r\n <button type=\"button\" pButton pRipple icon=\"pi pi-code text-xl color-500\" (click)=\"editarAction()\"\r\n class=\"mr-3 w-full p-button-secondary boton-accion-principal \" label=\"Editar HTML\">\r\n </button>\r\n }\r\n\r\n <!-- DESCARGAR-->\r\n <button pButton pRipple class=\"mr-3 w-full p-button-secondary boton-accion-principal color-500\"\r\n label=\"{{'link_descargar' | translate}}\" (click)=\"descargarAnexo()\"\r\n *ngIf=\"controlFuncionService.getControlFuncionalidad('seguplacor:descargar')\">\r\n <div class=\"contenedor-icono-acciones-principal\">\r\n <i class=\"glyphicons glyphicons-download color-500\"></i>\r\n </div>\r\n </button>\r\n\r\n <!--ELIMINAR-->\r\n <button pButton pRipple class=\"w-full p-button-secondary boton-accion-principal color-500\"\r\n label=\"{{'link_eliminar' | translate}}\" (click)=\"eliminarArchivo()\"\r\n *ngIf=\"controlFuncionService.getControlFuncionalidad('seguplacor:guardar')\">\r\n <div class=\"contenedor-icono-acciones-principal\">\r\n <i class=\"glyphicons glyphicons-bin color-500\"></i>\r\n </div>\r\n </button>\r\n </div>\r\n }\r\n </div>\r\n }\r\n\r\n @if(archivoSeleccionado.expanded && isVisualizarCrearCaperta){\r\n <div class=\"encabezado-acciones sombra-caja mb-3\">\r\n\r\n <h5 class=\"mt-2\"><i class=\"glyphicons glyphicons-note\"></i> Nueva carpeta</h5>\r\n\r\n <form #miFormulario=\"ngForm\">\r\n <!-- campos -->\r\n <div class=\"flex mb-3\">\r\n <!-- Nombre -->\r\n <div class=\"w-full p-0 mb-0\">\r\n <span class=\"p-float-label mr-2\">\r\n <input pInputText id=\"id_numero_de_evento\" [(ngModel)]=\"nomNuevaCarpeta\" required\r\n name=\"nombreCarpeta\">\r\n <label for=\"id_numero_de_evento\">{{'nombre' | translate}} *</label>\r\n </span>\r\n </div>\r\n\r\n <div class=\"flex justify-content-end\">\r\n <!--Guardar Carpeta-->\r\n <button pButton pRipple class=\"mr-2 p-button-raised\" icon=\"glyphicons glyphicons-floppy-save\"\r\n [label]=\"('link_guardar' | translate)\" (click)=\"guardarCarpeta()\">\r\n </button>\r\n </div>\r\n </div>\r\n </form>\r\n\r\n </div>\r\n }\r\n <!-- EDITOR DE HTML -->\r\n <div *ngIf=\"isHtml() && mostrarEditor\">\r\n\r\n <div class=\"flex justify-content-end align-items-center mb-3\">\r\n <!-- Bot\u00F3n guardar HTML -->\r\n <button pButton pRipple label=\"{{'link_guardar' | translate }}\" (click)=\"guardarHtml()\"\r\n icon=\"glyphicons glyphicons-floppy-save\" class=\"p-button-raised\"\r\n *ngIf=\"controlFuncionService.getControlFuncionalidad('seguplacor:guardar')\"></button>\r\n </div>\r\n\r\n <p-editor id=\"editor\" [style]=\"{ height: '500px' }\" required [(ngModel)]=\"modificarHTML\"\r\n name=\"htmlPublicacion\"></p-editor>\r\n\r\n </div>\r\n </div>\r\n</div>\r\n\r\n@if(isMostrarPopupConvertir){\r\n<app-popup-convertir-plantillas (regresar)=\"regresarPopupConvertir($event)\"></app-popup-convertir-plantillas>\r\n}\r\n\r\n</div>", styles: [":host ::ng-deep #cargue-plantillas .p-fluid .p-fileupload .p-button{width:100%;background:var(--color-85);border:none;box-shadow:none;color:var(--color-500);border-radius:10px}:host ::ng-deep #cargue-plantillas .p-fluid .p-fileupload .p-button:hover{background:var(--color-100)!important}:host ::ng-deep #cargue-plantillas .min-width-20{min-width:20%}:host ::ng-deep #cargue-plantillas .min-width-100{min-width:30%}#cargue-plantillas .btn-fileupload-claro .p-button{background:var(--color-85)!important;color:var(--color-500)!important;border-radius:10px}#cargue-plantillas .btn-fileupload-claro .p-button:hover{background:var(--color-100)!important}#cargue-plantillas .btn-fileupload-claro .contenedor-icono-acciones-principal{background:#fff;margin-right:8px;padding:12px}#cargue-plantillas .btn-fileupload-claro .boton-accion-principal i{margin:0!important}#cargue-plantillas .contenedor-icono-acciones-principal{display:inline-block;background-color:#fff;border-radius:50%;width:25px;height:25px;display:flex;align-items:center;justify-content:center}#cargue-plantillas .boton-accion-principal i{margin-right:0!important}:host ::ng-deep span.p-button-icon.p-button-icon-left.pi.pi-paperclip{padding:6px;background:#fff;border:none;border-radius:50%;color:var(--color-400)}:host ::ng-deep span.p-button-icon.p-button-icon-left.pi.pi-code{background:#fff;padding:5px;border-radius:50%}\n"], dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i11.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i11.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: TreeModule }, { kind: "component", type: i12.Tree, selector: "p-tree", inputs: ["value", "selectionMode", "loadingMode", "selection", "style", "styleClass", "contextMenu", "layout", "draggableScope", "droppableScope", "draggableNodes", "droppableNodes", "metaKeySelection", "propagateSelectionUp", "propagateSelectionDown", "loading", "loadingIcon", "emptyMessage", "ariaLabel", "togglerAriaLabel", "ariaLabelledBy", "validateDrop", "filter", "filterBy", "filterMode", "filterPlaceholder", "filteredNodes", "filterLocale", "scrollHeight", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "indentation", "_templateMap", "trackBy", "virtualNodeHeight"], outputs: ["selectionChange", "onNodeSelect", "onNodeUnselect", "onNodeExpand", "onNodeCollapse", "onNodeContextMenuSelect", "onNodeDrop", "onLazyLoad", "onScroll", "onScrollIndexChange", "onFilter"] }, { kind: "ngmodule", type: InputTextModule }, { kind: "directive", type: i13.InputText, selector: "[pInputText]", inputs: ["variant"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i14.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading", "severity", "raised", "rounded", "text", "outlined", "size", "plain"] }, { kind: "ngmodule", type: SplitButtonModule }, { kind: "directive", type: i15.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "ngmodule", type: ConfirmPopupModule }, { kind: "component", type: i16.ConfirmPopup, selector: "p-confirmPopup", inputs: ["key", "defaultFocus", "showTransitionOptions", "hideTransitionOptions", "autoZIndex", "baseZIndex", "style", "styleClass", "visible"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i17.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i17.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i17.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i17.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i17.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i17.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i17.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FieldsetModule }, { kind: "ngmodule", type: FileUploadModule }, { kind: "component", type: i18.FileUpload, selector: "p-fileUpload", inputs: ["name", "url", "method", "multiple", "accept", "disabled", "auto", "withCredentials", "maxFileSize", "invalidFileSizeMessageSummary", "invalidFileSizeMessageDetail", "invalidFileTypeMessageSummary", "invalidFileTypeMessageDetail", "invalidFileLimitMessageDetail", "invalidFileLimitMessageSummary", "style", "styleClass", "previewWidth", "chooseLabel", "uploadLabel", "cancelLabel", "chooseIcon", "uploadIcon", "cancelIcon", "showUploadButton", "showCancelButton", "mode", "headers", "customUpload", "fileLimit", "uploadStyleClass", "cancelStyleClass", "removeStyleClass", "chooseStyleClass", "files"], outputs: ["onBeforeUpload", "onSend", "onUpload", "onError", "onClear", "onRemove", "onSelect", "onProgress", "uploadHandler", "onImageError", "onRemoveUploadedFile"] }, { kind: "component", type: i19.ProgressBar, selector: "p-progressBar", inputs: ["value", "showValue", "styleClass", "style", "unit", "mode", "color"] }, { kind: "component", type: PopupConvertirPlantillasComponent, selector: "app-popup-convertir-plantillas", inputs: ["showDialog"], outputs: ["onSelected", "regresar"] }, { kind: "ngmodule", type: EditorModule }, { kind: "component", type: i20.Editor, selector: "p-editor", inputs: ["style", "styleClass", "placeholder", "formats", "modules", "bounds", "scrollingContainer", "debug", "readonly"], outputs: ["onInit", "onTextChange", "onSelectionChange"] }, { kind: "ngmodule", type: ProgressBarModule }] });
349
349
  }
350
350
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: CarguePlantillaGeneralComponent, decorators: [{
351
351
  type: Component,
@@ -364,7 +364,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImpor
364
364
  ProgressBarModule
365
365
  ], providers: [
366
366
  ConfirmationService
367
- ], template: "<div id=\"cargue-plantillas\">\r\n<p-confirmPopup key=\"eliminarCarpeta\"></p-confirmPopup>\r\n<p-confirmPopup key=\"eliminarArchivo\"></p-confirmPopup>\r\n\r\n<h1 class=\"mb-4\">{{'cargue' | translate}} {{'plantillas' | translate}}</h1>\r\n\r\n<div class=\"p-fluid p-formgrid grid\">\r\n\r\n <div class=\"field col-12 md:col-6 lg:col-5 card p-5\">\r\n <div class=\"flex justify-content-between align-items-center justify-content-center relative\">\r\n <input type=\"text\" pInputText [(ngModel)]=\"filterValue\" placeholder=\"{{'filtro' | translate}}\"\r\n (keydown)=\"filtrarEnter($event)\" />\r\n <button type=\"button\" pButton pRipple icon=\"pi pi-search text-xl\" (click)=\"aplicarFiltro()\"\r\n class=\"p-element p-ripple p-button-rounded p-button-secondary p-button p-component p-button-icon-only absolute right-0 border-none bg-white-alpha-10\"\r\n tooltipPosition=\"bottom\" pTooltip=\"Editar HTML\"></button>\r\n </div>\r\n\r\n <p-tree #tree scrollHeight=\"670px\" [value]=\"filteredFiles\" selectionMode=\"single\" [(selection)]=\"dataSelected\"\r\n [filter]=\"false\" [filterPlaceholder]=\"'filtro' | translate\" filterMode=\"strict\"\r\n (onNodeSelect)=\"seleccionarArchivo($event)\" [loading]=\"loading\"\r\n (onNodeUnselect)=\"deseleccionarArchivo($event)\"></p-tree>\r\n </div>\r\n\r\n <!-- OPCINES DIRECTORIOS - ARCHIVOS -->\r\n <div class=\"field col-12 md:col-6 lg:col-7 p-0 pl-3\">\r\n\r\n @if(this.loading){\r\n <p-progressBar mode=\"indeterminate\" [style]=\"{ height: '6px' }\"></p-progressBar>\r\n }\r\n\r\n @if(!this.loading){\r\n <div class=\"encabezado-acciones sombra-caja mb-3\">\r\n\r\n <!-- CARPETA -->\r\n @if(archivoSeleccionado.expanded){\r\n <div class=\"flex align-items-center\">\r\n <h1 class=\"text-xl mt-2 mb-4 mr-3\">Carpeta: </h1>\r\n <h5 class=\"text-sm mt-2 mb-4\"> {{archivoSeleccionado.label}} </h5>\r\n </div>\r\n\r\n <div class=\"flex justify-content-between\">\r\n\r\n <!-- Convertir -->\r\n <button type=\"button\" pButton pRipple (click)=\"convertirArchivos()\"\r\n *ngIf=\"verConvertir && controlFuncionService.getControlFuncionalidad('seguplacor:guardar')\"\r\n tooltipPosition=\"bottom\" label=\"{{'convertir' | translate}}\"\r\n class=\"w-full mr-3 p-button-secondary boton-accion-principal color-500\"\r\n pTooltip=\"Convertir archivo\" tooltipPosition=\"bottom\">\r\n <div class=\"contenedor-icono-acciones-principal\">\r\n <i class=\"pi pi-arrow-right-arrow-left color-500\"></i>\r\n </div>\r\n </button>\r\n\r\n <!--Nueva Carpeta-->\r\n <button *ngIf=\"controlFuncionService.getControlFuncionalidad('seguplacor:guardar')\" pButton pRipple\r\n class=\"w-full mr-3 p-button-secondary boton-accion-principal color-500\"\r\n label=\"{{'link_nuevo' | translate}}\" (click)=\"crearCarpeta()\">\r\n <div class=\"contenedor-icono-acciones-principal\">\r\n <i class=\"glyphicons glyphicons-plus color-500\"></i>\r\n </div>\r\n </button>\r\n\r\n <!--Eliminar-->\r\n <div class=\"btn-fileupload-claro\">\r\n <button *ngIf=\"controlFuncionService.getControlFuncionalidad('seguplacor:guardar')\" pButton pRipple\r\n class=\"p-button p-button-secondary font-semibold flex-shrink-0 boton-accion-principal mr-3\"\r\n label=\"{{'link_eliminar' | translate}}\" (click)=\"eliminarCarpeta()\">\r\n <div class=\"contenedor-icono-acciones-principal\">\r\n <i style=\"color: var(--color-500)\" class=\"glyphicons glyphicons-bin\"></i>\r\n </div>\r\n </button>\r\n </div>\r\n\r\n <!-- Cargar Archivo -->\r\n <div class=\"btn-fileupload-claro\" [ngClass]=\"{ 'min-width-100': !verConvertir, 'min-width-20': verConvertir }\">\r\n <p-fileUpload #fubauto mode=\"basic\" [auto]=\"true\" [customUpload]=\"true\" chooseIcon=\"pi pi-paperclip\"\r\n *ngIf=\"controlFuncionService.getControlFuncionalidad('seguplacor:guardar')\"\r\n chooseLabel=\"{{'link_subirarchivos' | translate}}\" (onSelect)=\"cargarNuevo($event, fubauto)\">\r\n <div class=\"contenedor-icono-acciones-principal\">\r\n <i class=\"pi pi-trash\"></i>\r\n </div>\r\n </p-fileUpload>\r\n </div>\r\n </div>\r\n }\r\n\r\n <!-- ARCHIVO-->\r\n @if(!archivoSeleccionado.expanded){\r\n\r\n <div class=\"flex align-items-center\">\r\n <h1 class=\"text-xl mt-2 mb-4 mr-3\">Archivo: </h1>\r\n <h5 class=\"text-sm mt-2 mb-4\"> {{archivoSeleccionado.label}} </h5>\r\n </div>\r\n\r\n <div class=\"flex justify-content-end\">\r\n @if(archivoSeleccionado.label.includes('.html')){\r\n\r\n <!--EDITAR HTML-->\r\n <button type=\"button\" pButton pRipple icon=\"pi pi-code text-xl color-500\" (click)=\"editarAction()\"\r\n class=\"mr-3 w-full p-button-secondary boton-accion-principal \" label=\"Editar HTML\">\r\n </button>\r\n }\r\n\r\n <!-- DESCARGAR-->\r\n <button pButton pRipple class=\"mr-3 w-full p-button-secondary boton-accion-principal color-500\"\r\n label=\"{{'link_descargar' | translate}}\" (click)=\"descargarAnexo()\"\r\n *ngIf=\"controlFuncionService.getControlFuncionalidad('seguplacor:descargar')\">\r\n <div class=\"contenedor-icono-acciones-principal\">\r\n <i class=\"glyphicons glyphicons-download color-500\"></i>\r\n </div>\r\n </button>\r\n\r\n <!--ELIMINAR-->\r\n <button pButton pRipple class=\"w-full p-button-secondary boton-accion-principal color-500\"\r\n label=\"{{'link_eliminar' | translate}}\" (click)=\"eliminarArchivo()\"\r\n *ngIf=\"controlFuncionService.getControlFuncionalidad('seguplacor:guardar')\">\r\n <div class=\"contenedor-icono-acciones-principal\">\r\n <i class=\"glyphicons glyphicons-bin color-500\"></i>\r\n </div>\r\n </button>\r\n </div>\r\n }\r\n </div>\r\n }\r\n\r\n @if(archivoSeleccionado.expanded && isVisualizarCrearCaperta){\r\n <div class=\"card\">\r\n\r\n <h5 class=\"mt-2\"><i class=\"glyphicons glyphicons-note\"></i> Nueva carpeta</h5>\r\n\r\n <form #miFormulario=\"ngForm\">\r\n <!-- campos -->\r\n <div class=\"flex mb-3\">\r\n <!-- Nombre -->\r\n <div class=\"w-full p-0 mb-0\">\r\n <span class=\"p-float-label mr-2\">\r\n <input pInputText id=\"id_numero_de_evento\" [(ngModel)]=\"nomNuevaCarpeta\" required\r\n name=\"nombreCarpeta\">\r\n <label for=\"id_numero_de_evento\">{{'nombre' | translate}} *</label>\r\n </span>\r\n </div>\r\n\r\n <div class=\"flex justify-content-end\">\r\n <!--Guardar Carpeta-->\r\n <button pButton pRipple class=\"mr-2 p-button-raised\" icon=\"glyphicons glyphicons-floppy-save\"\r\n [label]=\"('link_guardar' | translate)\" (click)=\"guardarCarpeta()\">\r\n </button>\r\n </div>\r\n </div>\r\n </form>\r\n\r\n </div>\r\n }\r\n <!-- EDITOR DE HTML -->\r\n <div *ngIf=\"isHtml() && mostrarEditor\">\r\n\r\n <div class=\"flex justify-content-end align-items-center mb-3\">\r\n <!-- Bot\u00F3n guardar HTML -->\r\n <button pButton pRipple label=\"{{'link_guardar' | translate }}\" (click)=\"guardarHtml()\"\r\n icon=\"glyphicons glyphicons-floppy-save\" class=\"p-button-raised\"\r\n *ngIf=\"controlFuncionService.getControlFuncionalidad('seguplacor:guardar')\"></button>\r\n </div>\r\n\r\n <p-editor id=\"editor\" [style]=\"{ height: '500px' }\" required [(ngModel)]=\"modificarHTML\"\r\n name=\"htmlPublicacion\"></p-editor>\r\n\r\n </div>\r\n </div>\r\n</div>\r\n\r\n@if(isMostrarPopupConvertir){\r\n<app-popup-convertir-plantillas (regresar)=\"regresarPopupConvertir($event)\"></app-popup-convertir-plantillas>\r\n}\r\n\r\n</div>", styles: [":host ::ng-deep #cargue-plantillas .p-fluid .p-fileupload .p-button{width:100%;background:var(--color-85);border:none;box-shadow:none;color:var(--color-500);border-radius:10px}:host ::ng-deep #cargue-plantillas .p-fluid .p-fileupload .p-button:hover{background:var(--color-100)!important}:host ::ng-deep #cargue-plantillas .min-width-20{min-width:20%}:host ::ng-deep #cargue-plantillas .min-width-100{min-width:30%}#cargue-plantillas .btn-fileupload-claro .p-button{background:var(--color-85)!important;color:var(--color-500)!important;border-radius:10px}#cargue-plantillas .btn-fileupload-claro .p-button:hover{background:var(--color-100)!important}#cargue-plantillas .btn-fileupload-claro .contenedor-icono-acciones-principal{background:#fff;margin-right:8px;padding:12px}#cargue-plantillas .btn-fileupload-claro .boton-accion-principal i{margin:0!important}#cargue-plantillas .contenedor-icono-acciones-principal{display:inline-block;background-color:#fff;border-radius:50%;width:25px;height:25px;display:flex;align-items:center;justify-content:center}#cargue-plantillas .boton-accion-principal i{margin-right:0!important}:host ::ng-deep span.p-button-icon.p-button-icon-left.pi.pi-paperclip{padding:6px;background:#fff;border:none;border-radius:50%;color:var(--color-400)}:host ::ng-deep span.p-button-icon.p-button-icon-left.pi.pi-code{background:#fff;padding:5px;border-radius:50%}\n"] }]
367
+ ], template: "<div id=\"cargue-plantillas\">\r\n<p-confirmPopup key=\"eliminarCarpeta\"></p-confirmPopup>\r\n<p-confirmPopup key=\"eliminarArchivo\"></p-confirmPopup>\r\n\r\n<h1 class=\"mb-4\">{{'cargue' | translate}} {{'plantillas' | translate}}</h1>\r\n\r\n<div class=\"p-fluid p-formgrid grid\">\r\n\r\n <div class=\"field col-12 md:col-6 lg:col-5 card p-5\">\r\n <div class=\"flex justify-content-between align-items-center justify-content-center relative\">\r\n <input type=\"text\" pInputText [(ngModel)]=\"filterValue\" placeholder=\"{{'filtro' | translate}}\"\r\n (keydown)=\"filtrarEnter($event)\" />\r\n <button type=\"button\" pButton pRipple icon=\"pi pi-search text-xl\" (click)=\"aplicarFiltro()\"\r\n class=\"p-element p-ripple p-button-rounded p-button-secondary p-button p-component p-button-icon-only absolute right-0 border-none bg-white-alpha-10\"\r\n tooltipPosition=\"bottom\" pTooltip=\"Editar HTML\"></button>\r\n </div>\r\n\r\n <p-tree #tree scrollHeight=\"670px\" [value]=\"filteredFiles\" selectionMode=\"single\" [(selection)]=\"dataSelected\"\r\n [filter]=\"false\" [filterPlaceholder]=\"'filtro' | translate\" filterMode=\"strict\"\r\n (onNodeSelect)=\"seleccionarArchivo($event)\" [loading]=\"loading\"\r\n (onNodeUnselect)=\"deseleccionarArchivo($event)\"></p-tree>\r\n </div>\r\n\r\n <!-- OPCINES DIRECTORIOS - ARCHIVOS -->\r\n <div class=\"field col-12 md:col-6 lg:col-7 p-0 pl-3\">\r\n\r\n @if(this.loading){\r\n <p-progressBar mode=\"indeterminate\" [style]=\"{ height: '6px' }\"></p-progressBar>\r\n }\r\n\r\n @if(!this.loading){\r\n <div class=\"encabezado-acciones sombra-caja mb-3\">\r\n\r\n <!-- CARPETA -->\r\n @if(archivoSeleccionado.expanded){\r\n <div class=\"flex align-items-center\">\r\n <h1 class=\"text-xl mt-2 mb-4 mr-3\">Carpeta: </h1>\r\n <h5 class=\"text-sm mt-2 mb-4\"> {{archivoSeleccionado.label}} </h5>\r\n </div>\r\n\r\n <div class=\"flex justify-content-between\">\r\n\r\n <!-- Convertir -->\r\n <button type=\"button\" pButton pRipple (click)=\"convertirArchivos()\"\r\n *ngIf=\"verConvertir && controlFuncionService.getControlFuncionalidad('seguplacor:guardar')\"\r\n tooltipPosition=\"bottom\" label=\"{{'convertir' | translate}}\"\r\n class=\"w-full mr-3 p-button-secondary boton-accion-principal color-500\"\r\n pTooltip=\"Convertir archivo\" tooltipPosition=\"bottom\">\r\n <div class=\"contenedor-icono-acciones-principal\">\r\n <i class=\"pi pi-arrow-right-arrow-left color-500\"></i>\r\n </div>\r\n </button>\r\n\r\n <!--Nueva Carpeta-->\r\n <button *ngIf=\"controlFuncionService.getControlFuncionalidad('seguplacor:guardar')\" pButton pRipple\r\n class=\"w-full mr-3 p-button-secondary boton-accion-principal color-500\"\r\n label=\"{{'link_nuevo' | translate}}\" (click)=\"crearCarpeta()\">\r\n <div class=\"contenedor-icono-acciones-principal\">\r\n <i class=\"glyphicons glyphicons-plus color-500\"></i>\r\n </div>\r\n </button>\r\n\r\n <!--Eliminar-->\r\n <div class=\"btn-fileupload-claro\">\r\n <button *ngIf=\"controlFuncionService.getControlFuncionalidad('seguplacor:guardar')\" pButton pRipple\r\n class=\"p-button p-button-secondary font-semibold flex-shrink-0 boton-accion-principal mr-3\"\r\n label=\"{{'link_eliminar' | translate}}\" (click)=\"eliminarCarpeta()\">\r\n <div class=\"contenedor-icono-acciones-principal\">\r\n <i style=\"color: var(--color-500)\" class=\"glyphicons glyphicons-bin\"></i>\r\n </div>\r\n </button>\r\n </div>\r\n\r\n <!-- Cargar Archivo -->\r\n <div class=\"btn-fileupload-claro\" [ngClass]=\"{ 'min-width-100': !verConvertir, 'min-width-20': verConvertir }\">\r\n <p-fileUpload #fubauto mode=\"basic\" [auto]=\"true\" [customUpload]=\"true\" chooseIcon=\"pi pi-paperclip\"\r\n *ngIf=\"controlFuncionService.getControlFuncionalidad('seguplacor:guardar')\"\r\n chooseLabel=\"{{'link_subirarchivos' | translate}}\" (onSelect)=\"cargarNuevo($event, fubauto)\">\r\n <div class=\"contenedor-icono-acciones-principal\">\r\n <i class=\"pi pi-trash\"></i>\r\n </div>\r\n </p-fileUpload>\r\n </div>\r\n </div>\r\n }\r\n\r\n <!-- ARCHIVO-->\r\n @if(!archivoSeleccionado.expanded){\r\n\r\n <div class=\"flex align-items-center\">\r\n <h1 class=\"text-xl mt-2 mb-4 mr-3\">Archivo: </h1>\r\n <h5 class=\"text-sm mt-2 mb-4\"> {{archivoSeleccionado.label}} </h5>\r\n </div>\r\n\r\n <div class=\"flex justify-content-end\">\r\n @if(archivoSeleccionado.label.includes('.html')){\r\n\r\n <!--EDITAR HTML-->\r\n <button type=\"button\" pButton pRipple icon=\"pi pi-code text-xl color-500\" (click)=\"editarAction()\"\r\n class=\"mr-3 w-full p-button-secondary boton-accion-principal \" label=\"Editar HTML\">\r\n </button>\r\n }\r\n\r\n <!-- DESCARGAR-->\r\n <button pButton pRipple class=\"mr-3 w-full p-button-secondary boton-accion-principal color-500\"\r\n label=\"{{'link_descargar' | translate}}\" (click)=\"descargarAnexo()\"\r\n *ngIf=\"controlFuncionService.getControlFuncionalidad('seguplacor:descargar')\">\r\n <div class=\"contenedor-icono-acciones-principal\">\r\n <i class=\"glyphicons glyphicons-download color-500\"></i>\r\n </div>\r\n </button>\r\n\r\n <!--ELIMINAR-->\r\n <button pButton pRipple class=\"w-full p-button-secondary boton-accion-principal color-500\"\r\n label=\"{{'link_eliminar' | translate}}\" (click)=\"eliminarArchivo()\"\r\n *ngIf=\"controlFuncionService.getControlFuncionalidad('seguplacor:guardar')\">\r\n <div class=\"contenedor-icono-acciones-principal\">\r\n <i class=\"glyphicons glyphicons-bin color-500\"></i>\r\n </div>\r\n </button>\r\n </div>\r\n }\r\n </div>\r\n }\r\n\r\n @if(archivoSeleccionado.expanded && isVisualizarCrearCaperta){\r\n <div class=\"encabezado-acciones sombra-caja mb-3\">\r\n\r\n <h5 class=\"mt-2\"><i class=\"glyphicons glyphicons-note\"></i> Nueva carpeta</h5>\r\n\r\n <form #miFormulario=\"ngForm\">\r\n <!-- campos -->\r\n <div class=\"flex mb-3\">\r\n <!-- Nombre -->\r\n <div class=\"w-full p-0 mb-0\">\r\n <span class=\"p-float-label mr-2\">\r\n <input pInputText id=\"id_numero_de_evento\" [(ngModel)]=\"nomNuevaCarpeta\" required\r\n name=\"nombreCarpeta\">\r\n <label for=\"id_numero_de_evento\">{{'nombre' | translate}} *</label>\r\n </span>\r\n </div>\r\n\r\n <div class=\"flex justify-content-end\">\r\n <!--Guardar Carpeta-->\r\n <button pButton pRipple class=\"mr-2 p-button-raised\" icon=\"glyphicons glyphicons-floppy-save\"\r\n [label]=\"('link_guardar' | translate)\" (click)=\"guardarCarpeta()\">\r\n </button>\r\n </div>\r\n </div>\r\n </form>\r\n\r\n </div>\r\n }\r\n <!-- EDITOR DE HTML -->\r\n <div *ngIf=\"isHtml() && mostrarEditor\">\r\n\r\n <div class=\"flex justify-content-end align-items-center mb-3\">\r\n <!-- Bot\u00F3n guardar HTML -->\r\n <button pButton pRipple label=\"{{'link_guardar' | translate }}\" (click)=\"guardarHtml()\"\r\n icon=\"glyphicons glyphicons-floppy-save\" class=\"p-button-raised\"\r\n *ngIf=\"controlFuncionService.getControlFuncionalidad('seguplacor:guardar')\"></button>\r\n </div>\r\n\r\n <p-editor id=\"editor\" [style]=\"{ height: '500px' }\" required [(ngModel)]=\"modificarHTML\"\r\n name=\"htmlPublicacion\"></p-editor>\r\n\r\n </div>\r\n </div>\r\n</div>\r\n\r\n@if(isMostrarPopupConvertir){\r\n<app-popup-convertir-plantillas (regresar)=\"regresarPopupConvertir($event)\"></app-popup-convertir-plantillas>\r\n}\r\n\r\n</div>", styles: [":host ::ng-deep #cargue-plantillas .p-fluid .p-fileupload .p-button{width:100%;background:var(--color-85);border:none;box-shadow:none;color:var(--color-500);border-radius:10px}:host ::ng-deep #cargue-plantillas .p-fluid .p-fileupload .p-button:hover{background:var(--color-100)!important}:host ::ng-deep #cargue-plantillas .min-width-20{min-width:20%}:host ::ng-deep #cargue-plantillas .min-width-100{min-width:30%}#cargue-plantillas .btn-fileupload-claro .p-button{background:var(--color-85)!important;color:var(--color-500)!important;border-radius:10px}#cargue-plantillas .btn-fileupload-claro .p-button:hover{background:var(--color-100)!important}#cargue-plantillas .btn-fileupload-claro .contenedor-icono-acciones-principal{background:#fff;margin-right:8px;padding:12px}#cargue-plantillas .btn-fileupload-claro .boton-accion-principal i{margin:0!important}#cargue-plantillas .contenedor-icono-acciones-principal{display:inline-block;background-color:#fff;border-radius:50%;width:25px;height:25px;display:flex;align-items:center;justify-content:center}#cargue-plantillas .boton-accion-principal i{margin-right:0!important}:host ::ng-deep span.p-button-icon.p-button-icon-left.pi.pi-paperclip{padding:6px;background:#fff;border:none;border-radius:50%;color:var(--color-400)}:host ::ng-deep span.p-button-icon.p-button-icon-left.pi.pi-code{background:#fff;padding:5px;border-radius:50%}\n"] }]
368
368
  }], ctorParameters: () => [{ type: i1.PlantillasService }, { type: i2.AuthService }, { type: i3.TranslateService }, { type: i4.CargarControlFuncionalidadService }, { type: i5.ConfirmationService }, { type: i6.ToastService }, { type: i7.CargarArchivosService }, { type: i8.EncriptadoBasicoService }, { type: i9.GeneralPipe }, { type: i10.UtilsService }], propDecorators: { popupConvertirPlantillasComponent: [{
369
369
  type: ViewChild,
370
370
  args: [PopupConvertirPlantillasComponent]
@@ -375,4 +375,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImpor
375
375
  type: ViewChild,
376
376
  args: ['tree']
377
377
  }] } });
378
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZ3VlLXBsYW50aWxsYS1nZW5lcmFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvd2ViY29tbW9uL3BhZ2VzL2Nhcmd1ZS1wbGFudGlsbGEvY2FyZ3VlLXBsYW50aWxsYS1nZW5lcmFsL2Nhcmd1ZS1wbGFudGlsbGEtZ2VuZXJhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3dlYmNvbW1vbi9wYWdlcy9jYXJndWUtcGxhbnRpbGxhL2Nhcmd1ZS1wbGFudGlsbGEtZ2VuZXJhbC9jYXJndWUtcGxhbnRpbGxhLWdlbmVyYWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQW9CLE1BQU0scUJBQXFCLENBQUM7QUFDeEUsT0FBTyxFQUFFLG1CQUFtQixFQUFzQixNQUFNLGFBQWEsQ0FBQztBQUN0RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3hELE9BQU8sRUFBUSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFJaEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBVSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FB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Qyw0a1NBOEtNLHM2Q0RsSk0sZUFBZSwyRkFDdkIsWUFBWSxrT0FDWixVQUFVLCszQkFDVixlQUFlLHlIQUNmLFlBQVksNk9BQ1osaUJBQWlCLHNYQUNqQixrQkFBa0IsMFBBQ2xCLFdBQVcsMndDQUNYLGNBQWMsOEJBQ2QsZ0JBQWdCLDBnQ0FDaEIsaUNBQWlDLHVJQUNqQyxZQUFZLGtSQUNaLGlCQUFpQjs7MkZBUVIsK0JBQStCO2tCQXZCM0MsU0FBUzsrQkFDRSw4QkFBOEIsY0FDNUIsSUFBSSxXQUNQLENBQUMsZUFBZTt3QkFDdkIsWUFBWTt3QkFDWixVQUFVO3dCQUNWLGVBQWU7d0JBQ2YsWUFBWTt3QkFDWixpQkFBaUI7d0JBQ2pCLGtCQUFrQjt3QkFDbEIsV0FBVzt3QkFDWCxjQUFjO3dCQUNkLGdCQUFnQjt3QkFDaEIsaUNBQWlDO3dCQUNqQyxZQUFZO3dCQUNaLGlCQUFpQjtxQkFDbEIsYUFHVTt3QkFDVCxtQkFBbUI7cUJBQ3BCOzRYQUk2QyxpQ0FBaUM7c0JBQTlFLFNBQVM7dUJBQUMsaUNBQWlDO2dCQUNFLFlBQVk7c0JBQXpELFNBQVM7dUJBQUMsY0FBYyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFDekIsYUFBYTtzQkFBL0IsU0FBUzt1QkFBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlLCBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IENvbmZpcm1hdGlvblNlcnZpY2UsIE1lbnVJdGVtLCBUcmVlTm9kZSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcclxuaW1wb3J0IHsgQnV0dG9uTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9idXR0b24nO1xyXG5pbXBvcnQgeyBJbnB1dFRleHRNb2R1bGUgfSBmcm9tICdwcmltZW5nL2lucHV0dGV4dCc7XHJcbmltcG9ydCB7IFNwbGl0QnV0dG9uTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9zcGxpdGJ1dHRvbic7XHJcbmltcG9ydCB7IFRyZWUsIFRyZWVNb2R1bGUgfSBmcm9tICdwcmltZW5nL3RyZWUnO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvc2VydmljaW9zL2F1dGguc2VydmljZSc7XHJcbmltcG9ydCB7IFBsYW50aWxsYXNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vd2ViY29tbW9uL3NlcnZpY2VzL3BsYW50aWxsYXMuc2VydmljZSc7XHJcbmltcG9ydCB7IENhcmdhckNvbnRyb2xGdW5jaW9uYWxpZGFkU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvc2VydmljaW9zL2Nhcmdhci1jb250cm9sLWZ1bmNpb25hbGlkYWQuc2VydmljZSc7XHJcbmltcG9ydCB7IENvbmZpcm1Qb3B1cE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvY29uZmlybXBvcHVwJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIE5nRm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgRmllbGRzZXRNb2R1bGUgfSBmcm9tICdwcmltZW5nL2ZpZWxkc2V0JztcclxuaW1wb3J0IHsgRmlsZVVwbG9hZE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvZmlsZXVwbG9hZCc7XHJcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvc2VydmljaW9zL3RvYXN0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDYXJnYXJBcmNoaXZvc1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZWQvc2VydmljaW9zL2Nhcmdhci1hcmNoaXZvcy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRW5jcmlwdGFkb0Jhc2ljb1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZWQvc2VydmljaW9zL2VuY3JpcHRhZG8tYmFzaWNvLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBHZW5lcmFsUGlwZSB9IGZyb20gJy4uLy4uLy4uLy4uL3dlYmNvbW1vbi9waXBlcy9nZW5lcmFsLnBpcGUnO1xyXG5pbXBvcnQgeyBQb3B1cENvbnZlcnRpclBsYW50aWxsYXNDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi8uLi93ZWJjb21tb24vcG9wdXBzL3BvcHVwLWNvbnZlcnRpci1wbGFudGlsbGFzL3BvcHVwLWNvbnZlcnRpci1wbGFudGlsbGFzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFV0aWxzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvc2VydmljaW9zL3V0aWxzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBFZGl0b3JNb2R1bGUgfSBmcm9tICdwcmltZW5nL2VkaXRvcic7XHJcbmltcG9ydCB7IFByb2dyZXNzQmFyTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9wcm9ncmVzc2Jhcic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1jYXJndWUtcGxhbnRpbGxhLWdlbmVyYWwnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1RyYW5zbGF0ZU1vZHVsZSxcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIFRyZWVNb2R1bGUsXHJcbiAgICBJbnB1dFRleHRNb2R1bGUsXHJcbiAgICBCdXR0b25Nb2R1bGUsXHJcbiAgICBTcGxpdEJ1dHRvbk1vZHVsZSxcclxuICAgIENvbmZpcm1Qb3B1cE1vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgRmllbGRzZXRNb2R1bGUsXHJcbiAgICBGaWxlVXBsb2FkTW9kdWxlLFxyXG4gICAgUG9wdXBDb252ZXJ0aXJQbGFudGlsbGFzQ29tcG9uZW50LFxyXG4gICAgRWRpdG9yTW9kdWxlLFxyXG4gICAgUHJvZ3Jlc3NCYXJNb2R1bGVcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jYXJndWUtcGxhbnRpbGxhLWdlbmVyYWwuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9jYXJndWUtcGxhbnRpbGxhLWdlbmVyYWwuY29tcG9uZW50LnNjc3MnLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAgQ29uZmlybWF0aW9uU2VydmljZVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIENhcmd1ZVBsYW50aWxsYUdlbmVyYWxDb21wb25lbnQge1xyXG5cclxuICBAVmlld0NoaWxkKFBvcHVwQ29udmVydGlyUGxhbnRpbGxhc0NvbXBvbmVudCkgcG9wdXBDb252ZXJ0aXJQbGFudGlsbGFzQ29tcG9uZW50OiBQb3B1cENvbnZlcnRpclBsYW50aWxsYXNDb21wb25lbnQ7XHJcbiAgQFZpZXdDaGlsZCgnbWlGb3JtdWxhcmlvJywgeyBzdGF0aWM6IGZhbHNlIH0pIG1pRm9ybXVsYXJpbyE6IE5nRm9ybTtcclxuICBAVmlld0NoaWxkKCd0cmVlJykgdHJlZUNvbXBvbmVudCE6IFRyZWU7XHJcblxyXG4gIGxvYWRpbmc6IGJvb2xlYW47XHJcbiAgcHJvcGllZGFkOiBzdHJpbmc7XHJcbiAgZXh0ZW5zaW9uZXM6IHN0cmluZztcclxuICBwcm9waWVkYWREZVNpc3RlbWE6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBhbmV4b1Byb3BpZWRhZDogc3RyaW5nID0gJyc7XHJcbiAgZmlsZXM6IFRyZWVOb2RlW107XHJcbiAgZGF0YVNlbGVjdGVkOiBUcmVlTm9kZTtcclxuICBpdGVtc0JvdG9uQWNjaW9uZXM6IE1lbnVJdGVtW107XHJcbiAgdmVyQ29udmVydGlyOiBib29sZWFuO1xyXG4gIG5vbU51ZXZhQ2FycGV0YTogc3RyaW5nO1xyXG4gIGlzVmlzdWFsaXphckNyZWFyQ2FwZXJ0YTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGFyY2hpdm9TZWxlY2Npb25hZG9BbmV4bzogRmlsZTtcclxuICBhcmNoaXZvU2VsZWNjaW9uYWRvOiBUcmVlTm9kZTtcclxuICBpc01vc3RyYXJQb3B1cENvbnZlcnRpcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHJ1dGFQcmluY2lwYWw6IHN0cmluZztcclxuICBmaWx0ZXJlZEZpbGVzOiBUcmVlTm9kZVtdID0gW107XHJcbiAgZmlsdGVyVmFsdWU6IHN0cmluZyA9ICcnO1xyXG4gIGZpbHRyb0NvbnZlcnRpcjogc3RyaW5nO1xyXG4gIGh0bWw6IGJvb2xlYW47XHJcbiAgbW9zdHJhckVkaXRvcjogYm9vbGVhbjtcclxuICBtb2RpZmljYXJIVE1MOiBzdHJpbmc7XHJcblxyXG4gIEZPUk1BVFNfVkFMSURPUzogU2V0PHN0cmluZz4gPSBuZXcgU2V0KFtcclxuICAgICcuZG9jJyxcclxuICAgICcuaHRtbCcsXHJcbiAgICAnLmphc3BlcicsXHJcbiAgICAnLnhscycsXHJcbiAgICAnLmpyeG1sJyxcclxuICAgICcub2R0JyxcclxuICAgICcueGxzbScsXHJcbiAgICAnLnhsc3gnLFxyXG4gICAgJy5wZ3AnLFxyXG4gICAgJy5hc2MnLFxyXG4gICAgJy5jZXInLFxyXG4gICAgJy5wMTInLFxyXG4gICAgJy5kb2N4JyxcclxuICAgICcucHJvcGVydGllcydcclxuICBdKTtcclxuXHJcbiAgcmVhZG9ubHkgRk9STUFUT1MgPSAnZG9jO2h0bWw7amFzcGVyO3hscztqcnhtbDtvZHQ7eGxzbTt4bHN4O3BncDthc2M7Y2VyO3AxMjtkb2N4O3Byb3BlcnRpZXMnO1xyXG4gIFxyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHBsYW50aWxsYXNTZXJ2aWNlOiBQbGFudGlsbGFzU2VydmljZSwgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsIHB1YmxpYyB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgcHVibGljIGNvbnRyb2xGdW5jaW9uU2VydmljZTogQ2FyZ2FyQ29udHJvbEZ1bmNpb25hbGlkYWRTZXJ2aWNlLCBwcml2YXRlIGNvbmZpcm1hdGlvblNlcnZpY2U6IENvbmZpcm1hdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHRvYXN0U2VydmljZTogVG9hc3RTZXJ2aWNlLCBwcml2YXRlIGNhcmdhckFyY2hpdm9TZXJ2aWNlczogQ2FyZ2FyQXJjaGl2b3NTZXJ2aWNlLCBwcml2YXRlIGVuY3JpcHRhZG9CYXNpY286IEVuY3JpcHRhZG9CYXNpY29TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBnZW5lcmFsUGlwZTogR2VuZXJhbFBpcGUsIHB1YmxpYyB1dGlsc1NlcnZpY2U6IFV0aWxzU2VydmljZVxyXG4gICkgeyB9XHJcblxyXG4gIGFzeW5jIG5nT25Jbml0KCk6IFByb21pc2U8dm9pZD4ge1xyXG5cclxuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLm1vc3RyYXJFZGl0b3IgPSBmYWxzZTtcclxuICAgIGxldCBjb25zdWx0YXJSdXRhUHJpbmNpcGFsID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5jYXJnYXJBcmNoaXZvU2VydmljZXMuZ2V0UHJvcGllZGFkKHsgcHJvcGllZGFkOiBcInJ1dGFfcGxhbnRpbGxhc1wiLCBhcGxpY2FjaW9uOiAxIH0pKTtcclxuICAgIGxldCBjb252ZXJ0aXIgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmNhcmdhckFyY2hpdm9TZXJ2aWNlcy5nZXRQcm9waWVkYWQoeyBwcm9waWVkYWQ6IFwic2Vydmlkb3Jfb3Blbk9mZmljZVwiLCBhcGxpY2FjaW9uOiAwIH0pKTtcclxuICAgIHRoaXMudmVyQ29udmVydGlyID0gIWNvbnZlcnRpci52YWxvci52YWxvciA/IHRydWUgOiBmYWxzZTtcclxuICAgIHRoaXMucnV0YVByaW5jaXBhbCA9IGNvbnN1bHRhclJ1dGFQcmluY2lwYWwudmFsb3IudmFsb3I7XHJcbiAgICB0aGlzLmlzVmlzdWFsaXphckNyZWFyQ2FwZXJ0YSA9IGZhbHNlO1xyXG4gICAgYXdhaXQgdGhpcy5vcGVuRGF0YVRhYmxlKCk7XHJcblxyXG4gICAgY29uc3Qgc2xlZXAgPSAobSkgPT4gbmV3IFByb21pc2UoKHIpID0+IHNldFRpbWVvdXQociwgbSkpO1xyXG4gICAgYXdhaXQgc2xlZXAoMTAwKTtcclxuXHJcbiAgICBpZiAodGhpcy5maWx0ZXJWYWx1ZSkge1xyXG4gICAgICBhd2FpdCB0aGlzLmFwbGljYXJGaWx0cm8oKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIG9wZW5EYXRhVGFibGUoKSB7XHJcblxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcblxyXG4gICAgICBpZiAoIXRoaXMucHJvcGllZGFkKSB7XHJcbiAgICAgICAgdGhpcy5wcm9waWVkYWQgPSAncnV0YV9wbGFudGlsbGFzJ1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnBsYW50aWxsYXNTZXJ2aWNlLm9idGVuZXJBcmNoaXZvcyhcclxuICAgICAgICB0aGlzLnByb3BpZWRhZCwgdGhpcy5wcm9waWVkYWREZVNpc3RlbWEgPyAnMCcgOiB0aGlzLmF1dGhTZXJ2aWNlLmdldFRva2VuS2V5KCdhcGxpY2FjaW9uJyksIHRoaXMuRk9STUFUT1MsIHRoaXMuYW5leG9Qcm9waWVkYWQsIHRydWUpLnN1YnNjcmliZVxyXG4gICAgICAgIChydGEgPT4ge1xyXG4gICAgICAgICAgdGhpcy5maWxlcyA9IHJ0YTtcclxuICAgICAgICAgIHRoaXMuZmlsdGVyZWRGaWxlcyA9IHJ0YVxyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAvL3RoaXMuaXNDYXJnYXJJbmljaW8gPSBmYWxzZTtcclxuICAgICAgICAgIGlmICghdGhpcy5hcmNoaXZvU2VsZWNjaW9uYWRvKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYXJjaGl2b1NlbGVjY2lvbmFkbyA9IHRoaXMuZmlsZXNbMF07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9LCAxMDAwKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGFwbGljYXJGaWx0cm8oKSB7XHJcbiAgICB0aGlzLmZpbHRyb0NvbnZlcnRpciA9IHRoaXMuZmlsdGVyVmFsdWU7XHJcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuZmlsdGVyZWRGaWxlcyA9IHRoaXMub2J0ZW5lckZpbHRyb3NOb2Rvcyh0aGlzLmZpbGVzLCB0aGlzLmZpbHRlclZhbHVlKTtcclxuICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICB9LCAxMDAwKTtcclxuICB9XHJcblxyXG4gIG9idGVuZXJGaWx0cm9zTm9kb3Mobm9kZXM6IFRyZWVOb2RlW10sIGZpbHRlclZhbHVlOiBzdHJpbmcpOiBUcmVlTm9kZVtdIHtcclxuXHJcbiAgICBjb25zdCBmaWx0ZXJzID0gdGhpcy5maWx0cm9BdmFuemFkbyhmaWx0ZXJWYWx1ZSk7XHJcblxyXG4gICAgY29uc3QgZmlsdGVyZWROb2RlczogVHJlZU5vZGVbXSA9IFtdO1xyXG5cclxuICAgIG5vZGVzLmZvckVhY2gobm9kZSA9PiB7XHJcblxyXG4gICAgICAvLyBWZXJpZmljYSBzaSBlbCBub2RvIGFjdHVhbCBvIGFsZ3VubyBkZSBzdXMgaGlqb3MgY3VtcGxlIGNvbiBlbCBmaWx0cm9cclxuICAgICAgY29uc3QgY2hpbGRyZW4gPSBub2RlLmNoaWxkcmVuID8gdGhpcy5vYnRlbmVyRmlsdHJvc05vZG9zKG5vZGUuY2hpbGRyZW4sIGZpbHRlclZhbHVlKSA6IFtdO1xyXG5cclxuICAgICAgY29uc3Qgbm9kZU1hdGNoZXMgPSBmaWx0ZXJzLnNvbWUoZmlsdGVyID0+IG5vZGUubGFiZWwuaW5jbHVkZXMoZmlsdGVyKSk7XHJcblxyXG4gICAgICBpZiAobm9kZU1hdGNoZXMgfHwgY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGZpbHRlcmVkTm9kZXMucHVzaCh7IC4uLm5vZGUsIGNoaWxkcmVuIH0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gZmlsdGVyZWROb2RlcztcclxuICB9XHJcblxyXG4gIGZpbHRyb0F2YW56YWRvKHNlYXJjaDogc3RyaW5nKTogc3RyaW5nW10ge1xyXG5cclxuICAgIGlmIChzZWFyY2guaW5jbHVkZXMoJysnKSkge1xyXG4gICAgICBsZXQgYXV4ID0gc2VhcmNoO1xyXG5cclxuICAgICAgaWYgKGF1eC5zdGFydHNXaXRoKCcrJykpIHtcclxuICAgICAgICBhdXggPSBhdXguc3Vic3RyaW5nKDEpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBhdXggPSBhdXgucmVwbGFjZSgvXFwrL2csICc6Jyk7XHJcbiAgICAgIGNvbnN0IGl0ZW1zID0gYXV4LnRyaW0oKS5zcGxpdCgnOicpO1xyXG4gICAgICByZXR1cm4gaXRlbXM7XHJcblxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIFtzZWFyY2hdO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZmlsdHJhckVudGVyKGV2ZW50KSB7XHJcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInKSB7XHJcbiAgICAgIHRoaXMuYXBsaWNhckZpbHRybygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2VsZWNjaW9uYXJBcmNoaXZvKGV2ZW50KSB7XHJcbiAgICB0aGlzLmFyY2hpdm9TZWxlY2Npb25hZG8gPSBldmVudC5ub2RlO1xyXG4gICAgdGhpcy5tb3N0cmFyRWRpdG9yID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBkZXNlbGVjY2lvbmFyQXJjaGl2bygkZXZlbnQpIHtcclxuICAgIHRoaXMuZGF0YVNlbGVjdGVkID0gbnVsbDtcclxuICB9XHJcblxyXG5cclxuICBhc3luYyBjYXJnYXJOdWV2byhldmVudCwgZnViYXV0bykge1xyXG5cclxuICAgIHRoaXMuaXNWaXN1YWxpemFyQ3JlYXJDYXBlcnRhID0gZmFsc2U7XHJcbiAgICB0aGlzLmFyY2hpdm9TZWxlY2Npb25hZG9BbmV4byA9IGV2ZW50LmZpbGVzWzBdO1xyXG5cclxuICAgIGlmICghdGhpcy5pc0Zvcm1hdG9WYWxpZG8odGhpcy5hcmNoaXZvU2VsZWNjaW9uYWRvQW5leG8ubmFtZSkpIHtcclxuICAgICAgdGhpcy50b2FzdFNlcnZpY2Uuc2hvd1dhcm5pbmcoXCJTZSBkZWJlIGFncmVnYXIgdW4gYXJjaGl2byBcIiArIEFycmF5LmZyb20odGhpcy5GT1JNQVRTX1ZBTElET1MpLmpvaW4oJywgJykpXHJcbiAgICAgIGZ1YmF1dG8uY2xlYXIoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIC8vQ2FyZ2FyIEFyY2hpdm8gVGVtcG9yYWxcclxuICAgIGxldCByZXN1bHRhZG8gPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLnBsYW50aWxsYXNTZXJ2aWNlLmNhcmdhckRvY3VtZW50b1RlbXBvcmFsKHRoaXMuYXJjaGl2b1NlbGVjY2lvbmFkb0FuZXhvKSk7XHJcblxyXG4gICAgZnViYXV0by5jbGVhcigpO1xyXG5cclxuICAgIGlmIChyZXN1bHRhZG8/LnZhbGlkYWNpb24pIHtcclxuICAgICAgdGhpcy50b2FzdFNlcnZpY2Uuc2hvd1N1Y2Nlc3MocmVzdWx0YWRvPy52YWxpZGFjaW9uKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBpbmZvcm1hY2lvbkFyY2hpdm8gPSByZXN1bHRhZG8/LmluZm9ybWFjaW9uQXJjaGl2byA/IHJlc3VsdGFkbz8uaW5mb3JtYWNpb25BcmNoaXZvIDogbnVsbDtcclxuXHJcbiAgICAvL09idGVuZXIgUnV0YXNcclxuICAgIGxldCBydXRhQ29tcGxlbWVudG8gPSB0aGlzLmFyY2hpdm9TZWxlY2Npb25hZG8uZGF0YTtcclxuXHJcbiAgICAvL2xldCBvYmpldG8gPSAoYXdhaXQgdGhpcy5jYXJnYXJBcmNoaXZvU2VydmljZXMuZ2V0UHJvcGllZGFkKHsgcHJvcGllZGFkOiBcInJ1dGFfcGxhbnRpbGxhc1wiLCBhcGxpY2FjaW9uOiAxIH0pLnRvUHJvbWlzZSgpKTtcclxuXHJcbiAgICBpZiAoIXRoaXMuYXJjaGl2b1NlbGVjY2lvbmFkbz8ucGFyZW50KSB7XHJcbiAgICAgIHJ1dGFDb21wbGVtZW50byA9ICcnO1xyXG4gICAgfVxyXG5cclxuICAgIC8vVmVyaWZpY2Egc2kgZWwgZG9jdW1lbnRvIHlhIGV4aXN0ZSBcclxuICAgIGxldCBkYXRhID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5wbGFudGlsbGFzU2VydmljZS5leGlzdGVEb2N1bWVudG8odGhpcy5ydXRhUHJpbmNpcGFsLCBydXRhQ29tcGxlbWVudG8sIGluZm9ybWFjaW9uQXJjaGl2bykpO1xyXG5cclxuICAgIGlmIChkYXRhPy52YWxpZGFjaW9uRG9jdW1lbnRvKSB7XHJcbiAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLnNob3dXYXJuaW5nKGRhdGE/LnZhbGlkYWNpb25Eb2N1bWVudG8pO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgLy9HdWFyZGEgZWwgZG9jdW1lbnRvXHJcbiAgICBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLnBsYW50aWxsYXNTZXJ2aWNlLmNhcmdhckRvY3VtZW50byh0aGlzLnJ1dGFQcmluY2lwYWwsIHJ1dGFDb21wbGVtZW50bywgaW5mb3JtYWNpb25BcmNoaXZvKSk7XHJcblxyXG4gICAgdGhpcy50b2FzdFNlcnZpY2Uuc2hvd1N1Y2Nlc3ModGhpcy5nZW5lcmFsUGlwZS5NRU5TQUpFX0dVQVJEQVIpO1xyXG5cclxuICAgIHRoaXMubmdPbkluaXQoKTtcclxuXHJcbiAgfVxyXG5cclxuICBhc3luYyBkZXNjYXJnYXJBbmV4bygpIHtcclxuXHJcbiAgICAvL1J1dGEgYXJjaGl2byAgXHJcbiAgICBsZXQgcnV0YUNvbXBsZW1lbnRvID0gdGhpcy5hcmNoaXZvU2VsZWNjaW9uYWRvLmRhdGE7XHJcblxyXG4gICAgaWYgKCF0aGlzLmFyY2hpdm9TZWxlY2Npb25hZG8/LnBhcmVudCkge1xyXG4gICAgICBydXRhQ29tcGxlbWVudG8gPSAnJztcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmNhcmdhckFyY2hpdm9TZXJ2aWNlcy5kZXNjYXJnYXJBcmNoaXZvKHRoaXMuZW5jcmlwdGFkb0Jhc2ljby5lbmNyaXB0YXIodGhpcy5ydXRhUHJpbmNpcGFsICsgcnV0YUNvbXBsZW1lbnRvKSwgdW5kZWZpbmVkLCB1bmRlZmluZWQpLnN1YnNjcmliZShibG9iID0+IHtcclxuICAgICAgY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcclxuICAgICAgY29uc3Qgb2JqZWN0VXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcclxuICAgICAgYS5ocmVmID0gb2JqZWN0VXJsO1xyXG4gICAgICBhLmRvd25sb2FkID0gdGhpcy5hcmNoaXZvU2VsZWNjaW9uYWRvPy5sYWJlbDtcclxuICAgICAgYS5jbGljaygpO1xyXG4gICAgICBVUkwucmV2b2tlT2JqZWN0VVJMKG9iamVjdFVybCk7XHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuICBlbGltaW5hckFyY2hpdm8oKSB7XHJcbiAgICB0aGlzLmNvbmZpcm1hdGlvblNlcnZpY2UuY29uZmlybSh7XHJcbiAgICAgIHRhcmdldDogZXZlbnQudGFyZ2V0LFxyXG4gICAgICBrZXk6ICdlbGltaW5hckFyY2hpdm8nLFxyXG4gICAgICBtZXNzYWdlOiAnwr9EZXNlYSBlbGltaW5hciBlbCByZWdpc3Rybz8nLFxyXG4gICAgICBhY2NlcHRMYWJlbDogJ1NpJyxcclxuICAgICAgaWNvbjogJ2NvbmZpcm1hcicsXHJcbiAgICAgIGFjY2VwdDogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0RWxpbWluYXJBcmNoaXZvKCk7XHJcbiAgICAgIH0sXHJcbiAgICAgIHJlamVjdDogKCkgPT4geyB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBzZXRFbGltaW5hckFyY2hpdm8oKSB7XHJcblxyXG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuXHJcbiAgICAvL1J1dGEgYXJjaGl2byAgXHJcbiAgICBsZXQgcnV0YUNvbXBsZW1lbnRvID0gdGhpcy5hcmNoaXZvU2VsZWNjaW9uYWRvLmRhdGE7XHJcblxyXG4gICAgaWYgKCF0aGlzLmFyY2hpdm9TZWxlY2Npb25hZG8/LnBhcmVudCkge1xyXG4gICAgICBydXRhQ29tcGxlbWVudG8gPSAnJztcclxuICAgIH1cclxuXHJcbiAgICBsZXQgcHJvcGllZGFkID0gJ3J1dGFfcGxhbnRpbGxhcydcclxuICAgIGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuY2FyZ2FyQXJjaGl2b1NlcnZpY2VzLmVsaW1pbmFyQXJjaGl2byh0aGlzLmVuY3JpcHRhZG9CYXNpY28uZW5jcmlwdGFyKHJ1dGFDb21wbGVtZW50byksIHByb3BpZWRhZCwgJzEnKSk7XHJcbiAgICB0aGlzLnRvYXN0U2VydmljZS5zaG93U3VjY2Vzcyh0aGlzLmdlbmVyYWxQaXBlLk1FTlNBSkVfRUxJTUlOQVIpO1xyXG4gICAgdGhpcy5hcmNoaXZvU2VsZWNjaW9uYWRvID0gbnVsbDtcclxuICAgIHRoaXMuZmlsdGVyVmFsdWUgPSBudWxsO1xyXG4gICAgdGhpcy5uZ09uSW5pdCgpO1xyXG4gIH1cclxuXHJcbiAgaXNGb3JtYXRvVmFsaWRvKG5vbWJyZUFyY2hpdm86IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgLy8gVmVyaWZpY2Egc2kgZWwgYXJjaGl2byB0ZXJtaW5hIGNvbiBhbGd1bmEgZGUgbGFzIGV4dGVuc2lvbmVzIHbDoWxpZGFzXHJcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLkZPUk1BVFNfVkFMSURPUykuc29tZShleHQgPT4gbm9tYnJlQXJjaGl2by5lbmRzV2l0aChleHQpKTtcclxuICB9XHJcblxyXG4gIGNyZWFyQ2FycGV0YSgpIHtcclxuICAgIHRoaXMuaXNWaXN1YWxpemFyQ3JlYXJDYXBlcnRhID0gdHJ1ZTtcclxuICAgIHRoaXMubm9tTnVldmFDYXJwZXRhID0gbnVsbDtcclxuICB9XHJcblxyXG4gIGFzeW5jIGd1YXJkYXJDYXJwZXRhKCkge1xyXG5cclxuICAgIGlmICh0aGlzLm1pRm9ybXVsYXJpby52YWxpZCkge1xyXG5cclxuICAgICAgbGV0IHJ1dGFDb21wbGVtZW50byA9IHRoaXMuYXJjaGl2b1NlbGVjY2lvbmFkby5kYXRhO1xyXG5cclxuICAgICAgaWYgKCF0aGlzLmFyY2hpdm9TZWxlY2Npb25hZG8/LnBhcmVudCkge1xyXG4gICAgICAgIHJ1dGFDb21wbGVtZW50byA9ICcnO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLnBsYW50aWxsYXNTZXJ2aWNlLmNyZWFyQ2FycGV0YSh0aGlzLnJ1dGFQcmluY2lwYWwsIHJ1dGFDb21wbGVtZW50bywgdGhpcy5ub21OdWV2YUNhcnBldGEpKTtcclxuICAgICAgdGhpcy50b2FzdFNlcnZpY2Uuc2hvd1N1Y2Nlc3MoJ0xhIGNhcnBldGEgc2UgaGEgY3JlYWRvIGNvcnJlY3RhbWVudGUnKTtcclxuICAgICAgdGhpcy5uZ09uSW5pdCgpO1xyXG5cclxuICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICB0aGlzLnRvYXN0U2VydmljZS5zaG93RXJyb3IoJ0ZhbHRhbiBjYW1wb3Mgb2JsaWdhdG9yaW9zJyk7XHJcbiAgICAgIE9iamVjdC5rZXlzKHRoaXMubWlGb3JtdWxhcmlvLmNvbnRyb2xzKS5mb3JFYWNoKChrZXkpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5taUZvcm11bGFyaW8uY29udHJvbHNba2V5XS5pbnZhbGlkKSB7XHJcbiAgICAgICAgICB0aGlzLm1pRm9ybXVsYXJpby5jb250cm9sc1trZXldLm1hcmtBc0RpcnR5KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBlbGltaW5hckNhcnBldGEoKSB7XHJcblxyXG4gICAgdGhpcy5pc1Zpc3VhbGl6YXJDcmVhckNhcGVydGEgPSBmYWxzZTtcclxuXHJcbiAgICB0aGlzLmNvbmZpcm1hdGlvblNlcnZpY2UuY29uZmlybSh7XHJcbiAgICAgIHRhcmdldDogZXZlbnQudGFyZ2V0LFxyXG4gICAgICBrZXk6ICdlbGltaW5hckNhcnBldGEnLFxyXG4gICAgICBtZXNzYWdlOiAnwr9EZXNlYSBlbGltaW5hciBlbCByZWdpc3Rybz8nLFxyXG4gICAgICBhY2NlcHRMYWJlbDogJ1NpJyxcclxuICAgICAgaWNvbjogJ2NvbmZpcm1hcicsXHJcbiAgICAgIGFjY2VwdDogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0RWxpbWluYXJDYXJwZXRhKCk7XHJcbiAgICAgIH0sXHJcbiAgICAgIHJlamVjdDogKCkgPT4geyB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBzZXRFbGltaW5hckNhcnBldGEoKSB7XHJcblxyXG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuXHJcbiAgICBsZXQgcnV0YUNvbXBsZW1lbnRvID0gdGhpcy5hcmNoaXZvU2VsZWNjaW9uYWRvLmRhdGE7XHJcblxyXG4gICAgaWYgKCF0aGlzLmFyY2hpdm9TZWxlY2Npb25hZG8/LnBhcmVudCkge1xyXG4gICAgICBydXRhQ29tcGxlbWVudG8gPSAnJztcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnBsYW50aWxsYXNTZXJ2aWNlLmVsaW1pbmFyQ2FycGV0YSh0aGlzLnJ1dGFQcmluY2lwYWwsIHJ1dGFDb21wbGVtZW50bykuc3Vic2NyaWJlKHJ0YSA9PiB7XHJcbiAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLnNob3dTdWNjZXNzKCdMYSBjYXJwZXRhIGhhIHNpZG8gZWxpbWluYWRhIGNvcnJlY3RhbWVudGUnKTtcclxuICAgICAgdGhpcy5hcmNoaXZvU2VsZWNjaW9uYWRvID0gbnVsbDtcclxuICAgICAgdGhpcy5maWx0ZXJWYWx1ZSA9IG51bGw7XHJcbiAgICAgIHRoaXMubmdPbkluaXQoKTtcclxuICAgIH0pXHJcblxyXG4gIH1cclxuXHJcbiAgYXN5bmMgY29udmVydGlyQXJjaGl2b3MoKSB7XHJcblxyXG4gICAgdGhpcy5pc1Zpc3VhbGl6YXJDcmVhckNhcGVydGEgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNNb3N0cmFyUG9wdXBDb252ZXJ0aXIgPSB0cnVlO1xyXG4gICAgLy9jb25zdCBmaWx0ZXJlZE5vZGVzID0gdGhpcy5nZXRGaWx0ZXJlZE5vZGVzKCk7XHJcbiAgICBjb25zdCB2YWxvckZpbHRybyA9IHRoaXMuZmlsdGVyVmFsdWU7XHJcblxyXG4gICAgY29uc3Qgc2xlZXAgPSAobSkgPT4gbmV3IFByb21pc2UoKHIpID0+IHNldFRpbWVvdXQociwgbSkpO1xyXG4gICAgYXdhaXQgc2xlZXAoNTApO1xyXG5cclxuICAgIHRoaXMucG9wdXBDb252ZXJ0aXJQbGFudGlsbGFzQ29tcG9uZW50LmJ1c2Nhcih0aGlzLnJ1dGFQcmluY2lwYWwsIHZhbG9yRmlsdHJvKTtcclxuXHJcbiAgfVxyXG5cclxuICByZWdyZXNhclBvcHVwQ29udmVydGlyKCRldmVudDogYW55KSB7XHJcbiAgICB0aGlzLmlzTW9zdHJhclBvcHVwQ29udmVydGlyID0gZmFsc2U7XHJcbiAgICB0aGlzLm5nT25Jbml0KCk7XHJcbiAgfVxyXG5cclxuICBpc0h0bWwoKSB7XHJcbiAgICB0aGlzLmh0bWwgPSBmYWxzZTtcclxuXHJcbiAgICBpZiAodGhpcy5hcmNoaXZvU2VsZWNjaW9uYWRvICE9IG51bGwgJiYgdGhpcy5hcmNoaXZvU2VsZWNjaW9uYWRvLmxhYmVsICE9IG51bGwgJiYgdGhpcy5hcmNoaXZvU2VsZWNjaW9uYWRvLmxhYmVsLmluY2x1ZGVzKCcuaHRtbCcpKVxyXG4gICAgICB0aGlzLmh0bWwgPSB0cnVlO1xyXG5cclxuICAgIHJldHVybiB0aGlzLmh0bWw7XHJcbiAgfVxyXG5cclxuICBhc3luYyBlZGl0YXJBY3Rpb24oKSB7XHJcblxyXG4gICAgbGV0IGRhdGEgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLnBsYW50aWxsYXNTZXJ2aWNlLmNvbnN1bHRhckFyY2hpdm9IdG1sKHRoaXMucnV0YVByaW5jaXBhbCwgdGhpcy5hcmNoaXZvU2VsZWNjaW9uYWRvLmRhdGEpKTtcclxuXHJcbiAgICB0aGlzLm1vZGlmaWNhckhUTUwgPSBkYXRhO1xyXG5cclxuICAgIHRoaXMubW9zdHJhckVkaXRvciA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBhc3luYyBndWFyZGFySHRtbCgpIHtcclxuXHJcbiAgICBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLnBsYW50aWxsYXNTZXJ2aWNlLmd1YXJkYXJBcmNoaXZvSHRtbCh0aGlzLnJ1dGFQcmluY2lwYWwsIHRoaXMuYXJjaGl2b1NlbGVjY2lvbmFkby5kYXRhLCB0aGlzLm1vZGlmaWNhckhUTUwpKTtcclxuXHJcbiAgICB0aGlzLnRvYXN0U2VydmljZS5zaG93U3VjY2VzcygnRWwgYXJjaGl2byBoYSBzaWRvIG1vZGlmaWNhZG8gY29ycmVjdGFtZW50ZScpO1xyXG5cclxuICAgIHRoaXMubmdPbkluaXQoKTtcclxuXHJcbiAgfVxyXG5cclxuICByZWdyZXNhclByaW5jaXBhbCgpIHtcclxuICAgIHRoaXMubW9zdHJhckVkaXRvciA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHZlcmlmaWNhckNvbnRyb2woY29udHJvbCkge1xyXG4gICAgcmV0dXJuIHRoaXMuY29udHJvbEZ1bmNpb25TZXJ2aWNlLmdldENvbnRyb2xGdW5jaW9uYWxpZGFkKGNvbnRyb2wpO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPGRpdiBpZD1cImNhcmd1ZS1wbGFudGlsbGFzXCI+XHJcbjxwLWNvbmZpcm1Qb3B1cCBrZXk9XCJlbGltaW5hckNhcnBldGFcIj48L3AtY29uZmlybVBvcHVwPlxyXG48cC1jb25maXJtUG9wdXAga2V5PVwiZWxpbWluYXJBcmNoaXZvXCI+PC9wLWNvbmZpcm1Qb3B1cD5cclxuXHJcbjxoMSBjbGFzcz1cIm1iLTRcIj57eydjYXJndWUnIHwgdHJhbnNsYXRlfX0ge3sncGxhbnRpbGxhcycgfCB0cmFuc2xhdGV9fTwvaDE+XHJcblxyXG48ZGl2IGNsYXNzPVwicC1mbHVpZCBwLWZvcm1ncmlkIGdyaWRcIj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiZmllbGQgY29sLTEyIG1kOmNvbC02IGxnOmNvbC01IGNhcmQgcC01XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgcElucHV0VGV4dCBbKG5nTW9kZWwpXT1cImZpbHRlclZhbHVlXCIgcGxhY2Vob2xkZXI9XCJ7eydmaWx0cm8nIHwgdHJhbnNsYXRlfX1cIlxyXG4gICAgICAgICAgICAgICAgKGtleWRvd24pPVwiZmlsdHJhckVudGVyKCRldmVudClcIiAvPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBwQnV0dG9uIHBSaXBwbGUgaWNvbj1cInBpIHBpLXNlYXJjaCB0ZXh0LXhsXCIgKGNsaWNrKT1cImFwbGljYXJGaWx0cm8oKVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInAtZWxlbWVudCBwLXJpcHBsZSBwLWJ1dHRvbi1yb3VuZGVkICBwLWJ1dHRvbi1zZWNvbmRhcnkgcC1idXR0b24gcC1jb21wb25lbnQgcC1idXR0b24taWNvbi1vbmx5IGFic29sdXRlIHJpZ2h0LTAgYm9yZGVyLW5vbmUgYmctd2hpdGUtYWxwaGEtMTBcIlxyXG4gICAgICAgICAgICAgICAgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCIgcFRvb2x0aXA9XCJFZGl0YXIgSFRNTFwiPjwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8cC10cmVlICN0cmVlIHNjcm9sbEhlaWdodD1cIjY3MHB4XCIgW3ZhbHVlXT1cImZpbHRlcmVkRmlsZXNcIiBzZWxlY3Rpb25Nb2RlPVwic2luZ2xlXCIgWyhzZWxlY3Rpb24pXT1cImRhdGFTZWxlY3RlZFwiXHJcbiAgICAgICAgICAgIFtmaWx0ZXJdPVwiZmFsc2VcIiBbZmlsdGVyUGxhY2Vob2xkZXJdPVwiJ2ZpbHRybycgfCB0cmFuc2xhdGVcIiBmaWx0ZXJNb2RlPVwic3RyaWN0XCJcclxuICAgICAgICAgICAgKG9uTm9kZVNlbGVjdCk9XCJzZWxlY2Npb25hckFyY2hpdm8oJGV2ZW50KVwiIFtsb2FkaW5nXT1cImxvYWRpbmdcIlxyXG4gICAgICAgICAgICAob25Ob2RlVW5zZWxlY3QpPVwiZGVzZWxlY2Npb25hckFyY2hpdm8oJGV2ZW50KVwiPjwvcC10cmVlPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLSBPUENJTkVTIERJUkVDVE9SSU9TIC0gQVJDSElWT1MgLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZmllbGQgY29sLTEyIG1kOmNvbC02IGxnOmNvbC03IHAtMCBwbC0zXCI+XHJcblxyXG4gICAgICAgIEBpZih0aGlzLmxvYWRpbmcpe1xyXG4gICAgICAgIDxwLXByb2dyZXNzQmFyIG1vZGU9XCJpbmRldGVybWluYXRlXCIgW3N0eWxlXT1cInsgaGVpZ2h0OiAnNnB4JyB9XCI+PC9wLXByb2dyZXNzQmFyPlxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgQGlmKCF0aGlzLmxvYWRpbmcpe1xyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJlbmNhYmV6YWRvLWFjY2lvbmVzIHNvbWJyYS1jYWphIG1iLTNcIj5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gQ0FSUEVUQSAtLT5cclxuICAgICAgICAgICAgQGlmKGFyY2hpdm9TZWxlY2Npb25hZG8uZXhwYW5kZWQpe1xyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIDxoMSBjbGFzcz1cInRleHQteGwgbXQtMiBtYi00IG1yLTNcIj5DYXJwZXRhOiA8L2gxPlxyXG4gICAgICAgICAgICAgICAgPGg1IGNsYXNzPVwidGV4dC1zbSBtdC0yIG1iLTRcIj4ge3thcmNoaXZvU2VsZWNjaW9uYWRvLmxhYmVsfX0gPC9oNT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gQ29udmVydGlyIC0tPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgcEJ1dHRvbiBwUmlwcGxlIChjbGljayk9XCJjb252ZXJ0aXJBcmNoaXZvcygpXCJcclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInZlckNvbnZlcnRpciAmJiBjb250cm9sRnVuY2lvblNlcnZpY2UuZ2V0Q29udHJvbEZ1bmNpb25hbGlkYWQoJ3NlZ3VwbGFjb3I6Z3VhcmRhcicpXCJcclxuICAgICAgICAgICAgICAgICAgICB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIiBsYWJlbD1cInt7J2NvbnZlcnRpcicgfCB0cmFuc2xhdGV9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3LWZ1bGwgbXItMyBwLWJ1dHRvbi1zZWNvbmRhcnkgYm90b24tYWNjaW9uLXByaW5jaXBhbCBjb2xvci01MDBcIlxyXG4gICAgICAgICAgICAgICAgICAgIHBUb29sdGlwPVwiQ29udmVydGlyIGFyY2hpdm9cIiB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVuZWRvci1pY29uby1hY2Npb25lcy1wcmluY2lwYWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJwaSBwaS1hcnJvdy1yaWdodC1hcnJvdy1sZWZ0IGNvbG9yLTUwMFwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS1OdWV2YSBDYXJwZXRhLS0+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiY29udHJvbEZ1bmNpb25TZXJ2aWNlLmdldENvbnRyb2xGdW5jaW9uYWxpZGFkKCdzZWd1cGxhY29yOmd1YXJkYXInKVwiIHBCdXR0b24gcFJpcHBsZVxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidy1mdWxsIG1yLTMgcC1idXR0b24tc2Vjb25kYXJ5IGJvdG9uLWFjY2lvbi1wcmluY2lwYWwgY29sb3ItNTAwXCJcclxuICAgICAgICAgICAgICAgICAgICBsYWJlbD1cInt7J2xpbmtfbnVldm8nIHwgdHJhbnNsYXRlfX1cIiAoY2xpY2spPVwiY3JlYXJDYXJwZXRhKClcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVuZWRvci1pY29uby1hY2Npb25lcy1wcmluY2lwYWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJnbHlwaGljb25zIGdseXBoaWNvbnMtcGx1cyBjb2xvci01MDBcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tRWxpbWluYXItLT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidG4tZmlsZXVwbG9hZC1jbGFyb1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJjb250cm9sRnVuY2lvblNlcnZpY2UuZ2V0Q29udHJvbEZ1bmNpb25hbGlkYWQoJ3NlZ3VwbGFjb3I6Z3VhcmRhcicpXCIgcEJ1dHRvbiBwUmlwcGxlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicC1idXR0b24gcC1idXR0b24tc2Vjb25kYXJ5IGZvbnQtc2VtaWJvbGQgZmxleC1zaHJpbmstMCBib3Rvbi1hY2Npb24tcHJpbmNpcGFsIG1yLTNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD1cInt7J2xpbmtfZWxpbWluYXInIHwgdHJhbnNsYXRlfX1cIiAoY2xpY2spPVwiZWxpbWluYXJDYXJwZXRhKClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbmVkb3ItaWNvbm8tYWNjaW9uZXMtcHJpbmNpcGFsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBzdHlsZT1cImNvbG9yOiB2YXIoLS1jb2xvci01MDApXCIgY2xhc3M9XCJnbHlwaGljb25zIGdseXBoaWNvbnMtYmluXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gQ2FyZ2FyIEFyY2hpdm8gLS0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuLWZpbGV1cGxvYWQtY2xhcm9cIiBbbmdDbGFzc109XCJ7ICdtaW4td2lkdGgtMTAwJzogIXZlckNvbnZlcnRpciwgJ21pbi13aWR0aC0yMCc6IHZlckNvbnZlcnRpciB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHAtZmlsZVVwbG9hZCAjZnViYXV0byBtb2RlPVwiYmFzaWNcIiBbYXV0b109XCJ0cnVlXCIgW2N1c3RvbVVwbG9hZF09XCJ0cnVlXCIgY2hvb3NlSWNvbj1cInBpIHBpLXBhcGVyY2xpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29udHJvbEZ1bmNpb25TZXJ2aWNlLmdldENvbnRyb2xGdW5jaW9uYWxpZGFkKCdzZWd1cGxhY29yOmd1YXJkYXInKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNob29zZUxhYmVsPVwie3snbGlua19zdWJpcmFyY2hpdm9zJyB8IHRyYW5zbGF0ZX19XCIgKG9uU2VsZWN0KT1cImNhcmdhck51ZXZvKCRldmVudCwgZnViYXV0bylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbmVkb3ItaWNvbm8tYWNjaW9uZXMtcHJpbmNpcGFsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLXRyYXNoXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L3AtZmlsZVVwbG9hZD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgPCEtLSBBUkNISVZPLS0+XHJcbiAgICAgICAgICAgIEBpZighYXJjaGl2b1NlbGVjY2lvbmFkby5leHBhbmRlZCl7XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIDxoMSBjbGFzcz1cInRleHQteGwgbXQtMiBtYi00IG1yLTNcIj5BcmNoaXZvOiA8L2gxPlxyXG4gICAgICAgICAgICAgICAgPGg1IGNsYXNzPVwidGV4dC1zbSBtdC0yIG1iLTRcIj4ge3thcmNoaXZvU2VsZWNjaW9uYWRvLmxhYmVsfX0gPC9oNT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICBAaWYoYXJjaGl2b1NlbGVjY2lvbmFkby5sYWJlbC5pbmNsdWRlcygnLmh0bWwnKSl7XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLUVESVRBUiBIVE1MLS0+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBwQnV0dG9uIHBSaXBwbGUgaWNvbj1cInBpIHBpLWNvZGUgdGV4dC14bCBjb2xvci01MDBcIiAoY2xpY2spPVwiZWRpdGFyQWN0aW9uKClcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXItMyB3LWZ1bGwgcC1idXR0b24tc2Vjb25kYXJ5ICBib3Rvbi1hY2Npb24tcHJpbmNpcGFsIFwiIGxhYmVsPVwiRWRpdGFyIEhUTUxcIj5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gREVTQ0FSR0FSLS0+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIHBCdXR0b24gcFJpcHBsZSBjbGFzcz1cIm1yLTMgdy1mdWxsIHAtYnV0dG9uLXNlY29uZGFyeSBib3Rvbi1hY2Npb24tcHJpbmNpcGFsIGNvbG9yLTUwMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw9XCJ7eydsaW5rX2Rlc2NhcmdhcicgfCB0cmFuc2xhdGV9fVwiIChjbGljayk9XCJkZXNjYXJnYXJBbmV4bygpXCJcclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbnRyb2xGdW5jaW9uU2VydmljZS5nZXRDb250cm9sRnVuY2lvbmFsaWRhZCgnc2VndXBsYWNvcjpkZXNjYXJnYXInKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW5lZG9yLWljb25vLWFjY2lvbmVzLXByaW5jaXBhbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImdseXBoaWNvbnMgZ2x5cGhpY29ucy1kb3dubG9hZCBjb2xvci01MDBcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tRUxJTUlOQVItLT5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gcEJ1dHRvbiBwUmlwcGxlIGNsYXNzPVwidy1mdWxsIHAtYnV0dG9uLXNlY29uZGFyeSAgYm90b24tYWNjaW9uLXByaW5jaXBhbCBjb2xvci01MDBcIlxyXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsPVwie3snbGlua19lbGltaW5hcicgfCB0cmFuc2xhdGV9fVwiIChjbGljayk9XCJlbGltaW5hckFyY2hpdm8oKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb250cm9sRnVuY2lvblNlcnZpY2UuZ2V0Q29udHJvbEZ1bmNpb25hbGlkYWQoJ3NlZ3VwbGFjb3I6Z3VhcmRhcicpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbmVkb3ItaWNvbm8tYWNjaW9uZXMtcHJpbmNpcGFsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZ2x5cGhpY29ucyBnbHlwaGljb25zLWJpbiBjb2xvci01MDBcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIEBpZihhcmNoaXZvU2VsZWNjaW9uYWRvLmV4cGFuZGVkICYmIGlzVmlzdWFsaXphckNyZWFyQ2FwZXJ0YSl7XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmRcIj5cclxuXHJcbiAgICAgICAgICAgIDxoNSBjbGFzcz1cIm10LTJcIj48aSBjbGFzcz1cImdseXBoaWNvbnMgZ2x5cGhpY29ucy1ub3RlXCI+PC9pPiBOdWV2YSBjYXJwZXRhPC9oNT5cclxuXHJcbiAgICAgICAgICAgIDxmb3JtICNtaUZvcm11bGFyaW89XCJuZ0Zvcm1cIj5cclxuICAgICAgICAgICAgICAgIDwhLS0gY2FtcG9zIC0tPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gTm9tYnJlIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LWZ1bGwgcC0wIG1iLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLWZsb2F0LWxhYmVsIG1yLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBwSW5wdXRUZXh0IGlkPVwiaWRfbnVtZXJvX2RlX2V2ZW50b1wiIFsobmdNb2RlbCldPVwibm9tTnVldmFDYXJwZXRhXCIgcmVxdWlyZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwibm9tYnJlQ2FycGV0YVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImlkX251bWVyb19kZV9ldmVudG9cIj57eydub21icmUnIHwgdHJhbnNsYXRlfX0gKjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tR3VhcmRhciBDYXJwZXRhLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gcEJ1dHRvbiBwUmlwcGxlIGNsYXNzPVwibXItMiBwLWJ1dHRvbi1yYWlzZWRcIiBpY29uPVwiZ2x5cGhpY29ucyBnbHlwaGljb25zLWZsb3BweS1zYXZlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCIoJ2xpbmtfZ3VhcmRhcicgfCB0cmFuc2xhdGUpXCIgKGNsaWNrKT1cImd1YXJkYXJDYXJwZXRhKClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9mb3JtPlxyXG5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICB9XHJcbiAgICAgICAgPCEtLSBFRElUT1IgREUgSFRNTCAtLT5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiaXNIdG1sKCkgJiYgbW9zdHJhckVkaXRvclwiPlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWVuZCBhbGlnbi1pdGVtcy1jZW50ZXIgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgPCEtLSBCb3TDs24gZ3VhcmRhciBIVE1MIC0tPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBwQnV0dG9uIHBSaXBwbGUgbGFiZWw9XCJ7eydsaW5rX2d1YXJkYXInIHwgdHJhbnNsYXRlIH19XCIgKGNsaWNrKT1cImd1YXJkYXJIdG1sKClcIlxyXG4gICAgICAgICAgICAgICAgICAgIGljb249XCJnbHlwaGljb25zIGdseXBoaWNvbnMtZmxvcHB5LXNhdmVcIiBjbGFzcz1cInAtYnV0dG9uLXJhaXNlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb250cm9sRnVuY2lvblNlcnZpY2UuZ2V0Q29udHJvbEZ1bmNpb25hbGlkYWQoJ3NlZ3VwbGFjb3I6Z3VhcmRhcicpXCI+PC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPHAtZWRpdG9yIGlkPVwiZWRpdG9yXCIgW3N0eWxlXT1cInsgaGVpZ2h0OiAnNTAwcHgnIH1cIiByZXF1aXJlZCBbKG5nTW9kZWwpXT1cIm1vZGlmaWNhckhUTUxcIlxyXG4gICAgICAgICAgICAgICAgbmFtZT1cImh0bWxQdWJsaWNhY2lvblwiPjwvcC1lZGl0b3I+XHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuQGlmKGlzTW9zdHJhclBvcHVwQ29udmVydGlyKXtcclxuPGFwcC1wb3B1cC1jb252ZXJ0aXItcGxhbnRpbGxhcyAocmVncmVzYXIpPVwicmVncmVzYXJQb3B1cENvbnZlcnRpcigkZXZlbnQpXCI+PC9hcHAtcG9wdXAtY29udmVydGlyLXBsYW50aWxsYXM+XHJcbn1cclxuXHJcbjwvZGl2PiJdfQ==
378
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZ3VlLXBsYW50aWxsYS1nZW5lcmFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvd2ViY29tbW9uL3BhZ2VzL2Nhcmd1ZS1wbGFudGlsbGEvY2FyZ3VlLXBsYW50aWxsYS1nZW5lcmFsL2Nhcmd1ZS1wbGFudGlsbGEtZ2VuZXJhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3dlYmNvbW1vbi9wYWdlcy9jYXJndWUtcGxhbnRpbGxhL2Nhcmd1ZS1wbGFudGlsbGEtZ2VuZXJhbC9jYXJndWUtcGxhbnRpbGxhLWdlbmVyYWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQW9CLE1BQU0scUJBQXFCLENBQUM7QUFDeEUsT0FBTyxFQUFFLG1CQUFtQixFQUFzQixNQUFNLGFBQWEsQ0FBQztBQUN0RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3hELE9BQU8sRUFBUSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFJaEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBVSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FB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Qyw0bVNBOEtNLHM2Q0RsSk0sZUFBZSwyRkFDdkIsWUFBWSxrT0FDWixVQUFVLCszQkFDVixlQUFlLHlIQUNmLFlBQVksNk9BQ1osaUJBQWlCLHNYQUNqQixrQkFBa0IsMFBBQ2xCLFdBQVcsMndDQUNYLGNBQWMsOEJBQ2QsZ0JBQWdCLDBnQ0FDaEIsaUNBQWlDLHVJQUNqQyxZQUFZLGtSQUNaLGlCQUFpQjs7MkZBUVIsK0JBQStCO2tCQXZCM0MsU0FBUzsrQkFDRSw4QkFBOEIsY0FDNUIsSUFBSSxXQUNQLENBQUMsZUFBZTt3QkFDdkIsWUFBWTt3QkFDWixVQUFVO3dCQUNWLGVBQWU7d0JBQ2YsWUFBWTt3QkFDWixpQkFBaUI7d0JBQ2pCLGtCQUFrQjt3QkFDbEIsV0FBVzt3QkFDWCxjQUFjO3dCQUNkLGdCQUFnQjt3QkFDaEIsaUNBQWlDO3dCQUNqQyxZQUFZO3dCQUNaLGlCQUFpQjtxQkFDbEIsYUFHVTt3QkFDVCxtQkFBbUI7cUJBQ3BCOzRYQUk2QyxpQ0FBaUM7c0JBQTlFLFNBQVM7dUJBQUMsaUNBQWlDO2dCQUNFLFlBQVk7c0JBQXpELFNBQVM7dUJBQUMsY0FBYyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFDekIsYUFBYTtzQkFBL0IsU0FBUzt1QkFBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlLCBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IENvbmZpcm1hdGlvblNlcnZpY2UsIE1lbnVJdGVtLCBUcmVlTm9kZSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcclxuaW1wb3J0IHsgQnV0dG9uTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9idXR0b24nO1xyXG5pbXBvcnQgeyBJbnB1dFRleHRNb2R1bGUgfSBmcm9tICdwcmltZW5nL2lucHV0dGV4dCc7XHJcbmltcG9ydCB7IFNwbGl0QnV0dG9uTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9zcGxpdGJ1dHRvbic7XHJcbmltcG9ydCB7IFRyZWUsIFRyZWVNb2R1bGUgfSBmcm9tICdwcmltZW5nL3RyZWUnO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvc2VydmljaW9zL2F1dGguc2VydmljZSc7XHJcbmltcG9ydCB7IFBsYW50aWxsYXNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vd2ViY29tbW9uL3NlcnZpY2VzL3BsYW50aWxsYXMuc2VydmljZSc7XHJcbmltcG9ydCB7IENhcmdhckNvbnRyb2xGdW5jaW9uYWxpZGFkU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvc2VydmljaW9zL2Nhcmdhci1jb250cm9sLWZ1bmNpb25hbGlkYWQuc2VydmljZSc7XHJcbmltcG9ydCB7IENvbmZpcm1Qb3B1cE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvY29uZmlybXBvcHVwJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIE5nRm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgRmllbGRzZXRNb2R1bGUgfSBmcm9tICdwcmltZW5nL2ZpZWxkc2V0JztcclxuaW1wb3J0IHsgRmlsZVVwbG9hZE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvZmlsZXVwbG9hZCc7XHJcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvc2VydmljaW9zL3RvYXN0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDYXJnYXJBcmNoaXZvc1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZWQvc2VydmljaW9zL2Nhcmdhci1hcmNoaXZvcy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRW5jcmlwdGFkb0Jhc2ljb1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZWQvc2VydmljaW9zL2VuY3JpcHRhZG8tYmFzaWNvLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBHZW5lcmFsUGlwZSB9IGZyb20gJy4uLy4uLy4uLy4uL3dlYmNvbW1vbi9waXBlcy9nZW5lcmFsLnBpcGUnO1xyXG5pbXBvcnQgeyBQb3B1cENvbnZlcnRpclBsYW50aWxsYXNDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi8uLi93ZWJjb21tb24vcG9wdXBzL3BvcHVwLWNvbnZlcnRpci1wbGFudGlsbGFzL3BvcHVwLWNvbnZlcnRpci1wbGFudGlsbGFzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFV0aWxzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvc2VydmljaW9zL3V0aWxzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBFZGl0b3JNb2R1bGUgfSBmcm9tICdwcmltZW5nL2VkaXRvcic7XHJcbmltcG9ydCB7IFByb2dyZXNzQmFyTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9wcm9ncmVzc2Jhcic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1jYXJndWUtcGxhbnRpbGxhLWdlbmVyYWwnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1RyYW5zbGF0ZU1vZHVsZSxcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIFRyZWVNb2R1bGUsXHJcbiAgICBJbnB1dFRleHRNb2R1bGUsXHJcbiAgICBCdXR0b25Nb2R1bGUsXHJcbiAgICBTcGxpdEJ1dHRvbk1vZHVsZSxcclxuICAgIENvbmZpcm1Qb3B1cE1vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgRmllbGRzZXRNb2R1bGUsXHJcbiAgICBGaWxlVXBsb2FkTW9kdWxlLFxyXG4gICAgUG9wdXBDb252ZXJ0aXJQbGFudGlsbGFzQ29tcG9uZW50LFxyXG4gICAgRWRpdG9yTW9kdWxlLFxyXG4gICAgUHJvZ3Jlc3NCYXJNb2R1bGVcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jYXJndWUtcGxhbnRpbGxhLWdlbmVyYWwuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9jYXJndWUtcGxhbnRpbGxhLWdlbmVyYWwuY29tcG9uZW50LnNjc3MnLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAgQ29uZmlybWF0aW9uU2VydmljZVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIENhcmd1ZVBsYW50aWxsYUdlbmVyYWxDb21wb25lbnQge1xyXG5cclxuICBAVmlld0NoaWxkKFBvcHVwQ29udmVydGlyUGxhbnRpbGxhc0NvbXBvbmVudCkgcG9wdXBDb252ZXJ0aXJQbGFudGlsbGFzQ29tcG9uZW50OiBQb3B1cENvbnZlcnRpclBsYW50aWxsYXNDb21wb25lbnQ7XHJcbiAgQFZpZXdDaGlsZCgnbWlGb3JtdWxhcmlvJywgeyBzdGF0aWM6IGZhbHNlIH0pIG1pRm9ybXVsYXJpbyE6IE5nRm9ybTtcclxuICBAVmlld0NoaWxkKCd0cmVlJykgdHJlZUNvbXBvbmVudCE6IFRyZWU7XHJcblxyXG4gIGxvYWRpbmc6IGJvb2xlYW47XHJcbiAgcHJvcGllZGFkOiBzdHJpbmc7XHJcbiAgZXh0ZW5zaW9uZXM6IHN0cmluZztcclxuICBwcm9waWVkYWREZVNpc3RlbWE6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBhbmV4b1Byb3BpZWRhZDogc3RyaW5nID0gJyc7XHJcbiAgZmlsZXM6IFRyZWVOb2RlW107XHJcbiAgZGF0YVNlbGVjdGVkOiBUcmVlTm9kZTtcclxuICBpdGVtc0JvdG9uQWNjaW9uZXM6IE1lbnVJdGVtW107XHJcbiAgdmVyQ29udmVydGlyOiBib29sZWFuO1xyXG4gIG5vbU51ZXZhQ2FycGV0YTogc3RyaW5nO1xyXG4gIGlzVmlzdWFsaXphckNyZWFyQ2FwZXJ0YTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGFyY2hpdm9TZWxlY2Npb25hZG9BbmV4bzogRmlsZTtcclxuICBhcmNoaXZvU2VsZWNjaW9uYWRvOiBUcmVlTm9kZTtcclxuICBpc01vc3RyYXJQb3B1cENvbnZlcnRpcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHJ1dGFQcmluY2lwYWw6IHN0cmluZztcclxuICBmaWx0ZXJlZEZpbGVzOiBUcmVlTm9kZVtdID0gW107XHJcbiAgZmlsdGVyVmFsdWU6IHN0cmluZyA9ICcnO1xyXG4gIGZpbHRyb0NvbnZlcnRpcjogc3RyaW5nO1xyXG4gIGh0bWw6IGJvb2xlYW47XHJcbiAgbW9zdHJhckVkaXRvcjogYm9vbGVhbjtcclxuICBtb2RpZmljYXJIVE1MOiBzdHJpbmc7XHJcblxyXG4gIEZPUk1BVFNfVkFMSURPUzogU2V0PHN0cmluZz4gPSBuZXcgU2V0KFtcclxuICAgICcuZG9jJyxcclxuICAgICcuaHRtbCcsXHJcbiAgICAnLmphc3BlcicsXHJcbiAgICAnLnhscycsXHJcbiAgICAnLmpyeG1sJyxcclxuICAgICcub2R0JyxcclxuICAgICcueGxzbScsXHJcbiAgICAnLnhsc3gnLFxyXG4gICAgJy5wZ3AnLFxyXG4gICAgJy5hc2MnLFxyXG4gICAgJy5jZXInLFxyXG4gICAgJy5wMTInLFxyXG4gICAgJy5kb2N4JyxcclxuICAgICcucHJvcGVydGllcydcclxuICBdKTtcclxuXHJcbiAgcmVhZG9ubHkgRk9STUFUT1MgPSAnZG9jO2h0bWw7amFzcGVyO3hscztqcnhtbDtvZHQ7eGxzbTt4bHN4O3BncDthc2M7Y2VyO3AxMjtkb2N4O3Byb3BlcnRpZXMnO1xyXG4gIFxyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHBsYW50aWxsYXNTZXJ2aWNlOiBQbGFudGlsbGFzU2VydmljZSwgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsIHB1YmxpYyB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgcHVibGljIGNvbnRyb2xGdW5jaW9uU2VydmljZTogQ2FyZ2FyQ29udHJvbEZ1bmNpb25hbGlkYWRTZXJ2aWNlLCBwcml2YXRlIGNvbmZpcm1hdGlvblNlcnZpY2U6IENvbmZpcm1hdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHRvYXN0U2VydmljZTogVG9hc3RTZXJ2aWNlLCBwcml2YXRlIGNhcmdhckFyY2hpdm9TZXJ2aWNlczogQ2FyZ2FyQXJjaGl2b3NTZXJ2aWNlLCBwcml2YXRlIGVuY3JpcHRhZG9CYXNpY286IEVuY3JpcHRhZG9CYXNpY29TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBnZW5lcmFsUGlwZTogR2VuZXJhbFBpcGUsIHB1YmxpYyB1dGlsc1NlcnZpY2U6IFV0aWxzU2VydmljZVxyXG4gICkgeyB9XHJcblxyXG4gIGFzeW5jIG5nT25Jbml0KCk6IFByb21pc2U8dm9pZD4ge1xyXG5cclxuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLm1vc3RyYXJFZGl0b3IgPSBmYWxzZTtcclxuICAgIGxldCBjb25zdWx0YXJSdXRhUHJpbmNpcGFsID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5jYXJnYXJBcmNoaXZvU2VydmljZXMuZ2V0UHJvcGllZGFkKHsgcHJvcGllZGFkOiBcInJ1dGFfcGxhbnRpbGxhc1wiLCBhcGxpY2FjaW9uOiAxIH0pKTtcclxuICAgIGxldCBjb252ZXJ0aXIgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmNhcmdhckFyY2hpdm9TZXJ2aWNlcy5nZXRQcm9waWVkYWQoeyBwcm9waWVkYWQ6IFwic2Vydmlkb3Jfb3Blbk9mZmljZVwiLCBhcGxpY2FjaW9uOiAwIH0pKTtcclxuICAgIHRoaXMudmVyQ29udmVydGlyID0gIWNvbnZlcnRpci52YWxvci52YWxvciA/IHRydWUgOiBmYWxzZTtcclxuICAgIHRoaXMucnV0YVByaW5jaXBhbCA9IGNvbnN1bHRhclJ1dGFQcmluY2lwYWwudmFsb3IudmFsb3I7XHJcbiAgICB0aGlzLmlzVmlzdWFsaXphckNyZWFyQ2FwZXJ0YSA9IGZhbHNlO1xyXG4gICAgYXdhaXQgdGhpcy5vcGVuRGF0YVRhYmxlKCk7XHJcblxyXG4gICAgY29uc3Qgc2xlZXAgPSAobSkgPT4gbmV3IFByb21pc2UoKHIpID0+IHNldFRpbWVvdXQociwgbSkpO1xyXG4gICAgYXdhaXQgc2xlZXAoMTAwKTtcclxuXHJcbiAgICBpZiAodGhpcy5maWx0ZXJWYWx1ZSkge1xyXG4gICAgICBhd2FpdCB0aGlzLmFwbGljYXJGaWx0cm8oKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIG9wZW5EYXRhVGFibGUoKSB7XHJcblxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcblxyXG4gICAgICBpZiAoIXRoaXMucHJvcGllZGFkKSB7XHJcbiAgICAgICAgdGhpcy5wcm9waWVkYWQgPSAncnV0YV9wbGFudGlsbGFzJ1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnBsYW50aWxsYXNTZXJ2aWNlLm9idGVuZXJBcmNoaXZvcyhcclxuICAgICAgICB0aGlzLnByb3BpZWRhZCwgdGhpcy5wcm9waWVkYWREZVNpc3RlbWEgPyAnMCcgOiB0aGlzLmF1dGhTZXJ2aWNlLmdldFRva2VuS2V5KCdhcGxpY2FjaW9uJyksIHRoaXMuRk9STUFUT1MsIHRoaXMuYW5leG9Qcm9waWVkYWQsIHRydWUpLnN1YnNjcmliZVxyXG4gICAgICAgIChydGEgPT4ge1xyXG4gICAgICAgICAgdGhpcy5maWxlcyA9IHJ0YTtcclxuICAgICAgICAgIHRoaXMuZmlsdGVyZWRGaWxlcyA9IHJ0YVxyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAvL3RoaXMuaXNDYXJnYXJJbmljaW8gPSBmYWxzZTtcclxuICAgICAgICAgIGlmICghdGhpcy5hcmNoaXZvU2VsZWNjaW9uYWRvKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYXJjaGl2b1NlbGVjY2lvbmFkbyA9IHRoaXMuZmlsZXNbMF07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9LCAxMDAwKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGFwbGljYXJGaWx0cm8oKSB7XHJcbiAgICB0aGlzLmZpbHRyb0NvbnZlcnRpciA9IHRoaXMuZmlsdGVyVmFsdWU7XHJcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuZmlsdGVyZWRGaWxlcyA9IHRoaXMub2J0ZW5lckZpbHRyb3NOb2Rvcyh0aGlzLmZpbGVzLCB0aGlzLmZpbHRlclZhbHVlKTtcclxuICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICB9LCAxMDAwKTtcclxuICB9XHJcblxyXG4gIG9idGVuZXJGaWx0cm9zTm9kb3Mobm9kZXM6IFRyZWVOb2RlW10sIGZpbHRlclZhbHVlOiBzdHJpbmcpOiBUcmVlTm9kZVtdIHtcclxuXHJcbiAgICBjb25zdCBmaWx0ZXJzID0gdGhpcy5maWx0cm9BdmFuemFkbyhmaWx0ZXJWYWx1ZSk7XHJcblxyXG4gICAgY29uc3QgZmlsdGVyZWROb2RlczogVHJlZU5vZGVbXSA9IFtdO1xyXG5cclxuICAgIG5vZGVzLmZvckVhY2gobm9kZSA9PiB7XHJcblxyXG4gICAgICAvLyBWZXJpZmljYSBzaSBlbCBub2RvIGFjdHVhbCBvIGFsZ3VubyBkZSBzdXMgaGlqb3MgY3VtcGxlIGNvbiBlbCBmaWx0cm9cclxuICAgICAgY29uc3QgY2hpbGRyZW4gPSBub2RlLmNoaWxkcmVuID8gdGhpcy5vYnRlbmVyRmlsdHJvc05vZG9zKG5vZGUuY2hpbGRyZW4sIGZpbHRlclZhbHVlKSA6IFtdO1xyXG5cclxuICAgICAgY29uc3Qgbm9kZU1hdGNoZXMgPSBmaWx0ZXJzLnNvbWUoZmlsdGVyID0+IG5vZGUubGFiZWwuaW5jbHVkZXMoZmlsdGVyKSk7XHJcblxyXG4gICAgICBpZiAobm9kZU1hdGNoZXMgfHwgY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGZpbHRlcmVkTm9kZXMucHVzaCh7IC4uLm5vZGUsIGNoaWxkcmVuIH0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gZmlsdGVyZWROb2RlcztcclxuICB9XHJcblxyXG4gIGZpbHRyb0F2YW56YWRvKHNlYXJjaDogc3RyaW5nKTogc3RyaW5nW10ge1xyXG5cclxuICAgIGlmIChzZWFyY2guaW5jbHVkZXMoJysnKSkge1xyXG4gICAgICBsZXQgYXV4ID0gc2VhcmNoO1xyXG5cclxuICAgICAgaWYgKGF1eC5zdGFydHNXaXRoKCcrJykpIHtcclxuICAgICAgICBhdXggPSBhdXguc3Vic3RyaW5nKDEpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBhdXggPSBhdXgucmVwbGFjZSgvXFwrL2csICc6Jyk7XHJcbiAgICAgIGNvbnN0IGl0ZW1zID0gYXV4LnRyaW0oKS5zcGxpdCgnOicpO1xyXG4gICAgICByZXR1cm4gaXRlbXM7XHJcblxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIFtzZWFyY2hdO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZmlsdHJhckVudGVyKGV2ZW50KSB7XHJcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInKSB7XHJcbiAgICAgIHRoaXMuYXBsaWNhckZpbHRybygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2VsZWNjaW9uYXJBcmNoaXZvKGV2ZW50KSB7XHJcbiAgICB0aGlzLmFyY2hpdm9TZWxlY2Npb25hZG8gPSBldmVudC5ub2RlO1xyXG4gICAgdGhpcy5tb3N0cmFyRWRpdG9yID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBkZXNlbGVjY2lvbmFyQXJjaGl2bygkZXZlbnQpIHtcclxuICAgIHRoaXMuZGF0YVNlbGVjdGVkID0gbnVsbDtcclxuICB9XHJcblxyXG5cclxuICBhc3luYyBjYXJnYXJOdWV2byhldmVudCwgZnViYXV0bykge1xyXG5cclxuICAgIHRoaXMuaXNWaXN1YWxpemFyQ3JlYXJDYXBlcnRhID0gZmFsc2U7XHJcbiAgICB0aGlzLmFyY2hpdm9TZWxlY2Npb25hZG9BbmV4byA9IGV2ZW50LmZpbGVzWzBdO1xyXG5cclxuICAgIGlmICghdGhpcy5pc0Zvcm1hdG9WYWxpZG8odGhpcy5hcmNoaXZvU2VsZWNjaW9uYWRvQW5leG8ubmFtZSkpIHtcclxuICAgICAgdGhpcy50b2FzdFNlcnZpY2Uuc2hvd1dhcm5pbmcoXCJTZSBkZWJlIGFncmVnYXIgdW4gYXJjaGl2byBcIiArIEFycmF5LmZyb20odGhpcy5GT1JNQVRTX1ZBTElET1MpLmpvaW4oJywgJykpXHJcbiAgICAgIGZ1YmF1dG8uY2xlYXIoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIC8vQ2FyZ2FyIEFyY2hpdm8gVGVtcG9yYWxcclxuICAgIGxldCByZXN1bHRhZG8gPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLnBsYW50aWxsYXNTZXJ2aWNlLmNhcmdhckRvY3VtZW50b1RlbXBvcmFsKHRoaXMuYXJjaGl2b1NlbGVjY2lvbmFkb0FuZXhvKSk7XHJcblxyXG4gICAgZnViYXV0by5jbGVhcigpO1xyXG5cclxuICAgIGlmIChyZXN1bHRhZG8/LnZhbGlkYWNpb24pIHtcclxuICAgICAgdGhpcy50b2FzdFNlcnZpY2Uuc2hvd1N1Y2Nlc3MocmVzdWx0YWRvPy52YWxpZGFjaW9uKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBpbmZvcm1hY2lvbkFyY2hpdm8gPSByZXN1bHRhZG8/LmluZm9ybWFjaW9uQXJjaGl2byA/IHJlc3VsdGFkbz8uaW5mb3JtYWNpb25BcmNoaXZvIDogbnVsbDtcclxuXHJcbiAgICAvL09idGVuZXIgUnV0YXNcclxuICAgIGxldCBydXRhQ29tcGxlbWVudG8gPSB0aGlzLmFyY2hpdm9TZWxlY2Npb25hZG8uZGF0YTtcclxuXHJcbiAgICAvL2xldCBvYmpldG8gPSAoYXdhaXQgdGhpcy5jYXJnYXJBcmNoaXZvU2VydmljZXMuZ2V0UHJvcGllZGFkKHsgcHJvcGllZGFkOiBcInJ1dGFfcGxhbnRpbGxhc1wiLCBhcGxpY2FjaW9uOiAxIH0pLnRvUHJvbWlzZSgpKTtcclxuXHJcbiAgICBpZiAoIXRoaXMuYXJjaGl2b1NlbGVjY2lvbmFkbz8ucGFyZW50KSB7XHJcbiAgICAgIHJ1dGFDb21wbGVtZW50byA9ICcnO1xyXG4gICAgfVxyXG5cclxuICAgIC8vVmVyaWZpY2Egc2kgZWwgZG9jdW1lbnRvIHlhIGV4aXN0ZSBcclxuICAgIGxldCBkYXRhID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5wbGFudGlsbGFzU2VydmljZS5leGlzdGVEb2N1bWVudG8odGhpcy5ydXRhUHJpbmNpcGFsLCBydXRhQ29tcGxlbWVudG8sIGluZm9ybWFjaW9uQXJjaGl2bykpO1xyXG5cclxuICAgIGlmIChkYXRhPy52YWxpZGFjaW9uRG9jdW1lbnRvKSB7XHJcbiAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLnNob3dXYXJuaW5nKGRhdGE/LnZhbGlkYWNpb25Eb2N1bWVudG8pO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgLy9HdWFyZGEgZWwgZG9jdW1lbnRvXHJcbiAgICBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLnBsYW50aWxsYXNTZXJ2aWNlLmNhcmdhckRvY3VtZW50byh0aGlzLnJ1dGFQcmluY2lwYWwsIHJ1dGFDb21wbGVtZW50bywgaW5mb3JtYWNpb25BcmNoaXZvKSk7XHJcblxyXG4gICAgdGhpcy50b2FzdFNlcnZpY2Uuc2hvd1N1Y2Nlc3ModGhpcy5nZW5lcmFsUGlwZS5NRU5TQUpFX0dVQVJEQVIpO1xyXG5cclxuICAgIHRoaXMubmdPbkluaXQoKTtcclxuXHJcbiAgfVxyXG5cclxuICBhc3luYyBkZXNjYXJnYXJBbmV4bygpIHtcclxuXHJcbiAgICAvL1J1dGEgYXJjaGl2byAgXHJcbiAgICBsZXQgcnV0YUNvbXBsZW1lbnRvID0gdGhpcy5hcmNoaXZvU2VsZWNjaW9uYWRvLmRhdGE7XHJcblxyXG4gICAgaWYgKCF0aGlzLmFyY2hpdm9TZWxlY2Npb25hZG8/LnBhcmVudCkge1xyXG4gICAgICBydXRhQ29tcGxlbWVudG8gPSAnJztcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmNhcmdhckFyY2hpdm9TZXJ2aWNlcy5kZXNjYXJnYXJBcmNoaXZvKHRoaXMuZW5jcmlwdGFkb0Jhc2ljby5lbmNyaXB0YXIodGhpcy5ydXRhUHJpbmNpcGFsICsgcnV0YUNvbXBsZW1lbnRvKSwgdW5kZWZpbmVkLCB1bmRlZmluZWQpLnN1YnNjcmliZShibG9iID0+IHtcclxuICAgICAgY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcclxuICAgICAgY29uc3Qgb2JqZWN0VXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcclxuICAgICAgYS5ocmVmID0gb2JqZWN0VXJsO1xyXG4gICAgICBhLmRvd25sb2FkID0gdGhpcy5hcmNoaXZvU2VsZWNjaW9uYWRvPy5sYWJlbDtcclxuICAgICAgYS5jbGljaygpO1xyXG4gICAgICBVUkwucmV2b2tlT2JqZWN0VVJMKG9iamVjdFVybCk7XHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuICBlbGltaW5hckFyY2hpdm8oKSB7XHJcbiAgICB0aGlzLmNvbmZpcm1hdGlvblNlcnZpY2UuY29uZmlybSh7XHJcbiAgICAgIHRhcmdldDogZXZlbnQudGFyZ2V0LFxyXG4gICAgICBrZXk6ICdlbGltaW5hckFyY2hpdm8nLFxyXG4gICAgICBtZXNzYWdlOiAnwr9EZXNlYSBlbGltaW5hciBlbCByZWdpc3Rybz8nLFxyXG4gICAgICBhY2NlcHRMYWJlbDogJ1NpJyxcclxuICAgICAgaWNvbjogJ2NvbmZpcm1hcicsXHJcbiAgICAgIGFjY2VwdDogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0RWxpbWluYXJBcmNoaXZvKCk7XHJcbiAgICAgIH0sXHJcbiAgICAgIHJlamVjdDogKCkgPT4geyB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBzZXRFbGltaW5hckFyY2hpdm8oKSB7XHJcblxyXG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuXHJcbiAgICAvL1J1dGEgYXJjaGl2byAgXHJcbiAgICBsZXQgcnV0YUNvbXBsZW1lbnRvID0gdGhpcy5hcmNoaXZvU2VsZWNjaW9uYWRvLmRhdGE7XHJcblxyXG4gICAgaWYgKCF0aGlzLmFyY2hpdm9TZWxlY2Npb25hZG8/LnBhcmVudCkge1xyXG4gICAgICBydXRhQ29tcGxlbWVudG8gPSAnJztcclxuICAgIH1cclxuXHJcbiAgICBsZXQgcHJvcGllZGFkID0gJ3J1dGFfcGxhbnRpbGxhcydcclxuICAgIGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuY2FyZ2FyQXJjaGl2b1NlcnZpY2VzLmVsaW1pbmFyQXJjaGl2byh0aGlzLmVuY3JpcHRhZG9CYXNpY28uZW5jcmlwdGFyKHJ1dGFDb21wbGVtZW50byksIHByb3BpZWRhZCwgJzEnKSk7XHJcbiAgICB0aGlzLnRvYXN0U2VydmljZS5zaG93U3VjY2Vzcyh0aGlzLmdlbmVyYWxQaXBlLk1FTlNBSkVfRUxJTUlOQVIpO1xyXG4gICAgdGhpcy5hcmNoaXZvU2VsZWNjaW9uYWRvID0gbnVsbDtcclxuICAgIHRoaXMuZmlsdGVyVmFsdWUgPSBudWxsO1xyXG4gICAgdGhpcy5uZ09uSW5pdCgpO1xyXG4gIH1cclxuXHJcbiAgaXNGb3JtYXRvVmFsaWRvKG5vbWJyZUFyY2hpdm86IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgLy8gVmVyaWZpY2Egc2kgZWwgYXJjaGl2byB0ZXJtaW5hIGNvbiBhbGd1bmEgZGUgbGFzIGV4dGVuc2lvbmVzIHbDoWxpZGFzXHJcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLkZPUk1BVFNfVkFMSURPUykuc29tZShleHQgPT4gbm9tYnJlQXJjaGl2by5lbmRzV2l0aChleHQpKTtcclxuICB9XHJcblxyXG4gIGNyZWFyQ2FycGV0YSgpIHtcclxuICAgIHRoaXMuaXNWaXN1YWxpemFyQ3JlYXJDYXBlcnRhID0gdHJ1ZTtcclxuICAgIHRoaXMubm9tTnVldmFDYXJwZXRhID0gbnVsbDtcclxuICB9XHJcblxyXG4gIGFzeW5jIGd1YXJkYXJDYXJwZXRhKCkge1xyXG5cclxuICAgIGlmICh0aGlzLm1pRm9ybXVsYXJpby52YWxpZCkge1xyXG5cclxuICAgICAgbGV0IHJ1dGFDb21wbGVtZW50byA9IHRoaXMuYXJjaGl2b1NlbGVjY2lvbmFkby5kYXRhO1xyXG5cclxuICAgICAgaWYgKCF0aGlzLmFyY2hpdm9TZWxlY2Npb25hZG8/LnBhcmVudCkge1xyXG4gICAgICAgIHJ1dGFDb21wbGVtZW50byA9ICcnO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLnBsYW50aWxsYXNTZXJ2aWNlLmNyZWFyQ2FycGV0YSh0aGlzLnJ1dGFQcmluY2lwYWwsIHJ1dGFDb21wbGVtZW50bywgdGhpcy5ub21OdWV2YUNhcnBldGEpKTtcclxuICAgICAgdGhpcy50b2FzdFNlcnZpY2Uuc2hvd1N1Y2Nlc3MoJ0xhIGNhcnBldGEgc2UgaGEgY3JlYWRvIGNvcnJlY3RhbWVudGUnKTtcclxuICAgICAgdGhpcy5uZ09uSW5pdCgpO1xyXG5cclxuICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICB0aGlzLnRvYXN0U2VydmljZS5zaG93RXJyb3IoJ0ZhbHRhbiBjYW1wb3Mgb2JsaWdhdG9yaW9zJyk7XHJcbiAgICAgIE9iamVjdC5rZXlzKHRoaXMubWlGb3JtdWxhcmlvLmNvbnRyb2xzKS5mb3JFYWNoKChrZXkpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5taUZvcm11bGFyaW8uY29udHJvbHNba2V5XS5pbnZhbGlkKSB7XHJcbiAgICAgICAgICB0aGlzLm1pRm9ybXVsYXJpby5jb250cm9sc1trZXldLm1hcmtBc0RpcnR5KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBlbGltaW5hckNhcnBldGEoKSB7XHJcblxyXG4gICAgdGhpcy5pc1Zpc3VhbGl6YXJDcmVhckNhcGVydGEgPSBmYWxzZTtcclxuXHJcbiAgICB0aGlzLmNvbmZpcm1hdGlvblNlcnZpY2UuY29uZmlybSh7XHJcbiAgICAgIHRhcmdldDogZXZlbnQudGFyZ2V0LFxyXG4gICAgICBrZXk6ICdlbGltaW5hckNhcnBldGEnLFxyXG4gICAgICBtZXNzYWdlOiAnwr9EZXNlYSBlbGltaW5hciBlbCByZWdpc3Rybz8nLFxyXG4gICAgICBhY2NlcHRMYWJlbDogJ1NpJyxcclxuICAgICAgaWNvbjogJ2NvbmZpcm1hcicsXHJcbiAgICAgIGFjY2VwdDogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0RWxpbWluYXJDYXJwZXRhKCk7XHJcbiAgICAgIH0sXHJcbiAgICAgIHJlamVjdDogKCkgPT4geyB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBzZXRFbGltaW5hckNhcnBldGEoKSB7XHJcblxyXG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuXHJcbiAgICBsZXQgcnV0YUNvbXBsZW1lbnRvID0gdGhpcy5hcmNoaXZvU2VsZWNjaW9uYWRvLmRhdGE7XHJcblxyXG4gICAgaWYgKCF0aGlzLmFyY2hpdm9TZWxlY2Npb25hZG8/LnBhcmVudCkge1xyXG4gICAgICBydXRhQ29tcGxlbWVudG8gPSAnJztcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnBsYW50aWxsYXNTZXJ2aWNlLmVsaW1pbmFyQ2FycGV0YSh0aGlzLnJ1dGFQcmluY2lwYWwsIHJ1dGFDb21wbGVtZW50bykuc3Vic2NyaWJlKHJ0YSA9PiB7XHJcbiAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLnNob3dTdWNjZXNzKCdMYSBjYXJwZXRhIGhhIHNpZG8gZWxpbWluYWRhIGNvcnJlY3RhbWVudGUnKTtcclxuICAgICAgdGhpcy5hcmNoaXZvU2VsZWNjaW9uYWRvID0gbnVsbDtcclxuICAgICAgdGhpcy5maWx0ZXJWYWx1ZSA9IG51bGw7XHJcbiAgICAgIHRoaXMubmdPbkluaXQoKTtcclxuICAgIH0pXHJcblxyXG4gIH1cclxuXHJcbiAgYXN5bmMgY29udmVydGlyQXJjaGl2b3MoKSB7XHJcblxyXG4gICAgdGhpcy5pc1Zpc3VhbGl6YXJDcmVhckNhcGVydGEgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNNb3N0cmFyUG9wdXBDb252ZXJ0aXIgPSB0cnVlO1xyXG4gICAgLy9jb25zdCBmaWx0ZXJlZE5vZGVzID0gdGhpcy5nZXRGaWx0ZXJlZE5vZGVzKCk7XHJcbiAgICBjb25zdCB2YWxvckZpbHRybyA9IHRoaXMuZmlsdGVyVmFsdWU7XHJcblxyXG4gICAgY29uc3Qgc2xlZXAgPSAobSkgPT4gbmV3IFByb21pc2UoKHIpID0+IHNldFRpbWVvdXQociwgbSkpO1xyXG4gICAgYXdhaXQgc2xlZXAoNTApO1xyXG5cclxuICAgIHRoaXMucG9wdXBDb252ZXJ0aXJQbGFudGlsbGFzQ29tcG9uZW50LmJ1c2Nhcih0aGlzLnJ1dGFQcmluY2lwYWwsIHZhbG9yRmlsdHJvKTtcclxuXHJcbiAgfVxyXG5cclxuICByZWdyZXNhclBvcHVwQ29udmVydGlyKCRldmVudDogYW55KSB7XHJcbiAgICB0aGlzLmlzTW9zdHJhclBvcHVwQ29udmVydGlyID0gZmFsc2U7XHJcbiAgICB0aGlzLm5nT25Jbml0KCk7XHJcbiAgfVxyXG5cclxuICBpc0h0bWwoKSB7XHJcbiAgICB0aGlzLmh0bWwgPSBmYWxzZTtcclxuXHJcbiAgICBpZiAodGhpcy5hcmNoaXZvU2VsZWNjaW9uYWRvICE9IG51bGwgJiYgdGhpcy5hcmNoaXZvU2VsZWNjaW9uYWRvLmxhYmVsICE9IG51bGwgJiYgdGhpcy5hcmNoaXZvU2VsZWNjaW9uYWRvLmxhYmVsLmluY2x1ZGVzKCcuaHRtbCcpKVxyXG4gICAgICB0aGlzLmh0bWwgPSB0cnVlO1xyXG5cclxuICAgIHJldHVybiB0aGlzLmh0bWw7XHJcbiAgfVxyXG5cclxuICBhc3luYyBlZGl0YXJBY3Rpb24oKSB7XHJcblxyXG4gICAgbGV0IGRhdGEgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLnBsYW50aWxsYXNTZXJ2aWNlLmNvbnN1bHRhckFyY2hpdm9IdG1sKHRoaXMucnV0YVByaW5jaXBhbCwgdGhpcy5hcmNoaXZvU2VsZWNjaW9uYWRvLmRhdGEpKTtcclxuXHJcbiAgICB0aGlzLm1vZGlmaWNhckhUTUwgPSBkYXRhO1xyXG5cclxuICAgIHRoaXMubW9zdHJhckVkaXRvciA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBhc3luYyBndWFyZGFySHRtbCgpIHtcclxuXHJcbiAgICBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLnBsYW50aWxsYXNTZXJ2aWNlLmd1YXJkYXJBcmNoaXZvSHRtbCh0aGlzLnJ1dGFQcmluY2lwYWwsIHRoaXMuYXJjaGl2b1NlbGVjY2lvbmFkby5kYXRhLCB0aGlzLm1vZGlmaWNhckhUTUwpKTtcclxuXHJcbiAgICB0aGlzLnRvYXN0U2VydmljZS5zaG93U3VjY2VzcygnRWwgYXJjaGl2byBoYSBzaWRvIG1vZGlmaWNhZG8gY29ycmVjdGFtZW50ZScpO1xyXG5cclxuICAgIHRoaXMubmdPbkluaXQoKTtcclxuXHJcbiAgfVxyXG5cclxuICByZWdyZXNhclByaW5jaXBhbCgpIHtcclxuICAgIHRoaXMubW9zdHJhckVkaXRvciA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHZlcmlmaWNhckNvbnRyb2woY29udHJvbCkge1xyXG4gICAgcmV0dXJuIHRoaXMuY29udHJvbEZ1bmNpb25TZXJ2aWNlLmdldENvbnRyb2xGdW5jaW9uYWxpZGFkKGNvbnRyb2wpO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPGRpdiBpZD1cImNhcmd1ZS1wbGFudGlsbGFzXCI+XHJcbjxwLWNvbmZpcm1Qb3B1cCBrZXk9XCJlbGltaW5hckNhcnBldGFcIj48L3AtY29uZmlybVBvcHVwPlxyXG48cC1jb25maXJtUG9wdXAga2V5PVwiZWxpbWluYXJBcmNoaXZvXCI+PC9wLWNvbmZpcm1Qb3B1cD5cclxuXHJcbjxoMSBjbGFzcz1cIm1iLTRcIj57eydjYXJndWUnIHwgdHJhbnNsYXRlfX0ge3sncGxhbnRpbGxhcycgfCB0cmFuc2xhdGV9fTwvaDE+XHJcblxyXG48ZGl2IGNsYXNzPVwicC1mbHVpZCBwLWZvcm1ncmlkIGdyaWRcIj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiZmllbGQgY29sLTEyIG1kOmNvbC02IGxnOmNvbC01IGNhcmQgcC01XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgcElucHV0VGV4dCBbKG5nTW9kZWwpXT1cImZpbHRlclZhbHVlXCIgcGxhY2Vob2xkZXI9XCJ7eydmaWx0cm8nIHwgdHJhbnNsYXRlfX1cIlxyXG4gICAgICAgICAgICAgICAgKGtleWRvd24pPVwiZmlsdHJhckVudGVyKCRldmVudClcIiAvPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBwQnV0dG9uIHBSaXBwbGUgaWNvbj1cInBpIHBpLXNlYXJjaCB0ZXh0LXhsXCIgKGNsaWNrKT1cImFwbGljYXJGaWx0cm8oKVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInAtZWxlbWVudCBwLXJpcHBsZSBwLWJ1dHRvbi1yb3VuZGVkICBwLWJ1dHRvbi1zZWNvbmRhcnkgcC1idXR0b24gcC1jb21wb25lbnQgcC1idXR0b24taWNvbi1vbmx5IGFic29sdXRlIHJpZ2h0LTAgYm9yZGVyLW5vbmUgYmctd2hpdGUtYWxwaGEtMTBcIlxyXG4gICAgICAgICAgICAgICAgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCIgcFRvb2x0aXA9XCJFZGl0YXIgSFRNTFwiPjwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8cC10cmVlICN0cmVlIHNjcm9sbEhlaWdodD1cIjY3MHB4XCIgW3ZhbHVlXT1cImZpbHRlcmVkRmlsZXNcIiBzZWxlY3Rpb25Nb2RlPVwic2luZ2xlXCIgWyhzZWxlY3Rpb24pXT1cImRhdGFTZWxlY3RlZFwiXHJcbiAgICAgICAgICAgIFtmaWx0ZXJdPVwiZmFsc2VcIiBbZmlsdGVyUGxhY2Vob2xkZXJdPVwiJ2ZpbHRybycgfCB0cmFuc2xhdGVcIiBmaWx0ZXJNb2RlPVwic3RyaWN0XCJcclxuICAgICAgICAgICAgKG9uTm9kZVNlbGVjdCk9XCJzZWxlY2Npb25hckFyY2hpdm8oJGV2ZW50KVwiIFtsb2FkaW5nXT1cImxvYWRpbmdcIlxyXG4gICAgICAgICAgICAob25Ob2RlVW5zZWxlY3QpPVwiZGVzZWxlY2Npb25hckFyY2hpdm8oJGV2ZW50KVwiPjwvcC10cmVlPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLSBPUENJTkVTIERJUkVDVE9SSU9TIC0gQVJDSElWT1MgLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZmllbGQgY29sLTEyIG1kOmNvbC02IGxnOmNvbC03IHAtMCBwbC0zXCI+XHJcblxyXG4gICAgICAgIEBpZih0aGlzLmxvYWRpbmcpe1xyXG4gICAgICAgIDxwLXByb2dyZXNzQmFyIG1vZGU9XCJpbmRldGVybWluYXRlXCIgW3N0eWxlXT1cInsgaGVpZ2h0OiAnNnB4JyB9XCI+PC9wLXByb2dyZXNzQmFyPlxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgQGlmKCF0aGlzLmxvYWRpbmcpe1xyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJlbmNhYmV6YWRvLWFjY2lvbmVzIHNvbWJyYS1jYWphIG1iLTNcIj5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gQ0FSUEVUQSAtLT5cclxuICAgICAgICAgICAgQGlmKGFyY2hpdm9TZWxlY2Npb25hZG8uZXhwYW5kZWQpe1xyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIDxoMSBjbGFzcz1cInRleHQteGwgbXQtMiBtYi00IG1yLTNcIj5DYXJwZXRhOiA8L2gxPlxyXG4gICAgICAgICAgICAgICAgPGg1IGNsYXNzPVwidGV4dC1zbSBtdC0yIG1iLTRcIj4ge3thcmNoaXZvU2VsZWNjaW9uYWRvLmxhYmVsfX0gPC9oNT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gQ29udmVydGlyIC0tPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgcEJ1dHRvbiBwUmlwcGxlIChjbGljayk9XCJjb252ZXJ0aXJBcmNoaXZvcygpXCJcclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInZlckNvbnZlcnRpciAmJiBjb250cm9sRnVuY2lvblNlcnZpY2UuZ2V0Q29udHJvbEZ1bmNpb25hbGlkYWQoJ3NlZ3VwbGFjb3I6Z3VhcmRhcicpXCJcclxuICAgICAgICAgICAgICAgICAgICB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIiBsYWJlbD1cInt7J2NvbnZlcnRpcicgfCB0cmFuc2xhdGV9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3LWZ1bGwgbXItMyBwLWJ1dHRvbi1zZWNvbmRhcnkgYm90b24tYWNjaW9uLXByaW5jaXBhbCBjb2xvci01MDBcIlxyXG4gICAgICAgICAgICAgICAgICAgIHBUb29sdGlwPVwiQ29udmVydGlyIGFyY2hpdm9cIiB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVuZWRvci1pY29uby1hY2Npb25lcy1wcmluY2lwYWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJwaSBwaS1hcnJvdy1yaWdodC1hcnJvdy1sZWZ0IGNvbG9yLTUwMFwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS1OdWV2YSBDYXJwZXRhLS0+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiY29udHJvbEZ1bmNpb25TZXJ2aWNlLmdldENvbnRyb2xGdW5jaW9uYWxpZGFkKCdzZWd1cGxhY29yOmd1YXJkYXInKVwiIHBCdXR0b24gcFJpcHBsZVxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidy1mdWxsIG1yLTMgcC1idXR0b24tc2Vjb25kYXJ5IGJvdG9uLWFjY2lvbi1wcmluY2lwYWwgY29sb3ItNTAwXCJcclxuICAgICAgICAgICAgICAgICAgICBsYWJlbD1cInt7J2xpbmtfbnVldm8nIHwgdHJhbnNsYXRlfX1cIiAoY2xpY2spPVwiY3JlYXJDYXJwZXRhKClcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVuZWRvci1pY29uby1hY2Npb25lcy1wcmluY2lwYWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJnbHlwaGljb25zIGdseXBoaWNvbnMtcGx1cyBjb2xvci01MDBcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tRWxpbWluYXItLT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidG4tZmlsZXVwbG9hZC1jbGFyb1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJjb250cm9sRnVuY2lvblNlcnZpY2UuZ2V0Q29udHJvbEZ1bmNpb25hbGlkYWQoJ3NlZ3VwbGFjb3I6Z3VhcmRhcicpXCIgcEJ1dHRvbiBwUmlwcGxlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicC1idXR0b24gcC1idXR0b24tc2Vjb25kYXJ5IGZvbnQtc2VtaWJvbGQgZmxleC1zaHJpbmstMCBib3Rvbi1hY2Npb24tcHJpbmNpcGFsIG1yLTNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD1cInt7J2xpbmtfZWxpbWluYXInIHwgdHJhbnNsYXRlfX1cIiAoY2xpY2spPVwiZWxpbWluYXJDYXJwZXRhKClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbmVkb3ItaWNvbm8tYWNjaW9uZXMtcHJpbmNpcGFsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBzdHlsZT1cImNvbG9yOiB2YXIoLS1jb2xvci01MDApXCIgY2xhc3M9XCJnbHlwaGljb25zIGdseXBoaWNvbnMtYmluXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gQ2FyZ2FyIEFyY2hpdm8gLS0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuLWZpbGV1cGxvYWQtY2xhcm9cIiBbbmdDbGFzc109XCJ7ICdtaW4td2lkdGgtMTAwJzogIXZlckNvbnZlcnRpciwgJ21pbi13aWR0aC0yMCc6IHZlckNvbnZlcnRpciB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHAtZmlsZVVwbG9hZCAjZnViYXV0byBtb2RlPVwiYmFzaWNcIiBbYXV0b109XCJ0cnVlXCIgW2N1c3RvbVVwbG9hZF09XCJ0cnVlXCIgY2hvb3NlSWNvbj1cInBpIHBpLXBhcGVyY2xpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29udHJvbEZ1bmNpb25TZXJ2aWNlLmdldENvbnRyb2xGdW5jaW9uYWxpZGFkKCdzZWd1cGxhY29yOmd1YXJkYXInKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNob29zZUxhYmVsPVwie3snbGlua19zdWJpcmFyY2hpdm9zJyB8IHRyYW5zbGF0ZX19XCIgKG9uU2VsZWN0KT1cImNhcmdhck51ZXZvKCRldmVudCwgZnViYXV0bylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbmVkb3ItaWNvbm8tYWNjaW9uZXMtcHJpbmNpcGFsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLXRyYXNoXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L3AtZmlsZVVwbG9hZD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgPCEtLSBBUkNISVZPLS0+XHJcbiAgICAgICAgICAgIEBpZighYXJjaGl2b1NlbGVjY2lvbmFkby5leHBhbmRlZCl7XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIDxoMSBjbGFzcz1cInRleHQteGwgbXQtMiBtYi00IG1yLTNcIj5BcmNoaXZvOiA8L2gxPlxyXG4gICAgICAgICAgICAgICAgPGg1IGNsYXNzPVwidGV4dC1zbSBtdC0yIG1iLTRcIj4ge3thcmNoaXZvU2VsZWNjaW9uYWRvLmxhYmVsfX0gPC9oNT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICBAaWYoYXJjaGl2b1NlbGVjY2lvbmFkby5sYWJlbC5pbmNsdWRlcygnLmh0bWwnKSl7XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLUVESVRBUiBIVE1MLS0+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBwQnV0dG9uIHBSaXBwbGUgaWNvbj1cInBpIHBpLWNvZGUgdGV4dC14bCBjb2xvci01MDBcIiAoY2xpY2spPVwiZWRpdGFyQWN0aW9uKClcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXItMyB3LWZ1bGwgcC1idXR0b24tc2Vjb25kYXJ5ICBib3Rvbi1hY2Npb24tcHJpbmNpcGFsIFwiIGxhYmVsPVwiRWRpdGFyIEhUTUxcIj5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gREVTQ0FSR0FSLS0+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIHBCdXR0b24gcFJpcHBsZSBjbGFzcz1cIm1yLTMgdy1mdWxsIHAtYnV0dG9uLXNlY29uZGFyeSBib3Rvbi1hY2Npb24tcHJpbmNpcGFsIGNvbG9yLTUwMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw9XCJ7eydsaW5rX2Rlc2NhcmdhcicgfCB0cmFuc2xhdGV9fVwiIChjbGljayk9XCJkZXNjYXJnYXJBbmV4bygpXCJcclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbnRyb2xGdW5jaW9uU2VydmljZS5nZXRDb250cm9sRnVuY2lvbmFsaWRhZCgnc2VndXBsYWNvcjpkZXNjYXJnYXInKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW5lZG9yLWljb25vLWFjY2lvbmVzLXByaW5jaXBhbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImdseXBoaWNvbnMgZ2x5cGhpY29ucy1kb3dubG9hZCBjb2xvci01MDBcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tRUxJTUlOQVItLT5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gcEJ1dHRvbiBwUmlwcGxlIGNsYXNzPVwidy1mdWxsIHAtYnV0dG9uLXNlY29uZGFyeSAgYm90b24tYWNjaW9uLXByaW5jaXBhbCBjb2xvci01MDBcIlxyXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsPVwie3snbGlua19lbGltaW5hcicgfCB0cmFuc2xhdGV9fVwiIChjbGljayk9XCJlbGltaW5hckFyY2hpdm8oKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb250cm9sRnVuY2lvblNlcnZpY2UuZ2V0Q29udHJvbEZ1bmNpb25hbGlkYWQoJ3NlZ3VwbGFjb3I6Z3VhcmRhcicpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbmVkb3ItaWNvbm8tYWNjaW9uZXMtcHJpbmNpcGFsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZ2x5cGhpY29ucyBnbHlwaGljb25zLWJpbiBjb2xvci01MDBcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIEBpZihhcmNoaXZvU2VsZWNjaW9uYWRvLmV4cGFuZGVkICYmIGlzVmlzdWFsaXphckNyZWFyQ2FwZXJ0YSl7XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImVuY2FiZXphZG8tYWNjaW9uZXMgc29tYnJhLWNhamEgbWItM1wiPlxyXG5cclxuICAgICAgICAgICAgPGg1IGNsYXNzPVwibXQtMlwiPjxpIGNsYXNzPVwiZ2x5cGhpY29ucyBnbHlwaGljb25zLW5vdGVcIj48L2k+IE51ZXZhIGNhcnBldGE8L2g1PlxyXG5cclxuICAgICAgICAgICAgPGZvcm0gI21pRm9ybXVsYXJpbz1cIm5nRm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgPCEtLSBjYW1wb3MgLS0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBOb21icmUgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctZnVsbCBwLTAgbWItMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtZmxvYXQtbGFiZWwgbXItMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHBJbnB1dFRleHQgaWQ9XCJpZF9udW1lcm9fZGVfZXZlbnRvXCIgWyhuZ01vZGVsKV09XCJub21OdWV2YUNhcnBldGFcIiByZXF1aXJlZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJub21icmVDYXJwZXRhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiaWRfbnVtZXJvX2RlX2V2ZW50b1wiPnt7J25vbWJyZScgfCB0cmFuc2xhdGV9fSAqPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS1HdWFyZGFyIENhcnBldGEtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBwQnV0dG9uIHBSaXBwbGUgY2xhc3M9XCJtci0yIHAtYnV0dG9uLXJhaXNlZFwiIGljb249XCJnbHlwaGljb25zIGdseXBoaWNvbnMtZmxvcHB5LXNhdmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIignbGlua19ndWFyZGFyJyB8IHRyYW5zbGF0ZSlcIiAoY2xpY2spPVwiZ3VhcmRhckNhcnBldGEoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Zvcm0+XHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIH1cclxuICAgICAgICA8IS0tIEVESVRPUiBERSBIVE1MIC0tPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJpc0h0bWwoKSAmJiBtb3N0cmFyRWRpdG9yXCI+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kIGFsaWduLWl0ZW1zLWNlbnRlciBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICA8IS0tIEJvdMOzbiBndWFyZGFyIEhUTUwgLS0+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIHBCdXR0b24gcFJpcHBsZSBsYWJlbD1cInt7J2xpbmtfZ3VhcmRhcicgfCB0cmFuc2xhdGUgfX1cIiAoY2xpY2spPVwiZ3VhcmRhckh0bWwoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgaWNvbj1cImdseXBoaWNvbnMgZ2x5cGhpY29ucy1mbG9wcHktc2F2ZVwiIGNsYXNzPVwicC1idXR0b24tcmFpc2VkXCJcclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbnRyb2xGdW5jaW9uU2VydmljZS5nZXRDb250cm9sRnVuY2lvbmFsaWRhZCgnc2VndXBsYWNvcjpndWFyZGFyJylcIj48L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8cC1lZGl0b3IgaWQ9XCJlZGl0b3JcIiBbc3R5bGVdPVwieyBoZWlnaHQ6ICc1MDBweCcgfVwiIHJlcXVpcmVkIFsobmdNb2RlbCldPVwibW9kaWZpY2FySFRNTFwiXHJcbiAgICAgICAgICAgICAgICBuYW1lPVwiaHRtbFB1YmxpY2FjaW9uXCI+PC9wLWVkaXRvcj5cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG5AaWYoaXNNb3N0cmFyUG9wdXBDb252ZXJ0aXIpe1xyXG48YXBwLXBvcHVwLWNvbnZlcnRpci1wbGFudGlsbGFzIChyZWdyZXNhcik9XCJyZWdyZXNhclBvcHVwQ29udmVydGlyKCRldmVudClcIj48L2FwcC1wb3B1cC1jb252ZXJ0aXItcGxhbnRpbGxhcz5cclxufVxyXG5cclxuPC9kaXY+Il19
@@ -15860,7 +15860,7 @@ class CarguePlantillaGeneralComponent {
15860
15860
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: CarguePlantillaGeneralComponent, deps: [{ token: PlantillasService }, { token: AuthService }, { token: i7$1.TranslateService }, { token: CargarControlFuncionalidadService }, { token: i7.ConfirmationService }, { token: ToastService }, { token: CargarArchivosService }, { token: EncriptadoBasicoService }, { token: GeneralPipe }, { token: UtilsService }], target: i0.ɵɵFactoryTarget.Component });
15861
15861
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.4", type: CarguePlantillaGeneralComponent, isStandalone: true, selector: "app-cargue-plantilla-general", providers: [
15862
15862
  ConfirmationService
15863
- ], viewQueries: [{ propertyName: "popupConvertirPlantillasComponent", first: true, predicate: PopupConvertirPlantillasComponent, descendants: true }, { propertyName: "miFormulario", first: true, predicate: ["miFormulario"], descendants: true }, { propertyName: "treeComponent", first: true, predicate: ["tree"], descendants: true }], ngImport: i0, template: "<div id=\"cargue-plantillas\">\r\n<p-confirmPopup key=\"eliminarCarpeta\"></p-confirmPopup>\r\n<p-confirmPopup key=\"eliminarArchivo\"></p-confirmPopup>\r\n\r\n<h1 class=\"mb-4\">{{'cargue' | translate}} {{'plantillas' | translate}}</h1>\r\n\r\n<div class=\"p-fluid p-formgrid grid\">\r\n\r\n <div class=\"field col-12 md:col-6 lg:col-5 card p-5\">\r\n <div class=\"flex justify-content-between align-items-center justify-content-center relative\">\r\n <input type=\"text\" pInputText [(ngModel)]=\"filterValue\" placeholder=\"{{'filtro' | translate}}\"\r\n (keydown)=\"filtrarEnter($event)\" />\r\n <button type=\"button\" pButton pRipple icon=\"pi pi-search text-xl\" (click)=\"aplicarFiltro()\"\r\n class=\"p-element p-ripple p-button-rounded p-button-secondary p-button p-component p-button-icon-only absolute right-0 border-none bg-white-alpha-10\"\r\n tooltipPosition=\"bottom\" pTooltip=\"Editar HTML\"></button>\r\n </div>\r\n\r\n <p-tree #tree scrollHeight=\"670px\" [value]=\"filteredFiles\" selectionMode=\"single\" [(selection)]=\"dataSelected\"\r\n [filter]=\"false\" [filterPlaceholder]=\"'filtro' | translate\" filterMode=\"strict\"\r\n (onNodeSelect)=\"seleccionarArchivo($event)\" [loading]=\"loading\"\r\n (onNodeUnselect)=\"deseleccionarArchivo($event)\"></p-tree>\r\n </div>\r\n\r\n <!-- OPCINES DIRECTORIOS - ARCHIVOS -->\r\n <div class=\"field col-12 md:col-6 lg:col-7 p-0 pl-3\">\r\n\r\n @if(this.loading){\r\n <p-progressBar mode=\"indeterminate\" [style]=\"{ height: '6px' }\"></p-progressBar>\r\n }\r\n\r\n @if(!this.loading){\r\n <div class=\"encabezado-acciones sombra-caja mb-3\">\r\n\r\n <!-- CARPETA -->\r\n @if(archivoSeleccionado.expanded){\r\n <div class=\"flex align-items-center\">\r\n <h1 class=\"text-xl mt-2 mb-4 mr-3\">Carpeta: </h1>\r\n <h5 class=\"text-sm mt-2 mb-4\"> {{archivoSeleccionado.label}} </h5>\r\n </div>\r\n\r\n <div class=\"flex justify-content-between\">\r\n\r\n <!-- Convertir -->\r\n <button type=\"button\" pButton pRipple (click)=\"convertirArchivos()\"\r\n *ngIf=\"verConvertir && controlFuncionService.getControlFuncionalidad('seguplacor:guardar')\"\r\n tooltipPosition=\"bottom\" label=\"{{'convertir' | translate}}\"\r\n class=\"w-full mr-3 p-button-secondary boton-accion-principal color-500\"\r\n pTooltip=\"Convertir archivo\" tooltipPosition=\"bottom\">\r\n <div class=\"contenedor-icono-acciones-principal\">\r\n <i class=\"pi pi-arrow-right-arrow-left color-500\"></i>\r\n </div>\r\n </button>\r\n\r\n <!--Nueva Carpeta-->\r\n <button *ngIf=\"controlFuncionService.getControlFuncionalidad('seguplacor:guardar')\" pButton pRipple\r\n class=\"w-full mr-3 p-button-secondary boton-accion-principal color-500\"\r\n label=\"{{'link_nuevo' | translate}}\" (click)=\"crearCarpeta()\">\r\n <div class=\"contenedor-icono-acciones-principal\">\r\n <i class=\"glyphicons glyphicons-plus color-500\"></i>\r\n </div>\r\n </button>\r\n\r\n <!--Eliminar-->\r\n <div class=\"btn-fileupload-claro\">\r\n <button *ngIf=\"controlFuncionService.getControlFuncionalidad('seguplacor:guardar')\" pButton pRipple\r\n class=\"p-button p-button-secondary font-semibold flex-shrink-0 boton-accion-principal mr-3\"\r\n label=\"{{'link_eliminar' | translate}}\" (click)=\"eliminarCarpeta()\">\r\n <div class=\"contenedor-icono-acciones-principal\">\r\n <i style=\"color: var(--color-500)\" class=\"glyphicons glyphicons-bin\"></i>\r\n </div>\r\n </button>\r\n </div>\r\n\r\n <!-- Cargar Archivo -->\r\n <div class=\"btn-fileupload-claro\" [ngClass]=\"{ 'min-width-100': !verConvertir, 'min-width-20': verConvertir }\">\r\n <p-fileUpload #fubauto mode=\"basic\" [auto]=\"true\" [customUpload]=\"true\" chooseIcon=\"pi pi-paperclip\"\r\n *ngIf=\"controlFuncionService.getControlFuncionalidad('seguplacor:guardar')\"\r\n chooseLabel=\"{{'link_subirarchivos' | translate}}\" (onSelect)=\"cargarNuevo($event, fubauto)\">\r\n <div class=\"contenedor-icono-acciones-principal\">\r\n <i class=\"pi pi-trash\"></i>\r\n </div>\r\n </p-fileUpload>\r\n </div>\r\n </div>\r\n }\r\n\r\n <!-- ARCHIVO-->\r\n @if(!archivoSeleccionado.expanded){\r\n\r\n <div class=\"flex align-items-center\">\r\n <h1 class=\"text-xl mt-2 mb-4 mr-3\">Archivo: </h1>\r\n <h5 class=\"text-sm mt-2 mb-4\"> {{archivoSeleccionado.label}} </h5>\r\n </div>\r\n\r\n <div class=\"flex justify-content-end\">\r\n @if(archivoSeleccionado.label.includes('.html')){\r\n\r\n <!--EDITAR HTML-->\r\n <button type=\"button\" pButton pRipple icon=\"pi pi-code text-xl color-500\" (click)=\"editarAction()\"\r\n class=\"mr-3 w-full p-button-secondary boton-accion-principal \" label=\"Editar HTML\">\r\n </button>\r\n }\r\n\r\n <!-- DESCARGAR-->\r\n <button pButton pRipple class=\"mr-3 w-full p-button-secondary boton-accion-principal color-500\"\r\n label=\"{{'link_descargar' | translate}}\" (click)=\"descargarAnexo()\"\r\n *ngIf=\"controlFuncionService.getControlFuncionalidad('seguplacor:descargar')\">\r\n <div class=\"contenedor-icono-acciones-principal\">\r\n <i class=\"glyphicons glyphicons-download color-500\"></i>\r\n </div>\r\n </button>\r\n\r\n <!--ELIMINAR-->\r\n <button pButton pRipple class=\"w-full p-button-secondary boton-accion-principal color-500\"\r\n label=\"{{'link_eliminar' | translate}}\" (click)=\"eliminarArchivo()\"\r\n *ngIf=\"controlFuncionService.getControlFuncionalidad('seguplacor:guardar')\">\r\n <div class=\"contenedor-icono-acciones-principal\">\r\n <i class=\"glyphicons glyphicons-bin color-500\"></i>\r\n </div>\r\n </button>\r\n </div>\r\n }\r\n </div>\r\n }\r\n\r\n @if(archivoSeleccionado.expanded && isVisualizarCrearCaperta){\r\n <div class=\"card\">\r\n\r\n <h5 class=\"mt-2\"><i class=\"glyphicons glyphicons-note\"></i> Nueva carpeta</h5>\r\n\r\n <form #miFormulario=\"ngForm\">\r\n <!-- campos -->\r\n <div class=\"flex mb-3\">\r\n <!-- Nombre -->\r\n <div class=\"w-full p-0 mb-0\">\r\n <span class=\"p-float-label mr-2\">\r\n <input pInputText id=\"id_numero_de_evento\" [(ngModel)]=\"nomNuevaCarpeta\" required\r\n name=\"nombreCarpeta\">\r\n <label for=\"id_numero_de_evento\">{{'nombre' | translate}} *</label>\r\n </span>\r\n </div>\r\n\r\n <div class=\"flex justify-content-end\">\r\n <!--Guardar Carpeta-->\r\n <button pButton pRipple class=\"mr-2 p-button-raised\" icon=\"glyphicons glyphicons-floppy-save\"\r\n [label]=\"('link_guardar' | translate)\" (click)=\"guardarCarpeta()\">\r\n </button>\r\n </div>\r\n </div>\r\n </form>\r\n\r\n </div>\r\n }\r\n <!-- EDITOR DE HTML -->\r\n <div *ngIf=\"isHtml() && mostrarEditor\">\r\n\r\n <div class=\"flex justify-content-end align-items-center mb-3\">\r\n <!-- Bot\u00F3n guardar HTML -->\r\n <button pButton pRipple label=\"{{'link_guardar' | translate }}\" (click)=\"guardarHtml()\"\r\n icon=\"glyphicons glyphicons-floppy-save\" class=\"p-button-raised\"\r\n *ngIf=\"controlFuncionService.getControlFuncionalidad('seguplacor:guardar')\"></button>\r\n </div>\r\n\r\n <p-editor id=\"editor\" [style]=\"{ height: '500px' }\" required [(ngModel)]=\"modificarHTML\"\r\n name=\"htmlPublicacion\"></p-editor>\r\n\r\n </div>\r\n </div>\r\n</div>\r\n\r\n@if(isMostrarPopupConvertir){\r\n<app-popup-convertir-plantillas (regresar)=\"regresarPopupConvertir($event)\"></app-popup-convertir-plantillas>\r\n}\r\n\r\n</div>", styles: [":host ::ng-deep #cargue-plantillas .p-fluid .p-fileupload .p-button{width:100%;background:var(--color-85);border:none;box-shadow:none;color:var(--color-500);border-radius:10px}:host ::ng-deep #cargue-plantillas .p-fluid .p-fileupload .p-button:hover{background:var(--color-100)!important}:host ::ng-deep #cargue-plantillas .min-width-20{min-width:20%}:host ::ng-deep #cargue-plantillas .min-width-100{min-width:30%}#cargue-plantillas .btn-fileupload-claro .p-button{background:var(--color-85)!important;color:var(--color-500)!important;border-radius:10px}#cargue-plantillas .btn-fileupload-claro .p-button:hover{background:var(--color-100)!important}#cargue-plantillas .btn-fileupload-claro .contenedor-icono-acciones-principal{background:#fff;margin-right:8px;padding:12px}#cargue-plantillas .btn-fileupload-claro .boton-accion-principal i{margin:0!important}#cargue-plantillas .contenedor-icono-acciones-principal{display:inline-block;background-color:#fff;border-radius:50%;width:25px;height:25px;display:flex;align-items:center;justify-content:center}#cargue-plantillas .boton-accion-principal i{margin-right:0!important}:host ::ng-deep span.p-button-icon.p-button-icon-left.pi.pi-paperclip{padding:6px;background:#fff;border:none;border-radius:50%;color:var(--color-400)}:host ::ng-deep span.p-button-icon.p-button-icon-left.pi.pi-code{background:#fff;padding:5px;border-radius:50%}\n"], dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i7$1.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i14.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i14.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: TreeModule }, { kind: "component", type: i7$2.Tree, selector: "p-tree", inputs: ["value", "selectionMode", "loadingMode", "selection", "style", "styleClass", "contextMenu", "layout", "draggableScope", "droppableScope", "draggableNodes", "droppableNodes", "metaKeySelection", "propagateSelectionUp", "propagateSelectionDown", "loading", "loadingIcon", "emptyMessage", "ariaLabel", "togglerAriaLabel", "ariaLabelledBy", "validateDrop", "filter", "filterBy", "filterMode", "filterPlaceholder", "filteredNodes", "filterLocale", "scrollHeight", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "indentation", "_templateMap", "trackBy", "virtualNodeHeight"], outputs: ["selectionChange", "onNodeSelect", "onNodeUnselect", "onNodeExpand", "onNodeCollapse", "onNodeContextMenuSelect", "onNodeDrop", "onLazyLoad", "onScroll", "onScrollIndexChange", "onFilter"] }, { kind: "ngmodule", type: InputTextModule }, { kind: "directive", type: i14$1.InputText, selector: "[pInputText]", inputs: ["variant"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i10$1.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading", "severity", "raised", "rounded", "text", "outlined", "size", "plain"] }, { kind: "ngmodule", type: SplitButtonModule }, { kind: "directive", type: i3$1.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "ngmodule", type: ConfirmPopupModule }, { kind: "component", type: i12$2.ConfirmPopup, selector: "p-confirmPopup", inputs: ["key", "defaultFocus", "showTransitionOptions", "hideTransitionOptions", "autoZIndex", "baseZIndex", "style", "styleClass", "visible"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i1$1.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FieldsetModule }, { kind: "ngmodule", type: FileUploadModule }, { kind: "component", type: i20.FileUpload, selector: "p-fileUpload", inputs: ["name", "url", "method", "multiple", "accept", "disabled", "auto", "withCredentials", "maxFileSize", "invalidFileSizeMessageSummary", "invalidFileSizeMessageDetail", "invalidFileTypeMessageSummary", "invalidFileTypeMessageDetail", "invalidFileLimitMessageDetail", "invalidFileLimitMessageSummary", "style", "styleClass", "previewWidth", "chooseLabel", "uploadLabel", "cancelLabel", "chooseIcon", "uploadIcon", "cancelIcon", "showUploadButton", "showCancelButton", "mode", "headers", "customUpload", "fileLimit", "uploadStyleClass", "cancelStyleClass", "removeStyleClass", "chooseStyleClass", "files"], outputs: ["onBeforeUpload", "onSend", "onUpload", "onError", "onClear", "onRemove", "onSelect", "onProgress", "uploadHandler", "onImageError", "onRemoveUploadedFile"] }, { kind: "component", type: i9$1.ProgressBar, selector: "p-progressBar", inputs: ["value", "showValue", "styleClass", "style", "unit", "mode", "color"] }, { kind: "component", type: PopupConvertirPlantillasComponent, selector: "app-popup-convertir-plantillas", inputs: ["showDialog"], outputs: ["onSelected", "regresar"] }, { kind: "ngmodule", type: EditorModule }, { kind: "component", type: i20$1.Editor, selector: "p-editor", inputs: ["style", "styleClass", "placeholder", "formats", "modules", "bounds", "scrollingContainer", "debug", "readonly"], outputs: ["onInit", "onTextChange", "onSelectionChange"] }, { kind: "ngmodule", type: ProgressBarModule }] });
15863
+ ], viewQueries: [{ propertyName: "popupConvertirPlantillasComponent", first: true, predicate: PopupConvertirPlantillasComponent, descendants: true }, { propertyName: "miFormulario", first: true, predicate: ["miFormulario"], descendants: true }, { propertyName: "treeComponent", first: true, predicate: ["tree"], descendants: true }], ngImport: i0, template: "<div id=\"cargue-plantillas\">\r\n<p-confirmPopup key=\"eliminarCarpeta\"></p-confirmPopup>\r\n<p-confirmPopup key=\"eliminarArchivo\"></p-confirmPopup>\r\n\r\n<h1 class=\"mb-4\">{{'cargue' | translate}} {{'plantillas' | translate}}</h1>\r\n\r\n<div class=\"p-fluid p-formgrid grid\">\r\n\r\n <div class=\"field col-12 md:col-6 lg:col-5 card p-5\">\r\n <div class=\"flex justify-content-between align-items-center justify-content-center relative\">\r\n <input type=\"text\" pInputText [(ngModel)]=\"filterValue\" placeholder=\"{{'filtro' | translate}}\"\r\n (keydown)=\"filtrarEnter($event)\" />\r\n <button type=\"button\" pButton pRipple icon=\"pi pi-search text-xl\" (click)=\"aplicarFiltro()\"\r\n class=\"p-element p-ripple p-button-rounded p-button-secondary p-button p-component p-button-icon-only absolute right-0 border-none bg-white-alpha-10\"\r\n tooltipPosition=\"bottom\" pTooltip=\"Editar HTML\"></button>\r\n </div>\r\n\r\n <p-tree #tree scrollHeight=\"670px\" [value]=\"filteredFiles\" selectionMode=\"single\" [(selection)]=\"dataSelected\"\r\n [filter]=\"false\" [filterPlaceholder]=\"'filtro' | translate\" filterMode=\"strict\"\r\n (onNodeSelect)=\"seleccionarArchivo($event)\" [loading]=\"loading\"\r\n (onNodeUnselect)=\"deseleccionarArchivo($event)\"></p-tree>\r\n </div>\r\n\r\n <!-- OPCINES DIRECTORIOS - ARCHIVOS -->\r\n <div class=\"field col-12 md:col-6 lg:col-7 p-0 pl-3\">\r\n\r\n @if(this.loading){\r\n <p-progressBar mode=\"indeterminate\" [style]=\"{ height: '6px' }\"></p-progressBar>\r\n }\r\n\r\n @if(!this.loading){\r\n <div class=\"encabezado-acciones sombra-caja mb-3\">\r\n\r\n <!-- CARPETA -->\r\n @if(archivoSeleccionado.expanded){\r\n <div class=\"flex align-items-center\">\r\n <h1 class=\"text-xl mt-2 mb-4 mr-3\">Carpeta: </h1>\r\n <h5 class=\"text-sm mt-2 mb-4\"> {{archivoSeleccionado.label}} </h5>\r\n </div>\r\n\r\n <div class=\"flex justify-content-between\">\r\n\r\n <!-- Convertir -->\r\n <button type=\"button\" pButton pRipple (click)=\"convertirArchivos()\"\r\n *ngIf=\"verConvertir && controlFuncionService.getControlFuncionalidad('seguplacor:guardar')\"\r\n tooltipPosition=\"bottom\" label=\"{{'convertir' | translate}}\"\r\n class=\"w-full mr-3 p-button-secondary boton-accion-principal color-500\"\r\n pTooltip=\"Convertir archivo\" tooltipPosition=\"bottom\">\r\n <div class=\"contenedor-icono-acciones-principal\">\r\n <i class=\"pi pi-arrow-right-arrow-left color-500\"></i>\r\n </div>\r\n </button>\r\n\r\n <!--Nueva Carpeta-->\r\n <button *ngIf=\"controlFuncionService.getControlFuncionalidad('seguplacor:guardar')\" pButton pRipple\r\n class=\"w-full mr-3 p-button-secondary boton-accion-principal color-500\"\r\n label=\"{{'link_nuevo' | translate}}\" (click)=\"crearCarpeta()\">\r\n <div class=\"contenedor-icono-acciones-principal\">\r\n <i class=\"glyphicons glyphicons-plus color-500\"></i>\r\n </div>\r\n </button>\r\n\r\n <!--Eliminar-->\r\n <div class=\"btn-fileupload-claro\">\r\n <button *ngIf=\"controlFuncionService.getControlFuncionalidad('seguplacor:guardar')\" pButton pRipple\r\n class=\"p-button p-button-secondary font-semibold flex-shrink-0 boton-accion-principal mr-3\"\r\n label=\"{{'link_eliminar' | translate}}\" (click)=\"eliminarCarpeta()\">\r\n <div class=\"contenedor-icono-acciones-principal\">\r\n <i style=\"color: var(--color-500)\" class=\"glyphicons glyphicons-bin\"></i>\r\n </div>\r\n </button>\r\n </div>\r\n\r\n <!-- Cargar Archivo -->\r\n <div class=\"btn-fileupload-claro\" [ngClass]=\"{ 'min-width-100': !verConvertir, 'min-width-20': verConvertir }\">\r\n <p-fileUpload #fubauto mode=\"basic\" [auto]=\"true\" [customUpload]=\"true\" chooseIcon=\"pi pi-paperclip\"\r\n *ngIf=\"controlFuncionService.getControlFuncionalidad('seguplacor:guardar')\"\r\n chooseLabel=\"{{'link_subirarchivos' | translate}}\" (onSelect)=\"cargarNuevo($event, fubauto)\">\r\n <div class=\"contenedor-icono-acciones-principal\">\r\n <i class=\"pi pi-trash\"></i>\r\n </div>\r\n </p-fileUpload>\r\n </div>\r\n </div>\r\n }\r\n\r\n <!-- ARCHIVO-->\r\n @if(!archivoSeleccionado.expanded){\r\n\r\n <div class=\"flex align-items-center\">\r\n <h1 class=\"text-xl mt-2 mb-4 mr-3\">Archivo: </h1>\r\n <h5 class=\"text-sm mt-2 mb-4\"> {{archivoSeleccionado.label}} </h5>\r\n </div>\r\n\r\n <div class=\"flex justify-content-end\">\r\n @if(archivoSeleccionado.label.includes('.html')){\r\n\r\n <!--EDITAR HTML-->\r\n <button type=\"button\" pButton pRipple icon=\"pi pi-code text-xl color-500\" (click)=\"editarAction()\"\r\n class=\"mr-3 w-full p-button-secondary boton-accion-principal \" label=\"Editar HTML\">\r\n </button>\r\n }\r\n\r\n <!-- DESCARGAR-->\r\n <button pButton pRipple class=\"mr-3 w-full p-button-secondary boton-accion-principal color-500\"\r\n label=\"{{'link_descargar' | translate}}\" (click)=\"descargarAnexo()\"\r\n *ngIf=\"controlFuncionService.getControlFuncionalidad('seguplacor:descargar')\">\r\n <div class=\"contenedor-icono-acciones-principal\">\r\n <i class=\"glyphicons glyphicons-download color-500\"></i>\r\n </div>\r\n </button>\r\n\r\n <!--ELIMINAR-->\r\n <button pButton pRipple class=\"w-full p-button-secondary boton-accion-principal color-500\"\r\n label=\"{{'link_eliminar' | translate}}\" (click)=\"eliminarArchivo()\"\r\n *ngIf=\"controlFuncionService.getControlFuncionalidad('seguplacor:guardar')\">\r\n <div class=\"contenedor-icono-acciones-principal\">\r\n <i class=\"glyphicons glyphicons-bin color-500\"></i>\r\n </div>\r\n </button>\r\n </div>\r\n }\r\n </div>\r\n }\r\n\r\n @if(archivoSeleccionado.expanded && isVisualizarCrearCaperta){\r\n <div class=\"encabezado-acciones sombra-caja mb-3\">\r\n\r\n <h5 class=\"mt-2\"><i class=\"glyphicons glyphicons-note\"></i> Nueva carpeta</h5>\r\n\r\n <form #miFormulario=\"ngForm\">\r\n <!-- campos -->\r\n <div class=\"flex mb-3\">\r\n <!-- Nombre -->\r\n <div class=\"w-full p-0 mb-0\">\r\n <span class=\"p-float-label mr-2\">\r\n <input pInputText id=\"id_numero_de_evento\" [(ngModel)]=\"nomNuevaCarpeta\" required\r\n name=\"nombreCarpeta\">\r\n <label for=\"id_numero_de_evento\">{{'nombre' | translate}} *</label>\r\n </span>\r\n </div>\r\n\r\n <div class=\"flex justify-content-end\">\r\n <!--Guardar Carpeta-->\r\n <button pButton pRipple class=\"mr-2 p-button-raised\" icon=\"glyphicons glyphicons-floppy-save\"\r\n [label]=\"('link_guardar' | translate)\" (click)=\"guardarCarpeta()\">\r\n </button>\r\n </div>\r\n </div>\r\n </form>\r\n\r\n </div>\r\n }\r\n <!-- EDITOR DE HTML -->\r\n <div *ngIf=\"isHtml() && mostrarEditor\">\r\n\r\n <div class=\"flex justify-content-end align-items-center mb-3\">\r\n <!-- Bot\u00F3n guardar HTML -->\r\n <button pButton pRipple label=\"{{'link_guardar' | translate }}\" (click)=\"guardarHtml()\"\r\n icon=\"glyphicons glyphicons-floppy-save\" class=\"p-button-raised\"\r\n *ngIf=\"controlFuncionService.getControlFuncionalidad('seguplacor:guardar')\"></button>\r\n </div>\r\n\r\n <p-editor id=\"editor\" [style]=\"{ height: '500px' }\" required [(ngModel)]=\"modificarHTML\"\r\n name=\"htmlPublicacion\"></p-editor>\r\n\r\n </div>\r\n </div>\r\n</div>\r\n\r\n@if(isMostrarPopupConvertir){\r\n<app-popup-convertir-plantillas (regresar)=\"regresarPopupConvertir($event)\"></app-popup-convertir-plantillas>\r\n}\r\n\r\n</div>", styles: [":host ::ng-deep #cargue-plantillas .p-fluid .p-fileupload .p-button{width:100%;background:var(--color-85);border:none;box-shadow:none;color:var(--color-500);border-radius:10px}:host ::ng-deep #cargue-plantillas .p-fluid .p-fileupload .p-button:hover{background:var(--color-100)!important}:host ::ng-deep #cargue-plantillas .min-width-20{min-width:20%}:host ::ng-deep #cargue-plantillas .min-width-100{min-width:30%}#cargue-plantillas .btn-fileupload-claro .p-button{background:var(--color-85)!important;color:var(--color-500)!important;border-radius:10px}#cargue-plantillas .btn-fileupload-claro .p-button:hover{background:var(--color-100)!important}#cargue-plantillas .btn-fileupload-claro .contenedor-icono-acciones-principal{background:#fff;margin-right:8px;padding:12px}#cargue-plantillas .btn-fileupload-claro .boton-accion-principal i{margin:0!important}#cargue-plantillas .contenedor-icono-acciones-principal{display:inline-block;background-color:#fff;border-radius:50%;width:25px;height:25px;display:flex;align-items:center;justify-content:center}#cargue-plantillas .boton-accion-principal i{margin-right:0!important}:host ::ng-deep span.p-button-icon.p-button-icon-left.pi.pi-paperclip{padding:6px;background:#fff;border:none;border-radius:50%;color:var(--color-400)}:host ::ng-deep span.p-button-icon.p-button-icon-left.pi.pi-code{background:#fff;padding:5px;border-radius:50%}\n"], dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i7$1.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i14.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i14.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: TreeModule }, { kind: "component", type: i7$2.Tree, selector: "p-tree", inputs: ["value", "selectionMode", "loadingMode", "selection", "style", "styleClass", "contextMenu", "layout", "draggableScope", "droppableScope", "draggableNodes", "droppableNodes", "metaKeySelection", "propagateSelectionUp", "propagateSelectionDown", "loading", "loadingIcon", "emptyMessage", "ariaLabel", "togglerAriaLabel", "ariaLabelledBy", "validateDrop", "filter", "filterBy", "filterMode", "filterPlaceholder", "filteredNodes", "filterLocale", "scrollHeight", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "indentation", "_templateMap", "trackBy", "virtualNodeHeight"], outputs: ["selectionChange", "onNodeSelect", "onNodeUnselect", "onNodeExpand", "onNodeCollapse", "onNodeContextMenuSelect", "onNodeDrop", "onLazyLoad", "onScroll", "onScrollIndexChange", "onFilter"] }, { kind: "ngmodule", type: InputTextModule }, { kind: "directive", type: i14$1.InputText, selector: "[pInputText]", inputs: ["variant"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i10$1.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading", "severity", "raised", "rounded", "text", "outlined", "size", "plain"] }, { kind: "ngmodule", type: SplitButtonModule }, { kind: "directive", type: i3$1.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "ngmodule", type: ConfirmPopupModule }, { kind: "component", type: i12$2.ConfirmPopup, selector: "p-confirmPopup", inputs: ["key", "defaultFocus", "showTransitionOptions", "hideTransitionOptions", "autoZIndex", "baseZIndex", "style", "styleClass", "visible"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i1$1.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FieldsetModule }, { kind: "ngmodule", type: FileUploadModule }, { kind: "component", type: i20.FileUpload, selector: "p-fileUpload", inputs: ["name", "url", "method", "multiple", "accept", "disabled", "auto", "withCredentials", "maxFileSize", "invalidFileSizeMessageSummary", "invalidFileSizeMessageDetail", "invalidFileTypeMessageSummary", "invalidFileTypeMessageDetail", "invalidFileLimitMessageDetail", "invalidFileLimitMessageSummary", "style", "styleClass", "previewWidth", "chooseLabel", "uploadLabel", "cancelLabel", "chooseIcon", "uploadIcon", "cancelIcon", "showUploadButton", "showCancelButton", "mode", "headers", "customUpload", "fileLimit", "uploadStyleClass", "cancelStyleClass", "removeStyleClass", "chooseStyleClass", "files"], outputs: ["onBeforeUpload", "onSend", "onUpload", "onError", "onClear", "onRemove", "onSelect", "onProgress", "uploadHandler", "onImageError", "onRemoveUploadedFile"] }, { kind: "component", type: i9$1.ProgressBar, selector: "p-progressBar", inputs: ["value", "showValue", "styleClass", "style", "unit", "mode", "color"] }, { kind: "component", type: PopupConvertirPlantillasComponent, selector: "app-popup-convertir-plantillas", inputs: ["showDialog"], outputs: ["onSelected", "regresar"] }, { kind: "ngmodule", type: EditorModule }, { kind: "component", type: i20$1.Editor, selector: "p-editor", inputs: ["style", "styleClass", "placeholder", "formats", "modules", "bounds", "scrollingContainer", "debug", "readonly"], outputs: ["onInit", "onTextChange", "onSelectionChange"] }, { kind: "ngmodule", type: ProgressBarModule }] });
15864
15864
  }
15865
15865
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: CarguePlantillaGeneralComponent, decorators: [{
15866
15866
  type: Component,
@@ -15879,7 +15879,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImpor
15879
15879
  ProgressBarModule
15880
15880
  ], providers: [
15881
15881
  ConfirmationService
15882
- ], template: "<div id=\"cargue-plantillas\">\r\n<p-confirmPopup key=\"eliminarCarpeta\"></p-confirmPopup>\r\n<p-confirmPopup key=\"eliminarArchivo\"></p-confirmPopup>\r\n\r\n<h1 class=\"mb-4\">{{'cargue' | translate}} {{'plantillas' | translate}}</h1>\r\n\r\n<div class=\"p-fluid p-formgrid grid\">\r\n\r\n <div class=\"field col-12 md:col-6 lg:col-5 card p-5\">\r\n <div class=\"flex justify-content-between align-items-center justify-content-center relative\">\r\n <input type=\"text\" pInputText [(ngModel)]=\"filterValue\" placeholder=\"{{'filtro' | translate}}\"\r\n (keydown)=\"filtrarEnter($event)\" />\r\n <button type=\"button\" pButton pRipple icon=\"pi pi-search text-xl\" (click)=\"aplicarFiltro()\"\r\n class=\"p-element p-ripple p-button-rounded p-button-secondary p-button p-component p-button-icon-only absolute right-0 border-none bg-white-alpha-10\"\r\n tooltipPosition=\"bottom\" pTooltip=\"Editar HTML\"></button>\r\n </div>\r\n\r\n <p-tree #tree scrollHeight=\"670px\" [value]=\"filteredFiles\" selectionMode=\"single\" [(selection)]=\"dataSelected\"\r\n [filter]=\"false\" [filterPlaceholder]=\"'filtro' | translate\" filterMode=\"strict\"\r\n (onNodeSelect)=\"seleccionarArchivo($event)\" [loading]=\"loading\"\r\n (onNodeUnselect)=\"deseleccionarArchivo($event)\"></p-tree>\r\n </div>\r\n\r\n <!-- OPCINES DIRECTORIOS - ARCHIVOS -->\r\n <div class=\"field col-12 md:col-6 lg:col-7 p-0 pl-3\">\r\n\r\n @if(this.loading){\r\n <p-progressBar mode=\"indeterminate\" [style]=\"{ height: '6px' }\"></p-progressBar>\r\n }\r\n\r\n @if(!this.loading){\r\n <div class=\"encabezado-acciones sombra-caja mb-3\">\r\n\r\n <!-- CARPETA -->\r\n @if(archivoSeleccionado.expanded){\r\n <div class=\"flex align-items-center\">\r\n <h1 class=\"text-xl mt-2 mb-4 mr-3\">Carpeta: </h1>\r\n <h5 class=\"text-sm mt-2 mb-4\"> {{archivoSeleccionado.label}} </h5>\r\n </div>\r\n\r\n <div class=\"flex justify-content-between\">\r\n\r\n <!-- Convertir -->\r\n <button type=\"button\" pButton pRipple (click)=\"convertirArchivos()\"\r\n *ngIf=\"verConvertir && controlFuncionService.getControlFuncionalidad('seguplacor:guardar')\"\r\n tooltipPosition=\"bottom\" label=\"{{'convertir' | translate}}\"\r\n class=\"w-full mr-3 p-button-secondary boton-accion-principal color-500\"\r\n pTooltip=\"Convertir archivo\" tooltipPosition=\"bottom\">\r\n <div class=\"contenedor-icono-acciones-principal\">\r\n <i class=\"pi pi-arrow-right-arrow-left color-500\"></i>\r\n </div>\r\n </button>\r\n\r\n <!--Nueva Carpeta-->\r\n <button *ngIf=\"controlFuncionService.getControlFuncionalidad('seguplacor:guardar')\" pButton pRipple\r\n class=\"w-full mr-3 p-button-secondary boton-accion-principal color-500\"\r\n label=\"{{'link_nuevo' | translate}}\" (click)=\"crearCarpeta()\">\r\n <div class=\"contenedor-icono-acciones-principal\">\r\n <i class=\"glyphicons glyphicons-plus color-500\"></i>\r\n </div>\r\n </button>\r\n\r\n <!--Eliminar-->\r\n <div class=\"btn-fileupload-claro\">\r\n <button *ngIf=\"controlFuncionService.getControlFuncionalidad('seguplacor:guardar')\" pButton pRipple\r\n class=\"p-button p-button-secondary font-semibold flex-shrink-0 boton-accion-principal mr-3\"\r\n label=\"{{'link_eliminar' | translate}}\" (click)=\"eliminarCarpeta()\">\r\n <div class=\"contenedor-icono-acciones-principal\">\r\n <i style=\"color: var(--color-500)\" class=\"glyphicons glyphicons-bin\"></i>\r\n </div>\r\n </button>\r\n </div>\r\n\r\n <!-- Cargar Archivo -->\r\n <div class=\"btn-fileupload-claro\" [ngClass]=\"{ 'min-width-100': !verConvertir, 'min-width-20': verConvertir }\">\r\n <p-fileUpload #fubauto mode=\"basic\" [auto]=\"true\" [customUpload]=\"true\" chooseIcon=\"pi pi-paperclip\"\r\n *ngIf=\"controlFuncionService.getControlFuncionalidad('seguplacor:guardar')\"\r\n chooseLabel=\"{{'link_subirarchivos' | translate}}\" (onSelect)=\"cargarNuevo($event, fubauto)\">\r\n <div class=\"contenedor-icono-acciones-principal\">\r\n <i class=\"pi pi-trash\"></i>\r\n </div>\r\n </p-fileUpload>\r\n </div>\r\n </div>\r\n }\r\n\r\n <!-- ARCHIVO-->\r\n @if(!archivoSeleccionado.expanded){\r\n\r\n <div class=\"flex align-items-center\">\r\n <h1 class=\"text-xl mt-2 mb-4 mr-3\">Archivo: </h1>\r\n <h5 class=\"text-sm mt-2 mb-4\"> {{archivoSeleccionado.label}} </h5>\r\n </div>\r\n\r\n <div class=\"flex justify-content-end\">\r\n @if(archivoSeleccionado.label.includes('.html')){\r\n\r\n <!--EDITAR HTML-->\r\n <button type=\"button\" pButton pRipple icon=\"pi pi-code text-xl color-500\" (click)=\"editarAction()\"\r\n class=\"mr-3 w-full p-button-secondary boton-accion-principal \" label=\"Editar HTML\">\r\n </button>\r\n }\r\n\r\n <!-- DESCARGAR-->\r\n <button pButton pRipple class=\"mr-3 w-full p-button-secondary boton-accion-principal color-500\"\r\n label=\"{{'link_descargar' | translate}}\" (click)=\"descargarAnexo()\"\r\n *ngIf=\"controlFuncionService.getControlFuncionalidad('seguplacor:descargar')\">\r\n <div class=\"contenedor-icono-acciones-principal\">\r\n <i class=\"glyphicons glyphicons-download color-500\"></i>\r\n </div>\r\n </button>\r\n\r\n <!--ELIMINAR-->\r\n <button pButton pRipple class=\"w-full p-button-secondary boton-accion-principal color-500\"\r\n label=\"{{'link_eliminar' | translate}}\" (click)=\"eliminarArchivo()\"\r\n *ngIf=\"controlFuncionService.getControlFuncionalidad('seguplacor:guardar')\">\r\n <div class=\"contenedor-icono-acciones-principal\">\r\n <i class=\"glyphicons glyphicons-bin color-500\"></i>\r\n </div>\r\n </button>\r\n </div>\r\n }\r\n </div>\r\n }\r\n\r\n @if(archivoSeleccionado.expanded && isVisualizarCrearCaperta){\r\n <div class=\"card\">\r\n\r\n <h5 class=\"mt-2\"><i class=\"glyphicons glyphicons-note\"></i> Nueva carpeta</h5>\r\n\r\n <form #miFormulario=\"ngForm\">\r\n <!-- campos -->\r\n <div class=\"flex mb-3\">\r\n <!-- Nombre -->\r\n <div class=\"w-full p-0 mb-0\">\r\n <span class=\"p-float-label mr-2\">\r\n <input pInputText id=\"id_numero_de_evento\" [(ngModel)]=\"nomNuevaCarpeta\" required\r\n name=\"nombreCarpeta\">\r\n <label for=\"id_numero_de_evento\">{{'nombre' | translate}} *</label>\r\n </span>\r\n </div>\r\n\r\n <div class=\"flex justify-content-end\">\r\n <!--Guardar Carpeta-->\r\n <button pButton pRipple class=\"mr-2 p-button-raised\" icon=\"glyphicons glyphicons-floppy-save\"\r\n [label]=\"('link_guardar' | translate)\" (click)=\"guardarCarpeta()\">\r\n </button>\r\n </div>\r\n </div>\r\n </form>\r\n\r\n </div>\r\n }\r\n <!-- EDITOR DE HTML -->\r\n <div *ngIf=\"isHtml() && mostrarEditor\">\r\n\r\n <div class=\"flex justify-content-end align-items-center mb-3\">\r\n <!-- Bot\u00F3n guardar HTML -->\r\n <button pButton pRipple label=\"{{'link_guardar' | translate }}\" (click)=\"guardarHtml()\"\r\n icon=\"glyphicons glyphicons-floppy-save\" class=\"p-button-raised\"\r\n *ngIf=\"controlFuncionService.getControlFuncionalidad('seguplacor:guardar')\"></button>\r\n </div>\r\n\r\n <p-editor id=\"editor\" [style]=\"{ height: '500px' }\" required [(ngModel)]=\"modificarHTML\"\r\n name=\"htmlPublicacion\"></p-editor>\r\n\r\n </div>\r\n </div>\r\n</div>\r\n\r\n@if(isMostrarPopupConvertir){\r\n<app-popup-convertir-plantillas (regresar)=\"regresarPopupConvertir($event)\"></app-popup-convertir-plantillas>\r\n}\r\n\r\n</div>", styles: [":host ::ng-deep #cargue-plantillas .p-fluid .p-fileupload .p-button{width:100%;background:var(--color-85);border:none;box-shadow:none;color:var(--color-500);border-radius:10px}:host ::ng-deep #cargue-plantillas .p-fluid .p-fileupload .p-button:hover{background:var(--color-100)!important}:host ::ng-deep #cargue-plantillas .min-width-20{min-width:20%}:host ::ng-deep #cargue-plantillas .min-width-100{min-width:30%}#cargue-plantillas .btn-fileupload-claro .p-button{background:var(--color-85)!important;color:var(--color-500)!important;border-radius:10px}#cargue-plantillas .btn-fileupload-claro .p-button:hover{background:var(--color-100)!important}#cargue-plantillas .btn-fileupload-claro .contenedor-icono-acciones-principal{background:#fff;margin-right:8px;padding:12px}#cargue-plantillas .btn-fileupload-claro .boton-accion-principal i{margin:0!important}#cargue-plantillas .contenedor-icono-acciones-principal{display:inline-block;background-color:#fff;border-radius:50%;width:25px;height:25px;display:flex;align-items:center;justify-content:center}#cargue-plantillas .boton-accion-principal i{margin-right:0!important}:host ::ng-deep span.p-button-icon.p-button-icon-left.pi.pi-paperclip{padding:6px;background:#fff;border:none;border-radius:50%;color:var(--color-400)}:host ::ng-deep span.p-button-icon.p-button-icon-left.pi.pi-code{background:#fff;padding:5px;border-radius:50%}\n"] }]
15882
+ ], template: "<div id=\"cargue-plantillas\">\r\n<p-confirmPopup key=\"eliminarCarpeta\"></p-confirmPopup>\r\n<p-confirmPopup key=\"eliminarArchivo\"></p-confirmPopup>\r\n\r\n<h1 class=\"mb-4\">{{'cargue' | translate}} {{'plantillas' | translate}}</h1>\r\n\r\n<div class=\"p-fluid p-formgrid grid\">\r\n\r\n <div class=\"field col-12 md:col-6 lg:col-5 card p-5\">\r\n <div class=\"flex justify-content-between align-items-center justify-content-center relative\">\r\n <input type=\"text\" pInputText [(ngModel)]=\"filterValue\" placeholder=\"{{'filtro' | translate}}\"\r\n (keydown)=\"filtrarEnter($event)\" />\r\n <button type=\"button\" pButton pRipple icon=\"pi pi-search text-xl\" (click)=\"aplicarFiltro()\"\r\n class=\"p-element p-ripple p-button-rounded p-button-secondary p-button p-component p-button-icon-only absolute right-0 border-none bg-white-alpha-10\"\r\n tooltipPosition=\"bottom\" pTooltip=\"Editar HTML\"></button>\r\n </div>\r\n\r\n <p-tree #tree scrollHeight=\"670px\" [value]=\"filteredFiles\" selectionMode=\"single\" [(selection)]=\"dataSelected\"\r\n [filter]=\"false\" [filterPlaceholder]=\"'filtro' | translate\" filterMode=\"strict\"\r\n (onNodeSelect)=\"seleccionarArchivo($event)\" [loading]=\"loading\"\r\n (onNodeUnselect)=\"deseleccionarArchivo($event)\"></p-tree>\r\n </div>\r\n\r\n <!-- OPCINES DIRECTORIOS - ARCHIVOS -->\r\n <div class=\"field col-12 md:col-6 lg:col-7 p-0 pl-3\">\r\n\r\n @if(this.loading){\r\n <p-progressBar mode=\"indeterminate\" [style]=\"{ height: '6px' }\"></p-progressBar>\r\n }\r\n\r\n @if(!this.loading){\r\n <div class=\"encabezado-acciones sombra-caja mb-3\">\r\n\r\n <!-- CARPETA -->\r\n @if(archivoSeleccionado.expanded){\r\n <div class=\"flex align-items-center\">\r\n <h1 class=\"text-xl mt-2 mb-4 mr-3\">Carpeta: </h1>\r\n <h5 class=\"text-sm mt-2 mb-4\"> {{archivoSeleccionado.label}} </h5>\r\n </div>\r\n\r\n <div class=\"flex justify-content-between\">\r\n\r\n <!-- Convertir -->\r\n <button type=\"button\" pButton pRipple (click)=\"convertirArchivos()\"\r\n *ngIf=\"verConvertir && controlFuncionService.getControlFuncionalidad('seguplacor:guardar')\"\r\n tooltipPosition=\"bottom\" label=\"{{'convertir' | translate}}\"\r\n class=\"w-full mr-3 p-button-secondary boton-accion-principal color-500\"\r\n pTooltip=\"Convertir archivo\" tooltipPosition=\"bottom\">\r\n <div class=\"contenedor-icono-acciones-principal\">\r\n <i class=\"pi pi-arrow-right-arrow-left color-500\"></i>\r\n </div>\r\n </button>\r\n\r\n <!--Nueva Carpeta-->\r\n <button *ngIf=\"controlFuncionService.getControlFuncionalidad('seguplacor:guardar')\" pButton pRipple\r\n class=\"w-full mr-3 p-button-secondary boton-accion-principal color-500\"\r\n label=\"{{'link_nuevo' | translate}}\" (click)=\"crearCarpeta()\">\r\n <div class=\"contenedor-icono-acciones-principal\">\r\n <i class=\"glyphicons glyphicons-plus color-500\"></i>\r\n </div>\r\n </button>\r\n\r\n <!--Eliminar-->\r\n <div class=\"btn-fileupload-claro\">\r\n <button *ngIf=\"controlFuncionService.getControlFuncionalidad('seguplacor:guardar')\" pButton pRipple\r\n class=\"p-button p-button-secondary font-semibold flex-shrink-0 boton-accion-principal mr-3\"\r\n label=\"{{'link_eliminar' | translate}}\" (click)=\"eliminarCarpeta()\">\r\n <div class=\"contenedor-icono-acciones-principal\">\r\n <i style=\"color: var(--color-500)\" class=\"glyphicons glyphicons-bin\"></i>\r\n </div>\r\n </button>\r\n </div>\r\n\r\n <!-- Cargar Archivo -->\r\n <div class=\"btn-fileupload-claro\" [ngClass]=\"{ 'min-width-100': !verConvertir, 'min-width-20': verConvertir }\">\r\n <p-fileUpload #fubauto mode=\"basic\" [auto]=\"true\" [customUpload]=\"true\" chooseIcon=\"pi pi-paperclip\"\r\n *ngIf=\"controlFuncionService.getControlFuncionalidad('seguplacor:guardar')\"\r\n chooseLabel=\"{{'link_subirarchivos' | translate}}\" (onSelect)=\"cargarNuevo($event, fubauto)\">\r\n <div class=\"contenedor-icono-acciones-principal\">\r\n <i class=\"pi pi-trash\"></i>\r\n </div>\r\n </p-fileUpload>\r\n </div>\r\n </div>\r\n }\r\n\r\n <!-- ARCHIVO-->\r\n @if(!archivoSeleccionado.expanded){\r\n\r\n <div class=\"flex align-items-center\">\r\n <h1 class=\"text-xl mt-2 mb-4 mr-3\">Archivo: </h1>\r\n <h5 class=\"text-sm mt-2 mb-4\"> {{archivoSeleccionado.label}} </h5>\r\n </div>\r\n\r\n <div class=\"flex justify-content-end\">\r\n @if(archivoSeleccionado.label.includes('.html')){\r\n\r\n <!--EDITAR HTML-->\r\n <button type=\"button\" pButton pRipple icon=\"pi pi-code text-xl color-500\" (click)=\"editarAction()\"\r\n class=\"mr-3 w-full p-button-secondary boton-accion-principal \" label=\"Editar HTML\">\r\n </button>\r\n }\r\n\r\n <!-- DESCARGAR-->\r\n <button pButton pRipple class=\"mr-3 w-full p-button-secondary boton-accion-principal color-500\"\r\n label=\"{{'link_descargar' | translate}}\" (click)=\"descargarAnexo()\"\r\n *ngIf=\"controlFuncionService.getControlFuncionalidad('seguplacor:descargar')\">\r\n <div class=\"contenedor-icono-acciones-principal\">\r\n <i class=\"glyphicons glyphicons-download color-500\"></i>\r\n </div>\r\n </button>\r\n\r\n <!--ELIMINAR-->\r\n <button pButton pRipple class=\"w-full p-button-secondary boton-accion-principal color-500\"\r\n label=\"{{'link_eliminar' | translate}}\" (click)=\"eliminarArchivo()\"\r\n *ngIf=\"controlFuncionService.getControlFuncionalidad('seguplacor:guardar')\">\r\n <div class=\"contenedor-icono-acciones-principal\">\r\n <i class=\"glyphicons glyphicons-bin color-500\"></i>\r\n </div>\r\n </button>\r\n </div>\r\n }\r\n </div>\r\n }\r\n\r\n @if(archivoSeleccionado.expanded && isVisualizarCrearCaperta){\r\n <div class=\"encabezado-acciones sombra-caja mb-3\">\r\n\r\n <h5 class=\"mt-2\"><i class=\"glyphicons glyphicons-note\"></i> Nueva carpeta</h5>\r\n\r\n <form #miFormulario=\"ngForm\">\r\n <!-- campos -->\r\n <div class=\"flex mb-3\">\r\n <!-- Nombre -->\r\n <div class=\"w-full p-0 mb-0\">\r\n <span class=\"p-float-label mr-2\">\r\n <input pInputText id=\"id_numero_de_evento\" [(ngModel)]=\"nomNuevaCarpeta\" required\r\n name=\"nombreCarpeta\">\r\n <label for=\"id_numero_de_evento\">{{'nombre' | translate}} *</label>\r\n </span>\r\n </div>\r\n\r\n <div class=\"flex justify-content-end\">\r\n <!--Guardar Carpeta-->\r\n <button pButton pRipple class=\"mr-2 p-button-raised\" icon=\"glyphicons glyphicons-floppy-save\"\r\n [label]=\"('link_guardar' | translate)\" (click)=\"guardarCarpeta()\">\r\n </button>\r\n </div>\r\n </div>\r\n </form>\r\n\r\n </div>\r\n }\r\n <!-- EDITOR DE HTML -->\r\n <div *ngIf=\"isHtml() && mostrarEditor\">\r\n\r\n <div class=\"flex justify-content-end align-items-center mb-3\">\r\n <!-- Bot\u00F3n guardar HTML -->\r\n <button pButton pRipple label=\"{{'link_guardar' | translate }}\" (click)=\"guardarHtml()\"\r\n icon=\"glyphicons glyphicons-floppy-save\" class=\"p-button-raised\"\r\n *ngIf=\"controlFuncionService.getControlFuncionalidad('seguplacor:guardar')\"></button>\r\n </div>\r\n\r\n <p-editor id=\"editor\" [style]=\"{ height: '500px' }\" required [(ngModel)]=\"modificarHTML\"\r\n name=\"htmlPublicacion\"></p-editor>\r\n\r\n </div>\r\n </div>\r\n</div>\r\n\r\n@if(isMostrarPopupConvertir){\r\n<app-popup-convertir-plantillas (regresar)=\"regresarPopupConvertir($event)\"></app-popup-convertir-plantillas>\r\n}\r\n\r\n</div>", styles: [":host ::ng-deep #cargue-plantillas .p-fluid .p-fileupload .p-button{width:100%;background:var(--color-85);border:none;box-shadow:none;color:var(--color-500);border-radius:10px}:host ::ng-deep #cargue-plantillas .p-fluid .p-fileupload .p-button:hover{background:var(--color-100)!important}:host ::ng-deep #cargue-plantillas .min-width-20{min-width:20%}:host ::ng-deep #cargue-plantillas .min-width-100{min-width:30%}#cargue-plantillas .btn-fileupload-claro .p-button{background:var(--color-85)!important;color:var(--color-500)!important;border-radius:10px}#cargue-plantillas .btn-fileupload-claro .p-button:hover{background:var(--color-100)!important}#cargue-plantillas .btn-fileupload-claro .contenedor-icono-acciones-principal{background:#fff;margin-right:8px;padding:12px}#cargue-plantillas .btn-fileupload-claro .boton-accion-principal i{margin:0!important}#cargue-plantillas .contenedor-icono-acciones-principal{display:inline-block;background-color:#fff;border-radius:50%;width:25px;height:25px;display:flex;align-items:center;justify-content:center}#cargue-plantillas .boton-accion-principal i{margin-right:0!important}:host ::ng-deep span.p-button-icon.p-button-icon-left.pi.pi-paperclip{padding:6px;background:#fff;border:none;border-radius:50%;color:var(--color-400)}:host ::ng-deep span.p-button-icon.p-button-icon-left.pi.pi-code{background:#fff;padding:5px;border-radius:50%}\n"] }]
15883
15883
  }], ctorParameters: () => [{ type: PlantillasService }, { type: AuthService }, { type: i7$1.TranslateService }, { type: CargarControlFuncionalidadService }, { type: i7.ConfirmationService }, { type: ToastService }, { type: CargarArchivosService }, { type: EncriptadoBasicoService }, { type: GeneralPipe }, { type: UtilsService }], propDecorators: { popupConvertirPlantillasComponent: [{
15884
15884
  type: ViewChild,
15885
15885
  args: [PopupConvertirPlantillasComponent]