@vendasta/meetings 1.6.0 → 1.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/_internal/enums/index.mjs +2 -2
- package/esm2020/lib/_internal/google-meet.api.service.mjs +7 -8
- package/esm2020/lib/_internal/interfaces/index.mjs +1 -1
- package/esm2020/lib/_internal/interfaces/meeting-external.interface.mjs +1 -1
- package/esm2020/lib/_internal/interfaces/meeting-guest.interface.mjs +1 -1
- package/esm2020/lib/_internal/interfaces/meeting-host.interface.mjs +1 -1
- package/esm2020/lib/_internal/interfaces/shared.interface.mjs +1 -1
- package/esm2020/lib/_internal/meeting-external.api.service.mjs +7 -8
- package/esm2020/lib/_internal/meeting-guest.api.service.mjs +7 -8
- package/esm2020/lib/_internal/meeting-host.api.service.mjs +13 -9
- package/esm2020/lib/_internal/meeting-source-api.api.service.mjs +7 -8
- package/esm2020/lib/_internal/objects/index.mjs +4 -4
- package/esm2020/lib/_internal/objects/meeting-external.mjs +2 -2
- package/esm2020/lib/_internal/objects/meeting-guest.mjs +2 -2
- package/esm2020/lib/_internal/objects/meeting-host.mjs +51 -8
- package/esm2020/lib/_internal/objects/shared.mjs +2 -3
- package/esm2020/lib/_internal/zoom.api.service.mjs +7 -8
- package/esm2020/lib/host/host.service.mjs +27 -2
- package/fesm2015/vendasta-meetings.mjs +284 -212
- package/fesm2015/vendasta-meetings.mjs.map +1 -1
- package/fesm2020/vendasta-meetings.mjs +284 -212
- package/fesm2020/vendasta-meetings.mjs.map +1 -1
- package/lib/_internal/enums/index.d.ts +1 -1
- package/lib/_internal/google-meet.api.service.d.ts +2 -5
- package/lib/_internal/interfaces/index.d.ts +3 -3
- package/lib/_internal/interfaces/meeting-external.interface.d.ts +1 -1
- package/lib/_internal/interfaces/meeting-guest.interface.d.ts +1 -1
- package/lib/_internal/interfaces/meeting-host.interface.d.ts +10 -4
- package/lib/_internal/interfaces/shared.interface.d.ts +1 -2
- package/lib/_internal/meeting-external.api.service.d.ts +3 -5
- package/lib/_internal/meeting-guest.api.service.d.ts +3 -5
- package/lib/_internal/meeting-host.api.service.d.ts +6 -7
- package/lib/_internal/meeting-source-api.api.service.d.ts +2 -5
- package/lib/_internal/objects/index.d.ts +3 -3
- package/lib/_internal/objects/meeting-external.d.ts +1 -1
- package/lib/_internal/objects/meeting-guest.d.ts +1 -1
- package/lib/_internal/objects/meeting-host.d.ts +20 -8
- package/lib/_internal/objects/shared.d.ts +1 -2
- package/lib/_internal/zoom.api.service.d.ts +2 -5
- package/lib/host/host.service.d.ts +7 -0
- package/package.json +1 -1
|
@@ -7,15 +7,14 @@
|
|
|
7
7
|
import { Injectable } from '@angular/core';
|
|
8
8
|
import { MeetingSourceListRequest, MeetingSourceListResponse, } from './objects/';
|
|
9
9
|
import { HttpHeaders, HttpClient } from '@angular/common/http';
|
|
10
|
+
import { inject } from '@angular/core';
|
|
10
11
|
import { HostService } from '../_generated/host.service';
|
|
11
12
|
import { map } from 'rxjs/operators';
|
|
12
13
|
import * as i0 from "@angular/core";
|
|
13
|
-
import * as i1 from "@angular/common/http";
|
|
14
|
-
import * as i2 from "../_generated/host.service";
|
|
15
14
|
export class MeetingSourceAPIApiService {
|
|
16
|
-
constructor(
|
|
17
|
-
this.
|
|
18
|
-
this.
|
|
15
|
+
constructor() {
|
|
16
|
+
this.hostService = inject(HostService);
|
|
17
|
+
this.http = inject(HttpClient);
|
|
19
18
|
this._host = this.hostService.hostWithScheme;
|
|
20
19
|
}
|
|
21
20
|
apiOptions() {
|
|
@@ -32,10 +31,10 @@ export class MeetingSourceAPIApiService {
|
|
|
32
31
|
.pipe(map(resp => MeetingSourceListResponse.fromProto(resp)));
|
|
33
32
|
}
|
|
34
33
|
}
|
|
35
|
-
MeetingSourceAPIApiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: MeetingSourceAPIApiService, deps: [
|
|
34
|
+
MeetingSourceAPIApiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: MeetingSourceAPIApiService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
36
35
|
MeetingSourceAPIApiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: MeetingSourceAPIApiService, providedIn: 'root' });
|
|
37
36
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: MeetingSourceAPIApiService, decorators: [{
|
|
38
37
|
type: Injectable,
|
|
39
38
|
args: [{ providedIn: 'root' }]
|
|
40
|
-
}]
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
39
|
+
}] });
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVldGluZy1zb3VyY2UtYXBpLmFwaS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbWVldGluZ3Nfc2RrL3NyYy9saWIvX2ludGVybmFsL21lZXRpbmctc291cmNlLWFwaS5hcGkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxvQ0FBb0M7QUFDcEMsMkJBQTJCO0FBQzNCLGdCQUFnQjtBQUNoQixFQUFFO0FBQ0YsZUFBZTtBQUNmLG9DQUFvQztBQUNwQyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFDQyx3QkFBd0IsRUFDeEIseUJBQXlCLEdBQ2hDLE1BQU0sWUFBWSxDQUFDO0FBS3BCLE9BQU8sRUFBQyxXQUFXLEVBQUUsVUFBVSxFQUFlLE1BQU0sc0JBQXNCLENBQUM7QUFDM0UsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNyQyxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFFdkQsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDOztBQUduQyxNQUFNLE9BQU8sMEJBQTBCO0lBRHZDO1FBRXFCLGdCQUFXLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2xDLFNBQUksR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbkMsVUFBSyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDO0tBbUJuRDtJQWpCVyxVQUFVO1FBQ2QsT0FBTztZQUNILE9BQU8sRUFBRSxJQUFJLFdBQVcsQ0FBQztnQkFDckIsY0FBYyxFQUFFLGtCQUFrQjthQUNyQyxDQUFDO1lBQ0YsZUFBZSxFQUFFLElBQUk7U0FDeEIsQ0FBQztJQUNOLENBQUM7SUFFRCxJQUFJLENBQUMsQ0FBK0Q7UUFDaEUsTUFBTSxPQUFPLEdBQUcsQ0FBNEIsQ0FBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBNEIsQ0FBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLHdCQUF3QixDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzVILE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQXFDLElBQUksQ0FBQyxLQUFLLEdBQUcsb0NBQW9DLEVBQUUsT0FBTyxDQUFDLFNBQVMsRUFBRSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQzthQUMvSSxJQUFJLENBQ0QsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMseUJBQXlCLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQ3pELENBQUM7SUFDVixDQUFDOzt1SEFwQlEsMEJBQTBCOzJIQUExQiwwQkFBMEIsY0FEZCxNQUFNOzJGQUNsQiwwQkFBMEI7a0JBRHRDLFVBQVU7bUJBQUMsRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4vLyBDb2RlIGdlbmVyYXRlZCBieSBzZGtnZW5cbi8vIERPIE5PVCBFRElUIS5cbi8vXG4vLyBBUEkgU2VydmljZS5cbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgICAgIE1lZXRpbmdTb3VyY2VMaXN0UmVxdWVzdCxcbiAgICAgICAgTWVldGluZ1NvdXJjZUxpc3RSZXNwb25zZSxcbn0gZnJvbSAnLi9vYmplY3RzLyc7XG5pbXBvcnQge1xuICAgICAgICBNZWV0aW5nU291cmNlTGlzdFJlcXVlc3RJbnRlcmZhY2UsXG4gICAgICAgIE1lZXRpbmdTb3VyY2VMaXN0UmVzcG9uc2VJbnRlcmZhY2UsXG59IGZyb20gJy4vaW50ZXJmYWNlcy8nO1xuaW1wb3J0IHtIdHRwSGVhZGVycywgSHR0cENsaWVudCwgSHR0cFJlc3BvbnNlfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge2luamVjdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0hvc3RTZXJ2aWNlfSBmcm9tICcuLi9fZ2VuZXJhdGVkL2hvc3Quc2VydmljZSc7XG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHttYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXG5leHBvcnQgY2xhc3MgTWVldGluZ1NvdXJjZUFQSUFwaVNlcnZpY2Uge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaG9zdFNlcnZpY2UgPSBpbmplY3QoSG9zdFNlcnZpY2UpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaHR0cCA9IGluamVjdChIdHRwQ2xpZW50KTtcbiAgICBwcml2YXRlIF9ob3N0ID0gdGhpcy5ob3N0U2VydmljZS5ob3N0V2l0aFNjaGVtZTtcblxuICAgIHByaXZhdGUgYXBpT3B0aW9ucygpOiB7aGVhZGVyczogSHR0cEhlYWRlcnMsIHdpdGhDcmVkZW50aWFsczogYm9vbGVhbn0ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHtcbiAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHdpdGhDcmVkZW50aWFsczogdHJ1ZVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGxpc3QocjogTWVldGluZ1NvdXJjZUxpc3RSZXF1ZXN0IHwgTWVldGluZ1NvdXJjZUxpc3RSZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxNZWV0aW5nU291cmNlTGlzdFJlc3BvbnNlPiB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSAoKDxNZWV0aW5nU291cmNlTGlzdFJlcXVlc3Q+cikudG9BcGlKc29uKSA/ICg8TWVldGluZ1NvdXJjZUxpc3RSZXF1ZXN0PnIpIDogbmV3IE1lZXRpbmdTb3VyY2VMaXN0UmVxdWVzdChyKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PE1lZXRpbmdTb3VyY2VMaXN0UmVzcG9uc2VJbnRlcmZhY2U+KHRoaXMuX2hvc3QgKyBcIi9tZWV0aW5ncy52MS5NZWV0aW5nU291cmNlQVBJL0xpc3RcIiwgcmVxdWVzdC50b0FwaUpzb24oKSwgdGhpcy5hcGlPcHRpb25zKCkpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAocmVzcCA9PiBNZWV0aW5nU291cmNlTGlzdFJlc3BvbnNlLmZyb21Qcm90byhyZXNwKSlcbiAgICAgICAgICAgICk7XG4gICAgfVxuICAgIFxufVxuIl19
|
|
@@ -7,8 +7,6 @@
|
|
|
7
7
|
export { MeetingSourceInfo, MeetingSourceListRequest, MeetingSourceListResponse, MeetingSourceQuery, } from './meeting-source';
|
|
8
8
|
export { CreateZoomMeetingRequest, CreateZoomMeetingResponse, ZoomMeetingRecurrence, ZoomMeetingSettings, ZoomMeetingTrackingField, ZoomOccurrence, } from './zoom';
|
|
9
9
|
export { GoogleMeetConferenceData, GoogleMeetConferenceRequestStatus, GoogleMeetConferenceSolution, GoogleMeetConferenceSolutionKey, GoogleMeetCreateConferenceRequest, GoogleMeetCreateMeetingRequest, GoogleMeetCreateMeetingResponse, GoogleMeetEntryPoint, GoogleMeetListMeetingsRequest, GoogleMeetListMeetingsResponse, GoogleMeetMeeting, GoogleMeetMeetingAttendee, GoogleMeetMeetingCreator, GoogleMeetMeetingDateTime, GoogleMeetMeetingOrganizer, GoogleMeetMeetingReminder, GoogleMeetMeetingReminders, } from './google-meet';
|
|
10
|
-
export { TimeOfDay, } from './timeofday';
|
|
11
|
-
export { DateTime, TimeZone, } from './datetime';
|
|
12
10
|
export { Answer, Answers, CalendarApplicationContextEntry, Attachment, Attendee, Calendar, Contact, EmailsToDelete, Host, HostOrderDetails, HostUser, IsoDateTimeRange, PagedRequestOptions, PagedResponseMetadata, PhoneFields, Preferences, TimeRange, } from './shared';
|
|
13
11
|
export { DateRange, } from './date-range';
|
|
14
12
|
export { EventTypeDateRange, Field, Form, MeetingType, RegistrationCutOff, RelativeDateRange, } from './meeting-type';
|
|
@@ -16,6 +14,8 @@ export { EventGroupAndServiceAssociations, Group, Service, } from './groups-and-
|
|
|
16
14
|
export { BookMeetingRequest, BookMeetingResponse, CheckFeatureFlagRequest, CheckFeatureFlagResponse, GetCalendarRequest, GetCalendarResponse, GetGroupRequest, GetGroupResponse, GetHostRequest, GetHostResponse, GetMeetingCalendarInfoRequest, GetMeetingCalendarInfoResponse, GetMeetingTypeRequest, GetMeetingTypeResponse, GetServiceRequest, GetServiceResponse, GetSessionInviteeMeetingInfoRequest, GetSessionInviteeMeetingInfoResponse, GetSessionMeetingRequest, GetSessionMeetingResponse, GuestCancelMeetingRequest, GuestGetBookedMeetingRequest, GuestGetBookedMeetingRequestV2, GuestGetBookedMeetingResponse, GuestGetBookedMeetingResponseV2, GuestIsHostConfiguredRequest, GuestIsHostConfiguredResponse, GuestRescheduleMeetingRequest, InviteeDeregisterSessionMeetingRequest, InviteeRegisterSessionMeetingRequest, ListAvailableTimeSlotsRequest, ListAvailableTimeSlotsResponse, ListMeetingTypesRequest, ListMeetingTypesResponse, BookMeetingRequestMetadataEntry, RegisterSessionRequest, } from './meeting-guest';
|
|
17
15
|
export { AvailableTimeSlotsRequest, AvailableTimeSlotsResponse, BookMeetingExternalRequest, BookMeetingExternalResponse, EventType, ExternalCancelMeetingRequest, ExternalRescheduleMeetingRequest, ExternalRescheduleMeetingResponse, GetUsersRequest, GetUsersResponse, GroupResponse, GroupsRequest, GroupsResponse, HostUserDetails, ListTeamEventTypesRequest, ListTeamEventTypesResponse, ListUserEventTypesRequest, ListUserEventTypesResponse, ServiceResponse, ServicesRequest, ServicesResponse, UserResponse, } from './meeting-external';
|
|
18
16
|
export { FieldMask, } from './field-mask';
|
|
19
|
-
export {
|
|
17
|
+
export { IsCalendarConfiguredRequestApplicationContextPropertiesEntry, BuildHostIdRequestApplicationContextPropertiesEntry, EnsurePersonalCalendarExistsRequestApplicationContextPropertiesEntry, AvailabilityRule, AvailabilityRuleList, BuildHostIdRequest, BuildHostIdResponse, GetMeetingTypesForCalendarsResponseCalendarMeetingTypesMapEntry, CalendarMigrationResponse, CancelMeetingRequest, CheckEventTypeSlugExistRequest, CheckEventTypeSlugExistResponse, CheckGroupOrServiceSlugExistRequest, CheckGroupOrServiceSlugExistResponse, CreateAvailabilityRequest, CreateAvailabilityResponse, CreateCalendarRequest, CreateCalendarResponse, CreateDefaultMeetingTypesRequest, CreateGroupRequest, CreateGroupResponse, CreateMeetingTypeRequest, CreateMeetingTypeResponse, CreateServiceRequest, CreateServiceResponse, DeleteAvailabilityRequest, DeleteGroupRequest, DeleteMeetingTypeRequest, DeleteServiceRequest, DoesCalendarExistRequest, DoesCalendarExistResponse, EnsureGroupCalendarsExistRequest, EnsureGroupCalendarsExistResponse, EnsurePersonalCalendarExistsRequest, EnsurePersonalCalendarExistsResponse, EnsureSessionEventCalendarsExistRequest, EnsureSessionEventCalendarsExistResponse, EventTypeSummary, ListAvailabilityRequestFilters, ListBookedMeetingsRequestFilters, GetEntityAssociationRequest, GetEntityAssociationResponse, GetEventTypeByIdRequest, GetEventTypeByIdResponse, GetHostMeetingRequest, GetHostMeetingResponse, GetHostPreferencesRequest, GetHostPreferencesResponse, GetHostsForCalendarRequest, GetHostsForCalendarResponse, GetMeetingTypesForCalendarsRequest, GetMeetingTypesForCalendarsResponse, HostBookMeetingRequest, HostBookMeetingResponse, HostBookSessionRequest, HostBookSessionResponse, HostDeleteAttendeesRequest, HostDetails, HostGetCalendarRequest, HostGetCalendarResponse, HostGetMeetingTypeRequest, HostGetMeetingTypeResponse, HostListMeetingTypesRequest, HostListMeetingTypesResponse, GetHostsForCalendarResponseHostUserAvailabilityRuleEntry, IsCalendarConfiguredRequest, IsCalendarConfiguredResponse, IsHostConfiguredRequest, IsHostConfiguredResponse, ListAttendeesRequest, ListAttendeesResponse, ListAvailabilityRequest, ListAvailabilityResponse, ListAvailableTimeslotsForRecurringSessionRequest, ListAvailableTimeslotsForRecurringSessionResponse, ListAvailableTimeslotsForSessionRequest, ListAvailableTimeslotsForSessionResponse, ListBookedMeetingsRequest, ListBookedMeetingsResponse, ListEventTypesForMultipleCalendarsRequest, ListEventTypesForMultipleCalendarsResponse, ListGroupsRequest, ListGroupsResponse, ListServicesRequest, ListServicesResponse, Meeting, MeetingTypeList, UpdateMeetingMetadataRequestMetadataEntry, MeetingMetadataEntry, RecurrenceConfig, RecurrenceEnd, RescheduleMeetingRequest, SendMeetingRequestEmailRequest, SessionAttendees, SetGeneralAvailabilityRequest, TimeSlotsByWeekDay, UpdateAvailabilityRequest, UpdateCalendarRequest, UpdateGroupRequest, UpdateHostPreferencesRequest, UpdateMeetingMetadataRequest, UpdateMeetingTypeRequest, UpdateServiceRequest, WeekdayAvailability, } from './meeting-host';
|
|
20
18
|
export { Access, MCPOptions, } from './annotations';
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9tZWV0aW5nc19zZGsvc3JjL2xpYi9faW50ZXJuYWwvb2JqZWN0cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxvQ0FBb0M7QUFDcEMsMkJBQTJCO0FBQzNCLGdCQUFnQjtBQUNoQixFQUFFO0FBQ0YsaUJBQWlCO0FBQ2pCLG9DQUFvQztBQUNwQyxPQUFPLEVBQ0gsaUJBQWlCLEVBQ2pCLHdCQUF3QixFQUN4Qix5QkFBeUIsRUFDekIsa0JBQWtCLEdBQ3JCLE1BQU0sa0JBQWtCLENBQUM7QUFFMUIsT0FBTyxFQUNILHdCQUF3QixFQUN4Qix5QkFBeUIsRUFDekIscUJBQXFCLEVBQ3JCLG1CQUFtQixFQUNuQix3QkFBd0IsRUFDeEIsY0FBYyxHQUNqQixNQUFNLFFBQVEsQ0FBQztBQUVoQixPQUFPLEVBQ0gsd0JBQXdCLEVBQ3hCLGlDQUFpQyxFQUNqQyw0QkFBNEIsRUFDNUIsK0JBQStCLEVBQy9CLGlDQUFpQyxFQUNqQyw4QkFBOEIsRUFDOUIsK0JBQStCLEVBQy9CLG9CQUFvQixFQUNwQiw2QkFBNkIsRUFDN0IsOEJBQThCLEVBQzlCLGlCQUFpQixFQUNqQix5QkFBeUIsRUFDekIsd0JBQXdCLEVBQ3hCLHlCQUF5QixFQUN6QiwwQkFBMEIsRUFDMUIseUJBQXlCLEVBQ3pCLDBCQUEwQixHQUM3QixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQ0gsU0FBUyxHQUNaLE1BQU0sYUFBYSxDQUFDO0FBRXJCLE9BQU8sRUFDSCxRQUFRLEVBQ1IsUUFBUSxHQUNYLE1BQU0sWUFBWSxDQUFDO0FBRXBCLE9BQU8sRUFDSCxNQUFNLEVBQ04sT0FBTyxFQUNQLCtCQUErQixFQUMvQixVQUFVLEVBQ1YsUUFBUSxFQUNSLFFBQVEsRUFDUixPQUFPLEVBQ1AsY0FBYyxFQUNkLElBQUksRUFDSixnQkFBZ0IsRUFDaEIsUUFBUSxFQUNSLGdCQUFnQixFQUNoQixtQkFBbUIsRUFDbkIscUJBQXFCLEVBQ3JCLFdBQVcsRUFDWCxXQUFXLEVBQ1gsU0FBUyxHQUNaLE1BQU0sVUFBVSxDQUFDO0FBRWxCLE9BQU8sRUFDSCxTQUFTLEdBQ1osTUFBTSxjQUFjLENBQUM7QUFFdEIsT0FBTyxFQUNILGtCQUFrQixFQUNsQixLQUFLLEVBQ0wsSUFBSSxFQUNKLFdBQVcsRUFDWCxrQkFBa0IsRUFDbEIsaUJBQWlCLEdBQ3BCLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUNILGdDQUFnQyxFQUNoQyxLQUFLLEVBQ0wsT0FBTyxHQUNWLE1BQU0sdUJBQXVCLENBQUM7QUFFL0IsT0FBTyxFQUNILGtCQUFrQixFQUNsQixtQkFBbUIsRUFDbkIsdUJBQXVCLEVBQ3ZCLHdCQUF3QixFQUN4QixrQkFBa0IsRUFDbEIsbUJBQW1CLEVBQ25CLGVBQWUsRUFDZixnQkFBZ0IsRUFDaEIsY0FBYyxFQUNkLGVBQWUsRUFDZiw2QkFBNkIsRUFDN0IsOEJBQThCLEVBQzlCLHFCQUFxQixFQUNyQixzQkFBc0IsRUFDdEIsaUJBQWlCLEVBQ2pCLGtCQUFrQixFQUNsQixtQ0FBbUMsRUFDbkMsb0NBQW9DLEVBQ3BDLHdCQUF3QixFQUN4Qix5QkFBeUIsRUFDekIseUJBQXlCLEVBQ3pCLDRCQUE0QixFQUM1Qiw4QkFBOEIsRUFDOUIsNkJBQTZCLEVBQzdCLCtCQUErQixFQUMvQiw0QkFBNEIsRUFDNUIsNkJBQTZCLEVBQzdCLDZCQUE2QixFQUM3QixzQ0FBc0MsRUFDdEMsb0NBQW9DLEVBQ3BDLDZCQUE2QixFQUM3Qiw4QkFBOEIsRUFDOUIsdUJBQXVCLEVBQ3ZCLHdCQUF3QixFQUN4QiwrQkFBK0IsRUFDL0Isc0JBQXNCLEdBQ3pCLE1BQU0saUJBQWlCLENBQUM7QUFFekIsT0FBTyxFQUNILHlCQUF5QixFQUN6QiwwQkFBMEIsRUFDMUIsMEJBQTBCLEVBQzFCLDJCQUEyQixFQUMzQixTQUFTLEVBQ1QsNEJBQTRCLEVBQzVCLGdDQUFnQyxFQUNoQyxpQ0FBaUMsRUFDakMsZUFBZSxFQUNmLGdCQUFnQixFQUNoQixhQUFhLEVBQ2IsYUFBYSxFQUNiLGNBQWMsRUFDZCxlQUFlLEVBQ2YseUJBQXlCLEVBQ3pCLDBCQUEwQixFQUMxQix5QkFBeUIsRUFDekIsMEJBQTBCLEVBQzFCLGVBQWUsRUFDZixlQUFlLEVBQ2YsZ0JBQWdCLEVBQ2hCLFlBQVksR0FDZixNQUFNLG9CQUFvQixDQUFDO0FBRTVCLE9BQU8sRUFDSCxTQUFTLEdBQ1osTUFBTSxjQUFjLENBQUM7QUFFdEIsT0FBTyxFQUNILG9FQUFvRSxFQUNwRSw0REFBNEQsRUFDNUQsbURBQW1ELEVBQ25ELGdCQUFnQixFQUNoQixvQkFBb0IsRUFDcEIsa0JBQWtCLEVBQ2xCLG1CQUFtQixFQUNuQiwrREFBK0QsRUFDL0QseUJBQXlCLEVBQ3pCLG9CQUFvQixFQUNwQiw4QkFBOEIsRUFDOUIsK0JBQStCLEVBQy9CLG1DQUFtQyxFQUNuQyxvQ0FBb0MsRUFDcEMseUJBQXlCLEVBQ3pCLDBCQUEwQixFQUMxQixxQkFBcUIsRUFDckIsc0JBQXNCLEVBQ3RCLGdDQUFnQyxFQUNoQyxrQkFBa0IsRUFDbEIsbUJBQW1CLEVBQ25CLHdCQUF3QixFQUN4Qix5QkFBeUIsRUFDekIsb0JBQW9CLEVBQ3BCLHFCQUFxQixFQUNyQix5QkFBeUIsRUFDekIsa0JBQWtCLEVBQ2xCLHdCQUF3QixFQUN4QixvQkFBb0IsRUFDcEIsd0JBQXdCLEVBQ3hCLHlCQUF5QixFQUN6QixnQ0FBZ0MsRUFDaEMsaUNBQWlDLEVBQ2pDLG1DQUFtQyxFQUNuQyxvQ0FBb0MsRUFDcEMsdUNBQXVDLEVBQ3ZDLHdDQUF3QyxFQUN4QyxnQkFBZ0IsRUFDaEIsOEJBQThCLEVBQzlCLGdDQUFnQyxFQUNoQywyQkFBMkIsRUFDM0IsNEJBQTRCLEVBQzVCLHFCQUFxQixFQUNyQixzQkFBc0IsRUFDdEIseUJBQXlCLEVBQ3pCLDBCQUEwQixFQUMxQiwwQkFBMEIsRUFDMUIsMkJBQTJCLEVBQzNCLGtDQUFrQyxFQUNsQyxtQ0FBbUMsRUFDbkMsc0JBQXNCLEVBQ3RCLHVCQUF1QixFQUN2QixzQkFBc0IsRUFDdEIsdUJBQXVCLEVBQ3ZCLDBCQUEwQixFQUMxQixXQUFXLEVBQ1gsc0JBQXNCLEVBQ3RCLHVCQUF1QixFQUN2Qix5QkFBeUIsRUFDekIsMEJBQTBCLEVBQzFCLDJCQUEyQixFQUMzQiw0QkFBNEIsRUFDNUIsd0RBQXdELEVBQ3hELDJCQUEyQixFQUMzQiw0QkFBNEIsRUFDNUIsdUJBQXVCLEVBQ3ZCLHdCQUF3QixFQUN4QixvQkFBb0IsRUFDcEIscUJBQXFCLEVBQ3JCLHVCQUF1QixFQUN2Qix3QkFBd0IsRUFDeEIsZ0RBQWdELEVBQ2hELGlEQUFpRCxFQUNqRCx1Q0FBdUMsRUFDdkMsd0NBQXdDLEVBQ3hDLHlCQUF5QixFQUN6QiwwQkFBMEIsRUFDMUIseUNBQXlDLEVBQ3pDLDBDQUEwQyxFQUMxQyxpQkFBaUIsRUFDakIsa0JBQWtCLEVBQ2xCLG1CQUFtQixFQUNuQixvQkFBb0IsRUFDcEIsT0FBTyxFQUNQLGVBQWUsRUFDZix5Q0FBeUMsRUFDekMsb0JBQW9CLEVBQ3BCLGdCQUFnQixFQUNoQixhQUFhLEVBQ2Isd0JBQXdCLEVBQ3hCLDhCQUE4QixFQUM5QixnQkFBZ0IsRUFDaEIsNkJBQTZCLEVBQzdCLGtCQUFrQixFQUNsQix5QkFBeUIsRUFDekIscUJBQXFCLEVBQ3JCLGtCQUFrQixFQUNsQiw0QkFBNEIsRUFDNUIsNEJBQTRCLEVBQzVCLHdCQUF3QixFQUN4QixvQkFBb0IsRUFDcEIsbUJBQW1CLEdBQ3RCLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUNILE1BQU0sRUFDTixVQUFVLEdBQ2IsTUFBTSxlQUFlLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbi8vIENvZGUgZ2VuZXJhdGVkIGJ5IHNka2dlblxuLy8gRE8gTk9UIEVESVQhLlxuLy9cbi8vIE9iamVjdHMgSW5kZXguXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbmV4cG9ydCB7XG4gICAgTWVldGluZ1NvdXJjZUluZm8sXG4gICAgTWVldGluZ1NvdXJjZUxpc3RSZXF1ZXN0LFxuICAgIE1lZXRpbmdTb3VyY2VMaXN0UmVzcG9uc2UsXG4gICAgTWVldGluZ1NvdXJjZVF1ZXJ5LFxufSBmcm9tICcuL21lZXRpbmctc291cmNlJztcblxuZXhwb3J0IHtcbiAgICBDcmVhdGVab29tTWVldGluZ1JlcXVlc3QsXG4gICAgQ3JlYXRlWm9vbU1lZXRpbmdSZXNwb25zZSxcbiAgICBab29tTWVldGluZ1JlY3VycmVuY2UsXG4gICAgWm9vbU1lZXRpbmdTZXR0aW5ncyxcbiAgICBab29tTWVldGluZ1RyYWNraW5nRmllbGQsXG4gICAgWm9vbU9jY3VycmVuY2UsXG59IGZyb20gJy4vem9vbSc7XG5cbmV4cG9ydCB7XG4gICAgR29vZ2xlTWVldENvbmZlcmVuY2VEYXRhLFxuICAgIEdvb2dsZU1lZXRDb25mZXJlbmNlUmVxdWVzdFN0YXR1cyxcbiAgICBHb29nbGVNZWV0Q29uZmVyZW5jZVNvbHV0aW9uLFxuICAgIEdvb2dsZU1lZXRDb25mZXJlbmNlU29sdXRpb25LZXksXG4gICAgR29vZ2xlTWVldENyZWF0ZUNvbmZlcmVuY2VSZXF1ZXN0LFxuICAgIEdvb2dsZU1lZXRDcmVhdGVNZWV0aW5nUmVxdWVzdCxcbiAgICBHb29nbGVNZWV0Q3JlYXRlTWVldGluZ1Jlc3BvbnNlLFxuICAgIEdvb2dsZU1lZXRFbnRyeVBvaW50LFxuICAgIEdvb2dsZU1lZXRMaXN0TWVldGluZ3NSZXF1ZXN0LFxuICAgIEdvb2dsZU1lZXRMaXN0TWVldGluZ3NSZXNwb25zZSxcbiAgICBHb29nbGVNZWV0TWVldGluZyxcbiAgICBHb29nbGVNZWV0TWVldGluZ0F0dGVuZGVlLFxuICAgIEdvb2dsZU1lZXRNZWV0aW5nQ3JlYXRvcixcbiAgICBHb29nbGVNZWV0TWVldGluZ0RhdGVUaW1lLFxuICAgIEdvb2dsZU1lZXRNZWV0aW5nT3JnYW5pemVyLFxuICAgIEdvb2dsZU1lZXRNZWV0aW5nUmVtaW5kZXIsXG4gICAgR29vZ2xlTWVldE1lZXRpbmdSZW1pbmRlcnMsXG59IGZyb20gJy4vZ29vZ2xlLW1lZXQnO1xuXG5leHBvcnQge1xuICAgIFRpbWVPZkRheSxcbn0gZnJvbSAnLi90aW1lb2ZkYXknO1xuXG5leHBvcnQge1xuICAgIERhdGVUaW1lLFxuICAgIFRpbWVab25lLFxufSBmcm9tICcuL2RhdGV0aW1lJztcblxuZXhwb3J0IHtcbiAgICBBbnN3ZXIsXG4gICAgQW5zd2VycyxcbiAgICBDYWxlbmRhckFwcGxpY2F0aW9uQ29udGV4dEVudHJ5LFxuICAgIEF0dGFjaG1lbnQsXG4gICAgQXR0ZW5kZWUsXG4gICAgQ2FsZW5kYXIsXG4gICAgQ29udGFjdCxcbiAgICBFbWFpbHNUb0RlbGV0ZSxcbiAgICBIb3N0LFxuICAgIEhvc3RPcmRlckRldGFpbHMsXG4gICAgSG9zdFVzZXIsXG4gICAgSXNvRGF0ZVRpbWVSYW5nZSxcbiAgICBQYWdlZFJlcXVlc3RPcHRpb25zLFxuICAgIFBhZ2VkUmVzcG9uc2VNZXRhZGF0YSxcbiAgICBQaG9uZUZpZWxkcyxcbiAgICBQcmVmZXJlbmNlcyxcbiAgICBUaW1lUmFuZ2UsXG59IGZyb20gJy4vc2hhcmVkJztcblxuZXhwb3J0IHtcbiAgICBEYXRlUmFuZ2UsXG59IGZyb20gJy4vZGF0ZS1yYW5nZSc7XG5cbmV4cG9ydCB7XG4gICAgRXZlbnRUeXBlRGF0ZVJhbmdlLFxuICAgIEZpZWxkLFxuICAgIEZvcm0sXG4gICAgTWVldGluZ1R5cGUsXG4gICAgUmVnaXN0cmF0aW9uQ3V0T2ZmLFxuICAgIFJlbGF0aXZlRGF0ZVJhbmdlLFxufSBmcm9tICcuL21lZXRpbmctdHlwZSc7XG5cbmV4cG9ydCB7XG4gICAgRXZlbnRHcm91cEFuZFNlcnZpY2VBc3NvY2lhdGlvbnMsXG4gICAgR3JvdXAsXG4gICAgU2VydmljZSxcbn0gZnJvbSAnLi9ncm91cHMtYW5kLXNlcnZpY2VzJztcblxuZXhwb3J0IHtcbiAgICBCb29rTWVldGluZ1JlcXVlc3QsXG4gICAgQm9va01lZXRpbmdSZXNwb25zZSxcbiAgICBDaGVja0ZlYXR1cmVGbGFnUmVxdWVzdCxcbiAgICBDaGVja0ZlYXR1cmVGbGFnUmVzcG9uc2UsXG4gICAgR2V0Q2FsZW5kYXJSZXF1ZXN0LFxuICAgIEdldENhbGVuZGFyUmVzcG9uc2UsXG4gICAgR2V0R3JvdXBSZXF1ZXN0LFxuICAgIEdldEdyb3VwUmVzcG9uc2UsXG4gICAgR2V0SG9zdFJlcXVlc3QsXG4gICAgR2V0SG9zdFJlc3BvbnNlLFxuICAgIEdldE1lZXRpbmdDYWxlbmRhckluZm9SZXF1ZXN0LFxuICAgIEdldE1lZXRpbmdDYWxlbmRhckluZm9SZXNwb25zZSxcbiAgICBHZXRNZWV0aW5nVHlwZVJlcXVlc3QsXG4gICAgR2V0TWVldGluZ1R5cGVSZXNwb25zZSxcbiAgICBHZXRTZXJ2aWNlUmVxdWVzdCxcbiAgICBHZXRTZXJ2aWNlUmVzcG9uc2UsXG4gICAgR2V0U2Vzc2lvbkludml0ZWVNZWV0aW5nSW5mb1JlcXVlc3QsXG4gICAgR2V0U2Vzc2lvbkludml0ZWVNZWV0aW5nSW5mb1Jlc3BvbnNlLFxuICAgIEdldFNlc3Npb25NZWV0aW5nUmVxdWVzdCxcbiAgICBHZXRTZXNzaW9uTWVldGluZ1Jlc3BvbnNlLFxuICAgIEd1ZXN0Q2FuY2VsTWVldGluZ1JlcXVlc3QsXG4gICAgR3Vlc3RHZXRCb29rZWRNZWV0aW5nUmVxdWVzdCxcbiAgICBHdWVzdEdldEJvb2tlZE1lZXRpbmdSZXF1ZXN0VjIsXG4gICAgR3Vlc3RHZXRCb29rZWRNZWV0aW5nUmVzcG9uc2UsXG4gICAgR3Vlc3RHZXRCb29rZWRNZWV0aW5nUmVzcG9uc2VWMixcbiAgICBHdWVzdElzSG9zdENvbmZpZ3VyZWRSZXF1ZXN0LFxuICAgIEd1ZXN0SXNIb3N0Q29uZmlndXJlZFJlc3BvbnNlLFxuICAgIEd1ZXN0UmVzY2hlZHVsZU1lZXRpbmdSZXF1ZXN0LFxuICAgIEludml0ZWVEZXJlZ2lzdGVyU2Vzc2lvbk1lZXRpbmdSZXF1ZXN0LFxuICAgIEludml0ZWVSZWdpc3RlclNlc3Npb25NZWV0aW5nUmVxdWVzdCxcbiAgICBMaXN0QXZhaWxhYmxlVGltZVNsb3RzUmVxdWVzdCxcbiAgICBMaXN0QXZhaWxhYmxlVGltZVNsb3RzUmVzcG9uc2UsXG4gICAgTGlzdE1lZXRpbmdUeXBlc1JlcXVlc3QsXG4gICAgTGlzdE1lZXRpbmdUeXBlc1Jlc3BvbnNlLFxuICAgIEJvb2tNZWV0aW5nUmVxdWVzdE1ldGFkYXRhRW50cnksXG4gICAgUmVnaXN0ZXJTZXNzaW9uUmVxdWVzdCxcbn0gZnJvbSAnLi9tZWV0aW5nLWd1ZXN0JztcblxuZXhwb3J0IHtcbiAgICBBdmFpbGFibGVUaW1lU2xvdHNSZXF1ZXN0LFxuICAgIEF2YWlsYWJsZVRpbWVTbG90c1Jlc3BvbnNlLFxuICAgIEJvb2tNZWV0aW5nRXh0ZXJuYWxSZXF1ZXN0LFxuICAgIEJvb2tNZWV0aW5nRXh0ZXJuYWxSZXNwb25zZSxcbiAgICBFdmVudFR5cGUsXG4gICAgRXh0ZXJuYWxDYW5jZWxNZWV0aW5nUmVxdWVzdCxcbiAgICBFeHRlcm5hbFJlc2NoZWR1bGVNZWV0aW5nUmVxdWVzdCxcbiAgICBFeHRlcm5hbFJlc2NoZWR1bGVNZWV0aW5nUmVzcG9uc2UsXG4gICAgR2V0VXNlcnNSZXF1ZXN0LFxuICAgIEdldFVzZXJzUmVzcG9uc2UsXG4gICAgR3JvdXBSZXNwb25zZSxcbiAgICBHcm91cHNSZXF1ZXN0LFxuICAgIEdyb3Vwc1Jlc3BvbnNlLFxuICAgIEhvc3RVc2VyRGV0YWlscyxcbiAgICBMaXN0VGVhbUV2ZW50VHlwZXNSZXF1ZXN0LFxuICAgIExpc3RUZWFtRXZlbnRUeXBlc1Jlc3BvbnNlLFxuICAgIExpc3RVc2VyRXZlbnRUeXBlc1JlcXVlc3QsXG4gICAgTGlzdFVzZXJFdmVudFR5cGVzUmVzcG9uc2UsXG4gICAgU2VydmljZVJlc3BvbnNlLFxuICAgIFNlcnZpY2VzUmVxdWVzdCxcbiAgICBTZXJ2aWNlc1Jlc3BvbnNlLFxuICAgIFVzZXJSZXNwb25zZSxcbn0gZnJvbSAnLi9tZWV0aW5nLWV4dGVybmFsJztcblxuZXhwb3J0IHtcbiAgICBGaWVsZE1hc2ssXG59IGZyb20gJy4vZmllbGQtbWFzayc7XG5cbmV4cG9ydCB7XG4gICAgRW5zdXJlUGVyc29uYWxDYWxlbmRhckV4aXN0c1JlcXVlc3RBcHBsaWNhdGlvbkNvbnRleHRQcm9wZXJ0aWVzRW50cnksXG4gICAgSXNDYWxlbmRhckNvbmZpZ3VyZWRSZXF1ZXN0QXBwbGljYXRpb25Db250ZXh0UHJvcGVydGllc0VudHJ5LFxuICAgIEJ1aWxkSG9zdElkUmVxdWVzdEFwcGxpY2F0aW9uQ29udGV4dFByb3BlcnRpZXNFbnRyeSxcbiAgICBBdmFpbGFiaWxpdHlSdWxlLFxuICAgIEF2YWlsYWJpbGl0eVJ1bGVMaXN0LFxuICAgIEJ1aWxkSG9zdElkUmVxdWVzdCxcbiAgICBCdWlsZEhvc3RJZFJlc3BvbnNlLFxuICAgIEdldE1lZXRpbmdUeXBlc0ZvckNhbGVuZGFyc1Jlc3BvbnNlQ2FsZW5kYXJNZWV0aW5nVHlwZXNNYXBFbnRyeSxcbiAgICBDYWxlbmRhck1pZ3JhdGlvblJlc3BvbnNlLFxuICAgIENhbmNlbE1lZXRpbmdSZXF1ZXN0LFxuICAgIENoZWNrRXZlbnRUeXBlU2x1Z0V4aXN0UmVxdWVzdCxcbiAgICBDaGVja0V2ZW50VHlwZVNsdWdFeGlzdFJlc3BvbnNlLFxuICAgIENoZWNrR3JvdXBPclNlcnZpY2VTbHVnRXhpc3RSZXF1ZXN0LFxuICAgIENoZWNrR3JvdXBPclNlcnZpY2VTbHVnRXhpc3RSZXNwb25zZSxcbiAgICBDcmVhdGVBdmFpbGFiaWxpdHlSZXF1ZXN0LFxuICAgIENyZWF0ZUF2YWlsYWJpbGl0eVJlc3BvbnNlLFxuICAgIENyZWF0ZUNhbGVuZGFyUmVxdWVzdCxcbiAgICBDcmVhdGVDYWxlbmRhclJlc3BvbnNlLFxuICAgIENyZWF0ZURlZmF1bHRNZWV0aW5nVHlwZXNSZXF1ZXN0LFxuICAgIENyZWF0ZUdyb3VwUmVxdWVzdCxcbiAgICBDcmVhdGVHcm91cFJlc3BvbnNlLFxuICAgIENyZWF0ZU1lZXRpbmdUeXBlUmVxdWVzdCxcbiAgICBDcmVhdGVNZWV0aW5nVHlwZVJlc3BvbnNlLFxuICAgIENyZWF0ZVNlcnZpY2VSZXF1ZXN0LFxuICAgIENyZWF0ZVNlcnZpY2VSZXNwb25zZSxcbiAgICBEZWxldGVBdmFpbGFiaWxpdHlSZXF1ZXN0LFxuICAgIERlbGV0ZUdyb3VwUmVxdWVzdCxcbiAgICBEZWxldGVNZWV0aW5nVHlwZVJlcXVlc3QsXG4gICAgRGVsZXRlU2VydmljZVJlcXVlc3QsXG4gICAgRG9lc0NhbGVuZGFyRXhpc3RSZXF1ZXN0LFxuICAgIERvZXNDYWxlbmRhckV4aXN0UmVzcG9uc2UsXG4gICAgRW5zdXJlR3JvdXBDYWxlbmRhcnNFeGlzdFJlcXVlc3QsXG4gICAgRW5zdXJlR3JvdXBDYWxlbmRhcnNFeGlzdFJlc3BvbnNlLFxuICAgIEVuc3VyZVBlcnNvbmFsQ2FsZW5kYXJFeGlzdHNSZXF1ZXN0LFxuICAgIEVuc3VyZVBlcnNvbmFsQ2FsZW5kYXJFeGlzdHNSZXNwb25zZSxcbiAgICBFbnN1cmVTZXNzaW9uRXZlbnRDYWxlbmRhcnNFeGlzdFJlcXVlc3QsXG4gICAgRW5zdXJlU2Vzc2lvbkV2ZW50Q2FsZW5kYXJzRXhpc3RSZXNwb25zZSxcbiAgICBFdmVudFR5cGVTdW1tYXJ5LFxuICAgIExpc3RBdmFpbGFiaWxpdHlSZXF1ZXN0RmlsdGVycyxcbiAgICBMaXN0Qm9va2VkTWVldGluZ3NSZXF1ZXN0RmlsdGVycyxcbiAgICBHZXRFbnRpdHlBc3NvY2lhdGlvblJlcXVlc3QsXG4gICAgR2V0RW50aXR5QXNzb2NpYXRpb25SZXNwb25zZSxcbiAgICBHZXRIb3N0TWVldGluZ1JlcXVlc3QsXG4gICAgR2V0SG9zdE1lZXRpbmdSZXNwb25zZSxcbiAgICBHZXRIb3N0UHJlZmVyZW5jZXNSZXF1ZXN0LFxuICAgIEdldEhvc3RQcmVmZXJlbmNlc1Jlc3BvbnNlLFxuICAgIEdldEhvc3RzRm9yQ2FsZW5kYXJSZXF1ZXN0LFxuICAgIEdldEhvc3RzRm9yQ2FsZW5kYXJSZXNwb25zZSxcbiAgICBHZXRNZWV0aW5nVHlwZXNGb3JDYWxlbmRhcnNSZXF1ZXN0LFxuICAgIEdldE1lZXRpbmdUeXBlc0ZvckNhbGVuZGFyc1Jlc3BvbnNlLFxuICAgIEhvc3RCb29rTWVldGluZ1JlcXVlc3QsXG4gICAgSG9zdEJvb2tNZWV0aW5nUmVzcG9uc2UsXG4gICAgSG9zdEJvb2tTZXNzaW9uUmVxdWVzdCxcbiAgICBIb3N0Qm9va1Nlc3Npb25SZXNwb25zZSxcbiAgICBIb3N0RGVsZXRlQXR0ZW5kZWVzUmVxdWVzdCxcbiAgICBIb3N0RGV0YWlscyxcbiAgICBIb3N0R2V0Q2FsZW5kYXJSZXF1ZXN0LFxuICAgIEhvc3RHZXRDYWxlbmRhclJlc3BvbnNlLFxuICAgIEhvc3RHZXRNZWV0aW5nVHlwZVJlcXVlc3QsXG4gICAgSG9zdEdldE1lZXRpbmdUeXBlUmVzcG9uc2UsXG4gICAgSG9zdExpc3RNZWV0aW5nVHlwZXNSZXF1ZXN0LFxuICAgIEhvc3RMaXN0TWVldGluZ1R5cGVzUmVzcG9uc2UsXG4gICAgR2V0SG9zdHNGb3JDYWxlbmRhclJlc3BvbnNlSG9zdFVzZXJBdmFpbGFiaWxpdHlSdWxlRW50cnksXG4gICAgSXNDYWxlbmRhckNvbmZpZ3VyZWRSZXF1ZXN0LFxuICAgIElzQ2FsZW5kYXJDb25maWd1cmVkUmVzcG9uc2UsXG4gICAgSXNIb3N0Q29uZmlndXJlZFJlcXVlc3QsXG4gICAgSXNIb3N0Q29uZmlndXJlZFJlc3BvbnNlLFxuICAgIExpc3RBdHRlbmRlZXNSZXF1ZXN0LFxuICAgIExpc3RBdHRlbmRlZXNSZXNwb25zZSxcbiAgICBMaXN0QXZhaWxhYmlsaXR5UmVxdWVzdCxcbiAgICBMaXN0QXZhaWxhYmlsaXR5UmVzcG9uc2UsXG4gICAgTGlzdEF2YWlsYWJsZVRpbWVzbG90c0ZvclJlY3VycmluZ1Nlc3Npb25SZXF1ZXN0LFxuICAgIExpc3RBdmFpbGFibGVUaW1lc2xvdHNGb3JSZWN1cnJpbmdTZXNzaW9uUmVzcG9uc2UsXG4gICAgTGlzdEF2YWlsYWJsZVRpbWVzbG90c0ZvclNlc3Npb25SZXF1ZXN0LFxuICAgIExpc3RBdmFpbGFibGVUaW1lc2xvdHNGb3JTZXNzaW9uUmVzcG9uc2UsXG4gICAgTGlzdEJvb2tlZE1lZXRpbmdzUmVxdWVzdCxcbiAgICBMaXN0Qm9va2VkTWVldGluZ3NSZXNwb25zZSxcbiAgICBMaXN0RXZlbnRUeXBlc0Zvck11bHRpcGxlQ2FsZW5kYXJzUmVxdWVzdCxcbiAgICBMaXN0RXZlbnRUeXBlc0Zvck11bHRpcGxlQ2FsZW5kYXJzUmVzcG9uc2UsXG4gICAgTGlzdEdyb3Vwc1JlcXVlc3QsXG4gICAgTGlzdEdyb3Vwc1Jlc3BvbnNlLFxuICAgIExpc3RTZXJ2aWNlc1JlcXVlc3QsXG4gICAgTGlzdFNlcnZpY2VzUmVzcG9uc2UsXG4gICAgTWVldGluZyxcbiAgICBNZWV0aW5nVHlwZUxpc3QsXG4gICAgVXBkYXRlTWVldGluZ01ldGFkYXRhUmVxdWVzdE1ldGFkYXRhRW50cnksXG4gICAgTWVldGluZ01ldGFkYXRhRW50cnksXG4gICAgUmVjdXJyZW5jZUNvbmZpZyxcbiAgICBSZWN1cnJlbmNlRW5kLFxuICAgIFJlc2NoZWR1bGVNZWV0aW5nUmVxdWVzdCxcbiAgICBTZW5kTWVldGluZ1JlcXVlc3RFbWFpbFJlcXVlc3QsXG4gICAgU2Vzc2lvbkF0dGVuZGVlcyxcbiAgICBTZXRHZW5lcmFsQXZhaWxhYmlsaXR5UmVxdWVzdCxcbiAgICBUaW1lU2xvdHNCeVdlZWtEYXksXG4gICAgVXBkYXRlQXZhaWxhYmlsaXR5UmVxdWVzdCxcbiAgICBVcGRhdGVDYWxlbmRhclJlcXVlc3QsXG4gICAgVXBkYXRlR3JvdXBSZXF1ZXN0LFxuICAgIFVwZGF0ZUhvc3RQcmVmZXJlbmNlc1JlcXVlc3QsXG4gICAgVXBkYXRlTWVldGluZ01ldGFkYXRhUmVxdWVzdCxcbiAgICBVcGRhdGVNZWV0aW5nVHlwZVJlcXVlc3QsXG4gICAgVXBkYXRlU2VydmljZVJlcXVlc3QsXG4gICAgV2Vla2RheUF2YWlsYWJpbGl0eSxcbn0gZnJvbSAnLi9tZWV0aW5nLWhvc3QnO1xuXG5leHBvcnQge1xuICAgIEFjY2VzcyxcbiAgICBNQ1BPcHRpb25zLFxufSBmcm9tICcuL2Fubm90YXRpb25zJztcbiJdfQ==
|
|
19
|
+
export { TimeOfDay, } from './timeofday';
|
|
20
|
+
export { DateTime, TimeZone, } from './datetime';
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9tZWV0aW5nc19zZGsvc3JjL2xpYi9faW50ZXJuYWwvb2JqZWN0cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxvQ0FBb0M7QUFDcEMsMkJBQTJCO0FBQzNCLGdCQUFnQjtBQUNoQixFQUFFO0FBQ0YsaUJBQWlCO0FBQ2pCLG9DQUFvQztBQUNwQyxPQUFPLEVBQ0gsaUJBQWlCLEVBQ2pCLHdCQUF3QixFQUN4Qix5QkFBeUIsRUFDekIsa0JBQWtCLEdBQ3JCLE1BQU0sa0JBQWtCLENBQUM7QUFFMUIsT0FBTyxFQUNILHdCQUF3QixFQUN4Qix5QkFBeUIsRUFDekIscUJBQXFCLEVBQ3JCLG1CQUFtQixFQUNuQix3QkFBd0IsRUFDeEIsY0FBYyxHQUNqQixNQUFNLFFBQVEsQ0FBQztBQUVoQixPQUFPLEVBQ0gsd0JBQXdCLEVBQ3hCLGlDQUFpQyxFQUNqQyw0QkFBNEIsRUFDNUIsK0JBQStCLEVBQy9CLGlDQUFpQyxFQUNqQyw4QkFBOEIsRUFDOUIsK0JBQStCLEVBQy9CLG9CQUFvQixFQUNwQiw2QkFBNkIsRUFDN0IsOEJBQThCLEVBQzlCLGlCQUFpQixFQUNqQix5QkFBeUIsRUFDekIsd0JBQXdCLEVBQ3hCLHlCQUF5QixFQUN6QiwwQkFBMEIsRUFDMUIseUJBQXlCLEVBQ3pCLDBCQUEwQixHQUM3QixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQ0gsTUFBTSxFQUNOLE9BQU8sRUFDUCwrQkFBK0IsRUFDL0IsVUFBVSxFQUNWLFFBQVEsRUFDUixRQUFRLEVBQ1IsT0FBTyxFQUNQLGNBQWMsRUFDZCxJQUFJLEVBQ0osZ0JBQWdCLEVBQ2hCLFFBQVEsRUFDUixnQkFBZ0IsRUFDaEIsbUJBQW1CLEVBQ25CLHFCQUFxQixFQUNyQixXQUFXLEVBQ1gsV0FBVyxFQUNYLFNBQVMsR0FDWixNQUFNLFVBQVUsQ0FBQztBQUVsQixPQUFPLEVBQ0gsU0FBUyxHQUNaLE1BQU0sY0FBYyxDQUFDO0FBRXRCLE9BQU8sRUFDSCxrQkFBa0IsRUFDbEIsS0FBSyxFQUNMLElBQUksRUFDSixXQUFXLEVBQ1gsa0JBQWtCLEVBQ2xCLGlCQUFpQixHQUNwQixNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFDSCxnQ0FBZ0MsRUFDaEMsS0FBSyxFQUNMLE9BQU8sR0FDVixNQUFNLHVCQUF1QixDQUFDO0FBRS9CLE9BQU8sRUFDSCxrQkFBa0IsRUFDbEIsbUJBQW1CLEVBQ25CLHVCQUF1QixFQUN2Qix3QkFBd0IsRUFDeEIsa0JBQWtCLEVBQ2xCLG1CQUFtQixFQUNuQixlQUFlLEVBQ2YsZ0JBQWdCLEVBQ2hCLGNBQWMsRUFDZCxlQUFlLEVBQ2YsNkJBQTZCLEVBQzdCLDhCQUE4QixFQUM5QixxQkFBcUIsRUFDckIsc0JBQXNCLEVBQ3RCLGlCQUFpQixFQUNqQixrQkFBa0IsRUFDbEIsbUNBQW1DLEVBQ25DLG9DQUFvQyxFQUNwQyx3QkFBd0IsRUFDeEIseUJBQXlCLEVBQ3pCLHlCQUF5QixFQUN6Qiw0QkFBNEIsRUFDNUIsOEJBQThCLEVBQzlCLDZCQUE2QixFQUM3QiwrQkFBK0IsRUFDL0IsNEJBQTRCLEVBQzVCLDZCQUE2QixFQUM3Qiw2QkFBNkIsRUFDN0Isc0NBQXNDLEVBQ3RDLG9DQUFvQyxFQUNwQyw2QkFBNkIsRUFDN0IsOEJBQThCLEVBQzlCLHVCQUF1QixFQUN2Qix3QkFBd0IsRUFDeEIsK0JBQStCLEVBQy9CLHNCQUFzQixHQUN6QixNQUFNLGlCQUFpQixDQUFDO0FBRXpCLE9BQU8sRUFDSCx5QkFBeUIsRUFDekIsMEJBQTBCLEVBQzFCLDBCQUEwQixFQUMxQiwyQkFBMkIsRUFDM0IsU0FBUyxFQUNULDRCQUE0QixFQUM1QixnQ0FBZ0MsRUFDaEMsaUNBQWlDLEVBQ2pDLGVBQWUsRUFDZixnQkFBZ0IsRUFDaEIsYUFBYSxFQUNiLGFBQWEsRUFDYixjQUFjLEVBQ2QsZUFBZSxFQUNmLHlCQUF5QixFQUN6QiwwQkFBMEIsRUFDMUIseUJBQXlCLEVBQ3pCLDBCQUEwQixFQUMxQixlQUFlLEVBQ2YsZUFBZSxFQUNmLGdCQUFnQixFQUNoQixZQUFZLEdBQ2YsTUFBTSxvQkFBb0IsQ0FBQztBQUU1QixPQUFPLEVBQ0gsU0FBUyxHQUNaLE1BQU0sY0FBYyxDQUFDO0FBRXRCLE9BQU8sRUFDSCw0REFBNEQsRUFDNUQsbURBQW1ELEVBQ25ELG9FQUFvRSxFQUNwRSxnQkFBZ0IsRUFDaEIsb0JBQW9CLEVBQ3BCLGtCQUFrQixFQUNsQixtQkFBbUIsRUFDbkIsK0RBQStELEVBQy9ELHlCQUF5QixFQUN6QixvQkFBb0IsRUFDcEIsOEJBQThCLEVBQzlCLCtCQUErQixFQUMvQixtQ0FBbUMsRUFDbkMsb0NBQW9DLEVBQ3BDLHlCQUF5QixFQUN6QiwwQkFBMEIsRUFDMUIscUJBQXFCLEVBQ3JCLHNCQUFzQixFQUN0QixnQ0FBZ0MsRUFDaEMsa0JBQWtCLEVBQ2xCLG1CQUFtQixFQUNuQix3QkFBd0IsRUFDeEIseUJBQXlCLEVBQ3pCLG9CQUFvQixFQUNwQixxQkFBcUIsRUFDckIseUJBQXlCLEVBQ3pCLGtCQUFrQixFQUNsQix3QkFBd0IsRUFDeEIsb0JBQW9CLEVBQ3BCLHdCQUF3QixFQUN4Qix5QkFBeUIsRUFDekIsZ0NBQWdDLEVBQ2hDLGlDQUFpQyxFQUNqQyxtQ0FBbUMsRUFDbkMsb0NBQW9DLEVBQ3BDLHVDQUF1QyxFQUN2Qyx3Q0FBd0MsRUFDeEMsZ0JBQWdCLEVBQ2hCLDhCQUE4QixFQUM5QixnQ0FBZ0MsRUFDaEMsMkJBQTJCLEVBQzNCLDRCQUE0QixFQUM1Qix1QkFBdUIsRUFDdkIsd0JBQXdCLEVBQ3hCLHFCQUFxQixFQUNyQixzQkFBc0IsRUFDdEIseUJBQXlCLEVBQ3pCLDBCQUEwQixFQUMxQiwwQkFBMEIsRUFDMUIsMkJBQTJCLEVBQzNCLGtDQUFrQyxFQUNsQyxtQ0FBbUMsRUFDbkMsc0JBQXNCLEVBQ3RCLHVCQUF1QixFQUN2QixzQkFBc0IsRUFDdEIsdUJBQXVCLEVBQ3ZCLDBCQUEwQixFQUMxQixXQUFXLEVBQ1gsc0JBQXNCLEVBQ3RCLHVCQUF1QixFQUN2Qix5QkFBeUIsRUFDekIsMEJBQTBCLEVBQzFCLDJCQUEyQixFQUMzQiw0QkFBNEIsRUFDNUIsd0RBQXdELEVBQ3hELDJCQUEyQixFQUMzQiw0QkFBNEIsRUFDNUIsdUJBQXVCLEVBQ3ZCLHdCQUF3QixFQUN4QixvQkFBb0IsRUFDcEIscUJBQXFCLEVBQ3JCLHVCQUF1QixFQUN2Qix3QkFBd0IsRUFDeEIsZ0RBQWdELEVBQ2hELGlEQUFpRCxFQUNqRCx1Q0FBdUMsRUFDdkMsd0NBQXdDLEVBQ3hDLHlCQUF5QixFQUN6QiwwQkFBMEIsRUFDMUIseUNBQXlDLEVBQ3pDLDBDQUEwQyxFQUMxQyxpQkFBaUIsRUFDakIsa0JBQWtCLEVBQ2xCLG1CQUFtQixFQUNuQixvQkFBb0IsRUFDcEIsT0FBTyxFQUNQLGVBQWUsRUFDZix5Q0FBeUMsRUFDekMsb0JBQW9CLEVBQ3BCLGdCQUFnQixFQUNoQixhQUFhLEVBQ2Isd0JBQXdCLEVBQ3hCLDhCQUE4QixFQUM5QixnQkFBZ0IsRUFDaEIsNkJBQTZCLEVBQzdCLGtCQUFrQixFQUNsQix5QkFBeUIsRUFDekIscUJBQXFCLEVBQ3JCLGtCQUFrQixFQUNsQiw0QkFBNEIsRUFDNUIsNEJBQTRCLEVBQzVCLHdCQUF3QixFQUN4QixvQkFBb0IsRUFDcEIsbUJBQW1CLEdBQ3RCLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUNILE1BQU0sRUFDTixVQUFVLEdBQ2IsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFNBQVMsR0FBRyxNQUFNLGFBQWEsQ0FBQztBQUN6QyxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsR0FBRyxNQUFNLFlBQVksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuLy8gQ29kZSBnZW5lcmF0ZWQgYnkgc2RrZ2VuXG4vLyBETyBOT1QgRURJVCEuXG4vL1xuLy8gT2JqZWN0cyBJbmRleC5cbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuZXhwb3J0IHtcbiAgICBNZWV0aW5nU291cmNlSW5mbyxcbiAgICBNZWV0aW5nU291cmNlTGlzdFJlcXVlc3QsXG4gICAgTWVldGluZ1NvdXJjZUxpc3RSZXNwb25zZSxcbiAgICBNZWV0aW5nU291cmNlUXVlcnksXG59IGZyb20gJy4vbWVldGluZy1zb3VyY2UnO1xuXG5leHBvcnQge1xuICAgIENyZWF0ZVpvb21NZWV0aW5nUmVxdWVzdCxcbiAgICBDcmVhdGVab29tTWVldGluZ1Jlc3BvbnNlLFxuICAgIFpvb21NZWV0aW5nUmVjdXJyZW5jZSxcbiAgICBab29tTWVldGluZ1NldHRpbmdzLFxuICAgIFpvb21NZWV0aW5nVHJhY2tpbmdGaWVsZCxcbiAgICBab29tT2NjdXJyZW5jZSxcbn0gZnJvbSAnLi96b29tJztcblxuZXhwb3J0IHtcbiAgICBHb29nbGVNZWV0Q29uZmVyZW5jZURhdGEsXG4gICAgR29vZ2xlTWVldENvbmZlcmVuY2VSZXF1ZXN0U3RhdHVzLFxuICAgIEdvb2dsZU1lZXRDb25mZXJlbmNlU29sdXRpb24sXG4gICAgR29vZ2xlTWVldENvbmZlcmVuY2VTb2x1dGlvbktleSxcbiAgICBHb29nbGVNZWV0Q3JlYXRlQ29uZmVyZW5jZVJlcXVlc3QsXG4gICAgR29vZ2xlTWVldENyZWF0ZU1lZXRpbmdSZXF1ZXN0LFxuICAgIEdvb2dsZU1lZXRDcmVhdGVNZWV0aW5nUmVzcG9uc2UsXG4gICAgR29vZ2xlTWVldEVudHJ5UG9pbnQsXG4gICAgR29vZ2xlTWVldExpc3RNZWV0aW5nc1JlcXVlc3QsXG4gICAgR29vZ2xlTWVldExpc3RNZWV0aW5nc1Jlc3BvbnNlLFxuICAgIEdvb2dsZU1lZXRNZWV0aW5nLFxuICAgIEdvb2dsZU1lZXRNZWV0aW5nQXR0ZW5kZWUsXG4gICAgR29vZ2xlTWVldE1lZXRpbmdDcmVhdG9yLFxuICAgIEdvb2dsZU1lZXRNZWV0aW5nRGF0ZVRpbWUsXG4gICAgR29vZ2xlTWVldE1lZXRpbmdPcmdhbml6ZXIsXG4gICAgR29vZ2xlTWVldE1lZXRpbmdSZW1pbmRlcixcbiAgICBHb29nbGVNZWV0TWVldGluZ1JlbWluZGVycyxcbn0gZnJvbSAnLi9nb29nbGUtbWVldCc7XG5cbmV4cG9ydCB7XG4gICAgQW5zd2VyLFxuICAgIEFuc3dlcnMsXG4gICAgQ2FsZW5kYXJBcHBsaWNhdGlvbkNvbnRleHRFbnRyeSxcbiAgICBBdHRhY2htZW50LFxuICAgIEF0dGVuZGVlLFxuICAgIENhbGVuZGFyLFxuICAgIENvbnRhY3QsXG4gICAgRW1haWxzVG9EZWxldGUsXG4gICAgSG9zdCxcbiAgICBIb3N0T3JkZXJEZXRhaWxzLFxuICAgIEhvc3RVc2VyLFxuICAgIElzb0RhdGVUaW1lUmFuZ2UsXG4gICAgUGFnZWRSZXF1ZXN0T3B0aW9ucyxcbiAgICBQYWdlZFJlc3BvbnNlTWV0YWRhdGEsXG4gICAgUGhvbmVGaWVsZHMsXG4gICAgUHJlZmVyZW5jZXMsXG4gICAgVGltZVJhbmdlLFxufSBmcm9tICcuL3NoYXJlZCc7XG5cbmV4cG9ydCB7XG4gICAgRGF0ZVJhbmdlLFxufSBmcm9tICcuL2RhdGUtcmFuZ2UnO1xuXG5leHBvcnQge1xuICAgIEV2ZW50VHlwZURhdGVSYW5nZSxcbiAgICBGaWVsZCxcbiAgICBGb3JtLFxuICAgIE1lZXRpbmdUeXBlLFxuICAgIFJlZ2lzdHJhdGlvbkN1dE9mZixcbiAgICBSZWxhdGl2ZURhdGVSYW5nZSxcbn0gZnJvbSAnLi9tZWV0aW5nLXR5cGUnO1xuXG5leHBvcnQge1xuICAgIEV2ZW50R3JvdXBBbmRTZXJ2aWNlQXNzb2NpYXRpb25zLFxuICAgIEdyb3VwLFxuICAgIFNlcnZpY2UsXG59IGZyb20gJy4vZ3JvdXBzLWFuZC1zZXJ2aWNlcyc7XG5cbmV4cG9ydCB7XG4gICAgQm9va01lZXRpbmdSZXF1ZXN0LFxuICAgIEJvb2tNZWV0aW5nUmVzcG9uc2UsXG4gICAgQ2hlY2tGZWF0dXJlRmxhZ1JlcXVlc3QsXG4gICAgQ2hlY2tGZWF0dXJlRmxhZ1Jlc3BvbnNlLFxuICAgIEdldENhbGVuZGFyUmVxdWVzdCxcbiAgICBHZXRDYWxlbmRhclJlc3BvbnNlLFxuICAgIEdldEdyb3VwUmVxdWVzdCxcbiAgICBHZXRHcm91cFJlc3BvbnNlLFxuICAgIEdldEhvc3RSZXF1ZXN0LFxuICAgIEdldEhvc3RSZXNwb25zZSxcbiAgICBHZXRNZWV0aW5nQ2FsZW5kYXJJbmZvUmVxdWVzdCxcbiAgICBHZXRNZWV0aW5nQ2FsZW5kYXJJbmZvUmVzcG9uc2UsXG4gICAgR2V0TWVldGluZ1R5cGVSZXF1ZXN0LFxuICAgIEdldE1lZXRpbmdUeXBlUmVzcG9uc2UsXG4gICAgR2V0U2VydmljZVJlcXVlc3QsXG4gICAgR2V0U2VydmljZVJlc3BvbnNlLFxuICAgIEdldFNlc3Npb25JbnZpdGVlTWVldGluZ0luZm9SZXF1ZXN0LFxuICAgIEdldFNlc3Npb25JbnZpdGVlTWVldGluZ0luZm9SZXNwb25zZSxcbiAgICBHZXRTZXNzaW9uTWVldGluZ1JlcXVlc3QsXG4gICAgR2V0U2Vzc2lvbk1lZXRpbmdSZXNwb25zZSxcbiAgICBHdWVzdENhbmNlbE1lZXRpbmdSZXF1ZXN0LFxuICAgIEd1ZXN0R2V0Qm9va2VkTWVldGluZ1JlcXVlc3QsXG4gICAgR3Vlc3RHZXRCb29rZWRNZWV0aW5nUmVxdWVzdFYyLFxuICAgIEd1ZXN0R2V0Qm9va2VkTWVldGluZ1Jlc3BvbnNlLFxuICAgIEd1ZXN0R2V0Qm9va2VkTWVldGluZ1Jlc3BvbnNlVjIsXG4gICAgR3Vlc3RJc0hvc3RDb25maWd1cmVkUmVxdWVzdCxcbiAgICBHdWVzdElzSG9zdENvbmZpZ3VyZWRSZXNwb25zZSxcbiAgICBHdWVzdFJlc2NoZWR1bGVNZWV0aW5nUmVxdWVzdCxcbiAgICBJbnZpdGVlRGVyZWdpc3RlclNlc3Npb25NZWV0aW5nUmVxdWVzdCxcbiAgICBJbnZpdGVlUmVnaXN0ZXJTZXNzaW9uTWVldGluZ1JlcXVlc3QsXG4gICAgTGlzdEF2YWlsYWJsZVRpbWVTbG90c1JlcXVlc3QsXG4gICAgTGlzdEF2YWlsYWJsZVRpbWVTbG90c1Jlc3BvbnNlLFxuICAgIExpc3RNZWV0aW5nVHlwZXNSZXF1ZXN0LFxuICAgIExpc3RNZWV0aW5nVHlwZXNSZXNwb25zZSxcbiAgICBCb29rTWVldGluZ1JlcXVlc3RNZXRhZGF0YUVudHJ5LFxuICAgIFJlZ2lzdGVyU2Vzc2lvblJlcXVlc3QsXG59IGZyb20gJy4vbWVldGluZy1ndWVzdCc7XG5cbmV4cG9ydCB7XG4gICAgQXZhaWxhYmxlVGltZVNsb3RzUmVxdWVzdCxcbiAgICBBdmFpbGFibGVUaW1lU2xvdHNSZXNwb25zZSxcbiAgICBCb29rTWVldGluZ0V4dGVybmFsUmVxdWVzdCxcbiAgICBCb29rTWVldGluZ0V4dGVybmFsUmVzcG9uc2UsXG4gICAgRXZlbnRUeXBlLFxuICAgIEV4dGVybmFsQ2FuY2VsTWVldGluZ1JlcXVlc3QsXG4gICAgRXh0ZXJuYWxSZXNjaGVkdWxlTWVldGluZ1JlcXVlc3QsXG4gICAgRXh0ZXJuYWxSZXNjaGVkdWxlTWVldGluZ1Jlc3BvbnNlLFxuICAgIEdldFVzZXJzUmVxdWVzdCxcbiAgICBHZXRVc2Vyc1Jlc3BvbnNlLFxuICAgIEdyb3VwUmVzcG9uc2UsXG4gICAgR3JvdXBzUmVxdWVzdCxcbiAgICBHcm91cHNSZXNwb25zZSxcbiAgICBIb3N0VXNlckRldGFpbHMsXG4gICAgTGlzdFRlYW1FdmVudFR5cGVzUmVxdWVzdCxcbiAgICBMaXN0VGVhbUV2ZW50VHlwZXNSZXNwb25zZSxcbiAgICBMaXN0VXNlckV2ZW50VHlwZXNSZXF1ZXN0LFxuICAgIExpc3RVc2VyRXZlbnRUeXBlc1Jlc3BvbnNlLFxuICAgIFNlcnZpY2VSZXNwb25zZSxcbiAgICBTZXJ2aWNlc1JlcXVlc3QsXG4gICAgU2VydmljZXNSZXNwb25zZSxcbiAgICBVc2VyUmVzcG9uc2UsXG59IGZyb20gJy4vbWVldGluZy1leHRlcm5hbCc7XG5cbmV4cG9ydCB7XG4gICAgRmllbGRNYXNrLFxufSBmcm9tICcuL2ZpZWxkLW1hc2snO1xuXG5leHBvcnQge1xuICAgIElzQ2FsZW5kYXJDb25maWd1cmVkUmVxdWVzdEFwcGxpY2F0aW9uQ29udGV4dFByb3BlcnRpZXNFbnRyeSxcbiAgICBCdWlsZEhvc3RJZFJlcXVlc3RBcHBsaWNhdGlvbkNvbnRleHRQcm9wZXJ0aWVzRW50cnksXG4gICAgRW5zdXJlUGVyc29uYWxDYWxlbmRhckV4aXN0c1JlcXVlc3RBcHBsaWNhdGlvbkNvbnRleHRQcm9wZXJ0aWVzRW50cnksXG4gICAgQXZhaWxhYmlsaXR5UnVsZSxcbiAgICBBdmFpbGFiaWxpdHlSdWxlTGlzdCxcbiAgICBCdWlsZEhvc3RJZFJlcXVlc3QsXG4gICAgQnVpbGRIb3N0SWRSZXNwb25zZSxcbiAgICBHZXRNZWV0aW5nVHlwZXNGb3JDYWxlbmRhcnNSZXNwb25zZUNhbGVuZGFyTWVldGluZ1R5cGVzTWFwRW50cnksXG4gICAgQ2FsZW5kYXJNaWdyYXRpb25SZXNwb25zZSxcbiAgICBDYW5jZWxNZWV0aW5nUmVxdWVzdCxcbiAgICBDaGVja0V2ZW50VHlwZVNsdWdFeGlzdFJlcXVlc3QsXG4gICAgQ2hlY2tFdmVudFR5cGVTbHVnRXhpc3RSZXNwb25zZSxcbiAgICBDaGVja0dyb3VwT3JTZXJ2aWNlU2x1Z0V4aXN0UmVxdWVzdCxcbiAgICBDaGVja0dyb3VwT3JTZXJ2aWNlU2x1Z0V4aXN0UmVzcG9uc2UsXG4gICAgQ3JlYXRlQXZhaWxhYmlsaXR5UmVxdWVzdCxcbiAgICBDcmVhdGVBdmFpbGFiaWxpdHlSZXNwb25zZSxcbiAgICBDcmVhdGVDYWxlbmRhclJlcXVlc3QsXG4gICAgQ3JlYXRlQ2FsZW5kYXJSZXNwb25zZSxcbiAgICBDcmVhdGVEZWZhdWx0TWVldGluZ1R5cGVzUmVxdWVzdCxcbiAgICBDcmVhdGVHcm91cFJlcXVlc3QsXG4gICAgQ3JlYXRlR3JvdXBSZXNwb25zZSxcbiAgICBDcmVhdGVNZWV0aW5nVHlwZVJlcXVlc3QsXG4gICAgQ3JlYXRlTWVldGluZ1R5cGVSZXNwb25zZSxcbiAgICBDcmVhdGVTZXJ2aWNlUmVxdWVzdCxcbiAgICBDcmVhdGVTZXJ2aWNlUmVzcG9uc2UsXG4gICAgRGVsZXRlQXZhaWxhYmlsaXR5UmVxdWVzdCxcbiAgICBEZWxldGVHcm91cFJlcXVlc3QsXG4gICAgRGVsZXRlTWVldGluZ1R5cGVSZXF1ZXN0LFxuICAgIERlbGV0ZVNlcnZpY2VSZXF1ZXN0LFxuICAgIERvZXNDYWxlbmRhckV4aXN0UmVxdWVzdCxcbiAgICBEb2VzQ2FsZW5kYXJFeGlzdFJlc3BvbnNlLFxuICAgIEVuc3VyZUdyb3VwQ2FsZW5kYXJzRXhpc3RSZXF1ZXN0LFxuICAgIEVuc3VyZUdyb3VwQ2FsZW5kYXJzRXhpc3RSZXNwb25zZSxcbiAgICBFbnN1cmVQZXJzb25hbENhbGVuZGFyRXhpc3RzUmVxdWVzdCxcbiAgICBFbnN1cmVQZXJzb25hbENhbGVuZGFyRXhpc3RzUmVzcG9uc2UsXG4gICAgRW5zdXJlU2Vzc2lvbkV2ZW50Q2FsZW5kYXJzRXhpc3RSZXF1ZXN0LFxuICAgIEVuc3VyZVNlc3Npb25FdmVudENhbGVuZGFyc0V4aXN0UmVzcG9uc2UsXG4gICAgRXZlbnRUeXBlU3VtbWFyeSxcbiAgICBMaXN0QXZhaWxhYmlsaXR5UmVxdWVzdEZpbHRlcnMsXG4gICAgTGlzdEJvb2tlZE1lZXRpbmdzUmVxdWVzdEZpbHRlcnMsXG4gICAgR2V0RW50aXR5QXNzb2NpYXRpb25SZXF1ZXN0LFxuICAgIEdldEVudGl0eUFzc29jaWF0aW9uUmVzcG9uc2UsXG4gICAgR2V0RXZlbnRUeXBlQnlJZFJlcXVlc3QsXG4gICAgR2V0RXZlbnRUeXBlQnlJZFJlc3BvbnNlLFxuICAgIEdldEhvc3RNZWV0aW5nUmVxdWVzdCxcbiAgICBHZXRIb3N0TWVldGluZ1Jlc3BvbnNlLFxuICAgIEdldEhvc3RQcmVmZXJlbmNlc1JlcXVlc3QsXG4gICAgR2V0SG9zdFByZWZlcmVuY2VzUmVzcG9uc2UsXG4gICAgR2V0SG9zdHNGb3JDYWxlbmRhclJlcXVlc3QsXG4gICAgR2V0SG9zdHNGb3JDYWxlbmRhclJlc3BvbnNlLFxuICAgIEdldE1lZXRpbmdUeXBlc0ZvckNhbGVuZGFyc1JlcXVlc3QsXG4gICAgR2V0TWVldGluZ1R5cGVzRm9yQ2FsZW5kYXJzUmVzcG9uc2UsXG4gICAgSG9zdEJvb2tNZWV0aW5nUmVxdWVzdCxcbiAgICBIb3N0Qm9va01lZXRpbmdSZXNwb25zZSxcbiAgICBIb3N0Qm9va1Nlc3Npb25SZXF1ZXN0LFxuICAgIEhvc3RCb29rU2Vzc2lvblJlc3BvbnNlLFxuICAgIEhvc3REZWxldGVBdHRlbmRlZXNSZXF1ZXN0LFxuICAgIEhvc3REZXRhaWxzLFxuICAgIEhvc3RHZXRDYWxlbmRhclJlcXVlc3QsXG4gICAgSG9zdEdldENhbGVuZGFyUmVzcG9uc2UsXG4gICAgSG9zdEdldE1lZXRpbmdUeXBlUmVxdWVzdCxcbiAgICBIb3N0R2V0TWVldGluZ1R5cGVSZXNwb25zZSxcbiAgICBIb3N0TGlzdE1lZXRpbmdUeXBlc1JlcXVlc3QsXG4gICAgSG9zdExpc3RNZWV0aW5nVHlwZXNSZXNwb25zZSxcbiAgICBHZXRIb3N0c0ZvckNhbGVuZGFyUmVzcG9uc2VIb3N0VXNlckF2YWlsYWJpbGl0eVJ1bGVFbnRyeSxcbiAgICBJc0NhbGVuZGFyQ29uZmlndXJlZFJlcXVlc3QsXG4gICAgSXNDYWxlbmRhckNvbmZpZ3VyZWRSZXNwb25zZSxcbiAgICBJc0hvc3RDb25maWd1cmVkUmVxdWVzdCxcbiAgICBJc0hvc3RDb25maWd1cmVkUmVzcG9uc2UsXG4gICAgTGlzdEF0dGVuZGVlc1JlcXVlc3QsXG4gICAgTGlzdEF0dGVuZGVlc1Jlc3BvbnNlLFxuICAgIExpc3RBdmFpbGFiaWxpdHlSZXF1ZXN0LFxuICAgIExpc3RBdmFpbGFiaWxpdHlSZXNwb25zZSxcbiAgICBMaXN0QXZhaWxhYmxlVGltZXNsb3RzRm9yUmVjdXJyaW5nU2Vzc2lvblJlcXVlc3QsXG4gICAgTGlzdEF2YWlsYWJsZVRpbWVzbG90c0ZvclJlY3VycmluZ1Nlc3Npb25SZXNwb25zZSxcbiAgICBMaXN0QXZhaWxhYmxlVGltZXNsb3RzRm9yU2Vzc2lvblJlcXVlc3QsXG4gICAgTGlzdEF2YWlsYWJsZVRpbWVzbG90c0ZvclNlc3Npb25SZXNwb25zZSxcbiAgICBMaXN0Qm9va2VkTWVldGluZ3NSZXF1ZXN0LFxuICAgIExpc3RCb29rZWRNZWV0aW5nc1Jlc3BvbnNlLFxuICAgIExpc3RFdmVudFR5cGVzRm9yTXVsdGlwbGVDYWxlbmRhcnNSZXF1ZXN0LFxuICAgIExpc3RFdmVudFR5cGVzRm9yTXVsdGlwbGVDYWxlbmRhcnNSZXNwb25zZSxcbiAgICBMaXN0R3JvdXBzUmVxdWVzdCxcbiAgICBMaXN0R3JvdXBzUmVzcG9uc2UsXG4gICAgTGlzdFNlcnZpY2VzUmVxdWVzdCxcbiAgICBMaXN0U2VydmljZXNSZXNwb25zZSxcbiAgICBNZWV0aW5nLFxuICAgIE1lZXRpbmdUeXBlTGlzdCxcbiAgICBVcGRhdGVNZWV0aW5nTWV0YWRhdGFSZXF1ZXN0TWV0YWRhdGFFbnRyeSxcbiAgICBNZWV0aW5nTWV0YWRhdGFFbnRyeSxcbiAgICBSZWN1cnJlbmNlQ29uZmlnLFxuICAgIFJlY3VycmVuY2VFbmQsXG4gICAgUmVzY2hlZHVsZU1lZXRpbmdSZXF1ZXN0LFxuICAgIFNlbmRNZWV0aW5nUmVxdWVzdEVtYWlsUmVxdWVzdCxcbiAgICBTZXNzaW9uQXR0ZW5kZWVzLFxuICAgIFNldEdlbmVyYWxBdmFpbGFiaWxpdHlSZXF1ZXN0LFxuICAgIFRpbWVTbG90c0J5V2Vla0RheSxcbiAgICBVcGRhdGVBdmFpbGFiaWxpdHlSZXF1ZXN0LFxuICAgIFVwZGF0ZUNhbGVuZGFyUmVxdWVzdCxcbiAgICBVcGRhdGVHcm91cFJlcXVlc3QsXG4gICAgVXBkYXRlSG9zdFByZWZlcmVuY2VzUmVxdWVzdCxcbiAgICBVcGRhdGVNZWV0aW5nTWV0YWRhdGFSZXF1ZXN0LFxuICAgIFVwZGF0ZU1lZXRpbmdUeXBlUmVxdWVzdCxcbiAgICBVcGRhdGVTZXJ2aWNlUmVxdWVzdCxcbiAgICBXZWVrZGF5QXZhaWxhYmlsaXR5LFxufSBmcm9tICcuL21lZXRpbmctaG9zdCc7XG5cbmV4cG9ydCB7XG4gICAgQWNjZXNzLFxuICAgIE1DUE9wdGlvbnMsXG59IGZyb20gJy4vYW5ub3RhdGlvbnMnO1xuXG5leHBvcnQgeyBUaW1lT2ZEYXksIH0gZnJvbSAnLi90aW1lb2ZkYXknO1xuZXhwb3J0IHsgRGF0ZVRpbWUsIFRpbWVab25lLCB9IGZyb20gJy4vZGF0ZXRpbWUnO1xuIl19
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { DateRange } from './date-range';
|
|
2
2
|
import { EventTypeDateRange } from './meeting-type';
|
|
3
3
|
import { IsoDateTimeRange, Contact, Answers, HostUser, HostOrderDetails, PagedRequestOptions, PagedResponseMetadata } from './shared';
|
|
4
|
-
import { TimeZone } from './
|
|
4
|
+
import { TimeZone } from './';
|
|
5
5
|
import * as e from '../enums';
|
|
6
6
|
export function enumStringToValue(enumRef, value) {
|
|
7
7
|
if (typeof value === 'number') {
|
|
@@ -746,4 +746,4 @@ export class UserResponse {
|
|
|
746
746
|
return toReturn;
|
|
747
747
|
}
|
|
748
748
|
}
|
|
749
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVldGluZy1leHRlcm5hbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL21lZXRpbmdzX3Nkay9zcmMvbGliL19pbnRlcm5hbC9vYmplY3RzL21lZXRpbmctZXh0ZXJuYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBT0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN6QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsbUJBQW1CLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDdEksT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUN0QyxPQUFPLEtBQUssQ0FBQyxNQUFNLFVBQVUsQ0FBQztBQUU5QixNQUFNLFVBQVUsaUJBQWlCLENBQUksT0FBWSxFQUFFLEtBQWE7SUFDOUQsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUU7UUFDN0IsT0FBTyxLQUFLLENBQUM7S0FDZDtJQUNELE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3hCLENBQUM7QUFFRCxNQUFNLE9BQU8seUJBQXlCO0lBT2xDLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBVTtRQUN2QixJQUFJLENBQUMsR0FBRyxJQUFJLHlCQUF5QixFQUFFLENBQUM7UUFDeEMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzVCLElBQUksS0FBSyxDQUFDLFFBQVEsRUFBRTtZQUFDLENBQUMsQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7U0FBQztRQUN2RSxJQUFJLEtBQUssQ0FBQyxRQUFRLEVBQUU7WUFBQyxDQUFDLENB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O0lBQ3BCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbIi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuLy8gQ29kZSBnZW5lcmF0ZWQgYnkgc2RrZ2VuXG4vLyBETyBOT1QgRURJVCEuXG4vL1xuLy8gT2JqZWN0cy5cbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuaW1wb3J0ICogYXMgaSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IERhdGVSYW5nZSB9IGZyb20gJy4vZGF0ZS1yYW5nZSc7XG5pbXBvcnQgeyBFdmVudFR5cGVEYXRlUmFuZ2UgfSBmcm9tICcuL21lZXRpbmctdHlwZSc7XG5pbXBvcnQgeyBJc29EYXRlVGltZVJhbmdlLCBDb250YWN0LCBBbnN3ZXJzLCBIb3N0VXNlciwgSG9zdE9yZGVyRGV0YWlscywgUGFnZWRSZXF1ZXN0T3B0aW9ucywgUGFnZWRSZXNwb25zZU1ldGFkYXRhIH0gZnJvbSAnLi9zaGFyZWQnO1xuaW1wb3J0IHsgVGltZVpvbmUgfSBmcm9tICcuL2RhdGV0aW1lJztcbmltcG9ydCAqIGFzIGUgZnJvbSAnLi4vZW51bXMnO1xuXG5leHBvcnQgZnVuY3Rpb24gZW51bVN0cmluZ1RvVmFsdWU8RT4oZW51bVJlZjogYW55LCB2YWx1ZTogc3RyaW5nKTogRSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIHJldHVybiBlbnVtUmVmW3ZhbHVlXTtcbn1cblxuZXhwb3J0IGNsYXNzIEF2YWlsYWJsZVRpbWVTbG90c1JlcXVlc3QgaW1wbGVtZW50cyBpLkF2YWlsYWJsZVRpbWVTbG90c1JlcXVlc3RJbnRlcmZhY2Uge1xuICAgIG5hbWVzcGFjZTogc3RyaW5nO1xuICAgIGV2ZW50VHlwZUlkOiBzdHJpbmc7XG4gICAgdGltZVNwYW46IERhdGVSYW5nZTtcbiAgICB0aW1lWm9uZTogVGltZVpvbmU7XG4gICAgaG9zdFVzZXJJZDogc3RyaW5nO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogQXZhaWxhYmxlVGltZVNsb3RzUmVxdWVzdCB7XG4gICAgICAgIGxldCBtID0gbmV3IEF2YWlsYWJsZVRpbWVTbG90c1JlcXVlc3QoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8udGltZVNwYW4pIHttLnRpbWVTcGFuID0gRGF0ZVJhbmdlLmZyb21Qcm90byhwcm90by50aW1lU3Bhbik7fVxuICAgICAgICBpZiAocHJvdG8udGltZVpvbmUpIHttLnRpbWVab25lID0gVGltZVpvbmUuZnJvbVByb3RvKHByb3RvLnRpbWVab25lKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuQXZhaWxhYmxlVGltZVNsb3RzUmVxdWVzdEludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm5hbWVzcGFjZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbmFtZXNwYWNlJ10gPSB0aGlzLm5hbWVzcGFjZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5ldmVudFR5cGVJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnZXZlbnRUeXBlSWQnXSA9IHRoaXMuZXZlbnRUeXBlSWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudGltZVNwYW4gIT09ICd1bmRlZmluZWQnICYmIHRoaXMudGltZVNwYW4gIT09IG51bGwpIHt0b1JldHVyblsndGltZVNwYW4nXSA9ICd0b0FwaUpzb24nIGluIHRoaXMudGltZVNwYW4gPyAodGhpcy50aW1lU3BhbiBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy50aW1lU3Bhbjt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy50aW1lWm9uZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy50aW1lWm9uZSAhPT0gbnVsbCkge3RvUmV0dXJuWyd0aW1lWm9uZSddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy50aW1lWm9uZSA/ICh0aGlzLnRpbWVab25lIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnRpbWVab25lO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmhvc3RVc2VySWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2hvc3RVc2VySWQnXSA9IHRoaXMuaG9zdFVzZXJJZDt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBdmFpbGFibGVUaW1lU2xvdHNSZXNwb25zZSBpbXBsZW1lbnRzIGkuQXZhaWxhYmxlVGltZVNsb3RzUmVzcG9uc2VJbnRlcmZhY2Uge1xuICAgIHRpbWVTbG90czogSXNvRGF0ZVRpbWVSYW5nZVtdO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogQXZhaWxhYmxlVGltZVNsb3RzUmVzcG9uc2Uge1xuICAgICAgICBsZXQgbSA9IG5ldyBBdmFpbGFibGVUaW1lU2xvdHNSZXNwb25zZSgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by50aW1lU2xvdHMpIHttLnRpbWVTbG90cyA9IHByb3RvLnRpbWVTbG90cy5tYXAoSXNvRGF0ZVRpbWVSYW5nZS5mcm9tUHJvdG8pO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5BdmFpbGFibGVUaW1lU2xvdHNSZXNwb25zZUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnRpbWVTbG90cyAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy50aW1lU2xvdHMgIT09IG51bGwpIHt0b1JldHVyblsndGltZVNsb3RzJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLnRpbWVTbG90cyA/ICh0aGlzLnRpbWVTbG90cyBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy50aW1lU2xvdHM7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgQm9va01lZXRpbmdFeHRlcm5hbFJlcXVlc3QgaW1wbGVtZW50cyBpLkJvb2tNZWV0aW5nRXh0ZXJuYWxSZXF1ZXN0SW50ZXJmYWNlIHtcbiAgICBuYW1lc3BhY2U6IHN0cmluZztcbiAgICBldmVudFR5cGVJZDogc3RyaW5nO1xuICAgIHN0YXJ0OiBEYXRlO1xuICAgIGF0dGVuZGVlczogQ29udGFjdFtdO1xuICAgIGNvbW1lbnQ6IHN0cmluZztcbiAgICBsb2NhdGlvbjogc3RyaW5nO1xuICAgIGZvcm1BbnN3ZXJzOiBBbnN3ZXJzO1xuICAgIGhvc3RVc2VySWQ6IHN0cmluZztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IEJvb2tNZWV0aW5nRXh0ZXJuYWxSZXF1ZXN0IHtcbiAgICAgICAgbGV0IG0gPSBuZXcgQm9va01lZXRpbmdFeHRlcm5hbFJlcXVlc3QoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8uc3RhcnQpIHttLnN0YXJ0ID0gbmV3IERhdGUocHJvdG8uc3RhcnQpO31cbiAgICAgICAgaWYgKHByb3RvLmF0dGVuZGVlcykge20uYXR0ZW5kZWVzID0gcHJvdG8uYXR0ZW5kZWVzLm1hcChDb250YWN0LmZyb21Qcm90byk7fVxuICAgICAgICBpZiAocHJvdG8uZm9ybUFuc3dlcnMpIHttLmZvcm1BbnN3ZXJzID0gQW5zd2Vycy5mcm9tUHJvdG8ocHJvdG8uZm9ybUFuc3dlcnMpO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5Cb29rTWVldGluZ0V4dGVybmFsUmVxdWVzdEludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm5hbWVzcGFjZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbmFtZXNwYWNlJ10gPSB0aGlzLm5hbWVzcGFjZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5ldmVudFR5cGVJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnZXZlbnRUeXBlSWQnXSA9IHRoaXMuZXZlbnRUeXBlSWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc3RhcnQgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuc3RhcnQgIT09IG51bGwpIHt0b1JldHVyblsnc3RhcnQnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuc3RhcnQgPyAodGhpcy5zdGFydCBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5zdGFydDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5hdHRlbmRlZXMgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuYXR0ZW5kZWVzICE9PSBudWxsKSB7dG9SZXR1cm5bJ2F0dGVuZGVlcyddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5hdHRlbmRlZXMgPyAodGhpcy5hdHRlbmRlZXMgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuYXR0ZW5kZWVzO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmNvbW1lbnQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2NvbW1lbnQnXSA9IHRoaXMuY29tbWVudDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5sb2NhdGlvbiAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbG9jYXRpb24nXSA9IHRoaXMubG9jYXRpb247fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZm9ybUFuc3dlcnMgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuZm9ybUFuc3dlcnMgIT09IG51bGwpIHt0b1JldHVyblsnZm9ybUFuc3dlcnMnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuZm9ybUFuc3dlcnMgPyAodGhpcy5mb3JtQW5zd2VycyBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5mb3JtQW5zd2Vyczt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5ob3N0VXNlcklkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydob3N0VXNlcklkJ10gPSB0aGlzLmhvc3RVc2VySWQ7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgQm9va01lZXRpbmdFeHRlcm5hbFJlc3BvbnNlIGltcGxlbWVudHMgaS5Cb29rTWVldGluZ0V4dGVybmFsUmVzcG9uc2VJbnRlcmZhY2Uge1xuICAgIG1lZXRpbmdJZDogc3RyaW5nO1xuICAgIHVzZXJJZDogc3RyaW5nO1xuICAgIG1lZXRpbmdTdGFydFRpbWU6IERhdGU7XG4gICAgbWVldGluZ0VuZFRpbWU6IERhdGU7XG4gICAgZXZlbnRUeXBlSWQ6IHN0cmluZztcbiAgICB0aXRsZTogc3RyaW5nO1xuICAgIGxvY2F0aW9uOiBzdHJpbmc7XG4gICAgaG9zdERldGFpbHM6IEhvc3RVc2VyRGV0YWlsc1tdO1xuICAgIGJvb2tpbmdVcmw6IHN0cmluZztcbiAgICBjYW5jZWxVcmw6IHN0cmluZztcbiAgICByZXNjaGVkdWxlVXJsOiBzdHJpbmc7XG4gICAgbWVldGluZ0xpbms6IHN0cmluZztcbiAgICBhdHRlbmRlZUVtYWlsczogc3RyaW5nW107XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBCb29rTWVldGluZ0V4dGVybmFsUmVzcG9uc2Uge1xuICAgICAgICBsZXQgbSA9IG5ldyBCb29rTWVldGluZ0V4dGVybmFsUmVzcG9uc2UoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8ubWVldGluZ1N0YXJ0VGltZSkge20ubWVldGluZ1N0YXJ0VGltZSA9IG5ldyBEYXRlKHByb3RvLm1lZXRpbmdTdGFydFRpbWUpO31cbiAgICAgICAgaWYgKHByb3RvLm1lZXRpbmdFbmRUaW1lKSB7bS5tZWV0aW5nRW5kVGltZSA9IG5ldyBEYXRlKHByb3RvLm1lZXRpbmdFbmRUaW1lKTt9XG4gICAgICAgIGlmIChwcm90by5ob3N0RGV0YWlscykge20uaG9zdERldGFpbHMgPSBwcm90by5ob3N0RGV0YWlscy5tYXAoSG9zdFVzZXJEZXRhaWxzLmZyb21Qcm90byk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkJvb2tNZWV0aW5nRXh0ZXJuYWxSZXNwb25zZUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm1lZXRpbmdJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbWVldGluZ0lkJ10gPSB0aGlzLm1lZXRpbmdJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy51c2VySWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3VzZXJJZCddID0gdGhpcy51c2VySWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubWVldGluZ1N0YXJ0VGltZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5tZWV0aW5nU3RhcnRUaW1lICE9PSBudWxsKSB7dG9SZXR1cm5bJ21lZXRpbmdTdGFydFRpbWUnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMubWVldGluZ1N0YXJ0VGltZSA/ICh0aGlzLm1lZXRpbmdTdGFydFRpbWUgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMubWVldGluZ1N0YXJ0VGltZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5tZWV0aW5nRW5kVGltZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5tZWV0aW5nRW5kVGltZSAhPT0gbnVsbCkge3RvUmV0dXJuWydtZWV0aW5nRW5kVGltZSddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5tZWV0aW5nRW5kVGltZSA/ICh0aGlzLm1lZXRpbmdFbmRUaW1lIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLm1lZXRpbmdFbmRUaW1lO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmV2ZW50VHlwZUlkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydldmVudFR5cGVJZCddID0gdGhpcy5ldmVudFR5cGVJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy50aXRsZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsndGl0bGUnXSA9IHRoaXMudGl0bGU7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubG9jYXRpb24gIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2xvY2F0aW9uJ10gPSB0aGlzLmxvY2F0aW9uO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmhvc3REZXRhaWxzICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmhvc3REZXRhaWxzICE9PSBudWxsKSB7dG9SZXR1cm5bJ2hvc3REZXRhaWxzJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmhvc3REZXRhaWxzID8gKHRoaXMuaG9zdERldGFpbHMgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuaG9zdERldGFpbHM7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuYm9va2luZ1VybCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnYm9va2luZ1VybCddID0gdGhpcy5ib29raW5nVXJsO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmNhbmNlbFVybCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnY2FuY2VsVXJsJ10gPSB0aGlzLmNhbmNlbFVybDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5yZXNjaGVkdWxlVXJsICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydyZXNjaGVkdWxlVXJsJ10gPSB0aGlzLnJlc2NoZWR1bGVVcmw7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubWVldGluZ0xpbmsgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ21lZXRpbmdMaW5rJ10gPSB0aGlzLm1lZXRpbmdMaW5rO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmF0dGVuZGVlRW1haWxzICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydhdHRlbmRlZUVtYWlscyddID0gdGhpcy5hdHRlbmRlZUVtYWlsczt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBFdmVudFR5cGUgaW1wbGVtZW50cyBpLkV2ZW50VHlwZUludGVyZmFjZSB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgZHVyYXRpb246IHN0cmluZztcbiAgICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICAgIGJvb2tpbmdVcmw6IHN0cmluZztcbiAgICBsb2NhdGlvbjogc3RyaW5nO1xuICAgIGxvY2F0aW9uVHlwZTogZS5NZWV0aW5nTG9jYXRpb25UeXBlO1xuICAgIGxvY2F0aW9uR3VpZGVsaW5lczogc3RyaW5nO1xuICAgIGlzVmlkZW9Db25mZXJlbmNpbmdFbmFibGVkOiBib29sZWFuO1xuICAgIGNhbGVuZGFyVHlwZTogc3RyaW5nO1xuICAgIGhvc3RVc2VyczogSG9zdFVzZXJbXTtcbiAgICBib29raW5nV2luZG93OiBFdmVudFR5cGVEYXRlUmFuZ2U7XG4gICAgbWVldGluZ1R5cGU6IGUuVGVhbUV2ZW50TWVldGluZ1R5cGU7XG4gICAgaG9zdE9yZGVyRGV0YWlsczogSG9zdE9yZGVyRGV0YWlsc1tdO1xuICAgIGlzRW1haWxSZXF1aXJlZDogYm9vbGVhbjtcbiAgICBpc1Bob25lTnVtYmVyUmVxdWlyZWQ6IGJvb2xlYW47XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBFdmVudFR5cGUge1xuICAgICAgICBsZXQgbSA9IG5ldyBFdmVudFR5cGUoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8ubG9jYXRpb25UeXBlKSB7bS5sb2NhdGlvblR5cGUgPSBlbnVtU3RyaW5nVG9WYWx1ZTxlLk1lZXRpbmdMb2NhdGlvblR5cGU+KGUuTWVldGluZ0xvY2F0aW9uVHlwZSwgcHJvdG8ubG9jYXRpb25UeXBlKTt9XG4gICAgICAgIGlmIChwcm90by5ob3N0VXNlcnMpIHttLmhvc3RVc2VycyA9IHByb3RvLmhvc3RVc2Vycy5tYXAoSG9zdFVzZXIuZnJvbVByb3RvKTt9XG4gICAgICAgIGlmIChwcm90by5ib29raW5nV2luZG93KSB7bS5ib29raW5nV2luZG93ID0gRXZlbnRUeXBlRGF0ZVJhbmdlLmZyb21Qcm90byhwcm90by5ib29raW5nV2luZG93KTt9XG4gICAgICAgIGlmIChwcm90by5tZWV0aW5nVHlwZSkge20ubWVldGluZ1R5cGUgPSBlbnVtU3RyaW5nVG9WYWx1ZTxlLlRlYW1FdmVudE1lZXRpbmdUeXBlPihlLlRlYW1FdmVudE1lZXRpbmdUeXBlLCBwcm90by5tZWV0aW5nVHlwZSk7fVxuICAgICAgICBpZiAocHJvdG8uaG9zdE9yZGVyRGV0YWlscykge20uaG9zdE9yZGVyRGV0YWlscyA9IHByb3RvLmhvc3RPcmRlckRldGFpbHMubWFwKEhvc3RPcmRlckRldGFpbHMuZnJvbVByb3RvKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuRXZlbnRUeXBlSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuaWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2lkJ10gPSB0aGlzLmlkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm5hbWUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ25hbWUnXSA9IHRoaXMubmFtZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5kdXJhdGlvbiAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnZHVyYXRpb24nXSA9IHRoaXMuZHVyYXRpb247fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZGVzY3JpcHRpb24gIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2Rlc2NyaXB0aW9uJ10gPSB0aGlzLmRlc2NyaXB0aW9uO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmJvb2tpbmdVcmwgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2Jvb2tpbmdVcmwnXSA9IHRoaXMuYm9va2luZ1VybDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5sb2NhdGlvbiAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbG9jYXRpb24nXSA9IHRoaXMubG9jYXRpb247fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubG9jYXRpb25UeXBlICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydsb2NhdGlvblR5cGUnXSA9IHRoaXMubG9jYXRpb25UeXBlO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmxvY2F0aW9uR3VpZGVsaW5lcyAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbG9jYXRpb25HdWlkZWxpbmVzJ10gPSB0aGlzLmxvY2F0aW9uR3VpZGVsaW5lczt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5pc1ZpZGVvQ29uZmVyZW5jaW5nRW5hYmxlZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnaXNWaWRlb0NvbmZlcmVuY2luZ0VuYWJsZWQnXSA9IHRoaXMuaXNWaWRlb0NvbmZlcmVuY2luZ0VuYWJsZWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuY2FsZW5kYXJUeXBlICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydjYWxlbmRhclR5cGUnXSA9IHRoaXMuY2FsZW5kYXJUeXBlO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmhvc3RVc2VycyAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5ob3N0VXNlcnMgIT09IG51bGwpIHt0b1JldHVyblsnaG9zdFVzZXJzJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmhvc3RVc2VycyA/ICh0aGlzLmhvc3RVc2VycyBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5ob3N0VXNlcnM7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuYm9va2luZ1dpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5ib29raW5nV2luZG93ICE9PSBudWxsKSB7dG9SZXR1cm5bJ2Jvb2tpbmdXaW5kb3cnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuYm9va2luZ1dpbmRvdyA/ICh0aGlzLmJvb2tpbmdXaW5kb3cgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuYm9va2luZ1dpbmRvdzt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5tZWV0aW5nVHlwZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbWVldGluZ1R5cGUnXSA9IHRoaXMubWVldGluZ1R5cGU7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuaG9zdE9yZGVyRGV0YWlscyAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5ob3N0T3JkZXJEZXRhaWxzICE9PSBudWxsKSB7dG9SZXR1cm5bJ2hvc3RPcmRlckRldGFpbHMnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuaG9zdE9yZGVyRGV0YWlscyA/ICh0aGlzLmhvc3RPcmRlckRldGFpbHMgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuaG9zdE9yZGVyRGV0YWlsczt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5pc0VtYWlsUmVxdWlyZWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2lzRW1haWxSZXF1aXJlZCddID0gdGhpcy5pc0VtYWlsUmVxdWlyZWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuaXNQaG9uZU51bWJlclJlcXVpcmVkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydpc1Bob25lTnVtYmVyUmVxdWlyZWQnXSA9IHRoaXMuaXNQaG9uZU51bWJlclJlcXVpcmVkO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEV4dGVybmFsQ2FuY2VsTWVldGluZ1JlcXVlc3QgaW1wbGVtZW50cyBpLkV4dGVybmFsQ2FuY2VsTWVldGluZ1JlcXVlc3RJbnRlcmZhY2Uge1xuICAgIG5hbWVzcGFjZTogc3RyaW5nO1xuICAgIG1lZXRpbmdJZDogc3RyaW5nO1xuICAgIGNhbmNlbGxhdGlvblJlYXNvbjogc3RyaW5nO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogRXh0ZXJuYWxDYW5jZWxNZWV0aW5nUmVxdWVzdCB7XG4gICAgICAgIGxldCBtID0gbmV3IEV4dGVybmFsQ2FuY2VsTWVldGluZ1JlcXVlc3QoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkV4dGVybmFsQ2FuY2VsTWVldGluZ1JlcXVlc3RJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5uYW1lc3BhY2UgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ25hbWVzcGFjZSddID0gdGhpcy5uYW1lc3BhY2U7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubWVldGluZ0lkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydtZWV0aW5nSWQnXSA9IHRoaXMubWVldGluZ0lkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmNhbmNlbGxhdGlvblJlYXNvbiAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnY2FuY2VsbGF0aW9uUmVhc29uJ10gPSB0aGlzLmNhbmNlbGxhdGlvblJlYXNvbjt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBFeHRlcm5hbFJlc2NoZWR1bGVNZWV0aW5nUmVxdWVzdCBpbXBsZW1lbnRzIGkuRXh0ZXJuYWxSZXNjaGVkdWxlTWVldGluZ1JlcXVlc3RJbnRlcmZhY2Uge1xuICAgIG5hbWVzcGFjZTogc3RyaW5nO1xuICAgIG1lZXRpbmdJZDogc3RyaW5nO1xuICAgIHN0YXJ0VGltZTogRGF0ZTtcbiAgICBsb2NhdGlvbjogc3RyaW5nO1xuICAgIHRpbWVab25lOiBUaW1lWm9uZTtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IEV4dGVybmFsUmVzY2hlZHVsZU1lZXRpbmdSZXF1ZXN0IHtcbiAgICAgICAgbGV0IG0gPSBuZXcgRXh0ZXJuYWxSZXNjaGVkdWxlTWVldGluZ1JlcXVlc3QoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8uc3RhcnRUaW1lKSB7bS5zdGFydFRpbWUgPSBuZXcgRGF0ZShwcm90by5zdGFydFRpbWUpO31cbiAgICAgICAgaWYgKHByb3RvLnRpbWVab25lKSB7bS50aW1lWm9uZSA9IFRpbWVab25lLmZyb21Qcm90byhwcm90by50aW1lWm9uZSk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkV4dGVybmFsUmVzY2hlZHVsZU1lZXRpbmdSZXF1ZXN0SW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubmFtZXNwYWNlICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyduYW1lc3BhY2UnXSA9IHRoaXMubmFtZXNwYWNlO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm1lZXRpbmdJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbWVldGluZ0lkJ10gPSB0aGlzLm1lZXRpbmdJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5zdGFydFRpbWUgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuc3RhcnRUaW1lICE9PSBudWxsKSB7dG9SZXR1cm5bJ3N0YXJ0VGltZSddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5zdGFydFRpbWUgPyAodGhpcy5zdGFydFRpbWUgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuc3RhcnRUaW1lO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmxvY2F0aW9uICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydsb2NhdGlvbiddID0gdGhpcy5sb2NhdGlvbjt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy50aW1lWm9uZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy50aW1lWm9uZSAhPT0gbnVsbCkge3RvUmV0dXJuWyd0aW1lWm9uZSddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy50aW1lWm9uZSA/ICh0aGlzLnRpbWVab25lIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnRpbWVab25lO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEV4dGVybmFsUmVzY2hlZHVsZU1lZXRpbmdSZXNwb25zZSBpbXBsZW1lbnRzIGkuRXh0ZXJuYWxSZXNjaGVkdWxlTWVldGluZ1Jlc3BvbnNlSW50ZXJmYWNlIHtcbiAgICBtZWV0aW5nSWQ6IHN0cmluZztcbiAgICBzdGFydFRpbWU6IERhdGU7XG4gICAgZW5kVGltZTogRGF0ZTtcbiAgICBob3N0RGV0YWlsczogSG9zdFVzZXJEZXRhaWxzW107XG4gICAgZXZlbnRUeXBlSWQ6IHN0cmluZztcbiAgICB0aXRsZTogc3RyaW5nO1xuICAgIGxvY2F0aW9uOiBzdHJpbmc7XG4gICAgbWVldGluZ1VybDogc3RyaW5nO1xuICAgIGJvb2tpbmdVcmw6IHN0cmluZztcbiAgICByZXNjaGVkdWxlVXJsOiBzdHJpbmc7XG4gICAgY2FuY2VsVXJsOiBzdHJpbmc7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBFeHRlcm5hbFJlc2NoZWR1bGVNZWV0aW5nUmVzcG9uc2Uge1xuICAgICAgICBsZXQgbSA9IG5ldyBFeHRlcm5hbFJlc2NoZWR1bGVNZWV0aW5nUmVzcG9uc2UoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8uc3RhcnRUaW1lKSB7bS5zdGFydFRpbWUgPSBuZXcgRGF0ZShwcm90by5zdGFydFRpbWUpO31cbiAgICAgICAgaWYgKHByb3RvLmVuZFRpbWUpIHttLmVuZFRpbWUgPSBuZXcgRGF0ZShwcm90by5lbmRUaW1lKTt9XG4gICAgICAgIGlmIChwcm90by5ob3N0RGV0YWlscykge20uaG9zdERldGFpbHMgPSBwcm90by5ob3N0RGV0YWlscy5tYXAoSG9zdFVzZXJEZXRhaWxzLmZyb21Qcm90byk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkV4dGVybmFsUmVzY2hlZHVsZU1lZXRpbmdSZXNwb25zZUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm1lZXRpbmdJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbWVldGluZ0lkJ10gPSB0aGlzLm1lZXRpbmdJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5zdGFydFRpbWUgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuc3RhcnRUaW1lICE9PSBudWxsKSB7dG9SZXR1cm5bJ3N0YXJ0VGltZSddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5zdGFydFRpbWUgPyAodGhpcy5zdGFydFRpbWUgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuc3RhcnRUaW1lO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmVuZFRpbWUgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuZW5kVGltZSAhPT0gbnVsbCkge3RvUmV0dXJuWydlbmRUaW1lJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmVuZFRpbWUgPyAodGhpcy5lbmRUaW1lIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLmVuZFRpbWU7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuaG9zdERldGFpbHMgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuaG9zdERldGFpbHMgIT09IG51bGwpIHt0b1JldHVyblsnaG9zdERldGFpbHMnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuaG9zdERldGFpbHMgPyAodGhpcy5ob3N0RGV0YWlscyBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5ob3N0RGV0YWlsczt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5ldmVudFR5cGVJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnZXZlbnRUeXBlSWQnXSA9IHRoaXMuZXZlbnRUeXBlSWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudGl0bGUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3RpdGxlJ10gPSB0aGlzLnRpdGxlO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmxvY2F0aW9uICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydsb2NhdGlvbiddID0gdGhpcy5sb2NhdGlvbjt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5tZWV0aW5nVXJsICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydtZWV0aW5nVXJsJ10gPSB0aGlzLm1lZXRpbmdVcmw7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuYm9va2luZ1VybCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnYm9va2luZ1VybCddID0gdGhpcy5ib29raW5nVXJsO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnJlc2NoZWR1bGVVcmwgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3Jlc2NoZWR1bGVVcmwnXSA9IHRoaXMucmVzY2hlZHVsZVVybDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jYW5jZWxVcmwgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2NhbmNlbFVybCddID0gdGhpcy5jYW5jZWxVcmw7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgR2V0VXNlcnNSZXF1ZXN0IGltcGxlbWVudHMgaS5HZXRVc2Vyc1JlcXVlc3RJbnRlcmZhY2Uge1xuICAgIG5hbWVzcGFjZTogc3RyaW5nO1xuICAgIHBhZ2VkUmVxdWVzdE9wdGlvbnM6IFBhZ2VkUmVxdWVzdE9wdGlvbnM7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBHZXRVc2Vyc1JlcXVlc3Qge1xuICAgICAgICBsZXQgbSA9IG5ldyBHZXRVc2Vyc1JlcXVlc3QoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8ucGFnZWRSZXF1ZXN0T3B0aW9ucykge20ucGFnZWRSZXF1ZXN0T3B0aW9ucyA9IFBhZ2VkUmVxdWVzdE9wdGlvbnMuZnJvbVByb3RvKHByb3RvLnBhZ2VkUmVxdWVzdE9wdGlvbnMpO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5HZXRVc2Vyc1JlcXVlc3RJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5uYW1lc3BhY2UgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ25hbWVzcGFjZSddID0gdGhpcy5uYW1lc3BhY2U7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucGFnZWRSZXF1ZXN0T3B0aW9ucyAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5wYWdlZFJlcXVlc3RPcHRpb25zICE9PSBudWxsKSB7dG9SZXR1cm5bJ3BhZ2VkUmVxdWVzdE9wdGlvbnMnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMucGFnZWRSZXF1ZXN0T3B0aW9ucyA/ICh0aGlzLnBhZ2VkUmVxdWVzdE9wdGlvbnMgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMucGFnZWRSZXF1ZXN0T3B0aW9uczt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBHZXRVc2Vyc1Jlc3BvbnNlIGltcGxlbWVudHMgaS5HZXRVc2Vyc1Jlc3BvbnNlSW50ZXJmYWNlIHtcbiAgICB1c2VyczogVXNlclJlc3BvbnNlW107XG4gICAgcGFnZWRSZXNwb25zZU1ldGFkYXRhOiBQYWdlZFJlc3BvbnNlTWV0YWRhdGE7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBHZXRVc2Vyc1Jlc3BvbnNlIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgR2V0VXNlcnNSZXNwb25zZSgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by51c2Vycykge20udXNlcnMgPSBwcm90by51c2Vycy5tYXAoVXNlclJlc3BvbnNlLmZyb21Qcm90byk7fVxuICAgICAgICBpZiAocHJvdG8ucGFnZWRSZXNwb25zZU1ldGFkYXRhKSB7bS5wYWdlZFJlc3BvbnNlTWV0YWRhdGEgPSBQYWdlZFJlc3BvbnNlTWV0YWRhdGEuZnJvbVByb3RvKHByb3RvLnBhZ2VkUmVzcG9uc2VNZXRhZGF0YSk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkdldFVzZXJzUmVzcG9uc2VJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy51c2VycyAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy51c2VycyAhPT0gbnVsbCkge3RvUmV0dXJuWyd1c2VycyddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy51c2VycyA/ICh0aGlzLnVzZXJzIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnVzZXJzO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnBhZ2VkUmVzcG9uc2VNZXRhZGF0YSAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5wYWdlZFJlc3BvbnNlTWV0YWRhdGEgIT09IG51bGwpIHt0b1JldHVyblsncGFnZWRSZXNwb25zZU1ldGFkYXRhJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLnBhZ2VkUmVzcG9uc2VNZXRhZGF0YSA/ICh0aGlzLnBhZ2VkUmVzcG9uc2VNZXRhZGF0YSBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5wYWdlZFJlc3BvbnNlTWV0YWRhdGE7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgR3JvdXBSZXNwb25zZSBpbXBsZW1lbnRzIGkuR3JvdXBSZXNwb25zZUludGVyZmFjZSB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgICBib29raW5nVXJsOiBzdHJpbmc7XG4gICAgaGV4Q29sb3I6IHN0cmluZztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IEdyb3VwUmVzcG9uc2Uge1xuICAgICAgICBsZXQgbSA9IG5ldyBHcm91cFJlc3BvbnNlKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5Hcm91cFJlc3BvbnNlSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuaWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2lkJ10gPSB0aGlzLmlkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm5hbWUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ25hbWUnXSA9IHRoaXMubmFtZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5kZXNjcmlwdGlvbiAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnZGVzY3JpcHRpb24nXSA9IHRoaXMuZGVzY3JpcHRpb247fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuYm9va2luZ1VybCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnYm9va2luZ1VybCddID0gdGhpcy5ib29raW5nVXJsO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmhleENvbG9yICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydoZXhDb2xvciddID0gdGhpcy5oZXhDb2xvcjt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBHcm91cHNSZXF1ZXN0IGltcGxlbWVudHMgaS5Hcm91cHNSZXF1ZXN0SW50ZXJmYWNlIHtcbiAgICBuYW1lc3BhY2U6IHN0cmluZztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IEdyb3Vwc1JlcXVlc3Qge1xuICAgICAgICBsZXQgbSA9IG5ldyBHcm91cHNSZXF1ZXN0KCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5Hcm91cHNSZXF1ZXN0SW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubmFtZXNwYWNlICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyduYW1lc3BhY2UnXSA9IHRoaXMubmFtZXNwYWNlO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEdyb3Vwc1Jlc3BvbnNlIGltcGxlbWVudHMgaS5Hcm91cHNSZXNwb25zZUludGVyZmFjZSB7XG4gICAgZ3JvdXBzOiBHcm91cFJlc3BvbnNlW107XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBHcm91cHNSZXNwb25zZSB7XG4gICAgICAgIGxldCBtID0gbmV3IEdyb3Vwc1Jlc3BvbnNlKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLmdyb3Vwcykge20uZ3JvdXBzID0gcHJvdG8uZ3JvdXBzLm1hcChHcm91cFJlc3BvbnNlLmZyb21Qcm90byk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkdyb3Vwc1Jlc3BvbnNlSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZ3JvdXBzICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmdyb3VwcyAhPT0gbnVsbCkge3RvUmV0dXJuWydncm91cHMnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuZ3JvdXBzID8gKHRoaXMuZ3JvdXBzIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLmdyb3Vwczt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBIb3N0VXNlckRldGFpbHMgaW1wbGVtZW50cyBpLkhvc3RVc2VyRGV0YWlsc0ludGVyZmFjZSB7XG4gICAgaG9zdFVzZXJJZDogc3RyaW5nO1xuICAgIGhvc3RVc2VyTmFtZTogc3RyaW5nO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogSG9zdFVzZXJEZXRhaWxzIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgSG9zdFVzZXJEZXRhaWxzKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5Ib3N0VXNlckRldGFpbHNJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5ob3N0VXNlcklkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydob3N0VXNlcklkJ10gPSB0aGlzLmhvc3RVc2VySWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuaG9zdFVzZXJOYW1lICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydob3N0VXNlck5hbWUnXSA9IHRoaXMuaG9zdFVzZXJOYW1lO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIExpc3RUZWFtRXZlbnRUeXBlc1JlcXVlc3QgaW1wbGVtZW50cyBpLkxpc3RUZWFtRXZlbnRUeXBlc1JlcXVlc3RJbnRlcmZhY2Uge1xuICAgIG5hbWVzcGFjZTogc3RyaW5nO1xuICAgIGN1cnNvcjogc3RyaW5nO1xuICAgIHBhZ2VTaXplOiBudW1iZXI7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBMaXN0VGVhbUV2ZW50VHlwZXNSZXF1ZXN0IHtcbiAgICAgICAgbGV0IG0gPSBuZXcgTGlzdFRlYW1FdmVudFR5cGVzUmVxdWVzdCgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by5wYWdlU2l6ZSkge20ucGFnZVNpemUgPSBwYXJzZUludChwcm90by5wYWdlU2l6ZSwgMTApO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5MaXN0VGVhbUV2ZW50VHlwZXNSZXF1ZXN0SW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubmFtZXNwYWNlICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyduYW1lc3BhY2UnXSA9IHRoaXMubmFtZXNwYWNlO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmN1cnNvciAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnY3Vyc29yJ10gPSB0aGlzLmN1cnNvcjt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5wYWdlU2l6ZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsncGFnZVNpemUnXSA9IHRoaXMucGFnZVNpemU7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgTGlzdFRlYW1FdmVudFR5cGVzUmVzcG9uc2UgaW1wbGVtZW50cyBpLkxpc3RUZWFtRXZlbnRUeXBlc1Jlc3BvbnNlSW50ZXJmYWNlIHtcbiAgICBldmVudFR5cGVzOiBFdmVudFR5cGVbXTtcbiAgICBuZXh0Q3Vyc29yOiBzdHJpbmc7XG4gICAgaGFzTW9yZTogYm9vbGVhbjtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IExpc3RUZWFtRXZlbnRUeXBlc1Jlc3BvbnNlIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgTGlzdFRlYW1FdmVudFR5cGVzUmVzcG9uc2UoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8uZXZlbnRUeXBlcykge20uZXZlbnRUeXBlcyA9IHByb3RvLmV2ZW50VHlwZXMubWFwKEV2ZW50VHlwZS5mcm9tUHJvdG8pO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5MaXN0VGVhbUV2ZW50VHlwZXNSZXNwb25zZUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmV2ZW50VHlwZXMgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuZXZlbnRUeXBlcyAhPT0gbnVsbCkge3RvUmV0dXJuWydldmVudFR5cGVzJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmV2ZW50VHlwZXMgPyAodGhpcy5ldmVudFR5cGVzIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLmV2ZW50VHlwZXM7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubmV4dEN1cnNvciAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbmV4dEN1cnNvciddID0gdGhpcy5uZXh0Q3Vyc29yO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmhhc01vcmUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2hhc01vcmUnXSA9IHRoaXMuaGFzTW9yZTt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBMaXN0VXNlckV2ZW50VHlwZXNSZXF1ZXN0IGltcGxlbWVudHMgaS5MaXN0VXNlckV2ZW50VHlwZXNSZXF1ZXN0SW50ZXJmYWNlIHtcbiAgICBuYW1lc3BhY2U6IHN0cmluZztcbiAgICB1c2VySWQ6IHN0cmluZztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IExpc3RVc2VyRXZlbnRUeXBlc1JlcXVlc3Qge1xuICAgICAgICBsZXQgbSA9IG5ldyBMaXN0VXNlckV2ZW50VHlwZXNSZXF1ZXN0KCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5MaXN0VXNlckV2ZW50VHlwZXNSZXF1ZXN0SW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubmFtZXNwYWNlICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyduYW1lc3BhY2UnXSA9IHRoaXMubmFtZXNwYWNlO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnVzZXJJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsndXNlcklkJ10gPSB0aGlzLnVzZXJJZDt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBMaXN0VXNlckV2ZW50VHlwZXNSZXNwb25zZSBpbXBsZW1lbnRzIGkuTGlzdFVzZXJFdmVudFR5cGVzUmVzcG9uc2VJbnRlcmZhY2Uge1xuICAgIGV2ZW50VHlwZXM6IEV2ZW50VHlwZVtdO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogTGlzdFVzZXJFdmVudFR5cGVzUmVzcG9uc2Uge1xuICAgICAgICBsZXQgbSA9IG5ldyBMaXN0VXNlckV2ZW50VHlwZXNSZXNwb25zZSgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by5ldmVudFR5cGVzKSB7bS5ldmVudFR5cGVzID0gcHJvdG8uZXZlbnRUeXBlcy5tYXAoRXZlbnRUeXBlLmZyb21Qcm90byk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkxpc3RVc2VyRXZlbnRUeXBlc1Jlc3BvbnNlSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZXZlbnRUeXBlcyAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5ldmVudFR5cGVzICE9PSBudWxsKSB7dG9SZXR1cm5bJ2V2ZW50VHlwZXMnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuZXZlbnRUeXBlcyA/ICh0aGlzLmV2ZW50VHlwZXMgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuZXZlbnRUeXBlczt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTZXJ2aWNlUmVzcG9uc2UgaW1wbGVtZW50cyBpLlNlcnZpY2VSZXNwb25zZUludGVyZmFjZSB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgICBib29raW5nVXJsOiBzdHJpbmc7XG4gICAgaGV4Q29sb3I6IHN0cmluZztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IFNlcnZpY2VSZXNwb25zZSB7XG4gICAgICAgIGxldCBtID0gbmV3IFNlcnZpY2VSZXNwb25zZSgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuU2VydmljZVJlc3BvbnNlSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuaWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2lkJ10gPSB0aGlzLmlkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm5hbWUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ25hbWUnXSA9IHRoaXMubmFtZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5kZXNjcmlwdGlvbiAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnZGVzY3JpcHRpb24nXSA9IHRoaXMuZGVzY3JpcHRpb247fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuYm9va2luZ1VybCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnYm9va2luZ1VybCddID0gdGhpcy5ib29raW5nVXJsO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmhleENvbG9yICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydoZXhDb2xvciddID0gdGhpcy5oZXhDb2xvcjt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTZXJ2aWNlc1JlcXVlc3QgaW1wbGVtZW50cyBpLlNlcnZpY2VzUmVxdWVzdEludGVyZmFjZSB7XG4gICAgbmFtZXNwYWNlOiBzdHJpbmc7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBTZXJ2aWNlc1JlcXVlc3Qge1xuICAgICAgICBsZXQgbSA9IG5ldyBTZXJ2aWNlc1JlcXVlc3QoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLlNlcnZpY2VzUmVxdWVzdEludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm5hbWVzcGFjZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbmFtZXNwYWNlJ10gPSB0aGlzLm5hbWVzcGFjZTt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTZXJ2aWNlc1Jlc3BvbnNlIGltcGxlbWVudHMgaS5TZXJ2aWNlc1Jlc3BvbnNlSW50ZXJmYWNlIHtcbiAgICBzZXJ2aWNlczogU2VydmljZVJlc3BvbnNlW107XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBTZXJ2aWNlc1Jlc3BvbnNlIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgU2VydmljZXNSZXNwb25zZSgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by5zZXJ2aWNlcykge20uc2VydmljZXMgPSBwcm90by5zZXJ2aWNlcy5tYXAoU2VydmljZVJlc3BvbnNlLmZyb21Qcm90byk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLlNlcnZpY2VzUmVzcG9uc2VJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5zZXJ2aWNlcyAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5zZXJ2aWNlcyAhPT0gbnVsbCkge3RvUmV0dXJuWydzZXJ2aWNlcyddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5zZXJ2aWNlcyA/ICh0aGlzLnNlcnZpY2VzIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnNlcnZpY2VzO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFVzZXJSZXNwb25zZSBpbXBsZW1lbnRzIGkuVXNlclJlc3BvbnNlSW50ZXJmYWNlIHtcbiAgICB1c2VySWQ6IHN0cmluZztcbiAgICBkaXNwbGF5TmFtZTogc3RyaW5nO1xuICAgIGlzQ29uZmlndXJlZDogYm9vbGVhbjtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IFVzZXJSZXNwb25zZSB7XG4gICAgICAgIGxldCBtID0gbmV3IFVzZXJSZXNwb25zZSgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuVXNlclJlc3BvbnNlSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudXNlcklkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyd1c2VySWQnXSA9IHRoaXMudXNlcklkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmRpc3BsYXlOYW1lICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydkaXNwbGF5TmFtZSddID0gdGhpcy5kaXNwbGF5TmFtZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5pc0NvbmZpZ3VyZWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2lzQ29uZmlndXJlZCddID0gdGhpcy5pc0NvbmZpZ3VyZWQ7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG4iXX0=
|
|
749
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVldGluZy1leHRlcm5hbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL21lZXRpbmdzX3Nkay9zcmMvbGliL19pbnRlcm5hbC9vYmplY3RzL21lZXRpbmctZXh0ZXJuYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBT0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN6QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsbUJBQW1CLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDdEksT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLElBQUksQ0FBQztBQUM5QixPQUFPLEtBQUssQ0FBQyxNQUFNLFVBQVUsQ0FBQztBQUU5QixNQUFNLFVBQVUsaUJBQWlCLENBQUksT0FBWSxFQUFFLEtBQWE7SUFDOUQsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUU7UUFDN0IsT0FBTyxLQUFLLENBQUM7S0FDZDtJQUNELE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3hCLENBQUM7QUFFRCxNQUFNLE9BQU8seUJBQXlCO0lBT2xDLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBVTtRQUN2QixJQUFJLENBQUMsR0FBRyxJQUFJLHlCQUF5QixFQUFFLENBQUM7UUFDeEMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzVCLElBQUksS0FBSyxDQUFDLFFBQVEsRUFBRTtZQUFDLENBQUMsQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7U0FBQztRQUN2RSxJQUFJLEtBQUssQ0FBQyxRQUFRLEVBQUU7WUFBQyxDQUFDLENB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O0lBQ3BCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbIi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuLy8gQ29kZSBnZW5lcmF0ZWQgYnkgc2RrZ2VuXG4vLyBETyBOT1QgRURJVCEuXG4vL1xuLy8gT2JqZWN0cy5cbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuaW1wb3J0ICogYXMgaSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IERhdGVSYW5nZSB9IGZyb20gJy4vZGF0ZS1yYW5nZSc7XG5pbXBvcnQgeyBFdmVudFR5cGVEYXRlUmFuZ2UgfSBmcm9tICcuL21lZXRpbmctdHlwZSc7XG5pbXBvcnQgeyBJc29EYXRlVGltZVJhbmdlLCBDb250YWN0LCBBbnN3ZXJzLCBIb3N0VXNlciwgSG9zdE9yZGVyRGV0YWlscywgUGFnZWRSZXF1ZXN0T3B0aW9ucywgUGFnZWRSZXNwb25zZU1ldGFkYXRhIH0gZnJvbSAnLi9zaGFyZWQnO1xuaW1wb3J0IHsgVGltZVpvbmUgfSBmcm9tICcuLyc7XG5pbXBvcnQgKiBhcyBlIGZyb20gJy4uL2VudW1zJztcblxuZXhwb3J0IGZ1bmN0aW9uIGVudW1TdHJpbmdUb1ZhbHVlPEU+KGVudW1SZWY6IGFueSwgdmFsdWU6IHN0cmluZyk6IEUge1xuICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICByZXR1cm4gZW51bVJlZlt2YWx1ZV07XG59XG5cbmV4cG9ydCBjbGFzcyBBdmFpbGFibGVUaW1lU2xvdHNSZXF1ZXN0IGltcGxlbWVudHMgaS5BdmFpbGFibGVUaW1lU2xvdHNSZXF1ZXN0SW50ZXJmYWNlIHtcbiAgICBuYW1lc3BhY2U6IHN0cmluZztcbiAgICBldmVudFR5cGVJZDogc3RyaW5nO1xuICAgIHRpbWVTcGFuOiBEYXRlUmFuZ2U7XG4gICAgdGltZVpvbmU6ICBUaW1lWm9uZTtcbiAgICBob3N0VXNlcklkOiBzdHJpbmc7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBBdmFpbGFibGVUaW1lU2xvdHNSZXF1ZXN0IHtcbiAgICAgICAgbGV0IG0gPSBuZXcgQXZhaWxhYmxlVGltZVNsb3RzUmVxdWVzdCgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by50aW1lU3Bhbikge20udGltZVNwYW4gPSBEYXRlUmFuZ2UuZnJvbVByb3RvKHByb3RvLnRpbWVTcGFuKTt9XG4gICAgICAgIGlmIChwcm90by50aW1lWm9uZSkge20udGltZVpvbmUgPSAgVGltZVpvbmUuZnJvbVByb3RvKHByb3RvLnRpbWVab25lKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuQXZhaWxhYmxlVGltZVNsb3RzUmVxdWVzdEludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm5hbWVzcGFjZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbmFtZXNwYWNlJ10gPSB0aGlzLm5hbWVzcGFjZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5ldmVudFR5cGVJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnZXZlbnRUeXBlSWQnXSA9IHRoaXMuZXZlbnRUeXBlSWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudGltZVNwYW4gIT09ICd1bmRlZmluZWQnICYmIHRoaXMudGltZVNwYW4gIT09IG51bGwpIHt0b1JldHVyblsndGltZVNwYW4nXSA9ICd0b0FwaUpzb24nIGluIHRoaXMudGltZVNwYW4gPyAodGhpcy50aW1lU3BhbiBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy50aW1lU3Bhbjt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy50aW1lWm9uZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy50aW1lWm9uZSAhPT0gbnVsbCkge3RvUmV0dXJuWyd0aW1lWm9uZSddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy50aW1lWm9uZSA/ICh0aGlzLnRpbWVab25lIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnRpbWVab25lO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmhvc3RVc2VySWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2hvc3RVc2VySWQnXSA9IHRoaXMuaG9zdFVzZXJJZDt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBdmFpbGFibGVUaW1lU2xvdHNSZXNwb25zZSBpbXBsZW1lbnRzIGkuQXZhaWxhYmxlVGltZVNsb3RzUmVzcG9uc2VJbnRlcmZhY2Uge1xuICAgIHRpbWVTbG90czogSXNvRGF0ZVRpbWVSYW5nZVtdO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogQXZhaWxhYmxlVGltZVNsb3RzUmVzcG9uc2Uge1xuICAgICAgICBsZXQgbSA9IG5ldyBBdmFpbGFibGVUaW1lU2xvdHNSZXNwb25zZSgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by50aW1lU2xvdHMpIHttLnRpbWVTbG90cyA9IHByb3RvLnRpbWVTbG90cy5tYXAoSXNvRGF0ZVRpbWVSYW5nZS5mcm9tUHJvdG8pO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5BdmFpbGFibGVUaW1lU2xvdHNSZXNwb25zZUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnRpbWVTbG90cyAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy50aW1lU2xvdHMgIT09IG51bGwpIHt0b1JldHVyblsndGltZVNsb3RzJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLnRpbWVTbG90cyA/ICh0aGlzLnRpbWVTbG90cyBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy50aW1lU2xvdHM7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgQm9va01lZXRpbmdFeHRlcm5hbFJlcXVlc3QgaW1wbGVtZW50cyBpLkJvb2tNZWV0aW5nRXh0ZXJuYWxSZXF1ZXN0SW50ZXJmYWNlIHtcbiAgICBuYW1lc3BhY2U6IHN0cmluZztcbiAgICBldmVudFR5cGVJZDogc3RyaW5nO1xuICAgIHN0YXJ0OiBEYXRlO1xuICAgIGF0dGVuZGVlczogQ29udGFjdFtdO1xuICAgIGNvbW1lbnQ6IHN0cmluZztcbiAgICBsb2NhdGlvbjogc3RyaW5nO1xuICAgIGZvcm1BbnN3ZXJzOiBBbnN3ZXJzO1xuICAgIGhvc3RVc2VySWQ6IHN0cmluZztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IEJvb2tNZWV0aW5nRXh0ZXJuYWxSZXF1ZXN0IHtcbiAgICAgICAgbGV0IG0gPSBuZXcgQm9va01lZXRpbmdFeHRlcm5hbFJlcXVlc3QoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8uc3RhcnQpIHttLnN0YXJ0ID0gbmV3IERhdGUocHJvdG8uc3RhcnQpO31cbiAgICAgICAgaWYgKHByb3RvLmF0dGVuZGVlcykge20uYXR0ZW5kZWVzID0gcHJvdG8uYXR0ZW5kZWVzLm1hcChDb250YWN0LmZyb21Qcm90byk7fVxuICAgICAgICBpZiAocHJvdG8uZm9ybUFuc3dlcnMpIHttLmZvcm1BbnN3ZXJzID0gQW5zd2Vycy5mcm9tUHJvdG8ocHJvdG8uZm9ybUFuc3dlcnMpO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5Cb29rTWVldGluZ0V4dGVybmFsUmVxdWVzdEludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm5hbWVzcGFjZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbmFtZXNwYWNlJ10gPSB0aGlzLm5hbWVzcGFjZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5ldmVudFR5cGVJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnZXZlbnRUeXBlSWQnXSA9IHRoaXMuZXZlbnRUeXBlSWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc3RhcnQgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuc3RhcnQgIT09IG51bGwpIHt0b1JldHVyblsnc3RhcnQnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuc3RhcnQgPyAodGhpcy5zdGFydCBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5zdGFydDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5hdHRlbmRlZXMgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuYXR0ZW5kZWVzICE9PSBudWxsKSB7dG9SZXR1cm5bJ2F0dGVuZGVlcyddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5hdHRlbmRlZXMgPyAodGhpcy5hdHRlbmRlZXMgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuYXR0ZW5kZWVzO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmNvbW1lbnQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2NvbW1lbnQnXSA9IHRoaXMuY29tbWVudDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5sb2NhdGlvbiAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbG9jYXRpb24nXSA9IHRoaXMubG9jYXRpb247fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZm9ybUFuc3dlcnMgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuZm9ybUFuc3dlcnMgIT09IG51bGwpIHt0b1JldHVyblsnZm9ybUFuc3dlcnMnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuZm9ybUFuc3dlcnMgPyAodGhpcy5mb3JtQW5zd2VycyBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5mb3JtQW5zd2Vyczt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5ob3N0VXNlcklkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydob3N0VXNlcklkJ10gPSB0aGlzLmhvc3RVc2VySWQ7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgQm9va01lZXRpbmdFeHRlcm5hbFJlc3BvbnNlIGltcGxlbWVudHMgaS5Cb29rTWVldGluZ0V4dGVybmFsUmVzcG9uc2VJbnRlcmZhY2Uge1xuICAgIG1lZXRpbmdJZDogc3RyaW5nO1xuICAgIHVzZXJJZDogc3RyaW5nO1xuICAgIG1lZXRpbmdTdGFydFRpbWU6IERhdGU7XG4gICAgbWVldGluZ0VuZFRpbWU6IERhdGU7XG4gICAgZXZlbnRUeXBlSWQ6IHN0cmluZztcbiAgICB0aXRsZTogc3RyaW5nO1xuICAgIGxvY2F0aW9uOiBzdHJpbmc7XG4gICAgaG9zdERldGFpbHM6IEhvc3RVc2VyRGV0YWlsc1tdO1xuICAgIGJvb2tpbmdVcmw6IHN0cmluZztcbiAgICBjYW5jZWxVcmw6IHN0cmluZztcbiAgICByZXNjaGVkdWxlVXJsOiBzdHJpbmc7XG4gICAgbWVldGluZ0xpbms6IHN0cmluZztcbiAgICBhdHRlbmRlZUVtYWlsczogc3RyaW5nW107XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBCb29rTWVldGluZ0V4dGVybmFsUmVzcG9uc2Uge1xuICAgICAgICBsZXQgbSA9IG5ldyBCb29rTWVldGluZ0V4dGVybmFsUmVzcG9uc2UoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8ubWVldGluZ1N0YXJ0VGltZSkge20ubWVldGluZ1N0YXJ0VGltZSA9IG5ldyBEYXRlKHByb3RvLm1lZXRpbmdTdGFydFRpbWUpO31cbiAgICAgICAgaWYgKHByb3RvLm1lZXRpbmdFbmRUaW1lKSB7bS5tZWV0aW5nRW5kVGltZSA9IG5ldyBEYXRlKHByb3RvLm1lZXRpbmdFbmRUaW1lKTt9XG4gICAgICAgIGlmIChwcm90by5ob3N0RGV0YWlscykge20uaG9zdERldGFpbHMgPSBwcm90by5ob3N0RGV0YWlscy5tYXAoSG9zdFVzZXJEZXRhaWxzLmZyb21Qcm90byk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkJvb2tNZWV0aW5nRXh0ZXJuYWxSZXNwb25zZUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm1lZXRpbmdJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbWVldGluZ0lkJ10gPSB0aGlzLm1lZXRpbmdJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy51c2VySWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3VzZXJJZCddID0gdGhpcy51c2VySWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubWVldGluZ1N0YXJ0VGltZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5tZWV0aW5nU3RhcnRUaW1lICE9PSBudWxsKSB7dG9SZXR1cm5bJ21lZXRpbmdTdGFydFRpbWUnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMubWVldGluZ1N0YXJ0VGltZSA/ICh0aGlzLm1lZXRpbmdTdGFydFRpbWUgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMubWVldGluZ1N0YXJ0VGltZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5tZWV0aW5nRW5kVGltZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5tZWV0aW5nRW5kVGltZSAhPT0gbnVsbCkge3RvUmV0dXJuWydtZWV0aW5nRW5kVGltZSddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5tZWV0aW5nRW5kVGltZSA/ICh0aGlzLm1lZXRpbmdFbmRUaW1lIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLm1lZXRpbmdFbmRUaW1lO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmV2ZW50VHlwZUlkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydldmVudFR5cGVJZCddID0gdGhpcy5ldmVudFR5cGVJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy50aXRsZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsndGl0bGUnXSA9IHRoaXMudGl0bGU7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubG9jYXRpb24gIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2xvY2F0aW9uJ10gPSB0aGlzLmxvY2F0aW9uO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmhvc3REZXRhaWxzICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmhvc3REZXRhaWxzICE9PSBudWxsKSB7dG9SZXR1cm5bJ2hvc3REZXRhaWxzJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmhvc3REZXRhaWxzID8gKHRoaXMuaG9zdERldGFpbHMgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuaG9zdERldGFpbHM7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuYm9va2luZ1VybCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnYm9va2luZ1VybCddID0gdGhpcy5ib29raW5nVXJsO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmNhbmNlbFVybCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnY2FuY2VsVXJsJ10gPSB0aGlzLmNhbmNlbFVybDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5yZXNjaGVkdWxlVXJsICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydyZXNjaGVkdWxlVXJsJ10gPSB0aGlzLnJlc2NoZWR1bGVVcmw7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubWVldGluZ0xpbmsgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ21lZXRpbmdMaW5rJ10gPSB0aGlzLm1lZXRpbmdMaW5rO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmF0dGVuZGVlRW1haWxzICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydhdHRlbmRlZUVtYWlscyddID0gdGhpcy5hdHRlbmRlZUVtYWlsczt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBFdmVudFR5cGUgaW1wbGVtZW50cyBpLkV2ZW50VHlwZUludGVyZmFjZSB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgZHVyYXRpb246IHN0cmluZztcbiAgICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICAgIGJvb2tpbmdVcmw6IHN0cmluZztcbiAgICBsb2NhdGlvbjogc3RyaW5nO1xuICAgIGxvY2F0aW9uVHlwZTogZS5NZWV0aW5nTG9jYXRpb25UeXBlO1xuICAgIGxvY2F0aW9uR3VpZGVsaW5lczogc3RyaW5nO1xuICAgIGlzVmlkZW9Db25mZXJlbmNpbmdFbmFibGVkOiBib29sZWFuO1xuICAgIGNhbGVuZGFyVHlwZTogc3RyaW5nO1xuICAgIGhvc3RVc2VyczogSG9zdFVzZXJbXTtcbiAgICBib29raW5nV2luZG93OiBFdmVudFR5cGVEYXRlUmFuZ2U7XG4gICAgbWVldGluZ1R5cGU6IGUuVGVhbUV2ZW50TWVldGluZ1R5cGU7XG4gICAgaG9zdE9yZGVyRGV0YWlsczogSG9zdE9yZGVyRGV0YWlsc1tdO1xuICAgIGlzRW1haWxSZXF1aXJlZDogYm9vbGVhbjtcbiAgICBpc1Bob25lTnVtYmVyUmVxdWlyZWQ6IGJvb2xlYW47XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBFdmVudFR5cGUge1xuICAgICAgICBsZXQgbSA9IG5ldyBFdmVudFR5cGUoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8ubG9jYXRpb25UeXBlKSB7bS5sb2NhdGlvblR5cGUgPSBlbnVtU3RyaW5nVG9WYWx1ZTxlLk1lZXRpbmdMb2NhdGlvblR5cGU+KGUuTWVldGluZ0xvY2F0aW9uVHlwZSwgcHJvdG8ubG9jYXRpb25UeXBlKTt9XG4gICAgICAgIGlmIChwcm90by5ob3N0VXNlcnMpIHttLmhvc3RVc2VycyA9IHByb3RvLmhvc3RVc2Vycy5tYXAoSG9zdFVzZXIuZnJvbVByb3RvKTt9XG4gICAgICAgIGlmIChwcm90by5ib29raW5nV2luZG93KSB7bS5ib29raW5nV2luZG93ID0gRXZlbnRUeXBlRGF0ZVJhbmdlLmZyb21Qcm90byhwcm90by5ib29raW5nV2luZG93KTt9XG4gICAgICAgIGlmIChwcm90by5tZWV0aW5nVHlwZSkge20ubWVldGluZ1R5cGUgPSBlbnVtU3RyaW5nVG9WYWx1ZTxlLlRlYW1FdmVudE1lZXRpbmdUeXBlPihlLlRlYW1FdmVudE1lZXRpbmdUeXBlLCBwcm90by5tZWV0aW5nVHlwZSk7fVxuICAgICAgICBpZiAocHJvdG8uaG9zdE9yZGVyRGV0YWlscykge20uaG9zdE9yZGVyRGV0YWlscyA9IHByb3RvLmhvc3RPcmRlckRldGFpbHMubWFwKEhvc3RPcmRlckRldGFpbHMuZnJvbVByb3RvKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuRXZlbnRUeXBlSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuaWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2lkJ10gPSB0aGlzLmlkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm5hbWUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ25hbWUnXSA9IHRoaXMubmFtZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5kdXJhdGlvbiAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnZHVyYXRpb24nXSA9IHRoaXMuZHVyYXRpb247fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZGVzY3JpcHRpb24gIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2Rlc2NyaXB0aW9uJ10gPSB0aGlzLmRlc2NyaXB0aW9uO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmJvb2tpbmdVcmwgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2Jvb2tpbmdVcmwnXSA9IHRoaXMuYm9va2luZ1VybDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5sb2NhdGlvbiAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbG9jYXRpb24nXSA9IHRoaXMubG9jYXRpb247fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubG9jYXRpb25UeXBlICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydsb2NhdGlvblR5cGUnXSA9IHRoaXMubG9jYXRpb25UeXBlO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmxvY2F0aW9uR3VpZGVsaW5lcyAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbG9jYXRpb25HdWlkZWxpbmVzJ10gPSB0aGlzLmxvY2F0aW9uR3VpZGVsaW5lczt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5pc1ZpZGVvQ29uZmVyZW5jaW5nRW5hYmxlZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnaXNWaWRlb0NvbmZlcmVuY2luZ0VuYWJsZWQnXSA9IHRoaXMuaXNWaWRlb0NvbmZlcmVuY2luZ0VuYWJsZWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuY2FsZW5kYXJUeXBlICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydjYWxlbmRhclR5cGUnXSA9IHRoaXMuY2FsZW5kYXJUeXBlO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmhvc3RVc2VycyAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5ob3N0VXNlcnMgIT09IG51bGwpIHt0b1JldHVyblsnaG9zdFVzZXJzJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmhvc3RVc2VycyA/ICh0aGlzLmhvc3RVc2VycyBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5ob3N0VXNlcnM7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuYm9va2luZ1dpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5ib29raW5nV2luZG93ICE9PSBudWxsKSB7dG9SZXR1cm5bJ2Jvb2tpbmdXaW5kb3cnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuYm9va2luZ1dpbmRvdyA/ICh0aGlzLmJvb2tpbmdXaW5kb3cgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuYm9va2luZ1dpbmRvdzt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5tZWV0aW5nVHlwZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbWVldGluZ1R5cGUnXSA9IHRoaXMubWVldGluZ1R5cGU7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuaG9zdE9yZGVyRGV0YWlscyAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5ob3N0T3JkZXJEZXRhaWxzICE9PSBudWxsKSB7dG9SZXR1cm5bJ2hvc3RPcmRlckRldGFpbHMnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuaG9zdE9yZGVyRGV0YWlscyA/ICh0aGlzLmhvc3RPcmRlckRldGFpbHMgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuaG9zdE9yZGVyRGV0YWlsczt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5pc0VtYWlsUmVxdWlyZWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2lzRW1haWxSZXF1aXJlZCddID0gdGhpcy5pc0VtYWlsUmVxdWlyZWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuaXNQaG9uZU51bWJlclJlcXVpcmVkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydpc1Bob25lTnVtYmVyUmVxdWlyZWQnXSA9IHRoaXMuaXNQaG9uZU51bWJlclJlcXVpcmVkO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEV4dGVybmFsQ2FuY2VsTWVldGluZ1JlcXVlc3QgaW1wbGVtZW50cyBpLkV4dGVybmFsQ2FuY2VsTWVldGluZ1JlcXVlc3RJbnRlcmZhY2Uge1xuICAgIG5hbWVzcGFjZTogc3RyaW5nO1xuICAgIG1lZXRpbmdJZDogc3RyaW5nO1xuICAgIGNhbmNlbGxhdGlvblJlYXNvbjogc3RyaW5nO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogRXh0ZXJuYWxDYW5jZWxNZWV0aW5nUmVxdWVzdCB7XG4gICAgICAgIGxldCBtID0gbmV3IEV4dGVybmFsQ2FuY2VsTWVldGluZ1JlcXVlc3QoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkV4dGVybmFsQ2FuY2VsTWVldGluZ1JlcXVlc3RJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5uYW1lc3BhY2UgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ25hbWVzcGFjZSddID0gdGhpcy5uYW1lc3BhY2U7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubWVldGluZ0lkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydtZWV0aW5nSWQnXSA9IHRoaXMubWVldGluZ0lkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmNhbmNlbGxhdGlvblJlYXNvbiAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnY2FuY2VsbGF0aW9uUmVhc29uJ10gPSB0aGlzLmNhbmNlbGxhdGlvblJlYXNvbjt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBFeHRlcm5hbFJlc2NoZWR1bGVNZWV0aW5nUmVxdWVzdCBpbXBsZW1lbnRzIGkuRXh0ZXJuYWxSZXNjaGVkdWxlTWVldGluZ1JlcXVlc3RJbnRlcmZhY2Uge1xuICAgIG5hbWVzcGFjZTogc3RyaW5nO1xuICAgIG1lZXRpbmdJZDogc3RyaW5nO1xuICAgIHN0YXJ0VGltZTogRGF0ZTtcbiAgICBsb2NhdGlvbjogc3RyaW5nO1xuICAgIHRpbWVab25lOiAgVGltZVpvbmU7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBFeHRlcm5hbFJlc2NoZWR1bGVNZWV0aW5nUmVxdWVzdCB7XG4gICAgICAgIGxldCBtID0gbmV3IEV4dGVybmFsUmVzY2hlZHVsZU1lZXRpbmdSZXF1ZXN0KCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLnN0YXJ0VGltZSkge20uc3RhcnRUaW1lID0gbmV3IERhdGUocHJvdG8uc3RhcnRUaW1lKTt9XG4gICAgICAgIGlmIChwcm90by50aW1lWm9uZSkge20udGltZVpvbmUgPSAgVGltZVpvbmUuZnJvbVByb3RvKHByb3RvLnRpbWVab25lKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuRXh0ZXJuYWxSZXNjaGVkdWxlTWVldGluZ1JlcXVlc3RJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5uYW1lc3BhY2UgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ25hbWVzcGFjZSddID0gdGhpcy5uYW1lc3BhY2U7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubWVldGluZ0lkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydtZWV0aW5nSWQnXSA9IHRoaXMubWVldGluZ0lkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnN0YXJ0VGltZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5zdGFydFRpbWUgIT09IG51bGwpIHt0b1JldHVyblsnc3RhcnRUaW1lJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLnN0YXJ0VGltZSA/ICh0aGlzLnN0YXJ0VGltZSBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5zdGFydFRpbWU7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubG9jYXRpb24gIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2xvY2F0aW9uJ10gPSB0aGlzLmxvY2F0aW9uO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnRpbWVab25lICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLnRpbWVab25lICE9PSBudWxsKSB7dG9SZXR1cm5bJ3RpbWVab25lJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLnRpbWVab25lID8gKHRoaXMudGltZVpvbmUgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMudGltZVpvbmU7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgRXh0ZXJuYWxSZXNjaGVkdWxlTWVldGluZ1Jlc3BvbnNlIGltcGxlbWVudHMgaS5FeHRlcm5hbFJlc2NoZWR1bGVNZWV0aW5nUmVzcG9uc2VJbnRlcmZhY2Uge1xuICAgIG1lZXRpbmdJZDogc3RyaW5nO1xuICAgIHN0YXJ0VGltZTogRGF0ZTtcbiAgICBlbmRUaW1lOiBEYXRlO1xuICAgIGhvc3REZXRhaWxzOiBIb3N0VXNlckRldGFpbHNbXTtcbiAgICBldmVudFR5cGVJZDogc3RyaW5nO1xuICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgbG9jYXRpb246IHN0cmluZztcbiAgICBtZWV0aW5nVXJsOiBzdHJpbmc7XG4gICAgYm9va2luZ1VybDogc3RyaW5nO1xuICAgIHJlc2NoZWR1bGVVcmw6IHN0cmluZztcbiAgICBjYW5jZWxVcmw6IHN0cmluZztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IEV4dGVybmFsUmVzY2hlZHVsZU1lZXRpbmdSZXNwb25zZSB7XG4gICAgICAgIGxldCBtID0gbmV3IEV4dGVybmFsUmVzY2hlZHVsZU1lZXRpbmdSZXNwb25zZSgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by5zdGFydFRpbWUpIHttLnN0YXJ0VGltZSA9IG5ldyBEYXRlKHByb3RvLnN0YXJ0VGltZSk7fVxuICAgICAgICBpZiAocHJvdG8uZW5kVGltZSkge20uZW5kVGltZSA9IG5ldyBEYXRlKHByb3RvLmVuZFRpbWUpO31cbiAgICAgICAgaWYgKHByb3RvLmhvc3REZXRhaWxzKSB7bS5ob3N0RGV0YWlscyA9IHByb3RvLmhvc3REZXRhaWxzLm1hcChIb3N0VXNlckRldGFpbHMuZnJvbVByb3RvKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuRXh0ZXJuYWxSZXNjaGVkdWxlTWVldGluZ1Jlc3BvbnNlSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubWVldGluZ0lkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydtZWV0aW5nSWQnXSA9IHRoaXMubWVldGluZ0lkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnN0YXJ0VGltZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5zdGFydFRpbWUgIT09IG51bGwpIHt0b1JldHVyblsnc3RhcnRUaW1lJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLnN0YXJ0VGltZSA/ICh0aGlzLnN0YXJ0VGltZSBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5zdGFydFRpbWU7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZW5kVGltZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5lbmRUaW1lICE9PSBudWxsKSB7dG9SZXR1cm5bJ2VuZFRpbWUnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuZW5kVGltZSA/ICh0aGlzLmVuZFRpbWUgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuZW5kVGltZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5ob3N0RGV0YWlscyAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5ob3N0RGV0YWlscyAhPT0gbnVsbCkge3RvUmV0dXJuWydob3N0RGV0YWlscyddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5ob3N0RGV0YWlscyA/ICh0aGlzLmhvc3REZXRhaWxzIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLmhvc3REZXRhaWxzO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmV2ZW50VHlwZUlkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydldmVudFR5cGVJZCddID0gdGhpcy5ldmVudFR5cGVJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy50aXRsZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsndGl0bGUnXSA9IHRoaXMudGl0bGU7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubG9jYXRpb24gIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2xvY2F0aW9uJ10gPSB0aGlzLmxvY2F0aW9uO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm1lZXRpbmdVcmwgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ21lZXRpbmdVcmwnXSA9IHRoaXMubWVldGluZ1VybDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5ib29raW5nVXJsICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydib29raW5nVXJsJ10gPSB0aGlzLmJvb2tpbmdVcmw7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucmVzY2hlZHVsZVVybCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsncmVzY2hlZHVsZVVybCddID0gdGhpcy5yZXNjaGVkdWxlVXJsO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmNhbmNlbFVybCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnY2FuY2VsVXJsJ10gPSB0aGlzLmNhbmNlbFVybDt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBHZXRVc2Vyc1JlcXVlc3QgaW1wbGVtZW50cyBpLkdldFVzZXJzUmVxdWVzdEludGVyZmFjZSB7XG4gICAgbmFtZXNwYWNlOiBzdHJpbmc7XG4gICAgcGFnZWRSZXF1ZXN0T3B0aW9uczogUGFnZWRSZXF1ZXN0T3B0aW9ucztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IEdldFVzZXJzUmVxdWVzdCB7XG4gICAgICAgIGxldCBtID0gbmV3IEdldFVzZXJzUmVxdWVzdCgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by5wYWdlZFJlcXVlc3RPcHRpb25zKSB7bS5wYWdlZFJlcXVlc3RPcHRpb25zID0gUGFnZWRSZXF1ZXN0T3B0aW9ucy5mcm9tUHJvdG8ocHJvdG8ucGFnZWRSZXF1ZXN0T3B0aW9ucyk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkdldFVzZXJzUmVxdWVzdEludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm5hbWVzcGFjZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbmFtZXNwYWNlJ10gPSB0aGlzLm5hbWVzcGFjZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5wYWdlZFJlcXVlc3RPcHRpb25zICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLnBhZ2VkUmVxdWVzdE9wdGlvbnMgIT09IG51bGwpIHt0b1JldHVyblsncGFnZWRSZXF1ZXN0T3B0aW9ucyddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5wYWdlZFJlcXVlc3RPcHRpb25zID8gKHRoaXMucGFnZWRSZXF1ZXN0T3B0aW9ucyBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5wYWdlZFJlcXVlc3RPcHRpb25zO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEdldFVzZXJzUmVzcG9uc2UgaW1wbGVtZW50cyBpLkdldFVzZXJzUmVzcG9uc2VJbnRlcmZhY2Uge1xuICAgIHVzZXJzOiBVc2VyUmVzcG9uc2VbXTtcbiAgICBwYWdlZFJlc3BvbnNlTWV0YWRhdGE6IFBhZ2VkUmVzcG9uc2VNZXRhZGF0YTtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IEdldFVzZXJzUmVzcG9uc2Uge1xuICAgICAgICBsZXQgbSA9IG5ldyBHZXRVc2Vyc1Jlc3BvbnNlKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLnVzZXJzKSB7bS51c2VycyA9IHByb3RvLnVzZXJzLm1hcChVc2VyUmVzcG9uc2UuZnJvbVByb3RvKTt9XG4gICAgICAgIGlmIChwcm90by5wYWdlZFJlc3BvbnNlTWV0YWRhdGEpIHttLnBhZ2VkUmVzcG9uc2VNZXRhZGF0YSA9IFBhZ2VkUmVzcG9uc2VNZXRhZGF0YS5mcm9tUHJvdG8ocHJvdG8ucGFnZWRSZXNwb25zZU1ldGFkYXRhKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuR2V0VXNlcnNSZXNwb25zZUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnVzZXJzICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLnVzZXJzICE9PSBudWxsKSB7dG9SZXR1cm5bJ3VzZXJzJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLnVzZXJzID8gKHRoaXMudXNlcnMgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMudXNlcnM7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucGFnZWRSZXNwb25zZU1ldGFkYXRhICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLnBhZ2VkUmVzcG9uc2VNZXRhZGF0YSAhPT0gbnVsbCkge3RvUmV0dXJuWydwYWdlZFJlc3BvbnNlTWV0YWRhdGEnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMucGFnZWRSZXNwb25zZU1ldGFkYXRhID8gKHRoaXMucGFnZWRSZXNwb25zZU1ldGFkYXRhIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnBhZ2VkUmVzcG9uc2VNZXRhZGF0YTt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBHcm91cFJlc3BvbnNlIGltcGxlbWVudHMgaS5Hcm91cFJlc3BvbnNlSW50ZXJmYWNlIHtcbiAgICBpZDogc3RyaW5nO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICAgIGJvb2tpbmdVcmw6IHN0cmluZztcbiAgICBoZXhDb2xvcjogc3RyaW5nO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogR3JvdXBSZXNwb25zZSB7XG4gICAgICAgIGxldCBtID0gbmV3IEdyb3VwUmVzcG9uc2UoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkdyb3VwUmVzcG9uc2VJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5pZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnaWQnXSA9IHRoaXMuaWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubmFtZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbmFtZSddID0gdGhpcy5uYW1lO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmRlc2NyaXB0aW9uICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydkZXNjcmlwdGlvbiddID0gdGhpcy5kZXNjcmlwdGlvbjt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5ib29raW5nVXJsICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydib29raW5nVXJsJ10gPSB0aGlzLmJvb2tpbmdVcmw7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuaGV4Q29sb3IgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2hleENvbG9yJ10gPSB0aGlzLmhleENvbG9yO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEdyb3Vwc1JlcXVlc3QgaW1wbGVtZW50cyBpLkdyb3Vwc1JlcXVlc3RJbnRlcmZhY2Uge1xuICAgIG5hbWVzcGFjZTogc3RyaW5nO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogR3JvdXBzUmVxdWVzdCB7XG4gICAgICAgIGxldCBtID0gbmV3IEdyb3Vwc1JlcXVlc3QoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkdyb3Vwc1JlcXVlc3RJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5uYW1lc3BhY2UgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ25hbWVzcGFjZSddID0gdGhpcy5uYW1lc3BhY2U7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgR3JvdXBzUmVzcG9uc2UgaW1wbGVtZW50cyBpLkdyb3Vwc1Jlc3BvbnNlSW50ZXJmYWNlIHtcbiAgICBncm91cHM6IEdyb3VwUmVzcG9uc2VbXTtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IEdyb3Vwc1Jlc3BvbnNlIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgR3JvdXBzUmVzcG9uc2UoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8uZ3JvdXBzKSB7bS5ncm91cHMgPSBwcm90by5ncm91cHMubWFwKEdyb3VwUmVzcG9uc2UuZnJvbVByb3RvKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuR3JvdXBzUmVzcG9uc2VJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5ncm91cHMgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuZ3JvdXBzICE9PSBudWxsKSB7dG9SZXR1cm5bJ2dyb3VwcyddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5ncm91cHMgPyAodGhpcy5ncm91cHMgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuZ3JvdXBzO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEhvc3RVc2VyRGV0YWlscyBpbXBsZW1lbnRzIGkuSG9zdFVzZXJEZXRhaWxzSW50ZXJmYWNlIHtcbiAgICBob3N0VXNlcklkOiBzdHJpbmc7XG4gICAgaG9zdFVzZXJOYW1lOiBzdHJpbmc7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBIb3N0VXNlckRldGFpbHMge1xuICAgICAgICBsZXQgbSA9IG5ldyBIb3N0VXNlckRldGFpbHMoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkhvc3RVc2VyRGV0YWlsc0ludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmhvc3RVc2VySWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2hvc3RVc2VySWQnXSA9IHRoaXMuaG9zdFVzZXJJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5ob3N0VXNlck5hbWUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2hvc3RVc2VyTmFtZSddID0gdGhpcy5ob3N0VXNlck5hbWU7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgTGlzdFRlYW1FdmVudFR5cGVzUmVxdWVzdCBpbXBsZW1lbnRzIGkuTGlzdFRlYW1FdmVudFR5cGVzUmVxdWVzdEludGVyZmFjZSB7XG4gICAgbmFtZXNwYWNlOiBzdHJpbmc7XG4gICAgY3Vyc29yOiBzdHJpbmc7XG4gICAgcGFnZVNpemU6IG51bWJlcjtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IExpc3RUZWFtRXZlbnRUeXBlc1JlcXVlc3Qge1xuICAgICAgICBsZXQgbSA9IG5ldyBMaXN0VGVhbUV2ZW50VHlwZXNSZXF1ZXN0KCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLnBhZ2VTaXplKSB7bS5wYWdlU2l6ZSA9IHBhcnNlSW50KHByb3RvLnBhZ2VTaXplLCAxMCk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkxpc3RUZWFtRXZlbnRUeXBlc1JlcXVlc3RJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5uYW1lc3BhY2UgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ25hbWVzcGFjZSddID0gdGhpcy5uYW1lc3BhY2U7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuY3Vyc29yICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydjdXJzb3InXSA9IHRoaXMuY3Vyc29yO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnBhZ2VTaXplICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydwYWdlU2l6ZSddID0gdGhpcy5wYWdlU2l6ZTt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBMaXN0VGVhbUV2ZW50VHlwZXNSZXNwb25zZSBpbXBsZW1lbnRzIGkuTGlzdFRlYW1FdmVudFR5cGVzUmVzcG9uc2VJbnRlcmZhY2Uge1xuICAgIGV2ZW50VHlwZXM6IEV2ZW50VHlwZVtdO1xuICAgIG5leHRDdXJzb3I6IHN0cmluZztcbiAgICBoYXNNb3JlOiBib29sZWFuO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogTGlzdFRlYW1FdmVudFR5cGVzUmVzcG9uc2Uge1xuICAgICAgICBsZXQgbSA9IG5ldyBMaXN0VGVhbUV2ZW50VHlwZXNSZXNwb25zZSgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by5ldmVudFR5cGVzKSB7bS5ldmVudFR5cGVzID0gcHJvdG8uZXZlbnRUeXBlcy5tYXAoRXZlbnRUeXBlLmZyb21Qcm90byk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkxpc3RUZWFtRXZlbnRUeXBlc1Jlc3BvbnNlSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZXZlbnRUeXBlcyAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5ldmVudFR5cGVzICE9PSBudWxsKSB7dG9SZXR1cm5bJ2V2ZW50VHlwZXMnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuZXZlbnRUeXBlcyA/ICh0aGlzLmV2ZW50VHlwZXMgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuZXZlbnRUeXBlczt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5uZXh0Q3Vyc29yICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyduZXh0Q3Vyc29yJ10gPSB0aGlzLm5leHRDdXJzb3I7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuaGFzTW9yZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnaGFzTW9yZSddID0gdGhpcy5oYXNNb3JlO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIExpc3RVc2VyRXZlbnRUeXBlc1JlcXVlc3QgaW1wbGVtZW50cyBpLkxpc3RVc2VyRXZlbnRUeXBlc1JlcXVlc3RJbnRlcmZhY2Uge1xuICAgIG5hbWVzcGFjZTogc3RyaW5nO1xuICAgIHVzZXJJZDogc3RyaW5nO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogTGlzdFVzZXJFdmVudFR5cGVzUmVxdWVzdCB7XG4gICAgICAgIGxldCBtID0gbmV3IExpc3RVc2VyRXZlbnRUeXBlc1JlcXVlc3QoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkxpc3RVc2VyRXZlbnRUeXBlc1JlcXVlc3RJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5uYW1lc3BhY2UgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ25hbWVzcGFjZSddID0gdGhpcy5uYW1lc3BhY2U7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudXNlcklkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyd1c2VySWQnXSA9IHRoaXMudXNlcklkO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIExpc3RVc2VyRXZlbnRUeXBlc1Jlc3BvbnNlIGltcGxlbWVudHMgaS5MaXN0VXNlckV2ZW50VHlwZXNSZXNwb25zZUludGVyZmFjZSB7XG4gICAgZXZlbnRUeXBlczogRXZlbnRUeXBlW107XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBMaXN0VXNlckV2ZW50VHlwZXNSZXNwb25zZSB7XG4gICAgICAgIGxldCBtID0gbmV3IExpc3RVc2VyRXZlbnRUeXBlc1Jlc3BvbnNlKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLmV2ZW50VHlwZXMpIHttLmV2ZW50VHlwZXMgPSBwcm90by5ldmVudFR5cGVzLm1hcChFdmVudFR5cGUuZnJvbVByb3RvKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuTGlzdFVzZXJFdmVudFR5cGVzUmVzcG9uc2VJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5ldmVudFR5cGVzICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmV2ZW50VHlwZXMgIT09IG51bGwpIHt0b1JldHVyblsnZXZlbnRUeXBlcyddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5ldmVudFR5cGVzID8gKHRoaXMuZXZlbnRUeXBlcyBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5ldmVudFR5cGVzO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFNlcnZpY2VSZXNwb25zZSBpbXBsZW1lbnRzIGkuU2VydmljZVJlc3BvbnNlSW50ZXJmYWNlIHtcbiAgICBpZDogc3RyaW5nO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICAgIGJvb2tpbmdVcmw6IHN0cmluZztcbiAgICBoZXhDb2xvcjogc3RyaW5nO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogU2VydmljZVJlc3BvbnNlIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgU2VydmljZVJlc3BvbnNlKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5TZXJ2aWNlUmVzcG9uc2VJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5pZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnaWQnXSA9IHRoaXMuaWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubmFtZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbmFtZSddID0gdGhpcy5uYW1lO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmRlc2NyaXB0aW9uICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydkZXNjcmlwdGlvbiddID0gdGhpcy5kZXNjcmlwdGlvbjt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5ib29raW5nVXJsICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydib29raW5nVXJsJ10gPSB0aGlzLmJvb2tpbmdVcmw7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuaGV4Q29sb3IgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2hleENvbG9yJ10gPSB0aGlzLmhleENvbG9yO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFNlcnZpY2VzUmVxdWVzdCBpbXBsZW1lbnRzIGkuU2VydmljZXNSZXF1ZXN0SW50ZXJmYWNlIHtcbiAgICBuYW1lc3BhY2U6IHN0cmluZztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IFNlcnZpY2VzUmVxdWVzdCB7XG4gICAgICAgIGxldCBtID0gbmV3IFNlcnZpY2VzUmVxdWVzdCgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuU2VydmljZXNSZXF1ZXN0SW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubmFtZXNwYWNlICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyduYW1lc3BhY2UnXSA9IHRoaXMubmFtZXNwYWNlO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFNlcnZpY2VzUmVzcG9uc2UgaW1wbGVtZW50cyBpLlNlcnZpY2VzUmVzcG9uc2VJbnRlcmZhY2Uge1xuICAgIHNlcnZpY2VzOiBTZXJ2aWNlUmVzcG9uc2VbXTtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IFNlcnZpY2VzUmVzcG9uc2Uge1xuICAgICAgICBsZXQgbSA9IG5ldyBTZXJ2aWNlc1Jlc3BvbnNlKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLnNlcnZpY2VzKSB7bS5zZXJ2aWNlcyA9IHByb3RvLnNlcnZpY2VzLm1hcChTZXJ2aWNlUmVzcG9uc2UuZnJvbVByb3RvKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuU2VydmljZXNSZXNwb25zZUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnNlcnZpY2VzICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLnNlcnZpY2VzICE9PSBudWxsKSB7dG9SZXR1cm5bJ3NlcnZpY2VzJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLnNlcnZpY2VzID8gKHRoaXMuc2VydmljZXMgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuc2VydmljZXM7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgVXNlclJlc3BvbnNlIGltcGxlbWVudHMgaS5Vc2VyUmVzcG9uc2VJbnRlcmZhY2Uge1xuICAgIHVzZXJJZDogc3RyaW5nO1xuICAgIGRpc3BsYXlOYW1lOiBzdHJpbmc7XG4gICAgaXNDb25maWd1cmVkOiBib29sZWFuO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogVXNlclJlc3BvbnNlIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgVXNlclJlc3BvbnNlKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5Vc2VyUmVzcG9uc2VJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy51c2VySWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3VzZXJJZCddID0gdGhpcy51c2VySWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZGlzcGxheU5hbWUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2Rpc3BsYXlOYW1lJ10gPSB0aGlzLmRpc3BsYXlOYW1lO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmlzQ29uZmlndXJlZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnaXNDb25maWd1cmVkJ10gPSB0aGlzLmlzQ29uZmlndXJlZDt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbiJdfQ==
|