keevo-components 2.0.199 → 2.0.201
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/kv-icon/kv-icon.component.mjs +3 -3
- package/esm2022/lib/components/kv-inputs/kv-editor/kv-editor.component.mjs +62 -1
- package/esm2022/lib/components/kv-inputs/kv-tree-multi-select/kv-tree-multi-select.component.mjs +3 -3
- package/esm2022/lib/components/kv-table-draggable/kv-table-draggable.component.mjs +35 -35
- package/esm2022/lib/components/kv-tree-environment/components/kv-tree-environment/kv-tree-environment.component.mjs +3 -3
- package/esm2022/lib/components/kv-tree-environment/components/no-arvore/no-arvore.component.mjs +3 -3
- package/esm2022/lib/components/kv-widget-card/kv-widget-card.component.mjs +3 -3
- package/fesm2022/keevo-components.mjs +105 -44
- package/fesm2022/keevo-components.mjs.map +1 -1
- package/lib/components/kv-buttons/kv-button-popup/kv-button-popup.component.d.ts +1 -1
- package/lib/components/kv-inputs/kv-editor/kv-editor.component.d.ts +3 -0
- package/package.json +6 -7
- package/src/assets/images/LogoEvo.png +0 -0
- package/src/assets/images/LogoPequenaEvo.png +0 -0
- package/src/assets/images/background.png +0 -0
- package/src/assets/images/keepass-logo.png +0 -0
- package/src/assets/images/keepass-logo.svg +74 -0
- package/src/assets/images/keevo-logo.png +0 -0
- package/src/assets/images/logokeevo_2.png +0 -0
- package/src/lib/components/keevo-components-styles.scss +293 -0
- package/src/lib/components/kv-button/kv-button.component.scss +389 -0
- package/src/lib/components/kv-inputs/kv-dropdown/kv-dropdown.component.scss +65 -0
- package/src/lib/components/kv-table/kv-table.component.scss +257 -0
- package/.npmignore +0 -2
|
@@ -22,10 +22,10 @@ export class KvIconComponent {
|
|
|
22
22
|
this.size = input('medium');
|
|
23
23
|
}
|
|
24
24
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvIconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.8", type: KvIconComponent, selector: "kv-icon", inputs: { icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: true, transformFunction: null }, shape: { classPropertyName: "shape", publicName: "shape", isSignal: true, isRequired: true, transformFunction: null }, severity: { classPropertyName: "severity", publicName: "severity", isSignal: true, isRequired: true, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div class=\"main-container\">\n\n <div class=\"shape-icon {{ size() }} {{ shape() }} {{ severity() }}\">\n\n @if(icon()) {\n <span class=\"material-symbols-outlined text-white\">\n {{ icon() }}\n </span>\n }\n \n </div>\n \n</div>", styles: ["@import\"https://fonts.googleapis.com/css2?family=Inter:wght@100..900&display=swap\";@import\"https://fonts.googleapis.com/css2?family=Inter:wght@100;200;300;400;500;600;700;800;900&display=swap\";@import\"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@24,400,0,0\";::ng-deep :root{--kv-color-system: 10,58,120;--kv-color-system-cta: 76, 175, 80;--kv-color-text: 0, 0, 0;--kv-color-text-inv: 255, 255, 165;--kv-background-system: 248,250,253;--kv-background-card: 255,255,255;--kv-primary-color: 41, 185, 45;--kv-secondary-color: 0, 37, 66;--kv-tertiary-color: 165, 165, 165;--kv-danger-color: 220, 53, 69;--kv-success-color: 75, 181, 67;--kv-info-color: 58, 170, 208;--kv-warn-color: 241, 90, 36;--kv-contrast-color: 33, 37, 41}::ng-deep .padrao{--kv-color-system: 10,58,120;--kv-color-system-cta: 76, 175, 80;--kv-color-text: 0, 0, 0;--kv-background-system: 248,250,253;--kv-background-card: 255,255,255}::ng-deep .theme-keevocenter{--kv-color-system: 88,25,153;--kv-color-system-cta: 0, 116, 217;--kv-color-text: 0, 0, 0;--kv-color-text-inv: 255, 255, 165;--kv-background-system: 248,250,253;--kv-background-card: 255,255,255}::ng-deep .theme-holos{--kv-color-system: 241,90,36;--kv-color-system-cta: 224, 168, 35;--kv-color-text: 0, 0, 0;--kv-color-text-inv: 255, 255, 165;--kv-background-system: 240,240,240;--kv-background-card: 2255,255,255}.system-color{color:rgb(var(--kv-color-system),1)}.bg-system-100{background:rgb(var(--kv-color-system),1)}.bg-system-75{background:rgb(var(--kv-color-system),.75)}.bg-system-50{background:rgb(var(--kv-color-system),.5)}.bg-system-25{background:rgb(var(--kv-color-system),.25)}.material-symbols-outlined{font-family:Material Symbols Outlined!important}*{font-family:Inter,Inter var,sans-serif!important}::ng-deep .p-accordion,::ng-deep .p-accordion-header,::ng-deep .p-accordion-content,::ng-deep .p-badge,::ng-deep .p-overlay-badge,::ng-deep .p-breadcrumb,::ng-deep .p-breadcrumb-item,::ng-deep .p-breadcrumb-link,::ng-deep .p-button,::ng-deep .p-calendar,::ng-deep .p-card,::ng-deep .p-card-title,::ng-deep .p-card-subtitle,::ng-deep .p-card-content,::ng-deep .p-checkbox,::ng-deep .p-chip,::ng-deep .p-confirm-dialog,::ng-deep .p-confirm-dialog-message,::ng-deep .p-contextmenu,::ng-deep .p-contextmenu-item,::ng-deep .p-dataview,::ng-deep .p-dataview-content,::ng-deep .p-dialog,::ng-deep .p-dialog-title,::ng-deep .p-dialog-content,::ng-deep .p-dropdown,::ng-deep .p-dropdown-label,::ng-deep .p-dropdown-item,::ng-deep .p-dynamic-dialog,::ng-deep .p-dynamic-dialog-title,::ng-deep .p-dynamic-dialog-content,::ng-deep .p-editor,::ng-deep .p-fieldset,::ng-deep .p-fieldset-legend,::ng-deep .p-fieldset-content,::ng-deep .p-fileupload,::ng-deep .p-inputmask,::ng-deep .p-inputnumber,::ng-deep .p-inputtextarea,::ng-deep .p-inputtext,::ng-deep .p-menu,::ng-deep .p-menuitem,::ng-deep .p-menuitem-text,::ng-deep .p-message,::ng-deep .p-messages,::ng-deep .p-multiselect,::ng-deep .p-multiselect-label,::ng-deep .p-multiselect-item,::ng-deep .p-panelmenu,::ng-deep .p-panelmenu-header,::ng-deep .p-panelmenu-content,::ng-deep .p-panel,::ng-deep .p-panel-header,::ng-deep .p-panel-content,::ng-deep .p-password,::ng-deep .p-picklist,::ng-deep .p-progressbar,::ng-deep .p-radiobutton,::ng-deep .p-rating,::ng-deep .p-sidebar,::ng-deep .p-splitbutton,::ng-deep .p-steps,::ng-deep .p-step,::ng-deep .p-table,::ng-deep .p-datatable,::ng-deep .p-tabview,::ng-deep .p-tabpanel,::ng-deep .p-tag,::ng-deep .p-toast,::ng-deep .p-toolbar,::ng-deep .p-tooltip,::ng-deep .p-tree,::ng-deep .p-treetable,::ng-deep .p-selectbutton,::ng-deep .p-stepper,::ng-deep .p-inputgroup,::ng-deep .p-inputgroup-addon,::ng-deep .p-text{font-family:Inter,Inter var,sans-serif!important}::ng-deep .p-icon,svg{height:.6rem}:host ::ng-deep .inputs{height:1.875rem}:host ::ng-deep .inputs,.p-inputtext,.p-inputtextarea{font-size:.875rem}::ng-deep .p-dialog .p-dialog-header{color:rgb(var(--kv-color-text))!important;background:linear-gradient(0deg,#00000005 .44%,#0000 49.5%),#fff!important;display:flex!important;flex-wrap:wrap;word-wrap:break-word;border-bottom:1px solid rgb(var(--kv-color-text),.15)}::ng-deep .p-dialog{min-width:320px}::ng-deep .p-dialog-content{overflow-x:hidden}::ng-deep .p-dialog-content::-webkit-scrollbar{width:8px}::ng-deep .p-dialog-content::-webkit-scrollbar:hover{background-color:#dededebf}::ng-deep .p-dialog-content::-webkit-scrollbar-thumb{border-radius:4px;background-color:transparent}::ng-deep .p-dialog-content:hover::-webkit-scrollbar-thumb{border-left:2px solid white;background-color:#00000080}::ng-deep .p-dialog-content::-webkit-scrollbar-track{border-left:2px solid white;background-color:#dededebf}::ng-deep .p-dialog-footer{display:flex;justify-content:flex-end;padding:10px;gap:10px}::ng-deep .p-dialog .p-dialog-header .p-dialog-header-icon{display:none}::ng-deep .p-tooltip{font-size:.825rem!important}::ng-deep svg.p-icon{width:.65rem;height:.65rem}::ng-deep .p-checkbox .p-checkbox-box.p-highlight{border-color:#004172;background:#004172}::ng-deep .p-checkbox .p-checkbox-box.p-highlight:hover{background-color:#002542}::ng-deep .p-checkbox .p-checkbox-box.p-highlight:active{background-color:#002542}::ng-deep .p-checkbox .p-checkbox-box.p-highlight:disabled{background-color:#002542;opacity:.4;cursor:auto}input{height:1.75rem}::ng-deep .p-checkbox .p-checkbox-box{width:1.125rem;height:1.125rem;border:1.5px solid #d1d5db}::ng-deep p-tablecheckbox p-tableheadercheckbox .p-checkbox{display:flex!important;align-items:center!important;justify-content:right}::ng-deep .p-checkbox{display:flex!important;align-items:center!important;justify-content:center}::ng-deep .p-checkbox-label{font-size:.875rem}:host *{padding:0;margin:0;box-sizing:border-box}.main-container{height:auto}.shape-icon{position:relative;display:flex;justify-content:center;align-items:center;container-type:inline-size;container-name:shape-container}.shape-icon.small{width:1.9rem;height:1.9rem}.shape-icon.medium{width:2.2rem;height:2.2rem}.shape-icon.large{width:2.6rem;height:2.6rem}.shape-icon.system{background-color:rgba(var(--kv-color-system),1)}.shape-icon.success{background-color:rgba(var(--kv-success-color),1)}.shape-icon.info{background-color:rgba(var(--kv-info-color),.4)}.shape-icon.warning{background-color:rgba(var(--kv-warn-color),1)}.shape-icon.danger{background-color:rgba(var(--kv-danger-color),1)}.shape-icon.contrast{background-color:rgba(var(--kv-contrast-color),1)}.shape-icon.circle{border-radius:50%}.shape-icon.square{border-radius:20%}.shape-icon.hexagon{clip-path:polygon(50% 0%,95.5% 27.67%,95.5% 70.1%,50% 100%,4.5% 70.1%,4.5% 27.67%)}.shape-icon .material-symbols-outlined{font-size:70cqi!important}\n"] }); }
|
|
25
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.8", type: KvIconComponent, selector: "kv-icon", inputs: { icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: true, transformFunction: null }, shape: { classPropertyName: "shape", publicName: "shape", isSignal: true, isRequired: true, transformFunction: null }, severity: { classPropertyName: "severity", publicName: "severity", isSignal: true, isRequired: true, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div class=\"main-container\">\r\n\r\n <div class=\"shape-icon {{ size() }} {{ shape() }} {{ severity() }}\">\r\n\r\n @if(icon()) {\r\n <span class=\"material-symbols-outlined text-white\">\r\n {{ icon() }}\r\n </span>\r\n }\r\n \r\n </div>\r\n \r\n</div>", styles: ["@import\"https://fonts.googleapis.com/css2?family=Inter:wght@100..900&display=swap\";@import\"https://fonts.googleapis.com/css2?family=Inter:wght@100;200;300;400;500;600;700;800;900&display=swap\";@import\"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@24,400,0,0\";::ng-deep :root{--kv-color-system: 10,58,120;--kv-color-system-cta: 76, 175, 80;--kv-color-text: 0, 0, 0;--kv-color-text-inv: 255, 255, 165;--kv-background-system: 248,250,253;--kv-background-card: 255,255,255;--kv-primary-color: 41, 185, 45;--kv-secondary-color: 0, 37, 66;--kv-tertiary-color: 165, 165, 165;--kv-danger-color: 220, 53, 69;--kv-success-color: 75, 181, 67;--kv-info-color: 58, 170, 208;--kv-warn-color: 241, 90, 36;--kv-contrast-color: 33, 37, 41}::ng-deep .padrao{--kv-color-system: 10,58,120;--kv-color-system-cta: 76, 175, 80;--kv-color-text: 0, 0, 0;--kv-background-system: 248,250,253;--kv-background-card: 255,255,255}::ng-deep .theme-keevocenter{--kv-color-system: 88,25,153;--kv-color-system-cta: 0, 116, 217;--kv-color-text: 0, 0, 0;--kv-color-text-inv: 255, 255, 165;--kv-background-system: 248,250,253;--kv-background-card: 255,255,255}::ng-deep .theme-holos{--kv-color-system: 241,90,36;--kv-color-system-cta: 224, 168, 35;--kv-color-text: 0, 0, 0;--kv-color-text-inv: 255, 255, 165;--kv-background-system: 240,240,240;--kv-background-card: 2255,255,255}.system-color{color:rgb(var(--kv-color-system),1)}.bg-system-100{background:rgb(var(--kv-color-system),1)}.bg-system-75{background:rgb(var(--kv-color-system),.75)}.bg-system-50{background:rgb(var(--kv-color-system),.5)}.bg-system-25{background:rgb(var(--kv-color-system),.25)}.material-symbols-outlined{font-family:Material Symbols Outlined!important}*{font-family:Inter,Inter var,sans-serif!important}::ng-deep .p-accordion,::ng-deep .p-accordion-header,::ng-deep .p-accordion-content,::ng-deep .p-badge,::ng-deep .p-overlay-badge,::ng-deep .p-breadcrumb,::ng-deep .p-breadcrumb-item,::ng-deep .p-breadcrumb-link,::ng-deep .p-button,::ng-deep .p-calendar,::ng-deep .p-card,::ng-deep .p-card-title,::ng-deep .p-card-subtitle,::ng-deep .p-card-content,::ng-deep .p-checkbox,::ng-deep .p-chip,::ng-deep .p-confirm-dialog,::ng-deep .p-confirm-dialog-message,::ng-deep .p-contextmenu,::ng-deep .p-contextmenu-item,::ng-deep .p-dataview,::ng-deep .p-dataview-content,::ng-deep .p-dialog,::ng-deep .p-dialog-title,::ng-deep .p-dialog-content,::ng-deep .p-dropdown,::ng-deep .p-dropdown-label,::ng-deep .p-dropdown-item,::ng-deep .p-dynamic-dialog,::ng-deep .p-dynamic-dialog-title,::ng-deep .p-dynamic-dialog-content,::ng-deep .p-editor,::ng-deep .p-fieldset,::ng-deep .p-fieldset-legend,::ng-deep .p-fieldset-content,::ng-deep .p-fileupload,::ng-deep .p-inputmask,::ng-deep .p-inputnumber,::ng-deep .p-inputtextarea,::ng-deep .p-inputtext,::ng-deep .p-menu,::ng-deep .p-menuitem,::ng-deep .p-menuitem-text,::ng-deep .p-message,::ng-deep .p-messages,::ng-deep .p-multiselect,::ng-deep .p-multiselect-label,::ng-deep .p-multiselect-item,::ng-deep .p-panelmenu,::ng-deep .p-panelmenu-header,::ng-deep .p-panelmenu-content,::ng-deep .p-panel,::ng-deep .p-panel-header,::ng-deep .p-panel-content,::ng-deep .p-password,::ng-deep .p-picklist,::ng-deep .p-progressbar,::ng-deep .p-radiobutton,::ng-deep .p-rating,::ng-deep .p-sidebar,::ng-deep .p-splitbutton,::ng-deep .p-steps,::ng-deep .p-step,::ng-deep .p-table,::ng-deep .p-datatable,::ng-deep .p-tabview,::ng-deep .p-tabpanel,::ng-deep .p-tag,::ng-deep .p-toast,::ng-deep .p-toolbar,::ng-deep .p-tooltip,::ng-deep .p-tree,::ng-deep .p-treetable,::ng-deep .p-selectbutton,::ng-deep .p-stepper,::ng-deep .p-inputgroup,::ng-deep .p-inputgroup-addon,::ng-deep .p-text{font-family:Inter,Inter var,sans-serif!important}::ng-deep .p-icon,svg{height:.6rem}:host ::ng-deep .inputs{height:1.875rem}:host ::ng-deep .inputs,.p-inputtext,.p-inputtextarea{font-size:.875rem}::ng-deep .p-dialog .p-dialog-header{color:rgb(var(--kv-color-text))!important;background:linear-gradient(0deg,#00000005 .44%,#0000 49.5%),#fff!important;display:flex!important;flex-wrap:wrap;word-wrap:break-word;border-bottom:1px solid rgb(var(--kv-color-text),.15)}::ng-deep .p-dialog{min-width:320px}::ng-deep .p-dialog-content{overflow-x:hidden}::ng-deep .p-dialog-content::-webkit-scrollbar{width:8px}::ng-deep .p-dialog-content::-webkit-scrollbar:hover{background-color:#dededebf}::ng-deep .p-dialog-content::-webkit-scrollbar-thumb{border-radius:4px;background-color:transparent}::ng-deep .p-dialog-content:hover::-webkit-scrollbar-thumb{border-left:2px solid white;background-color:#00000080}::ng-deep .p-dialog-content::-webkit-scrollbar-track{border-left:2px solid white;background-color:#dededebf}::ng-deep .p-dialog-footer{display:flex;justify-content:flex-end;padding:10px;gap:10px}::ng-deep .p-dialog .p-dialog-header .p-dialog-header-icon{display:none}::ng-deep .p-tooltip{font-size:.825rem!important}::ng-deep svg.p-icon{width:.65rem;height:.65rem}::ng-deep .p-checkbox .p-checkbox-box.p-highlight{border-color:#004172;background:#004172}::ng-deep .p-checkbox .p-checkbox-box.p-highlight:hover{background-color:#002542}::ng-deep .p-checkbox .p-checkbox-box.p-highlight:active{background-color:#002542}::ng-deep .p-checkbox .p-checkbox-box.p-highlight:disabled{background-color:#002542;opacity:.4;cursor:auto}input{height:1.75rem}::ng-deep .p-checkbox .p-checkbox-box{width:1.125rem;height:1.125rem;border:1.5px solid #d1d5db}::ng-deep p-tablecheckbox p-tableheadercheckbox .p-checkbox{display:flex!important;align-items:center!important;justify-content:right}::ng-deep .p-checkbox{display:flex!important;align-items:center!important;justify-content:center}::ng-deep .p-checkbox-label{font-size:.875rem}:host *{padding:0;margin:0;box-sizing:border-box}.main-container{height:auto}.shape-icon{position:relative;display:flex;justify-content:center;align-items:center;container-type:inline-size;container-name:shape-container}.shape-icon.small{width:1.9rem;height:1.9rem}.shape-icon.medium{width:2.2rem;height:2.2rem}.shape-icon.large{width:2.6rem;height:2.6rem}.shape-icon.system{background-color:rgba(var(--kv-color-system),1)}.shape-icon.success{background-color:rgba(var(--kv-success-color),1)}.shape-icon.info{background-color:rgba(var(--kv-info-color),.4)}.shape-icon.warning{background-color:rgba(var(--kv-warn-color),1)}.shape-icon.danger{background-color:rgba(var(--kv-danger-color),1)}.shape-icon.contrast{background-color:rgba(var(--kv-contrast-color),1)}.shape-icon.circle{border-radius:50%}.shape-icon.square{border-radius:20%}.shape-icon.hexagon{clip-path:polygon(50% 0%,95.5% 27.67%,95.5% 70.1%,50% 100%,4.5% 70.1%,4.5% 27.67%)}.shape-icon .material-symbols-outlined{font-size:70cqi!important}\n"] }); }
|
|
26
26
|
}
|
|
27
27
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvIconComponent, decorators: [{
|
|
28
28
|
type: Component,
|
|
29
|
-
args: [{ selector: 'kv-icon', template: "<div class=\"main-container\">\n\n <div class=\"shape-icon {{ size() }} {{ shape() }} {{ severity() }}\">\n\n @if(icon()) {\n <span class=\"material-symbols-outlined text-white\">\n {{ icon() }}\n </span>\n }\n \n </div>\n \n</div>", styles: ["@import\"https://fonts.googleapis.com/css2?family=Inter:wght@100..900&display=swap\";@import\"https://fonts.googleapis.com/css2?family=Inter:wght@100;200;300;400;500;600;700;800;900&display=swap\";@import\"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@24,400,0,0\";::ng-deep :root{--kv-color-system: 10,58,120;--kv-color-system-cta: 76, 175, 80;--kv-color-text: 0, 0, 0;--kv-color-text-inv: 255, 255, 165;--kv-background-system: 248,250,253;--kv-background-card: 255,255,255;--kv-primary-color: 41, 185, 45;--kv-secondary-color: 0, 37, 66;--kv-tertiary-color: 165, 165, 165;--kv-danger-color: 220, 53, 69;--kv-success-color: 75, 181, 67;--kv-info-color: 58, 170, 208;--kv-warn-color: 241, 90, 36;--kv-contrast-color: 33, 37, 41}::ng-deep .padrao{--kv-color-system: 10,58,120;--kv-color-system-cta: 76, 175, 80;--kv-color-text: 0, 0, 0;--kv-background-system: 248,250,253;--kv-background-card: 255,255,255}::ng-deep .theme-keevocenter{--kv-color-system: 88,25,153;--kv-color-system-cta: 0, 116, 217;--kv-color-text: 0, 0, 0;--kv-color-text-inv: 255, 255, 165;--kv-background-system: 248,250,253;--kv-background-card: 255,255,255}::ng-deep .theme-holos{--kv-color-system: 241,90,36;--kv-color-system-cta: 224, 168, 35;--kv-color-text: 0, 0, 0;--kv-color-text-inv: 255, 255, 165;--kv-background-system: 240,240,240;--kv-background-card: 2255,255,255}.system-color{color:rgb(var(--kv-color-system),1)}.bg-system-100{background:rgb(var(--kv-color-system),1)}.bg-system-75{background:rgb(var(--kv-color-system),.75)}.bg-system-50{background:rgb(var(--kv-color-system),.5)}.bg-system-25{background:rgb(var(--kv-color-system),.25)}.material-symbols-outlined{font-family:Material Symbols Outlined!important}*{font-family:Inter,Inter var,sans-serif!important}::ng-deep .p-accordion,::ng-deep .p-accordion-header,::ng-deep .p-accordion-content,::ng-deep .p-badge,::ng-deep .p-overlay-badge,::ng-deep .p-breadcrumb,::ng-deep .p-breadcrumb-item,::ng-deep .p-breadcrumb-link,::ng-deep .p-button,::ng-deep .p-calendar,::ng-deep .p-card,::ng-deep .p-card-title,::ng-deep .p-card-subtitle,::ng-deep .p-card-content,::ng-deep .p-checkbox,::ng-deep .p-chip,::ng-deep .p-confirm-dialog,::ng-deep .p-confirm-dialog-message,::ng-deep .p-contextmenu,::ng-deep .p-contextmenu-item,::ng-deep .p-dataview,::ng-deep .p-dataview-content,::ng-deep .p-dialog,::ng-deep .p-dialog-title,::ng-deep .p-dialog-content,::ng-deep .p-dropdown,::ng-deep .p-dropdown-label,::ng-deep .p-dropdown-item,::ng-deep .p-dynamic-dialog,::ng-deep .p-dynamic-dialog-title,::ng-deep .p-dynamic-dialog-content,::ng-deep .p-editor,::ng-deep .p-fieldset,::ng-deep .p-fieldset-legend,::ng-deep .p-fieldset-content,::ng-deep .p-fileupload,::ng-deep .p-inputmask,::ng-deep .p-inputnumber,::ng-deep .p-inputtextarea,::ng-deep .p-inputtext,::ng-deep .p-menu,::ng-deep .p-menuitem,::ng-deep .p-menuitem-text,::ng-deep .p-message,::ng-deep .p-messages,::ng-deep .p-multiselect,::ng-deep .p-multiselect-label,::ng-deep .p-multiselect-item,::ng-deep .p-panelmenu,::ng-deep .p-panelmenu-header,::ng-deep .p-panelmenu-content,::ng-deep .p-panel,::ng-deep .p-panel-header,::ng-deep .p-panel-content,::ng-deep .p-password,::ng-deep .p-picklist,::ng-deep .p-progressbar,::ng-deep .p-radiobutton,::ng-deep .p-rating,::ng-deep .p-sidebar,::ng-deep .p-splitbutton,::ng-deep .p-steps,::ng-deep .p-step,::ng-deep .p-table,::ng-deep .p-datatable,::ng-deep .p-tabview,::ng-deep .p-tabpanel,::ng-deep .p-tag,::ng-deep .p-toast,::ng-deep .p-toolbar,::ng-deep .p-tooltip,::ng-deep .p-tree,::ng-deep .p-treetable,::ng-deep .p-selectbutton,::ng-deep .p-stepper,::ng-deep .p-inputgroup,::ng-deep .p-inputgroup-addon,::ng-deep .p-text{font-family:Inter,Inter var,sans-serif!important}::ng-deep .p-icon,svg{height:.6rem}:host ::ng-deep .inputs{height:1.875rem}:host ::ng-deep .inputs,.p-inputtext,.p-inputtextarea{font-size:.875rem}::ng-deep .p-dialog .p-dialog-header{color:rgb(var(--kv-color-text))!important;background:linear-gradient(0deg,#00000005 .44%,#0000 49.5%),#fff!important;display:flex!important;flex-wrap:wrap;word-wrap:break-word;border-bottom:1px solid rgb(var(--kv-color-text),.15)}::ng-deep .p-dialog{min-width:320px}::ng-deep .p-dialog-content{overflow-x:hidden}::ng-deep .p-dialog-content::-webkit-scrollbar{width:8px}::ng-deep .p-dialog-content::-webkit-scrollbar:hover{background-color:#dededebf}::ng-deep .p-dialog-content::-webkit-scrollbar-thumb{border-radius:4px;background-color:transparent}::ng-deep .p-dialog-content:hover::-webkit-scrollbar-thumb{border-left:2px solid white;background-color:#00000080}::ng-deep .p-dialog-content::-webkit-scrollbar-track{border-left:2px solid white;background-color:#dededebf}::ng-deep .p-dialog-footer{display:flex;justify-content:flex-end;padding:10px;gap:10px}::ng-deep .p-dialog .p-dialog-header .p-dialog-header-icon{display:none}::ng-deep .p-tooltip{font-size:.825rem!important}::ng-deep svg.p-icon{width:.65rem;height:.65rem}::ng-deep .p-checkbox .p-checkbox-box.p-highlight{border-color:#004172;background:#004172}::ng-deep .p-checkbox .p-checkbox-box.p-highlight:hover{background-color:#002542}::ng-deep .p-checkbox .p-checkbox-box.p-highlight:active{background-color:#002542}::ng-deep .p-checkbox .p-checkbox-box.p-highlight:disabled{background-color:#002542;opacity:.4;cursor:auto}input{height:1.75rem}::ng-deep .p-checkbox .p-checkbox-box{width:1.125rem;height:1.125rem;border:1.5px solid #d1d5db}::ng-deep p-tablecheckbox p-tableheadercheckbox .p-checkbox{display:flex!important;align-items:center!important;justify-content:right}::ng-deep .p-checkbox{display:flex!important;align-items:center!important;justify-content:center}::ng-deep .p-checkbox-label{font-size:.875rem}:host *{padding:0;margin:0;box-sizing:border-box}.main-container{height:auto}.shape-icon{position:relative;display:flex;justify-content:center;align-items:center;container-type:inline-size;container-name:shape-container}.shape-icon.small{width:1.9rem;height:1.9rem}.shape-icon.medium{width:2.2rem;height:2.2rem}.shape-icon.large{width:2.6rem;height:2.6rem}.shape-icon.system{background-color:rgba(var(--kv-color-system),1)}.shape-icon.success{background-color:rgba(var(--kv-success-color),1)}.shape-icon.info{background-color:rgba(var(--kv-info-color),.4)}.shape-icon.warning{background-color:rgba(var(--kv-warn-color),1)}.shape-icon.danger{background-color:rgba(var(--kv-danger-color),1)}.shape-icon.contrast{background-color:rgba(var(--kv-contrast-color),1)}.shape-icon.circle{border-radius:50%}.shape-icon.square{border-radius:20%}.shape-icon.hexagon{clip-path:polygon(50% 0%,95.5% 27.67%,95.5% 70.1%,50% 100%,4.5% 70.1%,4.5% 27.67%)}.shape-icon .material-symbols-outlined{font-size:70cqi!important}\n"] }]
|
|
29
|
+
args: [{ selector: 'kv-icon', template: "<div class=\"main-container\">\r\n\r\n <div class=\"shape-icon {{ size() }} {{ shape() }} {{ severity() }}\">\r\n\r\n @if(icon()) {\r\n <span class=\"material-symbols-outlined text-white\">\r\n {{ icon() }}\r\n </span>\r\n }\r\n \r\n </div>\r\n \r\n</div>", styles: ["@import\"https://fonts.googleapis.com/css2?family=Inter:wght@100..900&display=swap\";@import\"https://fonts.googleapis.com/css2?family=Inter:wght@100;200;300;400;500;600;700;800;900&display=swap\";@import\"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@24,400,0,0\";::ng-deep :root{--kv-color-system: 10,58,120;--kv-color-system-cta: 76, 175, 80;--kv-color-text: 0, 0, 0;--kv-color-text-inv: 255, 255, 165;--kv-background-system: 248,250,253;--kv-background-card: 255,255,255;--kv-primary-color: 41, 185, 45;--kv-secondary-color: 0, 37, 66;--kv-tertiary-color: 165, 165, 165;--kv-danger-color: 220, 53, 69;--kv-success-color: 75, 181, 67;--kv-info-color: 58, 170, 208;--kv-warn-color: 241, 90, 36;--kv-contrast-color: 33, 37, 41}::ng-deep .padrao{--kv-color-system: 10,58,120;--kv-color-system-cta: 76, 175, 80;--kv-color-text: 0, 0, 0;--kv-background-system: 248,250,253;--kv-background-card: 255,255,255}::ng-deep .theme-keevocenter{--kv-color-system: 88,25,153;--kv-color-system-cta: 0, 116, 217;--kv-color-text: 0, 0, 0;--kv-color-text-inv: 255, 255, 165;--kv-background-system: 248,250,253;--kv-background-card: 255,255,255}::ng-deep .theme-holos{--kv-color-system: 241,90,36;--kv-color-system-cta: 224, 168, 35;--kv-color-text: 0, 0, 0;--kv-color-text-inv: 255, 255, 165;--kv-background-system: 240,240,240;--kv-background-card: 2255,255,255}.system-color{color:rgb(var(--kv-color-system),1)}.bg-system-100{background:rgb(var(--kv-color-system),1)}.bg-system-75{background:rgb(var(--kv-color-system),.75)}.bg-system-50{background:rgb(var(--kv-color-system),.5)}.bg-system-25{background:rgb(var(--kv-color-system),.25)}.material-symbols-outlined{font-family:Material Symbols Outlined!important}*{font-family:Inter,Inter var,sans-serif!important}::ng-deep .p-accordion,::ng-deep .p-accordion-header,::ng-deep .p-accordion-content,::ng-deep .p-badge,::ng-deep .p-overlay-badge,::ng-deep .p-breadcrumb,::ng-deep .p-breadcrumb-item,::ng-deep .p-breadcrumb-link,::ng-deep .p-button,::ng-deep .p-calendar,::ng-deep .p-card,::ng-deep .p-card-title,::ng-deep .p-card-subtitle,::ng-deep .p-card-content,::ng-deep .p-checkbox,::ng-deep .p-chip,::ng-deep .p-confirm-dialog,::ng-deep .p-confirm-dialog-message,::ng-deep .p-contextmenu,::ng-deep .p-contextmenu-item,::ng-deep .p-dataview,::ng-deep .p-dataview-content,::ng-deep .p-dialog,::ng-deep .p-dialog-title,::ng-deep .p-dialog-content,::ng-deep .p-dropdown,::ng-deep .p-dropdown-label,::ng-deep .p-dropdown-item,::ng-deep .p-dynamic-dialog,::ng-deep .p-dynamic-dialog-title,::ng-deep .p-dynamic-dialog-content,::ng-deep .p-editor,::ng-deep .p-fieldset,::ng-deep .p-fieldset-legend,::ng-deep .p-fieldset-content,::ng-deep .p-fileupload,::ng-deep .p-inputmask,::ng-deep .p-inputnumber,::ng-deep .p-inputtextarea,::ng-deep .p-inputtext,::ng-deep .p-menu,::ng-deep .p-menuitem,::ng-deep .p-menuitem-text,::ng-deep .p-message,::ng-deep .p-messages,::ng-deep .p-multiselect,::ng-deep .p-multiselect-label,::ng-deep .p-multiselect-item,::ng-deep .p-panelmenu,::ng-deep .p-panelmenu-header,::ng-deep .p-panelmenu-content,::ng-deep .p-panel,::ng-deep .p-panel-header,::ng-deep .p-panel-content,::ng-deep .p-password,::ng-deep .p-picklist,::ng-deep .p-progressbar,::ng-deep .p-radiobutton,::ng-deep .p-rating,::ng-deep .p-sidebar,::ng-deep .p-splitbutton,::ng-deep .p-steps,::ng-deep .p-step,::ng-deep .p-table,::ng-deep .p-datatable,::ng-deep .p-tabview,::ng-deep .p-tabpanel,::ng-deep .p-tag,::ng-deep .p-toast,::ng-deep .p-toolbar,::ng-deep .p-tooltip,::ng-deep .p-tree,::ng-deep .p-treetable,::ng-deep .p-selectbutton,::ng-deep .p-stepper,::ng-deep .p-inputgroup,::ng-deep .p-inputgroup-addon,::ng-deep .p-text{font-family:Inter,Inter var,sans-serif!important}::ng-deep .p-icon,svg{height:.6rem}:host ::ng-deep .inputs{height:1.875rem}:host ::ng-deep .inputs,.p-inputtext,.p-inputtextarea{font-size:.875rem}::ng-deep .p-dialog .p-dialog-header{color:rgb(var(--kv-color-text))!important;background:linear-gradient(0deg,#00000005 .44%,#0000 49.5%),#fff!important;display:flex!important;flex-wrap:wrap;word-wrap:break-word;border-bottom:1px solid rgb(var(--kv-color-text),.15)}::ng-deep .p-dialog{min-width:320px}::ng-deep .p-dialog-content{overflow-x:hidden}::ng-deep .p-dialog-content::-webkit-scrollbar{width:8px}::ng-deep .p-dialog-content::-webkit-scrollbar:hover{background-color:#dededebf}::ng-deep .p-dialog-content::-webkit-scrollbar-thumb{border-radius:4px;background-color:transparent}::ng-deep .p-dialog-content:hover::-webkit-scrollbar-thumb{border-left:2px solid white;background-color:#00000080}::ng-deep .p-dialog-content::-webkit-scrollbar-track{border-left:2px solid white;background-color:#dededebf}::ng-deep .p-dialog-footer{display:flex;justify-content:flex-end;padding:10px;gap:10px}::ng-deep .p-dialog .p-dialog-header .p-dialog-header-icon{display:none}::ng-deep .p-tooltip{font-size:.825rem!important}::ng-deep svg.p-icon{width:.65rem;height:.65rem}::ng-deep .p-checkbox .p-checkbox-box.p-highlight{border-color:#004172;background:#004172}::ng-deep .p-checkbox .p-checkbox-box.p-highlight:hover{background-color:#002542}::ng-deep .p-checkbox .p-checkbox-box.p-highlight:active{background-color:#002542}::ng-deep .p-checkbox .p-checkbox-box.p-highlight:disabled{background-color:#002542;opacity:.4;cursor:auto}input{height:1.75rem}::ng-deep .p-checkbox .p-checkbox-box{width:1.125rem;height:1.125rem;border:1.5px solid #d1d5db}::ng-deep p-tablecheckbox p-tableheadercheckbox .p-checkbox{display:flex!important;align-items:center!important;justify-content:right}::ng-deep .p-checkbox{display:flex!important;align-items:center!important;justify-content:center}::ng-deep .p-checkbox-label{font-size:.875rem}:host *{padding:0;margin:0;box-sizing:border-box}.main-container{height:auto}.shape-icon{position:relative;display:flex;justify-content:center;align-items:center;container-type:inline-size;container-name:shape-container}.shape-icon.small{width:1.9rem;height:1.9rem}.shape-icon.medium{width:2.2rem;height:2.2rem}.shape-icon.large{width:2.6rem;height:2.6rem}.shape-icon.system{background-color:rgba(var(--kv-color-system),1)}.shape-icon.success{background-color:rgba(var(--kv-success-color),1)}.shape-icon.info{background-color:rgba(var(--kv-info-color),.4)}.shape-icon.warning{background-color:rgba(var(--kv-warn-color),1)}.shape-icon.danger{background-color:rgba(var(--kv-danger-color),1)}.shape-icon.contrast{background-color:rgba(var(--kv-contrast-color),1)}.shape-icon.circle{border-radius:50%}.shape-icon.square{border-radius:20%}.shape-icon.hexagon{clip-path:polygon(50% 0%,95.5% 27.67%,95.5% 70.1%,50% 100%,4.5% 70.1%,4.5% 27.67%)}.shape-icon .material-symbols-outlined{font-size:70cqi!important}\n"] }]
|
|
30
30
|
}] });
|
|
31
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3YtaWNvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rZWV2by1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9rdi1pY29uL2t2LWljb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Vldm8tY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMva3YtaWNvbi9rdi1pY29uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDOztBQUl6RDs7Ozs7Ozs7Ozs7OztHQWFHO0FBTUgsTUFBTSxPQUFPLGVBQWU7SUFMNUI7UUFPRSxTQUFJLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBVSxDQUFDO1FBQ2hDLFVBQUssR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFtQyxDQUFDO1FBQzFELGFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFxRSxDQUFDO1FBQy9GLFNBQUksR0FBRyxLQUFLLENBQStCLFFBQVEsQ0FBQyxDQUFDO0tBRXREOzhHQVBZLGVBQWU7a0dBQWYsZUFBZSwyaEJDdkI1Qiw0UkFZTTs7MkZEV08sZUFBZTtrQkFMM0IsU0FBUzsrQkFDRSxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBpbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IHNldmVyaXR5Q29sb3JBY3RpdmUgfSBmcm9tICcuLi8uLi9hcGkvaGVscGVycy9zZXZlcml0eS1jb2xvcic7XHJcbmltcG9ydCAqIGFzIEljb25Nb2RlbHMgZnJvbSAnLi9rdi1pY29uLm1vZGVsJztcclxuXHJcbi8qKlxyXG4gKiBDb21wb25lbnRlIHBhcmEgZXhpYmnDp8OjbyBkZSDDrWNvbmVzIG5hIGFwbGljYcOnw6NvLlxyXG4gKiBcclxuICogTyBjb21wb25lbnRlIGBrdi1pY29uYCBwZXJtaXRlIHJlbmRlcml6YXIgw61jb25lcyBiYXNlYWRvcyBubyBtb2RlbG8gZm9ybmVjaWRvLlxyXG4gKiBcclxuICogQGV4YW1wbGVcclxuICogYGBgaHRtbFxyXG4gKiA8a3YtaWNvbiBbaWNvbl09XCInaW5mbydcIiBbc2V2ZXJpdHldPVwiJ3N5c3RlbSdcIiBbc2hhcGVdPVwiJ2NpcmNsZSdcIj48L2t2LWljb24+XHJcbiAqIGBgYFxyXG4gKiBcclxuICogQGlucHV0IGljb24gLSBEZWZpbmUgbyDDrWNvbmUgYSBzZXIgZXhpYmlkby5cclxuICogQGlucHV0IHNoYXBlIC0gRGVmaW5lIGEgZm9ybWEgZG8gw61jb25lIChvcMOnw7VlczogJ2NpcmNsZScsICdoZXhhZ29uJywgJ3NxdWFyZScpLlxyXG4gKiBAaW5wdXQgc2V2ZXJpdHkgLSBEZWZpbmUgYSBzZXZlcmlkYWRlIGRvIMOtY29uZSAob3DDp8O1ZXM6ICdzeXN0ZW0nLCAnd2FybmluZycsICdkYW5nZXInLCAnc3VjY2VzcycpLlxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdrdi1pY29uJyxcclxuICB0ZW1wbGF0ZVVybDogJy4va3YtaWNvbi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4va3YtaWNvbi5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBLdkljb25Db21wb25lbnQge1xyXG5cclxuICBpY29uID0gaW5wdXQucmVxdWlyZWQ8c3RyaW5nPigpO1xyXG4gIHNoYXBlID0gaW5wdXQucmVxdWlyZWQ8J2NpcmNsZScgfCAnaGV4YWdvbicgfCAnc3F1YXJlJz4oKTtcclxuICBzZXZlcml0eSA9IGlucHV0LnJlcXVpcmVkPCdzeXN0ZW0nIHwgJ3dhcm5pbmcnIHwgJ2RhbmdlcicgfCAnc3VjY2VzcycgfCAnY29udHJhc3QnIHwgJ2luZm8nPigpO1xyXG4gIHNpemUgPSBpbnB1dDwnc21hbGwnIHwgJ21lZGl1bScgfCAnbGFyZ2UnPignbWVkaXVtJyk7XHJcblxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJtYWluLWNvbnRhaW5lclwiPlxyXG5cclxuICA8ZGl2IGNsYXNzPVwic2hhcGUtaWNvbiB7eyBzaXplKCkgfX0ge3sgc2hhcGUoKSB9fSB7eyBzZXZlcml0eSgpIH19XCI+XHJcblxyXG4gICAgQGlmKGljb24oKSkge1xyXG4gICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQgdGV4dC13aGl0ZVwiPlxyXG4gICAgICAgIHt7IGljb24oKSB9fVxyXG4gICAgICA8L3NwYW4+XHJcbiAgICB9XHJcbiAgXHJcbiAgPC9kaXY+XHJcbiAgXHJcbjwvZGl2PiJdfQ==
|
|
@@ -320,6 +320,7 @@ export class KvEditorComponent extends BaseComponentInput {
|
|
|
320
320
|
while ((match = styleRegex.exec(content)) !== null) {
|
|
321
321
|
styles.push(match[1]);
|
|
322
322
|
}
|
|
323
|
+
conteudoProcessado = this.processarVariaveisComHtml(conteudoProcessado);
|
|
323
324
|
conteudoProcessado = this.manterQuebrasLinhaHtml(conteudoProcessado);
|
|
324
325
|
let conteudoFinal = '<div class="kv-editor-preview-wrapper">';
|
|
325
326
|
if (styles.length > 0) {
|
|
@@ -332,6 +333,66 @@ export class KvEditorComponent extends BaseComponentInput {
|
|
|
332
333
|
manterQuebrasLinhaHtml(html) {
|
|
333
334
|
return html;
|
|
334
335
|
}
|
|
336
|
+
isHtmlString(str) {
|
|
337
|
+
if (!str || typeof str !== 'string')
|
|
338
|
+
return false;
|
|
339
|
+
const trimmed = str.trim();
|
|
340
|
+
if (!trimmed.startsWith('<') || !trimmed.endsWith('>'))
|
|
341
|
+
return false;
|
|
342
|
+
const htmlTagRegex = /<\/?[a-z][\s\S]*?>/i;
|
|
343
|
+
const hasOpeningTag = /<[a-z][\s\S]*?>/i.test(trimmed);
|
|
344
|
+
const hasClosingTag = /<\/[a-z][\s\S]*?>/i.test(trimmed);
|
|
345
|
+
return htmlTagRegex.test(trimmed) && (hasOpeningTag || hasClosingTag);
|
|
346
|
+
}
|
|
347
|
+
processarVariaveisComHtml(content) {
|
|
348
|
+
if (!this.relatorio() || !this.relatorio().variaveis) {
|
|
349
|
+
return content;
|
|
350
|
+
}
|
|
351
|
+
let conteudoProcessado = content;
|
|
352
|
+
const variaveis = this.relatorio().variaveis;
|
|
353
|
+
variaveis.forEach(variavel => {
|
|
354
|
+
const placeholderId = `{${variavel.id}}`;
|
|
355
|
+
//para buscar outros padrões de html pra variável
|
|
356
|
+
//obs: padronizar o uso de menções com spans data-mention
|
|
357
|
+
const patterns = [
|
|
358
|
+
`<span[^>]*class="[^"]*mention[^"]*"[^>]*>\\s*${this.escapeRegex(variavel.descricao)}\\s*</span>`,
|
|
359
|
+
`<span[^>]*data-mention[^>]*>\\s*${this.escapeRegex(variavel.descricao)}\\s*</span>`,
|
|
360
|
+
`>\\s*${this.escapeRegex(variavel.descricao)}\\s*<`,
|
|
361
|
+
`<[^>]+>\\s*${this.escapeRegex(variavel.descricao)}\\s*</[^>]+>`
|
|
362
|
+
];
|
|
363
|
+
if (conteudoProcessado.includes(placeholderId)) {
|
|
364
|
+
if (this.isHtmlString(variavel.value)) {
|
|
365
|
+
conteudoProcessado = conteudoProcessado.split(placeholderId).join(variavel.value);
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
let substituido = false;
|
|
369
|
+
for (const pattern of patterns) {
|
|
370
|
+
const regexMention = new RegExp(pattern, 'gi');
|
|
371
|
+
if (regexMention.test(conteudoProcessado)) {
|
|
372
|
+
if (this.isHtmlString(variavel.value)) {
|
|
373
|
+
const replacement = pattern.includes('>') && pattern.includes('<')
|
|
374
|
+
? variavel.value
|
|
375
|
+
: `>${variavel.value}<`;
|
|
376
|
+
conteudoProcessado = conteudoProcessado.replace(regexMention, pattern.startsWith('>') ? `>${variavel.value}<` : variavel.value);
|
|
377
|
+
}
|
|
378
|
+
else {
|
|
379
|
+
conteudoProcessado = conteudoProcessado.replace(regexMention, pattern.startsWith('>') ? `>${variavel.value}<` : variavel.value);
|
|
380
|
+
}
|
|
381
|
+
substituido = true;
|
|
382
|
+
break;
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
if (!substituido && conteudoProcessado.includes(variavel.descricao)) {
|
|
386
|
+
if (this.isHtmlString(variavel.value)) {
|
|
387
|
+
conteudoProcessado = conteudoProcessado.split(variavel.descricao).join(variavel.value);
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
});
|
|
391
|
+
return conteudoProcessado;
|
|
392
|
+
}
|
|
393
|
+
escapeRegex(str) {
|
|
394
|
+
return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
395
|
+
}
|
|
335
396
|
get getPreviewContent() {
|
|
336
397
|
return this.previewContent();
|
|
337
398
|
}
|
|
@@ -362,4 +423,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImpor
|
|
|
362
423
|
type: ViewChild,
|
|
363
424
|
args: ['mentionAnchor']
|
|
364
425
|
}] } });
|
|
365
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3YtZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tlZXZvLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2t2LWlucHV0cy9rdi1lZGl0b3Iva3YtZWRpdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tlZXZvLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2t2LWlucHV0cy9rdi1lZGl0b3Iva3YtZWRpdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsUUFBUSxFQUNSLE1BQU0sRUFFTixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxLQUFLLEVBQ0wsS0FBSyxFQUdMLE1BQU0sRUFFTixNQUFNLEVBRU4sU0FBUyxHQUVWLE1BQU0sZUFBZSxDQUFDO0FBS3ZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUV0RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUN2RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUU5RSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxrRUFBa0UsQ0FBQztBQUUvRyxPQUFPLEVBR0wsb0JBQW9CLEVBQ3BCLHdCQUF3QixFQUN4QixzQkFBc0IsRUFDdEIsa0JBQWtCLEVBQ25CLE1BQU0sYUFBYSxDQUFDOzs7Ozs7Ozs7Ozs7O0FBUXJCLE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxrQkFBMEI7SUFFL0QsWUFDRSxnQkFBa0MsRUFDMUIsU0FBdUI7UUFFL0IsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFGaEIsY0FBUyxHQUFULFNBQVMsQ0FBYztRQWtCakMsc0JBQXNCO1FBQ2QsaUJBQVksR0FBRyxNQUFNLENBQUMsb0JB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R0FBakIsaUJBQWlCLHN3REFGakIsa0JBQWtCLENBQUMsaUJBQWlCLENBQUMsOFBDM0NsRCwwcVdBbVRBOzsyRkR0UWEsaUJBQWlCO2tCQU43QixTQUFTOytCQUNFLFdBQVcsYUFHVixrQkFBa0IsbUJBQW1CO2dIQW1DdkMsV0FBVztzQkFBbkIsS0FBSztnQkFFRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFHSSxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLGlCQUFpQjtzQkFBMUIsTUFBTTtnQkFDRyxTQUFTO3NCQUFsQixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBNkNtQixXQUFXO3NCQUFwQyxTQUFTO3VCQUFDLGFBQWE7Z0JBQ0ksYUFBYTtzQkFBeEMsU0FBUzt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgY29tcHV0ZWQsXHJcbiAgZWZmZWN0LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIGluamVjdCxcclxuICBpbnB1dCxcclxuICBJbnB1dCxcclxuICBtb2RlbCxcclxuICBPbkluaXQsXHJcbiAgb3V0cHV0LFxyXG4gIE91dHB1dCxcclxuICBSZW5kZXJlcjIsXHJcbiAgc2lnbmFsLFxyXG4gIFRlbXBsYXRlUmVmLFxyXG4gIFZpZXdDaGlsZCxcclxuICBTZWN1cml0eUNvbnRleHQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IERvbVNhbml0aXplciwgU2FmZUh0bWwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuXHJcbmltcG9ydCBRdWlsbCBmcm9tICdxdWlsbCc7XHJcbmltcG9ydCB7IE92ZXJsYXlQYW5lbCB9IGZyb20gJ3ByaW1lbmcvb3ZlcmxheXBhbmVsJztcclxuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gJ3ByaW1lbmcvZHluYW1pY2RpYWxvZyc7XHJcblxyXG5pbXBvcnQgeyBCYXNlQ29tcG9uZW50SW5wdXQgfSBmcm9tICcuLi8uLi8uLi9hcGkvYmFzZS1jb21wb25lbnRzL2Jhc2UtY29tcG9uZW50LWlucHV0JztcclxuaW1wb3J0IHsgQ29tcG9uZW50UHJvdmlkZXJzIH0gZnJvbSAnLi4vLi4vLi4vYXBpL2hlbHBlcnMvY29tcG9uZW50LXByb3ZpZGVycyc7XHJcbmltcG9ydCB7IENvbXBvbmVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9hcGkvc2VydmljZXMvY29tcG9uZW50LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBLdkluc3RydWNvZXNSZXBvcnRDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMva3YtaW5zdHJ1Y29lcy1yZXBvcnQva3YtaW5zdHJ1Y29lcy1yZXBvcnQuY29tcG9uZW50JztcclxuXHJcbmltcG9ydCB7XHJcbiAgS3ZFZGl0b3JSZWxhdG9yaW8sXHJcbiAgS3ZFZGl0b3JWYXJpYXZlbCxcclxuICBLdkVkaXRvclF1aWxsU2VydmljZSxcclxuICBLdkVkaXRvclJlbGF0b3Jpb1NlcnZpY2UsXHJcbiAgS3ZFZGl0b3JNZW50aW9uU2VydmljZSxcclxuICBLdkVkaXRvclBkZlNlcnZpY2VcclxufSBmcm9tICcuL2t2LWVkaXRvcic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2t2LWVkaXRvcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2t2LWVkaXRvci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4va3YtZWRpdG9yLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgcHJvdmlkZXJzOiBDb21wb25lbnRQcm92aWRlcnMoS3ZFZGl0b3JDb21wb25lbnQpLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgS3ZFZGl0b3JDb21wb25lbnQgZXh0ZW5kcyBCYXNlQ29tcG9uZW50SW5wdXQ8c3RyaW5nPiBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgY29tcG9uZW50U2VydmljZTogQ29tcG9uZW50U2VydmljZSxcclxuICAgIHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXJcclxuICApIHtcclxuICAgIHN1cGVyKGNvbXBvbmVudFNlcnZpY2UpO1xyXG5cclxuICAgIGVmZmVjdCgoKSA9PiB7XHJcbiAgICAgIGxldCByZWFkb25seSA9IHRoaXMucmVhZG9ubHkoKTtcclxuICAgICAgaWYgKHRoaXMucXVpbGwpIHtcclxuICAgICAgICB0aGlzLnF1aWxsLmVuYWJsZSghcmVhZG9ubHkpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBlZmZlY3QoKCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5lbmFibGVQcmV2aWV3TW9kZSgpKSB7XHJcbiAgICAgICAgdGhpcy5hdHVhbGl6YXJQcmV2aWV3KCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLy8gSW5qZcOnw6NvIGRlIHNlcnZpw6dvc1xyXG4gIHByaXZhdGUgcXVpbGxTZXJ2aWNlID0gaW5qZWN0KEt2RWRpdG9yUXVpbGxTZXJ2aWNlKTtcclxuICBwcml2YXRlIHJlbGF0b3Jpb1NlcnZpY2UgPSBpbmplY3QoS3ZFZGl0b3JSZWxhdG9yaW9TZXJ2aWNlKTtcclxuICBwcml2YXRlIG1lbnRpb25TZXJ2aWNlID0gaW5qZWN0KEt2RWRpdG9yTWVudGlvblNlcnZpY2UpO1xyXG4gIHByaXZhdGUgcGRmU2VydmljZSA9IGluamVjdChLdkVkaXRvclBkZlNlcnZpY2UpO1xyXG4gIHByaXZhdGUgZGlhbG9nU2VydmljZSA9IGluamVjdChEaWFsb2dTZXJ2aWNlKTtcclxuXHJcbiAgLy8gUHJvcHJpZWRhZGVzIGRlIGNvbmZpZ3VyYcOnw6NvXHJcbiAgLyoqXHJcbiAgICogQGRlcHJlY2F0ZWQgRXNzYSBwcm9wcmllZGFkZSBuw6NvIHNlcsOhIG1haXMgdXRpbGl6YWRhIHBvciBlc3NlIGNvbXBvbmVudGUgbmFzIHByw7N4aW1hcyB2ZXJzw7Vlcy5cclxuICAgKi9cclxuICBASW5wdXQoKSBjYW52YUhlaWd0aDogc3RyaW5nID0gJzM4MHB4JztcclxuXHJcbiAgQElucHV0KCkgY29udGVudFR5cGU6ICdodG1sJyB8ICd0ZXh0JyA9ICdodG1sJztcclxuICBASW5wdXQoKSBkZWJ1ZzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvLyBFdmVudG9zXHJcbiAgQE91dHB1dCgpIG9uVGV4dENoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9uU2VsZWN0aW9uQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgb3V0cHV0UmF3OiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgb3V0cHV0SHRtbDogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIC8vIFByb3ByaWVkYWRlcyBpbnRlcm5hc1xyXG4gIHByaXZhdGUgdXBkYXRpbmdFZGl0b3I6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwcml2YXRlIGxhc3RTZWxlY3Rpb25SYW5nZTogYW55ID0gbnVsbDtcclxuICBwcml2YXRlIGVkaXRvclJlYWR5UmVzb2x2ZXIhOiAoKSA9PiB2b2lkO1xyXG4gIHByaXZhdGUgZWRpdG9yUmVhZHlQcm9taXNlID0gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUpID0+IHtcclxuICAgIHRoaXMuZWRpdG9yUmVhZHlSZXNvbHZlciA9IHJlc29sdmU7XHJcbiAgfSk7XHJcblxyXG4gIC8vIEluc3TDom5jaWEgZG8gUXVpbGxcclxuICBxdWlsbCE6IFF1aWxsO1xyXG4gIGh0bWxEb0VkaXRvciA9ICcnO1xyXG5cclxuICAvLyBTaWduYWwgcGFyYSBlc3BlbGhhbWVudG8gZG8gY29udGXDumRvIGRvIGVkaXRvclxyXG4gIGh0bWxFc3BlbGhvID0gc2lnbmFsPHN0cmluZz4oJycpO1xyXG4gIHByZXZpZXdDb250ZW50ID0gc2lnbmFsPFNhZmVIdG1sPignJyk7XHJcblxyXG4gIC8vIFNpZ25hbHMgcGFyYSBjb250cm9sZSBkZSBlc3RhZG9cclxuICBpbml0TG9hZENvbXBsZXRlID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcclxuICBpc0xvYWRpbmcgPSBzaWduYWw8Ym9vbGVhbj4odHJ1ZSk7XHJcbiAgZWRpdG9yVG9vbGJhckhlaWdodCA9IHNpZ25hbDxzdHJpbmc+KCczcmVtJyk7XHJcbiAgLy8gdGlwb1Zpc3VhbGl6YWNhbyA9IHNpZ25hbDwndmFsb3InIHwgJ2Rlc2NyaWNhbyc+KCdkZXNjcmljYW8nKTtcclxuICBmaWx0ZXJlZFZhcmlhYmxlcyA9IHNpZ25hbDxLdkVkaXRvclZhcmlhdmVsW10+KFtdKTtcclxuICBjbGVhcmVkVGVtcGxhdGUgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cclxuICAvL0lucHV0IHBhcmEgaGFiaWxpdGFyIHByZXZpZXdcclxuICBlbmFibGVQcmV2aWV3TW9kZSA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcclxuXHJcbiAgLy8gSW5wdXRzIHBhcmEgcmVsYXTDs3Jpb3NcclxuICByZWxhdG9yaW9zID0gaW5wdXQ8S3ZFZGl0b3JSZWxhdG9yaW9bXT4oW10pO1xyXG4gIGlkUmVsYXRvcmlvSW5pdGlhbCA9IG1vZGVsPGFueT4oMCk7XHJcbiAgcHJpbnRCdXR0b24gPSBpbnB1dDxib29sZWFuPih0cnVlKTtcclxuICBsYWJlbEVtcHR5RHJvcGRvd24gPSBpbnB1dDxzdHJpbmc+KCdTZWxlY2lvbmUgdW0gcmVsYXTDs3JpbycpO1xyXG4gIGluc3RydWNvZXNUZW1wbGF0ZSA9IGlucHV0PFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XHJcbiAgc2hvd0hlYWRlciA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xyXG4gIHJlYWRvbmx5ID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cclxuXHJcbiAgLy8gQ29tcHV0ZWQgcHJvcGVydGllcyBwYXJhIHJlbGF0w7NyaW9zXHJcbiAgaWRSZWxhdG9yaW9TZWxlY3RlZCA9IGNvbXB1dGVkKCgpID0+IHRoaXMucmVsYXRvcmlvU2VydmljZS5nZXRJZFJlbGF0b3Jpb1NlbGVjdGVkKCkpO1xyXG4gIHJlbGF0b3JpbyA9IGNvbXB1dGVkKCgpID0+IHRoaXMucmVsYXRvcmlvU2VydmljZS5nZXRSZWxhdG9yaW9TZWxlY3RlZCgpKTtcclxuICBpc0xvYWRpbmdQZGYgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnBkZlNlcnZpY2UuZ2V0SXNMb2FkaW5nUGRmKCkpO1xyXG5cclxuICAvLyBWaWV3Q2hpbGQgcGFyYSBvdmVybGF5IHBhbmVsc1xyXG4gIEBWaWV3Q2hpbGQoJ29wVmFyaWFibGVzJykgb3BWYXJpYWJsZXMhOiBPdmVybGF5UGFuZWw7XHJcbiAgQFZpZXdDaGlsZCgnbWVudGlvbkFuY2hvcicpIG1lbnRpb25BbmNob3IhOiBFbGVtZW50UmVmO1xyXG5cclxuICBtZXNzYWdlcyA9IFt7IHNldmVyaXR5OiAnaW5mbycsIGRldGFpbDogJ01lc3NhZ2UgQ29udGVudCcgfV07XHJcblxyXG4gIC8vIE3DqXRvZG9zIHBhcmEgZ2VyZW5jaWFyIHJlbGF0w7NyaW9zXHJcbiAgc2V0UmVsYXRvcmlvUG9ySWQoaWQ6IGFueSk6IHZvaWQge1xyXG4gICAgY29uc3QgcmVsYXRvcmlvID0gdGhpcy5yZWxhdG9yaW9TZXJ2aWNlLnNldFJlbGF0b3Jpb1BvcklkKGlkKTtcclxuICAgIGlmIChyZWxhdG9yaW8pIHtcclxuICAgICAgdGhpcy5zZXRSZWxhdG9yaW8ocmVsYXRvcmlvKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldFJlbGF0b3JpbyhyZWxhdG9yaW86IEt2RWRpdG9yUmVsYXRvcmlvKTogdm9pZCB7XHJcbiAgICB0aGlzLmNsZWFyZWRUZW1wbGF0ZS5zZXQoZmFsc2UpO1xyXG4gICAgdGhpcy5yZWxhdG9yaW9TZXJ2aWNlLnNldFJlbGF0b3JpbyhyZWxhdG9yaW8pO1xyXG4gICAgY29uc3QgbW9kZWxvID0gcmVsYXRvcmlvLm1vZGVsb1JlbGF0b3JpbyB8fCAnJztcclxuICAgIGNvbnN0IHZhcmlhdmVpcyA9IHJlbGF0b3Jpby52YXJpYXZlaXMgfHwgW107XHJcblxyXG4gICAgdGhpcy5odG1sRG9FZGl0b3IgPSB0aGlzLnJlbGF0b3Jpb1NlcnZpY2UucmVuZGVyQ29udHJhdG8obW9kZWxvLCB2YXJpYXZlaXMpO1xyXG4gICAgdGhpcy51cGRhdGluZ0VkaXRvciA9IHRydWU7XHJcbiAgICB0aGlzLmVzY3JldmFWYWxvcih0aGlzLmh0bWxEb0VkaXRvcik7XHJcbiAgfVxyXG5cclxuICBvdmVycmlkZSBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcblxyXG4gICAgLy8gSW5pY2lhbGl6YSBvcyByZWxhdMOzcmlvcyBubyBzZXJ2acOnb1xyXG4gICAgdGhpcy5yZWxhdG9yaW9TZXJ2aWNlLnNldFJlbGF0b3Jpb3ModGhpcy5yZWxhdG9yaW9zKCkpO1xyXG5cclxuICAgIGlmICghdGhpcy5xdWlsbCkge1xyXG4gICAgICB0aGlzLmhhbmRsZUluaXQoKTtcclxuICAgIH1cclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5pc0xvYWRpbmcuc2V0KGZhbHNlKTtcclxuICAgIH0sIDEwMDApO1xyXG5cclxuICAgIGlmICh0aGlzLmlkUmVsYXRvcmlvSW5pdGlhbCgpKSB7XHJcbiAgICAgIHRoaXMuY2xlYXJlZFRlbXBsYXRlLnNldChmYWxzZSk7XHJcbiAgICAgIHRoaXMuc2V0UmVsYXRvcmlvUG9ySWQodGhpcy5pZFJlbGF0b3Jpb0luaXRpYWwoKSk7XHJcbiAgICB9IGVsc2UgdGhpcy5jbGVhcmVkVGVtcGxhdGUuc2V0KHRydWUpO1xyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5lbmFibGVQcmV2aWV3TW9kZSgpKSB7XHJcbiAgICAgICAgdGhpcy5hdHVhbGl6YXJQcmV2aWV3KCk7XHJcbiAgICAgIH1cclxuICAgIH0sIDE1MDApO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgaGFuZGxlSW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGF3YWl0IHRoaXMucXVpbGxTZXJ2aWNlLmxvYWRDc3MoKTtcclxuICAgIHRoaXMuaW5pdGlhbGl6ZVF1aWxsRWRpdG9yKCk7XHJcbiAgfVxyXG5cclxuICBpbml0aWFsaXplUXVpbGxFZGl0b3IoKTogdm9pZCB7XHJcbiAgICBjb25zdCBjb25maWcgPSB7XHJcbiAgICAgIHRoZW1lOiAnc25vdycsXHJcbiAgICAgIG1vZHVsZXM6IHtcclxuICAgICAgICB0b29sYmFyOiAnI2t2LWVkaXRvci10b29sYmFyJyxcclxuICAgICAgfSxcclxuICAgICAgcGxhY2Vob2xkZXI6IHRoaXMubGFiZWwgPyB0aGlzLmxhYmVsIDogJycsXHJcbiAgICAgIHJlYWRPbmx5OiB0aGlzLnJlYWRvbmx5KCksXHJcbiAgICAgIGRlYnVnOiB0aGlzLmRlYnVnLFxyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLnF1aWxsID0gdGhpcy5xdWlsbFNlcnZpY2UuY3JlYXRlUXVpbGxJbnN0YW5jZSgnI2t2LWVkaXRvcicsIGNvbmZpZyk7XHJcblxyXG4gICAgdGhpcy5zZXR1cFF1aWxsRXZlbnRzKCk7XHJcbiAgICB0aGlzLmVkaXRvclJlYWR5UmVzb2x2ZXIoKTtcclxuICAgIHRoaXMuaW5pdExvYWRDb21wbGV0ZS5zZXQodHJ1ZSk7XHJcblxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmZvcm1Db250cm9sO1xyXG4gICAgICBpZiAoY29udHJvbCAmJiBjb250cm9sLm1hcmtBc1ByaXN0aW5lKSB7XHJcbiAgICAgICAgY29udHJvbC5tYXJrQXNQcmlzdGluZSgpO1xyXG4gICAgICAgIGNvbnRyb2wubWFya0FzVW50b3VjaGVkKCk7XHJcbiAgICAgIH1cclxuICAgIH0sIDApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXR1cFF1aWxsRXZlbnRzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5xdWlsbC5vbignc2VsZWN0aW9uLWNoYW5nZScsIChyYW5nZSwgb2xkUmFuZ2UsIHNvdXJjZSkgPT4ge1xyXG4gICAgICBpZiAocmFuZ2UpIHtcclxuICAgICAgICB0aGlzLmxhc3RTZWxlY3Rpb25SYW5nZSA9IHJhbmdlO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMub25TZWxlY3Rpb25DaGFuZ2UuZW1pdCh7XHJcbiAgICAgICAgcmFuZ2U6IHJhbmdlLFxyXG4gICAgICAgIG9sZFJhbmdlOiBvbGRSYW5nZSxcclxuICAgICAgICBzb3VyY2U6IHNvdXJjZSxcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLnF1aWxsLm9uKCd0ZXh0LWNoYW5nZScsIChkZWx0YSwgb2xkQ29udGVudHMsIHNvdXJjZSkgPT4ge1xyXG4gICAgICBpZiAoc291cmNlID09PSAndXNlcicgJiYgZGVsdGEub3BzKSB7XHJcbiAgICAgICAgdGhpcy5jb25maWd1cmFySHRtbEF1dG9Db21wbGV0ZVRhZyhkZWx0YSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0aGlzLnJlbGF0b3Jpb3MoKS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5oYW5kbGVNZW50aW9uKCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICghdGhpcy51cGRhdGluZ0VkaXRvcikge1xyXG4gICAgICAgIHRoaXMudXBkYXRpbmdFZGl0b3IgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmVzY3JldmFWYWxvcih0aGlzLnF1aWxsLmdldFNlbWFudGljSFRNTCgpLCB0aGlzLnF1aWxsLmdldFRleHQoKSk7XHJcblxyXG4gICAgICAgIHRoaXMub25UZXh0Q2hhbmdlLmVtaXQoe1xyXG4gICAgICAgICAgZGVsdGE6IGRlbHRhLFxyXG4gICAgICAgICAgb2xkQ29udGVudHM6IG9sZENvbnRlbnRzLFxyXG4gICAgICAgICAgc291cmNlOiBzb3VyY2UsXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMub3V0cHV0UmF3LmVtaXQodGhpcy5xdWlsbC5nZXRUZXh0KCkpO1xyXG4gICAgICAgIHRoaXMub3V0cHV0SHRtbC5lbWl0KHRoaXMucXVpbGwuZ2V0U2VtYW50aWNIVE1MKCkpO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5lbmFibGVQcmV2aWV3TW9kZSgpKSB7XHJcbiAgICAgICAgICB0aGlzLmF0dWFsaXphclByZXZpZXcoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb3ZlcnJpZGUgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLnVwZGF0aW5nRWRpdG9yID0gdHJ1ZTtcclxuICAgIHRoaXMuZXNjcmV2YVZhbG9yKHZhbHVlKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGVzY3JldmFWYWxvcihodG1sdmFsdWU6IGFueSwgcmF3dmFsdWU/OiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGlmICghdGhpcy5pbml0TG9hZENvbXBsZXRlKCkpIHtcclxuICAgICAgYXdhaXQgdGhpcy5lZGl0b3JSZWFkeVByb21pc2U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMucXVpbGwpIHtcclxuICAgICAgaWYgKHRoaXMudXBkYXRpbmdFZGl0b3IpIHtcclxuICAgICAgICB0aGlzLnF1aWxsLmNsaXBib2FyZC5kYW5nZXJvdXNseVBhc3RlSFRNTChodG1sdmFsdWUpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMudXBkYXRpbmdFZGl0b3IgPSBmYWxzZTtcclxuICAgICAgdGhpcy52YWx1ZSA9IGh0bWx2YWx1ZTtcclxuXHJcbiAgICAgIGlmIChyYXd2YWx1ZSA9PSBcIlxcblwiIHx8IHRoaXMudmFsdWUgPT0gXCJcXG5cIikge1xyXG4gICAgICAgIHRoaXMudmFsdWUgPSAnJztcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoaXMuZW5hYmxlUHJldmlld01vZGUoKSkge1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5hdHVhbGl6YXJQcmV2aWV3KCksIDEwMCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMudXBkYXRpbmdFZGl0b3IgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLm91dHB1dEh0bWwuZW1pdCh0aGlzLnF1aWxsLmdldFNlbWFudGljSFRNTCgpKTtcclxuICB9XHJcblxyXG4gIGdldEVkaXRvclNpemUoKTogdm9pZCB7XHJcbiAgICBsZXQgZWRpdG9yRmllbGRIZWlnaHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgna3YtZWRpdG9yLXRvb2xiYXInKT8ub2Zmc2V0SGVpZ2h0O1xyXG4gICAgaWYgKGVkaXRvckZpZWxkSGVpZ2h0KSB7XHJcbiAgICAgIHRoaXMuZWRpdG9yVG9vbGJhckhlaWdodC5zZXQoYCR7ZWRpdG9yRmllbGRIZWlnaHR9cHhgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIG9wZW5SZWxhdG9yaW8oKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBpZiAodGhpcy5pc0xvYWRpbmdQZGYoKSkgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IGh0bWxDb250ZW50ID0gdGhpcy5xdWlsbC5nZXRTZW1hbnRpY0hUTUwoKTtcclxuICAgIGNvbnN0IHJlbGF0b3JpbyA9IHRoaXMucmVsYXRvcmlvKCk7XHJcbiAgICAvLyBjb25zdCB0aXBvVmlzdWFsaXphY2FvID0gdGhpcy50aXBvVmlzdWFsaXphY2FvKCk7XHJcblxyXG4gICAgYXdhaXQgdGhpcy5wZGZTZXJ2aWNlLm9wZW5SZWxhdG9yaW8oaHRtbENvbnRlbnQsIHJlbGF0b3JpbywgJ3ZhbG9yJyk7XHJcbiAgfVxyXG5cclxuICAvLyBNw6l0b2RvcyBwYXJhIHNpc3RlbWEgZGUgbWVuw6fDtWVzXHJcbiAgaGFuZGxlTWVudGlvbigpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5yZWxhdG9yaW8oKSkgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMubWVudGlvblNlcnZpY2UuaGFuZGxlTWVudGlvbih0aGlzLnF1aWxsLCB0aGlzLnJlbGF0b3JpbygpIS52YXJpYXZlaXMpO1xyXG4gICAgdGhpcy5maWx0ZXJlZFZhcmlhYmxlcy5zZXQocmVzdWx0LmZpbHRlcmVkVmFyaWFibGVzKTtcclxuXHJcbiAgICBpZiAocmVzdWx0LnNob3VsZFNob3dQYW5lbCAmJiByZXN1bHQubWVudGlvbkJvdW5kcykge1xyXG4gICAgICB0aGlzLnNob3dWYXJpYWJsZXNQYW5lbChyZXN1bHQubWVudGlvbkJvdW5kcyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmNsb3NlVmFyaWFibGVzUGFuZWwoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2hvd1ZhcmlhYmxlc1BhbmVsKGJvdW5kczogeyB0b3A6IG51bWJlcjsgbGVmdDogbnVtYmVyIH0pOiB2b2lkIHtcclxuICAgIGNvbnN0IGFuY2hvckVsID0gdGhpcy5tZW50aW9uQW5jaG9yLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICBhbmNob3JFbC5zdHlsZS50b3AgPSBgJHtib3VuZHMudG9wfXB4YDtcclxuICAgIGFuY2hvckVsLnN0eWxlLmxlZnQgPSBgJHtib3VuZHMubGVmdH1weGA7XHJcbiAgICB0aGlzLm9wVmFyaWFibGVzLnNob3cobnVsbCwgYW5jaG9yRWwpO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0VmFyaWFibGVGcm9tUGFuZWwodmFyaWFibGU6IEt2RWRpdG9yVmFyaWF2ZWwpOiB2b2lkIHtcclxuICAgIHRoaXMubWVudGlvblNlcnZpY2UuaW5zZXJ0VmFyaWFibGUodGhpcy5xdWlsbCwgdmFyaWFibGUpO1xyXG4gICAgdGhpcy5jbG9zZVZhcmlhYmxlc1BhbmVsKCk7XHJcbiAgfVxyXG5cclxuICBjbG9zZVZhcmlhYmxlc1BhbmVsKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMub3BWYXJpYWJsZXMpIHtcclxuICAgICAgdGhpcy5vcFZhcmlhYmxlcy5oaWRlKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLm1lbnRpb25TZXJ2aWNlLmNsb3NlTWVudGlvbigpO1xyXG4gIH1cclxuXHJcbiAgc2hvd0luc3RydWNvZXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLmRpYWxvZ1NlcnZpY2Uub3BlbihLdkluc3RydWNvZXNSZXBvcnRDb21wb25lbnQsIHtcclxuICAgICAgaGVhZGVyOiAnSW5zdHJ1w6fDtWVzJyxcclxuICAgICAgd2lkdGg6ICc0MCUnLFxyXG4gICAgICBoZWlnaHQ6ICczMCUnLFxyXG4gICAgICBtb2RhbDogdHJ1ZSxcclxuICAgICAgY2xvc2FibGU6IHRydWUsXHJcbiAgICAgIGRhdGE6IHtcclxuICAgICAgICB0ZW1wbGF0ZTogdGhpcy5pbnN0cnVjb2VzVGVtcGxhdGUoKVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGNsZWFyVGVtcGxhdGUoKSB7XHJcbiAgICAvLyBMaW1wYSBvIHRlbXBsYXRlIGRvIGVkaXRvclxyXG4gICAgdGhpcy5jbGVhcmVkVGVtcGxhdGUuc2V0KHRydWUpO1xyXG4gICAgdGhpcy5zZXRSZWxhdG9yaW9Qb3JJZCgwKTtcclxuICAgIHRoaXMud3JpdGVWYWx1ZSgnJyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGF0dWFsaXphclByZXZpZXcoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMucXVpbGwpIHJldHVybjtcclxuXHJcbiAgICBsZXQgY29udGV1ZG9IdG1sID0gdGhpcy5xdWlsbC5yb290LmlubmVySFRNTDtcclxuXHJcbiAgICBjb250ZXVkb0h0bWwgPSB0aGlzLmRlY29kaWZpY2FyRW50aWRhZGVzSHRtbChjb250ZXVkb0h0bWwpO1xyXG4gICAgXHJcbiAgICB0aGlzLmh0bWxFc3BlbGhvLnNldChjb250ZXVkb0h0bWwpO1xyXG5cclxuICAgIGNvbnN0IGNvbnRldWRvUHJvY2Vzc2FkbyA9IHRoaXMucHJvY2Vzc2FyQ29udGV1ZG9QcmV2aWV3KGNvbnRldWRvSHRtbCk7XHJcbiAgICB0aGlzLnByZXZpZXdDb250ZW50LnNldChjb250ZXVkb1Byb2Nlc3NhZG8pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBkZWNvZGlmaWNhckVudGlkYWRlc0h0bWwodGV4dDogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHRleHRhcmVhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGV4dGFyZWEnKTtcclxuICAgIHRleHRhcmVhLmlubmVySFRNTCA9IHRleHQ7XHJcbiAgICByZXR1cm4gdGV4dGFyZWEudmFsdWU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNvbmZpZ3VyYXJIdG1sQXV0b0NvbXBsZXRlVGFnKGRlbHRhOiBhbnkpOiB2b2lkIHtcclxuICAgIGlmICghZGVsdGEub3BzIHx8IGRlbHRhLm9wcy5sZW5ndGggPT09IDApIHJldHVybjtcclxuXHJcbiAgICBjb25zdCB1bHRpbW9PcCA9IGRlbHRhLm9wc1tkZWx0YS5vcHMubGVuZ3RoIC0gMV07XHJcbiAgICBpZiAodWx0aW1vT3AuaW5zZXJ0ICYmIHR5cGVvZiB1bHRpbW9PcC5pbnNlcnQgPT09ICdzdHJpbmcnICYmIHVsdGltb09wLmluc2VydCA9PT0gJz4nKSB7XHJcbiAgICAgIGNvbnN0IHRleHRvQXR1YWwgPSB0aGlzLnF1aWxsLmdldFRleHQoKTtcclxuICAgICAgY29uc3QgcG9zaWNhb0N1cnNvciA9IHRoaXMucXVpbGwuZ2V0U2VsZWN0aW9uKCk/LmluZGV4IHx8IDA7XHJcblxyXG4gICAgICBjb25zdCB0ZXh0b0FudGVzQ3Vyc29yID0gdGV4dG9BdHVhbC5zdWJzdHJpbmcoMCwgcG9zaWNhb0N1cnNvcik7XHJcblxyXG4gICAgICBjb25zdCByZWdleFRhZ0FiZXJ0YSA9IC88KFxcdyspKD86XFxzK1tePl0qKT8oPzwhXFwvKVxcPiQvO1xyXG4gICAgICBjb25zdCB2ZXJpZmljYXJUYWcgPSB0ZXh0b0FudGVzQ3Vyc29yLm1hdGNoKHJlZ2V4VGFnQWJlcnRhKTtcclxuXHJcbiAgICAgIGlmICh2ZXJpZmljYXJUYWcpIHtcclxuICAgICAgICBjb25zdCB0YWdOYW1lID0gdmVyaWZpY2FyVGFnWzFdO1xyXG5cclxuICAgICAgICBjb25zdCB0YWdzSW5saW5lID0gWydpbWcnLCAnYnInLCAnaHInLCAnaW5wdXQnLCAnbWV0YScsICdsaW5rJywgJ2FyZWEnLCAnYmFzZScsICdjb2wnLCAnZW1iZWQnLCAnc291cmNlJywgJ3RyYWNrJywgJ3diciddO1xyXG5cclxuICAgICAgICBpZiAoIXRhZ3NJbmxpbmUuaW5jbHVkZXModGFnTmFtZS50b0xvd2VyQ2FzZSgpKSkge1xyXG4gICAgICAgICAgY29uc3QgdGV4dG9EZXBvaXNDdXJzb3IgPSB0ZXh0b0F0dWFsLnN1YnN0cmluZyhwb3NpY2FvQ3Vyc29yKTtcclxuICAgICAgICAgIGNvbnN0IGZlY2hhclRhZ1JlZ2V4ID0gbmV3IFJlZ0V4cChgXjxcXC8ke3RhZ05hbWV9PmAsICdpJyk7XHJcblxyXG4gICAgICAgICAgaWYgKCFmZWNoYXJUYWdSZWdleC50ZXN0KHRleHRvRGVwb2lzQ3Vyc29yKSkge1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0aW5nRWRpdG9yID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5xdWlsbC5pbnNlcnRUZXh0KHBvc2ljYW9DdXJzb3IsIGA8LyR7dGFnTmFtZX0+YCwgJ3VzZXInKTtcclxuXHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMucXVpbGwuc2V0U2VsZWN0aW9uKHBvc2ljYW9DdXJzb3IsIDApO1xyXG4gICAgICAgICAgICAgIHRoaXMudXBkYXRpbmdFZGl0b3IgPSBmYWxzZTtcclxuICAgICAgICAgICAgfSwgMCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHByb2Nlc3NhckNvbnRldWRvUHJldmlldyhjb250ZW50OiBzdHJpbmcpOiBTYWZlSHRtbCB7XHJcbiAgICBpZiAoIWNvbnRlbnQgfHwgY29udGVudCA9PT0gJ1xcbicpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKCc8cCBjbGFzcz1cInRleHQtZ3JheS00MDAgdGV4dC1zbVwiPk8gY29udGXDumRvIGFwYXJlY2Vyw6EgYXF1aS4uLjwvcD4nKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBzdHlsZVJlZ2V4ID0gLzxzdHlsZVtePl0qPihbXFxzXFxTXSo/KTxcXC9zdHlsZT4vZ2k7XHJcbiAgICBjb25zdCBzdHlsZXM6IHN0cmluZ1tdID0gW107XHJcbiAgICBsZXQgY29udGV1ZG9Qcm9jZXNzYWRvID0gY29udGVudDtcclxuXHJcbiAgICBsZXQgbWF0Y2g7XHJcbiAgICB3aGlsZSAoKG1hdGNoID0gc3R5bGVSZWdleC5leGVjKGNvbnRlbnQpKSAhPT0gbnVsbCkge1xyXG4gICAgICBzdHlsZXMucHVzaChtYXRjaFsxXSk7XHJcbiAgICB9XHJcblxyXG4gICAgY29udGV1ZG9Qcm9jZXNzYWRvID0gdGhpcy5tYW50ZXJRdWVicmFzTGluaGFIdG1sKGNvbnRldWRvUHJvY2Vzc2Fkbyk7XHJcblxyXG4gICAgbGV0IGNvbnRldWRvRmluYWwgPSAnPGRpdiBjbGFzcz1cImt2LWVkaXRvci1wcmV2aWV3LXdyYXBwZXJcIj4nO1xyXG5cclxuICAgIGlmIChzdHlsZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICBjb250ZXVkb0ZpbmFsICs9ICc8c3R5bGU+JyArIHN0eWxlcy5qb2luKCdcXG4nKSArICc8L3N0eWxlPic7XHJcbiAgICB9XHJcblxyXG4gICAgY29udGV1ZG9GaW5hbCArPSBjb250ZXVkb1Byb2Nlc3NhZG87XHJcbiAgICBjb250ZXVkb0ZpbmFsICs9ICc8L2Rpdj4nO1xyXG5cclxuICAgIHJldHVybiB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChjb250ZXVkb0ZpbmFsKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbWFudGVyUXVlYnJhc0xpbmhhSHRtbChodG1sOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIGh0bWw7XHJcbiAgfVxyXG5cclxuICBnZXQgZ2V0UHJldmlld0NvbnRlbnQoKTogU2FmZUh0bWwge1xyXG4gICAgcmV0dXJuIHRoaXMucHJldmlld0NvbnRlbnQoKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdlxyXG4gIGNsYXNzPVwia3YtZWRpdG9yLWNvbnRhaW5lciBoLWZ1bGwgdy1mdWxsIG1heC1oLWZ1bGwgZmxleCBmbGV4LWNvbHVtbiBvdmVyZmxvdy1oaWRkZW5cIlxyXG4+XHJcbiAgPGRpdlxyXG4gICAgI2VkaXRvclxyXG4gICAgaWQ9XCJrdi1lZGl0b3ItdG9vbGJhclwiXHJcbiAgICBbbmdDbGFzc109XCJ7ICdlcnJvci1ib3JkZXItdG9vbGJhcic6IGhhc0NvbnRyb2xFcnJvcigpIH1cIlxyXG4gICAgY2xhc3M9XCJ7eyBzaG93SGVhZGVyKCkgPyAnZmxleCcgOiAnaGlkZGVuJyB9fSBmbGV4LWNvbHVtbiBmbGV4LWluaXRpYWxcIlxyXG4gID5cclxuICAgIEBpZihyZWxhdG9yaW9zKCkubGVuZ3RoID4gMCkge1xyXG4gICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cganVzdGlmeS1jb250ZW50LWJldHdlZW4ge3tyZWFkb25seSgpICYmICdwb2ludGVyLWV2ZW50cy1ub25lIG9wYWNpdHktOTAnfX1cIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgZ2FwLTJcIj5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cImZsZXggZmxleC1yb3cgYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yIHAtMiBib3JkZXItcm91bmQtbGcgYm9yZGVyLTEgYm9yZGVyLWdyYXktMjAwIGhvdmVyOnNoYWRvdy0xIGhvdmVyOmJnLWdyYXktMTAwIGN1cnNvci1wb2ludGVyIHRyYW5zaXRpb24tYWxsIHRyYW5zaXRpb24tZHVyYXRpb24tMzAwXCJcclxuICAgICAgICAgIChjbGljayk9XCJvcC50b2dnbGUoJGV2ZW50KVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIHRleHQtbGcgdGV4dC1ncmVlbi02MDAgZm9udC1tZWRpdW1cIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICBjb250cmFjdFxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJmb250LXNlbWlib2xkIHRleHQteHMgdGV4dC1ncmF5LTYwMFwiPnt7XHJcbiAgICAgICAgICAgICFjbGVhcmVkVGVtcGxhdGUoKVxyXG4gICAgICAgICAgICAgID8gcmVsYXRvcmlvKCk/LmxhYmVsIHx8IGxhYmVsRW1wdHlEcm9wZG93bigpXHJcbiAgICAgICAgICAgICAgOiBsYWJlbEVtcHR5RHJvcGRvd24oKVxyXG4gICAgICAgICAgfX08L3NwYW4+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQgdGV4dC1sZ1wiPlxyXG4gICAgICAgICAgICBrZXlib2FyZF9hcnJvd19kb3duXHJcbiAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIEBpZighY2xlYXJlZFRlbXBsYXRlKCkpIHtcclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cImZsZXggZmxleC1yb3cgYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yIHAtMiBib3JkZXItcm91bmQtbGcgYm9yZGVyLTEgYm9yZGVyLWdyYXktMjAwIGhvdmVyOnNoYWRvdy0xIGhvdmVyOmJnLWdyYXktMTAwIGN1cnNvci1wb2ludGVyIHRyYW5zaXRpb24tYWxsIHRyYW5zaXRpb24tZHVyYXRpb24tMzAwXCJcclxuICAgICAgICAgIChjbGljayk9XCJjbGVhclRlbXBsYXRlKClcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCB0ZXh0LWxnIHRleHQtb3JhbmdlLTYwMCBmb250LW1lZGl1bVwiXHJcbiAgICAgICAgICAgIFtwVG9vbHRpcF09XCInTGltcGFyIFRlbXBsYXRlJ1wiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIGxheWVyc19jbGVhclxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMiBwLTIgYm9yZGVyLXJvdW5kLWxnIGJvcmRlci0xIGJvcmRlci1ncmF5LTIwMCBob3ZlcjpzaGFkb3ctMSBob3ZlcjpiZy1ncmF5LTEwMCBjdXJzb3ItcG9pbnRlciB0cmFuc2l0aW9uLWFsbCB0cmFuc2l0aW9uLWR1cmF0aW9uLTMwMFwiXHJcbiAgICAgICAgICAoY2xpY2spPVwic2hvd0luc3RydWNvZXMoKVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIHRleHQtbGcgdGV4dC1ibHVlLTYwMCBmb250LW1lZGl1bVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIGluZm9cclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9udC1zZW1pYm9sZCB0ZXh0LXhzIHRleHQtZ3JheS02MDBcIj5JbnN0cnXDp8O1ZXM8L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPCEtLSBAaWYocHJpbnRCdXR0b24oKSkge1xyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMiBwLTIgYm9yZGVyLXJvdW5kLWxnIGJvcmRlci0xIGJvcmRlci1ncmF5LTIwMCBob3ZlcjpzaGFkb3ctMSBob3ZlcjpiZy1ncmF5LTEwMCBjdXJzb3ItcG9pbnRlciB0cmFuc2l0aW9uLWFsbCB0cmFuc2l0aW9uLWR1cmF0aW9uLTMwMFwiXHJcbiAgICAgICAgKGNsaWNrKT1cIm9wZW5SZWxhdG9yaW8oKVwiXHJcbiAgICAgID5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQgdGV4dC1sZyBmb250LW1lZGl1bVwiPlxyXG4gICAgICAgICAgcHJpbnRcclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJmb250LXNlbWlib2xkIHRleHQteHMgdGV4dC1ncmF5LTYwMFwiPkltcHJpbWlyPC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgfSAtLT5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxwLWRpdmlkZXIgY2xhc3M9XCJ3LWZ1bGxcIj48L3AtZGl2aWRlcj5cclxuXHJcbiAgICB9XHJcblxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cImZsZXggZmxleC1yb3cgYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIHctZnVsbCBmbGV4LWluaXRpYWxcIlxyXG4gICAgPlxyXG4gICAgICBAaWYoaXNMb2FkaW5nKCkpIHtcclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMyB3LWZ1bGxcIj5cclxuICAgICAgICA8cC1za2VsZXRvblxyXG4gICAgICAgICAgc3R5bGVDbGFzcz1cInctNnJlbVwiXHJcbiAgICAgICAgICBbc3R5bGVdPVwieyBoZWlnaHQ6ICcycmVtJyB9XCJcclxuICAgICAgICA+PC9wLXNrZWxldG9uPlxyXG5cclxuICAgICAgICA8cC1za2VsZXRvblxyXG4gICAgICAgICAgc3R5bGVDbGFzcz1cInctNnJlbVwiXHJcbiAgICAgICAgICBbc3R5bGVdPVwieyBoZWlnaHQ6ICcycmVtJyB9XCJcclxuICAgICAgICA+PC9wLXNrZWxldG9uPlxyXG5cclxuICAgICAgICA8cC1za2VsZXRvblxyXG4gICAgICAgICAgc3R5bGVDbGFzcz1cInctNnJlbVwiXHJcbiAgICAgICAgICBbc3R5bGVdPVwieyBoZWlnaHQ6ICcycmVtJyB9XCJcclxuICAgICAgICA+PC9wLXNrZWxldG9uPlxyXG5cclxuICAgICAgICA8cC1za2VsZXRvblxyXG4gICAgICAgICAgc3R5bGVDbGFzcz1cInctNnJlbVwiXHJcbiAgICAgICAgICBbc3R5bGVdPVwieyBoZWlnaHQ6ICcycmVtJyB9XCJcclxuICAgICAgICA+PC9wLXNrZWxldG9uPlxyXG5cclxuICAgICAgICA8cC1za2VsZXRvblxyXG4gICAgICAgICAgc3R5bGVDbGFzcz1cInctNnJlbVwiXHJcbiAgICAgICAgICBbc3R5bGVdPVwieyBoZWlnaHQ6ICcycmVtJyB9XCJcclxuICAgICAgICA+PC9wLXNrZWxldG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgfVxyXG5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwiZmxleC1yb3cgYWxpZ24taXRlbXMtY2VudGVyIGZsZXgtd3JhcCBnYXAtMiB7e1xyXG4gICAgICAgICAgaXNMb2FkaW5nKCkgPyAnaGlkZGVuJyA6ICdmbGV4J1xyXG4gICAgICAgIH19IHctZnVsbFwiXHJcbiAgICAgID5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cInFsLWZvcm1hdHMgYm9yZGVyLXJvdW5kLW1kXCI+XHJcbiAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwicWwtZm9udFwiPlxyXG4gICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwicm9ib3RvXCI+Um9ib3RvPC9vcHRpb24+XHJcbiAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJhcmlhbFwiPkFyaWFsPC9vcHRpb24+XHJcbiAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJ0aW1lcy1uZXctcm9tYW5cIj5UaW1lcyBOZXcgUm9tYW48L29wdGlvbj5cclxuICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIm1vbm9zcGFjZVwiPk1vbm9zcGFjZTwvb3B0aW9uPlxyXG4gICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiaW50ZXJcIj5JbnRlcjwvb3B0aW9uPlxyXG4gICAgICAgICAgICA8b3B0aW9uIHNlbGVjdGVkPlNhbnMgU2VyaWY8L29wdGlvbj5cclxuICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cInNlcmlmXCI+U2VyaWY8L29wdGlvbj5cclxuICAgICAgICAgIDwvc2VsZWN0PlxyXG5cclxuICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJxbC1oZWFkZXJcIj5cclxuICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIjFcIj5UaXR1bG88L29wdGlvbj5cclxuICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIjJcIj5TdWJ0aXR1bG88L29wdGlvbj5cclxuICAgICAgICAgICAgPG9wdGlvbiBzZWxlY3RlZD5Ob3JtYWw8L29wdGlvbj5cclxuICAgICAgICAgIDwvc2VsZWN0PlxyXG5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwicWwtZm9ybWF0LWdyb3VwXCI+XHJcbiAgICAgICAgICAgIDxzZWxlY3QgdGl0bGU9XCJTaXplXCIgY2xhc3M9XCJxbC1zaXplXCI+XHJcbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIjE1cHhcIj4xNXB4PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIjIwcHhcIj4yMHB4PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIjMwcHhcIj4zMHB4PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIjQwcHhcIj40MHB4PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIjUwcHhcIj41MHB4PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIjcwcHhcIj43MHB4PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIjkwcHhcIj45MHB4PC9vcHRpb24+XHJcbiAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDwvc3Bhbj5cclxuXHJcbiAgICAgICAgPHAtZGl2aWRlciBsYXlvdXQ9XCJ2ZXJ0aWNhbFwiPjwvcC1kaXZpZGVyPlxyXG5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cInFsLWZvcm1hdHMgYm9yZGVyLXJvdW5kLW1kXCI+XHJcbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwicWwtYm9sZFwiPjwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInFsLWl0YWxpY1wiPjwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInFsLXVuZGVybGluZVwiPjwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInFsLXN0cmlrZVwiPjwvYnV0dG9uPlxyXG4gICAgICAgIDwvc3Bhbj5cclxuXHJcbiAgICAgICAgPHAtZGl2aWRlciBsYXlvdXQ9XCJ2ZXJ0aWNhbFwiPjwvcC1kaXZpZGVyPlxyXG5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cInFsLWZvcm1hdHMgYm9yZGVyLXJvdW5kLW1kXCI+XHJcbiAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwicWwtY29sb3JcIj48L3NlbGVjdD5cclxuICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJxbC1iYWNrZ3JvdW5kXCI+PC9zZWxlY3Q+XHJcbiAgICAgICAgPC9zcGFuPlxyXG5cclxuICAgICAgICBAaWYodHJ1ZSkge1xyXG4gICAgICAgIDwhLS0gPHAtZGl2aWRlciBsYXlvdXQ9XCJ2ZXJ0aWNhbFwiPjwvcC1kaXZpZGVyPlxyXG5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJxbC1mb3JtYXRzIGJvcmRlci1yb3VuZC1tZFwiPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJxbC1oZWFkZXJcIiB2YWx1ZT1cIjFcIj48L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwicWwtaGVhZGVyXCIgdmFsdWU9XCIyXCI+PC9idXR0b24+XHJcbiAgICAgIDwvc3Bhbj4gLS0+XHJcblxyXG4gICAgICAgIDxwLWRpdmlkZXIgbGF5b3V0PVwidmVydGljYWxcIj48L3AtZGl2aWRlcj5cclxuXHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJxbC1mb3JtYXRzIGJvcmRlci1yb3VuZC1tZFwiPlxyXG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInFsLWxpbmtcIj48L2J1dHRvbj5cclxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJxbC1pbWFnZVwiPjwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInFsLXZpZGVvXCI+PC9idXR0b24+XHJcbiAgICAgICAgPC9zcGFuPlxyXG5cclxuICAgICAgICA8cC1kaXZpZGVyIGxheW91dD1cInZlcnRpY2FsXCI+PC9wLWRpdmlkZXI+XHJcblxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwicWwtZm9ybWF0cyBib3JkZXItcm91bmQtbWRcIj5cclxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJxbC1saXN0XCIgdmFsdWU9XCJvcmRlcmVkXCI+PC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwicWwtbGlzdFwiIHZhbHVlPVwiYnVsbGV0XCI+PC9idXR0b24+XHJcbiAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwicWwtYWxpZ25cIj48L3NlbGVjdD5cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgfVxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxkaXZcclxuICAgIHN0eWxlPVwiaGVpZ2h0OiAzcHg7IGJvcmRlci10b3A6IG5vbmU7IGJvcmRlci1ib3R0b206IG5vbmVcIlxyXG4gICAgW3N0eWxlLmJvcmRlclJpZ2h0XT1cInNob3dIZWFkZXIoKSA/ICcxcHggc29saWQgI2U1ZTdlYicgOiAnbm9uZSdcIlxyXG4gICAgW3N0eWxlLmJvcmRlckxlZnRdPVwic2hvd0hlYWRlcigpID8gJzFweCBzb2xpZCAjZTVlN2ViJyA6ICdub25lJ1wiXHJcbiAgPlxyXG4gICAgQGlmKGlzTG9hZGluZ1BkZigpKSB7XHJcbiAgICA8cC1wcm9ncmVzc0JhciBtb2RlPVwiaW5kZXRlcm1pbmF0ZVwiIFtzdHlsZV09XCJ7IGhlaWdodDogJzNweCcgfVwiIC8+XHJcbiAgICB9XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGZsZXgtMSBnYXAtMCBvdmVyZmxvdy1hdXRvXCI+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGlkPVwia3YtZWRpdG9yXCJcclxuICAgICAgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGZsZXgtMSBzY3JvbGxzdHlsZVwiXHJcbiAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAnZXJyb3ItYm9yZGVyJzogaGFzQ29udHJvbEVycm9yKCksXHJcbiAgICAgICAgJ3BvaW50ZXItZXZlbnRzLW5vbmUgb3BhY2l0eS02MCc6IGlzTG9hZGluZ1BkZigpXHJcbiAgICAgIH1cIlxyXG4gICAgICBbc3R5bGUuYm9yZGVyVG9wXT1cInNob3dIZWFkZXIoKSA/ICdub25lJyA6ICcxcHggc29saWQgI2U1ZTdlYidcIlxyXG4gICAgICBbc3R5bGUuYm9yZGVyUmlnaHRdPVwiZW5hYmxlUHJldmlld01vZGUoKSA/ICdub25lJyA6ICcxcHggc29saWQgI2U1ZTdlYidcIlxyXG4gICAgPjwvZGl2PlxyXG5cclxuICAgIEBpZihlbmFibGVQcmV2aWV3TW9kZSgpKSB7XHJcbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbHVtbiBmbGV4LTFcIj5cclxuICAgICAgPGRpdiBcclxuICAgICAgICBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yIHB4LTMgcHktMlwiIFxyXG4gICAgICAgIFtzdHlsZS5ib3JkZXJSaWdodF09XCInMXB4IHNvbGlkICNlNWU3ZWInXCJcclxuICAgICAgICBbc3R5bGUuYm9yZGVyTGVmdF09XCInMXB4IHNvbGlkICNlNWU3ZWInXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCB0ZXh0LWJsdWUtNjAwIHRleHQtbGdcIj52aXNpYmlsaXR5PC9zcGFuPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZm9udC1zZW1pYm9sZCB0ZXh0LWdyYXktNzAwIHRleHQtc21cIj5QcmV2aWV3PC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgXHJcbiAgICAgIDxkaXZcclxuICAgICAgICBpZD1cImt2LWVkaXRvci1wcmV2aWV3XCJcclxuICAgICAgICBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZmxleC0xIHNjcm9sbHN0eWxlXCJcclxuICAgICAgICBbaW5uZXJIVE1MXT1cImdldFByZXZpZXdDb250ZW50XCJcclxuICAgICAgICBbc3R5bGUuYm9yZGVyXT1cIicxcHggc29saWQgI2U1ZTdlYidcIlxyXG4gICAgICA+PC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIH1cclxuICA8L2Rpdj5cclxuXHJcbjwvZGl2PlxyXG48a3YtZXJyb3IgW2hhc0Vycm9yXT1cImhhc0NvbnRyb2xFcnJvcigpXCI+e3sgZXJyb01lc3NhZ2UoKSB9fTwva3YtZXJyb3I+XHJcblxyXG48IS0tIDxsaW5rIGhyZWY9XCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL3F1aWxsQDIuMC4yL2Rpc3QvcXVpbGwuc25vdy5jc3NcIiByZWw9XCJzdHlsZXNoZWV0XCIgLz4gLS0+XHJcbjxsaW5rIGhyZWY9XCJodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2Nzcz9mYW1pbHk9Um9ib3RvXCIgcmVsPVwic3R5bGVzaGVldFwiIC8+XHJcbjxzY3JpcHQgc3JjPVwiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9xdWlsbEAyLjAuMi9kaXN0L3F1aWxsLmpzXCI+PC9zY3JpcHQ+XHJcbjxzY3JpcHQgc3JjPVwiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9rYXRleEAwLjE2LjkvZGlzdC9rYXRleC5taW4uanNcIj48L3NjcmlwdD5cclxuXHJcbjxsaW5rXHJcbiAgcmVsPVwic3R5bGVzaGVldFwiXHJcbiAgaHJlZj1cImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vcXVpbGxAMi4wLjIvZGlzdC9xdWlsbC5idWJibGUuY3NzXCJcclxuLz5cclxuPGxpbmtcclxuICByZWw9XCJzdHlsZXNoZWV0XCJcclxuICBocmVmPVwiaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvaGlnaGxpZ2h0LmpzLzExLjkuMC9zdHlsZXMvYXRvbS1vbmUtZGFyay5taW4uY3NzXCJcclxuLz5cclxuPGxpbmtcclxuICByZWw9XCJzdHlsZXNoZWV0XCJcclxuICBocmVmPVwiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9rYXRleEAwLjE2LjkvZGlzdC9rYXRleC5taW4uY3NzXCJcclxuLz5cclxuXHJcbjxwLW92ZXJsYXlQYW5lbCAjb3Agc3R5bGVDbGFzcz1cIm92ZXJmbG93LWhpZGRlblwiPlxyXG4gIDxkaXZcclxuICAgIGNsYXNzPVwiZ3JpZCBtLTAgZ2FwLTIgcC0yIG1heC13LTIwcmVtIG92ZXJmbG93LXktYXV0byBzY3JvbGxzdHlsZVwiXHJcbiAgICBzdHlsZT1cIm1heC1oZWlnaHQ6IDE2cmVtXCJcclxuICA+XHJcbiAgICBAZm9yKGl0ZW0gb2YgcmVsYXRvcmlvcygpOyB0cmFjayAkaW5kZXgpIHtcclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJjb2wtMTIgY3Vyc29yLXBvaW50ZXIgaG92ZXI6YmctZ3JheS0xMDAgdHJhbnNpdGlvbi1jb2xvcnMgdHJhbnNpdGlvbi1kdXJhdGlvbi0yMDAgYm9yZGVyLXJvdW5kLWxnIHNoYWRvdy0yIGZsZXggZmxleC1jb2x1bW4gZ2FwLTJcIlxyXG4gICAgICAoY2xpY2spPVwic2V0UmVsYXRvcmlvKGl0ZW0pXCJcclxuICAgID5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwiZmxleCBmbGV4LXJvdyBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTIganVzdGlmeS1jb250ZW50LWJldHdlZW5cIlxyXG4gICAgICA+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXNtIGZvbnQtbWVkaXVtIHctZnVsbFwiPnt7IGl0ZW0ubGFiZWwgfX08L3NwYW4+XHJcblxyXG4gICAgICAgIDxrdi10YWdzXHJcbiAgICAgICAgICBjbGFzcz1cInRyYW5zaXRpb24tb3BhY2l0eSB0cmFuc2l0aW9uLWR1cmF0aW9uLTMwMCB7e1xyXG4gICAgICAgICAgICBpdGVtPy5pZCA9PSBpZFJlbGF0b3Jpb1NlbGVjdGVkKCkgPyAnb3BhY2l0eS0xMDAnIDogJ29wYWNpdHktMCdcclxuICAgICAgICAgIH19XCJcclxuICAgICAgICAgIFt0YWdzXT1cIlt7IGxhYmVsOiAnU2VsZWNpb25hZG8nLCBzZXZlcml0eTogJ3ByaW1hcnknIH1dXCJcclxuICAgICAgICA+PC9rdi10YWdzPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXhzIHRleHQtZ3JheS01MDBcIj57eyBpdGVtLmRlc2NyaWNhbyB9fTwvc3Bhbj5cclxuICAgIDwvZGl2PlxyXG4gICAgfVxyXG4gIDwvZGl2PlxyXG48L3Atb3ZlcmxheVBhbmVsPlxyXG5cclxuPGRpdiBjbGFzcz1cImt2LWVkaXRvci1jb250YWluZXIgZmxleCBmbGV4LWNvbHVtbiBvdmVyZmxvdy1oaWRkZW4gcmVsYXRpdmVcIj5cclxuICA8ZGl2XHJcbiAgICAjbWVudGlvbkFuY2hvclxyXG4gICAgc3R5bGU9XCJwb3NpdGlvbjogZml4ZWQ7IHdpZHRoOiAxcHg7IGhlaWdodDogMXB4OyBvcGFjaXR5OiAwXCJcclxuICA+PC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPHAtb3ZlcmxheVBhbmVsXHJcbiAgI29wVmFyaWFibGVzXHJcbiAgW2FwcGVuZFRvXT1cIidib2R5J1wiXHJcbiAgKG9uSGlkZSk9XCJjbG9zZVZhcmlhYmxlc1BhbmVsKClcIlxyXG4+XHJcbiAgPGRpdlxyXG4gICAgY2xhc3M9XCJmbGV4IGZsZXgtY29sdW1uIGdhcC0xIHAtMSBvdmVyZmxvdy15LWF1dG8gc2Nyb2xsLXZpcnR1YWwgYm9yZGVyLXJvdW5kLWxnXCJcclxuICAgIHN0eWxlPVwibWF4LWhlaWdodDogMjUwcHg7IG1pbi13aWR0aDogMjUwcHg7IGJhY2tncm91bmQtY29sb3I6ICMzMzMzMzNcIlxyXG4gID5cclxuICAgIEBmb3IodmFyaWFibGUgb2YgZmlsdGVyZWRWYXJpYWJsZXMoKTsgdHJhY2sgdmFyaWFibGUuaWQpIHtcclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJwLTIgY3Vyc29yLXBvaW50ZXIgdHJhbnNpdGlvbi1jb2xvcnMgdHJhbnNpdGlvbi1kdXJhdGlvbi0yMDAgYm9yZGVyLXJvdW5kLWxnIHRleHQtc20gdGV4dC13aGl0ZSBvcHRpb24tZHJvcGRvd25cIlxyXG4gICAgICAoY2xpY2spPVwic2VsZWN0VmFyaWFibGVGcm9tUGFuZWwodmFyaWFibGUpXCJcclxuICAgID5cclxuICAgICAge3sgdmFyaWFibGUuZGVzY3JpY2FvIH19IChcclxuICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWdyYXktNDAwXCI+e3sgdmFyaWFibGUudmFsdWUgfX08L3NwYW4+IClcclxuICAgIDwvZGl2PlxyXG4gICAgfSBAZW1wdHkge1xyXG4gICAgPGRpdiBjbGFzcz1cInAtMiB0ZXh0LXNtIHRleHQtZ3JheS01MDBcIj5OZW5odW1hIHZhcmnDoXZlbCBlbmNvbnRyYWRhLjwvZGl2PlxyXG4gICAgfVxyXG4gIDwvZGl2PlxyXG48L3Atb3ZlcmxheVBhbmVsPlxyXG4iXX0=
|
|
426
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3YtZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tlZXZvLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2t2LWlucHV0cy9rdi1lZGl0b3Iva3YtZWRpdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tlZXZvLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2t2LWlucHV0cy9rdi1lZGl0b3Iva3YtZWRpdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsUUFBUSxFQUNSLE1BQU0sRUFFTixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxLQUFLLEVBQ0wsS0FBSyxFQUdMLE1BQU0sRUFFTixNQUFNLEVBRU4sU0FBUyxHQUVWLE1BQU0sZUFBZSxDQUFDO0FBS3ZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUV0RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUN2RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUU5RSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxrRUFBa0UsQ0FBQztBQUUvRyxPQUFPLEVBR0wsb0JBQW9CLEVBQ3BCLHdCQUF3QixFQUN4QixzQkFBc0IsRUFDdEIsa0JBQWtCLEVBQ25CLE1BQU0sYUFBYSxDQUFDOzs7Ozs7Ozs7Ozs7O0FBUXJCLE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxrQkFBMEI7SUFFL0QsWUFDRSxnQkFBa0MsRUFDMUIsU0FBdUI7UUFFL0IsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFGaEIsY0FBUyxHQUFULFNBQVMsQ0FBYztRQWtCakMsc0JBQXNCO1FBQ2QsaUJBQVksR0FBRyxNQUFNLENBQUMsb0JB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VyxhQUdWLGtCQUFrQixtQkFBbUI7Z0hBbUN2QyxXQUFXO3NCQUFuQixLQUFLO2dCQUVHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUdJLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csaUJBQWlCO3NCQUExQixNQUFNO2dCQUNHLFNBQVM7c0JBQWxCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkE2Q21CLFdBQVc7c0JBQXBDLFNBQVM7dUJBQUMsYUFBYTtnQkFDSSxhQUFhO3NCQUF4QyxTQUFTO3VCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBjb21wdXRlZCxcclxuICBlZmZlY3QsXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgaW5qZWN0LFxyXG4gIGlucHV0LFxyXG4gIElucHV0LFxyXG4gIG1vZGVsLFxyXG4gIE9uSW5pdCxcclxuICBvdXRwdXQsXHJcbiAgT3V0cHV0LFxyXG4gIFJlbmRlcmVyMixcclxuICBzaWduYWwsXHJcbiAgVGVtcGxhdGVSZWYsXHJcbiAgVmlld0NoaWxkLFxyXG4gIFNlY3VyaXR5Q29udGV4dCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlSHRtbCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5cclxuaW1wb3J0IFF1aWxsIGZyb20gJ3F1aWxsJztcclxuaW1wb3J0IHsgT3ZlcmxheVBhbmVsIH0gZnJvbSAncHJpbWVuZy9vdmVybGF5cGFuZWwnO1xyXG5pbXBvcnQgeyBEaWFsb2dTZXJ2aWNlIH0gZnJvbSAncHJpbWVuZy9keW5hbWljZGlhbG9nJztcclxuXHJcbmltcG9ydCB7IEJhc2VDb21wb25lbnRJbnB1dCB9IGZyb20gJy4uLy4uLy4uL2FwaS9iYXNlLWNvbXBvbmVudHMvYmFzZS1jb21wb25lbnQtaW5wdXQnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRQcm92aWRlcnMgfSBmcm9tICcuLi8uLi8uLi9hcGkvaGVscGVycy9jb21wb25lbnQtcHJvdmlkZXJzJztcclxuaW1wb3J0IHsgQ29tcG9uZW50U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2FwaS9zZXJ2aWNlcy9jb21wb25lbnQuc2VydmljZSc7XHJcbmltcG9ydCB7IEt2SW5zdHJ1Y29lc1JlcG9ydENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9rdi1pbnN0cnVjb2VzLXJlcG9ydC9rdi1pbnN0cnVjb2VzLXJlcG9ydC5jb21wb25lbnQnO1xyXG5cclxuaW1wb3J0IHtcclxuICBLdkVkaXRvclJlbGF0b3JpbyxcclxuICBLdkVkaXRvclZhcmlhdmVsLFxyXG4gIEt2RWRpdG9yUXVpbGxTZXJ2aWNlLFxyXG4gIEt2RWRpdG9yUmVsYXRvcmlvU2VydmljZSxcclxuICBLdkVkaXRvck1lbnRpb25TZXJ2aWNlLFxyXG4gIEt2RWRpdG9yUGRmU2VydmljZVxyXG59IGZyb20gJy4va3YtZWRpdG9yJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAna3YtZWRpdG9yJyxcclxuICB0ZW1wbGF0ZVVybDogJy4va3YtZWRpdG9yLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9rdi1lZGl0b3IuY29tcG9uZW50LnNjc3MnXSxcclxuICBwcm92aWRlcnM6IENvbXBvbmVudFByb3ZpZGVycyhLdkVkaXRvckNvbXBvbmVudCksXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBLdkVkaXRvckNvbXBvbmVudCBleHRlbmRzIEJhc2VDb21wb25lbnRJbnB1dDxzdHJpbmc+IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBjb21wb25lbnRTZXJ2aWNlOiBDb21wb25lbnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBzYW5pdGl6ZXI6IERvbVNhbml0aXplclxyXG4gICkge1xyXG4gICAgc3VwZXIoY29tcG9uZW50U2VydmljZSk7XHJcblxyXG4gICAgZWZmZWN0KCgpID0+IHtcclxuICAgICAgbGV0IHJlYWRvbmx5ID0gdGhpcy5yZWFkb25seSgpO1xyXG4gICAgICBpZiAodGhpcy5xdWlsbCkge1xyXG4gICAgICAgIHRoaXMucXVpbGwuZW5hYmxlKCFyZWFkb25seSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIGVmZmVjdCgoKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLmVuYWJsZVByZXZpZXdNb2RlKCkpIHtcclxuICAgICAgICB0aGlzLmF0dWFsaXphclByZXZpZXcoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvLyBJbmplw6fDo28gZGUgc2VydmnDp29zXHJcbiAgcHJpdmF0ZSBxdWlsbFNlcnZpY2UgPSBpbmplY3QoS3ZFZGl0b3JRdWlsbFNlcnZpY2UpO1xyXG4gIHByaXZhdGUgcmVsYXRvcmlvU2VydmljZSA9IGluamVjdChLdkVkaXRvclJlbGF0b3Jpb1NlcnZpY2UpO1xyXG4gIHByaXZhdGUgbWVudGlvblNlcnZpY2UgPSBpbmplY3QoS3ZFZGl0b3JNZW50aW9uU2VydmljZSk7XHJcbiAgcHJpdmF0ZSBwZGZTZXJ2aWNlID0gaW5qZWN0KEt2RWRpdG9yUGRmU2VydmljZSk7XHJcbiAgcHJpdmF0ZSBkaWFsb2dTZXJ2aWNlID0gaW5qZWN0KERpYWxvZ1NlcnZpY2UpO1xyXG5cclxuICAvLyBQcm9wcmllZGFkZXMgZGUgY29uZmlndXJhw6fDo29cclxuICAvKipcclxuICAgKiBAZGVwcmVjYXRlZCBFc3NhIHByb3ByaWVkYWRlIG7Do28gc2Vyw6EgbWFpcyB1dGlsaXphZGEgcG9yIGVzc2UgY29tcG9uZW50ZSBuYXMgcHLDs3hpbWFzIHZlcnPDtWVzLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGNhbnZhSGVpZ3RoOiBzdHJpbmcgPSAnMzgwcHgnO1xyXG5cclxuICBASW5wdXQoKSBjb250ZW50VHlwZTogJ2h0bWwnIHwgJ3RleHQnID0gJ2h0bWwnO1xyXG4gIEBJbnB1dCgpIGRlYnVnOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8vIEV2ZW50b3NcclxuICBAT3V0cHV0KCkgb25UZXh0Q2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgb25TZWxlY3Rpb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBvdXRwdXRSYXc6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBvdXRwdXRIdG1sOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgLy8gUHJvcHJpZWRhZGVzIGludGVybmFzXHJcbiAgcHJpdmF0ZSB1cGRhdGluZ0VkaXRvcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByaXZhdGUgbGFzdFNlbGVjdGlvblJhbmdlOiBhbnkgPSBudWxsO1xyXG4gIHByaXZhdGUgZWRpdG9yUmVhZHlSZXNvbHZlciE6ICgpID0+IHZvaWQ7XHJcbiAgcHJpdmF0ZSBlZGl0b3JSZWFkeVByb21pc2UgPSBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSkgPT4ge1xyXG4gICAgdGhpcy5lZGl0b3JSZWFkeVJlc29sdmVyID0gcmVzb2x2ZTtcclxuICB9KTtcclxuXHJcbiAgLy8gSW5zdMOibmNpYSBkbyBRdWlsbFxyXG4gIHF1aWxsITogUXVpbGw7XHJcbiAgaHRtbERvRWRpdG9yID0gJyc7XHJcblxyXG4gIC8vIFNpZ25hbCBwYXJhIGVzcGVsaGFtZW50byBkbyBjb250ZcO6ZG8gZG8gZWRpdG9yXHJcbiAgaHRtbEVzcGVsaG8gPSBzaWduYWw8c3RyaW5nPignJyk7XHJcbiAgcHJldmlld0NvbnRlbnQgPSBzaWduYWw8U2FmZUh0bWw+KCcnKTtcclxuXHJcbiAgLy8gU2lnbmFscyBwYXJhIGNvbnRyb2xlIGRlIGVzdGFkb1xyXG4gIGluaXRMb2FkQ29tcGxldGUgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIGlzTG9hZGluZyA9IHNpZ25hbDxib29sZWFuPih0cnVlKTtcclxuICBlZGl0b3JUb29sYmFySGVpZ2h0ID0gc2lnbmFsPHN0cmluZz4oJzNyZW0nKTtcclxuICAvLyB0aXBvVmlzdWFsaXphY2FvID0gc2lnbmFsPCd2YWxvcicgfCAnZGVzY3JpY2FvJz4oJ2Rlc2NyaWNhbycpO1xyXG4gIGZpbHRlcmVkVmFyaWFibGVzID0gc2lnbmFsPEt2RWRpdG9yVmFyaWF2ZWxbXT4oW10pO1xyXG4gIGNsZWFyZWRUZW1wbGF0ZSA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XHJcblxyXG4gIC8vSW5wdXQgcGFyYSBoYWJpbGl0YXIgcHJldmlld1xyXG4gIGVuYWJsZVByZXZpZXdNb2RlID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cclxuICAvLyBJbnB1dHMgcGFyYSByZWxhdMOzcmlvc1xyXG4gIHJlbGF0b3Jpb3MgPSBpbnB1dDxLdkVkaXRvclJlbGF0b3Jpb1tdPihbXSk7XHJcbiAgaWRSZWxhdG9yaW9Jbml0aWFsID0gbW9kZWw8YW55PigwKTtcclxuICBwcmludEJ1dHRvbiA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xyXG4gIGxhYmVsRW1wdHlEcm9wZG93biA9IGlucHV0PHN0cmluZz4oJ1NlbGVjaW9uZSB1bSByZWxhdMOzcmlvJyk7XHJcbiAgaW5zdHJ1Y29lc1RlbXBsYXRlID0gaW5wdXQ8VGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcclxuICBzaG93SGVhZGVyID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XHJcbiAgcmVhZG9ubHkgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XHJcblxyXG5cclxuICAvLyBDb21wdXRlZCBwcm9wZXJ0aWVzIHBhcmEgcmVsYXTDs3Jpb3NcclxuICBpZFJlbGF0b3Jpb1NlbGVjdGVkID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5yZWxhdG9yaW9TZXJ2aWNlLmdldElkUmVsYXRvcmlvU2VsZWN0ZWQoKSk7XHJcbiAgcmVsYXRvcmlvID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5yZWxhdG9yaW9TZXJ2aWNlLmdldFJlbGF0b3Jpb1NlbGVjdGVkKCkpO1xyXG4gIGlzTG9hZGluZ1BkZiA9IGNvbXB1dGVkKCgpID0+IHRoaXMucGRmU2VydmljZS5nZXRJc0xvYWRpbmdQZGYoKSk7XHJcblxyXG4gIC8vIFZpZXdDaGlsZCBwYXJhIG92ZXJsYXkgcGFuZWxzXHJcbiAgQFZpZXdDaGlsZCgnb3BWYXJpYWJsZXMnKSBvcFZhcmlhYmxlcyE6IE92ZXJsYXlQYW5lbDtcclxuICBAVmlld0NoaWxkKCdtZW50aW9uQW5jaG9yJykgbWVudGlvbkFuY2hvciE6IEVsZW1lbnRSZWY7XHJcblxyXG4gIG1lc3NhZ2VzID0gW3sgc2V2ZXJpdHk6ICdpbmZvJywgZGV0YWlsOiAnTWVzc2FnZSBDb250ZW50JyB9XTtcclxuXHJcbiAgLy8gTcOpdG9kb3MgcGFyYSBnZXJlbmNpYXIgcmVsYXTDs3Jpb3NcclxuICBzZXRSZWxhdG9yaW9Qb3JJZChpZDogYW55KTogdm9pZCB7XHJcbiAgICBjb25zdCByZWxhdG9yaW8gPSB0aGlzLnJlbGF0b3Jpb1NlcnZpY2Uuc2V0UmVsYXRvcmlvUG9ySWQoaWQpO1xyXG4gICAgaWYgKHJlbGF0b3Jpbykge1xyXG4gICAgICB0aGlzLnNldFJlbGF0b3JpbyhyZWxhdG9yaW8pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0UmVsYXRvcmlvKHJlbGF0b3JpbzogS3ZFZGl0b3JSZWxhdG9yaW8pOiB2b2lkIHtcclxuICAgIHRoaXMuY2xlYXJlZFRlbXBsYXRlLnNldChmYWxzZSk7XHJcbiAgICB0aGlzLnJlbGF0b3Jpb1NlcnZpY2Uuc2V0UmVsYXRvcmlvKHJlbGF0b3Jpbyk7XHJcbiAgICBjb25zdCBtb2RlbG8gPSByZWxhdG9yaW8ubW9kZWxvUmVsYXRvcmlvIHx8ICcnO1xyXG4gICAgY29uc3QgdmFyaWF2ZWlzID0gcmVsYXRvcmlvLnZhcmlhdmVpcyB8fCBbXTtcclxuXHJcbiAgICB0aGlzLmh0bWxEb0VkaXRvciA9IHRoaXMucmVsYXRvcmlvU2VydmljZS5yZW5kZXJDb250cmF0byhtb2RlbG8sIHZhcmlhdmVpcyk7XHJcbiAgICB0aGlzLnVwZGF0aW5nRWRpdG9yID0gdHJ1ZTtcclxuICAgIHRoaXMuZXNjcmV2YVZhbG9yKHRoaXMuaHRtbERvRWRpdG9yKTtcclxuICB9XHJcblxyXG4gIG92ZXJyaWRlIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgc3VwZXIubmdPbkluaXQoKTtcclxuXHJcbiAgICAvLyBJbmljaWFsaXphIG9zIHJlbGF0w7NyaW9zIG5vIHNlcnZpw6dvXHJcbiAgICB0aGlzLnJlbGF0b3Jpb1NlcnZpY2Uuc2V0UmVsYXRvcmlvcyh0aGlzLnJlbGF0b3Jpb3MoKSk7XHJcblxyXG4gICAgaWYgKCF0aGlzLnF1aWxsKSB7XHJcbiAgICAgIHRoaXMuaGFuZGxlSW5pdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmlzTG9hZGluZy5zZXQoZmFsc2UpO1xyXG4gICAgfSwgMTAwMCk7XHJcblxyXG4gICAgaWYgKHRoaXMuaWRSZWxhdG9yaW9Jbml0aWFsKCkpIHtcclxuICAgICAgdGhpcy5jbGVhcmVkVGVtcGxhdGUuc2V0KGZhbHNlKTtcclxuICAgICAgdGhpcy5zZXRSZWxhdG9yaW9Qb3JJZCh0aGlzLmlkUmVsYXRvcmlvSW5pdGlhbCgpKTtcclxuICAgIH0gZWxzZSB0aGlzLmNsZWFyZWRUZW1wbGF0ZS5zZXQodHJ1ZSk7XHJcblxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLmVuYWJsZVByZXZpZXdNb2RlKCkpIHtcclxuICAgICAgICB0aGlzLmF0dWFsaXphclByZXZpZXcoKTtcclxuICAgICAgfVxyXG4gICAgfSwgMTUwMCk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBoYW5kbGVJbml0KCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgYXdhaXQgdGhpcy5xdWlsbFNlcnZpY2UubG9hZENzcygpO1xyXG4gICAgdGhpcy5pbml0aWFsaXplUXVpbGxFZGl0b3IoKTtcclxuICB9XHJcblxyXG4gIGluaXRpYWxpemVRdWlsbEVkaXRvcigpOiB2b2lkIHtcclxuICAgIGNvbnN0IGNvbmZpZyA9IHtcclxuICAgICAgdGhlbWU6ICdzbm93JyxcclxuICAgICAgbW9kdWxlczoge1xyXG4gICAgICAgIHRvb2xiYXI6ICcja3YtZWRpdG9yLXRvb2xiYXInLFxyXG4gICAgICB9LFxyXG4gICAgICBwbGFjZWhvbGRlcjogdGhpcy5sYWJlbCA/IHRoaXMubGFiZWwgOiAnJyxcclxuICAgICAgcmVhZE9ubHk6IHRoaXMucmVhZG9ubHkoKSxcclxuICAgICAgZGVidWc6IHRoaXMuZGVidWcsXHJcbiAgICB9O1xyXG5cclxuICAgIHRoaXMucXVpbGwgPSB0aGlzLnF1aWxsU2VydmljZS5jcmVhdGVRdWlsbEluc3RhbmNlKCcja3YtZWRpdG9yJywgY29uZmlnKTtcclxuXHJcbiAgICB0aGlzLnNldHVwUXVpbGxFdmVudHMoKTtcclxuICAgIHRoaXMuZWRpdG9yUmVhZHlSZXNvbHZlcigpO1xyXG4gICAgdGhpcy5pbml0TG9hZENvbXBsZXRlLnNldCh0cnVlKTtcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgY29uc3QgY29udHJvbCA9IHRoaXMuZm9ybUNvbnRyb2w7XHJcbiAgICAgIGlmIChjb250cm9sICYmIGNvbnRyb2wubWFya0FzUHJpc3RpbmUpIHtcclxuICAgICAgICBjb250cm9sLm1hcmtBc1ByaXN0aW5lKCk7XHJcbiAgICAgICAgY29udHJvbC5tYXJrQXNVbnRvdWNoZWQoKTtcclxuICAgICAgfVxyXG4gICAgfSwgMCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldHVwUXVpbGxFdmVudHMoKTogdm9pZCB7XHJcbiAgICB0aGlzLnF1aWxsLm9uKCdzZWxlY3Rpb24tY2hhbmdlJywgKHJhbmdlLCBvbGRSYW5nZSwgc291cmNlKSA9PiB7XHJcbiAgICAgIGlmIChyYW5nZSkge1xyXG4gICAgICAgIHRoaXMubGFzdFNlbGVjdGlvblJhbmdlID0gcmFuZ2U7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5vblNlbGVjdGlvbkNoYW5nZS5lbWl0KHtcclxuICAgICAgICByYW5nZTogcmFuZ2UsXHJcbiAgICAgICAgb2xkUmFuZ2U6IG9sZFJhbmdlLFxyXG4gICAgICAgIHNvdXJjZTogc291cmNlLFxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMucXVpbGwub24oJ3RleHQtY2hhbmdlJywgKGRlbHRhLCBvbGRDb250ZW50cywgc291cmNlKSA9PiB7XHJcbiAgICAgIGlmIChzb3VyY2UgPT09ICd1c2VyJyAmJiBkZWx0YS5vcHMpIHtcclxuICAgICAgICB0aGlzLmNvbmZpZ3VyYXJIdG1sQXV0b0NvbXBsZXRlVGFnKGRlbHRhKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoaXMucmVsYXRvcmlvcygpLmxlbmd0aCA+IDApIHtcclxuICAgICAgICB0aGlzLmhhbmRsZU1lbnRpb24oKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKCF0aGlzLnVwZGF0aW5nRWRpdG9yKSB7XHJcbiAgICAgICAgdGhpcy51cGRhdGluZ0VkaXRvciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuZXNjcmV2YVZhbG9yKHRoaXMucXVpbGwuZ2V0U2VtYW50aWNIVE1MKCksIHRoaXMucXVpbGwuZ2V0VGV4dCgpKTtcclxuXHJcbiAgICAgICAgdGhpcy5vblRleHRDaGFuZ2UuZW1pdCh7XHJcbiAgICAgICAgICBkZWx0YTogZGVsdGEsXHJcbiAgICAgICAgICBvbGRDb250ZW50czogb2xkQ29udGVudHMsXHJcbiAgICAgICAgICBzb3VyY2U6IHNvdXJjZSxcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5vdXRwdXRSYXcuZW1pdCh0aGlzLnF1aWxsLmdldFRleHQoKSk7XHJcbiAgICAgICAgdGhpcy5vdXRwdXRIdG1sLmVtaXQodGhpcy5xdWlsbC5nZXRTZW1hbnRpY0hUTUwoKSk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmVuYWJsZVByZXZpZXdNb2RlKCkpIHtcclxuICAgICAgICAgIHRoaXMuYXR1YWxpemFyUHJldmlldygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvdmVycmlkZSB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMudXBkYXRpbmdFZGl0b3IgPSB0cnVlO1xyXG4gICAgdGhpcy5lc2NyZXZhVmFsb3IodmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgZXNjcmV2YVZhbG9yKGh0bWx2YWx1ZTogYW55LCByYXd2YWx1ZT86IGFueSk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgaWYgKCF0aGlzLmluaXRMb2FkQ29tcGxldGUoKSkge1xyXG4gICAgICBhd2FpdCB0aGlzLmVkaXRvclJlYWR5UHJvbWlzZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5xdWlsbCkge1xyXG4gICAgICBpZiAodGhpcy51cGRhdGluZ0VkaXRvcikge1xyXG4gICAgICAgIHRoaXMucXVpbGwuY2xpcGJvYXJkLmRhbmdlcm91c2x5UGFzdGVIVE1MKGh0bWx2YWx1ZSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy51cGRhdGluZ0VkaXRvciA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnZhbHVlID0gaHRtbHZhbHVlO1xyXG5cclxuICAgICAgaWYgKHJhd3ZhbHVlID09IFwiXFxuXCIgfHwgdGhpcy52YWx1ZSA9PSBcIlxcblwiKSB7XHJcbiAgICAgICAgdGhpcy52YWx1ZSA9ICcnO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhpcy5lbmFibGVQcmV2aWV3TW9kZSgpKSB7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmF0dWFsaXphclByZXZpZXcoKSwgMTAwKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy51cGRhdGluZ0VkaXRvciA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMub3V0cHV0SHRtbC5lbWl0KHRoaXMucXVpbGwuZ2V0U2VtYW50aWNIVE1MKCkpO1xyXG4gIH1cclxuXHJcbiAgZ2V0RWRpdG9yU2l6ZSgpOiB2b2lkIHtcclxuICAgIGxldCBlZGl0b3JGaWVsZEhlaWdodCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdrdi1lZGl0b3ItdG9vbGJhcicpPy5vZmZzZXRIZWlnaHQ7XHJcbiAgICBpZiAoZWRpdG9yRmllbGRIZWlnaHQpIHtcclxuICAgICAgdGhpcy5lZGl0b3JUb29sYmFySGVpZ2h0LnNldChgJHtlZGl0b3JGaWVsZEhlaWdodH1weGApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgb3BlblJlbGF0b3JpbygpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGlmICh0aGlzLmlzTG9hZGluZ1BkZigpKSByZXR1cm47XHJcblxyXG4gICAgY29uc3QgaHRtbENvbnRlbnQgPSB0aGlzLnF1aWxsLmdldFNlbWFudGljSFRNTCgpO1xyXG4gICAgY29uc3QgcmVsYXRvcmlvID0gdGhpcy5yZWxhdG9yaW8oKTtcclxuICAgIC8vIGNvbnN0IHRpcG9WaXN1YWxpemFjYW8gPSB0aGlzLnRpcG9WaXN1YWxpemFjYW8oKTtcclxuXHJcbiAgICBhd2FpdCB0aGlzLnBkZlNlcnZpY2Uub3BlblJlbGF0b3JpbyhodG1sQ29udGVudCwgcmVsYXRvcmlvLCAndmFsb3InKTtcclxuICB9XHJcblxyXG4gIC8vIE3DqXRvZG9zIHBhcmEgc2lzdGVtYSBkZSBtZW7Dp8O1ZXNcclxuICBoYW5kbGVNZW50aW9uKCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLnJlbGF0b3JpbygpKSByZXR1cm47XHJcblxyXG4gICAgY29uc3QgcmVzdWx0ID0gdGhpcy5tZW50aW9uU2VydmljZS5oYW5kbGVNZW50aW9uKHRoaXMucXVpbGwsIHRoaXMucmVsYXRvcmlvKCkhLnZhcmlhdmVpcyk7XHJcbiAgICB0aGlzLmZpbHRlcmVkVmFyaWFibGVzLnNldChyZXN1bHQuZmlsdGVyZWRWYXJpYWJsZXMpO1xyXG5cclxuICAgIGlmIChyZXN1bHQuc2hvdWxkU2hvd1BhbmVsICYmIHJlc3VsdC5tZW50aW9uQm91bmRzKSB7XHJcbiAgICAgIHRoaXMuc2hvd1ZhcmlhYmxlc1BhbmVsKHJlc3VsdC5tZW50aW9uQm91bmRzKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY2xvc2VWYXJpYWJsZXNQYW5lbCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzaG93VmFyaWFibGVzUGFuZWwoYm91bmRzOiB7IHRvcDogbnVtYmVyOyBsZWZ0OiBudW1iZXIgfSk6IHZvaWQge1xyXG4gICAgY29uc3QgYW5jaG9yRWwgPSB0aGlzLm1lbnRpb25BbmNob3IubmF0aXZlRWxlbWVudDtcclxuICAgIGFuY2hvckVsLnN0eWxlLnRvcCA9IGAke2JvdW5kcy50b3B9cHhgO1xyXG4gICAgYW5jaG9yRWwuc3R5bGUubGVmdCA9IGAke2JvdW5kcy5sZWZ0fXB4YDtcclxuICAgIHRoaXMub3BWYXJpYWJsZXMuc2hvdyhudWxsLCBhbmNob3JFbCk7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RWYXJpYWJsZUZyb21QYW5lbCh2YXJpYWJsZTogS3ZFZGl0b3JWYXJpYXZlbCk6IHZvaWQge1xyXG4gICAgdGhpcy5tZW50aW9uU2VydmljZS5pbnNlcnRWYXJpYWJsZSh0aGlzLnF1aWxsLCB2YXJpYWJsZSk7XHJcbiAgICB0aGlzLmNsb3NlVmFyaWFibGVzUGFuZWwoKTtcclxuICB9XHJcblxyXG4gIGNsb3NlVmFyaWFibGVzUGFuZWwoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5vcFZhcmlhYmxlcykge1xyXG4gICAgICB0aGlzLm9wVmFyaWFibGVzLmhpZGUoKTtcclxuICAgIH1cclxuICAgIHRoaXMubWVudGlvblNlcnZpY2UuY2xvc2VNZW50aW9uKCk7XHJcbiAgfVxyXG5cclxuICBzaG93SW5zdHJ1Y29lcygpOiB2b2lkIHtcclxuICAgIHRoaXMuZGlhbG9nU2VydmljZS5vcGVuKEt2SW5zdHJ1Y29lc1JlcG9ydENvbXBvbmVudCwge1xyXG4gICAgICBoZWFkZXI6ICdJbnN0cnXDp8O1ZXMnLFxyXG4gICAgICB3aWR0aDogJzQwJScsXHJcbiAgICAgIGhlaWdodDogJzMwJScsXHJcbiAgICAgIG1vZGFsOiB0cnVlLFxyXG4gICAgICBjbG9zYWJsZTogdHJ1ZSxcclxuICAgICAgZGF0YToge1xyXG4gICAgICAgIHRlbXBsYXRlOiB0aGlzLmluc3RydWNvZXNUZW1wbGF0ZSgpXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgY2xlYXJUZW1wbGF0ZSgpIHtcclxuICAgIC8vIExpbXBhIG8gdGVtcGxhdGUgZG8gZWRpdG9yXHJcbiAgICB0aGlzLmNsZWFyZWRUZW1wbGF0ZS5zZXQodHJ1ZSk7XHJcbiAgICB0aGlzLnNldFJlbGF0b3Jpb1BvcklkKDApO1xyXG4gICAgdGhpcy53cml0ZVZhbHVlKCcnKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXR1YWxpemFyUHJldmlldygpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5xdWlsbCkgcmV0dXJuO1xyXG5cclxuICAgIGxldCBjb250ZXVkb0h0bWwgPSB0aGlzLnF1aWxsLnJvb3QuaW5uZXJIVE1MO1xyXG5cclxuICAgIGNvbnRldWRvSHRtbCA9IHRoaXMuZGVjb2RpZmljYXJFbnRpZGFkZXNIdG1sKGNvbnRldWRvSHRtbCk7XHJcbiAgICBcclxuICAgIHRoaXMuaHRtbEVzcGVsaG8uc2V0KGNvbnRldWRvSHRtbCk7XHJcblxyXG4gICAgY29uc3QgY29udGV1ZG9Qcm9jZXNzYWRvID0gdGhpcy5wcm9jZXNzYXJDb250ZXVkb1ByZXZpZXcoY29udGV1ZG9IdG1sKTtcclxuICAgIHRoaXMucHJldmlld0NvbnRlbnQuc2V0KGNvbnRldWRvUHJvY2Vzc2Fkbyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGRlY29kaWZpY2FyRW50aWRhZGVzSHRtbCh0ZXh0OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgdGV4dGFyZWEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZXh0YXJlYScpO1xyXG4gICAgdGV4dGFyZWEuaW5uZXJIVE1MID0gdGV4dDtcclxuICAgIHJldHVybiB0ZXh0YXJlYS52YWx1ZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY29uZmlndXJhckh0bWxBdXRvQ29tcGxldGVUYWcoZGVsdGE6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKCFkZWx0YS5vcHMgfHwgZGVsdGEub3BzLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IHVsdGltb09wID0gZGVsdGEub3BzW2RlbHRhLm9wcy5sZW5ndGggLSAxXTtcclxuICAgIGlmICh1bHRpbW9PcC5pbnNlcnQgJiYgdHlwZW9mIHVsdGltb09wLmluc2VydCA9PT0gJ3N0cmluZycgJiYgdWx0aW1vT3AuaW5zZXJ0ID09PSAnPicpIHtcclxuICAgICAgY29uc3QgdGV4dG9BdHVhbCA9IHRoaXMucXVpbGwuZ2V0VGV4dCgpO1xyXG4gICAgICBjb25zdCBwb3NpY2FvQ3Vyc29yID0gdGhpcy5xdWlsbC5nZXRTZWxlY3Rpb24oKT8uaW5kZXggfHwgMDtcclxuXHJcbiAgICAgIGNvbnN0IHRleHRvQW50ZXNDdXJzb3IgPSB0ZXh0b0F0dWFsLnN1YnN0cmluZygwLCBwb3NpY2FvQ3Vyc29yKTtcclxuXHJcbiAgICAgIGNvbnN0IHJlZ2V4VGFnQWJlcnRhID0gLzwoXFx3KykoPzpcXHMrW14+XSopPyg/PCFcXC8pXFw+JC87XHJcbiAgICAgIGNvbnN0IHZlcmlmaWNhclRhZyA9IHRleHRvQW50ZXNDdXJzb3IubWF0Y2gocmVnZXhUYWdBYmVydGEpO1xyXG5cclxuICAgICAgaWYgKHZlcmlmaWNhclRhZykge1xyXG4gICAgICAgIGNvbnN0IHRhZ05hbWUgPSB2ZXJpZmljYXJUYWdbMV07XHJcblxyXG4gICAgICAgIGNvbnN0IHRhZ3NJbmxpbmUgPSBbJ2ltZycsICdicicsICdocicsICdpbnB1dCcsICdtZXRhJywgJ2xpbmsnLCAnYXJlYScsICdiYXNlJywgJ2NvbCcsICdlbWJlZCcsICdzb3VyY2UnLCAndHJhY2snLCAnd2JyJ107XHJcblxyXG4gICAgICAgIGlmICghdGFnc0lubGluZS5pbmNsdWRlcyh0YWdOYW1lLnRvTG93ZXJDYXNlKCkpKSB7XHJcbiAgICAgICAgICBjb25zdCB0ZXh0b0RlcG9pc0N1cnNvciA9IHRleHRvQXR1YWwuc3Vic3RyaW5nKHBvc2ljYW9DdXJzb3IpO1xyXG4gICAgICAgICAgY29uc3QgZmVjaGFyVGFnUmVnZXggPSBuZXcgUmVnRXhwKGBePFxcLyR7dGFnTmFtZX0+YCwgJ2knKTtcclxuXHJcbiAgICAgICAgICBpZiAoIWZlY2hhclRhZ1JlZ2V4LnRlc3QodGV4dG9EZXBvaXNDdXJzb3IpKSB7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRpbmdFZGl0b3IgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLnF1aWxsLmluc2VydFRleHQocG9zaWNhb0N1cnNvciwgYDwvJHt0YWdOYW1lfT5gLCAndXNlcicpO1xyXG5cclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5xdWlsbC5zZXRTZWxlY3Rpb24ocG9zaWNhb0N1cnNvciwgMCk7XHJcbiAgICAgICAgICAgICAgdGhpcy51cGRhdGluZ0VkaXRvciA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9LCAwKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgcHJvY2Vzc2FyQ29udGV1ZG9QcmV2aWV3KGNvbnRlbnQ6IHN0cmluZyk6IFNhZmVIdG1sIHtcclxuICAgIGlmICghY29udGVudCB8fCBjb250ZW50ID09PSAnXFxuJykge1xyXG4gICAgICByZXR1cm4gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoJzxwIGNsYXNzPVwidGV4dC1ncmF5LTQwMCB0ZXh0LXNtXCI+TyBjb250ZcO6ZG8gYXBhcmVjZXLDoSBhcXVpLi4uPC9wPicpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHN0eWxlUmVnZXggPSAvPHN0eWxlW14+XSo+KFtcXHNcXFNdKj8pPFxcL3N0eWxlPi9naTtcclxuICAgIGNvbnN0IHN0eWxlczogc3RyaW5nW10gPSBbXTtcclxuICAgIGxldCBjb250ZXVkb1Byb2Nlc3NhZG8gPSBjb250ZW50O1xyXG5cclxuICAgIGxldCBtYXRjaDtcclxuICAgIHdoaWxlICgobWF0Y2ggPSBzdHlsZVJlZ2V4LmV4ZWMoY29udGVudCkpICE9PSBudWxsKSB7XHJcbiAgICAgIHN0eWxlcy5wdXNoKG1hdGNoWzFdKTtcclxuICAgIH1cclxuXHJcbiAgICBjb250ZXVkb1Byb2Nlc3NhZG8gPSB0aGlzLnByb2Nlc3NhclZhcmlhdmVpc0NvbUh0bWwoY29udGV1ZG9Qcm9jZXNzYWRvKTtcclxuICAgIGNvbnRldWRvUHJvY2Vzc2FkbyA9IHRoaXMubWFudGVyUXVlYnJhc0xpbmhhSHRtbChjb250ZXVkb1Byb2Nlc3NhZG8pO1xyXG5cclxuICAgIGxldCBjb250ZXVkb0ZpbmFsID0gJzxkaXYgY2xhc3M9XCJrdi1lZGl0b3ItcHJldmlldy13cmFwcGVyXCI+JztcclxuXHJcbiAgICBpZiAoc3R5bGVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgY29udGV1ZG9GaW5hbCArPSAnPHN0eWxlPicgKyBzdHlsZXMuam9pbignXFxuJykgKyAnPC9zdHlsZT4nO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnRldWRvRmluYWwgKz0gY29udGV1ZG9Qcm9jZXNzYWRvO1xyXG4gICAgY29udGV1ZG9GaW5hbCArPSAnPC9kaXY+JztcclxuXHJcbiAgICByZXR1cm4gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoY29udGV1ZG9GaW5hbCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG1hbnRlclF1ZWJyYXNMaW5oYUh0bWwoaHRtbDogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBodG1sO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc0h0bWxTdHJpbmcoc3RyOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIGlmICghc3RyIHx8IHR5cGVvZiBzdHIgIT09ICdzdHJpbmcnKSByZXR1cm4gZmFsc2U7XHJcbiAgICBcclxuICAgIGNvbnN0IHRyaW1tZWQgPSBzdHIudHJpbSgpO1xyXG4gICAgXHJcbiAgICBpZiAoIXRyaW1tZWQuc3RhcnRzV2l0aCgnPCcpIHx8ICF0cmltbWVkLmVuZHNXaXRoKCc+JykpIHJldHVybiBmYWxzZTtcclxuICAgIFxyXG4gICAgY29uc3QgaHRtbFRhZ1JlZ2V4ID0gLzxcXC8/W2Etel1bXFxzXFxTXSo/Pi9pO1xyXG4gICAgY29uc3QgaGFzT3BlbmluZ1RhZyA9IC88W2Etel1bXFxzXFxTXSo/Pi9pLnRlc3QodHJpbW1lZCk7XHJcbiAgICBjb25zdCBoYXNDbG9zaW5nVGFnID0gLzxcXC9bYS16XVtcXHNcXFNdKj8+L2kudGVzdCh0cmltbWVkKTtcclxuICAgIFxyXG4gICAgcmV0dXJuIGh0bWxUYWdSZWdleC50ZXN0KHRyaW1tZWQpICYmIChoYXNPcGVuaW5nVGFnIHx8IGhhc0Nsb3NpbmdUYWcpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwcm9jZXNzYXJWYXJpYXZlaXNDb21IdG1sKGNvbnRlbnQ6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBpZiAoIXRoaXMucmVsYXRvcmlvKCkgfHwgIXRoaXMucmVsYXRvcmlvKCkhLnZhcmlhdmVpcykge1xyXG4gICAgICByZXR1cm4gY29udGVudDtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgY29udGV1ZG9Qcm9jZXNzYWRvID0gY29udGVudDtcclxuICAgIGNvbnN0IHZhcmlhdmVpcyA9IHRoaXMucmVsYXRvcmlvKCkhLnZhcmlhdmVpcztcclxuXHJcbiAgICB2YXJpYXZlaXMuZm9yRWFjaCh2YXJpYXZlbCA9PiB7XHJcbiAgICAgIGNvbnN0IHBsYWNlaG9sZGVySWQgPSBgeyR7dmFyaWF2ZWwuaWR9fWA7XHJcbiAgICAgIFxyXG4gICAgICAvL3BhcmEgYnVzY2FyIG91dHJvcyBwYWRyw7VlcyBkZSBodG1sIHByYSB2YXJpw6F2ZWxcclxuICAgICAgLy9vYnM6IHBhZHJvbml6YXIgbyB1c28gZGUgbWVuw6fDtWVzIGNvbSBzcGFucyBkYXRhLW1lbnRpb25cclxuICAgICAgY29uc3QgcGF0dGVybnMgPSBbXHJcbiAgICAgICAgYDxzcGFuW14+XSpjbGFzcz1cIlteXCJdKm1lbnRpb25bXlwiXSpcIltePl0qPlxcXFxzKiR7dGhpcy5lc2NhcGVSZWdleCh2YXJpYXZlbC5kZXNjcmljYW8pfVxcXFxzKjwvc3Bhbj5gLFxyXG4gICAgICAgIGA8c3BhbltePl0qZGF0YS1tZW50aW9uW14+XSo+XFxcXHMqJHt0aGlzLmVzY2FwZVJlZ2V4KHZhcmlhdmVsLmRlc2NyaWNhbyl9XFxcXHMqPC9zcGFuPmAsXHJcbiAgICAgICAgYD5cXFxccyoke3RoaXMuZXNjYXBlUmVnZXgodmFyaWF2ZWwuZGVzY3JpY2FvKX1cXFxccyo8YCxcclxuICAgICAgICBgPFtePl0rPlxcXFxzKiR7dGhpcy5lc2NhcGVSZWdleCh2YXJpYXZlbC5kZXNjcmljYW8pfVxcXFxzKjwvW14+XSs+YFxyXG4gICAgICBdO1xyXG4gICAgICBcclxuICAgICAgaWYgKGNvbnRldWRvUHJvY2Vzc2Fkby5pbmNsdWRlcyhwbGFjZWhvbGRlcklkKSkge1xyXG4gICAgICAgIGlmICh0aGlzLmlzSHRtbFN0cmluZyh2YXJpYXZlbC52YWx1ZSkpIHtcclxuICAgICAgICAgIGNvbnRldWRvUHJvY2Vzc2FkbyA9IGNvbnRldWRvUHJvY2Vzc2Fkby5zcGxpdChwbGFjZWhvbGRlcklkKS5qb2luKHZhcmlhdmVsLnZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgXHJcbiAgICAgIGxldCBzdWJzdGl0dWlkbyA9IGZhbHNlO1xyXG4gICAgICBmb3IgKGNvbnN0IHBhdHRlcm4gb2YgcGF0dGVybnMpIHtcclxuICAgICAgICBjb25zdCByZWdleE1lbnRpb24gPSBuZXcgUmVnRXhwKHBhdHRlcm4sICdnaScpO1xyXG4gICAgICAgIGlmIChyZWdleE1lbnRpb24udGVzdChjb250ZXVkb1Byb2Nlc3NhZG8pKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5pc0h0bWxTdHJpbmcodmFyaWF2ZWwudmFsdWUpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHJlcGxhY2VtZW50ID0gcGF0dGVybi5pbmNsdWRlcygnPicpICYmIHBhdHRlcm4uaW5jbHVkZXMoJzwnKSBcclxuICAgICAgICAgICAgICA/IHZhcmlhdmVsLnZhbHVlIFxyXG4gICAgICAgICAgICAgIDogYD4ke3ZhcmlhdmVsLnZhbHVlfTxgO1xyXG4gICAgICAgICAgICBjb250ZXVkb1Byb2Nlc3NhZG8gPSBjb250ZXVkb1Byb2Nlc3NhZG8ucmVwbGFjZShyZWdleE1lbnRpb24sIFxyXG4gICAgICAgICAgICAgIHBhdHRlcm4uc3RhcnRzV2l0aCgnPicpID8gYD4ke3ZhcmlhdmVsLnZhbHVlfTxgIDogdmFyaWF2ZWwudmFsdWVcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnRldWRvUHJvY2Vzc2FkbyA9IGNvbnRldWRvUHJvY2Vzc2Fkby5yZXBsYWNlKHJlZ2V4TWVudGlvbiwgXHJcbiAgICAgICAgICAgICAgcGF0dGVybi5zdGFydHNXaXRoKCc+JykgPyBgPiR7dmFyaWF2ZWwudmFsdWV9PGAgOiB2YXJpYXZlbC52YWx1ZVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgc3Vic3RpdHVpZG8gPSB0cnVlO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgICBpZiAoIXN1YnN0aXR1aWRvICYmIGNvbnRldWRvUHJvY2Vzc2Fkby5pbmNsdWRlcyh2YXJpYXZlbC5kZXNjcmljYW8pKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuaXNIdG1sU3RyaW5nKHZhcmlhdmVsLnZhbHVlKSkge1xyXG4gICAgICAgICAgY29udGV1ZG9Qcm9jZXNzYWRvID0gY29udGV1ZG9Qcm9jZXNzYWRvLnNwbGl0KHZhcmlhdmVsLmRlc2NyaWNhbykuam9pbih2YXJpYXZlbC52YWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gY29udGV1ZG9Qcm9jZXNzYWRvO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBlc2NhcGVSZWdleChzdHI6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gc3RyLnJlcGxhY2UoL1suKis/XiR7fSgpfFtcXF1cXFxcXS9nLCAnXFxcXCQmJyk7XHJcbiAgfVxyXG5cclxuICBnZXQgZ2V0UHJldmlld0NvbnRlbnQoKTogU2FmZUh0bWwge1xyXG4gICAgcmV0dXJuIHRoaXMucHJldmlld0NvbnRlbnQoKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdlxyXG4gIGNsYXNzPVwia3YtZWRpdG9yLWNvbnRhaW5lciBoLWZ1bGwgdy1mdWxsIG1heC1oLWZ1bGwgZmxleCBmbGV4LWNvbHVtbiBvdmVyZmxvdy1oaWRkZW5cIlxyXG4+XHJcbiAgPGRpdlxyXG4gICAgI2VkaXRvclxyXG4gICAgaWQ9XCJrdi1lZGl0b3ItdG9vbGJhclwiXHJcbiAgICBbbmdDbGFzc109XCJ7ICdlcnJvci1ib3JkZXItdG9vbGJhcic6IGhhc0NvbnRyb2xFcnJvcigpIH1cIlxyXG4gICAgY2xhc3M9XCJ7eyBzaG93SGVhZGVyKCkgPyAnZmxleCcgOiAnaGlkZGVuJyB9fSBmbGV4LWNvbHVtbiBmbGV4LWluaXRpYWxcIlxyXG4gID5cclxuICAgIEBpZihyZWxhdG9yaW9zKCkubGVuZ3RoID4gMCkge1xyXG4gICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cganVzdGlmeS1jb250ZW50LWJldHdlZW4ge3tyZWFkb25seSgpICYmICdwb2ludGVyLWV2ZW50cy1ub25lIG9wYWNpdHktOTAnfX1cIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgZ2FwLTJcIj5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cImZsZXggZmxleC1yb3cgYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yIHAtMiBib3JkZXItcm91bmQtbGcgYm9yZGVyLTEgYm9yZGVyLWdyYXktMjAwIGhvdmVyOnNoYWRvdy0xIGhvdmVyOmJnLWdyYXktMTAwIGN1cnNvci1wb2ludGVyIHRyYW5zaXRpb24tYWxsIHRyYW5zaXRpb24tZHVyYXRpb24tMzAwXCJcclxuICAgICAgICAgIChjbGljayk9XCJvcC50b2dnbGUoJGV2ZW50KVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIHRleHQtbGcgdGV4dC1ncmVlbi02MDAgZm9udC1tZWRpdW1cIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICBjb250cmFjdFxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJmb250LXNlbWlib2xkIHRleHQteHMgdGV4dC1ncmF5LTYwMFwiPnt7XHJcbiAgICAgICAgICAgICFjbGVhcmVkVGVtcGxhdGUoKVxyXG4gICAgICAgICAgICAgID8gcmVsYXRvcmlvKCk/LmxhYmVsIHx8IGxhYmVsRW1wdHlEcm9wZG93bigpXHJcbiAgICAgICAgICAgICAgOiBsYWJlbEVtcHR5RHJvcGRvd24oKVxyXG4gICAgICAgICAgfX08L3NwYW4+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQgdGV4dC1sZ1wiPlxyXG4gICAgICAgICAgICBrZXlib2FyZF9hcnJvd19kb3duXHJcbiAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIEBpZighY2xlYXJlZFRlbXBsYXRlKCkpIHtcclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cImZsZXggZmxleC1yb3cgYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yIHAtMiBib3JkZXItcm91bmQtbGcgYm9yZGVyLTEgYm9yZGVyLWdyYXktMjAwIGhvdmVyOnNoYWRvdy0xIGhvdmVyOmJnLWdyYXktMTAwIGN1cnNvci1wb2ludGVyIHRyYW5zaXRpb24tYWxsIHRyYW5zaXRpb24tZHVyYXRpb24tMzAwXCJcclxuICAgICAgICAgIChjbGljayk9XCJjbGVhclRlbXBsYXRlKClcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCB0ZXh0LWxnIHRleHQtb3JhbmdlLTYwMCBmb250LW1lZGl1bVwiXHJcbiAgICAgICAgICAgIFtwVG9vbHRpcF09XCInTGltcGFyIFRlbXBsYXRlJ1wiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIGxheWVyc19jbGVhclxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMiBwLTIgYm9yZGVyLXJvdW5kLWxnIGJvcmRlci0xIGJvcmRlci1ncmF5LTIwMCBob3ZlcjpzaGFkb3ctMSBob3ZlcjpiZy1ncmF5LTEwMCBjdXJzb3ItcG9pbnRlciB0cmFuc2l0aW9uLWFsbCB0cmFuc2l0aW9uLWR1cmF0aW9uLTMwMFwiXHJcbiAgICAgICAgICAoY2xpY2spPVwic2hvd0luc3RydWNvZXMoKVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIHRleHQtbGcgdGV4dC1ibHVlLTYwMCBmb250LW1lZGl1bVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIGluZm9cclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9udC1zZW1pYm9sZCB0ZXh0LXhzIHRleHQtZ3JheS02MDBcIj5JbnN0cnXDp8O1ZXM8L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPCEtLSBAaWYocHJpbnRCdXR0b24oKSkge1xyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMiBwLTIgYm9yZGVyLXJvdW5kLWxnIGJvcmRlci0xIGJvcmRlci1ncmF5LTIwMCBob3ZlcjpzaGFkb3ctMSBob3ZlcjpiZy1ncmF5LTEwMCBjdXJzb3ItcG9pbnRlciB0cmFuc2l0aW9uLWFsbCB0cmFuc2l0aW9uLWR1cmF0aW9uLTMwMFwiXHJcbiAgICAgICAgKGNsaWNrKT1cIm9wZW5SZWxhdG9yaW8oKVwiXHJcbiAgICAgID5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQgdGV4dC1sZyBmb250LW1lZGl1bVwiPlxyXG4gICAgICAgICAgcHJpbnRcclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJmb250LXNlbWlib2xkIHRleHQteHMgdGV4dC1ncmF5LTYwMFwiPkltcHJpbWlyPC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgfSAtLT5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxwLWRpdmlkZXIgY2xhc3M9XCJ3LWZ1bGxcIj48L3AtZGl2aWRlcj5cclxuXHJcbiAgICB9XHJcblxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cImZsZXggZmxleC1yb3cgYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIHctZnVsbCBmbGV4LWluaXRpYWxcIlxyXG4gICAgPlxyXG4gICAgICBAaWYoaXNMb2FkaW5nKCkpIHtcclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMyB3LWZ1bGxcIj5cclxuICAgICAgICA8cC1za2VsZXRvblxyXG4gICAgICAgICAgc3R5bGVDbGFzcz1cInctNnJlbVwiXHJcbiAgICAgICAgICBbc3R5bGVdPVwieyBoZWlnaHQ6ICcycmVtJyB9XCJcclxuICAgICAgICA+PC9wLXNrZWxldG9uPlxyXG5cclxuICAgICAgICA8cC1za2VsZXRvblxyXG4gICAgICAgICAgc3R5bGVDbGFzcz1cInctNnJlbVwiXHJcbiAgICAgICAgICBbc3R5bGVdPVwieyBoZWlnaHQ6ICcycmVtJyB9XCJcclxuICAgICAgICA+PC9wLXNrZWxldG9uPlxyXG5cclxuICAgICAgICA8cC1za2VsZXRvblxyXG4gICAgICAgICAgc3R5bGVDbGFzcz1cInctNnJlbVwiXHJcbiAgICAgICAgICBbc3R5bGVdPVwieyBoZWlnaHQ6ICcycmVtJyB9XCJcclxuICAgICAgICA+PC9wLXNrZWxldG9uPlxyXG5cclxuICAgICAgICA8cC1za2VsZXRvblxyXG4gICAgICAgICAgc3R5bGVDbGFzcz1cInctNnJlbVwiXHJcbiAgICAgICAgICBbc3R5bGVdPVwieyBoZWlnaHQ6ICcycmVtJyB9XCJcclxuICAgICAgICA+PC9wLXNrZWxldG9uPlxyXG5cclxuICAgICAgICA8cC1za2VsZXRvblxyXG4gICAgICAgICAgc3R5bGVDbGFzcz1cInctNnJlbVwiXHJcbiAgICAgICAgICBbc3R5bGVdPVwieyBoZWlnaHQ6ICcycmVtJyB9XCJcclxuICAgICAgICA+PC9wLXNrZWxldG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgfVxyXG5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwiZmxleC1yb3cgYWxpZ24taXRlbXMtY2VudGVyIGZsZXgtd3JhcCBnYXAtMiB7e1xyXG4gICAgICAgICAgaXNMb2FkaW5nKCkgPyAnaGlkZGVuJyA6ICdmbGV4J1xyXG4gICAgICAgIH19IHctZnVsbFwiXHJcbiAgICAgID5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cInFsLWZvcm1hdHMgYm9yZGVyLXJvdW5kLW1kXCI+XHJcbiAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwicWwtZm9udFwiPlxyXG4gICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwicm9ib3RvXCI+Um9ib3RvPC9vcHRpb24+XHJcbiAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJhcmlhbFwiPkFyaWFsPC9vcHRpb24+XHJcbiAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJ0aW1lcy1uZXctcm9tYW5cIj5UaW1lcyBOZXcgUm9tYW48L29wdGlvbj5cclxuICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIm1vbm9zcGFjZVwiPk1vbm9zcGFjZTwvb3B0aW9uPlxyXG4gICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiaW50ZXJcIj5JbnRlcjwvb3B0aW9uPlxyXG4gICAgICAgICAgICA8b3B0aW9uIHNlbGVjdGVkPlNhbnMgU2VyaWY8L29wdGlvbj5cclxuICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cInNlcmlmXCI+U2VyaWY8L29wdGlvbj5cclxuICAgICAgICAgIDwvc2VsZWN0PlxyXG5cclxuICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJxbC1oZWFkZXJcIj5cclxuICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIjFcIj5UaXR1bG88L29wdGlvbj5cclxuICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIjJcIj5TdWJ0aXR1bG88L29wdGlvbj5cclxuICAgICAgICAgICAgPG9wdGlvbiBzZWxlY3RlZD5Ob3JtYWw8L29wdGlvbj5cclxuICAgICAgICAgIDwvc2VsZWN0PlxyXG5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwicWwtZm9ybWF0LWdyb3VwXCI+XHJcbiAgICAgICAgICAgIDxzZWxlY3QgdGl0bGU9XCJTaXplXCIgY2xhc3M9XCJxbC1zaXplXCI+XHJcbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIjE1cHhcIj4xNXB4PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIjIwcHhcIj4yMHB4PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIjMwcHhcIj4zMHB4PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIjQwcHhcIj40MHB4PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIjUwcHhcIj41MHB4PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIjcwcHhcIj43MHB4PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIjkwcHhcIj45MHB4PC9vcHRpb24+XHJcbiAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDwvc3Bhbj5cclxuXHJcbiAgICAgICAgPHAtZGl2aWRlciBsYXlvdXQ9XCJ2ZXJ0aWNhbFwiPjwvcC1kaXZpZGVyPlxyXG5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cInFsLWZvcm1hdHMgYm9yZGVyLXJvdW5kLW1kXCI+XHJcbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwicWwtYm9sZFwiPjwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInFsLWl0YWxpY1wiPjwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInFsLXVuZGVybGluZVwiPjwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInFsLXN0cmlrZVwiPjwvYnV0dG9uPlxyXG4gICAgICAgIDwvc3Bhbj5cclxuXHJcbiAgICAgICAgPHAtZGl2aWRlciBsYXlvdXQ9XCJ2ZXJ0aWNhbFwiPjwvcC1kaXZpZGVyPlxyXG5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cInFsLWZvcm1hdHMgYm9yZGVyLXJvdW5kLW1kXCI+XHJcbiAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwicWwtY29sb3JcIj48L3NlbGVjdD5cclxuICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJxbC1iYWNrZ3JvdW5kXCI+PC9zZWxlY3Q+XHJcbiAgICAgICAgPC9zcGFuPlxyXG5cclxuICAgICAgICBAaWYodHJ1ZSkge1xyXG4gICAgICAgIDwhLS0gPHAtZGl2aWRlciBsYXlvdXQ9XCJ2ZXJ0aWNhbFwiPjwvcC1kaXZpZGVyPlxyXG5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJxbC1mb3JtYXRzIGJvcmRlci1yb3VuZC1tZFwiPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJxbC1oZWFkZXJcIiB2YWx1ZT1cIjFcIj48L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwicWwtaGVhZGVyXCIgdmFsdWU9XCIyXCI+PC9idXR0b24+XHJcbiAgICAgIDwvc3Bhbj4gLS0+XHJcblxyXG4gICAgICAgIDxwLWRpdmlkZXIgbGF5b3V0PVwidmVydGljYWxcIj48L3AtZGl2aWRlcj5cclxuXHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJxbC1mb3JtYXRzIGJvcmRlci1yb3VuZC1tZFwiPlxyXG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInFsLWxpbmtcIj48L2J1dHRvbj5cclxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJxbC1pbWFnZVwiPjwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInFsLXZpZGVvXCI+PC9idXR0b24+XHJcbiAgICAgICAgPC9zcGFuPlxyXG5cclxuICAgICAgICA8cC1kaXZpZGVyIGxheW91dD1cInZlcnRpY2FsXCI+PC9wLWRpdmlkZXI+XHJcblxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwicWwtZm9ybWF0cyBib3JkZXItcm91bmQtbWRcIj5cclxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJxbC1saXN0XCIgdmFsdWU9XCJvcmRlcmVkXCI+PC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwicWwtbGlzdFwiIHZhbHVlPVwiYnVsbGV0XCI+PC9idXR0b24+XHJcbiAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwicWwtYWxpZ25cIj48L3NlbGVjdD5cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgfVxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxkaXZcclxuICAgIHN0eWxlPVwiaGVpZ2h0OiAzcHg7IGJvcmRlci10b3A6IG5vbmU7IGJvcmRlci1ib3R0b206IG5vbmVcIlxyXG4gICAgW3N0eWxlLmJvcmRlclJpZ2h0XT1cInNob3dIZWFkZXIoKSA/ICcxcHggc29saWQgI2U1ZTdlYicgOiAnbm9uZSdcIlxyXG4gICAgW3N0eWxlLmJvcmRlckxlZnRdPVwic2hvd0hlYWRlcigpID8gJzFweCBzb2xpZCAjZTVlN2ViJyA6ICdub25lJ1wiXHJcbiAgPlxyXG4gICAgQGlmKGlzTG9hZGluZ1BkZigpKSB7XHJcbiAgICA8cC1wcm9ncmVzc0JhciBtb2RlPVwiaW5kZXRlcm1pbmF0ZVwiIFtzdHlsZV09XCJ7IGhlaWdodDogJzNweCcgfVwiIC8+XHJcbiAgICB9XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGZsZXgtMSBnYXAtMCBvdmVyZmxvdy1hdXRvXCI+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGlkPVwia3YtZWRpdG9yXCJcclxuICAgICAgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGZsZXgtMSBzY3JvbGxzdHlsZVwiXHJcbiAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAnZXJyb3ItYm9yZGVyJzogaGFzQ29udHJvbEVycm9yKCksXHJcbiAgICAgICAgJ3BvaW50ZXItZXZlbnRzLW5vbmUgb3BhY2l0eS02MCc6IGlzTG9hZGluZ1BkZigpXHJcbiAgICAgIH1cIlxyXG4gICAgICBbc3R5bGUuYm9yZGVyVG9wXT1cInNob3dIZWFkZXIoKSA/ICdub25lJyA6ICcxcHggc29saWQgI2U1ZTdlYidcIlxyXG4gICAgICBbc3R5bGUuYm9yZGVyUmlnaHRdPVwiZW5hYmxlUHJldmlld01vZGUoKSA/ICdub25lJyA6ICcxcHggc29saWQgI2U1ZTdlYidcIlxyXG4gICAgPjwvZGl2PlxyXG5cclxuICAgIEBpZihlbmFibGVQcmV2aWV3TW9kZSgpKSB7XHJcbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbHVtbiBmbGV4LTFcIj5cclxuICAgICAgPGRpdiBcclxuICAgICAgICBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yIHB4LTMgcHktMlwiIFxyXG4gICAgICAgIFtzdHlsZS5ib3JkZXJSaWdodF09XCInMXB4IHNvbGlkICNlNWU3ZWInXCJcclxuICAgICAgICBbc3R5bGUuYm9yZGVyTGVmdF09XCInMXB4IHNvbGlkICNlNWU3ZWInXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCB0ZXh0LWJsdWUtNjAwIHRleHQtbGdcIj52aXNpYmlsaXR5PC9zcGFuPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZm9udC1zZW1pYm9sZCB0ZXh0LWdyYXktNzAwIHRleHQtc21cIj5QcmV2aWV3PC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgXHJcbiAgICAgIDxkaXZcclxuICAgICAgICBpZD1cImt2LWVkaXRvci1wcmV2aWV3XCJcclxuICAgICAgICBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZmxleC0xIHNjcm9sbHN0eWxlXCJcclxuICAgICAgICBbaW5uZXJIVE1MXT1cImdldFByZXZpZXdDb250ZW50XCJcclxuICAgICAgICBbc3R5bGUuYm9yZGVyXT1cIicxcHggc29saWQgI2U1ZTdlYidcIlxyXG4gICAgICA+PC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIH1cclxuICA8L2Rpdj5cclxuXHJcbjwvZGl2PlxyXG48a3YtZXJyb3IgW2hhc0Vycm9yXT1cImhhc0NvbnRyb2xFcnJvcigpXCI+e3sgZXJyb01lc3NhZ2UoKSB9fTwva3YtZXJyb3I+XHJcblxyXG48IS0tIDxsaW5rIGhyZWY9XCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL3F1aWxsQDIuMC4yL2Rpc3QvcXVpbGwuc25vdy5jc3NcIiByZWw9XCJzdHlsZXNoZWV0XCIgLz4gLS0+XHJcbjxsaW5rIGhyZWY9XCJodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2Nzcz9mYW1pbHk9Um9ib3RvXCIgcmVsPVwic3R5bGVzaGVldFwiIC8+XHJcbjxzY3JpcHQgc3JjPVwiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9xdWlsbEAyLjAuMi9kaXN0L3F1aWxsLmpzXCI+PC9zY3JpcHQ+XHJcbjxzY3JpcHQgc3JjPVwiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9rYXRleEAwLjE2LjkvZGlzdC9rYXRleC5taW4uanNcIj48L3NjcmlwdD5cclxuXHJcbjxsaW5rXHJcbiAgcmVsPVwic3R5bGVzaGVldFwiXHJcbiAgaHJlZj1cImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vcXVpbGxAMi4wLjIvZGlzdC9xdWlsbC5idWJibGUuY3NzXCJcclxuLz5cclxuPGxpbmtcclxuICByZWw9XCJzdHlsZXNoZWV0XCJcclxuICBocmVmPVwiaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvaGlnaGxpZ2h0LmpzLzExLjkuMC9zdHlsZXMvYXRvbS1vbmUtZGFyay5taW4uY3NzXCJcclxuLz5cclxuPGxpbmtcclxuICByZWw9XCJzdHlsZXNoZWV0XCJcclxuICBocmVmPVwiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9rYXRleEAwLjE2LjkvZGlzdC9rYXRleC5taW4uY3NzXCJcclxuLz5cclxuXHJcbjxwLW92ZXJsYXlQYW5lbCAjb3Agc3R5bGVDbGFzcz1cIm92ZXJmbG93LWhpZGRlblwiPlxyXG4gIDxkaXZcclxuICAgIGNsYXNzPVwiZ3JpZCBtLTAgZ2FwLTIgcC0yIG1heC13LTIwcmVtIG92ZXJmbG93LXktYXV0byBzY3JvbGxzdHlsZVwiXHJcbiAgICBzdHlsZT1cIm1heC1oZWlnaHQ6IDE2cmVtXCJcclxuICA+XHJcbiAgICBAZm9yKGl0ZW0gb2YgcmVsYXRvcmlvcygpOyB0cmFjayAkaW5kZXgpIHtcclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJjb2wtMTIgY3Vyc29yLXBvaW50ZXIgaG92ZXI6YmctZ3JheS0xMDAgdHJhbnNpdGlvbi1jb2xvcnMgdHJhbnNpdGlvbi1kdXJhdGlvbi0yMDAgYm9yZGVyLXJvdW5kLWxnIHNoYWRvdy0yIGZsZXggZmxleC1jb2x1bW4gZ2FwLTJcIlxyXG4gICAgICAoY2xpY2spPVwic2V0UmVsYXRvcmlvKGl0ZW0pXCJcclxuICAgID5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwiZmxleCBmbGV4LXJvdyBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTIganVzdGlmeS1jb250ZW50LWJldHdlZW5cIlxyXG4gICAgICA+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXNtIGZvbnQtbWVkaXVtIHctZnVsbFwiPnt7IGl0ZW0ubGFiZWwgfX08L3NwYW4+XHJcblxyXG4gICAgICAgIDxrdi10YWdzXHJcbiAgICAgICAgICBjbGFzcz1cInRyYW5zaXRpb24tb3BhY2l0eSB0cmFuc2l0aW9uLWR1cmF0aW9uLTMwMCB7e1xyXG4gICAgICAgICAgICBpdGVtPy5pZCA9PSBpZFJlbGF0b3Jpb1NlbGVjdGVkKCkgPyAnb3BhY2l0eS0xMDAnIDogJ29wYWNpdHktMCdcclxuICAgICAgICAgIH19XCJcclxuICAgICAgICAgIFt0YWdzXT1cIlt7IGxhYmVsOiAnU2VsZWNpb25hZG8nLCBzZXZlcml0eTogJ3ByaW1hcnknIH1dXCJcclxuICAgICAgICA+PC9rdi10YWdzPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXhzIHRleHQtZ3JheS01MDBcIj57eyBpdGVtLmRlc2NyaWNhbyB9fTwvc3Bhbj5cclxuICAgIDwvZGl2PlxyXG4gICAgfVxyXG4gIDwvZGl2PlxyXG48L3Atb3ZlcmxheVBhbmVsPlxyXG5cclxuPGRpdiBjbGFzcz1cImt2LWVkaXRvci1jb250YWluZXIgZmxleCBmbGV4LWNvbHVtbiBvdmVyZmxvdy1oaWRkZW4gcmVsYXRpdmVcIj5cclxuICA8ZGl2XHJcbiAgICAjbWVudGlvbkFuY2hvclxyXG4gICAgc3R5bGU9XCJwb3NpdGlvbjogZml4ZWQ7IHdpZHRoOiAxcHg7IGhlaWdodDogMXB4OyBvcGFjaXR5OiAwXCJcclxuICA+PC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPHAtb3ZlcmxheVBhbmVsXHJcbiAgI29wVmFyaWFibGVzXHJcbiAgW2FwcGVuZFRvXT1cIidib2R5J1wiXHJcbiAgKG9uSGlkZSk9XCJjbG9zZVZhcmlhYmxlc1BhbmVsKClcIlxyXG4+XHJcbiAgPGRpdlxyXG4gICAgY2xhc3M9XCJmbGV4IGZsZXgtY29sdW1uIGdhcC0xIHAtMSBvdmVyZmxvdy15LWF1dG8gc2Nyb2xsLXZpcnR1YWwgYm9yZGVyLXJvdW5kLWxnXCJcclxuICAgIHN0eWxlPVwibWF4LWhlaWdodDogMjUwcHg7IG1pbi13aWR0aDogMjUwcHg7IGJhY2tncm91bmQtY29sb3I6ICMzMzMzMzNcIlxyXG4gID5cclxuICAgIEBmb3IodmFyaWFibGUgb2YgZmlsdGVyZWRWYXJpYWJsZXMoKTsgdHJhY2sgdmFyaWFibGUuaWQpIHtcclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJwLTIgY3Vyc29yLXBvaW50ZXIgdHJhbnNpdGlvbi1jb2xvcnMgdHJhbnNpdGlvbi1kdXJhdGlvbi0yMDAgYm9yZGVyLXJvdW5kLWxnIHRleHQtc20gdGV4dC13aGl0ZSBvcHRpb24tZHJvcGRvd25cIlxyXG4gICAgICAoY2xpY2spPVwic2VsZWN0VmFyaWFibGVGcm9tUGFuZWwodmFyaWFibGUpXCJcclxuICAgID5cclxuICAgICAge3sgdmFyaWFibGUuZGVzY3JpY2FvIH19IChcclxuICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWdyYXktNDAwXCI+e3sgdmFyaWFibGUudmFsdWUgfX08L3NwYW4+IClcclxuICAgIDwvZGl2PlxyXG4gICAgfSBAZW1wdHkge1xyXG4gICAgPGRpdiBjbGFzcz1cInAtMiB0ZXh0LXNtIHRleHQtZ3JheS01MDBcIj5OZW5odW1hIHZhcmnDoXZlbCBlbmNvbnRyYWRhLjwvZGl2PlxyXG4gICAgfVxyXG4gIDwvZGl2PlxyXG48L3Atb3ZlcmxheVBhbmVsPlxyXG4iXX0=
|
package/esm2022/lib/components/kv-inputs/kv-tree-multi-select/kv-tree-multi-select.component.mjs
CHANGED
|
@@ -43,11 +43,11 @@ export class KvTreeMultiSelectComponent extends BaseComponentMultiSelect {
|
|
|
43
43
|
this.handleChips();
|
|
44
44
|
}
|
|
45
45
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvTreeMultiSelectComponent, deps: [{ token: i1.ComponentService }, { token: i2.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
46
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.8", type: KvTreeMultiSelectComponent, selector: "kv-tree-multi-select", inputs: { appendTo: { classPropertyName: "appendTo", publicName: "appendTo", isSignal: false, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: false, isRequired: false, transformFunction: null }, itemTemplates: { classPropertyName: "itemTemplates", publicName: "itemTemplates", isSignal: false, isRequired: false, transformFunction: null }, propagateSelectionDown: { classPropertyName: "propagateSelectionDown", publicName: "propagateSelectionDown", isSignal: true, isRequired: false, transformFunction: null }, propagateSelectionUp: { classPropertyName: "propagateSelectionUp", publicName: "propagateSelectionUp", isSignal: true, isRequired: false, transformFunction: null } }, providers: ComponentProviders(KvTreeMultiSelectComponent), usesInheritance: true, ngImport: i0, template: "<span>\r\n <kv-label\r\n [componentId]=\"componentId\"\r\n [label]=\"label && label + (showAsterisk ? '*' : '')\"\r\n />\r\n\r\n <p-treeSelect\r\n inputId=\"tree-multi-select\"\r\n [class]=\"baseInputClass\"\r\n [disabled]=\"disabled\"\r\n [options]=\"options\"\r\n [filter]=\"filter\"\r\n [showClear]=\"showClear\"\r\n [(ngModel)]=\"value\"\r\n (onNodeSelect)=\"selectionChange($event)\"\r\n (onNodeUnselect)=\"selectionChange($event)\"\r\n (onPanelHide)=\"panelHide($event)\"\r\n [appendTo]=\"appendTo\"\r\n [metaKeySelection]=\"false\"\r\n styleClass=\"inputs\"\r\n containerStyleClass=\"inputs\"\r\n selectionMode=\"checkbox\"\r\n display=\"chip\"\r\n [propagateSelectionDown]=\"propagateSelectionDown()\"\r\n [propagateSelectionUp]=\"propagateSelectionUp()\"\r\n >\r\n <ng-template let-value pTemplate=\"value\" class=\"w-full\">\r\n <div\r\n class=\"p-multiselect p-multiselect-chip p-multiselect-label w-full flex flex-nowrap\"\r\n >\r\n <div\r\n #token\r\n *ngFor=\"let chip of chips; let i = index\"\r\n class=\"p-multiselect-token\"\r\n >\r\n <span class=\"p-multiselect-token-label\">{{ chip.label }}</span>\r\n\r\n <TimesCircleIcon\r\n [styleClass]=\"'p-multiselect-token-icon'\"\r\n (click)=\"removerChip(chip, $event)\"\r\n [attr.data-pc-section]=\"'clearicon'\"\r\n [attr.aria-hidden]=\"true\"\r\n />\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n @for (templateItem of itemTemplates; track $index) {\r\n <ng-template let-node [pTemplate]=\"templateItem.type\">\r\n @if(templateItem.template) {\r\n <ng-container\r\n [ngTemplateOutlet]=\"templateItem.template\"\r\n [ngTemplateOutletContext]=\"{ $implicit: node }\"\r\n >\r\n </ng-container>\r\n }\r\n </ng-template>\r\n\r\n }\r\n\r\n <ng-template let-node pTemplate=\"default\">\r\n {{ node.label }}\r\n </ng-template>\r\n </p-treeSelect>\r\n\r\n <kv-error [hasError]=\"hasControlError()\">{{ erroMessage() }}</kv-error>\r\n</span>\r\n<ng-content></ng-content>\r\n", styles: [":host ::ng-deep .disable .p-treeselect.p-treeselect-chip .p-treeselect-token .p-icon-wrapper{display:none!important}::ng-deep .p-treeselect.p-treeselect-chip .p-treeselect-token{padding:.1rem .4rem}::ng-deep .p-treeselect-label{padding:0rem;display:flex}::ng-deep .p-treeselect-item{font-size:.875rem;padding:.5rem;text-overflow:ellipsis;width:100%}::ng-deep .p-treeselect{width:100%}::ng-deep p-treeselect p-overlay .p-overlay{max-width:100%}::ng-deep .p-treeselect-items-wrapper .p-treeselect-items{padding:.75rem}::ng-deep .p-treeselect-filter{height:1.875rem}::ng-deep .p-treeselect-panel .p-treeselect-items .p-treeselect-empty-message{padding:.75rem;font-size:.875rem}::ng-deep .p-treeselect-panel .p-treeselect-header{padding:.5rem}:host ::ng-deep .p-chips .p-chips-multiple-container .p-chips-token{padding:.1rem .4rem;transform:translateY(-3px)}:host ::ng-deep .p-chips .p-chips-multiple-container{border:none}:host ::ng-deep .p-chip{background:red;padding:.1rem .4rem;font-size:.875rem;margin-right:.5rem;background:#e5e7eb;color:#4b5563;border-radius:16px;height:15px}::ng-deep .p-multiselect.p-multiselect-chip .p-multiselect-token{padding:.1rem .4rem}:host ::ng-deep .p-multiselect.p-multiselect-chip.p-multiselect-label{border:none}:host ::ng-deep .p-treeselect-label,:host ::ng-deep .p-multiselect-label{width:100%;padding:.09rem .4rem;display:flex}:host ::ng-deep .p-multiselect-token{max-width:max-content}\n", "@import\"https://fonts.googleapis.com/css2?family=Inter:wght@100..900&display=swap\";@import\"https://fonts.googleapis.com/css2?family=Inter:wght@100;200;300;400;500;600;700;800;900&display=swap\";@import\"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@24,400,0,0\";::ng-deep :root{--kv-color-system: 10,58,120;--kv-color-system-cta: 76, 175, 80;--kv-color-text: 0, 0, 0;--kv-color-text-inv: 255, 255, 165;--kv-background-system: 248,250,253;--kv-background-card: 255,255,255;--kv-primary-color: 41, 185, 45;--kv-secondary-color: 0, 37, 66;--kv-tertiary-color: 165, 165, 165;--kv-danger-color: 220, 53, 69;--kv-success-color: 75, 181, 67;--kv-info-color: 58, 170, 208;--kv-warn-color: 241, 90, 36;--kv-contrast-color: 33, 37, 41}::ng-deep .padrao{--kv-color-system: 10,58,120;--kv-color-system-cta: 76, 175, 80;--kv-color-text: 0, 0, 0;--kv-background-system: 248,250,253;--kv-background-card: 255,255,255}::ng-deep .theme-keevocenter{--kv-color-system: 88,25,153;--kv-color-system-cta: 0, 116, 217;--kv-color-text: 0, 0, 0;--kv-color-text-inv: 255, 255, 165;--kv-background-system: 248,250,253;--kv-background-card: 255,255,255}::ng-deep .theme-holos{--kv-color-system: 241,90,36;--kv-color-system-cta: 224, 168, 35;--kv-color-text: 0, 0, 0;--kv-color-text-inv: 255, 255, 165;--kv-background-system: 240,240,240;--kv-background-card: 2255,255,255}.system-color{color:rgb(var(--kv-color-system),1)}.bg-system-100{background:rgb(var(--kv-color-system),1)}.bg-system-75{background:rgb(var(--kv-color-system),.75)}.bg-system-50{background:rgb(var(--kv-color-system),.5)}.bg-system-25{background:rgb(var(--kv-color-system),.25)}.material-symbols-outlined{font-family:Material Symbols Outlined!important}*{font-family:Inter,Inter var,sans-serif!important}::ng-deep .p-accordion,::ng-deep .p-accordion-header,::ng-deep .p-accordion-content,::ng-deep .p-badge,::ng-deep .p-overlay-badge,::ng-deep .p-breadcrumb,::ng-deep .p-breadcrumb-item,::ng-deep .p-breadcrumb-link,::ng-deep .p-button,::ng-deep .p-calendar,::ng-deep .p-card,::ng-deep .p-card-title,::ng-deep .p-card-subtitle,::ng-deep .p-card-content,::ng-deep .p-checkbox,::ng-deep .p-chip,::ng-deep .p-confirm-dialog,::ng-deep .p-confirm-dialog-message,::ng-deep .p-contextmenu,::ng-deep .p-contextmenu-item,::ng-deep .p-dataview,::ng-deep .p-dataview-content,::ng-deep .p-dialog,::ng-deep .p-dialog-title,::ng-deep .p-dialog-content,::ng-deep .p-dropdown,::ng-deep .p-dropdown-label,::ng-deep .p-dropdown-item,::ng-deep .p-dynamic-dialog,::ng-deep .p-dynamic-dialog-title,::ng-deep .p-dynamic-dialog-content,::ng-deep .p-editor,::ng-deep .p-fieldset,::ng-deep .p-fieldset-legend,::ng-deep .p-fieldset-content,::ng-deep .p-fileupload,::ng-deep .p-inputmask,::ng-deep .p-inputnumber,::ng-deep .p-inputtextarea,::ng-deep .p-inputtext,::ng-deep .p-menu,::ng-deep .p-menuitem,::ng-deep .p-menuitem-text,::ng-deep .p-message,::ng-deep .p-messages,::ng-deep .p-multiselect,::ng-deep .p-multiselect-label,::ng-deep .p-multiselect-item,::ng-deep .p-panelmenu,::ng-deep .p-panelmenu-header,::ng-deep .p-panelmenu-content,::ng-deep .p-panel,::ng-deep .p-panel-header,::ng-deep .p-panel-content,::ng-deep .p-password,::ng-deep .p-picklist,::ng-deep .p-progressbar,::ng-deep .p-radiobutton,::ng-deep .p-rating,::ng-deep .p-sidebar,::ng-deep .p-splitbutton,::ng-deep .p-steps,::ng-deep .p-step,::ng-deep .p-table,::ng-deep .p-datatable,::ng-deep .p-tabview,::ng-deep .p-tabpanel,::ng-deep .p-tag,::ng-deep .p-toast,::ng-deep .p-toolbar,::ng-deep .p-tooltip,::ng-deep .p-tree,::ng-deep .p-treetable,::ng-deep .p-selectbutton,::ng-deep .p-stepper,::ng-deep .p-inputgroup,::ng-deep .p-inputgroup-addon,::ng-deep .p-text{font-family:Inter,Inter var,sans-serif!important}::ng-deep .p-icon,svg{height:.6rem}:host ::ng-deep .inputs{height:1.875rem}:host ::ng-deep .inputs,.p-inputtext,.p-inputtextarea{font-size:.875rem}::ng-deep .p-dialog .p-dialog-header{color:rgb(var(--kv-color-text))!important;background:linear-gradient(0deg,#00000005 .44%,#0000 49.5%),#fff!important;display:flex!important;flex-wrap:wrap;word-wrap:break-word;border-bottom:1px solid rgb(var(--kv-color-text),.15)}::ng-deep .p-dialog{min-width:320px}::ng-deep .p-dialog-content{overflow-x:hidden}::ng-deep .p-dialog-content::-webkit-scrollbar{width:8px}::ng-deep .p-dialog-content::-webkit-scrollbar:hover{background-color:#dededebf}::ng-deep .p-dialog-content::-webkit-scrollbar-thumb{border-radius:4px;background-color:transparent}::ng-deep .p-dialog-content:hover::-webkit-scrollbar-thumb{border-left:2px solid white;background-color:#00000080}::ng-deep .p-dialog-content::-webkit-scrollbar-track{border-left:2px solid white;background-color:#dededebf}::ng-deep .p-dialog-footer{display:flex;justify-content:flex-end;padding:10px;gap:10px}::ng-deep .p-dialog .p-dialog-header .p-dialog-header-icon{display:none}::ng-deep .p-tooltip{font-size:.825rem!important}::ng-deep svg.p-icon{width:.65rem;height:.65rem}::ng-deep .p-checkbox .p-checkbox-box.p-highlight{border-color:#004172;background:#004172}::ng-deep .p-checkbox .p-checkbox-box.p-highlight:hover{background-color:#002542}::ng-deep .p-checkbox .p-checkbox-box.p-highlight:active{background-color:#002542}::ng-deep .p-checkbox .p-checkbox-box.p-highlight:disabled{background-color:#002542;opacity:.4;cursor:auto}input{height:1.75rem}::ng-deep .p-checkbox .p-checkbox-box{width:1.125rem;height:1.125rem;border:1.5px solid #d1d5db}::ng-deep p-tablecheckbox p-tableheadercheckbox .p-checkbox{display:flex!important;align-items:center!important;justify-content:right}::ng-deep .p-checkbox{display:flex!important;align-items:center!important;justify-content:center}::ng-deep .p-checkbox-label{font-size:.875rem}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.KvErrorComponent, selector: "kv-error", inputs: ["formControl", "hasError"] }, { kind: "component", type: i5.KvLabelComponent, selector: "kv-label", inputs: ["componentId", "label"] }, { kind: "directive", type: i6.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i7.TreeSelect, selector: "p-treeSelect", inputs: ["inputId", "scrollHeight", "disabled", "metaKeySelection", "variant", "display", "selectionMode", "tabindex", "ariaLabel", "ariaLabelledBy", "placeholder", "panelClass", "panelStyle", "panelStyleClass", "containerStyle", "containerStyleClass", "labelStyle", "labelStyleClass", "overlayOptions", "emptyMessage", "appendTo", "filter", "filterBy", "filterMode", "filterPlaceholder", "filterLocale", "filterInputAutoFocus", "propagateSelectionDown", "propagateSelectionUp", "showClear", "resetFilterOnHide", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "autofocus", "options", "showTransitionOptions", "hideTransitionOptions", "loading"], outputs: ["onNodeExpand", "onNodeCollapse", "onShow", "onHide", "onClear", "onFilter", "onFocus", "onBlur", "onNodeUnselect", "onNodeSelect"] }, { kind: "component", type: i8.TimesCircleIcon, selector: "TimesCircleIcon" }] }); }
|
|
46
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.8", type: KvTreeMultiSelectComponent, selector: "kv-tree-multi-select", inputs: { appendTo: { classPropertyName: "appendTo", publicName: "appendTo", isSignal: false, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: false, isRequired: false, transformFunction: null }, itemTemplates: { classPropertyName: "itemTemplates", publicName: "itemTemplates", isSignal: false, isRequired: false, transformFunction: null }, propagateSelectionDown: { classPropertyName: "propagateSelectionDown", publicName: "propagateSelectionDown", isSignal: true, isRequired: false, transformFunction: null }, propagateSelectionUp: { classPropertyName: "propagateSelectionUp", publicName: "propagateSelectionUp", isSignal: true, isRequired: false, transformFunction: null } }, providers: ComponentProviders(KvTreeMultiSelectComponent), usesInheritance: true, ngImport: i0, template: "<span>\n <kv-label\n [componentId]=\"componentId\"\n [label]=\"label && label + (showAsterisk ? '*' : '')\"\n />\n\n <p-treeSelect\n inputId=\"tree-multi-select\"\n [class]=\"baseInputClass\"\n [disabled]=\"disabled\"\n [options]=\"options\"\n [filter]=\"filter\"\n [showClear]=\"showClear\"\n [(ngModel)]=\"value\"\n (onNodeSelect)=\"selectionChange($event)\"\n (onNodeUnselect)=\"selectionChange($event)\"\n (onPanelHide)=\"panelHide($event)\"\n [appendTo]=\"appendTo\"\n [metaKeySelection]=\"false\"\n styleClass=\"inputs\"\n containerStyleClass=\"inputs\"\n selectionMode=\"checkbox\"\n display=\"chip\"\n [propagateSelectionDown]=\"propagateSelectionDown()\"\n [propagateSelectionUp]=\"propagateSelectionUp()\"\n >\n <ng-template let-value pTemplate=\"value\" class=\"w-full\">\n <div\n class=\"p-multiselect p-multiselect-chip p-multiselect-label w-full flex flex-nowrap\"\n >\n <div\n #token\n *ngFor=\"let chip of chips; let i = index\"\n class=\"p-multiselect-token\"\n >\n <span class=\"p-multiselect-token-label\">{{ chip.label }}</span>\n\n <TimesCircleIcon\n [styleClass]=\"'p-multiselect-token-icon'\"\n (click)=\"removerChip(chip, $event)\"\n [attr.data-pc-section]=\"'clearicon'\"\n [attr.aria-hidden]=\"true\"\n />\n </div>\n </div>\n </ng-template>\n\n @for (templateItem of itemTemplates; track $index) {\n <ng-template let-node [pTemplate]=\"templateItem.type\">\n @if(templateItem.template) {\n <ng-container\n [ngTemplateOutlet]=\"templateItem.template\"\n [ngTemplateOutletContext]=\"{ $implicit: node }\"\n >\n </ng-container>\n }\n </ng-template>\n\n }\n\n <ng-template let-node pTemplate=\"default\">\n {{ node.label }}\n </ng-template>\n </p-treeSelect>\n\n <kv-error [hasError]=\"hasControlError()\">{{ erroMessage() }}</kv-error>\n</span>\n<ng-content></ng-content>\n", styles: [":host ::ng-deep .disable .p-treeselect.p-treeselect-chip .p-treeselect-token .p-icon-wrapper{display:none!important}::ng-deep .p-treeselect.p-treeselect-chip .p-treeselect-token{padding:.1rem .4rem}::ng-deep .p-treeselect-label{padding:0rem;display:flex}::ng-deep .p-treeselect-item{font-size:.875rem;padding:.5rem;text-overflow:ellipsis;width:100%}::ng-deep .p-treeselect{width:100%}::ng-deep p-treeselect p-overlay .p-overlay{max-width:100%}::ng-deep .p-treeselect-items-wrapper .p-treeselect-items{padding:.75rem}::ng-deep .p-treeselect-filter{height:1.875rem}::ng-deep .p-treeselect-panel .p-treeselect-items .p-treeselect-empty-message{padding:.75rem;font-size:.875rem}::ng-deep .p-treeselect-panel .p-treeselect-header{padding:.5rem}:host ::ng-deep .p-chips .p-chips-multiple-container .p-chips-token{padding:.1rem .4rem;transform:translateY(-3px)}:host ::ng-deep .p-chips .p-chips-multiple-container{border:none}:host ::ng-deep .p-chip{background:red;padding:.1rem .4rem;font-size:.875rem;margin-right:.5rem;background:#e5e7eb;color:#4b5563;border-radius:16px;height:15px}::ng-deep .p-multiselect.p-multiselect-chip .p-multiselect-token{padding:.1rem .4rem}:host ::ng-deep .p-multiselect.p-multiselect-chip.p-multiselect-label{border:none}:host ::ng-deep .p-treeselect-label,:host ::ng-deep .p-multiselect-label{width:100%;padding:.09rem .4rem;display:flex}:host ::ng-deep .p-multiselect-token{max-width:max-content}\n", "@import\"https://fonts.googleapis.com/css2?family=Inter:wght@100..900&display=swap\";@import\"https://fonts.googleapis.com/css2?family=Inter:wght@100;200;300;400;500;600;700;800;900&display=swap\";@import\"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@24,400,0,0\";::ng-deep :root{--kv-color-system: 10,58,120;--kv-color-system-cta: 76, 175, 80;--kv-color-text: 0, 0, 0;--kv-color-text-inv: 255, 255, 165;--kv-background-system: 248,250,253;--kv-background-card: 255,255,255;--kv-primary-color: 41, 185, 45;--kv-secondary-color: 0, 37, 66;--kv-tertiary-color: 165, 165, 165;--kv-danger-color: 220, 53, 69;--kv-success-color: 75, 181, 67;--kv-info-color: 58, 170, 208;--kv-warn-color: 241, 90, 36;--kv-contrast-color: 33, 37, 41}::ng-deep .padrao{--kv-color-system: 10,58,120;--kv-color-system-cta: 76, 175, 80;--kv-color-text: 0, 0, 0;--kv-background-system: 248,250,253;--kv-background-card: 255,255,255}::ng-deep .theme-keevocenter{--kv-color-system: 88,25,153;--kv-color-system-cta: 0, 116, 217;--kv-color-text: 0, 0, 0;--kv-color-text-inv: 255, 255, 165;--kv-background-system: 248,250,253;--kv-background-card: 255,255,255}::ng-deep .theme-holos{--kv-color-system: 241,90,36;--kv-color-system-cta: 224, 168, 35;--kv-color-text: 0, 0, 0;--kv-color-text-inv: 255, 255, 165;--kv-background-system: 240,240,240;--kv-background-card: 2255,255,255}.system-color{color:rgb(var(--kv-color-system),1)}.bg-system-100{background:rgb(var(--kv-color-system),1)}.bg-system-75{background:rgb(var(--kv-color-system),.75)}.bg-system-50{background:rgb(var(--kv-color-system),.5)}.bg-system-25{background:rgb(var(--kv-color-system),.25)}.material-symbols-outlined{font-family:Material Symbols Outlined!important}*{font-family:Inter,Inter var,sans-serif!important}::ng-deep .p-accordion,::ng-deep .p-accordion-header,::ng-deep .p-accordion-content,::ng-deep .p-badge,::ng-deep .p-overlay-badge,::ng-deep .p-breadcrumb,::ng-deep .p-breadcrumb-item,::ng-deep .p-breadcrumb-link,::ng-deep .p-button,::ng-deep .p-calendar,::ng-deep .p-card,::ng-deep .p-card-title,::ng-deep .p-card-subtitle,::ng-deep .p-card-content,::ng-deep .p-checkbox,::ng-deep .p-chip,::ng-deep .p-confirm-dialog,::ng-deep .p-confirm-dialog-message,::ng-deep .p-contextmenu,::ng-deep .p-contextmenu-item,::ng-deep .p-dataview,::ng-deep .p-dataview-content,::ng-deep .p-dialog,::ng-deep .p-dialog-title,::ng-deep .p-dialog-content,::ng-deep .p-dropdown,::ng-deep .p-dropdown-label,::ng-deep .p-dropdown-item,::ng-deep .p-dynamic-dialog,::ng-deep .p-dynamic-dialog-title,::ng-deep .p-dynamic-dialog-content,::ng-deep .p-editor,::ng-deep .p-fieldset,::ng-deep .p-fieldset-legend,::ng-deep .p-fieldset-content,::ng-deep .p-fileupload,::ng-deep .p-inputmask,::ng-deep .p-inputnumber,::ng-deep .p-inputtextarea,::ng-deep .p-inputtext,::ng-deep .p-menu,::ng-deep .p-menuitem,::ng-deep .p-menuitem-text,::ng-deep .p-message,::ng-deep .p-messages,::ng-deep .p-multiselect,::ng-deep .p-multiselect-label,::ng-deep .p-multiselect-item,::ng-deep .p-panelmenu,::ng-deep .p-panelmenu-header,::ng-deep .p-panelmenu-content,::ng-deep .p-panel,::ng-deep .p-panel-header,::ng-deep .p-panel-content,::ng-deep .p-password,::ng-deep .p-picklist,::ng-deep .p-progressbar,::ng-deep .p-radiobutton,::ng-deep .p-rating,::ng-deep .p-sidebar,::ng-deep .p-splitbutton,::ng-deep .p-steps,::ng-deep .p-step,::ng-deep .p-table,::ng-deep .p-datatable,::ng-deep .p-tabview,::ng-deep .p-tabpanel,::ng-deep .p-tag,::ng-deep .p-toast,::ng-deep .p-toolbar,::ng-deep .p-tooltip,::ng-deep .p-tree,::ng-deep .p-treetable,::ng-deep .p-selectbutton,::ng-deep .p-stepper,::ng-deep .p-inputgroup,::ng-deep .p-inputgroup-addon,::ng-deep .p-text{font-family:Inter,Inter var,sans-serif!important}::ng-deep .p-icon,svg{height:.6rem}:host ::ng-deep .inputs{height:1.875rem}:host ::ng-deep .inputs,.p-inputtext,.p-inputtextarea{font-size:.875rem}::ng-deep .p-dialog .p-dialog-header{color:rgb(var(--kv-color-text))!important;background:linear-gradient(0deg,#00000005 .44%,#0000 49.5%),#fff!important;display:flex!important;flex-wrap:wrap;word-wrap:break-word;border-bottom:1px solid rgb(var(--kv-color-text),.15)}::ng-deep .p-dialog{min-width:320px}::ng-deep .p-dialog-content{overflow-x:hidden}::ng-deep .p-dialog-content::-webkit-scrollbar{width:8px}::ng-deep .p-dialog-content::-webkit-scrollbar:hover{background-color:#dededebf}::ng-deep .p-dialog-content::-webkit-scrollbar-thumb{border-radius:4px;background-color:transparent}::ng-deep .p-dialog-content:hover::-webkit-scrollbar-thumb{border-left:2px solid white;background-color:#00000080}::ng-deep .p-dialog-content::-webkit-scrollbar-track{border-left:2px solid white;background-color:#dededebf}::ng-deep .p-dialog-footer{display:flex;justify-content:flex-end;padding:10px;gap:10px}::ng-deep .p-dialog .p-dialog-header .p-dialog-header-icon{display:none}::ng-deep .p-tooltip{font-size:.825rem!important}::ng-deep svg.p-icon{width:.65rem;height:.65rem}::ng-deep .p-checkbox .p-checkbox-box.p-highlight{border-color:#004172;background:#004172}::ng-deep .p-checkbox .p-checkbox-box.p-highlight:hover{background-color:#002542}::ng-deep .p-checkbox .p-checkbox-box.p-highlight:active{background-color:#002542}::ng-deep .p-checkbox .p-checkbox-box.p-highlight:disabled{background-color:#002542;opacity:.4;cursor:auto}input{height:1.75rem}::ng-deep .p-checkbox .p-checkbox-box{width:1.125rem;height:1.125rem;border:1.5px solid #d1d5db}::ng-deep p-tablecheckbox p-tableheadercheckbox .p-checkbox{display:flex!important;align-items:center!important;justify-content:right}::ng-deep .p-checkbox{display:flex!important;align-items:center!important;justify-content:center}::ng-deep .p-checkbox-label{font-size:.875rem}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.KvErrorComponent, selector: "kv-error", inputs: ["formControl", "hasError"] }, { kind: "component", type: i5.KvLabelComponent, selector: "kv-label", inputs: ["componentId", "label"] }, { kind: "directive", type: i6.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i7.TreeSelect, selector: "p-treeSelect", inputs: ["inputId", "scrollHeight", "disabled", "metaKeySelection", "variant", "display", "selectionMode", "tabindex", "ariaLabel", "ariaLabelledBy", "placeholder", "panelClass", "panelStyle", "panelStyleClass", "containerStyle", "containerStyleClass", "labelStyle", "labelStyleClass", "overlayOptions", "emptyMessage", "appendTo", "filter", "filterBy", "filterMode", "filterPlaceholder", "filterLocale", "filterInputAutoFocus", "propagateSelectionDown", "propagateSelectionUp", "showClear", "resetFilterOnHide", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "autofocus", "options", "showTransitionOptions", "hideTransitionOptions", "loading"], outputs: ["onNodeExpand", "onNodeCollapse", "onShow", "onHide", "onClear", "onFilter", "onFocus", "onBlur", "onNodeUnselect", "onNodeSelect"] }, { kind: "component", type: i8.TimesCircleIcon, selector: "TimesCircleIcon" }] }); }
|
|
47
47
|
}
|
|
48
48
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvTreeMultiSelectComponent, decorators: [{
|
|
49
49
|
type: Component,
|
|
50
|
-
args: [{ selector: 'kv-tree-multi-select', providers: ComponentProviders(KvTreeMultiSelectComponent), template: "<span>\
|
|
50
|
+
args: [{ selector: 'kv-tree-multi-select', providers: ComponentProviders(KvTreeMultiSelectComponent), template: "<span>\n <kv-label\n [componentId]=\"componentId\"\n [label]=\"label && label + (showAsterisk ? '*' : '')\"\n />\n\n <p-treeSelect\n inputId=\"tree-multi-select\"\n [class]=\"baseInputClass\"\n [disabled]=\"disabled\"\n [options]=\"options\"\n [filter]=\"filter\"\n [showClear]=\"showClear\"\n [(ngModel)]=\"value\"\n (onNodeSelect)=\"selectionChange($event)\"\n (onNodeUnselect)=\"selectionChange($event)\"\n (onPanelHide)=\"panelHide($event)\"\n [appendTo]=\"appendTo\"\n [metaKeySelection]=\"false\"\n styleClass=\"inputs\"\n containerStyleClass=\"inputs\"\n selectionMode=\"checkbox\"\n display=\"chip\"\n [propagateSelectionDown]=\"propagateSelectionDown()\"\n [propagateSelectionUp]=\"propagateSelectionUp()\"\n >\n <ng-template let-value pTemplate=\"value\" class=\"w-full\">\n <div\n class=\"p-multiselect p-multiselect-chip p-multiselect-label w-full flex flex-nowrap\"\n >\n <div\n #token\n *ngFor=\"let chip of chips; let i = index\"\n class=\"p-multiselect-token\"\n >\n <span class=\"p-multiselect-token-label\">{{ chip.label }}</span>\n\n <TimesCircleIcon\n [styleClass]=\"'p-multiselect-token-icon'\"\n (click)=\"removerChip(chip, $event)\"\n [attr.data-pc-section]=\"'clearicon'\"\n [attr.aria-hidden]=\"true\"\n />\n </div>\n </div>\n </ng-template>\n\n @for (templateItem of itemTemplates; track $index) {\n <ng-template let-node [pTemplate]=\"templateItem.type\">\n @if(templateItem.template) {\n <ng-container\n [ngTemplateOutlet]=\"templateItem.template\"\n [ngTemplateOutletContext]=\"{ $implicit: node }\"\n >\n </ng-container>\n }\n </ng-template>\n\n }\n\n <ng-template let-node pTemplate=\"default\">\n {{ node.label }}\n </ng-template>\n </p-treeSelect>\n\n <kv-error [hasError]=\"hasControlError()\">{{ erroMessage() }}</kv-error>\n</span>\n<ng-content></ng-content>\n", styles: [":host ::ng-deep .disable .p-treeselect.p-treeselect-chip .p-treeselect-token .p-icon-wrapper{display:none!important}::ng-deep .p-treeselect.p-treeselect-chip .p-treeselect-token{padding:.1rem .4rem}::ng-deep .p-treeselect-label{padding:0rem;display:flex}::ng-deep .p-treeselect-item{font-size:.875rem;padding:.5rem;text-overflow:ellipsis;width:100%}::ng-deep .p-treeselect{width:100%}::ng-deep p-treeselect p-overlay .p-overlay{max-width:100%}::ng-deep .p-treeselect-items-wrapper .p-treeselect-items{padding:.75rem}::ng-deep .p-treeselect-filter{height:1.875rem}::ng-deep .p-treeselect-panel .p-treeselect-items .p-treeselect-empty-message{padding:.75rem;font-size:.875rem}::ng-deep .p-treeselect-panel .p-treeselect-header{padding:.5rem}:host ::ng-deep .p-chips .p-chips-multiple-container .p-chips-token{padding:.1rem .4rem;transform:translateY(-3px)}:host ::ng-deep .p-chips .p-chips-multiple-container{border:none}:host ::ng-deep .p-chip{background:red;padding:.1rem .4rem;font-size:.875rem;margin-right:.5rem;background:#e5e7eb;color:#4b5563;border-radius:16px;height:15px}::ng-deep .p-multiselect.p-multiselect-chip .p-multiselect-token{padding:.1rem .4rem}:host ::ng-deep .p-multiselect.p-multiselect-chip.p-multiselect-label{border:none}:host ::ng-deep .p-treeselect-label,:host ::ng-deep .p-multiselect-label{width:100%;padding:.09rem .4rem;display:flex}:host ::ng-deep .p-multiselect-token{max-width:max-content}\n", "@import\"https://fonts.googleapis.com/css2?family=Inter:wght@100..900&display=swap\";@import\"https://fonts.googleapis.com/css2?family=Inter:wght@100;200;300;400;500;600;700;800;900&display=swap\";@import\"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@24,400,0,0\";::ng-deep :root{--kv-color-system: 10,58,120;--kv-color-system-cta: 76, 175, 80;--kv-color-text: 0, 0, 0;--kv-color-text-inv: 255, 255, 165;--kv-background-system: 248,250,253;--kv-background-card: 255,255,255;--kv-primary-color: 41, 185, 45;--kv-secondary-color: 0, 37, 66;--kv-tertiary-color: 165, 165, 165;--kv-danger-color: 220, 53, 69;--kv-success-color: 75, 181, 67;--kv-info-color: 58, 170, 208;--kv-warn-color: 241, 90, 36;--kv-contrast-color: 33, 37, 41}::ng-deep .padrao{--kv-color-system: 10,58,120;--kv-color-system-cta: 76, 175, 80;--kv-color-text: 0, 0, 0;--kv-background-system: 248,250,253;--kv-background-card: 255,255,255}::ng-deep .theme-keevocenter{--kv-color-system: 88,25,153;--kv-color-system-cta: 0, 116, 217;--kv-color-text: 0, 0, 0;--kv-color-text-inv: 255, 255, 165;--kv-background-system: 248,250,253;--kv-background-card: 255,255,255}::ng-deep .theme-holos{--kv-color-system: 241,90,36;--kv-color-system-cta: 224, 168, 35;--kv-color-text: 0, 0, 0;--kv-color-text-inv: 255, 255, 165;--kv-background-system: 240,240,240;--kv-background-card: 2255,255,255}.system-color{color:rgb(var(--kv-color-system),1)}.bg-system-100{background:rgb(var(--kv-color-system),1)}.bg-system-75{background:rgb(var(--kv-color-system),.75)}.bg-system-50{background:rgb(var(--kv-color-system),.5)}.bg-system-25{background:rgb(var(--kv-color-system),.25)}.material-symbols-outlined{font-family:Material Symbols Outlined!important}*{font-family:Inter,Inter var,sans-serif!important}::ng-deep .p-accordion,::ng-deep .p-accordion-header,::ng-deep .p-accordion-content,::ng-deep .p-badge,::ng-deep .p-overlay-badge,::ng-deep .p-breadcrumb,::ng-deep .p-breadcrumb-item,::ng-deep .p-breadcrumb-link,::ng-deep .p-button,::ng-deep .p-calendar,::ng-deep .p-card,::ng-deep .p-card-title,::ng-deep .p-card-subtitle,::ng-deep .p-card-content,::ng-deep .p-checkbox,::ng-deep .p-chip,::ng-deep .p-confirm-dialog,::ng-deep .p-confirm-dialog-message,::ng-deep .p-contextmenu,::ng-deep .p-contextmenu-item,::ng-deep .p-dataview,::ng-deep .p-dataview-content,::ng-deep .p-dialog,::ng-deep .p-dialog-title,::ng-deep .p-dialog-content,::ng-deep .p-dropdown,::ng-deep .p-dropdown-label,::ng-deep .p-dropdown-item,::ng-deep .p-dynamic-dialog,::ng-deep .p-dynamic-dialog-title,::ng-deep .p-dynamic-dialog-content,::ng-deep .p-editor,::ng-deep .p-fieldset,::ng-deep .p-fieldset-legend,::ng-deep .p-fieldset-content,::ng-deep .p-fileupload,::ng-deep .p-inputmask,::ng-deep .p-inputnumber,::ng-deep .p-inputtextarea,::ng-deep .p-inputtext,::ng-deep .p-menu,::ng-deep .p-menuitem,::ng-deep .p-menuitem-text,::ng-deep .p-message,::ng-deep .p-messages,::ng-deep .p-multiselect,::ng-deep .p-multiselect-label,::ng-deep .p-multiselect-item,::ng-deep .p-panelmenu,::ng-deep .p-panelmenu-header,::ng-deep .p-panelmenu-content,::ng-deep .p-panel,::ng-deep .p-panel-header,::ng-deep .p-panel-content,::ng-deep .p-password,::ng-deep .p-picklist,::ng-deep .p-progressbar,::ng-deep .p-radiobutton,::ng-deep .p-rating,::ng-deep .p-sidebar,::ng-deep .p-splitbutton,::ng-deep .p-steps,::ng-deep .p-step,::ng-deep .p-table,::ng-deep .p-datatable,::ng-deep .p-tabview,::ng-deep .p-tabpanel,::ng-deep .p-tag,::ng-deep .p-toast,::ng-deep .p-toolbar,::ng-deep .p-tooltip,::ng-deep .p-tree,::ng-deep .p-treetable,::ng-deep .p-selectbutton,::ng-deep .p-stepper,::ng-deep .p-inputgroup,::ng-deep .p-inputgroup-addon,::ng-deep .p-text{font-family:Inter,Inter var,sans-serif!important}::ng-deep .p-icon,svg{height:.6rem}:host ::ng-deep .inputs{height:1.875rem}:host ::ng-deep .inputs,.p-inputtext,.p-inputtextarea{font-size:.875rem}::ng-deep .p-dialog .p-dialog-header{color:rgb(var(--kv-color-text))!important;background:linear-gradient(0deg,#00000005 .44%,#0000 49.5%),#fff!important;display:flex!important;flex-wrap:wrap;word-wrap:break-word;border-bottom:1px solid rgb(var(--kv-color-text),.15)}::ng-deep .p-dialog{min-width:320px}::ng-deep .p-dialog-content{overflow-x:hidden}::ng-deep .p-dialog-content::-webkit-scrollbar{width:8px}::ng-deep .p-dialog-content::-webkit-scrollbar:hover{background-color:#dededebf}::ng-deep .p-dialog-content::-webkit-scrollbar-thumb{border-radius:4px;background-color:transparent}::ng-deep .p-dialog-content:hover::-webkit-scrollbar-thumb{border-left:2px solid white;background-color:#00000080}::ng-deep .p-dialog-content::-webkit-scrollbar-track{border-left:2px solid white;background-color:#dededebf}::ng-deep .p-dialog-footer{display:flex;justify-content:flex-end;padding:10px;gap:10px}::ng-deep .p-dialog .p-dialog-header .p-dialog-header-icon{display:none}::ng-deep .p-tooltip{font-size:.825rem!important}::ng-deep svg.p-icon{width:.65rem;height:.65rem}::ng-deep .p-checkbox .p-checkbox-box.p-highlight{border-color:#004172;background:#004172}::ng-deep .p-checkbox .p-checkbox-box.p-highlight:hover{background-color:#002542}::ng-deep .p-checkbox .p-checkbox-box.p-highlight:active{background-color:#002542}::ng-deep .p-checkbox .p-checkbox-box.p-highlight:disabled{background-color:#002542;opacity:.4;cursor:auto}input{height:1.75rem}::ng-deep .p-checkbox .p-checkbox-box{width:1.125rem;height:1.125rem;border:1.5px solid #d1d5db}::ng-deep p-tablecheckbox p-tableheadercheckbox .p-checkbox{display:flex!important;align-items:center!important;justify-content:right}::ng-deep .p-checkbox{display:flex!important;align-items:center!important;justify-content:center}::ng-deep .p-checkbox-label{font-size:.875rem}\n"] }]
|
|
51
51
|
}], ctorParameters: () => [{ type: i1.ComponentService }, { type: i2.FormBuilder }], propDecorators: { appendTo: [{
|
|
52
52
|
type: Input
|
|
53
53
|
}], options: [{
|
|
@@ -55,4 +55,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImpor
|
|
|
55
55
|
}], itemTemplates: [{
|
|
56
56
|
type: Input
|
|
57
57
|
}] } });
|
|
58
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3YtdHJlZS1tdWx0aS1zZWxlY3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Vldm8tY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMva3YtaW5wdXRzL2t2LXRyZWUtbXVsdGktc2VsZWN0L2t2LXRyZWUtbXVsdGktc2VsZWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tlZXZvLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2t2LWlucHV0cy9rdi10cmVlLW11bHRpLXNlbGVjdC9rdi10cmVlLW11bHRpLXNlbGVjdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQXVCLE1BQU0sZUFBZSxDQUFDO0FBRTdFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDBEQUEwRCxDQUFDOzs7Ozs7Ozs7O0FBY3BHLE1BQU0sT0FBTywwQkFBMkIsU0FBUSx3QkFBd0I7SUFXdEUsWUFBWSxnQkFBa0MsRUFBVSxFQUFlO1FBQ3JFLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBRDhCLE9BQUUsR0FBRixFQUFFLENBQWE7UUFUOUQsYUFBUSxHQUFXLE1BQU0sQ0FBQztRQUUxQixrQkFBYSxHQUFxRCxFQUFFLENBQUM7UUFFOUUsMkJBQXNCLEdBQUcsS0FBSyxDQUFVLEtBQUssQ0FBQyxDQUFBO1FBQzlDLHlCQUFvQixHQUFHLEtBQUssQ0FBVSxLQUFLLENBQUMsQ0FBQTtRQUVsQyxVQUFLLEdBQVUsRUFBRSxDQUFDO0lBSTVCLENBQUM7SUFFUSxlQUFlLENBQUMsS0FBUztRQUNoQyxLQUFLLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQzVCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQTtJQUNwQixDQUFDO0lBRU8sV0FBVztRQUNqQixJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQTtRQUNmLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBYyxFQUFFLEVBQUU7WUFDcEMsSUFBSSxDQUFDLGFBQWEsQ0FBQztnQkFDakIsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLElBQUUsRUFBRTtnQkFDckIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO2FBQ2hCLENBQUMsQ0FBQTtRQUNKLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVPLGFBQWEsQ0FBQyxJQUFnQztRQUNuRCxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFBO0lBQ3JDLENBQUM7SUFFUyxXQUFXLENBQUMsSUFBUyxFQUFFLEtBQVU7UUFDekMsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBYyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1RSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDckIsQ0FBQzs4R0F2Q1UsMEJBQTBCO2tHQUExQiwwQkFBMEIsNnhCQUgxQixrQkFBa0IsQ0FBQywwQkFBMEIsQ0FBQyxpRENkM0QseWhFQW9FQTs7MkZEbkRhLDBCQUEwQjtrQkFWdEMsU0FBUzsrQkFDRSxzQkFBc0IsYUFNckIsa0JBQWtCLDRCQUE0QjsrR0FLaEQsUUFBUTtzQkFBaEIsS0FBSztnQkFDWSxPQUFPO3NCQUF4QixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGlucHV0LCBJbnB1dCwgT25Jbml0LCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVHJlZU5vZGUgfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQgeyBDb21wb25lbnRQcm92aWRlcnMgfSBmcm9tICcuLi8uLi8uLi9hcGkvaGVscGVycy9jb21wb25lbnQtcHJvdmlkZXJzJztcbmltcG9ydCB7IEJhc2VDb21wb25lbnRNdWx0aVNlbGVjdCB9IGZyb20gJy4uLy4uLy4uL2FwaS9iYXNlLWNvbXBvbmVudHMvYmFzZS1jb21wb25lbnQtbXVsdGktc2VsZWN0JztcbmltcG9ydCB7IENvbXBvbmVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9hcGkvc2VydmljZXMvY29tcG9uZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Db250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2t2LXRyZWUtbXVsdGktc2VsZWN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2t2LXRyZWUtbXVsdGktc2VsZWN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbXG4gICAgJy4va3YtdHJlZS1tdWx0aS1zZWxlY3QuY29tcG9uZW50LnNjc3MnLFxuICAgICcuLi8uLi9rZWV2by1jb21wb25lbnRzLXN0eWxlcy5zY3NzJ1xuICBdLFxuICBwcm92aWRlcnM6IENvbXBvbmVudFByb3ZpZGVycyhLdlRyZWVNdWx0aVNlbGVjdENvbXBvbmVudCksXG5cbn0pXG5leHBvcnQgY2xhc3MgS3ZUcmVlTXVsdGlTZWxlY3RDb21wb25lbnQgZXh0ZW5kcyBCYXNlQ29tcG9uZW50TXVsdGlTZWxlY3Qge1xuXG4gIEBJbnB1dCgpIGFwcGVuZFRvOiBzdHJpbmcgPSAnYm9keSc7XG4gIEBJbnB1dCgpIG92ZXJyaWRlIG9wdGlvbnMhOiBUcmVlTm9kZVtdO1xuICBASW5wdXQoKSBpdGVtVGVtcGxhdGVzOiB7dGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT58bnVsbCwgdHlwZTpzdHJpbmd9W10gPSBbXTtcblxuICBwcm9wYWdhdGVTZWxlY3Rpb25Eb3duID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpXG4gIHByb3BhZ2F0ZVNlbGVjdGlvblVwID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpXG5cbiAgcHJvdGVjdGVkIGNoaXBzOiBhbnlbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKGNvbXBvbmVudFNlcnZpY2U6IENvbXBvbmVudFNlcnZpY2UsIHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyKSB7XG4gICAgc3VwZXIoY29tcG9uZW50U2VydmljZSk7XG4gIH1cblxuICBvdmVycmlkZSBzZWxlY3Rpb25DaGFuZ2UodmFsdWU6YW55KXtcbiAgICBzdXBlci5zZWxlY3Rpb25DaGFuZ2UodmFsdWUpXG4gICAgdGhpcy5oYW5kbGVDaGlwcygpXG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUNoaXBzKCl7XG4gICAgdGhpcy5jaGlwcyA9IFtdXG4gICAgdGhpcy52YWx1ZS5mb3JFYWNoKChub2RlOiBUcmVlTm9kZSkgPT4ge1xuICAgICAgdGhpcy5hZGljaW9uYXJDaGlwKHtcbiAgICAgICAgbGFiZWw6IG5vZGUubGFiZWw/PycnLFxuICAgICAgICBkYXRhOiBub2RlLmRhdGFcbiAgICAgIH0pXG4gICAgfSlcbiAgfVxuXG4gIHByaXZhdGUgYWRpY2lvbmFyQ2hpcChjaGlwOiB7bGFiZWw6IHN0cmluZywgZGF0YTogYW55fSl7XG4gICAgIHRoaXMuY2hpcHMgPSBbLi4udGhpcy5jaGlwcywgY2hpcF1cbiAgfVxuXG4gIHByb3RlY3RlZCByZW1vdmVyQ2hpcChjaGlwOiBhbnksIGV2ZW50OiBhbnkpe1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy52YWx1ZSA9IHRoaXMudmFsdWUuZmlsdGVyKChub2RlOiBUcmVlTm9kZSkgPT4gbm9kZS5kYXRhICE9PSBjaGlwLmRhdGEpO1xuICAgIHRoaXMuaGFuZGxlQ2hpcHMoKTtcbiAgfVxuXG59IiwiPHNwYW4+XG4gIDxrdi1sYWJlbFxuICAgIFtjb21wb25lbnRJZF09XCJjb21wb25lbnRJZFwiXG4gICAgW2xhYmVsXT1cImxhYmVsICYmIGxhYmVsICsgKHNob3dBc3RlcmlzayA/ICcqJyA6ICcnKVwiXG4gIC8+XG5cbiAgPHAtdHJlZVNlbGVjdFxuICAgIGlucHV0SWQ9XCJ0cmVlLW11bHRpLXNlbGVjdFwiXG4gICAgW2NsYXNzXT1cImJhc2VJbnB1dENsYXNzXCJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgIFtvcHRpb25zXT1cIm9wdGlvbnNcIlxuICAgIFtmaWx0ZXJdPVwiZmlsdGVyXCJcbiAgICBbc2hvd0NsZWFyXT1cInNob3dDbGVhclwiXG4gICAgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiXG4gICAgKG9uTm9kZVNlbGVjdCk9XCJzZWxlY3Rpb25DaGFuZ2UoJGV2ZW50KVwiXG4gICAgKG9uTm9kZVVuc2VsZWN0KT1cInNlbGVjdGlvbkNoYW5nZSgkZXZlbnQpXCJcbiAgICAob25QYW5lbEhpZGUpPVwicGFuZWxIaWRlKCRldmVudClcIlxuICAgIFthcHBlbmRUb109XCJhcHBlbmRUb1wiXG4gICAgW21ldGFLZXlTZWxlY3Rpb25dPVwiZmFsc2VcIlxuICAgIHN0eWxlQ2xhc3M9XCJpbnB1dHNcIlxuICAgIGNvbnRhaW5lclN0eWxlQ2xhc3M9XCJpbnB1dHNcIlxuICAgIHNlbGVjdGlvbk1vZGU9XCJjaGVja2JveFwiXG4gICAgZGlzcGxheT1cImNoaXBcIlxuICAgIFtwcm9wYWdhdGVTZWxlY3Rpb25Eb3duXT1cInByb3BhZ2F0ZVNlbGVjdGlvbkRvd24oKVwiXG4gICAgW3Byb3BhZ2F0ZVNlbGVjdGlvblVwXT1cInByb3BhZ2F0ZVNlbGVjdGlvblVwKClcIlxuICA+XG4gICAgPG5nLXRlbXBsYXRlIGxldC12YWx1ZSBwVGVtcGxhdGU9XCJ2YWx1ZVwiIGNsYXNzPVwidy1mdWxsXCI+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwicC1tdWx0aXNlbGVjdCBwLW11bHRpc2VsZWN0LWNoaXAgcC1tdWx0aXNlbGVjdC1sYWJlbCB3LWZ1bGwgZmxleCBmbGV4LW5vd3JhcFwiXG4gICAgICA+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAjdG9rZW5cbiAgICAgICAgICAqbmdGb3I9XCJsZXQgY2hpcCBvZiBjaGlwczsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgICAgY2xhc3M9XCJwLW11bHRpc2VsZWN0LXRva2VuXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1tdWx0aXNlbGVjdC10b2tlbi1sYWJlbFwiPnt7IGNoaXAubGFiZWwgfX08L3NwYW4+XG5cbiAgICAgICAgICA8VGltZXNDaXJjbGVJY29uXG4gICAgICAgICAgICBbc3R5bGVDbGFzc109XCIncC1tdWx0aXNlbGVjdC10b2tlbi1pY29uJ1wiXG4gICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlckNoaXAoY2hpcCwgJGV2ZW50KVwiXG4gICAgICAgICAgICBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ2NsZWFyaWNvbidcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1oaWRkZW5dPVwidHJ1ZVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgQGZvciAodGVtcGxhdGVJdGVtIG9mIGl0ZW1UZW1wbGF0ZXM7IHRyYWNrICRpbmRleCkge1xuICAgIDxuZy10ZW1wbGF0ZSBsZXQtbm9kZSBbcFRlbXBsYXRlXT1cInRlbXBsYXRlSXRlbS50eXBlXCI+XG4gICAgICBAaWYodGVtcGxhdGVJdGVtLnRlbXBsYXRlKSB7XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRlbXBsYXRlSXRlbS50ZW1wbGF0ZVwiXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogbm9kZSB9XCJcbiAgICAgID5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgfVxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICB9XG5cbiAgICA8bmctdGVtcGxhdGUgbGV0LW5vZGUgcFRlbXBsYXRlPVwiZGVmYXVsdFwiPlxuICAgICAge3sgbm9kZS5sYWJlbCB9fVxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvcC10cmVlU2VsZWN0PlxuXG4gIDxrdi1lcnJvciBbaGFzRXJyb3JdPVwiaGFzQ29udHJvbEVycm9yKClcIj57eyBlcnJvTWVzc2FnZSgpIH19PC9rdi1lcnJvcj5cbjwvc3Bhbj5cbjxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiJdfQ==
|