@hmcts/ccd-case-ui-toolkit 7.0.0-NodeAndNgUpgrades.1 → 7.0.0-NodeAndNgUpgrades.1.1.1
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/esm2020/lib/shared/commons/case-edit-data/case-edit-data.service.mjs +1 -1
- package/esm2020/lib/shared/components/case-editor/case-edit/case-edit.component.mjs +8 -8
- package/esm2020/lib/shared/components/case-editor/case-edit-confirm/case-edit-confirm.component.mjs +1 -1
- package/esm2020/lib/shared/components/case-editor/case-edit-form/case-edit-form.component.mjs +2 -2
- package/esm2020/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.mjs +1 -1
- package/esm2020/lib/shared/components/case-editor/case-edit-submit/case-edit-submit.component.mjs +1 -1
- package/esm2020/lib/shared/components/case-editor/case-editor.module.mjs +13 -13
- package/esm2020/lib/shared/components/case-editor/services/case.notifier.mjs +1 -8
- package/esm2020/lib/shared/components/case-editor/services/page-validation.service.mjs +1 -1
- package/esm2020/lib/shared/components/case-viewer/case-challenged-access-request/case-challenged-access-request.component.mjs +1 -1
- package/esm2020/lib/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.mjs +5 -5
- package/esm2020/lib/shared/components/case-viewer/case-review-specific-access-request/case-review-specific-access-request.component.mjs +1 -1
- package/esm2020/lib/shared/components/case-viewer/case-specific-access-request/case-specific-access-request.component.mjs +1 -1
- package/esm2020/lib/shared/components/create-case-filters/create-case-filters.component.mjs +15 -10
- package/esm2020/lib/shared/components/event-trigger/event-trigger.component.mjs +1 -1
- package/esm2020/lib/shared/components/palette/address/write-address-field.component.mjs +3 -3
- package/esm2020/lib/shared/components/palette/base-field/abstract-field-read.component.mjs +1 -1
- package/esm2020/lib/shared/components/palette/base-field/abstract-form-field.component.mjs +2 -2
- package/esm2020/lib/shared/components/palette/base-field/field-read.component.mjs +4 -4
- package/esm2020/lib/shared/components/palette/base-field/field-write.component.mjs +2 -2
- package/esm2020/lib/shared/components/palette/case-file-view/components/case-file-view-folder/case-file-view-folder.component.mjs +3 -3
- package/esm2020/lib/shared/components/palette/case-flag/components/add-comments/add-comments.component.mjs +2 -2
- package/esm2020/lib/shared/components/palette/case-flag/components/manage-case-flags/manage-case-flags.component.mjs +2 -2
- package/esm2020/lib/shared/components/palette/case-flag/components/search-language-interpreter/search-language-interpreter.component.mjs +2 -2
- package/esm2020/lib/shared/components/palette/case-flag/components/select-flag-location/select-flag-location.component.mjs +2 -2
- package/esm2020/lib/shared/components/palette/case-flag/components/select-flag-type/select-flag-type.component.mjs +2 -2
- package/esm2020/lib/shared/components/palette/case-flag/components/update-flag/update-flag.component.mjs +2 -2
- package/esm2020/lib/shared/components/palette/case-flag/domain/case-flag.model.mjs +1 -1
- package/esm2020/lib/shared/components/palette/case-flag/read-case-flag-field.component.mjs +3 -3
- package/esm2020/lib/shared/components/palette/case-flag/write-case-flag-field.component.mjs +22 -22
- package/esm2020/lib/shared/components/palette/case-link/write-case-link-field.component.mjs +4 -4
- package/esm2020/lib/shared/components/palette/collection/write-collection-field.component.mjs +8 -8
- package/esm2020/lib/shared/components/palette/complex/write-complex-field.component.mjs +3 -3
- package/esm2020/lib/shared/components/palette/document/write-document-field.component.mjs +42 -23
- package/esm2020/lib/shared/components/palette/judicial-user/write-judicial-user-field.component.mjs +16 -2
- package/esm2020/lib/shared/components/palette/linked-cases/components/link-cases/link-cases.component.mjs +1 -1
- package/esm2020/lib/shared/components/palette/linked-cases/components/unlink-cases/unlink-cases.component.mjs +1 -1
- package/esm2020/lib/shared/components/palette/linked-cases/write-linked-cases-field.component.mjs +3 -3
- package/esm2020/lib/shared/components/palette/order-summary/write-order-summary-field.component.mjs +5 -5
- package/esm2020/lib/shared/components/palette/organisation/write-organisation-field.component.mjs +3 -3
- package/esm2020/lib/shared/components/palette/palette.module.mjs +5 -6
- package/esm2020/lib/shared/components/search-filters/search-filters.component.mjs +4 -4
- package/esm2020/lib/shared/components/search-result/search-result.component.mjs +2 -2
- package/esm2020/lib/shared/components/workbasket-filters/workbasket-filters.component.mjs +15 -4
- package/esm2020/lib/shared/directives/conditional-show/conditional-show-form.directive.mjs +4 -4
- package/esm2020/lib/shared/directives/substitutor/label-substitutor.directive.mjs +3 -3
- package/esm2020/lib/shared/domain/case-edit/case-edit.model.mjs +1 -1
- package/esm2020/lib/shared/domain/definition/jurisdiction.model.mjs +1 -1
- package/esm2020/lib/shared/pipes/complex/ccd-page-fields.pipe.mjs +1 -1
- package/esm2020/lib/shared/pipes/complex/ccd-read-fields-filter.pipe.mjs +1 -1
- package/esm2020/lib/shared/services/fields/fields.purger.mjs +9 -9
- package/esm2020/lib/shared/services/fields/fields.utils.mjs +6 -6
- package/esm2020/lib/shared/services/form/form-error.service.mjs +1 -1
- package/esm2020/lib/shared/services/jurisdiction/jurisdiction.service.mjs +5 -2
- package/fesm2015/hmcts-ccd-case-ui-toolkit.mjs +156 -114
- package/fesm2015/hmcts-ccd-case-ui-toolkit.mjs.map +1 -1
- package/fesm2020/hmcts-ccd-case-ui-toolkit.mjs +154 -114
- package/fesm2020/hmcts-ccd-case-ui-toolkit.mjs.map +1 -1
- package/lib/shared/commons/case-edit-data/case-edit-data.service.d.ts +3 -3
- package/lib/shared/commons/case-edit-data/case-edit-data.service.d.ts.map +1 -1
- package/lib/shared/components/case-editor/case-edit/case-edit.component.d.ts +5 -5
- package/lib/shared/components/case-editor/case-edit/case-edit.component.d.ts.map +1 -1
- package/lib/shared/components/case-editor/case-edit-confirm/case-edit-confirm.component.d.ts +2 -2
- package/lib/shared/components/case-editor/case-edit-confirm/case-edit-confirm.component.d.ts.map +1 -1
- package/lib/shared/components/case-editor/case-edit-form/case-edit-form.component.d.ts +2 -2
- package/lib/shared/components/case-editor/case-edit-form/case-edit-form.component.d.ts.map +1 -1
- package/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.d.ts +3 -3
- package/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.d.ts.map +1 -1
- package/lib/shared/components/case-editor/case-edit-submit/case-edit-submit.component.d.ts +2 -2
- package/lib/shared/components/case-editor/case-edit-submit/case-edit-submit.component.d.ts.map +1 -1
- package/lib/shared/components/case-editor/case-editor.module.d.ts +8 -8
- package/lib/shared/components/case-editor/services/case.notifier.d.ts.map +1 -1
- package/lib/shared/components/case-editor/services/page-validation.service.d.ts +3 -3
- package/lib/shared/components/case-editor/services/page-validation.service.d.ts.map +1 -1
- package/lib/shared/components/case-viewer/case-challenged-access-request/case-challenged-access-request.component.d.ts +2 -2
- package/lib/shared/components/case-viewer/case-challenged-access-request/case-challenged-access-request.component.d.ts.map +1 -1
- package/lib/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.d.ts +4 -4
- package/lib/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.d.ts.map +1 -1
- package/lib/shared/components/case-viewer/case-review-specific-access-request/case-review-specific-access-request.component.d.ts +2 -2
- package/lib/shared/components/case-viewer/case-review-specific-access-request/case-review-specific-access-request.component.d.ts.map +1 -1
- package/lib/shared/components/case-viewer/case-specific-access-request/case-specific-access-request.component.d.ts +2 -2
- package/lib/shared/components/case-viewer/case-specific-access-request/case-specific-access-request.component.d.ts.map +1 -1
- package/lib/shared/components/create-case-filters/create-case-filters.component.d.ts +6 -4
- package/lib/shared/components/create-case-filters/create-case-filters.component.d.ts.map +1 -1
- package/lib/shared/components/event-trigger/event-trigger.component.d.ts +2 -2
- package/lib/shared/components/event-trigger/event-trigger.component.d.ts.map +1 -1
- package/lib/shared/components/palette/address/write-address-field.component.d.ts +3 -3
- package/lib/shared/components/palette/address/write-address-field.component.d.ts.map +1 -1
- package/lib/shared/components/palette/base-field/abstract-field-read.component.d.ts +2 -2
- package/lib/shared/components/palette/base-field/abstract-field-read.component.d.ts.map +1 -1
- package/lib/shared/components/palette/base-field/abstract-form-field.component.d.ts +3 -3
- package/lib/shared/components/palette/base-field/abstract-form-field.component.d.ts.map +1 -1
- package/lib/shared/components/palette/base-field/field-read.component.d.ts +2 -2
- package/lib/shared/components/palette/base-field/field-read.component.d.ts.map +1 -1
- package/lib/shared/components/palette/case-file-view/components/case-file-view-folder/case-file-view-folder.component.d.ts +2 -2
- package/lib/shared/components/palette/case-file-view/components/case-file-view-folder/case-file-view-folder.component.d.ts.map +1 -1
- package/lib/shared/components/palette/case-flag/components/add-comments/add-comments.component.d.ts +2 -2
- package/lib/shared/components/palette/case-flag/components/add-comments/add-comments.component.d.ts.map +1 -1
- package/lib/shared/components/palette/case-flag/components/manage-case-flags/manage-case-flags.component.d.ts +2 -2
- package/lib/shared/components/palette/case-flag/components/manage-case-flags/manage-case-flags.component.d.ts.map +1 -1
- package/lib/shared/components/palette/case-flag/components/search-language-interpreter/search-language-interpreter.component.d.ts +2 -2
- package/lib/shared/components/palette/case-flag/components/search-language-interpreter/search-language-interpreter.component.d.ts.map +1 -1
- package/lib/shared/components/palette/case-flag/components/select-flag-location/select-flag-location.component.d.ts +2 -2
- package/lib/shared/components/palette/case-flag/components/select-flag-location/select-flag-location.component.d.ts.map +1 -1
- package/lib/shared/components/palette/case-flag/components/select-flag-type/select-flag-type.component.d.ts +2 -2
- package/lib/shared/components/palette/case-flag/components/select-flag-type/select-flag-type.component.d.ts.map +1 -1
- package/lib/shared/components/palette/case-flag/components/update-flag/update-flag.component.d.ts +2 -2
- package/lib/shared/components/palette/case-flag/components/update-flag/update-flag.component.d.ts.map +1 -1
- package/lib/shared/components/palette/case-flag/domain/case-flag.model.d.ts +2 -2
- package/lib/shared/components/palette/case-flag/write-case-flag-field.component.d.ts +6 -6
- package/lib/shared/components/palette/case-flag/write-case-flag-field.component.d.ts.map +1 -1
- package/lib/shared/components/palette/case-link/write-case-link-field.component.d.ts +2 -2
- package/lib/shared/components/palette/case-link/write-case-link-field.component.d.ts.map +1 -1
- package/lib/shared/components/palette/collection/write-collection-field.component.d.ts +3 -3
- package/lib/shared/components/palette/collection/write-collection-field.component.d.ts.map +1 -1
- package/lib/shared/components/palette/complex/write-complex-field.component.d.ts +3 -3
- package/lib/shared/components/palette/complex/write-complex-field.component.d.ts.map +1 -1
- package/lib/shared/components/palette/document/write-document-field.component.d.ts +8 -4
- package/lib/shared/components/palette/document/write-document-field.component.d.ts.map +1 -1
- package/lib/shared/components/palette/judicial-user/write-judicial-user-field.component.d.ts +5 -3
- package/lib/shared/components/palette/judicial-user/write-judicial-user-field.component.d.ts.map +1 -1
- package/lib/shared/components/palette/linked-cases/components/link-cases/link-cases.component.d.ts +2 -2
- package/lib/shared/components/palette/linked-cases/components/link-cases/link-cases.component.d.ts.map +1 -1
- package/lib/shared/components/palette/linked-cases/components/unlink-cases/unlink-cases.component.d.ts +2 -2
- package/lib/shared/components/palette/linked-cases/components/unlink-cases/unlink-cases.component.d.ts.map +1 -1
- package/lib/shared/components/palette/linked-cases/write-linked-cases-field.component.d.ts +2 -2
- package/lib/shared/components/palette/linked-cases/write-linked-cases-field.component.d.ts.map +1 -1
- package/lib/shared/components/palette/organisation/write-organisation-field.component.d.ts +2 -2
- package/lib/shared/components/palette/organisation/write-organisation-field.component.d.ts.map +1 -1
- package/lib/shared/components/palette/palette.module.d.ts.map +1 -1
- package/lib/shared/components/search-filters/search-filters.component.d.ts +3 -3
- package/lib/shared/components/search-filters/search-filters.component.d.ts.map +1 -1
- package/lib/shared/components/search-result/search-result.component.d.ts +3 -3
- package/lib/shared/components/search-result/search-result.component.d.ts.map +1 -1
- package/lib/shared/components/workbasket-filters/workbasket-filters.component.d.ts +4 -4
- package/lib/shared/components/workbasket-filters/workbasket-filters.component.d.ts.map +1 -1
- package/lib/shared/directives/conditional-show/conditional-show-form.directive.d.ts +2 -2
- package/lib/shared/directives/conditional-show/conditional-show-form.directive.d.ts.map +1 -1
- package/lib/shared/directives/substitutor/label-substitutor.directive.d.ts +2 -2
- package/lib/shared/directives/substitutor/label-substitutor.directive.d.ts.map +1 -1
- package/lib/shared/domain/case-edit/case-edit.model.d.ts +2 -2
- package/lib/shared/domain/case-edit/case-edit.model.d.ts.map +1 -1
- package/lib/shared/domain/definition/jurisdiction.model.d.ts +1 -0
- package/lib/shared/domain/definition/jurisdiction.model.d.ts.map +1 -1
- package/lib/shared/pipes/complex/ccd-page-fields.pipe.d.ts +2 -2
- package/lib/shared/pipes/complex/ccd-page-fields.pipe.d.ts.map +1 -1
- package/lib/shared/pipes/complex/ccd-read-fields-filter.pipe.d.ts +2 -2
- package/lib/shared/pipes/complex/ccd-read-fields-filter.pipe.d.ts.map +1 -1
- package/lib/shared/services/fields/fields.purger.d.ts +4 -4
- package/lib/shared/services/fields/fields.purger.d.ts.map +1 -1
- package/lib/shared/services/fields/fields.utils.d.ts +6 -6
- package/lib/shared/services/fields/fields.utils.d.ts.map +1 -1
- package/lib/shared/services/form/form-error.service.d.ts +2 -2
- package/lib/shared/services/form/form-error.service.d.ts.map +1 -1
- package/lib/shared/services/jurisdiction/jurisdiction.service.d.ts +3 -2
- package/lib/shared/services/jurisdiction/jurisdiction.service.d.ts.map +1 -1
- package/package.json +2 -3
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Directive, Input } from '@angular/core';
|
|
2
|
-
import {
|
|
2
|
+
import { FormGroup } from '@angular/forms';
|
|
3
3
|
import { CaseField } from '../../domain/definition/case-field.model';
|
|
4
4
|
import { FieldsUtils } from '../../services/fields/fields.utils';
|
|
5
5
|
import { PlaceholderService } from './services/placeholder.service';
|
|
@@ -19,7 +19,7 @@ export class LabelSubstitutorDirective {
|
|
|
19
19
|
ngOnInit() {
|
|
20
20
|
this.initialLabel = this.caseField.label;
|
|
21
21
|
this.initialHintText = this.caseField.hint_text;
|
|
22
|
-
this.formGroup = this.formGroup || new
|
|
22
|
+
this.formGroup = this.formGroup || new FormGroup({});
|
|
23
23
|
const fields = this.getReadOnlyAndFormFields();
|
|
24
24
|
if (this.shouldSubstitute('label')) {
|
|
25
25
|
this.caseField.label = this.resolvePlaceholders(fields, this.caseField.label);
|
|
@@ -79,4 +79,4 @@ LabelSubstitutorDirective.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: L
|
|
|
79
79
|
}], elementsToSubstitute: [{
|
|
80
80
|
type: Input
|
|
81
81
|
}] }); })();
|
|
82
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
82
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFiZWwtc3Vic3RpdHV0b3IuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9kaXJlY3RpdmVzL3N1YnN0aXR1dG9yL2xhYmVsLXN1YnN0aXR1dG9yLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDcEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDakUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7Ozs7QUFHcEU7O0dBRUc7QUFDSCxNQUFNLE9BQU8seUJBQXlCO0lBVXBDLFlBQ21CLFdBQXdCLEVBQ3hCLGtCQUFzQztRQUR0QyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4Qix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBVHpDLGtCQUFhLEdBQWdCLEVBQUUsQ0FBQztRQUVoQyx5QkFBb0IsR0FBYSxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQztJQVFwRSxDQUFDO0lBRUUsUUFBUTtRQUNiLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUM7UUFDekMsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQztRQUNoRCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFckQsTUFBTSxNQUFNLEdBQVcsSUFBSSxDQUFDLHdCQUF3QixF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RGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IENhc2VGaWVsZCB9IGZyb20gJy4uLy4uL2RvbWFpbi9kZWZpbml0aW9uL2Nhc2UtZmllbGQubW9kZWwnO1xuaW1wb3J0IHsgRmllbGRzVXRpbHMgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9maWVsZHMvZmllbGRzLnV0aWxzJztcbmltcG9ydCB7IFBsYWNlaG9sZGVyU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvcGxhY2Vob2xkZXIuc2VydmljZSc7XG5cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ1tjY2RMYWJlbFN1YnN0aXR1dG9yXScgfSlcbi8qKlxuICogQ2hlY2tzIGFsbCBsYWJlbHMgYW5kIHN1YnN0aXR1dGVzIGFueSBwbGFjaG9sZGVycyB0aGF0IHJlZmVyZW5jZSBvdGhlciBmaWVsZHMgdmFsdWVzLlxuICovXG5leHBvcnQgY2xhc3MgTGFiZWxTdWJzdGl0dXRvckRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBASW5wdXQoKSBwdWJsaWMgY2FzZUZpZWxkOiBDYXNlRmllbGQ7XG4gIEBJbnB1dCgpIHB1YmxpYyBjb250ZXh0RmllbGRzOiBDYXNlRmllbGRbXSA9IFtdO1xuICBASW5wdXQoKSBwdWJsaWMgZm9ybUdyb3VwOiBGb3JtR3JvdXA7XG4gIEBJbnB1dCgpIHB1YmxpYyBlbGVtZW50c1RvU3Vic3RpdHV0ZTogc3RyaW5nW10gPSBbJ2xhYmVsJywgJ2hpbnRfdGV4dCddO1xuXG4gIHByaXZhdGUgaW5pdGlhbExhYmVsOiBzdHJpbmc7XG4gIHByaXZhdGUgaW5pdGlhbEhpbnRUZXh0OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBmaWVsZHNVdGlsczogRmllbGRzVXRpbHMsXG4gICAgcHJpdmF0ZSByZWFkb25seSBwbGFjZWhvbGRlclNlcnZpY2U6IFBsYWNlaG9sZGVyU2VydmljZVxuICApIHsgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmluaXRpYWxMYWJlbCA9IHRoaXMuY2FzZUZpZWxkLmxhYmVsO1xuICAgIHRoaXMuaW5pdGlhbEhpbnRUZXh0ID0gdGhpcy5jYXNlRmllbGQuaGludF90ZXh0O1xuICAgIHRoaXMuZm9ybUdyb3VwID0gdGhpcy5mb3JtR3JvdXAgfHwgbmV3IEZvcm1Hcm91cCh7fSk7XG5cbiAgICBjb25zdCBmaWVsZHM6IG9iamVjdCA9IHRoaXMuZ2V0UmVhZE9ubHlBbmRGb3JtRmllbGRzKCk7XG5cbiAgICBpZiAodGhpcy5zaG91bGRTdWJzdGl0dXRlKCdsYWJlbCcpKSB7XG4gICAgICB0aGlzLmNhc2VGaWVsZC5sYWJlbCA9IHRoaXMucmVzb2x2ZVBsYWNlaG9sZGVycyhmaWVsZHMsIHRoaXMuY2FzZUZpZWxkLmxhYmVsKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuc2hvdWxkU3Vic3RpdHV0ZSgnaGludF90ZXh0JykpIHtcbiAgICAgIHRoaXMuY2FzZUZpZWxkLmhpbnRfdGV4dCA9IHRoaXMucmVzb2x2ZVBsYWNlaG9sZGVycyhmaWVsZHMsIHRoaXMuY2FzZUZpZWxkLmhpbnRfdGV4dCk7XG4gICAgfVxuICAgIGlmICh0aGlzLnNob3VsZFN1YnN0aXR1dGUoJ3ZhbHVlJykpIHtcbiAgICAgIHRoaXMuY2FzZUZpZWxkLnZhbHVlID0gdGhpcy5yZXNvbHZlUGxhY2Vob2xkZXJzKGZpZWxkcywgdGhpcy5jYXNlRmllbGQudmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pbml0aWFsTGFiZWwpIHtcbiAgICAgIHRoaXMuY2FzZUZpZWxkLmxhYmVsID0gdGhpcy5pbml0aWFsTGFiZWw7XG4gICAgfVxuICAgIGlmICh0aGlzLmluaXRpYWxIaW50VGV4dCkge1xuICAgICAgdGhpcy5jYXNlRmllbGQuaGludF90ZXh0ID0gdGhpcy5pbml0aWFsSGludFRleHQ7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzaG91bGRTdWJzdGl0dXRlKGVsZW1lbnQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmVsZW1lbnRzVG9TdWJzdGl0dXRlLmZpbmQoZSA9PiBlID09PSBlbGVtZW50KSAhPT0gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRSZWFkT25seUFuZEZvcm1GaWVsZHMoKTogb2JqZWN0IHtcbiAgICBjb25zdCBmb3JtRmllbGRzOiBvYmplY3QgPSB0aGlzLmdldEZvcm1GaWVsZHNWYWx1ZXNJbmNsdWRpbmdEaXNhYmxlZCgpO1xuICAgIC8vIFRPRE86IERlbGV0ZSBmb2xsb3dpbmcgbGluZSB3aGVuIEBJbnB1dCBjb250ZXh0RmllbGRzIGlzIGZpeGVkIC0gaHR0cHM6Ly90b29scy5obWN0cy5uZXQvamlyYS9icm93c2UvUkRNLTM1MDRcbiAgICBjb25zdCB1bmlxdWVDb250ZXh0RmllbGRzOiBDYXNlRmllbGRbXSA9IHRoaXMucmVtb3ZlRHVwbGljYXRlcyh0aGlzLmNvbnRleHRGaWVsZHMpO1xuICAgIHJldHVybiB0aGlzLmZpZWxkc1V0aWxzLm1lcmdlTGFiZWxDYXNlRmllbGRzQW5kRm9ybUZpZWxkcyh1bmlxdWVDb250ZXh0RmllbGRzLCBmb3JtRmllbGRzKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlRHVwbGljYXRlcyhvcmlnaW5hbDogQ2FzZUZpZWxkW10pOiBDYXNlRmllbGRbXSB7XG4gICAgY29uc3QgdW5pcXVlOiBDYXNlRmllbGRbXSA9IFtdO1xuICAgIG9yaWdpbmFsLmZvckVhY2goY2FzZUZpZWxkID0+IHtcbiAgICAgIGNvbnN0IGlzVW5pcXVlID0gdW5pcXVlLmZpbHRlcihlID0+IGUuaWQgPT09IGNhc2VGaWVsZC5pZCkubGVuZ3RoID09PSAwO1xuICAgICAgaWYgKGlzVW5pcXVlKSB7XG4gICAgICAgIHVuaXF1ZS5wdXNoKGNhc2VGaWVsZCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHVuaXF1ZTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Rm9ybUZpZWxkc1ZhbHVlc0luY2x1ZGluZ0Rpc2FibGVkKCk6IG9iamVjdCB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybUdyb3VwLmdldFJhd1ZhbHVlKCk7XG4gIH1cblxuICBwcml2YXRlIHJlc29sdmVQbGFjZWhvbGRlcnMoZmllbGRzOiBvYmplY3QsIHN0cmluZ1RvUmVzb2x2ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5wbGFjZWhvbGRlclNlcnZpY2UucmVzb2x2ZVBsYWNlaG9sZGVycyhmaWVsZHMsIHN0cmluZ1RvUmVzb2x2ZSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1lZGl0Lm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9kb21haW4vY2FzZS1lZGl0L2Nhc2UtZWRpdC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMtY29tcGF0JztcbmltcG9ydCB7IENvbmZpcm1hdGlvbiwgV2l6YXJkIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cyc7XG5pbXBvcnQgeyBDYXNlRXZlbnREYXRhLCBDYXNlRXZlbnRUcmlnZ2VyLCBDYXNlVmlldywgSHR0cEVycm9yLCBQcm9maWxlIH0gZnJvbSAnLi4vLi4vZG9tYWluJztcbmludGVyZmFjZSBDYXNlRWRpdE1vZGVsIHtcbiAgd2l6YXJkOiBXaXphcmQ7XG4gIGN1cnJlbnRQYWdlSWQ6IHN0cmluZztcbiAgZXZlbnRUcmlnZ2VyOiBDYXNlRXZlbnRUcmlnZ2VyO1xuICBmb3JtOiBGb3JtR3JvdXA7XG4gIGV2ZW50Q2FuQmVDb21wbGV0ZWQ6IGJvb2xlYW47XG4gIGNhc2VEZXRhaWxzOiBDYXNlVmlldztcbiAgY2FzZUV2ZW50RGF0YTogQ2FzZUV2ZW50RGF0YTtcbiAgc3VibWl0KGNhc2VFdmVudERhdGE6IENhc2VFdmVudERhdGEsIHByb2ZpbGU/OiBQcm9maWxlKTogT2JzZXJ2YWJsZTxvYmplY3Q+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENhc2VFZGl0R2V0TmV4dFBhZ2VcbiAgZXh0ZW5kcyBQaWNrPENhc2VFZGl0TW9kZWwsICd3aXphcmQnIHwgJ2N1cnJlbnRQYWdlSWQnIHwgJ2V2ZW50VHJpZ2dlcicgfCAnZm9ybSc+IHsgfVxuXG5leHBvcnQgaW50ZXJmYWNlIENhc2VFZGl0U3VibWl0Rm9ybVxuICBleHRlbmRzIFBpY2s8Q2FzZUVkaXRNb2RlbCwgJ2V2ZW50VHJpZ2dlcicgfCAnZm9ybScgfCAnY2FzZURldGFpbHMnIHwgJ3N1Ym1pdCc+IHsgfVxuXG5leHBvcnQgaW50ZXJmYWNlIENhc2VFZGl0R2VuZXJhdGVDYXNlRXZlbnREYXRhXG4gIGV4dGVuZHMgUGljazxDYXNlRWRpdE1vZGVsLCAnZXZlbnRUcmlnZ2VyJyB8ICdmb3JtJz4geyB9XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2FzZUVkaXRDYXNlU3VibWl0XG4gIGV4dGVuZHMgUGljazxDYXNlRWRpdE1vZGVsLCAnZm9ybScgfCAnY2FzZUV2ZW50RGF0YScgfCAnc3VibWl0Jz4geyB9XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2FzZUVkaXRvbkV2ZW50Q2FuQmVDb21wbGV0ZWRcbiAgZXh0ZW5kcyBQaWNrPENhc2VFZGl0TW9kZWwsICdldmVudENhbkJlQ29tcGxldGVkJyB8ICdldmVudFRyaWdnZXInIHwgJ2Nhc2VEZXRhaWxzJyB8ICdmb3JtJyB8ICdzdWJtaXQnPiB7IH0iXX0=
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export class Jurisdiction {
|
|
2
2
|
}
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianVyaXNkaWN0aW9uLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9kb21haW4vZGVmaW5pdGlvbi9qdXJpc2RpY3Rpb24ubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxPQUFPLFlBQVk7Q0FNeEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDYXNlVHlwZUxpdGUgfSBmcm9tICcuL2Nhc2UtdHlwZS1saXRlLm1vZGVsJztcblxuZXhwb3J0IGNsYXNzIEp1cmlzZGljdGlvbiB7XG4gIHB1YmxpYyBpZDogc3RyaW5nO1xuICBwdWJsaWMgbmFtZTogc3RyaW5nO1xuICBwdWJsaWMgZGVzY3JpcHRpb246IHN0cmluZztcbiAgcHVibGljIGNhc2VUeXBlczogQ2FzZVR5cGVMaXRlW107XG4gIHB1YmxpYyBjdXJyZW50Q2FzZVR5cGU/OiBDYXNlVHlwZUxpdGU7XG59XG4iXX0=
|
|
@@ -36,4 +36,4 @@ CcdPageFieldsPipe.ɵpipe = /*@__PURE__*/ i0.ɵɵdefinePipe({ name: "ccdPageField
|
|
|
36
36
|
name: 'ccdPageFields'
|
|
37
37
|
}]
|
|
38
38
|
}], null, null); })();
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2NkLXBhZ2UtZmllbGRzLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL3BpcGVzL2NvbXBsZXgvY2NkLXBhZ2UtZmllbGRzLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFFcEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFMUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDOztBQUtwRCxNQUFNLE9BQU8saUJBQWlCO0lBQ3JCLFNBQVMsQ0FBQyxJQUFnQixFQUFFLGFBQXdCO1FBQ3pELE1BQU0sYUFBYSxHQUFnQixNQUFNLENBQUMsSUFBSSxDQUFFLGFBQWEsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFlLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQy9HLE1BQU0sT0FBTyxHQUFxQixhQUFhLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBZSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN4RixPQUFPLE9BQU8sQ0FBQyxXQUFXLENBQWMsQ0FBQztRQUMzQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDaEIsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM3RCxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVyQyxNQUFNLFFBQVEsR0FBUSxhQUFhLENBQUMsS0FBSyxDQUFDO1FBRTFDLE1BQU0sS0FBSyxHQUFRLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBUSxFQUFFLEtBQWdCLEVBQUUsRUFBRTtZQUN4RSxNQUFNLFVBQVUsR0FBUSxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUM7WUFDMUQsT0FBTyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDO1FBQzVDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNQLE9BQU8scUJBQXFCLENBQUMsSUFBSSxTQUFTLEVBQUUsRUFBRTtZQUM1QyxFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUU7WUFDWCxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7WUFDakIsZUFBZSxFQUFFLFVBQVU7WUFDM0IsS0FBSztZQUNMLFVBQVUsRUFBRTtnQkFDVixFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUU7Z0JBQ1gsSUFBSSxFQUFFLFNBQVM7Z0JBQ2YsY0FBYyxFQUFFLGFBQWE7YUFDOUI7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDOztrRkExQlUsaUJBQWlCO3VGQUFqQixpQkFBaUI7dUZBQWpCLGlCQUFpQjtjQUg3QixJQUFJO2VBQUM7Z0JBQ0osSUFBSSxFQUFFLGVBQWU7YUFDdEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IHBsYWluVG9DbGFzc0Zyb21FeGlzdCB9IGZyb20gJ2NsYXNzLXRyYW5zZm9ybWVyJztcbmltcG9ydCB7IFdpemFyZFBhZ2UgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2Nhc2UtZWRpdG9yL2RvbWFpbi93aXphcmQtcGFnZS5tb2RlbCc7XG5pbXBvcnQgeyBDYXNlRmllbGQgfSBmcm9tICcuLi8uLi9kb21haW4vZGVmaW5pdGlvbic7XG5cbkBQaXBlKHtcbiAgbmFtZTogJ2NjZFBhZ2VGaWVsZHMnXG59KVxuZXhwb3J0IGNsYXNzIENjZFBhZ2VGaWVsZHNQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIHB1YmxpYyB0cmFuc2Zvcm0ocGFnZTogV2l6YXJkUGFnZSwgZGF0YUZvcm1Hcm91cDogRm9ybUdyb3VwKTogQ2FzZUZpZWxkIHtcbiAgICBjb25zdCBjb21wbGV4RmllbGRzOiBDYXNlRmllbGRbXSA9IE9iamVjdC5rZXlzKChkYXRhRm9ybUdyb3VwLmNvbnRyb2xzWydkYXRhJ10gYXMgRm9ybUdyb3VwKS5jb250cm9scykubWFwKGtleSA9PiB7XG4gICAgICBjb25zdCBjb250cm9sOiBBYnN0cmFjdENvbnRyb2wgPSAoZGF0YUZvcm1Hcm91cC5jb250cm9sc1snZGF0YSddIGFzIEZvcm1Hcm91cCkuZ2V0KGtleSk7XG4gICAgICByZXR1cm4gY29udHJvbFsnY2FzZUZpZWxkJ10gYXMgQ2FzZUZpZWxkO1xuICAgIH0pLmZpbHRlcihmaWVsZCA9PiB7XG4gICAgICByZXR1cm4gISFwYWdlLmNhc2VfZmllbGRzLmZpbmQocGNmID0+IHBjZi5pZCA9PT0gZmllbGQuaWQpO1xuICAgIH0pLnNvcnQoKGEsIGIpID0+IGEub3JkZXIgLSBiLm9yZGVyKTtcblxuICAgIGNvbnN0IHJhd1ZhbHVlOiBhbnkgPSBkYXRhRm9ybUdyb3VwLnZhbHVlO1xuXG4gICAgY29uc3QgdmFsdWU6IGFueSA9IHBhZ2UuY2FzZV9maWVsZHMucmVkdWNlKChhY2M6IGFueSwgZmllbGQ6IENhc2VGaWVsZCkgPT4ge1xuICAgICAgY29uc3QgZmllbGRWYWx1ZTogYW55ID0gcmF3VmFsdWVbZmllbGQuaWRdIHx8IGZpZWxkLnZhbHVlO1xuICAgICAgcmV0dXJuIHsgLi4uYWNjLCBbZmllbGQuaWRdOiBmaWVsZFZhbHVlIH07XG4gICAgfSwge30pO1xuICAgIHJldHVybiBwbGFpblRvQ2xhc3NGcm9tRXhpc3QobmV3IENhc2VGaWVsZCgpLCB7XG4gICAgICBpZDogcGFnZS5pZCxcbiAgICAgIGxhYmVsOiBwYWdlLmxhYmVsLFxuICAgICAgZGlzcGxheV9jb250ZXh0OiAnUkVBRE9OTFknLFxuICAgICAgdmFsdWUsXG4gICAgICBmaWVsZF90eXBlOiB7XG4gICAgICAgIGlkOiBwYWdlLmlkLFxuICAgICAgICB0eXBlOiAnQ29tcGxleCcsXG4gICAgICAgIGNvbXBsZXhfZmllbGRzOiBjb21wbGV4RmllbGRzXG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -154,4 +154,4 @@ ReadFieldsFilterPipe.ɵpipe = /*@__PURE__*/ i0.ɵɵdefinePipe({ name: "ccdReadFi
|
|
|
154
154
|
name: 'ccdReadFieldsFilter'
|
|
155
155
|
}]
|
|
156
156
|
}], null, null); })();
|
|
157
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2NkLXJlYWQtZmllbGRzLWZpbHRlci5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9waXBlcy9jb21wbGV4L2NjZC1yZWFkLWZpZWxkcy1maWx0ZXIucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUdwRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUVBQWlFLENBQUM7QUFDaEcsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7QUFLakUsTUFBTSxPQUFPLG9CQUFvQjtJQWdCL0I7O09BRUc7SUFDSyxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQWdCLEVBQUUsTUFBZTtRQUM3RCxNQUFNLEdBQUcsTUFBTSxJQUFJLEVBQUUsQ0FBQztRQUN0QixNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDO1FBQzlCLE1BQU0sS0FBSyxHQUFHLG9CQUFvQixDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFM0QsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUN4RCxNQUFNLFFBQVEsR0FBRyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNoRSxPQUFPLFFBQVEsSUFBSSxvQkFBb0IsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQztRQUM1RixDQUFD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QUFwQixvQkFBb0I7dUZBQXBCLG9CQUFvQjtjQUhoQyxJQUFJO2VBQUM7Z0JBQ0osSUFBSSxFQUFFLHFCQUFxQjthQUM1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgVW50eXBlZEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgcGxhaW5Ub0NsYXNzRnJvbUV4aXN0IH0gZnJvbSAnY2xhc3MtdHJhbnNmb3JtZXInO1xuaW1wb3J0IHsgU2hvd0NvbmRpdGlvbiB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvY29uZGl0aW9uYWwtc2hvdy9kb21haW4vY29uZGl0aW9uYWwtc2hvdy5tb2RlbCc7XG5pbXBvcnQgeyBDYXNlRmllbGQgfSBmcm9tICcuLi8uLi9kb21haW4vZGVmaW5pdGlvbi9jYXNlLWZpZWxkLm1vZGVsJztcbmltcG9ydCB7IEZpZWxkc1V0aWxzIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZmllbGRzL2ZpZWxkcy51dGlscyc7XG5cbkBQaXBlKHtcbiAgbmFtZTogJ2NjZFJlYWRGaWVsZHNGaWx0ZXInXG59KVxuZXhwb3J0IGNsYXNzIFJlYWRGaWVsZHNGaWx0ZXJQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgRU1QVFlfVkFMVUVTID0gW1xuICAgIHVuZGVmaW5lZCxcbiAgICBudWxsLFxuICAgICcnLFxuICAgIHt9XG4gIF07XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgQUxXQVlTX05VTExfRklFTERTID0gWydDYXNlUGF5bWVudEhpc3RvcnlWaWV3ZXInLCAnV2F5c1RvUGF5JywgJ0ZsYWdMYXVuY2hlcicsICdDb21wb25lbnRMYXVuY2hlciddO1xuXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IE5FU1RFRF9UWVBFUyA9IHtcbiAgICBDb21wbGV4OiBSZWFkRmllbGRzRmlsdGVyUGlwZS5pc1ZhbGlkQ29tcGxleCxcbiAgICBDb2xsZWN0aW9uOiBSZWFkRmllbGRzRmlsdGVyUGlwZS5pc1ZhbGlkQ29sbGVjdGlvblxuICB9O1xuXG4gIC8qKlxuICAgKiBDb21wbGV4IHR5cGUgc2hvdWxkIGhhdmUgYXQgbGVhc3Qgb24gc2ltcGxlIGZpZWxkIGRlc2NlbmRhbnQgd2l0aCBhIHZhbHVlLlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgaXNWYWxpZENvbXBsZXgoZmllbGQ6IENhc2VGaWVsZCwgdmFsdWVzPzogb2JqZWN0KTogYm9vbGVhbiB7XG4gICAgdmFsdWVzID0gdmFsdWVzIHx8IHt9O1xuICAgIGNvbnN0IHR5cGUgPSBmaWVsZC5maWVsZF90eXBlO1xuICAgIGNvbnN0IHZhbHVlID0gUmVhZEZpZWxkc0ZpbHRlclBpcGUuZ2V0VmFsdWUoZmllbGQsIHZhbHVlcyk7XG5cbiAgICBjb25zdCBoYXNDaGlsZHJlbldpdGhWYWx1ZSA9IHR5cGUuY29tcGxleF9maWVsZHMuZmluZChmID0+IHtcbiAgICAgIGNvbnN0IHdpbGxLZWVwID0gUmVhZEZpZWxkc0ZpbHRlclBpcGUua2VlcEZpZWxkKGYsIHZhbHVlLCB0cnVlKTtcbiAgICAgIHJldHVybiB3aWxsS2VlcCAmJiBSZWFkRmllbGRzRmlsdGVyUGlwZS5ldmFsdWF0ZUNvbmRpdGlvbmFsU2hvdyhmLCB2YWx1ZSkuaGlkZGVuICE9PSB0cnVlO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuICEhaGFzQ2hpbGRyZW5XaXRoVmFsdWU7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBpc1ZhbGlkQ29sbGVjdGlvbihmaWVsZDogQ2FzZUZpZWxkLCB2YWx1ZXM/OiBvYmplY3QpOiBib29sZWFuIHtcbiAgICAvLyBpZiBmaWVsZCBpcyBjb2xsZWN0aW9uIGFuZCBpdCBoYXMgY29tcGxleC9jb2xsZWN0aW9uIGNoaWxkIGZpZWxkOyBwYXJlbnQgZmllbGQgZG9lc250IGhhdmUgdmFsdWUgZGVmaW5lZFxuICAgIGlmICghQXJyYXkuaXNBcnJheShmaWVsZC52YWx1ZSkgJiYgdmFsdWVzICYmIHZhbHVlcy5oYXNPd25Qcm9wZXJ0eShmaWVsZC5pZCkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBjb25zdCBpc05vdEVtcHR5ID0gQXJyYXkuaXNBcnJheShmaWVsZC52YWx1ZSkgJiYgZmllbGQudmFsdWUubGVuZ3RoID4gMDtcbiAgICBpZiAoaXNOb3RFbXB0eSAmJiBmaWVsZC5maWVsZF90eXBlLmNvbGxlY3Rpb25fZmllbGRfdHlwZS50eXBlID09PSAnQ29tcGxleCcpIHtcbiAgICAgIHJldHVybiAhIWZpZWxkLnZhbHVlLmZpbmQoaXRlbSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbXBsZXhGaWVsZCA9IHBsYWluVG9DbGFzc0Zyb21FeGlzdChuZXcgQ2FzZUZpZWxkKCksIHtcbiAgICAgICAgICBpZDogZmllbGQuZmllbGRfdHlwZS5jb2xsZWN0aW9uX2ZpZWxkX3R5cGUuaWQsXG4gICAgICAgICAgZmllbGRfdHlwZTogZmllbGQuZmllbGRfdHlwZS5jb2xsZWN0aW9uX2ZpZWxkX3R5cGUsXG4gICAgICAgICAgdmFsdWU6IGl0ZW0udmFsdWUsXG4gICAgICAgICAgbGFiZWw6IG51bGwsXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gUmVhZEZpZWxkc0ZpbHRlclBpcGUuaXNWYWxpZENvbXBsZXgoY29tcGxleEZpZWxkKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gaXNOb3RFbXB0eTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGlzRW1wdHkodmFsdWU6IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBSZWFkRmllbGRzRmlsdGVyUGlwZS5FTVBUWV9WQUxVRVMuaW5kZXhPZih2YWx1ZSkgIT09IC0xXG4gICAgICB8fCB2YWx1ZS5sZW5ndGggPT09IDA7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBpc0NvbXBvdW5kKGZpZWxkOiBDYXNlRmllbGQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gUmVhZEZpZWxkc0ZpbHRlclBpcGUuTkVTVEVEX1RZUEVTW2ZpZWxkLmZpZWxkX3R5cGUudHlwZV07XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBpc1ZhbGlkQ29tcG91bmQoZmllbGQ6IENhc2VGaWVsZCwgdmFsdWU/OiBvYmplY3QpOiBib29sZWFuIHtcbiAgICByZXR1cm4gUmVhZEZpZWxkc0ZpbHRlclBpcGUuaXNDb21wb3VuZChmaWVsZClcbiAgICAgICYmIFJlYWRGaWVsZHNGaWx0ZXJQaXBlLk5FU1RFRF9UWVBFU1tmaWVsZC5maWVsZF90eXBlLnR5cGVdKGZpZWxkLCB2YWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBrZWVwRmllbGQoZmllbGQ6IENhc2VGaWVsZCwgdmFsdWU/OiBvYmplY3QsIGlnbm9yZUxhYmVscyA9IGZhbHNlKTogYm9vbGVhbiB7XG4gICAgLy8gV2Ugc2hvdWxkbid0IGRpdGNoIGxhYmVscy5cbiAgICBpZiAoIWlnbm9yZUxhYmVscyAmJiBmaWVsZC5maWVsZF90eXBlLnR5cGUgPT09ICdMYWJlbCcgJiYgKGZpZWxkLmxhYmVsIHx8ICcnKS5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgLy8gV2UgYWxzbyBzaG91bGRuJ3QgZGl0Y2ggZmllbGRzIHRoYXQgd2lsbCBhbHdheXMgY29tZSBiYWNrIHdpdGggYSBudWxsIHZhbHVlLlxuICAgIGlmICh0aGlzLkFMV0FZU19OVUxMX0ZJRUxEUy5pbmRleE9mKGZpZWxkLmZpZWxkX3R5cGUudHlwZSkgIT09IC0xKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICB2YWx1ZSA9IHZhbHVlIHx8IHt9O1xuXG4gICAgaWYgKFJlYWRGaWVsZHNGaWx0ZXJQaXBlLmlzQ29tcG91bmQoZmllbGQpKSB7XG4gICAgICByZXR1cm4gUmVhZEZpZWxkc0ZpbHRlclBpcGUuaXNWYWxpZENvbXBvdW5kKGZpZWxkLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuICFSZWFkRmllbGRzRmlsdGVyUGlwZS5pc0VtcHR5KGZpZWxkLnZhbHVlKVxuICAgICAgfHwgIVJlYWRGaWVsZHNGaWx0ZXJQaXBlLmlzRW1wdHkodmFsdWVbZmllbGQuaWRdKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGdldFZhbHVlKGZpZWxkOiBDYXNlRmllbGQsIHZhbHVlczogYW55LCBpbmRleD86IG51bWJlcik6IGFueSB7XG4gICAgaWYgKFJlYWRGaWVsZHNGaWx0ZXJQaXBlLmlzRW1wdHkoZmllbGQudmFsdWUpKSB7XG4gICAgICBsZXQgdmFsdWU6IGFueTtcbiAgICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICAgIHZhbHVlID0gdmFsdWVzW2luZGV4XS52YWx1ZVtmaWVsZC5pZF07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YWx1ZSA9IHZhbHVlc1tmaWVsZC5pZF07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZpZWxkLnZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZXZhbHVhdGVDb25kaXRpb25hbFNob3coZmllbGQ6IENhc2VGaWVsZCwgZm9ybVZhbHVlOiBhbnksIHBhdGg/OiBzdHJpbmcsXG4gICAgZm9ybUdyb3VwQXZhaWxhYmxlPzogYm9vbGVhbiwgZmllbGRJZD86IHN0cmluZyk6IENhc2VGaWVsZCB7XG4gICAgaWYgKGZpZWxkLmRpc3BsYXlfY29udGV4dCA9PT0gJ0hJRERFTicpIHtcbiAgICAgIGZpZWxkLmhpZGRlbiA9IHRydWU7XG4gICAgfSBlbHNlIGlmIChmaWVsZC5zaG93X2NvbmRpdGlvbikge1xuICAgICAgbGV0IGNvbmQ6IFNob3dDb25kaXRpb247XG4gICAgICBpZiAoZmllbGRJZCAmJiBmaWVsZC5zaG93X2NvbmRpdGlvbi5pbmRleE9mKGAke2ZpZWxkSWR9LmApID4gLTEgJiYgIWZvcm1Hcm91cEF2YWlsYWJsZSAmJiAhIU9iamVjdC5rZXlzKGZvcm1WYWx1ZSkubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IHNlYXJjaCA9IGAke2ZpZWxkSWR9LmA7XG4gICAgICAgIGNvbnN0IHNlYXJjaFJlZ0V4cCA9IG5ldyBSZWdFeHAoc2VhcmNoLCAnZycpO1xuICAgICAgICBjb25zdCByZXBsYWNlV2l0aCA9ICcnO1xuICAgICAgICBjb25kID0gU2hvd0NvbmRpdGlvbi5nZXRJbnN0YW5jZShmaWVsZC5zaG93X2NvbmRpdGlvbi5yZXBsYWNlKHNlYXJjaFJlZ0V4cCwgcmVwbGFjZVdpdGgpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbmQgPSBTaG93Q29uZGl0aW9uLmdldEluc3RhbmNlKGZpZWxkLnNob3dfY29uZGl0aW9uKTtcbiAgICAgIH1cbiAgICAgIGZpZWxkLmhpZGRlbiA9ICFjb25kLm1hdGNoKGZvcm1WYWx1ZSwgcGF0aCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZpZWxkLmhpZGRlbiA9IGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gZmllbGQ7XG4gIH1cblxuICAvKipcbiAgICogRmlsdGVyIG91dCBmaWVsZHMgaGF2aW5nIG5vIGRhdGEgdG8gZGlzcGxheSBhbmQgaGFybW9uaXNlIGZpZWxkIHZhbHVlcyBjb21pbmcgcGFyZW50J3MgdmFsdWUuXG4gICAqL1xuICBwdWJsaWMgdHJhbnNmb3JtKFxuICAgIGNvbXBsZXhGaWVsZDogQ2FzZUZpZWxkLCBrZWVwRW1wdHk/OiBib29sZWFuLCBpbmRleD86IG51bWJlcixcbiAgICBzZXR1cEhpZGRlbiA9IGZhbHNlLCBmb3JtR3JvdXA/OiBVbnR5cGVkRm9ybUdyb3VwIHwgQWJzdHJhY3RDb250cm9sLCBwYXRoPzogc3RyaW5nKTogQ2FzZUZpZWxkW10ge1xuICAgIGlmICghY29tcGxleEZpZWxkIHx8ICFjb21wbGV4RmllbGQuZmllbGRfdHlwZSkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGNvbnN0IGZpZWxkcyA9IGNvbXBsZXhGaWVsZC5maWVsZF90eXBlLmNvbXBsZXhfZmllbGRzIHx8IFtdO1xuICAgIGNvbnN0IHZhbHVlcyA9IGNvbXBsZXhGaWVsZC52YWx1ZSB8fCB7fTtcbiAgICBsZXQgY2hlY2tDb25kaXRpb25hbFNob3dBZ2FpbnN0OiBhbnkgPSB2YWx1ZXM7XG4gICAgbGV0IGZvcm1Hcm91cEF2YWlsYWJsZSA9IGZhbHNlO1xuICAgIGlmIChmb3JtR3JvdXApIHtcbiAgICAgIGNoZWNrQ29uZGl0aW9uYWxTaG93QWdhaW5zdCA9IGZvcm1Hcm91cC52YWx1ZTtcbiAgICAgIGZvcm1Hcm91cEF2YWlsYWJsZSA9IHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZpZWxkc1xuICAgICAgLm1hcChmID0+IHtcbiAgICAgICAgY29uc3QgY2xvbmUgPSBGaWVsZHNVdGlscy5jbG9uZU9iamVjdChmKTtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBSZWFkRmllbGRzRmlsdGVyUGlwZS5nZXRWYWx1ZShmLCB2YWx1ZXMsIGluZGV4KTtcbiAgICAgICAgaWYgKCFSZWFkRmllbGRzRmlsdGVyUGlwZS5pc0VtcHR5KHZhbHVlKSkge1xuICAgICAgICAgIGNsb25lLnZhbHVlID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNsb25lO1xuICAgICAgfSlcbiAgICAgIC5tYXAoZiA9PiB7XG4gICAgICAgIGlmICghZi5kaXNwbGF5X2NvbnRleHQpIHtcbiAgICAgICAgICBmLmRpc3BsYXlfY29udGV4dCA9IGNvbXBsZXhGaWVsZC5kaXNwbGF5X2NvbnRleHQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNldHVwSGlkZGVuKSB7XG4gICAgICAgICAgUmVhZEZpZWxkc0ZpbHRlclBpcGUuZXZhbHVhdGVDb25kaXRpb25hbFNob3coZiwgY2hlY2tDb25kaXRpb25hbFNob3dBZ2FpbnN0LCBwYXRoLCBmb3JtR3JvdXBBdmFpbGFibGUsIGNvbXBsZXhGaWVsZC5pZCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGY7XG4gICAgICB9KVxuICAgICAgLmZpbHRlcihmID0+IGtlZXBFbXB0eSB8fCBSZWFkRmllbGRzRmlsdGVyUGlwZS5rZWVwRmllbGQoZikpO1xuICB9XG59XG4iXX0=
|
|
157
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2NkLXJlYWQtZmllbGRzLWZpbHRlci5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9waXBlcy9jb21wbGV4L2NjZC1yZWFkLWZpZWxkcy1maWx0ZXIucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUdwRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUVBQWlFLENBQUM7QUFDaEcsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7QUFLakUsTUFBTSxPQUFPLG9CQUFvQjtJQWdCL0I7O09BRUc7SUFDSyxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQWdCLEVBQUUsTUFBZTtRQUM3RCxNQUFNLEdBQUcsTUFBTSxJQUFJLEVBQUUsQ0FBQztRQUN0QixNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDO1FBQzlCLE1BQU0sS0FBSyxHQUFHLG9CQUFvQixDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFM0QsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUN4RCxNQUFNLFFBQVEsR0FBRyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNoRSxPQUFPLFFBQVEsSUFBSSxvQkFBb0IsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQztRQUM1RixDQUFD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QUFwQixvQkFBb0I7dUZBQXBCLG9CQUFvQjtjQUhoQyxJQUFJO2VBQUM7Z0JBQ0osSUFBSSxFQUFFLHFCQUFxQjthQUM1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBwbGFpblRvQ2xhc3NGcm9tRXhpc3QgfSBmcm9tICdjbGFzcy10cmFuc2Zvcm1lcic7XG5pbXBvcnQgeyBTaG93Q29uZGl0aW9uIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9jb25kaXRpb25hbC1zaG93L2RvbWFpbi9jb25kaXRpb25hbC1zaG93Lm1vZGVsJztcbmltcG9ydCB7IENhc2VGaWVsZCB9IGZyb20gJy4uLy4uL2RvbWFpbi9kZWZpbml0aW9uL2Nhc2UtZmllbGQubW9kZWwnO1xuaW1wb3J0IHsgRmllbGRzVXRpbHMgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9maWVsZHMvZmllbGRzLnV0aWxzJztcblxuQFBpcGUoe1xuICBuYW1lOiAnY2NkUmVhZEZpZWxkc0ZpbHRlcidcbn0pXG5leHBvcnQgY2xhc3MgUmVhZEZpZWxkc0ZpbHRlclBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcblxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBFTVBUWV9WQUxVRVMgPSBbXG4gICAgdW5kZWZpbmVkLFxuICAgIG51bGwsXG4gICAgJycsXG4gICAge31cbiAgXTtcblxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBBTFdBWVNfTlVMTF9GSUVMRFMgPSBbJ0Nhc2VQYXltZW50SGlzdG9yeVZpZXdlcicsICdXYXlzVG9QYXknLCAnRmxhZ0xhdW5jaGVyJywgJ0NvbXBvbmVudExhdW5jaGVyJ107XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgTkVTVEVEX1RZUEVTID0ge1xuICAgIENvbXBsZXg6IFJlYWRGaWVsZHNGaWx0ZXJQaXBlLmlzVmFsaWRDb21wbGV4LFxuICAgIENvbGxlY3Rpb246IFJlYWRGaWVsZHNGaWx0ZXJQaXBlLmlzVmFsaWRDb2xsZWN0aW9uXG4gIH07XG5cbiAgLyoqXG4gICAqIENvbXBsZXggdHlwZSBzaG91bGQgaGF2ZSBhdCBsZWFzdCBvbiBzaW1wbGUgZmllbGQgZGVzY2VuZGFudCB3aXRoIGEgdmFsdWUuXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyBpc1ZhbGlkQ29tcGxleChmaWVsZDogQ2FzZUZpZWxkLCB2YWx1ZXM/OiBvYmplY3QpOiBib29sZWFuIHtcbiAgICB2YWx1ZXMgPSB2YWx1ZXMgfHwge307XG4gICAgY29uc3QgdHlwZSA9IGZpZWxkLmZpZWxkX3R5cGU7XG4gICAgY29uc3QgdmFsdWUgPSBSZWFkRmllbGRzRmlsdGVyUGlwZS5nZXRWYWx1ZShmaWVsZCwgdmFsdWVzKTtcblxuICAgIGNvbnN0IGhhc0NoaWxkcmVuV2l0aFZhbHVlID0gdHlwZS5jb21wbGV4X2ZpZWxkcy5maW5kKGYgPT4ge1xuICAgICAgY29uc3Qgd2lsbEtlZXAgPSBSZWFkRmllbGRzRmlsdGVyUGlwZS5rZWVwRmllbGQoZiwgdmFsdWUsIHRydWUpO1xuICAgICAgcmV0dXJuIHdpbGxLZWVwICYmIFJlYWRGaWVsZHNGaWx0ZXJQaXBlLmV2YWx1YXRlQ29uZGl0aW9uYWxTaG93KGYsIHZhbHVlKS5oaWRkZW4gIT09IHRydWU7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gISFoYXNDaGlsZHJlbldpdGhWYWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGlzVmFsaWRDb2xsZWN0aW9uKGZpZWxkOiBDYXNlRmllbGQsIHZhbHVlcz86IG9iamVjdCk6IGJvb2xlYW4ge1xuICAgIC8vIGlmIGZpZWxkIGlzIGNvbGxlY3Rpb24gYW5kIGl0IGhhcyBjb21wbGV4L2NvbGxlY3Rpb24gY2hpbGQgZmllbGQ7IHBhcmVudCBmaWVsZCBkb2VzbnQgaGF2ZSB2YWx1ZSBkZWZpbmVkXG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGZpZWxkLnZhbHVlKSAmJiB2YWx1ZXMgJiYgdmFsdWVzLmhhc093blByb3BlcnR5KGZpZWxkLmlkKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGNvbnN0IGlzTm90RW1wdHkgPSBBcnJheS5pc0FycmF5KGZpZWxkLnZhbHVlKSAmJiBmaWVsZC52YWx1ZS5sZW5ndGggPiAwO1xuICAgIGlmIChpc05vdEVtcHR5ICYmIGZpZWxkLmZpZWxkX3R5cGUuY29sbGVjdGlvbl9maWVsZF90eXBlLnR5cGUgPT09ICdDb21wbGV4Jykge1xuICAgICAgcmV0dXJuICEhZmllbGQudmFsdWUuZmluZChpdGVtID0+IHtcbiAgICAgICAgY29uc3QgY29tcGxleEZpZWxkID0gcGxhaW5Ub0NsYXNzRnJvbUV4aXN0KG5ldyBDYXNlRmllbGQoKSwge1xuICAgICAgICAgIGlkOiBmaWVsZC5maWVsZF90eXBlLmNvbGxlY3Rpb25fZmllbGRfdHlwZS5pZCxcbiAgICAgICAgICBmaWVsZF90eXBlOiBmaWVsZC5maWVsZF90eXBlLmNvbGxlY3Rpb25fZmllbGRfdHlwZSxcbiAgICAgICAgICB2YWx1ZTogaXRlbS52YWx1ZSxcbiAgICAgICAgICBsYWJlbDogbnVsbCxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBSZWFkRmllbGRzRmlsdGVyUGlwZS5pc1ZhbGlkQ29tcGxleChjb21wbGV4RmllbGQpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBpc05vdEVtcHR5O1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgaXNFbXB0eSh2YWx1ZTogYW55KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIFJlYWRGaWVsZHNGaWx0ZXJQaXBlLkVNUFRZX1ZBTFVFUy5pbmRleE9mKHZhbHVlKSAhPT0gLTFcbiAgICAgIHx8IHZhbHVlLmxlbmd0aCA9PT0gMDtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGlzQ29tcG91bmQoZmllbGQ6IENhc2VGaWVsZCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBSZWFkRmllbGRzRmlsdGVyUGlwZS5ORVNURURfVFlQRVNbZmllbGQuZmllbGRfdHlwZS50eXBlXTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGlzVmFsaWRDb21wb3VuZChmaWVsZDogQ2FzZUZpZWxkLCB2YWx1ZT86IG9iamVjdCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBSZWFkRmllbGRzRmlsdGVyUGlwZS5pc0NvbXBvdW5kKGZpZWxkKVxuICAgICAgJiYgUmVhZEZpZWxkc0ZpbHRlclBpcGUuTkVTVEVEX1RZUEVTW2ZpZWxkLmZpZWxkX3R5cGUudHlwZV0oZmllbGQsIHZhbHVlKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGtlZXBGaWVsZChmaWVsZDogQ2FzZUZpZWxkLCB2YWx1ZT86IG9iamVjdCwgaWdub3JlTGFiZWxzID0gZmFsc2UpOiBib29sZWFuIHtcbiAgICAvLyBXZSBzaG91bGRuJ3QgZGl0Y2ggbGFiZWxzLlxuICAgIGlmICghaWdub3JlTGFiZWxzICYmIGZpZWxkLmZpZWxkX3R5cGUudHlwZSA9PT0gJ0xhYmVsJyAmJiAoZmllbGQubGFiZWwgfHwgJycpLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICAvLyBXZSBhbHNvIHNob3VsZG4ndCBkaXRjaCBmaWVsZHMgdGhhdCB3aWxsIGFsd2F5cyBjb21lIGJhY2sgd2l0aCBhIG51bGwgdmFsdWUuXG4gICAgaWYgKHRoaXMuQUxXQVlTX05VTExfRklFTERTLmluZGV4T2YoZmllbGQuZmllbGRfdHlwZS50eXBlKSAhPT0gLTEpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHZhbHVlID0gdmFsdWUgfHwge307XG5cbiAgICBpZiAoUmVhZEZpZWxkc0ZpbHRlclBpcGUuaXNDb21wb3VuZChmaWVsZCkpIHtcbiAgICAgIHJldHVybiBSZWFkRmllbGRzRmlsdGVyUGlwZS5pc1ZhbGlkQ29tcG91bmQoZmllbGQsIHZhbHVlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gIVJlYWRGaWVsZHNGaWx0ZXJQaXBlLmlzRW1wdHkoZmllbGQudmFsdWUpXG4gICAgICB8fCAhUmVhZEZpZWxkc0ZpbHRlclBpcGUuaXNFbXB0eSh2YWx1ZVtmaWVsZC5pZF0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZ2V0VmFsdWUoZmllbGQ6IENhc2VGaWVsZCwgdmFsdWVzOiBhbnksIGluZGV4PzogbnVtYmVyKTogYW55IHtcbiAgICBpZiAoUmVhZEZpZWxkc0ZpbHRlclBpcGUuaXNFbXB0eShmaWVsZC52YWx1ZSkpIHtcbiAgICAgIGxldCB2YWx1ZTogYW55O1xuICAgICAgaWYgKGluZGV4ID49IDApIHtcbiAgICAgICAgdmFsdWUgPSB2YWx1ZXNbaW5kZXhdLnZhbHVlW2ZpZWxkLmlkXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhbHVlID0gdmFsdWVzW2ZpZWxkLmlkXTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gZmllbGQudmFsdWU7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBldmFsdWF0ZUNvbmRpdGlvbmFsU2hvdyhmaWVsZDogQ2FzZUZpZWxkLCBmb3JtVmFsdWU6IGFueSwgcGF0aD86IHN0cmluZyxcbiAgICBmb3JtR3JvdXBBdmFpbGFibGU/OiBib29sZWFuLCBmaWVsZElkPzogc3RyaW5nKTogQ2FzZUZpZWxkIHtcbiAgICBpZiAoZmllbGQuZGlzcGxheV9jb250ZXh0ID09PSAnSElEREVOJykge1xuICAgICAgZmllbGQuaGlkZGVuID0gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKGZpZWxkLnNob3dfY29uZGl0aW9uKSB7XG4gICAgICBsZXQgY29uZDogU2hvd0NvbmRpdGlvbjtcbiAgICAgIGlmIChmaWVsZElkICYmIGZpZWxkLnNob3dfY29uZGl0aW9uLmluZGV4T2YoYCR7ZmllbGRJZH0uYCkgPiAtMSAmJiAhZm9ybUdyb3VwQXZhaWxhYmxlICYmICEhT2JqZWN0LmtleXMoZm9ybVZhbHVlKS5sZW5ndGgpIHtcbiAgICAgICAgY29uc3Qgc2VhcmNoID0gYCR7ZmllbGRJZH0uYDtcbiAgICAgICAgY29uc3Qgc2VhcmNoUmVnRXhwID0gbmV3IFJlZ0V4cChzZWFyY2gsICdnJyk7XG4gICAgICAgIGNvbnN0IHJlcGxhY2VXaXRoID0gJyc7XG4gICAgICAgIGNvbmQgPSBTaG93Q29uZGl0aW9uLmdldEluc3RhbmNlKGZpZWxkLnNob3dfY29uZGl0aW9uLnJlcGxhY2Uoc2VhcmNoUmVnRXhwLCByZXBsYWNlV2l0aCkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uZCA9IFNob3dDb25kaXRpb24uZ2V0SW5zdGFuY2UoZmllbGQuc2hvd19jb25kaXRpb24pO1xuICAgICAgfVxuICAgICAgZmllbGQuaGlkZGVuID0gIWNvbmQubWF0Y2goZm9ybVZhbHVlLCBwYXRoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZmllbGQuaGlkZGVuID0gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBmaWVsZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaWx0ZXIgb3V0IGZpZWxkcyBoYXZpbmcgbm8gZGF0YSB0byBkaXNwbGF5IGFuZCBoYXJtb25pc2UgZmllbGQgdmFsdWVzIGNvbWluZyBwYXJlbnQncyB2YWx1ZS5cbiAgICovXG4gIHB1YmxpYyB0cmFuc2Zvcm0oXG4gICAgY29tcGxleEZpZWxkOiBDYXNlRmllbGQsIGtlZXBFbXB0eT86IGJvb2xlYW4sIGluZGV4PzogbnVtYmVyLFxuICAgIHNldHVwSGlkZGVuID0gZmFsc2UsIGZvcm1Hcm91cD86IEZvcm1Hcm91cCB8IEFic3RyYWN0Q29udHJvbCwgcGF0aD86IHN0cmluZyk6IENhc2VGaWVsZFtdIHtcbiAgICBpZiAoIWNvbXBsZXhGaWVsZCB8fCAhY29tcGxleEZpZWxkLmZpZWxkX3R5cGUpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBjb25zdCBmaWVsZHMgPSBjb21wbGV4RmllbGQuZmllbGRfdHlwZS5jb21wbGV4X2ZpZWxkcyB8fCBbXTtcbiAgICBjb25zdCB2YWx1ZXMgPSBjb21wbGV4RmllbGQudmFsdWUgfHwge307XG4gICAgbGV0IGNoZWNrQ29uZGl0aW9uYWxTaG93QWdhaW5zdDogYW55ID0gdmFsdWVzO1xuICAgIGxldCBmb3JtR3JvdXBBdmFpbGFibGUgPSBmYWxzZTtcbiAgICBpZiAoZm9ybUdyb3VwKSB7XG4gICAgICBjaGVja0NvbmRpdGlvbmFsU2hvd0FnYWluc3QgPSBmb3JtR3JvdXAudmFsdWU7XG4gICAgICBmb3JtR3JvdXBBdmFpbGFibGUgPSB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBmaWVsZHNcbiAgICAgIC5tYXAoZiA9PiB7XG4gICAgICAgIGNvbnN0IGNsb25lID0gRmllbGRzVXRpbHMuY2xvbmVPYmplY3QoZik7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gUmVhZEZpZWxkc0ZpbHRlclBpcGUuZ2V0VmFsdWUoZiwgdmFsdWVzLCBpbmRleCk7XG4gICAgICAgIGlmICghUmVhZEZpZWxkc0ZpbHRlclBpcGUuaXNFbXB0eSh2YWx1ZSkpIHtcbiAgICAgICAgICBjbG9uZS52YWx1ZSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjbG9uZTtcbiAgICAgIH0pXG4gICAgICAubWFwKGYgPT4ge1xuICAgICAgICBpZiAoIWYuZGlzcGxheV9jb250ZXh0KSB7XG4gICAgICAgICAgZi5kaXNwbGF5X2NvbnRleHQgPSBjb21wbGV4RmllbGQuZGlzcGxheV9jb250ZXh0O1xuICAgICAgICB9XG4gICAgICAgIGlmIChzZXR1cEhpZGRlbikge1xuICAgICAgICAgIFJlYWRGaWVsZHNGaWx0ZXJQaXBlLmV2YWx1YXRlQ29uZGl0aW9uYWxTaG93KGYsIGNoZWNrQ29uZGl0aW9uYWxTaG93QWdhaW5zdCwgcGF0aCwgZm9ybUdyb3VwQXZhaWxhYmxlLCBjb21wbGV4RmllbGQuaWQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmO1xuICAgICAgfSlcbiAgICAgIC5maWx0ZXIoZiA9PiBrZWVwRW1wdHkgfHwgUmVhZEZpZWxkc0ZpbHRlclBpcGUua2VlcEZpZWxkKGYpKTtcbiAgfVxufVxuIl19
|
|
@@ -92,7 +92,7 @@ export class FieldsPurger {
|
|
|
92
92
|
for (const complexSubField of field.field_type.complex_fields) {
|
|
93
93
|
if ((complexSubField.field_type.type === 'Complex' && complexSubField.field_type.complex_fields.length > 0) ||
|
|
94
94
|
!complexSubField.retain_hidden_value) {
|
|
95
|
-
// Check for the existence of the parent
|
|
95
|
+
// Check for the existence of the parent FormGroup corresponding to the Complex field; if it exists, call
|
|
96
96
|
// deleteFieldValue() to delete the sub-field
|
|
97
97
|
const parentFormGroup = form.get('data').controls[field.id];
|
|
98
98
|
if (parentFormGroup) {
|
|
@@ -124,7 +124,7 @@ export class FieldsPurger {
|
|
|
124
124
|
}
|
|
125
125
|
}
|
|
126
126
|
// Recursively delete the sub-field value if retain_hidden_value is false, OR if the sub-field type is
|
|
127
|
-
// Complex and regardless of retain_hidden_value, passing in the parent
|
|
127
|
+
// Complex and regardless of retain_hidden_value, passing in the parent FormGroup
|
|
128
128
|
if (subCaseField &&
|
|
129
129
|
((subCaseField.field_type.type === 'Complex' && subCaseField.field_type.complex_fields.length > 0) ||
|
|
130
130
|
!subCaseField.retain_hidden_value)) {
|
|
@@ -163,7 +163,7 @@ export class FieldsPurger {
|
|
|
163
163
|
* types, this recursive method is called until simple or "base" field types are reached. For `Document` field
|
|
164
164
|
* types, its _sub-field_ `FormControl` values are set to null.
|
|
165
165
|
*
|
|
166
|
-
* @param
|
|
166
|
+
* @param FormGroup The `FormGroup` instance containing the `FormControl` for the specified field
|
|
167
167
|
* @param field The `CaseField` whose value is to be deleted in the backend
|
|
168
168
|
* @param parentField Reference to the parent `CaseField`. Used for checking specifically where a Complex field and
|
|
169
169
|
* its sub-fields have `retain_hidden_value` set to `true`, but the field's parent has it set to `false` or undefined
|
|
@@ -192,7 +192,7 @@ export class FieldsPurger {
|
|
|
192
192
|
(field.retain_hidden_value
|
|
193
193
|
? !complexSubField.retain_hidden_value || (parentField && !parentField.retain_hidden_value)
|
|
194
194
|
: true))) {
|
|
195
|
-
// The fieldControl is cast to a
|
|
195
|
+
// The fieldControl is cast to a FormGroup because a Complex field type uses this as its underlying
|
|
196
196
|
// implementation
|
|
197
197
|
this.deleteFieldValue(fieldControl, complexSubField, field);
|
|
198
198
|
}
|
|
@@ -219,7 +219,7 @@ export class FieldsPurger {
|
|
|
219
219
|
break;
|
|
220
220
|
}
|
|
221
221
|
}
|
|
222
|
-
// Recursively delete the sub-field value, passing in the parent
|
|
222
|
+
// Recursively delete the sub-field value, passing in the parent FormGroup
|
|
223
223
|
const parentFormGroup = fieldControl.at(index).get('value');
|
|
224
224
|
this.deleteFieldValue(parentFormGroup, subCaseField);
|
|
225
225
|
}));
|
|
@@ -234,7 +234,7 @@ export class FieldsPurger {
|
|
|
234
234
|
// the single Document case)
|
|
235
235
|
if (documentFieldValues) {
|
|
236
236
|
documentFieldValues.forEach((fieldValue, index) => Object.keys(fieldValue.value).forEach(subFieldId => {
|
|
237
|
-
// Get the
|
|
237
|
+
// Get the FormGroup containing the FormControl for the sub-field and set its value to null
|
|
238
238
|
fieldControl.at(index).get(`value.${subFieldId}`).setValue(null);
|
|
239
239
|
}));
|
|
240
240
|
}
|
|
@@ -253,8 +253,8 @@ export class FieldsPurger {
|
|
|
253
253
|
}
|
|
254
254
|
break;
|
|
255
255
|
case 'Document':
|
|
256
|
-
// NOTE: The field control (a
|
|
257
|
-
// all existing values of a
|
|
256
|
+
// NOTE: The field control (a FormGroup in this case) cannot just be set to null because Angular checks that
|
|
257
|
+
// all existing values of a FormGroup are present; setting the control's value to null causes a runtime error
|
|
258
258
|
const documentFieldValue = fieldControl.value;
|
|
259
259
|
for (const key in documentFieldValue) {
|
|
260
260
|
if (fieldControl.get(key)) {
|
|
@@ -290,4 +290,4 @@ FieldsPurger.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: FieldsPurge
|
|
|
290
290
|
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(FieldsPurger, [{
|
|
291
291
|
type: Injectable
|
|
292
292
|
}], function () { return [{ type: i1.FieldsUtils }]; }, null); })();
|
|
293
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGRzLnB1cmdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvc2VydmljZXMvZmllbGRzL2ZpZWxkcy5wdXJnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQU0zQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUVBQWlFLENBQUM7QUFJaEcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFFN0MsV0FBVztBQUVYLE1BQU0sT0FBTyxZQUFZO0lBRXZCLFlBQTZCLFdBQXdCO1FBQXhCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO0lBQUksQ0FBQztJQUVuRCxpQkFBaUIsQ0FBQyxJQUFzQixFQUFFLE1BQWMsRUFBRSxZQUE4QixFQUFFLGFBQXFCO1FBQ3BILElBQUksQ0FBQyxxQ0FBcUMsQ0FBQyxhQUFhLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxZQUFZLENBQUMsQ0FBQztRQUN0RixJQUFJLENBQUMsb0NBQW9DLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxZQUFZLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRU8sb0NBQW9DLENBQUMsSUFBc0IsRUFBRSxNQUFjLEVBQUUsWUFBOEI7UUFDakgsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLG9CQUFvQixDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNwRixNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRTtZQUN4QixJQUFJLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLEVBQUUsaUJBQWlCLENBQUMsRUFBRTtnQkFDcEQsTUFBTSxTQUFTLEdBQUcsSUFBSSxhQUFhLENBQUMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxD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LENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQy9CO1NBQ0Y7SUFDSCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxvQkFBb0IsQ0FBQyxLQUFZO1FBQ3RDLE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUN6QixPQUFPLE9BQU8sT0FBTyxLQUFLLFFBQVE7Z0JBQ2hDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUN0RSxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ1gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzt3RUE5U1UsWUFBWTtrRUFBWixZQUFZLFdBQVosWUFBWTt1RkFBWixZQUFZO2NBRHhCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQXJyYXksIEZvcm1Db250cm9sLCBVbnR5cGVkRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBXaXphcmRQYWdlRmllbGQgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2Nhc2UtZWRpdG9yL2RvbWFpbi93aXphcmQtcGFnZS1maWVsZC5tb2RlbCc7XG5pbXBvcnQgeyBXaXphcmRQYWdlIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9jYXNlLWVkaXRvci9kb21haW4vd2l6YXJkLXBhZ2UubW9kZWwnO1xuaW1wb3J0IHsgV2l6YXJkIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9jYXNlLWVkaXRvci9kb21haW4vd2l6YXJkLm1vZGVsJztcbmltcG9ydCB7IFNob3dDb25kaXRpb24gfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL2NvbmRpdGlvbmFsLXNob3cvZG9tYWluL2NvbmRpdGlvbmFsLXNob3cubW9kZWwnO1xuaW1wb3J0IHsgQ2FzZUV2ZW50VHJpZ2dlciB9IGZyb20gJy4uLy4uL2RvbWFpbi9jYXNlLXZpZXcvY2FzZS1ldmVudC10cmlnZ2VyLm1vZGVsJztcbmltcG9ydCB7IENhc2VGaWVsZCB9IGZyb20gJy4uLy4uL2RvbWFpbi9kZWZpbml0aW9uL2Nhc2UtZmllbGQubW9kZWwnO1xuaW1wb3J0IHsgRmllbGRUeXBlRW51bSB9IGZyb20gJy4uLy4uL2RvbWFpbi9kZWZpbml0aW9uL2ZpZWxkLXR5cGUtZW51bS5tb2RlbCc7XG5pbXBvcnQgeyBGaWVsZHNVdGlscyB9IGZyb20gJy4vZmllbGRzLnV0aWxzJztcblxuLy8gQGR5bmFtaWNcbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBGaWVsZHNQdXJnZXIge1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgZmllbGRzVXRpbHM6IEZpZWxkc1V0aWxzKSB7IH1cblxuICBwdWJsaWMgY2xlYXJIaWRkZW5GaWVsZHMoZm9ybTogVW50eXBlZEZvcm1Hcm91cCwgd2l6YXJkOiBXaXphcmQsIGV2ZW50VHJpZ2dlcjogQ2FzZUV2ZW50VHJpZ2dlciwgY3VycmVudFBhZ2VJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5jbGVhckhpZGRlbkZpZWxkRm9yRmllbGRTaG93Q29uZGl0aW9uKGN1cnJlbnRQYWdlSWQsIGZvcm0sIHdpemFyZCwgZXZlbnRUcmlnZ2VyKTtcbiAgICB0aGlzLmNsZWFySGlkZGVuRmllbGRGb3JQYWdlU2hvd0NvbmRpdGlvbihmb3JtLCB3aXphcmQsIGV2ZW50VHJpZ2dlcik7XG4gIH1cblxuICBwcml2YXRlIGNsZWFySGlkZGVuRmllbGRGb3JQYWdlU2hvd0NvbmRpdGlvbihmb3JtOiBVbnR5cGVkRm9ybUdyb3VwLCB3aXphcmQ6IFdpemFyZCwgZXZlbnRUcmlnZ2VyOiBDYXNlRXZlbnRUcmlnZ2VyKTogdm9pZCB7XG4gICAgY29uc3QgY3VycmVudEV2ZW50U3RhdGUgPSB0aGlzLmZpZWxkc1V0aWxzLmdldEN1cnJlbnRFdmVudFN0YXRlKGV2ZW50VHJpZ2dlciwgZm9ybSk7XG4gICAgd2l6YXJkLnBhZ2VzLmZvckVhY2god3AgPT4ge1xuICAgICAgaWYgKHRoaXMuaGFzU2hvd0NvbmRpdGlvblBhZ2Uod3AsIGN1cnJlbnRFdmVudFN0YXRlKSkge1xuICAgICAgICBjb25zdCBjb25kaXRpb24gPSBuZXcgU2hvd0NvbmRpdGlvbih3cC5zaG93X2NvbmRpdGlvbik7XG4gICAgICAgIGlmICh0aGlzLmlzSGlkZGVuKGNvbmRpdGlvbiwgY3VycmVudEV2ZW50U3RhdGUpKSB7XG4gICAgICAgICAgdGhpcy5yZXNldFBhZ2UoZm9ybSwgd3ApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNsZWFySGlkZGVuRmllbGRGb3JGaWVsZFNob3dDb25kaXRpb24oY3VycmVudFBhZ2VJZDogc3RyaW5nLFxuICAgIGZvcm06IFVudHlwZWRGb3JtR3JvdXAsXG4gICAgd2l6YXJkOiBXaXphcmQsXG4gICAgZXZlbnRUcmlnZ2VyOiBDYXNlRXZlbnRUcmlnZ2VyKTogdm9pZCB7XG4gICAgY29uc3QgZm9ybUZpZWxkcyA9IGZvcm0uZ2V0UmF3VmFsdWUoKTtcbiAgICBjb25zdCBjdXJyZW50UGFnZTogV2l6YXJkUGFnZSA9IHdpemFyZC5nZXRQYWdlKGN1cnJlbnRQYWdlSWQsIHRoaXMuZmllbGRzVXRpbHMuYnVpbGRDYW5TaG93UHJlZGljYXRlKGV2ZW50VHJpZ2dlciwgZm9ybSkpO1xuICAgIGN1cnJlbnRQYWdlLndpemFyZF9wYWdlX2ZpZWxkcy5mb3JFYWNoKHdwZiA9PiB7XG4gICAgICBjb25zdCBjYXNlRmllbGQgPSB0aGlzLmZpbmRDYXNlRmllbGRCeVdpemFyZFBhZ2VGaWVsZElkKGN1cnJlbnRQYWdlLCB3cGYpO1xuICAgICAgaWYgKHRoaXMuaGFzU2hvd0NvbmRpdGlvbkZpZWxkKGNhc2VGaWVsZCwgZm9ybUZpZWxkcykpIHtcbiAgICAgICAgY29uc3QgY29uZGl0aW9uID0gbmV3IFNob3dDb25kaXRpb24oY2FzZUZpZWxkLnNob3dfY29uZGl0aW9uKTtcbiAgICAgICAgaWYgKHRoaXMuaXNIaWRkZW4oY29uZGl0aW9uLCBmb3JtRmllbGRzLmRhdGEpICYmICEodGhpcy5pc1JlYWRvbmx5KGNhc2VGaWVsZCkpKSB7XG4gICAgICAgICAgdGhpcy5yZXNldEZpZWxkKGZvcm0sIGNhc2VGaWVsZCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMucmV0YWluSGlkZGVuVmFsdWVCeUZpZWxkVHlwZShjYXNlRmllbGQsIGZvcm0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSByZXRhaW5IaWRkZW5WYWx1ZUJ5RmllbGRUeXBlKGZpZWxkOiBDYXNlRmllbGQsIGZvcm06IGFueSk6IHZvaWQge1xuICAgIC8vIHNvIGZhciBvbmx5IGFwcGxpZXMgdG8gdGhlIG5ldyBmaWVsZCB0eXBlIE9yZ2FuaXNhdGlvblBvbGljeSB3aGljaCBuZWVkcyB0byByZXRhaW4gdGhlIGRlZmF1bHQgY2FzZSByb2xlIHZhbHVlXG4gICAgLy8gZm9yIG90aGVyIGNhc2UgZmllbGRzIHRoZXJlIHNob3VsZCBiZSBubyBzaWRlIGVmZmVjdHNcbiAgICBpZiAoZmllbGQgJiYgZmllbGQuZmllbGRfdHlwZSAmJiBmaWVsZC5maWVsZF90eXBlLmlkID09PSAnT3JnYW5pc2F0aW9uUG9saWN5Jykge1xuICAgICAgLy8gPGJ1YmJsZV93cmFwPlxuICAgICAgLy8gRG9pbmcgc29tZSBudWxsIGNoZWNraW5nIHRvIHN0b3AgaXQgZnJvbSBmYWxsaW5nIG92ZXIuXG4gICAgICBjb25zdCBkYXRhOiBVbnR5cGVkRm9ybUdyb3VwID0gZm9ybS5nZXQoJ2RhdGEnKSBhcyBVbnR5cGVkRm9ybUdyb3VwO1xuICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgY29uc3QgZmllbGRHcm91cDogVW50eXBlZEZvcm1Hcm91cCA9IGRhdGEuY29udHJvbHNbZmllbGQuaWRdIGFzIFVudHlwZWRGb3JtR3JvdXA7XG4gICAgICAgIGlmIChmaWVsZEdyb3VwKSB7XG4gICAgICAgICAgY29uc3QgY2FzZVJvbGVGb3JtQ29udHJvbDogRm9ybUNvbnRyb2wgPSBmaWVsZEdyb3VwLmdldCgnT3JnUG9saWN5Q2FzZUFzc2lnbmVkUm9sZScpIGFzIEZvcm1Db250cm9sO1xuICAgICAgICAgIGlmIChjYXNlUm9sZUZvcm1Db250cm9sKSB7XG4gICAgICAgICAgICBjYXNlUm9sZUZvcm1Db250cm9sLmVuYWJsZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gPC9idWJibGVfd3JhcD5cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGlzSGlkZGVuKGNvbmRpdGlvbjogU2hvd0NvbmRpdGlvbiwgZm9ybUZpZWxkczogYW55KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICFjb25kaXRpb24ubWF0Y2goZm9ybUZpZWxkcyk7XG4gIH1cblxuICBwcml2YXRlIGZpbmRDYXNlRmllbGRCeVdpemFyZFBhZ2VGaWVsZElkKGN1cnJlbnRQYWdlOiBXaXphcmRQYWdlLCB3aXphcmRQYWdlRmllbGQ6IFdpemFyZFBhZ2VGaWVsZCk6IENhc2VGaWVsZCB7XG4gICAgcmV0dXJuIGN1cnJlbnRQYWdlLmNhc2VfZmllbGRzLmZpbmQoY2YgPT4gY2YuaWQgPT09IHdpemFyZFBhZ2VGaWVsZC5jYXNlX2ZpZWxkX2lkKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFzU2hvd0NvbmRpdGlvblBhZ2Uod2l6YXJkUGFnZTogV2l6YXJkUGFnZSwgZm9ybUZpZWxkczogYW55KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHdpemFyZFBhZ2Uuc2hvd19jb25kaXRpb24gJiYgZm9ybUZpZWxkc1t0aGlzLmdldFNob3dDb25kaXRpb25LZXkod2l6YXJkUGFnZS5zaG93X2NvbmRpdGlvbildO1xuICB9XG5cbiAgcHJpdmF0ZSBoYXNTaG93Q29uZGl0aW9uRmllbGQoY2FzZUZpZWxkOiBDYXNlRmllbGQsIGZvcm1GaWVsZHM6IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBjYXNlRmllbGQuc2hvd19jb25kaXRpb24gJiYgZm9ybUZpZWxkcy5kYXRhW3RoaXMuZ2V0U2hvd0NvbmRpdGlvbktleShjYXNlRmllbGQuc2hvd19jb25kaXRpb24pXTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U2hvd0NvbmRpdGlvbktleShzaG93Q29uZGl0aW9uOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIC8vIE5lZWQgdG8gYWxsb3cgZm9yIG5lZ2F0ZWQgY29uZGl0aW9ucywgaS5lLiAhPSwgYXMgd2VsbCBhcyByZWd1bGFyIG9uZXMgKD0pXG4gICAgLy8gQWxzbyBuZWVkIHRvIGFsbG93IGZvciBjb25kaXRpb25zIHNwZWNpZmllZCB1c2luZyB0aGUgXCJDT05UQUlOU1wiIGtleXdvcmRcbiAgICByZXR1cm4gc2hvd0NvbmRpdGlvbi5zcGxpdCgvIT18PXxDT05UQUlOUy8pWzBdO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNldEZpZWxkKGZvcm06IFVudHlwZWRGb3JtR3JvdXAsIGZpZWxkOiBDYXNlRmllbGQpOiB2b2lkIHtcbiAgICAvKipcbiAgICAgKiBJZiB0aGUgaGlkZGVuIGZpZWxkJ3MgdmFsdWUgaXMgdG8gYmUgcmV0YWluZWQsIGRvIG5vdGhpbmcgKGV4Y2VwdCBpZiBpdCBpcyBhIENvbXBsZXggdHlwZSBvciBjb2xsZWN0aW9uIG9mXG4gICAgICogQ29tcGxleCB0eXBlcykuIFRoaXMgaXMgYSBjaGFuZ2UgdG8gdGhlIHByZXZpb3VzIGJlaGF2aW91ciAod2hpY2ggdXNlZCB0byBjbGVhciB0aGUgZmllbGQgdmFsdWUgYnV0IHJlbW92ZSBpdFxuICAgICAqIGZyb20gc3VibWlzc2lvbiBhcyBhbiB1cGRhdGUgdG8gdGhlIGJhY2stZW5kKS4gVGhlIG5ldyBiZWhhdmlvdXIgaXMgdG8gbGVhdmUgdGhlIGZpZWxkIGFzIGlzLCBzbyBpZiB0aGUgZmllbGRcbiAgICAgKiBpcyBoaWRkZW4gYnV0IHRoZW4gdW4taGlkZGVuIGJlZm9yZSBmb3JtIHN1Ym1pc3Npb24sIGFueSBwcmV2aW91c2x5IGVudGVyZWQgdmFsdWUgaXMgcmV0YWluZWQuXG4gICAgICpcbiAgICAgKiBGb3IgQ29tcGxleCBmaWVsZCB0eXBlcywgYW4gYWRkaXRpb25hbCBjaGVjayBvZiBzdWItZmllbGRzIGlzIHJlcXVpcmVkLiBUaGUgc2FtZSBhcHBsaWVzIHRvIGEgY29sbGVjdGlvbiBvZlxuICAgICAqIENvbXBsZXggdHlwZXMuXG4gICAgICovXG4gICAgaWYgKGZpZWxkLnJldGFpbl9oaWRkZW5fdmFsdWUpIHtcbiAgICAgIGNvbnN0IGZpZWxkVHlwZTogRmllbGRUeXBlRW51bSA9IGZpZWxkLmZpZWxkX3R5cGUudHlwZTtcbiAgICAgIC8vIElmIHRoZSBmaWVsZCBpcyBhIENvbXBsZXggdHlwZSwgbG9vcCBvdmVyIGl0cyBzdWItZmllbGRzIGFuZCBjYWxsIGRlbGV0ZUZpZWxkVmFsdWUoKSBmb3IgYW55IHN1Yi1maWVsZHNcbiAgICAgIC8vIHdoZXJlIHJldGFpbl9oaWRkZW5fdmFsdWUgaXMgZmFsc2UsIE9SIGZvciBhbnkgQ29tcGxleCBzdWItZmllbGRzICpyZWdhcmRsZXNzIG9mIHRoZWlyIHJldGFpbl9oaWRkZW5fdmFsdWUqXG4gICAgICAvLyAoaW4gb3JkZXIgdG8gaW5zcGVjdCB0aGUgc3ViLWZpZWxkcyBvZiBhIENvbXBsZXggdHlwZSB3aXRoaW4gYW5vdGhlciBDb21wbGV4IHR5cGUpXG4gICAgICBpZiAoZmllbGRUeXBlID09PSAnQ29tcGxleCcgJiYgZmllbGQuZmllbGRfdHlwZS5jb21wbGV4X2ZpZWxkcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGZvciAoY29uc3QgY29tcGxleFN1YkZpZWxkIG9mIGZpZWxkLmZpZWxkX3R5cGUuY29tcGxleF9maWVsZHMpIHtcbiAgICAgICAgICBpZiAoKGNvbXBsZXhTdWJGaWVsZC5maWVsZF90eXBlLnR5cGUgPT09ICdDb21wbGV4JyAmJiBjb21wbGV4U3ViRmllbGQuZmllbGRfdHlwZS5jb21wbGV4X2ZpZWxkcy5sZW5ndGggPiAwKSB8fFxuICAgICAgICAgICAgIWNvbXBsZXhTdWJGaWVsZC5yZXRhaW5faGlkZGVuX3ZhbHVlKSB7XG4gICAgICAgICAgICAvLyBDaGVjayBmb3IgdGhlIGV4aXN0ZW5jZSBvZiB0aGUgcGFyZW50IFVudHlwZWRGb3JtR3JvdXAgY29ycmVzcG9uZGluZyB0byB0aGUgQ29tcGxleCBmaWVsZDsgaWYgaXQgZXhpc3RzLCBjYWxsXG4gICAgICAgICAgICAvLyBkZWxldGVGaWVsZFZhbHVlKCkgdG8gZGVsZXRlIHRoZSBzdWItZmllbGRcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudEZvcm1Hcm91cCA9IChmb3JtLmdldCgnZGF0YScpIGFzIFVudHlwZWRGb3JtR3JvdXApLmNvbnRyb2xzW2ZpZWxkLmlkXSBhcyBVbnR5cGVkRm9ybUdyb3VwO1xuICAgICAgICAgICAgaWYgKHBhcmVudEZvcm1Hcm91cCkge1xuICAgICAgICAgICAgICB0aGlzLmRlbGV0ZUZpZWxkVmFsdWUocGFyZW50Rm9ybUdyb3VwLCBjb21wbGV4U3ViRmllbGQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChmaWVsZFR5cGUgPT09ICdDb2xsZWN0aW9uJyAmJiBmaWVsZC5maWVsZF90eXBlLmNvbGxlY3Rpb25fZmllbGRfdHlwZS50eXBlID09PSAnQ29tcGxleCcgJiZcbiAgICAgICAgZmllbGQuZmllbGRfdHlwZS5jb2xsZWN0aW9uX2ZpZWxkX3R5cGUuY29tcGxleF9maWVsZHMubGVuZ3RoID4gMCkge1xuICAgICAgICAvLyBJZiB0aGUgZmllbGQgaXMgYSBjb2xsZWN0aW9uIG9mIENvbXBsZXggdHlwZXMsIGxvb3AgdGhyb3VnaCBlYWNoIG9uZSBhbmQgY2FsbCBkZWxldGVGaWVsZFZhbHVlKCkgZm9yIGFueVxuICAgICAgICAvLyBzdWItZmllbGRzIHdoZXJlIHJldGFpbl9oaWRkZW5fdmFsdWUgaXMgZmFsc2UsIE9SIGZvciBhbnkgQ29tcGxleCBzdWItZmllbGRzICpyZWdhcmRsZXNzIG9mIHRoZWlyXG4gICAgICAgIC8vIHJldGFpbl9oaWRkZW5fdmFsdWUqIChpbiBvcmRlciB0byBpbnNwZWN0IHRoZSBzdWItZmllbGRzIG9mIGEgQ29tcGxleCB0eXBlIHdpdGhpbiBhbm90aGVyIENvbXBsZXggdHlwZSlcblxuICAgICAgICAvLyBHZXQgdGhlIGFycmF5IG9mIGZpZWxkIGNvbnRyb2xzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIENvbXBsZXggZmllbGQgdmFsdWVzXG4gICAgICAgIGNvbnN0IGZpZWxkQ29udHJvbHMgPSAoZm9ybS5nZXQoJ2RhdGEnKSBhcyBVbnR5cGVkRm9ybUdyb3VwKS5jb250cm9sc1tmaWVsZC5pZF0gYXMgRm9ybUFycmF5O1xuXG4gICAgICAgIGlmIChmaWVsZENvbnRyb2xzKSB7XG4gICAgICAgICAgLy8gR2V0IHRoZSBhcnJheSBvZiBDb21wbGV4IGZpZWxkIHZhbHVlc1xuICAgICAgICAgIGNvbnN0IGNvbXBsZXhGaWVsZFZhbHVlcyA9IGZpZWxkQ29udHJvbHMudmFsdWUgYXMgYW55W107XG5cbiAgICAgICAgICAvLyBGb3IgZWFjaCBDb21wbGV4IGZpZWxkIHZhbHVlLCBnZXQgdGhlIElEIG9mIGVhY2ggc3ViLWZpZWxkIHdpdGhpbiBpdCBhbmQgdXNlIGFzIGEga2V5IHRvIGZpbmQgdGhlXG4gICAgICAgICAgLy8gY29ycmVzcG9uZGluZyBzdWItQ2FzZUZpZWxkICh3aGljaCBjb250YWlucyB0aGUgZmllbGQgdHlwZSBpbmZvcm1hdGlvbilcbiAgICAgICAgICBpZiAoY29tcGxleEZpZWxkVmFsdWVzKSB7XG4gICAgICAgICAgICBjb21wbGV4RmllbGRWYWx1ZXMuZm9yRWFjaCgoZmllbGRWYWx1ZSwgaW5kZXgpID0+IE9iamVjdC5rZXlzKGZpZWxkVmFsdWUudmFsdWUpLmZvckVhY2goc3ViRmllbGRJZCA9PiB7XG4gICAgICAgICAgICAgIC8vIEZpbmQgdGhlIHN1Yi1DYXNlRmllbGQgY29ycmVzcG9uZGluZyB0byB0aGUgc3ViLWZpZWxkIElEXG4gICAgICAgICAgICAgIGxldCBzdWJDYXNlRmllbGQ6IENhc2VGaWVsZDtcbiAgICAgICAgICAgICAgZm9yIChjb25zdCBjYXNlRmllbGQgb2YgZmllbGQuZmllbGRfdHlwZS5jb2xsZWN0aW9uX2ZpZWxkX3R5cGUuY29tcGxleF9maWVsZHMpIHtcbiAgICAgICAgICAgICAgICBpZiAoY2FzZUZpZWxkLmlkID09PSBzdWJGaWVsZElkKSB7XG4gICAgICAgICAgICAgICAgICBzdWJDYXNlRmllbGQgPSBjYXNlRmllbGQ7XG4gICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAvLyBSZWN1cnNpdmVseSBkZWxldGUgdGhlIHN1Yi1maWVsZCB2YWx1ZSBpZiByZXRhaW5faGlkZGVuX3ZhbHVlIGlzIGZhbHNlLCBPUiBpZiB0aGUgc3ViLWZpZWxkIHR5cGUgaXNcbiAgICAgICAgICAgICAgLy8gQ29tcGxleCBhbmQgcmVnYXJkbGVzcyBvZiByZXRhaW5faGlkZGVuX3ZhbHVlLCBwYXNzaW5nIGluIHRoZSBwYXJlbnQgVW50eXBlZEZvcm1Hcm91cFxuICAgICAgICAgICAgICBpZiAoc3ViQ2FzZUZpZWxkICYmXG4gICAgICAgICAgICAgICAgKChzdWJDYXNlRmllbGQuZmllbGRfdHlwZS50eXBlID09PSAnQ29tcGxleCcgJiYgc3ViQ2FzZUZpZWxkLmZpZWxkX3R5cGUuY29tcGxleF9maWVsZHMubGVuZ3RoID4gMCkgfHxcbiAgICAgICAgICAgICAgICAgICFzdWJDYXNlRmllbGQucmV0YWluX2hpZGRlbl92YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXJlbnRGb3JtR3JvdXA6IFVudHlwZWRGb3JtR3JvdXAgPSBmaWVsZENvbnRyb2xzLmF0KGluZGV4KS5nZXQoJ3ZhbHVlJykgYXMgVW50eXBlZEZvcm1Hcm91cDtcbiAgICAgICAgICAgICAgICB0aGlzLmRlbGV0ZUZpZWxkVmFsdWUocGFyZW50Rm9ybUdyb3VwLCBzdWJDYXNlRmllbGQpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIERlbGV0ZSB0aGUgZmllbGQgdmFsdWVcbiAgICAgIHRoaXMuZGVsZXRlRmllbGRWYWx1ZShmb3JtLmdldCgnZGF0YScpIGFzIFVudHlwZWRGb3JtR3JvdXAsIGZpZWxkKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlc2V0UGFnZShmb3JtOiBVbnR5cGVkRm9ybUdyb3VwLCB3aXphcmRQYWdlOiBXaXphcmRQYWdlKTogdm9pZCB7XG4gICAgd2l6YXJkUGFnZS53aXphcmRfcGFnZV9maWVsZHMuZm9yRWFjaCh3cGYgPT4ge1xuICAgICAgY29uc3QgY2FzZUZpZWxkID0gdGhpcy5maW5kQ2FzZUZpZWxkQnlXaXphcmRQYWdlRmllbGRJZCh3aXphcmRQYWdlLCB3cGYpO1xuICAgICAgdGhpcy5yZXNldEZpZWxkKGZvcm0sIGNhc2VGaWVsZCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldFR5cGUoZWxlbTogYW55KTogc3RyaW5nIHtcbiAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGVsZW0pLnNsaWNlKDgsIC0xKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNPYmplY3QoZWxlbTogYW55KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0VHlwZShlbGVtKSA9PT0gJ09iamVjdCc7XG4gIH1cblxuICAvLyBUT0RPOiBjYWxsIGlzUmVhZE9ubHkgb24gQ2FzZUZpZWxkcyBvbmNlIHdlIG1ha2UgaXQgYXZhaWxhYmxlXG4gIHByaXZhdGUgaXNSZWFkb25seShjYXNlRmllbGQ6IENhc2VGaWVsZCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBjYXNlRmllbGQuZGlzcGxheV9jb250ZXh0LnRvVXBwZXJDYXNlKCkgPT09ICdSRUFET05MWSc7XG4gIH1cblxuICAvKipcbiAgICogRGVsZXRlcyBhIGZpZWxkIHZhbHVlIGJ5IHNldHRpbmcgdGhlIHZhbHVlIG9mIHRoZSBjb3JyZXNwb25kaW5nIHtAbGluayBGb3JtQ29udHJvbH0gdG8gbnVsbCAob3IgYW4gZW1wdHkgYXJyYXlcbiAgICogaWYgdGhlIGZpZWxkIHR5cGUgaXMgYENvbGxlY3Rpb25gKSwgZXhjZXB0IHdoZW4gdGhlIGZpZWxkIHR5cGUgaXMgYENvbXBsZXhgIG9yIGBEb2N1bWVudGAuIEZvciBgQ29tcGxleGAgZmllbGRcbiAgICogdHlwZXMsIHRoaXMgcmVjdXJzaXZlIG1ldGhvZCBpcyBjYWxsZWQgdW50aWwgc2ltcGxlIG9yIFwiYmFzZVwiIGZpZWxkIHR5cGVzIGFyZSByZWFjaGVkLiBGb3IgYERvY3VtZW50YCBmaWVsZFxuICAgKiB0eXBlcywgaXRzIF9zdWItZmllbGRfIGBGb3JtQ29udHJvbGAgdmFsdWVzIGFyZSBzZXQgdG8gbnVsbC5cbiAgICpcbiAgICogQHBhcmFtIFVudHlwZWRGb3JtR3JvdXAgVGhlIGBVbnR5cGVkRm9ybUdyb3VwYCBpbnN0YW5jZSBjb250YWluaW5nIHRoZSBgRm9ybUNvbnRyb2xgIGZvciB0aGUgc3BlY2lmaWVkIGZpZWxkXG4gICAqIEBwYXJhbSBmaWVsZCBUaGUgYENhc2VGaWVsZGAgd2hvc2UgdmFsdWUgaXMgdG8gYmUgZGVsZXRlZCBpbiB0aGUgYmFja2VuZFxuICAgKiBAcGFyYW0gcGFyZW50RmllbGQgUmVmZXJlbmNlIHRvIHRoZSBwYXJlbnQgYENhc2VGaWVsZGAuIFVzZWQgZm9yIGNoZWNraW5nIHNwZWNpZmljYWxseSB3aGVyZSBhIENvbXBsZXggZmllbGQgYW5kXG4gICAqIGl0cyBzdWItZmllbGRzIGhhdmUgYHJldGFpbl9oaWRkZW5fdmFsdWVgIHNldCB0byBgdHJ1ZWAsIGJ1dCB0aGUgZmllbGQncyBwYXJlbnQgaGFzIGl0IHNldCB0byBgZmFsc2VgIG9yIHVuZGVmaW5lZFxuICAgKi9cbiAgcHVibGljIGRlbGV0ZUZpZWxkVmFsdWUoZm9ybUdyb3VwOiBVbnR5cGVkRm9ybUdyb3VwLCBmaWVsZDogQ2FzZUZpZWxkLCBwYXJlbnRGaWVsZD86IENhc2VGaWVsZCk6IHZvaWQge1xuICAgIGNvbnN0IGZpZWxkVHlwZTogRmllbGRUeXBlRW51bSA9IGZpZWxkLmZpZWxkX3R5cGUudHlwZTtcbiAgICBjb25zdCBmaWVsZENvbnRyb2wgPSBmb3JtR3JvdXAuZ2V0KGZpZWxkLmlkKTtcblxuICAgIGlmIChmaWVsZENvbnRyb2wpIHtcbiAgICAgIHN3aXRjaCAoZmllbGRUeXBlKSB7XG4gICAgICAgIGNhc2UgJ0NvbXBsZXgnOlxuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIElmIHRoZSBmaWVsZCBpcyBhIENvbXBsZXggdHlwZSwgbG9vcCBvdmVyIGl0cyBzdWItZmllbGRzIGFuZCBjYWxsIGRlbGV0ZUZpZWxkVmFsdWUoKSBmb3I6XG4gICAgICAgICAgICpcbiAgICAgICAgICAgKiAqIEFueSBzdWItZmllbGRzIHdoZXJlIHJldGFpbl9oaWRkZW5fdmFsdWUgaXMgZmFsc2UvdW5kZWZpbmVkLCBpZiB0aGUgcGFyZW50IGZpZWxkIGhhc1xuICAgICAgICAgICAqIHJldGFpbl9oaWRkZW5fdmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAqICogQUxMIHN1Yi1maWVsZHMgaWYgdGhlIHBhcmVudCBmaWVsZCBoYXMgcmV0YWluX2hpZGRlbl92YWx1ZSA9IHRydWUgQlVUIGl0cyBfb3duXyBwYXJlbnQgaGFzXG4gICAgICAgICAgICogcmV0YWluX2hpZGRlbl92YWx1ZSA9IGZhbHNlL3VuZGVmaW5lZCAodGh1cyBvdmVycmlkaW5nIGFueXRoaW5nIGVsc2UpO1xuICAgICAgICAgICAqICogQUxMIHN1Yi1maWVsZHMgaWYgdGhlIHBhcmVudCBmaWVsZCBoYXMgcmV0YWluX2hpZGRlbl92YWx1ZSA9IGZhbHNlL3VuZGVmaW5lZDtcbiAgICAgICAgICAgKiAqIEFueSBDb21wbGV4IHN1Yi1maWVsZHMgKnJlZ2FyZGxlc3Mgb2YgdGhlaXIgcmV0YWluX2hpZGRlbl92YWx1ZSogKGluIG9yZGVyIHRvIGluc3BlY3QgdGhlIHN1Yi1maWVsZHNcbiAgICAgICAgICAgKiBvZiBhIENvbXBsZXggdHlwZSB3aXRoaW4gYW5vdGhlciBDb21wbGV4IHR5cGUpXG4gICAgICAgICAgICovXG4gICAgICAgICAgaWYgKGZpZWxkLmZpZWxkX3R5cGUuY29tcGxleF9maWVsZHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBjb21wbGV4U3ViRmllbGQgb2YgZmllbGQuZmllbGRfdHlwZS5jb21wbGV4X2ZpZWxkcykge1xuICAgICAgICAgICAgICBpZiAoKGNvbXBsZXhTdWJGaWVsZC5maWVsZF90eXBlLnR5cGUgPT09ICdDb21wbGV4JyAmJiBjb21wbGV4U3ViRmllbGQuZmllbGRfdHlwZS5jb21wbGV4X2ZpZWxkcy5sZW5ndGggPiAwKSB8fFxuICAgICAgICAgICAgICAgIChjb21wbGV4U3ViRmllbGQuZmllbGRfdHlwZS50eXBlICE9PSAnQ29tcGxleCcgJiZcbiAgICAgICAgICAgICAgICAgIChmaWVsZC5yZXRhaW5faGlkZGVuX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgID8gIWNvbXBsZXhTdWJGaWVsZC5yZXRhaW5faGlkZGVuX3ZhbHVlIHx8IChwYXJlbnRGaWVsZCAmJiAhcGFyZW50RmllbGQucmV0YWluX2hpZGRlbl92YWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgOiB0cnVlKSkpIHtcbiAgICAgICAgICAgICAgICAvLyBUaGUgZmllbGRDb250cm9sIGlzIGNhc3QgdG8gYSBVbnR5cGVkRm9ybUdyb3VwIGJlY2F1c2UgYSBDb21wbGV4IGZpZWxkIHR5cGUgdXNlcyB0aGlzIGFzIGl0cyB1bmRlcmx5aW5nXG4gICAgICAgICAgICAgICAgLy8gaW1wbGVtZW50YXRpb25cbiAgICAgICAgICAgICAgICB0aGlzLmRlbGV0ZUZpZWxkVmFsdWUoZmllbGRDb250cm9sIGFzIFVudHlwZWRGb3JtR3JvdXAsIGNvbXBsZXhTdWJGaWVsZCwgZmllbGQpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdDb2xsZWN0aW9uJzpcbiAgICAgICAgICAvLyBJZiBpdCBpcyBhIGNvbGxlY3Rpb24gb2YgQ29tcGxleCB0eXBlcywgbG9vcCB0aHJvdWdoIGVhY2ggb25lOyBlbHNlIGZhbGwgdGhyb3VnaCB0byBiZSBoYW5kbGVkIGFzIGFcbiAgICAgICAgICAvLyBjb2xsZWN0aW9uIG9mIHNpbXBsZSB0eXBlcyAoaW4gdGhlIHNhbWUgd2F5IGFzIE11bHRpU2VsZWN0TGlzdCksIHVubGVzcyBpdCdzIGEgY29sbGVjdGlvbiBvZiBEb2N1bWVudFxuICAgICAgICAgIC8vIHR5cGVzLCB3aGljaCByZXF1aXJlcyBkaWZmZXJlbnQgaGFuZGxpbmdcbiAgICAgICAgICBjb25zdCBjb2xsZWN0aW9uRmllbGRUeXBlID0gZmllbGQuZmllbGRfdHlwZS5jb2xsZWN0aW9uX2ZpZWxkX3R5cGU7XG4gICAgICAgICAgaWYgKGNvbGxlY3Rpb25GaWVsZFR5cGUudHlwZSA9PT0gJ0NvbXBsZXgnICYmIGNvbGxlY3Rpb25GaWVsZFR5cGUuY29tcGxleF9maWVsZHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgLy8gR2V0IHRoZSBhcnJheSBvZiBDb21wbGV4IGZpZWxkIHZhbHVlc1xuICAgICAgICAgICAgY29uc3QgY29tcGxleEZpZWxkVmFsdWVzID0gZmllbGRDb250cm9sLnZhbHVlIGFzIGFueVtdO1xuXG4gICAgICAgICAgICAvLyBGb3IgZWFjaCBDb21wbGV4IGZpZWxkIHZhbHVlLCBnZXQgdGhlIElEIG9mIGVhY2ggc3ViLWZpZWxkIHdpdGhpbiBpdCBhbmQgdXNlIGFzIGEga2V5IHRvIGZpbmQgdGhlXG4gICAgICAgICAgICAvLyBjb3JyZXNwb25kaW5nIHN1Yi1DYXNlRmllbGQgKHdoaWNoIGNvbnRhaW5zIHRoZSBmaWVsZCB0eXBlIGluZm9ybWF0aW9uKVxuICAgICAgICAgICAgaWYgKGNvbXBsZXhGaWVsZFZhbHVlcykge1xuICAgICAgICAgICAgICBjb21wbGV4RmllbGRWYWx1ZXMuZm9yRWFjaCgoZmllbGRWYWx1ZSwgaW5kZXgpID0+IE9iamVjdC5rZXlzKGZpZWxkVmFsdWUudmFsdWUpLmZvckVhY2goc3ViRmllbGRJZCA9PiB7XG4gICAgICAgICAgICAgICAgLy8gRmluZCB0aGUgc3ViLUNhc2VGaWVsZCBjb3JyZXNwb25kaW5nIHRvIHRoZSBzdWItZmllbGQgSURcbiAgICAgICAgICAgICAgICBsZXQgc3ViQ2FzZUZpZWxkOiBDYXNlRmllbGQ7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBjYXNlRmllbGQgb2YgY29sbGVjdGlvbkZpZWxkVHlwZS5jb21wbGV4X2ZpZWxkcykge1xuICAgICAgICAgICAgICAgICAgaWYgKGNhc2VGaWVsZC5pZCA9PT0gc3ViRmllbGRJZCkge1xuICAgICAgICAgICAgICAgICAgICBzdWJDYXNlRmllbGQgPSBjYXNlRmllbGQ7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vIFJlY3Vyc2l2ZWx5IGRlbGV0ZSB0aGUgc3ViLWZpZWxkIHZhbHVlLCBwYXNzaW5nIGluIHRoZSBwYXJlbnQgVW50eXBlZEZvcm1Hcm91cFxuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudEZvcm1Hcm91cDogVW50eXBlZEZvcm1Hcm91cCA9IChmaWVsZENvbnRyb2wgYXMgRm9ybUFycmF5KS5hdChpbmRleCkuZ2V0KCd2YWx1ZScpIGFzIFVudHlwZWRGb3JtR3JvdXA7XG4gICAgICAgICAgICAgICAgdGhpcy5kZWxldGVGaWVsZFZhbHVlKHBhcmVudEZvcm1Hcm91cCwgc3ViQ2FzZUZpZWxkKTtcbiAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfSBlbHNlIGlmIChjb2xsZWN0aW9uRmllbGRUeXBlLnR5cGUgPT09ICdEb2N1bWVudCcpIHtcbiAgICAgICAgICAgIC8vIEdldCB0aGUgYXJyYXkgb2YgRG9jdW1lbnQgZmllbGQgdmFsdWVzXG4gICAgICAgICAgICBjb25zdCBkb2N1bWVudEZpZWxkVmFsdWVzID0gZmllbGRDb250cm9sLnZhbHVlIGFzIGFueVtdO1xuXG4gICAgICAgICAgICAvLyBGb3IgZWFjaCBEb2N1bWVudCBmaWVsZCB2YWx1ZSwgc2V0IGFsbCBpdHMgcHJvcGVydHkgdmFsdWVzIHRvIG51bGwgKHRoaXMgaXMgbm90IGFjY2VwdGVkIGJ5IHRoZVxuICAgICAgICAgICAgLy8gYmFjay1lbmQgYnV0IHdpbGwgYmUgaGFuZGxlZCBieSBzYW5pdGlzZU9iamVjdCgpIGluIEZvcm1WYWx1ZVNlcnZpY2UgYmVmb3JlIHNlbmRpbmcgLSBzZWUgYmVsb3cgZm9yXG4gICAgICAgICAgICAvLyB0aGUgc2luZ2xlIERvY3VtZW50IGNhc2UpXG4gICAgICAgICAgICBpZiAoZG9jdW1lbnRGaWVsZFZhbHVlcykge1xuICAgICAgICAgICAgICBkb2N1bWVudEZpZWxkVmFsdWVzLmZvckVhY2goKGZpZWxkVmFsdWUsIGluZGV4KSA9PiBPYmplY3Qua2V5cyhmaWVsZFZhbHVlLnZhbHVlKS5mb3JFYWNoKHN1YkZpZWxkSWQgPT4ge1xuICAgICAgICAgICAgICAgIC8vIEdldCB0aGUgVW50eXBlZEZvcm1Hcm91cCBjb250YWluaW5nIHRoZSBGb3JtQ29udHJvbCBmb3IgdGhlIHN1Yi1maWVsZCBhbmQgc2V0IGl0cyB2YWx1ZSB0byBudWxsXG4gICAgICAgICAgICAgICAgKGZpZWxkQ29udHJvbCBhcyBGb3JtQXJyYXkpLmF0KGluZGV4KS5nZXQoYHZhbHVlLiR7c3ViRmllbGRJZH1gKS5zZXRWYWx1ZShudWxsKTtcbiAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAvLyBPbWl0dGVkIFwiYnJlYWtcIiBpcyBpbnRlbnRpb25hbCBiZWNhdXNlIGEgY29sbGVjdGlvbiBzaG91bGQgYmUgaGFuZGxlZCBhcyBwZXIgTXVsdGlTZWxlY3RMaXN0IGlmIGl0IGlzXG4gICAgICAgIC8vIG5vdCBhIGNvbGxlY3Rpb24gb2YgQ29tcGxleCB0eXBlc1xuICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLXN3aXRjaC1jYXNlLWZhbGwtdGhyb3VnaFxuICAgICAgICBjYXNlICdNdWx0aVNlbGVjdExpc3QnOlxuICAgICAgICAgIC8vIEZpZWxkIGNvbnRyb2wgc2hvdWxkIGJlIGEgRm9ybUFycmF5LCBzbyBtYXAgZWFjaCBvZiBpdHMgdmFsdWVzIHRvIG51bGxcbiAgICAgICAgICAvLyBOT1RFOiBUaGUgRm9ybUFycmF5IGNhbm5vdCBqdXN0IGJlIHNldCB0byBhbiBlbXB0eSBhcnJheSBiZWNhdXNlIEFuZ3VsYXIgY2hlY2tzIHRoYXQgYWxsIGV4aXN0aW5nIHZhbHVlc1xuICAgICAgICAgIC8vIG9mIGEgRm9ybUFycmF5IGFyZSBwcmVzZW50OyBzZXR0aW5nIHRoZSBjb250cm9sJ3MgdmFsdWUgdG8gYW4gZW1wdHkgYXJyYXkgY2F1c2VzIGEgcnVudGltZSBlcnJvclxuICAgICAgICAgIGlmIChmaWVsZENvbnRyb2wudmFsdWUpIHtcbiAgICAgICAgICAgIC8vIE5lZWQgdG8gYWxsb3cgZm9yIGZpZWxkIHZhbHVlcyB0aGF0IGFyZSBvYmplY3RzLCBub3QganVzdCBwcmltaXRpdmVzXG4gICAgICAgICAgICBmaWVsZENvbnRyb2wuc2V0VmFsdWUodGhpcy5tYXBBcnJheVZhbHVlc1RvTnVsbChmaWVsZENvbnRyb2wudmFsdWUpKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ0RvY3VtZW50JzpcbiAgICAgICAgICAvLyBOT1RFOiBUaGUgZmllbGQgY29udHJvbCAoYSBVbnR5cGVkRm9ybUdyb3VwIGluIHRoaXMgY2FzZSkgY2Fubm90IGp1c3QgYmUgc2V0IHRvIG51bGwgYmVjYXVzZSBBbmd1bGFyIGNoZWNrcyB0aGF0XG4gICAgICAgICAgLy8gYWxsIGV4aXN0aW5nIHZhbHVlcyBvZiBhIFVudHlwZWRGb3JtR3JvdXAgYXJlIHByZXNlbnQ7IHNldHRpbmcgdGhlIGNvbnRyb2wncyB2YWx1ZSB0byBudWxsIGNhdXNlcyBhIHJ1bnRpbWUgZXJyb3JcbiAgICAgICAgICBjb25zdCBkb2N1bWVudEZpZWxkVmFsdWUgPSBmaWVsZENvbnRyb2wudmFsdWU7XG4gICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gZG9jdW1lbnRGaWVsZFZhbHVlKSB7XG4gICAgICAgICAgICBpZiAoZmllbGRDb250cm9sLmdldChrZXkpKSB7XG4gICAgICAgICAgICAgIC8vIFRoZSBiYWNrLWVuZCBkb2Vzbid0IGFjY2VwdCBudWxsIGFzIGEgdmFsaWQgdmFsdWUgZm9yIGFueSBvZiB0aGUgRG9jdW1lbnQgZmllbGQgdHlwZSBwcm9wZXJ0aWVzIGJ1dFxuICAgICAgICAgICAgICAvLyB0aGlzIGlzIGhhbmRsZWQgYnkgc2FuaXRpc2VPYmplY3QoKSBpbiBGb3JtVmFsdWVTZXJ2aWNlLCByZXR1cm5pbmcgYSBudWxsIG9iamVjdCBmb3IgdGhlIGVudGlyZVxuICAgICAgICAgICAgICAvLyBEb2N1bWVudCBmaWVsZCwgaWYgYW55IG9mIGl0cyBwcm9wZXJ0aWVzIGlzIG51bGwgLSB3aGljaCBpcyBhY2NlcHRlZCBieSB0aGUgYmFjay1lbmRcbiAgICAgICAgICAgICAgZmllbGRDb250cm9sLmdldChrZXkpLnNldFZhbHVlKG51bGwpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgLy8gTm90ZTogdGhlIGRlZmF1bHQgY2FzZSBhcHBsaWVzIHRvIER5bmFtaWNMaXN0IGZpZWxkcywgdG9vXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgZmllbGRDb250cm9sLnNldFZhbHVlKG51bGwpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBNYXBzIGFsbCB2YWx1ZXMgb2YgYW4gYXJyYXkgdG8gYG51bGxgLCByZXRhaW5pbmcga2V5cyBmb3IgYW55IHZhbHVlcyB0aGF0IGFyZSBvYmplY3RzLiBGb3IgZXhhbXBsZSxcbiAgICogYFt7IGlkOiAnMCcsIHZhbHVlOiAnVGVzdCcgfSwgJ1Rlc3QnXWAgd291bGQgYmVjb21lIGBbeyBpZDogbnVsbCwgdmFsdWU6IG51bGwgfSwgbnVsbF1gLlxuICAgKiBAcGFyYW0gYXJyYXkgVGhlIGFycmF5IG9mIHZhbHVlcyB0byBtYXBcbiAgICogQHJldHVybnMgQSBuZXcgYXJyYXkgd2l0aCB0aGUgbWFwcGVkIHZhbHVlc1xuICAgKi9cbiAgcHVibGljIG1hcEFycmF5VmFsdWVzVG9OdWxsKGFycmF5OiBhbnlbXSk6IGFueVtdIHtcbiAgICByZXR1cm4gYXJyYXkubWFwKGVsZW1lbnQgPT4ge1xuICAgICAgcmV0dXJuIHR5cGVvZiBlbGVtZW50ID09PSAnb2JqZWN0J1xuICAgICAgICA/IE9iamVjdC5hc3NpZ24oe30sIC4uLk9iamVjdC5rZXlzKGVsZW1lbnQpLm1hcChrID0+ICh7IFtrXTogbnVsbCB9KSkpXG4gICAgICAgIDogbnVsbDtcbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
293
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGRzLnB1cmdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvc2VydmljZXMvZmllbGRzL2ZpZWxkcy5wdXJnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQU0zQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUVBQWlFLENBQUM7QUFJaEcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFFN0MsV0FBVztBQUVYLE1BQU0sT0FBTyxZQUFZO0lBRXZCLFlBQTZCLFdBQXdCO1FBQXhCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO0lBQUksQ0FBQztJQUVuRCxpQkFBaUIsQ0FBQyxJQUFlLEVBQUUsTUFBYyxFQUFFLFlBQThCLEVBQUUsYUFBcUI7UUFDN0csSUFBSSxDQUFDLHFDQUFxQyxDQUFDLGFBQWEsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQ3RGLElBQUksQ0FBQyxvQ0FBb0MsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFFTyxvQ0FBb0MsQ0FBQyxJQUFlLEVBQUUsTUFBYyxFQUFFLFlBQThCO1FBQzFHLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDcEYsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUU7WUFDeEIsSUFBSSxJQUFJLENBQUMsb0JBQW9CLENBQUMsRUFBRSxFQUFFLGlCQUFpQixDQUFDLEVBQUU7Z0JBQ3BELE1BQU0sU0FBUyxHQUFHLElBQUksYUFBYSxDQUFDLEVBQUUsQ0FBQyxjQUFjLENBQUMsQ0FB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QUksQ0FBQyxDQUFDO2FBQy9CO1NBQ0Y7SUFDSCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxvQkFBb0IsQ0FBQyxLQUFZO1FBQ3RDLE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUN6QixPQUFPLE9BQU8sT0FBTyxLQUFLLFFBQVE7Z0JBQ2hDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUN0RSxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ1gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzt3RUE5U1UsWUFBWTtrRUFBWixZQUFZLFdBQVosWUFBWTt1RkFBWixZQUFZO2NBRHhCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQXJyYXksIEZvcm1Db250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IFdpemFyZFBhZ2VGaWVsZCB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvY2FzZS1lZGl0b3IvZG9tYWluL3dpemFyZC1wYWdlLWZpZWxkLm1vZGVsJztcbmltcG9ydCB7IFdpemFyZFBhZ2UgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2Nhc2UtZWRpdG9yL2RvbWFpbi93aXphcmQtcGFnZS5tb2RlbCc7XG5pbXBvcnQgeyBXaXphcmQgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2Nhc2UtZWRpdG9yL2RvbWFpbi93aXphcmQubW9kZWwnO1xuaW1wb3J0IHsgU2hvd0NvbmRpdGlvbiB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvY29uZGl0aW9uYWwtc2hvdy9kb21haW4vY29uZGl0aW9uYWwtc2hvdy5tb2RlbCc7XG5pbXBvcnQgeyBDYXNlRXZlbnRUcmlnZ2VyIH0gZnJvbSAnLi4vLi4vZG9tYWluL2Nhc2Utdmlldy9jYXNlLWV2ZW50LXRyaWdnZXIubW9kZWwnO1xuaW1wb3J0IHsgQ2FzZUZpZWxkIH0gZnJvbSAnLi4vLi4vZG9tYWluL2RlZmluaXRpb24vY2FzZS1maWVsZC5tb2RlbCc7XG5pbXBvcnQgeyBGaWVsZFR5cGVFbnVtIH0gZnJvbSAnLi4vLi4vZG9tYWluL2RlZmluaXRpb24vZmllbGQtdHlwZS1lbnVtLm1vZGVsJztcbmltcG9ydCB7IEZpZWxkc1V0aWxzIH0gZnJvbSAnLi9maWVsZHMudXRpbHMnO1xuXG4vLyBAZHluYW1pY1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEZpZWxkc1B1cmdlciB7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBmaWVsZHNVdGlsczogRmllbGRzVXRpbHMpIHsgfVxuXG4gIHB1YmxpYyBjbGVhckhpZGRlbkZpZWxkcyhmb3JtOiBGb3JtR3JvdXAsIHdpemFyZDogV2l6YXJkLCBldmVudFRyaWdnZXI6IENhc2VFdmVudFRyaWdnZXIsIGN1cnJlbnRQYWdlSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuY2xlYXJIaWRkZW5GaWVsZEZvckZpZWxkU2hvd0NvbmRpdGlvbihjdXJyZW50UGFnZUlkLCBmb3JtLCB3aXphcmQsIGV2ZW50VHJpZ2dlcik7XG4gICAgdGhpcy5jbGVhckhpZGRlbkZpZWxkRm9yUGFnZVNob3dDb25kaXRpb24oZm9ybSwgd2l6YXJkLCBldmVudFRyaWdnZXIpO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhckhpZGRlbkZpZWxkRm9yUGFnZVNob3dDb25kaXRpb24oZm9ybTogRm9ybUdyb3VwLCB3aXphcmQ6IFdpemFyZCwgZXZlbnRUcmlnZ2VyOiBDYXNlRXZlbnRUcmlnZ2VyKTogdm9pZCB7XG4gICAgY29uc3QgY3VycmVudEV2ZW50U3RhdGUgPSB0aGlzLmZpZWxkc1V0aWxzLmdldEN1cnJlbnRFdmVudFN0YXRlKGV2ZW50VHJpZ2dlciwgZm9ybSk7XG4gICAgd2l6YXJkLnBhZ2VzLmZvckVhY2god3AgPT4ge1xuICAgICAgaWYgKHRoaXMuaGFzU2hvd0NvbmRpdGlvblBhZ2Uod3AsIGN1cnJlbnRFdmVudFN0YXRlKSkge1xuICAgICAgICBjb25zdCBjb25kaXRpb24gPSBuZXcgU2hvd0NvbmRpdGlvbih3cC5zaG93X2NvbmRpdGlvbik7XG4gICAgICAgIGlmICh0aGlzLmlzSGlkZGVuKGNvbmRpdGlvbiwgY3VycmVudEV2ZW50U3RhdGUpKSB7XG4gICAgICAgICAgdGhpcy5yZXNldFBhZ2UoZm9ybSwgd3ApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNsZWFySGlkZGVuRmllbGRGb3JGaWVsZFNob3dDb25kaXRpb24oY3VycmVudFBhZ2VJZDogc3RyaW5nLFxuICAgIGZvcm06IEZvcm1Hcm91cCxcbiAgICB3aXphcmQ6IFdpemFyZCxcbiAgICBldmVudFRyaWdnZXI6IENhc2VFdmVudFRyaWdnZXIpOiB2b2lkIHtcbiAgICBjb25zdCBmb3JtRmllbGRzID0gZm9ybS5nZXRSYXdWYWx1ZSgpO1xuICAgIGNvbnN0IGN1cnJlbnRQYWdlOiBXaXphcmRQYWdlID0gd2l6YXJkLmdldFBhZ2UoY3VycmVudFBhZ2VJZCwgdGhpcy5maWVsZHNVdGlscy5idWlsZENhblNob3dQcmVkaWNhdGUoZXZlbnRUcmlnZ2VyLCBmb3JtKSk7XG4gICAgY3VycmVudFBhZ2Uud2l6YXJkX3BhZ2VfZmllbGRzLmZvckVhY2god3BmID0+IHtcbiAgICAgIGNvbnN0IGNhc2VGaWVsZCA9IHRoaXMuZmluZENhc2VGaWVsZEJ5V2l6YXJkUGFnZUZpZWxkSWQoY3VycmVudFBhZ2UsIHdwZik7XG4gICAgICBpZiAodGhpcy5oYXNTaG93Q29uZGl0aW9uRmllbGQoY2FzZUZpZWxkLCBmb3JtRmllbGRzKSkge1xuICAgICAgICBjb25zdCBjb25kaXRpb24gPSBuZXcgU2hvd0NvbmRpdGlvbihjYXNlRmllbGQuc2hvd19jb25kaXRpb24pO1xuICAgICAgICBpZiAodGhpcy5pc0hpZGRlbihjb25kaXRpb24sIGZvcm1GaWVsZHMuZGF0YSkgJiYgISh0aGlzLmlzUmVhZG9ubHkoY2FzZUZpZWxkKSkpIHtcbiAgICAgICAgICB0aGlzLnJlc2V0RmllbGQoZm9ybSwgY2FzZUZpZWxkKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5yZXRhaW5IaWRkZW5WYWx1ZUJ5RmllbGRUeXBlKGNhc2VGaWVsZCwgZm9ybSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJldGFpbkhpZGRlblZhbHVlQnlGaWVsZFR5cGUoZmllbGQ6IENhc2VGaWVsZCwgZm9ybTogYW55KTogdm9pZCB7XG4gICAgLy8gc28gZmFyIG9ubHkgYXBwbGllcyB0byB0aGUgbmV3IGZpZWxkIHR5cGUgT3JnYW5pc2F0aW9uUG9saWN5IHdoaWNoIG5lZWRzIHRvIHJldGFpbiB0aGUgZGVmYXVsdCBjYXNlIHJvbGUgdmFsdWVcbiAgICAvLyBmb3Igb3RoZXIgY2FzZSBmaWVsZHMgdGhlcmUgc2hvdWxkIGJlIG5vIHNpZGUgZWZmZWN0c1xuICAgIGlmIChmaWVsZCAmJiBmaWVsZC5maWVsZF90eXBlICYmIGZpZWxkLmZpZWxkX3R5cGUuaWQgPT09ICdPcmdhbmlzYXRpb25Qb2xpY3knKSB7XG4gICAgICAvLyA8YnViYmxlX3dyYXA+XG4gICAgICAvLyBEb2luZyBzb21lIG51bGwgY2hlY2tpbmcgdG8gc3RvcCBpdCBmcm9tIGZhbGxpbmcgb3Zlci5cbiAgICAgIGNvbnN0IGRhdGE6IEZvcm1Hcm91cCA9IGZvcm0uZ2V0KCdkYXRhJykgYXMgRm9ybUdyb3VwO1xuICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgY29uc3QgZmllbGRHcm91cDogRm9ybUdyb3VwID0gZGF0YS5jb250cm9sc1tmaWVsZC5pZF0gYXMgRm9ybUdyb3VwO1xuICAgICAgICBpZiAoZmllbGRHcm91cCkge1xuICAgICAgICAgIGNvbnN0IGNhc2VSb2xlRm9ybUNvbnRyb2w6IEZvcm1Db250cm9sID0gZmllbGRHcm91cC5nZXQoJ09yZ1BvbGljeUNhc2VBc3NpZ25lZFJvbGUnKSBhcyBGb3JtQ29udHJvbDtcbiAgICAgICAgICBpZiAoY2FzZVJvbGVGb3JtQ29udHJvbCkge1xuICAgICAgICAgICAgY2FzZVJvbGVGb3JtQ29udHJvbC5lbmFibGUoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIDwvYnViYmxlX3dyYXA+XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpc0hpZGRlbihjb25kaXRpb246IFNob3dDb25kaXRpb24sIGZvcm1GaWVsZHM6IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhY29uZGl0aW9uLm1hdGNoKGZvcm1GaWVsZHMpO1xuICB9XG5cbiAgcHJpdmF0ZSBmaW5kQ2FzZUZpZWxkQnlXaXphcmRQYWdlRmllbGRJZChjdXJyZW50UGFnZTogV2l6YXJkUGFnZSwgd2l6YXJkUGFnZUZpZWxkOiBXaXphcmRQYWdlRmllbGQpOiBDYXNlRmllbGQge1xuICAgIHJldHVybiBjdXJyZW50UGFnZS5jYXNlX2ZpZWxkcy5maW5kKGNmID0+IGNmLmlkID09PSB3aXphcmRQYWdlRmllbGQuY2FzZV9maWVsZF9pZCk7XG4gIH1cblxuICBwcml2YXRlIGhhc1Nob3dDb25kaXRpb25QYWdlKHdpemFyZFBhZ2U6IFdpemFyZFBhZ2UsIGZvcm1GaWVsZHM6IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB3aXphcmRQYWdlLnNob3dfY29uZGl0aW9uICYmIGZvcm1GaWVsZHNbdGhpcy5nZXRTaG93Q29uZGl0aW9uS2V5KHdpemFyZFBhZ2Uuc2hvd19jb25kaXRpb24pXTtcbiAgfVxuXG4gIHByaXZhdGUgaGFzU2hvd0NvbmRpdGlvbkZpZWxkKGNhc2VGaWVsZDogQ2FzZUZpZWxkLCBmb3JtRmllbGRzOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gY2FzZUZpZWxkLnNob3dfY29uZGl0aW9uICYmIGZvcm1GaWVsZHMuZGF0YVt0aGlzLmdldFNob3dDb25kaXRpb25LZXkoY2FzZUZpZWxkLnNob3dfY29uZGl0aW9uKV07XG4gIH1cblxuICBwcml2YXRlIGdldFNob3dDb25kaXRpb25LZXkoc2hvd0NvbmRpdGlvbjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAvLyBOZWVkIHRvIGFsbG93IGZvciBuZWdhdGVkIGNvbmRpdGlvbnMsIGkuZS4gIT0sIGFzIHdlbGwgYXMgcmVndWxhciBvbmVzICg9KVxuICAgIC8vIEFsc28gbmVlZCB0byBhbGxvdyBmb3IgY29uZGl0aW9ucyBzcGVjaWZpZWQgdXNpbmcgdGhlIFwiQ09OVEFJTlNcIiBrZXl3b3JkXG4gICAgcmV0dXJuIHNob3dDb25kaXRpb24uc3BsaXQoLyE9fD18Q09OVEFJTlMvKVswXTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzZXRGaWVsZChmb3JtOiBGb3JtR3JvdXAsIGZpZWxkOiBDYXNlRmllbGQpOiB2b2lkIHtcbiAgICAvKipcbiAgICAgKiBJZiB0aGUgaGlkZGVuIGZpZWxkJ3MgdmFsdWUgaXMgdG8gYmUgcmV0YWluZWQsIGRvIG5vdGhpbmcgKGV4Y2VwdCBpZiBpdCBpcyBhIENvbXBsZXggdHlwZSBvciBjb2xsZWN0aW9uIG9mXG4gICAgICogQ29tcGxleCB0eXBlcykuIFRoaXMgaXMgYSBjaGFuZ2UgdG8gdGhlIHByZXZpb3VzIGJlaGF2aW91ciAod2hpY2ggdXNlZCB0byBjbGVhciB0aGUgZmllbGQgdmFsdWUgYnV0IHJlbW92ZSBpdFxuICAgICAqIGZyb20gc3VibWlzc2lvbiBhcyBhbiB1cGRhdGUgdG8gdGhlIGJhY2stZW5kKS4gVGhlIG5ldyBiZWhhdmlvdXIgaXMgdG8gbGVhdmUgdGhlIGZpZWxkIGFzIGlzLCBzbyBpZiB0aGUgZmllbGRcbiAgICAgKiBpcyBoaWRkZW4gYnV0IHRoZW4gdW4taGlkZGVuIGJlZm9yZSBmb3JtIHN1Ym1pc3Npb24sIGFueSBwcmV2aW91c2x5IGVudGVyZWQgdmFsdWUgaXMgcmV0YWluZWQuXG4gICAgICpcbiAgICAgKiBGb3IgQ29tcGxleCBmaWVsZCB0eXBlcywgYW4gYWRkaXRpb25hbCBjaGVjayBvZiBzdWItZmllbGRzIGlzIHJlcXVpcmVkLiBUaGUgc2FtZSBhcHBsaWVzIHRvIGEgY29sbGVjdGlvbiBvZlxuICAgICAqIENvbXBsZXggdHlwZXMuXG4gICAgICovXG4gICAgaWYgKGZpZWxkLnJldGFpbl9oaWRkZW5fdmFsdWUpIHtcbiAgICAgIGNvbnN0IGZpZWxkVHlwZTogRmllbGRUeXBlRW51bSA9IGZpZWxkLmZpZWxkX3R5cGUudHlwZTtcbiAgICAgIC8vIElmIHRoZSBmaWVsZCBpcyBhIENvbXBsZXggdHlwZSwgbG9vcCBvdmVyIGl0cyBzdWItZmllbGRzIGFuZCBjYWxsIGRlbGV0ZUZpZWxkVmFsdWUoKSBmb3IgYW55IHN1Yi1maWVsZHNcbiAgICAgIC8vIHdoZXJlIHJldGFpbl9oaWRkZW5fdmFsdWUgaXMgZmFsc2UsIE9SIGZvciBhbnkgQ29tcGxleCBzdWItZmllbGRzICpyZWdhcmRsZXNzIG9mIHRoZWlyIHJldGFpbl9oaWRkZW5fdmFsdWUqXG4gICAgICAvLyAoaW4gb3JkZXIgdG8gaW5zcGVjdCB0aGUgc3ViLWZpZWxkcyBvZiBhIENvbXBsZXggdHlwZSB3aXRoaW4gYW5vdGhlciBDb21wbGV4IHR5cGUpXG4gICAgICBpZiAoZmllbGRUeXBlID09PSAnQ29tcGxleCcgJiYgZmllbGQuZmllbGRfdHlwZS5jb21wbGV4X2ZpZWxkcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGZvciAoY29uc3QgY29tcGxleFN1YkZpZWxkIG9mIGZpZWxkLmZpZWxkX3R5cGUuY29tcGxleF9maWVsZHMpIHtcbiAgICAgICAgICBpZiAoKGNvbXBsZXhTdWJGaWVsZC5maWVsZF90eXBlLnR5cGUgPT09ICdDb21wbGV4JyAmJiBjb21wbGV4U3ViRmllbGQuZmllbGRfdHlwZS5jb21wbGV4X2ZpZWxkcy5sZW5ndGggPiAwKSB8fFxuICAgICAgICAgICAgIWNvbXBsZXhTdWJGaWVsZC5yZXRhaW5faGlkZGVuX3ZhbHVlKSB7XG4gICAgICAgICAgICAvLyBDaGVjayBmb3IgdGhlIGV4aXN0ZW5jZSBvZiB0aGUgcGFyZW50IEZvcm1Hcm91cCBjb3JyZXNwb25kaW5nIHRvIHRoZSBDb21wbGV4IGZpZWxkOyBpZiBpdCBleGlzdHMsIGNhbGxcbiAgICAgICAgICAgIC8vIGRlbGV0ZUZpZWxkVmFsdWUoKSB0byBkZWxldGUgdGhlIHN1Yi1maWVsZFxuICAgICAgICAgICAgY29uc3QgcGFyZW50Rm9ybUdyb3VwID0gKGZvcm0uZ2V0KCdkYXRhJykgYXMgRm9ybUdyb3VwKS5jb250cm9sc1tmaWVsZC5pZF0gYXMgRm9ybUdyb3VwO1xuICAgICAgICAgICAgaWYgKHBhcmVudEZvcm1Hcm91cCkge1xuICAgICAgICAgICAgICB0aGlzLmRlbGV0ZUZpZWxkVmFsdWUocGFyZW50Rm9ybUdyb3VwLCBjb21wbGV4U3ViRmllbGQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChmaWVsZFR5cGUgPT09ICdDb2xsZWN0aW9uJyAmJiBmaWVsZC5maWVsZF90eXBlLmNvbGxlY3Rpb25fZmllbGRfdHlwZS50eXBlID09PSAnQ29tcGxleCcgJiZcbiAgICAgICAgZmllbGQuZmllbGRfdHlwZS5jb2xsZWN0aW9uX2ZpZWxkX3R5cGUuY29tcGxleF9maWVsZHMubGVuZ3RoID4gMCkge1xuICAgICAgICAvLyBJZiB0aGUgZmllbGQgaXMgYSBjb2xsZWN0aW9uIG9mIENvbXBsZXggdHlwZXMsIGxvb3AgdGhyb3VnaCBlYWNoIG9uZSBhbmQgY2FsbCBkZWxldGVGaWVsZFZhbHVlKCkgZm9yIGFueVxuICAgICAgICAvLyBzdWItZmllbGRzIHdoZXJlIHJldGFpbl9oaWRkZW5fdmFsdWUgaXMgZmFsc2UsIE9SIGZvciBhbnkgQ29tcGxleCBzdWItZmllbGRzICpyZWdhcmRsZXNzIG9mIHRoZWlyXG4gICAgICAgIC8vIHJldGFpbl9oaWRkZW5fdmFsdWUqIChpbiBvcmRlciB0byBpbnNwZWN0IHRoZSBzdWItZmllbGRzIG9mIGEgQ29tcGxleCB0eXBlIHdpdGhpbiBhbm90aGVyIENvbXBsZXggdHlwZSlcblxuICAgICAgICAvLyBHZXQgdGhlIGFycmF5IG9mIGZpZWxkIGNvbnRyb2xzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIENvbXBsZXggZmllbGQgdmFsdWVzXG4gICAgICAgIGNvbnN0IGZpZWxkQ29udHJvbHMgPSAoZm9ybS5nZXQoJ2RhdGEnKSBhcyBGb3JtR3JvdXApLmNvbnRyb2xzW2ZpZWxkLmlkXSBhcyBGb3JtQXJyYXk7XG5cbiAgICAgICAgaWYgKGZpZWxkQ29udHJvbHMpIHtcbiAgICAgICAgICAvLyBHZXQgdGhlIGFycmF5IG9mIENvbXBsZXggZmllbGQgdmFsdWVzXG4gICAgICAgICAgY29uc3QgY29tcGxleEZpZWxkVmFsdWVzID0gZmllbGRDb250cm9scy52YWx1ZSBhcyBhbnlbXTtcblxuICAgICAgICAgIC8vIEZvciBlYWNoIENvbXBsZXggZmllbGQgdmFsdWUsIGdldCB0aGUgSUQgb2YgZWFjaCBzdWItZmllbGQgd2l0aGluIGl0IGFuZCB1c2UgYXMgYSBrZXkgdG8gZmluZCB0aGVcbiAgICAgICAgICAvLyBjb3JyZXNwb25kaW5nIHN1Yi1DYXNlRmllbGQgKHdoaWNoIGNvbnRhaW5zIHRoZSBmaWVsZCB0eXBlIGluZm9ybWF0aW9uKVxuICAgICAgICAgIGlmIChjb21wbGV4RmllbGRWYWx1ZXMpIHtcbiAgICAgICAgICAgIGNvbXBsZXhGaWVsZFZhbHVlcy5mb3JFYWNoKChmaWVsZFZhbHVlLCBpbmRleCkgPT4gT2JqZWN0LmtleXMoZmllbGRWYWx1ZS52YWx1ZSkuZm9yRWFjaChzdWJGaWVsZElkID0+IHtcbiAgICAgICAgICAgICAgLy8gRmluZCB0aGUgc3ViLUNhc2VGaWVsZCBjb3JyZXNwb25kaW5nIHRvIHRoZSBzdWItZmllbGQgSURcbiAgICAgICAgICAgICAgbGV0IHN1YkNhc2VGaWVsZDogQ2FzZUZpZWxkO1xuICAgICAgICAgICAgICBmb3IgKGNvbnN0IGNhc2VGaWVsZCBvZiBmaWVsZC5maWVsZF90eXBlLmNvbGxlY3Rpb25fZmllbGRfdHlwZS5jb21wbGV4X2ZpZWxkcykge1xuICAgICAgICAgICAgICAgIGlmIChjYXNlRmllbGQuaWQgPT09IHN1YkZpZWxkSWQpIHtcbiAgICAgICAgICAgICAgICAgIHN1YkNhc2VGaWVsZCA9IGNhc2VGaWVsZDtcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIC8vIFJlY3Vyc2l2ZWx5IGRlbGV0ZSB0aGUgc3ViLWZpZWxkIHZhbHVlIGlmIHJldGFpbl9oaWRkZW5fdmFsdWUgaXMgZmFsc2UsIE9SIGlmIHRoZSBzdWItZmllbGQgdHlwZSBpc1xuICAgICAgICAgICAgICAvLyBDb21wbGV4IGFuZCByZWdhcmRsZXNzIG9mIHJldGFpbl9oaWRkZW5fdmFsdWUsIHBhc3NpbmcgaW4gdGhlIHBhcmVudCBGb3JtR3JvdXBcbiAgICAgICAgICAgICAgaWYgKHN1YkNhc2VGaWVsZCAmJlxuICAgICAgICAgICAgICAgICgoc3ViQ2FzZUZpZWxkLmZpZWxkX3R5cGUudHlwZSA9PT0gJ0NvbXBsZXgnICYmIHN1YkNhc2VGaWVsZC5maWVsZF90eXBlLmNvbXBsZXhfZmllbGRzLmxlbmd0aCA+IDApIHx8XG4gICAgICAgICAgICAgICAgICAhc3ViQ2FzZUZpZWxkLnJldGFpbl9oaWRkZW5fdmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcGFyZW50Rm9ybUdyb3VwOiBGb3JtR3JvdXAgPSBmaWVsZENvbnRyb2xzLmF0KGluZGV4KS5nZXQoJ3ZhbHVlJykgYXMgRm9ybUdyb3VwO1xuICAgICAgICAgICAgICAgIHRoaXMuZGVsZXRlRmllbGRWYWx1ZShwYXJlbnRGb3JtR3JvdXAsIHN1YkNhc2VGaWVsZCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gRGVsZXRlIHRoZSBmaWVsZCB2YWx1ZVxuICAgICAgdGhpcy5kZWxldGVGaWVsZFZhbHVlKGZvcm0uZ2V0KCdkYXRhJykgYXMgRm9ybUdyb3VwLCBmaWVsZCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZXNldFBhZ2UoZm9ybTogRm9ybUdyb3VwLCB3aXphcmRQYWdlOiBXaXphcmRQYWdlKTogdm9pZCB7XG4gICAgd2l6YXJkUGFnZS53aXphcmRfcGFnZV9maWVsZHMuZm9yRWFjaCh3cGYgPT4ge1xuICAgICAgY29uc3QgY2FzZUZpZWxkID0gdGhpcy5maW5kQ2FzZUZpZWxkQnlXaXphcmRQYWdlRmllbGRJZCh3aXphcmRQYWdlLCB3cGYpO1xuICAgICAgdGhpcy5yZXNldEZpZWxkKGZvcm0sIGNhc2VGaWVsZCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldFR5cGUoZWxlbTogYW55KTogc3RyaW5nIHtcbiAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGVsZW0pLnNsaWNlKDgsIC0xKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNPYmplY3QoZWxlbTogYW55KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0VHlwZShlbGVtKSA9PT0gJ09iamVjdCc7XG4gIH1cblxuICAvLyBUT0RPOiBjYWxsIGlzUmVhZE9ubHkgb24gQ2FzZUZpZWxkcyBvbmNlIHdlIG1ha2UgaXQgYXZhaWxhYmxlXG4gIHByaXZhdGUgaXNSZWFkb25seShjYXNlRmllbGQ6IENhc2VGaWVsZCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBjYXNlRmllbGQuZGlzcGxheV9jb250ZXh0LnRvVXBwZXJDYXNlKCkgPT09ICdSRUFET05MWSc7XG4gIH1cblxuICAvKipcbiAgICogRGVsZXRlcyBhIGZpZWxkIHZhbHVlIGJ5IHNldHRpbmcgdGhlIHZhbHVlIG9mIHRoZSBjb3JyZXNwb25kaW5nIHtAbGluayBGb3JtQ29udHJvbH0gdG8gbnVsbCAob3IgYW4gZW1wdHkgYXJyYXlcbiAgICogaWYgdGhlIGZpZWxkIHR5cGUgaXMgYENvbGxlY3Rpb25gKSwgZXhjZXB0IHdoZW4gdGhlIGZpZWxkIHR5cGUgaXMgYENvbXBsZXhgIG9yIGBEb2N1bWVudGAuIEZvciBgQ29tcGxleGAgZmllbGRcbiAgICogdHlwZXMsIHRoaXMgcmVjdXJzaXZlIG1ldGhvZCBpcyBjYWxsZWQgdW50aWwgc2ltcGxlIG9yIFwiYmFzZVwiIGZpZWxkIHR5cGVzIGFyZSByZWFjaGVkLiBGb3IgYERvY3VtZW50YCBmaWVsZFxuICAgKiB0eXBlcywgaXRzIF9zdWItZmllbGRfIGBGb3JtQ29udHJvbGAgdmFsdWVzIGFyZSBzZXQgdG8gbnVsbC5cbiAgICpcbiAgICogQHBhcmFtIEZvcm1Hcm91cCBUaGUgYEZvcm1Hcm91cGAgaW5zdGFuY2UgY29udGFpbmluZyB0aGUgYEZvcm1Db250cm9sYCBmb3IgdGhlIHNwZWNpZmllZCBmaWVsZFxuICAgKiBAcGFyYW0gZmllbGQgVGhlIGBDYXNlRmllbGRgIHdob3NlIHZhbHVlIGlzIHRvIGJlIGRlbGV0ZWQgaW4gdGhlIGJhY2tlbmRcbiAgICogQHBhcmFtIHBhcmVudEZpZWxkIFJlZmVyZW5jZSB0byB0aGUgcGFyZW50IGBDYXNlRmllbGRgLiBVc2VkIGZvciBjaGVja2luZyBzcGVjaWZpY2FsbHkgd2hlcmUgYSBDb21wbGV4IGZpZWxkIGFuZFxuICAgKiBpdHMgc3ViLWZpZWxkcyBoYXZlIGByZXRhaW5faGlkZGVuX3ZhbHVlYCBzZXQgdG8gYHRydWVgLCBidXQgdGhlIGZpZWxkJ3MgcGFyZW50IGhhcyBpdCBzZXQgdG8gYGZhbHNlYCBvciB1bmRlZmluZWRcbiAgICovXG4gIHB1YmxpYyBkZWxldGVGaWVsZFZhbHVlKGZvcm1Hcm91cDogRm9ybUdyb3VwLCBmaWVsZDogQ2FzZUZpZWxkLCBwYXJlbnRGaWVsZD86IENhc2VGaWVsZCk6IHZvaWQge1xuICAgIGNvbnN0IGZpZWxkVHlwZTogRmllbGRUeXBlRW51bSA9IGZpZWxkLmZpZWxkX3R5cGUudHlwZTtcbiAgICBjb25zdCBmaWVsZENvbnRyb2wgPSBmb3JtR3JvdXAuZ2V0KGZpZWxkLmlkKTtcblxuICAgIGlmIChmaWVsZENvbnRyb2wpIHtcbiAgICAgIHN3aXRjaCAoZmllbGRUeXBlKSB7XG4gICAgICAgIGNhc2UgJ0NvbXBsZXgnOlxuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIElmIHRoZSBmaWVsZCBpcyBhIENvbXBsZXggdHlwZSwgbG9vcCBvdmVyIGl0cyBzdWItZmllbGRzIGFuZCBjYWxsIGRlbGV0ZUZpZWxkVmFsdWUoKSBmb3I6XG4gICAgICAgICAgICpcbiAgICAgICAgICAgKiAqIEFueSBzdWItZmllbGRzIHdoZXJlIHJldGFpbl9oaWRkZW5fdmFsdWUgaXMgZmFsc2UvdW5kZWZpbmVkLCBpZiB0aGUgcGFyZW50IGZpZWxkIGhhc1xuICAgICAgICAgICAqIHJldGFpbl9oaWRkZW5fdmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAqICogQUxMIHN1Yi1maWVsZHMgaWYgdGhlIHBhcmVudCBmaWVsZCBoYXMgcmV0YWluX2hpZGRlbl92YWx1ZSA9IHRydWUgQlVUIGl0cyBfb3duXyBwYXJlbnQgaGFzXG4gICAgICAgICAgICogcmV0YWluX2hpZGRlbl92YWx1ZSA9IGZhbHNlL3VuZGVmaW5lZCAodGh1cyBvdmVycmlkaW5nIGFueXRoaW5nIGVsc2UpO1xuICAgICAgICAgICAqICogQUxMIHN1Yi1maWVsZHMgaWYgdGhlIHBhcmVudCBmaWVsZCBoYXMgcmV0YWluX2hpZGRlbl92YWx1ZSA9IGZhbHNlL3VuZGVmaW5lZDtcbiAgICAgICAgICAgKiAqIEFueSBDb21wbGV4IHN1Yi1maWVsZHMgKnJlZ2FyZGxlc3Mgb2YgdGhlaXIgcmV0YWluX2hpZGRlbl92YWx1ZSogKGluIG9yZGVyIHRvIGluc3BlY3QgdGhlIHN1Yi1maWVsZHNcbiAgICAgICAgICAgKiBvZiBhIENvbXBsZXggdHlwZSB3aXRoaW4gYW5vdGhlciBDb21wbGV4IHR5cGUpXG4gICAgICAgICAgICovXG4gICAgICAgICAgaWYgKGZpZWxkLmZpZWxkX3R5cGUuY29tcGxleF9maWVsZHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBjb21wbGV4U3ViRmllbGQgb2YgZmllbGQuZmllbGRfdHlwZS5jb21wbGV4X2ZpZWxkcykge1xuICAgICAgICAgICAgICBpZiAoKGNvbXBsZXhTdWJGaWVsZC5maWVsZF90eXBlLnR5cGUgPT09ICdDb21wbGV4JyAmJiBjb21wbGV4U3ViRmllbGQuZmllbGRfdHlwZS5jb21wbGV4X2ZpZWxkcy5sZW5ndGggPiAwKSB8fFxuICAgICAgICAgICAgICAgIChjb21wbGV4U3ViRmllbGQuZmllbGRfdHlwZS50eXBlICE9PSAnQ29tcGxleCcgJiZcbiAgICAgICAgICAgICAgICAgIChmaWVsZC5yZXRhaW5faGlkZGVuX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgID8gIWNvbXBsZXhTdWJGaWVsZC5yZXRhaW5faGlkZGVuX3ZhbHVlIHx8IChwYXJlbnRGaWVsZCAmJiAhcGFyZW50RmllbGQucmV0YWluX2hpZGRlbl92YWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgOiB0cnVlKSkpIHtcbiAgICAgICAgICAgICAgICAvLyBUaGUgZmllbGRDb250cm9sIGlzIGNhc3QgdG8gYSBGb3JtR3JvdXAgYmVjYXVzZSBhIENvbXBsZXggZmllbGQgdHlwZSB1c2VzIHRoaXMgYXMgaXRzIHVuZGVybHlpbmdcbiAgICAgICAgICAgICAgICAvLyBpbXBsZW1lbnRhdGlvblxuICAgICAgICAgICAgICAgIHRoaXMuZGVsZXRlRmllbGRWYWx1ZShmaWVsZENvbnRyb2wgYXMgRm9ybUdyb3VwLCBjb21wbGV4U3ViRmllbGQsIGZpZWxkKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnQ29sbGVjdGlvbic6XG4gICAgICAgICAgLy8gSWYgaXQgaXMgYSBjb2xsZWN0aW9uIG9mIENvbXBsZXggdHlwZXMsIGxvb3AgdGhyb3VnaCBlYWNoIG9uZTsgZWxzZSBmYWxsIHRocm91Z2ggdG8gYmUgaGFuZGxlZCBhcyBhXG4gICAgICAgICAgLy8gY29sbGVjdGlvbiBvZiBzaW1wbGUgdHlwZXMgKGluIHRoZSBzYW1lIHdheSBhcyBNdWx0aVNlbGVjdExpc3QpLCB1bmxlc3MgaXQncyBhIGNvbGxlY3Rpb24gb2YgRG9jdW1lbnRcbiAgICAgICAgICAvLyB0eXBlcywgd2hpY2ggcmVxdWlyZXMgZGlmZmVyZW50IGhhbmRsaW5nXG4gICAgICAgICAgY29uc3QgY29sbGVjdGlvbkZpZWxkVHlwZSA9IGZpZWxkLmZpZWxkX3R5cGUuY29sbGVjdGlvbl9maWVsZF90eXBlO1xuICAgICAgICAgIGlmIChjb2xsZWN0aW9uRmllbGRUeXBlLnR5cGUgPT09ICdDb21wbGV4JyAmJiBjb2xsZWN0aW9uRmllbGRUeXBlLmNvbXBsZXhfZmllbGRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIC8vIEdldCB0aGUgYXJyYXkgb2YgQ29tcGxleCBmaWVsZCB2YWx1ZXNcbiAgICAgICAgICAgIGNvbnN0IGNvbXBsZXhGaWVsZFZhbHVlcyA9IGZpZWxkQ29udHJvbC52YWx1ZSBhcyBhbnlbXTtcblxuICAgICAgICAgICAgLy8gRm9yIGVhY2ggQ29tcGxleCBmaWVsZCB2YWx1ZSwgZ2V0IHRoZSBJRCBvZiBlYWNoIHN1Yi1maWVsZCB3aXRoaW4gaXQgYW5kIHVzZSBhcyBhIGtleSB0byBmaW5kIHRoZVxuICAgICAgICAgICAgLy8gY29ycmVzcG9uZGluZyBzdWItQ2FzZUZpZWxkICh3aGljaCBjb250YWlucyB0aGUgZmllbGQgdHlwZSBpbmZvcm1hdGlvbilcbiAgICAgICAgICAgIGlmIChjb21wbGV4RmllbGRWYWx1ZXMpIHtcbiAgICAgICAgICAgICAgY29tcGxleEZpZWxkVmFsdWVzLmZvckVhY2goKGZpZWxkVmFsdWUsIGluZGV4KSA9PiBPYmplY3Qua2V5cyhmaWVsZFZhbHVlLnZhbHVlKS5mb3JFYWNoKHN1YkZpZWxkSWQgPT4ge1xuICAgICAgICAgICAgICAgIC8vIEZpbmQgdGhlIHN1Yi1DYXNlRmllbGQgY29ycmVzcG9uZGluZyB0byB0aGUgc3ViLWZpZWxkIElEXG4gICAgICAgICAgICAgICAgbGV0IHN1YkNhc2VGaWVsZDogQ2FzZUZpZWxkO1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgY2FzZUZpZWxkIG9mIGNvbGxlY3Rpb25GaWVsZFR5cGUuY29tcGxleF9maWVsZHMpIHtcbiAgICAgICAgICAgICAgICAgIGlmIChjYXNlRmllbGQuaWQgPT09IHN1YkZpZWxkSWQpIHtcbiAgICAgICAgICAgICAgICAgICAgc3ViQ2FzZUZpZWxkID0gY2FzZUZpZWxkO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyBSZWN1cnNpdmVseSBkZWxldGUgdGhlIHN1Yi1maWVsZCB2YWx1ZSwgcGFzc2luZyBpbiB0aGUgcGFyZW50IEZvcm1Hcm91cFxuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudEZvcm1Hcm91cDogRm9ybUdyb3VwID0gKGZpZWxkQ29udHJvbCBhcyBGb3JtQXJyYXkpLmF0KGluZGV4KS5nZXQoJ3ZhbHVlJykgYXMgRm9ybUdyb3VwO1xuICAgICAgICAgICAgICAgIHRoaXMuZGVsZXRlRmllbGRWYWx1ZShwYXJlbnRGb3JtR3JvdXAsIHN1YkNhc2VGaWVsZCk7XG4gICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH0gZWxzZSBpZiAoY29sbGVjdGlvbkZpZWxkVHlwZS50eXBlID09PSAnRG9jdW1lbnQnKSB7XG4gICAgICAgICAgICAvLyBHZXQgdGhlIGFycmF5IG9mIERvY3VtZW50IGZpZWxkIHZhbHVlc1xuICAgICAgICAgICAgY29uc3QgZG9jdW1lbnRGaWVsZFZhbHVlcyA9IGZpZWxkQ29udHJvbC52YWx1ZSBhcyBhbnlbXTtcblxuICAgICAgICAgICAgLy8gRm9yIGVhY2ggRG9jdW1lbnQgZmllbGQgdmFsdWUsIHNldCBhbGwgaXRzIHByb3BlcnR5IHZhbHVlcyB0byBudWxsICh0aGlzIGlzIG5vdCBhY2NlcHRlZCBieSB0aGVcbiAgICAgICAgICAgIC8vIGJhY2stZW5kIGJ1dCB3aWxsIGJlIGhhbmRsZWQgYnkgc2FuaXRpc2VPYmplY3QoKSBpbiBGb3JtVmFsdWVTZXJ2aWNlIGJlZm9yZSBzZW5kaW5nIC0gc2VlIGJlbG93IGZvclxuICAgICAgICAgICAgLy8gdGhlIHNpbmdsZSBEb2N1bWVudCBjYXNlKVxuICAgICAgICAgICAgaWYgKGRvY3VtZW50RmllbGRWYWx1ZXMpIHtcbiAgICAgICAgICAgICAgZG9jdW1lbnRGaWVsZFZhbHVlcy5mb3JFYWNoKChmaWVsZFZhbHVlLCBpbmRleCkgPT4gT2JqZWN0LmtleXMoZmllbGRWYWx1ZS52YWx1ZSkuZm9yRWFjaChzdWJGaWVsZElkID0+IHtcbiAgICAgICAgICAgICAgICAvLyBHZXQgdGhlIEZvcm1Hcm91cCBjb250YWluaW5nIHRoZSBGb3JtQ29udHJvbCBmb3IgdGhlIHN1Yi1maWVsZCBhbmQgc2V0IGl0cyB2YWx1ZSB0byBudWxsXG4gICAgICAgICAgICAgICAgKGZpZWxkQ29udHJvbCBhcyBGb3JtQXJyYXkpLmF0KGluZGV4KS5nZXQoYHZhbHVlLiR7c3ViRmllbGRJZH1gKS5zZXRWYWx1ZShudWxsKTtcbiAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAvLyBPbWl0dGVkIFwiYnJlYWtcIiBpcyBpbnRlbnRpb25hbCBiZWNhdXNlIGEgY29sbGVjdGlvbiBzaG91bGQgYmUgaGFuZGxlZCBhcyBwZXIgTXVsdGlTZWxlY3RMaXN0IGlmIGl0IGlzXG4gICAgICAgIC8vIG5vdCBhIGNvbGxlY3Rpb24gb2YgQ29tcGxleCB0eXBlc1xuICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLXN3aXRjaC1jYXNlLWZhbGwtdGhyb3VnaFxuICAgICAgICBjYXNlICdNdWx0aVNlbGVjdExpc3QnOlxuICAgICAgICAgIC8vIEZpZWxkIGNvbnRyb2wgc2hvdWxkIGJlIGEgRm9ybUFycmF5LCBzbyBtYXAgZWFjaCBvZiBpdHMgdmFsdWVzIHRvIG51bGxcbiAgICAgICAgICAvLyBOT1RFOiBUaGUgRm9ybUFycmF5IGNhbm5vdCBqdXN0IGJlIHNldCB0byBhbiBlbXB0eSBhcnJheSBiZWNhdXNlIEFuZ3VsYXIgY2hlY2tzIHRoYXQgYWxsIGV4aXN0aW5nIHZhbHVlc1xuICAgICAgICAgIC8vIG9mIGEgRm9ybUFycmF5IGFyZSBwcmVzZW50OyBzZXR0aW5nIHRoZSBjb250cm9sJ3MgdmFsdWUgdG8gYW4gZW1wdHkgYXJyYXkgY2F1c2VzIGEgcnVudGltZSBlcnJvclxuICAgICAgICAgIGlmIChmaWVsZENvbnRyb2wudmFsdWUpIHtcbiAgICAgICAgICAgIC8vIE5lZWQgdG8gYWxsb3cgZm9yIGZpZWxkIHZhbHVlcyB0aGF0IGFyZSBvYmplY3RzLCBub3QganVzdCBwcmltaXRpdmVzXG4gICAgICAgICAgICBmaWVsZENvbnRyb2wuc2V0VmFsdWUodGhpcy5tYXBBcnJheVZhbHVlc1RvTnVsbChmaWVsZENvbnRyb2wudmFsdWUpKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ0RvY3VtZW50JzpcbiAgICAgICAgICAvLyBOT1RFOiBUaGUgZmllbGQgY29udHJvbCAoYSBGb3JtR3JvdXAgaW4gdGhpcyBjYXNlKSBjYW5ub3QganVzdCBiZSBzZXQgdG8gbnVsbCBiZWNhdXNlIEFuZ3VsYXIgY2hlY2tzIHRoYXRcbiAgICAgICAgICAvLyBhbGwgZXhpc3RpbmcgdmFsdWVzIG9mIGEgRm9ybUdyb3VwIGFyZSBwcmVzZW50OyBzZXR0aW5nIHRoZSBjb250cm9sJ3MgdmFsdWUgdG8gbnVsbCBjYXVzZXMgYSBydW50aW1lIGVycm9yXG4gICAgICAgICAgY29uc3QgZG9jdW1lbnRGaWVsZFZhbHVlID0gZmllbGRDb250cm9sLnZhbHVlO1xuICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIGRvY3VtZW50RmllbGRWYWx1ZSkge1xuICAgICAgICAgICAgaWYgKGZpZWxkQ29udHJvbC5nZXQoa2V5KSkge1xuICAgICAgICAgICAgICAvLyBUaGUgYmFjay1lbmQgZG9lc24ndCBhY2NlcHQgbnVsbCBhcyBhIHZhbGlkIHZhbHVlIGZvciBhbnkgb2YgdGhlIERvY3VtZW50IGZpZWxkIHR5cGUgcHJvcGVydGllcyBidXRcbiAgICAgICAgICAgICAgLy8gdGhpcyBpcyBoYW5kbGVkIGJ5IHNhbml0aXNlT2JqZWN0KCkgaW4gRm9ybVZhbHVlU2VydmljZSwgcmV0dXJuaW5nIGEgbnVsbCBvYmplY3QgZm9yIHRoZSBlbnRpcmVcbiAgICAgICAgICAgICAgLy8gRG9jdW1lbnQgZmllbGQsIGlmIGFueSBvZiBpdHMgcHJvcGVydGllcyBpcyBudWxsIC0gd2hpY2ggaXMgYWNjZXB0ZWQgYnkgdGhlIGJhY2stZW5kXG4gICAgICAgICAgICAgIGZpZWxkQ29udHJvbC5nZXQoa2V5KS5zZXRWYWx1ZShudWxsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIC8vIE5vdGU6IHRoZSBkZWZhdWx0IGNhc2UgYXBwbGllcyB0byBEeW5hbWljTGlzdCBmaWVsZHMsIHRvb1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGZpZWxkQ29udHJvbC5zZXRWYWx1ZShudWxsKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTWFwcyBhbGwgdmFsdWVzIG9mIGFuIGFycmF5IHRvIGBudWxsYCwgcmV0YWluaW5nIGtleXMgZm9yIGFueSB2YWx1ZXMgdGhhdCBhcmUgb2JqZWN0cy4gRm9yIGV4YW1wbGUsXG4gICAqIGBbeyBpZDogJzAnLCB2YWx1ZTogJ1Rlc3QnIH0sICdUZXN0J11gIHdvdWxkIGJlY29tZSBgW3sgaWQ6IG51bGwsIHZhbHVlOiBudWxsIH0sIG51bGxdYC5cbiAgICogQHBhcmFtIGFycmF5IFRoZSBhcnJheSBvZiB2YWx1ZXMgdG8gbWFwXG4gICAqIEByZXR1cm5zIEEgbmV3IGFycmF5IHdpdGggdGhlIG1hcHBlZCB2YWx1ZXNcbiAgICovXG4gIHB1YmxpYyBtYXBBcnJheVZhbHVlc1RvTnVsbChhcnJheTogYW55W10pOiBhbnlbXSB7XG4gICAgcmV0dXJuIGFycmF5Lm1hcChlbGVtZW50ID0+IHtcbiAgICAgIHJldHVybiB0eXBlb2YgZWxlbWVudCA9PT0gJ29iamVjdCdcbiAgICAgICAgPyBPYmplY3QuYXNzaWduKHt9LCAuLi5PYmplY3Qua2V5cyhlbGVtZW50KS5tYXAoayA9PiAoeyBba106IG51bGwgfSkpKVxuICAgICAgICA6IG51bGw7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|