cps-ui-kit 0.151.0 → 0.153.0
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/README.md +2 -0
- package/esm2020/lib/components/cps-autocomplete/cps-autocomplete.component.mjs +85 -23
- package/esm2020/lib/components/cps-button-toggle/cps-button-toggle.component.mjs +6 -6
- package/esm2020/lib/components/cps-checkbox/cps-checkbox.component.mjs +3 -3
- package/esm2020/lib/components/cps-chip/cps-chip.component.mjs +2 -2
- package/esm2020/lib/components/cps-datepicker/cps-datepicker.component.mjs +6 -6
- package/esm2020/lib/components/cps-expansion-panel/cps-expansion-panel.component.mjs +3 -3
- package/esm2020/lib/components/cps-info-circle/cps-info-circle.component.mjs +2 -2
- package/esm2020/lib/components/cps-input/cps-input.component.mjs +7 -7
- package/esm2020/lib/components/cps-loader/cps-loader.component.mjs +2 -2
- package/esm2020/lib/components/cps-menu/cps-menu.component.mjs +4 -4
- package/esm2020/lib/components/cps-paginator/cps-paginator.component.mjs +3 -3
- package/esm2020/lib/components/cps-radio-group/cps-radio-button/cps-radio-button.component.mjs +3 -3
- package/esm2020/lib/components/cps-radio-group/cps-radio-group.component.mjs +4 -4
- package/esm2020/lib/components/cps-select/cps-select.component.mjs +9 -9
- package/esm2020/lib/components/cps-sidebar-menu/cps-sidebar-menu.component.mjs +2 -2
- package/esm2020/lib/components/cps-tab-group/cps-tab/cps-tab.component.mjs +4 -4
- package/esm2020/lib/components/cps-tab-group/cps-tab-group.component.mjs +2 -2
- package/esm2020/lib/components/cps-table/components/internal/table-column-filter/table-column-filter.component.mjs +9 -9
- package/esm2020/lib/components/cps-table/components/internal/table-column-filter-constraint/table-column-filter-constraint.component.mjs +4 -4
- package/esm2020/lib/components/cps-table/cps-table.component.mjs +30 -30
- package/esm2020/lib/components/cps-table/directives/cps-table-column-filter.directive.mjs +9 -9
- package/esm2020/lib/components/cps-tag/cps-tag.component.mjs +3 -3
- package/esm2020/lib/components/cps-textarea/cps-textarea.component.mjs +8 -8
- package/esm2020/lib/components/cps-timepicker/cps-timepicker.component.mjs +351 -0
- package/esm2020/lib/components/cps-tree-autocomplete/cps-tree-autocomplete.component.mjs +3 -3
- package/esm2020/lib/components/cps-tree-select/cps-tree-select.component.mjs +3 -3
- package/esm2020/lib/components/cps-tree-table/cps-tree-table.component.mjs +29 -31
- package/esm2020/lib/components/cps-tree-table/directives/cps-tree-table-column-filter.directive.mjs +9 -9
- package/esm2020/lib/components/internal/cps-base-tree-dropdown/cps-base-tree-dropdown.component.mjs +7 -7
- package/esm2020/lib/directives/cps-tooltip.directive.mjs +3 -3
- package/esm2020/lib/pipes/internal/combine-labels.pipe.mjs +2 -2
- package/esm2020/lib/pipes/internal/label-by-value.pipe.mjs +2 -2
- package/esm2020/lib/services/cps-dialog/cps-dialog.service.mjs +3 -4
- package/esm2020/lib/services/cps-dialog/utils/cps-dialog-config.mjs +1 -1
- package/esm2020/lib/services/cps-notification/cps-notification.service.mjs +94 -0
- package/esm2020/lib/services/cps-notification/internal/components/cps-notification-container/cps-notification-container.component.mjs +91 -0
- package/esm2020/lib/services/cps-notification/internal/components/cps-toast/cps-toast.component.mjs +106 -0
- package/esm2020/lib/services/cps-notification/utils/cps-notification-config.mjs +25 -0
- package/esm2020/lib/services/cps-notification/utils/internal/cps-notification-data.mjs +12 -0
- package/esm2020/public-api.mjs +4 -1
- package/fesm2015/cps-ui-kit.mjs +927 -208
- package/fesm2015/cps-ui-kit.mjs.map +1 -1
- package/fesm2020/cps-ui-kit.mjs +906 -207
- package/fesm2020/cps-ui-kit.mjs.map +1 -1
- package/lib/components/cps-autocomplete/cps-autocomplete.component.d.ts +38 -11
- package/lib/components/cps-button-toggle/cps-button-toggle.component.d.ts +3 -3
- package/lib/components/cps-checkbox/cps-checkbox.component.d.ts +2 -2
- package/lib/components/cps-chip/cps-chip.component.d.ts +1 -1
- package/lib/components/cps-datepicker/cps-datepicker.component.d.ts +5 -5
- package/lib/components/cps-expansion-panel/cps-expansion-panel.component.d.ts +2 -2
- package/lib/components/cps-info-circle/cps-info-circle.component.d.ts +1 -1
- package/lib/components/cps-input/cps-input.component.d.ts +4 -4
- package/lib/components/cps-loader/cps-loader.component.d.ts +1 -1
- package/lib/components/cps-menu/cps-menu.component.d.ts +3 -3
- package/lib/components/cps-paginator/cps-paginator.component.d.ts +2 -2
- package/lib/components/cps-radio-group/cps-radio-button/cps-radio-button.component.d.ts +2 -2
- package/lib/components/cps-radio-group/cps-radio-group.component.d.ts +3 -3
- package/lib/components/cps-select/cps-select.component.d.ts +6 -6
- package/lib/components/cps-sidebar-menu/cps-sidebar-menu.component.d.ts +1 -1
- package/lib/components/cps-tab-group/cps-tab/cps-tab.component.d.ts +3 -3
- package/lib/components/cps-tab-group/cps-tab-group.component.d.ts +1 -1
- package/lib/components/cps-table/components/internal/table-column-filter/table-column-filter.component.d.ts +8 -8
- package/lib/components/cps-table/components/internal/table-column-filter-constraint/table-column-filter-constraint.component.d.ts +2 -2
- package/lib/components/cps-table/cps-table.component.d.ts +29 -29
- package/lib/components/cps-table/directives/cps-table-column-filter.directive.d.ts +8 -8
- package/lib/components/cps-tag/cps-tag.component.d.ts +2 -2
- package/lib/components/cps-textarea/cps-textarea.component.d.ts +5 -5
- package/lib/components/cps-timepicker/cps-timepicker.component.d.ts +135 -0
- package/lib/components/cps-tree-table/cps-tree-table.component.d.ts +28 -30
- package/lib/components/cps-tree-table/directives/cps-tree-table-column-filter.directive.d.ts +8 -8
- package/lib/components/internal/cps-base-tree-dropdown/cps-base-tree-dropdown.component.d.ts +6 -6
- package/lib/directives/cps-tooltip.directive.d.ts +2 -2
- package/lib/services/cps-dialog/utils/cps-dialog-config.d.ts +7 -7
- package/lib/services/cps-notification/cps-notification.service.d.ts +24 -0
- package/lib/services/cps-notification/internal/components/cps-notification-container/cps-notification-container.component.d.ts +44 -0
- package/lib/services/cps-notification/internal/components/cps-toast/cps-toast.component.d.ts +28 -0
- package/lib/services/cps-notification/utils/cps-notification-config.d.ts +49 -0
- package/lib/services/cps-notification/utils/internal/cps-notification-data.d.ts +23 -0
- package/package.json +1 -1
- package/public-api.d.ts +3 -0
- package/styles/_colors.scss +10 -10
|
@@ -78,7 +78,7 @@ export class CpsSelectComponent {
|
|
|
78
78
|
*/
|
|
79
79
|
this.chips = true;
|
|
80
80
|
/**
|
|
81
|
-
*
|
|
81
|
+
* Determines whether the chips can be directly removed.
|
|
82
82
|
* @group Props
|
|
83
83
|
*/
|
|
84
84
|
this.closableChips = true;
|
|
@@ -88,7 +88,7 @@ export class CpsSelectComponent {
|
|
|
88
88
|
*/
|
|
89
89
|
this.clearable = false;
|
|
90
90
|
/**
|
|
91
|
-
*
|
|
91
|
+
* Determines whether the dropdown list should open on clear.
|
|
92
92
|
* @group Props
|
|
93
93
|
*/
|
|
94
94
|
this.openOnClear = true;
|
|
@@ -98,7 +98,7 @@ export class CpsSelectComponent {
|
|
|
98
98
|
*/
|
|
99
99
|
this.options = [];
|
|
100
100
|
/**
|
|
101
|
-
* If multiple,
|
|
101
|
+
* If multiple, determines whether selected options should be ordered according to the initial order of the options.
|
|
102
102
|
* @group Props
|
|
103
103
|
*/
|
|
104
104
|
this.keepInitialOrder = false;
|
|
@@ -123,7 +123,7 @@ export class CpsSelectComponent {
|
|
|
123
123
|
*/
|
|
124
124
|
this.hideDetails = false;
|
|
125
125
|
/**
|
|
126
|
-
*
|
|
126
|
+
* Determines whether the component should have persistent clear icon.
|
|
127
127
|
* @group Props
|
|
128
128
|
*/
|
|
129
129
|
this.persistentClear = false;
|
|
@@ -143,7 +143,7 @@ export class CpsSelectComponent {
|
|
|
143
143
|
*/
|
|
144
144
|
this.loading = false;
|
|
145
145
|
/**
|
|
146
|
-
*
|
|
146
|
+
* Determines whether only the elements within scrollable area should be added into the DOM.
|
|
147
147
|
* @group Props
|
|
148
148
|
*/
|
|
149
149
|
this.virtualScroll = false;
|
|
@@ -168,7 +168,7 @@ export class CpsSelectComponent {
|
|
|
168
168
|
*/
|
|
169
169
|
this.infoTooltipMaxWidth = '100%';
|
|
170
170
|
/**
|
|
171
|
-
*
|
|
171
|
+
* Determines whether the infoTooltip is persistent.
|
|
172
172
|
* @group Props
|
|
173
173
|
*/
|
|
174
174
|
this.infoTooltipPersistent = false;
|
|
@@ -509,7 +509,7 @@ export class CpsSelectComponent {
|
|
|
509
509
|
}
|
|
510
510
|
}
|
|
511
511
|
CpsSelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CpsSelectComponent, deps: [{ token: i1.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
512
|
-
CpsSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: CpsSelectComponent, isStandalone: true, selector: "cps-select", inputs: { label: "label", placeholder: "placeholder", hint: "hint", returnObject: "returnObject", multiple: "multiple", disabled: "disabled", width: "width", selectAll: "selectAll", chips: "chips", closableChips: "closableChips", clearable: "clearable", openOnClear: "openOnClear", options: "options", keepInitialOrder: "keepInitialOrder", optionLabel: "optionLabel", optionValue: "optionValue", optionInfo: "optionInfo", hideDetails: "hideDetails", persistentClear: "persistentClear", prefixIcon: "prefixIcon", prefixIconSize: "prefixIconSize", loading: "loading", virtualScroll: "virtualScroll", numToleratedItems: "numToleratedItems", infoTooltip: "infoTooltip", infoTooltipClass: "infoTooltipClass", infoTooltipMaxWidth: "infoTooltipMaxWidth", infoTooltipPersistent: "infoTooltipPersistent", infoTooltipPosition: "infoTooltipPosition", optionsClass: "optionsClass", appearance: "appearance", _value: ["value", "_value"] }, outputs: { valueChanged: "valueChanged" }, providers: [LabelByValuePipe, CombineLabelsPipe, CheckOptionSelectedPipe], viewQueries: [{ propertyName: "selectBox", first: true, predicate: ["selectBox"], descendants: true }, { propertyName: "selectContainer", first: true, predicate: ["selectContainer"], descendants: true }, { propertyName: "virtualList", first: true, predicate: ["virtualList"], descendants: true }, { propertyName: "optionsMenu", first: true, predicate: ["optionsMenu"], descendants: true }, { propertyName: "optionsList", first: true, predicate: ["optionsList"], descendants: true }], ngImport: i0, template: "<div\n [ngStyle]=\"{ width: cvtWidth }\"\n class=\"cps-select\"\n tabindex=\"0\"\n [ngClass]=\"{ disabled: disabled, error: error, active: isOpened }\"\n #selectContainer\n (keydown)=\"onKeyDown($event)\"\n (blur)=\"onBlur()\">\n <div class=\"cps-select-label\" *ngIf=\"label\">\n <label>{{ label }}</label>\n <cps-info-circle\n *ngIf=\"infoTooltip\"\n class=\"cps-select-label-info-circle\"\n size=\"xsmall\"\n [tooltipPosition]=\"infoTooltipPosition\"\n [tooltipContentClass]=\"infoTooltipClass\"\n [tooltipMaxWidth]=\"infoTooltipMaxWidth\"\n [tooltipPersistent]=\"infoTooltipPersistent\"\n [tooltipText]=\"infoTooltip\">\n </cps-info-circle>\n </div>\n <div\n class=\"cps-select-container\"\n [class.focused]=\"isOpened\"\n [ngClass]=\"{\n 'persistent-clear': persistentClear,\n borderless: appearance === 'borderless',\n underlined: appearance === 'underlined'\n }\">\n <div class=\"cps-select-box\" #selectBox (click)=\"onBoxClick()\">\n <div class=\"cps-select-box-left\">\n <cps-icon\n *ngIf=\"prefixIcon\"\n [icon]=\"prefixIcon\"\n [style.color]=\"disabled ? '#9a9595' : null\"\n [size]=\"prefixIconSize\"\n class=\"prefix-icon\">\n </cps-icon>\n <div\n class=\"cps-select-box-placeholder\"\n *ngIf=\"\n (!multiple && isEmptyValue()) || (value?.length < 1 && multiple)\n \">\n {{ placeholder }}\n </div>\n <div\n class=\"cps-select-box-items\"\n *ngIf=\"\n (!multiple && !isEmptyValue()) || (value?.length > 0 && multiple)\n \">\n <span *ngIf=\"!multiple\" class=\"single-item\">\n {{\n returnObject\n ? value[optionLabel]\n : (value | labelByValue : options : optionValue : optionLabel)\n }}</span\n >\n <div *ngIf=\"multiple && !chips\" class=\"text-group\">\n <span class=\"text-group-item\">\n {{\n value\n | combineLabels\n : options\n : optionValue\n : optionLabel\n : returnObject\n }}\n </span>\n </div>\n\n <div *ngIf=\"multiple && chips\" class=\"chips-group\">\n <cps-chip\n *ngFor=\"let val of value\"\n [disabled]=\"disabled\"\n [closable]=\"closableChips\"\n (closed)=\"select(val, true)\"\n [label]=\"\n returnObject\n ? val[optionLabel]\n : (val | labelByValue : options : optionValue : optionLabel)\n \">\n </cps-chip>\n </div>\n </div>\n </div>\n <span class=\"cps-select-box-icons\">\n <span\n *ngIf=\"clearable && !disabled\"\n [style.visibility]=\"\n persistentClear ||\n (!persistentClear &&\n ((multiple && value?.length) || (!multiple && !isEmptyValue())))\n ? 'visible'\n : 'hidden'\n \"\n class=\"cps-select-box-clear-icon\">\n <cps-icon\n icon=\"delete\"\n size=\"small\"\n (click)=\"clear($event)\"></cps-icon>\n </span>\n <span class=\"cps-select-box-chevron\">\n <cps-icon\n icon=\"chevron-down\"\n size=\"small\"\n [color]=\"disabled ? 'text-light' : 'text-dark'\"></cps-icon>\n </span>\n </span>\n </div>\n\n <cps-menu\n #optionsMenu\n [withArrow]=\"false\"\n (beforeMenuHidden)=\"onBeforeOptionsHidden()\"\n hideTransitionOptions=\"0s linear\"\n [containerClass]=\"'cps-select-options-menu ' + optionsClass\">\n <div\n #optionsList\n class=\"cps-select-options\"\n [ngStyle]=\"{\n width: selectBoxWidth + 'px'\n }\">\n <ng-container *ngIf=\"!virtualScroll\">\n <div\n class=\"cps-select-options-option select-all-option\"\n [class.allselected]=\"value?.length === options.length\"\n *ngIf=\"multiple && selectAll && options.length > 1\"\n (click)=\"toggleAll()\">\n <span class=\"cps-select-options-option-left\">\n <span *ngIf=\"multiple\" class=\"cps-select-options-option-check\">\n </span>\n <span class=\"cps-select-options-option-label\">Select all</span>\n </span>\n </div>\n <ng-container *ngFor=\"let item of options\">\n <ng-container\n *ngTemplateOutlet=\"\n itemTemplate;\n context: {\n item: item\n }\n \"></ng-container>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"virtualScroll\">\n <p-virtualScroller\n #virtualList\n [value]=\"options\"\n [delay]=\"0\"\n [scrollHeight]=\"virtualListHeight + 'px'\"\n [options]=\"{ numToleratedItems: numToleratedItems }\"\n [itemSize]=\"virtualScrollItemSize\">\n <ng-template pTemplate=\"item\" let-item>\n <ng-container\n *ngTemplateOutlet=\"\n itemTemplate;\n context: {\n item: item\n }\n \"></ng-container>\n </ng-template>\n </p-virtualScroller>\n </ng-container>\n </div>\n </cps-menu>\n\n <cps-progress-linear\n *ngIf=\"loading\"\n height=\"3\"\n radius=\"4\"\n opacity=\"0.3\"\n class=\"select-progress-bar\"\n bgColor=\"transparent\">\n </cps-progress-linear>\n </div>\n <div *ngIf=\"!error && !hideDetails\" class=\"cps-select-hint\">{{ hint }}</div>\n <div *ngIf=\"error && !hideDetails\" class=\"cps-select-error\">{{ error }}</div>\n</div>\n\n<ng-template #itemTemplate let-item=\"item\">\n <div\n class=\"cps-select-options-option\"\n (click)=\"onOptionClick(item)\"\n [class.selected]=\"\n item | checkOptionSelected : value : multiple : returnObject : optionValue\n \">\n <span class=\"cps-select-options-option-left\">\n <span *ngIf=\"multiple\" class=\"cps-select-options-option-check\"> </span>\n <span\n class=\"cps-select-options-option-label\"\n [class.virtual-row]=\"virtualScroll\"\n >{{ item[optionLabel] }}</span\n >\n </span>\n\n <span\n class=\"cps-select-options-option-right\"\n [class.virtual-row]=\"virtualScroll\"\n >{{ item[optionInfo] }}</span\n >\n </div>\n</ng-template>\n", styles: [":host{display:flex}:host .cps-select{position:relative;width:100%;outline:none;font-family:Source Sans Pro,sans-serif;font-weight:400;display:grid}:host .cps-select .cps-select-container{position:relative}:host .cps-select .cps-select-container .select-progress-bar{position:absolute;bottom:1px;padding:0 1px}:host .cps-select .cps-select-container.borderless .cps-select-box,:host .cps-select .cps-select-container.underlined .cps-select-box{line-height:1;border:none!important;border-radius:0}:host .cps-select .cps-select-container.underlined .cps-select-box{border-bottom:1px solid var(--cps-color-line-light)!important}:host .cps-select.active .cps-select-box{border:1px solid var(--cps-color-calm)}:host .cps-select.active .cps-select-box .cps-select-box-left .prefix-icon{color:var(--cps-color-calm)}:host .cps-select.active .cps-select-box .cps-select-box-chevron{top:22px;transform:rotate(180deg)}:host .cps-select .cps-select-label{align-items:center;display:inline-flex;margin-bottom:.2rem;color:var(--cps-color-text-dark);font-size:.875rem;font-weight:600}:host .cps-select .cps-select-label .cps-select-label-info-circle{margin-left:8px;pointer-events:all}:host .cps-select .persistent-clear .cps-select-box .cps-select-box-icons .cps-select-box-clear-icon cps-icon,:host .cps-select .cps-select-container.focused .cps-select-box .cps-select-box-icons .cps-select-box-clear-icon cps-icon,:host .cps-select .cps-select-container:hover .cps-select-box .cps-select-box-icons .cps-select-box-clear-icon cps-icon{opacity:.5}:host .cps-select .cps-select-box{overflow:hidden;justify-content:space-between;min-height:38px;width:100%;cursor:pointer;background:white;font-size:1rem;outline:none;padding:0 12px;border-radius:4px;align-items:center;display:flex;border:1px solid var(--cps-color-line-light);transition-duration:.2s}:host .cps-select .cps-select-box-placeholder{color:var(--cps-color-text-lightest);font-style:italic}:host .cps-select .cps-select-box-items{margin-top:3px;margin-bottom:3px}:host .cps-select .cps-select-box-items .text-group,:host .cps-select .cps-select-box-items .single-item{color:var(--cps-color-text-dark);padding-top:3px;padding-bottom:3px}:host .cps-select .cps-select-box-items .chips-group cps-chip{padding-bottom:3px;padding-top:3px;padding-right:4px}:host .cps-select .cps-select-box-items .text-group-item{line-height:1.5}:host .cps-select .cps-select-box .cps-select-box-left{display:inline-flex;align-items:center}:host .cps-select .cps-select-box .cps-select-box-left .prefix-icon{margin-right:.5rem;color:var(--cps-color-text-dark)}:host .cps-select .cps-select-box:hover{border:1px solid var(--cps-color-calm)}:host .cps-select .cps-select-box:hover .cps-select-box-left .prefix-icon{color:var(--cps-color-calm)}:host .cps-select .cps-select-box .cps-select-box-icons{display:flex}:host .cps-select .cps-select-box .cps-select-box-icons .cps-select-box-clear-icon{display:flex;color:var(--cps-color-calm);margin-left:8px}:host .cps-select .cps-select-box .cps-select-box-icons .cps-select-box-clear-icon cps-icon{opacity:0;transition-duration:.2s}:host .cps-select .cps-select-box .cps-select-box-icons .cps-select-box-clear-icon cps-icon:hover{opacity:1!important}:host .cps-select .cps-select-box .cps-select-box-icons .cps-select-box-chevron{display:flex;margin-left:8px;transition-duration:.2s}:host .cps-select .cps-select-hint{color:var(--cps-color-text-mild);font-size:.75rem;min-height:1.125rem;line-height:1.125rem;cursor:default;margin-top:.2rem}:host .cps-select .cps-select-error{color:#c33;font-weight:700;font-size:.75rem;min-height:1.125rem;line-height:1.125rem;cursor:default;margin-top:.2rem}:host .cps-select.disabled{pointer-events:none}:host .cps-select.disabled .cps-select-box{background:#f7f7f7}:host .cps-select.disabled .cps-select-box-items{color:var(--cps-color-text-light)}:host .cps-select.disabled .cps-select-box-items .text-group,:host .cps-select.disabled .cps-select-box-items .single-item{color:var(--cps-color-text-light)}:host .cps-select.disabled .cps-select-label{color:var(--cps-color-text-mild)}:host .cps-select.error .cps-select-box{border-color:#c33!important;background:#fef3f2!important}.cps-select-options{background:white;overflow-x:hidden;max-height:242px;overflow-y:auto}.cps-select-options .cps-select-options-option{padding:12px;justify-content:space-between;display:flex;cursor:pointer}.cps-select-options .cps-select-options-option:hover{background:var(--cps-color-highlight-hover)}.cps-select-options .cps-select-options-option-label{color:var(--cps-color-text-dark)}.cps-select-options .cps-select-options-option-left{display:flex;align-items:center;margin-right:8px}.cps-select-options .cps-select-options-option-right{color:var(--cps-color-text-light);text-align:right}.cps-select-options .cps-select-options-option-check{background-color:transparent;border:0;width:16px;height:16px;cursor:pointer;display:inline-block;vertical-align:middle;box-sizing:border-box;position:relative;flex-shrink:0;transition:border-color 90ms cubic-bezier(0,0,.2,.1),background-color 90ms cubic-bezier(0,0,.2,.1);margin-right:8px;opacity:0}.cps-select-options .cps-select-options-option-check:after{color:var(--cps-color-calm);top:4px;left:1px;width:8px;height:3px;border-left:2px solid currentColor;transform:rotate(-45deg);opacity:1;box-sizing:content-box;position:absolute;content:\"\";border-bottom:2px solid currentColor;transition:opacity 90ms cubic-bezier(0,0,.2,.1)}.cps-select-options .cps-select-options-option.selected,.cps-select-options .cps-select-options-option.allselected{font-weight:600}.cps-select-options .cps-select-options-option.selected .cps-select-options-option-label,.cps-select-options .cps-select-options-option.allselected .cps-select-options-option-label{color:var(--cps-color-calm)}.cps-select-options .cps-select-options-option.selected .cps-select-options-option-check,.cps-select-options .cps-select-options-option.allselected .cps-select-options-option-check{opacity:1}.cps-select-options .cps-select-options-option.selected{background:var(--cps-color-highlight-selected)}.cps-select-options .cps-select-options-option.highlighten{background:var(--cps-color-highlight-active)}.cps-select-options .cps-select-options-option.selected.highlighten{background:var(--cps-color-highlight-selected-dark)}.cps-select-options .select-all-option{border-bottom:1px solid lightgrey;font-weight:600}.cps-select-options ::ng-deep .p-virtualscroller-list.p-scroller{overflow-anchor:none}.cps-select-options .virtual-row{white-space:nowrap}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: FormsModule }, { kind: "component", type: CpsIconComponent, selector: "cps-icon", inputs: ["icon", "size", "color"] }, { kind: "component", type: CpsChipComponent, selector: "cps-chip", inputs: ["label", "icon", "iconColor", "iconPosition", "closable", "disabled"], outputs: ["closed"] }, { kind: "component", type: CpsProgressLinearComponent, selector: "cps-progress-linear", inputs: ["width", "height", "color", "bgColor", "opacity", "radius"] }, { kind: "component", type: CpsInfoCircleComponent, selector: "cps-info-circle", inputs: ["size", "tooltipText", "tooltipPosition", "tooltipContentClass", "tooltipMaxWidth", "tooltipPersistent"] }, { kind: "pipe", type: LabelByValuePipe, name: "labelByValue" }, { kind: "pipe", type: CombineLabelsPipe, name: "combineLabels" }, { kind: "pipe", type: CheckOptionSelectedPipe, name: "checkOptionSelected" }, { kind: "ngmodule", type: VirtualScrollerModule }, { kind: "component", type: i3.VirtualScroller, selector: "p-virtualScroller", inputs: ["value", "itemSize", "style", "styleClass", "scrollHeight", "lazy", "options", "delay"], outputs: ["onLazyLoad"] }, { kind: "directive", type: i4.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: CpsMenuComponent, selector: "cps-menu", inputs: ["header", "items", "withArrow", "compressed", "focusOnShow", "persistent", "containerClass", "showTransitionOptions", "hideTransitionOptions"], outputs: ["menuShown", "menuHidden", "beforeMenuHidden", "contentClicked"] }] });
|
|
512
|
+
CpsSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: CpsSelectComponent, isStandalone: true, selector: "cps-select", inputs: { label: "label", placeholder: "placeholder", hint: "hint", returnObject: "returnObject", multiple: "multiple", disabled: "disabled", width: "width", selectAll: "selectAll", chips: "chips", closableChips: "closableChips", clearable: "clearable", openOnClear: "openOnClear", options: "options", keepInitialOrder: "keepInitialOrder", optionLabel: "optionLabel", optionValue: "optionValue", optionInfo: "optionInfo", hideDetails: "hideDetails", persistentClear: "persistentClear", prefixIcon: "prefixIcon", prefixIconSize: "prefixIconSize", loading: "loading", virtualScroll: "virtualScroll", numToleratedItems: "numToleratedItems", infoTooltip: "infoTooltip", infoTooltipClass: "infoTooltipClass", infoTooltipMaxWidth: "infoTooltipMaxWidth", infoTooltipPersistent: "infoTooltipPersistent", infoTooltipPosition: "infoTooltipPosition", optionsClass: "optionsClass", appearance: "appearance", _value: ["value", "_value"] }, outputs: { valueChanged: "valueChanged" }, providers: [LabelByValuePipe, CombineLabelsPipe, CheckOptionSelectedPipe], viewQueries: [{ propertyName: "selectBox", first: true, predicate: ["selectBox"], descendants: true }, { propertyName: "selectContainer", first: true, predicate: ["selectContainer"], descendants: true }, { propertyName: "virtualList", first: true, predicate: ["virtualList"], descendants: true }, { propertyName: "optionsMenu", first: true, predicate: ["optionsMenu"], descendants: true }, { propertyName: "optionsList", first: true, predicate: ["optionsList"], descendants: true }], ngImport: i0, template: "<div\n [ngStyle]=\"{ width: cvtWidth }\"\n class=\"cps-select\"\n tabindex=\"0\"\n [ngClass]=\"{ disabled: disabled, error: error, active: isOpened }\"\n #selectContainer\n (keydown)=\"onKeyDown($event)\"\n (blur)=\"onBlur()\">\n <div class=\"cps-select-label\" *ngIf=\"label\">\n <label>{{ label }}</label>\n <cps-info-circle\n *ngIf=\"infoTooltip\"\n class=\"cps-select-label-info-circle\"\n size=\"xsmall\"\n [tooltipPosition]=\"infoTooltipPosition\"\n [tooltipContentClass]=\"infoTooltipClass\"\n [tooltipMaxWidth]=\"infoTooltipMaxWidth\"\n [tooltipPersistent]=\"infoTooltipPersistent\"\n [tooltipText]=\"infoTooltip\">\n </cps-info-circle>\n </div>\n <div\n class=\"cps-select-container\"\n [class.focused]=\"isOpened\"\n [ngClass]=\"{\n 'persistent-clear': persistentClear,\n borderless: appearance === 'borderless',\n underlined: appearance === 'underlined'\n }\">\n <div class=\"cps-select-box\" #selectBox (click)=\"onBoxClick()\">\n <div class=\"cps-select-box-left\">\n <cps-icon\n *ngIf=\"prefixIcon\"\n [icon]=\"prefixIcon\"\n [style.color]=\"disabled ? '#9a9595' : null\"\n [size]=\"prefixIconSize\"\n class=\"prefix-icon\">\n </cps-icon>\n <div\n class=\"cps-select-box-placeholder\"\n *ngIf=\"\n (!multiple && isEmptyValue()) || (value?.length < 1 && multiple)\n \">\n {{ placeholder }}\n </div>\n <div\n class=\"cps-select-box-items\"\n *ngIf=\"\n (!multiple && !isEmptyValue()) || (value?.length > 0 && multiple)\n \">\n <span *ngIf=\"!multiple\" class=\"single-item\">\n {{\n returnObject\n ? value[optionLabel]\n : (value | labelByValue : options : optionValue : optionLabel)\n }}</span\n >\n <div *ngIf=\"multiple && !chips\" class=\"text-group\">\n <span class=\"text-group-item\">\n {{\n value\n | combineLabels\n : options\n : optionValue\n : optionLabel\n : returnObject\n }}\n </span>\n </div>\n\n <div *ngIf=\"multiple && chips\" class=\"chips-group\">\n <cps-chip\n *ngFor=\"let val of value\"\n [disabled]=\"disabled\"\n [closable]=\"closableChips\"\n (closed)=\"select(val, true)\"\n [label]=\"\n returnObject\n ? val[optionLabel]\n : (val | labelByValue : options : optionValue : optionLabel)\n \">\n </cps-chip>\n </div>\n </div>\n </div>\n <span class=\"cps-select-box-icons\">\n <span\n *ngIf=\"clearable && !disabled\"\n [style.visibility]=\"\n persistentClear ||\n (!persistentClear &&\n ((multiple && value?.length) || (!multiple && !isEmptyValue())))\n ? 'visible'\n : 'hidden'\n \"\n class=\"cps-select-box-clear-icon\">\n <cps-icon\n icon=\"delete\"\n size=\"small\"\n (click)=\"clear($event)\"></cps-icon>\n </span>\n <span class=\"cps-select-box-chevron\">\n <cps-icon\n icon=\"chevron-down\"\n size=\"small\"\n [color]=\"disabled ? 'text-light' : 'text-dark'\"></cps-icon>\n </span>\n </span>\n </div>\n\n <cps-menu\n #optionsMenu\n [withArrow]=\"false\"\n (beforeMenuHidden)=\"onBeforeOptionsHidden()\"\n hideTransitionOptions=\"0s linear\"\n [containerClass]=\"'cps-select-options-menu ' + optionsClass\">\n <div\n #optionsList\n class=\"cps-select-options\"\n [ngStyle]=\"{\n width: selectBoxWidth + 'px'\n }\">\n <ng-container *ngIf=\"!virtualScroll\">\n <div\n class=\"cps-select-options-option select-all-option\"\n [class.allselected]=\"value?.length === options.length\"\n *ngIf=\"multiple && selectAll && options.length > 1\"\n (click)=\"toggleAll()\">\n <span class=\"cps-select-options-option-left\">\n <span *ngIf=\"multiple\" class=\"cps-select-options-option-check\">\n </span>\n <span class=\"cps-select-options-option-label\">Select all</span>\n </span>\n </div>\n <ng-container *ngFor=\"let item of options\">\n <ng-container\n *ngTemplateOutlet=\"\n itemTemplate;\n context: {\n item: item\n }\n \"></ng-container>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"virtualScroll\">\n <p-virtualScroller\n #virtualList\n [value]=\"options\"\n [delay]=\"0\"\n [scrollHeight]=\"virtualListHeight + 'px'\"\n [options]=\"{ numToleratedItems: numToleratedItems }\"\n [itemSize]=\"virtualScrollItemSize\">\n <ng-template pTemplate=\"item\" let-item>\n <ng-container\n *ngTemplateOutlet=\"\n itemTemplate;\n context: {\n item: item\n }\n \"></ng-container>\n </ng-template>\n </p-virtualScroller>\n </ng-container>\n </div>\n </cps-menu>\n\n <cps-progress-linear\n *ngIf=\"loading\"\n height=\"3\"\n radius=\"4\"\n opacity=\"0.3\"\n class=\"select-progress-bar\"\n bgColor=\"transparent\">\n </cps-progress-linear>\n </div>\n <div *ngIf=\"!error && !hideDetails\" class=\"cps-select-hint\">{{ hint }}</div>\n <div *ngIf=\"error && !hideDetails\" class=\"cps-select-error\">{{ error }}</div>\n</div>\n\n<ng-template #itemTemplate let-item=\"item\">\n <div\n class=\"cps-select-options-option\"\n (click)=\"onOptionClick(item)\"\n [class.selected]=\"\n item | checkOptionSelected : value : multiple : returnObject : optionValue\n \">\n <span class=\"cps-select-options-option-left\">\n <span *ngIf=\"multiple\" class=\"cps-select-options-option-check\"> </span>\n <span\n class=\"cps-select-options-option-label\"\n [class.virtual-row]=\"virtualScroll\"\n >{{ item[optionLabel] }}</span\n >\n </span>\n\n <span\n class=\"cps-select-options-option-right\"\n [class.virtual-row]=\"virtualScroll\"\n >{{ item[optionInfo] }}</span\n >\n </div>\n</ng-template>\n", styles: [":host{display:flex}:host .cps-select{position:relative;width:100%;outline:none;font-family:Source Sans Pro,sans-serif;font-weight:400;display:grid}:host .cps-select .cps-select-container{position:relative}:host .cps-select .cps-select-container .select-progress-bar{position:absolute;bottom:1px;padding:0 1px}:host .cps-select .cps-select-container.borderless .cps-select-box,:host .cps-select .cps-select-container.underlined .cps-select-box{line-height:1;border:none!important;border-radius:0}:host .cps-select .cps-select-container.underlined .cps-select-box{border-bottom:1px solid var(--cps-color-line-light)!important}:host .cps-select.active .cps-select-box{border:1px solid var(--cps-color-calm)}:host .cps-select.active .cps-select-box .cps-select-box-left .prefix-icon{color:var(--cps-color-calm)}:host .cps-select.active .cps-select-box .cps-select-box-chevron{top:22px;transform:rotate(180deg)}:host .cps-select .cps-select-label{align-items:center;display:inline-flex;margin-bottom:.2rem;color:var(--cps-color-text-dark);font-size:.875rem;font-weight:600}:host .cps-select .cps-select-label .cps-select-label-info-circle{margin-left:8px;pointer-events:all}:host .cps-select .persistent-clear .cps-select-box .cps-select-box-icons .cps-select-box-clear-icon cps-icon,:host .cps-select .cps-select-container.focused .cps-select-box .cps-select-box-icons .cps-select-box-clear-icon cps-icon,:host .cps-select .cps-select-container:hover .cps-select-box .cps-select-box-icons .cps-select-box-clear-icon cps-icon{opacity:.5}:host .cps-select .cps-select-box{overflow:hidden;justify-content:space-between;min-height:38px;width:100%;cursor:pointer;background:white;font-size:1rem;outline:none;padding:0 12px;border-radius:4px;align-items:center;display:flex;border:1px solid var(--cps-color-line-light);transition-duration:.2s}:host .cps-select .cps-select-box-placeholder{color:var(--cps-color-text-lightest);font-style:italic}:host .cps-select .cps-select-box-items{margin-top:3px;margin-bottom:3px}:host .cps-select .cps-select-box-items .text-group,:host .cps-select .cps-select-box-items .single-item{color:var(--cps-color-text-dark);padding-top:3px;padding-bottom:3px}:host .cps-select .cps-select-box-items .chips-group cps-chip{padding-bottom:3px;padding-top:3px;padding-right:4px}:host .cps-select .cps-select-box-items .text-group-item{line-height:1.5}:host .cps-select .cps-select-box .cps-select-box-left{display:inline-flex;align-items:center}:host .cps-select .cps-select-box .cps-select-box-left .prefix-icon{margin-right:.5rem;color:var(--cps-color-text-dark)}:host .cps-select .cps-select-box:hover{border:1px solid var(--cps-color-calm)}:host .cps-select .cps-select-box:hover .cps-select-box-left .prefix-icon{color:var(--cps-color-calm)}:host .cps-select .cps-select-box .cps-select-box-icons{display:flex}:host .cps-select .cps-select-box .cps-select-box-icons .cps-select-box-clear-icon{display:flex;color:var(--cps-color-calm);margin-left:8px}:host .cps-select .cps-select-box .cps-select-box-icons .cps-select-box-clear-icon cps-icon{opacity:0;transition-duration:.2s}:host .cps-select .cps-select-box .cps-select-box-icons .cps-select-box-clear-icon cps-icon:hover{opacity:1!important}:host .cps-select .cps-select-box .cps-select-box-icons .cps-select-box-chevron{display:flex;margin-left:8px;transition-duration:.2s}:host .cps-select .cps-select-hint{color:var(--cps-color-text-mild);font-size:.75rem;min-height:1.125rem;line-height:1.125rem;cursor:default;margin-top:.2rem}:host .cps-select .cps-select-error{color:var(--cps-color-error);font-weight:700;font-size:.75rem;min-height:1.125rem;line-height:1.125rem;cursor:default;margin-top:.2rem}:host .cps-select.disabled{pointer-events:none}:host .cps-select.disabled .cps-select-box{background:#f7f7f7}:host .cps-select.disabled .cps-select-box-items{color:var(--cps-color-text-light)}:host .cps-select.disabled .cps-select-box-items .text-group,:host .cps-select.disabled .cps-select-box-items .single-item{color:var(--cps-color-text-light)}:host .cps-select.disabled .cps-select-label{color:var(--cps-color-text-mild)}:host .cps-select.error .cps-select-box{border-color:var(--cps-color-error)!important;background:#fef3f2!important}.cps-select-options{background:white;overflow-x:hidden;max-height:242px;overflow-y:auto}.cps-select-options .cps-select-options-option{padding:12px;justify-content:space-between;display:flex;cursor:pointer}.cps-select-options .cps-select-options-option:hover{background:var(--cps-color-highlight-hover)}.cps-select-options .cps-select-options-option-label{color:var(--cps-color-text-dark)}.cps-select-options .cps-select-options-option-left{display:flex;align-items:center;margin-right:8px}.cps-select-options .cps-select-options-option-right{color:var(--cps-color-text-light);text-align:right}.cps-select-options .cps-select-options-option-check{background-color:transparent;border:0;width:16px;height:16px;cursor:pointer;display:inline-block;vertical-align:middle;box-sizing:border-box;position:relative;flex-shrink:0;transition:border-color 90ms cubic-bezier(0,0,.2,.1),background-color 90ms cubic-bezier(0,0,.2,.1);margin-right:8px;opacity:0}.cps-select-options .cps-select-options-option-check:after{color:var(--cps-color-calm);top:4px;left:1px;width:8px;height:3px;border-left:2px solid currentColor;transform:rotate(-45deg);opacity:1;box-sizing:content-box;position:absolute;content:\"\";border-bottom:2px solid currentColor;transition:opacity 90ms cubic-bezier(0,0,.2,.1)}.cps-select-options .cps-select-options-option.selected,.cps-select-options .cps-select-options-option.allselected{font-weight:600}.cps-select-options .cps-select-options-option.selected .cps-select-options-option-label,.cps-select-options .cps-select-options-option.allselected .cps-select-options-option-label{color:var(--cps-color-calm)}.cps-select-options .cps-select-options-option.selected .cps-select-options-option-check,.cps-select-options .cps-select-options-option.allselected .cps-select-options-option-check{opacity:1}.cps-select-options .cps-select-options-option.selected{background:var(--cps-color-highlight-selected)}.cps-select-options .cps-select-options-option.highlighten{background:var(--cps-color-highlight-active)}.cps-select-options .cps-select-options-option.selected.highlighten{background:var(--cps-color-highlight-selected-dark)}.cps-select-options .select-all-option{border-bottom:1px solid lightgrey;font-weight:600}.cps-select-options ::ng-deep .p-virtualscroller-list.p-scroller{overflow-anchor:none}.cps-select-options .virtual-row{white-space:nowrap}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: FormsModule }, { kind: "component", type: CpsIconComponent, selector: "cps-icon", inputs: ["icon", "size", "color"] }, { kind: "component", type: CpsChipComponent, selector: "cps-chip", inputs: ["label", "icon", "iconColor", "iconPosition", "closable", "disabled"], outputs: ["closed"] }, { kind: "component", type: CpsProgressLinearComponent, selector: "cps-progress-linear", inputs: ["width", "height", "color", "bgColor", "opacity", "radius"] }, { kind: "component", type: CpsInfoCircleComponent, selector: "cps-info-circle", inputs: ["size", "tooltipText", "tooltipPosition", "tooltipContentClass", "tooltipMaxWidth", "tooltipPersistent"] }, { kind: "pipe", type: LabelByValuePipe, name: "labelByValue" }, { kind: "pipe", type: CombineLabelsPipe, name: "combineLabels" }, { kind: "pipe", type: CheckOptionSelectedPipe, name: "checkOptionSelected" }, { kind: "ngmodule", type: VirtualScrollerModule }, { kind: "component", type: i3.VirtualScroller, selector: "p-virtualScroller", inputs: ["value", "itemSize", "style", "styleClass", "scrollHeight", "lazy", "options", "delay"], outputs: ["onLazyLoad"] }, { kind: "directive", type: i4.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: CpsMenuComponent, selector: "cps-menu", inputs: ["header", "items", "withArrow", "compressed", "focusOnShow", "persistent", "containerClass", "showTransitionOptions", "hideTransitionOptions"], outputs: ["menuShown", "menuHidden", "beforeMenuHidden", "contentClicked"] }] });
|
|
513
513
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CpsSelectComponent, decorators: [{
|
|
514
514
|
type: Component,
|
|
515
515
|
args: [{ standalone: true, imports: [
|
|
@@ -524,7 +524,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
|
524
524
|
CheckOptionSelectedPipe,
|
|
525
525
|
VirtualScrollerModule,
|
|
526
526
|
CpsMenuComponent
|
|
527
|
-
], providers: [LabelByValuePipe, CombineLabelsPipe, CheckOptionSelectedPipe], selector: 'cps-select', template: "<div\n [ngStyle]=\"{ width: cvtWidth }\"\n class=\"cps-select\"\n tabindex=\"0\"\n [ngClass]=\"{ disabled: disabled, error: error, active: isOpened }\"\n #selectContainer\n (keydown)=\"onKeyDown($event)\"\n (blur)=\"onBlur()\">\n <div class=\"cps-select-label\" *ngIf=\"label\">\n <label>{{ label }}</label>\n <cps-info-circle\n *ngIf=\"infoTooltip\"\n class=\"cps-select-label-info-circle\"\n size=\"xsmall\"\n [tooltipPosition]=\"infoTooltipPosition\"\n [tooltipContentClass]=\"infoTooltipClass\"\n [tooltipMaxWidth]=\"infoTooltipMaxWidth\"\n [tooltipPersistent]=\"infoTooltipPersistent\"\n [tooltipText]=\"infoTooltip\">\n </cps-info-circle>\n </div>\n <div\n class=\"cps-select-container\"\n [class.focused]=\"isOpened\"\n [ngClass]=\"{\n 'persistent-clear': persistentClear,\n borderless: appearance === 'borderless',\n underlined: appearance === 'underlined'\n }\">\n <div class=\"cps-select-box\" #selectBox (click)=\"onBoxClick()\">\n <div class=\"cps-select-box-left\">\n <cps-icon\n *ngIf=\"prefixIcon\"\n [icon]=\"prefixIcon\"\n [style.color]=\"disabled ? '#9a9595' : null\"\n [size]=\"prefixIconSize\"\n class=\"prefix-icon\">\n </cps-icon>\n <div\n class=\"cps-select-box-placeholder\"\n *ngIf=\"\n (!multiple && isEmptyValue()) || (value?.length < 1 && multiple)\n \">\n {{ placeholder }}\n </div>\n <div\n class=\"cps-select-box-items\"\n *ngIf=\"\n (!multiple && !isEmptyValue()) || (value?.length > 0 && multiple)\n \">\n <span *ngIf=\"!multiple\" class=\"single-item\">\n {{\n returnObject\n ? value[optionLabel]\n : (value | labelByValue : options : optionValue : optionLabel)\n }}</span\n >\n <div *ngIf=\"multiple && !chips\" class=\"text-group\">\n <span class=\"text-group-item\">\n {{\n value\n | combineLabels\n : options\n : optionValue\n : optionLabel\n : returnObject\n }}\n </span>\n </div>\n\n <div *ngIf=\"multiple && chips\" class=\"chips-group\">\n <cps-chip\n *ngFor=\"let val of value\"\n [disabled]=\"disabled\"\n [closable]=\"closableChips\"\n (closed)=\"select(val, true)\"\n [label]=\"\n returnObject\n ? val[optionLabel]\n : (val | labelByValue : options : optionValue : optionLabel)\n \">\n </cps-chip>\n </div>\n </div>\n </div>\n <span class=\"cps-select-box-icons\">\n <span\n *ngIf=\"clearable && !disabled\"\n [style.visibility]=\"\n persistentClear ||\n (!persistentClear &&\n ((multiple && value?.length) || (!multiple && !isEmptyValue())))\n ? 'visible'\n : 'hidden'\n \"\n class=\"cps-select-box-clear-icon\">\n <cps-icon\n icon=\"delete\"\n size=\"small\"\n (click)=\"clear($event)\"></cps-icon>\n </span>\n <span class=\"cps-select-box-chevron\">\n <cps-icon\n icon=\"chevron-down\"\n size=\"small\"\n [color]=\"disabled ? 'text-light' : 'text-dark'\"></cps-icon>\n </span>\n </span>\n </div>\n\n <cps-menu\n #optionsMenu\n [withArrow]=\"false\"\n (beforeMenuHidden)=\"onBeforeOptionsHidden()\"\n hideTransitionOptions=\"0s linear\"\n [containerClass]=\"'cps-select-options-menu ' + optionsClass\">\n <div\n #optionsList\n class=\"cps-select-options\"\n [ngStyle]=\"{\n width: selectBoxWidth + 'px'\n }\">\n <ng-container *ngIf=\"!virtualScroll\">\n <div\n class=\"cps-select-options-option select-all-option\"\n [class.allselected]=\"value?.length === options.length\"\n *ngIf=\"multiple && selectAll && options.length > 1\"\n (click)=\"toggleAll()\">\n <span class=\"cps-select-options-option-left\">\n <span *ngIf=\"multiple\" class=\"cps-select-options-option-check\">\n </span>\n <span class=\"cps-select-options-option-label\">Select all</span>\n </span>\n </div>\n <ng-container *ngFor=\"let item of options\">\n <ng-container\n *ngTemplateOutlet=\"\n itemTemplate;\n context: {\n item: item\n }\n \"></ng-container>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"virtualScroll\">\n <p-virtualScroller\n #virtualList\n [value]=\"options\"\n [delay]=\"0\"\n [scrollHeight]=\"virtualListHeight + 'px'\"\n [options]=\"{ numToleratedItems: numToleratedItems }\"\n [itemSize]=\"virtualScrollItemSize\">\n <ng-template pTemplate=\"item\" let-item>\n <ng-container\n *ngTemplateOutlet=\"\n itemTemplate;\n context: {\n item: item\n }\n \"></ng-container>\n </ng-template>\n </p-virtualScroller>\n </ng-container>\n </div>\n </cps-menu>\n\n <cps-progress-linear\n *ngIf=\"loading\"\n height=\"3\"\n radius=\"4\"\n opacity=\"0.3\"\n class=\"select-progress-bar\"\n bgColor=\"transparent\">\n </cps-progress-linear>\n </div>\n <div *ngIf=\"!error && !hideDetails\" class=\"cps-select-hint\">{{ hint }}</div>\n <div *ngIf=\"error && !hideDetails\" class=\"cps-select-error\">{{ error }}</div>\n</div>\n\n<ng-template #itemTemplate let-item=\"item\">\n <div\n class=\"cps-select-options-option\"\n (click)=\"onOptionClick(item)\"\n [class.selected]=\"\n item | checkOptionSelected : value : multiple : returnObject : optionValue\n \">\n <span class=\"cps-select-options-option-left\">\n <span *ngIf=\"multiple\" class=\"cps-select-options-option-check\"> </span>\n <span\n class=\"cps-select-options-option-label\"\n [class.virtual-row]=\"virtualScroll\"\n >{{ item[optionLabel] }}</span\n >\n </span>\n\n <span\n class=\"cps-select-options-option-right\"\n [class.virtual-row]=\"virtualScroll\"\n >{{ item[optionInfo] }}</span\n >\n </div>\n</ng-template>\n", styles: [":host{display:flex}:host .cps-select{position:relative;width:100%;outline:none;font-family:Source Sans Pro,sans-serif;font-weight:400;display:grid}:host .cps-select .cps-select-container{position:relative}:host .cps-select .cps-select-container .select-progress-bar{position:absolute;bottom:1px;padding:0 1px}:host .cps-select .cps-select-container.borderless .cps-select-box,:host .cps-select .cps-select-container.underlined .cps-select-box{line-height:1;border:none!important;border-radius:0}:host .cps-select .cps-select-container.underlined .cps-select-box{border-bottom:1px solid var(--cps-color-line-light)!important}:host .cps-select.active .cps-select-box{border:1px solid var(--cps-color-calm)}:host .cps-select.active .cps-select-box .cps-select-box-left .prefix-icon{color:var(--cps-color-calm)}:host .cps-select.active .cps-select-box .cps-select-box-chevron{top:22px;transform:rotate(180deg)}:host .cps-select .cps-select-label{align-items:center;display:inline-flex;margin-bottom:.2rem;color:var(--cps-color-text-dark);font-size:.875rem;font-weight:600}:host .cps-select .cps-select-label .cps-select-label-info-circle{margin-left:8px;pointer-events:all}:host .cps-select .persistent-clear .cps-select-box .cps-select-box-icons .cps-select-box-clear-icon cps-icon,:host .cps-select .cps-select-container.focused .cps-select-box .cps-select-box-icons .cps-select-box-clear-icon cps-icon,:host .cps-select .cps-select-container:hover .cps-select-box .cps-select-box-icons .cps-select-box-clear-icon cps-icon{opacity:.5}:host .cps-select .cps-select-box{overflow:hidden;justify-content:space-between;min-height:38px;width:100%;cursor:pointer;background:white;font-size:1rem;outline:none;padding:0 12px;border-radius:4px;align-items:center;display:flex;border:1px solid var(--cps-color-line-light);transition-duration:.2s}:host .cps-select .cps-select-box-placeholder{color:var(--cps-color-text-lightest);font-style:italic}:host .cps-select .cps-select-box-items{margin-top:3px;margin-bottom:3px}:host .cps-select .cps-select-box-items .text-group,:host .cps-select .cps-select-box-items .single-item{color:var(--cps-color-text-dark);padding-top:3px;padding-bottom:3px}:host .cps-select .cps-select-box-items .chips-group cps-chip{padding-bottom:3px;padding-top:3px;padding-right:4px}:host .cps-select .cps-select-box-items .text-group-item{line-height:1.5}:host .cps-select .cps-select-box .cps-select-box-left{display:inline-flex;align-items:center}:host .cps-select .cps-select-box .cps-select-box-left .prefix-icon{margin-right:.5rem;color:var(--cps-color-text-dark)}:host .cps-select .cps-select-box:hover{border:1px solid var(--cps-color-calm)}:host .cps-select .cps-select-box:hover .cps-select-box-left .prefix-icon{color:var(--cps-color-calm)}:host .cps-select .cps-select-box .cps-select-box-icons{display:flex}:host .cps-select .cps-select-box .cps-select-box-icons .cps-select-box-clear-icon{display:flex;color:var(--cps-color-calm);margin-left:8px}:host .cps-select .cps-select-box .cps-select-box-icons .cps-select-box-clear-icon cps-icon{opacity:0;transition-duration:.2s}:host .cps-select .cps-select-box .cps-select-box-icons .cps-select-box-clear-icon cps-icon:hover{opacity:1!important}:host .cps-select .cps-select-box .cps-select-box-icons .cps-select-box-chevron{display:flex;margin-left:8px;transition-duration:.2s}:host .cps-select .cps-select-hint{color:var(--cps-color-text-mild);font-size:.75rem;min-height:1.125rem;line-height:1.125rem;cursor:default;margin-top:.2rem}:host .cps-select .cps-select-error{color:#c33;font-weight:700;font-size:.75rem;min-height:1.125rem;line-height:1.125rem;cursor:default;margin-top:.2rem}:host .cps-select.disabled{pointer-events:none}:host .cps-select.disabled .cps-select-box{background:#f7f7f7}:host .cps-select.disabled .cps-select-box-items{color:var(--cps-color-text-light)}:host .cps-select.disabled .cps-select-box-items .text-group,:host .cps-select.disabled .cps-select-box-items .single-item{color:var(--cps-color-text-light)}:host .cps-select.disabled .cps-select-label{color:var(--cps-color-text-mild)}:host .cps-select.error .cps-select-box{border-color:#c33!important;background:#fef3f2!important}.cps-select-options{background:white;overflow-x:hidden;max-height:242px;overflow-y:auto}.cps-select-options .cps-select-options-option{padding:12px;justify-content:space-between;display:flex;cursor:pointer}.cps-select-options .cps-select-options-option:hover{background:var(--cps-color-highlight-hover)}.cps-select-options .cps-select-options-option-label{color:var(--cps-color-text-dark)}.cps-select-options .cps-select-options-option-left{display:flex;align-items:center;margin-right:8px}.cps-select-options .cps-select-options-option-right{color:var(--cps-color-text-light);text-align:right}.cps-select-options .cps-select-options-option-check{background-color:transparent;border:0;width:16px;height:16px;cursor:pointer;display:inline-block;vertical-align:middle;box-sizing:border-box;position:relative;flex-shrink:0;transition:border-color 90ms cubic-bezier(0,0,.2,.1),background-color 90ms cubic-bezier(0,0,.2,.1);margin-right:8px;opacity:0}.cps-select-options .cps-select-options-option-check:after{color:var(--cps-color-calm);top:4px;left:1px;width:8px;height:3px;border-left:2px solid currentColor;transform:rotate(-45deg);opacity:1;box-sizing:content-box;position:absolute;content:\"\";border-bottom:2px solid currentColor;transition:opacity 90ms cubic-bezier(0,0,.2,.1)}.cps-select-options .cps-select-options-option.selected,.cps-select-options .cps-select-options-option.allselected{font-weight:600}.cps-select-options .cps-select-options-option.selected .cps-select-options-option-label,.cps-select-options .cps-select-options-option.allselected .cps-select-options-option-label{color:var(--cps-color-calm)}.cps-select-options .cps-select-options-option.selected .cps-select-options-option-check,.cps-select-options .cps-select-options-option.allselected .cps-select-options-option-check{opacity:1}.cps-select-options .cps-select-options-option.selected{background:var(--cps-color-highlight-selected)}.cps-select-options .cps-select-options-option.highlighten{background:var(--cps-color-highlight-active)}.cps-select-options .cps-select-options-option.selected.highlighten{background:var(--cps-color-highlight-selected-dark)}.cps-select-options .select-all-option{border-bottom:1px solid lightgrey;font-weight:600}.cps-select-options ::ng-deep .p-virtualscroller-list.p-scroller{overflow-anchor:none}.cps-select-options .virtual-row{white-space:nowrap}\n"] }]
|
|
527
|
+
], providers: [LabelByValuePipe, CombineLabelsPipe, CheckOptionSelectedPipe], selector: 'cps-select', template: "<div\n [ngStyle]=\"{ width: cvtWidth }\"\n class=\"cps-select\"\n tabindex=\"0\"\n [ngClass]=\"{ disabled: disabled, error: error, active: isOpened }\"\n #selectContainer\n (keydown)=\"onKeyDown($event)\"\n (blur)=\"onBlur()\">\n <div class=\"cps-select-label\" *ngIf=\"label\">\n <label>{{ label }}</label>\n <cps-info-circle\n *ngIf=\"infoTooltip\"\n class=\"cps-select-label-info-circle\"\n size=\"xsmall\"\n [tooltipPosition]=\"infoTooltipPosition\"\n [tooltipContentClass]=\"infoTooltipClass\"\n [tooltipMaxWidth]=\"infoTooltipMaxWidth\"\n [tooltipPersistent]=\"infoTooltipPersistent\"\n [tooltipText]=\"infoTooltip\">\n </cps-info-circle>\n </div>\n <div\n class=\"cps-select-container\"\n [class.focused]=\"isOpened\"\n [ngClass]=\"{\n 'persistent-clear': persistentClear,\n borderless: appearance === 'borderless',\n underlined: appearance === 'underlined'\n }\">\n <div class=\"cps-select-box\" #selectBox (click)=\"onBoxClick()\">\n <div class=\"cps-select-box-left\">\n <cps-icon\n *ngIf=\"prefixIcon\"\n [icon]=\"prefixIcon\"\n [style.color]=\"disabled ? '#9a9595' : null\"\n [size]=\"prefixIconSize\"\n class=\"prefix-icon\">\n </cps-icon>\n <div\n class=\"cps-select-box-placeholder\"\n *ngIf=\"\n (!multiple && isEmptyValue()) || (value?.length < 1 && multiple)\n \">\n {{ placeholder }}\n </div>\n <div\n class=\"cps-select-box-items\"\n *ngIf=\"\n (!multiple && !isEmptyValue()) || (value?.length > 0 && multiple)\n \">\n <span *ngIf=\"!multiple\" class=\"single-item\">\n {{\n returnObject\n ? value[optionLabel]\n : (value | labelByValue : options : optionValue : optionLabel)\n }}</span\n >\n <div *ngIf=\"multiple && !chips\" class=\"text-group\">\n <span class=\"text-group-item\">\n {{\n value\n | combineLabels\n : options\n : optionValue\n : optionLabel\n : returnObject\n }}\n </span>\n </div>\n\n <div *ngIf=\"multiple && chips\" class=\"chips-group\">\n <cps-chip\n *ngFor=\"let val of value\"\n [disabled]=\"disabled\"\n [closable]=\"closableChips\"\n (closed)=\"select(val, true)\"\n [label]=\"\n returnObject\n ? val[optionLabel]\n : (val | labelByValue : options : optionValue : optionLabel)\n \">\n </cps-chip>\n </div>\n </div>\n </div>\n <span class=\"cps-select-box-icons\">\n <span\n *ngIf=\"clearable && !disabled\"\n [style.visibility]=\"\n persistentClear ||\n (!persistentClear &&\n ((multiple && value?.length) || (!multiple && !isEmptyValue())))\n ? 'visible'\n : 'hidden'\n \"\n class=\"cps-select-box-clear-icon\">\n <cps-icon\n icon=\"delete\"\n size=\"small\"\n (click)=\"clear($event)\"></cps-icon>\n </span>\n <span class=\"cps-select-box-chevron\">\n <cps-icon\n icon=\"chevron-down\"\n size=\"small\"\n [color]=\"disabled ? 'text-light' : 'text-dark'\"></cps-icon>\n </span>\n </span>\n </div>\n\n <cps-menu\n #optionsMenu\n [withArrow]=\"false\"\n (beforeMenuHidden)=\"onBeforeOptionsHidden()\"\n hideTransitionOptions=\"0s linear\"\n [containerClass]=\"'cps-select-options-menu ' + optionsClass\">\n <div\n #optionsList\n class=\"cps-select-options\"\n [ngStyle]=\"{\n width: selectBoxWidth + 'px'\n }\">\n <ng-container *ngIf=\"!virtualScroll\">\n <div\n class=\"cps-select-options-option select-all-option\"\n [class.allselected]=\"value?.length === options.length\"\n *ngIf=\"multiple && selectAll && options.length > 1\"\n (click)=\"toggleAll()\">\n <span class=\"cps-select-options-option-left\">\n <span *ngIf=\"multiple\" class=\"cps-select-options-option-check\">\n </span>\n <span class=\"cps-select-options-option-label\">Select all</span>\n </span>\n </div>\n <ng-container *ngFor=\"let item of options\">\n <ng-container\n *ngTemplateOutlet=\"\n itemTemplate;\n context: {\n item: item\n }\n \"></ng-container>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"virtualScroll\">\n <p-virtualScroller\n #virtualList\n [value]=\"options\"\n [delay]=\"0\"\n [scrollHeight]=\"virtualListHeight + 'px'\"\n [options]=\"{ numToleratedItems: numToleratedItems }\"\n [itemSize]=\"virtualScrollItemSize\">\n <ng-template pTemplate=\"item\" let-item>\n <ng-container\n *ngTemplateOutlet=\"\n itemTemplate;\n context: {\n item: item\n }\n \"></ng-container>\n </ng-template>\n </p-virtualScroller>\n </ng-container>\n </div>\n </cps-menu>\n\n <cps-progress-linear\n *ngIf=\"loading\"\n height=\"3\"\n radius=\"4\"\n opacity=\"0.3\"\n class=\"select-progress-bar\"\n bgColor=\"transparent\">\n </cps-progress-linear>\n </div>\n <div *ngIf=\"!error && !hideDetails\" class=\"cps-select-hint\">{{ hint }}</div>\n <div *ngIf=\"error && !hideDetails\" class=\"cps-select-error\">{{ error }}</div>\n</div>\n\n<ng-template #itemTemplate let-item=\"item\">\n <div\n class=\"cps-select-options-option\"\n (click)=\"onOptionClick(item)\"\n [class.selected]=\"\n item | checkOptionSelected : value : multiple : returnObject : optionValue\n \">\n <span class=\"cps-select-options-option-left\">\n <span *ngIf=\"multiple\" class=\"cps-select-options-option-check\"> </span>\n <span\n class=\"cps-select-options-option-label\"\n [class.virtual-row]=\"virtualScroll\"\n >{{ item[optionLabel] }}</span\n >\n </span>\n\n <span\n class=\"cps-select-options-option-right\"\n [class.virtual-row]=\"virtualScroll\"\n >{{ item[optionInfo] }}</span\n >\n </div>\n</ng-template>\n", styles: [":host{display:flex}:host .cps-select{position:relative;width:100%;outline:none;font-family:Source Sans Pro,sans-serif;font-weight:400;display:grid}:host .cps-select .cps-select-container{position:relative}:host .cps-select .cps-select-container .select-progress-bar{position:absolute;bottom:1px;padding:0 1px}:host .cps-select .cps-select-container.borderless .cps-select-box,:host .cps-select .cps-select-container.underlined .cps-select-box{line-height:1;border:none!important;border-radius:0}:host .cps-select .cps-select-container.underlined .cps-select-box{border-bottom:1px solid var(--cps-color-line-light)!important}:host .cps-select.active .cps-select-box{border:1px solid var(--cps-color-calm)}:host .cps-select.active .cps-select-box .cps-select-box-left .prefix-icon{color:var(--cps-color-calm)}:host .cps-select.active .cps-select-box .cps-select-box-chevron{top:22px;transform:rotate(180deg)}:host .cps-select .cps-select-label{align-items:center;display:inline-flex;margin-bottom:.2rem;color:var(--cps-color-text-dark);font-size:.875rem;font-weight:600}:host .cps-select .cps-select-label .cps-select-label-info-circle{margin-left:8px;pointer-events:all}:host .cps-select .persistent-clear .cps-select-box .cps-select-box-icons .cps-select-box-clear-icon cps-icon,:host .cps-select .cps-select-container.focused .cps-select-box .cps-select-box-icons .cps-select-box-clear-icon cps-icon,:host .cps-select .cps-select-container:hover .cps-select-box .cps-select-box-icons .cps-select-box-clear-icon cps-icon{opacity:.5}:host .cps-select .cps-select-box{overflow:hidden;justify-content:space-between;min-height:38px;width:100%;cursor:pointer;background:white;font-size:1rem;outline:none;padding:0 12px;border-radius:4px;align-items:center;display:flex;border:1px solid var(--cps-color-line-light);transition-duration:.2s}:host .cps-select .cps-select-box-placeholder{color:var(--cps-color-text-lightest);font-style:italic}:host .cps-select .cps-select-box-items{margin-top:3px;margin-bottom:3px}:host .cps-select .cps-select-box-items .text-group,:host .cps-select .cps-select-box-items .single-item{color:var(--cps-color-text-dark);padding-top:3px;padding-bottom:3px}:host .cps-select .cps-select-box-items .chips-group cps-chip{padding-bottom:3px;padding-top:3px;padding-right:4px}:host .cps-select .cps-select-box-items .text-group-item{line-height:1.5}:host .cps-select .cps-select-box .cps-select-box-left{display:inline-flex;align-items:center}:host .cps-select .cps-select-box .cps-select-box-left .prefix-icon{margin-right:.5rem;color:var(--cps-color-text-dark)}:host .cps-select .cps-select-box:hover{border:1px solid var(--cps-color-calm)}:host .cps-select .cps-select-box:hover .cps-select-box-left .prefix-icon{color:var(--cps-color-calm)}:host .cps-select .cps-select-box .cps-select-box-icons{display:flex}:host .cps-select .cps-select-box .cps-select-box-icons .cps-select-box-clear-icon{display:flex;color:var(--cps-color-calm);margin-left:8px}:host .cps-select .cps-select-box .cps-select-box-icons .cps-select-box-clear-icon cps-icon{opacity:0;transition-duration:.2s}:host .cps-select .cps-select-box .cps-select-box-icons .cps-select-box-clear-icon cps-icon:hover{opacity:1!important}:host .cps-select .cps-select-box .cps-select-box-icons .cps-select-box-chevron{display:flex;margin-left:8px;transition-duration:.2s}:host .cps-select .cps-select-hint{color:var(--cps-color-text-mild);font-size:.75rem;min-height:1.125rem;line-height:1.125rem;cursor:default;margin-top:.2rem}:host .cps-select .cps-select-error{color:var(--cps-color-error);font-weight:700;font-size:.75rem;min-height:1.125rem;line-height:1.125rem;cursor:default;margin-top:.2rem}:host .cps-select.disabled{pointer-events:none}:host .cps-select.disabled .cps-select-box{background:#f7f7f7}:host .cps-select.disabled .cps-select-box-items{color:var(--cps-color-text-light)}:host .cps-select.disabled .cps-select-box-items .text-group,:host .cps-select.disabled .cps-select-box-items .single-item{color:var(--cps-color-text-light)}:host .cps-select.disabled .cps-select-label{color:var(--cps-color-text-mild)}:host .cps-select.error .cps-select-box{border-color:var(--cps-color-error)!important;background:#fef3f2!important}.cps-select-options{background:white;overflow-x:hidden;max-height:242px;overflow-y:auto}.cps-select-options .cps-select-options-option{padding:12px;justify-content:space-between;display:flex;cursor:pointer}.cps-select-options .cps-select-options-option:hover{background:var(--cps-color-highlight-hover)}.cps-select-options .cps-select-options-option-label{color:var(--cps-color-text-dark)}.cps-select-options .cps-select-options-option-left{display:flex;align-items:center;margin-right:8px}.cps-select-options .cps-select-options-option-right{color:var(--cps-color-text-light);text-align:right}.cps-select-options .cps-select-options-option-check{background-color:transparent;border:0;width:16px;height:16px;cursor:pointer;display:inline-block;vertical-align:middle;box-sizing:border-box;position:relative;flex-shrink:0;transition:border-color 90ms cubic-bezier(0,0,.2,.1),background-color 90ms cubic-bezier(0,0,.2,.1);margin-right:8px;opacity:0}.cps-select-options .cps-select-options-option-check:after{color:var(--cps-color-calm);top:4px;left:1px;width:8px;height:3px;border-left:2px solid currentColor;transform:rotate(-45deg);opacity:1;box-sizing:content-box;position:absolute;content:\"\";border-bottom:2px solid currentColor;transition:opacity 90ms cubic-bezier(0,0,.2,.1)}.cps-select-options .cps-select-options-option.selected,.cps-select-options .cps-select-options-option.allselected{font-weight:600}.cps-select-options .cps-select-options-option.selected .cps-select-options-option-label,.cps-select-options .cps-select-options-option.allselected .cps-select-options-option-label{color:var(--cps-color-calm)}.cps-select-options .cps-select-options-option.selected .cps-select-options-option-check,.cps-select-options .cps-select-options-option.allselected .cps-select-options-option-check{opacity:1}.cps-select-options .cps-select-options-option.selected{background:var(--cps-color-highlight-selected)}.cps-select-options .cps-select-options-option.highlighten{background:var(--cps-color-highlight-active)}.cps-select-options .cps-select-options-option.selected.highlighten{background:var(--cps-color-highlight-selected-dark)}.cps-select-options .select-all-option{border-bottom:1px solid lightgrey;font-weight:600}.cps-select-options ::ng-deep .p-virtualscroller-list.p-scroller{overflow-anchor:none}.cps-select-options .virtual-row{white-space:nowrap}\n"] }]
|
|
528
528
|
}], ctorParameters: function () { return [{ type: i1.NgControl, decorators: [{
|
|
529
529
|
type: Self
|
|
530
530
|
}, {
|
|
@@ -612,4 +612,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
|
612
612
|
type: ViewChild,
|
|
613
613
|
args: ['optionsList']
|
|
614
614
|
}] } });
|
|
615
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3BzLXNlbGVjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jcHMtdWkta2l0L3NyYy9saWIvY29tcG9uZW50cy9jcHMtc2VsZWN0L2Nwcy1zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3BzLXVpLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvY3BzLXNlbGVjdC9jcHMtc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBRUwsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBR0wsUUFBUSxFQUNSLE1BQU0sRUFDTixJQUFJLEVBQ0osU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsV0FBVyxFQUFhLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDOUQsT0FBTyxFQUNMLGdCQUFnQixFQUdqQixNQUFNLGdDQUFnQyxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBQ2xHLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQzFGLE9BQU8sRUFBRSxPQUFPLEVBQUUs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O3NCQURWLFNBQVM7dUJBQUMsYUFBYTtnQkFJeEIsV0FBVztzQkFEVixTQUFTO3VCQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgU2VsZixcbiAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1zTW9kdWxlLCBOZ0NvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNvbnZlcnRTaXplIH0gZnJvbSAnLi4vLi4vdXRpbHMvaW50ZXJuYWwvc2l6ZS11dGlscyc7XG5pbXBvcnQge1xuICBDcHNJY29uQ29tcG9uZW50LFxuICBpY29uU2l6ZVR5cGUsXG4gIEljb25UeXBlXG59IGZyb20gJy4uL2Nwcy1pY29uL2Nwcy1pY29uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDcHNDaGlwQ29tcG9uZW50IH0gZnJvbSAnLi4vY3BzLWNoaXAvY3BzLWNoaXAuY29tcG9uZW50JztcbmltcG9ydCB7IENwc1Byb2dyZXNzTGluZWFyQ29tcG9uZW50IH0gZnJvbSAnLi4vY3BzLXByb2dyZXNzLWxpbmVhci9jcHMtcHJvZ3Jlc3MtbGluZWFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDcHNJbmZvQ2lyY2xlQ29tcG9uZW50IH0gZnJvbSAnLi4vY3BzLWluZm8tY2lyY2xlL2Nwcy1pbmZvLWNpcmNsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTGFiZWxCeVZhbHVlUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL2ludGVybmFsL2xhYmVsLWJ5LXZhbHVlLnBpcGUnO1xuaW1wb3J0IHsgQ29tYmluZUxhYmVsc1BpcGUgfSBmcm9tICcuLi8uLi9waXBlcy9pbnRlcm5hbC9jb21iaW5lLWxhYmVscy5waXBlJztcbmltcG9ydCB7IENoZWNrT3B0aW9uU2VsZWN0ZWRQaXBlIH0gZnJvbSAnLi4vLi4vcGlwZXMvaW50ZXJuYWwvY2hlY2stb3B0aW9uLXNlbGVjdGVkLnBpcGUnO1xuaW1wb3J0IHsgaXNFcXVhbCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQge1xuICBWaXJ0dWFsU2Nyb2xsZXIsXG4gIFZpcnR1YWxTY3JvbGxlck1vZHVsZVxufSBmcm9tICdwcmltZW5nL3ZpcnR1YWxzY3JvbGxlcic7XG5pbXBvcnQgeyBDcHNUb29sdGlwUG9zaXRpb24gfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL2Nwcy10b29sdGlwLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBDcHNNZW51Q29tcG9uZW50IH0gZnJvbSAnLi4vY3BzLW1lbnUvY3BzLW1lbnUuY29tcG9uZW50JztcblxuZXhwb3J0IHR5cGUgQ3BzU2VsZWN0QXBwZWFyYW5jZVR5cGUgPSAnb3V0bGluZWQnIHwgJ3VuZGVybGluZWQnIHwgJ2JvcmRlcmxlc3MnO1xuXG4vKipcbiAqIENwc1NlbGVjdENvbXBvbmVudCBpcyB1c2VkIHRvIHNlbGVjdCBpdGVtcyBmcm9tIGEgY29sbGVjdGlvbi5cbiAqIEBncm91cCBDb21wb25lbnRzXG4gKi9cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIENwc0ljb25Db21wb25lbnQsXG4gICAgQ3BzQ2hpcENvbXBvbmVudCxcbiAgICBDcHNQcm9ncmVzc0xpbmVhckNvbXBvbmVudCxcbiAgICBDcHNJbmZvQ2lyY2xlQ29tcG9uZW50LFxuICAgIExhYmVsQnlWYWx1ZVBpcGUsXG4gICAgQ29tYmluZUxhYmVsc1BpcGUsXG4gICAgQ2hlY2tPcHRpb25TZWxlY3RlZFBpcGUsXG4gICAgVmlydHVhbFNjcm9sbGVyTW9kdWxlLFxuICAgIENwc01lbnVDb21wb25lbnRcbiAgXSxcbiAgcHJvdmlkZXJzOiBbTGFiZWxCeVZhbHVlUGlwZSwgQ29tYmluZUxhYmVsc1BpcGUsIENoZWNrT3B0aW9uU2VsZWN0ZWRQaXBlXSxcbiAgc2VsZWN0b3I6ICdjcHMtc2VsZWN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Nwcy1zZWxlY3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jcHMtc2VsZWN0LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQ3BzU2VsZWN0Q29tcG9uZW50XG4gIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95XG57XG4gIC8qKlxuICAgKiBUaGUgbGFiZWwgb2YgdGhlIHNlbGVjdCBjb21wb25lbnQuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgbGFiZWwgPSAnJztcblxuICAvKipcbiAgICogUGxhY2Vob2xkZXIgdGV4dCBmb3IgdGhlIHNlbGVjdCBjb21wb25lbnQuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSAnUGxlYXNlIHNlbGVjdCc7XG5cbiAgLyoqXG4gICAqIEJvdHRvbSBoaW50IHRleHQgZm9yIHRoZSBzZWxlY3QgY29tcG9uZW50LlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIGhpbnQgPSAnJztcblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgb2JqZWN0IGRpcmVjdGx5IHJhdGhlciB0aGFuIHRoZSB2YWx1ZSBzcGVjaWZpZWQgd2l0aCBvcHRpb25WYWx1ZS5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSByZXR1cm5PYmplY3QgPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgaWYgbXVsdGlwbGUgdmFsdWVzIGNhbiBiZSBzZWxlY3RlZC5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBtdWx0aXBsZSA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgd2hldGhlciB0aGUgY29tcG9uZW50IGlzIGRpc2FibGVkLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFdpZHRoIG9mIHRoZSBzZWxlY3QgY29tcG9uZW50LCBvZiB0eXBlIG51bWJlciBkZW5vdGluZyBwaXhlbHMgb3Igc3RyaW5nLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIHdpZHRoOiBudW1iZXIgfCBzdHJpbmcgPSAnMTAwJSc7XG5cbiAgLyoqXG4gICAqIE9wdGlvbiBmb3Igc2VsZWN0aW5nIGFsbCBlbGVtZW50cy4gRG9lc24ndCB3b3JrIHdpdGggdmlydHVhbCBzY3JvbGwuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgc2VsZWN0QWxsID0gdHJ1ZTtcblxuICAvKipcbiAgICogV2hlbiBzZWxlY3RpbmcgZWxlbWVudHMsIHRoZXkgd2lsbCBhcHBlYXIgaW4gYSBmb3JtIG9mIGEgY2hpcC5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBjaGlwcyA9IHRydWU7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGNoaXBzIGNhbiBiZSBkaXJlY3RseSByZW1vdmVkLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIGNsb3NhYmxlQ2hpcHMgPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBXaGVuIGVuYWJsZWQsIGEgY2xlYXIgaWNvbiBpcyBkaXNwbGF5ZWQgdG8gY2xlYXIgdGhlIHZhbHVlLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIGNsZWFyYWJsZSA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBkcm9wZG93biBsaXN0IHNob3VsZCBvcGVuIG9uIGNsZWFyLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIG9wZW5PbkNsZWFyID0gdHJ1ZTtcblxuICAvKipcbiAgICogQW4gYXJyYXkgb2Ygb3B0aW9ucy5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBvcHRpb25zID0gW10gYXMgYW55W107XG5cbiAgLyoqXG4gICAqIElmIG11bHRpcGxlLCBkZWZpbmVzIHdoZXRoZXIgc2VsZWN0ZWQgb3B0aW9ucyBzaG91bGQgYmUgb3JkZXJlZCBhY2NvcmRpbmcgdG8gdGhlIGluaXRpYWwgb3JkZXIgb2YgdGhlIG9wdGlvbnMuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkga2VlcEluaXRpYWxPcmRlciA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBsYWJlbCBmaWVsZCBvZiBhbiBvcHRpb24uXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgb3B0aW9uTGFiZWwgPSAnbGFiZWwnO1xuXG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSB2YWx1ZSBmaWVsZCBvZiBhbiBvcHRpb24uIE5lZWRlZCBvbmx5IGlmIHJldHVybk9iamVjdCBwcm9wIGlzIGZhbHNlLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIG9wdGlvblZhbHVlID0gJ3ZhbHVlJztcblxuICAvKipcbiAgICogTmFtZSBvZiB0aGUgaW5mbyBmaWVsZCBvZiBhbiBvcHRpb24sIHNob3dzIHRoZSBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHRleHQuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgb3B0aW9uSW5mbyA9ICdpbmZvJztcblxuICAvKipcbiAgICogSGlkZXMgaGludCBhbmQgdmFsaWRhdGlvbiBlcnJvcnMuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgaGlkZURldGFpbHMgPSBmYWxzZTtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgY29tcG9uZW50IHNob3VsZCBoYXZlIHBlcnNpc3RlbnQgY2xlYXIgaWNvbi5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBwZXJzaXN0ZW50Q2xlYXIgPSBmYWxzZTtcblxuICAvKipcbiAgICogSWNvbiBiZWZvcmUgaW5wdXQgdmFsdWUuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgcHJlZml4SWNvbjogSWNvblR5cGUgPSAnJztcblxuICAvKipcbiAgICogU2l6ZSBvZiBpY29uIGJlZm9yZSBpbnB1dCB2YWx1ZSwgb2YgdHlwZSBudW1iZXIgb3Igc3RyaW5nIG9yIHZhbHVlICdmaWxsJywgJ3hzbWFsbCcsICdzbWFsbCcsICdub3JtYWwnIG9yICdsYXJnZScuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgcHJlZml4SWNvblNpemU6IGljb25TaXplVHlwZSA9ICcxOHB4JztcblxuICAvKipcbiAgICogV2hlbiBlbmFibGVkLCBhIGxvYWRpbmcgYmFyIGlzIGRpc3BsYXllZC5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBsb2FkaW5nID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgb25seSB0aGUgZWxlbWVudHMgd2l0aGluIHNjcm9sbGFibGUgYXJlYSBzaG91bGQgYmUgYWRkZWQgaW50byB0aGUgRE9NLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIHZpcnR1YWxTY3JvbGwgPSBmYWxzZTtcblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyBob3cgbWFueSBhZGRpdGlvbmFsIGVsZW1lbnRzIHRvIGFkZCB0byB0aGUgRE9NIG91dHNpZGUgb2YgdGhlIHZpZXcuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgbnVtVG9sZXJhdGVkSXRlbXMgPSAxMDtcblxuICAvKipcbiAgICogV2hlbiBpdCBpcyBub3QgYW4gZW1wdHkgc3RyaW5nLCBhbiBpbmZvIGljb24gaXMgZGlzcGxheWVkIHRvIHNob3cgdGV4dCBmb3IgbW9yZSBpbmZvLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIGluZm9Ub29sdGlwID0gJyc7XG5cbiAgLyoqXG4gICAqIEluZm9Ub29sdGlwIGNsYXNzIGZvciBzdHlsaW5nLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIGluZm9Ub29sdGlwQ2xhc3MgPSAnY3BzLXRvb2x0aXAtY29udGVudCc7XG5cbiAgLyoqXG4gICAqIE1heCB3aWR0aCBvZiBpbmZvVG9vbHRpcCBvZiB0eXBlIG51bWJlciBkZW5vdGluZyBwaXhlbHMgb3Igc3RyaW5nLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIGluZm9Ub29sdGlwTWF4V2lkdGg6IG51bWJlciB8IHN0cmluZyA9ICcxMDAlJztcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgaW5mb1Rvb2x0aXAgaXMgcGVyc2lzdGVudC5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBpbmZvVG9vbHRpcFBlcnNpc3RlbnQgPSBmYWxzZTtcblxuICAvKipcbiAgICogUG9zaXRpb24gb2YgaW5mb1Rvb2x0aXAsIGl0IGNhbiBiZSAndG9wJywgJ2JvdHRvbScsICdsZWZ0JyBvciAncmlnaHQnLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIGluZm9Ub29sdGlwUG9zaXRpb246IENwc1Rvb2x0aXBQb3NpdGlvbiA9ICd0b3AnO1xuXG4gIC8qKlxuICAgKiBDbGFzcyBmb3IgYWRkaXRpb25hbCBzdHlsaW5nIG9mIHRoZSBkcm9wZG93biBsaXN0LlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIG9wdGlvbnNDbGFzcyA9ICcnO1xuXG4gIC8qKlxuICAgKiBTdHlsaW5nIGFwcGVhcmFuY2Ugb2Ygc2VsZWN0IGlucHV0LCBpdCBjYW4gYmUgJ291dGxpbmVkJywgJ3VuZGVybGluZWQnIG9yICdib3JkZXJsZXNzJy5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBhcHBlYXJhbmNlOiBDcHNTZWxlY3RBcHBlYXJhbmNlVHlwZSA9ICdvdXRsaW5lZCc7XG5cbiAgLyoqXG4gICAqIFZhbHVlIG9mIHRoZSBzZWxlY3QgY29tcG9uZW50LlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgndmFsdWUnKSBfdmFsdWU6IGFueSA9IHVuZGVmaW5lZDtcblxuICBzZXQgdmFsdWUodmFsdWU6IGFueSkge1xuICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy5vbkNoYW5nZSh2YWx1ZSk7XG4gIH1cblxuICBnZXQgdmFsdWUoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGJhY2sgdG8gaW52b2tlIG9uIHZhbHVlIGNoYW5nZS5cbiAgICogQHBhcmFtIHthbnl9IGFueSAtIHZhbHVlIGNoYW5nZWQuXG4gICAqIEBncm91cCBFbWl0c1xuICAgKi9cbiAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIEBWaWV3Q2hpbGQoJ3NlbGVjdEJveCcpXG4gIHNlbGVjdEJveCE6IEVsZW1lbnRSZWY7XG5cbiAgQFZpZXdDaGlsZCgnc2VsZWN0Q29udGFpbmVyJylcbiAgc2VsZWN0Q29udGFpbmVyITogRWxlbWVudFJlZjtcblxuICBAVmlld0NoaWxkKCd2aXJ0dWFsTGlzdCcpXG4gIHZpcnR1YWxMaXN0ITogVmlydHVhbFNjcm9sbGVyO1xuXG4gIEBWaWV3Q2hpbGQoJ29wdGlvbnNNZW51JylcbiAgb3B0aW9uc01lbnUhOiBDcHNNZW51Q29tcG9uZW50O1xuXG4gIEBWaWV3Q2hpbGQoJ29wdGlvbnNMaXN0JylcbiAgb3B0aW9uc0xpc3QhOiBFbGVtZW50UmVmO1xuXG4gIHByaXZhdGUgX3N0YXR1c0NoYW5nZXNTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICBlcnJvciA9ICcnO1xuICBjdnRXaWR0aCA9ICcnO1xuICBpc09wZW5lZCA9IGZhbHNlO1xuICBvcHRpb25IaWdobGlnaHRlZEluZGV4ID0gLTE7XG5cbiAgdmlydHVhbExpc3RIZWlnaHQgPSAyNDA7XG4gIHZpcnR1YWxTY3JvbGxJdGVtU2l6ZSA9IDQyO1xuXG4gIHNlbGVjdEJveFdpZHRoID0gMDtcbiAgcmVzaXplT2JzZXJ2ZXI6IFJlc2l6ZU9ic2VydmVyO1xuXG4gIGNvbnN0cnVjdG9yKEBTZWxmKCkgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfY29udHJvbDogTmdDb250cm9sKSB7XG4gICAgaWYgKHRoaXMuX2NvbnRyb2wpIHtcbiAgICAgIHRoaXMuX2NvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XG4gICAgfVxuICAgIHRoaXMucmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoKGVudHJpZXMpID0+IHtcbiAgICAgIGVudHJpZXMuZm9yRWFjaCgoZW50cnkpID0+IHtcbiAgICAgICAgaWYgKGVudHJ5Py50YXJnZXQpXG4gICAgICAgICAgdGhpcy5zZWxlY3RCb3hXaWR0aCA9IChlbnRyeS50YXJnZXQgYXMgYW55KS5vZmZzZXRXaWR0aDtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5jdnRXaWR0aCA9IGNvbnZlcnRTaXplKHRoaXMud2lkdGgpO1xuICAgIGlmICh0aGlzLm11bHRpcGxlICYmICF0aGlzLl92YWx1ZSkge1xuICAgICAgdGhpcy5fdmFsdWUgPSBbXTtcbiAgICB9XG5cbiAgICB0aGlzLl9zdGF0dXNDaGFuZ2VzU3Vic2NyaXB0aW9uID0gdGhpcy5fY29udHJvbD8uc3RhdHVzQ2hhbmdlcz8uc3Vic2NyaWJlKFxuICAgICAgKCkgPT4ge1xuICAgICAgICB0aGlzLl9jaGVja0Vycm9ycygpO1xuICAgICAgfVxuICAgICkgYXMgU3Vic2NyaXB0aW9uO1xuXG4gICAgdGhpcy5fcmVjYWxjVmlydHVhbExpc3RIZWlnaHQoKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy5zZWxlY3RCb3gubmF0aXZlRWxlbWVudCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9zdGF0dXNDaGFuZ2VzU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMucmVzaXplT2JzZXJ2ZXI/LmRpc2Nvbm5lY3QoKTtcbiAgfVxuXG4gIHByaXZhdGUgX3RvZ2dsZU9wdGlvbnMoc2hvdz86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCB8fCB0aGlzLmlzT3BlbmVkID09PSBzaG93KSByZXR1cm47XG5cbiAgICBpZiAodHlwZW9mIHNob3cgPT09ICdib29sZWFuJykge1xuICAgICAgaWYgKHNob3cpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zTWVudS5zaG93KHtcbiAgICAgICAgICB0YXJnZXQ6IHRoaXMuc2VsZWN0Qm94Lm5hdGl2ZUVsZW1lbnRcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm9wdGlvbnNNZW51LmhpZGUoKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vcHRpb25zTWVudS50b2dnbGUoe1xuICAgICAgICB0YXJnZXQ6IHRoaXMuc2VsZWN0Qm94Lm5hdGl2ZUVsZW1lbnRcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMuaXNPcGVuZWQgPSB0aGlzLm9wdGlvbnNNZW51LmlzVmlzaWJsZSgpO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5pc09wZW5lZCAmJiB0aGlzLm9wdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICBjb25zdCBzZWxlY3RlZCA9XG4gICAgICAgICAgdGhpcy5vcHRpb25zTGlzdC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5zZWxlY3RlZCcpO1xuICAgICAgICBpZiAoc2VsZWN0ZWQpIHtcbiAgICAgICAgICBzZWxlY3RlZC5zY3JvbGxJbnRvVmlldyh7XG4gICAgICAgICAgICBiZWhhdmlvcjogJ2luc3RhbnQnLFxuICAgICAgICAgICAgYmxvY2s6ICduZWFyZXN0JyxcbiAgICAgICAgICAgIGlubGluZTogJ2NlbnRlcidcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnZpcnR1YWxTY3JvbGwgJiYgIXRoaXMuaXNFbXB0eVZhbHVlKCkpIHtcbiAgICAgICAgICBsZXQgdjogYW55O1xuICAgICAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgICAgICBpZiAodGhpcy52YWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIHYgPSB0aGlzLnZhbHVlWzBdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB2ID0gdGhpcy52YWx1ZTtcbiAgICAgICAgICBjb25zdCBpZHggPSB0aGlzLm9wdGlvbnMuZmluZEluZGV4KChvKSA9PiBpc0VxdWFsKG8sIHYpKTtcbiAgICAgICAgICBpZiAoaWR4ID49IDApIHRoaXMudmlydHVhbExpc3Quc2Nyb2xsVG9JbmRleChpZHgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9yZWNhbGNWaXJ0dWFsTGlzdEhlaWdodCgpIHtcbiAgICBpZiAoIXRoaXMudmlydHVhbFNjcm9sbCkgcmV0dXJuO1xuICAgIGNvbnN0IGN1cnJlbnRMZW4gPSB0aGlzLm9wdGlvbnM/Lmxlbmd0aCB8fCAwO1xuICAgIHRoaXMudmlydHVhbExpc3RIZWlnaHQgPSBNYXRoLm1pbihcbiAgICAgIHRoaXMudmlydHVhbFNjcm9sbEl0ZW1TaXplICogY3VycmVudExlbixcbiAgICAgIDI0MFxuICAgICk7XG4gIH1cblxuICBzZWxlY3Qob3B0aW9uOiBhbnksIGJ5VmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBmdW5jdGlvbiBpbmNsdWRlcyhhcnJheTogYW55W10sIHZhbDogYW55KTogYm9vbGVhbiB7XG4gICAgICByZXR1cm4gYXJyYXk/LnNvbWUoKGl0ZW0pID0+IGlzRXF1YWwoaXRlbSwgdmFsKSkgfHwgZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IHZhbCA9IGJ5VmFsdWVcbiAgICAgID8gb3B0aW9uXG4gICAgICA6IHRoaXMucmV0dXJuT2JqZWN0XG4gICAgICA/IG9wdGlvblxuICAgICAgOiBvcHRpb25bdGhpcy5vcHRpb25WYWx1ZV07XG4gICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgIGxldCByZXMgPSBbXSBhcyBhbnk7XG4gICAgICBpZiAoaW5jbHVkZXModGhpcy52YWx1ZSwgdmFsKSkge1xuICAgICAgICByZXMgPSB0aGlzLnZhbHVlLmZpbHRlcigodjogYW55KSA9PiAhaXNFcXVhbCh2LCB2YWwpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh0aGlzLmtlZXBJbml0aWFsT3JkZXIpIHtcbiAgICAgICAgICB0aGlzLm9wdGlvbnMuZm9yRWFjaCgobykgPT4ge1xuICAgICAgICAgICAgY29uc3Qgb3YgPSB0aGlzLnJldHVybk9iamVjdCA/IG8gOiBvW3RoaXMub3B0aW9uVmFsdWVdO1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICB0aGlzLnZhbHVlLnNvbWUoKHY6IGFueSkgPT4gaXNFcXVhbCh2LCBvdikpIHx8XG4gICAgICAgICAgICAgIGlzRXF1YWwodmFsLCBvdilcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICByZXMucHVzaChvdik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3Qgb3B0ID0gdGhpcy5vcHRpb25zLmZpbmQoKG8pID0+IHtcbiAgICAgICAgICAgIHJldHVybiBpc0VxdWFsKHZhbCwgdGhpcy5yZXR1cm5PYmplY3QgPyBvIDogb1t0aGlzLm9wdGlvblZhbHVlXSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgaWYgKG9wdCkge1xuICAgICAgICAgICAgcmVzID0gW1xuICAgICAgICAgICAgICAuLi50aGlzLnZhbHVlLFxuICAgICAgICAgICAgICB0aGlzLnJldHVybk9iamVjdCA/IG9wdCA6IG9wdFt0aGlzLm9wdGlvblZhbHVlXVxuICAgICAgICAgICAgXTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMudXBkYXRlVmFsdWUocmVzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy51cGRhdGVWYWx1ZSh2YWwpO1xuICAgIH1cbiAgfVxuXG4gIG9uT3B0aW9uQ2xpY2sob3B0aW9uOiBhbnkpIHtcbiAgICB0aGlzLl9jbGlja09wdGlvbihvcHRpb24pO1xuICB9XG5cbiAgcHJpdmF0ZSBfY2xpY2tPcHRpb24ob3B0aW9uOiBhbnkpIHtcbiAgICB0aGlzLnNlbGVjdChvcHRpb24sIGZhbHNlKTtcbiAgICBpZiAoIXRoaXMubXVsdGlwbGUpIHtcbiAgICAgIHRoaXMuX3RvZ2dsZU9wdGlvbnMoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2dldEhUTUxPcHRpb25zKCkge1xuICAgIHJldHVybiAodGhpcy5vcHRpb25zTGlzdC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXG4gICAgICAnLmNwcy1zZWxlY3Qtb3B0aW9ucy1vcHRpb24nXG4gICAgKSB8fCBbXSkgYXMgYW55O1xuICB9XG5cbiAgcHJpdmF0ZSBfZGVoaWdobGlnaHRPcHRpb24oZWw/OiBIVE1MRWxlbWVudCkge1xuICAgIGlmIChlbCkgZWwuY2xhc3NMaXN0LnJlbW92ZSgnaGlnaGxpZ2h0ZW4nKTtcbiAgICBlbHNlIHtcbiAgICAgIGlmICh0aGlzLm9wdGlvbkhpZ2hsaWdodGVkSW5kZXggPCAwKSByZXR1cm47XG4gICAgICBjb25zdCBvcHRpb25JdGVtcyA9IHRoaXMuX2dldEhUTUxPcHRpb25zKCk7XG4gICAgICBvcHRpb25JdGVtc1t0aGlzLm9wdGlvbkhpZ2hsaWdodGVkSW5kZXhdLmNsYXNzTGlzdC5yZW1vdmUoJ2hpZ2hsaWdodGVuJyk7XG4gICAgICB0aGlzLm9wdGlvbkhpZ2hsaWdodGVkSW5kZXggPSAtMTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9oaWdobGlnaHRPcHRpb24oZWw6IEhUTUxFbGVtZW50KSB7XG4gICAgZWwuY2xhc3NMaXN0LmFkZCgnaGlnaGxpZ2h0ZW4nKTtcbiAgICBjb25zdCBwYXJlbnQgPSBlbC5wYXJlbnRFbGVtZW50O1xuICAgIGlmICghcGFyZW50KSByZXR1cm47XG4gICAgY29uc3QgcGFyZW50UmVjdCA9IHBhcmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCBlbFJlY3QgPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBpZiAoZWxSZWN0LnRvcCA8IHBhcmVudFJlY3QudG9wIHx8IGVsUmVjdC5ib3R0b20gPiBwYXJlbnRSZWN0LmJvdHRvbSkge1xuICAgICAgZWwuc2Nyb2xsSW50b1ZpZXcoe1xuICAgICAgICBibG9jazogJ25lYXJlc3QnLFxuICAgICAgICBpbmxpbmU6ICdjZW50ZXInXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9uYXZpZ2F0ZU9wdGlvbnNCeUFycm93cyh1cDogYm9vbGVhbikge1xuICAgIGlmICghdGhpcy5pc09wZW5lZCkgcmV0dXJuO1xuXG4gICAgY29uc3Qgb3B0aW9uSXRlbXMgPSB0aGlzLl9nZXRIVE1MT3B0aW9ucygpO1xuICAgIGNvbnN0IGxlbiA9IG9wdGlvbkl0ZW1zLmxlbmd0aDtcbiAgICBpZiAobGVuIDwgMSkgcmV0dXJuO1xuXG4gICAgaWYgKGxlbiA9PT0gMSkge1xuICAgICAgdGhpcy5vcHRpb25IaWdobGlnaHRlZEluZGV4ID0gMDtcbiAgICAgIHRoaXMuX2hpZ2hsaWdodE9wdGlvbihvcHRpb25JdGVtc1swXSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHVwKSB7XG4gICAgICB0aGlzLl9kZWhpZ2hsaWdodE9wdGlvbihvcHRpb25JdGVtc1t0aGlzLm9wdGlvbkhpZ2hsaWdodGVkSW5kZXhdKTtcbiAgICAgIHRoaXMub3B0aW9uSGlnaGxpZ2h0ZWRJbmRleCA9XG4gICAgICAgIHRoaXMub3B0aW9uSGlnaGxpZ2h0ZWRJbmRleCA8IDFcbiAgICAgICAgICA/IGxlbiAtIDFcbiAgICAgICAgICA6IHRoaXMub3B0aW9uSGlnaGxpZ2h0ZWRJbmRleCAtIDE7XG4gICAgICB0aGlzLl9oaWdobGlnaHRPcHRpb24ob3B0aW9uSXRlbXNbdGhpcy5vcHRpb25IaWdobGlnaHRlZEluZGV4XSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2RlaGlnaGxpZ2h0T3B0aW9uKG9wdGlvbkl0ZW1zW3RoaXMub3B0aW9uSGlnaGxpZ2h0ZWRJbmRleF0pO1xuICAgICAgdGhpcy5vcHRpb25IaWdobGlnaHRlZEluZGV4ID0gWy0xLCBsZW4gLSAxXS5pbmNsdWRlcyhcbiAgICAgICAgdGhpcy5vcHRpb25IaWdobGlnaHRlZEluZGV4XG4gICAgICApXG4gICAgICAgID8gMFxuICAgICAgICA6IHRoaXMub3B0aW9uSGlnaGxpZ2h0ZWRJbmRleCArIDE7XG4gICAgICB0aGlzLl9oaWdobGlnaHRPcHRpb24ob3B0aW9uSXRlbXNbdGhpcy5vcHRpb25IaWdobGlnaHRlZEluZGV4XSk7XG4gICAgfVxuICB9XG5cbiAgb25CZWZvcmVPcHRpb25zSGlkZGVuKCkge1xuICAgIHRoaXMuX3RvZ2dsZU9wdGlvbnMoZmFsc2UpO1xuICAgIHRoaXMuX2RlaGlnaGxpZ2h0T3B0aW9uKCk7XG4gIH1cblxuICBvbkJveENsaWNrKCkge1xuICAgIHRoaXMuX3RvZ2dsZU9wdGlvbnMoKTtcbiAgICB0aGlzLl9kZWhpZ2hsaWdodE9wdGlvbigpO1xuICB9XG5cbiAgb25LZXlEb3duKGV2ZW50OiBhbnkpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGNvbnN0IGNvZGUgPSBldmVudC5rZXlDb2RlO1xuICAgIC8vIGVzY2FwZVxuICAgIGlmIChjb2RlID09PSAyNykge1xuICAgICAgdGhpcy5fdG9nZ2xlT3B0aW9ucyhmYWxzZSk7XG4gICAgICB0aGlzLl9kZWhpZ2hsaWdodE9wdGlvbigpO1xuICAgIH1cbiAgICAvLyBlbnRlclxuICAgIGVsc2UgaWYgKGNvZGUgPT09IDEzKSB7XG4gICAgICBsZXQgaWR4ID0gdGhpcy5vcHRpb25IaWdobGlnaHRlZEluZGV4O1xuICAgICAgaWYgKGlkeCA8IDApIHJldHVybjtcbiAgICAgIGlmICh0aGlzLm11bHRpcGxlICYmIHRoaXMuc2VsZWN0QWxsICYmICF0aGlzLnZpcnR1YWxTY3JvbGwpIHtcbiAgICAgICAgaWYgKGlkeCA9PT0gMCkge1xuICAgICAgICAgIHRoaXMudG9nZ2xlQWxsKCk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IGVsc2UgaWR4LS07XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2NsaWNrT3B0aW9uKHRoaXMub3B0aW9uc1tpZHhdKTtcbiAgICB9XG4gICAgLy8gdmVydGljYWwgYXJyb3dzXG4gICAgZWxzZSBpZiAoWzM4LCA0MF0uaW5jbHVkZXMoY29kZSkpIHtcbiAgICAgIC8vIEFycm93cyBuYXZpZ2F0aW9uIGRvZXNuJ3Qgd29yayB3aXRoIHZpcnR1YWwgc2Nyb2xsXG4gICAgICBpZiAoIXRoaXMudmlydHVhbFNjcm9sbCkgdGhpcy5fbmF2aWdhdGVPcHRpb25zQnlBcnJvd3MoY29kZSA9PT0gMzgpO1xuICAgIH1cbiAgfVxuXG4gIHRvZ2dsZUFsbCgpIHtcbiAgICBsZXQgcmVzID0gW107XG4gICAgaWYgKHRoaXMudmFsdWUubGVuZ3RoIDwgdGhpcy5vcHRpb25zLmxlbmd0aCkge1xuICAgICAgaWYgKHRoaXMucmV0dXJuT2JqZWN0KSB7XG4gICAgICAgIHJlcyA9IHRoaXMub3B0aW9ucztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMub3B0aW9ucy5mb3JFYWNoKChvKSA9PiB7XG4gICAgICAgICAgcmVzLnB1c2gob1t0aGlzLm9wdGlvblZhbHVlXSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnVwZGF0ZVZhbHVlKHJlcyk7XG4gIH1cblxuICBwcml2YXRlIF9jaGVja0Vycm9ycygpOiB2b2lkIHtcbiAgICBjb25zdCBlcnJvcnMgPSB0aGlzLl9jb250cm9sPy5lcnJvcnM7XG5cbiAgICBpZiAoIXRoaXMuX2NvbnRyb2w/LmNvbnRyb2w/LnRvdWNoZWQgfHwgIWVycm9ycykge1xuICAgICAgdGhpcy5lcnJvciA9ICcnO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICgncmVxdWlyZWQnIGluIGVycm9ycykge1xuICAgICAgdGhpcy5lcnJvciA9ICdGaWVsZCBpcyByZXF1aXJlZCc7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZXJyQXJyID0gT2JqZWN0LnZhbHVlcyhlcnJvcnMpO1xuICAgIGlmIChlcnJBcnIubGVuZ3RoIDwgMSkge1xuICAgICAgdGhpcy5lcnJvciA9ICcnO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBtZXNzYWdlID0gZXJyQXJyLmZpbmQoKG1zZykgPT4gdHlwZW9mIG1zZyA9PT0gJ3N0cmluZycpO1xuXG4gICAgdGhpcy5lcnJvciA9IG1lc3NhZ2UgfHwgJ1Vua25vd24gZXJyb3InO1xuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICBvbkNoYW5nZSA9IChldmVudDogYW55KSA9PiB7fTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICBvblRvdWNoZWQgPSAoKSA9PiB7fTtcblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KSB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSkge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgIHRoaXMud3JpdGVWYWx1ZSh2YWx1ZSk7XG4gICAgdGhpcy5vbkNoYW5nZSh2YWx1ZSk7XG4gICAgdGhpcy52YWx1ZUNoYW5nZWQuZW1pdCh2YWx1ZSk7XG4gIH1cblxuICBjbGVhcihldmVudDogYW55KTogdm9pZCB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICBpZiAoXG4gICAgICAoIXRoaXMubXVsdGlwbGUgJiYgIXRoaXMuaXNFbXB0eVZhbHVlKCkpIHx8XG4gICAgICAodGhpcy5tdWx0aXBsZSAmJiB0aGlzLnZhbHVlPy5sZW5ndGggPiAwKVxuICAgICkge1xuICAgICAgaWYgKHRoaXMub3Blbk9uQ2xlYXIpIHtcbiAgICAgICAgdGhpcy5fdG9nZ2xlT3B0aW9ucyh0cnVlKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHZhbCA9IHRoaXMubXVsdGlwbGUgPyBbXSA6IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMudXBkYXRlVmFsdWUodmFsKTtcbiAgICB9XG4gICAgdGhpcy5fZGVoaWdobGlnaHRPcHRpb24oKTtcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgc2V0RGlzYWJsZWRTdGF0ZShkaXNhYmxlZDogYm9vbGVhbikge31cblxuICBvbkJsdXIoKSB7XG4gICAgdGhpcy5fY29udHJvbD8uY29udHJvbD8ubWFya0FzVG91Y2hlZCgpO1xuICAgIHRoaXMuX2NoZWNrRXJyb3JzKCk7XG4gIH1cblxuICBmb2N1cygpIHtcbiAgICB0aGlzLnNlbGVjdENvbnRhaW5lcj8ubmF0aXZlRWxlbWVudD8uZm9jdXMoKTtcbiAgICB0aGlzLl90b2dnbGVPcHRpb25zKHRydWUpO1xuICB9XG5cbiAgaXNFbXB0eVZhbHVlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLnZhbHVlID09PSBudWxsIHx8XG4gICAgICB0aGlzLnZhbHVlID09PSB1bmRlZmluZWQgfHxcbiAgICAgICh0eXBlb2YgdGhpcy52YWx1ZSA9PT0gJ3N0cmluZycgJiYgdGhpcy52YWx1ZS50cmltKCkgPT09ICcnKSB8fFxuICAgICAgTnVtYmVyLmlzTmFOKHRoaXMudmFsdWUpXG4gICAgKTtcbiAgfVxufVxuIiwiPGRpdlxuICBbbmdTdHlsZV09XCJ7IHdpZHRoOiBjdnRXaWR0aCB9XCJcbiAgY2xhc3M9XCJjcHMtc2VsZWN0XCJcbiAgdGFiaW5kZXg9XCIwXCJcbiAgW25nQ2xhc3NdPVwieyBkaXNhYmxlZDogZGlzYWJsZWQsIGVycm9yOiBlcnJvciwgYWN0aXZlOiBpc09wZW5lZCB9XCJcbiAgI3NlbGVjdENvbnRhaW5lclxuICAoa2V5ZG93bik9XCJvbktleURvd24oJGV2ZW50KVwiXG4gIChibHVyKT1cIm9uQmx1cigpXCI+XG4gIDxkaXYgY2xhc3M9XCJjcHMtc2VsZWN0LWxhYmVsXCIgKm5nSWY9XCJsYWJlbFwiPlxuICAgIDxsYWJlbD57eyBsYWJlbCB9fTwvbGFiZWw+XG4gICAgPGNwcy1pbmZvLWNpcmNsZVxuICAgICAgKm5nSWY9XCJpbmZvVG9vbHRpcFwiXG4gICAgICBjbGFzcz1cImNwcy1zZWxlY3QtbGFiZWwtaW5mby1jaXJjbGVcIlxuICAgICAgc2l6ZT1cInhzbWFsbFwiXG4gICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cImluZm9Ub29sdGlwUG9zaXRpb25cIlxuICAgICAgW3Rvb2x0aXBDb250ZW50Q2xhc3NdPVwiaW5mb1Rvb2x0aXBDbGFzc1wiXG4gICAgICBbdG9vbHRpcE1heFdpZHRoXT1cImluZm9Ub29sdGlwTWF4V2lkdGhcIlxuICAgICAgW3Rvb2x0aXBQZXJzaXN0ZW50XT1cImluZm9Ub29sdGlwUGVyc2lzdGVudFwiXG4gICAgICBbdG9vbHRpcFRleHRdPVwiaW5mb1Rvb2x0aXBcIj5cbiAgICA8L2Nwcy1pbmZvLWNpcmNsZT5cbiAgPC9kaXY+XG4gIDxkaXZcbiAgICBjbGFzcz1cImNwcy1zZWxlY3QtY29udGFpbmVyXCJcbiAgICBbY2xhc3MuZm9jdXNlZF09XCJpc09wZW5lZFwiXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgJ3BlcnNpc3RlbnQtY2xlYXInOiBwZXJzaXN0ZW50Q2xlYXIsXG4gICAgICBib3JkZXJsZXNzOiBhcHBlYXJhbmNlID09PSAnYm9yZGVybGVzcycsXG4gICAgICB1bmRlcmxpbmVkOiBhcHBlYXJhbmNlID09PSAndW5kZXJsaW5lZCdcbiAgICB9XCI+XG4gICAgPGRpdiBjbGFzcz1cImNwcy1zZWxlY3QtYm94XCIgI3NlbGVjdEJveCAoY2xpY2spPVwib25Cb3hDbGljaygpXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY3BzLXNlbGVjdC1ib3gtbGVmdFwiPlxuICAgICAgICA8Y3BzLWljb25cbiAgICAgICAgICAqbmdJZj1cInByZWZpeEljb25cIlxuICAgICAgICAgIFtpY29uXT1cInByZWZpeEljb25cIlxuICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJkaXNhYmxlZCA/ICcjOWE5NTk1JyA6IG51bGxcIlxuICAgICAgICAgIFtzaXplXT1cInByZWZpeEljb25TaXplXCJcbiAgICAgICAgICBjbGFzcz1cInByZWZpeC1pY29uXCI+XG4gICAgICAgIDwvY3BzLWljb24+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImNwcy1zZWxlY3QtYm94LXBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgKCFtdWx0aXBsZSAmJiBpc0VtcHR5VmFsdWUoKSkgfHwgKHZhbHVlPy5sZW5ndGggPCAxICYmIG11bHRpcGxlKVxuICAgICAgICAgIFwiPlxuICAgICAgICAgIHt7IHBsYWNlaG9sZGVyIH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJjcHMtc2VsZWN0LWJveC1pdGVtc1wiXG4gICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICghbXVsdGlwbGUgJiYgIWlzRW1wdHlWYWx1ZSgpKSB8fCAodmFsdWU/Lmxlbmd0aCA+IDAgJiYgbXVsdGlwbGUpXG4gICAgICAgICAgXCI+XG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCIhbXVsdGlwbGVcIiBjbGFzcz1cInNpbmdsZS1pdGVtXCI+XG4gICAgICAgICAgICB7e1xuICAgICAgICAgICAgICByZXR1cm5PYmplY3RcbiAgICAgICAgICAgICAgICA/IHZhbHVlW29wdGlvbkxhYmVsXVxuICAgICAgICAgICAgICAgIDogKHZhbHVlIHwgbGFiZWxCeVZhbHVlIDogb3B0aW9ucyA6IG9wdGlvblZhbHVlIDogb3B0aW9uTGFiZWwpXG4gICAgICAgICAgICB9fTwvc3BhblxuICAgICAgICAgID5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwibXVsdGlwbGUgJiYgIWNoaXBzXCIgY2xhc3M9XCJ0ZXh0LWdyb3VwXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtZ3JvdXAtaXRlbVwiPlxuICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgIHZhbHVlXG4gICAgICAgICAgICAgICAgICB8IGNvbWJpbmVMYWJlbHNcbiAgICAgICAgICAgICAgICAgICAgOiBvcHRpb25zXG4gICAgICAgICAgICAgICAgICAgIDogb3B0aW9uVmFsdWVcbiAgICAgICAgICAgICAgICAgICAgOiBvcHRpb25MYWJlbFxuICAgICAgICAgICAgICAgICAgICA6IHJldHVybk9iamVjdFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiAqbmdJZj1cIm11bHRpcGxlICYmIGNoaXBzXCIgY2xhc3M9XCJjaGlwcy1ncm91cFwiPlxuICAgICAgICAgICAgPGNwcy1jaGlwXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCB2YWwgb2YgdmFsdWVcIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgICBbY2xvc2FibGVdPVwiY2xvc2FibGVDaGlwc1wiXG4gICAgICAgICAgICAgIChjbG9zZWQpPVwic2VsZWN0KHZhbCwgdHJ1ZSlcIlxuICAgICAgICAgICAgICBbbGFiZWxdPVwiXG4gICAgICAgICAgICAgICAgcmV0dXJuT2JqZWN0XG4gICAgICAgICAgICAgICAgICA/IHZhbFtvcHRpb25MYWJlbF1cbiAgICAgICAgICAgICAgICAgIDogKHZhbCB8IGxhYmVsQnlWYWx1ZSA6IG9wdGlvbnMgOiBvcHRpb25WYWx1ZSA6IG9wdGlvbkxhYmVsKVxuICAgICAgICAgICAgICBcIj5cbiAgICAgICAgICAgIDwvY3BzLWNoaXA+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8c3BhbiBjbGFzcz1cImNwcy1zZWxlY3QtYm94LWljb25zXCI+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgKm5nSWY9XCJjbGVhcmFibGUgJiYgIWRpc2FibGVkXCJcbiAgICAgICAgICBbc3R5bGUudmlzaWJpbGl0eV09XCJcbiAgICAgICAgICAgIHBlcnNpc3RlbnRDbGVhciB8fFxuICAgICAgICAgICAgKCFwZXJzaXN0ZW50Q2xlYXIgJiZcbiAgICAgICAgICAgICAgKChtdWx0aXBsZSAmJiB2YWx1ZT8ubGVuZ3RoKSB8fCAoIW11bHRpcGxlICYmICFpc0VtcHR5VmFsdWUoKSkpKVxuICAgICAgICAgICAgICA/ICd2aXNpYmxlJ1xuICAgICAgICAgICAgICA6ICdoaWRkZW4nXG4gICAgICAgICAgXCJcbiAgICAgICAgICBjbGFzcz1cImNwcy1zZWxlY3QtYm94LWNsZWFyLWljb25cIj5cbiAgICAgICAgICA8Y3BzLWljb25cbiAgICAgICAgICAgIGljb249XCJkZWxldGVcIlxuICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICAgIChjbGljayk9XCJjbGVhcigkZXZlbnQpXCI+PC9jcHMtaWNvbj5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImNwcy1zZWxlY3QtYm94LWNoZXZyb25cIj5cbiAgICAgICAgICA8Y3BzLWljb25cbiAgICAgICAgICAgIGljb249XCJjaGV2cm9uLWRvd25cIlxuICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICAgIFtjb2xvcl09XCJkaXNhYmxlZCA/ICd0ZXh0LWxpZ2h0JyA6ICd0ZXh0LWRhcmsnXCI+PC9jcHMtaWNvbj5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuXG4gICAgPGNwcy1tZW51XG4gICAgICAjb3B0aW9uc01lbnVcbiAgICAgIFt3aXRoQXJyb3ddPVwiZmFsc2VcIlxuICAgICAgKGJlZm9yZU1lbnVIaWRkZW4pPVwib25CZWZvcmVPcHRpb25zSGlkZGVuKClcIlxuICAgICAgaGlkZVRyYW5zaXRpb25PcHRpb25zPVwiMHMgbGluZWFyXCJcbiAgICAgIFtjb250YWluZXJDbGFzc109XCInY3BzLXNlbGVjdC1vcHRpb25zLW1lbnUgJyArIG9wdGlvbnNDbGFzc1wiPlxuICAgICAgPGRpdlxuICAgICAgICAjb3B0aW9uc0xpc3RcbiAgICAgICAgY2xhc3M9XCJjcHMtc2VsZWN0LW9wdGlvbnNcIlxuICAgICAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAgICAgd2lkdGg6IHNlbGVjdEJveFdpZHRoICsgJ3B4J1xuICAgICAgICB9XCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhdmlydHVhbFNjcm9sbFwiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiY3BzLXNlbGVjdC1vcHRpb25zLW9wdGlvbiBzZWxlY3QtYWxsLW9wdGlvblwiXG4gICAgICAgICAgICBbY2xhc3MuYWxsc2VsZWN0ZWRdPVwidmFsdWU/Lmxlbmd0aCA9PT0gb3B0aW9ucy5sZW5ndGhcIlxuICAgICAgICAgICAgKm5nSWY9XCJtdWx0aXBsZSAmJiBzZWxlY3RBbGwgJiYgb3B0aW9ucy5sZW5ndGggPiAxXCJcbiAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVBbGwoKVwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcHMtc2VsZWN0LW9wdGlvbnMtb3B0aW9uLWxlZnRcIj5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJtdWx0aXBsZVwiIGNsYXNzPVwiY3BzLXNlbGVjdC1vcHRpb25zLW9wdGlvbi1jaGVja1wiPlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3BzLXNlbGVjdC1vcHRpb25zLW9wdGlvbi1sYWJlbFwiPlNlbGVjdCBhbGw8L3NwYW4+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBvcHRpb25zXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgaXRlbVRlbXBsYXRlO1xuICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgICAgIGl0ZW06IGl0ZW1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInZpcnR1YWxTY3JvbGxcIj5cbiAgICAgICAgICA8cC12aXJ0dWFsU2Nyb2xsZXJcbiAgICAgICAgICAgICN2aXJ0dWFsTGlzdFxuICAgICAgICAgICAgW3ZhbHVlXT1cIm9wdGlvbnNcIlxuICAgICAgICAgICAgW2RlbGF5XT1cIjBcIlxuICAgICAgICAgICAgW3Njcm9sbEhlaWdodF09XCJ2aXJ0dWFsTGlzdEhlaWdodCArICdweCdcIlxuICAgICAgICAgICAgW29wdGlvbnNdPVwieyBudW1Ub2xlcmF0ZWRJdGVtczogbnVtVG9sZXJhdGVkSXRlbXMgfVwiXG4gICAgICAgICAgICBbaXRlbVNpemVdPVwidmlydHVhbFNjcm9sbEl0ZW1TaXplXCI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaXRlbVwiIGxldC1pdGVtPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgIGl0ZW1UZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgaXRlbTogaXRlbVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L3AtdmlydHVhbFNjcm9sbGVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvY3BzLW1lbnU+XG5cbiAgICA8Y3BzLXByb2dyZXNzLWxpbmVhclxuICAgICAgKm5nSWY9XCJsb2FkaW5nXCJcbiAgICAgIGhlaWdodD1cIjNcIlxuICAgICAgcmFkaXVzPVwiNFwiXG4gICAgICBvcGFjaXR5PVwiMC4zXCJcbiAgICAgIGNsYXNzPVwic2VsZWN0LXByb2dyZXNzLWJhclwiXG4gICAgICBiZ0NvbG9yPVwidHJhbnNwYXJlbnRcIj5cbiAgICA8L2Nwcy1wcm9ncmVzcy1saW5lYXI+XG4gIDwvZGl2PlxuICA8ZGl2ICpuZ0lmPVwiIWVycm9yICYmICFoaWRlRGV0YWlsc1wiIGNsYXNzPVwiY3BzLXNlbGVjdC1oaW50XCI+e3sgaGludCB9fTwvZGl2PlxuICA8ZGl2ICpuZ0lmPVwiZXJyb3IgJiYgIWhpZGVEZXRhaWxzXCIgY2xhc3M9XCJjcHMtc2VsZWN0LWVycm9yXCI+e3sgZXJyb3IgfX08L2Rpdj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2l0ZW1UZW1wbGF0ZSBsZXQtaXRlbT1cIml0ZW1cIj5cbiAgPGRpdlxuICAgIGNsYXNzPVwiY3BzLXNlbGVjdC1vcHRpb25zLW9wdGlvblwiXG4gICAgKGNsaWNrKT1cIm9uT3B0aW9uQ2xpY2soaXRlbSlcIlxuICAgIFtjbGFzcy5zZWxlY3RlZF09XCJcbiAgICAgIGl0ZW0gfCBjaGVja09wdGlvblNlbGVjdGVkIDogdmFsdWUgOiBtdWx0aXBsZSA6IHJldHVybk9iamVjdCA6IG9wdGlvblZhbHVlXG4gICAgXCI+XG4gICAgPHNwYW4gY2xhc3M9XCJjcHMtc2VsZWN0LW9wdGlvbnMtb3B0aW9uLWxlZnRcIj5cbiAgICAgIDxzcGFuICpuZ0lmPVwibXVsdGlwbGVcIiBjbGFzcz1cImNwcy1zZWxlY3Qtb3B0aW9ucy1vcHRpb24tY2hlY2tcIj4gPC9zcGFuPlxuICAgICAgPHNwYW5cbiAgICAgICAgY2xhc3M9XCJjcHMtc2VsZWN0LW9wdGlvbnMtb3B0aW9uLWxhYmVsXCJcbiAgICAgICAgW2NsYXNzLnZpcnR1YWwtcm93XT1cInZpcnR1YWxTY3JvbGxcIlxuICAgICAgICA+e3sgaXRlbVtvcHRpb25MYWJlbF0gfX08L3NwYW5cbiAgICAgID5cbiAgICA8L3NwYW4+XG5cbiAgICA8c3BhblxuICAgICAgY2xhc3M9XCJjcHMtc2VsZWN0LW9wdGlvbnMtb3B0aW9uLXJpZ2h0XCJcbiAgICAgIFtjbGFzcy52aXJ0dWFsLXJvd109XCJ2aXJ0dWFsU2Nyb2xsXCJcbiAgICAgID57eyBpdGVtW29wdGlvbkluZm9dIH19PC9zcGFuXG4gICAgPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
615
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3BzLXNlbGVjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jcHMtdWkta2l0L3NyYy9saWIvY29tcG9uZW50cy9jcHMtc2VsZWN0L2Nwcy1zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3BzLXVpLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvY3BzLXNlbGVjdC9jcHMtc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBRUwsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBR0wsUUFBUSxFQUNSLE1BQU0sRUFDTixJQUFJLEVBQ0osU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsV0FBVyxFQUFhLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDOUQsT0FBTyxFQUNMLGdCQUFnQixFQUdqQixNQUFNLGdDQUFnQyxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBQ2xHLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQzFGLE9BQU8sRUFBRSxPQUFPLEVBQUUs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O3NCQURWLFNBQVM7dUJBQUMsYUFBYTtnQkFJeEIsV0FBVztzQkFEVixTQUFTO3VCQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgU2VsZixcbiAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1zTW9kdWxlLCBOZ0NvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNvbnZlcnRTaXplIH0gZnJvbSAnLi4vLi4vdXRpbHMvaW50ZXJuYWwvc2l6ZS11dGlscyc7XG5pbXBvcnQge1xuICBDcHNJY29uQ29tcG9uZW50LFxuICBpY29uU2l6ZVR5cGUsXG4gIEljb25UeXBlXG59IGZyb20gJy4uL2Nwcy1pY29uL2Nwcy1pY29uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDcHNDaGlwQ29tcG9uZW50IH0gZnJvbSAnLi4vY3BzLWNoaXAvY3BzLWNoaXAuY29tcG9uZW50JztcbmltcG9ydCB7IENwc1Byb2dyZXNzTGluZWFyQ29tcG9uZW50IH0gZnJvbSAnLi4vY3BzLXByb2dyZXNzLWxpbmVhci9jcHMtcHJvZ3Jlc3MtbGluZWFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDcHNJbmZvQ2lyY2xlQ29tcG9uZW50IH0gZnJvbSAnLi4vY3BzLWluZm8tY2lyY2xlL2Nwcy1pbmZvLWNpcmNsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTGFiZWxCeVZhbHVlUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL2ludGVybmFsL2xhYmVsLWJ5LXZhbHVlLnBpcGUnO1xuaW1wb3J0IHsgQ29tYmluZUxhYmVsc1BpcGUgfSBmcm9tICcuLi8uLi9waXBlcy9pbnRlcm5hbC9jb21iaW5lLWxhYmVscy5waXBlJztcbmltcG9ydCB7IENoZWNrT3B0aW9uU2VsZWN0ZWRQaXBlIH0gZnJvbSAnLi4vLi4vcGlwZXMvaW50ZXJuYWwvY2hlY2stb3B0aW9uLXNlbGVjdGVkLnBpcGUnO1xuaW1wb3J0IHsgaXNFcXVhbCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQge1xuICBWaXJ0dWFsU2Nyb2xsZXIsXG4gIFZpcnR1YWxTY3JvbGxlck1vZHVsZVxufSBmcm9tICdwcmltZW5nL3ZpcnR1YWxzY3JvbGxlcic7XG5pbXBvcnQgeyBDcHNUb29sdGlwUG9zaXRpb24gfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL2Nwcy10b29sdGlwLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBDcHNNZW51Q29tcG9uZW50IH0gZnJvbSAnLi4vY3BzLW1lbnUvY3BzLW1lbnUuY29tcG9uZW50JztcblxuZXhwb3J0IHR5cGUgQ3BzU2VsZWN0QXBwZWFyYW5jZVR5cGUgPSAnb3V0bGluZWQnIHwgJ3VuZGVybGluZWQnIHwgJ2JvcmRlcmxlc3MnO1xuXG4vKipcbiAqIENwc1NlbGVjdENvbXBvbmVudCBpcyB1c2VkIHRvIHNlbGVjdCBpdGVtcyBmcm9tIGEgY29sbGVjdGlvbi5cbiAqIEBncm91cCBDb21wb25lbnRzXG4gKi9cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIENwc0ljb25Db21wb25lbnQsXG4gICAgQ3BzQ2hpcENvbXBvbmVudCxcbiAgICBDcHNQcm9ncmVzc0xpbmVhckNvbXBvbmVudCxcbiAgICBDcHNJbmZvQ2lyY2xlQ29tcG9uZW50LFxuICAgIExhYmVsQnlWYWx1ZVBpcGUsXG4gICAgQ29tYmluZUxhYmVsc1BpcGUsXG4gICAgQ2hlY2tPcHRpb25TZWxlY3RlZFBpcGUsXG4gICAgVmlydHVhbFNjcm9sbGVyTW9kdWxlLFxuICAgIENwc01lbnVDb21wb25lbnRcbiAgXSxcbiAgcHJvdmlkZXJzOiBbTGFiZWxCeVZhbHVlUGlwZSwgQ29tYmluZUxhYmVsc1BpcGUsIENoZWNrT3B0aW9uU2VsZWN0ZWRQaXBlXSxcbiAgc2VsZWN0b3I6ICdjcHMtc2VsZWN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Nwcy1zZWxlY3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jcHMtc2VsZWN0LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQ3BzU2VsZWN0Q29tcG9uZW50XG4gIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95XG57XG4gIC8qKlxuICAgKiBUaGUgbGFiZWwgb2YgdGhlIHNlbGVjdCBjb21wb25lbnQuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgbGFiZWwgPSAnJztcblxuICAvKipcbiAgICogUGxhY2Vob2xkZXIgdGV4dCBmb3IgdGhlIHNlbGVjdCBjb21wb25lbnQuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSAnUGxlYXNlIHNlbGVjdCc7XG5cbiAgLyoqXG4gICAqIEJvdHRvbSBoaW50IHRleHQgZm9yIHRoZSBzZWxlY3QgY29tcG9uZW50LlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIGhpbnQgPSAnJztcblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgb2JqZWN0IGRpcmVjdGx5IHJhdGhlciB0aGFuIHRoZSB2YWx1ZSBzcGVjaWZpZWQgd2l0aCBvcHRpb25WYWx1ZS5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSByZXR1cm5PYmplY3QgPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgaWYgbXVsdGlwbGUgdmFsdWVzIGNhbiBiZSBzZWxlY3RlZC5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBtdWx0aXBsZSA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgd2hldGhlciB0aGUgY29tcG9uZW50IGlzIGRpc2FibGVkLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFdpZHRoIG9mIHRoZSBzZWxlY3QgY29tcG9uZW50LCBvZiB0eXBlIG51bWJlciBkZW5vdGluZyBwaXhlbHMgb3Igc3RyaW5nLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIHdpZHRoOiBudW1iZXIgfCBzdHJpbmcgPSAnMTAwJSc7XG5cbiAgLyoqXG4gICAqIE9wdGlvbiBmb3Igc2VsZWN0aW5nIGFsbCBlbGVtZW50cy4gRG9lc24ndCB3b3JrIHdpdGggdmlydHVhbCBzY3JvbGwuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgc2VsZWN0QWxsID0gdHJ1ZTtcblxuICAvKipcbiAgICogV2hlbiBzZWxlY3RpbmcgZWxlbWVudHMsIHRoZXkgd2lsbCBhcHBlYXIgaW4gYSBmb3JtIG9mIGEgY2hpcC5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBjaGlwcyA9IHRydWU7XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgd2hldGhlciB0aGUgY2hpcHMgY2FuIGJlIGRpcmVjdGx5IHJlbW92ZWQuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgY2xvc2FibGVDaGlwcyA9IHRydWU7XG5cbiAgLyoqXG4gICAqIFdoZW4gZW5hYmxlZCwgYSBjbGVhciBpY29uIGlzIGRpc3BsYXllZCB0byBjbGVhciB0aGUgdmFsdWUuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgY2xlYXJhYmxlID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgd2hldGhlciB0aGUgZHJvcGRvd24gbGlzdCBzaG91bGQgb3BlbiBvbiBjbGVhci5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBvcGVuT25DbGVhciA9IHRydWU7XG5cbiAgLyoqXG4gICAqIEFuIGFycmF5IG9mIG9wdGlvbnMuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgb3B0aW9ucyA9IFtdIGFzIGFueVtdO1xuXG4gIC8qKlxuICAgKiBJZiBtdWx0aXBsZSwgZGV0ZXJtaW5lcyB3aGV0aGVyIHNlbGVjdGVkIG9wdGlvbnMgc2hvdWxkIGJlIG9yZGVyZWQgYWNjb3JkaW5nIHRvIHRoZSBpbml0aWFsIG9yZGVyIG9mIHRoZSBvcHRpb25zLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIGtlZXBJbml0aWFsT3JkZXIgPSBmYWxzZTtcblxuICAvKipcbiAgICogTmFtZSBvZiB0aGUgbGFiZWwgZmllbGQgb2YgYW4gb3B0aW9uLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIG9wdGlvbkxhYmVsID0gJ2xhYmVsJztcblxuICAvKipcbiAgICogTmFtZSBvZiB0aGUgdmFsdWUgZmllbGQgb2YgYW4gb3B0aW9uLiBOZWVkZWQgb25seSBpZiByZXR1cm5PYmplY3QgcHJvcCBpcyBmYWxzZS5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBvcHRpb25WYWx1ZSA9ICd2YWx1ZSc7XG5cbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIGluZm8gZmllbGQgb2YgYW4gb3B0aW9uLCBzaG93cyB0aGUgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiB0ZXh0LlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIG9wdGlvbkluZm8gPSAnaW5mbyc7XG5cbiAgLyoqXG4gICAqIEhpZGVzIGhpbnQgYW5kIHZhbGlkYXRpb24gZXJyb3JzLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIGhpZGVEZXRhaWxzID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgd2hldGhlciB0aGUgY29tcG9uZW50IHNob3VsZCBoYXZlIHBlcnNpc3RlbnQgY2xlYXIgaWNvbi5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBwZXJzaXN0ZW50Q2xlYXIgPSBmYWxzZTtcblxuICAvKipcbiAgICogSWNvbiBiZWZvcmUgaW5wdXQgdmFsdWUuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgcHJlZml4SWNvbjogSWNvblR5cGUgPSAnJztcblxuICAvKipcbiAgICogU2l6ZSBvZiBpY29uIGJlZm9yZSBpbnB1dCB2YWx1ZSwgb2YgdHlwZSBudW1iZXIgb3Igc3RyaW5nIG9yIHZhbHVlICdmaWxsJywgJ3hzbWFsbCcsICdzbWFsbCcsICdub3JtYWwnIG9yICdsYXJnZScuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgcHJlZml4SWNvblNpemU6IGljb25TaXplVHlwZSA9ICcxOHB4JztcblxuICAvKipcbiAgICogV2hlbiBlbmFibGVkLCBhIGxvYWRpbmcgYmFyIGlzIGRpc3BsYXllZC5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBsb2FkaW5nID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgd2hldGhlciBvbmx5IHRoZSBlbGVtZW50cyB3aXRoaW4gc2Nyb2xsYWJsZSBhcmVhIHNob3VsZCBiZSBhZGRlZCBpbnRvIHRoZSBET00uXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgdmlydHVhbFNjcm9sbCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGhvdyBtYW55IGFkZGl0aW9uYWwgZWxlbWVudHMgdG8gYWRkIHRvIHRoZSBET00gb3V0c2lkZSBvZiB0aGUgdmlldy5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBudW1Ub2xlcmF0ZWRJdGVtcyA9IDEwO1xuXG4gIC8qKlxuICAgKiBXaGVuIGl0IGlzIG5vdCBhbiBlbXB0eSBzdHJpbmcsIGFuIGluZm8gaWNvbiBpcyBkaXNwbGF5ZWQgdG8gc2hvdyB0ZXh0IGZvciBtb3JlIGluZm8uXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgaW5mb1Rvb2x0aXAgPSAnJztcblxuICAvKipcbiAgICogSW5mb1Rvb2x0aXAgY2xhc3MgZm9yIHN0eWxpbmcuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgaW5mb1Rvb2x0aXBDbGFzcyA9ICdjcHMtdG9vbHRpcC1jb250ZW50JztcblxuICAvKipcbiAgICogTWF4IHdpZHRoIG9mIGluZm9Ub29sdGlwIG9mIHR5cGUgbnVtYmVyIGRlbm90aW5nIHBpeGVscyBvciBzdHJpbmcuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgaW5mb1Rvb2x0aXBNYXhXaWR0aDogbnVtYmVyIHwgc3RyaW5nID0gJzEwMCUnO1xuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGluZm9Ub29sdGlwIGlzIHBlcnNpc3RlbnQuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgaW5mb1Rvb2x0aXBQZXJzaXN0ZW50ID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFBvc2l0aW9uIG9mIGluZm9Ub29sdGlwLCBpdCBjYW4gYmUgJ3RvcCcsICdib3R0b20nLCAnbGVmdCcgb3IgJ3JpZ2h0Jy5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBpbmZvVG9vbHRpcFBvc2l0aW9uOiBDcHNUb29sdGlwUG9zaXRpb24gPSAndG9wJztcblxuICAvKipcbiAgICogQ2xhc3MgZm9yIGFkZGl0aW9uYWwgc3R5bGluZyBvZiB0aGUgZHJvcGRvd24gbGlzdC5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBvcHRpb25zQ2xhc3MgPSAnJztcblxuICAvKipcbiAgICogU3R5bGluZyBhcHBlYXJhbmNlIG9mIHNlbGVjdCBpbnB1dCwgaXQgY2FuIGJlICdvdXRsaW5lZCcsICd1bmRlcmxpbmVkJyBvciAnYm9yZGVybGVzcycuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgYXBwZWFyYW5jZTogQ3BzU2VsZWN0QXBwZWFyYW5jZVR5cGUgPSAnb3V0bGluZWQnO1xuXG4gIC8qKlxuICAgKiBWYWx1ZSBvZiB0aGUgc2VsZWN0IGNvbXBvbmVudC5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoJ3ZhbHVlJykgX3ZhbHVlOiBhbnkgPSB1bmRlZmluZWQ7XG5cbiAgc2V0IHZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMub25DaGFuZ2UodmFsdWUpO1xuICB9XG5cbiAgZ2V0IHZhbHVlKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxiYWNrIHRvIGludm9rZSBvbiB2YWx1ZSBjaGFuZ2UuXG4gICAqIEBwYXJhbSB7YW55fSBhbnkgLSB2YWx1ZSBjaGFuZ2VkLlxuICAgKiBAZ3JvdXAgRW1pdHNcbiAgICovXG4gIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBAVmlld0NoaWxkKCdzZWxlY3RCb3gnKVxuICBzZWxlY3RCb3ghOiBFbGVtZW50UmVmO1xuXG4gIEBWaWV3Q2hpbGQoJ3NlbGVjdENvbnRhaW5lcicpXG4gIHNlbGVjdENvbnRhaW5lciE6IEVsZW1lbnRSZWY7XG5cbiAgQFZpZXdDaGlsZCgndmlydHVhbExpc3QnKVxuICB2aXJ0dWFsTGlzdCE6IFZpcnR1YWxTY3JvbGxlcjtcblxuICBAVmlld0NoaWxkKCdvcHRpb25zTWVudScpXG4gIG9wdGlvbnNNZW51ITogQ3BzTWVudUNvbXBvbmVudDtcblxuICBAVmlld0NoaWxkKCdvcHRpb25zTGlzdCcpXG4gIG9wdGlvbnNMaXN0ITogRWxlbWVudFJlZjtcblxuICBwcml2YXRlIF9zdGF0dXNDaGFuZ2VzU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgZXJyb3IgPSAnJztcbiAgY3Z0V2lkdGggPSAnJztcbiAgaXNPcGVuZWQgPSBmYWxzZTtcbiAgb3B0aW9uSGlnaGxpZ2h0ZWRJbmRleCA9IC0xO1xuXG4gIHZpcnR1YWxMaXN0SGVpZ2h0ID0gMjQwO1xuICB2aXJ0dWFsU2Nyb2xsSXRlbVNpemUgPSA0MjtcblxuICBzZWxlY3RCb3hXaWR0aCA9IDA7XG4gIHJlc2l6ZU9ic2VydmVyOiBSZXNpemVPYnNlcnZlcjtcblxuICBjb25zdHJ1Y3RvcihAU2VsZigpIEBPcHRpb25hbCgpIHByaXZhdGUgX2NvbnRyb2w6IE5nQ29udHJvbCkge1xuICAgIGlmICh0aGlzLl9jb250cm9sKSB7XG4gICAgICB0aGlzLl9jb250cm9sLnZhbHVlQWNjZXNzb3IgPSB0aGlzO1xuICAgIH1cbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKChlbnRyaWVzKSA9PiB7XG4gICAgICBlbnRyaWVzLmZvckVhY2goKGVudHJ5KSA9PiB7XG4gICAgICAgIGlmIChlbnRyeT8udGFyZ2V0KVxuICAgICAgICAgIHRoaXMuc2VsZWN0Qm94V2lkdGggPSAoZW50cnkudGFyZ2V0IGFzIGFueSkub2Zmc2V0V2lkdGg7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuY3Z0V2lkdGggPSBjb252ZXJ0U2l6ZSh0aGlzLndpZHRoKTtcbiAgICBpZiAodGhpcy5tdWx0aXBsZSAmJiAhdGhpcy5fdmFsdWUpIHtcbiAgICAgIHRoaXMuX3ZhbHVlID0gW107XG4gICAgfVxuXG4gICAgdGhpcy5fc3RhdHVzQ2hhbmdlc1N1YnNjcmlwdGlvbiA9IHRoaXMuX2NvbnRyb2w/LnN0YXR1c0NoYW5nZXM/LnN1YnNjcmliZShcbiAgICAgICgpID0+IHtcbiAgICAgICAgdGhpcy5fY2hlY2tFcnJvcnMoKTtcbiAgICAgIH1cbiAgICApIGFzIFN1YnNjcmlwdGlvbjtcblxuICAgIHRoaXMuX3JlY2FsY1ZpcnR1YWxMaXN0SGVpZ2h0KCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5yZXNpemVPYnNlcnZlci5vYnNlcnZlKHRoaXMuc2VsZWN0Qm94Lm5hdGl2ZUVsZW1lbnQpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fc3RhdHVzQ2hhbmdlc1N1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyPy5kaXNjb25uZWN0KCk7XG4gIH1cblxuICBwcml2YXRlIF90b2dnbGVPcHRpb25zKHNob3c/OiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5pc09wZW5lZCA9PT0gc2hvdykgcmV0dXJuO1xuXG4gICAgaWYgKHR5cGVvZiBzaG93ID09PSAnYm9vbGVhbicpIHtcbiAgICAgIGlmIChzaG93KSB7XG4gICAgICAgIHRoaXMub3B0aW9uc01lbnUuc2hvdyh7XG4gICAgICAgICAgdGFyZ2V0OiB0aGlzLnNlbGVjdEJveC5uYXRpdmVFbGVtZW50XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5vcHRpb25zTWVudS5oaWRlKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub3B0aW9uc01lbnUudG9nZ2xlKHtcbiAgICAgICAgdGFyZ2V0OiB0aGlzLnNlbGVjdEJveC5uYXRpdmVFbGVtZW50XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLmlzT3BlbmVkID0gdGhpcy5vcHRpb25zTWVudS5pc1Zpc2libGUoKTtcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuaXNPcGVuZWQgJiYgdGhpcy5vcHRpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPVxuICAgICAgICAgIHRoaXMub3B0aW9uc0xpc3QubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuc2VsZWN0ZWQnKTtcbiAgICAgICAgaWYgKHNlbGVjdGVkKSB7XG4gICAgICAgICAgc2VsZWN0ZWQuc2Nyb2xsSW50b1ZpZXcoe1xuICAgICAgICAgICAgYmVoYXZpb3I6ICdpbnN0YW50JyxcbiAgICAgICAgICAgIGJsb2NrOiAnbmVhcmVzdCcsXG4gICAgICAgICAgICBpbmxpbmU6ICdjZW50ZXInXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy52aXJ0dWFsU2Nyb2xsICYmICF0aGlzLmlzRW1wdHlWYWx1ZSgpKSB7XG4gICAgICAgICAgbGV0IHY6IGFueTtcbiAgICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xuICAgICAgICAgICAgaWYgKHRoaXMudmFsdWUubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICB2ID0gdGhpcy52YWx1ZVswXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2UgdiA9IHRoaXMudmFsdWU7XG4gICAgICAgICAgY29uc3QgaWR4ID0gdGhpcy5vcHRpb25zLmZpbmRJbmRleCgobykgPT4gaXNFcXVhbChvLCB2KSk7XG4gICAgICAgICAgaWYgKGlkeCA+PSAwKSB0aGlzLnZpcnR1YWxMaXN0LnNjcm9sbFRvSW5kZXgoaWR4KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVjYWxjVmlydHVhbExpc3RIZWlnaHQoKSB7XG4gICAgaWYgKCF0aGlzLnZpcnR1YWxTY3JvbGwpIHJldHVybjtcbiAgICBjb25zdCBjdXJyZW50TGVuID0gdGhpcy5vcHRpb25zPy5sZW5ndGggfHwgMDtcbiAgICB0aGlzLnZpcnR1YWxMaXN0SGVpZ2h0ID0gTWF0aC5taW4oXG4gICAgICB0aGlzLnZpcnR1YWxTY3JvbGxJdGVtU2l6ZSAqIGN1cnJlbnRMZW4sXG4gICAgICAyNDBcbiAgICApO1xuICB9XG5cbiAgc2VsZWN0KG9wdGlvbjogYW55LCBieVZhbHVlOiBib29sZWFuKTogdm9pZCB7XG4gICAgZnVuY3Rpb24gaW5jbHVkZXMoYXJyYXk6IGFueVtdLCB2YWw6IGFueSk6IGJvb2xlYW4ge1xuICAgICAgcmV0dXJuIGFycmF5Py5zb21lKChpdGVtKSA9PiBpc0VxdWFsKGl0ZW0sIHZhbCkpIHx8IGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCB2YWwgPSBieVZhbHVlXG4gICAgICA/IG9wdGlvblxuICAgICAgOiB0aGlzLnJldHVybk9iamVjdFxuICAgICAgPyBvcHRpb25cbiAgICAgIDogb3B0aW9uW3RoaXMub3B0aW9uVmFsdWVdO1xuICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICBsZXQgcmVzID0gW10gYXMgYW55O1xuICAgICAgaWYgKGluY2x1ZGVzKHRoaXMudmFsdWUsIHZhbCkpIHtcbiAgICAgICAgcmVzID0gdGhpcy52YWx1ZS5maWx0ZXIoKHY6IGFueSkgPT4gIWlzRXF1YWwodiwgdmFsKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAodGhpcy5rZWVwSW5pdGlhbE9yZGVyKSB7XG4gICAgICAgICAgdGhpcy5vcHRpb25zLmZvckVhY2goKG8pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG92ID0gdGhpcy5yZXR1cm5PYmplY3QgPyBvIDogb1t0aGlzLm9wdGlvblZhbHVlXTtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgdGhpcy52YWx1ZS5zb21lKCh2OiBhbnkpID0+IGlzRXF1YWwodiwgb3YpKSB8fFxuICAgICAgICAgICAgICBpc0VxdWFsKHZhbCwgb3YpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgcmVzLnB1c2gob3YpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IG9wdCA9IHRoaXMub3B0aW9ucy5maW5kKChvKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gaXNFcXVhbCh2YWwsIHRoaXMucmV0dXJuT2JqZWN0ID8gbyA6IG9bdGhpcy5vcHRpb25WYWx1ZV0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGlmIChvcHQpIHtcbiAgICAgICAgICAgIHJlcyA9IFtcbiAgICAgICAgICAgICAgLi4udGhpcy52YWx1ZSxcbiAgICAgICAgICAgICAgdGhpcy5yZXR1cm5PYmplY3QgPyBvcHQgOiBvcHRbdGhpcy5vcHRpb25WYWx1ZV1cbiAgICAgICAgICAgIF07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLnVwZGF0ZVZhbHVlKHJlcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudXBkYXRlVmFsdWUodmFsKTtcbiAgICB9XG4gIH1cblxuICBvbk9wdGlvbkNsaWNrKG9wdGlvbjogYW55KSB7XG4gICAgdGhpcy5fY2xpY2tPcHRpb24ob3B0aW9uKTtcbiAgfVxuXG4gIHByaXZhdGUgX2NsaWNrT3B0aW9uKG9wdGlvbjogYW55KSB7XG4gICAgdGhpcy5zZWxlY3Qob3B0aW9uLCBmYWxzZSk7XG4gICAgaWYgKCF0aGlzLm11bHRpcGxlKSB7XG4gICAgICB0aGlzLl90b2dnbGVPcHRpb25zKGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9nZXRIVE1MT3B0aW9ucygpIHtcbiAgICByZXR1cm4gKHRoaXMub3B0aW9uc0xpc3QubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKFxuICAgICAgJy5jcHMtc2VsZWN0LW9wdGlvbnMtb3B0aW9uJ1xuICAgICkgfHwgW10pIGFzIGFueTtcbiAgfVxuXG4gIHByaXZhdGUgX2RlaGlnaGxpZ2h0T3B0aW9uKGVsPzogSFRNTEVsZW1lbnQpIHtcbiAgICBpZiAoZWwpIGVsLmNsYXNzTGlzdC5yZW1vdmUoJ2hpZ2hsaWdodGVuJyk7XG4gICAgZWxzZSB7XG4gICAgICBpZiAodGhpcy5vcHRpb25IaWdobGlnaHRlZEluZGV4IDwgMCkgcmV0dXJuO1xuICAgICAgY29uc3Qgb3B0aW9uSXRlbXMgPSB0aGlzLl9nZXRIVE1MT3B0aW9ucygpO1xuICAgICAgb3B0aW9uSXRlbXNbdGhpcy5vcHRpb25IaWdobGlnaHRlZEluZGV4XS5jbGFzc0xpc3QucmVtb3ZlKCdoaWdobGlnaHRlbicpO1xuICAgICAgdGhpcy5vcHRpb25IaWdobGlnaHRlZEluZGV4ID0gLTE7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfaGlnaGxpZ2h0T3B0aW9uKGVsOiBIVE1MRWxlbWVudCkge1xuICAgIGVsLmNsYXNzTGlzdC5hZGQoJ2hpZ2hsaWdodGVuJyk7XG4gICAgY29uc3QgcGFyZW50ID0gZWwucGFyZW50RWxlbWVudDtcbiAgICBpZiAoIXBhcmVudCkgcmV0dXJuO1xuICAgIGNvbnN0IHBhcmVudFJlY3QgPSBwYXJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgY29uc3QgZWxSZWN0ID0gZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgaWYgKGVsUmVjdC50b3AgPCBwYXJlbnRSZWN0LnRvcCB8fCBlbFJlY3QuYm90dG9tID4gcGFyZW50UmVjdC5ib3R0b20pIHtcbiAgICAgIGVsLnNjcm9sbEludG9WaWV3KHtcbiAgICAgICAgYmxvY2s6ICduZWFyZXN0JyxcbiAgICAgICAgaW5saW5lOiAnY2VudGVyJ1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfbmF2aWdhdGVPcHRpb25zQnlBcnJvd3ModXA6IGJvb2xlYW4pIHtcbiAgICBpZiAoIXRoaXMuaXNPcGVuZWQpIHJldHVybjtcblxuICAgIGNvbnN0IG9wdGlvbkl0ZW1zID0gdGhpcy5fZ2V0SFRNTE9wdGlvbnMoKTtcbiAgICBjb25zdCBsZW4gPSBvcHRpb25JdGVtcy5sZW5ndGg7XG4gICAgaWYgKGxlbiA8IDEpIHJldHVybjtcblxuICAgIGlmIChsZW4gPT09IDEpIHtcbiAgICAgIHRoaXMub3B0aW9uSGlnaGxpZ2h0ZWRJbmRleCA9IDA7XG4gICAgICB0aGlzLl9oaWdobGlnaHRPcHRpb24ob3B0aW9uSXRlbXNbMF0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh1cCkge1xuICAgICAgdGhpcy5fZGVoaWdobGlnaHRPcHRpb24ob3B0aW9uSXRlbXNbdGhpcy5vcHRpb25IaWdobGlnaHRlZEluZGV4XSk7XG4gICAgICB0aGlzLm9wdGlvbkhpZ2hsaWdodGVkSW5kZXggPVxuICAgICAgICB0aGlzLm9wdGlvbkhpZ2hsaWdodGVkSW5kZXggPCAxXG4gICAgICAgICAgPyBsZW4gLSAxXG4gICAgICAgICAgOiB0aGlzLm9wdGlvbkhpZ2hsaWdodGVkSW5kZXggLSAxO1xuICAgICAgdGhpcy5faGlnaGxpZ2h0T3B0aW9uKG9wdGlvbkl0ZW1zW3RoaXMub3B0aW9uSGlnaGxpZ2h0ZWRJbmRleF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9kZWhpZ2hsaWdodE9wdGlvbihvcHRpb25JdGVtc1t0aGlzLm9wdGlvbkhpZ2hsaWdodGVkSW5kZXhdKTtcbiAgICAgIHRoaXMub3B0aW9uSGlnaGxpZ2h0ZWRJbmRleCA9IFstMSwgbGVuIC0gMV0uaW5jbHVkZXMoXG4gICAgICAgIHRoaXMub3B0aW9uSGlnaGxpZ2h0ZWRJbmRleFxuICAgICAgKVxuICAgICAgICA/IDBcbiAgICAgICAgOiB0aGlzLm9wdGlvbkhpZ2hsaWdodGVkSW5kZXggKyAxO1xuICAgICAgdGhpcy5faGlnaGxpZ2h0T3B0aW9uKG9wdGlvbkl0ZW1zW3RoaXMub3B0aW9uSGlnaGxpZ2h0ZWRJbmRleF0pO1xuICAgIH1cbiAgfVxuXG4gIG9uQmVmb3JlT3B0aW9uc0hpZGRlbigpIHtcbiAgICB0aGlzLl90b2dnbGVPcHRpb25zKGZhbHNlKTtcbiAgICB0aGlzLl9kZWhpZ2hsaWdodE9wdGlvbigpO1xuICB9XG5cbiAgb25Cb3hDbGljaygpIHtcbiAgICB0aGlzLl90b2dnbGVPcHRpb25zKCk7XG4gICAgdGhpcy5fZGVoaWdobGlnaHRPcHRpb24oKTtcbiAgfVxuXG4gIG9uS2V5RG93bihldmVudDogYW55KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBjb25zdCBjb2RlID0gZXZlbnQua2V5Q29kZTtcbiAgICAvLyBlc2NhcGVcbiAgICBpZiAoY29kZSA9PT0gMjcpIHtcbiAgICAgIHRoaXMuX3RvZ2dsZU9wdGlvbnMoZmFsc2UpO1xuICAgICAgdGhpcy5fZGVoaWdobGlnaHRPcHRpb24oKTtcbiAgICB9XG4gICAgLy8gZW50ZXJcbiAgICBlbHNlIGlmIChjb2RlID09PSAxMykge1xuICAgICAgbGV0IGlkeCA9IHRoaXMub3B0aW9uSGlnaGxpZ2h0ZWRJbmRleDtcbiAgICAgIGlmIChpZHggPCAwKSByZXR1cm47XG4gICAgICBpZiAodGhpcy5tdWx0aXBsZSAmJiB0aGlzLnNlbGVjdEFsbCAmJiAhdGhpcy52aXJ0dWFsU2Nyb2xsKSB7XG4gICAgICAgIGlmIChpZHggPT09IDApIHtcbiAgICAgICAgICB0aGlzLnRvZ2dsZUFsbCgpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSBlbHNlIGlkeC0tO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9jbGlja09wdGlvbih0aGlzLm9wdGlvbnNbaWR4XSk7XG4gICAgfVxuICAgIC8vIHZlcnRpY2FsIGFycm93c1xuICAgIGVsc2UgaWYgKFszOCwgNDBdLmluY2x1ZGVzKGNvZGUpKSB7XG4gICAgICAvLyBBcnJvd3MgbmF2aWdhdGlvbiBkb2Vzbid0IHdvcmsgd2l0aCB2aXJ0dWFsIHNjcm9sbFxuICAgICAgaWYgKCF0aGlzLnZpcnR1YWxTY3JvbGwpIHRoaXMuX25hdmlnYXRlT3B0aW9uc0J5QXJyb3dzKGNvZGUgPT09IDM4KTtcbiAgICB9XG4gIH1cblxuICB0b2dnbGVBbGwoKSB7XG4gICAgbGV0IHJlcyA9IFtdO1xuICAgIGlmICh0aGlzLnZhbHVlLmxlbmd0aCA8IHRoaXMub3B0aW9ucy5sZW5ndGgpIHtcbiAgICAgIGlmICh0aGlzLnJldHVybk9iamVjdCkge1xuICAgICAgICByZXMgPSB0aGlzLm9wdGlvbnM7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm9wdGlvbnMuZm9yRWFjaCgobykgPT4ge1xuICAgICAgICAgIHJlcy5wdXNoKG9bdGhpcy5vcHRpb25WYWx1ZV0pO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy51cGRhdGVWYWx1ZShyZXMpO1xuICB9XG5cbiAgcHJpdmF0ZSBfY2hlY2tFcnJvcnMoKTogdm9pZCB7XG4gICAgY29uc3QgZXJyb3JzID0gdGhpcy5fY29udHJvbD8uZXJyb3JzO1xuXG4gICAgaWYgKCF0aGlzLl9jb250cm9sPy5jb250cm9sPy50b3VjaGVkIHx8ICFlcnJvcnMpIHtcbiAgICAgIHRoaXMuZXJyb3IgPSAnJztcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoJ3JlcXVpcmVkJyBpbiBlcnJvcnMpIHtcbiAgICAgIHRoaXMuZXJyb3IgPSAnRmllbGQgaXMgcmVxdWlyZWQnO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGVyckFyciA9IE9iamVjdC52YWx1ZXMoZXJyb3JzKTtcbiAgICBpZiAoZXJyQXJyLmxlbmd0aCA8IDEpIHtcbiAgICAgIHRoaXMuZXJyb3IgPSAnJztcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgbWVzc2FnZSA9IGVyckFyci5maW5kKChtc2cpID0+IHR5cGVvZiBtc2cgPT09ICdzdHJpbmcnKTtcblxuICAgIHRoaXMuZXJyb3IgPSBtZXNzYWdlIHx8ICdVbmtub3duIGVycm9yJztcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgb25DaGFuZ2UgPSAoZXZlbnQ6IGFueSkgPT4ge307XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgb25Ub3VjaGVkID0gKCkgPT4ge307XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KSB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSkge1xuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLndyaXRlVmFsdWUodmFsdWUpO1xuICAgIHRoaXMub25DaGFuZ2UodmFsdWUpO1xuICAgIHRoaXMudmFsdWVDaGFuZ2VkLmVtaXQodmFsdWUpO1xuICB9XG5cbiAgY2xlYXIoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgaWYgKFxuICAgICAgKCF0aGlzLm11bHRpcGxlICYmICF0aGlzLmlzRW1wdHlWYWx1ZSgpKSB8fFxuICAgICAgKHRoaXMubXVsdGlwbGUgJiYgdGhpcy52YWx1ZT8ubGVuZ3RoID4gMClcbiAgICApIHtcbiAgICAgIGlmICh0aGlzLm9wZW5PbkNsZWFyKSB7XG4gICAgICAgIHRoaXMuX3RvZ2dsZU9wdGlvbnModHJ1ZSk7XG4gICAgICB9XG4gICAgICBjb25zdCB2YWwgPSB0aGlzLm11bHRpcGxlID8gW10gOiB1bmRlZmluZWQ7XG4gICAgICB0aGlzLnVwZGF0ZVZhbHVlKHZhbCk7XG4gICAgfVxuICAgIHRoaXMuX2RlaGlnaGxpZ2h0T3B0aW9uKCk7XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gIHNldERpc2FibGVkU3RhdGUoZGlzYWJsZWQ6IGJvb2xlYW4pIHt9XG5cbiAgb25CbHVyKCkge1xuICAgIHRoaXMuX2NvbnRyb2w/LmNvbnRyb2w/Lm1hcmtBc1RvdWNoZWQoKTtcbiAgICB0aGlzLl9jaGVja0Vycm9ycygpO1xuICB9XG5cbiAgZm9jdXMoKSB7XG4gICAgdGhpcy5zZWxlY3RDb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQ/LmZvY3VzKCk7XG4gICAgdGhpcy5fdG9nZ2xlT3B0aW9ucyh0cnVlKTtcbiAgfVxuXG4gIGlzRW1wdHlWYWx1ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy52YWx1ZSA9PT0gbnVsbCB8fFxuICAgICAgdGhpcy52YWx1ZSA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICAodHlwZW9mIHRoaXMudmFsdWUgPT09ICdzdHJpbmcnICYmIHRoaXMudmFsdWUudHJpbSgpID09PSAnJykgfHxcbiAgICAgIE51bWJlci5pc05hTih0aGlzLnZhbHVlKVxuICAgICk7XG4gIH1cbn1cbiIsIjxkaXZcbiAgW25nU3R5bGVdPVwieyB3aWR0aDogY3Z0V2lkdGggfVwiXG4gIGNsYXNzPVwiY3BzLXNlbGVjdFwiXG4gIHRhYmluZGV4PVwiMFwiXG4gIFtuZ0NsYXNzXT1cInsgZGlzYWJsZWQ6IGRpc2FibGVkLCBlcnJvcjogZXJyb3IsIGFjdGl2ZTogaXNPcGVuZWQgfVwiXG4gICNzZWxlY3RDb250YWluZXJcbiAgKGtleWRvd24pPVwib25LZXlEb3duKCRldmVudClcIlxuICAoYmx1cik9XCJvbkJsdXIoKVwiPlxuICA8ZGl2IGNsYXNzPVwiY3BzLXNlbGVjdC1sYWJlbFwiICpuZ0lmPVwibGFiZWxcIj5cbiAgICA8bGFiZWw+e3sgbGFiZWwgfX08L2xhYmVsPlxuICAgIDxjcHMtaW5mby1jaXJjbGVcbiAgICAgICpuZ0lmPVwiaW5mb1Rvb2x0aXBcIlxuICAgICAgY2xhc3M9XCJjcHMtc2VsZWN0LWxhYmVsLWluZm8tY2lyY2xlXCJcbiAgICAgIHNpemU9XCJ4c21hbGxcIlxuICAgICAgW3Rvb2x0aXBQb3NpdGlvbl09XCJpbmZvVG9vbHRpcFBvc2l0aW9uXCJcbiAgICAgIFt0b29sdGlwQ29udGVudENsYXNzXT1cImluZm9Ub29sdGlwQ2xhc3NcIlxuICAgICAgW3Rvb2x0aXBNYXhXaWR0aF09XCJpbmZvVG9vbHRpcE1heFdpZHRoXCJcbiAgICAgIFt0b29sdGlwUGVyc2lzdGVudF09XCJpbmZvVG9vbHRpcFBlcnNpc3RlbnRcIlxuICAgICAgW3Rvb2x0aXBUZXh0XT1cImluZm9Ub29sdGlwXCI+XG4gICAgPC9jcHMtaW5mby1jaXJjbGU+XG4gIDwvZGl2PlxuICA8ZGl2XG4gICAgY2xhc3M9XCJjcHMtc2VsZWN0LWNvbnRhaW5lclwiXG4gICAgW2NsYXNzLmZvY3VzZWRdPVwiaXNPcGVuZWRcIlxuICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICdwZXJzaXN0ZW50LWNsZWFyJzogcGVyc2lzdGVudENsZWFyLFxuICAgICAgYm9yZGVybGVzczogYXBwZWFyYW5jZSA9PT0gJ2JvcmRlcmxlc3MnLFxuICAgICAgdW5kZXJsaW5lZDogYXBwZWFyYW5jZSA9PT0gJ3VuZGVybGluZWQnXG4gICAgfVwiPlxuICAgIDxkaXYgY2xhc3M9XCJjcHMtc2VsZWN0LWJveFwiICNzZWxlY3RCb3ggKGNsaWNrKT1cIm9uQm94Q2xpY2soKVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNwcy1zZWxlY3QtYm94LWxlZnRcIj5cbiAgICAgICAgPGNwcy1pY29uXG4gICAgICAgICAgKm5nSWY9XCJwcmVmaXhJY29uXCJcbiAgICAgICAgICBbaWNvbl09XCJwcmVmaXhJY29uXCJcbiAgICAgICAgICBbc3R5bGUuY29sb3JdPVwiZGlzYWJsZWQgPyAnIzlhOTU5NScgOiBudWxsXCJcbiAgICAgICAgICBbc2l6ZV09XCJwcmVmaXhJY29uU2l6ZVwiXG4gICAgICAgICAgY2xhc3M9XCJwcmVmaXgtaWNvblwiPlxuICAgICAgICA8L2Nwcy1pY29uPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJjcHMtc2VsZWN0LWJveC1wbGFjZWhvbGRlclwiXG4gICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICghbXVsdGlwbGUgJiYgaXNFbXB0eVZhbHVlKCkpIHx8ICh2YWx1ZT8ubGVuZ3RoIDwgMSAmJiBtdWx0aXBsZSlcbiAgICAgICAgICBcIj5cbiAgICAgICAgICB7eyBwbGFjZWhvbGRlciB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiY3BzLXNlbGVjdC1ib3gtaXRlbXNcIlxuICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAoIW11bHRpcGxlICYmICFpc0VtcHR5VmFsdWUoKSkgfHwgKHZhbHVlPy5sZW5ndGggPiAwICYmIG11bHRpcGxlKVxuICAgICAgICAgIFwiPlxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIW11bHRpcGxlXCIgY2xhc3M9XCJzaW5nbGUtaXRlbVwiPlxuICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgcmV0dXJuT2JqZWN0XG4gICAgICAgICAgICAgICAgPyB2YWx1ZVtvcHRpb25MYWJlbF1cbiAgICAgICAgICAgICAgICA6ICh2YWx1ZSB8IGxhYmVsQnlWYWx1ZSA6IG9wdGlvbnMgOiBvcHRpb25WYWx1ZSA6IG9wdGlvbkxhYmVsKVxuICAgICAgICAgICAgfX08L3NwYW5cbiAgICAgICAgICA+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cIm11bHRpcGxlICYmICFjaGlwc1wiIGNsYXNzPVwidGV4dC1ncm91cFwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWdyb3VwLWl0ZW1cIj5cbiAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICB2YWx1ZVxuICAgICAgICAgICAgICAgICAgfCBjb21iaW5lTGFiZWxzXG4gICAgICAgICAgICAgICAgICAgIDogb3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICA6IG9wdGlvblZhbHVlXG4gICAgICAgICAgICAgICAgICAgIDogb3B0aW9uTGFiZWxcbiAgICAgICAgICAgICAgICAgICAgOiByZXR1cm5PYmplY3RcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJtdWx0aXBsZSAmJiBjaGlwc1wiIGNsYXNzPVwiY2hpcHMtZ3JvdXBcIj5cbiAgICAgICAgICAgIDxjcHMtY2hpcFxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgdmFsIG9mIHZhbHVlXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgICAgW2Nsb3NhYmxlXT1cImNsb3NhYmxlQ2hpcHNcIlxuICAgICAgICAgICAgICAoY2xvc2VkKT1cInNlbGVjdCh2YWwsIHRydWUpXCJcbiAgICAgICAgICAgICAgW2xhYmVsXT1cIlxuICAgICAgICAgICAgICAgIHJldHVybk9iamVjdFxuICAgICAgICAgICAgICAgICAgPyB2YWxbb3B0aW9uTGFiZWxdXG4gICAgICAgICAgICAgICAgICA6ICh2YWwgfCBsYWJlbEJ5VmFsdWUgOiBvcHRpb25zIDogb3B0aW9uVmFsdWUgOiBvcHRpb25MYWJlbClcbiAgICAgICAgICAgICAgXCI+XG4gICAgICAgICAgICA8L2Nwcy1jaGlwPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPHNwYW4gY2xhc3M9XCJjcHMtc2VsZWN0LWJveC1pY29uc1wiPlxuICAgICAgICA8c3BhblxuICAgICAgICAgICpuZ0lmPVwiY2xlYXJhYmxlICYmICFkaXNhYmxlZFwiXG4gICAgICAgICAgW3N0eWxlLnZpc2liaWxpdHldPVwiXG4gICAgICAgICAgICBwZXJzaXN0ZW50Q2xlYXIgfHxcbiAgICAgICAgICAgICghcGVyc2lzdGVudENsZWFyICYmXG4gICAgICAgICAgICAgICgobXVsdGlwbGUgJiYgdmFsdWU/Lmxlbmd0aCkgfHwgKCFtdWx0aXBsZSAmJiAhaXNFbXB0eVZhbHVlKCkpKSlcbiAgICAgICAgICAgICAgPyAndmlzaWJsZSdcbiAgICAgICAgICAgICAgOiAnaGlkZGVuJ1xuICAgICAgICAgIFwiXG4gICAgICAgICAgY2xhc3M9XCJjcHMtc2VsZWN0LWJveC1jbGVhci1pY29uXCI+XG4gICAgICAgICAgPGNwcy1pY29uXG4gICAgICAgICAgICBpY29uPVwiZGVsZXRlXCJcbiAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgICAoY2xpY2spPVwiY2xlYXIoJGV2ZW50KVwiPjwvY3BzLWljb24+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJjcHMtc2VsZWN0LWJveC1jaGV2cm9uXCI+XG4gICAgICAgICAgPGNwcy1pY29uXG4gICAgICAgICAgICBpY29uPVwiY2hldnJvbi1kb3duXCJcbiAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgICBbY29sb3JdPVwiZGlzYWJsZWQgPyAndGV4dC1saWdodCcgOiAndGV4dC1kYXJrJ1wiPjwvY3BzLWljb24+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cblxuICAgIDxjcHMtbWVudVxuICAgICAgI29wdGlvbnNNZW51XG4gICAgICBbd2l0aEFycm93XT1cImZhbHNlXCJcbiAgICAgIChiZWZvcmVNZW51SGlkZGVuKT1cIm9uQmVmb3JlT3B0aW9uc0hpZGRlbigpXCJcbiAgICAgIGhpZGVUcmFuc2l0aW9uT3B0aW9ucz1cIjBzIGxpbmVhclwiXG4gICAgICBbY29udGFpbmVyQ2xhc3NdPVwiJ2Nwcy1zZWxlY3Qtb3B0aW9ucy1tZW51ICcgKyBvcHRpb25zQ2xhc3NcIj5cbiAgICAgIDxkaXZcbiAgICAgICAgI29wdGlvbnNMaXN0XG4gICAgICAgIGNsYXNzPVwiY3BzLXNlbGVjdC1vcHRpb25zXCJcbiAgICAgICAgW25nU3R5bGVdPVwie1xuICAgICAgICAgIHdpZHRoOiBzZWxlY3RCb3hXaWR0aCArICdweCdcbiAgICAgICAgfVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXZpcnR1YWxTY3JvbGxcIj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImNwcy1zZWxlY3Qtb3B0aW9ucy1vcHRpb24gc2VsZWN0LWFsbC1vcHRpb25cIlxuICAgICAgICAgICAgW2NsYXNzLmFsbHNlbGVjdGVkXT1cInZhbHVlPy5sZW5ndGggPT09IG9wdGlvbnMubGVuZ3RoXCJcbiAgICAgICAgICAgICpuZ0lmPVwibXVsdGlwbGUgJiYgc2VsZWN0QWxsICYmIG9wdGlvbnMubGVuZ3RoID4gMVwiXG4gICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlQWxsKClcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3BzLXNlbGVjdC1vcHRpb25zLW9wdGlvbi1sZWZ0XCI+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwibXVsdGlwbGVcIiBjbGFzcz1cImNwcy1zZWxlY3Qtb3B0aW9ucy1vcHRpb24tY2hlY2tcIj5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNwcy1zZWxlY3Qtb3B0aW9ucy1vcHRpb24tbGFiZWxcIj5TZWxlY3QgYWxsPC9zcGFuPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2Ygb3B0aW9uc1wiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgIGl0ZW1UZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAgICAgICBpdGVtOiBpdGVtXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ2aXJ0dWFsU2Nyb2xsXCI+XG4gICAgICAgICAgPHAtdmlydHVhbFNjcm9sbGVyXG4gICAgICAgICAgICAjdmlydHVhbExpc3RcbiAgICAgICAgICAgIFt2YWx1ZV09XCJvcHRpb25zXCJcbiAgICAgICAgICAgIFtkZWxheV09XCIwXCJcbiAgICAgICAgICAgIFtzY3JvbGxIZWlnaHRdPVwidmlydHVhbExpc3RIZWlnaHQgKyAncHgnXCJcbiAgICAgICAgICAgIFtvcHRpb25zXT1cInsgbnVtVG9sZXJhdGVkSXRlbXM6IG51bVRvbGVyYXRlZEl0ZW1zIH1cIlxuICAgICAgICAgICAgW2l0ZW1TaXplXT1cInZpcnR1YWxTY3JvbGxJdGVtU2l6ZVwiPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cIml0ZW1cIiBsZXQtaXRlbT5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICBpdGVtVGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW06IGl0ZW1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9wLXZpcnR1YWxTY3JvbGxlcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Nwcy1tZW51PlxuXG4gICAgPGNwcy1wcm9ncmVzcy1saW5lYXJcbiAgICAgICpuZ0lmPVwibG9hZGluZ1wiXG4gICAgICBoZWlnaHQ9XCIzXCJcbiAgICAgIHJhZGl1cz1cIjRcIlxuICAgICAgb3BhY2l0eT1cIjAuM1wiXG4gICAgICBjbGFzcz1cInNlbGVjdC1wcm9ncmVzcy1iYXJcIlxuICAgICAgYmdDb2xvcj1cInRyYW5zcGFyZW50XCI+XG4gICAgPC9jcHMtcHJvZ3Jlc3MtbGluZWFyPlxuICA8L2Rpdj5cbiAgPGRpdiAqbmdJZj1cIiFlcnJvciAmJiAhaGlkZURldGFpbHNcIiBjbGFzcz1cImNwcy1zZWxlY3QtaGludFwiPnt7IGhpbnQgfX08L2Rpdj5cbiAgPGRpdiAqbmdJZj1cImVycm9yICYmICFoaWRlRGV0YWlsc1wiIGNsYXNzPVwiY3BzLXNlbGVjdC1lcnJvclwiPnt7IGVycm9yIH19PC9kaXY+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNpdGVtVGVtcGxhdGUgbGV0LWl0ZW09XCJpdGVtXCI+XG4gIDxkaXZcbiAgICBjbGFzcz1cImNwcy1zZWxlY3Qtb3B0aW9ucy1vcHRpb25cIlxuICAgIChjbGljayk9XCJvbk9wdGlvbkNsaWNrKGl0ZW0pXCJcbiAgICBbY2xhc3Muc2VsZWN0ZWRdPVwiXG4gICAgICBpdGVtIHwgY2hlY2tPcHRpb25TZWxlY3RlZCA6IHZhbHVlIDogbXVsdGlwbGUgOiByZXR1cm5PYmplY3QgOiBvcHRpb25WYWx1ZVxuICAgIFwiPlxuICAgIDxzcGFuIGNsYXNzPVwiY3BzLXNlbGVjdC1vcHRpb25zLW9wdGlvbi1sZWZ0XCI+XG4gICAgICA8c3BhbiAqbmdJZj1cIm11bHRpcGxlXCIgY2xhc3M9XCJjcHMtc2VsZWN0LW9wdGlvbnMtb3B0aW9uLWNoZWNrXCI+IDwvc3Bhbj5cbiAgICAgIDxzcGFuXG4gICAgICAgIGNsYXNzPVwiY3BzLXNlbGVjdC1vcHRpb25zLW9wdGlvbi1sYWJlbFwiXG4gICAgICAgIFtjbGFzcy52aXJ0dWFsLXJvd109XCJ2aXJ0dWFsU2Nyb2xsXCJcbiAgICAgICAgPnt7IGl0ZW1bb3B0aW9uTGFiZWxdIH19PC9zcGFuXG4gICAgICA+XG4gICAgPC9zcGFuPlxuXG4gICAgPHNwYW5cbiAgICAgIGNsYXNzPVwiY3BzLXNlbGVjdC1vcHRpb25zLW9wdGlvbi1yaWdodFwiXG4gICAgICBbY2xhc3MudmlydHVhbC1yb3ddPVwidmlydHVhbFNjcm9sbFwiXG4gICAgICA+e3sgaXRlbVtvcHRpb25JbmZvXSB9fTwvc3BhblxuICAgID5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
@@ -27,7 +27,7 @@ export class CpsSidebarMenuComponent {
|
|
|
27
27
|
*/
|
|
28
28
|
this.isExpanded = true;
|
|
29
29
|
/**
|
|
30
|
-
*
|
|
30
|
+
* Determines whether the menu items should allow activating only exact links.
|
|
31
31
|
* @group Props
|
|
32
32
|
*/
|
|
33
33
|
this.exactRoutes = false;
|
|
@@ -107,4 +107,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
|
107
107
|
type: ViewChildren,
|
|
108
108
|
args: ['popupMenu']
|
|
109
109
|
}] } });
|
|
110
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3BzLXNpZGViYXItbWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jcHMtdWkta2l0L3NyYy9saWIvY29tcG9uZW50cy9jcHMtc2lkZWJhci1tZW51L2Nwcy1zaWRlYmFyLW1lbnUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3BzLXVpLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvY3BzLXNpZGViYXItbWVudS9jcHMtc2lkZWJhci1tZW51LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUdMLFlBQVksRUFDYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFVLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxnQkFBZ0IsRUFBZSxNQUFNLGdDQUFnQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM5RCxPQUFPLEVBQ0wsT0FBTyxFQUNQLEtBQUssRUFDTCxLQUFLLEVBQ0wsVUFBVSxFQUNWLE9BQU8sRUFDUixNQUFNLHFCQUFxQixDQUFDOzs7O0FBVzdCOzs7R0FHRztBQStCSCxNQUFNLE9BQU8sdUJBQXVCO0lBMkJsQyxrREFBa0Q7SUFDbEQsWUFBb0IsT0FBZTtRQUFmLFlBQU8sR0FBUCxPQUFPLENBQVE7UUEzQm5DOzs7V0FHRztRQUNNLFVBQUssR0FBeUIsRUFBRSxDQUFDO1FBRTFDOzs7V0FHRztRQUNNLGVBQVUsR0FBRyxJQUFJLENBQUM7UUFFM0I7OztXQUdHO1FBQ00sZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFFN0I7OztX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cUJBQ0g7NkZBT1EsS0FBSztzQkFBYixLQUFLO2dCQU1HLFVBQVU7c0JBQWxCLEtBQUs7Z0JBTUcsV0FBVztzQkFBbkIsS0FBSztnQkFNRyxNQUFNO3NCQUFkLEtBQUs7Z0JBRXFCLFFBQVE7c0JBQWxDLFlBQVk7dUJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgUXVlcnlMaXN0LFxuICBWaWV3Q2hpbGRyZW5cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgUm91dGVyLCBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQ3BzTWVudUNvbXBvbmVudCwgQ3BzTWVudUl0ZW0gfSBmcm9tICcuLi9jcHMtbWVudS9jcHMtbWVudS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ3BzSWNvbkNvbXBvbmVudCB9IGZyb20gJy4uL2Nwcy1pY29uL2Nwcy1pY29uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBjb252ZXJ0U2l6ZSB9IGZyb20gJy4uLy4uL3V0aWxzL2ludGVybmFsL3NpemUtdXRpbHMnO1xuaW1wb3J0IHtcbiAgYW5pbWF0ZSxcbiAgc3RhdGUsXG4gIHN0eWxlLFxuICB0cmFuc2l0aW9uLFxuICB0cmlnZ2VyXG59IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuXG5leHBvcnQgdHlwZSBDcHNTaWRlYmFyTWVudUl0ZW0gPSB7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGljb246IHN0cmluZztcbiAgdXJsPzogc3RyaW5nO1xuICB0YXJnZXQ/OiBzdHJpbmc7XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgaXRlbXM/OiBDcHNNZW51SXRlbVtdO1xufTtcblxuLyoqXG4gKiBDcHNTaWRlYmFyTWVudUNvbXBvbmVudCBpcyBhIHZlcnRpY2FsIG1lbnUgcGFuZWwgY29tcG9uZW50IGRpc3BsYXllZCBhdCB0aGUgZWRnZSBvZiB0aGUgc2NyZWVuLlxuICogQGdyb3VwIENvbXBvbmVudHNcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY3BzLXNpZGViYXItbWVudScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIENwc01lbnVDb21wb25lbnQsIENwc0ljb25Db21wb25lbnQsIFJvdXRlck1vZHVsZV0sXG4gIHRlbXBsYXRlVXJsOiAnLi9jcHMtc2lkZWJhci1tZW51LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY3BzLXNpZGViYXItbWVudS5jb21wb25lbnQuc2NzcyddLFxuICBhbmltYXRpb25zOiBbXG4gICAgdHJpZ2dlcignb25FeHBhbmQnLCBbXG4gICAgICBzdGF0ZShcbiAgICAgICAgJ2NvbGxhcHNlZCcsXG4gICAgICAgIHN0eWxlKHtcbiAgICAgICAgICBtYXJnaW5Ub3A6ICcwJyxcbiAgICAgICAgICBvcGFjaXR5OiAnMCcsXG4gICAgICAgICAgaGVpZ2h0OiAnMCcsXG4gICAgICAgICAgdmlzaWJpbGl0eTogJ2hpZGRlbidcbiAgICAgICAgfSlcbiAgICAgICksXG4gICAgICBzdGF0ZShcbiAgICAgICAgJ2V4cGFuZGVkJyxcbiAgICAgICAgc3R5bGUoe1xuICAgICAgICAgIG1hcmdpblRvcDogJzZweCcsXG4gICAgICAgICAgb3BhY2l0eTogJzEnXG4gICAgICAgIH0pXG4gICAgICApLFxuICAgICAgdHJhbnNpdGlvbignZXhwYW5kZWQgPD0+IGNvbGxhcHNlZCcsIFtcbiAgICAgICAgYW5pbWF0ZSgnMC4ycyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpJylcbiAgICAgIF0pXG4gICAgXSlcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBDcHNTaWRlYmFyTWVudUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIC8qKlxuICAgKiBBbiBhcnJheSBvZiBtZW51IGl0ZW1zLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIGl0ZW1zOiBDcHNTaWRlYmFyTWVudUl0ZW1bXSA9IFtdO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgY3VycmVudCBleHBhbnNpb24gc3RhdGUgb2YgdGhlIHNpZGViYXIuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgaXNFeHBhbmRlZCA9IHRydWU7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIG1lbnUgaXRlbXMgc2hvdWxkIGFsbG93IGFjdGl2YXRpbmcgb25seSBleGFjdCBsaW5rcy5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBleGFjdFJvdXRlcyA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBIZWlnaHQgb2YgdGhlIHNpZGViYXIsIG9mIHR5cGUgbnVtYmVyIGRlbm90aW5nIHBpeGVscyBvciBzdHJpbmcuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgaGVpZ2h0OiBudW1iZXIgfCBzdHJpbmcgPSAnMTAwJSc7XG5cbiAgQFZpZXdDaGlsZHJlbigncG9wdXBNZW51JykgYWxsTWVudXM/OiBRdWVyeUxpc3Q8Q3BzTWVudUNvbXBvbmVudD47XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVzZWxlc3MtY29uc3RydWN0b3JcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfcm91dGVyOiBSb3V0ZXIpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5oZWlnaHQgPSBjb252ZXJ0U2l6ZSh0aGlzLmhlaWdodCk7XG4gIH1cblxuICB0b2dnbGVNZW51KGV2ZW50OiBhbnksIG1lbnU6IENwc01lbnVDb21wb25lbnQpIHtcbiAgICBjb25zdCBpc1Zpc2libGUgPSBtZW51LmlzVmlzaWJsZSgpO1xuICAgIHRoaXMuYWxsTWVudXM/LmZvckVhY2goKG0pID0+IG0uaGlkZSgpKTtcbiAgICBpZiAoIWlzVmlzaWJsZSkgbWVudS50b2dnbGUoZXZlbnQsIGV2ZW50LmN1cnJlbnRUYXJnZXQsICd0cicpO1xuICB9XG5cbiAgaXNBY3RpdmUoaXRlbTogQ3BzU2lkZWJhck1lbnVJdGVtKSB7XG4gICAgaWYgKCFpdGVtLml0ZW1zKSByZXR1cm4gZmFsc2U7XG4gICAgY29uc3QgdXJscyA9IGl0ZW0uaXRlbXMuZmlsdGVyKChpKSA9PiBpLnVybCkubWFwKChpKSA9PiBpLnVybCkgYXMgc3RyaW5nW107XG5cbiAgICBpZiAodGhpcy5leGFjdFJvdXRlcykgcmV0dXJuIHVybHMuaW5jbHVkZXModGhpcy5fcm91dGVyLnVybCk7XG4gICAgcmV0dXJuIHVybHMuc29tZSgodXJsKSA9PiB0aGlzLl9yb3V0ZXIudXJsLmluY2x1ZGVzKHVybCkpO1xuICB9XG5cbiAgdG9nZ2xlU2lkZWJhcigpIHtcbiAgICB0aGlzLmlzRXhwYW5kZWQgPSAhdGhpcy5pc0V4cGFuZGVkO1xuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwiY3BzLXNpZGViYXItbWVudVwiXG4gIFtzdHlsZS5oZWlnaHRdPVwiaGVpZ2h0XCJcbiAgW25nQ2xhc3NdPVwieyAnY3BzLXNpZGViYXItbWVudS1jb2xsYXBzZWQnOiAhaXNFeHBhbmRlZCB9XCI+XG4gIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgaXRlbXNcIj5cbiAgICA8YVxuICAgICAgKm5nSWY9XCJpdGVtLnVybFwiXG4gICAgICBjbGFzcz1cImNwcy1zaWRlYmFyLW1lbnUtaXRlbVwiXG4gICAgICBbcm91dGVyTGlua109XCJbaXRlbS51cmxdXCJcbiAgICAgIHJvdXRlckxpbmtBY3RpdmU9XCJhY3RpdmVcIlxuICAgICAgW3JvdXRlckxpbmtBY3RpdmVPcHRpb25zXT1cInsgZXhhY3Q6IGV4YWN0Um91dGVzIH1cIlxuICAgICAgW25nQ2xhc3NdPVwieyBkaXNhYmxlZDogaXRlbS5kaXNhYmxlZCB9XCI+XG4gICAgICA8Y3BzLWljb24gW2ljb25dPVwiaXRlbS5pY29uXCIgc2l6ZT1cIm5vcm1hbFwiPiA8L2Nwcy1pY29uPlxuICAgICAgPHNwYW5cbiAgICAgICAgY2xhc3M9XCJjcHMtc2lkZWJhci1tZW51LWl0ZW0tbGFiZWxcIlxuICAgICAgICBbQG9uRXhwYW5kXT1cImlzRXhwYW5kZWQgPyAnZXhwYW5kZWQnIDogJ2NvbGxhcHNlZCdcIj5cbiAgICAgICAge3sgaXRlbS50aXRsZSB9fVxuICAgICAgPC9zcGFuPlxuICAgIDwvYT5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWl0ZW0udXJsXCI+XG4gICAgICA8Y3BzLW1lbnVcbiAgICAgICAgI3BvcHVwTWVudVxuICAgICAgICBbaXRlbXNdPVwiaXRlbS5pdGVtcyB8fCBbXVwiXG4gICAgICAgIFtoZWFkZXJdPVwiaXRlbS50aXRsZVwiXG4gICAgICAgIHNob3dUcmFuc2l0aW9uT3B0aW9ucz1cIjBzXCJcbiAgICAgICAgaGlkZVRyYW5zaXRpb25PcHRpb25zPVwiMHNcIlxuICAgICAgICBbd2l0aEFycm93XT1cImZhbHNlXCI+XG4gICAgICA8L2Nwcy1tZW51PlxuICAgICAgPGRpdlxuICAgICAgICAoY2xpY2spPVwidG9nZ2xlTWVudSgkZXZlbnQsIHBvcHVwTWVudSlcIlxuICAgICAgICBjbGFzcz1cImNwcy1zaWRlYmFyLW1lbnUtaXRlbSBtZW51LXRyaWdnZXJcIlxuICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgYWN0aXZlOiBpc0FjdGl2ZShpdGVtKSxcbiAgICAgICAgICAnbWVudS1vcGVuJzogcG9wdXBNZW51LmlzVmlzaWJsZSgpLFxuICAgICAgICAgIGRpc2FibGVkOiBpdGVtLmRpc2FibGVkXG4gICAgICAgIH1cIj5cbiAgICAgICAgPGNwcy1pY29uIFtpY29uXT1cIml0ZW0uaWNvblwiIHNpemU9XCJub3JtYWxcIj4gPC9jcHMtaWNvbj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBjbGFzcz1cImNwcy1zaWRlYmFyLW1lbnUtaXRlbS1sYWJlbFwiXG4gICAgICAgICAgW0BvbkV4cGFuZF09XCJpc0V4cGFuZGVkID8gJ2V4cGFuZGVkJyA6ICdjb2xsYXBzZWQnXCI+XG4gICAgICAgICAge3sgaXRlbS50aXRsZSB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxkaXYgY2xhc3M9XCJleHBhbmQtYXJlYVwiIChjbGljayk9XCJ0b2dnbGVTaWRlYmFyKClcIj5cbiAgICA8Y3BzLWljb24gaWNvbj1cIm1lbnUtc2hyaW5rXCIgc2l6ZT1cImZpbGxcIj4gPC9jcHMtaWNvbj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
110
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3BzLXNpZGViYXItbWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jcHMtdWkta2l0L3NyYy9saWIvY29tcG9uZW50cy9jcHMtc2lkZWJhci1tZW51L2Nwcy1zaWRlYmFyLW1lbnUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3BzLXVpLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvY3BzLXNpZGViYXItbWVudS9jcHMtc2lkZWJhci1tZW51LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUdMLFlBQVksRUFDYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFVLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxnQkFBZ0IsRUFBZSxNQUFNLGdDQUFnQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM5RCxPQUFPLEVBQ0wsT0FBTyxFQUNQLEtBQUssRUFDTCxLQUFLLEVBQ0wsVUFBVSxFQUNWLE9BQU8sRUFDUixNQUFNLHFCQUFxQixDQUFDOzs7O0FBVzdCOzs7R0FHRztBQStCSCxNQUFNLE9BQU8sdUJBQXVCO0lBMkJsQyxrREFBa0Q7SUFDbEQsWUFBb0IsT0FBZTtRQUFmLFlBQU8sR0FBUCxPQUFPLENBQVE7UUEzQm5DOzs7V0FHRztRQUNNLFVBQUssR0FBeUIsRUFBRSxDQUFDO1FBRTFDOzs7V0FHRztRQUNNLGVBQVUsR0FBRyxJQUFJLENBQUM7UUFFM0I7OztXQUdHO1FBQ00sZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFFN0I7OztX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cUJBQ0g7NkZBT1EsS0FBSztzQkFBYixLQUFLO2dCQU1HLFVBQVU7c0JBQWxCLEtBQUs7Z0JBTUcsV0FBVztzQkFBbkIsS0FBSztnQkFNRyxNQUFNO3NCQUFkLEtBQUs7Z0JBRXFCLFFBQVE7c0JBQWxDLFlBQVk7dUJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgUXVlcnlMaXN0LFxuICBWaWV3Q2hpbGRyZW5cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgUm91dGVyLCBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQ3BzTWVudUNvbXBvbmVudCwgQ3BzTWVudUl0ZW0gfSBmcm9tICcuLi9jcHMtbWVudS9jcHMtbWVudS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ3BzSWNvbkNvbXBvbmVudCB9IGZyb20gJy4uL2Nwcy1pY29uL2Nwcy1pY29uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBjb252ZXJ0U2l6ZSB9IGZyb20gJy4uLy4uL3V0aWxzL2ludGVybmFsL3NpemUtdXRpbHMnO1xuaW1wb3J0IHtcbiAgYW5pbWF0ZSxcbiAgc3RhdGUsXG4gIHN0eWxlLFxuICB0cmFuc2l0aW9uLFxuICB0cmlnZ2VyXG59IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuXG5leHBvcnQgdHlwZSBDcHNTaWRlYmFyTWVudUl0ZW0gPSB7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGljb246IHN0cmluZztcbiAgdXJsPzogc3RyaW5nO1xuICB0YXJnZXQ/OiBzdHJpbmc7XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgaXRlbXM/OiBDcHNNZW51SXRlbVtdO1xufTtcblxuLyoqXG4gKiBDcHNTaWRlYmFyTWVudUNvbXBvbmVudCBpcyBhIHZlcnRpY2FsIG1lbnUgcGFuZWwgY29tcG9uZW50IGRpc3BsYXllZCBhdCB0aGUgZWRnZSBvZiB0aGUgc2NyZWVuLlxuICogQGdyb3VwIENvbXBvbmVudHNcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY3BzLXNpZGViYXItbWVudScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIENwc01lbnVDb21wb25lbnQsIENwc0ljb25Db21wb25lbnQsIFJvdXRlck1vZHVsZV0sXG4gIHRlbXBsYXRlVXJsOiAnLi9jcHMtc2lkZWJhci1tZW51LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY3BzLXNpZGViYXItbWVudS5jb21wb25lbnQuc2NzcyddLFxuICBhbmltYXRpb25zOiBbXG4gICAgdHJpZ2dlcignb25FeHBhbmQnLCBbXG4gICAgICBzdGF0ZShcbiAgICAgICAgJ2NvbGxhcHNlZCcsXG4gICAgICAgIHN0eWxlKHtcbiAgICAgICAgICBtYXJnaW5Ub3A6ICcwJyxcbiAgICAgICAgICBvcGFjaXR5OiAnMCcsXG4gICAgICAgICAgaGVpZ2h0OiAnMCcsXG4gICAgICAgICAgdmlzaWJpbGl0eTogJ2hpZGRlbidcbiAgICAgICAgfSlcbiAgICAgICksXG4gICAgICBzdGF0ZShcbiAgICAgICAgJ2V4cGFuZGVkJyxcbiAgICAgICAgc3R5bGUoe1xuICAgICAgICAgIG1hcmdpblRvcDogJzZweCcsXG4gICAgICAgICAgb3BhY2l0eTogJzEnXG4gICAgICAgIH0pXG4gICAgICApLFxuICAgICAgdHJhbnNpdGlvbignZXhwYW5kZWQgPD0+IGNvbGxhcHNlZCcsIFtcbiAgICAgICAgYW5pbWF0ZSgnMC4ycyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpJylcbiAgICAgIF0pXG4gICAgXSlcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBDcHNTaWRlYmFyTWVudUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIC8qKlxuICAgKiBBbiBhcnJheSBvZiBtZW51IGl0ZW1zLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIGl0ZW1zOiBDcHNTaWRlYmFyTWVudUl0ZW1bXSA9IFtdO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgY3VycmVudCBleHBhbnNpb24gc3RhdGUgb2YgdGhlIHNpZGViYXIuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgaXNFeHBhbmRlZCA9IHRydWU7XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgd2hldGhlciB0aGUgbWVudSBpdGVtcyBzaG91bGQgYWxsb3cgYWN0aXZhdGluZyBvbmx5IGV4YWN0IGxpbmtzLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIGV4YWN0Um91dGVzID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEhlaWdodCBvZiB0aGUgc2lkZWJhciwgb2YgdHlwZSBudW1iZXIgZGVub3RpbmcgcGl4ZWxzIG9yIHN0cmluZy5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBoZWlnaHQ6IG51bWJlciB8IHN0cmluZyA9ICcxMDAlJztcblxuICBAVmlld0NoaWxkcmVuKCdwb3B1cE1lbnUnKSBhbGxNZW51cz86IFF1ZXJ5TGlzdDxDcHNNZW51Q29tcG9uZW50PjtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlbGVzcy1jb25zdHJ1Y3RvclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9yb3V0ZXI6IFJvdXRlcikge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmhlaWdodCA9IGNvbnZlcnRTaXplKHRoaXMuaGVpZ2h0KTtcbiAgfVxuXG4gIHRvZ2dsZU1lbnUoZXZlbnQ6IGFueSwgbWVudTogQ3BzTWVudUNvbXBvbmVudCkge1xuICAgIGNvbnN0IGlzVmlzaWJsZSA9IG1lbnUuaXNWaXNpYmxlKCk7XG4gICAgdGhpcy5hbGxNZW51cz8uZm9yRWFjaCgobSkgPT4gbS5oaWRlKCkpO1xuICAgIGlmICghaXNWaXNpYmxlKSBtZW51LnRvZ2dsZShldmVudCwgZXZlbnQuY3VycmVudFRhcmdldCwgJ3RyJyk7XG4gIH1cblxuICBpc0FjdGl2ZShpdGVtOiBDcHNTaWRlYmFyTWVudUl0ZW0pIHtcbiAgICBpZiAoIWl0ZW0uaXRlbXMpIHJldHVybiBmYWxzZTtcbiAgICBjb25zdCB1cmxzID0gaXRlbS5pdGVtcy5maWx0ZXIoKGkpID0+IGkudXJsKS5tYXAoKGkpID0+IGkudXJsKSBhcyBzdHJpbmdbXTtcblxuICAgIGlmICh0aGlzLmV4YWN0Um91dGVzKSByZXR1cm4gdXJscy5pbmNsdWRlcyh0aGlzLl9yb3V0ZXIudXJsKTtcbiAgICByZXR1cm4gdXJscy5zb21lKCh1cmwpID0+IHRoaXMuX3JvdXRlci51cmwuaW5jbHVkZXModXJsKSk7XG4gIH1cblxuICB0b2dnbGVTaWRlYmFyKCkge1xuICAgIHRoaXMuaXNFeHBhbmRlZCA9ICF0aGlzLmlzRXhwYW5kZWQ7XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJjcHMtc2lkZWJhci1tZW51XCJcbiAgW3N0eWxlLmhlaWdodF09XCJoZWlnaHRcIlxuICBbbmdDbGFzc109XCJ7ICdjcHMtc2lkZWJhci1tZW51LWNvbGxhcHNlZCc6ICFpc0V4cGFuZGVkIH1cIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtc1wiPlxuICAgIDxhXG4gICAgICAqbmdJZj1cIml0ZW0udXJsXCJcbiAgICAgIGNsYXNzPVwiY3BzLXNpZGViYXItbWVudS1pdGVtXCJcbiAgICAgIFtyb3V0ZXJMaW5rXT1cIltpdGVtLnVybF1cIlxuICAgICAgcm91dGVyTGlua0FjdGl2ZT1cImFjdGl2ZVwiXG4gICAgICBbcm91dGVyTGlua0FjdGl2ZU9wdGlvbnNdPVwieyBleGFjdDogZXhhY3RSb3V0ZXMgfVwiXG4gICAgICBbbmdDbGFzc109XCJ7IGRpc2FibGVkOiBpdGVtLmRpc2FibGVkIH1cIj5cbiAgICAgIDxjcHMtaWNvbiBbaWNvbl09XCJpdGVtLmljb25cIiBzaXplPVwibm9ybWFsXCI+IDwvY3BzLWljb24+XG4gICAgICA8c3BhblxuICAgICAgICBjbGFzcz1cImNwcy1zaWRlYmFyLW1lbnUtaXRlbS1sYWJlbFwiXG4gICAgICAgIFtAb25FeHBhbmRdPVwiaXNFeHBhbmRlZCA/ICdleHBhbmRlZCcgOiAnY29sbGFwc2VkJ1wiPlxuICAgICAgICB7eyBpdGVtLnRpdGxlIH19XG4gICAgICA8L3NwYW4+XG4gICAgPC9hPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXRlbS51cmxcIj5cbiAgICAgIDxjcHMtbWVudVxuICAgICAgICAjcG9wdXBNZW51XG4gICAgICAgIFtpdGVtc109XCJpdGVtLml0ZW1zIHx8IFtdXCJcbiAgICAgICAgW2hlYWRlcl09XCJpdGVtLnRpdGxlXCJcbiAgICAgICAgc2hvd1RyYW5zaXRpb25PcHRpb25zPVwiMHNcIlxuICAgICAgICBoaWRlVHJhbnNpdGlvbk9wdGlvbnM9XCIwc1wiXG4gICAgICAgIFt3aXRoQXJyb3ddPVwiZmFsc2VcIj5cbiAgICAgIDwvY3BzLW1lbnU+XG4gICAgICA8ZGl2XG4gICAgICAgIChjbGljayk9XCJ0b2dnbGVNZW51KCRldmVudCwgcG9wdXBNZW51KVwiXG4gICAgICAgIGNsYXNzPVwiY3BzLXNpZGViYXItbWVudS1pdGVtIG1lbnUtdHJpZ2dlclwiXG4gICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICBhY3RpdmU6IGlzQWN0aXZlKGl0ZW0pLFxuICAgICAgICAgICdtZW51LW9wZW4nOiBwb3B1cE1lbnUuaXNWaXNpYmxlKCksXG4gICAgICAgICAgZGlzYWJsZWQ6IGl0ZW0uZGlzYWJsZWRcbiAgICAgICAgfVwiPlxuICAgICAgICA8Y3BzLWljb24gW2ljb25dPVwiaXRlbS5pY29uXCIgc2l6ZT1cIm5vcm1hbFwiPiA8L2Nwcy1pY29uPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIGNsYXNzPVwiY3BzLXNpZGViYXItbWVudS1pdGVtLWxhYmVsXCJcbiAgICAgICAgICBbQG9uRXhwYW5kXT1cImlzRXhwYW5kZWQgPyAnZXhwYW5kZWQnIDogJ2NvbGxhcHNlZCdcIj5cbiAgICAgICAgICB7eyBpdGVtLnRpdGxlIH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPGRpdiBjbGFzcz1cImV4cGFuZC1hcmVhXCIgKGNsaWNrKT1cInRvZ2dsZVNpZGViYXIoKVwiPlxuICAgIDxjcHMtaWNvbiBpY29uPVwibWVudS1zaHJpbmtcIiBzaXplPVwiZmlsbFwiPiA8L2Nwcy1pY29uPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -19,12 +19,12 @@ export class CpsTabComponent {
|
|
|
19
19
|
*/
|
|
20
20
|
this.icon = '';
|
|
21
21
|
/**
|
|
22
|
-
*
|
|
22
|
+
* Determines whether tab is disabled.
|
|
23
23
|
* @group Props
|
|
24
24
|
*/
|
|
25
25
|
this.disabled = false;
|
|
26
26
|
/**
|
|
27
|
-
*
|
|
27
|
+
* Determines whether to show the tooltip on tab hover.
|
|
28
28
|
* @group Props
|
|
29
29
|
*/
|
|
30
30
|
this.tooltipText = '';
|
|
@@ -39,7 +39,7 @@ export class CpsTabComponent {
|
|
|
39
39
|
*/
|
|
40
40
|
this.tooltipMaxWidth = '100%';
|
|
41
41
|
/**
|
|
42
|
-
*
|
|
42
|
+
* Determines whether the tooltip should have persistent info.
|
|
43
43
|
* @group Props
|
|
44
44
|
*/
|
|
45
45
|
this.tooltipPersistent = false;
|
|
@@ -83,4 +83,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
|
83
83
|
type: ViewChild,
|
|
84
84
|
args: [TemplateRef]
|
|
85
85
|
}] } });
|
|
86
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
86
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3BzLXRhYi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jcHMtdWkta2l0L3NyYy9saWIvY29tcG9uZW50cy9jcHMtdGFiLWdyb3VwL2Nwcy10YWIvY3BzLXRhYi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jcHMtdWkta2l0L3NyYy9saWIvY29tcG9uZW50cy9jcHMtdGFiLWdyb3VwL2Nwcy10YWIvY3BzLXRhYi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBRXpFOzs7R0FHRztBQVFILE1BQU0sT0FBTyxlQUFlO0lBUDVCO1FBUUU7OztXQUdHO1FBQ00sVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUVwQjs7O1dBR0c7UUFDTSxTQUFJLEdBQUcsRUFBRSxDQUFDO1FBRW5COzs7V0FHRztRQUNNLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFFMUI7OztXQUdHO1FBQ00sZ0JBQVcsR0FBRyxFQUFFLENBQUM7UUFFMUI7OztXQUdHO1FBQ00sd0JBQW1CLEdBQUcscUJBQXFCLENBQUM7UUFFckQ7OztXQUdHO1FBQ00sb0JBQWUsR0FBb0IsTUFBTSxDQUFDO1FBRW5EOzs7V0FHRztRQUNNLHNCQUFpQixHQUFHLEtBQUssQ0FBQztRQUVuQzs7O1dBR0c7UUFDTSxlQUFVLEdBQUcsRUFBRSxDQUFDO1FBRXpCOzs7V0FHRztRQUNNLGlCQUFZLEdBQUcsRUFBRSxDQUFDO1FBSTNCLFdBQU0sR0FBRyxLQUFLLENBQUM7S0FDaEI7OzRHQTFEWSxlQUFlO2dHQUFmLGVBQWUsd1hBdURmLFdBQVcsZ0RDckV4QixzSUFLQSx5RERJWSxZQUFZOzJGQUtYLGVBQWU7a0JBUDNCLFNBQVM7aUNBQ0ksSUFBSSxXQUNQLENBQUMsWUFBWSxDQUFDLFlBQ2IsU0FBUzs4QkFTVixLQUFLO3NCQUFiLEtBQUs7Z0JBTUcsSUFBSTtzQkFBWixLQUFLO2dCQU1HLFFBQVE7c0JBQWhCLEtBQUs7Z0JBTUcsV0FBVztzQkFBbkIsS0FBSztnQkFNRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBTUcsZUFBZTtzQkFBdkIsS0FBSztnQkFNRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBTUcsVUFBVTtzQkFBbEIsS0FBSztnQkFNRyxZQUFZO3NCQUFwQixLQUFLO2dCQUVrQixPQUFPO3NCQUE5QixTQUFTO3VCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIENwc1RhYkNvbXBvbmVudCBpcyBhIHRhYiB3aXRoaW4gYSB0YWItZ3JvdXAuXG4gKiBAZ3JvdXAgQ29tcG9uZW50c1xuICovXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gIHNlbGVjdG9yOiAnY3BzLXRhYicsXG4gIHRlbXBsYXRlVXJsOiAnLi9jcHMtdGFiLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY3BzLXRhYi5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIENwc1RhYkNvbXBvbmVudCB7XG4gIC8qKlxuICAgKiBMYWJlbCBvZiB0aGUgdGFiLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIGxhYmVsID0gJyc7XG5cbiAgLyoqXG4gICAqIEljb24gYmVmb3JlIHRoZSBsYWJlbC5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBpY29uID0gJyc7XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgd2hldGhlciB0YWIgaXMgZGlzYWJsZWQuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRvIHNob3cgdGhlIHRvb2x0aXAgb24gdGFiIGhvdmVyLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIHRvb2x0aXBUZXh0ID0gJyc7XG5cbiAgLyoqXG4gICAqIENsYXNzIGZvciBzdHlsaW5nIHRoZSB0YWIgdG9vbHRpcC5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSB0b29sdGlwQ29udGVudENsYXNzID0gJ2Nwcy10b29sdGlwLWNvbnRlbnQnO1xuXG4gIC8qKlxuICAgKiBNYXggd2lkdGggb2YgdGhlIHRvb2x0aXAsIG9mIHR5cGUgbnVtYmVyIGRlbm90aW5nIHBpeGVscyBvciBzdHJpbmcuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgdG9vbHRpcE1heFdpZHRoOiBudW1iZXIgfCBzdHJpbmcgPSAnMTAwJSc7XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgd2hldGhlciB0aGUgdG9vbHRpcCBzaG91bGQgaGF2ZSBwZXJzaXN0ZW50IGluZm8uXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgdG9vbHRpcFBlcnNpc3RlbnQgPSBmYWxzZTtcblxuICAvKipcbiAgICogQmFkZ2UgdmFsdWUgdG8gc2hvdyBvbiB0aGUgdGFiIGFmdGVyIHRoZSBsYWJlbCBpbiBhIGZvcm0gb2YgYSBjaXJjbGUuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgYmFkZ2VWYWx1ZSA9ICcnO1xuXG4gIC8qKlxuICAgKiBUb29sdGlwIHRleHQgdG8gc2hvdyBvbiBiYWRnZSBob3Zlci5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBiYWRnZVRvb2x0aXAgPSAnJztcblxuICBAVmlld0NoaWxkKFRlbXBsYXRlUmVmKSBjb250ZW50ITogVGVtcGxhdGVSZWY8YW55PjtcblxuICBhY3RpdmUgPSBmYWxzZTtcbn1cbiIsIjxuZy10ZW1wbGF0ZSAjY29udGVudD5cbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRlbnRcIj48L25nLWNvbnRhaW5lcj5cbiJdfQ==
|