@po-ui/ng-components 18.3.0 → 18.5.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/esm2022/lib/components/po-dynamic/po-dynamic-view/po-dynamic-view-base.component.mjs +27 -2
- package/esm2022/lib/components/po-dynamic/po-dynamic-view/po-dynamic-view.component.mjs +7 -3
- package/esm2022/lib/components/po-field/po-combo/po-combo-base.component.mjs +2 -1
- package/esm2022/lib/components/po-field/po-combo/po-combo.component.mjs +66 -47
- package/esm2022/lib/components/po-field/po-multiselect/po-multiselect-dropdown/po-multiselect-dropdown.component.mjs +8 -4
- package/esm2022/lib/components/po-field/po-multiselect/po-multiselect.component.mjs +52 -34
- package/esm2022/lib/components/po-listbox/po-listbox-base.component.mjs +6 -2
- package/esm2022/lib/components/po-listbox/po-listbox.component.mjs +23 -5
- package/esm2022/lib/components/po-loading/po-loading-overlay/po-loading-overlay-base.component.mjs +10 -4
- package/esm2022/lib/components/po-tabs/po-tabs.component.mjs +2 -3
- package/fesm2022/po-ui-ng-components.mjs +217 -119
- package/fesm2022/po-ui-ng-components.mjs.map +1 -1
- package/lib/components/po-dynamic/po-dynamic-view/po-dynamic-view-base.component.d.ts +23 -1
- package/lib/components/po-dynamic/po-dynamic-view/po-dynamic-view.component.d.ts +1 -0
- package/lib/components/po-field/po-combo/po-combo-base.component.d.ts +1 -0
- package/lib/components/po-field/po-combo/po-combo.component.d.ts +3 -0
- package/lib/components/po-field/po-multiselect/po-multiselect-dropdown/po-multiselect-dropdown.component.d.ts +2 -1
- package/lib/components/po-field/po-multiselect/po-multiselect.component.d.ts +3 -0
- package/lib/components/po-listbox/po-listbox-base.component.d.ts +2 -1
- package/lib/components/po-listbox/po-listbox.component.d.ts +2 -0
- package/lib/components/po-loading/po-loading-overlay/po-loading-overlay-base.component.d.ts +9 -3
- package/package.json +4 -4
- package/po-ui-ng-components-18.5.0.tgz +0 -0
- package/schematics/ng-add/index.js +1 -1
- package/schematics/ng-update/v14/index.js +1 -1
- package/schematics/ng-update/v15/index.js +1 -1
- package/schematics/ng-update/v16/index.js +1 -1
- package/schematics/ng-update/v17/index.js +1 -1
- package/schematics/ng-update/v18/index.js +2 -2
- package/schematics/ng-update/v2/index.js +1 -1
- package/schematics/ng-update/v3/index.js +1 -1
- package/schematics/ng-update/v4/index.js +1 -1
- package/schematics/ng-update/v5/index.js +1 -1
- package/schematics/ng-update/v6/index.js +1 -1
- package/po-ui-ng-components-18.3.0.tgz +0 -0
package/esm2022/lib/components/po-dynamic/po-dynamic-view/po-dynamic-view-base.component.mjs
CHANGED
|
@@ -107,6 +107,28 @@ export class PoDynamicViewBaseComponent extends PoDynamicSharedBase {
|
|
|
107
107
|
get showAllValue() {
|
|
108
108
|
return this._showAllValue;
|
|
109
109
|
}
|
|
110
|
+
/**
|
|
111
|
+
* @optional
|
|
112
|
+
*
|
|
113
|
+
* @description
|
|
114
|
+
*
|
|
115
|
+
* Permite a quebra de linha no texto do `p-value`, aplicando-a onde há `\n`.
|
|
116
|
+
*
|
|
117
|
+
* ```
|
|
118
|
+
* <po-dynamic-view
|
|
119
|
+
* [p-value]="{ description: 'Primeira linha\nSegunda linha' }"
|
|
120
|
+
* [p-text-wrap]="true"
|
|
121
|
+
* ></po-dynamic-view>
|
|
122
|
+
* ```
|
|
123
|
+
*
|
|
124
|
+
* Saída:
|
|
125
|
+
* ```
|
|
126
|
+
* Primeira linha
|
|
127
|
+
* Segunda linha
|
|
128
|
+
* ```
|
|
129
|
+
* @default `false`
|
|
130
|
+
*/
|
|
131
|
+
textWrap = false;
|
|
110
132
|
/**
|
|
111
133
|
* @description
|
|
112
134
|
*
|
|
@@ -364,7 +386,7 @@ export class PoDynamicViewBaseComponent extends PoDynamicSharedBase {
|
|
|
364
386
|
return formattedField;
|
|
365
387
|
}
|
|
366
388
|
static ɵfac = function PoDynamicViewBaseComponent_Factory(t) { return new (t || PoDynamicViewBaseComponent)(i0.ɵɵdirectiveInject(i1.CurrencyPipe), i0.ɵɵdirectiveInject(i1.DatePipe), i0.ɵɵdirectiveInject(i1.DecimalPipe), i0.ɵɵdirectiveInject(i2.PoTimePipe), i0.ɵɵdirectiveInject(i1.TitleCasePipe), i0.ɵɵdirectiveInject(i3.PoDynamicViewService), i0.ɵɵdirectiveInject(i4.PoComboFilterService), i0.ɵɵdirectiveInject(i5.PoMultiselectFilterService)); };
|
|
367
|
-
static ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: PoDynamicViewBaseComponent, inputs: { load: [0, "p-load", "load"], fields: [0, "p-fields", "fields"], showAllValue: [0, "p-show-all-value", "showAllValue"], value: [0, "p-value", "value"] }, features: [i0.ɵɵInheritDefinitionFeature] });
|
|
389
|
+
static ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: PoDynamicViewBaseComponent, inputs: { load: [0, "p-load", "load"], fields: [0, "p-fields", "fields"], showAllValue: [0, "p-show-all-value", "showAllValue"], textWrap: [0, "p-text-wrap", "textWrap"], value: [0, "p-value", "value"] }, features: [i0.ɵɵInheritDefinitionFeature] });
|
|
368
390
|
}
|
|
369
391
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PoDynamicViewBaseComponent, [{
|
|
370
392
|
type: Directive
|
|
@@ -377,8 +399,11 @@ export class PoDynamicViewBaseComponent extends PoDynamicSharedBase {
|
|
|
377
399
|
}], showAllValue: [{
|
|
378
400
|
type: Input,
|
|
379
401
|
args: ['p-show-all-value']
|
|
402
|
+
}], textWrap: [{
|
|
403
|
+
type: Input,
|
|
404
|
+
args: ['p-text-wrap']
|
|
380
405
|
}], value: [{
|
|
381
406
|
type: Input,
|
|
382
407
|
args: ['p-value']
|
|
383
408
|
}] }); })();
|
|
384
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tZHluYW1pYy12aWV3LWJhc2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9jb21wb25lbnRzL3BvLWR5bmFtaWMvcG8tZHluYW1pYy12aWV3L3BvLWR5bmFtaWMtdmlldy1iYXNlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUdqRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRTdFLE9BQU8sRUFBYyxVQUFVLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFLM0UsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7Ozs7Ozs7QUFFdkU7Ozs7Ozs7O0dBUUc7QUFFSCxNQUFNLE9BQU8sMEJBQTJCLFNBQVEsbUJBQW1CO0lBeUd2RDtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0U7SUFDQTtJQUNBO0lBL0daOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BK0JHO0lBQ2MsSUFBSSxDQUFvQjtJQUV6QyxPQUFPLENBQU07SUFFTCxPQUFPLEdBQThCLEVBQUUsQ0FBQztJQUN4QyxhQUFhLEdBQVksS0FBSyxDQUFDO0lBQy9CLE1BQU0sR0FBRyxFQUFFLENBQUM7SUFFcEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQXFCRztJQUNILElBQXVCLE1BQU0sQ0FBQyxNQUFpQztRQUM3RCxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMs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LCBEZWNpbWFsUGlwZSwgVGl0bGVDYXNlUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBEaXJlY3RpdmUsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFBvVGltZVBpcGUgfSBmcm9tICcuLi8uLi8uLi9waXBlcy9wby10aW1lL3BvLXRpbWUucGlwZSc7XG5pbXBvcnQgeyBjb252ZXJ0VG9Cb29sZWFuLCBpc1R5cGVvZiwgc29ydEZpZWxkcyB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL3V0aWwnO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBjYXRjaEVycm9yLCBtYXAsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBnZXRHcmlkQ29sdW1uc0NsYXNzZXMsIGlzVmlzaWJsZUZpZWxkIH0gZnJvbSAnLi4vcG8tZHluYW1pYy51dGlsJztcbmltcG9ydCB7IFBvRHluYW1pY1ZpZXdGaWVsZCB9IGZyb20gJy4vcG8tZHluYW1pYy12aWV3LWZpZWxkLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb0R5bmFtaWNWaWV3U2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvcG8tZHluYW1pYy12aWV3LnNlcnZpY2UnO1xuaW1wb3J0IHsgUG9Db21ib0ZpbHRlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9wby1maWVsZC9wby1jb21iby9wby1jb21iby1maWx0ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBQb011bHRpc2VsZWN0RmlsdGVyU2VydmljZSB9IGZyb20gJy4uLy4uL3BvLWZpZWxkL3BvLW11bHRpc2VsZWN0L3BvLW11bHRpc2VsZWN0LWZpbHRlci5zZXJ2aWNlJztcbmltcG9ydCB7IFBvRHluYW1pY1NoYXJlZEJhc2UgfSBmcm9tICcuLi9zaGFyZWQvcG8tZHluYW1pYy1zaGFyZWQtYmFzZSc7XG5cbi8qKlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICpcbiAqIENvbXBvbmVudGUgcGFyYSBsaXN0YXIgZGFkb3MgZGluYW1pY2FtZW50ZSBhIHBhcnRpciBkZSB1bWEgbGlzdGEgZGUgb2JqZXRvcy5cbiAqXG4gKiA+IFBvciBwYWRyw6NvIGVzc2UgY29tcG9uZW50ZSBjcmlhIGBwby1pbmZvYCBwYXJhIGV4aWJpw6fDo28sIMOpIHBvc3PDrXZlbCBjcmlhciBgcG8tdGFnYCBwYXNzYW5kbyBhIHByb3ByaWVkYWRlIHsgdGFnOiB0cnVlIH0uXG4gKlxuICovXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBjbGFzcyBQb0R5bmFtaWNWaWV3QmFzZUNvbXBvbmVudCBleHRlbmRzIFBvRHluYW1pY1NoYXJlZEJhc2Uge1xuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBQb3NzaWJpbGl0YSBleGVjdXRhciB1bWEgZnVuw6fDo28gcXVhbmRvIG8gY29tcG9uZW50ZSDDqSBpbmljaWFsaXphZG8uXG4gICAqXG4gICAqIEEgcHJvcHJpZWRhZGUgYWNlaXRhIG9zIHNlZ3VpbnRlcyB0aXBvczpcbiAgICogLSAqKlN0cmluZyoqOiBFbmRwb2ludCB1c2FkbyBwZWxvIGNvbXBvbmVudGUgcGFyYSByZXF1aXNpw6fDo28gdmlhIGBQT1NUYC5cbiAgICogLSAqKkZ1bmN0aW9uKio6IE3DqXRvZG8gcXVlIHNlcsOhIGV4ZWN1dGFkbyBuYSBpbmljaWFsaXphw6fDo28gZG8gY29tcG9uZW50ZS5cbiAgICpcbiAgICogUGFyYSBvcyBkb2lzIHRpcG9zIGRlIHV0aWxpemHDp8OjbyBkYSBwcm9wcmllZGFkZSBlc3BlcmEtc2UgbyBzZWd1aW50ZSByZXRvcm5vOlxuICAgKlxuICAgKiBgYGBcbiAgICoge1xuICAgKiAgIHZhbHVlOiB7XG4gICAqICAgICBjbnBqOiAnKioqKioqKioqKioqKionLCAvLyBhbHRlcmEgdmFsb3IgZG8gY2FtcG9cbiAgICogICAgIHVwZGF0ZWQ6IChuZXcgRGF0ZSgpKS50b1N0cmluZygpIC8vIGF0cmlidWkgdmFsb3IgYW8gY2FtcG8gbm92b1xuICAgKiAgIH0sXG4gICAqICAgZmllbGRzOiBbXG4gICAqICAgICB7IHByb3BlcnR5OiAndXBkYXRlZCcsIHRhZzogdHJ1ZSB9IC8vIGluY2x1aSBjYW1wbyBub3ZvXG4gICAqICAgXVxuICAgKiB9XG4gICAqIGBgYFxuICAgKiA+ICoqdmFsdWUqKjogYW55ID0gYXRyaWJ1aSBub3ZvIHZhbG9yIGRvIG1vZGVsLlxuICAgKlxuICAgKiA+ICoqZmllbGRzKio6IGBBcnJheTxQb0R5bmFtaWNWaWV3RmllbGQ+YCA9IExpc3RhIGRlIGNhbXBvcyBxdWUgZGVzZWphIGFsdGVyYXIgYXMgcHJvcHJpZWRhZGVzLFxuICAgKiBjYXNvIGVudmlhciB1bSBjYW1wbyBhIG1haXMgc2Vyw6EgY3JpYWRvIHVtIG5vdm8gY2FtcG8uXG4gICAqXG4gICAqIC0gUGFyYSBlc2NvbmRlci9yZW1vdmVyIGNhbXBvcyBwcmVjaXNhIGluZm9ybWFyIG5vIGZpZWxkIGEgcHJvcHJpZWRhZGUgYHZpc2libGUgPSBmYWxzZWAuXG4gICAqXG4gICAqL1xuICBASW5wdXQoJ3AtbG9hZCcpIGxvYWQ6IHN0cmluZyB8IEZ1bmN0aW9uO1xuXG4gIHNlcnZpY2U6IGFueTtcblxuICBwcml2YXRlIF9maWVsZHM6IEFycmF5PFBvRHluYW1pY1ZpZXdGaWVsZD4gPSBbXTtcbiAgcHJpdmF0ZSBfc2hvd0FsbFZhbHVlOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX3ZhbHVlID0ge307XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogTGlzdGEgZGUgb2JqZXRvcyBxdWUgaW1wbGVtZW50YW0gYSBpbnRlcmZhY2UgYFBvRHluYW1pY1ZpZXdgLlxuICAgKlxuICAgKiA+IEV4OiBgWyB7IHByb3BlcnR5OiAnYWdlJyB9IF1gXG4gICAqXG4gICAqIFJlZ3JhcyBkZSB0aXBhZ2VtIGUgZm9ybWF0YcOnw6NvIGRvcyB2YWxvcmVzIGV4aWJpZG9zOlxuICAgKlxuICAgKiAtIENhc28gbyAqdHlwZSogaW5mb3JtYWRvIHNlamEgKmN1cnJlbmN5KiBlIG7Do28gc2VqYSBpbmZvcm1hZG8gbyAqZm9ybWF0KiBvIG1lc21vIHJlY2ViZSBcIidCUkwnLCAnc3ltYm9sJywgJzEuMi0yJ1wiXG4gICAqIGNvbW8gZm9ybWF0byBwYWRyw6NvLlxuICAgKiAtIENhc28gbyAqdHlwZSogaW5mb3JtYWRvIHNlamEgKmRhdGUqIGUgbsOjbyBzZWphIGluZm9ybWFkbyBvICpmb3JtYXQqIG8gbWVzbW8gcmVjZWJlICdkZC9NTS95eXl5JyBjb21vIGZvcm1hdG8gcGFkcsOjby5cbiAgICogLSBDYXNvIG8gKnR5cGUqIGluZm9ybWFkbyBzZWphICpkYXRlVGltZSogZSBuw6NvIHNlamEgaW5mb3JtYWRvIG8gKmZvcm1hdCogbyBtZXNtbyByZWNlYmUgJ2RkL01NL3l5eXkgSEg6bW06c3MnIGNvbW8gZm9ybWF0byBwYWRyw6NvLlxuICAgKiAtIENhc28gbyAqdHlwZSogaW5mb3JtYWRvIHNlamEgKm51bWJlciogZSBuw6NvIHNlamEgaW5mb3JtYWRvIG8gKmZvcm1hdCogbyBtZXNtbyBuw6NvIHNlcsOhIGZvcm1hdGFkby5cbiAgICogLSBDYXNvIG8gKnR5cGUqIGluZm9ybWFkbyBzZWphICp0aW1lKiBlIG7Do28gc2VqYSBpbmZvcm1hZG8gbyAqZm9ybWF0KiBvIG1lc21vIHJlY2ViZSAnSEg6bW06c3MuZmZmZmZmJyBjb21vIGZvcm1hdG8gcGFkcsOjby5cbiAgICpcbiAgICogPiBBcyBwcm9wcmllZGFkZXMgaW5mb3JtYWRhcyBzZXLDo28gZXhpYmlkYXMgbWVzbW8gbsOjbyBjb250ZW5kbyB2YWxvciBkZSByZWZlcsOqbmNpYSBubyBvYmpldG8gZGEgcHJvcHJpZWRhZGUgYHAtdmFsdWVgLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgW11gXG4gICAqL1xuICBASW5wdXQoJ3AtZmllbGRzJykgc2V0IGZpZWxkcyhmaWVsZHM6IEFycmF5PFBvRHluYW1pY1ZpZXdGaWVsZD4pIHtcbiAgICB0aGlzLl9maWVsZHMgPSBBcnJheS5pc0FycmF5KGZpZWxkcykgPyBbLi4uZmllbGRzXSA6IFtdO1xuICB9XG5cbiAgZ2V0IGZpZWxkcygpIHtcbiAgICByZXR1cm4gdGhpcy5fZmllbGRzO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogSW5kaWNhIHNlIGV4aWJpcsOhIHRvZGFzIGFzIGluZm9ybWHDp8O1ZXMgY29udGlkYXMgZGVudHJvIGRvIG9iamV0byBpbmZvcm1hZG8gbmEgcHJvcHJpZWRhZGUgYHAtdmFsdWVgLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoJ3Atc2hvdy1hbGwtdmFsdWUnKSBzZXQgc2hvd0FsbFZhbHVlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fc2hvd0FsbFZhbHVlID0gY29udmVydFRvQm9vbGVhbih2YWx1ZSk7XG4gIH1cblxuICBnZXQgc2hvd0FsbFZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLl9zaG93QWxsVmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIE9iamV0byBxdWUgc2Vyw6EgdXRpbGl6YWRvIHBhcmEgZXhpYmlyIGFzIGluZm9ybWHDp8O1ZXMgZGluw6JtaWNhcywgbyB2YWxvciBzZXLDoSByZWN1cGVyYWRvIGF0cmF2w6lzIGRvIGF0cmlidXRvICpwcm9wZXJ0eSpcbiAgICogZG9zIG9iamV0b3MgY29udGlkb3MgbmEgcHJvcHJpZGFkZSBgcC1maWVsZHNgLlxuICAgKlxuICAgKiA+IEV4OiBgeyBhZ2U6ICczNScgfWBcbiAgICovXG4gIEBJbnB1dCgncC12YWx1ZScpIHNldCB2YWx1ZSh2YWx1ZTogb2JqZWN0KSB7XG4gICAgdGhpcy5fdmFsdWUgPSB2YWx1ZSAmJiBpc1R5cGVvZih2YWx1ZSwgJ29iamVjdCcpID8gdmFsdWUgOiB7fTtcbiAgfVxuXG4gIGdldCB2YWx1ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGN1cnJlbmN5UGlwZTogQ3VycmVuY3lQaXBlLFxuICAgIHByaXZhdGUgZGF0ZVBpcGU6IERhdGVQaXBlLFxuICAgIHByaXZhdGUgZGVjaW1hbFBpcGU6IERlY2ltYWxQaXBlLFxuICAgIHByaXZhdGUgdGltZVBpcGU6IFBvVGltZVBpcGUsXG4gICAgcHJpdmF0ZSB0aXRsZUNhc2VQaXBlOiBUaXRsZUNhc2VQaXBlLFxuICAgIHByb3RlY3RlZCBkeW5hbWljVmlld1NlcnZpY2U6IFBvRHluYW1pY1ZpZXdTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBjb21ib0ZpbHRlclNlcnZpY2U6IFBvQ29tYm9GaWx0ZXJTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBtdWx0aXNlbGVjdEZpbHRlclNlcnZpY2U6IFBvTXVsdGlzZWxlY3RGaWx0ZXJTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0RmllbGRPcmRlclJldHJvYWN0aXZlKHBvc2l0aW9uOiBudW1iZXIsIGluZGV4OiBudW1iZXIgPSAxKTogbnVtYmVyIHtcbiAgICBpZiAocG9zaXRpb24gPT09IGluZGV4KSB7XG4gICAgICByZXR1cm4gcG9zaXRpb247XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmZpZWxkcy5maW5kSW5kZXgoZmllbGQgPT4gZmllbGQub3JkZXIgPT09IGluZGV4KSA+IC0xXG4gICAgICA/IHRoaXMuZ2V0RmllbGRPcmRlclJldHJvYWN0aXZlKHBvc2l0aW9uLCBpbmRleCArIDEpXG4gICAgICA6IGluZGV4O1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldEZpZWxkT3JkZXIoZmllbGQ6IFBvRHluYW1pY1ZpZXdGaWVsZCwgaW5kZXg6IG51bWJlcik6IG51bWJlciB7XG4gICAgY29uc3QgcG9zaXRpb24gPSB0aGlzLmdldEZpZWxkT3JkZXJSZXRyb2FjdGl2ZShpbmRleCArIDEpO1xuICAgIHJldHVybiB0aGlzLmZpZWxkcy5maW5kSW5kZXgoZSA9PiBlLm9yZGVyID09PSBwb3NpdGlvbikgPiAtMSA/IHRoaXMuZ2V0RmllbGRPcmRlcihmaWVsZCwgcG9zaXRpb24pIDogcG9zaXRpb247XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0Q29uZmlndXJlZEZpZWxkcyh1c2VTZWFyY2hTZXJ2aWNlID0gdHJ1ZSkge1xuICAgIGNvbnN0IG5ld0ZpZWxkcyA9IFtdO1xuXG4gICAgdGhpcy5maWVsZHMuZm9yRWFjaCgoZmllbGQsIGluZGV4KSA9PiB7XG4gICAgICBmaWVsZC5vcmRlciA9IGZpZWxkLm9yZGVyIHx8IHRoaXMuZ2V0RmllbGRPcmRlcihmaWVsZCwgaW5kZXgpO1xuXG4gICAgICBpZiAoIWlzVmlzaWJsZUZpZWxkKGZpZWxkKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICghZmllbGQuc2VhcmNoU2VydmljZSAmJiAhZmllbGQub3B0aW9uc1NlcnZpY2UpIHtcbiAgICAgICAgbmV3RmllbGRzLnB1c2godGhpcy5jcmVhdGVGaWVsZChmaWVsZCkpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGhhc1ZhbHVlID1cbiAgICAgICAgdGhpcy52YWx1ZVtmaWVsZC5wcm9wZXJ0eV0/Lmxlbmd0aCB8fFxuICAgICAgICAoIUFycmF5LmlzQXJyYXkodGhpcy52YWx1ZVtmaWVsZC5wcm9wZXJ0eV0pICYmIHRoaXMudmFsdWVbZmllbGQucHJvcGVydHldICYmIHVzZVNlYXJjaFNlcnZpY2UpIHx8XG4gICAgICAgIGZpZWxkLmNvbnRhaW5lcjtcblxuICAgICAgaWYgKGhhc1ZhbHVlKSB7XG4gICAgICAgIGNvbnN0IF9maWVsZCA9IHRoaXMucmV0dXJuVmFsdWVzKHsgLi4uZmllbGQgfSwgJycpO1xuICAgICAgICBuZXdGaWVsZHMucHVzaChfZmllbGQpO1xuXG4gICAgICAgIGlmIChmaWVsZC5zZWFyY2hTZXJ2aWNlKSB7XG4gICAgICAgICAgaWYgKHR5cGVvZiBmaWVsZC5zZWFyY2hTZXJ2aWNlID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgdGhpcy5zZXJ2aWNlID0gZmllbGQuc2VhcmNoU2VydmljZSBhcyBQb0R5bmFtaWNWaWV3U2VydmljZTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBmaWVsZC5zZWFyY2hTZXJ2aWNlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgdGhpcy5zZXJ2aWNlID0gdGhpcy5keW5hbWljVmlld1NlcnZpY2U7XG4gICAgICAgICAgICB0aGlzLnNlcnZpY2Uuc2V0Q29uZmlnKGZpZWxkLnNlYXJjaFNlcnZpY2UpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChmaWVsZC5vcHRpb25zU2VydmljZSkge1xuICAgICAgICAgIGlmIChmaWVsZC5vcHRpb25zTXVsdGkpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgZmllbGQub3B0aW9uc1NlcnZpY2UgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICAgIHRoaXMuc2VydmljZSA9IGZpZWxkLm9wdGlvbnNTZXJ2aWNlIGFzIFBvTXVsdGlzZWxlY3RGaWx0ZXJTZXJ2aWNlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGhpcy5zZXJ2aWNlID0gdGhpcy5tdWx0aXNlbGVjdEZpbHRlclNlcnZpY2U7XG4gICAgICAgICAgICAgIHRoaXMuc2VydmljZS5jb25maWdQcm9wZXJ0aWVzKGZpZWxkLm9wdGlvbnNTZXJ2aWNlLCBmaWVsZC5maWVsZExhYmVsLCBmaWVsZC5maWVsZFZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBmaWVsZC5vcHRpb25zU2VydmljZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgdGhpcy5zZXJ2aWNlID0gZmllbGQub3B0aW9uc1NlcnZpY2UgYXMgUG9Db21ib0ZpbHRlclNlcnZpY2U7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLnNlcnZpY2UgPSB0aGlzLmNvbWJvRmlsdGVyU2VydmljZTtcbiAgICAgICAgICAgICAgdGhpcy5zZXJ2aWNlLmNvbmZpZ1Byb3BlcnRpZXMoZmllbGQub3B0aW9uc1NlcnZpY2UsIGZpZWxkLmZpZWxkTGFiZWwsIGZpZWxkLmZpZWxkVmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY3JlYXRlRmllbGRXaXRoU2VydmljZShmaWVsZCwgbmV3RmllbGRzLCBfZmllbGQpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgX3NvcnRlZEZpZWxkID0gc29ydEZpZWxkcyhuZXdGaWVsZHMpO1xuICAgIHRoaXMuZW5zdXJlRmllbGRIYXNDb250YWluZXIoX3NvcnRlZEZpZWxkKTtcblxuICAgIHJldHVybiBfc29ydGVkRmllbGQ7XG4gIH1cblxuICAvLyByZXRvcm5hIGZpZWxkcyBsaWdhZG8gYW8gdmFsdWUgbWFpcyBvcyBhdHJpYnV0b3MgZG8gdmFsdWUgcXVlIG7Do28gcG9zc3VpYW0gZmllbGRzLlxuICBwcm90ZWN0ZWQgZ2V0TWVyZ2VkRmllbGRzKCkge1xuICAgIGNvbnN0IG1lcmdlZEZpZWxkcyA9IFsuLi50aGlzLmdldENvbmZpZ3VyZWRGaWVsZHMoKV07XG5cbiAgICB0aGlzLmdldFZhbHVlRmllbGRzKCkuZm9yRWFjaCh2YWx1ZUZpZWxkID0+IHtcbiAgICAgIGNvbnN0IGZpZWxkSW5kZXggPSBtZXJnZWRGaWVsZHMuZmluZEluZGV4KGZpZWxkID0+IGZpZWxkLnByb3BlcnR5ID09PSB2YWx1ZUZpZWxkLnByb3BlcnR5KTtcbiAgICAgIGNvbnN0IHByb3BlcnR5ID0gdmFsdWVGaWVsZC5wcm9wZXJ0eTtcblxuICAgICAgaWYgKGZpZWxkSW5kZXggPT09IC0xKSB7XG4gICAgICAgIG1lcmdlZEZpZWxkcy5wdXNoKHRoaXMuY3JlYXRlRmllbGQoeyBwcm9wZXJ0eSB9KSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbWVyZ2VkRmllbGRzO1xuICB9XG5cbiAgLy8gcmV0b3JuYSBvIG9iamV0byB2YWx1ZSBjb21vIGZpZWxkcy5cbiAgcHJvdGVjdGVkIGdldFZhbHVlRmllbGRzKCkge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLnZhbHVlKS5tYXAocHJvcGVydHkgPT4gdGhpcy5jcmVhdGVGaWVsZCh7IHByb3BlcnR5IH0pKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlRmllbGQoZmllbGQ6IFBvRHluYW1pY1ZpZXdGaWVsZCkge1xuICAgIGNvbnN0IHByb3BlcnR5ID0gZmllbGQucHJvcGVydHk7XG4gICAgbGV0IHZhbHVlO1xuICAgIGlmIChmaWVsZC5pc0FycmF5T3JPYmplY3QgJiYgdGhpcy52YWx1ZVtwcm9wZXJ0eV0pIHtcbiAgICAgIHZhbHVlID0gdGhpcy50cmFuc2Zvcm1BcnJheVZhbHVlKHRoaXMudmFsdWVbcHJvcGVydHldLCBmaWVsZCk7XG4gICAgfSBlbHNlIGlmIChmaWVsZC5maWVsZExhYmVsKSB7XG4gICAgICB2YWx1ZSA9IHRoaXMudHJhbnNmb3JtRmllbGRMYWJlbChwcm9wZXJ0eSwgZmllbGQpO1xuICAgIH1cblxuICAgIGlmICghdmFsdWUpIHtcbiAgICAgIHZhbHVlID0gdGhpcy50cmFuc2Zvcm1WYWx1ZShmaWVsZC50eXBlLCB0aGlzLnZhbHVlW3Byb3BlcnR5XSwgZmllbGQuZm9ybWF0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5yZXR1cm5WYWx1ZXMoZmllbGQsIHZhbHVlKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlRmllbGRXaXRoU2VydmljZShmaWVsZDogUG9EeW5hbWljVmlld0ZpZWxkLCBuZXdGaWVsZHM/LCBvbGRGaWVsZD8pIHtcbiAgICBjb25zdCBwcm9wZXJ0eSA9IGZpZWxkLnByb3BlcnR5O1xuXG4gICAgdGhpcy5zZWFyY2hCeUlkKHRoaXMudmFsdWVbcHJvcGVydHldLCBmaWVsZCkuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlID0gcmVzcG9uc2U7XG4gICAgICBjb25zdCBhbGxWYWx1ZXMgPSB0aGlzLnJldHVyblZhbHVlcyhmaWVsZCwgdmFsdWUpO1xuICAgICAgY29uc3Qgb2xkRmllbGRJbmRleCA9IG5ld0ZpZWxkcy5pbmRleE9mKG5ld0ZpZWxkcy5maW5kKGZpZWxkID0+IGZpZWxkID09PSBvbGRGaWVsZCkpO1xuICAgICAgbmV3RmllbGRzLnNwbGljZShvbGRGaWVsZEluZGV4LCAxLCBhbGxWYWx1ZXMpO1xuICAgICAgc29ydEZpZWxkcyhuZXdGaWVsZHMpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSByZXR1cm5WYWx1ZXMoZmllbGQ6IFBvRHluYW1pY1ZpZXdGaWVsZCwgdmFsdWU6IGFueSkge1xuICAgIGNvbnN0IHByb3BlcnR5ID0gZmllbGQucHJvcGVydHk7XG4gICAgY29uc3QgY2xhc3Nlc0dyaWRDb2x1bW5zID0gZ2V0R3JpZENvbHVtbnNDbGFzc2VzKFxuICAgICAgZmllbGQuZ3JpZENvbHVtbnMsXG4gICAgICBmaWVsZC5vZmZzZXRDb2x1bW5zLFxuICAgICAge1xuICAgICAgICBzbUdyaWQ6IGZpZWxkLmdyaWRTbUNvbHVtbnMsXG4gICAgICAgIG1kR3JpZDogZmllbGQuZ3JpZE1kQ29sdW1ucyxcbiAgICAgICAgbGdHcmlkOiBmaWVsZC5ncmlkTGdDb2x1bW5zLFxuICAgICAgICB4bEdyaWQ6IGZpZWxkLmdyaWRYbENvbHVtbnNcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHNtT2Zmc2V0OiBmaWVsZC5vZmZzZXRTbUNvbHVtbnMsXG4gICAgICAgIG1kT2Zmc2V0OiBmaWVsZC5vZmZzZXRNZENvbHVtbnMsXG4gICAgICAgIGxnT2Zmc2V0OiBmaWVsZC5vZmZzZXRMZ0NvbHVtbnMsXG4gICAgICAgIHhsT2Zmc2V0OiBmaWVsZC5vZmZzZXRYbENvbHVtbnNcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHNtUHVsbDogZmllbGQuZ3JpZFNtUHVsbCxcbiAgICAgICAgbWRQdWxsOiBmaWVsZC5ncmlkTWRQdWxsLFxuICAgICAgICBsZ1B1bGw6IGZpZWxkLmdyaWRMZ1B1bGwsXG4gICAgICAgIHhsUHVsbDogZmllbGQuZ3JpZFhsUHVsbFxuICAgICAgfVxuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgcHJvcGVydHksXG4gICAgICB2YWx1ZSxcbiAgICAgIGxhYmVsOiB0aGlzLnRpdGxlQ2FzZVBpcGUudHJhbnNmb3JtKHByb3BlcnR5KSxcbiAgICAgIGNzc0NsYXNzOiBjbGFzc2VzR3JpZENvbHVtbnMsXG4gICAgICAuLi5maWVsZFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHNlYXJjaEJ5SWQodmFsdWU6IGFueSwgZmllbGQ6IFBvRHluYW1pY1ZpZXdGaWVsZCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHZhbHVlID0gdmFsdWUudHJpbSgpO1xuICAgIH1cblxuICAgIGlmICh2YWx1ZSAhPT0gJycpIHtcbiAgICAgIGlmIChmaWVsZC5vcHRpb25zTXVsdGkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZVxuICAgICAgICAgIC5nZXRPYmplY3RzQnlWYWx1ZXModmFsdWUsIGZpZWxkLnBhcmFtcylcbiAgICAgICAgICAucGlwZShtYXAocmVzID0+IHRoaXMudHJhbnNmb3JtQXJyYXlWYWx1ZShyZXMsIGZpZWxkKSkpXG4gICAgICAgICAgLnBpcGUoY2F0Y2hFcnJvcigoKSA9PiBvZihudWxsKSkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZVxuICAgICAgICAgIC5nZXRPYmplY3RCeVZhbHVlKHZhbHVlLCBmaWVsZC5wYXJhbXMpXG4gICAgICAgICAgLnBpcGUobWFwKHJlcyA9PiB0aGlzLnRyYW5zZm9ybUFycmF5VmFsdWUocmVzLCBmaWVsZCkpKVxuICAgICAgICAgIC5waXBlKGNhdGNoRXJyb3IoKCkgPT4gb2YobnVsbCkpKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdHJhbnNmb3JtQXJyYXlWYWx1ZSh2YWx1ZVByb3BlcnR5OiBhbnksIGZpZWxkOiBQb0R5bmFtaWNWaWV3RmllbGQpIHtcbiAgICBjb25zdCB2YWx1ZUFycmF5ID0gQXJyYXkuaXNBcnJheSh2YWx1ZVByb3BlcnR5KSA/IHZhbHVlUHJvcGVydHkgOiBbdmFsdWVQcm9wZXJ0eV07XG4gICAgbGV0IGxhYmVsczogQXJyYXk8c3RyaW5nPjtcblxuICAgIGlmIChBcnJheS5pc0FycmF5KGZpZWxkLmZvcm1hdCkpIHtcbiAgICAgIGxhYmVscyA9IHZhbHVlQXJyYXkubWFwKG9iamVjdERhdGEgPT4gdGhpcy5mb3JtYXRGaWVsZChvYmplY3REYXRhLCBmaWVsZC5mb3JtYXQpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgYXJyYXlXaXRoTGFiZWwgPSB2YWx1ZUFycmF5Lm1hcChpdGVtID0+ICh7XG4gICAgICAgIHZhbHVlOiBpdGVtW2ZpZWxkLmZpZWxkVmFsdWVdIHx8IGl0ZW0udmFsdWUsXG4gICAgICAgIGxhYmVsOiBpdGVtW2ZpZWxkLmZpZWxkTGFiZWxdIHx8IGl0ZW0ubGFiZWxcbiAgICAgIH0pKTtcblxuICAgICAgbGFiZWxzID0gYXJyYXlXaXRoTGFiZWwubWFwKG9wdGlvblZhbHVlID0+IHtcbiAgICAgICAgaWYgKG9wdGlvblZhbHVlLmxhYmVsKSB7XG4gICAgICAgICAgY29uc3QgbGFiZWxUcmFuZm9ybWVkID0gdGhpcy50cmFuc2Zvcm1WYWx1ZShmaWVsZC50eXBlLCBvcHRpb25WYWx1ZS5sYWJlbCwgZmllbGQuZm9ybWF0KTtcbiAgICAgICAgICBpZiAoZmllbGQuY29uY2F0TGFiZWxWYWx1ZSAmJiBvcHRpb25WYWx1ZS52YWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIGAke2xhYmVsVHJhbmZvcm1lZH0gLSAke29wdGlvblZhbHVlLnZhbHVlfWA7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBsYWJlbFRyYW5mb3JtZWQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAobGFiZWxzWzBdICE9PSB1bmRlZmluZWQgJiYgbGFiZWxzLmpvaW4oKSkge1xuICAgICAgcmV0dXJuIGxhYmVscy5qb2luKCcsICcpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YWx1ZVByb3BlcnR5ID0gJyc7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdHJhbnNmb3JtRmllbGRMYWJlbChwcm9wZXJ0eTogc3RyaW5nLCBmaWVsZDogUG9EeW5hbWljVmlld0ZpZWxkKSB7XG4gICAgaWYgKGZpZWxkLmNvbmNhdExhYmVsVmFsdWUgJiYgZmllbGQuZmllbGRMYWJlbCAmJiBmaWVsZC5maWVsZFZhbHVlICYmICFmaWVsZC5pc0FycmF5T3JPYmplY3QpIHtcbiAgICAgIGNvbnN0IHRyYW5zZm9ybWVkVmFsdWUgPSB0aGlzLnRyYW5zZm9ybVZhbHVlKGZpZWxkLnR5cGUsIHRoaXMudmFsdWVbZmllbGQuZmllbGRMYWJlbF0sIGZpZWxkLmZvcm1hdCk7XG4gICAgICByZXR1cm4gYCR7dHJhbnNmb3JtZWRWYWx1ZX0gLSAke3RoaXMudmFsdWVbZmllbGQuZmllbGRWYWx1ZV19YDtcbiAgICB9XG5cbiAgICBpZiAoZmllbGQuZmllbGRMYWJlbCAmJiAhZmllbGQuY29uY2F0TGFiZWxWYWx1ZSAmJiAhZmllbGQuaXNBcnJheU9yT2JqZWN0KSB7XG4gICAgICB0aGlzLnZhbHVlW3Byb3BlcnR5XSA9IHRoaXMudmFsdWVbZmllbGQuZmllbGRMYWJlbF07XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBwcml2YXRlIHRyYW5zZm9ybVZhbHVlKHR5cGU6IHN0cmluZywgdmFsdWUsIGZvcm1hdCkge1xuICAgIGxldCB0cmFuc2Zvcm1lZFZhbHVlID0gdmFsdWU7XG5cbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgJ2N1cnJlbmN5JzpcbiAgICAgICAgdHJhbnNmb3JtZWRWYWx1ZSA9IHRoaXMuY3VycmVuY3lQaXBlLnRyYW5zZm9ybSh2YWx1ZSwgZm9ybWF0IHx8ICdCUkwnLCAnc3ltYm9sJywgJzEuMi0yJyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZGF0ZSc6XG4gICAgICAgIHRyYW5zZm9ybWVkVmFsdWUgPSB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybSh2YWx1ZSwgZm9ybWF0IHx8ICdkZC9NTS95eXl5Jyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZGF0ZVRpbWUnOlxuICAgICAgICB0cmFuc2Zvcm1lZFZhbHVlID0gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0odmFsdWUsIGZvcm1hdCB8fCAnZGQvTU0veXl5eSBISDptbTpzcycpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ251bWJlcic6XG4gICAgICAgIHRyYW5zZm9ybWVkVmFsdWUgPSB0aGlzLmRlY2ltYWxQaXBlLnRyYW5zZm9ybSh2YWx1ZSwgZm9ybWF0KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd0aW1lJzpcbiAgICAgICAgdHJhbnNmb3JtZWRWYWx1ZSA9IHRoaXMudGltZVBpcGUudHJhbnNmb3JtKHZhbHVlLCBmb3JtYXQgfHwgJ0hIOm1tOnNzLmZmZmZmZicpO1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICByZXR1cm4gdHJhbnNmb3JtZWRWYWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgZm9ybWF0RmllbGQob2JqZWN0U2VsZWN0ZWQsIHByb3BlcnRpZXMpIHtcbiAgICBsZXQgZm9ybWF0dGVkRmllbGQ7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkocHJvcGVydGllcykpIHtcbiAgICAgIGZvciAoY29uc3QgcHJvcGVydHkgb2YgcHJvcGVydGllcykge1xuICAgICAgICBpZiAob2JqZWN0U2VsZWN0ZWQgJiYgb2JqZWN0U2VsZWN0ZWRbcHJvcGVydHldKSB7XG4gICAgICAgICAgaWYgKCFmb3JtYXR0ZWRGaWVsZCkge1xuICAgICAgICAgICAgZm9ybWF0dGVkRmllbGQgPSBvYmplY3RTZWxlY3RlZFtwcm9wZXJ0eV07XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZvcm1hdHRlZEZpZWxkICs9ICcgLSAnICsgb2JqZWN0U2VsZWN0ZWRbcHJvcGVydHldO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZm9ybWF0dGVkRmllbGQ7XG4gIH1cbn1cbiJdfQ==
|
|
409
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tZHluYW1pYy12aWV3LWJhc2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9jb21wb25lbnRzL3BvLWR5bmFtaWMvcG8tZHluYW1pYy12aWV3L3BvLWR5bmFtaWMtdmlldy1iYXNlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUdqRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRTdFLE9BQU8sRUFBYyxVQUFVLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFLM0UsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7Ozs7Ozs7QUFFdkU7Ozs7Ozs7O0dBUUc7QUFFSCxNQUFNLE9BQU8sMEJBQTJCLFNBQVEsbUJBQW1CO0lBZ0l2RDtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0U7SUFDQTtJQUNBO0lBdElaOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BK0JHO0lBQ2MsSUFBSSxDQUFvQjtJQUV6QyxPQUFPLENBQU07SUFFTCxPQUFPLEdBQThCLEVBQUUsQ0FBQztJQUN4QyxhQUFhLEdBQVksS0FBSyxDQUFDO0lBQy9CLE1BQU0sR0FBRyxFQUFFLENBQUM7SUFFcEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQXFCRztJQUNILElBQXVCLE1BQU0sQ0FBQyxNQUFpQztRQUM3RCxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMs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LGFBQWE7WUFVRSxLQUFLO2tCQUExQixLQUFLO21CQUFDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDdXJyZW5jeVBpcGUsIERhdGVQaXBlLCBEZWNpbWFsUGlwZSwgVGl0bGVDYXNlUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBEaXJlY3RpdmUsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFBvVGltZVBpcGUgfSBmcm9tICcuLi8uLi8uLi9waXBlcy9wby10aW1lL3BvLXRpbWUucGlwZSc7XG5pbXBvcnQgeyBjb252ZXJ0VG9Cb29sZWFuLCBpc1R5cGVvZiwgc29ydEZpZWxkcyB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL3V0aWwnO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBjYXRjaEVycm9yLCBtYXAsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBnZXRHcmlkQ29sdW1uc0NsYXNzZXMsIGlzVmlzaWJsZUZpZWxkIH0gZnJvbSAnLi4vcG8tZHluYW1pYy51dGlsJztcbmltcG9ydCB7IFBvRHluYW1pY1ZpZXdGaWVsZCB9IGZyb20gJy4vcG8tZHluYW1pYy12aWV3LWZpZWxkLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb0R5bmFtaWNWaWV3U2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvcG8tZHluYW1pYy12aWV3LnNlcnZpY2UnO1xuaW1wb3J0IHsgUG9Db21ib0ZpbHRlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9wby1maWVsZC9wby1jb21iby9wby1jb21iby1maWx0ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBQb011bHRpc2VsZWN0RmlsdGVyU2VydmljZSB9IGZyb20gJy4uLy4uL3BvLWZpZWxkL3BvLW11bHRpc2VsZWN0L3BvLW11bHRpc2VsZWN0LWZpbHRlci5zZXJ2aWNlJztcbmltcG9ydCB7IFBvRHluYW1pY1NoYXJlZEJhc2UgfSBmcm9tICcuLi9zaGFyZWQvcG8tZHluYW1pYy1zaGFyZWQtYmFzZSc7XG5cbi8qKlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICpcbiAqIENvbXBvbmVudGUgcGFyYSBsaXN0YXIgZGFkb3MgZGluYW1pY2FtZW50ZSBhIHBhcnRpciBkZSB1bWEgbGlzdGEgZGUgb2JqZXRvcy5cbiAqXG4gKiA+IFBvciBwYWRyw6NvIGVzc2UgY29tcG9uZW50ZSBjcmlhIGBwby1pbmZvYCBwYXJhIGV4aWJpw6fDo28sIMOpIHBvc3PDrXZlbCBjcmlhciBgcG8tdGFnYCBwYXNzYW5kbyBhIHByb3ByaWVkYWRlIHsgdGFnOiB0cnVlIH0uXG4gKlxuICovXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBjbGFzcyBQb0R5bmFtaWNWaWV3QmFzZUNvbXBvbmVudCBleHRlbmRzIFBvRHluYW1pY1NoYXJlZEJhc2Uge1xuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBQb3NzaWJpbGl0YSBleGVjdXRhciB1bWEgZnVuw6fDo28gcXVhbmRvIG8gY29tcG9uZW50ZSDDqSBpbmljaWFsaXphZG8uXG4gICAqXG4gICAqIEEgcHJvcHJpZWRhZGUgYWNlaXRhIG9zIHNlZ3VpbnRlcyB0aXBvczpcbiAgICogLSAqKlN0cmluZyoqOiBFbmRwb2ludCB1c2FkbyBwZWxvIGNvbXBvbmVudGUgcGFyYSByZXF1aXNpw6fDo28gdmlhIGBQT1NUYC5cbiAgICogLSAqKkZ1bmN0aW9uKio6IE3DqXRvZG8gcXVlIHNlcsOhIGV4ZWN1dGFkbyBuYSBpbmljaWFsaXphw6fDo28gZG8gY29tcG9uZW50ZS5cbiAgICpcbiAgICogUGFyYSBvcyBkb2lzIHRpcG9zIGRlIHV0aWxpemHDp8OjbyBkYSBwcm9wcmllZGFkZSBlc3BlcmEtc2UgbyBzZWd1aW50ZSByZXRvcm5vOlxuICAgKlxuICAgKiBgYGBcbiAgICoge1xuICAgKiAgIHZhbHVlOiB7XG4gICAqICAgICBjbnBqOiAnKioqKioqKioqKioqKionLCAvLyBhbHRlcmEgdmFsb3IgZG8gY2FtcG9cbiAgICogICAgIHVwZGF0ZWQ6IChuZXcgRGF0ZSgpKS50b1N0cmluZygpIC8vIGF0cmlidWkgdmFsb3IgYW8gY2FtcG8gbm92b1xuICAgKiAgIH0sXG4gICAqICAgZmllbGRzOiBbXG4gICAqICAgICB7IHByb3BlcnR5OiAndXBkYXRlZCcsIHRhZzogdHJ1ZSB9IC8vIGluY2x1aSBjYW1wbyBub3ZvXG4gICAqICAgXVxuICAgKiB9XG4gICAqIGBgYFxuICAgKiA+ICoqdmFsdWUqKjogYW55ID0gYXRyaWJ1aSBub3ZvIHZhbG9yIGRvIG1vZGVsLlxuICAgKlxuICAgKiA+ICoqZmllbGRzKio6IGBBcnJheTxQb0R5bmFtaWNWaWV3RmllbGQ+YCA9IExpc3RhIGRlIGNhbXBvcyBxdWUgZGVzZWphIGFsdGVyYXIgYXMgcHJvcHJpZWRhZGVzLFxuICAgKiBjYXNvIGVudmlhciB1bSBjYW1wbyBhIG1haXMgc2Vyw6EgY3JpYWRvIHVtIG5vdm8gY2FtcG8uXG4gICAqXG4gICAqIC0gUGFyYSBlc2NvbmRlci9yZW1vdmVyIGNhbXBvcyBwcmVjaXNhIGluZm9ybWFyIG5vIGZpZWxkIGEgcHJvcHJpZWRhZGUgYHZpc2libGUgPSBmYWxzZWAuXG4gICAqXG4gICAqL1xuICBASW5wdXQoJ3AtbG9hZCcpIGxvYWQ6IHN0cmluZyB8IEZ1bmN0aW9uO1xuXG4gIHNlcnZpY2U6IGFueTtcblxuICBwcml2YXRlIF9maWVsZHM6IEFycmF5PFBvRHluYW1pY1ZpZXdGaWVsZD4gPSBbXTtcbiAgcHJpdmF0ZSBfc2hvd0FsbFZhbHVlOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX3ZhbHVlID0ge307XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogTGlzdGEgZGUgb2JqZXRvcyBxdWUgaW1wbGVtZW50YW0gYSBpbnRlcmZhY2UgYFBvRHluYW1pY1ZpZXdgLlxuICAgKlxuICAgKiA+IEV4OiBgWyB7IHByb3BlcnR5OiAnYWdlJyB9IF1gXG4gICAqXG4gICAqIFJlZ3JhcyBkZSB0aXBhZ2VtIGUgZm9ybWF0YcOnw6NvIGRvcyB2YWxvcmVzIGV4aWJpZG9zOlxuICAgKlxuICAgKiAtIENhc28gbyAqdHlwZSogaW5mb3JtYWRvIHNlamEgKmN1cnJlbmN5KiBlIG7Do28gc2VqYSBpbmZvcm1hZG8gbyAqZm9ybWF0KiBvIG1lc21vIHJlY2ViZSBcIidCUkwnLCAnc3ltYm9sJywgJzEuMi0yJ1wiXG4gICAqIGNvbW8gZm9ybWF0byBwYWRyw6NvLlxuICAgKiAtIENhc28gbyAqdHlwZSogaW5mb3JtYWRvIHNlamEgKmRhdGUqIGUgbsOjbyBzZWphIGluZm9ybWFkbyBvICpmb3JtYXQqIG8gbWVzbW8gcmVjZWJlICdkZC9NTS95eXl5JyBjb21vIGZvcm1hdG8gcGFkcsOjby5cbiAgICogLSBDYXNvIG8gKnR5cGUqIGluZm9ybWFkbyBzZWphICpkYXRlVGltZSogZSBuw6NvIHNlamEgaW5mb3JtYWRvIG8gKmZvcm1hdCogbyBtZXNtbyByZWNlYmUgJ2RkL01NL3l5eXkgSEg6bW06c3MnIGNvbW8gZm9ybWF0byBwYWRyw6NvLlxuICAgKiAtIENhc28gbyAqdHlwZSogaW5mb3JtYWRvIHNlamEgKm51bWJlciogZSBuw6NvIHNlamEgaW5mb3JtYWRvIG8gKmZvcm1hdCogbyBtZXNtbyBuw6NvIHNlcsOhIGZvcm1hdGFkby5cbiAgICogLSBDYXNvIG8gKnR5cGUqIGluZm9ybWFkbyBzZWphICp0aW1lKiBlIG7Do28gc2VqYSBpbmZvcm1hZG8gbyAqZm9ybWF0KiBvIG1lc21vIHJlY2ViZSAnSEg6bW06c3MuZmZmZmZmJyBjb21vIGZvcm1hdG8gcGFkcsOjby5cbiAgICpcbiAgICogPiBBcyBwcm9wcmllZGFkZXMgaW5mb3JtYWRhcyBzZXLDo28gZXhpYmlkYXMgbWVzbW8gbsOjbyBjb250ZW5kbyB2YWxvciBkZSByZWZlcsOqbmNpYSBubyBvYmpldG8gZGEgcHJvcHJpZWRhZGUgYHAtdmFsdWVgLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgW11gXG4gICAqL1xuICBASW5wdXQoJ3AtZmllbGRzJykgc2V0IGZpZWxkcyhmaWVsZHM6IEFycmF5PFBvRHluYW1pY1ZpZXdGaWVsZD4pIHtcbiAgICB0aGlzLl9maWVsZHMgPSBBcnJheS5pc0FycmF5KGZpZWxkcykgPyBbLi4uZmllbGRzXSA6IFtdO1xuICB9XG5cbiAgZ2V0IGZpZWxkcygpIHtcbiAgICByZXR1cm4gdGhpcy5fZmllbGRzO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogSW5kaWNhIHNlIGV4aWJpcsOhIHRvZGFzIGFzIGluZm9ybWHDp8O1ZXMgY29udGlkYXMgZGVudHJvIGRvIG9iamV0byBpbmZvcm1hZG8gbmEgcHJvcHJpZWRhZGUgYHAtdmFsdWVgLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoJ3Atc2hvdy1hbGwtdmFsdWUnKSBzZXQgc2hvd0FsbFZhbHVlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fc2hvd0FsbFZhbHVlID0gY29udmVydFRvQm9vbGVhbih2YWx1ZSk7XG4gIH1cblxuICBnZXQgc2hvd0FsbFZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLl9zaG93QWxsVmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBQZXJtaXRlIGEgcXVlYnJhIGRlIGxpbmhhIG5vIHRleHRvIGRvIGBwLXZhbHVlYCwgYXBsaWNhbmRvLWEgb25kZSBow6EgYFxcbmAuXG4gICAqXG4gICAqIGBgYFxuICAgKiA8cG8tZHluYW1pYy12aWV3XG4gICAqICAgW3AtdmFsdWVdPVwieyBkZXNjcmlwdGlvbjogJ1ByaW1laXJhIGxpbmhhXFxuU2VndW5kYSBsaW5oYScgfVwiXG4gICAqICAgW3AtdGV4dC13cmFwXT1cInRydWVcIlxuICAgKiA+PC9wby1keW5hbWljLXZpZXc+XG4gICAqIGBgYFxuICAgKlxuICAgKiBTYcOtZGE6XG4gICAqIGBgYFxuICAgKiBQcmltZWlyYSBsaW5oYVxuICAgKiBTZWd1bmRhIGxpbmhhXG4gICAqIGBgYFxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoJ3AtdGV4dC13cmFwJykgdGV4dFdyYXA6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIE9iamV0byBxdWUgc2Vyw6EgdXRpbGl6YWRvIHBhcmEgZXhpYmlyIGFzIGluZm9ybWHDp8O1ZXMgZGluw6JtaWNhcywgbyB2YWxvciBzZXLDoSByZWN1cGVyYWRvIGF0cmF2w6lzIGRvIGF0cmlidXRvICpwcm9wZXJ0eSpcbiAgICogZG9zIG9iamV0b3MgY29udGlkb3MgbmEgcHJvcHJpZGFkZSBgcC1maWVsZHNgLlxuICAgKlxuICAgKiA+IEV4OiBgeyBhZ2U6ICczNScgfWBcbiAgICovXG4gIEBJbnB1dCgncC12YWx1ZScpIHNldCB2YWx1ZSh2YWx1ZTogb2JqZWN0KSB7XG4gICAgdGhpcy5fdmFsdWUgPSB2YWx1ZSAmJiBpc1R5cGVvZih2YWx1ZSwgJ29iamVjdCcpID8gdmFsdWUgOiB7fTtcbiAgfVxuXG4gIGdldCB2YWx1ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGN1cnJlbmN5UGlwZTogQ3VycmVuY3lQaXBlLFxuICAgIHByaXZhdGUgZGF0ZVBpcGU6IERhdGVQaXBlLFxuICAgIHByaXZhdGUgZGVjaW1hbFBpcGU6IERlY2ltYWxQaXBlLFxuICAgIHByaXZhdGUgdGltZVBpcGU6IFBvVGltZVBpcGUsXG4gICAgcHJpdmF0ZSB0aXRsZUNhc2VQaXBlOiBUaXRsZUNhc2VQaXBlLFxuICAgIHByb3RlY3RlZCBkeW5hbWljVmlld1NlcnZpY2U6IFBvRHluYW1pY1ZpZXdTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBjb21ib0ZpbHRlclNlcnZpY2U6IFBvQ29tYm9GaWx0ZXJTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBtdWx0aXNlbGVjdEZpbHRlclNlcnZpY2U6IFBvTXVsdGlzZWxlY3RGaWx0ZXJTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0RmllbGRPcmRlclJldHJvYWN0aXZlKHBvc2l0aW9uOiBudW1iZXIsIGluZGV4OiBudW1iZXIgPSAxKTogbnVtYmVyIHtcbiAgICBpZiAocG9zaXRpb24gPT09IGluZGV4KSB7XG4gICAgICByZXR1cm4gcG9zaXRpb247XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmZpZWxkcy5maW5kSW5kZXgoZmllbGQgPT4gZmllbGQub3JkZXIgPT09IGluZGV4KSA+IC0xXG4gICAgICA/IHRoaXMuZ2V0RmllbGRPcmRlclJldHJvYWN0aXZlKHBvc2l0aW9uLCBpbmRleCArIDEpXG4gICAgICA6IGluZGV4O1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldEZpZWxkT3JkZXIoZmllbGQ6IFBvRHluYW1pY1ZpZXdGaWVsZCwgaW5kZXg6IG51bWJlcik6IG51bWJlciB7XG4gICAgY29uc3QgcG9zaXRpb24gPSB0aGlzLmdldEZpZWxkT3JkZXJSZXRyb2FjdGl2ZShpbmRleCArIDEpO1xuICAgIHJldHVybiB0aGlzLmZpZWxkcy5maW5kSW5kZXgoZSA9PiBlLm9yZGVyID09PSBwb3NpdGlvbikgPiAtMSA/IHRoaXMuZ2V0RmllbGRPcmRlcihmaWVsZCwgcG9zaXRpb24pIDogcG9zaXRpb247XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0Q29uZmlndXJlZEZpZWxkcyh1c2VTZWFyY2hTZXJ2aWNlID0gdHJ1ZSkge1xuICAgIGNvbnN0IG5ld0ZpZWxkcyA9IFtdO1xuXG4gICAgdGhpcy5maWVsZHMuZm9yRWFjaCgoZmllbGQsIGluZGV4KSA9PiB7XG4gICAgICBmaWVsZC5vcmRlciA9IGZpZWxkLm9yZGVyIHx8IHRoaXMuZ2V0RmllbGRPcmRlcihmaWVsZCwgaW5kZXgpO1xuXG4gICAgICBpZiAoIWlzVmlzaWJsZUZpZWxkKGZpZWxkKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICghZmllbGQuc2VhcmNoU2VydmljZSAmJiAhZmllbGQub3B0aW9uc1NlcnZpY2UpIHtcbiAgICAgICAgbmV3RmllbGRzLnB1c2godGhpcy5jcmVhdGVGaWVsZChmaWVsZCkpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGhhc1ZhbHVlID1cbiAgICAgICAgdGhpcy52YWx1ZVtmaWVsZC5wcm9wZXJ0eV0/Lmxlbmd0aCB8fFxuICAgICAgICAoIUFycmF5LmlzQXJyYXkodGhpcy52YWx1ZVtmaWVsZC5wcm9wZXJ0eV0pICYmIHRoaXMudmFsdWVbZmllbGQucHJvcGVydHldICYmIHVzZVNlYXJjaFNlcnZpY2UpIHx8XG4gICAgICAgIGZpZWxkLmNvbnRhaW5lcjtcblxuICAgICAgaWYgKGhhc1ZhbHVlKSB7XG4gICAgICAgIGNvbnN0IF9maWVsZCA9IHRoaXMucmV0dXJuVmFsdWVzKHsgLi4uZmllbGQgfSwgJycpO1xuICAgICAgICBuZXdGaWVsZHMucHVzaChfZmllbGQpO1xuXG4gICAgICAgIGlmIChmaWVsZC5zZWFyY2hTZXJ2aWNlKSB7XG4gICAgICAgICAgaWYgKHR5cGVvZiBmaWVsZC5zZWFyY2hTZXJ2aWNlID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgdGhpcy5zZXJ2aWNlID0gZmllbGQuc2VhcmNoU2VydmljZSBhcyBQb0R5bmFtaWNWaWV3U2VydmljZTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBmaWVsZC5zZWFyY2hTZXJ2aWNlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgdGhpcy5zZXJ2aWNlID0gdGhpcy5keW5hbWljVmlld1NlcnZpY2U7XG4gICAgICAgICAgICB0aGlzLnNlcnZpY2Uuc2V0Q29uZmlnKGZpZWxkLnNlYXJjaFNlcnZpY2UpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChmaWVsZC5vcHRpb25zU2VydmljZSkge1xuICAgICAgICAgIGlmIChmaWVsZC5vcHRpb25zTXVsdGkpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgZmllbGQub3B0aW9uc1NlcnZpY2UgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICAgIHRoaXMuc2VydmljZSA9IGZpZWxkLm9wdGlvbnNTZXJ2aWNlIGFzIFBvTXVsdGlzZWxlY3RGaWx0ZXJTZXJ2aWNlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGhpcy5zZXJ2aWNlID0gdGhpcy5tdWx0aXNlbGVjdEZpbHRlclNlcnZpY2U7XG4gICAgICAgICAgICAgIHRoaXMuc2VydmljZS5jb25maWdQcm9wZXJ0aWVzKGZpZWxkLm9wdGlvbnNTZXJ2aWNlLCBmaWVsZC5maWVsZExhYmVsLCBmaWVsZC5maWVsZFZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBmaWVsZC5vcHRpb25zU2VydmljZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgdGhpcy5zZXJ2aWNlID0gZmllbGQub3B0aW9uc1NlcnZpY2UgYXMgUG9Db21ib0ZpbHRlclNlcnZpY2U7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLnNlcnZpY2UgPSB0aGlzLmNvbWJvRmlsdGVyU2VydmljZTtcbiAgICAgICAgICAgICAgdGhpcy5zZXJ2aWNlLmNvbmZpZ1Byb3BlcnRpZXMoZmllbGQub3B0aW9uc1NlcnZpY2UsIGZpZWxkLmZpZWxkTGFiZWwsIGZpZWxkLmZpZWxkVmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY3JlYXRlRmllbGRXaXRoU2VydmljZShmaWVsZCwgbmV3RmllbGRzLCBfZmllbGQpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgX3NvcnRlZEZpZWxkID0gc29ydEZpZWxkcyhuZXdGaWVsZHMpO1xuICAgIHRoaXMuZW5zdXJlRmllbGRIYXNDb250YWluZXIoX3NvcnRlZEZpZWxkKTtcblxuICAgIHJldHVybiBfc29ydGVkRmllbGQ7XG4gIH1cblxuICAvLyByZXRvcm5hIGZpZWxkcyBsaWdhZG8gYW8gdmFsdWUgbWFpcyBvcyBhdHJpYnV0b3MgZG8gdmFsdWUgcXVlIG7Do28gcG9zc3VpYW0gZmllbGRzLlxuICBwcm90ZWN0ZWQgZ2V0TWVyZ2VkRmllbGRzKCkge1xuICAgIGNvbnN0IG1lcmdlZEZpZWxkcyA9IFsuLi50aGlzLmdldENvbmZpZ3VyZWRGaWVsZHMoKV07XG5cbiAgICB0aGlzLmdldFZhbHVlRmllbGRzKCkuZm9yRWFjaCh2YWx1ZUZpZWxkID0+IHtcbiAgICAgIGNvbnN0IGZpZWxkSW5kZXggPSBtZXJnZWRGaWVsZHMuZmluZEluZGV4KGZpZWxkID0+IGZpZWxkLnByb3BlcnR5ID09PSB2YWx1ZUZpZWxkLnByb3BlcnR5KTtcbiAgICAgIGNvbnN0IHByb3BlcnR5ID0gdmFsdWVGaWVsZC5wcm9wZXJ0eTtcblxuICAgICAgaWYgKGZpZWxkSW5kZXggPT09IC0xKSB7XG4gICAgICAgIG1lcmdlZEZpZWxkcy5wdXNoKHRoaXMuY3JlYXRlRmllbGQoeyBwcm9wZXJ0eSB9KSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbWVyZ2VkRmllbGRzO1xuICB9XG5cbiAgLy8gcmV0b3JuYSBvIG9iamV0byB2YWx1ZSBjb21vIGZpZWxkcy5cbiAgcHJvdGVjdGVkIGdldFZhbHVlRmllbGRzKCkge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLnZhbHVlKS5tYXAocHJvcGVydHkgPT4gdGhpcy5jcmVhdGVGaWVsZCh7IHByb3BlcnR5IH0pKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlRmllbGQoZmllbGQ6IFBvRHluYW1pY1ZpZXdGaWVsZCkge1xuICAgIGNvbnN0IHByb3BlcnR5ID0gZmllbGQucHJvcGVydHk7XG4gICAgbGV0IHZhbHVlO1xuICAgIGlmIChmaWVsZC5pc0FycmF5T3JPYmplY3QgJiYgdGhpcy52YWx1ZVtwcm9wZXJ0eV0pIHtcbiAgICAgIHZhbHVlID0gdGhpcy50cmFuc2Zvcm1BcnJheVZhbHVlKHRoaXMudmFsdWVbcHJvcGVydHldLCBmaWVsZCk7XG4gICAgfSBlbHNlIGlmIChmaWVsZC5maWVsZExhYmVsKSB7XG4gICAgICB2YWx1ZSA9IHRoaXMudHJhbnNmb3JtRmllbGRMYWJlbChwcm9wZXJ0eSwgZmllbGQpO1xuICAgIH1cblxuICAgIGlmICghdmFsdWUpIHtcbiAgICAgIHZhbHVlID0gdGhpcy50cmFuc2Zvcm1WYWx1ZShmaWVsZC50eXBlLCB0aGlzLnZhbHVlW3Byb3BlcnR5XSwgZmllbGQuZm9ybWF0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5yZXR1cm5WYWx1ZXMoZmllbGQsIHZhbHVlKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlRmllbGRXaXRoU2VydmljZShmaWVsZDogUG9EeW5hbWljVmlld0ZpZWxkLCBuZXdGaWVsZHM/LCBvbGRGaWVsZD8pIHtcbiAgICBjb25zdCBwcm9wZXJ0eSA9IGZpZWxkLnByb3BlcnR5O1xuXG4gICAgdGhpcy5zZWFyY2hCeUlkKHRoaXMudmFsdWVbcHJvcGVydHldLCBmaWVsZCkuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlID0gcmVzcG9uc2U7XG4gICAgICBjb25zdCBhbGxWYWx1ZXMgPSB0aGlzLnJldHVyblZhbHVlcyhmaWVsZCwgdmFsdWUpO1xuICAgICAgY29uc3Qgb2xkRmllbGRJbmRleCA9IG5ld0ZpZWxkcy5pbmRleE9mKG5ld0ZpZWxkcy5maW5kKGZpZWxkID0+IGZpZWxkID09PSBvbGRGaWVsZCkpO1xuICAgICAgbmV3RmllbGRzLnNwbGljZShvbGRGaWVsZEluZGV4LCAxLCBhbGxWYWx1ZXMpO1xuICAgICAgc29ydEZpZWxkcyhuZXdGaWVsZHMpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSByZXR1cm5WYWx1ZXMoZmllbGQ6IFBvRHluYW1pY1ZpZXdGaWVsZCwgdmFsdWU6IGFueSkge1xuICAgIGNvbnN0IHByb3BlcnR5ID0gZmllbGQucHJvcGVydHk7XG4gICAgY29uc3QgY2xhc3Nlc0dyaWRDb2x1bW5zID0gZ2V0R3JpZENvbHVtbnNDbGFzc2VzKFxuICAgICAgZmllbGQuZ3JpZENvbHVtbnMsXG4gICAgICBmaWVsZC5vZmZzZXRDb2x1bW5zLFxuICAgICAge1xuICAgICAgICBzbUdyaWQ6IGZpZWxkLmdyaWRTbUNvbHVtbnMsXG4gICAgICAgIG1kR3JpZDogZmllbGQuZ3JpZE1kQ29sdW1ucyxcbiAgICAgICAgbGdHcmlkOiBmaWVsZC5ncmlkTGdDb2x1bW5zLFxuICAgICAgICB4bEdyaWQ6IGZpZWxkLmdyaWRYbENvbHVtbnNcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHNtT2Zmc2V0OiBmaWVsZC5vZmZzZXRTbUNvbHVtbnMsXG4gICAgICAgIG1kT2Zmc2V0OiBmaWVsZC5vZmZzZXRNZENvbHVtbnMsXG4gICAgICAgIGxnT2Zmc2V0OiBmaWVsZC5vZmZzZXRMZ0NvbHVtbnMsXG4gICAgICAgIHhsT2Zmc2V0OiBmaWVsZC5vZmZzZXRYbENvbHVtbnNcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHNtUHVsbDogZmllbGQuZ3JpZFNtUHVsbCxcbiAgICAgICAgbWRQdWxsOiBmaWVsZC5ncmlkTWRQdWxsLFxuICAgICAgICBsZ1B1bGw6IGZpZWxkLmdyaWRMZ1B1bGwsXG4gICAgICAgIHhsUHVsbDogZmllbGQuZ3JpZFhsUHVsbFxuICAgICAgfVxuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgcHJvcGVydHksXG4gICAgICB2YWx1ZSxcbiAgICAgIGxhYmVsOiB0aGlzLnRpdGxlQ2FzZVBpcGUudHJhbnNmb3JtKHByb3BlcnR5KSxcbiAgICAgIGNzc0NsYXNzOiBjbGFzc2VzR3JpZENvbHVtbnMsXG4gICAgICAuLi5maWVsZFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHNlYXJjaEJ5SWQodmFsdWU6IGFueSwgZmllbGQ6IFBvRHluYW1pY1ZpZXdGaWVsZCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHZhbHVlID0gdmFsdWUudHJpbSgpO1xuICAgIH1cblxuICAgIGlmICh2YWx1ZSAhPT0gJycpIHtcbiAgICAgIGlmIChmaWVsZC5vcHRpb25zTXVsdGkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZVxuICAgICAgICAgIC5nZXRPYmplY3RzQnlWYWx1ZXModmFsdWUsIGZpZWxkLnBhcmFtcylcbiAgICAgICAgICAucGlwZShtYXAocmVzID0+IHRoaXMudHJhbnNmb3JtQXJyYXlWYWx1ZShyZXMsIGZpZWxkKSkpXG4gICAgICAgICAgLnBpcGUoY2F0Y2hFcnJvcigoKSA9PiBvZihudWxsKSkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZVxuICAgICAgICAgIC5nZXRPYmplY3RCeVZhbHVlKHZhbHVlLCBmaWVsZC5wYXJhbXMpXG4gICAgICAgICAgLnBpcGUobWFwKHJlcyA9PiB0aGlzLnRyYW5zZm9ybUFycmF5VmFsdWUocmVzLCBmaWVsZCkpKVxuICAgICAgICAgIC5waXBlKGNhdGNoRXJyb3IoKCkgPT4gb2YobnVsbCkpKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdHJhbnNmb3JtQXJyYXlWYWx1ZSh2YWx1ZVByb3BlcnR5OiBhbnksIGZpZWxkOiBQb0R5bmFtaWNWaWV3RmllbGQpIHtcbiAgICBjb25zdCB2YWx1ZUFycmF5ID0gQXJyYXkuaXNBcnJheSh2YWx1ZVByb3BlcnR5KSA/IHZhbHVlUHJvcGVydHkgOiBbdmFsdWVQcm9wZXJ0eV07XG4gICAgbGV0IGxhYmVsczogQXJyYXk8c3RyaW5nPjtcblxuICAgIGlmIChBcnJheS5pc0FycmF5KGZpZWxkLmZvcm1hdCkpIHtcbiAgICAgIGxhYmVscyA9IHZhbHVlQXJyYXkubWFwKG9iamVjdERhdGEgPT4gdGhpcy5mb3JtYXRGaWVsZChvYmplY3REYXRhLCBmaWVsZC5mb3JtYXQpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgYXJyYXlXaXRoTGFiZWwgPSB2YWx1ZUFycmF5Lm1hcChpdGVtID0+ICh7XG4gICAgICAgIHZhbHVlOiBpdGVtW2ZpZWxkLmZpZWxkVmFsdWVdIHx8IGl0ZW0udmFsdWUsXG4gICAgICAgIGxhYmVsOiBpdGVtW2ZpZWxkLmZpZWxkTGFiZWxdIHx8IGl0ZW0ubGFiZWxcbiAgICAgIH0pKTtcblxuICAgICAgbGFiZWxzID0gYXJyYXlXaXRoTGFiZWwubWFwKG9wdGlvblZhbHVlID0+IHtcbiAgICAgICAgaWYgKG9wdGlvblZhbHVlLmxhYmVsKSB7XG4gICAgICAgICAgY29uc3QgbGFiZWxUcmFuZm9ybWVkID0gdGhpcy50cmFuc2Zvcm1WYWx1ZShmaWVsZC50eXBlLCBvcHRpb25WYWx1ZS5sYWJlbCwgZmllbGQuZm9ybWF0KTtcbiAgICAgICAgICBpZiAoZmllbGQuY29uY2F0TGFiZWxWYWx1ZSAmJiBvcHRpb25WYWx1ZS52YWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIGAke2xhYmVsVHJhbmZvcm1lZH0gLSAke29wdGlvblZhbHVlLnZhbHVlfWA7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBsYWJlbFRyYW5mb3JtZWQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAobGFiZWxzWzBdICE9PSB1bmRlZmluZWQgJiYgbGFiZWxzLmpvaW4oKSkge1xuICAgICAgcmV0dXJuIGxhYmVscy5qb2luKCcsICcpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YWx1ZVByb3BlcnR5ID0gJyc7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdHJhbnNmb3JtRmllbGRMYWJlbChwcm9wZXJ0eTogc3RyaW5nLCBmaWVsZDogUG9EeW5hbWljVmlld0ZpZWxkKSB7XG4gICAgaWYgKGZpZWxkLmNvbmNhdExhYmVsVmFsdWUgJiYgZmllbGQuZmllbGRMYWJlbCAmJiBmaWVsZC5maWVsZFZhbHVlICYmICFmaWVsZC5pc0FycmF5T3JPYmplY3QpIHtcbiAgICAgIGNvbnN0IHRyYW5zZm9ybWVkVmFsdWUgPSB0aGlzLnRyYW5zZm9ybVZhbHVlKGZpZWxkLnR5cGUsIHRoaXMudmFsdWVbZmllbGQuZmllbGRMYWJlbF0sIGZpZWxkLmZvcm1hdCk7XG4gICAgICByZXR1cm4gYCR7dHJhbnNmb3JtZWRWYWx1ZX0gLSAke3RoaXMudmFsdWVbZmllbGQuZmllbGRWYWx1ZV19YDtcbiAgICB9XG5cbiAgICBpZiAoZmllbGQuZmllbGRMYWJlbCAmJiAhZmllbGQuY29uY2F0TGFiZWxWYWx1ZSAmJiAhZmllbGQuaXNBcnJheU9yT2JqZWN0KSB7XG4gICAgICB0aGlzLnZhbHVlW3Byb3BlcnR5XSA9IHRoaXMudmFsdWVbZmllbGQuZmllbGRMYWJlbF07XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBwcml2YXRlIHRyYW5zZm9ybVZhbHVlKHR5cGU6IHN0cmluZywgdmFsdWUsIGZvcm1hdCkge1xuICAgIGxldCB0cmFuc2Zvcm1lZFZhbHVlID0gdmFsdWU7XG5cbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgJ2N1cnJlbmN5JzpcbiAgICAgICAgdHJhbnNmb3JtZWRWYWx1ZSA9IHRoaXMuY3VycmVuY3lQaXBlLnRyYW5zZm9ybSh2YWx1ZSwgZm9ybWF0IHx8ICdCUkwnLCAnc3ltYm9sJywgJzEuMi0yJyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZGF0ZSc6XG4gICAgICAgIHRyYW5zZm9ybWVkVmFsdWUgPSB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybSh2YWx1ZSwgZm9ybWF0IHx8ICdkZC9NTS95eXl5Jyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZGF0ZVRpbWUnOlxuICAgICAgICB0cmFuc2Zvcm1lZFZhbHVlID0gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0odmFsdWUsIGZvcm1hdCB8fCAnZGQvTU0veXl5eSBISDptbTpzcycpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ251bWJlcic6XG4gICAgICAgIHRyYW5zZm9ybWVkVmFsdWUgPSB0aGlzLmRlY2ltYWxQaXBlLnRyYW5zZm9ybSh2YWx1ZSwgZm9ybWF0KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd0aW1lJzpcbiAgICAgICAgdHJhbnNmb3JtZWRWYWx1ZSA9IHRoaXMudGltZVBpcGUudHJhbnNmb3JtKHZhbHVlLCBmb3JtYXQgfHwgJ0hIOm1tOnNzLmZmZmZmZicpO1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICByZXR1cm4gdHJhbnNmb3JtZWRWYWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgZm9ybWF0RmllbGQob2JqZWN0U2VsZWN0ZWQsIHByb3BlcnRpZXMpIHtcbiAgICBsZXQgZm9ybWF0dGVkRmllbGQ7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkocHJvcGVydGllcykpIHtcbiAgICAgIGZvciAoY29uc3QgcHJvcGVydHkgb2YgcHJvcGVydGllcykge1xuICAgICAgICBpZiAob2JqZWN0U2VsZWN0ZWQgJiYgb2JqZWN0U2VsZWN0ZWRbcHJvcGVydHldKSB7XG4gICAgICAgICAgaWYgKCFmb3JtYXR0ZWRGaWVsZCkge1xuICAgICAgICAgICAgZm9ybWF0dGVkRmllbGQgPSBvYmplY3RTZWxlY3RlZFtwcm9wZXJ0eV07XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZvcm1hdHRlZEZpZWxkICs9ICcgLSAnICsgb2JqZWN0U2VsZWN0ZWRbcHJvcGVydHldO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZm9ybWF0dGVkRmllbGQ7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -67,6 +67,7 @@ function PoDynamicViewComponent_ng_template_5_Template(rf, ctx) { if (rf & 1) {
|
|
|
67
67
|
} if (rf & 2) {
|
|
68
68
|
const field_r10 = ctx.$implicit;
|
|
69
69
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
70
|
+
i0.ɵɵclassProp("po-info-value-pre", ctx_r0.textWrap && ctx_r0.containsLineBreak(ctx_r0.setFieldValue(field_r10)));
|
|
70
71
|
i0.ɵɵproperty("ngClass", field_r10.cssClass)("p-label", field_r10.label)("p-value", ctx_r0.setFieldValue(field_r10));
|
|
71
72
|
} }
|
|
72
73
|
function PoDynamicViewComponent_ng_template_7_Template(rf, ctx) { if (rf & 1) {
|
|
@@ -144,6 +145,9 @@ export class PoDynamicViewComponent extends PoDynamicViewBaseComponent {
|
|
|
144
145
|
return field.value;
|
|
145
146
|
}
|
|
146
147
|
}
|
|
148
|
+
containsLineBreak(value) {
|
|
149
|
+
return value && value.includes('\n');
|
|
150
|
+
}
|
|
147
151
|
async getValuesAndFieldsFromLoad() {
|
|
148
152
|
let valueAndFieldsFromLoad;
|
|
149
153
|
if (typeof this.load === 'string') {
|
|
@@ -188,14 +192,14 @@ export class PoDynamicViewComponent extends PoDynamicViewBaseComponent {
|
|
|
188
192
|
}
|
|
189
193
|
static ɵfac = function PoDynamicViewComponent_Factory(t) { return new (t || PoDynamicViewComponent)(i0.ɵɵdirectiveInject(i1.CurrencyPipe), i0.ɵɵdirectiveInject(i1.DatePipe), i0.ɵɵdirectiveInject(i1.DecimalPipe), i0.ɵɵdirectiveInject(i2.PoTimePipe), i0.ɵɵdirectiveInject(i1.TitleCasePipe), i0.ɵɵdirectiveInject(i3.PoDynamicViewService), i0.ɵɵdirectiveInject(i4.PoComboFilterService), i0.ɵɵdirectiveInject(i5.PoMultiselectFilterService)); };
|
|
190
194
|
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PoDynamicViewComponent, selectors: [["po-dynamic-view"]], features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature], decls: 11, vars: 1, consts: [["poContent", ""], ["poContentContainer", ""], ["poInfo", ""], ["poTag", ""], ["poImage", ""], ["class", "po-row", 3, "po-dynamic", 4, "ngIf"], [1, "po-row"], [4, "ngTemplateOutlet", "ngTemplateOutletContext"], ["ngFor", "", 3, "ngForOf"], ["class", "po-sm-12", 3, "p-label", 4, "ngIf"], [1, "po-sm-12", 3, "p-label"], [3, "p-fields", "p-content"], [3, "ngClass", "p-label", "p-value"], [3, "ngClass", "p-color", "p-icon", "p-label", "p-text-color", "p-value"], [3, "p-alt", "p-height", "p-src"]], template: function PoDynamicViewComponent_Template(rf, ctx) { if (rf & 1) {
|
|
191
|
-
i0.ɵɵtemplate(0, PoDynamicViewComponent_div_0_Template, 2, 6, "div", 5)(1, PoDynamicViewComponent_ng_template_1_Template, 1, 1, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor)(3, PoDynamicViewComponent_ng_template_3_Template, 1, 2, "ng-template", null, 1, i0.ɵɵtemplateRefExtractor)(5, PoDynamicViewComponent_ng_template_5_Template, 1,
|
|
195
|
+
i0.ɵɵtemplate(0, PoDynamicViewComponent_div_0_Template, 2, 6, "div", 5)(1, PoDynamicViewComponent_ng_template_1_Template, 1, 1, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor)(3, PoDynamicViewComponent_ng_template_3_Template, 1, 2, "ng-template", null, 1, i0.ɵɵtemplateRefExtractor)(5, PoDynamicViewComponent_ng_template_5_Template, 1, 5, "ng-template", null, 2, i0.ɵɵtemplateRefExtractor)(7, PoDynamicViewComponent_ng_template_7_Template, 1, 6, "ng-template", null, 3, i0.ɵɵtemplateRefExtractor)(9, PoDynamicViewComponent_ng_template_9_Template, 1, 3, "ng-template", null, 4, i0.ɵɵtemplateRefExtractor);
|
|
192
196
|
} if (rf & 2) {
|
|
193
197
|
i0.ɵɵproperty("ngIf", ctx.visibleFields.length);
|
|
194
198
|
} }, dependencies: [i1.NgClass, i1.NgForOf, i1.NgIf, i1.NgTemplateOutlet, i6.PoDividerComponent, i7.PoInfoComponent, i8.PoTagComponent, i9.PoImageComponent, i10.PoDynamicContainerComponent], encapsulation: 2 });
|
|
195
199
|
}
|
|
196
200
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PoDynamicViewComponent, [{
|
|
197
201
|
type: Component,
|
|
198
|
-
args: [{ selector: 'po-dynamic-view', template: "<div class=\"po-row\" [class.po-dynamic]=\"hasContainers\" *ngIf=\"visibleFields.length\">\n <ng-container\n *ngTemplateOutlet=\"\n hasContainers ? poContentContainer : poContent;\n context: { $implicit: hasContainers ? containerFields : visibleFields }\n \"\n ></ng-container>\n</div>\n\n<ng-template #poContent let-fields>\n <ng-template ngFor let-field [ngForOf]=\"fields\">\n <po-divider *ngIf=\"field?.divider?.trim()\" class=\"po-sm-12\" [p-label]=\"field.divider\"> </po-divider>\n <ng-container\n *ngTemplateOutlet=\"\n !field.tag && !field.image ? poInfo : !field.image ? poTag : poImage;\n context: { $implicit: field }\n \"\n >\n </ng-container>\n </ng-template>\n</ng-template>\n\n<ng-template #poContentContainer let-fields>\n <po-dynamic-container [p-fields]=\"fields\" [p-content]=\"poContent\"></po-dynamic-container>\n</ng-template>\n\n<ng-template #poInfo let-field>\n <po-info
|
|
202
|
+
args: [{ selector: 'po-dynamic-view', template: "<div class=\"po-row\" [class.po-dynamic]=\"hasContainers\" *ngIf=\"visibleFields.length\">\n <ng-container\n *ngTemplateOutlet=\"\n hasContainers ? poContentContainer : poContent;\n context: { $implicit: hasContainers ? containerFields : visibleFields }\n \"\n ></ng-container>\n</div>\n\n<ng-template #poContent let-fields>\n <ng-template ngFor let-field [ngForOf]=\"fields\">\n <po-divider *ngIf=\"field?.divider?.trim()\" class=\"po-sm-12\" [p-label]=\"field.divider\"> </po-divider>\n <ng-container\n *ngTemplateOutlet=\"\n !field.tag && !field.image ? poInfo : !field.image ? poTag : poImage;\n context: { $implicit: field }\n \"\n >\n </ng-container>\n </ng-template>\n</ng-template>\n\n<ng-template #poContentContainer let-fields>\n <po-dynamic-container [p-fields]=\"fields\" [p-content]=\"poContent\"></po-dynamic-container>\n</ng-template>\n\n<ng-template #poInfo let-field>\n <po-info\n [ngClass]=\"field.cssClass\"\n [class.po-info-value-pre]=\"textWrap && containsLineBreak(setFieldValue(field))\"\n [p-label]=\"field.label\"\n [p-value]=\"setFieldValue(field)\"\n >\n </po-info\n></ng-template>\n\n<ng-template #poTag let-field>\n <po-tag\n [ngClass]=\"field.cssClass\"\n [p-color]=\"field.color\"\n [p-icon]=\"field.icon\"\n [p-label]=\"field.label\"\n [p-text-color]=\"field.textColor\"\n [p-value]=\"setFieldValue(field)\"\n >\n </po-tag>\n</ng-template>\n\n<ng-template #poImage let-field>\n <po-image [p-alt]=\"field.alt\" [p-height]=\"field.height\" [p-src]=\"field.value\"> </po-image>\n</ng-template>\n" }]
|
|
199
203
|
}], () => [{ type: i1.CurrencyPipe }, { type: i1.DatePipe }, { type: i1.DecimalPipe }, { type: i2.PoTimePipe }, { type: i1.TitleCasePipe }, { type: i3.PoDynamicViewService }, { type: i4.PoComboFilterService }, { type: i5.PoMultiselectFilterService }], null); })();
|
|
200
204
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PoDynamicViewComponent, { className: "PoDynamicViewComponent", filePath: "lib/components/po-dynamic/po-dynamic-view/po-dynamic-view.component.ts", lineNumber: 42 }); })();
|
|
201
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tZHluYW1pYy12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1keW5hbWljL3BvLWR5bmFtaWMtdmlldy9wby1keW5hbWljLXZpZXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9jb21wb25lbnRzL3BvLWR5bmFtaWMvcG8tZHluYW1pYy12aWV3L3BvLWR5bmFtaWMtdmlldy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFvQyxNQUFNLGVBQWUsQ0FBQztBQUs1RSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7SUNMNUUsd0JBS2dCOzs7SUFObEIsOEJBQW9GO0lBQ2xGLCtGQUtDO0lBQ0gsaUJBQU07Ozs7O0lBUGMsa0RBQWtDO0lBRWpELGNBRVE7SUFBQSxBQUZSLDhGQUVRLDZIQUViOzs7SUFLSSxpQ0FBb0c7OztJQUF4QywwQ0FBeUI7OztJQUNyRix3QkFNZTs7O0lBTmYsQUFEQSxpSEFBc0Ysd0dBTXJGOzs7Ozs7O0lBTlksMEdBQTRCO0lBRXRDLGNBRVU7SUFBQSxBQUZWLHlIQUVVLGlFQUVqQjs7O0lBUEUscUdBQWdEOzs7SUFBbkIsbUNBQWtCOzs7SUFhL0MsMkNBQXlGOzs7OztJQUEvQyxBQUFwQixvQ0FBbUIsMkJBQXdCOzs7SUFJakUsOEJBQXdHOzs7O0lBQTVDLEFBQXhCLEFBQTNCLDRDQUEwQiw0QkFBd0IsNENBQWlDOzs7SUFJNUYsNkJBUVM7Ozs7SUFGUCxBQURBLEFBREEsQUFEQSxBQURBLEFBREEsNENBQTBCLDRCQUNILDBCQUNGLDRCQUNFLHFDQUNTLDRDQUNBOzs7SUFNbEMsK0JBQTBGOzs7SUFBbEMsQUFBMUIsQUFBcEIscUNBQW1C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QUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztRQUVsRSxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFN0IsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUM3QyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztJQUMxQixDQUFDO2dGQXpHVSxzQkFBc0I7NkRBQXRCLHNCQUFzQjtZQ0NuQyxBQVpBLEFBSkEsQUFKQSxBQWJBLEFBVEEsdUVBQW9GLDJHQVNqRCwyR0FhUywyR0FJYiwyR0FJRCwyR0FZRTs7WUExQ3dCLCtDQUEwQjs7O2lGRHlDckUsc0JBQXNCO2NBSmxDLFNBQVM7MkJBQ0UsaUJBQWlCOztrRkFHaEIsc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ3VycmVuY3lQaXBlLCBEYXRlUGlwZSwgRGVjaW1hbFBpcGUsIFRpdGxlQ2FzZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkNoYW5nZXMsIE9uSW5pdCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBQb1RpbWVQaXBlIH0gZnJvbSAnLi4vLi4vLi4vcGlwZXMvcG8tdGltZS9wby10aW1lLnBpcGUnO1xuXG5pbXBvcnQgeyBQb0R5bmFtaWNWaWV3RmllbGQgfSBmcm9tICcuLy4uL3BvLWR5bmFtaWMtdmlldy9wby1keW5hbWljLXZpZXctZmllbGQuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvRHluYW1pY1ZpZXdCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi9wby1keW5hbWljLXZpZXctYmFzZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUG9EeW5hbWljVmlld1NlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3BvLWR5bmFtaWMtdmlldy5zZXJ2aWNlJztcbmltcG9ydCB7IFBvQ29tYm9GaWx0ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vcG8tZmllbGQvcG8tY29tYm8vcG8tY29tYm8tZmlsdGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUG9NdWx0aXNlbGVjdEZpbHRlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9wby1maWVsZC9wby1tdWx0aXNlbGVjdC9wby1tdWx0aXNlbGVjdC1maWx0ZXIuc2VydmljZSc7XG5cbi8qKlxuICogQGRvY3NFeHRlbmRzIFBvRHluYW1pY1ZpZXdCYXNlQ29tcG9uZW50XG4gKlxuICogQGV4YW1wbGVcbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tZHluYW1pYy12aWV3LWJhc2ljXCIgdGl0bGU9XCJQTyBEeW5hbWljIFZpZXcgQmFzaWNcIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWR5bmFtaWMtdmlldy1iYXNpYy9zYW1wbGUtcG8tZHluYW1pYy12aWV3LWJhc2ljLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWR5bmFtaWMtdmlldy1iYXNpYy9zYW1wbGUtcG8tZHluYW1pYy12aWV3LWJhc2ljLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLWR5bmFtaWMtdmlldy1lbXBsb3llZVwiIHRpdGxlPVwiUE8gRHluYW1pYyBWaWV3IC0gRW1wbG95ZWVcIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWR5bmFtaWMtdmlldy1lbXBsb3llZS9zYW1wbGUtcG8tZHluYW1pYy12aWV3LWVtcGxveWVlLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWR5bmFtaWMtdmlldy1lbXBsb3llZS9zYW1wbGUtcG8tZHluYW1pYy12aWV3LWVtcGxveWVlLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLWR5bmFtaWMtdmlldy1lbXBsb3llZS1vbi1sb2FkXCIgdGl0bGU9XCJQTyBEeW5hbWljIFZpZXcgLSBFbXBsb3llZSBvbiBsb2FkXCI+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1keW5hbWljLXZpZXctZW1wbG95ZWUtb24tbG9hZC9zYW1wbGUtcG8tZHluYW1pYy12aWV3LWVtcGxveWVlLW9uLWxvYWQuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tZHluYW1pYy12aWV3LWVtcGxveWVlLW9uLWxvYWQvc2FtcGxlLXBvLWR5bmFtaWMtdmlldy1lbXBsb3llZS1vbi1sb2FkLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1keW5hbWljLXZpZXctZW1wbG95ZWUtb24tbG9hZC9zYW1wbGUtcG8tZHluYW1pYy12aWV3LWVtcGxveWVlLW9uLWxvYWQuc2VydmljZS50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLWR5bmFtaWMtdmlldy1jb250YWluZXJcIiB0aXRsZT1cIlBPIER5bmFtaWMgVmlldyAtIEVtcGxveWVlIG9uIGxvYWRcIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWR5bmFtaWMtdmlldy1jb250YWluZXIvc2FtcGxlLXBvLWR5bmFtaWMtdmlldy1jb250YWluZXIuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tZHluYW1pYy12aWV3LWNvbnRhaW5lci9zYW1wbGUtcG8tZHluYW1pYy12aWV3LWNvbnRhaW5lci5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwby1keW5hbWljLXZpZXcnLFxuICB0ZW1wbGF0ZVVybDogJy4vcG8tZHluYW1pYy12aWV3LmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBQb0R5bmFtaWNWaWV3Q29tcG9uZW50IGV4dGVuZHMgUG9EeW5hbWljVmlld0Jhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCB7XG4gIGluaXRDaGFuZ2VzO1xuICBjb25zdHJ1Y3RvcihcbiAgICBjdXJyZW5jeVBpcGU6IEN1cnJlbmN5UGlwZSxcbiAgICBkYXRlUGlwZTogRGF0ZVBpcGUsXG4gICAgZGVjaW1hbFBpcGU6IERlY2ltYWxQaXBlLFxuICAgIHRpbWVQaXBlOiBQb1RpbWVQaXBlLFxuICAgIHRpdGxlQ2FzZVBpcGU6IFRpdGxlQ2FzZVBpcGUsXG4gICAgZHluYW1pY1ZpZXdTZXJ2aWNlOiBQb0R5bmFtaWNWaWV3U2VydmljZSxcbiAgICBjb21ib0ZpbHRlclNlcnZpY2U6IFBvQ29tYm9GaWx0ZXJTZXJ2aWNlLFxuICAgIG11bHRpc2VsZWN0RmlsdGVyU2VydmljZTogUG9NdWx0aXNlbGVjdEZpbHRlclNlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIoXG4gICAgICBjdXJyZW5jeVBpcGUsXG4gICAgICBkYXRlUGlwZSxcbiAgICAgIGRlY2ltYWxQaXBlLFxuICAgICAgdGltZVBpcGUsXG4gICAgICB0aXRsZUNhc2VQaXBlLFxuICAgICAgZHluYW1pY1ZpZXdTZXJ2aWNlLFxuICAgICAgY29tYm9GaWx0ZXJTZXJ2aWNlLFxuICAgICAgbXVsdGlzZWxlY3RGaWx0ZXJTZXJ2aWNlXG4gICAgKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAodGhpcy5sb2FkICYmICF0aGlzLmluaXRDaGFuZ2VzKSB7XG4gICAgICB0aGlzLmluaXRDaGFuZ2VzID0gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaW5pdENoYW5nZXMgPSB0cnVlO1xuICAgIH1cbiAgICBpZiAoKGNoYW5nZXMuZmllbGRzIHx8IGNoYW5nZXMudmFsdWUgfHwgY2hhbmdlcy5zaG93QWxsVmFsdWUpICYmIHRoaXMuaW5pdENoYW5nZXMpIHtcbiAgICAgIHRoaXMudmlzaWJsZUZpZWxkcyA9IHRoaXMuZ2V0VmlzaWJsZUZpZWxkcygpO1xuICAgICAgdGhpcy5zZXRDb250YWluZXJGaWVsZHMoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAodGhpcy5sb2FkKSB7XG4gICAgICB0aGlzLnVwZGF0ZVZhbHVlc0FuZEZpZWxkc09uTG9hZCgpLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICB0aGlzLnNldENvbnRhaW5lckZpZWxkcygpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgc2V0RmllbGRWYWx1ZShmaWVsZCkge1xuICAgIGlmIChmaWVsZC5vcHRpb25zKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZE9wdGlvbiA9IGZpZWxkLm9wdGlvbnMuZmluZChvcHRpb24gPT4gb3B0aW9uLnZhbHVlID09PSBmaWVsZC52YWx1ZSk7XG4gICAgICByZXR1cm4gc2VsZWN0ZWRPcHRpb24gPyBzZWxlY3RlZE9wdGlvbi5sYWJlbCA6IGZpZWxkLnZhbHVlO1xuICAgIH0gZWxzZSBpZiAoZmllbGQudHlwZSA9PT0gJ2Jvb2xlYW4nICYmICdib29sZWFuVHJ1ZScgaW4gZmllbGQgJiYgJ2Jvb2xlYW5GYWxzZScgaW4gZmllbGQpIHtcbiAgICAgIHJldHVybiBmaWVsZC52YWx1ZSA/IGZpZWxkLmJvb2xlYW5UcnVlIDogZmllbGQuYm9vbGVhbkZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZmllbGQudmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXRWYWx1ZXNBbmRGaWVsZHNGcm9tTG9hZCgpOiBQcm9taXNlPHsgdmFsdWU/OiBhbnk7IGZpZWxkcz86IEFycmF5PFBvRHluYW1pY1ZpZXdGaWVsZD4gfT4ge1xuICAgIGxldCB2YWx1ZUFuZEZpZWxkc0Zyb21Mb2FkO1xuXG4gICAgaWYgKHR5cGVvZiB0aGlzLmxvYWQgPT09ICdzdHJpbmcnKSB7XG4gICAgICB2YWx1ZUFuZEZpZWxkc0Zyb21Mb2FkID0gYXdhaXQgdGhpcy5keW5hbWljVmlld1NlcnZpY2Uub25Mb2FkKHRoaXMubG9hZCwgdGhpcy52YWx1ZSk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdGhpcy5sb2FkID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICB2YWx1ZUFuZEZpZWxkc0Zyb21Mb2FkID0gdGhpcy5sb2FkKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlQW5kRmllbGRzRnJvbUxvYWQgfHwge307XG4gIH1cblxuICBwcml2YXRlIGdldFZpc2libGVGaWVsZHMoKSB7XG4gICAgaWYgKHRoaXMuc2hvd0FsbFZhbHVlKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRNZXJnZWRGaWVsZHMoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy52YWx1ZSAmJiB0aGlzLmZpZWxkcy5sZW5ndGggPyB0aGlzLmdldENvbmZpZ3VyZWRGaWVsZHMoKSA6IHRoaXMuZ2V0VmFsdWVGaWVsZHMoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0RmllbGRPbkxvYWQoZmllbGRPbkxvYWQ6IFBvRHluYW1pY1ZpZXdGaWVsZCkge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5maWVsZHMuZmluZEluZGV4KGZpZWxkID0+IGZpZWxkLnByb3BlcnR5ID09PSBmaWVsZE9uTG9hZC5wcm9wZXJ0eSk7XG5cbiAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgdGhpcy5maWVsZHNbaW5kZXhdID0geyAuLi50aGlzLmZpZWxkc1tpbmRleF0sIC4uLmZpZWxkT25Mb2FkIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZmllbGRzLnB1c2goeyAuLi5maWVsZE9uTG9hZCB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldEZpZWxkc09uTG9hZChmaWVsZHM6IEFycmF5PFBvRHluYW1pY1ZpZXdGaWVsZD4pIHtcbiAgICBpZiAoZmllbGRzKSB7XG4gICAgICBmaWVsZHMuZm9yRWFjaChmaWVsZE9uTG9hZCA9PiB7XG4gICAgICAgIHRoaXMuc2V0RmllbGRPbkxvYWQoZmllbGRPbkxvYWQpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRWYWx1ZU9uTG9hZChuZXdWYWx1ZTogYW55KSB7XG4gICAgT2JqZWN0LmFzc2lnbih0aGlzLnZhbHVlLCBuZXdWYWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHVwZGF0ZVZhbHVlc0FuZEZpZWxkc09uTG9hZCgpIHtcbiAgICBjb25zdCB7IHZhbHVlLCBmaWVsZHMgfSA9IGF3YWl0IHRoaXMuZ2V0VmFsdWVzQW5kRmllbGRzRnJvbUxvYWQoKTtcblxuICAgIHRoaXMuc2V0VmFsdWVPbkxvYWQodmFsdWUpO1xuICAgIHRoaXMuc2V0RmllbGRzT25Mb2FkKGZpZWxkcyk7XG5cbiAgICB0aGlzLnZpc2libGVGaWVsZHMgPSB0aGlzLmdldFZpc2libGVGaWVsZHMoKTtcbiAgICB0aGlzLmluaXRDaGFuZ2VzID0gdHJ1ZTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInBvLXJvd1wiIFtjbGFzcy5wby1keW5hbWljXT1cImhhc0NvbnRhaW5lcnNcIiAqbmdJZj1cInZpc2libGVGaWVsZHMubGVuZ3RoXCI+XG4gIDxuZy1jb250YWluZXJcbiAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgaGFzQ29udGFpbmVycyA/IHBvQ29udGVudENvbnRhaW5lciA6IHBvQ29udGVudDtcbiAgICAgIGNvbnRleHQ6IHsgJGltcGxpY2l0OiBoYXNDb250YWluZXJzID8gY29udGFpbmVyRmllbGRzIDogdmlzaWJsZUZpZWxkcyB9XG4gICAgXCJcbiAgPjwvbmctY29udGFpbmVyPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjcG9Db250ZW50IGxldC1maWVsZHM+XG4gIDxuZy10ZW1wbGF0ZSBuZ0ZvciBsZXQtZmllbGQgW25nRm9yT2ZdPVwiZmllbGRzXCI+XG4gICAgPHBvLWRpdmlkZXIgKm5nSWY9XCJmaWVsZD8uZGl2aWRlcj8udHJpbSgpXCIgY2xhc3M9XCJwby1zbS0xMlwiIFtwLWxhYmVsXT1cImZpZWxkLmRpdmlkZXJcIj4gPC9wby1kaXZpZGVyPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICFmaWVsZC50YWcgJiYgIWZpZWxkLmltYWdlID8gcG9JbmZvIDogIWZpZWxkLmltYWdlID8gcG9UYWcgOiBwb0ltYWdlO1xuICAgICAgICBjb250ZXh0OiB7ICRpbXBsaWNpdDogZmllbGQgfVxuICAgICAgXCJcbiAgICA+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbmctdGVtcGxhdGU+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3BvQ29udGVudENvbnRhaW5lciBsZXQtZmllbGRzPlxuICA8cG8tZHluYW1pYy1jb250YWluZXIgW3AtZmllbGRzXT1cImZpZWxkc1wiIFtwLWNvbnRlbnRdPVwicG9Db250ZW50XCI+PC9wby1keW5hbWljLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjcG9JbmZvIGxldC1maWVsZD5cbiAgPHBvLWluZm8gW25nQ2xhc3NdPVwiZmllbGQuY3NzQ2xhc3NcIiBbcC1sYWJlbF09XCJmaWVsZC5sYWJlbFwiIFtwLXZhbHVlXT1cInNldEZpZWxkVmFsdWUoZmllbGQpXCI+IDwvcG8taW5mbz5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjcG9UYWcgbGV0LWZpZWxkPlxuICA8cG8tdGFnXG4gICAgW25nQ2xhc3NdPVwiZmllbGQuY3NzQ2xhc3NcIlxuICAgIFtwLWNvbG9yXT1cImZpZWxkLmNvbG9yXCJcbiAgICBbcC1pY29uXT1cImZpZWxkLmljb25cIlxuICAgIFtwLWxhYmVsXT1cImZpZWxkLmxhYmVsXCJcbiAgICBbcC10ZXh0LWNvbG9yXT1cImZpZWxkLnRleHRDb2xvclwiXG4gICAgW3AtdmFsdWVdPVwic2V0RmllbGRWYWx1ZShmaWVsZClcIlxuICA+XG4gIDwvcG8tdGFnPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNwb0ltYWdlIGxldC1maWVsZD5cbiAgPHBvLWltYWdlIFtwLWFsdF09XCJmaWVsZC5hbHRcIiBbcC1oZWlnaHRdPVwiZmllbGQuaGVpZ2h0XCIgW3Atc3JjXT1cImZpZWxkLnZhbHVlXCI+IDwvcG8taW1hZ2U+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
205
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tZHluYW1pYy12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1keW5hbWljL3BvLWR5bmFtaWMtdmlldy9wby1keW5hbWljLXZpZXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9jb21wb25lbnRzL3BvLWR5bmFtaWMvcG8tZHluYW1pYy12aWV3L3BvLWR5bmFtaWMtdmlldy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFvQyxNQUFNLGVBQWUsQ0FBQztBQUs1RSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7SUNMNUUsd0JBS2dCOzs7SUFObEIsOEJBQW9GO0lBQ2xGLCtGQUtDO0lBQ0gsaUJBQU07Ozs7O0lBUGMsa0RBQWtDO0lBRWpELGNBRVE7SUFBQSxBQUZSLDhGQUVRLDZIQUViOzs7SUFLSSxpQ0FBb0c7OztJQUF4QywwQ0FBeUI7OztJQUNyRix3QkFNZTs7O0lBTmYsQUFEQSxpSEFBc0Ysd0dBTXJGOzs7Ozs7O0lBTlksMEdBQTRCO0lBRXRDLGNBRVU7SUFBQSxBQUZWLHlIQUVVLGlFQUVqQjs7O0lBUEUscUdBQWdEOzs7SUFBbkIsbUNBQWtCOzs7SUFhL0MsMkNBQXlGOzs7OztJQUEvQyxBQUFwQixvQ0FBbUIsMkJBQXdCOzs7SUFJakUsOEJBT0Q7Ozs7SUFMRyxpSEFBK0U7SUFFL0UsQUFEQSxBQUZBLDRDQUEwQiw0QkFFSCw0Q0FDUzs7O0lBTWxDLDZCQVFTOzs7O0lBRlAsQUFEQSxBQURBLEFBREEsQUFEQSxBQURBLDRDQUEwQiw0QkFDSCwwQkFDRiw0QkFDRSxxQ0FDUyw0Q0FDQTs7O0lBTWxDLCtCQUEwRjs7O0lBQWxDLEFBQTFCLEFBQXBC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LENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFTyxLQUFLLENBQUMsMkJBQTJCO1FBQ3ZDLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztRQUVsRSxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFN0IsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUM3QyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztJQUMxQixDQUFDO2dGQTdHVSxzQkFBc0I7NkRBQXRCLHNCQUFzQjtZQ09uQyxBQVpBLEFBVkEsQUFKQSxBQWJBLEFBVEEsdUVBQW9GLDJHQVNqRCwyR0FhUywyR0FJYiwyR0FVRCwyR0FZRTs7WUFoRHdCLCtDQUEwQjs7O2lGRHlDckUsc0JBQXNCO2NBSmxDLFNBQVM7MkJBQ0UsaUJBQWlCOztrRkFHaEIsc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ3VycmVuY3lQaXBlLCBEYXRlUGlwZSwgRGVjaW1hbFBpcGUsIFRpdGxlQ2FzZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkNoYW5nZXMsIE9uSW5pdCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBQb1RpbWVQaXBlIH0gZnJvbSAnLi4vLi4vLi4vcGlwZXMvcG8tdGltZS9wby10aW1lLnBpcGUnO1xuXG5pbXBvcnQgeyBQb0R5bmFtaWNWaWV3RmllbGQgfSBmcm9tICcuLy4uL3BvLWR5bmFtaWMtdmlldy9wby1keW5hbWljLXZpZXctZmllbGQuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvRHluYW1pY1ZpZXdCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi9wby1keW5hbWljLXZpZXctYmFzZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUG9EeW5hbWljVmlld1NlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3BvLWR5bmFtaWMtdmlldy5zZXJ2aWNlJztcbmltcG9ydCB7IFBvQ29tYm9GaWx0ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vcG8tZmllbGQvcG8tY29tYm8vcG8tY29tYm8tZmlsdGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUG9NdWx0aXNlbGVjdEZpbHRlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9wby1maWVsZC9wby1tdWx0aXNlbGVjdC9wby1tdWx0aXNlbGVjdC1maWx0ZXIuc2VydmljZSc7XG5cbi8qKlxuICogQGRvY3NFeHRlbmRzIFBvRHluYW1pY1ZpZXdCYXNlQ29tcG9uZW50XG4gKlxuICogQGV4YW1wbGVcbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tZHluYW1pYy12aWV3LWJhc2ljXCIgdGl0bGU9XCJQTyBEeW5hbWljIFZpZXcgQmFzaWNcIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWR5bmFtaWMtdmlldy1iYXNpYy9zYW1wbGUtcG8tZHluYW1pYy12aWV3LWJhc2ljLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWR5bmFtaWMtdmlldy1iYXNpYy9zYW1wbGUtcG8tZHluYW1pYy12aWV3LWJhc2ljLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLWR5bmFtaWMtdmlldy1lbXBsb3llZVwiIHRpdGxlPVwiUE8gRHluYW1pYyBWaWV3IC0gRW1wbG95ZWVcIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWR5bmFtaWMtdmlldy1lbXBsb3llZS9zYW1wbGUtcG8tZHluYW1pYy12aWV3LWVtcGxveWVlLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWR5bmFtaWMtdmlldy1lbXBsb3llZS9zYW1wbGUtcG8tZHluYW1pYy12aWV3LWVtcGxveWVlLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLWR5bmFtaWMtdmlldy1lbXBsb3llZS1vbi1sb2FkXCIgdGl0bGU9XCJQTyBEeW5hbWljIFZpZXcgLSBFbXBsb3llZSBvbiBsb2FkXCI+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1keW5hbWljLXZpZXctZW1wbG95ZWUtb24tbG9hZC9zYW1wbGUtcG8tZHluYW1pYy12aWV3LWVtcGxveWVlLW9uLWxvYWQuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tZHluYW1pYy12aWV3LWVtcGxveWVlLW9uLWxvYWQvc2FtcGxlLXBvLWR5bmFtaWMtdmlldy1lbXBsb3llZS1vbi1sb2FkLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1keW5hbWljLXZpZXctZW1wbG95ZWUtb24tbG9hZC9zYW1wbGUtcG8tZHluYW1pYy12aWV3LWVtcGxveWVlLW9uLWxvYWQuc2VydmljZS50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLWR5bmFtaWMtdmlldy1jb250YWluZXJcIiB0aXRsZT1cIlBPIER5bmFtaWMgVmlldyAtIEVtcGxveWVlIG9uIGxvYWRcIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWR5bmFtaWMtdmlldy1jb250YWluZXIvc2FtcGxlLXBvLWR5bmFtaWMtdmlldy1jb250YWluZXIuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tZHluYW1pYy12aWV3LWNvbnRhaW5lci9zYW1wbGUtcG8tZHluYW1pYy12aWV3LWNvbnRhaW5lci5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwby1keW5hbWljLXZpZXcnLFxuICB0ZW1wbGF0ZVVybDogJy4vcG8tZHluYW1pYy12aWV3LmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBQb0R5bmFtaWNWaWV3Q29tcG9uZW50IGV4dGVuZHMgUG9EeW5hbWljVmlld0Jhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCB7XG4gIGluaXRDaGFuZ2VzO1xuICBjb25zdHJ1Y3RvcihcbiAgICBjdXJyZW5jeVBpcGU6IEN1cnJlbmN5UGlwZSxcbiAgICBkYXRlUGlwZTogRGF0ZVBpcGUsXG4gICAgZGVjaW1hbFBpcGU6IERlY2ltYWxQaXBlLFxuICAgIHRpbWVQaXBlOiBQb1RpbWVQaXBlLFxuICAgIHRpdGxlQ2FzZVBpcGU6IFRpdGxlQ2FzZVBpcGUsXG4gICAgZHluYW1pY1ZpZXdTZXJ2aWNlOiBQb0R5bmFtaWNWaWV3U2VydmljZSxcbiAgICBjb21ib0ZpbHRlclNlcnZpY2U6IFBvQ29tYm9GaWx0ZXJTZXJ2aWNlLFxuICAgIG11bHRpc2VsZWN0RmlsdGVyU2VydmljZTogUG9NdWx0aXNlbGVjdEZpbHRlclNlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIoXG4gICAgICBjdXJyZW5jeVBpcGUsXG4gICAgICBkYXRlUGlwZSxcbiAgICAgIGRlY2ltYWxQaXBlLFxuICAgICAgdGltZVBpcGUsXG4gICAgICB0aXRsZUNhc2VQaXBlLFxuICAgICAgZHluYW1pY1ZpZXdTZXJ2aWNlLFxuICAgICAgY29tYm9GaWx0ZXJTZXJ2aWNlLFxuICAgICAgbXVsdGlzZWxlY3RGaWx0ZXJTZXJ2aWNlXG4gICAgKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAodGhpcy5sb2FkICYmICF0aGlzLmluaXRDaGFuZ2VzKSB7XG4gICAgICB0aGlzLmluaXRDaGFuZ2VzID0gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaW5pdENoYW5nZXMgPSB0cnVlO1xuICAgIH1cbiAgICBpZiAoKGNoYW5nZXMuZmllbGRzIHx8IGNoYW5nZXMudmFsdWUgfHwgY2hhbmdlcy5zaG93QWxsVmFsdWUpICYmIHRoaXMuaW5pdENoYW5nZXMpIHtcbiAgICAgIHRoaXMudmlzaWJsZUZpZWxkcyA9IHRoaXMuZ2V0VmlzaWJsZUZpZWxkcygpO1xuICAgICAgdGhpcy5zZXRDb250YWluZXJGaWVsZHMoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAodGhpcy5sb2FkKSB7XG4gICAgICB0aGlzLnVwZGF0ZVZhbHVlc0FuZEZpZWxkc09uTG9hZCgpLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICB0aGlzLnNldENvbnRhaW5lckZpZWxkcygpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgc2V0RmllbGRWYWx1ZShmaWVsZCkge1xuICAgIGlmIChmaWVsZC5vcHRpb25zKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZE9wdGlvbiA9IGZpZWxkLm9wdGlvbnMuZmluZChvcHRpb24gPT4gb3B0aW9uLnZhbHVlID09PSBmaWVsZC52YWx1ZSk7XG4gICAgICByZXR1cm4gc2VsZWN0ZWRPcHRpb24gPyBzZWxlY3RlZE9wdGlvbi5sYWJlbCA6IGZpZWxkLnZhbHVlO1xuICAgIH0gZWxzZSBpZiAoZmllbGQudHlwZSA9PT0gJ2Jvb2xlYW4nICYmICdib29sZWFuVHJ1ZScgaW4gZmllbGQgJiYgJ2Jvb2xlYW5GYWxzZScgaW4gZmllbGQpIHtcbiAgICAgIHJldHVybiBmaWVsZC52YWx1ZSA/IGZpZWxkLmJvb2xlYW5UcnVlIDogZmllbGQuYm9vbGVhbkZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZmllbGQudmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGNvbnRhaW5zTGluZUJyZWFrKHZhbHVlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdmFsdWUgJiYgdmFsdWUuaW5jbHVkZXMoJ1xcbicpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXRWYWx1ZXNBbmRGaWVsZHNGcm9tTG9hZCgpOiBQcm9taXNlPHsgdmFsdWU/OiBhbnk7IGZpZWxkcz86IEFycmF5PFBvRHluYW1pY1ZpZXdGaWVsZD4gfT4ge1xuICAgIGxldCB2YWx1ZUFuZEZpZWxkc0Zyb21Mb2FkO1xuXG4gICAgaWYgKHR5cGVvZiB0aGlzLmxvYWQgPT09ICdzdHJpbmcnKSB7XG4gICAgICB2YWx1ZUFuZEZpZWxkc0Zyb21Mb2FkID0gYXdhaXQgdGhpcy5keW5hbWljVmlld1NlcnZpY2Uub25Mb2FkKHRoaXMubG9hZCwgdGhpcy52YWx1ZSk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdGhpcy5sb2FkID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICB2YWx1ZUFuZEZpZWxkc0Zyb21Mb2FkID0gdGhpcy5sb2FkKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlQW5kRmllbGRzRnJvbUxvYWQgfHwge307XG4gIH1cblxuICBwcml2YXRlIGdldFZpc2libGVGaWVsZHMoKSB7XG4gICAgaWYgKHRoaXMuc2hvd0FsbFZhbHVlKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRNZXJnZWRGaWVsZHMoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy52YWx1ZSAmJiB0aGlzLmZpZWxkcy5sZW5ndGggPyB0aGlzLmdldENvbmZpZ3VyZWRGaWVsZHMoKSA6IHRoaXMuZ2V0VmFsdWVGaWVsZHMoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0RmllbGRPbkxvYWQoZmllbGRPbkxvYWQ6IFBvRHluYW1pY1ZpZXdGaWVsZCkge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5maWVsZHMuZmluZEluZGV4KGZpZWxkID0+IGZpZWxkLnByb3BlcnR5ID09PSBmaWVsZE9uTG9hZC5wcm9wZXJ0eSk7XG5cbiAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgdGhpcy5maWVsZHNbaW5kZXhdID0geyAuLi50aGlzLmZpZWxkc1tpbmRleF0sIC4uLmZpZWxkT25Mb2FkIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZmllbGRzLnB1c2goeyAuLi5maWVsZE9uTG9hZCB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldEZpZWxkc09uTG9hZChmaWVsZHM6IEFycmF5PFBvRHluYW1pY1ZpZXdGaWVsZD4pIHtcbiAgICBpZiAoZmllbGRzKSB7XG4gICAgICBmaWVsZHMuZm9yRWFjaChmaWVsZE9uTG9hZCA9PiB7XG4gICAgICAgIHRoaXMuc2V0RmllbGRPbkxvYWQoZmllbGRPbkxvYWQpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRWYWx1ZU9uTG9hZChuZXdWYWx1ZTogYW55KSB7XG4gICAgT2JqZWN0LmFzc2lnbih0aGlzLnZhbHVlLCBuZXdWYWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHVwZGF0ZVZhbHVlc0FuZEZpZWxkc09uTG9hZCgpIHtcbiAgICBjb25zdCB7IHZhbHVlLCBmaWVsZHMgfSA9IGF3YWl0IHRoaXMuZ2V0VmFsdWVzQW5kRmllbGRzRnJvbUxvYWQoKTtcblxuICAgIHRoaXMuc2V0VmFsdWVPbkxvYWQodmFsdWUpO1xuICAgIHRoaXMuc2V0RmllbGRzT25Mb2FkKGZpZWxkcyk7XG5cbiAgICB0aGlzLnZpc2libGVGaWVsZHMgPSB0aGlzLmdldFZpc2libGVGaWVsZHMoKTtcbiAgICB0aGlzLmluaXRDaGFuZ2VzID0gdHJ1ZTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInBvLXJvd1wiIFtjbGFzcy5wby1keW5hbWljXT1cImhhc0NvbnRhaW5lcnNcIiAqbmdJZj1cInZpc2libGVGaWVsZHMubGVuZ3RoXCI+XG4gIDxuZy1jb250YWluZXJcbiAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgaGFzQ29udGFpbmVycyA/IHBvQ29udGVudENvbnRhaW5lciA6IHBvQ29udGVudDtcbiAgICAgIGNvbnRleHQ6IHsgJGltcGxpY2l0OiBoYXNDb250YWluZXJzID8gY29udGFpbmVyRmllbGRzIDogdmlzaWJsZUZpZWxkcyB9XG4gICAgXCJcbiAgPjwvbmctY29udGFpbmVyPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjcG9Db250ZW50IGxldC1maWVsZHM+XG4gIDxuZy10ZW1wbGF0ZSBuZ0ZvciBsZXQtZmllbGQgW25nRm9yT2ZdPVwiZmllbGRzXCI+XG4gICAgPHBvLWRpdmlkZXIgKm5nSWY9XCJmaWVsZD8uZGl2aWRlcj8udHJpbSgpXCIgY2xhc3M9XCJwby1zbS0xMlwiIFtwLWxhYmVsXT1cImZpZWxkLmRpdmlkZXJcIj4gPC9wby1kaXZpZGVyPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICFmaWVsZC50YWcgJiYgIWZpZWxkLmltYWdlID8gcG9JbmZvIDogIWZpZWxkLmltYWdlID8gcG9UYWcgOiBwb0ltYWdlO1xuICAgICAgICBjb250ZXh0OiB7ICRpbXBsaWNpdDogZmllbGQgfVxuICAgICAgXCJcbiAgICA+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbmctdGVtcGxhdGU+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3BvQ29udGVudENvbnRhaW5lciBsZXQtZmllbGRzPlxuICA8cG8tZHluYW1pYy1jb250YWluZXIgW3AtZmllbGRzXT1cImZpZWxkc1wiIFtwLWNvbnRlbnRdPVwicG9Db250ZW50XCI+PC9wby1keW5hbWljLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjcG9JbmZvIGxldC1maWVsZD5cbiAgPHBvLWluZm9cbiAgICBbbmdDbGFzc109XCJmaWVsZC5jc3NDbGFzc1wiXG4gICAgW2NsYXNzLnBvLWluZm8tdmFsdWUtcHJlXT1cInRleHRXcmFwICYmIGNvbnRhaW5zTGluZUJyZWFrKHNldEZpZWxkVmFsdWUoZmllbGQpKVwiXG4gICAgW3AtbGFiZWxdPVwiZmllbGQubGFiZWxcIlxuICAgIFtwLXZhbHVlXT1cInNldEZpZWxkVmFsdWUoZmllbGQpXCJcbiAgPlxuICA8L3BvLWluZm9cbj48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3BvVGFnIGxldC1maWVsZD5cbiAgPHBvLXRhZ1xuICAgIFtuZ0NsYXNzXT1cImZpZWxkLmNzc0NsYXNzXCJcbiAgICBbcC1jb2xvcl09XCJmaWVsZC5jb2xvclwiXG4gICAgW3AtaWNvbl09XCJmaWVsZC5pY29uXCJcbiAgICBbcC1sYWJlbF09XCJmaWVsZC5sYWJlbFwiXG4gICAgW3AtdGV4dC1jb2xvcl09XCJmaWVsZC50ZXh0Q29sb3JcIlxuICAgIFtwLXZhbHVlXT1cInNldEZpZWxkVmFsdWUoZmllbGQpXCJcbiAgPlxuICA8L3BvLXRhZz5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjcG9JbWFnZSBsZXQtZmllbGQ+XG4gIDxwby1pbWFnZSBbcC1hbHRdPVwiZmllbGQuYWx0XCIgW3AtaGVpZ2h0XT1cImZpZWxkLmhlaWdodFwiIFtwLXNyY109XCJmaWVsZC52YWx1ZVwiPiA8L3BvLWltYWdlPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|