@harbor/ui
Version:
Harbor shared UI components based on Clarity and Angular6
270 lines (269 loc) • 37.9 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/
import { NgModule, APP_INITIALIZER } from '@angular/core';
import { LOG_DIRECTIVES } from './log/index';
import { FILTER_DIRECTIVES } from './filter/index';
import { ENDPOINT_DIRECTIVES } from './endpoint/index';
import { REPOSITORY_DIRECTIVES } from './repository/index';
import { TAG_DIRECTIVES } from './tag/index';
import { REPLICATION_DIRECTIVES } from './replication/index';
import { CREATE_EDIT_RULE_DIRECTIVES } from './create-edit-rule/index';
import { LIST_REPLICATION_RULE_DIRECTIVES } from './list-replication-rule/index';
import { CREATE_EDIT_ENDPOINT_DIRECTIVES } from './create-edit-endpoint/index';
import { SERVICE_CONFIG } from './service.config';
import { CONFIRMATION_DIALOG_DIRECTIVES } from './confirmation-dialog/index';
import { INLINE_ALERT_DIRECTIVES } from './inline-alert/index';
import { DATETIME_PICKER_DIRECTIVES } from './datetime-picker/index';
import { VULNERABILITY_DIRECTIVES } from './vulnerability-scanning/index';
import { PUSH_IMAGE_BUTTON_DIRECTIVES } from './push-image/index';
import { CONFIGURATION_DIRECTIVES } from './config/index';
import { PROJECT_POLICY_CONFIG_DIRECTIVES } from './project-policy-config/index';
import { HBR_GRIDVIEW_DIRECTIVES } from './gridview/index';
import { REPOSITORY_GRIDVIEW_DIRECTIVES } from './repository-gridview/index';
import { OPERATION_DIRECTIVES } from './operation/index';
import { LABEL_DIRECTIVES } from "./label/index";
import { CREATE_EDIT_LABEL_DIRECTIVES } from "./create-edit-label/index";
import { LABEL_PIECE_DIRECTIVES } from "./label-piece/index";
import { HELMCHART_DIRECTIVE } from "./helm-chart/index";
import { IMAGE_NAME_INPUT_DIRECTIVES } from "./image-name-input/index";
import { SystemInfoService, SystemInfoDefaultService, AccessLogService, AccessLogDefaultService, EndpointService, EndpointDefaultService, ReplicationService, ReplicationDefaultService, RepositoryService, RepositoryDefaultService, TagService, TagDefaultService, ScanningResultService, ScanningResultDefaultService, ConfigurationService, ConfigurationDefaultService, JobLogService, JobLogDefaultService, ProjectService, ProjectDefaultService, LabelService, LabelDefaultService, HelmChartService, HelmChartDefaultService, RetagService, RetagDefaultService } from './service/index';
import { GcRepoService } from './config/gc/gc.service';
import { GcUtility } from './config/gc/gc.utility';
import { GcViewModelFactory } from './config/gc/gc.viewmodel.factory';
import { GcApiRepository, GcApiDefaultRepository } from './config/gc/gc.api.repository';
import { ErrorHandler, DefaultErrorHandler } from './error-handler/index';
import { SharedModule } from './shared/shared.module';
import { TranslateModule } from '@ngx-translate/core';
import { TranslateServiceInitializer } from './i18n/index';
import { DEFAULT_LANG_COOKIE_KEY, DEFAULT_SUPPORTING_LANGS, DEFAULT_LANG } from './utils';
import { ChannelService } from './channel/index';
import { OperationService } from './operation/operation.service';
/** *
* Declare default service configuration; all the endpoints will be defined in
* this default configuration.
@type {?} */
export const DefaultServiceConfig = {
systemInfoEndpoint: "/api/systeminfo",
repositoryBaseEndpoint: "/api/repositories",
logBaseEndpoint: "/api/logs",
targetBaseEndpoint: "/api/targets",
replicationBaseEndpoint: "/api/replications",
replicationRuleEndpoint: "/api/policies/replication",
replicationJobEndpoint: "/api/jobs/replication",
vulnerabilityScanningBaseEndpoint: "/api/repositories",
projectPolicyEndpoint: "/api/projects/configs",
projectBaseEndpoint: "/api/projects",
enablei18Support: false,
langCookieKey: DEFAULT_LANG_COOKIE_KEY,
supportedLangs: DEFAULT_SUPPORTING_LANGS,
defaultLang: DEFAULT_LANG,
langMessageLoader: "local",
langMessagePathForHttpLoader: "i18n/langs/",
langMessageFileSuffixForHttpLoader: "-lang.json",
localI18nMessageVariableMap: {},
configurationEndpoint: "/api/configurations",
scanJobEndpoint: "/api/jobs/scan",
labelEndpoint: "/api/labels",
helmChartEndpoint: "/api/chartrepo",
downloadChartEndpoint: "/chartrepo",
gcEndpoint: "/api/system/gc"
};
/**
* Define the configuration for harbor shareable module
*
* *
* interface HarborModuleConfig
* @record
*/
export function HarborModuleConfig() { }
/** @type {?|undefined} */
HarborModuleConfig.prototype.config;
/** @type {?|undefined} */
HarborModuleConfig.prototype.errorHandler;
/** @type {?|undefined} */
HarborModuleConfig.prototype.systemInfoService;
/** @type {?|undefined} */
HarborModuleConfig.prototype.logService;
/** @type {?|undefined} */
HarborModuleConfig.prototype.endpointService;
/** @type {?|undefined} */
HarborModuleConfig.prototype.replicationService;
/** @type {?|undefined} */
HarborModuleConfig.prototype.repositoryService;
/** @type {?|undefined} */
HarborModuleConfig.prototype.tagService;
/** @type {?|undefined} */
HarborModuleConfig.prototype.retagService;
/** @type {?|undefined} */
HarborModuleConfig.prototype.scanningService;
/** @type {?|undefined} */
HarborModuleConfig.prototype.configService;
/** @type {?|undefined} */
HarborModuleConfig.prototype.jobLogService;
/** @type {?|undefined} */
HarborModuleConfig.prototype.projectPolicyService;
/** @type {?|undefined} */
HarborModuleConfig.prototype.labelService;
/** @type {?|undefined} */
HarborModuleConfig.prototype.helmChartService;
/** @type {?|undefined} */
HarborModuleConfig.prototype.gcApiRepository;
/**
* *
* ** deprecated param {AppConfigService} configService
* returns
* @param {?} translateInitializer
* @param {?} config
* @return {?}
*/
export function initConfig(translateInitializer, config) {
return (init);
/**
* @return {?}
*/
function init() {
translateInitializer.init({
enablei18Support: config.enablei18Support,
supportedLangs: config.supportedLangs,
defaultLang: config.defaultLang,
langCookieKey: config.langCookieKey
});
}
}
export class HarborLibraryModule {
/**
* @param {?=} config
* @return {?}
*/
static forRoot(config = {}) {
return {
ngModule: HarborLibraryModule,
providers: [
config.config || { provide: SERVICE_CONFIG, useValue: DefaultServiceConfig },
config.errorHandler || { provide: ErrorHandler, useClass: DefaultErrorHandler },
config.systemInfoService || { provide: SystemInfoService, useClass: SystemInfoDefaultService },
config.logService || { provide: AccessLogService, useClass: AccessLogDefaultService },
config.endpointService || { provide: EndpointService, useClass: EndpointDefaultService },
config.replicationService || { provide: ReplicationService, useClass: ReplicationDefaultService },
config.repositoryService || { provide: RepositoryService, useClass: RepositoryDefaultService },
config.tagService || { provide: TagService, useClass: TagDefaultService },
config.retagService || { provide: RetagService, useClass: RetagDefaultService },
config.scanningService || { provide: ScanningResultService, useClass: ScanningResultDefaultService },
config.configService || { provide: ConfigurationService, useClass: ConfigurationDefaultService },
config.jobLogService || { provide: JobLogService, useClass: JobLogDefaultService },
config.projectPolicyService || { provide: ProjectService, useClass: ProjectDefaultService },
config.labelService || { provide: LabelService, useClass: LabelDefaultService },
config.helmChartService || { provide: HelmChartService, useClass: HelmChartDefaultService },
config.gcApiRepository || { provide: GcApiRepository, useClass: GcApiDefaultRepository },
TranslateServiceInitializer,
{
provide: APP_INITIALIZER,
useFactory: initConfig,
deps: [TranslateServiceInitializer, SERVICE_CONFIG],
multi: true
},
ChannelService,
OperationService,
GcRepoService,
GcViewModelFactory,
GcUtility
]
};
}
/**
* @param {?=} config
* @return {?}
*/
static forChild(config = {}) {
return {
ngModule: HarborLibraryModule,
providers: [
config.config || { provide: SERVICE_CONFIG, useValue: DefaultServiceConfig },
config.errorHandler || { provide: ErrorHandler, useClass: DefaultErrorHandler },
config.systemInfoService || { provide: SystemInfoService, useClass: SystemInfoDefaultService },
config.logService || { provide: AccessLogService, useClass: AccessLogDefaultService },
config.endpointService || { provide: EndpointService, useClass: EndpointDefaultService },
config.replicationService || { provide: ReplicationService, useClass: ReplicationDefaultService },
config.repositoryService || { provide: RepositoryService, useClass: RepositoryDefaultService },
config.tagService || { provide: TagService, useClass: TagDefaultService },
config.retagService || { provide: RetagService, useClass: RetagDefaultService },
config.scanningService || { provide: ScanningResultService, useClass: ScanningResultDefaultService },
config.configService || { provide: ConfigurationService, useClass: ConfigurationDefaultService },
config.jobLogService || { provide: JobLogService, useClass: JobLogDefaultService },
config.projectPolicyService || { provide: ProjectService, useClass: ProjectDefaultService },
config.labelService || { provide: LabelService, useClass: LabelDefaultService },
config.helmChartService || { provide: HelmChartService, useClass: HelmChartDefaultService },
config.gcApiRepository || { provide: GcApiRepository, useClass: GcApiDefaultRepository },
ChannelService,
OperationService,
GcRepoService,
GcViewModelFactory,
GcUtility
]
};
}
}
HarborLibraryModule.decorators = [
{ type: NgModule, args: [{
imports: [
SharedModule
],
declarations: [
LOG_DIRECTIVES,
FILTER_DIRECTIVES,
ENDPOINT_DIRECTIVES,
REPOSITORY_DIRECTIVES,
TAG_DIRECTIVES,
CREATE_EDIT_ENDPOINT_DIRECTIVES,
CONFIRMATION_DIALOG_DIRECTIVES,
INLINE_ALERT_DIRECTIVES,
REPLICATION_DIRECTIVES,
LIST_REPLICATION_RULE_DIRECTIVES,
CREATE_EDIT_RULE_DIRECTIVES,
DATETIME_PICKER_DIRECTIVES,
VULNERABILITY_DIRECTIVES,
PUSH_IMAGE_BUTTON_DIRECTIVES,
CONFIGURATION_DIRECTIVES,
PROJECT_POLICY_CONFIG_DIRECTIVES,
LABEL_DIRECTIVES,
CREATE_EDIT_LABEL_DIRECTIVES,
LABEL_PIECE_DIRECTIVES,
HBR_GRIDVIEW_DIRECTIVES,
REPOSITORY_GRIDVIEW_DIRECTIVES,
OPERATION_DIRECTIVES,
HELMCHART_DIRECTIVE,
IMAGE_NAME_INPUT_DIRECTIVES
],
exports: [
LOG_DIRECTIVES,
FILTER_DIRECTIVES,
ENDPOINT_DIRECTIVES,
REPOSITORY_DIRECTIVES,
TAG_DIRECTIVES,
CREATE_EDIT_ENDPOINT_DIRECTIVES,
CONFIRMATION_DIALOG_DIRECTIVES,
INLINE_ALERT_DIRECTIVES,
REPLICATION_DIRECTIVES,
LIST_REPLICATION_RULE_DIRECTIVES,
CREATE_EDIT_RULE_DIRECTIVES,
DATETIME_PICKER_DIRECTIVES,
VULNERABILITY_DIRECTIVES,
PUSH_IMAGE_BUTTON_DIRECTIVES,
CONFIGURATION_DIRECTIVES,
TranslateModule,
PROJECT_POLICY_CONFIG_DIRECTIVES,
LABEL_DIRECTIVES,
CREATE_EDIT_LABEL_DIRECTIVES,
LABEL_PIECE_DIRECTIVES,
HBR_GRIDVIEW_DIRECTIVES,
REPOSITORY_GRIDVIEW_DIRECTIVES,
OPERATION_DIRECTIVES,
HELMCHART_DIRECTIVE,
IMAGE_NAME_INPUT_DIRECTIVES
],
providers: []
},] }
];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFyYm9yLWxpYnJhcnkubW9kdWxlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGhhcmJvci91aS8iLCJzb3VyY2VzIjpbInNyYy9oYXJib3ItbGlicmFyeS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQWlDLGVBQWUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzNELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFN0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDN0QsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkUsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFakYsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFL0UsT0FBTyxFQUFFLGNBQWMsRUFBa0IsTUFBTSxrQkFBa0IsQ0FBQztBQUVsRSxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM3RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMxRSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNqRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM3RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDN0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDekQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFdkUsT0FBTyxFQUNMLGlCQUFpQixFQUNqQix3QkFBd0IsRUFDeEIsZ0JBQWdCLEVBQ2hCLHVCQUF1QixFQUN2QixlQUFlLEVBQ2Ysc0JBQXNCLEVBQ3RCLGtCQUFrQixFQUNsQix5QkFBeUIsRUFDekIsaUJBQWlCLEVBQ2pCLHdCQUF3QixFQUN4QixVQUFVLEVBQ1YsaUJBQWlCLEVBQ2pCLHFCQUFxQixFQUNyQiw0QkFBNEIsRUFDNUIsb0JBQW9CLEVBQ3BCLDJCQUEyQixFQUMzQixhQUFhLEVBQ2Isb0JBQW9CLEVBQ3BCLGNBQWMsRUFDZCxxQkFBcUIsRUFDckIsWUFBWSxFQUNaLG1CQUFtQixFQUNuQixnQkFBZ0IsRUFDaEIsdUJBQXVCLEVBQ3ZCLFlBQVksRUFDWixtQkFBbUIsRUFDcEIsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ25ELE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBQ3BFLE9BQU8sRUFBQyxlQUFlLEVBQUUsc0JBQXNCLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUN0RixPQUFPLEVBQ0wsWUFBWSxFQUNaLG1CQUFtQixFQUNwQixNQUFNLHVCQUF1QixDQUFDO0FBQy9CLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFdEQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzNELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSx3QkFBd0IsRUFBRSxZQUFZLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDMUYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFPLCtCQUErQixDQUFDOzs7OztBQU1sRSxhQUFhLG9CQUFvQixHQUFtQjtJQUNsRCxrQkFBa0IsRUFBRSxpQkFBaUI7SUFDckMsc0JBQXNCLEVBQUUsbUJBQW1CO0lBQzNDLGVBQWUsRUFBRSxXQUFXO0lBQzVCLGtCQUFrQixFQUFFLGNBQWM7SUFDbEMsdUJBQXVCLEVBQUUsbUJBQW1CO0lBQzVDLHVCQUF1QixFQUFFLDJCQUEyQjtJQUNwRCxzQkFBc0IsRUFBRSx1QkFBdUI7SUFDL0MsaUNBQWlDLEVBQUUsbUJBQW1CO0lBQ3RELHFCQUFxQixFQUFFLHVCQUF1QjtJQUM5QyxtQkFBbUIsRUFBRSxlQUFlO0lBQ3BDLGdCQUFnQixFQUFFLEtBQUs7SUFDdkIsYUFBYSxFQUFFLHVCQUF1QjtJQUN0QyxjQUFjLEVBQUUsd0JBQXdCO0lBQ3hDLFdBQVcsRUFBRSxZQUFZO0lBQ3pCLGlCQUFpQixFQUFFLE9BQU87SUFDMUIsNEJBQTRCLEVBQUUsYUFBYTtJQUMzQyxrQ0FBa0MsRUFBRSxZQUFZO0lBQ2hELDJCQUEyQixFQUFFLEVBQUU7SUFDL0IscUJBQXFCLEVBQUUscUJBQXFCO0lBQzVDLGVBQWUsRUFBRSxnQkFBZ0I7SUFDakMsYUFBYSxFQUFFLGFBQWE7SUFDNUIsaUJBQWlCLEVBQUUsZ0JBQWdCO0lBQ25DLHFCQUFxQixFQUFFLFlBQVk7SUFDbkMsVUFBVSxFQUFFLGdCQUFnQjtDQUM3QixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBK0RGLE1BQU0scUJBQXFCLG9CQUFpRCxFQUFFLE1BQXNCO0lBQ2xHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQzs7OztJQUNkO1FBQ0Usb0JBQW9CLENBQUMsSUFBSSxDQUFDO1lBQ3hCLGdCQUFnQixFQUFFLE1BQU0sQ0FBQyxnQkFBZ0I7WUFDekMsY0FBYyxFQUFFLE1BQU0sQ0FBQyxjQUFjO1lBQ3JDLFdBQVcsRUFBRSxNQUFNLENBQUMsV0FBVztZQUMvQixhQUFhLEVBQUUsTUFBTSxDQUFDLGFBQWE7U0FDcEMsQ0FBQyxDQUFDO0tBQ0o7Q0FDRjtBQThERCxNQUFNOzs7OztJQUNKLE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBNkIsRUFBRTtRQUM1QyxPQUFPO1lBQ0wsUUFBUSxFQUFFLG1CQUFtQjtZQUM3QixTQUFTLEVBQUU7Z0JBQ1QsTUFBTSxDQUFDLE1BQU0sSUFBSSxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLG9CQUFvQixFQUFFO2dCQUM1RSxNQUFNLENBQUMsWUFBWSxJQUFJLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsbUJBQW1CLEVBQUU7Z0JBQy9FLE1BQU0sQ0FBQyxpQkFBaUIsSUFBSSxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxRQUFRLEVBQUUsd0JBQXdCLEVBQUU7Z0JBQzlGLE1BQU0sQ0FBQyxVQUFVLElBQUksRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLHVCQUF1QixFQUFFO2dCQUNyRixNQUFNLENBQUMsZUFBZSxJQUFJLEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsc0JBQXNCLEVBQUU7Z0JBQ3hGLE1BQU0sQ0FBQyxrQkFBa0IsSUFBSSxFQUFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxRQUFRLEVBQUUseUJBQXlCLEVBQUU7Z0JBQ2pHLE1BQU0sQ0FBQyxpQkFBaUIsSUFBSSxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxRQUFRLEVBQUUsd0JBQXdCLEVBQUU7Z0JBQzlGLE1BQU0sQ0FBQyxVQUFVLElBQUksRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBRTtnQkFDekUsTUFBTSxDQUFDLFlBQVksSUFBSSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLG1CQUFtQixFQUFFO2dCQUMvRSxNQUFNLENBQUMsZUFBZSxJQUFJLEVBQUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLFFBQVEsRUFBRSw0QkFBNEIsRUFBRTtnQkFDcEcsTUFBTSxDQUFDLGFBQWEsSUFBSSxFQUFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxRQUFRLEVBQUUsMkJBQTJCLEVBQUU7Z0JBQ2hHLE1BQU0sQ0FBQyxhQUFhLElBQUksRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxvQkFBb0IsRUFBRTtnQkFDbEYsTUFBTSxDQUFDLG9CQUFvQixJQUFJLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUscUJBQXFCLEVBQUU7Z0JBQzNGLE1BQU0sQ0FBQyxZQUFZLElBQUksRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxtQkFBbUIsRUFBRTtnQkFDL0UsTUFBTSxDQUFDLGdCQUFnQixJQUFJLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFBRSx1QkFBdUIsRUFBRTtnQkFDM0YsTUFBTSxDQUFDLGVBQWUsSUFBSSxFQUFDLE9BQU8sRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLHNCQUFzQixFQUFDO2dCQUV0RiwyQkFBMkI7Z0JBQzNCO29CQUNFLE9BQU8sRUFBRSxlQUFlO29CQUN4QixVQUFVLEVBQUUsVUFBVTtvQkFDdEIsSUFBSSxFQUFFLENBQUMsMkJBQTJCLEVBQUUsY0FBYyxDQUFDO29CQUNuRCxLQUFLLEVBQUUsSUFBSTtpQkFDWjtnQkFDRCxjQUFjO2dCQUNkLGdCQUFnQjtnQkFDaEIsYUFBYTtnQkFDYixrQkFBa0I7Z0JBQ2xCLFNBQVM7YUFDVjtTQUNGLENBQUM7S0FDSDs7Ozs7SUFFRCxNQUFNLENBQUMsUUFBUSxDQUFDLFNBQTZCLEVBQUU7UUFDN0MsT0FBTztZQUNMLFFBQVEsRUFBRSxtQkFBbUI7WUFDN0IsU0FBUyxFQUFFO2dCQUNULE1BQU0sQ0FBQyxNQUFNLElBQUksRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxvQkFBb0IsRUFBRTtnQkFDNUUsTUFBTSxDQUFDLFlBQVksSUFBSSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLG1CQUFtQixFQUFFO2dCQUMvRSxNQUFNLENBQUMsaUJBQWlCLElBQUksRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLHdCQUF3QixFQUFFO2dCQUM5RixNQUFNLENBQUMsVUFBVSxJQUFJLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFBRSx1QkFBdUIsRUFBRTtnQkFDckYsTUFBTSxDQUFDLGVBQWUsSUFBSSxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLHNCQUFzQixFQUFFO2dCQUN4RixNQUFNLENBQUMsa0JBQWtCLElBQUksRUFBRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsUUFBUSxFQUFFLHlCQUF5QixFQUFFO2dCQUNqRyxNQUFNLENBQUMsaUJBQWlCLElBQUksRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLHdCQUF3QixFQUFFO2dCQUM5RixNQUFNLENBQUMsVUFBVSxJQUFJLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUU7Z0JBQ3pFLE1BQU0sQ0FBQyxZQUFZLElBQUksRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxtQkFBbUIsRUFBRTtnQkFDL0UsTUFBTSxDQUFDLGVBQWUsSUFBSSxFQUFFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxRQUFRLEVBQUUsNEJBQTRCLEVBQUU7Z0JBQ3BHLE1BQU0sQ0FBQyxhQUFhLElBQUksRUFBRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsUUFBUSxFQUFFLDJCQUEyQixFQUFFO2dCQUNoRyxNQUFNLENBQUMsYUFBYSxJQUFJLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQUUsb0JBQW9CLEVBQUU7Z0JBQ2xGLE1BQU0sQ0FBQyxvQkFBb0IsSUFBSSxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLHFCQUFxQixFQUFFO2dCQUMzRixNQUFNLENBQUMsWUFBWSxJQUFJLEVBQUMsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsbUJBQW1CLEVBQUM7Z0JBQzdFLE1BQU0sQ0FBQyxnQkFBZ0IsSUFBSSxFQUFDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxRQUFRLEVBQUUsdUJBQXVCLEVBQUM7Z0JBQ3pGLE1BQU0sQ0FBQyxlQUFlLElBQUksRUFBQyxPQUFPLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxzQkFBc0IsRUFBQztnQkFDdEYsY0FBYztnQkFDZCxnQkFBZ0I7Z0JBQ2hCLGFBQWE7Z0JBQ2Isa0JBQWtCO2dCQUNsQixTQUFTO2FBQ1Y7U0FDRixDQUFDO0tBQ0g7OztZQTdIRixRQUFRLFNBQUM7Z0JBQ1IsT0FBTyxFQUFFO29CQUNQLFlBQVk7aUJBQ2I7Z0JBQ0QsWUFBWSxFQUFFO29CQUNaLGNBQWM7b0JBQ2QsaUJBQWlCO29CQUNqQixtQkFBbUI7b0JBQ25CLHFCQUFxQjtvQkFDckIsY0FBYztvQkFDZCwrQkFBK0I7b0JBQy9CLDhCQUE4QjtvQkFDOUIsdUJBQXVCO29CQUN2QixzQkFBc0I7b0JBQ3RCLGdDQUFnQztvQkFDaEMsMkJBQTJCO29CQUMzQiwwQkFBMEI7b0JBQzFCLHdCQUF3QjtvQkFDeEIsNEJBQTRCO29CQUM1Qix3QkFBd0I7b0JBQ3hCLGdDQUFnQztvQkFDaEMsZ0JBQWdCO29CQUNoQiw0QkFBNEI7b0JBQzVCLHNCQUFzQjtvQkFDdEIsdUJBQXVCO29CQUN2Qiw4QkFBOEI7b0JBQzlCLG9CQUFvQjtvQkFDcEIsbUJBQW1CO29CQUNuQiwyQkFBMkI7aUJBQzVCO2dCQUNELE9BQU8sRUFBRTtvQkFDUCxjQUFjO29CQUNkLGlCQUFpQjtvQkFDakIsbUJBQW1CO29CQUNuQixxQkFBcUI7b0JBQ3JCLGNBQWM7b0JBQ2QsK0JBQStCO29CQUMvQiw4QkFBOEI7b0JBQzlCLHVCQUF1QjtvQkFDdkIsc0JBQXNCO29CQUN0QixnQ0FBZ0M7b0JBQ2hDLDJCQUEyQjtvQkFDM0IsMEJBQTBCO29CQUMxQix3QkFBd0I7b0JBQ3hCLDRCQUE0QjtvQkFDNUIsd0JBQXdCO29CQUN4QixlQUFlO29CQUNmLGdDQUFnQztvQkFDaEMsZ0JBQWdCO29CQUNoQiw0QkFBNEI7b0JBQzVCLHNCQUFzQjtvQkFDdEIsdUJBQXVCO29CQUN2Qiw4QkFBOEI7b0JBQzlCLG9CQUFvQjtvQkFDcEIsbUJBQW1CO29CQUNuQiwyQkFBMkI7aUJBQzVCO2dCQUNELFNBQVMsRUFBRSxFQUFFO2FBQ2QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSwgTW9kdWxlV2l0aFByb3ZpZGVycywgUHJvdmlkZXIsIEFQUF9JTklUSUFMSVpFUiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBMT0dfRElSRUNUSVZFUyB9IGZyb20gJy4vbG9nL2luZGV4JztcbmltcG9ydCB7IEZJTFRFUl9ESVJFQ1RJVkVTIH0gZnJvbSAnLi9maWx0ZXIvaW5kZXgnO1xuaW1wb3J0IHsgRU5EUE9JTlRfRElSRUNUSVZFUyB9IGZyb20gJy4vZW5kcG9pbnQvaW5kZXgnO1xuaW1wb3J0IHsgUkVQT1NJVE9SWV9ESVJFQ1RJVkVTIH0gZnJvbSAnLi9yZXBvc2l0b3J5L2luZGV4JztcbmltcG9ydCB7IFRBR19ESVJFQ1RJVkVTIH0gZnJvbSAnLi90YWcvaW5kZXgnO1xuXG5pbXBvcnQgeyBSRVBMSUNBVElPTl9ESVJFQ1RJVkVTIH0gZnJvbSAnLi9yZXBsaWNhdGlvbi9pbmRleCc7XG5pbXBvcnQgeyBDUkVBVEVfRURJVF9SVUxFX0RJUkVDVElWRVMgfSBmcm9tICcuL2NyZWF0ZS1lZGl0LXJ1bGUvaW5kZXgnO1xuaW1wb3J0IHsgTElTVF9SRVBMSUNBVElPTl9SVUxFX0RJUkVDVElWRVMgfSBmcm9tICcuL2xpc3QtcmVwbGljYXRpb24tcnVsZS9pbmRleCc7XG5cbmltcG9ydCB7IENSRUFURV9FRElUX0VORFBPSU5UX0RJUkVDVElWRVMgfSBmcm9tICcuL2NyZWF0ZS1lZGl0LWVuZHBvaW50L2luZGV4JztcblxuaW1wb3J0IHsgU0VSVklDRV9DT05GSUcsIElTZXJ2aWNlQ29uZmlnIH0gZnJvbSAnLi9zZXJ2aWNlLmNvbmZpZyc7XG5cbmltcG9ydCB7IENPTkZJUk1BVElPTl9ESUFMT0dfRElSRUNUSVZFUyB9IGZyb20gJy4vY29uZmlybWF0aW9uLWRpYWxvZy9pbmRleCc7XG5pbXBvcnQgeyBJTkxJTkVfQUxFUlRfRElSRUNUSVZFUyB9IGZyb20gJy4vaW5saW5lLWFsZXJ0L2luZGV4JztcbmltcG9ydCB7IERBVEVUSU1FX1BJQ0tFUl9ESVJFQ1RJVkVTIH0gZnJvbSAnLi9kYXRldGltZS1waWNrZXIvaW5kZXgnO1xuaW1wb3J0IHsgVlVMTkVSQUJJTElUWV9ESVJFQ1RJVkVTIH0gZnJvbSAnLi92dWxuZXJhYmlsaXR5LXNjYW5uaW5nL2luZGV4JztcbmltcG9ydCB7IFBVU0hfSU1BR0VfQlVUVE9OX0RJUkVDVElWRVMgfSBmcm9tICcuL3B1c2gtaW1hZ2UvaW5kZXgnO1xuaW1wb3J0IHsgQ09ORklHVVJBVElPTl9ESVJFQ1RJVkVTIH0gZnJvbSAnLi9jb25maWcvaW5kZXgnO1xuaW1wb3J0IHsgUFJPSkVDVF9QT0xJQ1lfQ09ORklHX0RJUkVDVElWRVMgfSBmcm9tICcuL3Byb2plY3QtcG9saWN5LWNvbmZpZy9pbmRleCc7XG5pbXBvcnQgeyBIQlJfR1JJRFZJRVdfRElSRUNUSVZFUyB9IGZyb20gJy4vZ3JpZHZpZXcvaW5kZXgnO1xuaW1wb3J0IHsgUkVQT1NJVE9SWV9HUklEVklFV19ESVJFQ1RJVkVTIH0gZnJvbSAnLi9yZXBvc2l0b3J5LWdyaWR2aWV3L2luZGV4JztcbmltcG9ydCB7IE9QRVJBVElPTl9ESVJFQ1RJVkVTIH0gZnJvbSAnLi9vcGVyYXRpb24vaW5kZXgnO1xuaW1wb3J0IHsgTEFCRUxfRElSRUNUSVZFUyB9IGZyb20gXCIuL2xhYmVsL2luZGV4XCI7XG5pbXBvcnQgeyBDUkVBVEVfRURJVF9MQUJFTF9ESVJFQ1RJVkVTIH0gZnJvbSBcIi4vY3JlYXRlLWVkaXQtbGFiZWwvaW5kZXhcIjtcbmltcG9ydCB7IExBQkVMX1BJRUNFX0RJUkVDVElWRVMgfSBmcm9tIFwiLi9sYWJlbC1waWVjZS9pbmRleFwiO1xuaW1wb3J0IHsgSEVMTUNIQVJUX0RJUkVDVElWRSB9IGZyb20gXCIuL2hlbG0tY2hhcnQvaW5kZXhcIjtcbmltcG9ydCB7IElNQUdFX05BTUVfSU5QVVRfRElSRUNUSVZFUyB9IGZyb20gXCIuL2ltYWdlLW5hbWUtaW5wdXQvaW5kZXhcIjtcblxuaW1wb3J0IHtcbiAgU3lzdGVtSW5mb1NlcnZpY2UsXG4gIFN5c3RlbUluZm9EZWZhdWx0U2VydmljZSxcbiAgQWNjZXNzTG9nU2VydmljZSxcbiAgQWNjZXNzTG9nRGVmYXVsdFNlcnZpY2UsXG4gIEVuZHBvaW50U2VydmljZSxcbiAgRW5kcG9pbnREZWZhdWx0U2VydmljZSxcbiAgUmVwbGljYXRpb25TZXJ2aWNlLFxuICBSZXBsaWNhdGlvbkRlZmF1bHRTZXJ2aWNlLFxuICBSZXBvc2l0b3J5U2VydmljZSxcbiAgUmVwb3NpdG9yeURlZmF1bHRTZXJ2aWNlLFxuICBUYWdTZXJ2aWNlLFxuICBUYWdEZWZhdWx0U2VydmljZSxcbiAgU2Nhbm5pbmdSZXN1bHRTZXJ2aWNlLFxuICBTY2FubmluZ1Jlc3VsdERlZmF1bHRTZXJ2aWNlLFxuICBDb25maWd1cmF0aW9uU2VydmljZSxcbiAgQ29uZmlndXJhdGlvbkRlZmF1bHRTZXJ2aWNlLFxuICBKb2JMb2dTZXJ2aWNlLFxuICBKb2JMb2dEZWZhdWx0U2VydmljZSxcbiAgUHJvamVjdFNlcnZpY2UsXG4gIFByb2plY3REZWZhdWx0U2VydmljZSxcbiAgTGFiZWxTZXJ2aWNlLFxuICBMYWJlbERlZmF1bHRTZXJ2aWNlLFxuICBIZWxtQ2hhcnRTZXJ2aWNlLFxuICBIZWxtQ2hhcnREZWZhdWx0U2VydmljZSxcbiAgUmV0YWdTZXJ2aWNlLFxuICBSZXRhZ0RlZmF1bHRTZXJ2aWNlXG59IGZyb20gJy4vc2VydmljZS9pbmRleCc7XG5pbXBvcnQgeyBHY1JlcG9TZXJ2aWNlIH0gZnJvbSAnLi9jb25maWcvZ2MvZ2Muc2VydmljZSc7XG5pbXBvcnQgeyBHY1V0aWxpdHkgfSBmcm9tICcuL2NvbmZpZy9nYy9nYy51dGlsaXR5JztcbmltcG9ydCB7R2NWaWV3TW9kZWxGYWN0b3J5fSBmcm9tICcuL2NvbmZpZy9nYy9nYy52aWV3bW9kZWwuZmFjdG9yeSc7XG5pbXBvcnQge0djQXBpUmVwb3NpdG9yeSwgR2NBcGlEZWZhdWx0UmVwb3NpdG9yeX0gZnJvbSAnLi9jb25maWcvZ2MvZ2MuYXBpLnJlcG9zaXRvcnknO1xuaW1wb3J0IHtcbiAgRXJyb3JIYW5kbGVyLFxuICBEZWZhdWx0RXJyb3JIYW5kbGVyXG59IGZyb20gJy4vZXJyb3ItaGFuZGxlci9pbmRleCc7XG5pbXBvcnQgeyBTaGFyZWRNb2R1bGUgfSBmcm9tICcuL3NoYXJlZC9zaGFyZWQubW9kdWxlJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlSW5pdGlhbGl6ZXIgfSBmcm9tICcuL2kxOG4vaW5kZXgnO1xuaW1wb3J0IHsgREVGQVVMVF9MQU5HX0NPT0tJRV9LRVksIERFRkFVTFRfU1VQUE9SVElOR19MQU5HUywgREVGQVVMVF9MQU5HIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBDaGFubmVsU2VydmljZSB9IGZyb20gJy4vY2hhbm5lbC9pbmRleCc7XG5pbXBvcnQgeyBPcGVyYXRpb25TZXJ2aWNlIH0gZnJvbSAgJy4vb3BlcmF0aW9uL29wZXJhdGlvbi5zZXJ2aWNlJztcblxuLyoqXG4gKiBEZWNsYXJlIGRlZmF1bHQgc2VydmljZSBjb25maWd1cmF0aW9uOyBhbGwgdGhlIGVuZHBvaW50cyB3aWxsIGJlIGRlZmluZWQgaW5cbiAqIHRoaXMgZGVmYXVsdCBjb25maWd1cmF0aW9uLlxuICovXG5leHBvcnQgY29uc3QgRGVmYXVsdFNlcnZpY2VDb25maWc6IElTZXJ2aWNlQ29uZmlnID0ge1xuICBzeXN0ZW1JbmZvRW5kcG9pbnQ6IFwiL2FwaS9zeXN0ZW1pbmZvXCIsXG4gIHJlcG9zaXRvcnlCYXNlRW5kcG9pbnQ6IFwiL2FwaS9yZXBvc2l0b3JpZXNcIixcbiAgbG9nQmFzZUVuZHBvaW50OiBcIi9hcGkvbG9nc1wiLFxuICB0YXJnZXRCYXNlRW5kcG9pbnQ6IFwiL2FwaS90YXJnZXRzXCIsXG4gIHJlcGxpY2F0aW9uQmFzZUVuZHBvaW50OiBcIi9hcGkvcmVwbGljYXRpb25zXCIsXG4gIHJlcGxpY2F0aW9uUnVsZUVuZHBvaW50OiBcIi9hcGkvcG9saWNpZXMvcmVwbGljYXRpb25cIixcbiAgcmVwbGljYXRpb25Kb2JFbmRwb2ludDogXCIvYXBpL2pvYnMvcmVwbGljYXRpb25cIixcbiAgdnVsbmVyYWJpbGl0eVNjYW5uaW5nQmFzZUVuZHBvaW50OiBcIi9hcGkvcmVwb3NpdG9yaWVzXCIsXG4gIHByb2plY3RQb2xpY3lFbmRwb2ludDogXCIvYXBpL3Byb2plY3RzL2NvbmZpZ3NcIixcbiAgcHJvamVjdEJhc2VFbmRwb2ludDogXCIvYXBpL3Byb2plY3RzXCIsXG4gIGVuYWJsZWkxOFN1cHBvcnQ6IGZhbHNlLFxuICBsYW5nQ29va2llS2V5OiBERUZBVUxUX0xBTkdfQ09PS0lFX0tFWSxcbiAgc3VwcG9ydGVkTGFuZ3M6IERFRkFVTFRfU1VQUE9SVElOR19MQU5HUyxcbiAgZGVmYXVsdExhbmc6IERFRkFVTFRfTEFORyxcbiAgbGFuZ01lc3NhZ2VMb2FkZXI6IFwibG9jYWxcIixcbiAgbGFuZ01lc3NhZ2VQYXRoRm9ySHR0cExvYWRlcjogXCJpMThuL2xhbmdzL1wiLFxuICBsYW5nTWVzc2FnZUZpbGVTdWZmaXhGb3JIdHRwTG9hZGVyOiBcIi1sYW5nLmpzb25cIixcbiAgbG9jYWxJMThuTWVzc2FnZVZhcmlhYmxlTWFwOiB7fSxcbiAgY29uZmlndXJhdGlvbkVuZHBvaW50OiBcIi9hcGkvY29uZmlndXJhdGlvbnNcIixcbiAgc2NhbkpvYkVuZHBvaW50OiBcIi9hcGkvam9icy9zY2FuXCIsXG4gIGxhYmVsRW5kcG9pbnQ6IFwiL2FwaS9sYWJlbHNcIixcbiAgaGVsbUNoYXJ0RW5kcG9pbnQ6IFwiL2FwaS9jaGFydHJlcG9cIixcbiAgZG93bmxvYWRDaGFydEVuZHBvaW50OiBcIi9jaGFydHJlcG9cIixcbiAgZ2NFbmRwb2ludDogXCIvYXBpL3N5c3RlbS9nY1wiXG59O1xuXG4vKipcbiAqIERlZmluZSB0aGUgY29uZmlndXJhdGlvbiBmb3IgaGFyYm9yIHNoYXJlYWJsZSBtb2R1bGVcbiAqXG4gKipcbiAqIGludGVyZmFjZSBIYXJib3JNb2R1bGVDb25maWdcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBIYXJib3JNb2R1bGVDb25maWcge1xuICAvLyBTZXJ2aWNlIGVuZHBvaW50c1xuICBjb25maWc/OiBQcm92aWRlcjtcblxuICAvLyBIYW5kbGluZyBlcnJvciBtZXNzYWdlc1xuICBlcnJvckhhbmRsZXI/OiBQcm92aWRlcjtcblxuICAvLyBTZXJ2aWNlIGltcGxlbWVudGF0aW9uIGZvciBzeXN0ZW0gaW5mb1xuICBzeXN0ZW1JbmZvU2VydmljZT86IFByb3ZpZGVyO1xuXG4gIC8vIFNlcnZpY2UgaW1wbGVtZW50YXRpb24gZm9yIGxvZ1xuICBsb2dTZXJ2aWNlPzogUHJvdmlkZXI7XG5cbiAgLy8gU2VydmljZSBpbXBsZW1lbnRhdGlvbiBmb3IgZW5kcG9pbnRcbiAgZW5kcG9pbnRTZXJ2aWNlPzogUHJvdmlkZXI7XG5cbiAgLy8gU2VydmljZSBpbXBsZW1lbnRhdGlvbiBmb3IgcmVwbGljYXRpb25cbiAgcmVwbGljYXRpb25TZXJ2aWNlPzogUHJvdmlkZXI7XG5cbiAgLy8gU2VydmljZSBpbXBsZW1lbnRhdGlvbiBmb3IgcmVwb3NpdG9yeVxuICByZXBvc2l0b3J5U2VydmljZT86IFByb3ZpZGVyO1xuXG4gIC8vIFNlcnZpY2UgaW1wbGVtZW50YXRpb24gZm9yIHRhZ1xuICB0YWdTZXJ2aWNlPzogUHJvdmlkZXI7XG5cbiAgLy8gU2VydmljZSBpbXBsZW1lbnRhdGlvbiBmb3IgcmV0YWdcbiAgcmV0YWdTZXJ2aWNlPzogUHJvdmlkZXI7XG5cbiAgLy8gU2VydmljZSBpbXBsZW1lbnRhdGlvbiBmb3IgdnVsbmVyYWJpbGl0eSBzY2FubmluZ1xuICBzY2FubmluZ1NlcnZpY2U/OiBQcm92aWRlcjtcblxuICAvLyBTZXJ2aWNlIGltcGxlbWVudGF0aW9uIGZvciBjb25maWd1cmF0aW9uXG4gIGNvbmZpZ1NlcnZpY2U/OiBQcm92aWRlcjtcblxuICAvLyBTZXJ2aWNlIGltcGxlbWVudGF0aW9uIGZvciBqb2IgbG9nXG4gIGpvYkxvZ1NlcnZpY2U/OiBQcm92aWRlcjtcblxuICAvLyBTZXJ2aWNlIGltcGxlbWVudGF0aW9uIGZvciBwcm9qZWN0IHBvbGljeVxuICBwcm9qZWN0UG9saWN5U2VydmljZT86IFByb3ZpZGVyO1xuXG4gIC8vIFNlcnZpY2UgaW1wbGVtZW50YXRpb24gZm9yIGxhYmVsXG4gIGxhYmVsU2VydmljZT86IFByb3ZpZGVyO1xuXG4gIC8vIFNlcnZpY2UgaW1wbGVtZW50YXRpb24gZm9yIGhlbG1jaGFydFxuICBoZWxtQ2hhcnRTZXJ2aWNlPzogUHJvdmlkZXI7XG5cbiAgLy8gU2VydmljZSBpbXBsZW1lbnRhdGlvbiBmb3IgZ2NcbiAgZ2NBcGlSZXBvc2l0b3J5PzogUHJvdmlkZXI7XG59XG5cbi8qKlxuICoqXG4gKiAgKiogZGVwcmVjYXRlZCBwYXJhbSB7QXBwQ29uZmlnU2VydmljZX0gY29uZmlnU2VydmljZVxuICogcmV0dXJuc1xuICovXG5leHBvcnQgZnVuY3Rpb24gaW5pdENvbmZpZyh0cmFuc2xhdGVJbml0aWFsaXplcjogVHJhbnNsYXRlU2VydmljZUluaXRpYWxpemVyLCBjb25maWc6IElTZXJ2aWNlQ29uZmlnKSB7XG4gIHJldHVybiAoaW5pdCk7XG4gIGZ1bmN0aW9uIGluaXQoKSB7XG4gICAgdHJhbnNsYXRlSW5pdGlhbGl6ZXIuaW5pdCh7XG4gICAgICBlbmFibGVpMThTdXBwb3J0OiBjb25maWcuZW5hYmxlaTE4U3VwcG9ydCxcbiAgICAgIHN1cHBvcnRlZExhbmdzOiBjb25maWcuc3VwcG9ydGVkTGFuZ3MsXG4gICAgICBkZWZhdWx0TGFuZzogY29uZmlnLmRlZmF1bHRMYW5nLFxuICAgICAgbGFuZ0Nvb2tpZUtleTogY29uZmlnLmxhbmdDb29raWVLZXlcbiAgICB9KTtcbiAgfVxufVxuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgU2hhcmVkTW9kdWxlXG4gIF0sXG4gIGRlY2xhcmF0aW9uczogW1xuICAgIExPR19ESVJFQ1RJVkVTLFxuICAgIEZJTFRFUl9ESVJFQ1RJVkVTLFxuICAgIEVORFBPSU5UX0RJUkVDVElWRVMsXG4gICAgUkVQT1NJVE9SWV9ESVJFQ1RJVkVTLFxuICAgIFRBR19ESVJFQ1RJVkVTLFxuICAgIENSRUFURV9FRElUX0VORFBPSU5UX0RJUkVDVElWRVMsXG4gICAgQ09ORklSTUFUSU9OX0RJQUxPR19ESVJFQ1RJVkVTLFxuICAgIElOTElORV9BTEVSVF9ESVJFQ1RJVkVTLFxuICAgIFJFUExJQ0FUSU9OX0RJUkVDVElWRVMsXG4gICAgTElTVF9SRVBMSUNBVElPTl9SVUxFX0RJUkVDVElWRVMsXG4gICAgQ1JFQVRFX0VESVRfUlVMRV9ESVJFQ1RJVkVTLFxuICAgIERBVEVUSU1FX1BJQ0tFUl9ESVJFQ1RJVkVTLFxuICAgIFZVTE5FUkFCSUxJVFlfRElSRUNUSVZFUyxcbiAgICBQVVNIX0lNQUdFX0JVVFRPTl9ESVJFQ1RJVkVTLFxuICAgIENPTkZJR1VSQVRJT05fRElSRUNUSVZFUyxcbiAgICBQUk9KRUNUX1BPTElDWV9DT05GSUdfRElSRUNUSVZFUyxcbiAgICBMQUJFTF9ESVJFQ1RJVkVTLFxuICAgIENSRUFURV9FRElUX0xBQkVMX0RJUkVDVElWRVMsXG4gICAgTEFCRUxfUElFQ0VfRElSRUNUSVZFUyxcbiAgICBIQlJfR1JJRFZJRVdfRElSRUNUSVZFUyxcbiAgICBSRVBPU0lUT1JZX0dSSURWSUVXX0RJUkVDVElWRVMsXG4gICAgT1BFUkFUSU9OX0RJUkVDVElWRVMsXG4gICAgSEVMTUNIQVJUX0RJUkVDVElWRSxcbiAgICBJTUFHRV9OQU1FX0lOUFVUX0RJUkVDVElWRVNcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIExPR19ESVJFQ1RJVkVTLFxuICAgIEZJTFRFUl9ESVJFQ1RJVkVTLFxuICAgIEVORFBPSU5UX0RJUkVDVElWRVMsXG4gICAgUkVQT1NJVE9SWV9ESVJFQ1RJVkVTLFxuICAgIFRBR19ESVJFQ1RJVkVTLFxuICAgIENSRUFURV9FRElUX0VORFBPSU5UX0RJUkVDVElWRVMsXG4gICAgQ09ORklSTUFUSU9OX0RJQUxPR19ESVJFQ1RJVkVTLFxuICAgIElOTElORV9BTEVSVF9ESVJFQ1RJVkVTLFxuICAgIFJFUExJQ0FUSU9OX0RJUkVDVElWRVMsXG4gICAgTElTVF9SRVBMSUNBVElPTl9SVUxFX0RJUkVDVElWRVMsXG4gICAgQ1JFQVRFX0VESVRfUlVMRV9ESVJFQ1RJVkVTLFxuICAgIERBVEVUSU1FX1BJQ0tFUl9ESVJFQ1RJVkVTLFxuICAgIFZVTE5FUkFCSUxJVFlfRElSRUNUSVZFUyxcbiAgICBQVVNIX0lNQUdFX0JVVFRPTl9ESVJFQ1RJVkVTLFxuICAgIENPTkZJR1VSQVRJT05fRElSRUNUSVZFUyxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgUFJPSkVDVF9QT0xJQ1lfQ09ORklHX0RJUkVDVElWRVMsXG4gICAgTEFCRUxfRElSRUNUSVZFUyxcbiAgICBDUkVBVEVfRURJVF9MQUJFTF9ESVJFQ1RJVkVTLFxuICAgIExBQkVMX1BJRUNFX0RJUkVDVElWRVMsXG4gICAgSEJSX0dSSURWSUVXX0RJUkVDVElWRVMsXG4gICAgUkVQT1NJVE9SWV9HUklEVklFV19ESVJFQ1RJVkVTLFxuICAgIE9QRVJBVElPTl9ESVJFQ1RJVkVTLFxuICAgIEhFTE1DSEFSVF9ESVJFQ1RJVkUsXG4gICAgSU1BR0VfTkFNRV9JTlBVVF9ESVJFQ1RJVkVTXG4gIF0sXG4gIHByb3ZpZGVyczogW11cbn0pXG5cbmV4cG9ydCBjbGFzcyBIYXJib3JMaWJyYXJ5TW9kdWxlIHtcbiAgc3RhdGljIGZvclJvb3QoY29uZmlnOiBIYXJib3JNb2R1bGVDb25maWcgPSB7fSk6IE1vZHVsZVdpdGhQcm92aWRlcnMge1xuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogSGFyYm9yTGlicmFyeU1vZHVsZSxcbiAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICBjb25maWcuY29uZmlnIHx8IHsgcHJvdmlkZTogU0VSVklDRV9DT05GSUcsIHVzZVZhbHVlOiBEZWZhdWx0U2VydmljZUNvbmZpZyB9LFxuICAgICAgICBjb25maWcuZXJyb3JIYW5kbGVyIHx8IHsgcHJvdmlkZTogRXJyb3JIYW5kbGVyLCB1c2VDbGFzczogRGVmYXVsdEVycm9ySGFuZGxlciB9LFxuICAgICAgICBjb25maWcuc3lzdGVtSW5mb1NlcnZpY2UgfHwgeyBwcm92aWRlOiBTeXN0ZW1JbmZvU2VydmljZSwgdXNlQ2xhc3M6IFN5c3RlbUluZm9EZWZhdWx0U2VydmljZSB9LFxuICAgICAgICBjb25maWcubG9nU2VydmljZSB8fCB7IHByb3ZpZGU6IEFjY2Vzc0xvZ1NlcnZpY2UsIHVzZUNsYXNzOiBBY2Nlc3NMb2dEZWZhdWx0U2VydmljZSB9LFxuICAgICAgICBjb25maWcuZW5kcG9pbnRTZXJ2aWNlIHx8IHsgcHJvdmlkZTogRW5kcG9pbnRTZXJ2aWNlLCB1c2VDbGFzczogRW5kcG9pbnREZWZhdWx0U2VydmljZSB9LFxuICAgICAgICBjb25maWcucmVwbGljYXRpb25TZXJ2aWNlIHx8IHsgcHJvdmlkZTogUmVwbGljYXRpb25TZXJ2aWNlLCB1c2VDbGFzczogUmVwbGljYXRpb25EZWZhdWx0U2VydmljZSB9LFxuICAgICAgICBjb25maWcucmVwb3NpdG9yeVNlcnZpY2UgfHwgeyBwcm92aWRlOiBSZXBvc2l0b3J5U2VydmljZSwgdXNlQ2xhc3M6IFJlcG9zaXRvcnlEZWZhdWx0U2VydmljZSB9LFxuICAgICAgICBjb25maWcudGFnU2VydmljZSB8fCB7IHByb3ZpZGU6IFRhZ1NlcnZpY2UsIHVzZUNsYXNzOiBUYWdEZWZhdWx0U2VydmljZSB9LFxuICAgICAgICBjb25maWcucmV0YWdTZXJ2aWNlIHx8IHsgcHJvdmlkZTogUmV0YWdTZXJ2aWNlLCB1c2VDbGFzczogUmV0YWdEZWZhdWx0U2VydmljZSB9LFxuICAgICAgICBjb25maWcuc2Nhbm5pbmdTZXJ2aWNlIHx8IHsgcHJvdmlkZTogU2Nhbm5pbmdSZXN1bHRTZXJ2aWNlLCB1c2VDbGFzczogU2Nhbm5pbmdSZXN1bHREZWZhdWx0U2VydmljZSB9LFxuICAgICAgICBjb25maWcuY29uZmlnU2VydmljZSB8fCB7IHByb3ZpZGU6IENvbmZpZ3VyYXRpb25TZXJ2aWNlLCB1c2VDbGFzczogQ29uZmlndXJhdGlvbkRlZmF1bHRTZXJ2aWNlIH0sXG4gICAgICAgIGNvbmZpZy5qb2JMb2dTZXJ2aWNlIHx8IHsgcHJvdmlkZTogSm9iTG9nU2VydmljZSwgdXNlQ2xhc3M6IEpvYkxvZ0RlZmF1bHRTZXJ2aWNlIH0sXG4gICAgICAgIGNvbmZpZy5wcm9qZWN0UG9saWN5U2VydmljZSB8fCB7IHByb3ZpZGU6IFByb2plY3RTZXJ2aWNlLCB1c2VDbGFzczogUHJvamVjdERlZmF1bHRTZXJ2aWNlIH0sXG4gICAgICAgIGNvbmZpZy5sYWJlbFNlcnZpY2UgfHwgeyBwcm92aWRlOiBMYWJlbFNlcnZpY2UsIHVzZUNsYXNzOiBMYWJlbERlZmF1bHRTZXJ2aWNlIH0sXG4gICAgICAgIGNvbmZpZy5oZWxtQ2hhcnRTZXJ2aWNlIHx8IHsgcHJvdmlkZTogSGVsbUNoYXJ0U2VydmljZSwgdXNlQ2xhc3M6IEhlbG1DaGFydERlZmF1bHRTZXJ2aWNlIH0sXG4gICAgICAgIGNvbmZpZy5nY0FwaVJlcG9zaXRvcnkgfHwge3Byb3ZpZGU6IEdjQXBpUmVwb3NpdG9yeSwgdXNlQ2xhc3M6IEdjQXBpRGVmYXVsdFJlcG9zaXRvcnl9LFxuICAgICAgICAvLyBEbyBpbml0aWFsaXppbmdcbiAgICAgICAgVHJhbnNsYXRlU2VydmljZUluaXRpYWxpemVyLFxuICAgICAgICB7XG4gICAgICAgICAgcHJvdmlkZTogQVBQX0lOSVRJQUxJWkVSLFxuICAgICAgICAgIHVzZUZhY3Rvcnk6IGluaXRDb25maWcsXG4gICAgICAgICAgZGVwczogW1RyYW5zbGF0ZVNlcnZpY2VJbml0aWFsaXplciwgU0VSVklDRV9DT05GSUddLFxuICAgICAgICAgIG11bHRpOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIENoYW5uZWxTZXJ2aWNlLFxuICAgICAgICBPcGVyYXRpb25TZXJ2aWNlLFxuICAgICAgICBHY1JlcG9TZXJ2aWNlLFxuICAgICAgICBHY1ZpZXdNb2RlbEZhY3RvcnksXG4gICAgICAgIEdjVXRpbGl0eVxuICAgICAgXVxuICAgIH07XG4gIH1cblxuICBzdGF0aWMgZm9yQ2hpbGQoY29uZmlnOiBIYXJib3JNb2R1bGVDb25maWcgPSB7fSk6IE1vZHVsZVdpdGhQcm92aWRlcnMge1xuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogSGFyYm9yTGlicmFyeU1vZHVsZSxcbiAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICBjb25maWcuY29uZmlnIHx8IHsgcHJvdmlkZTogU0VSVklDRV9DT05GSUcsIHVzZVZhbHVlOiBEZWZhdWx0U2VydmljZUNvbmZpZyB9LFxuICAgICAgICBjb25maWcuZXJyb3JIYW5kbGVyIHx8IHsgcHJvdmlkZTogRXJyb3JIYW5kbGVyLCB1c2VDbGFzczogRGVmYXVsdEVycm9ySGFuZGxlciB9LFxuICAgICAgICBjb25maWcuc3lzdGVtSW5mb1NlcnZpY2UgfHwgeyBwcm92aWRlOiBTeXN0ZW1JbmZvU2VydmljZSwgdXNlQ2xhc3M6IFN5c3RlbUluZm9EZWZhdWx0U2VydmljZSB9LFxuICAgICAgICBjb25maWcubG9nU2VydmljZSB8fCB7IHByb3ZpZGU6IEFjY2Vzc0xvZ1NlcnZpY2UsIHVzZUNsYXNzOiBBY2Nlc3NMb2dEZWZhdWx0U2VydmljZSB9LFxuICAgICAgICBjb25maWcuZW5kcG9pbnRTZXJ2aWNlIHx8IHsgcHJvdmlkZTogRW5kcG9pbnRTZXJ2aWNlLCB1c2VDbGFzczogRW5kcG9pbnREZWZhdWx0U2VydmljZSB9LFxuICAgICAgICBjb25maWcucmVwbGljYXRpb25TZXJ2aWNlIHx8IHsgcHJvdmlkZTogUmVwbGljYXRpb25TZXJ2aWNlLCB1c2VDbGFzczogUmVwbGljYXRpb25EZWZhdWx0U2VydmljZSB9LFxuICAgICAgICBjb25maWcucmVwb3NpdG9yeVNlcnZpY2UgfHwgeyBwcm92aWRlOiBSZXBvc2l0b3J5U2VydmljZSwgdXNlQ2xhc3M6IFJlcG9zaXRvcnlEZWZhdWx0U2VydmljZSB9LFxuICAgICAgICBjb25maWcudGFnU2VydmljZSB8fCB7IHByb3ZpZGU6IFRhZ1NlcnZpY2UsIHVzZUNsYXNzOiBUYWdEZWZhdWx0U2VydmljZSB9LFxuICAgICAgICBjb25maWcucmV0YWdTZXJ2aWNlIHx8IHsgcHJvdmlkZTogUmV0YWdTZXJ2aWNlLCB1c2VDbGFzczogUmV0YWdEZWZhdWx0U2VydmljZSB9LFxuICAgICAgICBjb25maWcuc2Nhbm5pbmdTZXJ2aWNlIHx8IHsgcHJvdmlkZTogU2Nhbm5pbmdSZXN1bHRTZXJ2aWNlLCB1c2VDbGFzczogU2Nhbm5pbmdSZXN1bHREZWZhdWx0U2VydmljZSB9LFxuICAgICAgICBjb25maWcuY29uZmlnU2VydmljZSB8fCB7IHByb3ZpZGU6IENvbmZpZ3VyYXRpb25TZXJ2aWNlLCB1c2VDbGFzczogQ29uZmlndXJhdGlvbkRlZmF1bHRTZXJ2aWNlIH0sXG4gICAgICAgIGNvbmZpZy5qb2JMb2dTZXJ2aWNlIHx8IHsgcHJvdmlkZTogSm9iTG9nU2VydmljZSwgdXNlQ2xhc3M6IEpvYkxvZ0RlZmF1bHRTZXJ2aWNlIH0sXG4gICAgICAgIGNvbmZpZy5wcm9qZWN0UG9saWN5U2VydmljZSB8fCB7IHByb3ZpZGU6IFByb2plY3RTZXJ2aWNlLCB1c2VDbGFzczogUHJvamVjdERlZmF1bHRTZXJ2aWNlIH0sXG4gICAgICAgIGNvbmZpZy5sYWJlbFNlcnZpY2UgfHwge3Byb3ZpZGU6IExhYmVsU2VydmljZSwgdXNlQ2xhc3M6IExhYmVsRGVmYXVsdFNlcnZpY2V9LFxuICAgICAgICBjb25maWcuaGVsbUNoYXJ0U2VydmljZSB8fCB7cHJvdmlkZTogSGVsbUNoYXJ0U2VydmljZSwgdXNlQ2xhc3M6IEhlbG1DaGFydERlZmF1bHRTZXJ2aWNlfSxcbiAgICAgICAgY29uZmlnLmdjQXBpUmVwb3NpdG9yeSB8fCB7cHJvdmlkZTogR2NBcGlSZXBvc2l0b3J5LCB1c2VDbGFzczogR2NBcGlEZWZhdWx0UmVwb3NpdG9yeX0sXG4gICAgICAgIENoYW5uZWxTZXJ2aWNlLFxuICAgICAgICBPcGVyYXRpb25TZXJ2aWNlLFxuICAgICAgICBHY1JlcG9TZXJ2aWNlLFxuICAgICAgICBHY1ZpZXdNb2RlbEZhY3RvcnksXG4gICAgICAgIEdjVXRpbGl0eVxuICAgICAgXVxuICAgIH07XG4gIH1cbn1cbiJdfQ==