@tuki-io/tuki-widgets 0.0.219-dev.26 → 0.0.219-dev.28
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/meetings/src/components/live-meetings/live-meeting/live-meeting.component.mjs +107 -0
- package/esm2020/meetings/src/components/live-meetings/live-meetings.component.mjs +11 -5
- package/esm2020/meetings/src/components/meeting-spaces/meeting-space/meeting-space.component.mjs +96 -0
- package/esm2020/meetings/src/components/meeting-spaces/meeting-spaces.component.mjs +9 -3
- package/esm2020/meetings/src/meetings.component.mjs +36 -6
- package/esm2020/meetings/src/meetings.module.mjs +8 -2
- package/esm2020/meetings/src/services/live-meetings.service.mjs +94 -1
- package/esm2020/meetings/src/services/meeting-spaces.service.mjs +171 -2
- package/esm2020/meetings/src/types/live-meeting.mjs +1 -1
- package/esm2020/meetings/src/types/meeting-space.mjs +1 -1
- package/fesm2015/tuki-io-tuki-widgets-meetings.mjs +508 -10
- package/fesm2015/tuki-io-tuki-widgets-meetings.mjs.map +1 -1
- package/fesm2020/tuki-io-tuki-widgets-meetings.mjs +505 -10
- package/fesm2020/tuki-io-tuki-widgets-meetings.mjs.map +1 -1
- package/meetings/src/components/live-meetings/live-meeting/live-meeting.component.d.ts +34 -0
- package/meetings/src/components/live-meetings/live-meetings.component.d.ts +4 -2
- package/meetings/src/components/meeting-spaces/meeting-space/meeting-space.component.d.ts +33 -0
- package/meetings/src/components/meeting-spaces/meeting-spaces.component.d.ts +3 -1
- package/meetings/src/meetings.component.d.ts +13 -0
- package/meetings/src/meetings.module.d.ts +8 -6
- package/meetings/src/services/live-meetings.service.d.ts +2 -1
- package/meetings/src/services/meeting-spaces.service.d.ts +9 -1
- package/meetings/src/types/live-meeting.d.ts +38 -0
- package/meetings/src/types/meeting-space.d.ts +40 -0
- package/package.json +1 -1
package/esm2020/meetings/src/components/meeting-spaces/meeting-space/meeting-space.component.mjs
ADDED
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import { createDefaultMeetingSpaceDetails } from '../../../services/meeting-spaces.service';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "../../../services/meeting-spaces.service";
|
|
5
|
+
import * as i2 from "@angular/common";
|
|
6
|
+
import * as i3 from "@angular/forms";
|
|
7
|
+
import * as i4 from "@angular/material/icon";
|
|
8
|
+
export class MeetingSpaceComponent {
|
|
9
|
+
constructor(meetingSpacesService) {
|
|
10
|
+
this.meetingSpacesService = meetingSpacesService;
|
|
11
|
+
this.mode = 'create';
|
|
12
|
+
this.meetingSpaceId = null;
|
|
13
|
+
this.back = new EventEmitter();
|
|
14
|
+
this.saved = new EventEmitter();
|
|
15
|
+
this.details = createDefaultMeetingSpaceDetails();
|
|
16
|
+
this.clusters = ['us-east-1', 'eu-west-1', 'apac-south-1'];
|
|
17
|
+
this.videoLayouts = [
|
|
18
|
+
{ value: 'all-equal', label: 'All equal' },
|
|
19
|
+
{ value: 'speaker-only', label: 'Speaker only' },
|
|
20
|
+
{ value: 'telepresence', label: 'Telepresence' },
|
|
21
|
+
{ value: 'stacked', label: 'Stacked' },
|
|
22
|
+
{ value: 'one-plus-five', label: 'One plus five' },
|
|
23
|
+
{ value: 'one-plus-seven', label: 'One plus seven' },
|
|
24
|
+
{ value: 'one-plus-nine', label: 'One plus nine' },
|
|
25
|
+
{ value: 'more', label: 'More' },
|
|
26
|
+
];
|
|
27
|
+
this.videoQualities = [
|
|
28
|
+
{ value: '480p30', label: '480p 30fps' },
|
|
29
|
+
{ value: '720p30', label: '720p 30fps' },
|
|
30
|
+
{ value: '1080p30', label: '1080p 30fps' },
|
|
31
|
+
];
|
|
32
|
+
this.presentationQualities = [
|
|
33
|
+
{ value: '720p5', label: '720p 5fps' },
|
|
34
|
+
{ value: '1080p30', label: '1080p 30fps' },
|
|
35
|
+
];
|
|
36
|
+
}
|
|
37
|
+
ngOnInit() {
|
|
38
|
+
if (this.isEdit && this.meetingSpaceId) {
|
|
39
|
+
this.meetingSpacesService.getOne(this.meetingSpaceId).subscribe(details => {
|
|
40
|
+
this.details = details;
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
get isEdit() {
|
|
45
|
+
return this.mode === 'edit';
|
|
46
|
+
}
|
|
47
|
+
get browserJoinLink() {
|
|
48
|
+
return `https://${this.details.cluster}-cms/en-us/meeting/${this.details.meetingId}`;
|
|
49
|
+
}
|
|
50
|
+
addAccessRole() {
|
|
51
|
+
const index = this.details.accessRoles.length + 1;
|
|
52
|
+
this.details.accessRoles = [
|
|
53
|
+
...this.details.accessRoles,
|
|
54
|
+
{
|
|
55
|
+
id: `role-${index}`,
|
|
56
|
+
name: `Role ${index}`,
|
|
57
|
+
visibility: 'members-only',
|
|
58
|
+
passcode: '',
|
|
59
|
+
activatesMeetingOnJoin: false,
|
|
60
|
+
allowUnauthenticatedJoin: false,
|
|
61
|
+
participantsWaitInLobby: false,
|
|
62
|
+
grantMeetingHostControls: false,
|
|
63
|
+
},
|
|
64
|
+
];
|
|
65
|
+
}
|
|
66
|
+
removeAccessRole(role) {
|
|
67
|
+
this.details.accessRoles = this.details.accessRoles.filter(r => r !== role);
|
|
68
|
+
}
|
|
69
|
+
trackByRoleId(_index, role) {
|
|
70
|
+
return role.id;
|
|
71
|
+
}
|
|
72
|
+
onCancel() {
|
|
73
|
+
this.back.emit();
|
|
74
|
+
}
|
|
75
|
+
onSubmit() {
|
|
76
|
+
const request = this.isEdit && this.meetingSpaceId
|
|
77
|
+
? this.meetingSpacesService.put(this.meetingSpaceId, this.details)
|
|
78
|
+
: this.meetingSpacesService.save(this.details);
|
|
79
|
+
request.subscribe(saved => this.saved.emit(saved));
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
MeetingSpaceComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MeetingSpaceComponent, deps: [{ token: i1.MeetingSpacesService }], target: i0.ɵɵFactoryTarget.Component });
|
|
83
|
+
MeetingSpaceComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: MeetingSpaceComponent, selector: "tk-meeting-space", inputs: { mode: "mode", meetingSpaceId: "meetingSpaceId" }, outputs: { back: "back", saved: "saved" }, ngImport: i0, template: "<form class=\"tk-meeting-space\" (ngSubmit)=\"onSubmit()\">\n <div class=\"tk-meeting-space__breadcrumb\">\n <a href=\"javascript:void(0)\" class=\"tk-meeting-space__breadcrumb-link\" (click)=\"onCancel()\">Meetings</a>\n <span class=\"tk-meeting-space__breadcrumb-separator\">›</span>\n <span class=\"tk-meeting-space__breadcrumb-current\">{{ isEdit ? details.name : 'New meeting space' }}</span>\n </div>\n\n <div class=\"tk-meeting-space__header\">\n <div class=\"tk-meeting-space__icon\">\n <mat-icon>videocam</mat-icon>\n </div>\n <div class=\"tk-meeting-space__heading\">\n <h1 class=\"tk-meeting-space__title\">{{ isEdit ? details.name : 'New meeting space' }}</h1>\n <p class=\"tk-meeting-space__subtitle\" *ngIf=\"!isEdit\">Configure a reusable meeting environment with join details and access roles.</p>\n <p class=\"tk-meeting-space__status\" *ngIf=\"isEdit\">\n <span class=\"tk-meeting-space__status-dot\" [class.tk-meeting-space__status-dot--disabled]=\"!details.enabled\"></span>\n {{ details.enabled ? 'Enabled' : 'Disabled' }} · {{ details.meetingUri }} · {{ details.meetingId }}\n </p>\n </div>\n </div>\n\n <section class=\"tk-meeting-space__section\">\n <div class=\"tk-meeting-space__section-header\">\n <h2 class=\"tk-meeting-space__section-title\">General information</h2>\n <p class=\"tk-meeting-space__section-subtitle\">Basic details, ownership and where this space runs.</p>\n </div>\n\n <div class=\"tk-meeting-space__grid\">\n <div class=\"tk-meeting-space__field\">\n <label class=\"tk-meeting-space__label\">Space name *</label>\n <input class=\"tk-meeting-space__input\" name=\"name\" placeholder=\"e.g. Executive Boardroom\" [(ngModel)]=\"details.name\" required>\n </div>\n <div class=\"tk-meeting-space__field\">\n <label class=\"tk-meeting-space__label\">Owner *</label>\n <input class=\"tk-meeting-space__input\" name=\"owner\" placeholder=\"owner@tuki.io\" [(ngModel)]=\"details.owner\" required>\n </div>\n <div class=\"tk-meeting-space__field\">\n <label class=\"tk-meeting-space__label\">Description</label>\n <input class=\"tk-meeting-space__input\" name=\"description\" placeholder=\"Weekly executive strategy sync\" [(ngModel)]=\"details.description\">\n <span class=\"tk-meeting-space__hint\">Shown in invitations and the space directory.</span>\n </div>\n <div class=\"tk-meeting-space__field\">\n <label class=\"tk-meeting-space__label\">Cluster</label>\n <select class=\"tk-meeting-space__select\" name=\"cluster\" [(ngModel)]=\"details.cluster\">\n <option *ngFor=\"let cluster of clusters\" [value]=\"cluster\">{{ cluster }}</option>\n </select>\n </div>\n <div class=\"tk-meeting-space__field\">\n <label class=\"tk-meeting-space__label\">Space tag</label>\n <input class=\"tk-meeting-space__input\" name=\"tag\" placeholder=\"e.g. Leadership\" [(ngModel)]=\"details.tag\">\n </div>\n <div class=\"tk-meeting-space__field\">\n <label class=\"tk-meeting-space__label\">Meeting ID *</label>\n <input class=\"tk-meeting-space__input\" name=\"meetingId\" placeholder=\"e.g. 4427100\" [(ngModel)]=\"details.meetingId\" required>\n </div>\n <div class=\"tk-meeting-space__field\">\n <label class=\"tk-meeting-space__label\">Meeting URI *</label>\n <input class=\"tk-meeting-space__input\" name=\"meetingUri\" placeholder=\"space@tuki.io\" [(ngModel)]=\"details.meetingUri\" required>\n </div>\n <div class=\"tk-meeting-space__field\">\n <label class=\"tk-meeting-space__label\">Secondary URI</label>\n <input class=\"tk-meeting-space__input\" name=\"secondaryUri\" placeholder=\"space.alt@tuki.io\" [(ngModel)]=\"details.secondaryUri\">\n </div>\n <div class=\"tk-meeting-space__field\">\n <label class=\"tk-meeting-space__label\">Meeting password</label>\n <input class=\"tk-meeting-space__input\" name=\"password\" placeholder=\"Optional\" [(ngModel)]=\"details.password\">\n </div>\n </div>\n\n <div class=\"tk-meeting-space__status-row\">\n <div>\n <p class=\"tk-meeting-space__status-row-label\">Space status</p>\n <p class=\"tk-meeting-space__hint\">Disabled spaces cannot activate meetings but keep their configuration.</p>\n </div>\n <button\n type=\"button\"\n class=\"tk-meeting-space__toggle\"\n [class.tk-meeting-space__toggle--on]=\"details.enabled\"\n (click)=\"details.enabled = !details.enabled\">\n <span class=\"tk-meeting-space__toggle-thumb\"></span>\n </button>\n <span class=\"tk-meeting-space__toggle-label\">{{ details.enabled ? 'Enabled' : 'Disabled' }}</span>\n </div>\n </section>\n\n <section class=\"tk-meeting-space__section\" *ngIf=\"isEdit\">\n <div class=\"tk-meeting-space__section-header\">\n <h2 class=\"tk-meeting-space__section-title\">Join information</h2>\n <p class=\"tk-meeting-space__section-subtitle\">Everything participants need to reach this space.</p>\n </div>\n\n <div class=\"tk-meeting-space__grid\">\n <div class=\"tk-meeting-space__field\">\n <label class=\"tk-meeting-space__label\">Meeting ID</label>\n <input class=\"tk-meeting-space__input\" [value]=\"details.meetingId\" disabled>\n </div>\n <div class=\"tk-meeting-space__field\">\n <label class=\"tk-meeting-space__label\">Browser join link</label>\n <input class=\"tk-meeting-space__input\" [value]=\"browserJoinLink\" disabled>\n </div>\n </div>\n </section>\n\n <section class=\"tk-meeting-space__section\">\n <div class=\"tk-meeting-space__section-header\">\n <div class=\"tk-meeting-space__section-header-text\">\n <h2 class=\"tk-meeting-space__section-title\">Access roles and security</h2>\n <p class=\"tk-meeting-space__section-subtitle\">Different ways participants can join, with their own passcode and permissions.</p>\n </div>\n <div class=\"tk-meeting-space__section-header-actions\">\n <button\n type=\"button\"\n class=\"tk-meeting-space__toggle\"\n [class.tk-meeting-space__toggle--on]=\"details.accessRolesEnabled\"\n (click)=\"details.accessRolesEnabled = !details.accessRolesEnabled\">\n <span class=\"tk-meeting-space__toggle-thumb\"></span>\n </button>\n <span class=\"tk-meeting-space__toggle-label\">{{ details.accessRolesEnabled ? 'Enabled' : 'Disabled' }}</span>\n </div>\n </div>\n\n <ng-container *ngIf=\"details.accessRolesEnabled\">\n <div class=\"tk-meeting-space__roles-toolbar\">\n <button type=\"button\" class=\"tk-meeting-space__add-role\" (click)=\"addAccessRole()\">\n <mat-icon class=\"tk-meeting-space__add-role-icon\">add</mat-icon>\n Add role\n </button>\n </div>\n\n <div class=\"tk-meeting-space__role\" *ngFor=\"let role of details.accessRoles; trackBy: trackByRoleId\">\n <div class=\"tk-meeting-space__role-header\">\n <span class=\"tk-meeting-space__role-name\">{{ role.name }}</span>\n <span class=\"tk-meeting-space__role-primary-badge\" *ngIf=\"role.primary\">Primary</span>\n <button\n type=\"button\"\n class=\"tk-meeting-space__role-remove\"\n *ngIf=\"!role.primary\"\n (click)=\"removeAccessRole(role)\"\n aria-label=\"Remove role\">\n <mat-icon>delete</mat-icon>\n </button>\n </div>\n\n <div class=\"tk-meeting-space__grid\">\n <div class=\"tk-meeting-space__field\">\n <label class=\"tk-meeting-space__label\">Visibility</label>\n <select class=\"tk-meeting-space__select\" [name]=\"'visibility-' + role.id\" [(ngModel)]=\"role.visibility\">\n <option value=\"members-only\">Members only</option>\n <option value=\"public\">Public</option>\n <option value=\"private\">Private</option>\n </select>\n </div>\n <div class=\"tk-meeting-space__field\">\n <label class=\"tk-meeting-space__label\">Passcode</label>\n <input class=\"tk-meeting-space__input\" [name]=\"'passcode-' + role.id\" placeholder=\"\" [(ngModel)]=\"role.passcode\">\n <span class=\"tk-meeting-space__hint\">Numeric, minimum 4 digits (server policy).</span>\n </div>\n </div>\n\n <div class=\"tk-meeting-space__checkboxes\">\n <label class=\"tk-meeting-space__checkbox\">\n <input type=\"checkbox\" [name]=\"'activates-' + role.id\" [(ngModel)]=\"role.activatesMeetingOnJoin\">\n Activates the meeting on join\n </label>\n <label class=\"tk-meeting-space__checkbox\">\n <input type=\"checkbox\" [name]=\"'wait-lobby-' + role.id\" [(ngModel)]=\"role.participantsWaitInLobby\">\n Participants wait in lobby\n </label>\n <label class=\"tk-meeting-space__checkbox\">\n <input type=\"checkbox\" [name]=\"'unauth-' + role.id\" [(ngModel)]=\"role.allowUnauthenticatedJoin\">\n Allow unauthenticated join\n </label>\n <label class=\"tk-meeting-space__checkbox\">\n <input type=\"checkbox\" [name]=\"'host-controls-' + role.id\" [(ngModel)]=\"role.grantMeetingHostControls\">\n Grant meeting host controls\n </label>\n </div>\n </div>\n </ng-container>\n </section>\n\n <section class=\"tk-meeting-space__section\">\n <div class=\"tk-meeting-space__section-header\">\n <h2 class=\"tk-meeting-space__section-title\">Meeting experience</h2>\n <p class=\"tk-meeting-space__section-subtitle\">Defaults applied when a meeting activates in this space.</p>\n </div>\n\n <p class=\"tk-meeting-space__label\">Default video layout</p>\n <div class=\"tk-meeting-space__layouts\">\n <button\n type=\"button\"\n *ngFor=\"let layout of videoLayouts\"\n class=\"tk-meeting-space__layout\"\n [class.tk-meeting-space__layout--selected]=\"details.defaultVideoLayout === layout.value\"\n (click)=\"details.defaultVideoLayout = layout.value\">\n {{ layout.label }}\n </button>\n </div>\n\n <div class=\"tk-meeting-space__grid tk-meeting-space__grid--experience\">\n <div class=\"tk-meeting-space__toggle-field\">\n <label class=\"tk-meeting-space__label\">Participant labels</label>\n <div class=\"tk-meeting-space__toggle-row\">\n <button\n type=\"button\"\n class=\"tk-meeting-space__toggle\"\n [class.tk-meeting-space__toggle--on]=\"details.participantLabels\"\n (click)=\"details.participantLabels = !details.participantLabels\">\n <span class=\"tk-meeting-space__toggle-thumb\"></span>\n </button>\n <span class=\"tk-meeting-space__toggle-label\">{{ details.participantLabels ? 'On' : 'Off' }}</span>\n </div>\n </div>\n\n <div class=\"tk-meeting-space__toggle-field\">\n <label class=\"tk-meeting-space__label\">Allow presentation</label>\n <div class=\"tk-meeting-space__toggle-row\">\n <button\n type=\"button\"\n class=\"tk-meeting-space__toggle\"\n [class.tk-meeting-space__toggle--on]=\"details.allowPresentation\"\n (click)=\"details.allowPresentation = !details.allowPresentation\">\n <span class=\"tk-meeting-space__toggle-thumb\"></span>\n </button>\n <span class=\"tk-meeting-space__toggle-label\">{{ details.allowPresentation ? 'On' : 'Off' }}</span>\n </div>\n </div>\n\n <div class=\"tk-meeting-space__toggle-field\">\n <label class=\"tk-meeting-space__label\">Disconnect others allowed</label>\n <div class=\"tk-meeting-space__toggle-row\">\n <button\n type=\"button\"\n class=\"tk-meeting-space__toggle\"\n [class.tk-meeting-space__toggle--on]=\"details.disconnectOthersAllowed\"\n (click)=\"details.disconnectOthersAllowed = !details.disconnectOthersAllowed\">\n <span class=\"tk-meeting-space__toggle-thumb\"></span>\n </button>\n <span class=\"tk-meeting-space__toggle-label\">{{ details.disconnectOthersAllowed ? 'True' : 'False' }}</span>\n </div>\n </div>\n\n <div class=\"tk-meeting-space__field\">\n <label class=\"tk-meeting-space__label\">Video quality</label>\n <select class=\"tk-meeting-space__select\" name=\"videoQuality\" [(ngModel)]=\"details.videoQuality\">\n <option *ngFor=\"let quality of videoQualities\" [value]=\"quality.value\">{{ quality.label }}</option>\n </select>\n </div>\n\n <div class=\"tk-meeting-space__field\">\n <label class=\"tk-meeting-space__label\">Presentation quality</label>\n <select class=\"tk-meeting-space__select\" name=\"presentationQuality\" [(ngModel)]=\"details.presentationQuality\">\n <option *ngFor=\"let quality of presentationQualities\" [value]=\"quality.value\">{{ quality.label }}</option>\n </select>\n </div>\n </div>\n </section>\n\n <section class=\"tk-meeting-space__section\">\n <div class=\"tk-meeting-space__section-header\">\n <h2 class=\"tk-meeting-space__section-title\">Recording and streaming</h2>\n <p class=\"tk-meeting-space__section-subtitle\">Controls for capturing and broadcasting the meeting.</p>\n </div>\n\n <div class=\"tk-meeting-space__grid tk-meeting-space__grid--recording\">\n <div class=\"tk-meeting-space__toggle-field\">\n <label class=\"tk-meeting-space__label\">Allow recording</label>\n <div class=\"tk-meeting-space__toggle-row\">\n <button\n type=\"button\"\n class=\"tk-meeting-space__toggle\"\n [class.tk-meeting-space__toggle--on]=\"details.allowRecording\"\n (click)=\"details.allowRecording = !details.allowRecording\">\n <span class=\"tk-meeting-space__toggle-thumb\"></span>\n </button>\n <span class=\"tk-meeting-space__toggle-label\">{{ details.allowRecording ? 'True' : 'False' }}</span>\n </div>\n </div>\n\n <div class=\"tk-meeting-space__toggle-field\">\n <label class=\"tk-meeting-space__label\">Allow streaming</label>\n <div class=\"tk-meeting-space__toggle-row\">\n <button\n type=\"button\"\n class=\"tk-meeting-space__toggle\"\n [class.tk-meeting-space__toggle--on]=\"details.allowStreaming\"\n (click)=\"details.allowStreaming = !details.allowStreaming\">\n <span class=\"tk-meeting-space__toggle-thumb\"></span>\n </button>\n <span class=\"tk-meeting-space__toggle-label\">{{ details.allowStreaming ? 'True' : 'False' }}</span>\n </div>\n </div>\n\n <div class=\"tk-meeting-space__field\">\n <label class=\"tk-meeting-space__label\">SIP recorder URI</label>\n <input class=\"tk-meeting-space__input\" name=\"sipRecorderUri\" placeholder=\"sip:recorder@tuki.io\" [(ngModel)]=\"details.sipRecorderUri\">\n </div>\n\n <div class=\"tk-meeting-space__field\">\n <label class=\"tk-meeting-space__label\">SIP streamer URI</label>\n <input class=\"tk-meeting-space__input\" name=\"sipStreamerUri\" placeholder=\"sip:streamer@tuki.io\" [(ngModel)]=\"details.sipStreamerUri\">\n </div>\n </div>\n </section>\n\n <div class=\"tk-meeting-space__footer\">\n <span class=\"tk-meeting-space__footer-hint\">Changes apply the next time the meeting activates.</span>\n <div class=\"tk-meeting-space__footer-actions\">\n <button type=\"button\" class=\"tk-meeting-space__cancel\" (click)=\"onCancel()\">Cancel</button>\n <button type=\"submit\" class=\"tk-meeting-space__submit\">{{ isEdit ? 'Save' : 'Create' }}</button>\n </div>\n </div>\n</form>\n", styles: [":host{display:block;font-family:Inter,Helvetica Neue,Helvetica,Arial,sans-serif;color:#000000f2}.tk-meeting-space__breadcrumb{display:flex;align-items:center;gap:.375rem;margin-bottom:1rem;font-size:.8125rem;color:#0009}.tk-meeting-space__breadcrumb-link{color:#0009;text-decoration:none}.tk-meeting-space__breadcrumb-link:hover{color:#000000f2;text-decoration:underline}.tk-meeting-space__breadcrumb-current{color:#000000f2}.tk-meeting-space__header{display:flex;align-items:flex-start;gap:.75rem;margin-bottom:1.5rem}.tk-meeting-space__icon{display:flex;align-items:center;justify-content:center;width:2.25rem;height:2.25rem;border-radius:8px;background:rgba(0,0,0,.04);color:#0009;flex-shrink:0}.tk-meeting-space__heading{display:flex;flex-direction:column;gap:.25rem}.tk-meeting-space__title{margin:0;font-size:1.25rem;font-weight:600}.tk-meeting-space__subtitle,.tk-meeting-space__status{margin:0;font-size:.8125rem;color:#0009}.tk-meeting-space__status{display:inline-flex;align-items:center;gap:.375rem}.tk-meeting-space__status-dot{width:.5rem;height:.5rem;border-radius:50%;background:#1d805f}.tk-meeting-space__status-dot--disabled{background:rgba(0,0,0,.3)}.tk-meeting-space__section{margin-bottom:1.5rem;padding:1.5rem;background:#fff;border:1px solid rgba(0,0,0,.12);border-radius:8px}.tk-meeting-space__section-header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;margin-bottom:1.25rem}.tk-meeting-space__section-header-text{display:flex;flex-direction:column;gap:.25rem}.tk-meeting-space__section-header-actions{display:flex;align-items:center;gap:.5rem;flex-shrink:0}.tk-meeting-space__section-title{margin:0;font-size:.9375rem;font-weight:600}.tk-meeting-space__section-subtitle{margin:0;font-size:.8125rem;color:#0009}.tk-meeting-space__grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.25rem 1.5rem}.tk-meeting-space__grid--experience,.tk-meeting-space__grid--recording{align-items:start}.tk-meeting-space__field,.tk-meeting-space__toggle-field{display:flex;flex-direction:column;gap:.375rem}.tk-meeting-space__label{font-size:.8125rem;font-weight:500;color:#000000f2}.tk-meeting-space__hint{font-size:.75rem;color:#0009}.tk-meeting-space__input,.tk-meeting-space__select{width:100%;padding:.625rem .75rem;background:#fff;border:1px solid rgba(0,0,0,.12);border-radius:6px;font-family:inherit;font-size:.8125rem;color:#000000f2}.tk-meeting-space__input::placeholder,.tk-meeting-space__select::placeholder{color:#0006}.tk-meeting-space__input:focus,.tk-meeting-space__select:focus{outline:none;border-color:#0006}.tk-meeting-space__input:disabled,.tk-meeting-space__select:disabled{background:rgba(0,0,0,.02);color:#0009}.tk-meeting-space__select{appearance:none;cursor:pointer}.tk-meeting-space__status-row{display:flex;align-items:center;gap:.75rem;margin-top:1.5rem;padding-top:1.25rem;border-top:1px solid rgba(0,0,0,.12)}.tk-meeting-space__status-row-label{margin:0;font-size:.8125rem;font-weight:500}.tk-meeting-space__toggle{position:relative;width:2rem;height:1.125rem;padding:0;border:none;border-radius:999px;background:rgba(0,0,0,.2);cursor:pointer;flex-shrink:0;transition:background-color .15s ease}.tk-meeting-space__toggle--on{background:#0353a8}.tk-meeting-space__toggle-thumb{position:absolute;top:.1875rem;left:.1875rem;width:.75rem;height:.75rem;border-radius:50%;background:#fff;transition:transform .15s ease}.tk-meeting-space__toggle--on .tk-meeting-space__toggle-thumb{transform:translate(.875rem)}.tk-meeting-space__toggle-row{display:flex;align-items:center;gap:.5rem}.tk-meeting-space__toggle-label{font-size:.8125rem;color:#0009}.tk-meeting-space__roles-toolbar{display:flex;justify-content:flex-end;margin-bottom:.75rem}.tk-meeting-space__add-role{display:inline-flex;align-items:center;gap:.25rem;padding:.375rem .75rem;background:#fff;border:1px solid rgba(0,0,0,.12);border-radius:6px;font-family:inherit;font-size:.8125rem;font-weight:500;cursor:pointer}.tk-meeting-space__add-role:hover{background:rgba(0,0,0,.03)}.tk-meeting-space__add-role-icon{font-size:1rem;height:1rem;width:1rem}.tk-meeting-space__role{padding:1.25rem;margin-bottom:1rem;background:rgba(0,0,0,.015);border:1px solid rgba(0,0,0,.12);border-radius:8px}.tk-meeting-space__role:last-child{margin-bottom:0}.tk-meeting-space__role-header{display:flex;align-items:center;gap:.5rem;margin-bottom:1rem}.tk-meeting-space__role-name{font-size:.875rem;font-weight:600}.tk-meeting-space__role-primary-badge{padding:.125rem .5rem;border-radius:999px;background:rgba(3,83,168,.1);color:#0353a8;font-size:.6875rem;font-weight:500}.tk-meeting-space__role-remove{margin-left:auto;display:inline-flex;align-items:center;justify-content:center;background:none;border:none;padding:0;color:#0009;cursor:pointer}.tk-meeting-space__role-remove:hover{color:#c73636}.tk-meeting-space__checkboxes{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem 1.5rem;margin-top:1rem}.tk-meeting-space__checkbox{display:flex;align-items:center;gap:.5rem;font-size:.8125rem;color:#000000f2;cursor:pointer}.tk-meeting-space__checkbox input{margin:0}.tk-meeting-space__layouts{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.75rem;margin:.5rem 0 1.5rem}.tk-meeting-space__layout{padding:.625rem .5rem;background:#fff;border:1px solid rgba(0,0,0,.12);border-radius:6px;font-family:inherit;font-size:.75rem;font-weight:500;color:#000000f2;cursor:pointer}.tk-meeting-space__layout:hover{background:rgba(0,0,0,.03)}.tk-meeting-space__layout--selected{border-color:#0353a8;color:#0353a8;background:rgba(3,83,168,.06)}.tk-meeting-space__footer{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding-top:1rem}.tk-meeting-space__footer-hint{font-size:.8125rem;color:#0009}.tk-meeting-space__footer-actions{display:flex;align-items:center;gap:1rem;margin-left:auto}.tk-meeting-space__cancel{background:none;border:none;padding:.5rem 0;font-family:inherit;font-size:.8125rem;font-weight:500;color:#000000f2;cursor:pointer}.tk-meeting-space__submit{padding:.5rem 1.25rem;background:#000;color:#fff;border:none;border-radius:6px;font-family:inherit;font-size:.8125rem;font-weight:500;cursor:pointer}.tk-meeting-space__submit:hover{background:#222}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i3.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] });
|
|
84
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MeetingSpaceComponent, decorators: [{
|
|
85
|
+
type: Component,
|
|
86
|
+
args: [{ selector: 'tk-meeting-space', template: "<form class=\"tk-meeting-space\" (ngSubmit)=\"onSubmit()\">\n <div class=\"tk-meeting-space__breadcrumb\">\n <a href=\"javascript:void(0)\" class=\"tk-meeting-space__breadcrumb-link\" (click)=\"onCancel()\">Meetings</a>\n <span class=\"tk-meeting-space__breadcrumb-separator\">›</span>\n <span class=\"tk-meeting-space__breadcrumb-current\">{{ isEdit ? details.name : 'New meeting space' }}</span>\n </div>\n\n <div class=\"tk-meeting-space__header\">\n <div class=\"tk-meeting-space__icon\">\n <mat-icon>videocam</mat-icon>\n </div>\n <div class=\"tk-meeting-space__heading\">\n <h1 class=\"tk-meeting-space__title\">{{ isEdit ? details.name : 'New meeting space' }}</h1>\n <p class=\"tk-meeting-space__subtitle\" *ngIf=\"!isEdit\">Configure a reusable meeting environment with join details and access roles.</p>\n <p class=\"tk-meeting-space__status\" *ngIf=\"isEdit\">\n <span class=\"tk-meeting-space__status-dot\" [class.tk-meeting-space__status-dot--disabled]=\"!details.enabled\"></span>\n {{ details.enabled ? 'Enabled' : 'Disabled' }} · {{ details.meetingUri }} · {{ details.meetingId }}\n </p>\n </div>\n </div>\n\n <section class=\"tk-meeting-space__section\">\n <div class=\"tk-meeting-space__section-header\">\n <h2 class=\"tk-meeting-space__section-title\">General information</h2>\n <p class=\"tk-meeting-space__section-subtitle\">Basic details, ownership and where this space runs.</p>\n </div>\n\n <div class=\"tk-meeting-space__grid\">\n <div class=\"tk-meeting-space__field\">\n <label class=\"tk-meeting-space__label\">Space name *</label>\n <input class=\"tk-meeting-space__input\" name=\"name\" placeholder=\"e.g. Executive Boardroom\" [(ngModel)]=\"details.name\" required>\n </div>\n <div class=\"tk-meeting-space__field\">\n <label class=\"tk-meeting-space__label\">Owner *</label>\n <input class=\"tk-meeting-space__input\" name=\"owner\" placeholder=\"owner@tuki.io\" [(ngModel)]=\"details.owner\" required>\n </div>\n <div class=\"tk-meeting-space__field\">\n <label class=\"tk-meeting-space__label\">Description</label>\n <input class=\"tk-meeting-space__input\" name=\"description\" placeholder=\"Weekly executive strategy sync\" [(ngModel)]=\"details.description\">\n <span class=\"tk-meeting-space__hint\">Shown in invitations and the space directory.</span>\n </div>\n <div class=\"tk-meeting-space__field\">\n <label class=\"tk-meeting-space__label\">Cluster</label>\n <select class=\"tk-meeting-space__select\" name=\"cluster\" [(ngModel)]=\"details.cluster\">\n <option *ngFor=\"let cluster of clusters\" [value]=\"cluster\">{{ cluster }}</option>\n </select>\n </div>\n <div class=\"tk-meeting-space__field\">\n <label class=\"tk-meeting-space__label\">Space tag</label>\n <input class=\"tk-meeting-space__input\" name=\"tag\" placeholder=\"e.g. Leadership\" [(ngModel)]=\"details.tag\">\n </div>\n <div class=\"tk-meeting-space__field\">\n <label class=\"tk-meeting-space__label\">Meeting ID *</label>\n <input class=\"tk-meeting-space__input\" name=\"meetingId\" placeholder=\"e.g. 4427100\" [(ngModel)]=\"details.meetingId\" required>\n </div>\n <div class=\"tk-meeting-space__field\">\n <label class=\"tk-meeting-space__label\">Meeting URI *</label>\n <input class=\"tk-meeting-space__input\" name=\"meetingUri\" placeholder=\"space@tuki.io\" [(ngModel)]=\"details.meetingUri\" required>\n </div>\n <div class=\"tk-meeting-space__field\">\n <label class=\"tk-meeting-space__label\">Secondary URI</label>\n <input class=\"tk-meeting-space__input\" name=\"secondaryUri\" placeholder=\"space.alt@tuki.io\" [(ngModel)]=\"details.secondaryUri\">\n </div>\n <div class=\"tk-meeting-space__field\">\n <label class=\"tk-meeting-space__label\">Meeting password</label>\n <input class=\"tk-meeting-space__input\" name=\"password\" placeholder=\"Optional\" [(ngModel)]=\"details.password\">\n </div>\n </div>\n\n <div class=\"tk-meeting-space__status-row\">\n <div>\n <p class=\"tk-meeting-space__status-row-label\">Space status</p>\n <p class=\"tk-meeting-space__hint\">Disabled spaces cannot activate meetings but keep their configuration.</p>\n </div>\n <button\n type=\"button\"\n class=\"tk-meeting-space__toggle\"\n [class.tk-meeting-space__toggle--on]=\"details.enabled\"\n (click)=\"details.enabled = !details.enabled\">\n <span class=\"tk-meeting-space__toggle-thumb\"></span>\n </button>\n <span class=\"tk-meeting-space__toggle-label\">{{ details.enabled ? 'Enabled' : 'Disabled' }}</span>\n </div>\n </section>\n\n <section class=\"tk-meeting-space__section\" *ngIf=\"isEdit\">\n <div class=\"tk-meeting-space__section-header\">\n <h2 class=\"tk-meeting-space__section-title\">Join information</h2>\n <p class=\"tk-meeting-space__section-subtitle\">Everything participants need to reach this space.</p>\n </div>\n\n <div class=\"tk-meeting-space__grid\">\n <div class=\"tk-meeting-space__field\">\n <label class=\"tk-meeting-space__label\">Meeting ID</label>\n <input class=\"tk-meeting-space__input\" [value]=\"details.meetingId\" disabled>\n </div>\n <div class=\"tk-meeting-space__field\">\n <label class=\"tk-meeting-space__label\">Browser join link</label>\n <input class=\"tk-meeting-space__input\" [value]=\"browserJoinLink\" disabled>\n </div>\n </div>\n </section>\n\n <section class=\"tk-meeting-space__section\">\n <div class=\"tk-meeting-space__section-header\">\n <div class=\"tk-meeting-space__section-header-text\">\n <h2 class=\"tk-meeting-space__section-title\">Access roles and security</h2>\n <p class=\"tk-meeting-space__section-subtitle\">Different ways participants can join, with their own passcode and permissions.</p>\n </div>\n <div class=\"tk-meeting-space__section-header-actions\">\n <button\n type=\"button\"\n class=\"tk-meeting-space__toggle\"\n [class.tk-meeting-space__toggle--on]=\"details.accessRolesEnabled\"\n (click)=\"details.accessRolesEnabled = !details.accessRolesEnabled\">\n <span class=\"tk-meeting-space__toggle-thumb\"></span>\n </button>\n <span class=\"tk-meeting-space__toggle-label\">{{ details.accessRolesEnabled ? 'Enabled' : 'Disabled' }}</span>\n </div>\n </div>\n\n <ng-container *ngIf=\"details.accessRolesEnabled\">\n <div class=\"tk-meeting-space__roles-toolbar\">\n <button type=\"button\" class=\"tk-meeting-space__add-role\" (click)=\"addAccessRole()\">\n <mat-icon class=\"tk-meeting-space__add-role-icon\">add</mat-icon>\n Add role\n </button>\n </div>\n\n <div class=\"tk-meeting-space__role\" *ngFor=\"let role of details.accessRoles; trackBy: trackByRoleId\">\n <div class=\"tk-meeting-space__role-header\">\n <span class=\"tk-meeting-space__role-name\">{{ role.name }}</span>\n <span class=\"tk-meeting-space__role-primary-badge\" *ngIf=\"role.primary\">Primary</span>\n <button\n type=\"button\"\n class=\"tk-meeting-space__role-remove\"\n *ngIf=\"!role.primary\"\n (click)=\"removeAccessRole(role)\"\n aria-label=\"Remove role\">\n <mat-icon>delete</mat-icon>\n </button>\n </div>\n\n <div class=\"tk-meeting-space__grid\">\n <div class=\"tk-meeting-space__field\">\n <label class=\"tk-meeting-space__label\">Visibility</label>\n <select class=\"tk-meeting-space__select\" [name]=\"'visibility-' + role.id\" [(ngModel)]=\"role.visibility\">\n <option value=\"members-only\">Members only</option>\n <option value=\"public\">Public</option>\n <option value=\"private\">Private</option>\n </select>\n </div>\n <div class=\"tk-meeting-space__field\">\n <label class=\"tk-meeting-space__label\">Passcode</label>\n <input class=\"tk-meeting-space__input\" [name]=\"'passcode-' + role.id\" placeholder=\"\" [(ngModel)]=\"role.passcode\">\n <span class=\"tk-meeting-space__hint\">Numeric, minimum 4 digits (server policy).</span>\n </div>\n </div>\n\n <div class=\"tk-meeting-space__checkboxes\">\n <label class=\"tk-meeting-space__checkbox\">\n <input type=\"checkbox\" [name]=\"'activates-' + role.id\" [(ngModel)]=\"role.activatesMeetingOnJoin\">\n Activates the meeting on join\n </label>\n <label class=\"tk-meeting-space__checkbox\">\n <input type=\"checkbox\" [name]=\"'wait-lobby-' + role.id\" [(ngModel)]=\"role.participantsWaitInLobby\">\n Participants wait in lobby\n </label>\n <label class=\"tk-meeting-space__checkbox\">\n <input type=\"checkbox\" [name]=\"'unauth-' + role.id\" [(ngModel)]=\"role.allowUnauthenticatedJoin\">\n Allow unauthenticated join\n </label>\n <label class=\"tk-meeting-space__checkbox\">\n <input type=\"checkbox\" [name]=\"'host-controls-' + role.id\" [(ngModel)]=\"role.grantMeetingHostControls\">\n Grant meeting host controls\n </label>\n </div>\n </div>\n </ng-container>\n </section>\n\n <section class=\"tk-meeting-space__section\">\n <div class=\"tk-meeting-space__section-header\">\n <h2 class=\"tk-meeting-space__section-title\">Meeting experience</h2>\n <p class=\"tk-meeting-space__section-subtitle\">Defaults applied when a meeting activates in this space.</p>\n </div>\n\n <p class=\"tk-meeting-space__label\">Default video layout</p>\n <div class=\"tk-meeting-space__layouts\">\n <button\n type=\"button\"\n *ngFor=\"let layout of videoLayouts\"\n class=\"tk-meeting-space__layout\"\n [class.tk-meeting-space__layout--selected]=\"details.defaultVideoLayout === layout.value\"\n (click)=\"details.defaultVideoLayout = layout.value\">\n {{ layout.label }}\n </button>\n </div>\n\n <div class=\"tk-meeting-space__grid tk-meeting-space__grid--experience\">\n <div class=\"tk-meeting-space__toggle-field\">\n <label class=\"tk-meeting-space__label\">Participant labels</label>\n <div class=\"tk-meeting-space__toggle-row\">\n <button\n type=\"button\"\n class=\"tk-meeting-space__toggle\"\n [class.tk-meeting-space__toggle--on]=\"details.participantLabels\"\n (click)=\"details.participantLabels = !details.participantLabels\">\n <span class=\"tk-meeting-space__toggle-thumb\"></span>\n </button>\n <span class=\"tk-meeting-space__toggle-label\">{{ details.participantLabels ? 'On' : 'Off' }}</span>\n </div>\n </div>\n\n <div class=\"tk-meeting-space__toggle-field\">\n <label class=\"tk-meeting-space__label\">Allow presentation</label>\n <div class=\"tk-meeting-space__toggle-row\">\n <button\n type=\"button\"\n class=\"tk-meeting-space__toggle\"\n [class.tk-meeting-space__toggle--on]=\"details.allowPresentation\"\n (click)=\"details.allowPresentation = !details.allowPresentation\">\n <span class=\"tk-meeting-space__toggle-thumb\"></span>\n </button>\n <span class=\"tk-meeting-space__toggle-label\">{{ details.allowPresentation ? 'On' : 'Off' }}</span>\n </div>\n </div>\n\n <div class=\"tk-meeting-space__toggle-field\">\n <label class=\"tk-meeting-space__label\">Disconnect others allowed</label>\n <div class=\"tk-meeting-space__toggle-row\">\n <button\n type=\"button\"\n class=\"tk-meeting-space__toggle\"\n [class.tk-meeting-space__toggle--on]=\"details.disconnectOthersAllowed\"\n (click)=\"details.disconnectOthersAllowed = !details.disconnectOthersAllowed\">\n <span class=\"tk-meeting-space__toggle-thumb\"></span>\n </button>\n <span class=\"tk-meeting-space__toggle-label\">{{ details.disconnectOthersAllowed ? 'True' : 'False' }}</span>\n </div>\n </div>\n\n <div class=\"tk-meeting-space__field\">\n <label class=\"tk-meeting-space__label\">Video quality</label>\n <select class=\"tk-meeting-space__select\" name=\"videoQuality\" [(ngModel)]=\"details.videoQuality\">\n <option *ngFor=\"let quality of videoQualities\" [value]=\"quality.value\">{{ quality.label }}</option>\n </select>\n </div>\n\n <div class=\"tk-meeting-space__field\">\n <label class=\"tk-meeting-space__label\">Presentation quality</label>\n <select class=\"tk-meeting-space__select\" name=\"presentationQuality\" [(ngModel)]=\"details.presentationQuality\">\n <option *ngFor=\"let quality of presentationQualities\" [value]=\"quality.value\">{{ quality.label }}</option>\n </select>\n </div>\n </div>\n </section>\n\n <section class=\"tk-meeting-space__section\">\n <div class=\"tk-meeting-space__section-header\">\n <h2 class=\"tk-meeting-space__section-title\">Recording and streaming</h2>\n <p class=\"tk-meeting-space__section-subtitle\">Controls for capturing and broadcasting the meeting.</p>\n </div>\n\n <div class=\"tk-meeting-space__grid tk-meeting-space__grid--recording\">\n <div class=\"tk-meeting-space__toggle-field\">\n <label class=\"tk-meeting-space__label\">Allow recording</label>\n <div class=\"tk-meeting-space__toggle-row\">\n <button\n type=\"button\"\n class=\"tk-meeting-space__toggle\"\n [class.tk-meeting-space__toggle--on]=\"details.allowRecording\"\n (click)=\"details.allowRecording = !details.allowRecording\">\n <span class=\"tk-meeting-space__toggle-thumb\"></span>\n </button>\n <span class=\"tk-meeting-space__toggle-label\">{{ details.allowRecording ? 'True' : 'False' }}</span>\n </div>\n </div>\n\n <div class=\"tk-meeting-space__toggle-field\">\n <label class=\"tk-meeting-space__label\">Allow streaming</label>\n <div class=\"tk-meeting-space__toggle-row\">\n <button\n type=\"button\"\n class=\"tk-meeting-space__toggle\"\n [class.tk-meeting-space__toggle--on]=\"details.allowStreaming\"\n (click)=\"details.allowStreaming = !details.allowStreaming\">\n <span class=\"tk-meeting-space__toggle-thumb\"></span>\n </button>\n <span class=\"tk-meeting-space__toggle-label\">{{ details.allowStreaming ? 'True' : 'False' }}</span>\n </div>\n </div>\n\n <div class=\"tk-meeting-space__field\">\n <label class=\"tk-meeting-space__label\">SIP recorder URI</label>\n <input class=\"tk-meeting-space__input\" name=\"sipRecorderUri\" placeholder=\"sip:recorder@tuki.io\" [(ngModel)]=\"details.sipRecorderUri\">\n </div>\n\n <div class=\"tk-meeting-space__field\">\n <label class=\"tk-meeting-space__label\">SIP streamer URI</label>\n <input class=\"tk-meeting-space__input\" name=\"sipStreamerUri\" placeholder=\"sip:streamer@tuki.io\" [(ngModel)]=\"details.sipStreamerUri\">\n </div>\n </div>\n </section>\n\n <div class=\"tk-meeting-space__footer\">\n <span class=\"tk-meeting-space__footer-hint\">Changes apply the next time the meeting activates.</span>\n <div class=\"tk-meeting-space__footer-actions\">\n <button type=\"button\" class=\"tk-meeting-space__cancel\" (click)=\"onCancel()\">Cancel</button>\n <button type=\"submit\" class=\"tk-meeting-space__submit\">{{ isEdit ? 'Save' : 'Create' }}</button>\n </div>\n </div>\n</form>\n", styles: [":host{display:block;font-family:Inter,Helvetica Neue,Helvetica,Arial,sans-serif;color:#000000f2}.tk-meeting-space__breadcrumb{display:flex;align-items:center;gap:.375rem;margin-bottom:1rem;font-size:.8125rem;color:#0009}.tk-meeting-space__breadcrumb-link{color:#0009;text-decoration:none}.tk-meeting-space__breadcrumb-link:hover{color:#000000f2;text-decoration:underline}.tk-meeting-space__breadcrumb-current{color:#000000f2}.tk-meeting-space__header{display:flex;align-items:flex-start;gap:.75rem;margin-bottom:1.5rem}.tk-meeting-space__icon{display:flex;align-items:center;justify-content:center;width:2.25rem;height:2.25rem;border-radius:8px;background:rgba(0,0,0,.04);color:#0009;flex-shrink:0}.tk-meeting-space__heading{display:flex;flex-direction:column;gap:.25rem}.tk-meeting-space__title{margin:0;font-size:1.25rem;font-weight:600}.tk-meeting-space__subtitle,.tk-meeting-space__status{margin:0;font-size:.8125rem;color:#0009}.tk-meeting-space__status{display:inline-flex;align-items:center;gap:.375rem}.tk-meeting-space__status-dot{width:.5rem;height:.5rem;border-radius:50%;background:#1d805f}.tk-meeting-space__status-dot--disabled{background:rgba(0,0,0,.3)}.tk-meeting-space__section{margin-bottom:1.5rem;padding:1.5rem;background:#fff;border:1px solid rgba(0,0,0,.12);border-radius:8px}.tk-meeting-space__section-header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;margin-bottom:1.25rem}.tk-meeting-space__section-header-text{display:flex;flex-direction:column;gap:.25rem}.tk-meeting-space__section-header-actions{display:flex;align-items:center;gap:.5rem;flex-shrink:0}.tk-meeting-space__section-title{margin:0;font-size:.9375rem;font-weight:600}.tk-meeting-space__section-subtitle{margin:0;font-size:.8125rem;color:#0009}.tk-meeting-space__grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.25rem 1.5rem}.tk-meeting-space__grid--experience,.tk-meeting-space__grid--recording{align-items:start}.tk-meeting-space__field,.tk-meeting-space__toggle-field{display:flex;flex-direction:column;gap:.375rem}.tk-meeting-space__label{font-size:.8125rem;font-weight:500;color:#000000f2}.tk-meeting-space__hint{font-size:.75rem;color:#0009}.tk-meeting-space__input,.tk-meeting-space__select{width:100%;padding:.625rem .75rem;background:#fff;border:1px solid rgba(0,0,0,.12);border-radius:6px;font-family:inherit;font-size:.8125rem;color:#000000f2}.tk-meeting-space__input::placeholder,.tk-meeting-space__select::placeholder{color:#0006}.tk-meeting-space__input:focus,.tk-meeting-space__select:focus{outline:none;border-color:#0006}.tk-meeting-space__input:disabled,.tk-meeting-space__select:disabled{background:rgba(0,0,0,.02);color:#0009}.tk-meeting-space__select{appearance:none;cursor:pointer}.tk-meeting-space__status-row{display:flex;align-items:center;gap:.75rem;margin-top:1.5rem;padding-top:1.25rem;border-top:1px solid rgba(0,0,0,.12)}.tk-meeting-space__status-row-label{margin:0;font-size:.8125rem;font-weight:500}.tk-meeting-space__toggle{position:relative;width:2rem;height:1.125rem;padding:0;border:none;border-radius:999px;background:rgba(0,0,0,.2);cursor:pointer;flex-shrink:0;transition:background-color .15s ease}.tk-meeting-space__toggle--on{background:#0353a8}.tk-meeting-space__toggle-thumb{position:absolute;top:.1875rem;left:.1875rem;width:.75rem;height:.75rem;border-radius:50%;background:#fff;transition:transform .15s ease}.tk-meeting-space__toggle--on .tk-meeting-space__toggle-thumb{transform:translate(.875rem)}.tk-meeting-space__toggle-row{display:flex;align-items:center;gap:.5rem}.tk-meeting-space__toggle-label{font-size:.8125rem;color:#0009}.tk-meeting-space__roles-toolbar{display:flex;justify-content:flex-end;margin-bottom:.75rem}.tk-meeting-space__add-role{display:inline-flex;align-items:center;gap:.25rem;padding:.375rem .75rem;background:#fff;border:1px solid rgba(0,0,0,.12);border-radius:6px;font-family:inherit;font-size:.8125rem;font-weight:500;cursor:pointer}.tk-meeting-space__add-role:hover{background:rgba(0,0,0,.03)}.tk-meeting-space__add-role-icon{font-size:1rem;height:1rem;width:1rem}.tk-meeting-space__role{padding:1.25rem;margin-bottom:1rem;background:rgba(0,0,0,.015);border:1px solid rgba(0,0,0,.12);border-radius:8px}.tk-meeting-space__role:last-child{margin-bottom:0}.tk-meeting-space__role-header{display:flex;align-items:center;gap:.5rem;margin-bottom:1rem}.tk-meeting-space__role-name{font-size:.875rem;font-weight:600}.tk-meeting-space__role-primary-badge{padding:.125rem .5rem;border-radius:999px;background:rgba(3,83,168,.1);color:#0353a8;font-size:.6875rem;font-weight:500}.tk-meeting-space__role-remove{margin-left:auto;display:inline-flex;align-items:center;justify-content:center;background:none;border:none;padding:0;color:#0009;cursor:pointer}.tk-meeting-space__role-remove:hover{color:#c73636}.tk-meeting-space__checkboxes{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem 1.5rem;margin-top:1rem}.tk-meeting-space__checkbox{display:flex;align-items:center;gap:.5rem;font-size:.8125rem;color:#000000f2;cursor:pointer}.tk-meeting-space__checkbox input{margin:0}.tk-meeting-space__layouts{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.75rem;margin:.5rem 0 1.5rem}.tk-meeting-space__layout{padding:.625rem .5rem;background:#fff;border:1px solid rgba(0,0,0,.12);border-radius:6px;font-family:inherit;font-size:.75rem;font-weight:500;color:#000000f2;cursor:pointer}.tk-meeting-space__layout:hover{background:rgba(0,0,0,.03)}.tk-meeting-space__layout--selected{border-color:#0353a8;color:#0353a8;background:rgba(3,83,168,.06)}.tk-meeting-space__footer{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding-top:1rem}.tk-meeting-space__footer-hint{font-size:.8125rem;color:#0009}.tk-meeting-space__footer-actions{display:flex;align-items:center;gap:1rem;margin-left:auto}.tk-meeting-space__cancel{background:none;border:none;padding:.5rem 0;font-family:inherit;font-size:.8125rem;font-weight:500;color:#000000f2;cursor:pointer}.tk-meeting-space__submit{padding:.5rem 1.25rem;background:#000;color:#fff;border:none;border-radius:6px;font-family:inherit;font-size:.8125rem;font-weight:500;cursor:pointer}.tk-meeting-space__submit:hover{background:#222}\n"] }]
|
|
87
|
+
}], ctorParameters: function () { return [{ type: i1.MeetingSpacesService }]; }, propDecorators: { mode: [{
|
|
88
|
+
type: Input
|
|
89
|
+
}], meetingSpaceId: [{
|
|
90
|
+
type: Input
|
|
91
|
+
}], back: [{
|
|
92
|
+
type: Output
|
|
93
|
+
}], saved: [{
|
|
94
|
+
type: Output
|
|
95
|
+
}] } });
|
|
96
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVldGluZy1zcGFjZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWtpL3dpZGdldHMvbWVldGluZ3Mvc3JjL2NvbXBvbmVudHMvbWVldGluZy1zcGFjZXMvbWVldGluZy1zcGFjZS9tZWV0aW5nLXNwYWNlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1a2kvd2lkZ2V0cy9tZWV0aW5ncy9zcmMvY29tcG9uZW50cy9tZWV0aW5nLXNwYWNlcy9tZWV0aW5nLXNwYWNlL21lZXRpbmctc3BhY2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsZ0NBQWdDLEVBQXdCLE1BQU0sMENBQTBDLENBQUM7Ozs7OztBQXFCbEgsTUFBTSxPQUFPLHFCQUFxQjtJQWdDaEMsWUFBb0Isb0JBQTBDO1FBQTFDLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBc0I7UUEvQnJELFNBQUksR0FBeUIsUUFBUSxDQUFDO1FBQ3RDLG1CQUFjLEdBQWtCLElBQUksQ0FBQztRQUNwQyxTQUFJLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUNoQyxVQUFLLEdBQUcsSUFBSSxZQUFZLEVBQXVCLENBQUM7UUFFMUQsWUFBTyxHQUF3QixnQ0FBZ0MsRUFBRSxDQUFDO1FBRXpELGFBQVEsR0FBRyxDQUFDLFdBQVcsRUFBRSxXQUFXLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFFdEQsaUJBQVksR0FBc0M7WUFDekQsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUU7WUFDMUMsRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUU7WUFDaEQsRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUU7WUFDaEQsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUU7WUFDdEMsRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSxlQUFlLEVBQUU7WUFDbEQsRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsS0FBSyxFQUFFLGdCQUFnQixFQUFFO1lBQ3BELEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFFO1lBQ2xELEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO1NBQ2pDLENBQUM7UUFFTyxtQkFBYyxHQUF1QztZQUM1RCxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRTtZQUN4QyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRTtZQUN4QyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRTtTQUMzQyxDQUFDO1FBRU8sMEJBQXFCLEdBQThDO1lBQzFFLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFO1lBQ3RDLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFO1NBQzNDLENBQUM7SUFFZ0UsQ0FBQztJQUVuRSxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDdEMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUN4RSxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztZQUN6QixDQUFDLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQztJQUVELElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLElBQUksS0FBSyxNQUFNLENBQUM7SUFDOUIsQ0FBQztJQUVELElBQUksZUFBZTtRQUNqQixPQUFPLFdBQVcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLHNCQUFzQixJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ3ZGLENBQUM7SUFFRCxhQUFhO1FBQ1gsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsR0FBRztZQUN6QixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVztZQUMzQjtnQkFDRSxFQUFFLEVBQUUsUUFBUSxLQUFLLEVBQUU7Z0JBQ25CLElBQUksRUFBRSxRQUFRLEtBQUssRUFBRTtnQkFDckIsVUFBVSxFQUFFLGNBQWM7Z0JBQzFCLFFBQVEsRUFBRSxFQUFFO2dCQUNaLHNCQUFzQixFQUFFLEtBQUs7Z0JBQzdCLHdCQUF3QixFQUFFLEtBQUs7Z0JBQy9CLHVCQUF1QixFQUFFLEtBQUs7Z0JBQzlCLHdCQUF3QixFQUFFLEtBQUs7YUFDaEM7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELGdCQUFnQixDQUFDLElBQTRCO1FBQzNDLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBRUQsYUFBYSxDQUFDLE1BQWMsRUFBRSxJQUE0QjtRQUN4RCxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFFRCxRQUFRO1FBQ04sTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsY0FBYztZQUNoRCxDQUFDLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUM7WUFDbEUsQ0FBQyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRWpELE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3JELENBQUM7O21IQXJGVSxxQkFBcUI7dUdBQXJCLHFCQUFxQiwrSkN0QmxDLDJ4ZkF5VEE7NEZEblNhLHFCQUFxQjtrQkFMakMsU0FBUzsrQkFDRSxrQkFBa0I7MkdBS25CLElBQUk7c0JBQVosS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNJLElBQUk7c0JBQWIsTUFBTTtnQkFDRyxLQUFLO3NCQUFkLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjcmVhdGVEZWZhdWx0TWVldGluZ1NwYWNlRGV0YWlscywgTWVldGluZ1NwYWNlc1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tZWV0aW5nLXNwYWNlcy5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIE1lZXRpbmdTcGFjZUFjY2Vzc1JvbGUsXG4gIE1lZXRpbmdTcGFjZURldGFpbHMsXG4gIE1lZXRpbmdTcGFjZVByZXNlbnRhdGlvblF1YWxpdHksXG4gIE1lZXRpbmdTcGFjZVZpZGVvTGF5b3V0LFxuICBNZWV0aW5nU3BhY2VWaWRlb1F1YWxpdHksXG59IGZyb20gJy4uLy4uLy4uL3R5cGVzL21lZXRpbmctc3BhY2UnO1xuXG5leHBvcnQgdHlwZSBNZWV0aW5nU3BhY2VGb3JtTW9kZSA9ICdjcmVhdGUnIHwgJ2VkaXQnO1xuXG5pbnRlcmZhY2UgT3B0aW9uPFQ+IHtcbiAgdmFsdWU6IFQ7XG4gIGxhYmVsOiBzdHJpbmc7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RrLW1lZXRpbmctc3BhY2UnLFxuICB0ZW1wbGF0ZVVybDogJy4vbWVldGluZy1zcGFjZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL21lZXRpbmctc3BhY2UuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgTWVldGluZ1NwYWNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgbW9kZTogTWVldGluZ1NwYWNlRm9ybU1vZGUgPSAnY3JlYXRlJztcbiAgQElucHV0KCkgbWVldGluZ1NwYWNlSWQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICBAT3V0cHV0KCkgYmFjayA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIHNhdmVkID0gbmV3IEV2ZW50RW1pdHRlcjxNZWV0aW5nU3BhY2VEZXRhaWxzPigpO1xuXG4gIGRldGFpbHM6IE1lZXRpbmdTcGFjZURldGFpbHMgPSBjcmVhdGVEZWZhdWx0TWVldGluZ1NwYWNlRGV0YWlscygpO1xuXG4gIHJlYWRvbmx5IGNsdXN0ZXJzID0gWyd1cy1lYXN0LTEnLCAnZXUtd2VzdC0xJywgJ2FwYWMtc291dGgtMSddO1xuXG4gIHJlYWRvbmx5IHZpZGVvTGF5b3V0czogT3B0aW9uPE1lZXRpbmdTcGFjZVZpZGVvTGF5b3V0PltdID0gW1xuICAgIHsgdmFsdWU6ICdhbGwtZXF1YWwnLCBsYWJlbDogJ0FsbCBlcXVhbCcgfSxcbiAgICB7IHZhbHVlOiAnc3BlYWtlci1vbmx5JywgbGFiZWw6ICdTcGVha2VyIG9ubHknIH0sXG4gICAgeyB2YWx1ZTogJ3RlbGVwcmVzZW5jZScsIGxhYmVsOiAnVGVsZXByZXNlbmNlJyB9LFxuICAgIHsgdmFsdWU6ICdzdGFja2VkJywgbGFiZWw6ICdTdGFja2VkJyB9LFxuICAgIHsgdmFsdWU6ICdvbmUtcGx1cy1maXZlJywgbGFiZWw6ICdPbmUgcGx1cyBmaXZlJyB9LFxuICAgIHsgdmFsdWU6ICdvbmUtcGx1cy1zZXZlbicsIGxhYmVsOiAnT25lIHBsdXMgc2V2ZW4nIH0sXG4gICAgeyB2YWx1ZTogJ29uZS1wbHVzLW5pbmUnLCBsYWJlbDogJ09uZSBwbHVzIG5pbmUnIH0sXG4gICAgeyB2YWx1ZTogJ21vcmUnLCBsYWJlbDogJ01vcmUnIH0sXG4gIF07XG5cbiAgcmVhZG9ubHkgdmlkZW9RdWFsaXRpZXM6IE9wdGlvbjxNZWV0aW5nU3BhY2VWaWRlb1F1YWxpdHk+W10gPSBbXG4gICAgeyB2YWx1ZTogJzQ4MHAzMCcsIGxhYmVsOiAnNDgwcCAzMGZwcycgfSxcbiAgICB7IHZhbHVlOiAnNzIwcDMwJywgbGFiZWw6ICc3MjBwIDMwZnBzJyB9LFxuICAgIHsgdmFsdWU6ICcxMDgwcDMwJywgbGFiZWw6ICcxMDgwcCAzMGZwcycgfSxcbiAgXTtcblxuICByZWFkb25seSBwcmVzZW50YXRpb25RdWFsaXRpZXM6IE9wdGlvbjxNZWV0aW5nU3BhY2VQcmVzZW50YXRpb25RdWFsaXR5PltdID0gW1xuICAgIHsgdmFsdWU6ICc3MjBwNScsIGxhYmVsOiAnNzIwcCA1ZnBzJyB9LFxuICAgIHsgdmFsdWU6ICcxMDgwcDMwJywgbGFiZWw6ICcxMDgwcCAzMGZwcycgfSxcbiAgXTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG1lZXRpbmdTcGFjZXNTZXJ2aWNlOiBNZWV0aW5nU3BhY2VzU2VydmljZSkgeyB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNFZGl0ICYmIHRoaXMubWVldGluZ1NwYWNlSWQpIHtcbiAgICAgIHRoaXMubWVldGluZ1NwYWNlc1NlcnZpY2UuZ2V0T25lKHRoaXMubWVldGluZ1NwYWNlSWQpLnN1YnNjcmliZShkZXRhaWxzID0+IHtcbiAgICAgICAgdGhpcy5kZXRhaWxzID0gZGV0YWlscztcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGdldCBpc0VkaXQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubW9kZSA9PT0gJ2VkaXQnO1xuICB9XG5cbiAgZ2V0IGJyb3dzZXJKb2luTGluaygpOiBzdHJpbmcge1xuICAgIHJldHVybiBgaHR0cHM6Ly8ke3RoaXMuZGV0YWlscy5jbHVzdGVyfS1jbXMvZW4tdXMvbWVldGluZy8ke3RoaXMuZGV0YWlscy5tZWV0aW5nSWR9YDtcbiAgfVxuXG4gIGFkZEFjY2Vzc1JvbGUoKTogdm9pZCB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmRldGFpbHMuYWNjZXNzUm9sZXMubGVuZ3RoICsgMTtcbiAgICB0aGlzLmRldGFpbHMuYWNjZXNzUm9sZXMgPSBbXG4gICAgICAuLi50aGlzLmRldGFpbHMuYWNjZXNzUm9sZXMsXG4gICAgICB7XG4gICAgICAgIGlkOiBgcm9sZS0ke2luZGV4fWAsXG4gICAgICAgIG5hbWU6IGBSb2xlICR7aW5kZXh9YCxcbiAgICAgICAgdmlzaWJpbGl0eTogJ21lbWJlcnMtb25seScsXG4gICAgICAgIHBhc3Njb2RlOiAnJyxcbiAgICAgICAgYWN0aXZhdGVzTWVldGluZ09uSm9pbjogZmFsc2UsXG4gICAgICAgIGFsbG93VW5hdXRoZW50aWNhdGVkSm9pbjogZmFsc2UsXG4gICAgICAgIHBhcnRpY2lwYW50c1dhaXRJbkxvYmJ5OiBmYWxzZSxcbiAgICAgICAgZ3JhbnRNZWV0aW5nSG9zdENvbnRyb2xzOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgXTtcbiAgfVxuXG4gIHJlbW92ZUFjY2Vzc1JvbGUocm9sZTogTWVldGluZ1NwYWNlQWNjZXNzUm9sZSk6IHZvaWQge1xuICAgIHRoaXMuZGV0YWlscy5hY2Nlc3NSb2xlcyA9IHRoaXMuZGV0YWlscy5hY2Nlc3NSb2xlcy5maWx0ZXIociA9PiByICE9PSByb2xlKTtcbiAgfVxuXG4gIHRyYWNrQnlSb2xlSWQoX2luZGV4OiBudW1iZXIsIHJvbGU6IE1lZXRpbmdTcGFjZUFjY2Vzc1JvbGUpOiBzdHJpbmcge1xuICAgIHJldHVybiByb2xlLmlkO1xuICB9XG5cbiAgb25DYW5jZWwoKTogdm9pZCB7XG4gICAgdGhpcy5iYWNrLmVtaXQoKTtcbiAgfVxuXG4gIG9uU3VibWl0KCk6IHZvaWQge1xuICAgIGNvbnN0IHJlcXVlc3QgPSB0aGlzLmlzRWRpdCAmJiB0aGlzLm1lZXRpbmdTcGFjZUlkXG4gICAgICA/IHRoaXMubWVldGluZ1NwYWNlc1NlcnZpY2UucHV0KHRoaXMubWVldGluZ1NwYWNlSWQsIHRoaXMuZGV0YWlscylcbiAgICAgIDogdGhpcy5tZWV0aW5nU3BhY2VzU2VydmljZS5zYXZlKHRoaXMuZGV0YWlscyk7XG5cbiAgICByZXF1ZXN0LnN1YnNjcmliZShzYXZlZCA9PiB0aGlzLnNhdmVkLmVtaXQoc2F2ZWQpKTtcbiAgfVxufVxuIiwiPGZvcm0gY2xhc3M9XCJ0ay1tZWV0aW5nLXNwYWNlXCIgKG5nU3VibWl0KT1cIm9uU3VibWl0KClcIj5cbiAgPGRpdiBjbGFzcz1cInRrLW1lZXRpbmctc3BhY2VfX2JyZWFkY3J1bWJcIj5cbiAgICA8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCIgY2xhc3M9XCJ0ay1tZWV0aW5nLXNwYWNlX19icmVhZGNydW1iLWxpbmtcIiAoY2xpY2spPVwib25DYW5jZWwoKVwiPk1lZXRpbmdzPC9hPlxuICAgIDxzcGFuIGNsYXNzPVwidGstbWVldGluZy1zcGFjZV9fYnJlYWRjcnVtYi1zZXBhcmF0b3JcIj4mcnNhcXVvOzwvc3Bhbj5cbiAgICA8c3BhbiBjbGFzcz1cInRrLW1lZXRpbmctc3BhY2VfX2JyZWFkY3J1bWItY3VycmVudFwiPnt7IGlzRWRpdCA/IGRldGFpbHMubmFtZSA6ICdOZXcgbWVldGluZyBzcGFjZScgfX08L3NwYW4+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJ0ay1tZWV0aW5nLXNwYWNlX19oZWFkZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwidGstbWVldGluZy1zcGFjZV9faWNvblwiPlxuICAgICAgPG1hdC1pY29uPnZpZGVvY2FtPC9tYXQtaWNvbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwidGstbWVldGluZy1zcGFjZV9faGVhZGluZ1wiPlxuICAgICAgPGgxIGNsYXNzPVwidGstbWVldGluZy1zcGFjZV9fdGl0bGVcIj57eyBpc0VkaXQgPyBkZXRhaWxzLm5hbWUgOiAnTmV3IG1lZXRpbmcgc3BhY2UnIH19PC9oMT5cbiAgICAgIDxwIGNsYXNzPVwidGstbWVldGluZy1zcGFjZV9fc3VidGl0bGVcIiAqbmdJZj1cIiFpc0VkaXRcIj5Db25maWd1cmUgYSByZXVzYWJsZSBtZWV0aW5nIGVudmlyb25tZW50IHdpdGggam9pbiBkZXRhaWxzIGFuZCBhY2Nlc3Mgcm9sZXMuPC9wPlxuICAgICAgPHAgY2xhc3M9XCJ0ay1tZWV0aW5nLXNwYWNlX19zdGF0dXNcIiAqbmdJZj1cImlzRWRpdFwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInRrLW1lZXRpbmctc3BhY2VfX3N0YXR1cy1kb3RcIiBbY2xhc3MudGstbWVldGluZy1zcGFjZV9fc3RhdHVzLWRvdC0tZGlzYWJsZWRdPVwiIWRldGFpbHMuZW5hYmxlZFwiPjwvc3Bhbj5cbiAgICAgICAge3sgZGV0YWlscy5lbmFibGVkID8gJ0VuYWJsZWQnIDogJ0Rpc2FibGVkJyB9fSAmbWlkZG90OyB7eyBkZXRhaWxzLm1lZXRpbmdVcmkgfX0gJm1pZGRvdDsge3sgZGV0YWlscy5tZWV0aW5nSWQgfX1cbiAgICAgIDwvcD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPHNlY3Rpb24gY2xhc3M9XCJ0ay1tZWV0aW5nLXNwYWNlX19zZWN0aW9uXCI+XG4gICAgPGRpdiBjbGFzcz1cInRrLW1lZXRpbmctc3BhY2VfX3NlY3Rpb24taGVhZGVyXCI+XG4gICAgICA8aDIgY2xhc3M9XCJ0ay1tZWV0aW5nLXNwYWNlX19zZWN0aW9uLXRpdGxlXCI+R2VuZXJhbCBpbmZvcm1hdGlvbjwvaDI+XG4gICAgICA8cCBjbGFzcz1cInRrLW1lZXRpbmctc3BhY2VfX3NlY3Rpb24tc3VidGl0bGVcIj5CYXNpYyBkZXRhaWxzLCBvd25lcnNoaXAgYW5kIHdoZXJlIHRoaXMgc3BhY2UgcnVucy48L3A+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwidGstbWVldGluZy1zcGFjZV9fZ3JpZFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInRrLW1lZXRpbmctc3BhY2VfX2ZpZWxkXCI+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cInRrLW1lZXRpbmctc3BhY2VfX2xhYmVsXCI+U3BhY2UgbmFtZSAqPC9sYWJlbD5cbiAgICAgICAgPGlucHV0IGNsYXNzPVwidGstbWVldGluZy1zcGFjZV9faW5wdXRcIiBuYW1lPVwibmFtZVwiIHBsYWNlaG9sZGVyPVwiZS5nLiBFeGVjdXRpdmUgQm9hcmRyb29tXCIgWyhuZ01vZGVsKV09XCJkZXRhaWxzLm5hbWVcIiByZXF1aXJlZD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInRrLW1lZXRpbmctc3BhY2VfX2ZpZWxkXCI+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cInRrLW1lZXRpbmctc3BhY2VfX2xhYmVsXCI+T3duZXIgKjwvbGFiZWw+XG4gICAgICAgIDxpbnB1dCBjbGFzcz1cInRrLW1lZXRpbmctc3BhY2VfX2lucHV0XCIgbmFtZT1cIm93bmVyXCIgcGxhY2Vob2xkZXI9XCJvd25lckB0dWtpLmlvXCIgWyhuZ01vZGVsKV09XCJkZXRhaWxzLm93bmVyXCIgcmVxdWlyZWQ+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ0ay1tZWV0aW5nLXNwYWNlX19maWVsZFwiPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJ0ay1tZWV0aW5nLXNwYWNlX19sYWJlbFwiPkRlc2NyaXB0aW9uPC9sYWJlbD5cbiAgICAgICAgPGlucHV0IGNsYXNzPVwidGstbWVldGluZy1zcGFjZV9faW5wdXRcIiBuYW1lPVwiZGVzY3JpcHRpb25cIiBwbGFjZWhvbGRlcj1cIldlZWtseSBleGVjdXRpdmUgc3RyYXRlZ3kgc3luY1wiIFsobmdNb2RlbCldPVwiZGV0YWlscy5kZXNjcmlwdGlvblwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInRrLW1lZXRpbmctc3BhY2VfX2hpbnRcIj5TaG93biBpbiBpbnZpdGF0aW9ucyBhbmQgdGhlIHNwYWNlIGRpcmVjdG9yeS48L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ0ay1tZWV0aW5nLXNwYWNlX19maWVsZFwiPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJ0ay1tZWV0aW5nLXNwYWNlX19sYWJlbFwiPkNsdXN0ZXI8L2xhYmVsPlxuICAgICAgICA8c2VsZWN0IGNsYXNzPVwidGstbWVldGluZy1zcGFjZV9fc2VsZWN0XCIgbmFtZT1cImNsdXN0ZXJcIiBbKG5nTW9kZWwpXT1cImRldGFpbHMuY2x1c3RlclwiPlxuICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IGNsdXN0ZXIgb2YgY2x1c3RlcnNcIiBbdmFsdWVdPVwiY2x1c3RlclwiPnt7IGNsdXN0ZXIgfX08L29wdGlvbj5cbiAgICAgICAgPC9zZWxlY3Q+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ0ay1tZWV0aW5nLXNwYWNlX19maWVsZFwiPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJ0ay1tZWV0aW5nLXNwYWNlX19sYWJlbFwiPlNwYWNlIHRhZzwvbGFiZWw+XG4gICAgICAgIDxpbnB1dCBjbGFzcz1cInRrLW1lZXRpbmctc3BhY2VfX2lucHV0XCIgbmFtZT1cInRhZ1wiIHBsYWNlaG9sZGVyPVwiZS5nLiBMZWFkZXJzaGlwXCIgWyhuZ01vZGVsKV09XCJkZXRhaWxzLnRhZ1wiPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwidGstbWVldGluZy1zcGFjZV9fZmllbGRcIj5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwidGstbWVldGluZy1zcGFjZV9fbGFiZWxcIj5NZWV0aW5nIElEICo8L2xhYmVsPlxuICAgICAgICA8aW5wdXQgY2xhc3M9XCJ0ay1tZWV0aW5nLXNwYWNlX19pbnB1dFwiIG5hbWU9XCJtZWV0aW5nSWRcIiBwbGFjZWhvbGRlcj1cImUuZy4gNDQyNzEwMFwiIFsobmdNb2RlbCldPVwiZGV0YWlscy5tZWV0aW5nSWRcIiByZXF1aXJlZD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInRrLW1lZXRpbmctc3BhY2VfX2ZpZWxkXCI+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cInRrLW1lZXRpbmctc3BhY2VfX2xhYmVsXCI+TWVldGluZyBVUkkgKjwvbGFiZWw+XG4gICAgICAgIDxpbnB1dCBjbGFzcz1cInRrLW1lZXRpbmctc3BhY2VfX2lucHV0XCIgbmFtZT1cIm1lZXRpbmdVcmlcIiBwbGFjZWhvbGRlcj1cInNwYWNlQHR1a2kuaW9cIiBbKG5nTW9kZWwpXT1cImRldGFpbHMubWVldGluZ1VyaVwiIHJlcXVpcmVkPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwidGstbWVldGluZy1zcGFjZV9fZmllbGRcIj5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwidGstbWVldGluZy1zcGFjZV9fbGFiZWxcIj5TZWNvbmRhcnkgVVJJPC9sYWJlbD5cbiAgICAgICAgPGlucHV0IGNsYXNzPVwidGstbWVldGluZy1zcGFjZV9faW5wdXRcIiBuYW1lPVwic2Vjb25kYXJ5VXJpXCIgcGxhY2Vob2xkZXI9XCJzcGFjZS5hbHRAdHVraS5pb1wiIFsobmdNb2RlbCldPVwiZGV0YWlscy5zZWNvbmRhcnlVcmlcIj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInRrLW1lZXRpbmctc3BhY2VfX2ZpZWxkXCI+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cInRrLW1lZXRpbmctc3BhY2VfX2xhYmVsXCI+TWVldGluZyBwYXNzd29yZDwvbGFiZWw+XG4gICAgICAgIDxpbnB1dCBjbGFzcz1cInRrLW1lZXRpbmctc3BhY2VfX2lucHV0XCIgbmFtZT1cInBhc3N3b3JkXCIgcGxhY2Vob2xkZXI9XCJPcHRpb25hbFwiIFsobmdNb2RlbCldPVwiZGV0YWlscy5wYXNzd29yZFwiPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwidGstbWVldGluZy1zcGFjZV9fc3RhdHVzLXJvd1wiPlxuICAgICAgPGRpdj5cbiAgICAgICAgPHAgY2xhc3M9XCJ0ay1tZWV0aW5nLXNwYWNlX19zdGF0dXMtcm93LWxhYmVsXCI+U3BhY2Ugc3RhdHVzPC9wPlxuICAgICAgICA8cCBjbGFzcz1cInRrLW1lZXRpbmctc3BhY2VfX2hpbnRcIj5EaXNhYmxlZCBzcGFjZXMgY2Fubm90IGFjdGl2YXRlIG1lZXRpbmdzIGJ1dCBrZWVwIHRoZWlyIGNvbmZpZ3VyYXRpb24uPC9wPlxuICAgICAgPC9kaXY+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBjbGFzcz1cInRrLW1lZXRpbmctc3BhY2VfX3RvZ2dsZVwiXG4gICAgICAgIFtjbGFzcy50ay1tZWV0aW5nLXNwYWNlX190b2dnbGUtLW9uXT1cImRldGFpbHMuZW5hYmxlZFwiXG4gICAgICAgIChjbGljayk9XCJkZXRhaWxzLmVuYWJsZWQgPSAhZGV0YWlscy5lbmFibGVkXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwidGstbWVldGluZy1zcGFjZV9fdG9nZ2xlLXRodW1iXCI+PC9zcGFuPlxuICAgICAgPC9idXR0b24+XG4gICAgICA8c3BhbiBjbGFzcz1cInRrLW1lZXRpbmctc3BhY2VfX3RvZ2dsZS1sYWJlbFwiPnt7IGRldGFpbHMuZW5hYmxlZCA/ICdFbmFibGVkJyA6ICdEaXNhYmxlZCcgfX08L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvc2VjdGlvbj5cblxuICA8c2VjdGlvbiBjbGFzcz1cInRrLW1lZXRpbmctc3BhY2VfX3NlY3Rpb25cIiAqbmdJZj1cImlzRWRpdFwiPlxuICAgIDxkaXYgY2xhc3M9XCJ0ay1tZWV0aW5nLXNwYWNlX19zZWN0aW9uLWhlYWRlclwiPlxuICAgICAgPGgyIGNsYXNzPVwidGstbWVldGluZy1zcGFjZV9fc2VjdGlvbi10aXRsZVwiPkpvaW4gaW5mb3JtYXRpb248L2gyPlxuICAgICAgPHAgY2xhc3M9XCJ0ay1tZWV0aW5nLXNwYWNlX19zZWN0aW9uLXN1YnRpdGxlXCI+RXZlcnl0aGluZyBwYXJ0aWNpcGFudHMgbmVlZCB0byByZWFjaCB0aGlzIHNwYWNlLjwvcD5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJ0ay1tZWV0aW5nLXNwYWNlX19ncmlkXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwidGstbWVldGluZy1zcGFjZV9fZmllbGRcIj5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwidGstbWVldGluZy1zcGFjZV9fbGFiZWxcIj5NZWV0aW5nIElEPC9sYWJlbD5cbiAgICAgICAgPGlucHV0IGNsYXNzPVwidGstbWVldGluZy1zcGFjZV9faW5wdXRcIiBbdmFsdWVdPVwiZGV0YWlscy5tZWV0aW5nSWRcIiBkaXNhYmxlZD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInRrLW1lZXRpbmctc3BhY2VfX2ZpZWxkXCI+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cInRrLW1lZXRpbmctc3BhY2VfX2xhYmVsXCI+QnJvd3NlciBqb2luIGxpbms8L2xhYmVsPlxuICAgICAgICA8aW5wdXQgY2xhc3M9XCJ0ay1tZWV0aW5nLXNwYWNlX19pbnB1dFwiIFt2YWx1ZV09XCJicm93c2VySm9pbkxpbmtcIiBkaXNhYmxlZD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L3NlY3Rpb24+XG5cbiAgPHNlY3Rpb24gY2xhc3M9XCJ0ay1tZWV0aW5nLXNwYWNlX19zZWN0aW9uXCI+XG4gICAgPGRpdiBjbGFzcz1cInRrLW1lZXRpbmctc3BhY2VfX3NlY3Rpb24taGVhZGVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwidGstbWVldGluZy1zcGFjZV9fc2VjdGlvbi1oZWFkZXItdGV4dFwiPlxuICAgICAgICA8aDIgY2xhc3M9XCJ0ay1tZWV0aW5nLXNwYWNlX19zZWN0aW9uLXRpdGxlXCI+QWNjZXNzIHJvbGVzIGFuZCBzZWN1cml0eTwvaDI+XG4gICAgICAgIDxwIGNsYXNzPVwidGstbWVldGluZy1zcGFjZV9fc2VjdGlvbi1zdWJ0aXRsZVwiPkRpZmZlcmVudCB3YXlzIHBhcnRpY2lwYW50cyBjYW4gam9pbiwgd2l0aCB0aGVpciBvd24gcGFzc2NvZGUgYW5kIHBlcm1pc3Npb25zLjwvcD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInRrLW1lZXRpbmctc3BhY2VfX3NlY3Rpb24taGVhZGVyLWFjdGlvbnNcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzPVwidGstbWVldGluZy1zcGFjZV9fdG9nZ2xlXCJcbiAgICAgICAgICBbY2xhc3MudGstbWVldGluZy1zcGFjZV9fdG9nZ2xlLS1vbl09XCJkZXRhaWxzLmFjY2Vzc1JvbGVzRW5hYmxlZFwiXG4gICAgICAgICAgKGNsaWNrKT1cImRldGFpbHMuYWNjZXNzUm9sZXNFbmFibGVkID0gIWRldGFpbHMuYWNjZXNzUm9sZXNFbmFibGVkXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ay1tZWV0aW5nLXNwYWNlX190b2dnbGUtdGh1bWJcIj48L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInRrLW1lZXRpbmctc3BhY2VfX3RvZ2dsZS1sYWJlbFwiPnt7IGRldGFpbHMuYWNjZXNzUm9sZXNFbmFibGVkID8gJ0VuYWJsZWQnIDogJ0Rpc2FibGVkJyB9fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRldGFpbHMuYWNjZXNzUm9sZXNFbmFibGVkXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwidGstbWVldGluZy1zcGFjZV9fcm9sZXMtdG9vbGJhclwiPlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInRrLW1lZXRpbmctc3BhY2VfX2FkZC1yb2xlXCIgKGNsaWNrKT1cImFkZEFjY2Vzc1JvbGUoKVwiPlxuICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cInRrLW1lZXRpbmctc3BhY2VfX2FkZC1yb2xlLWljb25cIj5hZGQ8L21hdC1pY29uPlxuICAgICAgICAgIEFkZCByb2xlXG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJ0ay1tZWV0aW5nLXNwYWNlX19yb2xlXCIgKm5nRm9yPVwibGV0IHJvbGUgb2YgZGV0YWlscy5hY2Nlc3NSb2xlczsgdHJhY2tCeTogdHJhY2tCeVJvbGVJZFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGstbWVldGluZy1zcGFjZV9fcm9sZS1oZWFkZXJcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInRrLW1lZXRpbmctc3BhY2VfX3JvbGUtbmFtZVwiPnt7IHJvbGUubmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInRrLW1lZXRpbmctc3BhY2VfX3JvbGUtcHJpbWFyeS1iYWRnZVwiICpuZ0lmPVwicm9sZS5wcmltYXJ5XCI+UHJpbWFyeTwvc3Bhbj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGNsYXNzPVwidGstbWVldGluZy1zcGFjZV9fcm9sZS1yZW1vdmVcIlxuICAgICAgICAgICAgKm5nSWY9XCIhcm9sZS5wcmltYXJ5XCJcbiAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVBY2Nlc3NSb2xlKHJvbGUpXCJcbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJSZW1vdmUgcm9sZVwiPlxuICAgICAgICAgICAgPG1hdC1pY29uPmRlbGV0ZTwvbWF0LWljb24+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0ay1tZWV0aW5nLXNwYWNlX19ncmlkXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRrLW1lZXRpbmctc3BhY2VfX2ZpZWxkXCI+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ0ay1tZWV0aW5nLXNwYWNlX19sYWJlbFwiPlZpc2liaWxpdHk8L2xhYmVsPlxuICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cInRrLW1lZXRpbmctc3BhY2VfX3NlbGVjdFwiIFtuYW1lXT1cIid2aXNpYmlsaXR5LScgKyByb2xlLmlkXCIgWyhuZ01vZGVsKV09XCJyb2xlLnZpc2liaWxpdHlcIj5cbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIm1lbWJlcnMtb25seVwiPk1lbWJlcnMgb25seTwvb3B0aW9uPlxuICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwicHVibGljXCI+UHVibGljPC9vcHRpb24+XG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJwcml2YXRlXCI+UHJpdmF0ZTwvb3B0aW9uPlxuICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRrLW1lZXRpbmctc3BhY2VfX2ZpZWxkXCI+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ0ay1tZWV0aW5nLXNwYWNlX19sYWJlbFwiPlBhc3Njb2RlPC9sYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cInRrLW1lZXRpbmctc3BhY2VfX2lucHV0XCIgW25hbWVdPVwiJ3Bhc3Njb2RlLScgKyByb2xlLmlkXCIgcGxhY2Vob2xkZXI9XCJcIiBbKG5nTW9kZWwpXT1cInJvbGUucGFzc2NvZGVcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGstbWVldGluZy1zcGFjZV9faGludFwiPk51bWVyaWMsIG1pbmltdW0gNCBkaWdpdHMgKHNlcnZlciBwb2xpY3kpLjwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRrLW1lZXRpbmctc3BhY2VfX2NoZWNrYm94ZXNcIj5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ0ay1tZWV0aW5nLXNwYWNlX19jaGVja2JveFwiPlxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIFtuYW1lXT1cIidhY3RpdmF0ZXMtJyArIHJvbGUuaWRcIiBbKG5nTW9kZWwpXT1cInJvbGUuYWN0aXZhdGVzTWVldGluZ09uSm9pblwiPlxuICAgICAgICAgICAgQWN0aXZhdGVzIHRoZSBtZWV0aW5nIG9uIGpvaW5cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInRrLW1lZXRpbmctc3BhY2VfX2NoZWNrYm94XCI+XG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgW25hbWVdPVwiJ3dhaXQtbG9iYnktJyArIHJvbGUuaWRcIiBbKG5nTW9kZWwpXT1cInJvbGUucGFydGljaXBhbnRzV2FpdEluTG9iYnlcIj5cbiAgICAgICAgICAgIFBhcnRpY2lwYW50cyB3YWl0IGluIGxvYmJ5XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ0ay1tZWV0aW5nLXNwYWNlX19jaGVja2JveFwiPlxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIFtuYW1lXT1cIid1bmF1dGgtJyArIHJvbGUuaWRcIiBbKG5nTW9kZWwpXT1cInJvbGUuYWxsb3dVbmF1dGhlbnRpY2F0ZWRKb2luXCI+XG4gICAgICAgICAgICBBbGxvdyB1bmF1dGhlbnRpY2F0ZWQgam9pblxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwidGstbWVldGluZy1zcGFjZV9fY2hlY2tib3hcIj5cbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBbbmFtZV09XCInaG9zdC1jb250cm9scy0nICsgcm9sZS5pZFwiIFsobmdNb2RlbCldPVwicm9sZS5ncmFudE1lZXRpbmdIb3N0Q29udHJvbHNcIj5cbiAgICAgICAgICAgIEdyYW50IG1lZXRpbmcgaG9zdCBjb250cm9sc1xuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvc2VjdGlvbj5cblxuICA8c2VjdGlvbiBjbGFzcz1cInRrLW1lZXRpbmctc3BhY2VfX3NlY3Rpb25cIj5cbiAgICA8ZGl2IGNsYXNzPVwidGstbWVldGluZy1zcGFjZV9fc2VjdGlvbi1oZWFkZXJcIj5cbiAgICAgIDxoMiBjbGFzcz1cInRrLW1lZXRpbmctc3BhY2VfX3NlY3Rpb24tdGl0bGVcIj5NZWV0aW5nIGV4cGVyaWVuY2U8L2gyPlxuICAgICAgPHAgY2xhc3M9XCJ0ay1tZWV0aW5nLXNwYWNlX19zZWN0aW9uLXN1YnRpdGxlXCI+RGVmYXVsdHMgYXBwbGllZCB3aGVuIGEgbWVldGluZyBhY3RpdmF0ZXMgaW4gdGhpcyBzcGFjZS48L3A+XG4gICAgPC9kaXY+XG5cbiAgICA8cCBjbGFzcz1cInRrLW1lZXRpbmctc3BhY2VfX2xhYmVsXCI+RGVmYXVsdCB2aWRlbyBsYXlvdXQ8L3A+XG4gICAgPGRpdiBjbGFzcz1cInRrLW1lZXRpbmctc3BhY2VfX2xheW91dHNcIj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICpuZ0Zvcj1cImxldCBsYXlvdXQgb2YgdmlkZW9MYXlvdXRzXCJcbiAgICAgICAgY2xhc3M9XCJ0ay1tZWV0aW5nLXNwYWNlX19sYXlvdXRcIlxuICAgICAgICBbY2xhc3MudGstbWVldGluZy1zcGFjZV9fbGF5b3V0LS1zZWxlY3RlZF09XCJkZXRhaWxzLmRlZmF1bHRWaWRlb0xheW91dCA9PT0gbGF5b3V0LnZhbHVlXCJcbiAgICAgICAgKGNsaWNrKT1cImRldGFpbHMuZGVmYXVsdFZpZGVvTGF5b3V0ID0gbGF5b3V0LnZhbHVlXCI+XG4gICAgICAgIHt7IGxheW91dC5sYWJlbCB9fVxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwidGstbWVldGluZy1zcGFjZV9fZ3JpZCB0ay1tZWV0aW5nLXNwYWNlX19ncmlkLS1leHBlcmllbmNlXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwidGstbWVldGluZy1zcGFjZV9fdG9nZ2xlLWZpZWxkXCI+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cInRrLW1lZXRpbmctc3BhY2VfX2xhYmVsXCI+UGFydGljaXBhbnQgbGFiZWxzPC9sYWJlbD5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRrLW1lZXRpbmctc3BhY2VfX3RvZ2dsZS1yb3dcIj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGNsYXNzPVwidGstbWVldGluZy1zcGFjZV9fdG9nZ2xlXCJcbiAgICAgICAgICAgIFtjbGFzcy50ay1tZWV0aW5nLXNwYWNlX190b2dnbGUtLW9uXT1cImRldGFpbHMucGFydGljaXBhbnRMYWJlbHNcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImRldGFpbHMucGFydGljaXBhbnRMYWJlbHMgPSAhZGV0YWlscy5wYXJ0aWNpcGFudExhYmVsc1wiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ay1tZWV0aW5nLXNwYWNlX190b2dnbGUtdGh1bWJcIj48L3NwYW4+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ay1tZWV0aW5nLXNwYWNlX190b2dnbGUtbGFiZWxcIj57eyBkZXRhaWxzLnBhcnRpY2lwYW50TGFiZWxzID8gJ09uJyA6ICdPZmYnIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwidGstbWVldGluZy1zcGFjZV9fdG9nZ2xlLWZpZWxkXCI+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cInRrLW1lZXRpbmctc3BhY2VfX2xhYmVsXCI+QWxsb3cgcHJlc2VudGF0aW9uPC9sYWJlbD5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRrLW1lZXRpbmctc3BhY2VfX3RvZ2dsZS1yb3dcIj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGNsYXNzPVwidGstbWVldGluZy1zcGFjZV9fdG9nZ2xlXCJcbiAgICAgICAgICAgIFtjbGFzcy50ay1tZWV0aW5nLXNwYWNlX190b2dnbGUtLW9uXT1cImRldGFpbHMuYWxsb3dQcmVzZW50YXRpb25cIlxuICAgICAgICAgICAgKGNsaWNrKT1cImRldGFpbHMuYWxsb3dQcmVzZW50YXRpb24gPSAhZGV0YWlscy5hbGxvd1ByZXNlbnRhdGlvblwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ay1tZWV0aW5nLXNwYWNlX190b2dnbGUtdGh1bWJcIj48L3NwYW4+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ay1tZWV0aW5nLXNwYWNlX190b2dnbGUtbGFiZWxcIj57eyBkZXRhaWxzLmFsbG93UHJlc2VudGF0aW9uID8gJ09uJyA6ICdPZmYnIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwidGstbWVldGluZy1zcGFjZV9fdG9nZ2xlLWZpZWxkXCI+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cInRrLW1lZXRpbmctc3BhY2VfX2xhYmVsXCI+RGlzY29ubmVjdCBvdGhlcnMgYWxsb3dlZDwvbGFiZWw+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0ay1tZWV0aW5nLXNwYWNlX190b2dnbGUtcm93XCI+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzcz1cInRrLW1lZXRpbmctc3BhY2VfX3RvZ2dsZVwiXG4gICAgICAgICAgICBbY2xhc3MudGstbWVldGluZy1zcGFjZV9fdG9nZ2xlLS1vbl09XCJkZXRhaWxzLmRpc2Nvbm5lY3RPdGhlcnNBbGxvd2VkXCJcbiAgICAgICAgICAgIChjbGljayk9XCJkZXRhaWxzLmRpc2Nvbm5lY3RPdGhlcnNBbGxvd2VkID0gIWRldGFpbHMuZGlzY29ubmVjdE90aGVyc0FsbG93ZWRcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGstbWVldGluZy1zcGFjZV9fdG9nZ2xlLXRodW1iXCI+PC9zcGFuPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGstbWVldGluZy1zcGFjZV9fdG9nZ2xlLWxhYmVsXCI+e3sgZGV0YWlscy5kaXNjb25uZWN0T3RoZXJzQWxsb3dlZCA/ICdUcnVlJyA6ICdGYWxzZScgfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJ0ay1tZWV0aW5nLXNwYWNlX19maWVsZFwiPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJ0ay1tZWV0aW5nLXNwYWNlX19sYWJlbFwiPlZpZGVvIHF1YWxpdHk8L2xhYmVsPlxuICAgICAgICA8c2VsZWN0IGNsYXNzPVwidGstbWVldGluZy1zcGFjZV9fc2VsZWN0XCIgbmFtZT1cInZpZGVvUXVhbGl0eVwiIFsobmdNb2RlbCldPVwiZGV0YWlscy52aWRlb1F1YWxpdHlcIj5cbiAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBxdWFsaXR5IG9mIHZpZGVvUXVhbGl0aWVzXCIgW3ZhbHVlXT1cInF1YWxpdHkudmFsdWVcIj57eyBxdWFsaXR5LmxhYmVsIH19PC9vcHRpb24+XG4gICAgICAgIDwvc2VsZWN0PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJ0ay1tZWV0aW5nLXNwYWNlX19maWVsZFwiPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJ0ay1tZWV0aW5nLXNwYWNlX19sYWJlbFwiPlByZXNlbnRhdGlvbiBxdWFsaXR5PC9sYWJlbD5cbiAgICAgICAgPHNlbGVjdCBjbGFzcz1cInRrLW1lZXRpbmctc3BhY2VfX3NlbGVjdFwiIG5hbWU9XCJwcmVzZW50YXRpb25RdWFsaXR5XCIgWyhuZ01vZGVsKV09XCJkZXRhaWxzLnByZXNlbnRhdGlvblF1YWxpdHlcIj5cbiAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBxdWFsaXR5IG9mIHByZXNlbnRhdGlvblF1YWxpdGllc1wiIFt2YWx1ZV09XCJxdWFsaXR5LnZhbHVlXCI+e3sgcXVhbGl0eS5sYWJlbCB9fTwvb3B0aW9uPlxuICAgICAgICA8L3NlbGVjdD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L3NlY3Rpb24+XG5cbiAgPHNlY3Rpb24gY2xhc3M9XCJ0ay1tZWV0aW5nLXNwYWNlX19zZWN0aW9uXCI+XG4gICAgPGRpdiBjbGFzcz1cInRrLW1lZXRpbmctc3BhY2VfX3NlY3Rpb24taGVhZGVyXCI+XG4gICAgICA8aDIgY2xhc3M9XCJ0ay1tZWV0aW5nLXNwYWNlX19zZWN0aW9uLXRpdGxlXCI+UmVjb3JkaW5nIGFuZCBzdHJlYW1pbmc8L2gyPlxuICAgICAgPHAgY2xhc3M9XCJ0ay1tZWV0aW5nLXNwYWNlX19zZWN0aW9uLXN1YnRpdGxlXCI+Q29udHJvbHMgZm9yIGNhcHR1cmluZyBhbmQgYnJvYWRjYXN0aW5nIHRoZSBtZWV0aW5nLjwvcD5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJ0ay1tZWV0aW5nLXNwYWNlX19ncmlkIHRrLW1lZXRpbmctc3BhY2VfX2dyaWQtLXJlY29yZGluZ1wiPlxuICAgICAgPGRpdiBjbGFzcz1cInRrLW1lZXRpbmctc3BhY2VfX3RvZ2dsZS1maWVsZFwiPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJ0ay1tZWV0aW5nLXNwYWNlX19sYWJlbFwiPkFsbG93IHJlY29yZGluZzwvbGFiZWw+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0ay1tZWV0aW5nLXNwYWNlX190b2dnbGUtcm93XCI+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzcz1cInRrLW1lZXRpbmctc3BhY2VfX3RvZ2dsZVwiXG4gICAgICAgICAgICBbY2xhc3MudGstbWVldGluZy1zcGFjZV9fdG9nZ2xlLS1vbl09XCJkZXRhaWxzLmFsbG93UmVjb3JkaW5nXCJcbiAgICAgICAgICAgIChjbGljayk9XCJkZXRhaWxzLmFsbG93UmVjb3JkaW5nID0gIWRldGFpbHMuYWxsb3dSZWNvcmRpbmdcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGstbWVldGluZy1zcGFjZV9fdG9nZ2xlLXRodW1iXCI+PC9zcGFuPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGstbWVldGluZy1zcGFjZV9fdG9nZ2xlLWxhYmVsXCI+e3sgZGV0YWlscy5hbGxvd1JlY29yZGluZyA/ICdUcnVlJyA6ICdGYWxzZScgfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJ0ay1tZWV0aW5nLXNwYWNlX190b2dnbGUtZmllbGRcIj5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwidGstbWVldGluZy1zcGFjZV9fbGFiZWxcIj5BbGxvdyBzdHJlYW1pbmc8L2xhYmVsPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGstbWVldGluZy1zcGFjZV9fdG9nZ2xlLXJvd1wiPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgY2xhc3M9XCJ0ay1tZWV0aW5nLXNwYWNlX190b2dnbGVcIlxuICAgICAgICAgICAgW2NsYXNzLnRrLW1lZXRpbmctc3BhY2VfX3RvZ2dsZS0tb25dPVwiZGV0YWlscy5hbGxvd1N0cmVhbWluZ1wiXG4gICAgICAgICAgICAoY2xpY2spPVwiZGV0YWlscy5hbGxvd1N0cmVhbWluZyA9ICFkZXRhaWxzLmFsbG93U3RyZWFtaW5nXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRrLW1lZXRpbmctc3BhY2VfX3RvZ2dsZS10aHVtYlwiPjwvc3Bhbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInRrLW1lZXRpbmctc3BhY2VfX3RvZ2dsZS1sYWJlbFwiPnt7IGRldGFpbHMuYWxsb3dTdHJlYW1pbmcgPyAnVHJ1ZScgOiAnRmFsc2UnIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwidGstbWVldGluZy1zcGFjZV9fZmllbGRcIj5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwidGstbWVldGluZy1zcGFjZV9fbGFiZWxcIj5TSVAgcmVjb3JkZXIgVVJJPC9sYWJlbD5cbiAgICAgICAgPGlucHV0IGNsYXNzPVwidGstbWVldGluZy1zcGFjZV9faW5wdXRcIiBuYW1lPVwic2lwUmVjb3JkZXJVcmlcIiBwbGFjZWhvbGRlcj1cInNpcDpyZWNvcmRlckB0dWtpLmlvXCIgWyhuZ01vZGVsKV09XCJkZXRhaWxzLnNpcFJlY29yZGVyVXJpXCI+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cInRrLW1lZXRpbmctc3BhY2VfX2ZpZWxkXCI+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cInRrLW1lZXRpbmctc3BhY2VfX2xhYmVsXCI+U0lQIHN0cmVhbWVyIFVSSTwvbGFiZWw+XG4gICAgICAgIDxpbnB1dCBjbGFzcz1cInRrLW1lZXRpbmctc3BhY2VfX2lucHV0XCIgbmFtZT1cInNpcFN0cmVhbWVyVXJpXCIgcGxhY2Vob2xkZXI9XCJzaXA6c3RyZWFtZXJAdHVraS5pb1wiIFsobmdNb2RlbCldPVwiZGV0YWlscy5zaXBTdHJlYW1lclVyaVwiPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvc2VjdGlvbj5cblxuICA8ZGl2IGNsYXNzPVwidGstbWVldGluZy1zcGFjZV9fZm9vdGVyXCI+XG4gICAgPHNwYW4gY2xhc3M9XCJ0ay1tZWV0aW5nLXNwYWNlX19mb290ZXItaGludFwiPkNoYW5nZXMgYXBwbHkgdGhlIG5leHQgdGltZSB0aGUgbWVldGluZyBhY3RpdmF0ZXMuPC9zcGFuPlxuICAgIDxkaXYgY2xhc3M9XCJ0ay1tZWV0aW5nLXNwYWNlX19mb290ZXItYWN0aW9uc1wiPlxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJ0ay1tZWV0aW5nLXNwYWNlX19jYW5jZWxcIiAoY2xpY2spPVwib25DYW5jZWwoKVwiPkNhbmNlbDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJ0ay1tZWV0aW5nLXNwYWNlX19zdWJtaXRcIj57eyBpc0VkaXQgPyAnU2F2ZScgOiAnQ3JlYXRlJyB9fTwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZm9ybT5cbiJdfQ==
|
|
@@ -8,6 +8,7 @@ export class MeetingSpacesComponent {
|
|
|
8
8
|
constructor(meetingSpacesService) {
|
|
9
9
|
this.meetingSpacesService = meetingSpacesService;
|
|
10
10
|
this.createMeetingSpace = new EventEmitter();
|
|
11
|
+
this.editMeetingSpace = new EventEmitter();
|
|
11
12
|
this.meetingSpaces = [];
|
|
12
13
|
this.searchTerm = '';
|
|
13
14
|
this.isFilterPanelOpen = false;
|
|
@@ -39,6 +40,9 @@ export class MeetingSpacesComponent {
|
|
|
39
40
|
onCreateMeetingSpace() {
|
|
40
41
|
this.createMeetingSpace.emit();
|
|
41
42
|
}
|
|
43
|
+
onEditMeetingSpace(space) {
|
|
44
|
+
this.editMeetingSpace.emit(space.id);
|
|
45
|
+
}
|
|
42
46
|
toggleFilterPanel() {
|
|
43
47
|
this.isFilterPanelOpen = !this.isFilterPanelOpen;
|
|
44
48
|
}
|
|
@@ -50,11 +54,13 @@ export class MeetingSpacesComponent {
|
|
|
50
54
|
}
|
|
51
55
|
}
|
|
52
56
|
MeetingSpacesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MeetingSpacesComponent, deps: [{ token: i1.MeetingSpacesService }], target: i0.ɵɵFactoryTarget.Component });
|
|
53
|
-
MeetingSpacesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: MeetingSpacesComponent, selector: "tk-meeting-spaces", outputs: { createMeetingSpace: "createMeetingSpace" }, ngImport: i0, template: "<div class=\"tk-meeting-spaces__header\">\n <h2 class=\"tk-meeting-spaces__title\">Meeting Spaces</h2>\n <button type=\"button\" class=\"tk-meeting-spaces__create-button\" (click)=\"onCreateMeetingSpace()\">\n <mat-icon class=\"tk-meeting-spaces__create-icon\">add</mat-icon>\n Create meeting space\n </button>\n</div>\n\n<div class=\"tk-meeting-spaces__toolbar\">\n <div class=\"tk-meeting-spaces__search\">\n <mat-icon class=\"tk-meeting-spaces__search-icon\">search</mat-icon>\n <input\n type=\"text\"\n class=\"tk-meeting-spaces__search-input\"\n placeholder=\"Search by Name, URI or Meeting ID\"\n [(ngModel)]=\"searchTerm\">\n </div>\n\n <button type=\"button\" class=\"tk-meeting-spaces__filter-button\" (click)=\"toggleFilterPanel()\">\n <img class=\"tk-meeting-spaces__filter-icon\" src=\"assets/icons/filter-regular.svg\" alt=\"filter_list\" title=\"filter_list\">\n Filter\n </button>\n\n <span class=\"tk-meeting-spaces__count\">{{ filteredMeetingSpaces.length }} spaces</span>\n</div>\n\n<table class=\"tk-meeting-spaces__table\">\n <thead>\n <tr>\n <th>Meeting Name</th>\n <th>URI</th>\n <th>Meeting ID</th>\n <th>Participants</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let space of filteredMeetingSpaces\">\n <td class=\"tk-meeting-spaces__name-cell\">\n <a href=\"javascript:void(0)\" class=\"tk-meeting-spaces__name-link\">{{ space.name }}</a>\n <span *ngIf=\"space.managed\" class=\"tk-meeting-spaces__badge\">Managed</span>\n </td>\n <td>{{ space.uri }}</td>\n <td>{{ space.meetingId }}</td>\n <td>{{ space.participants }}</td>\n </tr>\n <tr *ngIf=\"!filteredMeetingSpaces.length\">\n <td colspan=\"4\" class=\"tk-meeting-spaces__empty\">No meeting spaces match your search.</td>\n </tr>\n </tbody>\n</table>\n\n<div class=\"tk-meeting-spaces__footer\">\n <span class=\"tk-meeting-spaces__footer-text\">\n Showing {{ filteredMeetingSpaces.length ? 1 : 0 }}-{{ filteredMeetingSpaces.length }} of {{ meetingSpaces.length }}\n </span>\n <div class=\"tk-meeting-spaces__pagination\">\n <button type=\"button\" class=\"tk-meeting-spaces__pagination-button\" disabled>Previous</button>\n <button type=\"button\" class=\"tk-meeting-spaces__pagination-button\" disabled>Next</button>\n </div>\n</div>\n\n<div\n class=\"tk-meeting-spaces__filter-backdrop\"\n *ngIf=\"isFilterPanelOpen\"\n (click)=\"closeFilterPanel()\">\n</div>\n\n<aside class=\"tk-meeting-spaces__filter-panel\" [class.tk-meeting-spaces__filter-panel--open]=\"isFilterPanelOpen\">\n <div class=\"tk-meeting-spaces__filter-panel-header\">\n <h3 class=\"tk-meeting-spaces__filter-panel-title\">Filter meeting spaces</h3>\n <button\n type=\"button\"\n class=\"tk-meeting-spaces__filter-panel-close\"\n aria-label=\"Close filter panel\"\n (click)=\"closeFilterPanel()\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n\n <div class=\"tk-meeting-spaces__filter-panel-body\">\n <div class=\"tk-meeting-spaces__filter-field\">\n <label class=\"tk-meeting-spaces__filter-label\" for=\"tk-meeting-spaces-filter-owner\">Owner</label>\n <div class=\"tk-meeting-spaces__filter-select-wrap\">\n <select id=\"tk-meeting-spaces-filter-owner\" class=\"tk-meeting-spaces__filter-select\" [(ngModel)]=\"filters.owner\">\n <option value=\"\">All owners</option>\n <option *ngFor=\"let owner of owners\" [value]=\"owner\">{{ owner }}</option>\n </select>\n <mat-icon class=\"tk-meeting-spaces__filter-select-icon\">expand_more</mat-icon>\n </div>\n </div>\n\n <div class=\"tk-meeting-spaces__filter-field\">\n <label class=\"tk-meeting-spaces__filter-label\" for=\"tk-meeting-spaces-filter-cluster\">Cluster</label>\n <div class=\"tk-meeting-spaces__filter-select-wrap\">\n <select id=\"tk-meeting-spaces-filter-cluster\" class=\"tk-meeting-spaces__filter-select\" [(ngModel)]=\"filters.cluster\">\n <option value=\"\">All clusters</option>\n <option *ngFor=\"let cluster of clusters\" [value]=\"cluster\">{{ cluster }}</option>\n </select>\n <mat-icon class=\"tk-meeting-spaces__filter-select-icon\">expand_more</mat-icon>\n </div>\n </div>\n </div>\n\n <div class=\"tk-meeting-spaces__filter-panel-footer\">\n <button type=\"button\" class=\"tk-meeting-spaces__filter-clear\" (click)=\"clearFilters()\">Clear all</button>\n <button type=\"button\" class=\"tk-meeting-spaces__filter-done\" (click)=\"closeFilterPanel()\">Done</button>\n </div>\n</aside>\n", styles: [":host{font-family:Inter,Helvetica Neue,Helvetica,Arial,sans-serif;color:#000000f2}.tk-meeting-spaces__header{display:flex;align-items:center;justify-content:space-between;gap:1rem}.tk-meeting-spaces__title{margin:0;font-size:1.125rem;font-weight:600}.tk-meeting-spaces__create-button{display:inline-flex;align-items:center;gap:.375rem;padding:.5rem 1rem;background:#000;color:#fff;border:none;border-radius:6px;font-family:inherit;font-size:.8125rem;font-weight:500;cursor:pointer}.tk-meeting-spaces__create-button:hover{background:#222}.tk-meeting-spaces__create-icon{font-size:1.125rem;height:1.125rem;width:1.125rem}.tk-meeting-spaces__toolbar{display:flex;align-items:center;gap:.75rem;margin:1.25rem 0 1rem}.tk-meeting-spaces__search{display:flex;align-items:center;gap:.5rem;flex:1;max-width:22rem;padding:.5rem .75rem;background:#fff;border:1px solid rgba(0,0,0,.12);border-radius:6px}.tk-meeting-spaces__search-icon{font-size:1.125rem;height:1.125rem;width:1.125rem;color:#0006}.tk-meeting-spaces__search-input{flex:1;border:none;outline:none;font-family:inherit;font-size:.8125rem;color:#000000f2}.tk-meeting-spaces__search-input::placeholder{color:#0006}.tk-meeting-spaces__filter-button{display:inline-flex;align-items:center;gap:.375rem;padding:.5rem .875rem;background:#fff;border:1px solid rgba(0,0,0,.12);border-radius:6px;font-family:inherit;font-size:.8125rem;font-weight:500;color:#000000f2;cursor:pointer}.tk-meeting-spaces__filter-button:hover{background:rgba(0,0,0,.03)}.tk-meeting-spaces__filter-icon{font-size:1rem;height:1rem;width:1rem;opacity:.6}.tk-meeting-spaces__count{margin-left:auto;font-size:.8125rem;color:#0009;white-space:nowrap}.tk-meeting-spaces__table{width:100%;border-collapse:collapse}.tk-meeting-spaces__table th{padding:.625rem .75rem;border-bottom:1px solid rgba(0,0,0,.12);text-align:left;font-size:.6875rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:#0009}.tk-meeting-spaces__table td{padding:.75rem;border-bottom:1px solid rgba(0,0,0,.12);font-size:.8125rem;color:#000000f2}.tk-meeting-spaces__table tbody tr:hover td{background:rgba(0,0,0,.02)}.tk-meeting-spaces__table tbody tr:last-child td{border-bottom:none}.tk-meeting-spaces__name-cell{display:flex;align-items:center;gap:.5rem}.tk-meeting-spaces__name-link{color:#0353a8;font-weight:500;text-decoration:none}.tk-meeting-spaces__name-link:hover{text-decoration:underline}.tk-meeting-spaces__badge{padding:.125rem .5rem;border-radius:999px;background:rgba(0,0,0,.06);font-size:.6875rem;font-weight:500;color:#0009;white-space:nowrap}.tk-meeting-spaces__empty{padding:1.5rem;text-align:center;color:#0009}.tk-meeting-spaces__footer{display:flex;align-items:center;justify-content:space-between;margin-top:1rem;font-size:.8125rem;color:#0009}.tk-meeting-spaces__pagination{display:flex;gap:1rem}.tk-meeting-spaces__pagination-button{background:none;border:none;padding:0;font-family:inherit;font-size:.8125rem;color:#0009;cursor:pointer}.tk-meeting-spaces__pagination-button:disabled{color:#0000004d;cursor:default}.tk-meeting-spaces__filter-backdrop{position:fixed;inset:0;z-index:1000;background-color:oklch(18% .01 260/20%)}.tk-meeting-spaces__filter-panel{position:fixed;top:0;right:0;bottom:0;z-index:1001;display:flex;flex-direction:column;width:22rem;max-width:100vw;background:#fff;border-left:1px solid rgba(0,0,0,.12);box-shadow:-4px 0 16px #00000014;font-family:Inter,Helvetica Neue,Helvetica,Arial,sans-serif;transform:translate(100%);transition:transform .1s ease;will-change:transform}.tk-meeting-spaces__filter-panel--open{transform:translate(0)}.tk-meeting-spaces__filter-panel-header{display:flex;align-items:center;justify-content:space-between;padding:1.25rem 1.5rem;border-bottom:1px solid rgba(0,0,0,.12)}.tk-meeting-spaces__filter-panel-title{margin:0;font-size:1rem;font-weight:600;color:#000000f2}.tk-meeting-spaces__filter-panel-close{display:inline-flex;align-items:center;justify-content:center;background:none;border:none;padding:0;color:#0009;cursor:pointer}.tk-meeting-spaces__filter-panel-close:hover{color:#000000f2}.tk-meeting-spaces__filter-panel-body{padding:1.5rem 1.5rem 0;overflow-y:auto}.tk-meeting-spaces__filter-field{display:flex;flex-direction:column;gap:.5rem;margin-bottom:1.5rem}.tk-meeting-spaces__filter-label{font-size:.8125rem;font-weight:500;color:#000000f2}.tk-meeting-spaces__filter-select-wrap{position:relative;display:flex;align-items:center}.tk-meeting-spaces__filter-select{width:100%;appearance:none;padding:.625rem 2rem .625rem .75rem;background:#fff;border:1px solid rgba(0,0,0,.12);border-radius:6px;font-family:inherit;font-size:.8125rem;color:#000000f2;cursor:pointer}.tk-meeting-spaces__filter-select:focus{outline:none;border-color:#0006}.tk-meeting-spaces__filter-select-icon{position:absolute;right:.5rem;font-size:1.125rem;height:1.125rem;width:1.125rem;color:#0006;pointer-events:none}.tk-meeting-spaces__filter-panel-footer{display:flex;align-items:center;justify-content:space-between;padding:0 1.5rem}.tk-meeting-spaces__filter-clear{background:none;border:none;padding:0;font-family:inherit;font-size:.813rem;font-weight:500;color:#000000f2;cursor:pointer;padding-inline:.75rem;height:2rem;border-radius:6px}.tk-meeting-spaces__filter-clear:hover{background-color:oklch(95.5% .005 260)}.tk-meeting-spaces__filter-done{background-color:#fff;border-radius:6px;font-weight:500;font-family:inherit;font-size:.813rem;cursor:pointer;border:1px solid oklch(92% .003 260);padding-inline:.75rem;height:2rem}.tk-meeting-spaces__filter-done:hover{background-color:oklch(95.5% .005 260)}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] });
|
|
57
|
+
MeetingSpacesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: MeetingSpacesComponent, selector: "tk-meeting-spaces", outputs: { createMeetingSpace: "createMeetingSpace", editMeetingSpace: "editMeetingSpace" }, ngImport: i0, template: "<div class=\"tk-meeting-spaces__header\">\r\n <h2 class=\"tk-meeting-spaces__title\">Meeting Spaces</h2>\r\n <button type=\"button\" class=\"tk-meeting-spaces__create-button\" (click)=\"onCreateMeetingSpace()\">\r\n <mat-icon class=\"tk-meeting-spaces__create-icon\">add</mat-icon>\r\n Create meeting space\r\n </button>\r\n</div>\r\n\r\n<div class=\"tk-meeting-spaces__toolbar\">\r\n <div class=\"tk-meeting-spaces__search\">\r\n <mat-icon class=\"tk-meeting-spaces__search-icon\">search</mat-icon>\r\n <input\r\n type=\"text\"\r\n class=\"tk-meeting-spaces__search-input\"\r\n placeholder=\"Search by Name, URI or Meeting ID\"\r\n [(ngModel)]=\"searchTerm\">\r\n </div>\r\n\r\n <button type=\"button\" class=\"tk-meeting-spaces__filter-button\" (click)=\"toggleFilterPanel()\">\r\n <img class=\"tk-meeting-spaces__filter-icon\" src=\"assets/icons/filter-regular.svg\" alt=\"filter_list\" title=\"filter_list\">\r\n Filter\r\n </button>\r\n\r\n <span class=\"tk-meeting-spaces__count\">{{ filteredMeetingSpaces.length }} spaces</span>\r\n</div>\r\n\r\n<table class=\"tk-meeting-spaces__table\">\r\n <thead>\r\n <tr>\r\n <th>Meeting Name</th>\r\n <th>URI</th>\r\n <th>Meeting ID</th>\r\n <th>Participants</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let space of filteredMeetingSpaces\">\r\n <td class=\"tk-meeting-spaces__name-cell\">\r\n <a href=\"javascript:void(0)\" class=\"tk-meeting-spaces__name-link\" (click)=\"onEditMeetingSpace(space)\">{{ space.name }}</a>\r\n <span *ngIf=\"space.managed\" class=\"tk-meeting-spaces__badge\">Managed</span>\r\n </td>\r\n <td>{{ space.uri }}</td>\r\n <td>{{ space.meetingId }}</td>\r\n <td>{{ space.participants }}</td>\r\n </tr>\r\n <tr *ngIf=\"!filteredMeetingSpaces.length\">\r\n <td colspan=\"4\" class=\"tk-meeting-spaces__empty\">No meeting spaces match your search.</td>\r\n </tr>\r\n </tbody>\r\n</table>\r\n\r\n<div class=\"tk-meeting-spaces__footer\">\r\n <span class=\"tk-meeting-spaces__footer-text\">\r\n Showing {{ filteredMeetingSpaces.length ? 1 : 0 }}-{{ filteredMeetingSpaces.length }} of {{ meetingSpaces.length }}\r\n </span>\r\n <div class=\"tk-meeting-spaces__pagination\">\r\n <button type=\"button\" class=\"tk-meeting-spaces__pagination-button\" disabled>Previous</button>\r\n <button type=\"button\" class=\"tk-meeting-spaces__pagination-button\" disabled>Next</button>\r\n </div>\r\n</div>\r\n\r\n<div\r\n class=\"tk-meeting-spaces__filter-backdrop\"\r\n *ngIf=\"isFilterPanelOpen\"\r\n (click)=\"closeFilterPanel()\">\r\n</div>\r\n\r\n<aside class=\"tk-meeting-spaces__filter-panel\" [class.tk-meeting-spaces__filter-panel--open]=\"isFilterPanelOpen\">\r\n <div class=\"tk-meeting-spaces__filter-panel-header\">\r\n <h3 class=\"tk-meeting-spaces__filter-panel-title\">Filter meeting spaces</h3>\r\n <button\r\n type=\"button\"\r\n class=\"tk-meeting-spaces__filter-panel-close\"\r\n aria-label=\"Close filter panel\"\r\n (click)=\"closeFilterPanel()\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </div>\r\n\r\n <div class=\"tk-meeting-spaces__filter-panel-body\">\r\n <div class=\"tk-meeting-spaces__filter-field\">\r\n <label class=\"tk-meeting-spaces__filter-label\" for=\"tk-meeting-spaces-filter-owner\">Owner</label>\r\n <div class=\"tk-meeting-spaces__filter-select-wrap\">\r\n <select id=\"tk-meeting-spaces-filter-owner\" class=\"tk-meeting-spaces__filter-select\" [(ngModel)]=\"filters.owner\">\r\n <option value=\"\">All owners</option>\r\n <option *ngFor=\"let owner of owners\" [value]=\"owner\">{{ owner }}</option>\r\n </select>\r\n <mat-icon class=\"tk-meeting-spaces__filter-select-icon\">expand_more</mat-icon>\r\n </div>\r\n </div>\r\n\r\n <div class=\"tk-meeting-spaces__filter-field\">\r\n <label class=\"tk-meeting-spaces__filter-label\" for=\"tk-meeting-spaces-filter-cluster\">Cluster</label>\r\n <div class=\"tk-meeting-spaces__filter-select-wrap\">\r\n <select id=\"tk-meeting-spaces-filter-cluster\" class=\"tk-meeting-spaces__filter-select\" [(ngModel)]=\"filters.cluster\">\r\n <option value=\"\">All clusters</option>\r\n <option *ngFor=\"let cluster of clusters\" [value]=\"cluster\">{{ cluster }}</option>\r\n </select>\r\n <mat-icon class=\"tk-meeting-spaces__filter-select-icon\">expand_more</mat-icon>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"tk-meeting-spaces__filter-panel-footer\">\r\n <button type=\"button\" class=\"tk-meeting-spaces__filter-clear\" (click)=\"clearFilters()\">Clear all</button>\r\n <button type=\"button\" class=\"tk-meeting-spaces__filter-done\" (click)=\"closeFilterPanel()\">Done</button>\r\n </div>\r\n</aside>\r\n", styles: [":host{font-family:Inter,Helvetica Neue,Helvetica,Arial,sans-serif;color:#000000f2}.tk-meeting-spaces__header{display:flex;align-items:center;justify-content:space-between;gap:1rem}.tk-meeting-spaces__title{margin:0;font-size:1.125rem;font-weight:600}.tk-meeting-spaces__create-button{display:inline-flex;align-items:center;gap:.375rem;padding:.5rem 1rem;background:#000;color:#fff;border:none;border-radius:6.25rem;font-family:inherit;font-size:.8125rem;font-weight:500;cursor:pointer}.tk-meeting-spaces__create-button:hover{background:#222}.tk-meeting-spaces__create-icon{font-size:1.125rem;height:1.125rem;width:1.125rem}.tk-meeting-spaces__toolbar{display:flex;align-items:center;gap:.75rem;margin:1.25rem 0 1rem}.tk-meeting-spaces__search{display:flex;align-items:center;gap:.5rem;flex:1;max-width:22rem;padding:.5rem .75rem;background:#fff;border:1px solid rgba(0,0,0,.12);border-radius:6px}.tk-meeting-spaces__search-icon{font-size:1.125rem;height:1.125rem;width:1.125rem;color:#0006}.tk-meeting-spaces__search-input{flex:1;border:none;outline:none;font-family:inherit;font-size:.8125rem;color:#000000f2}.tk-meeting-spaces__search-input::placeholder{color:#0006}.tk-meeting-spaces__filter-button{display:inline-flex;align-items:center;gap:.375rem;padding:.5rem .875rem;background:#fff;border:1px solid rgba(0,0,0,.12);border-radius:6px;font-family:inherit;font-size:.8125rem;font-weight:500;color:#000000f2;cursor:pointer}.tk-meeting-spaces__filter-button:hover{background:rgba(0,0,0,.03)}.tk-meeting-spaces__filter-icon{font-size:1rem;height:1rem;width:1rem;opacity:.6}.tk-meeting-spaces__count{margin-left:auto;font-size:.8125rem;color:#0009;white-space:nowrap}.tk-meeting-spaces__table{width:100%;border-collapse:collapse;font-family:Inter,sans-serif}.tk-meeting-spaces__table th{height:39px;padding:.5rem 1.5rem .5rem .75rem;background-color:#ededed;text-align:start;font-size:.75rem;font-weight:500;color:#000000b3;word-break:break-all;max-inline-size:100%;cursor:pointer}.tk-meeting-spaces__table th:hover{background-color:#dedede}.tk-meeting-spaces__table td{height:49px;padding:.5rem 1.5rem .5rem .75rem;box-shadow:inset 0 -1px #0003;background-color:#fff;text-align:start;font-size:.875rem;color:#000000f2;word-break:break-all;cursor:pointer;transition:background-color .2s,box-shadow .2s}.tk-meeting-spaces__table tbody tr:hover td{background:#ededed}.tk-meeting-spaces__name-cell{display:flex;align-items:center;gap:.5rem}.tk-meeting-spaces__name-link{color:#0353a8;font-weight:500;text-decoration:none}.tk-meeting-spaces__name-link:hover{text-decoration:underline}.tk-meeting-spaces__badge{padding:.125rem .5rem;border-radius:999px;background:rgba(0,0,0,.06);font-size:.6875rem;font-weight:500;color:#0009;white-space:nowrap}.tk-meeting-spaces__empty{padding:1.5rem;text-align:center;color:#0009}.tk-meeting-spaces__footer{display:flex;align-items:center;justify-content:space-between;margin-top:1rem;font-size:.8125rem;color:#0009}.tk-meeting-spaces__pagination{display:flex;gap:1rem}.tk-meeting-spaces__pagination-button{background:none;border:none;padding:0;font-family:inherit;font-size:.8125rem;color:#0009;cursor:pointer}.tk-meeting-spaces__pagination-button:disabled{color:#0000004d;cursor:default}.tk-meeting-spaces__filter-backdrop{position:fixed;inset:0;z-index:1000;background-color:oklch(18% .01 260/20%)}.tk-meeting-spaces__filter-panel{position:fixed;top:0;right:0;bottom:0;z-index:1001;display:flex;flex-direction:column;width:22rem;max-width:100vw;background:#fff;border-left:1px solid rgba(0,0,0,.12);box-shadow:-4px 0 16px #00000014;font-family:Inter,Helvetica Neue,Helvetica,Arial,sans-serif;transform:translate(100%);transition:transform .1s ease;will-change:transform}.tk-meeting-spaces__filter-panel--open{transform:translate(0)}.tk-meeting-spaces__filter-panel-header{display:flex;align-items:center;justify-content:space-between;padding:1.25rem 1.5rem;border-bottom:1px solid rgba(0,0,0,.12)}.tk-meeting-spaces__filter-panel-title{margin:0;font-size:1rem;font-weight:600;color:#000000f2}.tk-meeting-spaces__filter-panel-close{display:inline-flex;align-items:center;justify-content:center;background:none;border:none;padding:0;color:#0009;cursor:pointer}.tk-meeting-spaces__filter-panel-close:hover{color:#000000f2}.tk-meeting-spaces__filter-panel-body{padding:1.5rem 1.5rem 0;overflow-y:auto}.tk-meeting-spaces__filter-field{display:flex;flex-direction:column;gap:.5rem;margin-bottom:1.5rem}.tk-meeting-spaces__filter-label{font-size:.8125rem;font-weight:500;color:#000000f2}.tk-meeting-spaces__filter-select-wrap{position:relative;display:flex;align-items:center}.tk-meeting-spaces__filter-select{width:100%;appearance:none;padding:.625rem 2rem .625rem .75rem;background:#fff;border:1px solid rgba(0,0,0,.12);border-radius:6px;font-family:inherit;font-size:.8125rem;color:#000000f2;cursor:pointer}.tk-meeting-spaces__filter-select:focus{outline:none;border-color:#0006}.tk-meeting-spaces__filter-select-icon{position:absolute;right:.5rem;font-size:1.125rem;height:1.125rem;width:1.125rem;color:#0006;pointer-events:none}.tk-meeting-spaces__filter-panel-footer{display:flex;align-items:center;justify-content:space-between;padding:0 1.5rem}.tk-meeting-spaces__filter-clear{background:none;border:none;padding:0;font-family:inherit;font-size:.813rem;font-weight:500;color:#000000f2;cursor:pointer;padding-inline:.75rem;height:2rem;border-radius:6px}.tk-meeting-spaces__filter-clear:hover{background-color:oklch(95.5% .005 260)}.tk-meeting-spaces__filter-done{background-color:#fff;border-radius:6px;font-weight:500;font-family:inherit;font-size:.813rem;cursor:pointer;border:1px solid oklch(92% .003 260);padding-inline:.75rem;height:2rem}.tk-meeting-spaces__filter-done:hover{background-color:oklch(95.5% .005 260)}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] });
|
|
54
58
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MeetingSpacesComponent, decorators: [{
|
|
55
59
|
type: Component,
|
|
56
|
-
args: [{ selector: 'tk-meeting-spaces', template: "<div class=\"tk-meeting-spaces__header\">\n <h2 class=\"tk-meeting-spaces__title\">Meeting Spaces</h2>\n <button type=\"button\" class=\"tk-meeting-spaces__create-button\" (click)=\"onCreateMeetingSpace()\">\n <mat-icon class=\"tk-meeting-spaces__create-icon\">add</mat-icon>\n Create meeting space\n </button>\n</div>\n\n<div class=\"tk-meeting-spaces__toolbar\">\n <div class=\"tk-meeting-spaces__search\">\n <mat-icon class=\"tk-meeting-spaces__search-icon\">search</mat-icon>\n <input\n type=\"text\"\n class=\"tk-meeting-spaces__search-input\"\n placeholder=\"Search by Name, URI or Meeting ID\"\n [(ngModel)]=\"searchTerm\">\n </div>\n\n <button type=\"button\" class=\"tk-meeting-spaces__filter-button\" (click)=\"toggleFilterPanel()\">\n <img class=\"tk-meeting-spaces__filter-icon\" src=\"assets/icons/filter-regular.svg\" alt=\"filter_list\" title=\"filter_list\">\n Filter\n </button>\n\n <span class=\"tk-meeting-spaces__count\">{{ filteredMeetingSpaces.length }} spaces</span>\n</div>\n\n<table class=\"tk-meeting-spaces__table\">\n <thead>\n <tr>\n <th>Meeting Name</th>\n <th>URI</th>\n <th>Meeting ID</th>\n <th>Participants</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let space of filteredMeetingSpaces\">\n <td class=\"tk-meeting-spaces__name-cell\">\n <a href=\"javascript:void(0)\" class=\"tk-meeting-spaces__name-link\">{{ space.name }}</a>\n <span *ngIf=\"space.managed\" class=\"tk-meeting-spaces__badge\">Managed</span>\n </td>\n <td>{{ space.uri }}</td>\n <td>{{ space.meetingId }}</td>\n <td>{{ space.participants }}</td>\n </tr>\n <tr *ngIf=\"!filteredMeetingSpaces.length\">\n <td colspan=\"4\" class=\"tk-meeting-spaces__empty\">No meeting spaces match your search.</td>\n </tr>\n </tbody>\n</table>\n\n<div class=\"tk-meeting-spaces__footer\">\n <span class=\"tk-meeting-spaces__footer-text\">\n Showing {{ filteredMeetingSpaces.length ? 1 : 0 }}-{{ filteredMeetingSpaces.length }} of {{ meetingSpaces.length }}\n </span>\n <div class=\"tk-meeting-spaces__pagination\">\n <button type=\"button\" class=\"tk-meeting-spaces__pagination-button\" disabled>Previous</button>\n <button type=\"button\" class=\"tk-meeting-spaces__pagination-button\" disabled>Next</button>\n </div>\n</div>\n\n<div\n class=\"tk-meeting-spaces__filter-backdrop\"\n *ngIf=\"isFilterPanelOpen\"\n (click)=\"closeFilterPanel()\">\n</div>\n\n<aside class=\"tk-meeting-spaces__filter-panel\" [class.tk-meeting-spaces__filter-panel--open]=\"isFilterPanelOpen\">\n <div class=\"tk-meeting-spaces__filter-panel-header\">\n <h3 class=\"tk-meeting-spaces__filter-panel-title\">Filter meeting spaces</h3>\n <button\n type=\"button\"\n class=\"tk-meeting-spaces__filter-panel-close\"\n aria-label=\"Close filter panel\"\n (click)=\"closeFilterPanel()\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n\n <div class=\"tk-meeting-spaces__filter-panel-body\">\n <div class=\"tk-meeting-spaces__filter-field\">\n <label class=\"tk-meeting-spaces__filter-label\" for=\"tk-meeting-spaces-filter-owner\">Owner</label>\n <div class=\"tk-meeting-spaces__filter-select-wrap\">\n <select id=\"tk-meeting-spaces-filter-owner\" class=\"tk-meeting-spaces__filter-select\" [(ngModel)]=\"filters.owner\">\n <option value=\"\">All owners</option>\n <option *ngFor=\"let owner of owners\" [value]=\"owner\">{{ owner }}</option>\n </select>\n <mat-icon class=\"tk-meeting-spaces__filter-select-icon\">expand_more</mat-icon>\n </div>\n </div>\n\n <div class=\"tk-meeting-spaces__filter-field\">\n <label class=\"tk-meeting-spaces__filter-label\" for=\"tk-meeting-spaces-filter-cluster\">Cluster</label>\n <div class=\"tk-meeting-spaces__filter-select-wrap\">\n <select id=\"tk-meeting-spaces-filter-cluster\" class=\"tk-meeting-spaces__filter-select\" [(ngModel)]=\"filters.cluster\">\n <option value=\"\">All clusters</option>\n <option *ngFor=\"let cluster of clusters\" [value]=\"cluster\">{{ cluster }}</option>\n </select>\n <mat-icon class=\"tk-meeting-spaces__filter-select-icon\">expand_more</mat-icon>\n </div>\n </div>\n </div>\n\n <div class=\"tk-meeting-spaces__filter-panel-footer\">\n <button type=\"button\" class=\"tk-meeting-spaces__filter-clear\" (click)=\"clearFilters()\">Clear all</button>\n <button type=\"button\" class=\"tk-meeting-spaces__filter-done\" (click)=\"closeFilterPanel()\">Done</button>\n </div>\n</aside>\n", styles: [":host{font-family:Inter,Helvetica Neue,Helvetica,Arial,sans-serif;color:#000000f2}.tk-meeting-spaces__header{display:flex;align-items:center;justify-content:space-between;gap:1rem}.tk-meeting-spaces__title{margin:0;font-size:1.125rem;font-weight:600}.tk-meeting-spaces__create-button{display:inline-flex;align-items:center;gap:.375rem;padding:.5rem 1rem;background:#000;color:#fff;border:none;border-radius:6px;font-family:inherit;font-size:.8125rem;font-weight:500;cursor:pointer}.tk-meeting-spaces__create-button:hover{background:#222}.tk-meeting-spaces__create-icon{font-size:1.125rem;height:1.125rem;width:1.125rem}.tk-meeting-spaces__toolbar{display:flex;align-items:center;gap:.75rem;margin:1.25rem 0 1rem}.tk-meeting-spaces__search{display:flex;align-items:center;gap:.5rem;flex:1;max-width:22rem;padding:.5rem .75rem;background:#fff;border:1px solid rgba(0,0,0,.12);border-radius:6px}.tk-meeting-spaces__search-icon{font-size:1.125rem;height:1.125rem;width:1.125rem;color:#0006}.tk-meeting-spaces__search-input{flex:1;border:none;outline:none;font-family:inherit;font-size:.8125rem;color:#000000f2}.tk-meeting-spaces__search-input::placeholder{color:#0006}.tk-meeting-spaces__filter-button{display:inline-flex;align-items:center;gap:.375rem;padding:.5rem .875rem;background:#fff;border:1px solid rgba(0,0,0,.12);border-radius:6px;font-family:inherit;font-size:.8125rem;font-weight:500;color:#000000f2;cursor:pointer}.tk-meeting-spaces__filter-button:hover{background:rgba(0,0,0,.03)}.tk-meeting-spaces__filter-icon{font-size:1rem;height:1rem;width:1rem;opacity:.6}.tk-meeting-spaces__count{margin-left:auto;font-size:.8125rem;color:#0009;white-space:nowrap}.tk-meeting-spaces__table{width:100%;border-collapse:collapse}.tk-meeting-spaces__table th{padding:.625rem .75rem;border-bottom:1px solid rgba(0,0,0,.12);text-align:left;font-size:.6875rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:#0009}.tk-meeting-spaces__table td{padding:.75rem;border-bottom:1px solid rgba(0,0,0,.12);font-size:.8125rem;color:#000000f2}.tk-meeting-spaces__table tbody tr:hover td{background:rgba(0,0,0,.02)}.tk-meeting-spaces__table tbody tr:last-child td{border-bottom:none}.tk-meeting-spaces__name-cell{display:flex;align-items:center;gap:.5rem}.tk-meeting-spaces__name-link{color:#0353a8;font-weight:500;text-decoration:none}.tk-meeting-spaces__name-link:hover{text-decoration:underline}.tk-meeting-spaces__badge{padding:.125rem .5rem;border-radius:999px;background:rgba(0,0,0,.06);font-size:.6875rem;font-weight:500;color:#0009;white-space:nowrap}.tk-meeting-spaces__empty{padding:1.5rem;text-align:center;color:#0009}.tk-meeting-spaces__footer{display:flex;align-items:center;justify-content:space-between;margin-top:1rem;font-size:.8125rem;color:#0009}.tk-meeting-spaces__pagination{display:flex;gap:1rem}.tk-meeting-spaces__pagination-button{background:none;border:none;padding:0;font-family:inherit;font-size:.8125rem;color:#0009;cursor:pointer}.tk-meeting-spaces__pagination-button:disabled{color:#0000004d;cursor:default}.tk-meeting-spaces__filter-backdrop{position:fixed;inset:0;z-index:1000;background-color:oklch(18% .01 260/20%)}.tk-meeting-spaces__filter-panel{position:fixed;top:0;right:0;bottom:0;z-index:1001;display:flex;flex-direction:column;width:22rem;max-width:100vw;background:#fff;border-left:1px solid rgba(0,0,0,.12);box-shadow:-4px 0 16px #00000014;font-family:Inter,Helvetica Neue,Helvetica,Arial,sans-serif;transform:translate(100%);transition:transform .1s ease;will-change:transform}.tk-meeting-spaces__filter-panel--open{transform:translate(0)}.tk-meeting-spaces__filter-panel-header{display:flex;align-items:center;justify-content:space-between;padding:1.25rem 1.5rem;border-bottom:1px solid rgba(0,0,0,.12)}.tk-meeting-spaces__filter-panel-title{margin:0;font-size:1rem;font-weight:600;color:#000000f2}.tk-meeting-spaces__filter-panel-close{display:inline-flex;align-items:center;justify-content:center;background:none;border:none;padding:0;color:#0009;cursor:pointer}.tk-meeting-spaces__filter-panel-close:hover{color:#000000f2}.tk-meeting-spaces__filter-panel-body{padding:1.5rem 1.5rem 0;overflow-y:auto}.tk-meeting-spaces__filter-field{display:flex;flex-direction:column;gap:.5rem;margin-bottom:1.5rem}.tk-meeting-spaces__filter-label{font-size:.8125rem;font-weight:500;color:#000000f2}.tk-meeting-spaces__filter-select-wrap{position:relative;display:flex;align-items:center}.tk-meeting-spaces__filter-select{width:100%;appearance:none;padding:.625rem 2rem .625rem .75rem;background:#fff;border:1px solid rgba(0,0,0,.12);border-radius:6px;font-family:inherit;font-size:.8125rem;color:#000000f2;cursor:pointer}.tk-meeting-spaces__filter-select:focus{outline:none;border-color:#0006}.tk-meeting-spaces__filter-select-icon{position:absolute;right:.5rem;font-size:1.125rem;height:1.125rem;width:1.125rem;color:#0006;pointer-events:none}.tk-meeting-spaces__filter-panel-footer{display:flex;align-items:center;justify-content:space-between;padding:0 1.5rem}.tk-meeting-spaces__filter-clear{background:none;border:none;padding:0;font-family:inherit;font-size:.813rem;font-weight:500;color:#000000f2;cursor:pointer;padding-inline:.75rem;height:2rem;border-radius:6px}.tk-meeting-spaces__filter-clear:hover{background-color:oklch(95.5% .005 260)}.tk-meeting-spaces__filter-done{background-color:#fff;border-radius:6px;font-weight:500;font-family:inherit;font-size:.813rem;cursor:pointer;border:1px solid oklch(92% .003 260);padding-inline:.75rem;height:2rem}.tk-meeting-spaces__filter-done:hover{background-color:oklch(95.5% .005 260)}\n"] }]
|
|
60
|
+
args: [{ selector: 'tk-meeting-spaces', template: "<div class=\"tk-meeting-spaces__header\">\r\n <h2 class=\"tk-meeting-spaces__title\">Meeting Spaces</h2>\r\n <button type=\"button\" class=\"tk-meeting-spaces__create-button\" (click)=\"onCreateMeetingSpace()\">\r\n <mat-icon class=\"tk-meeting-spaces__create-icon\">add</mat-icon>\r\n Create meeting space\r\n </button>\r\n</div>\r\n\r\n<div class=\"tk-meeting-spaces__toolbar\">\r\n <div class=\"tk-meeting-spaces__search\">\r\n <mat-icon class=\"tk-meeting-spaces__search-icon\">search</mat-icon>\r\n <input\r\n type=\"text\"\r\n class=\"tk-meeting-spaces__search-input\"\r\n placeholder=\"Search by Name, URI or Meeting ID\"\r\n [(ngModel)]=\"searchTerm\">\r\n </div>\r\n\r\n <button type=\"button\" class=\"tk-meeting-spaces__filter-button\" (click)=\"toggleFilterPanel()\">\r\n <img class=\"tk-meeting-spaces__filter-icon\" src=\"assets/icons/filter-regular.svg\" alt=\"filter_list\" title=\"filter_list\">\r\n Filter\r\n </button>\r\n\r\n <span class=\"tk-meeting-spaces__count\">{{ filteredMeetingSpaces.length }} spaces</span>\r\n</div>\r\n\r\n<table class=\"tk-meeting-spaces__table\">\r\n <thead>\r\n <tr>\r\n <th>Meeting Name</th>\r\n <th>URI</th>\r\n <th>Meeting ID</th>\r\n <th>Participants</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let space of filteredMeetingSpaces\">\r\n <td class=\"tk-meeting-spaces__name-cell\">\r\n <a href=\"javascript:void(0)\" class=\"tk-meeting-spaces__name-link\" (click)=\"onEditMeetingSpace(space)\">{{ space.name }}</a>\r\n <span *ngIf=\"space.managed\" class=\"tk-meeting-spaces__badge\">Managed</span>\r\n </td>\r\n <td>{{ space.uri }}</td>\r\n <td>{{ space.meetingId }}</td>\r\n <td>{{ space.participants }}</td>\r\n </tr>\r\n <tr *ngIf=\"!filteredMeetingSpaces.length\">\r\n <td colspan=\"4\" class=\"tk-meeting-spaces__empty\">No meeting spaces match your search.</td>\r\n </tr>\r\n </tbody>\r\n</table>\r\n\r\n<div class=\"tk-meeting-spaces__footer\">\r\n <span class=\"tk-meeting-spaces__footer-text\">\r\n Showing {{ filteredMeetingSpaces.length ? 1 : 0 }}-{{ filteredMeetingSpaces.length }} of {{ meetingSpaces.length }}\r\n </span>\r\n <div class=\"tk-meeting-spaces__pagination\">\r\n <button type=\"button\" class=\"tk-meeting-spaces__pagination-button\" disabled>Previous</button>\r\n <button type=\"button\" class=\"tk-meeting-spaces__pagination-button\" disabled>Next</button>\r\n </div>\r\n</div>\r\n\r\n<div\r\n class=\"tk-meeting-spaces__filter-backdrop\"\r\n *ngIf=\"isFilterPanelOpen\"\r\n (click)=\"closeFilterPanel()\">\r\n</div>\r\n\r\n<aside class=\"tk-meeting-spaces__filter-panel\" [class.tk-meeting-spaces__filter-panel--open]=\"isFilterPanelOpen\">\r\n <div class=\"tk-meeting-spaces__filter-panel-header\">\r\n <h3 class=\"tk-meeting-spaces__filter-panel-title\">Filter meeting spaces</h3>\r\n <button\r\n type=\"button\"\r\n class=\"tk-meeting-spaces__filter-panel-close\"\r\n aria-label=\"Close filter panel\"\r\n (click)=\"closeFilterPanel()\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </div>\r\n\r\n <div class=\"tk-meeting-spaces__filter-panel-body\">\r\n <div class=\"tk-meeting-spaces__filter-field\">\r\n <label class=\"tk-meeting-spaces__filter-label\" for=\"tk-meeting-spaces-filter-owner\">Owner</label>\r\n <div class=\"tk-meeting-spaces__filter-select-wrap\">\r\n <select id=\"tk-meeting-spaces-filter-owner\" class=\"tk-meeting-spaces__filter-select\" [(ngModel)]=\"filters.owner\">\r\n <option value=\"\">All owners</option>\r\n <option *ngFor=\"let owner of owners\" [value]=\"owner\">{{ owner }}</option>\r\n </select>\r\n <mat-icon class=\"tk-meeting-spaces__filter-select-icon\">expand_more</mat-icon>\r\n </div>\r\n </div>\r\n\r\n <div class=\"tk-meeting-spaces__filter-field\">\r\n <label class=\"tk-meeting-spaces__filter-label\" for=\"tk-meeting-spaces-filter-cluster\">Cluster</label>\r\n <div class=\"tk-meeting-spaces__filter-select-wrap\">\r\n <select id=\"tk-meeting-spaces-filter-cluster\" class=\"tk-meeting-spaces__filter-select\" [(ngModel)]=\"filters.cluster\">\r\n <option value=\"\">All clusters</option>\r\n <option *ngFor=\"let cluster of clusters\" [value]=\"cluster\">{{ cluster }}</option>\r\n </select>\r\n <mat-icon class=\"tk-meeting-spaces__filter-select-icon\">expand_more</mat-icon>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"tk-meeting-spaces__filter-panel-footer\">\r\n <button type=\"button\" class=\"tk-meeting-spaces__filter-clear\" (click)=\"clearFilters()\">Clear all</button>\r\n <button type=\"button\" class=\"tk-meeting-spaces__filter-done\" (click)=\"closeFilterPanel()\">Done</button>\r\n </div>\r\n</aside>\r\n", styles: [":host{font-family:Inter,Helvetica Neue,Helvetica,Arial,sans-serif;color:#000000f2}.tk-meeting-spaces__header{display:flex;align-items:center;justify-content:space-between;gap:1rem}.tk-meeting-spaces__title{margin:0;font-size:1.125rem;font-weight:600}.tk-meeting-spaces__create-button{display:inline-flex;align-items:center;gap:.375rem;padding:.5rem 1rem;background:#000;color:#fff;border:none;border-radius:6.25rem;font-family:inherit;font-size:.8125rem;font-weight:500;cursor:pointer}.tk-meeting-spaces__create-button:hover{background:#222}.tk-meeting-spaces__create-icon{font-size:1.125rem;height:1.125rem;width:1.125rem}.tk-meeting-spaces__toolbar{display:flex;align-items:center;gap:.75rem;margin:1.25rem 0 1rem}.tk-meeting-spaces__search{display:flex;align-items:center;gap:.5rem;flex:1;max-width:22rem;padding:.5rem .75rem;background:#fff;border:1px solid rgba(0,0,0,.12);border-radius:6px}.tk-meeting-spaces__search-icon{font-size:1.125rem;height:1.125rem;width:1.125rem;color:#0006}.tk-meeting-spaces__search-input{flex:1;border:none;outline:none;font-family:inherit;font-size:.8125rem;color:#000000f2}.tk-meeting-spaces__search-input::placeholder{color:#0006}.tk-meeting-spaces__filter-button{display:inline-flex;align-items:center;gap:.375rem;padding:.5rem .875rem;background:#fff;border:1px solid rgba(0,0,0,.12);border-radius:6px;font-family:inherit;font-size:.8125rem;font-weight:500;color:#000000f2;cursor:pointer}.tk-meeting-spaces__filter-button:hover{background:rgba(0,0,0,.03)}.tk-meeting-spaces__filter-icon{font-size:1rem;height:1rem;width:1rem;opacity:.6}.tk-meeting-spaces__count{margin-left:auto;font-size:.8125rem;color:#0009;white-space:nowrap}.tk-meeting-spaces__table{width:100%;border-collapse:collapse;font-family:Inter,sans-serif}.tk-meeting-spaces__table th{height:39px;padding:.5rem 1.5rem .5rem .75rem;background-color:#ededed;text-align:start;font-size:.75rem;font-weight:500;color:#000000b3;word-break:break-all;max-inline-size:100%;cursor:pointer}.tk-meeting-spaces__table th:hover{background-color:#dedede}.tk-meeting-spaces__table td{height:49px;padding:.5rem 1.5rem .5rem .75rem;box-shadow:inset 0 -1px #0003;background-color:#fff;text-align:start;font-size:.875rem;color:#000000f2;word-break:break-all;cursor:pointer;transition:background-color .2s,box-shadow .2s}.tk-meeting-spaces__table tbody tr:hover td{background:#ededed}.tk-meeting-spaces__name-cell{display:flex;align-items:center;gap:.5rem}.tk-meeting-spaces__name-link{color:#0353a8;font-weight:500;text-decoration:none}.tk-meeting-spaces__name-link:hover{text-decoration:underline}.tk-meeting-spaces__badge{padding:.125rem .5rem;border-radius:999px;background:rgba(0,0,0,.06);font-size:.6875rem;font-weight:500;color:#0009;white-space:nowrap}.tk-meeting-spaces__empty{padding:1.5rem;text-align:center;color:#0009}.tk-meeting-spaces__footer{display:flex;align-items:center;justify-content:space-between;margin-top:1rem;font-size:.8125rem;color:#0009}.tk-meeting-spaces__pagination{display:flex;gap:1rem}.tk-meeting-spaces__pagination-button{background:none;border:none;padding:0;font-family:inherit;font-size:.8125rem;color:#0009;cursor:pointer}.tk-meeting-spaces__pagination-button:disabled{color:#0000004d;cursor:default}.tk-meeting-spaces__filter-backdrop{position:fixed;inset:0;z-index:1000;background-color:oklch(18% .01 260/20%)}.tk-meeting-spaces__filter-panel{position:fixed;top:0;right:0;bottom:0;z-index:1001;display:flex;flex-direction:column;width:22rem;max-width:100vw;background:#fff;border-left:1px solid rgba(0,0,0,.12);box-shadow:-4px 0 16px #00000014;font-family:Inter,Helvetica Neue,Helvetica,Arial,sans-serif;transform:translate(100%);transition:transform .1s ease;will-change:transform}.tk-meeting-spaces__filter-panel--open{transform:translate(0)}.tk-meeting-spaces__filter-panel-header{display:flex;align-items:center;justify-content:space-between;padding:1.25rem 1.5rem;border-bottom:1px solid rgba(0,0,0,.12)}.tk-meeting-spaces__filter-panel-title{margin:0;font-size:1rem;font-weight:600;color:#000000f2}.tk-meeting-spaces__filter-panel-close{display:inline-flex;align-items:center;justify-content:center;background:none;border:none;padding:0;color:#0009;cursor:pointer}.tk-meeting-spaces__filter-panel-close:hover{color:#000000f2}.tk-meeting-spaces__filter-panel-body{padding:1.5rem 1.5rem 0;overflow-y:auto}.tk-meeting-spaces__filter-field{display:flex;flex-direction:column;gap:.5rem;margin-bottom:1.5rem}.tk-meeting-spaces__filter-label{font-size:.8125rem;font-weight:500;color:#000000f2}.tk-meeting-spaces__filter-select-wrap{position:relative;display:flex;align-items:center}.tk-meeting-spaces__filter-select{width:100%;appearance:none;padding:.625rem 2rem .625rem .75rem;background:#fff;border:1px solid rgba(0,0,0,.12);border-radius:6px;font-family:inherit;font-size:.8125rem;color:#000000f2;cursor:pointer}.tk-meeting-spaces__filter-select:focus{outline:none;border-color:#0006}.tk-meeting-spaces__filter-select-icon{position:absolute;right:.5rem;font-size:1.125rem;height:1.125rem;width:1.125rem;color:#0006;pointer-events:none}.tk-meeting-spaces__filter-panel-footer{display:flex;align-items:center;justify-content:space-between;padding:0 1.5rem}.tk-meeting-spaces__filter-clear{background:none;border:none;padding:0;font-family:inherit;font-size:.813rem;font-weight:500;color:#000000f2;cursor:pointer;padding-inline:.75rem;height:2rem;border-radius:6px}.tk-meeting-spaces__filter-clear:hover{background-color:oklch(95.5% .005 260)}.tk-meeting-spaces__filter-done{background-color:#fff;border-radius:6px;font-weight:500;font-family:inherit;font-size:.813rem;cursor:pointer;border:1px solid oklch(92% .003 260);padding-inline:.75rem;height:2rem}.tk-meeting-spaces__filter-done:hover{background-color:oklch(95.5% .005 260)}\n"] }]
|
|
57
61
|
}], ctorParameters: function () { return [{ type: i1.MeetingSpacesService }]; }, propDecorators: { createMeetingSpace: [{
|
|
58
62
|
type: Output
|
|
63
|
+
}], editMeetingSpace: [{
|
|
64
|
+
type: Output
|
|
59
65
|
}] } });
|
|
60
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVldGluZy1zcGFjZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVraS93aWRnZXRzL21lZXRpbmdzL3NyYy9jb21wb25lbnRzL21lZXRpbmctc3BhY2VzL21lZXRpbmctc3BhY2VzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1a2kvd2lkZ2V0cy9tZWV0aW5ncy9zcmMvY29tcG9uZW50cy9tZWV0aW5nLXNwYWNlcy9tZWV0aW5nLXNwYWNlcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7OztBQVN4RSxNQUFNLE9BQU8sc0JBQXNCO0lBWWpDLFlBQW9CLG9CQUEwQztRQUExQyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBWHBELHVCQUFrQixHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFFeEQsa0JBQWEsR0FBbUIsRUFBRSxDQUFDO1FBQ25DLGVBQVUsR0FBRyxFQUFFLENBQUM7UUFFaEIsc0JBQWlCLEdBQUcsS0FBSyxDQUFDO1FBQzFCLFlBQU8sR0FBRztZQUNSLEtBQUssRUFBRSxFQUFFO1lBQ1QsT0FBTyxFQUFFLEVBQUU7U0FDWixDQUFDO0lBRWdFLENBQUM7SUFFbkUsUUFBUTtRQUNOLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsRUFBRTtZQUN2RSxJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztRQUNyQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxJQUFJLE1BQU07UUFDUixPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2xGLENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDVixPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3BGLENBQUM7SUFFRCxJQUFJLHFCQUFxQjtRQUN2QixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2xELE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FDdkMsQ0FBQyxDQUFDLElBQUk7WUFDSixLQUFLLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7WUFDdkMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1lBQ3RDLEtBQUssQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQy9DLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO1lBQzNELENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUMsT0FBTyxLQUFLLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQ2xFLENBQUM7SUFDSixDQUFDO0lBRUQsb0JBQW9CO1FBQ2xCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsSUFBSSxDQUFDLGlCQUFpQixHQUFHLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDO0lBQ25ELENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQzVDLENBQUM7O29IQXREVSxzQkFBc0I7d0dBQXRCLHNCQUFzQixnSENUbkMsaWlKQTRHQTs0RkRuR2Esc0JBQXNCO2tCQUxsQyxTQUFTOytCQUNFLG1CQUFtQjsyR0FLbkIsa0JBQWtCO3NCQUEzQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNZWV0aW5nU3BhY2VzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL21lZXRpbmctc3BhY2VzLnNlcnZpY2UnO1xuaW1wb3J0IHsgTWVldGluZ1NwYWNlIH0gZnJvbSAnLi4vLi4vdHlwZXMvbWVldGluZy1zcGFjZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RrLW1lZXRpbmctc3BhY2VzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21lZXRpbmctc3BhY2VzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbWVldGluZy1zcGFjZXMuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgTWVldGluZ1NwYWNlc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBPdXRwdXQoKSBjcmVhdGVNZWV0aW5nU3BhY2UgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgbWVldGluZ1NwYWNlczogTWVldGluZ1NwYWNlW10gPSBbXTtcbiAgc2VhcmNoVGVybSA9ICcnO1xuXG4gIGlzRmlsdGVyUGFuZWxPcGVuID0gZmFsc2U7XG4gIGZpbHRlcnMgPSB7XG4gICAgb3duZXI6ICcnLFxuICAgIGNsdXN0ZXI6ICcnLFxuICB9O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbWVldGluZ1NwYWNlc1NlcnZpY2U6IE1lZXRpbmdTcGFjZXNTZXJ2aWNlKSB7IH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLm1lZXRpbmdTcGFjZXNTZXJ2aWNlLmZldGNoTWVldGluZ1NwYWNlcygpLnN1YnNjcmliZShtZWV0aW5nU3BhY2VzID0+IHtcbiAgICAgIHRoaXMubWVldGluZ1NwYWNlcyA9IG1lZXRpbmdTcGFjZXM7XG4gICAgfSk7XG4gIH1cblxuICBnZXQgb3duZXJzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbShuZXcgU2V0KHRoaXMubWVldGluZ1NwYWNlcy5tYXAoc3BhY2UgPT4gc3BhY2Uub3duZXIpKSkuc29ydCgpO1xuICB9XG5cbiAgZ2V0IGNsdXN0ZXJzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbShuZXcgU2V0KHRoaXMubWVldGluZ1NwYWNlcy5tYXAoc3BhY2UgPT4gc3BhY2UuY2x1c3RlcikpKS5zb3J0KCk7XG4gIH1cblxuICBnZXQgZmlsdGVyZWRNZWV0aW5nU3BhY2VzKCk6IE1lZXRpbmdTcGFjZVtdIHtcbiAgICBjb25zdCB0ZXJtID0gdGhpcy5zZWFyY2hUZXJtLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuICAgIHJldHVybiB0aGlzLm1lZXRpbmdTcGFjZXMuZmlsdGVyKHNwYWNlID0+XG4gICAgICAoIXRlcm0gfHxcbiAgICAgICAgc3BhY2UubmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRlcm0pIHx8XG4gICAgICAgIHNwYWNlLnVyaS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRlcm0pIHx8XG4gICAgICAgIHNwYWNlLm1lZXRpbmdJZC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRlcm0pKSAmJlxuICAgICAgKCF0aGlzLmZpbHRlcnMub3duZXIgfHwgc3BhY2Uub3duZXIgPT09IHRoaXMuZmlsdGVycy5vd25lcikgJiZcbiAgICAgICghdGhpcy5maWx0ZXJzLmNsdXN0ZXIgfHwgc3BhY2UuY2x1c3RlciA9PT0gdGhpcy5maWx0ZXJzLmNsdXN0ZXIpXG4gICAgKTtcbiAgfVxuXG4gIG9uQ3JlYXRlTWVldGluZ1NwYWNlKCk6IHZvaWQge1xuICAgIHRoaXMuY3JlYXRlTWVldGluZ1NwYWNlLmVtaXQoKTtcbiAgfVxuXG4gIHRvZ2dsZUZpbHRlclBhbmVsKCk6IHZvaWQge1xuICAgIHRoaXMuaXNGaWx0ZXJQYW5lbE9wZW4gPSAhdGhpcy5pc0ZpbHRlclBhbmVsT3BlbjtcbiAgfVxuXG4gIGNsb3NlRmlsdGVyUGFuZWwoKTogdm9pZCB7XG4gICAgdGhpcy5pc0ZpbHRlclBhbmVsT3BlbiA9IGZhbHNlO1xuICB9XG5cbiAgY2xlYXJGaWx0ZXJzKCk6IHZvaWQge1xuICAgIHRoaXMuZmlsdGVycyA9IHsgb3duZXI6ICcnLCBjbHVzdGVyOiAnJyB9O1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwidGstbWVldGluZy1zcGFjZXNfX2hlYWRlclwiPlxuICA8aDIgY2xhc3M9XCJ0ay1tZWV0aW5nLXNwYWNlc19fdGl0bGVcIj5NZWV0aW5nIFNwYWNlczwvaDI+XG4gIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwidGstbWVldGluZy1zcGFjZXNfX2NyZWF0ZS1idXR0b25cIiAoY2xpY2spPVwib25DcmVhdGVNZWV0aW5nU3BhY2UoKVwiPlxuICAgIDxtYXQtaWNvbiBjbGFzcz1cInRrLW1lZXRpbmctc3BhY2VzX19jcmVhdGUtaWNvblwiPmFkZDwvbWF0LWljb24+XG4gICAgQ3JlYXRlIG1lZXRpbmcgc3BhY2VcbiAgPC9idXR0b24+XG48L2Rpdj5cblxuPGRpdiBjbGFzcz1cInRrLW1lZXRpbmctc3BhY2VzX190b29sYmFyXCI+XG4gIDxkaXYgY2xhc3M9XCJ0ay1tZWV0aW5nLXNwYWNlc19fc2VhcmNoXCI+XG4gICAgPG1hdC1pY29uIGNsYXNzPVwidGstbWVldGluZy1zcGFjZXNfX3NlYXJjaC1pY29uXCI+c2VhcmNoPC9tYXQtaWNvbj5cbiAgICA8aW5wdXRcbiAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgIGNsYXNzPVwidGstbWVldGluZy1zcGFjZXNfX3NlYXJjaC1pbnB1dFwiXG4gICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaCBieSBOYW1lLCBVUkkgb3IgTWVldGluZyBJRFwiXG4gICAgICBbKG5nTW9kZWwpXT1cInNlYXJjaFRlcm1cIj5cbiAgPC9kaXY+XG5cbiAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJ0ay1tZWV0aW5nLXNwYWNlc19fZmlsdGVyLWJ1dHRvblwiIChjbGljayk9XCJ0b2dnbGVGaWx0ZXJQYW5lbCgpXCI+XG4gICAgPGltZyBjbGFzcz1cInRrLW1lZXRpbmctc3BhY2VzX19maWx0ZXItaWNvblwiIHNyYz1cImFzc2V0cy9pY29ucy9maWx0ZXItcmVndWxhci5zdmdcIiBhbHQ9XCJmaWx0ZXJfbGlzdFwiIHRpdGxlPVwiZmlsdGVyX2xpc3RcIj5cbiAgICBGaWx0ZXJcbiAgPC9idXR0b24+XG5cbiAgPHNwYW4gY2xhc3M9XCJ0ay1tZWV0aW5nLXNwYWNlc19fY291bnRcIj57eyBmaWx0ZXJlZE1lZXRpbmdTcGFjZXMubGVuZ3RoIH19IHNwYWNlczwvc3Bhbj5cbjwvZGl2PlxuXG48dGFibGUgY2xhc3M9XCJ0ay1tZWV0aW5nLXNwYWNlc19fdGFibGVcIj5cbiAgPHRoZWFkPlxuICAgIDx0cj5cbiAgICAgIDx0aD5NZWV0aW5nIE5hbWU8L3RoPlxuICAgICAgPHRoPlVSSTwvdGg+XG4gICAgICA8dGg+TWVldGluZyBJRDwvdGg+XG4gICAgICA8dGg+UGFydGljaXBhbnRzPC90aD5cbiAgICA8L3RyPlxuICA8L3RoZWFkPlxuICA8dGJvZHk+XG4gICAgPHRyICpuZ0Zvcj1cImxldCBzcGFjZSBvZiBmaWx0ZXJlZE1lZXRpbmdTcGFjZXNcIj5cbiAgICAgIDx0ZCBjbGFzcz1cInRrLW1lZXRpbmctc3BhY2VzX19uYW1lLWNlbGxcIj5cbiAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiIGNsYXNzPVwidGstbWVldGluZy1zcGFjZXNfX25hbWUtbGlua1wiPnt7IHNwYWNlLm5hbWUgfX08L2E+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwic3BhY2UubWFuYWdlZFwiIGNsYXNzPVwidGstbWVldGluZy1zcGFjZXNfX2JhZGdlXCI+TWFuYWdlZDwvc3Bhbj5cbiAgICAgIDwvdGQ+XG4gICAgICA8dGQ+e3sgc3BhY2UudXJpIH19PC90ZD5cbiAgICAgIDx0ZD57eyBzcGFjZS5tZWV0aW5nSWQgfX08L3RkPlxuICAgICAgPHRkPnt7IHNwYWNlLnBhcnRpY2lwYW50cyB9fTwvdGQ+XG4gICAgPC90cj5cbiAgICA8dHIgKm5nSWY9XCIhZmlsdGVyZWRNZWV0aW5nU3BhY2VzLmxlbmd0aFwiPlxuICAgICAgPHRkIGNvbHNwYW49XCI0XCIgY2xhc3M9XCJ0ay1tZWV0aW5nLXNwYWNlc19fZW1wdHlcIj5ObyBtZWV0aW5nIHNwYWNlcyBtYXRjaCB5b3VyIHNlYXJjaC48L3RkPlxuICAgIDwvdHI+XG4gIDwvdGJvZHk+XG48L3RhYmxlPlxuXG48ZGl2IGNsYXNzPVwidGstbWVldGluZy1zcGFjZXNfX2Zvb3RlclwiPlxuICA8c3BhbiBjbGFzcz1cInRrLW1lZXRpbmctc3BhY2VzX19mb290ZXItdGV4dFwiPlxuICAgIFNob3dpbmcge3sgZmlsdGVyZWRNZWV0aW5nU3BhY2VzLmxlbmd0aCA/IDEgOiAwIH19LXt7IGZpbHRlcmVkTWVldGluZ1NwYWNlcy5sZW5ndGggfX0gb2Yge3sgbWVldGluZ1NwYWNlcy5sZW5ndGggfX1cbiAgPC9zcGFuPlxuICA8ZGl2IGNsYXNzPVwidGstbWVldGluZy1zcGFjZXNfX3BhZ2luYXRpb25cIj5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInRrLW1lZXRpbmctc3BhY2VzX19wYWdpbmF0aW9uLWJ1dHRvblwiIGRpc2FibGVkPlByZXZpb3VzPC9idXR0b24+XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJ0ay1tZWV0aW5nLXNwYWNlc19fcGFnaW5hdGlvbi1idXR0b25cIiBkaXNhYmxlZD5OZXh0PC9idXR0b24+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXZcbiAgY2xhc3M9XCJ0ay1tZWV0aW5nLXNwYWNlc19fZmlsdGVyLWJhY2tkcm9wXCJcbiAgKm5nSWY9XCJpc0ZpbHRlclBhbmVsT3BlblwiXG4gIChjbGljayk9XCJjbG9zZUZpbHRlclBhbmVsKClcIj5cbjwvZGl2PlxuXG48YXNpZGUgY2xhc3M9XCJ0ay1tZWV0aW5nLXNwYWNlc19fZmlsdGVyLXBhbmVsXCIgW2NsYXNzLnRrLW1lZXRpbmctc3BhY2VzX19maWx0ZXItcGFuZWwtLW9wZW5dPVwiaXNGaWx0ZXJQYW5lbE9wZW5cIj5cbiAgPGRpdiBjbGFzcz1cInRrLW1lZXRpbmctc3BhY2VzX19maWx0ZXItcGFuZWwtaGVhZGVyXCI+XG4gICAgPGgzIGNsYXNzPVwidGstbWVldGluZy1zcGFjZXNfX2ZpbHRlci1wYW5lbC10aXRsZVwiPkZpbHRlciBtZWV0aW5nIHNwYWNlczwvaDM+XG4gICAgPGJ1dHRvblxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBjbGFzcz1cInRrLW1lZXRpbmctc3BhY2VzX19maWx0ZXItcGFuZWwtY2xvc2VcIlxuICAgICAgYXJpYS1sYWJlbD1cIkNsb3NlIGZpbHRlciBwYW5lbFwiXG4gICAgICAoY2xpY2spPVwiY2xvc2VGaWx0ZXJQYW5lbCgpXCI+XG4gICAgICA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwidGstbWVldGluZy1zcGFjZXNfX2ZpbHRlci1wYW5lbC1ib2R5XCI+XG4gICAgPGRpdiBjbGFzcz1cInRrLW1lZXRpbmctc3BhY2VzX19maWx0ZXItZmllbGRcIj5cbiAgICAgIDxsYWJlbCBjbGFzcz1cInRrLW1lZXRpbmctc3BhY2VzX19maWx0ZXItbGFiZWxcIiBmb3I9XCJ0ay1tZWV0aW5nLXNwYWNlcy1maWx0ZXItb3duZXJcIj5Pd25lcjwvbGFiZWw+XG4gICAgICA8ZGl2IGNsYXNzPVwidGstbWVldGluZy1zcGFjZXNfX2ZpbHRlci1zZWxlY3Qtd3JhcFwiPlxuICAgICAgICA8c2VsZWN0IGlkPVwidGstbWVldGluZy1zcGFjZXMtZmlsdGVyLW93bmVyXCIgY2xhc3M9XCJ0ay1tZWV0aW5nLXNwYWNlc19fZmlsdGVyLXNlbGVjdFwiIFsobmdNb2RlbCldPVwiZmlsdGVycy5vd25lclwiPlxuICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJcIj5BbGwgb3duZXJzPC9vcHRpb24+XG4gICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgb3duZXIgb2Ygb3duZXJzXCIgW3ZhbHVlXT1cIm93bmVyXCI+e3sgb3duZXIgfX08L29wdGlvbj5cbiAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cInRrLW1lZXRpbmctc3BhY2VzX19maWx0ZXItc2VsZWN0LWljb25cIj5leHBhbmRfbW9yZTwvbWF0LWljb24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJ0ay1tZWV0aW5nLXNwYWNlc19fZmlsdGVyLWZpZWxkXCI+XG4gICAgICA8bGFiZWwgY2xhc3M9XCJ0ay1tZWV0aW5nLXNwYWNlc19fZmlsdGVyLWxhYmVsXCIgZm9yPVwidGstbWVldGluZy1zcGFjZXMtZmlsdGVyLWNsdXN0ZXJcIj5DbHVzdGVyPC9sYWJlbD5cbiAgICAgIDxkaXYgY2xhc3M9XCJ0ay1tZWV0aW5nLXNwYWNlc19fZmlsdGVyLXNlbGVjdC13cmFwXCI+XG4gICAgICAgIDxzZWxlY3QgaWQ9XCJ0ay1tZWV0aW5nLXNwYWNlcy1maWx0ZXItY2x1c3RlclwiIGNsYXNzPVwidGstbWVldGluZy1zcGFjZXNfX2ZpbHRlci1zZWxlY3RcIiBbKG5nTW9kZWwpXT1cImZpbHRlcnMuY2x1c3RlclwiPlxuICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJcIj5BbGwgY2x1c3RlcnM8L29wdGlvbj5cbiAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBjbHVzdGVyIG9mIGNsdXN0ZXJzXCIgW3ZhbHVlXT1cImNsdXN0ZXJcIj57eyBjbHVzdGVyIH19PC9vcHRpb24+XG4gICAgICAgIDwvc2VsZWN0PlxuICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJ0ay1tZWV0aW5nLXNwYWNlc19fZmlsdGVyLXNlbGVjdC1pY29uXCI+ZXhwYW5kX21vcmU8L21hdC1pY29uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJ0ay1tZWV0aW5nLXNwYWNlc19fZmlsdGVyLXBhbmVsLWZvb3RlclwiPlxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwidGstbWVldGluZy1zcGFjZXNfX2ZpbHRlci1jbGVhclwiIChjbGljayk9XCJjbGVhckZpbHRlcnMoKVwiPkNsZWFyIGFsbDwvYnV0dG9uPlxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwidGstbWVldGluZy1zcGFjZXNfX2ZpbHRlci1kb25lXCIgKGNsaWNrKT1cImNsb3NlRmlsdGVyUGFuZWwoKVwiPkRvbmU8L2J1dHRvbj5cbiAgPC9kaXY+XG48L2FzaWRlPlxuIl19
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVldGluZy1zcGFjZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVraS93aWRnZXRzL21lZXRpbmdzL3NyYy9jb21wb25lbnRzL21lZXRpbmctc3BhY2VzL21lZXRpbmctc3BhY2VzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1a2kvd2lkZ2V0cy9tZWV0aW5ncy9zcmMvY29tcG9uZW50cy9tZWV0aW5nLXNwYWNlcy9tZWV0aW5nLXNwYWNlcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7OztBQVN4RSxNQUFNLE9BQU8sc0JBQXNCO0lBYWpDLFlBQW9CLG9CQUEwQztRQUExQyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBWnBELHVCQUFrQixHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDOUMscUJBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUV4RCxrQkFBYSxHQUFtQixFQUFFLENBQUM7UUFDbkMsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUVoQixzQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFDMUIsWUFBTyxHQUFHO1lBQ1IsS0FBSyxFQUFFLEVBQUU7WUFDVCxPQUFPLEVBQUUsRUFBRTtTQUNaLENBQUM7SUFFZ0UsQ0FBQztJQUVuRSxRQUFRO1FBQ04sSUFBSSxDQUFDLG9CQUFvQixDQUFDLGtCQUFrQixFQUFFLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxFQUFFO1lBQ3ZFLElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO1FBQ3JDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELElBQUksTUFBTTtRQUNSLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDbEYsQ0FBQztJQUVELElBQUksUUFBUTtRQUNWLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDcEYsQ0FBQztJQUVELElBQUkscUJBQXFCO1FBQ3ZCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbEQsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUN2QyxDQUFDLENBQUMsSUFBSTtZQUNKLEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztZQUN2QyxLQUFLLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7WUFDdEMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDL0MsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7WUFDM0QsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxJQUFJLEtBQUssQ0FBQyxPQUFPLEtBQUssSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FDbEUsQ0FBQztJQUNKLENBQUM7SUFFRCxvQkFBb0I7UUFDbEIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxLQUFtQjtRQUNwQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsSUFBSSxDQUFDLGlCQUFpQixHQUFHLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDO0lBQ25ELENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQzVDLENBQUM7O29IQTNEVSxzQkFBc0I7d0dBQXRCLHNCQUFzQixzSkNUbkMsK3hKQTRHQTs0RkRuR2Esc0JBQXNCO2tCQUxsQyxTQUFTOytCQUNFLG1CQUFtQjsyR0FLbkIsa0JBQWtCO3NCQUEzQixNQUFNO2dCQUNHLGdCQUFnQjtzQkFBekIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNZWV0aW5nU3BhY2VzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL21lZXRpbmctc3BhY2VzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNZWV0aW5nU3BhY2UgfSBmcm9tICcuLi8uLi90eXBlcy9tZWV0aW5nLXNwYWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAndGstbWVldGluZy1zcGFjZXMnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9tZWV0aW5nLXNwYWNlcy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbWVldGluZy1zcGFjZXMuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIE1lZXRpbmdTcGFjZXNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBPdXRwdXQoKSBjcmVhdGVNZWV0aW5nU3BhY2UgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcbiAgQE91dHB1dCgpIGVkaXRNZWV0aW5nU3BhY2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuXHJcbiAgbWVldGluZ1NwYWNlczogTWVldGluZ1NwYWNlW10gPSBbXTtcclxuICBzZWFyY2hUZXJtID0gJyc7XHJcblxyXG4gIGlzRmlsdGVyUGFuZWxPcGVuID0gZmFsc2U7XHJcbiAgZmlsdGVycyA9IHtcclxuICAgIG93bmVyOiAnJyxcclxuICAgIGNsdXN0ZXI6ICcnLFxyXG4gIH07XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbWVldGluZ1NwYWNlc1NlcnZpY2U6IE1lZXRpbmdTcGFjZXNTZXJ2aWNlKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLm1lZXRpbmdTcGFjZXNTZXJ2aWNlLmZldGNoTWVldGluZ1NwYWNlcygpLnN1YnNjcmliZShtZWV0aW5nU3BhY2VzID0+IHtcclxuICAgICAgdGhpcy5tZWV0aW5nU3BhY2VzID0gbWVldGluZ1NwYWNlcztcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0IG93bmVycygpOiBzdHJpbmdbXSB7XHJcbiAgICByZXR1cm4gQXJyYXkuZnJvbShuZXcgU2V0KHRoaXMubWVldGluZ1NwYWNlcy5tYXAoc3BhY2UgPT4gc3BhY2Uub3duZXIpKSkuc29ydCgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGNsdXN0ZXJzKCk6IHN0cmluZ1tdIHtcclxuICAgIHJldHVybiBBcnJheS5mcm9tKG5ldyBTZXQodGhpcy5tZWV0aW5nU3BhY2VzLm1hcChzcGFjZSA9PiBzcGFjZS5jbHVzdGVyKSkpLnNvcnQoKTtcclxuICB9XHJcblxyXG4gIGdldCBmaWx0ZXJlZE1lZXRpbmdTcGFjZXMoKTogTWVldGluZ1NwYWNlW10ge1xyXG4gICAgY29uc3QgdGVybSA9IHRoaXMuc2VhcmNoVGVybS50cmltKCkudG9Mb3dlckNhc2UoKTtcclxuICAgIHJldHVybiB0aGlzLm1lZXRpbmdTcGFjZXMuZmlsdGVyKHNwYWNlID0+XHJcbiAgICAgICghdGVybSB8fFxyXG4gICAgICAgIHNwYWNlLm5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0ZXJtKSB8fFxyXG4gICAgICAgIHNwYWNlLnVyaS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRlcm0pIHx8XHJcbiAgICAgICAgc3BhY2UubWVldGluZ0lkLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGVybSkpICYmXHJcbiAgICAgICghdGhpcy5maWx0ZXJzLm93bmVyIHx8IHNwYWNlLm93bmVyID09PSB0aGlzLmZpbHRlcnMub3duZXIpICYmXHJcbiAgICAgICghdGhpcy5maWx0ZXJzLmNsdXN0ZXIgfHwgc3BhY2UuY2x1c3RlciA9PT0gdGhpcy5maWx0ZXJzLmNsdXN0ZXIpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgb25DcmVhdGVNZWV0aW5nU3BhY2UoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNyZWF0ZU1lZXRpbmdTcGFjZS5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBvbkVkaXRNZWV0aW5nU3BhY2Uoc3BhY2U6IE1lZXRpbmdTcGFjZSk6IHZvaWQge1xyXG4gICAgdGhpcy5lZGl0TWVldGluZ1NwYWNlLmVtaXQoc3BhY2UuaWQpO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlRmlsdGVyUGFuZWwoKTogdm9pZCB7XHJcbiAgICB0aGlzLmlzRmlsdGVyUGFuZWxPcGVuID0gIXRoaXMuaXNGaWx0ZXJQYW5lbE9wZW47XHJcbiAgfVxyXG5cclxuICBjbG9zZUZpbHRlclBhbmVsKCk6IHZvaWQge1xyXG4gICAgdGhpcy5pc0ZpbHRlclBhbmVsT3BlbiA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgY2xlYXJGaWx0ZXJzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5maWx0ZXJzID0geyBvd25lcjogJycsIGNsdXN0ZXI6ICcnIH07XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJ0ay1tZWV0aW5nLXNwYWNlc19faGVhZGVyXCI+XHJcbiAgPGgyIGNsYXNzPVwidGstbWVldGluZy1zcGFjZXNfX3RpdGxlXCI+TWVldGluZyBTcGFjZXM8L2gyPlxyXG4gIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwidGstbWVldGluZy1zcGFjZXNfX2NyZWF0ZS1idXR0b25cIiAoY2xpY2spPVwib25DcmVhdGVNZWV0aW5nU3BhY2UoKVwiPlxyXG4gICAgPG1hdC1pY29uIGNsYXNzPVwidGstbWVldGluZy1zcGFjZXNfX2NyZWF0ZS1pY29uXCI+YWRkPC9tYXQtaWNvbj5cclxuICAgIENyZWF0ZSBtZWV0aW5nIHNwYWNlXHJcbiAgPC9idXR0b24+XHJcbjwvZGl2PlxyXG5cclxuPGRpdiBjbGFzcz1cInRrLW1lZXRpbmctc3BhY2VzX190b29sYmFyXCI+XHJcbiAgPGRpdiBjbGFzcz1cInRrLW1lZXRpbmctc3BhY2VzX19zZWFyY2hcIj5cclxuICAgIDxtYXQtaWNvbiBjbGFzcz1cInRrLW1lZXRpbmctc3BhY2VzX19zZWFyY2gtaWNvblwiPnNlYXJjaDwvbWF0LWljb24+XHJcbiAgICA8aW5wdXRcclxuICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICBjbGFzcz1cInRrLW1lZXRpbmctc3BhY2VzX19zZWFyY2gtaW5wdXRcIlxyXG4gICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaCBieSBOYW1lLCBVUkkgb3IgTWVldGluZyBJRFwiXHJcbiAgICAgIFsobmdNb2RlbCldPVwic2VhcmNoVGVybVwiPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInRrLW1lZXRpbmctc3BhY2VzX19maWx0ZXItYnV0dG9uXCIgKGNsaWNrKT1cInRvZ2dsZUZpbHRlclBhbmVsKClcIj5cclxuICAgIDxpbWcgY2xhc3M9XCJ0ay1tZWV0aW5nLXNwYWNlc19fZmlsdGVyLWljb25cIiBzcmM9XCJhc3NldHMvaWNvbnMvZmlsdGVyLXJlZ3VsYXIuc3ZnXCIgYWx0PVwiZmlsdGVyX2xpc3RcIiB0aXRsZT1cImZpbHRlcl9saXN0XCI+XHJcbiAgICBGaWx0ZXJcclxuICA8L2J1dHRvbj5cclxuXHJcbiAgPHNwYW4gY2xhc3M9XCJ0ay1tZWV0aW5nLXNwYWNlc19fY291bnRcIj57eyBmaWx0ZXJlZE1lZXRpbmdTcGFjZXMubGVuZ3RoIH19IHNwYWNlczwvc3Bhbj5cclxuPC9kaXY+XHJcblxyXG48dGFibGUgY2xhc3M9XCJ0ay1tZWV0aW5nLXNwYWNlc19fdGFibGVcIj5cclxuICA8dGhlYWQ+XHJcbiAgICA8dHI+XHJcbiAgICAgIDx0aD5NZWV0aW5nIE5hbWU8L3RoPlxyXG4gICAgICA8dGg+VVJJPC90aD5cclxuICAgICAgPHRoPk1lZXRpbmcgSUQ8L3RoPlxyXG4gICAgICA8dGg+UGFydGljaXBhbnRzPC90aD5cclxuICAgIDwvdHI+XHJcbiAgPC90aGVhZD5cclxuICA8dGJvZHk+XHJcbiAgICA8dHIgKm5nRm9yPVwibGV0IHNwYWNlIG9mIGZpbHRlcmVkTWVldGluZ1NwYWNlc1wiPlxyXG4gICAgICA8dGQgY2xhc3M9XCJ0ay1tZWV0aW5nLXNwYWNlc19fbmFtZS1jZWxsXCI+XHJcbiAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiIGNsYXNzPVwidGstbWVldGluZy1zcGFjZXNfX25hbWUtbGlua1wiIChjbGljayk9XCJvbkVkaXRNZWV0aW5nU3BhY2Uoc3BhY2UpXCI+e3sgc3BhY2UubmFtZSB9fTwvYT5cclxuICAgICAgICA8c3BhbiAqbmdJZj1cInNwYWNlLm1hbmFnZWRcIiBjbGFzcz1cInRrLW1lZXRpbmctc3BhY2VzX19iYWRnZVwiPk1hbmFnZWQ8L3NwYW4+XHJcbiAgICAgIDwvdGQ+XHJcbiAgICAgIDx0ZD57eyBzcGFjZS51cmkgfX08L3RkPlxyXG4gICAgICA8dGQ+e3sgc3BhY2UubWVldGluZ0lkIH19PC90ZD5cclxuICAgICAgPHRkPnt7IHNwYWNlLnBhcnRpY2lwYW50cyB9fTwvdGQ+XHJcbiAgICA8L3RyPlxyXG4gICAgPHRyICpuZ0lmPVwiIWZpbHRlcmVkTWVldGluZ1NwYWNlcy5sZW5ndGhcIj5cclxuICAgICAgPHRkIGNvbHNwYW49XCI0XCIgY2xhc3M9XCJ0ay1tZWV0aW5nLXNwYWNlc19fZW1wdHlcIj5ObyBtZWV0aW5nIHNwYWNlcyBtYXRjaCB5b3VyIHNlYXJjaC48L3RkPlxyXG4gICAgPC90cj5cclxuICA8L3Rib2R5PlxyXG48L3RhYmxlPlxyXG5cclxuPGRpdiBjbGFzcz1cInRrLW1lZXRpbmctc3BhY2VzX19mb290ZXJcIj5cclxuICA8c3BhbiBjbGFzcz1cInRrLW1lZXRpbmctc3BhY2VzX19mb290ZXItdGV4dFwiPlxyXG4gICAgU2hvd2luZyB7eyBmaWx0ZXJlZE1lZXRpbmdTcGFjZXMubGVuZ3RoID8gMSA6IDAgfX0te3sgZmlsdGVyZWRNZWV0aW5nU3BhY2VzLmxlbmd0aCB9fSBvZiB7eyBtZWV0aW5nU3BhY2VzLmxlbmd0aCB9fVxyXG4gIDwvc3Bhbj5cclxuICA8ZGl2IGNsYXNzPVwidGstbWVldGluZy1zcGFjZXNfX3BhZ2luYXRpb25cIj5cclxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwidGstbWVldGluZy1zcGFjZXNfX3BhZ2luYXRpb24tYnV0dG9uXCIgZGlzYWJsZWQ+UHJldmlvdXM8L2J1dHRvbj5cclxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwidGstbWVldGluZy1zcGFjZXNfX3BhZ2luYXRpb24tYnV0dG9uXCIgZGlzYWJsZWQ+TmV4dDwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjxkaXZcclxuICBjbGFzcz1cInRrLW1lZXRpbmctc3BhY2VzX19maWx0ZXItYmFja2Ryb3BcIlxyXG4gICpuZ0lmPVwiaXNGaWx0ZXJQYW5lbE9wZW5cIlxyXG4gIChjbGljayk9XCJjbG9zZUZpbHRlclBhbmVsKClcIj5cclxuPC9kaXY+XHJcblxyXG48YXNpZGUgY2xhc3M9XCJ0ay1tZWV0aW5nLXNwYWNlc19fZmlsdGVyLXBhbmVsXCIgW2NsYXNzLnRrLW1lZXRpbmctc3BhY2VzX19maWx0ZXItcGFuZWwtLW9wZW5dPVwiaXNGaWx0ZXJQYW5lbE9wZW5cIj5cclxuICA8ZGl2IGNsYXNzPVwidGstbWVldGluZy1zcGFjZXNfX2ZpbHRlci1wYW5lbC1oZWFkZXJcIj5cclxuICAgIDxoMyBjbGFzcz1cInRrLW1lZXRpbmctc3BhY2VzX19maWx0ZXItcGFuZWwtdGl0bGVcIj5GaWx0ZXIgbWVldGluZyBzcGFjZXM8L2gzPlxyXG4gICAgPGJ1dHRvblxyXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgY2xhc3M9XCJ0ay1tZWV0aW5nLXNwYWNlc19fZmlsdGVyLXBhbmVsLWNsb3NlXCJcclxuICAgICAgYXJpYS1sYWJlbD1cIkNsb3NlIGZpbHRlciBwYW5lbFwiXHJcbiAgICAgIChjbGljayk9XCJjbG9zZUZpbHRlclBhbmVsKClcIj5cclxuICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2IGNsYXNzPVwidGstbWVldGluZy1zcGFjZXNfX2ZpbHRlci1wYW5lbC1ib2R5XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwidGstbWVldGluZy1zcGFjZXNfX2ZpbHRlci1maWVsZFwiPlxyXG4gICAgICA8bGFiZWwgY2xhc3M9XCJ0ay1tZWV0aW5nLXNwYWNlc19fZmlsdGVyLWxhYmVsXCIgZm9yPVwidGstbWVldGluZy1zcGFjZXMtZmlsdGVyLW93bmVyXCI+T3duZXI8L2xhYmVsPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidGstbWVldGluZy1zcGFjZXNfX2ZpbHRlci1zZWxlY3Qtd3JhcFwiPlxyXG4gICAgICAgIDxzZWxlY3QgaWQ9XCJ0ay1tZWV0aW5nLXNwYWNlcy1maWx0ZXItb3duZXJcIiBjbGFzcz1cInRrLW1lZXRpbmctc3BhY2VzX19maWx0ZXItc2VsZWN0XCIgWyhuZ01vZGVsKV09XCJmaWx0ZXJzLm93bmVyXCI+XHJcbiAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiXCI+QWxsIG93bmVyczwvb3B0aW9uPlxyXG4gICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgb3duZXIgb2Ygb3duZXJzXCIgW3ZhbHVlXT1cIm93bmVyXCI+e3sgb3duZXIgfX08L29wdGlvbj5cclxuICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJ0ay1tZWV0aW5nLXNwYWNlc19fZmlsdGVyLXNlbGVjdC1pY29uXCI+ZXhwYW5kX21vcmU8L21hdC1pY29uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJ0ay1tZWV0aW5nLXNwYWNlc19fZmlsdGVyLWZpZWxkXCI+XHJcbiAgICAgIDxsYWJlbCBjbGFzcz1cInRrLW1lZXRpbmctc3BhY2VzX19maWx0ZXItbGFiZWxcIiBmb3I9XCJ0ay1tZWV0aW5nLXNwYWNlcy1maWx0ZXItY2x1c3RlclwiPkNsdXN0ZXI8L2xhYmVsPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidGstbWVldGluZy1zcGFjZXNfX2ZpbHRlci1zZWxlY3Qtd3JhcFwiPlxyXG4gICAgICAgIDxzZWxlY3QgaWQ9XCJ0ay1tZWV0aW5nLXNwYWNlcy1maWx0ZXItY2x1c3RlclwiIGNsYXNzPVwidGstbWVldGluZy1zcGFjZXNfX2ZpbHRlci1zZWxlY3RcIiBbKG5nTW9kZWwpXT1cImZpbHRlcnMuY2x1c3RlclwiPlxyXG4gICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIlwiPkFsbCBjbHVzdGVyczwvb3B0aW9uPlxyXG4gICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgY2x1c3RlciBvZiBjbHVzdGVyc1wiIFt2YWx1ZV09XCJjbHVzdGVyXCI+e3sgY2x1c3RlciB9fTwvb3B0aW9uPlxyXG4gICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cInRrLW1lZXRpbmctc3BhY2VzX19maWx0ZXItc2VsZWN0LWljb25cIj5leHBhbmRfbW9yZTwvbWF0LWljb24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJ0ay1tZWV0aW5nLXNwYWNlc19fZmlsdGVyLXBhbmVsLWZvb3RlclwiPlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJ0ay1tZWV0aW5nLXNwYWNlc19fZmlsdGVyLWNsZWFyXCIgKGNsaWNrKT1cImNsZWFyRmlsdGVycygpXCI+Q2xlYXIgYWxsPC9idXR0b24+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInRrLW1lZXRpbmctc3BhY2VzX19maWx0ZXItZG9uZVwiIChjbGljayk9XCJjbG9zZUZpbHRlclBhbmVsKClcIj5Eb25lPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbjwvYXNpZGU+XHJcbiJdfQ==
|