@coolon/angular-ui-powerups 13.0.4 → 13.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/interaction/components/activity-triggers/inline-activity-trigger/inline-activity-trigger.component.mjs +1 -1
- package/esm2020/lib/interaction/components/add-card-activity/add-card-activity.component.mjs +1 -1
- package/esm2020/lib/interaction/components/add-item-interaction-context/add-item-interaction-context.component.mjs +1 -1
- package/esm2020/lib/interaction/components/editors/inline-string-editor/inline-string-editor.component.mjs +1 -1
- package/esm2020/lib/interaction/components/inplace-interaction-context/in-place-interaction-context.component.mjs +27 -4
- package/esm2020/lib/interaction/in-place-interaction-context.mjs +1 -1
- package/esm2020/lib/interaction/services/interaction.service.mjs +11 -11
- package/esm2020/lib/place/place-router.mjs +6 -2
- package/esm2020/lib/place/url-snapshot.mjs +2 -2
- package/fesm2015/coolon-angular-ui-powerups.mjs +46 -14
- package/fesm2015/coolon-angular-ui-powerups.mjs.map +1 -1
- package/fesm2020/coolon-angular-ui-powerups.mjs +41 -14
- package/fesm2020/coolon-angular-ui-powerups.mjs.map +1 -1
- package/lib/interaction/components/inplace-interaction-context/in-place-interaction-context.component.d.ts +8 -2
- package/lib/interaction/in-place-interaction-context.d.ts +1 -1
- package/lib/interaction/services/interaction.service.d.ts +5 -5
- package/package.json +1 -1
|
@@ -13,7 +13,7 @@ export class InlineActivityTriggerComponent extends AbstractActivityTriggerCompo
|
|
|
13
13
|
}
|
|
14
14
|
}
|
|
15
15
|
InlineActivityTriggerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: InlineActivityTriggerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
16
|
-
InlineActivityTriggerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: InlineActivityTriggerComponent, selector: "aup-inline-activity-trigger", viewQueries: [{ propertyName: "_interactionContext", first: true, predicate: InPlaceInteractionContextComponent, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<aup-in-place-interaction-context #interactionContext [animateFirstActivity]=\"false\">\n <aup-command [command]=\"startActivityCommand\" [faceModel]=\"faceModel\" [alignFace]=\"alignFace\"></aup-command>\n</aup-in-place-interaction-context>\n", styles: [":host{display:inline-block}\n"], components: [{ type: i1.InPlaceInteractionContextComponent, selector: "aup-in-place-interaction-context", inputs: ["animateFirstActivity"] }, { type: i2.CommandComponent, selector: "aup-command", inputs: ["command", "faceModel", "face", "busyFaceModel", "busyFace", "alignFace"] }] });
|
|
16
|
+
InlineActivityTriggerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: InlineActivityTriggerComponent, selector: "aup-inline-activity-trigger", viewQueries: [{ propertyName: "_interactionContext", first: true, predicate: InPlaceInteractionContextComponent, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<aup-in-place-interaction-context #interactionContext [animateFirstActivity]=\"false\">\n <aup-command [command]=\"startActivityCommand\" [faceModel]=\"faceModel\" [alignFace]=\"alignFace\"></aup-command>\n</aup-in-place-interaction-context>\n", styles: [":host{display:inline-block}\n"], components: [{ type: i1.InPlaceInteractionContextComponent, selector: "aup-in-place-interaction-context", inputs: ["animateFirstActivity", "syncWithRoutes"] }, { type: i2.CommandComponent, selector: "aup-command", inputs: ["command", "faceModel", "face", "busyFaceModel", "busyFace", "alignFace"] }] });
|
|
17
17
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: InlineActivityTriggerComponent, decorators: [{
|
|
18
18
|
type: Component,
|
|
19
19
|
args: [{ selector: 'aup-inline-activity-trigger', template: "<aup-in-place-interaction-context #interactionContext [animateFirstActivity]=\"false\">\n <aup-command [command]=\"startActivityCommand\" [faceModel]=\"faceModel\" [alignFace]=\"alignFace\"></aup-command>\n</aup-in-place-interaction-context>\n", styles: [":host{display:inline-block}\n"] }]
|
package/esm2020/lib/interaction/components/add-card-activity/add-card-activity.component.mjs
CHANGED
|
@@ -54,7 +54,7 @@ export class AddCardActivityComponent extends AbstractActivityTriggerComponent {
|
|
|
54
54
|
}
|
|
55
55
|
}
|
|
56
56
|
AddCardActivityComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: AddCardActivityComponent, deps: [{ token: i1.InteractionService }], target: i0.ɵɵFactoryTarget.Component });
|
|
57
|
-
AddCardActivityComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: AddCardActivityComponent, selector: "aup-add-card-activity", inputs: { interactionStyle: "interactionStyle", renderAs: "renderAs" }, host: { properties: { "class": "this.activityTypeClass", "class.not-card": "this.notCard" } }, viewQueries: [{ propertyName: "inlineInteractionContext", first: true, predicate: InPlaceInteractionContextComponent, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<aup-in-place-interaction-context [animateFirstActivity]=\"false\" [pectinCommand]=\"startActivityCommand\">\n <aup-command *ngIf=\"isRenderAsButton()\" [command]=\"startActivityCommand\" [faceModel]=\"faceModel\" [alignFace]=\"alignFace\"></aup-command>\n <section *ngIf=\"isRenderAsCard()\" class=\"face-wrapper\">\n <aup-command-face class=\"mat-button\" [faces]=\"faceList.value\"></aup-command-face>\n </section>\n</aup-in-place-interaction-context>\n", styles: [":host{display:flex;flex-direction:column;align-items:stretch;background-color:#fff}:host[interactionStyle=inline][renderas=card]:not(.active){transition:box-shadow .28s cubic-bezier(.4,0,.2,1);box-sizing:border-box;border:2px dashed rgba(0,0,0,.1);border-radius:6px;font-weight:300;cursor:pointer;color:#0000008a;background-color:#fffc}:host[interactionStyle=inline][renderas=card]:not(.active):hover{box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}:host[interactionStyle=inline][renderas=card]:not(.active):hover{border-color:transparent;background-color:#fff;color:#0000008a}:host[interactionStyle=modal][renderas=card]{transition:box-shadow .28s cubic-bezier(.4,0,.2,1);box-sizing:border-box;border:2px dashed rgba(0,0,0,.1);border-radius:6px;font-weight:300;cursor:pointer;color:#0000008a;background-color:#fffc}:host[interactionStyle=modal][renderas=card]:hover{box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}:host[interactionStyle=modal][renderas=card]:hover{border-color:transparent;background-color:#fff;color:#0000008a}:host-context(aup-card-container)[renderas=button]{align-self:start}section.face-wrapper{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center}aup-in-place-interaction-context{flex:1}aup-in-place-interaction-context.active{border:3px solid #6273c7;border-radius:4px;overflow:hidden}\n"], components: [{ type: i2.InPlaceInteractionContextComponent, selector: "aup-in-place-interaction-context", inputs: ["animateFirstActivity"] }, { type: i3.CommandComponent, selector: "aup-command", inputs: ["command", "faceModel", "face", "busyFaceModel", "busyFace", "alignFace"] }, { type: i4.CommandFaceComponent, selector: "aup-command-face", inputs: ["faces", "face", "ignoreIcon", "ignoreText", "includeMissingIconInLayout"] }], directives: [{ type: i5.CommandDirective, selector: "[pectinCommand]", inputs: ["pectinCommand", "commandParameter"] }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
57
|
+
AddCardActivityComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: AddCardActivityComponent, selector: "aup-add-card-activity", inputs: { interactionStyle: "interactionStyle", renderAs: "renderAs" }, host: { properties: { "class": "this.activityTypeClass", "class.not-card": "this.notCard" } }, viewQueries: [{ propertyName: "inlineInteractionContext", first: true, predicate: InPlaceInteractionContextComponent, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<aup-in-place-interaction-context [animateFirstActivity]=\"false\" [pectinCommand]=\"startActivityCommand\">\n <aup-command *ngIf=\"isRenderAsButton()\" [command]=\"startActivityCommand\" [faceModel]=\"faceModel\" [alignFace]=\"alignFace\"></aup-command>\n <section *ngIf=\"isRenderAsCard()\" class=\"face-wrapper\">\n <aup-command-face class=\"mat-button\" [faces]=\"faceList.value\"></aup-command-face>\n </section>\n</aup-in-place-interaction-context>\n", styles: [":host{display:flex;flex-direction:column;align-items:stretch;background-color:#fff}:host[interactionStyle=inline][renderas=card]:not(.active){transition:box-shadow .28s cubic-bezier(.4,0,.2,1);box-sizing:border-box;border:2px dashed rgba(0,0,0,.1);border-radius:6px;font-weight:300;cursor:pointer;color:#0000008a;background-color:#fffc}:host[interactionStyle=inline][renderas=card]:not(.active):hover{box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}:host[interactionStyle=inline][renderas=card]:not(.active):hover{border-color:transparent;background-color:#fff;color:#0000008a}:host[interactionStyle=modal][renderas=card]{transition:box-shadow .28s cubic-bezier(.4,0,.2,1);box-sizing:border-box;border:2px dashed rgba(0,0,0,.1);border-radius:6px;font-weight:300;cursor:pointer;color:#0000008a;background-color:#fffc}:host[interactionStyle=modal][renderas=card]:hover{box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}:host[interactionStyle=modal][renderas=card]:hover{border-color:transparent;background-color:#fff;color:#0000008a}:host-context(aup-card-container)[renderas=button]{align-self:start}section.face-wrapper{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center}aup-in-place-interaction-context{flex:1}aup-in-place-interaction-context.active{border:3px solid #6273c7;border-radius:4px;overflow:hidden}\n"], components: [{ type: i2.InPlaceInteractionContextComponent, selector: "aup-in-place-interaction-context", inputs: ["animateFirstActivity", "syncWithRoutes"] }, { type: i3.CommandComponent, selector: "aup-command", inputs: ["command", "faceModel", "face", "busyFaceModel", "busyFace", "alignFace"] }, { type: i4.CommandFaceComponent, selector: "aup-command-face", inputs: ["faces", "face", "ignoreIcon", "ignoreText", "includeMissingIconInLayout"] }], directives: [{ type: i5.CommandDirective, selector: "[pectinCommand]", inputs: ["pectinCommand", "commandParameter"] }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
58
58
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: AddCardActivityComponent, decorators: [{
|
|
59
59
|
type: Component,
|
|
60
60
|
args: [{ selector: 'aup-add-card-activity', template: "<aup-in-place-interaction-context [animateFirstActivity]=\"false\" [pectinCommand]=\"startActivityCommand\">\n <aup-command *ngIf=\"isRenderAsButton()\" [command]=\"startActivityCommand\" [faceModel]=\"faceModel\" [alignFace]=\"alignFace\"></aup-command>\n <section *ngIf=\"isRenderAsCard()\" class=\"face-wrapper\">\n <aup-command-face class=\"mat-button\" [faces]=\"faceList.value\"></aup-command-face>\n </section>\n</aup-in-place-interaction-context>\n", styles: [":host{display:flex;flex-direction:column;align-items:stretch;background-color:#fff}:host[interactionStyle=inline][renderas=card]:not(.active){transition:box-shadow .28s cubic-bezier(.4,0,.2,1);box-sizing:border-box;border:2px dashed rgba(0,0,0,.1);border-radius:6px;font-weight:300;cursor:pointer;color:#0000008a;background-color:#fffc}:host[interactionStyle=inline][renderas=card]:not(.active):hover{box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}:host[interactionStyle=inline][renderas=card]:not(.active):hover{border-color:transparent;background-color:#fff;color:#0000008a}:host[interactionStyle=modal][renderas=card]{transition:box-shadow .28s cubic-bezier(.4,0,.2,1);box-sizing:border-box;border:2px dashed rgba(0,0,0,.1);border-radius:6px;font-weight:300;cursor:pointer;color:#0000008a;background-color:#fffc}:host[interactionStyle=modal][renderas=card]:hover{box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}:host[interactionStyle=modal][renderas=card]:hover{border-color:transparent;background-color:#fff;color:#0000008a}:host-context(aup-card-container)[renderas=button]{align-self:start}section.face-wrapper{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center}aup-in-place-interaction-context{flex:1}aup-in-place-interaction-context.active{border:3px solid #6273c7;border-radius:4px;overflow:hidden}\n"] }]
|
|
@@ -42,7 +42,7 @@ export class AddItemInteractionContextComponent extends DisposableComponent {
|
|
|
42
42
|
}
|
|
43
43
|
}
|
|
44
44
|
AddItemInteractionContextComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: AddItemInteractionContextComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
45
|
-
AddItemInteractionContextComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: AddItemInteractionContextComponent, selector: "aup-add-item-interaction-context", inputs: { label: "label", icon: "icon", activityClass: "activityClass", activityData: "activityData", addCommand: "addCommand" }, host: { properties: { "class.interaction-active": "this.active", "tabindex": "this.tabindex" } }, viewQueries: [{ propertyName: "interactionContext", first: true, predicate: InPlaceInteractionContextComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<aup-in-place-interaction-context [animateFirstActivity]=\"false\">\n <a part=\"link\" class=\"link\" [pectinCommand]=\"clickCommand\"><aup-icon [icon]=\"icon\"></aup-icon> {{label}}</a>\n</aup-in-place-interaction-context>\n", styles: [":host{--def-link-color: var(--link-color, currentColor);--def-link-color-hover: var(--link-color-hover, currentColor);--def-link-background: var(--link-background, transparent);--def-link-background-hover: var(--link-background-hover, rgba(0, 0, 0, .05));--def-link-border-radius: var(--link-border-radius, 4px);--def-link-padding: var(--link-padding, calc(var(--aup-default-padding) / 2));display:flex;flex-direction:column;border-radius:var(--def-link-border-radius);box-sizing:border-box;outline:none}:host:hover a.link{color:var(--def-link-color-hover);background-color:var(--def-link-background-hover)}aup-in-place-interaction-context{border-radius:var(--def-link-border-radius)}a.link{display:flex;flex-direction:row;align-items:center;border-radius:var(--def-link-border-radius);color:var(--def-link-color);background:var(--def-link-background);padding:var(--def-link-padding);cursor:pointer;text-decoration:none}a.link mat-icon{margin-right:8px}\n"], components: [{ type: i1.InPlaceInteractionContextComponent, selector: "aup-in-place-interaction-context", inputs: ["animateFirstActivity"] }, { type: i2.IconComponent, selector: "aup-icon", inputs: ["icon"] }], directives: [{ type: i3.CommandDirective, selector: "[pectinCommand]", inputs: ["pectinCommand", "commandParameter"] }] });
|
|
45
|
+
AddItemInteractionContextComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: AddItemInteractionContextComponent, selector: "aup-add-item-interaction-context", inputs: { label: "label", icon: "icon", activityClass: "activityClass", activityData: "activityData", addCommand: "addCommand" }, host: { properties: { "class.interaction-active": "this.active", "tabindex": "this.tabindex" } }, viewQueries: [{ propertyName: "interactionContext", first: true, predicate: InPlaceInteractionContextComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<aup-in-place-interaction-context [animateFirstActivity]=\"false\">\n <a part=\"link\" class=\"link\" [pectinCommand]=\"clickCommand\"><aup-icon [icon]=\"icon\"></aup-icon> {{label}}</a>\n</aup-in-place-interaction-context>\n", styles: [":host{--def-link-color: var(--link-color, currentColor);--def-link-color-hover: var(--link-color-hover, currentColor);--def-link-background: var(--link-background, transparent);--def-link-background-hover: var(--link-background-hover, rgba(0, 0, 0, .05));--def-link-border-radius: var(--link-border-radius, 4px);--def-link-padding: var(--link-padding, calc(var(--aup-default-padding) / 2));display:flex;flex-direction:column;border-radius:var(--def-link-border-radius);box-sizing:border-box;outline:none}:host:hover a.link{color:var(--def-link-color-hover);background-color:var(--def-link-background-hover)}aup-in-place-interaction-context{border-radius:var(--def-link-border-radius)}a.link{display:flex;flex-direction:row;align-items:center;border-radius:var(--def-link-border-radius);color:var(--def-link-color);background:var(--def-link-background);padding:var(--def-link-padding);cursor:pointer;text-decoration:none}a.link mat-icon{margin-right:8px}\n"], components: [{ type: i1.InPlaceInteractionContextComponent, selector: "aup-in-place-interaction-context", inputs: ["animateFirstActivity", "syncWithRoutes"] }, { type: i2.IconComponent, selector: "aup-icon", inputs: ["icon"] }], directives: [{ type: i3.CommandDirective, selector: "[pectinCommand]", inputs: ["pectinCommand", "commandParameter"] }] });
|
|
46
46
|
__decorate([
|
|
47
47
|
TrackExternal(),
|
|
48
48
|
__metadata("design:type", Command)
|
|
@@ -117,7 +117,7 @@ export class InlineStringEditorComponent extends DisposableComponent {
|
|
|
117
117
|
}
|
|
118
118
|
}
|
|
119
119
|
InlineStringEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: InlineStringEditorComponent, deps: [{ token: i1.InteractionService }], target: i0.ɵɵFactoryTarget.Component });
|
|
120
|
-
InlineStringEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: InlineStringEditorComponent, selector: "aup-inline-string-editor", inputs: { editorModel: "editorModel", facesModel: "facesModel", faces: "faces", label: "label", placeHolder: "placeHolder", placeHolderModel: "placeHolderModel" }, viewQueries: [{ propertyName: "interactionContext", first: true, predicate: InPlaceInteractionContextComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"container\" *ngIf=\"!editorModel.isEditing()\">\n <mat-form-field appearance=\"standard\" floatLabel=\"always\" (click)=\"startEdit()\"\n [class.editable]=\"editingEnabled.value\" [class.empty]=\"isEmpty()\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <input matInput\n placeholder=\"{{placeHolder}}\"\n [ngModel]=\"editorModel.valueModel.value\"\n [disabled]=\"true\"\n >\n <!-- <mat-hint *ngIf=\"showHint\">{{hint}}</mat-hint>-->\n <!-- <mat-error *ngIf=\"hasErrors\">{{firstError}}</mat-error>-->\n <!-- <aup-icon *ngIf=\"iconPrefix\" matPrefix [icon]=\"iconPrefix\"></aup-icon>-->\n </mat-form-field>\n <aup-command *ngIf=\"editCommand.enabled.value\" [command]=\"editCommand\" [faceModel]=\"editFaceModel\"></aup-command>\n</div>\n<aup-in-place-interaction-context [animateFirstActivity]=\"false\"></aup-in-place-interaction-context>\n", components: [{ type: i2.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i3.CommandComponent, selector: "aup-command", inputs: ["command", "faceModel", "face", "busyFaceModel", "busyFace", "alignFace"] }, { type: i4.InPlaceInteractionContextComponent, selector: "aup-in-place-interaction-context", inputs: ["animateFirstActivity"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.MatLabel, selector: "mat-label" }, { type: i6.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
|
|
120
|
+
InlineStringEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: InlineStringEditorComponent, selector: "aup-inline-string-editor", inputs: { editorModel: "editorModel", facesModel: "facesModel", faces: "faces", label: "label", placeHolder: "placeHolder", placeHolderModel: "placeHolderModel" }, viewQueries: [{ propertyName: "interactionContext", first: true, predicate: InPlaceInteractionContextComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"container\" *ngIf=\"!editorModel.isEditing()\">\n <mat-form-field appearance=\"standard\" floatLabel=\"always\" (click)=\"startEdit()\"\n [class.editable]=\"editingEnabled.value\" [class.empty]=\"isEmpty()\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <input matInput\n placeholder=\"{{placeHolder}}\"\n [ngModel]=\"editorModel.valueModel.value\"\n [disabled]=\"true\"\n >\n <!-- <mat-hint *ngIf=\"showHint\">{{hint}}</mat-hint>-->\n <!-- <mat-error *ngIf=\"hasErrors\">{{firstError}}</mat-error>-->\n <!-- <aup-icon *ngIf=\"iconPrefix\" matPrefix [icon]=\"iconPrefix\"></aup-icon>-->\n </mat-form-field>\n <aup-command *ngIf=\"editCommand.enabled.value\" [command]=\"editCommand\" [faceModel]=\"editFaceModel\"></aup-command>\n</div>\n<aup-in-place-interaction-context [animateFirstActivity]=\"false\"></aup-in-place-interaction-context>\n", components: [{ type: i2.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i3.CommandComponent, selector: "aup-command", inputs: ["command", "faceModel", "face", "busyFaceModel", "busyFace", "alignFace"] }, { type: i4.InPlaceInteractionContextComponent, selector: "aup-in-place-interaction-context", inputs: ["animateFirstActivity", "syncWithRoutes"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.MatLabel, selector: "mat-label" }, { type: i6.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
|
|
121
121
|
__decorate([
|
|
122
122
|
TrackExternal(),
|
|
123
123
|
__metadata("design:type", InlineEditorModel)
|
|
@@ -28,6 +28,12 @@ export class InPlaceInteractionContextComponent extends DisposableComponent {
|
|
|
28
28
|
* the activity will replace the existing content immediately.
|
|
29
29
|
*/
|
|
30
30
|
this.animateFirstActivity = true;
|
|
31
|
+
/**
|
|
32
|
+
* If true the activity will sync with the router to enable back button support. This is a work around for
|
|
33
|
+
* deeply nested activities that can't be linked with the root place interactionContext hook for cancelling
|
|
34
|
+
* active interactions.
|
|
35
|
+
*/
|
|
36
|
+
this.syncWithRoutes = true;
|
|
31
37
|
}
|
|
32
38
|
get animationDuration() {
|
|
33
39
|
return this.animateFirstActivity ? (this.tabConfig?.animationDuration || "500ms") : "0ms";
|
|
@@ -36,9 +42,24 @@ export class InPlaceInteractionContextComponent extends DisposableComponent {
|
|
|
36
42
|
return this.isActive();
|
|
37
43
|
}
|
|
38
44
|
ngAfterViewInit() {
|
|
39
|
-
this.
|
|
45
|
+
// NOTE: this is a temp work around to detach inplace contexts from the router until AUP-88 is implemented.
|
|
46
|
+
// https://coolon.atlassian.net/browse/AUP-88?atlOrigin=eyJpIjoiOTg5YjEzZGUzZjRmNDg0NmExOWU3ZGJmMzJiNTRmNGYiLCJwIjoiaiJ9
|
|
47
|
+
if (this.syncWithRoutes) {
|
|
48
|
+
this.interactionService.registerInplaceInteractionContext(this);
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
this.activityContainerComponent.initialise("dont-care", {
|
|
52
|
+
async notifyActive(interactionContext) {
|
|
53
|
+
return undefined;
|
|
54
|
+
},
|
|
55
|
+
async notifyFinished(interactionContext) {
|
|
56
|
+
return undefined;
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
}
|
|
40
60
|
}
|
|
41
|
-
|
|
61
|
+
// this is a regsitration callback from the interaction service
|
|
62
|
+
onInplaceInteractionContextRegistered(id, api) {
|
|
42
63
|
this.activityContainerComponent.initialise(id, api);
|
|
43
64
|
}
|
|
44
65
|
get identifier() {
|
|
@@ -70,7 +91,7 @@ export class InPlaceInteractionContextComponent extends DisposableComponent {
|
|
|
70
91
|
}
|
|
71
92
|
}
|
|
72
93
|
InPlaceInteractionContextComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: InPlaceInteractionContextComponent, deps: [{ token: i1.InteractionService }, { token: MAT_TABS_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
73
|
-
InPlaceInteractionContextComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: InPlaceInteractionContextComponent, selector: "aup-in-place-interaction-context", inputs: { animateFirstActivity: "animateFirstActivity" }, host: { properties: { "class.active": "this.active" } }, viewQueries: [{ propertyName: "activityContainerComponent", first: true, predicate: ["activityContainer"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<mat-tab-group no-tab-header [selectedIndex]=\"isActive() ? 1 : 0\" full-height-tabs [dynamicHeight]=\"false\" [animationDuration]=\"animationDuration\">\n <mat-tab>\n <ng-content></ng-content>\n </mat-tab>\n <mat-tab>\n <aup-activity-container #activityContainer [dynamicHeight]=\"false\"></aup-activity-container>\n </mat-tab>\n</mat-tab-group>\n\n", styles: [":host{display:flex;flex-direction:column}mat-tab-group{flex:1}aup-activity-container{flex:1}\n"], components: [{ type: i2.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple"], exportAs: ["matTabGroup"] }, { type: i2.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass"], exportAs: ["matTab"] }, { type: i3.ActivityContainerComponent, selector: "aup-activity-container", inputs: ["dynamicHeight"] }] });
|
|
94
|
+
InPlaceInteractionContextComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: InPlaceInteractionContextComponent, selector: "aup-in-place-interaction-context", inputs: { animateFirstActivity: "animateFirstActivity", syncWithRoutes: "syncWithRoutes" }, host: { properties: { "class.active": "this.active" } }, viewQueries: [{ propertyName: "activityContainerComponent", first: true, predicate: ["activityContainer"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<mat-tab-group no-tab-header [selectedIndex]=\"isActive() ? 1 : 0\" full-height-tabs [dynamicHeight]=\"false\" [animationDuration]=\"animationDuration\">\n <mat-tab>\n <ng-content></ng-content>\n </mat-tab>\n <mat-tab>\n <aup-activity-container #activityContainer [dynamicHeight]=\"false\"></aup-activity-container>\n </mat-tab>\n</mat-tab-group>\n\n", styles: [":host{display:flex;flex-direction:column}mat-tab-group{flex:1}aup-activity-container{flex:1}\n"], components: [{ type: i2.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple"], exportAs: ["matTabGroup"] }, { type: i2.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass"], exportAs: ["matTab"] }, { type: i3.ActivityContainerComponent, selector: "aup-activity-container", inputs: ["dynamicHeight"] }] });
|
|
74
95
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: InPlaceInteractionContextComponent, decorators: [{
|
|
75
96
|
type: Component,
|
|
76
97
|
args: [{ selector: "aup-in-place-interaction-context", template: "<mat-tab-group no-tab-header [selectedIndex]=\"isActive() ? 1 : 0\" full-height-tabs [dynamicHeight]=\"false\" [animationDuration]=\"animationDuration\">\n <mat-tab>\n <ng-content></ng-content>\n </mat-tab>\n <mat-tab>\n <aup-activity-container #activityContainer [dynamicHeight]=\"false\"></aup-activity-container>\n </mat-tab>\n</mat-tab-group>\n\n", styles: [":host{display:flex;flex-direction:column}mat-tab-group{flex:1}aup-activity-container{flex:1}\n"] }]
|
|
@@ -84,8 +105,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImpor
|
|
|
84
105
|
args: ["activityContainer", { static: true }]
|
|
85
106
|
}], animateFirstActivity: [{
|
|
86
107
|
type: Input
|
|
108
|
+
}], syncWithRoutes: [{
|
|
109
|
+
type: Input
|
|
87
110
|
}], active: [{
|
|
88
111
|
type: HostBinding,
|
|
89
112
|
args: ["class.active"]
|
|
90
113
|
}] } });
|
|
91
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW4tcGxhY2UtaW50ZXJhY3Rpb24tY29udGV4dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdWktcG93ZXJ1cHMvc3JjL2xpYi9pbnRlcmFjdGlvbi9jb21wb25lbnRzL2lucGxhY2UtaW50ZXJhY3Rpb24tY29udGV4dC9pbi1wbGFjZS1pbnRlcmFjdGlvbi1jb250ZXh0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci11aS1wb3dlcnVwcy9zcmMvbGliL2ludGVyYWN0aW9uL2NvbXBvbmVudHMvaW5wbGFjZS1pbnRlcmFjdGlvbi1jb250ZXh0L2luLXBsYWNlLWludGVyYWN0aW9uLWNvbnRleHQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRyxPQUFPLEVBQUUsZUFBZSxFQUFpQixNQUFNLHdCQUF3QixDQUFDO0FBRXhFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBTS9FLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDOzs7OztBQUVoRzs7Ozs7Ozs7OztHQVVHO0FBTUgsTUFBTSxPQUFPLGtDQUE0QyxTQUFRLG1CQUFtQjtJQXFCbEYsWUFBcUIsa0JBQXNDLEVBQXdELFNBQXdCO1FBQ3pJLEtBQUssRUFBRSxDQUFDO1FBRFcsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUF3RCxjQUFTLEdBQVQsU0FBUyxDQUFlO1FBaEIzSTs7O1dBR0c7UUFFSCx5QkFBb0IsR0FBRyxJQUFJLENBQUM7SUFhNUIsQ0FBQztJQVhELElBQUksaUJBQWlCO1FBQ25CLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsaUJBQWlCLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUM1RixDQUFDO0lBRUQsSUFDSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQU1ELGVBQWU7UUFDYixJQUFJLENBQUMsa0JBQWtCLENBQUMsaUNBQWlDLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVELFVBQVUsQ0FBQyxFQUFVLEVBQUUsR0FBMkI7UUFDaEQsSUFBSSxDQUFDLDBCQUEwQixDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVELElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLDBCQUEwQixDQUFDLFVBQVUsQ0FBQztJQUNwRCxDQUFDO0lBRUQsS0FBSyxDQUFDLEtBQVk7UUFDaEIsT0FBTyxJQUFJLENBQUMsMEJBQTBCLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxvQkFBb0I7UUFDbEIsT0FBTyxJQUFJLENBQUMsMEJBQTBCLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztJQUNoRSxDQUFDO0lBRUQsT0FBTyxDQUFDLE9BQWdCO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLDBCQUEwQixDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQsZUFBZSxDQUFDLE9BQWdCO1FBQzlCLE9BQU8sSUFBSSxDQUFDLDBCQUEwQixDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQsV0FBVyxDQUFhLE9BQWdCLEVBQUUsWUFBaUQsRUFBRSxJQUFTO1FBQ3BHLE9BQU8sSUFBSSxDQUFDLDBCQUEwQixDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDNUUsQ0FBQztJQUVELGtCQUFrQixDQUFLLE9BQWdCLEVBQUUsU0FBeUU7UUFDaEgsT0FBTyxJQUFJLENBQUMsMEJBQTBCLENBQUMsa0JBQWtCLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ2hGLENBQUM7SUFHRCxRQUFRO1FBQ04sT0FBTyxJQUFJLENBQUMsMEJBQTBCLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDcEQsQ0FBQztJQUVELGFBQWEsQ0FBYSxZQUFpRCxFQUFFLElBQVMsRUFBRSxPQUFvQztRQUMxSCxPQUFPLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNwRixDQUFDOzsrSEFwRVUsa0NBQWtDLG9EQXFCd0IsZUFBZTttSEFyQnpFLGtDQUFrQyxpV0M1Qi9DLDBXQVNBOzJGRG1CYSxrQ0FBa0M7a0JBTDlDLFNBQVM7K0JBQ0Usa0NBQWtDOzswQkF5QmtCLE1BQU07MkJBQUMsZUFBZTs7MEJBQUcsUUFBUTs0Q0FsQi9GLDBCQUEwQjtzQkFEekIsU0FBUzt1QkFBQyxtQkFBbUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBUWhELG9CQUFvQjtzQkFEbkIsS0FBSztnQkFRRixNQUFNO3NCQURULFdBQVc7dUJBQUMsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgSG9zdEJpbmRpbmcsIEluamVjdCwgSW5wdXQsIE9wdGlvbmFsLCBWaWV3Q2hpbGQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgTUFUX1RBQlNfQ09ORklHLCBNYXRUYWJzQ29uZmlnIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3RhYnNcIjtcbmltcG9ydCB7IENvbnN0cnVjdGFibGUgfSBmcm9tIFwiQGNvb2xvbi9wZWN0aW5cIjtcbmltcG9ydCB7IERpc3Bvc2FibGVDb21wb25lbnQgfSBmcm9tIFwiLi4vLi4vLi4vY29tcG9uZW50cy9kaXNwb3NhYmxlLWNvbXBvbmVudFwiO1xuaW1wb3J0IHsgQWN0aXZpdHkgfSBmcm9tIFwiLi4vLi4vYWN0aXZpdHlcIjtcbmltcG9ydCB7IEFsZXJ0IH0gZnJvbSBcIi4uLy4uL2FsZXJ0XCI7XG5pbXBvcnQgeyBDb25maXJtIH0gZnJvbSBcIi4uLy4uL2NvbmZpcm1cIjtcbmltcG9ydCB7IEluUGxhY2VJbnRlcmFjdGlvbkNvbnRleHQgfSBmcm9tIFwiLi4vLi4vaW4tcGxhY2UtaW50ZXJhY3Rpb24tY29udGV4dFwiO1xuaW1wb3J0IHsgSW50ZXJhY3Rpb25Db250ZXh0IH0gZnJvbSBcIi4uLy4uL2ludGVyYWN0aW9uLWNvbnRleHRcIjtcbmltcG9ydCB7IEludGVyYWN0aW9uU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9pbnRlcmFjdGlvbi5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBBY3Rpdml0eUNvbnRhaW5lckNvbXBvbmVudCB9IGZyb20gXCIuLi9hY3Rpdml0eS1jb250YWluZXIvYWN0aXZpdHktY29udGFpbmVyLmNvbXBvbmVudFwiO1xuXG4vKipcbiAqIEBleGFtcGxlXG4gKiAgIDxhdXAtaW4tcGxhY2UtaW50ZXJhY3Rpb24tY29udGV4dCAjaW5QbGFjZUludGVyYWN0aW9uQ29udGV4dD5cbiAqICAgPC9hdXAtaW4tcGxhY2UtaW50ZXJhY3Rpb24tY29udGV4dD5cbiAqXG4gKiAgIGluIHlvdXIgY29tcG9uZW50XG4gKiAgICAgQFZpZXdDaGlsZCgnaW5QbGFjZUludGVyYWN0aW9uQ29udGV4dCcsIHsgc3RhdGljOiB0cnVlIH0pXG4gKiAgICAgaW50ZXJhY3Rpb25Db250ZXh0OiBJbnRlcmFjdGlvbkNvbnRleHQ7XG4gKlxuICpcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcImF1cC1pbi1wbGFjZS1pbnRlcmFjdGlvbi1jb250ZXh0XCIsXG4gIHRlbXBsYXRlVXJsOiBcIi4vaW4tcGxhY2UtaW50ZXJhY3Rpb24tY29udGV4dC5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZVVybHM6IFtcIi4vaW4tcGxhY2UtaW50ZXJhY3Rpb24tY29udGV4dC5jb21wb25lbnQuc2Nzc1wiXVxufSlcbmV4cG9ydCBjbGFzcyBJblBsYWNlSW50ZXJhY3Rpb25Db250ZXh0Q29tcG9uZW50PEQsIFIsIEU+IGV4dGVuZHMgRGlzcG9zYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIEluUGxhY2VJbnRlcmFjdGlvbkNvbnRleHQsIEFmdGVyVmlld0luaXQge1xuXG4gIEBWaWV3Q2hpbGQoXCJhY3Rpdml0eUNvbnRhaW5lclwiLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBhY3Rpdml0eUNvbnRhaW5lckNvbXBvbmVudDogQWN0aXZpdHlDb250YWluZXJDb21wb25lbnQ8YW55LCBhbnksIGFueT47XG5cbiAgLyoqXG4gICAqIElmIHRydWUgdGhlbiB0aGUgZmlyc3Qgc3RhcnRBY3Rpdml0eSBjYWxsIHdpbGwgc2xpZGUgdGhlIGFjdGl2aXR5IGludG8gdmlldy4gSWYgZmFsc2VcbiAgICogdGhlIGFjdGl2aXR5IHdpbGwgcmVwbGFjZSB0aGUgZXhpc3RpbmcgY29udGVudCBpbW1lZGlhdGVseS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGFuaW1hdGVGaXJzdEFjdGl2aXR5ID0gdHJ1ZTtcblxuICBnZXQgYW5pbWF0aW9uRHVyYXRpb24oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5hbmltYXRlRmlyc3RBY3Rpdml0eSA/ICh0aGlzLnRhYkNvbmZpZz8uYW5pbWF0aW9uRHVyYXRpb24gfHwgXCI1MDBtc1wiKSA6IFwiMG1zXCI7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoXCJjbGFzcy5hY3RpdmVcIilcbiAgZ2V0IGFjdGl2ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5pc0FjdGl2ZSgpO1xuICB9XG5cbiAgY29uc3RydWN0b3IocmVhZG9ubHkgaW50ZXJhY3Rpb25TZXJ2aWNlOiBJbnRlcmFjdGlvblNlcnZpY2UsIEBJbmplY3QoTUFUX1RBQlNfQ09ORklHKSBAT3B0aW9uYWwoKSBwcml2YXRlIHJlYWRvbmx5IHRhYkNvbmZpZzogTWF0VGFic0NvbmZpZykge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pbnRlcmFjdGlvblNlcnZpY2UucmVnaXN0ZXJJbnBsYWNlSW50ZXJhY3Rpb25Db250ZXh0KHRoaXMpO1xuICB9XG5cbiAgaW5pdGlhbGlzZShpZDogc3RyaW5nLCBhcGk6IEludGVyYWN0aW9uU2VydmljZS5BcGkpIHtcbiAgICB0aGlzLmFjdGl2aXR5Q29udGFpbmVyQ29tcG9uZW50LmluaXRpYWxpc2UoaWQsIGFwaSk7XG4gIH1cblxuICBnZXQgaWRlbnRpZmllcigpIHtcbiAgICByZXR1cm4gdGhpcy5hY3Rpdml0eUNvbnRhaW5lckNvbXBvbmVudC5pZGVudGlmaWVyO1xuICB9XG5cbiAgYWxlcnQoYWxlcnQ6IEFsZXJ0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuYWN0aXZpdHlDb250YWluZXJDb21wb25lbnQuYWxlcnQoYWxlcnQpO1xuICB9XG5cbiAgY2FuY2VsQWN0aXZlQWN0aXZpdHkoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuYWN0aXZpdHlDb250YWluZXJDb21wb25lbnQuY2FuY2VsQWN0aXZlQWN0aXZpdHkoKTtcbiAgfVxuXG4gIGNvbmZpcm0oY29uZmlybTogQ29uZmlybSk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmFjdGl2aXR5Q29udGFpbmVyQ29tcG9uZW50LmNvbmZpcm0oY29uZmlybSk7XG4gIH1cblxuICBjb25maXJtT3JSZWplY3QoY29uZmlybTogQ29uZmlybSk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLmFjdGl2aXR5Q29udGFpbmVyQ29tcG9uZW50LmNvbmZpcm1PclJlamVjdChjb25maXJtKTtcbiAgfVxuXG4gIGNvbmZpcm1UaGVuPEQxLCBSMSwgRTE+KGNvbmZpcm06IENvbmZpcm0sIGFjdGl2aXR5VHlwZTogQ29uc3RydWN0YWJsZTxBY3Rpdml0eTxEMSwgUjEsIEUxPj4sIGRhdGE/OiBEMSk6IFByb21pc2U8UjE+IHtcbiAgICByZXR1cm4gdGhpcy5hY3Rpdml0eUNvbnRhaW5lckNvbXBvbmVudC5jb25maXJtVGhlbihjb25maXJtLCBhY3Rpdml0eVR5cGUpO1xuICB9XG5cbiAgY29uZmlybVRoZW5FeGVjdXRlPFIxPihjb25maXJtOiBDb25maXJtLCBvcGVyYXRpb246IChpbnRlcmFjdGlvbkNvbnRleHQ6IEludGVyYWN0aW9uQ29udGV4dCkgPT4gKFByb21pc2U8UjE+IHwgUjEpKTogUHJvbWlzZTxSMT4ge1xuICAgIHJldHVybiB0aGlzLmFjdGl2aXR5Q29udGFpbmVyQ29tcG9uZW50LmNvbmZpcm1UaGVuRXhlY3V0ZShjb25maXJtLCBvcGVyYXRpb24pO1xuICB9XG5cblxuICBpc0FjdGl2ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5hY3Rpdml0eUNvbnRhaW5lckNvbXBvbmVudC5pc0FjdGl2ZSgpO1xuICB9XG5cbiAgc3RhcnRBY3Rpdml0eTxEMSwgUjEsIEUxPihhY3Rpdml0eVR5cGU6IENvbnN0cnVjdGFibGU8QWN0aXZpdHk8RDEsIFIxLCBFMT4+LCBkYXRhPzogRDEsIG9wdGlvbnM/OiBJbnRlcmFjdGlvbkNvbnRleHQuT3B0aW9ucyk6IFByb21pc2U8UjE+IHtcbiAgICByZXR1cm4gdGhpcy5hY3Rpdml0eUNvbnRhaW5lckNvbXBvbmVudC5zdGFydEFjdGl2aXR5KGFjdGl2aXR5VHlwZSwgZGF0YSwgb3B0aW9ucyk7XG4gIH1cblxufVxuIiwiPG1hdC10YWItZ3JvdXAgbm8tdGFiLWhlYWRlciBbc2VsZWN0ZWRJbmRleF09XCJpc0FjdGl2ZSgpID8gMSA6IDBcIiBmdWxsLWhlaWdodC10YWJzIFtkeW5hbWljSGVpZ2h0XT1cImZhbHNlXCIgW2FuaW1hdGlvbkR1cmF0aW9uXT1cImFuaW1hdGlvbkR1cmF0aW9uXCI+XG4gIDxtYXQtdGFiPlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgPC9tYXQtdGFiPlxuICA8bWF0LXRhYj5cbiAgICA8YXVwLWFjdGl2aXR5LWNvbnRhaW5lciAjYWN0aXZpdHlDb250YWluZXIgW2R5bmFtaWNIZWlnaHRdPVwiZmFsc2VcIj48L2F1cC1hY3Rpdml0eS1jb250YWluZXI+XG4gIDwvbWF0LXRhYj5cbjwvbWF0LXRhYi1ncm91cD5cblxuIl19
|
|
114
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW4tcGxhY2UtaW50ZXJhY3Rpb24tY29udGV4dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdWktcG93ZXJ1cHMvc3JjL2xpYi9pbnRlcmFjdGlvbi9jb21wb25lbnRzL2lucGxhY2UtaW50ZXJhY3Rpb24tY29udGV4dC9pbi1wbGFjZS1pbnRlcmFjdGlvbi1jb250ZXh0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci11aS1wb3dlcnVwcy9zcmMvbGliL2ludGVyYWN0aW9uL2NvbXBvbmVudHMvaW5wbGFjZS1pbnRlcmFjdGlvbi1jb250ZXh0L2luLXBsYWNlLWludGVyYWN0aW9uLWNvbnRleHQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRyxPQUFPLEVBQUUsZUFBZSxFQUFpQixNQUFNLHdCQUF3QixDQUFDO0FBRXhFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBTS9FLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDOzs7OztBQUVoRzs7Ozs7Ozs7OztHQVVHO0FBTUgsTUFBTSxPQUFPLGtDQUE0QyxTQUFRLG1CQUFtQjtJQTZCbEYsWUFBcUIsa0JBQXNDLEVBQXdELFNBQXdCO1FBQ3pJLEtBQUssRUFBRSxDQUFDO1FBRFcsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUF3RCxjQUFTLEdBQVQsU0FBUyxDQUFlO1FBeEIzSTs7O1dBR0c7UUFFSCx5QkFBb0IsR0FBRyxJQUFJLENBQUM7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QUFjO3NCQURiLEtBQUs7Z0JBUUYsTUFBTTtzQkFEVCxXQUFXO3VCQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEhvc3RCaW5kaW5nLCBJbmplY3QsIElucHV0LCBPcHRpb25hbCwgVmlld0NoaWxkIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IE1BVF9UQUJTX0NPTkZJRywgTWF0VGFic0NvbmZpZyB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC90YWJzXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3RhYmxlIH0gZnJvbSBcIkBjb29sb24vcGVjdGluXCI7XG5pbXBvcnQgeyBEaXNwb3NhYmxlQ29tcG9uZW50IH0gZnJvbSBcIi4uLy4uLy4uL2NvbXBvbmVudHMvZGlzcG9zYWJsZS1jb21wb25lbnRcIjtcbmltcG9ydCB7IEFjdGl2aXR5IH0gZnJvbSBcIi4uLy4uL2FjdGl2aXR5XCI7XG5pbXBvcnQgeyBBbGVydCB9IGZyb20gXCIuLi8uLi9hbGVydFwiO1xuaW1wb3J0IHsgQ29uZmlybSB9IGZyb20gXCIuLi8uLi9jb25maXJtXCI7XG5pbXBvcnQgeyBJblBsYWNlSW50ZXJhY3Rpb25Db250ZXh0IH0gZnJvbSBcIi4uLy4uL2luLXBsYWNlLWludGVyYWN0aW9uLWNvbnRleHRcIjtcbmltcG9ydCB7IEludGVyYWN0aW9uQ29udGV4dCB9IGZyb20gXCIuLi8uLi9pbnRlcmFjdGlvbi1jb250ZXh0XCI7XG5pbXBvcnQgeyBJbnRlcmFjdGlvblNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvaW50ZXJhY3Rpb24uc2VydmljZVwiO1xuaW1wb3J0IHsgQWN0aXZpdHlDb250YWluZXJDb21wb25lbnQgfSBmcm9tIFwiLi4vYWN0aXZpdHktY29udGFpbmVyL2FjdGl2aXR5LWNvbnRhaW5lci5jb21wb25lbnRcIjtcblxuLyoqXG4gKiBAZXhhbXBsZVxuICogICA8YXVwLWluLXBsYWNlLWludGVyYWN0aW9uLWNvbnRleHQgI2luUGxhY2VJbnRlcmFjdGlvbkNvbnRleHQ+XG4gKiAgIDwvYXVwLWluLXBsYWNlLWludGVyYWN0aW9uLWNvbnRleHQ+XG4gKlxuICogICBpbiB5b3VyIGNvbXBvbmVudFxuICogICAgIEBWaWV3Q2hpbGQoJ2luUGxhY2VJbnRlcmFjdGlvbkNvbnRleHQnLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICogICAgIGludGVyYWN0aW9uQ29udGV4dDogSW50ZXJhY3Rpb25Db250ZXh0O1xuICpcbiAqXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJhdXAtaW4tcGxhY2UtaW50ZXJhY3Rpb24tY29udGV4dFwiLFxuICB0ZW1wbGF0ZVVybDogXCIuL2luLXBsYWNlLWludGVyYWN0aW9uLWNvbnRleHQuY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVVcmxzOiBbXCIuL2luLXBsYWNlLWludGVyYWN0aW9uLWNvbnRleHQuY29tcG9uZW50LnNjc3NcIl1cbn0pXG5leHBvcnQgY2xhc3MgSW5QbGFjZUludGVyYWN0aW9uQ29udGV4dENvbXBvbmVudDxELCBSLCBFPiBleHRlbmRzIERpc3Bvc2FibGVDb21wb25lbnQgaW1wbGVtZW50cyBJblBsYWNlSW50ZXJhY3Rpb25Db250ZXh0LCBBZnRlclZpZXdJbml0IHtcblxuICBAVmlld0NoaWxkKFwiYWN0aXZpdHlDb250YWluZXJcIiwgeyBzdGF0aWM6IHRydWUgfSlcbiAgYWN0aXZpdHlDb250YWluZXJDb21wb25lbnQ6IEFjdGl2aXR5Q29udGFpbmVyQ29tcG9uZW50PGFueSwgYW55LCBhbnk+O1xuXG4gIC8qKlxuICAgKiBJZiB0cnVlIHRoZW4gdGhlIGZpcnN0IHN0YXJ0QWN0aXZpdHkgY2FsbCB3aWxsIHNsaWRlIHRoZSBhY3Rpdml0eSBpbnRvIHZpZXcuIElmIGZhbHNlXG4gICAqIHRoZSBhY3Rpdml0eSB3aWxsIHJlcGxhY2UgdGhlIGV4aXN0aW5nIGNvbnRlbnQgaW1tZWRpYXRlbHkuXG4gICAqL1xuICBASW5wdXQoKVxuICBhbmltYXRlRmlyc3RBY3Rpdml0eSA9IHRydWU7XG5cbiAgLyoqXG4gICAqIElmIHRydWUgdGhlIGFjdGl2aXR5IHdpbGwgc3luYyB3aXRoIHRoZSByb3V0ZXIgdG8gZW5hYmxlIGJhY2sgYnV0dG9uIHN1cHBvcnQuICBUaGlzIGlzIGEgd29yayBhcm91bmQgZm9yXG4gICAqIGRlZXBseSBuZXN0ZWQgYWN0aXZpdGllcyB0aGF0IGNhbid0IGJlIGxpbmtlZCB3aXRoIHRoZSByb290IHBsYWNlIGludGVyYWN0aW9uQ29udGV4dCBob29rIGZvciBjYW5jZWxsaW5nXG4gICAqIGFjdGl2ZSBpbnRlcmFjdGlvbnMuXG4gICAqL1xuICBASW5wdXQoKVxuICBzeW5jV2l0aFJvdXRlcyA9IHRydWU7XG5cbiAgZ2V0IGFuaW1hdGlvbkR1cmF0aW9uKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuYW5pbWF0ZUZpcnN0QWN0aXZpdHkgPyAodGhpcy50YWJDb25maWc/LmFuaW1hdGlvbkR1cmF0aW9uIHx8IFwiNTAwbXNcIikgOiBcIjBtc1wiO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKFwiY2xhc3MuYWN0aXZlXCIpXG4gIGdldCBhY3RpdmUoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNBY3RpdmUoKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHJlYWRvbmx5IGludGVyYWN0aW9uU2VydmljZTogSW50ZXJhY3Rpb25TZXJ2aWNlLCBASW5qZWN0KE1BVF9UQUJTX0NPTkZJRykgQE9wdGlvbmFsKCkgcHJpdmF0ZSByZWFkb25seSB0YWJDb25maWc6IE1hdFRhYnNDb25maWcpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIC8vIE5PVEU6IHRoaXMgaXMgYSB0ZW1wIHdvcmsgYXJvdW5kIHRvIGRldGFjaCBpbnBsYWNlIGNvbnRleHRzIGZyb20gdGhlIHJvdXRlciB1bnRpbCBBVVAtODggaXMgaW1wbGVtZW50ZWQuXG4gICAgLy8gaHR0cHM6Ly9jb29sb24uYXRsYXNzaWFuLm5ldC9icm93c2UvQVVQLTg4P2F0bE9yaWdpbj1leUpwSWpvaU9UZzVZakV6WkdVelpqUm1ORGcwTm1FeE9XVTNaR0ptTXpKaU5UUm1OR1lpTENKd0lqb2lhaUo5XG5cbiAgICBpZiAodGhpcy5zeW5jV2l0aFJvdXRlcykge1xuICAgICAgdGhpcy5pbnRlcmFjdGlvblNlcnZpY2UucmVnaXN0ZXJJbnBsYWNlSW50ZXJhY3Rpb25Db250ZXh0KHRoaXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmFjdGl2aXR5Q29udGFpbmVyQ29tcG9uZW50LmluaXRpYWxpc2UoXCJkb250LWNhcmVcIiwge1xuICAgICAgICBhc3luYyBub3RpZnlBY3RpdmUoaW50ZXJhY3Rpb25Db250ZXh0OiBJbnRlcmFjdGlvbkNvbnRleHQpOiBQcm9taXNlPHVua25vd24+IHtcbiAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9LFxuICAgICAgICBhc3luYyBub3RpZnlGaW5pc2hlZChpbnRlcmFjdGlvbkNvbnRleHQ6IEludGVyYWN0aW9uQ29udGV4dCk6IFByb21pc2U8dW5rbm93bj4ge1xuICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8vIHRoaXMgaXMgYSByZWdzaXRyYXRpb24gY2FsbGJhY2sgZnJvbSB0aGUgaW50ZXJhY3Rpb24gc2VydmljZVxuICBvbklucGxhY2VJbnRlcmFjdGlvbkNvbnRleHRSZWdpc3RlcmVkKGlkOiBzdHJpbmcsIGFwaTogSW50ZXJhY3Rpb25TZXJ2aWNlLkFwaSkge1xuICAgIHRoaXMuYWN0aXZpdHlDb250YWluZXJDb21wb25lbnQuaW5pdGlhbGlzZShpZCwgYXBpKTtcbiAgfVxuXG4gIGdldCBpZGVudGlmaWVyKCkge1xuICAgIHJldHVybiB0aGlzLmFjdGl2aXR5Q29udGFpbmVyQ29tcG9uZW50LmlkZW50aWZpZXI7XG4gIH1cblxuICBhbGVydChhbGVydDogQWxlcnQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5hY3Rpdml0eUNvbnRhaW5lckNvbXBvbmVudC5hbGVydChhbGVydCk7XG4gIH1cblxuICBjYW5jZWxBY3RpdmVBY3Rpdml0eSgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5hY3Rpdml0eUNvbnRhaW5lckNvbXBvbmVudC5jYW5jZWxBY3RpdmVBY3Rpdml0eSgpO1xuICB9XG5cbiAgY29uZmlybShjb25maXJtOiBDb25maXJtKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuYWN0aXZpdHlDb250YWluZXJDb21wb25lbnQuY29uZmlybShjb25maXJtKTtcbiAgfVxuXG4gIGNvbmZpcm1PclJlamVjdChjb25maXJtOiBDb25maXJtKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuYWN0aXZpdHlDb250YWluZXJDb21wb25lbnQuY29uZmlybU9yUmVqZWN0KGNvbmZpcm0pO1xuICB9XG5cbiAgY29uZmlybVRoZW48RDEsIFIxLCBFMT4oY29uZmlybTogQ29uZmlybSwgYWN0aXZpdHlUeXBlOiBDb25zdHJ1Y3RhYmxlPEFjdGl2aXR5PEQxLCBSMSwgRTE+PiwgZGF0YT86IEQxKTogUHJvbWlzZTxSMT4ge1xuICAgIHJldHVybiB0aGlzLmFjdGl2aXR5Q29udGFpbmVyQ29tcG9uZW50LmNvbmZpcm1UaGVuKGNvbmZpcm0sIGFjdGl2aXR5VHlwZSk7XG4gIH1cblxuICBjb25maXJtVGhlbkV4ZWN1dGU8UjE+KGNvbmZpcm06IENvbmZpcm0sIG9wZXJhdGlvbjogKGludGVyYWN0aW9uQ29udGV4dDogSW50ZXJhY3Rpb25Db250ZXh0KSA9PiAoUHJvbWlzZTxSMT4gfCBSMSkpOiBQcm9taXNlPFIxPiB7XG4gICAgcmV0dXJuIHRoaXMuYWN0aXZpdHlDb250YWluZXJDb21wb25lbnQuY29uZmlybVRoZW5FeGVjdXRlKGNvbmZpcm0sIG9wZXJhdGlvbik7XG4gIH1cblxuXG4gIGlzQWN0aXZlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmFjdGl2aXR5Q29udGFpbmVyQ29tcG9uZW50LmlzQWN0aXZlKCk7XG4gIH1cblxuICBzdGFydEFjdGl2aXR5PEQxLCBSMSwgRTE+KGFjdGl2aXR5VHlwZTogQ29uc3RydWN0YWJsZTxBY3Rpdml0eTxEMSwgUjEsIEUxPj4sIGRhdGE/OiBEMSwgb3B0aW9ucz86IEludGVyYWN0aW9uQ29udGV4dC5PcHRpb25zKTogUHJvbWlzZTxSMT4ge1xuICAgIHJldHVybiB0aGlzLmFjdGl2aXR5Q29udGFpbmVyQ29tcG9uZW50LnN0YXJ0QWN0aXZpdHkoYWN0aXZpdHlUeXBlLCBkYXRhLCBvcHRpb25zKTtcbiAgfVxuXG59XG4iLCI8bWF0LXRhYi1ncm91cCBuby10YWItaGVhZGVyIFtzZWxlY3RlZEluZGV4XT1cImlzQWN0aXZlKCkgPyAxIDogMFwiIGZ1bGwtaGVpZ2h0LXRhYnMgW2R5bmFtaWNIZWlnaHRdPVwiZmFsc2VcIiBbYW5pbWF0aW9uRHVyYXRpb25dPVwiYW5pbWF0aW9uRHVyYXRpb25cIj5cbiAgPG1hdC10YWI+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICA8L21hdC10YWI+XG4gIDxtYXQtdGFiPlxuICAgIDxhdXAtYWN0aXZpdHktY29udGFpbmVyICNhY3Rpdml0eUNvbnRhaW5lciBbZHluYW1pY0hlaWdodF09XCJmYWxzZVwiPjwvYXVwLWFjdGl2aXR5LWNvbnRhaW5lcj5cbiAgPC9tYXQtdGFiPlxuPC9tYXQtdGFiLWdyb3VwPlxuXG4iXX0=
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW4tcGxhY2UtaW50ZXJhY3Rpb24tY29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci11aS1wb3dlcnVwcy9zcmMvbGliL2ludGVyYWN0aW9uL2luLXBsYWNlLWludGVyYWN0aW9uLWNvbnRleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW50ZXJhY3Rpb25Db250ZXh0fSBmcm9tICcuL2ludGVyYWN0aW9uLWNvbnRleHQnO1xuaW1wb3J0IHsgSW50ZXJhY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9pbnRlcmFjdGlvbi5zZXJ2aWNlJztcblxuZXhwb3J0IGludGVyZmFjZSBJblBsYWNlSW50ZXJhY3Rpb25Db250ZXh0IGV4dGVuZHMgSW50ZXJhY3Rpb25Db250ZXh0IHtcbiAgb25JbnBsYWNlSW50ZXJhY3Rpb25Db250ZXh0UmVnaXN0ZXJlZChpZDogc3RyaW5nLCBhcGk6IEludGVyYWN0aW9uU2VydmljZS5BcGkpXG59XG4iXX0=
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { __decorate, __metadata } from "tslib";
|
|
2
|
-
import { Injectable } from
|
|
3
|
-
import { DelegatingValueModel, Dsl, GarbageCollector, MutableListModel, Trace } from
|
|
4
|
-
import { assert } from
|
|
5
|
-
import { InteractionServiceRoutingAdapter } from
|
|
6
|
-
import { ModalInteractionContextFactory } from
|
|
2
|
+
import { Injectable } from "@angular/core";
|
|
3
|
+
import { DelegatingValueModel, Dsl, GarbageCollector, MutableListModel, Trace } from "@coolon/pectin";
|
|
4
|
+
import { assert } from "@coolon/typescript-utilities";
|
|
5
|
+
import { InteractionServiceRoutingAdapter } from "./interaction-service-routing-adapter";
|
|
6
|
+
import { ModalInteractionContextFactory } from "./modal-interaction-context.factory";
|
|
7
7
|
import * as i0 from "@angular/core";
|
|
8
8
|
import * as i1 from "./modal-interaction-context.factory";
|
|
9
9
|
let inplaceMonitorCount = 0;
|
|
@@ -44,13 +44,13 @@ export class InteractionService {
|
|
|
44
44
|
*/
|
|
45
45
|
createModalInteractionContextDisposedWith(disposable) {
|
|
46
46
|
// TODO: look at making the registry the factory..
|
|
47
|
-
return this.modelInteractionContextFactory.createInteractionContext(
|
|
47
|
+
return this.modelInteractionContextFactory.createInteractionContext("modal", new InteractionService.ApiAdapter(this.placeRouter, this.modalInteractionRegistry));
|
|
48
48
|
}
|
|
49
49
|
registerInplaceInteractionContext(interactionContext) {
|
|
50
50
|
// TODO: look at making the registry the factory..
|
|
51
51
|
// Todo: check for double registration.
|
|
52
52
|
// Todo: allow multiple inplace interactions..
|
|
53
|
-
interactionContext.
|
|
53
|
+
interactionContext.onInplaceInteractionContextRegistered(`ip${++inplaceMonitorCount}`, new InteractionService.ApiAdapter(this.placeRouter, this.inPlaceInteractionRegistry));
|
|
54
54
|
}
|
|
55
55
|
/**
|
|
56
56
|
* Creates an interaction context that will prevent any other contexts from starting an
|
|
@@ -65,16 +65,16 @@ export class InteractionService {
|
|
|
65
65
|
this._navigationInProgress.setDelegate(this.placeRouter.navigationInProgress$);
|
|
66
66
|
const self = this;
|
|
67
67
|
return new InteractionServiceRoutingAdapter(this.activeInteractionContextIds, this.activeModalContext, () => {
|
|
68
|
-
return self.modelInteractionContextFactory.createInteractionContext(
|
|
68
|
+
return self.modelInteractionContextFactory.createInteractionContext("exclusive", new InteractionService.ApiAdapter(this.placeRouter, this.exclusiveInteractionRegistry));
|
|
69
69
|
});
|
|
70
70
|
}
|
|
71
71
|
}
|
|
72
72
|
InteractionService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: InteractionService, deps: [{ token: i1.ModalInteractionContextFactory }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
73
|
-
InteractionService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: InteractionService, providedIn:
|
|
73
|
+
InteractionService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: InteractionService, providedIn: "root" });
|
|
74
74
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: InteractionService, decorators: [{
|
|
75
75
|
type: Injectable,
|
|
76
76
|
args: [{
|
|
77
|
-
providedIn:
|
|
77
|
+
providedIn: "root"
|
|
78
78
|
}]
|
|
79
79
|
}], ctorParameters: function () { return [{ type: i1.ModalInteractionContextFactory }]; } });
|
|
80
80
|
(function (InteractionService) {
|
|
@@ -147,4 +147,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImpor
|
|
|
147
147
|
], ApiAdapter.prototype, "notifyFinished", null);
|
|
148
148
|
InteractionService.ApiAdapter = ApiAdapter;
|
|
149
149
|
})(InteractionService || (InteractionService = {}));
|
|
150
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJhY3Rpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci11aS1wb3dlcnVwcy9zcmMvbGliL2ludGVyYWN0aW9uL3NlcnZpY2VzL2ludGVyYWN0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUVMLG9CQUFvQixFQUVwQixHQUFHLEVBQ0gsZ0JBQWdCLEVBRWhCLGdCQUFnQixFQUNHLEtBQUssRUFHekIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFJdEQsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFFekYsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0scUNBQXFDLENBQUM7OztBQUVyRixJQUFJLG1CQUFtQixHQUFHLENBQUMsQ0FBQztBQUs1QixNQUFNLE9BQU8sa0JBQWtCO0lBbUI3QixZQUFxQiw4QkFBOEQ7UUFBOUQsbUNBQThCLEdBQTlCLDhCQUE4QixDQUFnQztRQWpCbEUsWUFBTyxHQUFHLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztRQUdsRCxzRkFBc0Y7UUFDdEYsdUZBQXVGO1FBQ3ZGLHdFQUF3RTtRQUN2RCwwQkFBcUIsR0FBRyxJQUFJLG9CQUFvQixFQUFXLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBWTlGLE1BQU0sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsR0FBRyxHQUFHLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVqRyxJQUFJLENBQUMsNEJBQTRCLEdBQUcsSUFBSSxrQkFBa0IsQ0FBQyxlQUFl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RztZQUN6RywyRUFBMkU7WUFDM0UsaUdBQWlHO1lBQ2pHLGlGQUFpRjtZQUNqRixPQUFPLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDLENBQUM7Z0JBQ3BDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO2dCQUNuQixJQUFJLENBQUMsV0FBVyxDQUFDLG1DQUFtQyxFQUFFLENBQUM7UUFDM0QsQ0FBQztLQUNGO0lBYkM7UUFEQyxLQUFLLEVBQUU7Ozs7b0RBYVA7SUEvQlUsNkJBQVUsYUFnQ3RCLENBQUE7QUFFSCxDQUFDLEVBL0ZnQixrQkFBa0IsS0FBbEIsa0JBQWtCLFFBK0ZsQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEJvb2xlYW5WYWx1ZU1vZGVsQ2hhaW4sXG4gIERlbGVnYXRpbmdWYWx1ZU1vZGVsLFxuICBEaXNwb3NhYmxlLFxuICBEc2wsXG4gIEdhcmJhZ2VDb2xsZWN0b3IsIExpc3RNb2RlbCxcbiAgTGlzdE1vZGVsQ2hhaW4sXG4gIE11dGFibGVMaXN0TW9kZWwsXG4gIE11dGFibGVWYWx1ZU1vZGVsLCBUcmFjZSxcbiAgVmFsdWVNb2RlbCxcbiAgVmFsdWVNb2RlbENoYWluXG59IGZyb20gJ0Bjb29sb24vcGVjdGluJztcbmltcG9ydCB7IGFzc2VydCB9IGZyb20gJ0Bjb29sb24vdHlwZXNjcmlwdC11dGlsaXRpZXMnO1xuaW1wb3J0IHsgUGxhY2VSb3V0ZXIgfSBmcm9tICcuLi8uLi9wbGFjZS9wbGFjZS1yb3V0ZXInO1xuaW1wb3J0IHsgSW5QbGFjZUludGVyYWN0aW9uQ29udGV4dCB9IGZyb20gXCIuLi9pbi1wbGFjZS1pbnRlcmFjdGlvbi1jb250ZXh0XCI7XG5pbXBvcnQgeyBJbnRlcmFjdGlvbkNvbnRleHQgfSBmcm9tICcuLi9pbnRlcmFjdGlvbi1jb250ZXh0JztcbmltcG9ydCB7IEludGVyYWN0aW9uU2VydmljZVJvdXRpbmdBZGFwdGVyIH0gZnJvbSAnLi9pbnRlcmFjdGlvbi1zZXJ2aWNlLXJvdXRpbmctYWRhcHRlcic7XG5cbmltcG9ydCB7IE1vZGFsSW50ZXJhY3Rpb25Db250ZXh0RmFjdG9yeSB9IGZyb20gJy4vbW9kYWwtaW50ZXJhY3Rpb24tY29udGV4dC5mYWN0b3J5JztcblxubGV0IGlucGxhY2VNb25pdG9yQ291bnQgPSAwO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBJbnRlcmFjdGlvblNlcnZpY2Uge1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgZ2FyYmFnZSA9IG5ldyBHYXJiYWdlQ29sbGVjdG9yKCk7XG4gIHJlYWRvbmx5IGFjdGl2ZTogQm9vbGVhblZhbHVlTW9kZWxDaGFpbjtcblxuICAvLyBwcml2YXRlIHJlYWRvbmx5IF9hY3RpdmVNb2RhbENvbnRleHQgPSBuZXcgTXV0YWJsZVZhbHVlTW9kZWw8SW50ZXJhY3Rpb25Db250ZXh0PigpO1xuICAvLyBwcml2YXRlIHJlYWRvbmx5IF9hY3RpdmVJbmxpbmVDb250ZXh0ID0gbmV3IE11dGFibGVWYWx1ZU1vZGVsPEludGVyYWN0aW9uQ29udGV4dD4oKTtcbiAgLy8gcHJpdmF0ZSByZWFkb25seSBfYWN0aXZlQ29udGV4dDogVmFsdWVNb2RlbENoYWluPEludGVyYWN0aW9uQ29udGV4dD47XG4gIHByaXZhdGUgcmVhZG9ubHkgX25hdmlnYXRpb25JblByb2dyZXNzID0gbmV3IERlbGVnYXRpbmdWYWx1ZU1vZGVsPGJvb2xlYW4+KCkud2l0aERlZmF1bHQoZmFsc2UpO1xuXG4gIHByaXZhdGUgcGxhY2VSb3V0ZXI6IFBsYWNlUm91dGVyO1xuICBwcml2YXRlIGV4Y2x1c2l2ZUludGVyYWN0aW9uUmVnaXN0cnk6IEludGVyYWN0aW9uU2VydmljZS5Db250ZXh0UmVnaXN0cnk7XG4gIHByaXZhdGUgbW9kYWxJbnRlcmFjdGlvblJlZ2lzdHJ5OiBJbnRlcmFjdGlvblNlcnZpY2UuQ29udGV4dFJlZ2lzdHJ5O1xuICBwcml2YXRlIGluUGxhY2VJbnRlcmFjdGlvblJlZ2lzdHJ5OiBJbnRlcmFjdGlvblNlcnZpY2UuQ29udGV4dFJlZ2lzdHJ5O1xuICBwcml2YXRlIGFjdGl2ZU1vZGFsQ29udGV4dDogVmFsdWVNb2RlbENoYWluPEludGVyYWN0aW9uQ29udGV4dD47XG5cbiAgcmVhZG9ubHkgYWN0aXZlSW50ZXJhY3Rpb25Db250ZXh0SWRzOiBMaXN0TW9kZWxDaGFpbjxzdHJpbmc+O1xuICByZWFkb25seSBpbk1vZGFsSW50ZXJhY3Rpb246IEJvb2xlYW5WYWx1ZU1vZGVsQ2hhaW47XG5cbiAgY29uc3RydWN0b3IocmVhZG9ubHkgbW9kZWxJbnRlcmFjdGlvbkNvbnRleHRGYWN0b3J5OiBNb2RhbEludGVyYWN0aW9uQ29udGV4dEZhY3RvcnkpIHtcbiAgICBjb25zdCB7IGNoYWluLCB2YWx1ZU9mLCBiZWZvcmUsIHdoZW4sIGFmdGVyLCBvYnNlcnZlLCBzd2l0Y2hPbiB9ID0gRHNsLmRpc3Bvc2VXaXRoKHRoaXMuZ2FyYmFnZSk7XG5cbiAgICB0aGlzLmV4Y2x1c2l2ZUludGVyYWN0aW9uUmVnaXN0cnkgPSBuZXcgSW50ZXJhY3Rpb25TZXJ2aWNlLkNvbnRleHRSZWdpc3RyeSgpO1xuICAgIHRoaXMubW9kYWxJbnRlcmFjdGlvblJlZ2lzdHJ5ID0gbmV3IEludGVyYWN0aW9uU2VydmljZS5Db250ZXh0UmVnaXN0cnkoKTtcbiAgICB0aGlzLmluUGxhY2VJbnRlcmFjdGlvblJlZ2lzdHJ5ID0gbmV3IEludGVyYWN0aW9uU2VydmljZS5Db250ZXh0UmVnaXN0cnkoKTtcblxuICAgIHRoaXMubW9kYWxJbnRlcmFjdGlvblJlZ2lzdHJ5LmRpc2FibGVXaGVuKHZhbHVlT2YuYW55KFxuICAgICAgdGhpcy5leGNsdXNpdmVJbnRlcmFjdGlvblJlZ2lzdHJ5LmFjdGl2ZSxcbiAgICAgIHRoaXMubW9kYWxJbnRlcmFjdGlvblJlZ2lzdHJ5LmFjdGl2ZVxuICAgICkuYXJlVHJ1dGh5KCkpO1xuXG4gICAgdGhpcy5pblBsYWNlSW50ZXJhY3Rpb25SZWdpc3RyeS5kaXNhYmxlV2hlbih2YWx1ZU9mLmFueShcbiAgICAgIHRoaXMuZXhjbHVzaXZlSW50ZXJhY3Rpb25SZWdpc3RyeS5hY3RpdmUsXG4gICAgICB0aGlzLm1vZGFsSW50ZXJhY3Rpb25SZWdpc3RyeS5hY3RpdmUsXG4gICAgICB0aGlzLmluUGxhY2VJbnRlcmFjdGlvblJlZ2lzdHJ5LmFjdGl2ZVxuICAgICkuYXJlVHJ1dGh5KCkpO1xuXG4gICAgdGhpcy5hY3RpdmUgPSB2YWx1ZU9mLmFueShcbiAgICAgIHRoaXMuaW5QbGFjZUludGVyYWN0aW9uUmVnaXN0cnkuYWN0aXZlLFxuICAgICAgdGhpcy5tb2RhbEludGVyYWN0aW9uUmVnaXN0cnkuYWN0aXZlXG4gICAgKS5hcmVUcnV0aHkoKTtcblxuXG4gICAgLy8gVE9ETzogY2hhaW4uY29uY2F0KGxpc3RPclZhbHVlTW9kZWxzKSB3b3VsZCBiZSBuaWNlLlxuICAgIHRoaXMuYWN0aXZlSW50ZXJhY3Rpb25Db250ZXh0SWRzID0gY2hhaW4odGhpcy5pblBsYWNlSW50ZXJhY3Rpb25SZWdpc3RyeS5pbnRlcmFjdGlvbkNvbnRleHRJZHMpXG4gICAgICAuY29uY2F0KHRoaXMubW9kYWxJbnRlcmFjdGlvblJlZ2lzdHJ5LmludGVyYWN0aW9uQ29udGV4dElkcyk7XG5cbiAgICB0aGlzLmFjdGl2ZU1vZGFsQ29udGV4dCA9IGNoYWluKHRoaXMubW9kYWxJbnRlcmFjdGlvblJlZ2lzdHJ5LmludGVyYWN0aW9uQ29udGV4dHMpLmZpcnN0KCk7XG4gICAgdGhpcy5pbk1vZGFsSW50ZXJhY3Rpb24gPSBjaGFpbih0aGlzLmFjdGl2ZU1vZGFsQ29udGV4dCkuaXNOb3ROaWwoKTtcblxuICB9XG5cbiAgaXNBY3RpdmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuYWN0aXZlLnZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIHVzZSAjY3JlYXRlTW9kYWxJbnRlcmFjdGlvbkNvbnRleHREaXNwb3NlZFdpdGggaW5zdGVhZC5cbiAgICogQHBhcmFtIGRpc3Bvc2FibGVcbiAgICovXG4gIGNyZWF0ZU1vZGFsSW50ZXJhY3Rpb25Db250ZXh0Rm9yKGRpc3Bvc2FibGU6IERpc3Bvc2FibGUuQ29sbGVjdG9yKTogSW50ZXJhY3Rpb25Db250ZXh0IHtcbiAgICByZXR1cm4gdGhpcy5jcmVhdGVNb2RhbEludGVyYWN0aW9uQ29udGV4dERpc3Bvc2VkV2l0aChkaXNwb3NhYmxlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IG1vZGVsIGludGVyYWN0aW9uIGNvbnRleHQgdGhhdCB3aWxsIGJlIGRpc3Bvc2VkIGFsb25nIHdpdGggdGhlIGNvbXBvbmVudC5cbiAgICogQHBhcmFtIGRpc3Bvc2FibGVcbiAgICovXG4gIGNyZWF0ZU1vZGFsSW50ZXJhY3Rpb25Db250ZXh0RGlzcG9zZWRXaXRoKGRpc3Bvc2FibGU6IERpc3Bvc2FibGUuQ29sbGVjdG9yKTogSW50ZXJhY3Rpb25Db250ZXh0IHtcbiAgICAvLyBUT0RPOiBsb29rIGF0IG1ha2luZyB0aGUgcmVnaXN0cnkgdGhlIGZhY3RvcnkuLlxuICAgIHJldHVybiB0aGlzLm1vZGVsSW50ZXJhY3Rpb25Db250ZXh0RmFjdG9yeS5jcmVhdGVJbnRlcmFjdGlvbkNvbnRleHQoJ21vZGFsJywgbmV3IEludGVyYWN0aW9uU2VydmljZS5BcGlBZGFwdGVyKHRoaXMucGxhY2VSb3V0ZXIsIHRoaXMubW9kYWxJbnRlcmFjdGlvblJlZ2lzdHJ5KSk7XG4gIH1cblxuICByZWdpc3RlcklucGxhY2VJbnRlcmFjdGlvbkNvbnRleHQoaW50ZXJhY3Rpb25Db250ZXh0OiBJblBsYWNlSW50ZXJhY3Rpb25Db250ZXh0KSB7XG4gICAgLy8gVE9ETzogbG9vayBhdCBtYWtpbmcgdGhlIHJlZ2lzdHJ5IHRoZSBmYWN0b3J5Li5cbiAgICAvLyBUb2RvOiBjaGVjayBmb3IgZG91YmxlIHJlZ2lzdHJhdGlvbi5cbiAgICAvLyBUb2RvOiBhbGxvdyBtdWx0aXBsZSBpbnBsYWNlIGludGVyYWN0aW9ucy4uXG4gICAgaW50ZXJhY3Rpb25Db250ZXh0LmluaXRpYWxpc2UoYGlwJHsrK2lucGxhY2VNb25pdG9yQ291bnR9YCwgbmV3IEludGVyYWN0aW9uU2VydmljZS5BcGlBZGFwdGVyKHRoaXMucGxhY2VSb3V0ZXIsIHRoaXMuaW5QbGFjZUludGVyYWN0aW9uUmVnaXN0cnkpKTtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gaW50ZXJhY3Rpb24gY29udGV4dCB0aGF0IHdpbGwgcHJldmVudCBhbnkgb3RoZXIgY29udGV4dHMgZnJvbSBzdGFydGluZyBhblxuICAgKiBhY3Rpdml0eSB1bnRpbCBpdCBpcyBkaXNwb3NlZC4gIFRoaXMgaXMgaW50ZW5kZWQgZm9yIHVzZSBieSB0aGUgcm91dGVyIGZvciBwYXNzaW5nXG4gICAqIHRvIFBsYWNlQ29tcG9uZW50LmNhbkRlYWN0aXZhdGUoaW50ZXJhY3Rpb25Db250ZXh0KS4gIFRoaXMgZW5zdXJlcyBjb21wb25lbnRzIGRvbid0XG4gICAqIHRyeSBhbmQgaW50ZXJhY3QgaW4gYSB3YXkgdGhhdCB3ZSBjYW4ndCB0cmFjayBhbmQgc3luY2hyb25pc2Ugd2l0aCB0aGUgYnJvd3NlciBiYWNrXG4gICAqIGJ1dHRvbi5cbiAgICovXG4gIHJlZ2lzdGVyUGxhY2VSb3V0ZXIocm91dGVyOiBQbGFjZVJvdXRlcik6IEludGVyYWN0aW9uU2VydmljZVJvdXRpbmdBZGFwdGVyIHtcbiAgICBhc3NlcnQuaXNGYWxzZXkodGhpcy5wbGFjZVJvdXRlcik7XG4gICAgdGhpcy5wbGFjZVJvdXRlciA9IHJvdXRlcjtcbiAgICB0aGlzLl9uYXZpZ2F0aW9uSW5Qcm9ncmVzcy5zZXREZWxlZ2F0ZSh0aGlzLnBsYWNlUm91dGVyLm5hdmlnYXRpb25JblByb2dyZXNzJCk7XG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgcmV0dXJuIG5ldyBJbnRlcmFjdGlvblNlcnZpY2VSb3V0aW5nQWRhcHRlcihcbiAgICAgIHRoaXMuYWN0aXZlSW50ZXJhY3Rpb25Db250ZXh0SWRzLFxuICAgICAgdGhpcy5hY3RpdmVNb2RhbENvbnRleHQsXG4gICAgICAoKSA9PiB7XG4gICAgICAgIHJldHVybiBzZWxmLm1vZGVsSW50ZXJhY3Rpb25Db250ZXh0RmFjdG9yeS5jcmVhdGVJbnRlcmFjdGlvbkNvbnRleHQoJ2V4Y2x1c2l2ZScsIG5ldyBJbnRlcmFjdGlvblNlcnZpY2UuQXBpQWRhcHRlcih0aGlzLnBsYWNlUm91dGVyLCB0aGlzLmV4Y2x1c2l2ZUludGVyYWN0aW9uUmVnaXN0cnkpKTtcbiAgICAgIH0pO1xuICB9XG5cbn1cblxuZXhwb3J0IG5hbWVzcGFjZSBJbnRlcmFjdGlvblNlcnZpY2Uge1xuXG4gIGV4cG9ydCBpbnRlcmZhY2UgQXBpIHtcblxuICAgIC8qKlxuICAgICAqIE5vdGlmaWVzIHRoZSBpbnRlcmFjdGlvbiBzZXJ2aWNlIHRoYXQgYSBwYXJ0aWN1bGFyIGludGVyYWN0aW9uQ29udGV4dCBoYXMgYmVjb21lIGFjdGl2ZS4gVGhlIGludGVyYWN0aW9uXG4gICAgICogc2VydmljZXMgd2lsbCB0aGVuIHB1c2ggY2hhbmdlcyB0byB0aGUgcm91dGVyIHRvIHRyYWNrIHN0YXRlLiAgSWYgdGhlIHJvdXRlciBpcyBpZGxlLCB0aGUgcHJvbWlzZSB3aWxsXG4gICAgICogcmVzb2x2ZSB3aGVuIHRoZSByb3V0aW5nIGhhcyBmaW5pc2hlZCB1cGRhdGluZy4gIE90aGVyd2lzZSBpdCB3aWxsIHJldHVybiBpbW1lZGlhdGVseS5cbiAgICAgKiBAcGFyYW0gaW50ZXJhY3Rpb25Db250ZXh0XG4gICAgICovXG4gICAgbm90aWZ5QWN0aXZlKGludGVyYWN0aW9uQ29udGV4dDogSW50ZXJhY3Rpb25Db250ZXh0KTogUHJvbWlzZTx1bmtub3duPjtcblxuICAgIC8qKlxuICAgICAqIE5vdGlmaWVzIHRoZSBpbnRlcmFjdGlvbiBzZXJ2aWNlIHRoYXQgYSBwYXJ0aWN1bGFyIGludGVyYWN0aW9uQ29udGV4dCBoYXMgYmVjb21lIGlkbGUuIFRoZSBpbnRlcmFjdGlvblxuICAgICAqIHNlcnZpY2VzIHdpbGwgdGhlbiBwdXNoIGNoYW5nZXMgdG8gdGhlIHJvdXRlciB0byB0cmFjayBzdGF0ZS4gIElmIHRoZSByb3V0ZXIgaXMgaWRsZSwgdGhlIHByb21pc2Ugd2lsbFxuICAgICAqIHJlc29sdmUgd2hlbiB0aGUgcm91dGluZyBoYXMgZmluaXNoZWQgdXBkYXRpbmcuICBPdGhlcndpc2UsIGl0IHdpbGwgcmV0dXJuIGltbWVkaWF0ZWx5LlxuICAgICAqIEBwYXJhbSBpbnRlcmFjdGlvbkNvbnRleHRcbiAgICAgKi9cbiAgICBub3RpZnlGaW5pc2hlZChpbnRlcmFjdGlvbkNvbnRleHQ6IEludGVyYWN0aW9uQ29udGV4dCk6IFByb21pc2U8dW5rbm93bj47XG4gIH1cblxuICAvKipcbiAgICogUHJvdmlkZXMgYSBtZWNoYW5pc20gZm9yIHRoZSBzZXJ2aWNlIHRvIGtlZXAgdHJhY2sgb2Ygd2hhdCB0aGUgQVBJIGFkYXB0ZXJzIGFyZSBkb2luZyB0b1xuICAgKiBlbnN1cmUgdGhlIHJ1bGVzIGFyZSBmb2xsb3dlZCwgaS5lLiBtb2RhbCBvciBpbi1wbGFjZSBpbnRlcmFjdGlvbiBhcmVuJ3Qgc3RhcnRlZCB3aGlsZVxuICAgKiBhbiBleGNsdXNpdmUgcm91dGluZyBpbnRlcmFjdGlvbiBpcyBhY3RpdmUuXG4gICAqL1xuICBleHBvcnQgY2xhc3MgQ29udGV4dFJlZ2lzdHJ5IGV4dGVuZHMgR2FyYmFnZUNvbGxlY3RvciB7XG5cbiAgICBwcml2YXRlIF9pbnRlcmFjdGlvbnMgPSBuZXcgTXV0YWJsZUxpc3RNb2RlbDxJbnRlcmFjdGlvbkNvbnRleHQ+KCk7XG4gICAgcHJpdmF0ZSBfZGlzYWJsZWREZWxlZ2F0ZSA9IHRoaXMucmVnaXN0ZXJEaXNwb3NhYmxlKG5ldyBEZWxlZ2F0aW5nVmFsdWVNb2RlbDxib29sZWFuPigpLndpdGhEZWZhdWx0KGZhbHNlKSk7XG4gICAgcmVhZG9ubHkgYWN0aXZlOiBCb29sZWFuVmFsdWVNb2RlbENoYWluO1xuICAgIHJlYWRvbmx5IGludGVyYWN0aW9uQ29udGV4dElkczogTGlzdE1vZGVsQ2hhaW48c3RyaW5nPjtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgc3VwZXIoKTtcbiAgICAgIGNvbnN0IHsgY2hhaW4sIHZhbHVlT2YsIGJlZm9yZSwgd2hlbiwgYWZ0ZXIsIG9ic2VydmUsIHN3aXRjaE9uIH0gPSBEc2wuZGlzcG9zZVdpdGgodGhpcyk7XG4gICAgICB0aGlzLmFjdGl2ZSA9IGNoYWluKHRoaXMuX2ludGVyYWN0aW9ucykuaXNOb3RFbXB0eSgpO1xuICAgICAgdGhpcy5pbnRlcmFjdGlvbkNvbnRleHRJZHMgPSBjaGFpbih0aGlzLl9pbnRlcmFjdGlvbnMpLnBsdWNrKFwiaWRlbnRpZmllclwiKTtcbiAgICB9XG5cbiAgICBnZXQgaW50ZXJhY3Rpb25Db250ZXh0cygpOkxpc3RNb2RlbDxJbnRlcmFjdGlvbkNvbnRleHQ+IHtcbiAgICAgIHJldHVybiB0aGlzLl9pbnRlcmFjdGlvbnMucmVhZG9ubHk7XG4gICAgfVxuXG4gICAgc3RhcnQoY29udGV4dDogSW50ZXJhY3Rpb25Db250ZXh0KSB7XG4gICAgICB0aGlzLl9pbnRlcmFjdGlvbnMucHVzaChjb250ZXh0KTtcbiAgICB9XG5cbiAgICBmaW5pc2goY29udGV4dDogSW50ZXJhY3Rpb25Db250ZXh0KSB7XG4gICAgICB0aGlzLl9pbnRlcmFjdGlvbnMucmVtb3ZlKGNvbnRleHQpO1xuICAgIH1cblxuICAgIGlzQWN0aXZlKCkge1xuICAgICAgcmV0dXJuIHRoaXMuYWN0aXZlLnZhbHVlO1xuICAgIH1cblxuICAgIGRpc2FibGVXaGVuKGRpc2FibGVkOiBWYWx1ZU1vZGVsPGJvb2xlYW4+KSB7XG4gICAgICB0aGlzLl9kaXNhYmxlZERlbGVnYXRlLnNldERlbGVnYXRlKGRpc2FibGVkKTtcbiAgICB9XG4gIH1cblxuICBleHBvcnQgY2xhc3MgQXBpQWRhcHRlciBleHRlbmRzIEdhcmJhZ2VDb2xsZWN0b3IgaW1wbGVtZW50cyBBcGkge1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBwbGFjZVJvdXRlcjogUGxhY2VSb3V0ZXIsIHByaXZhdGUgcmVhZG9ubHkgY29udGV4dFJlZ2lzdHJ5OiBDb250ZXh0UmVnaXN0cnkpIHtcbiAgICAgIHN1cGVyKCk7XG4gICAgfVxuXG4gICAgLy8gQFRyYWNlKClcbiAgICBub3RpZnlBY3RpdmUoY29udGV4dDogSW50ZXJhY3Rpb25Db250ZXh0KTogUHJvbWlzZTxhbnk+IHtcbiAgICAgIGFzc2VydC5pc1RydXRoeShjb250ZXh0LmlkZW50aWZpZXIpO1xuICAgICAgdGhpcy5jb250ZXh0UmVnaXN0cnkuc3RhcnQoY29udGV4dCk7XG4gICAgICByZXR1cm4gdGhpcy5pc05hdmlnYXRpb25JblByb2dyZXNzKCkgPyBQcm9taXNlLnJlc29sdmUoKSA6IHRoaXMucGxhY2VSb3V0ZXIuc3luY0ludGVyYWN0aW9uQ29udGV4dElkc1dpdGhSb3V0ZXIoKTtcbiAgICB9XG5cbiAgICAvLyBAVHJhY2UoKVxuICAgIHByaXZhdGUgaXNOYXZpZ2F0aW9uSW5Qcm9ncmVzcygpIHtcbiAgICAgIHJldHVybiB0aGlzLnBsYWNlUm91dGVyLm5hdmlnYXRpb25JblByb2dyZXNzJC52YWx1ZTtcbiAgICB9XG5cbiAgICBAVHJhY2UoKVxuICAgIG5vdGlmeUZpbmlzaGVkKGNvbnRleHQ6IEludGVyYWN0aW9uQ29udGV4dCk6IFByb21pc2U8YW55PiB7XG4gICAgICB0aGlzLmNvbnRleHRSZWdpc3RyeS5maW5pc2goY29udGV4dCk7XG4gICAgICAvLyA6OiBJbXBvcnRhbnQgOjpcbiAgICAgIC8vIFRoaXMgbWV0aG9kIHdpbGwgYmUgdHJhdmVyc2VkIGJ5IGJvdGggdGhlIHBsYWNlIHJvdXRlciAoZHVyaW5nIGNhbiBjYW5EZWFjdGl2YXRlIGd1YXJkcykgYW5kIHVzZXIgbGFuZCBjb2RlXG4gICAgICAvLyAoYm90aCB3aGVuIHJvdXRpbmcgaXMgaWRsZSBhbmQgd2hpbGUgaXQgaXMgYWN0aXZlIGluIFBsYWNlQ29tcG9uZW50LmNhbkRlYWN0aXZhdGUoKSkuXG4gICAgICAvLyBUaGUgcmVzdWx0IG9mIHB1c2hJbnRlcmFjdGlvbklkc1RvUm91dGUgd2lsbCBub3Qgc3RhcnQgdW50aWwgYWZ0ZXIgdGhlIGN1cnJlbnQgcm91dGUgZmluaXNoZXMsIGFuZCB0aGVcbiAgICAgIC8vIGN1cnJlbnQgcm91dGUgd29uJ3QgZmluaXNoIHVudGlsIGFmdGVyIHRoaXMgcHJvbWlzZSByZXR1cm5zLi4uIERlYWRsb2NrLlxuICAgICAgLy8gU28gaW4gb3JkZXIgdG8ga2VlcCB0aGlzIGxvZ2ljIG91dCBvZiB0aGUgYWN0aXZpdGllcyB3ZSBwZXJmb3JtIHRoZSBjaGVjayBoZXJlIGFuZCBlbnN1cmUgdGhhdFxuICAgICAgLy8gYW55IGludGVyYWN0aW9ucyB3aXRoIHRoZSBjb250ZXh0IHdoaWxlIHJvdXRpbmcgaXMgYWN0aXZlIHJldHVybnMgaW1tZWRpYXRlbHkuXG4gICAgICByZXR1cm4gdGhpcy5pc05hdmlnYXRpb25JblByb2dyZXNzKCkgP1xuICAgICAgICBQcm9taXNlLnJlc29sdmUoKSA6XG4gICAgICAgIHRoaXMucGxhY2VSb3V0ZXIuc3luY0ludGVyYWN0aW9uQ29udGV4dElkc1dpdGhSb3V0ZXIoKTtcbiAgICB9XG4gIH1cblxufVxuIl19
|
|
150
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJhY3Rpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci11aS1wb3dlcnVwcy9zcmMvbGliL2ludGVyYWN0aW9uL3NlcnZpY2VzL2ludGVyYWN0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUVMLG9CQUFvQixFQUVwQixHQUFHLEVBQ0gsZ0JBQWdCLEVBRWhCLGdCQUFnQixFQUNHLEtBQUssRUFHekIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFJdEQsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFFekYsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0scUNBQXFDLENBQUM7OztBQUVyRixJQUFJLG1CQUFtQixHQUFHLENBQUMsQ0FBQztBQUs1QixNQUFNLE9BQU8sa0JBQWtCO0lBbUI3QixZQUFxQiw4QkFBOEQ7UUFBOUQsbUNBQThCLEdBQTlCLDhCQUE4QixDQUFnQztRQWpCbEUsWUFBTyxHQUFHLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztRQUdsRCxzRkFBc0Y7UUFDdEYsdUZBQXVGO1FBQ3ZGLHdFQUF3RTtRQUN2RCwwQkFBcUIsR0FBRyxJQUFJLG9CQUFvQixFQUFXLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBWTlGLE1BQU0sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsR0FBRyxHQUFHLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVqRyxJQUFJLENBQUMsNEJBQTRCLEdBQUcsSUFBSSxrQkFBa0IsQ0FBQyxlQUFl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QXlHO1lBQ3pHLDJFQUEyRTtZQUMzRSxpR0FBaUc7WUFDakcsaUZBQWlGO1lBQ2pGLE9BQU8sSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUMsQ0FBQztnQkFDcEMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7Z0JBQ25CLElBQUksQ0FBQyxXQUFXLENBQUMsbUNBQW1DLEVBQUUsQ0FBQztRQUMzRCxDQUFDO0tBQ0Y7SUFiQztRQURDLEtBQUssRUFBRTs7OztvREFhUDtJQS9CVSw2QkFBVSxhQWdDdEIsQ0FBQTtBQUVILENBQUMsRUEvRmdCLGtCQUFrQixLQUFsQixrQkFBa0IsUUErRmxDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQge1xuICBCb29sZWFuVmFsdWVNb2RlbENoYWluLFxuICBEZWxlZ2F0aW5nVmFsdWVNb2RlbCxcbiAgRGlzcG9zYWJsZSxcbiAgRHNsLFxuICBHYXJiYWdlQ29sbGVjdG9yLCBMaXN0TW9kZWwsXG4gIExpc3RNb2RlbENoYWluLFxuICBNdXRhYmxlTGlzdE1vZGVsLFxuICBNdXRhYmxlVmFsdWVNb2RlbCwgVHJhY2UsXG4gIFZhbHVlTW9kZWwsXG4gIFZhbHVlTW9kZWxDaGFpblxufSBmcm9tIFwiQGNvb2xvbi9wZWN0aW5cIjtcbmltcG9ydCB7IGFzc2VydCB9IGZyb20gXCJAY29vbG9uL3R5cGVzY3JpcHQtdXRpbGl0aWVzXCI7XG5pbXBvcnQgeyBQbGFjZVJvdXRlciB9IGZyb20gXCIuLi8uLi9wbGFjZS9wbGFjZS1yb3V0ZXJcIjtcbmltcG9ydCB7IEluUGxhY2VJbnRlcmFjdGlvbkNvbnRleHQgfSBmcm9tIFwiLi4vaW4tcGxhY2UtaW50ZXJhY3Rpb24tY29udGV4dFwiO1xuaW1wb3J0IHsgSW50ZXJhY3Rpb25Db250ZXh0IH0gZnJvbSBcIi4uL2ludGVyYWN0aW9uLWNvbnRleHRcIjtcbmltcG9ydCB7IEludGVyYWN0aW9uU2VydmljZVJvdXRpbmdBZGFwdGVyIH0gZnJvbSBcIi4vaW50ZXJhY3Rpb24tc2VydmljZS1yb3V0aW5nLWFkYXB0ZXJcIjtcblxuaW1wb3J0IHsgTW9kYWxJbnRlcmFjdGlvbkNvbnRleHRGYWN0b3J5IH0gZnJvbSBcIi4vbW9kYWwtaW50ZXJhY3Rpb24tY29udGV4dC5mYWN0b3J5XCI7XG5cbmxldCBpbnBsYWNlTW9uaXRvckNvdW50ID0gMDtcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiBcInJvb3RcIlxufSlcbmV4cG9ydCBjbGFzcyBJbnRlcmFjdGlvblNlcnZpY2Uge1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgZ2FyYmFnZSA9IG5ldyBHYXJiYWdlQ29sbGVjdG9yKCk7XG4gIHJlYWRvbmx5IGFjdGl2ZTogQm9vbGVhblZhbHVlTW9kZWxDaGFpbjtcblxuICAvLyBwcml2YXRlIHJlYWRvbmx5IF9hY3RpdmVNb2RhbENvbnRleHQgPSBuZXcgTXV0YWJsZVZhbHVlTW9kZWw8SW50ZXJhY3Rpb25Db250ZXh0PigpO1xuICAvLyBwcml2YXRlIHJlYWRvbmx5IF9hY3RpdmVJbmxpbmVDb250ZXh0ID0gbmV3IE11dGFibGVWYWx1ZU1vZGVsPEludGVyYWN0aW9uQ29udGV4dD4oKTtcbiAgLy8gcHJpdmF0ZSByZWFkb25seSBfYWN0aXZlQ29udGV4dDogVmFsdWVNb2RlbENoYWluPEludGVyYWN0aW9uQ29udGV4dD47XG4gIHByaXZhdGUgcmVhZG9ubHkgX25hdmlnYXRpb25JblByb2dyZXNzID0gbmV3IERlbGVnYXRpbmdWYWx1ZU1vZGVsPGJvb2xlYW4+KCkud2l0aERlZmF1bHQoZmFsc2UpO1xuXG4gIHByaXZhdGUgcGxhY2VSb3V0ZXI6IFBsYWNlUm91dGVyO1xuICBwcml2YXRlIGV4Y2x1c2l2ZUludGVyYWN0aW9uUmVnaXN0cnk6IEludGVyYWN0aW9uU2VydmljZS5Db250ZXh0UmVnaXN0cnk7XG4gIHByaXZhdGUgbW9kYWxJbnRlcmFjdGlvblJlZ2lzdHJ5OiBJbnRlcmFjdGlvblNlcnZpY2UuQ29udGV4dFJlZ2lzdHJ5O1xuICBwcml2YXRlIGluUGxhY2VJbnRlcmFjdGlvblJlZ2lzdHJ5OiBJbnRlcmFjdGlvblNlcnZpY2UuQ29udGV4dFJlZ2lzdHJ5O1xuICBwcml2YXRlIGFjdGl2ZU1vZGFsQ29udGV4dDogVmFsdWVNb2RlbENoYWluPEludGVyYWN0aW9uQ29udGV4dD47XG5cbiAgcmVhZG9ubHkgYWN0aXZlSW50ZXJhY3Rpb25Db250ZXh0SWRzOiBMaXN0TW9kZWxDaGFpbjxzdHJpbmc+O1xuICByZWFkb25seSBpbk1vZGFsSW50ZXJhY3Rpb246IEJvb2xlYW5WYWx1ZU1vZGVsQ2hhaW47XG5cbiAgY29uc3RydWN0b3IocmVhZG9ubHkgbW9kZWxJbnRlcmFjdGlvbkNvbnRleHRGYWN0b3J5OiBNb2RhbEludGVyYWN0aW9uQ29udGV4dEZhY3RvcnkpIHtcbiAgICBjb25zdCB7IGNoYWluLCB2YWx1ZU9mLCBiZWZvcmUsIHdoZW4sIGFmdGVyLCBvYnNlcnZlLCBzd2l0Y2hPbiB9ID0gRHNsLmRpc3Bvc2VXaXRoKHRoaXMuZ2FyYmFnZSk7XG5cbiAgICB0aGlzLmV4Y2x1c2l2ZUludGVyYWN0aW9uUmVnaXN0cnkgPSBuZXcgSW50ZXJhY3Rpb25TZXJ2aWNlLkNvbnRleHRSZWdpc3RyeSgpO1xuICAgIHRoaXMubW9kYWxJbnRlcmFjdGlvblJlZ2lzdHJ5ID0gbmV3IEludGVyYWN0aW9uU2VydmljZS5Db250ZXh0UmVnaXN0cnkoKTtcbiAgICB0aGlzLmluUGxhY2VJbnRlcmFjdGlvblJlZ2lzdHJ5ID0gbmV3IEludGVyYWN0aW9uU2VydmljZS5Db250ZXh0UmVnaXN0cnkoKTtcblxuICAgIHRoaXMubW9kYWxJbnRlcmFjdGlvblJlZ2lzdHJ5LmRpc2FibGVXaGVuKHZhbHVlT2YuYW55KFxuICAgICAgdGhpcy5leGNsdXNpdmVJbnRlcmFjdGlvblJlZ2lzdHJ5LmFjdGl2ZSxcbiAgICAgIHRoaXMubW9kYWxJbnRlcmFjdGlvblJlZ2lzdHJ5LmFjdGl2ZVxuICAgICkuYXJlVHJ1dGh5KCkpO1xuXG4gICAgdGhpcy5pblBsYWNlSW50ZXJhY3Rpb25SZWdpc3RyeS5kaXNhYmxlV2hlbih2YWx1ZU9mLmFueShcbiAgICAgIHRoaXMuZXhjbHVzaXZlSW50ZXJhY3Rpb25SZWdpc3RyeS5hY3RpdmUsXG4gICAgICB0aGlzLm1vZGFsSW50ZXJhY3Rpb25SZWdpc3RyeS5hY3RpdmUsXG4gICAgICB0aGlzLmluUGxhY2VJbnRlcmFjdGlvblJlZ2lzdHJ5LmFjdGl2ZVxuICAgICkuYXJlVHJ1dGh5KCkpO1xuXG4gICAgdGhpcy5hY3RpdmUgPSB2YWx1ZU9mLmFueShcbiAgICAgIHRoaXMuaW5QbGFjZUludGVyYWN0aW9uUmVnaXN0cnkuYWN0aXZlLFxuICAgICAgdGhpcy5tb2RhbEludGVyYWN0aW9uUmVnaXN0cnkuYWN0aXZlXG4gICAgKS5hcmVUcnV0aHkoKTtcblxuXG4gICAgLy8gVE9ETzogY2hhaW4uY29uY2F0KGxpc3RPclZhbHVlTW9kZWxzKSB3b3VsZCBiZSBuaWNlLlxuICAgIHRoaXMuYWN0aXZlSW50ZXJhY3Rpb25Db250ZXh0SWRzID0gY2hhaW4odGhpcy5pblBsYWNlSW50ZXJhY3Rpb25SZWdpc3RyeS5pbnRlcmFjdGlvbkNvbnRleHRJZHMpXG4gICAgICAuY29uY2F0KHRoaXMubW9kYWxJbnRlcmFjdGlvblJlZ2lzdHJ5LmludGVyYWN0aW9uQ29udGV4dElkcyk7XG5cbiAgICB0aGlzLmFjdGl2ZU1vZGFsQ29udGV4dCA9IGNoYWluKHRoaXMubW9kYWxJbnRlcmFjdGlvblJlZ2lzdHJ5LmludGVyYWN0aW9uQ29udGV4dHMpLmZpcnN0KCk7XG4gICAgdGhpcy5pbk1vZGFsSW50ZXJhY3Rpb24gPSBjaGFpbih0aGlzLmFjdGl2ZU1vZGFsQ29udGV4dCkuaXNOb3ROaWwoKTtcblxuICB9XG5cbiAgaXNBY3RpdmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuYWN0aXZlLnZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIHVzZSAjY3JlYXRlTW9kYWxJbnRlcmFjdGlvbkNvbnRleHREaXNwb3NlZFdpdGggaW5zdGVhZC5cbiAgICogQHBhcmFtIGRpc3Bvc2FibGVcbiAgICovXG4gIGNyZWF0ZU1vZGFsSW50ZXJhY3Rpb25Db250ZXh0Rm9yKGRpc3Bvc2FibGU6IERpc3Bvc2FibGUuQ29sbGVjdG9yKTogSW50ZXJhY3Rpb25Db250ZXh0IHtcbiAgICByZXR1cm4gdGhpcy5jcmVhdGVNb2RhbEludGVyYWN0aW9uQ29udGV4dERpc3Bvc2VkV2l0aChkaXNwb3NhYmxlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IG1vZGVsIGludGVyYWN0aW9uIGNvbnRleHQgdGhhdCB3aWxsIGJlIGRpc3Bvc2VkIGFsb25nIHdpdGggdGhlIGNvbXBvbmVudC5cbiAgICogQHBhcmFtIGRpc3Bvc2FibGVcbiAgICovXG4gIGNyZWF0ZU1vZGFsSW50ZXJhY3Rpb25Db250ZXh0RGlzcG9zZWRXaXRoKGRpc3Bvc2FibGU6IERpc3Bvc2FibGUuQ29sbGVjdG9yKTogSW50ZXJhY3Rpb25Db250ZXh0IHtcbiAgICAvLyBUT0RPOiBsb29rIGF0IG1ha2luZyB0aGUgcmVnaXN0cnkgdGhlIGZhY3RvcnkuLlxuICAgIHJldHVybiB0aGlzLm1vZGVsSW50ZXJhY3Rpb25Db250ZXh0RmFjdG9yeS5jcmVhdGVJbnRlcmFjdGlvbkNvbnRleHQoXCJtb2RhbFwiLCBuZXcgSW50ZXJhY3Rpb25TZXJ2aWNlLkFwaUFkYXB0ZXIodGhpcy5wbGFjZVJvdXRlciwgdGhpcy5tb2RhbEludGVyYWN0aW9uUmVnaXN0cnkpKTtcbiAgfVxuXG4gIHJlZ2lzdGVySW5wbGFjZUludGVyYWN0aW9uQ29udGV4dChpbnRlcmFjdGlvbkNvbnRleHQ6IEluUGxhY2VJbnRlcmFjdGlvbkNvbnRleHQpIHtcbiAgICAvLyBUT0RPOiBsb29rIGF0IG1ha2luZyB0aGUgcmVnaXN0cnkgdGhlIGZhY3RvcnkuLlxuICAgIC8vIFRvZG86IGNoZWNrIGZvciBkb3VibGUgcmVnaXN0cmF0aW9uLlxuICAgIC8vIFRvZG86IGFsbG93IG11bHRpcGxlIGlucGxhY2UgaW50ZXJhY3Rpb25zLi5cbiAgICBpbnRlcmFjdGlvbkNvbnRleHQub25JbnBsYWNlSW50ZXJhY3Rpb25Db250ZXh0UmVnaXN0ZXJlZChgaXAkeysraW5wbGFjZU1vbml0b3JDb3VudH1gLCBuZXcgSW50ZXJhY3Rpb25TZXJ2aWNlLkFwaUFkYXB0ZXIodGhpcy5wbGFjZVJvdXRlciwgdGhpcy5pblBsYWNlSW50ZXJhY3Rpb25SZWdpc3RyeSkpO1xuICB9XG5cblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBpbnRlcmFjdGlvbiBjb250ZXh0IHRoYXQgd2lsbCBwcmV2ZW50IGFueSBvdGhlciBjb250ZXh0cyBmcm9tIHN0YXJ0aW5nIGFuXG4gICAqIGFjdGl2aXR5IHVudGlsIGl0IGlzIGRpc3Bvc2VkLiAgVGhpcyBpcyBpbnRlbmRlZCBmb3IgdXNlIGJ5IHRoZSByb3V0ZXIgZm9yIHBhc3NpbmdcbiAgICogdG8gUGxhY2VDb21wb25lbnQuY2FuRGVhY3RpdmF0ZShpbnRlcmFjdGlvbkNvbnRleHQpLiAgVGhpcyBlbnN1cmVzIGNvbXBvbmVudHMgZG9uJ3RcbiAgICogdHJ5IGFuZCBpbnRlcmFjdCBpbiBhIHdheSB0aGF0IHdlIGNhbid0IHRyYWNrIGFuZCBzeW5jaHJvbmlzZSB3aXRoIHRoZSBicm93c2VyIGJhY2tcbiAgICogYnV0dG9uLlxuICAgKi9cbiAgcmVnaXN0ZXJQbGFjZVJvdXRlcihyb3V0ZXI6IFBsYWNlUm91dGVyKTogSW50ZXJhY3Rpb25TZXJ2aWNlUm91dGluZ0FkYXB0ZXIge1xuICAgIGFzc2VydC5pc0ZhbHNleSh0aGlzLnBsYWNlUm91dGVyKTtcbiAgICB0aGlzLnBsYWNlUm91dGVyID0gcm91dGVyO1xuICAgIHRoaXMuX25hdmlnYXRpb25JblByb2dyZXNzLnNldERlbGVnYXRlKHRoaXMucGxhY2VSb3V0ZXIubmF2aWdhdGlvbkluUHJvZ3Jlc3MkKTtcbiAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICByZXR1cm4gbmV3IEludGVyYWN0aW9uU2VydmljZVJvdXRpbmdBZGFwdGVyKFxuICAgICAgdGhpcy5hY3RpdmVJbnRlcmFjdGlvbkNvbnRleHRJZHMsXG4gICAgICB0aGlzLmFjdGl2ZU1vZGFsQ29udGV4dCxcbiAgICAgICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHNlbGYubW9kZWxJbnRlcmFjdGlvbkNvbnRleHRGYWN0b3J5LmNyZWF0ZUludGVyYWN0aW9uQ29udGV4dChcImV4Y2x1c2l2ZVwiLCBuZXcgSW50ZXJhY3Rpb25TZXJ2aWNlLkFwaUFkYXB0ZXIodGhpcy5wbGFjZVJvdXRlciwgdGhpcy5leGNsdXNpdmVJbnRlcmFjdGlvblJlZ2lzdHJ5KSk7XG4gICAgICB9KTtcbiAgfVxuXG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgSW50ZXJhY3Rpb25TZXJ2aWNlIHtcblxuICBleHBvcnQgaW50ZXJmYWNlIEFwaSB7XG5cbiAgICAvKipcbiAgICAgKiBOb3RpZmllcyB0aGUgaW50ZXJhY3Rpb24gc2VydmljZSB0aGF0IGEgcGFydGljdWxhciBpbnRlcmFjdGlvbkNvbnRleHQgaGFzIGJlY29tZSBhY3RpdmUuIFRoZSBpbnRlcmFjdGlvblxuICAgICAqIHNlcnZpY2VzIHdpbGwgdGhlbiBwdXNoIGNoYW5nZXMgdG8gdGhlIHJvdXRlciB0byB0cmFjayBzdGF0ZS4gIElmIHRoZSByb3V0ZXIgaXMgaWRsZSwgdGhlIHByb21pc2Ugd2lsbFxuICAgICAqIHJlc29sdmUgd2hlbiB0aGUgcm91dGluZyBoYXMgZmluaXNoZWQgdXBkYXRpbmcuICBPdGhlcndpc2UgaXQgd2lsbCByZXR1cm4gaW1tZWRpYXRlbHkuXG4gICAgICogQHBhcmFtIGludGVyYWN0aW9uQ29udGV4dFxuICAgICAqL1xuICAgIG5vdGlmeUFjdGl2ZShpbnRlcmFjdGlvbkNvbnRleHQ6IEludGVyYWN0aW9uQ29udGV4dCk6IFByb21pc2U8dW5rbm93bj47XG5cbiAgICAvKipcbiAgICAgKiBOb3RpZmllcyB0aGUgaW50ZXJhY3Rpb24gc2VydmljZSB0aGF0IGEgcGFydGljdWxhciBpbnRlcmFjdGlvbkNvbnRleHQgaGFzIGJlY29tZSBpZGxlLiBUaGUgaW50ZXJhY3Rpb25cbiAgICAgKiBzZXJ2aWNlcyB3aWxsIHRoZW4gcHVzaCBjaGFuZ2VzIHRvIHRoZSByb3V0ZXIgdG8gdHJhY2sgc3RhdGUuICBJZiB0aGUgcm91dGVyIGlzIGlkbGUsIHRoZSBwcm9taXNlIHdpbGxcbiAgICAgKiByZXNvbHZlIHdoZW4gdGhlIHJvdXRpbmcgaGFzIGZpbmlzaGVkIHVwZGF0aW5nLiAgT3RoZXJ3aXNlLCBpdCB3aWxsIHJldHVybiBpbW1lZGlhdGVseS5cbiAgICAgKiBAcGFyYW0gaW50ZXJhY3Rpb25Db250ZXh0XG4gICAgICovXG4gICAgbm90aWZ5RmluaXNoZWQoaW50ZXJhY3Rpb25Db250ZXh0OiBJbnRlcmFjdGlvbkNvbnRleHQpOiBQcm9taXNlPHVua25vd24+O1xuICB9XG5cbiAgLyoqXG4gICAqIFByb3ZpZGVzIGEgbWVjaGFuaXNtIGZvciB0aGUgc2VydmljZSB0byBrZWVwIHRyYWNrIG9mIHdoYXQgdGhlIEFQSSBhZGFwdGVycyBhcmUgZG9pbmcgdG9cbiAgICogZW5zdXJlIHRoZSBydWxlcyBhcmUgZm9sbG93ZWQsIGkuZS4gbW9kYWwgb3IgaW4tcGxhY2UgaW50ZXJhY3Rpb24gYXJlbid0IHN0YXJ0ZWQgd2hpbGVcbiAgICogYW4gZXhjbHVzaXZlIHJvdXRpbmcgaW50ZXJhY3Rpb24gaXMgYWN0aXZlLlxuICAgKi9cbiAgZXhwb3J0IGNsYXNzIENvbnRleHRSZWdpc3RyeSBleHRlbmRzIEdhcmJhZ2VDb2xsZWN0b3Ige1xuXG4gICAgcHJpdmF0ZSBfaW50ZXJhY3Rpb25zID0gbmV3IE11dGFibGVMaXN0TW9kZWw8SW50ZXJhY3Rpb25Db250ZXh0PigpO1xuICAgIHByaXZhdGUgX2Rpc2FibGVkRGVsZWdhdGUgPSB0aGlzLnJlZ2lzdGVyRGlzcG9zYWJsZShuZXcgRGVsZWdhdGluZ1ZhbHVlTW9kZWw8Ym9vbGVhbj4oKS53aXRoRGVmYXVsdChmYWxzZSkpO1xuICAgIHJlYWRvbmx5IGFjdGl2ZTogQm9vbGVhblZhbHVlTW9kZWxDaGFpbjtcbiAgICByZWFkb25seSBpbnRlcmFjdGlvbkNvbnRleHRJZHM6IExpc3RNb2RlbENoYWluPHN0cmluZz47XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgIHN1cGVyKCk7XG4gICAgICBjb25zdCB7IGNoYWluLCB2YWx1ZU9mLCBiZWZvcmUsIHdoZW4sIGFmdGVyLCBvYnNlcnZlLCBzd2l0Y2hPbiB9ID0gRHNsLmRpc3Bvc2VXaXRoKHRoaXMpO1xuICAgICAgdGhpcy5hY3RpdmUgPSBjaGFpbih0aGlzLl9pbnRlcmFjdGlvbnMpLmlzTm90RW1wdHkoKTtcbiAgICAgIHRoaXMuaW50ZXJhY3Rpb25Db250ZXh0SWRzID0gY2hhaW4odGhpcy5faW50ZXJhY3Rpb25zKS5wbHVjayhcImlkZW50aWZpZXJcIik7XG4gICAgfVxuXG4gICAgZ2V0IGludGVyYWN0aW9uQ29udGV4dHMoKTogTGlzdE1vZGVsPEludGVyYWN0aW9uQ29udGV4dD4ge1xuICAgICAgcmV0dXJuIHRoaXMuX2ludGVyYWN0aW9ucy5yZWFkb25seTtcbiAgICB9XG5cbiAgICBzdGFydChjb250ZXh0OiBJbnRlcmFjdGlvbkNvbnRleHQpIHtcbiAgICAgIHRoaXMuX2ludGVyYWN0aW9ucy5wdXNoKGNvbnRleHQpO1xuICAgIH1cblxuICAgIGZpbmlzaChjb250ZXh0OiBJbnRlcmFjdGlvbkNvbnRleHQpIHtcbiAgICAgIHRoaXMuX2ludGVyYWN0aW9ucy5yZW1vdmUoY29udGV4dCk7XG4gICAgfVxuXG4gICAgaXNBY3RpdmUoKSB7XG4gICAgICByZXR1cm4gdGhpcy5hY3RpdmUudmFsdWU7XG4gICAgfVxuXG4gICAgZGlzYWJsZVdoZW4oZGlzYWJsZWQ6IFZhbHVlTW9kZWw8Ym9vbGVhbj4pIHtcbiAgICAgIHRoaXMuX2Rpc2FibGVkRGVsZWdhdGUuc2V0RGVsZWdhdGUoZGlzYWJsZWQpO1xuICAgIH1cbiAgfVxuXG4gIGV4cG9ydCBjbGFzcyBBcGlBZGFwdGVyIGV4dGVuZHMgR2FyYmFnZUNvbGxlY3RvciBpbXBsZW1lbnRzIEFwaSB7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHBsYWNlUm91dGVyOiBQbGFjZVJvdXRlciwgcHJpdmF0ZSByZWFkb25seSBjb250ZXh0UmVnaXN0cnk6IENvbnRleHRSZWdpc3RyeSkge1xuICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICAvLyBAVHJhY2UoKVxuICAgIG5vdGlmeUFjdGl2ZShjb250ZXh0OiBJbnRlcmFjdGlvbkNvbnRleHQpOiBQcm9taXNlPGFueT4ge1xuICAgICAgYXNzZXJ0LmlzVHJ1dGh5KGNvbnRleHQuaWRlbnRpZmllcik7XG4gICAgICB0aGlzLmNvbnRleHRSZWdpc3RyeS5zdGFydChjb250ZXh0KTtcbiAgICAgIHJldHVybiB0aGlzLmlzTmF2aWdhdGlvbkluUHJvZ3Jlc3MoKSA/IFByb21pc2UucmVzb2x2ZSgpIDogdGhpcy5wbGFjZVJvdXRlci5zeW5jSW50ZXJhY3Rpb25Db250ZXh0SWRzV2l0aFJvdXRlcigpO1xuICAgIH1cblxuICAgIC8vIEBUcmFjZSgpXG4gICAgcHJpdmF0ZSBpc05hdmlnYXRpb25JblByb2dyZXNzKCkge1xuICAgICAgcmV0dXJuIHRoaXMucGxhY2VSb3V0ZXIubmF2aWdhdGlvbkluUHJvZ3Jlc3MkLnZhbHVlO1xuICAgIH1cblxuICAgIEBUcmFjZSgpXG4gICAgbm90aWZ5RmluaXNoZWQoY29udGV4dDogSW50ZXJhY3Rpb25Db250ZXh0KTogUHJvbWlzZTxhbnk+IHtcbiAgICAgIHRoaXMuY29udGV4dFJlZ2lzdHJ5LmZpbmlzaChjb250ZXh0KTtcbiAgICAgIC8vIDo6IEltcG9ydGFudCA6OlxuICAgICAgLy8gVGhpcyBtZXRob2Qgd2lsbCBiZSB0cmF2ZXJzZWQgYnkgYm90aCB0aGUgcGxhY2Ugcm91dGVyIChkdXJpbmcgY2FuIGNhbkRlYWN0aXZhdGUgZ3VhcmRzKSBhbmQgdXNlciBsYW5kIGNvZGVcbiAgICAgIC8vIChib3RoIHdoZW4gcm91dGluZyBpcyBpZGxlIGFuZCB3aGlsZSBpdCBpcyBhY3RpdmUgaW4gUGxhY2VDb21wb25lbnQuY2FuRGVhY3RpdmF0ZSgpKS5cbiAgICAgIC8vIFRoZSByZXN1bHQgb2YgcHVzaEludGVyYWN0aW9uSWRzVG9Sb3V0ZSB3aWxsIG5vdCBzdGFydCB1bnRpbCBhZnRlciB0aGUgY3VycmVudCByb3V0ZSBmaW5pc2hlcywgYW5kIHRoZVxuICAgICAgLy8gY3VycmVudCByb3V0ZSB3b24ndCBmaW5pc2ggdW50aWwgYWZ0ZXIgdGhpcyBwcm9taXNlIHJldHVybnMuLi4gRGVhZGxvY2suXG4gICAgICAvLyBTbyBpbiBvcmRlciB0byBrZWVwIHRoaXMgbG9naWMgb3V0IG9mIHRoZSBhY3Rpdml0aWVzIHdlIHBlcmZvcm0gdGhlIGNoZWNrIGhlcmUgYW5kIGVuc3VyZSB0aGF0XG4gICAgICAvLyBhbnkgaW50ZXJhY3Rpb25zIHdpdGggdGhlIGNvbnRleHQgd2hpbGUgcm91dGluZyBpcyBhY3RpdmUgcmV0dXJucyBpbW1lZGlhdGVseS5cbiAgICAgIHJldHVybiB0aGlzLmlzTmF2aWdhdGlvbkluUHJvZ3Jlc3MoKSA/XG4gICAgICAgIFByb21pc2UucmVzb2x2ZSgpIDpcbiAgICAgICAgdGhpcy5wbGFjZVJvdXRlci5zeW5jSW50ZXJhY3Rpb25Db250ZXh0SWRzV2l0aFJvdXRlcigpO1xuICAgIH1cbiAgfVxuXG59XG4iXX0=
|
|
@@ -13,6 +13,7 @@ import { PopStateNavigation } from "./navigation/session/pop-state-navigation";
|
|
|
13
13
|
import { PlaceAccessGuard } from "./place-access-guard";
|
|
14
14
|
import { PlaceHistory } from "./place-history";
|
|
15
15
|
import { UrlService } from "./url-service";
|
|
16
|
+
import { isEmpty } from "lodash-es";
|
|
16
17
|
import * as i0 from "@angular/core";
|
|
17
18
|
import * as i1 from "@angular/router";
|
|
18
19
|
import * as i2 from "@angular/common";
|
|
@@ -196,7 +197,10 @@ export class PlaceRouter extends GarbageCollector {
|
|
|
196
197
|
}
|
|
197
198
|
navigate(visit, options) {
|
|
198
199
|
const commands = asArray(visit).reduce((result, v) => {
|
|
199
|
-
|
|
200
|
+
const path = v.placeDefinition.path;
|
|
201
|
+
return isEmpty(path) ?
|
|
202
|
+
[...result, path] : // Angular doesn't support route params on empty path segments
|
|
203
|
+
[...result, path, ...this.createRouteParameters(v)];
|
|
200
204
|
}, []);
|
|
201
205
|
return this.doNavigation(visit, async (router) => {
|
|
202
206
|
await this.angularRouter.navigate(commands, {
|
|
@@ -359,4 +363,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImpor
|
|
|
359
363
|
}
|
|
360
364
|
PlaceRouter.State = State;
|
|
361
365
|
})(PlaceRouter || (PlaceRouter = {}));
|
|
362
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2Utcm91dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXVpLXBvd2VydXBzL3NyYy9saWIvcGxhY2UvcGxhY2Utcm91dGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBR0wsZ0JBQWdCLEVBQ2hCLGFBQWEsRUFDYixlQUFlLEVBRWYsZUFBZSxFQUNmLE1BQU0sRUFFUCxNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFDTCxNQUFNLEVBQ04sT0FBTyxFQUNQLFlBQVksRUFDWixvQkFBb0IsRUFDcEIsR0FBRyxFQUNILGdCQUFnQixFQUNoQixJQUFJLEVBRUosTUFBTSxFQUNOLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDakIsS0FBSyxFQUdOLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDakYsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0saUVBQWlFLENBQUM7QUFDOUcsT0FBTyxFQUNMLG1DQUFtQyxFQUNwQyxNQUFNLDJFQUEyRSxDQUFDO0FBQ25GLE9BQU8sRUFDTCx5Q0FBeUMsRUFDMUMsTUFBTSxrRkFBa0YsQ0FBQztBQUMxRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDN0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFFNUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDL0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFeEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9B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S0FBWTtRQUN4QyxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsZUFBZSxDQUFDO1FBQ2xDLE9BQU8sS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7WUFDekIsQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBRyxDQUFDLDJCQUEyQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMxRSxDQUFDLEdBQUcsQ0FBQywyQkFBMkIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzdDLENBQUM7O3dHQWxXVSxXQUFXOzRHQUFYLFdBQVcsY0FGVixNQUFNO0FBcVNsQjtJQURDLEtBQUssRUFBRTs7Ozt5REFnQlA7QUFjRDtJQURDLEtBQUssRUFBRTs7OztzRUEyQlA7MkZBMVZVLFdBQVc7a0JBSHZCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CO3lNQW9TUyxzQkFBc0IsTUE2QjlCLG1DQUFtQztBQXNDckMsV0FBaUIsV0FBVztJQU0xQixNQUFhLEtBQUs7UUFDaEIsWUFBNkIsWUFBcUI7WUFBckIsaUJBQVksR0FBWixZQUFZLENBQVM7UUFDbEQsQ0FBQztRQUVELGFBQWEsQ0FBQyxlQUFnQztZQUM1QyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzdDLENBQUM7UUFFRCxXQUFXLENBQUMsZUFBZ0M7WUFDMUMsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxlQUFlLEtBQUssZUFBZSxDQUFDLENBQUM7UUFDNUUsQ0FBQztLQUNGO0lBWFksaUJBQUssUUFXakIsQ0FBQTtBQUVILENBQUMsRUFuQmdCLFdBQVcsS0FBWCxXQUFXLFFBbUIzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExvY2F0aW9uIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQge1xuICBBY3RpdmF0ZWRSb3V0ZSxcbiAgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcbiAgTmF2aWdhdGlvbkNhbmNlbCxcbiAgTmF2aWdhdGlvbkVuZCxcbiAgTmF2aWdhdGlvbkVycm9yLFxuICBOYXZpZ2F0aW9uRXh0cmFzLFxuICBOYXZpZ2F0aW9uU3RhcnQsXG4gIFJvdXRlcixcbiAgUm91dGVyU3RhdGVTbmFwc2hvdFxufSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XG5pbXBvcnQge1xuICBhc3NlcnQsXG4gIEJpbmRpbmcsXG4gIERlYnVnQ29udGV4dCxcbiAgRGVsZWdhdGluZ1ZhbHVlTW9kZWwsXG4gIERzbCxcbiAgR2FyYmFnZUNvbGxlY3RvcixcbiAgbGFuZyxcbiAgTGlzdE1vZGVsLFxuICBMb2dnZXIsXG4gIE11dGFibGVMaXN0TW9kZWwsXG4gIE11dGFibGVWYWx1ZU1vZGVsLFxuICBUcmFjZSxcbiAgVmFsdWVNb2RlbCxcbiAgVmFsdWVNb2RlbENoYWluXG59IGZyb20gXCJAY29vbG9uL3BlY3RpblwiO1xuaW1wb3J0IHsgSW50ZXJhY3Rpb25TZXJ2aWNlUm91dGluZ0FkYXB0ZXIgfSBmcm9tIFwiLi4vaW50ZXJhY3Rpb24vc2VydmljZXMvaW50ZXJhY3Rpb24tc2VydmljZS1yb3V0aW5nLWFkYXB0ZXJcIjtcbmltcG9ydCB7IEludGVyYWN0aW9uU2VydmljZSB9IGZyb20gXCIuLi9pbnRlcmFjdGlvbi9zZXJ2aWNlcy9pbnRlcmFjdGlvbi5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBOYXZpZ2F0aW5nRHVyaW5nSW50ZXJhY3Rpb24gfSBmcm9tIFwiLi9uYXZpZ2F0aW9uL3Nlc3Npb24vaW50ZXJhY3Rpb25zL25hdmlnYXRpbmctZHVyaW5nLWludGVyYWN0aW9uXCI7XG5pbXBvcnQge1xuICBQb3BTdGF0ZUR1cmluZ0ludGVyYWN0aW9uTmF2aWdhdGlvblxufSBmcm9tIFwiLi9uYXZpZ2F0aW9uL3Nlc3Npb24vaW50ZXJhY3Rpb25zL3BvcC1zdGF0ZS1kdXJpbmctaW50ZXJhY3Rpb24tbmF2aWdhdGlvblwiO1xuaW1wb3J0IHtcbiAgU3luY2hyb25pc2VJbnRlcmFjdGlvbkNvbnRleHRJZHNXaXRoUm91dGVcbn0gZnJvbSBcIi4vbmF2aWdhdGlvbi9zZXNzaW9uL2ludGVyYWN0aW9ucy9zeW5jaHJvbmlzZS1pbnRlcmFjdGlvbi1jb250ZXh0LWlkcy13aXRoLXJvdXRlXCI7XG5pbXBvcnQgeyBOYXZpZ2F0aW5nIH0gZnJvbSBcIi4vbmF2aWdhdGlvbi9zZXNzaW9uL25hdmlnYXRpbmdcIjtcbmltcG9ydCB7IE5hdmlnYXRpb25Db250ZXh0IH0gZnJvbSBcIi4vbmF2aWdhdGlvbi9zZXNzaW9uL25hdmlnYXRpb24tY29udGV4dFwiO1xuaW1wb3J0IHsgTmF2aWdhdGlvblNlc3Npb24gfSBmcm9tIFwiLi9uYXZpZ2F0aW9uL3Nlc3Npb24vbmF2aWdhdGlvbi1zZXNzaW9uXCI7XG5pbXBvcnQgeyBQb3BTdGF0ZU5hdmlnYXRpb24gfSBmcm9tIFwiLi9uYXZpZ2F0aW9uL3Nlc3Npb24vcG9wLXN0YXRlLW5hdmlnYXRpb25cIjtcbmltcG9ydCB7IFBsYWNlQWNjZXNzR3VhcmQgfSBmcm9tIFwiLi9wbGFjZS1hY2Nlc3MtZ3VhcmRcIjtcbmltcG9ydCB7IFBsYWNlRGVmaW5pdGlvbiB9IGZyb20gXCIuL3BsYWNlLWRlZmluaXRpb25cIjtcbmltcG9ydCB7IFBsYWNlSGlzdG9yeSB9IGZyb20gXCIuL3BsYWNlLWhpc3RvcnlcIjtcbmltcG9ydCB7IFVybFNlcnZpY2UgfSBmcm9tIFwiLi91cmwtc2VydmljZVwiO1xuaW1wb3J0IHsgVXJsU25hcHNob3QgfSBmcm9tIFwiLi91cmwtc25hcHNob3RcIjtcbmltcG9ydCB7IFZpc2l0IH0gZnJvbSBcIi4vdmlzaXRcIjtcblxuZnVuY3Rpb24gYXNBcnJheTxUPihpdGVtOiBUIHwgVFtdKTogVFtdIHtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkoaXRlbSkgPyBpdGVtIDogW2l0ZW1dO1xufVxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46IFwicm9vdFwiXG59KVxuZXhwb3J0IGNsYXNzIFBsYWNlUm91dGVyIGV4dGVuZHMgR2FyYmFnZUNvbGxlY3RvciB7XG5cbiAgcmVhZG9ubHkgbmF2aWdhdGlvblNlc3Npb24kID0gbmV3IE11dGFibGVWYWx1ZU1vZGVsPE5hdmlnYXRpb25TZXNzaW9uPigpO1xuICByZWFkb25seSBuYXZpZ2F0aW9uSW5Qcm9ncmVzcyQ6IFZhbHVlTW9kZWxDaGFpbjxib29sZWFuPjtcbiAgcmVhZG9ubHkgbmF2aWdhdGlvblNlc3Npb25OYW1lJDogVmFsdWVNb2RlbENoYWluPHN0cmluZz47IC8vIHVzZWQgYnkgdGVzdHNcbiAgcmVhZG9ubHkgaW50ZXJhY3Rpb25TeW5jSW5Qcm9ncmVzcyQ6IFZhbHVlTW9kZWw8Ym9vbGVhbj47XG5cbiAgcHJpdmF0ZSByZWFkb25seSBuYXZpZ2F0aW9uQ29udGV4dDogTmF2aWdhdGlvbkNvbnRleHQuSW1wbDtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9hY3RpdmVWaXNpdHMkID0gbmV3IE11dGFibGVMaXN0TW9kZWw8VmlzaXQ+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcm91dGVySW50ZXJhY3Rpb25BZGFwdGVyOiBJbnRlcmFjdGlvblNlcnZpY2VSb3V0aW5nQWRhcHRlcjtcbiAgcHJpdmF0ZSBzZXNzaW9uRmluaXNoZWRKb2JzOiAoKCkgPT4gdm9pZClbXSA9IFtdO1xuXG4gIHB1YmxpYyByZWFkb25seSBzdGF0ZSQ6IFZhbHVlTW9kZWw8UGxhY2VSb3V0ZXIuU3RhdGU+O1xuXG4gIC8qKlxuICAgKiBBbiBvYnNlcnZhYmxlIG1vZGVsIGNvbnRhaW5pbmcgdGhlIGF1dGhvcmlzZXIgZnVuY3Rpb24uICBUaGlzIGFsbG93cyBwbGFjZXMgdG8gcmVhY3QgdG8gY2hhbmdlc1xuICAgKiBpbiBwZXJtaXNzaW9ucyB3aGVuIGFueSB1bmRlcmx5aW5nIGF1dGggbG9naWMgY2hhbmdlcywgZS5nLiBhIHJvbGUgYmVpbmcgcmVtb3ZlZCBmcm9tIGEgdXNlci5cbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgX2FjY2Vzc0d1YXJkID0gdGhpcy5yZWdpc3RlckRpc3Bvc2FibGUobmV3IERlbGVnYXRpbmdWYWx1ZU1vZGVsPFBsYWNlQWNjZXNzR3VhcmQ+KCkud2l0aERlZmF1bHQobmV3IFBsYWNlQWNjZXNzR3VhcmQuTm9BdXRoKCkpKTtcbiAgcHJpdmF0ZSByZWRpcmVjdGlvbnM6IFBsYWNlUm91dGVyLlJlZGlyZWN0aW9ucztcblxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgYW5ndWxhclJvdXRlcjogUm91dGVyLFxuICAgICAgICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGFuZ3VsYXJMb2NhdGlvbjogTG9jYXRpb24sXG4gICAgICAgICAgICAgIHByaXZhdGUgcmVhZG9ubHkgaW50ZXJhY3Rpb25TZXJ2aWNlOiBJbnRlcmFjdGlvblNlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgcmVhZG9ubHkgdXJsU2VydmljZTogVXJsU2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSByZWFkb25seSBwbGFjZUhpc3Rvcnk6IFBsYWNlSGlzdG9yeSkge1xuICAgIHN1cGVyKCk7XG5cbiAgICBpZiAod2luZG93W1wiQ3lwcmVzc1wiXSkge1xuICAgICAgd2luZG93W1wiYXVwLlBsYWNlUm91dGVyXCJdID0gdGhpcztcbiAgICB9XG5cbiAgICB0aGlzLnJvdXRlckludGVyYWN0aW9uQWRhcHRlciA9IGludGVyYWN0aW9uU2VydmljZS5yZWdpc3RlclBsYWNlUm91dGVyKHRoaXMpO1xuXG4gICAgLy8gVE9ETzogTWFrZSB0aGlzIGFuIGludGVyZmFjZSBhbmQgdXNlICd0aGlzJyBpbnN0ZWFkLlxuICAgIHRoaXMubmF2aWdhdGlvbkNvbnRleHQgPSBuZXcgTmF2aWdhdGlvbkNvbnRleHQuSW1wbChcbiAgICAgIHRoaXMudXJsU2VydmljZSxcbiAgICAgIHRoaXMucm91dGVySW50ZXJhY3Rpb25BZGFwdGVyLFxuICAgICAgKHVybFNuYXBzaG90OiBVcmxTbmFwc2hvdCwgb3B0aW9uczogeyByZXBsYWNlVXJsOiBib29sZWFuIH0pID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubmF2aWdhdGVCeVVybCh1cmxTbmFwc2hvdCwgb3B0aW9ucyk7XG4gICAgICB9LFxuICAgICAgc3RhdGUgPT4ge1xuICAgICAgICB0aGlzLnRyYW5zaXRpb25UbyhzdGF0ZSk7XG4gICAgICB9LFxuICAgICAgdmlzaXRzID0+IHtcbiAgICAgICAgdGhpcy5yb3V0aW5nU2Vzc2lvbkZpbmlzaGVkKHZpc2l0cyk7XG4gICAgICB9KTtcblxuICAgIGNvbnN0IHsgY2hhaW4sIHZhbHVlT2YsIGJlZm9yZSwgd2hlbiwgYWZ0ZXIsIG9ic2VydmUsIHN3aXRjaE9uIH0gPSBEc2wuZGlzcG9zZVdpdGgodGhpcyk7XG4gICAgdGhpcy5uYXZpZ2F0aW9uSW5Qcm9ncmVzcyQgPSBjaGFpbih0aGlzLm5hdmlnYXRpb25TZXNzaW9uJCkuaXNOb3ROaWwoKTtcbiAgICB0aGlzLmludGVyYWN0aW9uU3luY0luUHJvZ3Jlc3MkID0gY2hhaW4odGhpcy5uYXZpZ2F0aW9uU2Vzc2lvbiQpLnBsdWNrKFwiaXNJbnRlcmFjdGlvblN5bmNcIilcblxuICAgIGNvbnN0IGlkbGVTdGF0ZU5hbWUgPSBjaGFpbih0aGlzLmludGVyYWN0aW9uU2VydmljZS5hY3RpdmUpLm1hcChhY3RpdmUgPT4gYWN0aXZlID8gXCJJZGxlRHVyaW5nSW50ZXJhY3Rpb25cIiA6IFwiSWRsZVwiKTtcbiAgICB0aGlzLm5hdmlnYXRpb25TZXNzaW9uTmFtZSQgPSBjaGFpbih0aGlzLm5hdmlnYXRpb25TZXNzaW9uJClcbiAgICAgIC5wbHVjayhcIm5hbWVcIilcbiAgICAgIC5vdGhlcndpc2UoaWRsZVN0YXRlTmFtZSk7XG5cbiAgICBEZWJ1Z0NvbnRleHQudGFnKHRoaXMuX2FjdGl2ZVZpc2l0cyQsIFwiUGxhY2VSb3V0ZXIuYWN0aXZlVmlzaXRzXCIpO1xuICAgIHRoaXMuc3RhdGUkID0gY2hhaW4odGhpcy5fYWN0aXZlVmlzaXRzJCkucmVkdWNlKHZpc2l0cyA9PiBuZXcgUGxhY2VSb3V0ZXIuU3RhdGUodmlzaXRzKSk7XG5cbiAgICAvLyBUT0RPOiBtYWtlIHNldHVwIHRoZSBjYWxsYmFja3MgaW4gZHVyaW5nIG1vZHVsZSBpbml0aWF0aW9uIHRvIG1ha2UgdGhpcyB0ZXN0YWJsZS5cbiAgICBhbmd1bGFyUm91dGVyLmV2ZW50cy5zdWJzY3JpYmUoZXZlbnQgPT4ge1xuICAgICAgLy8gUm91dGluZyBldmVudCBzZXF1ZW5jZVxuICAgICAgLy8gPT09PT09PT09PT09PT09PT09PT09PVxuICAgICAgLy8gTmF2aWdhdGlvblN0YXJ0IC0+IC4uLi4gLT4gTmF2aWdhdGlvbkNhbmNlbCAtLT4gcmVkaXJlY3QsIGdvIGFyb3VuZCBhZ2FpbiBpbiB0aGUgc2FtZSBzZXNzaW9uXG4gICAgICAvLyBOYXZpZ2F0aW9uU3RhcnQgLT4gLi4uLiAtPiBOYXZpZ2F0aW9uRW5kIC0tPiBuYXZpZ2F0aW9uIGNvbXBsZXRlLCBlbmQgc2Vzc2lvbi5cbiAgICAgIC8vIE5hdmlnYXRpb25TdGFydCAtPiAuLi4uIC0+IE5hdmlnYXRpb25FcnJvciAtLT4gbmF2aWdhdGlvbiBhYm9ydGVkLCBlbmQgc2Vzc2lvbi5cbiAgICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09XG4gICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uU3RhcnQpIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coYC0tLT4gTmF2aWdhdGlvblN0YXJ0WyR7ZXZlbnQuaWR9XTogJHtldmVudC51cmx9ICgke2V2ZW50Lm5hdmlnYXRpb25UcmlnZ2VyfSlgKTtcbiAgICAgICAgaWYgKGV2ZW50Lm5hdmlnYXRpb25UcmlnZ2VyID09PSBcInBvcHN0YXRlXCIpIHtcbiAgICAgICAgICB0aGlzLm9uUG9wU3RhdGUoZXZlbnQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMub25Sb3V0ZXJTdGFydGVkKGV2ZW50KTtcbiAgICAgICAgfVxuICAgICAgICAvLyBjb25zb2xlLmxvZyhgPC0tLSBOYXZpZ2F0aW9uU3RhcnRbJHtldmVudC5pZH1dOiAke2V2ZW50LnVybH0gKCR7ZXZlbnQubmF2aWdhdGlvblRyaWdnZXJ9KWApO1xuICAgICAgfVxuICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkge1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhgLS0tPiBOYXZpZ2F0aW9uRW5kWyR7ZXZlbnQuaWR9XTogJHtldmVudC51cmx9YCk7XG4gICAgICAgIHRoaXMub25Sb3V0ZXJFbmQoZXZlbnQpO1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhgPC0tLSBOYXZpZ2F0aW9uRW5kWyR7ZXZlbnQuaWR9XTogJHtldmVudC51cmx9YCk7XG4gICAgICB9XG4gICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRXJyb3IpIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coYC0tLT4gTmF2aWdhdGlvbkVycm9yWyR7ZXZlbnQuaWR9XTogJHtldmVudC51cmx9YCk7XG4gICAgICAgIHRoaXMub25Sb3V0ZXJFcnJvcihldmVudCk7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGA8LS0tIE5hdmlnYXRpb25FcnJvclske2V2ZW50LmlkfV06ICR7ZXZlbnQudXJsfWApO1xuICAgICAgfVxuICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkNhbmNlbCkge1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhgLS0tPiBOYXZpZ2F0aW9uQ2FuY2VsWyR7ZXZlbnQuaWR9XTogJHtldmVudC51cmx9YCk7XG4gICAgICAgIHRoaXMub25Sb3V0ZXJDYW5jZWxsZWQoZXZlbnQpO1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhgPC0tLSBOYXZpZ2F0aW9uQ2FuY2VsWyR7ZXZlbnQuaWR9XTogJHtldmVudC51cmx9YCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBUaGUgcm91dGVyIG5lZWRzIHRvIGtub3cgYWJvdXQgdXJsIGNoYW5nZXMgYW5kIGluIHNvbWUgY2FzZXMgdGhleSBhcmUgdGhlIG9ubHkgd2F5IHRoZSByb3V0ZXIgY2FuIGtub3cgaWZcbiAgICAvLyB0aGUgYmFjayBidXR0b24gd2FzIGNsaWNrZWQuXG4gICAgYW5ndWxhckxvY2F0aW9uLm9uVXJsQ2hhbmdlKHVybCA9PiB0aGlzLm9uVXJsQ2hhbmdlZCh1cmwpKTtcblxuICB9XG5cbiAgZ2V0IGFjY2Vzc0d1YXJkKCk6IFZhbHVlTW9kZWw8UGxhY2VBY2Nlc3NHdWFyZD4ge1xuICAgIHJldHVybiB0aGlzLl9hY2Nlc3NHdWFyZC5yZWFkb25seTtcbiAgfVxuXG4gIC8vIEBUcmFjZSgpXG4gIGNvbmZpZ3VyZUF1dGgoYWNjZXNzR3JhbnQ6IFZhbHVlTW9kZWw8UGxhY2VBY2Nlc3NHdWFyZD4sIHJlZGlyZWN0aW9uczogUGxhY2VSb3V0ZXIuUmVkaXJlY3Rpb25zKSB7XG4gICAgLy8gV2UgbmVlZCBhIHNoaXR0eSBtdXRhYmxlIG1vZGVsIHVudGlsIHNldERlbGVnYXRlIGlzIGNsZXZlciBlbm91Z2ggdG8gd29yayB3aXRoIHJlYWRvbmx5IG1vZGVscy5cbiAgICBjb25zdCBoYWNreU11dGFibGVNb2RlbCA9IG5ldyBNdXRhYmxlVmFsdWVNb2RlbDxQbGFjZUFjY2Vzc0d1YXJkPigpO1xuICAgIGNvbnN0IGJpbmRpbmcgPSBuZXcgQmluZGluZyhoYWNreU11dGFibGVNb2RlbCwgYWNjZXNzR3JhbnQsIHtcbiAgICAgIHRvUmlnaHQobGVmdFZhbHVlOiBQbGFjZUFjY2Vzc0d1YXJkKSB7XG4gICAgICAgIHJldHVybiBsYW5nLmlsbGVnYWxTdGF0ZShcImhhY2t5TXV0YWJsZU1vZGVsIGlzIHJlYWQgb25seVwiKTtcbiAgICAgIH0sXG4gICAgICB0b0xlZnQ6IChyaWdodFZhbHVlOiBQbGFjZUFjY2Vzc0d1YXJkKSA9PiByaWdodFZhbHVlXG4gICAgfSk7XG4gICAgYmluZGluZy53cml0ZUxlZnQoKTtcbiAgICB0aGlzLl9hY2Nlc3NHdWFyZC5zZXREZWxlZ2F0ZShoYWNreU11dGFibGVNb2RlbCk7XG4gICAgdGhpcy5yZWRpcmVjdGlvbnMgPSByZWRpcmVjdGlvbnM7XG4gIH1cblxuICBnZXRBdXRoZW50aWNhdGlvbkZhaWx1cmVSZWRpcmVjdChhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3QpOiBWaXNpdCB7XG4gICAgcmV0dXJuIHRoaXMucmVkaXJlY3Rpb25zLm9uQXV0aGVudGljYXRpb25GYWlsdXJlKGFjdGl2YXRlZFJvdXRlLCBzdGF0ZSk7XG4gIH1cblxuICBnZXQgbmF2aWdhdGlvblNlc3Npb24oKSB7XG4gICAgcmV0dXJuIHRoaXMubmF2aWdhdGlvblNlc3Npb24kLnZhbHVlO1xuICB9XG5cbiAgZ2V0IGN1cnJlbnRTZXNzaW9uKCkge1xuICAgIHJldHVybiB0aGlzLm5hdmlnYXRpb25TZXNzaW9uJC52YWx1ZTtcbiAgfVxuXG4gIGlzTmF2aWdhdGluZygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5uYXZpZ2F0aW9uSW5Qcm9ncmVzcyQudmFsdWU7XG4gIH1cblxuICB3YWl0VW50aWxJZGxlKCk6IFByb21pc2U8dGhpcz4ge1xuICAgIGNvbnN0IHsgd2hlbiB9ID0gRHNsLmRpc3Bvc2VXaXRoKHRoaXMpO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTx0aGlzPihyZXNvbHZlID0+IHtcbiAgICAgIHdoZW4odGhpcy5uYXZpZ2F0aW9uSW5Qcm9ncmVzcyQpLmJlY29tZXNGYWxzZXkoKCkgPT4gcmVzb2x2ZSh0aGlzKSwge1xuICAgICAgICBpbml0aWFsVmFsdWU6IFwiZXZhbHVhdGVcIixcbiAgICAgICAgb25jZTogdHJ1ZVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyB3YWl0QWN0aXZpdGllc1N5bmNocm9uaXNlZCgpOiBQcm9taXNlPHRoaXM+IHtcbiAgICBjb25zdCB7IHdoZW4gfSA9IERzbC5kaXNwb3NlV2l0aCh0aGlzKTtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8dGhpcz4ocmVzb2x2ZSA9PiB7XG4gICAgICB3aGVuKHRoaXMuaW50ZXJhY3Rpb25TeW5jSW5Qcm9ncmVzcyQpLmJlY29tZXNGYWxzZXkoKCkgPT4gcmVzb2x2ZSh0aGlzKSwge1xuICAgICAgICBpbml0aWFsVmFsdWU6IFwiZXZhbHVhdGVcIixcbiAgICAgICAgb25jZTogdHJ1ZVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvLyBAVHJhY2UoKVxuICBvblBvcFN0YXRlKGV2ZW50OiBOYXZpZ2F0aW9uU3RhcnQpIHtcbiAgICBhc3NlcnQuaXNUcnV0aHkoZXZlbnQubmF2aWdhdGlvblRyaWdnZXIgPT09IFwicG9wc3RhdGVcIik7XG4gICAgaWYgKHRoaXMuY3VycmVudFNlc3Npb24pIHtcbiAgICAgIHRoaXMuY3VycmVudFNlc3Npb24ub25Qb3BTdGF0ZShldmVudCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHBvcHBlZEhpc3RvcnlVcmwgPSBldmVudC51cmw7XG4gICAgICBjb25zdCBjdXJyZW50Um91dGVyVXJsID0gdGhpcy51cmxTZXJ2aWNlLmdldEN1cnJlbnRSb3V0ZXJVcmwoKTtcbiAgICAgIGNvbnN0IHNlc3Npb24gPSB0aGlzLmludGVyYWN0aW9uU2VydmljZS5pc0FjdGl2ZSgpID9cbiAgICAgICAgbmV3IFBvcFN0YXRlRHVyaW5nSW50ZXJhY3Rpb25OYXZpZ2F0aW9uKHRoaXMubmF2aWdhdGlvbkNvbnRleHQsIGN1cnJlbnRSb3V0ZXJVcmwsIHBvcHBlZEhpc3RvcnlVcmwpIDpcbiAgICAgICAgbmV3IFBvcFN0YXRlTmF2aWdhdGlvbih0aGlzLm5hdmlnYXRpb25Db250ZXh0LCBjdXJyZW50Um91dGVyVXJsLCBwb3BwZWRIaXN0b3J5VXJsKTtcbiAgICAgIHRoaXMudHJhbnNpdGlvblRvKHNlc3Npb24pO1xuICAgIH1cbiAgfVxuXG4gIC8vIEBUcmFjZSgpXG4gIG9uUm91dGVyU3RhcnRlZChldmVudDogTmF2aWdhdGlvblN0YXJ0KSB7XG4gICAgYXNzZXJ0LmlzRmFsc2V5KGV2ZW50Lm5hdmlnYXRpb25UcmlnZ2VyID09PSBcInBvcHN0YXRlXCIpO1xuICAgIGNvbnN0IGluSW50ZXJhY3Rpb24gPSB0aGlzLmludGVyYWN0aW9uU2VydmljZS5pc0FjdGl2ZSgpO1xuICAgIGlmICh0aGlzLmN1cnJlbnRTZXNzaW9uKSB7XG4gICAgICB0aGlzLmN1cnJlbnRTZXNzaW9uLm9uUm91dGVyU3RhcnRlZChldmVudCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudHJhbnNpdGlvblRvKHRoaXMuY3JlYXRlTmF2aWdhdGlvblNlc3Npb24odGhpcy51cmxTZXJ2aWNlLmdldEN1cnJlbnRSb3V0ZXJVcmwoKSkpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEBUcmFjZSgpXG4gIG9uVXJsQ2hhbmdlZChuZXdVcmw6IHN0cmluZykge1xuICAgIC8vIHRoZSBiYWNrIGJ1dHRvbiBjYW4gdHJpZ2dlciBhIHVybCBjaGFuZ2Ugd2l0aG91dCBhIG5hdmlnYXRpb24gc2Vzc2lvbiBpbiBwcm9ncmVzcyBzbyB3ZVxuICAgIC8vIGNvbnNvbGUubG9nKGAtLS0+IFVybCBDaGFuZ2VkICR7bmV3VXJsfWApO1xuICAgIGlmICh0aGlzLmN1cnJlbnRTZXNzaW9uKSB7XG4gICAgICB0aGlzLmN1cnJlbnRTZXNzaW9uLm9uVXJsQ2hhbmdlKG5ld1VybCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUubG9nKFwiRllJOiB1cmwgY2hhbmdlZCB3aXRob3V0IGEgbmF2aWdhdGlvbiBzZXNzaW9uIGluIHByb2dyZXNzXCIpO1xuICAgIH1cbiAgICAvLyBjb25zb2xlLmxvZyhgPC0tLSBVcmwgQ2hhbmdlZGApO1xuICB9XG5cbiAgLy8gQFRyYWNlKClcbiAgb25Sb3V0ZXJDYW5jZWxsZWQoZXZlbnQ6IE5hdmlnYXRpb25DYW5jZWwpIHtcbiAgICB0aGlzLmN1cnJlbnRTZXNzaW9uLm9uUm91dGVyQ2FuY2VsbGVkKGV2ZW50KTtcbiAgfVxuXG4gIC8vIEBUcmFjZSgpXG4gIG9uUm91dGVyRXJyb3IoZXZlbnQ6IE5hdmlnYXRpb25FcnJvcikge1xuICAgIHRoaXMuY3VycmVudFNlc3Npb24ub25Sb3V0ZXJFcnJvcihldmVudCk7XG4gIH1cblxuICAvLyBAVHJhY2UoKVxuICBvblJvdXRlckVuZChldmVudDogTmF2aWdhdGlvbkVuZCkge1xuICAgIHRoaXMuY3VycmVudFNlc3Npb24ub25Sb3V0ZXJFbmQoZXZlbnQpO1xuICB9XG5cbiAgbmF2aWdhdGUodmlzaXQ6IFZpc2l0IHwgVmlzaXRbXSwgb3B0aW9ucz86IHsgcmVsYXRpdmVUbzogQWN0aXZhdGVkUm91dGUgfSkge1xuICAgIGNvbnN0IGNvbW1hbmRzID0gYXNBcnJheSh2aXNpdCkucmVkdWNlKChyZXN1bHQsIHYpID0+IHtcbiAgICAgIHJldHVybiBbLi4ucmVzdWx0LCB2LnBsYWNlRGVmaW5pdGlvbi5wYXRoLCAuLi50aGlzLmNyZWF0ZVJvdXRlUGFyYW1ldGVycyh2KV07XG4gICAgfSwgW10pO1xuICAgIHJldHVybiB0aGlzLmRvTmF2aWdhdGlvbih2aXNpdCwgYXN5bmMgcm91dGVyID0+IHtcbiAgICAgIGF3YWl0IHRoaXMuYW5ndWxhclJvdXRlci5uYXZpZ2F0ZShjb21tYW5kcywge1xuICAgICAgICByZWxhdGl2ZVRvOiBvcHRpb25zID8gb3B0aW9ucy5yZWxhdGl2ZVRvIDogbnVsbFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvLyBAVHJhY2UoKVxuICBhc3luYyBkb05hdmlnYXRpb24odmlzaXQ6IFZpc2l0IHwgVmlzaXRbXSwgcnVuTmF2aWdhdGlvbkNvbW1hbmRzOiAocm91dGVyOiBSb3V0ZXIpID0+IGFueSkge1xuICAgIGlmICh0aGlzLm5hdmlnYXRpb25JblByb2dyZXNzJC52YWx1ZSkge1xuICAgICAgTG9nZ2VyLmdldCgpLmVycm9yKFwiTmF2aWdhdGlvbiBhbHJlYWR5IGluIHByb2dyZXNzXCIsIHtcbiAgICAgICAgdmlzaXQ6IHZpc2l0LFxuICAgICAgICBzZXNzaW9uOiB0aGlzLm5hdmlnYXRpb25TZXNzaW9uXG4gICAgICB9KTtcbiAgICAgIGxhbmcuaWxsZWdhbFN0YXRlKFwiTmF2aWdhdGlvbiBhbHJlYWR5IGluIHByb2dyZXNzXCIpO1xuICAgIH1cbiAgICBjb25zdCBuYXZpZ2F0aW9uID0gdGhpcy5jcmVhdGVOYXZpZ2F0aW9uU2Vzc2lvbih0aGlzLnVybFNlcnZpY2UuZ2V0Q3VycmVudFJvdXRlclVybCgpKTtcbiAgICBhc0FycmF5KHZpc2l0KS5mb3JFYWNoKHYgPT4gbmF2aWdhdGlvbi5zdG9yZVZpc2l0KHYpKTtcbiAgICB0aGlzLnRyYW5zaXRpb25UbyhuYXZpZ2F0aW9uKTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgcnVuTmF2aWdhdGlvbkNvbW1hbmRzKHRoaXMuYW5ndWxhclJvdXRlcik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIC8vIENoZWNrIGlmIHRoZSByb3V0ZXIgaGFzIGZpbmlzaGVkIChpbiB0aGUgY2FzZSB3aGVyZSBubyByb3V0ZXIgY2hhbmdlIHJlcXVpcmVkKSBhbmQgd2UncmUgc3RpbGwgaW4gIGFcbiAgICAgIC8vIHRyYW5zaWVudCBzdGF0ZSBhbmQgZmluaXNoIG9mIHRoZSB0cmFuc2l0aW9uLlxuICAgICAgaWYgKCF0aGlzLmFuZ3VsYXJSb3V0ZXIuZ2V0Q3VycmVudE5hdmlnYXRpb24oKSAmJiB0aGlzLmN1cnJlbnRTZXNzaW9uKSB7XG4gICAgICAgIHRoaXMuY3VycmVudFNlc3Npb24ub25Sb3V0ZXJFbmQobmV3IE5hdmlnYXRpb25FbmQoLTEsIFwiXCIsIFwiXCIpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuYXZpZ2F0ZUJ5VXJsKHVybFNuYXBzaG90OiBVcmxTbmFwc2hvdCwgbmF2aWdhdGlvbkV4dHJhcz86IE5hdmlnYXRpb25FeHRyYXMpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zb2xlLmxvZyhgIyMjIG5hdmlnYXRpb25CeVVybCAtPiAke3VybFNuYXBzaG90LnVybFRyZWUudG9TdHJpbmcoKX1gKTtcbiAgICByZXR1cm4gdGhpcy5hbmd1bGFyUm91dGVyLm5hdmlnYXRlQnlVcmwodXJsU25hcHNob3QudXJsVHJlZSwgbmF2aWdhdGlvbkV4dHJhcyk7XG4gIH1cblxuICBnZXQgYWN0aXZlVmlzaXRzJCgpOiBMaXN0TW9kZWw8VmlzaXQ+IHtcbiAgICByZXR1cm4gdGhpcy5fYWN0aXZlVmlzaXRzJC5yZWFkb25seTtcbiAgfVxuXG4gIC8vIEBUcmFjZSgpXG4gIGFzeW5jIHB1c2hWaXNpdENoYW5nZXNUb1JvdXRlKHByZXZpb3VzOiBWaXNpdCwgbmV4dDogVmlzaXQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLnBsYWNlSGlzdG9yeS51cGRhdGVWaXNpdChuZXh0KTtcblxuICAgIC8vIEZJWE1FOiBubyByb3V0ZSBpZCAtPiByb3V0ZSBpZCBkdXBsaWNhdGVzIHJvdXRlIHBhcmFtZXRlcnNcbiAgICBpZiAobmV4dC5oYXNSb3V0aW5nQ2hhbmdlZEZyb20ocHJldmlvdXMpKSB7XG4gICAgICByZXR1cm4gdGhpcy5kb05hdmlnYXRpb24obmV4dCwgcm91dGVyID0+IHtcbiAgICAgICAgY29uc3QgdXJsU25hcHNob3QgPSB0aGlzLnVybFNlcnZpY2UucGFyc2VVcmwodGhpcy5hbmd1bGFyUm91dGVyLnJvdXRlclN0YXRlLnNuYXBzaG90LnVybCkudXBkYXRlVmlzaXRTZWdtZW50cyhuZXh0KTtcbiAgICAgICAgLy8gY29uc29sZS5sb2coJyMjIyBQdXNoIENoYW5nZXMgdG8gcm91dGUgUmVkaXJlY3QnLCB7IGNvbW1hbmRzOiB1cmxTbmFwc2hvdC51cmwgfSk7XG4gICAgICAgIHJldHVybiB0aGlzLm5hdmlnYXRlQnlVcmwodXJsU25hcHNob3QpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cblxuICBwcml2YXRlIGNyZWF0ZU5hdmlnYXRpb25TZXNzaW9uKGN1cnJlbnRSb3V0ZXJVcmw6IHN0cmluZyk6IE5hdmlnYXRpb25TZXNzaW9uIHtcbiAgICBjb25zdCBpbkludGVyYWN0aW9uID0gdGhpcy5pbnRlcmFjdGlvblNlcnZpY2UuaXNBY3RpdmUoKTtcbiAgICByZXR1cm4gaW5JbnRlcmFjdGlvbiA/XG4gICAgICBuZXcgTmF2aWdhdGluZ0R1cmluZ0ludGVyYWN0aW9uKHRoaXMubmF2aWdhdGlvbkNvbnRleHQsIGN1cnJlbnRSb3V0ZXJVcmwpIDpcbiAgICAgIG5ldyBOYXZpZ2F0aW5nKHRoaXMubmF2aWdhdGlvbkNvbnRleHQsIGN1cnJlbnRSb3V0ZXJVcmwpO1xuICB9XG5cbiAgLy8gQFRyYWNlKClcbiAgcHJvdGVjdGVkIHRyYW5zaXRpb25UbyhuZXh0OiBOYXZpZ2F0aW9uU2Vzc2lvbikge1xuICAgIGNvbnN0IHByZXZpb3VzID0gdGhpcy5uYXZpZ2F0aW9uU2Vzc2lvbiQudmFsdWU7XG4gICAgaWYgKCFwcmV2aW91cykge1xuICAgICAgdGhpcy5wbGFjZUhpc3Rvcnkubm90aWZ5TmF2aWdhdGlvblN0YXJ0ZWQoKTtcbiAgICB9XG4gICAgYXNzZXJ0LmlzVHJ1dGh5KG5leHQgIT09IHByZXZpb3VzKTtcbiAgICAvLyBMb2dnZXIuZ2V0KHRoaXMpLmluZm8oYCMjIyBSb3V0ZXIgU3RhdGUgVHJhbnNpdGlvbjogJHtwcmV2aW91cyA/IHByZXZpb3VzLnRvU3RyaW5nKCkgOiAnbnVsbCd9IC0+ICR7bmV4dC50b1N0cmluZygpfWApO1xuICAgIHRoaXMubmF2aWdhdGlvblNlc3Npb24kLnZhbHVlID0gbmV4dDtcbiAgICBpZiAoISFwcmV2aW91cykge1xuICAgICAgcHJldmlvdXMuZGlzcG9zZSgpO1xuICAgIH1cbiAgICBuZXh0Lm5vdGlmeUFjdGl2ZSgpO1xuICB9XG5cbiAgQFRyYWNlKClcbiAgcHJpdmF0ZSByb3V0aW5nU2Vzc2lvbkZpbmlzaGVkKHZpc2l0czogVmlzaXRbXSkge1xuICAgIGlmICh2aXNpdHMgJiYgdmlzaXRzLmxlbmd0aCA+IDApIHtcbiAgICAgIGFzc2VydC5pc1RydXRoeSh0aGlzLm5hdmlnYXRpb25JblByb2dyZXNzJC52YWx1ZSk7XG4gICAgICB0aGlzLnBsYWNlSGlzdG9yeS5ub3RpZnlOYXZpZ2F0aW9uRmluaXNoZWQodmlzaXRzKTtcbiAgICAgIC8vIFdlIHVwZGF0ZSB0aGUgYWN0aXZlIHZpc2l0cyBiZWZvcmUgd2UgZmluaXNoIHRoZSBzZXNzaW9uIHNvIHRoZVxuICAgICAgLy8gcGxhY2Ugb3V0bGV0cyBjYW4gaWdub3JlIHRoZSBpbmNvbWluZyBjaGFuZ2VzIHVudGlsIHRoaW5ncyBhcmVcbiAgICAgIC8vIHNldHRsZWQuIFRPRE86IGNhbiB3ZSByZW1vdmVkIHRoZSBldmVudCduZXNzIGhlcmUgYW5kIGp1c3QgZG8gYSBwdXNoP1xuICAgICAgdGhpcy5fYWN0aXZlVmlzaXRzJC52YWx1ZSA9IHZpc2l0cztcbiAgICB9XG4gICAgY29uc3Qgc2Vzc2lvbiA9IHRoaXMuY3VycmVudFNlc3Npb247XG4gICAgc2Vzc2lvbi5kaXNwb3NlKCk7XG4gICAgdGhpcy5uYXZpZ2F0aW9uU2Vzc2lvbiQudmFsdWUgPSBudWxsO1xuICAgIGNvbnNvbGUubG9nKGAjIyMgUm91dGVyIFNlc3Npb24gRmluaXNoZWQgKHdhcyAke3Nlc3Npb24udG9TdHJpbmcoKX0pYCk7XG4gICAgdGhpcy5zZXNzaW9uRmluaXNoZWRKb2JzLmZvckVhY2goam9iID0+IGpvYigpKTtcbiAgICB0aGlzLnNlc3Npb25GaW5pc2hlZEpvYnMgPSBbXTtcbiAgfVxuXG4gIHByaXZhdGUgcnVuQWZ0ZXJSb3V0aW5nU2Vzc2lvbkZpbmlzaGVzKGZ1bmM6ICgpID0+IHZvaWQpIHtcbiAgICBhc3NlcnQuaXNUcnV0aHkodGhpcy5uYXZpZ2F0aW9uSW5Qcm9ncmVzcyQpO1xuICAgIHRoaXMuc2Vzc2lvbkZpbmlzaGVkSm9icy5wdXNoKGZ1bmMpO1xuICB9XG5cblxuICAvKipcbiAgICogU3luYydzIHRoZSBjdXJyZW50IGludGVyYWN0aW9uIHN0YXRlIHdpdGggdGhlIFVSTC4gIFdlIG5lZWQgdG8gcHVzaCBzb21ldGhpbmcgaW4gdGhlIFVSTCBpbiBvcmRlclxuICAgKiB0byBiZSBhYmxlIHRvIGNhcHR1cmUgdGhlIGJhY2sgYnV0dG9uIG9uIHRoZSBmaXJzdCBwYWdlLiAgSWYgd2UgZG9uJ3QgdGhlbiB0aGUgYmFjayBjbGljayB3aWxsIGV4aXRcbiAgICogdGhlIGFwcCBkaXJlY3RseSBhbmQgd2UgZG9uJ3QgZ2V0IHRvIGFzay5cbiAgICovXG4gIEBUcmFjZSgpXG4gIHN5bmNJbnRlcmFjdGlvbkNvbnRleHRJZHNXaXRoUm91dGVyKG9uU3luY0NvbXBsZXRlOiAoKSA9PiB2b2lkID0gKCk9Pnt9KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMubmF2aWdhdGlvblNlc3Npb24pIHtcbiAgICAgIC8vIGNvbnNvbGUubG9nKGBOYXZpZ2F0aW9uIGFjdGl2ZSAtPiAke3RoaXMubmF2aWdhdGlvblNlc3Npb24udG9TdHJpbmcoKX0sIHN5bmMgZGVsYXllZCB1bnRpbCBmaW5pc2hlZC5gKTtcbiAgICAgIGNvbnN0IHNlc3Npb24gPSB0aGlzLm5hdmlnYXRpb25TZXNzaW9uO1xuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgdGhpcy5ydW5BZnRlclJvdXRpbmdTZXNzaW9uRmluaXNoZXMoKCkgPT4ge1xuICAgICAgICAgIHRoaXMucnVuQWZ0ZXJSb3V0aW5nU2Vzc2lvbkZpbmlzaGVzKCgpID0+IHtcbiAgICAgICAgICAgIG9uU3luY0NvbXBsZXRlKCk7XG4gICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgY29uc3Qgc3luY1Nlc3Npb24gPSBuZXcgU3luY2hyb25pc2VJbnRlcmFjdGlvbkNvbnRleHRJZHNXaXRoUm91dGUodGhpcy5uYXZpZ2F0aW9uQ29udGV4dCwgdGhpcy51cmxTZXJ2aWNlLmdldEN1cnJlbnRSb3V0ZXJVcmwoKSwgZmFsc2UpO1xuICAgICAgICAgIHRoaXMudHJhbnNpdGlvblRvKHN5bmNTZXNzaW9uKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KCgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGBObyBuYXZpZ2F0aW9uIGluIHByb2dyZXNzLCBzdGFydGluZyBzeW5jaHJvbmlzYXRpb24gam9iYCk7XG4gICAgICAgIHRoaXMucnVuQWZ0ZXJSb3V0aW5nU2Vzc2lvbkZpbmlzaGVzKCgpID0+IHtcbiAgICAgICAgICBvblN5bmNDb21wbGV0ZSgpO1xuICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHNlc3Npb24gPSBuZXcgU3luY2hyb25pc2VJbnRlcmFjdGlvbkNvbnRleHRJZHNXaXRoUm91dGUodGhpcy5uYXZpZ2F0aW9uQ29udGV4dCwgdGhpcy51cmxTZXJ2aWNlLmdldEN1cnJlbnRSb3V0ZXJVcmwoKSwgZmFsc2UpO1xuICAgICAgICB0aGlzLnRyYW5zaXRpb25UbyhzZXNzaW9uKTtcbiAgICAgIH0pKTtcblxuICAgIH1cbiAgfVxuXG5cbiAgcHJpdmF0ZSBjcmVhdGVSb3V0ZVBhcmFtZXRlcnModmlzaXQ6IFZpc2l0KSB7XG4gICAgY29uc3QgZGVmID0gdmlzaXQucGxhY2VEZWZpbml0aW9uO1xuICAgIHJldHVybiB2aXNpdC5oYXNSb3V0ZUlkKCkgP1xuICAgICAgW2RlZi5nZXRGb3JtYXR0ZWRSb3V0ZUlkKHZpc2l0KSwgZGVmLmdldEZvcm1hdHRlZFJvdXRlUGFyYW1ldGVycyh2aXNpdCldIDpcbiAgICAgIFtkZWYuZ2V0Rm9ybWF0dGVkUm91dGVQYXJhbWV0ZXJzKHZpc2l0KV07XG4gIH1cblxufVxuXG5leHBvcnQgbmFtZXNwYWNlIFBsYWNlUm91dGVyIHtcblxuICBleHBvcnQgaW50ZXJmYWNlIFJlZGlyZWN0aW9ucyB7XG4gICAgb25BdXRoZW50aWNhdGlvbkZhaWx1cmUoYWN0aXZhdGVkUm91dGU/OiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBzdGF0ZT86IFJvdXRlclN0YXRlU25hcHNob3QpOiBWaXNpdDtcbiAgfVxuXG4gIGV4cG9ydCBjbGFzcyBTdGF0ZSB7XG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBhY3RpdmVWaXNpdHM6IFZpc2l0W10pIHtcbiAgICB9XG5cbiAgICBpc1BsYWNlQWN0aXZlKHBsYWNlRGVmaW5pdGlvbjogUGxhY2VEZWZpbml0aW9uKTogYm9vbGVhbiB7XG4gICAgICByZXR1cm4gISF0aGlzLmdldFZpc2l0Rm9yKHBsYWNlRGVmaW5pdGlvbik7XG4gICAgfVxuXG4gICAgZ2V0VmlzaXRGb3IocGxhY2VEZWZpbml0aW9uOiBQbGFjZURlZmluaXRpb24pOiBWaXNpdCB7XG4gICAgICByZXR1cm4gdGhpcy5hY3RpdmVWaXNpdHMuZmluZCh2ID0+IHYucGxhY2VEZWZpbml0aW9uID09PSBwbGFjZURlZmluaXRpb24pO1xuICAgIH1cbiAgfVxuXG59XG4iXX0=
|
|
366
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2Utcm91dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXVpLXBvd2VydXBzL3NyYy9saWIvcGxhY2UvcGxhY2Utcm91dGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBR0wsZ0JBQWdCLEVBQ2hCLGFBQWEsRUFDYixlQUFlLEVBRWYsZUFBZSxFQUNmLE1BQU0sRUFFUCxNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFDTCxNQUFNLEVBQ04sT0FBTyxFQUNQLFlBQVksRUFDWixvQkFBb0IsRUFDcEIsR0FBRyxFQUNILGdCQUFnQixFQUNoQixJQUFJLEVBRUosTUFBTSxFQUNOLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDakIsS0FBSyxFQUdOLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDakYsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0saUVBQWlFLENBQUM7QUFDOUcsT0FBTyxFQUNMLG1DQUFtQyxFQUNwQyxNQUFNLDJFQUEyRSxDQUFDO0FBQ25GLE9BQU8sRUFDTCx5Q0FBeUMsRUFDMUMsTUFBTSxrRkFBa0YsQ0FBQztBQUMxRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDN0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFFNUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDL0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFeEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9B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QztLQUNGO0lBWFksaUJBQUssUUFXakIsQ0FBQTtBQUVILENBQUMsRUFuQmdCLFdBQVcsS0FBWCxXQUFXLFFBbUIzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExvY2F0aW9uIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQge1xuICBBY3RpdmF0ZWRSb3V0ZSxcbiAgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcbiAgTmF2aWdhdGlvbkNhbmNlbCxcbiAgTmF2aWdhdGlvbkVuZCxcbiAgTmF2aWdhdGlvbkVycm9yLFxuICBOYXZpZ2F0aW9uRXh0cmFzLFxuICBOYXZpZ2F0aW9uU3RhcnQsXG4gIFJvdXRlcixcbiAgUm91dGVyU3RhdGVTbmFwc2hvdFxufSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XG5pbXBvcnQge1xuICBhc3NlcnQsXG4gIEJpbmRpbmcsXG4gIERlYnVnQ29udGV4dCxcbiAgRGVsZWdhdGluZ1ZhbHVlTW9kZWwsXG4gIERzbCxcbiAgR2FyYmFnZUNvbGxlY3RvcixcbiAgbGFuZyxcbiAgTGlzdE1vZGVsLFxuICBMb2dnZXIsXG4gIE11dGFibGVMaXN0TW9kZWwsXG4gIE11dGFibGVWYWx1ZU1vZGVsLFxuICBUcmFjZSxcbiAgVmFsdWVNb2RlbCxcbiAgVmFsdWVNb2RlbENoYWluXG59IGZyb20gXCJAY29vbG9uL3BlY3RpblwiO1xuaW1wb3J0IHsgSW50ZXJhY3Rpb25TZXJ2aWNlUm91dGluZ0FkYXB0ZXIgfSBmcm9tIFwiLi4vaW50ZXJhY3Rpb24vc2VydmljZXMvaW50ZXJhY3Rpb24tc2VydmljZS1yb3V0aW5nLWFkYXB0ZXJcIjtcbmltcG9ydCB7IEludGVyYWN0aW9uU2VydmljZSB9IGZyb20gXCIuLi9pbnRlcmFjdGlvbi9zZXJ2aWNlcy9pbnRlcmFjdGlvbi5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBOYXZpZ2F0aW5nRHVyaW5nSW50ZXJhY3Rpb24gfSBmcm9tIFwiLi9uYXZpZ2F0aW9uL3Nlc3Npb24vaW50ZXJhY3Rpb25zL25hdmlnYXRpbmctZHVyaW5nLWludGVyYWN0aW9uXCI7XG5pbXBvcnQge1xuICBQb3BTdGF0ZUR1cmluZ0ludGVyYWN0aW9uTmF2aWdhdGlvblxufSBmcm9tIFwiLi9uYXZpZ2F0aW9uL3Nlc3Npb24vaW50ZXJhY3Rpb25zL3BvcC1zdGF0ZS1kdXJpbmctaW50ZXJhY3Rpb24tbmF2aWdhdGlvblwiO1xuaW1wb3J0IHtcbiAgU3luY2hyb25pc2VJbnRlcmFjdGlvbkNvbnRleHRJZHNXaXRoUm91dGVcbn0gZnJvbSBcIi4vbmF2aWdhdGlvbi9zZXNzaW9uL2ludGVyYWN0aW9ucy9zeW5jaHJvbmlzZS1pbnRlcmFjdGlvbi1jb250ZXh0LWlkcy13aXRoLXJvdXRlXCI7XG5pbXBvcnQgeyBOYXZpZ2F0aW5nIH0gZnJvbSBcIi4vbmF2aWdhdGlvbi9zZXNzaW9uL25hdmlnYXRpbmdcIjtcbmltcG9ydCB7IE5hdmlnYXRpb25Db250ZXh0IH0gZnJvbSBcIi4vbmF2aWdhdGlvbi9zZXNzaW9uL25hdmlnYXRpb24tY29udGV4dFwiO1xuaW1wb3J0IHsgTmF2aWdhdGlvblNlc3Npb24gfSBmcm9tIFwiLi9uYXZpZ2F0aW9uL3Nlc3Npb24vbmF2aWdhdGlvbi1zZXNzaW9uXCI7XG5pbXBvcnQgeyBQb3BTdGF0ZU5hdmlnYXRpb24gfSBmcm9tIFwiLi9uYXZpZ2F0aW9uL3Nlc3Npb24vcG9wLXN0YXRlLW5hdmlnYXRpb25cIjtcbmltcG9ydCB7IFBsYWNlQWNjZXNzR3VhcmQgfSBmcm9tIFwiLi9wbGFjZS1hY2Nlc3MtZ3VhcmRcIjtcbmltcG9ydCB7IFBsYWNlRGVmaW5pdGlvbiB9IGZyb20gXCIuL3BsYWNlLWRlZmluaXRpb25cIjtcbmltcG9ydCB7IFBsYWNlSGlzdG9yeSB9IGZyb20gXCIuL3BsYWNlLWhpc3RvcnlcIjtcbmltcG9ydCB7IFVybFNlcnZpY2UgfSBmcm9tIFwiLi91cmwtc2VydmljZVwiO1xuaW1wb3J0IHsgVXJsU25hcHNob3QgfSBmcm9tIFwiLi91cmwtc25hcHNob3RcIjtcbmltcG9ydCB7IFZpc2l0IH0gZnJvbSBcIi4vdmlzaXRcIjtcbmltcG9ydCB7aXNFbXB0eX0gZnJvbSBcImxvZGFzaC1lc1wiO1xuXG5mdW5jdGlvbiBhc0FycmF5PFQ+KGl0ZW06IFQgfCBUW10pOiBUW10ge1xuICByZXR1cm4gQXJyYXkuaXNBcnJheShpdGVtKSA/IGl0ZW0gOiBbaXRlbV07XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogXCJyb290XCJcbn0pXG5leHBvcnQgY2xhc3MgUGxhY2VSb3V0ZXIgZXh0ZW5kcyBHYXJiYWdlQ29sbGVjdG9yIHtcblxuICByZWFkb25seSBuYXZpZ2F0aW9uU2Vzc2lvbiQgPSBuZXcgTXV0YWJsZVZhbHVlTW9kZWw8TmF2aWdhdGlvblNlc3Npb24+KCk7XG4gIHJlYWRvbmx5IG5hdmlnYXRpb25JblByb2dyZXNzJDogVmFsdWVNb2RlbENoYWluPGJvb2xlYW4+O1xuICByZWFkb25seSBuYXZpZ2F0aW9uU2Vzc2lvbk5hbWUkOiBWYWx1ZU1vZGVsQ2hhaW48c3RyaW5nPjsgLy8gdXNlZCBieSB0ZXN0c1xuICByZWFkb25seSBpbnRlcmFjdGlvblN5bmNJblByb2dyZXNzJDogVmFsdWVNb2RlbDxib29sZWFuPjtcblxuICBwcml2YXRlIHJlYWRvbmx5IG5hdmlnYXRpb25Db250ZXh0OiBOYXZpZ2F0aW9uQ29udGV4dC5JbXBsO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2FjdGl2ZVZpc2l0cyQgPSBuZXcgTXV0YWJsZUxpc3RNb2RlbDxWaXNpdD4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXJJbnRlcmFjdGlvbkFkYXB0ZXI6IEludGVyYWN0aW9uU2VydmljZVJvdXRpbmdBZGFwdGVyO1xuICBwcml2YXRlIHNlc3Npb25GaW5pc2hlZEpvYnM6ICgoKSA9PiB2b2lkKVtdID0gW107XG5cbiAgcHVibGljIHJlYWRvbmx5IHN0YXRlJDogVmFsdWVNb2RlbDxQbGFjZVJvdXRlci5TdGF0ZT47XG5cbiAgLyoqXG4gICAqIEFuIG9ic2VydmFibGUgbW9kZWwgY29udGFpbmluZyB0aGUgYXV0aG9yaXNlciBmdW5jdGlvbi4gIFRoaXMgYWxsb3dzIHBsYWNlcyB0byByZWFjdCB0byBjaGFuZ2VzXG4gICAqIGluIHBlcm1pc3Npb25zIHdoZW4gYW55IHVuZGVybHlpbmcgYXV0aCBsb2dpYyBjaGFuZ2VzLCBlLmcuIGEgcm9sZSBiZWluZyByZW1vdmVkIGZyb20gYSB1c2VyLlxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBfYWNjZXNzR3VhcmQgPSB0aGlzLnJlZ2lzdGVyRGlzcG9zYWJsZShuZXcgRGVsZWdhdGluZ1ZhbHVlTW9kZWw8UGxhY2VBY2Nlc3NHdWFyZD4oKS53aXRoRGVmYXVsdChuZXcgUGxhY2VBY2Nlc3NHdWFyZC5Ob0F1dGgoKSkpO1xuICBwcml2YXRlIHJlZGlyZWN0aW9uczogUGxhY2VSb3V0ZXIuUmVkaXJlY3Rpb25zO1xuXG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBhbmd1bGFyUm91dGVyOiBSb3V0ZXIsXG4gICAgICAgICAgICAgIHByaXZhdGUgcmVhZG9ubHkgYW5ndWxhckxvY2F0aW9uOiBMb2NhdGlvbixcbiAgICAgICAgICAgICAgcHJpdmF0ZSByZWFkb25seSBpbnRlcmFjdGlvblNlcnZpY2U6IEludGVyYWN0aW9uU2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSByZWFkb25seSB1cmxTZXJ2aWNlOiBVcmxTZXJ2aWNlLFxuICAgICAgICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHBsYWNlSGlzdG9yeTogUGxhY2VIaXN0b3J5KSB7XG4gICAgc3VwZXIoKTtcblxuICAgIGlmICh3aW5kb3dbXCJDeXByZXNzXCJdKSB7XG4gICAgICB3aW5kb3dbXCJhdXAuUGxhY2VSb3V0ZXJcIl0gPSB0aGlzO1xuICAgIH1cblxuICAgIHRoaXMucm91dGVySW50ZXJhY3Rpb25BZGFwdGVyID0gaW50ZXJhY3Rpb25TZXJ2aWNlLnJlZ2lzdGVyUGxhY2VSb3V0ZXIodGhpcyk7XG5cbiAgICAvLyBUT0RPOiBNYWtlIHRoaXMgYW4gaW50ZXJmYWNlIGFuZCB1c2UgJ3RoaXMnIGluc3RlYWQuXG4gICAgdGhpcy5uYXZpZ2F0aW9uQ29udGV4dCA9IG5ldyBOYXZpZ2F0aW9uQ29udGV4dC5JbXBsKFxuICAgICAgdGhpcy51cmxTZXJ2aWNlLFxuICAgICAgdGhpcy5yb3V0ZXJJbnRlcmFjdGlvbkFkYXB0ZXIsXG4gICAgICAodXJsU25hcHNob3Q6IFVybFNuYXBzaG90LCBvcHRpb25zOiB7IHJlcGxhY2VVcmw6IGJvb2xlYW4gfSkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5uYXZpZ2F0ZUJ5VXJsKHVybFNuYXBzaG90LCBvcHRpb25zKTtcbiAgICAgIH0sXG4gICAgICBzdGF0ZSA9PiB7XG4gICAgICAgIHRoaXMudHJhbnNpdGlvblRvKHN0YXRlKTtcbiAgICAgIH0sXG4gICAgICB2aXNpdHMgPT4ge1xuICAgICAgICB0aGlzLnJvdXRpbmdTZXNzaW9uRmluaXNoZWQodmlzaXRzKTtcbiAgICAgIH0pO1xuXG4gICAgY29uc3QgeyBjaGFpbiwgdmFsdWVPZiwgYmVmb3JlLCB3aGVuLCBhZnRlciwgb2JzZXJ2ZSwgc3dpdGNoT24gfSA9IERzbC5kaXNwb3NlV2l0aCh0aGlzKTtcbiAgICB0aGlzLm5hdmlnYXRpb25JblByb2dyZXNzJCA9IGNoYWluKHRoaXMubmF2aWdhdGlvblNlc3Npb24kKS5pc05vdE5pbCgpO1xuICAgIHRoaXMuaW50ZXJhY3Rpb25TeW5jSW5Qcm9ncmVzcyQgPSBjaGFpbih0aGlzLm5hdmlnYXRpb25TZXNzaW9uJCkucGx1Y2soXCJpc0ludGVyYWN0aW9uU3luY1wiKVxuXG4gICAgY29uc3QgaWRsZVN0YXRlTmFtZSA9IGNoYWluKHRoaXMuaW50ZXJhY3Rpb25TZXJ2aWNlLmFjdGl2ZSkubWFwKGFjdGl2ZSA9PiBhY3RpdmUgPyBcIklkbGVEdXJpbmdJbnRlcmFjdGlvblwiIDogXCJJZGxlXCIpO1xuICAgIHRoaXMubmF2aWdhdGlvblNlc3Npb25OYW1lJCA9IGNoYWluKHRoaXMubmF2aWdhdGlvblNlc3Npb24kKVxuICAgICAgLnBsdWNrKFwibmFtZVwiKVxuICAgICAgLm90aGVyd2lzZShpZGxlU3RhdGVOYW1lKTtcblxuICAgIERlYnVnQ29udGV4dC50YWcodGhpcy5fYWN0aXZlVmlzaXRzJCwgXCJQbGFjZVJvdXRlci5hY3RpdmVWaXNpdHNcIik7XG4gICAgdGhpcy5zdGF0ZSQgPSBjaGFpbih0aGlzLl9hY3RpdmVWaXNpdHMkKS5yZWR1Y2UodmlzaXRzID0+IG5ldyBQbGFjZVJvdXRlci5TdGF0ZSh2aXNpdHMpKTtcblxuICAgIC8vIFRPRE86IG1ha2Ugc2V0dXAgdGhlIGNhbGxiYWNrcyBpbiBkdXJpbmcgbW9kdWxlIGluaXRpYXRpb24gdG8gbWFrZSB0aGlzIHRlc3RhYmxlLlxuICAgIGFuZ3VsYXJSb3V0ZXIuZXZlbnRzLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICAvLyBSb3V0aW5nIGV2ZW50IHNlcXVlbmNlXG4gICAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09XG4gICAgICAvLyBOYXZpZ2F0aW9uU3RhcnQgLT4gLi4uLiAtPiBOYXZpZ2F0aW9uQ2FuY2VsIC0tPiByZWRpcmVjdCwgZ28gYXJvdW5kIGFnYWluIGluIHRoZSBzYW1lIHNlc3Npb25cbiAgICAgIC8vIE5hdmlnYXRpb25TdGFydCAtPiAuLi4uIC0+IE5hdmlnYXRpb25FbmQgLS0+IG5hdmlnYXRpb24gY29tcGxldGUsIGVuZCBzZXNzaW9uLlxuICAgICAgLy8gTmF2aWdhdGlvblN0YXJ0IC0+IC4uLi4gLT4gTmF2aWdhdGlvbkVycm9yIC0tPiBuYXZpZ2F0aW9uIGFib3J0ZWQsIGVuZCBzZXNzaW9uLlxuICAgICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25TdGFydCkge1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhgLS0tPiBOYXZpZ2F0aW9uU3RhcnRbJHtldmVudC5pZH1dOiAke2V2ZW50LnVybH0gKCR7ZXZlbnQubmF2aWdhdGlvblRyaWdnZXJ9KWApO1xuICAgICAgICBpZiAoZXZlbnQubmF2aWdhdGlvblRyaWdnZXIgPT09IFwicG9wc3RhdGVcIikge1xuICAgICAgICAgIHRoaXMub25Qb3BTdGF0ZShldmVudCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5vblJvdXRlclN0YXJ0ZWQoZXZlbnQpO1xuICAgICAgICB9XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGA8LS0tIE5hdmlnYXRpb25TdGFydFske2V2ZW50LmlkfV06ICR7ZXZlbnQudXJsfSAoJHtldmVudC5uYXZpZ2F0aW9uVHJpZ2dlcn0pYCk7XG4gICAgICB9XG4gICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGAtLS0+IE5hdmlnYXRpb25FbmRbJHtldmVudC5pZH1dOiAke2V2ZW50LnVybH1gKTtcbiAgICAgICAgdGhpcy5vblJvdXRlckVuZChldmVudCk7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGA8LS0tIE5hdmlnYXRpb25FbmRbJHtldmVudC5pZH1dOiAke2V2ZW50LnVybH1gKTtcbiAgICAgIH1cbiAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FcnJvcikge1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhgLS0tPiBOYXZpZ2F0aW9uRXJyb3JbJHtldmVudC5pZH1dOiAke2V2ZW50LnVybH1gKTtcbiAgICAgICAgdGhpcy5vblJvdXRlckVycm9yKGV2ZW50KTtcbiAgICAgICAgLy8gY29uc29sZS5sb2coYDwtLS0gTmF2aWdhdGlvbkVycm9yWyR7ZXZlbnQuaWR9XTogJHtldmVudC51cmx9YCk7XG4gICAgICB9XG4gICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uQ2FuY2VsKSB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGAtLS0+IE5hdmlnYXRpb25DYW5jZWxbJHtldmVudC5pZH1dOiAke2V2ZW50LnVybH1gKTtcbiAgICAgICAgdGhpcy5vblJvdXRlckNhbmNlbGxlZChldmVudCk7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGA8LS0tIE5hdmlnYXRpb25DYW5jZWxbJHtldmVudC5pZH1dOiAke2V2ZW50LnVybH1gKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIFRoZSByb3V0ZXIgbmVlZHMgdG8ga25vdyBhYm91dCB1cmwgY2hhbmdlcyBhbmQgaW4gc29tZSBjYXNlcyB0aGV5IGFyZSB0aGUgb25seSB3YXkgdGhlIHJvdXRlciBjYW4ga25vdyBpZlxuICAgIC8vIHRoZSBiYWNrIGJ1dHRvbiB3YXMgY2xpY2tlZC5cbiAgICBhbmd1bGFyTG9jYXRpb24ub25VcmxDaGFuZ2UodXJsID0+IHRoaXMub25VcmxDaGFuZ2VkKHVybCkpO1xuXG4gIH1cblxuICBnZXQgYWNjZXNzR3VhcmQoKTogVmFsdWVNb2RlbDxQbGFjZUFjY2Vzc0d1YXJkPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FjY2Vzc0d1YXJkLnJlYWRvbmx5O1xuICB9XG5cbiAgLy8gQFRyYWNlKClcbiAgY29uZmlndXJlQXV0aChhY2Nlc3NHcmFudDogVmFsdWVNb2RlbDxQbGFjZUFjY2Vzc0d1YXJkPiwgcmVkaXJlY3Rpb25zOiBQbGFjZVJvdXRlci5SZWRpcmVjdGlvbnMpIHtcbiAgICAvLyBXZSBuZWVkIGEgc2hpdHR5IG11dGFibGUgbW9kZWwgdW50aWwgc2V0RGVsZWdhdGUgaXMgY2xldmVyIGVub3VnaCB0byB3b3JrIHdpdGggcmVhZG9ubHkgbW9kZWxzLlxuICAgIGNvbnN0IGhhY2t5TXV0YWJsZU1vZGVsID0gbmV3IE11dGFibGVWYWx1ZU1vZGVsPFBsYWNlQWNjZXNzR3VhcmQ+KCk7XG4gICAgY29uc3QgYmluZGluZyA9IG5ldyBCaW5kaW5nKGhhY2t5TXV0YWJsZU1vZGVsLCBhY2Nlc3NHcmFudCwge1xuICAgICAgdG9SaWdodChsZWZ0VmFsdWU6IFBsYWNlQWNjZXNzR3VhcmQpIHtcbiAgICAgICAgcmV0dXJuIGxhbmcuaWxsZWdhbFN0YXRlKFwiaGFja3lNdXRhYmxlTW9kZWwgaXMgcmVhZCBvbmx5XCIpO1xuICAgICAgfSxcbiAgICAgIHRvTGVmdDogKHJpZ2h0VmFsdWU6IFBsYWNlQWNjZXNzR3VhcmQpID0+IHJpZ2h0VmFsdWVcbiAgICB9KTtcbiAgICBiaW5kaW5nLndyaXRlTGVmdCgpO1xuICAgIHRoaXMuX2FjY2Vzc0d1YXJkLnNldERlbGVnYXRlKGhhY2t5TXV0YWJsZU1vZGVsKTtcbiAgICB0aGlzLnJlZGlyZWN0aW9ucyA9IHJlZGlyZWN0aW9ucztcbiAgfVxuXG4gIGdldEF1dGhlbnRpY2F0aW9uRmFpbHVyZVJlZGlyZWN0KGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCk6IFZpc2l0IHtcbiAgICByZXR1cm4gdGhpcy5yZWRpcmVjdGlvbnMub25BdXRoZW50aWNhdGlvbkZhaWx1cmUoYWN0aXZhdGVkUm91dGUsIHN0YXRlKTtcbiAgfVxuXG4gIGdldCBuYXZpZ2F0aW9uU2Vzc2lvbigpIHtcbiAgICByZXR1cm4gdGhpcy5uYXZpZ2F0aW9uU2Vzc2lvbiQudmFsdWU7XG4gIH1cblxuICBnZXQgY3VycmVudFNlc3Npb24oKSB7XG4gICAgcmV0dXJuIHRoaXMubmF2aWdhdGlvblNlc3Npb24kLnZhbHVlO1xuICB9XG5cbiAgaXNOYXZpZ2F0aW5nKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm5hdmlnYXRpb25JblByb2dyZXNzJC52YWx1ZTtcbiAgfVxuXG4gIHdhaXRVbnRpbElkbGUoKTogUHJvbWlzZTx0aGlzPiB7XG4gICAgY29uc3QgeyB3aGVuIH0gPSBEc2wuZGlzcG9zZVdpdGgodGhpcyk7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPHRoaXM+KHJlc29sdmUgPT4ge1xuICAgICAgd2hlbih0aGlzLm5hdmlnYXRpb25JblByb2dyZXNzJCkuYmVjb21lc0ZhbHNleSgoKSA9PiByZXNvbHZlKHRoaXMpLCB7XG4gICAgICAgIGluaXRpYWxWYWx1ZTogXCJldmFsdWF0ZVwiLFxuICAgICAgICBvbmNlOiB0cnVlXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHdhaXRBY3Rpdml0aWVzU3luY2hyb25pc2VkKCk6IFByb21pc2U8dGhpcz4ge1xuICAgIGNvbnN0IHsgd2hlbiB9ID0gRHNsLmRpc3Bvc2VXaXRoKHRoaXMpO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTx0aGlzPihyZXNvbHZlID0+IHtcbiAgICAgIHdoZW4odGhpcy5pbnRlcmFjdGlvblN5bmNJblByb2dyZXNzJCkuYmVjb21lc0ZhbHNleSgoKSA9PiByZXNvbHZlKHRoaXMpLCB7XG4gICAgICAgIGluaXRpYWxWYWx1ZTogXCJldmFsdWF0ZVwiLFxuICAgICAgICBvbmNlOiB0cnVlXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIEBUcmFjZSgpXG4gIG9uUG9wU3RhdGUoZXZlbnQ6IE5hdmlnYXRpb25TdGFydCkge1xuICAgIGFzc2VydC5pc1RydXRoeShldmVudC5uYXZpZ2F0aW9uVHJpZ2dlciA9PT0gXCJwb3BzdGF0ZVwiKTtcbiAgICBpZiAodGhpcy5jdXJyZW50U2Vzc2lvbikge1xuICAgICAgdGhpcy5jdXJyZW50U2Vzc2lvbi5vblBvcFN0YXRlKGV2ZW50KTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgcG9wcGVkSGlzdG9yeVVybCA9IGV2ZW50LnVybDtcbiAgICAgIGNvbnN0IGN1cnJlbnRSb3V0ZXJVcmwgPSB0aGlzLnVybFNlcnZpY2UuZ2V0Q3VycmVudFJvdXRlclVybCgpO1xuICAgICAgY29uc3Qgc2Vzc2lvbiA9IHRoaXMuaW50ZXJhY3Rpb25TZXJ2aWNlLmlzQWN0aXZlKCkgP1xuICAgICAgICBuZXcgUG9wU3RhdGVEdXJpbmdJbnRlcmFjdGlvbk5hdmlnYXRpb24odGhpcy5uYXZpZ2F0aW9uQ29udGV4dCwgY3VycmVudFJvdXRlclVybCwgcG9wcGVkSGlzdG9yeVVybCkgOlxuICAgICAgICBuZXcgUG9wU3RhdGVOYXZpZ2F0aW9uKHRoaXMubmF2aWdhdGlvbkNvbnRleHQsIGN1cnJlbnRSb3V0ZXJVcmwsIHBvcHBlZEhpc3RvcnlVcmwpO1xuICAgICAgdGhpcy50cmFuc2l0aW9uVG8oc2Vzc2lvbik7XG4gICAgfVxuICB9XG5cbiAgLy8gQFRyYWNlKClcbiAgb25Sb3V0ZXJTdGFydGVkKGV2ZW50OiBOYXZpZ2F0aW9uU3RhcnQpIHtcbiAgICBhc3NlcnQuaXNGYWxzZXkoZXZlbnQubmF2aWdhdGlvblRyaWdnZXIgPT09IFwicG9wc3RhdGVcIik7XG4gICAgY29uc3QgaW5JbnRlcmFjdGlvbiA9IHRoaXMuaW50ZXJhY3Rpb25TZXJ2aWNlLmlzQWN0aXZlKCk7XG4gICAgaWYgKHRoaXMuY3VycmVudFNlc3Npb24pIHtcbiAgICAgIHRoaXMuY3VycmVudFNlc3Npb24ub25Sb3V0ZXJTdGFydGVkKGV2ZW50KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy50cmFuc2l0aW9uVG8odGhpcy5jcmVhdGVOYXZpZ2F0aW9uU2Vzc2lvbih0aGlzLnVybFNlcnZpY2UuZ2V0Q3VycmVudFJvdXRlclVybCgpKSk7XG4gICAgfVxuICB9XG5cbiAgLy8gQFRyYWNlKClcbiAgb25VcmxDaGFuZ2VkKG5ld1VybDogc3RyaW5nKSB7XG4gICAgLy8gdGhlIGJhY2sgYnV0dG9uIGNhbiB0cmlnZ2VyIGEgdXJsIGNoYW5nZSB3aXRob3V0IGEgbmF2aWdhdGlvbiBzZXNzaW9uIGluIHByb2dyZXNzIHNvIHdlXG4gICAgLy8gY29uc29sZS5sb2coYC0tLT4gVXJsIENoYW5nZWQgJHtuZXdVcmx9YCk7XG4gICAgaWYgKHRoaXMuY3VycmVudFNlc3Npb24pIHtcbiAgICAgIHRoaXMuY3VycmVudFNlc3Npb24ub25VcmxDaGFuZ2UobmV3VXJsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5sb2coXCJGWUk6IHVybCBjaGFuZ2VkIHdpdGhvdXQgYSBuYXZpZ2F0aW9uIHNlc3Npb24gaW4gcHJvZ3Jlc3NcIik7XG4gICAgfVxuICAgIC8vIGNvbnNvbGUubG9nKGA8LS0tIFVybCBDaGFuZ2VkYCk7XG4gIH1cblxuICAvLyBAVHJhY2UoKVxuICBvblJvdXRlckNhbmNlbGxlZChldmVudDogTmF2aWdhdGlvbkNhbmNlbCkge1xuICAgIHRoaXMuY3VycmVudFNlc3Npb24ub25Sb3V0ZXJDYW5jZWxsZWQoZXZlbnQpO1xuICB9XG5cbiAgLy8gQFRyYWNlKClcbiAgb25Sb3V0ZXJFcnJvcihldmVudDogTmF2aWdhdGlvbkVycm9yKSB7XG4gICAgdGhpcy5jdXJyZW50U2Vzc2lvbi5vblJvdXRlckVycm9yKGV2ZW50KTtcbiAgfVxuXG4gIC8vIEBUcmFjZSgpXG4gIG9uUm91dGVyRW5kKGV2ZW50OiBOYXZpZ2F0aW9uRW5kKSB7XG4gICAgdGhpcy5jdXJyZW50U2Vzc2lvbi5vblJvdXRlckVuZChldmVudCk7XG4gIH1cblxuICBuYXZpZ2F0ZSh2aXNpdDogVmlzaXQgfCBWaXNpdFtdLCBvcHRpb25zPzogeyByZWxhdGl2ZVRvOiBBY3RpdmF0ZWRSb3V0ZSB9KSB7XG4gICAgY29uc3QgY29tbWFuZHMgPSBhc0FycmF5KHZpc2l0KS5yZWR1Y2UoKHJlc3VsdCwgdikgPT4ge1xuICAgICAgY29uc3QgcGF0aCA9IHYucGxhY2VEZWZpbml0aW9uLnBhdGg7XG4gICAgICByZXR1cm4gaXNFbXB0eShwYXRoKSA/XG4gICAgICAgIFsuLi5yZXN1bHQsIHBhdGhdIDogLy8gQW5ndWxhciBkb2Vzbid0IHN1cHBvcnQgcm91dGUgcGFyYW1zIG9uIGVtcHR5IHBhdGggc2VnbWVudHNcbiAgICAgICAgWy4uLnJlc3VsdCwgcGF0aCwgLi4udGhpcy5jcmVhdGVSb3V0ZVBhcmFtZXRlcnModildO1xuICAgIH0sIFtdKTtcbiAgICByZXR1cm4gdGhpcy5kb05hdmlnYXRpb24odmlzaXQsIGFzeW5jIHJvdXRlciA9PiB7XG4gICAgICBhd2FpdCB0aGlzLmFuZ3VsYXJSb3V0ZXIubmF2aWdhdGUoY29tbWFuZHMsIHtcbiAgICAgICAgcmVsYXRpdmVUbzogb3B0aW9ucyA/IG9wdGlvbnMucmVsYXRpdmVUbyA6IG51bGxcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLy8gQFRyYWNlKClcbiAgYXN5bmMgZG9OYXZpZ2F0aW9uKHZpc2l0OiBWaXNpdCB8IFZpc2l0W10sIHJ1bk5hdmlnYXRpb25Db21tYW5kczogKHJvdXRlcjogUm91dGVyKSA9PiBhbnkpIHtcbiAgICBpZiAodGhpcy5uYXZpZ2F0aW9uSW5Qcm9ncmVzcyQudmFsdWUpIHtcbiAgICAgIExvZ2dlci5nZXQoKS5lcnJvcihcIk5hdmlnYXRpb24gYWxyZWFkeSBpbiBwcm9ncmVzc1wiLCB7XG4gICAgICAgIHZpc2l0OiB2aXNpdCxcbiAgICAgICAgc2Vzc2lvbjogdGhpcy5uYXZpZ2F0aW9uU2Vzc2lvblxuICAgICAgfSk7XG4gICAgICBsYW5nLmlsbGVnYWxTdGF0ZShcIk5hdmlnYXRpb24gYWxyZWFkeSBpbiBwcm9ncmVzc1wiKTtcbiAgICB9XG4gICAgY29uc3QgbmF2aWdhdGlvbiA9IHRoaXMuY3JlYXRlTmF2aWdhdGlvblNlc3Npb24odGhpcy51cmxTZXJ2aWNlLmdldEN1cnJlbnRSb3V0ZXJVcmwoKSk7XG4gICAgYXNBcnJheSh2aXNpdCkuZm9yRWFjaCh2ID0+IG5hdmlnYXRpb24uc3RvcmVWaXNpdCh2KSk7XG4gICAgdGhpcy50cmFuc2l0aW9uVG8obmF2aWdhdGlvbik7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHJ1bk5hdmlnYXRpb25Db21tYW5kcyh0aGlzLmFuZ3VsYXJSb3V0ZXIpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICAvLyBDaGVjayBpZiB0aGUgcm91dGVyIGhhcyBmaW5pc2hlZCAoaW4gdGhlIGNhc2Ugd2hlcmUgbm8gcm91dGVyIGNoYW5nZSByZXF1aXJlZCkgYW5kIHdlJ3JlIHN0aWxsIGluICBhXG4gICAgICAvLyB0cmFuc2llbnQgc3RhdGUgYW5kIGZpbmlzaCBvZiB0aGUgdHJhbnNpdGlvbi5cbiAgICAgIGlmICghdGhpcy5hbmd1bGFyUm91dGVyLmdldEN1cnJlbnROYXZpZ2F0aW9uKCkgJiYgdGhpcy5jdXJyZW50U2Vzc2lvbikge1xuICAgICAgICB0aGlzLmN1cnJlbnRTZXNzaW9uLm9uUm91dGVyRW5kKG5ldyBOYXZpZ2F0aW9uRW5kKC0xLCBcIlwiLCBcIlwiKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmF2aWdhdGVCeVVybCh1cmxTbmFwc2hvdDogVXJsU25hcHNob3QsIG5hdmlnYXRpb25FeHRyYXM/OiBOYXZpZ2F0aW9uRXh0cmFzKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc29sZS5sb2coYCMjIyBuYXZpZ2F0aW9uQnlVcmwgLT4gJHt1cmxTbmFwc2hvdC51cmxUcmVlLnRvU3RyaW5nKCl9YCk7XG4gICAgcmV0dXJuIHRoaXMuYW5ndWxhclJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHVybFNuYXBzaG90LnVybFRyZWUsIG5hdmlnYXRpb25FeHRyYXMpO1xuICB9XG5cbiAgZ2V0IGFjdGl2ZVZpc2l0cyQoKTogTGlzdE1vZGVsPFZpc2l0PiB7XG4gICAgcmV0dXJuIHRoaXMuX2FjdGl2ZVZpc2l0cyQucmVhZG9ubHk7XG4gIH1cblxuICAvLyBAVHJhY2UoKVxuICBhc3luYyBwdXNoVmlzaXRDaGFuZ2VzVG9Sb3V0ZShwcmV2aW91czogVmlzaXQsIG5leHQ6IFZpc2l0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5wbGFjZUhpc3RvcnkudXBkYXRlVmlzaXQobmV4dCk7XG5cbiAgICAvLyBGSVhNRTogbm8gcm91dGUgaWQgLT4gcm91dGUgaWQgZHVwbGljYXRlcyByb3V0ZSBwYXJhbWV0ZXJzXG4gICAgaWYgKG5leHQuaGFzUm91dGluZ0NoYW5nZWRGcm9tKHByZXZpb3VzKSkge1xuICAgICAgcmV0dXJuIHRoaXMuZG9OYXZpZ2F0aW9uKG5leHQsIHJvdXRlciA9PiB7XG4gICAgICAgIGNvbnN0IHVybFNuYXBzaG90ID0gdGhpcy51cmxTZXJ2aWNlLnBhcnNlVXJsKHRoaXMuYW5ndWxhclJvdXRlci5yb3V0ZXJTdGF0ZS5zbmFwc2hvdC51cmwpLnVwZGF0ZVZpc2l0U2VnbWVudHMobmV4dCk7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKCcjIyMgUHVzaCBDaGFuZ2VzIHRvIHJvdXRlIFJlZGlyZWN0JywgeyBjb21tYW5kczogdXJsU25hcHNob3QudXJsIH0pO1xuICAgICAgICByZXR1cm4gdGhpcy5uYXZpZ2F0ZUJ5VXJsKHVybFNuYXBzaG90KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG5cbiAgcHJpdmF0ZSBjcmVhdGVOYXZpZ2F0aW9uU2Vzc2lvbihjdXJyZW50Um91dGVyVXJsOiBzdHJpbmcpOiBOYXZpZ2F0aW9uU2Vzc2lvbiB7XG4gICAgY29uc3QgaW5JbnRlcmFjdGlvbiA9IHRoaXMuaW50ZXJhY3Rpb25TZXJ2aWNlLmlzQWN0aXZlKCk7XG4gICAgcmV0dXJuIGluSW50ZXJhY3Rpb24gP1xuICAgICAgbmV3IE5hdmlnYXRpbmdEdXJpbmdJbnRlcmFjdGlvbih0aGlzLm5hdmlnYXRpb25Db250ZXh0LCBjdXJyZW50Um91dGVyVXJsKSA6XG4gICAgICBuZXcgTmF2aWdhdGluZyh0aGlzLm5hdmlnYXRpb25Db250ZXh0LCBjdXJyZW50Um91dGVyVXJsKTtcbiAgfVxuXG4gIC8vIEBUcmFjZSgpXG4gIHByb3RlY3RlZCB0cmFuc2l0aW9uVG8obmV4dDogTmF2aWdhdGlvblNlc3Npb24pIHtcbiAgICBjb25zdCBwcmV2aW91cyA9IHRoaXMubmF2aWdhdGlvblNlc3Npb24kLnZhbHVlO1xuICAgIGlmICghcHJldmlvdXMpIHtcbiAgICAgIHRoaXMucGxhY2VIaXN0b3J5Lm5vdGlmeU5hdmlnYXRpb25TdGFydGVkKCk7XG4gICAgfVxuICAgIGFzc2VydC5pc1RydXRoeShuZXh0ICE9PSBwcmV2aW91cyk7XG4gICAgLy8gTG9nZ2VyLmdldCh0aGlzKS5pbmZvKGAjIyMgUm91dGVyIFN0YXRlIFRyYW5zaXRpb246ICR7cHJldmlvdXMgPyBwcmV2aW91cy50b1N0cmluZygpIDogJ251bGwnfSAtPiAke25leHQudG9TdHJpbmcoKX1gKTtcbiAgICB0aGlzLm5hdmlnYXRpb25TZXNzaW9uJC52YWx1ZSA9IG5leHQ7XG4gICAgaWYgKCEhcHJldmlvdXMpIHtcbiAgICAgIHByZXZpb3VzLmRpc3Bvc2UoKTtcbiAgICB9XG4gICAgbmV4dC5ub3RpZnlBY3RpdmUoKTtcbiAgfVxuXG4gIEBUcmFjZSgpXG4gIHByaXZhdGUgcm91dGluZ1Nlc3Npb25GaW5pc2hlZCh2aXNpdHM6IFZpc2l0W10pIHtcbiAgICBpZiAodmlzaXRzICYmIHZpc2l0cy5sZW5ndGggPiAwKSB7XG4gICAgICBhc3NlcnQuaXNUcnV0aHkodGhpcy5uYXZpZ2F0aW9uSW5Qcm9ncmVzcyQudmFsdWUpO1xuICAgICAgdGhpcy5wbGFjZUhpc3Rvcnkubm90aWZ5TmF2aWdhdGlvbkZpbmlzaGVkKHZpc2l0cyk7XG4gICAgICAvLyBXZSB1cGRhdGUgdGhlIGFjdGl2ZSB2aXNpdHMgYmVmb3JlIHdlIGZpbmlzaCB0aGUgc2Vzc2lvbiBzbyB0aGVcbiAgICAgIC8vIHBsYWNlIG91dGxldHMgY2FuIGlnbm9yZSB0aGUgaW5jb21pbmcgY2hhbmdlcyB1bnRpbCB0aGluZ3MgYXJlXG4gICAgICAvLyBzZXR0bGVkLiBUT0RPOiBjYW4gd2UgcmVtb3ZlZCB0aGUgZXZlbnQnbmVzcyBoZXJlIGFuZCBqdXN0IGRvIGEgcHVzaD9cbiAgICAgIHRoaXMuX2FjdGl2ZVZpc2l0cyQudmFsdWUgPSB2aXNpdHM7XG4gICAgfVxuICAgIGNvbnN0IHNlc3Npb24gPSB0aGlzLmN1cnJlbnRTZXNzaW9uO1xuICAgIHNlc3Npb24uZGlzcG9zZSgpO1xuICAgIHRoaXMubmF2aWdhdGlvblNlc3Npb24kLnZhbHVlID0gbnVsbDtcbiAgICBjb25zb2xlLmxvZyhgIyMjIFJvdXRlciBTZXNzaW9uIEZpbmlzaGVkICh3YXMgJHtzZXNzaW9uLnRvU3RyaW5nKCl9KWApO1xuICAgIHRoaXMuc2Vzc2lvbkZpbmlzaGVkSm9icy5mb3JFYWNoKGpvYiA9PiBqb2IoKSk7XG4gICAgdGhpcy5zZXNzaW9uRmluaXNoZWRKb2JzID0gW107XG4gIH1cblxuICBwcml2YXRlIHJ1bkFmdGVyUm91dGluZ1Nlc3Npb25GaW5pc2hlcyhmdW5jOiAoKSA9PiB2b2lkKSB7XG4gICAgYXNzZXJ0LmlzVHJ1dGh5KHRoaXMubmF2aWdhdGlvbkluUHJvZ3Jlc3MkKTtcbiAgICB0aGlzLnNlc3Npb25GaW5pc2hlZEpvYnMucHVzaChmdW5jKTtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIFN5bmMncyB0aGUgY3VycmVudCBpbnRlcmFjdGlvbiBzdGF0ZSB3aXRoIHRoZSBVUkwuICBXZSBuZWVkIHRvIHB1c2ggc29tZXRoaW5nIGluIHRoZSBVUkwgaW4gb3JkZXJcbiAgICogdG8gYmUgYWJsZSB0byBjYXB0dXJlIHRoZSBiYWNrIGJ1dHRvbiBvbiB0aGUgZmlyc3QgcGFnZS4gIElmIHdlIGRvbid0IHRoZW4gdGhlIGJhY2sgY2xpY2sgd2lsbCBleGl0XG4gICAqIHRoZSBhcHAgZGlyZWN0bHkgYW5kIHdlIGRvbid0IGdldCB0byBhc2suXG4gICAqL1xuICBAVHJhY2UoKVxuICBzeW5jSW50ZXJhY3Rpb25Db250ZXh0SWRzV2l0aFJvdXRlcihvblN5bmNDb21wbGV0ZTogKCkgPT4gdm9pZCA9ICgpPT57fSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLm5hdmlnYXRpb25TZXNzaW9uKSB7XG4gICAgICAvLyBjb25zb2xlLmxvZyhgTmF2aWdhdGlvbiBhY3RpdmUgLT4gJHt0aGlzLm5hdmlnYXRpb25TZXNzaW9uLnRvU3RyaW5nKCl9LCBzeW5jIGRlbGF5ZWQgdW50aWwgZmluaXNoZWQuYCk7XG4gICAgICBjb25zdCBzZXNzaW9uID0gdGhpcy5uYXZpZ2F0aW9uU2Vzc2lvbjtcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIHRoaXMucnVuQWZ0ZXJSb3V0aW5nU2Vzc2lvbkZpbmlzaGVzKCgpID0+IHtcbiAgICAgICAgICB0aGlzLnJ1bkFmdGVyUm91dGluZ1Nlc3Npb25GaW5pc2hlcygoKSA9PiB7XG4gICAgICAgICAgICBvblN5bmNDb21wbGV0ZSgpO1xuICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGNvbnN0IHN5bmNTZXNzaW9uID0gbmV3IFN5bmNocm9uaXNlSW50ZXJhY3Rpb25Db250ZXh0SWRzV2l0aFJvdXRlKHRoaXMubmF2aWdhdGlvbkNvbnRleHQsIHRoaXMudXJsU2VydmljZS5nZXRDdXJyZW50Um91dGVyVXJsKCksIGZhbHNlKTtcbiAgICAgICAgICB0aGlzLnRyYW5zaXRpb25UbyhzeW5jU2Vzc2lvbik7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPigoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhgTm8gbmF2aWdhdGlvbiBpbiBwcm9ncmVzcywgc3RhcnRpbmcgc3luY2hyb25pc2F0aW9uIGpvYmApO1xuICAgICAgICB0aGlzLnJ1bkFmdGVyUm91dGluZ1Nlc3Npb25GaW5pc2hlcygoKSA9PiB7XG4gICAgICAgICAgb25TeW5jQ29tcGxldGUoKTtcbiAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBzZXNzaW9uID0gbmV3IFN5bmNocm9uaXNlSW50ZXJhY3Rpb25Db250ZXh0SWRzV2l0aFJvdXRlKHRoaXMubmF2aWdhdGlvbkNvbnRleHQsIHRoaXMudXJsU2VydmljZS5nZXRDdXJyZW50Um91dGVyVXJsKCksIGZhbHNlKTtcbiAgICAgICAgdGhpcy50cmFuc2l0aW9uVG8oc2Vzc2lvbik7XG4gICAgICB9KSk7XG5cbiAgICB9XG4gIH1cblxuXG4gIHByaXZhdGUgY3JlYXRlUm91dGVQYXJhbWV0ZXJzKHZpc2l0OiBWaXNpdCkge1xuICAgIGNvbnN0IGRlZiA9IHZpc2l0LnBsYWNlRGVmaW5pdGlvbjtcbiAgICByZXR1cm4gdmlzaXQuaGFzUm91dGVJZCgpID9cbiAgICAgIFtkZWYuZ2V0Rm9ybWF0dGVkUm91dGVJZCh2aXNpdCksIGRlZi5nZXRGb3JtYXR0ZWRSb3V0ZVBhcmFtZXRlcnModmlzaXQpXSA6XG4gICAgICBbZGVmLmdldEZvcm1hdHRlZFJvdXRlUGFyYW1ldGVycyh2aXNpdCldO1xuICB9XG5cbn1cblxuZXhwb3J0IG5hbWVzcGFjZSBQbGFjZVJvdXRlciB7XG5cbiAgZXhwb3J0IGludGVyZmFjZSBSZWRpcmVjdGlvbnMge1xuICAgIG9uQXV0aGVudGljYXRpb25GYWlsdXJlKGFjdGl2YXRlZFJvdXRlPzogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgc3RhdGU/OiBSb3V0ZXJTdGF0ZVNuYXBzaG90KTogVmlzaXQ7XG4gIH1cblxuICBleHBvcnQgY2xhc3MgU3RhdGUge1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgYWN0aXZlVmlzaXRzOiBWaXNpdFtdKSB7XG4gICAgfVxuXG4gICAgaXNQbGFjZUFjdGl2ZShwbGFjZURlZmluaXRpb246IFBsYWNlRGVmaW5pdGlvbik6IGJvb2xlYW4ge1xuICAgICAgcmV0dXJuICEhdGhpcy5nZXRWaXNpdEZvcihwbGFjZURlZmluaXRpb24pO1xuICAgIH1cblxuICAgIGdldFZpc2l0Rm9yKHBsYWNlRGVmaW5pdGlvbjogUGxhY2VEZWZpbml0aW9uKTogVmlzaXQge1xuICAgICAgcmV0dXJuIHRoaXMuYWN0aXZlVmlzaXRzLmZpbmQodiA9PiB2LnBsYWNlRGVmaW5pdGlvbiA9PT0gcGxhY2VEZWZpbml0aW9uKTtcbiAgICB9XG4gIH1cblxufVxuIl19
|