UNPKG

@aneoconsultingfr/armonik.api.angular

Version:

gRPC API to interact with ArmoniK built for Angular

344 lines 46.8 kB
/* tslint:disable */ /* eslint-disable */ // @ts-nocheck // // THIS IS A GENERATED FILE // DO NOT MODIFY IT! YOUR CHANGES WILL BE LOST import { Inject, Injectable, Optional } from '@angular/core'; import { GrpcCallType, GrpcMetadata } from '@ngx-grpc/common'; import { GRPC_CLIENT_FACTORY, takeMessages, throwStatusErrors } from '@ngx-grpc/core'; import * as armonikApiGrpcV1Sessions007 from './sessions-common.pb'; import { GRPC_SESSIONS_CLIENT_SETTINGS } from './sessions-service.pbconf'; import * as i0 from "@angular/core"; import * as i1 from "@ngx-grpc/core"; /** * Service client implementation for armonik.api.grpc.v1.sessions.Sessions */ export class SessionsClient { constructor(settings, clientFactory, handler) { this.handler = handler; /** * Raw RPC implementation for each service client method. * The raw methods provide more control on the incoming data and events. E.g. they can be useful to read status `OK` metadata. * Attention: these methods do not throw errors when non-zero status codes are received. */ this.$raw = { /** * Unary call: /armonik.api.grpc.v1.sessions.Sessions/ListSessions * * @param requestMessage Request message * @param requestMetadata Request metadata * @returns Observable<GrpcEvent<armonikApiGrpcV1Sessions007.ListSessionsResponse>> */ listSessions: (requestData, requestMetadata = new GrpcMetadata()) => { return this.handler.handle({ type: GrpcCallType.unary, client: this.client, path: '/armonik.api.grpc.v1.sessions.Sessions/ListSessions', requestData, requestMetadata, requestClass: armonikApiGrpcV1Sessions007.ListSessionsRequest, responseClass: armonikApiGrpcV1Sessions007.ListSessionsResponse }); }, /** * Unary call: /armonik.api.grpc.v1.sessions.Sessions/GetSession * * @param requestMessage Request message * @param requestMetadata Request metadata * @returns Observable<GrpcEvent<armonikApiGrpcV1Sessions007.GetSessionResponse>> */ getSession: (requestData, requestMetadata = new GrpcMetadata()) => { return this.handler.handle({ type: GrpcCallType.unary, client: this.client, path: '/armonik.api.grpc.v1.sessions.Sessions/GetSession', requestData, requestMetadata, requestClass: armonikApiGrpcV1Sessions007.GetSessionRequest, responseClass: armonikApiGrpcV1Sessions007.GetSessionResponse }); }, /** * Unary call: /armonik.api.grpc.v1.sessions.Sessions/CancelSession * * @param requestMessage Request message * @param requestMetadata Request metadata * @returns Observable<GrpcEvent<armonikApiGrpcV1Sessions007.CancelSessionResponse>> */ cancelSession: (requestData, requestMetadata = new GrpcMetadata()) => { return this.handler.handle({ type: GrpcCallType.unary, client: this.client, path: '/armonik.api.grpc.v1.sessions.Sessions/CancelSession', requestData, requestMetadata, requestClass: armonikApiGrpcV1Sessions007.CancelSessionRequest, responseClass: armonikApiGrpcV1Sessions007.CancelSessionResponse }); }, /** * Unary call: /armonik.api.grpc.v1.sessions.Sessions/CreateSession * * @param requestMessage Request message * @param requestMetadata Request metadata * @returns Observable<GrpcEvent<armonikApiGrpcV1Sessions007.CreateSessionReply>> */ createSession: (requestData, requestMetadata = new GrpcMetadata()) => { return this.handler.handle({ type: GrpcCallType.unary, client: this.client, path: '/armonik.api.grpc.v1.sessions.Sessions/CreateSession', requestData, requestMetadata, requestClass: armonikApiGrpcV1Sessions007.CreateSessionRequest, responseClass: armonikApiGrpcV1Sessions007.CreateSessionReply }); }, /** * Unary call: /armonik.api.grpc.v1.sessions.Sessions/PauseSession * * @param requestMessage Request message * @param requestMetadata Request metadata * @returns Observable<GrpcEvent<armonikApiGrpcV1Sessions007.PauseSessionResponse>> */ pauseSession: (requestData, requestMetadata = new GrpcMetadata()) => { return this.handler.handle({ type: GrpcCallType.unary, client: this.client, path: '/armonik.api.grpc.v1.sessions.Sessions/PauseSession', requestData, requestMetadata, requestClass: armonikApiGrpcV1Sessions007.PauseSessionRequest, responseClass: armonikApiGrpcV1Sessions007.PauseSessionResponse }); }, /** * Unary call: /armonik.api.grpc.v1.sessions.Sessions/ResumeSession * * @param requestMessage Request message * @param requestMetadata Request metadata * @returns Observable<GrpcEvent<armonikApiGrpcV1Sessions007.ResumeSessionResponse>> */ resumeSession: (requestData, requestMetadata = new GrpcMetadata()) => { return this.handler.handle({ type: GrpcCallType.unary, client: this.client, path: '/armonik.api.grpc.v1.sessions.Sessions/ResumeSession', requestData, requestMetadata, requestClass: armonikApiGrpcV1Sessions007.ResumeSessionRequest, responseClass: armonikApiGrpcV1Sessions007.ResumeSessionResponse }); }, /** * Unary call: /armonik.api.grpc.v1.sessions.Sessions/CloseSession * * @param requestMessage Request message * @param requestMetadata Request metadata * @returns Observable<GrpcEvent<armonikApiGrpcV1Sessions007.CloseSessionResponse>> */ closeSession: (requestData, requestMetadata = new GrpcMetadata()) => { return this.handler.handle({ type: GrpcCallType.unary, client: this.client, path: '/armonik.api.grpc.v1.sessions.Sessions/CloseSession', requestData, requestMetadata, requestClass: armonikApiGrpcV1Sessions007.CloseSessionRequest, responseClass: armonikApiGrpcV1Sessions007.CloseSessionResponse }); }, /** * Unary call: /armonik.api.grpc.v1.sessions.Sessions/PurgeSession * * @param requestMessage Request message * @param requestMetadata Request metadata * @returns Observable<GrpcEvent<armonikApiGrpcV1Sessions007.PurgeSessionResponse>> */ purgeSession: (requestData, requestMetadata = new GrpcMetadata()) => { return this.handler.handle({ type: GrpcCallType.unary, client: this.client, path: '/armonik.api.grpc.v1.sessions.Sessions/PurgeSession', requestData, requestMetadata, requestClass: armonikApiGrpcV1Sessions007.PurgeSessionRequest, responseClass: armonikApiGrpcV1Sessions007.PurgeSessionResponse }); }, /** * Unary call: /armonik.api.grpc.v1.sessions.Sessions/DeleteSession * * @param requestMessage Request message * @param requestMetadata Request metadata * @returns Observable<GrpcEvent<armonikApiGrpcV1Sessions007.DeleteSessionResponse>> */ deleteSession: (requestData, requestMetadata = new GrpcMetadata()) => { return this.handler.handle({ type: GrpcCallType.unary, client: this.client, path: '/armonik.api.grpc.v1.sessions.Sessions/DeleteSession', requestData, requestMetadata, requestClass: armonikApiGrpcV1Sessions007.DeleteSessionRequest, responseClass: armonikApiGrpcV1Sessions007.DeleteSessionResponse }); }, /** * Unary call: /armonik.api.grpc.v1.sessions.Sessions/StopSubmission * * @param requestMessage Request message * @param requestMetadata Request metadata * @returns Observable<GrpcEvent<armonikApiGrpcV1Sessions007.StopSubmissionResponse>> */ stopSubmission: (requestData, requestMetadata = new GrpcMetadata()) => { return this.handler.handle({ type: GrpcCallType.unary, client: this.client, path: '/armonik.api.grpc.v1.sessions.Sessions/StopSubmission', requestData, requestMetadata, requestClass: armonikApiGrpcV1Sessions007.StopSubmissionRequest, responseClass: armonikApiGrpcV1Sessions007.StopSubmissionResponse }); } }; this.client = clientFactory.createClient('armonik.api.grpc.v1.sessions.Sessions', settings); } /** * Unary call @/armonik.api.grpc.v1.sessions.Sessions/ListSessions * * @param requestMessage Request message * @param requestMetadata Request metadata * @returns Observable<armonikApiGrpcV1Sessions007.ListSessionsResponse> */ listSessions(requestData, requestMetadata = new GrpcMetadata()) { return this.$raw .listSessions(requestData, requestMetadata) .pipe(throwStatusErrors(), takeMessages()); } /** * Unary call @/armonik.api.grpc.v1.sessions.Sessions/GetSession * * @param requestMessage Request message * @param requestMetadata Request metadata * @returns Observable<armonikApiGrpcV1Sessions007.GetSessionResponse> */ getSession(requestData, requestMetadata = new GrpcMetadata()) { return this.$raw .getSession(requestData, requestMetadata) .pipe(throwStatusErrors(), takeMessages()); } /** * Unary call @/armonik.api.grpc.v1.sessions.Sessions/CancelSession * * @param requestMessage Request message * @param requestMetadata Request metadata * @returns Observable<armonikApiGrpcV1Sessions007.CancelSessionResponse> */ cancelSession(requestData, requestMetadata = new GrpcMetadata()) { return this.$raw .cancelSession(requestData, requestMetadata) .pipe(throwStatusErrors(), takeMessages()); } /** * Unary call @/armonik.api.grpc.v1.sessions.Sessions/CreateSession * * @param requestMessage Request message * @param requestMetadata Request metadata * @returns Observable<armonikApiGrpcV1Sessions007.CreateSessionReply> */ createSession(requestData, requestMetadata = new GrpcMetadata()) { return this.$raw .createSession(requestData, requestMetadata) .pipe(throwStatusErrors(), takeMessages()); } /** * Unary call @/armonik.api.grpc.v1.sessions.Sessions/PauseSession * * @param requestMessage Request message * @param requestMetadata Request metadata * @returns Observable<armonikApiGrpcV1Sessions007.PauseSessionResponse> */ pauseSession(requestData, requestMetadata = new GrpcMetadata()) { return this.$raw .pauseSession(requestData, requestMetadata) .pipe(throwStatusErrors(), takeMessages()); } /** * Unary call @/armonik.api.grpc.v1.sessions.Sessions/ResumeSession * * @param requestMessage Request message * @param requestMetadata Request metadata * @returns Observable<armonikApiGrpcV1Sessions007.ResumeSessionResponse> */ resumeSession(requestData, requestMetadata = new GrpcMetadata()) { return this.$raw .resumeSession(requestData, requestMetadata) .pipe(throwStatusErrors(), takeMessages()); } /** * Unary call @/armonik.api.grpc.v1.sessions.Sessions/CloseSession * * @param requestMessage Request message * @param requestMetadata Request metadata * @returns Observable<armonikApiGrpcV1Sessions007.CloseSessionResponse> */ closeSession(requestData, requestMetadata = new GrpcMetadata()) { return this.$raw .closeSession(requestData, requestMetadata) .pipe(throwStatusErrors(), takeMessages()); } /** * Unary call @/armonik.api.grpc.v1.sessions.Sessions/PurgeSession * * @param requestMessage Request message * @param requestMetadata Request metadata * @returns Observable<armonikApiGrpcV1Sessions007.PurgeSessionResponse> */ purgeSession(requestData, requestMetadata = new GrpcMetadata()) { return this.$raw .purgeSession(requestData, requestMetadata) .pipe(throwStatusErrors(), takeMessages()); } /** * Unary call @/armonik.api.grpc.v1.sessions.Sessions/DeleteSession * * @param requestMessage Request message * @param requestMetadata Request metadata * @returns Observable<armonikApiGrpcV1Sessions007.DeleteSessionResponse> */ deleteSession(requestData, requestMetadata = new GrpcMetadata()) { return this.$raw .deleteSession(requestData, requestMetadata) .pipe(throwStatusErrors(), takeMessages()); } /** * Unary call @/armonik.api.grpc.v1.sessions.Sessions/StopSubmission * * @param requestMessage Request message * @param requestMetadata Request metadata * @returns Observable<armonikApiGrpcV1Sessions007.StopSubmissionResponse> */ stopSubmission(requestData, requestMetadata = new GrpcMetadata()) { return this.$raw .stopSubmission(requestData, requestMetadata) .pipe(throwStatusErrors(), takeMessages()); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.1", ngImport: i0, type: SessionsClient, deps: [{ token: GRPC_SESSIONS_CLIENT_SETTINGS, optional: true }, { token: GRPC_CLIENT_FACTORY }, { token: i1.GrpcHandler }], target: i0.ɵɵFactoryTarget.Injectable }); } static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.1", ngImport: i0, type: SessionsClient, providedIn: 'any' }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.1", ngImport: i0, type: SessionsClient, decorators: [{ type: Injectable, args: [{ providedIn: 'any' }] }], ctorParameters: () => [{ type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [GRPC_SESSIONS_CLIENT_SETTINGS] }] }, { type: undefined, decorators: [{ type: Inject, args: [GRPC_CLIENT_FACTORY] }] }, { type: i1.GrpcHandler }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbnMtc2VydmljZS5wYnNjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5lb2NvbnN1bHRpbmdmci9hcm1vbmlrLmFwaS5hbmd1bGFyL3NyYy9saWIvZ2VuZXJhdGVkL3Nlc3Npb25zLXNlcnZpY2UucGJzYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxvQkFBb0I7QUFDcEIsb0JBQW9CO0FBQ3BCLGNBQWM7QUFDZCxFQUFFO0FBQ0YsMkJBQTJCO0FBQzNCLDhDQUE4QztBQUM5QyxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUNMLFlBQVksRUFJWixZQUFZLEVBQ2IsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQ0wsbUJBQW1CLEVBRW5CLFlBQVksRUFDWixpQkFBaUIsRUFDbEIsTUFBTSxnQkFBZ0IsQ0FBQztBQVV4QixPQUFPLEtBQUssMkJBQTJCLE1BQU0sc0JBQXNCLENBQUM7QUFDcEUsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7OztBQUMxRTs7R0FFRztBQUVILE1BQU0sT0FBTyxjQUFjO0lBaVB6QixZQUNxRCxRQUFhLEVBQ25DLGFBQXFDLEVBQzFELE9BQW9CO1FBQXBCLFlBQU8sR0FBUCxPQUFPLENBQWE7UUFqUDlCOzs7O1dBSUc7UUFDSCxTQUFJLEdBQUc7WUFDTDs7Ozs7O2VBTUc7WUFDSCxZQUFZLEVBQUUsQ0FDWixXQUE0RCxFQUM1RCxlQUFlLEdBQUcsSUFBSSxZQUFZLEVBQUUsRUFHcEMsRUFBRTtnQkFDRixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO29CQUN6QixJQUFJLEVBQUUsWUFBWSxDQUFDLEtBQUs7b0JBQ3hCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtvQkFDbkIsSUFBSSxFQUFFLHFEQUFxRDtvQkFDM0QsV0FB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QUFpQixFQUFFLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsWUFBWSxDQUNWLFdBQTRELEVBQzVELGVBQWUsR0FBRyxJQUFJLFlBQVksRUFBRTtRQUVwQyxPQUFPLElBQUksQ0FBQyxJQUFJO2FBQ2IsWUFBWSxDQUFDLFdBQVcsRUFBRSxlQUFlLENBQUM7YUFDMUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsYUFBYSxDQUNYLFdBQTZELEVBQzdELGVBQWUsR0FBRyxJQUFJLFlBQVksRUFBRTtRQUVwQyxPQUFPLElBQUksQ0FBQyxJQUFJO2FBQ2IsYUFBYSxDQUFDLFdBQVcsRUFBRSxlQUFlLENBQUM7YUFDM0MsSUFBSSxDQUFDLGlCQUFpQixFQUFFLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsY0FBYyxDQUNaLFdBQThELEVBQzlELGVBQWUsR0FBRyxJQUFJLFlBQVksRUFBRTtRQUVwQyxPQUFPLElBQUksQ0FBQyxJQUFJO2FBQ2IsY0FBYyxDQUFDLFdBQVcsRUFBRSxlQUFlLENBQUM7YUFDNUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQztJQUMvQyxDQUFDOzhHQTFaVSxjQUFjLGtCQWtQSCw2QkFBNkIsNkJBQ3pDLG1CQUFtQjtrSEFuUGxCLGNBQWMsY0FERCxLQUFLOzsyRkFDbEIsY0FBYztrQkFEMUIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUU7OzBCQW1QNUIsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyw2QkFBNkI7OzBCQUNoRCxNQUFNOzJCQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbIi8qIHRzbGludDpkaXNhYmxlICovXG4vKiBlc2xpbnQtZGlzYWJsZSAqL1xuLy8gQHRzLW5vY2hlY2tcbi8vXG4vLyBUSElTIElTIEEgR0VORVJBVEVEIEZJTEVcbi8vIERPIE5PVCBNT0RJRlkgSVQhIFlPVVIgQ0hBTkdFUyBXSUxMIEJFIExPU1RcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEdycGNDYWxsVHlwZSxcbiAgR3JwY0NsaWVudCxcbiAgR3JwY0NsaWVudEZhY3RvcnksXG4gIEdycGNFdmVudCxcbiAgR3JwY01ldGFkYXRhXG59IGZyb20gJ0BuZ3gtZ3JwYy9jb21tb24nO1xuaW1wb3J0IHtcbiAgR1JQQ19DTElFTlRfRkFDVE9SWSxcbiAgR3JwY0hhbmRsZXIsXG4gIHRha2VNZXNzYWdlcyxcbiAgdGhyb3dTdGF0dXNFcnJvcnNcbn0gZnJvbSAnQG5neC1ncnBjL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0ICogYXMgdGhpc1Byb3RvIGZyb20gJy4vc2Vzc2lvbnMtc2VydmljZS5wYic7XG5pbXBvcnQgKiBhcyBnb29nbGVQcm90b2J1ZjAwMCBmcm9tICdAbmd4LWdycGMvd2VsbC1rbm93bi10eXBlcyc7XG5pbXBvcnQgKiBhcyBnb29nbGVQcm90b2J1ZjAwMSBmcm9tICdAbmd4LWdycGMvd2VsbC1rbm93bi10eXBlcyc7XG5pbXBvcnQgKiBhcyBhcm1vbmlrQXBpR3JwY1YxMDAyIGZyb20gJy4vb2JqZWN0cy5wYic7XG5pbXBvcnQgKiBhcyBhcm1vbmlrQXBpR3JwY1YxU2Vzc2lvbl9zdGF0dXMwMDMgZnJvbSAnLi9zZXNzaW9uLXN0YXR1cy5wYic7XG5pbXBvcnQgKiBhcyBhcm1vbmlrQXBpR3JwY1YxU2Vzc2lvbnMwMDQgZnJvbSAnLi9zZXNzaW9ucy1maWVsZHMucGInO1xuaW1wb3J0ICogYXMgYXJtb25pa0FwaUdycGNWMVNlc3Npb25zMDA1IGZyb20gJy4vc2Vzc2lvbnMtZmlsdGVycy5wYic7XG5pbXBvcnQgKiBhcyBhcm1vbmlrQXBpR3JwY1YxU29ydF9kaXJlY3Rpb24wMDYgZnJvbSAnLi9zb3J0LWRpcmVjdGlvbi5wYic7XG5pbXBvcnQgKiBhcyBhcm1vbmlrQXBpR3JwY1YxU2Vzc2lvbnMwMDcgZnJvbSAnLi9zZXNzaW9ucy1jb21tb24ucGInO1xuaW1wb3J0IHsgR1JQQ19TRVNTSU9OU19DTElFTlRfU0VUVElOR1MgfSBmcm9tICcuL3Nlc3Npb25zLXNlcnZpY2UucGJjb25mJztcbi8qKlxuICogU2VydmljZSBjbGllbnQgaW1wbGVtZW50YXRpb24gZm9yIGFybW9uaWsuYXBpLmdycGMudjEuc2Vzc2lvbnMuU2Vzc2lvbnNcbiAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAnYW55JyB9KVxuZXhwb3J0IGNsYXNzIFNlc3Npb25zQ2xpZW50IHtcbiAgcHJpdmF0ZSBjbGllbnQ6IEdycGNDbGllbnQ8YW55PjtcblxuICAvKipcbiAgICogUmF3IFJQQyBpbXBsZW1lbnRhdGlvbiBmb3IgZWFjaCBzZXJ2aWNlIGNsaWVudCBtZXRob2QuXG4gICAqIFRoZSByYXcgbWV0aG9kcyBwcm92aWRlIG1vcmUgY29udHJvbCBvbiB0aGUgaW5jb21pbmcgZGF0YSBhbmQgZXZlbnRzLiBFLmcuIHRoZXkgY2FuIGJlIHVzZWZ1bCB0byByZWFkIHN0YXR1cyBgT0tgIG1ldGFkYXRhLlxuICAgKiBBdHRlbnRpb246IHRoZXNlIG1ldGhvZHMgZG8gbm90IHRocm93IGVycm9ycyB3aGVuIG5vbi16ZXJvIHN0YXR1cyBjb2RlcyBhcmUgcmVjZWl2ZWQuXG4gICAqL1xuICAkcmF3ID0ge1xuICAgIC8qKlxuICAgICAqIFVuYXJ5IGNhbGw6IC9hcm1vbmlrLmFwaS5ncnBjLnYxLnNlc3Npb25zLlNlc3Npb25zL0xpc3RTZXNzaW9uc1xuICAgICAqXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXNzYWdlIFJlcXVlc3QgbWVzc2FnZVxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgICAqIEByZXR1cm5zIE9ic2VydmFibGU8R3JwY0V2ZW50PGFybW9uaWtBcGlHcnBjVjFTZXNzaW9uczAwNy5MaXN0U2Vzc2lvbnNSZXNwb25zZT4+XG4gICAgICovXG4gICAgbGlzdFNlc3Npb25zOiAoXG4gICAgICByZXF1ZXN0RGF0YTogYXJtb25pa0FwaUdycGNWMVNlc3Npb25zMDA3Lkxpc3RTZXNzaW9uc1JlcXVlc3QsXG4gICAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgICApOiBPYnNlcnZhYmxlPFxuICAgICAgR3JwY0V2ZW50PGFybW9uaWtBcGlHcnBjVjFTZXNzaW9uczAwNy5MaXN0U2Vzc2lvbnNSZXNwb25zZT5cbiAgICA+ID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZXIuaGFuZGxlKHtcbiAgICAgICAgdHlwZTogR3JwY0NhbGxUeXBlLnVuYXJ5LFxuICAgICAgICBjbGllbnQ6IHRoaXMuY2xpZW50LFxuICAgICAgICBwYXRoOiAnL2FybW9uaWsuYXBpLmdycGMudjEuc2Vzc2lvbnMuU2Vzc2lvbnMvTGlzdFNlc3Npb25zJyxcbiAgICAgICAgcmVxdWVzdERhdGEsXG4gICAgICAgIHJlcXVlc3RNZXRhZGF0YSxcbiAgICAgICAgcmVxdWVzdENsYXNzOiBhcm1vbmlrQXBpR3JwY1YxU2Vzc2lvbnMwMDcuTGlzdFNlc3Npb25zUmVxdWVzdCxcbiAgICAgICAgcmVzcG9uc2VDbGFzczogYXJtb25pa0FwaUdycGNWMVNlc3Npb25zMDA3Lkxpc3RTZXNzaW9uc1Jlc3BvbnNlXG4gICAgICB9KTtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIFVuYXJ5IGNhbGw6IC9hcm1vbmlrLmFwaS5ncnBjLnYxLnNlc3Npb25zLlNlc3Npb25zL0dldFNlc3Npb25cbiAgICAgKlxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWVzc2FnZSBSZXF1ZXN0IG1lc3NhZ2VcbiAgICAgKiBAcGFyYW0gcmVxdWVzdE1ldGFkYXRhIFJlcXVlc3QgbWV0YWRhdGFcbiAgICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPEdycGNFdmVudDxhcm1vbmlrQXBpR3JwY1YxU2Vzc2lvbnMwMDcuR2V0U2Vzc2lvblJlc3BvbnNlPj5cbiAgICAgKi9cbiAgICBnZXRTZXNzaW9uOiAoXG4gICAgICByZXF1ZXN0RGF0YTogYXJtb25pa0FwaUdycGNWMVNlc3Npb25zMDA3LkdldFNlc3Npb25SZXF1ZXN0LFxuICAgICAgcmVxdWVzdE1ldGFkYXRhID0gbmV3IEdycGNNZXRhZGF0YSgpXG4gICAgKTogT2JzZXJ2YWJsZTxcbiAgICAgIEdycGNFdmVudDxhcm1vbmlrQXBpR3JwY1YxU2Vzc2lvbnMwMDcuR2V0U2Vzc2lvblJlc3BvbnNlPlxuICAgID4gPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlci5oYW5kbGUoe1xuICAgICAgICB0eXBlOiBHcnBjQ2FsbFR5cGUudW5hcnksXG4gICAgICAgIGNsaWVudDogdGhpcy5jbGllbnQsXG4gICAgICAgIHBhdGg6ICcvYXJtb25pay5hcGkuZ3JwYy52MS5zZXNzaW9ucy5TZXNzaW9ucy9HZXRTZXNzaW9uJyxcbiAgICAgICAgcmVxdWVzdERhdGEsXG4gICAgICAgIHJlcXVlc3RNZXRhZGF0YSxcbiAgICAgICAgcmVxdWVzdENsYXNzOiBhcm1vbmlrQXBpR3JwY1YxU2Vzc2lvbnMwMDcuR2V0U2Vzc2lvblJlcXVlc3QsXG4gICAgICAgIHJlc3BvbnNlQ2xhc3M6IGFybW9uaWtBcGlHcnBjVjFTZXNzaW9uczAwNy5HZXRTZXNzaW9uUmVzcG9uc2VcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgLyoqXG4gICAgICogVW5hcnkgY2FsbDogL2FybW9uaWsuYXBpLmdycGMudjEuc2Vzc2lvbnMuU2Vzc2lvbnMvQ2FuY2VsU2Vzc2lvblxuICAgICAqXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXNzYWdlIFJlcXVlc3QgbWVzc2FnZVxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgICAqIEByZXR1cm5zIE9ic2VydmFibGU8R3JwY0V2ZW50PGFybW9uaWtBcGlHcnBjVjFTZXNzaW9uczAwNy5DYW5jZWxTZXNzaW9uUmVzcG9uc2U+PlxuICAgICAqL1xuICAgIGNhbmNlbFNlc3Npb246IChcbiAgICAgIHJlcXVlc3REYXRhOiBhcm1vbmlrQXBpR3JwY1YxU2Vzc2lvbnMwMDcuQ2FuY2VsU2Vzc2lvblJlcXVlc3QsXG4gICAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgICApOiBPYnNlcnZhYmxlPFxuICAgICAgR3JwY0V2ZW50PGFybW9uaWtBcGlHcnBjVjFTZXNzaW9uczAwNy5DYW5jZWxTZXNzaW9uUmVzcG9uc2U+XG4gICAgPiA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5oYW5kbGVyLmhhbmRsZSh7XG4gICAgICAgIHR5cGU6IEdycGNDYWxsVHlwZS51bmFyeSxcbiAgICAgICAgY2xpZW50OiB0aGlzLmNsaWVudCxcbiAgICAgICAgcGF0aDogJy9hcm1vbmlrLmFwaS5ncnBjLnYxLnNlc3Npb25zLlNlc3Npb25zL0NhbmNlbFNlc3Npb24nLFxuICAgICAgICByZXF1ZXN0RGF0YSxcbiAgICAgICAgcmVxdWVzdE1ldGFkYXRhLFxuICAgICAgICByZXF1ZXN0Q2xhc3M6IGFybW9uaWtBcGlHcnBjVjFTZXNzaW9uczAwNy5DYW5jZWxTZXNzaW9uUmVxdWVzdCxcbiAgICAgICAgcmVzcG9uc2VDbGFzczogYXJtb25pa0FwaUdycGNWMVNlc3Npb25zMDA3LkNhbmNlbFNlc3Npb25SZXNwb25zZVxuICAgICAgfSk7XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBVbmFyeSBjYWxsOiAvYXJtb25pay5hcGkuZ3JwYy52MS5zZXNzaW9ucy5TZXNzaW9ucy9DcmVhdGVTZXNzaW9uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcmVxdWVzdE1lc3NhZ2UgUmVxdWVzdCBtZXNzYWdlXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXRhZGF0YSBSZXF1ZXN0IG1ldGFkYXRhXG4gICAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxHcnBjRXZlbnQ8YXJtb25pa0FwaUdycGNWMVNlc3Npb25zMDA3LkNyZWF0ZVNlc3Npb25SZXBseT4+XG4gICAgICovXG4gICAgY3JlYXRlU2Vzc2lvbjogKFxuICAgICAgcmVxdWVzdERhdGE6IGFybW9uaWtBcGlHcnBjVjFTZXNzaW9uczAwNy5DcmVhdGVTZXNzaW9uUmVxdWVzdCxcbiAgICAgIHJlcXVlc3RNZXRhZGF0YSA9IG5ldyBHcnBjTWV0YWRhdGEoKVxuICAgICk6IE9ic2VydmFibGU8XG4gICAgICBHcnBjRXZlbnQ8YXJtb25pa0FwaUdycGNWMVNlc3Npb25zMDA3LkNyZWF0ZVNlc3Npb25SZXBseT5cbiAgICA+ID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZXIuaGFuZGxlKHtcbiAgICAgICAgdHlwZTogR3JwY0NhbGxUeXBlLnVuYXJ5LFxuICAgICAgICBjbGllbnQ6IHRoaXMuY2xpZW50LFxuICAgICAgICBwYXRoOiAnL2FybW9uaWsuYXBpLmdycGMudjEuc2Vzc2lvbnMuU2Vzc2lvbnMvQ3JlYXRlU2Vzc2lvbicsXG4gICAgICAgIHJlcXVlc3REYXRhLFxuICAgICAgICByZXF1ZXN0TWV0YWRhdGEsXG4gICAgICAgIHJlcXVlc3RDbGFzczogYXJtb25pa0FwaUdycGNWMVNlc3Npb25zMDA3LkNyZWF0ZVNlc3Npb25SZXF1ZXN0LFxuICAgICAgICByZXNwb25zZUNsYXNzOiBhcm1vbmlrQXBpR3JwY1YxU2Vzc2lvbnMwMDcuQ3JlYXRlU2Vzc2lvblJlcGx5XG4gICAgICB9KTtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIFVuYXJ5IGNhbGw6IC9hcm1vbmlrLmFwaS5ncnBjLnYxLnNlc3Npb25zLlNlc3Npb25zL1BhdXNlU2Vzc2lvblxuICAgICAqXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXNzYWdlIFJlcXVlc3QgbWVzc2FnZVxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgICAqIEByZXR1cm5zIE9ic2VydmFibGU8R3JwY0V2ZW50PGFybW9uaWtBcGlHcnBjVjFTZXNzaW9uczAwNy5QYXVzZVNlc3Npb25SZXNwb25zZT4+XG4gICAgICovXG4gICAgcGF1c2VTZXNzaW9uOiAoXG4gICAgICByZXF1ZXN0RGF0YTogYXJtb25pa0FwaUdycGNWMVNlc3Npb25zMDA3LlBhdXNlU2Vzc2lvblJlcXVlc3QsXG4gICAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgICApOiBPYnNlcnZhYmxlPFxuICAgICAgR3JwY0V2ZW50PGFybW9uaWtBcGlHcnBjVjFTZXNzaW9uczAwNy5QYXVzZVNlc3Npb25SZXNwb25zZT5cbiAgICA+ID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZXIuaGFuZGxlKHtcbiAgICAgICAgdHlwZTogR3JwY0NhbGxUeXBlLnVuYXJ5LFxuICAgICAgICBjbGllbnQ6IHRoaXMuY2xpZW50LFxuICAgICAgICBwYXRoOiAnL2FybW9uaWsuYXBpLmdycGMudjEuc2Vzc2lvbnMuU2Vzc2lvbnMvUGF1c2VTZXNzaW9uJyxcbiAgICAgICAgcmVxdWVzdERhdGEsXG4gICAgICAgIHJlcXVlc3RNZXRhZGF0YSxcbiAgICAgICAgcmVxdWVzdENsYXNzOiBhcm1vbmlrQXBpR3JwY1YxU2Vzc2lvbnMwMDcuUGF1c2VTZXNzaW9uUmVxdWVzdCxcbiAgICAgICAgcmVzcG9uc2VDbGFzczogYXJtb25pa0FwaUdycGNWMVNlc3Npb25zMDA3LlBhdXNlU2Vzc2lvblJlc3BvbnNlXG4gICAgICB9KTtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIFVuYXJ5IGNhbGw6IC9hcm1vbmlrLmFwaS5ncnBjLnYxLnNlc3Npb25zLlNlc3Npb25zL1Jlc3VtZVNlc3Npb25cbiAgICAgKlxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWVzc2FnZSBSZXF1ZXN0IG1lc3NhZ2VcbiAgICAgKiBAcGFyYW0gcmVxdWVzdE1ldGFkYXRhIFJlcXVlc3QgbWV0YWRhdGFcbiAgICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPEdycGNFdmVudDxhcm1vbmlrQXBpR3JwY1YxU2Vzc2lvbnMwMDcuUmVzdW1lU2Vzc2lvblJlc3BvbnNlPj5cbiAgICAgKi9cbiAgICByZXN1bWVTZXNzaW9uOiAoXG4gICAgICByZXF1ZXN0RGF0YTogYXJtb25pa0FwaUdycGNWMVNlc3Npb25zMDA3LlJlc3VtZVNlc3Npb25SZXF1ZXN0LFxuICAgICAgcmVxdWVzdE1ldGFkYXRhID0gbmV3IEdycGNNZXRhZGF0YSgpXG4gICAgKTogT2JzZXJ2YWJsZTxcbiAgICAgIEdycGNFdmVudDxhcm1vbmlrQXBpR3JwY1YxU2Vzc2lvbnMwMDcuUmVzdW1lU2Vzc2lvblJlc3BvbnNlPlxuICAgID4gPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlci5oYW5kbGUoe1xuICAgICAgICB0eXBlOiBHcnBjQ2FsbFR5cGUudW5hcnksXG4gICAgICAgIGNsaWVudDogdGhpcy5jbGllbnQsXG4gICAgICAgIHBhdGg6ICcvYXJtb25pay5hcGkuZ3JwYy52MS5zZXNzaW9ucy5TZXNzaW9ucy9SZXN1bWVTZXNzaW9uJyxcbiAgICAgICAgcmVxdWVzdERhdGEsXG4gICAgICAgIHJlcXVlc3RNZXRhZGF0YSxcbiAgICAgICAgcmVxdWVzdENsYXNzOiBhcm1vbmlrQXBpR3JwY1YxU2Vzc2lvbnMwMDcuUmVzdW1lU2Vzc2lvblJlcXVlc3QsXG4gICAgICAgIHJlc3BvbnNlQ2xhc3M6IGFybW9uaWtBcGlHcnBjVjFTZXNzaW9uczAwNy5SZXN1bWVTZXNzaW9uUmVzcG9uc2VcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgLyoqXG4gICAgICogVW5hcnkgY2FsbDogL2FybW9uaWsuYXBpLmdycGMudjEuc2Vzc2lvbnMuU2Vzc2lvbnMvQ2xvc2VTZXNzaW9uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcmVxdWVzdE1lc3NhZ2UgUmVxdWVzdCBtZXNzYWdlXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXRhZGF0YSBSZXF1ZXN0IG1ldGFkYXRhXG4gICAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxHcnBjRXZlbnQ8YXJtb25pa0FwaUdycGNWMVNlc3Npb25zMDA3LkNsb3NlU2Vzc2lvblJlc3BvbnNlPj5cbiAgICAgKi9cbiAgICBjbG9zZVNlc3Npb246IChcbiAgICAgIHJlcXVlc3REYXRhOiBhcm1vbmlrQXBpR3JwY1YxU2Vzc2lvbnMwMDcuQ2xvc2VTZXNzaW9uUmVxdWVzdCxcbiAgICAgIHJlcXVlc3RNZXRhZGF0YSA9IG5ldyBHcnBjTWV0YWRhdGEoKVxuICAgICk6IE9ic2VydmFibGU8XG4gICAgICBHcnBjRXZlbnQ8YXJtb25pa0FwaUdycGNWMVNlc3Npb25zMDA3LkNsb3NlU2Vzc2lvblJlc3BvbnNlPlxuICAgID4gPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlci5oYW5kbGUoe1xuICAgICAgICB0eXBlOiBHcnBjQ2FsbFR5cGUudW5hcnksXG4gICAgICAgIGNsaWVudDogdGhpcy5jbGllbnQsXG4gICAgICAgIHBhdGg6ICcvYXJtb25pay5hcGkuZ3JwYy52MS5zZXNzaW9ucy5TZXNzaW9ucy9DbG9zZVNlc3Npb24nLFxuICAgICAgICByZXF1ZXN0RGF0YSxcbiAgICAgICAgcmVxdWVzdE1ldGFkYXRhLFxuICAgICAgICByZXF1ZXN0Q2xhc3M6IGFybW9uaWtBcGlHcnBjVjFTZXNzaW9uczAwNy5DbG9zZVNlc3Npb25SZXF1ZXN0LFxuICAgICAgICByZXNwb25zZUNsYXNzOiBhcm1vbmlrQXBpR3JwY1YxU2Vzc2lvbnMwMDcuQ2xvc2VTZXNzaW9uUmVzcG9uc2VcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgLyoqXG4gICAgICogVW5hcnkgY2FsbDogL2FybW9uaWsuYXBpLmdycGMudjEuc2Vzc2lvbnMuU2Vzc2lvbnMvUHVyZ2VTZXNzaW9uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcmVxdWVzdE1lc3NhZ2UgUmVxdWVzdCBtZXNzYWdlXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXRhZGF0YSBSZXF1ZXN0IG1ldGFkYXRhXG4gICAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxHcnBjRXZlbnQ8YXJtb25pa0FwaUdycGNWMVNlc3Npb25zMDA3LlB1cmdlU2Vzc2lvblJlc3BvbnNlPj5cbiAgICAgKi9cbiAgICBwdXJnZVNlc3Npb246IChcbiAgICAgIHJlcXVlc3REYXRhOiBhcm1vbmlrQXBpR3JwY1YxU2Vzc2lvbnMwMDcuUHVyZ2VTZXNzaW9uUmVxdWVzdCxcbiAgICAgIHJlcXVlc3RNZXRhZGF0YSA9IG5ldyBHcnBjTWV0YWRhdGEoKVxuICAgICk6IE9ic2VydmFibGU8XG4gICAgICBHcnBjRXZlbnQ8YXJtb25pa0FwaUdycGNWMVNlc3Npb25zMDA3LlB1cmdlU2Vzc2lvblJlc3BvbnNlPlxuICAgID4gPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlci5oYW5kbGUoe1xuICAgICAgICB0eXBlOiBHcnBjQ2FsbFR5cGUudW5hcnksXG4gICAgICAgIGNsaWVudDogdGhpcy5jbGllbnQsXG4gICAgICAgIHBhdGg6ICcvYXJtb25pay5hcGkuZ3JwYy52MS5zZXNzaW9ucy5TZXNzaW9ucy9QdXJnZVNlc3Npb24nLFxuICAgICAgICByZXF1ZXN0RGF0YSxcbiAgICAgICAgcmVxdWVzdE1ldGFkYXRhLFxuICAgICAgICByZXF1ZXN0Q2xhc3M6IGFybW9uaWtBcGlHcnBjVjFTZXNzaW9uczAwNy5QdXJnZVNlc3Npb25SZXF1ZXN0LFxuICAgICAgICByZXNwb25zZUNsYXNzOiBhcm1vbmlrQXBpR3JwY1YxU2Vzc2lvbnMwMDcuUHVyZ2VTZXNzaW9uUmVzcG9uc2VcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgLyoqXG4gICAgICogVW5hcnkgY2FsbDogL2FybW9uaWsuYXBpLmdycGMudjEuc2Vzc2lvbnMuU2Vzc2lvbnMvRGVsZXRlU2Vzc2lvblxuICAgICAqXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXNzYWdlIFJlcXVlc3QgbWVzc2FnZVxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgICAqIEByZXR1cm5zIE9ic2VydmFibGU8R3JwY0V2ZW50PGFybW9uaWtBcGlHcnBjVjFTZXNzaW9uczAwNy5EZWxldGVTZXNzaW9uUmVzcG9uc2U+PlxuICAgICAqL1xuICAgIGRlbGV0ZVNlc3Npb246IChcbiAgICAgIHJlcXVlc3REYXRhOiBhcm1vbmlrQXBpR3JwY1YxU2Vzc2lvbnMwMDcuRGVsZXRlU2Vzc2lvblJlcXVlc3QsXG4gICAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgICApOiBPYnNlcnZhYmxlPFxuICAgICAgR3JwY0V2ZW50PGFybW9uaWtBcGlHcnBjVjFTZXNzaW9uczAwNy5EZWxldGVTZXNzaW9uUmVzcG9uc2U+XG4gICAgPiA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5oYW5kbGVyLmhhbmRsZSh7XG4gICAgICAgIHR5cGU6IEdycGNDYWxsVHlwZS51bmFyeSxcbiAgICAgICAgY2xpZW50OiB0aGlzLmNsaWVudCxcbiAgICAgICAgcGF0aDogJy9hcm1vbmlrLmFwaS5ncnBjLnYxLnNlc3Npb25zLlNlc3Npb25zL0RlbGV0ZVNlc3Npb24nLFxuICAgICAgICByZXF1ZXN0RGF0YSxcbiAgICAgICAgcmVxdWVzdE1ldGFkYXRhLFxuICAgICAgICByZXF1ZXN0Q2xhc3M6IGFybW9uaWtBcGlHcnBjVjFTZXNzaW9uczAwNy5EZWxldGVTZXNzaW9uUmVxdWVzdCxcbiAgICAgICAgcmVzcG9uc2VDbGFzczogYXJtb25pa0FwaUdycGNWMVNlc3Npb25zMDA3LkRlbGV0ZVNlc3Npb25SZXNwb25zZVxuICAgICAgfSk7XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBVbmFyeSBjYWxsOiAvYXJtb25pay5hcGkuZ3JwYy52MS5zZXNzaW9ucy5TZXNzaW9ucy9TdG9wU3VibWlzc2lvblxuICAgICAqXG4gICAgICogQHBhcmFtIHJlcXVlc3RNZXNzYWdlIFJlcXVlc3QgbWVzc2FnZVxuICAgICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgICAqIEByZXR1cm5zIE9ic2VydmFibGU8R3JwY0V2ZW50PGFybW9uaWtBcGlHcnBjVjFTZXNzaW9uczAwNy5TdG9wU3VibWlzc2lvblJlc3BvbnNlPj5cbiAgICAgKi9cbiAgICBzdG9wU3VibWlzc2lvbjogKFxuICAgICAgcmVxdWVzdERhdGE6IGFybW9uaWtBcGlHcnBjVjFTZXNzaW9uczAwNy5TdG9wU3VibWlzc2lvblJlcXVlc3QsXG4gICAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgICApOiBPYnNlcnZhYmxlPFxuICAgICAgR3JwY0V2ZW50PGFybW9uaWtBcGlHcnBjVjFTZXNzaW9uczAwNy5TdG9wU3VibWlzc2lvblJlc3BvbnNlPlxuICAgID4gPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlci5oYW5kbGUoe1xuICAgICAgICB0eXBlOiBHcnBjQ2FsbFR5cGUudW5hcnksXG4gICAgICAgIGNsaWVudDogdGhpcy5jbGllbnQsXG4gICAgICAgIHBhdGg6ICcvYXJtb25pay5hcGkuZ3JwYy52MS5zZXNzaW9ucy5TZXNzaW9ucy9TdG9wU3VibWlzc2lvbicsXG4gICAgICAgIHJlcXVlc3REYXRhLFxuICAgICAgICByZXF1ZXN0TWV0YWRhdGEsXG4gICAgICAgIHJlcXVlc3RDbGFzczogYXJtb25pa0FwaUdycGNWMVNlc3Npb25zMDA3LlN0b3BTdWJtaXNzaW9uUmVxdWVzdCxcbiAgICAgICAgcmVzcG9uc2VDbGFzczogYXJtb25pa0FwaUdycGNWMVNlc3Npb25zMDA3LlN0b3BTdWJtaXNzaW9uUmVzcG9uc2VcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEdSUENfU0VTU0lPTlNfQ0xJRU5UX1NFVFRJTkdTKSBzZXR0aW5nczogYW55LFxuICAgIEBJbmplY3QoR1JQQ19DTElFTlRfRkFDVE9SWSkgY2xpZW50RmFjdG9yeTogR3JwY0NsaWVudEZhY3Rvcnk8YW55PixcbiAgICBwcml2YXRlIGhhbmRsZXI6IEdycGNIYW5kbGVyXG4gICkge1xuICAgIHRoaXMuY2xpZW50ID0gY2xpZW50RmFjdG9yeS5jcmVhdGVDbGllbnQoXG4gICAgICAnYXJtb25pay5hcGkuZ3JwYy52MS5zZXNzaW9ucy5TZXNzaW9ucycsXG4gICAgICBzZXR0aW5nc1xuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogVW5hcnkgY2FsbCBAL2FybW9uaWsuYXBpLmdycGMudjEuc2Vzc2lvbnMuU2Vzc2lvbnMvTGlzdFNlc3Npb25zXG4gICAqXG4gICAqIEBwYXJhbSByZXF1ZXN0TWVzc2FnZSBSZXF1ZXN0IG1lc3NhZ2VcbiAgICogQHBhcmFtIHJlcXVlc3RNZXRhZGF0YSBSZXF1ZXN0IG1ldGFkYXRhXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8YXJtb25pa0FwaUdycGNWMVNlc3Npb25zMDA3Lkxpc3RTZXNzaW9uc1Jlc3BvbnNlPlxuICAgKi9cbiAgbGlzdFNlc3Npb25zKFxuICAgIHJlcXVlc3REYXRhOiBhcm1vbmlrQXBpR3JwY1YxU2Vzc2lvbnMwMDcuTGlzdFNlc3Npb25zUmVxdWVzdCxcbiAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgKTogT2JzZXJ2YWJsZTxhcm1vbmlrQXBpR3JwY1YxU2Vzc2lvbnMwMDcuTGlzdFNlc3Npb25zUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy4kcmF3XG4gICAgICAubGlzdFNlc3Npb25zKHJlcXVlc3REYXRhLCByZXF1ZXN0TWV0YWRhdGEpXG4gICAgICAucGlwZSh0aHJvd1N0YXR1c0Vycm9ycygpLCB0YWtlTWVzc2FnZXMoKSk7XG4gIH1cblxuICAvKipcbiAgICogVW5hcnkgY2FsbCBAL2FybW9uaWsuYXBpLmdycGMudjEuc2Vzc2lvbnMuU2Vzc2lvbnMvR2V0U2Vzc2lvblxuICAgKlxuICAgKiBAcGFyYW0gcmVxdWVzdE1lc3NhZ2UgUmVxdWVzdCBtZXNzYWdlXG4gICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPGFybW9uaWtBcGlHcnBjVjFTZXNzaW9uczAwNy5HZXRTZXNzaW9uUmVzcG9uc2U+XG4gICAqL1xuICBnZXRTZXNzaW9uKFxuICAgIHJlcXVlc3REYXRhOiBhcm1vbmlrQXBpR3JwY1YxU2Vzc2lvbnMwMDcuR2V0U2Vzc2lvblJlcXVlc3QsXG4gICAgcmVxdWVzdE1ldGFkYXRhID0gbmV3IEdycGNNZXRhZGF0YSgpXG4gICk6IE9ic2VydmFibGU8YXJtb25pa0FwaUdycGNWMVNlc3Npb25zMDA3LkdldFNlc3Npb25SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLiRyYXdcbiAgICAgIC5nZXRTZXNzaW9uKHJlcXVlc3REYXRhLCByZXF1ZXN0TWV0YWRhdGEpXG4gICAgICAucGlwZSh0aHJvd1N0YXR1c0Vycm9ycygpLCB0YWtlTWVzc2FnZXMoKSk7XG4gIH1cblxuICAvKipcbiAgICogVW5hcnkgY2FsbCBAL2FybW9uaWsuYXBpLmdycGMudjEuc2Vzc2lvbnMuU2Vzc2lvbnMvQ2FuY2VsU2Vzc2lvblxuICAgKlxuICAgKiBAcGFyYW0gcmVxdWVzdE1lc3NhZ2UgUmVxdWVzdCBtZXNzYWdlXG4gICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPGFybW9uaWtBcGlHcnBjVjFTZXNzaW9uczAwNy5DYW5jZWxTZXNzaW9uUmVzcG9uc2U+XG4gICAqL1xuICBjYW5jZWxTZXNzaW9uKFxuICAgIHJlcXVlc3REYXRhOiBhcm1vbmlrQXBpR3JwY1YxU2Vzc2lvbnMwMDcuQ2FuY2VsU2Vzc2lvblJlcXVlc3QsXG4gICAgcmVxdWVzdE1ldGFkYXRhID0gbmV3IEdycGNNZXRhZGF0YSgpXG4gICk6IE9ic2VydmFibGU8YXJtb25pa0FwaUdycGNWMVNlc3Npb25zMDA3LkNhbmNlbFNlc3Npb25SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLiRyYXdcbiAgICAgIC5jYW5jZWxTZXNzaW9uKHJlcXVlc3REYXRhLCByZXF1ZXN0TWV0YWRhdGEpXG4gICAgICAucGlwZSh0aHJvd1N0YXR1c0Vycm9ycygpLCB0YWtlTWVzc2FnZXMoKSk7XG4gIH1cblxuICAvKipcbiAgICogVW5hcnkgY2FsbCBAL2FybW9uaWsuYXBpLmdycGMudjEuc2Vzc2lvbnMuU2Vzc2lvbnMvQ3JlYXRlU2Vzc2lvblxuICAgKlxuICAgKiBAcGFyYW0gcmVxdWVzdE1lc3NhZ2UgUmVxdWVzdCBtZXNzYWdlXG4gICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPGFybW9uaWtBcGlHcnBjVjFTZXNzaW9uczAwNy5DcmVhdGVTZXNzaW9uUmVwbHk+XG4gICAqL1xuICBjcmVhdGVTZXNzaW9uKFxuICAgIHJlcXVlc3REYXRhOiBhcm1vbmlrQXBpR3JwY1YxU2Vzc2lvbnMwMDcuQ3JlYXRlU2Vzc2lvblJlcXVlc3QsXG4gICAgcmVxdWVzdE1ldGFkYXRhID0gbmV3IEdycGNNZXRhZGF0YSgpXG4gICk6IE9ic2VydmFibGU8YXJtb25pa0FwaUdycGNWMVNlc3Npb25zMDA3LkNyZWF0ZVNlc3Npb25SZXBseT4ge1xuICAgIHJldHVybiB0aGlzLiRyYXdcbiAgICAgIC5jcmVhdGVTZXNzaW9uKHJlcXVlc3REYXRhLCByZXF1ZXN0TWV0YWRhdGEpXG4gICAgICAucGlwZSh0aHJvd1N0YXR1c0Vycm9ycygpLCB0YWtlTWVzc2FnZXMoKSk7XG4gIH1cblxuICAvKipcbiAgICogVW5hcnkgY2FsbCBAL2FybW9uaWsuYXBpLmdycGMudjEuc2Vzc2lvbnMuU2Vzc2lvbnMvUGF1c2VTZXNzaW9uXG4gICAqXG4gICAqIEBwYXJhbSByZXF1ZXN0TWVzc2FnZSBSZXF1ZXN0IG1lc3NhZ2VcbiAgICogQHBhcmFtIHJlcXVlc3RNZXRhZGF0YSBSZXF1ZXN0IG1ldGFkYXRhXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8YXJtb25pa0FwaUdycGNWMVNlc3Npb25zMDA3LlBhdXNlU2Vzc2lvblJlc3BvbnNlPlxuICAgKi9cbiAgcGF1c2VTZXNzaW9uKFxuICAgIHJlcXVlc3REYXRhOiBhcm1vbmlrQXBpR3JwY1YxU2Vzc2lvbnMwMDcuUGF1c2VTZXNzaW9uUmVxdWVzdCxcbiAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgKTogT2JzZXJ2YWJsZTxhcm1vbmlrQXBpR3JwY1YxU2Vzc2lvbnMwMDcuUGF1c2VTZXNzaW9uUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy4kcmF3XG4gICAgICAucGF1c2VTZXNzaW9uKHJlcXVlc3REYXRhLCByZXF1ZXN0TWV0YWRhdGEpXG4gICAgICAucGlwZSh0aHJvd1N0YXR1c0Vycm9ycygpLCB0YWtlTWVzc2FnZXMoKSk7XG4gIH1cblxuICAvKipcbiAgICogVW5hcnkgY2FsbCBAL2FybW9uaWsuYXBpLmdycGMudjEuc2Vzc2lvbnMuU2Vzc2lvbnMvUmVzdW1lU2Vzc2lvblxuICAgKlxuICAgKiBAcGFyYW0gcmVxdWVzdE1lc3NhZ2UgUmVxdWVzdCBtZXNzYWdlXG4gICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPGFybW9uaWtBcGlHcnBjVjFTZXNzaW9uczAwNy5SZXN1bWVTZXNzaW9uUmVzcG9uc2U+XG4gICAqL1xuICByZXN1bWVTZXNzaW9uKFxuICAgIHJlcXVlc3REYXRhOiBhcm1vbmlrQXBpR3JwY1YxU2Vzc2lvbnMwMDcuUmVzdW1lU2Vzc2lvblJlcXVlc3QsXG4gICAgcmVxdWVzdE1ldGFkYXRhID0gbmV3IEdycGNNZXRhZGF0YSgpXG4gICk6IE9ic2VydmFibGU8YXJtb25pa0FwaUdycGNWMVNlc3Npb25zMDA3LlJlc3VtZVNlc3Npb25SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLiRyYXdcbiAgICAgIC5yZXN1bWVTZXNzaW9uKHJlcXVlc3REYXRhLCByZXF1ZXN0TWV0YWRhdGEpXG4gICAgICAucGlwZSh0aHJvd1N0YXR1c0Vycm9ycygpLCB0YWtlTWVzc2FnZXMoKSk7XG4gIH1cblxuICAvKipcbiAgICogVW5hcnkgY2FsbCBAL2FybW9uaWsuYXBpLmdycGMudjEuc2Vzc2lvbnMuU2Vzc2lvbnMvQ2xvc2VTZXNzaW9uXG4gICAqXG4gICAqIEBwYXJhbSByZXF1ZXN0TWVzc2FnZSBSZXF1ZXN0IG1lc3NhZ2VcbiAgICogQHBhcmFtIHJlcXVlc3RNZXRhZGF0YSBSZXF1ZXN0IG1ldGFkYXRhXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8YXJtb25pa0FwaUdycGNWMVNlc3Npb25zMDA3LkNsb3NlU2Vzc2lvblJlc3BvbnNlPlxuICAgKi9cbiAgY2xvc2VTZXNzaW9uKFxuICAgIHJlcXVlc3REYXRhOiBhcm1vbmlrQXBpR3JwY1YxU2Vzc2lvbnMwMDcuQ2xvc2VTZXNzaW9uUmVxdWVzdCxcbiAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgKTogT2JzZXJ2YWJsZTxhcm1vbmlrQXBpR3JwY1YxU2Vzc2lvbnMwMDcuQ2xvc2VTZXNzaW9uUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy4kcmF3XG4gICAgICAuY2xvc2VTZXNzaW9uKHJlcXVlc3REYXRhLCByZXF1ZXN0TWV0YWRhdGEpXG4gICAgICAucGlwZSh0aHJvd1N0YXR1c0Vycm9ycygpLCB0YWtlTWVzc2FnZXMoKSk7XG4gIH1cblxuICAvKipcbiAgICogVW5hcnkgY2FsbCBAL2FybW9uaWsuYXBpLmdycGMudjEuc2Vzc2lvbnMuU2Vzc2lvbnMvUHVyZ2VTZXNzaW9uXG4gICAqXG4gICAqIEBwYXJhbSByZXF1ZXN0TWVzc2FnZSBSZXF1ZXN0IG1lc3NhZ2VcbiAgICogQHBhcmFtIHJlcXVlc3RNZXRhZGF0YSBSZXF1ZXN0IG1ldGFkYXRhXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8YXJtb25pa0FwaUdycGNWMVNlc3Npb25zMDA3LlB1cmdlU2Vzc2lvblJlc3BvbnNlPlxuICAgKi9cbiAgcHVyZ2VTZXNzaW9uKFxuICAgIHJlcXVlc3REYXRhOiBhcm1vbmlrQXBpR3JwY1YxU2Vzc2lvbnMwMDcuUHVyZ2VTZXNzaW9uUmVxdWVzdCxcbiAgICByZXF1ZXN0TWV0YWRhdGEgPSBuZXcgR3JwY01ldGFkYXRhKClcbiAgKTogT2JzZXJ2YWJsZTxhcm1vbmlrQXBpR3JwY1YxU2Vzc2lvbnMwMDcuUHVyZ2VTZXNzaW9uUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy4kcmF3XG4gICAgICAucHVyZ2VTZXNzaW9uKHJlcXVlc3REYXRhLCByZXF1ZXN0TWV0YWRhdGEpXG4gICAgICAucGlwZSh0aHJvd1N0YXR1c0Vycm9ycygpLCB0YWtlTWVzc2FnZXMoKSk7XG4gIH1cblxuICAvKipcbiAgICogVW5hcnkgY2FsbCBAL2FybW9uaWsuYXBpLmdycGMudjEuc2Vzc2lvbnMuU2Vzc2lvbnMvRGVsZXRlU2Vzc2lvblxuICAgKlxuICAgKiBAcGFyYW0gcmVxdWVzdE1lc3NhZ2UgUmVxdWVzdCBtZXNzYWdlXG4gICAqIEBwYXJhbSByZXF1ZXN0TWV0YWRhdGEgUmVxdWVzdCBtZXRhZGF0YVxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPGFybW9uaWtBcGlHcnBjVjFTZXNzaW9uczAwNy5EZWxldGVTZXNzaW9uUmVzcG9uc2U+XG4gICAqL1xuICBkZWxldGVTZXNzaW9uKFxuICAgIHJlcXVlc3REYXRhOiBhcm1vbmlrQXBpR3JwY1YxU2Vzc2lvbnMwMDcuRGVsZXRlU2Vzc2lvblJlcXVlc3QsXG4gICAgcmVxdWVzdE1ldGFkYXRhID0gbmV3IEdycGNNZXRhZGF0YSgpXG4gICk6IE9ic2VydmFibGU8YXJtb25pa0FwaUdycGNWMVNlc3Npb25zMDA3LkRlbGV0ZVNlc3Npb25SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLiRyYXdcbiAgICAgIC5kZWxldGVTZXNzaW9uKHJlcXVlc3REYXRhLCByZXF1ZXN0TWV0YWRhdGEpXG4gICAgICAucGlwZSh0aHJvd1N0YXR1c0Vycm9ycygpLCB0YWtlTWVzc2FnZXMoKSk7XG4gIH1cblxuICAvKipcbiAgICogVW5hcnkgY2FsbCBAL2FybW9uaWsuYXBpLmdycGMudjEuc2Vzc2lvbnMuU2Vzc2lvbnMvU3RvcFN1Ym1pc3Npb25cbiAgICpcbiAgICogQHBhcmFtIHJlcXVlc3RNZXNzYWdlIFJlcXVlc3QgbWVzc2FnZVxuICAgKiBAcGFyYW0gcmVxdWVzdE1ldGFkYXRhIFJlcXVlc3QgbWV0YWRhdGFcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxhcm1vbmlrQXBpR3JwY1YxU2Vzc2lvbnMwMDcuU3RvcFN1Ym1pc3Npb25SZXNwb25zZT5cbiAgICovXG4gIHN0b3BTdWJtaXNzaW9uKFxuICAgIHJlcXVlc3REYXRhOiBhcm1vbmlrQXBpR3JwY1YxU2Vzc2lvbnMwMDcuU3RvcFN1Ym1pc3Npb25SZXF1ZXN0LFxuICAgIHJlcXVlc3RNZXRhZGF0YSA9IG5ldyBHcnBjTWV0YWRhdGEoKVxuICApOiBPYnNlcnZhYmxlPGFybW9uaWtBcGlHcnBjVjFTZXNzaW9uczAwNy5TdG9wU3VibWlzc2lvblJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuJHJhd1xuICAgICAgLnN0b3BTdWJtaXNzaW9uKHJlcXVlc3REYXRhLCByZXF1ZXN0TWV0YWRhdGEpXG4gICAgICAucGlwZSh0aHJvd1N0YXR1c0Vycm9ycygpLCB0YWtlTWVzc2FnZXMoKSk7XG4gIH1cbn1cbiJdfQ==