ets-fe-ng-sdk 18.0.129 → 18.0.131
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/Shared/components/form-generator/form-generator.component.mjs +4 -4
- package/esm2022/lib/Shared/components/page-template/page-template.component.mjs +1 -1
- package/esm2022/lib/Shared/components/vertical-nav/vertical-nav.component.mjs +3 -3
- package/fesm2022/ets-fe-ng-sdk.mjs +4 -4
- package/fesm2022/ets-fe-ng-sdk.mjs.map +1 -1
- package/lib/Shared/components/form-generator/form-generated-value/form-generated-value.component.d.ts +5 -13
- package/lib/Shared/components/form-generator/form-generator.component.d.ts +1 -1
- package/lib/Shared/components/page-template/page-template.component.d.ts +2 -0
- package/lib/Shared/components/table/table-https/table-https.component.d.ts +3 -3
- package/package.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Component, EventEmitter, Input, Output, computed, effect, inject, input, model, signal, viewChild, } from '@angular/core';
|
|
2
2
|
import { FormControl, FormGroup, FormsModule, ReactiveFormsModule, Validators, } from '@angular/forms';
|
|
3
3
|
import { cloneDeep } from 'lodash-es';
|
|
4
|
-
import { debounceTime, filter, switchMap, map, startWith, } from 'rxjs/operators';
|
|
4
|
+
import { debounceTime, filter, switchMap, tap, map, startWith, } from 'rxjs/operators';
|
|
5
5
|
import { FunctionCaller2, ToAnyPipe } from '../../pipes/utility.pipe';
|
|
6
6
|
import { BtnComponent } from '../btn/btn.component';
|
|
7
7
|
import { InputBasicComponent } from '../input/input-basic.component';
|
|
@@ -164,9 +164,9 @@ export class FormGeneratorComponent extends BaseFormGenerator {
|
|
|
164
164
|
if (scheme.debug)
|
|
165
165
|
debugger;
|
|
166
166
|
this.subs[scheme.field?.toString() + '_onFormChange'] = this.formValue$
|
|
167
|
-
.pipe(scheme.onFormChangePipeOperators())
|
|
167
|
+
.pipe(scheme.onFormChangePipeOperators ? scheme.onFormChangePipeOperators() : tap())
|
|
168
168
|
.subscribe((r) => {
|
|
169
|
-
scheme.onFormChange(
|
|
169
|
+
scheme.onFormChange(r, r?.[scheme.field], this);
|
|
170
170
|
});
|
|
171
171
|
}
|
|
172
172
|
}
|
|
@@ -263,4 +263,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
|
|
|
263
263
|
type: Input,
|
|
264
264
|
args: ['isShow']
|
|
265
265
|
}] } });
|
|
266
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1nZW5lcmF0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXRzLWZlLW5nLXNkay9zcmMvbGliL1NoYXJlZC9jb21wb25lbnRzL2Zvcm0tZ2VuZXJhdG9yL2Zvcm0tZ2VuZXJhdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy9mb3JtLWdlbmVyYXRvci9mb3JtLWdlbmVyYXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUdULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUVOLFFBQVEsRUFDUixNQUFNLEVBQ04sTUFBTSxFQUNOLEtBQUssRUFDTCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBRUwsV0FBVyxFQUNYLFNBQVMsRUFDVCxXQUFXLEVBQ1gsbUJBQW1CLEVBQ25CLFVBQVUsR0FDWCxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxTQUFTLEVBQVcsTUFBTSxXQUFXLENBQUM7QUFDL0MsT0FBTyxFQUNMLFlBQVksRUFDWixNQUFNLEVBRU4sU0FBUyxFQUVULEdBQUcsRUFDSCxTQUFTLEdBRVYsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsbUJBQW1CLEVBQW1CLE1BQU0sZ0NBQWdDLENBQUM7QUFDdEYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDL0UsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1B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O3NCQUExRCxLQUFLO3VCQUFDLEVBQUUsS0FBSyxFQUFFLGtCQUFrQixFQUFFO2dCQWFmLE9BQU87c0JBQTNCLEtBQUs7dUJBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIERlc3Ryb3lSZWYsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgVGVtcGxhdGVSZWYsXG4gIGNvbXB1dGVkLFxuICBlZmZlY3QsXG4gIGluamVjdCxcbiAgaW5wdXQsXG4gIG1vZGVsLFxuICBzaWduYWwsXG4gIHZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBYnN0cmFjdENvbnRyb2wsXG4gIEZvcm1Db250cm9sLFxuICBGb3JtR3JvdXAsXG4gIEZvcm1zTW9kdWxlLFxuICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICBWYWxpZGF0b3JzLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBjbG9uZURlZXAsIGlzRXF1YWwgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHtcbiAgZGVib3VuY2VUaW1lLFxuICBmaWx0ZXIsXG4gIGxhc3QsXG4gIHN3aXRjaE1hcCxcbiAgdGFwLFxuICBtYXAsXG4gIHN0YXJ0V2l0aCxcbiAgZGlzdGluY3RVbnRpbENoYW5nZWQsXG59IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEZ1bmN0aW9uQ2FsbGVyMiwgVG9BbnlQaXBlIH0gZnJvbSAnLi4vLi4vcGlwZXMvdXRpbGl0eS5waXBlJztcbmltcG9ydCB7IEJ0bkNvbXBvbmVudCB9IGZyb20gJy4uL2J0bi9idG4uY29tcG9uZW50JztcbmltcG9ydCB7IElucHV0QmFzaWNDb21wb25lbnQsIE9wdGlvbkxhYmVsVHlwZSB9IGZyb20gJy4uL2lucHV0L2lucHV0LWJhc2ljLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBdXRvY29tcGxldGVDb21wb25lbnQgfSBmcm9tICcuLi9hdXRvY29tcGxldGUvYXV0b2NvbXBsZXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBWYWxpZGF0aW9uTWVzc2FnZUNvbXBvbmVudCB9IGZyb20gJy4uL2lucHV0L3ZhbGlkYXRpb24tbWVzc2FnZS92YWxpZGF0aW9uLW1lc3NhZ2UuY29tcG9uZW50JztcbmltcG9ydCB7IFBob25lTnVtYmVyQ29tcG9uZW50IH0gZnJvbSAnLi4vcGhvbmUtbnVtYmVyL3Bob25lLW51bWJlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlLCBOZ1N3aXRjaERlZmF1bHQsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTG9hZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vbG9hZGVyL2xvYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgSW5wdXRTdWJUeXBlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2luZGV4Lm1vZGVsJztcbmltcG9ydCB7IFJpY2hUZXh0RWRpdG9yUkZDb21wb25lbnQgfSBmcm9tICcuLi9yaWNoLXRleHQtZWRpdG9yLXJmL3JpY2gtdGV4dC1lZGl0b3ItcmYuY29tcG9uZW50JztcbmltcG9ydCB7IEZvcm1HZW5lcmF0b3JTZXJ2aWNlIH0gZnJvbSAnLi9mb3JtLWdlbmVyYXRvci5zZXJ2aWNlJztcbmltcG9ydCB7IEJhc2VGb3JtR2VuZXJhdG9yLCBJQmFzZUZvcm1TY2hlbWEgfSBmcm9tICcuL2Zvcm0tZ2VuZXJhdG9yLmJhc2UuY29tcG9uZW50JztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiwgZnJvbUV2ZW50IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0b09ic2VydmFibGUsIHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuXG4vKipcbiAqIEZvcm0gc2hvdWxkIGJlIHNldCBiZWZvcmUgdGhlIHRoZSBmb3JtU2NoZW1hXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Zvcm0tZ2VuZXJhdG9yJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Zvcm0tZ2VuZXJhdG9yLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZm9ybS1nZW5lcmF0b3IuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgLy8gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbXG4gICAgTG9hZGVyQ29tcG9uZW50LFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIENvbW1vbk1vZHVsZSxcbiAgICBQaG9uZU51bWJlckNvbXBvbmVudCxcbiAgICBWYWxpZGF0aW9uTWVzc2FnZUNvbXBvbmVudCxcbiAgICBBdXRvY29tcGxldGVDb21wb25lbnQsXG4gICAgTmdTd2l0Y2hEZWZhdWx0LFxuICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgSW5wdXRCYXNpY0NvbXBvbmVudCxcbiAgICBSaWNoVGV4dEVkaXRvclJGQ29tcG9uZW50LFxuICAgIEJ0bkNvbXBvbmVudCxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIEZ1bmN0aW9uQ2FsbGVyMixcbiAgICBUb0FueVBpcGUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1HZW5lcmF0b3JDb21wb25lbnQ8XG4gIFRGb3JtR3JvdXAgZXh0ZW5kcyB7IFtLIGluIGtleW9mIFRGb3JtR3JvdXBdOiBBYnN0cmFjdENvbnRyb2w8YW55LCBhbnk+IH0sXG4gIFRGb3JtU2NoZW1hIGV4dGVuZHMgSUZvcm1TY2hlbWE8VEZvcm1Hcm91cD4gPSBJRm9ybVNjaGVtYTxURm9ybUdyb3VwPixcbj4gZXh0ZW5kcyBCYXNlRm9ybUdlbmVyYXRvcjxURm9ybUdyb3VwLCBURm9ybVNjaGVtYT4ge1xuICBASW5wdXQoKSBrZXlGaWVsZDogJ2ZpZWxkJyB8ICdsYWJlbCcgPSAnZmllbGQnO1xuICByZWFkb25seSBwcmVzZXRWYWx1ZUZvclNpbmdsZU9wdGlvbiA9IGlucHV0KGZhbHNlKTtcbiAgcmVhZG9ubHkgaXNDcmVhdGUgPSBpbnB1dDxib29sZWFuPigpO1xuICByZWFkb25seSBzdWJtaXRPbkVudGVyS2V5ID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICByZWFkb25seSBmb3JtVGFnUmVmID0gdmlld0NoaWxkPEVsZW1lbnRSZWY8SFRNTEZvcm1FbGVtZW50Pj4oJ2Zvcm1UYWcnKTtcblxuICAvKipFbWl0dGVkIGp1c3QgYmVmb3JlIGNhbGxpbmcgdGhlIHNhdmUgZnVuY3Rpb24gKi9cbiAgQE91dHB1dCgpIG9uU3VibWl0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBtY2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIC8qKkVtaXR0ZWQgYWZ0ZXIgcmVjZWl2aW5nIGZlZWRiYWNrIGZyb20gdGhlIHN1Ym1pdCBmdW5jdGlvbiAqL1xuICBAT3V0cHV0KCkgc2F2ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQElucHV0KCkgc3VibWl0RnVuYzogKHZhbHVlOiBhbnkpID0+IFByb21pc2U8YW55PjtcbiAgcmVhZG9ubHkgc3VibWl0QnRuVGV4dCA9IGlucHV0KCdTdWJtaXQnKTtcbiAgcmVhZG9ubHkgc3VibWl0QnRuVGVtcGxhdGUgPSBpbnB1dDxUZW1wbGF0ZVJlZjxhbnk+PigpO1xuICByZWFkb25seSBzdWJtaXRTdWNjZXNzVGV4dCA9IGlucHV0KCdTYXZlZCBzdWNjZXNzZnVsbHknKTtcbiAgcmVhZG9ubHkgc2hvd1N1Ym1pdEJ0biA9IGlucHV0KHRydWUpO1xuXG4gIHJlYWRvbmx5IGdyaWRTdHlsZSA9IGlucHV0PG51bWJlciB8ICdhdXRvJz4oKTtcbiAgcmVhZG9ubHkgZ3JpZE1EU3R5bGUgPSBpbnB1dDxudW1iZXIgfCAnYXV0byc+KCk7XG4gIHJlYWRvbmx5IGdyaWRMR1N0eWxlID0gaW5wdXQ8bnVtYmVyIHwgJ2F1dG8nPigpO1xuICByZWFkb25seSBncmlkWFhMU3R5bGUgPSBpbnB1dDxudW1iZXIgfCAnYXV0byc+KCk7XG5cbiAgcmVhZG9ubHkgZm9ybUdyaWRDbGFzcyA9IGlucHV0PHN0cmluZz4oKTtcbiAgcmVhZG9ubHkgdXNlTG9hZGVyID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgcmVhZG9ubHkgbG9hZGluZyA9IGlucHV0PGJvb2xlYW4+KCk7XG5cbiAgcmVhZG9ubHkgX2xvYWRpbmcgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIHJlYWRvbmx5IGNvbXB1dGVkTG9hZGluZyA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy51c2VMb2FkZXIoKSA/IHRoaXMubG9hZGluZygpIHx8IHRoaXMuX2xvYWRpbmcoKSA6IGZhbHNlLFxuICApO1xuXG4gIHJlYWRvbmx5IHN1Ym1pdEJ0blJlZiA9IHZpZXdDaGlsZDxCdG5Db21wb25lbnQ+KCdzdWJtaXRCdG4nKTtcbiAgcmVhZG9ubHkgZm9ybSA9IG1vZGVsPEZvcm1Hcm91cDxURm9ybUdyb3VwPj4oKTtcbiAgcmVhZG9ubHkgZm9ybSQgPSB0b09ic2VydmFibGUodGhpcy5mb3JtKTtcblxuICByZWFkb25seSBmb3JtVmFsdWUkID0gdGhpcy5mb3JtJC5waXBlKFxuICAgIGZpbHRlcigoKSA9PiAhIXRoaXMuZm9ybSgpKSxcbiAgICBzd2l0Y2hNYXAoKCkgPT5cbiAgICAgIHRoaXMuZm9ybSgpXG4gICAgICAgIC52YWx1ZUNoYW5nZXMucGlwZShtYXAoKCkgPT4gdGhpcy5mb3JtKCk/LmdldFJhd1ZhbHVlKCkgfHwge30pKVxuICAgICAgICAucGlwZShzdGFydFdpdGgodGhpcy5mb3JtKCk/LmdldFJhd1ZhbHVlKCkgfHwge30pKSxcbiAgICApLFxuICApO1xuICByZWFkb25seSBmb3JtVmFsdWUgPSB0b1NpZ25hbChcbiAgICB0aGlzLmZvcm1WYWx1ZSQsXG4gICAgLy8geyBpbml0aWFsVmFsdWU6IHRoaXMuZm9ybSgpPy5nZXRSYXdWYWx1ZSgpIHx8IHt9IH0sXG4gICk7XG5cbiAgc3VibWlzc2lvblJlc3BvbnNlOiBhbnk7XG4gIEBJbnB1dCh7IGFsaWFzOiAnZm9ybVNjaGVtYScgfSkgc2V0IF9mb3JtU2NoZW1hKHY6IFRGb3JtU2NoZW1hW10gfCBJRm9ybVNjaGVtYTxhbnk+W10pIHtcbiAgICB0aGlzLmluaXQoY2xvbmVEZWVwKHYuZmlsdGVyKCh4KSA9PiB4KSkgYXMgVEZvcm1TY2hlbWFbXSk7XG4gIH1cbiAgQElucHV0KHsgYWxpYXM6ICdmb3JtU2NoZW1hTm9Gb3JtJyB9KSBzZXQgX2Zvcm1TY2hlbWFOb0Zvcm0odjogVEZvcm1TY2hlbWFbXSkge1xuICAgIGlmICh2KSB7XG4gICAgICBjb25zdCBmb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XG4gICAgICBmb3IgKGNvbnN0IGl0ZW0gb2Ygdikge1xuICAgICAgICBmb3JtLmFkZENvbnRyb2woXG4gICAgICAgICAgaXRlbS5maWVsZD8udG9TdHJpbmcoKSxcbiAgICAgICAgICBuZXcgRm9ybUNvbnRyb2woaXRlbS52YWx1ZSwgW10uY29uY2F0KGl0ZW0uaXNSZXF1aXJlZCA/IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSA6IFtdKSksXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICB0aGlzLmZvcm0uc2V0KGZvcm0gYXMgYW55IGFzIEZvcm1Hcm91cDxURm9ybUdyb3VwPik7XG4gICAgICB0aGlzLl9mb3JtU2NoZW1hID0gdjtcbiAgICB9XG4gIH1cbiAgQElucHV0KCdpc1Nob3cnKSBzZXQgX2lzU2hvdyh2OiBib29sZWFuKSB7XG4gICAgaWYgKHYpIHRoaXMuZm9ybSgpPy5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICBlbHNlIHRoaXMuZm9ybSgpPy5lbmFibGUoKTtcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHYpIHRoaXMuZm9ybSgpPy5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgIGVsc2UgdGhpcy5mb3JtKCk/LmVuYWJsZSgpO1xuICAgIH0sIDUwMCk7XG4gIH1cbiAgcmVhZG9ubHkgb3B0aW9uc01hcCA9IHNpZ25hbDxJRm9ybU9wdGlvbnM+KHt9KTtcbiAgLy8gZm9ybVZhbCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuZm9ybT8uZ2V0UmF3VmFsdWUoKSk7XG5cbiAgcmVhZG9ubHkgY29tcHV0ZWRGb3JtU2NoZW1hID0gY29tcHV0ZWQ8SUZvcm1TY2hlbWE8VEZvcm1Hcm91cD5bXT4oKCkgPT4ge1xuICAgIGNvbnN0IGZvcm1TY2hlbWEgPSB0aGlzLmZvcm1TY2hlbWEoKSB8fCBbXSxcbiAgICAgIHByZXNldFZhbHVlRm9yU2luZ2xlT3B0aW9uID0gdGhpcy5wcmVzZXRWYWx1ZUZvclNpbmdsZU9wdGlvbigpLFxuICAgICAgaXNDcmVhdGUgPSB0aGlzLmlzQ3JlYXRlKCksXG4gICAgICByZXQ6IElGb3JtU2NoZW1hPFRGb3JtR3JvdXA+W10gPSBbXTtcbiAgICBmb3JtU2NoZW1hLmZvckVhY2goKHNjaGVtZSkgPT4ge1xuICAgICAgaWYgKCFzY2hlbWUuaGlkZGVuKSB7XG4gICAgICAgIGlmIChpc0NyZWF0ZSlcbiAgICAgICAgICBzY2hlbWUucHJlc2V0VmFsdWUgPVxuICAgICAgICAgICAgc2NoZW1lLnByZXNldFZhbHVlID09IG51bGwgPyBwcmVzZXRWYWx1ZUZvclNpbmdsZU9wdGlvbiA6IHNjaGVtZS5wcmVzZXRWYWx1ZTtcbiAgICAgICAgcmV0LnB1c2goc2NoZW1lKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAocmV0LnNvbWUoKHgpID0+ICF4LmZpZWxkKSkgZGVidWdnZXI7XG4gICAgcmV0dXJuIHJldDtcbiAgfSk7XG4gIC8vIG1pc2NJbmRleDogVE1pc2NJbmRleDtcbiAgcHVibGljIGZvcm1TZXJ2aWNlID0gaW5qZWN0KEZvcm1HZW5lcmF0b3JTZXJ2aWNlKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuXG4gICAgbGV0IGxpc3RlblRvS2V5OiBTdWJzY3JpcHRpb247XG4gICAgdGhpcy5kZXN0cm95UmVmLm9uRGVzdHJveSgoKSA9PiB7XG4gICAgICBsaXN0ZW5Ub0tleT8udW5zdWJzY3JpYmUoKTtcbiAgICB9KTtcbiAgICAvLyBlZmZlY3QoKCkgPT4ge1xuICAgIC8vICAgY29uc29sZS5sb2codGhpcy5mb3JtU2NoZW1hKCkpO1xuICAgIC8vIH0pO1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCBmdHIgPSB0aGlzLmZvcm1UYWdSZWYoKSxcbiAgICAgICAgc3VibWl0T25FbnRlcktleSA9IHRoaXMuc3VibWl0T25FbnRlcktleSgpO1xuICAgICAgLy8gZGVidWdnZXI7XG5cbiAgICAgIGxpc3RlblRvS2V5Py51bnN1YnNjcmliZSgpO1xuICAgICAgaWYgKGZ0cj8ubmF0aXZlRWxlbWVudCAmJiBzdWJtaXRPbkVudGVyS2V5KVxuICAgICAgICBsaXN0ZW5Ub0tleSA9IGZyb21FdmVudChmdHIubmF0aXZlRWxlbWVudCwgJ2tleWRvd24nKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgZGVib3VuY2VUaW1lKDEwMCksXG4gICAgICAgICAgICBmaWx0ZXIoXG4gICAgICAgICAgICAgIChyOiBLZXlib2FyZEV2ZW50KSA9PiAoci5jb2RlID09PSAnRW50ZXInIHx8IHIua2V5Q29kZSA9PT0gMTMpICYmIHRoaXMuZm9ybSgpLnZhbGlkLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICApXG4gICAgICAgICAgLnN1YnNjcmliZSgocjogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zdWJtaXQodGhpcy5zdWJtaXRCdG5SZWYoKSk7XG4gICAgICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBpbml0KHNjaGVtYTogVEZvcm1TY2hlbWFbXSkge1xuICAgIC8vIGRlYnVnZ2VyO1xuICAgIGlmICh0aGlzLmRlYnVnKCkpIGRlYnVnZ2VyO1xuICAgIHRoaXMub25EZXN0cm95KCk7XG4gICAgdGhpcy5fc2V0Rm9ybVNjaGVtYXMoc2NoZW1hIHx8IFtdKTtcbiAgICBpZiAoc2NoZW1hKSBmb3IgKGNvbnN0IHNjaGVtZSBvZiBzY2hlbWEpIHRoaXMuaGFuZGxlRm9ybVNjaGVtZShzY2hlbWUpO1xuICAgIGlmIChzY2hlbWEpXG4gICAgICBmb3IgKGNvbnN0IHNjaGVtZSBvZiBzY2hlbWEpXG4gICAgICAgIGlmIChzY2hlbWUudHJpZ2dlck9uQ2hhbmdlT25Jbml0KSB7XG4gICAgICAgICAgY29uc3QgZm9ybVZhbHVlID0gdGhpcy5mb3JtKCk/LmdldFJhd1ZhbHVlKCk7XG4gICAgICAgICAgc2NoZW1lLm9uQ2hhbmdlRnVuYyhmb3JtVmFsdWUsIGZvcm1WYWx1ZVtzY2hlbWUuZmllbGQ/LnRvU3RyaW5nKCldLCB0aGlzKTtcbiAgICAgICAgfVxuICB9XG5cbiAgaGFuZGxlRm9ybVNjaGVtZShzY2hlbWU6IFRGb3JtU2NoZW1hKSB7XG4gICAgc2NoZW1lLmlkID0gdGhpcy51dGlsaXR5U2VydmljZS5nZW5lcmF0ZVVVSUQoKTtcbiAgICBpZiAoc2NoZW1lLnN0YWNrZWQgPT0gbnVsbCkgc2NoZW1lLnN0YWNrZWQgPSB0cnVlO1xuICAgIGlmIChzY2hlbWUuc2hvd1ZhbGlkYXRpb25Nc2cgPT0gbnVsbCkgc2NoZW1lLnNob3dWYWxpZGF0aW9uTXNnID0gdHJ1ZTtcbiAgICBpZiAodGhpcy5mb3JtU2VydmljZS5jb25maWcuc2hvd1ZhbGlkYXRpb25NZXNzYWdlc0J5RGVmYXVsdClcbiAgICAgIGlmIChzY2hlbWUuYXV0b1BpY2tWYWx1ZUZpZWxkID09IG51bGwgJiYgKCFzY2hlbWUudmFsdWVGaWVsZCB8fCAhc2NoZW1lLmxhYmVsRmllbGQpKVxuICAgICAgICBzY2hlbWUuYXV0b1BpY2tWYWx1ZUZpZWxkID0gdHJ1ZTtcbiAgICAvLyBpZiAoIXRoaXMuZm9ybS5jb250cm9sc1tzY2hlbWUuZmllbGQgYXMgYW55XSkgZGVidWdnZXI7XG4gICAgdGhpcy51cGRhdGVGb3JtU2NoZW1hKHNjaGVtZS5maWVsZCwgc2NoZW1lKTtcblxuICAgIGlmIChzY2hlbWUub3B0aW9uc0luaXRGdW5jKSB0aGlzLmhhbmRsZU9wdGlvbnNGZXRjaGVkKHNjaGVtZSwgc2NoZW1lLm9wdGlvbnNJbml0RnVuYyk7XG4gICAgaWYgKHNjaGVtZS5vcHRpb25zSW5pdEZ1bmMyKSB0aGlzLmhhbmRsZU9wdGlvbnNGZXRjaGVkKHNjaGVtZSwgc2NoZW1lLm9wdGlvbnNJbml0RnVuYzIoKSk7XG4gICAgaWYgKHNjaGVtZS5vbkNoYW5nZUZ1bmMpIHtcbiAgICAgIGlmIChzY2hlbWUuZGVidWcpIGRlYnVnZ2VyO1xuICAgICAgdGhpcy5zdWJzW3NjaGVtZS5maWVsZD8udG9TdHJpbmcoKV0gPSB0aGlzLmZvcm0kXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIHN3aXRjaE1hcCgoZm9ybSkgPT5cbiAgICAgICAgICAgIGZvcm0/LmNvbnRyb2xzW3NjaGVtZS5maWVsZD8udG9TdHJpbmcoKV0/LnZhbHVlQ2hhbmdlcy5waXBlKGRlYm91bmNlVGltZSgwKSksXG4gICAgICAgICAgKSxcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKChyKSA9PiB7XG4gICAgICAgICAgc2NoZW1lLm9uQ2hhbmdlRnVuYyh0aGlzLmZvcm1WYWx1ZSgpLCByLCB0aGlzKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGlmIChzY2hlbWUub25Gb3JtQ2hhbmdlKSB7XG4gICAgICBpZiAoc2NoZW1lLmRlYnVnKSBkZWJ1Z2dlcjtcbiAgICAgIHRoaXMuc3Vic1tzY2hlbWUuZmllbGQ/LnRvU3RyaW5nKCkgKyAnX29uRm9ybUNoYW5nZSddID0gdGhpcy5mb3JtVmFsdWUkXG4gICAgICAgIC5waXBlKHNjaGVtZS5vbkZvcm1DaGFuZ2VQaXBlT3BlcmF0b3JzKCkpXG4gICAgICAgIC5zdWJzY3JpYmUoKHIpID0+IHtcbiAgICAgICAgICBzY2hlbWUub25Gb3JtQ2hhbmdlKHRoaXMuZm9ybVZhbHVlKCksIHIsIHRoaXMpO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlT3B0aW9uc0ZldGNoZWQoc2NoZW1lOiBURm9ybVNjaGVtYSwgb3B0aW9ucyQ6IE9ic2VydmFibGU8YW55W10+KSB7XG4gICAgb3B0aW9ucyQuc3Vic2NyaWJlKChyKSA9PiB7XG4gICAgICB0aGlzLnVwZGF0ZUZvcm1TY2hlbWEoc2NoZW1lLmZpZWxkLCB7IG9wdGlvbnM6IHIgfSBhcyBURm9ybVNjaGVtYSk7XG4gICAgfSk7XG4gIH1cblxuICBkZXRhY2hGb3JtU2NoZW1lKGZpZWxkTmFtZT86IGtleW9mIFRGb3JtR3JvdXApIHtcbiAgICB0aGlzLnN1YnNbZmllbGROYW1lIGFzIHN0cmluZ10/LnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgbWNoYW5nZUVtaXR0ZXIoKSB7XG4gICAgdGhpcy5tY2hhbmdlLmVtaXQodGhpcy5mb3JtVmFsdWUoKSk7XG4gIH1cblxuICBnZXRGb3JtU2NoZW1lID0gKGZpZWxkTmFtZToga2V5b2YgVEZvcm1Hcm91cCkgPT4ge1xuICAgIC8vIGRlYnVnZ2VyO1xuICAgIHJldHVybiB0aGlzLmZvcm1TY2hlbWFNYXAoKVtmaWVsZE5hbWUgYXMgc3RyaW5nXTtcbiAgfTtcblxuICBhZGRUb0Zvcm1TY2hlbWEoZm9ybVNjaGVtZTogVEZvcm1TY2hlbWEpIHtcbiAgICB0aGlzLnJlbW92ZUZyb21Gb3JtU2NoZW1hKGZvcm1TY2hlbWUuZmllbGQpO1xuICAgIHRoaXMuaGFuZGxlRm9ybVNjaGVtZShmb3JtU2NoZW1lKTtcbiAgfVxuXG4gIHVwZGF0ZUZvcm1TY2hlbWEoZmllbGROYW1lOiBrZXlvZiBURm9ybUdyb3VwLCBzY2hlbWU6IFBhcnRpYWw8VEZvcm1TY2hlbWE+KSB7XG4gICAgcmV0dXJuIHN1cGVyLl91cGRhdGVGb3JtU2NoZW1hKGZpZWxkTmFtZSBhcyBzdHJpbmcsIHNjaGVtZSk7XG4gIH1cbiAgdXBkYXRlQWxsRm9ybVNjaGVtYShtYXA6IChmb3JtRmllbGQ6IElGb3JtU2NoZW1hPFRGb3JtR3JvdXA+KSA9PiBURm9ybVNjaGVtYSkge1xuICAgIHJldHVybiBzdXBlci5fdXBkYXRlQWxsRm9ybVNjaGVtYShtYXApO1xuICB9XG5cbiAgcmVtb3ZlRnJvbUZvcm1TY2hlbWEoZmllbGROYW1lOiBrZXlvZiBURm9ybUdyb3VwKSB7XG4gICAgdGhpcy5kZXRhY2hGb3JtU2NoZW1lKGZpZWxkTmFtZSk7XG4gICAgY29uc3Qgb25SZW1vdmUgPSB0aGlzLmZvcm1TY2hlbWFNYXAoKVtmaWVsZE5hbWUgYXMgc3RyaW5nXT8ub25SZW1vdmVGdW5jO1xuICAgIGlmIChvblJlbW92ZSkgb25SZW1vdmUodGhpcy5mb3JtVmFsdWUoKSBhcyBhbnksIHRoaXMuZm9ybVZhbHVlKClbZmllbGROYW1lIGFzIGFueV0sIHRoaXMpO1xuICAgIHRoaXMuX3JlbW92ZUZvcm1TY2hlbWEoZmllbGROYW1lIGFzIHN0cmluZyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0T3B0aW9uTGFiZWwoJGV2ZW50OiBhbnksIHNjaGVtZTogSUZvcm1TY2hlbWE8VEZvcm1Hcm91cD4pIHtcbiAgICBzY2hlbWUuc2VsZWN0ZWRPcHRpb25MYWJlbCA9ICRldmVudDtcbiAgfVxuXG4gIGFzeW5jIHN1Ym1pdChidG4/OiBCdG5Db21wb25lbnQpIHtcbiAgICBpZiAodGhpcy5zdWJtaXRGdW5jKSB7XG4gICAgICBidG4/LnNldExvYWRlcih0cnVlKTtcbiAgICAgIHRoaXMuX2xvYWRpbmcuc2V0KHRydWUpO1xuICAgICAgY29uc3QgZm9ybVZhbCA9IHRoaXMuZm9ybVZhbHVlKCk7XG4gICAgICB0aGlzLm9uU3VibWl0LmVtaXQoZm9ybVZhbCk7XG4gICAgICB0cnkge1xuICAgICAgICB0aGlzLnN1Ym1pc3Npb25SZXNwb25zZSA9IGF3YWl0IHRoaXMuc3VibWl0RnVuYyhmb3JtVmFsKTtcbiAgICAgICAgaWYgKHRoaXMuc3VibWl0U3VjY2Vzc1RleHQoKSkgdGhpcy51dGlsaXR5U2VydmljZS5pbmZvKHRoaXMuc3VibWl0U3VjY2Vzc1RleHQoKSwgMSk7XG4gICAgICAgIHRoaXMuc2F2ZWQuZW1pdCh0aGlzLnN1Ym1pc3Npb25SZXNwb25zZSk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLmluZm8oZXJyb3IsIDApO1xuICAgICAgfVxuICAgICAgdGhpcy5fbG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgYnRuPy5zZXRMb2FkZXIoZmFsc2UpO1xuICAgIH0gZWxzZSB0aGlzLm9uU3VibWl0LmVtaXQodGhpcy5mb3JtVmFsdWUoKSk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBJRm9ybVNjaGVtYTxcbiAgVEZvcm1Hcm91cCBleHRlbmRzIHtcbiAgICBbSyBpbiBrZXlvZiBURm9ybUdyb3VwXTogQWJzdHJhY3RDb250cm9sPGFueSwgYW55PjtcbiAgfSA9IGFueSxcbj4gZXh0ZW5kcyBJQmFzZUZvcm1TY2hlbWE8VEZvcm1Hcm91cCwgRm9ybUdlbmVyYXRvckNvbXBvbmVudDxURm9ybUdyb3VwPj4ge1xuICBjaGlsZHJlbj86IElGb3JtU2NoZW1hPFRGb3JtR3JvdXA+W107XG4gIGxhYmVsVHlwZT86IE9wdGlvbkxhYmVsVHlwZTtcbiAgZmllbGQ6IGtleW9mIFRGb3JtR3JvdXA7XG4gIHN1YlR5cGU/OiBJbnB1dFN1YlR5cGU7XG4gIHByZXNldFZhbHVlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFRlbXBsYXRlIHZhcmlhYmxlIG1vZGVsOlxuICAgKiBgYGBcbiAgICoge1xuICAgKiAgICByb3c6IEZvcm1Hcm91cDxURm9ybUdyb3VwPjtcbiAgICogICAgc2NoZW1lOiBJRm9ybVNjaGVtYTtcbiAgICogfVxuICAgKiBgYGBcbiAgICovXG4gIHRlbXBsYXRlUmVmPzogVGVtcGxhdGVSZWY8YW55Pjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgSUZvcm1TY2hlbWEyPFRTdHJ1Y3QgPSBhbnk+XG4gIGV4dGVuZHMgSUZvcm1TY2hlbWE8e1xuICAgIFtLIGluIGtleW9mIFRTdHJ1Y3RdPzogQWJzdHJhY3RDb250cm9sPGFueSwgYW55PjtcbiAgfT4ge31cblxuZXhwb3J0IGludGVyZmFjZSBJRm9ybU9wdGlvbnMge1xuICBbZmllbGQ6IHN0cmluZ106IGFueTtcbn1cbiIsIjwhLS0ge3tmb3JtVmFsdWUoKXxqc29ufX1cbnt7Zm9ybVZhbGlkKCl8anNvbn19IC0tPlxuPGxvYWRlciBbbG9hZGluZ109XCJjb21wdXRlZExvYWRpbmcoKVwiPlxuICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm0oKVwiICNmb3JtVGFnPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwicm93IHJvdy1jb2xzLXt7IGdyaWRTdHlsZSgpIH19IHJvdy1jb2xzLW1kLXt7IGdyaWRNRFN0eWxlKCkgfX0gcm93LWNvbHMtbGcte3tcbiAgICAgICAgZ3JpZExHU3R5bGUoKVxuICAgICAgfX0gcm93LWNvbHMteHhsLXt7IGdyaWRYWExTdHlsZSgpIH19IGFsaWduLWl0ZW1zLWNlbnRlciB7eyBmb3JtR3JpZENsYXNzKCkgfX1cIj5cbiAgICAgIEBmb3IgKHNjaGVtZSBvZiBjb21wdXRlZEZvcm1TY2hlbWEoKTsgdHJhY2sgc2NoZW1lLmZpZWxkKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wge3sgc2NoZW1lLmNscyB9fSBcIj5cbiAgICAgICAgICBAc3dpdGNoICh0cnVlKSB7XG4gICAgICAgICAgICBAY2FzZSAoc2NoZW1lLnR5cGUgPT0gJ3RlbXBsYXRlJykge1xuICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgIGN1c3RvbVRlbXBsYXRlcygpW3NjaGVtZS5maWVsZF07XG4gICAgICAgICAgICAgICAgICBjb250ZXh0OiB7ICRpbXBsaWNpdDogeyBzY2hlbWUsIGZvcm06IGZvcm0oKSB9IH1cbiAgICAgICAgICAgICAgICBcIi8+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAY2FzZSAoc2NoZW1lLnR5cGUgPT0gJ3RlbCcpIHtcbiAgICAgICAgICAgICAgPGFwcC1waG9uZS1udW1iZXJcbiAgICAgICAgICAgICAgICBbZm9ybV09XCJzY2hlbWUuZm9ybSB8fCBmb3JtKClcIlxuICAgICAgICAgICAgICAgIFtsYWJlbF09XCJzY2hlbWUubGFiZWxcIlxuICAgICAgICAgICAgICAgIFtjbGVhck9uRGlzYWJsZV09XCJzY2hlbWUuY2xlYXJPbkRpc2FibGVcIlxuICAgICAgICAgICAgICAgIFtzdGFja2VkXT1cInNjaGVtZS5zdGFja2VkXCJcbiAgICAgICAgICAgICAgICBbbmFtZV09XCJzY2hlbWUuZmllbGRcIlxuICAgICAgICAgICAgICAgIFtub0Zvcm1hdF09XCJzY2hlbWUubm9Gb3JtYXRcIlxuICAgICAgICAgICAgICAgIFt2ZXJib3NlXT1cInNjaGVtZS52ZXJib3NlXCJcbiAgICAgICAgICAgICAgICBbZGVidWddPVwic2NoZW1lLmRlYnVnXCJcbiAgICAgICAgICAgICAgICAobWNoYW5nZSk9XCJtY2hhbmdlRW1pdHRlcigpXCJcbiAgICAgICAgICAgICAgICBbc2hvd1ZhbGlkYXRpb25dPVwic2NoZW1lLnNob3dWYWxpZGF0aW9uIHx8ICEhc2NoZW1lLmFzeW5jVmFsaWRhdG9yc1wiXG4gICAgICAgICAgICAgICAgW3Nob3dWYWxpZGF0aW9uSWNvbl09XCJzY2hlbWUuc2hvd1ZhbGlkYXRpb25JY29uIHx8ICEhc2NoZW1lLmFzeW5jVmFsaWRhdG9yc1wiXG4gICAgICAgICAgICAgICAgW2F1dG9QaWNrVmFsdWVGaWVsZF09XCJzY2hlbWUuYXV0b1BpY2tWYWx1ZUZpZWxkXCJcbiAgICAgICAgICAgICAgICBbc2hvd1JlcXVpcmVkVGFnXT1cInNjaGVtZS5zaG93UmVxdWlyZWRUYWdcIlxuICAgICAgICAgICAgICAgIFtzaG93VmFsaWRhdGlvbk1zZ109XCJzY2hlbWUuc2hvd1ZhbGlkYXRpb25Nc2dcIlxuICAgICAgICAgICAgICAgIFtjb3VudHJ5Q29kZTNdPVwic2NoZW1lLmNvdW50cnlDb2RlM1wiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIlxuICAgICAgICAgICAgICAgICAgc2NoZW1lLmRpc2FibGVkIHx8XG4gICAgICAgICAgICAgICAgICAoc2NoZW1lLmRpc2FibGVkSWYgfCBmdW5jdGlvbkNhbGxlcjI6IGZvcm1WYWx1ZSgpIDogKHNjaGVtZS5maWVsZCB8IHRvQW55KSlcbiAgICAgICAgICAgICAgICBcIiAvPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGNhc2UgKHNjaGVtZS50eXBlID09ICdhdXRvY29tcGxldGUnKSB7XG4gICAgICAgICAgICAgIDxhcHAtYXV0b2NvbXBsZXRlXG4gICAgICAgICAgICAgICAgW2Zvcm1dPVwic2NoZW1lLmZvcm0gfHwgZm9ybSgpXCJcbiAgICAgICAgICAgICAgICBbbGFiZWxdPVwic2NoZW1lLmxhYmVsXCJcbiAgICAgICAgICAgICAgICBbY2xlYXJPbkRpc2FibGVdPVwic2NoZW1lLmNsZWFyT25EaXNhYmxlXCJcbiAgICAgICAgICAgICAgICBbc3RhY2tlZF09XCJzY2hlbWUuc3RhY2tlZFwiXG4gICAgICAgICAgICAgICAgW3ZlcmJvc2VdPVwic2NoZW1lLnZlcmJvc2VcIlxuICAgICAgICAgICAgICAgIFtza2lwRG9lc09wdGlvbkV4aXN0Q2hlY2tdPVwic2NoZW1lLnNraXBEb2VzT3B0aW9uRXhpc3RDaGVja1wiXG4gICAgICAgICAgICAgICAgW3ByZXNldFZhbHVlXT1cInNjaGVtZS5wcmVzZXRWYWx1ZVwiXG4gICAgICAgICAgICAgICAgW2xhYmVsRmllbGRdPVwic2NoZW1lLmxhYmVsRmllbGRcIlxuICAgICAgICAgICAgICAgIFtub0Zvcm1hdF09XCJzY2hlbWUubm9Gb3JtYXRcIlxuICAgICAgICAgICAgICAgIFtzaG93VmFsaWRhdGlvbl09XCJzY2hlbWUuc2hvd1ZhbGlkYXRpb24gfHwgISFzY2hlbWUuYXN5bmNWYWxpZGF0b3JzXCJcbiAgICAgICAgICAgICAgICBbc2hvd1ZhbGlkYXRpb25JY29uXT1cInNjaGVtZS5zaG93VmFsaWRhdGlvbkljb24gfHwgISFzY2hlbWUuYXN5bmNWYWxpZGF0b3JzXCJcbiAgICAgICAgICAgICAgICBbbGFiZWxUeXBlXT1cInNjaGVtZS5sYWJlbFR5cGUgfCB0b0FueVwiXG4gICAgICAgICAgICAgICAgKG1jaGFuZ2UpPVwibWNoYW5nZUVtaXR0ZXIoKVwiXG4gICAgICAgICAgICAgICAgKG1TZWxlY3RlZE9wdGlvbkxhYmVsKT1cInNldE9wdGlvbkxhYmVsKCRldmVudCwgc2NoZW1lKVwiXG4gICAgICAgICAgICAgICAgW25hbWVdPVwic2NoZW1lLmZpZWxkXCJcbiAgICAgICAgICAgICAgICBbZGVidWddPVwic2NoZW1lLmRlYnVnXCJcbiAgICAgICAgICAgICAgICBbc2V0Rm9ybWF0dGVkVmFsdWVdPVwic2NoZW1lLnNldENvbnRyb2xGb3JtYXR0ZWRWYWx1ZVwiXG4gICAgICAgICAgICAgICAgW3Nob3dSZXF1aXJlZFRhZ109XCJzY2hlbWUuc2hvd1JlcXVpcmVkVGFnXCJcbiAgICAgICAgICAgICAgICBbb3B0aW9uRm9ybWF0dGVyXT1cInNjaGVtZS5vcHRpb25Gb3JtYXR0ZXJcIlxuICAgICAgICAgICAgICAgIFt2YWx1ZUZpZWxkXT1cInNjaGVtZS52YWx1ZUZpZWxkXCJcbiAgICAgICAgICAgICAgICBbb3B0aW9uc0Z1bmNdPVwic2NoZW1lLm9wdGlvbnNGdW5jXCJcbiAgICAgICAgICAgICAgICBbc2hvd1ZhbGlkYXRpb25Nc2ddPVwic2NoZW1lLnNob3dWYWxpZGF0aW9uTXNnXCJcbiAgICAgICAgICAgICAgICBbYXV0b1BpY2tWYWx1ZUZpZWxkXT1cInNjaGVtZS5hdXRvUGlja1ZhbHVlRmllbGRcIlxuICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cInNjaGVtZS5vcHRpb25zIHx8IG9wdGlvbnNNYXAoKVtzY2hlbWUuZmllbGQgfCB0b0FueV1cIlxuICAgICAgICAgICAgICAgIFtoaW50XT1cInNjaGVtZS5oaW50XCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiXG4gICAgICAgICAgICAgICAgICBzY2hlbWUuZGlzYWJsZWQgfHxcbiAgICAgICAgICAgICAgICAgIChzY2hlbWUuZGlzYWJsZWRJZiB8IGZ1bmN0aW9uQ2FsbGVyMjogZm9ybVZhbHVlKCkgOiAoc2NoZW1lLmZpZWxkIHwgdG9BbnkpKVxuICAgICAgICAgICAgICAgIFwiIC8+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAY2FzZSAoc2NoZW1lLnR5cGUgPT0gJ3JpY2h0ZXh0Jykge1xuICAgICAgICAgICAgICA8cmljaC10ZXh0LWVkaXRvci1yZlxuICAgICAgICAgICAgICAgIFtmb3JtXT1cInNjaGVtZS5mb3JtIHx8IGZvcm0oKVwiXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cInNjaGVtZS5sYWJlbCFcIlxuICAgICAgICAgICAgICAgIFtjbGVhck9uRGlzYWJsZV09XCJzY2hlbWUuY2xlYXJPbkRpc2FibGUhXCJcbiAgICAgICAgICAgICAgICBbc3RhY2tlZF09XCJzY2hlbWUuc3RhY2tlZFwiXG4gICAgICAgICAgICAgICAgW3ZlcmJvc2VdPVwic2NoZW1lLnZlcmJvc2VcIlxuICAgICAgICAgICAgICAgIFtsYWJlbEZpZWxkXT1cInNjaGVtZS5sYWJlbEZpZWxkIVwiXG4gICAgICAgICAgICAgICAgW25vRm9ybWF0XT1cInNjaGVtZS5ub0Zvcm1hdCFcIlxuICAgICAgICAgICAgICAgIFtzaG93VmFsaWRhdGlvbl09XCJzY2hlbWUuc2hvd1ZhbGlkYXRpb24gfHwgISFzY2hlbWUuYXN5bmNWYWxpZGF0b3JzXCJcbiAgICAgICAgICAgICAgICBbc2hvd1ZhbGlkYXRpb25JY29uXT1cInNjaGVtZS5zaG93VmFsaWRhdGlvbkljb24gfHwgISFzY2hlbWUuYXN5bmNWYWxpZGF0b3JzXCJcbiAgICAgICAgICAgICAgICBbbGFiZWxUeXBlXT1cInNjaGVtZS5sYWJlbFR5cGUgfCB0b0FueVwiXG4gICAgICAgICAgICAgICAgKG1jaGFuZ2UpPVwibWNoYW5nZUVtaXR0ZXIoKVwiXG4gICAgICAgICAgICAgICAgKG1TZWxlY3RlZE9wdGlvbkxhYmVsKT1cInNldE9wdGlvbkxhYmVsKCRldmVudCwgc2NoZW1lKVwiXG4gICAgICAgICAgICAgICAgW25hbWVdPVwic2NoZW1lLmZpZWxkXCJcbiAgICAgICAgICAgICAgICBbZGVidWddPVwic2NoZW1lLmRlYnVnIVwiXG4gICAgICAgICAgICAgICAgW3NldEZvcm1hdHRlZFZhbHVlXT1cInNjaGVtZS5zZXRDb250cm9sRm9ybWF0dGVkVmFsdWVcIlxuICAgICAgICAgICAgICAgIFtzaG93UmVxdWlyZWRUYWddPVwic2NoZW1lLnNob3dSZXF1aXJlZFRhZyFcIlxuICAgICAgICAgICAgICAgIFtvcHRpb25Gb3JtYXR0ZXJdPVwic2NoZW1lLm9wdGlvbkZvcm1hdHRlciFcIlxuICAgICAgICAgICAgICAgIFt2YWx1ZUZpZWxkXT1cInNjaGVtZS52YWx1ZUZpZWxkIVwiXG4gICAgICAgICAgICAgICAgW29wdGlvbnNGdW5jXT1cInNjaGVtZS5vcHRpb25zRnVuYyFcIlxuICAgICAgICAgICAgICAgIFtzaG93VmFsaWRhdGlvbk1zZ109XCJzY2hlbWUuc2hvd1ZhbGlkYXRpb25Nc2dcIlxuICAgICAgICAgICAgICAgIFthdXRvUGlja1ZhbHVlRmllbGRdPVwic2NoZW1lLmF1dG9QaWNrVmFsdWVGaWVsZCFcIlxuICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cInNjaGVtZS5vcHRpb25zIHx8IG9wdGlvbnNNYXAoKVtzY2hlbWUuZmllbGQgfCB0b0FueV1cIlxuICAgICAgICAgICAgICAgIFtoaW50XT1cInNjaGVtZS5oaW50IVwiXG4gICAgICAgICAgICAgICAgW21heExlbmd0aF09XCJzY2hlbWUubWF4TGVuZ3RoXCJcbiAgICAgICAgICAgICAgICBbbWluTGVuZ3RoXT1cInNjaGVtZS5taW5MZW5ndGhcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJcbiAgICAgICAgICAgICAgICAgIHNjaGVtZS5kaXNhYmxlZCB8fFxuICAgICAgICAgICAgICAgICAgKHNjaGVtZS5kaXNhYmxlZElmISB8IGZ1bmN0aW9uQ2FsbGVyMjogZm9ybVZhbHVlKCkgOiAoc2NoZW1lLmZpZWxkIHwgdG9BbnkpKVxuICAgICAgICAgICAgICAgIFwiIC8+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAZGVmYXVsdCB7XG4gICAgICAgICAgICAgIDxhcHAtaW5wdXQtYmFzaWNcbiAgICAgICAgICAgICAgICBbbm9Gb3JtYXRdPVwic2NoZW1lLm5vRm9ybWF0XCJcbiAgICAgICAgICAgICAgICBbbmFtZV09XCJzY2hlbWUuZmllbGRcIlxuICAgICAgICAgICAgICAgIFtmb3JtXT1cInNjaGVtZS5mb3JtIHx8IGZvcm0oKVwiXG4gICAgICAgICAgICAgICAgW2NsZWFyT25EaXNhYmxlXT1cInNjaGVtZS5jbGVhck9uRGlzYWJsZVwiXG4gICAgICAgICAgICAgICAgW3R5cGVdPVwic2NoZW1lLnR5cGVcIlxuICAgICAgICAgICAgICAgIFt2ZXJib3NlXT1cInNjaGVtZS52ZXJib3NlXCJcbiAgICAgICAgICAgICAgICBbdmFsdWVGaWVsZF09XCJzY2hlbWUudmFsdWVGaWVsZFwiXG4gICAgICAgICAgICAgICAgW2F1dG9QaWNrVmFsdWVGaWVsZF09XCJzY2hlbWUuYXV0b1BpY2tWYWx1ZUZpZWxkXCJcbiAgICAgICAgICAgICAgICBbcHJlc2V0VmFsdWVdPVwic2NoZW1lLnByZXNldFZhbHVlXCJcbiAgICAgICAgICAgICAgICBbc3RhY2tlZF09XCJzY2hlbWUuc3RhY2tlZFwiXG4gICAgICAgICAgICAgICAgW2xhYmVsVHlwZV09XCJzY2hlbWUubGFiZWxUeXBlIHwgdG9BbnlcIlxuICAgICAgICAgICAgICAgIFtjaGVja2VkU2lnbmFsXT1cInNjaGVtZS5jaGVja2VkXCJcbiAgICAgICAgICAgICAgICBbc2hvd1ZhbGlkYXRpb25dPVwic2NoZW1lLnNob3dWYWxpZGF0aW9uIHx8ICEhc2NoZW1lLmFzeW5jVmFsaWRhdG9yc1wiXG4gICAgICAgICAgICAgICAgW3Nob3dWYWxpZGF0aW9uSWNvbl09XCJzY2hlbWUuc2hvd1ZhbGlkYXRpb25JY29uIHx8ICEhc2NoZW1lLmFzeW5jVmFsaWRhdG9yc1wiXG4gICAgICAgICAgICAgICAgW2RlYnVnXT1cInNjaGVtZS5kZWJ1Z1wiXG4gICAgICAgICAgICAgICAgKG1jaGFuZ2UpPVwibWNoYW5nZUVtaXR0ZXIoKVwiXG4gICAgICAgICAgICAgICAgW3NldEZvcm1hdHRlZFZhbHVlXT1cInNjaGVtZS5zZXRDb250cm9sRm9ybWF0dGVkVmFsdWVcIlxuICAgICAgICAgICAgICAgIFtzaG93UmVxdWlyZWRUYWddPVwic2NoZW1lLnNob3dSZXF1aXJlZFRhZ1wiXG4gICAgICAgICAgICAgICAgW2xhYmVsRmllbGRdPVwic2NoZW1lLmxhYmVsRmllbGRcIlxuICAgICAgICAgICAgICAgIFtvcHRpb25Gb3JtYXR0ZXJdPVwic2NoZW1lLm9wdGlvbkZvcm1hdHRlclwiXG4gICAgICAgICAgICAgICAgKG1TZWxlY3RlZE9wdGlvbkxhYmVsKT1cInNldE9wdGlvbkxhYmVsKCRldmVudCwgc2NoZW1lKVwiXG4gICAgICAgICAgICAgICAgW29wdGlvbnNdPVwic2NoZW1lLm9wdGlvbnMgfHwgb3B0aW9uc01hcCgpW3NjaGVtZS5maWVsZCB8IHRvQW55XVwiXG4gICAgICAgICAgICAgICAgW2RlY2ltYWxQb2ludHNdPVwic2NoZW1lLmRlY2ltYWxQb2ludHNcIlxuICAgICAgICAgICAgICAgIFtoaW50XT1cInNjaGVtZS5oaW50XCJcbiAgICAgICAgICAgICAgICBbbWF4XT1cInNjaGVtZS5tYXhcIlxuICAgICAgICAgICAgICAgIFttaW5dPVwic2NoZW1lLm1pblwiXG4gICAgICAgICAgICAgICAgW21heExlbmd0aF09XCJzY2hlbWUubWF4TGVuZ3RoXCJcbiAgICAgICAgICAgICAgICBbbWluTGVuZ3RoXT1cInNjaGVtZS5taW5MZW5ndGhcIlxuICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJzY2hlbWUucGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgIFtsYWJlbF09XCJzY2hlbWUubGFiZWxcIlxuICAgICAgICAgICAgICAgIFtzaG93VmFsaWRhdGlvbk1zZ109XCJzY2hlbWUuc2hvd1ZhbGlkYXRpb25Nc2dcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJcbiAgICAgICAgICAgICAgICAgIHNjaGVtZS5kaXNhYmxlZCB8fFxuICAgICAgICAgICAgICAgICAgKHNjaGVtZS5kaXNhYmxlZElmIHwgZnVuY3Rpb25DYWxsZXIyOiBmb3JtVmFsdWUoKSA6IChzY2hlbWUuZmllbGQgfCB0b0FueSkpXG4gICAgICAgICAgICAgICAgXCIgLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJyb3cgcm93LWNvbHMtYXV0byBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiXCI+XG4gICAgICAgIEBpZiAoc2hvd1N1Ym1pdEJ0bigpKSB7XG4gICAgICAgICAgPGFwcC1idG5cbiAgICAgICAgICAgIFt0ZXh0XT1cInN1Ym1pdEJ0blRleHQoKVwiXG4gICAgICAgICAgICBncm91cD1cInN1Ym1pdFwiXG4gICAgICAgICAgICBbZm9ybV09XCJmb3JtKClcIlxuICAgICAgICAgICAgKG1jbGljayk9XCJzdWJtaXQoc3VibWl0QnRuKVwiXG4gICAgICAgICAgICAjc3VibWl0QnRuIC8+XG4gICAgICAgIH1cbiAgICAgICAgQGlmIChzdWJtaXRCdG5UZW1wbGF0ZSgpKSB7XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInN1Ym1pdEJ0blRlbXBsYXRlKClcIi8+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Zvcm0+XG48L2xvYWRlcj5cbiJdfQ==
|
|
266
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1nZW5lcmF0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXRzLWZlLW5nLXNkay9zcmMvbGliL1NoYXJlZC9jb21wb25lbnRzL2Zvcm0tZ2VuZXJhdG9yL2Zvcm0tZ2VuZXJhdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy9mb3JtLWdlbmVyYXRvci9mb3JtLWdlbmVyYXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUdULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUVOLFFBQVEsRUFDUixNQUFNLEVBQ04sTUFBTSxFQUNOLEtBQUssRUFDTCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBRUwsV0FBVyxFQUNYLFNBQVMsRUFDVCxXQUFXLEVBQ1gsbUJBQW1CLEVBQ25CLFVBQVUsR0FDWCxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxTQUFTLEVBQVcsTUFBTSxXQUFXLENBQUM7QUFDL0MsT0FBTyxFQUNMLFlBQVksRUFDWixNQUFNLEVBRU4sU0FBUyxFQUNULEdBQUcsRUFDSCxHQUFHLEVBQ0gsU0FBUyxHQUVWLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDcEQsT0FBTyxFQUFFLG1CQUFtQixFQUFtQixNQUFNLGdDQUFnQyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQy9FLE9BQU8sRUFBRSwwQkFB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VTtzQkFBbEIsS0FBSztnQkF1QzhCLFdBQVc7c0JBQTlDLEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFO2dCQUdZLGlCQUFpQjtzQkFBMUQsS0FBSzt1QkFBQyxFQUFFLEtBQUssRUFBRSxrQkFBa0IsRUFBRTtnQkFhZixPQUFPO3NCQUEzQixLQUFLO3VCQUFDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBEZXN0cm95UmVmLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFRlbXBsYXRlUmVmLFxuICBjb21wdXRlZCxcbiAgZWZmZWN0LFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBtb2RlbCxcbiAgc2lnbmFsLFxuICB2aWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQWJzdHJhY3RDb250cm9sLFxuICBGb3JtQ29udHJvbCxcbiAgRm9ybUdyb3VwLFxuICBGb3Jtc01vZHVsZSxcbiAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgVmFsaWRhdG9ycyxcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgY2xvbmVEZWVwLCBpc0VxdWFsIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7XG4gIGRlYm91bmNlVGltZSxcbiAgZmlsdGVyLFxuICBsYXN0LFxuICBzd2l0Y2hNYXAsXG4gIHRhcCxcbiAgbWFwLFxuICBzdGFydFdpdGgsXG4gIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxufSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBGdW5jdGlvbkNhbGxlcjIsIFRvQW55UGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL3V0aWxpdHkucGlwZSc7XG5pbXBvcnQgeyBCdG5Db21wb25lbnQgfSBmcm9tICcuLi9idG4vYnRuLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJbnB1dEJhc2ljQ29tcG9uZW50LCBPcHRpb25MYWJlbFR5cGUgfSBmcm9tICcuLi9pbnB1dC9pbnB1dC1iYXNpYy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQXV0b2NvbXBsZXRlQ29tcG9uZW50IH0gZnJvbSAnLi4vYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVmFsaWRhdGlvbk1lc3NhZ2VDb21wb25lbnQgfSBmcm9tICcuLi9pbnB1dC92YWxpZGF0aW9uLW1lc3NhZ2UvdmFsaWRhdGlvbi1tZXNzYWdlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQaG9uZU51bWJlckNvbXBvbmVudCB9IGZyb20gJy4uL3Bob25lLW51bWJlci9waG9uZS1udW1iZXIuY29tcG9uZW50JztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSwgTmdTd2l0Y2hEZWZhdWx0LCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IExvYWRlckNvbXBvbmVudCB9IGZyb20gJy4uL2xvYWRlci9sb2FkZXIuY29tcG9uZW50JztcbmltcG9ydCB7IElucHV0U3ViVHlwZSB9IGZyb20gJy4uLy4uL21vZGVscy9pbmRleC5tb2RlbCc7XG5pbXBvcnQgeyBSaWNoVGV4dEVkaXRvclJGQ29tcG9uZW50IH0gZnJvbSAnLi4vcmljaC10ZXh0LWVkaXRvci1yZi9yaWNoLXRleHQtZWRpdG9yLXJmLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGb3JtR2VuZXJhdG9yU2VydmljZSB9IGZyb20gJy4vZm9ybS1nZW5lcmF0b3Iuc2VydmljZSc7XG5pbXBvcnQgeyBCYXNlRm9ybUdlbmVyYXRvciwgSUJhc2VGb3JtU2NoZW1hIH0gZnJvbSAnLi9mb3JtLWdlbmVyYXRvci5iYXNlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24sIGZyb21FdmVudCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdG9PYnNlcnZhYmxlLCB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcblxuLyoqXG4gKiBGb3JtIHNob3VsZCBiZSBzZXQgYmVmb3JlIHRoZSB0aGUgZm9ybVNjaGVtYVxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmb3JtLWdlbmVyYXRvcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9mb3JtLWdlbmVyYXRvci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Zvcm0tZ2VuZXJhdG9yLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIC8vICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW1xuICAgIExvYWRlckNvbXBvbmVudCxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgUGhvbmVOdW1iZXJDb21wb25lbnQsXG4gICAgVmFsaWRhdGlvbk1lc3NhZ2VDb21wb25lbnQsXG4gICAgQXV0b2NvbXBsZXRlQ29tcG9uZW50LFxuICAgIE5nU3dpdGNoRGVmYXVsdCxcbiAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgIElucHV0QmFzaWNDb21wb25lbnQsXG4gICAgUmljaFRleHRFZGl0b3JSRkNvbXBvbmVudCxcbiAgICBCdG5Db21wb25lbnQsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBGdW5jdGlvbkNhbGxlcjIsXG4gICAgVG9BbnlQaXBlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBGb3JtR2VuZXJhdG9yQ29tcG9uZW50PFxuICBURm9ybUdyb3VwIGV4dGVuZHMgeyBbSyBpbiBrZXlvZiBURm9ybUdyb3VwXTogQWJzdHJhY3RDb250cm9sPGFueSwgYW55PiB9LFxuICBURm9ybVNjaGVtYSBleHRlbmRzIElGb3JtU2NoZW1hPFRGb3JtR3JvdXA+ID0gSUZvcm1TY2hlbWE8VEZvcm1Hcm91cD4sXG4+IGV4dGVuZHMgQmFzZUZvcm1HZW5lcmF0b3I8VEZvcm1Hcm91cCwgVEZvcm1TY2hlbWE+IHtcbiAgQElucHV0KCkga2V5RmllbGQ6ICdmaWVsZCcgfCAnbGFiZWwnID0gJ2ZpZWxkJztcbiAgcmVhZG9ubHkgcHJlc2V0VmFsdWVGb3JTaW5nbGVPcHRpb24gPSBpbnB1dChmYWxzZSk7XG4gIHJlYWRvbmx5IGlzQ3JlYXRlID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgcmVhZG9ubHkgc3VibWl0T25FbnRlcktleSA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgZm9ybVRhZ1JlZiA9IHZpZXdDaGlsZDxFbGVtZW50UmVmPEhUTUxGb3JtRWxlbWVudD4+KCdmb3JtVGFnJyk7XG5cbiAgLyoqRW1pdHRlZCBqdXN0IGJlZm9yZSBjYWxsaW5nIHRoZSBzYXZlIGZ1bmN0aW9uICovXG4gIEBPdXRwdXQoKSBvblN1Ym1pdCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgbWNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAvKipFbWl0dGVkIGFmdGVyIHJlY2VpdmluZyBmZWVkYmFjayBmcm9tIHRoZSBzdWJtaXQgZnVuY3Rpb24gKi9cbiAgQE91dHB1dCgpIHNhdmVkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBJbnB1dCgpIHN1Ym1pdEZ1bmM6ICh2YWx1ZTogYW55KSA9PiBQcm9taXNlPGFueT47XG4gIHJlYWRvbmx5IHN1Ym1pdEJ0blRleHQgPSBpbnB1dCgnU3VibWl0Jyk7XG4gIHJlYWRvbmx5IHN1Ym1pdEJ0blRlbXBsYXRlID0gaW5wdXQ8VGVtcGxhdGVSZWY8YW55Pj4oKTtcbiAgcmVhZG9ubHkgc3VibWl0U3VjY2Vzc1RleHQgPSBpbnB1dCgnU2F2ZWQgc3VjY2Vzc2Z1bGx5Jyk7XG4gIHJlYWRvbmx5IHNob3dTdWJtaXRCdG4gPSBpbnB1dCh0cnVlKTtcblxuICByZWFkb25seSBncmlkU3R5bGUgPSBpbnB1dDxudW1iZXIgfCAnYXV0byc+KCk7XG4gIHJlYWRvbmx5IGdyaWRNRFN0eWxlID0gaW5wdXQ8bnVtYmVyIHwgJ2F1dG8nPigpO1xuICByZWFkb25seSBncmlkTEdTdHlsZSA9IGlucHV0PG51bWJlciB8ICdhdXRvJz4oKTtcbiAgcmVhZG9ubHkgZ3JpZFhYTFN0eWxlID0gaW5wdXQ8bnVtYmVyIHwgJ2F1dG8nPigpO1xuXG4gIHJlYWRvbmx5IGZvcm1HcmlkQ2xhc3MgPSBpbnB1dDxzdHJpbmc+KCk7XG4gIHJlYWRvbmx5IHVzZUxvYWRlciA9IGlucHV0PGJvb2xlYW4+KCk7XG4gIHJlYWRvbmx5IGxvYWRpbmcgPSBpbnB1dDxib29sZWFuPigpO1xuXG4gIHJlYWRvbmx5IF9sb2FkaW5nID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcblxuICByZWFkb25seSBjb21wdXRlZExvYWRpbmcgPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMudXNlTG9hZGVyKCkgPyB0aGlzLmxvYWRpbmcoKSB8fCB0aGlzLl9sb2FkaW5nKCkgOiBmYWxzZSxcbiAgKTtcblxuICByZWFkb25seSBzdWJtaXRCdG5SZWYgPSB2aWV3Q2hpbGQ8QnRuQ29tcG9uZW50Pignc3VibWl0QnRuJyk7XG4gIHJlYWRvbmx5IGZvcm0gPSBtb2RlbDxGb3JtR3JvdXA8VEZvcm1Hcm91cD4+KCk7XG4gIHJlYWRvbmx5IGZvcm0kID0gdG9PYnNlcnZhYmxlKHRoaXMuZm9ybSk7XG5cbiAgcmVhZG9ubHkgZm9ybVZhbHVlJCA9IHRoaXMuZm9ybSQucGlwZShcbiAgICBmaWx0ZXIoKCkgPT4gISF0aGlzLmZvcm0oKSksXG4gICAgc3dpdGNoTWFwKCgpID0+XG4gICAgICB0aGlzLmZvcm0oKVxuICAgICAgICAudmFsdWVDaGFuZ2VzLnBpcGUobWFwKCgpID0+IHRoaXMuZm9ybSgpPy5nZXRSYXdWYWx1ZSgpIHx8IHt9KSlcbiAgICAgICAgLnBpcGUoc3RhcnRXaXRoKHRoaXMuZm9ybSgpPy5nZXRSYXdWYWx1ZSgpIHx8IHt9KSksXG4gICAgKSxcbiAgKTtcbiAgcmVhZG9ubHkgZm9ybVZhbHVlID0gdG9TaWduYWwoXG4gICAgdGhpcy5mb3JtVmFsdWUkLFxuICAgIC8vIHsgaW5pdGlhbFZhbHVlOiB0aGlzLmZvcm0oKT8uZ2V0UmF3VmFsdWUoKSB8fCB7fSB9LFxuICApO1xuXG4gIHN1Ym1pc3Npb25SZXNwb25zZTogYW55O1xuICBASW5wdXQoeyBhbGlhczogJ2Zvcm1TY2hlbWEnIH0pIHNldCBfZm9ybVNjaGVtYSh2OiBURm9ybVNjaGVtYVtdIHwgSUZvcm1TY2hlbWE8YW55PltdKSB7XG4gICAgdGhpcy5pbml0KGNsb25lRGVlcCh2LmZpbHRlcigoeCkgPT4geCkpIGFzIFRGb3JtU2NoZW1hW10pO1xuICB9XG4gIEBJbnB1dCh7IGFsaWFzOiAnZm9ybVNjaGVtYU5vRm9ybScgfSkgc2V0IF9mb3JtU2NoZW1hTm9Gb3JtKHY6IFRGb3JtU2NoZW1hW10pIHtcbiAgICBpZiAodikge1xuICAgICAgY29uc3QgZm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xuICAgICAgZm9yIChjb25zdCBpdGVtIG9mIHYpIHtcbiAgICAgICAgZm9ybS5hZGRDb250cm9sKFxuICAgICAgICAgIGl0ZW0uZmllbGQ/LnRvU3RyaW5nKCksXG4gICAgICAgICAgbmV3IEZvcm1Db250cm9sKGl0ZW0udmFsdWUsIFtdLmNvbmNhdChpdGVtLmlzUmVxdWlyZWQgPyBbVmFsaWRhdG9ycy5yZXF1aXJlZF0gOiBbXSkpLFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgdGhpcy5mb3JtLnNldChmb3JtIGFzIGFueSBhcyBGb3JtR3JvdXA8VEZvcm1Hcm91cD4pO1xuICAgICAgdGhpcy5fZm9ybVNjaGVtYSA9IHY7XG4gICAgfVxuICB9XG4gIEBJbnB1dCgnaXNTaG93Jykgc2V0IF9pc1Nob3codjogYm9vbGVhbikge1xuICAgIGlmICh2KSB0aGlzLmZvcm0oKT8uZGlzYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgZWxzZSB0aGlzLmZvcm0oKT8uZW5hYmxlKCk7XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICh2KSB0aGlzLmZvcm0oKT8uZGlzYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICBlbHNlIHRoaXMuZm9ybSgpPy5lbmFibGUoKTtcbiAgICB9LCA1MDApO1xuICB9XG4gIHJlYWRvbmx5IG9wdGlvbnNNYXAgPSBzaWduYWw8SUZvcm1PcHRpb25zPih7fSk7XG4gIC8vIGZvcm1WYWwgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmZvcm0/LmdldFJhd1ZhbHVlKCkpO1xuXG4gIHJlYWRvbmx5IGNvbXB1dGVkRm9ybVNjaGVtYSA9IGNvbXB1dGVkPElGb3JtU2NoZW1hPFRGb3JtR3JvdXA+W10+KCgpID0+IHtcbiAgICBjb25zdCBmb3JtU2NoZW1hID0gdGhpcy5mb3JtU2NoZW1hKCkgfHwgW10sXG4gICAgICBwcmVzZXRWYWx1ZUZvclNpbmdsZU9wdGlvbiA9IHRoaXMucHJlc2V0VmFsdWVGb3JTaW5nbGVPcHRpb24oKSxcbiAgICAgIGlzQ3JlYXRlID0gdGhpcy5pc0NyZWF0ZSgpLFxuICAgICAgcmV0OiBJRm9ybVNjaGVtYTxURm9ybUdyb3VwPltdID0gW107XG4gICAgZm9ybVNjaGVtYS5mb3JFYWNoKChzY2hlbWUpID0+IHtcbiAgICAgIGlmICghc2NoZW1lLmhpZGRlbikge1xuICAgICAgICBpZiAoaXNDcmVhdGUpXG4gICAgICAgICAgc2NoZW1lLnByZXNldFZhbHVlID1cbiAgICAgICAgICAgIHNjaGVtZS5wcmVzZXRWYWx1ZSA9PSBudWxsID8gcHJlc2V0VmFsdWVGb3JTaW5nbGVPcHRpb24gOiBzY2hlbWUucHJlc2V0VmFsdWU7XG4gICAgICAgIHJldC5wdXNoKHNjaGVtZSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYgKHJldC5zb21lKCh4KSA9PiAheC5maWVsZCkpIGRlYnVnZ2VyO1xuICAgIHJldHVybiByZXQ7XG4gIH0pO1xuICAvLyBtaXNjSW5kZXg6IFRNaXNjSW5kZXg7XG4gIHB1YmxpYyBmb3JtU2VydmljZSA9IGluamVjdChGb3JtR2VuZXJhdG9yU2VydmljZSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIGxldCBsaXN0ZW5Ub0tleTogU3Vic2NyaXB0aW9uO1xuICAgIHRoaXMuZGVzdHJveVJlZi5vbkRlc3Ryb3koKCkgPT4ge1xuICAgICAgbGlzdGVuVG9LZXk/LnVuc3Vic2NyaWJlKCk7XG4gICAgfSk7XG4gICAgLy8gZWZmZWN0KCgpID0+IHtcbiAgICAvLyAgIGNvbnNvbGUubG9nKHRoaXMuZm9ybVNjaGVtYSgpKTtcbiAgICAvLyB9KTtcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgZnRyID0gdGhpcy5mb3JtVGFnUmVmKCksXG4gICAgICAgIHN1Ym1pdE9uRW50ZXJLZXkgPSB0aGlzLnN1Ym1pdE9uRW50ZXJLZXkoKTtcbiAgICAgIC8vIGRlYnVnZ2VyO1xuXG4gICAgICBsaXN0ZW5Ub0tleT8udW5zdWJzY3JpYmUoKTtcbiAgICAgIGlmIChmdHI/Lm5hdGl2ZUVsZW1lbnQgJiYgc3VibWl0T25FbnRlcktleSlcbiAgICAgICAgbGlzdGVuVG9LZXkgPSBmcm9tRXZlbnQoZnRyLm5hdGl2ZUVsZW1lbnQsICdrZXlkb3duJylcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIGRlYm91bmNlVGltZSgxMDApLFxuICAgICAgICAgICAgZmlsdGVyKFxuICAgICAgICAgICAgICAocjogS2V5Ym9hcmRFdmVudCkgPT4gKHIuY29kZSA9PT0gJ0VudGVyJyB8fCByLmtleUNvZGUgPT09IDEzKSAmJiB0aGlzLmZvcm0oKS52YWxpZCxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgKVxuICAgICAgICAgIC5zdWJzY3JpYmUoKHI6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc3VibWl0KHRoaXMuc3VibWl0QnRuUmVmKCkpO1xuICAgICAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgaW5pdChzY2hlbWE6IFRGb3JtU2NoZW1hW10pIHtcbiAgICAvLyBkZWJ1Z2dlcjtcbiAgICBpZiAodGhpcy5kZWJ1ZygpKSBkZWJ1Z2dlcjtcbiAgICB0aGlzLm9uRGVzdHJveSgpO1xuICAgIHRoaXMuX3NldEZvcm1TY2hlbWFzKHNjaGVtYSB8fCBbXSk7XG4gICAgaWYgKHNjaGVtYSkgZm9yIChjb25zdCBzY2hlbWUgb2Ygc2NoZW1hKSB0aGlzLmhhbmRsZUZvcm1TY2hlbWUoc2NoZW1lKTtcbiAgICBpZiAoc2NoZW1hKVxuICAgICAgZm9yIChjb25zdCBzY2hlbWUgb2Ygc2NoZW1hKVxuICAgICAgICBpZiAoc2NoZW1lLnRyaWdnZXJPbkNoYW5nZU9uSW5pdCkge1xuICAgICAgICAgIGNvbnN0IGZvcm1WYWx1ZSA9IHRoaXMuZm9ybSgpPy5nZXRSYXdWYWx1ZSgpO1xuICAgICAgICAgIHNjaGVtZS5vbkNoYW5nZUZ1bmMoZm9ybVZhbHVlLCBmb3JtVmFsdWVbc2NoZW1lLmZpZWxkPy50b1N0cmluZygpXSwgdGhpcyk7XG4gICAgICAgIH1cbiAgfVxuXG4gIGhhbmRsZUZvcm1TY2hlbWUoc2NoZW1lOiBURm9ybVNjaGVtYSkge1xuICAgIHNjaGVtZS5pZCA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2VuZXJhdGVVVUlEKCk7XG4gICAgaWYgKHNjaGVtZS5zdGFja2VkID09IG51bGwpIHNjaGVtZS5zdGFja2VkID0gdHJ1ZTtcbiAgICBpZiAoc2NoZW1lLnNob3dWYWxpZGF0aW9uTXNnID09IG51bGwpIHNjaGVtZS5zaG93VmFsaWRhdGlvbk1zZyA9IHRydWU7XG4gICAgaWYgKHRoaXMuZm9ybVNlcnZpY2UuY29uZmlnLnNob3dWYWxpZGF0aW9uTWVzc2FnZXNCeURlZmF1bHQpXG4gICAgICBpZiAoc2NoZW1lLmF1dG9QaWNrVmFsdWVGaWVsZCA9PSBudWxsICYmICghc2NoZW1lLnZhbHVlRmllbGQgfHwgIXNjaGVtZS5sYWJlbEZpZWxkKSlcbiAgICAgICAgc2NoZW1lLmF1dG9QaWNrVmFsdWVGaWVsZCA9IHRydWU7XG4gICAgLy8gaWYgKCF0aGlzLmZvcm0uY29udHJvbHNbc2NoZW1lLmZpZWxkIGFzIGFueV0pIGRlYnVnZ2VyO1xuICAgIHRoaXMudXBkYXRlRm9ybVNjaGVtYShzY2hlbWUuZmllbGQsIHNjaGVtZSk7XG5cbiAgICBpZiAoc2NoZW1lLm9wdGlvbnNJbml0RnVuYykgdGhpcy5oYW5kbGVPcHRpb25zRmV0Y2hlZChzY2hlbWUsIHNjaGVtZS5vcHRpb25zSW5pdEZ1bmMpO1xuICAgIGlmIChzY2hlbWUub3B0aW9uc0luaXRGdW5jMikgdGhpcy5oYW5kbGVPcHRpb25zRmV0Y2hlZChzY2hlbWUsIHNjaGVtZS5vcHRpb25zSW5pdEZ1bmMyKCkpO1xuICAgIGlmIChzY2hlbWUub25DaGFuZ2VGdW5jKSB7XG4gICAgICBpZiAoc2NoZW1lLmRlYnVnKSBkZWJ1Z2dlcjtcbiAgICAgIHRoaXMuc3Vic1tzY2hlbWUuZmllbGQ/LnRvU3RyaW5nKCldID0gdGhpcy5mb3JtJFxuICAgICAgICAucGlwZShcbiAgICAgICAgICBzd2l0Y2hNYXAoKGZvcm0pID0+XG4gICAgICAgICAgICBmb3JtPy5jb250cm9sc1tzY2hlbWUuZmllbGQ/LnRvU3RyaW5nKCldPy52YWx1ZUNoYW5nZXMucGlwZShkZWJvdW5jZVRpbWUoMCkpLFxuICAgICAgICAgICksXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgocikgPT4ge1xuICAgICAgICAgIHNjaGVtZS5vbkNoYW5nZUZ1bmModGhpcy5mb3JtVmFsdWUoKSwgciwgdGhpcyk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAoc2NoZW1lLm9uRm9ybUNoYW5nZSkge1xuICAgICAgaWYgKHNjaGVtZS5kZWJ1ZykgZGVidWdnZXI7XG4gICAgICB0aGlzLnN1YnNbc2NoZW1lLmZpZWxkPy50b1N0cmluZygpICsgJ19vbkZvcm1DaGFuZ2UnXSA9IHRoaXMuZm9ybVZhbHVlJFxuICAgICAgICAucGlwZShzY2hlbWUub25Gb3JtQ2hhbmdlUGlwZU9wZXJhdG9ycyA/IHNjaGVtZS5vbkZvcm1DaGFuZ2VQaXBlT3BlcmF0b3JzKCkgOiB0YXAoKSlcbiAgICAgICAgLnN1YnNjcmliZSgocikgPT4ge1xuICAgICAgICAgIHNjaGVtZS5vbkZvcm1DaGFuZ2Uociwgcj8uW3NjaGVtZS5maWVsZF0sIHRoaXMpO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlT3B0aW9uc0ZldGNoZWQoc2NoZW1lOiBURm9ybVNjaGVtYSwgb3B0aW9ucyQ6IE9ic2VydmFibGU8YW55W10+KSB7XG4gICAgb3B0aW9ucyQuc3Vic2NyaWJlKChyKSA9PiB7XG4gICAgICB0aGlzLnVwZGF0ZUZvcm1TY2hlbWEoc2NoZW1lLmZpZWxkLCB7IG9wdGlvbnM6IHIgfSBhcyBURm9ybVNjaGVtYSk7XG4gICAgfSk7XG4gIH1cblxuICBkZXRhY2hGb3JtU2NoZW1lKGZpZWxkTmFtZT86IGtleW9mIFRGb3JtR3JvdXApIHtcbiAgICB0aGlzLnN1YnNbZmllbGROYW1lIGFzIHN0cmluZ10/LnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgbWNoYW5nZUVtaXR0ZXIoKSB7XG4gICAgdGhpcy5tY2hhbmdlLmVtaXQodGhpcy5mb3JtVmFsdWUoKSk7XG4gIH1cblxuICBnZXRGb3JtU2NoZW1lID0gKGZpZWxkTmFtZToga2V5b2YgVEZvcm1Hcm91cCkgPT4ge1xuICAgIC8vIGRlYnVnZ2VyO1xuICAgIHJldHVybiB0aGlzLmZvcm1TY2hlbWFNYXAoKVtmaWVsZE5hbWUgYXMgc3RyaW5nXTtcbiAgfTtcblxuICBhZGRUb0Zvcm1TY2hlbWEoZm9ybVNjaGVtZTogVEZvcm1TY2hlbWEpIHtcbiAgICB0aGlzLnJlbW92ZUZyb21Gb3JtU2NoZW1hKGZvcm1TY2hlbWUuZmllbGQpO1xuICAgIHRoaXMuaGFuZGxlRm9ybVNjaGVtZShmb3JtU2NoZW1lKTtcbiAgfVxuXG4gIHVwZGF0ZUZvcm1TY2hlbWEoZmllbGROYW1lOiBrZXlvZiBURm9ybUdyb3VwLCBzY2hlbWU6IFBhcnRpYWw8VEZvcm1TY2hlbWE+KSB7XG4gICAgcmV0dXJuIHN1cGVyLl91cGRhdGVGb3JtU2NoZW1hKGZpZWxkTmFtZSBhcyBzdHJpbmcsIHNjaGVtZSk7XG4gIH1cbiAgdXBkYXRlQWxsRm9ybVNjaGVtYShtYXA6IChmb3JtRmllbGQ6IElGb3JtU2NoZW1hPFRGb3JtR3JvdXA+KSA9PiBURm9ybVNjaGVtYSkge1xuICAgIHJldHVybiBzdXBlci5fdXBkYXRlQWxsRm9ybVNjaGVtYShtYXApO1xuICB9XG5cbiAgcmVtb3ZlRnJvbUZvcm1TY2hlbWEoZmllbGROYW1lOiBrZXlvZiBURm9ybUdyb3VwKSB7XG4gICAgdGhpcy5kZXRhY2hGb3JtU2NoZW1lKGZpZWxkTmFtZSk7XG4gICAgY29uc3Qgb25SZW1vdmUgPSB0aGlzLmZvcm1TY2hlbWFNYXAoKVtmaWVsZE5hbWUgYXMgc3RyaW5nXT8ub25SZW1vdmVGdW5jO1xuICAgIGlmIChvblJlbW92ZSkgb25SZW1vdmUodGhpcy5mb3JtVmFsdWUoKSBhcyBhbnksIHRoaXMuZm9ybVZhbHVlKClbZmllbGROYW1lIGFzIGFueV0sIHRoaXMpO1xuICAgIHRoaXMuX3JlbW92ZUZvcm1TY2hlbWEoZmllbGROYW1lIGFzIHN0cmluZyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0T3B0aW9uTGFiZWwoJGV2ZW50OiBhbnksIHNjaGVtZTogSUZvcm1TY2hlbWE8VEZvcm1Hcm91cD4pIHtcbiAgICBzY2hlbWUuc2VsZWN0ZWRPcHRpb25MYWJlbCA9ICRldmVudDtcbiAgfVxuXG4gIGFzeW5jIHN1Ym1pdChidG4/OiBCdG5Db21wb25lbnQpIHtcbiAgICBpZiAodGhpcy5zdWJtaXRGdW5jKSB7XG4gICAgICBidG4/LnNldExvYWRlcih0cnVlKTtcbiAgICAgIHRoaXMuX2xvYWRpbmcuc2V0KHRydWUpO1xuICAgICAgY29uc3QgZm9ybVZhbCA9IHRoaXMuZm9ybVZhbHVlKCk7XG4gICAgICB0aGlzLm9uU3VibWl0LmVtaXQoZm9ybVZhbCk7XG4gICAgICB0cnkge1xuICAgICAgICB0aGlzLnN1Ym1pc3Npb25SZXNwb25zZSA9IGF3YWl0IHRoaXMuc3VibWl0RnVuYyhmb3JtVmFsKTtcbiAgICAgICAgaWYgKHRoaXMuc3VibWl0U3VjY2Vzc1RleHQoKSkgdGhpcy51dGlsaXR5U2VydmljZS5pbmZvKHRoaXMuc3VibWl0U3VjY2Vzc1RleHQoKSwgMSk7XG4gICAgICAgIHRoaXMuc2F2ZWQuZW1pdCh0aGlzLnN1Ym1pc3Npb25SZXNwb25zZSk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLmluZm8oZXJyb3IsIDApO1xuICAgICAgfVxuICAgICAgdGhpcy5fbG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgYnRuPy5zZXRMb2FkZXIoZmFsc2UpO1xuICAgIH0gZWxzZSB0aGlzLm9uU3VibWl0LmVtaXQodGhpcy5mb3JtVmFsdWUoKSk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBJRm9ybVNjaGVtYTxcbiAgVEZvcm1Hcm91cCBleHRlbmRzIHtcbiAgICBbSyBpbiBrZXlvZiBURm9ybUdyb3VwXTogQWJzdHJhY3RDb250cm9sPGFueSwgYW55PjtcbiAgfSA9IGFueSxcbj4gZXh0ZW5kcyBJQmFzZUZvcm1TY2hlbWE8VEZvcm1Hcm91cCwgRm9ybUdlbmVyYXRvckNvbXBvbmVudDxURm9ybUdyb3VwPiwgVEZvcm1Hcm91cD4ge1xuICBjaGlsZHJlbj86IElGb3JtU2NoZW1hPFRGb3JtR3JvdXA+W107XG4gIGxhYmVsVHlwZT86IE9wdGlvbkxhYmVsVHlwZTtcbiAgZmllbGQ6IGtleW9mIFRGb3JtR3JvdXA7XG4gIHN1YlR5cGU/OiBJbnB1dFN1YlR5cGU7XG4gIHByZXNldFZhbHVlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFRlbXBsYXRlIHZhcmlhYmxlIG1vZGVsOlxuICAgKiBgYGBcbiAgICoge1xuICAgKiAgICByb3c6IEZvcm1Hcm91cDxURm9ybUdyb3VwPjtcbiAgICogICAgc2NoZW1lOiBJRm9ybVNjaGVtYTtcbiAgICogfVxuICAgKiBgYGBcbiAgICovXG4gIHRlbXBsYXRlUmVmPzogVGVtcGxhdGVSZWY8YW55Pjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgSUZvcm1TY2hlbWEyPFRTdHJ1Y3QgPSBhbnk+XG4gIGV4dGVuZHMgSUZvcm1TY2hlbWE8e1xuICAgIFtLIGluIGtleW9mIFRTdHJ1Y3RdPzogQWJzdHJhY3RDb250cm9sPGFueSwgYW55PjtcbiAgfT4ge31cblxuZXhwb3J0IGludGVyZmFjZSBJRm9ybU9wdGlvbnMge1xuICBbZmllbGQ6IHN0cmluZ106IGFueTtcbn1cbiIsIjwhLS0ge3tmb3JtVmFsdWUoKXxqc29ufX1cbnt7Zm9ybVZhbGlkKCl8anNvbn19IC0tPlxuPGxvYWRlciBbbG9hZGluZ109XCJjb21wdXRlZExvYWRpbmcoKVwiPlxuICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm0oKVwiICNmb3JtVGFnPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwicm93IHJvdy1jb2xzLXt7IGdyaWRTdHlsZSgpIH19IHJvdy1jb2xzLW1kLXt7IGdyaWRNRFN0eWxlKCkgfX0gcm93LWNvbHMtbGcte3tcbiAgICAgICAgZ3JpZExHU3R5bGUoKVxuICAgICAgfX0gcm93LWNvbHMteHhsLXt7IGdyaWRYWExTdHlsZSgpIH19IGFsaWduLWl0ZW1zLWNlbnRlciB7eyBmb3JtR3JpZENsYXNzKCkgfX1cIj5cbiAgICAgIEBmb3IgKHNjaGVtZSBvZiBjb21wdXRlZEZvcm1TY2hlbWEoKTsgdHJhY2sgc2NoZW1lLmZpZWxkKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wge3sgc2NoZW1lLmNscyB9fSBcIj5cbiAgICAgICAgICBAc3dpdGNoICh0cnVlKSB7XG4gICAgICAgICAgICBAY2FzZSAoc2NoZW1lLnR5cGUgPT0gJ3RlbXBsYXRlJykge1xuICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgIGN1c3RvbVRlbXBsYXRlcygpW3NjaGVtZS5maWVsZF07XG4gICAgICAgICAgICAgICAgICBjb250ZXh0OiB7ICRpbXBsaWNpdDogeyBzY2hlbWUsIGZvcm06IGZvcm0oKSB9IH1cbiAgICAgICAgICAgICAgICBcIi8+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAY2FzZSAoc2NoZW1lLnR5cGUgPT0gJ3RlbCcpIHtcbiAgICAgICAgICAgICAgPGFwcC1waG9uZS1udW1iZXJcbiAgICAgICAgICAgICAgICBbZm9ybV09XCJzY2hlbWUuZm9ybSB8fCBmb3JtKClcIlxuICAgICAgICAgICAgICAgIFtsYWJlbF09XCJzY2hlbWUubGFiZWxcIlxuICAgICAgICAgICAgICAgIFtjbGVhck9uRGlzYWJsZV09XCJzY2hlbWUuY2xlYXJPbkRpc2FibGVcIlxuICAgICAgICAgICAgICAgIFtzdGFja2VkXT1cInNjaGVtZS5zdGFja2VkXCJcbiAgICAgICAgICAgICAgICBbbmFtZV09XCJzY2hlbWUuZmllbGRcIlxuICAgICAgICAgICAgICAgIFtub0Zvcm1hdF09XCJzY2hlbWUubm9Gb3JtYXRcIlxuICAgICAgICAgICAgICAgIFt2ZXJib3NlXT1cInNjaGVtZS52ZXJib3NlXCJcbiAgICAgICAgICAgICAgICBbZGVidWddPVwic2NoZW1lLmRlYnVnXCJcbiAgICAgICAgICAgICAgICAobWNoYW5nZSk9XCJtY2hhbmdlRW1pdHRlcigpXCJcbiAgICAgICAgICAgICAgICBbc2hvd1ZhbGlkYXRpb25dPVwic2NoZW1lLnNob3dWYWxpZGF0aW9uIHx8ICEhc2NoZW1lLmFzeW5jVmFsaWRhdG9yc1wiXG4gICAgICAgICAgICAgICAgW3Nob3dWYWxpZGF0aW9uSWNvbl09XCJzY2hlbWUuc2hvd1ZhbGlkYXRpb25JY29uIHx8ICEhc2NoZW1lLmFzeW5jVmFsaWRhdG9yc1wiXG4gICAgICAgICAgICAgICAgW2F1dG9QaWNrVmFsdWVGaWVsZF09XCJzY2hlbWUuYXV0b1BpY2tWYWx1ZUZpZWxkXCJcbiAgICAgICAgICAgICAgICBbc2hvd1JlcXVpcmVkVGFnXT1cInNjaGVtZS5zaG93UmVxdWlyZWRUYWdcIlxuICAgICAgICAgICAgICAgIFtzaG93VmFsaWRhdGlvbk1zZ109XCJzY2hlbWUuc2hvd1ZhbGlkYXRpb25Nc2dcIlxuICAgICAgICAgICAgICAgIFtjb3VudHJ5Q29kZTNdPVwic2NoZW1lLmNvdW50cnlDb2RlM1wiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIlxuICAgICAgICAgICAgICAgICAgc2NoZW1lLmRpc2FibGVkIHx8XG4gICAgICAgICAgICAgICAgICAoc2NoZW1lLmRpc2FibGVkSWYgfCBmdW5jdGlvbkNhbGxlcjI6IGZvcm1WYWx1ZSgpIDogKHNjaGVtZS5maWVsZCB8IHRvQW55KSlcbiAgICAgICAgICAgICAgICBcIiAvPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGNhc2UgKHNjaGVtZS50eXBlID09ICdhdXRvY29tcGxldGUnKSB7XG4gICAgICAgICAgICAgIDxhcHAtYXV0b2NvbXBsZXRlXG4gICAgICAgICAgICAgICAgW2Zvcm1dPVwic2NoZW1lLmZvcm0gfHwgZm9ybSgpXCJcbiAgICAgICAgICAgICAgICBbbGFiZWxdPVwic2NoZW1lLmxhYmVsXCJcbiAgICAgICAgICAgICAgICBbY2xlYXJPbkRpc2FibGVdPVwic2NoZW1lLmNsZWFyT25EaXNhYmxlXCJcbiAgICAgICAgICAgICAgICBbc3RhY2tlZF09XCJzY2hlbWUuc3RhY2tlZFwiXG4gICAgICAgICAgICAgICAgW3ZlcmJvc2VdPVwic2NoZW1lLnZlcmJvc2VcIlxuICAgICAgICAgICAgICAgIFtza2lwRG9lc09wdGlvbkV4aXN0Q2hlY2tdPVwic2NoZW1lLnNraXBEb2VzT3B0aW9uRXhpc3RDaGVja1wiXG4gICAgICAgICAgICAgICAgW3ByZXNldFZhbHVlXT1cInNjaGVtZS5wcmVzZXRWYWx1ZVwiXG4gICAgICAgICAgICAgICAgW2xhYmVsRmllbGRdPVwic2NoZW1lLmxhYmVsRmllbGRcIlxuICAgICAgICAgICAgICAgIFtub0Zvcm1hdF09XCJzY2hlbWUubm9Gb3JtYXRcIlxuICAgICAgICAgICAgICAgIFtzaG93VmFsaWRhdGlvbl09XCJzY2hlbWUuc2hvd1ZhbGlkYXRpb24gfHwgISFzY2hlbWUuYXN5bmNWYWxpZGF0b3JzXCJcbiAgICAgICAgICAgICAgICBbc2hvd1ZhbGlkYXRpb25JY29uXT1cInNjaGVtZS5zaG93VmFsaWRhdGlvbkljb24gfHwgISFzY2hlbWUuYXN5bmNWYWxpZGF0b3JzXCJcbiAgICAgICAgICAgICAgICBbbGFiZWxUeXBlXT1cInNjaGVtZS5sYWJlbFR5cGUgfCB0b0FueVwiXG4gICAgICAgICAgICAgICAgKG1jaGFuZ2UpPVwibWNoYW5nZUVtaXR0ZXIoKVwiXG4gICAgICAgICAgICAgICAgKG1TZWxlY3RlZE9wdGlvbkxhYmVsKT1cInNldE9wdGlvbkxhYmVsKCRldmVudCwgc2NoZW1lKVwiXG4gICAgICAgICAgICAgICAgW25hbWVdPVwic2NoZW1lLmZpZWxkXCJcbiAgICAgICAgICAgICAgICBbZGVidWddPVwic2NoZW1lLmRlYnVnXCJcbiAgICAgICAgICAgICAgICBbc2V0Rm9ybWF0dGVkVmFsdWVdPVwic2NoZW1lLnNldENvbnRyb2xGb3JtYXR0ZWRWYWx1ZVwiXG4gICAgICAgICAgICAgICAgW3Nob3dSZXF1aXJlZFRhZ109XCJzY2hlbWUuc2hvd1JlcXVpcmVkVGFnXCJcbiAgICAgICAgICAgICAgICBbb3B0aW9uRm9ybWF0dGVyXT1cInNjaGVtZS5vcHRpb25Gb3JtYXR0ZXJcIlxuICAgICAgICAgICAgICAgIFt2YWx1ZUZpZWxkXT1cInNjaGVtZS52YWx1ZUZpZWxkXCJcbiAgICAgICAgICAgICAgICBbb3B0aW9uc0Z1bmNdPVwic2NoZW1lLm9wdGlvbnNGdW5jXCJcbiAgICAgICAgICAgICAgICBbc2hvd1ZhbGlkYXRpb25Nc2ddPVwic2NoZW1lLnNob3dWYWxpZGF0aW9uTXNnXCJcbiAgICAgICAgICAgICAgICBbYXV0b1BpY2tWYWx1ZUZpZWxkXT1cInNjaGVtZS5hdXRvUGlja1ZhbHVlRmllbGRcIlxuICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cInNjaGVtZS5vcHRpb25zIHx8IG9wdGlvbnNNYXAoKVtzY2hlbWUuZmllbGQgfCB0b0FueV1cIlxuICAgICAgICAgICAgICAgIFtoaW50XT1cInNjaGVtZS5oaW50XCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiXG4gICAgICAgICAgICAgICAgICBzY2hlbWUuZGlzYWJsZWQgfHxcbiAgICAgICAgICAgICAgICAgIChzY2hlbWUuZGlzYWJsZWRJZiB8IGZ1bmN0aW9uQ2FsbGVyMjogZm9ybVZhbHVlKCkgOiAoc2NoZW1lLmZpZWxkIHwgdG9BbnkpKVxuICAgICAgICAgICAgICAgIFwiIC8+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAY2FzZSAoc2NoZW1lLnR5cGUgPT0gJ3JpY2h0ZXh0Jykge1xuICAgICAgICAgICAgICA8cmljaC10ZXh0LWVkaXRvci1yZlxuICAgICAgICAgICAgICAgIFtmb3JtXT1cInNjaGVtZS5mb3JtIHx8IGZvcm0oKVwiXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cInNjaGVtZS5sYWJlbCFcIlxuICAgICAgICAgICAgICAgIFtjbGVhck9uRGlzYWJsZV09XCJzY2hlbWUuY2xlYXJPbkRpc2FibGUhXCJcbiAgICAgICAgICAgICAgICBbc3RhY2tlZF09XCJzY2hlbWUuc3RhY2tlZFwiXG4gICAgICAgICAgICAgICAgW3ZlcmJvc2VdPVwic2NoZW1lLnZlcmJvc2VcIlxuICAgICAgICAgICAgICAgIFtsYWJlbEZpZWxkXT1cInNjaGVtZS5sYWJlbEZpZWxkIVwiXG4gICAgICAgICAgICAgICAgW25vRm9ybWF0XT1cInNjaGVtZS5ub0Zvcm1hdCFcIlxuICAgICAgICAgICAgICAgIFtzaG93VmFsaWRhdGlvbl09XCJzY2hlbWUuc2hvd1ZhbGlkYXRpb24gfHwgISFzY2hlbWUuYXN5bmNWYWxpZGF0b3JzXCJcbiAgICAgICAgICAgICAgICBbc2hvd1ZhbGlkYXRpb25JY29uXT1cInNjaGVtZS5zaG93VmFsaWRhdGlvbkljb24gfHwgISFzY2hlbWUuYXN5bmNWYWxpZGF0b3JzXCJcbiAgICAgICAgICAgICAgICBbbGFiZWxUeXBlXT1cInNjaGVtZS5sYWJlbFR5cGUgfCB0b0FueVwiXG4gICAgICAgICAgICAgICAgKG1jaGFuZ2UpPVwibWNoYW5nZUVtaXR0ZXIoKVwiXG4gICAgICAgICAgICAgICAgKG1TZWxlY3RlZE9wdGlvbkxhYmVsKT1cInNldE9wdGlvbkxhYmVsKCRldmVudCwgc2NoZW1lKVwiXG4gICAgICAgICAgICAgICAgW25hbWVdPVwic2NoZW1lLmZpZWxkXCJcbiAgICAgICAgICAgICAgICBbZGVidWddPVwic2NoZW1lLmRlYnVnIVwiXG4gICAgICAgICAgICAgICAgW3NldEZvcm1hdHRlZFZhbHVlXT1cInNjaGVtZS5zZXRDb250cm9sRm9ybWF0dGVkVmFsdWVcIlxuICAgICAgICAgICAgICAgIFtzaG93UmVxdWlyZWRUYWddPVwic2NoZW1lLnNob3dSZXF1aXJlZFRhZyFcIlxuICAgICAgICAgICAgICAgIFtvcHRpb25Gb3JtYXR0ZXJdPVwic2NoZW1lLm9wdGlvbkZvcm1hdHRlciFcIlxuICAgICAgICAgICAgICAgIFt2YWx1ZUZpZWxkXT1cInNjaGVtZS52YWx1ZUZpZWxkIVwiXG4gICAgICAgICAgICAgICAgW29wdGlvbnNGdW5jXT1cInNjaGVtZS5vcHRpb25zRnVuYyFcIlxuICAgICAgICAgICAgICAgIFtzaG93VmFsaWRhdGlvbk1zZ109XCJzY2hlbWUuc2hvd1ZhbGlkYXRpb25Nc2dcIlxuICAgICAgICAgICAgICAgIFthdXRvUGlja1ZhbHVlRmllbGRdPVwic2NoZW1lLmF1dG9QaWNrVmFsdWVGaWVsZCFcIlxuICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cInNjaGVtZS5vcHRpb25zIHx8IG9wdGlvbnNNYXAoKVtzY2hlbWUuZmllbGQgfCB0b0FueV1cIlxuICAgICAgICAgICAgICAgIFtoaW50XT1cInNjaGVtZS5oaW50IVwiXG4gICAgICAgICAgICAgICAgW21heExlbmd0aF09XCJzY2hlbWUubWF4TGVuZ3RoXCJcbiAgICAgICAgICAgICAgICBbbWluTGVuZ3RoXT1cInNjaGVtZS5taW5MZW5ndGhcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJcbiAgICAgICAgICAgICAgICAgIHNjaGVtZS5kaXNhYmxlZCB8fFxuICAgICAgICAgICAgICAgICAgKHNjaGVtZS5kaXNhYmxlZElmISB8IGZ1bmN0aW9uQ2FsbGVyMjogZm9ybVZhbHVlKCkgOiAoc2NoZW1lLmZpZWxkIHwgdG9BbnkpKVxuICAgICAgICAgICAgICAgIFwiIC8+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAZGVmYXVsdCB7XG4gICAgICAgICAgICAgIDxhcHAtaW5wdXQtYmFzaWNcbiAgICAgICAgICAgICAgICBbbm9Gb3JtYXRdPVwic2NoZW1lLm5vRm9ybWF0XCJcbiAgICAgICAgICAgICAgICBbbmFtZV09XCJzY2hlbWUuZmllbGRcIlxuICAgICAgICAgICAgICAgIFtmb3JtXT1cInNjaGVtZS5mb3JtIHx8IGZvcm0oKVwiXG4gICAgICAgICAgICAgICAgW2NsZWFyT25EaXNhYmxlXT1cInNjaGVtZS5jbGVhck9uRGlzYWJsZVwiXG4gICAgICAgICAgICAgICAgW3R5cGVdPVwic2NoZW1lLnR5cGVcIlxuICAgICAgICAgICAgICAgIFt2ZXJib3NlXT1cInNjaGVtZS52ZXJib3NlXCJcbiAgICAgICAgICAgICAgICBbdmFsdWVGaWVsZF09XCJzY2hlbWUudmFsdWVGaWVsZFwiXG4gICAgICAgICAgICAgICAgW2F1dG9QaWNrVmFsdWVGaWVsZF09XCJzY2hlbWUuYXV0b1BpY2tWYWx1ZUZpZWxkXCJcbiAgICAgICAgICAgICAgICBbcHJlc2V0VmFsdWVdPVwic2NoZW1lLnByZXNldFZhbHVlXCJcbiAgICAgICAgICAgICAgICBbc3RhY2tlZF09XCJzY2hlbWUuc3RhY2tlZFwiXG4gICAgICAgICAgICAgICAgW2xhYmVsVHlwZV09XCJzY2hlbWUubGFiZWxUeXBlIHwgdG9BbnlcIlxuICAgICAgICAgICAgICAgIFtjaGVja2VkU2lnbmFsXT1cInNjaGVtZS5jaGVja2VkXCJcbiAgICAgICAgICAgICAgICBbc2hvd1ZhbGlkYXRpb25dPVwic2NoZW1lLnNob3dWYWxpZGF0aW9uIHx8ICEhc2NoZW1lLmFzeW5jVmFsaWRhdG9yc1wiXG4gICAgICAgICAgICAgICAgW3Nob3dWYWxpZGF0aW9uSWNvbl09XCJzY2hlbWUuc2hvd1ZhbGlkYXRpb25JY29uIHx8ICEhc2NoZW1lLmFzeW5jVmFsaWRhdG9yc1wiXG4gICAgICAgICAgICAgICAgW2RlYnVnXT1cInNjaGVtZS5kZWJ1Z1wiXG4gICAgICAgICAgICAgICAgKG1jaGFuZ2UpPVwibWNoYW5nZUVtaXR0ZXIoKVwiXG4gICAgICAgICAgICAgICAgW3NldEZvcm1hdHRlZFZhbHVlXT1cInNjaGVtZS5zZXRDb250cm9sRm9ybWF0dGVkVmFsdWVcIlxuICAgICAgICAgICAgICAgIFtzaG93UmVxdWlyZWRUYWddPVwic2NoZW1lLnNob3dSZXF1aXJlZFRhZ1wiXG4gICAgICAgICAgICAgICAgW2xhYmVsRmllbGRdPVwic2NoZW1lLmxhYmVsRmllbGRcIlxuICAgICAgICAgICAgICAgIFtvcHRpb25Gb3JtYXR0ZXJdPVwic2NoZW1lLm9wdGlvbkZvcm1hdHRlclwiXG4gICAgICAgICAgICAgICAgKG1TZWxlY3RlZE9wdGlvbkxhYmVsKT1cInNldE9wdGlvbkxhYmVsKCRldmVudCwgc2NoZW1lKVwiXG4gICAgICAgICAgICAgICAgW29wdGlvbnNdPVwic2NoZW1lLm9wdGlvbnMgfHwgb3B0aW9uc01hcCgpW3NjaGVtZS5maWVsZCB8IHRvQW55XVwiXG4gICAgICAgICAgICAgICAgW2RlY2ltYWxQb2ludHNdPVwic2NoZW1lLmRlY2ltYWxQb2ludHNcIlxuICAgICAgICAgICAgICAgIFtoaW50XT1cInNjaGVtZS5oaW50XCJcbiAgICAgICAgICAgICAgICBbbWF4XT1cInNjaGVtZS5tYXhcIlxuICAgICAgICAgICAgICAgIFttaW5dPVwic2NoZW1lLm1pblwiXG4gICAgICAgICAgICAgICAgW21heExlbmd0aF09XCJzY2hlbWUubWF4TGVuZ3RoXCJcbiAgICAgICAgICAgICAgICBbbWluTGVuZ3RoXT1cInNjaGVtZS5taW5MZW5ndGhcIlxuICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJzY2hlbWUucGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgIFtsYWJlbF09XCJzY2hlbWUubGFiZWxcIlxuICAgICAgICAgICAgICAgIFtzaG93VmFsaWRhdGlvbk1zZ109XCJzY2hlbWUuc2hvd1ZhbGlkYXRpb25Nc2dcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJcbiAgICAgICAgICAgICAgICAgIHNjaGVtZS5kaXNhYmxlZCB8fFxuICAgICAgICAgICAgICAgICAgKHNjaGVtZS5kaXNhYmxlZElmIHwgZnVuY3Rpb25DYWxsZXIyOiBmb3JtVmFsdWUoKSA6IChzY2hlbWUuZmllbGQgfCB0b0FueSkpXG4gICAgICAgICAgICAgICAgXCIgLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJyb3cgcm93LWNvbHMtYXV0byBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiXCI+XG4gICAgICAgIEBpZiAoc2hvd1N1Ym1pdEJ0bigpKSB7XG4gICAgICAgICAgPGFwcC1idG5cbiAgICAgICAgICAgIFt0ZXh0XT1cInN1Ym1pdEJ0blRleHQoKVwiXG4gICAgICAgICAgICBncm91cD1cInN1Ym1pdFwiXG4gICAgICAgICAgICBbZm9ybV09XCJmb3JtKClcIlxuICAgICAgICAgICAgKG1jbGljayk9XCJzdWJtaXQoc3VibWl0QnRuKVwiXG4gICAgICAgICAgICAjc3VibWl0QnRuIC8+XG4gICAgICAgIH1cbiAgICAgICAgQGlmIChzdWJtaXRCdG5UZW1wbGF0ZSgpKSB7XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInN1Ym1pdEJ0blRlbXBsYXRlKClcIi8+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Zvcm0+XG48L2xvYWRlcj5cbiJdfQ==
|
|
@@ -157,4 +157,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
|
|
|
157
157
|
}], modalSubmitted: [{
|
|
158
158
|
type: Output
|
|
159
159
|
}] } });
|
|
160
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS10ZW1wbGF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ldHMtZmUtbmctc2RrL3NyYy9saWIvU2hhcmVkL2NvbXBvbmVudHMvcGFnZS10ZW1wbGF0ZS9wYWdlLXRlbXBsYXRlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxTQUFTLEVBQWtCLE1BQU0sMEJBQTBCLENBQUM7QUFFckUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDOztBQU90RCxNQUFNLE9BQU8scUJBQXFCO0lBT2hDLElBQXNCLFFBQVEsQ0FBQyxDQUFVO1FBQ3ZDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RCLENBQUM7SUFNRCxJQUFXLFFBQVE7UUFDakIsT0FBTyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0lBQ0QsSUFBVyxRQUFRLENBQUMsS0FBZ0I7UUFDbEMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBa0JELElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUM7SUFDdEIsQ0FBQztJQUlEO1FBdkNTLGtCQUFhLEdBQUcsTUFBTSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ3ZDLFlBQU8sR0FBRyxNQUFNLENB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QU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgY29tcHV0ZWQsIGluamVjdCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFV0aWxpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vbGliL1NlcnZpY2VzL3V0aWxpdHkuc2VydmljZSc7XG5pbXBvcnQgeyBFUGFnZVR5cGUsIElPYmplY3RMaXRlcmFsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2luZGV4Lm1vZGVsJztcbmltcG9ydCB7IEVudmlyb25tZW50LCBTREtFbnZpcm9ubWVudCB9IGZyb20gJy4uLy4uL21vZGVscy9lbnZpcm9ubWVudC5tb2RlbCc7XG5pbXBvcnQgeyB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlOiBgYCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgUGFnZVRlbXBsYXRlQ29tcG9uZW50PFxuICBNb2RlbERhdGEgPSBhbnksXG4gIFRFbnZpcm9ubWVudCBleHRlbmRzIFNES0Vudmlyb25tZW50ID0gRW52aXJvbm1lbnQsXG4+IHtcbiAgbG9hZGluZzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgbG9hZGluZ1NpZ25hbCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIHJlYWRvbmx5IGlzTW9kYWwgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICBASW5wdXQoJ2lzTW9kYWwnKSBzZXQgX2lzTW9kYWwodjogYm9vbGVhbikge1xuICAgIHRoaXMuaXNNb2RhbC5zZXQodik7XG4gIH1cbiAgQElucHV0KCkgbW9kZWxEYXRhOiBNb2RlbERhdGE7XG4gIG1vZGFsT25Db21wbGV0ZTogKC4uLmFyZ3MpID0+IGFueTtcbiAgQE91dHB1dCgpIG1vZGFsU3VibWl0dGVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBjb2RlPzogc3RyaW5nO1xuICByZWFkb25seSBvdmVycmlkZVBhZ2VUeXBlU2lnbmFsID0gc2lnbmFsPEVQYWdlVHlwZT4odW5kZWZpbmVkKTtcbiAgcHVibGljIGdldCBwYWdlVHlwZSgpOiBFUGFnZVR5cGUge1xuICAgIHJldHVybiB0aGlzLm92ZXJyaWRlUGFnZVR5cGVTaWduYWwoKTtcbiAgfVxuICBwdWJsaWMgc2V0IHBhZ2VUeXBlKHZhbHVlOiBFUGFnZVR5cGUpIHtcbiAgICB0aGlzLm92ZXJyaWRlUGFnZVR5cGVTaWduYWwuc2V0KHZhbHVlKTtcbiAgfVxuXG4gIGlkRmllbGQgPSAnY29kZSc7XG4gIHJlYWRvbmx5IGlzQ3JlYXRlID0gY29tcHV0ZWQ8Ym9vbGVhbj4oKCkgPT5cbiAgICB0aGlzLnVTLnBhZ2VTLmlzQ3JlYXRlKHRoaXMucm91dGUsIHRoaXMub3ZlcnJpZGVQYWdlVHlwZVNpZ25hbCgpKSxcbiAgKTtcbiAgcmVhZG9ubHkgaXNJbmRleCA9IGNvbXB1dGVkPGJvb2xlYW4+KCgpID0+XG4gICAgdGhpcy51Uy5wYWdlUy5pc0luZGV4KHRoaXMucm91dGUsIHRoaXMub3ZlcnJpZGVQYWdlVHlwZVNpZ25hbCgpKSxcbiAgKTtcbiAgcmVhZG9ubHkgaXNDbG9uZSA9IGNvbXB1dGVkPGJvb2xlYW4+KCgpID0+XG4gICAgdGhpcy51Uy5wYWdlUy5pc0Nsb25lKHRoaXMucm91dGUsIHRoaXMub3ZlcnJpZGVQYWdlVHlwZVNpZ25hbCgpKSxcbiAgKTtcbiAgcmVhZG9ubHkgaXNFZGl0ID0gY29tcHV0ZWQ8Ym9vbGVhbj4oKCkgPT5cbiAgICB0aGlzLnVTLnBhZ2VTLmlzRWRpdCh0aGlzLnJvdXRlLCB0aGlzLm92ZXJyaWRlUGFnZVR5cGVTaWduYWwoKSksXG4gICk7XG4gIHJlYWRvbmx5IGlzU2hvdyA9IGNvbXB1dGVkPGJvb2xlYW4+KCgpID0+XG4gICAgdGhpcy51Uy5wYWdlUy5pc1Nob3codGhpcy5yb3V0ZSwgdGhpcy5vdmVycmlkZVBhZ2VUeXBlU2lnbmFsKCkpLFxuICApO1xuICBnZXQgaW5mb0Z1bmMoKSB7XG4gICAgcmV0dXJuIHRoaXMudVMuaW5mbztcbiAgfVxuICBwdWJsaWMgcm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xuICBwdWJsaWMgdVMgPSBpbmplY3QoVXRpbGl0eVNlcnZpY2U8VEVudmlyb25tZW50Pik7XG4gIHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgYXN5bmMgaW5pdChmdW5jPzogKCkgPT4gUHJvbWlzZTxhbnk+LCBlcnI/OiAoKSA9PiBhbnkpIHtcbiAgICB0aGlzLnNldExvYWRlcih0cnVlKTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgY29kZSA9XG4gICAgICAgIHRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbU1hcC5nZXQodGhpcy5pZEZpZWxkKSB8fFxuICAgICAgICB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtTWFwLmdldCh0aGlzLmlkRmllbGQpO1xuICAgICAgdGhpcy5wYWdlVHlwZSA9IHRoaXMucm91dGUuc25hcHNob3QuZGF0YS50eXBlO1xuICAgICAgdGhpc1t0aGlzLmlkRmllbGRdID0gY29kZTtcbiAgICAgIGlmICh0aGlzLmlzQ3JlYXRlKCkgJiYgY29kZSkgdGhyb3cgJ1BhZ2UgaXMgaW1wdXJlJztcbiAgICAgIGlmIChjb2RlICYmIGZ1bmMpIGF3YWl0IGZ1bmMoKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICBpZiAoZXJyKSBlcnIoKTtcbiAgICAgIGVsc2Uge1xuICAgICAgICBhd2FpdCB0aGlzLmluZm9GdW5jKGVycm9yLCAwKTtcbiAgICAgICAgdGhpcy51Uy5iYWNrKCk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuc2V0TG9hZGVyKGZhbHNlKTtcbiAgfVxuXG4gIHNldExvYWRlciA9ICh2OiBib29sZWFuKSA9PiB7XG4gICAgdGhpcy5sb2FkaW5nID0gdjtcbiAgICB0aGlzLmxvYWRpbmdTaWduYWwuc2V0KHYpO1xuICB9O1xuXG4gcmVhZG9ubHkgcGFnZVN0YXRlID0gY29tcHV0ZWQ8SVBhZ2VTdGF0ZT4oKCkgPT4gKHtcbiAgICBpc0Nsb25lOiB0aGlzLmlzQ2xvbmUoKSxcbiAgICBpc0NyZWF0ZTogdGhpcy5pc0NyZWF0ZSgpLFxuICAgIGlzRWRpdDogdGhpcy5pc0VkaXQoKSxcbiAgICBpc1Nob3c6IHRoaXMuaXNTaG93KCksXG4gICAgaXNNb2RhbDogdGhpcy5pc01vZGFsKCksXG4gIH0pKTtcblxuICBzZXRBc0luZGV4KCkge1xuICAgIHRoaXMub3ZlcnJpZGVQYWdlVHlwZVNpZ25hbC5zZXQoRVBhZ2VUeXBlLmluZGV4UGFnZSk7XG4gIH1cbiAgc2V0QXNDbG9uZSgpIHtcbiAgICB0aGlzLm92ZXJyaWRlUGFnZVR5cGVTaWduYWwuc2V0KEVQYWdlVHlwZS5jbG9uZVBhZ2UpO1xuICB9XG4gIHNldEFzQ3JlYXRlKCkge1xuICAgIHRoaXMub3ZlcnJpZGVQYWdlVHlwZVNpZ25hbC5zZXQoRVBhZ2VUeXBlLmNyZWF0ZVBhZ2UpO1xuICB9XG4gIHNldEFzRWRpdCgpIHtcbiAgICB0aGlzLm92ZXJyaWRlUGFnZVR5cGVTaWduYWwuc2V0KEVQYWdlVHlwZS5lZGl0UGFnZSk7XG4gIH1cbiAgc2V0QXNTaG93KCkge1xuICAgIHRoaXMub3ZlcnJpZGVQYWdlVHlwZVNpZ25hbC5zZXQoRVBhZ2VUeXBlLnNob3dQYWdlKTtcbiAgfVxuXG4gIHJlYWRvbmx5IHF1ZXJ5UGFyYW1zU2lnbmFsID0gdG9TaWduYWwodGhpcy5yb3V0ZS5xdWVyeVBhcmFtcyBhcyBPYnNlcnZhYmxlPHsgY29kZT86IHN0cmluZyB9Pik7XG4gIGdldCBfcXVlcnlQYXJhbXMoKSB7XG4gICAgcmV0dXJuIHRoaXMucXVlcnlQYXJhbXNTaWduYWwoKSB8fCB7fTtcbiAgfVxuXG4gIGFzeW5jIGNoZWNrUGFyYW1zKHBhcmFtczogc3RyaW5nW10gPSBbJ2NvZGUnXSkge1xuICAgIGlmICh0aGlzLmlzQ3JlYXRlKCkpIHJldHVybjtcbiAgICB0cnkge1xuICAgICAgZm9yIChjb25zdCBwYXJhbSBvZiBwYXJhbXMpXG4gICAgICAgIGlmICghdGhpcy5fcXVlcnlQYXJhbXM/LltwYXJhbSBhcyBrZXlvZiB0eXBlb2YgdGhpcy5fcXVlcnlQYXJhbXNdKVxuICAgICAgICAgIHRocm93IGAke3BhcmFtfSBpcyBtaXNzaW5nLmA7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRoaXMuYm91bmNlKGVycm9yKTtcbiAgICB9XG4gIH1cblxuICByZWFkb25seSBoaWRlQ29kZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBpc0NyZWF0ZSA9IHRoaXMuaXNDcmVhdGUoKSxcbiAgICAgIGlzQ2xvbmUgPSB0aGlzLmlzQ2xvbmUoKTtcbiAgICByZXR1cm4gaXNDcmVhdGUgfHwgaXNDbG9uZTtcbiAgfSk7XG5cbiAgYXN5bmMgYm91bmNlKGVycm9yOiBhbnkpIHtcbiAgICBhd2FpdCB0aGlzLnVTLmluZm8oZXJyb3IsIDApO1xuICAgIHRoaXMudVMuZ29SKCcvJyk7XG4gIH1cblxuICBoYW5kbGVGb3JtKCkge1xuICAgIHN3aXRjaCAodHJ1ZSkge1xuICAgICAgY2FzZSB0aGlzLmlzU2hvdygpOlxuICAgICAgICB0aGlzLmlmU2hvdygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgdGhpcy5pc0Nsb25lKCk6XG4gICAgICAgIHRoaXMuaWZDbG9uZSgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgdGhpcy5pc0VkaXQoKTpcbiAgICAgICAgdGhpcy5pZkVkaXQoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIHRoaXMuaXNDcmVhdGUoKTpcbiAgICAgICAgdGhpcy5pZkNyZWF0ZSgpO1xuICAgICAgICBicmVhaztcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgaWZFZGl0ID0gKCkgPT4ge307XG4gIGlmQ3JlYXRlID0gKCkgPT4ge307XG4gIGlmU2hvdyA9ICgpID0+IHt9O1xuICBpZkNsb25lID0gKCkgPT4ge307XG4gIGlmUGFyYW1zID0gKGZ1bmM6ICgpID0+IGFueSkgPT4ge1xuICAgIGlmICghdGhpcy5pc0NyZWF0ZSgpKSB7XG4gICAgICBmdW5jKCk7XG4gICAgfVxuICB9O1xuXG4gIGFzeW5jIG9uU3VibWl0Q29tcGxldGUoY29uZmlnOiB7XG4gICAgbm90aWZpY2F0aW9uTWVzc2FnZT86IHN0cmluZztcbiAgICBwYXJhbT86IElPYmplY3RMaXRlcmFsO1xuICAgIHJvdXRlPzogc3RyaW5nO1xuICB9KSB7XG4gICAgaWYgKGNvbmZpZy5ub3RpZmljYXRpb25NZXNzYWdlKSBhd2FpdCB0aGlzLnVTLmluZm8oY29uZmlnLm5vdGlmaWNhdGlvbk1lc3NhZ2UpO1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtjb25maWcucm91dGUgfHwgJy4uL3Nob3cnXSwge1xuICAgICAgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSxcbiAgICAgIHF1ZXJ5UGFyYW1zOiBjb25maWcucGFyYW0sXG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBJUGFnZVN0YXRlIHtcbiAgaXNDbG9uZT86IGJvb2xlYW47XG4gIGlzQ3JlYXRlPzogYm9vbGVhbjtcbiAgaXNFZGl0PzogYm9vbGVhbjtcbiAgaXNTaG93PzogYm9vbGVhbjtcbiAgaXNNb2RhbD86IGJvb2xlYW47XG59XG4iXX0=
|
|
160
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS10ZW1wbGF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ldHMtZmUtbmctc2RrL3NyYy9saWIvU2hhcmVkL2NvbXBvbmVudHMvcGFnZS10ZW1wbGF0ZS9wYWdlLXRlbXBsYXRlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxTQUFTLEVBQWtCLE1BQU0sMEJBQTBCLENBQUM7QUFFckUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDOztBQU90RCxNQUFNLE9BQU8scUJBQXFCO0lBT2hDLElBQXNCLFFBQVEsQ0FBQyxDQUFVO1FBQ3ZDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RCLENBQUM7SUFNRCxJQUFXLFFBQVE7UUFDakIsT0FBTyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0lBQ0QsSUFBVyxRQUFRLENBQUMsS0FBZ0I7UUFDbEMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBa0JELElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUM7SUFDdEIsQ0FBQztJQUlEO1FBdkNTLGtCQUFhLEdBQUcsTUFBTSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ3ZDLFlBQU8sR0FBRyxNQUFNLENB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QUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIGNvbXB1dGVkLCBpbmplY3QsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBVdGlsaXR5U2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL2xpYi9TZXJ2aWNlcy91dGlsaXR5LnNlcnZpY2UnO1xuaW1wb3J0IHsgRVBhZ2VUeXBlLCBJT2JqZWN0TGl0ZXJhbCB9IGZyb20gJy4uLy4uL21vZGVscy9pbmRleC5tb2RlbCc7XG5pbXBvcnQgeyBFbnZpcm9ubWVudCwgU0RLRW52aXJvbm1lbnQgfSBmcm9tICcuLi8uLi9tb2RlbHMvZW52aXJvbm1lbnQubW9kZWwnO1xuaW1wb3J0IHsgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZTogYGAsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIFBhZ2VUZW1wbGF0ZUNvbXBvbmVudDxcbiAgTW9kZWxEYXRhID0gYW55LFxuICBURW52aXJvbm1lbnQgZXh0ZW5kcyBTREtFbnZpcm9ubWVudCA9IEVudmlyb25tZW50LFxuPiB7XG4gIGxvYWRpbmc6IGJvb2xlYW47XG4gIHJlYWRvbmx5IGxvYWRpbmdTaWduYWwgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICByZWFkb25seSBpc01vZGFsID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcbiAgQElucHV0KCdpc01vZGFsJykgc2V0IF9pc01vZGFsKHY6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmlzTW9kYWwuc2V0KHYpO1xuICB9XG4gIEBJbnB1dCgpIG1vZGVsRGF0YTogTW9kZWxEYXRhO1xuICBtb2RhbE9uQ29tcGxldGU6ICguLi5hcmdzKSA9PiBhbnk7XG4gIEBPdXRwdXQoKSBtb2RhbFN1Ym1pdHRlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgY29kZT86IHN0cmluZztcbiAgcmVhZG9ubHkgb3ZlcnJpZGVQYWdlVHlwZVNpZ25hbCA9IHNpZ25hbDxFUGFnZVR5cGU+KHVuZGVmaW5lZCk7XG4gIHB1YmxpYyBnZXQgcGFnZVR5cGUoKTogRVBhZ2VUeXBlIHtcbiAgICByZXR1cm4gdGhpcy5vdmVycmlkZVBhZ2VUeXBlU2lnbmFsKCk7XG4gIH1cbiAgcHVibGljIHNldCBwYWdlVHlwZSh2YWx1ZTogRVBhZ2VUeXBlKSB7XG4gICAgdGhpcy5vdmVycmlkZVBhZ2VUeXBlU2lnbmFsLnNldCh2YWx1ZSk7XG4gIH1cblxuICBpZEZpZWxkID0gJ2NvZGUnO1xuICByZWFkb25seSBpc0NyZWF0ZSA9IGNvbXB1dGVkPGJvb2xlYW4+KCgpID0+XG4gICAgdGhpcy51Uy5wYWdlUy5pc0NyZWF0ZSh0aGlzLnJvdXRlLCB0aGlzLm92ZXJyaWRlUGFnZVR5cGVTaWduYWwoKSksXG4gICk7XG4gIHJlYWRvbmx5IGlzSW5kZXggPSBjb21wdXRlZDxib29sZWFuPigoKSA9PlxuICAgIHRoaXMudVMucGFnZVMuaXNJbmRleCh0aGlzLnJvdXRlLCB0aGlzLm92ZXJyaWRlUGFnZVR5cGVTaWduYWwoKSksXG4gICk7XG4gIHJlYWRvbmx5IGlzQ2xvbmUgPSBjb21wdXRlZDxib29sZWFuPigoKSA9PlxuICAgIHRoaXMudVMucGFnZVMuaXNDbG9uZSh0aGlzLnJvdXRlLCB0aGlzLm92ZXJyaWRlUGFnZVR5cGVTaWduYWwoKSksXG4gICk7XG4gIHJlYWRvbmx5IGlzRWRpdCA9IGNvbXB1dGVkPGJvb2xlYW4+KCgpID0+XG4gICAgdGhpcy51Uy5wYWdlUy5pc0VkaXQodGhpcy5yb3V0ZSwgdGhpcy5vdmVycmlkZVBhZ2VUeXBlU2lnbmFsKCkpLFxuICApO1xuICByZWFkb25seSBpc1Nob3cgPSBjb21wdXRlZDxib29sZWFuPigoKSA9PlxuICAgIHRoaXMudVMucGFnZVMuaXNTaG93KHRoaXMucm91dGUsIHRoaXMub3ZlcnJpZGVQYWdlVHlwZVNpZ25hbCgpKSxcbiAgKTtcbiAgZ2V0IGluZm9GdW5jKCkge1xuICAgIHJldHVybiB0aGlzLnVTLmluZm87XG4gIH1cbiAgcHVibGljIHJvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKTtcbiAgcHVibGljIHVTID0gaW5qZWN0KFV0aWxpdHlTZXJ2aWNlPFRFbnZpcm9ubWVudD4pO1xuICByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIGFzeW5jIGluaXQoZnVuYz86ICgpID0+IFByb21pc2U8YW55PiwgZXJyPzogKCkgPT4gYW55KSB7XG4gICAgdGhpcy5zZXRMb2FkZXIodHJ1ZSk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGNvZGUgPVxuICAgICAgICB0aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1NYXAuZ2V0KHRoaXMuaWRGaWVsZCkgfHxcbiAgICAgICAgdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbU1hcC5nZXQodGhpcy5pZEZpZWxkKTtcbiAgICAgIHRoaXMucGFnZVR5cGUgPSB0aGlzLnJvdXRlLnNuYXBzaG90LmRhdGEudHlwZTtcbiAgICAgIHRoaXNbdGhpcy5pZEZpZWxkXSA9IGNvZGU7XG4gICAgICBpZiAodGhpcy5pc0NyZWF0ZSgpICYmIGNvZGUpIHRocm93ICdQYWdlIGlzIGltcHVyZSc7XG4gICAgICBpZiAoY29kZSAmJiBmdW5jKSBhd2FpdCBmdW5jKCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgaWYgKGVycikgZXJyKCk7XG4gICAgICBlbHNlIHtcbiAgICAgICAgYXdhaXQgdGhpcy5pbmZvRnVuYyhlcnJvciwgMCk7XG4gICAgICAgIHRoaXMudVMuYmFjaygpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnNldExvYWRlcihmYWxzZSk7XG4gIH1cblxuICBzZXRMb2FkZXIgPSAodjogYm9vbGVhbikgPT4ge1xuICAgIHRoaXMubG9hZGluZyA9IHY7XG4gICAgdGhpcy5sb2FkaW5nU2lnbmFsLnNldCh2KTtcbiAgfTtcblxuICByZWFkb25seSBwYWdlU3RhdGUgPSBjb21wdXRlZDxJUGFnZVN0YXRlPigoKSA9PiAoe1xuICAgIGlzQ2xvbmU6IHRoaXMuaXNDbG9uZSgpLFxuICAgIGlzQ3JlYXRlOiB0aGlzLmlzQ3JlYXRlKCksXG4gICAgaXNFZGl0OiB0aGlzLmlzRWRpdCgpLFxuICAgIGlzU2hvdzogdGhpcy5pc1Nob3coKSxcbiAgICBpc01vZGFsOiB0aGlzLmlzTW9kYWwoKSxcbiAgfSkpO1xuXG4gIHNldEFzSW5kZXgoKSB7XG4gICAgdGhpcy5vdmVycmlkZVBhZ2VUeXBlU2lnbmFsLnNldChFUGFnZVR5cGUuaW5kZXhQYWdlKTtcbiAgfVxuICBzZXRBc0Nsb25lKCkge1xuICAgIHRoaXMub3ZlcnJpZGVQYWdlVHlwZVNpZ25hbC5zZXQoRVBhZ2VUeXBlLmNsb25lUGFnZSk7XG4gIH1cbiAgc2V0QXNDcmVhdGUoKSB7XG4gICAgdGhpcy5vdmVycmlkZVBhZ2VUeXBlU2lnbmFsLnNldChFUGFnZVR5cGUuY3JlYXRlUGFnZSk7XG4gIH1cbiAgc2V0QXNFZGl0KCkge1xuICAgIHRoaXMub3ZlcnJpZGVQYWdlVHlwZVNpZ25hbC5zZXQoRVBhZ2VUeXBlLmVkaXRQYWdlKTtcbiAgfVxuICBzZXRBc1Nob3coKSB7XG4gICAgdGhpcy5vdmVycmlkZVBhZ2VUeXBlU2lnbmFsLnNldChFUGFnZVR5cGUuc2hvd1BhZ2UpO1xuICB9XG5cbiAgcmVhZG9ubHkgcXVlcnlQYXJhbXNTaWduYWwgPSB0b1NpZ25hbChcbiAgICB0aGlzLnJvdXRlLnF1ZXJ5UGFyYW1zIGFzIE9ic2VydmFibGU8eyBjb2RlPzogc3RyaW5nOyBpZD86IHN0cmluZyB9PixcbiAgKTtcbiAgZ2V0IF9xdWVyeVBhcmFtcygpIHtcbiAgICByZXR1cm4gdGhpcy5xdWVyeVBhcmFtc1NpZ25hbCgpIHx8IHt9O1xuICB9XG5cbiAgYXN5bmMgY2hlY2tQYXJhbXMocGFyYW1zOiBzdHJpbmdbXSA9IFsnY29kZSddKSB7XG4gICAgaWYgKHRoaXMuaXNDcmVhdGUoKSkgcmV0dXJuO1xuICAgIHRyeSB7XG4gICAgICBmb3IgKGNvbnN0IHBhcmFtIG9mIHBhcmFtcylcbiAgICAgICAgaWYgKCF0aGlzLl9xdWVyeVBhcmFtcz8uW3BhcmFtIGFzIGtleW9mIHR5cGVvZiB0aGlzLl9xdWVyeVBhcmFtc10pXG4gICAgICAgICAgdGhyb3cgYCR7cGFyYW19IGlzIG1pc3NpbmcuYDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhpcy5ib3VuY2UoZXJyb3IpO1xuICAgIH1cbiAgfVxuXG4gIHJlYWRvbmx5IGhpZGVDb2RlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGlzQ3JlYXRlID0gdGhpcy5pc0NyZWF0ZSgpLFxuICAgICAgaXNDbG9uZSA9IHRoaXMuaXNDbG9uZSgpO1xuICAgIHJldHVybiBpc0NyZWF0ZSB8fCBpc0Nsb25lO1xuICB9KTtcblxuICBhc3luYyBib3VuY2UoZXJyb3I6IGFueSkge1xuICAgIGF3YWl0IHRoaXMudVMuaW5mbyhlcnJvciwgMCk7XG4gICAgdGhpcy51Uy5nb1IoJy8nKTtcbiAgfVxuXG4gIGhhbmRsZUZvcm0oKSB7XG4gICAgc3dpdGNoICh0cnVlKSB7XG4gICAgICBjYXNlIHRoaXMuaXNTaG93KCk6XG4gICAgICAgIHRoaXMuaWZTaG93KCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSB0aGlzLmlzQ2xvbmUoKTpcbiAgICAgICAgdGhpcy5pZkNsb25lKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSB0aGlzLmlzRWRpdCgpOlxuICAgICAgICB0aGlzLmlmRWRpdCgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgdGhpcy5pc0NyZWF0ZSgpOlxuICAgICAgICB0aGlzLmlmQ3JlYXRlKCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBpZkVkaXQgPSAoKSA9PiB7fTtcbiAgaWZDcmVhdGUgPSAoKSA9PiB7fTtcbiAgaWZTaG93ID0gKCkgPT4ge307XG4gIGlmQ2xvbmUgPSAoKSA9PiB7fTtcbiAgaWZQYXJhbXMgPSAoZnVuYzogKCkgPT4gYW55KSA9PiB7XG4gICAgaWYgKCF0aGlzLmlzQ3JlYXRlKCkpIHtcbiAgICAgIGZ1bmMoKTtcbiAgICB9XG4gIH07XG5cbiAgYXN5bmMgb25TdWJtaXRDb21wbGV0ZShjb25maWc6IHtcbiAgICBub3RpZmljYXRpb25NZXNzYWdlPzogc3RyaW5nO1xuICAgIHBhcmFtPzogSU9iamVjdExpdGVyYWw7XG4gICAgcm91dGU/OiBzdHJpbmc7XG4gIH0pIHtcbiAgICBpZiAoY29uZmlnLm5vdGlmaWNhdGlvbk1lc3NhZ2UpIGF3YWl0IHRoaXMudVMuaW5mbyhjb25maWcubm90aWZpY2F0aW9uTWVzc2FnZSk7XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW2NvbmZpZy5yb3V0ZSB8fCAnLi4vc2hvdyddLCB7XG4gICAgICByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlLFxuICAgICAgcXVlcnlQYXJhbXM6IGNvbmZpZy5wYXJhbSxcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElQYWdlU3RhdGUge1xuICBpc0Nsb25lPzogYm9vbGVhbjtcbiAgaXNDcmVhdGU/OiBib29sZWFuO1xuICBpc0VkaXQ/OiBib29sZWFuO1xuICBpc1Nob3c/OiBib29sZWFuO1xuICBpc01vZGFsPzogYm9vbGVhbjtcbn1cbiJdfQ==
|
|
@@ -64,7 +64,7 @@ export class VerticalNavComponent {
|
|
|
64
64
|
}
|
|
65
65
|
}
|
|
66
66
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: VerticalNavComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
67
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: VerticalNavComponent, isStandalone: true, selector: "vertical-nav", inputs: { shouldShowChildInput: { classPropertyName: "shouldShowChildInput", publicName: "shouldShowChildInput", isSignal: true, isRequired: false, transformFunction: null }, toolbarTitle: { classPropertyName: "toolbarTitle", publicName: "toolbarTitle", isSignal: true, isRequired: false, transformFunction: null }, toolbarLogo: { classPropertyName: "toolbarLogo", publicName: "toolbarLogo", isSignal: true, isRequired: false, transformFunction: null }, toolbarLogoStyle: { classPropertyName: "toolbarLogoStyle", publicName: "toolbarLogoStyle", isSignal: true, isRequired: false, transformFunction: null }, fixedTopGap: { classPropertyName: "fixedTopGap", publicName: "fixedTopGap", isSignal: true, isRequired: false, transformFunction: null }, sidenavTemplate: { classPropertyName: "sidenavTemplate", publicName: "sidenavTemplate", isSignal: true, isRequired: false, transformFunction: null }, toolbarTemplate: { classPropertyName: "toolbarTemplate", publicName: "toolbarTemplate", isSignal: true, isRequired: false, transformFunction: null }, toolbarEndTemplate: { classPropertyName: "toolbarEndTemplate", publicName: "toolbarEndTemplate", isSignal: true, isRequired: false, transformFunction: null }, bodyTemplate: { classPropertyName: "bodyTemplate", publicName: "bodyTemplate", isSignal: true, isRequired: false, transformFunction: null }, useToolbar: { classPropertyName: "useToolbar", publicName: "useToolbar", isSignal: true, isRequired: false, transformFunction: null }, showMenu: { classPropertyName: "showMenu", publicName: "showMenu", isSignal: true, isRequired: false, transformFunction: null }, menuItems: { classPropertyName: "menuItems", publicName: "menuItems", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "drawer", first: true, predicate: ["snav"], descendants: true, isSignal: true }, { propertyName: "toolbarContRef", first: true, predicate: ["toolbarCont"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"vertical-nav\" [class.vertical-nav-is-mobile]=\"uS.isMobileSignal()\">\n @if (useToolbar()) {\n <div #toolbarCont class=\"vertical-nav-toolbar\">\n @if (toolbarTemplate()) {\n <ng-container *ngTemplateOutlet=\"toolbarTemplate()\" />\n } @else {\n <mat-toolbar color=\"primary\" class=\"bg-primary d-flex justify-content-between\">\n <div class=\"d-flex align-items-center w-100\">\n <button mat-icon-button (click)=\"snav.toggle()\">\n <mat-icon>menu</mat-icon>\n </button>\n @if (toolbarLogo()) {\n <img\n [src]=\"toolbarLogo()\"\n [ngStyle]=\"toolbarLogoStyle()\"\n alt=\"toolbar logo\"\n class=\"toolbarLogo\" />\n }\n @if (toolbarTitle()) {\n <h1 class=\"vertical-nav-app-name\">{{ toolbarTitle() | appTranslate | async }}</h1>\n }\n </div>\n <div>\n @if (toolbarEndTemplate()) {\n <ng-container *ngTemplateOutlet=\"toolbarEndTemplate()\" />\n }\n </div>\n </mat-toolbar>\n }\n </div>\n }\n\n <mat-sidenav-container\n [id]=\"id()\"\n class=\"vertical-nav-container\"\n [style.marginTop.px]=\"\n uS.isMobileSignal() ? fixedTopGap() || toolbarContRef()?.nativeElement?.offsetHeight : 0\n \">\n <mat-sidenav\n class=\"side-w\"\n [ngClass]=\"{ mobile: this.uS.isMobileSignal() }\"\n #snav\n [mode]=\"uS.isMobileSignal() ? 'over' : 'side'\"\n [opened]=\"!uS.isMobileSignal() && showMenu()\"\n [fixedInViewport]=\"uS.isMobileSignal()\"\n [fixedTopGap]=\" uS.isMobileSignal() ? fixedTopGap() || toolbarContRef()?.nativeElement?.offsetHeight : 0\"\n [hidden]=\"!showMenu()\">\n <div class=\"vertical-nav-side-padding\">\n @if (sidenavTemplate()) {\n <ng-container *ngTemplateOutlet=\"sidenavTemplate()\" />\n } @else {\n <mat-tree\n [dataSource]=\"dataSource()\"\n [treeControl]=\"treeControl()\"\n class=\"vertical-nav-tree\">\n <!-- This is the tree node template for leaf nodes -->\n <!-- This is the tree node template for expandable nodes -->\n <mat-nested-tree-node\n *matTreeNodeDef=\"let node; when: hasChild()\"\n class=\"expandable-node\">\n <div class=\"mat-tree-node\">\n <button\n matTreeNodeToggle\n [attr.aria-label]=\"'Toggle ' + node.name\"\n class=\"menu-btn level{{ node.level }}\">\n <div class=\"row\">\n <div class=\"col\">\n <span class=\"{{ node.icon }}\"></span>\n {{ node.label | appTranslate | async }}\n </div>\n <div class=\"col-auto\">\n <span\n class=\"fa {{\n treeControl().isExpanded(node) ? 'fa-chevron-down' : 'fa-chevron-right'\n }} \"></span>\n </div>\n </div>\n </button>\n </div>\n <div>\n <!-- There is inline padding applied to this div using styles.\n This padding value depends on the mat-icon-button width. -->\n <div\n [class.vertical-nav-tree-invisible]=\"!treeControl().isExpanded(node)\"\n role=\"group\"\n class=\"group\">\n <ng-container matTreeNodeOutlet />\n </div>\n </div>\n </mat-nested-tree-node>\n <!-- There is inline padding applied to this node using styles.\n This padding value depends on the mat-icon-button width. -->\n <mat-tree-node\n *matTreeNodeDef=\"let node; when: shouldShowChild()\"\n matTreeNodeToggle\n class=\"single-node level{{ node.level }}\">\n <a [routerLink]=\"node.link\" class=\"d-block w-100\">\n <span class=\"{{ node.icon }}\"></span>\n {{ node.label | appTranslate | async }}\n </a>\n </mat-tree-node>\n <mat-tree-node\n *matTreeNodeDef=\"let node\"\n matTreeNodeToggle\n class=\"single-node restricted level{{ node.level }}\" />\n </mat-tree>\n }\n </div>\n </mat-sidenav>\n\n <mat-sidenav-content class=\"vertical-nav-body\">\n @if (bodyTemplate()) {\n <ng-container *ngTemplateOutlet=\"bodyTemplate()\" />\n } @else {\n <ng-content />\n }\n </mat-sidenav-content>\n </mat-sidenav-container>\n</div>\n", styles: [".menu{background-color:#fff}.vertical-nav{display:flex;flex-direction:column;height:100%}.vertical-nav.fullScreen{position:absolute;inset:0}.toolbarLogo{--toolbarLogoDimen: 50px;height:var(--toolbarLogoDimen)}h1.vertical-nav-app-name{margin-left:8px}.vertical-nav-container{flex:1}.vertical-nav-is-mobile .vertical-nav-toolbar{position:fixed;z-index:2;width:100%}.vertical-nav-is-mobile .vertical-nav-container{flex:1 0 auto}.mat-drawer-container{background-color:unset}.mat-drawer-content{background-color:#e9e9e9}.expandable-node button{width:100%;border-radius:0;text-align:left}.single-node button{width:24px}.level0{border-bottom:1px solid rgba(141,141,141,.231372549)}.side-w{width:auto;margin:10px;border-radius:16px}.side-w.mobile{width:90%;margin:0;border-radius:0}.vertical-nav-tree-invisible{display:none}.vertical-nav-tree ul,.vertical-nav-tree li{margin-top:0;margin-bottom:0;list-style-type:none}.vertical-nav-tree div[role=group]{border-radius:var(--borderRadius);background-color:#ffffff57}.vertical-nav-tree div[role=group]>.mat-tree-node{padding:10px 20px}a{color:inherit}.restricted{display:none}mat-sidenav.mat-drawer.mat-drawer-opened.mat-drawer-side.mat-sidenav{min-width:200px;overflow-x:auto;white-space:nowrap}.menu-btn{background-color:#ffffff57;border-radius:var(--borderRadius)!important;padding:10px 20px;color:#2b2b2b;border:none}.expandable-node .group{border:1px solid rgba(0,0,0,.11)!important}.profile{position:sticky;bottom:0;right:0;left:0;background-color:var(--primary);background-image:linear-gradient(45deg,#ffffffa8,#ffffffa8);padding:10px}.vertical-nav-side-padding{padding:var(--space-8)}\n"], dependencies: [{ kind: "ngmodule", type: MatToolbarModule }, { kind: "component", type: i1.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatSidenavModule }, { kind: "component", type: i4.MatSidenav, selector: "mat-sidenav", inputs: ["fixedInViewport", "fixedTopGap", "fixedBottomGap"], exportAs: ["matSidenav"] }, { kind: "component", type: i4.MatSidenavContainer, selector: "mat-sidenav-container", exportAs: ["matSidenavContainer"] }, { kind: "component", type: i4.MatSidenavContent, selector: "mat-sidenav-content" }, { kind: "ngmodule", type: MatTreeModule }, { kind: "directive", type: i5.MatNestedTreeNode, selector: "mat-nested-tree-node", inputs: ["matNestedTreeNode", "disabled", "tabIndex"], exportAs: ["matNestedTreeNode"] }, { kind: "directive", type: i5.MatTreeNodeDef, selector: "[matTreeNodeDef]", inputs: ["matTreeNodeDefWhen", "matTreeNode"] }, { kind: "directive", type: i5.MatTreeNodeToggle, selector: "[matTreeNodeToggle]", inputs: ["matTreeNodeToggleRecursive"] }, { kind: "component", type: i5.MatTree, selector: "mat-tree", exportAs: ["matTree"] }, { kind: "directive", type: i5.MatTreeNode, selector: "mat-tree-node", inputs: ["disabled", "tabIndex"], exportAs: ["matTreeNode"] }, { kind: "directive", type: i5.MatTreeNodeOutlet, selector: "[matTreeNodeOutlet]" }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i6.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: SDKTranslatePipe, name: "appTranslate" }] }); }
|
|
67
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: VerticalNavComponent, isStandalone: true, selector: "vertical-nav", inputs: { shouldShowChildInput: { classPropertyName: "shouldShowChildInput", publicName: "shouldShowChildInput", isSignal: true, isRequired: false, transformFunction: null }, toolbarTitle: { classPropertyName: "toolbarTitle", publicName: "toolbarTitle", isSignal: true, isRequired: false, transformFunction: null }, toolbarLogo: { classPropertyName: "toolbarLogo", publicName: "toolbarLogo", isSignal: true, isRequired: false, transformFunction: null }, toolbarLogoStyle: { classPropertyName: "toolbarLogoStyle", publicName: "toolbarLogoStyle", isSignal: true, isRequired: false, transformFunction: null }, fixedTopGap: { classPropertyName: "fixedTopGap", publicName: "fixedTopGap", isSignal: true, isRequired: false, transformFunction: null }, sidenavTemplate: { classPropertyName: "sidenavTemplate", publicName: "sidenavTemplate", isSignal: true, isRequired: false, transformFunction: null }, toolbarTemplate: { classPropertyName: "toolbarTemplate", publicName: "toolbarTemplate", isSignal: true, isRequired: false, transformFunction: null }, toolbarEndTemplate: { classPropertyName: "toolbarEndTemplate", publicName: "toolbarEndTemplate", isSignal: true, isRequired: false, transformFunction: null }, bodyTemplate: { classPropertyName: "bodyTemplate", publicName: "bodyTemplate", isSignal: true, isRequired: false, transformFunction: null }, useToolbar: { classPropertyName: "useToolbar", publicName: "useToolbar", isSignal: true, isRequired: false, transformFunction: null }, showMenu: { classPropertyName: "showMenu", publicName: "showMenu", isSignal: true, isRequired: false, transformFunction: null }, menuItems: { classPropertyName: "menuItems", publicName: "menuItems", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "drawer", first: true, predicate: ["snav"], descendants: true, isSignal: true }, { propertyName: "toolbarContRef", first: true, predicate: ["toolbarCont"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"vertical-nav\" [class.vertical-nav-is-mobile]=\"uS.isMobileSignal()\">\n @if (useToolbar()) {\n <div #toolbarCont class=\"vertical-nav-toolbar\">\n @if (toolbarTemplate()) {\n <ng-container *ngTemplateOutlet=\"toolbarTemplate()\" />\n } @else {\n <mat-toolbar color=\"primary\" class=\"bg-primary d-flex justify-content-between\">\n <div class=\"d-flex align-items-center w-100\">\n @if (showMenu()) {\n <button mat-icon-button (click)=\"snav.toggle()\">\n <mat-icon>menu</mat-icon>\n </button>\n }\n @if (toolbarLogo()) {\n <img\n [src]=\"toolbarLogo()\"\n [ngStyle]=\"toolbarLogoStyle()\"\n alt=\"toolbar logo\"\n class=\"toolbarLogo\" />\n }\n @if (toolbarTitle()) {\n <h1 class=\"vertical-nav-app-name\">{{ toolbarTitle() | appTranslate | async }}</h1>\n }\n </div>\n <div>\n @if (toolbarEndTemplate()) {\n <ng-container *ngTemplateOutlet=\"toolbarEndTemplate()\" />\n }\n </div>\n </mat-toolbar>\n }\n </div>\n }\n\n <mat-sidenav-container\n [id]=\"id()\"\n class=\"vertical-nav-container\"\n [style.marginTop.px]=\"\n uS.isMobileSignal() ? fixedTopGap() || toolbarContRef()?.nativeElement?.offsetHeight : 0\n \">\n <mat-sidenav\n class=\"side-w\"\n [ngClass]=\"{ mobile: this.uS.isMobileSignal() }\"\n #snav\n [mode]=\"uS.isMobileSignal() ? 'over' : 'side'\"\n [opened]=\"!uS.isMobileSignal() && showMenu()\"\n [fixedInViewport]=\"uS.isMobileSignal()\"\n [fixedTopGap]=\"\n uS.isMobileSignal() ? fixedTopGap() || toolbarContRef()?.nativeElement?.offsetHeight : 0\n \"\n [hidden]=\"!showMenu()\">\n <div class=\"vertical-nav-side-padding\">\n @if (sidenavTemplate()) {\n <ng-container *ngTemplateOutlet=\"sidenavTemplate()\" />\n } @else {\n <mat-tree\n [dataSource]=\"dataSource()\"\n [treeControl]=\"treeControl()\"\n class=\"vertical-nav-tree\">\n <!-- This is the tree node template for leaf nodes -->\n <!-- This is the tree node template for expandable nodes -->\n <mat-nested-tree-node\n *matTreeNodeDef=\"let node; when: hasChild()\"\n class=\"expandable-node\">\n <div class=\"mat-tree-node\">\n <button\n matTreeNodeToggle\n [attr.aria-label]=\"'Toggle ' + node.name\"\n class=\"menu-btn level{{ node.level }}\">\n <div class=\"row\">\n <div class=\"col\">\n <span class=\"{{ node.icon }}\"></span>\n {{ node.label | appTranslate | async }}\n </div>\n <div class=\"col-auto\">\n <span\n class=\"fa {{\n treeControl().isExpanded(node) ? 'fa-chevron-down' : 'fa-chevron-right'\n }} \"></span>\n </div>\n </div>\n </button>\n </div>\n <div>\n <!-- There is inline padding applied to this div using styles.\n This padding value depends on the mat-icon-button width. -->\n <div\n [class.vertical-nav-tree-invisible]=\"!treeControl().isExpanded(node)\"\n role=\"group\"\n class=\"group\">\n <ng-container matTreeNodeOutlet />\n </div>\n </div>\n </mat-nested-tree-node>\n <!-- There is inline padding applied to this node using styles.\n This padding value depends on the mat-icon-button width. -->\n <mat-tree-node\n *matTreeNodeDef=\"let node; when: shouldShowChild()\"\n matTreeNodeToggle\n class=\"single-node level{{ node.level }}\">\n <a [routerLink]=\"node.link\" class=\"d-block w-100\">\n <span class=\"{{ node.icon }}\"></span>\n {{ node.label | appTranslate | async }}\n </a>\n </mat-tree-node>\n <mat-tree-node\n *matTreeNodeDef=\"let node\"\n matTreeNodeToggle\n class=\"single-node restricted level{{ node.level }}\" />\n </mat-tree>\n }\n </div>\n </mat-sidenav>\n\n <mat-sidenav-content class=\"vertical-nav-body\">\n @if (bodyTemplate()) {\n <ng-container *ngTemplateOutlet=\"bodyTemplate()\" />\n } @else {\n <ng-content />\n }\n </mat-sidenav-content>\n </mat-sidenav-container>\n</div>\n", styles: [".menu{background-color:#fff}.vertical-nav{display:flex;flex-direction:column;height:100%}.vertical-nav.fullScreen{position:absolute;inset:0}.toolbarLogo{--toolbarLogoDimen: 50px;height:var(--toolbarLogoDimen)}h1.vertical-nav-app-name{margin-left:8px}.vertical-nav-container{flex:1}.vertical-nav-is-mobile .vertical-nav-toolbar{position:fixed;z-index:2;width:100%}.vertical-nav-is-mobile .vertical-nav-container{flex:1 0 auto}.mat-drawer-container{background-color:unset}.mat-drawer-content{background-color:#e9e9e9}.expandable-node button{width:100%;border-radius:0;text-align:left}.single-node button{width:24px}.level0{border-bottom:1px solid rgba(141,141,141,.231372549)}.side-w{width:auto;margin:10px;border-radius:16px}.side-w.mobile{width:90%;margin:0;border-radius:0}.vertical-nav-tree-invisible{display:none}.vertical-nav-tree ul,.vertical-nav-tree li{margin-top:0;margin-bottom:0;list-style-type:none}.vertical-nav-tree div[role=group]{border-radius:var(--borderRadius);background-color:#ffffff57}.vertical-nav-tree div[role=group]>.mat-tree-node{padding:10px 20px}a{color:inherit}.restricted{display:none}mat-sidenav.mat-drawer.mat-drawer-opened.mat-drawer-side.mat-sidenav{min-width:200px;overflow-x:auto;white-space:nowrap}.menu-btn{background-color:#ffffff57;border-radius:var(--borderRadius)!important;padding:10px 20px;color:#2b2b2b;border:none}.expandable-node .group{border:1px solid rgba(0,0,0,.11)!important}.profile{position:sticky;bottom:0;right:0;left:0;background-color:var(--primary);background-image:linear-gradient(45deg,#ffffffa8,#ffffffa8);padding:10px}.vertical-nav-side-padding{padding:var(--space-8)}\n"], dependencies: [{ kind: "ngmodule", type: MatToolbarModule }, { kind: "component", type: i1.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatSidenavModule }, { kind: "component", type: i4.MatSidenav, selector: "mat-sidenav", inputs: ["fixedInViewport", "fixedTopGap", "fixedBottomGap"], exportAs: ["matSidenav"] }, { kind: "component", type: i4.MatSidenavContainer, selector: "mat-sidenav-container", exportAs: ["matSidenavContainer"] }, { kind: "component", type: i4.MatSidenavContent, selector: "mat-sidenav-content" }, { kind: "ngmodule", type: MatTreeModule }, { kind: "directive", type: i5.MatNestedTreeNode, selector: "mat-nested-tree-node", inputs: ["matNestedTreeNode", "disabled", "tabIndex"], exportAs: ["matNestedTreeNode"] }, { kind: "directive", type: i5.MatTreeNodeDef, selector: "[matTreeNodeDef]", inputs: ["matTreeNodeDefWhen", "matTreeNode"] }, { kind: "directive", type: i5.MatTreeNodeToggle, selector: "[matTreeNodeToggle]", inputs: ["matTreeNodeToggleRecursive"] }, { kind: "component", type: i5.MatTree, selector: "mat-tree", exportAs: ["matTree"] }, { kind: "directive", type: i5.MatTreeNode, selector: "mat-tree-node", inputs: ["disabled", "tabIndex"], exportAs: ["matTreeNode"] }, { kind: "directive", type: i5.MatTreeNodeOutlet, selector: "[matTreeNodeOutlet]" }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i6.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: SDKTranslatePipe, name: "appTranslate" }] }); }
|
|
68
68
|
}
|
|
69
69
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: VerticalNavComponent, decorators: [{
|
|
70
70
|
type: Component,
|
|
@@ -79,6 +79,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
|
|
|
79
79
|
ImageLoaderDirective,
|
|
80
80
|
CommonModule,
|
|
81
81
|
SDKTranslatePipe,
|
|
82
|
-
], template: "<div class=\"vertical-nav\" [class.vertical-nav-is-mobile]=\"uS.isMobileSignal()\">\n @if (useToolbar()) {\n <div #toolbarCont class=\"vertical-nav-toolbar\">\n @if (toolbarTemplate()) {\n <ng-container *ngTemplateOutlet=\"toolbarTemplate()\" />\n } @else {\n <mat-toolbar color=\"primary\" class=\"bg-primary d-flex justify-content-between\">\n <div class=\"d-flex align-items-center w-100\">\n <button mat-icon-button (click)=\"snav.toggle()\">\n
|
|
82
|
+
], template: "<div class=\"vertical-nav\" [class.vertical-nav-is-mobile]=\"uS.isMobileSignal()\">\n @if (useToolbar()) {\n <div #toolbarCont class=\"vertical-nav-toolbar\">\n @if (toolbarTemplate()) {\n <ng-container *ngTemplateOutlet=\"toolbarTemplate()\" />\n } @else {\n <mat-toolbar color=\"primary\" class=\"bg-primary d-flex justify-content-between\">\n <div class=\"d-flex align-items-center w-100\">\n @if (showMenu()) {\n <button mat-icon-button (click)=\"snav.toggle()\">\n <mat-icon>menu</mat-icon>\n </button>\n }\n @if (toolbarLogo()) {\n <img\n [src]=\"toolbarLogo()\"\n [ngStyle]=\"toolbarLogoStyle()\"\n alt=\"toolbar logo\"\n class=\"toolbarLogo\" />\n }\n @if (toolbarTitle()) {\n <h1 class=\"vertical-nav-app-name\">{{ toolbarTitle() | appTranslate | async }}</h1>\n }\n </div>\n <div>\n @if (toolbarEndTemplate()) {\n <ng-container *ngTemplateOutlet=\"toolbarEndTemplate()\" />\n }\n </div>\n </mat-toolbar>\n }\n </div>\n }\n\n <mat-sidenav-container\n [id]=\"id()\"\n class=\"vertical-nav-container\"\n [style.marginTop.px]=\"\n uS.isMobileSignal() ? fixedTopGap() || toolbarContRef()?.nativeElement?.offsetHeight : 0\n \">\n <mat-sidenav\n class=\"side-w\"\n [ngClass]=\"{ mobile: this.uS.isMobileSignal() }\"\n #snav\n [mode]=\"uS.isMobileSignal() ? 'over' : 'side'\"\n [opened]=\"!uS.isMobileSignal() && showMenu()\"\n [fixedInViewport]=\"uS.isMobileSignal()\"\n [fixedTopGap]=\"\n uS.isMobileSignal() ? fixedTopGap() || toolbarContRef()?.nativeElement?.offsetHeight : 0\n \"\n [hidden]=\"!showMenu()\">\n <div class=\"vertical-nav-side-padding\">\n @if (sidenavTemplate()) {\n <ng-container *ngTemplateOutlet=\"sidenavTemplate()\" />\n } @else {\n <mat-tree\n [dataSource]=\"dataSource()\"\n [treeControl]=\"treeControl()\"\n class=\"vertical-nav-tree\">\n <!-- This is the tree node template for leaf nodes -->\n <!-- This is the tree node template for expandable nodes -->\n <mat-nested-tree-node\n *matTreeNodeDef=\"let node; when: hasChild()\"\n class=\"expandable-node\">\n <div class=\"mat-tree-node\">\n <button\n matTreeNodeToggle\n [attr.aria-label]=\"'Toggle ' + node.name\"\n class=\"menu-btn level{{ node.level }}\">\n <div class=\"row\">\n <div class=\"col\">\n <span class=\"{{ node.icon }}\"></span>\n {{ node.label | appTranslate | async }}\n </div>\n <div class=\"col-auto\">\n <span\n class=\"fa {{\n treeControl().isExpanded(node) ? 'fa-chevron-down' : 'fa-chevron-right'\n }} \"></span>\n </div>\n </div>\n </button>\n </div>\n <div>\n <!-- There is inline padding applied to this div using styles.\n This padding value depends on the mat-icon-button width. -->\n <div\n [class.vertical-nav-tree-invisible]=\"!treeControl().isExpanded(node)\"\n role=\"group\"\n class=\"group\">\n <ng-container matTreeNodeOutlet />\n </div>\n </div>\n </mat-nested-tree-node>\n <!-- There is inline padding applied to this node using styles.\n This padding value depends on the mat-icon-button width. -->\n <mat-tree-node\n *matTreeNodeDef=\"let node; when: shouldShowChild()\"\n matTreeNodeToggle\n class=\"single-node level{{ node.level }}\">\n <a [routerLink]=\"node.link\" class=\"d-block w-100\">\n <span class=\"{{ node.icon }}\"></span>\n {{ node.label | appTranslate | async }}\n </a>\n </mat-tree-node>\n <mat-tree-node\n *matTreeNodeDef=\"let node\"\n matTreeNodeToggle\n class=\"single-node restricted level{{ node.level }}\" />\n </mat-tree>\n }\n </div>\n </mat-sidenav>\n\n <mat-sidenav-content class=\"vertical-nav-body\">\n @if (bodyTemplate()) {\n <ng-container *ngTemplateOutlet=\"bodyTemplate()\" />\n } @else {\n <ng-content />\n }\n </mat-sidenav-content>\n </mat-sidenav-container>\n</div>\n", styles: [".menu{background-color:#fff}.vertical-nav{display:flex;flex-direction:column;height:100%}.vertical-nav.fullScreen{position:absolute;inset:0}.toolbarLogo{--toolbarLogoDimen: 50px;height:var(--toolbarLogoDimen)}h1.vertical-nav-app-name{margin-left:8px}.vertical-nav-container{flex:1}.vertical-nav-is-mobile .vertical-nav-toolbar{position:fixed;z-index:2;width:100%}.vertical-nav-is-mobile .vertical-nav-container{flex:1 0 auto}.mat-drawer-container{background-color:unset}.mat-drawer-content{background-color:#e9e9e9}.expandable-node button{width:100%;border-radius:0;text-align:left}.single-node button{width:24px}.level0{border-bottom:1px solid rgba(141,141,141,.231372549)}.side-w{width:auto;margin:10px;border-radius:16px}.side-w.mobile{width:90%;margin:0;border-radius:0}.vertical-nav-tree-invisible{display:none}.vertical-nav-tree ul,.vertical-nav-tree li{margin-top:0;margin-bottom:0;list-style-type:none}.vertical-nav-tree div[role=group]{border-radius:var(--borderRadius);background-color:#ffffff57}.vertical-nav-tree div[role=group]>.mat-tree-node{padding:10px 20px}a{color:inherit}.restricted{display:none}mat-sidenav.mat-drawer.mat-drawer-opened.mat-drawer-side.mat-sidenav{min-width:200px;overflow-x:auto;white-space:nowrap}.menu-btn{background-color:#ffffff57;border-radius:var(--borderRadius)!important;padding:10px 20px;color:#2b2b2b;border:none}.expandable-node .group{border:1px solid rgba(0,0,0,.11)!important}.profile{position:sticky;bottom:0;right:0;left:0;background-color:var(--primary);background-image:linear-gradient(45deg,#ffffffa8,#ffffffa8);padding:10px}.vertical-nav-side-padding{padding:var(--space-8)}\n"] }]
|
|
83
83
|
}], ctorParameters: () => [] });
|
|
84
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVydGljYWwtbmF2LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy92ZXJ0aWNhbC1uYXYvdmVydGljYWwtbmF2LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy92ZXJ0aWNhbC1uYXYvdmVydGljYWwtbmF2LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3RELE9BQU8sRUFDTCxTQUFTLEVBS1QsTUFBTSxFQUNOLEtBQUssRUFDTCxRQUFRLEVBQ1IsU0FBUyxFQUNULE1BQU0sR0FHUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWEsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDaEYsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVuQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNsRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQWMsZ0JBQWdCLEVBQUUsTUFBTSwyQkFB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QUNMLENBQUM7SUFDSCxDQUFDOzhHQWxEVSxvQkFBb0I7a0dBQXBCLG9CQUFvQix1L0RDbkRqQyx5dEpBdUhBLDBwRERoRkksZ0JBQWdCLGdKQUNoQixlQUFlLDJJQUNmLGFBQWEsbUxBQ2IsZ0JBQWdCLDBZQUNoQixhQUFhLG92QkFDYixVQUFVLG1PQUNWLGFBQWEsOEJBRWIsWUFBWSx5YUFDWixnQkFBZ0I7OzJGQUdQLG9CQUFvQjtrQkFuQmhDLFNBQVM7K0JBQ0UsY0FBYyxjQUlaLElBQUksV0FDUDt3QkFDUCxnQkFBZ0I7d0JBQ2hCLGVBQWU7d0JBQ2YsYUFBYTt3QkFDYixnQkFBZ0I7d0JBQ2hCLGFBQWE7d0JBQ2IsVUFBVTt3QkFDVixhQUFhO3dCQUNiLG9CQUFvQjt3QkFDcEIsWUFBWTt3QkFDWixnQkFBZ0I7cUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWVkaWFNYXRjaGVyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2xheW91dCc7XG5pbXBvcnQgeyBOZXN0ZWRUcmVlQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay90cmVlJztcbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIFZpZXdDaGlsZCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIFRlbXBsYXRlUmVmLFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBjb21wdXRlZCxcbiAgdmlld0NoaWxkLFxuICBzaWduYWwsXG4gIEVsZW1lbnRSZWYsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdERyYXdlciwgTWF0U2lkZW5hdk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NpZGVuYXYnO1xuaW1wb3J0IHsgTWF0VHJlZU5lc3RlZERhdGFTb3VyY2UsIE1hdFRyZWVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90cmVlJztcbmltcG9ydCB7IFJvdXRlciwgUm91dGVyTGluayB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgUFMgZnJvbSAncGVyZmVjdC1zY3JvbGxiYXInO1xuXG5pbXBvcnQgeyBTREtUcmFuc2xhdGVQaXBlIH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL3BpcGVzL3RyYW5zbGF0ZS5waXBlJztcbmltcG9ydCB7IEltYWdlTG9hZGVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL2RpcmVjdGl2ZXMvaW5kZXguZGlyZWN0aXZlJztcbmltcG9ydCB7IE1hdE1lbnVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9tZW51JztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXRUb29sYmFyLCBNYXRUb29sYmFyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbGJhcic7XG5pbXBvcnQgeyBOZ0NsYXNzLCBOZ0lmLCBBc3luY1BpcGUsIENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBVdGlsaXR5U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL1NlcnZpY2VzL3V0aWxpdHkuc2VydmljZSc7XG5pbXBvcnQgeyBJT2JqZWN0TGl0ZXJhbCB9IGZyb20gJy4uLy4uL21vZGVscy9pbmRleC5tb2RlbCc7XG5pbXBvcnQgeyBFVFNNZW51SXRlbSB9IGZyb20gJy4uLy4uL21vZGVscy9JTWVudUl0ZW0nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZXJ0aWNhbC1uYXYnLFxuICB0ZW1wbGF0ZVVybDogJy4vdmVydGljYWwtbmF2LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdmVydGljYWwtbmF2LmNvbXBvbmVudC5zY3NzJ10sXG5cbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIE1hdFRvb2xiYXJNb2R1bGUsXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgIE1hdEljb25Nb2R1bGUsXG4gICAgTWF0U2lkZW5hdk1vZHVsZSxcbiAgICBNYXRUcmVlTW9kdWxlLFxuICAgIFJvdXRlckxpbmssXG4gICAgTWF0TWVudU1vZHVsZSxcbiAgICBJbWFnZUxvYWRlckRpcmVjdGl2ZSxcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgU0RLVHJhbnNsYXRlUGlwZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgVmVydGljYWxOYXZDb21wb25lbnQge1xuICBwdWJsaWMgdVMgPSBpbmplY3QoVXRpbGl0eVNlcnZpY2UpO1xuICBwdWJsaWMgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG5cbiAgc2hvdWxkU2hvd0NoaWxkSW5wdXQgPSBpbnB1dDwoXzogbnVtYmVyLCBub2RlOiBJTWVudUl0ZW0pID0+IGJvb2xlYW4+KCk7XG4gIHNob3VsZFNob3dDaGlsZCA9IGNvbXB1dGVkPChfOiBudW1iZXIsIG5vZGU6IElNZW51SXRlbSkgPT4gYm9vbGVhbj4oXG4gICAgKCkgPT4gdGhpcy5zaG91bGRTaG93Q2hpbGRJbnB1dCgpIHx8ICgoKSA9PiB0cnVlKSxcbiAgKTtcbiAgcmVhZG9ubHkgdG9vbGJhclRpdGxlID0gaW5wdXQ8c3RyaW5nPigpO1xuICByZWFkb25seSB0b29sYmFyTG9nbyA9IGlucHV0PHN0cmluZz4oKTtcbiAgcmVhZG9ubHkgdG9vbGJhckxvZ29TdHlsZSA9IGlucHV0PElPYmplY3RMaXRlcmFsPigpO1xuICByZWFkb25seSBmaXhlZFRvcEdhcCA9IGlucHV0PG51bWJlcj4oKTtcbiAgcmVhZG9ubHkgc2lkZW5hdlRlbXBsYXRlID0gaW5wdXQ8VGVtcGxhdGVSZWY8YW55Pj4oKTtcbiAgcmVhZG9ubHkgdG9vbGJhclRlbXBsYXRlID0gaW5wdXQ8VGVtcGxhdGVSZWY8YW55Pj4oKTtcbiAgLyoqVGhpcyBvbmx5IHdvcmtzIHdoZW4gdGhlIHRvb2xiYXJUZW1wbGF0ZSBpcyBub3Qgc2V0ICovXG4gIHJlYWRvbmx5IHRvb2xiYXJFbmRUZW1wbGF0ZSA9IGlucHV0PFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ+KCk7XG4gIHJlYWRvbmx5IGJvZHlUZW1wbGF0ZSA9IGlucHV0PFRlbXBsYXRlUmVmPGFueT4+KCk7XG4gIHJlYWRvbmx5IHVzZVRvb2xiYXIgPSBpbnB1dDxib29sZWFuPih0cnVlKTtcbiAgcmVhZG9ubHkgc2hvd01lbnUgPSBpbnB1dDxib29sZWFuPigpO1xuICByZWFkb25seSBtZW51SXRlbXMgPSBpbnB1dDxJTWVudUl0ZW1bXT4oKTtcblxuICByZWFkb25seSBkYXRhU291cmNlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGRzID0gbmV3IE1hdFRyZWVOZXN0ZWREYXRhU291cmNlPElNZW51SXRlbT4oKSxcbiAgICAgIG1lbnUgPSB0aGlzLm1lbnVJdGVtcygpO1xuXG4gICAgaWYgKCFtZW51Py5sZW5ndGgpIHJldHVybiBkcztcbiAgICBtZW51LmZvckVhY2goKHgpID0+ICh4LmxldmVsID0gMCkpO1xuICAgIGRzLmRhdGEgPSBtZW51O1xuICAgIHJldHVybiBkcztcbiAgfSk7XG5cbiAgcmVhZG9ubHkgaWQgPSBzaWduYWwoJ21hdFNpZGVOYXYnICsgdGhpcy51Uy5nZW5SYW5kb21JRCk7XG4gIHJlYWRvbmx5IHRyZWVDb250cm9sID0gc2lnbmFsKG5ldyBOZXN0ZWRUcmVlQ29udHJvbDxJTWVudUl0ZW0+KChub2RlKSA9PiBub2RlLnN1YnMpKTtcblxuICByZWFkb25seSBkcmF3ZXIgPSB2aWV3Q2hpbGQ8TWF0RHJhd2VyIHwgdW5kZWZpbmVkPignc25hdicpO1xuICByZWFkb25seSB0b29sYmFyQ29udFJlZiA9IHZpZXdDaGlsZDxFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50Pj4oJ3Rvb2xiYXJDb250Jyk7XG5cbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBjb25zdCBkb2MgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yPEhUTUxEaXZFbGVtZW50PihgIyR7dGhpcy5pZCgpfSAubWF0LWRyYXdlci1pbm5lci1jb250YWluZXJgKTtcbiAgICBpZiAoZG9jKSB7XG4gICAgICBkb2Muc3R5bGUucG9zaXRpb24gPSAncmVsYXRpdmUnO1xuICAgICAgY29uc3QgcHMgPSBuZXcgUFMoZG9jLCB7XG4gICAgICAgIHdoZWVsU3BlZWQ6IDAuNSxcbiAgICAgICAgc3dpcGVFYXNpbmc6IGZhbHNlLFxuICAgICAgICB3aGVlbFByb3BhZ2F0aW9uOiB0cnVlLFxuICAgICAgICBtaW5TY3JvbGxiYXJMZW5ndGg6IDQwLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcmVhZG9ubHkgaGFzQ2hpbGQgPSBzaWduYWwoXG4gICAgKF86IG51bWJlciwgbm9kZTogSU1lbnVJdGVtKSA9PiBub2RlLmhhc1N1YiAmJiB0aGlzLnNob3VsZFNob3dDaGlsZCgpKF8sIG5vZGUpLFxuICApO1xufVxudHlwZSBJTWVudUl0ZW0gPSBQYXJ0aWFsPEVUU01lbnVJdGVtPjtcbi8vIGludGVyZmFjZSBJRVRTTWVudUl0ZW0ge1xuLy8gICBsYWJlbDogc3RyaW5nO1xuLy8gICBsaW5rOiBzdHJpbmc7XG4vLyAgIGhhc1N1Yj86IGJvb2xlYW47XG4vLyAgIGljb24/OiBzdHJpbmc7XG4vLyAgIGxldmVsPzogbnVtYmVyO1xuLy8gICBpZD86IHN0cmluZztcbi8vICAgY2hpbGRyZW4/OiBJRVRTTWVudUl0ZW1bXTtcbi8vIH1cbiIsIjxkaXYgY2xhc3M9XCJ2ZXJ0aWNhbC1uYXZcIiBbY2xhc3MudmVydGljYWwtbmF2LWlzLW1vYmlsZV09XCJ1Uy5pc01vYmlsZVNpZ25hbCgpXCI+XG4gIEBpZiAodXNlVG9vbGJhcigpKSB7XG4gICAgPGRpdiAjdG9vbGJhckNvbnQgY2xhc3M9XCJ2ZXJ0aWNhbC1uYXYtdG9vbGJhclwiPlxuICAgICAgQGlmICh0b29sYmFyVGVtcGxhdGUoKSkge1xuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidG9vbGJhclRlbXBsYXRlKClcIiAvPlxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIDxtYXQtdG9vbGJhciBjb2xvcj1cInByaW1hcnlcIiBjbGFzcz1cImJnLXByaW1hcnkgZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgdy0xMDBcIj5cbiAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJzbmF2LnRvZ2dsZSgpXCI+XG4gICAgICAgICAgICAgIDxtYXQtaWNvbj5tZW51PC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgQGlmICh0b29sYmFyTG9nbygpKSB7XG4gICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICBbc3JjXT1cInRvb2xiYXJMb2dvKClcIlxuICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInRvb2xiYXJMb2dvU3R5bGUoKVwiXG4gICAgICAgICAgICAgICAgYWx0PVwidG9vbGJhciBsb2dvXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInRvb2xiYXJMb2dvXCIgLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAodG9vbGJhclRpdGxlKCkpIHtcbiAgICAgICAgICAgICAgPGgxIGNsYXNzPVwidmVydGljYWwtbmF2LWFwcC1uYW1lXCI+e3sgdG9vbGJhclRpdGxlKCkgfCBhcHBUcmFuc2xhdGUgfCBhc3luYyB9fTwvaDE+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIEBpZiAodG9vbGJhckVuZFRlbXBsYXRlKCkpIHtcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRvb2xiYXJFbmRUZW1wbGF0ZSgpXCIgLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9tYXQtdG9vbGJhcj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgfVxuXG4gIDxtYXQtc2lkZW5hdi1jb250YWluZXJcbiAgICBbaWRdPVwiaWQoKVwiXG4gICAgY2xhc3M9XCJ2ZXJ0aWNhbC1uYXYtY29udGFpbmVyXCJcbiAgICBbc3R5bGUubWFyZ2luVG9wLnB4XT1cIlxuICAgICAgdVMuaXNNb2JpbGVTaWduYWwoKSA/IGZpeGVkVG9wR2FwKCkgfHwgdG9vbGJhckNvbnRSZWYoKT8ubmF0aXZlRWxlbWVudD8ub2Zmc2V0SGVpZ2h0IDogMFxuICAgIFwiPlxuICAgIDxtYXQtc2lkZW5hdlxuICAgICAgY2xhc3M9XCJzaWRlLXdcIlxuICAgICAgW25nQ2xhc3NdPVwieyBtb2JpbGU6IHRoaXMudVMuaXNNb2JpbGVTaWduYWwoKSB9XCJcbiAgICAgICNzbmF2XG4gICAgICBbbW9kZV09XCJ1Uy5pc01vYmlsZVNpZ25hbCgpID8gJ292ZXInIDogJ3NpZGUnXCJcbiAgICAgIFtvcGVuZWRdPVwiIXVTLmlzTW9iaWxlU2lnbmFsKCkgJiYgc2hvd01lbnUoKVwiXG4gICAgICBbZml4ZWRJblZpZXdwb3J0XT1cInVTLmlzTW9iaWxlU2lnbmFsKClcIlxuICAgICAgW2ZpeGVkVG9wR2FwXT1cIiB1Uy5pc01vYmlsZVNpZ25hbCgpID8gZml4ZWRUb3BHYXAoKSB8fCB0b29sYmFyQ29udFJlZigpPy5uYXRpdmVFbGVtZW50Py5vZmZzZXRIZWlnaHQgOiAwXCJcbiAgICAgIFtoaWRkZW5dPVwiIXNob3dNZW51KClcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ2ZXJ0aWNhbC1uYXYtc2lkZS1wYWRkaW5nXCI+XG4gICAgICAgIEBpZiAoc2lkZW5hdlRlbXBsYXRlKCkpIHtcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic2lkZW5hdlRlbXBsYXRlKClcIiAvPlxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICA8bWF0LXRyZWVcbiAgICAgICAgICAgIFtkYXRhU291cmNlXT1cImRhdGFTb3VyY2UoKVwiXG4gICAgICAgICAgICBbdHJlZUNvbnRyb2xdPVwidHJlZUNvbnRyb2woKVwiXG4gICAgICAgICAgICBjbGFzcz1cInZlcnRpY2FsLW5hdi10cmVlXCI+XG4gICAgICAgICAgICA8IS0tIFRoaXMgaXMgdGhlIHRyZWUgbm9kZSB0ZW1wbGF0ZSBmb3IgbGVhZiBub2RlcyAtLT5cbiAgICAgICAgICAgIDwhLS0gVGhpcyBpcyB0aGUgdHJlZSBub2RlIHRlbXBsYXRlIGZvciBleHBhbmRhYmxlIG5vZGVzIC0tPlxuICAgICAgICAgICAgPG1hdC1uZXN0ZWQtdHJlZS1ub2RlXG4gICAgICAgICAgICAgICptYXRUcmVlTm9kZURlZj1cImxldCBub2RlOyB3aGVuOiBoYXNDaGlsZCgpXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJleHBhbmRhYmxlLW5vZGVcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1hdC10cmVlLW5vZGVcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICBtYXRUcmVlTm9kZVRvZ2dsZVxuICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInVG9nZ2xlICcgKyBub2RlLm5hbWVcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZW51LWJ0biBsZXZlbHt7IG5vZGUubGV2ZWwgfX1cIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwie3sgbm9kZS5pY29uIH19XCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIHt7IG5vZGUubGFiZWwgfCBhcHBUcmFuc2xhdGUgfCBhc3luYyB9fVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1hdXRvXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmEge3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHJlZUNvbnRyb2woKS5pc0V4cGFuZGVkKG5vZGUpID8gJ2ZhLWNoZXZyb24tZG93bicgOiAnZmEtY2hldnJvbi1yaWdodCdcbiAgICAgICAgICAgICAgICAgICAgICAgIH19IFwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPCEtLSBUaGVyZSBpcyBpbmxpbmUgcGFkZGluZyBhcHBsaWVkIHRvIHRoaXMgZGl2IHVzaW5nIHN0eWxlcy5cbiAgICAgICAgICAgIFRoaXMgcGFkZGluZyB2YWx1ZSBkZXBlbmRzIG9uIHRoZSBtYXQtaWNvbi1idXR0b24gd2lkdGguICAtLT5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBbY2xhc3MudmVydGljYWwtbmF2LXRyZWUtaW52aXNpYmxlXT1cIiF0cmVlQ29udHJvbCgpLmlzRXhwYW5kZWQobm9kZSlcIlxuICAgICAgICAgICAgICAgICAgcm9sZT1cImdyb3VwXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgbWF0VHJlZU5vZGVPdXRsZXQgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L21hdC1uZXN0ZWQtdHJlZS1ub2RlPlxuICAgICAgICAgICAgPCEtLSBUaGVyZSBpcyBpbmxpbmUgcGFkZGluZyBhcHBsaWVkIHRvIHRoaXMgbm9kZSB1c2luZyBzdHlsZXMuXG4gICAgVGhpcyBwYWRkaW5nIHZhbHVlIGRlcGVuZHMgb24gdGhlIG1hdC1pY29uLWJ1dHRvbiB3aWR0aC4gLS0+XG4gICAgICAgICAgICA8bWF0LXRyZWUtbm9kZVxuICAgICAgICAgICAgICAqbWF0VHJlZU5vZGVEZWY9XCJsZXQgbm9kZTsgd2hlbjogc2hvdWxkU2hvd0NoaWxkKClcIlxuICAgICAgICAgICAgICBtYXRUcmVlTm9kZVRvZ2dsZVxuICAgICAgICAgICAgICBjbGFzcz1cInNpbmdsZS1ub2RlIGxldmVse3sgbm9kZS5sZXZlbCB9fVwiPlxuICAgICAgICAgICAgICA8YSBbcm91dGVyTGlua109XCJub2RlLmxpbmtcIiBjbGFzcz1cImQtYmxvY2sgdy0xMDBcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInt7IG5vZGUuaWNvbiB9fVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICB7eyBub2RlLmxhYmVsIHwgYXBwVHJhbnNsYXRlIHwgYXN5bmMgfX1cbiAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgPC9tYXQtdHJlZS1ub2RlPlxuICAgICAgICAgICAgPG1hdC10cmVlLW5vZGVcbiAgICAgICAgICAgICAgKm1hdFRyZWVOb2RlRGVmPVwibGV0IG5vZGVcIlxuICAgICAgICAgICAgICBtYXRUcmVlTm9kZVRvZ2dsZVxuICAgICAgICAgICAgICBjbGFzcz1cInNpbmdsZS1ub2RlIHJlc3RyaWN0ZWQgbGV2ZWx7eyBub2RlLmxldmVsIH19XCIgLz5cbiAgICAgICAgICA8L21hdC10cmVlPlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICA8L21hdC1zaWRlbmF2PlxuXG4gICAgPG1hdC1zaWRlbmF2LWNvbnRlbnQgY2xhc3M9XCJ2ZXJ0aWNhbC1uYXYtYm9keVwiPlxuICAgICAgQGlmIChib2R5VGVtcGxhdGUoKSkge1xuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYm9keVRlbXBsYXRlKClcIiAvPlxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIDxuZy1jb250ZW50IC8+XG4gICAgICB9XG4gICAgPC9tYXQtc2lkZW5hdi1jb250ZW50PlxuICA8L21hdC1zaWRlbmF2LWNvbnRhaW5lcj5cbjwvZGl2PlxuIl19
|
|
84
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVydGljYWwtbmF2LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy92ZXJ0aWNhbC1uYXYvdmVydGljYWwtbmF2LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy92ZXJ0aWNhbC1uYXYvdmVydGljYWwtbmF2LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3RELE9BQU8sRUFDTCxTQUFTLEVBS1QsTUFBTSxFQUNOLEtBQUssRUFDTCxRQUFRLEVBQ1IsU0FBUyxFQUNULE1BQU0sR0FHUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWEsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDaEYsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVuQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNsRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQWMsZ0JBQWdCLEVBQUUsTUFBTSwyQkFB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QUNMLENBQUM7SUFDSCxDQUFDOzhHQWxEVSxvQkFBb0I7a0dBQXBCLG9CQUFvQix1L0RDbkRqQywreEpBMkhBLDBwRERwRkksZ0JBQWdCLGdKQUNoQixlQUFlLDJJQUNmLGFBQWEsbUxBQ2IsZ0JBQWdCLDBZQUNoQixhQUFhLG92QkFDYixVQUFVLG1PQUNWLGFBQWEsOEJBRWIsWUFBWSx5YUFDWixnQkFBZ0I7OzJGQUdQLG9CQUFvQjtrQkFuQmhDLFNBQVM7K0JBQ0UsY0FBYyxjQUlaLElBQUksV0FDUDt3QkFDUCxnQkFBZ0I7d0JBQ2hCLGVBQWU7d0JBQ2YsYUFBYTt3QkFDYixnQkFBZ0I7d0JBQ2hCLGFBQWE7d0JBQ2IsVUFBVTt3QkFDVixhQUFhO3dCQUNiLG9CQUFvQjt3QkFDcEIsWUFBWTt3QkFDWixnQkFBZ0I7cUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWVkaWFNYXRjaGVyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2xheW91dCc7XG5pbXBvcnQgeyBOZXN0ZWRUcmVlQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay90cmVlJztcbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIFZpZXdDaGlsZCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIFRlbXBsYXRlUmVmLFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBjb21wdXRlZCxcbiAgdmlld0NoaWxkLFxuICBzaWduYWwsXG4gIEVsZW1lbnRSZWYsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdERyYXdlciwgTWF0U2lkZW5hdk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NpZGVuYXYnO1xuaW1wb3J0IHsgTWF0VHJlZU5lc3RlZERhdGFTb3VyY2UsIE1hdFRyZWVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90cmVlJztcbmltcG9ydCB7IFJvdXRlciwgUm91dGVyTGluayB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgUFMgZnJvbSAncGVyZmVjdC1zY3JvbGxiYXInO1xuXG5pbXBvcnQgeyBTREtUcmFuc2xhdGVQaXBlIH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL3BpcGVzL3RyYW5zbGF0ZS5waXBlJztcbmltcG9ydCB7IEltYWdlTG9hZGVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL2RpcmVjdGl2ZXMvaW5kZXguZGlyZWN0aXZlJztcbmltcG9ydCB7IE1hdE1lbnVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9tZW51JztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXRUb29sYmFyLCBNYXRUb29sYmFyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbGJhcic7XG5pbXBvcnQgeyBOZ0NsYXNzLCBOZ0lmLCBBc3luY1BpcGUsIENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBVdGlsaXR5U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL1NlcnZpY2VzL3V0aWxpdHkuc2VydmljZSc7XG5pbXBvcnQgeyBJT2JqZWN0TGl0ZXJhbCB9IGZyb20gJy4uLy4uL21vZGVscy9pbmRleC5tb2RlbCc7XG5pbXBvcnQgeyBFVFNNZW51SXRlbSB9IGZyb20gJy4uLy4uL21vZGVscy9JTWVudUl0ZW0nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZXJ0aWNhbC1uYXYnLFxuICB0ZW1wbGF0ZVVybDogJy4vdmVydGljYWwtbmF2LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdmVydGljYWwtbmF2LmNvbXBvbmVudC5zY3NzJ10sXG5cbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIE1hdFRvb2xiYXJNb2R1bGUsXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgIE1hdEljb25Nb2R1bGUsXG4gICAgTWF0U2lkZW5hdk1vZHVsZSxcbiAgICBNYXRUcmVlTW9kdWxlLFxuICAgIFJvdXRlckxpbmssXG4gICAgTWF0TWVudU1vZHVsZSxcbiAgICBJbWFnZUxvYWRlckRpcmVjdGl2ZSxcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgU0RLVHJhbnNsYXRlUGlwZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgVmVydGljYWxOYXZDb21wb25lbnQge1xuICBwdWJsaWMgdVMgPSBpbmplY3QoVXRpbGl0eVNlcnZpY2UpO1xuICBwdWJsaWMgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG5cbiAgc2hvdWxkU2hvd0NoaWxkSW5wdXQgPSBpbnB1dDwoXzogbnVtYmVyLCBub2RlOiBJTWVudUl0ZW0pID0+IGJvb2xlYW4+KCk7XG4gIHNob3VsZFNob3dDaGlsZCA9IGNvbXB1dGVkPChfOiBudW1iZXIsIG5vZGU6IElNZW51SXRlbSkgPT4gYm9vbGVhbj4oXG4gICAgKCkgPT4gdGhpcy5zaG91bGRTaG93Q2hpbGRJbnB1dCgpIHx8ICgoKSA9PiB0cnVlKSxcbiAgKTtcbiAgcmVhZG9ubHkgdG9vbGJhclRpdGxlID0gaW5wdXQ8c3RyaW5nPigpO1xuICByZWFkb25seSB0b29sYmFyTG9nbyA9IGlucHV0PHN0cmluZz4oKTtcbiAgcmVhZG9ubHkgdG9vbGJhckxvZ29TdHlsZSA9IGlucHV0PElPYmplY3RMaXRlcmFsPigpO1xuICByZWFkb25seSBmaXhlZFRvcEdhcCA9IGlucHV0PG51bWJlcj4oKTtcbiAgcmVhZG9ubHkgc2lkZW5hdlRlbXBsYXRlID0gaW5wdXQ8VGVtcGxhdGVSZWY8YW55Pj4oKTtcbiAgcmVhZG9ubHkgdG9vbGJhclRlbXBsYXRlID0gaW5wdXQ8VGVtcGxhdGVSZWY8YW55Pj4oKTtcbiAgLyoqVGhpcyBvbmx5IHdvcmtzIHdoZW4gdGhlIHRvb2xiYXJUZW1wbGF0ZSBpcyBub3Qgc2V0ICovXG4gIHJlYWRvbmx5IHRvb2xiYXJFbmRUZW1wbGF0ZSA9IGlucHV0PFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ+KCk7XG4gIHJlYWRvbmx5IGJvZHlUZW1wbGF0ZSA9IGlucHV0PFRlbXBsYXRlUmVmPGFueT4+KCk7XG4gIHJlYWRvbmx5IHVzZVRvb2xiYXIgPSBpbnB1dDxib29sZWFuPih0cnVlKTtcbiAgcmVhZG9ubHkgc2hvd01lbnUgPSBpbnB1dDxib29sZWFuPigpO1xuICByZWFkb25seSBtZW51SXRlbXMgPSBpbnB1dDxJTWVudUl0ZW1bXT4oKTtcblxuICByZWFkb25seSBkYXRhU291cmNlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGRzID0gbmV3IE1hdFRyZWVOZXN0ZWREYXRhU291cmNlPElNZW51SXRlbT4oKSxcbiAgICAgIG1lbnUgPSB0aGlzLm1lbnVJdGVtcygpO1xuXG4gICAgaWYgKCFtZW51Py5sZW5ndGgpIHJldHVybiBkcztcbiAgICBtZW51LmZvckVhY2goKHgpID0+ICh4LmxldmVsID0gMCkpO1xuICAgIGRzLmRhdGEgPSBtZW51O1xuICAgIHJldHVybiBkcztcbiAgfSk7XG5cbiAgcmVhZG9ubHkgaWQgPSBzaWduYWwoJ21hdFNpZGVOYXYnICsgdGhpcy51Uy5nZW5SYW5kb21JRCk7XG4gIHJlYWRvbmx5IHRyZWVDb250cm9sID0gc2lnbmFsKG5ldyBOZXN0ZWRUcmVlQ29udHJvbDxJTWVudUl0ZW0+KChub2RlKSA9PiBub2RlLnN1YnMpKTtcblxuICByZWFkb25seSBkcmF3ZXIgPSB2aWV3Q2hpbGQ8TWF0RHJhd2VyIHwgdW5kZWZpbmVkPignc25hdicpO1xuICByZWFkb25seSB0b29sYmFyQ29udFJlZiA9IHZpZXdDaGlsZDxFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50Pj4oJ3Rvb2xiYXJDb250Jyk7XG5cbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBjb25zdCBkb2MgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yPEhUTUxEaXZFbGVtZW50PihgIyR7dGhpcy5pZCgpfSAubWF0LWRyYXdlci1pbm5lci1jb250YWluZXJgKTtcbiAgICBpZiAoZG9jKSB7XG4gICAgICBkb2Muc3R5bGUucG9zaXRpb24gPSAncmVsYXRpdmUnO1xuICAgICAgY29uc3QgcHMgPSBuZXcgUFMoZG9jLCB7XG4gICAgICAgIHdoZWVsU3BlZWQ6IDAuNSxcbiAgICAgICAgc3dpcGVFYXNpbmc6IGZhbHNlLFxuICAgICAgICB3aGVlbFByb3BhZ2F0aW9uOiB0cnVlLFxuICAgICAgICBtaW5TY3JvbGxiYXJMZW5ndGg6IDQwLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcmVhZG9ubHkgaGFzQ2hpbGQgPSBzaWduYWwoXG4gICAgKF86IG51bWJlciwgbm9kZTogSU1lbnVJdGVtKSA9PiBub2RlLmhhc1N1YiAmJiB0aGlzLnNob3VsZFNob3dDaGlsZCgpKF8sIG5vZGUpLFxuICApO1xufVxudHlwZSBJTWVudUl0ZW0gPSBQYXJ0aWFsPEVUU01lbnVJdGVtPjtcbi8vIGludGVyZmFjZSBJRVRTTWVudUl0ZW0ge1xuLy8gICBsYWJlbDogc3RyaW5nO1xuLy8gICBsaW5rOiBzdHJpbmc7XG4vLyAgIGhhc1N1Yj86IGJvb2xlYW47XG4vLyAgIGljb24/OiBzdHJpbmc7XG4vLyAgIGxldmVsPzogbnVtYmVyO1xuLy8gICBpZD86IHN0cmluZztcbi8vICAgY2hpbGRyZW4/OiBJRVRTTWVudUl0ZW1bXTtcbi8vIH1cbiIsIjxkaXYgY2xhc3M9XCJ2ZXJ0aWNhbC1uYXZcIiBbY2xhc3MudmVydGljYWwtbmF2LWlzLW1vYmlsZV09XCJ1Uy5pc01vYmlsZVNpZ25hbCgpXCI+XG4gIEBpZiAodXNlVG9vbGJhcigpKSB7XG4gICAgPGRpdiAjdG9vbGJhckNvbnQgY2xhc3M9XCJ2ZXJ0aWNhbC1uYXYtdG9vbGJhclwiPlxuICAgICAgQGlmICh0b29sYmFyVGVtcGxhdGUoKSkge1xuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidG9vbGJhclRlbXBsYXRlKClcIiAvPlxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIDxtYXQtdG9vbGJhciBjb2xvcj1cInByaW1hcnlcIiBjbGFzcz1cImJnLXByaW1hcnkgZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgdy0xMDBcIj5cbiAgICAgICAgICAgIEBpZiAoc2hvd01lbnUoKSkge1xuICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwic25hdi50b2dnbGUoKVwiPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5tZW51PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKHRvb2xiYXJMb2dvKCkpIHtcbiAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgIFtzcmNdPVwidG9vbGJhckxvZ28oKVwiXG4gICAgICAgICAgICAgICAgW25nU3R5bGVdPVwidG9vbGJhckxvZ29TdHlsZSgpXCJcbiAgICAgICAgICAgICAgICBhbHQ9XCJ0b29sYmFyIGxvZ29cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidG9vbGJhckxvZ29cIiAvPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmICh0b29sYmFyVGl0bGUoKSkge1xuICAgICAgICAgICAgICA8aDEgY2xhc3M9XCJ2ZXJ0aWNhbC1uYXYtYXBwLW5hbWVcIj57eyB0b29sYmFyVGl0bGUoKSB8IGFwcFRyYW5zbGF0ZSB8IGFzeW5jIH19PC9oMT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgQGlmICh0b29sYmFyRW5kVGVtcGxhdGUoKSkge1xuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidG9vbGJhckVuZFRlbXBsYXRlKClcIiAvPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L21hdC10b29sYmFyPlxuICAgICAgfVxuICAgIDwvZGl2PlxuICB9XG5cbiAgPG1hdC1zaWRlbmF2LWNvbnRhaW5lclxuICAgIFtpZF09XCJpZCgpXCJcbiAgICBjbGFzcz1cInZlcnRpY2FsLW5hdi1jb250YWluZXJcIlxuICAgIFtzdHlsZS5tYXJnaW5Ub3AucHhdPVwiXG4gICAgICB1Uy5pc01vYmlsZVNpZ25hbCgpID8gZml4ZWRUb3BHYXAoKSB8fCB0b29sYmFyQ29udFJlZigpPy5uYXRpdmVFbGVtZW50Py5vZmZzZXRIZWlnaHQgOiAwXG4gICAgXCI+XG4gICAgPG1hdC1zaWRlbmF2XG4gICAgICBjbGFzcz1cInNpZGUtd1wiXG4gICAgICBbbmdDbGFzc109XCJ7IG1vYmlsZTogdGhpcy51Uy5pc01vYmlsZVNpZ25hbCgpIH1cIlxuICAgICAgI3NuYXZcbiAgICAgIFttb2RlXT1cInVTLmlzTW9iaWxlU2lnbmFsKCkgPyAnb3ZlcicgOiAnc2lkZSdcIlxuICAgICAgW29wZW5lZF09XCIhdVMuaXNNb2JpbGVTaWduYWwoKSAmJiBzaG93TWVudSgpXCJcbiAgICAgIFtmaXhlZEluVmlld3BvcnRdPVwidVMuaXNNb2JpbGVTaWduYWwoKVwiXG4gICAgICBbZml4ZWRUb3BHYXBdPVwiXG4gICAgICAgIHVTLmlzTW9iaWxlU2lnbmFsKCkgPyBmaXhlZFRvcEdhcCgpIHx8IHRvb2xiYXJDb250UmVmKCk/Lm5hdGl2ZUVsZW1lbnQ/Lm9mZnNldEhlaWdodCA6IDBcbiAgICAgIFwiXG4gICAgICBbaGlkZGVuXT1cIiFzaG93TWVudSgpXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwidmVydGljYWwtbmF2LXNpZGUtcGFkZGluZ1wiPlxuICAgICAgICBAaWYgKHNpZGVuYXZUZW1wbGF0ZSgpKSB7XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNpZGVuYXZUZW1wbGF0ZSgpXCIgLz5cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgPG1hdC10cmVlXG4gICAgICAgICAgICBbZGF0YVNvdXJjZV09XCJkYXRhU291cmNlKClcIlxuICAgICAgICAgICAgW3RyZWVDb250cm9sXT1cInRyZWVDb250cm9sKClcIlxuICAgICAgICAgICAgY2xhc3M9XCJ2ZXJ0aWNhbC1uYXYtdHJlZVwiPlxuICAgICAgICAgICAgPCEtLSBUaGlzIGlzIHRoZSB0cmVlIG5vZGUgdGVtcGxhdGUgZm9yIGxlYWYgbm9kZXMgLS0+XG4gICAgICAgICAgICA8IS0tIFRoaXMgaXMgdGhlIHRyZWUgbm9kZSB0ZW1wbGF0ZSBmb3IgZXhwYW5kYWJsZSBub2RlcyAtLT5cbiAgICAgICAgICAgIDxtYXQtbmVzdGVkLXRyZWUtbm9kZVxuICAgICAgICAgICAgICAqbWF0VHJlZU5vZGVEZWY9XCJsZXQgbm9kZTsgd2hlbjogaGFzQ2hpbGQoKVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZXhwYW5kYWJsZS1ub2RlXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYXQtdHJlZS1ub2RlXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgbWF0VHJlZU5vZGVUb2dnbGVcbiAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ1RvZ2dsZSAnICsgbm9kZS5uYW1lXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWVudS1idG4gbGV2ZWx7eyBub2RlLmxldmVsIH19XCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInt7IG5vZGUuaWNvbiB9fVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICB7eyBub2RlLmxhYmVsIHwgYXBwVHJhbnNsYXRlIHwgYXN5bmMgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtYXV0b1wiPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZhIHt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRyZWVDb250cm9sKCkuaXNFeHBhbmRlZChub2RlKSA/ICdmYS1jaGV2cm9uLWRvd24nIDogJ2ZhLWNoZXZyb24tcmlnaHQnXG4gICAgICAgICAgICAgICAgICAgICAgICB9fSBcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDwhLS0gVGhlcmUgaXMgaW5saW5lIHBhZGRpbmcgYXBwbGllZCB0byB0aGlzIGRpdiB1c2luZyBzdHlsZXMuXG4gICAgICAgICAgICBUaGlzIHBhZGRpbmcgdmFsdWUgZGVwZW5kcyBvbiB0aGUgbWF0LWljb24tYnV0dG9uIHdpZHRoLiAgLS0+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgW2NsYXNzLnZlcnRpY2FsLW5hdi10cmVlLWludmlzaWJsZV09XCIhdHJlZUNvbnRyb2woKS5pc0V4cGFuZGVkKG5vZGUpXCJcbiAgICAgICAgICAgICAgICAgIHJvbGU9XCJncm91cFwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIG1hdFRyZWVOb2RlT3V0bGV0IC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9tYXQtbmVzdGVkLXRyZWUtbm9kZT5cbiAgICAgICAgICAgIDwhLS0gVGhlcmUgaXMgaW5saW5lIHBhZGRpbmcgYXBwbGllZCB0byB0aGlzIG5vZGUgdXNpbmcgc3R5bGVzLlxuICAgIFRoaXMgcGFkZGluZyB2YWx1ZSBkZXBlbmRzIG9uIHRoZSBtYXQtaWNvbi1idXR0b24gd2lkdGguIC0tPlxuICAgICAgICAgICAgPG1hdC10cmVlLW5vZGVcbiAgICAgICAgICAgICAgKm1hdFRyZWVOb2RlRGVmPVwibGV0IG5vZGU7IHdoZW46IHNob3VsZFNob3dDaGlsZCgpXCJcbiAgICAgICAgICAgICAgbWF0VHJlZU5vZGVUb2dnbGVcbiAgICAgICAgICAgICAgY2xhc3M9XCJzaW5nbGUtbm9kZSBsZXZlbHt7IG5vZGUubGV2ZWwgfX1cIj5cbiAgICAgICAgICAgICAgPGEgW3JvdXRlckxpbmtdPVwibm9kZS5saW5rXCIgY2xhc3M9XCJkLWJsb2NrIHctMTAwXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ7eyBub2RlLmljb24gfX1cIj48L3NwYW4+XG4gICAgICAgICAgICAgICAge3sgbm9kZS5sYWJlbCB8IGFwcFRyYW5zbGF0ZSB8IGFzeW5jIH19XG4gICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIDwvbWF0LXRyZWUtbm9kZT5cbiAgICAgICAgICAgIDxtYXQtdHJlZS1ub2RlXG4gICAgICAgICAgICAgICptYXRUcmVlTm9kZURlZj1cImxldCBub2RlXCJcbiAgICAgICAgICAgICAgbWF0VHJlZU5vZGVUb2dnbGVcbiAgICAgICAgICAgICAgY2xhc3M9XCJzaW5nbGUtbm9kZSByZXN0cmljdGVkIGxldmVse3sgbm9kZS5sZXZlbCB9fVwiIC8+XG4gICAgICAgICAgPC9tYXQtdHJlZT5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgPC9tYXQtc2lkZW5hdj5cblxuICAgIDxtYXQtc2lkZW5hdi1jb250ZW50IGNsYXNzPVwidmVydGljYWwtbmF2LWJvZHlcIj5cbiAgICAgIEBpZiAoYm9keVRlbXBsYXRlKCkpIHtcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImJvZHlUZW1wbGF0ZSgpXCIgLz5cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICA8bmctY29udGVudCAvPlxuICAgICAgfVxuICAgIDwvbWF0LXNpZGVuYXYtY29udGVudD5cbiAgPC9tYXQtc2lkZW5hdi1jb250YWluZXI+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -12369,9 +12369,9 @@ class FormGeneratorComponent extends BaseFormGenerator {
|
|
|
12369
12369
|
if (scheme.debug)
|
|
12370
12370
|
debugger;
|
|
12371
12371
|
this.subs[scheme.field?.toString() + '_onFormChange'] = this.formValue$
|
|
12372
|
-
.pipe(scheme.onFormChangePipeOperators())
|
|
12372
|
+
.pipe(scheme.onFormChangePipeOperators ? scheme.onFormChangePipeOperators() : tap())
|
|
12373
12373
|
.subscribe((r) => {
|
|
12374
|
-
scheme.onFormChange(
|
|
12374
|
+
scheme.onFormChange(r, r?.[scheme.field], this);
|
|
12375
12375
|
});
|
|
12376
12376
|
}
|
|
12377
12377
|
}
|
|
@@ -16210,7 +16210,7 @@ class VerticalNavComponent {
|
|
|
16210
16210
|
}
|
|
16211
16211
|
}
|
|
16212
16212
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: VerticalNavComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
16213
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: VerticalNavComponent, isStandalone: true, selector: "vertical-nav", inputs: { shouldShowChildInput: { classPropertyName: "shouldShowChildInput", publicName: "shouldShowChildInput", isSignal: true, isRequired: false, transformFunction: null }, toolbarTitle: { classPropertyName: "toolbarTitle", publicName: "toolbarTitle", isSignal: true, isRequired: false, transformFunction: null }, toolbarLogo: { classPropertyName: "toolbarLogo", publicName: "toolbarLogo", isSignal: true, isRequired: false, transformFunction: null }, toolbarLogoStyle: { classPropertyName: "toolbarLogoStyle", publicName: "toolbarLogoStyle", isSignal: true, isRequired: false, transformFunction: null }, fixedTopGap: { classPropertyName: "fixedTopGap", publicName: "fixedTopGap", isSignal: true, isRequired: false, transformFunction: null }, sidenavTemplate: { classPropertyName: "sidenavTemplate", publicName: "sidenavTemplate", isSignal: true, isRequired: false, transformFunction: null }, toolbarTemplate: { classPropertyName: "toolbarTemplate", publicName: "toolbarTemplate", isSignal: true, isRequired: false, transformFunction: null }, toolbarEndTemplate: { classPropertyName: "toolbarEndTemplate", publicName: "toolbarEndTemplate", isSignal: true, isRequired: false, transformFunction: null }, bodyTemplate: { classPropertyName: "bodyTemplate", publicName: "bodyTemplate", isSignal: true, isRequired: false, transformFunction: null }, useToolbar: { classPropertyName: "useToolbar", publicName: "useToolbar", isSignal: true, isRequired: false, transformFunction: null }, showMenu: { classPropertyName: "showMenu", publicName: "showMenu", isSignal: true, isRequired: false, transformFunction: null }, menuItems: { classPropertyName: "menuItems", publicName: "menuItems", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "drawer", first: true, predicate: ["snav"], descendants: true, isSignal: true }, { propertyName: "toolbarContRef", first: true, predicate: ["toolbarCont"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"vertical-nav\" [class.vertical-nav-is-mobile]=\"uS.isMobileSignal()\">\n @if (useToolbar()) {\n <div #toolbarCont class=\"vertical-nav-toolbar\">\n @if (toolbarTemplate()) {\n <ng-container *ngTemplateOutlet=\"toolbarTemplate()\" />\n } @else {\n <mat-toolbar color=\"primary\" class=\"bg-primary d-flex justify-content-between\">\n <div class=\"d-flex align-items-center w-100\">\n <button mat-icon-button (click)=\"snav.toggle()\">\n <mat-icon>menu</mat-icon>\n </button>\n @if (toolbarLogo()) {\n <img\n [src]=\"toolbarLogo()\"\n [ngStyle]=\"toolbarLogoStyle()\"\n alt=\"toolbar logo\"\n class=\"toolbarLogo\" />\n }\n @if (toolbarTitle()) {\n <h1 class=\"vertical-nav-app-name\">{{ toolbarTitle() | appTranslate | async }}</h1>\n }\n </div>\n <div>\n @if (toolbarEndTemplate()) {\n <ng-container *ngTemplateOutlet=\"toolbarEndTemplate()\" />\n }\n </div>\n </mat-toolbar>\n }\n </div>\n }\n\n <mat-sidenav-container\n [id]=\"id()\"\n class=\"vertical-nav-container\"\n [style.marginTop.px]=\"\n uS.isMobileSignal() ? fixedTopGap() || toolbarContRef()?.nativeElement?.offsetHeight : 0\n \">\n <mat-sidenav\n class=\"side-w\"\n [ngClass]=\"{ mobile: this.uS.isMobileSignal() }\"\n #snav\n [mode]=\"uS.isMobileSignal() ? 'over' : 'side'\"\n [opened]=\"!uS.isMobileSignal() && showMenu()\"\n [fixedInViewport]=\"uS.isMobileSignal()\"\n [fixedTopGap]=\" uS.isMobileSignal() ? fixedTopGap() || toolbarContRef()?.nativeElement?.offsetHeight : 0\"\n [hidden]=\"!showMenu()\">\n <div class=\"vertical-nav-side-padding\">\n @if (sidenavTemplate()) {\n <ng-container *ngTemplateOutlet=\"sidenavTemplate()\" />\n } @else {\n <mat-tree\n [dataSource]=\"dataSource()\"\n [treeControl]=\"treeControl()\"\n class=\"vertical-nav-tree\">\n <!-- This is the tree node template for leaf nodes -->\n <!-- This is the tree node template for expandable nodes -->\n <mat-nested-tree-node\n *matTreeNodeDef=\"let node; when: hasChild()\"\n class=\"expandable-node\">\n <div class=\"mat-tree-node\">\n <button\n matTreeNodeToggle\n [attr.aria-label]=\"'Toggle ' + node.name\"\n class=\"menu-btn level{{ node.level }}\">\n <div class=\"row\">\n <div class=\"col\">\n <span class=\"{{ node.icon }}\"></span>\n {{ node.label | appTranslate | async }}\n </div>\n <div class=\"col-auto\">\n <span\n class=\"fa {{\n treeControl().isExpanded(node) ? 'fa-chevron-down' : 'fa-chevron-right'\n }} \"></span>\n </div>\n </div>\n </button>\n </div>\n <div>\n <!-- There is inline padding applied to this div using styles.\n This padding value depends on the mat-icon-button width. -->\n <div\n [class.vertical-nav-tree-invisible]=\"!treeControl().isExpanded(node)\"\n role=\"group\"\n class=\"group\">\n <ng-container matTreeNodeOutlet />\n </div>\n </div>\n </mat-nested-tree-node>\n <!-- There is inline padding applied to this node using styles.\n This padding value depends on the mat-icon-button width. -->\n <mat-tree-node\n *matTreeNodeDef=\"let node; when: shouldShowChild()\"\n matTreeNodeToggle\n class=\"single-node level{{ node.level }}\">\n <a [routerLink]=\"node.link\" class=\"d-block w-100\">\n <span class=\"{{ node.icon }}\"></span>\n {{ node.label | appTranslate | async }}\n </a>\n </mat-tree-node>\n <mat-tree-node\n *matTreeNodeDef=\"let node\"\n matTreeNodeToggle\n class=\"single-node restricted level{{ node.level }}\" />\n </mat-tree>\n }\n </div>\n </mat-sidenav>\n\n <mat-sidenav-content class=\"vertical-nav-body\">\n @if (bodyTemplate()) {\n <ng-container *ngTemplateOutlet=\"bodyTemplate()\" />\n } @else {\n <ng-content />\n }\n </mat-sidenav-content>\n </mat-sidenav-container>\n</div>\n", styles: [".menu{background-color:#fff}.vertical-nav{display:flex;flex-direction:column;height:100%}.vertical-nav.fullScreen{position:absolute;inset:0}.toolbarLogo{--toolbarLogoDimen: 50px;height:var(--toolbarLogoDimen)}h1.vertical-nav-app-name{margin-left:8px}.vertical-nav-container{flex:1}.vertical-nav-is-mobile .vertical-nav-toolbar{position:fixed;z-index:2;width:100%}.vertical-nav-is-mobile .vertical-nav-container{flex:1 0 auto}.mat-drawer-container{background-color:unset}.mat-drawer-content{background-color:#e9e9e9}.expandable-node button{width:100%;border-radius:0;text-align:left}.single-node button{width:24px}.level0{border-bottom:1px solid rgba(141,141,141,.231372549)}.side-w{width:auto;margin:10px;border-radius:16px}.side-w.mobile{width:90%;margin:0;border-radius:0}.vertical-nav-tree-invisible{display:none}.vertical-nav-tree ul,.vertical-nav-tree li{margin-top:0;margin-bottom:0;list-style-type:none}.vertical-nav-tree div[role=group]{border-radius:var(--borderRadius);background-color:#ffffff57}.vertical-nav-tree div[role=group]>.mat-tree-node{padding:10px 20px}a{color:inherit}.restricted{display:none}mat-sidenav.mat-drawer.mat-drawer-opened.mat-drawer-side.mat-sidenav{min-width:200px;overflow-x:auto;white-space:nowrap}.menu-btn{background-color:#ffffff57;border-radius:var(--borderRadius)!important;padding:10px 20px;color:#2b2b2b;border:none}.expandable-node .group{border:1px solid rgba(0,0,0,.11)!important}.profile{position:sticky;bottom:0;right:0;left:0;background-color:var(--primary);background-image:linear-gradient(45deg,#ffffffa8,#ffffffa8);padding:10px}.vertical-nav-side-padding{padding:var(--space-8)}\n"], dependencies: [{ kind: "ngmodule", type: MatToolbarModule }, { kind: "component", type: i1$6.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2$3.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i9$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatSidenavModule }, { kind: "component", type: i4.MatSidenav, selector: "mat-sidenav", inputs: ["fixedInViewport", "fixedTopGap", "fixedBottomGap"], exportAs: ["matSidenav"] }, { kind: "component", type: i4.MatSidenavContainer, selector: "mat-sidenav-container", exportAs: ["matSidenavContainer"] }, { kind: "component", type: i4.MatSidenavContent, selector: "mat-sidenav-content" }, { kind: "ngmodule", type: MatTreeModule }, { kind: "directive", type: i5$1.MatNestedTreeNode, selector: "mat-nested-tree-node", inputs: ["matNestedTreeNode", "disabled", "tabIndex"], exportAs: ["matNestedTreeNode"] }, { kind: "directive", type: i5$1.MatTreeNodeDef, selector: "[matTreeNodeDef]", inputs: ["matTreeNodeDefWhen", "matTreeNode"] }, { kind: "directive", type: i5$1.MatTreeNodeToggle, selector: "[matTreeNodeToggle]", inputs: ["matTreeNodeToggleRecursive"] }, { kind: "component", type: i5$1.MatTree, selector: "mat-tree", exportAs: ["matTree"] }, { kind: "directive", type: i5$1.MatTreeNode, selector: "mat-tree-node", inputs: ["disabled", "tabIndex"], exportAs: ["matTreeNode"] }, { kind: "directive", type: i5$1.MatTreeNodeOutlet, selector: "[matTreeNodeOutlet]" }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: SDKTranslatePipe, name: "appTranslate" }] }); }
|
|
16213
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: VerticalNavComponent, isStandalone: true, selector: "vertical-nav", inputs: { shouldShowChildInput: { classPropertyName: "shouldShowChildInput", publicName: "shouldShowChildInput", isSignal: true, isRequired: false, transformFunction: null }, toolbarTitle: { classPropertyName: "toolbarTitle", publicName: "toolbarTitle", isSignal: true, isRequired: false, transformFunction: null }, toolbarLogo: { classPropertyName: "toolbarLogo", publicName: "toolbarLogo", isSignal: true, isRequired: false, transformFunction: null }, toolbarLogoStyle: { classPropertyName: "toolbarLogoStyle", publicName: "toolbarLogoStyle", isSignal: true, isRequired: false, transformFunction: null }, fixedTopGap: { classPropertyName: "fixedTopGap", publicName: "fixedTopGap", isSignal: true, isRequired: false, transformFunction: null }, sidenavTemplate: { classPropertyName: "sidenavTemplate", publicName: "sidenavTemplate", isSignal: true, isRequired: false, transformFunction: null }, toolbarTemplate: { classPropertyName: "toolbarTemplate", publicName: "toolbarTemplate", isSignal: true, isRequired: false, transformFunction: null }, toolbarEndTemplate: { classPropertyName: "toolbarEndTemplate", publicName: "toolbarEndTemplate", isSignal: true, isRequired: false, transformFunction: null }, bodyTemplate: { classPropertyName: "bodyTemplate", publicName: "bodyTemplate", isSignal: true, isRequired: false, transformFunction: null }, useToolbar: { classPropertyName: "useToolbar", publicName: "useToolbar", isSignal: true, isRequired: false, transformFunction: null }, showMenu: { classPropertyName: "showMenu", publicName: "showMenu", isSignal: true, isRequired: false, transformFunction: null }, menuItems: { classPropertyName: "menuItems", publicName: "menuItems", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "drawer", first: true, predicate: ["snav"], descendants: true, isSignal: true }, { propertyName: "toolbarContRef", first: true, predicate: ["toolbarCont"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"vertical-nav\" [class.vertical-nav-is-mobile]=\"uS.isMobileSignal()\">\n @if (useToolbar()) {\n <div #toolbarCont class=\"vertical-nav-toolbar\">\n @if (toolbarTemplate()) {\n <ng-container *ngTemplateOutlet=\"toolbarTemplate()\" />\n } @else {\n <mat-toolbar color=\"primary\" class=\"bg-primary d-flex justify-content-between\">\n <div class=\"d-flex align-items-center w-100\">\n @if (showMenu()) {\n <button mat-icon-button (click)=\"snav.toggle()\">\n <mat-icon>menu</mat-icon>\n </button>\n }\n @if (toolbarLogo()) {\n <img\n [src]=\"toolbarLogo()\"\n [ngStyle]=\"toolbarLogoStyle()\"\n alt=\"toolbar logo\"\n class=\"toolbarLogo\" />\n }\n @if (toolbarTitle()) {\n <h1 class=\"vertical-nav-app-name\">{{ toolbarTitle() | appTranslate | async }}</h1>\n }\n </div>\n <div>\n @if (toolbarEndTemplate()) {\n <ng-container *ngTemplateOutlet=\"toolbarEndTemplate()\" />\n }\n </div>\n </mat-toolbar>\n }\n </div>\n }\n\n <mat-sidenav-container\n [id]=\"id()\"\n class=\"vertical-nav-container\"\n [style.marginTop.px]=\"\n uS.isMobileSignal() ? fixedTopGap() || toolbarContRef()?.nativeElement?.offsetHeight : 0\n \">\n <mat-sidenav\n class=\"side-w\"\n [ngClass]=\"{ mobile: this.uS.isMobileSignal() }\"\n #snav\n [mode]=\"uS.isMobileSignal() ? 'over' : 'side'\"\n [opened]=\"!uS.isMobileSignal() && showMenu()\"\n [fixedInViewport]=\"uS.isMobileSignal()\"\n [fixedTopGap]=\"\n uS.isMobileSignal() ? fixedTopGap() || toolbarContRef()?.nativeElement?.offsetHeight : 0\n \"\n [hidden]=\"!showMenu()\">\n <div class=\"vertical-nav-side-padding\">\n @if (sidenavTemplate()) {\n <ng-container *ngTemplateOutlet=\"sidenavTemplate()\" />\n } @else {\n <mat-tree\n [dataSource]=\"dataSource()\"\n [treeControl]=\"treeControl()\"\n class=\"vertical-nav-tree\">\n <!-- This is the tree node template for leaf nodes -->\n <!-- This is the tree node template for expandable nodes -->\n <mat-nested-tree-node\n *matTreeNodeDef=\"let node; when: hasChild()\"\n class=\"expandable-node\">\n <div class=\"mat-tree-node\">\n <button\n matTreeNodeToggle\n [attr.aria-label]=\"'Toggle ' + node.name\"\n class=\"menu-btn level{{ node.level }}\">\n <div class=\"row\">\n <div class=\"col\">\n <span class=\"{{ node.icon }}\"></span>\n {{ node.label | appTranslate | async }}\n </div>\n <div class=\"col-auto\">\n <span\n class=\"fa {{\n treeControl().isExpanded(node) ? 'fa-chevron-down' : 'fa-chevron-right'\n }} \"></span>\n </div>\n </div>\n </button>\n </div>\n <div>\n <!-- There is inline padding applied to this div using styles.\n This padding value depends on the mat-icon-button width. -->\n <div\n [class.vertical-nav-tree-invisible]=\"!treeControl().isExpanded(node)\"\n role=\"group\"\n class=\"group\">\n <ng-container matTreeNodeOutlet />\n </div>\n </div>\n </mat-nested-tree-node>\n <!-- There is inline padding applied to this node using styles.\n This padding value depends on the mat-icon-button width. -->\n <mat-tree-node\n *matTreeNodeDef=\"let node; when: shouldShowChild()\"\n matTreeNodeToggle\n class=\"single-node level{{ node.level }}\">\n <a [routerLink]=\"node.link\" class=\"d-block w-100\">\n <span class=\"{{ node.icon }}\"></span>\n {{ node.label | appTranslate | async }}\n </a>\n </mat-tree-node>\n <mat-tree-node\n *matTreeNodeDef=\"let node\"\n matTreeNodeToggle\n class=\"single-node restricted level{{ node.level }}\" />\n </mat-tree>\n }\n </div>\n </mat-sidenav>\n\n <mat-sidenav-content class=\"vertical-nav-body\">\n @if (bodyTemplate()) {\n <ng-container *ngTemplateOutlet=\"bodyTemplate()\" />\n } @else {\n <ng-content />\n }\n </mat-sidenav-content>\n </mat-sidenav-container>\n</div>\n", styles: [".menu{background-color:#fff}.vertical-nav{display:flex;flex-direction:column;height:100%}.vertical-nav.fullScreen{position:absolute;inset:0}.toolbarLogo{--toolbarLogoDimen: 50px;height:var(--toolbarLogoDimen)}h1.vertical-nav-app-name{margin-left:8px}.vertical-nav-container{flex:1}.vertical-nav-is-mobile .vertical-nav-toolbar{position:fixed;z-index:2;width:100%}.vertical-nav-is-mobile .vertical-nav-container{flex:1 0 auto}.mat-drawer-container{background-color:unset}.mat-drawer-content{background-color:#e9e9e9}.expandable-node button{width:100%;border-radius:0;text-align:left}.single-node button{width:24px}.level0{border-bottom:1px solid rgba(141,141,141,.231372549)}.side-w{width:auto;margin:10px;border-radius:16px}.side-w.mobile{width:90%;margin:0;border-radius:0}.vertical-nav-tree-invisible{display:none}.vertical-nav-tree ul,.vertical-nav-tree li{margin-top:0;margin-bottom:0;list-style-type:none}.vertical-nav-tree div[role=group]{border-radius:var(--borderRadius);background-color:#ffffff57}.vertical-nav-tree div[role=group]>.mat-tree-node{padding:10px 20px}a{color:inherit}.restricted{display:none}mat-sidenav.mat-drawer.mat-drawer-opened.mat-drawer-side.mat-sidenav{min-width:200px;overflow-x:auto;white-space:nowrap}.menu-btn{background-color:#ffffff57;border-radius:var(--borderRadius)!important;padding:10px 20px;color:#2b2b2b;border:none}.expandable-node .group{border:1px solid rgba(0,0,0,.11)!important}.profile{position:sticky;bottom:0;right:0;left:0;background-color:var(--primary);background-image:linear-gradient(45deg,#ffffffa8,#ffffffa8);padding:10px}.vertical-nav-side-padding{padding:var(--space-8)}\n"], dependencies: [{ kind: "ngmodule", type: MatToolbarModule }, { kind: "component", type: i1$6.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2$3.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i9$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatSidenavModule }, { kind: "component", type: i4.MatSidenav, selector: "mat-sidenav", inputs: ["fixedInViewport", "fixedTopGap", "fixedBottomGap"], exportAs: ["matSidenav"] }, { kind: "component", type: i4.MatSidenavContainer, selector: "mat-sidenav-container", exportAs: ["matSidenavContainer"] }, { kind: "component", type: i4.MatSidenavContent, selector: "mat-sidenav-content" }, { kind: "ngmodule", type: MatTreeModule }, { kind: "directive", type: i5$1.MatNestedTreeNode, selector: "mat-nested-tree-node", inputs: ["matNestedTreeNode", "disabled", "tabIndex"], exportAs: ["matNestedTreeNode"] }, { kind: "directive", type: i5$1.MatTreeNodeDef, selector: "[matTreeNodeDef]", inputs: ["matTreeNodeDefWhen", "matTreeNode"] }, { kind: "directive", type: i5$1.MatTreeNodeToggle, selector: "[matTreeNodeToggle]", inputs: ["matTreeNodeToggleRecursive"] }, { kind: "component", type: i5$1.MatTree, selector: "mat-tree", exportAs: ["matTree"] }, { kind: "directive", type: i5$1.MatTreeNode, selector: "mat-tree-node", inputs: ["disabled", "tabIndex"], exportAs: ["matTreeNode"] }, { kind: "directive", type: i5$1.MatTreeNodeOutlet, selector: "[matTreeNodeOutlet]" }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: SDKTranslatePipe, name: "appTranslate" }] }); }
|
|
16214
16214
|
}
|
|
16215
16215
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: VerticalNavComponent, decorators: [{
|
|
16216
16216
|
type: Component,
|
|
@@ -16225,7 +16225,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
|
|
|
16225
16225
|
ImageLoaderDirective,
|
|
16226
16226
|
CommonModule,
|
|
16227
16227
|
SDKTranslatePipe,
|
|
16228
|
-
], template: "<div class=\"vertical-nav\" [class.vertical-nav-is-mobile]=\"uS.isMobileSignal()\">\n @if (useToolbar()) {\n <div #toolbarCont class=\"vertical-nav-toolbar\">\n @if (toolbarTemplate()) {\n <ng-container *ngTemplateOutlet=\"toolbarTemplate()\" />\n } @else {\n <mat-toolbar color=\"primary\" class=\"bg-primary d-flex justify-content-between\">\n <div class=\"d-flex align-items-center w-100\">\n <button mat-icon-button (click)=\"snav.toggle()\">\n
|
|
16228
|
+
], template: "<div class=\"vertical-nav\" [class.vertical-nav-is-mobile]=\"uS.isMobileSignal()\">\n @if (useToolbar()) {\n <div #toolbarCont class=\"vertical-nav-toolbar\">\n @if (toolbarTemplate()) {\n <ng-container *ngTemplateOutlet=\"toolbarTemplate()\" />\n } @else {\n <mat-toolbar color=\"primary\" class=\"bg-primary d-flex justify-content-between\">\n <div class=\"d-flex align-items-center w-100\">\n @if (showMenu()) {\n <button mat-icon-button (click)=\"snav.toggle()\">\n <mat-icon>menu</mat-icon>\n </button>\n }\n @if (toolbarLogo()) {\n <img\n [src]=\"toolbarLogo()\"\n [ngStyle]=\"toolbarLogoStyle()\"\n alt=\"toolbar logo\"\n class=\"toolbarLogo\" />\n }\n @if (toolbarTitle()) {\n <h1 class=\"vertical-nav-app-name\">{{ toolbarTitle() | appTranslate | async }}</h1>\n }\n </div>\n <div>\n @if (toolbarEndTemplate()) {\n <ng-container *ngTemplateOutlet=\"toolbarEndTemplate()\" />\n }\n </div>\n </mat-toolbar>\n }\n </div>\n }\n\n <mat-sidenav-container\n [id]=\"id()\"\n class=\"vertical-nav-container\"\n [style.marginTop.px]=\"\n uS.isMobileSignal() ? fixedTopGap() || toolbarContRef()?.nativeElement?.offsetHeight : 0\n \">\n <mat-sidenav\n class=\"side-w\"\n [ngClass]=\"{ mobile: this.uS.isMobileSignal() }\"\n #snav\n [mode]=\"uS.isMobileSignal() ? 'over' : 'side'\"\n [opened]=\"!uS.isMobileSignal() && showMenu()\"\n [fixedInViewport]=\"uS.isMobileSignal()\"\n [fixedTopGap]=\"\n uS.isMobileSignal() ? fixedTopGap() || toolbarContRef()?.nativeElement?.offsetHeight : 0\n \"\n [hidden]=\"!showMenu()\">\n <div class=\"vertical-nav-side-padding\">\n @if (sidenavTemplate()) {\n <ng-container *ngTemplateOutlet=\"sidenavTemplate()\" />\n } @else {\n <mat-tree\n [dataSource]=\"dataSource()\"\n [treeControl]=\"treeControl()\"\n class=\"vertical-nav-tree\">\n <!-- This is the tree node template for leaf nodes -->\n <!-- This is the tree node template for expandable nodes -->\n <mat-nested-tree-node\n *matTreeNodeDef=\"let node; when: hasChild()\"\n class=\"expandable-node\">\n <div class=\"mat-tree-node\">\n <button\n matTreeNodeToggle\n [attr.aria-label]=\"'Toggle ' + node.name\"\n class=\"menu-btn level{{ node.level }}\">\n <div class=\"row\">\n <div class=\"col\">\n <span class=\"{{ node.icon }}\"></span>\n {{ node.label | appTranslate | async }}\n </div>\n <div class=\"col-auto\">\n <span\n class=\"fa {{\n treeControl().isExpanded(node) ? 'fa-chevron-down' : 'fa-chevron-right'\n }} \"></span>\n </div>\n </div>\n </button>\n </div>\n <div>\n <!-- There is inline padding applied to this div using styles.\n This padding value depends on the mat-icon-button width. -->\n <div\n [class.vertical-nav-tree-invisible]=\"!treeControl().isExpanded(node)\"\n role=\"group\"\n class=\"group\">\n <ng-container matTreeNodeOutlet />\n </div>\n </div>\n </mat-nested-tree-node>\n <!-- There is inline padding applied to this node using styles.\n This padding value depends on the mat-icon-button width. -->\n <mat-tree-node\n *matTreeNodeDef=\"let node; when: shouldShowChild()\"\n matTreeNodeToggle\n class=\"single-node level{{ node.level }}\">\n <a [routerLink]=\"node.link\" class=\"d-block w-100\">\n <span class=\"{{ node.icon }}\"></span>\n {{ node.label | appTranslate | async }}\n </a>\n </mat-tree-node>\n <mat-tree-node\n *matTreeNodeDef=\"let node\"\n matTreeNodeToggle\n class=\"single-node restricted level{{ node.level }}\" />\n </mat-tree>\n }\n </div>\n </mat-sidenav>\n\n <mat-sidenav-content class=\"vertical-nav-body\">\n @if (bodyTemplate()) {\n <ng-container *ngTemplateOutlet=\"bodyTemplate()\" />\n } @else {\n <ng-content />\n }\n </mat-sidenav-content>\n </mat-sidenav-container>\n</div>\n", styles: [".menu{background-color:#fff}.vertical-nav{display:flex;flex-direction:column;height:100%}.vertical-nav.fullScreen{position:absolute;inset:0}.toolbarLogo{--toolbarLogoDimen: 50px;height:var(--toolbarLogoDimen)}h1.vertical-nav-app-name{margin-left:8px}.vertical-nav-container{flex:1}.vertical-nav-is-mobile .vertical-nav-toolbar{position:fixed;z-index:2;width:100%}.vertical-nav-is-mobile .vertical-nav-container{flex:1 0 auto}.mat-drawer-container{background-color:unset}.mat-drawer-content{background-color:#e9e9e9}.expandable-node button{width:100%;border-radius:0;text-align:left}.single-node button{width:24px}.level0{border-bottom:1px solid rgba(141,141,141,.231372549)}.side-w{width:auto;margin:10px;border-radius:16px}.side-w.mobile{width:90%;margin:0;border-radius:0}.vertical-nav-tree-invisible{display:none}.vertical-nav-tree ul,.vertical-nav-tree li{margin-top:0;margin-bottom:0;list-style-type:none}.vertical-nav-tree div[role=group]{border-radius:var(--borderRadius);background-color:#ffffff57}.vertical-nav-tree div[role=group]>.mat-tree-node{padding:10px 20px}a{color:inherit}.restricted{display:none}mat-sidenav.mat-drawer.mat-drawer-opened.mat-drawer-side.mat-sidenav{min-width:200px;overflow-x:auto;white-space:nowrap}.menu-btn{background-color:#ffffff57;border-radius:var(--borderRadius)!important;padding:10px 20px;color:#2b2b2b;border:none}.expandable-node .group{border:1px solid rgba(0,0,0,.11)!important}.profile{position:sticky;bottom:0;right:0;left:0;background-color:var(--primary);background-image:linear-gradient(45deg,#ffffffa8,#ffffffa8);padding:10px}.vertical-nav-side-padding{padding:var(--space-8)}\n"] }]
|
|
16229
16229
|
}], ctorParameters: () => [] });
|
|
16230
16230
|
|
|
16231
16231
|
class TextAreaModalComponent {
|