{"version":3,"sources":["./$_lazy_route_resources|lazy|groupOptions: {}|namespace object","./src/app/animations/expand-collapse-details.animation.ts","./src/app/animations/index.ts","./src/app/animations/menu-toggle.animation.ts","./src/app/animations/slide-in-out.animation.ts","./src/app/animations/toggle-in-out.animation.ts","./src/app/app-routing/app-routing.module.ts","./src/app/app.component.ts","./src/app/app.module.ts","./src/app/client/store/client-state.model.ts","./src/app/client/store/client.actions.ts","./src/app/client/store/client.effects.ts","./src/app/client/store/client.reducer.ts","./src/app/core/config/app.config.ts","./src/app/core/core.module.ts","./src/app/core/http/http-client.service.ts","./src/app/environment-integration/env.service.provider.ts","./src/app/environment-integration/env.service.ts","./src/app/environment-integration/environment-integration.module.ts","./src/app/form/form.model.ts","./src/app/form/form.service.ts","./src/app/form/store/form-state.model.ts","./src/app/form/store/form.actions.ts","./src/app/form/store/form.effects.ts","./src/app/form/store/form.reducer.ts","./src/app/organization/organization.model.ts","./src/app/organization/organization.module.ts","./src/app/organization/organization.service.ts","./src/app/organization/store/organization.actions.ts","./src/app/organization/store/organization.effects.ts","./src/app/organization/store/organization.reducer.ts","./src/app/organization/store/organization.state.ts","./src/app/pages/auth-callback/auth-callback.component.ts","./src/app/pages/cookie-policy/cookie-policy.component.ts","./src/app/pages/pages-routing.module.ts","./src/app/pages/pages.module.ts","./src/app/pages/privacy-policy/privacy-policy.component.ts","./src/app/pages/terms-of-use/terms-of-use.component.ts","./src/app/pages/wrong-organization-domain/wrong-organization-domain.component.ts","./src/app/project/project.service.ts","./src/app/record/record.service.ts","./src/app/record/store/record.actions.ts","./src/app/record/store/record.effect.ts","./src/app/record/store/record.reducers.ts","./src/app/record/store/record.state.ts","./src/app/shared/card/card.component.ts","./src/app/shared/card2/card.component.ts","./src/app/shared/cards-list/cards-list.component.ts","./src/app/shared/confirmation-dialog/confirmation-dialog.component.ts","./src/app/shared/material/material.module.ts","./src/app/shared/mf-grid/mf-grid.component.ts","./src/app/shared/mfn-modal/mfn-modal.component.ts","./src/app/shared/shared.module.ts","./src/app/shared/status-chips/status-chips.component.ts","./src/app/shared/under-construction/under-construction.component.ts","./src/app/store/actions/project.actions.ts","./src/app/store/actions/ui.actions.ts","./src/app/store/app-state.model.ts","./src/app/store/effects/project.effect.ts","./src/app/store/mf-store.module.ts","./src/app/store/models/project.model.ts","./src/app/store/reducers/index.ts","./src/app/store/reducers/project.reducer.ts","./src/app/store/reducers/ui.reducer.ts","./src/app/user/app-auth-n.service.ts","./src/app/user/is-logged.guard.ts","./src/app/user/store/user.actions.ts","./src/app/user/store/user.effects.ts","./src/app/user/store/user.reducer.ts","./src/app/user/store/user.state.ts","./src/app/user/user-details/user-details.component.ts","./src/app/user/user-routing.module.ts","./src/app/user/user.module.ts","./src/app/user/user.service.ts","./src/environments/environment.ts","./src/main.ts","./src/app/app.component.scss","./src/app/pages/auth-callback/auth-callback.component.scss","./src/app/pages/cookie-policy/cookie-policy.component.scss","./src/app/pages/privacy-policy/privacy-policy.component.scss","./src/app/pages/terms-of-use/terms-of-use.component.scss","./src/app/pages/wrong-organization-domain/wrong-organization-domain.component.scss","./src/app/shared/card/card.component.scss","./src/app/shared/card2/card.component.scss","./src/app/shared/cards-list/cards-list.component.scss","./src/app/shared/confirmation-dialog/confirmation-dialog.component.scss","./src/app/shared/mf-grid/mf-grid.component.scss","./src/app/shared/mfn-modal/mfn-modal.component.scss","./src/app/shared/status-chips/status-chips.component.scss","./src/app/shared/under-construction/under-construction.component.scss","./src/app/user/user-details/user-details.component.scss","./src/app/app.component.html","./src/app/pages/auth-callback/auth-callback.component.html","./src/app/pages/cookie-policy/cookie-policy.component.html","./src/app/pages/privacy-policy/privacy-policy.component.html","./src/app/pages/terms-of-use/terms-of-use.component.html","./src/app/pages/wrong-organization-domain/wrong-organization-domain.component.html","./src/app/shared/card/card.component.html","./src/app/shared/card2/card.component.html","./src/app/shared/cards-list/cards-list.component.html","./src/app/shared/confirmation-dialog/confirmation-dialog.component.html","./src/app/shared/mf-grid/mf-grid.component.html","./src/app/shared/mfn-modal/mfn-modal.component.html","./src/app/shared/status-chips/status-chips.component.html","./src/app/shared/under-construction/under-construction.component.html","./src/app/user/user-details/user-details.component.html"],"names":[],"mappings":"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","file":"main.js","sourcesContent":["function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = 98255;\nmodule.exports = webpackEmptyAsyncContext;","import { trigger, style, state, transition, animate } from \"@angular/animations\";\n\nexport const expandCollapseDetails = trigger('expandCollapseDetails', [\n state('collapsed, void', style({height: '0px'})),\n state('expanded', style({height: '*'})),\n transition('expanded <=> collapsed', animate('300ms cubic-bezier(0.4, 0.0, 0.2, 1)')),\n transition('expanded <=> void', animate('300ms cubic-bezier(0.4, 0.0, 0.2, 1)'))\n ]);","export { menuToggle } from './menu-toggle.animation';\nexport { slideInOut } from './slide-in-out.animation';\nexport { toggleInOut } from './toggle-in-out.animation';\nexport { expandCollapseDetails } from './expand-collapse-details.animation';","import { animate, keyframes, state, style, transition, trigger } from '@angular/animations';\n\nexport const menuToggle = trigger('menuToggle', [\n state('open', style({\n left: '250px'\n })),\n state('close', style({\n left: 0\n })),\n transition('open => close', animate('.4s', keyframes([\n style({ opacity: 0, left: '250px' }),\n style({ opacity: 0, left: '200px' }),\n style({ opacity: .1, left: '20px' }),\n style({ opacity: 1, left: 0 })\n ]))),\n transition('close => open', animate('.4s', keyframes([\n style({ opacity: 0, left: 0 }),\n style({ opacity: 0, left: '100px' }),\n style({ opacity: .1, left: '230px' }),\n style({ opacity: 1, left: '250px' })\n ])))\n]);\n","import {animate, state, style, transition, trigger} from '@angular/animations';\n\nexport const slideInOut = trigger('slideInOut', [\n state('open', style({\n marginLeft: '250px',\n width: 'calc(100% - 250px)'\n })),\n state('close', style({\n marginLeft: '15px',\n width: 'calc(100% - 15px)'\n })),\n transition('open <=> close', animate('.2s ease-in-out'))\n]);\n","import {animate, keyframes, state, style, transition, trigger} from '@angular/animations';\n\nexport const toggleInOut = trigger('toggleInOut', [\n state('open', style({\n width: '250px'\n })),\n state('close', style({\n width: 0,\n })),\n transition('open => close', animate('.2s', keyframes([\n style({ width: '250px' }),\n style({ width: '230px' }),\n style({ width: '20px' }),\n style({ width: 0 })\n ]))),\n transition('close => open', animate('.2s', keyframes([\n style({ width: 0 }),\n style({ width: '200px' }),\n style({ width: '230px' }),\n style({ width: '250px' })\n ])))\n]);\n","import { NgModule } from '@angular/core';\nimport {RouterModule} from '@angular/router';\nimport {IsLoggedGuard} from '../user/is-logged.guard';\nimport {AuthCallbackComponent} from '../pages/auth-callback/auth-callback.component';\nimport { WrongOrganizationDomainComponent } from '../pages/wrong-organization-domain/wrong-organization-domain.component';\n\n/**\n * App routes\n */\nconst routes = [\n { path: '', redirectTo: '/dashboard/form/list', pathMatch: 'full' },\n {\n path: 'auth-callback',\n component: AuthCallbackComponent\n },\n {\n path: 'wrong-organization',\n component: WrongOrganizationDomainComponent\n },\n {\n path: 'dashboard',\n loadChildren: () => import('../layout/layout.module').then(m => m.LayoutModule),\n canActivate: [IsLoggedGuard]\n },\n {\n path: 'anonymous',\n loadChildren: () => import('../layout/layout.module').then(m => m.LayoutModule),\n data: {isAnonymous: true}\n },\n {\n path: 'export',\n loadChildren: () => import('../layout/layout.module').then(m => m.LayoutModule),\n data: {isExport: true}\n },\n {\n path: 'report',\n loadChildren: () => import('../layout/layout.module').then(m => m.LayoutModule),\n canActivate: [IsLoggedGuard]\n },\n];\n\n/**\n * This module is responsible only for application routes\n */\n@NgModule({\n imports: [\n RouterModule.forRoot(routes)\n ],\n exports: [RouterModule]\n})\n/**\n * App routing class\n */\nexport class AppRoutingModule { }\n","import { ChangeDetectionStrategy, Component, OnDestroy, OnInit } from '@angular/core';\nimport { ActivatedRoute, NavigationEnd, Router } from '@angular/router';\n\nimport { Observable, Subscription, BehaviorSubject } from 'rxjs';\n\nimport { select, Store } from '@ngrx/store';\n\n\nimport { MfnModalComponent } from './shared/mfn-modal/mfn-modal.component';\nimport { AppStateModel, getState } from './store/app-state.model';\nimport { AppAuthNService } from './user/app-auth-n.service';\n\nimport { Title } from '@angular/platform-browser';\nimport { MatDialog } from '@angular/material/dialog';\nimport { errorPopup, globalLoading, messagePopup } from './store/actions/ui.actions';\nimport { getUserBySub } from './user/store/user.actions';\nimport { toggleModal, updateModalData } from './form/store/form.actions';\nimport { EnvService } from './environment-integration/env.service';\nimport { MatSnackBar } from '@angular/material/snack-bar';\n\n@Component({\n selector: 'mfn-root',\n templateUrl: './app.component.html',\n styleUrls: [ './app.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class AppComponent implements OnInit, OnDestroy {\n\n loading: Observable;\n\n private subscription: Subscription = new Subscription();\n private isListFormPage: BehaviorSubject = new BehaviorSubject(true);\n\n constructor(\n public store: Store,\n private router: Router,\n public dialog: MatDialog,\n private route: ActivatedRoute,\n private AppAuthService: AppAuthNService,\n private titleService: Title,\n private env: EnvService,\n private snackBar: MatSnackBar\n ) {\n this.subscription.add(\n this.router.events.subscribe((routeEv: NavigationEnd) => {\n if (routeEv instanceof NavigationEnd) {\n this.isListFormPage.next(routeEv.urlAfterRedirects === '/dashboard/form/list');\n }\n })\n );\n this.resetModal();\n\n this.loading = store.select(state => state.ui.loading);\n\n this.subscription.add(\n this.store.select(state => state.form.modal.toggle)\n .subscribe((toggle) => {\n if (toggle) {\n this.openDialog();\n }\n }));\n }\n\n ngOnInit(): void {\n if (window.location.host === this.env.domain) {\n window.location.href = `${ this.env.protocol }://navigatormf.${ this.env.mainDomain }`;\n }\n\n this.store.dispatch(globalLoading({ loading: false }));\n if (this.AppAuthService.isLoggedIn()) {\n const user = getState(this.store).user.profile;\n this.store.dispatch(getUserBySub({ profile: user }));\n }\n\n this.subscription.add(\n this.store.pipe(select(state => state.organization.current)).subscribe(organization => {\n if (organization.name) {\n this.titleService.setTitle(`Metaforms Navigator - ${ organization.name }`);\n }\n })\n );\n this.subscription.add(this.store.select(state => state.ui.error).subscribe(error => {\n if (error) {\n this.snackBar.open(error, '', {\n horizontalPosition: 'center',\n verticalPosition: 'top',\n duration: 3000,\n panelClass: 'snackbar--alert-background'\n });\n this.store.dispatch(errorPopup({ error: '' }));\n }\n }));\n\n this.subscription.add(this.store.select(state => state.ui.message).subscribe(message => {\n if (message) {\n this.snackBar.open(message, '', {\n horizontalPosition: 'center',\n verticalPosition: 'top',\n duration: 3000,\n panelClass: 'snackbar--message'\n });\n this.store.dispatch(messagePopup({ message: '' }));\n }\n }));\n }\n\n ngOnDestroy(): void {\n this.subscription.unsubscribe();\n }\n\n openDialog(): void {\n const dialogRef = this.dialog.open(MfnModalComponent, {\n width: '500px'\n });\n\n this.subscription.add(dialogRef.afterClosed().subscribe(() => {\n }));\n }\n\n private resetModal(): void {\n this.store.dispatch(updateModalData('', ''));\n this.store.dispatch(toggleModal(false));\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { MatIconRegistry } from '@angular/material/icon';\n\nimport { AppComponent } from './app.component';\nimport { CoreModule } from './core/core.module';\nimport { UserModule } from './user/user.module';\nimport {PagesModule} from './pages/pages.module';\nimport { SharedModule } from './shared/shared.module';\nimport { MfStoreModule } from './store/mf-store.module';\nimport { AppRoutingModule } from './app-routing/app-routing.module';\nimport {OrganizationModule} from './organization/organization.module';\nimport { EnvironmentIntegrationModule } from './environment-integration/environment-integration.module';\n\n@NgModule({\n declarations: [\n AppComponent\n ],\n imports: [\n BrowserAnimationsModule,\n SharedModule,\n AppRoutingModule,\n MfStoreModule,\n UserModule,\n OrganizationModule,\n CoreModule.forRoot(),\n EnvironmentIntegrationModule,\n PagesModule\n ],\n providers: [],\n bootstrap: [AppComponent]\n})\nexport class AppModule {\n constructor(\n private iconRegistry: MatIconRegistry,\n private sanitizer: DomSanitizer\n ) {\n this.iconRegistry.addSvgIcon('google-home-assistant', sanitizer.bypassSecurityTrustResourceUrl('../assets/images/home-assistant.svg'));\n this.iconRegistry.addSvgIcon('meta-forms-logo-checkbox', sanitizer.bypassSecurityTrustResourceUrl('../assets/images/metaforms-logo-checkbox.svg'));\n this.iconRegistry.registerFontClassAlias('mf-user', 'icon-mf-user');\n this.iconRegistry.registerFontClassAlias('mf-howto', 'icon-mf-howto');\n }\n}\n","import { UserModel } from '../../user/user.model';\nimport { ProjectModel } from '../../store/models/project.model';\nimport { RecordModel } from '../../record/record.model';\nimport { FormModel } from '../../form/form.model';\n\nexport interface ClientStateModel {\n list: UserModel[];\n current: UserModel;\n projects: Partial[];\n records: RecordModel[];\n forms: Partial[];\n}\n\nexport interface AppStateClient {\n client: ClientStateModel;\n}\n\nexport const appStateClient: AppStateClient = {\n client: {\n list: [],\n projects: [],\n forms: [],\n records: [],\n current: {\n userId: null,\n organizationId: null,\n sub: '',\n email: '',\n family_name: '',\n given_name: '',\n userName: '',\n firstName: '',\n lastName: '',\n position: '',\n isUserActive: false,\n avatarURL: '',\n securityGroup: [],\n subscriptionlevel: '',\n createdAt: '',\n updatedAt: '',\n userIdCreated: null,\n userIdUpdated: null,\n country: '',\n address: '',\n statusId: null,\n amr: [],\n isPending: false,\n pinCode: null,\n phoneNumber: null,\n customerIdentifier: '',\n customFields: []\n }\n }\n};\n","import { createAction, props } from '@ngrx/store';\nimport { UserModel } from '../../user/user.model';\nimport { ProjectModel } from '../../store/models/project.model';\nimport { FormModel } from '../../form/form.model';\n\nexport enum ActionTypes {\n GET_CLIENTS_PER_ASSIGNMENT = '[Client] Get clients per assignment',\n POPULATE_CLIENTS_LIST = '[Client] Populate Clients',\n SELECT_CLIENT = '[Client] Select client',\n RESET_SELECTED_CLIENT = '[Client] Reset selected client',\n GET_CLIENT_PROJECTS_PER_CUSTOMER_ASSIGNMENT = '[Client] Get Client Projects Per Customer Assignment',\n POPULATE_CLIENT_PROJECTS = '[Client] Populate Client Projects',\n RESET_CLIENT_PROJECTS = '[Client] Reset Client Projects',\n GET_CLIENT_PROJECT_FORMS_PER_ASSIGNMENT = '[Client] Get Client Project forms per assignment',\n RESET_CLIENT_PROJECT_FORMS = '[Client] Reset Client Project forms',\n POPULATE_CLIENT_PROJECT_FORMS = '[Client] Populate Client Project forms',\n\n}\n\nexport const getClientsPerAssignment = createAction(ActionTypes.GET_CLIENTS_PER_ASSIGNMENT);\nexport const populateClientsList = createAction(ActionTypes.POPULATE_CLIENTS_LIST, (list: UserModel[]) => ({ list }));\nexport const selectClient = createAction(ActionTypes.SELECT_CLIENT, (client: UserModel) => ({ client }));\nexport const resetSelectedClient = createAction(ActionTypes.RESET_SELECTED_CLIENT);\nexport const getClientProjectsPerCustomerAssignment = createAction(ActionTypes.GET_CLIENT_PROJECTS_PER_CUSTOMER_ASSIGNMENT,\n props<{ id: number, identifier: string }>());\nexport const populateClientProjects = createAction(ActionTypes.POPULATE_CLIENT_PROJECTS, (projects: Partial[]) => ({ projects }));\nexport const resetClientProjects = createAction(ActionTypes.RESET_CLIENT_PROJECTS);\nexport const getClientProjectFormsPerAssignment = createAction(ActionTypes.GET_CLIENT_PROJECT_FORMS_PER_ASSIGNMENT, props<{ projectId: number, datasetId: number }>());\nexport const resetClientProjectsForms = createAction(ActionTypes.RESET_CLIENT_PROJECT_FORMS);\nexport const populateClientProjectForms = createAction(ActionTypes.POPULATE_CLIENT_PROJECT_FORMS, (forms: Partial[]) => ({ forms }));\n\n","import { Injectable } from '@angular/core';\n\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { Store } from '@ngrx/store';\n\nimport { AppStateModel } from '../../store/app-state.model';\nimport * as clientActions from './client.actions';\nimport { mergeMap, catchError, switchMap } from 'rxjs/operators';\nimport { globalLoading } from '../../store/actions/ui.actions';\nimport { UserService } from '../../user/user.service';\nimport { UserModel } from '../../user/user.model';\nimport { populateClientProjectForms, populateClientProjects, populateClientsList } from './client.actions';\nimport { ProjectService } from '../../project/project.service';\nimport { FormModel } from '../../form/form.model';\n\n\n@Injectable()\nexport class ClientEffects {\n\n constructor(\n private store: Store,\n private actions: Actions,\n private userService: UserService,\n private projectsService: ProjectService\n ) {\n }\n\n getClientsPerAssignment = createEffect(() => this.actions.pipe(\n ofType(clientActions.getClientsPerAssignment),\n switchMap(() => {\n return this.projectsService.customerUsersPerAssignment().pipe(\n mergeMap((res: UserModel[]) => {\n return [\n (globalLoading({ loading: false })),\n (populateClientsList(res))\n ];\n }),\n catchError((err) => {\n return [ (globalLoading({ loading: false })) ];\n })\n );\n }\n )\n ));\n\n getClientProjectsPerCustomerAssignment = createEffect(() => this.actions.pipe(\n ofType(clientActions.getClientProjectsPerCustomerAssignment),\n switchMap(({ id, identifier }) => {\n return this.projectsService.projectsPerCustomerAssignment(id, identifier).pipe(\n mergeMap((res) => {\n return [\n (globalLoading({ loading: false })),\n (populateClientProjects(res))\n ];\n }),\n catchError((err) => {\n return [ (globalLoading({ loading: false })) ];\n })\n );\n }\n )\n ));\n\n getRecordFormsPerProjectAssignment = createEffect(() => this.actions.pipe(\n ofType(clientActions.getClientProjectFormsPerAssignment),\n switchMap(({ projectId, datasetId }) => {\n return this.projectsService.recordFormsPerProjectAssignment(projectId, datasetId).pipe(\n mergeMap((res: Partial[]) => {\n return [\n (globalLoading({ loading: false })),\n (populateClientProjectForms(res))\n ];\n }),\n catchError((err) => {\n return [ (globalLoading({ loading: false })) ];\n })\n );\n }\n )\n ));\n\n}\n\n","import { appStateClient, ClientStateModel } from './client-state.model';\nimport { Action, createReducer, on } from '@ngrx/store';\nimport * as formActions from './client.actions';\n\nconst reducer = createReducer(appStateClient.client,\n on(formActions.populateClientsList, (state, { list }) => {\n return { ...state, list };\n }),\n on(formActions.selectClient, (state, { client }) => ({ ...state, current: client })),\n on(formActions.resetSelectedClient, (state) => {\n return {\n ...state,\n current: appStateClient.client.current\n };\n }),\n on(formActions.resetClientProjects, (state) => {\n return {\n ...state,\n projects: []\n };\n }),\n on(formActions.populateClientProjects, (state, { projects }) => {\n return {\n ...state,\n projects\n };\n }),\n on(formActions.populateClientProjectForms, (state, { forms }) => {\n return {\n ...state,\n forms\n };\n })\n);\n\nexport function clientReducer(state: ClientStateModel, action: Action): ClientStateModel {\n return reducer(state, action);\n}\n","import { Injectable } from '@angular/core';\nimport { EnvService } from '../../environment-integration/env.service';\n\n@Injectable()\nexport class AppConfig {\n config = {\n apis: {\n form: 'Form',\n user: 'User',\n record: 'Record',\n organization: 'Organization',\n datasetView: 'DatasetView',\n project: 'Project',\n group: 'SecurityGroup',\n assignment: 'Assignment'\n },\n filesPrefix: 'Meta-Forms-File',\n dateTimeFormatToISO: 'YYYY-MM-DD HH:mm:SSS',\n dateTimeFormatToUTC: true,\n utcFormat: 'YYYY-MM-DDTHH:mm:ss.sssZ'\n };\n\n constructor(\n private env: EnvService\n ) {\n }\n\n buildUri(entity): string {\n const base = `${ this.env.protocol }://${ this.env.domain }/api`;\n return `${ base }/${ this.config.apis[entity] }`;\n }\n\n}\n","import { ModuleWithProviders, NgModule, Optional, SkipSelf } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MfnHttp } from './http/http-client.service';\nimport { AppConfig } from './config/app.config';\nimport { HttpClientModule } from '@angular/common/http';\nimport { ProjectService } from '../project/project.service';\n\n@NgModule({\n imports: [\n CommonModule,\n HttpClientModule\n ],\n exports: [ CommonModule ]\n})\nexport class CoreModule {\n constructor(@Optional() @SkipSelf() parentModule: CoreModule) {\n if (parentModule) {\n throw new Error(\n 'CoreModule is already loaded. Import it in the AppModule only');\n }\n }\n\n static forRoot(): ModuleWithProviders {\n return {\n ngModule: CoreModule,\n providers: [\n AppConfig,\n MfnHttp,\n ProjectService\n ]\n };\n }\n}\n","import { throwError as observableThrowError, Observable } from 'rxjs';\n\nimport { catchError } from 'rxjs/operators';\nimport { Injectable } from '@angular/core';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { AppAuthNService } from '../../user/app-auth-n.service';\n\nimport { Router } from '@angular/router';\n\n@Injectable()\nexport class MfnHttp {\n\n constructor(\n private http: HttpClient,\n private appAuth: AppAuthNService,\n private router: Router,\n ) {\n }\n\n createAuthorizationHeader(headers: HttpHeaders): HttpHeaders {\n const token = this.appAuth.getAuthorizationHeaderValue();\n return headers.append('Authorization', token);\n }\n\n get(url: string): Observable {\n let headers = new HttpHeaders();\n headers = this.createAuthorizationHeader(headers);\n return this.http.get(url, {\n headers\n }).pipe(catchError(this.handleError));\n }\n\n post(url: string, data: any, options = { headers: new HttpHeaders() }): Observable {\n options.headers = this.createAuthorizationHeader(options.headers);\n return this.http.post(url, data, options).pipe(catchError(this.handleError));\n }\n\n put(url: string, data: any): Observable {\n let headers = new HttpHeaders();\n headers = this.createAuthorizationHeader(headers);\n return this.http.put(url, data, {\n headers\n }).pipe(catchError(this.handleError));\n }\n\n delete(url: string): Observable {\n let headers = new HttpHeaders();\n headers = this.createAuthorizationHeader(headers);\n return this.http.delete(url, {\n headers\n }).pipe(catchError(this.handleError));\n }\n\n handleError = (res) => {\n const message = res.error && res.error.message ? res.error.message : 'There is an error';\n if (res.error.error === 'User is accessing organization that has no permission') {\n this.router.navigate([ '/wrong-organization' ]);\n }\n return observableThrowError(new Error(message));\n };\n\n}\n","import { EnvService } from './env.service';\n\nexport const EnvServiceFactory = () => {\n const env = new EnvService();\n\n const browserWindow = window || {};\n const browserWindowEnv = browserWindow['_env'] || {};\n\n // properties from env.js overwrite defaults from the EnvService.\n for (const key in browserWindowEnv) {\n if (browserWindowEnv.hasOwnProperty(key)) {\n env[key] = window['_env'][key];\n }\n }\n\n return env;\n};\n\nexport const EnvServiceProvider = {\n provide: EnvService,\n useFactory: EnvServiceFactory,\n deps: [],\n};\n","export class EnvService {\n // defaults are going to be overridden by env.js\n\n public production: false;\n public mainDomain: 'metaforms.app';\n public domain: 'navigator.metaforms.app';\n public clientId: 'JSDevClient';\n public clientSecret: 'jsdevclient;dorgfgitvzmoygksqjpm,';\n public protocol: 'https';\n public version: '#version';\n public environment: 'Develop';\n}\n","import { NgModule } from '@angular/core';\nimport { EnvServiceProvider } from './env.service.provider';\n\n@NgModule({\n providers: [\n EnvServiceProvider\n ]\n})\nexport class EnvironmentIntegrationModule {}\n","import { CardSettingsDTO } from '../shared/card2/card.model';\n\nexport enum FormType {\n DataCapture = 1,\n Survey = 2,\n Report = 3\n}\n\nexport enum ProjectTypeEnum {\n GeneralPurpose = 1,\n Dossier = 2\n}\n\nexport interface FormModel {\n id: number;\n projectId: number;\n projectName?: string;\n assignmentId: number;\n formName?: string;\n organizationId: number;\n body: {\n pages: any[];\n header: any;\n footer: any;\n };\n name: string;\n description: string;\n userIdCreated: number;\n userIdUpdated: number;\n shared: string[];\n datasets: any[];\n datasetId: number;\n questions: any[];\n questionsPopulated: any;\n typeForm: FormType;\n type: FormType;\n projectType: ProjectTypeEnum;\n settings: {\n cardSettings?: CardSettingsDTO\n };\n createdAt: string;\n updatedAt: string;\n recordCount?: number;\n assignmentUserIds?: number[];\n}\n","import { Injectable } from '@angular/core';\nimport { MfnHttp } from '../core/http/http-client.service';\nimport { AppConfig } from '../core/config/app.config';\nimport { map } from 'rxjs/operators';\n\n@Injectable()\nexport class FormService {\n\n constructor(\n private http: MfnHttp,\n private config: AppConfig\n ) {\n }\n\n getAssignedForms() {\n return this.http.get(this.config.buildUri('form') + '/AssignedFormsPerUser');\n }\n\n formsByRecordId(recordId: number) {\n return this.http.get(this.config.buildUri('form') + '/FormsByRecordId?recordId=' + recordId);\n }\n\n getUsersByGroupId(groupId: number) {\n return this.http.get(this.config.buildUri('group') + '/SingleSecurityGroupWithUsers?securityGroupId=' + groupId).pipe(\n map((response) => response.usersDetails)\n );\n }\n\n}\n","import { FormModel } from '../form.model';\n\n\nexport interface ModalModel {\n toggle: boolean;\n title: string;\n description: string;\n}\n\nexport interface FormStateModel {\n list: FormModel[];\n current: FormModel;\n modal: ModalModel;\n}\n\nexport interface AppStateForm {\n form: FormStateModel;\n}\n\nexport const appStateForm: AppStateForm = {\n form: {\n list: [],\n current: {\n id: null,\n projectId: null,\n assignmentId: null,\n organizationId: null,\n body: {\n pages: [],\n header: {},\n footer: {}\n },\n name: '',\n description: '',\n userIdCreated: null,\n userIdUpdated: null,\n shared: [],\n datasets: [],\n datasetId: null,\n questions: [],\n questionsPopulated: {},\n typeForm: 1,\n type: null,\n projectType: null,\n settings: {\n cardSettings: {\n cardBackgroundColor: '',\n cardButtonBackgroundColor: '',\n cardButtonForegroundColor: '',\n cardButtonOnHoverBackgroundColor: '',\n cardButtonOnHoverForegroundColor: '',\n cardForegroundPrimaryColor: '',\n cardForegroundSecondaryColor: '',\n }\n },\n createdAt: '',\n updatedAt: '',\n },\n modal: {\n toggle: false,\n title: '',\n description: ''\n }\n }\n};\n","import { createAction, props } from '@ngrx/store';\nimport { FormModel } from '../form.model';\n\nexport enum ActionTypes {\n AUTOSAVE = '[Form] Autosave',\n TOGGLE_MODAL = '[Form] Toggle Modal',\n UPDATE_MODAL_DATA = '[Form] Update Modal Data',\n SET_CURRENT_FORM = '[Form] Set current form',\n RESET_CURRENT_FORM = '[Form] Reset current form',\n GET_ASSIGNED_FORMS = '[Form] Get assigned forms',\n SET_FORM_LIST = '[Form] Set form list',\n GET_FORMS_BY_RECORD = '[Form] Get Forms By Record ID'\n}\n\nexport const getAssignedForms = createAction(ActionTypes.GET_ASSIGNED_FORMS);\nexport const setFormList = createAction(ActionTypes.SET_FORM_LIST, (forms: FormModel[]) => ({ forms }));\nexport const setCurrentForm = createAction(ActionTypes.SET_CURRENT_FORM, (form: FormModel) => ({ form }));\nexport const resetCurrentForm = createAction(ActionTypes.RESET_CURRENT_FORM);\nexport const autosave = createAction(ActionTypes.AUTOSAVE, (autosave: boolean) => ({ autosave }));\nexport const toggleModal = createAction(ActionTypes.TOGGLE_MODAL, (toggle: boolean) => ({ toggle }));\nexport const updateModalData = createAction(ActionTypes.UPDATE_MODAL_DATA, (title: string, description: string) => ({\n title,\n description\n}));\nexport const getFormsByRecordId = createAction(ActionTypes.GET_FORMS_BY_RECORD, (recordId: number, assignmentId: number) => ({\n recordId,\n assignmentId\n}));\n","import { Injectable } from '@angular/core';\n\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { Store } from '@ngrx/store';\n\nimport { AppStateModel } from '../../store/app-state.model';\nimport * as formActions from './form.actions';\nimport { FormService } from '../form.service';\nimport { mergeMap, catchError, switchMap } from 'rxjs/operators';\nimport { globalLoading } from '../../store/actions/ui.actions';\n\n\n@Injectable()\nexport class FormEffects {\n constructor(\n private store: Store,\n private actions: Actions,\n private formService: FormService\n ) {\n }\n\n getAssignedForms = createEffect(() => this.actions.pipe(\n ofType(formActions.getAssignedForms),\n switchMap(() => {\n return this.formService.getAssignedForms().pipe(\n mergeMap(res => {\n return [\n (globalLoading({ loading: false })),\n (formActions.setFormList(res))\n ];\n }),\n catchError(err => {\n return [ (globalLoading({ loading: false })) ];\n })\n );\n }\n )\n ));\n\n formsByRecordId = createEffect(() => this.actions.pipe(\n ofType(formActions.getFormsByRecordId),\n switchMap(({ recordId }) => {\n return this.formService.formsByRecordId(recordId).pipe(\n mergeMap(res => {\n return [\n (globalLoading({ loading: false })),\n (formActions.setFormList(res))\n ];\n }),\n catchError(err => {\n return [ (globalLoading({ loading: false })) ];\n })\n );\n })\n ));\n\n}\n\n","import { appStateForm, FormStateModel } from './form-state.model';\nimport { Action, createReducer, on } from '@ngrx/store';\nimport * as formActions from './form.actions';\n\nconst reducer = createReducer(appStateForm.form,\n on(formActions.setCurrentForm, (state, { form }) => ({ ...state, current: form })),\n on(formActions.setFormList, (state, { forms }) => ({ ...state, list: forms })),\n on(formActions.resetCurrentForm, (state) => {\n return {\n ...state, current: {\n id: null,\n projectId: null,\n assignmentId: null,\n organizationId: null,\n body: {\n pages: [],\n header: {},\n footer: {}\n },\n name: '',\n description: '',\n userIdCreated: null,\n userIdUpdated: null,\n shared: [],\n datasets: [],\n datasetId: null,\n questions: [],\n questionsPopulated: {},\n typeForm: 1,\n type: null,\n projectType: null,\n settings: {\n cardSettings: {\n cardBackgroundColor: '',\n cardButtonBackgroundColor: '',\n cardButtonForegroundColor: '',\n cardButtonOnHoverBackgroundColor: '',\n cardButtonOnHoverForegroundColor: '',\n cardForegroundPrimaryColor: '',\n cardForegroundSecondaryColor: '',\n }\n },\n createdAt: '',\n updatedAt: ''\n }\n };\n }),\n on(formActions.toggleModal, (state, { toggle }) => ({ ...state, modal: { ...state.modal, toggle: toggle } })),\n on(formActions.updateModalData, (state, { title, description }) => ({\n ...state,\n modal: { ...state.modal, title, description }\n }))\n);\n\nexport function formReducer(state: FormStateModel, action: Action): FormStateModel {\n return reducer(state, action);\n}\n","\nexport enum SecurityGroupType {\n AuthenticatedUsers = 1,\n Anonymous = 2,\n Agent = 3,\n Customer = 4\n}\n\nexport interface SecurityGroup {\n key: number;\n value: string;\n groupType: SecurityGroupType;\n}\n\n\nexport interface OrganizationModel {\n id: number;\n name: string;\n subDomain: string;\n company: {\n country: string;\n typeOfBusiness: number;\n email: string;\n phone: string;\n };\n contactPersonId: number;\n logoURL: string;\n createdAt: string;\n updatedAt: string;\n userIdCreated: number;\n userIdUpdated: number;\n statusId: number;\n securityGroupDetails: SecurityGroup[]\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { OrganizationService } from './organization.service';\nimport { SharedModule } from '../shared/shared.module';\n\n@NgModule({\n imports: [\n CommonModule,\n SharedModule\n ],\n declarations: [],\n providers: [ OrganizationService ]\n})\nexport class OrganizationModule {\n}\n","import { MfnHttp } from '../core/http/http-client.service';\nimport { AppConfig } from '../core/config/app.config';\nimport { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\n\n@Injectable()\nexport class OrganizationService {\n\n constructor(\n private config: AppConfig,\n private http: MfnHttp,\n private httpClient: HttpClient\n ) {\n }\n\n getUserOrganization(): Observable {\n return this.http.get(this.config.buildUri('organization') + '/UserOrganization');\n }\n\n getAnonymousUserOrganization(anonymousUrl: string): Observable {\n return this.httpClient.get(this.config.buildUri('organization') + '/AnonymousUserOrganization?url=' + anonymousUrl);\n }\n}\n","export enum ActionTypes {\n GET_USER_ORGANIZATION = 'GET_USER_ORGANIZATION',\n UPDATE_CURRENT_ORGANIZATION = 'UPDATE_CURRENT_ORGANIZATION',\n RESET_CURRENT_ORGANIZATION = 'RESET_CURRENT_ORGANIZATION',\n GET_ANONYMOUS_USER_ORGANIZATION = 'GET_ANONYMOUS_USER_ORGANIZATION'\n}\n\nimport { createAction, props } from '@ngrx/store';\nimport { OrganizationModel } from '../organization.model';\n\nexport const getUserOrganization = createAction(ActionTypes.GET_USER_ORGANIZATION);\nexport const updateCurrentOrganization =\n createAction(ActionTypes.UPDATE_CURRENT_ORGANIZATION, props<{ organization: OrganizationModel }>());\nexport const resetCurrentOrganization = createAction(ActionTypes.RESET_CURRENT_ORGANIZATION);\nexport const getAnonymousUserOrganization = createAction(ActionTypes.GET_ANONYMOUS_USER_ORGANIZATION, props<{ anonymousURL: string }>());\n","import { Injectable } from '@angular/core';\nimport * as organizationActions from './organization.actions';\nimport { catchError, mergeMap, switchMap } from 'rxjs/operators';\nimport { OrganizationService } from '../organization.service';\nimport { OrganizationModel } from '../organization.model';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { updateCurrentOrganization } from './organization.actions';\n\n@Injectable()\nexport class OrganizationEffects {\n constructor(\n private actions: Actions,\n private organizationService: OrganizationService\n ) {\n }\n\n getUserOrganization = createEffect(() =>\n this.actions\n .pipe(\n ofType(organizationActions.getUserOrganization),\n switchMap(() => {\n return this.organizationService.getUserOrganization().pipe(\n mergeMap((res) => {\n return [ updateCurrentOrganization({ organization: res }) ];\n }),\n catchError(err => {\n return [];\n }));\n })\n )\n );\n\n getAnonymousUserOrganization = createEffect(() =>\n this.actions.pipe(\n ofType(organizationActions.getAnonymousUserOrganization),\n switchMap(({ anonymousURL }) => {\n return this.organizationService.getAnonymousUserOrganization(anonymousURL).pipe(\n mergeMap((res: OrganizationModel) => {\n return [ updateCurrentOrganization({ organization: res }) ];\n }),\n catchError(err => {\n return [];\n }));\n })\n )\n );\n}\n","import { appStateOrganization, OrganizationState } from './organization.state';\nimport * as organizationActions from './organization.actions';\nimport { Action, createReducer, on } from '@ngrx/store';\n\n\nconst reducer = createReducer(appStateOrganization.organization,\n on(organizationActions.updateCurrentOrganization, (state, { organization }) => ({ ...state, current: organization })),\n on(organizationActions.resetCurrentOrganization, (state) => ({\n ...state,\n current: {\n id: null,\n name: '',\n subDomain: '',\n company: {\n country: '',\n typeOfBusiness: null,\n email: '',\n phone: '',\n },\n contactPersonId: null,\n logoURL: '',\n createdAt: '',\n updatedAt: '',\n userIdCreated: null,\n userIdUpdated: null,\n statusId: null,\n securityGroupDetails: []\n }\n })),\n);\n\nexport function organizationReducer(state: OrganizationState, action: Action): OrganizationState {\n return reducer(state, action);\n}\n","import {OrganizationModel} from '../organization.model';\n\nexport interface OrganizationState {\n current: OrganizationModel;\n}\nexport interface AppStateOrganization {\n organization: OrganizationState;\n}\nexport const appStateOrganization: AppStateOrganization = {\n organization: {\n current: {\n id: null,\n name: '',\n subDomain: '',\n company: {\n country: '',\n typeOfBusiness: null,\n email: '',\n phone: '',\n },\n contactPersonId: null,\n logoURL: '',\n createdAt: '',\n updatedAt: '',\n userIdCreated: null,\n userIdUpdated: null,\n statusId: null,\n securityGroupDetails: []\n }\n }\n};\n","import { Component, OnInit } from '@angular/core';\nimport { AppAuthNService } from '../../user/app-auth-n.service';\n\n@Component({\n templateUrl: './auth-callback.component.html',\n styleUrls: [ './auth-callback.component.scss' ]\n})\nexport class AuthCallbackComponent implements OnInit {\n\n constructor(private appAuth: AppAuthNService) {\n }\n\n ngOnInit(): void {\n this.appAuth.completeAuthentication();\n }\n\n}\n","import { Component } from '@angular/core';\n\n@Component({\n templateUrl: './cookie-policy.component.html',\n styleUrls: [ './cookie-policy.component.scss' ]\n})\nexport class CookiePolicyComponent {\n}\n","import { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\n\nimport { PrivacyPolicyComponent } from './privacy-policy/privacy-policy.component';\nimport { CookiePolicyComponent } from './cookie-policy/cookie-policy.component';\nimport { TermsOfUseComponent } from './terms-of-use/terms-of-use.component';\n\n/**\n * pages routes\n */\nconst routes = [ {\n path: '', children: [\n { path: 'privacy-policy', component: PrivacyPolicyComponent },\n { path: 'cookie-policy', component: CookiePolicyComponent },\n { path: 'terms-of-use', component: TermsOfUseComponent }\n ]\n} ];\n\n/**\n * This module is responsible only for pages routes\n */\n@NgModule({\n imports: [ RouterModule.forChild(routes) ],\n exports: [ RouterModule ]\n})\n/**\n * App routing class\n */\nexport class PagesRoutingModule {\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SharedModule } from '../shared/shared.module';\nimport { PagesRoutingModule } from './pages-routing.module';\nimport { AuthCallbackComponent } from './auth-callback/auth-callback.component';\nimport { WrongOrganizationDomainComponent } from './wrong-organization-domain/wrong-organization-domain.component';\nimport { PrivacyPolicyComponent } from './privacy-policy/privacy-policy.component';\nimport { CookiePolicyComponent } from './cookie-policy/cookie-policy.component';\nimport { TermsOfUseComponent } from './terms-of-use/terms-of-use.component';\n\nconst declarations = [\n AuthCallbackComponent,\n WrongOrganizationDomainComponent,\n PrivacyPolicyComponent,\n CookiePolicyComponent,\n TermsOfUseComponent\n];\n\n@NgModule({\n imports: [\n CommonModule,\n SharedModule,\n PagesRoutingModule\n ],\n declarations,\n exports: [\n ...declarations\n ]\n})\nexport class PagesModule {\n}\n","import { Component } from '@angular/core';\n\n@Component({\n templateUrl: './privacy-policy.component.html',\n styleUrls: [ './privacy-policy.component.scss' ]\n})\nexport class PrivacyPolicyComponent {\n\n}\n","import { Component } from '@angular/core';\n\n@Component({\n templateUrl: './terms-of-use.component.html',\n styleUrls: [ './terms-of-use.component.scss' ]\n})\nexport class TermsOfUseComponent {\n}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\n\nimport { select, Store } from '@ngrx/store';\nimport { Observable, Subscription } from 'rxjs';\n\nimport { OrganizationModel } from '../../organization/organization.model';\nimport { AppStateModel, getState } from '../../store/app-state.model';\nimport { EnvService } from '../../environment-integration/env.service';\n\n@Component({\n templateUrl: './wrong-organization-domain.component.html',\n styleUrls: [ './wrong-organization-domain.component.scss' ]\n})\nexport class WrongOrganizationDomainComponent implements OnInit, OnDestroy {\n\n organization: Observable;\n private subscription: Subscription = new Subscription();\n\n constructor(\n private store: Store,\n private env: EnvService\n ) {\n }\n\n ngOnInit(): void {\n this.organization = this.store.pipe(select(state => state.organization.current));\n this.subscription.add(\n this.organization.subscribe(organization => {\n if (organization.subDomain && organization.subDomain.trim() !== '') {\n this.redirect();\n }\n\n })\n );\n }\n\n ngOnDestroy(): void {\n this.subscription.unsubscribe();\n }\n\n redirect(): void {\n const organizationSubDomain = getState(this.store).organization.current.subDomain;\n window.location.href = `${ this.env.protocol }://${ organizationSubDomain }.${ this.env.mainDomain }`;\n }\n\n setupOrganization($event): void {\n $event.preventDefault();\n window.location.href = `${ this.env.protocol }://manager.${ this.env.mainDomain }`;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { MfnHttp } from '../core/http/http-client.service';\nimport { AppConfig } from '../core/config/app.config';\nimport { Observable } from 'rxjs';\nimport { ProjectModel } from '../store/models/project.model';\nimport { FormModel } from '../form/form.model';\n\n@Injectable()\nexport class ProjectService {\n constructor(\n private http: MfnHttp,\n private config: AppConfig\n ) {\n }\n\n getProjectById(projectId: number): Observable {\n return this.http.get(`${ this.config.buildUri('project') }/ProjectById?id=${ projectId }`);\n }\n\n getClientProjects(id: number, identifier: string): Observable[]> {\n return this.http.get(`${ this.config.buildUri('project') }/ProjectsPerCustomer?customerId=${ id }&customerIdentifier=${ identifier }`);\n }\n\n getAllRecordsFormPerProject(projectId: number, datasetId: number): Observable {\n return this.http.get(`${ this.config.buildUri('form') }/RecordFormsPerProject?projectId=${ projectId }&datasetId=${ datasetId }`);\n }\n\n customerUsersPerAssignment(): Observable {\n return this.http.get(`${ this.config.buildUri('assignment') }/CustomerUsersPerAssignment`);\n }\n\n recordFormsPerProjectAssignment(projectId: number, datasetId: number): Observable[]> {\n return this.http.get(`${ this.config.buildUri('form') }/FormsByProjectIdPerAssigment?projectId=${ projectId }&datasetId=${ datasetId }`);\n }\n\n projectsPerCustomerAssignment(id: number, identifier: string): Observable[]> {\n return this.http.get(`${ this.config.buildUri('project') }/ProjectsPerCustomerAssignment?customerId=${ id }&customerIdentifier=${ identifier }`);\n }\n\n}\n","import { Injectable } from '@angular/core';\n\nimport { Observable } from 'rxjs';\n\nimport { AppConfig } from '../core/config/app.config';\nimport { MfnHttp } from '../core/http/http-client.service';\n\n@Injectable()\nexport class RecordService {\n\n constructor(\n private http: MfnHttp,\n private config: AppConfig\n ) {\n }\n\n getRecordsPerProject(projectId: number, assigmentId: number): Observable {\n const url = `${ this.config.buildUri('record') }/RecordsPerProject?projectId=${ projectId }&assigmentId=${ assigmentId }`;\n return this.http.get(url);\n }\n\n getRecordsPerProjectsCount(projectIds: number[]): Observable {\n return this.http.post(this.config.buildUri('record') + '/RecordsPerProjectsCount', projectIds);\n }\n\n deleteRecord(recordId: number): Observable {\n return this.http.delete(`${ this.config.buildUri('record') }/Record?id=${ recordId }`);\n }\n\n createRecord(data, assignmentId): Observable {\n const params = {\n assignmentId,\n data\n };\n return this.http.post(this.config.buildUri('record') + '/Record', params);\n }\n\n}\n","import { createAction, props } from '@ngrx/store';\nimport { RecordModel } from '../record.model';\nimport { StatusesModel } from '../../shared/status-chips/statuses.model';\n\nexport enum ActionTypes {\n GET_RECORDS_BY_PROJECT_ID = '[Record] Get records by project id',\n GET_RECORDS_BY_PROJECTS_IDS = '[Record] Get records by projects ids',\n UPDATE_RECORD_LIST = '[Record] Update record list',\n RESET_RECORD_LIST = '[Record] Reset record list',\n UPDATE_RECORDS_COUNT = '[Record] Update records count',\n RESET_RECORDS_COUNT = '[Record] Reset records count',\n DELETE_RECORD = '[Record] Delete Record By ID',\n CREATE_RECORD = '[Record] Create record',\n SET_MSG_POPUP = '[Record] MSG_POPUP',\n SET_RECORD_ID = '[Record] SET_RECORD_ID',\n UPDATE_DATASET = '[Record] Update Dataset',\n SET_STATUSES = '[Record] SET_STATUSES',\n SET_CURRENT_RECORD = '[Record] Set current record',\n POPULATE_LIST_PAGE_TITLE = '[Record] Populate list page title',\n POPULATE_RECORD_PERMISSIONS = '[Record] Populate record permissions',\n}\n\nexport const getRecordsByProjectId = createAction(ActionTypes.GET_RECORDS_BY_PROJECT_ID, props<{ projectId: number, assignmentId: number }>());\n\nexport const populateListPageTitle = createAction(ActionTypes.POPULATE_LIST_PAGE_TITLE, props<{ title: string }>());\n\nexport const getRecordsByProjectsIds = createAction(ActionTypes.GET_RECORDS_BY_PROJECTS_IDS, props<{ projectIds: number[] }>());\n\nexport const updateRecordList = createAction(ActionTypes.UPDATE_RECORD_LIST, props<{ records: RecordModel[] }>());\n\nexport const resetRecordList = createAction(ActionTypes.RESET_RECORD_LIST);\n\nexport const updateRecordsCount = createAction(ActionTypes.UPDATE_RECORDS_COUNT, props<{ count: any }>());\n\nexport const resetRecordsCount = createAction(ActionTypes.RESET_RECORDS_COUNT);\n\nexport const setRecordId = createAction(ActionTypes.SET_RECORD_ID, props<{ recordId: number }>());\n\nexport const updateDataset = createAction(ActionTypes.UPDATE_DATASET, props<{ dataset: any }>());\n\n\nexport const setStatuses = createAction(ActionTypes.SET_STATUSES, props<{ statuses: StatusesModel }>());\n\nexport const createRecord = createAction(ActionTypes.CREATE_RECORD, props<{ data: any, projectId: number, assignmentId: number }>());\n\nexport const deleteRecord = createAction(ActionTypes.DELETE_RECORD, props<{ recordId: number, projectId: number, assignmentId: number }>());\n\n\nexport const messagePopup = createAction(ActionTypes.SET_MSG_POPUP, props<{ message: string }>());\n\nexport const updateCurrentRecord = createAction(ActionTypes.SET_CURRENT_RECORD, props<{ record: RecordModel }>());\n\nexport const populateRecordPermissions = createAction(ActionTypes.POPULATE_RECORD_PERMISSIONS, props<{ permissions: any[] }>());\n","import { Injectable } from '@angular/core';\nimport { Actions, createEffect, Effect, ofType } from '@ngrx/effects';\nimport { RecordService } from '../record.service';\nimport { mergeMap, catchError, switchMap, tap } from 'rxjs/operators';\nimport { RecordModel } from '../record.model';\nimport * as recordActions from './record.actions';\nimport { globalLoading } from '../../store/actions/ui.actions';\n\n@Injectable()\nexport class RecordEffects {\n constructor(\n private actions: Actions,\n private recordService: RecordService,\n ) {\n }\n\n deleteRecord = createEffect(() => this.actions.pipe(\n ofType(recordActions.deleteRecord),\n switchMap(({ recordId, assignmentId, projectId }) => this.recordService.deleteRecord(recordId).pipe(\n mergeMap(res => [\n (recordActions.getRecordsByProjectId({ projectId: projectId, assignmentId: assignmentId })),\n (globalLoading({ loading: false }))\n ]),\n catchError(err => {\n return [ (globalLoading({ loading: false })) ];\n })))\n ));\n\n createRecord = createEffect(() => this.actions.pipe(\n ofType(recordActions.createRecord),\n switchMap(({ data, assignmentId, projectId }) => this.recordService.createRecord(data, assignmentId).pipe(\n mergeMap((res: RecordModel) =>\n [\n (globalLoading({ loading: false })),\n (recordActions.setRecordId({ recordId: res.recordId })),\n (recordActions.updateDataset({ dataset: res.data })),\n (recordActions.setStatuses({ statuses: res.statuses })),\n (recordActions.messagePopup({ message: 'Record created' })),\n (recordActions.getRecordsByProjectId({ projectId: projectId, assignmentId: assignmentId })),\n (recordActions.updateCurrentRecord({ record: { ...res, isNew: true } }))\n ]\n ),\n catchError(err => {\n return [ (globalLoading({ loading: false })) ];\n })\n ))\n ));\n\n getRecordsByProjectId = createEffect(() => {\n const setStatus = (list) => {\n return list.map(record => {\n let status = 0;\n if (record.statuses) {\n if (record.statuses.completion) {\n switch (record.statuses.completion.title) {\n case 'In Progress':\n status = 1;\n break;\n case 'Completed':\n status = 2;\n break;\n default:\n status = 4;\n }\n }\n }\n return { ...record, status };\n });\n };\n return this.actions.pipe(\n ofType(recordActions.getRecordsByProjectId),\n switchMap(({ projectId, assignmentId }) => {\n return this.recordService.getRecordsPerProject(projectId, assignmentId).pipe(\n mergeMap(res => [\n (recordActions.updateRecordList({ records: setStatus(res.navigatorRecordGridDTO) })),\n (recordActions.populateListPageTitle({ title: res.title })),\n (recordActions.populateRecordPermissions({ permissions: res.permissions })),\n (globalLoading({ loading: false }))\n ]),\n catchError(err => {\n return [ (globalLoading({ loading: false })) ];\n }));\n }\n )\n );\n });\n\n getRecordsByProjectsIds = createEffect(() => this.actions.pipe(\n ofType(recordActions.getRecordsByProjectsIds),\n switchMap(({ projectIds }) => {\n return this.recordService.getRecordsPerProjectsCount(projectIds).pipe(\n mergeMap(res => {\n return [ (recordActions.updateRecordsCount({ count: res })) ];\n }\n ),\n catchError(err => {\n return [];\n }));\n }\n )\n ));\n}\n","import { appStateRecord, RecordState } from './record.state';\nimport { Action, createReducer, on } from '@ngrx/store';\nimport * as recordActions from './record.actions';\n\nconst reducer = createReducer(appStateRecord.record,\n on(recordActions.updateRecordList, (state, { records }) => ({ ...state, list: records })),\n on(recordActions.populateListPageTitle, (state, { title }) => ({ ...state, listPageTitle: title })),\n on(recordActions.populateRecordPermissions, (state, { permissions }) => ({ ...state, permissions })),\n on(recordActions.resetRecordList, (state) => ({ ...state, list: [] })),\n on(recordActions.updateRecordsCount, (state, { count }) => {\n return ({ ...state, count });\n }),\n on(recordActions.resetRecordsCount, (state) => ({ ...state, count: {} })),\n on(recordActions.updateCurrentRecord, (state, { record }) => ({ ...state, current: record })),\n);\n\nexport function recordReducer(state: RecordState, action: Action): RecordState {\n return reducer(state, action);\n}\n","import { RecordModel } from '../record.model';\n\n\nexport interface RecordState {\n list: RecordModel[];\n count: any;\n current: RecordModel;\n listPageTitle: string;\n permissions: any[];\n}\n\nexport interface AppStateRecord {\n record: RecordState;\n}\n\nexport const appStateRecord: AppStateRecord = {\n record: {\n list: [],\n count: {},\n current: {\n recordId: 0,\n fullName: '',\n projectRecordID: 0,\n title: '',\n createdAt: '',\n updatedAt: '',\n assignedTo: '',\n statuses: {},\n status: 0\n },\n listPageTitle: '',\n permissions: []\n }\n};\n","import { Component, Input, OnDestroy, OnInit, Output, EventEmitter } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\n\nimport { take, skip } from 'rxjs/operators';\nimport { Store } from '@ngrx/store';\nimport { Subscription } from 'rxjs';\n\nimport { Card } from './card.model';\nimport { AppStateModel } from '../../store/app-state.model';\nimport { globalLoading } from '../../store/actions/ui.actions';\nimport { FormType } from '../../form/form.model';\nimport { StatusesModel } from '../status-chips/statuses.model';\nimport { setCurrentForm } from '../../form/store/form.actions';\nimport { getRecordsByProjectId } from '../../record/store/record.actions';\n\n@Component({\n selector: 'mfn-card',\n templateUrl: './card.component.html',\n styleUrls: [ './card.component.scss' ]\n})\nexport class MfmCardComponent implements OnInit, OnDestroy {\n\n @Input() card: Card;\n @Input() statuses: StatusesModel;\n @Input() cardType: string;\n @Input() width: number;\n @Input() height: number;\n @Output() afterViewClicked: EventEmitter = new EventEmitter();\n formType = FormType;\n cardTitleLength = 55;\n cardBtnStyles = {};\n cardStyle = {};\n cardPrimaryColor = {};\n cardSecondaryColor = {};\n subscription: Subscription = new Subscription();\n\n constructor(\n private router: Router,\n public activatedRoute: ActivatedRoute,\n private store: Store\n ) {\n }\n\n ngOnInit(): void {\n this.cardTitleLength = this.width / 11;\n this.cardStyle['width'] = this.width + 'px';\n this.cardStyle['height'] = this.height + 'px';\n if (this.card.hasOwnProperty('settings') && this.card.settings !== null && this.card.settings.hasOwnProperty('cardSettings')) {\n this.cardBtnStyles['background-color'] = this.card.settings.cardSettings.cardButtonBackgroundColor;\n this.cardBtnStyles['color'] = this.card.settings.cardSettings.cardButtonForegroundColor;\n this.cardStyle['background-color'] = this.card.settings.cardSettings.cardBackgroundColor;\n this.cardPrimaryColor['color'] = this.card.settings.cardSettings.cardForegroundPrimaryColor;\n this.cardSecondaryColor['color'] = this.card.settings.cardSettings.cardForegroundSecondaryColor;\n }\n }\n\n ngOnDestroy(): void {\n this.subscription.unsubscribe();\n }\n\n cardClick(card: Card): void {\n if (card.typeForm === FormType.Report || card.type === FormType.Report) {\n this.router.navigate([ '/dashboard/report/single/fill', card.assignmentId, 0 ], { relativeTo: this.activatedRoute });\n } else {\n this.store.dispatch(globalLoading({ loading: true }));\n if (this.cardType === 'recordForm') {\n this.afterViewClicked.emit(card);\n } else {\n this.subscription.add(\n this.store.select(state => state.record.list).pipe(skip(1), take(1)).subscribe(records => {\n let path = 'form';\n if (this.activatedRoute.snapshot.data.type === FormType.Survey) {\n path = 'survey';\n }\n if (records.length === 0) {\n this.store.dispatch(globalLoading({ loading: false }));\n this.router.navigate([ `/dashboard/${ path }/single/fill`, card.assignmentId, 0 ], { relativeTo: this.activatedRoute });\n } else {\n this.store.dispatch(setCurrentForm(card));\n this.store.dispatch(globalLoading({ loading: false }));\n this.router.navigate([ `/dashboard/${ path }/records/${ card.projectId }/${ card.assignmentId }` ], { relativeTo: this.activatedRoute });\n }\n })\n );\n }\n\n this.store.dispatch(getRecordsByProjectId({ projectId: card.projectId, assignmentId: card.assignmentId }));\n }\n }\n\n mouseOver($event: MouseEvent): void {\n if (this.card.hasOwnProperty('settings') && this.card.settings !== null && this.card.settings.hasOwnProperty('cardSettings')) {\n $event.target['style'].backgroundColor = this.card.settings.cardSettings.cardButtonOnHoverBackgroundColor;\n $event.target['style'].color = this.card.settings.cardSettings.cardButtonOnHoverForegroundColor;\n }\n }\n\n mouseLeave($event: MouseEvent): void {\n if (this.card.hasOwnProperty('settings') && this.card.settings !== null && this.card.settings.hasOwnProperty('cardSettings')) {\n $event.target['style'].backgroundColor = this.cardBtnStyles['background-color'];\n $event.target['style'].color = this.cardBtnStyles['color'];\n }\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output, TemplateRef, ViewChild } from '@angular/core';\nimport { CardModel } from './card.model';\nimport { MatMenuTrigger } from '@angular/material/menu';\nimport { FormType } from '../../form/form.model';\n\n@Component({\n selector: 'mfn-card2',\n templateUrl: './card.component.html',\n styleUrls: [ './card.component.scss' ]\n})\nexport class MfnCardComponent implements OnInit {\n\n @Input() card: CardModel;\n @Input() buttonTemplate: TemplateRef;\n @Input() footerInfoLeft: TemplateRef;\n @Input() footerInfoRight: TemplateRef;\n\n @Output() cardSelected: EventEmitter> = new EventEmitter>();\n\n @ViewChild(MatMenuTrigger) trigger: MatMenuTrigger;\n\n url = '../edit';\n cardTitleLength = 55;\n formTypesEnum = FormType;\n cardBtnStyles = {};\n cardStyle = {};\n cardPrimaryColor = {};\n cardSecondaryColor = {};\n\n constructor(\n ) {\n }\n\n ngOnInit(): void {\n if (this.card.card.hasOwnProperty('settings') && this.card.card.settings && this.card.card.settings) {\n this.cardBtnStyles['background-color'] = this.card.card.settings.buttonBackgroundColor;\n /* eslint-disable-next-line */\n this.cardBtnStyles['color'] = this.card.card.settings.buttonForegroundColor;\n this.cardStyle['background-color'] = this.card.card.settings.backgroundColor;\n /* eslint-disable-next-line */\n this.cardPrimaryColor['color'] = this.card.card.settings.foregroundPrimaryColor;\n /* eslint-disable-next-line */\n this.cardSecondaryColor['color'] = this.card.card.settings.foregroundSecondaryColor;\n }\n }\n\n cardClick(card: CardModel): void {\n // if (this.card.card.type === 'assignment') {\n // this.store.dispatch(getAssignById({ id: card.original.id }));\n // const dialogRef = this.dialog.open(AssignFormsComponent, {\n // width: '980px',\n // minWidth: 980,\n // backdropClass: 'assign-form_backdrop',\n // data: {\n // mode: 'edit'\n // }\n // });\n // dialogRef.afterClosed().pipe(take(1)).subscribe(result => {\n // });\n // } else {\n // if (this.card.card.type === 'customerProject') {\n // this.router.navigate([ `dashboard/project/edit/${ this.card.original.projectId }/data/forms` ]);\n // } else {\n // this.router.navigate([ this.url, card.original.id ], { relativeTo: this.activatedRoute });\n // }\n // }\n }\n\n deleteCard(event, card: CardModel): void {\n // event.stopImmediatePropagation();\n // const cardName = this.card.card.type === 'assignment' ? card.original.formName : card.card.name;\n // this.confirmDialog.openConfirmDialog('Do you want to remove ' + cardName + '?').subscribe(result => {\n // if (result) {\n // this.deleteElement(card);\n // } else {\n // this.trigger.closeMenu();\n // }\n // });\n }\n\n deleteElement(card: CardModel): void {\n // this.store.dispatch(this.deleteActions[this.card.card.type]({ id: card.original.id }));\n }\n\n mouseOver($event: MouseEvent): void {\n if (this.card.card.hasOwnProperty('settings') && this.card.card.settings) {\n /* eslint-disable-next-line */\n $event.target['style'].backgroundColor = this.card.card.settings.buttonOnHoverBackgroundColor;\n /* eslint-disable-next-line */\n $event.target['style'].color = this.card.card.settings.buttonOnHoverForegroundColor;\n }\n }\n\n mouseLeave($event: MouseEvent): void {\n if (this.card.card.hasOwnProperty('settings') && this.card.card.settings) {\n /* eslint-disable-next-line */\n $event.target['style'].backgroundColor = this.cardBtnStyles['background-color'];\n /* eslint-disable-next-line */\n $event.target['style'].color = this.cardBtnStyles['color'];\n }\n\n }\n\n}\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'mfn-cards-list',\n templateUrl: './cards-list.component.html',\n styleUrls: [ './cards-list.component.scss' ]\n})\nexport class MfnCardsListComponent {\n\n @Input() cards: any[];\n @Input() cardsType = '';\n\n}\n","import { Component, Inject } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\n\n@Component({\n templateUrl: './confirmation-dialog.component.html',\n styleUrls: [ './confirmation-dialog.component.scss' ]\n})\nexport class ConfirmationDialogComponent {\n\n constructor(\n public dialogRef: MatDialogRef,\n @Inject(MAT_DIALOG_DATA) public data: any) {\n }\n\n onClose(result: boolean): void {\n this.dialogRef.close(result);\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatNativeDateModule } from '@angular/material/core';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatListModule } from '@angular/material/list';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatSortModule } from '@angular/material/sort';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { CdkTableModule } from '@angular/cdk/table';\nimport { MatPaginatorModule } from '@angular/material/paginator';\n\nconst materialModules = [\n MatButtonModule,\n MatDialogModule,\n MatIconModule,\n MatTooltipModule,\n MatCheckboxModule,\n MatInputModule,\n MatRadioModule,\n MatSelectModule,\n MatDatepickerModule,\n MatNativeDateModule,\n MatDividerModule,\n MatListModule,\n MatMenuModule,\n MatToolbarModule,\n MatCardModule,\n MatSnackBarModule,\n MatProgressBarModule,\n MatTabsModule,\n MatChipsModule,\n MatProgressSpinnerModule,\n MatExpansionModule,\n MatSortModule,\n MatTableModule,\n MatAutocompleteModule,\n CdkTableModule,\n MatPaginatorModule,\n];\n\n@NgModule({\n declarations: [],\n imports: [\n CommonModule,\n ...materialModules\n ],\n exports: [ ...materialModules ]\n})\nexport class MaterialModule {\n}\n","import {\n AfterViewInit, ChangeDetectorRef,\n Component, EventEmitter,\n Input,\n OnChanges,\n OnInit, Output,\n SimpleChanges, TemplateRef,\n ViewChild\n} from '@angular/core';\nimport { GridConfigViewModel } from './grid-config-view.model';\nimport { MatSort } from '@angular/material/sort';\nimport { MatPaginator } from '@angular/material/paginator';\nimport { MatTableDataSource } from '@angular/material/table';\nimport { expandCollapseDetails } from '../../animations';\n\n@Component({\n selector: 'mfn-grid-view',\n templateUrl: './mf-grid.component.html',\n styleUrls: [ './mf-grid.component.scss' ],\n animations: [ expandCollapseDetails ]\n})\nexport class MfnGridViewComponent implements OnInit, OnChanges, AfterViewInit {\n @Input() dataSource: any[] = [];\n @Input() detailsData: any[] = [];\n @Input() recordId;\n @Input() detailsDataTemplate: TemplateRef;\n @Input() config: GridConfigViewModel;\n @Input() shadowClasses = [ 'mat-elevation-z8' ];\n @Output() afterRowSelected: EventEmitter = new EventEmitter();\n\n @ViewChild(MatSort) sort: MatSort;\n @ViewChild(MatPaginator) paginator: MatPaginator;\n\n data: MatTableDataSource;\n displayedColumns: string[] = [];\n pagingOptions: number[] = [ 5, 10, 20, 50 ];\n selectedRecord;\n visibleColumns: string[] = [];\n\n constructor(\n private cd: ChangeDetectorRef\n ) {\n }\n\n\n ngOnInit(): void {\n this.visibleColumns = this.config.columns.filter(c => c.show).map(c => c.field);\n this.data = new MatTableDataSource(this.dataSource);\n this.data.sort = this.sort;\n this.data.paginator = this.paginator;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.dataSource && changes.dataSource.currentValue) {\n if (this.data && this.data.data) {\n this.data.data = changes.dataSource.currentValue;\n this.selectedRecord = null;\n this.data.sort = this.sort;\n }\n if (this.data && this.data.hasOwnProperty('paginator')) {\n this.data.paginator.firstPage();\n }\n }\n setTimeout(() => {\n if (this.config.paging.paging) {\n this.setPagingOptions();\n }\n\n this.setDisplayedColumns();\n });\n }\n\n ngAfterViewInit(): void {\n if (this.config.paging.paging) {\n this.data.paginator = this.paginator;\n this.data.paginator.firstPage();\n }\n }\n\n selectRow(element: any): void {\n if (!this.recordId) {\n return;\n }\n if (this.selectedRecord) {\n if (this.selectedRecord[this.recordId] === element[this.recordId]) {\n this.selectedRecord = null;\n this.afterRowSelected.emit(null);\n return;\n }\n }\n this.selectedRecord = element;\n this.afterRowSelected.emit(element);\n }\n\n private setPagingOptions(): void {\n this.pagingOptions = this.config.paging ? this.config.paging.pageSizeOptions.split(',').map(p => +p) : [ 5, 10, 20, 50 ];\n }\n\n private setDisplayedColumns(): void {\n this.displayedColumns = this.config.columns.filter(c => c.show).map(c => c.field);\n this.cd.detectChanges();\n }\n\n}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\n\nimport { Store } from '@ngrx/store';\nimport { Observable, Subscription } from 'rxjs';\nimport { MatDialogRef } from '@angular/material/dialog';\n\nimport { AppStateModel } from '../../store/app-state.model';\n\n@Component({\n templateUrl: './mfn-modal.component.html',\n styleUrls: [ './mfn-modal.component.scss' ]\n})\nexport class MfnModalComponent implements OnInit, OnDestroy {\n\n public data: Observable<{ title: string, description: string, toggle: boolean }>;\n public subscription: Subscription = new Subscription();\n\n constructor(\n public dialogRef: MatDialogRef,\n private store: Store\n ) {\n }\n\n ngOnInit(): void {\n this.data = this.store.select(state => state.form.modal);\n this.subscription.add(this.store.select(state => state.form.modal.toggle)\n .subscribe(toggle => {\n if (!toggle) {\n this.dialogRef.close();\n }\n }));\n }\n\n ngOnDestroy(): void {\n this.subscription.unsubscribe();\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { HttpClientModule } from '@angular/common/http';\nimport { NgPipesModule } from 'ngx-pipes';\n\n\nimport { UnderConstructionComponent } from './under-construction/under-construction.component';\nimport { StatusChipsComponent } from './status-chips/status-chips.component';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MfnModalComponent } from './mfn-modal/mfn-modal.component';\nimport { MfnCardComponent } from './card2/card.component';\nimport { MfnCardsListComponent } from './cards-list/cards-list.component';\nimport { ConfirmationDialogComponent } from './confirmation-dialog/confirmation-dialog.component';\n\nimport { MaterialModule } from './material/material.module';\nimport { MfnGridViewComponent } from './mf-grid/mf-grid.component';\nimport { MfmCardComponent } from './card/card.component';\n\nconst declarations = [\n UnderConstructionComponent,\n StatusChipsComponent,\n MfnModalComponent,\n MfmCardComponent,\n MfnCardComponent,\n MfnCardsListComponent,\n ConfirmationDialogComponent,\n UnderConstructionComponent,\n StatusChipsComponent,\n MfnGridViewComponent,\n ConfirmationDialogComponent,\n];\nconst imports = [\n ReactiveFormsModule,\n FormsModule,\n NgPipesModule,\n HttpClientModule,\n MaterialModule\n];\n\nconst forExports = [\n ...declarations,\n ...imports,\n];\n\n@NgModule({\n imports: [\n CommonModule,\n ...imports\n ],\n declarations,\n exports: forExports,\n entryComponents: [ ...declarations ]\n})\nexport class SharedModule {\n}\n","import {Component, Input} from '@angular/core';\nimport {StatusesModel} from './statuses.model';\n\n@Component({\n selector: 'mfn-status-chips',\n templateUrl: './status-chips.component.html',\n styleUrls: ['./status-chips.component.scss']\n})\nexport class StatusChipsComponent {\n\n @Input() statuses: StatusesModel = {};\n\n @Input() maxWidth = '180px';\n\n @Input() stacked = false;\n\n @Input() noStatusPlaceholder = 'No status';\n\n constructor() { }\n\n}\n","import { Component } from '@angular/core';\n\n@Component({\n templateUrl: './under-construction.component.html',\n styleUrls: [ './under-construction.component.scss' ]\n})\nexport class UnderConstructionComponent {\n\n}\n","import { createAction, props } from '@ngrx/store';\nimport { ProjectModel } from '../models/project.model';\n\nexport enum ActionTypes {\n GET_BY_ID = '[Project] Get Project By ID',\n SET_CURRENT = '[Project] Set Current Project'\n}\n\nexport const getProjectById = createAction(ActionTypes.GET_BY_ID, props<{ projectId: number }>());\nexport const setProject = createAction(ActionTypes.SET_CURRENT, props<{ project: ProjectModel }>());\n","import { createAction, props } from '@ngrx/store';\n\nexport enum ActionTypes {\n TOGGLE_SIDEBAR = 'TOGGLE_SIDEBAR',\n LOADING = 'LOADING',\n TOGGLE_HEADER = '[Ui] Toggle Header',\n TOGGLE_FOOTER = '[Ui] Toggle Footer',\n SET_REDIRECT_URL = 'SET_REDIRECT_URL',\n GLOBAL_LOADING = 'GLOBAL_LOADING',\n ERROR_POPUP = 'ERROR_POPUP',\n SET_MSG_POPUP = 'SET_MSG_POPUP'\n}\n\nexport const loading = createAction(ActionTypes.LOADING, props<{ loading: boolean }>());\nexport const globalLoading = createAction(ActionTypes.GLOBAL_LOADING, props<{ loading: boolean }>());\nexport const toggleSidebar = createAction(ActionTypes.TOGGLE_SIDEBAR, props<{ sidebar: string }>());\nexport const toggleHeader = createAction(ActionTypes.TOGGLE_HEADER, props<{ header: boolean }>());\nexport const toggleFooter = createAction(ActionTypes.TOGGLE_FOOTER, props<{ footer: boolean }>());\nexport const setRedirectUrl = createAction(ActionTypes.SET_REDIRECT_URL, props<{ url: string }>());\nexport const messagePopup = createAction(ActionTypes.SET_MSG_POPUP, props<{ message: string }>());\nexport const errorPopup = createAction(ActionTypes.ERROR_POPUP, props<{ error: string }>());\n\n","import { take } from 'rxjs/operators';\nimport { UiStateModel } from './models/ui-state.model';\nimport { appStateForm, FormStateModel } from '../form/store/form-state.model';\nimport { appStateUser, UserState } from '../user/store/user.state';\nimport { createFeatureSelector, createSelector, Store } from '@ngrx/store';\n\nimport { appStateRecord, RecordState } from '../record/store/record.state';\nimport { appStateOrganization, OrganizationState } from '../organization/store/organization.state';\nimport { projectState, ProjectStateModel } from './models/project.model';\nimport { appStateClient, ClientStateModel } from '../client/store/client-state.model';\n\n/**\n * AppStateModel\n */\nexport interface AppStateModel {\n ui: UiStateModel;\n form: FormStateModel;\n user: UserState;\n record: RecordState;\n organization: OrganizationState;\n project: ProjectStateModel;\n client: ClientStateModel;\n}\n\nexport const appState: AppStateModel = {\n ui: {\n loading: false,\n globalLoading: false,\n sidebar: 'open',\n header: true,\n footer: true,\n redirectUrl: '',\n error: '',\n message: ''\n },\n project: { ...projectState },\n ...appStateForm,\n ...appStateRecord,\n ...appStateUser,\n ...appStateOrganization,\n ...appStateClient\n};\n\n\nexport const getState = (store: Store): AppStateModel => {\n let _state: AppStateModel;\n store.select(state => state).pipe(take(1)).subscribe(o => _state = o);\n return _state;\n};\n\n\nexport const selectRecords = createFeatureSelector('record');\nexport const selectRecordsList = createSelector(selectRecords, (state: RecordState) => state.list);\n","import { Injectable } from '@angular/core';\nimport { ofType, Actions, createEffect } from '@ngrx/effects';\nimport { switchMap, catchError, mergeMap } from 'rxjs/operators';\nimport { ProjectService } from '../../project/project.service';\nimport * as projectActions from '../actions/project.actions';\nimport { globalLoading } from '../actions/ui.actions';\n\n@Injectable()\nexport class ProjectEffects {\n constructor(\n private actions: Actions,\n private project: ProjectService\n ) {\n }\n\n getRecordsByProjectId = createEffect(() => this.actions.pipe(\n ofType(projectActions.getProjectById),\n switchMap(({ projectId }) => this.project.getProjectById(projectId).pipe(\n mergeMap(res => [ (projectActions.setProject({ project: res })) ]),\n catchError(err => [ (globalLoading({ loading: false })) ])\n ))\n ));\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { ActionReducer, MetaReducer, StoreModule } from '@ngrx/store';\nimport { StoreDevtoolsModule } from '@ngrx/store-devtools';\nimport { localStorageSync } from 'ngrx-store-localstorage';\nimport { EffectsModule } from '@ngrx/effects';\n\nimport { environment } from '../../environments/environment';\nimport { AppStateModel } from './app-state.model';\nimport { reducers } from './reducers';\nimport { FormEffects } from '../form/store/form.effects';\nimport { UserEffects } from '../user/store/user.effects';\nimport { RecordEffects } from '../record/store/record.effect';\nimport { RecordService } from '../record/record.service';\nimport { OrganizationEffects } from '../organization/store/organization.effects';\nimport { FormService } from '../form/form.service';\nimport { ProjectEffects } from './effects/project.effect';\nimport { ClientEffects } from '../client/store/client.effects';\n\nexport function localStorageSyncReducer(reducer: ActionReducer): ActionReducer {\n return localStorageSync({ keys: [ 'ui', 'user', 'organization' ], rehydrate: true })(reducer);\n}\n\nconst metaReducers: MetaReducer[] = [ localStorageSyncReducer ];\n\n@NgModule({\n imports: [\n CommonModule,\n StoreModule.forRoot(reducers, {\n metaReducers, runtimeChecks: {\n strictStateImmutability: false,\n strictActionImmutability: false,\n }\n }),\n !environment.production ? StoreDevtoolsModule.instrument() : [],\n EffectsModule.forRoot([\n FormEffects,\n UserEffects,\n RecordEffects,\n OrganizationEffects,\n ProjectEffects,\n ClientEffects\n ])\n ],\n declarations: [],\n exports: [\n StoreModule\n ],\n providers: [ RecordService, FormService ]\n})\nexport class MfStoreModule {\n}\n","export interface ProjectModel {\n name: string;\n id: number;\n datasetId: number;\n description: string;\n displayName?: string;\n forms: number[];\n formCount: number;\n recordTitleField: string;\n createdAt: Date;\n updatedAt: Date;\n userIdCreated: number;\n userIdUpdated: number;\n}\n\nexport interface ProjectStateModel {\n current: ProjectModel;\n}\n\nexport const projectState: ProjectStateModel = {\n current: {\n id: null,\n name: '',\n datasetId: null,\n description: '',\n displayName: '',\n forms: [],\n formCount: null,\n recordTitleField: '',\n createdAt: null,\n updatedAt: null,\n userIdCreated: null,\n userIdUpdated: null\n }\n};\n","import { uiReducer } from './ui.reducer';\nimport { ActionReducerMap } from '@ngrx/store';\nimport { AppStateModel } from '../app-state.model';\nimport { formReducer } from '../../form/store/form.reducer';\nimport { userReducer } from '../../user/store/user.reducer';\nimport { recordReducer } from '../../record/store/record.reducers';\nimport { organizationReducer } from '../../organization/store/organization.reducer';\nimport { projectReducer } from './project.reducer';\nimport { clientReducer } from '../../client/store/client.reducer';\n\nexport const reducers: ActionReducerMap = {\n ui: uiReducer,\n form: formReducer,\n user: userReducer,\n record: recordReducer,\n organization: organizationReducer,\n project: projectReducer,\n client: clientReducer\n};\n","import { ProjectStateModel } from '../models/project.model';\nimport { appState } from '../app-state.model';\nimport { Action, createReducer, on } from '@ngrx/store';\nimport * as projectActions from '../actions/project.actions';\n\nconst reducer = createReducer(appState.project,\n on(projectActions.setProject, (state, { project }) => ({ ...state, current: project })),\n);\n\nexport function projectReducer(state: ProjectStateModel, action: Action): ProjectStateModel {\n return reducer(state, action);\n}\n","import { UiStateModel } from '../models/ui-state.model';\nimport { appState } from '../app-state.model';\nimport { Action, createReducer, on } from '@ngrx/store';\nimport * as uiActions from '../actions/ui.actions';\n\nconst reducer = createReducer(appState.ui,\n on(uiActions.loading, (state, { loading }) => ({ ...state, loading })),\n on(uiActions.globalLoading, (state, { loading }) => ({ ...state, globalLoading: loading })),\n on(uiActions.toggleSidebar, (state, { sidebar }) => ({ ...state, sidebar })),\n on(uiActions.toggleFooter, (state, { footer }) => ({ ...state, footer })),\n on(uiActions.toggleHeader, (state, { header }) => ({ ...state, header })),\n on(uiActions.setRedirectUrl, (state, { url }) => ({ ...state, redirectUrl: url })),\n on(uiActions.messagePopup, (state, { message }) => ({ ...state, message })),\n on(uiActions.errorPopup, (state, { error }) => ({ ...state, error })),\n);\n\nexport function uiReducer(state: UiStateModel, action: Action): UiStateModel {\n return reducer(state, action);\n}\n","import { take, skip } from 'rxjs/operators';\nimport { Injectable } from '@angular/core';\nimport { UserManager, User, UserManagerSettings } from 'oidc-client';\nimport { Store } from '@ngrx/store';\nimport { AppStateModel, getState } from '../store/app-state.model';\nimport { getUserBySub } from './store/user.actions';\nimport { setRedirectUrl } from '../store/actions/ui.actions';\nimport { Router } from '@angular/router';\nimport { Subscription } from 'rxjs';\n\nimport { getUserOrganization, resetCurrentOrganization } from '../organization/store/organization.actions';\nimport { EnvService } from '../environment-integration/env.service';\n\n\nexport { User };\n\n\n@Injectable()\nexport class AppAuthNService {\n\n userManager: UserManager;\n subscription: Subscription = new Subscription();\n\n private user: User = null;\n\n constructor(\n private store: Store,\n private router: Router,\n private env: EnvService\n ) {\n const settings: UserManagerSettings = {\n // authority: 'https://localhost:44361/', //for localtest\n authority: 'https://login.' + env.mainDomain + '/',\n client_id: 'MetaFormClient',\n // client_secret: environment.clientSecret,\n redirect_uri: window.location.origin + '/auth-callback',\n post_logout_redirect_uri: window.location.origin + '/',\n // these two will be done dynamically from the buttons clicked, but are\n // needed if you want to use the silent_renew\n response_type: 'code',\n scope: 'openid profile address metaformsnavigatorapi metaformsbrowserapi',\n // this will toggle if profile endpoint is used\n loadUserInfo: true,\n // silent renew will get a new access_token via an iframe\n // just prior to the old access_token expiring (60 seconds prior)\n silent_redirect_uri: window.location.origin + '/assets/silent.html',\n automaticSilentRenew: true,\n // will revoke (reference) access tokens at logout time\n revokeAccessTokenOnSignout: true,\n // this will allow all the OIDC protocol claims to be visible in the window. normally a client app\n // wouldn't care about them or want them taking up space\n filterProtocolClaims: false\n };\n this.userManager = new UserManager(settings);\n this.userManager.getUser().then(user => {\n this.user = user;\n });\n this.userManager.events.addSilentRenewError(() => {\n this.login();\n });\n\n this.userManager.events.addUserLoaded(user => {\n this.user = user;\n sessionStorage.setItem('mfbToken', `${ this.user.token_type } ${ this.user.access_token }`);\n });\n\n }\n\n public getUser(): Promise {\n return this.userManager.getUser().then(user => user);\n }\n\n public login(): Promise {\n const href = window.location.href;\n const host = window.location.host;\n const hostLength = host.length;\n const startIndex = href.indexOf(host) + hostLength;\n const url = href.substr(startIndex);\n this.store.dispatch(setRedirectUrl({ url: url }));\n\n return this.userManager.signinRedirect();\n }\n\n completeAuthentication(): Promise {\n return this.userManager.signinRedirectCallback().then(user => {\n this.user = user;\n\n const profile = this.store.select(s => s.user.profile);\n profile.pipe(skip(1), take(1),).subscribe(p => {\n if (p.organizationId) {\n this.store.dispatch(getUserOrganization());\n }\n });\n\n sessionStorage.setItem('mfbToken', `${ this.user.token_type } ${ this.user.access_token }`);\n this.store.dispatch(getUserBySub({ profile: user.profile }));\n const redirectUrl = getState(this.store).ui.redirectUrl;\n this.store.dispatch(setRedirectUrl({ url: '' }));\n this.router.navigate([ redirectUrl ]);\n });\n }\n\n public renewToken(): Promise {\n return this.userManager.signinSilent();\n }\n\n public logout(): Promise {\n this.store.dispatch(resetCurrentOrganization());\n sessionStorage.removeItem('mfbToken');\n return this.userManager.signoutRedirect();\n }\n\n isLoggedIn(): boolean {\n return this.user != null && !this.user.expired;\n }\n\n getAuthorizationHeaderValue(): string {\n this.userManager.getUser().then(user => {\n this.user = user;\n });\n return `${ this.user.token_type } ${ this.user.access_token }`;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CanActivate} from '@angular/router';\nimport {Store} from '@ngrx/store';\nimport {AppStateModel} from '../store/app-state.model';\n\nimport {AppAuthNService} from './app-auth-n.service';\n\n@Injectable()\nexport class IsLoggedGuard implements CanActivate {\n\n constructor(\n private store: Store,\n private appAuth: AppAuthNService\n ) { }\n\n canActivate(): boolean {\n if (this.appAuth.isLoggedIn()) {\n return true;\n }\n this.appAuth.login();\n return false;\n }\n}\n","import { createAction, props } from '@ngrx/store';\nimport { UserModel } from '../user.model';\nimport { Profile } from 'oidc-client';\n\nexport enum ActionTypes {\n UPDATE_USER = '[User] Update user',\n UPDATE_USER_PROFILE = '[User] Update user profile',\n UPDATE_USER_FIELD = '[User] Update user field',\n UPLOAD_USER_AVATAR = '[User] Upload user avatar',\n RESET_USER = '[User] Reset user',\n GET_USER_BY_SUB = '[User] Get user by field',\n UPDATE_CURRENT_USER_CUSTOM_FIELD = '[User] Update user additional field'\n}\n\nexport const getUserBySub = createAction(ActionTypes.GET_USER_BY_SUB, props<{ profile: Profile | UserModel }>());\nexport const resetUser = createAction(ActionTypes.RESET_USER);\nexport const updateUser = createAction(ActionTypes.UPDATE_USER, props<{ user: UserModel }>());\nexport const updateUserProfile = createAction(ActionTypes.UPDATE_USER_PROFILE, props<{ user: UserModel }>());\nexport const updateUserField = createAction(ActionTypes.UPDATE_USER_FIELD, props<{ field: string, value: string | number | any }>());\nexport const uploadUserAvatar = createAction(ActionTypes.UPLOAD_USER_AVATAR, props<{ formData: FormData }>());\nexport const updateCurrentUserCustomFields = createAction(ActionTypes.UPDATE_CURRENT_USER_CUSTOM_FIELD, props<{ field: string, value: string | number | any }>());\n","import { Injectable } from '@angular/core';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport * as userActions from './user.actions';\nimport { UserService } from '../user.service';\nimport { switchMap, mergeMap, catchError } from 'rxjs/operators';\nimport { errorPopup, loading, messagePopup } from '../../store/actions/ui.actions';\n\n@Injectable()\nexport class UserEffects {\n\n constructor(\n private actions: Actions,\n private userService: UserService\n ) {\n }\n\n getUserBySub = createEffect(() => {\n return this.actions.pipe(\n ofType(userActions.getUserBySub),\n switchMap(({ profile }) => this.userService.getUserBySub(profile.sub).pipe(\n mergeMap((res) => {\n const user = { ...profile, ...res };\n return [\n (userActions.updateUserProfile({ user }))\n ];\n }),\n catchError(err => {\n return [];\n })\n ))\n );\n });\n\n updateUser = createEffect(() => this.actions.pipe(\n ofType(userActions.updateUser),\n switchMap(({ user }) => {\n return this.userService.updateUser(user).pipe(\n mergeMap((res) => {\n const profile = { ...user, ...res };\n return [\n (messagePopup({ message: 'User Updated.' })),\n (userActions.updateUserProfile({ user: profile })),\n (loading({ loading: false })),\n ];\n }),\n catchError(err => {\n return [\n (errorPopup({ error: 'There is a problem with updating user details' })),\n (loading({ loading: false })),\n ];\n })\n );\n })\n ));\n uploadUserAvatar = createEffect(() => this.actions.pipe(\n ofType(userActions.uploadUserAvatar),\n switchMap(({ formData }) => {\n return this.userService.uploadUserAvatar(formData).pipe(\n mergeMap((res: string) => {\n return [\n (loading({ loading: false })),\n (messagePopup({ message: 'Image uploaded.' })),\n (userActions.updateUserField({ field: 'avatarURL', value: res }))\n ];\n }),\n catchError(err => {\n return [\n (errorPopup({ error: 'There is a problem with Image uploading' })),\n (loading({ loading: false }))\n ];\n }));\n })\n ));\n}\n","import { appStateUser, UserState } from './user.state';\nimport * as userActions from './user.actions';\nimport { Action, createReducer, on } from '@ngrx/store';\n\nconst reducer = createReducer(appStateUser.user,\n on(userActions.resetUser, (state, {}) => {\n return {\n profile: {\n userId: null,\n organizationId: null,\n sub: '',\n email: '',\n family_name: '',\n given_name: '',\n userName: '',\n firstName: '',\n lastName: '',\n position: '',\n isUserActive: false,\n avatarURL: '',\n securityGroup: [],\n subscriptionlevel: '',\n createdAt: '',\n updatedAt: '',\n userIdCreated: null,\n userIdUpdated: null,\n country: '',\n address: '',\n statusId: null,\n amr: [],\n isPending: false,\n pinCode: null,\n phoneNumber: null,\n customerIdentifier: '',\n customFields: []\n },\n errors: []\n };\n }),\n on(userActions.updateUserProfile, (state, { user }) => ({ ...state, profile: user })),\n on(userActions.updateUserField, (state, { value, field }) => ({ ...state, profile: { ...state.profile, [field]: value } })),\n on(userActions.updateCurrentUserCustomFields, (state, { value, field }) => {\n const currentCustomFields = [ ...state.profile.customFields ];\n const customField = currentCustomFields.find(el => el.keyId === field);\n if (customField) {\n customField.value = value;\n }\n return {\n ...state, profile: { ...state.profile, customFields: [ ...currentCustomFields ] }\n };\n }),\n);\n\nexport function userReducer(state: UserState, action: Action): UserState {\n return reducer(state, action);\n}\n","import { UserModel } from '../user.model';\n\nexport interface UserState {\n profile: UserModel;\n errors: string[];\n}\n\nexport interface AppStateUser {\n user: UserState;\n}\n\nexport const appStateUser: AppStateUser = {\n user: {\n profile: {\n userId: null,\n organizationId: null,\n sub: '',\n email: '',\n family_name: '',\n given_name: '',\n userName: '',\n firstName: '',\n lastName: '',\n position: '',\n isUserActive: false,\n avatarURL: '',\n securityGroup: [],\n subscriptionlevel: '',\n createdAt: '',\n updatedAt: '',\n userIdCreated: null,\n userIdUpdated: null,\n country: '',\n address: '',\n statusId: null,\n amr: [],\n isPending: false,\n pinCode: null,\n phoneNumber: null,\n customerIdentifier: '',\n customFields: []\n\n },\n errors: []\n }\n};\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\n\nimport { Store } from '@ngrx/store';\nimport { Subscription, Observable } from 'rxjs';\nimport { DomSanitizer, SafeStyle } from '@angular/platform-browser';\nimport { debounceTime, take } from 'rxjs/operators';\n\nimport { ICustomFields, UserModel } from '../user.model';\nimport { AppStateModel, getState } from '../../store/app-state.model';\nimport { updateCurrentUserCustomFields, updateUser, updateUserField, uploadUserAvatar } from '../store/user.actions';\nimport { SecurityGroupType } from '../../organization/organization.model';\nimport { loading } from '../../store/actions/ui.actions';\n\n\n@Component({\n templateUrl: './user-details.component.html',\n styleUrls: [ './user-details.component.scss' ]\n})\nexport class UserDetailsComponent implements OnInit, OnDestroy {\n user: Observable;\n form: FormGroup;\n customerGroupName: string;\n loading$: Observable;\n\n get customFields(): FormGroup {\n return this.form.get('customFields') as FormGroup;\n }\n\n private subscription: Subscription = new Subscription();\n\n constructor(private store: Store,\n private fb: FormBuilder,\n private sanitizer: DomSanitizer\n ) {\n }\n\n ngOnInit(): void {\n this.user = this.store.select(state => state.user.profile);\n this.loading$ = this.store.select(state => state.ui.loading);\n this.form = this.fb.group({\n firstName: [ '', Validators.required ],\n lastName: [ '', Validators.required ],\n department: [ '' ],\n position: [ '' ],\n customerIdentifier: [ '' ],\n pinCode: [ '', Validators.maxLength(16) ],\n phoneNumber: [ '' ],\n customFields: this.fb.group({})\n });\n\n this.synchronizeWithStore();\n }\n\n ngOnDestroy(): void {\n this.subscription.unsubscribe();\n }\n\n updateUser(): void {\n if (this.form.invalid) {\n return;\n }\n this.store.dispatch(loading({ loading: true }));\n const user = getState(this.store).user.profile;\n this.store.dispatch(updateUser({ user }));\n }\n\n private synchronizeWithStore(): void {\n this.subscription.add(this.user.subscribe(user => {\n this.form.patchValue(user, { emitEvent: false });\n if (user.customFields.length) {\n user.customFields.forEach((field: ICustomFields) => {\n this.customFields.addControl(field.keyId, new FormControl(field.value), { emitEvent: false });\n if (field.isReadonly) {\n this.customFields.get(field.keyId).disable({ emitEvent: false });\n } else {\n this.subscription.add(\n this.customFields.get(field.keyId).valueChanges.subscribe((value) => {\n this.store.dispatch(updateCurrentUserCustomFields({ field: field.keyId, value }));\n })\n );\n }\n });\n }\n }));\n this.subscription.add(this.form.get('firstName').valueChanges.pipe(debounceTime(500)).subscribe(value => {\n this.store.dispatch(updateUserField({ field: 'firstName', value }));\n }));\n\n this.subscription.add(this.form.get('lastName').valueChanges.pipe(debounceTime(500)).subscribe(value => {\n this.store.dispatch(updateUserField({ field: 'lastName', value }));\n }));\n\n this.subscription.add(this.form.get('department').valueChanges.pipe(debounceTime(500)).subscribe(value => {\n this.store.dispatch(updateUserField({ field: 'department', value }));\n }));\n this.subscription.add(this.form.get('position').valueChanges.pipe(debounceTime(500)).subscribe(value => {\n this.store.dispatch(updateUserField({ field: 'position', value }));\n }));\n this.subscription.add(this.form.get('customerIdentifier').valueChanges.pipe(debounceTime(500)).subscribe(value => {\n this.store.dispatch(updateUserField({ field: 'customerIdentifier', value }));\n }));\n\n this.subscription.add(this.form.get('pinCode').valueChanges.pipe(debounceTime(500)).subscribe(value => {\n this.store.dispatch(updateUserField({ field: 'pinCode', value }));\n }));\n\n this.subscription.add(this.form.get('phoneNumber').valueChanges.pipe(debounceTime(500)).subscribe(value => {\n this.store.dispatch(updateUserField({ field: 'phoneNumber', value }));\n }));\n\n this.subscription.add(\n this.store.select(state => state.organization.current.securityGroupDetails).pipe(\n take(2)\n ).subscribe(securityGroupDetails => {\n const customerGroup = securityGroupDetails.find(group => group.groupType === SecurityGroupType.Customer); // Customer\n this.customerGroupName = customerGroup.value || '';\n })\n );\n }\n\n fileChange(event): void {\n const fileList: FileList = event.target.files;\n if (fileList.length > 0) {\n const file: File = fileList[0];\n const formData: FormData = new FormData();\n formData.append('userId', getState(this.store).user.profile.userId + '');\n formData.append('file', file);\n this.store.dispatch(loading({ loading: true }));\n this.store.dispatch(uploadUserAvatar({ formData }));\n }\n }\n\n getImageUrl(imageUrl: string): SafeStyle {\n return this.sanitizer.bypassSecurityTrustStyle(`url(${ imageUrl })`);\n }\n\n}\n","import {NgModule} from '@angular/core';\nimport {RouterModule} from '@angular/router';\nimport {UserDetailsComponent} from './user-details/user-details.component';\nconst routes = [\n {\n path: '', children: [\n { path: '', redirectTo: 'details', pathMatch: 'prefix'},\n { path: 'details', component: UserDetailsComponent},\n ]\n }\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule]\n})\n\nexport class UserRoutingModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport {UserService} from './user.service';\nimport { IsLoggedGuard } from './is-logged.guard';\nimport {AppAuthNService} from './app-auth-n.service';\nimport {UserRoutingModule} from './user-routing.module';\nimport { UserDetailsComponent } from './user-details/user-details.component';\nimport {SharedModule} from '../shared/shared.module';\n\n@NgModule({\n imports: [\n CommonModule,\n SharedModule,\n UserRoutingModule\n ],\n declarations: [UserDetailsComponent, UserDetailsComponent],\n providers: [\n UserService,\n IsLoggedGuard,\n AppAuthNService\n ]\n})\nexport class UserModule { }\n","import { Injectable } from '@angular/core';\nimport { HttpHeaders } from '@angular/common/http';\n\nimport { Observable } from 'rxjs';\n\nimport { AppConfig } from '../core/config/app.config';\nimport { UserModel } from './user.model';\nimport { MfnHttp } from '../core/http/http-client.service';\n\n@Injectable()\nexport class UserService {\n\n constructor(\n private config: AppConfig,\n private http: MfnHttp\n ) {\n }\n\n getUserBySub(sub: string): Observable {\n return this.http.get(this.config.buildUri('user') + '/UserBySub/?sub=' + sub);\n }\n\n updateUser(user: UserModel): Observable {\n return this.http.put(this.config.buildUri('user') + '/User', user);\n }\n\n uploadUserAvatar(formData: FormData): Observable {\n const headers = new HttpHeaders();\n headers.append('Content-Type', 'multipart/form-data');\n headers.append('Accept', 'application/json');\n const options = {\n headers,\n reportProgress: true\n };\n return this.http.post(this.config.buildUri('user') + '/UserFileUpload', formData, options);\n }\n\n}\n\n","// The file contents for the current environment will overwrite these during build.\n// The build system defaults to the dev environment which uses `environment.ts`, but if you do\n// `ng build --env=prod` then `environment.prod.ts` will be used instead.\n// The list of which env maps to which file can be found in `.angular-cli.json`.\n\nexport const environment = {\n production: false,\n mainDomain: 'metaforms.app',\n domain: 'navigator.metaforms.app',\n protocol: 'https',\n clientId: 'JSDevClient',\n clientSecret: 'jsdevclient;dorgfgitvzmoygksqjpm,',\n version: '1.0.21',\n environment: 'Development',\n};\n","import { enableProdMode } from '@angular/core';\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n\nimport { AppModule } from './app/app.module';\nimport { environment } from './environments/environment';\n\nif (environment.production) {\n enableProdMode();\n}\n\nplatformBrowserDynamic().bootstrapModule(AppModule)\n .catch(err => console.log(err));\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJhcHAuY29tcG9uZW50LnNjc3MifQ== */\";","export default \":host {\\n width: 100vw;\\n height: 100vh;\\n}\\n:host div {\\n width: 100vw;\\n height: 100vh;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImF1dGgtY2FsbGJhY2suY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDRSxZQUFBO0VBQ0EsYUFBQTtBQUNGO0FBQ0U7RUFDRSxZQUFBO0VBQ0EsYUFBQTtBQUNKIiwiZmlsZSI6ImF1dGgtY2FsbGJhY2suY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyI6aG9zdCB7XG4gIHdpZHRoOiAxMDB2dztcbiAgaGVpZ2h0OiAxMDB2aDtcblxuICBkaXYge1xuICAgIHdpZHRoOiAxMDB2dztcbiAgICBoZWlnaHQ6IDEwMHZoO1xuICB9XG59XG4iXX0= */\";","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJjb29raWUtcG9saWN5LmNvbXBvbmVudC5zY3NzIn0= */\";","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJwcml2YWN5LXBvbGljeS5jb21wb25lbnQuc2NzcyJ9 */\";","export default \"ul {\\n list-style-type: none;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlcm1zLW9mLXVzZS5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLHFCQUFBO0FBQ0YiLCJmaWxlIjoidGVybXMtb2YtdXNlLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsidWwge1xuICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG59XG4iXX0= */\";","export default \"/* Breakpoints for Media Queries */\\n/* Colors */\\n/* Sprites */\\n.sprite-icons {\\n display: inline-block;\\n background-image: url('sprite-icons.png');\\n background-repeat: no-repeat;\\n}\\n.sprite-icons.success {\\n width: 58px;\\n height: 58px;\\n background-position: 0 0;\\n}\\n.sprite-icons.error {\\n width: 46px;\\n height: 53px;\\n background-position: -60px 0;\\n}\\n.sprite-icons.warning {\\n width: 50px;\\n height: 44px;\\n background-position: -130px 0;\\n}\\n.sprite-icons.resend-mail {\\n width: 21px;\\n height: 11px;\\n background-position: 0 -60px;\\n}\\n/* End sprites */\\n.main-content {\\n box-shadow: 3px 3px 15px 0 rgba(187, 189, 189, 0.45), -3px -3px 15px 0 rgba(187, 189, 189, 0.45);\\n}\\n@media only screen and (max-width: 576px) {\\n .main-content {\\n box-shadow: none;\\n }\\n}\\n.row-eq-height {\\n display: flex;\\n height: 100vh;\\n}\\n/* Button styles */\\n.btn-styles {\\n display: inline-block;\\n padding: 0 10px;\\n min-width: 172px;\\n height: 62px;\\n line-height: 62px;\\n color: #fff;\\n font-size: 12px;\\n font-weight: bold;\\n text-transform: uppercase;\\n text-align: center;\\n text-decoration: none;\\n letter-spacing: 0.06px;\\n border-radius: 10px;\\n}\\n.btn-styles:active, .btn-styles:focus {\\n outline: 0 !important;\\n}\\n.btn-styles:hover {\\n text-decoration: none;\\n}\\n.btn-styles.btn-blue {\\n background-color: #2970ff;\\n border: none;\\n}\\n.btn-styles.btn-blue:hover {\\n background-color: #3679ff;\\n box-shadow: 0 12px 24px 0 rgba(0, 0, 0, 0.06);\\n}\\n.btn-styles.btn-bordered {\\n color: #2970ff;\\n background-color: transparent;\\n border: 2px solid rgba(41, 112, 255, 0.8);\\n}\\n.btn-styles.btn-bordered:hover {\\n color: #3679ff;\\n background-color: #fff;\\n border-color: rgba(41, 112, 255, 0.7);\\n box-shadow: 0 12px 24px 0 rgba(0, 0, 0, 0.06);\\n}\\n/* End button styles */\\n#registration-form .setting {\\n font-size: 16px;\\n}\\n@media only screen and (max-width: 576px) {\\n #registration-form .setting {\\n padding-top: 0;\\n }\\n}\\n@media only screen and (max-width: 576px) {\\n #registration-form .setting p.text-lighter {\\n display: inline-block;\\n margin-top: 15px;\\n }\\n}\\n#registration-form .setting .text-lighter {\\n color: #868c97;\\n}\\n#registration-form .setting .success {\\n margin: 45px 0;\\n}\\n#registration-form .setting .warning {\\n margin-top: 45px;\\n}\\n#registration-form .setting .link-item {\\n color: #2970ff;\\n}\\n#registration-form .setting .mobile-icon {\\n margin: 0;\\n}\\n#registration-area,\\n#warning-area,\\n#confirm-area {\\n padding: 100px 0;\\n color: #fff;\\n background-size: contain;\\n background-position: right top;\\n background-repeat: no-repeat;\\n background-image: url('bkg-shadow-logo-yellow.png');\\n background-color: #efc86b;\\n}\\n#registration-area {\\n background-color: #2471ff;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndyb25nLW9yZ2FuaXphdGlvbi1kb21haW4uY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsa0NBQUE7QUFjQSxXQUFBO0FBcUJBLFlBQUE7QUFDQTtFQUNFLHFCQUFBO0VBQ0EseUNBQUE7RUFDQSw0QkFBQTtBQWhDRjtBQWtDRTtFQUNFLFdBQUE7RUFDQSxZQUFBO0VBQ0Esd0JBQUE7QUFoQ0o7QUFtQ0U7RUFDRSxXQUFBO0VBQ0EsWUFBQTtFQUNBLDRCQUFBO0FBakNKO0FBb0NFO0VBQ0UsV0FBQTtFQUNBLFlBQUE7RUFDQSw2QkFBQTtBQWxDSjtBQXFDRTtFQUNFLFdBQUE7RUFDQSxZQUFBO0VBQ0EsNEJBQUE7QUFuQ0o7QUF1Q0EsZ0JBQUE7QUFFQTtFQUNFLGdHQUFBO0FBckNGO0FBN0JFO0VBaUVGO0lBSUksZ0JBQUE7RUFwQ0Y7QUFDRjtBQXVDQTtFQUlFLGFBQUE7RUFDQSxhQUFBO0FBcENGO0FBdUNBLGtCQUFBO0FBQ0E7RUFDRSxxQkFBQTtFQUNBLGVBQUE7RUFDQSxnQkFBQTtFQUNBLFlBQUE7RUFDQSxpQkFBQTtFQUNBLFdBakVvQjtFQWtFcEIsZUFBQTtFQUNBLGlCQUFBO0VBQ0EseUJBQUE7RUFDQSxrQkFBQTtFQUNBLHFCQUFBO0VBQ0Esc0JBQUE7RUFDQSxtQkFBQTtBQXBDRjtBQXNDRTtFQUVFLHFCQUFBO0FBckNKO0FBd0NFO0VBQ0UscUJBQUE7QUF0Q0o7QUF5Q0U7RUFDRSx5QkF0RmdCO0VBdUZoQixZQUFBO0FBdkNKO0FBeUNJO0VBQ0UseUJBekZvQjtFQTBGcEIsNkNBQUE7QUF2Q047QUEyQ0U7RUFDRSxjQTFGc0I7RUEyRnRCLDZCQTdGb0I7RUE4RnBCLHlDQUFBO0FBekNKO0FBMkNJO0VBQ0UsY0E5RjBCO0VBK0YxQixzQkFqR3dCO0VBa0d4QixxQ0E5RjRCO0VBK0Y1Qiw2Q0FBQTtBQXpDTjtBQThDQSxzQkFBQTtBQUdFO0VBQ0UsZUFBQTtBQTdDSjtBQXpGRTtFQXFJQTtJQUlJLGNBQUE7RUE1Q0o7QUFDRjtBQTlGRTtFQThJTTtJQUNFLHFCQUFBO0lBQ0EsZ0JBQUE7RUE3Q1I7QUFDRjtBQWlESTtFQUNFLGNBQUE7QUEvQ047QUFrREk7RUFDRSxjQUFBO0FBaEROO0FBbURJO0VBQ0UsZ0JBQUE7QUFqRE47QUFvREk7RUFDRSxjQS9JWTtBQTZGbEI7QUFxREk7RUFDRSxTQUFBO0FBbkROO0FBd0RBOzs7RUFHRSxnQkFBQTtFQUNBLFdBQUE7RUFDQSx3QkFBQTtFQUNBLDhCQUFBO0VBQ0EsNEJBQUE7RUFDQSxtREFBQTtFQUNBLHlCQXBLaUI7QUErR25CO0FBd0RBO0VBRUUseUJBNUtrQjtBQXNIcEIiLCJmaWxlIjoid3Jvbmctb3JnYW5pemF0aW9uLWRvbWFpbi5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi8qIEJyZWFrcG9pbnRzIGZvciBNZWRpYSBRdWVyaWVzICovXG5cbkBtaXhpbiBmb3ItcGhvbmUtb25seSB7XG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogNTc2cHgpIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG5AbWl4aW4gZm9yLXRhYmxldCB7XG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogNzY4cHgpIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vKiBDb2xvcnMgKi9cbiRsb2dpbi1iZy1jb2xvcjogI2Y4ZjhmODtcbiRyZWdpc3Rlci1iZy1jb2xvcjogIzI0NzFmZjtcbiRzdWNjZXNzLWJnLWNvbG9yOiAjMDdjYTk1O1xuJGVycm9yLWJnLWNvbG9yOiAjZjM4MDZkO1xuJHdhcm5pbmctYmctY29sb3I6ICNlZmM4NmI7XG5cbiRtYWluLXRleHQtY29sb3I6ICMzNTNmNTI7XG4kYmx1ZS10ZXh0LWNvbG9yOiAjMjk3MGZmO1xuXG4kYnRuLWJsdWUtYmctY29sb3I6ICMyOTcwZmY7XG4kYnRuLWJsdWUtYmctY29sb3ItaG92ZXI6ICMzNjc5ZmY7XG4kYnRuLWJsdWUtdGV4dC1jb2xvcjogI2ZmZjtcblxuJGJ0bi1ib3JkZXJlZC1iZy1jb2xvcjogdHJhbnNwYXJlbnQ7XG4kYnRuLWJvcmRlcmVkLWJnLWNvbG9yLWhvdmVyOiAjZmZmO1xuJGJ0bi1ib3JkZXJlZC10ZXh0LWNvbG9yOiAjMjk3MGZmO1xuJGJ0bi1ib3JkZXJlZC10ZXh0LWNvbG9yLWhvdmVyOiAjMzY3OWZmO1xuJGJ0bi1ib3JkZXJlZC1ib3JkZXItY29sb3I6IHJnYmEoNDEsIDExMiwgMjU1LCAwLjgpO1xuJGJ0bi1ib3JkZXJlZC1ib3JkZXItY29sb3ItaG92ZXI6IHJnYmEoNDEsIDExMiwgMjU1LCAwLjcpO1xuXG4vKiBTcHJpdGVzICovXG4uc3ByaXRlLWljb25zIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCIuLi8uLi8uLi9hc3NldHMvaW1hZ2VzL3Nwcml0ZS1pY29ucy5wbmdcIik7XG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG5cbiAgJi5zdWNjZXNzIHtcbiAgICB3aWR0aDogNThweDtcbiAgICBoZWlnaHQ6IDU4cHg7XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAwO1xuICB9XG5cbiAgJi5lcnJvciB7XG4gICAgd2lkdGg6IDQ2cHg7XG4gICAgaGVpZ2h0OiA1M3B4O1xuICAgIGJhY2tncm91bmQtcG9zaXRpb246IC02MHB4IDA7XG4gIH1cblxuICAmLndhcm5pbmcge1xuICAgIHdpZHRoOiA1MHB4O1xuICAgIGhlaWdodDogNDRweDtcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTMwcHggMDtcbiAgfVxuXG4gICYucmVzZW5kLW1haWwge1xuICAgIHdpZHRoOiAyMXB4O1xuICAgIGhlaWdodDogMTFweDtcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIC02MHB4O1xuICB9XG59XG5cbi8qIEVuZCBzcHJpdGVzICovXG5cbi5tYWluLWNvbnRlbnQge1xuICBib3gtc2hhZG93OiAzcHggM3B4IDE1cHggMCByZ2JhKDE4NywgMTg5LCAxODksIDAuNDUpLCAtM3B4IC0zcHggMTVweCAwIHJnYmEoMTg3LCAxODksIDE4OSwgMC40NSk7XG5cbiAgQGluY2x1ZGUgZm9yLXBob25lLW9ubHkge1xuICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gIH1cbn1cblxuLnJvdy1lcS1oZWlnaHQge1xuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgZGlzcGxheTogLXdlYmtpdC1mbGV4O1xuICBkaXNwbGF5OiAtbXMtZmxleGJveDtcbiAgZGlzcGxheTogZmxleDtcbiAgaGVpZ2h0OiAxMDB2aDtcbn1cblxuLyogQnV0dG9uIHN0eWxlcyAqL1xuLmJ0bi1zdHlsZXMge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHBhZGRpbmc6IDAgMTBweDtcbiAgbWluLXdpZHRoOiAxNzJweDtcbiAgaGVpZ2h0OiA2MnB4O1xuICBsaW5lLWhlaWdodDogNjJweDtcbiAgY29sb3I6ICRidG4tYmx1ZS10ZXh0LWNvbG9yO1xuICBmb250LXNpemU6IDEycHg7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgbGV0dGVyLXNwYWNpbmc6IDAuMDZweDtcbiAgYm9yZGVyLXJhZGl1czogMTBweDtcblxuICAmOmFjdGl2ZSxcbiAgJjpmb2N1cyB7XG4gICAgb3V0bGluZTogMCAhaW1wb3J0YW50O1xuICB9XG5cbiAgJjpob3ZlciB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICB9XG5cbiAgJi5idG4tYmx1ZSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGJ0bi1ibHVlLWJnLWNvbG9yO1xuICAgIGJvcmRlcjogbm9uZTtcblxuICAgICY6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGJ0bi1ibHVlLWJnLWNvbG9yLWhvdmVyO1xuICAgICAgYm94LXNoYWRvdzogMCAxMnB4IDI0cHggMCByZ2JhKDAsIDAsIDAsIDAuMDYpO1xuICAgIH1cbiAgfVxuXG4gICYuYnRuLWJvcmRlcmVkIHtcbiAgICBjb2xvcjogJGJ0bi1ib3JkZXJlZC10ZXh0LWNvbG9yO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRidG4tYm9yZGVyZWQtYmctY29sb3I7XG4gICAgYm9yZGVyOiAycHggc29saWQgJGJ0bi1ib3JkZXJlZC1ib3JkZXItY29sb3I7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIGNvbG9yOiAkYnRuLWJvcmRlcmVkLXRleHQtY29sb3ItaG92ZXI7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYnRuLWJvcmRlcmVkLWJnLWNvbG9yLWhvdmVyO1xuICAgICAgYm9yZGVyLWNvbG9yOiAkYnRuLWJvcmRlcmVkLWJvcmRlci1jb2xvci1ob3ZlcjtcbiAgICAgIGJveC1zaGFkb3c6IDAgMTJweCAyNHB4IDAgcmdiYSgwLCAwLCAwLCAwLjA2KTtcbiAgICB9XG4gIH1cbn1cblxuLyogRW5kIGJ1dHRvbiBzdHlsZXMgKi9cblxuI3JlZ2lzdHJhdGlvbi1mb3JtIHtcbiAgLnNldHRpbmcge1xuICAgIGZvbnQtc2l6ZTogMTZweDtcblxuICAgIEBpbmNsdWRlIGZvci1waG9uZS1vbmx5IHtcbiAgICAgIHBhZGRpbmctdG9wOiAwO1xuICAgIH1cblxuICAgIHAge1xuICAgICAgQGluY2x1ZGUgZm9yLXBob25lLW9ubHkge1xuICAgICAgICAmLnRleHQtbGlnaHRlciB7XG4gICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgIG1hcmdpbi10b3A6IDE1cHg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAudGV4dC1saWdodGVyIHtcbiAgICAgIGNvbG9yOiAjODY4Yzk3O1xuICAgIH1cblxuICAgIC5zdWNjZXNzIHtcbiAgICAgIG1hcmdpbjogNDVweCAwO1xuICAgIH1cblxuICAgIC53YXJuaW5nIHtcbiAgICAgIG1hcmdpbi10b3A6IDQ1cHg7XG4gICAgfVxuXG4gICAgLmxpbmstaXRlbSB7XG4gICAgICBjb2xvcjogJGJsdWUtdGV4dC1jb2xvcjtcbiAgICB9XG5cbiAgICAubW9iaWxlLWljb24ge1xuICAgICAgbWFyZ2luOiAwO1xuICAgIH1cbiAgfVxufVxuXG4jcmVnaXN0cmF0aW9uLWFyZWEsXG4jd2FybmluZy1hcmVhLFxuI2NvbmZpcm0tYXJlYSB7XG4gIHBhZGRpbmc6IDEwMHB4IDA7XG4gIGNvbG9yOiAjZmZmO1xuICBiYWNrZ3JvdW5kLXNpemU6IGNvbnRhaW47XG4gIGJhY2tncm91bmQtcG9zaXRpb246IHJpZ2h0IHRvcDtcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy9ia2ctc2hhZG93LWxvZ28teWVsbG93LnBuZ1wiKTtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHdhcm5pbmctYmctY29sb3I7XG59XG5cbiNyZWdpc3RyYXRpb24tYXJlYSB7XG4gIC8vIGJhY2tncm91bmQtaW1hZ2U6IHVybChcIi4uL2ltYWdlcy9ia2ctc2hhZG93LWxvZ28tYmx1ZS5wbmdcIik7XG4gIGJhY2tncm91bmQtY29sb3I6ICRyZWdpc3Rlci1iZy1jb2xvcjtcbn1cbiJdfQ== */\";","export default \"@import url(\\\"//fonts.googleapis.com/icon?family=Material+Icons\\\");\\n/* You can add global styles to this file, and also import other style files */\\n.mat-badge-content {\\n font-weight: 600;\\n font-size: 12px;\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n}\\n.mat-badge-small .mat-badge-content {\\n font-size: 9px;\\n}\\n.mat-badge-large .mat-badge-content {\\n font-size: 24px;\\n}\\n.mat-h1, .mat-headline, .mat-typography h1 {\\n font: 400 24px/32px Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n letter-spacing: normal;\\n margin: 0 0 16px;\\n}\\n.mat-h2, .mat-title, .mat-typography h2 {\\n font: 500 20px/32px Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n letter-spacing: normal;\\n margin: 0 0 16px;\\n}\\n.mat-h3, .mat-subheading-2, .mat-typography h3 {\\n font: 400 16px/28px Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n letter-spacing: normal;\\n margin: 0 0 16px;\\n}\\n.mat-h4, .mat-subheading-1, .mat-typography h4 {\\n font: 400 15px/24px Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n letter-spacing: normal;\\n margin: 0 0 16px;\\n}\\n.mat-h5, .mat-typography h5 {\\n font: 400 calc(14px * 0.83)/20px Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n margin: 0 0 12px;\\n}\\n.mat-h6, .mat-typography h6 {\\n font: 400 calc(14px * 0.67)/20px Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n margin: 0 0 12px;\\n}\\n.mat-body-strong, .mat-body-2 {\\n font: 500 14px/24px Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n letter-spacing: normal;\\n}\\n.mat-body, .mat-body-1, .mat-typography {\\n font: 400 14px/20px Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n letter-spacing: normal;\\n}\\n.mat-body p, .mat-body-1 p, .mat-typography p {\\n margin: 0 0 12px;\\n}\\n.mat-small, .mat-caption {\\n font: 400 12px/20px Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n letter-spacing: normal;\\n}\\n.mat-display-4, .mat-typography .mat-display-4 {\\n font: 300 112px/112px Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n letter-spacing: -0.05em;\\n margin: 0 0 56px;\\n}\\n.mat-display-3, .mat-typography .mat-display-3 {\\n font: 400 56px/56px Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n letter-spacing: -0.02em;\\n margin: 0 0 64px;\\n}\\n.mat-display-2, .mat-typography .mat-display-2 {\\n font: 400 45px/48px Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n letter-spacing: -0.005em;\\n margin: 0 0 64px;\\n}\\n.mat-display-1, .mat-typography .mat-display-1 {\\n font: 400 34px/40px Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n letter-spacing: normal;\\n margin: 0 0 64px;\\n}\\n.mat-bottom-sheet-container {\\n font: 400 14px/20px Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n letter-spacing: normal;\\n}\\n.mat-button, .mat-raised-button, .mat-icon-button, .mat-stroked-button,\\n.mat-flat-button, .mat-fab, .mat-mini-fab {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n font-size: 14px;\\n font-weight: 500;\\n}\\n.mat-button-toggle {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n}\\n.mat-card {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n}\\n.mat-card-title {\\n font-size: 24px;\\n font-weight: 500;\\n}\\n.mat-card-header .mat-card-title {\\n font-size: 20px;\\n}\\n.mat-card-subtitle,\\n.mat-card-content {\\n font-size: 14px;\\n}\\n.mat-checkbox {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n}\\n.mat-checkbox-layout .mat-checkbox-label {\\n line-height: 24px;\\n}\\n.mat-chip {\\n font-size: 14px;\\n font-weight: 500;\\n}\\n.mat-chip .mat-chip-trailing-icon.mat-icon,\\n.mat-chip .mat-chip-remove.mat-icon {\\n font-size: 18px;\\n}\\n.mat-table {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n}\\n.mat-header-cell {\\n font-size: 12px;\\n font-weight: 500;\\n}\\n.mat-cell, .mat-footer-cell {\\n font-size: 14px;\\n}\\n.mat-calendar {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n}\\n.mat-calendar-body {\\n font-size: 13px;\\n}\\n.mat-calendar-body-label,\\n.mat-calendar-period-button {\\n font-size: 14px;\\n font-weight: 500;\\n}\\n.mat-calendar-table-header th {\\n font-size: 11px;\\n font-weight: 400;\\n}\\n.mat-dialog-title {\\n font: 500 20px/32px Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n letter-spacing: normal;\\n}\\n.mat-expansion-panel-header {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n font-size: 15px;\\n font-weight: 400;\\n}\\n.mat-expansion-panel-content {\\n font: 400 14px/20px Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n letter-spacing: normal;\\n}\\n.mat-form-field {\\n font-size: inherit;\\n font-weight: 400;\\n line-height: 1.125;\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n letter-spacing: normal;\\n}\\n.mat-form-field-wrapper {\\n padding-bottom: 1.34375em;\\n}\\n.mat-form-field-prefix .mat-icon,\\n.mat-form-field-suffix .mat-icon {\\n font-size: 150%;\\n line-height: 1.125;\\n}\\n.mat-form-field-prefix .mat-icon-button,\\n.mat-form-field-suffix .mat-icon-button {\\n height: 1.5em;\\n width: 1.5em;\\n}\\n.mat-form-field-prefix .mat-icon-button .mat-icon,\\n.mat-form-field-suffix .mat-icon-button .mat-icon {\\n height: 1.125em;\\n line-height: 1.125;\\n}\\n.mat-form-field-infix {\\n padding: 0.5em 0;\\n border-top: 0.84375em solid transparent;\\n}\\n.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,\\n.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.34375em) scale(0.75);\\n width: 133.3333333333%;\\n}\\n.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.34374em) scale(0.75);\\n width: 133.3333433333%;\\n}\\n.mat-form-field-label-wrapper {\\n top: -0.84375em;\\n padding-top: 0.84375em;\\n}\\n.mat-form-field-label {\\n top: 1.34375em;\\n}\\n.mat-form-field-underline {\\n bottom: 1.34375em;\\n}\\n.mat-form-field-subscript-wrapper {\\n font-size: 75%;\\n margin-top: 0.6666666667em;\\n top: calc(100% - 1.7916666667em);\\n}\\n.mat-form-field-appearance-legacy .mat-form-field-wrapper {\\n padding-bottom: 1.25em;\\n}\\n.mat-form-field-appearance-legacy .mat-form-field-infix {\\n padding: 0.4375em 0;\\n}\\n.mat-form-field-appearance-legacy.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,\\n.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.28125em) scale(0.75) perspective(100px) translateZ(0.001px);\\n -ms-transform: translateY(-1.28125em) scale(0.75);\\n width: 133.3333333333%;\\n}\\n.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-form-field-autofill-control:-webkit-autofill + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.28125em) scale(0.75) perspective(100px) translateZ(0.00101px);\\n -ms-transform: translateY(-1.28124em) scale(0.75);\\n width: 133.3333433333%;\\n}\\n.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.28125em) scale(0.75) perspective(100px) translateZ(0.00102px);\\n -ms-transform: translateY(-1.28123em) scale(0.75);\\n width: 133.3333533333%;\\n}\\n.mat-form-field-appearance-legacy .mat-form-field-label {\\n top: 1.28125em;\\n}\\n.mat-form-field-appearance-legacy .mat-form-field-underline {\\n bottom: 1.25em;\\n}\\n.mat-form-field-appearance-legacy .mat-form-field-subscript-wrapper {\\n margin-top: 0.5416666667em;\\n top: calc(100% - 1.6666666667em);\\n}\\n@media print {\\n .mat-form-field-appearance-legacy.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,\\n.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.28122em) scale(0.75);\\n }\\n .mat-form-field-appearance-legacy.mat-form-field-can-float .mat-form-field-autofill-control:-webkit-autofill + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.28121em) scale(0.75);\\n }\\n .mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.2812em) scale(0.75);\\n }\\n}\\n.mat-form-field-appearance-fill .mat-form-field-infix {\\n padding: 0.25em 0 0.75em 0;\\n}\\n.mat-form-field-appearance-fill .mat-form-field-label {\\n top: 1.09375em;\\n margin-top: -0.5em;\\n}\\n.mat-form-field-appearance-fill.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,\\n.mat-form-field-appearance-fill.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-0.59375em) scale(0.75);\\n width: 133.3333333333%;\\n}\\n.mat-form-field-appearance-fill.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-0.59374em) scale(0.75);\\n width: 133.3333433333%;\\n}\\n.mat-form-field-appearance-outline .mat-form-field-infix {\\n padding: 1em 0 1em 0;\\n}\\n.mat-form-field-appearance-outline .mat-form-field-label {\\n top: 1.84375em;\\n margin-top: -0.25em;\\n}\\n.mat-form-field-appearance-outline.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,\\n.mat-form-field-appearance-outline.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.59375em) scale(0.75);\\n width: 133.3333333333%;\\n}\\n.mat-form-field-appearance-outline.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.59374em) scale(0.75);\\n width: 133.3333433333%;\\n}\\n.mat-grid-tile-header,\\n.mat-grid-tile-footer {\\n font-size: 14px;\\n}\\n.mat-grid-tile-header .mat-line,\\n.mat-grid-tile-footer .mat-line {\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n display: block;\\n box-sizing: border-box;\\n}\\n.mat-grid-tile-header .mat-line:nth-child(n+2),\\n.mat-grid-tile-footer .mat-line:nth-child(n+2) {\\n font-size: 12px;\\n}\\ninput.mat-input-element {\\n margin-top: -0.0625em;\\n}\\n.mat-menu-item {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n font-size: 14px;\\n font-weight: 400;\\n}\\n.mat-paginator,\\n.mat-paginator-page-size .mat-select-trigger {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n font-size: 12px;\\n}\\n.mat-radio-button {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n}\\n.mat-select {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n}\\n.mat-select-trigger {\\n height: 1.125em;\\n}\\n.mat-slide-toggle-content {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n}\\n.mat-slider-thumb-label-text {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n font-size: 12px;\\n font-weight: 500;\\n}\\n.mat-stepper-vertical, .mat-stepper-horizontal {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n}\\n.mat-step-label {\\n font-size: 14px;\\n font-weight: 400;\\n}\\n.mat-step-sub-label-error {\\n font-weight: normal;\\n}\\n.mat-step-label-error {\\n font-size: 14px;\\n}\\n.mat-step-label-selected {\\n font-size: 14px;\\n font-weight: 500;\\n}\\n.mat-tab-group {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n}\\n.mat-tab-label, .mat-tab-link {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n font-size: 14px;\\n font-weight: 500;\\n}\\n.mat-toolbar,\\n.mat-toolbar h1,\\n.mat-toolbar h2,\\n.mat-toolbar h3,\\n.mat-toolbar h4,\\n.mat-toolbar h5,\\n.mat-toolbar h6 {\\n font: 500 20px/32px Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n letter-spacing: normal;\\n margin: 0;\\n}\\n.mat-tooltip {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n font-size: 10px;\\n padding-top: 6px;\\n padding-bottom: 6px;\\n}\\n.mat-tooltip-handset {\\n font-size: 14px;\\n padding-top: 8px;\\n padding-bottom: 8px;\\n}\\n.mat-list-item {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n}\\n.mat-list-option {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n}\\n.mat-list-base .mat-list-item {\\n font-size: 16px;\\n}\\n.mat-list-base .mat-list-item .mat-line {\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n display: block;\\n box-sizing: border-box;\\n}\\n.mat-list-base .mat-list-item .mat-line:nth-child(n+2) {\\n font-size: 14px;\\n}\\n.mat-list-base .mat-list-option {\\n font-size: 16px;\\n}\\n.mat-list-base .mat-list-option .mat-line {\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n display: block;\\n box-sizing: border-box;\\n}\\n.mat-list-base .mat-list-option .mat-line:nth-child(n+2) {\\n font-size: 14px;\\n}\\n.mat-list-base .mat-subheader {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n font-size: 14px;\\n font-weight: 500;\\n}\\n.mat-list-base[dense] .mat-list-item {\\n font-size: 12px;\\n}\\n.mat-list-base[dense] .mat-list-item .mat-line {\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n display: block;\\n box-sizing: border-box;\\n}\\n.mat-list-base[dense] .mat-list-item .mat-line:nth-child(n+2) {\\n font-size: 12px;\\n}\\n.mat-list-base[dense] .mat-list-option {\\n font-size: 12px;\\n}\\n.mat-list-base[dense] .mat-list-option .mat-line {\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n display: block;\\n box-sizing: border-box;\\n}\\n.mat-list-base[dense] .mat-list-option .mat-line:nth-child(n+2) {\\n font-size: 12px;\\n}\\n.mat-list-base[dense] .mat-subheader {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n font-size: 12px;\\n font-weight: 500;\\n}\\n.mat-option {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n font-size: 16px;\\n}\\n.mat-optgroup-label {\\n font: 500 14px/24px Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n letter-spacing: normal;\\n}\\n.mat-simple-snackbar {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n font-size: 14px;\\n}\\n.mat-simple-snackbar-action {\\n line-height: 1;\\n font-family: inherit;\\n font-size: inherit;\\n font-weight: 500;\\n}\\n.mat-tree {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n}\\n.mat-tree-node,\\n.mat-nested-tree-node {\\n font-weight: 400;\\n font-size: 14px;\\n}\\n.mat-ripple {\\n overflow: hidden;\\n position: relative;\\n}\\n.mat-ripple:not(:empty) {\\n transform: translateZ(0);\\n}\\n.mat-ripple.mat-ripple-unbounded {\\n overflow: visible;\\n}\\n.mat-ripple-element {\\n position: absolute;\\n border-radius: 50%;\\n pointer-events: none;\\n transition: opacity, transform 0ms cubic-bezier(0, 0, 0.2, 1);\\n transform: scale(0);\\n}\\n.cdk-high-contrast-active .mat-ripple-element {\\n display: none;\\n}\\n.cdk-visually-hidden {\\n border: 0;\\n clip: rect(0 0 0 0);\\n height: 1px;\\n margin: -1px;\\n overflow: hidden;\\n padding: 0;\\n position: absolute;\\n width: 1px;\\n white-space: nowrap;\\n outline: 0;\\n -webkit-appearance: none;\\n -moz-appearance: none;\\n}\\n.cdk-overlay-container, .cdk-global-overlay-wrapper {\\n pointer-events: none;\\n top: 0;\\n left: 0;\\n height: 100%;\\n width: 100%;\\n}\\n.cdk-overlay-container {\\n position: fixed;\\n z-index: 1000;\\n}\\n.cdk-overlay-container:empty {\\n display: none;\\n}\\n.cdk-global-overlay-wrapper {\\n display: flex;\\n position: absolute;\\n z-index: 1000;\\n}\\n.cdk-overlay-pane {\\n position: absolute;\\n pointer-events: auto;\\n box-sizing: border-box;\\n z-index: 1000;\\n display: flex;\\n max-width: 100%;\\n max-height: 100%;\\n}\\n.cdk-overlay-backdrop {\\n position: absolute;\\n top: 0;\\n bottom: 0;\\n left: 0;\\n right: 0;\\n z-index: 1000;\\n pointer-events: auto;\\n -webkit-tap-highlight-color: transparent;\\n transition: opacity 400ms cubic-bezier(0.25, 0.8, 0.25, 1);\\n opacity: 0;\\n}\\n.cdk-overlay-backdrop.cdk-overlay-backdrop-showing {\\n opacity: 1;\\n}\\n.cdk-high-contrast-active .cdk-overlay-backdrop.cdk-overlay-backdrop-showing {\\n opacity: 0.6;\\n}\\n.cdk-overlay-dark-backdrop {\\n background: rgba(0, 0, 0, 0.32);\\n}\\n.cdk-overlay-transparent-backdrop, .cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing {\\n opacity: 0;\\n}\\n.cdk-overlay-connected-position-bounding-box {\\n position: absolute;\\n z-index: 1000;\\n display: flex;\\n flex-direction: column;\\n min-width: 1px;\\n min-height: 1px;\\n}\\n.cdk-global-scrollblock {\\n position: fixed;\\n width: 100%;\\n overflow-y: scroll;\\n}\\ntextarea.cdk-textarea-autosize {\\n resize: none;\\n}\\ntextarea.cdk-textarea-autosize-measuring {\\n padding: 2px 0 !important;\\n box-sizing: content-box !important;\\n height: auto !important;\\n overflow: hidden !important;\\n}\\ntextarea.cdk-textarea-autosize-measuring-firefox {\\n padding: 2px 0 !important;\\n box-sizing: content-box !important;\\n height: 0 !important;\\n}\\n@keyframes cdk-text-field-autofill-start {\\n /*!*/\\n}\\n@keyframes cdk-text-field-autofill-end {\\n /*!*/\\n}\\n.cdk-text-field-autofill-monitored:-webkit-autofill {\\n animation: cdk-text-field-autofill-start 0s 1ms;\\n}\\n.cdk-text-field-autofill-monitored:not(:-webkit-autofill) {\\n animation: cdk-text-field-autofill-end 0s 1ms;\\n}\\n.mat-focus-indicator {\\n position: relative;\\n}\\n.mat-mdc-focus-indicator {\\n position: relative;\\n}\\n.mat-badge-content {\\n font-weight: 600;\\n font-size: 12px;\\n font-family: OpenSans, sans-serif;\\n}\\n.mat-badge-small .mat-badge-content {\\n font-size: 9px;\\n}\\n.mat-badge-large .mat-badge-content {\\n font-size: 24px;\\n}\\n.mat-h1, .mat-headline, .mat-typography h1 {\\n font: 400 24px/32px OpenSans, sans-serif;\\n letter-spacing: normal;\\n margin: 0 0 16px;\\n}\\n.mat-h2, .mat-title, .mat-typography h2 {\\n font: 500 20px/32px OpenSans, sans-serif;\\n letter-spacing: normal;\\n margin: 0 0 16px;\\n}\\n.mat-h3, .mat-subheading-2, .mat-typography h3 {\\n font: 400 16px/28px OpenSans, sans-serif;\\n letter-spacing: normal;\\n margin: 0 0 16px;\\n}\\n.mat-h4, .mat-subheading-1, .mat-typography h4 {\\n font: 400 15px/24px OpenSans, sans-serif;\\n letter-spacing: normal;\\n margin: 0 0 16px;\\n}\\n.mat-h5, .mat-typography h5 {\\n font: normal calc(16px * 0.83)/24px OpenSans, sans-serif;\\n margin: 0 0 12px;\\n}\\n.mat-h6, .mat-typography h6 {\\n font: normal calc(16px * 0.67)/24px OpenSans, sans-serif;\\n margin: 0 0 12px;\\n}\\n.mat-body-strong, .mat-body-2 {\\n font: 500 14px/24px OpenSans, sans-serif;\\n letter-spacing: normal;\\n}\\n.mat-body, .mat-body-1, .mat-typography {\\n font: normal 16px/24px OpenSans, sans-serif;\\n letter-spacing: normal;\\n}\\n.mat-body p, .mat-body-1 p, .mat-typography p {\\n margin: 0 0 12px;\\n}\\n.mat-small, .mat-caption {\\n font: 400 12px/20px OpenSans, sans-serif;\\n letter-spacing: normal;\\n}\\n.mat-display-4, .mat-typography .mat-display-4 {\\n font: 300 112px/112px OpenSans, sans-serif;\\n letter-spacing: -0.05em;\\n margin: 0 0 56px;\\n}\\n.mat-display-3, .mat-typography .mat-display-3 {\\n font: 400 56px/56px OpenSans, sans-serif;\\n letter-spacing: -0.02em;\\n margin: 0 0 64px;\\n}\\n.mat-display-2, .mat-typography .mat-display-2 {\\n font: 400 45px/48px OpenSans, sans-serif;\\n letter-spacing: -0.005em;\\n margin: 0 0 64px;\\n}\\n.mat-display-1, .mat-typography .mat-display-1 {\\n font: 400 34px/40px OpenSans, sans-serif;\\n letter-spacing: normal;\\n margin: 0 0 64px;\\n}\\n.mat-bottom-sheet-container {\\n font: normal 16px/24px OpenSans, sans-serif;\\n letter-spacing: normal;\\n}\\n.mat-button, .mat-raised-button, .mat-icon-button, .mat-stroked-button,\\n.mat-flat-button, .mat-fab, .mat-mini-fab {\\n font-family: OpenSans, sans-serif;\\n font-size: 14px;\\n font-weight: 500;\\n}\\n.mat-button-toggle {\\n font-family: OpenSans, sans-serif;\\n}\\n.mat-card {\\n font-family: OpenSans, sans-serif;\\n}\\n.mat-card-title {\\n font-size: 24px;\\n font-weight: 500;\\n}\\n.mat-card-header .mat-card-title {\\n font-size: 20px;\\n}\\n.mat-card-subtitle,\\n.mat-card-content {\\n font-size: 16px;\\n}\\n.mat-checkbox {\\n font-family: OpenSans, sans-serif;\\n}\\n.mat-checkbox-layout .mat-checkbox-label {\\n line-height: 24px;\\n}\\n.mat-chip {\\n font-size: 14px;\\n font-weight: 500;\\n}\\n.mat-chip .mat-chip-trailing-icon.mat-icon,\\n.mat-chip .mat-chip-remove.mat-icon {\\n font-size: 18px;\\n}\\n.mat-table {\\n font-family: OpenSans, sans-serif;\\n}\\n.mat-header-cell {\\n font-size: 12px;\\n font-weight: 500;\\n}\\n.mat-cell, .mat-footer-cell {\\n font-size: 16px;\\n}\\n.mat-calendar {\\n font-family: OpenSans, sans-serif;\\n}\\n.mat-calendar-body {\\n font-size: 13px;\\n}\\n.mat-calendar-body-label,\\n.mat-calendar-period-button {\\n font-size: 14px;\\n font-weight: 500;\\n}\\n.mat-calendar-table-header th {\\n font-size: 11px;\\n font-weight: normal;\\n}\\n.mat-dialog-title {\\n font: 500 20px/32px OpenSans, sans-serif;\\n letter-spacing: normal;\\n}\\n.mat-expansion-panel-header {\\n font-family: OpenSans, sans-serif;\\n font-size: 15px;\\n font-weight: 400;\\n}\\n.mat-expansion-panel-content {\\n font: normal 16px/24px OpenSans, sans-serif;\\n letter-spacing: normal;\\n}\\n.mat-form-field {\\n font-size: inherit;\\n font-weight: 400;\\n line-height: 1.125;\\n font-family: OpenSans, sans-serif;\\n letter-spacing: normal;\\n}\\n.mat-form-field-wrapper {\\n padding-bottom: 1.34375em;\\n}\\n.mat-form-field-prefix .mat-icon,\\n.mat-form-field-suffix .mat-icon {\\n font-size: 150%;\\n line-height: 1.125;\\n}\\n.mat-form-field-prefix .mat-icon-button,\\n.mat-form-field-suffix .mat-icon-button {\\n height: 1.5em;\\n width: 1.5em;\\n}\\n.mat-form-field-prefix .mat-icon-button .mat-icon,\\n.mat-form-field-suffix .mat-icon-button .mat-icon {\\n height: 1.125em;\\n line-height: 1.125;\\n}\\n.mat-form-field-infix {\\n padding: 0.5em 0;\\n border-top: 0.84375em solid transparent;\\n}\\n.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,\\n.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.34373em) scale(0.75);\\n width: 133.3333533333%;\\n}\\n.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.34372em) scale(0.75);\\n width: 133.3333633333%;\\n}\\n.mat-form-field-label-wrapper {\\n top: -0.84375em;\\n padding-top: 0.84375em;\\n}\\n.mat-form-field-label {\\n top: 1.34375em;\\n}\\n.mat-form-field-underline {\\n bottom: 1.34375em;\\n}\\n.mat-form-field-subscript-wrapper {\\n font-size: 75%;\\n margin-top: 0.6666666667em;\\n top: calc(100% - 1.7916666667em);\\n}\\n.mat-form-field-appearance-legacy .mat-form-field-wrapper {\\n padding-bottom: 1.25em;\\n}\\n.mat-form-field-appearance-legacy .mat-form-field-infix {\\n padding: 0.4375em 0;\\n}\\n.mat-form-field-appearance-legacy.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,\\n.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.28125em) scale(0.75) perspective(100px) translateZ(0.00106px);\\n -ms-transform: translateY(-1.28119em) scale(0.75);\\n width: 133.3333933333%;\\n}\\n.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-form-field-autofill-control:-webkit-autofill + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.28125em) scale(0.75) perspective(100px) translateZ(0.00107px);\\n -ms-transform: translateY(-1.28118em) scale(0.75);\\n width: 133.3334033333%;\\n}\\n.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.28125em) scale(0.75) perspective(100px) translateZ(0.00108px);\\n -ms-transform: translateY(-1.28117em) scale(0.75);\\n width: 133.3334133333%;\\n}\\n.mat-form-field-appearance-legacy .mat-form-field-label {\\n top: 1.28125em;\\n}\\n.mat-form-field-appearance-legacy .mat-form-field-underline {\\n bottom: 1.25em;\\n}\\n.mat-form-field-appearance-legacy .mat-form-field-subscript-wrapper {\\n margin-top: 0.5416666667em;\\n top: calc(100% - 1.6666666667em);\\n}\\n@media print {\\n .mat-form-field-appearance-legacy.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,\\n.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.28116em) scale(0.75);\\n }\\n .mat-form-field-appearance-legacy.mat-form-field-can-float .mat-form-field-autofill-control:-webkit-autofill + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.28115em) scale(0.75);\\n }\\n .mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.28114em) scale(0.75);\\n }\\n}\\n.mat-form-field-appearance-fill .mat-form-field-infix {\\n padding: 0.25em 0 0.75em 0;\\n}\\n.mat-form-field-appearance-fill .mat-form-field-label {\\n top: 1.09375em;\\n margin-top: -0.5em;\\n}\\n.mat-form-field-appearance-fill.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,\\n.mat-form-field-appearance-fill.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-0.59373em) scale(0.75);\\n width: 133.3333533333%;\\n}\\n.mat-form-field-appearance-fill.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-0.59372em) scale(0.75);\\n width: 133.3333633333%;\\n}\\n.mat-form-field-appearance-outline .mat-form-field-infix {\\n padding: 1em 0 1em 0;\\n}\\n.mat-form-field-appearance-outline .mat-form-field-label {\\n top: 1.84375em;\\n margin-top: -0.25em;\\n}\\n.mat-form-field-appearance-outline.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,\\n.mat-form-field-appearance-outline.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.59373em) scale(0.75);\\n width: 133.3333533333%;\\n}\\n.mat-form-field-appearance-outline.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.59372em) scale(0.75);\\n width: 133.3333633333%;\\n}\\n.mat-grid-tile-header,\\n.mat-grid-tile-footer {\\n font-size: 16px;\\n}\\n.mat-grid-tile-header .mat-line,\\n.mat-grid-tile-footer .mat-line {\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n display: block;\\n box-sizing: border-box;\\n}\\n.mat-grid-tile-header .mat-line:nth-child(n+2),\\n.mat-grid-tile-footer .mat-line:nth-child(n+2) {\\n font-size: 12px;\\n}\\ninput.mat-input-element {\\n margin-top: -0.0625em;\\n}\\n.mat-menu-item {\\n font-family: OpenSans, sans-serif;\\n font-size: 16px;\\n font-weight: normal;\\n}\\n.mat-paginator,\\n.mat-paginator-page-size .mat-select-trigger {\\n font-family: OpenSans, sans-serif;\\n font-size: 12px;\\n}\\n.mat-radio-button {\\n font-family: OpenSans, sans-serif;\\n}\\n.mat-select {\\n font-family: OpenSans, sans-serif;\\n}\\n.mat-select-trigger {\\n height: 1.125em;\\n}\\n.mat-slide-toggle-content {\\n font-family: OpenSans, sans-serif;\\n}\\n.mat-slider-thumb-label-text {\\n font-family: OpenSans, sans-serif;\\n font-size: 12px;\\n font-weight: 500;\\n}\\n.mat-stepper-vertical, .mat-stepper-horizontal {\\n font-family: OpenSans, sans-serif;\\n}\\n.mat-step-label {\\n font-size: 16px;\\n font-weight: normal;\\n}\\n.mat-step-sub-label-error {\\n font-weight: normal;\\n}\\n.mat-step-label-error {\\n font-size: 14px;\\n}\\n.mat-step-label-selected {\\n font-size: 14px;\\n font-weight: 500;\\n}\\n.mat-tab-group {\\n font-family: OpenSans, sans-serif;\\n}\\n.mat-tab-label, .mat-tab-link {\\n font-family: OpenSans, sans-serif;\\n font-size: 14px;\\n font-weight: 500;\\n}\\n.mat-toolbar,\\n.mat-toolbar h1,\\n.mat-toolbar h2,\\n.mat-toolbar h3,\\n.mat-toolbar h4,\\n.mat-toolbar h5,\\n.mat-toolbar h6 {\\n font: 500 20px/32px OpenSans, sans-serif;\\n letter-spacing: normal;\\n margin: 0;\\n}\\n.mat-tooltip {\\n font-family: OpenSans, sans-serif;\\n font-size: 10px;\\n padding-top: 6px;\\n padding-bottom: 6px;\\n}\\n.mat-tooltip-handset {\\n font-size: 14px;\\n padding-top: 8px;\\n padding-bottom: 8px;\\n}\\n.mat-list-item {\\n font-family: OpenSans, sans-serif;\\n}\\n.mat-list-option {\\n font-family: OpenSans, sans-serif;\\n}\\n.mat-list-base .mat-list-item {\\n font-size: 16px;\\n}\\n.mat-list-base .mat-list-item .mat-line {\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n display: block;\\n box-sizing: border-box;\\n}\\n.mat-list-base .mat-list-item .mat-line:nth-child(n+2) {\\n font-size: 16px;\\n}\\n.mat-list-base .mat-list-option {\\n font-size: 16px;\\n}\\n.mat-list-base .mat-list-option .mat-line {\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n display: block;\\n box-sizing: border-box;\\n}\\n.mat-list-base .mat-list-option .mat-line:nth-child(n+2) {\\n font-size: 16px;\\n}\\n.mat-list-base .mat-subheader {\\n font-family: OpenSans, sans-serif;\\n font-size: 14px;\\n font-weight: 500;\\n}\\n.mat-list-base[dense] .mat-list-item {\\n font-size: 12px;\\n}\\n.mat-list-base[dense] .mat-list-item .mat-line {\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n display: block;\\n box-sizing: border-box;\\n}\\n.mat-list-base[dense] .mat-list-item .mat-line:nth-child(n+2) {\\n font-size: 12px;\\n}\\n.mat-list-base[dense] .mat-list-option {\\n font-size: 12px;\\n}\\n.mat-list-base[dense] .mat-list-option .mat-line {\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n display: block;\\n box-sizing: border-box;\\n}\\n.mat-list-base[dense] .mat-list-option .mat-line:nth-child(n+2) {\\n font-size: 12px;\\n}\\n.mat-list-base[dense] .mat-subheader {\\n font-family: OpenSans, sans-serif;\\n font-size: 12px;\\n font-weight: 500;\\n}\\n.mat-option {\\n font-family: OpenSans, sans-serif;\\n font-size: 16px;\\n}\\n.mat-optgroup-label {\\n font: 500 14px/24px OpenSans, sans-serif;\\n letter-spacing: normal;\\n}\\n.mat-simple-snackbar {\\n font-family: OpenSans, sans-serif;\\n font-size: 16px;\\n}\\n.mat-simple-snackbar-action {\\n line-height: 1;\\n font-family: inherit;\\n font-size: inherit;\\n font-weight: 500;\\n}\\n.mat-tree {\\n font-family: OpenSans, sans-serif;\\n}\\n.mat-tree-node,\\n.mat-nested-tree-node {\\n font-weight: normal;\\n font-size: 16px;\\n}\\n.mat-typography h1, .mat-typography h2, .mat-typography h3, .mat-typography h4, .mat-typography h5, .mat-typography h6 {\\n font-family: BwModelica, monospace;\\n font-weight: bold;\\n}\\n.mat-ripple-element {\\n background-color: rgba(0, 0, 0, 0.1);\\n}\\n.mat-option {\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-option:hover:not(.mat-option-disabled), .mat-option:focus:not(.mat-option-disabled) {\\n background: rgba(0, 0, 0, 0.04);\\n}\\n.mat-option.mat-selected:not(.mat-option-multiple):not(.mat-option-disabled) {\\n background: rgba(0, 0, 0, 0.04);\\n}\\n.mat-option.mat-active {\\n background: rgba(0, 0, 0, 0.04);\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-option.mat-option-disabled {\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-primary .mat-option.mat-selected:not(.mat-option-disabled) {\\n color: #4775f5;\\n}\\n.mat-accent .mat-option.mat-selected:not(.mat-option-disabled) {\\n color: #f7cc71;\\n}\\n.mat-warn .mat-option.mat-selected:not(.mat-option-disabled) {\\n color: #fc8f76;\\n}\\n.mat-optgroup-label {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-optgroup-disabled .mat-optgroup-label {\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-pseudo-checkbox {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-pseudo-checkbox::after {\\n color: #fafafa;\\n}\\n.mat-pseudo-checkbox-disabled {\\n color: #b0b0b0;\\n}\\n.mat-primary .mat-pseudo-checkbox-checked,\\n.mat-primary .mat-pseudo-checkbox-indeterminate {\\n background: #4775f5;\\n}\\n.mat-pseudo-checkbox-checked,\\n.mat-pseudo-checkbox-indeterminate,\\n.mat-accent .mat-pseudo-checkbox-checked,\\n.mat-accent .mat-pseudo-checkbox-indeterminate {\\n background: #f7cc71;\\n}\\n.mat-warn .mat-pseudo-checkbox-checked,\\n.mat-warn .mat-pseudo-checkbox-indeterminate {\\n background: #fc8f76;\\n}\\n.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-disabled,\\n.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-disabled {\\n background: #b0b0b0;\\n}\\n.mat-app-background {\\n background-color: #fafafa;\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-elevation-z0 {\\n box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z1 {\\n box-shadow: 0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z2, .list-card {\\n box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z3 {\\n box-shadow: 0px 3px 3px -2px rgba(0, 0, 0, 0.2), 0px 3px 4px 0px rgba(0, 0, 0, 0.14), 0px 1px 8px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z4 {\\n box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z5 {\\n box-shadow: 0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 5px 8px 0px rgba(0, 0, 0, 0.14), 0px 1px 14px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z6 {\\n box-shadow: 0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z7 {\\n box-shadow: 0px 4px 5px -2px rgba(0, 0, 0, 0.2), 0px 7px 10px 1px rgba(0, 0, 0, 0.14), 0px 2px 16px 1px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z8, .list-card:hover {\\n box-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.2), 0px 8px 10px 1px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z9 {\\n box-shadow: 0px 5px 6px -3px rgba(0, 0, 0, 0.2), 0px 9px 12px 1px rgba(0, 0, 0, 0.14), 0px 3px 16px 2px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z10 {\\n box-shadow: 0px 6px 6px -3px rgba(0, 0, 0, 0.2), 0px 10px 14px 1px rgba(0, 0, 0, 0.14), 0px 4px 18px 3px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z11 {\\n box-shadow: 0px 6px 7px -4px rgba(0, 0, 0, 0.2), 0px 11px 15px 1px rgba(0, 0, 0, 0.14), 0px 4px 20px 3px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z12 {\\n box-shadow: 0px 7px 8px -4px rgba(0, 0, 0, 0.2), 0px 12px 17px 2px rgba(0, 0, 0, 0.14), 0px 5px 22px 4px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z13 {\\n box-shadow: 0px 7px 8px -4px rgba(0, 0, 0, 0.2), 0px 13px 19px 2px rgba(0, 0, 0, 0.14), 0px 5px 24px 4px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z14 {\\n box-shadow: 0px 7px 9px -4px rgba(0, 0, 0, 0.2), 0px 14px 21px 2px rgba(0, 0, 0, 0.14), 0px 5px 26px 4px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z15 {\\n box-shadow: 0px 8px 9px -5px rgba(0, 0, 0, 0.2), 0px 15px 22px 2px rgba(0, 0, 0, 0.14), 0px 6px 28px 5px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z16 {\\n box-shadow: 0px 8px 10px -5px rgba(0, 0, 0, 0.2), 0px 16px 24px 2px rgba(0, 0, 0, 0.14), 0px 6px 30px 5px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z17 {\\n box-shadow: 0px 8px 11px -5px rgba(0, 0, 0, 0.2), 0px 17px 26px 2px rgba(0, 0, 0, 0.14), 0px 6px 32px 5px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z18 {\\n box-shadow: 0px 9px 11px -5px rgba(0, 0, 0, 0.2), 0px 18px 28px 2px rgba(0, 0, 0, 0.14), 0px 7px 34px 6px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z19 {\\n box-shadow: 0px 9px 12px -6px rgba(0, 0, 0, 0.2), 0px 19px 29px 2px rgba(0, 0, 0, 0.14), 0px 7px 36px 6px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z20 {\\n box-shadow: 0px 10px 13px -6px rgba(0, 0, 0, 0.2), 0px 20px 31px 3px rgba(0, 0, 0, 0.14), 0px 8px 38px 7px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z21 {\\n box-shadow: 0px 10px 13px -6px rgba(0, 0, 0, 0.2), 0px 21px 33px 3px rgba(0, 0, 0, 0.14), 0px 8px 40px 7px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z22 {\\n box-shadow: 0px 10px 14px -6px rgba(0, 0, 0, 0.2), 0px 22px 35px 3px rgba(0, 0, 0, 0.14), 0px 8px 42px 7px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z23 {\\n box-shadow: 0px 11px 14px -7px rgba(0, 0, 0, 0.2), 0px 23px 36px 3px rgba(0, 0, 0, 0.14), 0px 9px 44px 8px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z24 {\\n box-shadow: 0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 9px 46px 8px rgba(0, 0, 0, 0.12);\\n}\\n.mat-theme-loaded-marker {\\n display: none;\\n}\\n.mat-autocomplete-panel {\\n background: white;\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-autocomplete-panel:not([class*=mat-elevation-z]) {\\n box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-autocomplete-panel .mat-option.mat-selected:not(.mat-active):not(:hover) {\\n background: white;\\n}\\n.mat-autocomplete-panel .mat-option.mat-selected:not(.mat-active):not(:hover):not(.mat-option-disabled) {\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-badge-content {\\n color: white;\\n background: #4775f5;\\n}\\n.cdk-high-contrast-active .mat-badge-content {\\n outline: solid 1px;\\n border-radius: 0;\\n}\\n.mat-badge-accent .mat-badge-content {\\n background: #f7cc71;\\n color: white;\\n}\\n.mat-badge-warn .mat-badge-content {\\n color: white;\\n background: #fc8f76;\\n}\\n.mat-badge {\\n position: relative;\\n}\\n.mat-badge-hidden .mat-badge-content {\\n display: none;\\n}\\n.mat-badge-disabled .mat-badge-content {\\n background: #b9b9b9;\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-badge-content {\\n position: absolute;\\n text-align: center;\\n display: inline-block;\\n border-radius: 50%;\\n transition: transform 200ms ease-in-out;\\n transform: scale(0.6);\\n overflow: hidden;\\n white-space: nowrap;\\n text-overflow: ellipsis;\\n pointer-events: none;\\n}\\n.ng-animate-disabled .mat-badge-content,\\n.mat-badge-content._mat-animation-noopable {\\n transition: none;\\n}\\n.mat-badge-content.mat-badge-active {\\n transform: none;\\n}\\n.mat-badge-small .mat-badge-content {\\n width: 16px;\\n height: 16px;\\n line-height: 16px;\\n}\\n.mat-badge-small.mat-badge-above .mat-badge-content {\\n top: -8px;\\n}\\n.mat-badge-small.mat-badge-below .mat-badge-content {\\n bottom: -8px;\\n}\\n.mat-badge-small.mat-badge-before .mat-badge-content {\\n left: -16px;\\n}\\n[dir=rtl] .mat-badge-small.mat-badge-before .mat-badge-content {\\n left: auto;\\n right: -16px;\\n}\\n.mat-badge-small.mat-badge-after .mat-badge-content {\\n right: -16px;\\n}\\n[dir=rtl] .mat-badge-small.mat-badge-after .mat-badge-content {\\n right: auto;\\n left: -16px;\\n}\\n.mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content {\\n left: -8px;\\n}\\n[dir=rtl] .mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content {\\n left: auto;\\n right: -8px;\\n}\\n.mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content {\\n right: -8px;\\n}\\n[dir=rtl] .mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content {\\n right: auto;\\n left: -8px;\\n}\\n.mat-badge-medium .mat-badge-content {\\n width: 22px;\\n height: 22px;\\n line-height: 22px;\\n}\\n.mat-badge-medium.mat-badge-above .mat-badge-content {\\n top: -11px;\\n}\\n.mat-badge-medium.mat-badge-below .mat-badge-content {\\n bottom: -11px;\\n}\\n.mat-badge-medium.mat-badge-before .mat-badge-content {\\n left: -22px;\\n}\\n[dir=rtl] .mat-badge-medium.mat-badge-before .mat-badge-content {\\n left: auto;\\n right: -22px;\\n}\\n.mat-badge-medium.mat-badge-after .mat-badge-content {\\n right: -22px;\\n}\\n[dir=rtl] .mat-badge-medium.mat-badge-after .mat-badge-content {\\n right: auto;\\n left: -22px;\\n}\\n.mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content {\\n left: -11px;\\n}\\n[dir=rtl] .mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content {\\n left: auto;\\n right: -11px;\\n}\\n.mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content {\\n right: -11px;\\n}\\n[dir=rtl] .mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content {\\n right: auto;\\n left: -11px;\\n}\\n.mat-badge-large .mat-badge-content {\\n width: 28px;\\n height: 28px;\\n line-height: 28px;\\n}\\n.mat-badge-large.mat-badge-above .mat-badge-content {\\n top: -14px;\\n}\\n.mat-badge-large.mat-badge-below .mat-badge-content {\\n bottom: -14px;\\n}\\n.mat-badge-large.mat-badge-before .mat-badge-content {\\n left: -28px;\\n}\\n[dir=rtl] .mat-badge-large.mat-badge-before .mat-badge-content {\\n left: auto;\\n right: -28px;\\n}\\n.mat-badge-large.mat-badge-after .mat-badge-content {\\n right: -28px;\\n}\\n[dir=rtl] .mat-badge-large.mat-badge-after .mat-badge-content {\\n right: auto;\\n left: -28px;\\n}\\n.mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content {\\n left: -14px;\\n}\\n[dir=rtl] .mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content {\\n left: auto;\\n right: -14px;\\n}\\n.mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content {\\n right: -14px;\\n}\\n[dir=rtl] .mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content {\\n right: auto;\\n left: -14px;\\n}\\n.mat-bottom-sheet-container {\\n box-shadow: 0px 8px 10px -5px rgba(0, 0, 0, 0.2), 0px 16px 24px 2px rgba(0, 0, 0, 0.14), 0px 6px 30px 5px rgba(0, 0, 0, 0.12);\\n background: white;\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-button, .mat-icon-button, .mat-stroked-button {\\n color: inherit;\\n background: transparent;\\n}\\n.mat-button.mat-primary, .mat-icon-button.mat-primary, .mat-stroked-button.mat-primary {\\n color: #4775f5;\\n}\\n.mat-button.mat-accent, .mat-icon-button.mat-accent, .mat-stroked-button.mat-accent {\\n color: #f7cc71;\\n}\\n.mat-button.mat-warn, .mat-icon-button.mat-warn, .mat-stroked-button.mat-warn {\\n color: #fc8f76;\\n}\\n.mat-button.mat-primary.mat-button-disabled, .mat-button.mat-accent.mat-button-disabled, .mat-button.mat-warn.mat-button-disabled, .mat-button.mat-button-disabled.mat-button-disabled, .mat-icon-button.mat-primary.mat-button-disabled, .mat-icon-button.mat-accent.mat-button-disabled, .mat-icon-button.mat-warn.mat-button-disabled, .mat-icon-button.mat-button-disabled.mat-button-disabled, .mat-stroked-button.mat-primary.mat-button-disabled, .mat-stroked-button.mat-accent.mat-button-disabled, .mat-stroked-button.mat-warn.mat-button-disabled, .mat-stroked-button.mat-button-disabled.mat-button-disabled {\\n color: rgba(0, 0, 0, 0.26);\\n}\\n.mat-button.mat-primary .mat-button-focus-overlay, .mat-icon-button.mat-primary .mat-button-focus-overlay, .mat-stroked-button.mat-primary .mat-button-focus-overlay {\\n background-color: #4775f5;\\n}\\n.mat-button.mat-accent .mat-button-focus-overlay, .mat-icon-button.mat-accent .mat-button-focus-overlay, .mat-stroked-button.mat-accent .mat-button-focus-overlay {\\n background-color: #f7cc71;\\n}\\n.mat-button.mat-warn .mat-button-focus-overlay, .mat-icon-button.mat-warn .mat-button-focus-overlay, .mat-stroked-button.mat-warn .mat-button-focus-overlay {\\n background-color: #fc8f76;\\n}\\n.mat-button.mat-button-disabled .mat-button-focus-overlay, .mat-icon-button.mat-button-disabled .mat-button-focus-overlay, .mat-stroked-button.mat-button-disabled .mat-button-focus-overlay {\\n background-color: transparent;\\n}\\n.mat-button .mat-ripple-element, .mat-icon-button .mat-ripple-element, .mat-stroked-button .mat-ripple-element {\\n opacity: 0.1;\\n background-color: currentColor;\\n}\\n.mat-button-focus-overlay {\\n background: black;\\n}\\n.mat-stroked-button:not(.mat-button-disabled) {\\n border-color: rgba(0, 0, 0, 0.12);\\n}\\n.mat-flat-button, .mat-raised-button, .mat-fab, .mat-mini-fab {\\n color: rgba(0, 0, 0, 0.87);\\n background-color: white;\\n}\\n.mat-flat-button.mat-primary, .mat-raised-button.mat-primary, .mat-fab.mat-primary, .mat-mini-fab.mat-primary {\\n color: white;\\n}\\n.mat-flat-button.mat-accent, .mat-raised-button.mat-accent, .mat-fab.mat-accent, .mat-mini-fab.mat-accent {\\n color: white;\\n}\\n.mat-flat-button.mat-warn, .mat-raised-button.mat-warn, .mat-fab.mat-warn, .mat-mini-fab.mat-warn {\\n color: white;\\n}\\n.mat-flat-button.mat-primary.mat-button-disabled, .mat-flat-button.mat-accent.mat-button-disabled, .mat-flat-button.mat-warn.mat-button-disabled, .mat-flat-button.mat-button-disabled.mat-button-disabled, .mat-raised-button.mat-primary.mat-button-disabled, .mat-raised-button.mat-accent.mat-button-disabled, .mat-raised-button.mat-warn.mat-button-disabled, .mat-raised-button.mat-button-disabled.mat-button-disabled, .mat-fab.mat-primary.mat-button-disabled, .mat-fab.mat-accent.mat-button-disabled, .mat-fab.mat-warn.mat-button-disabled, .mat-fab.mat-button-disabled.mat-button-disabled, .mat-mini-fab.mat-primary.mat-button-disabled, .mat-mini-fab.mat-accent.mat-button-disabled, .mat-mini-fab.mat-warn.mat-button-disabled, .mat-mini-fab.mat-button-disabled.mat-button-disabled {\\n color: rgba(0, 0, 0, 0.26);\\n}\\n.mat-flat-button.mat-primary, .mat-raised-button.mat-primary, .mat-fab.mat-primary, .mat-mini-fab.mat-primary {\\n background-color: #4775f5;\\n}\\n.mat-flat-button.mat-accent, .mat-raised-button.mat-accent, .mat-fab.mat-accent, .mat-mini-fab.mat-accent {\\n background-color: #f7cc71;\\n}\\n.mat-flat-button.mat-warn, .mat-raised-button.mat-warn, .mat-fab.mat-warn, .mat-mini-fab.mat-warn {\\n background-color: #fc8f76;\\n}\\n.mat-flat-button.mat-primary.mat-button-disabled, .mat-flat-button.mat-accent.mat-button-disabled, .mat-flat-button.mat-warn.mat-button-disabled, .mat-flat-button.mat-button-disabled.mat-button-disabled, .mat-raised-button.mat-primary.mat-button-disabled, .mat-raised-button.mat-accent.mat-button-disabled, .mat-raised-button.mat-warn.mat-button-disabled, .mat-raised-button.mat-button-disabled.mat-button-disabled, .mat-fab.mat-primary.mat-button-disabled, .mat-fab.mat-accent.mat-button-disabled, .mat-fab.mat-warn.mat-button-disabled, .mat-fab.mat-button-disabled.mat-button-disabled, .mat-mini-fab.mat-primary.mat-button-disabled, .mat-mini-fab.mat-accent.mat-button-disabled, .mat-mini-fab.mat-warn.mat-button-disabled, .mat-mini-fab.mat-button-disabled.mat-button-disabled {\\n background-color: rgba(0, 0, 0, 0.12);\\n}\\n.mat-flat-button.mat-primary .mat-ripple-element, .mat-raised-button.mat-primary .mat-ripple-element, .mat-fab.mat-primary .mat-ripple-element, .mat-mini-fab.mat-primary .mat-ripple-element {\\n background-color: rgba(255, 255, 255, 0.1);\\n}\\n.mat-flat-button.mat-accent .mat-ripple-element, .mat-raised-button.mat-accent .mat-ripple-element, .mat-fab.mat-accent .mat-ripple-element, .mat-mini-fab.mat-accent .mat-ripple-element {\\n background-color: rgba(255, 255, 255, 0.1);\\n}\\n.mat-flat-button.mat-warn .mat-ripple-element, .mat-raised-button.mat-warn .mat-ripple-element, .mat-fab.mat-warn .mat-ripple-element, .mat-mini-fab.mat-warn .mat-ripple-element {\\n background-color: rgba(255, 255, 255, 0.1);\\n}\\n.mat-stroked-button:not([class*=mat-elevation-z]), .mat-flat-button:not([class*=mat-elevation-z]) {\\n box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-raised-button:not([class*=mat-elevation-z]) {\\n box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-raised-button:not(.mat-button-disabled):active:not([class*=mat-elevation-z]) {\\n box-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.2), 0px 8px 10px 1px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0, 0, 0, 0.12);\\n}\\n.mat-raised-button.mat-button-disabled:not([class*=mat-elevation-z]) {\\n box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-fab:not([class*=mat-elevation-z]), .mat-mini-fab:not([class*=mat-elevation-z]) {\\n box-shadow: 0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-fab:not(.mat-button-disabled):active:not([class*=mat-elevation-z]), .mat-mini-fab:not(.mat-button-disabled):active:not([class*=mat-elevation-z]) {\\n box-shadow: 0px 7px 8px -4px rgba(0, 0, 0, 0.2), 0px 12px 17px 2px rgba(0, 0, 0, 0.14), 0px 5px 22px 4px rgba(0, 0, 0, 0.12);\\n}\\n.mat-fab.mat-button-disabled:not([class*=mat-elevation-z]), .mat-mini-fab.mat-button-disabled:not([class*=mat-elevation-z]) {\\n box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-button-toggle-standalone,\\n.mat-button-toggle-group {\\n box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-button-toggle-standalone.mat-button-toggle-appearance-standard,\\n.mat-button-toggle-group-appearance-standard {\\n box-shadow: none;\\n}\\n.mat-button-toggle {\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-button-toggle .mat-button-toggle-focus-overlay {\\n background-color: rgba(0, 0, 0, 0.12);\\n}\\n.mat-button-toggle-appearance-standard {\\n color: rgba(0, 0, 0, 0.87);\\n background: white;\\n}\\n.mat-button-toggle-appearance-standard .mat-button-toggle-focus-overlay {\\n background-color: black;\\n}\\n.mat-button-toggle-group-appearance-standard .mat-button-toggle + .mat-button-toggle {\\n border-left: solid 1px rgba(0, 0, 0, 0.12);\\n}\\n[dir=rtl] .mat-button-toggle-group-appearance-standard .mat-button-toggle + .mat-button-toggle {\\n border-left: none;\\n border-right: solid 1px rgba(0, 0, 0, 0.12);\\n}\\n.mat-button-toggle-group-appearance-standard.mat-button-toggle-vertical .mat-button-toggle + .mat-button-toggle {\\n border-left: none;\\n border-right: none;\\n border-top: solid 1px rgba(0, 0, 0, 0.12);\\n}\\n.mat-button-toggle-checked {\\n background-color: #e0e0e0;\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-button-toggle-checked.mat-button-toggle-appearance-standard {\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-button-toggle-disabled {\\n color: rgba(0, 0, 0, 0.26);\\n background-color: #eeeeee;\\n}\\n.mat-button-toggle-disabled.mat-button-toggle-appearance-standard {\\n background: white;\\n}\\n.mat-button-toggle-disabled.mat-button-toggle-checked {\\n background-color: #bdbdbd;\\n}\\n.mat-button-toggle-standalone.mat-button-toggle-appearance-standard,\\n.mat-button-toggle-group-appearance-standard {\\n border: solid 1px rgba(0, 0, 0, 0.12);\\n}\\n.mat-button-toggle-appearance-standard .mat-button-toggle-label-content {\\n line-height: 48px;\\n}\\n.mat-card {\\n background: white;\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-card:not([class*=mat-elevation-z]) {\\n box-shadow: 0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-card.mat-card-flat:not([class*=mat-elevation-z]) {\\n box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-card-subtitle {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-checkbox-frame {\\n border-color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-checkbox-checkmark {\\n fill: #fafafa;\\n}\\n.mat-checkbox-checkmark-path {\\n stroke: #fafafa !important;\\n}\\n.mat-checkbox-mixedmark {\\n background-color: #fafafa;\\n}\\n.mat-checkbox-indeterminate.mat-primary .mat-checkbox-background, .mat-checkbox-checked.mat-primary .mat-checkbox-background {\\n background-color: #4775f5;\\n}\\n.mat-checkbox-indeterminate.mat-accent .mat-checkbox-background, .mat-checkbox-checked.mat-accent .mat-checkbox-background {\\n background-color: #f7cc71;\\n}\\n.mat-checkbox-indeterminate.mat-warn .mat-checkbox-background, .mat-checkbox-checked.mat-warn .mat-checkbox-background {\\n background-color: #fc8f76;\\n}\\n.mat-checkbox-disabled.mat-checkbox-checked .mat-checkbox-background, .mat-checkbox-disabled.mat-checkbox-indeterminate .mat-checkbox-background {\\n background-color: #b0b0b0;\\n}\\n.mat-checkbox-disabled:not(.mat-checkbox-checked) .mat-checkbox-frame {\\n border-color: #b0b0b0;\\n}\\n.mat-checkbox-disabled .mat-checkbox-label {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-checkbox .mat-ripple-element {\\n background-color: black;\\n}\\n.mat-checkbox-checked:not(.mat-checkbox-disabled).mat-primary .mat-ripple-element,\\n.mat-checkbox:active:not(.mat-checkbox-disabled).mat-primary .mat-ripple-element {\\n background: #4775f5;\\n}\\n.mat-checkbox-checked:not(.mat-checkbox-disabled).mat-accent .mat-ripple-element,\\n.mat-checkbox:active:not(.mat-checkbox-disabled).mat-accent .mat-ripple-element {\\n background: #f7cc71;\\n}\\n.mat-checkbox-checked:not(.mat-checkbox-disabled).mat-warn .mat-ripple-element,\\n.mat-checkbox:active:not(.mat-checkbox-disabled).mat-warn .mat-ripple-element {\\n background: #fc8f76;\\n}\\n.mat-chip.mat-standard-chip {\\n background-color: #e0e0e0;\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-chip.mat-standard-chip .mat-chip-remove {\\n color: rgba(0, 0, 0, 0.87);\\n opacity: 0.4;\\n}\\n.mat-chip.mat-standard-chip:not(.mat-chip-disabled):active {\\n box-shadow: 0px 3px 3px -2px rgba(0, 0, 0, 0.2), 0px 3px 4px 0px rgba(0, 0, 0, 0.14), 0px 1px 8px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-chip.mat-standard-chip:not(.mat-chip-disabled) .mat-chip-remove:hover {\\n opacity: 0.54;\\n}\\n.mat-chip.mat-standard-chip.mat-chip-disabled {\\n opacity: 0.4;\\n}\\n.mat-chip.mat-standard-chip::after {\\n background: black;\\n}\\n.mat-chip.mat-standard-chip.mat-chip-selected.mat-primary {\\n background-color: #4775f5;\\n color: white;\\n}\\n.mat-chip.mat-standard-chip.mat-chip-selected.mat-primary .mat-chip-remove {\\n color: white;\\n opacity: 0.4;\\n}\\n.mat-chip.mat-standard-chip.mat-chip-selected.mat-primary .mat-ripple-element {\\n background-color: rgba(255, 255, 255, 0.1);\\n}\\n.mat-chip.mat-standard-chip.mat-chip-selected.mat-warn {\\n background-color: #fc8f76;\\n color: white;\\n}\\n.mat-chip.mat-standard-chip.mat-chip-selected.mat-warn .mat-chip-remove {\\n color: white;\\n opacity: 0.4;\\n}\\n.mat-chip.mat-standard-chip.mat-chip-selected.mat-warn .mat-ripple-element {\\n background-color: rgba(255, 255, 255, 0.1);\\n}\\n.mat-chip.mat-standard-chip.mat-chip-selected.mat-accent {\\n background-color: #f7cc71;\\n color: white;\\n}\\n.mat-chip.mat-standard-chip.mat-chip-selected.mat-accent .mat-chip-remove {\\n color: white;\\n opacity: 0.4;\\n}\\n.mat-chip.mat-standard-chip.mat-chip-selected.mat-accent .mat-ripple-element {\\n background-color: rgba(255, 255, 255, 0.1);\\n}\\n.mat-table {\\n background: white;\\n}\\n.mat-table thead, .mat-table tbody, .mat-table tfoot,\\nmat-header-row, mat-row, mat-footer-row,\\n[mat-header-row], [mat-row], [mat-footer-row],\\n.mat-table-sticky {\\n background: inherit;\\n}\\nmat-row, mat-header-row, mat-footer-row,\\nth.mat-header-cell, td.mat-cell, td.mat-footer-cell {\\n border-bottom-color: rgba(0, 0, 0, 0.12);\\n}\\n.mat-header-cell {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-cell, .mat-footer-cell {\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-calendar-arrow {\\n border-top-color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-datepicker-toggle,\\n.mat-datepicker-content .mat-calendar-next-button,\\n.mat-datepicker-content .mat-calendar-previous-button {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-calendar-table-header {\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-calendar-table-header-divider::after {\\n background: rgba(0, 0, 0, 0.12);\\n}\\n.mat-calendar-body-label {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-calendar-body-cell-content,\\n.mat-date-range-input-separator {\\n color: rgba(0, 0, 0, 0.87);\\n border-color: transparent;\\n}\\n.mat-calendar-body-disabled > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical) {\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-form-field-disabled .mat-date-range-input-separator {\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-calendar-body-in-preview {\\n color: rgba(0, 0, 0, 0.24);\\n}\\n.mat-calendar-body-today:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical) {\\n border-color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-calendar-body-disabled > .mat-calendar-body-today:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical) {\\n border-color: rgba(0, 0, 0, 0.18);\\n}\\n.mat-calendar-body-in-range::before {\\n background: rgba(71, 117, 245, 0.2);\\n}\\n.mat-calendar-body-comparison-identical,\\n.mat-calendar-body-in-comparison-range::before {\\n background: rgba(249, 171, 0, 0.2);\\n}\\n.mat-calendar-body-comparison-bridge-start::before,\\n[dir=rtl] .mat-calendar-body-comparison-bridge-end::before {\\n background: linear-gradient(to right, rgba(71, 117, 245, 0.2) 50%, rgba(249, 171, 0, 0.2) 50%);\\n}\\n.mat-calendar-body-comparison-bridge-end::before,\\n[dir=rtl] .mat-calendar-body-comparison-bridge-start::before {\\n background: linear-gradient(to left, rgba(71, 117, 245, 0.2) 50%, rgba(249, 171, 0, 0.2) 50%);\\n}\\n.mat-calendar-body-in-range > .mat-calendar-body-comparison-identical,\\n.mat-calendar-body-in-comparison-range.mat-calendar-body-in-range::after {\\n background: #a8dab5;\\n}\\n.mat-calendar-body-comparison-identical.mat-calendar-body-selected,\\n.mat-calendar-body-in-comparison-range > .mat-calendar-body-selected {\\n background: #46a35e;\\n}\\n.mat-calendar-body-selected {\\n background-color: #4775f5;\\n color: white;\\n}\\n.mat-calendar-body-disabled > .mat-calendar-body-selected {\\n background-color: rgba(71, 117, 245, 0.4);\\n}\\n.mat-calendar-body-today.mat-calendar-body-selected {\\n box-shadow: inset 0 0 0 1px white;\\n}\\n.mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),\\n.cdk-keyboard-focused .mat-calendar-body-active > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),\\n.cdk-program-focused .mat-calendar-body-active > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical) {\\n background-color: rgba(71, 117, 245, 0.3);\\n}\\n.mat-datepicker-content {\\n box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12);\\n background-color: white;\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-datepicker-content.mat-accent .mat-calendar-body-in-range::before {\\n background: rgba(247, 204, 113, 0.2);\\n}\\n.mat-datepicker-content.mat-accent .mat-calendar-body-comparison-identical,\\n.mat-datepicker-content.mat-accent .mat-calendar-body-in-comparison-range::before {\\n background: rgba(249, 171, 0, 0.2);\\n}\\n.mat-datepicker-content.mat-accent .mat-calendar-body-comparison-bridge-start::before,\\n.mat-datepicker-content.mat-accent [dir=rtl] .mat-calendar-body-comparison-bridge-end::before {\\n background: linear-gradient(to right, rgba(247, 204, 113, 0.2) 50%, rgba(249, 171, 0, 0.2) 50%);\\n}\\n.mat-datepicker-content.mat-accent .mat-calendar-body-comparison-bridge-end::before,\\n.mat-datepicker-content.mat-accent [dir=rtl] .mat-calendar-body-comparison-bridge-start::before {\\n background: linear-gradient(to left, rgba(247, 204, 113, 0.2) 50%, rgba(249, 171, 0, 0.2) 50%);\\n}\\n.mat-datepicker-content.mat-accent .mat-calendar-body-in-range > .mat-calendar-body-comparison-identical,\\n.mat-datepicker-content.mat-accent .mat-calendar-body-in-comparison-range.mat-calendar-body-in-range::after {\\n background: #a8dab5;\\n}\\n.mat-datepicker-content.mat-accent .mat-calendar-body-comparison-identical.mat-calendar-body-selected,\\n.mat-datepicker-content.mat-accent .mat-calendar-body-in-comparison-range > .mat-calendar-body-selected {\\n background: #46a35e;\\n}\\n.mat-datepicker-content.mat-accent .mat-calendar-body-selected {\\n background-color: #f7cc71;\\n color: white;\\n}\\n.mat-datepicker-content.mat-accent .mat-calendar-body-disabled > .mat-calendar-body-selected {\\n background-color: rgba(247, 204, 113, 0.4);\\n}\\n.mat-datepicker-content.mat-accent .mat-calendar-body-today.mat-calendar-body-selected {\\n box-shadow: inset 0 0 0 1px white;\\n}\\n.mat-datepicker-content.mat-accent .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),\\n.mat-datepicker-content.mat-accent .cdk-keyboard-focused .mat-calendar-body-active > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),\\n.mat-datepicker-content.mat-accent .cdk-program-focused .mat-calendar-body-active > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical) {\\n background-color: rgba(247, 204, 113, 0.3);\\n}\\n.mat-datepicker-content.mat-warn .mat-calendar-body-in-range::before {\\n background: rgba(252, 143, 118, 0.2);\\n}\\n.mat-datepicker-content.mat-warn .mat-calendar-body-comparison-identical,\\n.mat-datepicker-content.mat-warn .mat-calendar-body-in-comparison-range::before {\\n background: rgba(249, 171, 0, 0.2);\\n}\\n.mat-datepicker-content.mat-warn .mat-calendar-body-comparison-bridge-start::before,\\n.mat-datepicker-content.mat-warn [dir=rtl] .mat-calendar-body-comparison-bridge-end::before {\\n background: linear-gradient(to right, rgba(252, 143, 118, 0.2) 50%, rgba(249, 171, 0, 0.2) 50%);\\n}\\n.mat-datepicker-content.mat-warn .mat-calendar-body-comparison-bridge-end::before,\\n.mat-datepicker-content.mat-warn [dir=rtl] .mat-calendar-body-comparison-bridge-start::before {\\n background: linear-gradient(to left, rgba(252, 143, 118, 0.2) 50%, rgba(249, 171, 0, 0.2) 50%);\\n}\\n.mat-datepicker-content.mat-warn .mat-calendar-body-in-range > .mat-calendar-body-comparison-identical,\\n.mat-datepicker-content.mat-warn .mat-calendar-body-in-comparison-range.mat-calendar-body-in-range::after {\\n background: #a8dab5;\\n}\\n.mat-datepicker-content.mat-warn .mat-calendar-body-comparison-identical.mat-calendar-body-selected,\\n.mat-datepicker-content.mat-warn .mat-calendar-body-in-comparison-range > .mat-calendar-body-selected {\\n background: #46a35e;\\n}\\n.mat-datepicker-content.mat-warn .mat-calendar-body-selected {\\n background-color: #fc8f76;\\n color: white;\\n}\\n.mat-datepicker-content.mat-warn .mat-calendar-body-disabled > .mat-calendar-body-selected {\\n background-color: rgba(252, 143, 118, 0.4);\\n}\\n.mat-datepicker-content.mat-warn .mat-calendar-body-today.mat-calendar-body-selected {\\n box-shadow: inset 0 0 0 1px white;\\n}\\n.mat-datepicker-content.mat-warn .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),\\n.mat-datepicker-content.mat-warn .cdk-keyboard-focused .mat-calendar-body-active > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),\\n.mat-datepicker-content.mat-warn .cdk-program-focused .mat-calendar-body-active > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical) {\\n background-color: rgba(252, 143, 118, 0.3);\\n}\\n.mat-datepicker-content-touch {\\n box-shadow: 0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 9px 46px 8px rgba(0, 0, 0, 0.12);\\n}\\n.mat-datepicker-toggle-active {\\n color: #4775f5;\\n}\\n.mat-datepicker-toggle-active.mat-accent {\\n color: #f7cc71;\\n}\\n.mat-datepicker-toggle-active.mat-warn {\\n color: #fc8f76;\\n}\\n.mat-date-range-input-inner[disabled] {\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-dialog-container {\\n box-shadow: 0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 9px 46px 8px rgba(0, 0, 0, 0.12);\\n background: white;\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-divider {\\n border-top-color: rgba(0, 0, 0, 0.12);\\n}\\n.mat-divider-vertical {\\n border-right-color: rgba(0, 0, 0, 0.12);\\n}\\n.mat-expansion-panel {\\n background: white;\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-expansion-panel:not([class*=mat-elevation-z]) {\\n box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-action-row {\\n border-top-color: rgba(0, 0, 0, 0.12);\\n}\\n.mat-expansion-panel .mat-expansion-panel-header.cdk-keyboard-focused:not([aria-disabled=true]), .mat-expansion-panel .mat-expansion-panel-header.cdk-program-focused:not([aria-disabled=true]), .mat-expansion-panel:not(.mat-expanded) .mat-expansion-panel-header:hover:not([aria-disabled=true]) {\\n background: rgba(0, 0, 0, 0.04);\\n}\\n@media (hover: none) {\\n .mat-expansion-panel:not(.mat-expanded):not([aria-disabled=true]) .mat-expansion-panel-header:hover {\\n background: white;\\n }\\n}\\n.mat-expansion-panel-header-title {\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-expansion-panel-header-description,\\n.mat-expansion-indicator::after {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-expansion-panel-header[aria-disabled=true] {\\n color: rgba(0, 0, 0, 0.26);\\n}\\n.mat-expansion-panel-header[aria-disabled=true] .mat-expansion-panel-header-title,\\n.mat-expansion-panel-header[aria-disabled=true] .mat-expansion-panel-header-description {\\n color: inherit;\\n}\\n.mat-expansion-panel-header {\\n height: 48px;\\n}\\n.mat-expansion-panel-header.mat-expanded {\\n height: 64px;\\n}\\n.mat-form-field-label {\\n color: rgba(0, 0, 0, 0.6);\\n}\\n.mat-hint {\\n color: rgba(0, 0, 0, 0.6);\\n}\\n.mat-form-field.mat-focused .mat-form-field-label {\\n color: #4775f5;\\n}\\n.mat-form-field.mat-focused .mat-form-field-label.mat-accent {\\n color: #f7cc71;\\n}\\n.mat-form-field.mat-focused .mat-form-field-label.mat-warn {\\n color: #fc8f76;\\n}\\n.mat-focused .mat-form-field-required-marker {\\n color: #f7cc71;\\n}\\n.mat-form-field-ripple {\\n background-color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-form-field.mat-focused .mat-form-field-ripple {\\n background-color: #4775f5;\\n}\\n.mat-form-field.mat-focused .mat-form-field-ripple.mat-accent {\\n background-color: #f7cc71;\\n}\\n.mat-form-field.mat-focused .mat-form-field-ripple.mat-warn {\\n background-color: #fc8f76;\\n}\\n.mat-form-field-type-mat-native-select.mat-focused:not(.mat-form-field-invalid) .mat-form-field-infix::after {\\n color: #4775f5;\\n}\\n.mat-form-field-type-mat-native-select.mat-focused:not(.mat-form-field-invalid).mat-accent .mat-form-field-infix::after {\\n color: #f7cc71;\\n}\\n.mat-form-field-type-mat-native-select.mat-focused:not(.mat-form-field-invalid).mat-warn .mat-form-field-infix::after {\\n color: #fc8f76;\\n}\\n.mat-form-field.mat-form-field-invalid .mat-form-field-label {\\n color: #fc8f76;\\n}\\n.mat-form-field.mat-form-field-invalid .mat-form-field-label.mat-accent,\\n.mat-form-field.mat-form-field-invalid .mat-form-field-label .mat-form-field-required-marker {\\n color: #fc8f76;\\n}\\n.mat-form-field.mat-form-field-invalid .mat-form-field-ripple,\\n.mat-form-field.mat-form-field-invalid .mat-form-field-ripple.mat-accent {\\n background-color: #fc8f76;\\n}\\n.mat-error {\\n color: #fc8f76;\\n}\\n.mat-form-field-appearance-legacy .mat-form-field-label {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-form-field-appearance-legacy .mat-hint {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-form-field-appearance-legacy .mat-form-field-underline {\\n background-color: rgba(0, 0, 0, 0.42);\\n}\\n.mat-form-field-appearance-legacy.mat-form-field-disabled .mat-form-field-underline {\\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.42) 0%, rgba(0, 0, 0, 0.42) 33%, transparent 0%);\\n background-size: 4px 100%;\\n background-repeat: repeat-x;\\n}\\n.mat-form-field-appearance-standard .mat-form-field-underline {\\n background-color: rgba(0, 0, 0, 0.42);\\n}\\n.mat-form-field-appearance-standard.mat-form-field-disabled .mat-form-field-underline {\\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.42) 0%, rgba(0, 0, 0, 0.42) 33%, transparent 0%);\\n background-size: 4px 100%;\\n background-repeat: repeat-x;\\n}\\n.mat-form-field-appearance-fill .mat-form-field-flex {\\n background-color: rgba(0, 0, 0, 0.04);\\n}\\n.mat-form-field-appearance-fill.mat-form-field-disabled .mat-form-field-flex {\\n background-color: rgba(0, 0, 0, 0.02);\\n}\\n.mat-form-field-appearance-fill .mat-form-field-underline::before {\\n background-color: rgba(0, 0, 0, 0.42);\\n}\\n.mat-form-field-appearance-fill.mat-form-field-disabled .mat-form-field-label {\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-form-field-appearance-fill.mat-form-field-disabled .mat-form-field-underline::before {\\n background-color: transparent;\\n}\\n.mat-form-field-appearance-outline .mat-form-field-outline {\\n color: rgba(0, 0, 0, 0.12);\\n}\\n.mat-form-field-appearance-outline .mat-form-field-outline-thick {\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-form-field-appearance-outline.mat-focused .mat-form-field-outline-thick {\\n color: #4775f5;\\n}\\n.mat-form-field-appearance-outline.mat-focused.mat-accent .mat-form-field-outline-thick {\\n color: #f7cc71;\\n}\\n.mat-form-field-appearance-outline.mat-focused.mat-warn .mat-form-field-outline-thick {\\n color: #fc8f76;\\n}\\n.mat-form-field-appearance-outline.mat-form-field-invalid.mat-form-field-invalid .mat-form-field-outline-thick {\\n color: #fc8f76;\\n}\\n.mat-form-field-appearance-outline.mat-form-field-disabled .mat-form-field-label {\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-form-field-appearance-outline.mat-form-field-disabled .mat-form-field-outline {\\n color: rgba(0, 0, 0, 0.06);\\n}\\n.mat-icon.mat-primary {\\n color: #4775f5;\\n}\\n.mat-icon.mat-accent {\\n color: #f7cc71;\\n}\\n.mat-icon.mat-warn {\\n color: #fc8f76;\\n}\\n.mat-form-field-type-mat-native-select .mat-form-field-infix::after {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-input-element:disabled,\\n.mat-form-field-type-mat-native-select.mat-form-field-disabled .mat-form-field-infix::after {\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-input-element {\\n caret-color: #4775f5;\\n}\\n.mat-input-element:-ms-input-placeholder {\\n color: rgba(0, 0, 0, 0.42);\\n}\\n.mat-input-element::placeholder {\\n color: rgba(0, 0, 0, 0.42);\\n}\\n.mat-input-element::-moz-placeholder {\\n color: rgba(0, 0, 0, 0.42);\\n}\\n.mat-input-element::-webkit-input-placeholder {\\n color: rgba(0, 0, 0, 0.42);\\n}\\n.mat-input-element:-ms-input-placeholder {\\n color: rgba(0, 0, 0, 0.42);\\n}\\n.mat-form-field.mat-accent .mat-input-element {\\n caret-color: #f7cc71;\\n}\\n.mat-form-field.mat-warn .mat-input-element,\\n.mat-form-field-invalid .mat-input-element {\\n caret-color: #fc8f76;\\n}\\n.mat-form-field-type-mat-native-select.mat-form-field-invalid .mat-form-field-infix::after {\\n color: #fc8f76;\\n}\\n.mat-list-base .mat-list-item {\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-list-base .mat-list-option {\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-list-base .mat-subheader {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-list-item-disabled {\\n background-color: #eeeeee;\\n}\\n.mat-list-option:hover, .mat-list-option:focus,\\n.mat-nav-list .mat-list-item:hover,\\n.mat-nav-list .mat-list-item:focus,\\n.mat-action-list .mat-list-item:hover,\\n.mat-action-list .mat-list-item:focus {\\n background: rgba(0, 0, 0, 0.04);\\n}\\n.mat-list-single-selected-option, .mat-list-single-selected-option:hover, .mat-list-single-selected-option:focus {\\n background: rgba(0, 0, 0, 0.12);\\n}\\n.mat-menu-panel {\\n background: white;\\n}\\n.mat-menu-panel:not([class*=mat-elevation-z]) {\\n box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-menu-item {\\n background: transparent;\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-menu-item[disabled], .mat-menu-item[disabled]::after,\\n.mat-menu-item[disabled] .mat-icon-no-color {\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-menu-item .mat-icon-no-color,\\n.mat-menu-item-submenu-trigger::after {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-menu-item:hover:not([disabled]),\\n.mat-menu-item.cdk-program-focused:not([disabled]),\\n.mat-menu-item.cdk-keyboard-focused:not([disabled]),\\n.mat-menu-item-highlighted:not([disabled]) {\\n background: rgba(0, 0, 0, 0.04);\\n}\\n.mat-paginator {\\n background: white;\\n}\\n.mat-paginator,\\n.mat-paginator-page-size .mat-select-trigger {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-paginator-decrement,\\n.mat-paginator-increment {\\n border-top: 2px solid rgba(0, 0, 0, 0.54);\\n border-right: 2px solid rgba(0, 0, 0, 0.54);\\n}\\n.mat-paginator-first,\\n.mat-paginator-last {\\n border-top: 2px solid rgba(0, 0, 0, 0.54);\\n}\\n.mat-icon-button[disabled] .mat-paginator-decrement,\\n.mat-icon-button[disabled] .mat-paginator-increment,\\n.mat-icon-button[disabled] .mat-paginator-first,\\n.mat-icon-button[disabled] .mat-paginator-last {\\n border-color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-paginator-container {\\n min-height: 56px;\\n}\\n.mat-progress-bar-background {\\n fill: #cdd9f9;\\n}\\n.mat-progress-bar-buffer {\\n background-color: #cdd9f9;\\n}\\n.mat-progress-bar-fill::after {\\n background-color: #4775f5;\\n}\\n.mat-progress-bar.mat-accent .mat-progress-bar-background {\\n fill: #f9efd8;\\n}\\n.mat-progress-bar.mat-accent .mat-progress-bar-buffer {\\n background-color: #f9efd8;\\n}\\n.mat-progress-bar.mat-accent .mat-progress-bar-fill::after {\\n background-color: #f7cc71;\\n}\\n.mat-progress-bar.mat-warn .mat-progress-bar-background {\\n fill: #fbdfd9;\\n}\\n.mat-progress-bar.mat-warn .mat-progress-bar-buffer {\\n background-color: #fbdfd9;\\n}\\n.mat-progress-bar.mat-warn .mat-progress-bar-fill::after {\\n background-color: #fc8f76;\\n}\\n.mat-progress-spinner circle, .mat-spinner circle {\\n stroke: #4775f5;\\n}\\n.mat-progress-spinner.mat-accent circle, .mat-spinner.mat-accent circle {\\n stroke: #f7cc71;\\n}\\n.mat-progress-spinner.mat-warn circle, .mat-spinner.mat-warn circle {\\n stroke: #fc8f76;\\n}\\n.mat-radio-outer-circle {\\n border-color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-radio-button.mat-primary.mat-radio-checked .mat-radio-outer-circle {\\n border-color: #4775f5;\\n}\\n.mat-radio-button.mat-primary .mat-radio-inner-circle,\\n.mat-radio-button.mat-primary .mat-radio-ripple .mat-ripple-element:not(.mat-radio-persistent-ripple), .mat-radio-button.mat-primary.mat-radio-checked .mat-radio-persistent-ripple, .mat-radio-button.mat-primary:active .mat-radio-persistent-ripple {\\n background-color: #4775f5;\\n}\\n.mat-radio-button.mat-accent.mat-radio-checked .mat-radio-outer-circle {\\n border-color: #f7cc71;\\n}\\n.mat-radio-button.mat-accent .mat-radio-inner-circle,\\n.mat-radio-button.mat-accent .mat-radio-ripple .mat-ripple-element:not(.mat-radio-persistent-ripple), .mat-radio-button.mat-accent.mat-radio-checked .mat-radio-persistent-ripple, .mat-radio-button.mat-accent:active .mat-radio-persistent-ripple {\\n background-color: #f7cc71;\\n}\\n.mat-radio-button.mat-warn.mat-radio-checked .mat-radio-outer-circle {\\n border-color: #fc8f76;\\n}\\n.mat-radio-button.mat-warn .mat-radio-inner-circle,\\n.mat-radio-button.mat-warn .mat-radio-ripple .mat-ripple-element:not(.mat-radio-persistent-ripple), .mat-radio-button.mat-warn.mat-radio-checked .mat-radio-persistent-ripple, .mat-radio-button.mat-warn:active .mat-radio-persistent-ripple {\\n background-color: #fc8f76;\\n}\\n.mat-radio-button.mat-radio-disabled.mat-radio-checked .mat-radio-outer-circle,\\n.mat-radio-button.mat-radio-disabled .mat-radio-outer-circle {\\n border-color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-radio-button.mat-radio-disabled .mat-radio-ripple .mat-ripple-element,\\n.mat-radio-button.mat-radio-disabled .mat-radio-inner-circle {\\n background-color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-radio-button.mat-radio-disabled .mat-radio-label-content {\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-radio-button .mat-ripple-element {\\n background-color: black;\\n}\\n.mat-select-value {\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-select-placeholder {\\n color: rgba(0, 0, 0, 0.42);\\n}\\n.mat-select-disabled .mat-select-value {\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-select-arrow {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-select-panel {\\n background: white;\\n}\\n.mat-select-panel:not([class*=mat-elevation-z]) {\\n box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-select-panel .mat-option.mat-selected:not(.mat-option-multiple) {\\n background: rgba(0, 0, 0, 0.12);\\n}\\n.mat-form-field.mat-focused.mat-primary .mat-select-arrow {\\n color: #4775f5;\\n}\\n.mat-form-field.mat-focused.mat-accent .mat-select-arrow {\\n color: #f7cc71;\\n}\\n.mat-form-field.mat-focused.mat-warn .mat-select-arrow {\\n color: #fc8f76;\\n}\\n.mat-form-field .mat-select.mat-select-invalid .mat-select-arrow {\\n color: #fc8f76;\\n}\\n.mat-form-field .mat-select.mat-select-disabled .mat-select-arrow {\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-drawer-container {\\n background-color: #fafafa;\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-drawer {\\n background-color: white;\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-drawer.mat-drawer-push {\\n background-color: white;\\n}\\n.mat-drawer:not(.mat-drawer-side) {\\n box-shadow: 0px 8px 10px -5px rgba(0, 0, 0, 0.2), 0px 16px 24px 2px rgba(0, 0, 0, 0.14), 0px 6px 30px 5px rgba(0, 0, 0, 0.12);\\n}\\n.mat-drawer-side {\\n border-right: solid 1px rgba(0, 0, 0, 0.12);\\n}\\n.mat-drawer-side.mat-drawer-end {\\n border-left: solid 1px rgba(0, 0, 0, 0.12);\\n border-right: none;\\n}\\n[dir=rtl] .mat-drawer-side {\\n border-left: solid 1px rgba(0, 0, 0, 0.12);\\n border-right: none;\\n}\\n[dir=rtl] .mat-drawer-side.mat-drawer-end {\\n border-left: none;\\n border-right: solid 1px rgba(0, 0, 0, 0.12);\\n}\\n.mat-drawer-backdrop.mat-drawer-shown {\\n background-color: rgba(0, 0, 0, 0.6);\\n}\\n.mat-slide-toggle.mat-checked .mat-slide-toggle-thumb {\\n background-color: #f7cc71;\\n}\\n.mat-slide-toggle.mat-checked .mat-slide-toggle-bar {\\n background-color: rgba(247, 204, 113, 0.54);\\n}\\n.mat-slide-toggle.mat-checked .mat-ripple-element {\\n background-color: #f7cc71;\\n}\\n.mat-slide-toggle.mat-primary.mat-checked .mat-slide-toggle-thumb {\\n background-color: #4775f5;\\n}\\n.mat-slide-toggle.mat-primary.mat-checked .mat-slide-toggle-bar {\\n background-color: rgba(71, 117, 245, 0.54);\\n}\\n.mat-slide-toggle.mat-primary.mat-checked .mat-ripple-element {\\n background-color: #4775f5;\\n}\\n.mat-slide-toggle.mat-warn.mat-checked .mat-slide-toggle-thumb {\\n background-color: #fc8f76;\\n}\\n.mat-slide-toggle.mat-warn.mat-checked .mat-slide-toggle-bar {\\n background-color: rgba(252, 143, 118, 0.54);\\n}\\n.mat-slide-toggle.mat-warn.mat-checked .mat-ripple-element {\\n background-color: #fc8f76;\\n}\\n.mat-slide-toggle:not(.mat-checked) .mat-ripple-element {\\n background-color: black;\\n}\\n.mat-slide-toggle-thumb {\\n box-shadow: 0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12);\\n background-color: #fafafa;\\n}\\n.mat-slide-toggle-bar {\\n background-color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-slider-track-background {\\n background-color: rgba(0, 0, 0, 0.26);\\n}\\n.mat-primary .mat-slider-track-fill,\\n.mat-primary .mat-slider-thumb,\\n.mat-primary .mat-slider-thumb-label {\\n background-color: #4775f5;\\n}\\n.mat-primary .mat-slider-thumb-label-text {\\n color: white;\\n}\\n.mat-primary .mat-slider-focus-ring {\\n background-color: rgba(71, 117, 245, 0.2);\\n}\\n.mat-accent .mat-slider-track-fill,\\n.mat-accent .mat-slider-thumb,\\n.mat-accent .mat-slider-thumb-label {\\n background-color: #f7cc71;\\n}\\n.mat-accent .mat-slider-thumb-label-text {\\n color: white;\\n}\\n.mat-accent .mat-slider-focus-ring {\\n background-color: rgba(247, 204, 113, 0.2);\\n}\\n.mat-warn .mat-slider-track-fill,\\n.mat-warn .mat-slider-thumb,\\n.mat-warn .mat-slider-thumb-label {\\n background-color: #fc8f76;\\n}\\n.mat-warn .mat-slider-thumb-label-text {\\n color: white;\\n}\\n.mat-warn .mat-slider-focus-ring {\\n background-color: rgba(252, 143, 118, 0.2);\\n}\\n.mat-slider:hover .mat-slider-track-background,\\n.cdk-focused .mat-slider-track-background {\\n background-color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-slider-disabled .mat-slider-track-background,\\n.mat-slider-disabled .mat-slider-track-fill,\\n.mat-slider-disabled .mat-slider-thumb {\\n background-color: rgba(0, 0, 0, 0.26);\\n}\\n.mat-slider-disabled:hover .mat-slider-track-background {\\n background-color: rgba(0, 0, 0, 0.26);\\n}\\n.mat-slider-min-value .mat-slider-focus-ring {\\n background-color: rgba(0, 0, 0, 0.12);\\n}\\n.mat-slider-min-value.mat-slider-thumb-label-showing .mat-slider-thumb,\\n.mat-slider-min-value.mat-slider-thumb-label-showing .mat-slider-thumb-label {\\n background-color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-slider-min-value.mat-slider-thumb-label-showing.cdk-focused .mat-slider-thumb,\\n.mat-slider-min-value.mat-slider-thumb-label-showing.cdk-focused .mat-slider-thumb-label {\\n background-color: rgba(0, 0, 0, 0.26);\\n}\\n.mat-slider-min-value:not(.mat-slider-thumb-label-showing) .mat-slider-thumb {\\n border-color: rgba(0, 0, 0, 0.26);\\n background-color: transparent;\\n}\\n.mat-slider-min-value:not(.mat-slider-thumb-label-showing):hover .mat-slider-thumb, .mat-slider-min-value:not(.mat-slider-thumb-label-showing).cdk-focused .mat-slider-thumb {\\n border-color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-slider-min-value:not(.mat-slider-thumb-label-showing):hover.mat-slider-disabled .mat-slider-thumb, .mat-slider-min-value:not(.mat-slider-thumb-label-showing).cdk-focused.mat-slider-disabled .mat-slider-thumb {\\n border-color: rgba(0, 0, 0, 0.26);\\n}\\n.mat-slider-has-ticks .mat-slider-wrapper::after {\\n border-color: rgba(0, 0, 0, 0.7);\\n}\\n.mat-slider-horizontal .mat-slider-ticks {\\n background-image: repeating-linear-gradient(to right, rgba(0, 0, 0, 0.7), rgba(0, 0, 0, 0.7) 2px, transparent 0, transparent);\\n background-image: -moz-repeating-linear-gradient(0.0001deg, rgba(0, 0, 0, 0.7), rgba(0, 0, 0, 0.7) 2px, transparent 0, transparent);\\n}\\n.mat-slider-vertical .mat-slider-ticks {\\n background-image: repeating-linear-gradient(to bottom, rgba(0, 0, 0, 0.7), rgba(0, 0, 0, 0.7) 2px, transparent 0, transparent);\\n}\\n.mat-step-header.cdk-keyboard-focused, .mat-step-header.cdk-program-focused, .mat-step-header:hover {\\n background-color: rgba(0, 0, 0, 0.04);\\n}\\n@media (hover: none) {\\n .mat-step-header:hover {\\n background: none;\\n }\\n}\\n.mat-step-header .mat-step-label,\\n.mat-step-header .mat-step-optional {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-step-header .mat-step-icon {\\n background-color: rgba(0, 0, 0, 0.54);\\n color: white;\\n}\\n.mat-step-header .mat-step-icon-selected,\\n.mat-step-header .mat-step-icon-state-done,\\n.mat-step-header .mat-step-icon-state-edit {\\n background-color: #4775f5;\\n color: white;\\n}\\n.mat-step-header.mat-accent .mat-step-icon {\\n color: white;\\n}\\n.mat-step-header.mat-accent .mat-step-icon-selected,\\n.mat-step-header.mat-accent .mat-step-icon-state-done,\\n.mat-step-header.mat-accent .mat-step-icon-state-edit {\\n background-color: #f7cc71;\\n color: white;\\n}\\n.mat-step-header.mat-warn .mat-step-icon {\\n color: white;\\n}\\n.mat-step-header.mat-warn .mat-step-icon-selected,\\n.mat-step-header.mat-warn .mat-step-icon-state-done,\\n.mat-step-header.mat-warn .mat-step-icon-state-edit {\\n background-color: #fc8f76;\\n color: white;\\n}\\n.mat-step-header .mat-step-icon-state-error {\\n background-color: transparent;\\n color: #fc8f76;\\n}\\n.mat-step-header .mat-step-label.mat-step-label-active {\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-step-header .mat-step-label.mat-step-label-error {\\n color: #fc8f76;\\n}\\n.mat-stepper-horizontal, .mat-stepper-vertical {\\n background-color: white;\\n}\\n.mat-stepper-vertical-line::before {\\n border-left-color: rgba(0, 0, 0, 0.12);\\n}\\n.mat-horizontal-stepper-header::before,\\n.mat-horizontal-stepper-header::after,\\n.mat-stepper-horizontal-line {\\n border-top-color: rgba(0, 0, 0, 0.12);\\n}\\n.mat-horizontal-stepper-header {\\n height: 72px;\\n}\\n.mat-stepper-label-position-bottom .mat-horizontal-stepper-header,\\n.mat-vertical-stepper-header {\\n padding: 24px 24px;\\n}\\n.mat-stepper-vertical-line::before {\\n top: -16px;\\n bottom: -16px;\\n}\\n.mat-stepper-label-position-bottom .mat-horizontal-stepper-header::after, .mat-stepper-label-position-bottom .mat-horizontal-stepper-header::before {\\n top: 36px;\\n}\\n.mat-stepper-label-position-bottom .mat-stepper-horizontal-line {\\n top: 36px;\\n}\\n.mat-sort-header-arrow {\\n color: #757575;\\n}\\n.mat-tab-nav-bar,\\n.mat-tab-header {\\n border-bottom: 1px solid rgba(0, 0, 0, 0.12);\\n}\\n.mat-tab-group-inverted-header .mat-tab-nav-bar,\\n.mat-tab-group-inverted-header .mat-tab-header {\\n border-top: 1px solid rgba(0, 0, 0, 0.12);\\n border-bottom: none;\\n}\\n.mat-tab-label, .mat-tab-link {\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-tab-label.mat-tab-disabled, .mat-tab-link.mat-tab-disabled {\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-tab-header-pagination-chevron {\\n border-color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron {\\n border-color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-tab-group[class*=mat-background-] .mat-tab-header,\\n.mat-tab-nav-bar[class*=mat-background-] {\\n border-bottom: none;\\n border-top: none;\\n}\\n.mat-tab-group.mat-primary .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-group.mat-primary .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),\\n.mat-tab-group.mat-primary .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),\\n.mat-tab-group.mat-primary .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-primary .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-primary .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),\\n.mat-tab-nav-bar.mat-primary .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),\\n.mat-tab-nav-bar.mat-primary .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled) {\\n background-color: rgba(104, 145, 255, 0.3);\\n}\\n.mat-tab-group.mat-primary .mat-ink-bar, .mat-tab-nav-bar.mat-primary .mat-ink-bar {\\n background-color: #4775f5;\\n}\\n.mat-tab-group.mat-primary.mat-background-primary > .mat-tab-header .mat-ink-bar, .mat-tab-group.mat-primary.mat-background-primary > .mat-tab-link-container .mat-ink-bar, .mat-tab-nav-bar.mat-primary.mat-background-primary > .mat-tab-header .mat-ink-bar, .mat-tab-nav-bar.mat-primary.mat-background-primary > .mat-tab-link-container .mat-ink-bar {\\n background-color: white;\\n}\\n.mat-tab-group.mat-accent .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-group.mat-accent .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),\\n.mat-tab-group.mat-accent .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),\\n.mat-tab-group.mat-accent .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-accent .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-accent .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),\\n.mat-tab-nav-bar.mat-accent .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),\\n.mat-tab-nav-bar.mat-accent .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled) {\\n background-color: rgba(255, 219, 142, 0.3);\\n}\\n.mat-tab-group.mat-accent .mat-ink-bar, .mat-tab-nav-bar.mat-accent .mat-ink-bar {\\n background-color: #f7cc71;\\n}\\n.mat-tab-group.mat-accent.mat-background-accent > .mat-tab-header .mat-ink-bar, .mat-tab-group.mat-accent.mat-background-accent > .mat-tab-link-container .mat-ink-bar, .mat-tab-nav-bar.mat-accent.mat-background-accent > .mat-tab-header .mat-ink-bar, .mat-tab-nav-bar.mat-accent.mat-background-accent > .mat-tab-link-container .mat-ink-bar {\\n background-color: white;\\n}\\n.mat-tab-group.mat-warn .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-group.mat-warn .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),\\n.mat-tab-group.mat-warn .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),\\n.mat-tab-group.mat-warn .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-warn .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-warn .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),\\n.mat-tab-nav-bar.mat-warn .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),\\n.mat-tab-nav-bar.mat-warn .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled) {\\n background-color: rgba(255, 165, 145, 0.3);\\n}\\n.mat-tab-group.mat-warn .mat-ink-bar, .mat-tab-nav-bar.mat-warn .mat-ink-bar {\\n background-color: #fc8f76;\\n}\\n.mat-tab-group.mat-warn.mat-background-warn > .mat-tab-header .mat-ink-bar, .mat-tab-group.mat-warn.mat-background-warn > .mat-tab-link-container .mat-ink-bar, .mat-tab-nav-bar.mat-warn.mat-background-warn > .mat-tab-header .mat-ink-bar, .mat-tab-nav-bar.mat-warn.mat-background-warn > .mat-tab-link-container .mat-ink-bar {\\n background-color: white;\\n}\\n.mat-tab-group.mat-background-primary .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-group.mat-background-primary .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),\\n.mat-tab-group.mat-background-primary .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),\\n.mat-tab-group.mat-background-primary .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-background-primary .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-background-primary .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),\\n.mat-tab-nav-bar.mat-background-primary .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),\\n.mat-tab-nav-bar.mat-background-primary .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled) {\\n background-color: rgba(104, 145, 255, 0.3);\\n}\\n.mat-tab-group.mat-background-primary > .mat-tab-header, .mat-tab-group.mat-background-primary > .mat-tab-link-container, .mat-tab-group.mat-background-primary > .mat-tab-header-pagination, .mat-tab-nav-bar.mat-background-primary > .mat-tab-header, .mat-tab-nav-bar.mat-background-primary > .mat-tab-link-container, .mat-tab-nav-bar.mat-background-primary > .mat-tab-header-pagination {\\n background-color: #4775f5;\\n}\\n.mat-tab-group.mat-background-primary > .mat-tab-header .mat-tab-label, .mat-tab-group.mat-background-primary > .mat-tab-link-container .mat-tab-link, .mat-tab-nav-bar.mat-background-primary > .mat-tab-header .mat-tab-label, .mat-tab-nav-bar.mat-background-primary > .mat-tab-link-container .mat-tab-link {\\n color: white;\\n}\\n.mat-tab-group.mat-background-primary > .mat-tab-header .mat-tab-label.mat-tab-disabled, .mat-tab-group.mat-background-primary > .mat-tab-link-container .mat-tab-link.mat-tab-disabled, .mat-tab-nav-bar.mat-background-primary > .mat-tab-header .mat-tab-label.mat-tab-disabled, .mat-tab-nav-bar.mat-background-primary > .mat-tab-link-container .mat-tab-link.mat-tab-disabled {\\n color: rgba(255, 255, 255, 0.4);\\n}\\n.mat-tab-group.mat-background-primary > .mat-tab-header .mat-tab-header-pagination-chevron,\\n.mat-tab-group.mat-background-primary > .mat-tab-header-pagination .mat-tab-header-pagination-chevron,\\n.mat-tab-group.mat-background-primary > .mat-tab-link-container .mat-focus-indicator::before,\\n.mat-tab-group.mat-background-primary > .mat-tab-header .mat-focus-indicator::before, .mat-tab-nav-bar.mat-background-primary > .mat-tab-header .mat-tab-header-pagination-chevron,\\n.mat-tab-nav-bar.mat-background-primary > .mat-tab-header-pagination .mat-tab-header-pagination-chevron,\\n.mat-tab-nav-bar.mat-background-primary > .mat-tab-link-container .mat-focus-indicator::before,\\n.mat-tab-nav-bar.mat-background-primary > .mat-tab-header .mat-focus-indicator::before {\\n border-color: white;\\n}\\n.mat-tab-group.mat-background-primary > .mat-tab-header .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron,\\n.mat-tab-group.mat-background-primary > .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron, .mat-tab-nav-bar.mat-background-primary > .mat-tab-header .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron,\\n.mat-tab-nav-bar.mat-background-primary > .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron {\\n border-color: rgba(255, 255, 255, 0.4);\\n}\\n.mat-tab-group.mat-background-primary > .mat-tab-header .mat-ripple-element,\\n.mat-tab-group.mat-background-primary > .mat-tab-link-container .mat-ripple-element,\\n.mat-tab-group.mat-background-primary > .mat-tab-header-pagination .mat-ripple-element, .mat-tab-nav-bar.mat-background-primary > .mat-tab-header .mat-ripple-element,\\n.mat-tab-nav-bar.mat-background-primary > .mat-tab-link-container .mat-ripple-element,\\n.mat-tab-nav-bar.mat-background-primary > .mat-tab-header-pagination .mat-ripple-element {\\n background-color: rgba(255, 255, 255, 0.12);\\n}\\n.mat-tab-group.mat-background-accent .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-group.mat-background-accent .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),\\n.mat-tab-group.mat-background-accent .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),\\n.mat-tab-group.mat-background-accent .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-background-accent .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-background-accent .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),\\n.mat-tab-nav-bar.mat-background-accent .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),\\n.mat-tab-nav-bar.mat-background-accent .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled) {\\n background-color: rgba(255, 219, 142, 0.3);\\n}\\n.mat-tab-group.mat-background-accent > .mat-tab-header, .mat-tab-group.mat-background-accent > .mat-tab-link-container, .mat-tab-group.mat-background-accent > .mat-tab-header-pagination, .mat-tab-nav-bar.mat-background-accent > .mat-tab-header, .mat-tab-nav-bar.mat-background-accent > .mat-tab-link-container, .mat-tab-nav-bar.mat-background-accent > .mat-tab-header-pagination {\\n background-color: #f7cc71;\\n}\\n.mat-tab-group.mat-background-accent > .mat-tab-header .mat-tab-label, .mat-tab-group.mat-background-accent > .mat-tab-link-container .mat-tab-link, .mat-tab-nav-bar.mat-background-accent > .mat-tab-header .mat-tab-label, .mat-tab-nav-bar.mat-background-accent > .mat-tab-link-container .mat-tab-link {\\n color: white;\\n}\\n.mat-tab-group.mat-background-accent > .mat-tab-header .mat-tab-label.mat-tab-disabled, .mat-tab-group.mat-background-accent > .mat-tab-link-container .mat-tab-link.mat-tab-disabled, .mat-tab-nav-bar.mat-background-accent > .mat-tab-header .mat-tab-label.mat-tab-disabled, .mat-tab-nav-bar.mat-background-accent > .mat-tab-link-container .mat-tab-link.mat-tab-disabled {\\n color: rgba(255, 255, 255, 0.4);\\n}\\n.mat-tab-group.mat-background-accent > .mat-tab-header .mat-tab-header-pagination-chevron,\\n.mat-tab-group.mat-background-accent > .mat-tab-header-pagination .mat-tab-header-pagination-chevron,\\n.mat-tab-group.mat-background-accent > .mat-tab-link-container .mat-focus-indicator::before,\\n.mat-tab-group.mat-background-accent > .mat-tab-header .mat-focus-indicator::before, .mat-tab-nav-bar.mat-background-accent > .mat-tab-header .mat-tab-header-pagination-chevron,\\n.mat-tab-nav-bar.mat-background-accent > .mat-tab-header-pagination .mat-tab-header-pagination-chevron,\\n.mat-tab-nav-bar.mat-background-accent > .mat-tab-link-container .mat-focus-indicator::before,\\n.mat-tab-nav-bar.mat-background-accent > .mat-tab-header .mat-focus-indicator::before {\\n border-color: white;\\n}\\n.mat-tab-group.mat-background-accent > .mat-tab-header .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron,\\n.mat-tab-group.mat-background-accent > .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron, .mat-tab-nav-bar.mat-background-accent > .mat-tab-header .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron,\\n.mat-tab-nav-bar.mat-background-accent > .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron {\\n border-color: rgba(255, 255, 255, 0.4);\\n}\\n.mat-tab-group.mat-background-accent > .mat-tab-header .mat-ripple-element,\\n.mat-tab-group.mat-background-accent > .mat-tab-link-container .mat-ripple-element,\\n.mat-tab-group.mat-background-accent > .mat-tab-header-pagination .mat-ripple-element, .mat-tab-nav-bar.mat-background-accent > .mat-tab-header .mat-ripple-element,\\n.mat-tab-nav-bar.mat-background-accent > .mat-tab-link-container .mat-ripple-element,\\n.mat-tab-nav-bar.mat-background-accent > .mat-tab-header-pagination .mat-ripple-element {\\n background-color: rgba(255, 255, 255, 0.12);\\n}\\n.mat-tab-group.mat-background-warn .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-group.mat-background-warn .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),\\n.mat-tab-group.mat-background-warn .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),\\n.mat-tab-group.mat-background-warn .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-background-warn .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-background-warn .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),\\n.mat-tab-nav-bar.mat-background-warn .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),\\n.mat-tab-nav-bar.mat-background-warn .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled) {\\n background-color: rgba(255, 165, 145, 0.3);\\n}\\n.mat-tab-group.mat-background-warn > .mat-tab-header, .mat-tab-group.mat-background-warn > .mat-tab-link-container, .mat-tab-group.mat-background-warn > .mat-tab-header-pagination, .mat-tab-nav-bar.mat-background-warn > .mat-tab-header, .mat-tab-nav-bar.mat-background-warn > .mat-tab-link-container, .mat-tab-nav-bar.mat-background-warn > .mat-tab-header-pagination {\\n background-color: #fc8f76;\\n}\\n.mat-tab-group.mat-background-warn > .mat-tab-header .mat-tab-label, .mat-tab-group.mat-background-warn > .mat-tab-link-container .mat-tab-link, .mat-tab-nav-bar.mat-background-warn > .mat-tab-header .mat-tab-label, .mat-tab-nav-bar.mat-background-warn > .mat-tab-link-container .mat-tab-link {\\n color: white;\\n}\\n.mat-tab-group.mat-background-warn > .mat-tab-header .mat-tab-label.mat-tab-disabled, .mat-tab-group.mat-background-warn > .mat-tab-link-container .mat-tab-link.mat-tab-disabled, .mat-tab-nav-bar.mat-background-warn > .mat-tab-header .mat-tab-label.mat-tab-disabled, .mat-tab-nav-bar.mat-background-warn > .mat-tab-link-container .mat-tab-link.mat-tab-disabled {\\n color: rgba(255, 255, 255, 0.4);\\n}\\n.mat-tab-group.mat-background-warn > .mat-tab-header .mat-tab-header-pagination-chevron,\\n.mat-tab-group.mat-background-warn > .mat-tab-header-pagination .mat-tab-header-pagination-chevron,\\n.mat-tab-group.mat-background-warn > .mat-tab-link-container .mat-focus-indicator::before,\\n.mat-tab-group.mat-background-warn > .mat-tab-header .mat-focus-indicator::before, .mat-tab-nav-bar.mat-background-warn > .mat-tab-header .mat-tab-header-pagination-chevron,\\n.mat-tab-nav-bar.mat-background-warn > .mat-tab-header-pagination .mat-tab-header-pagination-chevron,\\n.mat-tab-nav-bar.mat-background-warn > .mat-tab-link-container .mat-focus-indicator::before,\\n.mat-tab-nav-bar.mat-background-warn > .mat-tab-header .mat-focus-indicator::before {\\n border-color: white;\\n}\\n.mat-tab-group.mat-background-warn > .mat-tab-header .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron,\\n.mat-tab-group.mat-background-warn > .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron, .mat-tab-nav-bar.mat-background-warn > .mat-tab-header .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron,\\n.mat-tab-nav-bar.mat-background-warn > .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron {\\n border-color: rgba(255, 255, 255, 0.4);\\n}\\n.mat-tab-group.mat-background-warn > .mat-tab-header .mat-ripple-element,\\n.mat-tab-group.mat-background-warn > .mat-tab-link-container .mat-ripple-element,\\n.mat-tab-group.mat-background-warn > .mat-tab-header-pagination .mat-ripple-element, .mat-tab-nav-bar.mat-background-warn > .mat-tab-header .mat-ripple-element,\\n.mat-tab-nav-bar.mat-background-warn > .mat-tab-link-container .mat-ripple-element,\\n.mat-tab-nav-bar.mat-background-warn > .mat-tab-header-pagination .mat-ripple-element {\\n background-color: rgba(255, 255, 255, 0.12);\\n}\\n.mat-toolbar {\\n background: whitesmoke;\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-toolbar.mat-primary {\\n background: #4775f5;\\n color: white;\\n}\\n.mat-toolbar.mat-accent {\\n background: #f7cc71;\\n color: white;\\n}\\n.mat-toolbar.mat-warn {\\n background: #fc8f76;\\n color: white;\\n}\\n.mat-toolbar .mat-form-field-underline,\\n.mat-toolbar .mat-form-field-ripple,\\n.mat-toolbar .mat-focused .mat-form-field-ripple {\\n background-color: currentColor;\\n}\\n.mat-toolbar .mat-form-field-label,\\n.mat-toolbar .mat-focused .mat-form-field-label,\\n.mat-toolbar .mat-select-value,\\n.mat-toolbar .mat-select-arrow,\\n.mat-toolbar .mat-form-field.mat-focused .mat-select-arrow {\\n color: inherit;\\n}\\n.mat-toolbar .mat-input-element {\\n caret-color: currentColor;\\n}\\n.mat-toolbar-multiple-rows {\\n min-height: 64px;\\n}\\n.mat-toolbar-row, .mat-toolbar-single-row {\\n height: 64px;\\n}\\n@media (max-width: 599px) {\\n .mat-toolbar-multiple-rows {\\n min-height: 56px;\\n }\\n\\n .mat-toolbar-row, .mat-toolbar-single-row {\\n height: 56px;\\n }\\n}\\n.mat-tooltip {\\n background: rgba(97, 97, 97, 0.9);\\n}\\n.mat-tree {\\n background: white;\\n}\\n.mat-tree-node,\\n.mat-nested-tree-node {\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-tree-node {\\n min-height: 48px;\\n}\\n.mat-snack-bar-container {\\n color: rgba(255, 255, 255, 0.7);\\n background: #323232;\\n box-shadow: 0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-simple-snackbar-action {\\n color: #f7cc71;\\n}\\n/* Breakpoints for Media Queries */\\n.list-card {\\n width: 340px;\\n height: 220px;\\n margin: 10px;\\n padding: 0;\\n background: white;\\n border-radius: 5px;\\n transition: all 0.3s;\\n}\\n@media only screen and (max-width: 576px) {\\n .list-card {\\n margin: 10px 0 0 0;\\n }\\n}\\n.list-card:hover .list-card_title:before {\\n border: 2px solid #4775f5;\\n}\\n.list-card--new {\\n height: 100%;\\n width: 100%;\\n}\\n.list-card_header {\\n top: 20px;\\n left: 30px;\\n width: calc(340px - 50px);\\n height: 60px;\\n}\\n.list-card_footer {\\n position: absolute;\\n bottom: 0;\\n left: 0;\\n width: 340px;\\n height: 60px;\\n border-top: 1px solid #e8ebee;\\n padding: 0 20px;\\n}\\n.list-card_footer_info {\\n font-size: 14px;\\n font-weight: bold;\\n color: #c7c9cd;\\n}\\n.list-card_footer_info_form-type {\\n color: #212529;\\n}\\n.list-card_footer_progressbar {\\n border-radius: 5px;\\n}\\n.list-card_footer_progressbar ::ng-deep .mat-progress-bar-buffer {\\n background: #bfbfbf;\\n}\\n.list-card_footer_progressbar ::ng-deep .mat-progress-bar-primary::after {\\n background: #10cf98;\\n}\\n.list-card_footer_completition {\\n font-size: 12px;\\n color: #bfbfbf;\\n font-weight: normal;\\n}\\n.list-card_footer_completition_percent {\\n font-weight: bold;\\n color: #949494;\\n}\\n.list-card_title {\\n position: relative;\\n font-size: 15px;\\n}\\n.list-card_title:before {\\n position: absolute;\\n left: -16px;\\n top: 6px;\\n width: 9px;\\n height: 9px;\\n border: 2px solid #c7c9cd;\\n border-radius: 50%;\\n content: \\\"\\\";\\n transition: all 0.3s;\\n}\\n.list-card_title.crop {\\n width: calc(var(--card-width) - 90px);\\n display: block;\\n}\\n.list-card_title.crop span {\\n width: 100%;\\n display: block;\\n}\\n.list-card_date {\\n font-size: 12px;\\n font-weight: bold;\\n color: #c7c9cd;\\n}\\n.list-card_more {\\n padding-left: 4px;\\n color: #c7c9cd;\\n}\\n.list-card_view-button {\\n text-transform: uppercase;\\n border-radius: 9px;\\n background: #f0f0f2;\\n color: #bfbfbf;\\n font-weight: bold;\\n font-size: 14px;\\n padding: 0 22px;\\n transition: all 0.3s;\\n}\\n.list-card_view-button:hover {\\n background: #10cf98;\\n color: white;\\n}\\n.list-card_view-button:hover i:before {\\n color: white;\\n}\\n.list-card_view-button:hover ::ng-deep .mat-button-focus-overlay {\\n background: transparent;\\n}\\n.list-card_view-button i:before {\\n color: #bfbfbf;\\n transition: all 0.3s;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3RoZW1lLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvYmFkZ2UvX2JhZGdlLXRoZW1lLnNjc3MiLCJjYXJkLmNvbXBvbmVudC5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUvdHlwb2dyYXBoeS9fdHlwb2dyYXBoeS5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUvdHlwb2dyYXBoeS9fdHlwb2dyYXBoeS11dGlscy5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL2JvdHRvbS1zaGVldC9fYm90dG9tLXNoZWV0LXRoZW1lLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uL19idXR0b24tdGhlbWUuc2NzcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYW5ndWxhci9tYXRlcmlhbC9idXR0b24tdG9nZ2xlL19idXR0b24tdG9nZ2xlLXRoZW1lLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvY2FyZC9fY2FyZC10aGVtZS5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL2NoZWNrYm94L19jaGVja2JveC10aGVtZS5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL2NoaXBzL19jaGlwcy10aGVtZS5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL3RhYmxlL190YWJsZS10aGVtZS5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL2RhdGVwaWNrZXIvX2RhdGVwaWNrZXItdGhlbWUuc2NzcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cvX2RpYWxvZy10aGVtZS5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL2V4cGFuc2lvbi9fZXhwYW5zaW9uLXRoZW1lLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZC9fZm9ybS1maWVsZC10aGVtZS5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQvX2Zvcm0tZmllbGQtbGVnYWN5LXRoZW1lLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZC9fZm9ybS1maWVsZC1maWxsLXRoZW1lLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZC9fZm9ybS1maWVsZC1vdXRsaW5lLXRoZW1lLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvZ3JpZC1saXN0L19ncmlkLWxpc3QtdGhlbWUuc2NzcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYW5ndWxhci9tYXRlcmlhbC9jb3JlL3N0eWxlL19saXN0LWNvbW1vbi5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0L19pbnB1dC10aGVtZS5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL21lbnUvX21lbnUtdGhlbWUuc2NzcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3IvX3BhZ2luYXRvci10aGVtZS5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL3JhZGlvL19yYWRpby10aGVtZS5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL3NlbGVjdC9fc2VsZWN0LXRoZW1lLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvc2xpZGUtdG9nZ2xlL19zbGlkZS10b2dnbGUtdGhlbWUuc2NzcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYW5ndWxhci9tYXRlcmlhbC9zbGlkZXIvX3NsaWRlci10aGVtZS5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL3N0ZXBwZXIvX3N0ZXBwZXItdGhlbWUuc2NzcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYW5ndWxhci9tYXRlcmlhbC90YWJzL190YWJzLXRoZW1lLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbGJhci9fdG9vbGJhci10aGVtZS5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAvX3Rvb2x0aXAtdGhlbWUuc2NzcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYW5ndWxhci9tYXRlcmlhbC9saXN0L19saXN0LXRoZW1lLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZS9vcHRpb24vX29wdGlvbi10aGVtZS5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUvb3B0aW9uL19vcHRncm91cC10aGVtZS5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL3NuYWNrLWJhci9fc25hY2stYmFyLXRoZW1lLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvdHJlZS9fdHJlZS10aGVtZS5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUvcmlwcGxlL19yaXBwbGUuc2NzcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYW5ndWxhci9jZGsvYTExeS9faW5kZXguc2NzcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYW5ndWxhci9jZGsvb3ZlcmxheS9faW5kZXguc2NzcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYW5ndWxhci9jZGsvdGV4dC1maWVsZC9faW5kZXguc2NzcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYW5ndWxhci9tYXRlcmlhbC9jb3JlL2ZvY3VzLWluZGljYXRvcnMvX2ZvY3VzLWluZGljYXRvcnMuc2NzcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYW5ndWxhci9tYXRlcmlhbC9jb3JlL19jb3JlLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZS9yaXBwbGUvX3JpcHBsZS10aGVtZS5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUvc2VsZWN0aW9uL3BzZXVkby1jaGVja2JveC9fcHNldWRvLWNoZWNrYm94LXRoZW1lLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZS9fY29yZS10aGVtZS5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUvc3R5bGUvX2VsZXZhdGlvbi5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL2F1dG9jb21wbGV0ZS9fYXV0b2NvbXBsZXRlLXRoZW1lLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvZGl2aWRlci9fZGl2aWRlci10aGVtZS5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL2V4cGFuc2lvbi9fZXhwYW5zaW9uLW1peGlucy5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUvc3R5bGUvX2Zvcm0tY29tbW9uLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZC9fZm9ybS1maWVsZC1zdGFuZGFyZC10aGVtZS5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL2ljb24vX2ljb24tdGhlbWUuc2NzcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYW5ndWxhci9tYXRlcmlhbC9jb3JlL3N0eWxlL192ZW5kb3ItcHJlZml4ZXMuc2NzcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYW5ndWxhci9tYXRlcmlhbC9wcm9ncmVzcy1iYXIvX3Byb2dyZXNzLWJhci10aGVtZS5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLXNwaW5uZXIvX3Byb2dyZXNzLXNwaW5uZXItdGhlbWUuc2NzcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYW5ndWxhci9tYXRlcmlhbC9zaWRlbmF2L19zaWRlbmF2LXRoZW1lLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydC9fc29ydC10aGVtZS5zY3NzIiwiLi4vLi4vLi4vYnJlYWtwb2ludHMuc2NzcyIsIi4uLy4uLy4uL3ZhcmlhYmxlcy5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdRLGdFQUFBO0FBSFIsOEVBQUE7QUNtTUU7RUFDRSxnQkF4TFU7RUF5TFYsZUExTFE7RUEyTFIsaURBQUE7QUNoTUo7QURtTUU7RUFFRSxjQUFBO0FDak1KO0FEb01FO0VBQ0UsZUFBQTtBQ2pNSjtBQ3dLRTtFQ3RHRSx3REFBQTtFQWNGLHNCQUFBO0VEMEZFLGdCQUFBO0FE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QzBwQ0Y7QTJDNXhDSTtFQ2tJRix5SEFBQTtBNUM4cENGO0EyQ2h5Q0k7RUNrSUYseUhBQUE7QTVDa3FDRjtBMkNweUNJO0VDa0lGLDBIQUFBO0E1Q3NxQ0Y7QTJDeHlDSTtFQ2tJRiwwSEFBQTtBNUMwcUNGO0EyQzV5Q0k7RUNrSUYsMkhBQUE7QTVDOHFDRjtBMkNoekNJO0VDa0lGLDJIQUFBO0E1Q2tyQ0Y7QTJDcHpDSTtFQ2tJRiwySEFBQTtBNUNzckNGO0EyQ3h6Q0k7RUNrSUYsMkhBQUE7QTVDMHJDRjtBMkM1ekNJO0VDa0lGLDRIQUFBO0E1QzhyQ0Y7QTJDaDBDSTtFQ2tJRiw0SEFBQTtBNUNrc0NGO0EyQ3AwQ0k7RUNrSUYsNEhBQUE7QTVDc3NDRjtBMkN4MENJO0VDa0lGLDRIQUFBO0E1QzBzQ0Y7QTJDNTBDSTtFQ2tJRiw0SEFBQTtBNUM4c0NGO0EyQ2gxQ0k7RUNrSUYsNEhBQUE7QTVDa3RDRjtBMkNwMUNJO0VDa0lGLDZIQUFBO0E1Q3N0Q0Y7QTJDeDFDSTtFQ2tJRiw2SEFBQTtBNUMwdENGO0EyQzUxQ0k7RUNrSUYsNkhBQUE7QTVDOHRDRjtBMkNoMkNJO0VDa0lGLDZIQUFBO0E1Q2t1Q0Y7QTJDcDJDSTtFQ2tJRiw4SEFBQTtBNUNzdUNGO0EyQ3gyQ0k7RUNrSUYsOEhBQUE7QTVDMHVDRjtBMkM1MkNJO0VDa0lGLDhIQUFBO0E1Qzh1Q0Y7QTJDaDNDSTtFQ2tJRiw4SEFBQTtBNUNrdkNGO0EyQ3AzQ0k7RUNrSUYsOEhBQUE7QTVDc3ZDRjtBMkNqM0NJO0VBQ0UsYUFBQTtBM0NvM0NOO0E2Qzk0Q0U7RUFFRSxpQkFBQTtFQUNBLDBCQUFBO0E3Q2c1Q0o7QTRDcHZDRTtFQVhBLDBIQUFBO0E1Q2t3Q0Y7QTZDNTRDSTtFQUNFLGlCQUFBO0E3Qzg0Q047QTZDNTRDTTtFQUNFLDBCQUFBO0E3Qzg0Q1I7QURqMENFO0VBQ0UsWUFBQTtFQUNBLG1CQUFBO0FDbzBDSjtBb0NuNENJO0VyQ2tFRSxrQkFBQTtFQUNBLGdCQUFBO0FDbzBDTjtBRC96Q0k7RUFDRSxtQkFBQTtFQUNBLFlBQUE7QUNr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MUI7QWdCN3RFTTtFQUNFLGNBcEJpQjtBaEJtdkV6QjtBZ0I1dEVNO0VBQ0UsY0F2QmU7QWhCcXZFdkI7QWdCeHRFTTtFQUNFLGNBOUJlO0FoQnd2RXZCO0FnQnJ0RU07RUFDRSwwQkEzQ2lCO0FoQmt3RXpCO0FnQnB0RU07RUFDRSwwQkF0Q0o7QWhCNHZFSjtBa0R6d0VJO0VBQ0UsY0FBQTtBbEQ0d0VOO0FrRHp3RUk7RUFDRSxjQUFBO0FsRDJ3RU47QWtEeHdFSTtFQUNFLGNBQUE7QWxEMHdFTjtBbUIvd0VFO0VBQ0UsMEJBQUE7QW5Ca3hFSjtBbUIvd0VFOztFQUVFLDBCQUFBO0FuQmt4RUo7QW1CL3dFRTtFQUNFLG9CQUFBO0FuQmt4RUo7QW1EbnlFRTtFaENvQkksMEJBQUE7QW5Ca3hFTjtBbUR0eUVFO0VoQ29CSSwwQkFBQTtBbkJreEVOO0FtRGx5RUU7RWhDZ0JJLDBCQUFBO0FuQnF4RU47QW1EanlFRTtFaENZSSwwQkFBQTtBbkJ3eEVOO0FtRGh5RUU7RWhDUUksMEJBQUE7QW5CMnhFTjtBbUJ4d0VFO0VBQ0Usb0JBQUE7QW5CMndFSjtBbUJ4d0VFOztFQUVFLG9CQUFBO0FuQjJ3RUo7QW1CeHdFRTtFQUNFLGNBQUE7QW5CMndFSjtBOEJ4ekVJO0VBQ0UsMEJBQUE7QTlCMnpFTjtBOEJ4ekVJO0VBQ0UsMEJBQUE7QTlCMHpFTjtBOEJ2ekVJO0VBQ0UsMEJBQUE7QTlCeXpFTjtBOEJyekVFO0VBQ0UseUJBQUE7QTlCd3pFSjtBOEJsekVJOzs7OztFQUNFLCtCQUFBO0E5Qnl6RU47QThCcHpFSTtFQUNFLCtCQUFBO0E5QnV6RU47QW9CbjFFRTtFQUVFLGlCQUFBO0FwQnExRUo7QTRDM3JFRTtFQVhBLDBIQUFBO0E1Q3lzRUY7QW9CcjFFRTtFQUNFLHVCQUFBO0VBQ0EsMEJBQUE7QXBCdzFFSjtBb0JyMUVNOztFQUdFLDBCQUFBO0FwQnMxRVI7QW9CajFFRTs7RUFFRSwwQkFBQTtBcEJvMUVKO0FvQjcwRUk7Ozs7RUFDRSwrQkFBQTtBcEJtMUVOO0FxQi8yRUU7RUFDRSxpQkFBQTtBckJrM0VK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aGdHSTtFQUNFLHFDQUFBO0VBQ0EsY0FBQTtBQWtnR047QUFoZ0dNO0VBQ0UsV0FBQTtFQUNBLGNBQUE7QUFrZ0dSO0FBNy9GRTtFQUNFLGVBQUE7RUFDQSxpQkFBQTtFQUNBLGNBQUE7QUErL0ZKO0FBNS9GRTtFQUNFLGlCQUFBO0VBQ0EsY0FBQTtBQTgvRko7QUEzL0ZFO0VBQ0UseUJBQUE7RUFDQSxrQkFBQTtFQUNBLG1CQUFBO0VBQ0EsY0FBQTtFQUNBLGlCQUFBO0VBQ0EsZUFBQTtFQUNBLGVBQUE7RUFDQSxvQkFBQTtBQTYvRko7QUEzL0ZJO0VBQ0UsbUJBQUE7RUFDQSxZQUFBO0FBNi9GTjtBQTMvRk07RUFDRSxZQUFBO0FBNi9GUjtBQTEvRk07RUFDRSx1QkFBQTtBQTQvRlI7QUF4L0ZJO0VBQ0UsY0FBQTtFQUNBLG9CQUFBO0FBMC9GTiIsImZpbGUiOiJjYXJkLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLyogWW91IGNhbiBhZGQgZ2xvYmFsIHN0eWxlcyB0byB0aGlzIGZpbGUsIGFuZCBhbHNvIGltcG9ydCBvdGhlciBzdHlsZSBmaWxlcyAqL1xuQHVzZSAnfkBhbmd1bGFyL21hdGVyaWFsJyBhcyBtYXQ7XG5AaW1wb3J0ICd+QGFuZ3VsYXIvbWF0ZXJpYWwvdGhlbWluZyc7XG5AaW1wb3J0IHVybCgnLy9mb250cy5nb29nbGVhcGlzLmNvbS9pY29uP2ZhbWlseT1NYXRlcmlhbCtJY29ucycpO1xuXG5AaW5jbHVkZSBtYXQuY29yZSgpO1xuXG4kbWYtYnctbW9kZWxpY2E6IG1hdC5kZWZpbmUtdHlwb2dyYXBoeS1jb25maWcoXG4gICRmb250LWZhbWlseTogJ0J3TW9kZWxpY2EsIG1vbm9zcGFjZScsXG4gICRoZWFkbGluZTogbWF0LmRlZmluZS10eXBvZ3JhcGh5LWxldmVsKDMycHgsIDQ4cHgsIGJvbGQpXG4pO1xuXG4kbWYtb3Blbi1zYW5zOiBtYXQuZGVmaW5lLXR5cG9ncmFwaHktY29uZmlnKFxuICAkZm9udC1mYW1pbHk6ICdPcGVuU2Fucywgc2Fucy1zZXJpZicsXG4gICRib2R5LTE6IG1hdC5kZWZpbmUtdHlwb2dyYXBoeS1sZXZlbCgxNnB4LCAyNHB4LCBub3JtYWwpXG4pO1xuXG5AaW5jbHVkZSBtYXQuYWxsLWNvbXBvbmVudC10eXBvZ3JhcGhpZXMoJG1mLW9wZW4tc2Fucyk7XG5cbi5tYXQtdHlwb2dyYXBoeSB7XG4gIGgxLCBoMiwgaDMsIGg0LCBoNSwgaDYge1xuICAgIGZvbnQtZmFtaWx5OiBtYXQuZm9udC1mYW1pbHkoJG1mLWJ3LW1vZGVsaWNhKTtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgfVxufVxuXG4kbWYtZ3JlZW46IChcbiAgNTA6ICMyNmQ5YTYsXG4gIDEwMDogIzI2ZDlhNixcbiAgMjAwOiAjMjZkOWE2LFxuICAzMDA6ICMyNmQ5YTYsXG4gIDQwMDogIzI2ZDlhNixcbiAgNTAwOiAjMTBjZjk4LFxuICA2MDA6ICMxMGNmOTgsXG4gIDcwMDogIzEwY2Y5OCxcbiAgODAwOiAjMTBjZjk4LFxuICA5MDA6ICMxMGNmOTgsXG4gIEExMDA6ICMwNTgyNWUsXG4gIEEyMDA6ICMwNTgyNWUsXG4gIEE0MDA6ICMwNTgyNWUsXG4gIEE3MDA6ICMwNTgyNWUsXG4gIGNvbnRyYXN0OiAoXG4gICAgNTA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAxMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAyMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAzMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA0MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA1MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA2MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA3MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgODAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDkwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICBBMTAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgQTIwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIEE0MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICBBNzAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gIClcbik7XG4kbWYtcmVkOiAoXG4gIDUwOiAjZmZhNTkxLFxuICAxMDA6ICNmZmE1OTEsXG4gIDIwMDogI2ZmYTU5MSxcbiAgMzAwOiAjZmZhNTkxLFxuICA0MDA6ICNmZmE1OTEsXG4gIDUwMDogI2ZjOGY3NixcbiAgNjAwOiAjZmM4Zjc2LFxuICA3MDA6ICNmYzhmNzYsXG4gIDgwMDogI2ZjOGY3NixcbiAgOTAwOiAjZmM4Zjc2LFxuICBBMTAwOiAjYWY1NTQxLFxuICBBMjAwOiAjYWY1NTQxLFxuICBBNDAwOiAjYWY1NTQxLFxuICBBNzAwOiAjYWY1NTQxLFxuICBjb250cmFzdDogKFxuICAgIDUwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMTAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMjAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMzAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgNDAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgNTAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgNjAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgNzAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDgwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA5MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgQTEwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIEEyMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICBBNDAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgQTcwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICApXG4pO1xuJG1mLXllbGxvdzogKFxuICA1MDogI2ZmZGI4ZSxcbiAgMTAwOiAjZmZkYjhlLFxuICAyMDA6ICNmZmRiOGUsXG4gIDMwMDogI2ZmZGI4ZSxcbiAgNDAwOiAjZmZkYjhlLFxuICA1MDA6ICNmN2NjNzEsXG4gIDYwMDogI2Y3Y2M3MSxcbiAgNzAwOiAjZjdjYzcxLFxuICA4MDA6ICNmN2NjNzEsXG4gIDkwMDogI2Y3Y2M3MSxcbiAgQTEwMDogI2FhODczZCxcbiAgQTIwMDogI2FhODczZCxcbiAgQTQwMDogI2FhODczZCxcbiAgQTcwMDogI2FhODczZCxcbiAgY29udHJhc3Q6IChcbiAgICA1MDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDEwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDIwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDMwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDQwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDUwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDYwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDcwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA4MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgOTAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIEExMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICBBMjAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgQTQwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIEE3MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgKVxuKTtcbiRtZi1ibHVlOiAoXG4gIDUwOiAjOTJhZGY3LFxuICAxMDA6ICM2ODkxZmYsXG4gIDIwMDogIzYzOGRmZixcbiAgMzAwOiAjNmQ5MWY3LFxuICA0MDA6ICM0ZDdhZjcsXG4gIDUwMDogIzQ4NzVmNSxcbiAgNjAwOiAjNDc3NWY1LFxuICA3MDA6ICM0Nzc1ZjUsXG4gIDgwMDogIzQ0NmRmNSxcbiAgOTAwOiAjNDE2OWRiLFxuICBBMTAwOiAjMjA0NGE4LFxuICBBMjAwOiAjMjA0NGE4LFxuICBBNDAwOiAjMjA0NGE4LFxuICBBNzAwOiAjMzUzZjUyLFxuICBjb250cmFzdDogKFxuICAgIDUwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMTAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMjAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMzAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgNDAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgNTAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgNjAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgNzAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDgwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA5MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgQTEwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIEEyMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICBBNDAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgQTcwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICApXG4pO1xuXG4kcHJpbWFyeVRoZW1lOiAkbWYtYmx1ZTtcbiRhY2NlbnRUaGVtZTogJG1mLXllbGxvdztcbiR3YXJuVGhlbWU6ICRtZi1yZWQ7XG4kc3VjY2Vzc1RoZW1lOiAkbWYtZ3JlZW47XG4kZWxldmF0aW9uOiA3MDA7XG4kcHJpbWFyeTogbWF0LmRlZmluZS1wYWxldHRlKCRwcmltYXJ5VGhlbWUsICRlbGV2YXRpb24pO1xuJGFjY2VudDogIG1hdC5kZWZpbmUtcGFsZXR0ZSgkYWNjZW50VGhlbWUsICRlbGV2YXRpb24pO1xuJHdhcm46ICAgIG1hdC5kZWZpbmUtcGFsZXR0ZSgkd2FyblRoZW1lLCAkZWxldmF0aW9uKTtcbiRzdWNjZXNzOiAgICBtYXQuZGVmaW5lLXBhbGV0dGUoJHN1Y2Nlc3NUaGVtZSwgJGVsZXZhdGlvbik7XG4kc3VjY2Vzc1RleHQ6ICAgIG1hdC5kZWZpbmUtcGFsZXR0ZSgkc3VjY2Vzc1RoZW1lLCBBNzAwKTtcblxuXG4kbWF0LXdoaXRlOiAoXG4gIDUwOiAjZmZmZmZmLFxuICAxMDA6ICNmZmZmZmYsXG4gIDIwMDogI2ZmZmZmZixcbiAgMzAwOiAjZmZmZmZmLFxuICA0MDA6ICNmMGYwZjIsXG4gIDUwMDogI2Y5ZjlmOSxcbiAgNjAwOiAjZmJmYmZiLFxuICA3MDA6ICNmNmY2ZjYsXG4gIDgwMDogI2Y0ZjRmNCxcbiAgOTAwOiAjZjRmN2Y5LFxuICBBMTAwOiAjZThlYmVlLFxuICBBMjAwOiAjYzdjOWNkLFxuICBBNDAwOiAjOWVhNGFlLFxuICBBNzAwOiAjOWI5YjliLFxuICBjb250cmFzdDogKFxuICAgIDUwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMTAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMjAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMzAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgNDAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgNTAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgNjAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgNzAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDgwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA5MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgQTEwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIEEyMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICBBNDAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgQTcwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICApXG4pO1xuJG1hdC1ibGFjazogKFxuICA1MDogI2JmYmZiZixcbiAgMTAwOiAjYWViMmJhLFxuICAyMDA6ICM5NDk0OTQsXG4gIDMwMDogIzczNzM3MyxcbiAgNDAwOiAjNjA2MDYwLFxuICA1MDA6ICM2MjYyNjIsXG4gIDYwMDogIzQ3NDc0NyxcbiAgNzAwOiAjMzQzNDM0LFxuICA4MDA6ICMyNDI0MjQsXG4gIDkwMDogIzIzMjMyMyxcbiAgQTEwMDogIzE3MTcxNyxcbiAgQTIwMDogIzExMTExMSxcbiAgQTQwMDogIzBlMGUwZSxcbiAgQTcwMDogYmxhY2ssXG4gIGNvbnRyYXN0OiAoXG4gICAgNTA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAxMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAyMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAzMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA0MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA1MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA2MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA3MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgODAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDkwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICBBMTAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgQTIwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIEE0MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICBBNzAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gIClcbik7XG5cbiR0aGVtZTogbWF0LmRlZmluZS1saWdodC10aGVtZSgkcHJpbWFyeSwgJGFjY2VudCwgJHdhcm4pO1xuXG5AaW5jbHVkZSBtYXQuYWxsLWNvbXBvbmVudC10aGVtZXMoJHRoZW1lKTtcbiIsIi8vIFRoaXMgY29udGFpbnMgYWxsIG9mIHRoZSBzdHlsZXMgZm9yIHRoZSBiYWRnZVxuLy8gcmF0aGVyIHRoYW4ganVzdCB0aGUgY29sb3IvdGhlbWUgYmVjYXVzZSBvZlxuLy8gbm8gc3R5bGUgc2hlZXQgc3VwcG9ydCBmb3IgZGlyZWN0aXZlcy5cbkB1c2UgJ3Nhc3M6Y29sb3InO1xuQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnc2FzczptZXRhJztcbkB1c2UgJy4uL2NvcmUvdGhlbWluZy90aGVtaW5nJztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5JztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5LXV0aWxzJztcbkB1c2UgJy4uLy4uL2Nkay9hMTF5JztcblxuJGZvbnQtc2l6ZTogMTJweDtcbiRmb250LXdlaWdodDogNjAwO1xuJGRlZmF1bHQtc2l6ZTogMjJweCAhZGVmYXVsdDtcbiRzbWFsbC1zaXplOiAkZGVmYXVsdC1zaXplIC0gNjtcbiRsYXJnZS1zaXplOiAkZGVmYXVsdC1zaXplICsgNjtcblxuLy8gTWl4aW4gZm9yIGJ1aWxkaW5nIG9mZnNldCBnaXZlbiBkaWZmZXJlbnQgc2l6ZXNcbkBtaXhpbiBfYmFkZ2Utc2l6ZSgkc2l6ZSkge1xuICAubWF0LWJhZGdlLWNvbnRlbnQge1xuICAgIHdpZHRoOiAkc2l6ZTtcbiAgICBoZWlnaHQ6ICRzaXplO1xuICAgIGxpbmUtaGVpZ2h0OiAkc2l6ZTtcbiAgfVxuXG4gICYubWF0LWJhZGdlLWFib3ZlIHtcbiAgICAubWF0LWJhZGdlLWNvbnRlbnQge1xuICAgICAgdG9wOiAtJHNpemUgLyAyO1xuICAgIH1cbiAgfVxuXG4gICYubWF0LWJhZGdlLWJlbG93IHtcbiAgICAubWF0LWJhZGdlLWNvbnRlbnQge1xuICAgICAgYm90dG9tOiAtJHNpemUgLyAyO1xuICAgIH1cbiAgfVxuXG4gICYubWF0LWJhZGdlLWJlZm9yZSB7XG4gICAgLm1hdC1iYWRnZS1jb250ZW50IHtcbiAgICAgIGxlZnQ6IC0kc2l6ZTtcbiAgICB9XG4gIH1cblxuICBbZGlyPSdydGwnXSAmLm1hdC1iYWRnZS1iZWZvcmUge1xuICAgIC5tYXQtYmFkZ2UtY29udGVudCB7XG4gICAgICBsZWZ0OiBhdXRvO1xuICAgICAgcmlnaHQ6IC0kc2l6ZTtcbiAgICB9XG4gIH1cblxuICAmLm1hdC1iYWRnZS1hZnRlciB7XG4gICAgLm1hdC1iYWRnZS1jb250ZW50IHtcbiAgICAgIHJpZ2h0OiAtJHNpemU7XG4gICAgfVxuICB9XG5cbiAgW2Rpcj0ncnRsJ10gJi5tYXQtYmFkZ2UtYWZ0ZXIge1xuICAgIC5tYXQtYmFkZ2UtY29udGVudCB7XG4gICAgICByaWdodDogYXV0bztcbiAgICAgIGxlZnQ6IC0kc2l6ZTtcbiAgICB9XG4gIH1cblxuICAmLm1hdC1iYWRnZS1vdmVybGFwIHtcbiAgICAmLm1hdC1iYWRnZS1iZWZvcmUge1xuICAgICAgLm1hdC1iYWRnZS1jb250ZW50IHtcbiAgICAgICAgbGVmdDogLSRzaXplIC8gMjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBbZGlyPSdydGwnXSAmLm1hdC1iYWRnZS1iZWZvcmUge1xuICAgICAgLm1hdC1iYWRnZS1jb250ZW50IHtcbiAgICAgICAgbGVmdDogYXV0bztcbiAgICAgICAgcmlnaHQ6IC0kc2l6ZSAvIDI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJi5tYXQtYmFkZ2UtYWZ0ZXIge1xuICAgICAgLm1hdC1iYWRnZS1jb250ZW50IHtcbiAgICAgICAgcmlnaHQ6IC0kc2l6ZSAvIDI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgW2Rpcj0ncnRsJ10gJi5tYXQtYmFkZ2UtYWZ0ZXIge1xuICAgICAgLm1hdC1iYWRnZS1jb250ZW50IHtcbiAgICAgICAgcmlnaHQ6IGF1dG87XG4gICAgICAgIGxlZnQ6IC0kc2l6ZSAvIDI7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBjb2xvcigkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJGFjY2VudDogbWFwLmdldCgkY29uZmlnLCBhY2NlbnQpO1xuICAkd2FybjogbWFwLmdldCgkY29uZmlnLCB3YXJuKTtcbiAgJHByaW1hcnk6IG1hcC5nZXQoJGNvbmZpZywgcHJpbWFyeSk7XG4gICRiYWNrZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGJhY2tncm91bmQpO1xuICAkZm9yZWdyb3VuZDogbWFwLmdldCgkY29uZmlnLCBmb3JlZ3JvdW5kKTtcblxuICAubWF0LWJhZGdlLWNvbnRlbnQge1xuICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHByaW1hcnksIGRlZmF1bHQtY29udHJhc3QpO1xuICAgIGJhY2tncm91bmQ6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkcHJpbWFyeSk7XG5cbiAgICBAaW5jbHVkZSBhMTF5LmhpZ2gtY29udHJhc3QoYWN0aXZlLCBvZmYpIHtcbiAgICAgIG91dGxpbmU6IHNvbGlkIDFweDtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDA7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1iYWRnZS1hY2NlbnQge1xuICAgIC5tYXQtYmFkZ2UtY29udGVudCB7XG4gICAgICBiYWNrZ3JvdW5kOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGFjY2VudCk7XG4gICAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRhY2NlbnQsIGRlZmF1bHQtY29udHJhc3QpO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtYmFkZ2Utd2FybiB7XG4gICAgLm1hdC1iYWRnZS1jb250ZW50IHtcbiAgICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHdhcm4sIGRlZmF1bHQtY29udHJhc3QpO1xuICAgICAgYmFja2dyb3VuZDogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCR3YXJuKTtcbiAgICB9XG4gIH1cblxuICAubWF0LWJhZGdlIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIH1cblxuICAubWF0LWJhZGdlLWhpZGRlbiB7XG4gICAgLm1hdC1iYWRnZS1jb250ZW50IHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1iYWRnZS1kaXNhYmxlZCB7XG4gICAgLm1hdC1iYWRnZS1jb250ZW50IHtcbiAgICAgICRhcHAtYmFja2dyb3VuZDogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLCAnYmFja2dyb3VuZCcpO1xuICAgICAgJGJhZGdlLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIGRpc2FibGVkLWJ1dHRvbik7XG5cbiAgICAgIC8vIFRoZSBkaXNhYmxlZCBjb2xvciB1c3VhbGx5IGhhcyBzb21lIGtpbmQgb2Ygb3BhY2l0eSwgYnV0IGJlY2F1c2UgdGhlIGJhZGdlIGlzIG92ZXJsYXllZFxuICAgICAgLy8gb24gdG9wIG9mIHNvbWV0aGluZyBlbHNlLCBpdCB3b24ndCBsb29rIGdvb2QgaWYgaXQncyBvcGFxdWUuIElmIGl0IGlzIGEgY29sb3IgKnR5cGUqLFxuICAgICAgLy8gd2UgY29udmVydCBpdCBpbnRvIGEgc29saWQgY29sb3IgYnkgdGFraW5nIHRoZSBvcGFjaXR5IGZyb20gdGhlIHJnYmEgdmFsdWUgYW5kIHVzaW5nXG4gICAgICAvLyB0aGUgdmFsdWUgdG8gZGV0ZXJtaW5lIHRoZSBwZXJjZW50YWdlIG9mIHRoZSBiYWNrZ3JvdW5kIHRvIHB1dCBpbnRvIGZvcmVncm91bmQgd2hlblxuICAgICAgLy8gbWl4aW5nIHRoZSBjb2xvcnMgdG9nZXRoZXIuXG4gICAgICBAaWYgKG1ldGEudHlwZS1vZigkYmFkZ2UtY29sb3IpID09IGNvbG9yIGFuZCBtZXRhLnR5cGUtb2YoJGFwcC1iYWNrZ3JvdW5kKSA9PSBjb2xvcikge1xuICAgICAgICAkYmFkZ2Utb3BhY2l0eTogb3BhY2l0eSgkYmFkZ2UtY29sb3IpO1xuICAgICAgICBiYWNrZ3JvdW5kOiBjb2xvci5taXgoJGFwcC1iYWNrZ3JvdW5kLCByZ2JhKCRiYWRnZS1jb2xvciwgMSksICgxIC0gJGJhZGdlLW9wYWNpdHkpICogMTAwJSk7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgIGJhY2tncm91bmQ6ICRiYWRnZS1jb2xvcjtcbiAgICAgIH1cblxuICAgICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgZGlzYWJsZWQtdGV4dCk7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1iYWRnZS1jb250ZW50IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDIwMG1zIGVhc2UtaW4tb3V0O1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMC42KTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIH1cblxuICAubmctYW5pbWF0ZS1kaXNhYmxlZCAubWF0LWJhZGdlLWNvbnRlbnQsXG4gIC5tYXQtYmFkZ2UtY29udGVudC5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZSB7XG4gICAgdHJhbnNpdGlvbjogbm9uZTtcbiAgfVxuXG4gIC8vIFRoZSBhY3RpdmUgY2xhc3MgaXMgYWRkZWQgYWZ0ZXIgdGhlIGVsZW1lbnQgaXMgYWRkZWRcbiAgLy8gc28gaXQgY2FuIGFuaW1hdGUgc2NhbGUgdG8gZGVmYXVsdFxuICAubWF0LWJhZGdlLWNvbnRlbnQubWF0LWJhZGdlLWFjdGl2ZSB7XG4gICAgLy8gU2NhbGUgdG8gYG5vbmVgIGluc3RlYWQgb2YgYDFgIHRvIGF2b2lkIGJsdXJyeSB0ZXh0IGluIHNvbWUgYnJvd3NlcnMuXG4gICAgdHJhbnNmb3JtOiBub25lO1xuICB9XG5cbiAgLm1hdC1iYWRnZS1zbWFsbCB7XG4gICAgQGluY2x1ZGUgX2JhZGdlLXNpemUoJHNtYWxsLXNpemUpO1xuICB9XG4gIC5tYXQtYmFkZ2UtbWVkaXVtIHtcbiAgICBAaW5jbHVkZSBfYmFkZ2Utc2l6ZSgkZGVmYXVsdC1zaXplKTtcbiAgfVxuICAubWF0LWJhZGdlLWxhcmdlIHtcbiAgICBAaW5jbHVkZSBfYmFkZ2Utc2l6ZSgkbGFyZ2Utc2l6ZSk7XG4gIH1cbn1cblxuQG1peGluIHR5cG9ncmFwaHkoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0eXBvZ3JhcGh5LnByaXZhdGUtdHlwb2dyYXBoeS10by0yMDE0LWNvbmZpZyhcbiAgICAgIHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCRjb25maWctb3ItdGhlbWUpKTtcbiAgLm1hdC1iYWRnZS1jb250ZW50IHtcbiAgICBmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0O1xuICAgIGZvbnQtc2l6ZTogJGZvbnQtc2l6ZTtcbiAgICBmb250LWZhbWlseTogdHlwb2dyYXBoeS11dGlscy5mb250LWZhbWlseSgkY29uZmlnKTtcbiAgfVxuXG4gIC5tYXQtYmFkZ2Utc21hbGwgLm1hdC1iYWRnZS1jb250ZW50IHtcbiAgICAvLyBTZXQgdGhlIGZvbnQgc2l6ZSB0byA3NSUgb2YgdGhlIG9yaWdpbmFsLlxuICAgIGZvbnQtc2l6ZTogJGZvbnQtc2l6ZSAqIDAuNzU7XG4gIH1cblxuICAubWF0LWJhZGdlLWxhcmdlIC5tYXQtYmFkZ2UtY29udGVudCB7XG4gICAgZm9udC1zaXplOiAkZm9udC1zaXplICogMjtcbiAgfVxufVxuXG5AbWl4aW4gX2RlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIHRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiB0aGVtaW5nLnByaXZhdGUtbGVnYWN5LWdldC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgQGluY2x1ZGUgdGhlbWluZy5wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LWJhZGdlJykge1xuICAgICRjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgJGRlbnNpdHk6IHRoZW1pbmcuZ2V0LWRlbnNpdHktY29uZmlnKCR0aGVtZSk7XG4gICAgJHR5cG9ncmFwaHk6IHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCR0aGVtZSk7XG5cbiAgICBAaWYgJGNvbG9yICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgX2RlbnNpdHkoJGRlbnNpdHkpO1xuICAgIH1cbiAgICBAaWYgJHR5cG9ncmFwaHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5KCR0eXBvZ3JhcGh5KTtcbiAgICB9XG4gIH1cbn1cbiIsIkB1c2UgJ35AYW5ndWxhci9tYXRlcmlhbCcgYXMgbWF0O1xuQGltcG9ydCBcIi4uLy4uLy4uL3RoZW1lXCI7XG5AaW1wb3J0IFwiLi4vLi4vLi4vdmFyaWFibGVzXCI7XG5AaW1wb3J0IFwic3JjL2JyZWFrcG9pbnRzXCI7XG5cblxuLmxpc3QtY2FyZCB7XG4gIHdpZHRoOiAkY2FyZC13aWR0aDtcbiAgaGVpZ2h0OiAkY2FyZC1oZWlnaHQ7XG4gIG1hcmdpbjogMTBweDtcbiAgQGluY2x1ZGUgZm9yLXBob25lLW9ubHkge1xuICAgIG1hcmdpbjogMTBweCAwIDAgMDtcbiAgfVxuICBwYWRkaW5nOiAwO1xuICBiYWNrZ3JvdW5kOiBtYXQuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkbWF0LXdoaXRlLCA1MCk7XG4gIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgQGV4dGVuZCAubWF0LWVsZXZhdGlvbi16MjtcbiAgdHJhbnNpdGlvbjogYWxsIC4zcztcblxuICAmOmhvdmVyIHtcbiAgICBAZXh0ZW5kIC5tYXQtZWxldmF0aW9uLXo4O1xuXG4gICAgLmxpc3QtY2FyZCB7XG4gICAgICAmX3RpdGxlIHtcbiAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgIGJvcmRlcjogMnB4IHNvbGlkIG1hdC5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRtZi1ibHVlLCA3MDApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gIH1cblxuICAmLS1uZXcge1xuICAgIGhlaWdodDogMTAwJTtcbiAgICB3aWR0aDogMTAwJTtcbiAgfVxuXG4gICZfaGVhZGVyIHtcbiAgICB0b3A6IDIwcHg7XG4gICAgbGVmdDogMzBweDtcbiAgICB3aWR0aDogY2FsYygjeyRjYXJkLXdpZHRofSAtIDUwcHgpO1xuICAgIGhlaWdodDogJGNhcmQtLWhlYWRlci1oZWlnaHQ7XG4gIH1cblxuICAmX2Zvb3RlciB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGJvdHRvbTogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHdpZHRoOiAkY2FyZC13aWR0aDtcbiAgICBoZWlnaHQ6ICRjYXJkLS1mb290ZXItaGVpZ2h0O1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCBtYXQuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkbWF0LXdoaXRlLCBBMTAwKTtcbiAgICBwYWRkaW5nOiAwIDIwcHg7XG5cbiAgICAmX2luZm8ge1xuICAgICAgZm9udC1zaXplOiAxNHB4O1xuICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICBjb2xvcjogbWF0LmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJG1hdC13aGl0ZSwgQTIwMCk7XG5cbiAgICAgICZfZm9ybS10eXBlIHtcbiAgICAgICAgY29sb3I6ICMyMTI1Mjk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJl9wcm9ncmVzc2JhciB7XG4gICAgICBib3JkZXItcmFkaXVzOiA1cHg7XG5cbiAgICAgIDo6bmctZGVlcCB7XG4gICAgICAgIC5tYXQtcHJvZ3Jlc3MtYmFyLWJ1ZmZlciB7XG4gICAgICAgICAgYmFja2dyb3VuZDogbWF0LmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJG1hdC1ibGFjaywgNTApO1xuICAgICAgICB9XG5cbiAgICAgICAgLm1hdC1wcm9ncmVzcy1iYXItcHJpbWFyeTo6YWZ0ZXIge1xuICAgICAgICAgIGJhY2tncm91bmQ6IG1hdC5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRzdWNjZXNzKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICZfY29tcGxldGl0aW9uIHtcbiAgICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICAgIGNvbG9yOiBtYXQuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkbWF0LWJsYWNrLCA1MCk7XG4gICAgICBmb250LXdlaWdodDogbm9ybWFsO1xuXG4gICAgICAmX3BlcmNlbnQge1xuICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgY29sb3I6IG1hdC5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRtYXQtYmxhY2ssIDIwMCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgJl90aXRsZSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGZvbnQtc2l6ZTogMTVweDtcblxuICAgICY6YmVmb3JlIHtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIGxlZnQ6IC0xNnB4O1xuICAgICAgdG9wOiA2cHg7XG4gICAgICB3aWR0aDogOXB4O1xuICAgICAgaGVpZ2h0OiA5cHg7XG4gICAgICBib3JkZXI6IDJweCBzb2xpZCBtYXQuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkbWF0LXdoaXRlLCBBMjAwKTtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgdHJhbnNpdGlvbjogYWxsIC4zcztcbiAgICB9XG5cbiAgICAmLmNyb3Age1xuICAgICAgd2lkdGg6IGNhbGModmFyKC0tY2FyZC13aWR0aCkgLSA5MHB4KTtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuXG4gICAgICBzcGFuIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICZfZGF0ZSB7XG4gICAgZm9udC1zaXplOiAxMnB4O1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIGNvbG9yOiBtYXQuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkbWF0LXdoaXRlLCBBMjAwKTtcbiAgfVxuXG4gICZfbW9yZSB7XG4gICAgcGFkZGluZy1sZWZ0OiA0cHg7XG4gICAgY29sb3I6IG1hdC5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRtYXQtd2hpdGUsIEEyMDApO1xuICB9XG5cbiAgJl92aWV3LWJ1dHRvbiB7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBib3JkZXItcmFkaXVzOiA5cHg7XG4gICAgYmFja2dyb3VuZDogbWF0LmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJG1hdC13aGl0ZSwgNDAwKTtcbiAgICBjb2xvcjogbWF0LmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJG1hdC1ibGFjaywgNTApO1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICBwYWRkaW5nOiAwIDIycHg7XG4gICAgdHJhbnNpdGlvbjogYWxsIC4zcztcblxuICAgICY6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZDogbWF0LmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHN1Y2Nlc3MpO1xuICAgICAgY29sb3I6IG1hdC5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRtYXQtd2hpdGUsIDUwKTtcblxuICAgICAgaTpiZWZvcmUge1xuICAgICAgICBjb2xvcjogbWF0LmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJG1hdC13aGl0ZSwgNTApO1xuICAgICAgfVxuXG4gICAgICA6Om5nLWRlZXAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSB7XG4gICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgfVxuICAgIH1cblxuICAgIGk6YmVmb3JlIHtcbiAgICAgIGNvbG9yOiBtYXQuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkbWF0LWJsYWNrLCA1MCk7XG4gICAgICB0cmFuc2l0aW9uOiBhbGwgLjNzO1xuICAgIH1cbiAgfVxufVxuXG4iLCJAdXNlICdzYXNzOm1hcCc7XG5AdXNlICd0eXBvZ3JhcGh5LXV0aWxzJztcbkB1c2UgJy4uL3RoZW1pbmcvdGhlbWluZyc7XG5cbi8vLyBEZWZpbmVzIGEgdHlwb2dyYXBoeSBsZXZlbCBmcm9tIHRoZSBNYXRlcmlhbCBEZXNpZ24gc3BlYy5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGZvbnQtc2l6ZSBUaGUgZm9udC1zaXplIGZvciB0aGlzIGxldmVsLlxuLy8vIEBwYXJhbSB7U3RyaW5nIHwgTnVtYmVyfSAkbGluZS1oZWlnaHQgVGhlIGxpbmUtaGVpZ2h0IGZvciB0aGlzIGxldmVsLlxuLy8vIEBwYXJhbSB7U3RyaW5nIHwgTnVtYmVyfSAkZm9udC13ZWlnaHQgVGhlIGZvbnQtd2VpZ2h0IGZvciB0aGlzIGxldmVsLlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkZm9udC1mYW1pbHkgVGhlIGZvbnQtZmFtaWx5IGZvciB0aGlzIGxldmVsLlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkbGV0dGVyLXNwYWNpbmcgVGhlIGxldHRlci1zcGFjaW5nIGZvciB0aGlzIGxldmVsLlxuLy8vIEByZXR1cm5zIHtNYXB9IEEgbWFwIHJlcHJlc2VudGluZyB0aGUgZGVmaW5pdGlvbiBvZiB0aGlzIHR5cHBvZ3JhcGhpYyBsZXZlbC5cbkBmdW5jdGlvbiBkZWZpbmUtdHlwb2dyYXBoeS1sZXZlbChcbiAgJGZvbnQtc2l6ZSxcbiAgJGxpbmUtaGVpZ2h0OiAkZm9udC1zaXplLFxuICAkZm9udC13ZWlnaHQ6IDQwMCxcbiAgJGZvbnQtZmFtaWx5OiBudWxsLFxuICAkbGV0dGVyLXNwYWNpbmc6IG5vcm1hbCkge1xuXG4gIEByZXR1cm4gKFxuICAgIGZvbnQtc2l6ZTogJGZvbnQtc2l6ZSxcbiAgICBsaW5lLWhlaWdodDogJGxpbmUtaGVpZ2h0LFxuICAgIGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQsXG4gICAgZm9udC1mYW1pbHk6ICRmb250LWZhbWlseSxcbiAgICBsZXR0ZXItc3BhY2luZzogJGxldHRlci1zcGFjaW5nXG4gICk7XG59XG5cbi8vLyBEZWZpbmVzIGEgY29sbGVjdGlvbiBvZiB0eXBvZ3JhcGh5IGxldmVscyB0byBjb25maWd1cmUgdHlwb2dyYXBoeSBmb3IgYW4gYXBwbGljYXRpb24uXG4vLy8gQW55IGxldmVsIG5vdCBzcGVjaWZpZWQgZGVmYXVsdHMgdG8gdGhlIHZhbHVlcyBkZWZpbmVkIGluIHRoZSBNYXRlcmlhbCBEZXNpZ24gc3BlY2lmaWNhdGlvbjpcbi8vLyBodHRwczovL21hdGVyaWFsLmlvL2d1aWRlbGluZXMvc3R5bGUvdHlwb2dyYXBoeS5odG1sLlxuLy8vXG4vLy8gTm90ZSB0aGF0IHRoZSBNYXRlcmlhbCBEZXNpZ24gc3BlY2lmaWNhdGlvbiBkb2VzIG5vdCBkZXNjcmliZSBleHBsaWNpdCBsZXR0ZXItc3BhY2luZyB2YWx1ZXMuXG4vLy8gVGhlIHZhbHVlcyBoZXJlIGNvbWUgZnJvbSByZXZlcnNlIGVuZ2luZWVyaW5nIHRoZSBNYXRlcmlhbCBEZXNpZ24gZXhhbXBsZXMuXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRmb250LWZhbWlseSBEZWZhdWx0IGZvbnQtZmFtaWx5IGZvciBsZXZlbHMgdGhhdCBkb24ndCBzcGVjaWZ5IGZvbnQtZmFtaWx5LlxuLy8vIEBwYXJhbSB7TWFwfSAkZGlzcGxheS00IENvbmZpZ3VyYXRpb24gZm9yIHRoZSBcImRpc3BsYXktNFwiIHR5cG9ncmFwaGljIGxldmVsLlxuLy8vIEBwYXJhbSB7TWFwfSAkZGlzcGxheS0zIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBcImRpc3BsYXktM1wiIHR5cG9ncmFwaGljIGxldmVsLlxuLy8vIEBwYXJhbSB7TWFwfSAkZGlzcGxheS0yIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBcImRpc3BsYXktMlwiIHR5cG9ncmFwaGljIGxldmVsLlxuLy8vIEBwYXJhbSB7TWFwfSAkZGlzcGxheS0xIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBcImRpc3BsYXktMVwiIHR5cG9ncmFwaGljIGxldmVsLlxuLy8vIEBwYXJhbSB7TWFwfSAkaGVhZGxpbmUgQ29uZmlndXJhdGlvbiBmb3IgdGhlIFwiaGVhZGxpbmVcIiB0eXBvZ3JhcGhpYyBsZXZlbC5cbi8vLyBAcGFyYW0ge01hcH0gJHRpdGxlIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBcInRpdGxlXCIgdHlwb2dyYXBoaWMgbGV2ZWwuXG4vLy8gQHBhcmFtIHtNYXB9ICRzdWJoZWFkaW5nLTIgQ29uZmlndXJhdGlvbiBmb3IgdGhlIFwic3ViaGVhZGluZy0yXCIgdHlwb2dyYXBoaWMgbGV2ZWwuXG4vLy8gQHBhcmFtIHtNYXB9ICRzdWJoZWFkaW5nLTEgQ29uZmlndXJhdGlvbiBmb3IgdGhlIFwic3ViaGVhZGluZy0xXCIgdHlwb2dyYXBoaWMgbGV2ZWwuXG4vLy8gQHBhcmFtIHtNYXB9ICRib2R5LTIgQ29uZmlndXJhdGlvbiBmb3IgdGhlIFwiYm9keS0yXCIgdHlwb2dyYXBoaWMgbGV2ZWwuXG4vLy8gQHBhcmFtIHtNYXB9ICRib2R5LTEgQ29uZmlndXJhdGlvbiBmb3IgdGhlIFwiYm9keS0xXCIgdHlwb2dyYXBoaWMgbGV2ZWwuXG4vLy8gQHBhcmFtIHtNYXB9ICRjYXB0aW9uIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBcImNhcHRpb25cIiB0eXBvZ3JhcGhpYyBsZXZlbC5cbi8vLyBAcGFyYW0ge01hcH0gJGJ1dHRvbiBDb25maWd1cmF0aW9uIGZvciB0aGUgXCJidXR0b25cIiB0eXBvZ3JhcGhpYyBsZXZlbC5cbi8vLyBAcGFyYW0ge01hcH0gJGlucHV0IENvbmZpZ3VyYXRpb24gZm9yIHRoZSBcImlucHV0XCIgdHlwb2dyYXBoaWMgbGV2ZWwuXG4vLy8gQHJldHVybnMge01hcH0gQSB0eXBvZ3JhcGh5IGNvbmZpZyBmb3IgdGhlIGFwcGxpY2F0aW9uLlxuQGZ1bmN0aW9uIGRlZmluZS10eXBvZ3JhcGh5LWNvbmZpZyhcbiAgJGZvbnQtZmFtaWx5OiAgICdSb2JvdG8sIFwiSGVsdmV0aWNhIE5ldWVcIiwgc2Fucy1zZXJpZicsXG4gICRkaXNwbGF5LTQ6ICAgICBkZWZpbmUtdHlwb2dyYXBoeS1sZXZlbCgxMTJweCwgMTEycHgsIDMwMCwgJGxldHRlci1zcGFjaW5nOiAtMC4wNWVtKSxcbiAgJGRpc3BsYXktMzogICAgIGRlZmluZS10eXBvZ3JhcGh5LWxldmVsKDU2cHgsIDU2cHgsIDQwMCwgJGxldHRlci1zcGFjaW5nOiAtMC4wMmVtKSxcbiAgJGRpc3BsYXktMjogICAgIGRlZmluZS10eXBvZ3JhcGh5LWxldmVsKDQ1cHgsIDQ4cHgsIDQwMCwgJGxldHRlci1zcGFjaW5nOiAtMC4wMDVlbSksXG4gICRkaXNwbGF5LTE6ICAgICBkZWZpbmUtdHlwb2dyYXBoeS1sZXZlbCgzNHB4LCA0MHB4LCA0MDApLFxuICAkaGVhZGxpbmU6ICAgICAgZGVmaW5lLXR5cG9ncmFwaHktbGV2ZWwoMjRweCwgMzJweCwgNDAwKSxcbiAgJHRpdGxlOiAgICAgICAgIGRlZmluZS10eXBvZ3JhcGh5LWxldmVsKDIwcHgsIDMycHgsIDUwMCksXG4gICRzdWJoZWFkaW5nLTI6ICBkZWZpbmUtdHlwb2dyYXBoeS1sZXZlbCgxNnB4LCAyOHB4LCA0MDApLFxuICAkc3ViaGVhZGluZy0xOiAgZGVmaW5lLXR5cG9ncmFwaHktbGV2ZWwoMTVweCwgMjRweCwgNDAwKSxcbiAgJGJvZHktMjogICAgICAgIGRlZmluZS10eXBvZ3JhcGh5LWxldmVsKDE0cHgsIDI0cHgsIDUwMCksXG4gICRib2R5LTE6ICAgICAgICBkZWZpbmUtdHlwb2dyYXBoeS1sZXZlbCgxNHB4LCAyMHB4LCA0MDApLFxuICAkY2FwdGlvbjogICAgICAgZGVmaW5lLXR5cG9ncmFwaHktbGV2ZWwoMTJweCwgMjBweCwgNDAwKSxcbiAgJGJ1dHRvbjogICAgICAgIGRlZmluZS10eXBvZ3JhcGh5LWxldmVsKDE0cHgsIDE0cHgsIDUwMCksXG4gIC8vIExpbmUtaGVpZ2h0IG11c3QgYmUgdW5pdC1sZXNzIGZyYWN0aW9uIG9mIHRoZSBmb250LXNpemUuXG4gICRpbnB1dDogICAgICAgICBkZWZpbmUtdHlwb2dyYXBoeS1sZXZlbChpbmhlcml0LCAxLjEyNSwgNDAwKVxuKSB7XG5cbiAgLy8gRGVjbGFyZSBhbiBpbml0aWFsIG1hcCB3aXRoIGFsbCBvZiB0aGUgbGV2ZWxzLlxuICAkY29uZmlnOiAoXG4gICAgZGlzcGxheS00OiAgICAgICRkaXNwbGF5LTQsXG4gICAgZGlzcGxheS0zOiAgICAgICRkaXNwbGF5LTMsXG4gICAgZGlzcGxheS0yOiAgICAgICRkaXNwbGF5LTIsXG4gICAgZGlzcGxheS0xOiAgICAgICRkaXNwbGF5LTEsXG4gICAgaGVhZGxpbmU6ICAgICAgICRoZWFkbGluZSxcbiAgICB0aXRsZTogICAgICAgICAgJHRpdGxlLFxuICAgIHN1YmhlYWRpbmctMjogICAkc3ViaGVhZGluZy0yLFxuICAgIHN1YmhlYWRpbmctMTogICAkc3ViaGVhZGluZy0xLFxuICAgIGJvZHktMjogICAgICAgICAkYm9keS0yLFxuICAgIGJvZHktMTogICAgICAgICAkYm9keS0xLFxuICAgIGNhcHRpb246ICAgICAgICAkY2FwdGlvbixcbiAgICBidXR0b246ICAgICAgICAgJGJ1dHRvbixcbiAgICBpbnB1dDogICAgICAgICAgJGlucHV0LFxuICApO1xuXG4gIC8vIExvb3AgdGhyb3VnaCB0aGUgbGV2ZWxzIGFuZCBzZXQgdGhlIGBmb250LWZhbWlseWAgb2YgdGhlIG9uZXMgdGhhdCBkb24ndCBoYXZlIG9uZSB0byB0aGUgYmFzZS5cbiAgLy8gTm90ZSB0aGF0IFNhc3MgY2FuJ3QgbW9kaWZ5IG1hcHMgaW4gcGxhY2UsIHdoaWNoIG1lYW5zIHRoYXQgd2UgbmVlZCB0byBtZXJnZSBhbmQgcmUtYXNzaWduLlxuICBAZWFjaCAka2V5LCAkbGV2ZWwgaW4gJGNvbmZpZyB7XG4gICAgQGlmIG1hcC5nZXQoJGxldmVsLCBmb250LWZhbWlseSkgPT0gbnVsbCB7XG4gICAgICAkbmV3LWxldmVsOiBtYXAubWVyZ2UoJGxldmVsLCAoZm9udC1mYW1pbHk6ICRmb250LWZhbWlseSkpO1xuICAgICAgJGNvbmZpZzogbWFwLm1lcmdlKCRjb25maWcsICgka2V5OiAkbmV3LWxldmVsKSk7XG4gICAgfVxuICB9XG5cbiAgLy8gQWRkIHRoZSBiYXNlIGZvbnQgZmFtaWx5IHRvIHRoZSBjb25maWcuXG4gIEByZXR1cm4gbWFwLm1lcmdlKCRjb25maWcsIChmb250LWZhbWlseTogJGZvbnQtZmFtaWx5KSk7XG59XG5cbi8vIFdoZXRoZXIgYSBjb25maWcgaXMgZm9yIHRoZSBNYXRlcmlhbCBEZXNpZ24gMjAxOCB0eXBvZ3JhcGh5IHN5c3RlbS5cbkBmdW5jdGlvbiBwcml2YXRlLXR5cG9ncmFwaHktaXMtMjAxOC1jb25maWcoJGNvbmZpZykge1xuICBAcmV0dXJuIG1hcC5nZXQoJGNvbmZpZywgaGVhZGxpbmUtMSkgIT0gbnVsbDtcbn1cblxuLy8gV2hldGhlciBhIGNvbmZpZyBpcyBmb3IgdGhlIE1hdGVyaWFsIERlc2lnbiAyMDE0IHR5cG9ncmFwaHkgc3lzdGVtLlxuQGZ1bmN0aW9uIHByaXZhdGUtdHlwb2dyYXBoeS1pcy0yMDE0LWNvbmZpZygkY29uZmlnKSB7XG4gIEByZXR1cm4gbWFwLmdldCgkY29uZmlnLCBoZWFkbGluZSkgIT0gbnVsbDtcbn1cblxuLy8gR2l2ZW4gYSBjb25maWcgZm9yIGVpdGhlciB0aGUgMjAxNCBvciAyMDE4IE1hdGVyaWFsIERlc2lnbiB0eXBvZ3JhcGh5IHN5c3RlbSxcbi8vIHByb2R1Y2VzIGEgbm9ybWFsaXplZCB0eXBvZ3JhcGh5IGNvbmZpZyBmb3IgdGhlIDIwMTQgTWF0ZXJpYWwgRGVzaWduIHR5cG9ncmFwaHkgc3lzdGVtLlxuLy8gMjAxNCAtIGh0dHBzOi8vbWF0ZXJpYWwuaW8vYXJjaGl2ZS9ndWlkZWxpbmVzL3N0eWxlL3R5cG9ncmFwaHkuaHRtbCN0eXBvZ3JhcGh5LXN0eWxlc1xuLy8gMjAxOCAtIGh0dHBzOi8vbWF0ZXJpYWwuaW8vZGVzaWduL3R5cG9ncmFwaHkvdGhlLXR5cGUtc3lzdGVtLmh0bWwjdHlwZS1zY2FsZVxuLy9cbi8vIENvbXBvbmVudHMgdXNpbmcgdGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgbWlncmF0ZWQgdG8gbm9ybWFsaXplIHRvIHRoZSAyMDE4IHN0eWxlIGNvbmZpZyBpbnN0ZWFkLlxuLy8gTmV3IGNvbXBvbmVudHMgc2hvdWxkIG5vdCB1c2UgdGhpcyBmdW5jdGlvbi5cbkBmdW5jdGlvbiBwcml2YXRlLXR5cG9ncmFwaHktdG8tMjAxNC1jb25maWcoJGNvbmZpZykge1xuICBAaWYgJGNvbmZpZyA9PSBudWxsIHtcbiAgICBAcmV0dXJuIG51bGw7XG4gIH1cbiAgQGlmIG5vdCBwcml2YXRlLXR5cG9ncmFwaHktaXMtMjAxNC1jb25maWcoJGNvbmZpZykge1xuICAgICRhcmdzOiAoXG4gICAgICAgIGRpc3BsYXktNDogbWFwLmdldCgkY29uZmlnLCBoZWFkbGluZS0xKSxcbiAgICAgICAgZGlzcGxheS0zOiBtYXAuZ2V0KCRjb25maWcsIGhlYWRsaW5lLTIpLFxuICAgICAgICBkaXNwbGF5LTI6IG1hcC5nZXQoJGNvbmZpZywgaGVhZGxpbmUtMyksXG4gICAgICAgIGRpc3BsYXktMTogbWFwLmdldCgkY29uZmlnLCBoZWFkbGluZS00KSxcbiAgICAgICAgaGVhZGxpbmU6IG1hcC5nZXQoJGNvbmZpZywgaGVhZGxpbmUtNSksXG4gICAgICAgIHRpdGxlOiBtYXAuZ2V0KCRjb25maWcsIGhlYWRsaW5lLTYpLFxuICAgICAgICBzdWJoZWFkaW5nLTI6IG1hcC5nZXQoJGNvbmZpZywgc3VidGl0bGUtMSksXG4gICAgICAgIHN1YmhlYWRpbmctMTogbWFwLmdldCgkY29uZmlnLCBzdWJ0aXRsZS0yKSxcbiAgICAgICAgYm9keS0yOiBtYXAuZ2V0KCRjb25maWcsIGJvZHktMSksXG4gICAgICAgIGJvZHktMTogbWFwLmdldCgkY29uZmlnLCBib2R5LTIpLFxuICAgICAgICBidXR0b246IG1hcC5nZXQoJGNvbmZpZywgYnV0dG9uKSxcbiAgICAgICAgY2FwdGlvbjogbWFwLmdldCgkY29uZmlnLCBjYXB0aW9uKSxcbiAgICApO1xuICAgICRub24tbnVsbC1hcmdzOiAoKTtcbiAgICBAZWFjaCAka2V5LCAkdmFsdWUgaW4gJGFyZ3Mge1xuICAgICAgQGlmICR2YWx1ZSAhPSBudWxsIHtcbiAgICAgICAgJG5vbi1udWxsLWFyZ3M6IG1hcC5tZXJnZSgkbm9uLW51bGwtYXJncywgKCRrZXk6ICR2YWx1ZSkpO1xuICAgICAgfVxuICAgIH1cbiAgICBAcmV0dXJuIGRlZmluZS10eXBvZ3JhcGh5LWNvbmZpZygkbm9uLW51bGwtYXJncy4uLik7XG4gIH1cbiAgQHJldHVybiAkY29uZmlnO1xufVxuXG4vLyBHaXZlbiBhIGNvbmZpZyBmb3IgZWl0aGVyIHRoZSAyMDE0IG9yIDIwMTggTWF0ZXJpYWwgRGVzaWduIHR5cG9ncmFwaHkgc3lzdGVtLFxuLy8gcHJvZHVjZXMgYSBub3JtYWxpemVkIHR5cG9ncmFwaHkgY29uZmlnIGZvciB0aGUgMjAxOCBNYXRlcmlhbCBEZXNpZ24gdHlwb2dyYXBoeSBzeXN0ZW0uXG4vLyAyMDE0IC0gaHR0cHM6Ly9tYXRlcmlhbC5pby9hcmNoaXZlL2d1aWRlbGluZXMvc3R5bGUvdHlwb2dyYXBoeS5odG1sI3R5cG9ncmFwaHktc3R5bGVzXG4vLyAyMDE4IC0gaHR0cHM6Ly9tYXRlcmlhbC5pby9kZXNpZ24vdHlwb2dyYXBoeS90aGUtdHlwZS1zeXN0ZW0uaHRtbCN0eXBlLXNjYWxlXG5AZnVuY3Rpb24gcHJpdmF0ZS10eXBvZ3JhcGh5LXRvLTIwMTgtY29uZmlnKCRjb25maWcpIHtcbiAgQGlmICRjb25maWcgPT0gbnVsbCB7XG4gICAgQHJldHVybiBudWxsO1xuICB9XG4gIEBpZiBub3QgcHJpdmF0ZS10eXBvZ3JhcGh5LWlzLTIwMTgtY29uZmlnKCRjb25maWcpIHtcbiAgICBAcmV0dXJuIChcbiAgICAgICAgaGVhZGxpbmUtMTogbWFwLmdldCgkY29uZmlnLCBkaXNwbGF5LTQpLFxuICAgICAgICBoZWFkbGluZS0yOiBtYXAuZ2V0KCRjb25maWcsIGRpc3BsYXktMyksXG4gICAgICAgIGhlYWRsaW5lLTM6IG1hcC5nZXQoJGNvbmZpZywgZGlzcGxheS0yKSxcbiAgICAgICAgaGVhZGxpbmUtNDogbWFwLmdldCgkY29uZmlnLCBkaXNwbGF5LTEpLFxuICAgICAgICBoZWFkbGluZS01OiBtYXAuZ2V0KCRjb25maWcsIGhlYWRsaW5lKSxcbiAgICAgICAgaGVhZGxpbmUtNjogbWFwLmdldCgkY29uZmlnLCB0aXRsZSksXG4gICAgICAgIHN1YnRpdGxlLTE6IG1hcC5nZXQoJGNvbmZpZywgc3ViaGVhZGluZy0yKSxcbiAgICAgICAgc3VidGl0bGUtMjogbWFwLmdldCgkY29uZmlnLCBzdWJoZWFkaW5nLTEpLFxuICAgICAgICBib2R5LTE6IG1hcC5nZXQoJGNvbmZpZywgYm9keS0yKSxcbiAgICAgICAgYm9keS0yOiBtYXAuZ2V0KCRjb25maWcsIGJvZHktMSksXG4gICAgICAgIGJ1dHRvbjogbWFwLmdldCgkY29uZmlnLCBidXR0b24pLFxuICAgICAgICBjYXB0aW9uOiBtYXAuZ2V0KCRjb25maWcsIGNhcHRpb24pLFxuICAgICAgICBvdmVybGluZTogaWYobWFwLmdldCgkY29uZmlnLCBvdmVybGluZSksIG1hcC5nZXQoJGNvbmZpZywgb3ZlcmxpbmUpLFxuICAgICAgICAgICAgZGVmaW5lLXR5cG9ncmFwaHktbGV2ZWwoMTJweCwgMzJweCwgNTAwKVxuICAgICAgICApXG4gICAgKTtcbiAgfVxuICBAcmV0dXJuICRjb25maWc7XG59XG5cbi8vIHN0eWxlbGludC1kaXNhYmxlIG1hdGVyaWFsL3RoZW1lLW1peGluLWFwaVxuXG4vLy8gRW1pdHMgYmFzZWxpbmUgdHlwb2dyYXBoaWMgc3R5bGVzIGJhc2VkIG9uIGEgZ2l2ZW4gY29uZmlnLlxuLy8vIEBwYXJhbSB7TWFwfSAkY29uZmlnLW9yLXRoZW1lIEEgdHlwb2dyYXBoeSBjb25maWcgZm9yIGFuIGVudGlyZSB0aGVtZS5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJHNlbGVjdG9yIEFuY2VzdG9yIHNlbGVjdG9yIHVuZGVyIHdoaWNoIG5hdGl2ZSBlbGVtZW50cywgc3VjaCBhcyBoMSwgd2lsbFxuLy8vICAgICBiZSBzdHlsZWQuXG5AbWl4aW4gdHlwb2dyYXBoeS1oaWVyYXJjaHkoJGNvbmZpZy1vci10aGVtZSwgJHNlbGVjdG9yOiAnLm1hdC10eXBvZ3JhcGh5Jykge1xuICAkY29uZmlnOiBwcml2YXRlLXR5cG9ncmFwaHktdG8tMjAxNC1jb25maWcodGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJGNvbmZpZy1vci10aGVtZSkpO1xuXG4gIC5tYXQtaDEsIC5tYXQtaGVhZGxpbmUsICN7JHNlbGVjdG9yfSBoMSB7XG4gICAgQGluY2x1ZGUgdHlwb2dyYXBoeS11dGlscy50eXBvZ3JhcGh5LWxldmVsKCRjb25maWcsIGhlYWRsaW5lKTtcbiAgICBtYXJnaW46IDAgMCAxNnB4O1xuICB9XG5cbiAgLm1hdC1oMiwgLm1hdC10aXRsZSwgI3skc2VsZWN0b3J9IGgyIHtcbiAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5LXV0aWxzLnR5cG9ncmFwaHktbGV2ZWwoJGNvbmZpZywgdGl0bGUpO1xuICAgIG1hcmdpbjogMCAwIDE2cHg7XG4gIH1cblxuICAubWF0LWgzLCAubWF0LXN1YmhlYWRpbmctMiwgI3skc2VsZWN0b3J9IGgzIHtcbiAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5LXV0aWxzLnR5cG9ncmFwaHktbGV2ZWwoJGNvbmZpZywgc3ViaGVhZGluZy0yKTtcbiAgICBtYXJnaW46IDAgMCAxNnB4O1xuICB9XG5cbiAgLm1hdC1oNCwgLm1hdC1zdWJoZWFkaW5nLTEsICN7JHNlbGVjdG9yfSBoNCB7XG4gICAgQGluY2x1ZGUgdHlwb2dyYXBoeS11dGlscy50eXBvZ3JhcGh5LWxldmVsKCRjb25maWcsIHN1YmhlYWRpbmctMSk7XG4gICAgbWFyZ2luOiAwIDAgMTZweDtcbiAgfVxuXG4gIC8vIE5vdGU6IHRoZSBzcGVjIGRvZXNuJ3QgaGF2ZSBhbnl0aGluZyB0aGF0IHdvdWxkIGNvcnJlc3BvbmQgdG8gaDUgYW5kIGg2LCBidXQgd2UgYWRkIHRoZXNlIGZvclxuICAvLyBjb25zaXN0ZW5jeS4gVGhlIGZvbnQgc2l6ZXMgY29tZSBmcm9tIHRoZSBDaHJvbWUgdXNlciBhZ2VudCBzdHlsZXMgd2hpY2ggaGF2ZSBoNSBhdCAwLjgzZW1cbiAgLy8gYW5kIGg2IGF0IDAuNjdlbS5cbiAgLm1hdC1oNSwgI3skc2VsZWN0b3J9IGg1IHtcbiAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtc2hvcnRoYW5kKFxuICAgICAgIC8vIGNhbGMgaXMgdXNlZCBoZXJlIHRvIHN1cHBvcnQgY3NzIHZhcmlhYmxlc1xuICAgICAgY2FsYygje3R5cG9ncmFwaHktdXRpbHMuZm9udC1zaXplKCRjb25maWcsIGJvZHktMSl9ICogMC44MyksXG4gICAgICB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtd2VpZ2h0KCRjb25maWcsIGJvZHktMSksXG4gICAgICB0eXBvZ3JhcGh5LXV0aWxzLmxpbmUtaGVpZ2h0KCRjb25maWcsIGJvZHktMSksXG4gICAgICB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtZmFtaWx5KCRjb25maWcsIGJvZHktMSlcbiAgICApO1xuXG4gICAgbWFyZ2luOiAwIDAgMTJweDtcbiAgfVxuXG4gIC5tYXQtaDYsICN7JHNlbGVjdG9yfSBoNiB7XG4gICAgQGluY2x1ZGUgdHlwb2dyYXBoeS11dGlscy5mb250LXNob3J0aGFuZChcbiAgICAgICAvLyBjYWxjIGlzIHVzZWQgaGVyZSB0byBzdXBwb3J0IGNzcyB2YXJpYWJsZXNcbiAgICAgIGNhbGMoI3t0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtc2l6ZSgkY29uZmlnLCBib2R5LTEpfSAqIDAuNjcpLFxuICAgICAgdHlwb2dyYXBoeS11dGlscy5mb250LXdlaWdodCgkY29uZmlnLCBib2R5LTEpLFxuICAgICAgdHlwb2dyYXBoeS11dGlscy5saW5lLWhlaWdodCgkY29uZmlnLCBib2R5LTEpLFxuICAgICAgdHlwb2dyYXBoeS11dGlscy5mb250LWZhbWlseSgkY29uZmlnLCBib2R5LTEpXG4gICAgKTtcblxuICAgIG1hcmdpbjogMCAwIDEycHg7XG4gIH1cblxuICAubWF0LWJvZHktc3Ryb25nLCAubWF0LWJvZHktMiB7XG4gICAgQGluY2x1ZGUgdHlwb2dyYXBoeS11dGlscy50eXBvZ3JhcGh5LWxldmVsKCRjb25maWcsIGJvZHktMik7XG4gIH1cblxuICAubWF0LWJvZHksIC5tYXQtYm9keS0xLCAjeyRzZWxlY3Rvcn0ge1xuICAgIEBpbmNsdWRlIHR5cG9ncmFwaHktdXRpbHMudHlwb2dyYXBoeS1sZXZlbCgkY29uZmlnLCBib2R5LTEpO1xuXG4gICAgcCB7XG4gICAgICBtYXJnaW46IDAgMCAxMnB4O1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtc21hbGwsIC5tYXQtY2FwdGlvbiB7XG4gICAgQGluY2x1ZGUgdHlwb2dyYXBoeS11dGlscy50eXBvZ3JhcGh5LWxldmVsKCRjb25maWcsIGNhcHRpb24pO1xuICB9XG5cbiAgLm1hdC1kaXNwbGF5LTQsICN7JHNlbGVjdG9yfSAubWF0LWRpc3BsYXktNCB7XG4gICAgQGluY2x1ZGUgdHlwb2dyYXBoeS11dGlscy50eXBvZ3JhcGh5LWxldmVsKCRjb25maWcsIGRpc3BsYXktNCk7XG4gICAgbWFyZ2luOiAwIDAgNTZweDtcbiAgfVxuXG4gIC5tYXQtZGlzcGxheS0zLCAjeyRzZWxlY3Rvcn0gLm1hdC1kaXNwbGF5LTMge1xuICAgIEBpbmNsdWRlIHR5cG9ncmFwaHktdXRpbHMudHlwb2dyYXBoeS1sZXZlbCgkY29uZmlnLCBkaXNwbGF5LTMpO1xuICAgIG1hcmdpbjogMCAwIDY0cHg7XG4gIH1cblxuICAubWF0LWRpc3BsYXktMiwgI3skc2VsZWN0b3J9IC5tYXQtZGlzcGxheS0yIHtcbiAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5LXV0aWxzLnR5cG9ncmFwaHktbGV2ZWwoJGNvbmZpZywgZGlzcGxheS0yKTtcbiAgICBtYXJnaW46IDAgMCA2NHB4O1xuICB9XG5cbiAgLm1hdC1kaXNwbGF5LTEsICN7JHNlbGVjdG9yfSAubWF0LWRpc3BsYXktMSB7XG4gICAgQGluY2x1ZGUgdHlwb2dyYXBoeS11dGlscy50eXBvZ3JhcGh5LWxldmVsKCRjb25maWcsIGRpc3BsYXktMSk7XG4gICAgbWFyZ2luOiAwIDAgNjRweDtcbiAgfVxufVxuXG4vLyBzdHlsZWxpbnQtZW5hYmxlIG1hdGVyaWFsL3RoZW1lLW1peGluLWFwaVxuIiwiQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnc2FzczptZXRhJztcbkB1c2UgJ3Nhc3M6c3RyaW5nJztcblxuXG4vLyBVdGlsaXR5IGZvciBmZXRjaGluZyBhIG5lc3RlZCB2YWx1ZSBmcm9tIGEgdHlwb2dyYXBoeSBjb25maWcuXG5AZnVuY3Rpb24gX21hdC1nZXQtdHlwZS12YWx1ZSgkY29uZmlnLCAkbGV2ZWwsICRuYW1lKSB7XG4gIEByZXR1cm4gbWFwLmdldChtYXAuZ2V0KCRjb25maWcsICRsZXZlbCksICRuYW1lKTtcbn1cblxuLy8vIEdldHMgdGhlIGZvbnQgc2l6ZSBmb3IgYSBsZXZlbCBpbnNpZGUgYSB0eXBvZ3JhcGh5IGNvbmZpZy5cbi8vLyBAcGFyYW0ge01hcH0gJGNvbmZpZyBBIHR5cG9ncmFwaHkgY29uZmlnLlxuLy8vIEBwYXJhbSB7TWFwfSAkbGV2ZWwgQSB0eXBvZ3JhcGh5IGxldmVsLlxuQGZ1bmN0aW9uIGZvbnQtc2l6ZSgkY29uZmlnLCAkbGV2ZWwpIHtcbiAgQHJldHVybiBfbWF0LWdldC10eXBlLXZhbHVlKCRjb25maWcsICRsZXZlbCwgZm9udC1zaXplKTtcbn1cblxuLy8vIEdldHMgdGhlIGxpbmUgaGVpZ2h0IGZvciBhIGxldmVsIGluc2lkZSBhIHR5cG9ncmFwaHkgY29uZmlnLlxuLy8vIEBwYXJhbSB7TWFwfSAkY29uZmlnIEEgdHlwb2dyYXBoeSBjb25maWcuXG4vLy8gQHBhcmFtIHtNYXB9ICRsZXZlbCBBIHR5cG9ncmFwaHkgbGV2ZWwuXG5AZnVuY3Rpb24gbGluZS1oZWlnaHQoJGNvbmZpZywgJGxldmVsKSB7XG4gIEByZXR1cm4gX21hdC1nZXQtdHlwZS12YWx1ZSgkY29uZmlnLCAkbGV2ZWwsIGxpbmUtaGVpZ2h0KTtcbn1cblxuLy8vIEdldHMgdGhlIGZvbnQgd2VpZ2h0IGZvciBhIGxldmVsIGluc2lkZSBhIHR5cG9ncmFwaHkgY29uZmlnLlxuLy8vIEBwYXJhbSB7TWFwfSAkY29uZmlnIEEgdHlwb2dyYXBoeSBjb25maWcuXG4vLy8gQHBhcmFtIHtNYXB9ICRsZXZlbCBBIHR5cG9ncmFwaHkgbGV2ZWwuXG5AZnVuY3Rpb24gZm9udC13ZWlnaHQoJGNvbmZpZywgJGxldmVsKSB7XG4gIEByZXR1cm4gX21hdC1nZXQtdHlwZS12YWx1ZSgkY29uZmlnLCAkbGV2ZWwsIGZvbnQtd2VpZ2h0KTtcbn1cblxuLy8vIEdldHMgdGhlIGxldHRlciBzcGFjaW5nIGZvciBhIGxldmVsIGluc2lkZSBhIHR5cG9ncmFwaHkgY29uZmlnLlxuLy8vIEBwYXJhbSB7TWFwfSAkY29uZmlnIEEgdHlwb2dyYXBoeSBjb25maWcuXG4vLy8gQHBhcmFtIHtNYXB9ICRsZXZlbCBBIHR5cG9ncmFwaHkgbGV2ZWwuXG5AZnVuY3Rpb24gbGV0dGVyLXNwYWNpbmcoJGNvbmZpZywgJGxldmVsKSB7XG4gIEByZXR1cm4gX21hdC1nZXQtdHlwZS12YWx1ZSgkY29uZmlnLCAkbGV2ZWwsIGxldHRlci1zcGFjaW5nKTtcbn1cblxuLy8vIEdldHMgdGhlIGZvbnQtZmFtaWx5IGZyb20gYSB0eXBvZ3JhcGh5IGNvbmZpZyBhbmQgcmVtb3ZlcyB0aGUgcXVvdGVzIGFyb3VuZCBpdC5cbi8vLyBAcGFyYW0ge01hcH0gJGNvbmZpZyBBIHR5cG9ncmFwaHkgY29uZmlnLlxuLy8vIEBwYXJhbSB7TWFwfSAkbGV2ZWwgQSB0eXBvZ3JhcGh5IGxldmVsLlxuQGZ1bmN0aW9uIGZvbnQtZmFtaWx5KCRjb25maWcsICRsZXZlbDogbnVsbCkge1xuICAkZm9udC1mYW1pbHk6IG1hcC5nZXQoJGNvbmZpZywgZm9udC1mYW1pbHkpO1xuXG4gIEBpZiAkbGV2ZWwgIT0gbnVsbCB7XG4gICAgJGZvbnQtZmFtaWx5OiBfbWF0LWdldC10eXBlLXZhbHVlKCRjb25maWcsICRsZXZlbCwgZm9udC1mYW1pbHkpO1xuICB9XG5cbiAgLy8gR3VhcmQgYWdhaW5zdCB1bnF1b3Rpbmcgbm9uLXN0cmluZyB2YWx1ZXMsIGJlY2F1c2UgaXQncyBkZXByZWNhdGVkLlxuICBAcmV0dXJuIGlmKG1ldGEudHlwZS1vZigkZm9udC1mYW1pbHkpID09IHN0cmluZywgc3RyaW5nLnVucXVvdGUoJGZvbnQtZmFtaWx5KSwgJGZvbnQtZmFtaWx5KTtcbn1cblxuLy8vIE91dHB1dHMgdGhlIHNob3J0aGFuZCBgZm9udGAgQ1NTIHByb3BlcnR5LCBiYXNlZCBvbiBhIHNldCBvZiB0eXBvZ3JhcGh5IHZhbHVlcy4gRmFsbHMgYmFjayB0b1xuLy8vIHRoZSBpbmRpdmlkdWFsIHByb3BlcnRpZXMgaWYgYSB2YWx1ZSB0aGF0IGlzbid0IGFsbG93ZWQgaW4gdGhlIHNob3J0aGFuZCBpcyBwYXNzZWQgaW4uXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRmb250LXNpemUgVGhlIGZvbnQtc2l6ZSB2YWx1ZS5cbi8vLyBAcGFyYW0ge1N0cmluZyB8IE51bWJlcn0gJGZvbnQtd2VpZ2h0IFRoZSBmb250LXdlaWdodCB2YWx1ZS5cbi8vLyBAcGFyYW0ge1N0cmluZyB8IE51bWJlcn0gJGxpbmUtaGVpZ2h0IFRoZSBsaW5lLWhlaWdodCB2YWx1ZS5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGZvbnQtZmFtaWx5IFRoZSBmb250LWZhbWlseSB2YWx1ZS5cbi8vLyBAcmV0dXJucyB7U3RyaW5nfSBUaGUgYGZvbnRgIHNob3J0aGFuZCB2YWx1ZSBjb21iaW5pbmcgdGhlIGdpdmVuIHBhcnRzLlxuQG1peGluIGZvbnQtc2hvcnRoYW5kKCRmb250LXNpemUsICRmb250LXdlaWdodCwgJGxpbmUtaGVpZ2h0LCAkZm9udC1mYW1pbHkpIHtcbiAgLy8gSWYgYW55IG9mIHRoZSB2YWx1ZXMgYXJlIHNldCB0byBgaW5oZXJpdGAsIHdlIGNhbid0IHVzZSB0aGUgc2hvcnRoYW5kXG4gIC8vIHNvIHdlIGZhbGwgYmFjayB0byBwYXNzaW5nIGluIHRoZSBpbmRpdmlkdWFsIHByb3BlcnRpZXMuXG4gIEBpZiAoJGZvbnQtc2l6ZSA9PSBpbmhlcml0IG9yXG4gICAgICAgJGZvbnQtd2VpZ2h0ID09IGluaGVyaXQgb3JcbiAgICAgICAkbGluZS1oZWlnaHQgPT0gaW5oZXJpdCBvclxuICAgICAgICRmb250LWZhbWlseSA9PSBpbmhlcml0IG9yXG4gICAgICAgJGZvbnQtc2l6ZSA9PSBudWxsIG9yXG4gICAgICAgJGZvbnQtd2VpZ2h0ID09IG51bGwgb3JcbiAgICAgICAkbGluZS1oZWlnaHQgPT0gbnVsbCBvclxuICAgICAgICRmb250LWZhbWlseSA9PSBudWxsKSB7XG5cbiAgICBmb250LXNpemU6ICRmb250LXNpemU7XG4gICAgZm9udC13ZWlnaHQ6ICRmb250LXdlaWdodDtcbiAgICBsaW5lLWhlaWdodDogJGxpbmUtaGVpZ2h0O1xuICAgIGZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIC8vIE90aGVyd2lzZSB1c2UgdGhlIHNob3J0aGFuZCBgZm9udGAsIGJlY2F1c2UgaXQncyB0aGUgbGVhc3QgYW1vdW50IG9mIGJ5dGVzLiBOb3RlXG4gICAgLy8gdGhhdCB3ZSBuZWVkIHRvIHVzZSBpbnRlcnBvbGF0aW9uIGZvciBgZm9udC1zaXplL2xpbmUtaGVpZ2h0YCBpbiBvcmRlciB0byBwcmV2ZW50XG4gICAgLy8gU2FzcyBmcm9tIGRpdmlkaW5nIHRoZSB0d28gdmFsdWVzLlxuICAgIGZvbnQ6ICRmb250LXdlaWdodCAjeyRmb250LXNpemV9LyN7JGxpbmUtaGVpZ2h0fSAkZm9udC1mYW1pbHk7XG4gIH1cbn1cblxuLy8vIEVtaXRzIENTUyBzdHlsZXMgZm9yIHRoZSBnaXZlbiB0eXBvZ3JhcGh5IGxldmVsLlxuLy8vIEBwYXJhbSB7TWFwfSAkY29uZmlnIEEgdHlwb2dyYXBoeSBjb25maWcuXG4vLy8gQHBhcmFtIHtNYXB9ICRsZXZlbCBBIHR5cG9ncmFwaHkgbGV2ZWwuXG5AbWl4aW4gdHlwb2dyYXBoeS1sZXZlbCgkY29uZmlnLCAkbGV2ZWwpIHtcbiAgJGZvbnQtc2l6ZTogZm9udC1zaXplKCRjb25maWcsICRsZXZlbCk7XG4gICRmb250LXdlaWdodDogZm9udC13ZWlnaHQoJGNvbmZpZywgJGxldmVsKTtcbiAgJGxpbmUtaGVpZ2h0OiBsaW5lLWhlaWdodCgkY29uZmlnLCAkbGV2ZWwpO1xuICAkZm9udC1mYW1pbHk6IGZvbnQtZmFtaWx5KCRjb25maWcsICRsZXZlbCk7XG5cbiAgQGluY2x1ZGUgZm9udC1zaG9ydGhhbmQoJGZvbnQtc2l6ZSwgJGZvbnQtd2VpZ2h0LCAkbGluZS1oZWlnaHQsICRmb250LWZhbWlseSk7XG4gIGxldHRlci1zcGFjaW5nOiBsZXR0ZXItc3BhY2luZygkY29uZmlnLCAkbGV2ZWwpO1xufVxuIiwiQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnLi4vY29yZS9zdHlsZS9wcml2YXRlJztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5JztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5LXV0aWxzJztcbkB1c2UgJy4uL2NvcmUvdGhlbWluZy90aGVtaW5nJztcblxuQG1peGluIGNvbG9yKCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAkYmFja2dyb3VuZDogbWFwLmdldCgkY29uZmlnLCBiYWNrZ3JvdW5kKTtcbiAgJGZvcmVncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgZm9yZWdyb3VuZCk7XG5cbiAgLm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyIHtcbiAgICBAaW5jbHVkZSBwcml2YXRlLnByaXZhdGUtdGhlbWUtZWxldmF0aW9uKDE2LCAkY29uZmlnKTtcbiAgICBiYWNrZ3JvdW5kOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGJhY2tncm91bmQsIGRpYWxvZyk7XG4gICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgdGV4dCk7XG4gIH1cbn1cblxuQG1peGluIHR5cG9ncmFwaHkoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0eXBvZ3JhcGh5LnByaXZhdGUtdHlwb2dyYXBoeS10by0yMDE0LWNvbmZpZyhcbiAgICAgIHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCRjb25maWctb3ItdGhlbWUpKTtcbiAgLm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyIHtcbiAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5LXV0aWxzLnR5cG9ncmFwaHktbGV2ZWwoJGNvbmZpZywgYm9keS0xKTtcbiAgfVxufVxuXG5AbWl4aW4gX2RlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIHRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiB0aGVtaW5nLnByaXZhdGUtbGVnYWN5LWdldC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgQGluY2x1ZGUgdGhlbWluZy5wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LWJvdHRvbS1zaGVldCcpIHtcbiAgICAkY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkdGhlbWUpO1xuICAgICRkZW5zaXR5OiB0aGVtaW5nLmdldC1kZW5zaXR5LWNvbmZpZygkdGhlbWUpO1xuICAgICR0eXBvZ3JhcGh5OiB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkdGhlbWUpO1xuXG4gICAgQGlmICRjb2xvciAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIGNvbG9yKCRjb2xvcik7XG4gICAgfVxuICAgIEBpZiAkZGVuc2l0eSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIF9kZW5zaXR5KCRkZW5zaXR5KTtcbiAgICB9XG4gICAgQGlmICR0eXBvZ3JhcGh5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgdHlwb2dyYXBoeSgkdHlwb2dyYXBoeSk7XG4gICAgfVxuICB9XG59XG4iLCJAdXNlICdzYXNzOm1hcCc7XG5AdXNlICdzYXNzOm1ldGEnO1xuQHVzZSAnLi4vY29yZS90aGVtaW5nL3RoZW1pbmcnO1xuQHVzZSAnLi4vY29yZS9zdHlsZS9wcml2YXRlJztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5JztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5LXV0aWxzJztcblxuJF9yaXBwbGUtb3BhY2l0eTogMC4xO1xuXG4vLyBBcHBsaWVzIGEgZm9jdXMgc3R5bGUgdG8gYW4gbWF0LWJ1dHRvbiBlbGVtZW50IGZvciBlYWNoIG9mIHRoZSBzdXBwb3J0ZWQgcGFsZXR0ZXMuXG5AbWl4aW4gX2ZvY3VzLW92ZXJsYXktY29sb3IoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRwcmltYXJ5OiBtYXAuZ2V0KCRjb25maWcsIHByaW1hcnkpO1xuICAkYWNjZW50OiBtYXAuZ2V0KCRjb25maWcsIGFjY2VudCk7XG4gICR3YXJuOiBtYXAuZ2V0KCRjb25maWcsIHdhcm4pO1xuXG4gICYubWF0LXByaW1hcnkgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRwcmltYXJ5KTtcbiAgfVxuXG4gICYubWF0LWFjY2VudCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5IHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGFjY2VudCk7XG4gIH1cblxuICAmLm1hdC13YXJuIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXkge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkd2Fybik7XG4gIH1cblxuICAmLm1hdC1idXR0b24tZGlzYWJsZWQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIH1cbn1cblxuLy8gQXBwbGllcyB0aGUgYmFja2dyb3VuZCBjb2xvciBmb3IgYSByaXBwbGUuIElmIHRoZSB2YWx1ZSBwcm92aWRlZCBpcyBub3QgYSBTYXNzIGNvbG9yLFxuLy8gd2UgYXNzdW1lIHRoYXQgd2UndmUgYmVlbiBnaXZlbiBhIENTUyB2YXJpYWJsZS4gU2luY2Ugd2UgY2FuJ3QgcGVyZm9ybSBhbHBoYS1ibGVuZGluZ1xuLy8gb24gYSBDU1MgdmFyaWFibGUsIHdlIGluc3RlYWQgYWRkIHRoZSBvcGFjaXR5IGRpcmVjdGx5IHRvIHRoZSByaXBwbGUgZWxlbWVudC5cbkBtaXhpbiBfcmlwcGxlLWJhY2tncm91bmQoJHBhbGV0dGUsICRodWUsICRvcGFjaXR5KSB7XG4gICRiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHBhbGV0dGUsICRodWUsICRvcGFjaXR5KTtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmQtY29sb3I7XG4gIEBpZiAobWV0YS50eXBlLW9mKCRiYWNrZ3JvdW5kLWNvbG9yKSAhPSBjb2xvcikge1xuICAgIG9wYWNpdHk6ICRvcGFjaXR5O1xuICB9XG59XG5cbkBtaXhpbiBfcmlwcGxlLWNvbG9yKCR0aGVtZSwgJGh1ZSwgJG9wYWNpdHk6ICRfcmlwcGxlLW9wYWNpdHkpIHtcbiAgJHByaW1hcnk6IG1hcC5nZXQoJHRoZW1lLCBwcmltYXJ5KTtcbiAgJGFjY2VudDogbWFwLmdldCgkdGhlbWUsIGFjY2VudCk7XG4gICR3YXJuOiBtYXAuZ2V0KCR0aGVtZSwgd2Fybik7XG5cbiAgJi5tYXQtcHJpbWFyeSAubWF0LXJpcHBsZS1lbGVtZW50IHtcbiAgICBAaW5jbHVkZSBfcmlwcGxlLWJhY2tncm91bmQoJHByaW1hcnksICRodWUsICRvcGFjaXR5KTtcbiAgfVxuXG4gICYubWF0LWFjY2VudCAubWF0LXJpcHBsZS1lbGVtZW50IHtcbiAgICBAaW5jbHVkZSBfcmlwcGxlLWJhY2tncm91bmQoJGFjY2VudCwgJGh1ZSwgJG9wYWNpdHkpO1xuICB9XG5cbiAgJi5tYXQtd2FybiAubWF0LXJpcHBsZS1lbGVtZW50IHtcbiAgICBAaW5jbHVkZSBfcmlwcGxlLWJhY2tncm91bmQoJHdhcm4sICRodWUsICRvcGFjaXR5KTtcbiAgfVxufVxuXG4vLyBBcHBsaWVzIGEgcHJvcGVydHkgdG8gYW4gbWF0LWJ1dHRvbiBlbGVtZW50IGZvciBlYWNoIG9mIHRoZSBzdXBwb3J0ZWQgcGFsZXR0ZXMuXG5AbWl4aW4gX3RoZW1lLXByb3BlcnR5KCR0aGVtZSwgJHByb3BlcnR5LCAkaHVlKSB7XG4gICRwcmltYXJ5OiBtYXAuZ2V0KCR0aGVtZSwgcHJpbWFyeSk7XG4gICRhY2NlbnQ6IG1hcC5nZXQoJHRoZW1lLCBhY2NlbnQpO1xuICAkd2FybjogbWFwLmdldCgkdGhlbWUsIHdhcm4pO1xuICAkYmFja2dyb3VuZDogbWFwLmdldCgkdGhlbWUsIGJhY2tncm91bmQpO1xuICAkZm9yZWdyb3VuZDogbWFwLmdldCgkdGhlbWUsIGZvcmVncm91bmQpO1xuXG4gICYubWF0LXByaW1hcnkge1xuICAgICN7JHByb3BlcnR5fTogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRwcmltYXJ5LCAkaHVlKTtcbiAgfVxuICAmLm1hdC1hY2NlbnQge1xuICAgICN7JHByb3BlcnR5fTogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRhY2NlbnQsICRodWUpO1xuICB9XG4gICYubWF0LXdhcm4ge1xuICAgICN7JHByb3BlcnR5fTogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCR3YXJuLCAkaHVlKTtcbiAgfVxuXG4gICYubWF0LXByaW1hcnksICYubWF0LWFjY2VudCwgJi5tYXQtd2FybiwgJi5tYXQtYnV0dG9uLWRpc2FibGVkIHtcbiAgICAmLm1hdC1idXR0b24tZGlzYWJsZWQge1xuICAgICAgJHBhbGV0dGU6IGlmKCRwcm9wZXJ0eSA9PSAnY29sb3InLCAkZm9yZWdyb3VuZCwgJGJhY2tncm91bmQpO1xuICAgICAgI3skcHJvcGVydHl9OiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHBhbGV0dGUsIGRpc2FibGVkLWJ1dHRvbik7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBjb2xvcigkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJHByaW1hcnk6IG1hcC5nZXQoJGNvbmZpZywgcHJpbWFyeSk7XG4gICRhY2NlbnQ6IG1hcC5nZXQoJGNvbmZpZywgYWNjZW50KTtcbiAgJHdhcm46IG1hcC5nZXQoJGNvbmZpZywgd2Fybik7XG4gICRiYWNrZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGJhY2tncm91bmQpO1xuICAkZm9yZWdyb3VuZDogbWFwLmdldCgkY29uZmlnLCBmb3JlZ3JvdW5kKTtcblxuICAubWF0LWJ1dHRvbiwgLm1hdC1pY29uLWJ1dHRvbiwgLm1hdC1zdHJva2VkLWJ1dHRvbiB7XG4gICAgLy8gQnV0dG9ucyB3aXRob3V0IGEgYmFja2dyb3VuZCBjb2xvciBzaG91bGQgaW5oZXJpdCB0aGUgZm9udCBjb2xvci4gVGhpcyBpcyBuZWNlc3NhcnkgdG9cbiAgICAvLyBlbnN1cmUgdGhhdCB0aGUgYnV0dG9uIGlzIHJlYWRhYmxlIG9uIGN1c3RvbSBiYWNrZ3JvdW5kIGNvbG9ycy4gSXQncyB3cm9uZyB0byBhbHdheXMgYXNzdW1lXG4gICAgLy8gdGhhdCB0aG9zZSBidXR0b25zIGFyZSBhbHdheXMgcGxhY2VkIGluc2lkZSBvZiBjb250YWluZXJzIHdpdGggdGhlIGRlZmF1bHQgYmFja2dyb3VuZFxuICAgIC8vIGNvbG9yIG9mIHRoZSB0aGVtZSAoZS5nLiB0aGVtZWQgdG9vbGJhcnMpLlxuICAgIGNvbG9yOiBpbmhlcml0O1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuXG4gICAgQGluY2x1ZGUgX3RoZW1lLXByb3BlcnR5KCRjb25maWcsICdjb2xvcicsIHRleHQpO1xuICAgIEBpbmNsdWRlIF9mb2N1cy1vdmVybGF5LWNvbG9yKCRjb25maWcpO1xuXG4gICAgLy8gU2V0dXAgdGhlIHJpcHBsZSBjb2xvciB0byBiZSBiYXNlZCBvbiB0aGUgdGV4dCBjb2xvci4gVGhpcyBlbnN1cmVzIHRoYXQgdGhlIHJpcHBsZXNcbiAgICAvLyBhcmUgbWF0Y2hpbmcgd2l0aCB0aGUgY3VycmVudCB0aGVtZSBwYWxldHRlIGFuZCBhcmUgaW4gY29udHJhc3QgdG8gdGhlIGJhY2tncm91bmQgY29sb3JcbiAgICAvLyAoZS5nIGluIHRoZW1lZCB0b29sYmFycykuXG4gICAgLm1hdC1yaXBwbGUtZWxlbWVudCB7XG4gICAgICBvcGFjaXR5OiAkX3JpcHBsZS1vcGFjaXR5O1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogY3VycmVudENvbG9yO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXkge1xuICAgIGJhY2tncm91bmQ6IG1hcC5nZXQoJGZvcmVncm91bmQsIGJhc2UpO1xuICB9XG5cbiAgLy8gTm90ZTogdGhpcyBuZWVkcyBhIGJpdCBleHRyYSBzcGVjaWZpY2l0eSwgYmVjYXVzZSB3ZSdyZSBub3QgZ3VhcmFudGVlZCB0aGUgaW5jbHVzaW9uXG4gIC8vIG9yZGVyIG9mIHRoZSB0aGVtZSBzdHlsZXMgYW5kIHRoZSBidXR0b24gcmVzZXQgbWF5IGVuZCB1cCByZXNldHRpbmcgdGhpcyBhcyB3ZWxsLlxuICAubWF0LXN0cm9rZWQtYnV0dG9uOm5vdCgubWF0LWJ1dHRvbi1kaXNhYmxlZCkge1xuICAgIGJvcmRlci1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBkaXZpZGVyKTtcbiAgfVxuXG4gIC5tYXQtZmxhdC1idXR0b24sIC5tYXQtcmFpc2VkLWJ1dHRvbiwgLm1hdC1mYWIsIC5tYXQtbWluaS1mYWIge1xuICAgIC8vIERlZmF1bHQgZm9udCBhbmQgYmFja2dyb3VuZCBjb2xvciB3aGVuIG5vdCB1c2luZyBhbnkgY29sb3IgcGFsZXR0ZS5cbiAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCB0ZXh0KTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGJhY2tncm91bmQsIHJhaXNlZC1idXR0b24pO1xuXG4gICAgQGluY2x1ZGUgX3RoZW1lLXByb3BlcnR5KCRjb25maWcsICdjb2xvcicsIGRlZmF1bHQtY29udHJhc3QpO1xuICAgIEBpbmNsdWRlIF90aGVtZS1wcm9wZXJ0eSgkY29uZmlnLCAnYmFja2dyb3VuZC1jb2xvcicsIGRlZmF1bHQpO1xuICAgIEBpbmNsdWRlIF9yaXBwbGUtY29sb3IoJGNvbmZpZywgZGVmYXVsdC1jb250cmFzdCk7XG4gIH1cblxuICAubWF0LXN0cm9rZWQtYnV0dG9uLCAubWF0LWZsYXQtYnV0dG9uIHtcbiAgICBAaW5jbHVkZSBwcml2YXRlLnByaXZhdGUtdGhlbWUtb3ZlcnJpZGFibGUtZWxldmF0aW9uKDAsICRjb25maWcpO1xuICB9XG5cbiAgLm1hdC1yYWlzZWQtYnV0dG9uIHtcbiAgICBAaW5jbHVkZSBwcml2YXRlLnByaXZhdGUtdGhlbWUtb3ZlcnJpZGFibGUtZWxldmF0aW9uKDIsICRjb25maWcpO1xuXG4gICAgJjpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpOmFjdGl2ZSB7XG4gICAgICBAaW5jbHVkZSBwcml2YXRlLnByaXZhdGUtdGhlbWUtb3ZlcnJpZGFibGUtZWxldmF0aW9uKDgsICRjb25maWcpO1xuICAgIH1cblxuICAgICYubWF0LWJ1dHRvbi1kaXNhYmxlZCB7XG4gICAgICBAaW5jbHVkZSBwcml2YXRlLnByaXZhdGUtdGhlbWUtb3ZlcnJpZGFibGUtZWxldmF0aW9uKDAsICRjb25maWcpO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtZmFiLCAubWF0LW1pbmktZmFiIHtcbiAgICBAaW5jbHVkZSBwcml2YXRlLnByaXZhdGUtdGhlbWUtb3ZlcnJpZGFibGUtZWxldmF0aW9uKDYsICRjb25maWcpO1xuXG4gICAgJjpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpOmFjdGl2ZSB7XG4gICAgICBAaW5jbHVkZSBwcml2YXRlLnByaXZhdGUtdGhlbWUtb3ZlcnJpZGFibGUtZWxldmF0aW9uKDEyLCAkY29uZmlnKTtcbiAgICB9XG5cbiAgICAmLm1hdC1idXR0b24tZGlzYWJsZWQge1xuICAgICAgQGluY2x1ZGUgcHJpdmF0ZS5wcml2YXRlLXRoZW1lLW92ZXJyaWRhYmxlLWVsZXZhdGlvbigwLCAkY29uZmlnKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHR5cG9ncmFwaHkoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0eXBvZ3JhcGh5LnByaXZhdGUtdHlwb2dyYXBoeS10by0yMDE0LWNvbmZpZyhcbiAgICAgIHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCRjb25maWctb3ItdGhlbWUpKTtcbiAgLm1hdC1idXR0b24sIC5tYXQtcmFpc2VkLWJ1dHRvbiwgLm1hdC1pY29uLWJ1dHRvbiwgLm1hdC1zdHJva2VkLWJ1dHRvbixcbiAgLm1hdC1mbGF0LWJ1dHRvbiwgLm1hdC1mYWIsIC5tYXQtbWluaS1mYWIge1xuICAgIGZvbnQ6IHtcbiAgICAgIGZhbWlseTogdHlwb2dyYXBoeS11dGlscy5mb250LWZhbWlseSgkY29uZmlnLCBidXR0b24pO1xuICAgICAgc2l6ZTogdHlwb2dyYXBoeS11dGlscy5mb250LXNpemUoJGNvbmZpZywgYnV0dG9uKTtcbiAgICAgIHdlaWdodDogdHlwb2dyYXBoeS11dGlscy5mb250LXdlaWdodCgkY29uZmlnLCBidXR0b24pO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gX2RlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIHRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiB0aGVtaW5nLnByaXZhdGUtbGVnYWN5LWdldC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgQGluY2x1ZGUgdGhlbWluZy5wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LWJ1dHRvbicpIHtcbiAgICAkY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkdGhlbWUpO1xuICAgICRkZW5zaXR5OiB0aGVtaW5nLmdldC1kZW5zaXR5LWNvbmZpZygkdGhlbWUpO1xuICAgICR0eXBvZ3JhcGh5OiB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkdGhlbWUpO1xuXG4gICAgQGlmICRjb2xvciAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIGNvbG9yKCRjb2xvcik7XG4gICAgfVxuICAgIEBpZiAkZGVuc2l0eSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIF9kZW5zaXR5KCRkZW5zaXR5KTtcbiAgICB9XG4gICAgQGlmICR0eXBvZ3JhcGh5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgdHlwb2dyYXBoeSgkdHlwb2dyYXBoeSk7XG4gICAgfVxuICB9XG59XG4iLCJAdXNlICdzYXNzOm1hcCc7XG5AdXNlICcuLi9jb3JlL3N0eWxlL3ByaXZhdGUnO1xuQHVzZSAnLi4vY29yZS90aGVtaW5nL3RoZW1pbmcnO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHknO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHktdXRpbHMnO1xuQHVzZSAnLi4vY29yZS9kZW5zaXR5L3ByaXZhdGUvY29tcGF0aWJpbGl0eSc7XG5AdXNlICcuL2J1dHRvbi10b2dnbGUtdmFyaWFibGVzJztcblxuQG1peGluIGNvbG9yKCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAkZm9yZWdyb3VuZDogbWFwLmdldCgkY29uZmlnLCBmb3JlZ3JvdW5kKTtcbiAgJGJhY2tncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgYmFja2dyb3VuZCk7XG4gICRkaXZpZGVyLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIGRpdmlkZXIpO1xuXG4gIC5tYXQtYnV0dG9uLXRvZ2dsZS1zdGFuZGFsb25lLFxuICAubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAge1xuICAgIEBpbmNsdWRlIHByaXZhdGUucHJpdmF0ZS10aGVtZS1lbGV2YXRpb24oMiwgJGNvbmZpZyk7XG4gIH1cblxuICAubWF0LWJ1dHRvbi10b2dnbGUtc3RhbmRhbG9uZS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkLFxuICAubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAtYXBwZWFyYW5jZS1zdGFuZGFyZCB7XG4gICAgYm94LXNoYWRvdzogbm9uZTtcbiAgfVxuXG4gIC5tYXQtYnV0dG9uLXRvZ2dsZSB7XG4gICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgaGludC10ZXh0KTtcblxuICAgIC5tYXQtYnV0dG9uLXRvZ2dsZS1mb2N1cy1vdmVybGF5IHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYmFja2dyb3VuZCwgZm9jdXNlZC1idXR0b24pO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkIHtcbiAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCB0ZXh0KTtcbiAgICBiYWNrZ3JvdW5kOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGJhY2tncm91bmQsIGNhcmQpO1xuXG4gICAgLm1hdC1idXR0b24tdG9nZ2xlLWZvY3VzLW92ZXJsYXkge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLCBmb2N1c2VkLWJ1dHRvbiwgMSk7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmQgLm1hdC1idXR0b24tdG9nZ2xlICsgLm1hdC1idXR0b24tdG9nZ2xlIHtcbiAgICBib3JkZXItbGVmdDogc29saWQgMXB4ICRkaXZpZGVyLWNvbG9yO1xuICB9XG5cbiAgW2Rpcj0ncnRsJ10gLm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmQgLm1hdC1idXR0b24tdG9nZ2xlICsgLm1hdC1idXR0b24tdG9nZ2xlIHtcbiAgICBib3JkZXItbGVmdDogbm9uZTtcbiAgICBib3JkZXItcmlnaHQ6IHNvbGlkIDFweCAkZGl2aWRlci1jb2xvcjtcbiAgfVxuXG4gIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkLm1hdC1idXR0b24tdG9nZ2xlLXZlcnRpY2FsIHtcbiAgICAubWF0LWJ1dHRvbi10b2dnbGUgKyAubWF0LWJ1dHRvbi10b2dnbGUge1xuICAgICAgYm9yZGVyLWxlZnQ6IG5vbmU7XG4gICAgICBib3JkZXItcmlnaHQ6IG5vbmU7XG4gICAgICBib3JkZXItdG9wOiBzb2xpZCAxcHggJGRpdmlkZXItY29sb3I7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1idXR0b24tdG9nZ2xlLWNoZWNrZWQge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYmFja2dyb3VuZCwgc2VsZWN0ZWQtYnV0dG9uKTtcbiAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBzZWNvbmRhcnktdGV4dCk7XG5cbiAgICAmLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmQge1xuICAgICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgdGV4dCk7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1idXR0b24tdG9nZ2xlLWRpc2FibGVkIHtcbiAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBkaXNhYmxlZC1idXR0b24pO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYmFja2dyb3VuZCwgZGlzYWJsZWQtYnV0dG9uLXRvZ2dsZSk7XG5cbiAgICAmLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmQge1xuICAgICAgYmFja2dyb3VuZDogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLCBjYXJkKTtcbiAgICB9XG5cbiAgICAmLm1hdC1idXR0b24tdG9nZ2xlLWNoZWNrZWQge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLCBzZWxlY3RlZC1kaXNhYmxlZC1idXR0b24pO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtYnV0dG9uLXRvZ2dsZS1zdGFuZGFsb25lLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmQsXG4gIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkIHtcbiAgICBib3JkZXI6IHNvbGlkIDFweCAkZGl2aWRlci1jb2xvcjtcbiAgfVxufVxuXG5AbWl4aW4gdHlwb2dyYXBoeSgkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHR5cG9ncmFwaHkucHJpdmF0ZS10eXBvZ3JhcGh5LXRvLTIwMTQtY29uZmlnKFxuICAgICAgdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJGNvbmZpZy1vci10aGVtZSkpO1xuICAubWF0LWJ1dHRvbi10b2dnbGUge1xuICAgIGZvbnQtZmFtaWx5OiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtZmFtaWx5KCRjb25maWcpO1xuICB9XG59XG5cbkBtaXhpbiBkZW5zaXR5KCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGRlbnNpdHktc2NhbGU6IHRoZW1pbmcuZ2V0LWRlbnNpdHktY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAkc3RhbmRhcmQtaGVpZ2h0OiBjb21wYXRpYmlsaXR5LnByaXZhdGUtZGVuc2l0eS1wcm9wLXZhbHVlKFxuICAgICAgYnV0dG9uLXRvZ2dsZS12YXJpYWJsZXMuJHN0YW5kYXJkLWRlbnNpdHktY29uZmlnLCAkZGVuc2l0eS1zY2FsZSwgaGVpZ2h0KTtcblxuICBAaW5jbHVkZSBjb21wYXRpYmlsaXR5LnByaXZhdGUtZGVuc2l0eS1sZWdhY3ktY29tcGF0aWJpbGl0eSgpIHtcbiAgICAubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZCAubWF0LWJ1dHRvbi10b2dnbGUtbGFiZWwtY29udGVudCB7XG4gICAgICBsaW5lLWhlaWdodDogJHN0YW5kYXJkLWhlaWdodDtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiB0aGVtaW5nLnByaXZhdGUtbGVnYWN5LWdldC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgQGluY2x1ZGUgdGhlbWluZy5wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LWJ1dHRvbi10b2dnbGUnKSB7XG4gICAgJGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJHRoZW1lKTtcbiAgICAkZGVuc2l0eTogdGhlbWluZy5nZXQtZGVuc2l0eS1jb25maWcoJHRoZW1lKTtcbiAgICAkdHlwb2dyYXBoeTogdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJHRoZW1lKTtcblxuICAgIEBpZiAkY29sb3IgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBjb2xvcigkY29sb3IpO1xuICAgIH1cbiAgICBAaWYgJGRlbnNpdHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBkZW5zaXR5KCRkZW5zaXR5KTtcbiAgICB9XG4gICAgQGlmICR0eXBvZ3JhcGh5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgdHlwb2dyYXBoeSgkdHlwb2dyYXBoeSk7XG4gICAgfVxuICB9XG59XG4iLCJAdXNlICdzYXNzOm1hcCc7XG5AdXNlICcuLi9jb3JlL3RoZW1pbmcvdGhlbWluZyc7XG5AdXNlICcuLi9jb3JlL3N0eWxlL3ByaXZhdGUnO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHknO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHktdXRpbHMnO1xuXG5cbkBtaXhpbiBjb2xvcigkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJGJhY2tncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgYmFja2dyb3VuZCk7XG4gICRmb3JlZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGZvcmVncm91bmQpO1xuXG4gIC5tYXQtY2FyZCB7XG4gICAgQGluY2x1ZGUgcHJpdmF0ZS5wcml2YXRlLXRoZW1lLW92ZXJyaWRhYmxlLWVsZXZhdGlvbigxLCAkY29uZmlnKTtcbiAgICBiYWNrZ3JvdW5kOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGJhY2tncm91bmQsIGNhcmQpO1xuICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIHRleHQpO1xuXG4gICAgLy8gTmVlZHMgZXh0cmEgc3BlY2lmaWNpdHkgdG8gYmUgYWJsZSB0byBvdmVycmlkZSB0aGUgZWxldmF0aW9uIHNlbGVjdG9ycy5cbiAgICAmLm1hdC1jYXJkLWZsYXQge1xuICAgICAgQGluY2x1ZGUgcHJpdmF0ZS5wcml2YXRlLXRoZW1lLW92ZXJyaWRhYmxlLWVsZXZhdGlvbigwLCAkY29uZmlnKTtcbiAgICB9XG4gIH1cblxuICAubWF0LWNhcmQtc3VidGl0bGUge1xuICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIHNlY29uZGFyeS10ZXh0KTtcbiAgfVxufVxuXG5AbWl4aW4gdHlwb2dyYXBoeSgkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHR5cG9ncmFwaHkucHJpdmF0ZS10eXBvZ3JhcGh5LXRvLTIwMTQtY29uZmlnKFxuICAgICAgdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJGNvbmZpZy1vci10aGVtZSkpO1xuICAubWF0LWNhcmQge1xuICAgIGZvbnQtZmFtaWx5OiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtZmFtaWx5KCRjb25maWcpO1xuICB9XG5cbiAgLm1hdC1jYXJkLXRpdGxlIHtcbiAgICBmb250OiB7XG4gICAgICBzaXplOiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtc2l6ZSgkY29uZmlnLCBoZWFkbGluZSk7XG4gICAgICB3ZWlnaHQ6IHR5cG9ncmFwaHktdXRpbHMuZm9udC13ZWlnaHQoJGNvbmZpZywgdGl0bGUpO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtY2FyZC1oZWFkZXIgLm1hdC1jYXJkLXRpdGxlIHtcbiAgICBmb250LXNpemU6IHR5cG9ncmFwaHktdXRpbHMuZm9udC1zaXplKCRjb25maWcsIHRpdGxlKTtcbiAgfVxuXG4gIC5tYXQtY2FyZC1zdWJ0aXRsZSxcbiAgLm1hdC1jYXJkLWNvbnRlbnQge1xuICAgIGZvbnQtc2l6ZTogdHlwb2dyYXBoeS11dGlscy5mb250LXNpemUoJGNvbmZpZywgYm9keS0xKTtcbiAgfVxufVxuXG5AbWl4aW4gX2RlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIHRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiB0aGVtaW5nLnByaXZhdGUtbGVnYWN5LWdldC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgQGluY2x1ZGUgdGhlbWluZy5wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LWNhcmQnKSB7XG4gICAgJGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJHRoZW1lKTtcbiAgICAkZGVuc2l0eTogdGhlbWluZy5nZXQtZGVuc2l0eS1jb25maWcoJHRoZW1lKTtcbiAgICAkdHlwb2dyYXBoeTogdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJHRoZW1lKTtcblxuICAgIEBpZiAkY29sb3IgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBjb2xvcigkY29sb3IpO1xuICAgIH1cbiAgICBAaWYgJGRlbnNpdHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBfZGVuc2l0eSgkZGVuc2l0eSk7XG4gICAgfVxuICAgIEBpZiAkdHlwb2dyYXBoeSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIHR5cG9ncmFwaHkoJHR5cG9ncmFwaHkpO1xuICAgIH1cbiAgfVxufVxuIiwiQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnLi4vY29yZS90aGVtaW5nL3RoZW1pbmcnO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHknO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHktdXRpbHMnO1xuXG5cbkBtaXhpbiBjb2xvcigkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJGlzLWRhcmstdGhlbWU6IG1hcC5nZXQoJGNvbmZpZywgaXMtZGFyayk7XG4gICRwcmltYXJ5OiBtYXAuZ2V0KCRjb25maWcsIHByaW1hcnkpO1xuICAkYWNjZW50OiBtYXAuZ2V0KCRjb25maWcsIGFjY2VudCk7XG4gICR3YXJuOiBtYXAuZ2V0KCRjb25maWcsIHdhcm4pO1xuICAkYmFja2dyb3VuZDogbWFwLmdldCgkY29uZmlnLCBiYWNrZ3JvdW5kKTtcbiAgJGZvcmVncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgZm9yZWdyb3VuZCk7XG5cblxuICAvLyBUaGUgY29sb3Igb2YgdGhlIGNoZWNrYm94J3MgY2hlY2ttYXJrIC8gbWl4ZWRtYXJrLlxuICAkY2hlY2tib3gtbWFyay1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLCBiYWNrZ3JvdW5kKTtcblxuICAvLyBOT1RFKHRyYXZpc2thdWZtYW4pOiBXaGlsZSB0aGUgc3BlYyBjYWxscyBmb3IgdHJhbnNsdWNlbnQgYmxhY2tzL3doaXRlcyBmb3IgZGlzYWJsZWQgY29sb3JzLFxuICAvLyB0aGlzIGRvZXMgbm90IHdvcmsgd2VsbCB3aXRoIGVsZW1lbnRzIGxheWVyZWQgb24gdG9wIG9mIG9uZSBhbm90aGVyLiBUbyBnZXQgYXJvdW5kIHRoaXMgd2VcbiAgLy8gYmxlbmQgdGhlIGNvbG9ycyB0b2dldGhlciBiYXNlZCBvbiB0aGUgYmFzZSBjb2xvciBhbmQgdGhlIHRoZW1lIGJhY2tncm91bmQuXG4gICR3aGl0ZS0zMHBjdC1vcGFjaXR5LW9uLWRhcms6ICM2ODY4Njg7XG4gICRibGFjay0yNnBjdC1vcGFjaXR5LW9uLWxpZ2h0OiAjYjBiMGIwO1xuICAkZGlzYWJsZWQtY29sb3I6IGlmKCRpcy1kYXJrLXRoZW1lLCAkd2hpdGUtMzBwY3Qtb3BhY2l0eS1vbi1kYXJrLCAkYmxhY2stMjZwY3Qtb3BhY2l0eS1vbi1saWdodCk7XG5cbiAgLm1hdC1jaGVja2JveC1mcmFtZSB7XG4gICAgYm9yZGVyLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIHNlY29uZGFyeS10ZXh0KTtcbiAgfVxuXG4gIC5tYXQtY2hlY2tib3gtY2hlY2ttYXJrIHtcbiAgICBmaWxsOiAkY2hlY2tib3gtbWFyay1jb2xvcjtcbiAgfVxuXG4gIC5tYXQtY2hlY2tib3gtY2hlY2ttYXJrLXBhdGgge1xuICAgIC8vICFpbXBvcnRhbnQgaXMgbmVlZGVkIGhlcmUgYmVjYXVzZSBhIHN0cm9rZSBtdXN0IGJlIHNldCBhcyBhblxuICAgIC8vIGF0dHJpYnV0ZSBvbiB0aGUgU1ZHIGluIG9yZGVyIGZvciBsaW5lIGFuaW1hdGlvbiB0byB3b3JrIHByb3Blcmx5LlxuICAgIHN0cm9rZTogJGNoZWNrYm94LW1hcmstY29sb3IgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tYXQtY2hlY2tib3gtbWl4ZWRtYXJrIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY2hlY2tib3gtbWFyay1jb2xvcjtcbiAgfVxuXG4gIC5tYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZSwgLm1hdC1jaGVja2JveC1jaGVja2VkIHtcbiAgICAmLm1hdC1wcmltYXJ5IC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHByaW1hcnkpO1xuICAgIH1cblxuICAgICYubWF0LWFjY2VudCAubWF0LWNoZWNrYm94LWJhY2tncm91bmQge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRhY2NlbnQpO1xuICAgIH1cblxuICAgICYubWF0LXdhcm4gLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkd2Fybik7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1jaGVja2JveC1kaXNhYmxlZCB7XG4gICAgJi5tYXQtY2hlY2tib3gtY2hlY2tlZCxcbiAgICAmLm1hdC1jaGVja2JveC1pbmRldGVybWluYXRlIHtcbiAgICAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZCB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRkaXNhYmxlZC1jb2xvcjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmOm5vdCgubWF0LWNoZWNrYm94LWNoZWNrZWQpIHtcbiAgICAgIC5tYXQtY2hlY2tib3gtZnJhbWUge1xuICAgICAgICBib3JkZXItY29sb3I6ICRkaXNhYmxlZC1jb2xvcjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAubWF0LWNoZWNrYm94LWxhYmVsIHtcbiAgICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIHNlY29uZGFyeS10ZXh0KTtcbiAgICB9XG4gIH1cblxuICAvLyBTd2l0Y2ggdGhpcyB0byBhIHNvbGlkIGNvbG9yIHNpbmNlIHdlJ3JlIHVzaW5nIGBvcGFjaXR5YFxuICAvLyB0byBjb250cm9sIGhvdyBvcGFxdWUgdGhlIHJpcHBsZSBzaG91bGQgYmUuXG4gIC5tYXQtY2hlY2tib3ggLm1hdC1yaXBwbGUtZWxlbWVudCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogbWFwLmdldChtYXAuZ2V0KCRjb25maWcsIGZvcmVncm91bmQpLCBiYXNlKTtcbiAgfVxuXG4gIC5tYXQtY2hlY2tib3gtY2hlY2tlZDpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCksXG4gIC5tYXQtY2hlY2tib3g6YWN0aXZlOm5vdCgubWF0LWNoZWNrYm94LWRpc2FibGVkKSB7XG4gICAgJi5tYXQtcHJpbWFyeSAubWF0LXJpcHBsZS1lbGVtZW50IHtcbiAgICAgIGJhY2tncm91bmQ6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkcHJpbWFyeSk7XG4gICAgfVxuXG4gICAgJi5tYXQtYWNjZW50IC5tYXQtcmlwcGxlLWVsZW1lbnQge1xuICAgICAgYmFja2dyb3VuZDogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRhY2NlbnQpO1xuICAgIH1cblxuICAgICYubWF0LXdhcm4gLm1hdC1yaXBwbGUtZWxlbWVudCB7XG4gICAgICBiYWNrZ3JvdW5kOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHdhcm4pO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gdHlwb2dyYXBoeSgkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHR5cG9ncmFwaHkucHJpdmF0ZS10eXBvZ3JhcGh5LXRvLTIwMTQtY29uZmlnKFxuICAgICAgdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJGNvbmZpZy1vci10aGVtZSkpO1xuICAubWF0LWNoZWNrYm94IHtcbiAgICBmb250LWZhbWlseTogdHlwb2dyYXBoeS11dGlscy5mb250LWZhbWlseSgkY29uZmlnKTtcbiAgfVxuXG4gIC8vIFRPRE8oa2FyYSk6IFJlbW92ZSB0aGlzIHN0eWxlIHdoZW4gZml4aW5nIHZlcnRpY2FsIGJhc2VsaW5lXG4gIC5tYXQtY2hlY2tib3gtbGF5b3V0IC5tYXQtY2hlY2tib3gtbGFiZWwge1xuICAgIGxpbmUtaGVpZ2h0OiB0eXBvZ3JhcGh5LXV0aWxzLmxpbmUtaGVpZ2h0KCRjb25maWcsIGJvZHktMik7XG4gIH1cbn1cblxuQG1peGluIF9kZW5zaXR5KCRjb25maWctb3ItdGhlbWUpIHt9XG5cbkBtaXhpbiB0aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKSB7XG4gICR0aGVtZTogdGhlbWluZy5wcml2YXRlLWxlZ2FjeS1nZXQtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZyk7XG4gIEBpbmNsdWRlIHRoZW1pbmcucHJpdmF0ZS1jaGVjay1kdXBsaWNhdGUtdGhlbWUtc3R5bGVzKCR0aGVtZSwgJ21hdC1jaGVja2JveCcpIHtcbiAgICAkY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkdGhlbWUpO1xuICAgICRkZW5zaXR5OiB0aGVtaW5nLmdldC1kZW5zaXR5LWNvbmZpZygkdGhlbWUpO1xuICAgICR0eXBvZ3JhcGh5OiB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkdGhlbWUpO1xuXG4gICAgQGlmICRjb2xvciAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIGNvbG9yKCRjb2xvcik7XG4gICAgfVxuICAgIEBpZiAkZGVuc2l0eSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIF9kZW5zaXR5KCRkZW5zaXR5KTtcbiAgICB9XG4gICAgQGlmICR0eXBvZ3JhcGh5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgdHlwb2dyYXBoeSgkdHlwb2dyYXBoeSk7XG4gICAgfVxuICB9XG59XG4iLCJAdXNlICdzYXNzOm1hcCc7XG5AdXNlICdzYXNzOm1ldGEnO1xuQHVzZSAnLi4vY29yZS9zdHlsZS9wcml2YXRlJztcbkB1c2UgJy4uL2NvcmUvdGhlbWluZy90aGVtaW5nJztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5JztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5LXV0aWxzJztcblxuJGNoaXAtcmVtb3ZlLWZvbnQtc2l6ZTogMThweDtcblxuQG1peGluIF9lbGVtZW50LWNvbG9yKCRmb3JlZ3JvdW5kLCAkYmFja2dyb3VuZCkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFja2dyb3VuZDtcbiAgY29sb3I6ICRmb3JlZ3JvdW5kO1xuXG4gIC5tYXQtY2hpcC1yZW1vdmUge1xuICAgIGNvbG9yOiAkZm9yZWdyb3VuZDtcbiAgICBvcGFjaXR5OiAwLjQ7XG4gIH1cbn1cblxuXG4vLyBBcHBsaWVzIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIGZvciBhIHJpcHBsZSBlbGVtZW50LlxuLy8gSWYgdGhlIGNvbG9yIHZhbHVlIHByb3ZpZGVkIGlzIG5vdCBhIFNhc3MgY29sb3IsXG4vLyB3ZSBhc3N1bWUgdGhhdCB3ZSd2ZSBiZWVuIGdpdmVuIGEgQ1NTIHZhcmlhYmxlLlxuLy8gU2luY2Ugd2UgY2FuJ3QgcGVyZm9ybSBhbHBoYS1ibGVuZGluZyBvbiBhIENTUyB2YXJpYWJsZSxcbi8vIHdlIGluc3RlYWQgYWRkIHRoZSBvcGFjaXR5IGRpcmVjdGx5IHRvIHRoZSByaXBwbGUgZWxlbWVudC5cbkBtaXhpbiBfcmlwcGxlLWJhY2tncm91bmQoJHBhbGV0dGUsICRkZWZhdWx0LWNvbnRyYXN0LCAkb3BhY2l0eSkge1xuICAkYmFja2dyb3VuZC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRwYWxldHRlLCAkZGVmYXVsdC1jb250cmFzdCwgJG9wYWNpdHkpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFja2dyb3VuZC1jb2xvcjtcbiAgQGlmIChtZXRhLnR5cGUtb2YoJGJhY2tncm91bmQtY29sb3IpICE9IGNvbG9yKSB7XG4gICAgb3BhY2l0eTogJG9wYWNpdHk7XG4gIH1cbn1cblxuQG1peGluIF9wYWxldHRlLXN0eWxlcygkcGFsZXR0ZSkge1xuICBAaW5jbHVkZSBfZWxlbWVudC1jb2xvcih0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHBhbGV0dGUsIGRlZmF1bHQtY29udHJhc3QpLFxuICAgIHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkcGFsZXR0ZSkpO1xuXG4gIC5tYXQtcmlwcGxlLWVsZW1lbnQge1xuICAgIEBpbmNsdWRlIF9yaXBwbGUtYmFja2dyb3VuZCgkcGFsZXR0ZSwgZGVmYXVsdC1jb250cmFzdCwgMC4xKTtcbiAgfVxufVxuXG5AbWl4aW4gY29sb3IoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRpcy1kYXJrLXRoZW1lOiBtYXAuZ2V0KCRjb25maWcsIGlzLWRhcmspO1xuICAkcHJpbWFyeTogbWFwLmdldCgkY29uZmlnLCBwcmltYXJ5KTtcbiAgJGFjY2VudDogbWFwLmdldCgkY29uZmlnLCBhY2NlbnQpO1xuICAkd2FybjogbWFwLmdldCgkY29uZmlnLCB3YXJuKTtcbiAgJGJhY2tncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgYmFja2dyb3VuZCk7XG4gICRmb3JlZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGZvcmVncm91bmQpO1xuXG4gICR1bnNlbGVjdGVkLWJhY2tncm91bmQ6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYmFja2dyb3VuZCwgdW5zZWxlY3RlZC1jaGlwKTtcbiAgJHVuc2VsZWN0ZWQtZm9yZWdyb3VuZDogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCB0ZXh0KTtcblxuICAubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAge1xuICAgIEBpbmNsdWRlIF9lbGVtZW50LWNvbG9yKCR1bnNlbGVjdGVkLWZvcmVncm91bmQsICR1bnNlbGVjdGVkLWJhY2tncm91bmQpO1xuXG4gICAgJjpub3QoLm1hdC1jaGlwLWRpc2FibGVkKSB7XG4gICAgICAmOmFjdGl2ZSB7XG4gICAgICAgIEBpbmNsdWRlIHByaXZhdGUucHJpdmF0ZS10aGVtZS1lbGV2YXRpb24oMywgJGNvbmZpZyk7XG4gICAgICB9XG5cbiAgICAgIC5tYXQtY2hpcC1yZW1vdmU6aG92ZXIge1xuICAgICAgICBvcGFjaXR5OiAwLjU0O1xuICAgICAgfVxuICAgIH1cblxuICAgICYubWF0LWNoaXAtZGlzYWJsZWQge1xuICAgICAgb3BhY2l0eTogMC40O1xuICAgIH1cblxuICAgICY6OmFmdGVyIHtcbiAgICAgIGJhY2tncm91bmQ6IG1hcC5nZXQoJGZvcmVncm91bmQsIGJhc2UpO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZCB7XG4gICAgJi5tYXQtcHJpbWFyeSB7XG4gICAgICBAaW5jbHVkZSBfcGFsZXR0ZS1zdHlsZXMoJHByaW1hcnkpO1xuICAgIH1cblxuICAgICYubWF0LXdhcm4ge1xuICAgICAgQGluY2x1ZGUgX3BhbGV0dGUtc3R5bGVzKCR3YXJuKTtcbiAgICB9XG5cbiAgICAmLm1hdC1hY2NlbnQge1xuICAgICAgQGluY2x1ZGUgX3BhbGV0dGUtc3R5bGVzKCRhY2NlbnQpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gdHlwb2dyYXBoeSgkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHR5cG9ncmFwaHkucHJpdmF0ZS10eXBvZ3JhcGh5LXRvLTIwMTQtY29uZmlnKFxuICAgICAgdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJGNvbmZpZy1vci10aGVtZSkpO1xuICAubWF0LWNoaXAge1xuICAgIGZvbnQtc2l6ZTogdHlwb2dyYXBoeS11dGlscy5mb250LXNpemUoJGNvbmZpZywgYm9keS0yKTtcbiAgICBmb250LXdlaWdodDogdHlwb2dyYXBoeS11dGlscy5mb250LXdlaWdodCgkY29uZmlnLCBib2R5LTIpO1xuXG4gICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb24sXG4gICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbiB7XG4gICAgICBmb250LXNpemU6ICRjaGlwLXJlbW92ZS1mb250LXNpemU7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBfZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZykge1xuICAkdGhlbWU6IHRoZW1pbmcucHJpdmF0ZS1sZWdhY3ktZ2V0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICBAaW5jbHVkZSB0aGVtaW5nLnByaXZhdGUtY2hlY2stZHVwbGljYXRlLXRoZW1lLXN0eWxlcygkdGhlbWUsICdtYXQtY2hpcHMnKSB7XG4gICAgJGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJHRoZW1lKTtcbiAgICAkZGVuc2l0eTogdGhlbWluZy5nZXQtZGVuc2l0eS1jb25maWcoJHRoZW1lKTtcbiAgICAkdHlwb2dyYXBoeTogdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJHRoZW1lKTtcblxuICAgIEBpZiAkY29sb3IgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBjb2xvcigkY29sb3IpO1xuICAgIH1cbiAgICBAaWYgJGRlbnNpdHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBfZGVuc2l0eSgkZGVuc2l0eSk7XG4gICAgfVxuICAgIEBpZiAkdHlwb2dyYXBoeSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIHR5cG9ncmFwaHkoJHR5cG9ncmFwaHkpO1xuICAgIH1cbiAgfVxufVxuXG5cbiIsIkB1c2UgJ3Nhc3M6bWFwJztcbkB1c2UgJy4uL2NvcmUvdGhlbWluZy90aGVtaW5nJztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5JztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5LXV0aWxzJztcblxuQG1peGluIGNvbG9yKCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAkYmFja2dyb3VuZDogbWFwLmdldCgkY29uZmlnLCBiYWNrZ3JvdW5kKTtcbiAgJGZvcmVncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgZm9yZWdyb3VuZCk7XG5cbiAgLm1hdC10YWJsZSB7XG4gICAgYmFja2dyb3VuZDogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLCAnY2FyZCcpO1xuICB9XG5cbiAgLm1hdC10YWJsZSB0aGVhZCwgLm1hdC10YWJsZSB0Ym9keSwgLm1hdC10YWJsZSB0Zm9vdCxcbiAgbWF0LWhlYWRlci1yb3csIG1hdC1yb3csIG1hdC1mb290ZXItcm93LFxuICBbbWF0LWhlYWRlci1yb3ddLCBbbWF0LXJvd10sIFttYXQtZm9vdGVyLXJvd10sXG4gIC5tYXQtdGFibGUtc3RpY2t5IHtcbiAgICBiYWNrZ3JvdW5kOiBpbmhlcml0O1xuICB9XG5cbiAgbWF0LXJvdywgbWF0LWhlYWRlci1yb3csIG1hdC1mb290ZXItcm93LFxuICB0aC5tYXQtaGVhZGVyLWNlbGwsIHRkLm1hdC1jZWxsLCB0ZC5tYXQtZm9vdGVyLWNlbGwge1xuICAgIGJvcmRlci1ib3R0b20tY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgZGl2aWRlcik7XG4gIH1cblxuICAubWF0LWhlYWRlci1jZWxsIHtcbiAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBzZWNvbmRhcnktdGV4dCk7XG4gIH1cblxuICAubWF0LWNlbGwsIC5tYXQtZm9vdGVyLWNlbGwge1xuICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIHRleHQpO1xuICB9XG59XG5cbkBtaXhpbiB0eXBvZ3JhcGh5KCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdHlwb2dyYXBoeS5wcml2YXRlLXR5cG9ncmFwaHktdG8tMjAxNC1jb25maWcoXG4gICAgICB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKSk7XG4gIC5tYXQtdGFibGUge1xuICAgIGZvbnQtZmFtaWx5OiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtZmFtaWx5KCRjb25maWcpO1xuICB9XG5cbiAgLm1hdC1oZWFkZXItY2VsbCB7XG4gICAgZm9udC1zaXplOiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtc2l6ZSgkY29uZmlnLCBjYXB0aW9uKTtcbiAgICBmb250LXdlaWdodDogdHlwb2dyYXBoeS11dGlscy5mb250LXdlaWdodCgkY29uZmlnLCBib2R5LTIpO1xuICB9XG5cbiAgLm1hdC1jZWxsLCAubWF0LWZvb3Rlci1jZWxsIHtcbiAgICBmb250LXNpemU6IHR5cG9ncmFwaHktdXRpbHMuZm9udC1zaXplKCRjb25maWcsIGJvZHktMSk7XG4gIH1cbn1cblxuQG1peGluIF9kZW5zaXR5KCRjb25maWctb3ItdGhlbWUpIHt9XG5cbkBtaXhpbiB0aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKSB7XG4gICR0aGVtZTogdGhlbWluZy5wcml2YXRlLWxlZ2FjeS1nZXQtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZyk7XG4gIEBpbmNsdWRlIHRoZW1pbmcucHJpdmF0ZS1jaGVjay1kdXBsaWNhdGUtdGhlbWUtc3R5bGVzKCR0aGVtZSwgJ21hdC10YWJsZScpIHtcbiAgICAkY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkdGhlbWUpO1xuICAgICRkZW5zaXR5OiB0aGVtaW5nLmdldC1kZW5zaXR5LWNvbmZpZygkdGhlbWUpO1xuICAgICR0eXBvZ3JhcGh5OiB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkdGhlbWUpO1xuXG4gICAgQGlmICRjb2xvciAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIGNvbG9yKCRjb2xvcik7XG4gICAgfVxuICAgIEBpZiAkZGVuc2l0eSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIF9kZW5zaXR5KCRkZW5zaXR5KTtcbiAgICB9XG4gICAgQGlmICR0eXBvZ3JhcGh5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgdHlwb2dyYXBoeSgkdHlwb2dyYXBoeSk7XG4gICAgfVxuICB9XG59XG4iLCJAdXNlICdzYXNzOmNvbG9yJztcbkB1c2UgJ3Nhc3M6bWFwJztcbkB1c2UgJ3Nhc3M6bWF0aCc7XG5AdXNlICdzYXNzOm1ldGEnO1xuQHVzZSAnLi4vY29yZS9zdHlsZS9wcml2YXRlJztcbkB1c2UgJy4uL2NvcmUvdGhlbWluZy90aGVtaW5nJztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5JztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5LXV0aWxzJztcblxuXG4kc2VsZWN0ZWQtdG9kYXktYm94LXNoYWRvdy13aWR0aDogMXB4O1xuJHNlbGVjdGVkLWZhZGUtYW1vdW50OiAwLjY7XG4kcmFuZ2UtZmFkZS1hbW91bnQ6IDAuMjtcbiR0b2RheS1mYWRlLWFtb3VudDogMC4yO1xuJGNhbGVuZGFyLWJvZHktZm9udC1zaXplOiAxM3B4ICFkZWZhdWx0O1xuJGNhbGVuZGFyLXdlZWtkYXktdGFibGUtZm9udC1zaXplOiAxMXB4ICFkZWZhdWx0O1xuXG5AbWl4aW4gX2NvbG9yKCRwYWxldHRlKSB7XG4gIEBpbmNsdWRlIGRhdGUtcmFuZ2UtY29sb3JzKFxuICAgIHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkcGFsZXR0ZSwgZGVmYXVsdCwgJHJhbmdlLWZhZGUtYW1vdW50KSk7XG5cbiAgLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHBhbGV0dGUpO1xuICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHBhbGV0dGUsIGRlZmF1bHQtY29udHJhc3QpO1xuICB9XG5cbiAgLm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkID4gLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkIHtcbiAgICAkYmFja2dyb3VuZDogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRwYWxldHRlKTtcblxuICAgIEBpZiAobWV0YS50eXBlLW9mKCRiYWNrZ3JvdW5kKSA9PSBjb2xvcikge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogY29sb3IuYWRqdXN0KCRiYWNrZ3JvdW5kLCAkYWxwaGE6IC0kc2VsZWN0ZWQtZmFkZS1hbW91bnQpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAvLyBJZiB3ZSBjb3VsZG4ndCByZXNvbHZlIHRvIGJhY2tncm91bmQgdG8gYSBjb2xvciAoZS5nLiBpdCdzIGEgQ1NTIHZhcmlhYmxlKSxcbiAgICAgIC8vIGZhbGwgYmFjayB0byBmYWRpbmcgdGhlIGNvbnRlbnQgb3V0IHZpYSBgb3BhY2l0eWAuXG4gICAgICBvcGFjaXR5OiAkdG9kYXktZmFkZS1hbW91bnQ7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5Lm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkIHtcbiAgICBib3gtc2hhZG93OiBpbnNldCAwIDAgMCAkc2VsZWN0ZWQtdG9kYXktYm94LXNoYWRvdy13aWR0aFxuICAgICAgICAgICAgICAgIHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkcGFsZXR0ZSwgZGVmYXVsdC1jb250cmFzdCk7XG4gIH1cblxuICAubWF0LWNhbGVuZGFyLWJvZHktY2VsbDpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkKTpob3ZlcixcbiAgLmNkay1rZXlib2FyZC1mb2N1c2VkIC5tYXQtY2FsZW5kYXItYm9keS1hY3RpdmUsXG4gIC5jZGstcHJvZ3JhbS1mb2N1c2VkIC5tYXQtY2FsZW5kYXItYm9keS1hY3RpdmUge1xuICAgICYgPiAubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50IHtcbiAgICAgIEBpbmNsdWRlIF91bnNlbGVjdGVkLWNlbGwge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHBhbGV0dGUsIDAuMyk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vIFV0aWxpdHkgbWl4aW4gdG8gdGFyZ2V0IGNlbGxzIHRoYXQgYXJlbid0IHNlbGVjdGVkLiBVc2VkIHRvIG1ha2Ugc2VsZWN0b3IgZWFzaWVyIHRvIGZvbGxvdy5cbkBtaXhpbiBfdW5zZWxlY3RlZC1jZWxsIHtcbiAgJjpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuQG1peGluIGNvbG9yKCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAkZm9yZWdyb3VuZDogbWFwLmdldCgkY29uZmlnLCBmb3JlZ3JvdW5kKTtcbiAgJGJhY2tncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgYmFja2dyb3VuZCk7XG4gICRkaXNhYmxlZC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBkaXNhYmxlZC10ZXh0KTtcblxuICAubWF0LWNhbGVuZGFyLWFycm93IHtcbiAgICBib3JkZXItdG9wLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIGljb24pO1xuICB9XG5cbiAgLy8gVGhlIHByZXYvbmV4dCBidXR0b25zIG5lZWQgYSBiaXQgbW9yZSBzcGVjaWZpY2l0eSB0b1xuICAvLyBhdm9pZCBiZWluZyBvdmVyd3JpdHRlbiBieSB0aGUgLm1hdC1pY29uLWJ1dHRvbi5cbiAgLm1hdC1kYXRlcGlja2VyLXRvZ2dsZSxcbiAgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQgLm1hdC1jYWxlbmRhci1uZXh0LWJ1dHRvbixcbiAgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQgLm1hdC1jYWxlbmRhci1wcmV2aW91cy1idXR0b24ge1xuICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIGljb24pO1xuICB9XG5cbiAgLm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXIge1xuICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIGhpbnQtdGV4dCk7XG4gIH1cblxuICAubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlci1kaXZpZGVyOjphZnRlciB7XG4gICAgYmFja2dyb3VuZDogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBkaXZpZGVyKTtcbiAgfVxuXG4gIC5tYXQtY2FsZW5kYXItYm9keS1sYWJlbCB7XG4gICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgc2Vjb25kYXJ5LXRleHQpO1xuICB9XG5cbiAgLm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudCxcbiAgLm1hdC1kYXRlLXJhbmdlLWlucHV0LXNlcGFyYXRvciB7XG4gICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgdGV4dCk7XG4gICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgfVxuXG4gIC5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZCA+IC5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnQge1xuICAgIEBpbmNsdWRlIF91bnNlbGVjdGVkLWNlbGwge1xuICAgICAgY29sb3I6ICRkaXNhYmxlZC1jb2xvcjtcbiAgICB9XG4gIH1cblxuICAubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQgLm1hdC1kYXRlLXJhbmdlLWlucHV0LXNlcGFyYXRvciB7XG4gICAgY29sb3I6ICRkaXNhYmxlZC1jb2xvcjtcbiAgfVxuXG4gIC5tYXQtY2FsZW5kYXItYm9keS1pbi1wcmV2aWV3IHtcbiAgICAkZGl2aWRlci1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBkaXZpZGVyKTtcblxuICAgIEBpZiBtZXRhLnR5cGUtb2YoJGRpdmlkZXItY29sb3IpID09IGNvbG9yIHtcbiAgICAgIC8vIFRoZSBkaXZpZGVyIGNvbG9yIGlzIHNldCB1bmRlciB0aGUgYXNzdW1wdGlvbiB0aGF0IGl0J2xsIGJlIHVzZWRcbiAgICAgIC8vIGZvciBhIHNvbGlkIGJvcmRlciwgYnV0IGJlY2F1c2Ugd2UncmUgdXNpbmcgYSBkYXNoZWQgYm9yZGVyIGZvciB0aGVcbiAgICAgIC8vIHByZXZpZXcgcmFuZ2UsIHdlIG5lZWQgdG8gYnVtcCBpdHMgb3BhY2l0eSB0byBlbnN1cmUgdGhhdCBpdCdzIHZpc2libGUuXG4gICAgICBjb2xvcjogcmdiYSgkZGl2aWRlci1jb2xvciwgbWF0aC5taW4ob3BhY2l0eSgkZGl2aWRlci1jb2xvcikgKiAyLCAxKSk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIGNvbG9yOiAkZGl2aWRlci1jb2xvcjtcbiAgICB9XG4gIH1cblxuICAubWF0LWNhbGVuZGFyLWJvZHktdG9kYXkge1xuICAgIEBpbmNsdWRlIF91bnNlbGVjdGVkLWNlbGwge1xuICAgICAgLy8gTm90ZTogdGhvdWdoIGl0J3Mgbm90IHRleHQsIHRoZSBib3JkZXIgaXMgYSBoaW50IGFib3V0IHRoZSBmYWN0IHRoYXQgdGhpcyBpcyB0b2RheSdzIGRhdGUsXG4gICAgICAvLyBzbyB3ZSB1c2UgdGhlIGhpbnQgY29sb3IuXG4gICAgICBib3JkZXItY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgaGludC10ZXh0KTtcbiAgICB9XG4gIH1cblxuICAubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWQgPiAubWF0LWNhbGVuZGFyLWJvZHktdG9kYXkge1xuICAgIEBpbmNsdWRlIF91bnNlbGVjdGVkLWNlbGwge1xuICAgICAgJGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIGhpbnQtdGV4dCk7XG5cbiAgICAgIEBpZiAobWV0YS50eXBlLW9mKCRjb2xvcikgPT0gY29sb3IpIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiBjb2xvci5hZGp1c3QoJGNvbG9yLCAkYWxwaGE6IC0kdG9kYXktZmFkZS1hbW91bnQpO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAvLyBJZiB0aGUgY29sb3IgZGlkbid0IHJlc29sdmUgdG8gYSBjb2xvciB2YWx1ZSwgYnV0IHNvbWV0aGluZyBsaWtlIGEgQ1NTIHZhcmlhYmxlLCB3ZSBjYW4ndFxuICAgICAgICAvLyBmYWRlIGl0IG91dCBzbyB3ZSBmYWxsIGJhY2sgdG8gcmVkdWNpbmcgdGhlIGVsZW1lbnQgb3BhY2l0eS4gTm90ZSB0aGF0IHdlIGRvbid0IHVzZSB0aGVcbiAgICAgICAgLy8gJG1hdC1kYXRlcGlja2VyLXRvZGF5LWZhZGUtYW1vdW50LCBiZWNhdXNlIGhpbnQgdGV4dCB1c3VhbGx5IGhhcyBzb21lIG9wYWNpdHkgYXBwbGllZFxuICAgICAgICAvLyB0byBpdCBhbHJlYWR5IGFuZCB3ZSBkb24ndCB3YW50IHRoZW0gdG8gc3RhY2sgb24gdG9wIG9mIGVhY2ggb3RoZXIuXG4gICAgICAgIG9wYWNpdHk6IDAuNTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBfY29sb3IobWFwLmdldCgkY29uZmlnLCBwcmltYXJ5KSk7XG5cbiAgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQge1xuICAgIEBpbmNsdWRlIHByaXZhdGUucHJpdmF0ZS10aGVtZS1lbGV2YXRpb24oNCwgJGNvbmZpZyk7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLCBjYXJkKTtcbiAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCB0ZXh0KTtcblxuICAgICYubWF0LWFjY2VudCB7XG4gICAgICBAaW5jbHVkZSBfY29sb3IobWFwLmdldCgkY29uZmlnLCBhY2NlbnQpKTtcbiAgICB9XG5cbiAgICAmLm1hdC13YXJuIHtcbiAgICAgIEBpbmNsdWRlIF9jb2xvcihtYXAuZ2V0KCRjb25maWcsIHdhcm4pKTtcbiAgICB9XG4gIH1cblxuICAubWF0LWRhdGVwaWNrZXItY29udGVudC10b3VjaCB7XG4gICAgQGluY2x1ZGUgcHJpdmF0ZS5wcml2YXRlLXRoZW1lLWVsZXZhdGlvbigyNCwgJGNvbmZpZyk7XG4gIH1cblxuICAubWF0LWRhdGVwaWNrZXItdG9nZ2xlLWFjdGl2ZSB7XG4gICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZShtYXAuZ2V0KCRjb25maWcsIHByaW1hcnkpLCB0ZXh0KTtcblxuICAgICYubWF0LWFjY2VudCB7XG4gICAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKG1hcC5nZXQoJGNvbmZpZywgYWNjZW50KSwgdGV4dCk7XG4gICAgfVxuXG4gICAgJi5tYXQtd2FybiB7XG4gICAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKG1hcC5nZXQoJGNvbmZpZywgd2FybiksIHRleHQpO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtZGF0ZS1yYW5nZS1pbnB1dC1pbm5lcltkaXNhYmxlZF0ge1xuICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIGRpc2FibGVkLXRleHQpO1xuICB9XG59XG5cbkBtaXhpbiB0eXBvZ3JhcGh5KCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdHlwb2dyYXBoeS5wcml2YXRlLXR5cG9ncmFwaHktdG8tMjAxNC1jb25maWcoXG4gICAgICB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKSk7XG4gIC5tYXQtY2FsZW5kYXIge1xuICAgIGZvbnQtZmFtaWx5OiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtZmFtaWx5KCRjb25maWcpO1xuICB9XG5cbiAgLm1hdC1jYWxlbmRhci1ib2R5IHtcbiAgICBmb250LXNpemU6ICRjYWxlbmRhci1ib2R5LWZvbnQtc2l6ZTtcbiAgfVxuXG4gIC5tYXQtY2FsZW5kYXItYm9keS1sYWJlbCxcbiAgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uIHtcbiAgICBmb250OiB7XG4gICAgICBzaXplOiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtc2l6ZSgkY29uZmlnLCBidXR0b24pO1xuICAgICAgd2VpZ2h0OiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtd2VpZ2h0KCRjb25maWcsIGJ1dHRvbik7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXIgdGgge1xuICAgIGZvbnQ6IHtcbiAgICAgIHNpemU6ICRjYWxlbmRhci13ZWVrZGF5LXRhYmxlLWZvbnQtc2l6ZTtcbiAgICAgIHdlaWdodDogdHlwb2dyYXBoeS11dGlscy5mb250LXdlaWdodCgkY29uZmlnLCBib2R5LTEpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gZGF0ZS1yYW5nZS1jb2xvcnMoXG4gICRyYW5nZS1jb2xvcixcbiAgJGNvbXBhcmlzb24tY29sb3I6IHJnYmEoI2Y5YWIwMCwgJHJhbmdlLWZhZGUtYW1vdW50KSxcbiAgJG92ZXJsYXAtY29sb3I6ICNhOGRhYjUsXG4gICRvdmVybGFwLXNlbGVjdGVkLWNvbG9yOiBjb2xvci5hZGp1c3QoJG92ZXJsYXAtY29sb3IsICRsaWdodG5lc3M6IC0zMCUpKSB7XG5cbiAgLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlOjpiZWZvcmUge1xuICAgIGJhY2tncm91bmQ6ICRyYW5nZS1jb2xvcjtcbiAgfVxuXG4gIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCxcbiAgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2U6OmJlZm9yZSB7XG4gICAgYmFja2dyb3VuZDogJGNvbXBhcmlzb24tY29sb3I7XG4gIH1cblxuICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnQ6OmJlZm9yZSxcbiAgW2Rpcj0ncnRsJ10gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZDo6YmVmb3JlIHtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsICRyYW5nZS1jb2xvciA1MCUsICRjb21wYXJpc29uLWNvbG9yIDUwJSk7XG4gIH1cblxuICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2UtZW5kOjpiZWZvcmUsXG4gIFtkaXI9J3J0bCddIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydDo6YmVmb3JlIHtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gbGVmdCwgJHJhbmdlLWNvbG9yIDUwJSwgJGNvbXBhcmlzb24tY29sb3IgNTAlKTtcbiAgfVxuXG4gIC5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZSA+IC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCxcbiAgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2UubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2U6OmFmdGVyIHtcbiAgICBiYWNrZ3JvdW5kOiAkb3ZlcmxhcC1jb2xvcjtcbiAgfVxuXG4gIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCxcbiAgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2UgPiAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQge1xuICAgIGJhY2tncm91bmQ6ICRvdmVybGFwLXNlbGVjdGVkLWNvbG9yO1xuICB9XG59XG5cbkBtaXhpbiBfZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZykge1xuICAkdGhlbWU6IHRoZW1pbmcucHJpdmF0ZS1sZWdhY3ktZ2V0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICBAaW5jbHVkZSB0aGVtaW5nLnByaXZhdGUtY2hlY2stZHVwbGljYXRlLXRoZW1lLXN0eWxlcygkdGhlbWUsICdtYXQtZGF0ZXBpY2tlcicpIHtcbiAgICAkY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkdGhlbWUpO1xuICAgICRkZW5zaXR5OiB0aGVtaW5nLmdldC1kZW5zaXR5LWNvbmZpZygkdGhlbWUpO1xuICAgICR0eXBvZ3JhcGh5OiB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkdGhlbWUpO1xuXG4gICAgQGlmICRjb2xvciAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIGNvbG9yKCRjb2xvcik7XG4gICAgfVxuICAgIEBpZiAkZGVuc2l0eSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIF9kZW5zaXR5KCRkZW5zaXR5KTtcbiAgICB9XG4gICAgQGlmICR0eXBvZ3JhcGh5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgdHlwb2dyYXBoeSgkdHlwb2dyYXBoeSk7XG4gICAgfVxuICB9XG59XG4iLCJAdXNlICdzYXNzOm1hcCc7XG5AdXNlICcuLi9jb3JlL3N0eWxlL3ByaXZhdGUnO1xuQHVzZSAnLi4vY29yZS90aGVtaW5nL3RoZW1pbmcnO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHknO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHktdXRpbHMnO1xuXG5cbkBtaXhpbiBjb2xvcigkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJGJhY2tncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgYmFja2dyb3VuZCk7XG4gICRmb3JlZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGZvcmVncm91bmQpO1xuXG4gIC5tYXQtZGlhbG9nLWNvbnRhaW5lciB7XG4gICAgQGluY2x1ZGUgcHJpdmF0ZS5wcml2YXRlLXRoZW1lLWVsZXZhdGlvbigyNCwgJGNvbmZpZyk7XG4gICAgYmFja2dyb3VuZDogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLCBkaWFsb2cpO1xuICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIHRleHQpO1xuICB9XG59XG5cbkBtaXhpbiB0eXBvZ3JhcGh5KCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdHlwb2dyYXBoeS5wcml2YXRlLXR5cG9ncmFwaHktdG8tMjAxNC1jb25maWcoXG4gICAgICB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKSk7XG4gIC5tYXQtZGlhbG9nLXRpdGxlIHtcbiAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5LXV0aWxzLnR5cG9ncmFwaHktbGV2ZWwoJGNvbmZpZywgdGl0bGUpO1xuICB9XG59XG5cbkBtaXhpbiBfZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZykge1xuICAkdGhlbWU6IHRoZW1pbmcucHJpdmF0ZS1sZWdhY3ktZ2V0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICBAaW5jbHVkZSB0aGVtaW5nLnByaXZhdGUtY2hlY2stZHVwbGljYXRlLXRoZW1lLXN0eWxlcygkdGhlbWUsICdtYXQtZGlhbG9nJykge1xuICAgICRjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgJGRlbnNpdHk6IHRoZW1pbmcuZ2V0LWRlbnNpdHktY29uZmlnKCR0aGVtZSk7XG4gICAgJHR5cG9ncmFwaHk6IHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCR0aGVtZSk7XG5cbiAgICBAaWYgJGNvbG9yICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgX2RlbnNpdHkoJGRlbnNpdHkpO1xuICAgIH1cbiAgICBAaWYgJHR5cG9ncmFwaHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5KCR0eXBvZ3JhcGh5KTtcbiAgICB9XG4gIH1cbn1cbiIsIkB1c2UgJ3Nhc3M6bWFwJztcbkB1c2UgJy4uL2NvcmUvZGVuc2l0eS9wcml2YXRlL2NvbXBhdGliaWxpdHknO1xuQHVzZSAnLi4vY29yZS90aGVtaW5nL3RoZW1pbmcnO1xuQHVzZSAnLi4vY29yZS9zdHlsZS9wcml2YXRlJztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5JztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5LXV0aWxzJztcbkB1c2UgJy4vZXhwYW5zaW9uLXZhcmlhYmxlcyc7XG5AdXNlICcuL2V4cGFuc2lvbi1taXhpbnMnO1xuXG5AbWl4aW4gY29sb3IoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRiYWNrZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGJhY2tncm91bmQpO1xuICAkZm9yZWdyb3VuZDogbWFwLmdldCgkY29uZmlnLCBmb3JlZ3JvdW5kKTtcblxuICAubWF0LWV4cGFuc2lvbi1wYW5lbCB7XG4gICAgQGluY2x1ZGUgcHJpdmF0ZS5wcml2YXRlLXRoZW1lLW92ZXJyaWRhYmxlLWVsZXZhdGlvbigyLCAkY29uZmlnKTtcbiAgICBiYWNrZ3JvdW5kOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGJhY2tncm91bmQsIGNhcmQpO1xuICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIHRleHQpO1xuICB9XG5cbiAgLm1hdC1hY3Rpb24tcm93IHtcbiAgICBib3JkZXItdG9wLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIGRpdmlkZXIpO1xuICB9XG5cbiAgQGluY2x1ZGUgZXhwYW5zaW9uLW1peGlucy5wcml2YXRlLWV4cGFuc2lvbi1mb2N1cyB7XG4gICAgYmFja2dyb3VuZDogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLCBob3Zlcik7XG4gIH1cblxuICAvLyBEaXNhYmxlIHRoZSBob3ZlciBvbiB0b3VjaCBkZXZpY2VzIHNpbmNlIGl0IGNhbiBhcHBlYXIgbGlrZSBpdCBpcyBzdHVjay4gV2UgY2FuJ3QgdXNlXG4gIC8vIGBAbWVkaWEgKGhvdmVyKWAgYWJvdmUsIGJlY2F1c2UgdGhlIGRlc2t0b3Agc3VwcG9ydCBicm93c2VyIHN1cHBvcnQgaXNuJ3QgZ3JlYXQuXG4gIEBtZWRpYSAoaG92ZXI6IG5vbmUpIHtcbiAgICAubWF0LWV4cGFuc2lvbi1wYW5lbDpub3QoLm1hdC1leHBhbmRlZCk6bm90KFthcmlhLWRpc2FibGVkPSd0cnVlJ10pXG4gICAgICAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZDogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLCBjYXJkKTtcbiAgICB9XG4gIH1cblxuICAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXItdGl0bGUge1xuICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIHRleHQpO1xuICB9XG5cbiAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLWRlc2NyaXB0aW9uLFxuICAubWF0LWV4cGFuc2lvbi1pbmRpY2F0b3I6OmFmdGVyIHtcbiAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBzZWNvbmRhcnktdGV4dCk7XG4gIH1cblxuICAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbYXJpYS1kaXNhYmxlZD0ndHJ1ZSddIHtcbiAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBkaXNhYmxlZC1idXR0b24pO1xuXG4gICAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLXRpdGxlLFxuICAgIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci1kZXNjcmlwdGlvbiB7XG4gICAgICBjb2xvcjogaW5oZXJpdDtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHR5cG9ncmFwaHkoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0eXBvZ3JhcGh5LnByaXZhdGUtdHlwb2dyYXBoeS10by0yMDE0LWNvbmZpZyhcbiAgICAgIHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCRjb25maWctb3ItdGhlbWUpKTtcbiAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyIHtcbiAgICBmb250OiB7XG4gICAgICBmYW1pbHk6IHR5cG9ncmFwaHktdXRpbHMuZm9udC1mYW1pbHkoJGNvbmZpZywgc3ViaGVhZGluZy0xKTtcbiAgICAgIHNpemU6IHR5cG9ncmFwaHktdXRpbHMuZm9udC1zaXplKCRjb25maWcsIHN1YmhlYWRpbmctMSk7XG4gICAgICB3ZWlnaHQ6IHR5cG9ncmFwaHktdXRpbHMuZm9udC13ZWlnaHQoJGNvbmZpZywgc3ViaGVhZGluZy0xKTtcbiAgICB9XG4gIH1cblxuICAubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50IHtcbiAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5LXV0aWxzLnR5cG9ncmFwaHktbGV2ZWwoJGNvbmZpZywgYm9keS0xKTtcbiAgfVxufVxuXG5AbWl4aW4gZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRkZW5zaXR5LXNjYWxlOiB0aGVtaW5nLmdldC1kZW5zaXR5LWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJGV4cGFuZGVkLWhlaWdodDogY29tcGF0aWJpbGl0eS5wcml2YXRlLWRlbnNpdHktcHJvcC12YWx1ZShcbiAgICAgICAgZXhwYW5zaW9uLXZhcmlhYmxlcy4kaGVhZGVyLWRlbnNpdHktY29uZmlnLCAkZGVuc2l0eS1zY2FsZSwgZXhwYW5kZWQtaGVpZ2h0KTtcbiAgJGNvbGxhcHNlZC1oZWlnaHQ6IGNvbXBhdGliaWxpdHkucHJpdmF0ZS1kZW5zaXR5LXByb3AtdmFsdWUoXG4gICAgICBleHBhbnNpb24tdmFyaWFibGVzLiRoZWFkZXItZGVuc2l0eS1jb25maWcsICRkZW5zaXR5LXNjYWxlLCBjb2xsYXBzZWQtaGVpZ2h0KTtcblxuICBAaW5jbHVkZSBjb21wYXRpYmlsaXR5LnByaXZhdGUtZGVuc2l0eS1sZWdhY3ktY29tcGF0aWJpbGl0eSgpIHtcbiAgICAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXIge1xuICAgICAgaGVpZ2h0OiAkY29sbGFwc2VkLWhlaWdodDtcblxuICAgICAgJi5tYXQtZXhwYW5kZWQge1xuICAgICAgICBoZWlnaHQ6ICRleHBhbmRlZC1oZWlnaHQ7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiB0aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKSB7XG4gICR0aGVtZTogdGhlbWluZy5wcml2YXRlLWxlZ2FjeS1nZXQtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZyk7XG4gIEBpbmNsdWRlIHRoZW1pbmcucHJpdmF0ZS1jaGVjay1kdXBsaWNhdGUtdGhlbWUtc3R5bGVzKCR0aGVtZSwgJ21hdC1leHBhbnNpb24nKSB7XG4gICAgJGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJHRoZW1lKTtcbiAgICAkZGVuc2l0eTogdGhlbWluZy5nZXQtZGVuc2l0eS1jb25maWcoJHRoZW1lKTtcbiAgICAkdHlwb2dyYXBoeTogdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJHRoZW1lKTtcblxuICAgIEBpZiAkY29sb3IgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBjb2xvcigkY29sb3IpO1xuICAgIH1cbiAgICBAaWYgJGRlbnNpdHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBkZW5zaXR5KCRkZW5zaXR5KTtcbiAgICB9XG4gICAgQGlmICR0eXBvZ3JhcGh5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgdHlwb2dyYXBoeSgkdHlwb2dyYXBoeSk7XG4gICAgfVxuICB9XG59XG4iLCJAdXNlICdzYXNzOm1hcCc7XG5AdXNlICcuLi9jb3JlL3RoZW1pbmcvdGhlbWluZyc7XG5AdXNlICcuLi9jb3JlL3R5cG9ncmFwaHkvdHlwb2dyYXBoeSc7XG5AdXNlICcuLi9jb3JlL3R5cG9ncmFwaHkvdHlwb2dyYXBoeS11dGlscyc7XG5cbkB1c2UgJy4vZm9ybS1maWVsZC1maWxsLXRoZW1lLnNjc3MnO1xuQHVzZSAnLi9mb3JtLWZpZWxkLWxlZ2FjeS10aGVtZS5zY3NzJztcbkB1c2UgJy4vZm9ybS1maWVsZC1vdXRsaW5lLXRoZW1lLnNjc3MnO1xuQHVzZSAnLi9mb3JtLWZpZWxkLXN0YW5kYXJkLXRoZW1lLnNjc3MnO1xuXG4vLyBDb2xvciBzdHlsZXMgdGhhdCBhcHBseSB0byBhbGwgYXBwZWFyYW5jZXMgb2YgdGhlIGZvcm0tZmllbGQuXG5AbWl4aW4gY29sb3IoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRwcmltYXJ5OiBtYXAuZ2V0KCRjb25maWcsIHByaW1hcnkpO1xuICAkYWNjZW50OiBtYXAuZ2V0KCRjb25maWcsIGFjY2VudCk7XG4gICR3YXJuOiBtYXAuZ2V0KCRjb25maWcsIHdhcm4pO1xuICAkYmFja2dyb3VuZDogbWFwLmdldCgkY29uZmlnLCBiYWNrZ3JvdW5kKTtcbiAgJGZvcmVncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgZm9yZWdyb3VuZCk7XG4gICRpcy1kYXJrLXRoZW1lOiBtYXAuZ2V0KCRjb25maWcsIGlzLWRhcmspO1xuXG4gIC8vIExhYmVsIGNvbG9ycy4gUmVxdWlyZWQgaXMgdXNlZCBmb3IgdGhlIGAqYCBzdGFyIHNob3duIGluIHRoZSBsYWJlbC5cbiAgJGxhYmVsLWNvbG9yOlxuICAgIHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgc2Vjb25kYXJ5LXRleHQsIGlmKCRpcy1kYXJrLXRoZW1lLCAwLjcsIDAuNikpO1xuICAkZm9jdXNlZC1sYWJlbC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRwcmltYXJ5LCB0ZXh0KTtcbiAgJHJlcXVpcmVkLWxhYmVsLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGFjY2VudCwgdGV4dCk7XG5cbiAgLy8gVW5kZXJsaW5lIGNvbG9ycy5cbiAgJHVuZGVybGluZS1jb2xvci1iYXNlOlxuICAgIHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgZGl2aWRlciwgaWYoJGlzLWRhcmstdGhlbWUsIDEsIDAuODcpKTtcbiAgJHVuZGVybGluZS1jb2xvci1hY2NlbnQ6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYWNjZW50LCB0ZXh0KTtcbiAgJHVuZGVybGluZS1jb2xvci13YXJuOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHdhcm4sIHRleHQpO1xuICAkdW5kZXJsaW5lLWZvY3VzZWQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkcHJpbWFyeSwgdGV4dCk7XG5cbiAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsIHtcbiAgICBjb2xvcjogJGxhYmVsLWNvbG9yO1xuICB9XG5cbiAgLm1hdC1oaW50IHtcbiAgICBjb2xvcjogJGxhYmVsLWNvbG9yO1xuICB9XG5cbiAgLm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkIC5tYXQtZm9ybS1maWVsZC1sYWJlbCB7XG4gICAgY29sb3I6ICRmb2N1c2VkLWxhYmVsLWNvbG9yO1xuXG4gICAgJi5tYXQtYWNjZW50IHtcbiAgICAgIGNvbG9yOiAkdW5kZXJsaW5lLWNvbG9yLWFjY2VudDtcbiAgICB9XG5cbiAgICAmLm1hdC13YXJuIHtcbiAgICAgIGNvbG9yOiAkdW5kZXJsaW5lLWNvbG9yLXdhcm47XG4gICAgfVxuICB9XG5cbiAgLm1hdC1mb2N1c2VkIC5tYXQtZm9ybS1maWVsZC1yZXF1aXJlZC1tYXJrZXIge1xuICAgIGNvbG9yOiAkcmVxdWlyZWQtbGFiZWwtY29sb3I7XG4gIH1cblxuICAubWF0LWZvcm0tZmllbGQtcmlwcGxlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdW5kZXJsaW5lLWNvbG9yLWJhc2U7XG4gIH1cblxuICAubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWQge1xuICAgIC5tYXQtZm9ybS1maWVsZC1yaXBwbGUge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHVuZGVybGluZS1mb2N1c2VkLWNvbG9yO1xuXG4gICAgICAmLm1hdC1hY2NlbnQge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdW5kZXJsaW5lLWNvbG9yLWFjY2VudDtcbiAgICAgIH1cblxuICAgICAgJi5tYXQtd2FybiB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR1bmRlcmxpbmUtY29sb3Itd2FybjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdC5tYXQtZm9jdXNlZDpub3QoLm1hdC1mb3JtLWZpZWxkLWludmFsaWQpIHtcbiAgICAubWF0LWZvcm0tZmllbGQtaW5maXg6OmFmdGVyIHtcbiAgICAgIGNvbG9yOiAkdW5kZXJsaW5lLWZvY3VzZWQtY29sb3I7XG4gICAgfVxuXG4gICAgJi5tYXQtYWNjZW50IC5tYXQtZm9ybS1maWVsZC1pbmZpeDo6YWZ0ZXIge1xuICAgICAgY29sb3I6ICR1bmRlcmxpbmUtY29sb3ItYWNjZW50O1xuICAgIH1cblxuICAgICYubWF0LXdhcm4gLm1hdC1mb3JtLWZpZWxkLWluZml4OjphZnRlciB7XG4gICAgICBjb2xvcjogJHVuZGVybGluZS1jb2xvci13YXJuO1xuICAgIH1cbiAgfVxuXG4gIC8vIFN0eWxpbmcgZm9yIHRoZSBlcnJvciBzdGF0ZSBvZiB0aGUgZm9ybSBmaWVsZC4gTm90ZSB0aGF0IHdoaWxlIHRoZSBzYW1lIGNhbiBiZVxuICAvLyBhY2hpZXZlZCB3aXRoIHRoZSBuZy0qIGNsYXNzZXMsIHdlIHVzZSB0aGlzIGFwcHJvYWNoIGluIG9yZGVyIHRvIGVuc3VyZSB0aGF0IHRoZSBzYW1lXG4gIC8vIGxvZ2ljIGlzIHVzZWQgdG8gc3R5bGUgdGhlIGVycm9yIHN0YXRlIGFuZCB0byBzaG93IHRoZSBlcnJvciBtZXNzYWdlcy5cbiAgLm1hdC1mb3JtLWZpZWxkLm1hdC1mb3JtLWZpZWxkLWludmFsaWQge1xuICAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbCB7XG4gICAgICBjb2xvcjogJHVuZGVybGluZS1jb2xvci13YXJuO1xuXG4gICAgICAmLm1hdC1hY2NlbnQsXG4gICAgICAubWF0LWZvcm0tZmllbGQtcmVxdWlyZWQtbWFya2VyIHtcbiAgICAgICAgY29sb3I6ICR1bmRlcmxpbmUtY29sb3Itd2FybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAubWF0LWZvcm0tZmllbGQtcmlwcGxlLFxuICAgIC5tYXQtZm9ybS1maWVsZC1yaXBwbGUubWF0LWFjY2VudCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdW5kZXJsaW5lLWNvbG9yLXdhcm47XG4gICAgfVxuICB9XG5cbiAgLm1hdC1lcnJvciB7XG4gICAgY29sb3I6ICR1bmRlcmxpbmUtY29sb3Itd2FybjtcbiAgfVxuXG4gIEBpbmNsdWRlIGZvcm0tZmllbGQtbGVnYWN5LXRoZW1lLmxlZ2FjeS1jb2xvcigkY29uZmlnKTtcbiAgQGluY2x1ZGUgZm9ybS1maWVsZC1zdGFuZGFyZC10aGVtZS5zdGFuZGFyZC1jb2xvcigkY29uZmlnKTtcbiAgQGluY2x1ZGUgZm9ybS1maWVsZC1maWxsLXRoZW1lLmZpbGwtY29sb3IoJGNvbmZpZyk7XG4gIEBpbmNsdWRlIGZvcm0tZmllbGQtb3V0bGluZS10aGVtZS5vdXRsaW5lLWNvbG9yKCRjb25maWcpO1xufVxuXG4vLyBVc2VkIHRvIG1ha2UgaW5zdGFuY2VzIG9mIHRoZSBfbWF0LWZvcm0tZmllbGQtbGFiZWwtZmxvYXRpbmcgbWl4aW4gbmVnbGlnaWJseSBkaWZmZXJlbnQsXG4vLyBhbmQgcHJldmVudCBHb29nbGUncyBDU1MgT3B0aW1pemVyIGZyb20gY29sbGFwc2luZyB0aGUgZGVjbGFyYXRpb25zLiBUaGlzIGlzIG5lZWRlZCBiZWNhdXNlIHNvbWVcbi8vIG9mIHRoZSBzZWxlY3RvcnMgY29udGFpbiBwc2V1ZG8tY2xhc3NlcyBub3QgcmVjb2duaXplZCBpbiBhbGwgYnJvd3NlcnMuIElmIGEgYnJvd3NlciBlbmNvdW50ZXJzXG4vLyBhbiB1bmtub3duIHBzZXVkby1jbGFzcyBpdCB3aWxsIGRpc2NhcmQgdGhlIGVudGlyZSBydWxlIHNldC5cbiRkZWR1cGU6IDA7XG5cbi8vIEFwcGxpZXMgYSBmbG9hdGluZyBsYWJlbCBhYm92ZSB0aGUgZm9ybSBmaWVsZCBjb250cm9sIGl0c2VsZi5cbkBtaXhpbiBfbGFiZWwtZmxvYXRpbmcoJGZvbnQtc2NhbGUsICRpbmZpeC1wYWRkaW5nLCAkaW5maXgtbWFyZ2luLXRvcCkge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLSRpbmZpeC1tYXJnaW4tdG9wIC0gJGluZml4LXBhZGRpbmcgKyAkZGVkdXBlKVxuICAgICAgICAgICAgIHNjYWxlKCRmb250LXNjYWxlKTtcbiAgd2lkdGg6IDEwMCUgLyAkZm9udC1zY2FsZSArICRkZWR1cGU7XG5cbiAgJGRlZHVwZTogJGRlZHVwZSArIDAuMDAwMDEgIWdsb2JhbDtcbn1cblxuQG1peGluIHR5cG9ncmFwaHkoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0eXBvZ3JhcGh5LnByaXZhdGUtdHlwb2dyYXBoeS10by0yMDE0LWNvbmZpZyhcbiAgICAgIHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCRjb25maWctb3ItdGhlbWUpKTtcbiAgLy8gVGhlIHVuaXQtbGVzcyBsaW5lLWhlaWdodCBmcm9tIHRoZSBmb250IGNvbmZpZy5cbiAgJGxpbmUtaGVpZ2h0OiB0eXBvZ3JhcGh5LXV0aWxzLmxpbmUtaGVpZ2h0KCRjb25maWcsIGlucHV0KTtcblxuICAvLyBUaGUgYW1vdW50IHRvIHNjYWxlIHRoZSBmb250IGZvciB0aGUgZmxvYXRpbmcgbGFiZWwgYW5kIHN1YnNjcmlwdC5cbiAgJHN1YnNjcmlwdC1mb250LXNjYWxlOiAwLjc1O1xuICAvLyBUaGUgYW1vdW50IHRvIHNjYWxlIHRoZSBmb250IGZvciB0aGUgcHJlZml4IGFuZCBzdWZmaXggaWNvbnMuXG4gICRwcmVmaXgtc3VmZml4LWljb24tZm9udC1zY2FsZTogMS41O1xuXG4gIC8vIFRoZSBwYWRkaW5nIG9uIHRoZSBpbmZpeC4gTW9ja3Mgc2hvdyBoYWxmIG9mIHRoZSB0ZXh0IHNpemUuXG4gICRpbmZpeC1wYWRkaW5nOiAwLjVlbTtcbiAgLy8gVGhlIG1hcmdpbiBhcHBsaWVkIHRvIHRoZSBmb3JtLWZpZWxkLWluZml4IHRvIHJlc2VydmUgc3BhY2UgZm9yIHRoZSBmbG9hdGluZyBsYWJlbC5cbiAgJGluZml4LW1hcmdpbi10b3A6IDFlbSAqICRsaW5lLWhlaWdodCAqICRzdWJzY3JpcHQtZm9udC1zY2FsZTtcbiAgLy8gRm9udCBzaXplIHRvIHVzZSBmb3IgdGhlIGxhYmVsIGFuZCBzdWJzY3JpcHQgdGV4dC5cbiAgJHN1YnNjcmlwdC1mb250LXNpemU6ICRzdWJzY3JpcHQtZm9udC1zY2FsZSAqIDEwMCU7XG4gIC8vIEZvbnQgc2l6ZSB0byB1c2UgZm9yIHRoZSBmb3IgdGhlIHByZWZpeCBhbmQgc3VmZml4IGljb25zLlxuICAkcHJlZml4LXN1ZmZpeC1pY29uLWZvbnQtc2l6ZTogJHByZWZpeC1zdWZmaXgtaWNvbi1mb250LXNjYWxlICogMTAwJTtcbiAgLy8gVGhlIHNwYWNlIGJldHdlZW4gdGhlIGJvdHRvbSBvZiB0aGUgLm1hdC1mb3JtLWZpZWxkLWZsZXggYXJlYSBhbmQgdGhlIHN1YnNjcmlwdCB3cmFwcGVyLlxuICAvLyBNb2NrcyBzaG93IGhhbGYgb2YgdGhlIHRleHQgc2l6ZSwgYnV0IHRoaXMgbWFyZ2luIGlzIGFwcGxpZWQgdG8gYW4gZWxlbWVudCB3aXRoIHRoZSBzdWJzY3JpcHRcbiAgLy8gdGV4dCBmb250IHNpemUsIHNvIHdlIG5lZWQgdG8gZGl2aWRlIGJ5IHRoZSBzY2FsZSBmYWN0b3IgdG8gbWFrZSBpdCBoYWxmIG9mIHRoZSBvcmlnaW5hbCB0ZXh0XG4gIC8vIHNpemUuXG4gICRzdWJzY3JpcHQtbWFyZ2luLXRvcDogMC41ZW0gLyAkc3Vic2NyaXB0LWZvbnQtc2NhbGU7XG4gIC8vIFRoZSBwYWRkaW5nIGFwcGxpZWQgdG8gdGhlIGZvcm0tZmllbGQtd3JhcHBlciB0byByZXNlcnZlIHNwYWNlIGZvciB0aGUgc3Vic2NyaXB0LCBzaW5jZSBpdCdzXG4gIC8vIGFic29sdXRlbHkgcG9zaXRpb25lZC4gVGhpcyBpcyBhIGNvbWJpbmF0aW9uIG9mIHRoZSBzdWJzY3JpcHQncyBtYXJnaW4gYW5kIGxpbmUtaGVpZ2h0LCBidXQgd2VcbiAgLy8gbmVlZCB0byBtdWx0aXBseSBieSB0aGUgc3Vic2NyaXB0IGZvbnQgc2NhbGUgZmFjdG9yIHNpbmNlIHRoZSB3cmFwcGVyIGhhcyBhIGxhcmdlciBmb250IHNpemUuXG4gICR3cmFwcGVyLXBhZGRpbmctYm90dG9tOiAoJHN1YnNjcmlwdC1tYXJnaW4tdG9wICsgJGxpbmUtaGVpZ2h0KSAqICRzdWJzY3JpcHQtZm9udC1zY2FsZTtcblxuICAubWF0LWZvcm0tZmllbGQge1xuICAgIEBpbmNsdWRlIHR5cG9ncmFwaHktdXRpbHMudHlwb2dyYXBoeS1sZXZlbCgkY29uZmlnLCBpbnB1dCk7XG4gIH1cblxuICAubWF0LWZvcm0tZmllbGQtd3JhcHBlciB7XG4gICAgcGFkZGluZy1ib3R0b206ICR3cmFwcGVyLXBhZGRpbmctYm90dG9tO1xuICB9XG5cbiAgLm1hdC1mb3JtLWZpZWxkLXByZWZpeCxcbiAgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeCB7XG4gICAgLy8gQWxsb3cgaWNvbnMgaW4gYSBwcmVmaXggb3Igc3VmZml4IHRvIGFkYXB0IHRvIHRoZSBjb3JyZWN0IHNpemUuXG4gICAgLm1hdC1pY29uIHtcbiAgICAgIGZvbnQtc2l6ZTogJHByZWZpeC1zdWZmaXgtaWNvbi1mb250LXNpemU7XG4gICAgICBsaW5lLWhlaWdodDogJGxpbmUtaGVpZ2h0O1xuICAgIH1cblxuICAgIC8vIEFsbG93IGljb24gYnV0dG9ucyBpbiBhIHByZWZpeCBvciBzdWZmaXggdG8gYWRhcHQgdG8gdGhlIGNvcnJlY3Qgc2l6ZS5cbiAgICAubWF0LWljb24tYnV0dG9uIHtcbiAgICAgIGhlaWdodDogJHByZWZpeC1zdWZmaXgtaWNvbi1mb250LXNjYWxlICogMWVtO1xuICAgICAgd2lkdGg6ICRwcmVmaXgtc3VmZml4LWljb24tZm9udC1zY2FsZSAqIDFlbTtcblxuICAgICAgLm1hdC1pY29uIHtcbiAgICAgICAgaGVpZ2h0OiAkbGluZS1oZWlnaHQgKiAxZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAkbGluZS1oZWlnaHQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLm1hdC1mb3JtLWZpZWxkLWluZml4IHtcbiAgICBwYWRkaW5nOiAkaW5maXgtcGFkZGluZyAwO1xuICAgIC8vIFRocm93cyBvZmYgdGhlIGJhc2VsaW5lIGlmIHdlIGRvIGl0IGFzIGEgcmVhbCBtYXJnaW4sIHNvIHdlIGRvIGl0IGFzIGEgYm9yZGVyIGluc3RlYWQuXG4gICAgYm9yZGVyLXRvcDogJGluZml4LW1hcmdpbi10b3Agc29saWQgdHJhbnNwYXJlbnQ7XG4gIH1cblxuICAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IHtcbiAgICAmLm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdCAubWF0LWZvcm0tZmllbGQtbGFiZWwsXG4gICAgLm1hdC1pbnB1dC1zZXJ2ZXI6Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWwge1xuICAgICAgQGluY2x1ZGUgX2xhYmVsLWZsb2F0aW5nKFxuICAgICAgICAgICAgICAkc3Vic2NyaXB0LWZvbnQtc2NhbGUsICRpbmZpeC1wYWRkaW5nLCAkaW5maXgtbWFyZ2luLXRvcCk7XG4gICAgfVxuXG4gICAgLy8gU2VydmVyLXNpZGUgcmVuZGVyZWQgbWF0SW5wdXQgd2l0aCBhIGxhYmVsIGF0dHJpYnV0ZSBidXQgbGFiZWwgbm90IHNob3duXG4gICAgLy8gKHVzZWQgYXMgYSBwdXJlIENTUyBzdGFuZC1pbiBmb3IgbWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0KS5cbiAgICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlclxuICAgICAgICAubWF0LWZvcm0tZmllbGQtbGFiZWwge1xuICAgICAgQGluY2x1ZGUgX2xhYmVsLWZsb2F0aW5nKFxuICAgICAgICAgICAgICAkc3Vic2NyaXB0LWZvbnQtc2NhbGUsICRpbmZpeC1wYWRkaW5nLCAkaW5maXgtbWFyZ2luLXRvcCk7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIge1xuICAgIHRvcDogLSRpbmZpeC1tYXJnaW4tdG9wO1xuICAgIHBhZGRpbmctdG9wOiAkaW5maXgtbWFyZ2luLXRvcDtcbiAgfVxuXG4gIC5tYXQtZm9ybS1maWVsZC1sYWJlbCB7XG4gICAgdG9wOiAkaW5maXgtbWFyZ2luLXRvcCArICRpbmZpeC1wYWRkaW5nO1xuICB9XG5cbiAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZSB7XG4gICAgLy8gV2Ugd2FudCB0aGUgdW5kZXJsaW5lIHRvIHN0YXJ0IGF0IHRoZSBlbmQgb2YgdGhlIGNvbnRlbnQgYm94LCBub3QgdGhlIHBhZGRpbmcgYm94LFxuICAgIC8vIHNvIHdlIG1vdmUgaXQgdXAgYnkgdGhlIHBhZGRpbmcgYW1vdW50LlxuICAgIGJvdHRvbTogJHdyYXBwZXItcGFkZGluZy1ib3R0b207XG4gIH1cblxuICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXIge1xuICAgIGZvbnQtc2l6ZTogJHN1YnNjcmlwdC1mb250LXNpemU7XG4gICAgbWFyZ2luLXRvcDogJHN1YnNjcmlwdC1tYXJnaW4tdG9wO1xuXG4gICAgLy8gV2Ugd2FudCB0aGUgc3Vic2NyaXB0IHRvIHN0YXJ0IGF0IHRoZSBlbmQgb2YgdGhlIGNvbnRlbnQgYm94LCBub3QgdGhlIHBhZGRpbmcgYm94LFxuICAgIC8vIHNvIHdlIG1vdmUgaXQgdXAgYnkgdGhlIHBhZGRpbmcgYW1vdW50IChhZGp1c3RlZCBmb3IgdGhlIHNtYWxsZXIgZm9udCBzaXplKTtcbiAgICB0b3A6IGNhbGMoMTAwJSAtICN7JHdyYXBwZXItcGFkZGluZy1ib3R0b20gLyAkc3Vic2NyaXB0LWZvbnQtc2NhbGV9KTtcbiAgfVxuXG4gIEBpbmNsdWRlIGZvcm0tZmllbGQtbGVnYWN5LXRoZW1lLmxlZ2FjeS10eXBvZ3JhcGh5KCRjb25maWcpO1xuICBAaW5jbHVkZSBmb3JtLWZpZWxkLXN0YW5kYXJkLXRoZW1lLnN0YW5kYXJkLXR5cG9ncmFwaHkoJGNvbmZpZyk7XG4gIEBpbmNsdWRlIGZvcm0tZmllbGQtZmlsbC10aGVtZS5maWxsLXR5cG9ncmFwaHkoJGNvbmZpZyk7XG4gIEBpbmNsdWRlIGZvcm0tZmllbGQtb3V0bGluZS10aGVtZS5vdXRsaW5lLXR5cG9ncmFwaHkoJGNvbmZpZyk7XG59XG5cbkBtaXhpbiBkZW5zaXR5KCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGRlbnNpdHktc2NhbGU6IHRoZW1pbmcuZ2V0LWRlbnNpdHktY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICBAaW5jbHVkZSBmb3JtLWZpZWxkLWxlZ2FjeS10aGVtZS5wcml2YXRlLWZvcm0tZmllbGQtbGVnYWN5LWRlbnNpdHkoJGRlbnNpdHktc2NhbGUpO1xuICBAaW5jbHVkZSBmb3JtLWZpZWxkLXN0YW5kYXJkLXRoZW1lLnByaXZhdGUtZm9ybS1maWVsZC1zdGFuZGFyZC1kZW5zaXR5KCRkZW5zaXR5LXNjYWxlKTtcbiAgQGluY2x1ZGUgZm9ybS1maWVsZC1maWxsLXRoZW1lLnByaXZhdGUtZm9ybS1maWVsZC1maWxsLWRlbnNpdHkoJGRlbnNpdHktc2NhbGUpO1xuICBAaW5jbHVkZSBmb3JtLWZpZWxkLW91dGxpbmUtdGhlbWUucHJpdmF0ZS1mb3JtLWZpZWxkLW91dGxpbmUtZGVuc2l0eSgkZGVuc2l0eS1zY2FsZSk7XG59XG5cbkBtaXhpbiB0aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKSB7XG4gICR0aGVtZTogdGhlbWluZy5wcml2YXRlLWxlZ2FjeS1nZXQtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZyk7XG4gIEBpbmNsdWRlIHRoZW1pbmcucHJpdmF0ZS1jaGVjay1kdXBsaWNhdGUtdGhlbWUtc3R5bGVzKCR0aGVtZSwgJ21hdC1mb3JtLWZpZWxkJykge1xuICAgICRjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgJGRlbnNpdHk6IHRoZW1pbmcuZ2V0LWRlbnNpdHktY29uZmlnKCR0aGVtZSk7XG4gICAgJHR5cG9ncmFwaHk6IHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCR0aGVtZSk7XG5cbiAgICBAaWYgJGNvbG9yICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgZGVuc2l0eSgkZGVuc2l0eSk7XG4gICAgfVxuICAgIEBpZiAkdHlwb2dyYXBoeSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIHR5cG9ncmFwaHkoJHR5cG9ncmFwaHkpO1xuICAgIH1cbiAgfVxufVxuIiwiQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnLi4vY29yZS90aGVtaW5nL3RoZW1pbmcnO1xuQHVzZSAnLi4vY29yZS9zdHlsZS9mb3JtLWNvbW1vbic7XG5AdXNlICcuLi9jb3JlL3R5cG9ncmFwaHkvdHlwb2dyYXBoeSc7XG5AdXNlICcuLi9jb3JlL3R5cG9ncmFwaHkvdHlwb2dyYXBoeS11dGlscyc7XG5cblxuLy8gVGhlbWUgc3R5bGVzIHRoYXQgb25seSBhcHBseSB0byB0aGUgbGVnYWN5IGFwcGVhcmFuY2Ugb2YgdGhlIGZvcm0tZmllbGQuXG5cbkBtaXhpbiBsZWdhY3ktY29sb3IoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRmb3JlZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGZvcmVncm91bmQpO1xuICAkaXMtZGFyay10aGVtZTogbWFwLmdldCgkY29uZmlnLCBpcy1kYXJrKTtcblxuICAkbGFiZWwtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgc2Vjb25kYXJ5LXRleHQpO1xuICAkdW5kZXJsaW5lLWNvbG9yOlxuICAgIHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgZGl2aWRlciwgaWYoJGlzLWRhcmstdGhlbWUsIDAuNywgMC40MikpO1xuXG4gIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSB7XG4gICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsIHtcbiAgICAgIGNvbG9yOiAkbGFiZWwtY29sb3I7XG4gICAgfVxuXG4gICAgLm1hdC1oaW50IHtcbiAgICAgIGNvbG9yOiAkbGFiZWwtY29sb3I7XG4gICAgfVxuXG4gICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZSB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdW5kZXJsaW5lLWNvbG9yO1xuICAgIH1cblxuICAgICYubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZSB7XG4gICAgICBAaW5jbHVkZSBmb3JtLWNvbW1vbi5wcml2YXRlLWNvbnRyb2wtZGlzYWJsZWQtdW5kZXJsaW5lKCR1bmRlcmxpbmUtY29sb3IpO1xuICAgIH1cbiAgfVxufVxuXG4vLyBVc2VkIHRvIG1ha2UgaW5zdGFuY2VzIG9mIHRoZSBfbWF0LWZvcm0tZmllbGQtbGFiZWwtZmxvYXRpbmcgbWl4aW4gbmVnbGlnaWJseSBkaWZmZXJlbnQsXG4vLyBhbmQgcHJldmVudCBHb29nbGUncyBDU1MgT3B0aW1pemVyIGZyb20gY29sbGFwc2luZyB0aGUgZGVjbGFyYXRpb25zLiBUaGlzIGlzIG5lZWRlZCBiZWNhdXNlIHNvbWVcbi8vIG9mIHRoZSBzZWxlY3RvcnMgY29udGFpbiBwc2V1ZG8tY2xhc3NlcyBub3QgcmVjb2duaXplZCBpbiBhbGwgYnJvd3NlcnMuIElmIGEgYnJvd3NlciBlbmNvdW50ZXJzXG4vLyBhbiB1bmtub3duIHBzZXVkby1jbGFzcyBpdCB3aWxsIGRpc2NhcmQgdGhlIGVudGlyZSBydWxlIHNldC5cbiRsZWdhY3ktZGVkdXBlOiAwO1xuXG4vLyBBcHBsaWVzIGEgZmxvYXRpbmcgbGFiZWwgYWJvdmUgdGhlIGZvcm0gZmllbGQgY29udHJvbCBpdHNlbGYuXG5AbWl4aW4gX2xhYmVsLWZsb2F0aW5nKCRmb250LXNjYWxlLCAkaW5maXgtcGFkZGluZywgJGluZml4LW1hcmdpbi10b3ApIHtcbiAgLy8gV2UgdXNlIHBlcnNwZWN0aXZlIHRvIGZpeCB0aGUgdGV4dCBibHVycmluZXNzIGFzIGRlc2NyaWJlZCBoZXJlOlxuICAvLyBodHRwOi8vd3d3LnVzZXJhZ2VudG1hbi5jb20vYmxvZy8yMDE0LzA1LzA0L2ZpeGluZy10eXBvZ3JhcGh5LWluc2lkZS1vZi0yLWQtY3NzLXRyYW5zZm9ybXMvXG4gIC8vIFRoaXMgcmVzdWx0cyBpbiBhIHNtYWxsIGppdHRlciBhZnRlciB0aGUgbGFiZWwgZmxvYXRzIG9uIEZpcmVmb3gsIHdoaWNoIHRoZVxuICAvLyB0cmFuc2xhdGVaIGZpeGVzLlxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLSRpbmZpeC1tYXJnaW4tdG9wIC0gJGluZml4LXBhZGRpbmcpIHNjYWxlKCRmb250LXNjYWxlKSBwZXJzcGVjdGl2ZSgxMDBweClcbiAgdHJhbnNsYXRlWigwLjAwMXB4ICsgJGxlZ2FjeS1kZWR1cGUpO1xuICAvLyBUaGUgdHJpY2tzIGFib3ZlIHVzZWQgdG8gc21vb3RoIG91dCB0aGUgYW5pbWF0aW9uIG9uIGNocm9tZSBhbmQgZmlyZWZveCBhY3R1YWxseSBtYWtlIHRoaW5nc1xuICAvLyB3b3JzZSBvbiBJRSwgc28gd2UgZG9uJ3QgaW5jbHVkZSB0aGVtIGluIHRoZSBJRSB2ZXJzaW9uLlxuICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0kaW5maXgtbWFyZ2luLXRvcCAtICRpbmZpeC1wYWRkaW5nICsgJGxlZ2FjeS1kZWR1cGUpXG4gICAgICAgICAgICAgICAgICBzY2FsZSgkZm9udC1zY2FsZSk7XG5cbiAgd2lkdGg6IDEwMCUgLyAkZm9udC1zY2FsZSArICRsZWdhY3ktZGVkdXBlO1xuXG4gICRsZWdhY3ktZGVkdXBlOiAkbGVnYWN5LWRlZHVwZSArIDAuMDAwMDEgIWdsb2JhbDtcbn1cblxuLy8gU2FtZSBhcyBtaXhpbiBhYm92ZSwgYnV0IG9taXRzIHRoZSB0cmFuc2xhdGVaIGZvciBwcmludGluZyBwdXJwb3Nlcy5cbkBtaXhpbiBfbGFiZWwtZmxvYXRpbmctcHJpbnQoJGZvbnQtc2NhbGUsICRpbmZpeC1wYWRkaW5nLCAkaW5maXgtbWFyZ2luLXRvcCkge1xuICAvLyBUaGlzIHJlc3VsdHMgaW4gYSBzbWFsbCBqaXR0ZXIgYWZ0ZXIgdGhlIGxhYmVsIGZsb2F0cyBvbiBGaXJlZm94LCB3aGljaCB0aGVcbiAgLy8gdHJhbnNsYXRlWiBmaXhlcy5cbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0kaW5maXgtbWFyZ2luLXRvcCAtICRpbmZpeC1wYWRkaW5nICsgJGxlZ2FjeS1kZWR1cGUpXG4gICAgICAgICAgICAgICAgICBzY2FsZSgkZm9udC1zY2FsZSk7XG4gIC8vIFRoZSB0cmlja3MgYWJvdmUgdXNlZCB0byBzbW9vdGggb3V0IHRoZSBhbmltYXRpb24gb24gY2hyb21lIGFuZCBmaXJlZm94IGFjdHVhbGx5IG1ha2UgdGhpbmdzXG4gIC8vIHdvcnNlIG9uIElFLCBzbyB3ZSBkb24ndCBpbmNsdWRlIHRoZW0gaW4gdGhlIElFIHZlcnNpb24uXG4gICRsZWdhY3ktZGVkdXBlOiAkbGVnYWN5LWRlZHVwZSArIDAuMDAwMDEgIWdsb2JhbDtcbn1cblxuQG1peGluIGxlZ2FjeS10eXBvZ3JhcGh5KCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdHlwb2dyYXBoeS5wcml2YXRlLXR5cG9ncmFwaHktdG8tMjAxNC1jb25maWcoXG4gICAgICB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKSk7XG4gIC8vIFRoZSB1bml0LWxlc3MgbGluZS1oZWlnaHQgZnJvbSB0aGUgZm9udCBjb25maWcuXG4gICRsaW5lLWhlaWdodDogdHlwb2dyYXBoeS11dGlscy5saW5lLWhlaWdodCgkY29uZmlnLCBpbnB1dCk7XG4gIC8vIFRoZSBhbW91bnQgdG8gc2NhbGUgdGhlIGZvbnQgZm9yIHRoZSBmbG9hdGluZyBsYWJlbCBhbmQgc3Vic2NyaXB0LlxuICAkc3Vic2NyaXB0LWZvbnQtc2NhbGU6IDAuNzU7XG4gIC8vIFRoZSBhbW91bnQgb2Ygc3BhY2UgYmV0d2VlbiB0aGUgdG9wIG9mIHRoZSBsaW5lIGFuZCB0aGUgdG9wIG9mIHRoZSBhY3R1YWwgdGV4dFxuICAvLyAoYXMgYSBmcmFjdGlvbiBvZiB0aGUgZm9udC1zaXplKS5cbiAgJGxpbmUtc3BhY2luZzogKCRsaW5lLWhlaWdodCAtIDEpIC8gMjtcbiAgLy8gVGhlIHBhZGRpbmcgb24gdGhlIGluZml4LiBNb2NrcyBzaG93IGhhbGYgb2YgdGhlIHRleHQgc2l6ZSwgYnV0IHNlZW0gdG8gbWVhc3VyZSBmcm9tIHRoZSBlZGdlXG4gIC8vIG9mIHRoZSB0ZXh0IGl0c2VsZiwgbm90IHRoZSBlZGdlIG9mIHRoZSBsaW5lOyB0aGVyZWZvcmUgd2Ugc3VidHJhY3Qgb2ZmIHRoZSBsaW5lIHNwYWNpbmcuXG4gICRpbmZpeC1wYWRkaW5nOiAwLjVlbSAtICRsaW5lLXNwYWNpbmc7XG4gIC8vIFRoZSBtYXJnaW4gYXBwbGllZCB0byB0aGUgZm9ybS1maWVsZC1pbmZpeCB0byByZXNlcnZlIHNwYWNlIGZvciB0aGUgZmxvYXRpbmcgbGFiZWwuXG4gICRpbmZpeC1tYXJnaW4tdG9wOiAxZW0gKiAkbGluZS1oZWlnaHQgKiAkc3Vic2NyaXB0LWZvbnQtc2NhbGU7XG4gIC8vIFRoZSBzcGFjZSBiZXR3ZWVuIHRoZSBib3R0b20gb2YgdGhlIC5tYXQtZm9ybS1maWVsZC1mbGV4IGFyZWEgYW5kIHRoZSBzdWJzY3JpcHQgd3JhcHBlci5cbiAgLy8gTW9ja3Mgc2hvdyBoYWxmIG9mIHRoZSB0ZXh0IHNpemUsIGJ1dCB0aGlzIG1hcmdpbiBpcyBhcHBsaWVkIHRvIGFuIGVsZW1lbnQgd2l0aCB0aGUgc3Vic2NyaXB0XG4gIC8vIHRleHQgZm9udCBzaXplLCBzbyB3ZSBuZWVkIHRvIGRpdmlkZSBieSB0aGUgc2NhbGUgZmFjdG9yIHRvIG1ha2UgaXQgaGFsZiBvZiB0aGUgb3JpZ2luYWwgdGV4dFxuICAvLyBzaXplLiBXZSBhZ2FpbiBuZWVkIHRvIHN1YnRyYWN0IG9mZiB0aGUgbGluZSBzcGFjaW5nIHNpbmNlIHRoZSBtb2NrcyBtZWFzdXJlIHRvIHRoZSBlZGdlIG9mIHRoZVxuICAvLyB0ZXh0LCBub3QgdGhlICBlZGdlIG9mIHRoZSBsaW5lLlxuICAkc3Vic2NyaXB0LW1hcmdpbi10b3A6IDAuNWVtIC8gJHN1YnNjcmlwdC1mb250LXNjYWxlIC0gKCRsaW5lLXNwYWNpbmcgKiAyKTtcbiAgLy8gVGhlIHBhZGRpbmcgYXBwbGllZCB0byB0aGUgZm9ybS1maWVsZC13cmFwcGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIHRoZSBzdWJzY3JpcHQsIHNpbmNlIGl0J3NcbiAgLy8gYWJzb2x1dGVseSBwb3NpdGlvbmVkLiBUaGlzIGlzIGEgY29tYmluYXRpb24gb2YgdGhlIHN1YnNjcmlwdCdzIG1hcmdpbiBhbmQgbGluZS1oZWlnaHQsIGJ1dCB3ZVxuICAvLyBuZWVkIHRvIG11bHRpcGx5IGJ5IHRoZSBzdWJzY3JpcHQgZm9udCBzY2FsZSBmYWN0b3Igc2luY2UgdGhlIHdyYXBwZXIgaGFzIGEgbGFyZ2VyIGZvbnQgc2l6ZS5cbiAgJHdyYXBwZXItcGFkZGluZy1ib3R0b206ICgkc3Vic2NyaXB0LW1hcmdpbi10b3AgKyAkbGluZS1oZWlnaHQpICogJHN1YnNjcmlwdC1mb250LXNjYWxlO1xuXG4gIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSB7XG4gICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXIge1xuICAgICAgcGFkZGluZy1ib3R0b206ICR3cmFwcGVyLXBhZGRpbmctYm90dG9tO1xuICAgIH1cblxuICAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeCB7XG4gICAgICBwYWRkaW5nOiAkaW5maXgtcGFkZGluZyAwO1xuICAgIH1cblxuICAgICYubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IHtcbiAgICAgICYubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0IC5tYXQtZm9ybS1maWVsZC1sYWJlbCxcbiAgICAgIC5tYXQtaW5wdXQtc2VydmVyOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVsIHtcbiAgICAgICAgQGluY2x1ZGUgX2xhYmVsLWZsb2F0aW5nKFxuICAgICAgICAgICAgICAgICRzdWJzY3JpcHQtZm9udC1zY2FsZSwgJGluZml4LXBhZGRpbmcsICRpbmZpeC1tYXJnaW4tdG9wKTtcbiAgICAgIH1cblxuICAgICAgLy8gQGJyZWFraW5nLWNoYW5nZSA4LjAuMCB3aWxsIHJlbHkgb24gQXV0b2ZpbGxNb25pdG9yIGluc3RlYWQuXG4gICAgICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbDotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJcbiAgICAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbCB7XG4gICAgICAgIEBpbmNsdWRlIF9sYWJlbC1mbG9hdGluZyhcbiAgICAgICAgICAgICAgICAkc3Vic2NyaXB0LWZvbnQtc2NhbGUsICRpbmZpeC1wYWRkaW5nLCAkaW5maXgtbWFyZ2luLXRvcCk7XG4gICAgICB9XG5cbiAgICAgIC8vIFNlcnZlci1zaWRlIHJlbmRlcmVkIG1hdElucHV0IHdpdGggYSBsYWJlbCBhdHRyaWJ1dGUgYnV0IGxhYmVsIG5vdCBzaG93blxuICAgICAgLy8gKHVzZWQgYXMgYSBwdXJlIENTUyBzdGFuZC1pbiBmb3IgbWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0KS5cbiAgICAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyXG4gICAgICAubWF0LWZvcm0tZmllbGQtbGFiZWwge1xuICAgICAgICBAaW5jbHVkZSBfbGFiZWwtZmxvYXRpbmcoXG4gICAgICAgICAgICAgICAgJHN1YnNjcmlwdC1mb250LXNjYWxlLCAkaW5maXgtcGFkZGluZywgJGluZml4LW1hcmdpbi10b3ApO1xuICAgICAgfVxuICAgIH1cblxuICAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbCB7XG4gICAgICB0b3A6ICRpbmZpeC1tYXJnaW4tdG9wICsgJGluZml4LXBhZGRpbmc7XG4gICAgfVxuXG4gICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZSB7XG4gICAgICAvLyBXZSB3YW50IHRoZSB1bmRlcmxpbmUgdG8gc3RhcnQgYXQgdGhlIGVuZCBvZiB0aGUgY29udGVudCBib3gsIG5vdCB0aGUgcGFkZGluZyBib3gsXG4gICAgICAvLyBzbyB3ZSBtb3ZlIGl0IHVwIGJ5IHRoZSBwYWRkaW5nIGFtb3VudC5cbiAgICAgIGJvdHRvbTogJHdyYXBwZXItcGFkZGluZy1ib3R0b207XG4gICAgfVxuXG4gICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyIHtcbiAgICAgIG1hcmdpbi10b3A6ICRzdWJzY3JpcHQtbWFyZ2luLXRvcDtcblxuICAgICAgLy8gV2Ugd2FudCB0aGUgc3Vic2NyaXB0IHRvIHN0YXJ0IGF0IHRoZSBlbmQgb2YgdGhlIGNvbnRlbnQgYm94LCBub3QgdGhlIHBhZGRpbmcgYm94LFxuICAgICAgLy8gc28gd2UgbW92ZSBpdCB1cCBieSB0aGUgcGFkZGluZyBhbW91bnQgKGFkanVzdGVkIGZvciB0aGUgc21hbGxlciBmb250IHNpemUpO1xuICAgICAgdG9wOiBjYWxjKDEwMCUgLSAjeyR3cmFwcGVyLXBhZGRpbmctYm90dG9tIC8gJHN1YnNjcmlwdC1mb250LXNjYWxlfSk7XG4gICAgfVxuICB9XG5cbiAgLy8gdHJhbnNsYXRlWiBjYXVzZXMgdGhlIGxhYmVsIHRvIG5vdCBhcHBlYXIgd2hpbGUgcHJpbnRpbmcsIHNvIHdlIG92ZXJyaWRlIGl0IHRvIG5vdFxuICAvLyBhcHBseSB0cmFuc2xhdGVaIHdoaWxlIHByaW50aW5nXG4gIEBtZWRpYSBwcmludCB7XG4gICAgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5IHtcbiAgICAgICYubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IHtcbiAgICAgICAgJi5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXQgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLFxuICAgICAgICAubWF0LWlucHV0LXNlcnZlcjpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtZm9ybS1maWVsZC1sYWJlbCB7XG4gICAgICAgICAgQGluY2x1ZGUgX2xhYmVsLWZsb2F0aW5nLXByaW50KFxuICAgICAgICAgICAgICAgICAgJHN1YnNjcmlwdC1mb250LXNjYWxlLCAkaW5maXgtcGFkZGluZywgJGluZml4LW1hcmdpbi10b3ApO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQGJyZWFraW5nLWNoYW5nZSA4LjAuMCB3aWxsIHJlbHkgb24gQXV0b2ZpbGxNb25pdG9yIGluc3RlYWQuXG4gICAgICAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlclxuICAgICAgICAubWF0LWZvcm0tZmllbGQtbGFiZWwge1xuICAgICAgICAgIEBpbmNsdWRlIF9sYWJlbC1mbG9hdGluZy1wcmludChcbiAgICAgICAgICAgICAgICAgICRzdWJzY3JpcHQtZm9udC1zY2FsZSwgJGluZml4LXBhZGRpbmcsICRpbmZpeC1tYXJnaW4tdG9wKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFNlcnZlci1zaWRlIHJlbmRlcmVkIG1hdElucHV0IHdpdGggYSBsYWJlbCBhdHRyaWJ1dGUgYnV0IGxhYmVsIG5vdCBzaG93blxuICAgICAgICAvLyAodXNlZCBhcyBhIHB1cmUgQ1NTIHN0YW5kLWluIGZvciBtYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXQpLlxuICAgICAgICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlclxuICAgICAgICAubWF0LWZvcm0tZmllbGQtbGFiZWwge1xuICAgICAgICAgIEBpbmNsdWRlIF9sYWJlbC1mbG9hdGluZy1wcmludChcbiAgICAgICAgICAgICAgICAgICRzdWJzY3JpcHQtZm9udC1zY2FsZSwgJGluZml4LXBhZGRpbmcsICRpbmZpeC1tYXJnaW4tdG9wKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gcHJpdmF0ZS1mb3JtLWZpZWxkLWxlZ2FjeS1kZW5zaXR5KCRjb25maWctb3ItdGhlbWUpIHt9XG5cbkBtaXhpbiBsZWdhY3ktdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZykge1xuICAkdGhlbWU6IHRoZW1pbmcucHJpdmF0ZS1sZWdhY3ktZ2V0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICBAaW5jbHVkZSB0aGVtaW5nLnByaXZhdGUtY2hlY2stZHVwbGljYXRlLXRoZW1lLXN0eWxlcygkdGhlbWUsICdtYXQtZm9ybS1maWVsZC1sZWdhY3knKSB7XG4gICAgJGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJHRoZW1lKTtcbiAgICAkZGVuc2l0eTogdGhlbWluZy5nZXQtZGVuc2l0eS1jb25maWcoJHRoZW1lKTtcbiAgICAkdHlwb2dyYXBoeTogdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJHRoZW1lKTtcblxuICAgIEBpZiAkY29sb3IgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBsZWdhY3ktY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgcHJpdmF0ZS1mb3JtLWZpZWxkLWxlZ2FjeS1kZW5zaXR5KCRkZW5zaXR5KTtcbiAgICB9XG4gICAgQGlmICR0eXBvZ3JhcGh5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgbGVnYWN5LXR5cG9ncmFwaHkoJHR5cG9ncmFwaHkpO1xuICAgIH1cbiAgfVxufVxuIiwiQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnLi4vY29yZS90aGVtaW5nL3RoZW1pbmcnO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHknO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHktdXRpbHMnO1xuXG5cbi8vIFRoZW1lIHN0eWxlcyB0aGF0IG9ubHkgYXBwbHkgdG8gdGhlIGZpbGwgYXBwZWFyYW5jZSBvZiB0aGUgZm9ybS1maWVsZC5cblxuQG1peGluIGZpbGwtY29sb3IoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRmb3JlZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGZvcmVncm91bmQpO1xuICAkaXMtZGFyay10aGVtZTogbWFwLmdldCgkY29uZmlnLCBpcy1kYXJrKTtcblxuICAkZmlsbC1iYWNrZ3JvdW5kOlxuICAgIHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgYmFzZSwgaWYoJGlzLWRhcmstdGhlbWUsIDAuMSwgMC4wNCkpO1xuICAkZmlsbC1kaXNhYmxlZC1iYWNrZ3JvdW5kOlxuICAgIHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgYmFzZSwgaWYoJGlzLWRhcmstdGhlbWUsIDAuMDUsIDAuMDIpKTtcbiAgJHVuZGVybGluZS1jb2xvcjpcbiAgICB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIGRpdmlkZXIsIGlmKCRpcy1kYXJrLXRoZW1lLCAwLjUsIDAuNDIpKTtcbiAgJGxhYmVsLWRpc2FibGVkLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIGRpc2FibGVkLXRleHQpO1xuXG4gIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwge1xuICAgIC5tYXQtZm9ybS1maWVsZC1mbGV4IHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRmaWxsLWJhY2tncm91bmQ7XG4gICAgfVxuXG4gICAgJi5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZCAubWF0LWZvcm0tZmllbGQtZmxleCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZmlsbC1kaXNhYmxlZC1iYWNrZ3JvdW5kO1xuICAgIH1cblxuICAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmU6OmJlZm9yZSB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdW5kZXJsaW5lLWNvbG9yO1xuICAgIH1cblxuICAgICYubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQge1xuICAgICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsIHtcbiAgICAgICAgY29sb3I6ICRsYWJlbC1kaXNhYmxlZC1jb2xvcjtcbiAgICAgIH1cblxuICAgICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZTo6YmVmb3JlIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vIFVzZWQgdG8gbWFrZSBpbnN0YW5jZXMgb2YgdGhlIF9tYXQtZm9ybS1maWVsZC1sYWJlbC1mbG9hdGluZyBtaXhpbiBuZWdsaWdpYmx5IGRpZmZlcmVudCxcbi8vIGFuZCBwcmV2ZW50IEdvb2dsZSdzIENTUyBPcHRpbWl6ZXIgZnJvbSBjb2xsYXBzaW5nIHRoZSBkZWNsYXJhdGlvbnMuIFRoaXMgaXMgbmVlZGVkIGJlY2F1c2Ugc29tZVxuLy8gb2YgdGhlIHNlbGVjdG9ycyBjb250YWluIHBzZXVkby1jbGFzc2VzIG5vdCByZWNvZ25pemVkIGluIGFsbCBicm93c2Vycy4gSWYgYSBicm93c2VyIGVuY291bnRlcnNcbi8vIGFuIHVua25vd24gcHNldWRvLWNsYXNzIGl0IHdpbGwgZGlzY2FyZCB0aGUgZW50aXJlIHJ1bGUgc2V0LlxuJGZpbGwtZGVkdXBlOiAwO1xuXG4vLyBBcHBsaWVzIGEgZmxvYXRpbmcgbGFiZWwgYWJvdmUgdGhlIGZvcm0gZmllbGQgY29udHJvbCBpdHNlbGYuXG5AbWl4aW4gX2xhYmVsLWZsb2F0aW5nKCRmb250LXNjYWxlLCAkaW5maXgtcGFkZGluZywgJGluZml4LW1hcmdpbi10b3ApIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0kaW5maXgtbWFyZ2luLXRvcCAtICRpbmZpeC1wYWRkaW5nICsgJGZpbGwtZGVkdXBlKVxuICAgICAgICAgICAgIHNjYWxlKCRmb250LXNjYWxlKTtcbiAgd2lkdGg6IDEwMCUgLyAkZm9udC1zY2FsZSArICRmaWxsLWRlZHVwZTtcblxuICAkZmlsbC1kZWR1cGU6ICRmaWxsLWRlZHVwZSArIDAuMDAwMDEgIWdsb2JhbDtcbn1cblxuQG1peGluIGZpbGwtdHlwb2dyYXBoeSgkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHR5cG9ncmFwaHkucHJpdmF0ZS10eXBvZ3JhcGh5LXRvLTIwMTQtY29uZmlnKFxuICAgICAgdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJGNvbmZpZy1vci10aGVtZSkpO1xuICAvLyBUaGUgdW5pdC1sZXNzIGxpbmUtaGVpZ2h0IGZyb20gdGhlIGZvbnQgY29uZmlnLlxuICAkbGluZS1oZWlnaHQ6IHR5cG9ncmFwaHktdXRpbHMubGluZS1oZWlnaHQoJGNvbmZpZywgaW5wdXQpO1xuICAvLyBUaGUgYW1vdW50IHRvIHNjYWxlIHRoZSBmb250IGZvciB0aGUgZmxvYXRpbmcgbGFiZWwgYW5kIHN1YnNjcmlwdC5cbiAgJHN1YnNjcmlwdC1mb250LXNjYWxlOiAwLjc1O1xuICAvLyBUaGUgcGFkZGluZyBvbiB0b3Agb2YgdGhlIGluZml4LlxuICAkaW5maXgtcGFkZGluZy10b3A6IDAuMjVlbTtcbiAgLy8gVGhlIHBhZGRpbmcgYmVsb3cgdGhlIGluZml4LlxuICAkaW5maXgtcGFkZGluZy1ib3R0b206IDAuNzVlbTtcbiAgLy8gVGhlIG1hcmdpbiBhcHBsaWVkIHRvIHRoZSBmb3JtLWZpZWxkLWluZml4IHRvIHJlc2VydmUgc3BhY2UgZm9yIHRoZSBmbG9hdGluZyBsYWJlbC5cbiAgJGluZml4LW1hcmdpbi10b3A6IDFlbSAqICRsaW5lLWhlaWdodCAqICRzdWJzY3JpcHQtZm9udC1zY2FsZTtcbiAgLy8gVGhlIGFtb3VudCB3ZSBvZmZzZXQgdGhlIGxhYmVsIGZyb20gdGhlIGlucHV0IHRleHQgaW4gdGhlIGZpbGwgYXBwZWFyYW5jZS5cbiAgJGZpbGwtYXBwZWFyYW5jZS1sYWJlbC1vZmZzZXQ6IC0wLjVlbTtcblxuICAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsIHtcbiAgICAubWF0LWZvcm0tZmllbGQtaW5maXgge1xuICAgICAgcGFkZGluZzogJGluZml4LXBhZGRpbmctdG9wIDAgJGluZml4LXBhZGRpbmctYm90dG9tIDA7XG4gICAgfVxuXG4gICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsIHtcbiAgICAgIHRvcDogJGluZml4LW1hcmdpbi10b3AgKyAkaW5maXgtcGFkZGluZy10b3A7XG4gICAgICBtYXJnaW4tdG9wOiAkZmlsbC1hcHBlYXJhbmNlLWxhYmVsLW9mZnNldDtcbiAgICB9XG5cbiAgICAmLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdCB7XG4gICAgICAmLm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdCAubWF0LWZvcm0tZmllbGQtbGFiZWwsXG4gICAgICAubWF0LWlucHV0LXNlcnZlcjpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtZm9ybS1maWVsZC1sYWJlbCB7XG4gICAgICAgIEBpbmNsdWRlIF9sYWJlbC1mbG9hdGluZyhcbiAgICAgICAgICAgICAgICAkc3Vic2NyaXB0LWZvbnQtc2NhbGUsICRpbmZpeC1wYWRkaW5nLXRvcCArICRmaWxsLWFwcGVhcmFuY2UtbGFiZWwtb2Zmc2V0LFxuICAgICAgICAgICAgICAgICRpbmZpeC1tYXJnaW4tdG9wKTtcbiAgICAgIH1cblxuICAgICAgLy8gU2VydmVyLXNpZGUgcmVuZGVyZWQgbWF0SW5wdXQgd2l0aCBhIGxhYmVsIGF0dHJpYnV0ZSBidXQgbGFiZWwgbm90IHNob3duXG4gICAgICAvLyAodXNlZCBhcyBhIHB1cmUgQ1NTIHN0YW5kLWluIGZvciBtYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXQpLlxuICAgICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJcbiAgICAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbCB7XG4gICAgICAgIEBpbmNsdWRlIF9sYWJlbC1mbG9hdGluZyhcbiAgICAgICAgICAgICAgICAkc3Vic2NyaXB0LWZvbnQtc2NhbGUsICRpbmZpeC1wYWRkaW5nLXRvcCArICRmaWxsLWFwcGVhcmFuY2UtbGFiZWwtb2Zmc2V0LFxuICAgICAgICAgICAgICAgICRpbmZpeC1tYXJnaW4tdG9wKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHByaXZhdGUtZm9ybS1maWVsZC1maWxsLWRlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIGZpbGwtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZykge1xuICAkdGhlbWU6IHRoZW1pbmcucHJpdmF0ZS1sZWdhY3ktZ2V0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICBAaW5jbHVkZSB0aGVtaW5nLnByaXZhdGUtY2hlY2stZHVwbGljYXRlLXRoZW1lLXN0eWxlcygkdGhlbWUsICdtYXQtZm9ybS1maWVsZC1maWxsJykge1xuICAgICRjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgJGRlbnNpdHk6IHRoZW1pbmcuZ2V0LWRlbnNpdHktY29uZmlnKCR0aGVtZSk7XG4gICAgJHR5cG9ncmFwaHk6IHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCR0aGVtZSk7XG5cbiAgICBAaWYgJGNvbG9yICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgZmlsbC1jb2xvcigkY29sb3IpO1xuICAgIH1cbiAgICBAaWYgJGRlbnNpdHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBwcml2YXRlLWZvcm0tZmllbGQtZmlsbC1kZW5zaXR5KCRkZW5zaXR5KTtcbiAgICB9XG4gICAgQGlmICR0eXBvZ3JhcGh5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgZmlsbC10eXBvZ3JhcGh5KCR0eXBvZ3JhcGh5KTtcbiAgICB9XG4gIH1cbn1cbiIsIkB1c2UgJ3Nhc3M6bWFwJztcbkB1c2UgJy4uL2NvcmUvdGhlbWluZy90aGVtaW5nJztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5JztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5LXV0aWxzJztcblxuXG4vLyBUaGVtZSBzdHlsZXMgdGhhdCBvbmx5IGFwcGx5IHRvIHRoZSBvdXRsaW5lIGFwcGVhcmFuY2Ugb2YgdGhlIGZvcm0tZmllbGQuXG5cbkBtaXhpbiBvdXRsaW5lLWNvbG9yKCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAkcHJpbWFyeTogbWFwLmdldCgkY29uZmlnLCBwcmltYXJ5KTtcbiAgJGFjY2VudDogbWFwLmdldCgkY29uZmlnLCBhY2NlbnQpO1xuICAkd2FybjogbWFwLmdldCgkY29uZmlnLCB3YXJuKTtcbiAgJGZvcmVncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgZm9yZWdyb3VuZCk7XG4gICRpcy1kYXJrLXRoZW1lOiBtYXAuZ2V0KCRjb25maWcsIGlzLWRhcmspO1xuXG4gICRsYWJlbC1kaXNhYmxlZC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBkaXNhYmxlZC10ZXh0KTtcbiAgJG91dGxpbmUtY29sb3I6XG4gICAgdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBkaXZpZGVyLCBpZigkaXMtZGFyay10aGVtZSwgMC4zLCAwLjEyKSk7XG4gICRvdXRsaW5lLWNvbG9yLWhvdmVyOlxuICAgIHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgZGl2aWRlciwgaWYoJGlzLWRhcmstdGhlbWUsIDEsIDAuODcpKTtcbiAgJG91dGxpbmUtY29sb3ItcHJpbWFyeTogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRwcmltYXJ5KTtcbiAgJG91dGxpbmUtY29sb3ItYWNjZW50OiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGFjY2VudCk7XG4gICRvdXRsaW5lLWNvbG9yLXdhcm46IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkd2Fybik7XG4gICRvdXRsaW5lLWNvbG9yLWRpc2FibGVkOlxuICAgIHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgZGl2aWRlciwgaWYoJGlzLWRhcmstdGhlbWUsIDAuMTUsIDAuMDYpKTtcblxuICAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIHtcbiAgICAubWF0LWZvcm0tZmllbGQtb3V0bGluZSB7XG4gICAgICBjb2xvcjogJG91dGxpbmUtY29sb3I7XG4gICAgfVxuXG4gICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2sge1xuICAgICAgY29sb3I6ICRvdXRsaW5lLWNvbG9yLWhvdmVyO1xuICAgIH1cblxuICAgICYubWF0LWZvY3VzZWQge1xuICAgICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2sge1xuICAgICAgICBjb2xvcjogJG91dGxpbmUtY29sb3ItcHJpbWFyeTtcbiAgICAgIH1cblxuICAgICAgJi5tYXQtYWNjZW50IC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNrIHtcbiAgICAgICAgY29sb3I6ICRvdXRsaW5lLWNvbG9yLWFjY2VudDtcbiAgICAgIH1cblxuICAgICAgJi5tYXQtd2FybiAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGljayB7XG4gICAgICAgIGNvbG9yOiAkb3V0bGluZS1jb2xvci13YXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIENsYXNzIHJlcGVhdGVkIHNvIHRoYXQgcnVsZSBpcyBzcGVjaWZpYyBlbm91Z2ggdG8gb3ZlcnJpZGUgZm9jdXNlZCBhY2NlbnQgY29sb3IgY2FzZS5cbiAgICAmLm1hdC1mb3JtLWZpZWxkLWludmFsaWQubWF0LWZvcm0tZmllbGQtaW52YWxpZCB7XG4gICAgICAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGljayB7XG4gICAgICAgIGNvbG9yOiAkb3V0bGluZS1jb2xvci13YXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgICYubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQge1xuICAgICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsIHtcbiAgICAgICAgY29sb3I6ICRsYWJlbC1kaXNhYmxlZC1jb2xvcjtcbiAgICAgIH1cblxuICAgICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUge1xuICAgICAgICBjb2xvcjogJG91dGxpbmUtY29sb3ItZGlzYWJsZWQ7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vIFVzZWQgdG8gbWFrZSBpbnN0YW5jZXMgb2YgdGhlIF9tYXQtZm9ybS1maWVsZC1sYWJlbC1mbG9hdGluZyBtaXhpbiBuZWdsaWdpYmx5IGRpZmZlcmVudCxcbi8vIGFuZCBwcmV2ZW50IEdvb2dsZSdzIENTUyBPcHRpbWl6ZXIgZnJvbSBjb2xsYXBzaW5nIHRoZSBkZWNsYXJhdGlvbnMuIFRoaXMgaXMgbmVlZGVkIGJlY2F1c2Ugc29tZVxuLy8gb2YgdGhlIHNlbGVjdG9ycyBjb250YWluIHBzZXVkby1jbGFzc2VzIG5vdCByZWNvZ25pemVkIGluIGFsbCBicm93c2Vycy4gSWYgYSBicm93c2VyIGVuY291bnRlcnNcbi8vIGFuIHVua25vd24gcHNldWRvLWNsYXNzIGl0IHdpbGwgZGlzY2FyZCB0aGUgZW50aXJlIHJ1bGUgc2V0LlxuJG91dGxpbmUtZGVkdXBlOiAwO1xuXG4vLyBBcHBsaWVzIGEgZmxvYXRpbmcgbGFiZWwgYWJvdmUgdGhlIGZvcm0gZmllbGQgY29udHJvbCBpdHNlbGYuXG5AbWl4aW4gX2xhYmVsLWZsb2F0aW5nKCRmb250LXNjYWxlLCAkaW5maXgtcGFkZGluZywgJGluZml4LW1hcmdpbi10b3ApIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0kaW5maXgtbWFyZ2luLXRvcCAtICRpbmZpeC1wYWRkaW5nICsgJG91dGxpbmUtZGVkdXBlKVxuICBzY2FsZSgkZm9udC1zY2FsZSk7XG4gIHdpZHRoOiAxMDAlIC8gJGZvbnQtc2NhbGUgKyAkb3V0bGluZS1kZWR1cGU7XG5cbiAgJG91dGxpbmUtZGVkdXBlOiAkb3V0bGluZS1kZWR1cGUgKyAwLjAwMDAxICFnbG9iYWw7XG59XG5cbkBtaXhpbiBvdXRsaW5lLXR5cG9ncmFwaHkoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0eXBvZ3JhcGh5LnByaXZhdGUtdHlwb2dyYXBoeS10by0yMDE0LWNvbmZpZyhcbiAgICAgIHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCRjb25maWctb3ItdGhlbWUpKTtcbiAgLy8gVGhlIHVuaXQtbGVzcyBsaW5lLWhlaWdodCBmcm9tIHRoZSBmb250IGNvbmZpZy5cbiAgJGxpbmUtaGVpZ2h0OiB0eXBvZ3JhcGh5LXV0aWxzLmxpbmUtaGVpZ2h0KCRjb25maWcsIGlucHV0KTtcbiAgLy8gVGhlIGFtb3VudCB0byBzY2FsZSB0aGUgZm9udCBmb3IgdGhlIGZsb2F0aW5nIGxhYmVsIGFuZCBzdWJzY3JpcHQuXG4gICRzdWJzY3JpcHQtZm9udC1zY2FsZTogMC43NTtcbiAgLy8gVGhlIHBhZGRpbmcgYWJvdmUgYW5kIGJlbG93IHRoZSBpbmZpeC5cbiAgJGluZml4LXBhZGRpbmc6IDFlbTtcbiAgLy8gVGhlIG1hcmdpbiBhcHBsaWVkIHRvIHRoZSBmb3JtLWZpZWxkLWluZml4IHRvIHJlc2VydmUgc3BhY2UgZm9yIHRoZSBmbG9hdGluZyBsYWJlbC5cbiAgJGluZml4LW1hcmdpbi10b3A6IDFlbSAqICRsaW5lLWhlaWdodCAqICRzdWJzY3JpcHQtZm9udC1zY2FsZTtcbiAgLy8gVGhlIHNwYWNlIGJldHdlZW4gdGhlIGJvdHRvbSBvZiB0aGUgLm1hdC1mb3JtLWZpZWxkLWZsZXggYXJlYSBhbmQgdGhlIHN1YnNjcmlwdCB3cmFwcGVyLlxuICAvLyBNb2NrcyBzaG93IGhhbGYgb2YgdGhlIHRleHQgc2l6ZSwgYnV0IHRoaXMgbWFyZ2luIGlzIGFwcGxpZWQgdG8gYW4gZWxlbWVudCB3aXRoIHRoZSBzdWJzY3JpcHRcbiAgLy8gdGV4dCBmb250IHNpemUsIHNvIHdlIG5lZWQgdG8gZGl2aWRlIGJ5IHRoZSBzY2FsZSBmYWN0b3IgdG8gbWFrZSBpdCBoYWxmIG9mIHRoZSBvcmlnaW5hbCB0ZXh0XG4gIC8vIHNpemUuXG4gICRzdWJzY3JpcHQtbWFyZ2luLXRvcDogMC41ZW0gLyAkc3Vic2NyaXB0LWZvbnQtc2NhbGU7XG4gIC8vIFRoZSBwYWRkaW5nIGFwcGxpZWQgdG8gdGhlIGZvcm0tZmllbGQtd3JhcHBlciB0byByZXNlcnZlIHNwYWNlIGZvciB0aGUgc3Vic2NyaXB0LCBzaW5jZSBpdCdzXG4gIC8vIGFic29sdXRlbHkgcG9zaXRpb25lZC4gVGhpcyBpcyBhIGNvbWJpbmF0aW9uIG9mIHRoZSBzdWJzY3JpcHQncyBtYXJnaW4gYW5kIGxpbmUtaGVpZ2h0LCBidXQgd2VcbiAgLy8gbmVlZCB0byBtdWx0aXBseSBieSB0aGUgc3Vic2NyaXB0IGZvbnQgc2NhbGUgZmFjdG9yIHNpbmNlIHRoZSB3cmFwcGVyIGhhcyBhIGxhcmdlciBmb250IHNpemUuXG4gICR3cmFwcGVyLXBhZGRpbmctYm90dG9tOiAoJHN1YnNjcmlwdC1tYXJnaW4tdG9wICsgJGxpbmUtaGVpZ2h0KSAqICRzdWJzY3JpcHQtZm9udC1zY2FsZTtcbiAgLy8gVGhlIGFtb3VudCB3ZSBvZmZzZXQgdGhlIGxhYmVsIGZyb20gdGhlIGlucHV0IHRleHQgaW4gdGhlIG91dGxpbmUgYXBwZWFyYW5jZS5cbiAgJG91dGxpbmUtYXBwZWFyYW5jZS1sYWJlbC1vZmZzZXQ6IC0wLjI1ZW07XG5cbiAgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZSB7XG4gICAgLm1hdC1mb3JtLWZpZWxkLWluZml4IHtcbiAgICAgIHBhZGRpbmc6ICRpbmZpeC1wYWRkaW5nIDAgJGluZml4LXBhZGRpbmcgMDtcbiAgICB9XG5cbiAgICAubWF0LWZvcm0tZmllbGQtbGFiZWwge1xuICAgICAgdG9wOiAkaW5maXgtbWFyZ2luLXRvcCArICRpbmZpeC1wYWRkaW5nO1xuICAgICAgbWFyZ2luLXRvcDogJG91dGxpbmUtYXBwZWFyYW5jZS1sYWJlbC1vZmZzZXQ7XG4gICAgfVxuXG4gICAgJi5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQge1xuICAgICAgJi5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXQgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLFxuICAgICAgLm1hdC1pbnB1dC1zZXJ2ZXI6Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWwge1xuICAgICAgICBAaW5jbHVkZSBfbGFiZWwtZmxvYXRpbmcoXG4gICAgICAgICAgICAgICAgJHN1YnNjcmlwdC1mb250LXNjYWxlLCAkaW5maXgtcGFkZGluZyArICRvdXRsaW5lLWFwcGVhcmFuY2UtbGFiZWwtb2Zmc2V0LFxuICAgICAgICAgICAgICAgICRpbmZpeC1tYXJnaW4tdG9wKTtcbiAgICAgIH1cblxuICAgICAgLy8gU2VydmVyLXNpZGUgcmVuZGVyZWQgbWF0SW5wdXQgd2l0aCBhIGxhYmVsIGF0dHJpYnV0ZSBidXQgbGFiZWwgbm90IHNob3duXG4gICAgICAvLyAodXNlZCBhcyBhIHB1cmUgQ1NTIHN0YW5kLWluIGZvciBtYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXQpLlxuICAgICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJcbiAgICAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbCB7XG4gICAgICAgIEBpbmNsdWRlIF9sYWJlbC1mbG9hdGluZyhcbiAgICAgICAgICAgICAgICAkc3Vic2NyaXB0LWZvbnQtc2NhbGUsICRpbmZpeC1wYWRkaW5nICsgJG91dGxpbmUtYXBwZWFyYW5jZS1sYWJlbC1vZmZzZXQsXG4gICAgICAgICAgICAgICAgJGluZml4LW1hcmdpbi10b3ApO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gcHJpdmF0ZS1mb3JtLWZpZWxkLW91dGxpbmUtZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gb3V0bGluZS10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKSB7XG4gICR0aGVtZTogdGhlbWluZy5wcml2YXRlLWxlZ2FjeS1nZXQtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZyk7XG4gIEBpbmNsdWRlIHRoZW1pbmcucHJpdmF0ZS1jaGVjay1kdXBsaWNhdGUtdGhlbWUtc3R5bGVzKCR0aGVtZSwgJ21hdC1mb3JtLWZpZWxkLW91dGxpbmUnKSB7XG4gICAgJGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJHRoZW1lKTtcbiAgICAkZGVuc2l0eTogdGhlbWluZy5nZXQtZGVuc2l0eS1jb25maWcoJHRoZW1lKTtcbiAgICAkdHlwb2dyYXBoeTogdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJHRoZW1lKTtcblxuICAgIEBpZiAkY29sb3IgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBvdXRsaW5lLWNvbG9yKCRjb2xvcik7XG4gICAgfVxuICAgIEBpZiAkZGVuc2l0eSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIHByaXZhdGUtZm9ybS1maWVsZC1vdXRsaW5lLWRlbnNpdHkoJGRlbnNpdHkpO1xuICAgIH1cbiAgICBAaWYgJHR5cG9ncmFwaHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBvdXRsaW5lLXR5cG9ncmFwaHkoJHR5cG9ncmFwaHkpO1xuICAgIH1cbiAgfVxufVxuXG4iLCJAdXNlICcuLi9jb3JlL3RoZW1pbmcvdGhlbWluZyc7XG5AdXNlICcuLi9jb3JlL3R5cG9ncmFwaHkvdHlwb2dyYXBoeSc7XG5AdXNlICcuLi9jb3JlL3R5cG9ncmFwaHkvdHlwb2dyYXBoeS11dGlscyc7XG5AdXNlICcuLi9jb3JlL3N0eWxlL2xpc3QtY29tbW9uJztcblxuXG4vLyBJbmNsdWRlIHRoaXMgZW1wdHkgbWl4aW4gZm9yIGNvbnNpc3RlbmN5IHdpdGggdGhlIG90aGVyIGNvbXBvbmVudHMuXG5AbWl4aW4gY29sb3IoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIHR5cG9ncmFwaHkoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0eXBvZ3JhcGh5LnByaXZhdGUtdHlwb2dyYXBoeS10by0yMDE0LWNvbmZpZyhcbiAgICAgIHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCRjb25maWctb3ItdGhlbWUpKTtcbiAgLm1hdC1ncmlkLXRpbGUtaGVhZGVyLFxuICAubWF0LWdyaWQtdGlsZS1mb290ZXIge1xuICAgIEBpbmNsdWRlIGxpc3QtY29tbW9uLmJhc2UodHlwb2dyYXBoeS11dGlscy5mb250LXNpemUoJGNvbmZpZywgY2FwdGlvbikpO1xuICAgIGZvbnQtc2l6ZTogdHlwb2dyYXBoeS11dGlscy5mb250LXNpemUoJGNvbmZpZywgYm9keS0xKTtcbiAgfVxufVxuXG5AbWl4aW4gX2RlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIHRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiB0aGVtaW5nLnByaXZhdGUtbGVnYWN5LWdldC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgQGluY2x1ZGUgdGhlbWluZy5wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LWdyaWQtbGlzdCcpIHtcbiAgICAkY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkdGhlbWUpO1xuICAgICRkZW5zaXR5OiB0aGVtaW5nLmdldC1kZW5zaXR5LWNvbmZpZygkdGhlbWUpO1xuICAgICR0eXBvZ3JhcGh5OiB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkdGhlbWUpO1xuXG4gICAgQGlmICRjb2xvciAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIGNvbG9yKCRjb2xvcik7XG4gICAgfVxuICAgIEBpZiAkZGVuc2l0eSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIF9kZW5zaXR5KCRkZW5zaXR5KTtcbiAgICB9XG4gICAgQGlmICR0eXBvZ3JhcGh5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgdHlwb2dyYXBoeSgkdHlwb2dyYXBoeSk7XG4gICAgfVxuICB9XG59XG4iLCIvLyBUaGlzIG1peGluIHdpbGwgZW5zdXJlIHRoYXQgbGluZXMgdGhhdCBvdmVyZmxvdyB0aGUgY29udGFpbmVyIHdpbGwgaGlkZSB0aGUgb3ZlcmZsb3cgYW5kXG4vLyB0cnVuY2F0ZSBuZWF0bHkgd2l0aCBhbiBlbGxpcHNpcy5cbkBtaXhpbiB0cnVuY2F0ZS1saW5lKCkge1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbn1cblxuLy8gTWl4aW4gdG8gcHJvdmlkZSBhbGwgbWF0LWxpbmUgc3R5bGVzLCBjaGFuZ2luZyBzZWNvbmRhcnkgZm9udCBzaXplIGJhc2VkIG9uIHdoZXRoZXIgdGhlIGxpc3Rcbi8vIGlzIGluIGRlbnNlIG1vZGUuXG5AbWl4aW4gYmFzZSgkc2Vjb25kYXJ5LWZvbnQtc2l6ZSkge1xuICAubWF0LWxpbmUge1xuICAgIEBpbmNsdWRlIHRydW5jYXRlLWxpbmUoKTtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuXG4gICAgLy8gYWxsIGxpbmVzIGJ1dCB0aGUgdG9wIGxpbmUgc2hvdWxkIGhhdmUgc21hbGxlciB0ZXh0XG4gICAgJjpudGgtY2hpbGQobisyKSB7XG4gICAgICBmb250LXNpemU6ICRzZWNvbmRhcnktZm9udC1zaXplO1xuICAgIH1cbiAgfVxufVxuXG4vLyBUaGlzIG1peGluIG5vcm1hbGl6ZXMgZGVmYXVsdCBlbGVtZW50IHN0eWxlcywgZS5nLiBmb250IHdlaWdodCBmb3IgaGVhZGluZyB0ZXh0LlxuQG1peGluIG5vcm1hbGl6ZS10ZXh0KCkge1xuICAmID4gKiB7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICBmb250LXNpemU6IGluaGVyaXQ7XG4gIH1cbn1cblxuLy8gVGhpcyBtaXhpbiBwcm92aWRlcyBiYXNlIHN0eWxlcyBmb3IgdGhlIHdyYXBwZXIgYXJvdW5kIG1hdC1saW5lIGVsZW1lbnRzIGluIGEgbGlzdC5cbkBtaXhpbiB3cmFwcGVyLWJhc2UoKSB7XG4gIEBpbmNsdWRlIG5vcm1hbGl6ZS10ZXh0KCk7XG5cbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgZmxleDogYXV0bztcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAvLyBNdXN0IHJlbW92ZSB3cmFwcGVyIHdoZW4gbGluZXMgYXJlIGVtcHR5IG9yIGl0IHRha2VzIHVwIGhvcml6b250YWxcbiAgLy8gc3BhY2UgYW5kIHB1c2hlcyBvdGhlciBlbGVtZW50cyB0byB0aGUgcmlnaHQuXG4gICY6ZW1wdHkge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cbiIsIkB1c2UgJ3Nhc3M6bWFwJztcbkB1c2UgJy4uL2NvcmUvdGhlbWluZy9wYWxldHRlJztcbkB1c2UgJy4uL2NvcmUvdGhlbWluZy90aGVtaW5nJztcbkB1c2UgJy4uL2NvcmUvc3R5bGUvZm9ybS1jb21tb24nO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHknO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHktdXRpbHMnO1xuQHVzZSAnLi4vY29yZS9zdHlsZS92ZW5kb3ItcHJlZml4ZXMnO1xuXG5cbkBtaXhpbiBjb2xvcigkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJHByaW1hcnk6IG1hcC5nZXQoJGNvbmZpZywgcHJpbWFyeSk7XG4gICRhY2NlbnQ6IG1hcC5nZXQoJGNvbmZpZywgYWNjZW50KTtcbiAgJHdhcm46IG1hcC5nZXQoJGNvbmZpZywgd2Fybik7XG4gICRmb3JlZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGZvcmVncm91bmQpO1xuXG4gIC5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0IC5tYXQtZm9ybS1maWVsZC1pbmZpeDo6YWZ0ZXIge1xuICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIHNlY29uZGFyeS10ZXh0KTtcbiAgfVxuXG4gIC5tYXQtaW5wdXQtZWxlbWVudDpkaXNhYmxlZCxcbiAgLm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQgLm1hdC1mb3JtLWZpZWxkLWluZml4OjphZnRlciB7XG4gICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgZGlzYWJsZWQtdGV4dCk7XG4gIH1cblxuICAubWF0LWlucHV0LWVsZW1lbnQge1xuICAgIGNhcmV0LWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHByaW1hcnksIHRleHQpO1xuXG4gICAgQGluY2x1ZGUgdmVuZG9yLXByZWZpeGVzLmlucHV0LXBsYWNlaG9sZGVyIHtcbiAgICAgIGNvbG9yOiBmb3JtLWNvbW1vbi5wcml2YXRlLWNvbnRyb2wtcGxhY2Vob2xkZXItY29sb3IoJGNvbmZpZyk7XG4gICAgfVxuXG4gICAgLy8gT24gZGFyayB0aGVtZXMgd2Ugc2V0IHRoZSBuYXRpdmUgYHNlbGVjdGAgY29sb3IgdG8gc29tZSBzaGFkZSBvZiB3aGl0ZSxcbiAgICAvLyBob3dldmVyIHRoZSBjb2xvciBwcm9wYWdhdGVzIHRvIGFsbCBvZiB0aGUgYG9wdGlvbmAgZWxlbWVudHMsIHdoaWNoIGFyZVxuICAgIC8vIGFsd2F5cyBvbiBhIHdoaXRlIGJhY2tncm91bmQgaW5zaWRlIHRoZSBkcm9wZG93biwgY2F1c2luZyB0aGVtIHRvIGJsZW5kIGluLlxuICAgIC8vIFNpbmNlIHdlIGNhbid0IGNoYW5nZSBiYWNrZ3JvdW5kIG9mIHRoZSBkcm9wZG93biwgd2UgbmVlZCB0byBleHBsaWNpdGx5XG4gICAgLy8gcmVzZXQgdGhlIGNvbG9yIG9mIHRoZSBvcHRpb25zIHRvIHNvbWV0aGluZyBkYXJrLlxuICAgIEBpZiAobWFwLmdldCgkY29uZmlnLCBpcy1kYXJrKSkge1xuICAgICAgb3B0aW9uIHtcbiAgICAgICAgY29sb3I6IHBhbGV0dGUuJGRhcmstcHJpbWFyeS10ZXh0O1xuICAgICAgfVxuXG4gICAgICBvcHRpb246ZGlzYWJsZWQge1xuICAgICAgICBjb2xvcjogcGFsZXR0ZS4kZGFyay1kaXNhYmxlZC10ZXh0O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5tYXQtZm9ybS1maWVsZC5tYXQtYWNjZW50IC5tYXQtaW5wdXQtZWxlbWVudCB7XG4gICAgY2FyZXQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYWNjZW50LCB0ZXh0KTtcbiAgfVxuXG4gIC5tYXQtZm9ybS1maWVsZC5tYXQtd2FybiAubWF0LWlucHV0LWVsZW1lbnQsXG4gIC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkIC5tYXQtaW5wdXQtZWxlbWVudCB7XG4gICAgY2FyZXQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkd2FybiwgdGV4dCk7XG4gIH1cblxuICAubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkIC5tYXQtZm9ybS1maWVsZC1pbmZpeDo6YWZ0ZXIge1xuICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHdhcm4sIHRleHQpO1xuICB9XG59XG5cbkBtaXhpbiB0eXBvZ3JhcGh5KCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdHlwb2dyYXBoeS5wcml2YXRlLXR5cG9ncmFwaHktdG8tMjAxNC1jb25maWcoXG4gICAgICB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKSk7XG4gIC8vIFRoZSB1bml0LWxlc3MgbGluZS1oZWlnaHQgZnJvbSB0aGUgZm9udCBjb25maWcuXG4gICRsaW5lLWhlaWdodDogdHlwb2dyYXBoeS11dGlscy5saW5lLWhlaWdodCgkY29uZmlnLCBpbnB1dCk7XG5cbiAgLy8gVGhlIGFtb3VudCBvZiBzcGFjZSBiZXR3ZWVuIHRoZSB0b3Agb2YgdGhlIGxpbmUgYW5kIHRoZSB0b3Agb2YgdGhlIGFjdHVhbCB0ZXh0XG4gIC8vIChhcyBhIGZyYWN0aW9uIG9mIHRoZSBmb250LXNpemUpLlxuICAkbGluZS1zcGFjaW5nOiAoJGxpbmUtaGVpZ2h0IC0gMSkgLyAyO1xuXG4gIC8vIDxpbnB1dD4gZWxlbWVudHMgc2VlbSB0byBoYXZlIHRoZWlyIGhlaWdodCBzZXQgc2xpZ2h0bHkgdG9vIGxhcmdlIG9uIFNhZmFyaSBjYXVzaW5nIHRoZSB0ZXh0IHRvXG4gIC8vIGJlIG1pc2FsaWduZWQgdy5yLnQuIHRoZSBwbGFjZWhvbGRlci4gQWRkaW5nIHRoaXMgbWFyZ2luIGNvcnJlY3RzIGl0LlxuICBpbnB1dC5tYXQtaW5wdXQtZWxlbWVudCB7XG4gICAgbWFyZ2luLXRvcDogLSRsaW5lLXNwYWNpbmcgKiAxZW07XG4gIH1cbn1cblxuQG1peGluIF9kZW5zaXR5KCRjb25maWctb3ItdGhlbWUpIHt9XG5cbkBtaXhpbiB0aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKSB7XG4gICR0aGVtZTogdGhlbWluZy5wcml2YXRlLWxlZ2FjeS1nZXQtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZyk7XG4gIEBpbmNsdWRlIHRoZW1pbmcucHJpdmF0ZS1jaGVjay1kdXBsaWNhdGUtdGhlbWUtc3R5bGVzKCR0aGVtZSwgJ21hdC1pbnB1dCcpIHtcbiAgICAkY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkdGhlbWUpO1xuICAgICRkZW5zaXR5OiB0aGVtaW5nLmdldC1kZW5zaXR5LWNvbmZpZygkdGhlbWUpO1xuICAgICR0eXBvZ3JhcGh5OiB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkdGhlbWUpO1xuXG4gICAgQGlmICRjb2xvciAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIGNvbG9yKCRjb2xvcik7XG4gICAgfVxuICAgIEBpZiAkZGVuc2l0eSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIF9kZW5zaXR5KCRkZW5zaXR5KTtcbiAgICB9XG4gICAgQGlmICR0eXBvZ3JhcGh5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgdHlwb2dyYXBoeSgkdHlwb2dyYXBoeSk7XG4gICAgfVxuICB9XG59XG4iLCJAdXNlICdzYXNzOm1hcCc7XG5AdXNlICcuLi9jb3JlL3N0eWxlL3ByaXZhdGUnO1xuQHVzZSAnLi4vY29yZS90aGVtaW5nL3RoZW1pbmcnO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHknO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHktdXRpbHMnO1xuXG5cbkBtaXhpbiBjb2xvcigkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJGJhY2tncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgYmFja2dyb3VuZCk7XG4gICRmb3JlZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGZvcmVncm91bmQpO1xuXG4gIC5tYXQtbWVudS1wYW5lbCB7XG4gICAgQGluY2x1ZGUgcHJpdmF0ZS5wcml2YXRlLXRoZW1lLW92ZXJyaWRhYmxlLWVsZXZhdGlvbig0LCAkY29uZmlnKTtcbiAgICBiYWNrZ3JvdW5kOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGJhY2tncm91bmQsICdjYXJkJyk7XG4gIH1cblxuICAubWF0LW1lbnUtaXRlbSB7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgJ3RleHQnKTtcblxuICAgICZbZGlzYWJsZWRdIHtcbiAgICAgICYsXG4gICAgICAmOjphZnRlcixcbiAgICAgIC5tYXQtaWNvbi1uby1jb2xvciB7XG4gICAgICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsICdkaXNhYmxlZCcpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5tYXQtbWVudS1pdGVtIC5tYXQtaWNvbi1uby1jb2xvcixcbiAgLm1hdC1tZW51LWl0ZW0tc3VibWVudS10cmlnZ2VyOjphZnRlciB7XG4gICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgJ2ljb24nKTtcbiAgfVxuXG4gIC5tYXQtbWVudS1pdGVtOmhvdmVyLFxuICAubWF0LW1lbnUtaXRlbS5jZGstcHJvZ3JhbS1mb2N1c2VkLFxuICAubWF0LW1lbnUtaXRlbS5jZGsta2V5Ym9hcmQtZm9jdXNlZCxcbiAgLm1hdC1tZW51LWl0ZW0taGlnaGxpZ2h0ZWQge1xuICAgICY6bm90KFtkaXNhYmxlZF0pIHtcbiAgICAgIGJhY2tncm91bmQ6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYmFja2dyb3VuZCwgJ2hvdmVyJyk7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiB0eXBvZ3JhcGh5KCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdHlwb2dyYXBoeS5wcml2YXRlLXR5cG9ncmFwaHktdG8tMjAxNC1jb25maWcoXG4gICAgICB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKSk7XG4gIC5tYXQtbWVudS1pdGVtIHtcbiAgICBmb250OiB7XG4gICAgICBmYW1pbHk6IHR5cG9ncmFwaHktdXRpbHMuZm9udC1mYW1pbHkoJGNvbmZpZywgYm9keS0xKTtcbiAgICAgIHNpemU6IHR5cG9ncmFwaHktdXRpbHMuZm9udC1zaXplKCRjb25maWcsIGJvZHktMSk7XG4gICAgICB3ZWlnaHQ6IHR5cG9ncmFwaHktdXRpbHMuZm9udC13ZWlnaHQoJGNvbmZpZywgYm9keS0xKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIF9kZW5zaXR5KCRjb25maWctb3ItdGhlbWUpIHt9XG5cbkBtaXhpbiB0aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKSB7XG4gICR0aGVtZTogdGhlbWluZy5wcml2YXRlLWxlZ2FjeS1nZXQtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZyk7XG4gIEBpbmNsdWRlIHRoZW1pbmcucHJpdmF0ZS1jaGVjay1kdXBsaWNhdGUtdGhlbWUtc3R5bGVzKCR0aGVtZSwgJ21hdC1tZW51Jykge1xuICAgICRjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgJGRlbnNpdHk6IHRoZW1pbmcuZ2V0LWRlbnNpdHktY29uZmlnKCR0aGVtZSk7XG4gICAgJHR5cG9ncmFwaHk6IHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCR0aGVtZSk7XG5cbiAgICBAaWYgJGNvbG9yICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgX2RlbnNpdHkoJGRlbnNpdHkpO1xuICAgIH1cbiAgICBAaWYgJHR5cG9ncmFwaHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5KCR0eXBvZ3JhcGh5KTtcbiAgICB9XG4gIH1cbn1cblxuIiwiQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnLi4vY29yZS90aGVtaW5nL3RoZW1pbmcnO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHknO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHktdXRpbHMnO1xuQHVzZSAnLi4vY29yZS9kZW5zaXR5L3ByaXZhdGUvY29tcGF0aWJpbGl0eSc7XG5AdXNlICcuL3BhZ2luYXRvci12YXJpYWJsZXMnO1xuXG5AbWl4aW4gY29sb3IoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRmb3JlZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGZvcmVncm91bmQpO1xuICAkYmFja2dyb3VuZDogbWFwLmdldCgkY29uZmlnLCBiYWNrZ3JvdW5kKTtcblxuICAubWF0LXBhZ2luYXRvciB7XG4gICAgYmFja2dyb3VuZDogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLCAnY2FyZCcpO1xuICB9XG5cbiAgLm1hdC1wYWdpbmF0b3IsXG4gIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZSAubWF0LXNlbGVjdC10cmlnZ2VyIHtcbiAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBzZWNvbmRhcnktdGV4dCk7XG4gIH1cblxuICAubWF0LXBhZ2luYXRvci1kZWNyZW1lbnQsXG4gIC5tYXQtcGFnaW5hdG9yLWluY3JlbWVudCB7XG4gICAgYm9yZGVyLXRvcDogMnB4IHNvbGlkIHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgJ2ljb24nKTtcbiAgICBib3JkZXItcmlnaHQ6IDJweCBzb2xpZCB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsICdpY29uJyk7XG4gIH1cblxuICAubWF0LXBhZ2luYXRvci1maXJzdCxcbiAgLm1hdC1wYWdpbmF0b3ItbGFzdCB7XG4gICAgYm9yZGVyLXRvcDogMnB4IHNvbGlkIHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgJ2ljb24nKTtcbiAgfVxuXG4gIC5tYXQtaWNvbi1idXR0b25bZGlzYWJsZWRdIHtcbiAgICAubWF0LXBhZ2luYXRvci1kZWNyZW1lbnQsXG4gICAgLm1hdC1wYWdpbmF0b3ItaW5jcmVtZW50LFxuICAgIC5tYXQtcGFnaW5hdG9yLWZpcnN0LFxuICAgIC5tYXQtcGFnaW5hdG9yLWxhc3Qge1xuICAgICAgYm9yZGVyLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsICdkaXNhYmxlZCcpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gdHlwb2dyYXBoeSgkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHR5cG9ncmFwaHkucHJpdmF0ZS10eXBvZ3JhcGh5LXRvLTIwMTQtY29uZmlnKFxuICAgICAgdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJGNvbmZpZy1vci10aGVtZSkpO1xuICAubWF0LXBhZ2luYXRvcixcbiAgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplIC5tYXQtc2VsZWN0LXRyaWdnZXIge1xuICAgIGZvbnQ6IHtcbiAgICAgIGZhbWlseTogdHlwb2dyYXBoeS11dGlscy5mb250LWZhbWlseSgkY29uZmlnLCBjYXB0aW9uKTtcbiAgICAgIHNpemU6IHR5cG9ncmFwaHktdXRpbHMuZm9udC1zaXplKCRjb25maWcsIGNhcHRpb24pO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRkZW5zaXR5LXNjYWxlOiB0aGVtaW5nLmdldC1kZW5zaXR5LWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJGhlaWdodDogY29tcGF0aWJpbGl0eS5wcml2YXRlLWRlbnNpdHktcHJvcC12YWx1ZShwYWdpbmF0b3ItdmFyaWFibGVzLiRkZW5zaXR5LWNvbmZpZyxcbiAgICAkZGVuc2l0eS1zY2FsZSwgaGVpZ2h0KTtcblxuICBAaW5jbHVkZSBjb21wYXRpYmlsaXR5LnByaXZhdGUtZGVuc2l0eS1sZWdhY3ktY29tcGF0aWJpbGl0eSgpIHtcbiAgICAubWF0LXBhZ2luYXRvci1jb250YWluZXIge1xuICAgICAgbWluLWhlaWdodDogJGhlaWdodDtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiB0aGVtaW5nLnByaXZhdGUtbGVnYWN5LWdldC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgQGluY2x1ZGUgdGhlbWluZy5wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LXBhZ2luYXRvcicpIHtcbiAgICAkY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkdGhlbWUpO1xuICAgICRkZW5zaXR5OiB0aGVtaW5nLmdldC1kZW5zaXR5LWNvbmZpZygkdGhlbWUpO1xuICAgICR0eXBvZ3JhcGh5OiB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkdGhlbWUpO1xuXG4gICAgQGlmICRjb2xvciAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIGNvbG9yKCRjb2xvcik7XG4gICAgfVxuICAgIEBpZiAkZGVuc2l0eSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIGRlbnNpdHkoJGRlbnNpdHkpO1xuICAgIH1cbiAgICBAaWYgJHR5cG9ncmFwaHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5KCR0eXBvZ3JhcGh5KTtcbiAgICB9XG4gIH1cbn1cbiIsIkB1c2UgJ3Nhc3M6bWFwJztcbkB1c2UgJy4uL2NvcmUvdGhlbWluZy90aGVtaW5nJztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5JztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5LXV0aWxzJztcblxuQG1peGluIF9jb2xvcigkcGFsZXR0ZSkge1xuICAmLm1hdC1yYWRpby1jaGVja2VkIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlIHtcbiAgICBib3JkZXItY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkcGFsZXR0ZSk7XG4gIH1cblxuICAubWF0LXJhZGlvLWlubmVyLWNpcmNsZSxcbiAgLm1hdC1yYWRpby1yaXBwbGUgLm1hdC1yaXBwbGUtZWxlbWVudDpub3QoLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZSksXG4gICYubWF0LXJhZGlvLWNoZWNrZWQgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZSxcbiAgJjphY3RpdmUgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRwYWxldHRlKTtcbiAgfVxufVxuXG5AbWl4aW4gY29sb3IoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRwcmltYXJ5OiBtYXAuZ2V0KCRjb25maWcsIHByaW1hcnkpO1xuICAkYWNjZW50OiBtYXAuZ2V0KCRjb25maWcsIGFjY2VudCk7XG4gICR3YXJuOiBtYXAuZ2V0KCRjb25maWcsIHdhcm4pO1xuICAkYmFja2dyb3VuZDogbWFwLmdldCgkY29uZmlnLCBiYWNrZ3JvdW5kKTtcbiAgJGZvcmVncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgZm9yZWdyb3VuZCk7XG5cbiAgLm1hdC1yYWRpby1vdXRlci1jaXJjbGUge1xuICAgIGJvcmRlci1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBzZWNvbmRhcnktdGV4dCk7XG4gIH1cblxuICAubWF0LXJhZGlvLWJ1dHRvbiB7XG4gICAgJi5tYXQtcHJpbWFyeSB7XG4gICAgICBAaW5jbHVkZSBfY29sb3IoJHByaW1hcnkpO1xuICAgIH1cblxuICAgICYubWF0LWFjY2VudCB7XG4gICAgICBAaW5jbHVkZSBfY29sb3IoJGFjY2VudCk7XG4gICAgfVxuXG4gICAgJi5tYXQtd2FybiB7XG4gICAgICBAaW5jbHVkZSBfY29sb3IoJHdhcm4pO1xuICAgIH1cblxuICAgIC8vIFRoaXMgbmVlZHMgZXh0cmEgc3BlY2lmaWNpdHksIGJlY2F1c2UgdGhlIGNsYXNzZXMgYWJvdmUgYXJlIGNvbWJpbmVkXG4gICAgLy8gKGUuZy4gYC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1hY2NlbnRgKSB3aGljaCBpbmNyZWFzZXMgdGhlaXIgc3BlY2lmaWNpdHkgYSBsb3QuXG4gICAgLy8gVE9ETzogY29uc2lkZXIgbWFraW5nIHRoZSBzZWxlY3RvcnMgaW50byBkZXNjZW5kYW50cyAoYC5tYXQtcHJpbWFyeSAubWF0LXJhZGlvLWJ1dHRvbmApLlxuICAgICYubWF0LXJhZGlvLWRpc2FibGVkIHtcbiAgICAgICYubWF0LXJhZGlvLWNoZWNrZWQgLm1hdC1yYWRpby1vdXRlci1jaXJjbGUsXG4gICAgICAubWF0LXJhZGlvLW91dGVyLWNpcmNsZSB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBkaXNhYmxlZCk7XG4gICAgICB9XG5cbiAgICAgIC5tYXQtcmFkaW8tcmlwcGxlIC5tYXQtcmlwcGxlLWVsZW1lbnQsXG4gICAgICAubWF0LXJhZGlvLWlubmVyLWNpcmNsZSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgZGlzYWJsZWQpO1xuICAgICAgfVxuXG4gICAgICAubWF0LXJhZGlvLWxhYmVsLWNvbnRlbnQge1xuICAgICAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBkaXNhYmxlZCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gU3dpdGNoIHRoaXMgdG8gYSBzb2xpZCBjb2xvciBzaW5jZSB3ZSdyZSB1c2luZyBgb3BhY2l0eWBcbiAgICAvLyB0byBjb250cm9sIGhvdyBvcGFxdWUgdGhlIHJpcHBsZSBzaG91bGQgYmUuXG4gICAgLm1hdC1yaXBwbGUtZWxlbWVudCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtYXAuZ2V0KCRmb3JlZ3JvdW5kLCBiYXNlKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHR5cG9ncmFwaHkoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0eXBvZ3JhcGh5LnByaXZhdGUtdHlwb2dyYXBoeS10by0yMDE0LWNvbmZpZyhcbiAgICAgIHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCRjb25maWctb3ItdGhlbWUpKTtcbiAgLm1hdC1yYWRpby1idXR0b24ge1xuICAgIGZvbnQtZmFtaWx5OiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtZmFtaWx5KCRjb25maWcpO1xuICB9XG59XG5cbkBtaXhpbiBfZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZykge1xuICAkdGhlbWU6IHRoZW1pbmcucHJpdmF0ZS1sZWdhY3ktZ2V0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICBAaW5jbHVkZSB0aGVtaW5nLnByaXZhdGUtY2hlY2stZHVwbGljYXRlLXRoZW1lLXN0eWxlcygkdGhlbWUsICdtYXQtcmFkaW8nKSB7XG4gICAgJGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJHRoZW1lKTtcbiAgICAkZGVuc2l0eTogdGhlbWluZy5nZXQtZGVuc2l0eS1jb25maWcoJHRoZW1lKTtcbiAgICAkdHlwb2dyYXBoeTogdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJHRoZW1lKTtcblxuICAgIEBpZiAkY29sb3IgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBjb2xvcigkY29sb3IpO1xuICAgIH1cbiAgICBAaWYgJGRlbnNpdHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBfZGVuc2l0eSgkZGVuc2l0eSk7XG4gICAgfVxuICAgIEBpZiAkdHlwb2dyYXBoeSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIHR5cG9ncmFwaHkoJHR5cG9ncmFwaHkpO1xuICAgIH1cbiAgfVxufVxuIiwiQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnLi4vY29yZS90aGVtaW5nL3RoZW1pbmcnO1xuQHVzZSAnLi4vY29yZS9zdHlsZS9wcml2YXRlJztcbkB1c2UgJy4uL2NvcmUvc3R5bGUvZm9ybS1jb21tb24nO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHknO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHktdXRpbHMnO1xuXG5cbkBtaXhpbiBjb2xvcigkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJGZvcmVncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgZm9yZWdyb3VuZCk7XG4gICRiYWNrZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGJhY2tncm91bmQpO1xuICAkcHJpbWFyeTogbWFwLmdldCgkY29uZmlnLCBwcmltYXJ5KTtcbiAgJGFjY2VudDogbWFwLmdldCgkY29uZmlnLCBhY2NlbnQpO1xuICAkd2FybjogbWFwLmdldCgkY29uZmlnLCB3YXJuKTtcblxuICAubWF0LXNlbGVjdC12YWx1ZSB7XG4gICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgdGV4dCk7XG4gIH1cblxuICAubWF0LXNlbGVjdC1wbGFjZWhvbGRlciB7XG4gICAgY29sb3I6IGZvcm0tY29tbW9uLnByaXZhdGUtY29udHJvbC1wbGFjZWhvbGRlci1jb2xvcigkY29uZmlnKTtcbiAgfVxuXG4gIC5tYXQtc2VsZWN0LWRpc2FibGVkIC5tYXQtc2VsZWN0LXZhbHVlIHtcbiAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBkaXNhYmxlZC10ZXh0KTtcbiAgfVxuXG4gIC5tYXQtc2VsZWN0LWFycm93IHtcbiAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBzZWNvbmRhcnktdGV4dCk7XG4gIH1cblxuICAubWF0LXNlbGVjdC1wYW5lbCB7XG4gICAgYmFja2dyb3VuZDogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLCBjYXJkKTtcbiAgICBAaW5jbHVkZSBwcml2YXRlLnByaXZhdGUtdGhlbWUtb3ZlcnJpZGFibGUtZWxldmF0aW9uKDQsICRjb25maWcpO1xuXG4gICAgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkOm5vdCgubWF0LW9wdGlvbi1tdWx0aXBsZSkge1xuICAgICAgYmFja2dyb3VuZDogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLCBob3ZlciwgMC4xMik7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1mb3JtLWZpZWxkIHtcbiAgICAmLm1hdC1mb2N1c2VkIHtcbiAgICAgICYubWF0LXByaW1hcnkgLm1hdC1zZWxlY3QtYXJyb3cge1xuICAgICAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRwcmltYXJ5LCB0ZXh0KTtcbiAgICAgIH1cblxuICAgICAgJi5tYXQtYWNjZW50IC5tYXQtc2VsZWN0LWFycm93IHtcbiAgICAgICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYWNjZW50LCB0ZXh0KTtcbiAgICAgIH1cblxuICAgICAgJi5tYXQtd2FybiAubWF0LXNlbGVjdC1hcnJvdyB7XG4gICAgICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHdhcm4sIHRleHQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC5tYXQtc2VsZWN0Lm1hdC1zZWxlY3QtaW52YWxpZCAubWF0LXNlbGVjdC1hcnJvdyB7XG4gICAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCR3YXJuLCB0ZXh0KTtcbiAgICB9XG5cbiAgICAubWF0LXNlbGVjdC5tYXQtc2VsZWN0LWRpc2FibGVkIC5tYXQtc2VsZWN0LWFycm93IHtcbiAgICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIGRpc2FibGVkLXRleHQpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gdHlwb2dyYXBoeSgkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHR5cG9ncmFwaHkucHJpdmF0ZS10eXBvZ3JhcGh5LXRvLTIwMTQtY29uZmlnKFxuICAgICAgdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJGNvbmZpZy1vci10aGVtZSkpO1xuICAvLyBUaGUgdW5pdC1sZXNzIGxpbmUtaGVpZ2h0IGZyb20gdGhlIGZvbnQgY29uZmlnLlxuICAkbGluZS1oZWlnaHQ6IHR5cG9ncmFwaHktdXRpbHMubGluZS1oZWlnaHQoJGNvbmZpZywgaW5wdXQpO1xuXG4gIC5tYXQtc2VsZWN0IHtcbiAgICBmb250LWZhbWlseTogdHlwb2dyYXBoeS11dGlscy5mb250LWZhbWlseSgkY29uZmlnKTtcbiAgfVxuXG4gIC5tYXQtc2VsZWN0LXRyaWdnZXIge1xuICAgIGhlaWdodDogJGxpbmUtaGVpZ2h0ICogMWVtO1xuICB9XG59XG5cbkBtaXhpbiBfZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZykge1xuICAkdGhlbWU6IHRoZW1pbmcucHJpdmF0ZS1sZWdhY3ktZ2V0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICBAaW5jbHVkZSB0aGVtaW5nLnByaXZhdGUtY2hlY2stZHVwbGljYXRlLXRoZW1lLXN0eWxlcygkdGhlbWUsICdtYXQtc2VsZWN0Jykge1xuICAgICRjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgJGRlbnNpdHk6IHRoZW1pbmcuZ2V0LWRlbnNpdHktY29uZmlnKCR0aGVtZSk7XG4gICAgJHR5cG9ncmFwaHk6IHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCR0aGVtZSk7XG5cbiAgICBAaWYgJGNvbG9yICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgX2RlbnNpdHkoJGRlbnNpdHkpO1xuICAgIH1cbiAgICBAaWYgJHR5cG9ncmFwaHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5KCR0eXBvZ3JhcGh5KTtcbiAgICB9XG4gIH1cbn1cbiIsIkB1c2UgJ3Nhc3M6bWFwJztcbkB1c2UgJy4uL2NvcmUvc3R5bGUvcHJpdmF0ZSc7XG5AdXNlICcuLi9jb3JlL3RoZW1pbmcvcGFsZXR0ZSc7XG5AdXNlICcuLi9jb3JlL3RoZW1pbmcvdGhlbWluZyc7XG5AdXNlICcuLi9jb3JlL3R5cG9ncmFwaHkvdHlwb2dyYXBoeSc7XG5AdXNlICcuLi9jb3JlL3R5cG9ncmFwaHkvdHlwb2dyYXBoeS11dGlscyc7XG5cbkBtaXhpbiBfY2hlY2tlZC1jb2xvcigkcGFsZXR0ZSwgJHRodW1iLWNoZWNrZWQtaHVlKSB7XG4gICYubWF0LWNoZWNrZWQge1xuICAgIC5tYXQtc2xpZGUtdG9nZ2xlLXRodW1iIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkcGFsZXR0ZSwgJHRodW1iLWNoZWNrZWQtaHVlKTtcbiAgICB9XG5cbiAgICAubWF0LXNsaWRlLXRvZ2dsZS1iYXIge1xuICAgICAgLy8gT3BhY2l0eSBpcyBkZXRlcm1pbmVkIGZyb20gdGhlIHNwZWNzIGZvciB0aGUgc2VsZWN0aW9uIGNvbnRyb2xzLlxuICAgICAgLy8gU2VlOiBodHRwczovL21hdGVyaWFsLmlvL2Rlc2lnbi9jb21wb25lbnRzL3NlbGVjdGlvbi1jb250cm9scy5odG1sI3NwZWNzXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHBhbGV0dGUsICR0aHVtYi1jaGVja2VkLWh1ZSwgMC41NCk7XG4gICAgfVxuXG4gICAgLm1hdC1yaXBwbGUtZWxlbWVudCB7XG4gICAgICAvLyBTZXQgbm8gb3BhY2l0eSBmb3IgdGhlIHJpcHBsZXMgYmVjYXVzZSB0aGUgcmlwcGxlIG9wYWNpdHkgd2lsbCBiZSBhZGp1c3RlZCBkeW5hbWljYWxseVxuICAgICAgLy8gYmFzZWQgb24gdGhlIHR5cGUgb2YgaW50ZXJhY3Rpb24gd2l0aCB0aGUgc2xpZGUtdG9nZ2xlIChlLmcuIGZvciBob3ZlciwgZm9jdXMpXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHBhbGV0dGUsICR0aHVtYi1jaGVja2VkLWh1ZSk7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBjb2xvcigkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJGlzLWRhcms6IG1hcC5nZXQoJGNvbmZpZywgaXMtZGFyayk7XG4gICRwcmltYXJ5OiBtYXAuZ2V0KCRjb25maWcsIHByaW1hcnkpO1xuICAkYWNjZW50OiBtYXAuZ2V0KCRjb25maWcsIGFjY2VudCk7XG4gICR3YXJuOiBtYXAuZ2V0KCRjb25maWcsIHdhcm4pO1xuICAkYmFja2dyb3VuZDogbWFwLmdldCgkY29uZmlnLCBiYWNrZ3JvdW5kKTtcbiAgJGZvcmVncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgZm9yZWdyb3VuZCk7XG5cbiAgLy8gQ29sb3IgaHVlcyBhcmUgYmFzZWQgb24gdGhlIHNwZWNzIHdoaWNoIGJyaWVmbHkgc2hvdyB0aGUgaHVlcyB0aGF0IGFyZSBhcHBsaWVkIHRvIGEgc3dpdGNoLlxuICAvLyBUaGUgMjAxOCBzcGVjcyBubyBsb25nZXIgZGVzY3JpYmUgaG93IGRhcmsgc3dpdGNoZXMgc2hvdWxkIGxvb2sgbGlrZS4gRHVlIHRvIHRoZSBsYWNrIG9mXG4gIC8vIGluZm9ybWF0aW9uIGZvciBkYXJrIHRoZW1lZCBzd2l0Y2hlcywgd2UgcGFydGlhbGx5IGtlZXAgdGhlIG9sZCBiZWhhdmlvciB0aGF0IGlzIGJhc2VkIG9uXG4gIC8vIHRoZSBwcmV2aW91cyBzcGVjaWZpY2F0aW9ucy4gRm9yIHRoZSBjaGVja2VkIGNvbG9yIHdlIGFsd2F5cyB1c2UgdGhlIGBkZWZhdWx0YCBodWUgYmVjYXVzZVxuICAvLyB0aGF0IGZvbGxvd3MgTURDIGFuZCBhbHNvIG1ha2VzIGl0IGVhc2llciBmb3IgcGVvcGxlIHRvIGNyZWF0ZSBhIGN1c3RvbSB0aGVtZSB3aXRob3V0IG5lZWRpbmdcbiAgLy8gdG8gc3BlY2lmeSBlYWNoIGh1ZSBpbmRpdmlkdWFsbHkuXG4gICR0aHVtYi11bmNoZWNrZWQtaHVlOiBpZigkaXMtZGFyaywgNDAwLCA1MCk7XG4gICR0aHVtYi1jaGVja2VkLWh1ZTogZGVmYXVsdDtcblxuICAkYmFyLXVuY2hlY2tlZC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBkaXNhYmxlZCk7XG4gICRyaXBwbGUtdW5jaGVja2VkLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIGJhc2UpO1xuXG4gIC5tYXQtc2xpZGUtdG9nZ2xlIHtcbiAgICBAaW5jbHVkZSBfY2hlY2tlZC1jb2xvcigkYWNjZW50LCAkdGh1bWItY2hlY2tlZC1odWUpO1xuXG4gICAgJi5tYXQtcHJpbWFyeSB7XG4gICAgICBAaW5jbHVkZSBfY2hlY2tlZC1jb2xvcigkcHJpbWFyeSwgJHRodW1iLWNoZWNrZWQtaHVlKTtcbiAgICB9XG5cbiAgICAmLm1hdC13YXJuIHtcbiAgICAgIEBpbmNsdWRlIF9jaGVja2VkLWNvbG9yKCR3YXJuLCAkdGh1bWItY2hlY2tlZC1odWUpO1xuICAgIH1cblxuICAgICY6bm90KC5tYXQtY2hlY2tlZCkgLm1hdC1yaXBwbGUtZWxlbWVudCB7XG4gICAgICAvLyBTZXQgbm8gb3BhY2l0eSBmb3IgdGhlIHJpcHBsZXMgYmVjYXVzZSB0aGUgcmlwcGxlIG9wYWNpdHkgd2lsbCBiZSBhZGp1c3RlZCBkeW5hbWljYWxseVxuICAgICAgLy8gYmFzZWQgb24gdGhlIHR5cGUgb2YgaW50ZXJhY3Rpb24gd2l0aCB0aGUgc2xpZGUtdG9nZ2xlIChlLmcuIGZvciBob3ZlciwgZm9jdXMpXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkcmlwcGxlLXVuY2hlY2tlZC1jb2xvcjtcbiAgICB9XG4gIH1cblxuICAubWF0LXNsaWRlLXRvZ2dsZS10aHVtYiB7XG4gICAgQGluY2x1ZGUgcHJpdmF0ZS5wcml2YXRlLXRoZW1lLWVsZXZhdGlvbigxLCAkY29uZmlnKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUocGFsZXR0ZS4kZ3JleS1wYWxldHRlLCAkdGh1bWItdW5jaGVja2VkLWh1ZSk7XG4gIH1cblxuICAubWF0LXNsaWRlLXRvZ2dsZS1iYXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRiYXItdW5jaGVja2VkLWNvbG9yO1xuICB9XG59XG5cbkBtaXhpbiB0eXBvZ3JhcGh5KCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdHlwb2dyYXBoeS5wcml2YXRlLXR5cG9ncmFwaHktdG8tMjAxNC1jb25maWcoXG4gICAgICB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKSk7XG4gIC5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnQge1xuICAgIGZvbnQtZmFtaWx5OiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtZmFtaWx5KCRjb25maWcpO1xuICB9XG59XG5cbkBtaXhpbiBfZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZykge1xuICAkdGhlbWU6IHRoZW1pbmcucHJpdmF0ZS1sZWdhY3ktZ2V0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICBAaW5jbHVkZSB0aGVtaW5nLnByaXZhdGUtY2hlY2stZHVwbGljYXRlLXRoZW1lLXN0eWxlcygkdGhlbWUsICdtYXQtc2xpZGUtdG9nZ2xlJykge1xuICAgICRjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgJGRlbnNpdHk6IHRoZW1pbmcuZ2V0LWRlbnNpdHktY29uZmlnKCR0aGVtZSk7XG4gICAgJHR5cG9ncmFwaHk6IHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCR0aGVtZSk7XG5cbiAgICBAaWYgJGNvbG9yICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgX2RlbnNpdHkoJGRlbnNpdHkpO1xuICAgIH1cbiAgICBAaWYgJHR5cG9ncmFwaHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5KCR0eXBvZ3JhcGh5KTtcbiAgICB9XG4gIH1cbn1cblxuIiwiQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnc2FzczptZXRhJztcbkB1c2UgJy4uL2NvcmUvdGhlbWluZy90aGVtaW5nJztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5JztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5LXV0aWxzJztcblxuQG1peGluIF9pbm5lci1jb250ZW50LXRoZW1lKCRwYWxldHRlKSB7XG4gIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGwsXG4gIC5tYXQtc2xpZGVyLXRodW1iLFxuICAubWF0LXNsaWRlci10aHVtYi1sYWJlbCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRwYWxldHRlKTtcbiAgfVxuXG4gIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHQge1xuICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHBhbGV0dGUsIGRlZmF1bHQtY29udHJhc3QpO1xuICB9XG5cbiAgLm1hdC1zbGlkZXItZm9jdXMtcmluZyB7XG4gICAgJG9wYWNpdHk6IDAuMjtcbiAgICAkY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkcGFsZXR0ZSwgZGVmYXVsdCwgJG9wYWNpdHkpO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvcjtcblxuICAgIC8vIGBtYXQtY29sb3JgIHVzZXMgYHJnYmFgIGZvciB0aGUgb3BhY2l0eSB3aGljaCB3b24ndCB3b3JrIHdpdGhcbiAgICAvLyBDU1MgdmFyaWFibGVzIHNvIHdlIG5lZWQgdG8gdXNlIGBvcGFjaXR5YCBhcyBhIGZhbGxiYWNrLlxuICAgIEBpZiAobWV0YS50eXBlLW9mKCRjb2xvcikgIT0gY29sb3IpIHtcbiAgICAgIG9wYWNpdHk6ICRvcGFjaXR5O1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gY29sb3IoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRwcmltYXJ5OiBtYXAuZ2V0KCRjb25maWcsIHByaW1hcnkpO1xuICAkYWNjZW50OiBtYXAuZ2V0KCRjb25maWcsIGFjY2VudCk7XG4gICR3YXJuOiBtYXAuZ2V0KCRjb25maWcsIHdhcm4pO1xuICAkYmFja2dyb3VuZDogbWFwLmdldCgkY29uZmlnLCBiYWNrZ3JvdW5kKTtcbiAgJGZvcmVncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgZm9yZWdyb3VuZCk7XG5cbiAgJG1hdC1zbGlkZXItb2ZmLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIHNsaWRlci1vZmYpO1xuICAkbWF0LXNsaWRlci1vZmYtZm9jdXNlZC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBzbGlkZXItb2ZmLWFjdGl2ZSk7XG4gICRtYXQtc2xpZGVyLWRpc2FibGVkLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIHNsaWRlci1vZmYpO1xuICAkbWF0LXNsaWRlci1sYWJlbGVkLW1pbi12YWx1ZS10aHVtYi1jb2xvcjpcbiAgICB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIHNsaWRlci1taW4pO1xuICAkbWF0LXNsaWRlci1sYWJlbGVkLW1pbi12YWx1ZS10aHVtYi1sYWJlbC1jb2xvcjpcbiAgICB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIHNsaWRlci1vZmYpO1xuICAkbWF0LXNsaWRlci10aWNrLW9wYWNpdHk6IDAuNztcbiAgJG1hdC1zbGlkZXItdGljay1jb2xvcjpcbiAgICB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIGJhc2UsICRtYXQtc2xpZGVyLXRpY2stb3BhY2l0eSk7XG4gICRtYXQtc2xpZGVyLXRpY2stc2l6ZTogMnB4O1xuXG4gIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmQge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRtYXQtc2xpZGVyLW9mZi1jb2xvcjtcbiAgfVxuXG4gIC5tYXQtcHJpbWFyeSB7XG4gICAgQGluY2x1ZGUgX2lubmVyLWNvbnRlbnQtdGhlbWUoJHByaW1hcnkpO1xuICB9XG5cbiAgLm1hdC1hY2NlbnQge1xuICAgIEBpbmNsdWRlIF9pbm5lci1jb250ZW50LXRoZW1lKCRhY2NlbnQpO1xuICB9XG5cbiAgLm1hdC13YXJuIHtcbiAgICBAaW5jbHVkZSBfaW5uZXItY29udGVudC10aGVtZSgkd2Fybik7XG4gIH1cblxuICAubWF0LXNsaWRlcjpob3ZlcixcbiAgLmNkay1mb2N1c2VkIHtcbiAgICAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5kIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRtYXQtc2xpZGVyLW9mZi1mb2N1c2VkLWNvbG9yO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtc2xpZGVyLWRpc2FibGVkIHtcbiAgICAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5kLFxuICAgIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGwsXG4gICAgLm1hdC1zbGlkZXItdGh1bWIge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJG1hdC1zbGlkZXItZGlzYWJsZWQtY29sb3I7XG4gICAgfVxuXG4gICAgJjpob3ZlciB7XG4gICAgICAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5kIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJG1hdC1zbGlkZXItZGlzYWJsZWQtY29sb3I7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLm1hdC1zbGlkZXItbWluLXZhbHVlIHtcbiAgICAubWF0LXNsaWRlci1mb2N1cy1yaW5nIHtcbiAgICAgICRvcGFjaXR5OiAwLjEyO1xuICAgICAgJGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIGJhc2UsICRvcGFjaXR5KTtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvcjtcblxuICAgICAgLy8gYG1hdC1jb2xvcmAgdXNlcyBgcmdiYWAgZm9yIHRoZSBvcGFjaXR5IHdoaWNoIHdvbid0IHdvcmsgd2l0aFxuICAgICAgLy8gQ1NTIHZhcmlhYmxlcyBzbyB3ZSBuZWVkIHRvIHVzZSBgb3BhY2l0eWAgYXMgYSBmYWxsYmFjay5cbiAgICAgIEBpZiAobWV0YS50eXBlLW9mKCRjb2xvcikgIT0gY29sb3IpIHtcbiAgICAgICAgb3BhY2l0eTogJG9wYWNpdHk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJi5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcge1xuICAgICAgLm1hdC1zbGlkZXItdGh1bWIsXG4gICAgICAubWF0LXNsaWRlci10aHVtYi1sYWJlbCB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRtYXQtc2xpZGVyLWxhYmVsZWQtbWluLXZhbHVlLXRodW1iLWNvbG9yO1xuICAgICAgfVxuXG4gICAgICAmLmNkay1mb2N1c2VkIHtcbiAgICAgICAgLm1hdC1zbGlkZXItdGh1bWIsXG4gICAgICAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsIHtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkbWF0LXNsaWRlci1sYWJlbGVkLW1pbi12YWx1ZS10aHVtYi1sYWJlbC1jb2xvcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICY6bm90KC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcpIHtcbiAgICAgIC5tYXQtc2xpZGVyLXRodW1iIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAkbWF0LXNsaWRlci1vZmYtY29sb3I7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgfVxuXG4gICAgICAmOmhvdmVyLFxuICAgICAgJi5jZGstZm9jdXNlZCB7XG4gICAgICAgIC5tYXQtc2xpZGVyLXRodW1iIHtcbiAgICAgICAgICBib3JkZXItY29sb3I6ICRtYXQtc2xpZGVyLW9mZi1mb2N1c2VkLWNvbG9yO1xuICAgICAgICB9XG5cbiAgICAgICAgJi5tYXQtc2xpZGVyLWRpc2FibGVkIC5tYXQtc2xpZGVyLXRodW1iIHtcbiAgICAgICAgICBib3JkZXItY29sb3I6ICRtYXQtc2xpZGVyLWRpc2FibGVkLWNvbG9yO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLm1hdC1zbGlkZXItaGFzLXRpY2tzIC5tYXQtc2xpZGVyLXdyYXBwZXI6OmFmdGVyIHtcbiAgICBib3JkZXItY29sb3I6ICRtYXQtc2xpZGVyLXRpY2stY29sb3I7XG5cbiAgICAvLyBgbWF0LWNvbG9yYCB1c2VzIGByZ2JhYCBmb3IgdGhlIG9wYWNpdHkgd2hpY2ggd29uJ3Qgd29yayB3aXRoXG4gICAgLy8gQ1NTIHZhcmlhYmxlcyBzbyB3ZSBuZWVkIHRvIHVzZSBgb3BhY2l0eWAgYXMgYSBmYWxsYmFjay5cbiAgICBAaWYgKG1ldGEudHlwZS1vZigkbWF0LXNsaWRlci10aWNrLWNvbG9yKSAhPSBjb2xvcikge1xuICAgICAgb3BhY2l0eTogJG1hdC1zbGlkZXItdGljay1vcGFjaXR5O1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtc2xpZGVyLWhvcml6b250YWwgLm1hdC1zbGlkZXItdGlja3Mge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IHJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQodG8gcmlnaHQsICRtYXQtc2xpZGVyLXRpY2stY29sb3IsXG4gICAgICAgICRtYXQtc2xpZGVyLXRpY2stY29sb3IgJG1hdC1zbGlkZXItdGljay1zaXplLCB0cmFuc3BhcmVudCAwLCB0cmFuc3BhcmVudCk7XG4gICAgLy8gRmlyZWZveCBkb2Vzbid0IGRyYXcgdGhlIGdyYWRpZW50IGNvcnJlY3RseSB3aXRoICd0byByaWdodCdcbiAgICAvLyAoc2VlIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTEzMTQzMTkpLlxuICAgIGJhY2tncm91bmQtaW1hZ2U6IC1tb3otcmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCgwLjAwMDFkZWcsICRtYXQtc2xpZGVyLXRpY2stY29sb3IsXG4gICAgICAgICRtYXQtc2xpZGVyLXRpY2stY29sb3IgJG1hdC1zbGlkZXItdGljay1zaXplLCB0cmFuc3BhcmVudCAwLCB0cmFuc3BhcmVudCk7XG5cbiAgICAvLyBgbWF0LWNvbG9yYCB1c2VzIGByZ2JhYCBmb3IgdGhlIG9wYWNpdHkgd2hpY2ggd29uJ3Qgd29yayB3aXRoXG4gICAgLy8gQ1NTIHZhcmlhYmxlcyBzbyB3ZSBuZWVkIHRvIHVzZSBgb3BhY2l0eWAgYXMgYSBmYWxsYmFjay5cbiAgICBAaWYgKG1ldGEudHlwZS1vZigkbWF0LXNsaWRlci10aWNrLWNvbG9yKSAhPSBjb2xvcikge1xuICAgICAgb3BhY2l0eTogJG1hdC1zbGlkZXItdGljay1vcGFjaXR5O1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtc2xpZGVyLXZlcnRpY2FsIC5tYXQtc2xpZGVyLXRpY2tzIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiByZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgJG1hdC1zbGlkZXItdGljay1jb2xvcixcbiAgICAgICAgJG1hdC1zbGlkZXItdGljay1jb2xvciAkbWF0LXNsaWRlci10aWNrLXNpemUsIHRyYW5zcGFyZW50IDAsIHRyYW5zcGFyZW50KTtcblxuICAgIC8vIGBtYXQtY29sb3JgIHVzZXMgYHJnYmFgIGZvciB0aGUgb3BhY2l0eSB3aGljaCB3b24ndCB3b3JrIHdpdGhcbiAgICAvLyBDU1MgdmFyaWFibGVzIHNvIHdlIG5lZWQgdG8gdXNlIGBvcGFjaXR5YCBhcyBhIGZhbGxiYWNrLlxuICAgIEBpZiAobWV0YS50eXBlLW9mKCRtYXQtc2xpZGVyLXRpY2stY29sb3IpICE9IGNvbG9yKSB7XG4gICAgICBvcGFjaXR5OiAkbWF0LXNsaWRlci10aWNrLW9wYWNpdHk7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiB0eXBvZ3JhcGh5KCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdHlwb2dyYXBoeS5wcml2YXRlLXR5cG9ncmFwaHktdG8tMjAxNC1jb25maWcoXG4gICAgICB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKSk7XG4gIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHQge1xuICAgIGZvbnQ6IHtcbiAgICAgIGZhbWlseTogdHlwb2dyYXBoeS11dGlscy5mb250LWZhbWlseSgkY29uZmlnKTtcbiAgICAgIHNpemU6IHR5cG9ncmFwaHktdXRpbHMuZm9udC1zaXplKCRjb25maWcsIGNhcHRpb24pO1xuICAgICAgd2VpZ2h0OiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtd2VpZ2h0KCRjb25maWcsIGJvZHktMik7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBfZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZykge1xuICAkdGhlbWU6IHRoZW1pbmcucHJpdmF0ZS1sZWdhY3ktZ2V0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICBAaW5jbHVkZSB0aGVtaW5nLnByaXZhdGUtY2hlY2stZHVwbGljYXRlLXRoZW1lLXN0eWxlcygkdGhlbWUsICdtYXQtc2xpZGVyJykge1xuICAgICRjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgJGRlbnNpdHk6IHRoZW1pbmcuZ2V0LWRlbnNpdHktY29uZmlnKCR0aGVtZSk7XG4gICAgJHR5cG9ncmFwaHk6IHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCR0aGVtZSk7XG5cbiAgICBAaWYgJGNvbG9yICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgX2RlbnNpdHkoJGRlbnNpdHkpO1xuICAgIH1cbiAgICBAaWYgJHR5cG9ncmFwaHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5KCR0eXBvZ3JhcGh5KTtcbiAgICB9XG4gIH1cbn1cbiIsIkB1c2UgJ3Nhc3M6bWFwJztcbkB1c2UgJy4uL2NvcmUvdGhlbWluZy90aGVtaW5nJztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5JztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5LXV0aWxzJztcbkB1c2UgJy4uL2NvcmUvZGVuc2l0eS9wcml2YXRlL2NvbXBhdGliaWxpdHknO1xuQHVzZSAnLi9zdGVwcGVyLXZhcmlhYmxlcyc7XG5cbkBtaXhpbiBjb2xvcigkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJGZvcmVncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgZm9yZWdyb3VuZCk7XG4gICRiYWNrZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGJhY2tncm91bmQpO1xuICAkcHJpbWFyeTogbWFwLmdldCgkY29uZmlnLCBwcmltYXJ5KTtcbiAgJGFjY2VudDogbWFwLmdldCgkY29uZmlnLCBhY2NlbnQpO1xuICAkd2FybjogbWFwLmdldCgkY29uZmlnLCB3YXJuKTtcblxuICAubWF0LXN0ZXAtaGVhZGVyIHtcbiAgICAmLmNkay1rZXlib2FyZC1mb2N1c2VkLFxuICAgICYuY2RrLXByb2dyYW0tZm9jdXNlZCxcbiAgICAmOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYmFja2dyb3VuZCwgaG92ZXIpO1xuICAgIH1cblxuICAgIC8vIE9uIHRvdWNoIGRldmljZXMgdGhlIDpob3ZlciBzdGF0ZSB3aWxsIGxpbmdlciBvbiB0aGUgZWxlbWVudCBhZnRlciBhIHRhcC5cbiAgICAvLyBSZXNldCBpdCB2aWEgYEBtZWRpYWAgYWZ0ZXIgdGhlIGRlY2xhcmF0aW9uLCBiZWNhdXNlIHRoZSBtZWRpYSBxdWVyeSBpc24ndFxuICAgIC8vIHN1cHBvcnRlZCBieSBhbGwgYnJvd3NlcnMgeWV0LlxuICAgIEBtZWRpYSAoaG92ZXI6IG5vbmUpIHtcbiAgICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgICAgfVxuICAgIH1cblxuICAgIC5tYXQtc3RlcC1sYWJlbCxcbiAgICAubWF0LXN0ZXAtb3B0aW9uYWwge1xuICAgICAgLy8gVE9ETyhqb3NlcGhwZXJyb3R0KTogVXBkYXRlIHRvIHVzaW5nIGEgY29ycmVjdGVkIGRpc2FibGVkLXRleHQgY29udHJhc3RcbiAgICAgIC8vIGluc3RlYWQgb2Ygc2Vjb25kYXJ5LXRleHQuXG4gICAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBzZWNvbmRhcnktdGV4dCk7XG4gICAgfVxuXG4gICAgLm1hdC1zdGVwLWljb24ge1xuICAgICAgLy8gVE9ETyhqb3NlcGhwZXJyb3R0KTogVXBkYXRlIHRvIHVzaW5nIGEgY29ycmVjdGVkIGRpc2FibGVkLXRleHQgY29udHJhc3RcbiAgICAgIC8vIGluc3RlYWQgb2Ygc2Vjb25kYXJ5LXRleHQuXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIHNlY29uZGFyeS10ZXh0KTtcbiAgICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHByaW1hcnksIGRlZmF1bHQtY29udHJhc3QpO1xuICAgIH1cblxuICAgIC5tYXQtc3RlcC1pY29uLXNlbGVjdGVkLFxuICAgIC5tYXQtc3RlcC1pY29uLXN0YXRlLWRvbmUsXG4gICAgLm1hdC1zdGVwLWljb24tc3RhdGUtZWRpdCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHByaW1hcnkpO1xuICAgICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkcHJpbWFyeSwgZGVmYXVsdC1jb250cmFzdCk7XG4gICAgfVxuXG4gICAgJi5tYXQtYWNjZW50IHtcbiAgICAgIC5tYXQtc3RlcC1pY29uIHtcbiAgICAgICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYWNjZW50LCBkZWZhdWx0LWNvbnRyYXN0KTtcbiAgICAgIH1cblxuICAgICAgLm1hdC1zdGVwLWljb24tc2VsZWN0ZWQsXG4gICAgICAubWF0LXN0ZXAtaWNvbi1zdGF0ZS1kb25lLFxuICAgICAgLm1hdC1zdGVwLWljb24tc3RhdGUtZWRpdCB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYWNjZW50KTtcbiAgICAgICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYWNjZW50LCBkZWZhdWx0LWNvbnRyYXN0KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLm1hdC13YXJuIHtcbiAgICAgIC5tYXQtc3RlcC1pY29uIHtcbiAgICAgICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkd2FybiwgZGVmYXVsdC1jb250cmFzdCk7XG4gICAgICB9XG5cbiAgICAgIC5tYXQtc3RlcC1pY29uLXNlbGVjdGVkLFxuICAgICAgLm1hdC1zdGVwLWljb24tc3RhdGUtZG9uZSxcbiAgICAgIC5tYXQtc3RlcC1pY29uLXN0YXRlLWVkaXQge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHdhcm4pO1xuICAgICAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCR3YXJuLCBkZWZhdWx0LWNvbnRyYXN0KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAubWF0LXN0ZXAtaWNvbi1zdGF0ZS1lcnJvciB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHdhcm4sIHRleHQpO1xuICAgIH1cblxuICAgIC5tYXQtc3RlcC1sYWJlbC5tYXQtc3RlcC1sYWJlbC1hY3RpdmUge1xuICAgICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgdGV4dCk7XG4gICAgfVxuXG4gICAgLm1hdC1zdGVwLWxhYmVsLm1hdC1zdGVwLWxhYmVsLWVycm9yIHtcbiAgICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHdhcm4sIHRleHQpO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsLCAubWF0LXN0ZXBwZXItdmVydGljYWwge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYmFja2dyb3VuZCwgY2FyZCk7XG4gIH1cblxuICAubWF0LXN0ZXBwZXItdmVydGljYWwtbGluZTo6YmVmb3JlIHtcbiAgICBib3JkZXItbGVmdC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBkaXZpZGVyKTtcbiAgfVxuXG4gIC5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlcjo6YmVmb3JlLFxuICAubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXI6OmFmdGVyLFxuICAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbC1saW5lIHtcbiAgICBib3JkZXItdG9wLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIGRpdmlkZXIpO1xuICB9XG59XG5cbkBtaXhpbiB0eXBvZ3JhcGh5KCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdHlwb2dyYXBoeS5wcml2YXRlLXR5cG9ncmFwaHktdG8tMjAxNC1jb25maWcoXG4gICAgICB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKSk7XG4gIC5tYXQtc3RlcHBlci12ZXJ0aWNhbCwgLm1hdC1zdGVwcGVyLWhvcml6b250YWwge1xuICAgIGZvbnQtZmFtaWx5OiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtZmFtaWx5KCRjb25maWcpO1xuICB9XG5cbiAgLm1hdC1zdGVwLWxhYmVsIHtcbiAgICBmb250OiB7XG4gICAgICBzaXplOiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtc2l6ZSgkY29uZmlnLCBib2R5LTEpO1xuICAgICAgd2VpZ2h0OiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtd2VpZ2h0KCRjb25maWcsIGJvZHktMSk7XG4gICAgfTtcbiAgfVxuXG4gIC5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3Ige1xuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIH1cblxuICAubWF0LXN0ZXAtbGFiZWwtZXJyb3Ige1xuICAgIGZvbnQtc2l6ZTogdHlwb2dyYXBoeS11dGlscy5mb250LXNpemUoJGNvbmZpZywgYm9keS0yKTtcbiAgfVxuXG4gIC5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZCB7XG4gICAgZm9udDoge1xuICAgICAgc2l6ZTogdHlwb2dyYXBoeS11dGlscy5mb250LXNpemUoJGNvbmZpZywgYm9keS0yKTtcbiAgICAgIHdlaWdodDogdHlwb2dyYXBoeS11dGlscy5mb250LXdlaWdodCgkY29uZmlnLCBib2R5LTIpO1xuICAgIH07XG4gIH1cbn1cblxuQG1peGluIGRlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge1xuICAkZGVuc2l0eS1zY2FsZTogdGhlbWluZy5nZXQtZGVuc2l0eS1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRoZWlnaHQ6IGNvbXBhdGliaWxpdHkucHJpdmF0ZS1kZW5zaXR5LXByb3AtdmFsdWUoc3RlcHBlci12YXJpYWJsZXMuJGRlbnNpdHktY29uZmlnLFxuICAgICRkZW5zaXR5LXNjYWxlLCBoZWlnaHQpO1xuICAkdmVydGljYWwtcGFkZGluZzogKCRoZWlnaHQgLSBzdGVwcGVyLXZhcmlhYmxlcy4kbGFiZWwtaGVhZGVyLWhlaWdodCkgLyAyO1xuXG4gIEBpbmNsdWRlIGNvbXBhdGliaWxpdHkucHJpdmF0ZS1kZW5zaXR5LWxlZ2FjeS1jb21wYXRpYmlsaXR5KCkge1xuICAgIC5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlciB7XG4gICAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gICAgfVxuXG4gICAgLm1hdC1zdGVwcGVyLWxhYmVsLXBvc2l0aW9uLWJvdHRvbSAubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXIsXG4gICAgLm1hdC12ZXJ0aWNhbC1zdGVwcGVyLWhlYWRlciB7XG4gICAgICBwYWRkaW5nOiAkdmVydGljYWwtcGFkZGluZyBzdGVwcGVyLXZhcmlhYmxlcy4kc2lkZS1nYXA7XG4gICAgfVxuXG4gICAgLy8gRW5zdXJlcyB0aGF0IHRoZSB2ZXJ0aWNhbCBsaW5lcyBmb3IgdGhlIHN0ZXAgY29udGVudCBleGNlZWQgaW50byB0aGUgc3RlcFxuICAgIC8vIGhlYWRlcnMgd2l0aCBhIGdpdmVuIGRpc3RhbmNlIChgJG1hdC1zdGVwcGVyLWxpbmUtZ2FwYCkgdG8gdGhlIHN0ZXAgaWNvbi5cbiAgICAubWF0LXN0ZXBwZXItdmVydGljYWwtbGluZTo6YmVmb3JlIHtcbiAgICAgIHRvcDogc3RlcHBlci12YXJpYWJsZXMuJGxpbmUtZ2FwIC0gJHZlcnRpY2FsLXBhZGRpbmc7XG4gICAgICBib3R0b206IHN0ZXBwZXItdmFyaWFibGVzLiRsaW5lLWdhcCAtICR2ZXJ0aWNhbC1wYWRkaW5nO1xuICAgIH1cblxuICAgIC8vIEVuc3VyZXMgdGhhdCB0aGUgaG9yaXpvbnRhbCBsaW5lcyBmb3IgdGhlIHN0ZXAgaGVhZGVyIGFyZSBjZW50ZXJlZCB2ZXJ0aWNhbGx5LlxuICAgIC5tYXQtc3RlcHBlci1sYWJlbC1wb3NpdGlvbi1ib3R0b20gLm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVyIHtcbiAgICAgICY6OmFmdGVyLCAmOjpiZWZvcmUge1xuICAgICAgICB0b3A6ICR2ZXJ0aWNhbC1wYWRkaW5nICsgc3RlcHBlci12YXJpYWJsZXMuJGxhYmVsLWhlYWRlci1oZWlnaHQgLyAyO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEVuc3VyZXMgdGhhdCB0aGUgaG9yaXpvbnRhbCBsaW5lIGZvciB0aGUgc3RlcCBjb250ZW50IGlzIGFsaWduZWQgY2VudGVyZWQgdmVydGljYWxseS5cbiAgICAubWF0LXN0ZXBwZXItbGFiZWwtcG9zaXRpb24tYm90dG9tIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsLWxpbmUge1xuICAgICAgdG9wOiAkdmVydGljYWwtcGFkZGluZyArIHN0ZXBwZXItdmFyaWFibGVzLiRsYWJlbC1oZWFkZXItaGVpZ2h0IC8gMjtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiB0aGVtaW5nLnByaXZhdGUtbGVnYWN5LWdldC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgQGluY2x1ZGUgdGhlbWluZy5wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LXN0ZXBwZXInKSB7XG4gICAgJGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJHRoZW1lKTtcbiAgICAkZGVuc2l0eTogdGhlbWluZy5nZXQtZGVuc2l0eS1jb25maWcoJHRoZW1lKTtcbiAgICAkdHlwb2dyYXBoeTogdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJHRoZW1lKTtcblxuICAgIEBpZiAkY29sb3IgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBjb2xvcigkY29sb3IpO1xuICAgIH1cbiAgICBAaWYgJGRlbnNpdHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBkZW5zaXR5KCRkZW5zaXR5KTtcbiAgICB9XG4gICAgQGlmICR0eXBvZ3JhcGh5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgdHlwb2dyYXBoeSgkdHlwb2dyYXBoeSk7XG4gICAgfVxuICB9XG59XG4iLCJAdXNlICdzYXNzOm1hcCc7XG5AdXNlICcuLi9jb3JlL3RoZW1pbmcvdGhlbWluZyc7XG5AdXNlICcuLi9jb3JlL3R5cG9ncmFwaHkvdHlwb2dyYXBoeSc7XG5AdXNlICcuLi9jb3JlL3R5cG9ncmFwaHkvdHlwb2dyYXBoeS11dGlscyc7XG5cbkBtaXhpbiBjb2xvcigkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJHByaW1hcnk6IG1hcC5nZXQoJGNvbmZpZywgcHJpbWFyeSk7XG4gICRhY2NlbnQ6IG1hcC5nZXQoJGNvbmZpZywgYWNjZW50KTtcbiAgJHdhcm46IG1hcC5nZXQoJGNvbmZpZywgd2Fybik7XG4gICRiYWNrZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGJhY2tncm91bmQpO1xuICAkZm9yZWdyb3VuZDogbWFwLmdldCgkY29uZmlnLCBmb3JlZ3JvdW5kKTtcbiAgJGhlYWRlci1ib3JkZXI6IDFweCBzb2xpZCB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIGRpdmlkZXIpO1xuXG4gIC5tYXQtdGFiLW5hdi1iYXIsXG4gIC5tYXQtdGFiLWhlYWRlciB7XG4gICAgYm9yZGVyLWJvdHRvbTogJGhlYWRlci1ib3JkZXI7XG4gIH1cblxuICAubWF0LXRhYi1ncm91cC1pbnZlcnRlZC1oZWFkZXIge1xuICAgIC5tYXQtdGFiLW5hdi1iYXIsXG4gICAgLm1hdC10YWItaGVhZGVyIHtcbiAgICAgIGJvcmRlci10b3A6ICRoZWFkZXItYm9yZGVyO1xuICAgICAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbiAgICB9XG4gIH1cblxuICAubWF0LXRhYi1sYWJlbCwgLm1hdC10YWItbGluayB7XG4gICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgdGV4dCk7XG5cbiAgICAmLm1hdC10YWItZGlzYWJsZWQge1xuICAgICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgZGlzYWJsZWQtdGV4dCk7XG4gICAgfVxuICB9XG5cbiAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbiB7XG4gICAgYm9yZGVyLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIHRleHQpO1xuICB9XG5cbiAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWQgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbiB7XG4gICAgYm9yZGVyLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIGRpc2FibGVkLXRleHQpO1xuICB9XG5cbiAgLy8gUmVtb3ZlIGhlYWRlciBib3JkZXIgd2hlbiB0aGVyZSBpcyBhIGJhY2tncm91bmQgY29sb3JcbiAgLm1hdC10YWItZ3JvdXBbY2xhc3MqPSdtYXQtYmFja2dyb3VuZC0nXSAubWF0LXRhYi1oZWFkZXIsXG4gIC5tYXQtdGFiLW5hdi1iYXJbY2xhc3MqPSdtYXQtYmFja2dyb3VuZC0nXSB7XG4gICAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbiAgICBib3JkZXItdG9wOiBub25lO1xuICB9XG5cbiAgLm1hdC10YWItZ3JvdXAsIC5tYXQtdGFiLW5hdi1iYXIge1xuICAgICR0aGVtZS1jb2xvcnM6IChcbiAgICAgIHByaW1hcnk6ICRwcmltYXJ5LFxuICAgICAgYWNjZW50OiAkYWNjZW50LFxuICAgICAgd2FybjogJHdhcm5cbiAgICApO1xuXG4gICAgQGVhY2ggJG5hbWUsICRjb2xvciBpbiAkdGhlbWUtY29sb3JzIHtcbiAgICAgIC8vIFNldCB0aGUgZm9yZWdyb3VuZCBjb2xvciBvZiB0aGUgdGFic1xuICAgICAgJi5tYXQtI3skbmFtZX0ge1xuICAgICAgICBAaW5jbHVkZSBfbGFiZWwtZm9jdXMtY29sb3IoJGNvbG9yKTtcbiAgICAgICAgQGluY2x1ZGUgX2luay1iYXItY29sb3IoJGNvbG9yKTtcblxuICAgICAgICAvLyBPdmVycmlkZSBpbmsgYmFyIHdoZW4gYmFja2dyb3VuZCBjb2xvciBpcyB0aGUgc2FtZVxuICAgICAgICAmLm1hdC1iYWNrZ3JvdW5kLSN7JG5hbWV9IHtcbiAgICAgICAgICA+IC5tYXQtdGFiLWhlYWRlciwgPiAubWF0LXRhYi1saW5rLWNvbnRhaW5lciB7XG4gICAgICAgICAgICBAaW5jbHVkZSBfaW5rLWJhci1jb2xvcigkY29sb3IsIGRlZmF1bHQtY29udHJhc3QpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIEBlYWNoICRuYW1lLCAkY29sb3IgaW4gJHRoZW1lLWNvbG9ycyB7XG4gICAgICAvLyBTZXQgYmFja2dyb3VuZCBjb2xvciBvZiB0aGUgdGFicyBhbmQgb3ZlcnJpZGUgZm9jdXMgY29sb3JcbiAgICAgICYubWF0LWJhY2tncm91bmQtI3skbmFtZX0ge1xuICAgICAgICBAaW5jbHVkZSBfbGFiZWwtZm9jdXMtY29sb3IoJGNvbG9yKTtcbiAgICAgICAgQGluY2x1ZGUgX3RhYnMtYmFja2dyb3VuZCgkY29sb3IpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gX2luay1iYXItY29sb3IoJGNvbG9yLCAkaHVlOiBkZWZhdWx0KSB7XG4gIC5tYXQtaW5rLWJhciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRjb2xvciwgJGh1ZSk7XG4gIH1cbn1cblxuQG1peGluIF9sYWJlbC1mb2N1cy1jb2xvcigkdGFiLWZvY3VzLWNvbG9yKSB7XG4gIC5tYXQtdGFiLWxhYmVsLFxuICAubWF0LXRhYi1saW5rIHtcbiAgICAmLmNkay1rZXlib2FyZC1mb2N1c2VkLFxuICAgICYuY2RrLXByb2dyYW0tZm9jdXNlZCB7XG4gICAgICAmOm5vdCgubWF0LXRhYi1kaXNhYmxlZCkge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHRhYi1mb2N1cy1jb2xvciwgbGlnaHRlciwgMC4zKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuQG1peGluIF90YWJzLWJhY2tncm91bmQoJGJhY2tncm91bmQtY29sb3IpIHtcbiAgLy8gTm90ZSB0aGF0IHRoZXNlIHNlbGVjdG9ycyB0YXJnZXQgZGlyZWN0IGRlc2NlbmRhbnRzIHNvXG4gIC8vIHRoYXQgdGhlIHN0eWxlcyBkb24ndCBhcHBseSB0byBhbnkgbmVzdGVkIHRhYiBncm91cHMuXG5cbiAgLy8gU2V0IGJhY2tncm91bmQgY29sb3IgZm9yIHRoZSB0YWIgZ3JvdXBcbiAgPiAubWF0LXRhYi1oZWFkZXIsID4gLm1hdC10YWItbGluay1jb250YWluZXIsID4gLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24ge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYmFja2dyb3VuZC1jb2xvcik7XG4gIH1cblxuICAvLyBTZXQgbGFiZWxzIHRvIGNvbnRyYXN0IGFnYWluc3QgYmFja2dyb3VuZFxuICA+IC5tYXQtdGFiLWhlYWRlciAubWF0LXRhYi1sYWJlbCwgPiAubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LXRhYi1saW5rIHtcbiAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLWNvbG9yLCBkZWZhdWx0LWNvbnRyYXN0KTtcblxuICAgICYubWF0LXRhYi1kaXNhYmxlZCB7XG4gICAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLWNvbG9yLCBkZWZhdWx0LWNvbnRyYXN0LCAwLjQpO1xuICAgIH1cbiAgfVxuXG4gIC8vIFNldCBwYWdpbmF0aW9uIGNoZXZyb25zIHRvIGNvbnRyYXN0IGJhY2tncm91bmRcbiAgPiAubWF0LXRhYi1oZWFkZXIgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbixcbiAgPiAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbiAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uLFxuICA+IC5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtZm9jdXMtaW5kaWNhdG9yOjpiZWZvcmUsXG4gID4gLm1hdC10YWItaGVhZGVyIC5tYXQtZm9jdXMtaW5kaWNhdG9yOjpiZWZvcmUge1xuICAgIGJvcmRlci1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLWNvbG9yLCBkZWZhdWx0LWNvbnRyYXN0KTtcbiAgfVxuXG4gID4gLm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sXG4gID4gLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWQgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbiB7XG4gICAgYm9yZGVyLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGJhY2tncm91bmQtY29sb3IsIGRlZmF1bHQtY29udHJhc3QsIDAuNCk7XG4gIH1cblxuICAvLyBTZXQgcmlwcGxlcyBjb2xvciB0byBiZSB0aGUgY29udHJhc3QgY29sb3Igb2YgdGhlIG5ldyBiYWNrZ3JvdW5kLiBPdGhlcndpc2UgdGhlIHJpcHBsZVxuICAvLyBjb2xvciB3aWxsIGJlIGJhc2VkIG9uIHRoZSBhcHAgYmFja2dyb3VuZCBjb2xvci5cbiAgPiAubWF0LXRhYi1oZWFkZXIgLm1hdC1yaXBwbGUtZWxlbWVudCxcbiAgPiAubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LXJpcHBsZS1lbGVtZW50LFxuICA+IC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uIC5tYXQtcmlwcGxlLWVsZW1lbnQge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYmFja2dyb3VuZC1jb2xvciwgZGVmYXVsdC1jb250cmFzdCwgMC4xMik7XG4gIH1cbn1cblxuQG1peGluIHR5cG9ncmFwaHkoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0eXBvZ3JhcGh5LnByaXZhdGUtdHlwb2dyYXBoeS10by0yMDE0LWNvbmZpZyhcbiAgICAgIHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCRjb25maWctb3ItdGhlbWUpKTtcbiAgLm1hdC10YWItZ3JvdXAge1xuICAgIGZvbnQtZmFtaWx5OiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtZmFtaWx5KCRjb25maWcpO1xuICB9XG5cbiAgLm1hdC10YWItbGFiZWwsIC5tYXQtdGFiLWxpbmsge1xuICAgIGZvbnQ6IHtcbiAgICAgIGZhbWlseTogdHlwb2dyYXBoeS11dGlscy5mb250LWZhbWlseSgkY29uZmlnLCBidXR0b24pO1xuICAgICAgc2l6ZTogdHlwb2dyYXBoeS11dGlscy5mb250LXNpemUoJGNvbmZpZywgYnV0dG9uKTtcbiAgICAgIHdlaWdodDogdHlwb2dyYXBoeS11dGlscy5mb250LXdlaWdodCgkY29uZmlnLCBidXR0b24pO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gX2RlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIHRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiB0aGVtaW5nLnByaXZhdGUtbGVnYWN5LWdldC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgQGluY2x1ZGUgdGhlbWluZy5wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LXRhYnMnKSB7XG4gICAgJGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJHRoZW1lKTtcbiAgICAkZGVuc2l0eTogdGhlbWluZy5nZXQtZGVuc2l0eS1jb25maWcoJHRoZW1lKTtcbiAgICAkdHlwb2dyYXBoeTogdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJHRoZW1lKTtcblxuICAgIEBpZiAkY29sb3IgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBjb2xvcigkY29sb3IpO1xuICAgIH1cbiAgICBAaWYgJGRlbnNpdHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBfZGVuc2l0eSgkZGVuc2l0eSk7XG4gICAgfVxuICAgIEBpZiAkdHlwb2dyYXBoeSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIHR5cG9ncmFwaHkoJHR5cG9ncmFwaHkpO1xuICAgIH1cbiAgfVxufVxuIiwiQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnLi4vY29yZS9kZW5zaXR5L3ByaXZhdGUvY29tcGF0aWJpbGl0eSc7XG5AdXNlICcuLi9jb3JlL3N0eWxlL3ZhcmlhYmxlcyc7XG5AdXNlICcuLi9jb3JlL3RoZW1pbmcvdGhlbWluZyc7XG5AdXNlICcuLi9jb3JlL3R5cG9ncmFwaHkvdHlwb2dyYXBoeSc7XG5AdXNlICcuLi9jb3JlL3R5cG9ncmFwaHkvdHlwb2dyYXBoeS11dGlscyc7XG5AdXNlICcuL3Rvb2xiYXItdmFyaWFibGVzJztcblxuQG1peGluIF9oZWlnaHQoJGhlaWdodCkge1xuICAubWF0LXRvb2xiYXItbXVsdGlwbGUtcm93cyB7XG4gICAgbWluLWhlaWdodDogJGhlaWdodDtcbiAgfVxuICAubWF0LXRvb2xiYXItcm93LCAubWF0LXRvb2xiYXItc2luZ2xlLXJvdyB7XG4gICAgaGVpZ2h0OiAkaGVpZ2h0O1xuICB9XG59XG5cbkBtaXhpbiBfcGFsZXR0ZS1zdHlsZXMoJHBhbGV0dGUpIHtcbiAgYmFja2dyb3VuZDogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRwYWxldHRlKTtcbiAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkcGFsZXR0ZSwgZGVmYXVsdC1jb250cmFzdCk7XG59XG5cbkBtaXhpbiBfZm9ybS1maWVsZC1vdmVycmlkZXMge1xuICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lLFxuICAubWF0LWZvcm0tZmllbGQtcmlwcGxlLFxuICAubWF0LWZvY3VzZWQgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogY3VycmVudENvbG9yO1xuICB9XG5cbiAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLFxuICAubWF0LWZvY3VzZWQgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLFxuICAubWF0LXNlbGVjdC12YWx1ZSxcbiAgLm1hdC1zZWxlY3QtYXJyb3csXG4gIC5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZCAubWF0LXNlbGVjdC1hcnJvdyB7XG4gICAgY29sb3I6IGluaGVyaXQ7XG4gIH1cblxuICAubWF0LWlucHV0LWVsZW1lbnQge1xuICAgIGNhcmV0LWNvbG9yOiBjdXJyZW50Q29sb3I7XG4gIH1cbn1cblxuQG1peGluIGNvbG9yKCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAkcHJpbWFyeTogbWFwLmdldCgkY29uZmlnLCBwcmltYXJ5KTtcbiAgJGFjY2VudDogbWFwLmdldCgkY29uZmlnLCBhY2NlbnQpO1xuICAkd2FybjogbWFwLmdldCgkY29uZmlnLCB3YXJuKTtcbiAgJGJhY2tncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgYmFja2dyb3VuZCk7XG4gICRmb3JlZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGZvcmVncm91bmQpO1xuXG4gIC5tYXQtdG9vbGJhciB7XG4gICAgYmFja2dyb3VuZDogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLCBhcHAtYmFyKTtcbiAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCB0ZXh0KTtcblxuICAgICYubWF0LXByaW1hcnkge1xuICAgICAgQGluY2x1ZGUgX3BhbGV0dGUtc3R5bGVzKCRwcmltYXJ5KTtcbiAgICB9XG5cbiAgICAmLm1hdC1hY2NlbnQge1xuICAgICAgQGluY2x1ZGUgX3BhbGV0dGUtc3R5bGVzKCRhY2NlbnQpO1xuICAgIH1cblxuICAgICYubWF0LXdhcm4ge1xuICAgICAgQGluY2x1ZGUgX3BhbGV0dGUtc3R5bGVzKCR3YXJuKTtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBfZm9ybS1maWVsZC1vdmVycmlkZXM7XG4gIH1cbn1cblxuQG1peGluIHR5cG9ncmFwaHkoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0eXBvZ3JhcGh5LnByaXZhdGUtdHlwb2dyYXBoeS10by0yMDE0LWNvbmZpZyhcbiAgICAgIHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCRjb25maWctb3ItdGhlbWUpKTtcbiAgLm1hdC10b29sYmFyLFxuICAubWF0LXRvb2xiYXIgaDEsXG4gIC5tYXQtdG9vbGJhciBoMixcbiAgLm1hdC10b29sYmFyIGgzLFxuICAubWF0LXRvb2xiYXIgaDQsXG4gIC5tYXQtdG9vbGJhciBoNSxcbiAgLm1hdC10b29sYmFyIGg2IHtcbiAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5LXV0aWxzLnR5cG9ncmFwaHktbGV2ZWwoJGNvbmZpZywgdGl0bGUpO1xuICAgIG1hcmdpbjogMDtcbiAgfVxufVxuXG5AbWl4aW4gZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRkZW5zaXR5LXNjYWxlOiB0aGVtaW5nLmdldC1kZW5zaXR5LWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJGhlaWdodC1kZXNrdG9wOiBjb21wYXRpYmlsaXR5LnByaXZhdGUtZGVuc2l0eS1wcm9wLXZhbHVlKFxuICAgICAgdG9vbGJhci12YXJpYWJsZXMuJGRlc2t0b3AtZGVuc2l0eS1jb25maWcsICRkZW5zaXR5LXNjYWxlLCBoZWlnaHQpO1xuICAkaGVpZ2h0LW1vYmlsZTogY29tcGF0aWJpbGl0eS5wcml2YXRlLWRlbnNpdHktcHJvcC12YWx1ZShcbiAgICAgIHRvb2xiYXItdmFyaWFibGVzLiRtb2JpbGUtZGVuc2l0eS1jb25maWcsICRkZW5zaXR5LXNjYWxlLCBoZWlnaHQpO1xuXG4gIEBpbmNsdWRlIGNvbXBhdGliaWxpdHkucHJpdmF0ZS1kZW5zaXR5LWxlZ2FjeS1jb21wYXRpYmlsaXR5KCkge1xuICAgIC8vIFNldCB0aGUgZGVmYXVsdCBoZWlnaHQgZm9yIHRoZSB0b29sYmFyLlxuICAgIEBpbmNsdWRlIF9oZWlnaHQoJGhlaWdodC1kZXNrdG9wKTtcblxuICAgIC8vIEFzIHBlciBzcGVjcywgdG9vbGJhcnMgc2hvdWxkIGhhdmUgYSBkaWZmZXJlbnQgaGVpZ2h0IGluIG1vYmlsZSBkZXZpY2VzLiBUaGlzIGhhcyBiZWVuXG4gICAgLy8gc3BlY2lmaWVkIGluIHRoZSBvbGQgZ3VpZGVsaW5lcyBhbmQgaXMgc3RpbGwgb2JzZXJ2YWJsZSBpbiB0aGUgbmV3IHNwZWNpZmljYXRpb25zIGJ5XG4gICAgLy8gbG9va2luZyBhdCB0aGUgc3BlYyBpbWFnZXMuIFNlZTogaHR0cHM6Ly9tYXRlcmlhbC5pby9kZXNpZ24vY29tcG9uZW50cy9hcHAtYmFycy10b3AuaHRtbCNhbmF0b215XG4gICAgQG1lZGlhICh2YXJpYWJsZXMuJHhzbWFsbCkge1xuICAgICAgQGluY2x1ZGUgX2hlaWdodCgkaGVpZ2h0LW1vYmlsZSk7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiB0aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKSB7XG4gICR0aGVtZTogdGhlbWluZy5wcml2YXRlLWxlZ2FjeS1nZXQtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZyk7XG4gIEBpbmNsdWRlIHRoZW1pbmcucHJpdmF0ZS1jaGVjay1kdXBsaWNhdGUtdGhlbWUtc3R5bGVzKCR0aGVtZSwgJ21hdC10b29sYmFyJykge1xuICAgICRjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgJGRlbnNpdHk6IHRoZW1pbmcuZ2V0LWRlbnNpdHktY29uZmlnKCR0aGVtZSk7XG4gICAgJHR5cG9ncmFwaHk6IHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCR0aGVtZSk7XG5cbiAgICBAaWYgJGNvbG9yICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgZGVuc2l0eSgkZGVuc2l0eSk7XG4gICAgfVxuICAgIEBpZiAkdHlwb2dyYXBoeSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIHR5cG9ncmFwaHkoJHR5cG9ncmFwaHkpO1xuICAgIH1cbiAgfVxufVxuIiwiQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnLi4vY29yZS90aGVtaW5nL3RoZW1pbmcnO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHknO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHktdXRpbHMnO1xuXG4kdGFyZ2V0LWhlaWdodDogMjJweDtcbiRmb250LXNpemU6IDEwcHg7XG4kdmVydGljYWwtcGFkZGluZzogKCR0YXJnZXQtaGVpZ2h0IC0gJGZvbnQtc2l6ZSkgLyAyO1xuXG4kaGFuZHNldC10YXJnZXQtaGVpZ2h0OiAzMHB4O1xuJGhhbmRzZXQtZm9udC1zaXplOiAxNHB4O1xuJGhhbmRzZXQtdmVydGljYWwtcGFkZGluZzpcbiAgICAoJGhhbmRzZXQtdGFyZ2V0LWhlaWdodCAtICRoYW5kc2V0LWZvbnQtc2l6ZSkgLyAyO1xuXG5AbWl4aW4gY29sb3IoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRiYWNrZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGJhY2tncm91bmQpO1xuXG4gIC5tYXQtdG9vbHRpcCB7XG4gICAgYmFja2dyb3VuZDogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLCB0b29sdGlwLCAwLjkpO1xuICB9XG59XG5cbkBtaXhpbiB0eXBvZ3JhcGh5KCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdHlwb2dyYXBoeS5wcml2YXRlLXR5cG9ncmFwaHktdG8tMjAxNC1jb25maWcoXG4gICAgICB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKSk7XG4gIC5tYXQtdG9vbHRpcCB7XG4gICAgZm9udC1mYW1pbHk6IHR5cG9ncmFwaHktdXRpbHMuZm9udC1mYW1pbHkoJGNvbmZpZyk7XG4gICAgZm9udC1zaXplOiAkZm9udC1zaXplO1xuICAgIHBhZGRpbmctdG9wOiAkdmVydGljYWwtcGFkZGluZztcbiAgICBwYWRkaW5nLWJvdHRvbTogJHZlcnRpY2FsLXBhZGRpbmc7XG4gIH1cblxuICAubWF0LXRvb2x0aXAtaGFuZHNldCB7XG4gICAgZm9udC1zaXplOiAkaGFuZHNldC1mb250LXNpemU7XG4gICAgcGFkZGluZy10b3A6ICRoYW5kc2V0LXZlcnRpY2FsLXBhZGRpbmc7XG4gICAgcGFkZGluZy1ib3R0b206ICRoYW5kc2V0LXZlcnRpY2FsLXBhZGRpbmc7XG4gIH1cbn1cblxuQG1peGluIF9kZW5zaXR5KCRjb25maWctb3ItdGhlbWUpIHt9XG5cbkBtaXhpbiB0aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKSB7XG4gICR0aGVtZTogdGhlbWluZy5wcml2YXRlLWxlZ2FjeS1nZXQtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZyk7XG4gIEBpbmNsdWRlIHRoZW1pbmcucHJpdmF0ZS1jaGVjay1kdXBsaWNhdGUtdGhlbWUtc3R5bGVzKCR0aGVtZSwgJ21hdC10b29sdGlwJykge1xuICAgICRjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgJGRlbnNpdHk6IHRoZW1pbmcuZ2V0LWRlbnNpdHktY29uZmlnKCR0aGVtZSk7XG4gICAgJHR5cG9ncmFwaHk6IHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCR0aGVtZSk7XG5cbiAgICBAaWYgJGNvbG9yICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgX2RlbnNpdHkoJGRlbnNpdHkpO1xuICAgIH1cbiAgICBAaWYgJHR5cG9ncmFwaHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5KCR0eXBvZ3JhcGh5KTtcbiAgICB9XG4gIH1cbn1cblxuIiwiQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnLi4vY29yZS90aGVtaW5nL3RoZW1pbmcnO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHknO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHktdXRpbHMnO1xuQHVzZSAnLi4vY29yZS9zdHlsZS9saXN0LWNvbW1vbic7XG5cblxuQG1peGluIGNvbG9yKCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAkYmFja2dyb3VuZDogbWFwLmdldCgkY29uZmlnLCBiYWNrZ3JvdW5kKTtcbiAgJGZvcmVncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgZm9yZWdyb3VuZCk7XG5cbiAgLm1hdC1saXN0LWJhc2Uge1xuICAgIC5tYXQtbGlzdC1pdGVtIHtcbiAgICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIHRleHQpO1xuICAgIH1cblxuICAgIC5tYXQtbGlzdC1vcHRpb24ge1xuICAgICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgdGV4dCk7XG4gICAgfVxuXG4gICAgLm1hdC1zdWJoZWFkZXIge1xuICAgICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgc2Vjb25kYXJ5LXRleHQpO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtbGlzdC1pdGVtLWRpc2FibGVkIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGJhY2tncm91bmQsIGRpc2FibGVkLWxpc3Qtb3B0aW9uKTtcbiAgfVxuXG4gIC5tYXQtbGlzdC1vcHRpb24sXG4gIC5tYXQtbmF2LWxpc3QgLm1hdC1saXN0LWl0ZW0sXG4gIC5tYXQtYWN0aW9uLWxpc3QgLm1hdC1saXN0LWl0ZW0ge1xuICAgICY6aG92ZXIsICY6Zm9jdXMge1xuICAgICAgYmFja2dyb3VuZDogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLCAnaG92ZXInKTtcbiAgICB9XG4gIH1cblxuICAubWF0LWxpc3Qtc2luZ2xlLXNlbGVjdGVkLW9wdGlvbiB7XG4gICAgJiwgJjpob3ZlciwgJjpmb2N1cyB7XG4gICAgICBiYWNrZ3JvdW5kOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGJhY2tncm91bmQsIGhvdmVyLCAwLjEyKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHR5cG9ncmFwaHkoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0eXBvZ3JhcGh5LnByaXZhdGUtdHlwb2dyYXBoeS10by0yMDE0LWNvbmZpZyhcbiAgICAgIHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCRjb25maWctb3ItdGhlbWUpKTtcbiAgJGZvbnQtZmFtaWx5OiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtZmFtaWx5KCRjb25maWcpO1xuXG4gIC5tYXQtbGlzdC1pdGVtIHtcbiAgICBmb250LWZhbWlseTogJGZvbnQtZmFtaWx5O1xuICB9XG5cbiAgLm1hdC1saXN0LW9wdGlvbiB7XG4gICAgZm9udC1mYW1pbHk6ICRmb250LWZhbWlseTtcbiAgfVxuXG4gIC8vIERlZmF1bHQgbGlzdFxuICAubWF0LWxpc3QtYmFzZSB7XG4gICAgLm1hdC1saXN0LWl0ZW0ge1xuICAgICAgZm9udC1zaXplOiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtc2l6ZSgkY29uZmlnLCBzdWJoZWFkaW5nLTIpO1xuICAgICAgQGluY2x1ZGUgbGlzdC1jb21tb24uYmFzZSh0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtc2l6ZSgkY29uZmlnLCBib2R5LTEpKTtcbiAgICB9XG5cbiAgICAubWF0LWxpc3Qtb3B0aW9uIHtcbiAgICAgIGZvbnQtc2l6ZTogdHlwb2dyYXBoeS11dGlscy5mb250LXNpemUoJGNvbmZpZywgc3ViaGVhZGluZy0yKTtcbiAgICAgIEBpbmNsdWRlIGxpc3QtY29tbW9uLmJhc2UodHlwb2dyYXBoeS11dGlscy5mb250LXNpemUoJGNvbmZpZywgYm9keS0xKSk7XG4gICAgfVxuXG4gICAgLm1hdC1zdWJoZWFkZXIge1xuICAgICAgZm9udC1mYW1pbHk6IHR5cG9ncmFwaHktdXRpbHMuZm9udC1mYW1pbHkoJGNvbmZpZywgYm9keS0yKTtcbiAgICAgIGZvbnQtc2l6ZTogdHlwb2dyYXBoeS11dGlscy5mb250LXNpemUoJGNvbmZpZywgYm9keS0yKTtcbiAgICAgIGZvbnQtd2VpZ2h0OiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtd2VpZ2h0KCRjb25maWcsIGJvZHktMik7XG4gICAgfVxuICB9XG5cbiAgLy8gRGVuc2UgbGlzdFxuICAubWF0LWxpc3QtYmFzZVtkZW5zZV0ge1xuICAgIC5tYXQtbGlzdC1pdGVtIHtcbiAgICAgIGZvbnQtc2l6ZTogdHlwb2dyYXBoeS11dGlscy5mb250LXNpemUoJGNvbmZpZywgY2FwdGlvbik7XG4gICAgICBAaW5jbHVkZSBsaXN0LWNvbW1vbi5iYXNlKHR5cG9ncmFwaHktdXRpbHMuZm9udC1zaXplKCRjb25maWcsIGNhcHRpb24pKTtcbiAgICB9XG5cbiAgICAubWF0LWxpc3Qtb3B0aW9uIHtcbiAgICAgIGZvbnQtc2l6ZTogdHlwb2dyYXBoeS11dGlscy5mb250LXNpemUoJGNvbmZpZywgY2FwdGlvbik7XG4gICAgICBAaW5jbHVkZSBsaXN0LWNvbW1vbi5iYXNlKHR5cG9ncmFwaHktdXRpbHMuZm9udC1zaXplKCRjb25maWcsIGNhcHRpb24pKTtcbiAgICB9XG5cbiAgICAubWF0LXN1YmhlYWRlciB7XG4gICAgICBmb250LWZhbWlseTogJGZvbnQtZmFtaWx5O1xuICAgICAgZm9udC1zaXplOiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtc2l6ZSgkY29uZmlnLCBjYXB0aW9uKTtcbiAgICAgIGZvbnQtd2VpZ2h0OiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtd2VpZ2h0KCRjb25maWcsIGJvZHktMik7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBfZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZykge1xuICAkdGhlbWU6IHRoZW1pbmcucHJpdmF0ZS1sZWdhY3ktZ2V0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICBAaW5jbHVkZSB0aGVtaW5nLnByaXZhdGUtY2hlY2stZHVwbGljYXRlLXRoZW1lLXN0eWxlcygkdGhlbWUsICdtYXQtbGlzdCcpIHtcbiAgICAkY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkdGhlbWUpO1xuICAgICRkZW5zaXR5OiB0aGVtaW5nLmdldC1kZW5zaXR5LWNvbmZpZygkdGhlbWUpO1xuICAgICR0eXBvZ3JhcGh5OiB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkdGhlbWUpO1xuXG4gICAgQGlmICRjb2xvciAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIGNvbG9yKCRjb2xvcik7XG4gICAgfVxuICAgIEBpZiAkZGVuc2l0eSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIF9kZW5zaXR5KCRkZW5zaXR5KTtcbiAgICB9XG4gICAgQGlmICR0eXBvZ3JhcGh5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgdHlwb2dyYXBoeSgkdHlwb2dyYXBoeSk7XG4gICAgfVxuICB9XG59XG4iLCJAdXNlICdzYXNzOm1hcCc7XG5AdXNlICcuLi90aGVtaW5nL3RoZW1pbmcnO1xuQHVzZSAnLi4vdHlwb2dyYXBoeS90eXBvZ3JhcGh5JztcbkB1c2UgJy4uL3R5cG9ncmFwaHkvdHlwb2dyYXBoeS11dGlscyc7XG5cbkBtaXhpbiBjb2xvcigkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJGZvcmVncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgZm9yZWdyb3VuZCk7XG4gICRiYWNrZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGJhY2tncm91bmQpO1xuICAkcHJpbWFyeTogbWFwLmdldCgkY29uZmlnLCBwcmltYXJ5KTtcbiAgJGFjY2VudDogbWFwLmdldCgkY29uZmlnLCBhY2NlbnQpO1xuICAkd2FybjogbWFwLmdldCgkY29uZmlnLCB3YXJuKTtcblxuICAubWF0LW9wdGlvbiB7XG4gICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgdGV4dCk7XG5cbiAgICAmOmhvdmVyOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCksXG4gICAgJjpmb2N1czpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpIHtcbiAgICAgIGJhY2tncm91bmQ6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYmFja2dyb3VuZCwgaG92ZXIpO1xuICAgIH1cblxuICAgIC8vIEluIG11bHRpcGxlIG1vZGUgdGhlcmUgaXMgYSBjaGVja2JveCB0byBzaG93IHRoYXQgdGhlIG9wdGlvbiBpcyBzZWxlY3RlZC5cbiAgICAmLm1hdC1zZWxlY3RlZDpub3QoLm1hdC1vcHRpb24tbXVsdGlwbGUpOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCkge1xuICAgICAgYmFja2dyb3VuZDogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLCBob3Zlcik7XG4gICAgfVxuXG4gICAgJi5tYXQtYWN0aXZlIHtcbiAgICAgIGJhY2tncm91bmQ6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYmFja2dyb3VuZCwgaG92ZXIpO1xuICAgICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgdGV4dCk7XG4gICAgfVxuXG4gICAgJi5tYXQtb3B0aW9uLWRpc2FibGVkIHtcbiAgICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIGhpbnQtdGV4dCk7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1wcmltYXJ5IC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZDpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpIHtcbiAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRwcmltYXJ5LCB0ZXh0KTtcbiAgfVxuXG4gIC5tYXQtYWNjZW50IC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZDpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpIHtcbiAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRhY2NlbnQsIHRleHQpO1xuICB9XG5cbiAgLm1hdC13YXJuIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZDpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpIHtcbiAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCR3YXJuLCB0ZXh0KTtcbiAgfVxufVxuXG5AbWl4aW4gdHlwb2dyYXBoeSgkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHR5cG9ncmFwaHkucHJpdmF0ZS10eXBvZ3JhcGh5LXRvLTIwMTQtY29uZmlnKFxuICAgICAgdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJGNvbmZpZy1vci10aGVtZSkpO1xuICAubWF0LW9wdGlvbiB7XG4gICAgZm9udDoge1xuICAgICAgZmFtaWx5OiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtZmFtaWx5KCRjb25maWcpO1xuICAgICAgc2l6ZTogdHlwb2dyYXBoeS11dGlscy5mb250LXNpemUoJGNvbmZpZywgc3ViaGVhZGluZy0yKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIF9kZW5zaXR5KCRjb25maWctb3ItdGhlbWUpIHt9XG5cbkBtaXhpbiB0aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKSB7XG4gICR0aGVtZTogdGhlbWluZy5wcml2YXRlLWxlZ2FjeS1nZXQtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZyk7XG4gIEBpbmNsdWRlIHRoZW1pbmcucHJpdmF0ZS1jaGVjay1kdXBsaWNhdGUtdGhlbWUtc3R5bGVzKCR0aGVtZSwgJ21hdC1vcHRpb24nKSB7XG4gICAgJGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJHRoZW1lKTtcbiAgICAkZGVuc2l0eTogdGhlbWluZy5nZXQtZGVuc2l0eS1jb25maWcoJHRoZW1lKTtcbiAgICAkdHlwb2dyYXBoeTogdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJHRoZW1lKTtcblxuICAgIEBpZiAkY29sb3IgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBjb2xvcigkY29sb3IpO1xuICAgIH1cbiAgICBAaWYgJGRlbnNpdHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBfZGVuc2l0eSgkZGVuc2l0eSk7XG4gICAgfVxuICAgIEBpZiAkdHlwb2dyYXBoeSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIHR5cG9ncmFwaHkoJHR5cG9ncmFwaHkpO1xuICAgIH1cbiAgfVxufVxuIiwiQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnLi4vdGhlbWluZy90aGVtaW5nJztcbkB1c2UgJy4uL3R5cG9ncmFwaHkvdHlwb2dyYXBoeSc7XG5AdXNlICcuLi90eXBvZ3JhcGh5L3R5cG9ncmFwaHktdXRpbHMnO1xuXG5AbWl4aW4gY29sb3IoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRmb3JlZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGZvcmVncm91bmQpO1xuXG4gIC5tYXQtb3B0Z3JvdXAtbGFiZWwge1xuICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIHNlY29uZGFyeS10ZXh0KTtcbiAgfVxuXG4gIC5tYXQtb3B0Z3JvdXAtZGlzYWJsZWQgLm1hdC1vcHRncm91cC1sYWJlbCB7XG4gICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgaGludC10ZXh0KTtcbiAgfVxufVxuXG5AbWl4aW4gdHlwb2dyYXBoeSgkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHR5cG9ncmFwaHkucHJpdmF0ZS10eXBvZ3JhcGh5LXRvLTIwMTQtY29uZmlnKFxuICAgICAgdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJGNvbmZpZy1vci10aGVtZSkpO1xuICAubWF0LW9wdGdyb3VwLWxhYmVsIHtcbiAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5LXV0aWxzLnR5cG9ncmFwaHktbGV2ZWwoJGNvbmZpZywgYm9keS0yKTtcbiAgfVxufVxuXG5AbWl4aW4gX2RlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIHRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiB0aGVtaW5nLnByaXZhdGUtbGVnYWN5LWdldC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgQGluY2x1ZGUgdGhlbWluZy5wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LW9wdGdyb3VwJykge1xuICAgICRjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgJGRlbnNpdHk6IHRoZW1pbmcuZ2V0LWRlbnNpdHktY29uZmlnKCR0aGVtZSk7XG4gICAgJHR5cG9ncmFwaHk6IHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCR0aGVtZSk7XG5cbiAgICBAaWYgJGNvbG9yICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgX2RlbnNpdHkoJGRlbnNpdHkpO1xuICAgIH1cbiAgICBAaWYgJHR5cG9ncmFwaHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5KCR0eXBvZ3JhcGh5KTtcbiAgICB9XG4gIH1cbn1cbiIsIkB1c2UgJ3Nhc3M6bWFwJztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5JztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5LXV0aWxzJztcbkB1c2UgJy4uL2NvcmUvdGhlbWluZy90aGVtaW5nJztcbkB1c2UgJy4uL2NvcmUvdGhlbWluZy9wYWxldHRlJztcbkB1c2UgJy4uL2NvcmUvc3R5bGUvcHJpdmF0ZSc7XG5cbkBtaXhpbiBjb2xvcigkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJGlzLWRhcmstdGhlbWU6IG1hcC5nZXQoJGNvbmZpZywgaXMtZGFyayk7XG4gICRhY2NlbnQ6IG1hcC5nZXQoJGNvbmZpZywgYWNjZW50KTtcblxuICAubWF0LXNuYWNrLWJhci1jb250YWluZXIge1xuICAgIC8vIFVzZSB0aGUgcHJpbWFyeSB0ZXh0IG9uIHRoZSBkYXJrIHRoZW1lLCBldmVuIHRob3VnaCB0aGUgbGlnaHRlciBvbmUgdXNlc1xuICAgIC8vIGEgc2Vjb25kYXJ5LCBiZWNhdXNlIHRoZSBjb250cmFzdCBvbiB0aGUgbGlnaHQgcHJpbWFyeSB0ZXh0IGlzIHBvb3IuXG4gICAgY29sb3I6IGlmKCRpcy1kYXJrLXRoZW1lLCBwYWxldHRlLiRkYXJrLXByaW1hcnktdGV4dCwgcGFsZXR0ZS4kbGlnaHQtc2Vjb25kYXJ5LXRleHQpO1xuICAgIGJhY2tncm91bmQ6IGlmKCRpcy1kYXJrLXRoZW1lLCBtYXAuZ2V0KHBhbGV0dGUuJGdyZXktcGFsZXR0ZSwgNTApLCAjMzIzMjMyKTtcblxuICAgIEBpbmNsdWRlIHByaXZhdGUucHJpdmF0ZS10aGVtZS1lbGV2YXRpb24oNiwgJGNvbmZpZyk7XG4gIH1cblxuICAubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb24ge1xuICAgIGNvbG9yOiBpZigkaXMtZGFyay10aGVtZSwgaW5oZXJpdCwgdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRhY2NlbnQsIHRleHQpKTtcbiAgfVxufVxuXG5AbWl4aW4gdHlwb2dyYXBoeSgkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHR5cG9ncmFwaHkucHJpdmF0ZS10eXBvZ3JhcGh5LXRvLTIwMTQtY29uZmlnKFxuICAgICAgdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJGNvbmZpZy1vci10aGVtZSkpO1xuICAubWF0LXNpbXBsZS1zbmFja2JhciB7XG4gICAgZm9udDoge1xuICAgICAgZmFtaWx5OiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtZmFtaWx5KCRjb25maWcsIGJvZHktMSk7XG4gICAgICBzaXplOiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtc2l6ZSgkY29uZmlnLCBib2R5LTEpO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbiB7XG4gICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgZm9udDoge1xuICAgICAgZmFtaWx5OiBpbmhlcml0O1xuICAgICAgc2l6ZTogaW5oZXJpdDtcbiAgICAgIHdlaWdodDogdHlwb2dyYXBoeS11dGlscy5mb250LXdlaWdodCgkY29uZmlnLCBidXR0b24pO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gX2RlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIHRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiB0aGVtaW5nLnByaXZhdGUtbGVnYWN5LWdldC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgQGluY2x1ZGUgdGhlbWluZy5wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LXNuYWNrLWJhcicpIHtcbiAgICAkY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkdGhlbWUpO1xuICAgICRkZW5zaXR5OiB0aGVtaW5nLmdldC1kZW5zaXR5LWNvbmZpZygkdGhlbWUpO1xuICAgICR0eXBvZ3JhcGh5OiB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkdGhlbWUpO1xuXG4gICAgQGlmICRjb2xvciAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIGNvbG9yKCRjb2xvcik7XG4gICAgfVxuICAgIEBpZiAkZGVuc2l0eSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIF9kZW5zaXR5KCRkZW5zaXR5KTtcbiAgICB9XG4gICAgQGlmICR0eXBvZ3JhcGh5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgdHlwb2dyYXBoeSgkdHlwb2dyYXBoeSk7XG4gICAgfVxuICB9XG59XG4iLCJAdXNlICdzYXNzOm1hcCc7XG5AdXNlICcuLi9jb3JlL2RlbnNpdHkvcHJpdmF0ZS9jb21wYXRpYmlsaXR5JztcbkB1c2UgJy4uL2NvcmUvdGhlbWluZy90aGVtaW5nJztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5JztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5LXV0aWxzJztcbkB1c2UgJy4vdHJlZS12YXJpYWJsZXMnO1xuXG5AbWl4aW4gY29sb3IoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRiYWNrZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGJhY2tncm91bmQpO1xuICAkZm9yZWdyb3VuZDogbWFwLmdldCgkY29uZmlnLCBmb3JlZ3JvdW5kKTtcblxuICAubWF0LXRyZWUge1xuICAgIGJhY2tncm91bmQ6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYmFja2dyb3VuZCwgJ2NhcmQnKTtcbiAgfVxuXG4gIC5tYXQtdHJlZS1ub2RlLFxuICAubWF0LW5lc3RlZC10cmVlLW5vZGUge1xuICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIHRleHQpO1xuICB9XG59XG5cbkBtaXhpbiB0eXBvZ3JhcGh5KCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdHlwb2dyYXBoeS5wcml2YXRlLXR5cG9ncmFwaHktdG8tMjAxNC1jb25maWcoXG4gICAgICB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKSk7XG4gIC5tYXQtdHJlZSB7XG4gICAgZm9udC1mYW1pbHk6IHR5cG9ncmFwaHktdXRpbHMuZm9udC1mYW1pbHkoJGNvbmZpZyk7XG4gIH1cblxuICAubWF0LXRyZWUtbm9kZSxcbiAgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlIHtcbiAgICBmb250LXdlaWdodDogdHlwb2dyYXBoeS11dGlscy5mb250LXdlaWdodCgkY29uZmlnLCBib2R5LTEpO1xuICAgIGZvbnQtc2l6ZTogdHlwb2dyYXBoeS11dGlscy5mb250LXNpemUoJGNvbmZpZywgYm9keS0xKTtcbiAgfVxufVxuXG5AbWl4aW4gZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRkZW5zaXR5LXNjYWxlOiB0aGVtaW5nLmdldC1kZW5zaXR5LWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJGhlaWdodDogY29tcGF0aWJpbGl0eS5wcml2YXRlLWRlbnNpdHktcHJvcC12YWx1ZSh0cmVlLXZhcmlhYmxlcy4kZGVuc2l0eS1jb25maWcsXG4gICAgJGRlbnNpdHktc2NhbGUsIGhlaWdodCk7XG5cbiAgQGluY2x1ZGUgY29tcGF0aWJpbGl0eS5wcml2YXRlLWRlbnNpdHktbGVnYWN5LWNvbXBhdGliaWxpdHkoKSB7XG4gICAgLm1hdC10cmVlLW5vZGUge1xuICAgICAgbWluLWhlaWdodDogJGhlaWdodDtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiB0aGVtaW5nLnByaXZhdGUtbGVnYWN5LWdldC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgQGluY2x1ZGUgdGhlbWluZy5wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LXRyZWUnKSB7XG4gICAgJGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJHRoZW1lKTtcbiAgICAkZGVuc2l0eTogdGhlbWluZy5nZXQtZGVuc2l0eS1jb25maWcoJHRoZW1lKTtcbiAgICAkdHlwb2dyYXBoeTogdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJHRoZW1lKTtcblxuICAgIEBpZiAkY29sb3IgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBjb2xvcigkY29sb3IpO1xuICAgIH1cbiAgICBAaWYgJGRlbnNpdHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBkZW5zaXR5KCRkZW5zaXR5KTtcbiAgICB9XG4gICAgQGlmICR0eXBvZ3JhcGh5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgdHlwb2dyYXBoeSgkdHlwb2dyYXBoeSk7XG4gICAgfVxuICB9XG59XG5cbiIsIkB1c2UgJy4uLy4uLy4uL2Nkay9hMTF5JztcblxuQG1peGluIHJpcHBsZSgpIHtcbiAgLy8gVGhlIGhvc3QgZWxlbWVudCBvZiBhbiBtYXQtcmlwcGxlIGRpcmVjdGl2ZSBzaG91bGQgYWx3YXlzIGhhdmUgYSBwb3NpdGlvbiBvZiBcImFic29sdXRlXCIgb3JcbiAgLy8gXCJyZWxhdGl2ZVwiIHNvIHRoYXQgdGhlIHJpcHBsZXMgaW5zaWRlIGFyZSBjb3JyZWN0bHkgcG9zaXRpb25lZCByZWxhdGl2ZWx5IHRvIHRoZSBjb250YWluZXIuXG4gIC5tYXQtcmlwcGxlIHtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICAgLy8gQnkgZGVmYXVsdCwgZXZlcnkgcmlwcGxlIGNvbnRhaW5lciBzaG91bGQgaGF2ZSBwb3NpdGlvbjogcmVsYXRpdmUgaW4gZmF2b3Igb2YgY3JlYXRpbmcgYW5cbiAgICAvLyBlYXN5IEFQSSBmb3IgZGV2ZWxvcGVycyB1c2luZyB0aGUgTWF0UmlwcGxlIGRpcmVjdGl2ZS5cbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAvLyBQcm9tb3RlIGNvbnRhaW5lcnMgdGhhdCBoYXZlIHJpcHBsZXMgdG8gYSBuZXcgbGF5ZXIuIFdlIHdhbnQgdG8gdGFyZ2V0IGA6bm90KDplbXB0eSlgLFxuICAgIC8vIGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCBhbGwgcmlwcGxlIGNvbnRhaW5lcnMgdG8gaGF2ZSB0aGVpciBvd24gbGF5ZXIgc2luY2UgdGhleSdyZSB1c2VkIGluIGFcbiAgICAvLyBsb3Qgb2YgcGxhY2VzIGFuZCB0aGUgbGF5ZXIgaXMgb25seSByZWxldmFudCB3aGlsZSBhbmltYXRpbmcuIE5vdGUgdGhhdCBpZGVhbGx5IHdlJ2QgdXNlXG4gICAgLy8gdGhlIGBjb250YWluYCBwcm9wZXJ0eSBoZXJlIChzZWUgIzEzMTc1KSwgYmVjYXVzZSBgOmVtcHR5YCBjYW4gYmUgYnJva2VuIGJ5IGhhdmluZyBleHRyYVxuICAgIC8vIHRleHQgaW5zaWRlIHRoZSBlbGVtZW50LCBidXQgaXQgaXNuJ3QgdmVyeSB3ZWxsIHN1cHBvcnRlZCB5ZXQuXG4gICAgJjpub3QoOmVtcHR5KSB7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCk7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWQge1xuICAgIG92ZXJmbG93OiB2aXNpYmxlO1xuICB9XG5cbiAgLm1hdC1yaXBwbGUtZWxlbWVudCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcblxuICAgIHRyYW5zaXRpb246IG9wYWNpdHksIHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgwKTtcblxuICAgIC8vIEluIGhpZ2ggY29udHJhc3QgbW9kZSB0aGUgcmlwcGxlIGlzIG9wYXF1ZSwgY2F1c2luZyBpdCB0byBvYnN0cnVjdCB0aGUgY29udGVudC5cbiAgICBAaW5jbHVkZSBhMTF5LmhpZ2gtY29udHJhc3QoYWN0aXZlLCBvZmYpIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICB9XG59XG4iLCIvLy8gRW1pdHMgYSBDU1MgY2xhc3MsIGAuY2RrLXZpc3VhbGx5LWhpZGRlbmAuIFRoaXMgY2xhc3MgY2FuIGJlIGFwcGxpZWQgdG8gYW4gZWxlbWVudFxuLy8vIHRvIG1ha2UgdGhhdCBlbGVtZW50IHZpc3VhbGx5IGhpZGRlbiB3aGlsZSByZW1haW5pbmcgYXZhaWxhYmxlIHRvIGFzc2l0aXZlIHRlY2hub2xvZ3kuXG5AbWl4aW4gYTExeS12aXN1YWxseS1oaWRkZW4oKSB7XG4gIC5jZGstdmlzdWFsbHktaGlkZGVuIHtcbiAgICBib3JkZXI6IDA7XG4gICAgY2xpcDogcmVjdCgwIDAgMCAwKTtcbiAgICBoZWlnaHQ6IDFweDtcbiAgICBtYXJnaW46IC0xcHg7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBwYWRkaW5nOiAwO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB3aWR0aDogMXB4O1xuXG4gICAgLy8gVGhpcyB3b3JrcyBhcm91bmQgYSBDaHJvbWUgYnVnIHRoYXQgY2FuIGNhdXNlIHRoZSB0YWIgdG8gY3Jhc2ggd2hlbiBsYXJnZSBhbW91bnRzIG9mXG4gICAgLy8gbm9uLUVuZ2xpc2ggdGV4dCBnZXQgd3JhcHBlZDogaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9MTIwMTQ0NFxuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cbiAgICAvLyBBdm9pZCBicm93c2VycyByZW5kZXJpbmcgdGhlIGZvY3VzIHJpbmcgaW4gc29tZSBjYXNlcy5cbiAgICBvdXRsaW5lOiAwO1xuXG4gICAgLy8gQXZvaWQgc29tZSBjYXNlcyB3aGVyZSB0aGUgYnJvd3NlciB3aWxsIHN0aWxsIHJlbmRlciB0aGUgbmF0aXZlIGNvbnRyb2xzIChzZWUgIzkwNDkpLlxuICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgICAtbW96LWFwcGVhcmFuY2U6IG5vbmU7XG4gIH1cbn1cblxuLy8vIEBkZXByZWNhdGVkIFVzZSBgYTExeS12aXN1YWxseS1oaWRkZW5gLlxuQG1peGluIGExMXkoKSB7XG4gIEBpbmNsdWRlIGExMXktdmlzdWFsbHktaGlkZGVuO1xufVxuXG4vLy8gRW1pdHMgdGhlIG1peGluJ3MgY29udGVudCBuZXN0ZWQgdW5kZXIgYCRzZWxlY3Rvci1jb250ZXh0YCBpZiBgJHNlbGVjdG9yLWNvbnRleHRgXG4vLy8gaXMgbm9uLWVtcHR5LlxuLy8vIEBwYXJhbSB7U3RyaW5nfSBzZWxlY3Rvci1jb250ZXh0IFRoZSBzZWxlY3RvciB1bmRlciB3aGljaCB0byBuZXN0IHRoZSBtaXhpbidzIGNvbnRlbnQuXG5AbWl4aW4gX29wdGlvbmFsbHktbmVzdC1jb250ZW50KCRzZWxlY3Rvci1jb250ZXh0KSB7XG4gIEBpZiAoJHNlbGVjdG9yLWNvbnRleHQgPT0gJycpIHtcbiAgICBAY29udGVudDtcbiAgfVxuICBAZWxzZSB7XG4gICAgI3skc2VsZWN0b3ItY29udGV4dH0ge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG5cbi8vLyBBcHBsaWVzIHN0eWxlcyBmb3IgdXNlcnMgaW4gaGlnaCBjb250cmFzdCBtb2RlLiBOb3RlIHRoYXQgdGhpcyBvbmx5IGFwcGxpZXNcbi8vLyB0byBNaWNyb3NvZnQgYnJvd3NlcnMuIENocm9tZSBjYW4gYmUgaW5jbHVkZWQgYnkgY2hlY2tpbmcgZm9yIHRoZSBgaHRtbFtoY11gXG4vLy8gYXR0cmlidXRlLCBob3dldmVyIENocm9tZSBoYW5kbGVzIGhpZ2ggY29udHJhc3QgZGlmZmVyZW50bHkuXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gdGFyZ2V0IFR5cGUgb2YgaGlnaCBjb250cmFzdCBzZXR0aW5nIHRvIHRhcmdldC4gRGVmYXVsdHMgdG8gYGFjdGl2ZWAsIGNhbiBiZVxuLy8vICAgICBgd2hpdGUtb24tYmxhY2tgIG9yIGBibGFjay1vbi13aGl0ZWAuXG4vLy8gQHBhcmFtIHtTdHJpbmd9IGVuY2Fwc3VsYXRpb24gV2hldGhlciB0byBlbWl0IHN0eWxlcyBmb3IgdmlldyBlbmNhcHN1bGF0aW9uLiBWYWx1ZXMgYXJlOlxuLy8vICAgICAqIGBvbmAgLSB3b3JrcyBmb3IgYEVtdWxhdGVkYCwgYE5hdGl2ZWAsIGFuZCBgU2hhZG93RG9tYFxuLy8vICAgICAqIGBvZmZgIC0gd29ya3MgZm9yIGBOb25lYFxuLy8vICAgICAqIGBhbnlgIC0gd29ya3MgZm9yIGFsbCBlbmNhcHN1bGF0aW9uIG1vZGVzIGJ5IGVtaXR0aW5nIHRoZSBDU1MgdHdpY2UgKGRlZmF1bHQpLlxuQG1peGluIGhpZ2gtY29udHJhc3QoJHRhcmdldDogYWN0aXZlLCAkZW5jYXBzdWxhdGlvbjogJ2FueScpIHtcbiAgQGlmICgkdGFyZ2V0ICE9ICdhY3RpdmUnIGFuZCAkdGFyZ2V0ICE9ICdibGFjay1vbi13aGl0ZScgYW5kICR0YXJnZXQgIT0gJ3doaXRlLW9uLWJsYWNrJykge1xuICAgIEBlcnJvciAnVW5rbm93biBjZGstaGlnaC1jb250cmFzdCB2YWx1ZSBcIiN7JHRhcmdldH1cIiBwcm92aWRlZC4gJyArXG4gICAgICAgICAgICdBbGxvd2VkIHZhbHVlcyBhcmUgXCJhY3RpdmVcIiwgXCJibGFjay1vbi13aGl0ZVwiLCBhbmQgXCJ3aGl0ZS1vbi1ibGFja1wiJztcbiAgfVxuXG4gIEBpZiAoJGVuY2Fwc3VsYXRpb24gIT0gJ29uJyBhbmQgJGVuY2Fwc3VsYXRpb24gIT0gJ29mZicgYW5kICRlbmNhcHN1bGF0aW9uICE9ICdhbnknKSB7XG4gICAgQGVycm9yICdVbmtub3duIGNkay1oaWdoLWNvbnRyYXN0IGVuY2Fwc3VsYXRpb24gXCIjeyRlbmNhcHN1bGF0aW9ufVwiIHByb3ZpZGVkLiAnICtcbiAgICAgICAgICAgJ0FsbG93ZWQgdmFsdWVzIGFyZSBcIm9uXCIsIFwib2ZmXCIsIGFuZCBcImFueVwiJztcbiAgfVxuXG4gIC8vIElmIHRoZSBzZWxlY3RvciBjb250ZXh0IGhhcyBtdWx0aXBsZSBwYXJ0cywgc3VjaCBhcyBgLnNlY3Rpb24sIC5yZWdpb25gLCBqdXN0IGRvaW5nXG4gIC8vIGAuY2RrLWhpZ2gtY29udHJhc3QteHh4ICN7Jn1gIHdpbGwgb25seSBhcHBseSB0aGUgcGFyZW50IHNlbGVjdG9yIHRvIHRoZSBmaXJzdCBwYXJ0IG9mIHRoZVxuICAvLyBjb250ZXh0LiBXZSBhZGRyZXNzIHRoaXMgYnkgbmVzdGluZyB0aGUgc2VsZWN0b3IgY29udGV4dCB1bmRlciAuY2RrLWhpZ2gtY29udHJhc3QuXG4gIEBhdC1yb290IHtcbiAgICAkc2VsZWN0b3ItY29udGV4dDogI3smfTtcblxuICAgIEBpZiAoJGVuY2Fwc3VsYXRpb24gIT0gJ29uJykge1xuICAgICAgLy8gTm90ZSB0aGF0IGlmIHRoaXMgc2VsZWN0b3IgaXMgdXBkYXRlZCwgdGhlIHNhbWUgY2hhbmdlIGhhcyB0byBiZSBtYWRlIGluc2lkZVxuICAgICAgLy8gYF9vdmVybGF5LnNjc3NgIHdoaWNoIGNhbid0IGRlcGVuZCBvbiB0aGlzIG1peGluIGR1ZSB0byBzb21lIGluZnJhc3RydWN0dXJlIGxpbWl0YXRpb25zLlxuICAgICAgLmNkay1oaWdoLWNvbnRyYXN0LSN7JHRhcmdldH0ge1xuICAgICAgICBAaW5jbHVkZSBfb3B0aW9uYWxseS1uZXN0LWNvbnRlbnQoJHNlbGVjdG9yLWNvbnRleHQpIHtcbiAgICAgICAgICBAY29udGVudDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIEBpZiAoJGVuY2Fwc3VsYXRpb24gIT0gJ29mZicpIHtcbiAgICAgIC5jZGstaGlnaC1jb250cmFzdC0jeyR0YXJnZXR9IDpob3N0IHtcbiAgICAgICAgQGluY2x1ZGUgX29wdGlvbmFsbHktbmVzdC1jb250ZW50KCRzZWxlY3Rvci1jb250ZXh0KSB7XG4gICAgICAgICAgQGNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vIFdlIHdhbnQgb3ZlcmxheXMgdG8gYWx3YXlzIGFwcGVhciBvdmVyIHVzZXIgY29udGVudCwgc28gc2V0IGEgYmFzZWxpbmVcbi8vIHZlcnkgaGlnaCB6LWluZGV4IGZvciB0aGUgb3ZlcmxheSBjb250YWluZXIsIHdoaWNoIGlzIHdoZXJlIHdlIGNyZWF0ZSB0aGUgbmV3XG4vLyBzdGFja2luZyBjb250ZXh0IGZvciBhbGwgb3ZlcmxheXMuXG4kb3ZlcmxheS1jb250YWluZXItei1pbmRleDogMTAwMCAhZGVmYXVsdDtcbiRvdmVybGF5LXotaW5kZXg6IDEwMDAgIWRlZmF1bHQ7XG4kb3ZlcmxheS1iYWNrZHJvcC16LWluZGV4OiAxMDAwICFkZWZhdWx0O1xuXG4vLyBCYWNrZ3JvdW5kIGNvbG9yIGZvciBhbGwgb2YgdGhlIGJhY2tkcm9wc1xuJG92ZXJsYXktYmFja2Ryb3AtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4zMikgIWRlZmF1bHQ7XG5cbi8vIERlZmF1bHQgYmFja2Ryb3AgYW5pbWF0aW9uIGlzIGJhc2VkIG9uIHRoZSBNYXRlcmlhbCBEZXNpZ24gc3dpZnQtZWFzZS1vdXQuXG4kYmFja2Ryb3AtYW5pbWF0aW9uLWR1cmF0aW9uOiA0MDBtcyAhZGVmYXVsdDtcbiRiYWNrZHJvcC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKSAhZGVmYXVsdDtcblxuLy8vIEVtaXRzIHN0cnVjdHVyYWwgc3R5bGVzIHJlcXVpcmVkIGZvciBjZGsvb3ZlcmxheSB0byBmdW5jdGlvbi5cbkBtaXhpbiBvdmVybGF5KCkge1xuICAuY2RrLW92ZXJsYXktY29udGFpbmVyLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXIge1xuICAgIC8vIERpc2FibGUgZXZlbnRzIGZyb20gYmVpbmcgY2FwdHVyZWQgb24gdGhlIG92ZXJsYXkgY29udGFpbmVyLlxuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuXG4gICAgLy8gVGhlIGNvbnRhaW5lciBzaG91bGQgYmUgdGhlIHNpemUgb2YgdGhlIHZpZXdwb3J0LlxuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICB3aWR0aDogMTAwJTtcbiAgfVxuXG4gIC8vIFRoZSBvdmVybGF5LWNvbnRhaW5lciBpcyBhbiBpbnZpc2libGUgZWxlbWVudCB3aGljaCBjb250YWlucyBhbGwgaW5kaXZpZHVhbCBvdmVybGF5cy5cbiAgLmNkay1vdmVybGF5LWNvbnRhaW5lciB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIHotaW5kZXg6ICRvdmVybGF5LWNvbnRhaW5lci16LWluZGV4O1xuXG4gICAgJjplbXB0eSB7XG4gICAgICAvLyBIaWRlIHRoZSBlbGVtZW50IHdoZW4gaXQgZG9lc24ndCBoYXZlIGFueSBjaGlsZCBub2Rlcy4gVGhpcyBkb2Vzbid0XG4gICAgICAvLyBpbmNsdWRlIG92ZXJsYXlzIHRoYXQgaGF2ZSBiZWVuIGRldGFjaGVkLCByYXRoZXIgdGhhbiBkaXNwb3NlZC5cbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICB9XG5cbiAgLy8gV2UgdXNlIGFuIGV4dHJhIHdyYXBwZXIgZWxlbWVudCBpbiBvcmRlciB0byB1c2UgbWFrZSB0aGUgb3ZlcmxheSBpdHNlbGYgYSBmbGV4IGl0ZW0uXG4gIC8vIFRoaXMgbWFrZXMgY2VudGVyaW5nIHRoZSBvdmVybGF5IGVhc3kgd2l0aG91dCBydW5uaW5nIGludG8gdGhlIHN1YnBpeGVsIHJlbmRlcmluZ1xuICAvLyBwcm9ibGVtcyB0aWVkIHRvIHVzaW5nIGB0cmFuc2Zvcm1gIGFuZCB3aXRob3V0IGludGVyZmVyaW5nIHdpdGggdGhlIG90aGVyIHBvc2l0aW9uXG4gIC8vIHN0cmF0ZWdpZXMuXG4gIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgei1pbmRleDogJG92ZXJsYXktei1pbmRleDtcbiAgfVxuXG4gIC8vIEEgc2luZ2xlIG92ZXJsYXkgcGFuZS5cbiAgLmNkay1vdmVybGF5LXBhbmUge1xuICAgIC8vIE5vdGU6IGl0J3MgaW1wb3J0YW50IGZvciB0aGlzIG9uZSB0byBzdGFydCBvZmYgYGFic29sdXRlYCxcbiAgICAvLyBpbiBvcmRlciBmb3IgdXMgdG8gYmUgYWJsZSB0byBtZWFzdXJlIGl0IGNvcnJlY3RseS5cbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgcG9pbnRlci1ldmVudHM6IGF1dG87XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICB6LWluZGV4OiAkb3ZlcmxheS16LWluZGV4O1xuXG4gICAgLy8gRm9yIGNvbm5lY3RlZC1wb3NpdGlvbiBvdmVybGF5cywgd2Ugc2V0IGBkaXNwbGF5OiBmbGV4YCBpblxuICAgIC8vIG9yZGVyIHRvIGZvcmNlIGBtYXgtd2lkdGhgIGFuZCBgbWF4LWhlaWdodGAgdG8gdGFrZSBlZmZlY3QuXG4gICAgZGlzcGxheTogZmxleDtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgbWF4LWhlaWdodDogMTAwJTtcbiAgfVxuXG4gIC5jZGstb3ZlcmxheS1iYWNrZHJvcCB7XG4gICAgLy8gVE9ETyhqZWxib3Vybik6IHJldXNlIHNpZGVuYXYgZnVsbHNjcmVlbiBtaXhpbi5cbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGJvdHRvbTogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHJpZ2h0OiAwO1xuXG4gICAgei1pbmRleDogJG92ZXJsYXktYmFja2Ryb3Atei1pbmRleDtcbiAgICBwb2ludGVyLWV2ZW50czogYXV0bztcbiAgICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIHRyYW5zaXRpb246IG9wYWNpdHkgJGJhY2tkcm9wLWFuaW1hdGlvbi1kdXJhdGlvbiAkYmFja2Ryb3AtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjtcbiAgICBvcGFjaXR5OiAwO1xuXG4gICAgJi5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nIHtcbiAgICAgIG9wYWNpdHk6IDE7XG5cbiAgICAgIC8vIE5vdGUgdGhhdCB3ZSBjYW4ndCBpbXBvcnQgYW5kIHVzZSB0aGUgYGhpZ2gtY29udHJhc3RgIG1peGluIGZyb20gYF9hMTF5LnNjc3NgLCBiZWNhdXNlXG4gICAgICAvLyB0aGlzIGZpbGUgd2lsbCBiZSBjb3BpZWQgdG8gdGhlIHRvcC1sZXZlbCBgY2RrYCBwYWNrYWdlIHdoZW4gcHV0dGluZyB0b2dldGhlciB0aGUgZmlsZXNcbiAgICAgIC8vIGZvciBucG0uIEFueSByZWxhdGl2ZSBpbXBvcnQgcGF0aHMgd2UgdXNlIGhlcmUgd2lsbCBiZWNvbWUgaW52YWxpZCBvbmNlIHRoZSBmaWxlIGlzIGNvcGllZC5cbiAgICAgIC5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgJiB7XG4gICAgICAgIC8vIEluIGhpZ2ggY29udHJhc3QgbW9kZSB0aGUgcmdiYSBiYWNrZ3JvdW5kIHdpbGwgYmVjb21lIHNvbGlkXG4gICAgICAgIC8vIHNvIHdlIG5lZWQgdG8gZmFsbCBiYWNrIHRvIG1ha2luZyBpdCBvcGFxdWUgdXNpbmcgYG9wYWNpdHlgLlxuICAgICAgICBvcGFjaXR5OiAwLjY7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3Age1xuICAgIGJhY2tncm91bmQ6ICRvdmVybGF5LWJhY2tkcm9wLWNvbG9yO1xuICB9XG5cbiAgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wIHtcbiAgICAvLyBOb3RlOiBhcyBvZiBGaXJlZm94IDU3LCBoYXZpbmcgdGhlIGJhY2tkcm9wIGJlIGBiYWNrZ3JvdW5kOiBub25lYCB3aWxsIHByZXZlbnQgaXQgZnJvbVxuICAgIC8vIGNhcHR1cmluZyB0aGUgdXNlcidzIG1vdXNlIHNjcm9sbCBldmVudHMuIFNpbmNlIHdlIGFsc28gY2FuJ3QgdXNlIHNvbWV0aGluZyBsaWtlXG4gICAgLy8gYHJnYmEoMCwgMCwgMCwgMClgLCB3ZSB3b3JrIGFyb3VuZCB0aGUgaW5jb25zaXN0ZW5jeSBieSBub3Qgc2V0dGluZyB0aGUgYmFja2dyb3VuZCBhdFxuICAgIC8vIGFsbCBhbmQgdXNpbmcgYG9wYWNpdHlgIHRvIG1ha2UgdGhlIGVsZW1lbnQgdHJhbnNwYXJlbnQuXG4gICAgJiwgJi5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nIHtcbiAgICAgIG9wYWNpdHk6IDA7XG4gICAgfVxuICB9XG5cbiAgLy8gT3ZlcmxheSBwYXJlbnQgZWxlbWVudCB1c2VkIHdpdGggdGhlIGNvbm5lY3RlZCBwb3NpdGlvbiBzdHJhdGVneS4gVXNlZCB0byBjb25zdHJhaW4gdGhlXG4gIC8vIG92ZXJsYXkgZWxlbWVudCdzIHNpemUgdG8gZml0IHdpdGhpbiB0aGUgdmlld3BvcnQuXG4gIC5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgei1pbmRleDogJG92ZXJsYXktei1pbmRleDtcblxuICAgIC8vIFdlIHVzZSBgZGlzcGxheTogZmxleGAgb24gdGhpcyBlbGVtZW50IGV4Y2x1c2l2ZWx5IGZvciBjZW50ZXJpbmcgY29ubmVjdGVkIG92ZXJsYXlzLlxuICAgIC8vIFdoZW4gKm5vdCogY2VudGVyaW5nLCBhIHRvcC9sZWZ0L2JvdHRvbS9yaWdodCB3aWxsIGJlIHNldCB3aGljaCBvdmVycmlkZXMgdGhlIG5vcm1hbFxuICAgIC8vIGZsZXggbGF5b3V0LlxuICAgIGRpc3BsYXk6IGZsZXg7XG5cbiAgICAvLyBXZSB1c2UgdGhlIGBjb2x1bW5gIGRpcmVjdGlvbiBoZXJlIHRvIGF2b2lkIHNvbWUgZmxleGJveCBpc3N1ZXMgaW4gRWRnZVxuICAgIC8vIHdoZW4gdXNpbmcgdGhlIFwiZ3JvdyBhZnRlciBvcGVuXCIgb3B0aW9ucy5cbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXG4gICAgLy8gQWRkIHNvbWUgZGltZW5zaW9ucyBzbyB0aGUgZWxlbWVudCBoYXMgYW4gYGlubmVyVGV4dGAgd2hpY2ggc29tZSBwZW9wbGUgZGVwZW5kIG9uIGluIHRlc3RzLlxuICAgIG1pbi13aWR0aDogMXB4O1xuICAgIG1pbi1oZWlnaHQ6IDFweDtcbiAgfVxuXG4gIC8vIFVzZWQgd2hlbiBkaXNhYmxpbmcgZ2xvYmFsIHNjcm9sbGluZy5cbiAgLmNkay1nbG9iYWwtc2Nyb2xsYmxvY2sge1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcblxuICAgIC8vIE5lY2Vzc2FyeSBmb3IgdGhlIGNvbnRlbnQgbm90IHRvIGxvc2UgaXRzIHdpZHRoLiBOb3RlIHRoYXQgd2UncmUgdXNpbmcgMTAwJSwgaW5zdGVhZCBvZlxuICAgIC8vIDEwMHZ3LCBiZWNhdXNlIDEwMHZ3IGluY2x1ZGVzIHRoZSB3aWR0aCBwbHVzIHRoZSBzY3JvbGxiYXIsIHdoZXJlYXMgMTAwJSBpcyB0aGUgd2lkdGhcbiAgICAvLyB0aGF0IHRoZSBlbGVtZW50IGhhZCBiZWZvcmUgd2UgbWFkZSBpdCBgZml4ZWRgLlxuICAgIHdpZHRoOiAxMDAlO1xuXG4gICAgLy8gTm90ZTogdGhpcyB3aWxsIGFsd2F5cyBhZGQgYSBzY3JvbGxiYXIgdG8gd2hhdGV2ZXIgZWxlbWVudCBpdCBpcyBvbiwgd2hpY2ggY2FuXG4gICAgLy8gcG90ZW50aWFsbHkgcmVzdWx0IGluIGRvdWJsZSBzY3JvbGxiYXJzLiBJdCBzaG91bGRuJ3QgYmUgYW4gaXNzdWUsIGJlY2F1c2Ugd2Ugd29uJ3RcbiAgICAvLyBibG9jayBzY3JvbGxpbmcgb24gYSBwYWdlIHRoYXQgZG9lc24ndCBoYXZlIGEgc2Nyb2xsYmFyIGluIHRoZSBmaXJzdCBwbGFjZS5cbiAgICBvdmVyZmxvdy15OiBzY3JvbGw7XG4gIH1cbn1cbiIsIi8vIFN0cnVjdHVyYWwgc3R5bGVzIGZvciB0aGUgYXV0b3NpemUgdGV4dCBmaWVsZHMuXG5AbWl4aW4gdGV4dC1maWVsZC1hdXRvc2l6ZSgpIHtcbiAgLy8gUmVtb3ZlIHRoZSByZXNpemUgaGFuZGxlIG9uIGF1dG9zaXppbmcgdGV4dGFyZWFzLCBiZWNhdXNlIHdoYXRldmVyIGhlaWdodFxuICAvLyB0aGUgdXNlciByZXNpemVkIHRvIHdpbGwgYmUgb3ZlcndyaXR0ZW4gb25jZSB0aGV5IHN0YXJ0IHR5cGluZyBhZ2Fpbi5cbiAgdGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplIHtcbiAgICByZXNpemU6IG5vbmU7XG4gIH1cblxuICAvLyBUaGlzIGNsYXNzIGlzIHRlbXBvcmFyaWx5IGFwcGxpZWQgdG8gdGhlIHRleHRhcmVhIHdoZW4gaXQgaXMgYmVpbmcgbWVhc3VyZWQuIEl0IGlzIGltbWVkaWF0ZWx5XG4gIC8vIHJlbW92ZWQgd2hlbiBtZWFzdXJpbmcgaXMgY29tcGxldGUuIFdlIHVzZSBgIWltcG9ydGFudGAgcnVsZXMgaGVyZSB0byBtYWtlIHN1cmUgdXNlci1zcGVjaWZpZWRcbiAgLy8gcnVsZXMgZG8gbm90IGludGVyZmVyZSB3aXRoIHRoZSBtZWFzdXJlbWVudC5cbiAgdGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZyB7XG4gICAgQGluY2x1ZGUgX2F1dG9zaXplLW1lYXN1cmluZy1iYXNlO1xuICAgIGhlaWdodDogYXV0byAhaW1wb3J0YW50O1xuICAgIG92ZXJmbG93OiBoaWRkZW4gIWltcG9ydGFudDtcbiAgfVxuXG4gIC8vIFNpbWlsYXIgdG8gdGhlIGBjZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nYCBjbGFzcywgYnV0IG9ubHkgYXBwbGllZCBvbiBGaXJlZm94LiBXZSBuZWVkXG4gIC8vIHRvIHVzZSB0aGlzIGNsYXNzLCBiZWNhdXNlIEZpcmVmb3ggaGFzIGEgYnVnIHdoZXJlIGNoYW5naW5nIHRoZSBgb3ZlcmZsb3dgIGJyZWFrcyB0aGUgdXNlcidzXG4gIC8vIGFiaWxpdHkgdG8gdW5kby9yZWRvIHdoYXQgdGhleSB3ZXJlIHR5cGluZyAoc2VlICMxNjYyOSkuIFRoaXMgY2xhc3MgaXMgb25seSBzY29wZWQgdG8gRmlyZWZveCxcbiAgLy8gYmVjYXVzZSB0aGUgbWVhc3VyZW1lbnRzIHRoZXJlIGRvbid0IHNlZW0gdG8gYmUgYWZmZWN0ZWQgYnkgdGhlIGBoZWlnaHQ6IDBgLCB3aGVyZWFzIG9uIG90aGVyXG4gIC8vIGJyb3dzZXJzIHRoZXkgYXJlLCBlLmcuIENocm9tZSBkZXRlY3RzIGxvbmdlciB0ZXh0IGFuZCBJRSBkb2VzJ3QgcmVzaXplIGJhY2sgdG8gbm9ybWFsLlxuICAvLyBJZGVudGljYWwgaXNzdWUgcmVwb3J0OiBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD00NDg3ODRcbiAgdGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94IHtcbiAgICBAaW5jbHVkZSBfYXV0b3NpemUtbWVhc3VyaW5nLWJhc2U7XG4gICAgaGVpZ2h0OiAwICFpbXBvcnRhbnQ7XG4gIH1cbn1cblxuLy8gQ29yZSBzdHlsZXMgdGhhdCBlbmFibGUgbW9uaXRvcmluZyBhdXRvZmlsbCBzdGF0ZSBvZiB0ZXh0IGZpZWxkcy5cbkBtaXhpbiB0ZXh0LWZpZWxkLWF1dG9maWxsKCkge1xuICAvLyBLZXlmcmFtZXMgdGhhdCBhcHBseSBubyBzdHlsZXMsIGJ1dCBhbGxvdyB1cyB0byBtb25pdG9yIHdoZW4gYW4gdGV4dCBmaWVsZCBiZWNvbWVzIGF1dG9maWxsZWRcbiAgLy8gYnkgd2F0Y2hpbmcgZm9yIHRoZSBhbmltYXRpb24gZXZlbnRzIHRoYXQgYXJlIGZpcmVkIHdoZW4gdGhleSBzdGFydC4gTm90ZTogdGhlIC8qISovIGNvbW1lbnQgaXNcbiAgLy8gbmVlZGVkIHRvIHByZXZlbnQgTGliU2FzcyBmcm9tIHN0cmlwcGluZyB0aGUga2V5ZnJhbWVzIG91dC5cbiAgLy8gQmFzZWQgb246IGh0dHBzOi8vbWVkaXVtLmNvbS9AYnJ1bm4vZGV0ZWN0aW5nLWF1dG9maWxsZWQtZmllbGRzLWluLWphdmFzY3JpcHQtYWVkNTk4ZDI1ZGE3XG4gIEBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgey8qISovfVxuICBAa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCB7LyohKi99XG5cbiAgLmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZDotd2Via2l0LWF1dG9maWxsIHtcbiAgICAvLyBTaW5jZSBDaHJvbWUgODAgd2UgbmVlZCBhIDFtcyBkZWxheSwgb3IgdGhlIGFuaW1hdGlvbnN0YXJ0IGV2ZW50IHdvbid0IGZpcmUuXG4gICAgYW5pbWF0aW9uOiBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXM7XG4gIH1cblxuICAuY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCkge1xuICAgIC8vIFNpbmNlIENocm9tZSA4MCB3ZSBuZWVkIGEgMW1zIGRlbGF5LCBvciB0aGUgYW5pbWF0aW9uc3RhcnQgZXZlbnQgd29uJ3QgZmlyZS5cbiAgICBhbmltYXRpb246IGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXM7XG4gIH1cbn1cblxuQG1peGluIF9hdXRvc2l6ZS1tZWFzdXJpbmctYmFzZSB7XG4gIC8vIEhhdmluZyAycHggdG9wIGFuZCBib3R0b20gcGFkZGluZyBzZWVtcyB0byBmaXggYSBidWcgd2hlcmUgQ2hyb21lIGdldHMgYW4gaW5jb3JyZWN0XG4gIC8vIG1lYXN1cmVtZW50LiBXZSBqdXN0IGhhdmUgdG8gYWNjb3VudCBmb3IgaXQgbGF0ZXIgYW5kIHN1YnRyYWN0IGl0IG9mZiB0aGUgZmluYWwgcmVzdWx0LlxuICBwYWRkaW5nOiAycHggMCAhaW1wb3J0YW50O1xuICBib3gtc2l6aW5nOiBjb250ZW50LWJveCAhaW1wb3J0YW50O1xufVxuXG4vLyBVc2VkIHRvIGdlbmVyYXRlIFVJRHMgZm9yIGtleWZyYW1lcyB1c2VkIHRvIGNoYW5nZSB0aGUgdGV4dCBmaWVsZCBhdXRvZmlsbCBzdHlsZXMuXG4kYXV0b2ZpbGwtY29sb3ItZnJhbWUtY291bnQ6IDA7XG5cbi8vIE1peGluIHVzZWQgdG8gYXBwbHkgY3VzdG9tIGJhY2tncm91bmQgYW5kIGZvcmVncm91bmQgY29sb3JzIHRvIGFuIGF1dG9maWxsZWQgdGV4dCBmaWVsZC5cbi8vIEJhc2VkIG9uOiBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8yNzgxNTQ5L1xuLy8gcmVtb3ZpbmctaW5wdXQtYmFja2dyb3VuZC1jb2xvdXItZm9yLWNocm9tZS1hdXRvY29tcGxldGUjYW5zd2VyLTM3NDMyMjYwXG5AbWl4aW4gdGV4dC1maWVsZC1hdXRvZmlsbC1jb2xvcigkYmFja2dyb3VuZCwgJGZvcmVncm91bmQ6JycpIHtcbiAgQGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1jb2xvci0jeyRhdXRvZmlsbC1jb2xvci1mcmFtZS1jb3VudH0ge1xuICAgIHRvIHtcbiAgICAgIGJhY2tncm91bmQ6ICRiYWNrZ3JvdW5kO1xuICAgICAgQGlmICRmb3JlZ3JvdW5kICE9ICcnIHsgY29sb3I6ICRmb3JlZ3JvdW5kOyB9XG4gICAgfVxuICB9XG5cbiAgJjotd2Via2l0LWF1dG9maWxsIHtcbiAgICBhbmltYXRpb246IGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWNvbG9yLSN7JGF1dG9maWxsLWNvbG9yLWZyYW1lLWNvdW50fSBib3RoO1xuICB9XG5cbiAgJi5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWQ6LXdlYmtpdC1hdXRvZmlsbCB7XG4gICAgLy8gU2luY2UgQ2hyb21lIDgwIHdlIG5lZWQgYSAxbXMgZGVsYXkgZm9yIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0LCBvciB0aGUgYW5pbWF0aW9uc3RhcnRcbiAgICAvLyBldmVudCB3b24ndCBmaXJlLlxuICAgIGFuaW1hdGlvbjogY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zLFxuICAgICAgICAgICAgICAgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtY29sb3ItI3skYXV0b2ZpbGwtY29sb3ItZnJhbWUtY291bnR9IGJvdGg7XG4gIH1cblxuICAkYXV0b2ZpbGwtY29sb3ItZnJhbWUtY291bnQ6ICRhdXRvZmlsbC1jb2xvci1mcmFtZS1jb3VudCArIDEgIWdsb2JhbDtcbn1cblxuLy8gQGRlcHJlY2F0ZWQgVXNlIGBhdXRvc2l6ZWAgYW5kIGBhdXRvZmlsbGAgaW5zdGVhZC5cbkBtaXhpbiB0ZXh0LWZpZWxkIHtcbiAgQGluY2x1ZGUgdGV4dC1maWVsZC1hdXRvc2l6ZSgpO1xuICBAaW5jbHVkZSB0ZXh0LWZpZWxkLWF1dG9maWxsKCk7XG59XG4iLCJAdXNlICdzYXNzOm1hcCc7XG5AdXNlICcuLi9zdHlsZS9sYXlvdXQtY29tbW9uJztcblxuLy8vIE1peGluIHRoYXQgdHVybnMgb24gc3Ryb25nIGZvY3VzIGluZGljYXRvcnMuXG4vLy9cbi8vLyBAZXhhbXBsZVxuLy8vICAgLm15LWFwcCB7XG4vLy8gICAgIEBpbmNsdWRlIG1hdC1zdHJvbmctZm9jdXMtaW5kaWNhdG9ycygkY29uZmlnKTtcbi8vLyAgIH1cbkBtaXhpbiBzdHJvbmctZm9jdXMtaW5kaWNhdG9ycygkY29uZmlnOiAoKSkge1xuICAvLyBEZWZhdWx0IGZvY3VzIGluZGljYXRvciBjb25maWcuXG4gICRkZWZhdWx0LWNvbmZpZzogKFxuICAgIGJvcmRlci1zdHlsZTogc29saWQsXG4gICAgYm9yZGVyLXdpZHRoOiAzcHgsXG4gICAgYm9yZGVyLXJhZGl1czogNHB4LFxuICApO1xuXG4gIC8vIE1lcmdlIGRlZmF1bHQgY29uZmlnIHdpdGggdXNlciBjb25maWcuXG4gICRjb25maWc6IG1hcC5tZXJnZSgkZGVmYXVsdC1jb25maWcsICRjb25maWcpO1xuICAkYm9yZGVyLXN0eWxlOiBtYXAuZ2V0KCRjb25maWcsIGJvcmRlci1zdHlsZSk7XG4gICRib3JkZXItd2lkdGg6IG1hcC5nZXQoJGNvbmZpZywgYm9yZGVyLXdpZHRoKTtcbiAgJGJvcmRlci1yYWRpdXM6IG1hcC5nZXQoJGNvbmZpZywgYm9yZGVyLXJhZGl1cyk7XG5cbiAgLy8gQmFzZSBzdHlsZXMgZm9yIGZvY3VzIGluZGljYXRvcnMuXG4gIC5tYXQtZm9jdXMtaW5kaWNhdG9yOjpiZWZvcmUge1xuICAgIEBpbmNsdWRlIGxheW91dC1jb21tb24uZmlsbCgpO1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgYm9yZGVyOiAkYm9yZGVyLXdpZHRoICRib3JkZXItc3R5bGUgdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXM7XG4gIH1cblxuICAvLyBCeSBkZWZhdWx0LCBhbGwgZm9jdXMgaW5kaWNhdG9ycyBhcmUgZmx1c2ggd2l0aCB0aGUgYm91bmRpbmcgYm94IG9mIHRoZWlyXG4gIC8vIGhvc3QgZWxlbWVudC4gRm9yIHBhcnRpY3VsYXIgZWxlbWVudHMgKGxpc3RlZCBiZWxvdyksIGRlZmF1bHQgaW5zZXQvb2Zmc2V0XG4gIC8vIHZhbHVlcyBhcmUgbmVjZXNzYXJ5IHRvIGVuc3VyZSB0aGF0IHRoZSBmb2N1cyBpbmRpY2F0b3IgaXMgc3VmZmljaWVudGx5XG4gIC8vIGNvbnRyYXN0aXZlIGFuZCByZW5kZXJzIGFwcHJvcHJpYXRlbHkuXG5cbiAgLm1hdC1mb2N1cy1pbmRpY2F0b3IubWF0LWZsYXQtYnV0dG9uOjpiZWZvcmUsXG4gIC5tYXQtZm9jdXMtaW5kaWNhdG9yLm1hdC1yYWlzZWQtYnV0dG9uOjpiZWZvcmUsXG4gIC5tYXQtZm9jdXMtaW5kaWNhdG9yLm1hdC1mYWI6OmJlZm9yZSxcbiAgLm1hdC1mb2N1cy1pbmRpY2F0b3IubWF0LW1pbmktZmFiOjpiZWZvcmUsXG4gIC5tYXQtZm9jdXMtaW5kaWNhdG9yLm1hdC1jaGlwOjpiZWZvcmUsXG4gIC5tYXQtZm9jdXMtaW5kaWNhdG9yLm1hdC1zb3J0LWhlYWRlci1jb250YWluZXI6OmJlZm9yZSB7XG4gICAgbWFyZ2luOiAtKCRib3JkZXItd2lkdGggKyAycHgpO1xuICB9XG5cbiAgLm1hdC1mb2N1cy1pbmRpY2F0b3IubWF0LXN0cm9rZWQtYnV0dG9uOjpiZWZvcmUsXG4gIC5tYXQtZm9jdXMtaW5kaWNhdG9yLm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudDo6YmVmb3JlIHtcbiAgICBtYXJnaW46IC0oJGJvcmRlci13aWR0aCArIDNweCk7XG4gIH1cblxuICAubWF0LWZvY3VzLWluZGljYXRvci5tYXQtdGFiLWxpbms6OmJlZm9yZSxcbiAgLm1hdC1mb2N1cy1pbmRpY2F0b3IubWF0LXRhYi1sYWJlbDo6YmVmb3JlIHtcbiAgICBtYXJnaW46IDVweDtcbiAgfVxuXG4gIC8vIFJlbmRlciB0aGUgZm9jdXMgaW5kaWNhdG9yIG9uIGZvY3VzLiBEZWZpbmluZyBhIHBzZXVkbyBlbGVtZW50J3NcbiAgLy8gY29udGVudCB3aWxsIGNhdXNlIGl0IHRvIHJlbmRlci5cblxuICAvLyBDaGVja2JveGVzLCByYWRpb3MsIGFuZCBzbGlkZSB0b2dnbGVzIHJlbmRlciBmb2N1cyBpbmRpY2F0b3JzIHdoZW4gdGhlXG4gIC8vIGFzc29jaWF0ZWQgdmlzdWFsbHktaGlkZGVuIGlucHV0IGlzIGZvY3VzZWQuXG4gIC5tYXQtY2hlY2tib3gtaW5wdXQ6Zm9jdXMgfiAubWF0LWZvY3VzLWluZGljYXRvcjo6YmVmb3JlLFxuICAubWF0LXJhZGlvLWlucHV0OmZvY3VzIH4gLm1hdC1mb2N1cy1pbmRpY2F0b3I6OmJlZm9yZSxcbiAgLm1hdC1zbGlkZS10b2dnbGUtaW5wdXQ6Zm9jdXMgfiAubWF0LXNsaWRlLXRvZ2dsZS10aHVtYi1jb250YWluZXIgLm1hdC1mb2N1cy1pbmRpY2F0b3I6OmJlZm9yZSxcblxuICAvLyBGb3Igb3B0aW9ucywgcmVuZGVyIHRoZSBmb2N1cyBpbmRpY2F0b3Igd2hlbiB0aGUgY2xhc3MgLm1hdC1hY3RpdmVcbiAgLy8gaXMgcHJlc2VudC5cbiAgLm1hdC1mb2N1cy1pbmRpY2F0b3IubWF0LW9wdGlvbi5tYXQtYWN0aXZlOjpiZWZvcmUsXG5cbiAgLy8gRm9yIGNhbGVuZGFyIGNlbGxzLCByZW5kZXIgdGhlIGZvY3VzIGluZGljYXRvciB3aGVuIHRoZSBwYXJlbnQgY2VsbCBpc1xuICAvLyBmb2N1c2VkLlxuICAubWF0LWNhbGVuZGFyLWJvZHktY2VsbDpmb2N1cyAubWF0LWZvY3VzLWluZGljYXRvcjo6YmVmb3JlLFxuXG4gIC8vIFN0ZXBwZXIgaGVhZGVycyBoYXZlIHRoZSBmb2N1cyBpbmRpY2F0b3IgYXMgYSBkZXNjZW5kYW50LFxuICAvLyBiZWNhdXNlIGA6OmJlZm9yZWAgaXMgdXNlZCBmb3Igb3RoZXIgc3R5bGluZy5cbiAgLm1hdC1zdGVwLWhlYWRlcjpmb2N1cyAubWF0LWZvY3VzLWluZGljYXRvcjo6YmVmb3JlLFxuXG4gIC8vIEZvciBhbGwgb3RoZXIgY29tcG9uZW50cywgcmVuZGVyIHRoZSBmb2N1cyBpbmRpY2F0b3Igb24gZm9jdXMuXG4gIC5tYXQtZm9jdXMtaW5kaWNhdG9yOmZvY3VzOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICcnO1xuICB9XG59XG5cbi8vIE1peGluIHRoYXQgZW5zdXJlcyBmb2N1cyBpbmRpY2F0b3IgaG9zdCBlbGVtZW50cyBhcmUgcG9zaXRpb25lZCBzbyB0aGF0IHRoZSBmb2N1cyBpbmRpY2F0b3Jcbi8vIHBzZXVkbyBlbGVtZW50IHdpdGhpbiBpcyBwb3NpdGlvbmVkIHJlbGF0aXZlIHRvIHRoZSBob3N0LiBQcml2YXRlIG1peGluIGluY2x1ZGVkIHdpdGhpblxuLy8gYG1hdC1jb3JlYC5cbkBtaXhpbiBwcml2YXRlLXN0cm9uZy1mb2N1cy1pbmRpY2F0b3JzLXBvc2l0aW9uaW5nKCkge1xuICAubWF0LWZvY3VzLWluZGljYXRvciB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB9XG59XG4iLCJAdXNlICcuLi8uLi9jZGsvb3ZlcmxheSc7XG5AdXNlICcuLi8uLi9jZGsvYTExeSc7XG5AdXNlICcuLi8uLi9jZGsvdGV4dC1maWVsZCc7XG5cbi8vIENvcmUgc3R5bGVzIHRoYXQgY2FuIGJlIHVzZWQgdG8gYXBwbHkgbWF0ZXJpYWwgZGVzaWduIHRyZWF0bWVudHMgdG8gYW55IGVsZW1lbnQuXG5AdXNlICcuL3JpcHBsZS9yaXBwbGUnO1xuQHVzZSAnLi9mb2N1cy1pbmRpY2F0b3JzL2ZvY3VzLWluZGljYXRvcnMnO1xuQHVzZSAnLi90eXBvZ3JhcGh5L2FsbC10eXBvZ3JhcGh5JztcblxuLy8gTWl4aW4gdGhhdCByZW5kZXJzIGFsbCBvZiB0aGUgY29yZSBzdHlsZXMgdGhhdCBhcmUgbm90IHRoZW1lLWRlcGVuZGVudC5cbkBtaXhpbiBjb3JlKCR0eXBvZ3JhcGh5LWNvbmZpZzogbnVsbCkge1xuICBAaW5jbHVkZSBhbGwtdHlwb2dyYXBoeS5hbGwtY29tcG9uZW50LXR5cG9ncmFwaGllcygkdHlwb2dyYXBoeS1jb25maWcpO1xuICBAaW5jbHVkZSByaXBwbGUucmlwcGxlKCk7XG4gIEBpbmNsdWRlIGExMXkuYTExeS12aXN1YWxseS1oaWRkZW4oKTtcbiAgQGluY2x1ZGUgb3ZlcmxheS5vdmVybGF5KCk7XG4gIEBpbmNsdWRlIHRleHQtZmllbGQudGV4dC1maWVsZC1hdXRvc2l6ZSgpO1xuICBAaW5jbHVkZSB0ZXh0LWZpZWxkLnRleHQtZmllbGQtYXV0b2ZpbGwoKTtcblxuICBAaW5jbHVkZSBmb2N1cy1pbmRpY2F0b3JzLnByaXZhdGUtc3Ryb25nLWZvY3VzLWluZGljYXRvcnMtcG9zaXRpb25pbmcoKTtcbiAgQGluY2x1ZGUgX21kYy1jb3JlKCk7XG59XG5cbi8vIE1peGluIHRoYXQgcmVuZGVycyBhbGwgb2YgdGhlIGNvcmUgTURDIHN0eWxlcy4gUHJpdmF0ZSBtaXhpbiBpbmNsdWRlZCB3aXRoIGBtYXQtY29yZWAuXG5AbWl4aW4gX21kYy1jb3JlKCkge1xuICBAaW5jbHVkZSBfbWRjLXN0cm9uZy1mb2N1cy1pbmRpY2F0b3JzLXBvc2l0aW9uaW5nKCk7XG59XG5cbi8vIE1peGluIHRoYXQgZW5zdXJlcyBmb2N1cyBpbmRpY2F0b3IgaG9zdCBlbGVtZW50cyBhcmUgcG9zaXRpb25lZCBzbyB0aGF0IHRoZSBmb2N1cyBpbmRpY2F0b3Jcbi8vIHBzZXVkbyBlbGVtZW50IHdpdGhpbiBpcyBwb3NpdGlvbmVkIHJlbGF0aXZlIHRvIHRoZSBob3N0LiBQcml2YXRlIG1peGluIGluY2x1ZGVkIHdpdGhpblxuLy8gYF9tYXQtbWRjLWNvcmVgLlxuQG1peGluIF9tZGMtc3Ryb25nLWZvY3VzLWluZGljYXRvcnMtcG9zaXRpb25pbmcoKSB7XG4gIC5tYXQtbWRjLWZvY3VzLWluZGljYXRvciB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB9XG59XG4iLCJAdXNlICdzYXNzOm1hcCc7XG5AdXNlICdzYXNzOm1ldGEnO1xuQHVzZSAnLi4vdGhlbWluZy90aGVtaW5nJztcblxuLy8gQ29sb3JzIGZvciB0aGUgcmlwcGxlIGVsZW1lbnRzLlxuQG1peGluIGNvbG9yKCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAkZm9yZWdyb3VuZDogbWFwLmdldCgkY29uZmlnLCBmb3JlZ3JvdW5kKTtcbiAgJGZvcmVncm91bmQtYmFzZTogbWFwLmdldCgkZm9yZWdyb3VuZCwgYmFzZSk7XG4gICRjb2xvci1vcGFjaXR5OiAwLjE7XG5cbiAgLm1hdC1yaXBwbGUtZWxlbWVudCB7XG4gICAgLy8gSWYgdGhlIHJpcHBsZSBjb2xvciBpcyByZXNvbHZlcyB0byBhIGNvbG9yICp0eXBlKiwgd2UgY2FuIHVzZSBpdCBkaXJlY3RseSwgb3RoZXJ3aXNlXG4gICAgLy8gKGUuZy4gaXQgcmVzb2x2ZXMgdG8gYSBDU1MgdmFyaWFibGUpIHdlIGZhbGwgYmFjayB0byB1c2luZyB0aGUgY29sb3IgYW5kIHNldHRpbmcgYW4gb3BhY2l0eS5cbiAgICBAaWYgKG1ldGEudHlwZS1vZigkZm9yZWdyb3VuZC1iYXNlKSA9PSBjb2xvcikge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgkZm9yZWdyb3VuZC1iYXNlLCAkY29sb3Itb3BhY2l0eSk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRmb3JlZ3JvdW5kLWJhc2U7XG4gICAgICBvcGFjaXR5OiAkY29sb3Itb3BhY2l0eTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiB0aGVtaW5nLnByaXZhdGUtbGVnYWN5LWdldC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgQGluY2x1ZGUgdGhlbWluZy5wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LXJpcHBsZScpIHtcbiAgICAkY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkdGhlbWUpO1xuICAgIEBpZiAkY29sb3IgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBjb2xvcigkY29sb3IpO1xuICAgIH1cbiAgfVxufVxuIiwiQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnLi4vLi4vdGhlbWluZy90aGVtaW5nJztcblxuQG1peGluIGNvbG9yKCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAkaXMtZGFyay10aGVtZTogbWFwLmdldCgkY29uZmlnLCBpcy1kYXJrKTtcbiAgJHByaW1hcnk6IG1hcC5nZXQoJGNvbmZpZywgcHJpbWFyeSk7XG4gICRhY2NlbnQ6IG1hcC5nZXQoJGNvbmZpZywgYWNjZW50KTtcbiAgJHdhcm46IG1hcC5nZXQoJGNvbmZpZywgd2Fybik7XG4gICRiYWNrZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGJhY2tncm91bmQpO1xuXG4gIC8vIE5PVEUodHJhdmlza2F1Zm1hbik6IFdoaWxlIHRoZSBzcGVjIGNhbGxzIGZvciB0cmFuc2x1Y2VudCBibGFja3Mvd2hpdGVzIGZvciBkaXNhYmxlZCBjb2xvcnMsXG4gIC8vIHRoaXMgZG9lcyBub3Qgd29yayB3ZWxsIHdpdGggZWxlbWVudHMgbGF5ZXJlZCBvbiB0b3Agb2Ygb25lIGFub3RoZXIuIFRvIGdldCBhcm91bmQgdGhpcyB3ZVxuICAvLyBibGVuZCB0aGUgY29sb3JzIHRvZ2V0aGVyIGJhc2VkIG9uIHRoZSBiYXNlIGNvbG9yIGFuZCB0aGUgdGhlbWUgYmFja2dyb3VuZC5cbiAgJHdoaXRlLTMwcGN0LW9wYWNpdHktb24tZGFyazogIzY4Njg2ODtcbiAgJGJsYWNrLTI2cGN0LW9wYWNpdHktb24tbGlnaHQ6ICNiMGIwYjA7XG4gICRkaXNhYmxlZC1jb2xvcjogaWYoJGlzLWRhcmstdGhlbWUsICR3aGl0ZS0zMHBjdC1vcGFjaXR5LW9uLWRhcmssICRibGFjay0yNnBjdC1vcGFjaXR5LW9uLWxpZ2h0KTtcbiAgJGNvbG9yZWQtYm94LXNlbGVjdG9yOiAnLm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZCwgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZSc7XG5cbiAgLm1hdC1wc2V1ZG8tY2hlY2tib3gge1xuICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUobWFwLmdldCgkY29uZmlnLCBmb3JlZ3JvdW5kKSwgc2Vjb25kYXJ5LXRleHQpO1xuXG4gICAgJjo6YWZ0ZXIge1xuICAgICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYmFja2dyb3VuZCwgYmFja2dyb3VuZCk7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1wc2V1ZG8tY2hlY2tib3gtZGlzYWJsZWQge1xuICAgIGNvbG9yOiAkZGlzYWJsZWQtY29sb3I7XG4gIH1cblxuICAubWF0LXByaW1hcnkgLm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZCxcbiAgLm1hdC1wcmltYXJ5IC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGUge1xuICAgIGJhY2tncm91bmQ6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZShtYXAuZ2V0KCRjb25maWcsIHByaW1hcnkpKTtcbiAgfVxuXG4gIC8vIERlZmF1bHQgdG8gdGhlIGFjY2VudCBjb2xvci4gTm90ZSB0aGF0IHRoZSBwc2V1ZG8gY2hlY2tib3hlcyBhcmUgbWVhbnQgdG8gaW5oZXJpdCB0aGVcbiAgLy8gdGhlbWUgZnJvbSB0aGVpciBwYXJlbnQsIHJhdGhlciB0aGFuIGltcGxlbWVudGluZyB0aGVpciBvd24gdGhlbWluZywgd2hpY2ggaXMgd2h5IHdlXG4gIC8vIGRvbid0IGF0dGFjaCB0byB0aGUgYG1hdC0qYCBjbGFzc2VzLiBBbHNvIG5vdGUgdGhhdCB0aGlzIG5lZWRzIHRvIGJlIGJlbG93IGAubWF0LXByaW1hcnlgXG4gIC8vIGluIG9yZGVyIHRvIGFsbG93IGZvciB0aGUgY29sb3IgdG8gYmUgb3ZlcndyaXR0ZW4gaWYgdGhlIGNoZWNrYm94IGlzIGluc2lkZSBhIHBhcmVudCB0aGF0XG4gIC8vIGhhcyBgbWF0LWFjY2VudGAgYW5kIGlzIHBsYWNlZCBpbnNpZGUgYW5vdGhlciBwYXJlbnQgdGhhdCBoYXMgYG1hdC1wcmltYXJ5YC5cbiAgLm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZCxcbiAgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZSxcbiAgLm1hdC1hY2NlbnQgLm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZCxcbiAgLm1hdC1hY2NlbnQgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZSB7XG4gICAgYmFja2dyb3VuZDogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKG1hcC5nZXQoJGNvbmZpZywgYWNjZW50KSk7XG4gIH1cblxuICAubWF0LXdhcm4gLm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZCxcbiAgLm1hdC13YXJuIC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGUge1xuICAgIGJhY2tncm91bmQ6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZShtYXAuZ2V0KCRjb25maWcsIHdhcm4pKTtcbiAgfVxuXG4gIC5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWQsXG4gIC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGUge1xuICAgICYubWF0LXBzZXVkby1jaGVja2JveC1kaXNhYmxlZCB7XG4gICAgICBiYWNrZ3JvdW5kOiAkZGlzYWJsZWQtY29sb3I7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiB0eXBvZ3JhcGh5KCRjb25maWctb3ItdGhlbWUpIHt9XG5cbkBtaXhpbiBfZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZykge1xuICAkdGhlbWU6IHRoZW1pbmcucHJpdmF0ZS1sZWdhY3ktZ2V0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICBAaW5jbHVkZSB0aGVtaW5nLnByaXZhdGUtY2hlY2stZHVwbGljYXRlLXRoZW1lLXN0eWxlcygkdGhlbWUsICdtYXQtcHNldWRvLWNoZWNrYm94Jykge1xuICAgICRjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgJGRlbnNpdHk6IHRoZW1pbmcuZ2V0LWRlbnNpdHktY29uZmlnKCR0aGVtZSk7XG4gICAgJHR5cG9ncmFwaHk6IHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCR0aGVtZSk7XG5cbiAgICBAaWYgJGNvbG9yICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgX2RlbnNpdHkoJGRlbnNpdHkpO1xuICAgIH1cbiAgICBAaWYgJHR5cG9ncmFwaHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5KCR0eXBvZ3JhcGh5KTtcbiAgICB9XG4gIH1cbn1cbiIsIkB1c2UgJ3Nhc3M6bWFwJztcbkB1c2UgJ3RoZW1pbmcvdGhlbWluZyc7XG5AdXNlICcuL3N0eWxlL3ByaXZhdGUnO1xuQHVzZSAnLi9yaXBwbGUvcmlwcGxlLXRoZW1lJztcbkB1c2UgJy4vb3B0aW9uL29wdGlvbi10aGVtZSc7XG5AdXNlICcuL29wdGlvbi9vcHRncm91cC10aGVtZSc7XG5AdXNlICcuL3NlbGVjdGlvbi9wc2V1ZG8tY2hlY2tib3gvcHNldWRvLWNoZWNrYm94LXRoZW1lJztcbkB1c2UgJy4vc3R5bGUvZWxldmF0aW9uJztcblxuXG5AbWl4aW4gY29sb3IoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gIC8vIFdyYXBwZXIgZWxlbWVudCB0aGF0IHByb3ZpZGVzIHRoZSB0aGVtZSBiYWNrZ3JvdW5kIHdoZW4gdGhlIHVzZXIncyBjb250ZW50IGlzbid0XG4gIC8vIGluc2lkZSBvZiBhIGBtYXQtc2lkZW5hdi1jb250YWluZXJgLiBOb3RlIHRoYXQgd2UgbmVlZCB0byBleGNsdWRlIHRoZSBhbXBlcnNhbmRcbiAgLy8gc2VsZWN0b3IgaW4gY2FzZSB0aGUgbWl4aW4gaXMgaW5jbHVkZWQgYXQgdGhlIHRvcCBsZXZlbC5cbiAgLm1hdC1hcHAtYmFja2dyb3VuZCN7aWYoJiwgJywgJi5tYXQtYXBwLWJhY2tncm91bmQnLCAnJyl9IHtcbiAgICAkYmFja2dyb3VuZDogbWFwLmdldCgkY29uZmlnLCBiYWNrZ3JvdW5kKTtcbiAgICAkZm9yZWdyb3VuZDogbWFwLmdldCgkY29uZmlnLCBmb3JlZ3JvdW5kKTtcblxuICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYmFja2dyb3VuZCwgYmFja2dyb3VuZCk7XG4gICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgdGV4dCk7XG4gIH1cblxuICAvLyBQcm92aWRlcyBleHRlcm5hbCBDU1MgY2xhc3NlcyBmb3IgZWFjaCBlbGV2YXRpb24gdmFsdWUuIEVhY2ggQ1NTIGNsYXNzIGlzIGZvcm1hdHRlZCBhc1xuICAvLyBgbWF0LWVsZXZhdGlvbi16JHpWYWx1ZWAgd2hlcmUgYCR6VmFsdWVgIGNvcnJlc3BvbmRzIHRvIHRoZSB6LXNwYWNlIHRvIHdoaWNoIHRoZSBlbGVtZW50IGlzXG4gIC8vIGVsZXZhdGVkLlxuICBAZm9yICR6VmFsdWUgZnJvbSAwIHRocm91Z2ggMjQge1xuICAgIC4je2VsZXZhdGlvbi4kcHJlZml4fSN7JHpWYWx1ZX0ge1xuICAgICAgQGluY2x1ZGUgcHJpdmF0ZS5wcml2YXRlLXRoZW1lLWVsZXZhdGlvbigkelZhbHVlLCAkY29uZmlnKTtcbiAgICB9XG4gIH1cblxuICAvLyBNYXJrZXIgdGhhdCBpcyB1c2VkIHRvIGRldGVybWluZSB3aGV0aGVyIHRoZSB1c2VyIGhhcyBhZGRlZCBhIHRoZW1lIHRvIHRoZWlyIHBhZ2UuXG4gIEBhdC1yb290IHtcbiAgICAubWF0LXRoZW1lLWxvYWRlZC1tYXJrZXIge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gIH1cbn1cblxuLy8gTWl4aW4gdGhhdCByZW5kZXJzIGFsbCBvZiB0aGUgY29yZSBzdHlsZXMgdGhhdCBkZXBlbmQgb24gdGhlIHRoZW1lLlxuQG1peGluIHRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiB0aGVtaW5nLnByaXZhdGUtbGVnYWN5LWdldC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgLy8gV3JhcCB0aGUgc3ViLXRoZW1lIGluY2x1ZGVzIGluIHRoZSBkdXBsaWNhdGUgdGhlbWUgc3R5bGVzIG1peGluLiBUaGlzIGVuc3VyZXMgdGhhdFxuICAvLyB0aGVyZSB3b24ndCBiZSBtdWx0aXBsZSB3YXJuaW5ncy4gZS5nLiBpZiBgbWF0LWNvcmUtdGhlbWVgIHJlcG9ydHMgYSB3YXJuaW5nLCB0aGVuXG4gIC8vIHRoZSBpbXBvcnRlZCB0aGVtZXMgKHN1Y2ggYXMgYG1hdC1yaXBwbGUtdGhlbWVgKSBzaG91bGQgbm90IHJlcG9ydCBhZ2Fpbi5cbiAgQGluY2x1ZGUgdGhlbWluZy5wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LWNvcmUnKSB7XG4gICAgQGluY2x1ZGUgcmlwcGxlLXRoZW1lLnRoZW1lKCR0aGVtZSk7XG4gICAgQGluY2x1ZGUgb3B0aW9uLXRoZW1lLnRoZW1lKCR0aGVtZSk7XG4gICAgQGluY2x1ZGUgb3B0Z3JvdXAtdGhlbWUudGhlbWUoJHRoZW1lKTtcbiAgICBAaW5jbHVkZSBwc2V1ZG8tY2hlY2tib3gtdGhlbWUudGhlbWUoJHRoZW1lKTtcblxuICAgICRjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgQGlmICRjb2xvciAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIGNvbG9yKCRjb2xvcik7XG4gICAgfVxuICB9XG59XG4iLCJAdXNlICdzYXNzOm1hcCc7XG5AdXNlICdzYXNzOm1hdGgnO1xuQHVzZSAnc2FzczptZXRhJztcbkB1c2UgJ3ZhcmlhYmxlcyc7XG5cblxuLy8gQSBjb2xsZWN0aW9uIG9mIG1peGlucyBhbmQgQ1NTIGNsYXNzZXMgdGhhdCBjYW4gYmUgdXNlZCB0byBhcHBseSBlbGV2YXRpb24gdG8gYSBtYXRlcmlhbFxuLy8gZWxlbWVudC5cbi8vIFNlZTogaHR0cHM6Ly9tYXRlcmlhbC5pby9kZXNpZ24vZW52aXJvbm1lbnQvZWxldmF0aW9uLmh0bWxcbi8vIEV4YW1wbGVzOlxuLy9cbi8vXG4vLyAubWF0LWZvbyB7XG4vLyAgIEBpbmNsdWRlICRtYXQtZWxldmF0aW9uKDIpO1xuLy9cbi8vICAgJjphY3RpdmUge1xuLy8gICAgIEBpbmNsdWRlICRtYXQtZWxldmF0aW9uKDgpO1xuLy8gICB9XG4vLyB9XG4vL1xuLy8gPGRpdiBpZD1cImV4dGVybmFsLWNhcmRcIiBjbGFzcz1cIm1hdC1lbGV2YXRpb24tejJcIj48cD5Tb21lIGNvbnRlbnQ8L3A+PC9kaXY+XG4vL1xuLy8gRm9yIGFuIGV4cGxhbmF0aW9uIG9mIHRoZSBkZXNpZ24gYmVoaW5kIGhvdyBlbGV2YXRpb24gaXMgaW1wbGVtZW50ZWQsIHNlZSB0aGUgZGVzaWduIGRvYyBhdFxuLy8gaHR0cHM6Ly9nb28uZ2wvS3EwazlaLlxuXG4vLyBDb2xvcnMgZm9yIHVtYnJhLCBwZW51bWJyYSwgYW5kIGFtYmllbnQgc2hhZG93cy4gQXMgZGVzY3JpYmVkIGluIHRoZSBkZXNpZ24gZG9jLCBlYWNoIGVsZXZhdGlvblxuLy8gbGV2ZWwgaXMgY3JlYXRlZCB1c2luZyBhIHNldCBvZiAzIHNoYWRvdyB2YWx1ZXMsIG9uZSBmb3IgdW1icmEgKHRoZSBzaGFkb3cgcmVwcmVzZW50aW5nIHRoZVxuLy8gc3BhY2UgY29tcGxldGVseSBvYnNjdXJlZCBieSBhbiBvYmplY3QgcmVsYXRpdmUgdG8gaXRzIGxpZ2h0IHNvdXJjZSksIG9uZSBmb3IgcGVudW1icmEgKHRoZVxuLy8gc3BhY2UgcGFydGlhbGx5IG9ic2N1cmVkIGJ5IGFuIG9iamVjdCksIGFuZCBvbmUgZm9yIGFtYmllbnQgKHRoZSBzcGFjZSB3aGljaCBjb250YWlucyB0aGUgb2JqZWN0XG4vLyBpdHNlbGYpLiBGb3IgYSBmdXJ0aGVyIGV4cGxhbmF0aW9uIG9mIHRoZXNlIHRlcm1zIGFuZCB0aGVpciBtZWFuaW5ncywgc2VlXG4vLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9VbWJyYSxfcGVudW1icmFfYW5kX2FudHVtYnJhLlxuXG4vLyBNYXBzIGZvciB0aGUgZGlmZmVyZW50IHNoYWRvdyBzZXRzIGFuZCB0aGVpciB2YWx1ZXMgd2l0aGluIGVhY2ggei1zcGFjZS4gVGhlc2UgdmFsdWVzIHdlcmVcbi8vIGNyZWF0ZWQgYnkgdGFraW5nIGEgZmV3IHJlZmVyZW5jZSBzaGFkb3cgc2V0cyBjcmVhdGVkIGJ5IEdvb2dsZSdzIERlc2lnbmVycyBhbmQgaW50ZXJwb2xhdGluZ1xuLy8gYWxsIG9mIHRoZSB2YWx1ZXMgYmV0d2VlbiB0aGVtLlxuXG5AZnVuY3Rpb24gX2dldC11bWJyYS1tYXAoJGNvbG9yLCAkb3BhY2l0eSkge1xuICAkc2hhZG93LWNvbG9yOiBpZihtZXRhLnR5cGUtb2YoJGNvbG9yKSA9PSBjb2xvciwgcmdiYSgkY29sb3IsICRvcGFjaXR5ICogMC4yKSwgJGNvbG9yKTtcblxuICBAcmV0dXJuIChcbiAgICAwOiAnMHB4IDBweCAwcHggMHB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDE6ICcwcHggMnB4IDFweCAtMXB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDI6ICcwcHggM3B4IDFweCAtMnB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDM6ICcwcHggM3B4IDNweCAtMnB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDQ6ICcwcHggMnB4IDRweCAtMXB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDU6ICcwcHggM3B4IDVweCAtMXB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDY6ICcwcHggM3B4IDVweCAtMXB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDc6ICcwcHggNHB4IDVweCAtMnB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDg6ICcwcHggNXB4IDVweCAtM3B4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDk6ICcwcHggNXB4IDZweCAtM3B4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDEwOiAnMHB4IDZweCA2cHggLTNweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAxMTogJzBweCA2cHggN3B4IC00cHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMTI6ICcwcHggN3B4IDhweCAtNHB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDEzOiAnMHB4IDdweCA4cHggLTRweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAxNDogJzBweCA3cHggOXB4IC00cHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMTU6ICcwcHggOHB4IDlweCAtNXB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDE2OiAnMHB4IDhweCAxMHB4IC01cHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMTc6ICcwcHggOHB4IDExcHggLTVweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAxODogJzBweCA5cHggMTFweCAtNXB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDE5OiAnMHB4IDlweCAxMnB4IC02cHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMjA6ICcwcHggMTBweCAxM3B4IC02cHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMjE6ICcwcHggMTBweCAxM3B4IC02cHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMjI6ICcwcHggMTBweCAxNHB4IC02cHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMjM6ICcwcHggMTFweCAxNHB4IC03cHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMjQ6ICcwcHggMTFweCAxNXB4IC03cHggI3skc2hhZG93LWNvbG9yfSdcbiAgKTtcbn1cblxuQGZ1bmN0aW9uIF9nZXQtcGVudW1icmEtbWFwKCRjb2xvciwgJG9wYWNpdHkpIHtcbiAgJHNoYWRvdy1jb2xvcjogaWYobWV0YS50eXBlLW9mKCRjb2xvcikgPT0gY29sb3IsIHJnYmEoJGNvbG9yLCAkb3BhY2l0eSAqIDAuMTQpLCAkY29sb3IpO1xuXG4gIEByZXR1cm4gKFxuICAgIDA6ICcwcHggMHB4IDBweCAwcHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMTogJzBweCAxcHggMXB4IDBweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAyOiAnMHB4IDJweCAycHggMHB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDM6ICcwcHggM3B4IDRweCAwcHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgNDogJzBweCA0cHggNXB4IDBweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICA1OiAnMHB4IDVweCA4cHggMHB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDY6ICcwcHggNnB4IDEwcHggMHB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDc6ICcwcHggN3B4IDEwcHggMXB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDg6ICcwcHggOHB4IDEwcHggMXB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDk6ICcwcHggOXB4IDEycHggMXB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDEwOiAnMHB4IDEwcHggMTRweCAxcHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMTE6ICcwcHggMTFweCAxNXB4IDFweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAxMjogJzBweCAxMnB4IDE3cHggMnB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDEzOiAnMHB4IDEzcHggMTlweCAycHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMTQ6ICcwcHggMTRweCAyMXB4IDJweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAxNTogJzBweCAxNXB4IDIycHggMnB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDE2OiAnMHB4IDE2cHggMjRweCAycHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMTc6ICcwcHggMTdweCAyNnB4IDJweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAxODogJzBweCAxOHB4IDI4cHggMnB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDE5OiAnMHB4IDE5cHggMjlweCAycHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMjA6ICcwcHggMjBweCAzMXB4IDNweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAyMTogJzBweCAyMXB4IDMzcHggM3B4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDIyOiAnMHB4IDIycHggMzVweCAzcHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMjM6ICcwcHggMjNweCAzNnB4IDNweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAyNDogJzBweCAyNHB4IDM4cHggM3B4ICN7JHNoYWRvdy1jb2xvcn0nXG4gICk7XG59XG5cbkBmdW5jdGlvbiBfZ2V0LWFtYmllbnQtbWFwKCRjb2xvciwgJG9wYWNpdHkpIHtcbiAgJHNoYWRvdy1jb2xvcjogaWYobWV0YS50eXBlLW9mKCRjb2xvcikgPT0gY29sb3IsIHJnYmEoJGNvbG9yLCAkb3BhY2l0eSAqIDAuMTIpLCAkY29sb3IpO1xuXG4gIEByZXR1cm4gKFxuICAgIDA6ICcwcHggMHB4IDBweCAwcHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMTogJzBweCAxcHggM3B4IDBweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAyOiAnMHB4IDFweCA1cHggMHB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDM6ICcwcHggMXB4IDhweCAwcHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgNDogJzBweCAxcHggMTBweCAwcHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgNTogJzBweCAxcHggMTRweCAwcHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgNjogJzBweCAxcHggMThweCAwcHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgNzogJzBweCAycHggMTZweCAxcHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgODogJzBweCAzcHggMTRweCAycHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgOTogJzBweCAzcHggMTZweCAycHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMTA6ICcwcHggNHB4IDE4cHggM3B4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDExOiAnMHB4IDRweCAyMHB4IDNweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAxMjogJzBweCA1cHggMjJweCA0cHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMTM6ICcwcHggNXB4IDI0cHggNHB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDE0OiAnMHB4IDVweCAyNnB4IDRweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAxNTogJzBweCA2cHggMjhweCA1cHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMTY6ICcwcHggNnB4IDMwcHggNXB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDE3OiAnMHB4IDZweCAzMnB4IDVweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAxODogJzBweCA3cHggMzRweCA2cHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMTk6ICcwcHggN3B4IDM2cHggNnB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDIwOiAnMHB4IDhweCAzOHB4IDdweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAyMTogJzBweCA4cHggNDBweCA3cHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMjI6ICcwcHggOHB4IDQycHggN3B4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDIzOiAnMHB4IDlweCA0NHB4IDhweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAyNDogJzBweCA5cHggNDZweCA4cHggI3skc2hhZG93LWNvbG9yfSdcbiAgKTtcbn1cblxuLy8gVGhlIGRlZmF1bHQgZHVyYXRpb24gdmFsdWUgZm9yIGVsZXZhdGlvbiB0cmFuc2l0aW9ucy5cbiR0cmFuc2l0aW9uLWR1cmF0aW9uOiAyODBtcyAhZGVmYXVsdDtcblxuLy8gVGhlIGRlZmF1bHQgZWFzaW5nIHZhbHVlIGZvciBlbGV2YXRpb24gdHJhbnNpdGlvbnMuXG4kdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IHZhcmlhYmxlcy4kZmFzdC1vdXQtc2xvdy1pbi10aW1pbmctZnVuY3Rpb247XG5cbi8vIFRoZSBkZWZhdWx0IGNvbG9yIGZvciBlbGV2YXRpb24gc2hhZG93cy5cbiRjb2xvcjogYmxhY2sgIWRlZmF1bHQ7XG5cbi8vIFRoZSBkZWZhdWx0IG9wYWNpdHkgc2NhbGluZyB2YWx1ZSBmb3IgZWxldmF0aW9uIHNoYWRvd3MuXG4kb3BhY2l0eTogMSAhZGVmYXVsdDtcblxuLy8gUHJlZml4IGZvciBlbGV2YXRpb24tcmVsYXRlZCBzZWxlY3RvcnMuXG4kcHJlZml4OiAnbWF0LWVsZXZhdGlvbi16JztcblxuLy8gQXBwbGllcyB0aGUgY29ycmVjdCBjc3MgcnVsZXMgdG8gYW4gZWxlbWVudCB0byBnaXZlIGl0IHRoZSBlbGV2YXRpb24gc3BlY2lmaWVkIGJ5ICR6VmFsdWUuXG4vLyBUaGUgJHpWYWx1ZSBtdXN0IGJlIGJldHdlZW4gMCBhbmQgMjQuXG5AbWl4aW4gZWxldmF0aW9uKCR6VmFsdWUsICRjb2xvcjogJGNvbG9yLCAkb3BhY2l0eTogJG9wYWNpdHkpIHtcbiAgQGlmIG1ldGEudHlwZS1vZigkelZhbHVlKSAhPSBudW1iZXIgb3Igbm90IG1hdGguaXMtdW5pdGxlc3MoJHpWYWx1ZSkge1xuICAgIEBlcnJvciAnJHpWYWx1ZSBtdXN0IGJlIGEgdW5pdGxlc3MgbnVtYmVyJztcbiAgfVxuICBAaWYgJHpWYWx1ZSA8IDAgb3IgJHpWYWx1ZSA+IDI0IHtcbiAgICBAZXJyb3IgJyR6VmFsdWUgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDI0JztcbiAgfVxuXG4gIGJveC1zaGFkb3c6ICN7bWFwLmdldChfZ2V0LXVtYnJhLW1hcCgkY29sb3IsICRvcGFjaXR5KSwgJHpWYWx1ZSl9LFxuICAgICAgICAgICAgICAje21hcC5nZXQoX2dldC1wZW51bWJyYS1tYXAoJGNvbG9yLCAkb3BhY2l0eSksICR6VmFsdWUpfSxcbiAgICAgICAgICAgICAgI3ttYXAuZ2V0KF9nZXQtYW1iaWVudC1tYXAoJGNvbG9yLCAkb3BhY2l0eSksICR6VmFsdWUpfTtcbn1cblxuLy8gQXBwbGllcyB0aGUgZWxldmF0aW9uIHRvIGFuIGVsZW1lbnQgaW4gYSBtYW5uZXIgdGhhdCBhbGxvd3Ncbi8vIGNvbnN1bWVycyB0byBvdmVycmlkZSBpdCB2aWEgdGhlIE1hdGVyaWFsIGVsZXZhdGlvbiBjbGFzc2VzLlxuQG1peGluIG92ZXJyaWRhYmxlLWVsZXZhdGlvbihcbiAgICAkelZhbHVlLFxuICAgICRjb2xvcjogJGNvbG9yLFxuICAgICRvcGFjaXR5OiAkb3BhY2l0eSkge1xuICAmOm5vdChbY2xhc3MqPScjeyRwcmVmaXh9J10pIHtcbiAgICBAaW5jbHVkZSBlbGV2YXRpb24oJHpWYWx1ZSwgJGNvbG9yLCAkb3BhY2l0eSk7XG4gIH1cbn1cblxuLy8gUmV0dXJucyBhIHN0cmluZyB0aGF0IGNhbiBiZSB1c2VkIGFzIHRoZSB2YWx1ZSBmb3IgYSB0cmFuc2l0aW9uIHByb3BlcnR5IGZvciBlbGV2YXRpb24uXG4vLyBDYWxsaW5nIHRoaXMgZnVuY3Rpb24gZGlyZWN0bHkgaXMgdXNlZnVsIGluIHNpdHVhdGlvbnMgd2hlcmUgYSBjb21wb25lbnQgbmVlZHMgdG8gdHJhbnNpdGlvblxuLy8gbW9yZSB0aGFuIG9uZSBwcm9wZXJ0eS5cbi8vXG4vLyAuZm9vIHtcbi8vICAgdHJhbnNpdGlvbjogbWF0LWVsZXZhdGlvbi10cmFuc2l0aW9uLXByb3BlcnR5LXZhbHVlKCksIG9wYWNpdHkgMTAwbXMgZWFzZTtcbi8vIH1cbkBmdW5jdGlvbiBwcml2YXRlLXRyYW5zaXRpb24tcHJvcGVydHktdmFsdWUoXG4gICAgJGR1cmF0aW9uOiAkdHJhbnNpdGlvbi1kdXJhdGlvbixcbiAgICAkZWFzaW5nOiAkdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24pIHtcbiAgQHJldHVybiBib3gtc2hhZG93ICN7JGR1cmF0aW9ufSAjeyRlYXNpbmd9O1xufVxuXG4vLyBBcHBsaWVzIHRoZSBjb3JyZWN0IGNzcyBydWxlcyBuZWVkZWQgdG8gaGF2ZSBhbiBlbGVtZW50IHRyYW5zaXRpb24gYmV0d2VlbiBlbGV2YXRpb25zLlxuLy8gVGhpcyBtaXhpbiBzaG91bGQgYmUgYXBwbGllZCB0byBlbGVtZW50cyB3aG9zZSBlbGV2YXRpb24gdmFsdWVzIHdpbGwgY2hhbmdlIGRlcGVuZGluZyBvbiB0aGVpclxuLy8gY29udGV4dCAoZS5nLiB3aGVuIGFjdGl2ZSBvciBkaXNhYmxlZCkuXG4vL1xuLy8gTk9URSh0cmF2aXNrYXVmbWFuKTogQm90aCB0aGlzIG1peGluIGFuZCB0aGUgYWJvdmUgZnVuY3Rpb24gdXNlIGRlZmF1bHQgcGFyYW1ldGVycyBzbyB0aGV5IGNhblxuLy8gYmUgdXNlZCBpbiB0aGUgc2FtZSB3YXkgYnkgY2xpZW50cy5cbkBtaXhpbiBlbGV2YXRpb24tdHJhbnNpdGlvbihcbiAgICAkZHVyYXRpb246ICR0cmFuc2l0aW9uLWR1cmF0aW9uLFxuICAgICRlYXNpbmc6ICR0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbikge1xuICB0cmFuc2l0aW9uOiBwcml2YXRlLXRyYW5zaXRpb24tcHJvcGVydHktdmFsdWUoJGR1cmF0aW9uLCAkZWFzaW5nKTtcbn1cbiIsIkB1c2UgJ3Nhc3M6bWFwJztcbkB1c2UgJy4uL2NvcmUvc3R5bGUvcHJpdmF0ZSc7XG5AdXNlICcuLi9jb3JlL3RoZW1pbmcvdGhlbWluZyc7XG5cbkBtaXhpbiBjb2xvcigkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJGZvcmVncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgZm9yZWdyb3VuZCk7XG4gICRiYWNrZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGJhY2tncm91bmQpO1xuXG4gIC5tYXQtYXV0b2NvbXBsZXRlLXBhbmVsIHtcbiAgICBAaW5jbHVkZSBwcml2YXRlLnByaXZhdGUtdGhlbWUtb3ZlcnJpZGFibGUtZWxldmF0aW9uKDQsICRjb25maWcpO1xuICAgIGJhY2tncm91bmQ6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYmFja2dyb3VuZCwgY2FyZCk7XG4gICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgdGV4dCk7XG5cbiAgICAvLyBTZWxlY3RlZCBvcHRpb25zIGluIGF1dG9jb21wbGV0ZXMgc2hvdWxkIG5vdCBiZSBncmF5LCBidXQgd2VcbiAgICAvLyBvbmx5IHdhbnQgdG8gb3ZlcnJpZGUgdGhlIGJhY2tncm91bmQgZm9yIHNlbGVjdGVkIG9wdGlvbnMgaWZcbiAgICAvLyB0aGV5IGFyZSAqbm90KiBpbiBob3ZlciBvciBmb2N1cyBzdGF0ZS4gVGhpcyBjaGFuZ2UgaGFzIHRvIGJlXG4gICAgLy8gbWFkZSBoZXJlIGJlY2F1c2UgYmFzZSBvcHRpb24gc3R5bGVzIGFyZSBzaGFyZWQgYmV0d2VlbiB0aGVcbiAgICAvLyBhdXRvY29tcGxldGUgYW5kIHRoZSBzZWxlY3QuXG4gICAgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkOm5vdCgubWF0LWFjdGl2ZSk6bm90KDpob3Zlcikge1xuICAgICAgYmFja2dyb3VuZDogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLCBjYXJkKTtcblxuICAgICAgJjpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpIHtcbiAgICAgICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgdGV4dCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiB0eXBvZ3JhcGh5KCRjb25maWctb3ItdGhlbWUpIHt9XG5cbkBtaXhpbiBfZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZykge1xuICAkdGhlbWU6IHRoZW1pbmcucHJpdmF0ZS1sZWdhY3ktZ2V0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICBAaW5jbHVkZSB0aGVtaW5nLnByaXZhdGUtY2hlY2stZHVwbGljYXRlLXRoZW1lLXN0eWxlcygkdGhlbWUsICdtYXQtYXV0b2NvbXBsZXRlJykge1xuICAgICRjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgJGRlbnNpdHk6IHRoZW1pbmcuZ2V0LWRlbnNpdHktY29uZmlnKCR0aGVtZSk7XG4gICAgJHR5cG9ncmFwaHk6IHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCR0aGVtZSk7XG5cbiAgICBAaWYgJGNvbG9yICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgX2RlbnNpdHkoJGRlbnNpdHkpO1xuICAgIH1cbiAgICBAaWYgJHR5cG9ncmFwaHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5KCR0eXBvZ3JhcGh5KTtcbiAgICB9XG4gIH1cbn1cbiIsIkB1c2UgJ3Nhc3M6bWFwJztcbkB1c2UgJy4uL2NvcmUvdGhlbWluZy90aGVtaW5nJztcblxuQG1peGluIGNvbG9yKCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAkZm9yZWdyb3VuZDogbWFwLmdldCgkY29uZmlnLCBmb3JlZ3JvdW5kKTtcblxuICAubWF0LWRpdmlkZXIge1xuICAgIGJvcmRlci10b3AtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgZGl2aWRlcik7XG4gIH1cblxuICAubWF0LWRpdmlkZXItdmVydGljYWwge1xuICAgIGJvcmRlci1yaWdodC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBkaXZpZGVyKTtcbiAgfVxufVxuXG5AbWl4aW4gdHlwb2dyYXBoeSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gX2RlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIHRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiB0aGVtaW5nLnByaXZhdGUtbGVnYWN5LWdldC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgQGluY2x1ZGUgdGhlbWluZy5wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LWRpdmlkZXInKSB7XG4gICAgJGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJHRoZW1lKTtcbiAgICAkZGVuc2l0eTogdGhlbWluZy5nZXQtZGVuc2l0eS1jb25maWcoJHRoZW1lKTtcbiAgICAkdHlwb2dyYXBoeTogdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJHRoZW1lKTtcblxuICAgIEBpZiAkY29sb3IgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBjb2xvcigkY29sb3IpO1xuICAgIH1cbiAgICBAaWYgJGRlbnNpdHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBfZGVuc2l0eSgkZGVuc2l0eSk7XG4gICAgfVxuICAgIEBpZiAkdHlwb2dyYXBoeSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIHR5cG9ncmFwaHkoJHR5cG9ncmFwaHkpO1xuICAgIH1cbiAgfVxufVxuIiwiQG1peGluIHByaXZhdGUtZXhwYW5zaW9uLWZvY3VzIHtcbiAgLm1hdC1leHBhbnNpb24tcGFuZWwge1xuICAgICYgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLmNkay1rZXlib2FyZC1mb2N1c2VkLFxuICAgICYgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLmNkay1wcm9ncmFtLWZvY3VzZWQsXG4gICAgJjpub3QoLm1hdC1leHBhbmRlZCkgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyOmhvdmVyIHtcbiAgICAgICY6bm90KFthcmlhLWRpc2FibGVkPSd0cnVlJ10pIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCJAdXNlICdzYXNzOm1hcCc7XG5AdXNlICcuLi90aGVtaW5nL3RoZW1pbmcnO1xuXG4vLyBSZW5kZXJzIGEgZ3JhZGllbnQgZm9yIHNob3dpbmcgdGhlIGRhc2hlZCBsaW5lIHdoZW4gdGhlIGlucHV0IGlzIGRpc2FibGVkLlxuLy8gVW5saWtlIHVzaW5nIGEgYm9yZGVyLCBhIGdyYWRpZW50IGFsbG93cyB1cyB0byBhZGp1c3QgdGhlIHNwYWNpbmcgb2YgdGhlIGRvdHRlZCBsaW5lXG4vLyB0byBtYXRjaCB0aGUgTWF0ZXJpYWwgRGVzaWduIHNwZWMuXG5AbWl4aW4gcHJpdmF0ZS1jb250cm9sLWRpc2FibGVkLXVuZGVybGluZSgkY29sb3IpIHtcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCAkY29sb3IgMCUsICRjb2xvciAzMyUsIHRyYW5zcGFyZW50IDAlKTtcbiAgYmFja2dyb3VuZC1zaXplOiA0cHggMTAwJTtcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14O1xufVxuXG4vLyBGaWd1cmVzIG91dCB0aGUgY29sb3Igb2YgdGhlIHBsYWNlaG9sZGVyIGZvciBhIGZvcm0gY29udHJvbC5cbi8vIFVzZWQgcHJpbWFyaWx5IHRvIHByZXZlbnQgdGhlIHZhcmlvdXMgZm9ybSBjb250cm9scyBmcm9tXG4vLyBiZWNvbWluZyBvdXQgb2Ygc3luYyBzaW5jZSB0aGVzZSBjb2xvcnMgYXJlbid0IGluIGEgcGFsZXR0ZS5cbkBmdW5jdGlvbiBwcml2YXRlLWNvbnRyb2wtcGxhY2Vob2xkZXItY29sb3IoJGNvbmZpZykge1xuICAkZm9yZWdyb3VuZDogbWFwLmdldCgkY29uZmlnLCBmb3JlZ3JvdW5kKTtcbiAgJGlzLWRhcmstdGhlbWU6IG1hcC5nZXQoJGNvbmZpZywgaXMtZGFyayk7XG4gIEByZXR1cm4gdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBzZWNvbmRhcnktdGV4dCxcbiAgICBpZigkaXMtZGFyay10aGVtZSwgMC41LCAwLjQyKSk7XG59XG4iLCJAdXNlICdzYXNzOm1hcCc7XG5AdXNlICcuLi9jb3JlL3RoZW1pbmcvdGhlbWluZyc7XG5AdXNlICcuLi9jb3JlL3N0eWxlL2Zvcm0tY29tbW9uJztcblxuXG4vLyBUaGVtZSBzdHlsZXMgdGhhdCBvbmx5IGFwcGx5IHRvIHRoZSBzdGFuZGFyZCBhcHBlYXJhbmNlIG9mIHRoZSBmb3JtLWZpZWxkLlxuXG5AbWl4aW4gc3RhbmRhcmQtY29sb3IoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRmb3JlZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGZvcmVncm91bmQpO1xuICAkaXMtZGFyay10aGVtZTogbWFwLmdldCgkY29uZmlnLCBpcy1kYXJrKTtcbiAgJHVuZGVybGluZS1jb2xvcjpcbiAgICB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIGRpdmlkZXIsIGlmKCRpcy1kYXJrLXRoZW1lLCAwLjcsIDAuNDIpKTtcblxuICAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1zdGFuZGFyZCB7XG4gICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZSB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdW5kZXJsaW5lLWNvbG9yO1xuICAgIH1cblxuICAgICYubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZSB7XG4gICAgICBAaW5jbHVkZSBmb3JtLWNvbW1vbi5wcml2YXRlLWNvbnRyb2wtZGlzYWJsZWQtdW5kZXJsaW5lKCR1bmRlcmxpbmUtY29sb3IpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gc3RhbmRhcmQtdHlwb2dyYXBoeSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gcHJpdmF0ZS1mb3JtLWZpZWxkLXN0YW5kYXJkLWRlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIHN0YW5kYXJkLXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiB0aGVtaW5nLnByaXZhdGUtbGVnYWN5LWdldC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgQGluY2x1ZGUgdGhlbWluZy5wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LWZvcm0tZmllbGQtc3RhbmRhcmQnKSB7XG4gICAgJGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJHRoZW1lKTtcbiAgICAkZGVuc2l0eTogdGhlbWluZy5nZXQtZGVuc2l0eS1jb25maWcoJHRoZW1lKTtcbiAgICAkdHlwb2dyYXBoeTogdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJHRoZW1lKTtcblxuICAgIEBpZiAkY29sb3IgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBzdGFuZGFyZC1jb2xvcigkY29sb3IpO1xuICAgIH1cbiAgICBAaWYgJGRlbnNpdHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBwcml2YXRlLWZvcm0tZmllbGQtc3RhbmRhcmQtZGVuc2l0eSgkZGVuc2l0eSk7XG4gICAgfVxuICAgIEBpZiAkdHlwb2dyYXBoeSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIHN0YW5kYXJkLXR5cG9ncmFwaHkoJHR5cG9ncmFwaHkpO1xuICAgIH1cbiAgfVxufVxuIiwiQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnLi4vY29yZS90aGVtaW5nL3RoZW1pbmcnO1xuXG5AbWl4aW4gY29sb3IoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRwcmltYXJ5OiBtYXAuZ2V0KCRjb25maWcsIHByaW1hcnkpO1xuICAkYWNjZW50OiBtYXAuZ2V0KCRjb25maWcsIGFjY2VudCk7XG4gICR3YXJuOiBtYXAuZ2V0KCRjb25maWcsIHdhcm4pO1xuICAkYmFja2dyb3VuZDogbWFwLmdldCgkY29uZmlnLCBiYWNrZ3JvdW5kKTtcbiAgJGZvcmVncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgZm9yZWdyb3VuZCk7XG5cbiAgLm1hdC1pY29uIHtcbiAgICAmLm1hdC1wcmltYXJ5IHtcbiAgICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHByaW1hcnksIHRleHQpO1xuICAgIH1cblxuICAgICYubWF0LWFjY2VudCB7XG4gICAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRhY2NlbnQsIHRleHQpO1xuICAgIH1cblxuICAgICYubWF0LXdhcm4ge1xuICAgICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkd2FybiwgdGV4dCk7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiB0eXBvZ3JhcGh5KCRjb25maWctb3ItdGhlbWUpIHt9XG5cbkBtaXhpbiBfZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZykge1xuICAkdGhlbWU6IHRoZW1pbmcucHJpdmF0ZS1sZWdhY3ktZ2V0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICBAaW5jbHVkZSB0aGVtaW5nLnByaXZhdGUtY2hlY2stZHVwbGljYXRlLXRoZW1lLXN0eWxlcygkdGhlbWUsICdtYXQtaWNvbicpIHtcbiAgICAkY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkdGhlbWUpO1xuICAgICRkZW5zaXR5OiB0aGVtaW5nLmdldC1kZW5zaXR5LWNvbmZpZygkdGhlbWUpO1xuICAgICR0eXBvZ3JhcGh5OiB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkdGhlbWUpO1xuXG4gICAgQGlmICRjb2xvciAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIGNvbG9yKCRjb2xvcik7XG4gICAgfVxuICAgIEBpZiAkZGVuc2l0eSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIF9kZW5zaXR5KCRkZW5zaXR5KTtcbiAgICB9XG4gICAgQGlmICR0eXBvZ3JhcGh5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgdHlwb2dyYXBoeSgkdHlwb2dyYXBoeSk7XG4gICAgfVxuICB9XG59XG5cbiIsIi8vIHN0eWxlbGludC1kaXNhYmxlIG1hdGVyaWFsL25vLXByZWZpeGVzXG5AbWl4aW4gdXNlci1zZWxlY3QoJHZhbHVlKSB7XG4gIC13ZWJraXQtdXNlci1zZWxlY3Q6ICR2YWx1ZTtcbiAgLW1vei11c2VyLXNlbGVjdDogJHZhbHVlO1xuICAtbXMtdXNlci1zZWxlY3Q6ICR2YWx1ZTtcbiAgdXNlci1zZWxlY3Q6ICR2YWx1ZTtcbn1cblxuQG1peGluIGlucHV0LXBsYWNlaG9sZGVyIHtcbiAgJjo6cGxhY2Vob2xkZXIge1xuICAgIEBjb250ZW50O1xuICB9XG5cbiAgJjo6LW1vei1wbGFjZWhvbGRlciB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cblxuICAmOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHtcbiAgICBAY29udGVudDtcbiAgfVxuXG4gICY6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG5AbWl4aW4gY3Vyc29yLWdyYWIge1xuICBjdXJzb3I6IC13ZWJraXQtZ3JhYjtcbiAgY3Vyc29yOiBncmFiO1xufVxuXG5AbWl4aW4gY3Vyc29yLWdyYWJiaW5nIHtcbiAgY3Vyc29yOiAtd2Via2l0LWdyYWJiaW5nO1xuICBjdXJzb3I6IGdyYWJiaW5nO1xufVxuXG5AbWl4aW4gYmFja2ZhY2UtdmlzaWJpbGl0eSgkdmFsdWUpIHtcbiAgLXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5OiAkdmFsdWU7XG4gIGJhY2tmYWNlLXZpc2liaWxpdHk6ICR2YWx1ZTtcbn1cblxuQG1peGluIHBvc2l0aW9uLXN0aWNreSgkaW1wb3J0YW50OiBmYWxzZSkge1xuICBwb3NpdGlvbjogLXdlYmtpdC1zdGlja3kgI3tpZigkaW1wb3J0YW50LCAnIWltcG9ydGFudCcsICcnKX07XG4gIHBvc2l0aW9uOiBzdGlja3kgI3tpZigkaW1wb3J0YW50LCAnIWltcG9ydGFudCcsICcnKX07XG59XG4vLyBzdHlsZWxpbnQtZW5hYmxlXG4iLCJAdXNlICdzYXNzOm1hcCc7XG5AdXNlICdzYXNzOm1ldGEnO1xuQHVzZSAnc2Fzczpjb2xvcic7XG5AdXNlICcuLi9jb3JlL3RoZW1pbmcvdGhlbWluZyc7XG5cbi8vIEFwcHJveGltYXRlcyB0aGUgY29ycmVjdCBidWZmZXIgY29sb3IgYnkgdXNpbmcgYSBtaXggYmV0d2VlbiB0aGUgdGhlbWUgY29sb3Jcbi8vIGFuZCB0aGUgdGhlbWUncyBiYWNrZ3JvdW5kIGNvbG9yLlxuQGZ1bmN0aW9uIF9nZXQtYnVmZmVyLWNvbG9yKCR0aGVtZSwgJGJhY2tncm91bmQpIHtcbiAgJHRoZW1lLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHRoZW1lKTtcbiAgLy8gUmV0dXJuIGZhbGxiYWNrIGNvbG9yIGlmIHRoZSB0aGVtZSB1c2VzIHZhcmlhYmxlcyB0byBkZWZpbmUgY29sb3JzLlxuICBAaWYgKG1ldGEudHlwZS1vZigkdGhlbWUtY29sb3IpICE9ICdjb2xvcicgb3IgbWV0YS50eXBlLW9mKCRiYWNrZ3JvdW5kKSAhPSAnY29sb3InKSB7XG4gICAgQHJldHVybiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHRoZW1lLCBsaWdodGVyKTtcbiAgfVxuICBAcmV0dXJuIGNvbG9yLm1peCgkdGhlbWUtY29sb3IsICRiYWNrZ3JvdW5kLCAkd2VpZ2h0OiAyNSUpO1xufVxuXG5AbWl4aW4gY29sb3IoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRwcmltYXJ5OiBtYXAuZ2V0KCRjb25maWcsIHByaW1hcnkpO1xuICAkYWNjZW50OiBtYXAuZ2V0KCRjb25maWcsIGFjY2VudCk7XG4gICR3YXJuOiBtYXAuZ2V0KCRjb25maWcsIHdhcm4pO1xuICAkYmFja2dyb3VuZDogbWFwLmdldChtYXAuZ2V0KCRjb25maWcsIGJhY2tncm91bmQpLCBiYWNrZ3JvdW5kKTtcblxuICAubWF0LXByb2dyZXNzLWJhci1iYWNrZ3JvdW5kIHtcbiAgICBmaWxsOiBfZ2V0LWJ1ZmZlci1jb2xvcigkcHJpbWFyeSwgJGJhY2tncm91bmQpO1xuICB9XG5cbiAgLm1hdC1wcm9ncmVzcy1iYXItYnVmZmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBfZ2V0LWJ1ZmZlci1jb2xvcigkcHJpbWFyeSwgJGJhY2tncm91bmQpO1xuICB9XG5cbiAgLm1hdC1wcm9ncmVzcy1iYXItZmlsbDo6YWZ0ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkcHJpbWFyeSk7XG4gIH1cblxuICAubWF0LXByb2dyZXNzLWJhci5tYXQtYWNjZW50IHtcbiAgICAubWF0LXByb2dyZXNzLWJhci1iYWNrZ3JvdW5kIHtcbiAgICAgIGZpbGw6IF9nZXQtYnVmZmVyLWNvbG9yKCRhY2NlbnQsICRiYWNrZ3JvdW5kKTtcbiAgICB9XG5cbiAgICAubWF0LXByb2dyZXNzLWJhci1idWZmZXIge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogX2dldC1idWZmZXItY29sb3IoJGFjY2VudCwgJGJhY2tncm91bmQpO1xuICAgIH1cblxuICAgIC5tYXQtcHJvZ3Jlc3MtYmFyLWZpbGw6OmFmdGVyIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYWNjZW50KTtcbiAgICB9XG4gIH1cblxuICAubWF0LXByb2dyZXNzLWJhci5tYXQtd2FybiB7XG4gICAgLm1hdC1wcm9ncmVzcy1iYXItYmFja2dyb3VuZCB7XG4gICAgICBmaWxsOiBfZ2V0LWJ1ZmZlci1jb2xvcigkd2FybiwgJGJhY2tncm91bmQpO1xuICAgIH1cblxuICAgIC5tYXQtcHJvZ3Jlc3MtYmFyLWJ1ZmZlciB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBfZ2V0LWJ1ZmZlci1jb2xvcigkd2FybiwgJGJhY2tncm91bmQpO1xuICAgIH1cblxuICAgIC5tYXQtcHJvZ3Jlc3MtYmFyLWZpbGw6OmFmdGVyIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkd2Fybik7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiB0eXBvZ3JhcGh5KCRjb25maWctb3ItdGhlbWUpIHt9XG5cbkBtaXhpbiBfZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZykge1xuICAkdGhlbWU6IHRoZW1pbmcucHJpdmF0ZS1sZWdhY3ktZ2V0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICBAaW5jbHVkZSB0aGVtaW5nLnByaXZhdGUtY2hlY2stZHVwbGljYXRlLXRoZW1lLXN0eWxlcygkdGhlbWUsICdtYXQtcHJvZ3Jlc3MtYmFyJykge1xuICAgICRjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgJGRlbnNpdHk6IHRoZW1pbmcuZ2V0LWRlbnNpdHktY29uZmlnKCR0aGVtZSk7XG4gICAgJHR5cG9ncmFwaHk6IHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCR0aGVtZSk7XG5cbiAgICBAaWYgJGNvbG9yICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgX2RlbnNpdHkoJGRlbnNpdHkpO1xuICAgIH1cbiAgICBAaWYgJHR5cG9ncmFwaHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5KCR0eXBvZ3JhcGh5KTtcbiAgICB9XG4gIH1cbn1cblxuIiwiQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnLi4vY29yZS90aGVtaW5nL3RoZW1pbmcnO1xuXG5AbWl4aW4gY29sb3IoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRwcmltYXJ5OiBtYXAuZ2V0KCRjb25maWcsIHByaW1hcnkpO1xuICAkYWNjZW50OiBtYXAuZ2V0KCRjb25maWcsIGFjY2VudCk7XG4gICR3YXJuOiBtYXAuZ2V0KCRjb25maWcsIHdhcm4pO1xuXG4gIC5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lciwgLm1hdC1zcGlubmVyIHtcbiAgICBjaXJjbGUge1xuICAgICAgc3Ryb2tlOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHByaW1hcnkpO1xuICAgIH1cblxuICAgICYubWF0LWFjY2VudCBjaXJjbGUge1xuICAgICAgc3Ryb2tlOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGFjY2VudCk7XG4gICAgfVxuXG4gICAgJi5tYXQtd2FybiBjaXJjbGUge1xuICAgICAgc3Ryb2tlOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHdhcm4pO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gdHlwb2dyYXBoeSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gX2RlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIHRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiB0aGVtaW5nLnByaXZhdGUtbGVnYWN5LWdldC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgQGluY2x1ZGUgdGhlbWluZy5wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LXByb2dyZXNzLXNwaW5uZXInKSB7XG4gICAgJGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJHRoZW1lKTtcbiAgICAkZGVuc2l0eTogdGhlbWluZy5nZXQtZGVuc2l0eS1jb25maWcoJHRoZW1lKTtcbiAgICAkdHlwb2dyYXBoeTogdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJHRoZW1lKTtcblxuICAgIEBpZiAkY29sb3IgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBjb2xvcigkY29sb3IpO1xuICAgIH1cbiAgICBAaWYgJGRlbnNpdHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBfZGVuc2l0eSgkZGVuc2l0eSk7XG4gICAgfVxuICAgIEBpZiAkdHlwb2dyYXBoeSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIHR5cG9ncmFwaHkoJHR5cG9ncmFwaHkpO1xuICAgIH1cbiAgfVxufVxuIiwiQHVzZSAnc2Fzczpjb2xvcic7XG5AdXNlICdzYXNzOm1hcCc7XG5AdXNlICdzYXNzOm1ldGEnO1xuQHVzZSAnLi4vY29yZS9zdHlsZS9wcml2YXRlJztcbkB1c2UgJy4uL2NvcmUvdGhlbWluZy90aGVtaW5nJztcblxuQG1peGluIGNvbG9yKCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAkcHJpbWFyeTogbWFwLmdldCgkY29uZmlnLCBwcmltYXJ5KTtcbiAgJGFjY2VudDogbWFwLmdldCgkY29uZmlnLCBhY2NlbnQpO1xuICAkd2FybjogbWFwLmdldCgkY29uZmlnLCB3YXJuKTtcbiAgJGJhY2tncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgYmFja2dyb3VuZCk7XG4gICRmb3JlZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGZvcmVncm91bmQpO1xuXG4gICRkcmF3ZXItYmFja2dyb3VuZC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLCBkaWFsb2cpO1xuICAkZHJhd2VyLWNvbnRhaW5lci1iYWNrZ3JvdW5kLWNvbG9yOiAgdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLCBiYWNrZ3JvdW5kKTtcbiAgJGRyYXdlci1wdXNoLWJhY2tncm91bmQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYmFja2dyb3VuZCwgZGlhbG9nKTtcbiAgJGRyYXdlci1zaWRlLWJvcmRlcjogc29saWQgMXB4IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgZGl2aWRlcik7XG5cbiAgLm1hdC1kcmF3ZXItY29udGFpbmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZHJhd2VyLWNvbnRhaW5lci1iYWNrZ3JvdW5kLWNvbG9yO1xuICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIHRleHQpO1xuICB9XG5cbiAgLm1hdC1kcmF3ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRkcmF3ZXItYmFja2dyb3VuZC1jb2xvcjtcbiAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCB0ZXh0KTtcblxuICAgICYubWF0LWRyYXdlci1wdXNoIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRkcmF3ZXItcHVzaC1iYWNrZ3JvdW5kLWNvbG9yO1xuICAgIH1cblxuICAgICY6bm90KC5tYXQtZHJhd2VyLXNpZGUpIHtcbiAgICAgIC8vIFRoZSBlbGV2YXRpb24gb2Ygei0xNiBpcyBub3RlZCBpbiB0aGUgZGVzaWduIHNwZWNpZmljYXRpb25zLlxuICAgICAgLy8gU2VlIGh0dHBzOi8vbWF0ZXJpYWwuaW8vZGVzaWduL2NvbXBvbmVudHMvbmF2aWdhdGlvbi1kcmF3ZXIuaHRtbFxuICAgICAgQGluY2x1ZGUgcHJpdmF0ZS5wcml2YXRlLXRoZW1lLWVsZXZhdGlvbigxNiwgJGNvbmZpZyk7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1kcmF3ZXItc2lkZSB7XG4gICAgYm9yZGVyLXJpZ2h0OiAkZHJhd2VyLXNpZGUtYm9yZGVyO1xuXG4gICAgJi5tYXQtZHJhd2VyLWVuZCB7XG4gICAgICBib3JkZXItbGVmdDogJGRyYXdlci1zaWRlLWJvcmRlcjtcbiAgICAgIGJvcmRlci1yaWdodDogbm9uZTtcbiAgICB9XG4gIH1cblxuICBbZGlyPSdydGwnXSAubWF0LWRyYXdlci1zaWRlIHtcbiAgICBib3JkZXItbGVmdDogJGRyYXdlci1zaWRlLWJvcmRlcjtcbiAgICBib3JkZXItcmlnaHQ6IG5vbmU7XG5cbiAgICAmLm1hdC1kcmF3ZXItZW5kIHtcbiAgICAgIGJvcmRlci1sZWZ0OiBub25lO1xuICAgICAgYm9yZGVyLXJpZ2h0OiAkZHJhd2VyLXNpZGUtYm9yZGVyO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtZHJhd2VyLWJhY2tkcm9wLm1hdC1kcmF3ZXItc2hvd24ge1xuICAgICRvcGFjaXR5OiAwLjY7XG4gICAgJGJhY2tkcm9wLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGJhY2tncm91bmQsIGNhcmQsICRvcGFjaXR5KTtcblxuICAgIEBpZiAobWV0YS50eXBlLW9mKCRiYWNrZHJvcC1jb2xvcikgPT0gY29sb3IpIHtcbiAgICAgIC8vIFdlIHVzZSBpbnZlcnQoKSBoZXJlIHRvIGhhdmUgdGhlIGRhcmtlbiB0aGUgYmFja2dyb3VuZCBjb2xvciBleHBlY3RlZCB0byBiZSB1c2VkLiBJZiB0aGVcbiAgICAgIC8vIGJhY2tncm91bmQgaXMgbGlnaHQsIHdlIHVzZSBhIGRhcmsgYmFja2Ryb3AuIElmIHRoZSBiYWNrZ3JvdW5kIGlzIGRhcmssXG4gICAgICAvLyB3ZSB1c2UgYSBsaWdodCBiYWNrZHJvcC5cbiAgICAgIGJhY2tncm91bmQtY29sb3I6IGNvbG9yLmludmVydCgkYmFja2Ryb3AtY29sb3IpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAvLyBJZiB3ZSBjb3VsZG4ndCByZXNvbHZlIHRoZSBiYWNrZHJvcCBjb2xvciB0byBhIGNvbG9yIHZhbHVlLCBmYWxsIGJhY2sgdG8gdXNpbmdcbiAgICAgIC8vIGBvcGFjaXR5YCB0byBtYWtlIGl0IG9wYXF1ZSBzaW5jZSBpdHMgZW5kIHZhbHVlIGNvdWxkIGJlIGEgc29saWQgY29sb3IuXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFja2Ryb3AtY29sb3I7XG4gICAgICBvcGFjaXR5OiAkb3BhY2l0eTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHR5cG9ncmFwaHkoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIF9kZW5zaXR5KCRjb25maWctb3ItdGhlbWUpIHt9XG5cbkBtaXhpbiB0aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKSB7XG4gICR0aGVtZTogdGhlbWluZy5wcml2YXRlLWxlZ2FjeS1nZXQtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZyk7XG4gIEBpbmNsdWRlIHRoZW1pbmcucHJpdmF0ZS1jaGVjay1kdXBsaWNhdGUtdGhlbWUtc3R5bGVzKCR0aGVtZSwgJ21hdC1zaWRlbmF2Jykge1xuICAgICRjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgJGRlbnNpdHk6IHRoZW1pbmcuZ2V0LWRlbnNpdHktY29uZmlnKCR0aGVtZSk7XG4gICAgJHR5cG9ncmFwaHk6IHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCR0aGVtZSk7XG5cbiAgICBAaWYgJGNvbG9yICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgX2RlbnNpdHkoJGRlbnNpdHkpO1xuICAgIH1cbiAgICBAaWYgJHR5cG9ncmFwaHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5KCR0eXBvZ3JhcGh5KTtcbiAgICB9XG4gIH1cbn1cbiIsIkB1c2UgJ3Nhc3M6Y29sb3InO1xuQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnc2FzczptZXRhJztcbkB1c2UgJy4uL2NvcmUvdGhlbWluZy90aGVtaW5nJztcblxuQG1peGluIGNvbG9yKCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAkYmFja2dyb3VuZDogbWFwLmdldCgkY29uZmlnLCBiYWNrZ3JvdW5kKTtcbiAgJGZvcmVncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgZm9yZWdyb3VuZCk7XG5cbiAgLm1hdC1zb3J0LWhlYWRlci1hcnJvdyB7XG4gICAgJHRhYmxlLWJhY2tncm91bmQ6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYmFja2dyb3VuZCwgJ2NhcmQnKTtcbiAgICAkdGV4dC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBzZWNvbmRhcnktdGV4dCk7XG5cbiAgICAvLyBCZWNhdXNlIHRoZSBhcnJvdyBpcyBtYWRlIHVwIG9mIG11bHRpcGxlIGVsZW1lbnRzIHRoYXQgYXJlIHN0YWNrZWQgb24gdG9wIG9mIGVhY2ggb3RoZXIsXG4gICAgLy8gd2UgY2FuJ3QgdXNlIHRoZSBzZW1pLXRyYW5zcGFyZW50IGNvbG9yIGZyb20gdGhlIHRoZW1lIGRpcmVjdGx5LiBJZiB0aGUgdmFsdWUgaXMgYSBjb2xvclxuICAgIC8vICp0eXBlKiwgd2UgY29udmVydCBpdCBpbnRvIGEgc29saWQgY29sb3IgYnkgdGFraW5nIHRoZSBvcGFjaXR5IGZyb20gdGhlIHJnYmEgdmFsdWUgYW5kXG4gICAgLy8gdXNpbmcgdGhlIHZhbHVlIHRvIGRldGVybWluZSB0aGUgcGVyY2VudGFnZSBvZiB0aGUgYmFja2dyb3VuZCB0byBwdXQgaW50byBmb3JlZ3JvdW5kXG4gICAgLy8gd2hlbiBtaXhpbmcgdGhlIGNvbG9ycyB0b2dldGhlci4gT3RoZXJ3aXNlLCBpZiBpdCByZXNvbHZlcyB0byBzb21ldGhpbmcgZGlmZmVyZW50XG4gICAgLy8gKGUuZy4gaXQgcmVzb2x2ZXMgdG8gYSBDU1MgdmFyaWFibGUpLCB3ZSB1c2UgdGhlIGNvbG9yIGRpcmVjdGx5LlxuICAgIEBpZiAobWV0YS50eXBlLW9mKCR0YWJsZS1iYWNrZ3JvdW5kKSA9PSBjb2xvciBhbmQgbWV0YS50eXBlLW9mKCR0ZXh0LWNvbG9yKSA9PSBjb2xvcikge1xuICAgICAgJHRleHQtb3BhY2l0eTogb3BhY2l0eSgkdGV4dC1jb2xvcik7XG4gICAgICBjb2xvcjogY29sb3IubWl4KCR0YWJsZS1iYWNrZ3JvdW5kLCByZ2JhKCR0ZXh0LWNvbG9yLCAxKSwgKDEgLSAkdGV4dC1vcGFjaXR5KSAqIDEwMCUpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBjb2xvcjogJHRleHQtY29sb3I7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiB0eXBvZ3JhcGh5KCRjb25maWctb3ItdGhlbWUpIHt9XG5cbkBtaXhpbiBfZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZykge1xuICAkdGhlbWU6IHRoZW1pbmcucHJpdmF0ZS1sZWdhY3ktZ2V0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICBAaW5jbHVkZSB0aGVtaW5nLnByaXZhdGUtY2hlY2stZHVwbGljYXRlLXRoZW1lLXN0eWxlcygkdGhlbWUsICdtYXQtc29ydCcpIHtcbiAgICAkY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkdGhlbWUpO1xuICAgICRkZW5zaXR5OiB0aGVtaW5nLmdldC1kZW5zaXR5LWNvbmZpZygkdGhlbWUpO1xuICAgICR0eXBvZ3JhcGh5OiB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkdGhlbWUpO1xuXG4gICAgQGlmICRjb2xvciAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIGNvbG9yKCRjb2xvcik7XG4gICAgfVxuICAgIEBpZiAkZGVuc2l0eSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIF9kZW5zaXR5KCRkZW5zaXR5KTtcbiAgICB9XG4gICAgQGlmICR0eXBvZ3JhcGh5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgdHlwb2dyYXBoeSgkdHlwb2dyYXBoeSk7XG4gICAgfVxuICB9XG59XG4iLCIvKiBCcmVha3BvaW50cyBmb3IgTWVkaWEgUXVlcmllcyAqL1xuXG5AbWl4aW4gZm9yLXBob25lLW9ubHkge1xuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGggOiA1NzZweCkgeyBAY29udGVudDsgfVxufVxuQG1peGluIGZvci10YWJsZXQge1xuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDc2OHB4KSB7IEBjb250ZW50OyB9XG59XG5AbWl4aW4gZm9yLWRlc2t0b3Age1xuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDk5MnB4KSB7IEBjb250ZW50OyB9XG59XG5AbWl4aW4gZm9yLWRlc2t0b3AteGwge1xuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDEyMDBweCkgeyBAY29udGVudDsgfVxufVxuIiwiJGNhcmQtd2lkdGg6IDM0MHB4O1xuJGNhcmQtaGVpZ2h0OiAyMjBweDtcbiRjYXJkLS1oZWFkZXItaGVpZ2h0OiA2MHB4O1xuJGNhcmQtLWZvb3Rlci1oZWlnaHQ6IDYwcHg7Il19 */\";","export default \"@import url(\\\"//fonts.googleapis.com/icon?family=Material+Icons\\\");\\n/* You can add global styles to this file, and also import other style files */\\n.mat-badge-content {\\n font-weight: 600;\\n font-size: 12px;\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n}\\n.mat-badge-small .mat-badge-content {\\n font-size: 9px;\\n}\\n.mat-badge-large .mat-badge-content {\\n font-size: 24px;\\n}\\n.mat-h1, .mat-headline, .mat-typography h1 {\\n font: 400 24px/32px Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n letter-spacing: normal;\\n margin: 0 0 16px;\\n}\\n.mat-h2, .mat-title, .mat-typography h2 {\\n font: 500 20px/32px Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n letter-spacing: normal;\\n margin: 0 0 16px;\\n}\\n.mat-h3, .mat-subheading-2, .mat-typography h3 {\\n font: 400 16px/28px Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n letter-spacing: normal;\\n margin: 0 0 16px;\\n}\\n.mat-h4, .mat-subheading-1, .mat-typography h4 {\\n font: 400 15px/24px Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n letter-spacing: normal;\\n margin: 0 0 16px;\\n}\\n.mat-h5, .mat-typography h5 {\\n font: 400 calc(14px * 0.83)/20px Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n margin: 0 0 12px;\\n}\\n.mat-h6, .mat-typography h6 {\\n font: 400 calc(14px * 0.67)/20px Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n margin: 0 0 12px;\\n}\\n.mat-body-strong, .mat-body-2 {\\n font: 500 14px/24px Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n letter-spacing: normal;\\n}\\n.mat-body, .mat-body-1, .mat-typography {\\n font: 400 14px/20px Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n letter-spacing: normal;\\n}\\n.mat-body p, .mat-body-1 p, .mat-typography p {\\n margin: 0 0 12px;\\n}\\n.mat-small, .mat-caption {\\n font: 400 12px/20px Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n letter-spacing: normal;\\n}\\n.mat-display-4, .mat-typography .mat-display-4 {\\n font: 300 112px/112px Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n letter-spacing: -0.05em;\\n margin: 0 0 56px;\\n}\\n.mat-display-3, .mat-typography .mat-display-3 {\\n font: 400 56px/56px Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n letter-spacing: -0.02em;\\n margin: 0 0 64px;\\n}\\n.mat-display-2, .mat-typography .mat-display-2 {\\n font: 400 45px/48px Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n letter-spacing: -0.005em;\\n margin: 0 0 64px;\\n}\\n.mat-display-1, .mat-typography .mat-display-1 {\\n font: 400 34px/40px Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n letter-spacing: normal;\\n margin: 0 0 64px;\\n}\\n.mat-bottom-sheet-container {\\n font: 400 14px/20px Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n letter-spacing: normal;\\n}\\n.mat-button, .mat-raised-button, .mat-icon-button, .mat-stroked-button,\\n.mat-flat-button, .mat-fab, .mat-mini-fab {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n font-size: 14px;\\n font-weight: 500;\\n}\\n.mat-button-toggle {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n}\\n.mat-card {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n}\\n.mat-card-title {\\n font-size: 24px;\\n font-weight: 500;\\n}\\n.mat-card-header .mat-card-title {\\n font-size: 20px;\\n}\\n.mat-card-subtitle,\\n.mat-card-content {\\n font-size: 14px;\\n}\\n.mat-checkbox {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n}\\n.mat-checkbox-layout .mat-checkbox-label {\\n line-height: 24px;\\n}\\n.mat-chip {\\n font-size: 14px;\\n font-weight: 500;\\n}\\n.mat-chip .mat-chip-trailing-icon.mat-icon,\\n.mat-chip .mat-chip-remove.mat-icon {\\n font-size: 18px;\\n}\\n.mat-table {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n}\\n.mat-header-cell {\\n font-size: 12px;\\n font-weight: 500;\\n}\\n.mat-cell, .mat-footer-cell {\\n font-size: 14px;\\n}\\n.mat-calendar {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n}\\n.mat-calendar-body {\\n font-size: 13px;\\n}\\n.mat-calendar-body-label,\\n.mat-calendar-period-button {\\n font-size: 14px;\\n font-weight: 500;\\n}\\n.mat-calendar-table-header th {\\n font-size: 11px;\\n font-weight: 400;\\n}\\n.mat-dialog-title {\\n font: 500 20px/32px Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n letter-spacing: normal;\\n}\\n.mat-expansion-panel-header {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n font-size: 15px;\\n font-weight: 400;\\n}\\n.mat-expansion-panel-content {\\n font: 400 14px/20px Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n letter-spacing: normal;\\n}\\n.mat-form-field {\\n font-size: inherit;\\n font-weight: 400;\\n line-height: 1.125;\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n letter-spacing: normal;\\n}\\n.mat-form-field-wrapper {\\n padding-bottom: 1.34375em;\\n}\\n.mat-form-field-prefix .mat-icon,\\n.mat-form-field-suffix .mat-icon {\\n font-size: 150%;\\n line-height: 1.125;\\n}\\n.mat-form-field-prefix .mat-icon-button,\\n.mat-form-field-suffix .mat-icon-button {\\n height: 1.5em;\\n width: 1.5em;\\n}\\n.mat-form-field-prefix .mat-icon-button .mat-icon,\\n.mat-form-field-suffix .mat-icon-button .mat-icon {\\n height: 1.125em;\\n line-height: 1.125;\\n}\\n.mat-form-field-infix {\\n padding: 0.5em 0;\\n border-top: 0.84375em solid transparent;\\n}\\n.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,\\n.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.34375em) scale(0.75);\\n width: 133.3333333333%;\\n}\\n.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.34374em) scale(0.75);\\n width: 133.3333433333%;\\n}\\n.mat-form-field-label-wrapper {\\n top: -0.84375em;\\n padding-top: 0.84375em;\\n}\\n.mat-form-field-label {\\n top: 1.34375em;\\n}\\n.mat-form-field-underline {\\n bottom: 1.34375em;\\n}\\n.mat-form-field-subscript-wrapper {\\n font-size: 75%;\\n margin-top: 0.6666666667em;\\n top: calc(100% - 1.7916666667em);\\n}\\n.mat-form-field-appearance-legacy .mat-form-field-wrapper {\\n padding-bottom: 1.25em;\\n}\\n.mat-form-field-appearance-legacy .mat-form-field-infix {\\n padding: 0.4375em 0;\\n}\\n.mat-form-field-appearance-legacy.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,\\n.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.28125em) scale(0.75) perspective(100px) translateZ(0.001px);\\n -ms-transform: translateY(-1.28125em) scale(0.75);\\n width: 133.3333333333%;\\n}\\n.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-form-field-autofill-control:-webkit-autofill + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.28125em) scale(0.75) perspective(100px) translateZ(0.00101px);\\n -ms-transform: translateY(-1.28124em) scale(0.75);\\n width: 133.3333433333%;\\n}\\n.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.28125em) scale(0.75) perspective(100px) translateZ(0.00102px);\\n -ms-transform: translateY(-1.28123em) scale(0.75);\\n width: 133.3333533333%;\\n}\\n.mat-form-field-appearance-legacy .mat-form-field-label {\\n top: 1.28125em;\\n}\\n.mat-form-field-appearance-legacy .mat-form-field-underline {\\n bottom: 1.25em;\\n}\\n.mat-form-field-appearance-legacy .mat-form-field-subscript-wrapper {\\n margin-top: 0.5416666667em;\\n top: calc(100% - 1.6666666667em);\\n}\\n@media print {\\n .mat-form-field-appearance-legacy.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,\\n.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.28122em) scale(0.75);\\n }\\n .mat-form-field-appearance-legacy.mat-form-field-can-float .mat-form-field-autofill-control:-webkit-autofill + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.28121em) scale(0.75);\\n }\\n .mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.2812em) scale(0.75);\\n }\\n}\\n.mat-form-field-appearance-fill .mat-form-field-infix {\\n padding: 0.25em 0 0.75em 0;\\n}\\n.mat-form-field-appearance-fill .mat-form-field-label {\\n top: 1.09375em;\\n margin-top: -0.5em;\\n}\\n.mat-form-field-appearance-fill.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,\\n.mat-form-field-appearance-fill.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-0.59375em) scale(0.75);\\n width: 133.3333333333%;\\n}\\n.mat-form-field-appearance-fill.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-0.59374em) scale(0.75);\\n width: 133.3333433333%;\\n}\\n.mat-form-field-appearance-outline .mat-form-field-infix {\\n padding: 1em 0 1em 0;\\n}\\n.mat-form-field-appearance-outline .mat-form-field-label {\\n top: 1.84375em;\\n margin-top: -0.25em;\\n}\\n.mat-form-field-appearance-outline.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,\\n.mat-form-field-appearance-outline.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.59375em) scale(0.75);\\n width: 133.3333333333%;\\n}\\n.mat-form-field-appearance-outline.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.59374em) scale(0.75);\\n width: 133.3333433333%;\\n}\\n.mat-grid-tile-header,\\n.mat-grid-tile-footer {\\n font-size: 14px;\\n}\\n.mat-grid-tile-header .mat-line,\\n.mat-grid-tile-footer .mat-line {\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n display: block;\\n box-sizing: border-box;\\n}\\n.mat-grid-tile-header .mat-line:nth-child(n+2),\\n.mat-grid-tile-footer .mat-line:nth-child(n+2) {\\n font-size: 12px;\\n}\\ninput.mat-input-element {\\n margin-top: -0.0625em;\\n}\\n.mat-menu-item {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n font-size: 14px;\\n font-weight: 400;\\n}\\n.mat-paginator,\\n.mat-paginator-page-size .mat-select-trigger {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n font-size: 12px;\\n}\\n.mat-radio-button {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n}\\n.mat-select {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n}\\n.mat-select-trigger {\\n height: 1.125em;\\n}\\n.mat-slide-toggle-content {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n}\\n.mat-slider-thumb-label-text {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n font-size: 12px;\\n font-weight: 500;\\n}\\n.mat-stepper-vertical, .mat-stepper-horizontal {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n}\\n.mat-step-label {\\n font-size: 14px;\\n font-weight: 400;\\n}\\n.mat-step-sub-label-error {\\n font-weight: normal;\\n}\\n.mat-step-label-error {\\n font-size: 14px;\\n}\\n.mat-step-label-selected {\\n font-size: 14px;\\n font-weight: 500;\\n}\\n.mat-tab-group {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n}\\n.mat-tab-label, .mat-tab-link {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n font-size: 14px;\\n font-weight: 500;\\n}\\n.mat-toolbar,\\n.mat-toolbar h1,\\n.mat-toolbar h2,\\n.mat-toolbar h3,\\n.mat-toolbar h4,\\n.mat-toolbar h5,\\n.mat-toolbar h6 {\\n font: 500 20px/32px Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n letter-spacing: normal;\\n margin: 0;\\n}\\n.mat-tooltip {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n font-size: 10px;\\n padding-top: 6px;\\n padding-bottom: 6px;\\n}\\n.mat-tooltip-handset {\\n font-size: 14px;\\n padding-top: 8px;\\n padding-bottom: 8px;\\n}\\n.mat-list-item {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n}\\n.mat-list-option {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n}\\n.mat-list-base .mat-list-item {\\n font-size: 16px;\\n}\\n.mat-list-base .mat-list-item .mat-line {\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n display: block;\\n box-sizing: border-box;\\n}\\n.mat-list-base .mat-list-item .mat-line:nth-child(n+2) {\\n font-size: 14px;\\n}\\n.mat-list-base .mat-list-option {\\n font-size: 16px;\\n}\\n.mat-list-base .mat-list-option .mat-line {\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n display: block;\\n box-sizing: border-box;\\n}\\n.mat-list-base .mat-list-option .mat-line:nth-child(n+2) {\\n font-size: 14px;\\n}\\n.mat-list-base .mat-subheader {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n font-size: 14px;\\n font-weight: 500;\\n}\\n.mat-list-base[dense] .mat-list-item {\\n font-size: 12px;\\n}\\n.mat-list-base[dense] .mat-list-item .mat-line {\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n display: block;\\n box-sizing: border-box;\\n}\\n.mat-list-base[dense] .mat-list-item .mat-line:nth-child(n+2) {\\n font-size: 12px;\\n}\\n.mat-list-base[dense] .mat-list-option {\\n font-size: 12px;\\n}\\n.mat-list-base[dense] .mat-list-option .mat-line {\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n display: block;\\n box-sizing: border-box;\\n}\\n.mat-list-base[dense] .mat-list-option .mat-line:nth-child(n+2) {\\n font-size: 12px;\\n}\\n.mat-list-base[dense] .mat-subheader {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n font-size: 12px;\\n font-weight: 500;\\n}\\n.mat-option {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n font-size: 16px;\\n}\\n.mat-optgroup-label {\\n font: 500 14px/24px Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n letter-spacing: normal;\\n}\\n.mat-simple-snackbar {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n font-size: 14px;\\n}\\n.mat-simple-snackbar-action {\\n line-height: 1;\\n font-family: inherit;\\n font-size: inherit;\\n font-weight: 500;\\n}\\n.mat-tree {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n}\\n.mat-tree-node,\\n.mat-nested-tree-node {\\n font-weight: 400;\\n font-size: 14px;\\n}\\n.mat-ripple {\\n overflow: hidden;\\n position: relative;\\n}\\n.mat-ripple:not(:empty) {\\n transform: translateZ(0);\\n}\\n.mat-ripple.mat-ripple-unbounded {\\n overflow: visible;\\n}\\n.mat-ripple-element {\\n position: absolute;\\n border-radius: 50%;\\n pointer-events: none;\\n transition: opacity, transform 0ms cubic-bezier(0, 0, 0.2, 1);\\n transform: scale(0);\\n}\\n.cdk-high-contrast-active .mat-ripple-element {\\n display: none;\\n}\\n.cdk-visually-hidden {\\n border: 0;\\n clip: rect(0 0 0 0);\\n height: 1px;\\n margin: -1px;\\n overflow: hidden;\\n padding: 0;\\n position: absolute;\\n width: 1px;\\n white-space: nowrap;\\n outline: 0;\\n -webkit-appearance: none;\\n -moz-appearance: none;\\n}\\n.cdk-overlay-container, .cdk-global-overlay-wrapper {\\n pointer-events: none;\\n top: 0;\\n left: 0;\\n height: 100%;\\n width: 100%;\\n}\\n.cdk-overlay-container {\\n position: fixed;\\n z-index: 1000;\\n}\\n.cdk-overlay-container:empty {\\n display: none;\\n}\\n.cdk-global-overlay-wrapper {\\n display: flex;\\n position: absolute;\\n z-index: 1000;\\n}\\n.cdk-overlay-pane {\\n position: absolute;\\n pointer-events: auto;\\n box-sizing: border-box;\\n z-index: 1000;\\n display: flex;\\n max-width: 100%;\\n max-height: 100%;\\n}\\n.cdk-overlay-backdrop {\\n position: absolute;\\n top: 0;\\n bottom: 0;\\n left: 0;\\n right: 0;\\n z-index: 1000;\\n pointer-events: auto;\\n -webkit-tap-highlight-color: transparent;\\n transition: opacity 400ms cubic-bezier(0.25, 0.8, 0.25, 1);\\n opacity: 0;\\n}\\n.cdk-overlay-backdrop.cdk-overlay-backdrop-showing {\\n opacity: 1;\\n}\\n.cdk-high-contrast-active .cdk-overlay-backdrop.cdk-overlay-backdrop-showing {\\n opacity: 0.6;\\n}\\n.cdk-overlay-dark-backdrop {\\n background: rgba(0, 0, 0, 0.32);\\n}\\n.cdk-overlay-transparent-backdrop, .cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing {\\n opacity: 0;\\n}\\n.cdk-overlay-connected-position-bounding-box {\\n position: absolute;\\n z-index: 1000;\\n display: flex;\\n flex-direction: column;\\n min-width: 1px;\\n min-height: 1px;\\n}\\n.cdk-global-scrollblock {\\n position: fixed;\\n width: 100%;\\n overflow-y: scroll;\\n}\\ntextarea.cdk-textarea-autosize {\\n resize: none;\\n}\\ntextarea.cdk-textarea-autosize-measuring {\\n padding: 2px 0 !important;\\n box-sizing: content-box !important;\\n height: auto !important;\\n overflow: hidden !important;\\n}\\ntextarea.cdk-textarea-autosize-measuring-firefox {\\n padding: 2px 0 !important;\\n box-sizing: content-box !important;\\n height: 0 !important;\\n}\\n@keyframes cdk-text-field-autofill-start {\\n /*!*/\\n}\\n@keyframes cdk-text-field-autofill-end {\\n /*!*/\\n}\\n.cdk-text-field-autofill-monitored:-webkit-autofill {\\n animation: cdk-text-field-autofill-start 0s 1ms;\\n}\\n.cdk-text-field-autofill-monitored:not(:-webkit-autofill) {\\n animation: cdk-text-field-autofill-end 0s 1ms;\\n}\\n.mat-focus-indicator {\\n position: relative;\\n}\\n.mat-mdc-focus-indicator {\\n position: relative;\\n}\\n.mat-badge-content {\\n font-weight: 600;\\n font-size: 12px;\\n font-family: OpenSans, sans-serif;\\n}\\n.mat-badge-small .mat-badge-content {\\n font-size: 9px;\\n}\\n.mat-badge-large .mat-badge-content {\\n font-size: 24px;\\n}\\n.mat-h1, .mat-headline, .mat-typography h1 {\\n font: 400 24px/32px OpenSans, sans-serif;\\n letter-spacing: normal;\\n margin: 0 0 16px;\\n}\\n.mat-h2, .mat-title, .mat-typography h2 {\\n font: 500 20px/32px OpenSans, sans-serif;\\n letter-spacing: normal;\\n margin: 0 0 16px;\\n}\\n.mat-h3, .mat-subheading-2, .mat-typography h3 {\\n font: 400 16px/28px OpenSans, sans-serif;\\n letter-spacing: normal;\\n margin: 0 0 16px;\\n}\\n.mat-h4, .mat-subheading-1, .mat-typography h4 {\\n font: 400 15px/24px OpenSans, sans-serif;\\n letter-spacing: normal;\\n margin: 0 0 16px;\\n}\\n.mat-h5, .mat-typography h5 {\\n font: normal calc(16px * 0.83)/24px OpenSans, sans-serif;\\n margin: 0 0 12px;\\n}\\n.mat-h6, .mat-typography h6 {\\n font: normal calc(16px * 0.67)/24px OpenSans, sans-serif;\\n margin: 0 0 12px;\\n}\\n.mat-body-strong, .mat-body-2 {\\n font: 500 14px/24px OpenSans, sans-serif;\\n letter-spacing: normal;\\n}\\n.mat-body, .mat-body-1, .mat-typography {\\n font: normal 16px/24px OpenSans, sans-serif;\\n letter-spacing: normal;\\n}\\n.mat-body p, .mat-body-1 p, .mat-typography p {\\n margin: 0 0 12px;\\n}\\n.mat-small, .mat-caption {\\n font: 400 12px/20px OpenSans, sans-serif;\\n letter-spacing: normal;\\n}\\n.mat-display-4, .mat-typography .mat-display-4 {\\n font: 300 112px/112px OpenSans, sans-serif;\\n letter-spacing: -0.05em;\\n margin: 0 0 56px;\\n}\\n.mat-display-3, .mat-typography .mat-display-3 {\\n font: 400 56px/56px OpenSans, sans-serif;\\n letter-spacing: -0.02em;\\n margin: 0 0 64px;\\n}\\n.mat-display-2, .mat-typography .mat-display-2 {\\n font: 400 45px/48px OpenSans, sans-serif;\\n letter-spacing: -0.005em;\\n margin: 0 0 64px;\\n}\\n.mat-display-1, .mat-typography .mat-display-1 {\\n font: 400 34px/40px OpenSans, sans-serif;\\n letter-spacing: normal;\\n margin: 0 0 64px;\\n}\\n.mat-bottom-sheet-container {\\n font: normal 16px/24px OpenSans, sans-serif;\\n letter-spacing: normal;\\n}\\n.mat-button, .mat-raised-button, .mat-icon-button, .mat-stroked-button,\\n.mat-flat-button, .mat-fab, .mat-mini-fab {\\n font-family: OpenSans, sans-serif;\\n font-size: 14px;\\n font-weight: 500;\\n}\\n.mat-button-toggle {\\n font-family: OpenSans, sans-serif;\\n}\\n.mat-card {\\n font-family: OpenSans, sans-serif;\\n}\\n.mat-card-title {\\n font-size: 24px;\\n font-weight: 500;\\n}\\n.mat-card-header .mat-card-title {\\n font-size: 20px;\\n}\\n.mat-card-subtitle,\\n.mat-card-content {\\n font-size: 16px;\\n}\\n.mat-checkbox {\\n font-family: OpenSans, sans-serif;\\n}\\n.mat-checkbox-layout .mat-checkbox-label {\\n line-height: 24px;\\n}\\n.mat-chip {\\n font-size: 14px;\\n font-weight: 500;\\n}\\n.mat-chip .mat-chip-trailing-icon.mat-icon,\\n.mat-chip .mat-chip-remove.mat-icon {\\n font-size: 18px;\\n}\\n.mat-table {\\n font-family: OpenSans, sans-serif;\\n}\\n.mat-header-cell {\\n font-size: 12px;\\n font-weight: 500;\\n}\\n.mat-cell, .mat-footer-cell {\\n font-size: 16px;\\n}\\n.mat-calendar {\\n font-family: OpenSans, sans-serif;\\n}\\n.mat-calendar-body {\\n font-size: 13px;\\n}\\n.mat-calendar-body-label,\\n.mat-calendar-period-button {\\n font-size: 14px;\\n font-weight: 500;\\n}\\n.mat-calendar-table-header th {\\n font-size: 11px;\\n font-weight: normal;\\n}\\n.mat-dialog-title {\\n font: 500 20px/32px OpenSans, sans-serif;\\n letter-spacing: normal;\\n}\\n.mat-expansion-panel-header {\\n font-family: OpenSans, sans-serif;\\n font-size: 15px;\\n font-weight: 400;\\n}\\n.mat-expansion-panel-content {\\n font: normal 16px/24px OpenSans, sans-serif;\\n letter-spacing: normal;\\n}\\n.mat-form-field {\\n font-size: inherit;\\n font-weight: 400;\\n line-height: 1.125;\\n font-family: OpenSans, sans-serif;\\n letter-spacing: normal;\\n}\\n.mat-form-field-wrapper {\\n padding-bottom: 1.34375em;\\n}\\n.mat-form-field-prefix .mat-icon,\\n.mat-form-field-suffix .mat-icon {\\n font-size: 150%;\\n line-height: 1.125;\\n}\\n.mat-form-field-prefix .mat-icon-button,\\n.mat-form-field-suffix .mat-icon-button {\\n height: 1.5em;\\n width: 1.5em;\\n}\\n.mat-form-field-prefix .mat-icon-button .mat-icon,\\n.mat-form-field-suffix .mat-icon-button .mat-icon {\\n height: 1.125em;\\n line-height: 1.125;\\n}\\n.mat-form-field-infix {\\n padding: 0.5em 0;\\n border-top: 0.84375em solid transparent;\\n}\\n.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,\\n.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.34373em) scale(0.75);\\n width: 133.3333533333%;\\n}\\n.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.34372em) scale(0.75);\\n width: 133.3333633333%;\\n}\\n.mat-form-field-label-wrapper {\\n top: -0.84375em;\\n padding-top: 0.84375em;\\n}\\n.mat-form-field-label {\\n top: 1.34375em;\\n}\\n.mat-form-field-underline {\\n bottom: 1.34375em;\\n}\\n.mat-form-field-subscript-wrapper {\\n font-size: 75%;\\n margin-top: 0.6666666667em;\\n top: calc(100% - 1.7916666667em);\\n}\\n.mat-form-field-appearance-legacy .mat-form-field-wrapper {\\n padding-bottom: 1.25em;\\n}\\n.mat-form-field-appearance-legacy .mat-form-field-infix {\\n padding: 0.4375em 0;\\n}\\n.mat-form-field-appearance-legacy.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,\\n.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.28125em) scale(0.75) perspective(100px) translateZ(0.00106px);\\n -ms-transform: translateY(-1.28119em) scale(0.75);\\n width: 133.3333933333%;\\n}\\n.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-form-field-autofill-control:-webkit-autofill + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.28125em) scale(0.75) perspective(100px) translateZ(0.00107px);\\n -ms-transform: translateY(-1.28118em) scale(0.75);\\n width: 133.3334033333%;\\n}\\n.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.28125em) scale(0.75) perspective(100px) translateZ(0.00108px);\\n -ms-transform: translateY(-1.28117em) scale(0.75);\\n width: 133.3334133333%;\\n}\\n.mat-form-field-appearance-legacy .mat-form-field-label {\\n top: 1.28125em;\\n}\\n.mat-form-field-appearance-legacy .mat-form-field-underline {\\n bottom: 1.25em;\\n}\\n.mat-form-field-appearance-legacy .mat-form-field-subscript-wrapper {\\n margin-top: 0.5416666667em;\\n top: calc(100% - 1.6666666667em);\\n}\\n@media print {\\n .mat-form-field-appearance-legacy.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,\\n.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.28116em) scale(0.75);\\n }\\n .mat-form-field-appearance-legacy.mat-form-field-can-float .mat-form-field-autofill-control:-webkit-autofill + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.28115em) scale(0.75);\\n }\\n .mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.28114em) scale(0.75);\\n }\\n}\\n.mat-form-field-appearance-fill .mat-form-field-infix {\\n padding: 0.25em 0 0.75em 0;\\n}\\n.mat-form-field-appearance-fill .mat-form-field-label {\\n top: 1.09375em;\\n margin-top: -0.5em;\\n}\\n.mat-form-field-appearance-fill.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,\\n.mat-form-field-appearance-fill.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-0.59373em) scale(0.75);\\n width: 133.3333533333%;\\n}\\n.mat-form-field-appearance-fill.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-0.59372em) scale(0.75);\\n width: 133.3333633333%;\\n}\\n.mat-form-field-appearance-outline .mat-form-field-infix {\\n padding: 1em 0 1em 0;\\n}\\n.mat-form-field-appearance-outline .mat-form-field-label {\\n top: 1.84375em;\\n margin-top: -0.25em;\\n}\\n.mat-form-field-appearance-outline.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,\\n.mat-form-field-appearance-outline.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.59373em) scale(0.75);\\n width: 133.3333533333%;\\n}\\n.mat-form-field-appearance-outline.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.59372em) scale(0.75);\\n width: 133.3333633333%;\\n}\\n.mat-grid-tile-header,\\n.mat-grid-tile-footer {\\n font-size: 16px;\\n}\\n.mat-grid-tile-header .mat-line,\\n.mat-grid-tile-footer .mat-line {\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n display: block;\\n box-sizing: border-box;\\n}\\n.mat-grid-tile-header .mat-line:nth-child(n+2),\\n.mat-grid-tile-footer .mat-line:nth-child(n+2) {\\n font-size: 12px;\\n}\\ninput.mat-input-element {\\n margin-top: -0.0625em;\\n}\\n.mat-menu-item {\\n font-family: OpenSans, sans-serif;\\n font-size: 16px;\\n font-weight: normal;\\n}\\n.mat-paginator,\\n.mat-paginator-page-size .mat-select-trigger {\\n font-family: OpenSans, sans-serif;\\n font-size: 12px;\\n}\\n.mat-radio-button {\\n font-family: OpenSans, sans-serif;\\n}\\n.mat-select {\\n font-family: OpenSans, sans-serif;\\n}\\n.mat-select-trigger {\\n height: 1.125em;\\n}\\n.mat-slide-toggle-content {\\n font-family: OpenSans, sans-serif;\\n}\\n.mat-slider-thumb-label-text {\\n font-family: OpenSans, sans-serif;\\n font-size: 12px;\\n font-weight: 500;\\n}\\n.mat-stepper-vertical, .mat-stepper-horizontal {\\n font-family: OpenSans, sans-serif;\\n}\\n.mat-step-label {\\n font-size: 16px;\\n font-weight: normal;\\n}\\n.mat-step-sub-label-error {\\n font-weight: normal;\\n}\\n.mat-step-label-error {\\n font-size: 14px;\\n}\\n.mat-step-label-selected {\\n font-size: 14px;\\n font-weight: 500;\\n}\\n.mat-tab-group {\\n font-family: OpenSans, sans-serif;\\n}\\n.mat-tab-label, .mat-tab-link {\\n font-family: OpenSans, sans-serif;\\n font-size: 14px;\\n font-weight: 500;\\n}\\n.mat-toolbar,\\n.mat-toolbar h1,\\n.mat-toolbar h2,\\n.mat-toolbar h3,\\n.mat-toolbar h4,\\n.mat-toolbar h5,\\n.mat-toolbar h6 {\\n font: 500 20px/32px OpenSans, sans-serif;\\n letter-spacing: normal;\\n margin: 0;\\n}\\n.mat-tooltip {\\n font-family: OpenSans, sans-serif;\\n font-size: 10px;\\n padding-top: 6px;\\n padding-bottom: 6px;\\n}\\n.mat-tooltip-handset {\\n font-size: 14px;\\n padding-top: 8px;\\n padding-bottom: 8px;\\n}\\n.mat-list-item {\\n font-family: OpenSans, sans-serif;\\n}\\n.mat-list-option {\\n font-family: OpenSans, sans-serif;\\n}\\n.mat-list-base .mat-list-item {\\n font-size: 16px;\\n}\\n.mat-list-base .mat-list-item .mat-line {\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n display: block;\\n box-sizing: border-box;\\n}\\n.mat-list-base .mat-list-item .mat-line:nth-child(n+2) {\\n font-size: 16px;\\n}\\n.mat-list-base .mat-list-option {\\n font-size: 16px;\\n}\\n.mat-list-base .mat-list-option .mat-line {\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n display: block;\\n box-sizing: border-box;\\n}\\n.mat-list-base .mat-list-option .mat-line:nth-child(n+2) {\\n font-size: 16px;\\n}\\n.mat-list-base .mat-subheader {\\n font-family: OpenSans, sans-serif;\\n font-size: 14px;\\n font-weight: 500;\\n}\\n.mat-list-base[dense] .mat-list-item {\\n font-size: 12px;\\n}\\n.mat-list-base[dense] .mat-list-item .mat-line {\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n display: block;\\n box-sizing: border-box;\\n}\\n.mat-list-base[dense] .mat-list-item .mat-line:nth-child(n+2) {\\n font-size: 12px;\\n}\\n.mat-list-base[dense] .mat-list-option {\\n font-size: 12px;\\n}\\n.mat-list-base[dense] .mat-list-option .mat-line {\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n display: block;\\n box-sizing: border-box;\\n}\\n.mat-list-base[dense] .mat-list-option .mat-line:nth-child(n+2) {\\n font-size: 12px;\\n}\\n.mat-list-base[dense] .mat-subheader {\\n font-family: OpenSans, sans-serif;\\n font-size: 12px;\\n font-weight: 500;\\n}\\n.mat-option {\\n font-family: OpenSans, sans-serif;\\n font-size: 16px;\\n}\\n.mat-optgroup-label {\\n font: 500 14px/24px OpenSans, sans-serif;\\n letter-spacing: normal;\\n}\\n.mat-simple-snackbar {\\n font-family: OpenSans, sans-serif;\\n font-size: 16px;\\n}\\n.mat-simple-snackbar-action {\\n line-height: 1;\\n font-family: inherit;\\n font-size: inherit;\\n font-weight: 500;\\n}\\n.mat-tree {\\n font-family: OpenSans, sans-serif;\\n}\\n.mat-tree-node,\\n.mat-nested-tree-node {\\n font-weight: normal;\\n font-size: 16px;\\n}\\n.mat-typography h1, .mat-typography h2, .mat-typography h3, .mat-typography h4, .mat-typography h5, .mat-typography h6 {\\n font-family: BwModelica, monospace;\\n font-weight: bold;\\n}\\n.mat-ripple-element {\\n background-color: rgba(0, 0, 0, 0.1);\\n}\\n.mat-option {\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-option:hover:not(.mat-option-disabled), .mat-option:focus:not(.mat-option-disabled) {\\n background: rgba(0, 0, 0, 0.04);\\n}\\n.mat-option.mat-selected:not(.mat-option-multiple):not(.mat-option-disabled) {\\n background: rgba(0, 0, 0, 0.04);\\n}\\n.mat-option.mat-active {\\n background: rgba(0, 0, 0, 0.04);\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-option.mat-option-disabled {\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-primary .mat-option.mat-selected:not(.mat-option-disabled) {\\n color: #4775f5;\\n}\\n.mat-accent .mat-option.mat-selected:not(.mat-option-disabled) {\\n color: #f7cc71;\\n}\\n.mat-warn .mat-option.mat-selected:not(.mat-option-disabled) {\\n color: #fc8f76;\\n}\\n.mat-optgroup-label {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-optgroup-disabled .mat-optgroup-label {\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-pseudo-checkbox {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-pseudo-checkbox::after {\\n color: #fafafa;\\n}\\n.mat-pseudo-checkbox-disabled {\\n color: #b0b0b0;\\n}\\n.mat-primary .mat-pseudo-checkbox-checked,\\n.mat-primary .mat-pseudo-checkbox-indeterminate {\\n background: #4775f5;\\n}\\n.mat-pseudo-checkbox-checked,\\n.mat-pseudo-checkbox-indeterminate,\\n.mat-accent .mat-pseudo-checkbox-checked,\\n.mat-accent .mat-pseudo-checkbox-indeterminate {\\n background: #f7cc71;\\n}\\n.mat-warn .mat-pseudo-checkbox-checked,\\n.mat-warn .mat-pseudo-checkbox-indeterminate {\\n background: #fc8f76;\\n}\\n.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-disabled,\\n.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-disabled {\\n background: #b0b0b0;\\n}\\n.mat-app-background {\\n background-color: #fafafa;\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-elevation-z0 {\\n box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z1 {\\n box-shadow: 0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z2, .list-card {\\n box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z3 {\\n box-shadow: 0px 3px 3px -2px rgba(0, 0, 0, 0.2), 0px 3px 4px 0px rgba(0, 0, 0, 0.14), 0px 1px 8px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z4 {\\n box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z5 {\\n box-shadow: 0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 5px 8px 0px rgba(0, 0, 0, 0.14), 0px 1px 14px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z6 {\\n box-shadow: 0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z7 {\\n box-shadow: 0px 4px 5px -2px rgba(0, 0, 0, 0.2), 0px 7px 10px 1px rgba(0, 0, 0, 0.14), 0px 2px 16px 1px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z8, .list-card:hover {\\n box-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.2), 0px 8px 10px 1px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z9 {\\n box-shadow: 0px 5px 6px -3px rgba(0, 0, 0, 0.2), 0px 9px 12px 1px rgba(0, 0, 0, 0.14), 0px 3px 16px 2px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z10 {\\n box-shadow: 0px 6px 6px -3px rgba(0, 0, 0, 0.2), 0px 10px 14px 1px rgba(0, 0, 0, 0.14), 0px 4px 18px 3px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z11 {\\n box-shadow: 0px 6px 7px -4px rgba(0, 0, 0, 0.2), 0px 11px 15px 1px rgba(0, 0, 0, 0.14), 0px 4px 20px 3px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z12 {\\n box-shadow: 0px 7px 8px -4px rgba(0, 0, 0, 0.2), 0px 12px 17px 2px rgba(0, 0, 0, 0.14), 0px 5px 22px 4px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z13 {\\n box-shadow: 0px 7px 8px -4px rgba(0, 0, 0, 0.2), 0px 13px 19px 2px rgba(0, 0, 0, 0.14), 0px 5px 24px 4px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z14 {\\n box-shadow: 0px 7px 9px -4px rgba(0, 0, 0, 0.2), 0px 14px 21px 2px rgba(0, 0, 0, 0.14), 0px 5px 26px 4px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z15 {\\n box-shadow: 0px 8px 9px -5px rgba(0, 0, 0, 0.2), 0px 15px 22px 2px rgba(0, 0, 0, 0.14), 0px 6px 28px 5px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z16 {\\n box-shadow: 0px 8px 10px -5px rgba(0, 0, 0, 0.2), 0px 16px 24px 2px rgba(0, 0, 0, 0.14), 0px 6px 30px 5px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z17 {\\n box-shadow: 0px 8px 11px -5px rgba(0, 0, 0, 0.2), 0px 17px 26px 2px rgba(0, 0, 0, 0.14), 0px 6px 32px 5px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z18 {\\n box-shadow: 0px 9px 11px -5px rgba(0, 0, 0, 0.2), 0px 18px 28px 2px rgba(0, 0, 0, 0.14), 0px 7px 34px 6px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z19 {\\n box-shadow: 0px 9px 12px -6px rgba(0, 0, 0, 0.2), 0px 19px 29px 2px rgba(0, 0, 0, 0.14), 0px 7px 36px 6px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z20 {\\n box-shadow: 0px 10px 13px -6px rgba(0, 0, 0, 0.2), 0px 20px 31px 3px rgba(0, 0, 0, 0.14), 0px 8px 38px 7px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z21 {\\n box-shadow: 0px 10px 13px -6px rgba(0, 0, 0, 0.2), 0px 21px 33px 3px rgba(0, 0, 0, 0.14), 0px 8px 40px 7px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z22 {\\n box-shadow: 0px 10px 14px -6px rgba(0, 0, 0, 0.2), 0px 22px 35px 3px rgba(0, 0, 0, 0.14), 0px 8px 42px 7px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z23 {\\n box-shadow: 0px 11px 14px -7px rgba(0, 0, 0, 0.2), 0px 23px 36px 3px rgba(0, 0, 0, 0.14), 0px 9px 44px 8px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z24 {\\n box-shadow: 0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 9px 46px 8px rgba(0, 0, 0, 0.12);\\n}\\n.mat-theme-loaded-marker {\\n display: none;\\n}\\n.mat-autocomplete-panel {\\n background: white;\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-autocomplete-panel:not([class*=mat-elevation-z]) {\\n box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-autocomplete-panel .mat-option.mat-selected:not(.mat-active):not(:hover) {\\n background: white;\\n}\\n.mat-autocomplete-panel .mat-option.mat-selected:not(.mat-active):not(:hover):not(.mat-option-disabled) {\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-badge-content {\\n color: white;\\n background: #4775f5;\\n}\\n.cdk-high-contrast-active .mat-badge-content {\\n outline: solid 1px;\\n border-radius: 0;\\n}\\n.mat-badge-accent .mat-badge-content {\\n background: #f7cc71;\\n color: white;\\n}\\n.mat-badge-warn .mat-badge-content {\\n color: white;\\n background: #fc8f76;\\n}\\n.mat-badge {\\n position: relative;\\n}\\n.mat-badge-hidden .mat-badge-content {\\n display: none;\\n}\\n.mat-badge-disabled .mat-badge-content {\\n background: #b9b9b9;\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-badge-content {\\n position: absolute;\\n text-align: center;\\n display: inline-block;\\n border-radius: 50%;\\n transition: transform 200ms ease-in-out;\\n transform: scale(0.6);\\n overflow: hidden;\\n white-space: nowrap;\\n text-overflow: ellipsis;\\n pointer-events: none;\\n}\\n.ng-animate-disabled .mat-badge-content,\\n.mat-badge-content._mat-animation-noopable {\\n transition: none;\\n}\\n.mat-badge-content.mat-badge-active {\\n transform: none;\\n}\\n.mat-badge-small .mat-badge-content {\\n width: 16px;\\n height: 16px;\\n line-height: 16px;\\n}\\n.mat-badge-small.mat-badge-above .mat-badge-content {\\n top: -8px;\\n}\\n.mat-badge-small.mat-badge-below .mat-badge-content {\\n bottom: -8px;\\n}\\n.mat-badge-small.mat-badge-before .mat-badge-content {\\n left: -16px;\\n}\\n[dir=rtl] .mat-badge-small.mat-badge-before .mat-badge-content {\\n left: auto;\\n right: -16px;\\n}\\n.mat-badge-small.mat-badge-after .mat-badge-content {\\n right: -16px;\\n}\\n[dir=rtl] .mat-badge-small.mat-badge-after .mat-badge-content {\\n right: auto;\\n left: -16px;\\n}\\n.mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content {\\n left: -8px;\\n}\\n[dir=rtl] .mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content {\\n left: auto;\\n right: -8px;\\n}\\n.mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content {\\n right: -8px;\\n}\\n[dir=rtl] .mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content {\\n right: auto;\\n left: -8px;\\n}\\n.mat-badge-medium .mat-badge-content {\\n width: 22px;\\n height: 22px;\\n line-height: 22px;\\n}\\n.mat-badge-medium.mat-badge-above .mat-badge-content {\\n top: -11px;\\n}\\n.mat-badge-medium.mat-badge-below .mat-badge-content {\\n bottom: -11px;\\n}\\n.mat-badge-medium.mat-badge-before .mat-badge-content {\\n left: -22px;\\n}\\n[dir=rtl] .mat-badge-medium.mat-badge-before .mat-badge-content {\\n left: auto;\\n right: -22px;\\n}\\n.mat-badge-medium.mat-badge-after .mat-badge-content {\\n right: -22px;\\n}\\n[dir=rtl] .mat-badge-medium.mat-badge-after .mat-badge-content {\\n right: auto;\\n left: -22px;\\n}\\n.mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content {\\n left: -11px;\\n}\\n[dir=rtl] .mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content {\\n left: auto;\\n right: -11px;\\n}\\n.mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content {\\n right: -11px;\\n}\\n[dir=rtl] .mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content {\\n right: auto;\\n left: -11px;\\n}\\n.mat-badge-large .mat-badge-content {\\n width: 28px;\\n height: 28px;\\n line-height: 28px;\\n}\\n.mat-badge-large.mat-badge-above .mat-badge-content {\\n top: -14px;\\n}\\n.mat-badge-large.mat-badge-below .mat-badge-content {\\n bottom: -14px;\\n}\\n.mat-badge-large.mat-badge-before .mat-badge-content {\\n left: -28px;\\n}\\n[dir=rtl] .mat-badge-large.mat-badge-before .mat-badge-content {\\n left: auto;\\n right: -28px;\\n}\\n.mat-badge-large.mat-badge-after .mat-badge-content {\\n right: -28px;\\n}\\n[dir=rtl] .mat-badge-large.mat-badge-after .mat-badge-content {\\n right: auto;\\n left: -28px;\\n}\\n.mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content {\\n left: -14px;\\n}\\n[dir=rtl] .mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content {\\n left: auto;\\n right: -14px;\\n}\\n.mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content {\\n right: -14px;\\n}\\n[dir=rtl] .mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content {\\n right: auto;\\n left: -14px;\\n}\\n.mat-bottom-sheet-container {\\n box-shadow: 0px 8px 10px -5px rgba(0, 0, 0, 0.2), 0px 16px 24px 2px rgba(0, 0, 0, 0.14), 0px 6px 30px 5px rgba(0, 0, 0, 0.12);\\n background: white;\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-button, .mat-icon-button, .mat-stroked-button {\\n color: inherit;\\n background: transparent;\\n}\\n.mat-button.mat-primary, .mat-icon-button.mat-primary, .mat-stroked-button.mat-primary {\\n color: #4775f5;\\n}\\n.mat-button.mat-accent, .mat-icon-button.mat-accent, .mat-stroked-button.mat-accent {\\n color: #f7cc71;\\n}\\n.mat-button.mat-warn, .mat-icon-button.mat-warn, .mat-stroked-button.mat-warn {\\n color: #fc8f76;\\n}\\n.mat-button.mat-primary.mat-button-disabled, .mat-button.mat-accent.mat-button-disabled, .mat-button.mat-warn.mat-button-disabled, .mat-button.mat-button-disabled.mat-button-disabled, .mat-icon-button.mat-primary.mat-button-disabled, .mat-icon-button.mat-accent.mat-button-disabled, .mat-icon-button.mat-warn.mat-button-disabled, .mat-icon-button.mat-button-disabled.mat-button-disabled, .mat-stroked-button.mat-primary.mat-button-disabled, .mat-stroked-button.mat-accent.mat-button-disabled, .mat-stroked-button.mat-warn.mat-button-disabled, .mat-stroked-button.mat-button-disabled.mat-button-disabled {\\n color: rgba(0, 0, 0, 0.26);\\n}\\n.mat-button.mat-primary .mat-button-focus-overlay, .mat-icon-button.mat-primary .mat-button-focus-overlay, .mat-stroked-button.mat-primary .mat-button-focus-overlay {\\n background-color: #4775f5;\\n}\\n.mat-button.mat-accent .mat-button-focus-overlay, .mat-icon-button.mat-accent .mat-button-focus-overlay, .mat-stroked-button.mat-accent .mat-button-focus-overlay {\\n background-color: #f7cc71;\\n}\\n.mat-button.mat-warn .mat-button-focus-overlay, .mat-icon-button.mat-warn .mat-button-focus-overlay, .mat-stroked-button.mat-warn .mat-button-focus-overlay {\\n background-color: #fc8f76;\\n}\\n.mat-button.mat-button-disabled .mat-button-focus-overlay, .mat-icon-button.mat-button-disabled .mat-button-focus-overlay, .mat-stroked-button.mat-button-disabled .mat-button-focus-overlay {\\n background-color: transparent;\\n}\\n.mat-button .mat-ripple-element, .mat-icon-button .mat-ripple-element, .mat-stroked-button .mat-ripple-element {\\n opacity: 0.1;\\n background-color: currentColor;\\n}\\n.mat-button-focus-overlay {\\n background: black;\\n}\\n.mat-stroked-button:not(.mat-button-disabled) {\\n border-color: rgba(0, 0, 0, 0.12);\\n}\\n.mat-flat-button, .mat-raised-button, .mat-fab, .mat-mini-fab {\\n color: rgba(0, 0, 0, 0.87);\\n background-color: white;\\n}\\n.mat-flat-button.mat-primary, .mat-raised-button.mat-primary, .mat-fab.mat-primary, .mat-mini-fab.mat-primary {\\n color: white;\\n}\\n.mat-flat-button.mat-accent, .mat-raised-button.mat-accent, .mat-fab.mat-accent, .mat-mini-fab.mat-accent {\\n color: white;\\n}\\n.mat-flat-button.mat-warn, .mat-raised-button.mat-warn, .mat-fab.mat-warn, .mat-mini-fab.mat-warn {\\n color: white;\\n}\\n.mat-flat-button.mat-primary.mat-button-disabled, .mat-flat-button.mat-accent.mat-button-disabled, .mat-flat-button.mat-warn.mat-button-disabled, .mat-flat-button.mat-button-disabled.mat-button-disabled, .mat-raised-button.mat-primary.mat-button-disabled, .mat-raised-button.mat-accent.mat-button-disabled, .mat-raised-button.mat-warn.mat-button-disabled, .mat-raised-button.mat-button-disabled.mat-button-disabled, .mat-fab.mat-primary.mat-button-disabled, .mat-fab.mat-accent.mat-button-disabled, .mat-fab.mat-warn.mat-button-disabled, .mat-fab.mat-button-disabled.mat-button-disabled, .mat-mini-fab.mat-primary.mat-button-disabled, .mat-mini-fab.mat-accent.mat-button-disabled, .mat-mini-fab.mat-warn.mat-button-disabled, .mat-mini-fab.mat-button-disabled.mat-button-disabled {\\n color: rgba(0, 0, 0, 0.26);\\n}\\n.mat-flat-button.mat-primary, .mat-raised-button.mat-primary, .mat-fab.mat-primary, .mat-mini-fab.mat-primary {\\n background-color: #4775f5;\\n}\\n.mat-flat-button.mat-accent, .mat-raised-button.mat-accent, .mat-fab.mat-accent, .mat-mini-fab.mat-accent {\\n background-color: #f7cc71;\\n}\\n.mat-flat-button.mat-warn, .mat-raised-button.mat-warn, .mat-fab.mat-warn, .mat-mini-fab.mat-warn {\\n background-color: #fc8f76;\\n}\\n.mat-flat-button.mat-primary.mat-button-disabled, .mat-flat-button.mat-accent.mat-button-disabled, .mat-flat-button.mat-warn.mat-button-disabled, .mat-flat-button.mat-button-disabled.mat-button-disabled, .mat-raised-button.mat-primary.mat-button-disabled, .mat-raised-button.mat-accent.mat-button-disabled, .mat-raised-button.mat-warn.mat-button-disabled, .mat-raised-button.mat-button-disabled.mat-button-disabled, .mat-fab.mat-primary.mat-button-disabled, .mat-fab.mat-accent.mat-button-disabled, .mat-fab.mat-warn.mat-button-disabled, .mat-fab.mat-button-disabled.mat-button-disabled, .mat-mini-fab.mat-primary.mat-button-disabled, .mat-mini-fab.mat-accent.mat-button-disabled, .mat-mini-fab.mat-warn.mat-button-disabled, .mat-mini-fab.mat-button-disabled.mat-button-disabled {\\n background-color: rgba(0, 0, 0, 0.12);\\n}\\n.mat-flat-button.mat-primary .mat-ripple-element, .mat-raised-button.mat-primary .mat-ripple-element, .mat-fab.mat-primary .mat-ripple-element, .mat-mini-fab.mat-primary .mat-ripple-element {\\n background-color: rgba(255, 255, 255, 0.1);\\n}\\n.mat-flat-button.mat-accent .mat-ripple-element, .mat-raised-button.mat-accent .mat-ripple-element, .mat-fab.mat-accent .mat-ripple-element, .mat-mini-fab.mat-accent .mat-ripple-element {\\n background-color: rgba(255, 255, 255, 0.1);\\n}\\n.mat-flat-button.mat-warn .mat-ripple-element, .mat-raised-button.mat-warn .mat-ripple-element, .mat-fab.mat-warn .mat-ripple-element, .mat-mini-fab.mat-warn .mat-ripple-element {\\n background-color: rgba(255, 255, 255, 0.1);\\n}\\n.mat-stroked-button:not([class*=mat-elevation-z]), .mat-flat-button:not([class*=mat-elevation-z]) {\\n box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-raised-button:not([class*=mat-elevation-z]) {\\n box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-raised-button:not(.mat-button-disabled):active:not([class*=mat-elevation-z]) {\\n box-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.2), 0px 8px 10px 1px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0, 0, 0, 0.12);\\n}\\n.mat-raised-button.mat-button-disabled:not([class*=mat-elevation-z]) {\\n box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-fab:not([class*=mat-elevation-z]), .mat-mini-fab:not([class*=mat-elevation-z]) {\\n box-shadow: 0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-fab:not(.mat-button-disabled):active:not([class*=mat-elevation-z]), .mat-mini-fab:not(.mat-button-disabled):active:not([class*=mat-elevation-z]) {\\n box-shadow: 0px 7px 8px -4px rgba(0, 0, 0, 0.2), 0px 12px 17px 2px rgba(0, 0, 0, 0.14), 0px 5px 22px 4px rgba(0, 0, 0, 0.12);\\n}\\n.mat-fab.mat-button-disabled:not([class*=mat-elevation-z]), .mat-mini-fab.mat-button-disabled:not([class*=mat-elevation-z]) {\\n box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-button-toggle-standalone,\\n.mat-button-toggle-group {\\n box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-button-toggle-standalone.mat-button-toggle-appearance-standard,\\n.mat-button-toggle-group-appearance-standard {\\n box-shadow: none;\\n}\\n.mat-button-toggle {\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-button-toggle .mat-button-toggle-focus-overlay {\\n background-color: rgba(0, 0, 0, 0.12);\\n}\\n.mat-button-toggle-appearance-standard {\\n color: rgba(0, 0, 0, 0.87);\\n background: white;\\n}\\n.mat-button-toggle-appearance-standard .mat-button-toggle-focus-overlay {\\n background-color: black;\\n}\\n.mat-button-toggle-group-appearance-standard .mat-button-toggle + .mat-button-toggle {\\n border-left: solid 1px rgba(0, 0, 0, 0.12);\\n}\\n[dir=rtl] .mat-button-toggle-group-appearance-standard .mat-button-toggle + .mat-button-toggle {\\n border-left: none;\\n border-right: solid 1px rgba(0, 0, 0, 0.12);\\n}\\n.mat-button-toggle-group-appearance-standard.mat-button-toggle-vertical .mat-button-toggle + .mat-button-toggle {\\n border-left: none;\\n border-right: none;\\n border-top: solid 1px rgba(0, 0, 0, 0.12);\\n}\\n.mat-button-toggle-checked {\\n background-color: #e0e0e0;\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-button-toggle-checked.mat-button-toggle-appearance-standard {\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-button-toggle-disabled {\\n color: rgba(0, 0, 0, 0.26);\\n background-color: #eeeeee;\\n}\\n.mat-button-toggle-disabled.mat-button-toggle-appearance-standard {\\n background: white;\\n}\\n.mat-button-toggle-disabled.mat-button-toggle-checked {\\n background-color: #bdbdbd;\\n}\\n.mat-button-toggle-standalone.mat-button-toggle-appearance-standard,\\n.mat-button-toggle-group-appearance-standard {\\n border: solid 1px rgba(0, 0, 0, 0.12);\\n}\\n.mat-button-toggle-appearance-standard .mat-button-toggle-label-content {\\n line-height: 48px;\\n}\\n.mat-card {\\n background: white;\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-card:not([class*=mat-elevation-z]) {\\n box-shadow: 0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-card.mat-card-flat:not([class*=mat-elevation-z]) {\\n box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-card-subtitle {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-checkbox-frame {\\n border-color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-checkbox-checkmark {\\n fill: #fafafa;\\n}\\n.mat-checkbox-checkmark-path {\\n stroke: #fafafa !important;\\n}\\n.mat-checkbox-mixedmark {\\n background-color: #fafafa;\\n}\\n.mat-checkbox-indeterminate.mat-primary .mat-checkbox-background, .mat-checkbox-checked.mat-primary .mat-checkbox-background {\\n background-color: #4775f5;\\n}\\n.mat-checkbox-indeterminate.mat-accent .mat-checkbox-background, .mat-checkbox-checked.mat-accent .mat-checkbox-background {\\n background-color: #f7cc71;\\n}\\n.mat-checkbox-indeterminate.mat-warn .mat-checkbox-background, .mat-checkbox-checked.mat-warn .mat-checkbox-background {\\n background-color: #fc8f76;\\n}\\n.mat-checkbox-disabled.mat-checkbox-checked .mat-checkbox-background, .mat-checkbox-disabled.mat-checkbox-indeterminate .mat-checkbox-background {\\n background-color: #b0b0b0;\\n}\\n.mat-checkbox-disabled:not(.mat-checkbox-checked) .mat-checkbox-frame {\\n border-color: #b0b0b0;\\n}\\n.mat-checkbox-disabled .mat-checkbox-label {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-checkbox .mat-ripple-element {\\n background-color: black;\\n}\\n.mat-checkbox-checked:not(.mat-checkbox-disabled).mat-primary .mat-ripple-element,\\n.mat-checkbox:active:not(.mat-checkbox-disabled).mat-primary .mat-ripple-element {\\n background: #4775f5;\\n}\\n.mat-checkbox-checked:not(.mat-checkbox-disabled).mat-accent .mat-ripple-element,\\n.mat-checkbox:active:not(.mat-checkbox-disabled).mat-accent .mat-ripple-element {\\n background: #f7cc71;\\n}\\n.mat-checkbox-checked:not(.mat-checkbox-disabled).mat-warn .mat-ripple-element,\\n.mat-checkbox:active:not(.mat-checkbox-disabled).mat-warn .mat-ripple-element {\\n background: #fc8f76;\\n}\\n.mat-chip.mat-standard-chip {\\n background-color: #e0e0e0;\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-chip.mat-standard-chip .mat-chip-remove {\\n color: rgba(0, 0, 0, 0.87);\\n opacity: 0.4;\\n}\\n.mat-chip.mat-standard-chip:not(.mat-chip-disabled):active {\\n box-shadow: 0px 3px 3px -2px rgba(0, 0, 0, 0.2), 0px 3px 4px 0px rgba(0, 0, 0, 0.14), 0px 1px 8px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-chip.mat-standard-chip:not(.mat-chip-disabled) .mat-chip-remove:hover {\\n opacity: 0.54;\\n}\\n.mat-chip.mat-standard-chip.mat-chip-disabled {\\n opacity: 0.4;\\n}\\n.mat-chip.mat-standard-chip::after {\\n background: black;\\n}\\n.mat-chip.mat-standard-chip.mat-chip-selected.mat-primary {\\n background-color: #4775f5;\\n color: white;\\n}\\n.mat-chip.mat-standard-chip.mat-chip-selected.mat-primary .mat-chip-remove {\\n color: white;\\n opacity: 0.4;\\n}\\n.mat-chip.mat-standard-chip.mat-chip-selected.mat-primary .mat-ripple-element {\\n background-color: rgba(255, 255, 255, 0.1);\\n}\\n.mat-chip.mat-standard-chip.mat-chip-selected.mat-warn {\\n background-color: #fc8f76;\\n color: white;\\n}\\n.mat-chip.mat-standard-chip.mat-chip-selected.mat-warn .mat-chip-remove {\\n color: white;\\n opacity: 0.4;\\n}\\n.mat-chip.mat-standard-chip.mat-chip-selected.mat-warn .mat-ripple-element {\\n background-color: rgba(255, 255, 255, 0.1);\\n}\\n.mat-chip.mat-standard-chip.mat-chip-selected.mat-accent {\\n background-color: #f7cc71;\\n color: white;\\n}\\n.mat-chip.mat-standard-chip.mat-chip-selected.mat-accent .mat-chip-remove {\\n color: white;\\n opacity: 0.4;\\n}\\n.mat-chip.mat-standard-chip.mat-chip-selected.mat-accent .mat-ripple-element {\\n background-color: rgba(255, 255, 255, 0.1);\\n}\\n.mat-table {\\n background: white;\\n}\\n.mat-table thead, .mat-table tbody, .mat-table tfoot,\\nmat-header-row, mat-row, mat-footer-row,\\n[mat-header-row], [mat-row], [mat-footer-row],\\n.mat-table-sticky {\\n background: inherit;\\n}\\nmat-row, mat-header-row, mat-footer-row,\\nth.mat-header-cell, td.mat-cell, td.mat-footer-cell {\\n border-bottom-color: rgba(0, 0, 0, 0.12);\\n}\\n.mat-header-cell {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-cell, .mat-footer-cell {\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-calendar-arrow {\\n border-top-color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-datepicker-toggle,\\n.mat-datepicker-content .mat-calendar-next-button,\\n.mat-datepicker-content .mat-calendar-previous-button {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-calendar-table-header {\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-calendar-table-header-divider::after {\\n background: rgba(0, 0, 0, 0.12);\\n}\\n.mat-calendar-body-label {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-calendar-body-cell-content,\\n.mat-date-range-input-separator {\\n color: rgba(0, 0, 0, 0.87);\\n border-color: transparent;\\n}\\n.mat-calendar-body-disabled > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical) {\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-form-field-disabled .mat-date-range-input-separator {\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-calendar-body-in-preview {\\n color: rgba(0, 0, 0, 0.24);\\n}\\n.mat-calendar-body-today:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical) {\\n border-color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-calendar-body-disabled > .mat-calendar-body-today:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical) {\\n border-color: rgba(0, 0, 0, 0.18);\\n}\\n.mat-calendar-body-in-range::before {\\n background: rgba(71, 117, 245, 0.2);\\n}\\n.mat-calendar-body-comparison-identical,\\n.mat-calendar-body-in-comparison-range::before {\\n background: rgba(249, 171, 0, 0.2);\\n}\\n.mat-calendar-body-comparison-bridge-start::before,\\n[dir=rtl] .mat-calendar-body-comparison-bridge-end::before {\\n background: linear-gradient(to right, rgba(71, 117, 245, 0.2) 50%, rgba(249, 171, 0, 0.2) 50%);\\n}\\n.mat-calendar-body-comparison-bridge-end::before,\\n[dir=rtl] .mat-calendar-body-comparison-bridge-start::before {\\n background: linear-gradient(to left, rgba(71, 117, 245, 0.2) 50%, rgba(249, 171, 0, 0.2) 50%);\\n}\\n.mat-calendar-body-in-range > .mat-calendar-body-comparison-identical,\\n.mat-calendar-body-in-comparison-range.mat-calendar-body-in-range::after {\\n background: #a8dab5;\\n}\\n.mat-calendar-body-comparison-identical.mat-calendar-body-selected,\\n.mat-calendar-body-in-comparison-range > .mat-calendar-body-selected {\\n background: #46a35e;\\n}\\n.mat-calendar-body-selected {\\n background-color: #4775f5;\\n color: white;\\n}\\n.mat-calendar-body-disabled > .mat-calendar-body-selected {\\n background-color: rgba(71, 117, 245, 0.4);\\n}\\n.mat-calendar-body-today.mat-calendar-body-selected {\\n box-shadow: inset 0 0 0 1px white;\\n}\\n.mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),\\n.cdk-keyboard-focused .mat-calendar-body-active > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),\\n.cdk-program-focused .mat-calendar-body-active > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical) {\\n background-color: rgba(71, 117, 245, 0.3);\\n}\\n.mat-datepicker-content {\\n box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12);\\n background-color: white;\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-datepicker-content.mat-accent .mat-calendar-body-in-range::before {\\n background: rgba(247, 204, 113, 0.2);\\n}\\n.mat-datepicker-content.mat-accent .mat-calendar-body-comparison-identical,\\n.mat-datepicker-content.mat-accent .mat-calendar-body-in-comparison-range::before {\\n background: rgba(249, 171, 0, 0.2);\\n}\\n.mat-datepicker-content.mat-accent .mat-calendar-body-comparison-bridge-start::before,\\n.mat-datepicker-content.mat-accent [dir=rtl] .mat-calendar-body-comparison-bridge-end::before {\\n background: linear-gradient(to right, rgba(247, 204, 113, 0.2) 50%, rgba(249, 171, 0, 0.2) 50%);\\n}\\n.mat-datepicker-content.mat-accent .mat-calendar-body-comparison-bridge-end::before,\\n.mat-datepicker-content.mat-accent [dir=rtl] .mat-calendar-body-comparison-bridge-start::before {\\n background: linear-gradient(to left, rgba(247, 204, 113, 0.2) 50%, rgba(249, 171, 0, 0.2) 50%);\\n}\\n.mat-datepicker-content.mat-accent .mat-calendar-body-in-range > .mat-calendar-body-comparison-identical,\\n.mat-datepicker-content.mat-accent .mat-calendar-body-in-comparison-range.mat-calendar-body-in-range::after {\\n background: #a8dab5;\\n}\\n.mat-datepicker-content.mat-accent .mat-calendar-body-comparison-identical.mat-calendar-body-selected,\\n.mat-datepicker-content.mat-accent .mat-calendar-body-in-comparison-range > .mat-calendar-body-selected {\\n background: #46a35e;\\n}\\n.mat-datepicker-content.mat-accent .mat-calendar-body-selected {\\n background-color: #f7cc71;\\n color: white;\\n}\\n.mat-datepicker-content.mat-accent .mat-calendar-body-disabled > .mat-calendar-body-selected {\\n background-color: rgba(247, 204, 113, 0.4);\\n}\\n.mat-datepicker-content.mat-accent .mat-calendar-body-today.mat-calendar-body-selected {\\n box-shadow: inset 0 0 0 1px white;\\n}\\n.mat-datepicker-content.mat-accent .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),\\n.mat-datepicker-content.mat-accent .cdk-keyboard-focused .mat-calendar-body-active > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),\\n.mat-datepicker-content.mat-accent .cdk-program-focused .mat-calendar-body-active > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical) {\\n background-color: rgba(247, 204, 113, 0.3);\\n}\\n.mat-datepicker-content.mat-warn .mat-calendar-body-in-range::before {\\n background: rgba(252, 143, 118, 0.2);\\n}\\n.mat-datepicker-content.mat-warn .mat-calendar-body-comparison-identical,\\n.mat-datepicker-content.mat-warn .mat-calendar-body-in-comparison-range::before {\\n background: rgba(249, 171, 0, 0.2);\\n}\\n.mat-datepicker-content.mat-warn .mat-calendar-body-comparison-bridge-start::before,\\n.mat-datepicker-content.mat-warn [dir=rtl] .mat-calendar-body-comparison-bridge-end::before {\\n background: linear-gradient(to right, rgba(252, 143, 118, 0.2) 50%, rgba(249, 171, 0, 0.2) 50%);\\n}\\n.mat-datepicker-content.mat-warn .mat-calendar-body-comparison-bridge-end::before,\\n.mat-datepicker-content.mat-warn [dir=rtl] .mat-calendar-body-comparison-bridge-start::before {\\n background: linear-gradient(to left, rgba(252, 143, 118, 0.2) 50%, rgba(249, 171, 0, 0.2) 50%);\\n}\\n.mat-datepicker-content.mat-warn .mat-calendar-body-in-range > .mat-calendar-body-comparison-identical,\\n.mat-datepicker-content.mat-warn .mat-calendar-body-in-comparison-range.mat-calendar-body-in-range::after {\\n background: #a8dab5;\\n}\\n.mat-datepicker-content.mat-warn .mat-calendar-body-comparison-identical.mat-calendar-body-selected,\\n.mat-datepicker-content.mat-warn .mat-calendar-body-in-comparison-range > .mat-calendar-body-selected {\\n background: #46a35e;\\n}\\n.mat-datepicker-content.mat-warn .mat-calendar-body-selected {\\n background-color: #fc8f76;\\n color: white;\\n}\\n.mat-datepicker-content.mat-warn .mat-calendar-body-disabled > .mat-calendar-body-selected {\\n background-color: rgba(252, 143, 118, 0.4);\\n}\\n.mat-datepicker-content.mat-warn .mat-calendar-body-today.mat-calendar-body-selected {\\n box-shadow: inset 0 0 0 1px white;\\n}\\n.mat-datepicker-content.mat-warn .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),\\n.mat-datepicker-content.mat-warn .cdk-keyboard-focused .mat-calendar-body-active > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),\\n.mat-datepicker-content.mat-warn .cdk-program-focused .mat-calendar-body-active > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical) {\\n background-color: rgba(252, 143, 118, 0.3);\\n}\\n.mat-datepicker-content-touch {\\n box-shadow: 0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 9px 46px 8px rgba(0, 0, 0, 0.12);\\n}\\n.mat-datepicker-toggle-active {\\n color: #4775f5;\\n}\\n.mat-datepicker-toggle-active.mat-accent {\\n color: #f7cc71;\\n}\\n.mat-datepicker-toggle-active.mat-warn {\\n color: #fc8f76;\\n}\\n.mat-date-range-input-inner[disabled] {\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-dialog-container {\\n box-shadow: 0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 9px 46px 8px rgba(0, 0, 0, 0.12);\\n background: white;\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-divider {\\n border-top-color: rgba(0, 0, 0, 0.12);\\n}\\n.mat-divider-vertical {\\n border-right-color: rgba(0, 0, 0, 0.12);\\n}\\n.mat-expansion-panel {\\n background: white;\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-expansion-panel:not([class*=mat-elevation-z]) {\\n box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-action-row {\\n border-top-color: rgba(0, 0, 0, 0.12);\\n}\\n.mat-expansion-panel .mat-expansion-panel-header.cdk-keyboard-focused:not([aria-disabled=true]), .mat-expansion-panel .mat-expansion-panel-header.cdk-program-focused:not([aria-disabled=true]), .mat-expansion-panel:not(.mat-expanded) .mat-expansion-panel-header:hover:not([aria-disabled=true]) {\\n background: rgba(0, 0, 0, 0.04);\\n}\\n@media (hover: none) {\\n .mat-expansion-panel:not(.mat-expanded):not([aria-disabled=true]) .mat-expansion-panel-header:hover {\\n background: white;\\n }\\n}\\n.mat-expansion-panel-header-title {\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-expansion-panel-header-description,\\n.mat-expansion-indicator::after {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-expansion-panel-header[aria-disabled=true] {\\n color: rgba(0, 0, 0, 0.26);\\n}\\n.mat-expansion-panel-header[aria-disabled=true] .mat-expansion-panel-header-title,\\n.mat-expansion-panel-header[aria-disabled=true] .mat-expansion-panel-header-description {\\n color: inherit;\\n}\\n.mat-expansion-panel-header {\\n height: 48px;\\n}\\n.mat-expansion-panel-header.mat-expanded {\\n height: 64px;\\n}\\n.mat-form-field-label {\\n color: rgba(0, 0, 0, 0.6);\\n}\\n.mat-hint {\\n color: rgba(0, 0, 0, 0.6);\\n}\\n.mat-form-field.mat-focused .mat-form-field-label {\\n color: #4775f5;\\n}\\n.mat-form-field.mat-focused .mat-form-field-label.mat-accent {\\n color: #f7cc71;\\n}\\n.mat-form-field.mat-focused .mat-form-field-label.mat-warn {\\n color: #fc8f76;\\n}\\n.mat-focused .mat-form-field-required-marker {\\n color: #f7cc71;\\n}\\n.mat-form-field-ripple {\\n background-color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-form-field.mat-focused .mat-form-field-ripple {\\n background-color: #4775f5;\\n}\\n.mat-form-field.mat-focused .mat-form-field-ripple.mat-accent {\\n background-color: #f7cc71;\\n}\\n.mat-form-field.mat-focused .mat-form-field-ripple.mat-warn {\\n background-color: #fc8f76;\\n}\\n.mat-form-field-type-mat-native-select.mat-focused:not(.mat-form-field-invalid) .mat-form-field-infix::after {\\n color: #4775f5;\\n}\\n.mat-form-field-type-mat-native-select.mat-focused:not(.mat-form-field-invalid).mat-accent .mat-form-field-infix::after {\\n color: #f7cc71;\\n}\\n.mat-form-field-type-mat-native-select.mat-focused:not(.mat-form-field-invalid).mat-warn .mat-form-field-infix::after {\\n color: #fc8f76;\\n}\\n.mat-form-field.mat-form-field-invalid .mat-form-field-label {\\n color: #fc8f76;\\n}\\n.mat-form-field.mat-form-field-invalid .mat-form-field-label.mat-accent,\\n.mat-form-field.mat-form-field-invalid .mat-form-field-label .mat-form-field-required-marker {\\n color: #fc8f76;\\n}\\n.mat-form-field.mat-form-field-invalid .mat-form-field-ripple,\\n.mat-form-field.mat-form-field-invalid .mat-form-field-ripple.mat-accent {\\n background-color: #fc8f76;\\n}\\n.mat-error {\\n color: #fc8f76;\\n}\\n.mat-form-field-appearance-legacy .mat-form-field-label {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-form-field-appearance-legacy .mat-hint {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-form-field-appearance-legacy .mat-form-field-underline {\\n background-color: rgba(0, 0, 0, 0.42);\\n}\\n.mat-form-field-appearance-legacy.mat-form-field-disabled .mat-form-field-underline {\\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.42) 0%, rgba(0, 0, 0, 0.42) 33%, transparent 0%);\\n background-size: 4px 100%;\\n background-repeat: repeat-x;\\n}\\n.mat-form-field-appearance-standard .mat-form-field-underline {\\n background-color: rgba(0, 0, 0, 0.42);\\n}\\n.mat-form-field-appearance-standard.mat-form-field-disabled .mat-form-field-underline {\\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.42) 0%, rgba(0, 0, 0, 0.42) 33%, transparent 0%);\\n background-size: 4px 100%;\\n background-repeat: repeat-x;\\n}\\n.mat-form-field-appearance-fill .mat-form-field-flex {\\n background-color: rgba(0, 0, 0, 0.04);\\n}\\n.mat-form-field-appearance-fill.mat-form-field-disabled .mat-form-field-flex {\\n background-color: rgba(0, 0, 0, 0.02);\\n}\\n.mat-form-field-appearance-fill .mat-form-field-underline::before {\\n background-color: rgba(0, 0, 0, 0.42);\\n}\\n.mat-form-field-appearance-fill.mat-form-field-disabled .mat-form-field-label {\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-form-field-appearance-fill.mat-form-field-disabled .mat-form-field-underline::before {\\n background-color: transparent;\\n}\\n.mat-form-field-appearance-outline .mat-form-field-outline {\\n color: rgba(0, 0, 0, 0.12);\\n}\\n.mat-form-field-appearance-outline .mat-form-field-outline-thick {\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-form-field-appearance-outline.mat-focused .mat-form-field-outline-thick {\\n color: #4775f5;\\n}\\n.mat-form-field-appearance-outline.mat-focused.mat-accent .mat-form-field-outline-thick {\\n color: #f7cc71;\\n}\\n.mat-form-field-appearance-outline.mat-focused.mat-warn .mat-form-field-outline-thick {\\n color: #fc8f76;\\n}\\n.mat-form-field-appearance-outline.mat-form-field-invalid.mat-form-field-invalid .mat-form-field-outline-thick {\\n color: #fc8f76;\\n}\\n.mat-form-field-appearance-outline.mat-form-field-disabled .mat-form-field-label {\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-form-field-appearance-outline.mat-form-field-disabled .mat-form-field-outline {\\n color: rgba(0, 0, 0, 0.06);\\n}\\n.mat-icon.mat-primary {\\n color: #4775f5;\\n}\\n.mat-icon.mat-accent {\\n color: #f7cc71;\\n}\\n.mat-icon.mat-warn {\\n color: #fc8f76;\\n}\\n.mat-form-field-type-mat-native-select .mat-form-field-infix::after {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-input-element:disabled,\\n.mat-form-field-type-mat-native-select.mat-form-field-disabled .mat-form-field-infix::after {\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-input-element {\\n caret-color: #4775f5;\\n}\\n.mat-input-element:-ms-input-placeholder {\\n color: rgba(0, 0, 0, 0.42);\\n}\\n.mat-input-element::placeholder {\\n color: rgba(0, 0, 0, 0.42);\\n}\\n.mat-input-element::-moz-placeholder {\\n color: rgba(0, 0, 0, 0.42);\\n}\\n.mat-input-element::-webkit-input-placeholder {\\n color: rgba(0, 0, 0, 0.42);\\n}\\n.mat-input-element:-ms-input-placeholder {\\n color: rgba(0, 0, 0, 0.42);\\n}\\n.mat-form-field.mat-accent .mat-input-element {\\n caret-color: #f7cc71;\\n}\\n.mat-form-field.mat-warn .mat-input-element,\\n.mat-form-field-invalid .mat-input-element {\\n caret-color: #fc8f76;\\n}\\n.mat-form-field-type-mat-native-select.mat-form-field-invalid .mat-form-field-infix::after {\\n color: #fc8f76;\\n}\\n.mat-list-base .mat-list-item {\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-list-base .mat-list-option {\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-list-base .mat-subheader {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-list-item-disabled {\\n background-color: #eeeeee;\\n}\\n.mat-list-option:hover, .mat-list-option:focus,\\n.mat-nav-list .mat-list-item:hover,\\n.mat-nav-list .mat-list-item:focus,\\n.mat-action-list .mat-list-item:hover,\\n.mat-action-list .mat-list-item:focus {\\n background: rgba(0, 0, 0, 0.04);\\n}\\n.mat-list-single-selected-option, .mat-list-single-selected-option:hover, .mat-list-single-selected-option:focus {\\n background: rgba(0, 0, 0, 0.12);\\n}\\n.mat-menu-panel {\\n background: white;\\n}\\n.mat-menu-panel:not([class*=mat-elevation-z]) {\\n box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-menu-item {\\n background: transparent;\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-menu-item[disabled], .mat-menu-item[disabled]::after,\\n.mat-menu-item[disabled] .mat-icon-no-color {\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-menu-item .mat-icon-no-color,\\n.mat-menu-item-submenu-trigger::after {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-menu-item:hover:not([disabled]),\\n.mat-menu-item.cdk-program-focused:not([disabled]),\\n.mat-menu-item.cdk-keyboard-focused:not([disabled]),\\n.mat-menu-item-highlighted:not([disabled]) {\\n background: rgba(0, 0, 0, 0.04);\\n}\\n.mat-paginator {\\n background: white;\\n}\\n.mat-paginator,\\n.mat-paginator-page-size .mat-select-trigger {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-paginator-decrement,\\n.mat-paginator-increment {\\n border-top: 2px solid rgba(0, 0, 0, 0.54);\\n border-right: 2px solid rgba(0, 0, 0, 0.54);\\n}\\n.mat-paginator-first,\\n.mat-paginator-last {\\n border-top: 2px solid rgba(0, 0, 0, 0.54);\\n}\\n.mat-icon-button[disabled] .mat-paginator-decrement,\\n.mat-icon-button[disabled] .mat-paginator-increment,\\n.mat-icon-button[disabled] .mat-paginator-first,\\n.mat-icon-button[disabled] .mat-paginator-last {\\n border-color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-paginator-container {\\n min-height: 56px;\\n}\\n.mat-progress-bar-background {\\n fill: #cdd9f9;\\n}\\n.mat-progress-bar-buffer {\\n background-color: #cdd9f9;\\n}\\n.mat-progress-bar-fill::after {\\n background-color: #4775f5;\\n}\\n.mat-progress-bar.mat-accent .mat-progress-bar-background {\\n fill: #f9efd8;\\n}\\n.mat-progress-bar.mat-accent .mat-progress-bar-buffer {\\n background-color: #f9efd8;\\n}\\n.mat-progress-bar.mat-accent .mat-progress-bar-fill::after {\\n background-color: #f7cc71;\\n}\\n.mat-progress-bar.mat-warn .mat-progress-bar-background {\\n fill: #fbdfd9;\\n}\\n.mat-progress-bar.mat-warn .mat-progress-bar-buffer {\\n background-color: #fbdfd9;\\n}\\n.mat-progress-bar.mat-warn .mat-progress-bar-fill::after {\\n background-color: #fc8f76;\\n}\\n.mat-progress-spinner circle, .mat-spinner circle {\\n stroke: #4775f5;\\n}\\n.mat-progress-spinner.mat-accent circle, .mat-spinner.mat-accent circle {\\n stroke: #f7cc71;\\n}\\n.mat-progress-spinner.mat-warn circle, .mat-spinner.mat-warn circle {\\n stroke: #fc8f76;\\n}\\n.mat-radio-outer-circle {\\n border-color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-radio-button.mat-primary.mat-radio-checked .mat-radio-outer-circle {\\n border-color: #4775f5;\\n}\\n.mat-radio-button.mat-primary .mat-radio-inner-circle,\\n.mat-radio-button.mat-primary .mat-radio-ripple .mat-ripple-element:not(.mat-radio-persistent-ripple), .mat-radio-button.mat-primary.mat-radio-checked .mat-radio-persistent-ripple, .mat-radio-button.mat-primary:active .mat-radio-persistent-ripple {\\n background-color: #4775f5;\\n}\\n.mat-radio-button.mat-accent.mat-radio-checked .mat-radio-outer-circle {\\n border-color: #f7cc71;\\n}\\n.mat-radio-button.mat-accent .mat-radio-inner-circle,\\n.mat-radio-button.mat-accent .mat-radio-ripple .mat-ripple-element:not(.mat-radio-persistent-ripple), .mat-radio-button.mat-accent.mat-radio-checked .mat-radio-persistent-ripple, .mat-radio-button.mat-accent:active .mat-radio-persistent-ripple {\\n background-color: #f7cc71;\\n}\\n.mat-radio-button.mat-warn.mat-radio-checked .mat-radio-outer-circle {\\n border-color: #fc8f76;\\n}\\n.mat-radio-button.mat-warn .mat-radio-inner-circle,\\n.mat-radio-button.mat-warn .mat-radio-ripple .mat-ripple-element:not(.mat-radio-persistent-ripple), .mat-radio-button.mat-warn.mat-radio-checked .mat-radio-persistent-ripple, .mat-radio-button.mat-warn:active .mat-radio-persistent-ripple {\\n background-color: #fc8f76;\\n}\\n.mat-radio-button.mat-radio-disabled.mat-radio-checked .mat-radio-outer-circle,\\n.mat-radio-button.mat-radio-disabled .mat-radio-outer-circle {\\n border-color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-radio-button.mat-radio-disabled .mat-radio-ripple .mat-ripple-element,\\n.mat-radio-button.mat-radio-disabled .mat-radio-inner-circle {\\n background-color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-radio-button.mat-radio-disabled .mat-radio-label-content {\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-radio-button .mat-ripple-element {\\n background-color: black;\\n}\\n.mat-select-value {\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-select-placeholder {\\n color: rgba(0, 0, 0, 0.42);\\n}\\n.mat-select-disabled .mat-select-value {\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-select-arrow {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-select-panel {\\n background: white;\\n}\\n.mat-select-panel:not([class*=mat-elevation-z]) {\\n box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-select-panel .mat-option.mat-selected:not(.mat-option-multiple) {\\n background: rgba(0, 0, 0, 0.12);\\n}\\n.mat-form-field.mat-focused.mat-primary .mat-select-arrow {\\n color: #4775f5;\\n}\\n.mat-form-field.mat-focused.mat-accent .mat-select-arrow {\\n color: #f7cc71;\\n}\\n.mat-form-field.mat-focused.mat-warn .mat-select-arrow {\\n color: #fc8f76;\\n}\\n.mat-form-field .mat-select.mat-select-invalid .mat-select-arrow {\\n color: #fc8f76;\\n}\\n.mat-form-field .mat-select.mat-select-disabled .mat-select-arrow {\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-drawer-container {\\n background-color: #fafafa;\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-drawer {\\n background-color: white;\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-drawer.mat-drawer-push {\\n background-color: white;\\n}\\n.mat-drawer:not(.mat-drawer-side) {\\n box-shadow: 0px 8px 10px -5px rgba(0, 0, 0, 0.2), 0px 16px 24px 2px rgba(0, 0, 0, 0.14), 0px 6px 30px 5px rgba(0, 0, 0, 0.12);\\n}\\n.mat-drawer-side {\\n border-right: solid 1px rgba(0, 0, 0, 0.12);\\n}\\n.mat-drawer-side.mat-drawer-end {\\n border-left: solid 1px rgba(0, 0, 0, 0.12);\\n border-right: none;\\n}\\n[dir=rtl] .mat-drawer-side {\\n border-left: solid 1px rgba(0, 0, 0, 0.12);\\n border-right: none;\\n}\\n[dir=rtl] .mat-drawer-side.mat-drawer-end {\\n border-left: none;\\n border-right: solid 1px rgba(0, 0, 0, 0.12);\\n}\\n.mat-drawer-backdrop.mat-drawer-shown {\\n background-color: rgba(0, 0, 0, 0.6);\\n}\\n.mat-slide-toggle.mat-checked .mat-slide-toggle-thumb {\\n background-color: #f7cc71;\\n}\\n.mat-slide-toggle.mat-checked .mat-slide-toggle-bar {\\n background-color: rgba(247, 204, 113, 0.54);\\n}\\n.mat-slide-toggle.mat-checked .mat-ripple-element {\\n background-color: #f7cc71;\\n}\\n.mat-slide-toggle.mat-primary.mat-checked .mat-slide-toggle-thumb {\\n background-color: #4775f5;\\n}\\n.mat-slide-toggle.mat-primary.mat-checked .mat-slide-toggle-bar {\\n background-color: rgba(71, 117, 245, 0.54);\\n}\\n.mat-slide-toggle.mat-primary.mat-checked .mat-ripple-element {\\n background-color: #4775f5;\\n}\\n.mat-slide-toggle.mat-warn.mat-checked .mat-slide-toggle-thumb {\\n background-color: #fc8f76;\\n}\\n.mat-slide-toggle.mat-warn.mat-checked .mat-slide-toggle-bar {\\n background-color: rgba(252, 143, 118, 0.54);\\n}\\n.mat-slide-toggle.mat-warn.mat-checked .mat-ripple-element {\\n background-color: #fc8f76;\\n}\\n.mat-slide-toggle:not(.mat-checked) .mat-ripple-element {\\n background-color: black;\\n}\\n.mat-slide-toggle-thumb {\\n box-shadow: 0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12);\\n background-color: #fafafa;\\n}\\n.mat-slide-toggle-bar {\\n background-color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-slider-track-background {\\n background-color: rgba(0, 0, 0, 0.26);\\n}\\n.mat-primary .mat-slider-track-fill,\\n.mat-primary .mat-slider-thumb,\\n.mat-primary .mat-slider-thumb-label {\\n background-color: #4775f5;\\n}\\n.mat-primary .mat-slider-thumb-label-text {\\n color: white;\\n}\\n.mat-primary .mat-slider-focus-ring {\\n background-color: rgba(71, 117, 245, 0.2);\\n}\\n.mat-accent .mat-slider-track-fill,\\n.mat-accent .mat-slider-thumb,\\n.mat-accent .mat-slider-thumb-label {\\n background-color: #f7cc71;\\n}\\n.mat-accent .mat-slider-thumb-label-text {\\n color: white;\\n}\\n.mat-accent .mat-slider-focus-ring {\\n background-color: rgba(247, 204, 113, 0.2);\\n}\\n.mat-warn .mat-slider-track-fill,\\n.mat-warn .mat-slider-thumb,\\n.mat-warn .mat-slider-thumb-label {\\n background-color: #fc8f76;\\n}\\n.mat-warn .mat-slider-thumb-label-text {\\n color: white;\\n}\\n.mat-warn .mat-slider-focus-ring {\\n background-color: rgba(252, 143, 118, 0.2);\\n}\\n.mat-slider:hover .mat-slider-track-background,\\n.cdk-focused .mat-slider-track-background {\\n background-color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-slider-disabled .mat-slider-track-background,\\n.mat-slider-disabled .mat-slider-track-fill,\\n.mat-slider-disabled .mat-slider-thumb {\\n background-color: rgba(0, 0, 0, 0.26);\\n}\\n.mat-slider-disabled:hover .mat-slider-track-background {\\n background-color: rgba(0, 0, 0, 0.26);\\n}\\n.mat-slider-min-value .mat-slider-focus-ring {\\n background-color: rgba(0, 0, 0, 0.12);\\n}\\n.mat-slider-min-value.mat-slider-thumb-label-showing .mat-slider-thumb,\\n.mat-slider-min-value.mat-slider-thumb-label-showing .mat-slider-thumb-label {\\n background-color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-slider-min-value.mat-slider-thumb-label-showing.cdk-focused .mat-slider-thumb,\\n.mat-slider-min-value.mat-slider-thumb-label-showing.cdk-focused .mat-slider-thumb-label {\\n background-color: rgba(0, 0, 0, 0.26);\\n}\\n.mat-slider-min-value:not(.mat-slider-thumb-label-showing) .mat-slider-thumb {\\n border-color: rgba(0, 0, 0, 0.26);\\n background-color: transparent;\\n}\\n.mat-slider-min-value:not(.mat-slider-thumb-label-showing):hover .mat-slider-thumb, .mat-slider-min-value:not(.mat-slider-thumb-label-showing).cdk-focused .mat-slider-thumb {\\n border-color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-slider-min-value:not(.mat-slider-thumb-label-showing):hover.mat-slider-disabled .mat-slider-thumb, .mat-slider-min-value:not(.mat-slider-thumb-label-showing).cdk-focused.mat-slider-disabled .mat-slider-thumb {\\n border-color: rgba(0, 0, 0, 0.26);\\n}\\n.mat-slider-has-ticks .mat-slider-wrapper::after {\\n border-color: rgba(0, 0, 0, 0.7);\\n}\\n.mat-slider-horizontal .mat-slider-ticks {\\n background-image: repeating-linear-gradient(to right, rgba(0, 0, 0, 0.7), rgba(0, 0, 0, 0.7) 2px, transparent 0, transparent);\\n background-image: -moz-repeating-linear-gradient(0.0001deg, rgba(0, 0, 0, 0.7), rgba(0, 0, 0, 0.7) 2px, transparent 0, transparent);\\n}\\n.mat-slider-vertical .mat-slider-ticks {\\n background-image: repeating-linear-gradient(to bottom, rgba(0, 0, 0, 0.7), rgba(0, 0, 0, 0.7) 2px, transparent 0, transparent);\\n}\\n.mat-step-header.cdk-keyboard-focused, .mat-step-header.cdk-program-focused, .mat-step-header:hover {\\n background-color: rgba(0, 0, 0, 0.04);\\n}\\n@media (hover: none) {\\n .mat-step-header:hover {\\n background: none;\\n }\\n}\\n.mat-step-header .mat-step-label,\\n.mat-step-header .mat-step-optional {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-step-header .mat-step-icon {\\n background-color: rgba(0, 0, 0, 0.54);\\n color: white;\\n}\\n.mat-step-header .mat-step-icon-selected,\\n.mat-step-header .mat-step-icon-state-done,\\n.mat-step-header .mat-step-icon-state-edit {\\n background-color: #4775f5;\\n color: white;\\n}\\n.mat-step-header.mat-accent .mat-step-icon {\\n color: white;\\n}\\n.mat-step-header.mat-accent .mat-step-icon-selected,\\n.mat-step-header.mat-accent .mat-step-icon-state-done,\\n.mat-step-header.mat-accent .mat-step-icon-state-edit {\\n background-color: #f7cc71;\\n color: white;\\n}\\n.mat-step-header.mat-warn .mat-step-icon {\\n color: white;\\n}\\n.mat-step-header.mat-warn .mat-step-icon-selected,\\n.mat-step-header.mat-warn .mat-step-icon-state-done,\\n.mat-step-header.mat-warn .mat-step-icon-state-edit {\\n background-color: #fc8f76;\\n color: white;\\n}\\n.mat-step-header .mat-step-icon-state-error {\\n background-color: transparent;\\n color: #fc8f76;\\n}\\n.mat-step-header .mat-step-label.mat-step-label-active {\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-step-header .mat-step-label.mat-step-label-error {\\n color: #fc8f76;\\n}\\n.mat-stepper-horizontal, .mat-stepper-vertical {\\n background-color: white;\\n}\\n.mat-stepper-vertical-line::before {\\n border-left-color: rgba(0, 0, 0, 0.12);\\n}\\n.mat-horizontal-stepper-header::before,\\n.mat-horizontal-stepper-header::after,\\n.mat-stepper-horizontal-line {\\n border-top-color: rgba(0, 0, 0, 0.12);\\n}\\n.mat-horizontal-stepper-header {\\n height: 72px;\\n}\\n.mat-stepper-label-position-bottom .mat-horizontal-stepper-header,\\n.mat-vertical-stepper-header {\\n padding: 24px 24px;\\n}\\n.mat-stepper-vertical-line::before {\\n top: -16px;\\n bottom: -16px;\\n}\\n.mat-stepper-label-position-bottom .mat-horizontal-stepper-header::after, .mat-stepper-label-position-bottom .mat-horizontal-stepper-header::before {\\n top: 36px;\\n}\\n.mat-stepper-label-position-bottom .mat-stepper-horizontal-line {\\n top: 36px;\\n}\\n.mat-sort-header-arrow {\\n color: #757575;\\n}\\n.mat-tab-nav-bar,\\n.mat-tab-header {\\n border-bottom: 1px solid rgba(0, 0, 0, 0.12);\\n}\\n.mat-tab-group-inverted-header .mat-tab-nav-bar,\\n.mat-tab-group-inverted-header .mat-tab-header {\\n border-top: 1px solid rgba(0, 0, 0, 0.12);\\n border-bottom: none;\\n}\\n.mat-tab-label, .mat-tab-link {\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-tab-label.mat-tab-disabled, .mat-tab-link.mat-tab-disabled {\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-tab-header-pagination-chevron {\\n border-color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron {\\n border-color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-tab-group[class*=mat-background-] .mat-tab-header,\\n.mat-tab-nav-bar[class*=mat-background-] {\\n border-bottom: none;\\n border-top: none;\\n}\\n.mat-tab-group.mat-primary .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-group.mat-primary .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),\\n.mat-tab-group.mat-primary .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),\\n.mat-tab-group.mat-primary .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-primary .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-primary .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),\\n.mat-tab-nav-bar.mat-primary .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),\\n.mat-tab-nav-bar.mat-primary .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled) {\\n background-color: rgba(104, 145, 255, 0.3);\\n}\\n.mat-tab-group.mat-primary .mat-ink-bar, .mat-tab-nav-bar.mat-primary .mat-ink-bar {\\n background-color: #4775f5;\\n}\\n.mat-tab-group.mat-primary.mat-background-primary > .mat-tab-header .mat-ink-bar, .mat-tab-group.mat-primary.mat-background-primary > .mat-tab-link-container .mat-ink-bar, .mat-tab-nav-bar.mat-primary.mat-background-primary > .mat-tab-header .mat-ink-bar, .mat-tab-nav-bar.mat-primary.mat-background-primary > .mat-tab-link-container .mat-ink-bar {\\n background-color: white;\\n}\\n.mat-tab-group.mat-accent .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-group.mat-accent .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),\\n.mat-tab-group.mat-accent .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),\\n.mat-tab-group.mat-accent .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-accent .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-accent .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),\\n.mat-tab-nav-bar.mat-accent .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),\\n.mat-tab-nav-bar.mat-accent .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled) {\\n background-color: rgba(255, 219, 142, 0.3);\\n}\\n.mat-tab-group.mat-accent .mat-ink-bar, .mat-tab-nav-bar.mat-accent .mat-ink-bar {\\n background-color: #f7cc71;\\n}\\n.mat-tab-group.mat-accent.mat-background-accent > .mat-tab-header .mat-ink-bar, .mat-tab-group.mat-accent.mat-background-accent > .mat-tab-link-container .mat-ink-bar, .mat-tab-nav-bar.mat-accent.mat-background-accent > .mat-tab-header .mat-ink-bar, .mat-tab-nav-bar.mat-accent.mat-background-accent > .mat-tab-link-container .mat-ink-bar {\\n background-color: white;\\n}\\n.mat-tab-group.mat-warn .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-group.mat-warn .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),\\n.mat-tab-group.mat-warn .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),\\n.mat-tab-group.mat-warn .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-warn .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-warn .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),\\n.mat-tab-nav-bar.mat-warn .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),\\n.mat-tab-nav-bar.mat-warn .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled) {\\n background-color: rgba(255, 165, 145, 0.3);\\n}\\n.mat-tab-group.mat-warn .mat-ink-bar, .mat-tab-nav-bar.mat-warn .mat-ink-bar {\\n background-color: #fc8f76;\\n}\\n.mat-tab-group.mat-warn.mat-background-warn > .mat-tab-header .mat-ink-bar, .mat-tab-group.mat-warn.mat-background-warn > .mat-tab-link-container .mat-ink-bar, .mat-tab-nav-bar.mat-warn.mat-background-warn > .mat-tab-header .mat-ink-bar, .mat-tab-nav-bar.mat-warn.mat-background-warn > .mat-tab-link-container .mat-ink-bar {\\n background-color: white;\\n}\\n.mat-tab-group.mat-background-primary .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-group.mat-background-primary .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),\\n.mat-tab-group.mat-background-primary .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),\\n.mat-tab-group.mat-background-primary .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-background-primary .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-background-primary .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),\\n.mat-tab-nav-bar.mat-background-primary .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),\\n.mat-tab-nav-bar.mat-background-primary .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled) {\\n background-color: rgba(104, 145, 255, 0.3);\\n}\\n.mat-tab-group.mat-background-primary > .mat-tab-header, .mat-tab-group.mat-background-primary > .mat-tab-link-container, .mat-tab-group.mat-background-primary > .mat-tab-header-pagination, .mat-tab-nav-bar.mat-background-primary > .mat-tab-header, .mat-tab-nav-bar.mat-background-primary > .mat-tab-link-container, .mat-tab-nav-bar.mat-background-primary > .mat-tab-header-pagination {\\n background-color: #4775f5;\\n}\\n.mat-tab-group.mat-background-primary > .mat-tab-header .mat-tab-label, .mat-tab-group.mat-background-primary > .mat-tab-link-container .mat-tab-link, .mat-tab-nav-bar.mat-background-primary > .mat-tab-header .mat-tab-label, .mat-tab-nav-bar.mat-background-primary > .mat-tab-link-container .mat-tab-link {\\n color: white;\\n}\\n.mat-tab-group.mat-background-primary > .mat-tab-header .mat-tab-label.mat-tab-disabled, .mat-tab-group.mat-background-primary > .mat-tab-link-container .mat-tab-link.mat-tab-disabled, .mat-tab-nav-bar.mat-background-primary > .mat-tab-header .mat-tab-label.mat-tab-disabled, .mat-tab-nav-bar.mat-background-primary > .mat-tab-link-container .mat-tab-link.mat-tab-disabled {\\n color: rgba(255, 255, 255, 0.4);\\n}\\n.mat-tab-group.mat-background-primary > .mat-tab-header .mat-tab-header-pagination-chevron,\\n.mat-tab-group.mat-background-primary > .mat-tab-header-pagination .mat-tab-header-pagination-chevron,\\n.mat-tab-group.mat-background-primary > .mat-tab-link-container .mat-focus-indicator::before,\\n.mat-tab-group.mat-background-primary > .mat-tab-header .mat-focus-indicator::before, .mat-tab-nav-bar.mat-background-primary > .mat-tab-header .mat-tab-header-pagination-chevron,\\n.mat-tab-nav-bar.mat-background-primary > .mat-tab-header-pagination .mat-tab-header-pagination-chevron,\\n.mat-tab-nav-bar.mat-background-primary > .mat-tab-link-container .mat-focus-indicator::before,\\n.mat-tab-nav-bar.mat-background-primary > .mat-tab-header .mat-focus-indicator::before {\\n border-color: white;\\n}\\n.mat-tab-group.mat-background-primary > .mat-tab-header .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron,\\n.mat-tab-group.mat-background-primary > .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron, .mat-tab-nav-bar.mat-background-primary > .mat-tab-header .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron,\\n.mat-tab-nav-bar.mat-background-primary > .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron {\\n border-color: rgba(255, 255, 255, 0.4);\\n}\\n.mat-tab-group.mat-background-primary > .mat-tab-header .mat-ripple-element,\\n.mat-tab-group.mat-background-primary > .mat-tab-link-container .mat-ripple-element,\\n.mat-tab-group.mat-background-primary > .mat-tab-header-pagination .mat-ripple-element, .mat-tab-nav-bar.mat-background-primary > .mat-tab-header .mat-ripple-element,\\n.mat-tab-nav-bar.mat-background-primary > .mat-tab-link-container .mat-ripple-element,\\n.mat-tab-nav-bar.mat-background-primary > .mat-tab-header-pagination .mat-ripple-element {\\n background-color: rgba(255, 255, 255, 0.12);\\n}\\n.mat-tab-group.mat-background-accent .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-group.mat-background-accent .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),\\n.mat-tab-group.mat-background-accent .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),\\n.mat-tab-group.mat-background-accent .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-background-accent .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-background-accent .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),\\n.mat-tab-nav-bar.mat-background-accent .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),\\n.mat-tab-nav-bar.mat-background-accent .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled) {\\n background-color: rgba(255, 219, 142, 0.3);\\n}\\n.mat-tab-group.mat-background-accent > .mat-tab-header, .mat-tab-group.mat-background-accent > .mat-tab-link-container, .mat-tab-group.mat-background-accent > .mat-tab-header-pagination, .mat-tab-nav-bar.mat-background-accent > .mat-tab-header, .mat-tab-nav-bar.mat-background-accent > .mat-tab-link-container, .mat-tab-nav-bar.mat-background-accent > .mat-tab-header-pagination {\\n background-color: #f7cc71;\\n}\\n.mat-tab-group.mat-background-accent > .mat-tab-header .mat-tab-label, .mat-tab-group.mat-background-accent > .mat-tab-link-container .mat-tab-link, .mat-tab-nav-bar.mat-background-accent > .mat-tab-header .mat-tab-label, .mat-tab-nav-bar.mat-background-accent > .mat-tab-link-container .mat-tab-link {\\n color: white;\\n}\\n.mat-tab-group.mat-background-accent > .mat-tab-header .mat-tab-label.mat-tab-disabled, .mat-tab-group.mat-background-accent > .mat-tab-link-container .mat-tab-link.mat-tab-disabled, .mat-tab-nav-bar.mat-background-accent > .mat-tab-header .mat-tab-label.mat-tab-disabled, .mat-tab-nav-bar.mat-background-accent > .mat-tab-link-container .mat-tab-link.mat-tab-disabled {\\n color: rgba(255, 255, 255, 0.4);\\n}\\n.mat-tab-group.mat-background-accent > .mat-tab-header .mat-tab-header-pagination-chevron,\\n.mat-tab-group.mat-background-accent > .mat-tab-header-pagination .mat-tab-header-pagination-chevron,\\n.mat-tab-group.mat-background-accent > .mat-tab-link-container .mat-focus-indicator::before,\\n.mat-tab-group.mat-background-accent > .mat-tab-header .mat-focus-indicator::before, .mat-tab-nav-bar.mat-background-accent > .mat-tab-header .mat-tab-header-pagination-chevron,\\n.mat-tab-nav-bar.mat-background-accent > .mat-tab-header-pagination .mat-tab-header-pagination-chevron,\\n.mat-tab-nav-bar.mat-background-accent > .mat-tab-link-container .mat-focus-indicator::before,\\n.mat-tab-nav-bar.mat-background-accent > .mat-tab-header .mat-focus-indicator::before {\\n border-color: white;\\n}\\n.mat-tab-group.mat-background-accent > .mat-tab-header .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron,\\n.mat-tab-group.mat-background-accent > .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron, .mat-tab-nav-bar.mat-background-accent > .mat-tab-header .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron,\\n.mat-tab-nav-bar.mat-background-accent > .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron {\\n border-color: rgba(255, 255, 255, 0.4);\\n}\\n.mat-tab-group.mat-background-accent > .mat-tab-header .mat-ripple-element,\\n.mat-tab-group.mat-background-accent > .mat-tab-link-container .mat-ripple-element,\\n.mat-tab-group.mat-background-accent > .mat-tab-header-pagination .mat-ripple-element, .mat-tab-nav-bar.mat-background-accent > .mat-tab-header .mat-ripple-element,\\n.mat-tab-nav-bar.mat-background-accent > .mat-tab-link-container .mat-ripple-element,\\n.mat-tab-nav-bar.mat-background-accent > .mat-tab-header-pagination .mat-ripple-element {\\n background-color: rgba(255, 255, 255, 0.12);\\n}\\n.mat-tab-group.mat-background-warn .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-group.mat-background-warn .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),\\n.mat-tab-group.mat-background-warn .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),\\n.mat-tab-group.mat-background-warn .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-background-warn .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-background-warn .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),\\n.mat-tab-nav-bar.mat-background-warn .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),\\n.mat-tab-nav-bar.mat-background-warn .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled) {\\n background-color: rgba(255, 165, 145, 0.3);\\n}\\n.mat-tab-group.mat-background-warn > .mat-tab-header, .mat-tab-group.mat-background-warn > .mat-tab-link-container, .mat-tab-group.mat-background-warn > .mat-tab-header-pagination, .mat-tab-nav-bar.mat-background-warn > .mat-tab-header, .mat-tab-nav-bar.mat-background-warn > .mat-tab-link-container, .mat-tab-nav-bar.mat-background-warn > .mat-tab-header-pagination {\\n background-color: #fc8f76;\\n}\\n.mat-tab-group.mat-background-warn > .mat-tab-header .mat-tab-label, .mat-tab-group.mat-background-warn > .mat-tab-link-container .mat-tab-link, .mat-tab-nav-bar.mat-background-warn > .mat-tab-header .mat-tab-label, .mat-tab-nav-bar.mat-background-warn > .mat-tab-link-container .mat-tab-link {\\n color: white;\\n}\\n.mat-tab-group.mat-background-warn > .mat-tab-header .mat-tab-label.mat-tab-disabled, .mat-tab-group.mat-background-warn > .mat-tab-link-container .mat-tab-link.mat-tab-disabled, .mat-tab-nav-bar.mat-background-warn > .mat-tab-header .mat-tab-label.mat-tab-disabled, .mat-tab-nav-bar.mat-background-warn > .mat-tab-link-container .mat-tab-link.mat-tab-disabled {\\n color: rgba(255, 255, 255, 0.4);\\n}\\n.mat-tab-group.mat-background-warn > .mat-tab-header .mat-tab-header-pagination-chevron,\\n.mat-tab-group.mat-background-warn > .mat-tab-header-pagination .mat-tab-header-pagination-chevron,\\n.mat-tab-group.mat-background-warn > .mat-tab-link-container .mat-focus-indicator::before,\\n.mat-tab-group.mat-background-warn > .mat-tab-header .mat-focus-indicator::before, .mat-tab-nav-bar.mat-background-warn > .mat-tab-header .mat-tab-header-pagination-chevron,\\n.mat-tab-nav-bar.mat-background-warn > .mat-tab-header-pagination .mat-tab-header-pagination-chevron,\\n.mat-tab-nav-bar.mat-background-warn > .mat-tab-link-container .mat-focus-indicator::before,\\n.mat-tab-nav-bar.mat-background-warn > .mat-tab-header .mat-focus-indicator::before {\\n border-color: white;\\n}\\n.mat-tab-group.mat-background-warn > .mat-tab-header .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron,\\n.mat-tab-group.mat-background-warn > .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron, .mat-tab-nav-bar.mat-background-warn > .mat-tab-header .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron,\\n.mat-tab-nav-bar.mat-background-warn > .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron {\\n border-color: rgba(255, 255, 255, 0.4);\\n}\\n.mat-tab-group.mat-background-warn > .mat-tab-header .mat-ripple-element,\\n.mat-tab-group.mat-background-warn > .mat-tab-link-container .mat-ripple-element,\\n.mat-tab-group.mat-background-warn > .mat-tab-header-pagination .mat-ripple-element, .mat-tab-nav-bar.mat-background-warn > .mat-tab-header .mat-ripple-element,\\n.mat-tab-nav-bar.mat-background-warn > .mat-tab-link-container .mat-ripple-element,\\n.mat-tab-nav-bar.mat-background-warn > .mat-tab-header-pagination .mat-ripple-element {\\n background-color: rgba(255, 255, 255, 0.12);\\n}\\n.mat-toolbar {\\n background: whitesmoke;\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-toolbar.mat-primary {\\n background: #4775f5;\\n color: white;\\n}\\n.mat-toolbar.mat-accent {\\n background: #f7cc71;\\n color: white;\\n}\\n.mat-toolbar.mat-warn {\\n background: #fc8f76;\\n color: white;\\n}\\n.mat-toolbar .mat-form-field-underline,\\n.mat-toolbar .mat-form-field-ripple,\\n.mat-toolbar .mat-focused .mat-form-field-ripple {\\n background-color: currentColor;\\n}\\n.mat-toolbar .mat-form-field-label,\\n.mat-toolbar .mat-focused .mat-form-field-label,\\n.mat-toolbar .mat-select-value,\\n.mat-toolbar .mat-select-arrow,\\n.mat-toolbar .mat-form-field.mat-focused .mat-select-arrow {\\n color: inherit;\\n}\\n.mat-toolbar .mat-input-element {\\n caret-color: currentColor;\\n}\\n.mat-toolbar-multiple-rows {\\n min-height: 64px;\\n}\\n.mat-toolbar-row, .mat-toolbar-single-row {\\n height: 64px;\\n}\\n@media (max-width: 599px) {\\n .mat-toolbar-multiple-rows {\\n min-height: 56px;\\n }\\n\\n .mat-toolbar-row, .mat-toolbar-single-row {\\n height: 56px;\\n }\\n}\\n.mat-tooltip {\\n background: rgba(97, 97, 97, 0.9);\\n}\\n.mat-tree {\\n background: white;\\n}\\n.mat-tree-node,\\n.mat-nested-tree-node {\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-tree-node {\\n min-height: 48px;\\n}\\n.mat-snack-bar-container {\\n color: rgba(255, 255, 255, 0.7);\\n background: #323232;\\n box-shadow: 0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-simple-snackbar-action {\\n color: #f7cc71;\\n}\\n/* Breakpoints for Media Queries */\\n.list-card {\\n width: var(--card-width);\\n height: var(--card-height);\\n margin: 10px;\\n padding: 0;\\n background: white;\\n border-radius: 5px;\\n transition: all 0.3s;\\n}\\n.list-card:hover .list-card_title:before {\\n border: 2px solid #4775f5;\\n}\\n.list-card--new {\\n height: 100%;\\n width: 100%;\\n}\\n.list-card_header {\\n top: 20px;\\n left: 30px;\\n width: calc(var(--card-width) - 50px);\\n height: var(--card--header-height);\\n}\\n.list-card_footer {\\n position: absolute;\\n bottom: 0;\\n left: 0;\\n width: var(--card-width);\\n height: var(--card--footer-height);\\n border-top: 1px solid #e8ebee;\\n padding: 0 20px;\\n}\\n.list-card_footer_info {\\n font-size: 14px;\\n font-weight: bold;\\n color: #c7c9cd;\\n}\\n.list-card_footer_info_form-type {\\n color: #212529;\\n}\\n.list-card_title {\\n position: relative;\\n font-size: 15px;\\n}\\n.list-card_title:before {\\n position: absolute;\\n left: -16px;\\n top: 6px;\\n width: 9px;\\n height: 9px;\\n border: 2px solid #c7c9cd;\\n border-radius: 50%;\\n content: \\\"\\\";\\n transition: all 0.3s;\\n}\\n.list-card_title.crop {\\n width: calc(var(--card-width) - 90px);\\n display: block;\\n}\\n.list-card_title.crop span {\\n width: 100%;\\n display: block;\\n}\\n.list-card_date {\\n font-size: 12px;\\n font-weight: bold;\\n color: #c7c9cd;\\n}\\n.list-card_more {\\n padding-left: 4px;\\n color: #c7c9cd;\\n}\\n.list-card_view-button {\\n text-transform: uppercase;\\n border-radius: 9px;\\n background: #f0f0f2;\\n color: #bfbfbf;\\n font-weight: bold;\\n font-size: 14px;\\n padding: 0 22px;\\n transition: all 0.2s;\\n}\\n.list-card_view-button:hover {\\n background: #10cf98;\\n color: white;\\n}\\n.list-card_view-button:hover i:before {\\n color: inherit;\\n}\\n.list-card_view-button:hover ::ng-deep .mat-button-focus-overlay {\\n background: transparent;\\n}\\n.list-card_view-button i:before {\\n color: inherit;\\n}\\n.list-card_default-group {\\n font-size: 12px;\\n font-weight: normal;\\n color: #c7c9cd;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3RoZW1lLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvYmFkZ2UvX2JhZGdlLXRoZW1lLnNjc3MiLCJjYXJkLmNvbXBvbmVudC5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUvdHlwb2dyYXBoeS9fdHlwb2dyYXBoeS5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUvdHlwb2dyYXBoeS9fdHlwb2dyYXBoeS11dGlscy5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL2JvdHRvbS1zaGVldC9fYm90dG9tLXNoZWV0LXRoZW1lLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uL19idXR0b24tdGhlbWUuc2NzcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYW5ndWxhci9tYXRlcmlhbC9idXR0b24tdG9nZ2xlL19idXR0b24tdG9nZ2xlLXRoZW1lLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvY2FyZC9fY2FyZC10aGVtZS5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL2NoZWNrYm94L19jaGVja2JveC10aGVtZS5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL2NoaXBzL19jaGlwcy10aGVtZS5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL3RhYmxlL190YWJsZS10aGVtZS5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL2RhdGVwaWNrZXIvX2RhdGVwaWNrZXItdGhlbWUuc2NzcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cvX2RpYWxvZy10aGVtZS5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL2V4cGFuc2lvbi9fZXhwYW5zaW9uLXRoZW1lLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZC9fZm9ybS1maWVsZC10aGVtZS5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQvX2Zvcm0tZmllbGQtbGVnYWN5LXRoZW1lLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZC9fZm9ybS1maWVsZC1maWxsLXRoZW1lLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZC9fZm9ybS1maWVsZC1vdXRsaW5lLXRoZW1lLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvZ3JpZC1saXN0L19ncmlkLWxpc3QtdGhlbWUuc2NzcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYW5ndWxhci9tYXRlcmlhbC9jb3JlL3N0eWxlL19saXN0LWNvbW1vbi5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0L19pbnB1dC10aGVtZS5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL21lbnUvX21lbnUtdGhlbWUuc2NzcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3IvX3BhZ2luYXRvci10aGVtZS5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL3JhZGlvL19yYWRpby10aGVtZS5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL3NlbGVjdC9fc2VsZWN0LXRoZW1lLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvc2xpZGUtdG9nZ2xlL19zbGlkZS10b2dnbGUtdGhlbWUuc2NzcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYW5ndWxhci9tYXRlcmlhbC9zbGlkZXIvX3NsaWRlci10aGVtZS5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL3N0ZXBwZXIvX3N0ZXBwZXItdGhlbWUuc2NzcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYW5ndWxhci9tYXRlcmlhbC90YWJzL190YWJzLXRoZW1lLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbGJhci9fdG9vbGJhci10aGVtZS5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAvX3Rvb2x0aXAtdGhlbWUuc2NzcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYW5ndWxhci9tYXRlcmlhbC9saXN0L19saXN0LXRoZW1lLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZS9vcHRpb24vX29wdGlvbi10aGVtZS5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUvb3B0aW9uL19vcHRncm91cC10aGVtZS5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL3NuYWNrLWJhci9fc25hY2stYmFyLXRoZW1lLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvdHJlZS9fdHJlZS10aGVtZS5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUvcmlwcGxlL19yaXBwbGUuc2NzcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYW5ndWxhci9jZGsvYTExeS9faW5kZXguc2NzcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYW5ndWxhci9jZGsvb3ZlcmxheS9faW5kZXguc2NzcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYW5ndWxhci9jZGsvdGV4dC1maWVsZC9faW5kZXguc2NzcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYW5ndWxhci9tYXRlcmlhbC9jb3JlL2ZvY3VzLWluZGljYXRvcnMvX2ZvY3VzLWluZGljYXRvcnMuc2NzcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYW5ndWxhci9tYXRlcmlhbC9jb3JlL19jb3JlLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZS9yaXBwbGUvX3JpcHBsZS10aGVtZS5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUvc2VsZWN0aW9uL3BzZXVkby1jaGVja2JveC9fcHNldWRvLWNoZWNrYm94LXRoZW1lLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZS9fY29yZS10aGVtZS5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUvc3R5bGUvX2VsZXZhdGlvbi5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL2F1dG9jb21wbGV0ZS9fYXV0b2NvbXBsZXRlLXRoZW1lLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvZGl2aWRlci9fZGl2aWRlci10aGVtZS5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL2V4cGFuc2lvbi9fZXhwYW5zaW9uLW1peGlucy5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUvc3R5bGUvX2Zvcm0tY29tbW9uLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZC9fZm9ybS1maWVsZC1zdGFuZGFyZC10aGVtZS5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL2ljb24vX2ljb24tdGhlbWUuc2NzcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYW5ndWxhci9tYXRlcmlhbC9jb3JlL3N0eWxlL192ZW5kb3ItcHJlZml4ZXMuc2NzcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYW5ndWxhci9tYXRlcmlhbC9wcm9ncmVzcy1iYXIvX3Byb2dyZXNzLWJhci10aGVtZS5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLXNwaW5uZXIvX3Byb2dyZXNzLXNwaW5uZXItdGhlbWUuc2NzcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYW5ndWxhci9tYXRlcmlhbC9zaWRlbmF2L19zaWRlbmF2LXRoZW1lLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydC9fc29ydC10aGVtZS5zY3NzIiwiLi4vLi4vLi4vYnJlYWtwb2ludHMuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHUSxnRUFBQTtBQUhSLDhFQUFBO0FDbU1FO0VBQ0UsZ0JBeExVO0VBeUxWLGVBMUxRO0VBMkxSLGlEQUFBO0FDaE1KO0FEbU1FO0VBRUUsY0FBQTtBQ2pNSjtBRG9NRTtFQUNFLGVBQUE7QUNqTUo7QUN3S0U7RUN0R0Usd0RBQUE7RUFjRixzQkFBQTtFRDBGRSxnQkFBQTtBRHBLSjtBQ3VLRTtFQzNHRSx3REFBQTtFQWNG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QTVDOHBDRjtBMkNoeUNJO0VDa0lGLHlIQUFBO0E1Q2txQ0Y7QTJDcHlDSTtFQ2tJRiwwSEFBQTtBNUNzcUNGO0EyQ3h5Q0k7RUNrSUYsMEhBQUE7QTVDMHFDRjtBMkM1eUNJO0VDa0lGLDJIQUFBO0E1QzhxQ0Y7QTJDaHpDSTtFQ2tJRiwySEFBQTtBNUNrckNGO0EyQ3B6Q0k7RUNrSUYsMkhBQUE7QTVDc3JDRjtBMkN4ekNJO0VDa0lGLDJIQUFBO0E1QzByQ0Y7QTJDNXpDSTtFQ2tJRiw0SEFBQTtBNUM4ckNGO0EyQ2gwQ0k7RUNrSUYsNEhBQUE7QTVDa3NDRjtBMkNwMENJO0VDa0lGLDRIQUFBO0E1Q3NzQ0Y7QTJDeDBDSTtFQ2tJRiw0SEFBQTtBNUMwc0NGO0EyQzUwQ0k7RUNrSUYsNEhBQUE7QTVDOHNDRjtBMkNoMUNJO0VDa0lGLDRIQUFBO0E1Q2t0Q0Y7QTJDcDFDSTtFQ2tJRiw2SEFBQTtBNUNzdENGO0EyQ3gxQ0k7RUNrSUYsNkhBQUE7QTVDMHRDRjtBMkM1MUNJO0VDa0lGLDZIQUFBO0E1Qzh0Q0Y7QTJDaDJDSTtFQ2tJRiw2SEFBQTtBNUNrdUNGO0EyQ3AyQ0k7RUNrSUYsOEhBQUE7QTVDc3VDRjtBMkN4MkNJO0VDa0lGLDhIQUFBO0E1QzB1Q0Y7QTJDNTJDSTtFQ2tJRiw4SEFBQTtBNUM4dUNGO0EyQ2gzQ0k7RUNrSUYsOEhBQUE7QTVDa3ZDRjtBMkNwM0NJO0VDa0lGLDhIQUFBO0E1Q3N2Q0Y7QTJDajNDSTtFQUNFLGFBQUE7QTNDbzNDTjtBNkM5NENFO0VBRUUsaUJBQUE7RUFDQSwwQkFBQTtBN0NnNUNKO0E0Q3B2Q0U7RUFYQSwwSEFBQTtBNUNrd0NGO0E2QzU0Q0k7RUFDRSxpQkFBQTtBN0M4NENOO0E2QzU0Q007RUFDRSwwQkFBQTtBN0M4NENSO0FEajBDRTtFQUNFLFlBQUE7RUFDQSxtQkFBQTtBQ28wQ0o7QW9DbjRDSTtFckNrRUUsa0JBQUE7RUFDQSxnQkFBQTtBQ28wQ047QUQvekNJO0VBQ0UsbUJBQUE7RUFDQSxZQUFBO0FDazBDTjtBRDd6Q0k7RUFDRSxZQUFBO0VBQ0Es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bXZFekI7QWdCNXRFTTtFQUNFLGNBdkJlO0FoQnF2RXZCO0FnQnh0RU07RUFDRSxjQTlCZTtBaEJ3dkV2QjtBZ0JydEVNO0VBQ0UsMEJBM0NpQjtBaEJrd0V6QjtBZ0JwdEVNO0VBQ0UsMEJBdENKO0FoQjR2RUo7QWtEendFSTtFQUNFLGNBQUE7QWxENHdFTjtBa0R6d0VJO0VBQ0UsY0FBQTtBbEQyd0VOO0FrRHh3RUk7RUFDRSxjQUFBO0FsRDB3RU47QW1CL3dFRTtFQUNFLDBCQUFBO0FuQmt4RUo7QW1CL3dFRTs7RUFFRSwwQkFBQTtBbkJreEVKO0FtQi93RUU7RUFDRSxvQkFBQTtBbkJreEVKO0FtRG55RUU7RWhDb0JJLDBCQUFBO0FuQmt4RU47QW1EdHlFRTtFaENvQkksMEJBQUE7QW5Ca3hFTjtBbURseUVFO0VoQ2dCSSwwQkFBQTtBbkJxeEVOO0FtRGp5RUU7RWhDWUksMEJBQUE7QW5Cd3hFTjtBbURoeUVFO0VoQ1FJLDBCQUFBO0FuQjJ4RU47QW1CeHdFRTtFQUNFLG9CQUFBO0FuQjJ3RUo7QW1CeHdFRTs7RUFFRSxvQkFBQTtBbkIyd0VKO0FtQnh3RUU7RUFDRSxjQUFBO0FuQjJ3RUo7QThCeHpFSTtFQUNFLDBCQUFBO0E5QjJ6RU47QThCeHpFSTtFQUNFLDBCQUFBO0E5QjB6RU47QThCdnpFSTtFQUNFLDBCQUFBO0E5Qnl6RU47QThCcnpFRTtFQUNFLHlCQUFBO0E5Qnd6RUo7QThCbHpFSTs7Ozs7RUFDRSwrQkFBQTtBOUJ5ekVOO0E4QnB6RUk7RUFDRSwrQkFBQTtBOUJ1ekVOO0FvQm4xRUU7RUFFRSxpQkFBQTtBcEJxMUVKO0E0QzNyRUU7RUFYQSwwSEFBQTtBNUN5c0VGO0FvQnIxRUU7RUFDRSx1QkFBQTtFQUNBLDBCQUFBO0FwQncxRUo7QW9CcjFFTTs7RUFHRSwwQkFBQTtBcEJzMUVSO0FvQmoxRUU7O0VBRUUsMEJBQUE7QXBCbzFFSjtBb0I3MEVJOzs7O0VBQ0UsK0JBQUE7QXBCbTFFTjtBcUIvMkVFO0VBQ0UsaUJBQUE7QXJCazNFSjtBcUIvMkVFOztFQUVFLDBCQUFBO0FyQmsz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LG9CQUFBO0FBcWdHSjtBQW5nR0k7RUFDRSxtQkFBQTtFQUNBLFlBQUE7QUFxZ0dOO0FBbmdHTTtFQUVFLGNBQUE7QUFvZ0dSO0FBamdHTTtFQUNFLHVCQUFBO0FBbWdHUjtBQS8vRkk7RUFFRSxjQUFBO0FBZ2dHTjtBQTMvRkU7RUFDRSxlQUFBO0VBQ0EsbUJBQUE7RUFDQSxjQUFBO0FBNi9GSiIsImZpbGUiOiJjYXJkLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLyogWW91IGNhbiBhZGQgZ2xvYmFsIHN0eWxlcyB0byB0aGlzIGZpbGUsIGFuZCBhbHNvIGltcG9ydCBvdGhlciBzdHlsZSBmaWxlcyAqL1xuQHVzZSAnfkBhbmd1bGFyL21hdGVyaWFsJyBhcyBtYXQ7XG5AaW1wb3J0ICd+QGFuZ3VsYXIvbWF0ZXJpYWwvdGhlbWluZyc7XG5AaW1wb3J0IHVybCgnLy9mb250cy5nb29nbGVhcGlzLmNvbS9pY29uP2ZhbWlseT1NYXRlcmlhbCtJY29ucycpO1xuXG5AaW5jbHVkZSBtYXQuY29yZSgpO1xuXG4kbWYtYnctbW9kZWxpY2E6IG1hdC5kZWZpbmUtdHlwb2dyYXBoeS1jb25maWcoXG4gICRmb250LWZhbWlseTogJ0J3TW9kZWxpY2EsIG1vbm9zcGFjZScsXG4gICRoZWFkbGluZTogbWF0LmRlZmluZS10eXBvZ3JhcGh5LWxldmVsKDMycHgsIDQ4cHgsIGJvbGQpXG4pO1xuXG4kbWYtb3Blbi1zYW5zOiBtYXQuZGVmaW5lLXR5cG9ncmFwaHktY29uZmlnKFxuICAkZm9udC1mYW1pbHk6ICdPcGVuU2Fucywgc2Fucy1zZXJpZicsXG4gICRib2R5LTE6IG1hdC5kZWZpbmUtdHlwb2dyYXBoeS1sZXZlbCgxNnB4LCAyNHB4LCBub3JtYWwpXG4pO1xuXG5AaW5jbHVkZSBtYXQuYWxsLWNvbXBvbmVudC10eXBvZ3JhcGhpZXMoJG1mLW9wZW4tc2Fucyk7XG5cbi5tYXQtdHlwb2dyYXBoeSB7XG4gIGgxLCBoMiwgaDMsIGg0LCBoNSwgaDYge1xuICAgIGZvbnQtZmFtaWx5OiBtYXQuZm9udC1mYW1pbHkoJG1mLWJ3LW1vZGVsaWNhKTtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgfVxufVxuXG4kbWYtZ3JlZW46IChcbiAgNTA6ICMyNmQ5YTYsXG4gIDEwMDogIzI2ZDlhNixcbiAgMjAwOiAjMjZkOWE2LFxuICAzMDA6ICMyNmQ5YTYsXG4gIDQwMDogIzI2ZDlhNixcbiAgNTAwOiAjMTBjZjk4LFxuICA2MDA6ICMxMGNmOTgsXG4gIDcwMDogIzEwY2Y5OCxcbiAgODAwOiAjMTBjZjk4LFxuICA5MDA6ICMxMGNmOTgsXG4gIEExMDA6ICMwNTgyNWUsXG4gIEEyMDA6ICMwNTgyNWUsXG4gIEE0MDA6ICMwNTgyNWUsXG4gIEE3MDA6ICMwNTgyNWUsXG4gIGNvbnRyYXN0OiAoXG4gICAgNTA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAxMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAyMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAzMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA0MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA1MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA2MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA3MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgODAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDkwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICBBMTAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgQTIwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIEE0MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICBBNzAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gIClcbik7XG4kbWYtcmVkOiAoXG4gIDUwOiAjZmZhNTkxLFxuICAxMDA6ICNmZmE1OTEsXG4gIDIwMDogI2ZmYTU5MSxcbiAgMzAwOiAjZmZhNTkxLFxuICA0MDA6ICNmZmE1OTEsXG4gIDUwMDogI2ZjOGY3NixcbiAgNjAwOiAjZmM4Zjc2LFxuICA3MDA6ICNmYzhmNzYsXG4gIDgwMDogI2ZjOGY3NixcbiAgOTAwOiAjZmM4Zjc2LFxuICBBMTAwOiAjYWY1NTQxLFxuICBBMjAwOiAjYWY1NTQxLFxuICBBNDAwOiAjYWY1NTQxLFxuICBBNzAwOiAjYWY1NTQxLFxuICBjb250cmFzdDogKFxuICAgIDUwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMTAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMjAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMzAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgNDAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgNTAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgNjAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgNzAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDgwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA5MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgQTEwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIEEyMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICBBNDAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgQTcwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICApXG4pO1xuJG1mLXllbGxvdzogKFxuICA1MDogI2ZmZGI4ZSxcbiAgMTAwOiAjZmZkYjhlLFxuICAyMDA6ICNmZmRiOGUsXG4gIDMwMDogI2ZmZGI4ZSxcbiAgNDAwOiAjZmZkYjhlLFxuICA1MDA6ICNmN2NjNzEsXG4gIDYwMDogI2Y3Y2M3MSxcbiAgNzAwOiAjZjdjYzcxLFxuICA4MDA6ICNmN2NjNzEsXG4gIDkwMDogI2Y3Y2M3MSxcbiAgQTEwMDogI2FhODczZCxcbiAgQTIwMDogI2FhODczZCxcbiAgQTQwMDogI2FhODczZCxcbiAgQTcwMDogI2FhODczZCxcbiAgY29udHJhc3Q6IChcbiAgICA1MDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDEwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDIwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDMwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDQwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDUwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDYwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDcwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA4MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgOTAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIEExMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICBBMjAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgQTQwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIEE3MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgKVxuKTtcbiRtZi1ibHVlOiAoXG4gIDUwOiAjOTJhZGY3LFxuICAxMDA6ICM2ODkxZmYsXG4gIDIwMDogIzYzOGRmZixcbiAgMzAwOiAjNmQ5MWY3LFxuICA0MDA6ICM0ZDdhZjcsXG4gIDUwMDogIzQ4NzVmNSxcbiAgNjAwOiAjNDc3NWY1LFxuICA3MDA6ICM0Nzc1ZjUsXG4gIDgwMDogIzQ0NmRmNSxcbiAgOTAwOiAjNDE2OWRiLFxuICBBMTAwOiAjMjA0NGE4LFxuICBBMjAwOiAjMjA0NGE4LFxuICBBNDAwOiAjMjA0NGE4LFxuICBBNzAwOiAjMzUzZjUyLFxuICBjb250cmFzdDogKFxuICAgIDUwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMTAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMjAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMzAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgNDAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgNTAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgNjAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgNzAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDgwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA5MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgQTEwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIEEyMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICBBNDAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgQTcwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICApXG4pO1xuXG4kcHJpbWFyeVRoZW1lOiAkbWYtYmx1ZTtcbiRhY2NlbnRUaGVtZTogJG1mLXllbGxvdztcbiR3YXJuVGhlbWU6ICRtZi1yZWQ7XG4kc3VjY2Vzc1RoZW1lOiAkbWYtZ3JlZW47XG4kZWxldmF0aW9uOiA3MDA7XG4kcHJpbWFyeTogbWF0LmRlZmluZS1wYWxldHRlKCRwcmltYXJ5VGhlbWUsICRlbGV2YXRpb24pO1xuJGFjY2VudDogIG1hdC5kZWZpbmUtcGFsZXR0ZSgkYWNjZW50VGhlbWUsICRlbGV2YXRpb24pO1xuJHdhcm46ICAgIG1hdC5kZWZpbmUtcGFsZXR0ZSgkd2FyblRoZW1lLCAkZWxldmF0aW9uKTtcbiRzdWNjZXNzOiAgICBtYXQuZGVmaW5lLXBhbGV0dGUoJHN1Y2Nlc3NUaGVtZSwgJGVsZXZhdGlvbik7XG4kc3VjY2Vzc1RleHQ6ICAgIG1hdC5kZWZpbmUtcGFsZXR0ZSgkc3VjY2Vzc1RoZW1lLCBBNzAwKTtcblxuXG4kbWF0LXdoaXRlOiAoXG4gIDUwOiAjZmZmZmZmLFxuICAxMDA6ICNmZmZmZmYsXG4gIDIwMDogI2ZmZmZmZixcbiAgMzAwOiAjZmZmZmZmLFxuICA0MDA6ICNmMGYwZjIsXG4gIDUwMDogI2Y5ZjlmOSxcbiAgNjAwOiAjZmJmYmZiLFxuICA3MDA6ICNmNmY2ZjYsXG4gIDgwMDogI2Y0ZjRmNCxcbiAgOTAwOiAjZjRmN2Y5LFxuICBBMTAwOiAjZThlYmVlLFxuICBBMjAwOiAjYzdjOWNkLFxuICBBNDAwOiAjOWVhNGFlLFxuICBBNzAwOiAjOWI5YjliLFxuICBjb250cmFzdDogKFxuICAgIDUwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMTAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMjAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMzAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgNDAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgNTAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgNjAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgNzAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDgwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA5MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgQTEwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIEEyMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICBBNDAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgQTcwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICApXG4pO1xuJG1hdC1ibGFjazogKFxuICA1MDogI2JmYmZiZixcbiAgMTAwOiAjYWViMmJhLFxuICAyMDA6ICM5NDk0OTQsXG4gIDMwMDogIzczNzM3MyxcbiAgNDAwOiAjNjA2MDYwLFxuICA1MDA6ICM2MjYyNjIsXG4gIDYwMDogIzQ3NDc0NyxcbiAgNzAwOiAjMzQzNDM0LFxuICA4MDA6ICMyNDI0MjQsXG4gIDkwMDogIzIzMjMyMyxcbiAgQTEwMDogIzE3MTcxNyxcbiAgQTIwMDogIzExMTExMSxcbiAgQTQwMDogIzBlMGUwZSxcbiAgQTcwMDogYmxhY2ssXG4gIGNvbnRyYXN0OiAoXG4gICAgNTA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAxMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAyMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAzMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA0MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA1MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA2MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA3MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgODAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDkwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICBBMTAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgQTIwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIEE0MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICBBNzAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gIClcbik7XG5cbiR0aGVtZTogbWF0LmRlZmluZS1saWdodC10aGVtZSgkcHJpbWFyeSwgJGFjY2VudCwgJHdhcm4pO1xuXG5AaW5jbHVkZSBtYXQuYWxsLWNvbXBvbmVudC10aGVtZXMoJHRoZW1lKTtcbiIsIi8vIFRoaXMgY29udGFpbnMgYWxsIG9mIHRoZSBzdHlsZXMgZm9yIHRoZSBiYWRnZVxuLy8gcmF0aGVyIHRoYW4ganVzdCB0aGUgY29sb3IvdGhlbWUgYmVjYXVzZSBvZlxuLy8gbm8gc3R5bGUgc2hlZXQgc3VwcG9ydCBmb3IgZGlyZWN0aXZlcy5cbkB1c2UgJ3Nhc3M6Y29sb3InO1xuQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnc2FzczptZXRhJztcbkB1c2UgJy4uL2NvcmUvdGhlbWluZy90aGVtaW5nJztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5JztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5LXV0aWxzJztcbkB1c2UgJy4uLy4uL2Nkay9hMTF5JztcblxuJGZvbnQtc2l6ZTogMTJweDtcbiRmb250LXdlaWdodDogNjAwO1xuJGRlZmF1bHQtc2l6ZTogMjJweCAhZGVmYXVsdDtcbiRzbWFsbC1zaXplOiAkZGVmYXVsdC1zaXplIC0gNjtcbiRsYXJnZS1zaXplOiAkZGVmYXVsdC1zaXplICsgNjtcblxuLy8gTWl4aW4gZm9yIGJ1aWxkaW5nIG9mZnNldCBnaXZlbiBkaWZmZXJlbnQgc2l6ZXNcbkBtaXhpbiBfYmFkZ2Utc2l6ZSgkc2l6ZSkge1xuICAubWF0LWJhZGdlLWNvbnRlbnQge1xuICAgIHdpZHRoOiAkc2l6ZTtcbiAgICBoZWlnaHQ6ICRzaXplO1xuICAgIGxpbmUtaGVpZ2h0OiAkc2l6ZTtcbiAgfVxuXG4gICYubWF0LWJhZGdlLWFib3ZlIHtcbiAgICAubWF0LWJhZGdlLWNvbnRlbnQge1xuICAgICAgdG9wOiAtJHNpemUgLyAyO1xuICAgIH1cbiAgfVxuXG4gICYubWF0LWJhZGdlLWJlbG93IHtcbiAgICAubWF0LWJhZGdlLWNvbnRlbnQge1xuICAgICAgYm90dG9tOiAtJHNpemUgLyAyO1xuICAgIH1cbiAgfVxuXG4gICYubWF0LWJhZGdlLWJlZm9yZSB7XG4gICAgLm1hdC1iYWRnZS1jb250ZW50IHtcbiAgICAgIGxlZnQ6IC0kc2l6ZTtcbiAgICB9XG4gIH1cblxuICBbZGlyPSdydGwnXSAmLm1hdC1iYWRnZS1iZWZvcmUge1xuICAgIC5tYXQtYmFkZ2UtY29udGVudCB7XG4gICAgICBsZWZ0OiBhdXRvO1xuICAgICAgcmlnaHQ6IC0kc2l6ZTtcbiAgICB9XG4gIH1cblxuICAmLm1hdC1iYWRnZS1hZnRlciB7XG4gICAgLm1hdC1iYWRnZS1jb250ZW50IHtcbiAgICAgIHJpZ2h0OiAtJHNpemU7XG4gICAgfVxuICB9XG5cbiAgW2Rpcj0ncnRsJ10gJi5tYXQtYmFkZ2UtYWZ0ZXIge1xuICAgIC5tYXQtYmFkZ2UtY29udGVudCB7XG4gICAgICByaWdodDogYXV0bztcbiAgICAgIGxlZnQ6IC0kc2l6ZTtcbiAgICB9XG4gIH1cblxuICAmLm1hdC1iYWRnZS1vdmVybGFwIHtcbiAgICAmLm1hdC1iYWRnZS1iZWZvcmUge1xuICAgICAgLm1hdC1iYWRnZS1jb250ZW50IHtcbiAgICAgICAgbGVmdDogLSRzaXplIC8gMjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBbZGlyPSdydGwnXSAmLm1hdC1iYWRnZS1iZWZvcmUge1xuICAgICAgLm1hdC1iYWRnZS1jb250ZW50IHtcbiAgICAgICAgbGVmdDogYXV0bztcbiAgICAgICAgcmlnaHQ6IC0kc2l6ZSAvIDI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJi5tYXQtYmFkZ2UtYWZ0ZXIge1xuICAgICAgLm1hdC1iYWRnZS1jb250ZW50IHtcbiAgICAgICAgcmlnaHQ6IC0kc2l6ZSAvIDI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgW2Rpcj0ncnRsJ10gJi5tYXQtYmFkZ2UtYWZ0ZXIge1xuICAgICAgLm1hdC1iYWRnZS1jb250ZW50IHtcbiAgICAgICAgcmlnaHQ6IGF1dG87XG4gICAgICAgIGxlZnQ6IC0kc2l6ZSAvIDI7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBjb2xvcigkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJGFjY2VudDogbWFwLmdldCgkY29uZmlnLCBhY2NlbnQpO1xuICAkd2FybjogbWFwLmdldCgkY29uZmlnLCB3YXJuKTtcbiAgJHByaW1hcnk6IG1hcC5nZXQoJGNvbmZpZywgcHJpbWFyeSk7XG4gICRiYWNrZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGJhY2tncm91bmQpO1xuICAkZm9yZWdyb3VuZDogbWFwLmdldCgkY29uZmlnLCBmb3JlZ3JvdW5kKTtcblxuICAubWF0LWJhZGdlLWNvbnRlbnQge1xuICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHByaW1hcnksIGRlZmF1bHQtY29udHJhc3QpO1xuICAgIGJhY2tncm91bmQ6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkcHJpbWFyeSk7XG5cbiAgICBAaW5jbHVkZSBhMTF5LmhpZ2gtY29udHJhc3QoYWN0aXZlLCBvZmYpIHtcbiAgICAgIG91dGxpbmU6IHNvbGlkIDFweDtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDA7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1iYWRnZS1hY2NlbnQge1xuICAgIC5tYXQtYmFkZ2UtY29udGVudCB7XG4gICAgICBiYWNrZ3JvdW5kOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGFjY2VudCk7XG4gICAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRhY2NlbnQsIGRlZmF1bHQtY29udHJhc3QpO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtYmFkZ2Utd2FybiB7XG4gICAgLm1hdC1iYWRnZS1jb250ZW50IHtcbiAgICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHdhcm4sIGRlZmF1bHQtY29udHJhc3QpO1xuICAgICAgYmFja2dyb3VuZDogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCR3YXJuKTtcbiAgICB9XG4gIH1cblxuICAubWF0LWJhZGdlIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIH1cblxuICAubWF0LWJhZGdlLWhpZGRlbiB7XG4gICAgLm1hdC1iYWRnZS1jb250ZW50IHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1iYWRnZS1kaXNhYmxlZCB7XG4gICAgLm1hdC1iYWRnZS1jb250ZW50IHtcbiAgICAgICRhcHAtYmFja2dyb3VuZDogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLCAnYmFja2dyb3VuZCcpO1xuICAgICAgJGJhZGdlLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIGRpc2FibGVkLWJ1dHRvbik7XG5cbiAgICAgIC8vIFRoZSBkaXNhYmxlZCBjb2xvciB1c3VhbGx5IGhhcyBzb21lIGtpbmQgb2Ygb3BhY2l0eSwgYnV0IGJlY2F1c2UgdGhlIGJhZGdlIGlzIG92ZXJsYXllZFxuICAgICAgLy8gb24gdG9wIG9mIHNvbWV0aGluZyBlbHNlLCBpdCB3b24ndCBsb29rIGdvb2QgaWYgaXQncyBvcGFxdWUuIElmIGl0IGlzIGEgY29sb3IgKnR5cGUqLFxuICAgICAgLy8gd2UgY29udmVydCBpdCBpbnRvIGEgc29saWQgY29sb3IgYnkgdGFraW5nIHRoZSBvcGFjaXR5IGZyb20gdGhlIHJnYmEgdmFsdWUgYW5kIHVzaW5nXG4gICAgICAvLyB0aGUgdmFsdWUgdG8gZGV0ZXJtaW5lIHRoZSBwZXJjZW50YWdlIG9mIHRoZSBiYWNrZ3JvdW5kIHRvIHB1dCBpbnRvIGZvcmVncm91bmQgd2hlblxuICAgICAgLy8gbWl4aW5nIHRoZSBjb2xvcnMgdG9nZXRoZXIuXG4gICAgICBAaWYgKG1ldGEudHlwZS1vZigkYmFkZ2UtY29sb3IpID09IGNvbG9yIGFuZCBtZXRhLnR5cGUtb2YoJGFwcC1iYWNrZ3JvdW5kKSA9PSBjb2xvcikge1xuICAgICAgICAkYmFkZ2Utb3BhY2l0eTogb3BhY2l0eSgkYmFkZ2UtY29sb3IpO1xuICAgICAgICBiYWNrZ3JvdW5kOiBjb2xvci5taXgoJGFwcC1iYWNrZ3JvdW5kLCByZ2JhKCRiYWRnZS1jb2xvciwgMSksICgxIC0gJGJhZGdlLW9wYWNpdHkpICogMTAwJSk7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgIGJhY2tncm91bmQ6ICRiYWRnZS1jb2xvcjtcbiAgICAgIH1cblxuICAgICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgZGlzYWJsZWQtdGV4dCk7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1iYWRnZS1jb250ZW50IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDIwMG1zIGVhc2UtaW4tb3V0O1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMC42KTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIH1cblxuICAubmctYW5pbWF0ZS1kaXNhYmxlZCAubWF0LWJhZGdlLWNvbnRlbnQsXG4gIC5tYXQtYmFkZ2UtY29udGVudC5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZSB7XG4gICAgdHJhbnNpdGlvbjogbm9uZTtcbiAgfVxuXG4gIC8vIFRoZSBhY3RpdmUgY2xhc3MgaXMgYWRkZWQgYWZ0ZXIgdGhlIGVsZW1lbnQgaXMgYWRkZWRcbiAgLy8gc28gaXQgY2FuIGFuaW1hdGUgc2NhbGUgdG8gZGVmYXVsdFxuICAubWF0LWJhZGdlLWNvbnRlbnQubWF0LWJhZGdlLWFjdGl2ZSB7XG4gICAgLy8gU2NhbGUgdG8gYG5vbmVgIGluc3RlYWQgb2YgYDFgIHRvIGF2b2lkIGJsdXJyeSB0ZXh0IGluIHNvbWUgYnJvd3NlcnMuXG4gICAgdHJhbnNmb3JtOiBub25lO1xuICB9XG5cbiAgLm1hdC1iYWRnZS1zbWFsbCB7XG4gICAgQGluY2x1ZGUgX2JhZGdlLXNpemUoJHNtYWxsLXNpemUpO1xuICB9XG4gIC5tYXQtYmFkZ2UtbWVkaXVtIHtcbiAgICBAaW5jbHVkZSBfYmFkZ2Utc2l6ZSgkZGVmYXVsdC1zaXplKTtcbiAgfVxuICAubWF0LWJhZGdlLWxhcmdlIHtcbiAgICBAaW5jbHVkZSBfYmFkZ2Utc2l6ZSgkbGFyZ2Utc2l6ZSk7XG4gIH1cbn1cblxuQG1peGluIHR5cG9ncmFwaHkoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0eXBvZ3JhcGh5LnByaXZhdGUtdHlwb2dyYXBoeS10by0yMDE0LWNvbmZpZyhcbiAgICAgIHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCRjb25maWctb3ItdGhlbWUpKTtcbiAgLm1hdC1iYWRnZS1jb250ZW50IHtcbiAgICBmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0O1xuICAgIGZvbnQtc2l6ZTogJGZvbnQtc2l6ZTtcbiAgICBmb250LWZhbWlseTogdHlwb2dyYXBoeS11dGlscy5mb250LWZhbWlseSgkY29uZmlnKTtcbiAgfVxuXG4gIC5tYXQtYmFkZ2Utc21hbGwgLm1hdC1iYWRnZS1jb250ZW50IHtcbiAgICAvLyBTZXQgdGhlIGZvbnQgc2l6ZSB0byA3NSUgb2YgdGhlIG9yaWdpbmFsLlxuICAgIGZvbnQtc2l6ZTogJGZvbnQtc2l6ZSAqIDAuNzU7XG4gIH1cblxuICAubWF0LWJhZGdlLWxhcmdlIC5tYXQtYmFkZ2UtY29udGVudCB7XG4gICAgZm9udC1zaXplOiAkZm9udC1zaXplICogMjtcbiAgfVxufVxuXG5AbWl4aW4gX2RlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIHRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiB0aGVtaW5nLnByaXZhdGUtbGVnYWN5LWdldC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgQGluY2x1ZGUgdGhlbWluZy5wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LWJhZGdlJykge1xuICAgICRjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgJGRlbnNpdHk6IHRoZW1pbmcuZ2V0LWRlbnNpdHktY29uZmlnKCR0aGVtZSk7XG4gICAgJHR5cG9ncmFwaHk6IHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCR0aGVtZSk7XG5cbiAgICBAaWYgJGNvbG9yICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgX2RlbnNpdHkoJGRlbnNpdHkpO1xuICAgIH1cbiAgICBAaWYgJHR5cG9ncmFwaHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5KCR0eXBvZ3JhcGh5KTtcbiAgICB9XG4gIH1cbn1cbiIsIkBpbXBvcnQgXCIuLi8uLi8uLi90aGVtZVwiO1xuQGltcG9ydCBcIi4uLy4uLy4uL3ZhcmlhYmxlc1wiO1xuQGltcG9ydCBcInNyYy9icmVha3BvaW50c1wiO1xuLmxpc3QtY2FyZCB7XG4gIHdpZHRoOiB2YXIoLS1jYXJkLXdpZHRoKTtcbiAgaGVpZ2h0OiB2YXIoLS1jYXJkLWhlaWdodCk7XG4gIG1hcmdpbjogMTBweDtcbiAgcGFkZGluZzogMDtcbiAgYmFja2dyb3VuZDogbWF0LWNvbG9yKCRtYXQtd2hpdGUsIDUwKTtcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xuICBAZXh0ZW5kIC5tYXQtZWxldmF0aW9uLXoyO1xuICB0cmFuc2l0aW9uOiBhbGwgLjNzO1xuXG4gICY6aG92ZXIge1xuICAgIEBleHRlbmQgLm1hdC1lbGV2YXRpb24tejg7XG5cbiAgICAubGlzdC1jYXJkIHtcbiAgICAgICZfdGl0bGUge1xuICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgYm9yZGVyOiAycHggc29saWQgbWF0LWNvbG9yKCRtZi1ibHVlLCA3MDApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gIH1cblxuICAmLS1uZXcge1xuICAgIGhlaWdodDogMTAwJTtcbiAgICB3aWR0aDogMTAwJTtcbiAgfVxuXG4gICZfaGVhZGVyIHtcbiAgICB0b3A6IDIwcHg7XG4gICAgbGVmdDogMzBweDtcbiAgICB3aWR0aDogY2FsYyh2YXIoLS1jYXJkLXdpZHRoKSAtIDUwcHgpO1xuICAgIGhlaWdodDogdmFyKC0tY2FyZC0taGVhZGVyLWhlaWdodCk7XG4gIH1cblxuICAmX2Zvb3RlciB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGJvdHRvbTogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHdpZHRoOiB2YXIoLS1jYXJkLXdpZHRoKTtcbiAgICBoZWlnaHQ6IHZhcigtLWNhcmQtLWZvb3Rlci1oZWlnaHQpO1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCBtYXQtY29sb3IoJG1hdC13aGl0ZSwgQTEwMCk7XG4gICAgcGFkZGluZzogMCAyMHB4O1xuXG4gICAgJl9pbmZvIHtcbiAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgY29sb3I6IG1hdC1jb2xvcigkbWF0LXdoaXRlLCBBMjAwKTtcblxuICAgICAgJl9mb3JtLXR5cGUge1xuICAgICAgICBjb2xvcjogIzIxMjUyOTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAmX3RpdGxlIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgZm9udC1zaXplOiAxNXB4O1xuXG4gICAgJjpiZWZvcmUge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgbGVmdDogLTE2cHg7XG4gICAgICB0b3A6IDZweDtcbiAgICAgIHdpZHRoOiA5cHg7XG4gICAgICBoZWlnaHQ6IDlweDtcbiAgICAgIGJvcmRlcjogMnB4IHNvbGlkIG1hdC1jb2xvcigkbWF0LXdoaXRlLCBBMjAwKTtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgdHJhbnNpdGlvbjogYWxsIC4zcztcbiAgICB9XG5cbiAgICAmLmNyb3Age1xuICAgICAgd2lkdGg6IGNhbGModmFyKC0tY2FyZC13aWR0aCkgLSA5MHB4KTtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuXG4gICAgICBzcGFuIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICZfZGF0ZSB7XG4gICAgZm9udC1zaXplOiAxMnB4O1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIGNvbG9yOiBtYXQtY29sb3IoJG1hdC13aGl0ZSwgQTIwMCk7XG4gIH1cblxuICAmX21vcmUge1xuICAgIHBhZGRpbmctbGVmdDogNHB4O1xuICAgIGNvbG9yOiBtYXQtY29sb3IoJG1hdC13aGl0ZSwgQTIwMCk7XG4gIH1cblxuICAmX3ZpZXctYnV0dG9uIHtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGJvcmRlci1yYWRpdXM6IDlweDtcbiAgICBiYWNrZ3JvdW5kOiBtYXQtY29sb3IoJG1hdC13aGl0ZSwgNDAwKTtcbiAgICBjb2xvcjogbWF0LWNvbG9yKCRtYXQtYmxhY2ssIDUwKTtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBmb250LXNpemU6IDE0cHg7XG4gICAgcGFkZGluZzogMCAyMnB4O1xuICAgIHRyYW5zaXRpb246IGFsbCAuMnM7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQ6IG1hdC1jb2xvcigkc3VjY2Vzcyk7XG4gICAgICBjb2xvcjogbWF0LWNvbG9yKCRtYXQtd2hpdGUsIDUwKTtcblxuICAgICAgaTpiZWZvcmUge1xuICAgICAgICAvL2NvbG9yOiBtYXQtY29sb3IoJG1hdC13aGl0ZSwgNTApO1xuICAgICAgICBjb2xvcjogaW5oZXJpdDtcbiAgICAgIH1cblxuICAgICAgOjpuZy1kZWVwIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXkge1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpOmJlZm9yZSB7XG4gICAgICAvL2NvbG9yOiBtYXQtY29sb3IoJG1hdC1ibGFjaywgNTApO1xuICAgICAgY29sb3I6IGluaGVyaXQ7XG4gICAgICAvL3RyYW5zaXRpb246IGFsbCAuM3M7XG4gICAgfVxuICB9XG5cbiAgJl9kZWZhdWx0LWdyb3VwIHtcbiAgICBmb250LXNpemU6IDEycHg7XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICBjb2xvcjogbWF0LWNvbG9yKCRtYXQtd2hpdGUsIEEyMDApO1xuICB9XG59XG4iLCJAdXNlICdzYXNzOm1hcCc7XG5AdXNlICd0eXBvZ3JhcGh5LXV0aWxzJztcbkB1c2UgJy4uL3RoZW1pbmcvdGhlbWluZyc7XG5cbi8vLyBEZWZpbmVzIGEgdHlwb2dyYXBoeSBsZXZlbCBmcm9tIHRoZSBNYXRlcmlhbCBEZXNpZ24gc3BlYy5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGZvbnQtc2l6ZSBUaGUgZm9udC1zaXplIGZvciB0aGlzIGxldmVsLlxuLy8vIEBwYXJhbSB7U3RyaW5nIHwgTnVtYmVyfSAkbGluZS1oZWlnaHQgVGhlIGxpbmUtaGVpZ2h0IGZvciB0aGlzIGxldmVsLlxuLy8vIEBwYXJhbSB7U3RyaW5nIHwgTnVtYmVyfSAkZm9udC13ZWlnaHQgVGhlIGZvbnQtd2VpZ2h0IGZvciB0aGlzIGxldmVsLlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkZm9udC1mYW1pbHkgVGhlIGZvbnQtZmFtaWx5IGZvciB0aGlzIGxldmVsLlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkbGV0dGVyLXNwYWNpbmcgVGhlIGxldHRlci1zcGFjaW5nIGZvciB0aGlzIGxldmVsLlxuLy8vIEByZXR1cm5zIHtNYXB9IEEgbWFwIHJlcHJlc2VudGluZyB0aGUgZGVmaW5pdGlvbiBvZiB0aGlzIHR5cHBvZ3JhcGhpYyBsZXZlbC5cbkBmdW5jdGlvbiBkZWZpbmUtdHlwb2dyYXBoeS1sZXZlbChcbiAgJGZvbnQtc2l6ZSxcbiAgJGxpbmUtaGVpZ2h0OiAkZm9udC1zaXplLFxuICAkZm9udC13ZWlnaHQ6IDQwMCxcbiAgJGZvbnQtZmFtaWx5OiBudWxsLFxuICAkbGV0dGVyLXNwYWNpbmc6IG5vcm1hbCkge1xuXG4gIEByZXR1cm4gKFxuICAgIGZvbnQtc2l6ZTogJGZvbnQtc2l6ZSxcbiAgICBsaW5lLWhlaWdodDogJGxpbmUtaGVpZ2h0LFxuICAgIGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQsXG4gICAgZm9udC1mYW1pbHk6ICRmb250LWZhbWlseSxcbiAgICBsZXR0ZXItc3BhY2luZzogJGxldHRlci1zcGFjaW5nXG4gICk7XG59XG5cbi8vLyBEZWZpbmVzIGEgY29sbGVjdGlvbiBvZiB0eXBvZ3JhcGh5IGxldmVscyB0byBjb25maWd1cmUgdHlwb2dyYXBoeSBmb3IgYW4gYXBwbGljYXRpb24uXG4vLy8gQW55IGxldmVsIG5vdCBzcGVjaWZpZWQgZGVmYXVsdHMgdG8gdGhlIHZhbHVlcyBkZWZpbmVkIGluIHRoZSBNYXRlcmlhbCBEZXNpZ24gc3BlY2lmaWNhdGlvbjpcbi8vLyBodHRwczovL21hdGVyaWFsLmlvL2d1aWRlbGluZXMvc3R5bGUvdHlwb2dyYXBoeS5odG1sLlxuLy8vXG4vLy8gTm90ZSB0aGF0IHRoZSBNYXRlcmlhbCBEZXNpZ24gc3BlY2lmaWNhdGlvbiBkb2VzIG5vdCBkZXNjcmliZSBleHBsaWNpdCBsZXR0ZXItc3BhY2luZyB2YWx1ZXMuXG4vLy8gVGhlIHZhbHVlcyBoZXJlIGNvbWUgZnJvbSByZXZlcnNlIGVuZ2luZWVyaW5nIHRoZSBNYXRlcmlhbCBEZXNpZ24gZXhhbXBsZXMuXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRmb250LWZhbWlseSBEZWZhdWx0IGZvbnQtZmFtaWx5IGZvciBsZXZlbHMgdGhhdCBkb24ndCBzcGVjaWZ5IGZvbnQtZmFtaWx5LlxuLy8vIEBwYXJhbSB7TWFwfSAkZGlzcGxheS00IENvbmZpZ3VyYXRpb24gZm9yIHRoZSBcImRpc3BsYXktNFwiIHR5cG9ncmFwaGljIGxldmVsLlxuLy8vIEBwYXJhbSB7TWFwfSAkZGlzcGxheS0zIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBcImRpc3BsYXktM1wiIHR5cG9ncmFwaGljIGxldmVsLlxuLy8vIEBwYXJhbSB7TWFwfSAkZGlzcGxheS0yIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBcImRpc3BsYXktMlwiIHR5cG9ncmFwaGljIGxldmVsLlxuLy8vIEBwYXJhbSB7TWFwfSAkZGlzcGxheS0xIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBcImRpc3BsYXktMVwiIHR5cG9ncmFwaGljIGxldmVsLlxuLy8vIEBwYXJhbSB7TWFwfSAkaGVhZGxpbmUgQ29uZmlndXJhdGlvbiBmb3IgdGhlIFwiaGVhZGxpbmVcIiB0eXBvZ3JhcGhpYyBsZXZlbC5cbi8vLyBAcGFyYW0ge01hcH0gJHRpdGxlIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBcInRpdGxlXCIgdHlwb2dyYXBoaWMgbGV2ZWwuXG4vLy8gQHBhcmFtIHtNYXB9ICRzdWJoZWFkaW5nLTIgQ29uZmlndXJhdGlvbiBmb3IgdGhlIFwic3ViaGVhZGluZy0yXCIgdHlwb2dyYXBoaWMgbGV2ZWwuXG4vLy8gQHBhcmFtIHtNYXB9ICRzdWJoZWFkaW5nLTEgQ29uZmlndXJhdGlvbiBmb3IgdGhlIFwic3ViaGVhZGluZy0xXCIgdHlwb2dyYXBoaWMgbGV2ZWwuXG4vLy8gQHBhcmFtIHtNYXB9ICRib2R5LTIgQ29uZmlndXJhdGlvbiBmb3IgdGhlIFwiYm9keS0yXCIgdHlwb2dyYXBoaWMgbGV2ZWwuXG4vLy8gQHBhcmFtIHtNYXB9ICRib2R5LTEgQ29uZmlndXJhdGlvbiBmb3IgdGhlIFwiYm9keS0xXCIgdHlwb2dyYXBoaWMgbGV2ZWwuXG4vLy8gQHBhcmFtIHtNYXB9ICRjYXB0aW9uIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBcImNhcHRpb25cIiB0eXBvZ3JhcGhpYyBsZXZlbC5cbi8vLyBAcGFyYW0ge01hcH0gJGJ1dHRvbiBDb25maWd1cmF0aW9uIGZvciB0aGUgXCJidXR0b25cIiB0eXBvZ3JhcGhpYyBsZXZlbC5cbi8vLyBAcGFyYW0ge01hcH0gJGlucHV0IENvbmZpZ3VyYXRpb24gZm9yIHRoZSBcImlucHV0XCIgdHlwb2dyYXBoaWMgbGV2ZWwuXG4vLy8gQHJldHVybnMge01hcH0gQSB0eXBvZ3JhcGh5IGNvbmZpZyBmb3IgdGhlIGFwcGxpY2F0aW9uLlxuQGZ1bmN0aW9uIGRlZmluZS10eXBvZ3JhcGh5LWNvbmZpZyhcbiAgJGZvbnQtZmFtaWx5OiAgICdSb2JvdG8sIFwiSGVsdmV0aWNhIE5ldWVcIiwgc2Fucy1zZXJpZicsXG4gICRkaXNwbGF5LTQ6ICAgICBkZWZpbmUtdHlwb2dyYXBoeS1sZXZlbCgxMTJweCwgMTEycHgsIDMwMCwgJGxldHRlci1zcGFjaW5nOiAtMC4wNWVtKSxcbiAgJGRpc3BsYXktMzogICAgIGRlZmluZS10eXBvZ3JhcGh5LWxldmVsKDU2cHgsIDU2cHgsIDQwMCwgJGxldHRlci1zcGFjaW5nOiAtMC4wMmVtKSxcbiAgJGRpc3BsYXktMjogICAgIGRlZmluZS10eXBvZ3JhcGh5LWxldmVsKDQ1cHgsIDQ4cHgsIDQwMCwgJGxldHRlci1zcGFjaW5nOiAtMC4wMDVlbSksXG4gICRkaXNwbGF5LTE6ICAgICBkZWZpbmUtdHlwb2dyYXBoeS1sZXZlbCgzNHB4LCA0MHB4LCA0MDApLFxuICAkaGVhZGxpbmU6ICAgICAgZGVmaW5lLXR5cG9ncmFwaHktbGV2ZWwoMjRweCwgMzJweCwgNDAwKSxcbiAgJHRpdGxlOiAgICAgICAgIGRlZmluZS10eXBvZ3JhcGh5LWxldmVsKDIwcHgsIDMycHgsIDUwMCksXG4gICRzdWJoZWFkaW5nLTI6ICBkZWZpbmUtdHlwb2dyYXBoeS1sZXZlbCgxNnB4LCAyOHB4LCA0MDApLFxuICAkc3ViaGVhZGluZy0xOiAgZGVmaW5lLXR5cG9ncmFwaHktbGV2ZWwoMTVweCwgMjRweCwgNDAwKSxcbiAgJGJvZHktMjogICAgICAgIGRlZmluZS10eXBvZ3JhcGh5LWxldmVsKDE0cHgsIDI0cHgsIDUwMCksXG4gICRib2R5LTE6ICAgICAgICBkZWZpbmUtdHlwb2dyYXBoeS1sZXZlbCgxNHB4LCAyMHB4LCA0MDApLFxuICAkY2FwdGlvbjogICAgICAgZGVmaW5lLXR5cG9ncmFwaHktbGV2ZWwoMTJweCwgMjBweCwgNDAwKSxcbiAgJGJ1dHRvbjogICAgICAgIGRlZmluZS10eXBvZ3JhcGh5LWxldmVsKDE0cHgsIDE0cHgsIDUwMCksXG4gIC8vIExpbmUtaGVpZ2h0IG11c3QgYmUgdW5pdC1sZXNzIGZyYWN0aW9uIG9mIHRoZSBmb250LXNpemUuXG4gICRpbnB1dDogICAgICAgICBkZWZpbmUtdHlwb2dyYXBoeS1sZXZlbChpbmhlcml0LCAxLjEyNSwgNDAwKVxuKSB7XG5cbiAgLy8gRGVjbGFyZSBhbiBpbml0aWFsIG1hcCB3aXRoIGFsbCBvZiB0aGUgbGV2ZWxzLlxuICAkY29uZmlnOiAoXG4gICAgZGlzcGxheS00OiAgICAgICRkaXNwbGF5LTQsXG4gICAgZGlzcGxheS0zOiAgICAgICRkaXNwbGF5LTMsXG4gICAgZGlzcGxheS0yOiAgICAgICRkaXNwbGF5LTIsXG4gICAgZGlzcGxheS0xOiAgICAgICRkaXNwbGF5LTEsXG4gICAgaGVhZGxpbmU6ICAgICAgICRoZWFkbGluZSxcbiAgICB0aXRsZTogICAgICAgICAgJHRpdGxlLFxuICAgIHN1YmhlYWRpbmctMjogICAkc3ViaGVhZGluZy0yLFxuICAgIHN1YmhlYWRpbmctMTogICAkc3ViaGVhZGluZy0xLFxuICAgIGJvZHktMjogICAgICAgICAkYm9keS0yLFxuICAgIGJvZHktMTogICAgICAgICAkYm9keS0xLFxuICAgIGNhcHRpb246ICAgICAgICAkY2FwdGlvbixcbiAgICBidXR0b246ICAgICAgICAgJGJ1dHRvbixcbiAgICBpbnB1dDogICAgICAgICAgJGlucHV0LFxuICApO1xuXG4gIC8vIExvb3AgdGhyb3VnaCB0aGUgbGV2ZWxzIGFuZCBzZXQgdGhlIGBmb250LWZhbWlseWAgb2YgdGhlIG9uZXMgdGhhdCBkb24ndCBoYXZlIG9uZSB0byB0aGUgYmFzZS5cbiAgLy8gTm90ZSB0aGF0IFNhc3MgY2FuJ3QgbW9kaWZ5IG1hcHMgaW4gcGxhY2UsIHdoaWNoIG1lYW5zIHRoYXQgd2UgbmVlZCB0byBtZXJnZSBhbmQgcmUtYXNzaWduLlxuICBAZWFjaCAka2V5LCAkbGV2ZWwgaW4gJGNvbmZpZyB7XG4gICAgQGlmIG1hcC5nZXQoJGxldmVsLCBmb250LWZhbWlseSkgPT0gbnVsbCB7XG4gICAgICAkbmV3LWxldmVsOiBtYXAubWVyZ2UoJGxldmVsLCAoZm9udC1mYW1pbHk6ICRmb250LWZhbWlseSkpO1xuICAgICAgJGNvbmZpZzogbWFwLm1lcmdlKCRjb25maWcsICgka2V5OiAkbmV3LWxldmVsKSk7XG4gICAgfVxuICB9XG5cbiAgLy8gQWRkIHRoZSBiYXNlIGZvbnQgZmFtaWx5IHRvIHRoZSBjb25maWcuXG4gIEByZXR1cm4gbWFwLm1lcmdlKCRjb25maWcsIChmb250LWZhbWlseTogJGZvbnQtZmFtaWx5KSk7XG59XG5cbi8vIFdoZXRoZXIgYSBjb25maWcgaXMgZm9yIHRoZSBNYXRlcmlhbCBEZXNpZ24gMjAxOCB0eXBvZ3JhcGh5IHN5c3RlbS5cbkBmdW5jdGlvbiBwcml2YXRlLXR5cG9ncmFwaHktaXMtMjAxOC1jb25maWcoJGNvbmZpZykge1xuICBAcmV0dXJuIG1hcC5nZXQoJGNvbmZpZywgaGVhZGxpbmUtMSkgIT0gbnVsbDtcbn1cblxuLy8gV2hldGhlciBhIGNvbmZpZyBpcyBmb3IgdGhlIE1hdGVyaWFsIERlc2lnbiAyMDE0IHR5cG9ncmFwaHkgc3lzdGVtLlxuQGZ1bmN0aW9uIHByaXZhdGUtdHlwb2dyYXBoeS1pcy0yMDE0LWNvbmZpZygkY29uZmlnKSB7XG4gIEByZXR1cm4gbWFwLmdldCgkY29uZmlnLCBoZWFkbGluZSkgIT0gbnVsbDtcbn1cblxuLy8gR2l2ZW4gYSBjb25maWcgZm9yIGVpdGhlciB0aGUgMjAxNCBvciAyMDE4IE1hdGVyaWFsIERlc2lnbiB0eXBvZ3JhcGh5IHN5c3RlbSxcbi8vIHByb2R1Y2VzIGEgbm9ybWFsaXplZCB0eXBvZ3JhcGh5IGNvbmZpZyBmb3IgdGhlIDIwMTQgTWF0ZXJpYWwgRGVzaWduIHR5cG9ncmFwaHkgc3lzdGVtLlxuLy8gMjAxNCAtIGh0dHBzOi8vbWF0ZXJpYWwuaW8vYXJjaGl2ZS9ndWlkZWxpbmVzL3N0eWxlL3R5cG9ncmFwaHkuaHRtbCN0eXBvZ3JhcGh5LXN0eWxlc1xuLy8gMjAxOCAtIGh0dHBzOi8vbWF0ZXJpYWwuaW8vZGVzaWduL3R5cG9ncmFwaHkvdGhlLXR5cGUtc3lzdGVtLmh0bWwjdHlwZS1zY2FsZVxuLy9cbi8vIENvbXBvbmVudHMgdXNpbmcgdGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgbWlncmF0ZWQgdG8gbm9ybWFsaXplIHRvIHRoZSAyMDE4IHN0eWxlIGNvbmZpZyBpbnN0ZWFkLlxuLy8gTmV3IGNvbXBvbmVudHMgc2hvdWxkIG5vdCB1c2UgdGhpcyBmdW5jdGlvbi5cbkBmdW5jdGlvbiBwcml2YXRlLXR5cG9ncmFwaHktdG8tMjAxNC1jb25maWcoJGNvbmZpZykge1xuICBAaWYgJGNvbmZpZyA9PSBudWxsIHtcbiAgICBAcmV0dXJuIG51bGw7XG4gIH1cbiAgQGlmIG5vdCBwcml2YXRlLXR5cG9ncmFwaHktaXMtMjAxNC1jb25maWcoJGNvbmZpZykge1xuICAgICRhcmdzOiAoXG4gICAgICAgIGRpc3BsYXktNDogbWFwLmdldCgkY29uZmlnLCBoZWFkbGluZS0xKSxcbiAgICAgICAgZGlzcGxheS0zOiBtYXAuZ2V0KCRjb25maWcsIGhlYWRsaW5lLTIpLFxuICAgICAgICBkaXNwbGF5LTI6IG1hcC5nZXQoJGNvbmZpZywgaGVhZGxpbmUtMyksXG4gICAgICAgIGRpc3BsYXktMTogbWFwLmdldCgkY29uZmlnLCBoZWFkbGluZS00KSxcbiAgICAgICAgaGVhZGxpbmU6IG1hcC5nZXQoJGNvbmZpZywgaGVhZGxpbmUtNSksXG4gICAgICAgIHRpdGxlOiBtYXAuZ2V0KCRjb25maWcsIGhlYWRsaW5lLTYpLFxuICAgICAgICBzdWJoZWFkaW5nLTI6IG1hcC5nZXQoJGNvbmZpZywgc3VidGl0bGUtMSksXG4gICAgICAgIHN1YmhlYWRpbmctMTogbWFwLmdldCgkY29uZmlnLCBzdWJ0aXRsZS0yKSxcbiAgICAgICAgYm9keS0yOiBtYXAuZ2V0KCRjb25maWcsIGJvZHktMSksXG4gICAgICAgIGJvZHktMTogbWFwLmdldCgkY29uZmlnLCBib2R5LTIpLFxuICAgICAgICBidXR0b246IG1hcC5nZXQoJGNvbmZpZywgYnV0dG9uKSxcbiAgICAgICAgY2FwdGlvbjogbWFwLmdldCgkY29uZmlnLCBjYXB0aW9uKSxcbiAgICApO1xuICAgICRub24tbnVsbC1hcmdzOiAoKTtcbiAgICBAZWFjaCAka2V5LCAkdmFsdWUgaW4gJGFyZ3Mge1xuICAgICAgQGlmICR2YWx1ZSAhPSBudWxsIHtcbiAgICAgICAgJG5vbi1udWxsLWFyZ3M6IG1hcC5tZXJnZSgkbm9uLW51bGwtYXJncywgKCRrZXk6ICR2YWx1ZSkpO1xuICAgICAgfVxuICAgIH1cbiAgICBAcmV0dXJuIGRlZmluZS10eXBvZ3JhcGh5LWNvbmZpZygkbm9uLW51bGwtYXJncy4uLik7XG4gIH1cbiAgQHJldHVybiAkY29uZmlnO1xufVxuXG4vLyBHaXZlbiBhIGNvbmZpZyBmb3IgZWl0aGVyIHRoZSAyMDE0IG9yIDIwMTggTWF0ZXJpYWwgRGVzaWduIHR5cG9ncmFwaHkgc3lzdGVtLFxuLy8gcHJvZHVjZXMgYSBub3JtYWxpemVkIHR5cG9ncmFwaHkgY29uZmlnIGZvciB0aGUgMjAxOCBNYXRlcmlhbCBEZXNpZ24gdHlwb2dyYXBoeSBzeXN0ZW0uXG4vLyAyMDE0IC0gaHR0cHM6Ly9tYXRlcmlhbC5pby9hcmNoaXZlL2d1aWRlbGluZXMvc3R5bGUvdHlwb2dyYXBoeS5odG1sI3R5cG9ncmFwaHktc3R5bGVzXG4vLyAyMDE4IC0gaHR0cHM6Ly9tYXRlcmlhbC5pby9kZXNpZ24vdHlwb2dyYXBoeS90aGUtdHlwZS1zeXN0ZW0uaHRtbCN0eXBlLXNjYWxlXG5AZnVuY3Rpb24gcHJpdmF0ZS10eXBvZ3JhcGh5LXRvLTIwMTgtY29uZmlnKCRjb25maWcpIHtcbiAgQGlmICRjb25maWcgPT0gbnVsbCB7XG4gICAgQHJldHVybiBudWxsO1xuICB9XG4gIEBpZiBub3QgcHJpdmF0ZS10eXBvZ3JhcGh5LWlzLTIwMTgtY29uZmlnKCRjb25maWcpIHtcbiAgICBAcmV0dXJuIChcbiAgICAgICAgaGVhZGxpbmUtMTogbWFwLmdldCgkY29uZmlnLCBkaXNwbGF5LTQpLFxuICAgICAgICBoZWFkbGluZS0yOiBtYXAuZ2V0KCRjb25maWcsIGRpc3BsYXktMyksXG4gICAgICAgIGhlYWRsaW5lLTM6IG1hcC5nZXQoJGNvbmZpZywgZGlzcGxheS0yKSxcbiAgICAgICAgaGVhZGxpbmUtNDogbWFwLmdldCgkY29uZmlnLCBkaXNwbGF5LTEpLFxuICAgICAgICBoZWFkbGluZS01OiBtYXAuZ2V0KCRjb25maWcsIGhlYWRsaW5lKSxcbiAgICAgICAgaGVhZGxpbmUtNjogbWFwLmdldCgkY29uZmlnLCB0aXRsZSksXG4gICAgICAgIHN1YnRpdGxlLTE6IG1hcC5nZXQoJGNvbmZpZywgc3ViaGVhZGluZy0yKSxcbiAgICAgICAgc3VidGl0bGUtMjogbWFwLmdldCgkY29uZmlnLCBzdWJoZWFkaW5nLTEpLFxuICAgICAgICBib2R5LTE6IG1hcC5nZXQoJGNvbmZpZywgYm9keS0yKSxcbiAgICAgICAgYm9keS0yOiBtYXAuZ2V0KCRjb25maWcsIGJvZHktMSksXG4gICAgICAgIGJ1dHRvbjogbWFwLmdldCgkY29uZmlnLCBidXR0b24pLFxuICAgICAgICBjYXB0aW9uOiBtYXAuZ2V0KCRjb25maWcsIGNhcHRpb24pLFxuICAgICAgICBvdmVybGluZTogaWYobWFwLmdldCgkY29uZmlnLCBvdmVybGluZSksIG1hcC5nZXQoJGNvbmZpZywgb3ZlcmxpbmUpLFxuICAgICAgICAgICAgZGVmaW5lLXR5cG9ncmFwaHktbGV2ZWwoMTJweCwgMzJweCwgNTAwKVxuICAgICAgICApXG4gICAgKTtcbiAgfVxuICBAcmV0dXJuICRjb25maWc7XG59XG5cbi8vIHN0eWxlbGludC1kaXNhYmxlIG1hdGVyaWFsL3RoZW1lLW1peGluLWFwaVxuXG4vLy8gRW1pdHMgYmFzZWxpbmUgdHlwb2dyYXBoaWMgc3R5bGVzIGJhc2VkIG9uIGEgZ2l2ZW4gY29uZmlnLlxuLy8vIEBwYXJhbSB7TWFwfSAkY29uZmlnLW9yLXRoZW1lIEEgdHlwb2dyYXBoeSBjb25maWcgZm9yIGFuIGVudGlyZSB0aGVtZS5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJHNlbGVjdG9yIEFuY2VzdG9yIHNlbGVjdG9yIHVuZGVyIHdoaWNoIG5hdGl2ZSBlbGVtZW50cywgc3VjaCBhcyBoMSwgd2lsbFxuLy8vICAgICBiZSBzdHlsZWQuXG5AbWl4aW4gdHlwb2dyYXBoeS1oaWVyYXJjaHkoJGNvbmZpZy1vci10aGVtZSwgJHNlbGVjdG9yOiAnLm1hdC10eXBvZ3JhcGh5Jykge1xuICAkY29uZmlnOiBwcml2YXRlLXR5cG9ncmFwaHktdG8tMjAxNC1jb25maWcodGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJGNvbmZpZy1vci10aGVtZSkpO1xuXG4gIC5tYXQtaDEsIC5tYXQtaGVhZGxpbmUsICN7JHNlbGVjdG9yfSBoMSB7XG4gICAgQGluY2x1ZGUgdHlwb2dyYXBoeS11dGlscy50eXBvZ3JhcGh5LWxldmVsKCRjb25maWcsIGhlYWRsaW5lKTtcbiAgICBtYXJnaW46IDAgMCAxNnB4O1xuICB9XG5cbiAgLm1hdC1oMiwgLm1hdC10aXRsZSwgI3skc2VsZWN0b3J9IGgyIHtcbiAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5LXV0aWxzLnR5cG9ncmFwaHktbGV2ZWwoJGNvbmZpZywgdGl0bGUpO1xuICAgIG1hcmdpbjogMCAwIDE2cHg7XG4gIH1cblxuICAubWF0LWgzLCAubWF0LXN1YmhlYWRpbmctMiwgI3skc2VsZWN0b3J9IGgzIHtcbiAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5LXV0aWxzLnR5cG9ncmFwaHktbGV2ZWwoJGNvbmZpZywgc3ViaGVhZGluZy0yKTtcbiAgICBtYXJnaW46IDAgMCAxNnB4O1xuICB9XG5cbiAgLm1hdC1oNCwgLm1hdC1zdWJoZWFkaW5nLTEsICN7JHNlbGVjdG9yfSBoNCB7XG4gICAgQGluY2x1ZGUgdHlwb2dyYXBoeS11dGlscy50eXBvZ3JhcGh5LWxldmVsKCRjb25maWcsIHN1YmhlYWRpbmctMSk7XG4gICAgbWFyZ2luOiAwIDAgMTZweDtcbiAgfVxuXG4gIC8vIE5vdGU6IHRoZSBzcGVjIGRvZXNuJ3QgaGF2ZSBhbnl0aGluZyB0aGF0IHdvdWxkIGNvcnJlc3BvbmQgdG8gaDUgYW5kIGg2LCBidXQgd2UgYWRkIHRoZXNlIGZvclxuICAvLyBjb25zaXN0ZW5jeS4gVGhlIGZvbnQgc2l6ZXMgY29tZSBmcm9tIHRoZSBDaHJvbWUgdXNlciBhZ2VudCBzdHlsZXMgd2hpY2ggaGF2ZSBoNSBhdCAwLjgzZW1cbiAgLy8gYW5kIGg2IGF0IDAuNjdlbS5cbiAgLm1hdC1oNSwgI3skc2VsZWN0b3J9IGg1IHtcbiAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtc2hvcnRoYW5kKFxuICAgICAgIC8vIGNhbGMgaXMgdXNlZCBoZXJlIHRvIHN1cHBvcnQgY3NzIHZhcmlhYmxlc1xuICAgICAgY2FsYygje3R5cG9ncmFwaHktdXRpbHMuZm9udC1zaXplKCRjb25maWcsIGJvZHktMSl9ICogMC44MyksXG4gICAgICB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtd2VpZ2h0KCRjb25maWcsIGJvZHktMSksXG4gICAgICB0eXBvZ3JhcGh5LXV0aWxzLmxpbmUtaGVpZ2h0KCRjb25maWcsIGJvZHktMSksXG4gICAgICB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtZmFtaWx5KCRjb25maWcsIGJvZHktMSlcbiAgICApO1xuXG4gICAgbWFyZ2luOiAwIDAgMTJweDtcbiAgfVxuXG4gIC5tYXQtaDYsICN7JHNlbGVjdG9yfSBoNiB7XG4gICAgQGluY2x1ZGUgdHlwb2dyYXBoeS11dGlscy5mb250LXNob3J0aGFuZChcbiAgICAgICAvLyBjYWxjIGlzIHVzZWQgaGVyZSB0byBzdXBwb3J0IGNzcyB2YXJpYWJsZXNcbiAgICAgIGNhbGMoI3t0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtc2l6ZSgkY29uZmlnLCBib2R5LTEpfSAqIDAuNjcpLFxuICAgICAgdHlwb2dyYXBoeS11dGlscy5mb250LXdlaWdodCgkY29uZmlnLCBib2R5LTEpLFxuICAgICAgdHlwb2dyYXBoeS11dGlscy5saW5lLWhlaWdodCgkY29uZmlnLCBib2R5LTEpLFxuICAgICAgdHlwb2dyYXBoeS11dGlscy5mb250LWZhbWlseSgkY29uZmlnLCBib2R5LTEpXG4gICAgKTtcblxuICAgIG1hcmdpbjogMCAwIDEycHg7XG4gIH1cblxuICAubWF0LWJvZHktc3Ryb25nLCAubWF0LWJvZHktMiB7XG4gICAgQGluY2x1ZGUgdHlwb2dyYXBoeS11dGlscy50eXBvZ3JhcGh5LWxldmVsKCRjb25maWcsIGJvZHktMik7XG4gIH1cblxuICAubWF0LWJvZHksIC5tYXQtYm9keS0xLCAjeyRzZWxlY3Rvcn0ge1xuICAgIEBpbmNsdWRlIHR5cG9ncmFwaHktdXRpbHMudHlwb2dyYXBoeS1sZXZlbCgkY29uZmlnLCBib2R5LTEpO1xuXG4gICAgcCB7XG4gICAgICBtYXJnaW46IDAgMCAxMnB4O1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtc21hbGwsIC5tYXQtY2FwdGlvbiB7XG4gICAgQGluY2x1ZGUgdHlwb2dyYXBoeS11dGlscy50eXBvZ3JhcGh5LWxldmVsKCRjb25maWcsIGNhcHRpb24pO1xuICB9XG5cbiAgLm1hdC1kaXNwbGF5LTQsICN7JHNlbGVjdG9yfSAubWF0LWRpc3BsYXktNCB7XG4gICAgQGluY2x1ZGUgdHlwb2dyYXBoeS11dGlscy50eXBvZ3JhcGh5LWxldmVsKCRjb25maWcsIGRpc3BsYXktNCk7XG4gICAgbWFyZ2luOiAwIDAgNTZweDtcbiAgfVxuXG4gIC5tYXQtZGlzcGxheS0zLCAjeyRzZWxlY3Rvcn0gLm1hdC1kaXNwbGF5LTMge1xuICAgIEBpbmNsdWRlIHR5cG9ncmFwaHktdXRpbHMudHlwb2dyYXBoeS1sZXZlbCgkY29uZmlnLCBkaXNwbGF5LTMpO1xuICAgIG1hcmdpbjogMCAwIDY0cHg7XG4gIH1cblxuICAubWF0LWRpc3BsYXktMiwgI3skc2VsZWN0b3J9IC5tYXQtZGlzcGxheS0yIHtcbiAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5LXV0aWxzLnR5cG9ncmFwaHktbGV2ZWwoJGNvbmZpZywgZGlzcGxheS0yKTtcbiAgICBtYXJnaW46IDAgMCA2NHB4O1xuICB9XG5cbiAgLm1hdC1kaXNwbGF5LTEsICN7JHNlbGVjdG9yfSAubWF0LWRpc3BsYXktMSB7XG4gICAgQGluY2x1ZGUgdHlwb2dyYXBoeS11dGlscy50eXBvZ3JhcGh5LWxldmVsKCRjb25maWcsIGRpc3BsYXktMSk7XG4gICAgbWFyZ2luOiAwIDAgNjRweDtcbiAgfVxufVxuXG4vLyBzdHlsZWxpbnQtZW5hYmxlIG1hdGVyaWFsL3RoZW1lLW1peGluLWFwaVxuIiwiQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnc2FzczptZXRhJztcbkB1c2UgJ3Nhc3M6c3RyaW5nJztcblxuXG4vLyBVdGlsaXR5IGZvciBmZXRjaGluZyBhIG5lc3RlZCB2YWx1ZSBmcm9tIGEgdHlwb2dyYXBoeSBjb25maWcuXG5AZnVuY3Rpb24gX21hdC1nZXQtdHlwZS12YWx1ZSgkY29uZmlnLCAkbGV2ZWwsICRuYW1lKSB7XG4gIEByZXR1cm4gbWFwLmdldChtYXAuZ2V0KCRjb25maWcsICRsZXZlbCksICRuYW1lKTtcbn1cblxuLy8vIEdldHMgdGhlIGZvbnQgc2l6ZSBmb3IgYSBsZXZlbCBpbnNpZGUgYSB0eXBvZ3JhcGh5IGNvbmZpZy5cbi8vLyBAcGFyYW0ge01hcH0gJGNvbmZpZyBBIHR5cG9ncmFwaHkgY29uZmlnLlxuLy8vIEBwYXJhbSB7TWFwfSAkbGV2ZWwgQSB0eXBvZ3JhcGh5IGxldmVsLlxuQGZ1bmN0aW9uIGZvbnQtc2l6ZSgkY29uZmlnLCAkbGV2ZWwpIHtcbiAgQHJldHVybiBfbWF0LWdldC10eXBlLXZhbHVlKCRjb25maWcsICRsZXZlbCwgZm9udC1zaXplKTtcbn1cblxuLy8vIEdldHMgdGhlIGxpbmUgaGVpZ2h0IGZvciBhIGxldmVsIGluc2lkZSBhIHR5cG9ncmFwaHkgY29uZmlnLlxuLy8vIEBwYXJhbSB7TWFwfSAkY29uZmlnIEEgdHlwb2dyYXBoeSBjb25maWcuXG4vLy8gQHBhcmFtIHtNYXB9ICRsZXZlbCBBIHR5cG9ncmFwaHkgbGV2ZWwuXG5AZnVuY3Rpb24gbGluZS1oZWlnaHQoJGNvbmZpZywgJGxldmVsKSB7XG4gIEByZXR1cm4gX21hdC1nZXQtdHlwZS12YWx1ZSgkY29uZmlnLCAkbGV2ZWwsIGxpbmUtaGVpZ2h0KTtcbn1cblxuLy8vIEdldHMgdGhlIGZvbnQgd2VpZ2h0IGZvciBhIGxldmVsIGluc2lkZSBhIHR5cG9ncmFwaHkgY29uZmlnLlxuLy8vIEBwYXJhbSB7TWFwfSAkY29uZmlnIEEgdHlwb2dyYXBoeSBjb25maWcuXG4vLy8gQHBhcmFtIHtNYXB9ICRsZXZlbCBBIHR5cG9ncmFwaHkgbGV2ZWwuXG5AZnVuY3Rpb24gZm9udC13ZWlnaHQoJGNvbmZpZywgJGxldmVsKSB7XG4gIEByZXR1cm4gX21hdC1nZXQtdHlwZS12YWx1ZSgkY29uZmlnLCAkbGV2ZWwsIGZvbnQtd2VpZ2h0KTtcbn1cblxuLy8vIEdldHMgdGhlIGxldHRlciBzcGFjaW5nIGZvciBhIGxldmVsIGluc2lkZSBhIHR5cG9ncmFwaHkgY29uZmlnLlxuLy8vIEBwYXJhbSB7TWFwfSAkY29uZmlnIEEgdHlwb2dyYXBoeSBjb25maWcuXG4vLy8gQHBhcmFtIHtNYXB9ICRsZXZlbCBBIHR5cG9ncmFwaHkgbGV2ZWwuXG5AZnVuY3Rpb24gbGV0dGVyLXNwYWNpbmcoJGNvbmZpZywgJGxldmVsKSB7XG4gIEByZXR1cm4gX21hdC1nZXQtdHlwZS12YWx1ZSgkY29uZmlnLCAkbGV2ZWwsIGxldHRlci1zcGFjaW5nKTtcbn1cblxuLy8vIEdldHMgdGhlIGZvbnQtZmFtaWx5IGZyb20gYSB0eXBvZ3JhcGh5IGNvbmZpZyBhbmQgcmVtb3ZlcyB0aGUgcXVvdGVzIGFyb3VuZCBpdC5cbi8vLyBAcGFyYW0ge01hcH0gJGNvbmZpZyBBIHR5cG9ncmFwaHkgY29uZmlnLlxuLy8vIEBwYXJhbSB7TWFwfSAkbGV2ZWwgQSB0eXBvZ3JhcGh5IGxldmVsLlxuQGZ1bmN0aW9uIGZvbnQtZmFtaWx5KCRjb25maWcsICRsZXZlbDogbnVsbCkge1xuICAkZm9udC1mYW1pbHk6IG1hcC5nZXQoJGNvbmZpZywgZm9udC1mYW1pbHkpO1xuXG4gIEBpZiAkbGV2ZWwgIT0gbnVsbCB7XG4gICAgJGZvbnQtZmFtaWx5OiBfbWF0LWdldC10eXBlLXZhbHVlKCRjb25maWcsICRsZXZlbCwgZm9udC1mYW1pbHkpO1xuICB9XG5cbiAgLy8gR3VhcmQgYWdhaW5zdCB1bnF1b3Rpbmcgbm9uLXN0cmluZyB2YWx1ZXMsIGJlY2F1c2UgaXQncyBkZXByZWNhdGVkLlxuICBAcmV0dXJuIGlmKG1ldGEudHlwZS1vZigkZm9udC1mYW1pbHkpID09IHN0cmluZywgc3RyaW5nLnVucXVvdGUoJGZvbnQtZmFtaWx5KSwgJGZvbnQtZmFtaWx5KTtcbn1cblxuLy8vIE91dHB1dHMgdGhlIHNob3J0aGFuZCBgZm9udGAgQ1NTIHByb3BlcnR5LCBiYXNlZCBvbiBhIHNldCBvZiB0eXBvZ3JhcGh5IHZhbHVlcy4gRmFsbHMgYmFjayB0b1xuLy8vIHRoZSBpbmRpdmlkdWFsIHByb3BlcnRpZXMgaWYgYSB2YWx1ZSB0aGF0IGlzbid0IGFsbG93ZWQgaW4gdGhlIHNob3J0aGFuZCBpcyBwYXNzZWQgaW4uXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRmb250LXNpemUgVGhlIGZvbnQtc2l6ZSB2YWx1ZS5cbi8vLyBAcGFyYW0ge1N0cmluZyB8IE51bWJlcn0gJGZvbnQtd2VpZ2h0IFRoZSBmb250LXdlaWdodCB2YWx1ZS5cbi8vLyBAcGFyYW0ge1N0cmluZyB8IE51bWJlcn0gJGxpbmUtaGVpZ2h0IFRoZSBsaW5lLWhlaWdodCB2YWx1ZS5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGZvbnQtZmFtaWx5IFRoZSBmb250LWZhbWlseSB2YWx1ZS5cbi8vLyBAcmV0dXJucyB7U3RyaW5nfSBUaGUgYGZvbnRgIHNob3J0aGFuZCB2YWx1ZSBjb21iaW5pbmcgdGhlIGdpdmVuIHBhcnRzLlxuQG1peGluIGZvbnQtc2hvcnRoYW5kKCRmb250LXNpemUsICRmb250LXdlaWdodCwgJGxpbmUtaGVpZ2h0LCAkZm9udC1mYW1pbHkpIHtcbiAgLy8gSWYgYW55IG9mIHRoZSB2YWx1ZXMgYXJlIHNldCB0byBgaW5oZXJpdGAsIHdlIGNhbid0IHVzZSB0aGUgc2hvcnRoYW5kXG4gIC8vIHNvIHdlIGZhbGwgYmFjayB0byBwYXNzaW5nIGluIHRoZSBpbmRpdmlkdWFsIHByb3BlcnRpZXMuXG4gIEBpZiAoJGZvbnQtc2l6ZSA9PSBpbmhlcml0IG9yXG4gICAgICAgJGZvbnQtd2VpZ2h0ID09IGluaGVyaXQgb3JcbiAgICAgICAkbGluZS1oZWlnaHQgPT0gaW5oZXJpdCBvclxuICAgICAgICRmb250LWZhbWlseSA9PSBpbmhlcml0IG9yXG4gICAgICAgJGZvbnQtc2l6ZSA9PSBudWxsIG9yXG4gICAgICAgJGZvbnQtd2VpZ2h0ID09IG51bGwgb3JcbiAgICAgICAkbGluZS1oZWlnaHQgPT0gbnVsbCBvclxuICAgICAgICRmb250LWZhbWlseSA9PSBudWxsKSB7XG5cbiAgICBmb250LXNpemU6ICRmb250LXNpemU7XG4gICAgZm9udC13ZWlnaHQ6ICRmb250LXdlaWdodDtcbiAgICBsaW5lLWhlaWdodDogJGxpbmUtaGVpZ2h0O1xuICAgIGZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIC8vIE90aGVyd2lzZSB1c2UgdGhlIHNob3J0aGFuZCBgZm9udGAsIGJlY2F1c2UgaXQncyB0aGUgbGVhc3QgYW1vdW50IG9mIGJ5dGVzLiBOb3RlXG4gICAgLy8gdGhhdCB3ZSBuZWVkIHRvIHVzZSBpbnRlcnBvbGF0aW9uIGZvciBgZm9udC1zaXplL2xpbmUtaGVpZ2h0YCBpbiBvcmRlciB0byBwcmV2ZW50XG4gICAgLy8gU2FzcyBmcm9tIGRpdmlkaW5nIHRoZSB0d28gdmFsdWVzLlxuICAgIGZvbnQ6ICRmb250LXdlaWdodCAjeyRmb250LXNpemV9LyN7JGxpbmUtaGVpZ2h0fSAkZm9udC1mYW1pbHk7XG4gIH1cbn1cblxuLy8vIEVtaXRzIENTUyBzdHlsZXMgZm9yIHRoZSBnaXZlbiB0eXBvZ3JhcGh5IGxldmVsLlxuLy8vIEBwYXJhbSB7TWFwfSAkY29uZmlnIEEgdHlwb2dyYXBoeSBjb25maWcuXG4vLy8gQHBhcmFtIHtNYXB9ICRsZXZlbCBBIHR5cG9ncmFwaHkgbGV2ZWwuXG5AbWl4aW4gdHlwb2dyYXBoeS1sZXZlbCgkY29uZmlnLCAkbGV2ZWwpIHtcbiAgJGZvbnQtc2l6ZTogZm9udC1zaXplKCRjb25maWcsICRsZXZlbCk7XG4gICRmb250LXdlaWdodDogZm9udC13ZWlnaHQoJGNvbmZpZywgJGxldmVsKTtcbiAgJGxpbmUtaGVpZ2h0OiBsaW5lLWhlaWdodCgkY29uZmlnLCAkbGV2ZWwpO1xuICAkZm9udC1mYW1pbHk6IGZvbnQtZmFtaWx5KCRjb25maWcsICRsZXZlbCk7XG5cbiAgQGluY2x1ZGUgZm9udC1zaG9ydGhhbmQoJGZvbnQtc2l6ZSwgJGZvbnQtd2VpZ2h0LCAkbGluZS1oZWlnaHQsICRmb250LWZhbWlseSk7XG4gIGxldHRlci1zcGFjaW5nOiBsZXR0ZXItc3BhY2luZygkY29uZmlnLCAkbGV2ZWwpO1xufVxuIiwiQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnLi4vY29yZS9zdHlsZS9wcml2YXRlJztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5JztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5LXV0aWxzJztcbkB1c2UgJy4uL2NvcmUvdGhlbWluZy90aGVtaW5nJztcblxuQG1peGluIGNvbG9yKCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAkYmFja2dyb3VuZDogbWFwLmdldCgkY29uZmlnLCBiYWNrZ3JvdW5kKTtcbiAgJGZvcmVncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgZm9yZWdyb3VuZCk7XG5cbiAgLm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyIHtcbiAgICBAaW5jbHVkZSBwcml2YXRlLnByaXZhdGUtdGhlbWUtZWxldmF0aW9uKDE2LCAkY29uZmlnKTtcbiAgICBiYWNrZ3JvdW5kOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGJhY2tncm91bmQsIGRpYWxvZyk7XG4gICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgdGV4dCk7XG4gIH1cbn1cblxuQG1peGluIHR5cG9ncmFwaHkoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0eXBvZ3JhcGh5LnByaXZhdGUtdHlwb2dyYXBoeS10by0yMDE0LWNvbmZpZyhcbiAgICAgIHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCRjb25maWctb3ItdGhlbWUpKTtcbiAgLm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyIHtcbiAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5LXV0aWxzLnR5cG9ncmFwaHktbGV2ZWwoJGNvbmZpZywgYm9keS0xKTtcbiAgfVxufVxuXG5AbWl4aW4gX2RlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIHRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiB0aGVtaW5nLnByaXZhdGUtbGVnYWN5LWdldC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgQGluY2x1ZGUgdGhlbWluZy5wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LWJvdHRvbS1zaGVldCcpIHtcbiAgICAkY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkdGhlbWUpO1xuICAgICRkZW5zaXR5OiB0aGVtaW5nLmdldC1kZW5zaXR5LWNvbmZpZygkdGhlbWUpO1xuICAgICR0eXBvZ3JhcGh5OiB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkdGhlbWUpO1xuXG4gICAgQGlmICRjb2xvciAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIGNvbG9yKCRjb2xvcik7XG4gICAgfVxuICAgIEBpZiAkZGVuc2l0eSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIF9kZW5zaXR5KCRkZW5zaXR5KTtcbiAgICB9XG4gICAgQGlmICR0eXBvZ3JhcGh5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgdHlwb2dyYXBoeSgkdHlwb2dyYXBoeSk7XG4gICAgfVxuICB9XG59XG4iLCJAdXNlICdzYXNzOm1hcCc7XG5AdXNlICdzYXNzOm1ldGEnO1xuQHVzZSAnLi4vY29yZS90aGVtaW5nL3RoZW1pbmcnO1xuQHVzZSAnLi4vY29yZS9zdHlsZS9wcml2YXRlJztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5JztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5LXV0aWxzJztcblxuJF9yaXBwbGUtb3BhY2l0eTogMC4xO1xuXG4vLyBBcHBsaWVzIGEgZm9jdXMgc3R5bGUgdG8gYW4gbWF0LWJ1dHRvbiBlbGVtZW50IGZvciBlYWNoIG9mIHRoZSBzdXBwb3J0ZWQgcGFsZXR0ZXMuXG5AbWl4aW4gX2ZvY3VzLW92ZXJsYXktY29sb3IoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRwcmltYXJ5OiBtYXAuZ2V0KCRjb25maWcsIHByaW1hcnkpO1xuICAkYWNjZW50OiBtYXAuZ2V0KCRjb25maWcsIGFjY2VudCk7XG4gICR3YXJuOiBtYXAuZ2V0KCRjb25maWcsIHdhcm4pO1xuXG4gICYubWF0LXByaW1hcnkgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRwcmltYXJ5KTtcbiAgfVxuXG4gICYubWF0LWFjY2VudCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5IHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGFjY2VudCk7XG4gIH1cblxuICAmLm1hdC13YXJuIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXkge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkd2Fybik7XG4gIH1cblxuICAmLm1hdC1idXR0b24tZGlzYWJsZWQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIH1cbn1cblxuLy8gQXBwbGllcyB0aGUgYmFja2dyb3VuZCBjb2xvciBmb3IgYSByaXBwbGUuIElmIHRoZSB2YWx1ZSBwcm92aWRlZCBpcyBub3QgYSBTYXNzIGNvbG9yLFxuLy8gd2UgYXNzdW1lIHRoYXQgd2UndmUgYmVlbiBnaXZlbiBhIENTUyB2YXJpYWJsZS4gU2luY2Ugd2UgY2FuJ3QgcGVyZm9ybSBhbHBoYS1ibGVuZGluZ1xuLy8gb24gYSBDU1MgdmFyaWFibGUsIHdlIGluc3RlYWQgYWRkIHRoZSBvcGFjaXR5IGRpcmVjdGx5IHRvIHRoZSByaXBwbGUgZWxlbWVudC5cbkBtaXhpbiBfcmlwcGxlLWJhY2tncm91bmQoJHBhbGV0dGUsICRodWUsICRvcGFjaXR5KSB7XG4gICRiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHBhbGV0dGUsICRodWUsICRvcGFjaXR5KTtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmQtY29sb3I7XG4gIEBpZiAobWV0YS50eXBlLW9mKCRiYWNrZ3JvdW5kLWNvbG9yKSAhPSBjb2xvcikge1xuICAgIG9wYWNpdHk6ICRvcGFjaXR5O1xuICB9XG59XG5cbkBtaXhpbiBfcmlwcGxlLWNvbG9yKCR0aGVtZSwgJGh1ZSwgJG9wYWNpdHk6ICRfcmlwcGxlLW9wYWNpdHkpIHtcbiAgJHByaW1hcnk6IG1hcC5nZXQoJHRoZW1lLCBwcmltYXJ5KTtcbiAgJGFjY2VudDogbWFwLmdldCgkdGhlbWUsIGFjY2VudCk7XG4gICR3YXJuOiBtYXAuZ2V0KCR0aGVtZSwgd2Fybik7XG5cbiAgJi5tYXQtcHJpbWFyeSAubWF0LXJpcHBsZS1lbGVtZW50IHtcbiAgICBAaW5jbHVkZSBfcmlwcGxlLWJhY2tncm91bmQoJHByaW1hcnksICRodWUsICRvcGFjaXR5KTtcbiAgfVxuXG4gICYubWF0LWFjY2VudCAubWF0LXJpcHBsZS1lbGVtZW50IHtcbiAgICBAaW5jbHVkZSBfcmlwcGxlLWJhY2tncm91bmQoJGFjY2VudCwgJGh1ZSwgJG9wYWNpdHkpO1xuICB9XG5cbiAgJi5tYXQtd2FybiAubWF0LXJpcHBsZS1lbGVtZW50IHtcbiAgICBAaW5jbHVkZSBfcmlwcGxlLWJhY2tncm91bmQoJHdhcm4sICRodWUsICRvcGFjaXR5KTtcbiAgfVxufVxuXG4vLyBBcHBsaWVzIGEgcHJvcGVydHkgdG8gYW4gbWF0LWJ1dHRvbiBlbGVtZW50IGZvciBlYWNoIG9mIHRoZSBzdXBwb3J0ZWQgcGFsZXR0ZXMuXG5AbWl4aW4gX3RoZW1lLXByb3BlcnR5KCR0aGVtZSwgJHByb3BlcnR5LCAkaHVlKSB7XG4gICRwcmltYXJ5OiBtYXAuZ2V0KCR0aGVtZSwgcHJpbWFyeSk7XG4gICRhY2NlbnQ6IG1hcC5nZXQoJHRoZW1lLCBhY2NlbnQpO1xuICAkd2FybjogbWFwLmdldCgkdGhlbWUsIHdhcm4pO1xuICAkYmFja2dyb3VuZDogbWFwLmdldCgkdGhlbWUsIGJhY2tncm91bmQpO1xuICAkZm9yZWdyb3VuZDogbWFwLmdldCgkdGhlbWUsIGZvcmVncm91bmQpO1xuXG4gICYubWF0LXByaW1hcnkge1xuICAgICN7JHByb3BlcnR5fTogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRwcmltYXJ5LCAkaHVlKTtcbiAgfVxuICAmLm1hdC1hY2NlbnQge1xuICAgICN7JHByb3BlcnR5fTogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRhY2NlbnQsICRodWUpO1xuICB9XG4gICYubWF0LXdhcm4ge1xuICAgICN7JHByb3BlcnR5fTogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCR3YXJuLCAkaHVlKTtcbiAgfVxuXG4gICYubWF0LXByaW1hcnksICYubWF0LWFjY2VudCwgJi5tYXQtd2FybiwgJi5tYXQtYnV0dG9uLWRpc2FibGVkIHtcbiAgICAmLm1hdC1idXR0b24tZGlzYWJsZWQge1xuICAgICAgJHBhbGV0dGU6IGlmKCRwcm9wZXJ0eSA9PSAnY29sb3InLCAkZm9yZWdyb3VuZCwgJGJhY2tncm91bmQpO1xuICAgICAgI3skcHJvcGVydHl9OiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHBhbGV0dGUsIGRpc2FibGVkLWJ1dHRvbik7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBjb2xvcigkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJHByaW1hcnk6IG1hcC5nZXQoJGNvbmZpZywgcHJpbWFyeSk7XG4gICRhY2NlbnQ6IG1hcC5nZXQoJGNvbmZpZywgYWNjZW50KTtcbiAgJHdhcm46IG1hcC5nZXQoJGNvbmZpZywgd2Fybik7XG4gICRiYWNrZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGJhY2tncm91bmQpO1xuICAkZm9yZWdyb3VuZDogbWFwLmdldCgkY29uZmlnLCBmb3JlZ3JvdW5kKTtcblxuICAubWF0LWJ1dHRvbiwgLm1hdC1pY29uLWJ1dHRvbiwgLm1hdC1zdHJva2VkLWJ1dHRvbiB7XG4gICAgLy8gQnV0dG9ucyB3aXRob3V0IGEgYmFja2dyb3VuZCBjb2xvciBzaG91bGQgaW5oZXJpdCB0aGUgZm9udCBjb2xvci4gVGhpcyBpcyBuZWNlc3NhcnkgdG9cbiAgICAvLyBlbnN1cmUgdGhhdCB0aGUgYnV0dG9uIGlzIHJlYWRhYmxlIG9uIGN1c3RvbSBiYWNrZ3JvdW5kIGNvbG9ycy4gSXQncyB3cm9uZyB0byBhbHdheXMgYXNzdW1lXG4gICAgLy8gdGhhdCB0aG9zZSBidXR0b25zIGFyZSBhbHdheXMgcGxhY2VkIGluc2lkZSBvZiBjb250YWluZXJzIHdpdGggdGhlIGRlZmF1bHQgYmFja2dyb3VuZFxuICAgIC8vIGNvbG9yIG9mIHRoZSB0aGVtZSAoZS5nLiB0aGVtZWQgdG9vbGJhcnMpLlxuICAgIGNvbG9yOiBpbmhlcml0O1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuXG4gICAgQGluY2x1ZGUgX3RoZW1lLXByb3BlcnR5KCRjb25maWcsICdjb2xvcicsIHRleHQpO1xuICAgIEBpbmNsdWRlIF9mb2N1cy1vdmVybGF5LWNvbG9yKCRjb25maWcpO1xuXG4gICAgLy8gU2V0dXAgdGhlIHJpcHBsZSBjb2xvciB0byBiZSBiYXNlZCBvbiB0aGUgdGV4dCBjb2xvci4gVGhpcyBlbnN1cmVzIHRoYXQgdGhlIHJpcHBsZXNcbiAgICAvLyBhcmUgbWF0Y2hpbmcgd2l0aCB0aGUgY3VycmVudCB0aGVtZSBwYWxldHRlIGFuZCBhcmUgaW4gY29udHJhc3QgdG8gdGhlIGJhY2tncm91bmQgY29sb3JcbiAgICAvLyAoZS5nIGluIHRoZW1lZCB0b29sYmFycykuXG4gICAgLm1hdC1yaXBwbGUtZWxlbWVudCB7XG4gICAgICBvcGFjaXR5OiAkX3JpcHBsZS1vcGFjaXR5O1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogY3VycmVudENvbG9yO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXkge1xuICAgIGJhY2tncm91bmQ6IG1hcC5nZXQoJGZvcmVncm91bmQsIGJhc2UpO1xuICB9XG5cbiAgLy8gTm90ZTogdGhpcyBuZWVkcyBhIGJpdCBleHRyYSBzcGVjaWZpY2l0eSwgYmVjYXVzZSB3ZSdyZSBub3QgZ3VhcmFudGVlZCB0aGUgaW5jbHVzaW9uXG4gIC8vIG9yZGVyIG9mIHRoZSB0aGVtZSBzdHlsZXMgYW5kIHRoZSBidXR0b24gcmVzZXQgbWF5IGVuZCB1cCByZXNldHRpbmcgdGhpcyBhcyB3ZWxsLlxuICAubWF0LXN0cm9rZWQtYnV0dG9uOm5vdCgubWF0LWJ1dHRvbi1kaXNhYmxlZCkge1xuICAgIGJvcmRlci1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBkaXZpZGVyKTtcbiAgfVxuXG4gIC5tYXQtZmxhdC1idXR0b24sIC5tYXQtcmFpc2VkLWJ1dHRvbiwgLm1hdC1mYWIsIC5tYXQtbWluaS1mYWIge1xuICAgIC8vIERlZmF1bHQgZm9udCBhbmQgYmFja2dyb3VuZCBjb2xvciB3aGVuIG5vdCB1c2luZyBhbnkgY29sb3IgcGFsZXR0ZS5cbiAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCB0ZXh0KTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGJhY2tncm91bmQsIHJhaXNlZC1idXR0b24pO1xuXG4gICAgQGluY2x1ZGUgX3RoZW1lLXByb3BlcnR5KCRjb25maWcsICdjb2xvcicsIGRlZmF1bHQtY29udHJhc3QpO1xuICAgIEBpbmNsdWRlIF90aGVtZS1wcm9wZXJ0eSgkY29uZmlnLCAnYmFja2dyb3VuZC1jb2xvcicsIGRlZmF1bHQpO1xuICAgIEBpbmNsdWRlIF9yaXBwbGUtY29sb3IoJGNvbmZpZywgZGVmYXVsdC1jb250cmFzdCk7XG4gIH1cblxuICAubWF0LXN0cm9rZWQtYnV0dG9uLCAubWF0LWZsYXQtYnV0dG9uIHtcbiAgICBAaW5jbHVkZSBwcml2YXRlLnByaXZhdGUtdGhlbWUtb3ZlcnJpZGFibGUtZWxldmF0aW9uKDAsICRjb25maWcpO1xuICB9XG5cbiAgLm1hdC1yYWlzZWQtYnV0dG9uIHtcbiAgICBAaW5jbHVkZSBwcml2YXRlLnByaXZhdGUtdGhlbWUtb3ZlcnJpZGFibGUtZWxldmF0aW9uKDIsICRjb25maWcpO1xuXG4gICAgJjpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpOmFjdGl2ZSB7XG4gICAgICBAaW5jbHVkZSBwcml2YXRlLnByaXZhdGUtdGhlbWUtb3ZlcnJpZGFibGUtZWxldmF0aW9uKDgsICRjb25maWcpO1xuICAgIH1cblxuICAgICYubWF0LWJ1dHRvbi1kaXNhYmxlZCB7XG4gICAgICBAaW5jbHVkZSBwcml2YXRlLnByaXZhdGUtdGhlbWUtb3ZlcnJpZGFibGUtZWxldmF0aW9uKDAsICRjb25maWcpO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtZmFiLCAubWF0LW1pbmktZmFiIHtcbiAgICBAaW5jbHVkZSBwcml2YXRlLnByaXZhdGUtdGhlbWUtb3ZlcnJpZGFibGUtZWxldmF0aW9uKDYsICRjb25maWcpO1xuXG4gICAgJjpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpOmFjdGl2ZSB7XG4gICAgICBAaW5jbHVkZSBwcml2YXRlLnByaXZhdGUtdGhlbWUtb3ZlcnJpZGFibGUtZWxldmF0aW9uKDEyLCAkY29uZmlnKTtcbiAgICB9XG5cbiAgICAmLm1hdC1idXR0b24tZGlzYWJsZWQge1xuICAgICAgQGluY2x1ZGUgcHJpdmF0ZS5wcml2YXRlLXRoZW1lLW92ZXJyaWRhYmxlLWVsZXZhdGlvbigwLCAkY29uZmlnKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHR5cG9ncmFwaHkoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0eXBvZ3JhcGh5LnByaXZhdGUtdHlwb2dyYXBoeS10by0yMDE0LWNvbmZpZyhcbiAgICAgIHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCRjb25maWctb3ItdGhlbWUpKTtcbiAgLm1hdC1idXR0b24sIC5tYXQtcmFpc2VkLWJ1dHRvbiwgLm1hdC1pY29uLWJ1dHRvbiwgLm1hdC1zdHJva2VkLWJ1dHRvbixcbiAgLm1hdC1mbGF0LWJ1dHRvbiwgLm1hdC1mYWIsIC5tYXQtbWluaS1mYWIge1xuICAgIGZvbnQ6IHtcbiAgICAgIGZhbWlseTogdHlwb2dyYXBoeS11dGlscy5mb250LWZhbWlseSgkY29uZmlnLCBidXR0b24pO1xuICAgICAgc2l6ZTogdHlwb2dyYXBoeS11dGlscy5mb250LXNpemUoJGNvbmZpZywgYnV0dG9uKTtcbiAgICAgIHdlaWdodDogdHlwb2dyYXBoeS11dGlscy5mb250LXdlaWdodCgkY29uZmlnLCBidXR0b24pO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gX2RlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIHRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiB0aGVtaW5nLnByaXZhdGUtbGVnYWN5LWdldC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgQGluY2x1ZGUgdGhlbWluZy5wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LWJ1dHRvbicpIHtcbiAgICAkY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkdGhlbWUpO1xuICAgICRkZW5zaXR5OiB0aGVtaW5nLmdldC1kZW5zaXR5LWNvbmZpZygkdGhlbWUpO1xuICAgICR0eXBvZ3JhcGh5OiB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkdGhlbWUpO1xuXG4gICAgQGlmICRjb2xvciAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIGNvbG9yKCRjb2xvcik7XG4gICAgfVxuICAgIEBpZiAkZGVuc2l0eSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIF9kZW5zaXR5KCRkZW5zaXR5KTtcbiAgICB9XG4gICAgQGlmICR0eXBvZ3JhcGh5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgdHlwb2dyYXBoeSgkdHlwb2dyYXBoeSk7XG4gICAgfVxuICB9XG59XG4iLCJAdXNlICdzYXNzOm1hcCc7XG5AdXNlICcuLi9jb3JlL3N0eWxlL3ByaXZhdGUnO1xuQHVzZSAnLi4vY29yZS90aGVtaW5nL3RoZW1pbmcnO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHknO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHktdXRpbHMnO1xuQHVzZSAnLi4vY29yZS9kZW5zaXR5L3ByaXZhdGUvY29tcGF0aWJpbGl0eSc7XG5AdXNlICcuL2J1dHRvbi10b2dnbGUtdmFyaWFibGVzJztcblxuQG1peGluIGNvbG9yKCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAkZm9yZWdyb3VuZDogbWFwLmdldCgkY29uZmlnLCBmb3JlZ3JvdW5kKTtcbiAgJGJhY2tncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgYmFja2dyb3VuZCk7XG4gICRkaXZpZGVyLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIGRpdmlkZXIpO1xuXG4gIC5tYXQtYnV0dG9uLXRvZ2dsZS1zdGFuZGFsb25lLFxuICAubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAge1xuICAgIEBpbmNsdWRlIHByaXZhdGUucHJpdmF0ZS10aGVtZS1lbGV2YXRpb24oMiwgJGNvbmZpZyk7XG4gIH1cblxuICAubWF0LWJ1dHRvbi10b2dnbGUtc3RhbmRhbG9uZS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkLFxuICAubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAtYXBwZWFyYW5jZS1zdGFuZGFyZCB7XG4gICAgYm94LXNoYWRvdzogbm9uZTtcbiAgfVxuXG4gIC5tYXQtYnV0dG9uLXRvZ2dsZSB7XG4gICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgaGludC10ZXh0KTtcblxuICAgIC5tYXQtYnV0dG9uLXRvZ2dsZS1mb2N1cy1vdmVybGF5IHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYmFja2dyb3VuZCwgZm9jdXNlZC1idXR0b24pO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkIHtcbiAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCB0ZXh0KTtcbiAgICBiYWNrZ3JvdW5kOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGJhY2tncm91bmQsIGNhcmQpO1xuXG4gICAgLm1hdC1idXR0b24tdG9nZ2xlLWZvY3VzLW92ZXJsYXkge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLCBmb2N1c2VkLWJ1dHRvbiwgMSk7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmQgLm1hdC1idXR0b24tdG9nZ2xlICsgLm1hdC1idXR0b24tdG9nZ2xlIHtcbiAgICBib3JkZXItbGVmdDogc29saWQgMXB4ICRkaXZpZGVyLWNvbG9yO1xuICB9XG5cbiAgW2Rpcj0ncnRsJ10gLm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmQgLm1hdC1idXR0b24tdG9nZ2xlICsgLm1hdC1idXR0b24tdG9nZ2xlIHtcbiAgICBib3JkZXItbGVmdDogbm9uZTtcbiAgICBib3JkZXItcmlnaHQ6IHNvbGlkIDFweCAkZGl2aWRlci1jb2xvcjtcbiAgfVxuXG4gIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkLm1hdC1idXR0b24tdG9nZ2xlLXZlcnRpY2FsIHtcbiAgICAubWF0LWJ1dHRvbi10b2dnbGUgKyAubWF0LWJ1dHRvbi10b2dnbGUge1xuICAgICAgYm9yZGVyLWxlZnQ6IG5vbmU7XG4gICAgICBib3JkZXItcmlnaHQ6IG5vbmU7XG4gICAgICBib3JkZXItdG9wOiBzb2xpZCAxcHggJGRpdmlkZXItY29sb3I7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1idXR0b24tdG9nZ2xlLWNoZWNrZWQge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYmFja2dyb3VuZCwgc2VsZWN0ZWQtYnV0dG9uKTtcbiAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBzZWNvbmRhcnktdGV4dCk7XG5cbiAgICAmLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmQge1xuICAgICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgdGV4dCk7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1idXR0b24tdG9nZ2xlLWRpc2FibGVkIHtcbiAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBkaXNhYmxlZC1idXR0b24pO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYmFja2dyb3VuZCwgZGlzYWJsZWQtYnV0dG9uLXRvZ2dsZSk7XG5cbiAgICAmLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmQge1xuICAgICAgYmFja2dyb3VuZDogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLCBjYXJkKTtcbiAgICB9XG5cbiAgICAmLm1hdC1idXR0b24tdG9nZ2xlLWNoZWNrZWQge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLCBzZWxlY3RlZC1kaXNhYmxlZC1idXR0b24pO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtYnV0dG9uLXRvZ2dsZS1zdGFuZGFsb25lLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmQsXG4gIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkIHtcbiAgICBib3JkZXI6IHNvbGlkIDFweCAkZGl2aWRlci1jb2xvcjtcbiAgfVxufVxuXG5AbWl4aW4gdHlwb2dyYXBoeSgkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHR5cG9ncmFwaHkucHJpdmF0ZS10eXBvZ3JhcGh5LXRvLTIwMTQtY29uZmlnKFxuICAgICAgdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJGNvbmZpZy1vci10aGVtZSkpO1xuICAubWF0LWJ1dHRvbi10b2dnbGUge1xuICAgIGZvbnQtZmFtaWx5OiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtZmFtaWx5KCRjb25maWcpO1xuICB9XG59XG5cbkBtaXhpbiBkZW5zaXR5KCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGRlbnNpdHktc2NhbGU6IHRoZW1pbmcuZ2V0LWRlbnNpdHktY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAkc3RhbmRhcmQtaGVpZ2h0OiBjb21wYXRpYmlsaXR5LnByaXZhdGUtZGVuc2l0eS1wcm9wLXZhbHVlKFxuICAgICAgYnV0dG9uLXRvZ2dsZS12YXJpYWJsZXMuJHN0YW5kYXJkLWRlbnNpdHktY29uZmlnLCAkZGVuc2l0eS1zY2FsZSwgaGVpZ2h0KTtcblxuICBAaW5jbHVkZSBjb21wYXRpYmlsaXR5LnByaXZhdGUtZGVuc2l0eS1sZWdhY3ktY29tcGF0aWJpbGl0eSgpIHtcbiAgICAubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZCAubWF0LWJ1dHRvbi10b2dnbGUtbGFiZWwtY29udGVudCB7XG4gICAgICBsaW5lLWhlaWdodDogJHN0YW5kYXJkLWhlaWdodDtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiB0aGVtaW5nLnByaXZhdGUtbGVnYWN5LWdldC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgQGluY2x1ZGUgdGhlbWluZy5wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LWJ1dHRvbi10b2dnbGUnKSB7XG4gICAgJGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJHRoZW1lKTtcbiAgICAkZGVuc2l0eTogdGhlbWluZy5nZXQtZGVuc2l0eS1jb25maWcoJHRoZW1lKTtcbiAgICAkdHlwb2dyYXBoeTogdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJHRoZW1lKTtcblxuICAgIEBpZiAkY29sb3IgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBjb2xvcigkY29sb3IpO1xuICAgIH1cbiAgICBAaWYgJGRlbnNpdHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBkZW5zaXR5KCRkZW5zaXR5KTtcbiAgICB9XG4gICAgQGlmICR0eXBvZ3JhcGh5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgdHlwb2dyYXBoeSgkdHlwb2dyYXBoeSk7XG4gICAgfVxuICB9XG59XG4iLCJAdXNlICdzYXNzOm1hcCc7XG5AdXNlICcuLi9jb3JlL3RoZW1pbmcvdGhlbWluZyc7XG5AdXNlICcuLi9jb3JlL3N0eWxlL3ByaXZhdGUnO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHknO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHktdXRpbHMnO1xuXG5cbkBtaXhpbiBjb2xvcigkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJGJhY2tncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgYmFja2dyb3VuZCk7XG4gICRmb3JlZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGZvcmVncm91bmQpO1xuXG4gIC5tYXQtY2FyZCB7XG4gICAgQGluY2x1ZGUgcHJpdmF0ZS5wcml2YXRlLXRoZW1lLW92ZXJyaWRhYmxlLWVsZXZhdGlvbigxLCAkY29uZmlnKTtcbiAgICBiYWNrZ3JvdW5kOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGJhY2tncm91bmQsIGNhcmQpO1xuICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIHRleHQpO1xuXG4gICAgLy8gTmVlZHMgZXh0cmEgc3BlY2lmaWNpdHkgdG8gYmUgYWJsZSB0byBvdmVycmlkZSB0aGUgZWxldmF0aW9uIHNlbGVjdG9ycy5cbiAgICAmLm1hdC1jYXJkLWZsYXQge1xuICAgICAgQGluY2x1ZGUgcHJpdmF0ZS5wcml2YXRlLXRoZW1lLW92ZXJyaWRhYmxlLWVsZXZhdGlvbigwLCAkY29uZmlnKTtcbiAgICB9XG4gIH1cblxuICAubWF0LWNhcmQtc3VidGl0bGUge1xuICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIHNlY29uZGFyeS10ZXh0KTtcbiAgfVxufVxuXG5AbWl4aW4gdHlwb2dyYXBoeSgkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHR5cG9ncmFwaHkucHJpdmF0ZS10eXBvZ3JhcGh5LXRvLTIwMTQtY29uZmlnKFxuICAgICAgdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJGNvbmZpZy1vci10aGVtZSkpO1xuICAubWF0LWNhcmQge1xuICAgIGZvbnQtZmFtaWx5OiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtZmFtaWx5KCRjb25maWcpO1xuICB9XG5cbiAgLm1hdC1jYXJkLXRpdGxlIHtcbiAgICBmb250OiB7XG4gICAgICBzaXplOiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtc2l6ZSgkY29uZmlnLCBoZWFkbGluZSk7XG4gICAgICB3ZWlnaHQ6IHR5cG9ncmFwaHktdXRpbHMuZm9udC13ZWlnaHQoJGNvbmZpZywgdGl0bGUpO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtY2FyZC1oZWFkZXIgLm1hdC1jYXJkLXRpdGxlIHtcbiAgICBmb250LXNpemU6IHR5cG9ncmFwaHktdXRpbHMuZm9udC1zaXplKCRjb25maWcsIHRpdGxlKTtcbiAgfVxuXG4gIC5tYXQtY2FyZC1zdWJ0aXRsZSxcbiAgLm1hdC1jYXJkLWNvbnRlbnQge1xuICAgIGZvbnQtc2l6ZTogdHlwb2dyYXBoeS11dGlscy5mb250LXNpemUoJGNvbmZpZywgYm9keS0xKTtcbiAgfVxufVxuXG5AbWl4aW4gX2RlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIHRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiB0aGVtaW5nLnByaXZhdGUtbGVnYWN5LWdldC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgQGluY2x1ZGUgdGhlbWluZy5wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LWNhcmQnKSB7XG4gICAgJGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJHRoZW1lKTtcbiAgICAkZGVuc2l0eTogdGhlbWluZy5nZXQtZGVuc2l0eS1jb25maWcoJHRoZW1lKTtcbiAgICAkdHlwb2dyYXBoeTogdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJHRoZW1lKTtcblxuICAgIEBpZiAkY29sb3IgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBjb2xvcigkY29sb3IpO1xuICAgIH1cbiAgICBAaWYgJGRlbnNpdHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBfZGVuc2l0eSgkZGVuc2l0eSk7XG4gICAgfVxuICAgIEBpZiAkdHlwb2dyYXBoeSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIHR5cG9ncmFwaHkoJHR5cG9ncmFwaHkpO1xuICAgIH1cbiAgfVxufVxuIiwiQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnLi4vY29yZS90aGVtaW5nL3RoZW1pbmcnO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHknO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHktdXRpbHMnO1xuXG5cbkBtaXhpbiBjb2xvcigkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJGlzLWRhcmstdGhlbWU6IG1hcC5nZXQoJGNvbmZpZywgaXMtZGFyayk7XG4gICRwcmltYXJ5OiBtYXAuZ2V0KCRjb25maWcsIHByaW1hcnkpO1xuICAkYWNjZW50OiBtYXAuZ2V0KCRjb25maWcsIGFjY2VudCk7XG4gICR3YXJuOiBtYXAuZ2V0KCRjb25maWcsIHdhcm4pO1xuICAkYmFja2dyb3VuZDogbWFwLmdldCgkY29uZmlnLCBiYWNrZ3JvdW5kKTtcbiAgJGZvcmVncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgZm9yZWdyb3VuZCk7XG5cblxuICAvLyBUaGUgY29sb3Igb2YgdGhlIGNoZWNrYm94J3MgY2hlY2ttYXJrIC8gbWl4ZWRtYXJrLlxuICAkY2hlY2tib3gtbWFyay1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLCBiYWNrZ3JvdW5kKTtcblxuICAvLyBOT1RFKHRyYXZpc2thdWZtYW4pOiBXaGlsZSB0aGUgc3BlYyBjYWxscyBmb3IgdHJhbnNsdWNlbnQgYmxhY2tzL3doaXRlcyBmb3IgZGlzYWJsZWQgY29sb3JzLFxuICAvLyB0aGlzIGRvZXMgbm90IHdvcmsgd2VsbCB3aXRoIGVsZW1lbnRzIGxheWVyZWQgb24gdG9wIG9mIG9uZSBhbm90aGVyLiBUbyBnZXQgYXJvdW5kIHRoaXMgd2VcbiAgLy8gYmxlbmQgdGhlIGNvbG9ycyB0b2dldGhlciBiYXNlZCBvbiB0aGUgYmFzZSBjb2xvciBhbmQgdGhlIHRoZW1lIGJhY2tncm91bmQuXG4gICR3aGl0ZS0zMHBjdC1vcGFjaXR5LW9uLWRhcms6ICM2ODY4Njg7XG4gICRibGFjay0yNnBjdC1vcGFjaXR5LW9uLWxpZ2h0OiAjYjBiMGIwO1xuICAkZGlzYWJsZWQtY29sb3I6IGlmKCRpcy1kYXJrLXRoZW1lLCAkd2hpdGUtMzBwY3Qtb3BhY2l0eS1vbi1kYXJrLCAkYmxhY2stMjZwY3Qtb3BhY2l0eS1vbi1saWdodCk7XG5cbiAgLm1hdC1jaGVja2JveC1mcmFtZSB7XG4gICAgYm9yZGVyLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIHNlY29uZGFyeS10ZXh0KTtcbiAgfVxuXG4gIC5tYXQtY2hlY2tib3gtY2hlY2ttYXJrIHtcbiAgICBmaWxsOiAkY2hlY2tib3gtbWFyay1jb2xvcjtcbiAgfVxuXG4gIC5tYXQtY2hlY2tib3gtY2hlY2ttYXJrLXBhdGgge1xuICAgIC8vICFpbXBvcnRhbnQgaXMgbmVlZGVkIGhlcmUgYmVjYXVzZSBhIHN0cm9rZSBtdXN0IGJlIHNldCBhcyBhblxuICAgIC8vIGF0dHJpYnV0ZSBvbiB0aGUgU1ZHIGluIG9yZGVyIGZvciBsaW5lIGFuaW1hdGlvbiB0byB3b3JrIHByb3Blcmx5LlxuICAgIHN0cm9rZTogJGNoZWNrYm94LW1hcmstY29sb3IgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tYXQtY2hlY2tib3gtbWl4ZWRtYXJrIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY2hlY2tib3gtbWFyay1jb2xvcjtcbiAgfVxuXG4gIC5tYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZSwgLm1hdC1jaGVja2JveC1jaGVja2VkIHtcbiAgICAmLm1hdC1wcmltYXJ5IC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHByaW1hcnkpO1xuICAgIH1cblxuICAgICYubWF0LWFjY2VudCAubWF0LWNoZWNrYm94LWJhY2tncm91bmQge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRhY2NlbnQpO1xuICAgIH1cblxuICAgICYubWF0LXdhcm4gLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkd2Fybik7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1jaGVja2JveC1kaXNhYmxlZCB7XG4gICAgJi5tYXQtY2hlY2tib3gtY2hlY2tlZCxcbiAgICAmLm1hdC1jaGVja2JveC1pbmRldGVybWluYXRlIHtcbiAgICAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZCB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRkaXNhYmxlZC1jb2xvcjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmOm5vdCgubWF0LWNoZWNrYm94LWNoZWNrZWQpIHtcbiAgICAgIC5tYXQtY2hlY2tib3gtZnJhbWUge1xuICAgICAgICBib3JkZXItY29sb3I6ICRkaXNhYmxlZC1jb2xvcjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAubWF0LWNoZWNrYm94LWxhYmVsIHtcbiAgICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIHNlY29uZGFyeS10ZXh0KTtcbiAgICB9XG4gIH1cblxuICAvLyBTd2l0Y2ggdGhpcyB0byBhIHNvbGlkIGNvbG9yIHNpbmNlIHdlJ3JlIHVzaW5nIGBvcGFjaXR5YFxuICAvLyB0byBjb250cm9sIGhvdyBvcGFxdWUgdGhlIHJpcHBsZSBzaG91bGQgYmUuXG4gIC5tYXQtY2hlY2tib3ggLm1hdC1yaXBwbGUtZWxlbWVudCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogbWFwLmdldChtYXAuZ2V0KCRjb25maWcsIGZvcmVncm91bmQpLCBiYXNlKTtcbiAgfVxuXG4gIC5tYXQtY2hlY2tib3gtY2hlY2tlZDpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCksXG4gIC5tYXQtY2hlY2tib3g6YWN0aXZlOm5vdCgubWF0LWNoZWNrYm94LWRpc2FibGVkKSB7XG4gICAgJi5tYXQtcHJpbWFyeSAubWF0LXJpcHBsZS1lbGVtZW50IHtcbiAgICAgIGJhY2tncm91bmQ6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkcHJpbWFyeSk7XG4gICAgfVxuXG4gICAgJi5tYXQtYWNjZW50IC5tYXQtcmlwcGxlLWVsZW1lbnQge1xuICAgICAgYmFja2dyb3VuZDogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRhY2NlbnQpO1xuICAgIH1cblxuICAgICYubWF0LXdhcm4gLm1hdC1yaXBwbGUtZWxlbWVudCB7XG4gICAgICBiYWNrZ3JvdW5kOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHdhcm4pO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gdHlwb2dyYXBoeSgkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHR5cG9ncmFwaHkucHJpdmF0ZS10eXBvZ3JhcGh5LXRvLTIwMTQtY29uZmlnKFxuICAgICAgdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJGNvbmZpZy1vci10aGVtZSkpO1xuICAubWF0LWNoZWNrYm94IHtcbiAgICBmb250LWZhbWlseTogdHlwb2dyYXBoeS11dGlscy5mb250LWZhbWlseSgkY29uZmlnKTtcbiAgfVxuXG4gIC8vIFRPRE8oa2FyYSk6IFJlbW92ZSB0aGlzIHN0eWxlIHdoZW4gZml4aW5nIHZlcnRpY2FsIGJhc2VsaW5lXG4gIC5tYXQtY2hlY2tib3gtbGF5b3V0IC5tYXQtY2hlY2tib3gtbGFiZWwge1xuICAgIGxpbmUtaGVpZ2h0OiB0eXBvZ3JhcGh5LXV0aWxzLmxpbmUtaGVpZ2h0KCRjb25maWcsIGJvZHktMik7XG4gIH1cbn1cblxuQG1peGluIF9kZW5zaXR5KCRjb25maWctb3ItdGhlbWUpIHt9XG5cbkBtaXhpbiB0aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKSB7XG4gICR0aGVtZTogdGhlbWluZy5wcml2YXRlLWxlZ2FjeS1nZXQtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZyk7XG4gIEBpbmNsdWRlIHRoZW1pbmcucHJpdmF0ZS1jaGVjay1kdXBsaWNhdGUtdGhlbWUtc3R5bGVzKCR0aGVtZSwgJ21hdC1jaGVja2JveCcpIHtcbiAgICAkY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkdGhlbWUpO1xuICAgICRkZW5zaXR5OiB0aGVtaW5nLmdldC1kZW5zaXR5LWNvbmZpZygkdGhlbWUpO1xuICAgICR0eXBvZ3JhcGh5OiB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkdGhlbWUpO1xuXG4gICAgQGlmICRjb2xvciAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIGNvbG9yKCRjb2xvcik7XG4gICAgfVxuICAgIEBpZiAkZGVuc2l0eSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIF9kZW5zaXR5KCRkZW5zaXR5KTtcbiAgICB9XG4gICAgQGlmICR0eXBvZ3JhcGh5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgdHlwb2dyYXBoeSgkdHlwb2dyYXBoeSk7XG4gICAgfVxuICB9XG59XG4iLCJAdXNlICdzYXNzOm1hcCc7XG5AdXNlICdzYXNzOm1ldGEnO1xuQHVzZSAnLi4vY29yZS9zdHlsZS9wcml2YXRlJztcbkB1c2UgJy4uL2NvcmUvdGhlbWluZy90aGVtaW5nJztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5JztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5LXV0aWxzJztcblxuJGNoaXAtcmVtb3ZlLWZvbnQtc2l6ZTogMThweDtcblxuQG1peGluIF9lbGVtZW50LWNvbG9yKCRmb3JlZ3JvdW5kLCAkYmFja2dyb3VuZCkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFja2dyb3VuZDtcbiAgY29sb3I6ICRmb3JlZ3JvdW5kO1xuXG4gIC5tYXQtY2hpcC1yZW1vdmUge1xuICAgIGNvbG9yOiAkZm9yZWdyb3VuZDtcbiAgICBvcGFjaXR5OiAwLjQ7XG4gIH1cbn1cblxuXG4vLyBBcHBsaWVzIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIGZvciBhIHJpcHBsZSBlbGVtZW50LlxuLy8gSWYgdGhlIGNvbG9yIHZhbHVlIHByb3ZpZGVkIGlzIG5vdCBhIFNhc3MgY29sb3IsXG4vLyB3ZSBhc3N1bWUgdGhhdCB3ZSd2ZSBiZWVuIGdpdmVuIGEgQ1NTIHZhcmlhYmxlLlxuLy8gU2luY2Ugd2UgY2FuJ3QgcGVyZm9ybSBhbHBoYS1ibGVuZGluZyBvbiBhIENTUyB2YXJpYWJsZSxcbi8vIHdlIGluc3RlYWQgYWRkIHRoZSBvcGFjaXR5IGRpcmVjdGx5IHRvIHRoZSByaXBwbGUgZWxlbWVudC5cbkBtaXhpbiBfcmlwcGxlLWJhY2tncm91bmQoJHBhbGV0dGUsICRkZWZhdWx0LWNvbnRyYXN0LCAkb3BhY2l0eSkge1xuICAkYmFja2dyb3VuZC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRwYWxldHRlLCAkZGVmYXVsdC1jb250cmFzdCwgJG9wYWNpdHkpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFja2dyb3VuZC1jb2xvcjtcbiAgQGlmIChtZXRhLnR5cGUtb2YoJGJhY2tncm91bmQtY29sb3IpICE9IGNvbG9yKSB7XG4gICAgb3BhY2l0eTogJG9wYWNpdHk7XG4gIH1cbn1cblxuQG1peGluIF9wYWxldHRlLXN0eWxlcygkcGFsZXR0ZSkge1xuICBAaW5jbHVkZSBfZWxlbWVudC1jb2xvcih0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHBhbGV0dGUsIGRlZmF1bHQtY29udHJhc3QpLFxuICAgIHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkcGFsZXR0ZSkpO1xuXG4gIC5tYXQtcmlwcGxlLWVsZW1lbnQge1xuICAgIEBpbmNsdWRlIF9yaXBwbGUtYmFja2dyb3VuZCgkcGFsZXR0ZSwgZGVmYXVsdC1jb250cmFzdCwgMC4xKTtcbiAgfVxufVxuXG5AbWl4aW4gY29sb3IoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRpcy1kYXJrLXRoZW1lOiBtYXAuZ2V0KCRjb25maWcsIGlzLWRhcmspO1xuICAkcHJpbWFyeTogbWFwLmdldCgkY29uZmlnLCBwcmltYXJ5KTtcbiAgJGFjY2VudDogbWFwLmdldCgkY29uZmlnLCBhY2NlbnQpO1xuICAkd2FybjogbWFwLmdldCgkY29uZmlnLCB3YXJuKTtcbiAgJGJhY2tncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgYmFja2dyb3VuZCk7XG4gICRmb3JlZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGZvcmVncm91bmQpO1xuXG4gICR1bnNlbGVjdGVkLWJhY2tncm91bmQ6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYmFja2dyb3VuZCwgdW5zZWxlY3RlZC1jaGlwKTtcbiAgJHVuc2VsZWN0ZWQtZm9yZWdyb3VuZDogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCB0ZXh0KTtcblxuICAubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAge1xuICAgIEBpbmNsdWRlIF9lbGVtZW50LWNvbG9yKCR1bnNlbGVjdGVkLWZvcmVncm91bmQsICR1bnNlbGVjdGVkLWJhY2tncm91bmQpO1xuXG4gICAgJjpub3QoLm1hdC1jaGlwLWRpc2FibGVkKSB7XG4gICAgICAmOmFjdGl2ZSB7XG4gICAgICAgIEBpbmNsdWRlIHByaXZhdGUucHJpdmF0ZS10aGVtZS1lbGV2YXRpb24oMywgJGNvbmZpZyk7XG4gICAgICB9XG5cbiAgICAgIC5tYXQtY2hpcC1yZW1vdmU6aG92ZXIge1xuICAgICAgICBvcGFjaXR5OiAwLjU0O1xuICAgICAgfVxuICAgIH1cblxuICAgICYubWF0LWNoaXAtZGlzYWJsZWQge1xuICAgICAgb3BhY2l0eTogMC40O1xuICAgIH1cblxuICAgICY6OmFmdGVyIHtcbiAgICAgIGJhY2tncm91bmQ6IG1hcC5nZXQoJGZvcmVncm91bmQsIGJhc2UpO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZCB7XG4gICAgJi5tYXQtcHJpbWFyeSB7XG4gICAgICBAaW5jbHVkZSBfcGFsZXR0ZS1zdHlsZXMoJHByaW1hcnkpO1xuICAgIH1cblxuICAgICYubWF0LXdhcm4ge1xuICAgICAgQGluY2x1ZGUgX3BhbGV0dGUtc3R5bGVzKCR3YXJuKTtcbiAgICB9XG5cbiAgICAmLm1hdC1hY2NlbnQge1xuICAgICAgQGluY2x1ZGUgX3BhbGV0dGUtc3R5bGVzKCRhY2NlbnQpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gdHlwb2dyYXBoeSgkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHR5cG9ncmFwaHkucHJpdmF0ZS10eXBvZ3JhcGh5LXRvLTIwMTQtY29uZmlnKFxuICAgICAgdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJGNvbmZpZy1vci10aGVtZSkpO1xuICAubWF0LWNoaXAge1xuICAgIGZvbnQtc2l6ZTogdHlwb2dyYXBoeS11dGlscy5mb250LXNpemUoJGNvbmZpZywgYm9keS0yKTtcbiAgICBmb250LXdlaWdodDogdHlwb2dyYXBoeS11dGlscy5mb250LXdlaWdodCgkY29uZmlnLCBib2R5LTIpO1xuXG4gICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb24sXG4gICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbiB7XG4gICAgICBmb250LXNpemU6ICRjaGlwLXJlbW92ZS1mb250LXNpemU7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBfZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZykge1xuICAkdGhlbWU6IHRoZW1pbmcucHJpdmF0ZS1sZWdhY3ktZ2V0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICBAaW5jbHVkZSB0aGVtaW5nLnByaXZhdGUtY2hlY2stZHVwbGljYXRlLXRoZW1lLXN0eWxlcygkdGhlbWUsICdtYXQtY2hpcHMnKSB7XG4gICAgJGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJHRoZW1lKTtcbiAgICAkZGVuc2l0eTogdGhlbWluZy5nZXQtZGVuc2l0eS1jb25maWcoJHRoZW1lKTtcbiAgICAkdHlwb2dyYXBoeTogdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJHRoZW1lKTtcblxuICAgIEBpZiAkY29sb3IgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBjb2xvcigkY29sb3IpO1xuICAgIH1cbiAgICBAaWYgJGRlbnNpdHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBfZGVuc2l0eSgkZGVuc2l0eSk7XG4gICAgfVxuICAgIEBpZiAkdHlwb2dyYXBoeSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIHR5cG9ncmFwaHkoJHR5cG9ncmFwaHkpO1xuICAgIH1cbiAgfVxufVxuXG5cbiIsIkB1c2UgJ3Nhc3M6bWFwJztcbkB1c2UgJy4uL2NvcmUvdGhlbWluZy90aGVtaW5nJztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5JztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5LXV0aWxzJztcblxuQG1peGluIGNvbG9yKCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAkYmFja2dyb3VuZDogbWFwLmdldCgkY29uZmlnLCBiYWNrZ3JvdW5kKTtcbiAgJGZvcmVncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgZm9yZWdyb3VuZCk7XG5cbiAgLm1hdC10YWJsZSB7XG4gICAgYmFja2dyb3VuZDogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLCAnY2FyZCcpO1xuICB9XG5cbiAgLm1hdC10YWJsZSB0aGVhZCwgLm1hdC10YWJsZSB0Ym9keSwgLm1hdC10YWJsZSB0Zm9vdCxcbiAgbWF0LWhlYWRlci1yb3csIG1hdC1yb3csIG1hdC1mb290ZXItcm93LFxuICBbbWF0LWhlYWRlci1yb3ddLCBbbWF0LXJvd10sIFttYXQtZm9vdGVyLXJvd10sXG4gIC5tYXQtdGFibGUtc3RpY2t5IHtcbiAgICBiYWNrZ3JvdW5kOiBpbmhlcml0O1xuICB9XG5cbiAgbWF0LXJvdywgbWF0LWhlYWRlci1yb3csIG1hdC1mb290ZXItcm93LFxuICB0aC5tYXQtaGVhZGVyLWNlbGwsIHRkLm1hdC1jZWxsLCB0ZC5tYXQtZm9vdGVyLWNlbGwge1xuICAgIGJvcmRlci1ib3R0b20tY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgZGl2aWRlcik7XG4gIH1cblxuICAubWF0LWhlYWRlci1jZWxsIHtcbiAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBzZWNvbmRhcnktdGV4dCk7XG4gIH1cblxuICAubWF0LWNlbGwsIC5tYXQtZm9vdGVyLWNlbGwge1xuICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIHRleHQpO1xuICB9XG59XG5cbkBtaXhpbiB0eXBvZ3JhcGh5KCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdHlwb2dyYXBoeS5wcml2YXRlLXR5cG9ncmFwaHktdG8tMjAxNC1jb25maWcoXG4gICAgICB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKSk7XG4gIC5tYXQtdGFibGUge1xuICAgIGZvbnQtZmFtaWx5OiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtZmFtaWx5KCRjb25maWcpO1xuICB9XG5cbiAgLm1hdC1oZWFkZXItY2VsbCB7XG4gICAgZm9udC1zaXplOiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtc2l6ZSgkY29uZmlnLCBjYXB0aW9uKTtcbiAgICBmb250LXdlaWdodDogdHlwb2dyYXBoeS11dGlscy5mb250LXdlaWdodCgkY29uZmlnLCBib2R5LTIpO1xuICB9XG5cbiAgLm1hdC1jZWxsLCAubWF0LWZvb3Rlci1jZWxsIHtcbiAgICBmb250LXNpemU6IHR5cG9ncmFwaHktdXRpbHMuZm9udC1zaXplKCRjb25maWcsIGJvZHktMSk7XG4gIH1cbn1cblxuQG1peGluIF9kZW5zaXR5KCRjb25maWctb3ItdGhlbWUpIHt9XG5cbkBtaXhpbiB0aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKSB7XG4gICR0aGVtZTogdGhlbWluZy5wcml2YXRlLWxlZ2FjeS1nZXQtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZyk7XG4gIEBpbmNsdWRlIHRoZW1pbmcucHJpdmF0ZS1jaGVjay1kdXBsaWNhdGUtdGhlbWUtc3R5bGVzKCR0aGVtZSwgJ21hdC10YWJsZScpIHtcbiAgICAkY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkdGhlbWUpO1xuICAgICRkZW5zaXR5OiB0aGVtaW5nLmdldC1kZW5zaXR5LWNvbmZpZygkdGhlbWUpO1xuICAgICR0eXBvZ3JhcGh5OiB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkdGhlbWUpO1xuXG4gICAgQGlmICRjb2xvciAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIGNvbG9yKCRjb2xvcik7XG4gICAgfVxuICAgIEBpZiAkZGVuc2l0eSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIF9kZW5zaXR5KCRkZW5zaXR5KTtcbiAgICB9XG4gICAgQGlmICR0eXBvZ3JhcGh5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgdHlwb2dyYXBoeSgkdHlwb2dyYXBoeSk7XG4gICAgfVxuICB9XG59XG4iLCJAdXNlICdzYXNzOmNvbG9yJztcbkB1c2UgJ3Nhc3M6bWFwJztcbkB1c2UgJ3Nhc3M6bWF0aCc7XG5AdXNlICdzYXNzOm1ldGEnO1xuQHVzZSAnLi4vY29yZS9zdHlsZS9wcml2YXRlJztcbkB1c2UgJy4uL2NvcmUvdGhlbWluZy90aGVtaW5nJztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5JztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5LXV0aWxzJztcblxuXG4kc2VsZWN0ZWQtdG9kYXktYm94LXNoYWRvdy13aWR0aDogMXB4O1xuJHNlbGVjdGVkLWZhZGUtYW1vdW50OiAwLjY7XG4kcmFuZ2UtZmFkZS1hbW91bnQ6IDAuMjtcbiR0b2RheS1mYWRlLWFtb3VudDogMC4yO1xuJGNhbGVuZGFyLWJvZHktZm9udC1zaXplOiAxM3B4ICFkZWZhdWx0O1xuJGNhbGVuZGFyLXdlZWtkYXktdGFibGUtZm9udC1zaXplOiAxMXB4ICFkZWZhdWx0O1xuXG5AbWl4aW4gX2NvbG9yKCRwYWxldHRlKSB7XG4gIEBpbmNsdWRlIGRhdGUtcmFuZ2UtY29sb3JzKFxuICAgIHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkcGFsZXR0ZSwgZGVmYXVsdCwgJHJhbmdlLWZhZGUtYW1vdW50KSk7XG5cbiAgLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHBhbGV0dGUpO1xuICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHBhbGV0dGUsIGRlZmF1bHQtY29udHJhc3QpO1xuICB9XG5cbiAgLm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkID4gLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkIHtcbiAgICAkYmFja2dyb3VuZDogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRwYWxldHRlKTtcblxuICAgIEBpZiAobWV0YS50eXBlLW9mKCRiYWNrZ3JvdW5kKSA9PSBjb2xvcikge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogY29sb3IuYWRqdXN0KCRiYWNrZ3JvdW5kLCAkYWxwaGE6IC0kc2VsZWN0ZWQtZmFkZS1hbW91bnQpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAvLyBJZiB3ZSBjb3VsZG4ndCByZXNvbHZlIHRvIGJhY2tncm91bmQgdG8gYSBjb2xvciAoZS5nLiBpdCdzIGEgQ1NTIHZhcmlhYmxlKSxcbiAgICAgIC8vIGZhbGwgYmFjayB0byBmYWRpbmcgdGhlIGNvbnRlbnQgb3V0IHZpYSBgb3BhY2l0eWAuXG4gICAgICBvcGFjaXR5OiAkdG9kYXktZmFkZS1hbW91bnQ7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5Lm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkIHtcbiAgICBib3gtc2hhZG93OiBpbnNldCAwIDAgMCAkc2VsZWN0ZWQtdG9kYXktYm94LXNoYWRvdy13aWR0aFxuICAgICAgICAgICAgICAgIHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkcGFsZXR0ZSwgZGVmYXVsdC1jb250cmFzdCk7XG4gIH1cblxuICAubWF0LWNhbGVuZGFyLWJvZHktY2VsbDpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkKTpob3ZlcixcbiAgLmNkay1rZXlib2FyZC1mb2N1c2VkIC5tYXQtY2FsZW5kYXItYm9keS1hY3RpdmUsXG4gIC5jZGstcHJvZ3JhbS1mb2N1c2VkIC5tYXQtY2FsZW5kYXItYm9keS1hY3RpdmUge1xuICAgICYgPiAubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50IHtcbiAgICAgIEBpbmNsdWRlIF91bnNlbGVjdGVkLWNlbGwge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHBhbGV0dGUsIDAuMyk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vIFV0aWxpdHkgbWl4aW4gdG8gdGFyZ2V0IGNlbGxzIHRoYXQgYXJlbid0IHNlbGVjdGVkLiBVc2VkIHRvIG1ha2Ugc2VsZWN0b3IgZWFzaWVyIHRvIGZvbGxvdy5cbkBtaXhpbiBfdW5zZWxlY3RlZC1jZWxsIHtcbiAgJjpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuQG1peGluIGNvbG9yKCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAkZm9yZWdyb3VuZDogbWFwLmdldCgkY29uZmlnLCBmb3JlZ3JvdW5kKTtcbiAgJGJhY2tncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgYmFja2dyb3VuZCk7XG4gICRkaXNhYmxlZC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBkaXNhYmxlZC10ZXh0KTtcblxuICAubWF0LWNhbGVuZGFyLWFycm93IHtcbiAgICBib3JkZXItdG9wLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIGljb24pO1xuICB9XG5cbiAgLy8gVGhlIHByZXYvbmV4dCBidXR0b25zIG5lZWQgYSBiaXQgbW9yZSBzcGVjaWZpY2l0eSB0b1xuICAvLyBhdm9pZCBiZWluZyBvdmVyd3JpdHRlbiBieSB0aGUgLm1hdC1pY29uLWJ1dHRvbi5cbiAgLm1hdC1kYXRlcGlja2VyLXRvZ2dsZSxcbiAgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQgLm1hdC1jYWxlbmRhci1uZXh0LWJ1dHRvbixcbiAgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQgLm1hdC1jYWxlbmRhci1wcmV2aW91cy1idXR0b24ge1xuICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIGljb24pO1xuICB9XG5cbiAgLm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXIge1xuICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIGhpbnQtdGV4dCk7XG4gIH1cblxuICAubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlci1kaXZpZGVyOjphZnRlciB7XG4gICAgYmFja2dyb3VuZDogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBkaXZpZGVyKTtcbiAgfVxuXG4gIC5tYXQtY2FsZW5kYXItYm9keS1sYWJlbCB7XG4gICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgc2Vjb25kYXJ5LXRleHQpO1xuICB9XG5cbiAgLm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudCxcbiAgLm1hdC1kYXRlLXJhbmdlLWlucHV0LXNlcGFyYXRvciB7XG4gICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgdGV4dCk7XG4gICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgfVxuXG4gIC5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZCA+IC5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnQge1xuICAgIEBpbmNsdWRlIF91bnNlbGVjdGVkLWNlbGwge1xuICAgICAgY29sb3I6ICRkaXNhYmxlZC1jb2xvcjtcbiAgICB9XG4gIH1cblxuICAubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQgLm1hdC1kYXRlLXJhbmdlLWlucHV0LXNlcGFyYXRvciB7XG4gICAgY29sb3I6ICRkaXNhYmxlZC1jb2xvcjtcbiAgfVxuXG4gIC5tYXQtY2FsZW5kYXItYm9keS1pbi1wcmV2aWV3IHtcbiAgICAkZGl2aWRlci1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBkaXZpZGVyKTtcblxuICAgIEBpZiBtZXRhLnR5cGUtb2YoJGRpdmlkZXItY29sb3IpID09IGNvbG9yIHtcbiAgICAgIC8vIFRoZSBkaXZpZGVyIGNvbG9yIGlzIHNldCB1bmRlciB0aGUgYXNzdW1wdGlvbiB0aGF0IGl0J2xsIGJlIHVzZWRcbiAgICAgIC8vIGZvciBhIHNvbGlkIGJvcmRlciwgYnV0IGJlY2F1c2Ugd2UncmUgdXNpbmcgYSBkYXNoZWQgYm9yZGVyIGZvciB0aGVcbiAgICAgIC8vIHByZXZpZXcgcmFuZ2UsIHdlIG5lZWQgdG8gYnVtcCBpdHMgb3BhY2l0eSB0byBlbnN1cmUgdGhhdCBpdCdzIHZpc2libGUuXG4gICAgICBjb2xvcjogcmdiYSgkZGl2aWRlci1jb2xvciwgbWF0aC5taW4ob3BhY2l0eSgkZGl2aWRlci1jb2xvcikgKiAyLCAxKSk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIGNvbG9yOiAkZGl2aWRlci1jb2xvcjtcbiAgICB9XG4gIH1cblxuICAubWF0LWNhbGVuZGFyLWJvZHktdG9kYXkge1xuICAgIEBpbmNsdWRlIF91bnNlbGVjdGVkLWNlbGwge1xuICAgICAgLy8gTm90ZTogdGhvdWdoIGl0J3Mgbm90IHRleHQsIHRoZSBib3JkZXIgaXMgYSBoaW50IGFib3V0IHRoZSBmYWN0IHRoYXQgdGhpcyBpcyB0b2RheSdzIGRhdGUsXG4gICAgICAvLyBzbyB3ZSB1c2UgdGhlIGhpbnQgY29sb3IuXG4gICAgICBib3JkZXItY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgaGludC10ZXh0KTtcbiAgICB9XG4gIH1cblxuICAubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWQgPiAubWF0LWNhbGVuZGFyLWJvZHktdG9kYXkge1xuICAgIEBpbmNsdWRlIF91bnNlbGVjdGVkLWNlbGwge1xuICAgICAgJGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIGhpbnQtdGV4dCk7XG5cbiAgICAgIEBpZiAobWV0YS50eXBlLW9mKCRjb2xvcikgPT0gY29sb3IpIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiBjb2xvci5hZGp1c3QoJGNvbG9yLCAkYWxwaGE6IC0kdG9kYXktZmFkZS1hbW91bnQpO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAvLyBJZiB0aGUgY29sb3IgZGlkbid0IHJlc29sdmUgdG8gYSBjb2xvciB2YWx1ZSwgYnV0IHNvbWV0aGluZyBsaWtlIGEgQ1NTIHZhcmlhYmxlLCB3ZSBjYW4ndFxuICAgICAgICAvLyBmYWRlIGl0IG91dCBzbyB3ZSBmYWxsIGJhY2sgdG8gcmVkdWNpbmcgdGhlIGVsZW1lbnQgb3BhY2l0eS4gTm90ZSB0aGF0IHdlIGRvbid0IHVzZSB0aGVcbiAgICAgICAgLy8gJG1hdC1kYXRlcGlja2VyLXRvZGF5LWZhZGUtYW1vdW50LCBiZWNhdXNlIGhpbnQgdGV4dCB1c3VhbGx5IGhhcyBzb21lIG9wYWNpdHkgYXBwbGllZFxuICAgICAgICAvLyB0byBpdCBhbHJlYWR5IGFuZCB3ZSBkb24ndCB3YW50IHRoZW0gdG8gc3RhY2sgb24gdG9wIG9mIGVhY2ggb3RoZXIuXG4gICAgICAgIG9wYWNpdHk6IDAuNTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBfY29sb3IobWFwLmdldCgkY29uZmlnLCBwcmltYXJ5KSk7XG5cbiAgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQge1xuICAgIEBpbmNsdWRlIHByaXZhdGUucHJpdmF0ZS10aGVtZS1lbGV2YXRpb24oNCwgJGNvbmZpZyk7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLCBjYXJkKTtcbiAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCB0ZXh0KTtcblxuICAgICYubWF0LWFjY2VudCB7XG4gICAgICBAaW5jbHVkZSBfY29sb3IobWFwLmdldCgkY29uZmlnLCBhY2NlbnQpKTtcbiAgICB9XG5cbiAgICAmLm1hdC13YXJuIHtcbiAgICAgIEBpbmNsdWRlIF9jb2xvcihtYXAuZ2V0KCRjb25maWcsIHdhcm4pKTtcbiAgICB9XG4gIH1cblxuICAubWF0LWRhdGVwaWNrZXItY29udGVudC10b3VjaCB7XG4gICAgQGluY2x1ZGUgcHJpdmF0ZS5wcml2YXRlLXRoZW1lLWVsZXZhdGlvbigyNCwgJGNvbmZpZyk7XG4gIH1cblxuICAubWF0LWRhdGVwaWNrZXItdG9nZ2xlLWFjdGl2ZSB7XG4gICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZShtYXAuZ2V0KCRjb25maWcsIHByaW1hcnkpLCB0ZXh0KTtcblxuICAgICYubWF0LWFjY2VudCB7XG4gICAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKG1hcC5nZXQoJGNvbmZpZywgYWNjZW50KSwgdGV4dCk7XG4gICAgfVxuXG4gICAgJi5tYXQtd2FybiB7XG4gICAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKG1hcC5nZXQoJGNvbmZpZywgd2FybiksIHRleHQpO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtZGF0ZS1yYW5nZS1pbnB1dC1pbm5lcltkaXNhYmxlZF0ge1xuICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIGRpc2FibGVkLXRleHQpO1xuICB9XG59XG5cbkBtaXhpbiB0eXBvZ3JhcGh5KCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdHlwb2dyYXBoeS5wcml2YXRlLXR5cG9ncmFwaHktdG8tMjAxNC1jb25maWcoXG4gICAgICB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKSk7XG4gIC5tYXQtY2FsZW5kYXIge1xuICAgIGZvbnQtZmFtaWx5OiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtZmFtaWx5KCRjb25maWcpO1xuICB9XG5cbiAgLm1hdC1jYWxlbmRhci1ib2R5IHtcbiAgICBmb250LXNpemU6ICRjYWxlbmRhci1ib2R5LWZvbnQtc2l6ZTtcbiAgfVxuXG4gIC5tYXQtY2FsZW5kYXItYm9keS1sYWJlbCxcbiAgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uIHtcbiAgICBmb250OiB7XG4gICAgICBzaXplOiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtc2l6ZSgkY29uZmlnLCBidXR0b24pO1xuICAgICAgd2VpZ2h0OiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtd2VpZ2h0KCRjb25maWcsIGJ1dHRvbik7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXIgdGgge1xuICAgIGZvbnQ6IHtcbiAgICAgIHNpemU6ICRjYWxlbmRhci13ZWVrZGF5LXRhYmxlLWZvbnQtc2l6ZTtcbiAgICAgIHdlaWdodDogdHlwb2dyYXBoeS11dGlscy5mb250LXdlaWdodCgkY29uZmlnLCBib2R5LTEpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gZGF0ZS1yYW5nZS1jb2xvcnMoXG4gICRyYW5nZS1jb2xvcixcbiAgJGNvbXBhcmlzb24tY29sb3I6IHJnYmEoI2Y5YWIwMCwgJHJhbmdlLWZhZGUtYW1vdW50KSxcbiAgJG92ZXJsYXAtY29sb3I6ICNhOGRhYjUsXG4gICRvdmVybGFwLXNlbGVjdGVkLWNvbG9yOiBjb2xvci5hZGp1c3QoJG92ZXJsYXAtY29sb3IsICRsaWdodG5lc3M6IC0zMCUpKSB7XG5cbiAgLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlOjpiZWZvcmUge1xuICAgIGJhY2tncm91bmQ6ICRyYW5nZS1jb2xvcjtcbiAgfVxuXG4gIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCxcbiAgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2U6OmJlZm9yZSB7XG4gICAgYmFja2dyb3VuZDogJGNvbXBhcmlzb24tY29sb3I7XG4gIH1cblxuICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnQ6OmJlZm9yZSxcbiAgW2Rpcj0ncnRsJ10gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZDo6YmVmb3JlIHtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsICRyYW5nZS1jb2xvciA1MCUsICRjb21wYXJpc29uLWNvbG9yIDUwJSk7XG4gIH1cblxuICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2UtZW5kOjpiZWZvcmUsXG4gIFtkaXI9J3J0bCddIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydDo6YmVmb3JlIHtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gbGVmdCwgJHJhbmdlLWNvbG9yIDUwJSwgJGNvbXBhcmlzb24tY29sb3IgNTAlKTtcbiAgfVxuXG4gIC5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZSA+IC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCxcbiAgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2UubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2U6OmFmdGVyIHtcbiAgICBiYWNrZ3JvdW5kOiAkb3ZlcmxhcC1jb2xvcjtcbiAgfVxuXG4gIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCxcbiAgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2UgPiAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQge1xuICAgIGJhY2tncm91bmQ6ICRvdmVybGFwLXNlbGVjdGVkLWNvbG9yO1xuICB9XG59XG5cbkBtaXhpbiBfZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZykge1xuICAkdGhlbWU6IHRoZW1pbmcucHJpdmF0ZS1sZWdhY3ktZ2V0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICBAaW5jbHVkZSB0aGVtaW5nLnByaXZhdGUtY2hlY2stZHVwbGljYXRlLXRoZW1lLXN0eWxlcygkdGhlbWUsICdtYXQtZGF0ZXBpY2tlcicpIHtcbiAgICAkY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkdGhlbWUpO1xuICAgICRkZW5zaXR5OiB0aGVtaW5nLmdldC1kZW5zaXR5LWNvbmZpZygkdGhlbWUpO1xuICAgICR0eXBvZ3JhcGh5OiB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkdGhlbWUpO1xuXG4gICAgQGlmICRjb2xvciAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIGNvbG9yKCRjb2xvcik7XG4gICAgfVxuICAgIEBpZiAkZGVuc2l0eSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIF9kZW5zaXR5KCRkZW5zaXR5KTtcbiAgICB9XG4gICAgQGlmICR0eXBvZ3JhcGh5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgdHlwb2dyYXBoeSgkdHlwb2dyYXBoeSk7XG4gICAgfVxuICB9XG59XG4iLCJAdXNlICdzYXNzOm1hcCc7XG5AdXNlICcuLi9jb3JlL3N0eWxlL3ByaXZhdGUnO1xuQHVzZSAnLi4vY29yZS90aGVtaW5nL3RoZW1pbmcnO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHknO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHktdXRpbHMnO1xuXG5cbkBtaXhpbiBjb2xvcigkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJGJhY2tncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgYmFja2dyb3VuZCk7XG4gICRmb3JlZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGZvcmVncm91bmQpO1xuXG4gIC5tYXQtZGlhbG9nLWNvbnRhaW5lciB7XG4gICAgQGluY2x1ZGUgcHJpdmF0ZS5wcml2YXRlLXRoZW1lLWVsZXZhdGlvbigyNCwgJGNvbmZpZyk7XG4gICAgYmFja2dyb3VuZDogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLCBkaWFsb2cpO1xuICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIHRleHQpO1xuICB9XG59XG5cbkBtaXhpbiB0eXBvZ3JhcGh5KCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdHlwb2dyYXBoeS5wcml2YXRlLXR5cG9ncmFwaHktdG8tMjAxNC1jb25maWcoXG4gICAgICB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKSk7XG4gIC5tYXQtZGlhbG9nLXRpdGxlIHtcbiAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5LXV0aWxzLnR5cG9ncmFwaHktbGV2ZWwoJGNvbmZpZywgdGl0bGUpO1xuICB9XG59XG5cbkBtaXhpbiBfZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZykge1xuICAkdGhlbWU6IHRoZW1pbmcucHJpdmF0ZS1sZWdhY3ktZ2V0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICBAaW5jbHVkZSB0aGVtaW5nLnByaXZhdGUtY2hlY2stZHVwbGljYXRlLXRoZW1lLXN0eWxlcygkdGhlbWUsICdtYXQtZGlhbG9nJykge1xuICAgICRjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgJGRlbnNpdHk6IHRoZW1pbmcuZ2V0LWRlbnNpdHktY29uZmlnKCR0aGVtZSk7XG4gICAgJHR5cG9ncmFwaHk6IHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCR0aGVtZSk7XG5cbiAgICBAaWYgJGNvbG9yICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgX2RlbnNpdHkoJGRlbnNpdHkpO1xuICAgIH1cbiAgICBAaWYgJHR5cG9ncmFwaHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5KCR0eXBvZ3JhcGh5KTtcbiAgICB9XG4gIH1cbn1cbiIsIkB1c2UgJ3Nhc3M6bWFwJztcbkB1c2UgJy4uL2NvcmUvZGVuc2l0eS9wcml2YXRlL2NvbXBhdGliaWxpdHknO1xuQHVzZSAnLi4vY29yZS90aGVtaW5nL3RoZW1pbmcnO1xuQHVzZSAnLi4vY29yZS9zdHlsZS9wcml2YXRlJztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5JztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5LXV0aWxzJztcbkB1c2UgJy4vZXhwYW5zaW9uLXZhcmlhYmxlcyc7XG5AdXNlICcuL2V4cGFuc2lvbi1taXhpbnMnO1xuXG5AbWl4aW4gY29sb3IoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRiYWNrZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGJhY2tncm91bmQpO1xuICAkZm9yZWdyb3VuZDogbWFwLmdldCgkY29uZmlnLCBmb3JlZ3JvdW5kKTtcblxuICAubWF0LWV4cGFuc2lvbi1wYW5lbCB7XG4gICAgQGluY2x1ZGUgcHJpdmF0ZS5wcml2YXRlLXRoZW1lLW92ZXJyaWRhYmxlLWVsZXZhdGlvbigyLCAkY29uZmlnKTtcbiAgICBiYWNrZ3JvdW5kOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGJhY2tncm91bmQsIGNhcmQpO1xuICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIHRleHQpO1xuICB9XG5cbiAgLm1hdC1hY3Rpb24tcm93IHtcbiAgICBib3JkZXItdG9wLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIGRpdmlkZXIpO1xuICB9XG5cbiAgQGluY2x1ZGUgZXhwYW5zaW9uLW1peGlucy5wcml2YXRlLWV4cGFuc2lvbi1mb2N1cyB7XG4gICAgYmFja2dyb3VuZDogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLCBob3Zlcik7XG4gIH1cblxuICAvLyBEaXNhYmxlIHRoZSBob3ZlciBvbiB0b3VjaCBkZXZpY2VzIHNpbmNlIGl0IGNhbiBhcHBlYXIgbGlrZSBpdCBpcyBzdHVjay4gV2UgY2FuJ3QgdXNlXG4gIC8vIGBAbWVkaWEgKGhvdmVyKWAgYWJvdmUsIGJlY2F1c2UgdGhlIGRlc2t0b3Agc3VwcG9ydCBicm93c2VyIHN1cHBvcnQgaXNuJ3QgZ3JlYXQuXG4gIEBtZWRpYSAoaG92ZXI6IG5vbmUpIHtcbiAgICAubWF0LWV4cGFuc2lvbi1wYW5lbDpub3QoLm1hdC1leHBhbmRlZCk6bm90KFthcmlhLWRpc2FibGVkPSd0cnVlJ10pXG4gICAgICAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZDogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLCBjYXJkKTtcbiAgICB9XG4gIH1cblxuICAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXItdGl0bGUge1xuICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIHRleHQpO1xuICB9XG5cbiAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLWRlc2NyaXB0aW9uLFxuICAubWF0LWV4cGFuc2lvbi1pbmRpY2F0b3I6OmFmdGVyIHtcbiAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBzZWNvbmRhcnktdGV4dCk7XG4gIH1cblxuICAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbYXJpYS1kaXNhYmxlZD0ndHJ1ZSddIHtcbiAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBkaXNhYmxlZC1idXR0b24pO1xuXG4gICAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLXRpdGxlLFxuICAgIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci1kZXNjcmlwdGlvbiB7XG4gICAgICBjb2xvcjogaW5oZXJpdDtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHR5cG9ncmFwaHkoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0eXBvZ3JhcGh5LnByaXZhdGUtdHlwb2dyYXBoeS10by0yMDE0LWNvbmZpZyhcbiAgICAgIHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCRjb25maWctb3ItdGhlbWUpKTtcbiAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyIHtcbiAgICBmb250OiB7XG4gICAgICBmYW1pbHk6IHR5cG9ncmFwaHktdXRpbHMuZm9udC1mYW1pbHkoJGNvbmZpZywgc3ViaGVhZGluZy0xKTtcbiAgICAgIHNpemU6IHR5cG9ncmFwaHktdXRpbHMuZm9udC1zaXplKCRjb25maWcsIHN1YmhlYWRpbmctMSk7XG4gICAgICB3ZWlnaHQ6IHR5cG9ncmFwaHktdXRpbHMuZm9udC13ZWlnaHQoJGNvbmZpZywgc3ViaGVhZGluZy0xKTtcbiAgICB9XG4gIH1cblxuICAubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50IHtcbiAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5LXV0aWxzLnR5cG9ncmFwaHktbGV2ZWwoJGNvbmZpZywgYm9keS0xKTtcbiAgfVxufVxuXG5AbWl4aW4gZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRkZW5zaXR5LXNjYWxlOiB0aGVtaW5nLmdldC1kZW5zaXR5LWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJGV4cGFuZGVkLWhlaWdodDogY29tcGF0aWJpbGl0eS5wcml2YXRlLWRlbnNpdHktcHJvcC12YWx1ZShcbiAgICAgICAgZXhwYW5zaW9uLXZhcmlhYmxlcy4kaGVhZGVyLWRlbnNpdHktY29uZmlnLCAkZGVuc2l0eS1zY2FsZSwgZXhwYW5kZWQtaGVpZ2h0KTtcbiAgJGNvbGxhcHNlZC1oZWlnaHQ6IGNvbXBhdGliaWxpdHkucHJpdmF0ZS1kZW5zaXR5LXByb3AtdmFsdWUoXG4gICAgICBleHBhbnNpb24tdmFyaWFibGVzLiRoZWFkZXItZGVuc2l0eS1jb25maWcsICRkZW5zaXR5LXNjYWxlLCBjb2xsYXBzZWQtaGVpZ2h0KTtcblxuICBAaW5jbHVkZSBjb21wYXRpYmlsaXR5LnByaXZhdGUtZGVuc2l0eS1sZWdhY3ktY29tcGF0aWJpbGl0eSgpIHtcbiAgICAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXIge1xuICAgICAgaGVpZ2h0OiAkY29sbGFwc2VkLWhlaWdodDtcblxuICAgICAgJi5tYXQtZXhwYW5kZWQge1xuICAgICAgICBoZWlnaHQ6ICRleHBhbmRlZC1oZWlnaHQ7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiB0aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKSB7XG4gICR0aGVtZTogdGhlbWluZy5wcml2YXRlLWxlZ2FjeS1nZXQtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZyk7XG4gIEBpbmNsdWRlIHRoZW1pbmcucHJpdmF0ZS1jaGVjay1kdXBsaWNhdGUtdGhlbWUtc3R5bGVzKCR0aGVtZSwgJ21hdC1leHBhbnNpb24nKSB7XG4gICAgJGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJHRoZW1lKTtcbiAgICAkZGVuc2l0eTogdGhlbWluZy5nZXQtZGVuc2l0eS1jb25maWcoJHRoZW1lKTtcbiAgICAkdHlwb2dyYXBoeTogdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJHRoZW1lKTtcblxuICAgIEBpZiAkY29sb3IgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBjb2xvcigkY29sb3IpO1xuICAgIH1cbiAgICBAaWYgJGRlbnNpdHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBkZW5zaXR5KCRkZW5zaXR5KTtcbiAgICB9XG4gICAgQGlmICR0eXBvZ3JhcGh5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgdHlwb2dyYXBoeSgkdHlwb2dyYXBoeSk7XG4gICAgfVxuICB9XG59XG4iLCJAdXNlICdzYXNzOm1hcCc7XG5AdXNlICcuLi9jb3JlL3RoZW1pbmcvdGhlbWluZyc7XG5AdXNlICcuLi9jb3JlL3R5cG9ncmFwaHkvdHlwb2dyYXBoeSc7XG5AdXNlICcuLi9jb3JlL3R5cG9ncmFwaHkvdHlwb2dyYXBoeS11dGlscyc7XG5cbkB1c2UgJy4vZm9ybS1maWVsZC1maWxsLXRoZW1lLnNjc3MnO1xuQHVzZSAnLi9mb3JtLWZpZWxkLWxlZ2FjeS10aGVtZS5zY3NzJztcbkB1c2UgJy4vZm9ybS1maWVsZC1vdXRsaW5lLXRoZW1lLnNjc3MnO1xuQHVzZSAnLi9mb3JtLWZpZWxkLXN0YW5kYXJkLXRoZW1lLnNjc3MnO1xuXG4vLyBDb2xvciBzdHlsZXMgdGhhdCBhcHBseSB0byBhbGwgYXBwZWFyYW5jZXMgb2YgdGhlIGZvcm0tZmllbGQuXG5AbWl4aW4gY29sb3IoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRwcmltYXJ5OiBtYXAuZ2V0KCRjb25maWcsIHByaW1hcnkpO1xuICAkYWNjZW50OiBtYXAuZ2V0KCRjb25maWcsIGFjY2VudCk7XG4gICR3YXJuOiBtYXAuZ2V0KCRjb25maWcsIHdhcm4pO1xuICAkYmFja2dyb3VuZDogbWFwLmdldCgkY29uZmlnLCBiYWNrZ3JvdW5kKTtcbiAgJGZvcmVncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgZm9yZWdyb3VuZCk7XG4gICRpcy1kYXJrLXRoZW1lOiBtYXAuZ2V0KCRjb25maWcsIGlzLWRhcmspO1xuXG4gIC8vIExhYmVsIGNvbG9ycy4gUmVxdWlyZWQgaXMgdXNlZCBmb3IgdGhlIGAqYCBzdGFyIHNob3duIGluIHRoZSBsYWJlbC5cbiAgJGxhYmVsLWNvbG9yOlxuICAgIHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgc2Vjb25kYXJ5LXRleHQsIGlmKCRpcy1kYXJrLXRoZW1lLCAwLjcsIDAuNikpO1xuICAkZm9jdXNlZC1sYWJlbC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRwcmltYXJ5LCB0ZXh0KTtcbiAgJHJlcXVpcmVkLWxhYmVsLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGFjY2VudCwgdGV4dCk7XG5cbiAgLy8gVW5kZXJsaW5lIGNvbG9ycy5cbiAgJHVuZGVybGluZS1jb2xvci1iYXNlOlxuICAgIHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgZGl2aWRlciwgaWYoJGlzLWRhcmstdGhlbWUsIDEsIDAuODcpKTtcbiAgJHVuZGVybGluZS1jb2xvci1hY2NlbnQ6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYWNjZW50LCB0ZXh0KTtcbiAgJHVuZGVybGluZS1jb2xvci13YXJuOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHdhcm4sIHRleHQpO1xuICAkdW5kZXJsaW5lLWZvY3VzZWQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkcHJpbWFyeSwgdGV4dCk7XG5cbiAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsIHtcbiAgICBjb2xvcjogJGxhYmVsLWNvbG9yO1xuICB9XG5cbiAgLm1hdC1oaW50IHtcbiAgICBjb2xvcjogJGxhYmVsLWNvbG9yO1xuICB9XG5cbiAgLm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkIC5tYXQtZm9ybS1maWVsZC1sYWJlbCB7XG4gICAgY29sb3I6ICRmb2N1c2VkLWxhYmVsLWNvbG9yO1xuXG4gICAgJi5tYXQtYWNjZW50IHtcbiAgICAgIGNvbG9yOiAkdW5kZXJsaW5lLWNvbG9yLWFjY2VudDtcbiAgICB9XG5cbiAgICAmLm1hdC13YXJuIHtcbiAgICAgIGNvbG9yOiAkdW5kZXJsaW5lLWNvbG9yLXdhcm47XG4gICAgfVxuICB9XG5cbiAgLm1hdC1mb2N1c2VkIC5tYXQtZm9ybS1maWVsZC1yZXF1aXJlZC1tYXJrZXIge1xuICAgIGNvbG9yOiAkcmVxdWlyZWQtbGFiZWwtY29sb3I7XG4gIH1cblxuICAubWF0LWZvcm0tZmllbGQtcmlwcGxlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdW5kZXJsaW5lLWNvbG9yLWJhc2U7XG4gIH1cblxuICAubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWQge1xuICAgIC5tYXQtZm9ybS1maWVsZC1yaXBwbGUge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHVuZGVybGluZS1mb2N1c2VkLWNvbG9yO1xuXG4gICAgICAmLm1hdC1hY2NlbnQge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdW5kZXJsaW5lLWNvbG9yLWFjY2VudDtcbiAgICAgIH1cblxuICAgICAgJi5tYXQtd2FybiB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR1bmRlcmxpbmUtY29sb3Itd2FybjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdC5tYXQtZm9jdXNlZDpub3QoLm1hdC1mb3JtLWZpZWxkLWludmFsaWQpIHtcbiAgICAubWF0LWZvcm0tZmllbGQtaW5maXg6OmFmdGVyIHtcbiAgICAgIGNvbG9yOiAkdW5kZXJsaW5lLWZvY3VzZWQtY29sb3I7XG4gICAgfVxuXG4gICAgJi5tYXQtYWNjZW50IC5tYXQtZm9ybS1maWVsZC1pbmZpeDo6YWZ0ZXIge1xuICAgICAgY29sb3I6ICR1bmRlcmxpbmUtY29sb3ItYWNjZW50O1xuICAgIH1cblxuICAgICYubWF0LXdhcm4gLm1hdC1mb3JtLWZpZWxkLWluZml4OjphZnRlciB7XG4gICAgICBjb2xvcjogJHVuZGVybGluZS1jb2xvci13YXJuO1xuICAgIH1cbiAgfVxuXG4gIC8vIFN0eWxpbmcgZm9yIHRoZSBlcnJvciBzdGF0ZSBvZiB0aGUgZm9ybSBmaWVsZC4gTm90ZSB0aGF0IHdoaWxlIHRoZSBzYW1lIGNhbiBiZVxuICAvLyBhY2hpZXZlZCB3aXRoIHRoZSBuZy0qIGNsYXNzZXMsIHdlIHVzZSB0aGlzIGFwcHJvYWNoIGluIG9yZGVyIHRvIGVuc3VyZSB0aGF0IHRoZSBzYW1lXG4gIC8vIGxvZ2ljIGlzIHVzZWQgdG8gc3R5bGUgdGhlIGVycm9yIHN0YXRlIGFuZCB0byBzaG93IHRoZSBlcnJvciBtZXNzYWdlcy5cbiAgLm1hdC1mb3JtLWZpZWxkLm1hdC1mb3JtLWZpZWxkLWludmFsaWQge1xuICAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbCB7XG4gICAgICBjb2xvcjogJHVuZGVybGluZS1jb2xvci13YXJuO1xuXG4gICAgICAmLm1hdC1hY2NlbnQsXG4gICAgICAubWF0LWZvcm0tZmllbGQtcmVxdWlyZWQtbWFya2VyIHtcbiAgICAgICAgY29sb3I6ICR1bmRlcmxpbmUtY29sb3Itd2FybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAubWF0LWZvcm0tZmllbGQtcmlwcGxlLFxuICAgIC5tYXQtZm9ybS1maWVsZC1yaXBwbGUubWF0LWFjY2VudCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdW5kZXJsaW5lLWNvbG9yLXdhcm47XG4gICAgfVxuICB9XG5cbiAgLm1hdC1lcnJvciB7XG4gICAgY29sb3I6ICR1bmRlcmxpbmUtY29sb3Itd2FybjtcbiAgfVxuXG4gIEBpbmNsdWRlIGZvcm0tZmllbGQtbGVnYWN5LXRoZW1lLmxlZ2FjeS1jb2xvcigkY29uZmlnKTtcbiAgQGluY2x1ZGUgZm9ybS1maWVsZC1zdGFuZGFyZC10aGVtZS5zdGFuZGFyZC1jb2xvcigkY29uZmlnKTtcbiAgQGluY2x1ZGUgZm9ybS1maWVsZC1maWxsLXRoZW1lLmZpbGwtY29sb3IoJGNvbmZpZyk7XG4gIEBpbmNsdWRlIGZvcm0tZmllbGQtb3V0bGluZS10aGVtZS5vdXRsaW5lLWNvbG9yKCRjb25maWcpO1xufVxuXG4vLyBVc2VkIHRvIG1ha2UgaW5zdGFuY2VzIG9mIHRoZSBfbWF0LWZvcm0tZmllbGQtbGFiZWwtZmxvYXRpbmcgbWl4aW4gbmVnbGlnaWJseSBkaWZmZXJlbnQsXG4vLyBhbmQgcHJldmVudCBHb29nbGUncyBDU1MgT3B0aW1pemVyIGZyb20gY29sbGFwc2luZyB0aGUgZGVjbGFyYXRpb25zLiBUaGlzIGlzIG5lZWRlZCBiZWNhdXNlIHNvbWVcbi8vIG9mIHRoZSBzZWxlY3RvcnMgY29udGFpbiBwc2V1ZG8tY2xhc3NlcyBub3QgcmVjb2duaXplZCBpbiBhbGwgYnJvd3NlcnMuIElmIGEgYnJvd3NlciBlbmNvdW50ZXJzXG4vLyBhbiB1bmtub3duIHBzZXVkby1jbGFzcyBpdCB3aWxsIGRpc2NhcmQgdGhlIGVudGlyZSBydWxlIHNldC5cbiRkZWR1cGU6IDA7XG5cbi8vIEFwcGxpZXMgYSBmbG9hdGluZyBsYWJlbCBhYm92ZSB0aGUgZm9ybSBmaWVsZCBjb250cm9sIGl0c2VsZi5cbkBtaXhpbiBfbGFiZWwtZmxvYXRpbmcoJGZvbnQtc2NhbGUsICRpbmZpeC1wYWRkaW5nLCAkaW5maXgtbWFyZ2luLXRvcCkge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLSRpbmZpeC1tYXJnaW4tdG9wIC0gJGluZml4LXBhZGRpbmcgKyAkZGVkdXBlKVxuICAgICAgICAgICAgIHNjYWxlKCRmb250LXNjYWxlKTtcbiAgd2lkdGg6IDEwMCUgLyAkZm9udC1zY2FsZSArICRkZWR1cGU7XG5cbiAgJGRlZHVwZTogJGRlZHVwZSArIDAuMDAwMDEgIWdsb2JhbDtcbn1cblxuQG1peGluIHR5cG9ncmFwaHkoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0eXBvZ3JhcGh5LnByaXZhdGUtdHlwb2dyYXBoeS10by0yMDE0LWNvbmZpZyhcbiAgICAgIHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCRjb25maWctb3ItdGhlbWUpKTtcbiAgLy8gVGhlIHVuaXQtbGVzcyBsaW5lLWhlaWdodCBmcm9tIHRoZSBmb250IGNvbmZpZy5cbiAgJGxpbmUtaGVpZ2h0OiB0eXBvZ3JhcGh5LXV0aWxzLmxpbmUtaGVpZ2h0KCRjb25maWcsIGlucHV0KTtcblxuICAvLyBUaGUgYW1vdW50IHRvIHNjYWxlIHRoZSBmb250IGZvciB0aGUgZmxvYXRpbmcgbGFiZWwgYW5kIHN1YnNjcmlwdC5cbiAgJHN1YnNjcmlwdC1mb250LXNjYWxlOiAwLjc1O1xuICAvLyBUaGUgYW1vdW50IHRvIHNjYWxlIHRoZSBmb250IGZvciB0aGUgcHJlZml4IGFuZCBzdWZmaXggaWNvbnMuXG4gICRwcmVmaXgtc3VmZml4LWljb24tZm9udC1zY2FsZTogMS41O1xuXG4gIC8vIFRoZSBwYWRkaW5nIG9uIHRoZSBpbmZpeC4gTW9ja3Mgc2hvdyBoYWxmIG9mIHRoZSB0ZXh0IHNpemUuXG4gICRpbmZpeC1wYWRkaW5nOiAwLjVlbTtcbiAgLy8gVGhlIG1hcmdpbiBhcHBsaWVkIHRvIHRoZSBmb3JtLWZpZWxkLWluZml4IHRvIHJlc2VydmUgc3BhY2UgZm9yIHRoZSBmbG9hdGluZyBsYWJlbC5cbiAgJGluZml4LW1hcmdpbi10b3A6IDFlbSAqICRsaW5lLWhlaWdodCAqICRzdWJzY3JpcHQtZm9udC1zY2FsZTtcbiAgLy8gRm9udCBzaXplIHRvIHVzZSBmb3IgdGhlIGxhYmVsIGFuZCBzdWJzY3JpcHQgdGV4dC5cbiAgJHN1YnNjcmlwdC1mb250LXNpemU6ICRzdWJzY3JpcHQtZm9udC1zY2FsZSAqIDEwMCU7XG4gIC8vIEZvbnQgc2l6ZSB0byB1c2UgZm9yIHRoZSBmb3IgdGhlIHByZWZpeCBhbmQgc3VmZml4IGljb25zLlxuICAkcHJlZml4LXN1ZmZpeC1pY29uLWZvbnQtc2l6ZTogJHByZWZpeC1zdWZmaXgtaWNvbi1mb250LXNjYWxlICogMTAwJTtcbiAgLy8gVGhlIHNwYWNlIGJldHdlZW4gdGhlIGJvdHRvbSBvZiB0aGUgLm1hdC1mb3JtLWZpZWxkLWZsZXggYXJlYSBhbmQgdGhlIHN1YnNjcmlwdCB3cmFwcGVyLlxuICAvLyBNb2NrcyBzaG93IGhhbGYgb2YgdGhlIHRleHQgc2l6ZSwgYnV0IHRoaXMgbWFyZ2luIGlzIGFwcGxpZWQgdG8gYW4gZWxlbWVudCB3aXRoIHRoZSBzdWJzY3JpcHRcbiAgLy8gdGV4dCBmb250IHNpemUsIHNvIHdlIG5lZWQgdG8gZGl2aWRlIGJ5IHRoZSBzY2FsZSBmYWN0b3IgdG8gbWFrZSBpdCBoYWxmIG9mIHRoZSBvcmlnaW5hbCB0ZXh0XG4gIC8vIHNpemUuXG4gICRzdWJzY3JpcHQtbWFyZ2luLXRvcDogMC41ZW0gLyAkc3Vic2NyaXB0LWZvbnQtc2NhbGU7XG4gIC8vIFRoZSBwYWRkaW5nIGFwcGxpZWQgdG8gdGhlIGZvcm0tZmllbGQtd3JhcHBlciB0byByZXNlcnZlIHNwYWNlIGZvciB0aGUgc3Vic2NyaXB0LCBzaW5jZSBpdCdzXG4gIC8vIGFic29sdXRlbHkgcG9zaXRpb25lZC4gVGhpcyBpcyBhIGNvbWJpbmF0aW9uIG9mIHRoZSBzdWJzY3JpcHQncyBtYXJnaW4gYW5kIGxpbmUtaGVpZ2h0LCBidXQgd2VcbiAgLy8gbmVlZCB0byBtdWx0aXBseSBieSB0aGUgc3Vic2NyaXB0IGZvbnQgc2NhbGUgZmFjdG9yIHNpbmNlIHRoZSB3cmFwcGVyIGhhcyBhIGxhcmdlciBmb250IHNpemUuXG4gICR3cmFwcGVyLXBhZGRpbmctYm90dG9tOiAoJHN1YnNjcmlwdC1tYXJnaW4tdG9wICsgJGxpbmUtaGVpZ2h0KSAqICRzdWJzY3JpcHQtZm9udC1zY2FsZTtcblxuICAubWF0LWZvcm0tZmllbGQge1xuICAgIEBpbmNsdWRlIHR5cG9ncmFwaHktdXRpbHMudHlwb2dyYXBoeS1sZXZlbCgkY29uZmlnLCBpbnB1dCk7XG4gIH1cblxuICAubWF0LWZvcm0tZmllbGQtd3JhcHBlciB7XG4gICAgcGFkZGluZy1ib3R0b206ICR3cmFwcGVyLXBhZGRpbmctYm90dG9tO1xuICB9XG5cbiAgLm1hdC1mb3JtLWZpZWxkLXByZWZpeCxcbiAgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeCB7XG4gICAgLy8gQWxsb3cgaWNvbnMgaW4gYSBwcmVmaXggb3Igc3VmZml4IHRvIGFkYXB0IHRvIHRoZSBjb3JyZWN0IHNpemUuXG4gICAgLm1hdC1pY29uIHtcbiAgICAgIGZvbnQtc2l6ZTogJHByZWZpeC1zdWZmaXgtaWNvbi1mb250LXNpemU7XG4gICAgICBsaW5lLWhlaWdodDogJGxpbmUtaGVpZ2h0O1xuICAgIH1cblxuICAgIC8vIEFsbG93IGljb24gYnV0dG9ucyBpbiBhIHByZWZpeCBvciBzdWZmaXggdG8gYWRhcHQgdG8gdGhlIGNvcnJlY3Qgc2l6ZS5cbiAgICAubWF0LWljb24tYnV0dG9uIHtcbiAgICAgIGhlaWdodDogJHByZWZpeC1zdWZmaXgtaWNvbi1mb250LXNjYWxlICogMWVtO1xuICAgICAgd2lkdGg6ICRwcmVmaXgtc3VmZml4LWljb24tZm9udC1zY2FsZSAqIDFlbTtcblxuICAgICAgLm1hdC1pY29uIHtcbiAgICAgICAgaGVpZ2h0OiAkbGluZS1oZWlnaHQgKiAxZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAkbGluZS1oZWlnaHQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLm1hdC1mb3JtLWZpZWxkLWluZml4IHtcbiAgICBwYWRkaW5nOiAkaW5maXgtcGFkZGluZyAwO1xuICAgIC8vIFRocm93cyBvZmYgdGhlIGJhc2VsaW5lIGlmIHdlIGRvIGl0IGFzIGEgcmVhbCBtYXJnaW4sIHNvIHdlIGRvIGl0IGFzIGEgYm9yZGVyIGluc3RlYWQuXG4gICAgYm9yZGVyLXRvcDogJGluZml4LW1hcmdpbi10b3Agc29saWQgdHJhbnNwYXJlbnQ7XG4gIH1cblxuICAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IHtcbiAgICAmLm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdCAubWF0LWZvcm0tZmllbGQtbGFiZWwsXG4gICAgLm1hdC1pbnB1dC1zZXJ2ZXI6Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWwge1xuICAgICAgQGluY2x1ZGUgX2xhYmVsLWZsb2F0aW5nKFxuICAgICAgICAgICAgICAkc3Vic2NyaXB0LWZvbnQtc2NhbGUsICRpbmZpeC1wYWRkaW5nLCAkaW5maXgtbWFyZ2luLXRvcCk7XG4gICAgfVxuXG4gICAgLy8gU2VydmVyLXNpZGUgcmVuZGVyZWQgbWF0SW5wdXQgd2l0aCBhIGxhYmVsIGF0dHJpYnV0ZSBidXQgbGFiZWwgbm90IHNob3duXG4gICAgLy8gKHVzZWQgYXMgYSBwdXJlIENTUyBzdGFuZC1pbiBmb3IgbWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0KS5cbiAgICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlclxuICAgICAgICAubWF0LWZvcm0tZmllbGQtbGFiZWwge1xuICAgICAgQGluY2x1ZGUgX2xhYmVsLWZsb2F0aW5nKFxuICAgICAgICAgICAgICAkc3Vic2NyaXB0LWZvbnQtc2NhbGUsICRpbmZpeC1wYWRkaW5nLCAkaW5maXgtbWFyZ2luLXRvcCk7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIge1xuICAgIHRvcDogLSRpbmZpeC1tYXJnaW4tdG9wO1xuICAgIHBhZGRpbmctdG9wOiAkaW5maXgtbWFyZ2luLXRvcDtcbiAgfVxuXG4gIC5tYXQtZm9ybS1maWVsZC1sYWJlbCB7XG4gICAgdG9wOiAkaW5maXgtbWFyZ2luLXRvcCArICRpbmZpeC1wYWRkaW5nO1xuICB9XG5cbiAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZSB7XG4gICAgLy8gV2Ugd2FudCB0aGUgdW5kZXJsaW5lIHRvIHN0YXJ0IGF0IHRoZSBlbmQgb2YgdGhlIGNvbnRlbnQgYm94LCBub3QgdGhlIHBhZGRpbmcgYm94LFxuICAgIC8vIHNvIHdlIG1vdmUgaXQgdXAgYnkgdGhlIHBhZGRpbmcgYW1vdW50LlxuICAgIGJvdHRvbTogJHdyYXBwZXItcGFkZGluZy1ib3R0b207XG4gIH1cblxuICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXIge1xuICAgIGZvbnQtc2l6ZTogJHN1YnNjcmlwdC1mb250LXNpemU7XG4gICAgbWFyZ2luLXRvcDogJHN1YnNjcmlwdC1tYXJnaW4tdG9wO1xuXG4gICAgLy8gV2Ugd2FudCB0aGUgc3Vic2NyaXB0IHRvIHN0YXJ0IGF0IHRoZSBlbmQgb2YgdGhlIGNvbnRlbnQgYm94LCBub3QgdGhlIHBhZGRpbmcgYm94LFxuICAgIC8vIHNvIHdlIG1vdmUgaXQgdXAgYnkgdGhlIHBhZGRpbmcgYW1vdW50IChhZGp1c3RlZCBmb3IgdGhlIHNtYWxsZXIgZm9udCBzaXplKTtcbiAgICB0b3A6IGNhbGMoMTAwJSAtICN7JHdyYXBwZXItcGFkZGluZy1ib3R0b20gLyAkc3Vic2NyaXB0LWZvbnQtc2NhbGV9KTtcbiAgfVxuXG4gIEBpbmNsdWRlIGZvcm0tZmllbGQtbGVnYWN5LXRoZW1lLmxlZ2FjeS10eXBvZ3JhcGh5KCRjb25maWcpO1xuICBAaW5jbHVkZSBmb3JtLWZpZWxkLXN0YW5kYXJkLXRoZW1lLnN0YW5kYXJkLXR5cG9ncmFwaHkoJGNvbmZpZyk7XG4gIEBpbmNsdWRlIGZvcm0tZmllbGQtZmlsbC10aGVtZS5maWxsLXR5cG9ncmFwaHkoJGNvbmZpZyk7XG4gIEBpbmNsdWRlIGZvcm0tZmllbGQtb3V0bGluZS10aGVtZS5vdXRsaW5lLXR5cG9ncmFwaHkoJGNvbmZpZyk7XG59XG5cbkBtaXhpbiBkZW5zaXR5KCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGRlbnNpdHktc2NhbGU6IHRoZW1pbmcuZ2V0LWRlbnNpdHktY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICBAaW5jbHVkZSBmb3JtLWZpZWxkLWxlZ2FjeS10aGVtZS5wcml2YXRlLWZvcm0tZmllbGQtbGVnYWN5LWRlbnNpdHkoJGRlbnNpdHktc2NhbGUpO1xuICBAaW5jbHVkZSBmb3JtLWZpZWxkLXN0YW5kYXJkLXRoZW1lLnByaXZhdGUtZm9ybS1maWVsZC1zdGFuZGFyZC1kZW5zaXR5KCRkZW5zaXR5LXNjYWxlKTtcbiAgQGluY2x1ZGUgZm9ybS1maWVsZC1maWxsLXRoZW1lLnByaXZhdGUtZm9ybS1maWVsZC1maWxsLWRlbnNpdHkoJGRlbnNpdHktc2NhbGUpO1xuICBAaW5jbHVkZSBmb3JtLWZpZWxkLW91dGxpbmUtdGhlbWUucHJpdmF0ZS1mb3JtLWZpZWxkLW91dGxpbmUtZGVuc2l0eSgkZGVuc2l0eS1zY2FsZSk7XG59XG5cbkBtaXhpbiB0aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKSB7XG4gICR0aGVtZTogdGhlbWluZy5wcml2YXRlLWxlZ2FjeS1nZXQtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZyk7XG4gIEBpbmNsdWRlIHRoZW1pbmcucHJpdmF0ZS1jaGVjay1kdXBsaWNhdGUtdGhlbWUtc3R5bGVzKCR0aGVtZSwgJ21hdC1mb3JtLWZpZWxkJykge1xuICAgICRjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgJGRlbnNpdHk6IHRoZW1pbmcuZ2V0LWRlbnNpdHktY29uZmlnKCR0aGVtZSk7XG4gICAgJHR5cG9ncmFwaHk6IHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCR0aGVtZSk7XG5cbiAgICBAaWYgJGNvbG9yICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgZGVuc2l0eSgkZGVuc2l0eSk7XG4gICAgfVxuICAgIEBpZiAkdHlwb2dyYXBoeSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIHR5cG9ncmFwaHkoJHR5cG9ncmFwaHkpO1xuICAgIH1cbiAgfVxufVxuIiwiQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnLi4vY29yZS90aGVtaW5nL3RoZW1pbmcnO1xuQHVzZSAnLi4vY29yZS9zdHlsZS9mb3JtLWNvbW1vbic7XG5AdXNlICcuLi9jb3JlL3R5cG9ncmFwaHkvdHlwb2dyYXBoeSc7XG5AdXNlICcuLi9jb3JlL3R5cG9ncmFwaHkvdHlwb2dyYXBoeS11dGlscyc7XG5cblxuLy8gVGhlbWUgc3R5bGVzIHRoYXQgb25seSBhcHBseSB0byB0aGUgbGVnYWN5IGFwcGVhcmFuY2Ugb2YgdGhlIGZvcm0tZmllbGQuXG5cbkBtaXhpbiBsZWdhY3ktY29sb3IoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRmb3JlZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGZvcmVncm91bmQpO1xuICAkaXMtZGFyay10aGVtZTogbWFwLmdldCgkY29uZmlnLCBpcy1kYXJrKTtcblxuICAkbGFiZWwtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgc2Vjb25kYXJ5LXRleHQpO1xuICAkdW5kZXJsaW5lLWNvbG9yOlxuICAgIHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgZGl2aWRlciwgaWYoJGlzLWRhcmstdGhlbWUsIDAuNywgMC40MikpO1xuXG4gIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSB7XG4gICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsIHtcbiAgICAgIGNvbG9yOiAkbGFiZWwtY29sb3I7XG4gICAgfVxuXG4gICAgLm1hdC1oaW50IHtcbiAgICAgIGNvbG9yOiAkbGFiZWwtY29sb3I7XG4gICAgfVxuXG4gICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZSB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdW5kZXJsaW5lLWNvbG9yO1xuICAgIH1cblxuICAgICYubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZSB7XG4gICAgICBAaW5jbHVkZSBmb3JtLWNvbW1vbi5wcml2YXRlLWNvbnRyb2wtZGlzYWJsZWQtdW5kZXJsaW5lKCR1bmRlcmxpbmUtY29sb3IpO1xuICAgIH1cbiAgfVxufVxuXG4vLyBVc2VkIHRvIG1ha2UgaW5zdGFuY2VzIG9mIHRoZSBfbWF0LWZvcm0tZmllbGQtbGFiZWwtZmxvYXRpbmcgbWl4aW4gbmVnbGlnaWJseSBkaWZmZXJlbnQsXG4vLyBhbmQgcHJldmVudCBHb29nbGUncyBDU1MgT3B0aW1pemVyIGZyb20gY29sbGFwc2luZyB0aGUgZGVjbGFyYXRpb25zLiBUaGlzIGlzIG5lZWRlZCBiZWNhdXNlIHNvbWVcbi8vIG9mIHRoZSBzZWxlY3RvcnMgY29udGFpbiBwc2V1ZG8tY2xhc3NlcyBub3QgcmVjb2duaXplZCBpbiBhbGwgYnJvd3NlcnMuIElmIGEgYnJvd3NlciBlbmNvdW50ZXJzXG4vLyBhbiB1bmtub3duIHBzZXVkby1jbGFzcyBpdCB3aWxsIGRpc2NhcmQgdGhlIGVudGlyZSBydWxlIHNldC5cbiRsZWdhY3ktZGVkdXBlOiAwO1xuXG4vLyBBcHBsaWVzIGEgZmxvYXRpbmcgbGFiZWwgYWJvdmUgdGhlIGZvcm0gZmllbGQgY29udHJvbCBpdHNlbGYuXG5AbWl4aW4gX2xhYmVsLWZsb2F0aW5nKCRmb250LXNjYWxlLCAkaW5maXgtcGFkZGluZywgJGluZml4LW1hcmdpbi10b3ApIHtcbiAgLy8gV2UgdXNlIHBlcnNwZWN0aXZlIHRvIGZpeCB0aGUgdGV4dCBibHVycmluZXNzIGFzIGRlc2NyaWJlZCBoZXJlOlxuICAvLyBodHRwOi8vd3d3LnVzZXJhZ2VudG1hbi5jb20vYmxvZy8yMDE0LzA1LzA0L2ZpeGluZy10eXBvZ3JhcGh5LWluc2lkZS1vZi0yLWQtY3NzLXRyYW5zZm9ybXMvXG4gIC8vIFRoaXMgcmVzdWx0cyBpbiBhIHNtYWxsIGppdHRlciBhZnRlciB0aGUgbGFiZWwgZmxvYXRzIG9uIEZpcmVmb3gsIHdoaWNoIHRoZVxuICAvLyB0cmFuc2xhdGVaIGZpeGVzLlxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLSRpbmZpeC1tYXJnaW4tdG9wIC0gJGluZml4LXBhZGRpbmcpIHNjYWxlKCRmb250LXNjYWxlKSBwZXJzcGVjdGl2ZSgxMDBweClcbiAgdHJhbnNsYXRlWigwLjAwMXB4ICsgJGxlZ2FjeS1kZWR1cGUpO1xuICAvLyBUaGUgdHJpY2tzIGFib3ZlIHVzZWQgdG8gc21vb3RoIG91dCB0aGUgYW5pbWF0aW9uIG9uIGNocm9tZSBhbmQgZmlyZWZveCBhY3R1YWxseSBtYWtlIHRoaW5nc1xuICAvLyB3b3JzZSBvbiBJRSwgc28gd2UgZG9uJ3QgaW5jbHVkZSB0aGVtIGluIHRoZSBJRSB2ZXJzaW9uLlxuICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0kaW5maXgtbWFyZ2luLXRvcCAtICRpbmZpeC1wYWRkaW5nICsgJGxlZ2FjeS1kZWR1cGUpXG4gICAgICAgICAgICAgICAgICBzY2FsZSgkZm9udC1zY2FsZSk7XG5cbiAgd2lkdGg6IDEwMCUgLyAkZm9udC1zY2FsZSArICRsZWdhY3ktZGVkdXBlO1xuXG4gICRsZWdhY3ktZGVkdXBlOiAkbGVnYWN5LWRlZHVwZSArIDAuMDAwMDEgIWdsb2JhbDtcbn1cblxuLy8gU2FtZSBhcyBtaXhpbiBhYm92ZSwgYnV0IG9taXRzIHRoZSB0cmFuc2xhdGVaIGZvciBwcmludGluZyBwdXJwb3Nlcy5cbkBtaXhpbiBfbGFiZWwtZmxvYXRpbmctcHJpbnQoJGZvbnQtc2NhbGUsICRpbmZpeC1wYWRkaW5nLCAkaW5maXgtbWFyZ2luLXRvcCkge1xuICAvLyBUaGlzIHJlc3VsdHMgaW4gYSBzbWFsbCBqaXR0ZXIgYWZ0ZXIgdGhlIGxhYmVsIGZsb2F0cyBvbiBGaXJlZm94LCB3aGljaCB0aGVcbiAgLy8gdHJhbnNsYXRlWiBmaXhlcy5cbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0kaW5maXgtbWFyZ2luLXRvcCAtICRpbmZpeC1wYWRkaW5nICsgJGxlZ2FjeS1kZWR1cGUpXG4gICAgICAgICAgICAgICAgICBzY2FsZSgkZm9udC1zY2FsZSk7XG4gIC8vIFRoZSB0cmlja3MgYWJvdmUgdXNlZCB0byBzbW9vdGggb3V0IHRoZSBhbmltYXRpb24gb24gY2hyb21lIGFuZCBmaXJlZm94IGFjdHVhbGx5IG1ha2UgdGhpbmdzXG4gIC8vIHdvcnNlIG9uIElFLCBzbyB3ZSBkb24ndCBpbmNsdWRlIHRoZW0gaW4gdGhlIElFIHZlcnNpb24uXG4gICRsZWdhY3ktZGVkdXBlOiAkbGVnYWN5LWRlZHVwZSArIDAuMDAwMDEgIWdsb2JhbDtcbn1cblxuQG1peGluIGxlZ2FjeS10eXBvZ3JhcGh5KCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdHlwb2dyYXBoeS5wcml2YXRlLXR5cG9ncmFwaHktdG8tMjAxNC1jb25maWcoXG4gICAgICB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKSk7XG4gIC8vIFRoZSB1bml0LWxlc3MgbGluZS1oZWlnaHQgZnJvbSB0aGUgZm9udCBjb25maWcuXG4gICRsaW5lLWhlaWdodDogdHlwb2dyYXBoeS11dGlscy5saW5lLWhlaWdodCgkY29uZmlnLCBpbnB1dCk7XG4gIC8vIFRoZSBhbW91bnQgdG8gc2NhbGUgdGhlIGZvbnQgZm9yIHRoZSBmbG9hdGluZyBsYWJlbCBhbmQgc3Vic2NyaXB0LlxuICAkc3Vic2NyaXB0LWZvbnQtc2NhbGU6IDAuNzU7XG4gIC8vIFRoZSBhbW91bnQgb2Ygc3BhY2UgYmV0d2VlbiB0aGUgdG9wIG9mIHRoZSBsaW5lIGFuZCB0aGUgdG9wIG9mIHRoZSBhY3R1YWwgdGV4dFxuICAvLyAoYXMgYSBmcmFjdGlvbiBvZiB0aGUgZm9udC1zaXplKS5cbiAgJGxpbmUtc3BhY2luZzogKCRsaW5lLWhlaWdodCAtIDEpIC8gMjtcbiAgLy8gVGhlIHBhZGRpbmcgb24gdGhlIGluZml4LiBNb2NrcyBzaG93IGhhbGYgb2YgdGhlIHRleHQgc2l6ZSwgYnV0IHNlZW0gdG8gbWVhc3VyZSBmcm9tIHRoZSBlZGdlXG4gIC8vIG9mIHRoZSB0ZXh0IGl0c2VsZiwgbm90IHRoZSBlZGdlIG9mIHRoZSBsaW5lOyB0aGVyZWZvcmUgd2Ugc3VidHJhY3Qgb2ZmIHRoZSBsaW5lIHNwYWNpbmcuXG4gICRpbmZpeC1wYWRkaW5nOiAwLjVlbSAtICRsaW5lLXNwYWNpbmc7XG4gIC8vIFRoZSBtYXJnaW4gYXBwbGllZCB0byB0aGUgZm9ybS1maWVsZC1pbmZpeCB0byByZXNlcnZlIHNwYWNlIGZvciB0aGUgZmxvYXRpbmcgbGFiZWwuXG4gICRpbmZpeC1tYXJnaW4tdG9wOiAxZW0gKiAkbGluZS1oZWlnaHQgKiAkc3Vic2NyaXB0LWZvbnQtc2NhbGU7XG4gIC8vIFRoZSBzcGFjZSBiZXR3ZWVuIHRoZSBib3R0b20gb2YgdGhlIC5tYXQtZm9ybS1maWVsZC1mbGV4IGFyZWEgYW5kIHRoZSBzdWJzY3JpcHQgd3JhcHBlci5cbiAgLy8gTW9ja3Mgc2hvdyBoYWxmIG9mIHRoZSB0ZXh0IHNpemUsIGJ1dCB0aGlzIG1hcmdpbiBpcyBhcHBsaWVkIHRvIGFuIGVsZW1lbnQgd2l0aCB0aGUgc3Vic2NyaXB0XG4gIC8vIHRleHQgZm9udCBzaXplLCBzbyB3ZSBuZWVkIHRvIGRpdmlkZSBieSB0aGUgc2NhbGUgZmFjdG9yIHRvIG1ha2UgaXQgaGFsZiBvZiB0aGUgb3JpZ2luYWwgdGV4dFxuICAvLyBzaXplLiBXZSBhZ2FpbiBuZWVkIHRvIHN1YnRyYWN0IG9mZiB0aGUgbGluZSBzcGFjaW5nIHNpbmNlIHRoZSBtb2NrcyBtZWFzdXJlIHRvIHRoZSBlZGdlIG9mIHRoZVxuICAvLyB0ZXh0LCBub3QgdGhlICBlZGdlIG9mIHRoZSBsaW5lLlxuICAkc3Vic2NyaXB0LW1hcmdpbi10b3A6IDAuNWVtIC8gJHN1YnNjcmlwdC1mb250LXNjYWxlIC0gKCRsaW5lLXNwYWNpbmcgKiAyKTtcbiAgLy8gVGhlIHBhZGRpbmcgYXBwbGllZCB0byB0aGUgZm9ybS1maWVsZC13cmFwcGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIHRoZSBzdWJzY3JpcHQsIHNpbmNlIGl0J3NcbiAgLy8gYWJzb2x1dGVseSBwb3NpdGlvbmVkLiBUaGlzIGlzIGEgY29tYmluYXRpb24gb2YgdGhlIHN1YnNjcmlwdCdzIG1hcmdpbiBhbmQgbGluZS1oZWlnaHQsIGJ1dCB3ZVxuICAvLyBuZWVkIHRvIG11bHRpcGx5IGJ5IHRoZSBzdWJzY3JpcHQgZm9udCBzY2FsZSBmYWN0b3Igc2luY2UgdGhlIHdyYXBwZXIgaGFzIGEgbGFyZ2VyIGZvbnQgc2l6ZS5cbiAgJHdyYXBwZXItcGFkZGluZy1ib3R0b206ICgkc3Vic2NyaXB0LW1hcmdpbi10b3AgKyAkbGluZS1oZWlnaHQpICogJHN1YnNjcmlwdC1mb250LXNjYWxlO1xuXG4gIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSB7XG4gICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXIge1xuICAgICAgcGFkZGluZy1ib3R0b206ICR3cmFwcGVyLXBhZGRpbmctYm90dG9tO1xuICAgIH1cblxuICAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeCB7XG4gICAgICBwYWRkaW5nOiAkaW5maXgtcGFkZGluZyAwO1xuICAgIH1cblxuICAgICYubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IHtcbiAgICAgICYubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0IC5tYXQtZm9ybS1maWVsZC1sYWJlbCxcbiAgICAgIC5tYXQtaW5wdXQtc2VydmVyOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVsIHtcbiAgICAgICAgQGluY2x1ZGUgX2xhYmVsLWZsb2F0aW5nKFxuICAgICAgICAgICAgICAgICRzdWJzY3JpcHQtZm9udC1zY2FsZSwgJGluZml4LXBhZGRpbmcsICRpbmZpeC1tYXJnaW4tdG9wKTtcbiAgICAgIH1cblxuICAgICAgLy8gQGJyZWFraW5nLWNoYW5nZSA4LjAuMCB3aWxsIHJlbHkgb24gQXV0b2ZpbGxNb25pdG9yIGluc3RlYWQuXG4gICAgICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbDotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJcbiAgICAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbCB7XG4gICAgICAgIEBpbmNsdWRlIF9sYWJlbC1mbG9hdGluZyhcbiAgICAgICAgICAgICAgICAkc3Vic2NyaXB0LWZvbnQtc2NhbGUsICRpbmZpeC1wYWRkaW5nLCAkaW5maXgtbWFyZ2luLXRvcCk7XG4gICAgICB9XG5cbiAgICAgIC8vIFNlcnZlci1zaWRlIHJlbmRlcmVkIG1hdElucHV0IHdpdGggYSBsYWJlbCBhdHRyaWJ1dGUgYnV0IGxhYmVsIG5vdCBzaG93blxuICAgICAgLy8gKHVzZWQgYXMgYSBwdXJlIENTUyBzdGFuZC1pbiBmb3IgbWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0KS5cbiAgICAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyXG4gICAgICAubWF0LWZvcm0tZmllbGQtbGFiZWwge1xuICAgICAgICBAaW5jbHVkZSBfbGFiZWwtZmxvYXRpbmcoXG4gICAgICAgICAgICAgICAgJHN1YnNjcmlwdC1mb250LXNjYWxlLCAkaW5maXgtcGFkZGluZywgJGluZml4LW1hcmdpbi10b3ApO1xuICAgICAgfVxuICAgIH1cblxuICAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbCB7XG4gICAgICB0b3A6ICRpbmZpeC1tYXJnaW4tdG9wICsgJGluZml4LXBhZGRpbmc7XG4gICAgfVxuXG4gICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZSB7XG4gICAgICAvLyBXZSB3YW50IHRoZSB1bmRlcmxpbmUgdG8gc3RhcnQgYXQgdGhlIGVuZCBvZiB0aGUgY29udGVudCBib3gsIG5vdCB0aGUgcGFkZGluZyBib3gsXG4gICAgICAvLyBzbyB3ZSBtb3ZlIGl0IHVwIGJ5IHRoZSBwYWRkaW5nIGFtb3VudC5cbiAgICAgIGJvdHRvbTogJHdyYXBwZXItcGFkZGluZy1ib3R0b207XG4gICAgfVxuXG4gICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyIHtcbiAgICAgIG1hcmdpbi10b3A6ICRzdWJzY3JpcHQtbWFyZ2luLXRvcDtcblxuICAgICAgLy8gV2Ugd2FudCB0aGUgc3Vic2NyaXB0IHRvIHN0YXJ0IGF0IHRoZSBlbmQgb2YgdGhlIGNvbnRlbnQgYm94LCBub3QgdGhlIHBhZGRpbmcgYm94LFxuICAgICAgLy8gc28gd2UgbW92ZSBpdCB1cCBieSB0aGUgcGFkZGluZyBhbW91bnQgKGFkanVzdGVkIGZvciB0aGUgc21hbGxlciBmb250IHNpemUpO1xuICAgICAgdG9wOiBjYWxjKDEwMCUgLSAjeyR3cmFwcGVyLXBhZGRpbmctYm90dG9tIC8gJHN1YnNjcmlwdC1mb250LXNjYWxlfSk7XG4gICAgfVxuICB9XG5cbiAgLy8gdHJhbnNsYXRlWiBjYXVzZXMgdGhlIGxhYmVsIHRvIG5vdCBhcHBlYXIgd2hpbGUgcHJpbnRpbmcsIHNvIHdlIG92ZXJyaWRlIGl0IHRvIG5vdFxuICAvLyBhcHBseSB0cmFuc2xhdGVaIHdoaWxlIHByaW50aW5nXG4gIEBtZWRpYSBwcmludCB7XG4gICAgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5IHtcbiAgICAgICYubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IHtcbiAgICAgICAgJi5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXQgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLFxuICAgICAgICAubWF0LWlucHV0LXNlcnZlcjpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtZm9ybS1maWVsZC1sYWJlbCB7XG4gICAgICAgICAgQGluY2x1ZGUgX2xhYmVsLWZsb2F0aW5nLXByaW50KFxuICAgICAgICAgICAgICAgICAgJHN1YnNjcmlwdC1mb250LXNjYWxlLCAkaW5maXgtcGFkZGluZywgJGluZml4LW1hcmdpbi10b3ApO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQGJyZWFraW5nLWNoYW5nZSA4LjAuMCB3aWxsIHJlbHkgb24gQXV0b2ZpbGxNb25pdG9yIGluc3RlYWQuXG4gICAgICAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlclxuICAgICAgICAubWF0LWZvcm0tZmllbGQtbGFiZWwge1xuICAgICAgICAgIEBpbmNsdWRlIF9sYWJlbC1mbG9hdGluZy1wcmludChcbiAgICAgICAgICAgICAgICAgICRzdWJzY3JpcHQtZm9udC1zY2FsZSwgJGluZml4LXBhZGRpbmcsICRpbmZpeC1tYXJnaW4tdG9wKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFNlcnZlci1zaWRlIHJlbmRlcmVkIG1hdElucHV0IHdpdGggYSBsYWJlbCBhdHRyaWJ1dGUgYnV0IGxhYmVsIG5vdCBzaG93blxuICAgICAgICAvLyAodXNlZCBhcyBhIHB1cmUgQ1NTIHN0YW5kLWluIGZvciBtYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXQpLlxuICAgICAgICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlclxuICAgICAgICAubWF0LWZvcm0tZmllbGQtbGFiZWwge1xuICAgICAgICAgIEBpbmNsdWRlIF9sYWJlbC1mbG9hdGluZy1wcmludChcbiAgICAgICAgICAgICAgICAgICRzdWJzY3JpcHQtZm9udC1zY2FsZSwgJGluZml4LXBhZGRpbmcsICRpbmZpeC1tYXJnaW4tdG9wKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gcHJpdmF0ZS1mb3JtLWZpZWxkLWxlZ2FjeS1kZW5zaXR5KCRjb25maWctb3ItdGhlbWUpIHt9XG5cbkBtaXhpbiBsZWdhY3ktdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZykge1xuICAkdGhlbWU6IHRoZW1pbmcucHJpdmF0ZS1sZWdhY3ktZ2V0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICBAaW5jbHVkZSB0aGVtaW5nLnByaXZhdGUtY2hlY2stZHVwbGljYXRlLXRoZW1lLXN0eWxlcygkdGhlbWUsICdtYXQtZm9ybS1maWVsZC1sZWdhY3knKSB7XG4gICAgJGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJHRoZW1lKTtcbiAgICAkZGVuc2l0eTogdGhlbWluZy5nZXQtZGVuc2l0eS1jb25maWcoJHRoZW1lKTtcbiAgICAkdHlwb2dyYXBoeTogdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJHRoZW1lKTtcblxuICAgIEBpZiAkY29sb3IgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBsZWdhY3ktY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgcHJpdmF0ZS1mb3JtLWZpZWxkLWxlZ2FjeS1kZW5zaXR5KCRkZW5zaXR5KTtcbiAgICB9XG4gICAgQGlmICR0eXBvZ3JhcGh5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgbGVnYWN5LXR5cG9ncmFwaHkoJHR5cG9ncmFwaHkpO1xuICAgIH1cbiAgfVxufVxuIiwiQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnLi4vY29yZS90aGVtaW5nL3RoZW1pbmcnO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHknO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHktdXRpbHMnO1xuXG5cbi8vIFRoZW1lIHN0eWxlcyB0aGF0IG9ubHkgYXBwbHkgdG8gdGhlIGZpbGwgYXBwZWFyYW5jZSBvZiB0aGUgZm9ybS1maWVsZC5cblxuQG1peGluIGZpbGwtY29sb3IoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRmb3JlZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGZvcmVncm91bmQpO1xuICAkaXMtZGFyay10aGVtZTogbWFwLmdldCgkY29uZmlnLCBpcy1kYXJrKTtcblxuICAkZmlsbC1iYWNrZ3JvdW5kOlxuICAgIHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgYmFzZSwgaWYoJGlzLWRhcmstdGhlbWUsIDAuMSwgMC4wNCkpO1xuICAkZmlsbC1kaXNhYmxlZC1iYWNrZ3JvdW5kOlxuICAgIHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgYmFzZSwgaWYoJGlzLWRhcmstdGhlbWUsIDAuMDUsIDAuMDIpKTtcbiAgJHVuZGVybGluZS1jb2xvcjpcbiAgICB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIGRpdmlkZXIsIGlmKCRpcy1kYXJrLXRoZW1lLCAwLjUsIDAuNDIpKTtcbiAgJGxhYmVsLWRpc2FibGVkLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIGRpc2FibGVkLXRleHQpO1xuXG4gIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwge1xuICAgIC5tYXQtZm9ybS1maWVsZC1mbGV4IHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRmaWxsLWJhY2tncm91bmQ7XG4gICAgfVxuXG4gICAgJi5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZCAubWF0LWZvcm0tZmllbGQtZmxleCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZmlsbC1kaXNhYmxlZC1iYWNrZ3JvdW5kO1xuICAgIH1cblxuICAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmU6OmJlZm9yZSB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdW5kZXJsaW5lLWNvbG9yO1xuICAgIH1cblxuICAgICYubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQge1xuICAgICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsIHtcbiAgICAgICAgY29sb3I6ICRsYWJlbC1kaXNhYmxlZC1jb2xvcjtcbiAgICAgIH1cblxuICAgICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZTo6YmVmb3JlIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vIFVzZWQgdG8gbWFrZSBpbnN0YW5jZXMgb2YgdGhlIF9tYXQtZm9ybS1maWVsZC1sYWJlbC1mbG9hdGluZyBtaXhpbiBuZWdsaWdpYmx5IGRpZmZlcmVudCxcbi8vIGFuZCBwcmV2ZW50IEdvb2dsZSdzIENTUyBPcHRpbWl6ZXIgZnJvbSBjb2xsYXBzaW5nIHRoZSBkZWNsYXJhdGlvbnMuIFRoaXMgaXMgbmVlZGVkIGJlY2F1c2Ugc29tZVxuLy8gb2YgdGhlIHNlbGVjdG9ycyBjb250YWluIHBzZXVkby1jbGFzc2VzIG5vdCByZWNvZ25pemVkIGluIGFsbCBicm93c2Vycy4gSWYgYSBicm93c2VyIGVuY291bnRlcnNcbi8vIGFuIHVua25vd24gcHNldWRvLWNsYXNzIGl0IHdpbGwgZGlzY2FyZCB0aGUgZW50aXJlIHJ1bGUgc2V0LlxuJGZpbGwtZGVkdXBlOiAwO1xuXG4vLyBBcHBsaWVzIGEgZmxvYXRpbmcgbGFiZWwgYWJvdmUgdGhlIGZvcm0gZmllbGQgY29udHJvbCBpdHNlbGYuXG5AbWl4aW4gX2xhYmVsLWZsb2F0aW5nKCRmb250LXNjYWxlLCAkaW5maXgtcGFkZGluZywgJGluZml4LW1hcmdpbi10b3ApIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0kaW5maXgtbWFyZ2luLXRvcCAtICRpbmZpeC1wYWRkaW5nICsgJGZpbGwtZGVkdXBlKVxuICAgICAgICAgICAgIHNjYWxlKCRmb250LXNjYWxlKTtcbiAgd2lkdGg6IDEwMCUgLyAkZm9udC1zY2FsZSArICRmaWxsLWRlZHVwZTtcblxuICAkZmlsbC1kZWR1cGU6ICRmaWxsLWRlZHVwZSArIDAuMDAwMDEgIWdsb2JhbDtcbn1cblxuQG1peGluIGZpbGwtdHlwb2dyYXBoeSgkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHR5cG9ncmFwaHkucHJpdmF0ZS10eXBvZ3JhcGh5LXRvLTIwMTQtY29uZmlnKFxuICAgICAgdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJGNvbmZpZy1vci10aGVtZSkpO1xuICAvLyBUaGUgdW5pdC1sZXNzIGxpbmUtaGVpZ2h0IGZyb20gdGhlIGZvbnQgY29uZmlnLlxuICAkbGluZS1oZWlnaHQ6IHR5cG9ncmFwaHktdXRpbHMubGluZS1oZWlnaHQoJGNvbmZpZywgaW5wdXQpO1xuICAvLyBUaGUgYW1vdW50IHRvIHNjYWxlIHRoZSBmb250IGZvciB0aGUgZmxvYXRpbmcgbGFiZWwgYW5kIHN1YnNjcmlwdC5cbiAgJHN1YnNjcmlwdC1mb250LXNjYWxlOiAwLjc1O1xuICAvLyBUaGUgcGFkZGluZyBvbiB0b3Agb2YgdGhlIGluZml4LlxuICAkaW5maXgtcGFkZGluZy10b3A6IDAuMjVlbTtcbiAgLy8gVGhlIHBhZGRpbmcgYmVsb3cgdGhlIGluZml4LlxuICAkaW5maXgtcGFkZGluZy1ib3R0b206IDAuNzVlbTtcbiAgLy8gVGhlIG1hcmdpbiBhcHBsaWVkIHRvIHRoZSBmb3JtLWZpZWxkLWluZml4IHRvIHJlc2VydmUgc3BhY2UgZm9yIHRoZSBmbG9hdGluZyBsYWJlbC5cbiAgJGluZml4LW1hcmdpbi10b3A6IDFlbSAqICRsaW5lLWhlaWdodCAqICRzdWJzY3JpcHQtZm9udC1zY2FsZTtcbiAgLy8gVGhlIGFtb3VudCB3ZSBvZmZzZXQgdGhlIGxhYmVsIGZyb20gdGhlIGlucHV0IHRleHQgaW4gdGhlIGZpbGwgYXBwZWFyYW5jZS5cbiAgJGZpbGwtYXBwZWFyYW5jZS1sYWJlbC1vZmZzZXQ6IC0wLjVlbTtcblxuICAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsIHtcbiAgICAubWF0LWZvcm0tZmllbGQtaW5maXgge1xuICAgICAgcGFkZGluZzogJGluZml4LXBhZGRpbmctdG9wIDAgJGluZml4LXBhZGRpbmctYm90dG9tIDA7XG4gICAgfVxuXG4gICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsIHtcbiAgICAgIHRvcDogJGluZml4LW1hcmdpbi10b3AgKyAkaW5maXgtcGFkZGluZy10b3A7XG4gICAgICBtYXJnaW4tdG9wOiAkZmlsbC1hcHBlYXJhbmNlLWxhYmVsLW9mZnNldDtcbiAgICB9XG5cbiAgICAmLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdCB7XG4gICAgICAmLm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdCAubWF0LWZvcm0tZmllbGQtbGFiZWwsXG4gICAgICAubWF0LWlucHV0LXNlcnZlcjpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtZm9ybS1maWVsZC1sYWJlbCB7XG4gICAgICAgIEBpbmNsdWRlIF9sYWJlbC1mbG9hdGluZyhcbiAgICAgICAgICAgICAgICAkc3Vic2NyaXB0LWZvbnQtc2NhbGUsICRpbmZpeC1wYWRkaW5nLXRvcCArICRmaWxsLWFwcGVhcmFuY2UtbGFiZWwtb2Zmc2V0LFxuICAgICAgICAgICAgICAgICRpbmZpeC1tYXJnaW4tdG9wKTtcbiAgICAgIH1cblxuICAgICAgLy8gU2VydmVyLXNpZGUgcmVuZGVyZWQgbWF0SW5wdXQgd2l0aCBhIGxhYmVsIGF0dHJpYnV0ZSBidXQgbGFiZWwgbm90IHNob3duXG4gICAgICAvLyAodXNlZCBhcyBhIHB1cmUgQ1NTIHN0YW5kLWluIGZvciBtYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXQpLlxuICAgICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJcbiAgICAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbCB7XG4gICAgICAgIEBpbmNsdWRlIF9sYWJlbC1mbG9hdGluZyhcbiAgICAgICAgICAgICAgICAkc3Vic2NyaXB0LWZvbnQtc2NhbGUsICRpbmZpeC1wYWRkaW5nLXRvcCArICRmaWxsLWFwcGVhcmFuY2UtbGFiZWwtb2Zmc2V0LFxuICAgICAgICAgICAgICAgICRpbmZpeC1tYXJnaW4tdG9wKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHByaXZhdGUtZm9ybS1maWVsZC1maWxsLWRlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIGZpbGwtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZykge1xuICAkdGhlbWU6IHRoZW1pbmcucHJpdmF0ZS1sZWdhY3ktZ2V0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICBAaW5jbHVkZSB0aGVtaW5nLnByaXZhdGUtY2hlY2stZHVwbGljYXRlLXRoZW1lLXN0eWxlcygkdGhlbWUsICdtYXQtZm9ybS1maWVsZC1maWxsJykge1xuICAgICRjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgJGRlbnNpdHk6IHRoZW1pbmcuZ2V0LWRlbnNpdHktY29uZmlnKCR0aGVtZSk7XG4gICAgJHR5cG9ncmFwaHk6IHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCR0aGVtZSk7XG5cbiAgICBAaWYgJGNvbG9yICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgZmlsbC1jb2xvcigkY29sb3IpO1xuICAgIH1cbiAgICBAaWYgJGRlbnNpdHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBwcml2YXRlLWZvcm0tZmllbGQtZmlsbC1kZW5zaXR5KCRkZW5zaXR5KTtcbiAgICB9XG4gICAgQGlmICR0eXBvZ3JhcGh5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgZmlsbC10eXBvZ3JhcGh5KCR0eXBvZ3JhcGh5KTtcbiAgICB9XG4gIH1cbn1cbiIsIkB1c2UgJ3Nhc3M6bWFwJztcbkB1c2UgJy4uL2NvcmUvdGhlbWluZy90aGVtaW5nJztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5JztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5LXV0aWxzJztcblxuXG4vLyBUaGVtZSBzdHlsZXMgdGhhdCBvbmx5IGFwcGx5IHRvIHRoZSBvdXRsaW5lIGFwcGVhcmFuY2Ugb2YgdGhlIGZvcm0tZmllbGQuXG5cbkBtaXhpbiBvdXRsaW5lLWNvbG9yKCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAkcHJpbWFyeTogbWFwLmdldCgkY29uZmlnLCBwcmltYXJ5KTtcbiAgJGFjY2VudDogbWFwLmdldCgkY29uZmlnLCBhY2NlbnQpO1xuICAkd2FybjogbWFwLmdldCgkY29uZmlnLCB3YXJuKTtcbiAgJGZvcmVncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgZm9yZWdyb3VuZCk7XG4gICRpcy1kYXJrLXRoZW1lOiBtYXAuZ2V0KCRjb25maWcsIGlzLWRhcmspO1xuXG4gICRsYWJlbC1kaXNhYmxlZC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBkaXNhYmxlZC10ZXh0KTtcbiAgJG91dGxpbmUtY29sb3I6XG4gICAgdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBkaXZpZGVyLCBpZigkaXMtZGFyay10aGVtZSwgMC4zLCAwLjEyKSk7XG4gICRvdXRsaW5lLWNvbG9yLWhvdmVyOlxuICAgIHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgZGl2aWRlciwgaWYoJGlzLWRhcmstdGhlbWUsIDEsIDAuODcpKTtcbiAgJG91dGxpbmUtY29sb3ItcHJpbWFyeTogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRwcmltYXJ5KTtcbiAgJG91dGxpbmUtY29sb3ItYWNjZW50OiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGFjY2VudCk7XG4gICRvdXRsaW5lLWNvbG9yLXdhcm46IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkd2Fybik7XG4gICRvdXRsaW5lLWNvbG9yLWRpc2FibGVkOlxuICAgIHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgZGl2aWRlciwgaWYoJGlzLWRhcmstdGhlbWUsIDAuMTUsIDAuMDYpKTtcblxuICAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIHtcbiAgICAubWF0LWZvcm0tZmllbGQtb3V0bGluZSB7XG4gICAgICBjb2xvcjogJG91dGxpbmUtY29sb3I7XG4gICAgfVxuXG4gICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2sge1xuICAgICAgY29sb3I6ICRvdXRsaW5lLWNvbG9yLWhvdmVyO1xuICAgIH1cblxuICAgICYubWF0LWZvY3VzZWQge1xuICAgICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2sge1xuICAgICAgICBjb2xvcjogJG91dGxpbmUtY29sb3ItcHJpbWFyeTtcbiAgICAgIH1cblxuICAgICAgJi5tYXQtYWNjZW50IC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNrIHtcbiAgICAgICAgY29sb3I6ICRvdXRsaW5lLWNvbG9yLWFjY2VudDtcbiAgICAgIH1cblxuICAgICAgJi5tYXQtd2FybiAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGljayB7XG4gICAgICAgIGNvbG9yOiAkb3V0bGluZS1jb2xvci13YXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIENsYXNzIHJlcGVhdGVkIHNvIHRoYXQgcnVsZSBpcyBzcGVjaWZpYyBlbm91Z2ggdG8gb3ZlcnJpZGUgZm9jdXNlZCBhY2NlbnQgY29sb3IgY2FzZS5cbiAgICAmLm1hdC1mb3JtLWZpZWxkLWludmFsaWQubWF0LWZvcm0tZmllbGQtaW52YWxpZCB7XG4gICAgICAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGljayB7XG4gICAgICAgIGNvbG9yOiAkb3V0bGluZS1jb2xvci13YXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgICYubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQge1xuICAgICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsIHtcbiAgICAgICAgY29sb3I6ICRsYWJlbC1kaXNhYmxlZC1jb2xvcjtcbiAgICAgIH1cblxuICAgICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUge1xuICAgICAgICBjb2xvcjogJG91dGxpbmUtY29sb3ItZGlzYWJsZWQ7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vIFVzZWQgdG8gbWFrZSBpbnN0YW5jZXMgb2YgdGhlIF9tYXQtZm9ybS1maWVsZC1sYWJlbC1mbG9hdGluZyBtaXhpbiBuZWdsaWdpYmx5IGRpZmZlcmVudCxcbi8vIGFuZCBwcmV2ZW50IEdvb2dsZSdzIENTUyBPcHRpbWl6ZXIgZnJvbSBjb2xsYXBzaW5nIHRoZSBkZWNsYXJhdGlvbnMuIFRoaXMgaXMgbmVlZGVkIGJlY2F1c2Ugc29tZVxuLy8gb2YgdGhlIHNlbGVjdG9ycyBjb250YWluIHBzZXVkby1jbGFzc2VzIG5vdCByZWNvZ25pemVkIGluIGFsbCBicm93c2Vycy4gSWYgYSBicm93c2VyIGVuY291bnRlcnNcbi8vIGFuIHVua25vd24gcHNldWRvLWNsYXNzIGl0IHdpbGwgZGlzY2FyZCB0aGUgZW50aXJlIHJ1bGUgc2V0LlxuJG91dGxpbmUtZGVkdXBlOiAwO1xuXG4vLyBBcHBsaWVzIGEgZmxvYXRpbmcgbGFiZWwgYWJvdmUgdGhlIGZvcm0gZmllbGQgY29udHJvbCBpdHNlbGYuXG5AbWl4aW4gX2xhYmVsLWZsb2F0aW5nKCRmb250LXNjYWxlLCAkaW5maXgtcGFkZGluZywgJGluZml4LW1hcmdpbi10b3ApIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0kaW5maXgtbWFyZ2luLXRvcCAtICRpbmZpeC1wYWRkaW5nICsgJG91dGxpbmUtZGVkdXBlKVxuICBzY2FsZSgkZm9udC1zY2FsZSk7XG4gIHdpZHRoOiAxMDAlIC8gJGZvbnQtc2NhbGUgKyAkb3V0bGluZS1kZWR1cGU7XG5cbiAgJG91dGxpbmUtZGVkdXBlOiAkb3V0bGluZS1kZWR1cGUgKyAwLjAwMDAxICFnbG9iYWw7XG59XG5cbkBtaXhpbiBvdXRsaW5lLXR5cG9ncmFwaHkoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0eXBvZ3JhcGh5LnByaXZhdGUtdHlwb2dyYXBoeS10by0yMDE0LWNvbmZpZyhcbiAgICAgIHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCRjb25maWctb3ItdGhlbWUpKTtcbiAgLy8gVGhlIHVuaXQtbGVzcyBsaW5lLWhlaWdodCBmcm9tIHRoZSBmb250IGNvbmZpZy5cbiAgJGxpbmUtaGVpZ2h0OiB0eXBvZ3JhcGh5LXV0aWxzLmxpbmUtaGVpZ2h0KCRjb25maWcsIGlucHV0KTtcbiAgLy8gVGhlIGFtb3VudCB0byBzY2FsZSB0aGUgZm9udCBmb3IgdGhlIGZsb2F0aW5nIGxhYmVsIGFuZCBzdWJzY3JpcHQuXG4gICRzdWJzY3JpcHQtZm9udC1zY2FsZTogMC43NTtcbiAgLy8gVGhlIHBhZGRpbmcgYWJvdmUgYW5kIGJlbG93IHRoZSBpbmZpeC5cbiAgJGluZml4LXBhZGRpbmc6IDFlbTtcbiAgLy8gVGhlIG1hcmdpbiBhcHBsaWVkIHRvIHRoZSBmb3JtLWZpZWxkLWluZml4IHRvIHJlc2VydmUgc3BhY2UgZm9yIHRoZSBmbG9hdGluZyBsYWJlbC5cbiAgJGluZml4LW1hcmdpbi10b3A6IDFlbSAqICRsaW5lLWhlaWdodCAqICRzdWJzY3JpcHQtZm9udC1zY2FsZTtcbiAgLy8gVGhlIHNwYWNlIGJldHdlZW4gdGhlIGJvdHRvbSBvZiB0aGUgLm1hdC1mb3JtLWZpZWxkLWZsZXggYXJlYSBhbmQgdGhlIHN1YnNjcmlwdCB3cmFwcGVyLlxuICAvLyBNb2NrcyBzaG93IGhhbGYgb2YgdGhlIHRleHQgc2l6ZSwgYnV0IHRoaXMgbWFyZ2luIGlzIGFwcGxpZWQgdG8gYW4gZWxlbWVudCB3aXRoIHRoZSBzdWJzY3JpcHRcbiAgLy8gdGV4dCBmb250IHNpemUsIHNvIHdlIG5lZWQgdG8gZGl2aWRlIGJ5IHRoZSBzY2FsZSBmYWN0b3IgdG8gbWFrZSBpdCBoYWxmIG9mIHRoZSBvcmlnaW5hbCB0ZXh0XG4gIC8vIHNpemUuXG4gICRzdWJzY3JpcHQtbWFyZ2luLXRvcDogMC41ZW0gLyAkc3Vic2NyaXB0LWZvbnQtc2NhbGU7XG4gIC8vIFRoZSBwYWRkaW5nIGFwcGxpZWQgdG8gdGhlIGZvcm0tZmllbGQtd3JhcHBlciB0byByZXNlcnZlIHNwYWNlIGZvciB0aGUgc3Vic2NyaXB0LCBzaW5jZSBpdCdzXG4gIC8vIGFic29sdXRlbHkgcG9zaXRpb25lZC4gVGhpcyBpcyBhIGNvbWJpbmF0aW9uIG9mIHRoZSBzdWJzY3JpcHQncyBtYXJnaW4gYW5kIGxpbmUtaGVpZ2h0LCBidXQgd2VcbiAgLy8gbmVlZCB0byBtdWx0aXBseSBieSB0aGUgc3Vic2NyaXB0IGZvbnQgc2NhbGUgZmFjdG9yIHNpbmNlIHRoZSB3cmFwcGVyIGhhcyBhIGxhcmdlciBmb250IHNpemUuXG4gICR3cmFwcGVyLXBhZGRpbmctYm90dG9tOiAoJHN1YnNjcmlwdC1tYXJnaW4tdG9wICsgJGxpbmUtaGVpZ2h0KSAqICRzdWJzY3JpcHQtZm9udC1zY2FsZTtcbiAgLy8gVGhlIGFtb3VudCB3ZSBvZmZzZXQgdGhlIGxhYmVsIGZyb20gdGhlIGlucHV0IHRleHQgaW4gdGhlIG91dGxpbmUgYXBwZWFyYW5jZS5cbiAgJG91dGxpbmUtYXBwZWFyYW5jZS1sYWJlbC1vZmZzZXQ6IC0wLjI1ZW07XG5cbiAgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZSB7XG4gICAgLm1hdC1mb3JtLWZpZWxkLWluZml4IHtcbiAgICAgIHBhZGRpbmc6ICRpbmZpeC1wYWRkaW5nIDAgJGluZml4LXBhZGRpbmcgMDtcbiAgICB9XG5cbiAgICAubWF0LWZvcm0tZmllbGQtbGFiZWwge1xuICAgICAgdG9wOiAkaW5maXgtbWFyZ2luLXRvcCArICRpbmZpeC1wYWRkaW5nO1xuICAgICAgbWFyZ2luLXRvcDogJG91dGxpbmUtYXBwZWFyYW5jZS1sYWJlbC1vZmZzZXQ7XG4gICAgfVxuXG4gICAgJi5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQge1xuICAgICAgJi5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXQgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLFxuICAgICAgLm1hdC1pbnB1dC1zZXJ2ZXI6Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWwge1xuICAgICAgICBAaW5jbHVkZSBfbGFiZWwtZmxvYXRpbmcoXG4gICAgICAgICAgICAgICAgJHN1YnNjcmlwdC1mb250LXNjYWxlLCAkaW5maXgtcGFkZGluZyArICRvdXRsaW5lLWFwcGVhcmFuY2UtbGFiZWwtb2Zmc2V0LFxuICAgICAgICAgICAgICAgICRpbmZpeC1tYXJnaW4tdG9wKTtcbiAgICAgIH1cblxuICAgICAgLy8gU2VydmVyLXNpZGUgcmVuZGVyZWQgbWF0SW5wdXQgd2l0aCBhIGxhYmVsIGF0dHJpYnV0ZSBidXQgbGFiZWwgbm90IHNob3duXG4gICAgICAvLyAodXNlZCBhcyBhIHB1cmUgQ1NTIHN0YW5kLWluIGZvciBtYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXQpLlxuICAgICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJcbiAgICAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbCB7XG4gICAgICAgIEBpbmNsdWRlIF9sYWJlbC1mbG9hdGluZyhcbiAgICAgICAgICAgICAgICAkc3Vic2NyaXB0LWZvbnQtc2NhbGUsICRpbmZpeC1wYWRkaW5nICsgJG91dGxpbmUtYXBwZWFyYW5jZS1sYWJlbC1vZmZzZXQsXG4gICAgICAgICAgICAgICAgJGluZml4LW1hcmdpbi10b3ApO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gcHJpdmF0ZS1mb3JtLWZpZWxkLW91dGxpbmUtZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gb3V0bGluZS10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKSB7XG4gICR0aGVtZTogdGhlbWluZy5wcml2YXRlLWxlZ2FjeS1nZXQtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZyk7XG4gIEBpbmNsdWRlIHRoZW1pbmcucHJpdmF0ZS1jaGVjay1kdXBsaWNhdGUtdGhlbWUtc3R5bGVzKCR0aGVtZSwgJ21hdC1mb3JtLWZpZWxkLW91dGxpbmUnKSB7XG4gICAgJGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJHRoZW1lKTtcbiAgICAkZGVuc2l0eTogdGhlbWluZy5nZXQtZGVuc2l0eS1jb25maWcoJHRoZW1lKTtcbiAgICAkdHlwb2dyYXBoeTogdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJHRoZW1lKTtcblxuICAgIEBpZiAkY29sb3IgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBvdXRsaW5lLWNvbG9yKCRjb2xvcik7XG4gICAgfVxuICAgIEBpZiAkZGVuc2l0eSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIHByaXZhdGUtZm9ybS1maWVsZC1vdXRsaW5lLWRlbnNpdHkoJGRlbnNpdHkpO1xuICAgIH1cbiAgICBAaWYgJHR5cG9ncmFwaHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBvdXRsaW5lLXR5cG9ncmFwaHkoJHR5cG9ncmFwaHkpO1xuICAgIH1cbiAgfVxufVxuXG4iLCJAdXNlICcuLi9jb3JlL3RoZW1pbmcvdGhlbWluZyc7XG5AdXNlICcuLi9jb3JlL3R5cG9ncmFwaHkvdHlwb2dyYXBoeSc7XG5AdXNlICcuLi9jb3JlL3R5cG9ncmFwaHkvdHlwb2dyYXBoeS11dGlscyc7XG5AdXNlICcuLi9jb3JlL3N0eWxlL2xpc3QtY29tbW9uJztcblxuXG4vLyBJbmNsdWRlIHRoaXMgZW1wdHkgbWl4aW4gZm9yIGNvbnNpc3RlbmN5IHdpdGggdGhlIG90aGVyIGNvbXBvbmVudHMuXG5AbWl4aW4gY29sb3IoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIHR5cG9ncmFwaHkoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0eXBvZ3JhcGh5LnByaXZhdGUtdHlwb2dyYXBoeS10by0yMDE0LWNvbmZpZyhcbiAgICAgIHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCRjb25maWctb3ItdGhlbWUpKTtcbiAgLm1hdC1ncmlkLXRpbGUtaGVhZGVyLFxuICAubWF0LWdyaWQtdGlsZS1mb290ZXIge1xuICAgIEBpbmNsdWRlIGxpc3QtY29tbW9uLmJhc2UodHlwb2dyYXBoeS11dGlscy5mb250LXNpemUoJGNvbmZpZywgY2FwdGlvbikpO1xuICAgIGZvbnQtc2l6ZTogdHlwb2dyYXBoeS11dGlscy5mb250LXNpemUoJGNvbmZpZywgYm9keS0xKTtcbiAgfVxufVxuXG5AbWl4aW4gX2RlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIHRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiB0aGVtaW5nLnByaXZhdGUtbGVnYWN5LWdldC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgQGluY2x1ZGUgdGhlbWluZy5wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LWdyaWQtbGlzdCcpIHtcbiAgICAkY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkdGhlbWUpO1xuICAgICRkZW5zaXR5OiB0aGVtaW5nLmdldC1kZW5zaXR5LWNvbmZpZygkdGhlbWUpO1xuICAgICR0eXBvZ3JhcGh5OiB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkdGhlbWUpO1xuXG4gICAgQGlmICRjb2xvciAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIGNvbG9yKCRjb2xvcik7XG4gICAgfVxuICAgIEBpZiAkZGVuc2l0eSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIF9kZW5zaXR5KCRkZW5zaXR5KTtcbiAgICB9XG4gICAgQGlmICR0eXBvZ3JhcGh5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgdHlwb2dyYXBoeSgkdHlwb2dyYXBoeSk7XG4gICAgfVxuICB9XG59XG4iLCIvLyBUaGlzIG1peGluIHdpbGwgZW5zdXJlIHRoYXQgbGluZXMgdGhhdCBvdmVyZmxvdyB0aGUgY29udGFpbmVyIHdpbGwgaGlkZSB0aGUgb3ZlcmZsb3cgYW5kXG4vLyB0cnVuY2F0ZSBuZWF0bHkgd2l0aCBhbiBlbGxpcHNpcy5cbkBtaXhpbiB0cnVuY2F0ZS1saW5lKCkge1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbn1cblxuLy8gTWl4aW4gdG8gcHJvdmlkZSBhbGwgbWF0LWxpbmUgc3R5bGVzLCBjaGFuZ2luZyBzZWNvbmRhcnkgZm9udCBzaXplIGJhc2VkIG9uIHdoZXRoZXIgdGhlIGxpc3Rcbi8vIGlzIGluIGRlbnNlIG1vZGUuXG5AbWl4aW4gYmFzZSgkc2Vjb25kYXJ5LWZvbnQtc2l6ZSkge1xuICAubWF0LWxpbmUge1xuICAgIEBpbmNsdWRlIHRydW5jYXRlLWxpbmUoKTtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuXG4gICAgLy8gYWxsIGxpbmVzIGJ1dCB0aGUgdG9wIGxpbmUgc2hvdWxkIGhhdmUgc21hbGxlciB0ZXh0XG4gICAgJjpudGgtY2hpbGQobisyKSB7XG4gICAgICBmb250LXNpemU6ICRzZWNvbmRhcnktZm9udC1zaXplO1xuICAgIH1cbiAgfVxufVxuXG4vLyBUaGlzIG1peGluIG5vcm1hbGl6ZXMgZGVmYXVsdCBlbGVtZW50IHN0eWxlcywgZS5nLiBmb250IHdlaWdodCBmb3IgaGVhZGluZyB0ZXh0LlxuQG1peGluIG5vcm1hbGl6ZS10ZXh0KCkge1xuICAmID4gKiB7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICBmb250LXNpemU6IGluaGVyaXQ7XG4gIH1cbn1cblxuLy8gVGhpcyBtaXhpbiBwcm92aWRlcyBiYXNlIHN0eWxlcyBmb3IgdGhlIHdyYXBwZXIgYXJvdW5kIG1hdC1saW5lIGVsZW1lbnRzIGluIGEgbGlzdC5cbkBtaXhpbiB3cmFwcGVyLWJhc2UoKSB7XG4gIEBpbmNsdWRlIG5vcm1hbGl6ZS10ZXh0KCk7XG5cbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgZmxleDogYXV0bztcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAvLyBNdXN0IHJlbW92ZSB3cmFwcGVyIHdoZW4gbGluZXMgYXJlIGVtcHR5IG9yIGl0IHRha2VzIHVwIGhvcml6b250YWxcbiAgLy8gc3BhY2UgYW5kIHB1c2hlcyBvdGhlciBlbGVtZW50cyB0byB0aGUgcmlnaHQuXG4gICY6ZW1wdHkge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cbiIsIkB1c2UgJ3Nhc3M6bWFwJztcbkB1c2UgJy4uL2NvcmUvdGhlbWluZy9wYWxldHRlJztcbkB1c2UgJy4uL2NvcmUvdGhlbWluZy90aGVtaW5nJztcbkB1c2UgJy4uL2NvcmUvc3R5bGUvZm9ybS1jb21tb24nO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHknO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHktdXRpbHMnO1xuQHVzZSAnLi4vY29yZS9zdHlsZS92ZW5kb3ItcHJlZml4ZXMnO1xuXG5cbkBtaXhpbiBjb2xvcigkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJHByaW1hcnk6IG1hcC5nZXQoJGNvbmZpZywgcHJpbWFyeSk7XG4gICRhY2NlbnQ6IG1hcC5nZXQoJGNvbmZpZywgYWNjZW50KTtcbiAgJHdhcm46IG1hcC5nZXQoJGNvbmZpZywgd2Fybik7XG4gICRmb3JlZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGZvcmVncm91bmQpO1xuXG4gIC5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0IC5tYXQtZm9ybS1maWVsZC1pbmZpeDo6YWZ0ZXIge1xuICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIHNlY29uZGFyeS10ZXh0KTtcbiAgfVxuXG4gIC5tYXQtaW5wdXQtZWxlbWVudDpkaXNhYmxlZCxcbiAgLm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQgLm1hdC1mb3JtLWZpZWxkLWluZml4OjphZnRlciB7XG4gICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgZGlzYWJsZWQtdGV4dCk7XG4gIH1cblxuICAubWF0LWlucHV0LWVsZW1lbnQge1xuICAgIGNhcmV0LWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHByaW1hcnksIHRleHQpO1xuXG4gICAgQGluY2x1ZGUgdmVuZG9yLXByZWZpeGVzLmlucHV0LXBsYWNlaG9sZGVyIHtcbiAgICAgIGNvbG9yOiBmb3JtLWNvbW1vbi5wcml2YXRlLWNvbnRyb2wtcGxhY2Vob2xkZXItY29sb3IoJGNvbmZpZyk7XG4gICAgfVxuXG4gICAgLy8gT24gZGFyayB0aGVtZXMgd2Ugc2V0IHRoZSBuYXRpdmUgYHNlbGVjdGAgY29sb3IgdG8gc29tZSBzaGFkZSBvZiB3aGl0ZSxcbiAgICAvLyBob3dldmVyIHRoZSBjb2xvciBwcm9wYWdhdGVzIHRvIGFsbCBvZiB0aGUgYG9wdGlvbmAgZWxlbWVudHMsIHdoaWNoIGFyZVxuICAgIC8vIGFsd2F5cyBvbiBhIHdoaXRlIGJhY2tncm91bmQgaW5zaWRlIHRoZSBkcm9wZG93biwgY2F1c2luZyB0aGVtIHRvIGJsZW5kIGluLlxuICAgIC8vIFNpbmNlIHdlIGNhbid0IGNoYW5nZSBiYWNrZ3JvdW5kIG9mIHRoZSBkcm9wZG93biwgd2UgbmVlZCB0byBleHBsaWNpdGx5XG4gICAgLy8gcmVzZXQgdGhlIGNvbG9yIG9mIHRoZSBvcHRpb25zIHRvIHNvbWV0aGluZyBkYXJrLlxuICAgIEBpZiAobWFwLmdldCgkY29uZmlnLCBpcy1kYXJrKSkge1xuICAgICAgb3B0aW9uIHtcbiAgICAgICAgY29sb3I6IHBhbGV0dGUuJGRhcmstcHJpbWFyeS10ZXh0O1xuICAgICAgfVxuXG4gICAgICBvcHRpb246ZGlzYWJsZWQge1xuICAgICAgICBjb2xvcjogcGFsZXR0ZS4kZGFyay1kaXNhYmxlZC10ZXh0O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5tYXQtZm9ybS1maWVsZC5tYXQtYWNjZW50IC5tYXQtaW5wdXQtZWxlbWVudCB7XG4gICAgY2FyZXQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYWNjZW50LCB0ZXh0KTtcbiAgfVxuXG4gIC5tYXQtZm9ybS1maWVsZC5tYXQtd2FybiAubWF0LWlucHV0LWVsZW1lbnQsXG4gIC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkIC5tYXQtaW5wdXQtZWxlbWVudCB7XG4gICAgY2FyZXQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkd2FybiwgdGV4dCk7XG4gIH1cblxuICAubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkIC5tYXQtZm9ybS1maWVsZC1pbmZpeDo6YWZ0ZXIge1xuICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHdhcm4sIHRleHQpO1xuICB9XG59XG5cbkBtaXhpbiB0eXBvZ3JhcGh5KCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdHlwb2dyYXBoeS5wcml2YXRlLXR5cG9ncmFwaHktdG8tMjAxNC1jb25maWcoXG4gICAgICB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKSk7XG4gIC8vIFRoZSB1bml0LWxlc3MgbGluZS1oZWlnaHQgZnJvbSB0aGUgZm9udCBjb25maWcuXG4gICRsaW5lLWhlaWdodDogdHlwb2dyYXBoeS11dGlscy5saW5lLWhlaWdodCgkY29uZmlnLCBpbnB1dCk7XG5cbiAgLy8gVGhlIGFtb3VudCBvZiBzcGFjZSBiZXR3ZWVuIHRoZSB0b3Agb2YgdGhlIGxpbmUgYW5kIHRoZSB0b3Agb2YgdGhlIGFjdHVhbCB0ZXh0XG4gIC8vIChhcyBhIGZyYWN0aW9uIG9mIHRoZSBmb250LXNpemUpLlxuICAkbGluZS1zcGFjaW5nOiAoJGxpbmUtaGVpZ2h0IC0gMSkgLyAyO1xuXG4gIC8vIDxpbnB1dD4gZWxlbWVudHMgc2VlbSB0byBoYXZlIHRoZWlyIGhlaWdodCBzZXQgc2xpZ2h0bHkgdG9vIGxhcmdlIG9uIFNhZmFyaSBjYXVzaW5nIHRoZSB0ZXh0IHRvXG4gIC8vIGJlIG1pc2FsaWduZWQgdy5yLnQuIHRoZSBwbGFjZWhvbGRlci4gQWRkaW5nIHRoaXMgbWFyZ2luIGNvcnJlY3RzIGl0LlxuICBpbnB1dC5tYXQtaW5wdXQtZWxlbWVudCB7XG4gICAgbWFyZ2luLXRvcDogLSRsaW5lLXNwYWNpbmcgKiAxZW07XG4gIH1cbn1cblxuQG1peGluIF9kZW5zaXR5KCRjb25maWctb3ItdGhlbWUpIHt9XG5cbkBtaXhpbiB0aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKSB7XG4gICR0aGVtZTogdGhlbWluZy5wcml2YXRlLWxlZ2FjeS1nZXQtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZyk7XG4gIEBpbmNsdWRlIHRoZW1pbmcucHJpdmF0ZS1jaGVjay1kdXBsaWNhdGUtdGhlbWUtc3R5bGVzKCR0aGVtZSwgJ21hdC1pbnB1dCcpIHtcbiAgICAkY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkdGhlbWUpO1xuICAgICRkZW5zaXR5OiB0aGVtaW5nLmdldC1kZW5zaXR5LWNvbmZpZygkdGhlbWUpO1xuICAgICR0eXBvZ3JhcGh5OiB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkdGhlbWUpO1xuXG4gICAgQGlmICRjb2xvciAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIGNvbG9yKCRjb2xvcik7XG4gICAgfVxuICAgIEBpZiAkZGVuc2l0eSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIF9kZW5zaXR5KCRkZW5zaXR5KTtcbiAgICB9XG4gICAgQGlmICR0eXBvZ3JhcGh5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgdHlwb2dyYXBoeSgkdHlwb2dyYXBoeSk7XG4gICAgfVxuICB9XG59XG4iLCJAdXNlICdzYXNzOm1hcCc7XG5AdXNlICcuLi9jb3JlL3N0eWxlL3ByaXZhdGUnO1xuQHVzZSAnLi4vY29yZS90aGVtaW5nL3RoZW1pbmcnO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHknO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHktdXRpbHMnO1xuXG5cbkBtaXhpbiBjb2xvcigkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJGJhY2tncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgYmFja2dyb3VuZCk7XG4gICRmb3JlZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGZvcmVncm91bmQpO1xuXG4gIC5tYXQtbWVudS1wYW5lbCB7XG4gICAgQGluY2x1ZGUgcHJpdmF0ZS5wcml2YXRlLXRoZW1lLW92ZXJyaWRhYmxlLWVsZXZhdGlvbig0LCAkY29uZmlnKTtcbiAgICBiYWNrZ3JvdW5kOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGJhY2tncm91bmQsICdjYXJkJyk7XG4gIH1cblxuICAubWF0LW1lbnUtaXRlbSB7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgJ3RleHQnKTtcblxuICAgICZbZGlzYWJsZWRdIHtcbiAgICAgICYsXG4gICAgICAmOjphZnRlcixcbiAgICAgIC5tYXQtaWNvbi1uby1jb2xvciB7XG4gICAgICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsICdkaXNhYmxlZCcpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5tYXQtbWVudS1pdGVtIC5tYXQtaWNvbi1uby1jb2xvcixcbiAgLm1hdC1tZW51LWl0ZW0tc3VibWVudS10cmlnZ2VyOjphZnRlciB7XG4gICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgJ2ljb24nKTtcbiAgfVxuXG4gIC5tYXQtbWVudS1pdGVtOmhvdmVyLFxuICAubWF0LW1lbnUtaXRlbS5jZGstcHJvZ3JhbS1mb2N1c2VkLFxuICAubWF0LW1lbnUtaXRlbS5jZGsta2V5Ym9hcmQtZm9jdXNlZCxcbiAgLm1hdC1tZW51LWl0ZW0taGlnaGxpZ2h0ZWQge1xuICAgICY6bm90KFtkaXNhYmxlZF0pIHtcbiAgICAgIGJhY2tncm91bmQ6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYmFja2dyb3VuZCwgJ2hvdmVyJyk7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiB0eXBvZ3JhcGh5KCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdHlwb2dyYXBoeS5wcml2YXRlLXR5cG9ncmFwaHktdG8tMjAxNC1jb25maWcoXG4gICAgICB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKSk7XG4gIC5tYXQtbWVudS1pdGVtIHtcbiAgICBmb250OiB7XG4gICAgICBmYW1pbHk6IHR5cG9ncmFwaHktdXRpbHMuZm9udC1mYW1pbHkoJGNvbmZpZywgYm9keS0xKTtcbiAgICAgIHNpemU6IHR5cG9ncmFwaHktdXRpbHMuZm9udC1zaXplKCRjb25maWcsIGJvZHktMSk7XG4gICAgICB3ZWlnaHQ6IHR5cG9ncmFwaHktdXRpbHMuZm9udC13ZWlnaHQoJGNvbmZpZywgYm9keS0xKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIF9kZW5zaXR5KCRjb25maWctb3ItdGhlbWUpIHt9XG5cbkBtaXhpbiB0aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKSB7XG4gICR0aGVtZTogdGhlbWluZy5wcml2YXRlLWxlZ2FjeS1nZXQtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZyk7XG4gIEBpbmNsdWRlIHRoZW1pbmcucHJpdmF0ZS1jaGVjay1kdXBsaWNhdGUtdGhlbWUtc3R5bGVzKCR0aGVtZSwgJ21hdC1tZW51Jykge1xuICAgICRjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgJGRlbnNpdHk6IHRoZW1pbmcuZ2V0LWRlbnNpdHktY29uZmlnKCR0aGVtZSk7XG4gICAgJHR5cG9ncmFwaHk6IHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCR0aGVtZSk7XG5cbiAgICBAaWYgJGNvbG9yICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgX2RlbnNpdHkoJGRlbnNpdHkpO1xuICAgIH1cbiAgICBAaWYgJHR5cG9ncmFwaHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5KCR0eXBvZ3JhcGh5KTtcbiAgICB9XG4gIH1cbn1cblxuIiwiQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnLi4vY29yZS90aGVtaW5nL3RoZW1pbmcnO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHknO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHktdXRpbHMnO1xuQHVzZSAnLi4vY29yZS9kZW5zaXR5L3ByaXZhdGUvY29tcGF0aWJpbGl0eSc7XG5AdXNlICcuL3BhZ2luYXRvci12YXJpYWJsZXMnO1xuXG5AbWl4aW4gY29sb3IoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRmb3JlZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGZvcmVncm91bmQpO1xuICAkYmFja2dyb3VuZDogbWFwLmdldCgkY29uZmlnLCBiYWNrZ3JvdW5kKTtcblxuICAubWF0LXBhZ2luYXRvciB7XG4gICAgYmFja2dyb3VuZDogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLCAnY2FyZCcpO1xuICB9XG5cbiAgLm1hdC1wYWdpbmF0b3IsXG4gIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZSAubWF0LXNlbGVjdC10cmlnZ2VyIHtcbiAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBzZWNvbmRhcnktdGV4dCk7XG4gIH1cblxuICAubWF0LXBhZ2luYXRvci1kZWNyZW1lbnQsXG4gIC5tYXQtcGFnaW5hdG9yLWluY3JlbWVudCB7XG4gICAgYm9yZGVyLXRvcDogMnB4IHNvbGlkIHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgJ2ljb24nKTtcbiAgICBib3JkZXItcmlnaHQ6IDJweCBzb2xpZCB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsICdpY29uJyk7XG4gIH1cblxuICAubWF0LXBhZ2luYXRvci1maXJzdCxcbiAgLm1hdC1wYWdpbmF0b3ItbGFzdCB7XG4gICAgYm9yZGVyLXRvcDogMnB4IHNvbGlkIHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgJ2ljb24nKTtcbiAgfVxuXG4gIC5tYXQtaWNvbi1idXR0b25bZGlzYWJsZWRdIHtcbiAgICAubWF0LXBhZ2luYXRvci1kZWNyZW1lbnQsXG4gICAgLm1hdC1wYWdpbmF0b3ItaW5jcmVtZW50LFxuICAgIC5tYXQtcGFnaW5hdG9yLWZpcnN0LFxuICAgIC5tYXQtcGFnaW5hdG9yLWxhc3Qge1xuICAgICAgYm9yZGVyLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsICdkaXNhYmxlZCcpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gdHlwb2dyYXBoeSgkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHR5cG9ncmFwaHkucHJpdmF0ZS10eXBvZ3JhcGh5LXRvLTIwMTQtY29uZmlnKFxuICAgICAgdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJGNvbmZpZy1vci10aGVtZSkpO1xuICAubWF0LXBhZ2luYXRvcixcbiAgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplIC5tYXQtc2VsZWN0LXRyaWdnZXIge1xuICAgIGZvbnQ6IHtcbiAgICAgIGZhbWlseTogdHlwb2dyYXBoeS11dGlscy5mb250LWZhbWlseSgkY29uZmlnLCBjYXB0aW9uKTtcbiAgICAgIHNpemU6IHR5cG9ncmFwaHktdXRpbHMuZm9udC1zaXplKCRjb25maWcsIGNhcHRpb24pO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRkZW5zaXR5LXNjYWxlOiB0aGVtaW5nLmdldC1kZW5zaXR5LWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJGhlaWdodDogY29tcGF0aWJpbGl0eS5wcml2YXRlLWRlbnNpdHktcHJvcC12YWx1ZShwYWdpbmF0b3ItdmFyaWFibGVzLiRkZW5zaXR5LWNvbmZpZyxcbiAgICAkZGVuc2l0eS1zY2FsZSwgaGVpZ2h0KTtcblxuICBAaW5jbHVkZSBjb21wYXRpYmlsaXR5LnByaXZhdGUtZGVuc2l0eS1sZWdhY3ktY29tcGF0aWJpbGl0eSgpIHtcbiAgICAubWF0LXBhZ2luYXRvci1jb250YWluZXIge1xuICAgICAgbWluLWhlaWdodDogJGhlaWdodDtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiB0aGVtaW5nLnByaXZhdGUtbGVnYWN5LWdldC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgQGluY2x1ZGUgdGhlbWluZy5wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LXBhZ2luYXRvcicpIHtcbiAgICAkY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkdGhlbWUpO1xuICAgICRkZW5zaXR5OiB0aGVtaW5nLmdldC1kZW5zaXR5LWNvbmZpZygkdGhlbWUpO1xuICAgICR0eXBvZ3JhcGh5OiB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkdGhlbWUpO1xuXG4gICAgQGlmICRjb2xvciAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIGNvbG9yKCRjb2xvcik7XG4gICAgfVxuICAgIEBpZiAkZGVuc2l0eSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIGRlbnNpdHkoJGRlbnNpdHkpO1xuICAgIH1cbiAgICBAaWYgJHR5cG9ncmFwaHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5KCR0eXBvZ3JhcGh5KTtcbiAgICB9XG4gIH1cbn1cbiIsIkB1c2UgJ3Nhc3M6bWFwJztcbkB1c2UgJy4uL2NvcmUvdGhlbWluZy90aGVtaW5nJztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5JztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5LXV0aWxzJztcblxuQG1peGluIF9jb2xvcigkcGFsZXR0ZSkge1xuICAmLm1hdC1yYWRpby1jaGVja2VkIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlIHtcbiAgICBib3JkZXItY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkcGFsZXR0ZSk7XG4gIH1cblxuICAubWF0LXJhZGlvLWlubmVyLWNpcmNsZSxcbiAgLm1hdC1yYWRpby1yaXBwbGUgLm1hdC1yaXBwbGUtZWxlbWVudDpub3QoLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZSksXG4gICYubWF0LXJhZGlvLWNoZWNrZWQgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZSxcbiAgJjphY3RpdmUgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRwYWxldHRlKTtcbiAgfVxufVxuXG5AbWl4aW4gY29sb3IoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRwcmltYXJ5OiBtYXAuZ2V0KCRjb25maWcsIHByaW1hcnkpO1xuICAkYWNjZW50OiBtYXAuZ2V0KCRjb25maWcsIGFjY2VudCk7XG4gICR3YXJuOiBtYXAuZ2V0KCRjb25maWcsIHdhcm4pO1xuICAkYmFja2dyb3VuZDogbWFwLmdldCgkY29uZmlnLCBiYWNrZ3JvdW5kKTtcbiAgJGZvcmVncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgZm9yZWdyb3VuZCk7XG5cbiAgLm1hdC1yYWRpby1vdXRlci1jaXJjbGUge1xuICAgIGJvcmRlci1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBzZWNvbmRhcnktdGV4dCk7XG4gIH1cblxuICAubWF0LXJhZGlvLWJ1dHRvbiB7XG4gICAgJi5tYXQtcHJpbWFyeSB7XG4gICAgICBAaW5jbHVkZSBfY29sb3IoJHByaW1hcnkpO1xuICAgIH1cblxuICAgICYubWF0LWFjY2VudCB7XG4gICAgICBAaW5jbHVkZSBfY29sb3IoJGFjY2VudCk7XG4gICAgfVxuXG4gICAgJi5tYXQtd2FybiB7XG4gICAgICBAaW5jbHVkZSBfY29sb3IoJHdhcm4pO1xuICAgIH1cblxuICAgIC8vIFRoaXMgbmVlZHMgZXh0cmEgc3BlY2lmaWNpdHksIGJlY2F1c2UgdGhlIGNsYXNzZXMgYWJvdmUgYXJlIGNvbWJpbmVkXG4gICAgLy8gKGUuZy4gYC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1hY2NlbnRgKSB3aGljaCBpbmNyZWFzZXMgdGhlaXIgc3BlY2lmaWNpdHkgYSBsb3QuXG4gICAgLy8gVE9ETzogY29uc2lkZXIgbWFraW5nIHRoZSBzZWxlY3RvcnMgaW50byBkZXNjZW5kYW50cyAoYC5tYXQtcHJpbWFyeSAubWF0LXJhZGlvLWJ1dHRvbmApLlxuICAgICYubWF0LXJhZGlvLWRpc2FibGVkIHtcbiAgICAgICYubWF0LXJhZGlvLWNoZWNrZWQgLm1hdC1yYWRpby1vdXRlci1jaXJjbGUsXG4gICAgICAubWF0LXJhZGlvLW91dGVyLWNpcmNsZSB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBkaXNhYmxlZCk7XG4gICAgICB9XG5cbiAgICAgIC5tYXQtcmFkaW8tcmlwcGxlIC5tYXQtcmlwcGxlLWVsZW1lbnQsXG4gICAgICAubWF0LXJhZGlvLWlubmVyLWNpcmNsZSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgZGlzYWJsZWQpO1xuICAgICAgfVxuXG4gICAgICAubWF0LXJhZGlvLWxhYmVsLWNvbnRlbnQge1xuICAgICAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBkaXNhYmxlZCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gU3dpdGNoIHRoaXMgdG8gYSBzb2xpZCBjb2xvciBzaW5jZSB3ZSdyZSB1c2luZyBgb3BhY2l0eWBcbiAgICAvLyB0byBjb250cm9sIGhvdyBvcGFxdWUgdGhlIHJpcHBsZSBzaG91bGQgYmUuXG4gICAgLm1hdC1yaXBwbGUtZWxlbWVudCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtYXAuZ2V0KCRmb3JlZ3JvdW5kLCBiYXNlKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHR5cG9ncmFwaHkoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0eXBvZ3JhcGh5LnByaXZhdGUtdHlwb2dyYXBoeS10by0yMDE0LWNvbmZpZyhcbiAgICAgIHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCRjb25maWctb3ItdGhlbWUpKTtcbiAgLm1hdC1yYWRpby1idXR0b24ge1xuICAgIGZvbnQtZmFtaWx5OiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtZmFtaWx5KCRjb25maWcpO1xuICB9XG59XG5cbkBtaXhpbiBfZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZykge1xuICAkdGhlbWU6IHRoZW1pbmcucHJpdmF0ZS1sZWdhY3ktZ2V0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICBAaW5jbHVkZSB0aGVtaW5nLnByaXZhdGUtY2hlY2stZHVwbGljYXRlLXRoZW1lLXN0eWxlcygkdGhlbWUsICdtYXQtcmFkaW8nKSB7XG4gICAgJGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJHRoZW1lKTtcbiAgICAkZGVuc2l0eTogdGhlbWluZy5nZXQtZGVuc2l0eS1jb25maWcoJHRoZW1lKTtcbiAgICAkdHlwb2dyYXBoeTogdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJHRoZW1lKTtcblxuICAgIEBpZiAkY29sb3IgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBjb2xvcigkY29sb3IpO1xuICAgIH1cbiAgICBAaWYgJGRlbnNpdHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBfZGVuc2l0eSgkZGVuc2l0eSk7XG4gICAgfVxuICAgIEBpZiAkdHlwb2dyYXBoeSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIHR5cG9ncmFwaHkoJHR5cG9ncmFwaHkpO1xuICAgIH1cbiAgfVxufVxuIiwiQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnLi4vY29yZS90aGVtaW5nL3RoZW1pbmcnO1xuQHVzZSAnLi4vY29yZS9zdHlsZS9wcml2YXRlJztcbkB1c2UgJy4uL2NvcmUvc3R5bGUvZm9ybS1jb21tb24nO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHknO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHktdXRpbHMnO1xuXG5cbkBtaXhpbiBjb2xvcigkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJGZvcmVncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgZm9yZWdyb3VuZCk7XG4gICRiYWNrZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGJhY2tncm91bmQpO1xuICAkcHJpbWFyeTogbWFwLmdldCgkY29uZmlnLCBwcmltYXJ5KTtcbiAgJGFjY2VudDogbWFwLmdldCgkY29uZmlnLCBhY2NlbnQpO1xuICAkd2FybjogbWFwLmdldCgkY29uZmlnLCB3YXJuKTtcblxuICAubWF0LXNlbGVjdC12YWx1ZSB7XG4gICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgdGV4dCk7XG4gIH1cblxuICAubWF0LXNlbGVjdC1wbGFjZWhvbGRlciB7XG4gICAgY29sb3I6IGZvcm0tY29tbW9uLnByaXZhdGUtY29udHJvbC1wbGFjZWhvbGRlci1jb2xvcigkY29uZmlnKTtcbiAgfVxuXG4gIC5tYXQtc2VsZWN0LWRpc2FibGVkIC5tYXQtc2VsZWN0LXZhbHVlIHtcbiAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBkaXNhYmxlZC10ZXh0KTtcbiAgfVxuXG4gIC5tYXQtc2VsZWN0LWFycm93IHtcbiAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBzZWNvbmRhcnktdGV4dCk7XG4gIH1cblxuICAubWF0LXNlbGVjdC1wYW5lbCB7XG4gICAgYmFja2dyb3VuZDogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLCBjYXJkKTtcbiAgICBAaW5jbHVkZSBwcml2YXRlLnByaXZhdGUtdGhlbWUtb3ZlcnJpZGFibGUtZWxldmF0aW9uKDQsICRjb25maWcpO1xuXG4gICAgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkOm5vdCgubWF0LW9wdGlvbi1tdWx0aXBsZSkge1xuICAgICAgYmFja2dyb3VuZDogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLCBob3ZlciwgMC4xMik7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1mb3JtLWZpZWxkIHtcbiAgICAmLm1hdC1mb2N1c2VkIHtcbiAgICAgICYubWF0LXByaW1hcnkgLm1hdC1zZWxlY3QtYXJyb3cge1xuICAgICAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRwcmltYXJ5LCB0ZXh0KTtcbiAgICAgIH1cblxuICAgICAgJi5tYXQtYWNjZW50IC5tYXQtc2VsZWN0LWFycm93IHtcbiAgICAgICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYWNjZW50LCB0ZXh0KTtcbiAgICAgIH1cblxuICAgICAgJi5tYXQtd2FybiAubWF0LXNlbGVjdC1hcnJvdyB7XG4gICAgICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHdhcm4sIHRleHQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC5tYXQtc2VsZWN0Lm1hdC1zZWxlY3QtaW52YWxpZCAubWF0LXNlbGVjdC1hcnJvdyB7XG4gICAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCR3YXJuLCB0ZXh0KTtcbiAgICB9XG5cbiAgICAubWF0LXNlbGVjdC5tYXQtc2VsZWN0LWRpc2FibGVkIC5tYXQtc2VsZWN0LWFycm93IHtcbiAgICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIGRpc2FibGVkLXRleHQpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gdHlwb2dyYXBoeSgkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHR5cG9ncmFwaHkucHJpdmF0ZS10eXBvZ3JhcGh5LXRvLTIwMTQtY29uZmlnKFxuICAgICAgdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJGNvbmZpZy1vci10aGVtZSkpO1xuICAvLyBUaGUgdW5pdC1sZXNzIGxpbmUtaGVpZ2h0IGZyb20gdGhlIGZvbnQgY29uZmlnLlxuICAkbGluZS1oZWlnaHQ6IHR5cG9ncmFwaHktdXRpbHMubGluZS1oZWlnaHQoJGNvbmZpZywgaW5wdXQpO1xuXG4gIC5tYXQtc2VsZWN0IHtcbiAgICBmb250LWZhbWlseTogdHlwb2dyYXBoeS11dGlscy5mb250LWZhbWlseSgkY29uZmlnKTtcbiAgfVxuXG4gIC5tYXQtc2VsZWN0LXRyaWdnZXIge1xuICAgIGhlaWdodDogJGxpbmUtaGVpZ2h0ICogMWVtO1xuICB9XG59XG5cbkBtaXhpbiBfZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZykge1xuICAkdGhlbWU6IHRoZW1pbmcucHJpdmF0ZS1sZWdhY3ktZ2V0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICBAaW5jbHVkZSB0aGVtaW5nLnByaXZhdGUtY2hlY2stZHVwbGljYXRlLXRoZW1lLXN0eWxlcygkdGhlbWUsICdtYXQtc2VsZWN0Jykge1xuICAgICRjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgJGRlbnNpdHk6IHRoZW1pbmcuZ2V0LWRlbnNpdHktY29uZmlnKCR0aGVtZSk7XG4gICAgJHR5cG9ncmFwaHk6IHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCR0aGVtZSk7XG5cbiAgICBAaWYgJGNvbG9yICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgX2RlbnNpdHkoJGRlbnNpdHkpO1xuICAgIH1cbiAgICBAaWYgJHR5cG9ncmFwaHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5KCR0eXBvZ3JhcGh5KTtcbiAgICB9XG4gIH1cbn1cbiIsIkB1c2UgJ3Nhc3M6bWFwJztcbkB1c2UgJy4uL2NvcmUvc3R5bGUvcHJpdmF0ZSc7XG5AdXNlICcuLi9jb3JlL3RoZW1pbmcvcGFsZXR0ZSc7XG5AdXNlICcuLi9jb3JlL3RoZW1pbmcvdGhlbWluZyc7XG5AdXNlICcuLi9jb3JlL3R5cG9ncmFwaHkvdHlwb2dyYXBoeSc7XG5AdXNlICcuLi9jb3JlL3R5cG9ncmFwaHkvdHlwb2dyYXBoeS11dGlscyc7XG5cbkBtaXhpbiBfY2hlY2tlZC1jb2xvcigkcGFsZXR0ZSwgJHRodW1iLWNoZWNrZWQtaHVlKSB7XG4gICYubWF0LWNoZWNrZWQge1xuICAgIC5tYXQtc2xpZGUtdG9nZ2xlLXRodW1iIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkcGFsZXR0ZSwgJHRodW1iLWNoZWNrZWQtaHVlKTtcbiAgICB9XG5cbiAgICAubWF0LXNsaWRlLXRvZ2dsZS1iYXIge1xuICAgICAgLy8gT3BhY2l0eSBpcyBkZXRlcm1pbmVkIGZyb20gdGhlIHNwZWNzIGZvciB0aGUgc2VsZWN0aW9uIGNvbnRyb2xzLlxuICAgICAgLy8gU2VlOiBodHRwczovL21hdGVyaWFsLmlvL2Rlc2lnbi9jb21wb25lbnRzL3NlbGVjdGlvbi1jb250cm9scy5odG1sI3NwZWNzXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHBhbGV0dGUsICR0aHVtYi1jaGVja2VkLWh1ZSwgMC41NCk7XG4gICAgfVxuXG4gICAgLm1hdC1yaXBwbGUtZWxlbWVudCB7XG4gICAgICAvLyBTZXQgbm8gb3BhY2l0eSBmb3IgdGhlIHJpcHBsZXMgYmVjYXVzZSB0aGUgcmlwcGxlIG9wYWNpdHkgd2lsbCBiZSBhZGp1c3RlZCBkeW5hbWljYWxseVxuICAgICAgLy8gYmFzZWQgb24gdGhlIHR5cGUgb2YgaW50ZXJhY3Rpb24gd2l0aCB0aGUgc2xpZGUtdG9nZ2xlIChlLmcuIGZvciBob3ZlciwgZm9jdXMpXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHBhbGV0dGUsICR0aHVtYi1jaGVja2VkLWh1ZSk7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBjb2xvcigkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJGlzLWRhcms6IG1hcC5nZXQoJGNvbmZpZywgaXMtZGFyayk7XG4gICRwcmltYXJ5OiBtYXAuZ2V0KCRjb25maWcsIHByaW1hcnkpO1xuICAkYWNjZW50OiBtYXAuZ2V0KCRjb25maWcsIGFjY2VudCk7XG4gICR3YXJuOiBtYXAuZ2V0KCRjb25maWcsIHdhcm4pO1xuICAkYmFja2dyb3VuZDogbWFwLmdldCgkY29uZmlnLCBiYWNrZ3JvdW5kKTtcbiAgJGZvcmVncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgZm9yZWdyb3VuZCk7XG5cbiAgLy8gQ29sb3IgaHVlcyBhcmUgYmFzZWQgb24gdGhlIHNwZWNzIHdoaWNoIGJyaWVmbHkgc2hvdyB0aGUgaHVlcyB0aGF0IGFyZSBhcHBsaWVkIHRvIGEgc3dpdGNoLlxuICAvLyBUaGUgMjAxOCBzcGVjcyBubyBsb25nZXIgZGVzY3JpYmUgaG93IGRhcmsgc3dpdGNoZXMgc2hvdWxkIGxvb2sgbGlrZS4gRHVlIHRvIHRoZSBsYWNrIG9mXG4gIC8vIGluZm9ybWF0aW9uIGZvciBkYXJrIHRoZW1lZCBzd2l0Y2hlcywgd2UgcGFydGlhbGx5IGtlZXAgdGhlIG9sZCBiZWhhdmlvciB0aGF0IGlzIGJhc2VkIG9uXG4gIC8vIHRoZSBwcmV2aW91cyBzcGVjaWZpY2F0aW9ucy4gRm9yIHRoZSBjaGVja2VkIGNvbG9yIHdlIGFsd2F5cyB1c2UgdGhlIGBkZWZhdWx0YCBodWUgYmVjYXVzZVxuICAvLyB0aGF0IGZvbGxvd3MgTURDIGFuZCBhbHNvIG1ha2VzIGl0IGVhc2llciBmb3IgcGVvcGxlIHRvIGNyZWF0ZSBhIGN1c3RvbSB0aGVtZSB3aXRob3V0IG5lZWRpbmdcbiAgLy8gdG8gc3BlY2lmeSBlYWNoIGh1ZSBpbmRpdmlkdWFsbHkuXG4gICR0aHVtYi11bmNoZWNrZWQtaHVlOiBpZigkaXMtZGFyaywgNDAwLCA1MCk7XG4gICR0aHVtYi1jaGVja2VkLWh1ZTogZGVmYXVsdDtcblxuICAkYmFyLXVuY2hlY2tlZC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBkaXNhYmxlZCk7XG4gICRyaXBwbGUtdW5jaGVja2VkLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIGJhc2UpO1xuXG4gIC5tYXQtc2xpZGUtdG9nZ2xlIHtcbiAgICBAaW5jbHVkZSBfY2hlY2tlZC1jb2xvcigkYWNjZW50LCAkdGh1bWItY2hlY2tlZC1odWUpO1xuXG4gICAgJi5tYXQtcHJpbWFyeSB7XG4gICAgICBAaW5jbHVkZSBfY2hlY2tlZC1jb2xvcigkcHJpbWFyeSwgJHRodW1iLWNoZWNrZWQtaHVlKTtcbiAgICB9XG5cbiAgICAmLm1hdC13YXJuIHtcbiAgICAgIEBpbmNsdWRlIF9jaGVja2VkLWNvbG9yKCR3YXJuLCAkdGh1bWItY2hlY2tlZC1odWUpO1xuICAgIH1cblxuICAgICY6bm90KC5tYXQtY2hlY2tlZCkgLm1hdC1yaXBwbGUtZWxlbWVudCB7XG4gICAgICAvLyBTZXQgbm8gb3BhY2l0eSBmb3IgdGhlIHJpcHBsZXMgYmVjYXVzZSB0aGUgcmlwcGxlIG9wYWNpdHkgd2lsbCBiZSBhZGp1c3RlZCBkeW5hbWljYWxseVxuICAgICAgLy8gYmFzZWQgb24gdGhlIHR5cGUgb2YgaW50ZXJhY3Rpb24gd2l0aCB0aGUgc2xpZGUtdG9nZ2xlIChlLmcuIGZvciBob3ZlciwgZm9jdXMpXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkcmlwcGxlLXVuY2hlY2tlZC1jb2xvcjtcbiAgICB9XG4gIH1cblxuICAubWF0LXNsaWRlLXRvZ2dsZS10aHVtYiB7XG4gICAgQGluY2x1ZGUgcHJpdmF0ZS5wcml2YXRlLXRoZW1lLWVsZXZhdGlvbigxLCAkY29uZmlnKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUocGFsZXR0ZS4kZ3JleS1wYWxldHRlLCAkdGh1bWItdW5jaGVja2VkLWh1ZSk7XG4gIH1cblxuICAubWF0LXNsaWRlLXRvZ2dsZS1iYXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRiYXItdW5jaGVja2VkLWNvbG9yO1xuICB9XG59XG5cbkBtaXhpbiB0eXBvZ3JhcGh5KCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdHlwb2dyYXBoeS5wcml2YXRlLXR5cG9ncmFwaHktdG8tMjAxNC1jb25maWcoXG4gICAgICB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKSk7XG4gIC5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnQge1xuICAgIGZvbnQtZmFtaWx5OiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtZmFtaWx5KCRjb25maWcpO1xuICB9XG59XG5cbkBtaXhpbiBfZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZykge1xuICAkdGhlbWU6IHRoZW1pbmcucHJpdmF0ZS1sZWdhY3ktZ2V0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICBAaW5jbHVkZSB0aGVtaW5nLnByaXZhdGUtY2hlY2stZHVwbGljYXRlLXRoZW1lLXN0eWxlcygkdGhlbWUsICdtYXQtc2xpZGUtdG9nZ2xlJykge1xuICAgICRjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgJGRlbnNpdHk6IHRoZW1pbmcuZ2V0LWRlbnNpdHktY29uZmlnKCR0aGVtZSk7XG4gICAgJHR5cG9ncmFwaHk6IHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCR0aGVtZSk7XG5cbiAgICBAaWYgJGNvbG9yICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgX2RlbnNpdHkoJGRlbnNpdHkpO1xuICAgIH1cbiAgICBAaWYgJHR5cG9ncmFwaHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5KCR0eXBvZ3JhcGh5KTtcbiAgICB9XG4gIH1cbn1cblxuIiwiQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnc2FzczptZXRhJztcbkB1c2UgJy4uL2NvcmUvdGhlbWluZy90aGVtaW5nJztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5JztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5LXV0aWxzJztcblxuQG1peGluIF9pbm5lci1jb250ZW50LXRoZW1lKCRwYWxldHRlKSB7XG4gIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGwsXG4gIC5tYXQtc2xpZGVyLXRodW1iLFxuICAubWF0LXNsaWRlci10aHVtYi1sYWJlbCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRwYWxldHRlKTtcbiAgfVxuXG4gIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHQge1xuICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHBhbGV0dGUsIGRlZmF1bHQtY29udHJhc3QpO1xuICB9XG5cbiAgLm1hdC1zbGlkZXItZm9jdXMtcmluZyB7XG4gICAgJG9wYWNpdHk6IDAuMjtcbiAgICAkY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkcGFsZXR0ZSwgZGVmYXVsdCwgJG9wYWNpdHkpO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvcjtcblxuICAgIC8vIGBtYXQtY29sb3JgIHVzZXMgYHJnYmFgIGZvciB0aGUgb3BhY2l0eSB3aGljaCB3b24ndCB3b3JrIHdpdGhcbiAgICAvLyBDU1MgdmFyaWFibGVzIHNvIHdlIG5lZWQgdG8gdXNlIGBvcGFjaXR5YCBhcyBhIGZhbGxiYWNrLlxuICAgIEBpZiAobWV0YS50eXBlLW9mKCRjb2xvcikgIT0gY29sb3IpIHtcbiAgICAgIG9wYWNpdHk6ICRvcGFjaXR5O1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gY29sb3IoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRwcmltYXJ5OiBtYXAuZ2V0KCRjb25maWcsIHByaW1hcnkpO1xuICAkYWNjZW50OiBtYXAuZ2V0KCRjb25maWcsIGFjY2VudCk7XG4gICR3YXJuOiBtYXAuZ2V0KCRjb25maWcsIHdhcm4pO1xuICAkYmFja2dyb3VuZDogbWFwLmdldCgkY29uZmlnLCBiYWNrZ3JvdW5kKTtcbiAgJGZvcmVncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgZm9yZWdyb3VuZCk7XG5cbiAgJG1hdC1zbGlkZXItb2ZmLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIHNsaWRlci1vZmYpO1xuICAkbWF0LXNsaWRlci1vZmYtZm9jdXNlZC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBzbGlkZXItb2ZmLWFjdGl2ZSk7XG4gICRtYXQtc2xpZGVyLWRpc2FibGVkLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIHNsaWRlci1vZmYpO1xuICAkbWF0LXNsaWRlci1sYWJlbGVkLW1pbi12YWx1ZS10aHVtYi1jb2xvcjpcbiAgICB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIHNsaWRlci1taW4pO1xuICAkbWF0LXNsaWRlci1sYWJlbGVkLW1pbi12YWx1ZS10aHVtYi1sYWJlbC1jb2xvcjpcbiAgICB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIHNsaWRlci1vZmYpO1xuICAkbWF0LXNsaWRlci10aWNrLW9wYWNpdHk6IDAuNztcbiAgJG1hdC1zbGlkZXItdGljay1jb2xvcjpcbiAgICB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIGJhc2UsICRtYXQtc2xpZGVyLXRpY2stb3BhY2l0eSk7XG4gICRtYXQtc2xpZGVyLXRpY2stc2l6ZTogMnB4O1xuXG4gIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmQge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRtYXQtc2xpZGVyLW9mZi1jb2xvcjtcbiAgfVxuXG4gIC5tYXQtcHJpbWFyeSB7XG4gICAgQGluY2x1ZGUgX2lubmVyLWNvbnRlbnQtdGhlbWUoJHByaW1hcnkpO1xuICB9XG5cbiAgLm1hdC1hY2NlbnQge1xuICAgIEBpbmNsdWRlIF9pbm5lci1jb250ZW50LXRoZW1lKCRhY2NlbnQpO1xuICB9XG5cbiAgLm1hdC13YXJuIHtcbiAgICBAaW5jbHVkZSBfaW5uZXItY29udGVudC10aGVtZSgkd2Fybik7XG4gIH1cblxuICAubWF0LXNsaWRlcjpob3ZlcixcbiAgLmNkay1mb2N1c2VkIHtcbiAgICAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5kIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRtYXQtc2xpZGVyLW9mZi1mb2N1c2VkLWNvbG9yO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtc2xpZGVyLWRpc2FibGVkIHtcbiAgICAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5kLFxuICAgIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGwsXG4gICAgLm1hdC1zbGlkZXItdGh1bWIge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJG1hdC1zbGlkZXItZGlzYWJsZWQtY29sb3I7XG4gICAgfVxuXG4gICAgJjpob3ZlciB7XG4gICAgICAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5kIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJG1hdC1zbGlkZXItZGlzYWJsZWQtY29sb3I7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLm1hdC1zbGlkZXItbWluLXZhbHVlIHtcbiAgICAubWF0LXNsaWRlci1mb2N1cy1yaW5nIHtcbiAgICAgICRvcGFjaXR5OiAwLjEyO1xuICAgICAgJGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIGJhc2UsICRvcGFjaXR5KTtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvcjtcblxuICAgICAgLy8gYG1hdC1jb2xvcmAgdXNlcyBgcmdiYWAgZm9yIHRoZSBvcGFjaXR5IHdoaWNoIHdvbid0IHdvcmsgd2l0aFxuICAgICAgLy8gQ1NTIHZhcmlhYmxlcyBzbyB3ZSBuZWVkIHRvIHVzZSBgb3BhY2l0eWAgYXMgYSBmYWxsYmFjay5cbiAgICAgIEBpZiAobWV0YS50eXBlLW9mKCRjb2xvcikgIT0gY29sb3IpIHtcbiAgICAgICAgb3BhY2l0eTogJG9wYWNpdHk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJi5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcge1xuICAgICAgLm1hdC1zbGlkZXItdGh1bWIsXG4gICAgICAubWF0LXNsaWRlci10aHVtYi1sYWJlbCB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRtYXQtc2xpZGVyLWxhYmVsZWQtbWluLXZhbHVlLXRodW1iLWNvbG9yO1xuICAgICAgfVxuXG4gICAgICAmLmNkay1mb2N1c2VkIHtcbiAgICAgICAgLm1hdC1zbGlkZXItdGh1bWIsXG4gICAgICAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsIHtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkbWF0LXNsaWRlci1sYWJlbGVkLW1pbi12YWx1ZS10aHVtYi1sYWJlbC1jb2xvcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICY6bm90KC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcpIHtcbiAgICAgIC5tYXQtc2xpZGVyLXRodW1iIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAkbWF0LXNsaWRlci1vZmYtY29sb3I7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgfVxuXG4gICAgICAmOmhvdmVyLFxuICAgICAgJi5jZGstZm9jdXNlZCB7XG4gICAgICAgIC5tYXQtc2xpZGVyLXRodW1iIHtcbiAgICAgICAgICBib3JkZXItY29sb3I6ICRtYXQtc2xpZGVyLW9mZi1mb2N1c2VkLWNvbG9yO1xuICAgICAgICB9XG5cbiAgICAgICAgJi5tYXQtc2xpZGVyLWRpc2FibGVkIC5tYXQtc2xpZGVyLXRodW1iIHtcbiAgICAgICAgICBib3JkZXItY29sb3I6ICRtYXQtc2xpZGVyLWRpc2FibGVkLWNvbG9yO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLm1hdC1zbGlkZXItaGFzLXRpY2tzIC5tYXQtc2xpZGVyLXdyYXBwZXI6OmFmdGVyIHtcbiAgICBib3JkZXItY29sb3I6ICRtYXQtc2xpZGVyLXRpY2stY29sb3I7XG5cbiAgICAvLyBgbWF0LWNvbG9yYCB1c2VzIGByZ2JhYCBmb3IgdGhlIG9wYWNpdHkgd2hpY2ggd29uJ3Qgd29yayB3aXRoXG4gICAgLy8gQ1NTIHZhcmlhYmxlcyBzbyB3ZSBuZWVkIHRvIHVzZSBgb3BhY2l0eWAgYXMgYSBmYWxsYmFjay5cbiAgICBAaWYgKG1ldGEudHlwZS1vZigkbWF0LXNsaWRlci10aWNrLWNvbG9yKSAhPSBjb2xvcikge1xuICAgICAgb3BhY2l0eTogJG1hdC1zbGlkZXItdGljay1vcGFjaXR5O1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtc2xpZGVyLWhvcml6b250YWwgLm1hdC1zbGlkZXItdGlja3Mge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IHJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQodG8gcmlnaHQsICRtYXQtc2xpZGVyLXRpY2stY29sb3IsXG4gICAgICAgICRtYXQtc2xpZGVyLXRpY2stY29sb3IgJG1hdC1zbGlkZXItdGljay1zaXplLCB0cmFuc3BhcmVudCAwLCB0cmFuc3BhcmVudCk7XG4gICAgLy8gRmlyZWZveCBkb2Vzbid0IGRyYXcgdGhlIGdyYWRpZW50IGNvcnJlY3RseSB3aXRoICd0byByaWdodCdcbiAgICAvLyAoc2VlIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTEzMTQzMTkpLlxuICAgIGJhY2tncm91bmQtaW1hZ2U6IC1tb3otcmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCgwLjAwMDFkZWcsICRtYXQtc2xpZGVyLXRpY2stY29sb3IsXG4gICAgICAgICRtYXQtc2xpZGVyLXRpY2stY29sb3IgJG1hdC1zbGlkZXItdGljay1zaXplLCB0cmFuc3BhcmVudCAwLCB0cmFuc3BhcmVudCk7XG5cbiAgICAvLyBgbWF0LWNvbG9yYCB1c2VzIGByZ2JhYCBmb3IgdGhlIG9wYWNpdHkgd2hpY2ggd29uJ3Qgd29yayB3aXRoXG4gICAgLy8gQ1NTIHZhcmlhYmxlcyBzbyB3ZSBuZWVkIHRvIHVzZSBgb3BhY2l0eWAgYXMgYSBmYWxsYmFjay5cbiAgICBAaWYgKG1ldGEudHlwZS1vZigkbWF0LXNsaWRlci10aWNrLWNvbG9yKSAhPSBjb2xvcikge1xuICAgICAgb3BhY2l0eTogJG1hdC1zbGlkZXItdGljay1vcGFjaXR5O1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtc2xpZGVyLXZlcnRpY2FsIC5tYXQtc2xpZGVyLXRpY2tzIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiByZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgJG1hdC1zbGlkZXItdGljay1jb2xvcixcbiAgICAgICAgJG1hdC1zbGlkZXItdGljay1jb2xvciAkbWF0LXNsaWRlci10aWNrLXNpemUsIHRyYW5zcGFyZW50IDAsIHRyYW5zcGFyZW50KTtcblxuICAgIC8vIGBtYXQtY29sb3JgIHVzZXMgYHJnYmFgIGZvciB0aGUgb3BhY2l0eSB3aGljaCB3b24ndCB3b3JrIHdpdGhcbiAgICAvLyBDU1MgdmFyaWFibGVzIHNvIHdlIG5lZWQgdG8gdXNlIGBvcGFjaXR5YCBhcyBhIGZhbGxiYWNrLlxuICAgIEBpZiAobWV0YS50eXBlLW9mKCRtYXQtc2xpZGVyLXRpY2stY29sb3IpICE9IGNvbG9yKSB7XG4gICAgICBvcGFjaXR5OiAkbWF0LXNsaWRlci10aWNrLW9wYWNpdHk7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiB0eXBvZ3JhcGh5KCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdHlwb2dyYXBoeS5wcml2YXRlLXR5cG9ncmFwaHktdG8tMjAxNC1jb25maWcoXG4gICAgICB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKSk7XG4gIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHQge1xuICAgIGZvbnQ6IHtcbiAgICAgIGZhbWlseTogdHlwb2dyYXBoeS11dGlscy5mb250LWZhbWlseSgkY29uZmlnKTtcbiAgICAgIHNpemU6IHR5cG9ncmFwaHktdXRpbHMuZm9udC1zaXplKCRjb25maWcsIGNhcHRpb24pO1xuICAgICAgd2VpZ2h0OiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtd2VpZ2h0KCRjb25maWcsIGJvZHktMik7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBfZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZykge1xuICAkdGhlbWU6IHRoZW1pbmcucHJpdmF0ZS1sZWdhY3ktZ2V0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICBAaW5jbHVkZSB0aGVtaW5nLnByaXZhdGUtY2hlY2stZHVwbGljYXRlLXRoZW1lLXN0eWxlcygkdGhlbWUsICdtYXQtc2xpZGVyJykge1xuICAgICRjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgJGRlbnNpdHk6IHRoZW1pbmcuZ2V0LWRlbnNpdHktY29uZmlnKCR0aGVtZSk7XG4gICAgJHR5cG9ncmFwaHk6IHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCR0aGVtZSk7XG5cbiAgICBAaWYgJGNvbG9yICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgX2RlbnNpdHkoJGRlbnNpdHkpO1xuICAgIH1cbiAgICBAaWYgJHR5cG9ncmFwaHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5KCR0eXBvZ3JhcGh5KTtcbiAgICB9XG4gIH1cbn1cbiIsIkB1c2UgJ3Nhc3M6bWFwJztcbkB1c2UgJy4uL2NvcmUvdGhlbWluZy90aGVtaW5nJztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5JztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5LXV0aWxzJztcbkB1c2UgJy4uL2NvcmUvZGVuc2l0eS9wcml2YXRlL2NvbXBhdGliaWxpdHknO1xuQHVzZSAnLi9zdGVwcGVyLXZhcmlhYmxlcyc7XG5cbkBtaXhpbiBjb2xvcigkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJGZvcmVncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgZm9yZWdyb3VuZCk7XG4gICRiYWNrZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGJhY2tncm91bmQpO1xuICAkcHJpbWFyeTogbWFwLmdldCgkY29uZmlnLCBwcmltYXJ5KTtcbiAgJGFjY2VudDogbWFwLmdldCgkY29uZmlnLCBhY2NlbnQpO1xuICAkd2FybjogbWFwLmdldCgkY29uZmlnLCB3YXJuKTtcblxuICAubWF0LXN0ZXAtaGVhZGVyIHtcbiAgICAmLmNkay1rZXlib2FyZC1mb2N1c2VkLFxuICAgICYuY2RrLXByb2dyYW0tZm9jdXNlZCxcbiAgICAmOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYmFja2dyb3VuZCwgaG92ZXIpO1xuICAgIH1cblxuICAgIC8vIE9uIHRvdWNoIGRldmljZXMgdGhlIDpob3ZlciBzdGF0ZSB3aWxsIGxpbmdlciBvbiB0aGUgZWxlbWVudCBhZnRlciBhIHRhcC5cbiAgICAvLyBSZXNldCBpdCB2aWEgYEBtZWRpYWAgYWZ0ZXIgdGhlIGRlY2xhcmF0aW9uLCBiZWNhdXNlIHRoZSBtZWRpYSBxdWVyeSBpc24ndFxuICAgIC8vIHN1cHBvcnRlZCBieSBhbGwgYnJvd3NlcnMgeWV0LlxuICAgIEBtZWRpYSAoaG92ZXI6IG5vbmUpIHtcbiAgICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgICAgfVxuICAgIH1cblxuICAgIC5tYXQtc3RlcC1sYWJlbCxcbiAgICAubWF0LXN0ZXAtb3B0aW9uYWwge1xuICAgICAgLy8gVE9ETyhqb3NlcGhwZXJyb3R0KTogVXBkYXRlIHRvIHVzaW5nIGEgY29ycmVjdGVkIGRpc2FibGVkLXRleHQgY29udHJhc3RcbiAgICAgIC8vIGluc3RlYWQgb2Ygc2Vjb25kYXJ5LXRleHQuXG4gICAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBzZWNvbmRhcnktdGV4dCk7XG4gICAgfVxuXG4gICAgLm1hdC1zdGVwLWljb24ge1xuICAgICAgLy8gVE9ETyhqb3NlcGhwZXJyb3R0KTogVXBkYXRlIHRvIHVzaW5nIGEgY29ycmVjdGVkIGRpc2FibGVkLXRleHQgY29udHJhc3RcbiAgICAgIC8vIGluc3RlYWQgb2Ygc2Vjb25kYXJ5LXRleHQuXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIHNlY29uZGFyeS10ZXh0KTtcbiAgICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHByaW1hcnksIGRlZmF1bHQtY29udHJhc3QpO1xuICAgIH1cblxuICAgIC5tYXQtc3RlcC1pY29uLXNlbGVjdGVkLFxuICAgIC5tYXQtc3RlcC1pY29uLXN0YXRlLWRvbmUsXG4gICAgLm1hdC1zdGVwLWljb24tc3RhdGUtZWRpdCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHByaW1hcnkpO1xuICAgICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkcHJpbWFyeSwgZGVmYXVsdC1jb250cmFzdCk7XG4gICAgfVxuXG4gICAgJi5tYXQtYWNjZW50IHtcbiAgICAgIC5tYXQtc3RlcC1pY29uIHtcbiAgICAgICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYWNjZW50LCBkZWZhdWx0LWNvbnRyYXN0KTtcbiAgICAgIH1cblxuICAgICAgLm1hdC1zdGVwLWljb24tc2VsZWN0ZWQsXG4gICAgICAubWF0LXN0ZXAtaWNvbi1zdGF0ZS1kb25lLFxuICAgICAgLm1hdC1zdGVwLWljb24tc3RhdGUtZWRpdCB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYWNjZW50KTtcbiAgICAgICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYWNjZW50LCBkZWZhdWx0LWNvbnRyYXN0KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLm1hdC13YXJuIHtcbiAgICAgIC5tYXQtc3RlcC1pY29uIHtcbiAgICAgICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkd2FybiwgZGVmYXVsdC1jb250cmFzdCk7XG4gICAgICB9XG5cbiAgICAgIC5tYXQtc3RlcC1pY29uLXNlbGVjdGVkLFxuICAgICAgLm1hdC1zdGVwLWljb24tc3RhdGUtZG9uZSxcbiAgICAgIC5tYXQtc3RlcC1pY29uLXN0YXRlLWVkaXQge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHdhcm4pO1xuICAgICAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCR3YXJuLCBkZWZhdWx0LWNvbnRyYXN0KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAubWF0LXN0ZXAtaWNvbi1zdGF0ZS1lcnJvciB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHdhcm4sIHRleHQpO1xuICAgIH1cblxuICAgIC5tYXQtc3RlcC1sYWJlbC5tYXQtc3RlcC1sYWJlbC1hY3RpdmUge1xuICAgICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgdGV4dCk7XG4gICAgfVxuXG4gICAgLm1hdC1zdGVwLWxhYmVsLm1hdC1zdGVwLWxhYmVsLWVycm9yIHtcbiAgICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHdhcm4sIHRleHQpO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsLCAubWF0LXN0ZXBwZXItdmVydGljYWwge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYmFja2dyb3VuZCwgY2FyZCk7XG4gIH1cblxuICAubWF0LXN0ZXBwZXItdmVydGljYWwtbGluZTo6YmVmb3JlIHtcbiAgICBib3JkZXItbGVmdC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBkaXZpZGVyKTtcbiAgfVxuXG4gIC5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlcjo6YmVmb3JlLFxuICAubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXI6OmFmdGVyLFxuICAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbC1saW5lIHtcbiAgICBib3JkZXItdG9wLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIGRpdmlkZXIpO1xuICB9XG59XG5cbkBtaXhpbiB0eXBvZ3JhcGh5KCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdHlwb2dyYXBoeS5wcml2YXRlLXR5cG9ncmFwaHktdG8tMjAxNC1jb25maWcoXG4gICAgICB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKSk7XG4gIC5tYXQtc3RlcHBlci12ZXJ0aWNhbCwgLm1hdC1zdGVwcGVyLWhvcml6b250YWwge1xuICAgIGZvbnQtZmFtaWx5OiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtZmFtaWx5KCRjb25maWcpO1xuICB9XG5cbiAgLm1hdC1zdGVwLWxhYmVsIHtcbiAgICBmb250OiB7XG4gICAgICBzaXplOiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtc2l6ZSgkY29uZmlnLCBib2R5LTEpO1xuICAgICAgd2VpZ2h0OiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtd2VpZ2h0KCRjb25maWcsIGJvZHktMSk7XG4gICAgfTtcbiAgfVxuXG4gIC5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3Ige1xuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIH1cblxuICAubWF0LXN0ZXAtbGFiZWwtZXJyb3Ige1xuICAgIGZvbnQtc2l6ZTogdHlwb2dyYXBoeS11dGlscy5mb250LXNpemUoJGNvbmZpZywgYm9keS0yKTtcbiAgfVxuXG4gIC5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZCB7XG4gICAgZm9udDoge1xuICAgICAgc2l6ZTogdHlwb2dyYXBoeS11dGlscy5mb250LXNpemUoJGNvbmZpZywgYm9keS0yKTtcbiAgICAgIHdlaWdodDogdHlwb2dyYXBoeS11dGlscy5mb250LXdlaWdodCgkY29uZmlnLCBib2R5LTIpO1xuICAgIH07XG4gIH1cbn1cblxuQG1peGluIGRlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge1xuICAkZGVuc2l0eS1zY2FsZTogdGhlbWluZy5nZXQtZGVuc2l0eS1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRoZWlnaHQ6IGNvbXBhdGliaWxpdHkucHJpdmF0ZS1kZW5zaXR5LXByb3AtdmFsdWUoc3RlcHBlci12YXJpYWJsZXMuJGRlbnNpdHktY29uZmlnLFxuICAgICRkZW5zaXR5LXNjYWxlLCBoZWlnaHQpO1xuICAkdmVydGljYWwtcGFkZGluZzogKCRoZWlnaHQgLSBzdGVwcGVyLXZhcmlhYmxlcy4kbGFiZWwtaGVhZGVyLWhlaWdodCkgLyAyO1xuXG4gIEBpbmNsdWRlIGNvbXBhdGliaWxpdHkucHJpdmF0ZS1kZW5zaXR5LWxlZ2FjeS1jb21wYXRpYmlsaXR5KCkge1xuICAgIC5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlciB7XG4gICAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gICAgfVxuXG4gICAgLm1hdC1zdGVwcGVyLWxhYmVsLXBvc2l0aW9uLWJvdHRvbSAubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXIsXG4gICAgLm1hdC12ZXJ0aWNhbC1zdGVwcGVyLWhlYWRlciB7XG4gICAgICBwYWRkaW5nOiAkdmVydGljYWwtcGFkZGluZyBzdGVwcGVyLXZhcmlhYmxlcy4kc2lkZS1nYXA7XG4gICAgfVxuXG4gICAgLy8gRW5zdXJlcyB0aGF0IHRoZSB2ZXJ0aWNhbCBsaW5lcyBmb3IgdGhlIHN0ZXAgY29udGVudCBleGNlZWQgaW50byB0aGUgc3RlcFxuICAgIC8vIGhlYWRlcnMgd2l0aCBhIGdpdmVuIGRpc3RhbmNlIChgJG1hdC1zdGVwcGVyLWxpbmUtZ2FwYCkgdG8gdGhlIHN0ZXAgaWNvbi5cbiAgICAubWF0LXN0ZXBwZXItdmVydGljYWwtbGluZTo6YmVmb3JlIHtcbiAgICAgIHRvcDogc3RlcHBlci12YXJpYWJsZXMuJGxpbmUtZ2FwIC0gJHZlcnRpY2FsLXBhZGRpbmc7XG4gICAgICBib3R0b206IHN0ZXBwZXItdmFyaWFibGVzLiRsaW5lLWdhcCAtICR2ZXJ0aWNhbC1wYWRkaW5nO1xuICAgIH1cblxuICAgIC8vIEVuc3VyZXMgdGhhdCB0aGUgaG9yaXpvbnRhbCBsaW5lcyBmb3IgdGhlIHN0ZXAgaGVhZGVyIGFyZSBjZW50ZXJlZCB2ZXJ0aWNhbGx5LlxuICAgIC5tYXQtc3RlcHBlci1sYWJlbC1wb3NpdGlvbi1ib3R0b20gLm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVyIHtcbiAgICAgICY6OmFmdGVyLCAmOjpiZWZvcmUge1xuICAgICAgICB0b3A6ICR2ZXJ0aWNhbC1wYWRkaW5nICsgc3RlcHBlci12YXJpYWJsZXMuJGxhYmVsLWhlYWRlci1oZWlnaHQgLyAyO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEVuc3VyZXMgdGhhdCB0aGUgaG9yaXpvbnRhbCBsaW5lIGZvciB0aGUgc3RlcCBjb250ZW50IGlzIGFsaWduZWQgY2VudGVyZWQgdmVydGljYWxseS5cbiAgICAubWF0LXN0ZXBwZXItbGFiZWwtcG9zaXRpb24tYm90dG9tIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsLWxpbmUge1xuICAgICAgdG9wOiAkdmVydGljYWwtcGFkZGluZyArIHN0ZXBwZXItdmFyaWFibGVzLiRsYWJlbC1oZWFkZXItaGVpZ2h0IC8gMjtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiB0aGVtaW5nLnByaXZhdGUtbGVnYWN5LWdldC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgQGluY2x1ZGUgdGhlbWluZy5wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LXN0ZXBwZXInKSB7XG4gICAgJGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJHRoZW1lKTtcbiAgICAkZGVuc2l0eTogdGhlbWluZy5nZXQtZGVuc2l0eS1jb25maWcoJHRoZW1lKTtcbiAgICAkdHlwb2dyYXBoeTogdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJHRoZW1lKTtcblxuICAgIEBpZiAkY29sb3IgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBjb2xvcigkY29sb3IpO1xuICAgIH1cbiAgICBAaWYgJGRlbnNpdHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBkZW5zaXR5KCRkZW5zaXR5KTtcbiAgICB9XG4gICAgQGlmICR0eXBvZ3JhcGh5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgdHlwb2dyYXBoeSgkdHlwb2dyYXBoeSk7XG4gICAgfVxuICB9XG59XG4iLCJAdXNlICdzYXNzOm1hcCc7XG5AdXNlICcuLi9jb3JlL3RoZW1pbmcvdGhlbWluZyc7XG5AdXNlICcuLi9jb3JlL3R5cG9ncmFwaHkvdHlwb2dyYXBoeSc7XG5AdXNlICcuLi9jb3JlL3R5cG9ncmFwaHkvdHlwb2dyYXBoeS11dGlscyc7XG5cbkBtaXhpbiBjb2xvcigkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJHByaW1hcnk6IG1hcC5nZXQoJGNvbmZpZywgcHJpbWFyeSk7XG4gICRhY2NlbnQ6IG1hcC5nZXQoJGNvbmZpZywgYWNjZW50KTtcbiAgJHdhcm46IG1hcC5nZXQoJGNvbmZpZywgd2Fybik7XG4gICRiYWNrZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGJhY2tncm91bmQpO1xuICAkZm9yZWdyb3VuZDogbWFwLmdldCgkY29uZmlnLCBmb3JlZ3JvdW5kKTtcbiAgJGhlYWRlci1ib3JkZXI6IDFweCBzb2xpZCB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIGRpdmlkZXIpO1xuXG4gIC5tYXQtdGFiLW5hdi1iYXIsXG4gIC5tYXQtdGFiLWhlYWRlciB7XG4gICAgYm9yZGVyLWJvdHRvbTogJGhlYWRlci1ib3JkZXI7XG4gIH1cblxuICAubWF0LXRhYi1ncm91cC1pbnZlcnRlZC1oZWFkZXIge1xuICAgIC5tYXQtdGFiLW5hdi1iYXIsXG4gICAgLm1hdC10YWItaGVhZGVyIHtcbiAgICAgIGJvcmRlci10b3A6ICRoZWFkZXItYm9yZGVyO1xuICAgICAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbiAgICB9XG4gIH1cblxuICAubWF0LXRhYi1sYWJlbCwgLm1hdC10YWItbGluayB7XG4gICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgdGV4dCk7XG5cbiAgICAmLm1hdC10YWItZGlzYWJsZWQge1xuICAgICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgZGlzYWJsZWQtdGV4dCk7XG4gICAgfVxuICB9XG5cbiAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbiB7XG4gICAgYm9yZGVyLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIHRleHQpO1xuICB9XG5cbiAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWQgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbiB7XG4gICAgYm9yZGVyLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIGRpc2FibGVkLXRleHQpO1xuICB9XG5cbiAgLy8gUmVtb3ZlIGhlYWRlciBib3JkZXIgd2hlbiB0aGVyZSBpcyBhIGJhY2tncm91bmQgY29sb3JcbiAgLm1hdC10YWItZ3JvdXBbY2xhc3MqPSdtYXQtYmFja2dyb3VuZC0nXSAubWF0LXRhYi1oZWFkZXIsXG4gIC5tYXQtdGFiLW5hdi1iYXJbY2xhc3MqPSdtYXQtYmFja2dyb3VuZC0nXSB7XG4gICAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbiAgICBib3JkZXItdG9wOiBub25lO1xuICB9XG5cbiAgLm1hdC10YWItZ3JvdXAsIC5tYXQtdGFiLW5hdi1iYXIge1xuICAgICR0aGVtZS1jb2xvcnM6IChcbiAgICAgIHByaW1hcnk6ICRwcmltYXJ5LFxuICAgICAgYWNjZW50OiAkYWNjZW50LFxuICAgICAgd2FybjogJHdhcm5cbiAgICApO1xuXG4gICAgQGVhY2ggJG5hbWUsICRjb2xvciBpbiAkdGhlbWUtY29sb3JzIHtcbiAgICAgIC8vIFNldCB0aGUgZm9yZWdyb3VuZCBjb2xvciBvZiB0aGUgdGFic1xuICAgICAgJi5tYXQtI3skbmFtZX0ge1xuICAgICAgICBAaW5jbHVkZSBfbGFiZWwtZm9jdXMtY29sb3IoJGNvbG9yKTtcbiAgICAgICAgQGluY2x1ZGUgX2luay1iYXItY29sb3IoJGNvbG9yKTtcblxuICAgICAgICAvLyBPdmVycmlkZSBpbmsgYmFyIHdoZW4gYmFja2dyb3VuZCBjb2xvciBpcyB0aGUgc2FtZVxuICAgICAgICAmLm1hdC1iYWNrZ3JvdW5kLSN7JG5hbWV9IHtcbiAgICAgICAgICA+IC5tYXQtdGFiLWhlYWRlciwgPiAubWF0LXRhYi1saW5rLWNvbnRhaW5lciB7XG4gICAgICAgICAgICBAaW5jbHVkZSBfaW5rLWJhci1jb2xvcigkY29sb3IsIGRlZmF1bHQtY29udHJhc3QpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIEBlYWNoICRuYW1lLCAkY29sb3IgaW4gJHRoZW1lLWNvbG9ycyB7XG4gICAgICAvLyBTZXQgYmFja2dyb3VuZCBjb2xvciBvZiB0aGUgdGFicyBhbmQgb3ZlcnJpZGUgZm9jdXMgY29sb3JcbiAgICAgICYubWF0LWJhY2tncm91bmQtI3skbmFtZX0ge1xuICAgICAgICBAaW5jbHVkZSBfbGFiZWwtZm9jdXMtY29sb3IoJGNvbG9yKTtcbiAgICAgICAgQGluY2x1ZGUgX3RhYnMtYmFja2dyb3VuZCgkY29sb3IpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gX2luay1iYXItY29sb3IoJGNvbG9yLCAkaHVlOiBkZWZhdWx0KSB7XG4gIC5tYXQtaW5rLWJhciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRjb2xvciwgJGh1ZSk7XG4gIH1cbn1cblxuQG1peGluIF9sYWJlbC1mb2N1cy1jb2xvcigkdGFiLWZvY3VzLWNvbG9yKSB7XG4gIC5tYXQtdGFiLWxhYmVsLFxuICAubWF0LXRhYi1saW5rIHtcbiAgICAmLmNkay1rZXlib2FyZC1mb2N1c2VkLFxuICAgICYuY2RrLXByb2dyYW0tZm9jdXNlZCB7XG4gICAgICAmOm5vdCgubWF0LXRhYi1kaXNhYmxlZCkge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHRhYi1mb2N1cy1jb2xvciwgbGlnaHRlciwgMC4zKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuQG1peGluIF90YWJzLWJhY2tncm91bmQoJGJhY2tncm91bmQtY29sb3IpIHtcbiAgLy8gTm90ZSB0aGF0IHRoZXNlIHNlbGVjdG9ycyB0YXJnZXQgZGlyZWN0IGRlc2NlbmRhbnRzIHNvXG4gIC8vIHRoYXQgdGhlIHN0eWxlcyBkb24ndCBhcHBseSB0byBhbnkgbmVzdGVkIHRhYiBncm91cHMuXG5cbiAgLy8gU2V0IGJhY2tncm91bmQgY29sb3IgZm9yIHRoZSB0YWIgZ3JvdXBcbiAgPiAubWF0LXRhYi1oZWFkZXIsID4gLm1hdC10YWItbGluay1jb250YWluZXIsID4gLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24ge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYmFja2dyb3VuZC1jb2xvcik7XG4gIH1cblxuICAvLyBTZXQgbGFiZWxzIHRvIGNvbnRyYXN0IGFnYWluc3QgYmFja2dyb3VuZFxuICA+IC5tYXQtdGFiLWhlYWRlciAubWF0LXRhYi1sYWJlbCwgPiAubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LXRhYi1saW5rIHtcbiAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLWNvbG9yLCBkZWZhdWx0LWNvbnRyYXN0KTtcblxuICAgICYubWF0LXRhYi1kaXNhYmxlZCB7XG4gICAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLWNvbG9yLCBkZWZhdWx0LWNvbnRyYXN0LCAwLjQpO1xuICAgIH1cbiAgfVxuXG4gIC8vIFNldCBwYWdpbmF0aW9uIGNoZXZyb25zIHRvIGNvbnRyYXN0IGJhY2tncm91bmRcbiAgPiAubWF0LXRhYi1oZWFkZXIgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbixcbiAgPiAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbiAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uLFxuICA+IC5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtZm9jdXMtaW5kaWNhdG9yOjpiZWZvcmUsXG4gID4gLm1hdC10YWItaGVhZGVyIC5tYXQtZm9jdXMtaW5kaWNhdG9yOjpiZWZvcmUge1xuICAgIGJvcmRlci1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLWNvbG9yLCBkZWZhdWx0LWNvbnRyYXN0KTtcbiAgfVxuXG4gID4gLm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sXG4gID4gLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWQgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbiB7XG4gICAgYm9yZGVyLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGJhY2tncm91bmQtY29sb3IsIGRlZmF1bHQtY29udHJhc3QsIDAuNCk7XG4gIH1cblxuICAvLyBTZXQgcmlwcGxlcyBjb2xvciB0byBiZSB0aGUgY29udHJhc3QgY29sb3Igb2YgdGhlIG5ldyBiYWNrZ3JvdW5kLiBPdGhlcndpc2UgdGhlIHJpcHBsZVxuICAvLyBjb2xvciB3aWxsIGJlIGJhc2VkIG9uIHRoZSBhcHAgYmFja2dyb3VuZCBjb2xvci5cbiAgPiAubWF0LXRhYi1oZWFkZXIgLm1hdC1yaXBwbGUtZWxlbWVudCxcbiAgPiAubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LXJpcHBsZS1lbGVtZW50LFxuICA+IC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uIC5tYXQtcmlwcGxlLWVsZW1lbnQge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYmFja2dyb3VuZC1jb2xvciwgZGVmYXVsdC1jb250cmFzdCwgMC4xMik7XG4gIH1cbn1cblxuQG1peGluIHR5cG9ncmFwaHkoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0eXBvZ3JhcGh5LnByaXZhdGUtdHlwb2dyYXBoeS10by0yMDE0LWNvbmZpZyhcbiAgICAgIHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCRjb25maWctb3ItdGhlbWUpKTtcbiAgLm1hdC10YWItZ3JvdXAge1xuICAgIGZvbnQtZmFtaWx5OiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtZmFtaWx5KCRjb25maWcpO1xuICB9XG5cbiAgLm1hdC10YWItbGFiZWwsIC5tYXQtdGFiLWxpbmsge1xuICAgIGZvbnQ6IHtcbiAgICAgIGZhbWlseTogdHlwb2dyYXBoeS11dGlscy5mb250LWZhbWlseSgkY29uZmlnLCBidXR0b24pO1xuICAgICAgc2l6ZTogdHlwb2dyYXBoeS11dGlscy5mb250LXNpemUoJGNvbmZpZywgYnV0dG9uKTtcbiAgICAgIHdlaWdodDogdHlwb2dyYXBoeS11dGlscy5mb250LXdlaWdodCgkY29uZmlnLCBidXR0b24pO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gX2RlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIHRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiB0aGVtaW5nLnByaXZhdGUtbGVnYWN5LWdldC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgQGluY2x1ZGUgdGhlbWluZy5wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LXRhYnMnKSB7XG4gICAgJGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJHRoZW1lKTtcbiAgICAkZGVuc2l0eTogdGhlbWluZy5nZXQtZGVuc2l0eS1jb25maWcoJHRoZW1lKTtcbiAgICAkdHlwb2dyYXBoeTogdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJHRoZW1lKTtcblxuICAgIEBpZiAkY29sb3IgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBjb2xvcigkY29sb3IpO1xuICAgIH1cbiAgICBAaWYgJGRlbnNpdHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBfZGVuc2l0eSgkZGVuc2l0eSk7XG4gICAgfVxuICAgIEBpZiAkdHlwb2dyYXBoeSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIHR5cG9ncmFwaHkoJHR5cG9ncmFwaHkpO1xuICAgIH1cbiAgfVxufVxuIiwiQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnLi4vY29yZS9kZW5zaXR5L3ByaXZhdGUvY29tcGF0aWJpbGl0eSc7XG5AdXNlICcuLi9jb3JlL3N0eWxlL3ZhcmlhYmxlcyc7XG5AdXNlICcuLi9jb3JlL3RoZW1pbmcvdGhlbWluZyc7XG5AdXNlICcuLi9jb3JlL3R5cG9ncmFwaHkvdHlwb2dyYXBoeSc7XG5AdXNlICcuLi9jb3JlL3R5cG9ncmFwaHkvdHlwb2dyYXBoeS11dGlscyc7XG5AdXNlICcuL3Rvb2xiYXItdmFyaWFibGVzJztcblxuQG1peGluIF9oZWlnaHQoJGhlaWdodCkge1xuICAubWF0LXRvb2xiYXItbXVsdGlwbGUtcm93cyB7XG4gICAgbWluLWhlaWdodDogJGhlaWdodDtcbiAgfVxuICAubWF0LXRvb2xiYXItcm93LCAubWF0LXRvb2xiYXItc2luZ2xlLXJvdyB7XG4gICAgaGVpZ2h0OiAkaGVpZ2h0O1xuICB9XG59XG5cbkBtaXhpbiBfcGFsZXR0ZS1zdHlsZXMoJHBhbGV0dGUpIHtcbiAgYmFja2dyb3VuZDogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRwYWxldHRlKTtcbiAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkcGFsZXR0ZSwgZGVmYXVsdC1jb250cmFzdCk7XG59XG5cbkBtaXhpbiBfZm9ybS1maWVsZC1vdmVycmlkZXMge1xuICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lLFxuICAubWF0LWZvcm0tZmllbGQtcmlwcGxlLFxuICAubWF0LWZvY3VzZWQgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogY3VycmVudENvbG9yO1xuICB9XG5cbiAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLFxuICAubWF0LWZvY3VzZWQgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLFxuICAubWF0LXNlbGVjdC12YWx1ZSxcbiAgLm1hdC1zZWxlY3QtYXJyb3csXG4gIC5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZCAubWF0LXNlbGVjdC1hcnJvdyB7XG4gICAgY29sb3I6IGluaGVyaXQ7XG4gIH1cblxuICAubWF0LWlucHV0LWVsZW1lbnQge1xuICAgIGNhcmV0LWNvbG9yOiBjdXJyZW50Q29sb3I7XG4gIH1cbn1cblxuQG1peGluIGNvbG9yKCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAkcHJpbWFyeTogbWFwLmdldCgkY29uZmlnLCBwcmltYXJ5KTtcbiAgJGFjY2VudDogbWFwLmdldCgkY29uZmlnLCBhY2NlbnQpO1xuICAkd2FybjogbWFwLmdldCgkY29uZmlnLCB3YXJuKTtcbiAgJGJhY2tncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgYmFja2dyb3VuZCk7XG4gICRmb3JlZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGZvcmVncm91bmQpO1xuXG4gIC5tYXQtdG9vbGJhciB7XG4gICAgYmFja2dyb3VuZDogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLCBhcHAtYmFyKTtcbiAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCB0ZXh0KTtcblxuICAgICYubWF0LXByaW1hcnkge1xuICAgICAgQGluY2x1ZGUgX3BhbGV0dGUtc3R5bGVzKCRwcmltYXJ5KTtcbiAgICB9XG5cbiAgICAmLm1hdC1hY2NlbnQge1xuICAgICAgQGluY2x1ZGUgX3BhbGV0dGUtc3R5bGVzKCRhY2NlbnQpO1xuICAgIH1cblxuICAgICYubWF0LXdhcm4ge1xuICAgICAgQGluY2x1ZGUgX3BhbGV0dGUtc3R5bGVzKCR3YXJuKTtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBfZm9ybS1maWVsZC1vdmVycmlkZXM7XG4gIH1cbn1cblxuQG1peGluIHR5cG9ncmFwaHkoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0eXBvZ3JhcGh5LnByaXZhdGUtdHlwb2dyYXBoeS10by0yMDE0LWNvbmZpZyhcbiAgICAgIHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCRjb25maWctb3ItdGhlbWUpKTtcbiAgLm1hdC10b29sYmFyLFxuICAubWF0LXRvb2xiYXIgaDEsXG4gIC5tYXQtdG9vbGJhciBoMixcbiAgLm1hdC10b29sYmFyIGgzLFxuICAubWF0LXRvb2xiYXIgaDQsXG4gIC5tYXQtdG9vbGJhciBoNSxcbiAgLm1hdC10b29sYmFyIGg2IHtcbiAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5LXV0aWxzLnR5cG9ncmFwaHktbGV2ZWwoJGNvbmZpZywgdGl0bGUpO1xuICAgIG1hcmdpbjogMDtcbiAgfVxufVxuXG5AbWl4aW4gZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRkZW5zaXR5LXNjYWxlOiB0aGVtaW5nLmdldC1kZW5zaXR5LWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJGhlaWdodC1kZXNrdG9wOiBjb21wYXRpYmlsaXR5LnByaXZhdGUtZGVuc2l0eS1wcm9wLXZhbHVlKFxuICAgICAgdG9vbGJhci12YXJpYWJsZXMuJGRlc2t0b3AtZGVuc2l0eS1jb25maWcsICRkZW5zaXR5LXNjYWxlLCBoZWlnaHQpO1xuICAkaGVpZ2h0LW1vYmlsZTogY29tcGF0aWJpbGl0eS5wcml2YXRlLWRlbnNpdHktcHJvcC12YWx1ZShcbiAgICAgIHRvb2xiYXItdmFyaWFibGVzLiRtb2JpbGUtZGVuc2l0eS1jb25maWcsICRkZW5zaXR5LXNjYWxlLCBoZWlnaHQpO1xuXG4gIEBpbmNsdWRlIGNvbXBhdGliaWxpdHkucHJpdmF0ZS1kZW5zaXR5LWxlZ2FjeS1jb21wYXRpYmlsaXR5KCkge1xuICAgIC8vIFNldCB0aGUgZGVmYXVsdCBoZWlnaHQgZm9yIHRoZSB0b29sYmFyLlxuICAgIEBpbmNsdWRlIF9oZWlnaHQoJGhlaWdodC1kZXNrdG9wKTtcblxuICAgIC8vIEFzIHBlciBzcGVjcywgdG9vbGJhcnMgc2hvdWxkIGhhdmUgYSBkaWZmZXJlbnQgaGVpZ2h0IGluIG1vYmlsZSBkZXZpY2VzLiBUaGlzIGhhcyBiZWVuXG4gICAgLy8gc3BlY2lmaWVkIGluIHRoZSBvbGQgZ3VpZGVsaW5lcyBhbmQgaXMgc3RpbGwgb2JzZXJ2YWJsZSBpbiB0aGUgbmV3IHNwZWNpZmljYXRpb25zIGJ5XG4gICAgLy8gbG9va2luZyBhdCB0aGUgc3BlYyBpbWFnZXMuIFNlZTogaHR0cHM6Ly9tYXRlcmlhbC5pby9kZXNpZ24vY29tcG9uZW50cy9hcHAtYmFycy10b3AuaHRtbCNhbmF0b215XG4gICAgQG1lZGlhICh2YXJpYWJsZXMuJHhzbWFsbCkge1xuICAgICAgQGluY2x1ZGUgX2hlaWdodCgkaGVpZ2h0LW1vYmlsZSk7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiB0aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKSB7XG4gICR0aGVtZTogdGhlbWluZy5wcml2YXRlLWxlZ2FjeS1nZXQtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZyk7XG4gIEBpbmNsdWRlIHRoZW1pbmcucHJpdmF0ZS1jaGVjay1kdXBsaWNhdGUtdGhlbWUtc3R5bGVzKCR0aGVtZSwgJ21hdC10b29sYmFyJykge1xuICAgICRjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgJGRlbnNpdHk6IHRoZW1pbmcuZ2V0LWRlbnNpdHktY29uZmlnKCR0aGVtZSk7XG4gICAgJHR5cG9ncmFwaHk6IHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCR0aGVtZSk7XG5cbiAgICBAaWYgJGNvbG9yICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgZGVuc2l0eSgkZGVuc2l0eSk7XG4gICAgfVxuICAgIEBpZiAkdHlwb2dyYXBoeSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIHR5cG9ncmFwaHkoJHR5cG9ncmFwaHkpO1xuICAgIH1cbiAgfVxufVxuIiwiQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnLi4vY29yZS90aGVtaW5nL3RoZW1pbmcnO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHknO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHktdXRpbHMnO1xuXG4kdGFyZ2V0LWhlaWdodDogMjJweDtcbiRmb250LXNpemU6IDEwcHg7XG4kdmVydGljYWwtcGFkZGluZzogKCR0YXJnZXQtaGVpZ2h0IC0gJGZvbnQtc2l6ZSkgLyAyO1xuXG4kaGFuZHNldC10YXJnZXQtaGVpZ2h0OiAzMHB4O1xuJGhhbmRzZXQtZm9udC1zaXplOiAxNHB4O1xuJGhhbmRzZXQtdmVydGljYWwtcGFkZGluZzpcbiAgICAoJGhhbmRzZXQtdGFyZ2V0LWhlaWdodCAtICRoYW5kc2V0LWZvbnQtc2l6ZSkgLyAyO1xuXG5AbWl4aW4gY29sb3IoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRiYWNrZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGJhY2tncm91bmQpO1xuXG4gIC5tYXQtdG9vbHRpcCB7XG4gICAgYmFja2dyb3VuZDogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLCB0b29sdGlwLCAwLjkpO1xuICB9XG59XG5cbkBtaXhpbiB0eXBvZ3JhcGh5KCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdHlwb2dyYXBoeS5wcml2YXRlLXR5cG9ncmFwaHktdG8tMjAxNC1jb25maWcoXG4gICAgICB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKSk7XG4gIC5tYXQtdG9vbHRpcCB7XG4gICAgZm9udC1mYW1pbHk6IHR5cG9ncmFwaHktdXRpbHMuZm9udC1mYW1pbHkoJGNvbmZpZyk7XG4gICAgZm9udC1zaXplOiAkZm9udC1zaXplO1xuICAgIHBhZGRpbmctdG9wOiAkdmVydGljYWwtcGFkZGluZztcbiAgICBwYWRkaW5nLWJvdHRvbTogJHZlcnRpY2FsLXBhZGRpbmc7XG4gIH1cblxuICAubWF0LXRvb2x0aXAtaGFuZHNldCB7XG4gICAgZm9udC1zaXplOiAkaGFuZHNldC1mb250LXNpemU7XG4gICAgcGFkZGluZy10b3A6ICRoYW5kc2V0LXZlcnRpY2FsLXBhZGRpbmc7XG4gICAgcGFkZGluZy1ib3R0b206ICRoYW5kc2V0LXZlcnRpY2FsLXBhZGRpbmc7XG4gIH1cbn1cblxuQG1peGluIF9kZW5zaXR5KCRjb25maWctb3ItdGhlbWUpIHt9XG5cbkBtaXhpbiB0aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKSB7XG4gICR0aGVtZTogdGhlbWluZy5wcml2YXRlLWxlZ2FjeS1nZXQtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZyk7XG4gIEBpbmNsdWRlIHRoZW1pbmcucHJpdmF0ZS1jaGVjay1kdXBsaWNhdGUtdGhlbWUtc3R5bGVzKCR0aGVtZSwgJ21hdC10b29sdGlwJykge1xuICAgICRjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgJGRlbnNpdHk6IHRoZW1pbmcuZ2V0LWRlbnNpdHktY29uZmlnKCR0aGVtZSk7XG4gICAgJHR5cG9ncmFwaHk6IHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCR0aGVtZSk7XG5cbiAgICBAaWYgJGNvbG9yICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgX2RlbnNpdHkoJGRlbnNpdHkpO1xuICAgIH1cbiAgICBAaWYgJHR5cG9ncmFwaHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5KCR0eXBvZ3JhcGh5KTtcbiAgICB9XG4gIH1cbn1cblxuIiwiQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnLi4vY29yZS90aGVtaW5nL3RoZW1pbmcnO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHknO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHktdXRpbHMnO1xuQHVzZSAnLi4vY29yZS9zdHlsZS9saXN0LWNvbW1vbic7XG5cblxuQG1peGluIGNvbG9yKCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAkYmFja2dyb3VuZDogbWFwLmdldCgkY29uZmlnLCBiYWNrZ3JvdW5kKTtcbiAgJGZvcmVncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgZm9yZWdyb3VuZCk7XG5cbiAgLm1hdC1saXN0LWJhc2Uge1xuICAgIC5tYXQtbGlzdC1pdGVtIHtcbiAgICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIHRleHQpO1xuICAgIH1cblxuICAgIC5tYXQtbGlzdC1vcHRpb24ge1xuICAgICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgdGV4dCk7XG4gICAgfVxuXG4gICAgLm1hdC1zdWJoZWFkZXIge1xuICAgICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgc2Vjb25kYXJ5LXRleHQpO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtbGlzdC1pdGVtLWRpc2FibGVkIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGJhY2tncm91bmQsIGRpc2FibGVkLWxpc3Qtb3B0aW9uKTtcbiAgfVxuXG4gIC5tYXQtbGlzdC1vcHRpb24sXG4gIC5tYXQtbmF2LWxpc3QgLm1hdC1saXN0LWl0ZW0sXG4gIC5tYXQtYWN0aW9uLWxpc3QgLm1hdC1saXN0LWl0ZW0ge1xuICAgICY6aG92ZXIsICY6Zm9jdXMge1xuICAgICAgYmFja2dyb3VuZDogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLCAnaG92ZXInKTtcbiAgICB9XG4gIH1cblxuICAubWF0LWxpc3Qtc2luZ2xlLXNlbGVjdGVkLW9wdGlvbiB7XG4gICAgJiwgJjpob3ZlciwgJjpmb2N1cyB7XG4gICAgICBiYWNrZ3JvdW5kOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGJhY2tncm91bmQsIGhvdmVyLCAwLjEyKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHR5cG9ncmFwaHkoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0eXBvZ3JhcGh5LnByaXZhdGUtdHlwb2dyYXBoeS10by0yMDE0LWNvbmZpZyhcbiAgICAgIHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCRjb25maWctb3ItdGhlbWUpKTtcbiAgJGZvbnQtZmFtaWx5OiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtZmFtaWx5KCRjb25maWcpO1xuXG4gIC5tYXQtbGlzdC1pdGVtIHtcbiAgICBmb250LWZhbWlseTogJGZvbnQtZmFtaWx5O1xuICB9XG5cbiAgLm1hdC1saXN0LW9wdGlvbiB7XG4gICAgZm9udC1mYW1pbHk6ICRmb250LWZhbWlseTtcbiAgfVxuXG4gIC8vIERlZmF1bHQgbGlzdFxuICAubWF0LWxpc3QtYmFzZSB7XG4gICAgLm1hdC1saXN0LWl0ZW0ge1xuICAgICAgZm9udC1zaXplOiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtc2l6ZSgkY29uZmlnLCBzdWJoZWFkaW5nLTIpO1xuICAgICAgQGluY2x1ZGUgbGlzdC1jb21tb24uYmFzZSh0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtc2l6ZSgkY29uZmlnLCBib2R5LTEpKTtcbiAgICB9XG5cbiAgICAubWF0LWxpc3Qtb3B0aW9uIHtcbiAgICAgIGZvbnQtc2l6ZTogdHlwb2dyYXBoeS11dGlscy5mb250LXNpemUoJGNvbmZpZywgc3ViaGVhZGluZy0yKTtcbiAgICAgIEBpbmNsdWRlIGxpc3QtY29tbW9uLmJhc2UodHlwb2dyYXBoeS11dGlscy5mb250LXNpemUoJGNvbmZpZywgYm9keS0xKSk7XG4gICAgfVxuXG4gICAgLm1hdC1zdWJoZWFkZXIge1xuICAgICAgZm9udC1mYW1pbHk6IHR5cG9ncmFwaHktdXRpbHMuZm9udC1mYW1pbHkoJGNvbmZpZywgYm9keS0yKTtcbiAgICAgIGZvbnQtc2l6ZTogdHlwb2dyYXBoeS11dGlscy5mb250LXNpemUoJGNvbmZpZywgYm9keS0yKTtcbiAgICAgIGZvbnQtd2VpZ2h0OiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtd2VpZ2h0KCRjb25maWcsIGJvZHktMik7XG4gICAgfVxuICB9XG5cbiAgLy8gRGVuc2UgbGlzdFxuICAubWF0LWxpc3QtYmFzZVtkZW5zZV0ge1xuICAgIC5tYXQtbGlzdC1pdGVtIHtcbiAgICAgIGZvbnQtc2l6ZTogdHlwb2dyYXBoeS11dGlscy5mb250LXNpemUoJGNvbmZpZywgY2FwdGlvbik7XG4gICAgICBAaW5jbHVkZSBsaXN0LWNvbW1vbi5iYXNlKHR5cG9ncmFwaHktdXRpbHMuZm9udC1zaXplKCRjb25maWcsIGNhcHRpb24pKTtcbiAgICB9XG5cbiAgICAubWF0LWxpc3Qtb3B0aW9uIHtcbiAgICAgIGZvbnQtc2l6ZTogdHlwb2dyYXBoeS11dGlscy5mb250LXNpemUoJGNvbmZpZywgY2FwdGlvbik7XG4gICAgICBAaW5jbHVkZSBsaXN0LWNvbW1vbi5iYXNlKHR5cG9ncmFwaHktdXRpbHMuZm9udC1zaXplKCRjb25maWcsIGNhcHRpb24pKTtcbiAgICB9XG5cbiAgICAubWF0LXN1YmhlYWRlciB7XG4gICAgICBmb250LWZhbWlseTogJGZvbnQtZmFtaWx5O1xuICAgICAgZm9udC1zaXplOiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtc2l6ZSgkY29uZmlnLCBjYXB0aW9uKTtcbiAgICAgIGZvbnQtd2VpZ2h0OiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtd2VpZ2h0KCRjb25maWcsIGJvZHktMik7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBfZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZykge1xuICAkdGhlbWU6IHRoZW1pbmcucHJpdmF0ZS1sZWdhY3ktZ2V0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICBAaW5jbHVkZSB0aGVtaW5nLnByaXZhdGUtY2hlY2stZHVwbGljYXRlLXRoZW1lLXN0eWxlcygkdGhlbWUsICdtYXQtbGlzdCcpIHtcbiAgICAkY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkdGhlbWUpO1xuICAgICRkZW5zaXR5OiB0aGVtaW5nLmdldC1kZW5zaXR5LWNvbmZpZygkdGhlbWUpO1xuICAgICR0eXBvZ3JhcGh5OiB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkdGhlbWUpO1xuXG4gICAgQGlmICRjb2xvciAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIGNvbG9yKCRjb2xvcik7XG4gICAgfVxuICAgIEBpZiAkZGVuc2l0eSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIF9kZW5zaXR5KCRkZW5zaXR5KTtcbiAgICB9XG4gICAgQGlmICR0eXBvZ3JhcGh5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgdHlwb2dyYXBoeSgkdHlwb2dyYXBoeSk7XG4gICAgfVxuICB9XG59XG4iLCJAdXNlICdzYXNzOm1hcCc7XG5AdXNlICcuLi90aGVtaW5nL3RoZW1pbmcnO1xuQHVzZSAnLi4vdHlwb2dyYXBoeS90eXBvZ3JhcGh5JztcbkB1c2UgJy4uL3R5cG9ncmFwaHkvdHlwb2dyYXBoeS11dGlscyc7XG5cbkBtaXhpbiBjb2xvcigkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJGZvcmVncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgZm9yZWdyb3VuZCk7XG4gICRiYWNrZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGJhY2tncm91bmQpO1xuICAkcHJpbWFyeTogbWFwLmdldCgkY29uZmlnLCBwcmltYXJ5KTtcbiAgJGFjY2VudDogbWFwLmdldCgkY29uZmlnLCBhY2NlbnQpO1xuICAkd2FybjogbWFwLmdldCgkY29uZmlnLCB3YXJuKTtcblxuICAubWF0LW9wdGlvbiB7XG4gICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgdGV4dCk7XG5cbiAgICAmOmhvdmVyOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCksXG4gICAgJjpmb2N1czpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpIHtcbiAgICAgIGJhY2tncm91bmQ6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYmFja2dyb3VuZCwgaG92ZXIpO1xuICAgIH1cblxuICAgIC8vIEluIG11bHRpcGxlIG1vZGUgdGhlcmUgaXMgYSBjaGVja2JveCB0byBzaG93IHRoYXQgdGhlIG9wdGlvbiBpcyBzZWxlY3RlZC5cbiAgICAmLm1hdC1zZWxlY3RlZDpub3QoLm1hdC1vcHRpb24tbXVsdGlwbGUpOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCkge1xuICAgICAgYmFja2dyb3VuZDogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLCBob3Zlcik7XG4gICAgfVxuXG4gICAgJi5tYXQtYWN0aXZlIHtcbiAgICAgIGJhY2tncm91bmQ6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYmFja2dyb3VuZCwgaG92ZXIpO1xuICAgICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgdGV4dCk7XG4gICAgfVxuXG4gICAgJi5tYXQtb3B0aW9uLWRpc2FibGVkIHtcbiAgICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIGhpbnQtdGV4dCk7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1wcmltYXJ5IC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZDpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpIHtcbiAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRwcmltYXJ5LCB0ZXh0KTtcbiAgfVxuXG4gIC5tYXQtYWNjZW50IC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZDpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpIHtcbiAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRhY2NlbnQsIHRleHQpO1xuICB9XG5cbiAgLm1hdC13YXJuIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZDpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpIHtcbiAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCR3YXJuLCB0ZXh0KTtcbiAgfVxufVxuXG5AbWl4aW4gdHlwb2dyYXBoeSgkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHR5cG9ncmFwaHkucHJpdmF0ZS10eXBvZ3JhcGh5LXRvLTIwMTQtY29uZmlnKFxuICAgICAgdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJGNvbmZpZy1vci10aGVtZSkpO1xuICAubWF0LW9wdGlvbiB7XG4gICAgZm9udDoge1xuICAgICAgZmFtaWx5OiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtZmFtaWx5KCRjb25maWcpO1xuICAgICAgc2l6ZTogdHlwb2dyYXBoeS11dGlscy5mb250LXNpemUoJGNvbmZpZywgc3ViaGVhZGluZy0yKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIF9kZW5zaXR5KCRjb25maWctb3ItdGhlbWUpIHt9XG5cbkBtaXhpbiB0aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKSB7XG4gICR0aGVtZTogdGhlbWluZy5wcml2YXRlLWxlZ2FjeS1nZXQtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZyk7XG4gIEBpbmNsdWRlIHRoZW1pbmcucHJpdmF0ZS1jaGVjay1kdXBsaWNhdGUtdGhlbWUtc3R5bGVzKCR0aGVtZSwgJ21hdC1vcHRpb24nKSB7XG4gICAgJGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJHRoZW1lKTtcbiAgICAkZGVuc2l0eTogdGhlbWluZy5nZXQtZGVuc2l0eS1jb25maWcoJHRoZW1lKTtcbiAgICAkdHlwb2dyYXBoeTogdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJHRoZW1lKTtcblxuICAgIEBpZiAkY29sb3IgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBjb2xvcigkY29sb3IpO1xuICAgIH1cbiAgICBAaWYgJGRlbnNpdHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBfZGVuc2l0eSgkZGVuc2l0eSk7XG4gICAgfVxuICAgIEBpZiAkdHlwb2dyYXBoeSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIHR5cG9ncmFwaHkoJHR5cG9ncmFwaHkpO1xuICAgIH1cbiAgfVxufVxuIiwiQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnLi4vdGhlbWluZy90aGVtaW5nJztcbkB1c2UgJy4uL3R5cG9ncmFwaHkvdHlwb2dyYXBoeSc7XG5AdXNlICcuLi90eXBvZ3JhcGh5L3R5cG9ncmFwaHktdXRpbHMnO1xuXG5AbWl4aW4gY29sb3IoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRmb3JlZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGZvcmVncm91bmQpO1xuXG4gIC5tYXQtb3B0Z3JvdXAtbGFiZWwge1xuICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIHNlY29uZGFyeS10ZXh0KTtcbiAgfVxuXG4gIC5tYXQtb3B0Z3JvdXAtZGlzYWJsZWQgLm1hdC1vcHRncm91cC1sYWJlbCB7XG4gICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgaGludC10ZXh0KTtcbiAgfVxufVxuXG5AbWl4aW4gdHlwb2dyYXBoeSgkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHR5cG9ncmFwaHkucHJpdmF0ZS10eXBvZ3JhcGh5LXRvLTIwMTQtY29uZmlnKFxuICAgICAgdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJGNvbmZpZy1vci10aGVtZSkpO1xuICAubWF0LW9wdGdyb3VwLWxhYmVsIHtcbiAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5LXV0aWxzLnR5cG9ncmFwaHktbGV2ZWwoJGNvbmZpZywgYm9keS0yKTtcbiAgfVxufVxuXG5AbWl4aW4gX2RlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIHRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiB0aGVtaW5nLnByaXZhdGUtbGVnYWN5LWdldC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgQGluY2x1ZGUgdGhlbWluZy5wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LW9wdGdyb3VwJykge1xuICAgICRjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgJGRlbnNpdHk6IHRoZW1pbmcuZ2V0LWRlbnNpdHktY29uZmlnKCR0aGVtZSk7XG4gICAgJHR5cG9ncmFwaHk6IHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCR0aGVtZSk7XG5cbiAgICBAaWYgJGNvbG9yICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgX2RlbnNpdHkoJGRlbnNpdHkpO1xuICAgIH1cbiAgICBAaWYgJHR5cG9ncmFwaHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5KCR0eXBvZ3JhcGh5KTtcbiAgICB9XG4gIH1cbn1cbiIsIkB1c2UgJ3Nhc3M6bWFwJztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5JztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5LXV0aWxzJztcbkB1c2UgJy4uL2NvcmUvdGhlbWluZy90aGVtaW5nJztcbkB1c2UgJy4uL2NvcmUvdGhlbWluZy9wYWxldHRlJztcbkB1c2UgJy4uL2NvcmUvc3R5bGUvcHJpdmF0ZSc7XG5cbkBtaXhpbiBjb2xvcigkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJGlzLWRhcmstdGhlbWU6IG1hcC5nZXQoJGNvbmZpZywgaXMtZGFyayk7XG4gICRhY2NlbnQ6IG1hcC5nZXQoJGNvbmZpZywgYWNjZW50KTtcblxuICAubWF0LXNuYWNrLWJhci1jb250YWluZXIge1xuICAgIC8vIFVzZSB0aGUgcHJpbWFyeSB0ZXh0IG9uIHRoZSBkYXJrIHRoZW1lLCBldmVuIHRob3VnaCB0aGUgbGlnaHRlciBvbmUgdXNlc1xuICAgIC8vIGEgc2Vjb25kYXJ5LCBiZWNhdXNlIHRoZSBjb250cmFzdCBvbiB0aGUgbGlnaHQgcHJpbWFyeSB0ZXh0IGlzIHBvb3IuXG4gICAgY29sb3I6IGlmKCRpcy1kYXJrLXRoZW1lLCBwYWxldHRlLiRkYXJrLXByaW1hcnktdGV4dCwgcGFsZXR0ZS4kbGlnaHQtc2Vjb25kYXJ5LXRleHQpO1xuICAgIGJhY2tncm91bmQ6IGlmKCRpcy1kYXJrLXRoZW1lLCBtYXAuZ2V0KHBhbGV0dGUuJGdyZXktcGFsZXR0ZSwgNTApLCAjMzIzMjMyKTtcblxuICAgIEBpbmNsdWRlIHByaXZhdGUucHJpdmF0ZS10aGVtZS1lbGV2YXRpb24oNiwgJGNvbmZpZyk7XG4gIH1cblxuICAubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb24ge1xuICAgIGNvbG9yOiBpZigkaXMtZGFyay10aGVtZSwgaW5oZXJpdCwgdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRhY2NlbnQsIHRleHQpKTtcbiAgfVxufVxuXG5AbWl4aW4gdHlwb2dyYXBoeSgkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHR5cG9ncmFwaHkucHJpdmF0ZS10eXBvZ3JhcGh5LXRvLTIwMTQtY29uZmlnKFxuICAgICAgdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJGNvbmZpZy1vci10aGVtZSkpO1xuICAubWF0LXNpbXBsZS1zbmFja2JhciB7XG4gICAgZm9udDoge1xuICAgICAgZmFtaWx5OiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtZmFtaWx5KCRjb25maWcsIGJvZHktMSk7XG4gICAgICBzaXplOiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtc2l6ZSgkY29uZmlnLCBib2R5LTEpO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbiB7XG4gICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgZm9udDoge1xuICAgICAgZmFtaWx5OiBpbmhlcml0O1xuICAgICAgc2l6ZTogaW5oZXJpdDtcbiAgICAgIHdlaWdodDogdHlwb2dyYXBoeS11dGlscy5mb250LXdlaWdodCgkY29uZmlnLCBidXR0b24pO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gX2RlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIHRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiB0aGVtaW5nLnByaXZhdGUtbGVnYWN5LWdldC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgQGluY2x1ZGUgdGhlbWluZy5wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LXNuYWNrLWJhcicpIHtcbiAgICAkY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkdGhlbWUpO1xuICAgICRkZW5zaXR5OiB0aGVtaW5nLmdldC1kZW5zaXR5LWNvbmZpZygkdGhlbWUpO1xuICAgICR0eXBvZ3JhcGh5OiB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkdGhlbWUpO1xuXG4gICAgQGlmICRjb2xvciAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIGNvbG9yKCRjb2xvcik7XG4gICAgfVxuICAgIEBpZiAkZGVuc2l0eSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIF9kZW5zaXR5KCRkZW5zaXR5KTtcbiAgICB9XG4gICAgQGlmICR0eXBvZ3JhcGh5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgdHlwb2dyYXBoeSgkdHlwb2dyYXBoeSk7XG4gICAgfVxuICB9XG59XG4iLCJAdXNlICdzYXNzOm1hcCc7XG5AdXNlICcuLi9jb3JlL2RlbnNpdHkvcHJpdmF0ZS9jb21wYXRpYmlsaXR5JztcbkB1c2UgJy4uL2NvcmUvdGhlbWluZy90aGVtaW5nJztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5JztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5LXV0aWxzJztcbkB1c2UgJy4vdHJlZS12YXJpYWJsZXMnO1xuXG5AbWl4aW4gY29sb3IoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRiYWNrZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGJhY2tncm91bmQpO1xuICAkZm9yZWdyb3VuZDogbWFwLmdldCgkY29uZmlnLCBmb3JlZ3JvdW5kKTtcblxuICAubWF0LXRyZWUge1xuICAgIGJhY2tncm91bmQ6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYmFja2dyb3VuZCwgJ2NhcmQnKTtcbiAgfVxuXG4gIC5tYXQtdHJlZS1ub2RlLFxuICAubWF0LW5lc3RlZC10cmVlLW5vZGUge1xuICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIHRleHQpO1xuICB9XG59XG5cbkBtaXhpbiB0eXBvZ3JhcGh5KCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdHlwb2dyYXBoeS5wcml2YXRlLXR5cG9ncmFwaHktdG8tMjAxNC1jb25maWcoXG4gICAgICB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKSk7XG4gIC5tYXQtdHJlZSB7XG4gICAgZm9udC1mYW1pbHk6IHR5cG9ncmFwaHktdXRpbHMuZm9udC1mYW1pbHkoJGNvbmZpZyk7XG4gIH1cblxuICAubWF0LXRyZWUtbm9kZSxcbiAgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlIHtcbiAgICBmb250LXdlaWdodDogdHlwb2dyYXBoeS11dGlscy5mb250LXdlaWdodCgkY29uZmlnLCBib2R5LTEpO1xuICAgIGZvbnQtc2l6ZTogdHlwb2dyYXBoeS11dGlscy5mb250LXNpemUoJGNvbmZpZywgYm9keS0xKTtcbiAgfVxufVxuXG5AbWl4aW4gZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRkZW5zaXR5LXNjYWxlOiB0aGVtaW5nLmdldC1kZW5zaXR5LWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJGhlaWdodDogY29tcGF0aWJpbGl0eS5wcml2YXRlLWRlbnNpdHktcHJvcC12YWx1ZSh0cmVlLXZhcmlhYmxlcy4kZGVuc2l0eS1jb25maWcsXG4gICAgJGRlbnNpdHktc2NhbGUsIGhlaWdodCk7XG5cbiAgQGluY2x1ZGUgY29tcGF0aWJpbGl0eS5wcml2YXRlLWRlbnNpdHktbGVnYWN5LWNvbXBhdGliaWxpdHkoKSB7XG4gICAgLm1hdC10cmVlLW5vZGUge1xuICAgICAgbWluLWhlaWdodDogJGhlaWdodDtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiB0aGVtaW5nLnByaXZhdGUtbGVnYWN5LWdldC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgQGluY2x1ZGUgdGhlbWluZy5wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LXRyZWUnKSB7XG4gICAgJGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJHRoZW1lKTtcbiAgICAkZGVuc2l0eTogdGhlbWluZy5nZXQtZGVuc2l0eS1jb25maWcoJHRoZW1lKTtcbiAgICAkdHlwb2dyYXBoeTogdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJHRoZW1lKTtcblxuICAgIEBpZiAkY29sb3IgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBjb2xvcigkY29sb3IpO1xuICAgIH1cbiAgICBAaWYgJGRlbnNpdHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBkZW5zaXR5KCRkZW5zaXR5KTtcbiAgICB9XG4gICAgQGlmICR0eXBvZ3JhcGh5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgdHlwb2dyYXBoeSgkdHlwb2dyYXBoeSk7XG4gICAgfVxuICB9XG59XG5cbiIsIkB1c2UgJy4uLy4uLy4uL2Nkay9hMTF5JztcblxuQG1peGluIHJpcHBsZSgpIHtcbiAgLy8gVGhlIGhvc3QgZWxlbWVudCBvZiBhbiBtYXQtcmlwcGxlIGRpcmVjdGl2ZSBzaG91bGQgYWx3YXlzIGhhdmUgYSBwb3NpdGlvbiBvZiBcImFic29sdXRlXCIgb3JcbiAgLy8gXCJyZWxhdGl2ZVwiIHNvIHRoYXQgdGhlIHJpcHBsZXMgaW5zaWRlIGFyZSBjb3JyZWN0bHkgcG9zaXRpb25lZCByZWxhdGl2ZWx5IHRvIHRoZSBjb250YWluZXIuXG4gIC5tYXQtcmlwcGxlIHtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICAgLy8gQnkgZGVmYXVsdCwgZXZlcnkgcmlwcGxlIGNvbnRhaW5lciBzaG91bGQgaGF2ZSBwb3NpdGlvbjogcmVsYXRpdmUgaW4gZmF2b3Igb2YgY3JlYXRpbmcgYW5cbiAgICAvLyBlYXN5IEFQSSBmb3IgZGV2ZWxvcGVycyB1c2luZyB0aGUgTWF0UmlwcGxlIGRpcmVjdGl2ZS5cbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAvLyBQcm9tb3RlIGNvbnRhaW5lcnMgdGhhdCBoYXZlIHJpcHBsZXMgdG8gYSBuZXcgbGF5ZXIuIFdlIHdhbnQgdG8gdGFyZ2V0IGA6bm90KDplbXB0eSlgLFxuICAgIC8vIGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCBhbGwgcmlwcGxlIGNvbnRhaW5lcnMgdG8gaGF2ZSB0aGVpciBvd24gbGF5ZXIgc2luY2UgdGhleSdyZSB1c2VkIGluIGFcbiAgICAvLyBsb3Qgb2YgcGxhY2VzIGFuZCB0aGUgbGF5ZXIgaXMgb25seSByZWxldmFudCB3aGlsZSBhbmltYXRpbmcuIE5vdGUgdGhhdCBpZGVhbGx5IHdlJ2QgdXNlXG4gICAgLy8gdGhlIGBjb250YWluYCBwcm9wZXJ0eSBoZXJlIChzZWUgIzEzMTc1KSwgYmVjYXVzZSBgOmVtcHR5YCBjYW4gYmUgYnJva2VuIGJ5IGhhdmluZyBleHRyYVxuICAgIC8vIHRleHQgaW5zaWRlIHRoZSBlbGVtZW50LCBidXQgaXQgaXNuJ3QgdmVyeSB3ZWxsIHN1cHBvcnRlZCB5ZXQuXG4gICAgJjpub3QoOmVtcHR5KSB7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCk7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWQge1xuICAgIG92ZXJmbG93OiB2aXNpYmxlO1xuICB9XG5cbiAgLm1hdC1yaXBwbGUtZWxlbWVudCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcblxuICAgIHRyYW5zaXRpb246IG9wYWNpdHksIHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgwKTtcblxuICAgIC8vIEluIGhpZ2ggY29udHJhc3QgbW9kZSB0aGUgcmlwcGxlIGlzIG9wYXF1ZSwgY2F1c2luZyBpdCB0byBvYnN0cnVjdCB0aGUgY29udGVudC5cbiAgICBAaW5jbHVkZSBhMTF5LmhpZ2gtY29udHJhc3QoYWN0aXZlLCBvZmYpIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICB9XG59XG4iLCIvLy8gRW1pdHMgYSBDU1MgY2xhc3MsIGAuY2RrLXZpc3VhbGx5LWhpZGRlbmAuIFRoaXMgY2xhc3MgY2FuIGJlIGFwcGxpZWQgdG8gYW4gZWxlbWVudFxuLy8vIHRvIG1ha2UgdGhhdCBlbGVtZW50IHZpc3VhbGx5IGhpZGRlbiB3aGlsZSByZW1haW5pbmcgYXZhaWxhYmxlIHRvIGFzc2l0aXZlIHRlY2hub2xvZ3kuXG5AbWl4aW4gYTExeS12aXN1YWxseS1oaWRkZW4oKSB7XG4gIC5jZGstdmlzdWFsbHktaGlkZGVuIHtcbiAgICBib3JkZXI6IDA7XG4gICAgY2xpcDogcmVjdCgwIDAgMCAwKTtcbiAgICBoZWlnaHQ6IDFweDtcbiAgICBtYXJnaW46IC0xcHg7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBwYWRkaW5nOiAwO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB3aWR0aDogMXB4O1xuXG4gICAgLy8gVGhpcyB3b3JrcyBhcm91bmQgYSBDaHJvbWUgYnVnIHRoYXQgY2FuIGNhdXNlIHRoZSB0YWIgdG8gY3Jhc2ggd2hlbiBsYXJnZSBhbW91bnRzIG9mXG4gICAgLy8gbm9uLUVuZ2xpc2ggdGV4dCBnZXQgd3JhcHBlZDogaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9MTIwMTQ0NFxuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cbiAgICAvLyBBdm9pZCBicm93c2VycyByZW5kZXJpbmcgdGhlIGZvY3VzIHJpbmcgaW4gc29tZSBjYXNlcy5cbiAgICBvdXRsaW5lOiAwO1xuXG4gICAgLy8gQXZvaWQgc29tZSBjYXNlcyB3aGVyZSB0aGUgYnJvd3NlciB3aWxsIHN0aWxsIHJlbmRlciB0aGUgbmF0aXZlIGNvbnRyb2xzIChzZWUgIzkwNDkpLlxuICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgICAtbW96LWFwcGVhcmFuY2U6IG5vbmU7XG4gIH1cbn1cblxuLy8vIEBkZXByZWNhdGVkIFVzZSBgYTExeS12aXN1YWxseS1oaWRkZW5gLlxuQG1peGluIGExMXkoKSB7XG4gIEBpbmNsdWRlIGExMXktdmlzdWFsbHktaGlkZGVuO1xufVxuXG4vLy8gRW1pdHMgdGhlIG1peGluJ3MgY29udGVudCBuZXN0ZWQgdW5kZXIgYCRzZWxlY3Rvci1jb250ZXh0YCBpZiBgJHNlbGVjdG9yLWNvbnRleHRgXG4vLy8gaXMgbm9uLWVtcHR5LlxuLy8vIEBwYXJhbSB7U3RyaW5nfSBzZWxlY3Rvci1jb250ZXh0IFRoZSBzZWxlY3RvciB1bmRlciB3aGljaCB0byBuZXN0IHRoZSBtaXhpbidzIGNvbnRlbnQuXG5AbWl4aW4gX29wdGlvbmFsbHktbmVzdC1jb250ZW50KCRzZWxlY3Rvci1jb250ZXh0KSB7XG4gIEBpZiAoJHNlbGVjdG9yLWNvbnRleHQgPT0gJycpIHtcbiAgICBAY29udGVudDtcbiAgfVxuICBAZWxzZSB7XG4gICAgI3skc2VsZWN0b3ItY29udGV4dH0ge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG5cbi8vLyBBcHBsaWVzIHN0eWxlcyBmb3IgdXNlcnMgaW4gaGlnaCBjb250cmFzdCBtb2RlLiBOb3RlIHRoYXQgdGhpcyBvbmx5IGFwcGxpZXNcbi8vLyB0byBNaWNyb3NvZnQgYnJvd3NlcnMuIENocm9tZSBjYW4gYmUgaW5jbHVkZWQgYnkgY2hlY2tpbmcgZm9yIHRoZSBgaHRtbFtoY11gXG4vLy8gYXR0cmlidXRlLCBob3dldmVyIENocm9tZSBoYW5kbGVzIGhpZ2ggY29udHJhc3QgZGlmZmVyZW50bHkuXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gdGFyZ2V0IFR5cGUgb2YgaGlnaCBjb250cmFzdCBzZXR0aW5nIHRvIHRhcmdldC4gRGVmYXVsdHMgdG8gYGFjdGl2ZWAsIGNhbiBiZVxuLy8vICAgICBgd2hpdGUtb24tYmxhY2tgIG9yIGBibGFjay1vbi13aGl0ZWAuXG4vLy8gQHBhcmFtIHtTdHJpbmd9IGVuY2Fwc3VsYXRpb24gV2hldGhlciB0byBlbWl0IHN0eWxlcyBmb3IgdmlldyBlbmNhcHN1bGF0aW9uLiBWYWx1ZXMgYXJlOlxuLy8vICAgICAqIGBvbmAgLSB3b3JrcyBmb3IgYEVtdWxhdGVkYCwgYE5hdGl2ZWAsIGFuZCBgU2hhZG93RG9tYFxuLy8vICAgICAqIGBvZmZgIC0gd29ya3MgZm9yIGBOb25lYFxuLy8vICAgICAqIGBhbnlgIC0gd29ya3MgZm9yIGFsbCBlbmNhcHN1bGF0aW9uIG1vZGVzIGJ5IGVtaXR0aW5nIHRoZSBDU1MgdHdpY2UgKGRlZmF1bHQpLlxuQG1peGluIGhpZ2gtY29udHJhc3QoJHRhcmdldDogYWN0aXZlLCAkZW5jYXBzdWxhdGlvbjogJ2FueScpIHtcbiAgQGlmICgkdGFyZ2V0ICE9ICdhY3RpdmUnIGFuZCAkdGFyZ2V0ICE9ICdibGFjay1vbi13aGl0ZScgYW5kICR0YXJnZXQgIT0gJ3doaXRlLW9uLWJsYWNrJykge1xuICAgIEBlcnJvciAnVW5rbm93biBjZGstaGlnaC1jb250cmFzdCB2YWx1ZSBcIiN7JHRhcmdldH1cIiBwcm92aWRlZC4gJyArXG4gICAgICAgICAgICdBbGxvd2VkIHZhbHVlcyBhcmUgXCJhY3RpdmVcIiwgXCJibGFjay1vbi13aGl0ZVwiLCBhbmQgXCJ3aGl0ZS1vbi1ibGFja1wiJztcbiAgfVxuXG4gIEBpZiAoJGVuY2Fwc3VsYXRpb24gIT0gJ29uJyBhbmQgJGVuY2Fwc3VsYXRpb24gIT0gJ29mZicgYW5kICRlbmNhcHN1bGF0aW9uICE9ICdhbnknKSB7XG4gICAgQGVycm9yICdVbmtub3duIGNkay1oaWdoLWNvbnRyYXN0IGVuY2Fwc3VsYXRpb24gXCIjeyRlbmNhcHN1bGF0aW9ufVwiIHByb3ZpZGVkLiAnICtcbiAgICAgICAgICAgJ0FsbG93ZWQgdmFsdWVzIGFyZSBcIm9uXCIsIFwib2ZmXCIsIGFuZCBcImFueVwiJztcbiAgfVxuXG4gIC8vIElmIHRoZSBzZWxlY3RvciBjb250ZXh0IGhhcyBtdWx0aXBsZSBwYXJ0cywgc3VjaCBhcyBgLnNlY3Rpb24sIC5yZWdpb25gLCBqdXN0IGRvaW5nXG4gIC8vIGAuY2RrLWhpZ2gtY29udHJhc3QteHh4ICN7Jn1gIHdpbGwgb25seSBhcHBseSB0aGUgcGFyZW50IHNlbGVjdG9yIHRvIHRoZSBmaXJzdCBwYXJ0IG9mIHRoZVxuICAvLyBjb250ZXh0LiBXZSBhZGRyZXNzIHRoaXMgYnkgbmVzdGluZyB0aGUgc2VsZWN0b3IgY29udGV4dCB1bmRlciAuY2RrLWhpZ2gtY29udHJhc3QuXG4gIEBhdC1yb290IHtcbiAgICAkc2VsZWN0b3ItY29udGV4dDogI3smfTtcblxuICAgIEBpZiAoJGVuY2Fwc3VsYXRpb24gIT0gJ29uJykge1xuICAgICAgLy8gTm90ZSB0aGF0IGlmIHRoaXMgc2VsZWN0b3IgaXMgdXBkYXRlZCwgdGhlIHNhbWUgY2hhbmdlIGhhcyB0byBiZSBtYWRlIGluc2lkZVxuICAgICAgLy8gYF9vdmVybGF5LnNjc3NgIHdoaWNoIGNhbid0IGRlcGVuZCBvbiB0aGlzIG1peGluIGR1ZSB0byBzb21lIGluZnJhc3RydWN0dXJlIGxpbWl0YXRpb25zLlxuICAgICAgLmNkay1oaWdoLWNvbnRyYXN0LSN7JHRhcmdldH0ge1xuICAgICAgICBAaW5jbHVkZSBfb3B0aW9uYWxseS1uZXN0LWNvbnRlbnQoJHNlbGVjdG9yLWNvbnRleHQpIHtcbiAgICAgICAgICBAY29udGVudDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIEBpZiAoJGVuY2Fwc3VsYXRpb24gIT0gJ29mZicpIHtcbiAgICAgIC5jZGstaGlnaC1jb250cmFzdC0jeyR0YXJnZXR9IDpob3N0IHtcbiAgICAgICAgQGluY2x1ZGUgX29wdGlvbmFsbHktbmVzdC1jb250ZW50KCRzZWxlY3Rvci1jb250ZXh0KSB7XG4gICAgICAgICAgQGNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vIFdlIHdhbnQgb3ZlcmxheXMgdG8gYWx3YXlzIGFwcGVhciBvdmVyIHVzZXIgY29udGVudCwgc28gc2V0IGEgYmFzZWxpbmVcbi8vIHZlcnkgaGlnaCB6LWluZGV4IGZvciB0aGUgb3ZlcmxheSBjb250YWluZXIsIHdoaWNoIGlzIHdoZXJlIHdlIGNyZWF0ZSB0aGUgbmV3XG4vLyBzdGFja2luZyBjb250ZXh0IGZvciBhbGwgb3ZlcmxheXMuXG4kb3ZlcmxheS1jb250YWluZXItei1pbmRleDogMTAwMCAhZGVmYXVsdDtcbiRvdmVybGF5LXotaW5kZXg6IDEwMDAgIWRlZmF1bHQ7XG4kb3ZlcmxheS1iYWNrZHJvcC16LWluZGV4OiAxMDAwICFkZWZhdWx0O1xuXG4vLyBCYWNrZ3JvdW5kIGNvbG9yIGZvciBhbGwgb2YgdGhlIGJhY2tkcm9wc1xuJG92ZXJsYXktYmFja2Ryb3AtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4zMikgIWRlZmF1bHQ7XG5cbi8vIERlZmF1bHQgYmFja2Ryb3AgYW5pbWF0aW9uIGlzIGJhc2VkIG9uIHRoZSBNYXRlcmlhbCBEZXNpZ24gc3dpZnQtZWFzZS1vdXQuXG4kYmFja2Ryb3AtYW5pbWF0aW9uLWR1cmF0aW9uOiA0MDBtcyAhZGVmYXVsdDtcbiRiYWNrZHJvcC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKSAhZGVmYXVsdDtcblxuLy8vIEVtaXRzIHN0cnVjdHVyYWwgc3R5bGVzIHJlcXVpcmVkIGZvciBjZGsvb3ZlcmxheSB0byBmdW5jdGlvbi5cbkBtaXhpbiBvdmVybGF5KCkge1xuICAuY2RrLW92ZXJsYXktY29udGFpbmVyLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXIge1xuICAgIC8vIERpc2FibGUgZXZlbnRzIGZyb20gYmVpbmcgY2FwdHVyZWQgb24gdGhlIG92ZXJsYXkgY29udGFpbmVyLlxuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuXG4gICAgLy8gVGhlIGNvbnRhaW5lciBzaG91bGQgYmUgdGhlIHNpemUgb2YgdGhlIHZpZXdwb3J0LlxuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICB3aWR0aDogMTAwJTtcbiAgfVxuXG4gIC8vIFRoZSBvdmVybGF5LWNvbnRhaW5lciBpcyBhbiBpbnZpc2libGUgZWxlbWVudCB3aGljaCBjb250YWlucyBhbGwgaW5kaXZpZHVhbCBvdmVybGF5cy5cbiAgLmNkay1vdmVybGF5LWNvbnRhaW5lciB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIHotaW5kZXg6ICRvdmVybGF5LWNvbnRhaW5lci16LWluZGV4O1xuXG4gICAgJjplbXB0eSB7XG4gICAgICAvLyBIaWRlIHRoZSBlbGVtZW50IHdoZW4gaXQgZG9lc24ndCBoYXZlIGFueSBjaGlsZCBub2Rlcy4gVGhpcyBkb2Vzbid0XG4gICAgICAvLyBpbmNsdWRlIG92ZXJsYXlzIHRoYXQgaGF2ZSBiZWVuIGRldGFjaGVkLCByYXRoZXIgdGhhbiBkaXNwb3NlZC5cbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICB9XG5cbiAgLy8gV2UgdXNlIGFuIGV4dHJhIHdyYXBwZXIgZWxlbWVudCBpbiBvcmRlciB0byB1c2UgbWFrZSB0aGUgb3ZlcmxheSBpdHNlbGYgYSBmbGV4IGl0ZW0uXG4gIC8vIFRoaXMgbWFrZXMgY2VudGVyaW5nIHRoZSBvdmVybGF5IGVhc3kgd2l0aG91dCBydW5uaW5nIGludG8gdGhlIHN1YnBpeGVsIHJlbmRlcmluZ1xuICAvLyBwcm9ibGVtcyB0aWVkIHRvIHVzaW5nIGB0cmFuc2Zvcm1gIGFuZCB3aXRob3V0IGludGVyZmVyaW5nIHdpdGggdGhlIG90aGVyIHBvc2l0aW9uXG4gIC8vIHN0cmF0ZWdpZXMuXG4gIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgei1pbmRleDogJG92ZXJsYXktei1pbmRleDtcbiAgfVxuXG4gIC8vIEEgc2luZ2xlIG92ZXJsYXkgcGFuZS5cbiAgLmNkay1vdmVybGF5LXBhbmUge1xuICAgIC8vIE5vdGU6IGl0J3MgaW1wb3J0YW50IGZvciB0aGlzIG9uZSB0byBzdGFydCBvZmYgYGFic29sdXRlYCxcbiAgICAvLyBpbiBvcmRlciBmb3IgdXMgdG8gYmUgYWJsZSB0byBtZWFzdXJlIGl0IGNvcnJlY3RseS5cbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgcG9pbnRlci1ldmVudHM6IGF1dG87XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICB6LWluZGV4OiAkb3ZlcmxheS16LWluZGV4O1xuXG4gICAgLy8gRm9yIGNvbm5lY3RlZC1wb3NpdGlvbiBvdmVybGF5cywgd2Ugc2V0IGBkaXNwbGF5OiBmbGV4YCBpblxuICAgIC8vIG9yZGVyIHRvIGZvcmNlIGBtYXgtd2lkdGhgIGFuZCBgbWF4LWhlaWdodGAgdG8gdGFrZSBlZmZlY3QuXG4gICAgZGlzcGxheTogZmxleDtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgbWF4LWhlaWdodDogMTAwJTtcbiAgfVxuXG4gIC5jZGstb3ZlcmxheS1iYWNrZHJvcCB7XG4gICAgLy8gVE9ETyhqZWxib3Vybik6IHJldXNlIHNpZGVuYXYgZnVsbHNjcmVlbiBtaXhpbi5cbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGJvdHRvbTogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHJpZ2h0OiAwO1xuXG4gICAgei1pbmRleDogJG92ZXJsYXktYmFja2Ryb3Atei1pbmRleDtcbiAgICBwb2ludGVyLWV2ZW50czogYXV0bztcbiAgICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIHRyYW5zaXRpb246IG9wYWNpdHkgJGJhY2tkcm9wLWFuaW1hdGlvbi1kdXJhdGlvbiAkYmFja2Ryb3AtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjtcbiAgICBvcGFjaXR5OiAwO1xuXG4gICAgJi5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nIHtcbiAgICAgIG9wYWNpdHk6IDE7XG5cbiAgICAgIC8vIE5vdGUgdGhhdCB3ZSBjYW4ndCBpbXBvcnQgYW5kIHVzZSB0aGUgYGhpZ2gtY29udHJhc3RgIG1peGluIGZyb20gYF9hMTF5LnNjc3NgLCBiZWNhdXNlXG4gICAgICAvLyB0aGlzIGZpbGUgd2lsbCBiZSBjb3BpZWQgdG8gdGhlIHRvcC1sZXZlbCBgY2RrYCBwYWNrYWdlIHdoZW4gcHV0dGluZyB0b2dldGhlciB0aGUgZmlsZXNcbiAgICAgIC8vIGZvciBucG0uIEFueSByZWxhdGl2ZSBpbXBvcnQgcGF0aHMgd2UgdXNlIGhlcmUgd2lsbCBiZWNvbWUgaW52YWxpZCBvbmNlIHRoZSBmaWxlIGlzIGNvcGllZC5cbiAgICAgIC5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgJiB7XG4gICAgICAgIC8vIEluIGhpZ2ggY29udHJhc3QgbW9kZSB0aGUgcmdiYSBiYWNrZ3JvdW5kIHdpbGwgYmVjb21lIHNvbGlkXG4gICAgICAgIC8vIHNvIHdlIG5lZWQgdG8gZmFsbCBiYWNrIHRvIG1ha2luZyBpdCBvcGFxdWUgdXNpbmcgYG9wYWNpdHlgLlxuICAgICAgICBvcGFjaXR5OiAwLjY7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3Age1xuICAgIGJhY2tncm91bmQ6ICRvdmVybGF5LWJhY2tkcm9wLWNvbG9yO1xuICB9XG5cbiAgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wIHtcbiAgICAvLyBOb3RlOiBhcyBvZiBGaXJlZm94IDU3LCBoYXZpbmcgdGhlIGJhY2tkcm9wIGJlIGBiYWNrZ3JvdW5kOiBub25lYCB3aWxsIHByZXZlbnQgaXQgZnJvbVxuICAgIC8vIGNhcHR1cmluZyB0aGUgdXNlcidzIG1vdXNlIHNjcm9sbCBldmVudHMuIFNpbmNlIHdlIGFsc28gY2FuJ3QgdXNlIHNvbWV0aGluZyBsaWtlXG4gICAgLy8gYHJnYmEoMCwgMCwgMCwgMClgLCB3ZSB3b3JrIGFyb3VuZCB0aGUgaW5jb25zaXN0ZW5jeSBieSBub3Qgc2V0dGluZyB0aGUgYmFja2dyb3VuZCBhdFxuICAgIC8vIGFsbCBhbmQgdXNpbmcgYG9wYWNpdHlgIHRvIG1ha2UgdGhlIGVsZW1lbnQgdHJhbnNwYXJlbnQuXG4gICAgJiwgJi5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nIHtcbiAgICAgIG9wYWNpdHk6IDA7XG4gICAgfVxuICB9XG5cbiAgLy8gT3ZlcmxheSBwYXJlbnQgZWxlbWVudCB1c2VkIHdpdGggdGhlIGNvbm5lY3RlZCBwb3NpdGlvbiBzdHJhdGVneS4gVXNlZCB0byBjb25zdHJhaW4gdGhlXG4gIC8vIG92ZXJsYXkgZWxlbWVudCdzIHNpemUgdG8gZml0IHdpdGhpbiB0aGUgdmlld3BvcnQuXG4gIC5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgei1pbmRleDogJG92ZXJsYXktei1pbmRleDtcblxuICAgIC8vIFdlIHVzZSBgZGlzcGxheTogZmxleGAgb24gdGhpcyBlbGVtZW50IGV4Y2x1c2l2ZWx5IGZvciBjZW50ZXJpbmcgY29ubmVjdGVkIG92ZXJsYXlzLlxuICAgIC8vIFdoZW4gKm5vdCogY2VudGVyaW5nLCBhIHRvcC9sZWZ0L2JvdHRvbS9yaWdodCB3aWxsIGJlIHNldCB3aGljaCBvdmVycmlkZXMgdGhlIG5vcm1hbFxuICAgIC8vIGZsZXggbGF5b3V0LlxuICAgIGRpc3BsYXk6IGZsZXg7XG5cbiAgICAvLyBXZSB1c2UgdGhlIGBjb2x1bW5gIGRpcmVjdGlvbiBoZXJlIHRvIGF2b2lkIHNvbWUgZmxleGJveCBpc3N1ZXMgaW4gRWRnZVxuICAgIC8vIHdoZW4gdXNpbmcgdGhlIFwiZ3JvdyBhZnRlciBvcGVuXCIgb3B0aW9ucy5cbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXG4gICAgLy8gQWRkIHNvbWUgZGltZW5zaW9ucyBzbyB0aGUgZWxlbWVudCBoYXMgYW4gYGlubmVyVGV4dGAgd2hpY2ggc29tZSBwZW9wbGUgZGVwZW5kIG9uIGluIHRlc3RzLlxuICAgIG1pbi13aWR0aDogMXB4O1xuICAgIG1pbi1oZWlnaHQ6IDFweDtcbiAgfVxuXG4gIC8vIFVzZWQgd2hlbiBkaXNhYmxpbmcgZ2xvYmFsIHNjcm9sbGluZy5cbiAgLmNkay1nbG9iYWwtc2Nyb2xsYmxvY2sge1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcblxuICAgIC8vIE5lY2Vzc2FyeSBmb3IgdGhlIGNvbnRlbnQgbm90IHRvIGxvc2UgaXRzIHdpZHRoLiBOb3RlIHRoYXQgd2UncmUgdXNpbmcgMTAwJSwgaW5zdGVhZCBvZlxuICAgIC8vIDEwMHZ3LCBiZWNhdXNlIDEwMHZ3IGluY2x1ZGVzIHRoZSB3aWR0aCBwbHVzIHRoZSBzY3JvbGxiYXIsIHdoZXJlYXMgMTAwJSBpcyB0aGUgd2lkdGhcbiAgICAvLyB0aGF0IHRoZSBlbGVtZW50IGhhZCBiZWZvcmUgd2UgbWFkZSBpdCBgZml4ZWRgLlxuICAgIHdpZHRoOiAxMDAlO1xuXG4gICAgLy8gTm90ZTogdGhpcyB3aWxsIGFsd2F5cyBhZGQgYSBzY3JvbGxiYXIgdG8gd2hhdGV2ZXIgZWxlbWVudCBpdCBpcyBvbiwgd2hpY2ggY2FuXG4gICAgLy8gcG90ZW50aWFsbHkgcmVzdWx0IGluIGRvdWJsZSBzY3JvbGxiYXJzLiBJdCBzaG91bGRuJ3QgYmUgYW4gaXNzdWUsIGJlY2F1c2Ugd2Ugd29uJ3RcbiAgICAvLyBibG9jayBzY3JvbGxpbmcgb24gYSBwYWdlIHRoYXQgZG9lc24ndCBoYXZlIGEgc2Nyb2xsYmFyIGluIHRoZSBmaXJzdCBwbGFjZS5cbiAgICBvdmVyZmxvdy15OiBzY3JvbGw7XG4gIH1cbn1cbiIsIi8vIFN0cnVjdHVyYWwgc3R5bGVzIGZvciB0aGUgYXV0b3NpemUgdGV4dCBmaWVsZHMuXG5AbWl4aW4gdGV4dC1maWVsZC1hdXRvc2l6ZSgpIHtcbiAgLy8gUmVtb3ZlIHRoZSByZXNpemUgaGFuZGxlIG9uIGF1dG9zaXppbmcgdGV4dGFyZWFzLCBiZWNhdXNlIHdoYXRldmVyIGhlaWdodFxuICAvLyB0aGUgdXNlciByZXNpemVkIHRvIHdpbGwgYmUgb3ZlcndyaXR0ZW4gb25jZSB0aGV5IHN0YXJ0IHR5cGluZyBhZ2Fpbi5cbiAgdGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplIHtcbiAgICByZXNpemU6IG5vbmU7XG4gIH1cblxuICAvLyBUaGlzIGNsYXNzIGlzIHRlbXBvcmFyaWx5IGFwcGxpZWQgdG8gdGhlIHRleHRhcmVhIHdoZW4gaXQgaXMgYmVpbmcgbWVhc3VyZWQuIEl0IGlzIGltbWVkaWF0ZWx5XG4gIC8vIHJlbW92ZWQgd2hlbiBtZWFzdXJpbmcgaXMgY29tcGxldGUuIFdlIHVzZSBgIWltcG9ydGFudGAgcnVsZXMgaGVyZSB0byBtYWtlIHN1cmUgdXNlci1zcGVjaWZpZWRcbiAgLy8gcnVsZXMgZG8gbm90IGludGVyZmVyZSB3aXRoIHRoZSBtZWFzdXJlbWVudC5cbiAgdGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZyB7XG4gICAgQGluY2x1ZGUgX2F1dG9zaXplLW1lYXN1cmluZy1iYXNlO1xuICAgIGhlaWdodDogYXV0byAhaW1wb3J0YW50O1xuICAgIG92ZXJmbG93OiBoaWRkZW4gIWltcG9ydGFudDtcbiAgfVxuXG4gIC8vIFNpbWlsYXIgdG8gdGhlIGBjZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nYCBjbGFzcywgYnV0IG9ubHkgYXBwbGllZCBvbiBGaXJlZm94LiBXZSBuZWVkXG4gIC8vIHRvIHVzZSB0aGlzIGNsYXNzLCBiZWNhdXNlIEZpcmVmb3ggaGFzIGEgYnVnIHdoZXJlIGNoYW5naW5nIHRoZSBgb3ZlcmZsb3dgIGJyZWFrcyB0aGUgdXNlcidzXG4gIC8vIGFiaWxpdHkgdG8gdW5kby9yZWRvIHdoYXQgdGhleSB3ZXJlIHR5cGluZyAoc2VlICMxNjYyOSkuIFRoaXMgY2xhc3MgaXMgb25seSBzY29wZWQgdG8gRmlyZWZveCxcbiAgLy8gYmVjYXVzZSB0aGUgbWVhc3VyZW1lbnRzIHRoZXJlIGRvbid0IHNlZW0gdG8gYmUgYWZmZWN0ZWQgYnkgdGhlIGBoZWlnaHQ6IDBgLCB3aGVyZWFzIG9uIG90aGVyXG4gIC8vIGJyb3dzZXJzIHRoZXkgYXJlLCBlLmcuIENocm9tZSBkZXRlY3RzIGxvbmdlciB0ZXh0IGFuZCBJRSBkb2VzJ3QgcmVzaXplIGJhY2sgdG8gbm9ybWFsLlxuICAvLyBJZGVudGljYWwgaXNzdWUgcmVwb3J0OiBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD00NDg3ODRcbiAgdGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94IHtcbiAgICBAaW5jbHVkZSBfYXV0b3NpemUtbWVhc3VyaW5nLWJhc2U7XG4gICAgaGVpZ2h0OiAwICFpbXBvcnRhbnQ7XG4gIH1cbn1cblxuLy8gQ29yZSBzdHlsZXMgdGhhdCBlbmFibGUgbW9uaXRvcmluZyBhdXRvZmlsbCBzdGF0ZSBvZiB0ZXh0IGZpZWxkcy5cbkBtaXhpbiB0ZXh0LWZpZWxkLWF1dG9maWxsKCkge1xuICAvLyBLZXlmcmFtZXMgdGhhdCBhcHBseSBubyBzdHlsZXMsIGJ1dCBhbGxvdyB1cyB0byBtb25pdG9yIHdoZW4gYW4gdGV4dCBmaWVsZCBiZWNvbWVzIGF1dG9maWxsZWRcbiAgLy8gYnkgd2F0Y2hpbmcgZm9yIHRoZSBhbmltYXRpb24gZXZlbnRzIHRoYXQgYXJlIGZpcmVkIHdoZW4gdGhleSBzdGFydC4gTm90ZTogdGhlIC8qISovIGNvbW1lbnQgaXNcbiAgLy8gbmVlZGVkIHRvIHByZXZlbnQgTGliU2FzcyBmcm9tIHN0cmlwcGluZyB0aGUga2V5ZnJhbWVzIG91dC5cbiAgLy8gQmFzZWQgb246IGh0dHBzOi8vbWVkaXVtLmNvbS9AYnJ1bm4vZGV0ZWN0aW5nLWF1dG9maWxsZWQtZmllbGRzLWluLWphdmFzY3JpcHQtYWVkNTk4ZDI1ZGE3XG4gIEBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgey8qISovfVxuICBAa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCB7LyohKi99XG5cbiAgLmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZDotd2Via2l0LWF1dG9maWxsIHtcbiAgICAvLyBTaW5jZSBDaHJvbWUgODAgd2UgbmVlZCBhIDFtcyBkZWxheSwgb3IgdGhlIGFuaW1hdGlvbnN0YXJ0IGV2ZW50IHdvbid0IGZpcmUuXG4gICAgYW5pbWF0aW9uOiBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXM7XG4gIH1cblxuICAuY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCkge1xuICAgIC8vIFNpbmNlIENocm9tZSA4MCB3ZSBuZWVkIGEgMW1zIGRlbGF5LCBvciB0aGUgYW5pbWF0aW9uc3RhcnQgZXZlbnQgd29uJ3QgZmlyZS5cbiAgICBhbmltYXRpb246IGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXM7XG4gIH1cbn1cblxuQG1peGluIF9hdXRvc2l6ZS1tZWFzdXJpbmctYmFzZSB7XG4gIC8vIEhhdmluZyAycHggdG9wIGFuZCBib3R0b20gcGFkZGluZyBzZWVtcyB0byBmaXggYSBidWcgd2hlcmUgQ2hyb21lIGdldHMgYW4gaW5jb3JyZWN0XG4gIC8vIG1lYXN1cmVtZW50LiBXZSBqdXN0IGhhdmUgdG8gYWNjb3VudCBmb3IgaXQgbGF0ZXIgYW5kIHN1YnRyYWN0IGl0IG9mZiB0aGUgZmluYWwgcmVzdWx0LlxuICBwYWRkaW5nOiAycHggMCAhaW1wb3J0YW50O1xuICBib3gtc2l6aW5nOiBjb250ZW50LWJveCAhaW1wb3J0YW50O1xufVxuXG4vLyBVc2VkIHRvIGdlbmVyYXRlIFVJRHMgZm9yIGtleWZyYW1lcyB1c2VkIHRvIGNoYW5nZSB0aGUgdGV4dCBmaWVsZCBhdXRvZmlsbCBzdHlsZXMuXG4kYXV0b2ZpbGwtY29sb3ItZnJhbWUtY291bnQ6IDA7XG5cbi8vIE1peGluIHVzZWQgdG8gYXBwbHkgY3VzdG9tIGJhY2tncm91bmQgYW5kIGZvcmVncm91bmQgY29sb3JzIHRvIGFuIGF1dG9maWxsZWQgdGV4dCBmaWVsZC5cbi8vIEJhc2VkIG9uOiBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8yNzgxNTQ5L1xuLy8gcmVtb3ZpbmctaW5wdXQtYmFja2dyb3VuZC1jb2xvdXItZm9yLWNocm9tZS1hdXRvY29tcGxldGUjYW5zd2VyLTM3NDMyMjYwXG5AbWl4aW4gdGV4dC1maWVsZC1hdXRvZmlsbC1jb2xvcigkYmFja2dyb3VuZCwgJGZvcmVncm91bmQ6JycpIHtcbiAgQGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1jb2xvci0jeyRhdXRvZmlsbC1jb2xvci1mcmFtZS1jb3VudH0ge1xuICAgIHRvIHtcbiAgICAgIGJhY2tncm91bmQ6ICRiYWNrZ3JvdW5kO1xuICAgICAgQGlmICRmb3JlZ3JvdW5kICE9ICcnIHsgY29sb3I6ICRmb3JlZ3JvdW5kOyB9XG4gICAgfVxuICB9XG5cbiAgJjotd2Via2l0LWF1dG9maWxsIHtcbiAgICBhbmltYXRpb246IGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWNvbG9yLSN7JGF1dG9maWxsLWNvbG9yLWZyYW1lLWNvdW50fSBib3RoO1xuICB9XG5cbiAgJi5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWQ6LXdlYmtpdC1hdXRvZmlsbCB7XG4gICAgLy8gU2luY2UgQ2hyb21lIDgwIHdlIG5lZWQgYSAxbXMgZGVsYXkgZm9yIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0LCBvciB0aGUgYW5pbWF0aW9uc3RhcnRcbiAgICAvLyBldmVudCB3b24ndCBmaXJlLlxuICAgIGFuaW1hdGlvbjogY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zLFxuICAgICAgICAgICAgICAgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtY29sb3ItI3skYXV0b2ZpbGwtY29sb3ItZnJhbWUtY291bnR9IGJvdGg7XG4gIH1cblxuICAkYXV0b2ZpbGwtY29sb3ItZnJhbWUtY291bnQ6ICRhdXRvZmlsbC1jb2xvci1mcmFtZS1jb3VudCArIDEgIWdsb2JhbDtcbn1cblxuLy8gQGRlcHJlY2F0ZWQgVXNlIGBhdXRvc2l6ZWAgYW5kIGBhdXRvZmlsbGAgaW5zdGVhZC5cbkBtaXhpbiB0ZXh0LWZpZWxkIHtcbiAgQGluY2x1ZGUgdGV4dC1maWVsZC1hdXRvc2l6ZSgpO1xuICBAaW5jbHVkZSB0ZXh0LWZpZWxkLWF1dG9maWxsKCk7XG59XG4iLCJAdXNlICdzYXNzOm1hcCc7XG5AdXNlICcuLi9zdHlsZS9sYXlvdXQtY29tbW9uJztcblxuLy8vIE1peGluIHRoYXQgdHVybnMgb24gc3Ryb25nIGZvY3VzIGluZGljYXRvcnMuXG4vLy9cbi8vLyBAZXhhbXBsZVxuLy8vICAgLm15LWFwcCB7XG4vLy8gICAgIEBpbmNsdWRlIG1hdC1zdHJvbmctZm9jdXMtaW5kaWNhdG9ycygkY29uZmlnKTtcbi8vLyAgIH1cbkBtaXhpbiBzdHJvbmctZm9jdXMtaW5kaWNhdG9ycygkY29uZmlnOiAoKSkge1xuICAvLyBEZWZhdWx0IGZvY3VzIGluZGljYXRvciBjb25maWcuXG4gICRkZWZhdWx0LWNvbmZpZzogKFxuICAgIGJvcmRlci1zdHlsZTogc29saWQsXG4gICAgYm9yZGVyLXdpZHRoOiAzcHgsXG4gICAgYm9yZGVyLXJhZGl1czogNHB4LFxuICApO1xuXG4gIC8vIE1lcmdlIGRlZmF1bHQgY29uZmlnIHdpdGggdXNlciBjb25maWcuXG4gICRjb25maWc6IG1hcC5tZXJnZSgkZGVmYXVsdC1jb25maWcsICRjb25maWcpO1xuICAkYm9yZGVyLXN0eWxlOiBtYXAuZ2V0KCRjb25maWcsIGJvcmRlci1zdHlsZSk7XG4gICRib3JkZXItd2lkdGg6IG1hcC5nZXQoJGNvbmZpZywgYm9yZGVyLXdpZHRoKTtcbiAgJGJvcmRlci1yYWRpdXM6IG1hcC5nZXQoJGNvbmZpZywgYm9yZGVyLXJhZGl1cyk7XG5cbiAgLy8gQmFzZSBzdHlsZXMgZm9yIGZvY3VzIGluZGljYXRvcnMuXG4gIC5tYXQtZm9jdXMtaW5kaWNhdG9yOjpiZWZvcmUge1xuICAgIEBpbmNsdWRlIGxheW91dC1jb21tb24uZmlsbCgpO1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgYm9yZGVyOiAkYm9yZGVyLXdpZHRoICRib3JkZXItc3R5bGUgdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXM7XG4gIH1cblxuICAvLyBCeSBkZWZhdWx0LCBhbGwgZm9jdXMgaW5kaWNhdG9ycyBhcmUgZmx1c2ggd2l0aCB0aGUgYm91bmRpbmcgYm94IG9mIHRoZWlyXG4gIC8vIGhvc3QgZWxlbWVudC4gRm9yIHBhcnRpY3VsYXIgZWxlbWVudHMgKGxpc3RlZCBiZWxvdyksIGRlZmF1bHQgaW5zZXQvb2Zmc2V0XG4gIC8vIHZhbHVlcyBhcmUgbmVjZXNzYXJ5IHRvIGVuc3VyZSB0aGF0IHRoZSBmb2N1cyBpbmRpY2F0b3IgaXMgc3VmZmljaWVudGx5XG4gIC8vIGNvbnRyYXN0aXZlIGFuZCByZW5kZXJzIGFwcHJvcHJpYXRlbHkuXG5cbiAgLm1hdC1mb2N1cy1pbmRpY2F0b3IubWF0LWZsYXQtYnV0dG9uOjpiZWZvcmUsXG4gIC5tYXQtZm9jdXMtaW5kaWNhdG9yLm1hdC1yYWlzZWQtYnV0dG9uOjpiZWZvcmUsXG4gIC5tYXQtZm9jdXMtaW5kaWNhdG9yLm1hdC1mYWI6OmJlZm9yZSxcbiAgLm1hdC1mb2N1cy1pbmRpY2F0b3IubWF0LW1pbmktZmFiOjpiZWZvcmUsXG4gIC5tYXQtZm9jdXMtaW5kaWNhdG9yLm1hdC1jaGlwOjpiZWZvcmUsXG4gIC5tYXQtZm9jdXMtaW5kaWNhdG9yLm1hdC1zb3J0LWhlYWRlci1jb250YWluZXI6OmJlZm9yZSB7XG4gICAgbWFyZ2luOiAtKCRib3JkZXItd2lkdGggKyAycHgpO1xuICB9XG5cbiAgLm1hdC1mb2N1cy1pbmRpY2F0b3IubWF0LXN0cm9rZWQtYnV0dG9uOjpiZWZvcmUsXG4gIC5tYXQtZm9jdXMtaW5kaWNhdG9yLm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudDo6YmVmb3JlIHtcbiAgICBtYXJnaW46IC0oJGJvcmRlci13aWR0aCArIDNweCk7XG4gIH1cblxuICAubWF0LWZvY3VzLWluZGljYXRvci5tYXQtdGFiLWxpbms6OmJlZm9yZSxcbiAgLm1hdC1mb2N1cy1pbmRpY2F0b3IubWF0LXRhYi1sYWJlbDo6YmVmb3JlIHtcbiAgICBtYXJnaW46IDVweDtcbiAgfVxuXG4gIC8vIFJlbmRlciB0aGUgZm9jdXMgaW5kaWNhdG9yIG9uIGZvY3VzLiBEZWZpbmluZyBhIHBzZXVkbyBlbGVtZW50J3NcbiAgLy8gY29udGVudCB3aWxsIGNhdXNlIGl0IHRvIHJlbmRlci5cblxuICAvLyBDaGVja2JveGVzLCByYWRpb3MsIGFuZCBzbGlkZSB0b2dnbGVzIHJlbmRlciBmb2N1cyBpbmRpY2F0b3JzIHdoZW4gdGhlXG4gIC8vIGFzc29jaWF0ZWQgdmlzdWFsbHktaGlkZGVuIGlucHV0IGlzIGZvY3VzZWQuXG4gIC5tYXQtY2hlY2tib3gtaW5wdXQ6Zm9jdXMgfiAubWF0LWZvY3VzLWluZGljYXRvcjo6YmVmb3JlLFxuICAubWF0LXJhZGlvLWlucHV0OmZvY3VzIH4gLm1hdC1mb2N1cy1pbmRpY2F0b3I6OmJlZm9yZSxcbiAgLm1hdC1zbGlkZS10b2dnbGUtaW5wdXQ6Zm9jdXMgfiAubWF0LXNsaWRlLXRvZ2dsZS10aHVtYi1jb250YWluZXIgLm1hdC1mb2N1cy1pbmRpY2F0b3I6OmJlZm9yZSxcblxuICAvLyBGb3Igb3B0aW9ucywgcmVuZGVyIHRoZSBmb2N1cyBpbmRpY2F0b3Igd2hlbiB0aGUgY2xhc3MgLm1hdC1hY3RpdmVcbiAgLy8gaXMgcHJlc2VudC5cbiAgLm1hdC1mb2N1cy1pbmRpY2F0b3IubWF0LW9wdGlvbi5tYXQtYWN0aXZlOjpiZWZvcmUsXG5cbiAgLy8gRm9yIGNhbGVuZGFyIGNlbGxzLCByZW5kZXIgdGhlIGZvY3VzIGluZGljYXRvciB3aGVuIHRoZSBwYXJlbnQgY2VsbCBpc1xuICAvLyBmb2N1c2VkLlxuICAubWF0LWNhbGVuZGFyLWJvZHktY2VsbDpmb2N1cyAubWF0LWZvY3VzLWluZGljYXRvcjo6YmVmb3JlLFxuXG4gIC8vIFN0ZXBwZXIgaGVhZGVycyBoYXZlIHRoZSBmb2N1cyBpbmRpY2F0b3IgYXMgYSBkZXNjZW5kYW50LFxuICAvLyBiZWNhdXNlIGA6OmJlZm9yZWAgaXMgdXNlZCBmb3Igb3RoZXIgc3R5bGluZy5cbiAgLm1hdC1zdGVwLWhlYWRlcjpmb2N1cyAubWF0LWZvY3VzLWluZGljYXRvcjo6YmVmb3JlLFxuXG4gIC8vIEZvciBhbGwgb3RoZXIgY29tcG9uZW50cywgcmVuZGVyIHRoZSBmb2N1cyBpbmRpY2F0b3Igb24gZm9jdXMuXG4gIC5tYXQtZm9jdXMtaW5kaWNhdG9yOmZvY3VzOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICcnO1xuICB9XG59XG5cbi8vIE1peGluIHRoYXQgZW5zdXJlcyBmb2N1cyBpbmRpY2F0b3IgaG9zdCBlbGVtZW50cyBhcmUgcG9zaXRpb25lZCBzbyB0aGF0IHRoZSBmb2N1cyBpbmRpY2F0b3Jcbi8vIHBzZXVkbyBlbGVtZW50IHdpdGhpbiBpcyBwb3NpdGlvbmVkIHJlbGF0aXZlIHRvIHRoZSBob3N0LiBQcml2YXRlIG1peGluIGluY2x1ZGVkIHdpdGhpblxuLy8gYG1hdC1jb3JlYC5cbkBtaXhpbiBwcml2YXRlLXN0cm9uZy1mb2N1cy1pbmRpY2F0b3JzLXBvc2l0aW9uaW5nKCkge1xuICAubWF0LWZvY3VzLWluZGljYXRvciB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB9XG59XG4iLCJAdXNlICcuLi8uLi9jZGsvb3ZlcmxheSc7XG5AdXNlICcuLi8uLi9jZGsvYTExeSc7XG5AdXNlICcuLi8uLi9jZGsvdGV4dC1maWVsZCc7XG5cbi8vIENvcmUgc3R5bGVzIHRoYXQgY2FuIGJlIHVzZWQgdG8gYXBwbHkgbWF0ZXJpYWwgZGVzaWduIHRyZWF0bWVudHMgdG8gYW55IGVsZW1lbnQuXG5AdXNlICcuL3JpcHBsZS9yaXBwbGUnO1xuQHVzZSAnLi9mb2N1cy1pbmRpY2F0b3JzL2ZvY3VzLWluZGljYXRvcnMnO1xuQHVzZSAnLi90eXBvZ3JhcGh5L2FsbC10eXBvZ3JhcGh5JztcblxuLy8gTWl4aW4gdGhhdCByZW5kZXJzIGFsbCBvZiB0aGUgY29yZSBzdHlsZXMgdGhhdCBhcmUgbm90IHRoZW1lLWRlcGVuZGVudC5cbkBtaXhpbiBjb3JlKCR0eXBvZ3JhcGh5LWNvbmZpZzogbnVsbCkge1xuICBAaW5jbHVkZSBhbGwtdHlwb2dyYXBoeS5hbGwtY29tcG9uZW50LXR5cG9ncmFwaGllcygkdHlwb2dyYXBoeS1jb25maWcpO1xuICBAaW5jbHVkZSByaXBwbGUucmlwcGxlKCk7XG4gIEBpbmNsdWRlIGExMXkuYTExeS12aXN1YWxseS1oaWRkZW4oKTtcbiAgQGluY2x1ZGUgb3ZlcmxheS5vdmVybGF5KCk7XG4gIEBpbmNsdWRlIHRleHQtZmllbGQudGV4dC1maWVsZC1hdXRvc2l6ZSgpO1xuICBAaW5jbHVkZSB0ZXh0LWZpZWxkLnRleHQtZmllbGQtYXV0b2ZpbGwoKTtcblxuICBAaW5jbHVkZSBmb2N1cy1pbmRpY2F0b3JzLnByaXZhdGUtc3Ryb25nLWZvY3VzLWluZGljYXRvcnMtcG9zaXRpb25pbmcoKTtcbiAgQGluY2x1ZGUgX21kYy1jb3JlKCk7XG59XG5cbi8vIE1peGluIHRoYXQgcmVuZGVycyBhbGwgb2YgdGhlIGNvcmUgTURDIHN0eWxlcy4gUHJpdmF0ZSBtaXhpbiBpbmNsdWRlZCB3aXRoIGBtYXQtY29yZWAuXG5AbWl4aW4gX21kYy1jb3JlKCkge1xuICBAaW5jbHVkZSBfbWRjLXN0cm9uZy1mb2N1cy1pbmRpY2F0b3JzLXBvc2l0aW9uaW5nKCk7XG59XG5cbi8vIE1peGluIHRoYXQgZW5zdXJlcyBmb2N1cyBpbmRpY2F0b3IgaG9zdCBlbGVtZW50cyBhcmUgcG9zaXRpb25lZCBzbyB0aGF0IHRoZSBmb2N1cyBpbmRpY2F0b3Jcbi8vIHBzZXVkbyBlbGVtZW50IHdpdGhpbiBpcyBwb3NpdGlvbmVkIHJlbGF0aXZlIHRvIHRoZSBob3N0LiBQcml2YXRlIG1peGluIGluY2x1ZGVkIHdpdGhpblxuLy8gYF9tYXQtbWRjLWNvcmVgLlxuQG1peGluIF9tZGMtc3Ryb25nLWZvY3VzLWluZGljYXRvcnMtcG9zaXRpb25pbmcoKSB7XG4gIC5tYXQtbWRjLWZvY3VzLWluZGljYXRvciB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB9XG59XG4iLCJAdXNlICdzYXNzOm1hcCc7XG5AdXNlICdzYXNzOm1ldGEnO1xuQHVzZSAnLi4vdGhlbWluZy90aGVtaW5nJztcblxuLy8gQ29sb3JzIGZvciB0aGUgcmlwcGxlIGVsZW1lbnRzLlxuQG1peGluIGNvbG9yKCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAkZm9yZWdyb3VuZDogbWFwLmdldCgkY29uZmlnLCBmb3JlZ3JvdW5kKTtcbiAgJGZvcmVncm91bmQtYmFzZTogbWFwLmdldCgkZm9yZWdyb3VuZCwgYmFzZSk7XG4gICRjb2xvci1vcGFjaXR5OiAwLjE7XG5cbiAgLm1hdC1yaXBwbGUtZWxlbWVudCB7XG4gICAgLy8gSWYgdGhlIHJpcHBsZSBjb2xvciBpcyByZXNvbHZlcyB0byBhIGNvbG9yICp0eXBlKiwgd2UgY2FuIHVzZSBpdCBkaXJlY3RseSwgb3RoZXJ3aXNlXG4gICAgLy8gKGUuZy4gaXQgcmVzb2x2ZXMgdG8gYSBDU1MgdmFyaWFibGUpIHdlIGZhbGwgYmFjayB0byB1c2luZyB0aGUgY29sb3IgYW5kIHNldHRpbmcgYW4gb3BhY2l0eS5cbiAgICBAaWYgKG1ldGEudHlwZS1vZigkZm9yZWdyb3VuZC1iYXNlKSA9PSBjb2xvcikge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgkZm9yZWdyb3VuZC1iYXNlLCAkY29sb3Itb3BhY2l0eSk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRmb3JlZ3JvdW5kLWJhc2U7XG4gICAgICBvcGFjaXR5OiAkY29sb3Itb3BhY2l0eTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiB0aGVtaW5nLnByaXZhdGUtbGVnYWN5LWdldC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgQGluY2x1ZGUgdGhlbWluZy5wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LXJpcHBsZScpIHtcbiAgICAkY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkdGhlbWUpO1xuICAgIEBpZiAkY29sb3IgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBjb2xvcigkY29sb3IpO1xuICAgIH1cbiAgfVxufVxuIiwiQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnLi4vLi4vdGhlbWluZy90aGVtaW5nJztcblxuQG1peGluIGNvbG9yKCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAkaXMtZGFyay10aGVtZTogbWFwLmdldCgkY29uZmlnLCBpcy1kYXJrKTtcbiAgJHByaW1hcnk6IG1hcC5nZXQoJGNvbmZpZywgcHJpbWFyeSk7XG4gICRhY2NlbnQ6IG1hcC5nZXQoJGNvbmZpZywgYWNjZW50KTtcbiAgJHdhcm46IG1hcC5nZXQoJGNvbmZpZywgd2Fybik7XG4gICRiYWNrZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGJhY2tncm91bmQpO1xuXG4gIC8vIE5PVEUodHJhdmlza2F1Zm1hbik6IFdoaWxlIHRoZSBzcGVjIGNhbGxzIGZvciB0cmFuc2x1Y2VudCBibGFja3Mvd2hpdGVzIGZvciBkaXNhYmxlZCBjb2xvcnMsXG4gIC8vIHRoaXMgZG9lcyBub3Qgd29yayB3ZWxsIHdpdGggZWxlbWVudHMgbGF5ZXJlZCBvbiB0b3Agb2Ygb25lIGFub3RoZXIuIFRvIGdldCBhcm91bmQgdGhpcyB3ZVxuICAvLyBibGVuZCB0aGUgY29sb3JzIHRvZ2V0aGVyIGJhc2VkIG9uIHRoZSBiYXNlIGNvbG9yIGFuZCB0aGUgdGhlbWUgYmFja2dyb3VuZC5cbiAgJHdoaXRlLTMwcGN0LW9wYWNpdHktb24tZGFyazogIzY4Njg2ODtcbiAgJGJsYWNrLTI2cGN0LW9wYWNpdHktb24tbGlnaHQ6ICNiMGIwYjA7XG4gICRkaXNhYmxlZC1jb2xvcjogaWYoJGlzLWRhcmstdGhlbWUsICR3aGl0ZS0zMHBjdC1vcGFjaXR5LW9uLWRhcmssICRibGFjay0yNnBjdC1vcGFjaXR5LW9uLWxpZ2h0KTtcbiAgJGNvbG9yZWQtYm94LXNlbGVjdG9yOiAnLm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZCwgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZSc7XG5cbiAgLm1hdC1wc2V1ZG8tY2hlY2tib3gge1xuICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUobWFwLmdldCgkY29uZmlnLCBmb3JlZ3JvdW5kKSwgc2Vjb25kYXJ5LXRleHQpO1xuXG4gICAgJjo6YWZ0ZXIge1xuICAgICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYmFja2dyb3VuZCwgYmFja2dyb3VuZCk7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1wc2V1ZG8tY2hlY2tib3gtZGlzYWJsZWQge1xuICAgIGNvbG9yOiAkZGlzYWJsZWQtY29sb3I7XG4gIH1cblxuICAubWF0LXByaW1hcnkgLm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZCxcbiAgLm1hdC1wcmltYXJ5IC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGUge1xuICAgIGJhY2tncm91bmQ6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZShtYXAuZ2V0KCRjb25maWcsIHByaW1hcnkpKTtcbiAgfVxuXG4gIC8vIERlZmF1bHQgdG8gdGhlIGFjY2VudCBjb2xvci4gTm90ZSB0aGF0IHRoZSBwc2V1ZG8gY2hlY2tib3hlcyBhcmUgbWVhbnQgdG8gaW5oZXJpdCB0aGVcbiAgLy8gdGhlbWUgZnJvbSB0aGVpciBwYXJlbnQsIHJhdGhlciB0aGFuIGltcGxlbWVudGluZyB0aGVpciBvd24gdGhlbWluZywgd2hpY2ggaXMgd2h5IHdlXG4gIC8vIGRvbid0IGF0dGFjaCB0byB0aGUgYG1hdC0qYCBjbGFzc2VzLiBBbHNvIG5vdGUgdGhhdCB0aGlzIG5lZWRzIHRvIGJlIGJlbG93IGAubWF0LXByaW1hcnlgXG4gIC8vIGluIG9yZGVyIHRvIGFsbG93IGZvciB0aGUgY29sb3IgdG8gYmUgb3ZlcndyaXR0ZW4gaWYgdGhlIGNoZWNrYm94IGlzIGluc2lkZSBhIHBhcmVudCB0aGF0XG4gIC8vIGhhcyBgbWF0LWFjY2VudGAgYW5kIGlzIHBsYWNlZCBpbnNpZGUgYW5vdGhlciBwYXJlbnQgdGhhdCBoYXMgYG1hdC1wcmltYXJ5YC5cbiAgLm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZCxcbiAgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZSxcbiAgLm1hdC1hY2NlbnQgLm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZCxcbiAgLm1hdC1hY2NlbnQgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZSB7XG4gICAgYmFja2dyb3VuZDogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKG1hcC5nZXQoJGNvbmZpZywgYWNjZW50KSk7XG4gIH1cblxuICAubWF0LXdhcm4gLm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZCxcbiAgLm1hdC13YXJuIC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGUge1xuICAgIGJhY2tncm91bmQ6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZShtYXAuZ2V0KCRjb25maWcsIHdhcm4pKTtcbiAgfVxuXG4gIC5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWQsXG4gIC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGUge1xuICAgICYubWF0LXBzZXVkby1jaGVja2JveC1kaXNhYmxlZCB7XG4gICAgICBiYWNrZ3JvdW5kOiAkZGlzYWJsZWQtY29sb3I7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiB0eXBvZ3JhcGh5KCRjb25maWctb3ItdGhlbWUpIHt9XG5cbkBtaXhpbiBfZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZykge1xuICAkdGhlbWU6IHRoZW1pbmcucHJpdmF0ZS1sZWdhY3ktZ2V0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICBAaW5jbHVkZSB0aGVtaW5nLnByaXZhdGUtY2hlY2stZHVwbGljYXRlLXRoZW1lLXN0eWxlcygkdGhlbWUsICdtYXQtcHNldWRvLWNoZWNrYm94Jykge1xuICAgICRjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgJGRlbnNpdHk6IHRoZW1pbmcuZ2V0LWRlbnNpdHktY29uZmlnKCR0aGVtZSk7XG4gICAgJHR5cG9ncmFwaHk6IHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCR0aGVtZSk7XG5cbiAgICBAaWYgJGNvbG9yICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgX2RlbnNpdHkoJGRlbnNpdHkpO1xuICAgIH1cbiAgICBAaWYgJHR5cG9ncmFwaHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5KCR0eXBvZ3JhcGh5KTtcbiAgICB9XG4gIH1cbn1cbiIsIkB1c2UgJ3Nhc3M6bWFwJztcbkB1c2UgJ3RoZW1pbmcvdGhlbWluZyc7XG5AdXNlICcuL3N0eWxlL3ByaXZhdGUnO1xuQHVzZSAnLi9yaXBwbGUvcmlwcGxlLXRoZW1lJztcbkB1c2UgJy4vb3B0aW9uL29wdGlvbi10aGVtZSc7XG5AdXNlICcuL29wdGlvbi9vcHRncm91cC10aGVtZSc7XG5AdXNlICcuL3NlbGVjdGlvbi9wc2V1ZG8tY2hlY2tib3gvcHNldWRvLWNoZWNrYm94LXRoZW1lJztcbkB1c2UgJy4vc3R5bGUvZWxldmF0aW9uJztcblxuXG5AbWl4aW4gY29sb3IoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gIC8vIFdyYXBwZXIgZWxlbWVudCB0aGF0IHByb3ZpZGVzIHRoZSB0aGVtZSBiYWNrZ3JvdW5kIHdoZW4gdGhlIHVzZXIncyBjb250ZW50IGlzbid0XG4gIC8vIGluc2lkZSBvZiBhIGBtYXQtc2lkZW5hdi1jb250YWluZXJgLiBOb3RlIHRoYXQgd2UgbmVlZCB0byBleGNsdWRlIHRoZSBhbXBlcnNhbmRcbiAgLy8gc2VsZWN0b3IgaW4gY2FzZSB0aGUgbWl4aW4gaXMgaW5jbHVkZWQgYXQgdGhlIHRvcCBsZXZlbC5cbiAgLm1hdC1hcHAtYmFja2dyb3VuZCN7aWYoJiwgJywgJi5tYXQtYXBwLWJhY2tncm91bmQnLCAnJyl9IHtcbiAgICAkYmFja2dyb3VuZDogbWFwLmdldCgkY29uZmlnLCBiYWNrZ3JvdW5kKTtcbiAgICAkZm9yZWdyb3VuZDogbWFwLmdldCgkY29uZmlnLCBmb3JlZ3JvdW5kKTtcblxuICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYmFja2dyb3VuZCwgYmFja2dyb3VuZCk7XG4gICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgdGV4dCk7XG4gIH1cblxuICAvLyBQcm92aWRlcyBleHRlcm5hbCBDU1MgY2xhc3NlcyBmb3IgZWFjaCBlbGV2YXRpb24gdmFsdWUuIEVhY2ggQ1NTIGNsYXNzIGlzIGZvcm1hdHRlZCBhc1xuICAvLyBgbWF0LWVsZXZhdGlvbi16JHpWYWx1ZWAgd2hlcmUgYCR6VmFsdWVgIGNvcnJlc3BvbmRzIHRvIHRoZSB6LXNwYWNlIHRvIHdoaWNoIHRoZSBlbGVtZW50IGlzXG4gIC8vIGVsZXZhdGVkLlxuICBAZm9yICR6VmFsdWUgZnJvbSAwIHRocm91Z2ggMjQge1xuICAgIC4je2VsZXZhdGlvbi4kcHJlZml4fSN7JHpWYWx1ZX0ge1xuICAgICAgQGluY2x1ZGUgcHJpdmF0ZS5wcml2YXRlLXRoZW1lLWVsZXZhdGlvbigkelZhbHVlLCAkY29uZmlnKTtcbiAgICB9XG4gIH1cblxuICAvLyBNYXJrZXIgdGhhdCBpcyB1c2VkIHRvIGRldGVybWluZSB3aGV0aGVyIHRoZSB1c2VyIGhhcyBhZGRlZCBhIHRoZW1lIHRvIHRoZWlyIHBhZ2UuXG4gIEBhdC1yb290IHtcbiAgICAubWF0LXRoZW1lLWxvYWRlZC1tYXJrZXIge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gIH1cbn1cblxuLy8gTWl4aW4gdGhhdCByZW5kZXJzIGFsbCBvZiB0aGUgY29yZSBzdHlsZXMgdGhhdCBkZXBlbmQgb24gdGhlIHRoZW1lLlxuQG1peGluIHRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiB0aGVtaW5nLnByaXZhdGUtbGVnYWN5LWdldC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgLy8gV3JhcCB0aGUgc3ViLXRoZW1lIGluY2x1ZGVzIGluIHRoZSBkdXBsaWNhdGUgdGhlbWUgc3R5bGVzIG1peGluLiBUaGlzIGVuc3VyZXMgdGhhdFxuICAvLyB0aGVyZSB3b24ndCBiZSBtdWx0aXBsZSB3YXJuaW5ncy4gZS5nLiBpZiBgbWF0LWNvcmUtdGhlbWVgIHJlcG9ydHMgYSB3YXJuaW5nLCB0aGVuXG4gIC8vIHRoZSBpbXBvcnRlZCB0aGVtZXMgKHN1Y2ggYXMgYG1hdC1yaXBwbGUtdGhlbWVgKSBzaG91bGQgbm90IHJlcG9ydCBhZ2Fpbi5cbiAgQGluY2x1ZGUgdGhlbWluZy5wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LWNvcmUnKSB7XG4gICAgQGluY2x1ZGUgcmlwcGxlLXRoZW1lLnRoZW1lKCR0aGVtZSk7XG4gICAgQGluY2x1ZGUgb3B0aW9uLXRoZW1lLnRoZW1lKCR0aGVtZSk7XG4gICAgQGluY2x1ZGUgb3B0Z3JvdXAtdGhlbWUudGhlbWUoJHRoZW1lKTtcbiAgICBAaW5jbHVkZSBwc2V1ZG8tY2hlY2tib3gtdGhlbWUudGhlbWUoJHRoZW1lKTtcblxuICAgICRjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgQGlmICRjb2xvciAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIGNvbG9yKCRjb2xvcik7XG4gICAgfVxuICB9XG59XG4iLCJAdXNlICdzYXNzOm1hcCc7XG5AdXNlICdzYXNzOm1hdGgnO1xuQHVzZSAnc2FzczptZXRhJztcbkB1c2UgJ3ZhcmlhYmxlcyc7XG5cblxuLy8gQSBjb2xsZWN0aW9uIG9mIG1peGlucyBhbmQgQ1NTIGNsYXNzZXMgdGhhdCBjYW4gYmUgdXNlZCB0byBhcHBseSBlbGV2YXRpb24gdG8gYSBtYXRlcmlhbFxuLy8gZWxlbWVudC5cbi8vIFNlZTogaHR0cHM6Ly9tYXRlcmlhbC5pby9kZXNpZ24vZW52aXJvbm1lbnQvZWxldmF0aW9uLmh0bWxcbi8vIEV4YW1wbGVzOlxuLy9cbi8vXG4vLyAubWF0LWZvbyB7XG4vLyAgIEBpbmNsdWRlICRtYXQtZWxldmF0aW9uKDIpO1xuLy9cbi8vICAgJjphY3RpdmUge1xuLy8gICAgIEBpbmNsdWRlICRtYXQtZWxldmF0aW9uKDgpO1xuLy8gICB9XG4vLyB9XG4vL1xuLy8gPGRpdiBpZD1cImV4dGVybmFsLWNhcmRcIiBjbGFzcz1cIm1hdC1lbGV2YXRpb24tejJcIj48cD5Tb21lIGNvbnRlbnQ8L3A+PC9kaXY+XG4vL1xuLy8gRm9yIGFuIGV4cGxhbmF0aW9uIG9mIHRoZSBkZXNpZ24gYmVoaW5kIGhvdyBlbGV2YXRpb24gaXMgaW1wbGVtZW50ZWQsIHNlZSB0aGUgZGVzaWduIGRvYyBhdFxuLy8gaHR0cHM6Ly9nb28uZ2wvS3EwazlaLlxuXG4vLyBDb2xvcnMgZm9yIHVtYnJhLCBwZW51bWJyYSwgYW5kIGFtYmllbnQgc2hhZG93cy4gQXMgZGVzY3JpYmVkIGluIHRoZSBkZXNpZ24gZG9jLCBlYWNoIGVsZXZhdGlvblxuLy8gbGV2ZWwgaXMgY3JlYXRlZCB1c2luZyBhIHNldCBvZiAzIHNoYWRvdyB2YWx1ZXMsIG9uZSBmb3IgdW1icmEgKHRoZSBzaGFkb3cgcmVwcmVzZW50aW5nIHRoZVxuLy8gc3BhY2UgY29tcGxldGVseSBvYnNjdXJlZCBieSBhbiBvYmplY3QgcmVsYXRpdmUgdG8gaXRzIGxpZ2h0IHNvdXJjZSksIG9uZSBmb3IgcGVudW1icmEgKHRoZVxuLy8gc3BhY2UgcGFydGlhbGx5IG9ic2N1cmVkIGJ5IGFuIG9iamVjdCksIGFuZCBvbmUgZm9yIGFtYmllbnQgKHRoZSBzcGFjZSB3aGljaCBjb250YWlucyB0aGUgb2JqZWN0XG4vLyBpdHNlbGYpLiBGb3IgYSBmdXJ0aGVyIGV4cGxhbmF0aW9uIG9mIHRoZXNlIHRlcm1zIGFuZCB0aGVpciBtZWFuaW5ncywgc2VlXG4vLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9VbWJyYSxfcGVudW1icmFfYW5kX2FudHVtYnJhLlxuXG4vLyBNYXBzIGZvciB0aGUgZGlmZmVyZW50IHNoYWRvdyBzZXRzIGFuZCB0aGVpciB2YWx1ZXMgd2l0aGluIGVhY2ggei1zcGFjZS4gVGhlc2UgdmFsdWVzIHdlcmVcbi8vIGNyZWF0ZWQgYnkgdGFraW5nIGEgZmV3IHJlZmVyZW5jZSBzaGFkb3cgc2V0cyBjcmVhdGVkIGJ5IEdvb2dsZSdzIERlc2lnbmVycyBhbmQgaW50ZXJwb2xhdGluZ1xuLy8gYWxsIG9mIHRoZSB2YWx1ZXMgYmV0d2VlbiB0aGVtLlxuXG5AZnVuY3Rpb24gX2dldC11bWJyYS1tYXAoJGNvbG9yLCAkb3BhY2l0eSkge1xuICAkc2hhZG93LWNvbG9yOiBpZihtZXRhLnR5cGUtb2YoJGNvbG9yKSA9PSBjb2xvciwgcmdiYSgkY29sb3IsICRvcGFjaXR5ICogMC4yKSwgJGNvbG9yKTtcblxuICBAcmV0dXJuIChcbiAgICAwOiAnMHB4IDBweCAwcHggMHB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDE6ICcwcHggMnB4IDFweCAtMXB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDI6ICcwcHggM3B4IDFweCAtMnB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDM6ICcwcHggM3B4IDNweCAtMnB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDQ6ICcwcHggMnB4IDRweCAtMXB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDU6ICcwcHggM3B4IDVweCAtMXB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDY6ICcwcHggM3B4IDVweCAtMXB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDc6ICcwcHggNHB4IDVweCAtMnB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDg6ICcwcHggNXB4IDVweCAtM3B4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDk6ICcwcHggNXB4IDZweCAtM3B4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDEwOiAnMHB4IDZweCA2cHggLTNweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAxMTogJzBweCA2cHggN3B4IC00cHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMTI6ICcwcHggN3B4IDhweCAtNHB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDEzOiAnMHB4IDdweCA4cHggLTRweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAxNDogJzBweCA3cHggOXB4IC00cHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMTU6ICcwcHggOHB4IDlweCAtNXB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDE2OiAnMHB4IDhweCAxMHB4IC01cHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMTc6ICcwcHggOHB4IDExcHggLTVweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAxODogJzBweCA5cHggMTFweCAtNXB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDE5OiAnMHB4IDlweCAxMnB4IC02cHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMjA6ICcwcHggMTBweCAxM3B4IC02cHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMjE6ICcwcHggMTBweCAxM3B4IC02cHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMjI6ICcwcHggMTBweCAxNHB4IC02cHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMjM6ICcwcHggMTFweCAxNHB4IC03cHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMjQ6ICcwcHggMTFweCAxNXB4IC03cHggI3skc2hhZG93LWNvbG9yfSdcbiAgKTtcbn1cblxuQGZ1bmN0aW9uIF9nZXQtcGVudW1icmEtbWFwKCRjb2xvciwgJG9wYWNpdHkpIHtcbiAgJHNoYWRvdy1jb2xvcjogaWYobWV0YS50eXBlLW9mKCRjb2xvcikgPT0gY29sb3IsIHJnYmEoJGNvbG9yLCAkb3BhY2l0eSAqIDAuMTQpLCAkY29sb3IpO1xuXG4gIEByZXR1cm4gKFxuICAgIDA6ICcwcHggMHB4IDBweCAwcHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMTogJzBweCAxcHggMXB4IDBweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAyOiAnMHB4IDJweCAycHggMHB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDM6ICcwcHggM3B4IDRweCAwcHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgNDogJzBweCA0cHggNXB4IDBweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICA1OiAnMHB4IDVweCA4cHggMHB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDY6ICcwcHggNnB4IDEwcHggMHB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDc6ICcwcHggN3B4IDEwcHggMXB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDg6ICcwcHggOHB4IDEwcHggMXB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDk6ICcwcHggOXB4IDEycHggMXB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDEwOiAnMHB4IDEwcHggMTRweCAxcHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMTE6ICcwcHggMTFweCAxNXB4IDFweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAxMjogJzBweCAxMnB4IDE3cHggMnB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDEzOiAnMHB4IDEzcHggMTlweCAycHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMTQ6ICcwcHggMTRweCAyMXB4IDJweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAxNTogJzBweCAxNXB4IDIycHggMnB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDE2OiAnMHB4IDE2cHggMjRweCAycHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMTc6ICcwcHggMTdweCAyNnB4IDJweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAxODogJzBweCAxOHB4IDI4cHggMnB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDE5OiAnMHB4IDE5cHggMjlweCAycHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMjA6ICcwcHggMjBweCAzMXB4IDNweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAyMTogJzBweCAyMXB4IDMzcHggM3B4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDIyOiAnMHB4IDIycHggMzVweCAzcHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMjM6ICcwcHggMjNweCAzNnB4IDNweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAyNDogJzBweCAyNHB4IDM4cHggM3B4ICN7JHNoYWRvdy1jb2xvcn0nXG4gICk7XG59XG5cbkBmdW5jdGlvbiBfZ2V0LWFtYmllbnQtbWFwKCRjb2xvciwgJG9wYWNpdHkpIHtcbiAgJHNoYWRvdy1jb2xvcjogaWYobWV0YS50eXBlLW9mKCRjb2xvcikgPT0gY29sb3IsIHJnYmEoJGNvbG9yLCAkb3BhY2l0eSAqIDAuMTIpLCAkY29sb3IpO1xuXG4gIEByZXR1cm4gKFxuICAgIDA6ICcwcHggMHB4IDBweCAwcHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMTogJzBweCAxcHggM3B4IDBweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAyOiAnMHB4IDFweCA1cHggMHB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDM6ICcwcHggMXB4IDhweCAwcHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgNDogJzBweCAxcHggMTBweCAwcHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgNTogJzBweCAxcHggMTRweCAwcHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgNjogJzBweCAxcHggMThweCAwcHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgNzogJzBweCAycHggMTZweCAxcHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgODogJzBweCAzcHggMTRweCAycHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgOTogJzBweCAzcHggMTZweCAycHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMTA6ICcwcHggNHB4IDE4cHggM3B4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDExOiAnMHB4IDRweCAyMHB4IDNweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAxMjogJzBweCA1cHggMjJweCA0cHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMTM6ICcwcHggNXB4IDI0cHggNHB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDE0OiAnMHB4IDVweCAyNnB4IDRweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAxNTogJzBweCA2cHggMjhweCA1cHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMTY6ICcwcHggNnB4IDMwcHggNXB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDE3OiAnMHB4IDZweCAzMnB4IDVweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAxODogJzBweCA3cHggMzRweCA2cHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMTk6ICcwcHggN3B4IDM2cHggNnB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDIwOiAnMHB4IDhweCAzOHB4IDdweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAyMTogJzBweCA4cHggNDBweCA3cHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMjI6ICcwcHggOHB4IDQycHggN3B4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDIzOiAnMHB4IDlweCA0NHB4IDhweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAyNDogJzBweCA5cHggNDZweCA4cHggI3skc2hhZG93LWNvbG9yfSdcbiAgKTtcbn1cblxuLy8gVGhlIGRlZmF1bHQgZHVyYXRpb24gdmFsdWUgZm9yIGVsZXZhdGlvbiB0cmFuc2l0aW9ucy5cbiR0cmFuc2l0aW9uLWR1cmF0aW9uOiAyODBtcyAhZGVmYXVsdDtcblxuLy8gVGhlIGRlZmF1bHQgZWFzaW5nIHZhbHVlIGZvciBlbGV2YXRpb24gdHJhbnNpdGlvbnMuXG4kdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IHZhcmlhYmxlcy4kZmFzdC1vdXQtc2xvdy1pbi10aW1pbmctZnVuY3Rpb247XG5cbi8vIFRoZSBkZWZhdWx0IGNvbG9yIGZvciBlbGV2YXRpb24gc2hhZG93cy5cbiRjb2xvcjogYmxhY2sgIWRlZmF1bHQ7XG5cbi8vIFRoZSBkZWZhdWx0IG9wYWNpdHkgc2NhbGluZyB2YWx1ZSBmb3IgZWxldmF0aW9uIHNoYWRvd3MuXG4kb3BhY2l0eTogMSAhZGVmYXVsdDtcblxuLy8gUHJlZml4IGZvciBlbGV2YXRpb24tcmVsYXRlZCBzZWxlY3RvcnMuXG4kcHJlZml4OiAnbWF0LWVsZXZhdGlvbi16JztcblxuLy8gQXBwbGllcyB0aGUgY29ycmVjdCBjc3MgcnVsZXMgdG8gYW4gZWxlbWVudCB0byBnaXZlIGl0IHRoZSBlbGV2YXRpb24gc3BlY2lmaWVkIGJ5ICR6VmFsdWUuXG4vLyBUaGUgJHpWYWx1ZSBtdXN0IGJlIGJldHdlZW4gMCBhbmQgMjQuXG5AbWl4aW4gZWxldmF0aW9uKCR6VmFsdWUsICRjb2xvcjogJGNvbG9yLCAkb3BhY2l0eTogJG9wYWNpdHkpIHtcbiAgQGlmIG1ldGEudHlwZS1vZigkelZhbHVlKSAhPSBudW1iZXIgb3Igbm90IG1hdGguaXMtdW5pdGxlc3MoJHpWYWx1ZSkge1xuICAgIEBlcnJvciAnJHpWYWx1ZSBtdXN0IGJlIGEgdW5pdGxlc3MgbnVtYmVyJztcbiAgfVxuICBAaWYgJHpWYWx1ZSA8IDAgb3IgJHpWYWx1ZSA+IDI0IHtcbiAgICBAZXJyb3IgJyR6VmFsdWUgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDI0JztcbiAgfVxuXG4gIGJveC1zaGFkb3c6ICN7bWFwLmdldChfZ2V0LXVtYnJhLW1hcCgkY29sb3IsICRvcGFjaXR5KSwgJHpWYWx1ZSl9LFxuICAgICAgICAgICAgICAje21hcC5nZXQoX2dldC1wZW51bWJyYS1tYXAoJGNvbG9yLCAkb3BhY2l0eSksICR6VmFsdWUpfSxcbiAgICAgICAgICAgICAgI3ttYXAuZ2V0KF9nZXQtYW1iaWVudC1tYXAoJGNvbG9yLCAkb3BhY2l0eSksICR6VmFsdWUpfTtcbn1cblxuLy8gQXBwbGllcyB0aGUgZWxldmF0aW9uIHRvIGFuIGVsZW1lbnQgaW4gYSBtYW5uZXIgdGhhdCBhbGxvd3Ncbi8vIGNvbnN1bWVycyB0byBvdmVycmlkZSBpdCB2aWEgdGhlIE1hdGVyaWFsIGVsZXZhdGlvbiBjbGFzc2VzLlxuQG1peGluIG92ZXJyaWRhYmxlLWVsZXZhdGlvbihcbiAgICAkelZhbHVlLFxuICAgICRjb2xvcjogJGNvbG9yLFxuICAgICRvcGFjaXR5OiAkb3BhY2l0eSkge1xuICAmOm5vdChbY2xhc3MqPScjeyRwcmVmaXh9J10pIHtcbiAgICBAaW5jbHVkZSBlbGV2YXRpb24oJHpWYWx1ZSwgJGNvbG9yLCAkb3BhY2l0eSk7XG4gIH1cbn1cblxuLy8gUmV0dXJucyBhIHN0cmluZyB0aGF0IGNhbiBiZSB1c2VkIGFzIHRoZSB2YWx1ZSBmb3IgYSB0cmFuc2l0aW9uIHByb3BlcnR5IGZvciBlbGV2YXRpb24uXG4vLyBDYWxsaW5nIHRoaXMgZnVuY3Rpb24gZGlyZWN0bHkgaXMgdXNlZnVsIGluIHNpdHVhdGlvbnMgd2hlcmUgYSBjb21wb25lbnQgbmVlZHMgdG8gdHJhbnNpdGlvblxuLy8gbW9yZSB0aGFuIG9uZSBwcm9wZXJ0eS5cbi8vXG4vLyAuZm9vIHtcbi8vICAgdHJhbnNpdGlvbjogbWF0LWVsZXZhdGlvbi10cmFuc2l0aW9uLXByb3BlcnR5LXZhbHVlKCksIG9wYWNpdHkgMTAwbXMgZWFzZTtcbi8vIH1cbkBmdW5jdGlvbiBwcml2YXRlLXRyYW5zaXRpb24tcHJvcGVydHktdmFsdWUoXG4gICAgJGR1cmF0aW9uOiAkdHJhbnNpdGlvbi1kdXJhdGlvbixcbiAgICAkZWFzaW5nOiAkdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24pIHtcbiAgQHJldHVybiBib3gtc2hhZG93ICN7JGR1cmF0aW9ufSAjeyRlYXNpbmd9O1xufVxuXG4vLyBBcHBsaWVzIHRoZSBjb3JyZWN0IGNzcyBydWxlcyBuZWVkZWQgdG8gaGF2ZSBhbiBlbGVtZW50IHRyYW5zaXRpb24gYmV0d2VlbiBlbGV2YXRpb25zLlxuLy8gVGhpcyBtaXhpbiBzaG91bGQgYmUgYXBwbGllZCB0byBlbGVtZW50cyB3aG9zZSBlbGV2YXRpb24gdmFsdWVzIHdpbGwgY2hhbmdlIGRlcGVuZGluZyBvbiB0aGVpclxuLy8gY29udGV4dCAoZS5nLiB3aGVuIGFjdGl2ZSBvciBkaXNhYmxlZCkuXG4vL1xuLy8gTk9URSh0cmF2aXNrYXVmbWFuKTogQm90aCB0aGlzIG1peGluIGFuZCB0aGUgYWJvdmUgZnVuY3Rpb24gdXNlIGRlZmF1bHQgcGFyYW1ldGVycyBzbyB0aGV5IGNhblxuLy8gYmUgdXNlZCBpbiB0aGUgc2FtZSB3YXkgYnkgY2xpZW50cy5cbkBtaXhpbiBlbGV2YXRpb24tdHJhbnNpdGlvbihcbiAgICAkZHVyYXRpb246ICR0cmFuc2l0aW9uLWR1cmF0aW9uLFxuICAgICRlYXNpbmc6ICR0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbikge1xuICB0cmFuc2l0aW9uOiBwcml2YXRlLXRyYW5zaXRpb24tcHJvcGVydHktdmFsdWUoJGR1cmF0aW9uLCAkZWFzaW5nKTtcbn1cbiIsIkB1c2UgJ3Nhc3M6bWFwJztcbkB1c2UgJy4uL2NvcmUvc3R5bGUvcHJpdmF0ZSc7XG5AdXNlICcuLi9jb3JlL3RoZW1pbmcvdGhlbWluZyc7XG5cbkBtaXhpbiBjb2xvcigkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJGZvcmVncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgZm9yZWdyb3VuZCk7XG4gICRiYWNrZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGJhY2tncm91bmQpO1xuXG4gIC5tYXQtYXV0b2NvbXBsZXRlLXBhbmVsIHtcbiAgICBAaW5jbHVkZSBwcml2YXRlLnByaXZhdGUtdGhlbWUtb3ZlcnJpZGFibGUtZWxldmF0aW9uKDQsICRjb25maWcpO1xuICAgIGJhY2tncm91bmQ6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYmFja2dyb3VuZCwgY2FyZCk7XG4gICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgdGV4dCk7XG5cbiAgICAvLyBTZWxlY3RlZCBvcHRpb25zIGluIGF1dG9jb21wbGV0ZXMgc2hvdWxkIG5vdCBiZSBncmF5LCBidXQgd2VcbiAgICAvLyBvbmx5IHdhbnQgdG8gb3ZlcnJpZGUgdGhlIGJhY2tncm91bmQgZm9yIHNlbGVjdGVkIG9wdGlvbnMgaWZcbiAgICAvLyB0aGV5IGFyZSAqbm90KiBpbiBob3ZlciBvciBmb2N1cyBzdGF0ZS4gVGhpcyBjaGFuZ2UgaGFzIHRvIGJlXG4gICAgLy8gbWFkZSBoZXJlIGJlY2F1c2UgYmFzZSBvcHRpb24gc3R5bGVzIGFyZSBzaGFyZWQgYmV0d2VlbiB0aGVcbiAgICAvLyBhdXRvY29tcGxldGUgYW5kIHRoZSBzZWxlY3QuXG4gICAgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkOm5vdCgubWF0LWFjdGl2ZSk6bm90KDpob3Zlcikge1xuICAgICAgYmFja2dyb3VuZDogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLCBjYXJkKTtcblxuICAgICAgJjpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpIHtcbiAgICAgICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgdGV4dCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiB0eXBvZ3JhcGh5KCRjb25maWctb3ItdGhlbWUpIHt9XG5cbkBtaXhpbiBfZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZykge1xuICAkdGhlbWU6IHRoZW1pbmcucHJpdmF0ZS1sZWdhY3ktZ2V0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICBAaW5jbHVkZSB0aGVtaW5nLnByaXZhdGUtY2hlY2stZHVwbGljYXRlLXRoZW1lLXN0eWxlcygkdGhlbWUsICdtYXQtYXV0b2NvbXBsZXRlJykge1xuICAgICRjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgJGRlbnNpdHk6IHRoZW1pbmcuZ2V0LWRlbnNpdHktY29uZmlnKCR0aGVtZSk7XG4gICAgJHR5cG9ncmFwaHk6IHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCR0aGVtZSk7XG5cbiAgICBAaWYgJGNvbG9yICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgX2RlbnNpdHkoJGRlbnNpdHkpO1xuICAgIH1cbiAgICBAaWYgJHR5cG9ncmFwaHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5KCR0eXBvZ3JhcGh5KTtcbiAgICB9XG4gIH1cbn1cbiIsIkB1c2UgJ3Nhc3M6bWFwJztcbkB1c2UgJy4uL2NvcmUvdGhlbWluZy90aGVtaW5nJztcblxuQG1peGluIGNvbG9yKCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAkZm9yZWdyb3VuZDogbWFwLmdldCgkY29uZmlnLCBmb3JlZ3JvdW5kKTtcblxuICAubWF0LWRpdmlkZXIge1xuICAgIGJvcmRlci10b3AtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgZGl2aWRlcik7XG4gIH1cblxuICAubWF0LWRpdmlkZXItdmVydGljYWwge1xuICAgIGJvcmRlci1yaWdodC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBkaXZpZGVyKTtcbiAgfVxufVxuXG5AbWl4aW4gdHlwb2dyYXBoeSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gX2RlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIHRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiB0aGVtaW5nLnByaXZhdGUtbGVnYWN5LWdldC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgQGluY2x1ZGUgdGhlbWluZy5wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LWRpdmlkZXInKSB7XG4gICAgJGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJHRoZW1lKTtcbiAgICAkZGVuc2l0eTogdGhlbWluZy5nZXQtZGVuc2l0eS1jb25maWcoJHRoZW1lKTtcbiAgICAkdHlwb2dyYXBoeTogdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJHRoZW1lKTtcblxuICAgIEBpZiAkY29sb3IgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBjb2xvcigkY29sb3IpO1xuICAgIH1cbiAgICBAaWYgJGRlbnNpdHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBfZGVuc2l0eSgkZGVuc2l0eSk7XG4gICAgfVxuICAgIEBpZiAkdHlwb2dyYXBoeSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIHR5cG9ncmFwaHkoJHR5cG9ncmFwaHkpO1xuICAgIH1cbiAgfVxufVxuIiwiQG1peGluIHByaXZhdGUtZXhwYW5zaW9uLWZvY3VzIHtcbiAgLm1hdC1leHBhbnNpb24tcGFuZWwge1xuICAgICYgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLmNkay1rZXlib2FyZC1mb2N1c2VkLFxuICAgICYgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLmNkay1wcm9ncmFtLWZvY3VzZWQsXG4gICAgJjpub3QoLm1hdC1leHBhbmRlZCkgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyOmhvdmVyIHtcbiAgICAgICY6bm90KFthcmlhLWRpc2FibGVkPSd0cnVlJ10pIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCJAdXNlICdzYXNzOm1hcCc7XG5AdXNlICcuLi90aGVtaW5nL3RoZW1pbmcnO1xuXG4vLyBSZW5kZXJzIGEgZ3JhZGllbnQgZm9yIHNob3dpbmcgdGhlIGRhc2hlZCBsaW5lIHdoZW4gdGhlIGlucHV0IGlzIGRpc2FibGVkLlxuLy8gVW5saWtlIHVzaW5nIGEgYm9yZGVyLCBhIGdyYWRpZW50IGFsbG93cyB1cyB0byBhZGp1c3QgdGhlIHNwYWNpbmcgb2YgdGhlIGRvdHRlZCBsaW5lXG4vLyB0byBtYXRjaCB0aGUgTWF0ZXJpYWwgRGVzaWduIHNwZWMuXG5AbWl4aW4gcHJpdmF0ZS1jb250cm9sLWRpc2FibGVkLXVuZGVybGluZSgkY29sb3IpIHtcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCAkY29sb3IgMCUsICRjb2xvciAzMyUsIHRyYW5zcGFyZW50IDAlKTtcbiAgYmFja2dyb3VuZC1zaXplOiA0cHggMTAwJTtcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14O1xufVxuXG4vLyBGaWd1cmVzIG91dCB0aGUgY29sb3Igb2YgdGhlIHBsYWNlaG9sZGVyIGZvciBhIGZvcm0gY29udHJvbC5cbi8vIFVzZWQgcHJpbWFyaWx5IHRvIHByZXZlbnQgdGhlIHZhcmlvdXMgZm9ybSBjb250cm9scyBmcm9tXG4vLyBiZWNvbWluZyBvdXQgb2Ygc3luYyBzaW5jZSB0aGVzZSBjb2xvcnMgYXJlbid0IGluIGEgcGFsZXR0ZS5cbkBmdW5jdGlvbiBwcml2YXRlLWNvbnRyb2wtcGxhY2Vob2xkZXItY29sb3IoJGNvbmZpZykge1xuICAkZm9yZWdyb3VuZDogbWFwLmdldCgkY29uZmlnLCBmb3JlZ3JvdW5kKTtcbiAgJGlzLWRhcmstdGhlbWU6IG1hcC5nZXQoJGNvbmZpZywgaXMtZGFyayk7XG4gIEByZXR1cm4gdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBzZWNvbmRhcnktdGV4dCxcbiAgICBpZigkaXMtZGFyay10aGVtZSwgMC41LCAwLjQyKSk7XG59XG4iLCJAdXNlICdzYXNzOm1hcCc7XG5AdXNlICcuLi9jb3JlL3RoZW1pbmcvdGhlbWluZyc7XG5AdXNlICcuLi9jb3JlL3N0eWxlL2Zvcm0tY29tbW9uJztcblxuXG4vLyBUaGVtZSBzdHlsZXMgdGhhdCBvbmx5IGFwcGx5IHRvIHRoZSBzdGFuZGFyZCBhcHBlYXJhbmNlIG9mIHRoZSBmb3JtLWZpZWxkLlxuXG5AbWl4aW4gc3RhbmRhcmQtY29sb3IoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRmb3JlZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGZvcmVncm91bmQpO1xuICAkaXMtZGFyay10aGVtZTogbWFwLmdldCgkY29uZmlnLCBpcy1kYXJrKTtcbiAgJHVuZGVybGluZS1jb2xvcjpcbiAgICB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIGRpdmlkZXIsIGlmKCRpcy1kYXJrLXRoZW1lLCAwLjcsIDAuNDIpKTtcblxuICAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1zdGFuZGFyZCB7XG4gICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZSB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdW5kZXJsaW5lLWNvbG9yO1xuICAgIH1cblxuICAgICYubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZSB7XG4gICAgICBAaW5jbHVkZSBmb3JtLWNvbW1vbi5wcml2YXRlLWNvbnRyb2wtZGlzYWJsZWQtdW5kZXJsaW5lKCR1bmRlcmxpbmUtY29sb3IpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gc3RhbmRhcmQtdHlwb2dyYXBoeSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gcHJpdmF0ZS1mb3JtLWZpZWxkLXN0YW5kYXJkLWRlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIHN0YW5kYXJkLXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiB0aGVtaW5nLnByaXZhdGUtbGVnYWN5LWdldC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgQGluY2x1ZGUgdGhlbWluZy5wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LWZvcm0tZmllbGQtc3RhbmRhcmQnKSB7XG4gICAgJGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJHRoZW1lKTtcbiAgICAkZGVuc2l0eTogdGhlbWluZy5nZXQtZGVuc2l0eS1jb25maWcoJHRoZW1lKTtcbiAgICAkdHlwb2dyYXBoeTogdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJHRoZW1lKTtcblxuICAgIEBpZiAkY29sb3IgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBzdGFuZGFyZC1jb2xvcigkY29sb3IpO1xuICAgIH1cbiAgICBAaWYgJGRlbnNpdHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBwcml2YXRlLWZvcm0tZmllbGQtc3RhbmRhcmQtZGVuc2l0eSgkZGVuc2l0eSk7XG4gICAgfVxuICAgIEBpZiAkdHlwb2dyYXBoeSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIHN0YW5kYXJkLXR5cG9ncmFwaHkoJHR5cG9ncmFwaHkpO1xuICAgIH1cbiAgfVxufVxuIiwiQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnLi4vY29yZS90aGVtaW5nL3RoZW1pbmcnO1xuXG5AbWl4aW4gY29sb3IoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRwcmltYXJ5OiBtYXAuZ2V0KCRjb25maWcsIHByaW1hcnkpO1xuICAkYWNjZW50OiBtYXAuZ2V0KCRjb25maWcsIGFjY2VudCk7XG4gICR3YXJuOiBtYXAuZ2V0KCRjb25maWcsIHdhcm4pO1xuICAkYmFja2dyb3VuZDogbWFwLmdldCgkY29uZmlnLCBiYWNrZ3JvdW5kKTtcbiAgJGZvcmVncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgZm9yZWdyb3VuZCk7XG5cbiAgLm1hdC1pY29uIHtcbiAgICAmLm1hdC1wcmltYXJ5IHtcbiAgICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHByaW1hcnksIHRleHQpO1xuICAgIH1cblxuICAgICYubWF0LWFjY2VudCB7XG4gICAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRhY2NlbnQsIHRleHQpO1xuICAgIH1cblxuICAgICYubWF0LXdhcm4ge1xuICAgICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkd2FybiwgdGV4dCk7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiB0eXBvZ3JhcGh5KCRjb25maWctb3ItdGhlbWUpIHt9XG5cbkBtaXhpbiBfZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZykge1xuICAkdGhlbWU6IHRoZW1pbmcucHJpdmF0ZS1sZWdhY3ktZ2V0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICBAaW5jbHVkZSB0aGVtaW5nLnByaXZhdGUtY2hlY2stZHVwbGljYXRlLXRoZW1lLXN0eWxlcygkdGhlbWUsICdtYXQtaWNvbicpIHtcbiAgICAkY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkdGhlbWUpO1xuICAgICRkZW5zaXR5OiB0aGVtaW5nLmdldC1kZW5zaXR5LWNvbmZpZygkdGhlbWUpO1xuICAgICR0eXBvZ3JhcGh5OiB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkdGhlbWUpO1xuXG4gICAgQGlmICRjb2xvciAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIGNvbG9yKCRjb2xvcik7XG4gICAgfVxuICAgIEBpZiAkZGVuc2l0eSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIF9kZW5zaXR5KCRkZW5zaXR5KTtcbiAgICB9XG4gICAgQGlmICR0eXBvZ3JhcGh5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgdHlwb2dyYXBoeSgkdHlwb2dyYXBoeSk7XG4gICAgfVxuICB9XG59XG5cbiIsIi8vIHN0eWxlbGludC1kaXNhYmxlIG1hdGVyaWFsL25vLXByZWZpeGVzXG5AbWl4aW4gdXNlci1zZWxlY3QoJHZhbHVlKSB7XG4gIC13ZWJraXQtdXNlci1zZWxlY3Q6ICR2YWx1ZTtcbiAgLW1vei11c2VyLXNlbGVjdDogJHZhbHVlO1xuICAtbXMtdXNlci1zZWxlY3Q6ICR2YWx1ZTtcbiAgdXNlci1zZWxlY3Q6ICR2YWx1ZTtcbn1cblxuQG1peGluIGlucHV0LXBsYWNlaG9sZGVyIHtcbiAgJjo6cGxhY2Vob2xkZXIge1xuICAgIEBjb250ZW50O1xuICB9XG5cbiAgJjo6LW1vei1wbGFjZWhvbGRlciB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cblxuICAmOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHtcbiAgICBAY29udGVudDtcbiAgfVxuXG4gICY6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG5AbWl4aW4gY3Vyc29yLWdyYWIge1xuICBjdXJzb3I6IC13ZWJraXQtZ3JhYjtcbiAgY3Vyc29yOiBncmFiO1xufVxuXG5AbWl4aW4gY3Vyc29yLWdyYWJiaW5nIHtcbiAgY3Vyc29yOiAtd2Via2l0LWdyYWJiaW5nO1xuICBjdXJzb3I6IGdyYWJiaW5nO1xufVxuXG5AbWl4aW4gYmFja2ZhY2UtdmlzaWJpbGl0eSgkdmFsdWUpIHtcbiAgLXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5OiAkdmFsdWU7XG4gIGJhY2tmYWNlLXZpc2liaWxpdHk6ICR2YWx1ZTtcbn1cblxuQG1peGluIHBvc2l0aW9uLXN0aWNreSgkaW1wb3J0YW50OiBmYWxzZSkge1xuICBwb3NpdGlvbjogLXdlYmtpdC1zdGlja3kgI3tpZigkaW1wb3J0YW50LCAnIWltcG9ydGFudCcsICcnKX07XG4gIHBvc2l0aW9uOiBzdGlja3kgI3tpZigkaW1wb3J0YW50LCAnIWltcG9ydGFudCcsICcnKX07XG59XG4vLyBzdHlsZWxpbnQtZW5hYmxlXG4iLCJAdXNlICdzYXNzOm1hcCc7XG5AdXNlICdzYXNzOm1ldGEnO1xuQHVzZSAnc2Fzczpjb2xvcic7XG5AdXNlICcuLi9jb3JlL3RoZW1pbmcvdGhlbWluZyc7XG5cbi8vIEFwcHJveGltYXRlcyB0aGUgY29ycmVjdCBidWZmZXIgY29sb3IgYnkgdXNpbmcgYSBtaXggYmV0d2VlbiB0aGUgdGhlbWUgY29sb3Jcbi8vIGFuZCB0aGUgdGhlbWUncyBiYWNrZ3JvdW5kIGNvbG9yLlxuQGZ1bmN0aW9uIF9nZXQtYnVmZmVyLWNvbG9yKCR0aGVtZSwgJGJhY2tncm91bmQpIHtcbiAgJHRoZW1lLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHRoZW1lKTtcbiAgLy8gUmV0dXJuIGZhbGxiYWNrIGNvbG9yIGlmIHRoZSB0aGVtZSB1c2VzIHZhcmlhYmxlcyB0byBkZWZpbmUgY29sb3JzLlxuICBAaWYgKG1ldGEudHlwZS1vZigkdGhlbWUtY29sb3IpICE9ICdjb2xvcicgb3IgbWV0YS50eXBlLW9mKCRiYWNrZ3JvdW5kKSAhPSAnY29sb3InKSB7XG4gICAgQHJldHVybiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHRoZW1lLCBsaWdodGVyKTtcbiAgfVxuICBAcmV0dXJuIGNvbG9yLm1peCgkdGhlbWUtY29sb3IsICRiYWNrZ3JvdW5kLCAkd2VpZ2h0OiAyNSUpO1xufVxuXG5AbWl4aW4gY29sb3IoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRwcmltYXJ5OiBtYXAuZ2V0KCRjb25maWcsIHByaW1hcnkpO1xuICAkYWNjZW50OiBtYXAuZ2V0KCRjb25maWcsIGFjY2VudCk7XG4gICR3YXJuOiBtYXAuZ2V0KCRjb25maWcsIHdhcm4pO1xuICAkYmFja2dyb3VuZDogbWFwLmdldChtYXAuZ2V0KCRjb25maWcsIGJhY2tncm91bmQpLCBiYWNrZ3JvdW5kKTtcblxuICAubWF0LXByb2dyZXNzLWJhci1iYWNrZ3JvdW5kIHtcbiAgICBmaWxsOiBfZ2V0LWJ1ZmZlci1jb2xvcigkcHJpbWFyeSwgJGJhY2tncm91bmQpO1xuICB9XG5cbiAgLm1hdC1wcm9ncmVzcy1iYXItYnVmZmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBfZ2V0LWJ1ZmZlci1jb2xvcigkcHJpbWFyeSwgJGJhY2tncm91bmQpO1xuICB9XG5cbiAgLm1hdC1wcm9ncmVzcy1iYXItZmlsbDo6YWZ0ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkcHJpbWFyeSk7XG4gIH1cblxuICAubWF0LXByb2dyZXNzLWJhci5tYXQtYWNjZW50IHtcbiAgICAubWF0LXByb2dyZXNzLWJhci1iYWNrZ3JvdW5kIHtcbiAgICAgIGZpbGw6IF9nZXQtYnVmZmVyLWNvbG9yKCRhY2NlbnQsICRiYWNrZ3JvdW5kKTtcbiAgICB9XG5cbiAgICAubWF0LXByb2dyZXNzLWJhci1idWZmZXIge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogX2dldC1idWZmZXItY29sb3IoJGFjY2VudCwgJGJhY2tncm91bmQpO1xuICAgIH1cblxuICAgIC5tYXQtcHJvZ3Jlc3MtYmFyLWZpbGw6OmFmdGVyIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYWNjZW50KTtcbiAgICB9XG4gIH1cblxuICAubWF0LXByb2dyZXNzLWJhci5tYXQtd2FybiB7XG4gICAgLm1hdC1wcm9ncmVzcy1iYXItYmFja2dyb3VuZCB7XG4gICAgICBmaWxsOiBfZ2V0LWJ1ZmZlci1jb2xvcigkd2FybiwgJGJhY2tncm91bmQpO1xuICAgIH1cblxuICAgIC5tYXQtcHJvZ3Jlc3MtYmFyLWJ1ZmZlciB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBfZ2V0LWJ1ZmZlci1jb2xvcigkd2FybiwgJGJhY2tncm91bmQpO1xuICAgIH1cblxuICAgIC5tYXQtcHJvZ3Jlc3MtYmFyLWZpbGw6OmFmdGVyIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkd2Fybik7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiB0eXBvZ3JhcGh5KCRjb25maWctb3ItdGhlbWUpIHt9XG5cbkBtaXhpbiBfZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZykge1xuICAkdGhlbWU6IHRoZW1pbmcucHJpdmF0ZS1sZWdhY3ktZ2V0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICBAaW5jbHVkZSB0aGVtaW5nLnByaXZhdGUtY2hlY2stZHVwbGljYXRlLXRoZW1lLXN0eWxlcygkdGhlbWUsICdtYXQtcHJvZ3Jlc3MtYmFyJykge1xuICAgICRjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgJGRlbnNpdHk6IHRoZW1pbmcuZ2V0LWRlbnNpdHktY29uZmlnKCR0aGVtZSk7XG4gICAgJHR5cG9ncmFwaHk6IHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCR0aGVtZSk7XG5cbiAgICBAaWYgJGNvbG9yICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgX2RlbnNpdHkoJGRlbnNpdHkpO1xuICAgIH1cbiAgICBAaWYgJHR5cG9ncmFwaHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5KCR0eXBvZ3JhcGh5KTtcbiAgICB9XG4gIH1cbn1cblxuIiwiQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnLi4vY29yZS90aGVtaW5nL3RoZW1pbmcnO1xuXG5AbWl4aW4gY29sb3IoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRwcmltYXJ5OiBtYXAuZ2V0KCRjb25maWcsIHByaW1hcnkpO1xuICAkYWNjZW50OiBtYXAuZ2V0KCRjb25maWcsIGFjY2VudCk7XG4gICR3YXJuOiBtYXAuZ2V0KCRjb25maWcsIHdhcm4pO1xuXG4gIC5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lciwgLm1hdC1zcGlubmVyIHtcbiAgICBjaXJjbGUge1xuICAgICAgc3Ryb2tlOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHByaW1hcnkpO1xuICAgIH1cblxuICAgICYubWF0LWFjY2VudCBjaXJjbGUge1xuICAgICAgc3Ryb2tlOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGFjY2VudCk7XG4gICAgfVxuXG4gICAgJi5tYXQtd2FybiBjaXJjbGUge1xuICAgICAgc3Ryb2tlOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHdhcm4pO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gdHlwb2dyYXBoeSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gX2RlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIHRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiB0aGVtaW5nLnByaXZhdGUtbGVnYWN5LWdldC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgQGluY2x1ZGUgdGhlbWluZy5wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LXByb2dyZXNzLXNwaW5uZXInKSB7XG4gICAgJGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJHRoZW1lKTtcbiAgICAkZGVuc2l0eTogdGhlbWluZy5nZXQtZGVuc2l0eS1jb25maWcoJHRoZW1lKTtcbiAgICAkdHlwb2dyYXBoeTogdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJHRoZW1lKTtcblxuICAgIEBpZiAkY29sb3IgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBjb2xvcigkY29sb3IpO1xuICAgIH1cbiAgICBAaWYgJGRlbnNpdHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBfZGVuc2l0eSgkZGVuc2l0eSk7XG4gICAgfVxuICAgIEBpZiAkdHlwb2dyYXBoeSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIHR5cG9ncmFwaHkoJHR5cG9ncmFwaHkpO1xuICAgIH1cbiAgfVxufVxuIiwiQHVzZSAnc2Fzczpjb2xvcic7XG5AdXNlICdzYXNzOm1hcCc7XG5AdXNlICdzYXNzOm1ldGEnO1xuQHVzZSAnLi4vY29yZS9zdHlsZS9wcml2YXRlJztcbkB1c2UgJy4uL2NvcmUvdGhlbWluZy90aGVtaW5nJztcblxuQG1peGluIGNvbG9yKCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAkcHJpbWFyeTogbWFwLmdldCgkY29uZmlnLCBwcmltYXJ5KTtcbiAgJGFjY2VudDogbWFwLmdldCgkY29uZmlnLCBhY2NlbnQpO1xuICAkd2FybjogbWFwLmdldCgkY29uZmlnLCB3YXJuKTtcbiAgJGJhY2tncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgYmFja2dyb3VuZCk7XG4gICRmb3JlZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGZvcmVncm91bmQpO1xuXG4gICRkcmF3ZXItYmFja2dyb3VuZC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLCBkaWFsb2cpO1xuICAkZHJhd2VyLWNvbnRhaW5lci1iYWNrZ3JvdW5kLWNvbG9yOiAgdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLCBiYWNrZ3JvdW5kKTtcbiAgJGRyYXdlci1wdXNoLWJhY2tncm91bmQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYmFja2dyb3VuZCwgZGlhbG9nKTtcbiAgJGRyYXdlci1zaWRlLWJvcmRlcjogc29saWQgMXB4IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgZGl2aWRlcik7XG5cbiAgLm1hdC1kcmF3ZXItY29udGFpbmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZHJhd2VyLWNvbnRhaW5lci1iYWNrZ3JvdW5kLWNvbG9yO1xuICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIHRleHQpO1xuICB9XG5cbiAgLm1hdC1kcmF3ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRkcmF3ZXItYmFja2dyb3VuZC1jb2xvcjtcbiAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCB0ZXh0KTtcblxuICAgICYubWF0LWRyYXdlci1wdXNoIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRkcmF3ZXItcHVzaC1iYWNrZ3JvdW5kLWNvbG9yO1xuICAgIH1cblxuICAgICY6bm90KC5tYXQtZHJhd2VyLXNpZGUpIHtcbiAgICAgIC8vIFRoZSBlbGV2YXRpb24gb2Ygei0xNiBpcyBub3RlZCBpbiB0aGUgZGVzaWduIHNwZWNpZmljYXRpb25zLlxuICAgICAgLy8gU2VlIGh0dHBzOi8vbWF0ZXJpYWwuaW8vZGVzaWduL2NvbXBvbmVudHMvbmF2aWdhdGlvbi1kcmF3ZXIuaHRtbFxuICAgICAgQGluY2x1ZGUgcHJpdmF0ZS5wcml2YXRlLXRoZW1lLWVsZXZhdGlvbigxNiwgJGNvbmZpZyk7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1kcmF3ZXItc2lkZSB7XG4gICAgYm9yZGVyLXJpZ2h0OiAkZHJhd2VyLXNpZGUtYm9yZGVyO1xuXG4gICAgJi5tYXQtZHJhd2VyLWVuZCB7XG4gICAgICBib3JkZXItbGVmdDogJGRyYXdlci1zaWRlLWJvcmRlcjtcbiAgICAgIGJvcmRlci1yaWdodDogbm9uZTtcbiAgICB9XG4gIH1cblxuICBbZGlyPSdydGwnXSAubWF0LWRyYXdlci1zaWRlIHtcbiAgICBib3JkZXItbGVmdDogJGRyYXdlci1zaWRlLWJvcmRlcjtcbiAgICBib3JkZXItcmlnaHQ6IG5vbmU7XG5cbiAgICAmLm1hdC1kcmF3ZXItZW5kIHtcbiAgICAgIGJvcmRlci1sZWZ0OiBub25lO1xuICAgICAgYm9yZGVyLXJpZ2h0OiAkZHJhd2VyLXNpZGUtYm9yZGVyO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtZHJhd2VyLWJhY2tkcm9wLm1hdC1kcmF3ZXItc2hvd24ge1xuICAgICRvcGFjaXR5OiAwLjY7XG4gICAgJGJhY2tkcm9wLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGJhY2tncm91bmQsIGNhcmQsICRvcGFjaXR5KTtcblxuICAgIEBpZiAobWV0YS50eXBlLW9mKCRiYWNrZHJvcC1jb2xvcikgPT0gY29sb3IpIHtcbiAgICAgIC8vIFdlIHVzZSBpbnZlcnQoKSBoZXJlIHRvIGhhdmUgdGhlIGRhcmtlbiB0aGUgYmFja2dyb3VuZCBjb2xvciBleHBlY3RlZCB0byBiZSB1c2VkLiBJZiB0aGVcbiAgICAgIC8vIGJhY2tncm91bmQgaXMgbGlnaHQsIHdlIHVzZSBhIGRhcmsgYmFja2Ryb3AuIElmIHRoZSBiYWNrZ3JvdW5kIGlzIGRhcmssXG4gICAgICAvLyB3ZSB1c2UgYSBsaWdodCBiYWNrZHJvcC5cbiAgICAgIGJhY2tncm91bmQtY29sb3I6IGNvbG9yLmludmVydCgkYmFja2Ryb3AtY29sb3IpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAvLyBJZiB3ZSBjb3VsZG4ndCByZXNvbHZlIHRoZSBiYWNrZHJvcCBjb2xvciB0byBhIGNvbG9yIHZhbHVlLCBmYWxsIGJhY2sgdG8gdXNpbmdcbiAgICAgIC8vIGBvcGFjaXR5YCB0byBtYWtlIGl0IG9wYXF1ZSBzaW5jZSBpdHMgZW5kIHZhbHVlIGNvdWxkIGJlIGEgc29saWQgY29sb3IuXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFja2Ryb3AtY29sb3I7XG4gICAgICBvcGFjaXR5OiAkb3BhY2l0eTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHR5cG9ncmFwaHkoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIF9kZW5zaXR5KCRjb25maWctb3ItdGhlbWUpIHt9XG5cbkBtaXhpbiB0aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKSB7XG4gICR0aGVtZTogdGhlbWluZy5wcml2YXRlLWxlZ2FjeS1nZXQtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZyk7XG4gIEBpbmNsdWRlIHRoZW1pbmcucHJpdmF0ZS1jaGVjay1kdXBsaWNhdGUtdGhlbWUtc3R5bGVzKCR0aGVtZSwgJ21hdC1zaWRlbmF2Jykge1xuICAgICRjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgJGRlbnNpdHk6IHRoZW1pbmcuZ2V0LWRlbnNpdHktY29uZmlnKCR0aGVtZSk7XG4gICAgJHR5cG9ncmFwaHk6IHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCR0aGVtZSk7XG5cbiAgICBAaWYgJGNvbG9yICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgX2RlbnNpdHkoJGRlbnNpdHkpO1xuICAgIH1cbiAgICBAaWYgJHR5cG9ncmFwaHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5KCR0eXBvZ3JhcGh5KTtcbiAgICB9XG4gIH1cbn1cbiIsIkB1c2UgJ3Nhc3M6Y29sb3InO1xuQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnc2FzczptZXRhJztcbkB1c2UgJy4uL2NvcmUvdGhlbWluZy90aGVtaW5nJztcblxuQG1peGluIGNvbG9yKCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAkYmFja2dyb3VuZDogbWFwLmdldCgkY29uZmlnLCBiYWNrZ3JvdW5kKTtcbiAgJGZvcmVncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgZm9yZWdyb3VuZCk7XG5cbiAgLm1hdC1zb3J0LWhlYWRlci1hcnJvdyB7XG4gICAgJHRhYmxlLWJhY2tncm91bmQ6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYmFja2dyb3VuZCwgJ2NhcmQnKTtcbiAgICAkdGV4dC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBzZWNvbmRhcnktdGV4dCk7XG5cbiAgICAvLyBCZWNhdXNlIHRoZSBhcnJvdyBpcyBtYWRlIHVwIG9mIG11bHRpcGxlIGVsZW1lbnRzIHRoYXQgYXJlIHN0YWNrZWQgb24gdG9wIG9mIGVhY2ggb3RoZXIsXG4gICAgLy8gd2UgY2FuJ3QgdXNlIHRoZSBzZW1pLXRyYW5zcGFyZW50IGNvbG9yIGZyb20gdGhlIHRoZW1lIGRpcmVjdGx5LiBJZiB0aGUgdmFsdWUgaXMgYSBjb2xvclxuICAgIC8vICp0eXBlKiwgd2UgY29udmVydCBpdCBpbnRvIGEgc29saWQgY29sb3IgYnkgdGFraW5nIHRoZSBvcGFjaXR5IGZyb20gdGhlIHJnYmEgdmFsdWUgYW5kXG4gICAgLy8gdXNpbmcgdGhlIHZhbHVlIHRvIGRldGVybWluZSB0aGUgcGVyY2VudGFnZSBvZiB0aGUgYmFja2dyb3VuZCB0byBwdXQgaW50byBmb3JlZ3JvdW5kXG4gICAgLy8gd2hlbiBtaXhpbmcgdGhlIGNvbG9ycyB0b2dldGhlci4gT3RoZXJ3aXNlLCBpZiBpdCByZXNvbHZlcyB0byBzb21ldGhpbmcgZGlmZmVyZW50XG4gICAgLy8gKGUuZy4gaXQgcmVzb2x2ZXMgdG8gYSBDU1MgdmFyaWFibGUpLCB3ZSB1c2UgdGhlIGNvbG9yIGRpcmVjdGx5LlxuICAgIEBpZiAobWV0YS50eXBlLW9mKCR0YWJsZS1iYWNrZ3JvdW5kKSA9PSBjb2xvciBhbmQgbWV0YS50eXBlLW9mKCR0ZXh0LWNvbG9yKSA9PSBjb2xvcikge1xuICAgICAgJHRleHQtb3BhY2l0eTogb3BhY2l0eSgkdGV4dC1jb2xvcik7XG4gICAgICBjb2xvcjogY29sb3IubWl4KCR0YWJsZS1iYWNrZ3JvdW5kLCByZ2JhKCR0ZXh0LWNvbG9yLCAxKSwgKDEgLSAkdGV4dC1vcGFjaXR5KSAqIDEwMCUpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBjb2xvcjogJHRleHQtY29sb3I7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiB0eXBvZ3JhcGh5KCRjb25maWctb3ItdGhlbWUpIHt9XG5cbkBtaXhpbiBfZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZykge1xuICAkdGhlbWU6IHRoZW1pbmcucHJpdmF0ZS1sZWdhY3ktZ2V0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICBAaW5jbHVkZSB0aGVtaW5nLnByaXZhdGUtY2hlY2stZHVwbGljYXRlLXRoZW1lLXN0eWxlcygkdGhlbWUsICdtYXQtc29ydCcpIHtcbiAgICAkY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkdGhlbWUpO1xuICAgICRkZW5zaXR5OiB0aGVtaW5nLmdldC1kZW5zaXR5LWNvbmZpZygkdGhlbWUpO1xuICAgICR0eXBvZ3JhcGh5OiB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkdGhlbWUpO1xuXG4gICAgQGlmICRjb2xvciAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIGNvbG9yKCRjb2xvcik7XG4gICAgfVxuICAgIEBpZiAkZGVuc2l0eSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIF9kZW5zaXR5KCRkZW5zaXR5KTtcbiAgICB9XG4gICAgQGlmICR0eXBvZ3JhcGh5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgdHlwb2dyYXBoeSgkdHlwb2dyYXBoeSk7XG4gICAgfVxuICB9XG59XG4iLCIvKiBCcmVha3BvaW50cyBmb3IgTWVkaWEgUXVlcmllcyAqL1xuXG5AbWl4aW4gZm9yLXBob25lLW9ubHkge1xuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGggOiA1NzZweCkgeyBAY29udGVudDsgfVxufVxuQG1peGluIGZvci10YWJsZXQge1xuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDc2OHB4KSB7IEBjb250ZW50OyB9XG59XG5AbWl4aW4gZm9yLWRlc2t0b3Age1xuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDk5MnB4KSB7IEBjb250ZW50OyB9XG59XG5AbWl4aW4gZm9yLWRlc2t0b3AteGwge1xuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDEyMDBweCkgeyBAY29udGVudDsgfVxufVxuIl19 */\";","export default \"@import url(\\\"//fonts.googleapis.com/icon?family=Material+Icons\\\");\\n/* You can add global styles to this file, and also import other style files */\\n.mat-badge-content {\\n font-weight: 600;\\n font-size: 12px;\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n}\\n.mat-badge-small .mat-badge-content {\\n font-size: 9px;\\n}\\n.mat-badge-large .mat-badge-content {\\n font-size: 24px;\\n}\\n.mat-h1, .mat-headline, .mat-typography h1 {\\n font: 400 24px/32px Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n letter-spacing: normal;\\n margin: 0 0 16px;\\n}\\n.mat-h2, .mat-title, .mat-typography h2 {\\n font: 500 20px/32px Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n letter-spacing: normal;\\n margin: 0 0 16px;\\n}\\n.mat-h3, .mat-subheading-2, .mat-typography h3 {\\n font: 400 16px/28px Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n letter-spacing: normal;\\n margin: 0 0 16px;\\n}\\n.mat-h4, .mat-subheading-1, .mat-typography h4 {\\n font: 400 15px/24px Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n letter-spacing: normal;\\n margin: 0 0 16px;\\n}\\n.mat-h5, .mat-typography h5 {\\n font: 400 calc(14px * 0.83)/20px Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n margin: 0 0 12px;\\n}\\n.mat-h6, .mat-typography h6 {\\n font: 400 calc(14px * 0.67)/20px Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n margin: 0 0 12px;\\n}\\n.mat-body-strong, .mat-body-2 {\\n font: 500 14px/24px Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n letter-spacing: normal;\\n}\\n.mat-body, .mat-body-1, .mat-typography {\\n font: 400 14px/20px Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n letter-spacing: normal;\\n}\\n.mat-body p, .mat-body-1 p, .mat-typography p {\\n margin: 0 0 12px;\\n}\\n.mat-small, .mat-caption {\\n font: 400 12px/20px Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n letter-spacing: normal;\\n}\\n.mat-display-4, .mat-typography .mat-display-4 {\\n font: 300 112px/112px Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n letter-spacing: -0.05em;\\n margin: 0 0 56px;\\n}\\n.mat-display-3, .mat-typography .mat-display-3 {\\n font: 400 56px/56px Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n letter-spacing: -0.02em;\\n margin: 0 0 64px;\\n}\\n.mat-display-2, .mat-typography .mat-display-2 {\\n font: 400 45px/48px Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n letter-spacing: -0.005em;\\n margin: 0 0 64px;\\n}\\n.mat-display-1, .mat-typography .mat-display-1 {\\n font: 400 34px/40px Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n letter-spacing: normal;\\n margin: 0 0 64px;\\n}\\n.mat-bottom-sheet-container {\\n font: 400 14px/20px Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n letter-spacing: normal;\\n}\\n.mat-button, .mat-raised-button, .mat-icon-button, .mat-stroked-button,\\n.mat-flat-button, .mat-fab, .mat-mini-fab {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n font-size: 14px;\\n font-weight: 500;\\n}\\n.mat-button-toggle {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n}\\n.mat-card {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n}\\n.mat-card-title {\\n font-size: 24px;\\n font-weight: 500;\\n}\\n.mat-card-header .mat-card-title {\\n font-size: 20px;\\n}\\n.mat-card-subtitle,\\n.mat-card-content {\\n font-size: 14px;\\n}\\n.mat-checkbox {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n}\\n.mat-checkbox-layout .mat-checkbox-label {\\n line-height: 24px;\\n}\\n.mat-chip {\\n font-size: 14px;\\n font-weight: 500;\\n}\\n.mat-chip .mat-chip-trailing-icon.mat-icon,\\n.mat-chip .mat-chip-remove.mat-icon {\\n font-size: 18px;\\n}\\n.mat-table {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n}\\n.mat-header-cell {\\n font-size: 12px;\\n font-weight: 500;\\n}\\n.mat-cell, .mat-footer-cell {\\n font-size: 14px;\\n}\\n.mat-calendar {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n}\\n.mat-calendar-body {\\n font-size: 13px;\\n}\\n.mat-calendar-body-label,\\n.mat-calendar-period-button {\\n font-size: 14px;\\n font-weight: 500;\\n}\\n.mat-calendar-table-header th {\\n font-size: 11px;\\n font-weight: 400;\\n}\\n.mat-dialog-title {\\n font: 500 20px/32px Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n letter-spacing: normal;\\n}\\n.mat-expansion-panel-header {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n font-size: 15px;\\n font-weight: 400;\\n}\\n.mat-expansion-panel-content {\\n font: 400 14px/20px Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n letter-spacing: normal;\\n}\\n.mat-form-field {\\n font-size: inherit;\\n font-weight: 400;\\n line-height: 1.125;\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n letter-spacing: normal;\\n}\\n.mat-form-field-wrapper {\\n padding-bottom: 1.34375em;\\n}\\n.mat-form-field-prefix .mat-icon,\\n.mat-form-field-suffix .mat-icon {\\n font-size: 150%;\\n line-height: 1.125;\\n}\\n.mat-form-field-prefix .mat-icon-button,\\n.mat-form-field-suffix .mat-icon-button {\\n height: 1.5em;\\n width: 1.5em;\\n}\\n.mat-form-field-prefix .mat-icon-button .mat-icon,\\n.mat-form-field-suffix .mat-icon-button .mat-icon {\\n height: 1.125em;\\n line-height: 1.125;\\n}\\n.mat-form-field-infix {\\n padding: 0.5em 0;\\n border-top: 0.84375em solid transparent;\\n}\\n.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,\\n.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.34375em) scale(0.75);\\n width: 133.3333333333%;\\n}\\n.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.34374em) scale(0.75);\\n width: 133.3333433333%;\\n}\\n.mat-form-field-label-wrapper {\\n top: -0.84375em;\\n padding-top: 0.84375em;\\n}\\n.mat-form-field-label {\\n top: 1.34375em;\\n}\\n.mat-form-field-underline {\\n bottom: 1.34375em;\\n}\\n.mat-form-field-subscript-wrapper {\\n font-size: 75%;\\n margin-top: 0.6666666667em;\\n top: calc(100% - 1.7916666667em);\\n}\\n.mat-form-field-appearance-legacy .mat-form-field-wrapper {\\n padding-bottom: 1.25em;\\n}\\n.mat-form-field-appearance-legacy .mat-form-field-infix {\\n padding: 0.4375em 0;\\n}\\n.mat-form-field-appearance-legacy.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,\\n.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.28125em) scale(0.75) perspective(100px) translateZ(0.001px);\\n -ms-transform: translateY(-1.28125em) scale(0.75);\\n width: 133.3333333333%;\\n}\\n.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-form-field-autofill-control:-webkit-autofill + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.28125em) scale(0.75) perspective(100px) translateZ(0.00101px);\\n -ms-transform: translateY(-1.28124em) scale(0.75);\\n width: 133.3333433333%;\\n}\\n.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.28125em) scale(0.75) perspective(100px) translateZ(0.00102px);\\n -ms-transform: translateY(-1.28123em) scale(0.75);\\n width: 133.3333533333%;\\n}\\n.mat-form-field-appearance-legacy .mat-form-field-label {\\n top: 1.28125em;\\n}\\n.mat-form-field-appearance-legacy .mat-form-field-underline {\\n bottom: 1.25em;\\n}\\n.mat-form-field-appearance-legacy .mat-form-field-subscript-wrapper {\\n margin-top: 0.5416666667em;\\n top: calc(100% - 1.6666666667em);\\n}\\n@media print {\\n .mat-form-field-appearance-legacy.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,\\n.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.28122em) scale(0.75);\\n }\\n .mat-form-field-appearance-legacy.mat-form-field-can-float .mat-form-field-autofill-control:-webkit-autofill + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.28121em) scale(0.75);\\n }\\n .mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.2812em) scale(0.75);\\n }\\n}\\n.mat-form-field-appearance-fill .mat-form-field-infix {\\n padding: 0.25em 0 0.75em 0;\\n}\\n.mat-form-field-appearance-fill .mat-form-field-label {\\n top: 1.09375em;\\n margin-top: -0.5em;\\n}\\n.mat-form-field-appearance-fill.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,\\n.mat-form-field-appearance-fill.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-0.59375em) scale(0.75);\\n width: 133.3333333333%;\\n}\\n.mat-form-field-appearance-fill.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-0.59374em) scale(0.75);\\n width: 133.3333433333%;\\n}\\n.mat-form-field-appearance-outline .mat-form-field-infix {\\n padding: 1em 0 1em 0;\\n}\\n.mat-form-field-appearance-outline .mat-form-field-label {\\n top: 1.84375em;\\n margin-top: -0.25em;\\n}\\n.mat-form-field-appearance-outline.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,\\n.mat-form-field-appearance-outline.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.59375em) scale(0.75);\\n width: 133.3333333333%;\\n}\\n.mat-form-field-appearance-outline.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.59374em) scale(0.75);\\n width: 133.3333433333%;\\n}\\n.mat-grid-tile-header,\\n.mat-grid-tile-footer {\\n font-size: 14px;\\n}\\n.mat-grid-tile-header .mat-line,\\n.mat-grid-tile-footer .mat-line {\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n display: block;\\n box-sizing: border-box;\\n}\\n.mat-grid-tile-header .mat-line:nth-child(n+2),\\n.mat-grid-tile-footer .mat-line:nth-child(n+2) {\\n font-size: 12px;\\n}\\ninput.mat-input-element {\\n margin-top: -0.0625em;\\n}\\n.mat-menu-item {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n font-size: 14px;\\n font-weight: 400;\\n}\\n.mat-paginator,\\n.mat-paginator-page-size .mat-select-trigger {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n font-size: 12px;\\n}\\n.mat-radio-button {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n}\\n.mat-select {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n}\\n.mat-select-trigger {\\n height: 1.125em;\\n}\\n.mat-slide-toggle-content {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n}\\n.mat-slider-thumb-label-text {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n font-size: 12px;\\n font-weight: 500;\\n}\\n.mat-stepper-vertical, .mat-stepper-horizontal {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n}\\n.mat-step-label {\\n font-size: 14px;\\n font-weight: 400;\\n}\\n.mat-step-sub-label-error {\\n font-weight: normal;\\n}\\n.mat-step-label-error {\\n font-size: 14px;\\n}\\n.mat-step-label-selected {\\n font-size: 14px;\\n font-weight: 500;\\n}\\n.mat-tab-group {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n}\\n.mat-tab-label, .mat-tab-link {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n font-size: 14px;\\n font-weight: 500;\\n}\\n.mat-toolbar,\\n.mat-toolbar h1,\\n.mat-toolbar h2,\\n.mat-toolbar h3,\\n.mat-toolbar h4,\\n.mat-toolbar h5,\\n.mat-toolbar h6 {\\n font: 500 20px/32px Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n letter-spacing: normal;\\n margin: 0;\\n}\\n.mat-tooltip {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n font-size: 10px;\\n padding-top: 6px;\\n padding-bottom: 6px;\\n}\\n.mat-tooltip-handset {\\n font-size: 14px;\\n padding-top: 8px;\\n padding-bottom: 8px;\\n}\\n.mat-list-item {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n}\\n.mat-list-option {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n}\\n.mat-list-base .mat-list-item {\\n font-size: 16px;\\n}\\n.mat-list-base .mat-list-item .mat-line {\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n display: block;\\n box-sizing: border-box;\\n}\\n.mat-list-base .mat-list-item .mat-line:nth-child(n+2) {\\n font-size: 14px;\\n}\\n.mat-list-base .mat-list-option {\\n font-size: 16px;\\n}\\n.mat-list-base .mat-list-option .mat-line {\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n display: block;\\n box-sizing: border-box;\\n}\\n.mat-list-base .mat-list-option .mat-line:nth-child(n+2) {\\n font-size: 14px;\\n}\\n.mat-list-base .mat-subheader {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n font-size: 14px;\\n font-weight: 500;\\n}\\n.mat-list-base[dense] .mat-list-item {\\n font-size: 12px;\\n}\\n.mat-list-base[dense] .mat-list-item .mat-line {\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n display: block;\\n box-sizing: border-box;\\n}\\n.mat-list-base[dense] .mat-list-item .mat-line:nth-child(n+2) {\\n font-size: 12px;\\n}\\n.mat-list-base[dense] .mat-list-option {\\n font-size: 12px;\\n}\\n.mat-list-base[dense] .mat-list-option .mat-line {\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n display: block;\\n box-sizing: border-box;\\n}\\n.mat-list-base[dense] .mat-list-option .mat-line:nth-child(n+2) {\\n font-size: 12px;\\n}\\n.mat-list-base[dense] .mat-subheader {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n font-size: 12px;\\n font-weight: 500;\\n}\\n.mat-option {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n font-size: 16px;\\n}\\n.mat-optgroup-label {\\n font: 500 14px/24px Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n letter-spacing: normal;\\n}\\n.mat-simple-snackbar {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n font-size: 14px;\\n}\\n.mat-simple-snackbar-action {\\n line-height: 1;\\n font-family: inherit;\\n font-size: inherit;\\n font-weight: 500;\\n}\\n.mat-tree {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n}\\n.mat-tree-node,\\n.mat-nested-tree-node {\\n font-weight: 400;\\n font-size: 14px;\\n}\\n.mat-ripple {\\n overflow: hidden;\\n position: relative;\\n}\\n.mat-ripple:not(:empty) {\\n transform: translateZ(0);\\n}\\n.mat-ripple.mat-ripple-unbounded {\\n overflow: visible;\\n}\\n.mat-ripple-element {\\n position: absolute;\\n border-radius: 50%;\\n pointer-events: none;\\n transition: opacity, transform 0ms cubic-bezier(0, 0, 0.2, 1);\\n transform: scale(0);\\n}\\n.cdk-high-contrast-active .mat-ripple-element {\\n display: none;\\n}\\n.cdk-visually-hidden {\\n border: 0;\\n clip: rect(0 0 0 0);\\n height: 1px;\\n margin: -1px;\\n overflow: hidden;\\n padding: 0;\\n position: absolute;\\n width: 1px;\\n white-space: nowrap;\\n outline: 0;\\n -webkit-appearance: none;\\n -moz-appearance: none;\\n}\\n.cdk-overlay-container, .cdk-global-overlay-wrapper {\\n pointer-events: none;\\n top: 0;\\n left: 0;\\n height: 100%;\\n width: 100%;\\n}\\n.cdk-overlay-container {\\n position: fixed;\\n z-index: 1000;\\n}\\n.cdk-overlay-container:empty {\\n display: none;\\n}\\n.cdk-global-overlay-wrapper {\\n display: flex;\\n position: absolute;\\n z-index: 1000;\\n}\\n.cdk-overlay-pane {\\n position: absolute;\\n pointer-events: auto;\\n box-sizing: border-box;\\n z-index: 1000;\\n display: flex;\\n max-width: 100%;\\n max-height: 100%;\\n}\\n.cdk-overlay-backdrop {\\n position: absolute;\\n top: 0;\\n bottom: 0;\\n left: 0;\\n right: 0;\\n z-index: 1000;\\n pointer-events: auto;\\n -webkit-tap-highlight-color: transparent;\\n transition: opacity 400ms cubic-bezier(0.25, 0.8, 0.25, 1);\\n opacity: 0;\\n}\\n.cdk-overlay-backdrop.cdk-overlay-backdrop-showing {\\n opacity: 1;\\n}\\n.cdk-high-contrast-active .cdk-overlay-backdrop.cdk-overlay-backdrop-showing {\\n opacity: 0.6;\\n}\\n.cdk-overlay-dark-backdrop {\\n background: rgba(0, 0, 0, 0.32);\\n}\\n.cdk-overlay-transparent-backdrop, .cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing {\\n opacity: 0;\\n}\\n.cdk-overlay-connected-position-bounding-box {\\n position: absolute;\\n z-index: 1000;\\n display: flex;\\n flex-direction: column;\\n min-width: 1px;\\n min-height: 1px;\\n}\\n.cdk-global-scrollblock {\\n position: fixed;\\n width: 100%;\\n overflow-y: scroll;\\n}\\ntextarea.cdk-textarea-autosize {\\n resize: none;\\n}\\ntextarea.cdk-textarea-autosize-measuring {\\n padding: 2px 0 !important;\\n box-sizing: content-box !important;\\n height: auto !important;\\n overflow: hidden !important;\\n}\\ntextarea.cdk-textarea-autosize-measuring-firefox {\\n padding: 2px 0 !important;\\n box-sizing: content-box !important;\\n height: 0 !important;\\n}\\n@keyframes cdk-text-field-autofill-start {\\n /*!*/\\n}\\n@keyframes cdk-text-field-autofill-end {\\n /*!*/\\n}\\n.cdk-text-field-autofill-monitored:-webkit-autofill {\\n animation: cdk-text-field-autofill-start 0s 1ms;\\n}\\n.cdk-text-field-autofill-monitored:not(:-webkit-autofill) {\\n animation: cdk-text-field-autofill-end 0s 1ms;\\n}\\n.mat-focus-indicator {\\n position: relative;\\n}\\n.mat-mdc-focus-indicator {\\n position: relative;\\n}\\n.mat-badge-content {\\n font-weight: 600;\\n font-size: 12px;\\n font-family: OpenSans, sans-serif;\\n}\\n.mat-badge-small .mat-badge-content {\\n font-size: 9px;\\n}\\n.mat-badge-large .mat-badge-content {\\n font-size: 24px;\\n}\\n.mat-h1, .mat-headline, .mat-typography h1 {\\n font: 400 24px/32px OpenSans, sans-serif;\\n letter-spacing: normal;\\n margin: 0 0 16px;\\n}\\n.mat-h2, .mat-title, .mat-typography h2 {\\n font: 500 20px/32px OpenSans, sans-serif;\\n letter-spacing: normal;\\n margin: 0 0 16px;\\n}\\n.mat-h3, .mat-subheading-2, .mat-typography h3 {\\n font: 400 16px/28px OpenSans, sans-serif;\\n letter-spacing: normal;\\n margin: 0 0 16px;\\n}\\n.mat-h4, .mat-subheading-1, .mat-typography h4 {\\n font: 400 15px/24px OpenSans, sans-serif;\\n letter-spacing: normal;\\n margin: 0 0 16px;\\n}\\n.mat-h5, .mat-typography h5 {\\n font: normal calc(16px * 0.83)/24px OpenSans, sans-serif;\\n margin: 0 0 12px;\\n}\\n.mat-h6, .mat-typography h6 {\\n font: normal calc(16px * 0.67)/24px OpenSans, sans-serif;\\n margin: 0 0 12px;\\n}\\n.mat-body-strong, .mat-body-2 {\\n font: 500 14px/24px OpenSans, sans-serif;\\n letter-spacing: normal;\\n}\\n.mat-body, .mat-body-1, .mat-typography {\\n font: normal 16px/24px OpenSans, sans-serif;\\n letter-spacing: normal;\\n}\\n.mat-body p, .mat-body-1 p, .mat-typography p {\\n margin: 0 0 12px;\\n}\\n.mat-small, .mat-caption {\\n font: 400 12px/20px OpenSans, sans-serif;\\n letter-spacing: normal;\\n}\\n.mat-display-4, .mat-typography .mat-display-4 {\\n font: 300 112px/112px OpenSans, sans-serif;\\n letter-spacing: -0.05em;\\n margin: 0 0 56px;\\n}\\n.mat-display-3, .mat-typography .mat-display-3 {\\n font: 400 56px/56px OpenSans, sans-serif;\\n letter-spacing: -0.02em;\\n margin: 0 0 64px;\\n}\\n.mat-display-2, .mat-typography .mat-display-2 {\\n font: 400 45px/48px OpenSans, sans-serif;\\n letter-spacing: -0.005em;\\n margin: 0 0 64px;\\n}\\n.mat-display-1, .mat-typography .mat-display-1 {\\n font: 400 34px/40px OpenSans, sans-serif;\\n letter-spacing: normal;\\n margin: 0 0 64px;\\n}\\n.mat-bottom-sheet-container {\\n font: normal 16px/24px OpenSans, sans-serif;\\n letter-spacing: normal;\\n}\\n.mat-button, .mat-raised-button, .mat-icon-button, .mat-stroked-button,\\n.mat-flat-button, .mat-fab, .mat-mini-fab {\\n font-family: OpenSans, sans-serif;\\n font-size: 14px;\\n font-weight: 500;\\n}\\n.mat-button-toggle {\\n font-family: OpenSans, sans-serif;\\n}\\n.mat-card {\\n font-family: OpenSans, sans-serif;\\n}\\n.mat-card-title {\\n font-size: 24px;\\n font-weight: 500;\\n}\\n.mat-card-header .mat-card-title {\\n font-size: 20px;\\n}\\n.mat-card-subtitle,\\n.mat-card-content {\\n font-size: 16px;\\n}\\n.mat-checkbox {\\n font-family: OpenSans, sans-serif;\\n}\\n.mat-checkbox-layout .mat-checkbox-label {\\n line-height: 24px;\\n}\\n.mat-chip {\\n font-size: 14px;\\n font-weight: 500;\\n}\\n.mat-chip .mat-chip-trailing-icon.mat-icon,\\n.mat-chip .mat-chip-remove.mat-icon {\\n font-size: 18px;\\n}\\n.mat-table {\\n font-family: OpenSans, sans-serif;\\n}\\n.mat-header-cell {\\n font-size: 12px;\\n font-weight: 500;\\n}\\n.mat-cell, .mat-footer-cell {\\n font-size: 16px;\\n}\\n.mat-calendar {\\n font-family: OpenSans, sans-serif;\\n}\\n.mat-calendar-body {\\n font-size: 13px;\\n}\\n.mat-calendar-body-label,\\n.mat-calendar-period-button {\\n font-size: 14px;\\n font-weight: 500;\\n}\\n.mat-calendar-table-header th {\\n font-size: 11px;\\n font-weight: normal;\\n}\\n.mat-dialog-title {\\n font: 500 20px/32px OpenSans, sans-serif;\\n letter-spacing: normal;\\n}\\n.mat-expansion-panel-header {\\n font-family: OpenSans, sans-serif;\\n font-size: 15px;\\n font-weight: 400;\\n}\\n.mat-expansion-panel-content {\\n font: normal 16px/24px OpenSans, sans-serif;\\n letter-spacing: normal;\\n}\\n.mat-form-field {\\n font-size: inherit;\\n font-weight: 400;\\n line-height: 1.125;\\n font-family: OpenSans, sans-serif;\\n letter-spacing: normal;\\n}\\n.mat-form-field-wrapper {\\n padding-bottom: 1.34375em;\\n}\\n.mat-form-field-prefix .mat-icon,\\n.mat-form-field-suffix .mat-icon {\\n font-size: 150%;\\n line-height: 1.125;\\n}\\n.mat-form-field-prefix .mat-icon-button,\\n.mat-form-field-suffix .mat-icon-button {\\n height: 1.5em;\\n width: 1.5em;\\n}\\n.mat-form-field-prefix .mat-icon-button .mat-icon,\\n.mat-form-field-suffix .mat-icon-button .mat-icon {\\n height: 1.125em;\\n line-height: 1.125;\\n}\\n.mat-form-field-infix {\\n padding: 0.5em 0;\\n border-top: 0.84375em solid transparent;\\n}\\n.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,\\n.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.34373em) scale(0.75);\\n width: 133.3333533333%;\\n}\\n.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.34372em) scale(0.75);\\n width: 133.3333633333%;\\n}\\n.mat-form-field-label-wrapper {\\n top: -0.84375em;\\n padding-top: 0.84375em;\\n}\\n.mat-form-field-label {\\n top: 1.34375em;\\n}\\n.mat-form-field-underline {\\n bottom: 1.34375em;\\n}\\n.mat-form-field-subscript-wrapper {\\n font-size: 75%;\\n margin-top: 0.6666666667em;\\n top: calc(100% - 1.7916666667em);\\n}\\n.mat-form-field-appearance-legacy .mat-form-field-wrapper {\\n padding-bottom: 1.25em;\\n}\\n.mat-form-field-appearance-legacy .mat-form-field-infix {\\n padding: 0.4375em 0;\\n}\\n.mat-form-field-appearance-legacy.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,\\n.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.28125em) scale(0.75) perspective(100px) translateZ(0.00106px);\\n -ms-transform: translateY(-1.28119em) scale(0.75);\\n width: 133.3333933333%;\\n}\\n.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-form-field-autofill-control:-webkit-autofill + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.28125em) scale(0.75) perspective(100px) translateZ(0.00107px);\\n -ms-transform: translateY(-1.28118em) scale(0.75);\\n width: 133.3334033333%;\\n}\\n.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.28125em) scale(0.75) perspective(100px) translateZ(0.00108px);\\n -ms-transform: translateY(-1.28117em) scale(0.75);\\n width: 133.3334133333%;\\n}\\n.mat-form-field-appearance-legacy .mat-form-field-label {\\n top: 1.28125em;\\n}\\n.mat-form-field-appearance-legacy .mat-form-field-underline {\\n bottom: 1.25em;\\n}\\n.mat-form-field-appearance-legacy .mat-form-field-subscript-wrapper {\\n margin-top: 0.5416666667em;\\n top: calc(100% - 1.6666666667em);\\n}\\n@media print {\\n .mat-form-field-appearance-legacy.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,\\n.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.28116em) scale(0.75);\\n }\\n .mat-form-field-appearance-legacy.mat-form-field-can-float .mat-form-field-autofill-control:-webkit-autofill + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.28115em) scale(0.75);\\n }\\n .mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.28114em) scale(0.75);\\n }\\n}\\n.mat-form-field-appearance-fill .mat-form-field-infix {\\n padding: 0.25em 0 0.75em 0;\\n}\\n.mat-form-field-appearance-fill .mat-form-field-label {\\n top: 1.09375em;\\n margin-top: -0.5em;\\n}\\n.mat-form-field-appearance-fill.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,\\n.mat-form-field-appearance-fill.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-0.59373em) scale(0.75);\\n width: 133.3333533333%;\\n}\\n.mat-form-field-appearance-fill.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-0.59372em) scale(0.75);\\n width: 133.3333633333%;\\n}\\n.mat-form-field-appearance-outline .mat-form-field-infix {\\n padding: 1em 0 1em 0;\\n}\\n.mat-form-field-appearance-outline .mat-form-field-label {\\n top: 1.84375em;\\n margin-top: -0.25em;\\n}\\n.mat-form-field-appearance-outline.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,\\n.mat-form-field-appearance-outline.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.59373em) scale(0.75);\\n width: 133.3333533333%;\\n}\\n.mat-form-field-appearance-outline.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.59372em) scale(0.75);\\n width: 133.3333633333%;\\n}\\n.mat-grid-tile-header,\\n.mat-grid-tile-footer {\\n font-size: 16px;\\n}\\n.mat-grid-tile-header .mat-line,\\n.mat-grid-tile-footer .mat-line {\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n display: block;\\n box-sizing: border-box;\\n}\\n.mat-grid-tile-header .mat-line:nth-child(n+2),\\n.mat-grid-tile-footer .mat-line:nth-child(n+2) {\\n font-size: 12px;\\n}\\ninput.mat-input-element {\\n margin-top: -0.0625em;\\n}\\n.mat-menu-item {\\n font-family: OpenSans, sans-serif;\\n font-size: 16px;\\n font-weight: normal;\\n}\\n.mat-paginator,\\n.mat-paginator-page-size .mat-select-trigger {\\n font-family: OpenSans, sans-serif;\\n font-size: 12px;\\n}\\n.mat-radio-button {\\n font-family: OpenSans, sans-serif;\\n}\\n.mat-select {\\n font-family: OpenSans, sans-serif;\\n}\\n.mat-select-trigger {\\n height: 1.125em;\\n}\\n.mat-slide-toggle-content {\\n font-family: OpenSans, sans-serif;\\n}\\n.mat-slider-thumb-label-text {\\n font-family: OpenSans, sans-serif;\\n font-size: 12px;\\n font-weight: 500;\\n}\\n.mat-stepper-vertical, .mat-stepper-horizontal {\\n font-family: OpenSans, sans-serif;\\n}\\n.mat-step-label {\\n font-size: 16px;\\n font-weight: normal;\\n}\\n.mat-step-sub-label-error {\\n font-weight: normal;\\n}\\n.mat-step-label-error {\\n font-size: 14px;\\n}\\n.mat-step-label-selected {\\n font-size: 14px;\\n font-weight: 500;\\n}\\n.mat-tab-group {\\n font-family: OpenSans, sans-serif;\\n}\\n.mat-tab-label, .mat-tab-link {\\n font-family: OpenSans, sans-serif;\\n font-size: 14px;\\n font-weight: 500;\\n}\\n.mat-toolbar,\\n.mat-toolbar h1,\\n.mat-toolbar h2,\\n.mat-toolbar h3,\\n.mat-toolbar h4,\\n.mat-toolbar h5,\\n.mat-toolbar h6 {\\n font: 500 20px/32px OpenSans, sans-serif;\\n letter-spacing: normal;\\n margin: 0;\\n}\\n.mat-tooltip {\\n font-family: OpenSans, sans-serif;\\n font-size: 10px;\\n padding-top: 6px;\\n padding-bottom: 6px;\\n}\\n.mat-tooltip-handset {\\n font-size: 14px;\\n padding-top: 8px;\\n padding-bottom: 8px;\\n}\\n.mat-list-item {\\n font-family: OpenSans, sans-serif;\\n}\\n.mat-list-option {\\n font-family: OpenSans, sans-serif;\\n}\\n.mat-list-base .mat-list-item {\\n font-size: 16px;\\n}\\n.mat-list-base .mat-list-item .mat-line {\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n display: block;\\n box-sizing: border-box;\\n}\\n.mat-list-base .mat-list-item .mat-line:nth-child(n+2) {\\n font-size: 16px;\\n}\\n.mat-list-base .mat-list-option {\\n font-size: 16px;\\n}\\n.mat-list-base .mat-list-option .mat-line {\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n display: block;\\n box-sizing: border-box;\\n}\\n.mat-list-base .mat-list-option .mat-line:nth-child(n+2) {\\n font-size: 16px;\\n}\\n.mat-list-base .mat-subheader {\\n font-family: OpenSans, sans-serif;\\n font-size: 14px;\\n font-weight: 500;\\n}\\n.mat-list-base[dense] .mat-list-item {\\n font-size: 12px;\\n}\\n.mat-list-base[dense] .mat-list-item .mat-line {\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n display: block;\\n box-sizing: border-box;\\n}\\n.mat-list-base[dense] .mat-list-item .mat-line:nth-child(n+2) {\\n font-size: 12px;\\n}\\n.mat-list-base[dense] .mat-list-option {\\n font-size: 12px;\\n}\\n.mat-list-base[dense] .mat-list-option .mat-line {\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n display: block;\\n box-sizing: border-box;\\n}\\n.mat-list-base[dense] .mat-list-option .mat-line:nth-child(n+2) {\\n font-size: 12px;\\n}\\n.mat-list-base[dense] .mat-subheader {\\n font-family: OpenSans, sans-serif;\\n font-size: 12px;\\n font-weight: 500;\\n}\\n.mat-option {\\n font-family: OpenSans, sans-serif;\\n font-size: 16px;\\n}\\n.mat-optgroup-label {\\n font: 500 14px/24px OpenSans, sans-serif;\\n letter-spacing: normal;\\n}\\n.mat-simple-snackbar {\\n font-family: OpenSans, sans-serif;\\n font-size: 16px;\\n}\\n.mat-simple-snackbar-action {\\n line-height: 1;\\n font-family: inherit;\\n font-size: inherit;\\n font-weight: 500;\\n}\\n.mat-tree {\\n font-family: OpenSans, sans-serif;\\n}\\n.mat-tree-node,\\n.mat-nested-tree-node {\\n font-weight: normal;\\n font-size: 16px;\\n}\\n.mat-typography h1, .mat-typography h2, .mat-typography h3, .mat-typography h4, .mat-typography h5, .mat-typography h6 {\\n font-family: BwModelica, monospace;\\n font-weight: bold;\\n}\\n.mat-ripple-element {\\n background-color: rgba(0, 0, 0, 0.1);\\n}\\n.mat-option {\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-option:hover:not(.mat-option-disabled), .mat-option:focus:not(.mat-option-disabled) {\\n background: rgba(0, 0, 0, 0.04);\\n}\\n.mat-option.mat-selected:not(.mat-option-multiple):not(.mat-option-disabled) {\\n background: rgba(0, 0, 0, 0.04);\\n}\\n.mat-option.mat-active {\\n background: rgba(0, 0, 0, 0.04);\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-option.mat-option-disabled {\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-primary .mat-option.mat-selected:not(.mat-option-disabled) {\\n color: #4775f5;\\n}\\n.mat-accent .mat-option.mat-selected:not(.mat-option-disabled) {\\n color: #f7cc71;\\n}\\n.mat-warn .mat-option.mat-selected:not(.mat-option-disabled) {\\n color: #fc8f76;\\n}\\n.mat-optgroup-label {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-optgroup-disabled .mat-optgroup-label {\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-pseudo-checkbox {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-pseudo-checkbox::after {\\n color: #fafafa;\\n}\\n.mat-pseudo-checkbox-disabled {\\n color: #b0b0b0;\\n}\\n.mat-primary .mat-pseudo-checkbox-checked,\\n.mat-primary .mat-pseudo-checkbox-indeterminate {\\n background: #4775f5;\\n}\\n.mat-pseudo-checkbox-checked,\\n.mat-pseudo-checkbox-indeterminate,\\n.mat-accent .mat-pseudo-checkbox-checked,\\n.mat-accent .mat-pseudo-checkbox-indeterminate {\\n background: #f7cc71;\\n}\\n.mat-warn .mat-pseudo-checkbox-checked,\\n.mat-warn .mat-pseudo-checkbox-indeterminate {\\n background: #fc8f76;\\n}\\n.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-disabled,\\n.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-disabled {\\n background: #b0b0b0;\\n}\\n.mat-app-background {\\n background-color: #fafafa;\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-elevation-z0 {\\n box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z1 {\\n box-shadow: 0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z2 {\\n box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z3 {\\n box-shadow: 0px 3px 3px -2px rgba(0, 0, 0, 0.2), 0px 3px 4px 0px rgba(0, 0, 0, 0.14), 0px 1px 8px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z4 {\\n box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z5 {\\n box-shadow: 0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 5px 8px 0px rgba(0, 0, 0, 0.14), 0px 1px 14px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z6 {\\n box-shadow: 0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z7 {\\n box-shadow: 0px 4px 5px -2px rgba(0, 0, 0, 0.2), 0px 7px 10px 1px rgba(0, 0, 0, 0.14), 0px 2px 16px 1px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z8 {\\n box-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.2), 0px 8px 10px 1px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z9 {\\n box-shadow: 0px 5px 6px -3px rgba(0, 0, 0, 0.2), 0px 9px 12px 1px rgba(0, 0, 0, 0.14), 0px 3px 16px 2px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z10 {\\n box-shadow: 0px 6px 6px -3px rgba(0, 0, 0, 0.2), 0px 10px 14px 1px rgba(0, 0, 0, 0.14), 0px 4px 18px 3px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z11 {\\n box-shadow: 0px 6px 7px -4px rgba(0, 0, 0, 0.2), 0px 11px 15px 1px rgba(0, 0, 0, 0.14), 0px 4px 20px 3px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z12 {\\n box-shadow: 0px 7px 8px -4px rgba(0, 0, 0, 0.2), 0px 12px 17px 2px rgba(0, 0, 0, 0.14), 0px 5px 22px 4px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z13 {\\n box-shadow: 0px 7px 8px -4px rgba(0, 0, 0, 0.2), 0px 13px 19px 2px rgba(0, 0, 0, 0.14), 0px 5px 24px 4px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z14 {\\n box-shadow: 0px 7px 9px -4px rgba(0, 0, 0, 0.2), 0px 14px 21px 2px rgba(0, 0, 0, 0.14), 0px 5px 26px 4px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z15 {\\n box-shadow: 0px 8px 9px -5px rgba(0, 0, 0, 0.2), 0px 15px 22px 2px rgba(0, 0, 0, 0.14), 0px 6px 28px 5px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z16 {\\n box-shadow: 0px 8px 10px -5px rgba(0, 0, 0, 0.2), 0px 16px 24px 2px rgba(0, 0, 0, 0.14), 0px 6px 30px 5px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z17 {\\n box-shadow: 0px 8px 11px -5px rgba(0, 0, 0, 0.2), 0px 17px 26px 2px rgba(0, 0, 0, 0.14), 0px 6px 32px 5px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z18 {\\n box-shadow: 0px 9px 11px -5px rgba(0, 0, 0, 0.2), 0px 18px 28px 2px rgba(0, 0, 0, 0.14), 0px 7px 34px 6px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z19 {\\n box-shadow: 0px 9px 12px -6px rgba(0, 0, 0, 0.2), 0px 19px 29px 2px rgba(0, 0, 0, 0.14), 0px 7px 36px 6px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z20 {\\n box-shadow: 0px 10px 13px -6px rgba(0, 0, 0, 0.2), 0px 20px 31px 3px rgba(0, 0, 0, 0.14), 0px 8px 38px 7px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z21 {\\n box-shadow: 0px 10px 13px -6px rgba(0, 0, 0, 0.2), 0px 21px 33px 3px rgba(0, 0, 0, 0.14), 0px 8px 40px 7px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z22 {\\n box-shadow: 0px 10px 14px -6px rgba(0, 0, 0, 0.2), 0px 22px 35px 3px rgba(0, 0, 0, 0.14), 0px 8px 42px 7px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z23 {\\n box-shadow: 0px 11px 14px -7px rgba(0, 0, 0, 0.2), 0px 23px 36px 3px rgba(0, 0, 0, 0.14), 0px 9px 44px 8px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z24 {\\n box-shadow: 0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 9px 46px 8px rgba(0, 0, 0, 0.12);\\n}\\n.mat-theme-loaded-marker {\\n display: none;\\n}\\n.mat-autocomplete-panel {\\n background: white;\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-autocomplete-panel:not([class*=mat-elevation-z]) {\\n box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-autocomplete-panel .mat-option.mat-selected:not(.mat-active):not(:hover) {\\n background: white;\\n}\\n.mat-autocomplete-panel .mat-option.mat-selected:not(.mat-active):not(:hover):not(.mat-option-disabled) {\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-badge-content {\\n color: white;\\n background: #4775f5;\\n}\\n.cdk-high-contrast-active .mat-badge-content {\\n outline: solid 1px;\\n border-radius: 0;\\n}\\n.mat-badge-accent .mat-badge-content {\\n background: #f7cc71;\\n color: white;\\n}\\n.mat-badge-warn .mat-badge-content {\\n color: white;\\n background: #fc8f76;\\n}\\n.mat-badge {\\n position: relative;\\n}\\n.mat-badge-hidden .mat-badge-content {\\n display: none;\\n}\\n.mat-badge-disabled .mat-badge-content {\\n background: #b9b9b9;\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-badge-content {\\n position: absolute;\\n text-align: center;\\n display: inline-block;\\n border-radius: 50%;\\n transition: transform 200ms ease-in-out;\\n transform: scale(0.6);\\n overflow: hidden;\\n white-space: nowrap;\\n text-overflow: ellipsis;\\n pointer-events: none;\\n}\\n.ng-animate-disabled .mat-badge-content,\\n.mat-badge-content._mat-animation-noopable {\\n transition: none;\\n}\\n.mat-badge-content.mat-badge-active {\\n transform: none;\\n}\\n.mat-badge-small .mat-badge-content {\\n width: 16px;\\n height: 16px;\\n line-height: 16px;\\n}\\n.mat-badge-small.mat-badge-above .mat-badge-content {\\n top: -8px;\\n}\\n.mat-badge-small.mat-badge-below .mat-badge-content {\\n bottom: -8px;\\n}\\n.mat-badge-small.mat-badge-before .mat-badge-content {\\n left: -16px;\\n}\\n[dir=rtl] .mat-badge-small.mat-badge-before .mat-badge-content {\\n left: auto;\\n right: -16px;\\n}\\n.mat-badge-small.mat-badge-after .mat-badge-content {\\n right: -16px;\\n}\\n[dir=rtl] .mat-badge-small.mat-badge-after .mat-badge-content {\\n right: auto;\\n left: -16px;\\n}\\n.mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content {\\n left: -8px;\\n}\\n[dir=rtl] .mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content {\\n left: auto;\\n right: -8px;\\n}\\n.mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content {\\n right: -8px;\\n}\\n[dir=rtl] .mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content {\\n right: auto;\\n left: -8px;\\n}\\n.mat-badge-medium .mat-badge-content {\\n width: 22px;\\n height: 22px;\\n line-height: 22px;\\n}\\n.mat-badge-medium.mat-badge-above .mat-badge-content {\\n top: -11px;\\n}\\n.mat-badge-medium.mat-badge-below .mat-badge-content {\\n bottom: -11px;\\n}\\n.mat-badge-medium.mat-badge-before .mat-badge-content {\\n left: -22px;\\n}\\n[dir=rtl] .mat-badge-medium.mat-badge-before .mat-badge-content {\\n left: auto;\\n right: -22px;\\n}\\n.mat-badge-medium.mat-badge-after .mat-badge-content {\\n right: -22px;\\n}\\n[dir=rtl] .mat-badge-medium.mat-badge-after .mat-badge-content {\\n right: auto;\\n left: -22px;\\n}\\n.mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content {\\n left: -11px;\\n}\\n[dir=rtl] .mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content {\\n left: auto;\\n right: -11px;\\n}\\n.mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content {\\n right: -11px;\\n}\\n[dir=rtl] .mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content {\\n right: auto;\\n left: -11px;\\n}\\n.mat-badge-large .mat-badge-content {\\n width: 28px;\\n height: 28px;\\n line-height: 28px;\\n}\\n.mat-badge-large.mat-badge-above .mat-badge-content {\\n top: -14px;\\n}\\n.mat-badge-large.mat-badge-below .mat-badge-content {\\n bottom: -14px;\\n}\\n.mat-badge-large.mat-badge-before .mat-badge-content {\\n left: -28px;\\n}\\n[dir=rtl] .mat-badge-large.mat-badge-before .mat-badge-content {\\n left: auto;\\n right: -28px;\\n}\\n.mat-badge-large.mat-badge-after .mat-badge-content {\\n right: -28px;\\n}\\n[dir=rtl] .mat-badge-large.mat-badge-after .mat-badge-content {\\n right: auto;\\n left: -28px;\\n}\\n.mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content {\\n left: -14px;\\n}\\n[dir=rtl] .mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content {\\n left: auto;\\n right: -14px;\\n}\\n.mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content {\\n right: -14px;\\n}\\n[dir=rtl] .mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content {\\n right: auto;\\n left: -14px;\\n}\\n.mat-bottom-sheet-container {\\n box-shadow: 0px 8px 10px -5px rgba(0, 0, 0, 0.2), 0px 16px 24px 2px rgba(0, 0, 0, 0.14), 0px 6px 30px 5px rgba(0, 0, 0, 0.12);\\n background: white;\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-button, .mat-icon-button, .mat-stroked-button {\\n color: inherit;\\n background: transparent;\\n}\\n.mat-button.mat-primary, .mat-icon-button.mat-primary, .mat-stroked-button.mat-primary {\\n color: #4775f5;\\n}\\n.mat-button.mat-accent, .mat-icon-button.mat-accent, .mat-stroked-button.mat-accent {\\n color: #f7cc71;\\n}\\n.mat-button.mat-warn, .mat-icon-button.mat-warn, .mat-stroked-button.mat-warn {\\n color: #fc8f76;\\n}\\n.mat-button.mat-primary.mat-button-disabled, .mat-button.mat-accent.mat-button-disabled, .mat-button.mat-warn.mat-button-disabled, .mat-button.mat-button-disabled.mat-button-disabled, .mat-icon-button.mat-primary.mat-button-disabled, .mat-icon-button.mat-accent.mat-button-disabled, .mat-icon-button.mat-warn.mat-button-disabled, .mat-icon-button.mat-button-disabled.mat-button-disabled, .mat-stroked-button.mat-primary.mat-button-disabled, .mat-stroked-button.mat-accent.mat-button-disabled, .mat-stroked-button.mat-warn.mat-button-disabled, .mat-stroked-button.mat-button-disabled.mat-button-disabled {\\n color: rgba(0, 0, 0, 0.26);\\n}\\n.mat-button.mat-primary .mat-button-focus-overlay, .mat-icon-button.mat-primary .mat-button-focus-overlay, .mat-stroked-button.mat-primary .mat-button-focus-overlay {\\n background-color: #4775f5;\\n}\\n.mat-button.mat-accent .mat-button-focus-overlay, .mat-icon-button.mat-accent .mat-button-focus-overlay, .mat-stroked-button.mat-accent .mat-button-focus-overlay {\\n background-color: #f7cc71;\\n}\\n.mat-button.mat-warn .mat-button-focus-overlay, .mat-icon-button.mat-warn .mat-button-focus-overlay, .mat-stroked-button.mat-warn .mat-button-focus-overlay {\\n background-color: #fc8f76;\\n}\\n.mat-button.mat-button-disabled .mat-button-focus-overlay, .mat-icon-button.mat-button-disabled .mat-button-focus-overlay, .mat-stroked-button.mat-button-disabled .mat-button-focus-overlay {\\n background-color: transparent;\\n}\\n.mat-button .mat-ripple-element, .mat-icon-button .mat-ripple-element, .mat-stroked-button .mat-ripple-element {\\n opacity: 0.1;\\n background-color: currentColor;\\n}\\n.mat-button-focus-overlay {\\n background: black;\\n}\\n.mat-stroked-button:not(.mat-button-disabled) {\\n border-color: rgba(0, 0, 0, 0.12);\\n}\\n.mat-flat-button, .mat-raised-button, .mat-fab, .mat-mini-fab {\\n color: rgba(0, 0, 0, 0.87);\\n background-color: white;\\n}\\n.mat-flat-button.mat-primary, .mat-raised-button.mat-primary, .mat-fab.mat-primary, .mat-mini-fab.mat-primary {\\n color: white;\\n}\\n.mat-flat-button.mat-accent, .mat-raised-button.mat-accent, .mat-fab.mat-accent, .mat-mini-fab.mat-accent {\\n color: white;\\n}\\n.mat-flat-button.mat-warn, .mat-raised-button.mat-warn, .mat-fab.mat-warn, .mat-mini-fab.mat-warn {\\n color: white;\\n}\\n.mat-flat-button.mat-primary.mat-button-disabled, .mat-flat-button.mat-accent.mat-button-disabled, .mat-flat-button.mat-warn.mat-button-disabled, .mat-flat-button.mat-button-disabled.mat-button-disabled, .mat-raised-button.mat-primary.mat-button-disabled, .mat-raised-button.mat-accent.mat-button-disabled, .mat-raised-button.mat-warn.mat-button-disabled, .mat-raised-button.mat-button-disabled.mat-button-disabled, .mat-fab.mat-primary.mat-button-disabled, .mat-fab.mat-accent.mat-button-disabled, .mat-fab.mat-warn.mat-button-disabled, .mat-fab.mat-button-disabled.mat-button-disabled, .mat-mini-fab.mat-primary.mat-button-disabled, .mat-mini-fab.mat-accent.mat-button-disabled, .mat-mini-fab.mat-warn.mat-button-disabled, .mat-mini-fab.mat-button-disabled.mat-button-disabled {\\n color: rgba(0, 0, 0, 0.26);\\n}\\n.mat-flat-button.mat-primary, .mat-raised-button.mat-primary, .mat-fab.mat-primary, .mat-mini-fab.mat-primary {\\n background-color: #4775f5;\\n}\\n.mat-flat-button.mat-accent, .mat-raised-button.mat-accent, .mat-fab.mat-accent, .mat-mini-fab.mat-accent {\\n background-color: #f7cc71;\\n}\\n.mat-flat-button.mat-warn, .mat-raised-button.mat-warn, .mat-fab.mat-warn, .mat-mini-fab.mat-warn {\\n background-color: #fc8f76;\\n}\\n.mat-flat-button.mat-primary.mat-button-disabled, .mat-flat-button.mat-accent.mat-button-disabled, .mat-flat-button.mat-warn.mat-button-disabled, .mat-flat-button.mat-button-disabled.mat-button-disabled, .mat-raised-button.mat-primary.mat-button-disabled, .mat-raised-button.mat-accent.mat-button-disabled, .mat-raised-button.mat-warn.mat-button-disabled, .mat-raised-button.mat-button-disabled.mat-button-disabled, .mat-fab.mat-primary.mat-button-disabled, .mat-fab.mat-accent.mat-button-disabled, .mat-fab.mat-warn.mat-button-disabled, .mat-fab.mat-button-disabled.mat-button-disabled, .mat-mini-fab.mat-primary.mat-button-disabled, .mat-mini-fab.mat-accent.mat-button-disabled, .mat-mini-fab.mat-warn.mat-button-disabled, .mat-mini-fab.mat-button-disabled.mat-button-disabled {\\n background-color: rgba(0, 0, 0, 0.12);\\n}\\n.mat-flat-button.mat-primary .mat-ripple-element, .mat-raised-button.mat-primary .mat-ripple-element, .mat-fab.mat-primary .mat-ripple-element, .mat-mini-fab.mat-primary .mat-ripple-element {\\n background-color: rgba(255, 255, 255, 0.1);\\n}\\n.mat-flat-button.mat-accent .mat-ripple-element, .mat-raised-button.mat-accent .mat-ripple-element, .mat-fab.mat-accent .mat-ripple-element, .mat-mini-fab.mat-accent .mat-ripple-element {\\n background-color: rgba(255, 255, 255, 0.1);\\n}\\n.mat-flat-button.mat-warn .mat-ripple-element, .mat-raised-button.mat-warn .mat-ripple-element, .mat-fab.mat-warn .mat-ripple-element, .mat-mini-fab.mat-warn .mat-ripple-element {\\n background-color: rgba(255, 255, 255, 0.1);\\n}\\n.mat-stroked-button:not([class*=mat-elevation-z]), .mat-flat-button:not([class*=mat-elevation-z]) {\\n box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-raised-button:not([class*=mat-elevation-z]) {\\n box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-raised-button:not(.mat-button-disabled):active:not([class*=mat-elevation-z]) {\\n box-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.2), 0px 8px 10px 1px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0, 0, 0, 0.12);\\n}\\n.mat-raised-button.mat-button-disabled:not([class*=mat-elevation-z]) {\\n box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-fab:not([class*=mat-elevation-z]), .mat-mini-fab:not([class*=mat-elevation-z]) {\\n box-shadow: 0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-fab:not(.mat-button-disabled):active:not([class*=mat-elevation-z]), .mat-mini-fab:not(.mat-button-disabled):active:not([class*=mat-elevation-z]) {\\n box-shadow: 0px 7px 8px -4px rgba(0, 0, 0, 0.2), 0px 12px 17px 2px rgba(0, 0, 0, 0.14), 0px 5px 22px 4px rgba(0, 0, 0, 0.12);\\n}\\n.mat-fab.mat-button-disabled:not([class*=mat-elevation-z]), .mat-mini-fab.mat-button-disabled:not([class*=mat-elevation-z]) {\\n box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-button-toggle-standalone,\\n.mat-button-toggle-group {\\n box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-button-toggle-standalone.mat-button-toggle-appearance-standard,\\n.mat-button-toggle-group-appearance-standard {\\n box-shadow: none;\\n}\\n.mat-button-toggle {\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-button-toggle .mat-button-toggle-focus-overlay {\\n background-color: rgba(0, 0, 0, 0.12);\\n}\\n.mat-button-toggle-appearance-standard {\\n color: rgba(0, 0, 0, 0.87);\\n background: white;\\n}\\n.mat-button-toggle-appearance-standard .mat-button-toggle-focus-overlay {\\n background-color: black;\\n}\\n.mat-button-toggle-group-appearance-standard .mat-button-toggle + .mat-button-toggle {\\n border-left: solid 1px rgba(0, 0, 0, 0.12);\\n}\\n[dir=rtl] .mat-button-toggle-group-appearance-standard .mat-button-toggle + .mat-button-toggle {\\n border-left: none;\\n border-right: solid 1px rgba(0, 0, 0, 0.12);\\n}\\n.mat-button-toggle-group-appearance-standard.mat-button-toggle-vertical .mat-button-toggle + .mat-button-toggle {\\n border-left: none;\\n border-right: none;\\n border-top: solid 1px rgba(0, 0, 0, 0.12);\\n}\\n.mat-button-toggle-checked {\\n background-color: #e0e0e0;\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-button-toggle-checked.mat-button-toggle-appearance-standard {\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-button-toggle-disabled {\\n color: rgba(0, 0, 0, 0.26);\\n background-color: #eeeeee;\\n}\\n.mat-button-toggle-disabled.mat-button-toggle-appearance-standard {\\n background: white;\\n}\\n.mat-button-toggle-disabled.mat-button-toggle-checked {\\n background-color: #bdbdbd;\\n}\\n.mat-button-toggle-standalone.mat-button-toggle-appearance-standard,\\n.mat-button-toggle-group-appearance-standard {\\n border: solid 1px rgba(0, 0, 0, 0.12);\\n}\\n.mat-button-toggle-appearance-standard .mat-button-toggle-label-content {\\n line-height: 48px;\\n}\\n.mat-card {\\n background: white;\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-card:not([class*=mat-elevation-z]) {\\n box-shadow: 0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-card.mat-card-flat:not([class*=mat-elevation-z]) {\\n box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-card-subtitle {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-checkbox-frame {\\n border-color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-checkbox-checkmark {\\n fill: #fafafa;\\n}\\n.mat-checkbox-checkmark-path {\\n stroke: #fafafa !important;\\n}\\n.mat-checkbox-mixedmark {\\n background-color: #fafafa;\\n}\\n.mat-checkbox-indeterminate.mat-primary .mat-checkbox-background, .mat-checkbox-checked.mat-primary .mat-checkbox-background {\\n background-color: #4775f5;\\n}\\n.mat-checkbox-indeterminate.mat-accent .mat-checkbox-background, .mat-checkbox-checked.mat-accent .mat-checkbox-background {\\n background-color: #f7cc71;\\n}\\n.mat-checkbox-indeterminate.mat-warn .mat-checkbox-background, .mat-checkbox-checked.mat-warn .mat-checkbox-background {\\n background-color: #fc8f76;\\n}\\n.mat-checkbox-disabled.mat-checkbox-checked .mat-checkbox-background, .mat-checkbox-disabled.mat-checkbox-indeterminate .mat-checkbox-background {\\n background-color: #b0b0b0;\\n}\\n.mat-checkbox-disabled:not(.mat-checkbox-checked) .mat-checkbox-frame {\\n border-color: #b0b0b0;\\n}\\n.mat-checkbox-disabled .mat-checkbox-label {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-checkbox .mat-ripple-element {\\n background-color: black;\\n}\\n.mat-checkbox-checked:not(.mat-checkbox-disabled).mat-primary .mat-ripple-element,\\n.mat-checkbox:active:not(.mat-checkbox-disabled).mat-primary .mat-ripple-element {\\n background: #4775f5;\\n}\\n.mat-checkbox-checked:not(.mat-checkbox-disabled).mat-accent .mat-ripple-element,\\n.mat-checkbox:active:not(.mat-checkbox-disabled).mat-accent .mat-ripple-element {\\n background: #f7cc71;\\n}\\n.mat-checkbox-checked:not(.mat-checkbox-disabled).mat-warn .mat-ripple-element,\\n.mat-checkbox:active:not(.mat-checkbox-disabled).mat-warn .mat-ripple-element {\\n background: #fc8f76;\\n}\\n.mat-chip.mat-standard-chip {\\n background-color: #e0e0e0;\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-chip.mat-standard-chip .mat-chip-remove {\\n color: rgba(0, 0, 0, 0.87);\\n opacity: 0.4;\\n}\\n.mat-chip.mat-standard-chip:not(.mat-chip-disabled):active {\\n box-shadow: 0px 3px 3px -2px rgba(0, 0, 0, 0.2), 0px 3px 4px 0px rgba(0, 0, 0, 0.14), 0px 1px 8px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-chip.mat-standard-chip:not(.mat-chip-disabled) .mat-chip-remove:hover {\\n opacity: 0.54;\\n}\\n.mat-chip.mat-standard-chip.mat-chip-disabled {\\n opacity: 0.4;\\n}\\n.mat-chip.mat-standard-chip::after {\\n background: black;\\n}\\n.mat-chip.mat-standard-chip.mat-chip-selected.mat-primary {\\n background-color: #4775f5;\\n color: white;\\n}\\n.mat-chip.mat-standard-chip.mat-chip-selected.mat-primary .mat-chip-remove {\\n color: white;\\n opacity: 0.4;\\n}\\n.mat-chip.mat-standard-chip.mat-chip-selected.mat-primary .mat-ripple-element {\\n background-color: rgba(255, 255, 255, 0.1);\\n}\\n.mat-chip.mat-standard-chip.mat-chip-selected.mat-warn {\\n background-color: #fc8f76;\\n color: white;\\n}\\n.mat-chip.mat-standard-chip.mat-chip-selected.mat-warn .mat-chip-remove {\\n color: white;\\n opacity: 0.4;\\n}\\n.mat-chip.mat-standard-chip.mat-chip-selected.mat-warn .mat-ripple-element {\\n background-color: rgba(255, 255, 255, 0.1);\\n}\\n.mat-chip.mat-standard-chip.mat-chip-selected.mat-accent {\\n background-color: #f7cc71;\\n color: white;\\n}\\n.mat-chip.mat-standard-chip.mat-chip-selected.mat-accent .mat-chip-remove {\\n color: white;\\n opacity: 0.4;\\n}\\n.mat-chip.mat-standard-chip.mat-chip-selected.mat-accent .mat-ripple-element {\\n background-color: rgba(255, 255, 255, 0.1);\\n}\\n.mat-table {\\n background: white;\\n}\\n.mat-table thead, .mat-table tbody, .mat-table tfoot,\\nmat-header-row, mat-row, mat-footer-row,\\n[mat-header-row], [mat-row], [mat-footer-row],\\n.mat-table-sticky {\\n background: inherit;\\n}\\nmat-row, mat-header-row, mat-footer-row,\\nth.mat-header-cell, td.mat-cell, td.mat-footer-cell {\\n border-bottom-color: rgba(0, 0, 0, 0.12);\\n}\\n.mat-header-cell {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-cell, .mat-footer-cell {\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-calendar-arrow {\\n border-top-color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-datepicker-toggle,\\n.mat-datepicker-content .mat-calendar-next-button,\\n.mat-datepicker-content .mat-calendar-previous-button {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-calendar-table-header {\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-calendar-table-header-divider::after {\\n background: rgba(0, 0, 0, 0.12);\\n}\\n.mat-calendar-body-label {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-calendar-body-cell-content,\\n.mat-date-range-input-separator {\\n color: rgba(0, 0, 0, 0.87);\\n border-color: transparent;\\n}\\n.mat-calendar-body-disabled > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical) {\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-form-field-disabled .mat-date-range-input-separator {\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-calendar-body-in-preview {\\n color: rgba(0, 0, 0, 0.24);\\n}\\n.mat-calendar-body-today:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical) {\\n border-color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-calendar-body-disabled > .mat-calendar-body-today:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical) {\\n border-color: rgba(0, 0, 0, 0.18);\\n}\\n.mat-calendar-body-in-range::before {\\n background: rgba(71, 117, 245, 0.2);\\n}\\n.mat-calendar-body-comparison-identical,\\n.mat-calendar-body-in-comparison-range::before {\\n background: rgba(249, 171, 0, 0.2);\\n}\\n.mat-calendar-body-comparison-bridge-start::before,\\n[dir=rtl] .mat-calendar-body-comparison-bridge-end::before {\\n background: linear-gradient(to right, rgba(71, 117, 245, 0.2) 50%, rgba(249, 171, 0, 0.2) 50%);\\n}\\n.mat-calendar-body-comparison-bridge-end::before,\\n[dir=rtl] .mat-calendar-body-comparison-bridge-start::before {\\n background: linear-gradient(to left, rgba(71, 117, 245, 0.2) 50%, rgba(249, 171, 0, 0.2) 50%);\\n}\\n.mat-calendar-body-in-range > .mat-calendar-body-comparison-identical,\\n.mat-calendar-body-in-comparison-range.mat-calendar-body-in-range::after {\\n background: #a8dab5;\\n}\\n.mat-calendar-body-comparison-identical.mat-calendar-body-selected,\\n.mat-calendar-body-in-comparison-range > .mat-calendar-body-selected {\\n background: #46a35e;\\n}\\n.mat-calendar-body-selected {\\n background-color: #4775f5;\\n color: white;\\n}\\n.mat-calendar-body-disabled > .mat-calendar-body-selected {\\n background-color: rgba(71, 117, 245, 0.4);\\n}\\n.mat-calendar-body-today.mat-calendar-body-selected {\\n box-shadow: inset 0 0 0 1px white;\\n}\\n.mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),\\n.cdk-keyboard-focused .mat-calendar-body-active > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),\\n.cdk-program-focused .mat-calendar-body-active > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical) {\\n background-color: rgba(71, 117, 245, 0.3);\\n}\\n.mat-datepicker-content {\\n box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12);\\n background-color: white;\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-datepicker-content.mat-accent .mat-calendar-body-in-range::before {\\n background: rgba(247, 204, 113, 0.2);\\n}\\n.mat-datepicker-content.mat-accent .mat-calendar-body-comparison-identical,\\n.mat-datepicker-content.mat-accent .mat-calendar-body-in-comparison-range::before {\\n background: rgba(249, 171, 0, 0.2);\\n}\\n.mat-datepicker-content.mat-accent .mat-calendar-body-comparison-bridge-start::before,\\n.mat-datepicker-content.mat-accent [dir=rtl] .mat-calendar-body-comparison-bridge-end::before {\\n background: linear-gradient(to right, rgba(247, 204, 113, 0.2) 50%, rgba(249, 171, 0, 0.2) 50%);\\n}\\n.mat-datepicker-content.mat-accent .mat-calendar-body-comparison-bridge-end::before,\\n.mat-datepicker-content.mat-accent [dir=rtl] .mat-calendar-body-comparison-bridge-start::before {\\n background: linear-gradient(to left, rgba(247, 204, 113, 0.2) 50%, rgba(249, 171, 0, 0.2) 50%);\\n}\\n.mat-datepicker-content.mat-accent .mat-calendar-body-in-range > .mat-calendar-body-comparison-identical,\\n.mat-datepicker-content.mat-accent .mat-calendar-body-in-comparison-range.mat-calendar-body-in-range::after {\\n background: #a8dab5;\\n}\\n.mat-datepicker-content.mat-accent .mat-calendar-body-comparison-identical.mat-calendar-body-selected,\\n.mat-datepicker-content.mat-accent .mat-calendar-body-in-comparison-range > .mat-calendar-body-selected {\\n background: #46a35e;\\n}\\n.mat-datepicker-content.mat-accent .mat-calendar-body-selected {\\n background-color: #f7cc71;\\n color: white;\\n}\\n.mat-datepicker-content.mat-accent .mat-calendar-body-disabled > .mat-calendar-body-selected {\\n background-color: rgba(247, 204, 113, 0.4);\\n}\\n.mat-datepicker-content.mat-accent .mat-calendar-body-today.mat-calendar-body-selected {\\n box-shadow: inset 0 0 0 1px white;\\n}\\n.mat-datepicker-content.mat-accent .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),\\n.mat-datepicker-content.mat-accent .cdk-keyboard-focused .mat-calendar-body-active > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),\\n.mat-datepicker-content.mat-accent .cdk-program-focused .mat-calendar-body-active > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical) {\\n background-color: rgba(247, 204, 113, 0.3);\\n}\\n.mat-datepicker-content.mat-warn .mat-calendar-body-in-range::before {\\n background: rgba(252, 143, 118, 0.2);\\n}\\n.mat-datepicker-content.mat-warn .mat-calendar-body-comparison-identical,\\n.mat-datepicker-content.mat-warn .mat-calendar-body-in-comparison-range::before {\\n background: rgba(249, 171, 0, 0.2);\\n}\\n.mat-datepicker-content.mat-warn .mat-calendar-body-comparison-bridge-start::before,\\n.mat-datepicker-content.mat-warn [dir=rtl] .mat-calendar-body-comparison-bridge-end::before {\\n background: linear-gradient(to right, rgba(252, 143, 118, 0.2) 50%, rgba(249, 171, 0, 0.2) 50%);\\n}\\n.mat-datepicker-content.mat-warn .mat-calendar-body-comparison-bridge-end::before,\\n.mat-datepicker-content.mat-warn [dir=rtl] .mat-calendar-body-comparison-bridge-start::before {\\n background: linear-gradient(to left, rgba(252, 143, 118, 0.2) 50%, rgba(249, 171, 0, 0.2) 50%);\\n}\\n.mat-datepicker-content.mat-warn .mat-calendar-body-in-range > .mat-calendar-body-comparison-identical,\\n.mat-datepicker-content.mat-warn .mat-calendar-body-in-comparison-range.mat-calendar-body-in-range::after {\\n background: #a8dab5;\\n}\\n.mat-datepicker-content.mat-warn .mat-calendar-body-comparison-identical.mat-calendar-body-selected,\\n.mat-datepicker-content.mat-warn .mat-calendar-body-in-comparison-range > .mat-calendar-body-selected {\\n background: #46a35e;\\n}\\n.mat-datepicker-content.mat-warn .mat-calendar-body-selected {\\n background-color: #fc8f76;\\n color: white;\\n}\\n.mat-datepicker-content.mat-warn .mat-calendar-body-disabled > .mat-calendar-body-selected {\\n background-color: rgba(252, 143, 118, 0.4);\\n}\\n.mat-datepicker-content.mat-warn .mat-calendar-body-today.mat-calendar-body-selected {\\n box-shadow: inset 0 0 0 1px white;\\n}\\n.mat-datepicker-content.mat-warn .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),\\n.mat-datepicker-content.mat-warn .cdk-keyboard-focused .mat-calendar-body-active > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),\\n.mat-datepicker-content.mat-warn .cdk-program-focused .mat-calendar-body-active > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical) {\\n background-color: rgba(252, 143, 118, 0.3);\\n}\\n.mat-datepicker-content-touch {\\n box-shadow: 0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 9px 46px 8px rgba(0, 0, 0, 0.12);\\n}\\n.mat-datepicker-toggle-active {\\n color: #4775f5;\\n}\\n.mat-datepicker-toggle-active.mat-accent {\\n color: #f7cc71;\\n}\\n.mat-datepicker-toggle-active.mat-warn {\\n color: #fc8f76;\\n}\\n.mat-date-range-input-inner[disabled] {\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-dialog-container {\\n box-shadow: 0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 9px 46px 8px rgba(0, 0, 0, 0.12);\\n background: white;\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-divider {\\n border-top-color: rgba(0, 0, 0, 0.12);\\n}\\n.mat-divider-vertical {\\n border-right-color: rgba(0, 0, 0, 0.12);\\n}\\n.mat-expansion-panel {\\n background: white;\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-expansion-panel:not([class*=mat-elevation-z]) {\\n box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-action-row {\\n border-top-color: rgba(0, 0, 0, 0.12);\\n}\\n.mat-expansion-panel .mat-expansion-panel-header.cdk-keyboard-focused:not([aria-disabled=true]), .mat-expansion-panel .mat-expansion-panel-header.cdk-program-focused:not([aria-disabled=true]), .mat-expansion-panel:not(.mat-expanded) .mat-expansion-panel-header:hover:not([aria-disabled=true]) {\\n background: rgba(0, 0, 0, 0.04);\\n}\\n@media (hover: none) {\\n .mat-expansion-panel:not(.mat-expanded):not([aria-disabled=true]) .mat-expansion-panel-header:hover {\\n background: white;\\n }\\n}\\n.mat-expansion-panel-header-title {\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-expansion-panel-header-description,\\n.mat-expansion-indicator::after {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-expansion-panel-header[aria-disabled=true] {\\n color: rgba(0, 0, 0, 0.26);\\n}\\n.mat-expansion-panel-header[aria-disabled=true] .mat-expansion-panel-header-title,\\n.mat-expansion-panel-header[aria-disabled=true] .mat-expansion-panel-header-description {\\n color: inherit;\\n}\\n.mat-expansion-panel-header {\\n height: 48px;\\n}\\n.mat-expansion-panel-header.mat-expanded {\\n height: 64px;\\n}\\n.mat-form-field-label {\\n color: rgba(0, 0, 0, 0.6);\\n}\\n.mat-hint {\\n color: rgba(0, 0, 0, 0.6);\\n}\\n.mat-form-field.mat-focused .mat-form-field-label {\\n color: #4775f5;\\n}\\n.mat-form-field.mat-focused .mat-form-field-label.mat-accent {\\n color: #f7cc71;\\n}\\n.mat-form-field.mat-focused .mat-form-field-label.mat-warn {\\n color: #fc8f76;\\n}\\n.mat-focused .mat-form-field-required-marker {\\n color: #f7cc71;\\n}\\n.mat-form-field-ripple {\\n background-color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-form-field.mat-focused .mat-form-field-ripple {\\n background-color: #4775f5;\\n}\\n.mat-form-field.mat-focused .mat-form-field-ripple.mat-accent {\\n background-color: #f7cc71;\\n}\\n.mat-form-field.mat-focused .mat-form-field-ripple.mat-warn {\\n background-color: #fc8f76;\\n}\\n.mat-form-field-type-mat-native-select.mat-focused:not(.mat-form-field-invalid) .mat-form-field-infix::after {\\n color: #4775f5;\\n}\\n.mat-form-field-type-mat-native-select.mat-focused:not(.mat-form-field-invalid).mat-accent .mat-form-field-infix::after {\\n color: #f7cc71;\\n}\\n.mat-form-field-type-mat-native-select.mat-focused:not(.mat-form-field-invalid).mat-warn .mat-form-field-infix::after {\\n color: #fc8f76;\\n}\\n.mat-form-field.mat-form-field-invalid .mat-form-field-label {\\n color: #fc8f76;\\n}\\n.mat-form-field.mat-form-field-invalid .mat-form-field-label.mat-accent,\\n.mat-form-field.mat-form-field-invalid .mat-form-field-label .mat-form-field-required-marker {\\n color: #fc8f76;\\n}\\n.mat-form-field.mat-form-field-invalid .mat-form-field-ripple,\\n.mat-form-field.mat-form-field-invalid .mat-form-field-ripple.mat-accent {\\n background-color: #fc8f76;\\n}\\n.mat-error {\\n color: #fc8f76;\\n}\\n.mat-form-field-appearance-legacy .mat-form-field-label {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-form-field-appearance-legacy .mat-hint {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-form-field-appearance-legacy .mat-form-field-underline {\\n background-color: rgba(0, 0, 0, 0.42);\\n}\\n.mat-form-field-appearance-legacy.mat-form-field-disabled .mat-form-field-underline {\\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.42) 0%, rgba(0, 0, 0, 0.42) 33%, transparent 0%);\\n background-size: 4px 100%;\\n background-repeat: repeat-x;\\n}\\n.mat-form-field-appearance-standard .mat-form-field-underline {\\n background-color: rgba(0, 0, 0, 0.42);\\n}\\n.mat-form-field-appearance-standard.mat-form-field-disabled .mat-form-field-underline {\\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.42) 0%, rgba(0, 0, 0, 0.42) 33%, transparent 0%);\\n background-size: 4px 100%;\\n background-repeat: repeat-x;\\n}\\n.mat-form-field-appearance-fill .mat-form-field-flex {\\n background-color: rgba(0, 0, 0, 0.04);\\n}\\n.mat-form-field-appearance-fill.mat-form-field-disabled .mat-form-field-flex {\\n background-color: rgba(0, 0, 0, 0.02);\\n}\\n.mat-form-field-appearance-fill .mat-form-field-underline::before {\\n background-color: rgba(0, 0, 0, 0.42);\\n}\\n.mat-form-field-appearance-fill.mat-form-field-disabled .mat-form-field-label {\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-form-field-appearance-fill.mat-form-field-disabled .mat-form-field-underline::before {\\n background-color: transparent;\\n}\\n.mat-form-field-appearance-outline .mat-form-field-outline {\\n color: rgba(0, 0, 0, 0.12);\\n}\\n.mat-form-field-appearance-outline .mat-form-field-outline-thick {\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-form-field-appearance-outline.mat-focused .mat-form-field-outline-thick {\\n color: #4775f5;\\n}\\n.mat-form-field-appearance-outline.mat-focused.mat-accent .mat-form-field-outline-thick {\\n color: #f7cc71;\\n}\\n.mat-form-field-appearance-outline.mat-focused.mat-warn .mat-form-field-outline-thick {\\n color: #fc8f76;\\n}\\n.mat-form-field-appearance-outline.mat-form-field-invalid.mat-form-field-invalid .mat-form-field-outline-thick {\\n color: #fc8f76;\\n}\\n.mat-form-field-appearance-outline.mat-form-field-disabled .mat-form-field-label {\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-form-field-appearance-outline.mat-form-field-disabled .mat-form-field-outline {\\n color: rgba(0, 0, 0, 0.06);\\n}\\n.mat-icon.mat-primary {\\n color: #4775f5;\\n}\\n.mat-icon.mat-accent {\\n color: #f7cc71;\\n}\\n.mat-icon.mat-warn {\\n color: #fc8f76;\\n}\\n.mat-form-field-type-mat-native-select .mat-form-field-infix::after {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-input-element:disabled,\\n.mat-form-field-type-mat-native-select.mat-form-field-disabled .mat-form-field-infix::after {\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-input-element {\\n caret-color: #4775f5;\\n}\\n.mat-input-element:-ms-input-placeholder {\\n color: rgba(0, 0, 0, 0.42);\\n}\\n.mat-input-element::placeholder {\\n color: rgba(0, 0, 0, 0.42);\\n}\\n.mat-input-element::-moz-placeholder {\\n color: rgba(0, 0, 0, 0.42);\\n}\\n.mat-input-element::-webkit-input-placeholder {\\n color: rgba(0, 0, 0, 0.42);\\n}\\n.mat-input-element:-ms-input-placeholder {\\n color: rgba(0, 0, 0, 0.42);\\n}\\n.mat-form-field.mat-accent .mat-input-element {\\n caret-color: #f7cc71;\\n}\\n.mat-form-field.mat-warn .mat-input-element,\\n.mat-form-field-invalid .mat-input-element {\\n caret-color: #fc8f76;\\n}\\n.mat-form-field-type-mat-native-select.mat-form-field-invalid .mat-form-field-infix::after {\\n color: #fc8f76;\\n}\\n.mat-list-base .mat-list-item {\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-list-base .mat-list-option {\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-list-base .mat-subheader {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-list-item-disabled {\\n background-color: #eeeeee;\\n}\\n.mat-list-option:hover, .mat-list-option:focus,\\n.mat-nav-list .mat-list-item:hover,\\n.mat-nav-list .mat-list-item:focus,\\n.mat-action-list .mat-list-item:hover,\\n.mat-action-list .mat-list-item:focus {\\n background: rgba(0, 0, 0, 0.04);\\n}\\n.mat-list-single-selected-option, .mat-list-single-selected-option:hover, .mat-list-single-selected-option:focus {\\n background: rgba(0, 0, 0, 0.12);\\n}\\n.mat-menu-panel {\\n background: white;\\n}\\n.mat-menu-panel:not([class*=mat-elevation-z]) {\\n box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-menu-item {\\n background: transparent;\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-menu-item[disabled], .mat-menu-item[disabled]::after,\\n.mat-menu-item[disabled] .mat-icon-no-color {\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-menu-item .mat-icon-no-color,\\n.mat-menu-item-submenu-trigger::after {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-menu-item:hover:not([disabled]),\\n.mat-menu-item.cdk-program-focused:not([disabled]),\\n.mat-menu-item.cdk-keyboard-focused:not([disabled]),\\n.mat-menu-item-highlighted:not([disabled]) {\\n background: rgba(0, 0, 0, 0.04);\\n}\\n.mat-paginator {\\n background: white;\\n}\\n.mat-paginator,\\n.mat-paginator-page-size .mat-select-trigger {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-paginator-decrement,\\n.mat-paginator-increment {\\n border-top: 2px solid rgba(0, 0, 0, 0.54);\\n border-right: 2px solid rgba(0, 0, 0, 0.54);\\n}\\n.mat-paginator-first,\\n.mat-paginator-last {\\n border-top: 2px solid rgba(0, 0, 0, 0.54);\\n}\\n.mat-icon-button[disabled] .mat-paginator-decrement,\\n.mat-icon-button[disabled] .mat-paginator-increment,\\n.mat-icon-button[disabled] .mat-paginator-first,\\n.mat-icon-button[disabled] .mat-paginator-last {\\n border-color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-paginator-container {\\n min-height: 56px;\\n}\\n.mat-progress-bar-background {\\n fill: #cdd9f9;\\n}\\n.mat-progress-bar-buffer {\\n background-color: #cdd9f9;\\n}\\n.mat-progress-bar-fill::after {\\n background-color: #4775f5;\\n}\\n.mat-progress-bar.mat-accent .mat-progress-bar-background {\\n fill: #f9efd8;\\n}\\n.mat-progress-bar.mat-accent .mat-progress-bar-buffer {\\n background-color: #f9efd8;\\n}\\n.mat-progress-bar.mat-accent .mat-progress-bar-fill::after {\\n background-color: #f7cc71;\\n}\\n.mat-progress-bar.mat-warn .mat-progress-bar-background {\\n fill: #fbdfd9;\\n}\\n.mat-progress-bar.mat-warn .mat-progress-bar-buffer {\\n background-color: #fbdfd9;\\n}\\n.mat-progress-bar.mat-warn .mat-progress-bar-fill::after {\\n background-color: #fc8f76;\\n}\\n.mat-progress-spinner circle, .mat-spinner circle {\\n stroke: #4775f5;\\n}\\n.mat-progress-spinner.mat-accent circle, .mat-spinner.mat-accent circle {\\n stroke: #f7cc71;\\n}\\n.mat-progress-spinner.mat-warn circle, .mat-spinner.mat-warn circle {\\n stroke: #fc8f76;\\n}\\n.mat-radio-outer-circle {\\n border-color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-radio-button.mat-primary.mat-radio-checked .mat-radio-outer-circle {\\n border-color: #4775f5;\\n}\\n.mat-radio-button.mat-primary .mat-radio-inner-circle,\\n.mat-radio-button.mat-primary .mat-radio-ripple .mat-ripple-element:not(.mat-radio-persistent-ripple), .mat-radio-button.mat-primary.mat-radio-checked .mat-radio-persistent-ripple, .mat-radio-button.mat-primary:active .mat-radio-persistent-ripple {\\n background-color: #4775f5;\\n}\\n.mat-radio-button.mat-accent.mat-radio-checked .mat-radio-outer-circle {\\n border-color: #f7cc71;\\n}\\n.mat-radio-button.mat-accent .mat-radio-inner-circle,\\n.mat-radio-button.mat-accent .mat-radio-ripple .mat-ripple-element:not(.mat-radio-persistent-ripple), .mat-radio-button.mat-accent.mat-radio-checked .mat-radio-persistent-ripple, .mat-radio-button.mat-accent:active .mat-radio-persistent-ripple {\\n background-color: #f7cc71;\\n}\\n.mat-radio-button.mat-warn.mat-radio-checked .mat-radio-outer-circle {\\n border-color: #fc8f76;\\n}\\n.mat-radio-button.mat-warn .mat-radio-inner-circle,\\n.mat-radio-button.mat-warn .mat-radio-ripple .mat-ripple-element:not(.mat-radio-persistent-ripple), .mat-radio-button.mat-warn.mat-radio-checked .mat-radio-persistent-ripple, .mat-radio-button.mat-warn:active .mat-radio-persistent-ripple {\\n background-color: #fc8f76;\\n}\\n.mat-radio-button.mat-radio-disabled.mat-radio-checked .mat-radio-outer-circle,\\n.mat-radio-button.mat-radio-disabled .mat-radio-outer-circle {\\n border-color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-radio-button.mat-radio-disabled .mat-radio-ripple .mat-ripple-element,\\n.mat-radio-button.mat-radio-disabled .mat-radio-inner-circle {\\n background-color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-radio-button.mat-radio-disabled .mat-radio-label-content {\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-radio-button .mat-ripple-element {\\n background-color: black;\\n}\\n.mat-select-value {\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-select-placeholder {\\n color: rgba(0, 0, 0, 0.42);\\n}\\n.mat-select-disabled .mat-select-value {\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-select-arrow {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-select-panel {\\n background: white;\\n}\\n.mat-select-panel:not([class*=mat-elevation-z]) {\\n box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-select-panel .mat-option.mat-selected:not(.mat-option-multiple) {\\n background: rgba(0, 0, 0, 0.12);\\n}\\n.mat-form-field.mat-focused.mat-primary .mat-select-arrow {\\n color: #4775f5;\\n}\\n.mat-form-field.mat-focused.mat-accent .mat-select-arrow {\\n color: #f7cc71;\\n}\\n.mat-form-field.mat-focused.mat-warn .mat-select-arrow {\\n color: #fc8f76;\\n}\\n.mat-form-field .mat-select.mat-select-invalid .mat-select-arrow {\\n color: #fc8f76;\\n}\\n.mat-form-field .mat-select.mat-select-disabled .mat-select-arrow {\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-drawer-container {\\n background-color: #fafafa;\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-drawer {\\n background-color: white;\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-drawer.mat-drawer-push {\\n background-color: white;\\n}\\n.mat-drawer:not(.mat-drawer-side) {\\n box-shadow: 0px 8px 10px -5px rgba(0, 0, 0, 0.2), 0px 16px 24px 2px rgba(0, 0, 0, 0.14), 0px 6px 30px 5px rgba(0, 0, 0, 0.12);\\n}\\n.mat-drawer-side {\\n border-right: solid 1px rgba(0, 0, 0, 0.12);\\n}\\n.mat-drawer-side.mat-drawer-end {\\n border-left: solid 1px rgba(0, 0, 0, 0.12);\\n border-right: none;\\n}\\n[dir=rtl] .mat-drawer-side {\\n border-left: solid 1px rgba(0, 0, 0, 0.12);\\n border-right: none;\\n}\\n[dir=rtl] .mat-drawer-side.mat-drawer-end {\\n border-left: none;\\n border-right: solid 1px rgba(0, 0, 0, 0.12);\\n}\\n.mat-drawer-backdrop.mat-drawer-shown {\\n background-color: rgba(0, 0, 0, 0.6);\\n}\\n.mat-slide-toggle.mat-checked .mat-slide-toggle-thumb {\\n background-color: #f7cc71;\\n}\\n.mat-slide-toggle.mat-checked .mat-slide-toggle-bar {\\n background-color: rgba(247, 204, 113, 0.54);\\n}\\n.mat-slide-toggle.mat-checked .mat-ripple-element {\\n background-color: #f7cc71;\\n}\\n.mat-slide-toggle.mat-primary.mat-checked .mat-slide-toggle-thumb {\\n background-color: #4775f5;\\n}\\n.mat-slide-toggle.mat-primary.mat-checked .mat-slide-toggle-bar {\\n background-color: rgba(71, 117, 245, 0.54);\\n}\\n.mat-slide-toggle.mat-primary.mat-checked .mat-ripple-element {\\n background-color: #4775f5;\\n}\\n.mat-slide-toggle.mat-warn.mat-checked .mat-slide-toggle-thumb {\\n background-color: #fc8f76;\\n}\\n.mat-slide-toggle.mat-warn.mat-checked .mat-slide-toggle-bar {\\n background-color: rgba(252, 143, 118, 0.54);\\n}\\n.mat-slide-toggle.mat-warn.mat-checked .mat-ripple-element {\\n background-color: #fc8f76;\\n}\\n.mat-slide-toggle:not(.mat-checked) .mat-ripple-element {\\n background-color: black;\\n}\\n.mat-slide-toggle-thumb {\\n box-shadow: 0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12);\\n background-color: #fafafa;\\n}\\n.mat-slide-toggle-bar {\\n background-color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-slider-track-background {\\n background-color: rgba(0, 0, 0, 0.26);\\n}\\n.mat-primary .mat-slider-track-fill,\\n.mat-primary .mat-slider-thumb,\\n.mat-primary .mat-slider-thumb-label {\\n background-color: #4775f5;\\n}\\n.mat-primary .mat-slider-thumb-label-text {\\n color: white;\\n}\\n.mat-primary .mat-slider-focus-ring {\\n background-color: rgba(71, 117, 245, 0.2);\\n}\\n.mat-accent .mat-slider-track-fill,\\n.mat-accent .mat-slider-thumb,\\n.mat-accent .mat-slider-thumb-label {\\n background-color: #f7cc71;\\n}\\n.mat-accent .mat-slider-thumb-label-text {\\n color: white;\\n}\\n.mat-accent .mat-slider-focus-ring {\\n background-color: rgba(247, 204, 113, 0.2);\\n}\\n.mat-warn .mat-slider-track-fill,\\n.mat-warn .mat-slider-thumb,\\n.mat-warn .mat-slider-thumb-label {\\n background-color: #fc8f76;\\n}\\n.mat-warn .mat-slider-thumb-label-text {\\n color: white;\\n}\\n.mat-warn .mat-slider-focus-ring {\\n background-color: rgba(252, 143, 118, 0.2);\\n}\\n.mat-slider:hover .mat-slider-track-background,\\n.cdk-focused .mat-slider-track-background {\\n background-color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-slider-disabled .mat-slider-track-background,\\n.mat-slider-disabled .mat-slider-track-fill,\\n.mat-slider-disabled .mat-slider-thumb {\\n background-color: rgba(0, 0, 0, 0.26);\\n}\\n.mat-slider-disabled:hover .mat-slider-track-background {\\n background-color: rgba(0, 0, 0, 0.26);\\n}\\n.mat-slider-min-value .mat-slider-focus-ring {\\n background-color: rgba(0, 0, 0, 0.12);\\n}\\n.mat-slider-min-value.mat-slider-thumb-label-showing .mat-slider-thumb,\\n.mat-slider-min-value.mat-slider-thumb-label-showing .mat-slider-thumb-label {\\n background-color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-slider-min-value.mat-slider-thumb-label-showing.cdk-focused .mat-slider-thumb,\\n.mat-slider-min-value.mat-slider-thumb-label-showing.cdk-focused .mat-slider-thumb-label {\\n background-color: rgba(0, 0, 0, 0.26);\\n}\\n.mat-slider-min-value:not(.mat-slider-thumb-label-showing) .mat-slider-thumb {\\n border-color: rgba(0, 0, 0, 0.26);\\n background-color: transparent;\\n}\\n.mat-slider-min-value:not(.mat-slider-thumb-label-showing):hover .mat-slider-thumb, .mat-slider-min-value:not(.mat-slider-thumb-label-showing).cdk-focused .mat-slider-thumb {\\n border-color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-slider-min-value:not(.mat-slider-thumb-label-showing):hover.mat-slider-disabled .mat-slider-thumb, .mat-slider-min-value:not(.mat-slider-thumb-label-showing).cdk-focused.mat-slider-disabled .mat-slider-thumb {\\n border-color: rgba(0, 0, 0, 0.26);\\n}\\n.mat-slider-has-ticks .mat-slider-wrapper::after {\\n border-color: rgba(0, 0, 0, 0.7);\\n}\\n.mat-slider-horizontal .mat-slider-ticks {\\n background-image: repeating-linear-gradient(to right, rgba(0, 0, 0, 0.7), rgba(0, 0, 0, 0.7) 2px, transparent 0, transparent);\\n background-image: -moz-repeating-linear-gradient(0.0001deg, rgba(0, 0, 0, 0.7), rgba(0, 0, 0, 0.7) 2px, transparent 0, transparent);\\n}\\n.mat-slider-vertical .mat-slider-ticks {\\n background-image: repeating-linear-gradient(to bottom, rgba(0, 0, 0, 0.7), rgba(0, 0, 0, 0.7) 2px, transparent 0, transparent);\\n}\\n.mat-step-header.cdk-keyboard-focused, .mat-step-header.cdk-program-focused, .mat-step-header:hover {\\n background-color: rgba(0, 0, 0, 0.04);\\n}\\n@media (hover: none) {\\n .mat-step-header:hover {\\n background: none;\\n }\\n}\\n.mat-step-header .mat-step-label,\\n.mat-step-header .mat-step-optional {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-step-header .mat-step-icon {\\n background-color: rgba(0, 0, 0, 0.54);\\n color: white;\\n}\\n.mat-step-header .mat-step-icon-selected,\\n.mat-step-header .mat-step-icon-state-done,\\n.mat-step-header .mat-step-icon-state-edit {\\n background-color: #4775f5;\\n color: white;\\n}\\n.mat-step-header.mat-accent .mat-step-icon {\\n color: white;\\n}\\n.mat-step-header.mat-accent .mat-step-icon-selected,\\n.mat-step-header.mat-accent .mat-step-icon-state-done,\\n.mat-step-header.mat-accent .mat-step-icon-state-edit {\\n background-color: #f7cc71;\\n color: white;\\n}\\n.mat-step-header.mat-warn .mat-step-icon {\\n color: white;\\n}\\n.mat-step-header.mat-warn .mat-step-icon-selected,\\n.mat-step-header.mat-warn .mat-step-icon-state-done,\\n.mat-step-header.mat-warn .mat-step-icon-state-edit {\\n background-color: #fc8f76;\\n color: white;\\n}\\n.mat-step-header .mat-step-icon-state-error {\\n background-color: transparent;\\n color: #fc8f76;\\n}\\n.mat-step-header .mat-step-label.mat-step-label-active {\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-step-header .mat-step-label.mat-step-label-error {\\n color: #fc8f76;\\n}\\n.mat-stepper-horizontal, .mat-stepper-vertical {\\n background-color: white;\\n}\\n.mat-stepper-vertical-line::before {\\n border-left-color: rgba(0, 0, 0, 0.12);\\n}\\n.mat-horizontal-stepper-header::before,\\n.mat-horizontal-stepper-header::after,\\n.mat-stepper-horizontal-line {\\n border-top-color: rgba(0, 0, 0, 0.12);\\n}\\n.mat-horizontal-stepper-header {\\n height: 72px;\\n}\\n.mat-stepper-label-position-bottom .mat-horizontal-stepper-header,\\n.mat-vertical-stepper-header {\\n padding: 24px 24px;\\n}\\n.mat-stepper-vertical-line::before {\\n top: -16px;\\n bottom: -16px;\\n}\\n.mat-stepper-label-position-bottom .mat-horizontal-stepper-header::after, .mat-stepper-label-position-bottom .mat-horizontal-stepper-header::before {\\n top: 36px;\\n}\\n.mat-stepper-label-position-bottom .mat-stepper-horizontal-line {\\n top: 36px;\\n}\\n.mat-sort-header-arrow {\\n color: #757575;\\n}\\n.mat-tab-nav-bar,\\n.mat-tab-header {\\n border-bottom: 1px solid rgba(0, 0, 0, 0.12);\\n}\\n.mat-tab-group-inverted-header .mat-tab-nav-bar,\\n.mat-tab-group-inverted-header .mat-tab-header {\\n border-top: 1px solid rgba(0, 0, 0, 0.12);\\n border-bottom: none;\\n}\\n.mat-tab-label, .mat-tab-link {\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-tab-label.mat-tab-disabled, .mat-tab-link.mat-tab-disabled {\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-tab-header-pagination-chevron {\\n border-color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron {\\n border-color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-tab-group[class*=mat-background-] .mat-tab-header,\\n.mat-tab-nav-bar[class*=mat-background-] {\\n border-bottom: none;\\n border-top: none;\\n}\\n.mat-tab-group.mat-primary .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-group.mat-primary .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),\\n.mat-tab-group.mat-primary .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),\\n.mat-tab-group.mat-primary .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-primary .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-primary .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),\\n.mat-tab-nav-bar.mat-primary .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),\\n.mat-tab-nav-bar.mat-primary .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled) {\\n background-color: rgba(104, 145, 255, 0.3);\\n}\\n.mat-tab-group.mat-primary .mat-ink-bar, .mat-tab-nav-bar.mat-primary .mat-ink-bar {\\n background-color: #4775f5;\\n}\\n.mat-tab-group.mat-primary.mat-background-primary > .mat-tab-header .mat-ink-bar, .mat-tab-group.mat-primary.mat-background-primary > .mat-tab-link-container .mat-ink-bar, .mat-tab-nav-bar.mat-primary.mat-background-primary > .mat-tab-header .mat-ink-bar, .mat-tab-nav-bar.mat-primary.mat-background-primary > .mat-tab-link-container .mat-ink-bar {\\n background-color: white;\\n}\\n.mat-tab-group.mat-accent .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-group.mat-accent .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),\\n.mat-tab-group.mat-accent .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),\\n.mat-tab-group.mat-accent .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-accent .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-accent .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),\\n.mat-tab-nav-bar.mat-accent .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),\\n.mat-tab-nav-bar.mat-accent .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled) {\\n background-color: rgba(255, 219, 142, 0.3);\\n}\\n.mat-tab-group.mat-accent .mat-ink-bar, .mat-tab-nav-bar.mat-accent .mat-ink-bar {\\n background-color: #f7cc71;\\n}\\n.mat-tab-group.mat-accent.mat-background-accent > .mat-tab-header .mat-ink-bar, .mat-tab-group.mat-accent.mat-background-accent > .mat-tab-link-container .mat-ink-bar, .mat-tab-nav-bar.mat-accent.mat-background-accent > .mat-tab-header .mat-ink-bar, .mat-tab-nav-bar.mat-accent.mat-background-accent > .mat-tab-link-container .mat-ink-bar {\\n background-color: white;\\n}\\n.mat-tab-group.mat-warn .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-group.mat-warn .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),\\n.mat-tab-group.mat-warn .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),\\n.mat-tab-group.mat-warn .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-warn .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-warn .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),\\n.mat-tab-nav-bar.mat-warn .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),\\n.mat-tab-nav-bar.mat-warn .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled) {\\n background-color: rgba(255, 165, 145, 0.3);\\n}\\n.mat-tab-group.mat-warn .mat-ink-bar, .mat-tab-nav-bar.mat-warn .mat-ink-bar {\\n background-color: #fc8f76;\\n}\\n.mat-tab-group.mat-warn.mat-background-warn > .mat-tab-header .mat-ink-bar, .mat-tab-group.mat-warn.mat-background-warn > .mat-tab-link-container .mat-ink-bar, .mat-tab-nav-bar.mat-warn.mat-background-warn > .mat-tab-header .mat-ink-bar, .mat-tab-nav-bar.mat-warn.mat-background-warn > .mat-tab-link-container .mat-ink-bar {\\n background-color: white;\\n}\\n.mat-tab-group.mat-background-primary .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-group.mat-background-primary .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),\\n.mat-tab-group.mat-background-primary .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),\\n.mat-tab-group.mat-background-primary .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-background-primary .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-background-primary .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),\\n.mat-tab-nav-bar.mat-background-primary .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),\\n.mat-tab-nav-bar.mat-background-primary .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled) {\\n background-color: rgba(104, 145, 255, 0.3);\\n}\\n.mat-tab-group.mat-background-primary > .mat-tab-header, .mat-tab-group.mat-background-primary > .mat-tab-link-container, .mat-tab-group.mat-background-primary > .mat-tab-header-pagination, .mat-tab-nav-bar.mat-background-primary > .mat-tab-header, .mat-tab-nav-bar.mat-background-primary > .mat-tab-link-container, .mat-tab-nav-bar.mat-background-primary > .mat-tab-header-pagination {\\n background-color: #4775f5;\\n}\\n.mat-tab-group.mat-background-primary > .mat-tab-header .mat-tab-label, .mat-tab-group.mat-background-primary > .mat-tab-link-container .mat-tab-link, .mat-tab-nav-bar.mat-background-primary > .mat-tab-header .mat-tab-label, .mat-tab-nav-bar.mat-background-primary > .mat-tab-link-container .mat-tab-link {\\n color: white;\\n}\\n.mat-tab-group.mat-background-primary > .mat-tab-header .mat-tab-label.mat-tab-disabled, .mat-tab-group.mat-background-primary > .mat-tab-link-container .mat-tab-link.mat-tab-disabled, .mat-tab-nav-bar.mat-background-primary > .mat-tab-header .mat-tab-label.mat-tab-disabled, .mat-tab-nav-bar.mat-background-primary > .mat-tab-link-container .mat-tab-link.mat-tab-disabled {\\n color: rgba(255, 255, 255, 0.4);\\n}\\n.mat-tab-group.mat-background-primary > .mat-tab-header .mat-tab-header-pagination-chevron,\\n.mat-tab-group.mat-background-primary > .mat-tab-header-pagination .mat-tab-header-pagination-chevron,\\n.mat-tab-group.mat-background-primary > .mat-tab-link-container .mat-focus-indicator::before,\\n.mat-tab-group.mat-background-primary > .mat-tab-header .mat-focus-indicator::before, .mat-tab-nav-bar.mat-background-primary > .mat-tab-header .mat-tab-header-pagination-chevron,\\n.mat-tab-nav-bar.mat-background-primary > .mat-tab-header-pagination .mat-tab-header-pagination-chevron,\\n.mat-tab-nav-bar.mat-background-primary > .mat-tab-link-container .mat-focus-indicator::before,\\n.mat-tab-nav-bar.mat-background-primary > .mat-tab-header .mat-focus-indicator::before {\\n border-color: white;\\n}\\n.mat-tab-group.mat-background-primary > .mat-tab-header .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron,\\n.mat-tab-group.mat-background-primary > .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron, .mat-tab-nav-bar.mat-background-primary > .mat-tab-header .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron,\\n.mat-tab-nav-bar.mat-background-primary > .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron {\\n border-color: rgba(255, 255, 255, 0.4);\\n}\\n.mat-tab-group.mat-background-primary > .mat-tab-header .mat-ripple-element,\\n.mat-tab-group.mat-background-primary > .mat-tab-link-container .mat-ripple-element,\\n.mat-tab-group.mat-background-primary > .mat-tab-header-pagination .mat-ripple-element, .mat-tab-nav-bar.mat-background-primary > .mat-tab-header .mat-ripple-element,\\n.mat-tab-nav-bar.mat-background-primary > .mat-tab-link-container .mat-ripple-element,\\n.mat-tab-nav-bar.mat-background-primary > .mat-tab-header-pagination .mat-ripple-element {\\n background-color: rgba(255, 255, 255, 0.12);\\n}\\n.mat-tab-group.mat-background-accent .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-group.mat-background-accent .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),\\n.mat-tab-group.mat-background-accent .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),\\n.mat-tab-group.mat-background-accent .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-background-accent .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-background-accent .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),\\n.mat-tab-nav-bar.mat-background-accent .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),\\n.mat-tab-nav-bar.mat-background-accent .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled) {\\n background-color: rgba(255, 219, 142, 0.3);\\n}\\n.mat-tab-group.mat-background-accent > .mat-tab-header, .mat-tab-group.mat-background-accent > .mat-tab-link-container, .mat-tab-group.mat-background-accent > .mat-tab-header-pagination, .mat-tab-nav-bar.mat-background-accent > .mat-tab-header, .mat-tab-nav-bar.mat-background-accent > .mat-tab-link-container, .mat-tab-nav-bar.mat-background-accent > .mat-tab-header-pagination {\\n background-color: #f7cc71;\\n}\\n.mat-tab-group.mat-background-accent > .mat-tab-header .mat-tab-label, .mat-tab-group.mat-background-accent > .mat-tab-link-container .mat-tab-link, .mat-tab-nav-bar.mat-background-accent > .mat-tab-header .mat-tab-label, .mat-tab-nav-bar.mat-background-accent > .mat-tab-link-container .mat-tab-link {\\n color: white;\\n}\\n.mat-tab-group.mat-background-accent > .mat-tab-header .mat-tab-label.mat-tab-disabled, .mat-tab-group.mat-background-accent > .mat-tab-link-container .mat-tab-link.mat-tab-disabled, .mat-tab-nav-bar.mat-background-accent > .mat-tab-header .mat-tab-label.mat-tab-disabled, .mat-tab-nav-bar.mat-background-accent > .mat-tab-link-container .mat-tab-link.mat-tab-disabled {\\n color: rgba(255, 255, 255, 0.4);\\n}\\n.mat-tab-group.mat-background-accent > .mat-tab-header .mat-tab-header-pagination-chevron,\\n.mat-tab-group.mat-background-accent > .mat-tab-header-pagination .mat-tab-header-pagination-chevron,\\n.mat-tab-group.mat-background-accent > .mat-tab-link-container .mat-focus-indicator::before,\\n.mat-tab-group.mat-background-accent > .mat-tab-header .mat-focus-indicator::before, .mat-tab-nav-bar.mat-background-accent > .mat-tab-header .mat-tab-header-pagination-chevron,\\n.mat-tab-nav-bar.mat-background-accent > .mat-tab-header-pagination .mat-tab-header-pagination-chevron,\\n.mat-tab-nav-bar.mat-background-accent > .mat-tab-link-container .mat-focus-indicator::before,\\n.mat-tab-nav-bar.mat-background-accent > .mat-tab-header .mat-focus-indicator::before {\\n border-color: white;\\n}\\n.mat-tab-group.mat-background-accent > .mat-tab-header .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron,\\n.mat-tab-group.mat-background-accent > .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron, .mat-tab-nav-bar.mat-background-accent > .mat-tab-header .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron,\\n.mat-tab-nav-bar.mat-background-accent > .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron {\\n border-color: rgba(255, 255, 255, 0.4);\\n}\\n.mat-tab-group.mat-background-accent > .mat-tab-header .mat-ripple-element,\\n.mat-tab-group.mat-background-accent > .mat-tab-link-container .mat-ripple-element,\\n.mat-tab-group.mat-background-accent > .mat-tab-header-pagination .mat-ripple-element, .mat-tab-nav-bar.mat-background-accent > .mat-tab-header .mat-ripple-element,\\n.mat-tab-nav-bar.mat-background-accent > .mat-tab-link-container .mat-ripple-element,\\n.mat-tab-nav-bar.mat-background-accent > .mat-tab-header-pagination .mat-ripple-element {\\n background-color: rgba(255, 255, 255, 0.12);\\n}\\n.mat-tab-group.mat-background-warn .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-group.mat-background-warn .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),\\n.mat-tab-group.mat-background-warn .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),\\n.mat-tab-group.mat-background-warn .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-background-warn .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-background-warn .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),\\n.mat-tab-nav-bar.mat-background-warn .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),\\n.mat-tab-nav-bar.mat-background-warn .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled) {\\n background-color: rgba(255, 165, 145, 0.3);\\n}\\n.mat-tab-group.mat-background-warn > .mat-tab-header, .mat-tab-group.mat-background-warn > .mat-tab-link-container, .mat-tab-group.mat-background-warn > .mat-tab-header-pagination, .mat-tab-nav-bar.mat-background-warn > .mat-tab-header, .mat-tab-nav-bar.mat-background-warn > .mat-tab-link-container, .mat-tab-nav-bar.mat-background-warn > .mat-tab-header-pagination {\\n background-color: #fc8f76;\\n}\\n.mat-tab-group.mat-background-warn > .mat-tab-header .mat-tab-label, .mat-tab-group.mat-background-warn > .mat-tab-link-container .mat-tab-link, .mat-tab-nav-bar.mat-background-warn > .mat-tab-header .mat-tab-label, .mat-tab-nav-bar.mat-background-warn > .mat-tab-link-container .mat-tab-link {\\n color: white;\\n}\\n.mat-tab-group.mat-background-warn > .mat-tab-header .mat-tab-label.mat-tab-disabled, .mat-tab-group.mat-background-warn > .mat-tab-link-container .mat-tab-link.mat-tab-disabled, .mat-tab-nav-bar.mat-background-warn > .mat-tab-header .mat-tab-label.mat-tab-disabled, .mat-tab-nav-bar.mat-background-warn > .mat-tab-link-container .mat-tab-link.mat-tab-disabled {\\n color: rgba(255, 255, 255, 0.4);\\n}\\n.mat-tab-group.mat-background-warn > .mat-tab-header .mat-tab-header-pagination-chevron,\\n.mat-tab-group.mat-background-warn > .mat-tab-header-pagination .mat-tab-header-pagination-chevron,\\n.mat-tab-group.mat-background-warn > .mat-tab-link-container .mat-focus-indicator::before,\\n.mat-tab-group.mat-background-warn > .mat-tab-header .mat-focus-indicator::before, .mat-tab-nav-bar.mat-background-warn > .mat-tab-header .mat-tab-header-pagination-chevron,\\n.mat-tab-nav-bar.mat-background-warn > .mat-tab-header-pagination .mat-tab-header-pagination-chevron,\\n.mat-tab-nav-bar.mat-background-warn > .mat-tab-link-container .mat-focus-indicator::before,\\n.mat-tab-nav-bar.mat-background-warn > .mat-tab-header .mat-focus-indicator::before {\\n border-color: white;\\n}\\n.mat-tab-group.mat-background-warn > .mat-tab-header .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron,\\n.mat-tab-group.mat-background-warn > .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron, .mat-tab-nav-bar.mat-background-warn > .mat-tab-header .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron,\\n.mat-tab-nav-bar.mat-background-warn > .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron {\\n border-color: rgba(255, 255, 255, 0.4);\\n}\\n.mat-tab-group.mat-background-warn > .mat-tab-header .mat-ripple-element,\\n.mat-tab-group.mat-background-warn > .mat-tab-link-container .mat-ripple-element,\\n.mat-tab-group.mat-background-warn > .mat-tab-header-pagination .mat-ripple-element, .mat-tab-nav-bar.mat-background-warn > .mat-tab-header .mat-ripple-element,\\n.mat-tab-nav-bar.mat-background-warn > .mat-tab-link-container .mat-ripple-element,\\n.mat-tab-nav-bar.mat-background-warn > .mat-tab-header-pagination .mat-ripple-element {\\n background-color: rgba(255, 255, 255, 0.12);\\n}\\n.mat-toolbar {\\n background: whitesmoke;\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-toolbar.mat-primary {\\n background: #4775f5;\\n color: white;\\n}\\n.mat-toolbar.mat-accent {\\n background: #f7cc71;\\n color: white;\\n}\\n.mat-toolbar.mat-warn {\\n background: #fc8f76;\\n color: white;\\n}\\n.mat-toolbar .mat-form-field-underline,\\n.mat-toolbar .mat-form-field-ripple,\\n.mat-toolbar .mat-focused .mat-form-field-ripple {\\n background-color: currentColor;\\n}\\n.mat-toolbar .mat-form-field-label,\\n.mat-toolbar .mat-focused .mat-form-field-label,\\n.mat-toolbar .mat-select-value,\\n.mat-toolbar .mat-select-arrow,\\n.mat-toolbar .mat-form-field.mat-focused .mat-select-arrow {\\n color: inherit;\\n}\\n.mat-toolbar .mat-input-element {\\n caret-color: currentColor;\\n}\\n.mat-toolbar-multiple-rows {\\n min-height: 64px;\\n}\\n.mat-toolbar-row, .mat-toolbar-single-row {\\n height: 64px;\\n}\\n@media (max-width: 599px) {\\n .mat-toolbar-multiple-rows {\\n min-height: 56px;\\n }\\n\\n .mat-toolbar-row, .mat-toolbar-single-row {\\n height: 56px;\\n }\\n}\\n.mat-tooltip {\\n background: rgba(97, 97, 97, 0.9);\\n}\\n.mat-tree {\\n background: white;\\n}\\n.mat-tree-node,\\n.mat-nested-tree-node {\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-tree-node {\\n min-height: 48px;\\n}\\n.mat-snack-bar-container {\\n color: rgba(255, 255, 255, 0.7);\\n background: #323232;\\n box-shadow: 0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-simple-snackbar-action {\\n color: #f7cc71;\\n}\\n/* Breakpoints for Media Queries */\\n.list-cards-wrapper {\\n width: 100%;\\n}\\n.list-card {\\n width: 340px;\\n height: 220px;\\n margin-bottom: 37px;\\n margin-right: 37px;\\n padding: 0;\\n}\\n@media only screen and (max-width: 768px) {\\n .list-card {\\n margin-left: auto;\\n margin-right: auto;\\n }\\n}\\n.list-card .mat-card-content {\\n margin-bottom: 0;\\n}\\n.list-card--header {\\n height: 60px;\\n background: rgba(16, 207, 152, 0.5);\\n font-size: 3.5rem;\\n color: #05825e;\\n}\\n.list-card--data {\\n height: var(--card--data-height);\\n font-size: 0.9rem;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3RoZW1lLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvYmFkZ2UvX2JhZGdlLXRoZW1lLnNjc3MiLCJjYXJkcy1saXN0LmNvbXBvbmVudC5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUvdHlwb2dyYXBoeS9fdHlwb2dyYXBoeS5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUvdHlwb2dyYXBoeS9fdHlwb2dyYXBoeS11dGlscy5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL2JvdHRvbS1zaGVldC9fYm90dG9tLXNoZWV0LXRoZW1lLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uL19idXR0b24tdGhlbWUuc2NzcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYW5ndWxhci9tYXRlcmlhbC9idXR0b24tdG9nZ2xlL19idXR0b24tdG9nZ2xlLXRoZW1lLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvY2FyZC9fY2FyZC10aGVtZS5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL2NoZWNrYm94L19jaGVja2JveC10aGVtZS5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL2NoaXBzL19jaGlwcy10aGVtZS5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL3RhYmxlL190YWJsZS10aGVtZS5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL2RhdGVwaWNrZXIvX2RhdGVwaWNrZXItdGhlbWUuc2NzcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cvX2RpYWxvZy10aGVtZS5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL2V4cGFuc2lvbi9fZXhwYW5zaW9uLXRoZW1lLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZC9fZm9ybS1maWVsZC10aGVtZS5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQvX2Zvcm0tZmllbGQtbGVnYWN5LXRoZW1lLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZC9fZm9ybS1maWVsZC1maWxsLXRoZW1lLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZC9fZm9ybS1maWVsZC1vdXRsaW5lLXRoZW1lLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvZ3JpZC1saXN0L19ncmlkLWxpc3QtdGhlbWUuc2NzcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYW5ndWxhci9tYXRlcmlhbC9jb3JlL3N0eWxlL19saXN0LWNvbW1vbi5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0L19pbnB1dC10aGVtZS5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL21lbnUvX21lbnUtdGhlbWUuc2NzcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3IvX3BhZ2luYXRvci10aGVtZS5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL3JhZGlvL19yYWRpby10aGVtZS5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL3NlbGVjdC9fc2VsZWN0LXRoZW1lLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvc2xpZGUtdG9nZ2xlL19zbGlkZS10b2dnbGUtdGhlbWUuc2NzcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYW5ndWxhci9tYXRlcmlhbC9zbGlkZXIvX3NsaWRlci10aGVtZS5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL3N0ZXBwZXIvX3N0ZXBwZXItdGhlbWUuc2NzcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYW5ndWxhci9tYXRlcmlhbC90YWJzL190YWJzLXRoZW1lLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbGJhci9fdG9vbGJhci10aGVtZS5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAvX3Rvb2x0aXAtdGhlbWUuc2NzcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYW5ndWxhci9tYXRlcmlhbC9saXN0L19saXN0LXRoZW1lLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZS9vcHRpb24vX29wdGlvbi10aGVtZS5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUvb3B0aW9uL19vcHRncm91cC10aGVtZS5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL3NuYWNrLWJhci9fc25hY2stYmFyLXRoZW1lLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvdHJlZS9fdHJlZS10aGVtZS5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUvcmlwcGxlL19yaXBwbGUuc2NzcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYW5ndWxhci9jZGsvYTExeS9faW5kZXguc2NzcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYW5ndWxhci9jZGsvb3ZlcmxheS9faW5kZXguc2NzcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYW5ndWxhci9jZGsvdGV4dC1maWVsZC9faW5kZXguc2NzcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYW5ndWxhci9tYXRlcmlhbC9jb3JlL2ZvY3VzLWluZGljYXRvcnMvX2ZvY3VzLWluZGljYXRvcnMuc2NzcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYW5ndWxhci9tYXRlcmlhbC9jb3JlL19jb3JlLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZS9yaXBwbGUvX3JpcHBsZS10aGVtZS5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUvc2VsZWN0aW9uL3BzZXVkby1jaGVja2JveC9fcHNldWRvLWNoZWNrYm94LXRoZW1lLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZS9fY29yZS10aGVtZS5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUvc3R5bGUvX2VsZXZhdGlvbi5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL2F1dG9jb21wbGV0ZS9fYXV0b2NvbXBsZXRlLXRoZW1lLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvZGl2aWRlci9fZGl2aWRlci10aGVtZS5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL2V4cGFuc2lvbi9fZXhwYW5zaW9uLW1peGlucy5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUvc3R5bGUvX2Zvcm0tY29tbW9uLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZC9fZm9ybS1maWVsZC1zdGFuZGFyZC10aGVtZS5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL2ljb24vX2ljb24tdGhlbWUuc2NzcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYW5ndWxhci9tYXRlcmlhbC9jb3JlL3N0eWxlL192ZW5kb3ItcHJlZml4ZXMuc2NzcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYW5ndWxhci9tYXRlcmlhbC9wcm9ncmVzcy1iYXIvX3Byb2dyZXNzLWJhci10aGVtZS5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLXNwaW5uZXIvX3Byb2dyZXNzLXNwaW5uZXItdGhlbWUuc2NzcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYW5ndWxhci9tYXRlcmlhbC9zaWRlbmF2L19zaWRlbmF2LXRoZW1lLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydC9fc29ydC10aGVtZS5zY3NzIiwiLi4vLi4vLi4vYnJlYWtwb2ludHMuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHUSxnRUFBQTtBQUhSLDhFQUFBO0FDbU1FO0VBQ0UsZ0JBeExVO0VBeUxWLGVBMUxRO0VBMkxSLGlEQUFBO0FDaE1KO0FEbU1FO0VBRUUsY0FBQTtBQ2pNSjtBRG9NRTtFQUNFLGVBQUE7QUNqTUo7QUN3S0U7RUN0R0Usd0RBQUE7RUFjRixzQkFBQTtFRDBGRSxnQkFBQTtBRHBLSjtBQ3VLRTtFQzNHRSx3REFB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eUhBQUE7QTVDOHBDRjtBMkNoeUNJO0VDa0lGLHlIQUFBO0E1Q2txQ0Y7QTJDcHlDSTtFQ2tJRiwwSEFBQTtBNUNzcUNGO0EyQ3h5Q0k7RUNrSUYsMEhBQUE7QTVDMHFDRjtBMkM1eUNJO0VDa0lGLDJIQUFBO0E1QzhxQ0Y7QTJDaHpDSTtFQ2tJRiwySEFBQTtBNUNrckNGO0EyQ3B6Q0k7RUNrSUYsMkhBQUE7QTVDc3JDRjtBMkN4ekNJO0VDa0lGLDJIQUFBO0E1QzByQ0Y7QTJDNXpDSTtFQ2tJRiw0SEFBQTtBNUM4ckNGO0EyQ2gwQ0k7RUNrSUYsNEhBQUE7QTVDa3NDRjtBMkNwMENJO0VDa0lGLDRIQUFBO0E1Q3NzQ0Y7QTJDeDBDSTtFQ2tJRiw0SEFBQTtBNUMwc0NGO0EyQzUwQ0k7RUNrSUYsNEhBQUE7QTVDOHNDRjtBMkNoMUNJO0VDa0lGLDRIQUFBO0E1Q2t0Q0Y7QTJDcDFDSTtFQ2tJRiw2SEFBQTtBNUNzdENGO0EyQ3gxQ0k7RUNrSUYsNkhBQUE7QTVDMHRDRjtBMkM1MUNJO0VDa0lGLDZIQUFBO0E1Qzh0Q0Y7QTJDaDJDSTtFQ2tJRiw2SEFBQTtBNUNrdUNGO0EyQ3AyQ0k7RUNrSUYsOEhBQUE7QTVDc3VDRjtBMkN4MkNJO0VDa0lGLDhIQUFBO0E1QzB1Q0Y7QTJDNTJDSTtFQ2tJRiw4SEFBQTtBNUM4dUNGO0EyQ2gzQ0k7RUNrSUYsOEhBQUE7QTVDa3ZDRjtBMkNwM0NJO0VDa0lGLDhIQUFBO0E1Q3N2Q0Y7QTJDajNDSTtFQUNFLGFBQUE7QTNDbzNDTjtBNkM5NENFO0VBRUUsaUJBQUE7RUFDQSwwQkFBQTtBN0NnNUNKO0E0Q3B2Q0U7RUFYQSwwSEFBQTtBNUNrd0NGO0E2QzU0Q0k7RUFDRSxpQkFBQTtBN0M4NENOO0E2QzU0Q007RUFDRSwwQkFBQTtBN0M4NENSO0FEajBDRTtFQUNFLFlBQUE7RUFDQSxtQkFBQTtBQ28wQ0o7QW9DbjRDSTtFckNrRUUsa0JBQUE7RUFDQSxnQkFBQTtBQ28wQ047QUQvekNJO0VBQ0UsbUJBQUE7RUFDQSxZQUFBO0FDazBDTjtBRDd6Q0k7RUFDRSxZQUFB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aUI7QWhCbXZFekI7QWdCNXRFTTtFQUNFLGNBdkJlO0FoQnF2RXZCO0FnQnh0RU07RUFDRSxjQTlCZTtBaEJ3dkV2QjtBZ0JydEVNO0VBQ0UsMEJBM0NpQjtBaEJrd0V6QjtBZ0JwdEVNO0VBQ0UsMEJBdENKO0FoQjR2RUo7QWtEendFSTtFQUNFLGNBQUE7QWxENHdFTjtBa0R6d0VJO0VBQ0UsY0FBQTtBbEQyd0VOO0FrRHh3RUk7RUFDRSxjQUFBO0FsRDB3RU47QW1CL3dFRTtFQUNFLDBCQUFBO0FuQmt4RUo7QW1CL3dFRTs7RUFFRSwwQkFBQTtBbkJreEVKO0FtQi93RUU7RUFDRSxvQkFBQTtBbkJreEVKO0FtRG55RUU7RWhDb0JJLDBCQUFBO0FuQmt4RU47QW1EdHlFRTtFaENvQkksMEJBQUE7QW5Ca3hFTjtBbURseUVFO0VoQ2dCSSwwQkFBQTtBbkJxeEVOO0FtRGp5RUU7RWhDWUksMEJBQUE7QW5Cd3hFTjtBbURoeUVFO0VoQ1FJLDBCQUFBO0FuQjJ4RU47QW1CeHdFRTtFQUNFLG9CQUFBO0FuQjJ3RUo7QW1CeHdFRTs7RUFFRSxvQkFBQTtBbkIyd0VKO0FtQnh3RUU7RUFDRSxjQUFBO0FuQjJ3RUo7QThCeHpFSTtFQUNFLDBCQUFBO0E5QjJ6RU47QThCeHpFSTtFQUNFLDBCQUFBO0E5QjB6RU47QThCdnpFSTtFQUNFLDBCQUFBO0E5Qnl6RU47QThCcnpFRTtFQUNFLHlCQUFBO0E5Qnd6RUo7QThCbHpFSTs7Ozs7RUFDRSwrQkFBQTtBOUJ5ekVOO0E4QnB6RUk7RUFDRSwrQkFBQTtBOUJ1ekVOO0FvQm4xRUU7RUFFRSxpQkFBQTtBcEJxMUVKO0E0QzNyRUU7RUFYQSwwSEFBQTtBNUN5c0VGO0FvQnIxRUU7RUFDRSx1QkFBQTtFQUNBLDBCQUFBO0FwQncxRUo7QW9CcjFFTTs7RUFHRSwwQkFBQTtBcEJzMUVSO0FvQmoxRUU7O0VBRUUsMEJBQUE7QXBCbzFFSjtBb0I3MEVJOzs7O0VBQ0UsK0JBQUE7QXBCbTFFTjtBcUIvMkVFO0VBQ0UsaUJBQUE7QXJCazNFSjtBcUIvMkVFOztFQUVFLDBCQUFB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di9GRTtFQUNFLGlCQUFBO0FsQzAvRko7QWtDdi9GRTs7RUFFRSwwQkFBQTtBbEMwL0ZKO0FrQ2wrRkk7RUFDRSxnQkFMSztBbEMwK0ZYO0FpQ3BnR0U7RUFHRSwrQkFBQTtFQUNBLG1CQUFBO0VXNklGLDJIQUFBO0E1Q3kzRkY7QWlDamdHRTtFQUNFLGNBQUE7QWpDb2dHSjtBd0QxaEdBLGtDQUFBO0F4RFdBO0VBQ0UsV0FBQTtBQW1oR0Y7QUFoaEdBO0VBQ0UsWUFYVztFQVlYLGFBWFk7RUFZWixtQkFBQTtFQUNBLGtCQUFBO0VBQ0EsVUFBQTtBQW1oR0Y7QXdEamlHRTtFeERTRjtJQVFJLGlCQUFBO0lBQ0Esa0JBQUE7RUFvaEdGO0FBQ0Y7QUFsaEdFO0VBQ0UsZ0JBQUE7QUFvaEdKO0FBamhHRTtFQUNFLFlBekJrQjtFQTBCbEIsbUNBQUE7RUFDQSxpQkFBQTtFQUNBLGNBQUE7QUFtaEdKO0FBaGhHRTtFQUNFLGdDQUFBO0VBQ0EsaUJBQUE7QUFraEdKIiwiZmlsZSI6ImNhcmRzLWxpc3QuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBZb3UgY2FuIGFkZCBnbG9iYWwgc3R5bGVzIHRvIHRoaXMgZmlsZSwgYW5kIGFsc28gaW1wb3J0IG90aGVyIHN0eWxlIGZpbGVzICovXG5AdXNlICd+QGFuZ3VsYXIvbWF0ZXJpYWwnIGFzIG1hdDtcbkBpbXBvcnQgJ35AYW5ndWxhci9tYXRlcmlhbC90aGVtaW5nJztcbkBpbXBvcnQgdXJsKCcvL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2ljb24/ZmFtaWx5PU1hdGVyaWFsK0ljb25zJyk7XG5cbkBpbmNsdWRlIG1hdC5jb3JlKCk7XG5cbiRtZi1idy1tb2RlbGljYTogbWF0LmRlZmluZS10eXBvZ3JhcGh5LWNvbmZpZyhcbiAgJGZvbnQtZmFtaWx5OiAnQndNb2RlbGljYSwgbW9ub3NwYWNlJyxcbiAgJGhlYWRsaW5lOiBtYXQuZGVmaW5lLXR5cG9ncmFwaHktbGV2ZWwoMzJweCwgNDhweCwgYm9sZClcbik7XG5cbiRtZi1vcGVuLXNhbnM6IG1hdC5kZWZpbmUtdHlwb2dyYXBoeS1jb25maWcoXG4gICRmb250LWZhbWlseTogJ09wZW5TYW5zLCBzYW5zLXNlcmlmJyxcbiAgJGJvZHktMTogbWF0LmRlZmluZS10eXBvZ3JhcGh5LWxldmVsKDE2cHgsIDI0cHgsIG5vcm1hbClcbik7XG5cbkBpbmNsdWRlIG1hdC5hbGwtY29tcG9uZW50LXR5cG9ncmFwaGllcygkbWYtb3Blbi1zYW5zKTtcblxuLm1hdC10eXBvZ3JhcGh5IHtcbiAgaDEsIGgyLCBoMywgaDQsIGg1LCBoNiB7XG4gICAgZm9udC1mYW1pbHk6IG1hdC5mb250LWZhbWlseSgkbWYtYnctbW9kZWxpY2EpO1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICB9XG59XG5cbiRtZi1ncmVlbjogKFxuICA1MDogIzI2ZDlhNixcbiAgMTAwOiAjMjZkOWE2LFxuICAyMDA6ICMyNmQ5YTYsXG4gIDMwMDogIzI2ZDlhNixcbiAgNDAwOiAjMjZkOWE2LFxuICA1MDA6ICMxMGNmOTgsXG4gIDYwMDogIzEwY2Y5OCxcbiAgNzAwOiAjMTBjZjk4LFxuICA4MDA6ICMxMGNmOTgsXG4gIDkwMDogIzEwY2Y5OCxcbiAgQTEwMDogIzA1ODI1ZSxcbiAgQTIwMDogIzA1ODI1ZSxcbiAgQTQwMDogIzA1ODI1ZSxcbiAgQTcwMDogIzA1ODI1ZSxcbiAgY29udHJhc3Q6IChcbiAgICA1MDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDEwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDIwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDMwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDQwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDUwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDYwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDcwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA4MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgOTAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIEExMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICBBMjAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgQTQwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIEE3MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgKVxuKTtcbiRtZi1yZWQ6IChcbiAgNTA6ICNmZmE1OTEsXG4gIDEwMDogI2ZmYTU5MSxcbiAgMjAwOiAjZmZhNTkxLFxuICAzMDA6ICNmZmE1OTEsXG4gIDQwMDogI2ZmYTU5MSxcbiAgNTAwOiAjZmM4Zjc2LFxuICA2MDA6ICNmYzhmNzYsXG4gIDcwMDogI2ZjOGY3NixcbiAgODAwOiAjZmM4Zjc2LFxuICA5MDA6ICNmYzhmNzYsXG4gIEExMDA6ICNhZjU1NDEsXG4gIEEyMDA6ICNhZjU1NDEsXG4gIEE0MDA6ICNhZjU1NDEsXG4gIEE3MDA6ICNhZjU1NDEsXG4gIGNvbnRyYXN0OiAoXG4gICAgNTA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAxMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAyMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAzMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA0MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA1MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA2MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA3MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgODAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDkwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICBBMTAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgQTIwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIEE0MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICBBNzAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gIClcbik7XG4kbWYteWVsbG93OiAoXG4gIDUwOiAjZmZkYjhlLFxuICAxMDA6ICNmZmRiOGUsXG4gIDIwMDogI2ZmZGI4ZSxcbiAgMzAwOiAjZmZkYjhlLFxuICA0MDA6ICNmZmRiOGUsXG4gIDUwMDogI2Y3Y2M3MSxcbiAgNjAwOiAjZjdjYzcxLFxuICA3MDA6ICNmN2NjNzEsXG4gIDgwMDogI2Y3Y2M3MSxcbiAgOTAwOiAjZjdjYzcxLFxuICBBMTAwOiAjYWE4NzNkLFxuICBBMjAwOiAjYWE4NzNkLFxuICBBNDAwOiAjYWE4NzNkLFxuICBBNzAwOiAjYWE4NzNkLFxuICBjb250cmFzdDogKFxuICAgIDUwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMTAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMjAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMzAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgNDAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgNTAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgNjAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgNzAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDgwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA5MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgQTEwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIEEyMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICBBNDAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgQTcwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICApXG4pO1xuJG1mLWJsdWU6IChcbiAgNTA6ICM5MmFkZjcsXG4gIDEwMDogIzY4OTFmZixcbiAgMjAwOiAjNjM4ZGZmLFxuICAzMDA6ICM2ZDkxZjcsXG4gIDQwMDogIzRkN2FmNyxcbiAgNTAwOiAjNDg3NWY1LFxuICA2MDA6ICM0Nzc1ZjUsXG4gIDcwMDogIzQ3NzVmNSxcbiAgODAwOiAjNDQ2ZGY1LFxuICA5MDA6ICM0MTY5ZGIsXG4gIEExMDA6ICMyMDQ0YTgsXG4gIEEyMDA6ICMyMDQ0YTgsXG4gIEE0MDA6ICMyMDQ0YTgsXG4gIEE3MDA6ICMzNTNmNTIsXG4gIGNvbnRyYXN0OiAoXG4gICAgNTA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAxMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAyMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAzMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA0MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA1MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA2MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA3MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgODAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDkwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICBBMTAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgQTIwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIEE0MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICBBNzAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gIClcbik7XG5cbiRwcmltYXJ5VGhlbWU6ICRtZi1ibHVlO1xuJGFjY2VudFRoZW1lOiAkbWYteWVsbG93O1xuJHdhcm5UaGVtZTogJG1mLXJlZDtcbiRzdWNjZXNzVGhlbWU6ICRtZi1ncmVlbjtcbiRlbGV2YXRpb246IDcwMDtcbiRwcmltYXJ5OiBtYXQuZGVmaW5lLXBhbGV0dGUoJHByaW1hcnlUaGVtZSwgJGVsZXZhdGlvbik7XG4kYWNjZW50OiAgbWF0LmRlZmluZS1wYWxldHRlKCRhY2NlbnRUaGVtZSwgJGVsZXZhdGlvbik7XG4kd2FybjogICAgbWF0LmRlZmluZS1wYWxldHRlKCR3YXJuVGhlbWUsICRlbGV2YXRpb24pO1xuJHN1Y2Nlc3M6ICAgIG1hdC5kZWZpbmUtcGFsZXR0ZSgkc3VjY2Vzc1RoZW1lLCAkZWxldmF0aW9uKTtcbiRzdWNjZXNzVGV4dDogICAgbWF0LmRlZmluZS1wYWxldHRlKCRzdWNjZXNzVGhlbWUsIEE3MDApO1xuXG5cbiRtYXQtd2hpdGU6IChcbiAgNTA6ICNmZmZmZmYsXG4gIDEwMDogI2ZmZmZmZixcbiAgMjAwOiAjZmZmZmZmLFxuICAzMDA6ICNmZmZmZmYsXG4gIDQwMDogI2YwZjBmMixcbiAgNTAwOiAjZjlmOWY5LFxuICA2MDA6ICNmYmZiZmIsXG4gIDcwMDogI2Y2ZjZmNixcbiAgODAwOiAjZjRmNGY0LFxuICA5MDA6ICNmNGY3ZjksXG4gIEExMDA6ICNlOGViZWUsXG4gIEEyMDA6ICNjN2M5Y2QsXG4gIEE0MDA6ICM5ZWE0YWUsXG4gIEE3MDA6ICM5YjliOWIsXG4gIGNvbnRyYXN0OiAoXG4gICAgNTA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAxMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAyMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAzMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA0MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA1MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA2MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA3MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgODAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDkwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICBBMTAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgQTIwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIEE0MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICBBNzAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gIClcbik7XG4kbWF0LWJsYWNrOiAoXG4gIDUwOiAjYmZiZmJmLFxuICAxMDA6ICNhZWIyYmEsXG4gIDIwMDogIzk0OTQ5NCxcbiAgMzAwOiAjNzM3MzczLFxuICA0MDA6ICM2MDYwNjAsXG4gIDUwMDogIzYyNjI2MixcbiAgNjAwOiAjNDc0NzQ3LFxuICA3MDA6ICMzNDM0MzQsXG4gIDgwMDogIzI0MjQyNCxcbiAgOTAwOiAjMjMyMzIzLFxuICBBMTAwOiAjMTcxNzE3LFxuICBBMjAwOiAjMTExMTExLFxuICBBNDAwOiAjMGUwZTBlLFxuICBBNzAwOiBibGFjayxcbiAgY29udHJhc3Q6IChcbiAgICA1MDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDEwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDIwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDMwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDQwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDUwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDYwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDcwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA4MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgOTAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIEExMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICBBMjAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgQTQwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIEE3MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgKVxuKTtcblxuJHRoZW1lOiBtYXQuZGVmaW5lLWxpZ2h0LXRoZW1lKCRwcmltYXJ5LCAkYWNjZW50LCAkd2Fybik7XG5cbkBpbmNsdWRlIG1hdC5hbGwtY29tcG9uZW50LXRoZW1lcygkdGhlbWUpO1xuIiwiLy8gVGhpcyBjb250YWlucyBhbGwgb2YgdGhlIHN0eWxlcyBmb3IgdGhlIGJhZGdlXG4vLyByYXRoZXIgdGhhbiBqdXN0IHRoZSBjb2xvci90aGVtZSBiZWNhdXNlIG9mXG4vLyBubyBzdHlsZSBzaGVldCBzdXBwb3J0IGZvciBkaXJlY3RpdmVzLlxuQHVzZSAnc2Fzczpjb2xvcic7XG5AdXNlICdzYXNzOm1hcCc7XG5AdXNlICdzYXNzOm1ldGEnO1xuQHVzZSAnLi4vY29yZS90aGVtaW5nL3RoZW1pbmcnO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHknO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHktdXRpbHMnO1xuQHVzZSAnLi4vLi4vY2RrL2ExMXknO1xuXG4kZm9udC1zaXplOiAxMnB4O1xuJGZvbnQtd2VpZ2h0OiA2MDA7XG4kZGVmYXVsdC1zaXplOiAyMnB4ICFkZWZhdWx0O1xuJHNtYWxsLXNpemU6ICRkZWZhdWx0LXNpemUgLSA2O1xuJGxhcmdlLXNpemU6ICRkZWZhdWx0LXNpemUgKyA2O1xuXG4vLyBNaXhpbiBmb3IgYnVpbGRpbmcgb2Zmc2V0IGdpdmVuIGRpZmZlcmVudCBzaXplc1xuQG1peGluIF9iYWRnZS1zaXplKCRzaXplKSB7XG4gIC5tYXQtYmFkZ2UtY29udGVudCB7XG4gICAgd2lkdGg6ICRzaXplO1xuICAgIGhlaWdodDogJHNpemU7XG4gICAgbGluZS1oZWlnaHQ6ICRzaXplO1xuICB9XG5cbiAgJi5tYXQtYmFkZ2UtYWJvdmUge1xuICAgIC5tYXQtYmFkZ2UtY29udGVudCB7XG4gICAgICB0b3A6IC0kc2l6ZSAvIDI7XG4gICAgfVxuICB9XG5cbiAgJi5tYXQtYmFkZ2UtYmVsb3cge1xuICAgIC5tYXQtYmFkZ2UtY29udGVudCB7XG4gICAgICBib3R0b206IC0kc2l6ZSAvIDI7XG4gICAgfVxuICB9XG5cbiAgJi5tYXQtYmFkZ2UtYmVmb3JlIHtcbiAgICAubWF0LWJhZGdlLWNvbnRlbnQge1xuICAgICAgbGVmdDogLSRzaXplO1xuICAgIH1cbiAgfVxuXG4gIFtkaXI9J3J0bCddICYubWF0LWJhZGdlLWJlZm9yZSB7XG4gICAgLm1hdC1iYWRnZS1jb250ZW50IHtcbiAgICAgIGxlZnQ6IGF1dG87XG4gICAgICByaWdodDogLSRzaXplO1xuICAgIH1cbiAgfVxuXG4gICYubWF0LWJhZGdlLWFmdGVyIHtcbiAgICAubWF0LWJhZGdlLWNvbnRlbnQge1xuICAgICAgcmlnaHQ6IC0kc2l6ZTtcbiAgICB9XG4gIH1cblxuICBbZGlyPSdydGwnXSAmLm1hdC1iYWRnZS1hZnRlciB7XG4gICAgLm1hdC1iYWRnZS1jb250ZW50IHtcbiAgICAgIHJpZ2h0OiBhdXRvO1xuICAgICAgbGVmdDogLSRzaXplO1xuICAgIH1cbiAgfVxuXG4gICYubWF0LWJhZGdlLW92ZXJsYXAge1xuICAgICYubWF0LWJhZGdlLWJlZm9yZSB7XG4gICAgICAubWF0LWJhZGdlLWNvbnRlbnQge1xuICAgICAgICBsZWZ0OiAtJHNpemUgLyAyO1xuICAgICAgfVxuICAgIH1cblxuICAgIFtkaXI9J3J0bCddICYubWF0LWJhZGdlLWJlZm9yZSB7XG4gICAgICAubWF0LWJhZGdlLWNvbnRlbnQge1xuICAgICAgICBsZWZ0OiBhdXRvO1xuICAgICAgICByaWdodDogLSRzaXplIC8gMjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLm1hdC1iYWRnZS1hZnRlciB7XG4gICAgICAubWF0LWJhZGdlLWNvbnRlbnQge1xuICAgICAgICByaWdodDogLSRzaXplIC8gMjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBbZGlyPSdydGwnXSAmLm1hdC1iYWRnZS1hZnRlciB7XG4gICAgICAubWF0LWJhZGdlLWNvbnRlbnQge1xuICAgICAgICByaWdodDogYXV0bztcbiAgICAgICAgbGVmdDogLSRzaXplIC8gMjtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGNvbG9yKCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAkYWNjZW50OiBtYXAuZ2V0KCRjb25maWcsIGFjY2VudCk7XG4gICR3YXJuOiBtYXAuZ2V0KCRjb25maWcsIHdhcm4pO1xuICAkcHJpbWFyeTogbWFwLmdldCgkY29uZmlnLCBwcmltYXJ5KTtcbiAgJGJhY2tncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgYmFja2dyb3VuZCk7XG4gICRmb3JlZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGZvcmVncm91bmQpO1xuXG4gIC5tYXQtYmFkZ2UtY29udGVudCB7XG4gICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkcHJpbWFyeSwgZGVmYXVsdC1jb250cmFzdCk7XG4gICAgYmFja2dyb3VuZDogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRwcmltYXJ5KTtcblxuICAgIEBpbmNsdWRlIGExMXkuaGlnaC1jb250cmFzdChhY3RpdmUsIG9mZikge1xuICAgICAgb3V0bGluZTogc29saWQgMXB4O1xuICAgICAgYm9yZGVyLXJhZGl1czogMDtcbiAgICB9XG4gIH1cblxuICAubWF0LWJhZGdlLWFjY2VudCB7XG4gICAgLm1hdC1iYWRnZS1jb250ZW50IHtcbiAgICAgIGJhY2tncm91bmQ6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYWNjZW50KTtcbiAgICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGFjY2VudCwgZGVmYXVsdC1jb250cmFzdCk7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1iYWRnZS13YXJuIHtcbiAgICAubWF0LWJhZGdlLWNvbnRlbnQge1xuICAgICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkd2FybiwgZGVmYXVsdC1jb250cmFzdCk7XG4gICAgICBiYWNrZ3JvdW5kOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHdhcm4pO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtYmFkZ2Uge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgfVxuXG4gIC5tYXQtYmFkZ2UtaGlkZGVuIHtcbiAgICAubWF0LWJhZGdlLWNvbnRlbnQge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gIH1cblxuICAubWF0LWJhZGdlLWRpc2FibGVkIHtcbiAgICAubWF0LWJhZGdlLWNvbnRlbnQge1xuICAgICAgJGFwcC1iYWNrZ3JvdW5kOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGJhY2tncm91bmQsICdiYWNrZ3JvdW5kJyk7XG4gICAgICAkYmFkZ2UtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgZGlzYWJsZWQtYnV0dG9uKTtcblxuICAgICAgLy8gVGhlIGRpc2FibGVkIGNvbG9yIHVzdWFsbHkgaGFzIHNvbWUga2luZCBvZiBvcGFjaXR5LCBidXQgYmVjYXVzZSB0aGUgYmFkZ2UgaXMgb3ZlcmxheWVkXG4gICAgICAvLyBvbiB0b3Agb2Ygc29tZXRoaW5nIGVsc2UsIGl0IHdvbid0IGxvb2sgZ29vZCBpZiBpdCdzIG9wYXF1ZS4gSWYgaXQgaXMgYSBjb2xvciAqdHlwZSosXG4gICAgICAvLyB3ZSBjb252ZXJ0IGl0IGludG8gYSBzb2xpZCBjb2xvciBieSB0YWtpbmcgdGhlIG9wYWNpdHkgZnJvbSB0aGUgcmdiYSB2YWx1ZSBhbmQgdXNpbmdcbiAgICAgIC8vIHRoZSB2YWx1ZSB0byBkZXRlcm1pbmUgdGhlIHBlcmNlbnRhZ2Ugb2YgdGhlIGJhY2tncm91bmQgdG8gcHV0IGludG8gZm9yZWdyb3VuZCB3aGVuXG4gICAgICAvLyBtaXhpbmcgdGhlIGNvbG9ycyB0b2dldGhlci5cbiAgICAgIEBpZiAobWV0YS50eXBlLW9mKCRiYWRnZS1jb2xvcikgPT0gY29sb3IgYW5kIG1ldGEudHlwZS1vZigkYXBwLWJhY2tncm91bmQpID09IGNvbG9yKSB7XG4gICAgICAgICRiYWRnZS1vcGFjaXR5OiBvcGFjaXR5KCRiYWRnZS1jb2xvcik7XG4gICAgICAgIGJhY2tncm91bmQ6IGNvbG9yLm1peCgkYXBwLWJhY2tncm91bmQsIHJnYmEoJGJhZGdlLWNvbG9yLCAxKSwgKDEgLSAkYmFkZ2Utb3BhY2l0eSkgKiAxMDAlKTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgYmFja2dyb3VuZDogJGJhZGdlLWNvbG9yO1xuICAgICAgfVxuXG4gICAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBkaXNhYmxlZC10ZXh0KTtcbiAgICB9XG4gIH1cblxuICAubWF0LWJhZGdlLWNvbnRlbnQge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMjAwbXMgZWFzZS1pbi1vdXQ7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgwLjYpO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgfVxuXG4gIC5uZy1hbmltYXRlLWRpc2FibGVkIC5tYXQtYmFkZ2UtY29udGVudCxcbiAgLm1hdC1iYWRnZS1jb250ZW50Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIHtcbiAgICB0cmFuc2l0aW9uOiBub25lO1xuICB9XG5cbiAgLy8gVGhlIGFjdGl2ZSBjbGFzcyBpcyBhZGRlZCBhZnRlciB0aGUgZWxlbWVudCBpcyBhZGRlZFxuICAvLyBzbyBpdCBjYW4gYW5pbWF0ZSBzY2FsZSB0byBkZWZhdWx0XG4gIC5tYXQtYmFkZ2UtY29udGVudC5tYXQtYmFkZ2UtYWN0aXZlIHtcbiAgICAvLyBTY2FsZSB0byBgbm9uZWAgaW5zdGVhZCBvZiBgMWAgdG8gYXZvaWQgYmx1cnJ5IHRleHQgaW4gc29tZSBicm93c2Vycy5cbiAgICB0cmFuc2Zvcm06IG5vbmU7XG4gIH1cblxuICAubWF0LWJhZGdlLXNtYWxsIHtcbiAgICBAaW5jbHVkZSBfYmFkZ2Utc2l6ZSgkc21hbGwtc2l6ZSk7XG4gIH1cbiAgLm1hdC1iYWRnZS1tZWRpdW0ge1xuICAgIEBpbmNsdWRlIF9iYWRnZS1zaXplKCRkZWZhdWx0LXNpemUpO1xuICB9XG4gIC5tYXQtYmFkZ2UtbGFyZ2Uge1xuICAgIEBpbmNsdWRlIF9iYWRnZS1zaXplKCRsYXJnZS1zaXplKTtcbiAgfVxufVxuXG5AbWl4aW4gdHlwb2dyYXBoeSgkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHR5cG9ncmFwaHkucHJpdmF0ZS10eXBvZ3JhcGh5LXRvLTIwMTQtY29uZmlnKFxuICAgICAgdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJGNvbmZpZy1vci10aGVtZSkpO1xuICAubWF0LWJhZGdlLWNvbnRlbnQge1xuICAgIGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQ7XG4gICAgZm9udC1zaXplOiAkZm9udC1zaXplO1xuICAgIGZvbnQtZmFtaWx5OiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtZmFtaWx5KCRjb25maWcpO1xuICB9XG5cbiAgLm1hdC1iYWRnZS1zbWFsbCAubWF0LWJhZGdlLWNvbnRlbnQge1xuICAgIC8vIFNldCB0aGUgZm9udCBzaXplIHRvIDc1JSBvZiB0aGUgb3JpZ2luYWwuXG4gICAgZm9udC1zaXplOiAkZm9udC1zaXplICogMC43NTtcbiAgfVxuXG4gIC5tYXQtYmFkZ2UtbGFyZ2UgLm1hdC1iYWRnZS1jb250ZW50IHtcbiAgICBmb250LXNpemU6ICRmb250LXNpemUgKiAyO1xuICB9XG59XG5cbkBtaXhpbiBfZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZykge1xuICAkdGhlbWU6IHRoZW1pbmcucHJpdmF0ZS1sZWdhY3ktZ2V0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICBAaW5jbHVkZSB0aGVtaW5nLnByaXZhdGUtY2hlY2stZHVwbGljYXRlLXRoZW1lLXN0eWxlcygkdGhlbWUsICdtYXQtYmFkZ2UnKSB7XG4gICAgJGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJHRoZW1lKTtcbiAgICAkZGVuc2l0eTogdGhlbWluZy5nZXQtZGVuc2l0eS1jb25maWcoJHRoZW1lKTtcbiAgICAkdHlwb2dyYXBoeTogdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJHRoZW1lKTtcblxuICAgIEBpZiAkY29sb3IgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBjb2xvcigkY29sb3IpO1xuICAgIH1cbiAgICBAaWYgJGRlbnNpdHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBfZGVuc2l0eSgkZGVuc2l0eSk7XG4gICAgfVxuICAgIEBpZiAkdHlwb2dyYXBoeSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIHR5cG9ncmFwaHkoJHR5cG9ncmFwaHkpO1xuICAgIH1cbiAgfVxufVxuIiwiQHVzZSAnfkBhbmd1bGFyL21hdGVyaWFsJyBhcyBtYXQ7XG5AaW1wb3J0IFwiLi4vLi4vLi4vdGhlbWVcIjtcbkBpbXBvcnQgXCIuLi8uLi8uLi92YXJpYWJsZXNcIjtcbkBpbXBvcnQgXCIuLi8uLi8uLi9icmVha3BvaW50c1wiO1xuXG4kY2FyZC13aWR0aDogMzQwcHg7XG4kY2FyZC1oZWlnaHQ6IDIyMHB4O1xuJGNhcmQtLWhlYWRlci1oZWlnaHQ6IDYwcHg7XG4kY2FyZC0tZm9vdGVyLWhlaWdodDogNjBweDtcblxuXG4ubGlzdC1jYXJkcy13cmFwcGVyIHtcbiAgd2lkdGg6IDEwMCU7XG59XG5cbi5saXN0LWNhcmQge1xuICB3aWR0aDogJGNhcmQtd2lkdGg7XG4gIGhlaWdodDogJGNhcmQtaGVpZ2h0O1xuICBtYXJnaW4tYm90dG9tOiAzN3B4O1xuICBtYXJnaW4tcmlnaHQ6IDM3cHg7XG4gIHBhZGRpbmc6IDA7XG5cbiAgQGluY2x1ZGUgZm9yLXRhYmxldCB7XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICB9XG5cbiAgLm1hdC1jYXJkLWNvbnRlbnQge1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gIH1cblxuICAmLS1oZWFkZXIge1xuICAgIGhlaWdodDogJGNhcmQtLWhlYWRlci1oZWlnaHQ7XG4gICAgYmFja2dyb3VuZDogbWF0LmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHN1Y2Nlc3MsIGRlZmF1bHQsIDAuNSk7XG4gICAgZm9udC1zaXplOiAzLjVyZW07XG4gICAgY29sb3I6IG1hdC5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRzdWNjZXNzVGV4dCwgZGVmYXVsdCwgMSk7XG4gIH1cblxuICAmLS1kYXRhIHtcbiAgICBoZWlnaHQ6IHZhcigtLWNhcmQtLWRhdGEtaGVpZ2h0KTtcbiAgICBmb250LXNpemU6IDAuOXJlbTtcbiAgfVxufVxuXG4iLCJAdXNlICdzYXNzOm1hcCc7XG5AdXNlICd0eXBvZ3JhcGh5LXV0aWxzJztcbkB1c2UgJy4uL3RoZW1pbmcvdGhlbWluZyc7XG5cbi8vLyBEZWZpbmVzIGEgdHlwb2dyYXBoeSBsZXZlbCBmcm9tIHRoZSBNYXRlcmlhbCBEZXNpZ24gc3BlYy5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGZvbnQtc2l6ZSBUaGUgZm9udC1zaXplIGZvciB0aGlzIGxldmVsLlxuLy8vIEBwYXJhbSB7U3RyaW5nIHwgTnVtYmVyfSAkbGluZS1oZWlnaHQgVGhlIGxpbmUtaGVpZ2h0IGZvciB0aGlzIGxldmVsLlxuLy8vIEBwYXJhbSB7U3RyaW5nIHwgTnVtYmVyfSAkZm9udC13ZWlnaHQgVGhlIGZvbnQtd2VpZ2h0IGZvciB0aGlzIGxldmVsLlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkZm9udC1mYW1pbHkgVGhlIGZvbnQtZmFtaWx5IGZvciB0aGlzIGxldmVsLlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkbGV0dGVyLXNwYWNpbmcgVGhlIGxldHRlci1zcGFjaW5nIGZvciB0aGlzIGxldmVsLlxuLy8vIEByZXR1cm5zIHtNYXB9IEEgbWFwIHJlcHJlc2VudGluZyB0aGUgZGVmaW5pdGlvbiBvZiB0aGlzIHR5cHBvZ3JhcGhpYyBsZXZlbC5cbkBmdW5jdGlvbiBkZWZpbmUtdHlwb2dyYXBoeS1sZXZlbChcbiAgJGZvbnQtc2l6ZSxcbiAgJGxpbmUtaGVpZ2h0OiAkZm9udC1zaXplLFxuICAkZm9udC13ZWlnaHQ6IDQwMCxcbiAgJGZvbnQtZmFtaWx5OiBudWxsLFxuICAkbGV0dGVyLXNwYWNpbmc6IG5vcm1hbCkge1xuXG4gIEByZXR1cm4gKFxuICAgIGZvbnQtc2l6ZTogJGZvbnQtc2l6ZSxcbiAgICBsaW5lLWhlaWdodDogJGxpbmUtaGVpZ2h0LFxuICAgIGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQsXG4gICAgZm9udC1mYW1pbHk6ICRmb250LWZhbWlseSxcbiAgICBsZXR0ZXItc3BhY2luZzogJGxldHRlci1zcGFjaW5nXG4gICk7XG59XG5cbi8vLyBEZWZpbmVzIGEgY29sbGVjdGlvbiBvZiB0eXBvZ3JhcGh5IGxldmVscyB0byBjb25maWd1cmUgdHlwb2dyYXBoeSBmb3IgYW4gYXBwbGljYXRpb24uXG4vLy8gQW55IGxldmVsIG5vdCBzcGVjaWZpZWQgZGVmYXVsdHMgdG8gdGhlIHZhbHVlcyBkZWZpbmVkIGluIHRoZSBNYXRlcmlhbCBEZXNpZ24gc3BlY2lmaWNhdGlvbjpcbi8vLyBodHRwczovL21hdGVyaWFsLmlvL2d1aWRlbGluZXMvc3R5bGUvdHlwb2dyYXBoeS5odG1sLlxuLy8vXG4vLy8gTm90ZSB0aGF0IHRoZSBNYXRlcmlhbCBEZXNpZ24gc3BlY2lmaWNhdGlvbiBkb2VzIG5vdCBkZXNjcmliZSBleHBsaWNpdCBsZXR0ZXItc3BhY2luZyB2YWx1ZXMuXG4vLy8gVGhlIHZhbHVlcyBoZXJlIGNvbWUgZnJvbSByZXZlcnNlIGVuZ2luZWVyaW5nIHRoZSBNYXRlcmlhbCBEZXNpZ24gZXhhbXBsZXMuXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRmb250LWZhbWlseSBEZWZhdWx0IGZvbnQtZmFtaWx5IGZvciBsZXZlbHMgdGhhdCBkb24ndCBzcGVjaWZ5IGZvbnQtZmFtaWx5LlxuLy8vIEBwYXJhbSB7TWFwfSAkZGlzcGxheS00IENvbmZpZ3VyYXRpb24gZm9yIHRoZSBcImRpc3BsYXktNFwiIHR5cG9ncmFwaGljIGxldmVsLlxuLy8vIEBwYXJhbSB7TWFwfSAkZGlzcGxheS0zIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBcImRpc3BsYXktM1wiIHR5cG9ncmFwaGljIGxldmVsLlxuLy8vIEBwYXJhbSB7TWFwfSAkZGlzcGxheS0yIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBcImRpc3BsYXktMlwiIHR5cG9ncmFwaGljIGxldmVsLlxuLy8vIEBwYXJhbSB7TWFwfSAkZGlzcGxheS0xIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBcImRpc3BsYXktMVwiIHR5cG9ncmFwaGljIGxldmVsLlxuLy8vIEBwYXJhbSB7TWFwfSAkaGVhZGxpbmUgQ29uZmlndXJhdGlvbiBmb3IgdGhlIFwiaGVhZGxpbmVcIiB0eXBvZ3JhcGhpYyBsZXZlbC5cbi8vLyBAcGFyYW0ge01hcH0gJHRpdGxlIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBcInRpdGxlXCIgdHlwb2dyYXBoaWMgbGV2ZWwuXG4vLy8gQHBhcmFtIHtNYXB9ICRzdWJoZWFkaW5nLTIgQ29uZmlndXJhdGlvbiBmb3IgdGhlIFwic3ViaGVhZGluZy0yXCIgdHlwb2dyYXBoaWMgbGV2ZWwuXG4vLy8gQHBhcmFtIHtNYXB9ICRzdWJoZWFkaW5nLTEgQ29uZmlndXJhdGlvbiBmb3IgdGhlIFwic3ViaGVhZGluZy0xXCIgdHlwb2dyYXBoaWMgbGV2ZWwuXG4vLy8gQHBhcmFtIHtNYXB9ICRib2R5LTIgQ29uZmlndXJhdGlvbiBmb3IgdGhlIFwiYm9keS0yXCIgdHlwb2dyYXBoaWMgbGV2ZWwuXG4vLy8gQHBhcmFtIHtNYXB9ICRib2R5LTEgQ29uZmlndXJhdGlvbiBmb3IgdGhlIFwiYm9keS0xXCIgdHlwb2dyYXBoaWMgbGV2ZWwuXG4vLy8gQHBhcmFtIHtNYXB9ICRjYXB0aW9uIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBcImNhcHRpb25cIiB0eXBvZ3JhcGhpYyBsZXZlbC5cbi8vLyBAcGFyYW0ge01hcH0gJGJ1dHRvbiBDb25maWd1cmF0aW9uIGZvciB0aGUgXCJidXR0b25cIiB0eXBvZ3JhcGhpYyBsZXZlbC5cbi8vLyBAcGFyYW0ge01hcH0gJGlucHV0IENvbmZpZ3VyYXRpb24gZm9yIHRoZSBcImlucHV0XCIgdHlwb2dyYXBoaWMgbGV2ZWwuXG4vLy8gQHJldHVybnMge01hcH0gQSB0eXBvZ3JhcGh5IGNvbmZpZyBmb3IgdGhlIGFwcGxpY2F0aW9uLlxuQGZ1bmN0aW9uIGRlZmluZS10eXBvZ3JhcGh5LWNvbmZpZyhcbiAgJGZvbnQtZmFtaWx5OiAgICdSb2JvdG8sIFwiSGVsdmV0aWNhIE5ldWVcIiwgc2Fucy1zZXJpZicsXG4gICRkaXNwbGF5LTQ6ICAgICBkZWZpbmUtdHlwb2dyYXBoeS1sZXZlbCgxMTJweCwgMTEycHgsIDMwMCwgJGxldHRlci1zcGFjaW5nOiAtMC4wNWVtKSxcbiAgJGRpc3BsYXktMzogICAgIGRlZmluZS10eXBvZ3JhcGh5LWxldmVsKDU2cHgsIDU2cHgsIDQwMCwgJGxldHRlci1zcGFjaW5nOiAtMC4wMmVtKSxcbiAgJGRpc3BsYXktMjogICAgIGRlZmluZS10eXBvZ3JhcGh5LWxldmVsKDQ1cHgsIDQ4cHgsIDQwMCwgJGxldHRlci1zcGFjaW5nOiAtMC4wMDVlbSksXG4gICRkaXNwbGF5LTE6ICAgICBkZWZpbmUtdHlwb2dyYXBoeS1sZXZlbCgzNHB4LCA0MHB4LCA0MDApLFxuICAkaGVhZGxpbmU6ICAgICAgZGVmaW5lLXR5cG9ncmFwaHktbGV2ZWwoMjRweCwgMzJweCwgNDAwKSxcbiAgJHRpdGxlOiAgICAgICAgIGRlZmluZS10eXBvZ3JhcGh5LWxldmVsKDIwcHgsIDMycHgsIDUwMCksXG4gICRzdWJoZWFkaW5nLTI6ICBkZWZpbmUtdHlwb2dyYXBoeS1sZXZlbCgxNnB4LCAyOHB4LCA0MDApLFxuICAkc3ViaGVhZGluZy0xOiAgZGVmaW5lLXR5cG9ncmFwaHktbGV2ZWwoMTVweCwgMjRweCwgNDAwKSxcbiAgJGJvZHktMjogICAgICAgIGRlZmluZS10eXBvZ3JhcGh5LWxldmVsKDE0cHgsIDI0cHgsIDUwMCksXG4gICRib2R5LTE6ICAgICAgICBkZWZpbmUtdHlwb2dyYXBoeS1sZXZlbCgxNHB4LCAyMHB4LCA0MDApLFxuICAkY2FwdGlvbjogICAgICAgZGVmaW5lLXR5cG9ncmFwaHktbGV2ZWwoMTJweCwgMjBweCwgNDAwKSxcbiAgJGJ1dHRvbjogICAgICAgIGRlZmluZS10eXBvZ3JhcGh5LWxldmVsKDE0cHgsIDE0cHgsIDUwMCksXG4gIC8vIExpbmUtaGVpZ2h0IG11c3QgYmUgdW5pdC1sZXNzIGZyYWN0aW9uIG9mIHRoZSBmb250LXNpemUuXG4gICRpbnB1dDogICAgICAgICBkZWZpbmUtdHlwb2dyYXBoeS1sZXZlbChpbmhlcml0LCAxLjEyNSwgNDAwKVxuKSB7XG5cbiAgLy8gRGVjbGFyZSBhbiBpbml0aWFsIG1hcCB3aXRoIGFsbCBvZiB0aGUgbGV2ZWxzLlxuICAkY29uZmlnOiAoXG4gICAgZGlzcGxheS00OiAgICAgICRkaXNwbGF5LTQsXG4gICAgZGlzcGxheS0zOiAgICAgICRkaXNwbGF5LTMsXG4gICAgZGlzcGxheS0yOiAgICAgICRkaXNwbGF5LTIsXG4gICAgZGlzcGxheS0xOiAgICAgICRkaXNwbGF5LTEsXG4gICAgaGVhZGxpbmU6ICAgICAgICRoZWFkbGluZSxcbiAgICB0aXRsZTogICAgICAgICAgJHRpdGxlLFxuICAgIHN1YmhlYWRpbmctMjogICAkc3ViaGVhZGluZy0yLFxuICAgIHN1YmhlYWRpbmctMTogICAkc3ViaGVhZGluZy0xLFxuICAgIGJvZHktMjogICAgICAgICAkYm9keS0yLFxuICAgIGJvZHktMTogICAgICAgICAkYm9keS0xLFxuICAgIGNhcHRpb246ICAgICAgICAkY2FwdGlvbixcbiAgICBidXR0b246ICAgICAgICAgJGJ1dHRvbixcbiAgICBpbnB1dDogICAgICAgICAgJGlucHV0LFxuICApO1xuXG4gIC8vIExvb3AgdGhyb3VnaCB0aGUgbGV2ZWxzIGFuZCBzZXQgdGhlIGBmb250LWZhbWlseWAgb2YgdGhlIG9uZXMgdGhhdCBkb24ndCBoYXZlIG9uZSB0byB0aGUgYmFzZS5cbiAgLy8gTm90ZSB0aGF0IFNhc3MgY2FuJ3QgbW9kaWZ5IG1hcHMgaW4gcGxhY2UsIHdoaWNoIG1lYW5zIHRoYXQgd2UgbmVlZCB0byBtZXJnZSBhbmQgcmUtYXNzaWduLlxuICBAZWFjaCAka2V5LCAkbGV2ZWwgaW4gJGNvbmZpZyB7XG4gICAgQGlmIG1hcC5nZXQoJGxldmVsLCBmb250LWZhbWlseSkgPT0gbnVsbCB7XG4gICAgICAkbmV3LWxldmVsOiBtYXAubWVyZ2UoJGxldmVsLCAoZm9udC1mYW1pbHk6ICRmb250LWZhbWlseSkpO1xuICAgICAgJGNvbmZpZzogbWFwLm1lcmdlKCRjb25maWcsICgka2V5OiAkbmV3LWxldmVsKSk7XG4gICAgfVxuICB9XG5cbiAgLy8gQWRkIHRoZSBiYXNlIGZvbnQgZmFtaWx5IHRvIHRoZSBjb25maWcuXG4gIEByZXR1cm4gbWFwLm1lcmdlKCRjb25maWcsIChmb250LWZhbWlseTogJGZvbnQtZmFtaWx5KSk7XG59XG5cbi8vIFdoZXRoZXIgYSBjb25maWcgaXMgZm9yIHRoZSBNYXRlcmlhbCBEZXNpZ24gMjAxOCB0eXBvZ3JhcGh5IHN5c3RlbS5cbkBmdW5jdGlvbiBwcml2YXRlLXR5cG9ncmFwaHktaXMtMjAxOC1jb25maWcoJGNvbmZpZykge1xuICBAcmV0dXJuIG1hcC5nZXQoJGNvbmZpZywgaGVhZGxpbmUtMSkgIT0gbnVsbDtcbn1cblxuLy8gV2hldGhlciBhIGNvbmZpZyBpcyBmb3IgdGhlIE1hdGVyaWFsIERlc2lnbiAyMDE0IHR5cG9ncmFwaHkgc3lzdGVtLlxuQGZ1bmN0aW9uIHByaXZhdGUtdHlwb2dyYXBoeS1pcy0yMDE0LWNvbmZpZygkY29uZmlnKSB7XG4gIEByZXR1cm4gbWFwLmdldCgkY29uZmlnLCBoZWFkbGluZSkgIT0gbnVsbDtcbn1cblxuLy8gR2l2ZW4gYSBjb25maWcgZm9yIGVpdGhlciB0aGUgMjAxNCBvciAyMDE4IE1hdGVyaWFsIERlc2lnbiB0eXBvZ3JhcGh5IHN5c3RlbSxcbi8vIHByb2R1Y2VzIGEgbm9ybWFsaXplZCB0eXBvZ3JhcGh5IGNvbmZpZyBmb3IgdGhlIDIwMTQgTWF0ZXJpYWwgRGVzaWduIHR5cG9ncmFwaHkgc3lzdGVtLlxuLy8gMjAxNCAtIGh0dHBzOi8vbWF0ZXJpYWwuaW8vYXJjaGl2ZS9ndWlkZWxpbmVzL3N0eWxlL3R5cG9ncmFwaHkuaHRtbCN0eXBvZ3JhcGh5LXN0eWxlc1xuLy8gMjAxOCAtIGh0dHBzOi8vbWF0ZXJpYWwuaW8vZGVzaWduL3R5cG9ncmFwaHkvdGhlLXR5cGUtc3lzdGVtLmh0bWwjdHlwZS1zY2FsZVxuLy9cbi8vIENvbXBvbmVudHMgdXNpbmcgdGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgbWlncmF0ZWQgdG8gbm9ybWFsaXplIHRvIHRoZSAyMDE4IHN0eWxlIGNvbmZpZyBpbnN0ZWFkLlxuLy8gTmV3IGNvbXBvbmVudHMgc2hvdWxkIG5vdCB1c2UgdGhpcyBmdW5jdGlvbi5cbkBmdW5jdGlvbiBwcml2YXRlLXR5cG9ncmFwaHktdG8tMjAxNC1jb25maWcoJGNvbmZpZykge1xuICBAaWYgJGNvbmZpZyA9PSBudWxsIHtcbiAgICBAcmV0dXJuIG51bGw7XG4gIH1cbiAgQGlmIG5vdCBwcml2YXRlLXR5cG9ncmFwaHktaXMtMjAxNC1jb25maWcoJGNvbmZpZykge1xuICAgICRhcmdzOiAoXG4gICAgICAgIGRpc3BsYXktNDogbWFwLmdldCgkY29uZmlnLCBoZWFkbGluZS0xKSxcbiAgICAgICAgZGlzcGxheS0zOiBtYXAuZ2V0KCRjb25maWcsIGhlYWRsaW5lLTIpLFxuICAgICAgICBkaXNwbGF5LTI6IG1hcC5nZXQoJGNvbmZpZywgaGVhZGxpbmUtMyksXG4gICAgICAgIGRpc3BsYXktMTogbWFwLmdldCgkY29uZmlnLCBoZWFkbGluZS00KSxcbiAgICAgICAgaGVhZGxpbmU6IG1hcC5nZXQoJGNvbmZpZywgaGVhZGxpbmUtNSksXG4gICAgICAgIHRpdGxlOiBtYXAuZ2V0KCRjb25maWcsIGhlYWRsaW5lLTYpLFxuICAgICAgICBzdWJoZWFkaW5nLTI6IG1hcC5nZXQoJGNvbmZpZywgc3VidGl0bGUtMSksXG4gICAgICAgIHN1YmhlYWRpbmctMTogbWFwLmdldCgkY29uZmlnLCBzdWJ0aXRsZS0yKSxcbiAgICAgICAgYm9keS0yOiBtYXAuZ2V0KCRjb25maWcsIGJvZHktMSksXG4gICAgICAgIGJvZHktMTogbWFwLmdldCgkY29uZmlnLCBib2R5LTIpLFxuICAgICAgICBidXR0b246IG1hcC5nZXQoJGNvbmZpZywgYnV0dG9uKSxcbiAgICAgICAgY2FwdGlvbjogbWFwLmdldCgkY29uZmlnLCBjYXB0aW9uKSxcbiAgICApO1xuICAgICRub24tbnVsbC1hcmdzOiAoKTtcbiAgICBAZWFjaCAka2V5LCAkdmFsdWUgaW4gJGFyZ3Mge1xuICAgICAgQGlmICR2YWx1ZSAhPSBudWxsIHtcbiAgICAgICAgJG5vbi1udWxsLWFyZ3M6IG1hcC5tZXJnZSgkbm9uLW51bGwtYXJncywgKCRrZXk6ICR2YWx1ZSkpO1xuICAgICAgfVxuICAgIH1cbiAgICBAcmV0dXJuIGRlZmluZS10eXBvZ3JhcGh5LWNvbmZpZygkbm9uLW51bGwtYXJncy4uLik7XG4gIH1cbiAgQHJldHVybiAkY29uZmlnO1xufVxuXG4vLyBHaXZlbiBhIGNvbmZpZyBmb3IgZWl0aGVyIHRoZSAyMDE0IG9yIDIwMTggTWF0ZXJpYWwgRGVzaWduIHR5cG9ncmFwaHkgc3lzdGVtLFxuLy8gcHJvZHVjZXMgYSBub3JtYWxpemVkIHR5cG9ncmFwaHkgY29uZmlnIGZvciB0aGUgMjAxOCBNYXRlcmlhbCBEZXNpZ24gdHlwb2dyYXBoeSBzeXN0ZW0uXG4vLyAyMDE0IC0gaHR0cHM6Ly9tYXRlcmlhbC5pby9hcmNoaXZlL2d1aWRlbGluZXMvc3R5bGUvdHlwb2dyYXBoeS5odG1sI3R5cG9ncmFwaHktc3R5bGVzXG4vLyAyMDE4IC0gaHR0cHM6Ly9tYXRlcmlhbC5pby9kZXNpZ24vdHlwb2dyYXBoeS90aGUtdHlwZS1zeXN0ZW0uaHRtbCN0eXBlLXNjYWxlXG5AZnVuY3Rpb24gcHJpdmF0ZS10eXBvZ3JhcGh5LXRvLTIwMTgtY29uZmlnKCRjb25maWcpIHtcbiAgQGlmICRjb25maWcgPT0gbnVsbCB7XG4gICAgQHJldHVybiBudWxsO1xuICB9XG4gIEBpZiBub3QgcHJpdmF0ZS10eXBvZ3JhcGh5LWlzLTIwMTgtY29uZmlnKCRjb25maWcpIHtcbiAgICBAcmV0dXJuIChcbiAgICAgICAgaGVhZGxpbmUtMTogbWFwLmdldCgkY29uZmlnLCBkaXNwbGF5LTQpLFxuICAgICAgICBoZWFkbGluZS0yOiBtYXAuZ2V0KCRjb25maWcsIGRpc3BsYXktMyksXG4gICAgICAgIGhlYWRsaW5lLTM6IG1hcC5nZXQoJGNvbmZpZywgZGlzcGxheS0yKSxcbiAgICAgICAgaGVhZGxpbmUtNDogbWFwLmdldCgkY29uZmlnLCBkaXNwbGF5LTEpLFxuICAgICAgICBoZWFkbGluZS01OiBtYXAuZ2V0KCRjb25maWcsIGhlYWRsaW5lKSxcbiAgICAgICAgaGVhZGxpbmUtNjogbWFwLmdldCgkY29uZmlnLCB0aXRsZSksXG4gICAgICAgIHN1YnRpdGxlLTE6IG1hcC5nZXQoJGNvbmZpZywgc3ViaGVhZGluZy0yKSxcbiAgICAgICAgc3VidGl0bGUtMjogbWFwLmdldCgkY29uZmlnLCBzdWJoZWFkaW5nLTEpLFxuICAgICAgICBib2R5LTE6IG1hcC5nZXQoJGNvbmZpZywgYm9keS0yKSxcbiAgICAgICAgYm9keS0yOiBtYXAuZ2V0KCRjb25maWcsIGJvZHktMSksXG4gICAgICAgIGJ1dHRvbjogbWFwLmdldCgkY29uZmlnLCBidXR0b24pLFxuICAgICAgICBjYXB0aW9uOiBtYXAuZ2V0KCRjb25maWcsIGNhcHRpb24pLFxuICAgICAgICBvdmVybGluZTogaWYobWFwLmdldCgkY29uZmlnLCBvdmVybGluZSksIG1hcC5nZXQoJGNvbmZpZywgb3ZlcmxpbmUpLFxuICAgICAgICAgICAgZGVmaW5lLXR5cG9ncmFwaHktbGV2ZWwoMTJweCwgMzJweCwgNTAwKVxuICAgICAgICApXG4gICAgKTtcbiAgfVxuICBAcmV0dXJuICRjb25maWc7XG59XG5cbi8vIHN0eWxlbGludC1kaXNhYmxlIG1hdGVyaWFsL3RoZW1lLW1peGluLWFwaVxuXG4vLy8gRW1pdHMgYmFzZWxpbmUgdHlwb2dyYXBoaWMgc3R5bGVzIGJhc2VkIG9uIGEgZ2l2ZW4gY29uZmlnLlxuLy8vIEBwYXJhbSB7TWFwfSAkY29uZmlnLW9yLXRoZW1lIEEgdHlwb2dyYXBoeSBjb25maWcgZm9yIGFuIGVudGlyZSB0aGVtZS5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJHNlbGVjdG9yIEFuY2VzdG9yIHNlbGVjdG9yIHVuZGVyIHdoaWNoIG5hdGl2ZSBlbGVtZW50cywgc3VjaCBhcyBoMSwgd2lsbFxuLy8vICAgICBiZSBzdHlsZWQuXG5AbWl4aW4gdHlwb2dyYXBoeS1oaWVyYXJjaHkoJGNvbmZpZy1vci10aGVtZSwgJHNlbGVjdG9yOiAnLm1hdC10eXBvZ3JhcGh5Jykge1xuICAkY29uZmlnOiBwcml2YXRlLXR5cG9ncmFwaHktdG8tMjAxNC1jb25maWcodGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJGNvbmZpZy1vci10aGVtZSkpO1xuXG4gIC5tYXQtaDEsIC5tYXQtaGVhZGxpbmUsICN7JHNlbGVjdG9yfSBoMSB7XG4gICAgQGluY2x1ZGUgdHlwb2dyYXBoeS11dGlscy50eXBvZ3JhcGh5LWxldmVsKCRjb25maWcsIGhlYWRsaW5lKTtcbiAgICBtYXJnaW46IDAgMCAxNnB4O1xuICB9XG5cbiAgLm1hdC1oMiwgLm1hdC10aXRsZSwgI3skc2VsZWN0b3J9IGgyIHtcbiAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5LXV0aWxzLnR5cG9ncmFwaHktbGV2ZWwoJGNvbmZpZywgdGl0bGUpO1xuICAgIG1hcmdpbjogMCAwIDE2cHg7XG4gIH1cblxuICAubWF0LWgzLCAubWF0LXN1YmhlYWRpbmctMiwgI3skc2VsZWN0b3J9IGgzIHtcbiAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5LXV0aWxzLnR5cG9ncmFwaHktbGV2ZWwoJGNvbmZpZywgc3ViaGVhZGluZy0yKTtcbiAgICBtYXJnaW46IDAgMCAxNnB4O1xuICB9XG5cbiAgLm1hdC1oNCwgLm1hdC1zdWJoZWFkaW5nLTEsICN7JHNlbGVjdG9yfSBoNCB7XG4gICAgQGluY2x1ZGUgdHlwb2dyYXBoeS11dGlscy50eXBvZ3JhcGh5LWxldmVsKCRjb25maWcsIHN1YmhlYWRpbmctMSk7XG4gICAgbWFyZ2luOiAwIDAgMTZweDtcbiAgfVxuXG4gIC8vIE5vdGU6IHRoZSBzcGVjIGRvZXNuJ3QgaGF2ZSBhbnl0aGluZyB0aGF0IHdvdWxkIGNvcnJlc3BvbmQgdG8gaDUgYW5kIGg2LCBidXQgd2UgYWRkIHRoZXNlIGZvclxuICAvLyBjb25zaXN0ZW5jeS4gVGhlIGZvbnQgc2l6ZXMgY29tZSBmcm9tIHRoZSBDaHJvbWUgdXNlciBhZ2VudCBzdHlsZXMgd2hpY2ggaGF2ZSBoNSBhdCAwLjgzZW1cbiAgLy8gYW5kIGg2IGF0IDAuNjdlbS5cbiAgLm1hdC1oNSwgI3skc2VsZWN0b3J9IGg1IHtcbiAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtc2hvcnRoYW5kKFxuICAgICAgIC8vIGNhbGMgaXMgdXNlZCBoZXJlIHRvIHN1cHBvcnQgY3NzIHZhcmlhYmxlc1xuICAgICAgY2FsYygje3R5cG9ncmFwaHktdXRpbHMuZm9udC1zaXplKCRjb25maWcsIGJvZHktMSl9ICogMC44MyksXG4gICAgICB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtd2VpZ2h0KCRjb25maWcsIGJvZHktMSksXG4gICAgICB0eXBvZ3JhcGh5LXV0aWxzLmxpbmUtaGVpZ2h0KCRjb25maWcsIGJvZHktMSksXG4gICAgICB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtZmFtaWx5KCRjb25maWcsIGJvZHktMSlcbiAgICApO1xuXG4gICAgbWFyZ2luOiAwIDAgMTJweDtcbiAgfVxuXG4gIC5tYXQtaDYsICN7JHNlbGVjdG9yfSBoNiB7XG4gICAgQGluY2x1ZGUgdHlwb2dyYXBoeS11dGlscy5mb250LXNob3J0aGFuZChcbiAgICAgICAvLyBjYWxjIGlzIHVzZWQgaGVyZSB0byBzdXBwb3J0IGNzcyB2YXJpYWJsZXNcbiAgICAgIGNhbGMoI3t0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtc2l6ZSgkY29uZmlnLCBib2R5LTEpfSAqIDAuNjcpLFxuICAgICAgdHlwb2dyYXBoeS11dGlscy5mb250LXdlaWdodCgkY29uZmlnLCBib2R5LTEpLFxuICAgICAgdHlwb2dyYXBoeS11dGlscy5saW5lLWhlaWdodCgkY29uZmlnLCBib2R5LTEpLFxuICAgICAgdHlwb2dyYXBoeS11dGlscy5mb250LWZhbWlseSgkY29uZmlnLCBib2R5LTEpXG4gICAgKTtcblxuICAgIG1hcmdpbjogMCAwIDEycHg7XG4gIH1cblxuICAubWF0LWJvZHktc3Ryb25nLCAubWF0LWJvZHktMiB7XG4gICAgQGluY2x1ZGUgdHlwb2dyYXBoeS11dGlscy50eXBvZ3JhcGh5LWxldmVsKCRjb25maWcsIGJvZHktMik7XG4gIH1cblxuICAubWF0LWJvZHksIC5tYXQtYm9keS0xLCAjeyRzZWxlY3Rvcn0ge1xuICAgIEBpbmNsdWRlIHR5cG9ncmFwaHktdXRpbHMudHlwb2dyYXBoeS1sZXZlbCgkY29uZmlnLCBib2R5LTEpO1xuXG4gICAgcCB7XG4gICAgICBtYXJnaW46IDAgMCAxMnB4O1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtc21hbGwsIC5tYXQtY2FwdGlvbiB7XG4gICAgQGluY2x1ZGUgdHlwb2dyYXBoeS11dGlscy50eXBvZ3JhcGh5LWxldmVsKCRjb25maWcsIGNhcHRpb24pO1xuICB9XG5cbiAgLm1hdC1kaXNwbGF5LTQsICN7JHNlbGVjdG9yfSAubWF0LWRpc3BsYXktNCB7XG4gICAgQGluY2x1ZGUgdHlwb2dyYXBoeS11dGlscy50eXBvZ3JhcGh5LWxldmVsKCRjb25maWcsIGRpc3BsYXktNCk7XG4gICAgbWFyZ2luOiAwIDAgNTZweDtcbiAgfVxuXG4gIC5tYXQtZGlzcGxheS0zLCAjeyRzZWxlY3Rvcn0gLm1hdC1kaXNwbGF5LTMge1xuICAgIEBpbmNsdWRlIHR5cG9ncmFwaHktdXRpbHMudHlwb2dyYXBoeS1sZXZlbCgkY29uZmlnLCBkaXNwbGF5LTMpO1xuICAgIG1hcmdpbjogMCAwIDY0cHg7XG4gIH1cblxuICAubWF0LWRpc3BsYXktMiwgI3skc2VsZWN0b3J9IC5tYXQtZGlzcGxheS0yIHtcbiAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5LXV0aWxzLnR5cG9ncmFwaHktbGV2ZWwoJGNvbmZpZywgZGlzcGxheS0yKTtcbiAgICBtYXJnaW46IDAgMCA2NHB4O1xuICB9XG5cbiAgLm1hdC1kaXNwbGF5LTEsICN7JHNlbGVjdG9yfSAubWF0LWRpc3BsYXktMSB7XG4gICAgQGluY2x1ZGUgdHlwb2dyYXBoeS11dGlscy50eXBvZ3JhcGh5LWxldmVsKCRjb25maWcsIGRpc3BsYXktMSk7XG4gICAgbWFyZ2luOiAwIDAgNjRweDtcbiAgfVxufVxuXG4vLyBzdHlsZWxpbnQtZW5hYmxlIG1hdGVyaWFsL3RoZW1lLW1peGluLWFwaVxuIiwiQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnc2FzczptZXRhJztcbkB1c2UgJ3Nhc3M6c3RyaW5nJztcblxuXG4vLyBVdGlsaXR5IGZvciBmZXRjaGluZyBhIG5lc3RlZCB2YWx1ZSBmcm9tIGEgdHlwb2dyYXBoeSBjb25maWcuXG5AZnVuY3Rpb24gX21hdC1nZXQtdHlwZS12YWx1ZSgkY29uZmlnLCAkbGV2ZWwsICRuYW1lKSB7XG4gIEByZXR1cm4gbWFwLmdldChtYXAuZ2V0KCRjb25maWcsICRsZXZlbCksICRuYW1lKTtcbn1cblxuLy8vIEdldHMgdGhlIGZvbnQgc2l6ZSBmb3IgYSBsZXZlbCBpbnNpZGUgYSB0eXBvZ3JhcGh5IGNvbmZpZy5cbi8vLyBAcGFyYW0ge01hcH0gJGNvbmZpZyBBIHR5cG9ncmFwaHkgY29uZmlnLlxuLy8vIEBwYXJhbSB7TWFwfSAkbGV2ZWwgQSB0eXBvZ3JhcGh5IGxldmVsLlxuQGZ1bmN0aW9uIGZvbnQtc2l6ZSgkY29uZmlnLCAkbGV2ZWwpIHtcbiAgQHJldHVybiBfbWF0LWdldC10eXBlLXZhbHVlKCRjb25maWcsICRsZXZlbCwgZm9udC1zaXplKTtcbn1cblxuLy8vIEdldHMgdGhlIGxpbmUgaGVpZ2h0IGZvciBhIGxldmVsIGluc2lkZSBhIHR5cG9ncmFwaHkgY29uZmlnLlxuLy8vIEBwYXJhbSB7TWFwfSAkY29uZmlnIEEgdHlwb2dyYXBoeSBjb25maWcuXG4vLy8gQHBhcmFtIHtNYXB9ICRsZXZlbCBBIHR5cG9ncmFwaHkgbGV2ZWwuXG5AZnVuY3Rpb24gbGluZS1oZWlnaHQoJGNvbmZpZywgJGxldmVsKSB7XG4gIEByZXR1cm4gX21hdC1nZXQtdHlwZS12YWx1ZSgkY29uZmlnLCAkbGV2ZWwsIGxpbmUtaGVpZ2h0KTtcbn1cblxuLy8vIEdldHMgdGhlIGZvbnQgd2VpZ2h0IGZvciBhIGxldmVsIGluc2lkZSBhIHR5cG9ncmFwaHkgY29uZmlnLlxuLy8vIEBwYXJhbSB7TWFwfSAkY29uZmlnIEEgdHlwb2dyYXBoeSBjb25maWcuXG4vLy8gQHBhcmFtIHtNYXB9ICRsZXZlbCBBIHR5cG9ncmFwaHkgbGV2ZWwuXG5AZnVuY3Rpb24gZm9udC13ZWlnaHQoJGNvbmZpZywgJGxldmVsKSB7XG4gIEByZXR1cm4gX21hdC1nZXQtdHlwZS12YWx1ZSgkY29uZmlnLCAkbGV2ZWwsIGZvbnQtd2VpZ2h0KTtcbn1cblxuLy8vIEdldHMgdGhlIGxldHRlciBzcGFjaW5nIGZvciBhIGxldmVsIGluc2lkZSBhIHR5cG9ncmFwaHkgY29uZmlnLlxuLy8vIEBwYXJhbSB7TWFwfSAkY29uZmlnIEEgdHlwb2dyYXBoeSBjb25maWcuXG4vLy8gQHBhcmFtIHtNYXB9ICRsZXZlbCBBIHR5cG9ncmFwaHkgbGV2ZWwuXG5AZnVuY3Rpb24gbGV0dGVyLXNwYWNpbmcoJGNvbmZpZywgJGxldmVsKSB7XG4gIEByZXR1cm4gX21hdC1nZXQtdHlwZS12YWx1ZSgkY29uZmlnLCAkbGV2ZWwsIGxldHRlci1zcGFjaW5nKTtcbn1cblxuLy8vIEdldHMgdGhlIGZvbnQtZmFtaWx5IGZyb20gYSB0eXBvZ3JhcGh5IGNvbmZpZyBhbmQgcmVtb3ZlcyB0aGUgcXVvdGVzIGFyb3VuZCBpdC5cbi8vLyBAcGFyYW0ge01hcH0gJGNvbmZpZyBBIHR5cG9ncmFwaHkgY29uZmlnLlxuLy8vIEBwYXJhbSB7TWFwfSAkbGV2ZWwgQSB0eXBvZ3JhcGh5IGxldmVsLlxuQGZ1bmN0aW9uIGZvbnQtZmFtaWx5KCRjb25maWcsICRsZXZlbDogbnVsbCkge1xuICAkZm9udC1mYW1pbHk6IG1hcC5nZXQoJGNvbmZpZywgZm9udC1mYW1pbHkpO1xuXG4gIEBpZiAkbGV2ZWwgIT0gbnVsbCB7XG4gICAgJGZvbnQtZmFtaWx5OiBfbWF0LWdldC10eXBlLXZhbHVlKCRjb25maWcsICRsZXZlbCwgZm9udC1mYW1pbHkpO1xuICB9XG5cbiAgLy8gR3VhcmQgYWdhaW5zdCB1bnF1b3Rpbmcgbm9uLXN0cmluZyB2YWx1ZXMsIGJlY2F1c2UgaXQncyBkZXByZWNhdGVkLlxuICBAcmV0dXJuIGlmKG1ldGEudHlwZS1vZigkZm9udC1mYW1pbHkpID09IHN0cmluZywgc3RyaW5nLnVucXVvdGUoJGZvbnQtZmFtaWx5KSwgJGZvbnQtZmFtaWx5KTtcbn1cblxuLy8vIE91dHB1dHMgdGhlIHNob3J0aGFuZCBgZm9udGAgQ1NTIHByb3BlcnR5LCBiYXNlZCBvbiBhIHNldCBvZiB0eXBvZ3JhcGh5IHZhbHVlcy4gRmFsbHMgYmFjayB0b1xuLy8vIHRoZSBpbmRpdmlkdWFsIHByb3BlcnRpZXMgaWYgYSB2YWx1ZSB0aGF0IGlzbid0IGFsbG93ZWQgaW4gdGhlIHNob3J0aGFuZCBpcyBwYXNzZWQgaW4uXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRmb250LXNpemUgVGhlIGZvbnQtc2l6ZSB2YWx1ZS5cbi8vLyBAcGFyYW0ge1N0cmluZyB8IE51bWJlcn0gJGZvbnQtd2VpZ2h0IFRoZSBmb250LXdlaWdodCB2YWx1ZS5cbi8vLyBAcGFyYW0ge1N0cmluZyB8IE51bWJlcn0gJGxpbmUtaGVpZ2h0IFRoZSBsaW5lLWhlaWdodCB2YWx1ZS5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGZvbnQtZmFtaWx5IFRoZSBmb250LWZhbWlseSB2YWx1ZS5cbi8vLyBAcmV0dXJucyB7U3RyaW5nfSBUaGUgYGZvbnRgIHNob3J0aGFuZCB2YWx1ZSBjb21iaW5pbmcgdGhlIGdpdmVuIHBhcnRzLlxuQG1peGluIGZvbnQtc2hvcnRoYW5kKCRmb250LXNpemUsICRmb250LXdlaWdodCwgJGxpbmUtaGVpZ2h0LCAkZm9udC1mYW1pbHkpIHtcbiAgLy8gSWYgYW55IG9mIHRoZSB2YWx1ZXMgYXJlIHNldCB0byBgaW5oZXJpdGAsIHdlIGNhbid0IHVzZSB0aGUgc2hvcnRoYW5kXG4gIC8vIHNvIHdlIGZhbGwgYmFjayB0byBwYXNzaW5nIGluIHRoZSBpbmRpdmlkdWFsIHByb3BlcnRpZXMuXG4gIEBpZiAoJGZvbnQtc2l6ZSA9PSBpbmhlcml0IG9yXG4gICAgICAgJGZvbnQtd2VpZ2h0ID09IGluaGVyaXQgb3JcbiAgICAgICAkbGluZS1oZWlnaHQgPT0gaW5oZXJpdCBvclxuICAgICAgICRmb250LWZhbWlseSA9PSBpbmhlcml0IG9yXG4gICAgICAgJGZvbnQtc2l6ZSA9PSBudWxsIG9yXG4gICAgICAgJGZvbnQtd2VpZ2h0ID09IG51bGwgb3JcbiAgICAgICAkbGluZS1oZWlnaHQgPT0gbnVsbCBvclxuICAgICAgICRmb250LWZhbWlseSA9PSBudWxsKSB7XG5cbiAgICBmb250LXNpemU6ICRmb250LXNpemU7XG4gICAgZm9udC13ZWlnaHQ6ICRmb250LXdlaWdodDtcbiAgICBsaW5lLWhlaWdodDogJGxpbmUtaGVpZ2h0O1xuICAgIGZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIC8vIE90aGVyd2lzZSB1c2UgdGhlIHNob3J0aGFuZCBgZm9udGAsIGJlY2F1c2UgaXQncyB0aGUgbGVhc3QgYW1vdW50IG9mIGJ5dGVzLiBOb3RlXG4gICAgLy8gdGhhdCB3ZSBuZWVkIHRvIHVzZSBpbnRlcnBvbGF0aW9uIGZvciBgZm9udC1zaXplL2xpbmUtaGVpZ2h0YCBpbiBvcmRlciB0byBwcmV2ZW50XG4gICAgLy8gU2FzcyBmcm9tIGRpdmlkaW5nIHRoZSB0d28gdmFsdWVzLlxuICAgIGZvbnQ6ICRmb250LXdlaWdodCAjeyRmb250LXNpemV9LyN7JGxpbmUtaGVpZ2h0fSAkZm9udC1mYW1pbHk7XG4gIH1cbn1cblxuLy8vIEVtaXRzIENTUyBzdHlsZXMgZm9yIHRoZSBnaXZlbiB0eXBvZ3JhcGh5IGxldmVsLlxuLy8vIEBwYXJhbSB7TWFwfSAkY29uZmlnIEEgdHlwb2dyYXBoeSBjb25maWcuXG4vLy8gQHBhcmFtIHtNYXB9ICRsZXZlbCBBIHR5cG9ncmFwaHkgbGV2ZWwuXG5AbWl4aW4gdHlwb2dyYXBoeS1sZXZlbCgkY29uZmlnLCAkbGV2ZWwpIHtcbiAgJGZvbnQtc2l6ZTogZm9udC1zaXplKCRjb25maWcsICRsZXZlbCk7XG4gICRmb250LXdlaWdodDogZm9udC13ZWlnaHQoJGNvbmZpZywgJGxldmVsKTtcbiAgJGxpbmUtaGVpZ2h0OiBsaW5lLWhlaWdodCgkY29uZmlnLCAkbGV2ZWwpO1xuICAkZm9udC1mYW1pbHk6IGZvbnQtZmFtaWx5KCRjb25maWcsICRsZXZlbCk7XG5cbiAgQGluY2x1ZGUgZm9udC1zaG9ydGhhbmQoJGZvbnQtc2l6ZSwgJGZvbnQtd2VpZ2h0LCAkbGluZS1oZWlnaHQsICRmb250LWZhbWlseSk7XG4gIGxldHRlci1zcGFjaW5nOiBsZXR0ZXItc3BhY2luZygkY29uZmlnLCAkbGV2ZWwpO1xufVxuIiwiQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnLi4vY29yZS9zdHlsZS9wcml2YXRlJztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5JztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5LXV0aWxzJztcbkB1c2UgJy4uL2NvcmUvdGhlbWluZy90aGVtaW5nJztcblxuQG1peGluIGNvbG9yKCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAkYmFja2dyb3VuZDogbWFwLmdldCgkY29uZmlnLCBiYWNrZ3JvdW5kKTtcbiAgJGZvcmVncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgZm9yZWdyb3VuZCk7XG5cbiAgLm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyIHtcbiAgICBAaW5jbHVkZSBwcml2YXRlLnByaXZhdGUtdGhlbWUtZWxldmF0aW9uKDE2LCAkY29uZmlnKTtcbiAgICBiYWNrZ3JvdW5kOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGJhY2tncm91bmQsIGRpYWxvZyk7XG4gICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgdGV4dCk7XG4gIH1cbn1cblxuQG1peGluIHR5cG9ncmFwaHkoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0eXBvZ3JhcGh5LnByaXZhdGUtdHlwb2dyYXBoeS10by0yMDE0LWNvbmZpZyhcbiAgICAgIHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCRjb25maWctb3ItdGhlbWUpKTtcbiAgLm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyIHtcbiAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5LXV0aWxzLnR5cG9ncmFwaHktbGV2ZWwoJGNvbmZpZywgYm9keS0xKTtcbiAgfVxufVxuXG5AbWl4aW4gX2RlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIHRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiB0aGVtaW5nLnByaXZhdGUtbGVnYWN5LWdldC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgQGluY2x1ZGUgdGhlbWluZy5wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LWJvdHRvbS1zaGVldCcpIHtcbiAgICAkY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkdGhlbWUpO1xuICAgICRkZW5zaXR5OiB0aGVtaW5nLmdldC1kZW5zaXR5LWNvbmZpZygkdGhlbWUpO1xuICAgICR0eXBvZ3JhcGh5OiB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkdGhlbWUpO1xuXG4gICAgQGlmICRjb2xvciAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIGNvbG9yKCRjb2xvcik7XG4gICAgfVxuICAgIEBpZiAkZGVuc2l0eSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIF9kZW5zaXR5KCRkZW5zaXR5KTtcbiAgICB9XG4gICAgQGlmICR0eXBvZ3JhcGh5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgdHlwb2dyYXBoeSgkdHlwb2dyYXBoeSk7XG4gICAgfVxuICB9XG59XG4iLCJAdXNlICdzYXNzOm1hcCc7XG5AdXNlICdzYXNzOm1ldGEnO1xuQHVzZSAnLi4vY29yZS90aGVtaW5nL3RoZW1pbmcnO1xuQHVzZSAnLi4vY29yZS9zdHlsZS9wcml2YXRlJztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5JztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5LXV0aWxzJztcblxuJF9yaXBwbGUtb3BhY2l0eTogMC4xO1xuXG4vLyBBcHBsaWVzIGEgZm9jdXMgc3R5bGUgdG8gYW4gbWF0LWJ1dHRvbiBlbGVtZW50IGZvciBlYWNoIG9mIHRoZSBzdXBwb3J0ZWQgcGFsZXR0ZXMuXG5AbWl4aW4gX2ZvY3VzLW92ZXJsYXktY29sb3IoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRwcmltYXJ5OiBtYXAuZ2V0KCRjb25maWcsIHByaW1hcnkpO1xuICAkYWNjZW50OiBtYXAuZ2V0KCRjb25maWcsIGFjY2VudCk7XG4gICR3YXJuOiBtYXAuZ2V0KCRjb25maWcsIHdhcm4pO1xuXG4gICYubWF0LXByaW1hcnkgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRwcmltYXJ5KTtcbiAgfVxuXG4gICYubWF0LWFjY2VudCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5IHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGFjY2VudCk7XG4gIH1cblxuICAmLm1hdC13YXJuIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXkge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkd2Fybik7XG4gIH1cblxuICAmLm1hdC1idXR0b24tZGlzYWJsZWQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIH1cbn1cblxuLy8gQXBwbGllcyB0aGUgYmFja2dyb3VuZCBjb2xvciBmb3IgYSByaXBwbGUuIElmIHRoZSB2YWx1ZSBwcm92aWRlZCBpcyBub3QgYSBTYXNzIGNvbG9yLFxuLy8gd2UgYXNzdW1lIHRoYXQgd2UndmUgYmVlbiBnaXZlbiBhIENTUyB2YXJpYWJsZS4gU2luY2Ugd2UgY2FuJ3QgcGVyZm9ybSBhbHBoYS1ibGVuZGluZ1xuLy8gb24gYSBDU1MgdmFyaWFibGUsIHdlIGluc3RlYWQgYWRkIHRoZSBvcGFjaXR5IGRpcmVjdGx5IHRvIHRoZSByaXBwbGUgZWxlbWVudC5cbkBtaXhpbiBfcmlwcGxlLWJhY2tncm91bmQoJHBhbGV0dGUsICRodWUsICRvcGFjaXR5KSB7XG4gICRiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHBhbGV0dGUsICRodWUsICRvcGFjaXR5KTtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmQtY29sb3I7XG4gIEBpZiAobWV0YS50eXBlLW9mKCRiYWNrZ3JvdW5kLWNvbG9yKSAhPSBjb2xvcikge1xuICAgIG9wYWNpdHk6ICRvcGFjaXR5O1xuICB9XG59XG5cbkBtaXhpbiBfcmlwcGxlLWNvbG9yKCR0aGVtZSwgJGh1ZSwgJG9wYWNpdHk6ICRfcmlwcGxlLW9wYWNpdHkpIHtcbiAgJHByaW1hcnk6IG1hcC5nZXQoJHRoZW1lLCBwcmltYXJ5KTtcbiAgJGFjY2VudDogbWFwLmdldCgkdGhlbWUsIGFjY2VudCk7XG4gICR3YXJuOiBtYXAuZ2V0KCR0aGVtZSwgd2Fybik7XG5cbiAgJi5tYXQtcHJpbWFyeSAubWF0LXJpcHBsZS1lbGVtZW50IHtcbiAgICBAaW5jbHVkZSBfcmlwcGxlLWJhY2tncm91bmQoJHByaW1hcnksICRodWUsICRvcGFjaXR5KTtcbiAgfVxuXG4gICYubWF0LWFjY2VudCAubWF0LXJpcHBsZS1lbGVtZW50IHtcbiAgICBAaW5jbHVkZSBfcmlwcGxlLWJhY2tncm91bmQoJGFjY2VudCwgJGh1ZSwgJG9wYWNpdHkpO1xuICB9XG5cbiAgJi5tYXQtd2FybiAubWF0LXJpcHBsZS1lbGVtZW50IHtcbiAgICBAaW5jbHVkZSBfcmlwcGxlLWJhY2tncm91bmQoJHdhcm4sICRodWUsICRvcGFjaXR5KTtcbiAgfVxufVxuXG4vLyBBcHBsaWVzIGEgcHJvcGVydHkgdG8gYW4gbWF0LWJ1dHRvbiBlbGVtZW50IGZvciBlYWNoIG9mIHRoZSBzdXBwb3J0ZWQgcGFsZXR0ZXMuXG5AbWl4aW4gX3RoZW1lLXByb3BlcnR5KCR0aGVtZSwgJHByb3BlcnR5LCAkaHVlKSB7XG4gICRwcmltYXJ5OiBtYXAuZ2V0KCR0aGVtZSwgcHJpbWFyeSk7XG4gICRhY2NlbnQ6IG1hcC5nZXQoJHRoZW1lLCBhY2NlbnQpO1xuICAkd2FybjogbWFwLmdldCgkdGhlbWUsIHdhcm4pO1xuICAkYmFja2dyb3VuZDogbWFwLmdldCgkdGhlbWUsIGJhY2tncm91bmQpO1xuICAkZm9yZWdyb3VuZDogbWFwLmdldCgkdGhlbWUsIGZvcmVncm91bmQpO1xuXG4gICYubWF0LXByaW1hcnkge1xuICAgICN7JHByb3BlcnR5fTogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRwcmltYXJ5LCAkaHVlKTtcbiAgfVxuICAmLm1hdC1hY2NlbnQge1xuICAgICN7JHByb3BlcnR5fTogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRhY2NlbnQsICRodWUpO1xuICB9XG4gICYubWF0LXdhcm4ge1xuICAgICN7JHByb3BlcnR5fTogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCR3YXJuLCAkaHVlKTtcbiAgfVxuXG4gICYubWF0LXByaW1hcnksICYubWF0LWFjY2VudCwgJi5tYXQtd2FybiwgJi5tYXQtYnV0dG9uLWRpc2FibGVkIHtcbiAgICAmLm1hdC1idXR0b24tZGlzYWJsZWQge1xuICAgICAgJHBhbGV0dGU6IGlmKCRwcm9wZXJ0eSA9PSAnY29sb3InLCAkZm9yZWdyb3VuZCwgJGJhY2tncm91bmQpO1xuICAgICAgI3skcHJvcGVydHl9OiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHBhbGV0dGUsIGRpc2FibGVkLWJ1dHRvbik7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBjb2xvcigkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJHByaW1hcnk6IG1hcC5nZXQoJGNvbmZpZywgcHJpbWFyeSk7XG4gICRhY2NlbnQ6IG1hcC5nZXQoJGNvbmZpZywgYWNjZW50KTtcbiAgJHdhcm46IG1hcC5nZXQoJGNvbmZpZywgd2Fybik7XG4gICRiYWNrZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGJhY2tncm91bmQpO1xuICAkZm9yZWdyb3VuZDogbWFwLmdldCgkY29uZmlnLCBmb3JlZ3JvdW5kKTtcblxuICAubWF0LWJ1dHRvbiwgLm1hdC1pY29uLWJ1dHRvbiwgLm1hdC1zdHJva2VkLWJ1dHRvbiB7XG4gICAgLy8gQnV0dG9ucyB3aXRob3V0IGEgYmFja2dyb3VuZCBjb2xvciBzaG91bGQgaW5oZXJpdCB0aGUgZm9udCBjb2xvci4gVGhpcyBpcyBuZWNlc3NhcnkgdG9cbiAgICAvLyBlbnN1cmUgdGhhdCB0aGUgYnV0dG9uIGlzIHJlYWRhYmxlIG9uIGN1c3RvbSBiYWNrZ3JvdW5kIGNvbG9ycy4gSXQncyB3cm9uZyB0byBhbHdheXMgYXNzdW1lXG4gICAgLy8gdGhhdCB0aG9zZSBidXR0b25zIGFyZSBhbHdheXMgcGxhY2VkIGluc2lkZSBvZiBjb250YWluZXJzIHdpdGggdGhlIGRlZmF1bHQgYmFja2dyb3VuZFxuICAgIC8vIGNvbG9yIG9mIHRoZSB0aGVtZSAoZS5nLiB0aGVtZWQgdG9vbGJhcnMpLlxuICAgIGNvbG9yOiBpbmhlcml0O1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuXG4gICAgQGluY2x1ZGUgX3RoZW1lLXByb3BlcnR5KCRjb25maWcsICdjb2xvcicsIHRleHQpO1xuICAgIEBpbmNsdWRlIF9mb2N1cy1vdmVybGF5LWNvbG9yKCRjb25maWcpO1xuXG4gICAgLy8gU2V0dXAgdGhlIHJpcHBsZSBjb2xvciB0byBiZSBiYXNlZCBvbiB0aGUgdGV4dCBjb2xvci4gVGhpcyBlbnN1cmVzIHRoYXQgdGhlIHJpcHBsZXNcbiAgICAvLyBhcmUgbWF0Y2hpbmcgd2l0aCB0aGUgY3VycmVudCB0aGVtZSBwYWxldHRlIGFuZCBhcmUgaW4gY29udHJhc3QgdG8gdGhlIGJhY2tncm91bmQgY29sb3JcbiAgICAvLyAoZS5nIGluIHRoZW1lZCB0b29sYmFycykuXG4gICAgLm1hdC1yaXBwbGUtZWxlbWVudCB7XG4gICAgICBvcGFjaXR5OiAkX3JpcHBsZS1vcGFjaXR5O1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogY3VycmVudENvbG9yO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXkge1xuICAgIGJhY2tncm91bmQ6IG1hcC5nZXQoJGZvcmVncm91bmQsIGJhc2UpO1xuICB9XG5cbiAgLy8gTm90ZTogdGhpcyBuZWVkcyBhIGJpdCBleHRyYSBzcGVjaWZpY2l0eSwgYmVjYXVzZSB3ZSdyZSBub3QgZ3VhcmFudGVlZCB0aGUgaW5jbHVzaW9uXG4gIC8vIG9yZGVyIG9mIHRoZSB0aGVtZSBzdHlsZXMgYW5kIHRoZSBidXR0b24gcmVzZXQgbWF5IGVuZCB1cCByZXNldHRpbmcgdGhpcyBhcyB3ZWxsLlxuICAubWF0LXN0cm9rZWQtYnV0dG9uOm5vdCgubWF0LWJ1dHRvbi1kaXNhYmxlZCkge1xuICAgIGJvcmRlci1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBkaXZpZGVyKTtcbiAgfVxuXG4gIC5tYXQtZmxhdC1idXR0b24sIC5tYXQtcmFpc2VkLWJ1dHRvbiwgLm1hdC1mYWIsIC5tYXQtbWluaS1mYWIge1xuICAgIC8vIERlZmF1bHQgZm9udCBhbmQgYmFja2dyb3VuZCBjb2xvciB3aGVuIG5vdCB1c2luZyBhbnkgY29sb3IgcGFsZXR0ZS5cbiAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCB0ZXh0KTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGJhY2tncm91bmQsIHJhaXNlZC1idXR0b24pO1xuXG4gICAgQGluY2x1ZGUgX3RoZW1lLXByb3BlcnR5KCRjb25maWcsICdjb2xvcicsIGRlZmF1bHQtY29udHJhc3QpO1xuICAgIEBpbmNsdWRlIF90aGVtZS1wcm9wZXJ0eSgkY29uZmlnLCAnYmFja2dyb3VuZC1jb2xvcicsIGRlZmF1bHQpO1xuICAgIEBpbmNsdWRlIF9yaXBwbGUtY29sb3IoJGNvbmZpZywgZGVmYXVsdC1jb250cmFzdCk7XG4gIH1cblxuICAubWF0LXN0cm9rZWQtYnV0dG9uLCAubWF0LWZsYXQtYnV0dG9uIHtcbiAgICBAaW5jbHVkZSBwcml2YXRlLnByaXZhdGUtdGhlbWUtb3ZlcnJpZGFibGUtZWxldmF0aW9uKDAsICRjb25maWcpO1xuICB9XG5cbiAgLm1hdC1yYWlzZWQtYnV0dG9uIHtcbiAgICBAaW5jbHVkZSBwcml2YXRlLnByaXZhdGUtdGhlbWUtb3ZlcnJpZGFibGUtZWxldmF0aW9uKDIsICRjb25maWcpO1xuXG4gICAgJjpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpOmFjdGl2ZSB7XG4gICAgICBAaW5jbHVkZSBwcml2YXRlLnByaXZhdGUtdGhlbWUtb3ZlcnJpZGFibGUtZWxldmF0aW9uKDgsICRjb25maWcpO1xuICAgIH1cblxuICAgICYubWF0LWJ1dHRvbi1kaXNhYmxlZCB7XG4gICAgICBAaW5jbHVkZSBwcml2YXRlLnByaXZhdGUtdGhlbWUtb3ZlcnJpZGFibGUtZWxldmF0aW9uKDAsICRjb25maWcpO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtZmFiLCAubWF0LW1pbmktZmFiIHtcbiAgICBAaW5jbHVkZSBwcml2YXRlLnByaXZhdGUtdGhlbWUtb3ZlcnJpZGFibGUtZWxldmF0aW9uKDYsICRjb25maWcpO1xuXG4gICAgJjpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpOmFjdGl2ZSB7XG4gICAgICBAaW5jbHVkZSBwcml2YXRlLnByaXZhdGUtdGhlbWUtb3ZlcnJpZGFibGUtZWxldmF0aW9uKDEyLCAkY29uZmlnKTtcbiAgICB9XG5cbiAgICAmLm1hdC1idXR0b24tZGlzYWJsZWQge1xuICAgICAgQGluY2x1ZGUgcHJpdmF0ZS5wcml2YXRlLXRoZW1lLW92ZXJyaWRhYmxlLWVsZXZhdGlvbigwLCAkY29uZmlnKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHR5cG9ncmFwaHkoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0eXBvZ3JhcGh5LnByaXZhdGUtdHlwb2dyYXBoeS10by0yMDE0LWNvbmZpZyhcbiAgICAgIHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCRjb25maWctb3ItdGhlbWUpKTtcbiAgLm1hdC1idXR0b24sIC5tYXQtcmFpc2VkLWJ1dHRvbiwgLm1hdC1pY29uLWJ1dHRvbiwgLm1hdC1zdHJva2VkLWJ1dHRvbixcbiAgLm1hdC1mbGF0LWJ1dHRvbiwgLm1hdC1mYWIsIC5tYXQtbWluaS1mYWIge1xuICAgIGZvbnQ6IHtcbiAgICAgIGZhbWlseTogdHlwb2dyYXBoeS11dGlscy5mb250LWZhbWlseSgkY29uZmlnLCBidXR0b24pO1xuICAgICAgc2l6ZTogdHlwb2dyYXBoeS11dGlscy5mb250LXNpemUoJGNvbmZpZywgYnV0dG9uKTtcbiAgICAgIHdlaWdodDogdHlwb2dyYXBoeS11dGlscy5mb250LXdlaWdodCgkY29uZmlnLCBidXR0b24pO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gX2RlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIHRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiB0aGVtaW5nLnByaXZhdGUtbGVnYWN5LWdldC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgQGluY2x1ZGUgdGhlbWluZy5wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LWJ1dHRvbicpIHtcbiAgICAkY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkdGhlbWUpO1xuICAgICRkZW5zaXR5OiB0aGVtaW5nLmdldC1kZW5zaXR5LWNvbmZpZygkdGhlbWUpO1xuICAgICR0eXBvZ3JhcGh5OiB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkdGhlbWUpO1xuXG4gICAgQGlmICRjb2xvciAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIGNvbG9yKCRjb2xvcik7XG4gICAgfVxuICAgIEBpZiAkZGVuc2l0eSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIF9kZW5zaXR5KCRkZW5zaXR5KTtcbiAgICB9XG4gICAgQGlmICR0eXBvZ3JhcGh5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgdHlwb2dyYXBoeSgkdHlwb2dyYXBoeSk7XG4gICAgfVxuICB9XG59XG4iLCJAdXNlICdzYXNzOm1hcCc7XG5AdXNlICcuLi9jb3JlL3N0eWxlL3ByaXZhdGUnO1xuQHVzZSAnLi4vY29yZS90aGVtaW5nL3RoZW1pbmcnO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHknO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHktdXRpbHMnO1xuQHVzZSAnLi4vY29yZS9kZW5zaXR5L3ByaXZhdGUvY29tcGF0aWJpbGl0eSc7XG5AdXNlICcuL2J1dHRvbi10b2dnbGUtdmFyaWFibGVzJztcblxuQG1peGluIGNvbG9yKCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAkZm9yZWdyb3VuZDogbWFwLmdldCgkY29uZmlnLCBmb3JlZ3JvdW5kKTtcbiAgJGJhY2tncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgYmFja2dyb3VuZCk7XG4gICRkaXZpZGVyLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIGRpdmlkZXIpO1xuXG4gIC5tYXQtYnV0dG9uLXRvZ2dsZS1zdGFuZGFsb25lLFxuICAubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAge1xuICAgIEBpbmNsdWRlIHByaXZhdGUucHJpdmF0ZS10aGVtZS1lbGV2YXRpb24oMiwgJGNvbmZpZyk7XG4gIH1cblxuICAubWF0LWJ1dHRvbi10b2dnbGUtc3RhbmRhbG9uZS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkLFxuICAubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAtYXBwZWFyYW5jZS1zdGFuZGFyZCB7XG4gICAgYm94LXNoYWRvdzogbm9uZTtcbiAgfVxuXG4gIC5tYXQtYnV0dG9uLXRvZ2dsZSB7XG4gICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgaGludC10ZXh0KTtcblxuICAgIC5tYXQtYnV0dG9uLXRvZ2dsZS1mb2N1cy1vdmVybGF5IHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYmFja2dyb3VuZCwgZm9jdXNlZC1idXR0b24pO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkIHtcbiAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCB0ZXh0KTtcbiAgICBiYWNrZ3JvdW5kOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGJhY2tncm91bmQsIGNhcmQpO1xuXG4gICAgLm1hdC1idXR0b24tdG9nZ2xlLWZvY3VzLW92ZXJsYXkge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLCBmb2N1c2VkLWJ1dHRvbiwgMSk7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmQgLm1hdC1idXR0b24tdG9nZ2xlICsgLm1hdC1idXR0b24tdG9nZ2xlIHtcbiAgICBib3JkZXItbGVmdDogc29saWQgMXB4ICRkaXZpZGVyLWNvbG9yO1xuICB9XG5cbiAgW2Rpcj0ncnRsJ10gLm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmQgLm1hdC1idXR0b24tdG9nZ2xlICsgLm1hdC1idXR0b24tdG9nZ2xlIHtcbiAgICBib3JkZXItbGVmdDogbm9uZTtcbiAgICBib3JkZXItcmlnaHQ6IHNvbGlkIDFweCAkZGl2aWRlci1jb2xvcjtcbiAgfVxuXG4gIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkLm1hdC1idXR0b24tdG9nZ2xlLXZlcnRpY2FsIHtcbiAgICAubWF0LWJ1dHRvbi10b2dnbGUgKyAubWF0LWJ1dHRvbi10b2dnbGUge1xuICAgICAgYm9yZGVyLWxlZnQ6IG5vbmU7XG4gICAgICBib3JkZXItcmlnaHQ6IG5vbmU7XG4gICAgICBib3JkZXItdG9wOiBzb2xpZCAxcHggJGRpdmlkZXItY29sb3I7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1idXR0b24tdG9nZ2xlLWNoZWNrZWQge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYmFja2dyb3VuZCwgc2VsZWN0ZWQtYnV0dG9uKTtcbiAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBzZWNvbmRhcnktdGV4dCk7XG5cbiAgICAmLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmQge1xuICAgICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgdGV4dCk7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1idXR0b24tdG9nZ2xlLWRpc2FibGVkIHtcbiAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBkaXNhYmxlZC1idXR0b24pO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYmFja2dyb3VuZCwgZGlzYWJsZWQtYnV0dG9uLXRvZ2dsZSk7XG5cbiAgICAmLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmQge1xuICAgICAgYmFja2dyb3VuZDogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLCBjYXJkKTtcbiAgICB9XG5cbiAgICAmLm1hdC1idXR0b24tdG9nZ2xlLWNoZWNrZWQge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLCBzZWxlY3RlZC1kaXNhYmxlZC1idXR0b24pO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtYnV0dG9uLXRvZ2dsZS1zdGFuZGFsb25lLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmQsXG4gIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkIHtcbiAgICBib3JkZXI6IHNvbGlkIDFweCAkZGl2aWRlci1jb2xvcjtcbiAgfVxufVxuXG5AbWl4aW4gdHlwb2dyYXBoeSgkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHR5cG9ncmFwaHkucHJpdmF0ZS10eXBvZ3JhcGh5LXRvLTIwMTQtY29uZmlnKFxuICAgICAgdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJGNvbmZpZy1vci10aGVtZSkpO1xuICAubWF0LWJ1dHRvbi10b2dnbGUge1xuICAgIGZvbnQtZmFtaWx5OiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtZmFtaWx5KCRjb25maWcpO1xuICB9XG59XG5cbkBtaXhpbiBkZW5zaXR5KCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGRlbnNpdHktc2NhbGU6IHRoZW1pbmcuZ2V0LWRlbnNpdHktY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAkc3RhbmRhcmQtaGVpZ2h0OiBjb21wYXRpYmlsaXR5LnByaXZhdGUtZGVuc2l0eS1wcm9wLXZhbHVlKFxuICAgICAgYnV0dG9uLXRvZ2dsZS12YXJpYWJsZXMuJHN0YW5kYXJkLWRlbnNpdHktY29uZmlnLCAkZGVuc2l0eS1zY2FsZSwgaGVpZ2h0KTtcblxuICBAaW5jbHVkZSBjb21wYXRpYmlsaXR5LnByaXZhdGUtZGVuc2l0eS1sZWdhY3ktY29tcGF0aWJpbGl0eSgpIHtcbiAgICAubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZCAubWF0LWJ1dHRvbi10b2dnbGUtbGFiZWwtY29udGVudCB7XG4gICAgICBsaW5lLWhlaWdodDogJHN0YW5kYXJkLWhlaWdodDtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiB0aGVtaW5nLnByaXZhdGUtbGVnYWN5LWdldC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgQGluY2x1ZGUgdGhlbWluZy5wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LWJ1dHRvbi10b2dnbGUnKSB7XG4gICAgJGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJHRoZW1lKTtcbiAgICAkZGVuc2l0eTogdGhlbWluZy5nZXQtZGVuc2l0eS1jb25maWcoJHRoZW1lKTtcbiAgICAkdHlwb2dyYXBoeTogdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJHRoZW1lKTtcblxuICAgIEBpZiAkY29sb3IgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBjb2xvcigkY29sb3IpO1xuICAgIH1cbiAgICBAaWYgJGRlbnNpdHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBkZW5zaXR5KCRkZW5zaXR5KTtcbiAgICB9XG4gICAgQGlmICR0eXBvZ3JhcGh5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgdHlwb2dyYXBoeSgkdHlwb2dyYXBoeSk7XG4gICAgfVxuICB9XG59XG4iLCJAdXNlICdzYXNzOm1hcCc7XG5AdXNlICcuLi9jb3JlL3RoZW1pbmcvdGhlbWluZyc7XG5AdXNlICcuLi9jb3JlL3N0eWxlL3ByaXZhdGUnO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHknO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHktdXRpbHMnO1xuXG5cbkBtaXhpbiBjb2xvcigkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJGJhY2tncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgYmFja2dyb3VuZCk7XG4gICRmb3JlZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGZvcmVncm91bmQpO1xuXG4gIC5tYXQtY2FyZCB7XG4gICAgQGluY2x1ZGUgcHJpdmF0ZS5wcml2YXRlLXRoZW1lLW92ZXJyaWRhYmxlLWVsZXZhdGlvbigxLCAkY29uZmlnKTtcbiAgICBiYWNrZ3JvdW5kOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGJhY2tncm91bmQsIGNhcmQpO1xuICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIHRleHQpO1xuXG4gICAgLy8gTmVlZHMgZXh0cmEgc3BlY2lmaWNpdHkgdG8gYmUgYWJsZSB0byBvdmVycmlkZSB0aGUgZWxldmF0aW9uIHNlbGVjdG9ycy5cbiAgICAmLm1hdC1jYXJkLWZsYXQge1xuICAgICAgQGluY2x1ZGUgcHJpdmF0ZS5wcml2YXRlLXRoZW1lLW92ZXJyaWRhYmxlLWVsZXZhdGlvbigwLCAkY29uZmlnKTtcbiAgICB9XG4gIH1cblxuICAubWF0LWNhcmQtc3VidGl0bGUge1xuICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIHNlY29uZGFyeS10ZXh0KTtcbiAgfVxufVxuXG5AbWl4aW4gdHlwb2dyYXBoeSgkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHR5cG9ncmFwaHkucHJpdmF0ZS10eXBvZ3JhcGh5LXRvLTIwMTQtY29uZmlnKFxuICAgICAgdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJGNvbmZpZy1vci10aGVtZSkpO1xuICAubWF0LWNhcmQge1xuICAgIGZvbnQtZmFtaWx5OiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtZmFtaWx5KCRjb25maWcpO1xuICB9XG5cbiAgLm1hdC1jYXJkLXRpdGxlIHtcbiAgICBmb250OiB7XG4gICAgICBzaXplOiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtc2l6ZSgkY29uZmlnLCBoZWFkbGluZSk7XG4gICAgICB3ZWlnaHQ6IHR5cG9ncmFwaHktdXRpbHMuZm9udC13ZWlnaHQoJGNvbmZpZywgdGl0bGUpO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtY2FyZC1oZWFkZXIgLm1hdC1jYXJkLXRpdGxlIHtcbiAgICBmb250LXNpemU6IHR5cG9ncmFwaHktdXRpbHMuZm9udC1zaXplKCRjb25maWcsIHRpdGxlKTtcbiAgfVxuXG4gIC5tYXQtY2FyZC1zdWJ0aXRsZSxcbiAgLm1hdC1jYXJkLWNvbnRlbnQge1xuICAgIGZvbnQtc2l6ZTogdHlwb2dyYXBoeS11dGlscy5mb250LXNpemUoJGNvbmZpZywgYm9keS0xKTtcbiAgfVxufVxuXG5AbWl4aW4gX2RlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIHRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiB0aGVtaW5nLnByaXZhdGUtbGVnYWN5LWdldC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgQGluY2x1ZGUgdGhlbWluZy5wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LWNhcmQnKSB7XG4gICAgJGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJHRoZW1lKTtcbiAgICAkZGVuc2l0eTogdGhlbWluZy5nZXQtZGVuc2l0eS1jb25maWcoJHRoZW1lKTtcbiAgICAkdHlwb2dyYXBoeTogdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJHRoZW1lKTtcblxuICAgIEBpZiAkY29sb3IgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBjb2xvcigkY29sb3IpO1xuICAgIH1cbiAgICBAaWYgJGRlbnNpdHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBfZGVuc2l0eSgkZGVuc2l0eSk7XG4gICAgfVxuICAgIEBpZiAkdHlwb2dyYXBoeSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIHR5cG9ncmFwaHkoJHR5cG9ncmFwaHkpO1xuICAgIH1cbiAgfVxufVxuIiwiQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnLi4vY29yZS90aGVtaW5nL3RoZW1pbmcnO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHknO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHktdXRpbHMnO1xuXG5cbkBtaXhpbiBjb2xvcigkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJGlzLWRhcmstdGhlbWU6IG1hcC5nZXQoJGNvbmZpZywgaXMtZGFyayk7XG4gICRwcmltYXJ5OiBtYXAuZ2V0KCRjb25maWcsIHByaW1hcnkpO1xuICAkYWNjZW50OiBtYXAuZ2V0KCRjb25maWcsIGFjY2VudCk7XG4gICR3YXJuOiBtYXAuZ2V0KCRjb25maWcsIHdhcm4pO1xuICAkYmFja2dyb3VuZDogbWFwLmdldCgkY29uZmlnLCBiYWNrZ3JvdW5kKTtcbiAgJGZvcmVncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgZm9yZWdyb3VuZCk7XG5cblxuICAvLyBUaGUgY29sb3Igb2YgdGhlIGNoZWNrYm94J3MgY2hlY2ttYXJrIC8gbWl4ZWRtYXJrLlxuICAkY2hlY2tib3gtbWFyay1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLCBiYWNrZ3JvdW5kKTtcblxuICAvLyBOT1RFKHRyYXZpc2thdWZtYW4pOiBXaGlsZSB0aGUgc3BlYyBjYWxscyBmb3IgdHJhbnNsdWNlbnQgYmxhY2tzL3doaXRlcyBmb3IgZGlzYWJsZWQgY29sb3JzLFxuICAvLyB0aGlzIGRvZXMgbm90IHdvcmsgd2VsbCB3aXRoIGVsZW1lbnRzIGxheWVyZWQgb24gdG9wIG9mIG9uZSBhbm90aGVyLiBUbyBnZXQgYXJvdW5kIHRoaXMgd2VcbiAgLy8gYmxlbmQgdGhlIGNvbG9ycyB0b2dldGhlciBiYXNlZCBvbiB0aGUgYmFzZSBjb2xvciBhbmQgdGhlIHRoZW1lIGJhY2tncm91bmQuXG4gICR3aGl0ZS0zMHBjdC1vcGFjaXR5LW9uLWRhcms6ICM2ODY4Njg7XG4gICRibGFjay0yNnBjdC1vcGFjaXR5LW9uLWxpZ2h0OiAjYjBiMGIwO1xuICAkZGlzYWJsZWQtY29sb3I6IGlmKCRpcy1kYXJrLXRoZW1lLCAkd2hpdGUtMzBwY3Qtb3BhY2l0eS1vbi1kYXJrLCAkYmxhY2stMjZwY3Qtb3BhY2l0eS1vbi1saWdodCk7XG5cbiAgLm1hdC1jaGVja2JveC1mcmFtZSB7XG4gICAgYm9yZGVyLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIHNlY29uZGFyeS10ZXh0KTtcbiAgfVxuXG4gIC5tYXQtY2hlY2tib3gtY2hlY2ttYXJrIHtcbiAgICBmaWxsOiAkY2hlY2tib3gtbWFyay1jb2xvcjtcbiAgfVxuXG4gIC5tYXQtY2hlY2tib3gtY2hlY2ttYXJrLXBhdGgge1xuICAgIC8vICFpbXBvcnRhbnQgaXMgbmVlZGVkIGhlcmUgYmVjYXVzZSBhIHN0cm9rZSBtdXN0IGJlIHNldCBhcyBhblxuICAgIC8vIGF0dHJpYnV0ZSBvbiB0aGUgU1ZHIGluIG9yZGVyIGZvciBsaW5lIGFuaW1hdGlvbiB0byB3b3JrIHByb3Blcmx5LlxuICAgIHN0cm9rZTogJGNoZWNrYm94LW1hcmstY29sb3IgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tYXQtY2hlY2tib3gtbWl4ZWRtYXJrIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY2hlY2tib3gtbWFyay1jb2xvcjtcbiAgfVxuXG4gIC5tYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZSwgLm1hdC1jaGVja2JveC1jaGVja2VkIHtcbiAgICAmLm1hdC1wcmltYXJ5IC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHByaW1hcnkpO1xuICAgIH1cblxuICAgICYubWF0LWFjY2VudCAubWF0LWNoZWNrYm94LWJhY2tncm91bmQge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRhY2NlbnQpO1xuICAgIH1cblxuICAgICYubWF0LXdhcm4gLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkd2Fybik7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1jaGVja2JveC1kaXNhYmxlZCB7XG4gICAgJi5tYXQtY2hlY2tib3gtY2hlY2tlZCxcbiAgICAmLm1hdC1jaGVja2JveC1pbmRldGVybWluYXRlIHtcbiAgICAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZCB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRkaXNhYmxlZC1jb2xvcjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmOm5vdCgubWF0LWNoZWNrYm94LWNoZWNrZWQpIHtcbiAgICAgIC5tYXQtY2hlY2tib3gtZnJhbWUge1xuICAgICAgICBib3JkZXItY29sb3I6ICRkaXNhYmxlZC1jb2xvcjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAubWF0LWNoZWNrYm94LWxhYmVsIHtcbiAgICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIHNlY29uZGFyeS10ZXh0KTtcbiAgICB9XG4gIH1cblxuICAvLyBTd2l0Y2ggdGhpcyB0byBhIHNvbGlkIGNvbG9yIHNpbmNlIHdlJ3JlIHVzaW5nIGBvcGFjaXR5YFxuICAvLyB0byBjb250cm9sIGhvdyBvcGFxdWUgdGhlIHJpcHBsZSBzaG91bGQgYmUuXG4gIC5tYXQtY2hlY2tib3ggLm1hdC1yaXBwbGUtZWxlbWVudCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogbWFwLmdldChtYXAuZ2V0KCRjb25maWcsIGZvcmVncm91bmQpLCBiYXNlKTtcbiAgfVxuXG4gIC5tYXQtY2hlY2tib3gtY2hlY2tlZDpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCksXG4gIC5tYXQtY2hlY2tib3g6YWN0aXZlOm5vdCgubWF0LWNoZWNrYm94LWRpc2FibGVkKSB7XG4gICAgJi5tYXQtcHJpbWFyeSAubWF0LXJpcHBsZS1lbGVtZW50IHtcbiAgICAgIGJhY2tncm91bmQ6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkcHJpbWFyeSk7XG4gICAgfVxuXG4gICAgJi5tYXQtYWNjZW50IC5tYXQtcmlwcGxlLWVsZW1lbnQge1xuICAgICAgYmFja2dyb3VuZDogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRhY2NlbnQpO1xuICAgIH1cblxuICAgICYubWF0LXdhcm4gLm1hdC1yaXBwbGUtZWxlbWVudCB7XG4gICAgICBiYWNrZ3JvdW5kOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHdhcm4pO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gdHlwb2dyYXBoeSgkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHR5cG9ncmFwaHkucHJpdmF0ZS10eXBvZ3JhcGh5LXRvLTIwMTQtY29uZmlnKFxuICAgICAgdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJGNvbmZpZy1vci10aGVtZSkpO1xuICAubWF0LWNoZWNrYm94IHtcbiAgICBmb250LWZhbWlseTogdHlwb2dyYXBoeS11dGlscy5mb250LWZhbWlseSgkY29uZmlnKTtcbiAgfVxuXG4gIC8vIFRPRE8oa2FyYSk6IFJlbW92ZSB0aGlzIHN0eWxlIHdoZW4gZml4aW5nIHZlcnRpY2FsIGJhc2VsaW5lXG4gIC5tYXQtY2hlY2tib3gtbGF5b3V0IC5tYXQtY2hlY2tib3gtbGFiZWwge1xuICAgIGxpbmUtaGVpZ2h0OiB0eXBvZ3JhcGh5LXV0aWxzLmxpbmUtaGVpZ2h0KCRjb25maWcsIGJvZHktMik7XG4gIH1cbn1cblxuQG1peGluIF9kZW5zaXR5KCRjb25maWctb3ItdGhlbWUpIHt9XG5cbkBtaXhpbiB0aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKSB7XG4gICR0aGVtZTogdGhlbWluZy5wcml2YXRlLWxlZ2FjeS1nZXQtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZyk7XG4gIEBpbmNsdWRlIHRoZW1pbmcucHJpdmF0ZS1jaGVjay1kdXBsaWNhdGUtdGhlbWUtc3R5bGVzKCR0aGVtZSwgJ21hdC1jaGVja2JveCcpIHtcbiAgICAkY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkdGhlbWUpO1xuICAgICRkZW5zaXR5OiB0aGVtaW5nLmdldC1kZW5zaXR5LWNvbmZpZygkdGhlbWUpO1xuICAgICR0eXBvZ3JhcGh5OiB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkdGhlbWUpO1xuXG4gICAgQGlmICRjb2xvciAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIGNvbG9yKCRjb2xvcik7XG4gICAgfVxuICAgIEBpZiAkZGVuc2l0eSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIF9kZW5zaXR5KCRkZW5zaXR5KTtcbiAgICB9XG4gICAgQGlmICR0eXBvZ3JhcGh5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgdHlwb2dyYXBoeSgkdHlwb2dyYXBoeSk7XG4gICAgfVxuICB9XG59XG4iLCJAdXNlICdzYXNzOm1hcCc7XG5AdXNlICdzYXNzOm1ldGEnO1xuQHVzZSAnLi4vY29yZS9zdHlsZS9wcml2YXRlJztcbkB1c2UgJy4uL2NvcmUvdGhlbWluZy90aGVtaW5nJztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5JztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5LXV0aWxzJztcblxuJGNoaXAtcmVtb3ZlLWZvbnQtc2l6ZTogMThweDtcblxuQG1peGluIF9lbGVtZW50LWNvbG9yKCRmb3JlZ3JvdW5kLCAkYmFja2dyb3VuZCkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFja2dyb3VuZDtcbiAgY29sb3I6ICRmb3JlZ3JvdW5kO1xuXG4gIC5tYXQtY2hpcC1yZW1vdmUge1xuICAgIGNvbG9yOiAkZm9yZWdyb3VuZDtcbiAgICBvcGFjaXR5OiAwLjQ7XG4gIH1cbn1cblxuXG4vLyBBcHBsaWVzIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIGZvciBhIHJpcHBsZSBlbGVtZW50LlxuLy8gSWYgdGhlIGNvbG9yIHZhbHVlIHByb3ZpZGVkIGlzIG5vdCBhIFNhc3MgY29sb3IsXG4vLyB3ZSBhc3N1bWUgdGhhdCB3ZSd2ZSBiZWVuIGdpdmVuIGEgQ1NTIHZhcmlhYmxlLlxuLy8gU2luY2Ugd2UgY2FuJ3QgcGVyZm9ybSBhbHBoYS1ibGVuZGluZyBvbiBhIENTUyB2YXJpYWJsZSxcbi8vIHdlIGluc3RlYWQgYWRkIHRoZSBvcGFjaXR5IGRpcmVjdGx5IHRvIHRoZSByaXBwbGUgZWxlbWVudC5cbkBtaXhpbiBfcmlwcGxlLWJhY2tncm91bmQoJHBhbGV0dGUsICRkZWZhdWx0LWNvbnRyYXN0LCAkb3BhY2l0eSkge1xuICAkYmFja2dyb3VuZC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRwYWxldHRlLCAkZGVmYXVsdC1jb250cmFzdCwgJG9wYWNpdHkpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFja2dyb3VuZC1jb2xvcjtcbiAgQGlmIChtZXRhLnR5cGUtb2YoJGJhY2tncm91bmQtY29sb3IpICE9IGNvbG9yKSB7XG4gICAgb3BhY2l0eTogJG9wYWNpdHk7XG4gIH1cbn1cblxuQG1peGluIF9wYWxldHRlLXN0eWxlcygkcGFsZXR0ZSkge1xuICBAaW5jbHVkZSBfZWxlbWVudC1jb2xvcih0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHBhbGV0dGUsIGRlZmF1bHQtY29udHJhc3QpLFxuICAgIHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkcGFsZXR0ZSkpO1xuXG4gIC5tYXQtcmlwcGxlLWVsZW1lbnQge1xuICAgIEBpbmNsdWRlIF9yaXBwbGUtYmFja2dyb3VuZCgkcGFsZXR0ZSwgZGVmYXVsdC1jb250cmFzdCwgMC4xKTtcbiAgfVxufVxuXG5AbWl4aW4gY29sb3IoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRpcy1kYXJrLXRoZW1lOiBtYXAuZ2V0KCRjb25maWcsIGlzLWRhcmspO1xuICAkcHJpbWFyeTogbWFwLmdldCgkY29uZmlnLCBwcmltYXJ5KTtcbiAgJGFjY2VudDogbWFwLmdldCgkY29uZmlnLCBhY2NlbnQpO1xuICAkd2FybjogbWFwLmdldCgkY29uZmlnLCB3YXJuKTtcbiAgJGJhY2tncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgYmFja2dyb3VuZCk7XG4gICRmb3JlZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGZvcmVncm91bmQpO1xuXG4gICR1bnNlbGVjdGVkLWJhY2tncm91bmQ6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYmFja2dyb3VuZCwgdW5zZWxlY3RlZC1jaGlwKTtcbiAgJHVuc2VsZWN0ZWQtZm9yZWdyb3VuZDogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCB0ZXh0KTtcblxuICAubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAge1xuICAgIEBpbmNsdWRlIF9lbGVtZW50LWNvbG9yKCR1bnNlbGVjdGVkLWZvcmVncm91bmQsICR1bnNlbGVjdGVkLWJhY2tncm91bmQpO1xuXG4gICAgJjpub3QoLm1hdC1jaGlwLWRpc2FibGVkKSB7XG4gICAgICAmOmFjdGl2ZSB7XG4gICAgICAgIEBpbmNsdWRlIHByaXZhdGUucHJpdmF0ZS10aGVtZS1lbGV2YXRpb24oMywgJGNvbmZpZyk7XG4gICAgICB9XG5cbiAgICAgIC5tYXQtY2hpcC1yZW1vdmU6aG92ZXIge1xuICAgICAgICBvcGFjaXR5OiAwLjU0O1xuICAgICAgfVxuICAgIH1cblxuICAgICYubWF0LWNoaXAtZGlzYWJsZWQge1xuICAgICAgb3BhY2l0eTogMC40O1xuICAgIH1cblxuICAgICY6OmFmdGVyIHtcbiAgICAgIGJhY2tncm91bmQ6IG1hcC5nZXQoJGZvcmVncm91bmQsIGJhc2UpO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZCB7XG4gICAgJi5tYXQtcHJpbWFyeSB7XG4gICAgICBAaW5jbHVkZSBfcGFsZXR0ZS1zdHlsZXMoJHByaW1hcnkpO1xuICAgIH1cblxuICAgICYubWF0LXdhcm4ge1xuICAgICAgQGluY2x1ZGUgX3BhbGV0dGUtc3R5bGVzKCR3YXJuKTtcbiAgICB9XG5cbiAgICAmLm1hdC1hY2NlbnQge1xuICAgICAgQGluY2x1ZGUgX3BhbGV0dGUtc3R5bGVzKCRhY2NlbnQpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gdHlwb2dyYXBoeSgkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHR5cG9ncmFwaHkucHJpdmF0ZS10eXBvZ3JhcGh5LXRvLTIwMTQtY29uZmlnKFxuICAgICAgdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJGNvbmZpZy1vci10aGVtZSkpO1xuICAubWF0LWNoaXAge1xuICAgIGZvbnQtc2l6ZTogdHlwb2dyYXBoeS11dGlscy5mb250LXNpemUoJGNvbmZpZywgYm9keS0yKTtcbiAgICBmb250LXdlaWdodDogdHlwb2dyYXBoeS11dGlscy5mb250LXdlaWdodCgkY29uZmlnLCBib2R5LTIpO1xuXG4gICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb24sXG4gICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbiB7XG4gICAgICBmb250LXNpemU6ICRjaGlwLXJlbW92ZS1mb250LXNpemU7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBfZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZykge1xuICAkdGhlbWU6IHRoZW1pbmcucHJpdmF0ZS1sZWdhY3ktZ2V0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICBAaW5jbHVkZSB0aGVtaW5nLnByaXZhdGUtY2hlY2stZHVwbGljYXRlLXRoZW1lLXN0eWxlcygkdGhlbWUsICdtYXQtY2hpcHMnKSB7XG4gICAgJGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJHRoZW1lKTtcbiAgICAkZGVuc2l0eTogdGhlbWluZy5nZXQtZGVuc2l0eS1jb25maWcoJHRoZW1lKTtcbiAgICAkdHlwb2dyYXBoeTogdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJHRoZW1lKTtcblxuICAgIEBpZiAkY29sb3IgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBjb2xvcigkY29sb3IpO1xuICAgIH1cbiAgICBAaWYgJGRlbnNpdHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBfZGVuc2l0eSgkZGVuc2l0eSk7XG4gICAgfVxuICAgIEBpZiAkdHlwb2dyYXBoeSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIHR5cG9ncmFwaHkoJHR5cG9ncmFwaHkpO1xuICAgIH1cbiAgfVxufVxuXG5cbiIsIkB1c2UgJ3Nhc3M6bWFwJztcbkB1c2UgJy4uL2NvcmUvdGhlbWluZy90aGVtaW5nJztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5JztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5LXV0aWxzJztcblxuQG1peGluIGNvbG9yKCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAkYmFja2dyb3VuZDogbWFwLmdldCgkY29uZmlnLCBiYWNrZ3JvdW5kKTtcbiAgJGZvcmVncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgZm9yZWdyb3VuZCk7XG5cbiAgLm1hdC10YWJsZSB7XG4gICAgYmFja2dyb3VuZDogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLCAnY2FyZCcpO1xuICB9XG5cbiAgLm1hdC10YWJsZSB0aGVhZCwgLm1hdC10YWJsZSB0Ym9keSwgLm1hdC10YWJsZSB0Zm9vdCxcbiAgbWF0LWhlYWRlci1yb3csIG1hdC1yb3csIG1hdC1mb290ZXItcm93LFxuICBbbWF0LWhlYWRlci1yb3ddLCBbbWF0LXJvd10sIFttYXQtZm9vdGVyLXJvd10sXG4gIC5tYXQtdGFibGUtc3RpY2t5IHtcbiAgICBiYWNrZ3JvdW5kOiBpbmhlcml0O1xuICB9XG5cbiAgbWF0LXJvdywgbWF0LWhlYWRlci1yb3csIG1hdC1mb290ZXItcm93LFxuICB0aC5tYXQtaGVhZGVyLWNlbGwsIHRkLm1hdC1jZWxsLCB0ZC5tYXQtZm9vdGVyLWNlbGwge1xuICAgIGJvcmRlci1ib3R0b20tY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgZGl2aWRlcik7XG4gIH1cblxuICAubWF0LWhlYWRlci1jZWxsIHtcbiAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBzZWNvbmRhcnktdGV4dCk7XG4gIH1cblxuICAubWF0LWNlbGwsIC5tYXQtZm9vdGVyLWNlbGwge1xuICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIHRleHQpO1xuICB9XG59XG5cbkBtaXhpbiB0eXBvZ3JhcGh5KCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdHlwb2dyYXBoeS5wcml2YXRlLXR5cG9ncmFwaHktdG8tMjAxNC1jb25maWcoXG4gICAgICB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKSk7XG4gIC5tYXQtdGFibGUge1xuICAgIGZvbnQtZmFtaWx5OiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtZmFtaWx5KCRjb25maWcpO1xuICB9XG5cbiAgLm1hdC1oZWFkZXItY2VsbCB7XG4gICAgZm9udC1zaXplOiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtc2l6ZSgkY29uZmlnLCBjYXB0aW9uKTtcbiAgICBmb250LXdlaWdodDogdHlwb2dyYXBoeS11dGlscy5mb250LXdlaWdodCgkY29uZmlnLCBib2R5LTIpO1xuICB9XG5cbiAgLm1hdC1jZWxsLCAubWF0LWZvb3Rlci1jZWxsIHtcbiAgICBmb250LXNpemU6IHR5cG9ncmFwaHktdXRpbHMuZm9udC1zaXplKCRjb25maWcsIGJvZHktMSk7XG4gIH1cbn1cblxuQG1peGluIF9kZW5zaXR5KCRjb25maWctb3ItdGhlbWUpIHt9XG5cbkBtaXhpbiB0aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKSB7XG4gICR0aGVtZTogdGhlbWluZy5wcml2YXRlLWxlZ2FjeS1nZXQtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZyk7XG4gIEBpbmNsdWRlIHRoZW1pbmcucHJpdmF0ZS1jaGVjay1kdXBsaWNhdGUtdGhlbWUtc3R5bGVzKCR0aGVtZSwgJ21hdC10YWJsZScpIHtcbiAgICAkY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkdGhlbWUpO1xuICAgICRkZW5zaXR5OiB0aGVtaW5nLmdldC1kZW5zaXR5LWNvbmZpZygkdGhlbWUpO1xuICAgICR0eXBvZ3JhcGh5OiB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkdGhlbWUpO1xuXG4gICAgQGlmICRjb2xvciAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIGNvbG9yKCRjb2xvcik7XG4gICAgfVxuICAgIEBpZiAkZGVuc2l0eSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIF9kZW5zaXR5KCRkZW5zaXR5KTtcbiAgICB9XG4gICAgQGlmICR0eXBvZ3JhcGh5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgdHlwb2dyYXBoeSgkdHlwb2dyYXBoeSk7XG4gICAgfVxuICB9XG59XG4iLCJAdXNlICdzYXNzOmNvbG9yJztcbkB1c2UgJ3Nhc3M6bWFwJztcbkB1c2UgJ3Nhc3M6bWF0aCc7XG5AdXNlICdzYXNzOm1ldGEnO1xuQHVzZSAnLi4vY29yZS9zdHlsZS9wcml2YXRlJztcbkB1c2UgJy4uL2NvcmUvdGhlbWluZy90aGVtaW5nJztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5JztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5LXV0aWxzJztcblxuXG4kc2VsZWN0ZWQtdG9kYXktYm94LXNoYWRvdy13aWR0aDogMXB4O1xuJHNlbGVjdGVkLWZhZGUtYW1vdW50OiAwLjY7XG4kcmFuZ2UtZmFkZS1hbW91bnQ6IDAuMjtcbiR0b2RheS1mYWRlLWFtb3VudDogMC4yO1xuJGNhbGVuZGFyLWJvZHktZm9udC1zaXplOiAxM3B4ICFkZWZhdWx0O1xuJGNhbGVuZGFyLXdlZWtkYXktdGFibGUtZm9udC1zaXplOiAxMXB4ICFkZWZhdWx0O1xuXG5AbWl4aW4gX2NvbG9yKCRwYWxldHRlKSB7XG4gIEBpbmNsdWRlIGRhdGUtcmFuZ2UtY29sb3JzKFxuICAgIHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkcGFsZXR0ZSwgZGVmYXVsdCwgJHJhbmdlLWZhZGUtYW1vdW50KSk7XG5cbiAgLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHBhbGV0dGUpO1xuICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHBhbGV0dGUsIGRlZmF1bHQtY29udHJhc3QpO1xuICB9XG5cbiAgLm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkID4gLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkIHtcbiAgICAkYmFja2dyb3VuZDogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRwYWxldHRlKTtcblxuICAgIEBpZiAobWV0YS50eXBlLW9mKCRiYWNrZ3JvdW5kKSA9PSBjb2xvcikge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogY29sb3IuYWRqdXN0KCRiYWNrZ3JvdW5kLCAkYWxwaGE6IC0kc2VsZWN0ZWQtZmFkZS1hbW91bnQpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAvLyBJZiB3ZSBjb3VsZG4ndCByZXNvbHZlIHRvIGJhY2tncm91bmQgdG8gYSBjb2xvciAoZS5nLiBpdCdzIGEgQ1NTIHZhcmlhYmxlKSxcbiAgICAgIC8vIGZhbGwgYmFjayB0byBmYWRpbmcgdGhlIGNvbnRlbnQgb3V0IHZpYSBgb3BhY2l0eWAuXG4gICAgICBvcGFjaXR5OiAkdG9kYXktZmFkZS1hbW91bnQ7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5Lm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkIHtcbiAgICBib3gtc2hhZG93OiBpbnNldCAwIDAgMCAkc2VsZWN0ZWQtdG9kYXktYm94LXNoYWRvdy13aWR0aFxuICAgICAgICAgICAgICAgIHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkcGFsZXR0ZSwgZGVmYXVsdC1jb250cmFzdCk7XG4gIH1cblxuICAubWF0LWNhbGVuZGFyLWJvZHktY2VsbDpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkKTpob3ZlcixcbiAgLmNkay1rZXlib2FyZC1mb2N1c2VkIC5tYXQtY2FsZW5kYXItYm9keS1hY3RpdmUsXG4gIC5jZGstcHJvZ3JhbS1mb2N1c2VkIC5tYXQtY2FsZW5kYXItYm9keS1hY3RpdmUge1xuICAgICYgPiAubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50IHtcbiAgICAgIEBpbmNsdWRlIF91bnNlbGVjdGVkLWNlbGwge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHBhbGV0dGUsIDAuMyk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vIFV0aWxpdHkgbWl4aW4gdG8gdGFyZ2V0IGNlbGxzIHRoYXQgYXJlbid0IHNlbGVjdGVkLiBVc2VkIHRvIG1ha2Ugc2VsZWN0b3IgZWFzaWVyIHRvIGZvbGxvdy5cbkBtaXhpbiBfdW5zZWxlY3RlZC1jZWxsIHtcbiAgJjpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuQG1peGluIGNvbG9yKCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAkZm9yZWdyb3VuZDogbWFwLmdldCgkY29uZmlnLCBmb3JlZ3JvdW5kKTtcbiAgJGJhY2tncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgYmFja2dyb3VuZCk7XG4gICRkaXNhYmxlZC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBkaXNhYmxlZC10ZXh0KTtcblxuICAubWF0LWNhbGVuZGFyLWFycm93IHtcbiAgICBib3JkZXItdG9wLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIGljb24pO1xuICB9XG5cbiAgLy8gVGhlIHByZXYvbmV4dCBidXR0b25zIG5lZWQgYSBiaXQgbW9yZSBzcGVjaWZpY2l0eSB0b1xuICAvLyBhdm9pZCBiZWluZyBvdmVyd3JpdHRlbiBieSB0aGUgLm1hdC1pY29uLWJ1dHRvbi5cbiAgLm1hdC1kYXRlcGlja2VyLXRvZ2dsZSxcbiAgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQgLm1hdC1jYWxlbmRhci1uZXh0LWJ1dHRvbixcbiAgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQgLm1hdC1jYWxlbmRhci1wcmV2aW91cy1idXR0b24ge1xuICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIGljb24pO1xuICB9XG5cbiAgLm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXIge1xuICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIGhpbnQtdGV4dCk7XG4gIH1cblxuICAubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlci1kaXZpZGVyOjphZnRlciB7XG4gICAgYmFja2dyb3VuZDogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBkaXZpZGVyKTtcbiAgfVxuXG4gIC5tYXQtY2FsZW5kYXItYm9keS1sYWJlbCB7XG4gICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgc2Vjb25kYXJ5LXRleHQpO1xuICB9XG5cbiAgLm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudCxcbiAgLm1hdC1kYXRlLXJhbmdlLWlucHV0LXNlcGFyYXRvciB7XG4gICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgdGV4dCk7XG4gICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgfVxuXG4gIC5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZCA+IC5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnQge1xuICAgIEBpbmNsdWRlIF91bnNlbGVjdGVkLWNlbGwge1xuICAgICAgY29sb3I6ICRkaXNhYmxlZC1jb2xvcjtcbiAgICB9XG4gIH1cblxuICAubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQgLm1hdC1kYXRlLXJhbmdlLWlucHV0LXNlcGFyYXRvciB7XG4gICAgY29sb3I6ICRkaXNhYmxlZC1jb2xvcjtcbiAgfVxuXG4gIC5tYXQtY2FsZW5kYXItYm9keS1pbi1wcmV2aWV3IHtcbiAgICAkZGl2aWRlci1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBkaXZpZGVyKTtcblxuICAgIEBpZiBtZXRhLnR5cGUtb2YoJGRpdmlkZXItY29sb3IpID09IGNvbG9yIHtcbiAgICAgIC8vIFRoZSBkaXZpZGVyIGNvbG9yIGlzIHNldCB1bmRlciB0aGUgYXNzdW1wdGlvbiB0aGF0IGl0J2xsIGJlIHVzZWRcbiAgICAgIC8vIGZvciBhIHNvbGlkIGJvcmRlciwgYnV0IGJlY2F1c2Ugd2UncmUgdXNpbmcgYSBkYXNoZWQgYm9yZGVyIGZvciB0aGVcbiAgICAgIC8vIHByZXZpZXcgcmFuZ2UsIHdlIG5lZWQgdG8gYnVtcCBpdHMgb3BhY2l0eSB0byBlbnN1cmUgdGhhdCBpdCdzIHZpc2libGUuXG4gICAgICBjb2xvcjogcmdiYSgkZGl2aWRlci1jb2xvciwgbWF0aC5taW4ob3BhY2l0eSgkZGl2aWRlci1jb2xvcikgKiAyLCAxKSk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIGNvbG9yOiAkZGl2aWRlci1jb2xvcjtcbiAgICB9XG4gIH1cblxuICAubWF0LWNhbGVuZGFyLWJvZHktdG9kYXkge1xuICAgIEBpbmNsdWRlIF91bnNlbGVjdGVkLWNlbGwge1xuICAgICAgLy8gTm90ZTogdGhvdWdoIGl0J3Mgbm90IHRleHQsIHRoZSBib3JkZXIgaXMgYSBoaW50IGFib3V0IHRoZSBmYWN0IHRoYXQgdGhpcyBpcyB0b2RheSdzIGRhdGUsXG4gICAgICAvLyBzbyB3ZSB1c2UgdGhlIGhpbnQgY29sb3IuXG4gICAgICBib3JkZXItY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgaGludC10ZXh0KTtcbiAgICB9XG4gIH1cblxuICAubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWQgPiAubWF0LWNhbGVuZGFyLWJvZHktdG9kYXkge1xuICAgIEBpbmNsdWRlIF91bnNlbGVjdGVkLWNlbGwge1xuICAgICAgJGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIGhpbnQtdGV4dCk7XG5cbiAgICAgIEBpZiAobWV0YS50eXBlLW9mKCRjb2xvcikgPT0gY29sb3IpIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiBjb2xvci5hZGp1c3QoJGNvbG9yLCAkYWxwaGE6IC0kdG9kYXktZmFkZS1hbW91bnQpO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAvLyBJZiB0aGUgY29sb3IgZGlkbid0IHJlc29sdmUgdG8gYSBjb2xvciB2YWx1ZSwgYnV0IHNvbWV0aGluZyBsaWtlIGEgQ1NTIHZhcmlhYmxlLCB3ZSBjYW4ndFxuICAgICAgICAvLyBmYWRlIGl0IG91dCBzbyB3ZSBmYWxsIGJhY2sgdG8gcmVkdWNpbmcgdGhlIGVsZW1lbnQgb3BhY2l0eS4gTm90ZSB0aGF0IHdlIGRvbid0IHVzZSB0aGVcbiAgICAgICAgLy8gJG1hdC1kYXRlcGlja2VyLXRvZGF5LWZhZGUtYW1vdW50LCBiZWNhdXNlIGhpbnQgdGV4dCB1c3VhbGx5IGhhcyBzb21lIG9wYWNpdHkgYXBwbGllZFxuICAgICAgICAvLyB0byBpdCBhbHJlYWR5IGFuZCB3ZSBkb24ndCB3YW50IHRoZW0gdG8gc3RhY2sgb24gdG9wIG9mIGVhY2ggb3RoZXIuXG4gICAgICAgIG9wYWNpdHk6IDAuNTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBfY29sb3IobWFwLmdldCgkY29uZmlnLCBwcmltYXJ5KSk7XG5cbiAgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQge1xuICAgIEBpbmNsdWRlIHByaXZhdGUucHJpdmF0ZS10aGVtZS1lbGV2YXRpb24oNCwgJGNvbmZpZyk7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLCBjYXJkKTtcbiAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCB0ZXh0KTtcblxuICAgICYubWF0LWFjY2VudCB7XG4gICAgICBAaW5jbHVkZSBfY29sb3IobWFwLmdldCgkY29uZmlnLCBhY2NlbnQpKTtcbiAgICB9XG5cbiAgICAmLm1hdC13YXJuIHtcbiAgICAgIEBpbmNsdWRlIF9jb2xvcihtYXAuZ2V0KCRjb25maWcsIHdhcm4pKTtcbiAgICB9XG4gIH1cblxuICAubWF0LWRhdGVwaWNrZXItY29udGVudC10b3VjaCB7XG4gICAgQGluY2x1ZGUgcHJpdmF0ZS5wcml2YXRlLXRoZW1lLWVsZXZhdGlvbigyNCwgJGNvbmZpZyk7XG4gIH1cblxuICAubWF0LWRhdGVwaWNrZXItdG9nZ2xlLWFjdGl2ZSB7XG4gICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZShtYXAuZ2V0KCRjb25maWcsIHByaW1hcnkpLCB0ZXh0KTtcblxuICAgICYubWF0LWFjY2VudCB7XG4gICAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKG1hcC5nZXQoJGNvbmZpZywgYWNjZW50KSwgdGV4dCk7XG4gICAgfVxuXG4gICAgJi5tYXQtd2FybiB7XG4gICAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKG1hcC5nZXQoJGNvbmZpZywgd2FybiksIHRleHQpO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtZGF0ZS1yYW5nZS1pbnB1dC1pbm5lcltkaXNhYmxlZF0ge1xuICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIGRpc2FibGVkLXRleHQpO1xuICB9XG59XG5cbkBtaXhpbiB0eXBvZ3JhcGh5KCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdHlwb2dyYXBoeS5wcml2YXRlLXR5cG9ncmFwaHktdG8tMjAxNC1jb25maWcoXG4gICAgICB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKSk7XG4gIC5tYXQtY2FsZW5kYXIge1xuICAgIGZvbnQtZmFtaWx5OiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtZmFtaWx5KCRjb25maWcpO1xuICB9XG5cbiAgLm1hdC1jYWxlbmRhci1ib2R5IHtcbiAgICBmb250LXNpemU6ICRjYWxlbmRhci1ib2R5LWZvbnQtc2l6ZTtcbiAgfVxuXG4gIC5tYXQtY2FsZW5kYXItYm9keS1sYWJlbCxcbiAgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uIHtcbiAgICBmb250OiB7XG4gICAgICBzaXplOiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtc2l6ZSgkY29uZmlnLCBidXR0b24pO1xuICAgICAgd2VpZ2h0OiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtd2VpZ2h0KCRjb25maWcsIGJ1dHRvbik7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXIgdGgge1xuICAgIGZvbnQ6IHtcbiAgICAgIHNpemU6ICRjYWxlbmRhci13ZWVrZGF5LXRhYmxlLWZvbnQtc2l6ZTtcbiAgICAgIHdlaWdodDogdHlwb2dyYXBoeS11dGlscy5mb250LXdlaWdodCgkY29uZmlnLCBib2R5LTEpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gZGF0ZS1yYW5nZS1jb2xvcnMoXG4gICRyYW5nZS1jb2xvcixcbiAgJGNvbXBhcmlzb24tY29sb3I6IHJnYmEoI2Y5YWIwMCwgJHJhbmdlLWZhZGUtYW1vdW50KSxcbiAgJG92ZXJsYXAtY29sb3I6ICNhOGRhYjUsXG4gICRvdmVybGFwLXNlbGVjdGVkLWNvbG9yOiBjb2xvci5hZGp1c3QoJG92ZXJsYXAtY29sb3IsICRsaWdodG5lc3M6IC0zMCUpKSB7XG5cbiAgLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlOjpiZWZvcmUge1xuICAgIGJhY2tncm91bmQ6ICRyYW5nZS1jb2xvcjtcbiAgfVxuXG4gIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCxcbiAgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2U6OmJlZm9yZSB7XG4gICAgYmFja2dyb3VuZDogJGNvbXBhcmlzb24tY29sb3I7XG4gIH1cblxuICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnQ6OmJlZm9yZSxcbiAgW2Rpcj0ncnRsJ10gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZDo6YmVmb3JlIHtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsICRyYW5nZS1jb2xvciA1MCUsICRjb21wYXJpc29uLWNvbG9yIDUwJSk7XG4gIH1cblxuICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2UtZW5kOjpiZWZvcmUsXG4gIFtkaXI9J3J0bCddIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydDo6YmVmb3JlIHtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gbGVmdCwgJHJhbmdlLWNvbG9yIDUwJSwgJGNvbXBhcmlzb24tY29sb3IgNTAlKTtcbiAgfVxuXG4gIC5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZSA+IC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCxcbiAgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2UubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2U6OmFmdGVyIHtcbiAgICBiYWNrZ3JvdW5kOiAkb3ZlcmxhcC1jb2xvcjtcbiAgfVxuXG4gIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCxcbiAgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2UgPiAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQge1xuICAgIGJhY2tncm91bmQ6ICRvdmVybGFwLXNlbGVjdGVkLWNvbG9yO1xuICB9XG59XG5cbkBtaXhpbiBfZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZykge1xuICAkdGhlbWU6IHRoZW1pbmcucHJpdmF0ZS1sZWdhY3ktZ2V0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICBAaW5jbHVkZSB0aGVtaW5nLnByaXZhdGUtY2hlY2stZHVwbGljYXRlLXRoZW1lLXN0eWxlcygkdGhlbWUsICdtYXQtZGF0ZXBpY2tlcicpIHtcbiAgICAkY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkdGhlbWUpO1xuICAgICRkZW5zaXR5OiB0aGVtaW5nLmdldC1kZW5zaXR5LWNvbmZpZygkdGhlbWUpO1xuICAgICR0eXBvZ3JhcGh5OiB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkdGhlbWUpO1xuXG4gICAgQGlmICRjb2xvciAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIGNvbG9yKCRjb2xvcik7XG4gICAgfVxuICAgIEBpZiAkZGVuc2l0eSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIF9kZW5zaXR5KCRkZW5zaXR5KTtcbiAgICB9XG4gICAgQGlmICR0eXBvZ3JhcGh5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgdHlwb2dyYXBoeSgkdHlwb2dyYXBoeSk7XG4gICAgfVxuICB9XG59XG4iLCJAdXNlICdzYXNzOm1hcCc7XG5AdXNlICcuLi9jb3JlL3N0eWxlL3ByaXZhdGUnO1xuQHVzZSAnLi4vY29yZS90aGVtaW5nL3RoZW1pbmcnO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHknO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHktdXRpbHMnO1xuXG5cbkBtaXhpbiBjb2xvcigkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJGJhY2tncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgYmFja2dyb3VuZCk7XG4gICRmb3JlZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGZvcmVncm91bmQpO1xuXG4gIC5tYXQtZGlhbG9nLWNvbnRhaW5lciB7XG4gICAgQGluY2x1ZGUgcHJpdmF0ZS5wcml2YXRlLXRoZW1lLWVsZXZhdGlvbigyNCwgJGNvbmZpZyk7XG4gICAgYmFja2dyb3VuZDogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLCBkaWFsb2cpO1xuICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIHRleHQpO1xuICB9XG59XG5cbkBtaXhpbiB0eXBvZ3JhcGh5KCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdHlwb2dyYXBoeS5wcml2YXRlLXR5cG9ncmFwaHktdG8tMjAxNC1jb25maWcoXG4gICAgICB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKSk7XG4gIC5tYXQtZGlhbG9nLXRpdGxlIHtcbiAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5LXV0aWxzLnR5cG9ncmFwaHktbGV2ZWwoJGNvbmZpZywgdGl0bGUpO1xuICB9XG59XG5cbkBtaXhpbiBfZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZykge1xuICAkdGhlbWU6IHRoZW1pbmcucHJpdmF0ZS1sZWdhY3ktZ2V0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICBAaW5jbHVkZSB0aGVtaW5nLnByaXZhdGUtY2hlY2stZHVwbGljYXRlLXRoZW1lLXN0eWxlcygkdGhlbWUsICdtYXQtZGlhbG9nJykge1xuICAgICRjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgJGRlbnNpdHk6IHRoZW1pbmcuZ2V0LWRlbnNpdHktY29uZmlnKCR0aGVtZSk7XG4gICAgJHR5cG9ncmFwaHk6IHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCR0aGVtZSk7XG5cbiAgICBAaWYgJGNvbG9yICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgX2RlbnNpdHkoJGRlbnNpdHkpO1xuICAgIH1cbiAgICBAaWYgJHR5cG9ncmFwaHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5KCR0eXBvZ3JhcGh5KTtcbiAgICB9XG4gIH1cbn1cbiIsIkB1c2UgJ3Nhc3M6bWFwJztcbkB1c2UgJy4uL2NvcmUvZGVuc2l0eS9wcml2YXRlL2NvbXBhdGliaWxpdHknO1xuQHVzZSAnLi4vY29yZS90aGVtaW5nL3RoZW1pbmcnO1xuQHVzZSAnLi4vY29yZS9zdHlsZS9wcml2YXRlJztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5JztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5LXV0aWxzJztcbkB1c2UgJy4vZXhwYW5zaW9uLXZhcmlhYmxlcyc7XG5AdXNlICcuL2V4cGFuc2lvbi1taXhpbnMnO1xuXG5AbWl4aW4gY29sb3IoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRiYWNrZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGJhY2tncm91bmQpO1xuICAkZm9yZWdyb3VuZDogbWFwLmdldCgkY29uZmlnLCBmb3JlZ3JvdW5kKTtcblxuICAubWF0LWV4cGFuc2lvbi1wYW5lbCB7XG4gICAgQGluY2x1ZGUgcHJpdmF0ZS5wcml2YXRlLXRoZW1lLW92ZXJyaWRhYmxlLWVsZXZhdGlvbigyLCAkY29uZmlnKTtcbiAgICBiYWNrZ3JvdW5kOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGJhY2tncm91bmQsIGNhcmQpO1xuICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIHRleHQpO1xuICB9XG5cbiAgLm1hdC1hY3Rpb24tcm93IHtcbiAgICBib3JkZXItdG9wLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIGRpdmlkZXIpO1xuICB9XG5cbiAgQGluY2x1ZGUgZXhwYW5zaW9uLW1peGlucy5wcml2YXRlLWV4cGFuc2lvbi1mb2N1cyB7XG4gICAgYmFja2dyb3VuZDogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLCBob3Zlcik7XG4gIH1cblxuICAvLyBEaXNhYmxlIHRoZSBob3ZlciBvbiB0b3VjaCBkZXZpY2VzIHNpbmNlIGl0IGNhbiBhcHBlYXIgbGlrZSBpdCBpcyBzdHVjay4gV2UgY2FuJ3QgdXNlXG4gIC8vIGBAbWVkaWEgKGhvdmVyKWAgYWJvdmUsIGJlY2F1c2UgdGhlIGRlc2t0b3Agc3VwcG9ydCBicm93c2VyIHN1cHBvcnQgaXNuJ3QgZ3JlYXQuXG4gIEBtZWRpYSAoaG92ZXI6IG5vbmUpIHtcbiAgICAubWF0LWV4cGFuc2lvbi1wYW5lbDpub3QoLm1hdC1leHBhbmRlZCk6bm90KFthcmlhLWRpc2FibGVkPSd0cnVlJ10pXG4gICAgICAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZDogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLCBjYXJkKTtcbiAgICB9XG4gIH1cblxuICAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXItdGl0bGUge1xuICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIHRleHQpO1xuICB9XG5cbiAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLWRlc2NyaXB0aW9uLFxuICAubWF0LWV4cGFuc2lvbi1pbmRpY2F0b3I6OmFmdGVyIHtcbiAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBzZWNvbmRhcnktdGV4dCk7XG4gIH1cblxuICAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbYXJpYS1kaXNhYmxlZD0ndHJ1ZSddIHtcbiAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBkaXNhYmxlZC1idXR0b24pO1xuXG4gICAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLXRpdGxlLFxuICAgIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci1kZXNjcmlwdGlvbiB7XG4gICAgICBjb2xvcjogaW5oZXJpdDtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHR5cG9ncmFwaHkoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0eXBvZ3JhcGh5LnByaXZhdGUtdHlwb2dyYXBoeS10by0yMDE0LWNvbmZpZyhcbiAgICAgIHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCRjb25maWctb3ItdGhlbWUpKTtcbiAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyIHtcbiAgICBmb250OiB7XG4gICAgICBmYW1pbHk6IHR5cG9ncmFwaHktdXRpbHMuZm9udC1mYW1pbHkoJGNvbmZpZywgc3ViaGVhZGluZy0xKTtcbiAgICAgIHNpemU6IHR5cG9ncmFwaHktdXRpbHMuZm9udC1zaXplKCRjb25maWcsIHN1YmhlYWRpbmctMSk7XG4gICAgICB3ZWlnaHQ6IHR5cG9ncmFwaHktdXRpbHMuZm9udC13ZWlnaHQoJGNvbmZpZywgc3ViaGVhZGluZy0xKTtcbiAgICB9XG4gIH1cblxuICAubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50IHtcbiAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5LXV0aWxzLnR5cG9ncmFwaHktbGV2ZWwoJGNvbmZpZywgYm9keS0xKTtcbiAgfVxufVxuXG5AbWl4aW4gZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRkZW5zaXR5LXNjYWxlOiB0aGVtaW5nLmdldC1kZW5zaXR5LWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJGV4cGFuZGVkLWhlaWdodDogY29tcGF0aWJpbGl0eS5wcml2YXRlLWRlbnNpdHktcHJvcC12YWx1ZShcbiAgICAgICAgZXhwYW5zaW9uLXZhcmlhYmxlcy4kaGVhZGVyLWRlbnNpdHktY29uZmlnLCAkZGVuc2l0eS1zY2FsZSwgZXhwYW5kZWQtaGVpZ2h0KTtcbiAgJGNvbGxhcHNlZC1oZWlnaHQ6IGNvbXBhdGliaWxpdHkucHJpdmF0ZS1kZW5zaXR5LXByb3AtdmFsdWUoXG4gICAgICBleHBhbnNpb24tdmFyaWFibGVzLiRoZWFkZXItZGVuc2l0eS1jb25maWcsICRkZW5zaXR5LXNjYWxlLCBjb2xsYXBzZWQtaGVpZ2h0KTtcblxuICBAaW5jbHVkZSBjb21wYXRpYmlsaXR5LnByaXZhdGUtZGVuc2l0eS1sZWdhY3ktY29tcGF0aWJpbGl0eSgpIHtcbiAgICAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXIge1xuICAgICAgaGVpZ2h0OiAkY29sbGFwc2VkLWhlaWdodDtcblxuICAgICAgJi5tYXQtZXhwYW5kZWQge1xuICAgICAgICBoZWlnaHQ6ICRleHBhbmRlZC1oZWlnaHQ7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiB0aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKSB7XG4gICR0aGVtZTogdGhlbWluZy5wcml2YXRlLWxlZ2FjeS1nZXQtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZyk7XG4gIEBpbmNsdWRlIHRoZW1pbmcucHJpdmF0ZS1jaGVjay1kdXBsaWNhdGUtdGhlbWUtc3R5bGVzKCR0aGVtZSwgJ21hdC1leHBhbnNpb24nKSB7XG4gICAgJGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJHRoZW1lKTtcbiAgICAkZGVuc2l0eTogdGhlbWluZy5nZXQtZGVuc2l0eS1jb25maWcoJHRoZW1lKTtcbiAgICAkdHlwb2dyYXBoeTogdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJHRoZW1lKTtcblxuICAgIEBpZiAkY29sb3IgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBjb2xvcigkY29sb3IpO1xuICAgIH1cbiAgICBAaWYgJGRlbnNpdHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBkZW5zaXR5KCRkZW5zaXR5KTtcbiAgICB9XG4gICAgQGlmICR0eXBvZ3JhcGh5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgdHlwb2dyYXBoeSgkdHlwb2dyYXBoeSk7XG4gICAgfVxuICB9XG59XG4iLCJAdXNlICdzYXNzOm1hcCc7XG5AdXNlICcuLi9jb3JlL3RoZW1pbmcvdGhlbWluZyc7XG5AdXNlICcuLi9jb3JlL3R5cG9ncmFwaHkvdHlwb2dyYXBoeSc7XG5AdXNlICcuLi9jb3JlL3R5cG9ncmFwaHkvdHlwb2dyYXBoeS11dGlscyc7XG5cbkB1c2UgJy4vZm9ybS1maWVsZC1maWxsLXRoZW1lLnNjc3MnO1xuQHVzZSAnLi9mb3JtLWZpZWxkLWxlZ2FjeS10aGVtZS5zY3NzJztcbkB1c2UgJy4vZm9ybS1maWVsZC1vdXRsaW5lLXRoZW1lLnNjc3MnO1xuQHVzZSAnLi9mb3JtLWZpZWxkLXN0YW5kYXJkLXRoZW1lLnNjc3MnO1xuXG4vLyBDb2xvciBzdHlsZXMgdGhhdCBhcHBseSB0byBhbGwgYXBwZWFyYW5jZXMgb2YgdGhlIGZvcm0tZmllbGQuXG5AbWl4aW4gY29sb3IoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRwcmltYXJ5OiBtYXAuZ2V0KCRjb25maWcsIHByaW1hcnkpO1xuICAkYWNjZW50OiBtYXAuZ2V0KCRjb25maWcsIGFjY2VudCk7XG4gICR3YXJuOiBtYXAuZ2V0KCRjb25maWcsIHdhcm4pO1xuICAkYmFja2dyb3VuZDogbWFwLmdldCgkY29uZmlnLCBiYWNrZ3JvdW5kKTtcbiAgJGZvcmVncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgZm9yZWdyb3VuZCk7XG4gICRpcy1kYXJrLXRoZW1lOiBtYXAuZ2V0KCRjb25maWcsIGlzLWRhcmspO1xuXG4gIC8vIExhYmVsIGNvbG9ycy4gUmVxdWlyZWQgaXMgdXNlZCBmb3IgdGhlIGAqYCBzdGFyIHNob3duIGluIHRoZSBsYWJlbC5cbiAgJGxhYmVsLWNvbG9yOlxuICAgIHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgc2Vjb25kYXJ5LXRleHQsIGlmKCRpcy1kYXJrLXRoZW1lLCAwLjcsIDAuNikpO1xuICAkZm9jdXNlZC1sYWJlbC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRwcmltYXJ5LCB0ZXh0KTtcbiAgJHJlcXVpcmVkLWxhYmVsLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGFjY2VudCwgdGV4dCk7XG5cbiAgLy8gVW5kZXJsaW5lIGNvbG9ycy5cbiAgJHVuZGVybGluZS1jb2xvci1iYXNlOlxuICAgIHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgZGl2aWRlciwgaWYoJGlzLWRhcmstdGhlbWUsIDEsIDAuODcpKTtcbiAgJHVuZGVybGluZS1jb2xvci1hY2NlbnQ6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYWNjZW50LCB0ZXh0KTtcbiAgJHVuZGVybGluZS1jb2xvci13YXJuOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHdhcm4sIHRleHQpO1xuICAkdW5kZXJsaW5lLWZvY3VzZWQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkcHJpbWFyeSwgdGV4dCk7XG5cbiAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsIHtcbiAgICBjb2xvcjogJGxhYmVsLWNvbG9yO1xuICB9XG5cbiAgLm1hdC1oaW50IHtcbiAgICBjb2xvcjogJGxhYmVsLWNvbG9yO1xuICB9XG5cbiAgLm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkIC5tYXQtZm9ybS1maWVsZC1sYWJlbCB7XG4gICAgY29sb3I6ICRmb2N1c2VkLWxhYmVsLWNvbG9yO1xuXG4gICAgJi5tYXQtYWNjZW50IHtcbiAgICAgIGNvbG9yOiAkdW5kZXJsaW5lLWNvbG9yLWFjY2VudDtcbiAgICB9XG5cbiAgICAmLm1hdC13YXJuIHtcbiAgICAgIGNvbG9yOiAkdW5kZXJsaW5lLWNvbG9yLXdhcm47XG4gICAgfVxuICB9XG5cbiAgLm1hdC1mb2N1c2VkIC5tYXQtZm9ybS1maWVsZC1yZXF1aXJlZC1tYXJrZXIge1xuICAgIGNvbG9yOiAkcmVxdWlyZWQtbGFiZWwtY29sb3I7XG4gIH1cblxuICAubWF0LWZvcm0tZmllbGQtcmlwcGxlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdW5kZXJsaW5lLWNvbG9yLWJhc2U7XG4gIH1cblxuICAubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWQge1xuICAgIC5tYXQtZm9ybS1maWVsZC1yaXBwbGUge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHVuZGVybGluZS1mb2N1c2VkLWNvbG9yO1xuXG4gICAgICAmLm1hdC1hY2NlbnQge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdW5kZXJsaW5lLWNvbG9yLWFjY2VudDtcbiAgICAgIH1cblxuICAgICAgJi5tYXQtd2FybiB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR1bmRlcmxpbmUtY29sb3Itd2FybjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdC5tYXQtZm9jdXNlZDpub3QoLm1hdC1mb3JtLWZpZWxkLWludmFsaWQpIHtcbiAgICAubWF0LWZvcm0tZmllbGQtaW5maXg6OmFmdGVyIHtcbiAgICAgIGNvbG9yOiAkdW5kZXJsaW5lLWZvY3VzZWQtY29sb3I7XG4gICAgfVxuXG4gICAgJi5tYXQtYWNjZW50IC5tYXQtZm9ybS1maWVsZC1pbmZpeDo6YWZ0ZXIge1xuICAgICAgY29sb3I6ICR1bmRlcmxpbmUtY29sb3ItYWNjZW50O1xuICAgIH1cblxuICAgICYubWF0LXdhcm4gLm1hdC1mb3JtLWZpZWxkLWluZml4OjphZnRlciB7XG4gICAgICBjb2xvcjogJHVuZGVybGluZS1jb2xvci13YXJuO1xuICAgIH1cbiAgfVxuXG4gIC8vIFN0eWxpbmcgZm9yIHRoZSBlcnJvciBzdGF0ZSBvZiB0aGUgZm9ybSBmaWVsZC4gTm90ZSB0aGF0IHdoaWxlIHRoZSBzYW1lIGNhbiBiZVxuICAvLyBhY2hpZXZlZCB3aXRoIHRoZSBuZy0qIGNsYXNzZXMsIHdlIHVzZSB0aGlzIGFwcHJvYWNoIGluIG9yZGVyIHRvIGVuc3VyZSB0aGF0IHRoZSBzYW1lXG4gIC8vIGxvZ2ljIGlzIHVzZWQgdG8gc3R5bGUgdGhlIGVycm9yIHN0YXRlIGFuZCB0byBzaG93IHRoZSBlcnJvciBtZXNzYWdlcy5cbiAgLm1hdC1mb3JtLWZpZWxkLm1hdC1mb3JtLWZpZWxkLWludmFsaWQge1xuICAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbCB7XG4gICAgICBjb2xvcjogJHVuZGVybGluZS1jb2xvci13YXJuO1xuXG4gICAgICAmLm1hdC1hY2NlbnQsXG4gICAgICAubWF0LWZvcm0tZmllbGQtcmVxdWlyZWQtbWFya2VyIHtcbiAgICAgICAgY29sb3I6ICR1bmRlcmxpbmUtY29sb3Itd2FybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAubWF0LWZvcm0tZmllbGQtcmlwcGxlLFxuICAgIC5tYXQtZm9ybS1maWVsZC1yaXBwbGUubWF0LWFjY2VudCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdW5kZXJsaW5lLWNvbG9yLXdhcm47XG4gICAgfVxuICB9XG5cbiAgLm1hdC1lcnJvciB7XG4gICAgY29sb3I6ICR1bmRlcmxpbmUtY29sb3Itd2FybjtcbiAgfVxuXG4gIEBpbmNsdWRlIGZvcm0tZmllbGQtbGVnYWN5LXRoZW1lLmxlZ2FjeS1jb2xvcigkY29uZmlnKTtcbiAgQGluY2x1ZGUgZm9ybS1maWVsZC1zdGFuZGFyZC10aGVtZS5zdGFuZGFyZC1jb2xvcigkY29uZmlnKTtcbiAgQGluY2x1ZGUgZm9ybS1maWVsZC1maWxsLXRoZW1lLmZpbGwtY29sb3IoJGNvbmZpZyk7XG4gIEBpbmNsdWRlIGZvcm0tZmllbGQtb3V0bGluZS10aGVtZS5vdXRsaW5lLWNvbG9yKCRjb25maWcpO1xufVxuXG4vLyBVc2VkIHRvIG1ha2UgaW5zdGFuY2VzIG9mIHRoZSBfbWF0LWZvcm0tZmllbGQtbGFiZWwtZmxvYXRpbmcgbWl4aW4gbmVnbGlnaWJseSBkaWZmZXJlbnQsXG4vLyBhbmQgcHJldmVudCBHb29nbGUncyBDU1MgT3B0aW1pemVyIGZyb20gY29sbGFwc2luZyB0aGUgZGVjbGFyYXRpb25zLiBUaGlzIGlzIG5lZWRlZCBiZWNhdXNlIHNvbWVcbi8vIG9mIHRoZSBzZWxlY3RvcnMgY29udGFpbiBwc2V1ZG8tY2xhc3NlcyBub3QgcmVjb2duaXplZCBpbiBhbGwgYnJvd3NlcnMuIElmIGEgYnJvd3NlciBlbmNvdW50ZXJzXG4vLyBhbiB1bmtub3duIHBzZXVkby1jbGFzcyBpdCB3aWxsIGRpc2NhcmQgdGhlIGVudGlyZSBydWxlIHNldC5cbiRkZWR1cGU6IDA7XG5cbi8vIEFwcGxpZXMgYSBmbG9hdGluZyBsYWJlbCBhYm92ZSB0aGUgZm9ybSBmaWVsZCBjb250cm9sIGl0c2VsZi5cbkBtaXhpbiBfbGFiZWwtZmxvYXRpbmcoJGZvbnQtc2NhbGUsICRpbmZpeC1wYWRkaW5nLCAkaW5maXgtbWFyZ2luLXRvcCkge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLSRpbmZpeC1tYXJnaW4tdG9wIC0gJGluZml4LXBhZGRpbmcgKyAkZGVkdXBlKVxuICAgICAgICAgICAgIHNjYWxlKCRmb250LXNjYWxlKTtcbiAgd2lkdGg6IDEwMCUgLyAkZm9udC1zY2FsZSArICRkZWR1cGU7XG5cbiAgJGRlZHVwZTogJGRlZHVwZSArIDAuMDAwMDEgIWdsb2JhbDtcbn1cblxuQG1peGluIHR5cG9ncmFwaHkoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0eXBvZ3JhcGh5LnByaXZhdGUtdHlwb2dyYXBoeS10by0yMDE0LWNvbmZpZyhcbiAgICAgIHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCRjb25maWctb3ItdGhlbWUpKTtcbiAgLy8gVGhlIHVuaXQtbGVzcyBsaW5lLWhlaWdodCBmcm9tIHRoZSBmb250IGNvbmZpZy5cbiAgJGxpbmUtaGVpZ2h0OiB0eXBvZ3JhcGh5LXV0aWxzLmxpbmUtaGVpZ2h0KCRjb25maWcsIGlucHV0KTtcblxuICAvLyBUaGUgYW1vdW50IHRvIHNjYWxlIHRoZSBmb250IGZvciB0aGUgZmxvYXRpbmcgbGFiZWwgYW5kIHN1YnNjcmlwdC5cbiAgJHN1YnNjcmlwdC1mb250LXNjYWxlOiAwLjc1O1xuICAvLyBUaGUgYW1vdW50IHRvIHNjYWxlIHRoZSBmb250IGZvciB0aGUgcHJlZml4IGFuZCBzdWZmaXggaWNvbnMuXG4gICRwcmVmaXgtc3VmZml4LWljb24tZm9udC1zY2FsZTogMS41O1xuXG4gIC8vIFRoZSBwYWRkaW5nIG9uIHRoZSBpbmZpeC4gTW9ja3Mgc2hvdyBoYWxmIG9mIHRoZSB0ZXh0IHNpemUuXG4gICRpbmZpeC1wYWRkaW5nOiAwLjVlbTtcbiAgLy8gVGhlIG1hcmdpbiBhcHBsaWVkIHRvIHRoZSBmb3JtLWZpZWxkLWluZml4IHRvIHJlc2VydmUgc3BhY2UgZm9yIHRoZSBmbG9hdGluZyBsYWJlbC5cbiAgJGluZml4LW1hcmdpbi10b3A6IDFlbSAqICRsaW5lLWhlaWdodCAqICRzdWJzY3JpcHQtZm9udC1zY2FsZTtcbiAgLy8gRm9udCBzaXplIHRvIHVzZSBmb3IgdGhlIGxhYmVsIGFuZCBzdWJzY3JpcHQgdGV4dC5cbiAgJHN1YnNjcmlwdC1mb250LXNpemU6ICRzdWJzY3JpcHQtZm9udC1zY2FsZSAqIDEwMCU7XG4gIC8vIEZvbnQgc2l6ZSB0byB1c2UgZm9yIHRoZSBmb3IgdGhlIHByZWZpeCBhbmQgc3VmZml4IGljb25zLlxuICAkcHJlZml4LXN1ZmZpeC1pY29uLWZvbnQtc2l6ZTogJHByZWZpeC1zdWZmaXgtaWNvbi1mb250LXNjYWxlICogMTAwJTtcbiAgLy8gVGhlIHNwYWNlIGJldHdlZW4gdGhlIGJvdHRvbSBvZiB0aGUgLm1hdC1mb3JtLWZpZWxkLWZsZXggYXJlYSBhbmQgdGhlIHN1YnNjcmlwdCB3cmFwcGVyLlxuICAvLyBNb2NrcyBzaG93IGhhbGYgb2YgdGhlIHRleHQgc2l6ZSwgYnV0IHRoaXMgbWFyZ2luIGlzIGFwcGxpZWQgdG8gYW4gZWxlbWVudCB3aXRoIHRoZSBzdWJzY3JpcHRcbiAgLy8gdGV4dCBmb250IHNpemUsIHNvIHdlIG5lZWQgdG8gZGl2aWRlIGJ5IHRoZSBzY2FsZSBmYWN0b3IgdG8gbWFrZSBpdCBoYWxmIG9mIHRoZSBvcmlnaW5hbCB0ZXh0XG4gIC8vIHNpemUuXG4gICRzdWJzY3JpcHQtbWFyZ2luLXRvcDogMC41ZW0gLyAkc3Vic2NyaXB0LWZvbnQtc2NhbGU7XG4gIC8vIFRoZSBwYWRkaW5nIGFwcGxpZWQgdG8gdGhlIGZvcm0tZmllbGQtd3JhcHBlciB0byByZXNlcnZlIHNwYWNlIGZvciB0aGUgc3Vic2NyaXB0LCBzaW5jZSBpdCdzXG4gIC8vIGFic29sdXRlbHkgcG9zaXRpb25lZC4gVGhpcyBpcyBhIGNvbWJpbmF0aW9uIG9mIHRoZSBzdWJzY3JpcHQncyBtYXJnaW4gYW5kIGxpbmUtaGVpZ2h0LCBidXQgd2VcbiAgLy8gbmVlZCB0byBtdWx0aXBseSBieSB0aGUgc3Vic2NyaXB0IGZvbnQgc2NhbGUgZmFjdG9yIHNpbmNlIHRoZSB3cmFwcGVyIGhhcyBhIGxhcmdlciBmb250IHNpemUuXG4gICR3cmFwcGVyLXBhZGRpbmctYm90dG9tOiAoJHN1YnNjcmlwdC1tYXJnaW4tdG9wICsgJGxpbmUtaGVpZ2h0KSAqICRzdWJzY3JpcHQtZm9udC1zY2FsZTtcblxuICAubWF0LWZvcm0tZmllbGQge1xuICAgIEBpbmNsdWRlIHR5cG9ncmFwaHktdXRpbHMudHlwb2dyYXBoeS1sZXZlbCgkY29uZmlnLCBpbnB1dCk7XG4gIH1cblxuICAubWF0LWZvcm0tZmllbGQtd3JhcHBlciB7XG4gICAgcGFkZGluZy1ib3R0b206ICR3cmFwcGVyLXBhZGRpbmctYm90dG9tO1xuICB9XG5cbiAgLm1hdC1mb3JtLWZpZWxkLXByZWZpeCxcbiAgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeCB7XG4gICAgLy8gQWxsb3cgaWNvbnMgaW4gYSBwcmVmaXggb3Igc3VmZml4IHRvIGFkYXB0IHRvIHRoZSBjb3JyZWN0IHNpemUuXG4gICAgLm1hdC1pY29uIHtcbiAgICAgIGZvbnQtc2l6ZTogJHByZWZpeC1zdWZmaXgtaWNvbi1mb250LXNpemU7XG4gICAgICBsaW5lLWhlaWdodDogJGxpbmUtaGVpZ2h0O1xuICAgIH1cblxuICAgIC8vIEFsbG93IGljb24gYnV0dG9ucyBpbiBhIHByZWZpeCBvciBzdWZmaXggdG8gYWRhcHQgdG8gdGhlIGNvcnJlY3Qgc2l6ZS5cbiAgICAubWF0LWljb24tYnV0dG9uIHtcbiAgICAgIGhlaWdodDogJHByZWZpeC1zdWZmaXgtaWNvbi1mb250LXNjYWxlICogMWVtO1xuICAgICAgd2lkdGg6ICRwcmVmaXgtc3VmZml4LWljb24tZm9udC1zY2FsZSAqIDFlbTtcblxuICAgICAgLm1hdC1pY29uIHtcbiAgICAgICAgaGVpZ2h0OiAkbGluZS1oZWlnaHQgKiAxZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAkbGluZS1oZWlnaHQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLm1hdC1mb3JtLWZpZWxkLWluZml4IHtcbiAgICBwYWRkaW5nOiAkaW5maXgtcGFkZGluZyAwO1xuICAgIC8vIFRocm93cyBvZmYgdGhlIGJhc2VsaW5lIGlmIHdlIGRvIGl0IGFzIGEgcmVhbCBtYXJnaW4sIHNvIHdlIGRvIGl0IGFzIGEgYm9yZGVyIGluc3RlYWQuXG4gICAgYm9yZGVyLXRvcDogJGluZml4LW1hcmdpbi10b3Agc29saWQgdHJhbnNwYXJlbnQ7XG4gIH1cblxuICAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IHtcbiAgICAmLm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdCAubWF0LWZvcm0tZmllbGQtbGFiZWwsXG4gICAgLm1hdC1pbnB1dC1zZXJ2ZXI6Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWwge1xuICAgICAgQGluY2x1ZGUgX2xhYmVsLWZsb2F0aW5nKFxuICAgICAgICAgICAgICAkc3Vic2NyaXB0LWZvbnQtc2NhbGUsICRpbmZpeC1wYWRkaW5nLCAkaW5maXgtbWFyZ2luLXRvcCk7XG4gICAgfVxuXG4gICAgLy8gU2VydmVyLXNpZGUgcmVuZGVyZWQgbWF0SW5wdXQgd2l0aCBhIGxhYmVsIGF0dHJpYnV0ZSBidXQgbGFiZWwgbm90IHNob3duXG4gICAgLy8gKHVzZWQgYXMgYSBwdXJlIENTUyBzdGFuZC1pbiBmb3IgbWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0KS5cbiAgICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlclxuICAgICAgICAubWF0LWZvcm0tZmllbGQtbGFiZWwge1xuICAgICAgQGluY2x1ZGUgX2xhYmVsLWZsb2F0aW5nKFxuICAgICAgICAgICAgICAkc3Vic2NyaXB0LWZvbnQtc2NhbGUsICRpbmZpeC1wYWRkaW5nLCAkaW5maXgtbWFyZ2luLXRvcCk7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIge1xuICAgIHRvcDogLSRpbmZpeC1tYXJnaW4tdG9wO1xuICAgIHBhZGRpbmctdG9wOiAkaW5maXgtbWFyZ2luLXRvcDtcbiAgfVxuXG4gIC5tYXQtZm9ybS1maWVsZC1sYWJlbCB7XG4gICAgdG9wOiAkaW5maXgtbWFyZ2luLXRvcCArICRpbmZpeC1wYWRkaW5nO1xuICB9XG5cbiAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZSB7XG4gICAgLy8gV2Ugd2FudCB0aGUgdW5kZXJsaW5lIHRvIHN0YXJ0IGF0IHRoZSBlbmQgb2YgdGhlIGNvbnRlbnQgYm94LCBub3QgdGhlIHBhZGRpbmcgYm94LFxuICAgIC8vIHNvIHdlIG1vdmUgaXQgdXAgYnkgdGhlIHBhZGRpbmcgYW1vdW50LlxuICAgIGJvdHRvbTogJHdyYXBwZXItcGFkZGluZy1ib3R0b207XG4gIH1cblxuICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXIge1xuICAgIGZvbnQtc2l6ZTogJHN1YnNjcmlwdC1mb250LXNpemU7XG4gICAgbWFyZ2luLXRvcDogJHN1YnNjcmlwdC1tYXJnaW4tdG9wO1xuXG4gICAgLy8gV2Ugd2FudCB0aGUgc3Vic2NyaXB0IHRvIHN0YXJ0IGF0IHRoZSBlbmQgb2YgdGhlIGNvbnRlbnQgYm94LCBub3QgdGhlIHBhZGRpbmcgYm94LFxuICAgIC8vIHNvIHdlIG1vdmUgaXQgdXAgYnkgdGhlIHBhZGRpbmcgYW1vdW50IChhZGp1c3RlZCBmb3IgdGhlIHNtYWxsZXIgZm9udCBzaXplKTtcbiAgICB0b3A6IGNhbGMoMTAwJSAtICN7JHdyYXBwZXItcGFkZGluZy1ib3R0b20gLyAkc3Vic2NyaXB0LWZvbnQtc2NhbGV9KTtcbiAgfVxuXG4gIEBpbmNsdWRlIGZvcm0tZmllbGQtbGVnYWN5LXRoZW1lLmxlZ2FjeS10eXBvZ3JhcGh5KCRjb25maWcpO1xuICBAaW5jbHVkZSBmb3JtLWZpZWxkLXN0YW5kYXJkLXRoZW1lLnN0YW5kYXJkLXR5cG9ncmFwaHkoJGNvbmZpZyk7XG4gIEBpbmNsdWRlIGZvcm0tZmllbGQtZmlsbC10aGVtZS5maWxsLXR5cG9ncmFwaHkoJGNvbmZpZyk7XG4gIEBpbmNsdWRlIGZvcm0tZmllbGQtb3V0bGluZS10aGVtZS5vdXRsaW5lLXR5cG9ncmFwaHkoJGNvbmZpZyk7XG59XG5cbkBtaXhpbiBkZW5zaXR5KCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGRlbnNpdHktc2NhbGU6IHRoZW1pbmcuZ2V0LWRlbnNpdHktY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICBAaW5jbHVkZSBmb3JtLWZpZWxkLWxlZ2FjeS10aGVtZS5wcml2YXRlLWZvcm0tZmllbGQtbGVnYWN5LWRlbnNpdHkoJGRlbnNpdHktc2NhbGUpO1xuICBAaW5jbHVkZSBmb3JtLWZpZWxkLXN0YW5kYXJkLXRoZW1lLnByaXZhdGUtZm9ybS1maWVsZC1zdGFuZGFyZC1kZW5zaXR5KCRkZW5zaXR5LXNjYWxlKTtcbiAgQGluY2x1ZGUgZm9ybS1maWVsZC1maWxsLXRoZW1lLnByaXZhdGUtZm9ybS1maWVsZC1maWxsLWRlbnNpdHkoJGRlbnNpdHktc2NhbGUpO1xuICBAaW5jbHVkZSBmb3JtLWZpZWxkLW91dGxpbmUtdGhlbWUucHJpdmF0ZS1mb3JtLWZpZWxkLW91dGxpbmUtZGVuc2l0eSgkZGVuc2l0eS1zY2FsZSk7XG59XG5cbkBtaXhpbiB0aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKSB7XG4gICR0aGVtZTogdGhlbWluZy5wcml2YXRlLWxlZ2FjeS1nZXQtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZyk7XG4gIEBpbmNsdWRlIHRoZW1pbmcucHJpdmF0ZS1jaGVjay1kdXBsaWNhdGUtdGhlbWUtc3R5bGVzKCR0aGVtZSwgJ21hdC1mb3JtLWZpZWxkJykge1xuICAgICRjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgJGRlbnNpdHk6IHRoZW1pbmcuZ2V0LWRlbnNpdHktY29uZmlnKCR0aGVtZSk7XG4gICAgJHR5cG9ncmFwaHk6IHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCR0aGVtZSk7XG5cbiAgICBAaWYgJGNvbG9yICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgZGVuc2l0eSgkZGVuc2l0eSk7XG4gICAgfVxuICAgIEBpZiAkdHlwb2dyYXBoeSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIHR5cG9ncmFwaHkoJHR5cG9ncmFwaHkpO1xuICAgIH1cbiAgfVxufVxuIiwiQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnLi4vY29yZS90aGVtaW5nL3RoZW1pbmcnO1xuQHVzZSAnLi4vY29yZS9zdHlsZS9mb3JtLWNvbW1vbic7XG5AdXNlICcuLi9jb3JlL3R5cG9ncmFwaHkvdHlwb2dyYXBoeSc7XG5AdXNlICcuLi9jb3JlL3R5cG9ncmFwaHkvdHlwb2dyYXBoeS11dGlscyc7XG5cblxuLy8gVGhlbWUgc3R5bGVzIHRoYXQgb25seSBhcHBseSB0byB0aGUgbGVnYWN5IGFwcGVhcmFuY2Ugb2YgdGhlIGZvcm0tZmllbGQuXG5cbkBtaXhpbiBsZWdhY3ktY29sb3IoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRmb3JlZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGZvcmVncm91bmQpO1xuICAkaXMtZGFyay10aGVtZTogbWFwLmdldCgkY29uZmlnLCBpcy1kYXJrKTtcblxuICAkbGFiZWwtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgc2Vjb25kYXJ5LXRleHQpO1xuICAkdW5kZXJsaW5lLWNvbG9yOlxuICAgIHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgZGl2aWRlciwgaWYoJGlzLWRhcmstdGhlbWUsIDAuNywgMC40MikpO1xuXG4gIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSB7XG4gICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsIHtcbiAgICAgIGNvbG9yOiAkbGFiZWwtY29sb3I7XG4gICAgfVxuXG4gICAgLm1hdC1oaW50IHtcbiAgICAgIGNvbG9yOiAkbGFiZWwtY29sb3I7XG4gICAgfVxuXG4gICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZSB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdW5kZXJsaW5lLWNvbG9yO1xuICAgIH1cblxuICAgICYubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZSB7XG4gICAgICBAaW5jbHVkZSBmb3JtLWNvbW1vbi5wcml2YXRlLWNvbnRyb2wtZGlzYWJsZWQtdW5kZXJsaW5lKCR1bmRlcmxpbmUtY29sb3IpO1xuICAgIH1cbiAgfVxufVxuXG4vLyBVc2VkIHRvIG1ha2UgaW5zdGFuY2VzIG9mIHRoZSBfbWF0LWZvcm0tZmllbGQtbGFiZWwtZmxvYXRpbmcgbWl4aW4gbmVnbGlnaWJseSBkaWZmZXJlbnQsXG4vLyBhbmQgcHJldmVudCBHb29nbGUncyBDU1MgT3B0aW1pemVyIGZyb20gY29sbGFwc2luZyB0aGUgZGVjbGFyYXRpb25zLiBUaGlzIGlzIG5lZWRlZCBiZWNhdXNlIHNvbWVcbi8vIG9mIHRoZSBzZWxlY3RvcnMgY29udGFpbiBwc2V1ZG8tY2xhc3NlcyBub3QgcmVjb2duaXplZCBpbiBhbGwgYnJvd3NlcnMuIElmIGEgYnJvd3NlciBlbmNvdW50ZXJzXG4vLyBhbiB1bmtub3duIHBzZXVkby1jbGFzcyBpdCB3aWxsIGRpc2NhcmQgdGhlIGVudGlyZSBydWxlIHNldC5cbiRsZWdhY3ktZGVkdXBlOiAwO1xuXG4vLyBBcHBsaWVzIGEgZmxvYXRpbmcgbGFiZWwgYWJvdmUgdGhlIGZvcm0gZmllbGQgY29udHJvbCBpdHNlbGYuXG5AbWl4aW4gX2xhYmVsLWZsb2F0aW5nKCRmb250LXNjYWxlLCAkaW5maXgtcGFkZGluZywgJGluZml4LW1hcmdpbi10b3ApIHtcbiAgLy8gV2UgdXNlIHBlcnNwZWN0aXZlIHRvIGZpeCB0aGUgdGV4dCBibHVycmluZXNzIGFzIGRlc2NyaWJlZCBoZXJlOlxuICAvLyBodHRwOi8vd3d3LnVzZXJhZ2VudG1hbi5jb20vYmxvZy8yMDE0LzA1LzA0L2ZpeGluZy10eXBvZ3JhcGh5LWluc2lkZS1vZi0yLWQtY3NzLXRyYW5zZm9ybXMvXG4gIC8vIFRoaXMgcmVzdWx0cyBpbiBhIHNtYWxsIGppdHRlciBhZnRlciB0aGUgbGFiZWwgZmxvYXRzIG9uIEZpcmVmb3gsIHdoaWNoIHRoZVxuICAvLyB0cmFuc2xhdGVaIGZpeGVzLlxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLSRpbmZpeC1tYXJnaW4tdG9wIC0gJGluZml4LXBhZGRpbmcpIHNjYWxlKCRmb250LXNjYWxlKSBwZXJzcGVjdGl2ZSgxMDBweClcbiAgdHJhbnNsYXRlWigwLjAwMXB4ICsgJGxlZ2FjeS1kZWR1cGUpO1xuICAvLyBUaGUgdHJpY2tzIGFib3ZlIHVzZWQgdG8gc21vb3RoIG91dCB0aGUgYW5pbWF0aW9uIG9uIGNocm9tZSBhbmQgZmlyZWZveCBhY3R1YWxseSBtYWtlIHRoaW5nc1xuICAvLyB3b3JzZSBvbiBJRSwgc28gd2UgZG9uJ3QgaW5jbHVkZSB0aGVtIGluIHRoZSBJRSB2ZXJzaW9uLlxuICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0kaW5maXgtbWFyZ2luLXRvcCAtICRpbmZpeC1wYWRkaW5nICsgJGxlZ2FjeS1kZWR1cGUpXG4gICAgICAgICAgICAgICAgICBzY2FsZSgkZm9udC1zY2FsZSk7XG5cbiAgd2lkdGg6IDEwMCUgLyAkZm9udC1zY2FsZSArICRsZWdhY3ktZGVkdXBlO1xuXG4gICRsZWdhY3ktZGVkdXBlOiAkbGVnYWN5LWRlZHVwZSArIDAuMDAwMDEgIWdsb2JhbDtcbn1cblxuLy8gU2FtZSBhcyBtaXhpbiBhYm92ZSwgYnV0IG9taXRzIHRoZSB0cmFuc2xhdGVaIGZvciBwcmludGluZyBwdXJwb3Nlcy5cbkBtaXhpbiBfbGFiZWwtZmxvYXRpbmctcHJpbnQoJGZvbnQtc2NhbGUsICRpbmZpeC1wYWRkaW5nLCAkaW5maXgtbWFyZ2luLXRvcCkge1xuICAvLyBUaGlzIHJlc3VsdHMgaW4gYSBzbWFsbCBqaXR0ZXIgYWZ0ZXIgdGhlIGxhYmVsIGZsb2F0cyBvbiBGaXJlZm94LCB3aGljaCB0aGVcbiAgLy8gdHJhbnNsYXRlWiBmaXhlcy5cbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0kaW5maXgtbWFyZ2luLXRvcCAtICRpbmZpeC1wYWRkaW5nICsgJGxlZ2FjeS1kZWR1cGUpXG4gICAgICAgICAgICAgICAgICBzY2FsZSgkZm9udC1zY2FsZSk7XG4gIC8vIFRoZSB0cmlja3MgYWJvdmUgdXNlZCB0byBzbW9vdGggb3V0IHRoZSBhbmltYXRpb24gb24gY2hyb21lIGFuZCBmaXJlZm94IGFjdHVhbGx5IG1ha2UgdGhpbmdzXG4gIC8vIHdvcnNlIG9uIElFLCBzbyB3ZSBkb24ndCBpbmNsdWRlIHRoZW0gaW4gdGhlIElFIHZlcnNpb24uXG4gICRsZWdhY3ktZGVkdXBlOiAkbGVnYWN5LWRlZHVwZSArIDAuMDAwMDEgIWdsb2JhbDtcbn1cblxuQG1peGluIGxlZ2FjeS10eXBvZ3JhcGh5KCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdHlwb2dyYXBoeS5wcml2YXRlLXR5cG9ncmFwaHktdG8tMjAxNC1jb25maWcoXG4gICAgICB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKSk7XG4gIC8vIFRoZSB1bml0LWxlc3MgbGluZS1oZWlnaHQgZnJvbSB0aGUgZm9udCBjb25maWcuXG4gICRsaW5lLWhlaWdodDogdHlwb2dyYXBoeS11dGlscy5saW5lLWhlaWdodCgkY29uZmlnLCBpbnB1dCk7XG4gIC8vIFRoZSBhbW91bnQgdG8gc2NhbGUgdGhlIGZvbnQgZm9yIHRoZSBmbG9hdGluZyBsYWJlbCBhbmQgc3Vic2NyaXB0LlxuICAkc3Vic2NyaXB0LWZvbnQtc2NhbGU6IDAuNzU7XG4gIC8vIFRoZSBhbW91bnQgb2Ygc3BhY2UgYmV0d2VlbiB0aGUgdG9wIG9mIHRoZSBsaW5lIGFuZCB0aGUgdG9wIG9mIHRoZSBhY3R1YWwgdGV4dFxuICAvLyAoYXMgYSBmcmFjdGlvbiBvZiB0aGUgZm9udC1zaXplKS5cbiAgJGxpbmUtc3BhY2luZzogKCRsaW5lLWhlaWdodCAtIDEpIC8gMjtcbiAgLy8gVGhlIHBhZGRpbmcgb24gdGhlIGluZml4LiBNb2NrcyBzaG93IGhhbGYgb2YgdGhlIHRleHQgc2l6ZSwgYnV0IHNlZW0gdG8gbWVhc3VyZSBmcm9tIHRoZSBlZGdlXG4gIC8vIG9mIHRoZSB0ZXh0IGl0c2VsZiwgbm90IHRoZSBlZGdlIG9mIHRoZSBsaW5lOyB0aGVyZWZvcmUgd2Ugc3VidHJhY3Qgb2ZmIHRoZSBsaW5lIHNwYWNpbmcuXG4gICRpbmZpeC1wYWRkaW5nOiAwLjVlbSAtICRsaW5lLXNwYWNpbmc7XG4gIC8vIFRoZSBtYXJnaW4gYXBwbGllZCB0byB0aGUgZm9ybS1maWVsZC1pbmZpeCB0byByZXNlcnZlIHNwYWNlIGZvciB0aGUgZmxvYXRpbmcgbGFiZWwuXG4gICRpbmZpeC1tYXJnaW4tdG9wOiAxZW0gKiAkbGluZS1oZWlnaHQgKiAkc3Vic2NyaXB0LWZvbnQtc2NhbGU7XG4gIC8vIFRoZSBzcGFjZSBiZXR3ZWVuIHRoZSBib3R0b20gb2YgdGhlIC5tYXQtZm9ybS1maWVsZC1mbGV4IGFyZWEgYW5kIHRoZSBzdWJzY3JpcHQgd3JhcHBlci5cbiAgLy8gTW9ja3Mgc2hvdyBoYWxmIG9mIHRoZSB0ZXh0IHNpemUsIGJ1dCB0aGlzIG1hcmdpbiBpcyBhcHBsaWVkIHRvIGFuIGVsZW1lbnQgd2l0aCB0aGUgc3Vic2NyaXB0XG4gIC8vIHRleHQgZm9udCBzaXplLCBzbyB3ZSBuZWVkIHRvIGRpdmlkZSBieSB0aGUgc2NhbGUgZmFjdG9yIHRvIG1ha2UgaXQgaGFsZiBvZiB0aGUgb3JpZ2luYWwgdGV4dFxuICAvLyBzaXplLiBXZSBhZ2FpbiBuZWVkIHRvIHN1YnRyYWN0IG9mZiB0aGUgbGluZSBzcGFjaW5nIHNpbmNlIHRoZSBtb2NrcyBtZWFzdXJlIHRvIHRoZSBlZGdlIG9mIHRoZVxuICAvLyB0ZXh0LCBub3QgdGhlICBlZGdlIG9mIHRoZSBsaW5lLlxuICAkc3Vic2NyaXB0LW1hcmdpbi10b3A6IDAuNWVtIC8gJHN1YnNjcmlwdC1mb250LXNjYWxlIC0gKCRsaW5lLXNwYWNpbmcgKiAyKTtcbiAgLy8gVGhlIHBhZGRpbmcgYXBwbGllZCB0byB0aGUgZm9ybS1maWVsZC13cmFwcGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIHRoZSBzdWJzY3JpcHQsIHNpbmNlIGl0J3NcbiAgLy8gYWJzb2x1dGVseSBwb3NpdGlvbmVkLiBUaGlzIGlzIGEgY29tYmluYXRpb24gb2YgdGhlIHN1YnNjcmlwdCdzIG1hcmdpbiBhbmQgbGluZS1oZWlnaHQsIGJ1dCB3ZVxuICAvLyBuZWVkIHRvIG11bHRpcGx5IGJ5IHRoZSBzdWJzY3JpcHQgZm9udCBzY2FsZSBmYWN0b3Igc2luY2UgdGhlIHdyYXBwZXIgaGFzIGEgbGFyZ2VyIGZvbnQgc2l6ZS5cbiAgJHdyYXBwZXItcGFkZGluZy1ib3R0b206ICgkc3Vic2NyaXB0LW1hcmdpbi10b3AgKyAkbGluZS1oZWlnaHQpICogJHN1YnNjcmlwdC1mb250LXNjYWxlO1xuXG4gIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSB7XG4gICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXIge1xuICAgICAgcGFkZGluZy1ib3R0b206ICR3cmFwcGVyLXBhZGRpbmctYm90dG9tO1xuICAgIH1cblxuICAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeCB7XG4gICAgICBwYWRkaW5nOiAkaW5maXgtcGFkZGluZyAwO1xuICAgIH1cblxuICAgICYubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IHtcbiAgICAgICYubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0IC5tYXQtZm9ybS1maWVsZC1sYWJlbCxcbiAgICAgIC5tYXQtaW5wdXQtc2VydmVyOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVsIHtcbiAgICAgICAgQGluY2x1ZGUgX2xhYmVsLWZsb2F0aW5nKFxuICAgICAgICAgICAgICAgICRzdWJzY3JpcHQtZm9udC1zY2FsZSwgJGluZml4LXBhZGRpbmcsICRpbmZpeC1tYXJnaW4tdG9wKTtcbiAgICAgIH1cblxuICAgICAgLy8gQGJyZWFraW5nLWNoYW5nZSA4LjAuMCB3aWxsIHJlbHkgb24gQXV0b2ZpbGxNb25pdG9yIGluc3RlYWQuXG4gICAgICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbDotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJcbiAgICAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbCB7XG4gICAgICAgIEBpbmNsdWRlIF9sYWJlbC1mbG9hdGluZyhcbiAgICAgICAgICAgICAgICAkc3Vic2NyaXB0LWZvbnQtc2NhbGUsICRpbmZpeC1wYWRkaW5nLCAkaW5maXgtbWFyZ2luLXRvcCk7XG4gICAgICB9XG5cbiAgICAgIC8vIFNlcnZlci1zaWRlIHJlbmRlcmVkIG1hdElucHV0IHdpdGggYSBsYWJlbCBhdHRyaWJ1dGUgYnV0IGxhYmVsIG5vdCBzaG93blxuICAgICAgLy8gKHVzZWQgYXMgYSBwdXJlIENTUyBzdGFuZC1pbiBmb3IgbWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0KS5cbiAgICAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyXG4gICAgICAubWF0LWZvcm0tZmllbGQtbGFiZWwge1xuICAgICAgICBAaW5jbHVkZSBfbGFiZWwtZmxvYXRpbmcoXG4gICAgICAgICAgICAgICAgJHN1YnNjcmlwdC1mb250LXNjYWxlLCAkaW5maXgtcGFkZGluZywgJGluZml4LW1hcmdpbi10b3ApO1xuICAgICAgfVxuICAgIH1cblxuICAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbCB7XG4gICAgICB0b3A6ICRpbmZpeC1tYXJnaW4tdG9wICsgJGluZml4LXBhZGRpbmc7XG4gICAgfVxuXG4gICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZSB7XG4gICAgICAvLyBXZSB3YW50IHRoZSB1bmRlcmxpbmUgdG8gc3RhcnQgYXQgdGhlIGVuZCBvZiB0aGUgY29udGVudCBib3gsIG5vdCB0aGUgcGFkZGluZyBib3gsXG4gICAgICAvLyBzbyB3ZSBtb3ZlIGl0IHVwIGJ5IHRoZSBwYWRkaW5nIGFtb3VudC5cbiAgICAgIGJvdHRvbTogJHdyYXBwZXItcGFkZGluZy1ib3R0b207XG4gICAgfVxuXG4gICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyIHtcbiAgICAgIG1hcmdpbi10b3A6ICRzdWJzY3JpcHQtbWFyZ2luLXRvcDtcblxuICAgICAgLy8gV2Ugd2FudCB0aGUgc3Vic2NyaXB0IHRvIHN0YXJ0IGF0IHRoZSBlbmQgb2YgdGhlIGNvbnRlbnQgYm94LCBub3QgdGhlIHBhZGRpbmcgYm94LFxuICAgICAgLy8gc28gd2UgbW92ZSBpdCB1cCBieSB0aGUgcGFkZGluZyBhbW91bnQgKGFkanVzdGVkIGZvciB0aGUgc21hbGxlciBmb250IHNpemUpO1xuICAgICAgdG9wOiBjYWxjKDEwMCUgLSAjeyR3cmFwcGVyLXBhZGRpbmctYm90dG9tIC8gJHN1YnNjcmlwdC1mb250LXNjYWxlfSk7XG4gICAgfVxuICB9XG5cbiAgLy8gdHJhbnNsYXRlWiBjYXVzZXMgdGhlIGxhYmVsIHRvIG5vdCBhcHBlYXIgd2hpbGUgcHJpbnRpbmcsIHNvIHdlIG92ZXJyaWRlIGl0IHRvIG5vdFxuICAvLyBhcHBseSB0cmFuc2xhdGVaIHdoaWxlIHByaW50aW5nXG4gIEBtZWRpYSBwcmludCB7XG4gICAgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5IHtcbiAgICAgICYubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IHtcbiAgICAgICAgJi5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXQgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLFxuICAgICAgICAubWF0LWlucHV0LXNlcnZlcjpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtZm9ybS1maWVsZC1sYWJlbCB7XG4gICAgICAgICAgQGluY2x1ZGUgX2xhYmVsLWZsb2F0aW5nLXByaW50KFxuICAgICAgICAgICAgICAgICAgJHN1YnNjcmlwdC1mb250LXNjYWxlLCAkaW5maXgtcGFkZGluZywgJGluZml4LW1hcmdpbi10b3ApO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQGJyZWFraW5nLWNoYW5nZSA4LjAuMCB3aWxsIHJlbHkgb24gQXV0b2ZpbGxNb25pdG9yIGluc3RlYWQuXG4gICAgICAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlclxuICAgICAgICAubWF0LWZvcm0tZmllbGQtbGFiZWwge1xuICAgICAgICAgIEBpbmNsdWRlIF9sYWJlbC1mbG9hdGluZy1wcmludChcbiAgICAgICAgICAgICAgICAgICRzdWJzY3JpcHQtZm9udC1zY2FsZSwgJGluZml4LXBhZGRpbmcsICRpbmZpeC1tYXJnaW4tdG9wKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFNlcnZlci1zaWRlIHJlbmRlcmVkIG1hdElucHV0IHdpdGggYSBsYWJlbCBhdHRyaWJ1dGUgYnV0IGxhYmVsIG5vdCBzaG93blxuICAgICAgICAvLyAodXNlZCBhcyBhIHB1cmUgQ1NTIHN0YW5kLWluIGZvciBtYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXQpLlxuICAgICAgICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlclxuICAgICAgICAubWF0LWZvcm0tZmllbGQtbGFiZWwge1xuICAgICAgICAgIEBpbmNsdWRlIF9sYWJlbC1mbG9hdGluZy1wcmludChcbiAgICAgICAgICAgICAgICAgICRzdWJzY3JpcHQtZm9udC1zY2FsZSwgJGluZml4LXBhZGRpbmcsICRpbmZpeC1tYXJnaW4tdG9wKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gcHJpdmF0ZS1mb3JtLWZpZWxkLWxlZ2FjeS1kZW5zaXR5KCRjb25maWctb3ItdGhlbWUpIHt9XG5cbkBtaXhpbiBsZWdhY3ktdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZykge1xuICAkdGhlbWU6IHRoZW1pbmcucHJpdmF0ZS1sZWdhY3ktZ2V0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICBAaW5jbHVkZSB0aGVtaW5nLnByaXZhdGUtY2hlY2stZHVwbGljYXRlLXRoZW1lLXN0eWxlcygkdGhlbWUsICdtYXQtZm9ybS1maWVsZC1sZWdhY3knKSB7XG4gICAgJGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJHRoZW1lKTtcbiAgICAkZGVuc2l0eTogdGhlbWluZy5nZXQtZGVuc2l0eS1jb25maWcoJHRoZW1lKTtcbiAgICAkdHlwb2dyYXBoeTogdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJHRoZW1lKTtcblxuICAgIEBpZiAkY29sb3IgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBsZWdhY3ktY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgcHJpdmF0ZS1mb3JtLWZpZWxkLWxlZ2FjeS1kZW5zaXR5KCRkZW5zaXR5KTtcbiAgICB9XG4gICAgQGlmICR0eXBvZ3JhcGh5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgbGVnYWN5LXR5cG9ncmFwaHkoJHR5cG9ncmFwaHkpO1xuICAgIH1cbiAgfVxufVxuIiwiQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnLi4vY29yZS90aGVtaW5nL3RoZW1pbmcnO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHknO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHktdXRpbHMnO1xuXG5cbi8vIFRoZW1lIHN0eWxlcyB0aGF0IG9ubHkgYXBwbHkgdG8gdGhlIGZpbGwgYXBwZWFyYW5jZSBvZiB0aGUgZm9ybS1maWVsZC5cblxuQG1peGluIGZpbGwtY29sb3IoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRmb3JlZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGZvcmVncm91bmQpO1xuICAkaXMtZGFyay10aGVtZTogbWFwLmdldCgkY29uZmlnLCBpcy1kYXJrKTtcblxuICAkZmlsbC1iYWNrZ3JvdW5kOlxuICAgIHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgYmFzZSwgaWYoJGlzLWRhcmstdGhlbWUsIDAuMSwgMC4wNCkpO1xuICAkZmlsbC1kaXNhYmxlZC1iYWNrZ3JvdW5kOlxuICAgIHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgYmFzZSwgaWYoJGlzLWRhcmstdGhlbWUsIDAuMDUsIDAuMDIpKTtcbiAgJHVuZGVybGluZS1jb2xvcjpcbiAgICB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIGRpdmlkZXIsIGlmKCRpcy1kYXJrLXRoZW1lLCAwLjUsIDAuNDIpKTtcbiAgJGxhYmVsLWRpc2FibGVkLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIGRpc2FibGVkLXRleHQpO1xuXG4gIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwge1xuICAgIC5tYXQtZm9ybS1maWVsZC1mbGV4IHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRmaWxsLWJhY2tncm91bmQ7XG4gICAgfVxuXG4gICAgJi5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZCAubWF0LWZvcm0tZmllbGQtZmxleCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZmlsbC1kaXNhYmxlZC1iYWNrZ3JvdW5kO1xuICAgIH1cblxuICAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmU6OmJlZm9yZSB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdW5kZXJsaW5lLWNvbG9yO1xuICAgIH1cblxuICAgICYubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQge1xuICAgICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsIHtcbiAgICAgICAgY29sb3I6ICRsYWJlbC1kaXNhYmxlZC1jb2xvcjtcbiAgICAgIH1cblxuICAgICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZTo6YmVmb3JlIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vIFVzZWQgdG8gbWFrZSBpbnN0YW5jZXMgb2YgdGhlIF9tYXQtZm9ybS1maWVsZC1sYWJlbC1mbG9hdGluZyBtaXhpbiBuZWdsaWdpYmx5IGRpZmZlcmVudCxcbi8vIGFuZCBwcmV2ZW50IEdvb2dsZSdzIENTUyBPcHRpbWl6ZXIgZnJvbSBjb2xsYXBzaW5nIHRoZSBkZWNsYXJhdGlvbnMuIFRoaXMgaXMgbmVlZGVkIGJlY2F1c2Ugc29tZVxuLy8gb2YgdGhlIHNlbGVjdG9ycyBjb250YWluIHBzZXVkby1jbGFzc2VzIG5vdCByZWNvZ25pemVkIGluIGFsbCBicm93c2Vycy4gSWYgYSBicm93c2VyIGVuY291bnRlcnNcbi8vIGFuIHVua25vd24gcHNldWRvLWNsYXNzIGl0IHdpbGwgZGlzY2FyZCB0aGUgZW50aXJlIHJ1bGUgc2V0LlxuJGZpbGwtZGVkdXBlOiAwO1xuXG4vLyBBcHBsaWVzIGEgZmxvYXRpbmcgbGFiZWwgYWJvdmUgdGhlIGZvcm0gZmllbGQgY29udHJvbCBpdHNlbGYuXG5AbWl4aW4gX2xhYmVsLWZsb2F0aW5nKCRmb250LXNjYWxlLCAkaW5maXgtcGFkZGluZywgJGluZml4LW1hcmdpbi10b3ApIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0kaW5maXgtbWFyZ2luLXRvcCAtICRpbmZpeC1wYWRkaW5nICsgJGZpbGwtZGVkdXBlKVxuICAgICAgICAgICAgIHNjYWxlKCRmb250LXNjYWxlKTtcbiAgd2lkdGg6IDEwMCUgLyAkZm9udC1zY2FsZSArICRmaWxsLWRlZHVwZTtcblxuICAkZmlsbC1kZWR1cGU6ICRmaWxsLWRlZHVwZSArIDAuMDAwMDEgIWdsb2JhbDtcbn1cblxuQG1peGluIGZpbGwtdHlwb2dyYXBoeSgkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHR5cG9ncmFwaHkucHJpdmF0ZS10eXBvZ3JhcGh5LXRvLTIwMTQtY29uZmlnKFxuICAgICAgdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJGNvbmZpZy1vci10aGVtZSkpO1xuICAvLyBUaGUgdW5pdC1sZXNzIGxpbmUtaGVpZ2h0IGZyb20gdGhlIGZvbnQgY29uZmlnLlxuICAkbGluZS1oZWlnaHQ6IHR5cG9ncmFwaHktdXRpbHMubGluZS1oZWlnaHQoJGNvbmZpZywgaW5wdXQpO1xuICAvLyBUaGUgYW1vdW50IHRvIHNjYWxlIHRoZSBmb250IGZvciB0aGUgZmxvYXRpbmcgbGFiZWwgYW5kIHN1YnNjcmlwdC5cbiAgJHN1YnNjcmlwdC1mb250LXNjYWxlOiAwLjc1O1xuICAvLyBUaGUgcGFkZGluZyBvbiB0b3Agb2YgdGhlIGluZml4LlxuICAkaW5maXgtcGFkZGluZy10b3A6IDAuMjVlbTtcbiAgLy8gVGhlIHBhZGRpbmcgYmVsb3cgdGhlIGluZml4LlxuICAkaW5maXgtcGFkZGluZy1ib3R0b206IDAuNzVlbTtcbiAgLy8gVGhlIG1hcmdpbiBhcHBsaWVkIHRvIHRoZSBmb3JtLWZpZWxkLWluZml4IHRvIHJlc2VydmUgc3BhY2UgZm9yIHRoZSBmbG9hdGluZyBsYWJlbC5cbiAgJGluZml4LW1hcmdpbi10b3A6IDFlbSAqICRsaW5lLWhlaWdodCAqICRzdWJzY3JpcHQtZm9udC1zY2FsZTtcbiAgLy8gVGhlIGFtb3VudCB3ZSBvZmZzZXQgdGhlIGxhYmVsIGZyb20gdGhlIGlucHV0IHRleHQgaW4gdGhlIGZpbGwgYXBwZWFyYW5jZS5cbiAgJGZpbGwtYXBwZWFyYW5jZS1sYWJlbC1vZmZzZXQ6IC0wLjVlbTtcblxuICAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsIHtcbiAgICAubWF0LWZvcm0tZmllbGQtaW5maXgge1xuICAgICAgcGFkZGluZzogJGluZml4LXBhZGRpbmctdG9wIDAgJGluZml4LXBhZGRpbmctYm90dG9tIDA7XG4gICAgfVxuXG4gICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsIHtcbiAgICAgIHRvcDogJGluZml4LW1hcmdpbi10b3AgKyAkaW5maXgtcGFkZGluZy10b3A7XG4gICAgICBtYXJnaW4tdG9wOiAkZmlsbC1hcHBlYXJhbmNlLWxhYmVsLW9mZnNldDtcbiAgICB9XG5cbiAgICAmLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdCB7XG4gICAgICAmLm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdCAubWF0LWZvcm0tZmllbGQtbGFiZWwsXG4gICAgICAubWF0LWlucHV0LXNlcnZlcjpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtZm9ybS1maWVsZC1sYWJlbCB7XG4gICAgICAgIEBpbmNsdWRlIF9sYWJlbC1mbG9hdGluZyhcbiAgICAgICAgICAgICAgICAkc3Vic2NyaXB0LWZvbnQtc2NhbGUsICRpbmZpeC1wYWRkaW5nLXRvcCArICRmaWxsLWFwcGVhcmFuY2UtbGFiZWwtb2Zmc2V0LFxuICAgICAgICAgICAgICAgICRpbmZpeC1tYXJnaW4tdG9wKTtcbiAgICAgIH1cblxuICAgICAgLy8gU2VydmVyLXNpZGUgcmVuZGVyZWQgbWF0SW5wdXQgd2l0aCBhIGxhYmVsIGF0dHJpYnV0ZSBidXQgbGFiZWwgbm90IHNob3duXG4gICAgICAvLyAodXNlZCBhcyBhIHB1cmUgQ1NTIHN0YW5kLWluIGZvciBtYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXQpLlxuICAgICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJcbiAgICAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbCB7XG4gICAgICAgIEBpbmNsdWRlIF9sYWJlbC1mbG9hdGluZyhcbiAgICAgICAgICAgICAgICAkc3Vic2NyaXB0LWZvbnQtc2NhbGUsICRpbmZpeC1wYWRkaW5nLXRvcCArICRmaWxsLWFwcGVhcmFuY2UtbGFiZWwtb2Zmc2V0LFxuICAgICAgICAgICAgICAgICRpbmZpeC1tYXJnaW4tdG9wKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHByaXZhdGUtZm9ybS1maWVsZC1maWxsLWRlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIGZpbGwtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZykge1xuICAkdGhlbWU6IHRoZW1pbmcucHJpdmF0ZS1sZWdhY3ktZ2V0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICBAaW5jbHVkZSB0aGVtaW5nLnByaXZhdGUtY2hlY2stZHVwbGljYXRlLXRoZW1lLXN0eWxlcygkdGhlbWUsICdtYXQtZm9ybS1maWVsZC1maWxsJykge1xuICAgICRjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgJGRlbnNpdHk6IHRoZW1pbmcuZ2V0LWRlbnNpdHktY29uZmlnKCR0aGVtZSk7XG4gICAgJHR5cG9ncmFwaHk6IHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCR0aGVtZSk7XG5cbiAgICBAaWYgJGNvbG9yICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgZmlsbC1jb2xvcigkY29sb3IpO1xuICAgIH1cbiAgICBAaWYgJGRlbnNpdHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBwcml2YXRlLWZvcm0tZmllbGQtZmlsbC1kZW5zaXR5KCRkZW5zaXR5KTtcbiAgICB9XG4gICAgQGlmICR0eXBvZ3JhcGh5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgZmlsbC10eXBvZ3JhcGh5KCR0eXBvZ3JhcGh5KTtcbiAgICB9XG4gIH1cbn1cbiIsIkB1c2UgJ3Nhc3M6bWFwJztcbkB1c2UgJy4uL2NvcmUvdGhlbWluZy90aGVtaW5nJztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5JztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5LXV0aWxzJztcblxuXG4vLyBUaGVtZSBzdHlsZXMgdGhhdCBvbmx5IGFwcGx5IHRvIHRoZSBvdXRsaW5lIGFwcGVhcmFuY2Ugb2YgdGhlIGZvcm0tZmllbGQuXG5cbkBtaXhpbiBvdXRsaW5lLWNvbG9yKCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAkcHJpbWFyeTogbWFwLmdldCgkY29uZmlnLCBwcmltYXJ5KTtcbiAgJGFjY2VudDogbWFwLmdldCgkY29uZmlnLCBhY2NlbnQpO1xuICAkd2FybjogbWFwLmdldCgkY29uZmlnLCB3YXJuKTtcbiAgJGZvcmVncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgZm9yZWdyb3VuZCk7XG4gICRpcy1kYXJrLXRoZW1lOiBtYXAuZ2V0KCRjb25maWcsIGlzLWRhcmspO1xuXG4gICRsYWJlbC1kaXNhYmxlZC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBkaXNhYmxlZC10ZXh0KTtcbiAgJG91dGxpbmUtY29sb3I6XG4gICAgdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBkaXZpZGVyLCBpZigkaXMtZGFyay10aGVtZSwgMC4zLCAwLjEyKSk7XG4gICRvdXRsaW5lLWNvbG9yLWhvdmVyOlxuICAgIHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgZGl2aWRlciwgaWYoJGlzLWRhcmstdGhlbWUsIDEsIDAuODcpKTtcbiAgJG91dGxpbmUtY29sb3ItcHJpbWFyeTogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRwcmltYXJ5KTtcbiAgJG91dGxpbmUtY29sb3ItYWNjZW50OiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGFjY2VudCk7XG4gICRvdXRsaW5lLWNvbG9yLXdhcm46IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkd2Fybik7XG4gICRvdXRsaW5lLWNvbG9yLWRpc2FibGVkOlxuICAgIHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgZGl2aWRlciwgaWYoJGlzLWRhcmstdGhlbWUsIDAuMTUsIDAuMDYpKTtcblxuICAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIHtcbiAgICAubWF0LWZvcm0tZmllbGQtb3V0bGluZSB7XG4gICAgICBjb2xvcjogJG91dGxpbmUtY29sb3I7XG4gICAgfVxuXG4gICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2sge1xuICAgICAgY29sb3I6ICRvdXRsaW5lLWNvbG9yLWhvdmVyO1xuICAgIH1cblxuICAgICYubWF0LWZvY3VzZWQge1xuICAgICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2sge1xuICAgICAgICBjb2xvcjogJG91dGxpbmUtY29sb3ItcHJpbWFyeTtcbiAgICAgIH1cblxuICAgICAgJi5tYXQtYWNjZW50IC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNrIHtcbiAgICAgICAgY29sb3I6ICRvdXRsaW5lLWNvbG9yLWFjY2VudDtcbiAgICAgIH1cblxuICAgICAgJi5tYXQtd2FybiAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGljayB7XG4gICAgICAgIGNvbG9yOiAkb3V0bGluZS1jb2xvci13YXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIENsYXNzIHJlcGVhdGVkIHNvIHRoYXQgcnVsZSBpcyBzcGVjaWZpYyBlbm91Z2ggdG8gb3ZlcnJpZGUgZm9jdXNlZCBhY2NlbnQgY29sb3IgY2FzZS5cbiAgICAmLm1hdC1mb3JtLWZpZWxkLWludmFsaWQubWF0LWZvcm0tZmllbGQtaW52YWxpZCB7XG4gICAgICAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGljayB7XG4gICAgICAgIGNvbG9yOiAkb3V0bGluZS1jb2xvci13YXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgICYubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQge1xuICAgICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsIHtcbiAgICAgICAgY29sb3I6ICRsYWJlbC1kaXNhYmxlZC1jb2xvcjtcbiAgICAgIH1cblxuICAgICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUge1xuICAgICAgICBjb2xvcjogJG91dGxpbmUtY29sb3ItZGlzYWJsZWQ7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vIFVzZWQgdG8gbWFrZSBpbnN0YW5jZXMgb2YgdGhlIF9tYXQtZm9ybS1maWVsZC1sYWJlbC1mbG9hdGluZyBtaXhpbiBuZWdsaWdpYmx5IGRpZmZlcmVudCxcbi8vIGFuZCBwcmV2ZW50IEdvb2dsZSdzIENTUyBPcHRpbWl6ZXIgZnJvbSBjb2xsYXBzaW5nIHRoZSBkZWNsYXJhdGlvbnMuIFRoaXMgaXMgbmVlZGVkIGJlY2F1c2Ugc29tZVxuLy8gb2YgdGhlIHNlbGVjdG9ycyBjb250YWluIHBzZXVkby1jbGFzc2VzIG5vdCByZWNvZ25pemVkIGluIGFsbCBicm93c2Vycy4gSWYgYSBicm93c2VyIGVuY291bnRlcnNcbi8vIGFuIHVua25vd24gcHNldWRvLWNsYXNzIGl0IHdpbGwgZGlzY2FyZCB0aGUgZW50aXJlIHJ1bGUgc2V0LlxuJG91dGxpbmUtZGVkdXBlOiAwO1xuXG4vLyBBcHBsaWVzIGEgZmxvYXRpbmcgbGFiZWwgYWJvdmUgdGhlIGZvcm0gZmllbGQgY29udHJvbCBpdHNlbGYuXG5AbWl4aW4gX2xhYmVsLWZsb2F0aW5nKCRmb250LXNjYWxlLCAkaW5maXgtcGFkZGluZywgJGluZml4LW1hcmdpbi10b3ApIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0kaW5maXgtbWFyZ2luLXRvcCAtICRpbmZpeC1wYWRkaW5nICsgJG91dGxpbmUtZGVkdXBlKVxuICBzY2FsZSgkZm9udC1zY2FsZSk7XG4gIHdpZHRoOiAxMDAlIC8gJGZvbnQtc2NhbGUgKyAkb3V0bGluZS1kZWR1cGU7XG5cbiAgJG91dGxpbmUtZGVkdXBlOiAkb3V0bGluZS1kZWR1cGUgKyAwLjAwMDAxICFnbG9iYWw7XG59XG5cbkBtaXhpbiBvdXRsaW5lLXR5cG9ncmFwaHkoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0eXBvZ3JhcGh5LnByaXZhdGUtdHlwb2dyYXBoeS10by0yMDE0LWNvbmZpZyhcbiAgICAgIHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCRjb25maWctb3ItdGhlbWUpKTtcbiAgLy8gVGhlIHVuaXQtbGVzcyBsaW5lLWhlaWdodCBmcm9tIHRoZSBmb250IGNvbmZpZy5cbiAgJGxpbmUtaGVpZ2h0OiB0eXBvZ3JhcGh5LXV0aWxzLmxpbmUtaGVpZ2h0KCRjb25maWcsIGlucHV0KTtcbiAgLy8gVGhlIGFtb3VudCB0byBzY2FsZSB0aGUgZm9udCBmb3IgdGhlIGZsb2F0aW5nIGxhYmVsIGFuZCBzdWJzY3JpcHQuXG4gICRzdWJzY3JpcHQtZm9udC1zY2FsZTogMC43NTtcbiAgLy8gVGhlIHBhZGRpbmcgYWJvdmUgYW5kIGJlbG93IHRoZSBpbmZpeC5cbiAgJGluZml4LXBhZGRpbmc6IDFlbTtcbiAgLy8gVGhlIG1hcmdpbiBhcHBsaWVkIHRvIHRoZSBmb3JtLWZpZWxkLWluZml4IHRvIHJlc2VydmUgc3BhY2UgZm9yIHRoZSBmbG9hdGluZyBsYWJlbC5cbiAgJGluZml4LW1hcmdpbi10b3A6IDFlbSAqICRsaW5lLWhlaWdodCAqICRzdWJzY3JpcHQtZm9udC1zY2FsZTtcbiAgLy8gVGhlIHNwYWNlIGJldHdlZW4gdGhlIGJvdHRvbSBvZiB0aGUgLm1hdC1mb3JtLWZpZWxkLWZsZXggYXJlYSBhbmQgdGhlIHN1YnNjcmlwdCB3cmFwcGVyLlxuICAvLyBNb2NrcyBzaG93IGhhbGYgb2YgdGhlIHRleHQgc2l6ZSwgYnV0IHRoaXMgbWFyZ2luIGlzIGFwcGxpZWQgdG8gYW4gZWxlbWVudCB3aXRoIHRoZSBzdWJzY3JpcHRcbiAgLy8gdGV4dCBmb250IHNpemUsIHNvIHdlIG5lZWQgdG8gZGl2aWRlIGJ5IHRoZSBzY2FsZSBmYWN0b3IgdG8gbWFrZSBpdCBoYWxmIG9mIHRoZSBvcmlnaW5hbCB0ZXh0XG4gIC8vIHNpemUuXG4gICRzdWJzY3JpcHQtbWFyZ2luLXRvcDogMC41ZW0gLyAkc3Vic2NyaXB0LWZvbnQtc2NhbGU7XG4gIC8vIFRoZSBwYWRkaW5nIGFwcGxpZWQgdG8gdGhlIGZvcm0tZmllbGQtd3JhcHBlciB0byByZXNlcnZlIHNwYWNlIGZvciB0aGUgc3Vic2NyaXB0LCBzaW5jZSBpdCdzXG4gIC8vIGFic29sdXRlbHkgcG9zaXRpb25lZC4gVGhpcyBpcyBhIGNvbWJpbmF0aW9uIG9mIHRoZSBzdWJzY3JpcHQncyBtYXJnaW4gYW5kIGxpbmUtaGVpZ2h0LCBidXQgd2VcbiAgLy8gbmVlZCB0byBtdWx0aXBseSBieSB0aGUgc3Vic2NyaXB0IGZvbnQgc2NhbGUgZmFjdG9yIHNpbmNlIHRoZSB3cmFwcGVyIGhhcyBhIGxhcmdlciBmb250IHNpemUuXG4gICR3cmFwcGVyLXBhZGRpbmctYm90dG9tOiAoJHN1YnNjcmlwdC1tYXJnaW4tdG9wICsgJGxpbmUtaGVpZ2h0KSAqICRzdWJzY3JpcHQtZm9udC1zY2FsZTtcbiAgLy8gVGhlIGFtb3VudCB3ZSBvZmZzZXQgdGhlIGxhYmVsIGZyb20gdGhlIGlucHV0IHRleHQgaW4gdGhlIG91dGxpbmUgYXBwZWFyYW5jZS5cbiAgJG91dGxpbmUtYXBwZWFyYW5jZS1sYWJlbC1vZmZzZXQ6IC0wLjI1ZW07XG5cbiAgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZSB7XG4gICAgLm1hdC1mb3JtLWZpZWxkLWluZml4IHtcbiAgICAgIHBhZGRpbmc6ICRpbmZpeC1wYWRkaW5nIDAgJGluZml4LXBhZGRpbmcgMDtcbiAgICB9XG5cbiAgICAubWF0LWZvcm0tZmllbGQtbGFiZWwge1xuICAgICAgdG9wOiAkaW5maXgtbWFyZ2luLXRvcCArICRpbmZpeC1wYWRkaW5nO1xuICAgICAgbWFyZ2luLXRvcDogJG91dGxpbmUtYXBwZWFyYW5jZS1sYWJlbC1vZmZzZXQ7XG4gICAgfVxuXG4gICAgJi5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQge1xuICAgICAgJi5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXQgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLFxuICAgICAgLm1hdC1pbnB1dC1zZXJ2ZXI6Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWwge1xuICAgICAgICBAaW5jbHVkZSBfbGFiZWwtZmxvYXRpbmcoXG4gICAgICAgICAgICAgICAgJHN1YnNjcmlwdC1mb250LXNjYWxlLCAkaW5maXgtcGFkZGluZyArICRvdXRsaW5lLWFwcGVhcmFuY2UtbGFiZWwtb2Zmc2V0LFxuICAgICAgICAgICAgICAgICRpbmZpeC1tYXJnaW4tdG9wKTtcbiAgICAgIH1cblxuICAgICAgLy8gU2VydmVyLXNpZGUgcmVuZGVyZWQgbWF0SW5wdXQgd2l0aCBhIGxhYmVsIGF0dHJpYnV0ZSBidXQgbGFiZWwgbm90IHNob3duXG4gICAgICAvLyAodXNlZCBhcyBhIHB1cmUgQ1NTIHN0YW5kLWluIGZvciBtYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXQpLlxuICAgICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJcbiAgICAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbCB7XG4gICAgICAgIEBpbmNsdWRlIF9sYWJlbC1mbG9hdGluZyhcbiAgICAgICAgICAgICAgICAkc3Vic2NyaXB0LWZvbnQtc2NhbGUsICRpbmZpeC1wYWRkaW5nICsgJG91dGxpbmUtYXBwZWFyYW5jZS1sYWJlbC1vZmZzZXQsXG4gICAgICAgICAgICAgICAgJGluZml4LW1hcmdpbi10b3ApO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gcHJpdmF0ZS1mb3JtLWZpZWxkLW91dGxpbmUtZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gb3V0bGluZS10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKSB7XG4gICR0aGVtZTogdGhlbWluZy5wcml2YXRlLWxlZ2FjeS1nZXQtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZyk7XG4gIEBpbmNsdWRlIHRoZW1pbmcucHJpdmF0ZS1jaGVjay1kdXBsaWNhdGUtdGhlbWUtc3R5bGVzKCR0aGVtZSwgJ21hdC1mb3JtLWZpZWxkLW91dGxpbmUnKSB7XG4gICAgJGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJHRoZW1lKTtcbiAgICAkZGVuc2l0eTogdGhlbWluZy5nZXQtZGVuc2l0eS1jb25maWcoJHRoZW1lKTtcbiAgICAkdHlwb2dyYXBoeTogdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJHRoZW1lKTtcblxuICAgIEBpZiAkY29sb3IgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBvdXRsaW5lLWNvbG9yKCRjb2xvcik7XG4gICAgfVxuICAgIEBpZiAkZGVuc2l0eSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIHByaXZhdGUtZm9ybS1maWVsZC1vdXRsaW5lLWRlbnNpdHkoJGRlbnNpdHkpO1xuICAgIH1cbiAgICBAaWYgJHR5cG9ncmFwaHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBvdXRsaW5lLXR5cG9ncmFwaHkoJHR5cG9ncmFwaHkpO1xuICAgIH1cbiAgfVxufVxuXG4iLCJAdXNlICcuLi9jb3JlL3RoZW1pbmcvdGhlbWluZyc7XG5AdXNlICcuLi9jb3JlL3R5cG9ncmFwaHkvdHlwb2dyYXBoeSc7XG5AdXNlICcuLi9jb3JlL3R5cG9ncmFwaHkvdHlwb2dyYXBoeS11dGlscyc7XG5AdXNlICcuLi9jb3JlL3N0eWxlL2xpc3QtY29tbW9uJztcblxuXG4vLyBJbmNsdWRlIHRoaXMgZW1wdHkgbWl4aW4gZm9yIGNvbnNpc3RlbmN5IHdpdGggdGhlIG90aGVyIGNvbXBvbmVudHMuXG5AbWl4aW4gY29sb3IoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIHR5cG9ncmFwaHkoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0eXBvZ3JhcGh5LnByaXZhdGUtdHlwb2dyYXBoeS10by0yMDE0LWNvbmZpZyhcbiAgICAgIHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCRjb25maWctb3ItdGhlbWUpKTtcbiAgLm1hdC1ncmlkLXRpbGUtaGVhZGVyLFxuICAubWF0LWdyaWQtdGlsZS1mb290ZXIge1xuICAgIEBpbmNsdWRlIGxpc3QtY29tbW9uLmJhc2UodHlwb2dyYXBoeS11dGlscy5mb250LXNpemUoJGNvbmZpZywgY2FwdGlvbikpO1xuICAgIGZvbnQtc2l6ZTogdHlwb2dyYXBoeS11dGlscy5mb250LXNpemUoJGNvbmZpZywgYm9keS0xKTtcbiAgfVxufVxuXG5AbWl4aW4gX2RlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIHRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiB0aGVtaW5nLnByaXZhdGUtbGVnYWN5LWdldC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgQGluY2x1ZGUgdGhlbWluZy5wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LWdyaWQtbGlzdCcpIHtcbiAgICAkY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkdGhlbWUpO1xuICAgICRkZW5zaXR5OiB0aGVtaW5nLmdldC1kZW5zaXR5LWNvbmZpZygkdGhlbWUpO1xuICAgICR0eXBvZ3JhcGh5OiB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkdGhlbWUpO1xuXG4gICAgQGlmICRjb2xvciAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIGNvbG9yKCRjb2xvcik7XG4gICAgfVxuICAgIEBpZiAkZGVuc2l0eSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIF9kZW5zaXR5KCRkZW5zaXR5KTtcbiAgICB9XG4gICAgQGlmICR0eXBvZ3JhcGh5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgdHlwb2dyYXBoeSgkdHlwb2dyYXBoeSk7XG4gICAgfVxuICB9XG59XG4iLCIvLyBUaGlzIG1peGluIHdpbGwgZW5zdXJlIHRoYXQgbGluZXMgdGhhdCBvdmVyZmxvdyB0aGUgY29udGFpbmVyIHdpbGwgaGlkZSB0aGUgb3ZlcmZsb3cgYW5kXG4vLyB0cnVuY2F0ZSBuZWF0bHkgd2l0aCBhbiBlbGxpcHNpcy5cbkBtaXhpbiB0cnVuY2F0ZS1saW5lKCkge1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbn1cblxuLy8gTWl4aW4gdG8gcHJvdmlkZSBhbGwgbWF0LWxpbmUgc3R5bGVzLCBjaGFuZ2luZyBzZWNvbmRhcnkgZm9udCBzaXplIGJhc2VkIG9uIHdoZXRoZXIgdGhlIGxpc3Rcbi8vIGlzIGluIGRlbnNlIG1vZGUuXG5AbWl4aW4gYmFzZSgkc2Vjb25kYXJ5LWZvbnQtc2l6ZSkge1xuICAubWF0LWxpbmUge1xuICAgIEBpbmNsdWRlIHRydW5jYXRlLWxpbmUoKTtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuXG4gICAgLy8gYWxsIGxpbmVzIGJ1dCB0aGUgdG9wIGxpbmUgc2hvdWxkIGhhdmUgc21hbGxlciB0ZXh0XG4gICAgJjpudGgtY2hpbGQobisyKSB7XG4gICAgICBmb250LXNpemU6ICRzZWNvbmRhcnktZm9udC1zaXplO1xuICAgIH1cbiAgfVxufVxuXG4vLyBUaGlzIG1peGluIG5vcm1hbGl6ZXMgZGVmYXVsdCBlbGVtZW50IHN0eWxlcywgZS5nLiBmb250IHdlaWdodCBmb3IgaGVhZGluZyB0ZXh0LlxuQG1peGluIG5vcm1hbGl6ZS10ZXh0KCkge1xuICAmID4gKiB7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICBmb250LXNpemU6IGluaGVyaXQ7XG4gIH1cbn1cblxuLy8gVGhpcyBtaXhpbiBwcm92aWRlcyBiYXNlIHN0eWxlcyBmb3IgdGhlIHdyYXBwZXIgYXJvdW5kIG1hdC1saW5lIGVsZW1lbnRzIGluIGEgbGlzdC5cbkBtaXhpbiB3cmFwcGVyLWJhc2UoKSB7XG4gIEBpbmNsdWRlIG5vcm1hbGl6ZS10ZXh0KCk7XG5cbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgZmxleDogYXV0bztcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAvLyBNdXN0IHJlbW92ZSB3cmFwcGVyIHdoZW4gbGluZXMgYXJlIGVtcHR5IG9yIGl0IHRha2VzIHVwIGhvcml6b250YWxcbiAgLy8gc3BhY2UgYW5kIHB1c2hlcyBvdGhlciBlbGVtZW50cyB0byB0aGUgcmlnaHQuXG4gICY6ZW1wdHkge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cbiIsIkB1c2UgJ3Nhc3M6bWFwJztcbkB1c2UgJy4uL2NvcmUvdGhlbWluZy9wYWxldHRlJztcbkB1c2UgJy4uL2NvcmUvdGhlbWluZy90aGVtaW5nJztcbkB1c2UgJy4uL2NvcmUvc3R5bGUvZm9ybS1jb21tb24nO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHknO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHktdXRpbHMnO1xuQHVzZSAnLi4vY29yZS9zdHlsZS92ZW5kb3ItcHJlZml4ZXMnO1xuXG5cbkBtaXhpbiBjb2xvcigkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJHByaW1hcnk6IG1hcC5nZXQoJGNvbmZpZywgcHJpbWFyeSk7XG4gICRhY2NlbnQ6IG1hcC5nZXQoJGNvbmZpZywgYWNjZW50KTtcbiAgJHdhcm46IG1hcC5nZXQoJGNvbmZpZywgd2Fybik7XG4gICRmb3JlZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGZvcmVncm91bmQpO1xuXG4gIC5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0IC5tYXQtZm9ybS1maWVsZC1pbmZpeDo6YWZ0ZXIge1xuICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIHNlY29uZGFyeS10ZXh0KTtcbiAgfVxuXG4gIC5tYXQtaW5wdXQtZWxlbWVudDpkaXNhYmxlZCxcbiAgLm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQgLm1hdC1mb3JtLWZpZWxkLWluZml4OjphZnRlciB7XG4gICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgZGlzYWJsZWQtdGV4dCk7XG4gIH1cblxuICAubWF0LWlucHV0LWVsZW1lbnQge1xuICAgIGNhcmV0LWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHByaW1hcnksIHRleHQpO1xuXG4gICAgQGluY2x1ZGUgdmVuZG9yLXByZWZpeGVzLmlucHV0LXBsYWNlaG9sZGVyIHtcbiAgICAgIGNvbG9yOiBmb3JtLWNvbW1vbi5wcml2YXRlLWNvbnRyb2wtcGxhY2Vob2xkZXItY29sb3IoJGNvbmZpZyk7XG4gICAgfVxuXG4gICAgLy8gT24gZGFyayB0aGVtZXMgd2Ugc2V0IHRoZSBuYXRpdmUgYHNlbGVjdGAgY29sb3IgdG8gc29tZSBzaGFkZSBvZiB3aGl0ZSxcbiAgICAvLyBob3dldmVyIHRoZSBjb2xvciBwcm9wYWdhdGVzIHRvIGFsbCBvZiB0aGUgYG9wdGlvbmAgZWxlbWVudHMsIHdoaWNoIGFyZVxuICAgIC8vIGFsd2F5cyBvbiBhIHdoaXRlIGJhY2tncm91bmQgaW5zaWRlIHRoZSBkcm9wZG93biwgY2F1c2luZyB0aGVtIHRvIGJsZW5kIGluLlxuICAgIC8vIFNpbmNlIHdlIGNhbid0IGNoYW5nZSBiYWNrZ3JvdW5kIG9mIHRoZSBkcm9wZG93biwgd2UgbmVlZCB0byBleHBsaWNpdGx5XG4gICAgLy8gcmVzZXQgdGhlIGNvbG9yIG9mIHRoZSBvcHRpb25zIHRvIHNvbWV0aGluZyBkYXJrLlxuICAgIEBpZiAobWFwLmdldCgkY29uZmlnLCBpcy1kYXJrKSkge1xuICAgICAgb3B0aW9uIHtcbiAgICAgICAgY29sb3I6IHBhbGV0dGUuJGRhcmstcHJpbWFyeS10ZXh0O1xuICAgICAgfVxuXG4gICAgICBvcHRpb246ZGlzYWJsZWQge1xuICAgICAgICBjb2xvcjogcGFsZXR0ZS4kZGFyay1kaXNhYmxlZC10ZXh0O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5tYXQtZm9ybS1maWVsZC5tYXQtYWNjZW50IC5tYXQtaW5wdXQtZWxlbWVudCB7XG4gICAgY2FyZXQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYWNjZW50LCB0ZXh0KTtcbiAgfVxuXG4gIC5tYXQtZm9ybS1maWVsZC5tYXQtd2FybiAubWF0LWlucHV0LWVsZW1lbnQsXG4gIC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkIC5tYXQtaW5wdXQtZWxlbWVudCB7XG4gICAgY2FyZXQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkd2FybiwgdGV4dCk7XG4gIH1cblxuICAubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkIC5tYXQtZm9ybS1maWVsZC1pbmZpeDo6YWZ0ZXIge1xuICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHdhcm4sIHRleHQpO1xuICB9XG59XG5cbkBtaXhpbiB0eXBvZ3JhcGh5KCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdHlwb2dyYXBoeS5wcml2YXRlLXR5cG9ncmFwaHktdG8tMjAxNC1jb25maWcoXG4gICAgICB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKSk7XG4gIC8vIFRoZSB1bml0LWxlc3MgbGluZS1oZWlnaHQgZnJvbSB0aGUgZm9udCBjb25maWcuXG4gICRsaW5lLWhlaWdodDogdHlwb2dyYXBoeS11dGlscy5saW5lLWhlaWdodCgkY29uZmlnLCBpbnB1dCk7XG5cbiAgLy8gVGhlIGFtb3VudCBvZiBzcGFjZSBiZXR3ZWVuIHRoZSB0b3Agb2YgdGhlIGxpbmUgYW5kIHRoZSB0b3Agb2YgdGhlIGFjdHVhbCB0ZXh0XG4gIC8vIChhcyBhIGZyYWN0aW9uIG9mIHRoZSBmb250LXNpemUpLlxuICAkbGluZS1zcGFjaW5nOiAoJGxpbmUtaGVpZ2h0IC0gMSkgLyAyO1xuXG4gIC8vIDxpbnB1dD4gZWxlbWVudHMgc2VlbSB0byBoYXZlIHRoZWlyIGhlaWdodCBzZXQgc2xpZ2h0bHkgdG9vIGxhcmdlIG9uIFNhZmFyaSBjYXVzaW5nIHRoZSB0ZXh0IHRvXG4gIC8vIGJlIG1pc2FsaWduZWQgdy5yLnQuIHRoZSBwbGFjZWhvbGRlci4gQWRkaW5nIHRoaXMgbWFyZ2luIGNvcnJlY3RzIGl0LlxuICBpbnB1dC5tYXQtaW5wdXQtZWxlbWVudCB7XG4gICAgbWFyZ2luLXRvcDogLSRsaW5lLXNwYWNpbmcgKiAxZW07XG4gIH1cbn1cblxuQG1peGluIF9kZW5zaXR5KCRjb25maWctb3ItdGhlbWUpIHt9XG5cbkBtaXhpbiB0aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKSB7XG4gICR0aGVtZTogdGhlbWluZy5wcml2YXRlLWxlZ2FjeS1nZXQtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZyk7XG4gIEBpbmNsdWRlIHRoZW1pbmcucHJpdmF0ZS1jaGVjay1kdXBsaWNhdGUtdGhlbWUtc3R5bGVzKCR0aGVtZSwgJ21hdC1pbnB1dCcpIHtcbiAgICAkY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkdGhlbWUpO1xuICAgICRkZW5zaXR5OiB0aGVtaW5nLmdldC1kZW5zaXR5LWNvbmZpZygkdGhlbWUpO1xuICAgICR0eXBvZ3JhcGh5OiB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkdGhlbWUpO1xuXG4gICAgQGlmICRjb2xvciAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIGNvbG9yKCRjb2xvcik7XG4gICAgfVxuICAgIEBpZiAkZGVuc2l0eSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIF9kZW5zaXR5KCRkZW5zaXR5KTtcbiAgICB9XG4gICAgQGlmICR0eXBvZ3JhcGh5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgdHlwb2dyYXBoeSgkdHlwb2dyYXBoeSk7XG4gICAgfVxuICB9XG59XG4iLCJAdXNlICdzYXNzOm1hcCc7XG5AdXNlICcuLi9jb3JlL3N0eWxlL3ByaXZhdGUnO1xuQHVzZSAnLi4vY29yZS90aGVtaW5nL3RoZW1pbmcnO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHknO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHktdXRpbHMnO1xuXG5cbkBtaXhpbiBjb2xvcigkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJGJhY2tncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgYmFja2dyb3VuZCk7XG4gICRmb3JlZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGZvcmVncm91bmQpO1xuXG4gIC5tYXQtbWVudS1wYW5lbCB7XG4gICAgQGluY2x1ZGUgcHJpdmF0ZS5wcml2YXRlLXRoZW1lLW92ZXJyaWRhYmxlLWVsZXZhdGlvbig0LCAkY29uZmlnKTtcbiAgICBiYWNrZ3JvdW5kOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGJhY2tncm91bmQsICdjYXJkJyk7XG4gIH1cblxuICAubWF0LW1lbnUtaXRlbSB7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgJ3RleHQnKTtcblxuICAgICZbZGlzYWJsZWRdIHtcbiAgICAgICYsXG4gICAgICAmOjphZnRlcixcbiAgICAgIC5tYXQtaWNvbi1uby1jb2xvciB7XG4gICAgICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsICdkaXNhYmxlZCcpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5tYXQtbWVudS1pdGVtIC5tYXQtaWNvbi1uby1jb2xvcixcbiAgLm1hdC1tZW51LWl0ZW0tc3VibWVudS10cmlnZ2VyOjphZnRlciB7XG4gICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgJ2ljb24nKTtcbiAgfVxuXG4gIC5tYXQtbWVudS1pdGVtOmhvdmVyLFxuICAubWF0LW1lbnUtaXRlbS5jZGstcHJvZ3JhbS1mb2N1c2VkLFxuICAubWF0LW1lbnUtaXRlbS5jZGsta2V5Ym9hcmQtZm9jdXNlZCxcbiAgLm1hdC1tZW51LWl0ZW0taGlnaGxpZ2h0ZWQge1xuICAgICY6bm90KFtkaXNhYmxlZF0pIHtcbiAgICAgIGJhY2tncm91bmQ6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYmFja2dyb3VuZCwgJ2hvdmVyJyk7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiB0eXBvZ3JhcGh5KCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdHlwb2dyYXBoeS5wcml2YXRlLXR5cG9ncmFwaHktdG8tMjAxNC1jb25maWcoXG4gICAgICB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKSk7XG4gIC5tYXQtbWVudS1pdGVtIHtcbiAgICBmb250OiB7XG4gICAgICBmYW1pbHk6IHR5cG9ncmFwaHktdXRpbHMuZm9udC1mYW1pbHkoJGNvbmZpZywgYm9keS0xKTtcbiAgICAgIHNpemU6IHR5cG9ncmFwaHktdXRpbHMuZm9udC1zaXplKCRjb25maWcsIGJvZHktMSk7XG4gICAgICB3ZWlnaHQ6IHR5cG9ncmFwaHktdXRpbHMuZm9udC13ZWlnaHQoJGNvbmZpZywgYm9keS0xKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIF9kZW5zaXR5KCRjb25maWctb3ItdGhlbWUpIHt9XG5cbkBtaXhpbiB0aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKSB7XG4gICR0aGVtZTogdGhlbWluZy5wcml2YXRlLWxlZ2FjeS1nZXQtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZyk7XG4gIEBpbmNsdWRlIHRoZW1pbmcucHJpdmF0ZS1jaGVjay1kdXBsaWNhdGUtdGhlbWUtc3R5bGVzKCR0aGVtZSwgJ21hdC1tZW51Jykge1xuICAgICRjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgJGRlbnNpdHk6IHRoZW1pbmcuZ2V0LWRlbnNpdHktY29uZmlnKCR0aGVtZSk7XG4gICAgJHR5cG9ncmFwaHk6IHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCR0aGVtZSk7XG5cbiAgICBAaWYgJGNvbG9yICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgX2RlbnNpdHkoJGRlbnNpdHkpO1xuICAgIH1cbiAgICBAaWYgJHR5cG9ncmFwaHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5KCR0eXBvZ3JhcGh5KTtcbiAgICB9XG4gIH1cbn1cblxuIiwiQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnLi4vY29yZS90aGVtaW5nL3RoZW1pbmcnO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHknO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHktdXRpbHMnO1xuQHVzZSAnLi4vY29yZS9kZW5zaXR5L3ByaXZhdGUvY29tcGF0aWJpbGl0eSc7XG5AdXNlICcuL3BhZ2luYXRvci12YXJpYWJsZXMnO1xuXG5AbWl4aW4gY29sb3IoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRmb3JlZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGZvcmVncm91bmQpO1xuICAkYmFja2dyb3VuZDogbWFwLmdldCgkY29uZmlnLCBiYWNrZ3JvdW5kKTtcblxuICAubWF0LXBhZ2luYXRvciB7XG4gICAgYmFja2dyb3VuZDogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLCAnY2FyZCcpO1xuICB9XG5cbiAgLm1hdC1wYWdpbmF0b3IsXG4gIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZSAubWF0LXNlbGVjdC10cmlnZ2VyIHtcbiAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBzZWNvbmRhcnktdGV4dCk7XG4gIH1cblxuICAubWF0LXBhZ2luYXRvci1kZWNyZW1lbnQsXG4gIC5tYXQtcGFnaW5hdG9yLWluY3JlbWVudCB7XG4gICAgYm9yZGVyLXRvcDogMnB4IHNvbGlkIHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgJ2ljb24nKTtcbiAgICBib3JkZXItcmlnaHQ6IDJweCBzb2xpZCB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsICdpY29uJyk7XG4gIH1cblxuICAubWF0LXBhZ2luYXRvci1maXJzdCxcbiAgLm1hdC1wYWdpbmF0b3ItbGFzdCB7XG4gICAgYm9yZGVyLXRvcDogMnB4IHNvbGlkIHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgJ2ljb24nKTtcbiAgfVxuXG4gIC5tYXQtaWNvbi1idXR0b25bZGlzYWJsZWRdIHtcbiAgICAubWF0LXBhZ2luYXRvci1kZWNyZW1lbnQsXG4gICAgLm1hdC1wYWdpbmF0b3ItaW5jcmVtZW50LFxuICAgIC5tYXQtcGFnaW5hdG9yLWZpcnN0LFxuICAgIC5tYXQtcGFnaW5hdG9yLWxhc3Qge1xuICAgICAgYm9yZGVyLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsICdkaXNhYmxlZCcpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gdHlwb2dyYXBoeSgkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHR5cG9ncmFwaHkucHJpdmF0ZS10eXBvZ3JhcGh5LXRvLTIwMTQtY29uZmlnKFxuICAgICAgdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJGNvbmZpZy1vci10aGVtZSkpO1xuICAubWF0LXBhZ2luYXRvcixcbiAgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplIC5tYXQtc2VsZWN0LXRyaWdnZXIge1xuICAgIGZvbnQ6IHtcbiAgICAgIGZhbWlseTogdHlwb2dyYXBoeS11dGlscy5mb250LWZhbWlseSgkY29uZmlnLCBjYXB0aW9uKTtcbiAgICAgIHNpemU6IHR5cG9ncmFwaHktdXRpbHMuZm9udC1zaXplKCRjb25maWcsIGNhcHRpb24pO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRkZW5zaXR5LXNjYWxlOiB0aGVtaW5nLmdldC1kZW5zaXR5LWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJGhlaWdodDogY29tcGF0aWJpbGl0eS5wcml2YXRlLWRlbnNpdHktcHJvcC12YWx1ZShwYWdpbmF0b3ItdmFyaWFibGVzLiRkZW5zaXR5LWNvbmZpZyxcbiAgICAkZGVuc2l0eS1zY2FsZSwgaGVpZ2h0KTtcblxuICBAaW5jbHVkZSBjb21wYXRpYmlsaXR5LnByaXZhdGUtZGVuc2l0eS1sZWdhY3ktY29tcGF0aWJpbGl0eSgpIHtcbiAgICAubWF0LXBhZ2luYXRvci1jb250YWluZXIge1xuICAgICAgbWluLWhlaWdodDogJGhlaWdodDtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiB0aGVtaW5nLnByaXZhdGUtbGVnYWN5LWdldC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgQGluY2x1ZGUgdGhlbWluZy5wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LXBhZ2luYXRvcicpIHtcbiAgICAkY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkdGhlbWUpO1xuICAgICRkZW5zaXR5OiB0aGVtaW5nLmdldC1kZW5zaXR5LWNvbmZpZygkdGhlbWUpO1xuICAgICR0eXBvZ3JhcGh5OiB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkdGhlbWUpO1xuXG4gICAgQGlmICRjb2xvciAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIGNvbG9yKCRjb2xvcik7XG4gICAgfVxuICAgIEBpZiAkZGVuc2l0eSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIGRlbnNpdHkoJGRlbnNpdHkpO1xuICAgIH1cbiAgICBAaWYgJHR5cG9ncmFwaHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5KCR0eXBvZ3JhcGh5KTtcbiAgICB9XG4gIH1cbn1cbiIsIkB1c2UgJ3Nhc3M6bWFwJztcbkB1c2UgJy4uL2NvcmUvdGhlbWluZy90aGVtaW5nJztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5JztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5LXV0aWxzJztcblxuQG1peGluIF9jb2xvcigkcGFsZXR0ZSkge1xuICAmLm1hdC1yYWRpby1jaGVja2VkIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlIHtcbiAgICBib3JkZXItY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkcGFsZXR0ZSk7XG4gIH1cblxuICAubWF0LXJhZGlvLWlubmVyLWNpcmNsZSxcbiAgLm1hdC1yYWRpby1yaXBwbGUgLm1hdC1yaXBwbGUtZWxlbWVudDpub3QoLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZSksXG4gICYubWF0LXJhZGlvLWNoZWNrZWQgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZSxcbiAgJjphY3RpdmUgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRwYWxldHRlKTtcbiAgfVxufVxuXG5AbWl4aW4gY29sb3IoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRwcmltYXJ5OiBtYXAuZ2V0KCRjb25maWcsIHByaW1hcnkpO1xuICAkYWNjZW50OiBtYXAuZ2V0KCRjb25maWcsIGFjY2VudCk7XG4gICR3YXJuOiBtYXAuZ2V0KCRjb25maWcsIHdhcm4pO1xuICAkYmFja2dyb3VuZDogbWFwLmdldCgkY29uZmlnLCBiYWNrZ3JvdW5kKTtcbiAgJGZvcmVncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgZm9yZWdyb3VuZCk7XG5cbiAgLm1hdC1yYWRpby1vdXRlci1jaXJjbGUge1xuICAgIGJvcmRlci1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBzZWNvbmRhcnktdGV4dCk7XG4gIH1cblxuICAubWF0LXJhZGlvLWJ1dHRvbiB7XG4gICAgJi5tYXQtcHJpbWFyeSB7XG4gICAgICBAaW5jbHVkZSBfY29sb3IoJHByaW1hcnkpO1xuICAgIH1cblxuICAgICYubWF0LWFjY2VudCB7XG4gICAgICBAaW5jbHVkZSBfY29sb3IoJGFjY2VudCk7XG4gICAgfVxuXG4gICAgJi5tYXQtd2FybiB7XG4gICAgICBAaW5jbHVkZSBfY29sb3IoJHdhcm4pO1xuICAgIH1cblxuICAgIC8vIFRoaXMgbmVlZHMgZXh0cmEgc3BlY2lmaWNpdHksIGJlY2F1c2UgdGhlIGNsYXNzZXMgYWJvdmUgYXJlIGNvbWJpbmVkXG4gICAgLy8gKGUuZy4gYC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1hY2NlbnRgKSB3aGljaCBpbmNyZWFzZXMgdGhlaXIgc3BlY2lmaWNpdHkgYSBsb3QuXG4gICAgLy8gVE9ETzogY29uc2lkZXIgbWFraW5nIHRoZSBzZWxlY3RvcnMgaW50byBkZXNjZW5kYW50cyAoYC5tYXQtcHJpbWFyeSAubWF0LXJhZGlvLWJ1dHRvbmApLlxuICAgICYubWF0LXJhZGlvLWRpc2FibGVkIHtcbiAgICAgICYubWF0LXJhZGlvLWNoZWNrZWQgLm1hdC1yYWRpby1vdXRlci1jaXJjbGUsXG4gICAgICAubWF0LXJhZGlvLW91dGVyLWNpcmNsZSB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBkaXNhYmxlZCk7XG4gICAgICB9XG5cbiAgICAgIC5tYXQtcmFkaW8tcmlwcGxlIC5tYXQtcmlwcGxlLWVsZW1lbnQsXG4gICAgICAubWF0LXJhZGlvLWlubmVyLWNpcmNsZSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgZGlzYWJsZWQpO1xuICAgICAgfVxuXG4gICAgICAubWF0LXJhZGlvLWxhYmVsLWNvbnRlbnQge1xuICAgICAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBkaXNhYmxlZCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gU3dpdGNoIHRoaXMgdG8gYSBzb2xpZCBjb2xvciBzaW5jZSB3ZSdyZSB1c2luZyBgb3BhY2l0eWBcbiAgICAvLyB0byBjb250cm9sIGhvdyBvcGFxdWUgdGhlIHJpcHBsZSBzaG91bGQgYmUuXG4gICAgLm1hdC1yaXBwbGUtZWxlbWVudCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtYXAuZ2V0KCRmb3JlZ3JvdW5kLCBiYXNlKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHR5cG9ncmFwaHkoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0eXBvZ3JhcGh5LnByaXZhdGUtdHlwb2dyYXBoeS10by0yMDE0LWNvbmZpZyhcbiAgICAgIHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCRjb25maWctb3ItdGhlbWUpKTtcbiAgLm1hdC1yYWRpby1idXR0b24ge1xuICAgIGZvbnQtZmFtaWx5OiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtZmFtaWx5KCRjb25maWcpO1xuICB9XG59XG5cbkBtaXhpbiBfZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZykge1xuICAkdGhlbWU6IHRoZW1pbmcucHJpdmF0ZS1sZWdhY3ktZ2V0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICBAaW5jbHVkZSB0aGVtaW5nLnByaXZhdGUtY2hlY2stZHVwbGljYXRlLXRoZW1lLXN0eWxlcygkdGhlbWUsICdtYXQtcmFkaW8nKSB7XG4gICAgJGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJHRoZW1lKTtcbiAgICAkZGVuc2l0eTogdGhlbWluZy5nZXQtZGVuc2l0eS1jb25maWcoJHRoZW1lKTtcbiAgICAkdHlwb2dyYXBoeTogdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJHRoZW1lKTtcblxuICAgIEBpZiAkY29sb3IgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBjb2xvcigkY29sb3IpO1xuICAgIH1cbiAgICBAaWYgJGRlbnNpdHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBfZGVuc2l0eSgkZGVuc2l0eSk7XG4gICAgfVxuICAgIEBpZiAkdHlwb2dyYXBoeSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIHR5cG9ncmFwaHkoJHR5cG9ncmFwaHkpO1xuICAgIH1cbiAgfVxufVxuIiwiQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnLi4vY29yZS90aGVtaW5nL3RoZW1pbmcnO1xuQHVzZSAnLi4vY29yZS9zdHlsZS9wcml2YXRlJztcbkB1c2UgJy4uL2NvcmUvc3R5bGUvZm9ybS1jb21tb24nO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHknO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHktdXRpbHMnO1xuXG5cbkBtaXhpbiBjb2xvcigkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJGZvcmVncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgZm9yZWdyb3VuZCk7XG4gICRiYWNrZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGJhY2tncm91bmQpO1xuICAkcHJpbWFyeTogbWFwLmdldCgkY29uZmlnLCBwcmltYXJ5KTtcbiAgJGFjY2VudDogbWFwLmdldCgkY29uZmlnLCBhY2NlbnQpO1xuICAkd2FybjogbWFwLmdldCgkY29uZmlnLCB3YXJuKTtcblxuICAubWF0LXNlbGVjdC12YWx1ZSB7XG4gICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgdGV4dCk7XG4gIH1cblxuICAubWF0LXNlbGVjdC1wbGFjZWhvbGRlciB7XG4gICAgY29sb3I6IGZvcm0tY29tbW9uLnByaXZhdGUtY29udHJvbC1wbGFjZWhvbGRlci1jb2xvcigkY29uZmlnKTtcbiAgfVxuXG4gIC5tYXQtc2VsZWN0LWRpc2FibGVkIC5tYXQtc2VsZWN0LXZhbHVlIHtcbiAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBkaXNhYmxlZC10ZXh0KTtcbiAgfVxuXG4gIC5tYXQtc2VsZWN0LWFycm93IHtcbiAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBzZWNvbmRhcnktdGV4dCk7XG4gIH1cblxuICAubWF0LXNlbGVjdC1wYW5lbCB7XG4gICAgYmFja2dyb3VuZDogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLCBjYXJkKTtcbiAgICBAaW5jbHVkZSBwcml2YXRlLnByaXZhdGUtdGhlbWUtb3ZlcnJpZGFibGUtZWxldmF0aW9uKDQsICRjb25maWcpO1xuXG4gICAgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkOm5vdCgubWF0LW9wdGlvbi1tdWx0aXBsZSkge1xuICAgICAgYmFja2dyb3VuZDogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLCBob3ZlciwgMC4xMik7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1mb3JtLWZpZWxkIHtcbiAgICAmLm1hdC1mb2N1c2VkIHtcbiAgICAgICYubWF0LXByaW1hcnkgLm1hdC1zZWxlY3QtYXJyb3cge1xuICAgICAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRwcmltYXJ5LCB0ZXh0KTtcbiAgICAgIH1cblxuICAgICAgJi5tYXQtYWNjZW50IC5tYXQtc2VsZWN0LWFycm93IHtcbiAgICAgICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYWNjZW50LCB0ZXh0KTtcbiAgICAgIH1cblxuICAgICAgJi5tYXQtd2FybiAubWF0LXNlbGVjdC1hcnJvdyB7XG4gICAgICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHdhcm4sIHRleHQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC5tYXQtc2VsZWN0Lm1hdC1zZWxlY3QtaW52YWxpZCAubWF0LXNlbGVjdC1hcnJvdyB7XG4gICAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCR3YXJuLCB0ZXh0KTtcbiAgICB9XG5cbiAgICAubWF0LXNlbGVjdC5tYXQtc2VsZWN0LWRpc2FibGVkIC5tYXQtc2VsZWN0LWFycm93IHtcbiAgICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIGRpc2FibGVkLXRleHQpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gdHlwb2dyYXBoeSgkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHR5cG9ncmFwaHkucHJpdmF0ZS10eXBvZ3JhcGh5LXRvLTIwMTQtY29uZmlnKFxuICAgICAgdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJGNvbmZpZy1vci10aGVtZSkpO1xuICAvLyBUaGUgdW5pdC1sZXNzIGxpbmUtaGVpZ2h0IGZyb20gdGhlIGZvbnQgY29uZmlnLlxuICAkbGluZS1oZWlnaHQ6IHR5cG9ncmFwaHktdXRpbHMubGluZS1oZWlnaHQoJGNvbmZpZywgaW5wdXQpO1xuXG4gIC5tYXQtc2VsZWN0IHtcbiAgICBmb250LWZhbWlseTogdHlwb2dyYXBoeS11dGlscy5mb250LWZhbWlseSgkY29uZmlnKTtcbiAgfVxuXG4gIC5tYXQtc2VsZWN0LXRyaWdnZXIge1xuICAgIGhlaWdodDogJGxpbmUtaGVpZ2h0ICogMWVtO1xuICB9XG59XG5cbkBtaXhpbiBfZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZykge1xuICAkdGhlbWU6IHRoZW1pbmcucHJpdmF0ZS1sZWdhY3ktZ2V0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICBAaW5jbHVkZSB0aGVtaW5nLnByaXZhdGUtY2hlY2stZHVwbGljYXRlLXRoZW1lLXN0eWxlcygkdGhlbWUsICdtYXQtc2VsZWN0Jykge1xuICAgICRjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgJGRlbnNpdHk6IHRoZW1pbmcuZ2V0LWRlbnNpdHktY29uZmlnKCR0aGVtZSk7XG4gICAgJHR5cG9ncmFwaHk6IHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCR0aGVtZSk7XG5cbiAgICBAaWYgJGNvbG9yICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgX2RlbnNpdHkoJGRlbnNpdHkpO1xuICAgIH1cbiAgICBAaWYgJHR5cG9ncmFwaHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5KCR0eXBvZ3JhcGh5KTtcbiAgICB9XG4gIH1cbn1cbiIsIkB1c2UgJ3Nhc3M6bWFwJztcbkB1c2UgJy4uL2NvcmUvc3R5bGUvcHJpdmF0ZSc7XG5AdXNlICcuLi9jb3JlL3RoZW1pbmcvcGFsZXR0ZSc7XG5AdXNlICcuLi9jb3JlL3RoZW1pbmcvdGhlbWluZyc7XG5AdXNlICcuLi9jb3JlL3R5cG9ncmFwaHkvdHlwb2dyYXBoeSc7XG5AdXNlICcuLi9jb3JlL3R5cG9ncmFwaHkvdHlwb2dyYXBoeS11dGlscyc7XG5cbkBtaXhpbiBfY2hlY2tlZC1jb2xvcigkcGFsZXR0ZSwgJHRodW1iLWNoZWNrZWQtaHVlKSB7XG4gICYubWF0LWNoZWNrZWQge1xuICAgIC5tYXQtc2xpZGUtdG9nZ2xlLXRodW1iIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkcGFsZXR0ZSwgJHRodW1iLWNoZWNrZWQtaHVlKTtcbiAgICB9XG5cbiAgICAubWF0LXNsaWRlLXRvZ2dsZS1iYXIge1xuICAgICAgLy8gT3BhY2l0eSBpcyBkZXRlcm1pbmVkIGZyb20gdGhlIHNwZWNzIGZvciB0aGUgc2VsZWN0aW9uIGNvbnRyb2xzLlxuICAgICAgLy8gU2VlOiBodHRwczovL21hdGVyaWFsLmlvL2Rlc2lnbi9jb21wb25lbnRzL3NlbGVjdGlvbi1jb250cm9scy5odG1sI3NwZWNzXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHBhbGV0dGUsICR0aHVtYi1jaGVja2VkLWh1ZSwgMC41NCk7XG4gICAgfVxuXG4gICAgLm1hdC1yaXBwbGUtZWxlbWVudCB7XG4gICAgICAvLyBTZXQgbm8gb3BhY2l0eSBmb3IgdGhlIHJpcHBsZXMgYmVjYXVzZSB0aGUgcmlwcGxlIG9wYWNpdHkgd2lsbCBiZSBhZGp1c3RlZCBkeW5hbWljYWxseVxuICAgICAgLy8gYmFzZWQgb24gdGhlIHR5cGUgb2YgaW50ZXJhY3Rpb24gd2l0aCB0aGUgc2xpZGUtdG9nZ2xlIChlLmcuIGZvciBob3ZlciwgZm9jdXMpXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHBhbGV0dGUsICR0aHVtYi1jaGVja2VkLWh1ZSk7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBjb2xvcigkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJGlzLWRhcms6IG1hcC5nZXQoJGNvbmZpZywgaXMtZGFyayk7XG4gICRwcmltYXJ5OiBtYXAuZ2V0KCRjb25maWcsIHByaW1hcnkpO1xuICAkYWNjZW50OiBtYXAuZ2V0KCRjb25maWcsIGFjY2VudCk7XG4gICR3YXJuOiBtYXAuZ2V0KCRjb25maWcsIHdhcm4pO1xuICAkYmFja2dyb3VuZDogbWFwLmdldCgkY29uZmlnLCBiYWNrZ3JvdW5kKTtcbiAgJGZvcmVncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgZm9yZWdyb3VuZCk7XG5cbiAgLy8gQ29sb3IgaHVlcyBhcmUgYmFzZWQgb24gdGhlIHNwZWNzIHdoaWNoIGJyaWVmbHkgc2hvdyB0aGUgaHVlcyB0aGF0IGFyZSBhcHBsaWVkIHRvIGEgc3dpdGNoLlxuICAvLyBUaGUgMjAxOCBzcGVjcyBubyBsb25nZXIgZGVzY3JpYmUgaG93IGRhcmsgc3dpdGNoZXMgc2hvdWxkIGxvb2sgbGlrZS4gRHVlIHRvIHRoZSBsYWNrIG9mXG4gIC8vIGluZm9ybWF0aW9uIGZvciBkYXJrIHRoZW1lZCBzd2l0Y2hlcywgd2UgcGFydGlhbGx5IGtlZXAgdGhlIG9sZCBiZWhhdmlvciB0aGF0IGlzIGJhc2VkIG9uXG4gIC8vIHRoZSBwcmV2aW91cyBzcGVjaWZpY2F0aW9ucy4gRm9yIHRoZSBjaGVja2VkIGNvbG9yIHdlIGFsd2F5cyB1c2UgdGhlIGBkZWZhdWx0YCBodWUgYmVjYXVzZVxuICAvLyB0aGF0IGZvbGxvd3MgTURDIGFuZCBhbHNvIG1ha2VzIGl0IGVhc2llciBmb3IgcGVvcGxlIHRvIGNyZWF0ZSBhIGN1c3RvbSB0aGVtZSB3aXRob3V0IG5lZWRpbmdcbiAgLy8gdG8gc3BlY2lmeSBlYWNoIGh1ZSBpbmRpdmlkdWFsbHkuXG4gICR0aHVtYi11bmNoZWNrZWQtaHVlOiBpZigkaXMtZGFyaywgNDAwLCA1MCk7XG4gICR0aHVtYi1jaGVja2VkLWh1ZTogZGVmYXVsdDtcblxuICAkYmFyLXVuY2hlY2tlZC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBkaXNhYmxlZCk7XG4gICRyaXBwbGUtdW5jaGVja2VkLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIGJhc2UpO1xuXG4gIC5tYXQtc2xpZGUtdG9nZ2xlIHtcbiAgICBAaW5jbHVkZSBfY2hlY2tlZC1jb2xvcigkYWNjZW50LCAkdGh1bWItY2hlY2tlZC1odWUpO1xuXG4gICAgJi5tYXQtcHJpbWFyeSB7XG4gICAgICBAaW5jbHVkZSBfY2hlY2tlZC1jb2xvcigkcHJpbWFyeSwgJHRodW1iLWNoZWNrZWQtaHVlKTtcbiAgICB9XG5cbiAgICAmLm1hdC13YXJuIHtcbiAgICAgIEBpbmNsdWRlIF9jaGVja2VkLWNvbG9yKCR3YXJuLCAkdGh1bWItY2hlY2tlZC1odWUpO1xuICAgIH1cblxuICAgICY6bm90KC5tYXQtY2hlY2tlZCkgLm1hdC1yaXBwbGUtZWxlbWVudCB7XG4gICAgICAvLyBTZXQgbm8gb3BhY2l0eSBmb3IgdGhlIHJpcHBsZXMgYmVjYXVzZSB0aGUgcmlwcGxlIG9wYWNpdHkgd2lsbCBiZSBhZGp1c3RlZCBkeW5hbWljYWxseVxuICAgICAgLy8gYmFzZWQgb24gdGhlIHR5cGUgb2YgaW50ZXJhY3Rpb24gd2l0aCB0aGUgc2xpZGUtdG9nZ2xlIChlLmcuIGZvciBob3ZlciwgZm9jdXMpXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkcmlwcGxlLXVuY2hlY2tlZC1jb2xvcjtcbiAgICB9XG4gIH1cblxuICAubWF0LXNsaWRlLXRvZ2dsZS10aHVtYiB7XG4gICAgQGluY2x1ZGUgcHJpdmF0ZS5wcml2YXRlLXRoZW1lLWVsZXZhdGlvbigxLCAkY29uZmlnKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUocGFsZXR0ZS4kZ3JleS1wYWxldHRlLCAkdGh1bWItdW5jaGVja2VkLWh1ZSk7XG4gIH1cblxuICAubWF0LXNsaWRlLXRvZ2dsZS1iYXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRiYXItdW5jaGVja2VkLWNvbG9yO1xuICB9XG59XG5cbkBtaXhpbiB0eXBvZ3JhcGh5KCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdHlwb2dyYXBoeS5wcml2YXRlLXR5cG9ncmFwaHktdG8tMjAxNC1jb25maWcoXG4gICAgICB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKSk7XG4gIC5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnQge1xuICAgIGZvbnQtZmFtaWx5OiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtZmFtaWx5KCRjb25maWcpO1xuICB9XG59XG5cbkBtaXhpbiBfZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZykge1xuICAkdGhlbWU6IHRoZW1pbmcucHJpdmF0ZS1sZWdhY3ktZ2V0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICBAaW5jbHVkZSB0aGVtaW5nLnByaXZhdGUtY2hlY2stZHVwbGljYXRlLXRoZW1lLXN0eWxlcygkdGhlbWUsICdtYXQtc2xpZGUtdG9nZ2xlJykge1xuICAgICRjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgJGRlbnNpdHk6IHRoZW1pbmcuZ2V0LWRlbnNpdHktY29uZmlnKCR0aGVtZSk7XG4gICAgJHR5cG9ncmFwaHk6IHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCR0aGVtZSk7XG5cbiAgICBAaWYgJGNvbG9yICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgX2RlbnNpdHkoJGRlbnNpdHkpO1xuICAgIH1cbiAgICBAaWYgJHR5cG9ncmFwaHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5KCR0eXBvZ3JhcGh5KTtcbiAgICB9XG4gIH1cbn1cblxuIiwiQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnc2FzczptZXRhJztcbkB1c2UgJy4uL2NvcmUvdGhlbWluZy90aGVtaW5nJztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5JztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5LXV0aWxzJztcblxuQG1peGluIF9pbm5lci1jb250ZW50LXRoZW1lKCRwYWxldHRlKSB7XG4gIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGwsXG4gIC5tYXQtc2xpZGVyLXRodW1iLFxuICAubWF0LXNsaWRlci10aHVtYi1sYWJlbCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRwYWxldHRlKTtcbiAgfVxuXG4gIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHQge1xuICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHBhbGV0dGUsIGRlZmF1bHQtY29udHJhc3QpO1xuICB9XG5cbiAgLm1hdC1zbGlkZXItZm9jdXMtcmluZyB7XG4gICAgJG9wYWNpdHk6IDAuMjtcbiAgICAkY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkcGFsZXR0ZSwgZGVmYXVsdCwgJG9wYWNpdHkpO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvcjtcblxuICAgIC8vIGBtYXQtY29sb3JgIHVzZXMgYHJnYmFgIGZvciB0aGUgb3BhY2l0eSB3aGljaCB3b24ndCB3b3JrIHdpdGhcbiAgICAvLyBDU1MgdmFyaWFibGVzIHNvIHdlIG5lZWQgdG8gdXNlIGBvcGFjaXR5YCBhcyBhIGZhbGxiYWNrLlxuICAgIEBpZiAobWV0YS50eXBlLW9mKCRjb2xvcikgIT0gY29sb3IpIHtcbiAgICAgIG9wYWNpdHk6ICRvcGFjaXR5O1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gY29sb3IoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRwcmltYXJ5OiBtYXAuZ2V0KCRjb25maWcsIHByaW1hcnkpO1xuICAkYWNjZW50OiBtYXAuZ2V0KCRjb25maWcsIGFjY2VudCk7XG4gICR3YXJuOiBtYXAuZ2V0KCRjb25maWcsIHdhcm4pO1xuICAkYmFja2dyb3VuZDogbWFwLmdldCgkY29uZmlnLCBiYWNrZ3JvdW5kKTtcbiAgJGZvcmVncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgZm9yZWdyb3VuZCk7XG5cbiAgJG1hdC1zbGlkZXItb2ZmLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIHNsaWRlci1vZmYpO1xuICAkbWF0LXNsaWRlci1vZmYtZm9jdXNlZC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBzbGlkZXItb2ZmLWFjdGl2ZSk7XG4gICRtYXQtc2xpZGVyLWRpc2FibGVkLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIHNsaWRlci1vZmYpO1xuICAkbWF0LXNsaWRlci1sYWJlbGVkLW1pbi12YWx1ZS10aHVtYi1jb2xvcjpcbiAgICB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIHNsaWRlci1taW4pO1xuICAkbWF0LXNsaWRlci1sYWJlbGVkLW1pbi12YWx1ZS10aHVtYi1sYWJlbC1jb2xvcjpcbiAgICB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIHNsaWRlci1vZmYpO1xuICAkbWF0LXNsaWRlci10aWNrLW9wYWNpdHk6IDAuNztcbiAgJG1hdC1zbGlkZXItdGljay1jb2xvcjpcbiAgICB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIGJhc2UsICRtYXQtc2xpZGVyLXRpY2stb3BhY2l0eSk7XG4gICRtYXQtc2xpZGVyLXRpY2stc2l6ZTogMnB4O1xuXG4gIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmQge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRtYXQtc2xpZGVyLW9mZi1jb2xvcjtcbiAgfVxuXG4gIC5tYXQtcHJpbWFyeSB7XG4gICAgQGluY2x1ZGUgX2lubmVyLWNvbnRlbnQtdGhlbWUoJHByaW1hcnkpO1xuICB9XG5cbiAgLm1hdC1hY2NlbnQge1xuICAgIEBpbmNsdWRlIF9pbm5lci1jb250ZW50LXRoZW1lKCRhY2NlbnQpO1xuICB9XG5cbiAgLm1hdC13YXJuIHtcbiAgICBAaW5jbHVkZSBfaW5uZXItY29udGVudC10aGVtZSgkd2Fybik7XG4gIH1cblxuICAubWF0LXNsaWRlcjpob3ZlcixcbiAgLmNkay1mb2N1c2VkIHtcbiAgICAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5kIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRtYXQtc2xpZGVyLW9mZi1mb2N1c2VkLWNvbG9yO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtc2xpZGVyLWRpc2FibGVkIHtcbiAgICAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5kLFxuICAgIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGwsXG4gICAgLm1hdC1zbGlkZXItdGh1bWIge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJG1hdC1zbGlkZXItZGlzYWJsZWQtY29sb3I7XG4gICAgfVxuXG4gICAgJjpob3ZlciB7XG4gICAgICAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5kIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJG1hdC1zbGlkZXItZGlzYWJsZWQtY29sb3I7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLm1hdC1zbGlkZXItbWluLXZhbHVlIHtcbiAgICAubWF0LXNsaWRlci1mb2N1cy1yaW5nIHtcbiAgICAgICRvcGFjaXR5OiAwLjEyO1xuICAgICAgJGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIGJhc2UsICRvcGFjaXR5KTtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvcjtcblxuICAgICAgLy8gYG1hdC1jb2xvcmAgdXNlcyBgcmdiYWAgZm9yIHRoZSBvcGFjaXR5IHdoaWNoIHdvbid0IHdvcmsgd2l0aFxuICAgICAgLy8gQ1NTIHZhcmlhYmxlcyBzbyB3ZSBuZWVkIHRvIHVzZSBgb3BhY2l0eWAgYXMgYSBmYWxsYmFjay5cbiAgICAgIEBpZiAobWV0YS50eXBlLW9mKCRjb2xvcikgIT0gY29sb3IpIHtcbiAgICAgICAgb3BhY2l0eTogJG9wYWNpdHk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJi5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcge1xuICAgICAgLm1hdC1zbGlkZXItdGh1bWIsXG4gICAgICAubWF0LXNsaWRlci10aHVtYi1sYWJlbCB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRtYXQtc2xpZGVyLWxhYmVsZWQtbWluLXZhbHVlLXRodW1iLWNvbG9yO1xuICAgICAgfVxuXG4gICAgICAmLmNkay1mb2N1c2VkIHtcbiAgICAgICAgLm1hdC1zbGlkZXItdGh1bWIsXG4gICAgICAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsIHtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkbWF0LXNsaWRlci1sYWJlbGVkLW1pbi12YWx1ZS10aHVtYi1sYWJlbC1jb2xvcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICY6bm90KC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcpIHtcbiAgICAgIC5tYXQtc2xpZGVyLXRodW1iIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAkbWF0LXNsaWRlci1vZmYtY29sb3I7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgfVxuXG4gICAgICAmOmhvdmVyLFxuICAgICAgJi5jZGstZm9jdXNlZCB7XG4gICAgICAgIC5tYXQtc2xpZGVyLXRodW1iIHtcbiAgICAgICAgICBib3JkZXItY29sb3I6ICRtYXQtc2xpZGVyLW9mZi1mb2N1c2VkLWNvbG9yO1xuICAgICAgICB9XG5cbiAgICAgICAgJi5tYXQtc2xpZGVyLWRpc2FibGVkIC5tYXQtc2xpZGVyLXRodW1iIHtcbiAgICAgICAgICBib3JkZXItY29sb3I6ICRtYXQtc2xpZGVyLWRpc2FibGVkLWNvbG9yO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLm1hdC1zbGlkZXItaGFzLXRpY2tzIC5tYXQtc2xpZGVyLXdyYXBwZXI6OmFmdGVyIHtcbiAgICBib3JkZXItY29sb3I6ICRtYXQtc2xpZGVyLXRpY2stY29sb3I7XG5cbiAgICAvLyBgbWF0LWNvbG9yYCB1c2VzIGByZ2JhYCBmb3IgdGhlIG9wYWNpdHkgd2hpY2ggd29uJ3Qgd29yayB3aXRoXG4gICAgLy8gQ1NTIHZhcmlhYmxlcyBzbyB3ZSBuZWVkIHRvIHVzZSBgb3BhY2l0eWAgYXMgYSBmYWxsYmFjay5cbiAgICBAaWYgKG1ldGEudHlwZS1vZigkbWF0LXNsaWRlci10aWNrLWNvbG9yKSAhPSBjb2xvcikge1xuICAgICAgb3BhY2l0eTogJG1hdC1zbGlkZXItdGljay1vcGFjaXR5O1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtc2xpZGVyLWhvcml6b250YWwgLm1hdC1zbGlkZXItdGlja3Mge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IHJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQodG8gcmlnaHQsICRtYXQtc2xpZGVyLXRpY2stY29sb3IsXG4gICAgICAgICRtYXQtc2xpZGVyLXRpY2stY29sb3IgJG1hdC1zbGlkZXItdGljay1zaXplLCB0cmFuc3BhcmVudCAwLCB0cmFuc3BhcmVudCk7XG4gICAgLy8gRmlyZWZveCBkb2Vzbid0IGRyYXcgdGhlIGdyYWRpZW50IGNvcnJlY3RseSB3aXRoICd0byByaWdodCdcbiAgICAvLyAoc2VlIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTEzMTQzMTkpLlxuICAgIGJhY2tncm91bmQtaW1hZ2U6IC1tb3otcmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCgwLjAwMDFkZWcsICRtYXQtc2xpZGVyLXRpY2stY29sb3IsXG4gICAgICAgICRtYXQtc2xpZGVyLXRpY2stY29sb3IgJG1hdC1zbGlkZXItdGljay1zaXplLCB0cmFuc3BhcmVudCAwLCB0cmFuc3BhcmVudCk7XG5cbiAgICAvLyBgbWF0LWNvbG9yYCB1c2VzIGByZ2JhYCBmb3IgdGhlIG9wYWNpdHkgd2hpY2ggd29uJ3Qgd29yayB3aXRoXG4gICAgLy8gQ1NTIHZhcmlhYmxlcyBzbyB3ZSBuZWVkIHRvIHVzZSBgb3BhY2l0eWAgYXMgYSBmYWxsYmFjay5cbiAgICBAaWYgKG1ldGEudHlwZS1vZigkbWF0LXNsaWRlci10aWNrLWNvbG9yKSAhPSBjb2xvcikge1xuICAgICAgb3BhY2l0eTogJG1hdC1zbGlkZXItdGljay1vcGFjaXR5O1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtc2xpZGVyLXZlcnRpY2FsIC5tYXQtc2xpZGVyLXRpY2tzIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiByZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgJG1hdC1zbGlkZXItdGljay1jb2xvcixcbiAgICAgICAgJG1hdC1zbGlkZXItdGljay1jb2xvciAkbWF0LXNsaWRlci10aWNrLXNpemUsIHRyYW5zcGFyZW50IDAsIHRyYW5zcGFyZW50KTtcblxuICAgIC8vIGBtYXQtY29sb3JgIHVzZXMgYHJnYmFgIGZvciB0aGUgb3BhY2l0eSB3aGljaCB3b24ndCB3b3JrIHdpdGhcbiAgICAvLyBDU1MgdmFyaWFibGVzIHNvIHdlIG5lZWQgdG8gdXNlIGBvcGFjaXR5YCBhcyBhIGZhbGxiYWNrLlxuICAgIEBpZiAobWV0YS50eXBlLW9mKCRtYXQtc2xpZGVyLXRpY2stY29sb3IpICE9IGNvbG9yKSB7XG4gICAgICBvcGFjaXR5OiAkbWF0LXNsaWRlci10aWNrLW9wYWNpdHk7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiB0eXBvZ3JhcGh5KCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdHlwb2dyYXBoeS5wcml2YXRlLXR5cG9ncmFwaHktdG8tMjAxNC1jb25maWcoXG4gICAgICB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKSk7XG4gIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHQge1xuICAgIGZvbnQ6IHtcbiAgICAgIGZhbWlseTogdHlwb2dyYXBoeS11dGlscy5mb250LWZhbWlseSgkY29uZmlnKTtcbiAgICAgIHNpemU6IHR5cG9ncmFwaHktdXRpbHMuZm9udC1zaXplKCRjb25maWcsIGNhcHRpb24pO1xuICAgICAgd2VpZ2h0OiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtd2VpZ2h0KCRjb25maWcsIGJvZHktMik7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBfZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZykge1xuICAkdGhlbWU6IHRoZW1pbmcucHJpdmF0ZS1sZWdhY3ktZ2V0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICBAaW5jbHVkZSB0aGVtaW5nLnByaXZhdGUtY2hlY2stZHVwbGljYXRlLXRoZW1lLXN0eWxlcygkdGhlbWUsICdtYXQtc2xpZGVyJykge1xuICAgICRjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgJGRlbnNpdHk6IHRoZW1pbmcuZ2V0LWRlbnNpdHktY29uZmlnKCR0aGVtZSk7XG4gICAgJHR5cG9ncmFwaHk6IHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCR0aGVtZSk7XG5cbiAgICBAaWYgJGNvbG9yICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgX2RlbnNpdHkoJGRlbnNpdHkpO1xuICAgIH1cbiAgICBAaWYgJHR5cG9ncmFwaHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5KCR0eXBvZ3JhcGh5KTtcbiAgICB9XG4gIH1cbn1cbiIsIkB1c2UgJ3Nhc3M6bWFwJztcbkB1c2UgJy4uL2NvcmUvdGhlbWluZy90aGVtaW5nJztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5JztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5LXV0aWxzJztcbkB1c2UgJy4uL2NvcmUvZGVuc2l0eS9wcml2YXRlL2NvbXBhdGliaWxpdHknO1xuQHVzZSAnLi9zdGVwcGVyLXZhcmlhYmxlcyc7XG5cbkBtaXhpbiBjb2xvcigkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJGZvcmVncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgZm9yZWdyb3VuZCk7XG4gICRiYWNrZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGJhY2tncm91bmQpO1xuICAkcHJpbWFyeTogbWFwLmdldCgkY29uZmlnLCBwcmltYXJ5KTtcbiAgJGFjY2VudDogbWFwLmdldCgkY29uZmlnLCBhY2NlbnQpO1xuICAkd2FybjogbWFwLmdldCgkY29uZmlnLCB3YXJuKTtcblxuICAubWF0LXN0ZXAtaGVhZGVyIHtcbiAgICAmLmNkay1rZXlib2FyZC1mb2N1c2VkLFxuICAgICYuY2RrLXByb2dyYW0tZm9jdXNlZCxcbiAgICAmOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYmFja2dyb3VuZCwgaG92ZXIpO1xuICAgIH1cblxuICAgIC8vIE9uIHRvdWNoIGRldmljZXMgdGhlIDpob3ZlciBzdGF0ZSB3aWxsIGxpbmdlciBvbiB0aGUgZWxlbWVudCBhZnRlciBhIHRhcC5cbiAgICAvLyBSZXNldCBpdCB2aWEgYEBtZWRpYWAgYWZ0ZXIgdGhlIGRlY2xhcmF0aW9uLCBiZWNhdXNlIHRoZSBtZWRpYSBxdWVyeSBpc24ndFxuICAgIC8vIHN1cHBvcnRlZCBieSBhbGwgYnJvd3NlcnMgeWV0LlxuICAgIEBtZWRpYSAoaG92ZXI6IG5vbmUpIHtcbiAgICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgICAgfVxuICAgIH1cblxuICAgIC5tYXQtc3RlcC1sYWJlbCxcbiAgICAubWF0LXN0ZXAtb3B0aW9uYWwge1xuICAgICAgLy8gVE9ETyhqb3NlcGhwZXJyb3R0KTogVXBkYXRlIHRvIHVzaW5nIGEgY29ycmVjdGVkIGRpc2FibGVkLXRleHQgY29udHJhc3RcbiAgICAgIC8vIGluc3RlYWQgb2Ygc2Vjb25kYXJ5LXRleHQuXG4gICAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBzZWNvbmRhcnktdGV4dCk7XG4gICAgfVxuXG4gICAgLm1hdC1zdGVwLWljb24ge1xuICAgICAgLy8gVE9ETyhqb3NlcGhwZXJyb3R0KTogVXBkYXRlIHRvIHVzaW5nIGEgY29ycmVjdGVkIGRpc2FibGVkLXRleHQgY29udHJhc3RcbiAgICAgIC8vIGluc3RlYWQgb2Ygc2Vjb25kYXJ5LXRleHQuXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIHNlY29uZGFyeS10ZXh0KTtcbiAgICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHByaW1hcnksIGRlZmF1bHQtY29udHJhc3QpO1xuICAgIH1cblxuICAgIC5tYXQtc3RlcC1pY29uLXNlbGVjdGVkLFxuICAgIC5tYXQtc3RlcC1pY29uLXN0YXRlLWRvbmUsXG4gICAgLm1hdC1zdGVwLWljb24tc3RhdGUtZWRpdCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHByaW1hcnkpO1xuICAgICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkcHJpbWFyeSwgZGVmYXVsdC1jb250cmFzdCk7XG4gICAgfVxuXG4gICAgJi5tYXQtYWNjZW50IHtcbiAgICAgIC5tYXQtc3RlcC1pY29uIHtcbiAgICAgICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYWNjZW50LCBkZWZhdWx0LWNvbnRyYXN0KTtcbiAgICAgIH1cblxuICAgICAgLm1hdC1zdGVwLWljb24tc2VsZWN0ZWQsXG4gICAgICAubWF0LXN0ZXAtaWNvbi1zdGF0ZS1kb25lLFxuICAgICAgLm1hdC1zdGVwLWljb24tc3RhdGUtZWRpdCB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYWNjZW50KTtcbiAgICAgICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYWNjZW50LCBkZWZhdWx0LWNvbnRyYXN0KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLm1hdC13YXJuIHtcbiAgICAgIC5tYXQtc3RlcC1pY29uIHtcbiAgICAgICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkd2FybiwgZGVmYXVsdC1jb250cmFzdCk7XG4gICAgICB9XG5cbiAgICAgIC5tYXQtc3RlcC1pY29uLXNlbGVjdGVkLFxuICAgICAgLm1hdC1zdGVwLWljb24tc3RhdGUtZG9uZSxcbiAgICAgIC5tYXQtc3RlcC1pY29uLXN0YXRlLWVkaXQge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHdhcm4pO1xuICAgICAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCR3YXJuLCBkZWZhdWx0LWNvbnRyYXN0KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAubWF0LXN0ZXAtaWNvbi1zdGF0ZS1lcnJvciB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHdhcm4sIHRleHQpO1xuICAgIH1cblxuICAgIC5tYXQtc3RlcC1sYWJlbC5tYXQtc3RlcC1sYWJlbC1hY3RpdmUge1xuICAgICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgdGV4dCk7XG4gICAgfVxuXG4gICAgLm1hdC1zdGVwLWxhYmVsLm1hdC1zdGVwLWxhYmVsLWVycm9yIHtcbiAgICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHdhcm4sIHRleHQpO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsLCAubWF0LXN0ZXBwZXItdmVydGljYWwge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYmFja2dyb3VuZCwgY2FyZCk7XG4gIH1cblxuICAubWF0LXN0ZXBwZXItdmVydGljYWwtbGluZTo6YmVmb3JlIHtcbiAgICBib3JkZXItbGVmdC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBkaXZpZGVyKTtcbiAgfVxuXG4gIC5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlcjo6YmVmb3JlLFxuICAubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXI6OmFmdGVyLFxuICAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbC1saW5lIHtcbiAgICBib3JkZXItdG9wLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIGRpdmlkZXIpO1xuICB9XG59XG5cbkBtaXhpbiB0eXBvZ3JhcGh5KCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdHlwb2dyYXBoeS5wcml2YXRlLXR5cG9ncmFwaHktdG8tMjAxNC1jb25maWcoXG4gICAgICB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKSk7XG4gIC5tYXQtc3RlcHBlci12ZXJ0aWNhbCwgLm1hdC1zdGVwcGVyLWhvcml6b250YWwge1xuICAgIGZvbnQtZmFtaWx5OiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtZmFtaWx5KCRjb25maWcpO1xuICB9XG5cbiAgLm1hdC1zdGVwLWxhYmVsIHtcbiAgICBmb250OiB7XG4gICAgICBzaXplOiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtc2l6ZSgkY29uZmlnLCBib2R5LTEpO1xuICAgICAgd2VpZ2h0OiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtd2VpZ2h0KCRjb25maWcsIGJvZHktMSk7XG4gICAgfTtcbiAgfVxuXG4gIC5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3Ige1xuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIH1cblxuICAubWF0LXN0ZXAtbGFiZWwtZXJyb3Ige1xuICAgIGZvbnQtc2l6ZTogdHlwb2dyYXBoeS11dGlscy5mb250LXNpemUoJGNvbmZpZywgYm9keS0yKTtcbiAgfVxuXG4gIC5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZCB7XG4gICAgZm9udDoge1xuICAgICAgc2l6ZTogdHlwb2dyYXBoeS11dGlscy5mb250LXNpemUoJGNvbmZpZywgYm9keS0yKTtcbiAgICAgIHdlaWdodDogdHlwb2dyYXBoeS11dGlscy5mb250LXdlaWdodCgkY29uZmlnLCBib2R5LTIpO1xuICAgIH07XG4gIH1cbn1cblxuQG1peGluIGRlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge1xuICAkZGVuc2l0eS1zY2FsZTogdGhlbWluZy5nZXQtZGVuc2l0eS1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRoZWlnaHQ6IGNvbXBhdGliaWxpdHkucHJpdmF0ZS1kZW5zaXR5LXByb3AtdmFsdWUoc3RlcHBlci12YXJpYWJsZXMuJGRlbnNpdHktY29uZmlnLFxuICAgICRkZW5zaXR5LXNjYWxlLCBoZWlnaHQpO1xuICAkdmVydGljYWwtcGFkZGluZzogKCRoZWlnaHQgLSBzdGVwcGVyLXZhcmlhYmxlcy4kbGFiZWwtaGVhZGVyLWhlaWdodCkgLyAyO1xuXG4gIEBpbmNsdWRlIGNvbXBhdGliaWxpdHkucHJpdmF0ZS1kZW5zaXR5LWxlZ2FjeS1jb21wYXRpYmlsaXR5KCkge1xuICAgIC5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlciB7XG4gICAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gICAgfVxuXG4gICAgLm1hdC1zdGVwcGVyLWxhYmVsLXBvc2l0aW9uLWJvdHRvbSAubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXIsXG4gICAgLm1hdC12ZXJ0aWNhbC1zdGVwcGVyLWhlYWRlciB7XG4gICAgICBwYWRkaW5nOiAkdmVydGljYWwtcGFkZGluZyBzdGVwcGVyLXZhcmlhYmxlcy4kc2lkZS1nYXA7XG4gICAgfVxuXG4gICAgLy8gRW5zdXJlcyB0aGF0IHRoZSB2ZXJ0aWNhbCBsaW5lcyBmb3IgdGhlIHN0ZXAgY29udGVudCBleGNlZWQgaW50byB0aGUgc3RlcFxuICAgIC8vIGhlYWRlcnMgd2l0aCBhIGdpdmVuIGRpc3RhbmNlIChgJG1hdC1zdGVwcGVyLWxpbmUtZ2FwYCkgdG8gdGhlIHN0ZXAgaWNvbi5cbiAgICAubWF0LXN0ZXBwZXItdmVydGljYWwtbGluZTo6YmVmb3JlIHtcbiAgICAgIHRvcDogc3RlcHBlci12YXJpYWJsZXMuJGxpbmUtZ2FwIC0gJHZlcnRpY2FsLXBhZGRpbmc7XG4gICAgICBib3R0b206IHN0ZXBwZXItdmFyaWFibGVzLiRsaW5lLWdhcCAtICR2ZXJ0aWNhbC1wYWRkaW5nO1xuICAgIH1cblxuICAgIC8vIEVuc3VyZXMgdGhhdCB0aGUgaG9yaXpvbnRhbCBsaW5lcyBmb3IgdGhlIHN0ZXAgaGVhZGVyIGFyZSBjZW50ZXJlZCB2ZXJ0aWNhbGx5LlxuICAgIC5tYXQtc3RlcHBlci1sYWJlbC1wb3NpdGlvbi1ib3R0b20gLm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVyIHtcbiAgICAgICY6OmFmdGVyLCAmOjpiZWZvcmUge1xuICAgICAgICB0b3A6ICR2ZXJ0aWNhbC1wYWRkaW5nICsgc3RlcHBlci12YXJpYWJsZXMuJGxhYmVsLWhlYWRlci1oZWlnaHQgLyAyO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEVuc3VyZXMgdGhhdCB0aGUgaG9yaXpvbnRhbCBsaW5lIGZvciB0aGUgc3RlcCBjb250ZW50IGlzIGFsaWduZWQgY2VudGVyZWQgdmVydGljYWxseS5cbiAgICAubWF0LXN0ZXBwZXItbGFiZWwtcG9zaXRpb24tYm90dG9tIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsLWxpbmUge1xuICAgICAgdG9wOiAkdmVydGljYWwtcGFkZGluZyArIHN0ZXBwZXItdmFyaWFibGVzLiRsYWJlbC1oZWFkZXItaGVpZ2h0IC8gMjtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiB0aGVtaW5nLnByaXZhdGUtbGVnYWN5LWdldC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgQGluY2x1ZGUgdGhlbWluZy5wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LXN0ZXBwZXInKSB7XG4gICAgJGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJHRoZW1lKTtcbiAgICAkZGVuc2l0eTogdGhlbWluZy5nZXQtZGVuc2l0eS1jb25maWcoJHRoZW1lKTtcbiAgICAkdHlwb2dyYXBoeTogdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJHRoZW1lKTtcblxuICAgIEBpZiAkY29sb3IgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBjb2xvcigkY29sb3IpO1xuICAgIH1cbiAgICBAaWYgJGRlbnNpdHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBkZW5zaXR5KCRkZW5zaXR5KTtcbiAgICB9XG4gICAgQGlmICR0eXBvZ3JhcGh5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgdHlwb2dyYXBoeSgkdHlwb2dyYXBoeSk7XG4gICAgfVxuICB9XG59XG4iLCJAdXNlICdzYXNzOm1hcCc7XG5AdXNlICcuLi9jb3JlL3RoZW1pbmcvdGhlbWluZyc7XG5AdXNlICcuLi9jb3JlL3R5cG9ncmFwaHkvdHlwb2dyYXBoeSc7XG5AdXNlICcuLi9jb3JlL3R5cG9ncmFwaHkvdHlwb2dyYXBoeS11dGlscyc7XG5cbkBtaXhpbiBjb2xvcigkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJHByaW1hcnk6IG1hcC5nZXQoJGNvbmZpZywgcHJpbWFyeSk7XG4gICRhY2NlbnQ6IG1hcC5nZXQoJGNvbmZpZywgYWNjZW50KTtcbiAgJHdhcm46IG1hcC5nZXQoJGNvbmZpZywgd2Fybik7XG4gICRiYWNrZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGJhY2tncm91bmQpO1xuICAkZm9yZWdyb3VuZDogbWFwLmdldCgkY29uZmlnLCBmb3JlZ3JvdW5kKTtcbiAgJGhlYWRlci1ib3JkZXI6IDFweCBzb2xpZCB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIGRpdmlkZXIpO1xuXG4gIC5tYXQtdGFiLW5hdi1iYXIsXG4gIC5tYXQtdGFiLWhlYWRlciB7XG4gICAgYm9yZGVyLWJvdHRvbTogJGhlYWRlci1ib3JkZXI7XG4gIH1cblxuICAubWF0LXRhYi1ncm91cC1pbnZlcnRlZC1oZWFkZXIge1xuICAgIC5tYXQtdGFiLW5hdi1iYXIsXG4gICAgLm1hdC10YWItaGVhZGVyIHtcbiAgICAgIGJvcmRlci10b3A6ICRoZWFkZXItYm9yZGVyO1xuICAgICAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbiAgICB9XG4gIH1cblxuICAubWF0LXRhYi1sYWJlbCwgLm1hdC10YWItbGluayB7XG4gICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgdGV4dCk7XG5cbiAgICAmLm1hdC10YWItZGlzYWJsZWQge1xuICAgICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgZGlzYWJsZWQtdGV4dCk7XG4gICAgfVxuICB9XG5cbiAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbiB7XG4gICAgYm9yZGVyLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIHRleHQpO1xuICB9XG5cbiAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWQgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbiB7XG4gICAgYm9yZGVyLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIGRpc2FibGVkLXRleHQpO1xuICB9XG5cbiAgLy8gUmVtb3ZlIGhlYWRlciBib3JkZXIgd2hlbiB0aGVyZSBpcyBhIGJhY2tncm91bmQgY29sb3JcbiAgLm1hdC10YWItZ3JvdXBbY2xhc3MqPSdtYXQtYmFja2dyb3VuZC0nXSAubWF0LXRhYi1oZWFkZXIsXG4gIC5tYXQtdGFiLW5hdi1iYXJbY2xhc3MqPSdtYXQtYmFja2dyb3VuZC0nXSB7XG4gICAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbiAgICBib3JkZXItdG9wOiBub25lO1xuICB9XG5cbiAgLm1hdC10YWItZ3JvdXAsIC5tYXQtdGFiLW5hdi1iYXIge1xuICAgICR0aGVtZS1jb2xvcnM6IChcbiAgICAgIHByaW1hcnk6ICRwcmltYXJ5LFxuICAgICAgYWNjZW50OiAkYWNjZW50LFxuICAgICAgd2FybjogJHdhcm5cbiAgICApO1xuXG4gICAgQGVhY2ggJG5hbWUsICRjb2xvciBpbiAkdGhlbWUtY29sb3JzIHtcbiAgICAgIC8vIFNldCB0aGUgZm9yZWdyb3VuZCBjb2xvciBvZiB0aGUgdGFic1xuICAgICAgJi5tYXQtI3skbmFtZX0ge1xuICAgICAgICBAaW5jbHVkZSBfbGFiZWwtZm9jdXMtY29sb3IoJGNvbG9yKTtcbiAgICAgICAgQGluY2x1ZGUgX2luay1iYXItY29sb3IoJGNvbG9yKTtcblxuICAgICAgICAvLyBPdmVycmlkZSBpbmsgYmFyIHdoZW4gYmFja2dyb3VuZCBjb2xvciBpcyB0aGUgc2FtZVxuICAgICAgICAmLm1hdC1iYWNrZ3JvdW5kLSN7JG5hbWV9IHtcbiAgICAgICAgICA+IC5tYXQtdGFiLWhlYWRlciwgPiAubWF0LXRhYi1saW5rLWNvbnRhaW5lciB7XG4gICAgICAgICAgICBAaW5jbHVkZSBfaW5rLWJhci1jb2xvcigkY29sb3IsIGRlZmF1bHQtY29udHJhc3QpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIEBlYWNoICRuYW1lLCAkY29sb3IgaW4gJHRoZW1lLWNvbG9ycyB7XG4gICAgICAvLyBTZXQgYmFja2dyb3VuZCBjb2xvciBvZiB0aGUgdGFicyBhbmQgb3ZlcnJpZGUgZm9jdXMgY29sb3JcbiAgICAgICYubWF0LWJhY2tncm91bmQtI3skbmFtZX0ge1xuICAgICAgICBAaW5jbHVkZSBfbGFiZWwtZm9jdXMtY29sb3IoJGNvbG9yKTtcbiAgICAgICAgQGluY2x1ZGUgX3RhYnMtYmFja2dyb3VuZCgkY29sb3IpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gX2luay1iYXItY29sb3IoJGNvbG9yLCAkaHVlOiBkZWZhdWx0KSB7XG4gIC5tYXQtaW5rLWJhciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRjb2xvciwgJGh1ZSk7XG4gIH1cbn1cblxuQG1peGluIF9sYWJlbC1mb2N1cy1jb2xvcigkdGFiLWZvY3VzLWNvbG9yKSB7XG4gIC5tYXQtdGFiLWxhYmVsLFxuICAubWF0LXRhYi1saW5rIHtcbiAgICAmLmNkay1rZXlib2FyZC1mb2N1c2VkLFxuICAgICYuY2RrLXByb2dyYW0tZm9jdXNlZCB7XG4gICAgICAmOm5vdCgubWF0LXRhYi1kaXNhYmxlZCkge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHRhYi1mb2N1cy1jb2xvciwgbGlnaHRlciwgMC4zKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuQG1peGluIF90YWJzLWJhY2tncm91bmQoJGJhY2tncm91bmQtY29sb3IpIHtcbiAgLy8gTm90ZSB0aGF0IHRoZXNlIHNlbGVjdG9ycyB0YXJnZXQgZGlyZWN0IGRlc2NlbmRhbnRzIHNvXG4gIC8vIHRoYXQgdGhlIHN0eWxlcyBkb24ndCBhcHBseSB0byBhbnkgbmVzdGVkIHRhYiBncm91cHMuXG5cbiAgLy8gU2V0IGJhY2tncm91bmQgY29sb3IgZm9yIHRoZSB0YWIgZ3JvdXBcbiAgPiAubWF0LXRhYi1oZWFkZXIsID4gLm1hdC10YWItbGluay1jb250YWluZXIsID4gLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24ge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYmFja2dyb3VuZC1jb2xvcik7XG4gIH1cblxuICAvLyBTZXQgbGFiZWxzIHRvIGNvbnRyYXN0IGFnYWluc3QgYmFja2dyb3VuZFxuICA+IC5tYXQtdGFiLWhlYWRlciAubWF0LXRhYi1sYWJlbCwgPiAubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LXRhYi1saW5rIHtcbiAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLWNvbG9yLCBkZWZhdWx0LWNvbnRyYXN0KTtcblxuICAgICYubWF0LXRhYi1kaXNhYmxlZCB7XG4gICAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLWNvbG9yLCBkZWZhdWx0LWNvbnRyYXN0LCAwLjQpO1xuICAgIH1cbiAgfVxuXG4gIC8vIFNldCBwYWdpbmF0aW9uIGNoZXZyb25zIHRvIGNvbnRyYXN0IGJhY2tncm91bmRcbiAgPiAubWF0LXRhYi1oZWFkZXIgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbixcbiAgPiAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbiAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uLFxuICA+IC5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtZm9jdXMtaW5kaWNhdG9yOjpiZWZvcmUsXG4gID4gLm1hdC10YWItaGVhZGVyIC5tYXQtZm9jdXMtaW5kaWNhdG9yOjpiZWZvcmUge1xuICAgIGJvcmRlci1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLWNvbG9yLCBkZWZhdWx0LWNvbnRyYXN0KTtcbiAgfVxuXG4gID4gLm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sXG4gID4gLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWQgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbiB7XG4gICAgYm9yZGVyLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGJhY2tncm91bmQtY29sb3IsIGRlZmF1bHQtY29udHJhc3QsIDAuNCk7XG4gIH1cblxuICAvLyBTZXQgcmlwcGxlcyBjb2xvciB0byBiZSB0aGUgY29udHJhc3QgY29sb3Igb2YgdGhlIG5ldyBiYWNrZ3JvdW5kLiBPdGhlcndpc2UgdGhlIHJpcHBsZVxuICAvLyBjb2xvciB3aWxsIGJlIGJhc2VkIG9uIHRoZSBhcHAgYmFja2dyb3VuZCBjb2xvci5cbiAgPiAubWF0LXRhYi1oZWFkZXIgLm1hdC1yaXBwbGUtZWxlbWVudCxcbiAgPiAubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LXJpcHBsZS1lbGVtZW50LFxuICA+IC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uIC5tYXQtcmlwcGxlLWVsZW1lbnQge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYmFja2dyb3VuZC1jb2xvciwgZGVmYXVsdC1jb250cmFzdCwgMC4xMik7XG4gIH1cbn1cblxuQG1peGluIHR5cG9ncmFwaHkoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0eXBvZ3JhcGh5LnByaXZhdGUtdHlwb2dyYXBoeS10by0yMDE0LWNvbmZpZyhcbiAgICAgIHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCRjb25maWctb3ItdGhlbWUpKTtcbiAgLm1hdC10YWItZ3JvdXAge1xuICAgIGZvbnQtZmFtaWx5OiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtZmFtaWx5KCRjb25maWcpO1xuICB9XG5cbiAgLm1hdC10YWItbGFiZWwsIC5tYXQtdGFiLWxpbmsge1xuICAgIGZvbnQ6IHtcbiAgICAgIGZhbWlseTogdHlwb2dyYXBoeS11dGlscy5mb250LWZhbWlseSgkY29uZmlnLCBidXR0b24pO1xuICAgICAgc2l6ZTogdHlwb2dyYXBoeS11dGlscy5mb250LXNpemUoJGNvbmZpZywgYnV0dG9uKTtcbiAgICAgIHdlaWdodDogdHlwb2dyYXBoeS11dGlscy5mb250LXdlaWdodCgkY29uZmlnLCBidXR0b24pO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gX2RlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIHRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiB0aGVtaW5nLnByaXZhdGUtbGVnYWN5LWdldC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgQGluY2x1ZGUgdGhlbWluZy5wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LXRhYnMnKSB7XG4gICAgJGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJHRoZW1lKTtcbiAgICAkZGVuc2l0eTogdGhlbWluZy5nZXQtZGVuc2l0eS1jb25maWcoJHRoZW1lKTtcbiAgICAkdHlwb2dyYXBoeTogdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJHRoZW1lKTtcblxuICAgIEBpZiAkY29sb3IgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBjb2xvcigkY29sb3IpO1xuICAgIH1cbiAgICBAaWYgJGRlbnNpdHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBfZGVuc2l0eSgkZGVuc2l0eSk7XG4gICAgfVxuICAgIEBpZiAkdHlwb2dyYXBoeSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIHR5cG9ncmFwaHkoJHR5cG9ncmFwaHkpO1xuICAgIH1cbiAgfVxufVxuIiwiQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnLi4vY29yZS9kZW5zaXR5L3ByaXZhdGUvY29tcGF0aWJpbGl0eSc7XG5AdXNlICcuLi9jb3JlL3N0eWxlL3ZhcmlhYmxlcyc7XG5AdXNlICcuLi9jb3JlL3RoZW1pbmcvdGhlbWluZyc7XG5AdXNlICcuLi9jb3JlL3R5cG9ncmFwaHkvdHlwb2dyYXBoeSc7XG5AdXNlICcuLi9jb3JlL3R5cG9ncmFwaHkvdHlwb2dyYXBoeS11dGlscyc7XG5AdXNlICcuL3Rvb2xiYXItdmFyaWFibGVzJztcblxuQG1peGluIF9oZWlnaHQoJGhlaWdodCkge1xuICAubWF0LXRvb2xiYXItbXVsdGlwbGUtcm93cyB7XG4gICAgbWluLWhlaWdodDogJGhlaWdodDtcbiAgfVxuICAubWF0LXRvb2xiYXItcm93LCAubWF0LXRvb2xiYXItc2luZ2xlLXJvdyB7XG4gICAgaGVpZ2h0OiAkaGVpZ2h0O1xuICB9XG59XG5cbkBtaXhpbiBfcGFsZXR0ZS1zdHlsZXMoJHBhbGV0dGUpIHtcbiAgYmFja2dyb3VuZDogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRwYWxldHRlKTtcbiAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkcGFsZXR0ZSwgZGVmYXVsdC1jb250cmFzdCk7XG59XG5cbkBtaXhpbiBfZm9ybS1maWVsZC1vdmVycmlkZXMge1xuICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lLFxuICAubWF0LWZvcm0tZmllbGQtcmlwcGxlLFxuICAubWF0LWZvY3VzZWQgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogY3VycmVudENvbG9yO1xuICB9XG5cbiAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLFxuICAubWF0LWZvY3VzZWQgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLFxuICAubWF0LXNlbGVjdC12YWx1ZSxcbiAgLm1hdC1zZWxlY3QtYXJyb3csXG4gIC5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZCAubWF0LXNlbGVjdC1hcnJvdyB7XG4gICAgY29sb3I6IGluaGVyaXQ7XG4gIH1cblxuICAubWF0LWlucHV0LWVsZW1lbnQge1xuICAgIGNhcmV0LWNvbG9yOiBjdXJyZW50Q29sb3I7XG4gIH1cbn1cblxuQG1peGluIGNvbG9yKCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAkcHJpbWFyeTogbWFwLmdldCgkY29uZmlnLCBwcmltYXJ5KTtcbiAgJGFjY2VudDogbWFwLmdldCgkY29uZmlnLCBhY2NlbnQpO1xuICAkd2FybjogbWFwLmdldCgkY29uZmlnLCB3YXJuKTtcbiAgJGJhY2tncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgYmFja2dyb3VuZCk7XG4gICRmb3JlZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGZvcmVncm91bmQpO1xuXG4gIC5tYXQtdG9vbGJhciB7XG4gICAgYmFja2dyb3VuZDogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLCBhcHAtYmFyKTtcbiAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCB0ZXh0KTtcblxuICAgICYubWF0LXByaW1hcnkge1xuICAgICAgQGluY2x1ZGUgX3BhbGV0dGUtc3R5bGVzKCRwcmltYXJ5KTtcbiAgICB9XG5cbiAgICAmLm1hdC1hY2NlbnQge1xuICAgICAgQGluY2x1ZGUgX3BhbGV0dGUtc3R5bGVzKCRhY2NlbnQpO1xuICAgIH1cblxuICAgICYubWF0LXdhcm4ge1xuICAgICAgQGluY2x1ZGUgX3BhbGV0dGUtc3R5bGVzKCR3YXJuKTtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBfZm9ybS1maWVsZC1vdmVycmlkZXM7XG4gIH1cbn1cblxuQG1peGluIHR5cG9ncmFwaHkoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0eXBvZ3JhcGh5LnByaXZhdGUtdHlwb2dyYXBoeS10by0yMDE0LWNvbmZpZyhcbiAgICAgIHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCRjb25maWctb3ItdGhlbWUpKTtcbiAgLm1hdC10b29sYmFyLFxuICAubWF0LXRvb2xiYXIgaDEsXG4gIC5tYXQtdG9vbGJhciBoMixcbiAgLm1hdC10b29sYmFyIGgzLFxuICAubWF0LXRvb2xiYXIgaDQsXG4gIC5tYXQtdG9vbGJhciBoNSxcbiAgLm1hdC10b29sYmFyIGg2IHtcbiAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5LXV0aWxzLnR5cG9ncmFwaHktbGV2ZWwoJGNvbmZpZywgdGl0bGUpO1xuICAgIG1hcmdpbjogMDtcbiAgfVxufVxuXG5AbWl4aW4gZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRkZW5zaXR5LXNjYWxlOiB0aGVtaW5nLmdldC1kZW5zaXR5LWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJGhlaWdodC1kZXNrdG9wOiBjb21wYXRpYmlsaXR5LnByaXZhdGUtZGVuc2l0eS1wcm9wLXZhbHVlKFxuICAgICAgdG9vbGJhci12YXJpYWJsZXMuJGRlc2t0b3AtZGVuc2l0eS1jb25maWcsICRkZW5zaXR5LXNjYWxlLCBoZWlnaHQpO1xuICAkaGVpZ2h0LW1vYmlsZTogY29tcGF0aWJpbGl0eS5wcml2YXRlLWRlbnNpdHktcHJvcC12YWx1ZShcbiAgICAgIHRvb2xiYXItdmFyaWFibGVzLiRtb2JpbGUtZGVuc2l0eS1jb25maWcsICRkZW5zaXR5LXNjYWxlLCBoZWlnaHQpO1xuXG4gIEBpbmNsdWRlIGNvbXBhdGliaWxpdHkucHJpdmF0ZS1kZW5zaXR5LWxlZ2FjeS1jb21wYXRpYmlsaXR5KCkge1xuICAgIC8vIFNldCB0aGUgZGVmYXVsdCBoZWlnaHQgZm9yIHRoZSB0b29sYmFyLlxuICAgIEBpbmNsdWRlIF9oZWlnaHQoJGhlaWdodC1kZXNrdG9wKTtcblxuICAgIC8vIEFzIHBlciBzcGVjcywgdG9vbGJhcnMgc2hvdWxkIGhhdmUgYSBkaWZmZXJlbnQgaGVpZ2h0IGluIG1vYmlsZSBkZXZpY2VzLiBUaGlzIGhhcyBiZWVuXG4gICAgLy8gc3BlY2lmaWVkIGluIHRoZSBvbGQgZ3VpZGVsaW5lcyBhbmQgaXMgc3RpbGwgb2JzZXJ2YWJsZSBpbiB0aGUgbmV3IHNwZWNpZmljYXRpb25zIGJ5XG4gICAgLy8gbG9va2luZyBhdCB0aGUgc3BlYyBpbWFnZXMuIFNlZTogaHR0cHM6Ly9tYXRlcmlhbC5pby9kZXNpZ24vY29tcG9uZW50cy9hcHAtYmFycy10b3AuaHRtbCNhbmF0b215XG4gICAgQG1lZGlhICh2YXJpYWJsZXMuJHhzbWFsbCkge1xuICAgICAgQGluY2x1ZGUgX2hlaWdodCgkaGVpZ2h0LW1vYmlsZSk7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiB0aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKSB7XG4gICR0aGVtZTogdGhlbWluZy5wcml2YXRlLWxlZ2FjeS1nZXQtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZyk7XG4gIEBpbmNsdWRlIHRoZW1pbmcucHJpdmF0ZS1jaGVjay1kdXBsaWNhdGUtdGhlbWUtc3R5bGVzKCR0aGVtZSwgJ21hdC10b29sYmFyJykge1xuICAgICRjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgJGRlbnNpdHk6IHRoZW1pbmcuZ2V0LWRlbnNpdHktY29uZmlnKCR0aGVtZSk7XG4gICAgJHR5cG9ncmFwaHk6IHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCR0aGVtZSk7XG5cbiAgICBAaWYgJGNvbG9yICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgZGVuc2l0eSgkZGVuc2l0eSk7XG4gICAgfVxuICAgIEBpZiAkdHlwb2dyYXBoeSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIHR5cG9ncmFwaHkoJHR5cG9ncmFwaHkpO1xuICAgIH1cbiAgfVxufVxuIiwiQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnLi4vY29yZS90aGVtaW5nL3RoZW1pbmcnO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHknO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHktdXRpbHMnO1xuXG4kdGFyZ2V0LWhlaWdodDogMjJweDtcbiRmb250LXNpemU6IDEwcHg7XG4kdmVydGljYWwtcGFkZGluZzogKCR0YXJnZXQtaGVpZ2h0IC0gJGZvbnQtc2l6ZSkgLyAyO1xuXG4kaGFuZHNldC10YXJnZXQtaGVpZ2h0OiAzMHB4O1xuJGhhbmRzZXQtZm9udC1zaXplOiAxNHB4O1xuJGhhbmRzZXQtdmVydGljYWwtcGFkZGluZzpcbiAgICAoJGhhbmRzZXQtdGFyZ2V0LWhlaWdodCAtICRoYW5kc2V0LWZvbnQtc2l6ZSkgLyAyO1xuXG5AbWl4aW4gY29sb3IoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRiYWNrZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGJhY2tncm91bmQpO1xuXG4gIC5tYXQtdG9vbHRpcCB7XG4gICAgYmFja2dyb3VuZDogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLCB0b29sdGlwLCAwLjkpO1xuICB9XG59XG5cbkBtaXhpbiB0eXBvZ3JhcGh5KCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdHlwb2dyYXBoeS5wcml2YXRlLXR5cG9ncmFwaHktdG8tMjAxNC1jb25maWcoXG4gICAgICB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKSk7XG4gIC5tYXQtdG9vbHRpcCB7XG4gICAgZm9udC1mYW1pbHk6IHR5cG9ncmFwaHktdXRpbHMuZm9udC1mYW1pbHkoJGNvbmZpZyk7XG4gICAgZm9udC1zaXplOiAkZm9udC1zaXplO1xuICAgIHBhZGRpbmctdG9wOiAkdmVydGljYWwtcGFkZGluZztcbiAgICBwYWRkaW5nLWJvdHRvbTogJHZlcnRpY2FsLXBhZGRpbmc7XG4gIH1cblxuICAubWF0LXRvb2x0aXAtaGFuZHNldCB7XG4gICAgZm9udC1zaXplOiAkaGFuZHNldC1mb250LXNpemU7XG4gICAgcGFkZGluZy10b3A6ICRoYW5kc2V0LXZlcnRpY2FsLXBhZGRpbmc7XG4gICAgcGFkZGluZy1ib3R0b206ICRoYW5kc2V0LXZlcnRpY2FsLXBhZGRpbmc7XG4gIH1cbn1cblxuQG1peGluIF9kZW5zaXR5KCRjb25maWctb3ItdGhlbWUpIHt9XG5cbkBtaXhpbiB0aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKSB7XG4gICR0aGVtZTogdGhlbWluZy5wcml2YXRlLWxlZ2FjeS1nZXQtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZyk7XG4gIEBpbmNsdWRlIHRoZW1pbmcucHJpdmF0ZS1jaGVjay1kdXBsaWNhdGUtdGhlbWUtc3R5bGVzKCR0aGVtZSwgJ21hdC10b29sdGlwJykge1xuICAgICRjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgJGRlbnNpdHk6IHRoZW1pbmcuZ2V0LWRlbnNpdHktY29uZmlnKCR0aGVtZSk7XG4gICAgJHR5cG9ncmFwaHk6IHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCR0aGVtZSk7XG5cbiAgICBAaWYgJGNvbG9yICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgX2RlbnNpdHkoJGRlbnNpdHkpO1xuICAgIH1cbiAgICBAaWYgJHR5cG9ncmFwaHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5KCR0eXBvZ3JhcGh5KTtcbiAgICB9XG4gIH1cbn1cblxuIiwiQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnLi4vY29yZS90aGVtaW5nL3RoZW1pbmcnO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHknO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHktdXRpbHMnO1xuQHVzZSAnLi4vY29yZS9zdHlsZS9saXN0LWNvbW1vbic7XG5cblxuQG1peGluIGNvbG9yKCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAkYmFja2dyb3VuZDogbWFwLmdldCgkY29uZmlnLCBiYWNrZ3JvdW5kKTtcbiAgJGZvcmVncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgZm9yZWdyb3VuZCk7XG5cbiAgLm1hdC1saXN0LWJhc2Uge1xuICAgIC5tYXQtbGlzdC1pdGVtIHtcbiAgICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIHRleHQpO1xuICAgIH1cblxuICAgIC5tYXQtbGlzdC1vcHRpb24ge1xuICAgICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgdGV4dCk7XG4gICAgfVxuXG4gICAgLm1hdC1zdWJoZWFkZXIge1xuICAgICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgc2Vjb25kYXJ5LXRleHQpO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtbGlzdC1pdGVtLWRpc2FibGVkIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGJhY2tncm91bmQsIGRpc2FibGVkLWxpc3Qtb3B0aW9uKTtcbiAgfVxuXG4gIC5tYXQtbGlzdC1vcHRpb24sXG4gIC5tYXQtbmF2LWxpc3QgLm1hdC1saXN0LWl0ZW0sXG4gIC5tYXQtYWN0aW9uLWxpc3QgLm1hdC1saXN0LWl0ZW0ge1xuICAgICY6aG92ZXIsICY6Zm9jdXMge1xuICAgICAgYmFja2dyb3VuZDogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLCAnaG92ZXInKTtcbiAgICB9XG4gIH1cblxuICAubWF0LWxpc3Qtc2luZ2xlLXNlbGVjdGVkLW9wdGlvbiB7XG4gICAgJiwgJjpob3ZlciwgJjpmb2N1cyB7XG4gICAgICBiYWNrZ3JvdW5kOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGJhY2tncm91bmQsIGhvdmVyLCAwLjEyKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHR5cG9ncmFwaHkoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0eXBvZ3JhcGh5LnByaXZhdGUtdHlwb2dyYXBoeS10by0yMDE0LWNvbmZpZyhcbiAgICAgIHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCRjb25maWctb3ItdGhlbWUpKTtcbiAgJGZvbnQtZmFtaWx5OiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtZmFtaWx5KCRjb25maWcpO1xuXG4gIC5tYXQtbGlzdC1pdGVtIHtcbiAgICBmb250LWZhbWlseTogJGZvbnQtZmFtaWx5O1xuICB9XG5cbiAgLm1hdC1saXN0LW9wdGlvbiB7XG4gICAgZm9udC1mYW1pbHk6ICRmb250LWZhbWlseTtcbiAgfVxuXG4gIC8vIERlZmF1bHQgbGlzdFxuICAubWF0LWxpc3QtYmFzZSB7XG4gICAgLm1hdC1saXN0LWl0ZW0ge1xuICAgICAgZm9udC1zaXplOiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtc2l6ZSgkY29uZmlnLCBzdWJoZWFkaW5nLTIpO1xuICAgICAgQGluY2x1ZGUgbGlzdC1jb21tb24uYmFzZSh0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtc2l6ZSgkY29uZmlnLCBib2R5LTEpKTtcbiAgICB9XG5cbiAgICAubWF0LWxpc3Qtb3B0aW9uIHtcbiAgICAgIGZvbnQtc2l6ZTogdHlwb2dyYXBoeS11dGlscy5mb250LXNpemUoJGNvbmZpZywgc3ViaGVhZGluZy0yKTtcbiAgICAgIEBpbmNsdWRlIGxpc3QtY29tbW9uLmJhc2UodHlwb2dyYXBoeS11dGlscy5mb250LXNpemUoJGNvbmZpZywgYm9keS0xKSk7XG4gICAgfVxuXG4gICAgLm1hdC1zdWJoZWFkZXIge1xuICAgICAgZm9udC1mYW1pbHk6IHR5cG9ncmFwaHktdXRpbHMuZm9udC1mYW1pbHkoJGNvbmZpZywgYm9keS0yKTtcbiAgICAgIGZvbnQtc2l6ZTogdHlwb2dyYXBoeS11dGlscy5mb250LXNpemUoJGNvbmZpZywgYm9keS0yKTtcbiAgICAgIGZvbnQtd2VpZ2h0OiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtd2VpZ2h0KCRjb25maWcsIGJvZHktMik7XG4gICAgfVxuICB9XG5cbiAgLy8gRGVuc2UgbGlzdFxuICAubWF0LWxpc3QtYmFzZVtkZW5zZV0ge1xuICAgIC5tYXQtbGlzdC1pdGVtIHtcbiAgICAgIGZvbnQtc2l6ZTogdHlwb2dyYXBoeS11dGlscy5mb250LXNpemUoJGNvbmZpZywgY2FwdGlvbik7XG4gICAgICBAaW5jbHVkZSBsaXN0LWNvbW1vbi5iYXNlKHR5cG9ncmFwaHktdXRpbHMuZm9udC1zaXplKCRjb25maWcsIGNhcHRpb24pKTtcbiAgICB9XG5cbiAgICAubWF0LWxpc3Qtb3B0aW9uIHtcbiAgICAgIGZvbnQtc2l6ZTogdHlwb2dyYXBoeS11dGlscy5mb250LXNpemUoJGNvbmZpZywgY2FwdGlvbik7XG4gICAgICBAaW5jbHVkZSBsaXN0LWNvbW1vbi5iYXNlKHR5cG9ncmFwaHktdXRpbHMuZm9udC1zaXplKCRjb25maWcsIGNhcHRpb24pKTtcbiAgICB9XG5cbiAgICAubWF0LXN1YmhlYWRlciB7XG4gICAgICBmb250LWZhbWlseTogJGZvbnQtZmFtaWx5O1xuICAgICAgZm9udC1zaXplOiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtc2l6ZSgkY29uZmlnLCBjYXB0aW9uKTtcbiAgICAgIGZvbnQtd2VpZ2h0OiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtd2VpZ2h0KCRjb25maWcsIGJvZHktMik7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBfZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZykge1xuICAkdGhlbWU6IHRoZW1pbmcucHJpdmF0ZS1sZWdhY3ktZ2V0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICBAaW5jbHVkZSB0aGVtaW5nLnByaXZhdGUtY2hlY2stZHVwbGljYXRlLXRoZW1lLXN0eWxlcygkdGhlbWUsICdtYXQtbGlzdCcpIHtcbiAgICAkY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkdGhlbWUpO1xuICAgICRkZW5zaXR5OiB0aGVtaW5nLmdldC1kZW5zaXR5LWNvbmZpZygkdGhlbWUpO1xuICAgICR0eXBvZ3JhcGh5OiB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkdGhlbWUpO1xuXG4gICAgQGlmICRjb2xvciAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIGNvbG9yKCRjb2xvcik7XG4gICAgfVxuICAgIEBpZiAkZGVuc2l0eSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIF9kZW5zaXR5KCRkZW5zaXR5KTtcbiAgICB9XG4gICAgQGlmICR0eXBvZ3JhcGh5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgdHlwb2dyYXBoeSgkdHlwb2dyYXBoeSk7XG4gICAgfVxuICB9XG59XG4iLCJAdXNlICdzYXNzOm1hcCc7XG5AdXNlICcuLi90aGVtaW5nL3RoZW1pbmcnO1xuQHVzZSAnLi4vdHlwb2dyYXBoeS90eXBvZ3JhcGh5JztcbkB1c2UgJy4uL3R5cG9ncmFwaHkvdHlwb2dyYXBoeS11dGlscyc7XG5cbkBtaXhpbiBjb2xvcigkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJGZvcmVncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgZm9yZWdyb3VuZCk7XG4gICRiYWNrZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGJhY2tncm91bmQpO1xuICAkcHJpbWFyeTogbWFwLmdldCgkY29uZmlnLCBwcmltYXJ5KTtcbiAgJGFjY2VudDogbWFwLmdldCgkY29uZmlnLCBhY2NlbnQpO1xuICAkd2FybjogbWFwLmdldCgkY29uZmlnLCB3YXJuKTtcblxuICAubWF0LW9wdGlvbiB7XG4gICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgdGV4dCk7XG5cbiAgICAmOmhvdmVyOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCksXG4gICAgJjpmb2N1czpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpIHtcbiAgICAgIGJhY2tncm91bmQ6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYmFja2dyb3VuZCwgaG92ZXIpO1xuICAgIH1cblxuICAgIC8vIEluIG11bHRpcGxlIG1vZGUgdGhlcmUgaXMgYSBjaGVja2JveCB0byBzaG93IHRoYXQgdGhlIG9wdGlvbiBpcyBzZWxlY3RlZC5cbiAgICAmLm1hdC1zZWxlY3RlZDpub3QoLm1hdC1vcHRpb24tbXVsdGlwbGUpOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCkge1xuICAgICAgYmFja2dyb3VuZDogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLCBob3Zlcik7XG4gICAgfVxuXG4gICAgJi5tYXQtYWN0aXZlIHtcbiAgICAgIGJhY2tncm91bmQ6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYmFja2dyb3VuZCwgaG92ZXIpO1xuICAgICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgdGV4dCk7XG4gICAgfVxuXG4gICAgJi5tYXQtb3B0aW9uLWRpc2FibGVkIHtcbiAgICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIGhpbnQtdGV4dCk7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1wcmltYXJ5IC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZDpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpIHtcbiAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRwcmltYXJ5LCB0ZXh0KTtcbiAgfVxuXG4gIC5tYXQtYWNjZW50IC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZDpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpIHtcbiAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRhY2NlbnQsIHRleHQpO1xuICB9XG5cbiAgLm1hdC13YXJuIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZDpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpIHtcbiAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCR3YXJuLCB0ZXh0KTtcbiAgfVxufVxuXG5AbWl4aW4gdHlwb2dyYXBoeSgkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHR5cG9ncmFwaHkucHJpdmF0ZS10eXBvZ3JhcGh5LXRvLTIwMTQtY29uZmlnKFxuICAgICAgdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJGNvbmZpZy1vci10aGVtZSkpO1xuICAubWF0LW9wdGlvbiB7XG4gICAgZm9udDoge1xuICAgICAgZmFtaWx5OiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtZmFtaWx5KCRjb25maWcpO1xuICAgICAgc2l6ZTogdHlwb2dyYXBoeS11dGlscy5mb250LXNpemUoJGNvbmZpZywgc3ViaGVhZGluZy0yKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIF9kZW5zaXR5KCRjb25maWctb3ItdGhlbWUpIHt9XG5cbkBtaXhpbiB0aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKSB7XG4gICR0aGVtZTogdGhlbWluZy5wcml2YXRlLWxlZ2FjeS1nZXQtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZyk7XG4gIEBpbmNsdWRlIHRoZW1pbmcucHJpdmF0ZS1jaGVjay1kdXBsaWNhdGUtdGhlbWUtc3R5bGVzKCR0aGVtZSwgJ21hdC1vcHRpb24nKSB7XG4gICAgJGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJHRoZW1lKTtcbiAgICAkZGVuc2l0eTogdGhlbWluZy5nZXQtZGVuc2l0eS1jb25maWcoJHRoZW1lKTtcbiAgICAkdHlwb2dyYXBoeTogdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJHRoZW1lKTtcblxuICAgIEBpZiAkY29sb3IgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBjb2xvcigkY29sb3IpO1xuICAgIH1cbiAgICBAaWYgJGRlbnNpdHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBfZGVuc2l0eSgkZGVuc2l0eSk7XG4gICAgfVxuICAgIEBpZiAkdHlwb2dyYXBoeSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIHR5cG9ncmFwaHkoJHR5cG9ncmFwaHkpO1xuICAgIH1cbiAgfVxufVxuIiwiQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnLi4vdGhlbWluZy90aGVtaW5nJztcbkB1c2UgJy4uL3R5cG9ncmFwaHkvdHlwb2dyYXBoeSc7XG5AdXNlICcuLi90eXBvZ3JhcGh5L3R5cG9ncmFwaHktdXRpbHMnO1xuXG5AbWl4aW4gY29sb3IoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRmb3JlZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGZvcmVncm91bmQpO1xuXG4gIC5tYXQtb3B0Z3JvdXAtbGFiZWwge1xuICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIHNlY29uZGFyeS10ZXh0KTtcbiAgfVxuXG4gIC5tYXQtb3B0Z3JvdXAtZGlzYWJsZWQgLm1hdC1vcHRncm91cC1sYWJlbCB7XG4gICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgaGludC10ZXh0KTtcbiAgfVxufVxuXG5AbWl4aW4gdHlwb2dyYXBoeSgkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHR5cG9ncmFwaHkucHJpdmF0ZS10eXBvZ3JhcGh5LXRvLTIwMTQtY29uZmlnKFxuICAgICAgdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJGNvbmZpZy1vci10aGVtZSkpO1xuICAubWF0LW9wdGdyb3VwLWxhYmVsIHtcbiAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5LXV0aWxzLnR5cG9ncmFwaHktbGV2ZWwoJGNvbmZpZywgYm9keS0yKTtcbiAgfVxufVxuXG5AbWl4aW4gX2RlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIHRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiB0aGVtaW5nLnByaXZhdGUtbGVnYWN5LWdldC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgQGluY2x1ZGUgdGhlbWluZy5wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LW9wdGdyb3VwJykge1xuICAgICRjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgJGRlbnNpdHk6IHRoZW1pbmcuZ2V0LWRlbnNpdHktY29uZmlnKCR0aGVtZSk7XG4gICAgJHR5cG9ncmFwaHk6IHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCR0aGVtZSk7XG5cbiAgICBAaWYgJGNvbG9yICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgX2RlbnNpdHkoJGRlbnNpdHkpO1xuICAgIH1cbiAgICBAaWYgJHR5cG9ncmFwaHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5KCR0eXBvZ3JhcGh5KTtcbiAgICB9XG4gIH1cbn1cbiIsIkB1c2UgJ3Nhc3M6bWFwJztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5JztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5LXV0aWxzJztcbkB1c2UgJy4uL2NvcmUvdGhlbWluZy90aGVtaW5nJztcbkB1c2UgJy4uL2NvcmUvdGhlbWluZy9wYWxldHRlJztcbkB1c2UgJy4uL2NvcmUvc3R5bGUvcHJpdmF0ZSc7XG5cbkBtaXhpbiBjb2xvcigkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJGlzLWRhcmstdGhlbWU6IG1hcC5nZXQoJGNvbmZpZywgaXMtZGFyayk7XG4gICRhY2NlbnQ6IG1hcC5nZXQoJGNvbmZpZywgYWNjZW50KTtcblxuICAubWF0LXNuYWNrLWJhci1jb250YWluZXIge1xuICAgIC8vIFVzZSB0aGUgcHJpbWFyeSB0ZXh0IG9uIHRoZSBkYXJrIHRoZW1lLCBldmVuIHRob3VnaCB0aGUgbGlnaHRlciBvbmUgdXNlc1xuICAgIC8vIGEgc2Vjb25kYXJ5LCBiZWNhdXNlIHRoZSBjb250cmFzdCBvbiB0aGUgbGlnaHQgcHJpbWFyeSB0ZXh0IGlzIHBvb3IuXG4gICAgY29sb3I6IGlmKCRpcy1kYXJrLXRoZW1lLCBwYWxldHRlLiRkYXJrLXByaW1hcnktdGV4dCwgcGFsZXR0ZS4kbGlnaHQtc2Vjb25kYXJ5LXRleHQpO1xuICAgIGJhY2tncm91bmQ6IGlmKCRpcy1kYXJrLXRoZW1lLCBtYXAuZ2V0KHBhbGV0dGUuJGdyZXktcGFsZXR0ZSwgNTApLCAjMzIzMjMyKTtcblxuICAgIEBpbmNsdWRlIHByaXZhdGUucHJpdmF0ZS10aGVtZS1lbGV2YXRpb24oNiwgJGNvbmZpZyk7XG4gIH1cblxuICAubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb24ge1xuICAgIGNvbG9yOiBpZigkaXMtZGFyay10aGVtZSwgaW5oZXJpdCwgdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRhY2NlbnQsIHRleHQpKTtcbiAgfVxufVxuXG5AbWl4aW4gdHlwb2dyYXBoeSgkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHR5cG9ncmFwaHkucHJpdmF0ZS10eXBvZ3JhcGh5LXRvLTIwMTQtY29uZmlnKFxuICAgICAgdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJGNvbmZpZy1vci10aGVtZSkpO1xuICAubWF0LXNpbXBsZS1zbmFja2JhciB7XG4gICAgZm9udDoge1xuICAgICAgZmFtaWx5OiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtZmFtaWx5KCRjb25maWcsIGJvZHktMSk7XG4gICAgICBzaXplOiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtc2l6ZSgkY29uZmlnLCBib2R5LTEpO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbiB7XG4gICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgZm9udDoge1xuICAgICAgZmFtaWx5OiBpbmhlcml0O1xuICAgICAgc2l6ZTogaW5oZXJpdDtcbiAgICAgIHdlaWdodDogdHlwb2dyYXBoeS11dGlscy5mb250LXdlaWdodCgkY29uZmlnLCBidXR0b24pO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gX2RlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIHRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiB0aGVtaW5nLnByaXZhdGUtbGVnYWN5LWdldC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgQGluY2x1ZGUgdGhlbWluZy5wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LXNuYWNrLWJhcicpIHtcbiAgICAkY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkdGhlbWUpO1xuICAgICRkZW5zaXR5OiB0aGVtaW5nLmdldC1kZW5zaXR5LWNvbmZpZygkdGhlbWUpO1xuICAgICR0eXBvZ3JhcGh5OiB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkdGhlbWUpO1xuXG4gICAgQGlmICRjb2xvciAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIGNvbG9yKCRjb2xvcik7XG4gICAgfVxuICAgIEBpZiAkZGVuc2l0eSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIF9kZW5zaXR5KCRkZW5zaXR5KTtcbiAgICB9XG4gICAgQGlmICR0eXBvZ3JhcGh5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgdHlwb2dyYXBoeSgkdHlwb2dyYXBoeSk7XG4gICAgfVxuICB9XG59XG4iLCJAdXNlICdzYXNzOm1hcCc7XG5AdXNlICcuLi9jb3JlL2RlbnNpdHkvcHJpdmF0ZS9jb21wYXRpYmlsaXR5JztcbkB1c2UgJy4uL2NvcmUvdGhlbWluZy90aGVtaW5nJztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5JztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5LXV0aWxzJztcbkB1c2UgJy4vdHJlZS12YXJpYWJsZXMnO1xuXG5AbWl4aW4gY29sb3IoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRiYWNrZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGJhY2tncm91bmQpO1xuICAkZm9yZWdyb3VuZDogbWFwLmdldCgkY29uZmlnLCBmb3JlZ3JvdW5kKTtcblxuICAubWF0LXRyZWUge1xuICAgIGJhY2tncm91bmQ6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYmFja2dyb3VuZCwgJ2NhcmQnKTtcbiAgfVxuXG4gIC5tYXQtdHJlZS1ub2RlLFxuICAubWF0LW5lc3RlZC10cmVlLW5vZGUge1xuICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIHRleHQpO1xuICB9XG59XG5cbkBtaXhpbiB0eXBvZ3JhcGh5KCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdHlwb2dyYXBoeS5wcml2YXRlLXR5cG9ncmFwaHktdG8tMjAxNC1jb25maWcoXG4gICAgICB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKSk7XG4gIC5tYXQtdHJlZSB7XG4gICAgZm9udC1mYW1pbHk6IHR5cG9ncmFwaHktdXRpbHMuZm9udC1mYW1pbHkoJGNvbmZpZyk7XG4gIH1cblxuICAubWF0LXRyZWUtbm9kZSxcbiAgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlIHtcbiAgICBmb250LXdlaWdodDogdHlwb2dyYXBoeS11dGlscy5mb250LXdlaWdodCgkY29uZmlnLCBib2R5LTEpO1xuICAgIGZvbnQtc2l6ZTogdHlwb2dyYXBoeS11dGlscy5mb250LXNpemUoJGNvbmZpZywgYm9keS0xKTtcbiAgfVxufVxuXG5AbWl4aW4gZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRkZW5zaXR5LXNjYWxlOiB0aGVtaW5nLmdldC1kZW5zaXR5LWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJGhlaWdodDogY29tcGF0aWJpbGl0eS5wcml2YXRlLWRlbnNpdHktcHJvcC12YWx1ZSh0cmVlLXZhcmlhYmxlcy4kZGVuc2l0eS1jb25maWcsXG4gICAgJGRlbnNpdHktc2NhbGUsIGhlaWdodCk7XG5cbiAgQGluY2x1ZGUgY29tcGF0aWJpbGl0eS5wcml2YXRlLWRlbnNpdHktbGVnYWN5LWNvbXBhdGliaWxpdHkoKSB7XG4gICAgLm1hdC10cmVlLW5vZGUge1xuICAgICAgbWluLWhlaWdodDogJGhlaWdodDtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiB0aGVtaW5nLnByaXZhdGUtbGVnYWN5LWdldC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgQGluY2x1ZGUgdGhlbWluZy5wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LXRyZWUnKSB7XG4gICAgJGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJHRoZW1lKTtcbiAgICAkZGVuc2l0eTogdGhlbWluZy5nZXQtZGVuc2l0eS1jb25maWcoJHRoZW1lKTtcbiAgICAkdHlwb2dyYXBoeTogdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJHRoZW1lKTtcblxuICAgIEBpZiAkY29sb3IgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBjb2xvcigkY29sb3IpO1xuICAgIH1cbiAgICBAaWYgJGRlbnNpdHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBkZW5zaXR5KCRkZW5zaXR5KTtcbiAgICB9XG4gICAgQGlmICR0eXBvZ3JhcGh5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgdHlwb2dyYXBoeSgkdHlwb2dyYXBoeSk7XG4gICAgfVxuICB9XG59XG5cbiIsIkB1c2UgJy4uLy4uLy4uL2Nkay9hMTF5JztcblxuQG1peGluIHJpcHBsZSgpIHtcbiAgLy8gVGhlIGhvc3QgZWxlbWVudCBvZiBhbiBtYXQtcmlwcGxlIGRpcmVjdGl2ZSBzaG91bGQgYWx3YXlzIGhhdmUgYSBwb3NpdGlvbiBvZiBcImFic29sdXRlXCIgb3JcbiAgLy8gXCJyZWxhdGl2ZVwiIHNvIHRoYXQgdGhlIHJpcHBsZXMgaW5zaWRlIGFyZSBjb3JyZWN0bHkgcG9zaXRpb25lZCByZWxhdGl2ZWx5IHRvIHRoZSBjb250YWluZXIuXG4gIC5tYXQtcmlwcGxlIHtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICAgLy8gQnkgZGVmYXVsdCwgZXZlcnkgcmlwcGxlIGNvbnRhaW5lciBzaG91bGQgaGF2ZSBwb3NpdGlvbjogcmVsYXRpdmUgaW4gZmF2b3Igb2YgY3JlYXRpbmcgYW5cbiAgICAvLyBlYXN5IEFQSSBmb3IgZGV2ZWxvcGVycyB1c2luZyB0aGUgTWF0UmlwcGxlIGRpcmVjdGl2ZS5cbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAvLyBQcm9tb3RlIGNvbnRhaW5lcnMgdGhhdCBoYXZlIHJpcHBsZXMgdG8gYSBuZXcgbGF5ZXIuIFdlIHdhbnQgdG8gdGFyZ2V0IGA6bm90KDplbXB0eSlgLFxuICAgIC8vIGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCBhbGwgcmlwcGxlIGNvbnRhaW5lcnMgdG8gaGF2ZSB0aGVpciBvd24gbGF5ZXIgc2luY2UgdGhleSdyZSB1c2VkIGluIGFcbiAgICAvLyBsb3Qgb2YgcGxhY2VzIGFuZCB0aGUgbGF5ZXIgaXMgb25seSByZWxldmFudCB3aGlsZSBhbmltYXRpbmcuIE5vdGUgdGhhdCBpZGVhbGx5IHdlJ2QgdXNlXG4gICAgLy8gdGhlIGBjb250YWluYCBwcm9wZXJ0eSBoZXJlIChzZWUgIzEzMTc1KSwgYmVjYXVzZSBgOmVtcHR5YCBjYW4gYmUgYnJva2VuIGJ5IGhhdmluZyBleHRyYVxuICAgIC8vIHRleHQgaW5zaWRlIHRoZSBlbGVtZW50LCBidXQgaXQgaXNuJ3QgdmVyeSB3ZWxsIHN1cHBvcnRlZCB5ZXQuXG4gICAgJjpub3QoOmVtcHR5KSB7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCk7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWQge1xuICAgIG92ZXJmbG93OiB2aXNpYmxlO1xuICB9XG5cbiAgLm1hdC1yaXBwbGUtZWxlbWVudCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcblxuICAgIHRyYW5zaXRpb246IG9wYWNpdHksIHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgwKTtcblxuICAgIC8vIEluIGhpZ2ggY29udHJhc3QgbW9kZSB0aGUgcmlwcGxlIGlzIG9wYXF1ZSwgY2F1c2luZyBpdCB0byBvYnN0cnVjdCB0aGUgY29udGVudC5cbiAgICBAaW5jbHVkZSBhMTF5LmhpZ2gtY29udHJhc3QoYWN0aXZlLCBvZmYpIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICB9XG59XG4iLCIvLy8gRW1pdHMgYSBDU1MgY2xhc3MsIGAuY2RrLXZpc3VhbGx5LWhpZGRlbmAuIFRoaXMgY2xhc3MgY2FuIGJlIGFwcGxpZWQgdG8gYW4gZWxlbWVudFxuLy8vIHRvIG1ha2UgdGhhdCBlbGVtZW50IHZpc3VhbGx5IGhpZGRlbiB3aGlsZSByZW1haW5pbmcgYXZhaWxhYmxlIHRvIGFzc2l0aXZlIHRlY2hub2xvZ3kuXG5AbWl4aW4gYTExeS12aXN1YWxseS1oaWRkZW4oKSB7XG4gIC5jZGstdmlzdWFsbHktaGlkZGVuIHtcbiAgICBib3JkZXI6IDA7XG4gICAgY2xpcDogcmVjdCgwIDAgMCAwKTtcbiAgICBoZWlnaHQ6IDFweDtcbiAgICBtYXJnaW46IC0xcHg7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBwYWRkaW5nOiAwO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB3aWR0aDogMXB4O1xuXG4gICAgLy8gVGhpcyB3b3JrcyBhcm91bmQgYSBDaHJvbWUgYnVnIHRoYXQgY2FuIGNhdXNlIHRoZSB0YWIgdG8gY3Jhc2ggd2hlbiBsYXJnZSBhbW91bnRzIG9mXG4gICAgLy8gbm9uLUVuZ2xpc2ggdGV4dCBnZXQgd3JhcHBlZDogaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9MTIwMTQ0NFxuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cbiAgICAvLyBBdm9pZCBicm93c2VycyByZW5kZXJpbmcgdGhlIGZvY3VzIHJpbmcgaW4gc29tZSBjYXNlcy5cbiAgICBvdXRsaW5lOiAwO1xuXG4gICAgLy8gQXZvaWQgc29tZSBjYXNlcyB3aGVyZSB0aGUgYnJvd3NlciB3aWxsIHN0aWxsIHJlbmRlciB0aGUgbmF0aXZlIGNvbnRyb2xzIChzZWUgIzkwNDkpLlxuICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgICAtbW96LWFwcGVhcmFuY2U6IG5vbmU7XG4gIH1cbn1cblxuLy8vIEBkZXByZWNhdGVkIFVzZSBgYTExeS12aXN1YWxseS1oaWRkZW5gLlxuQG1peGluIGExMXkoKSB7XG4gIEBpbmNsdWRlIGExMXktdmlzdWFsbHktaGlkZGVuO1xufVxuXG4vLy8gRW1pdHMgdGhlIG1peGluJ3MgY29udGVudCBuZXN0ZWQgdW5kZXIgYCRzZWxlY3Rvci1jb250ZXh0YCBpZiBgJHNlbGVjdG9yLWNvbnRleHRgXG4vLy8gaXMgbm9uLWVtcHR5LlxuLy8vIEBwYXJhbSB7U3RyaW5nfSBzZWxlY3Rvci1jb250ZXh0IFRoZSBzZWxlY3RvciB1bmRlciB3aGljaCB0byBuZXN0IHRoZSBtaXhpbidzIGNvbnRlbnQuXG5AbWl4aW4gX29wdGlvbmFsbHktbmVzdC1jb250ZW50KCRzZWxlY3Rvci1jb250ZXh0KSB7XG4gIEBpZiAoJHNlbGVjdG9yLWNvbnRleHQgPT0gJycpIHtcbiAgICBAY29udGVudDtcbiAgfVxuICBAZWxzZSB7XG4gICAgI3skc2VsZWN0b3ItY29udGV4dH0ge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG5cbi8vLyBBcHBsaWVzIHN0eWxlcyBmb3IgdXNlcnMgaW4gaGlnaCBjb250cmFzdCBtb2RlLiBOb3RlIHRoYXQgdGhpcyBvbmx5IGFwcGxpZXNcbi8vLyB0byBNaWNyb3NvZnQgYnJvd3NlcnMuIENocm9tZSBjYW4gYmUgaW5jbHVkZWQgYnkgY2hlY2tpbmcgZm9yIHRoZSBgaHRtbFtoY11gXG4vLy8gYXR0cmlidXRlLCBob3dldmVyIENocm9tZSBoYW5kbGVzIGhpZ2ggY29udHJhc3QgZGlmZmVyZW50bHkuXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gdGFyZ2V0IFR5cGUgb2YgaGlnaCBjb250cmFzdCBzZXR0aW5nIHRvIHRhcmdldC4gRGVmYXVsdHMgdG8gYGFjdGl2ZWAsIGNhbiBiZVxuLy8vICAgICBgd2hpdGUtb24tYmxhY2tgIG9yIGBibGFjay1vbi13aGl0ZWAuXG4vLy8gQHBhcmFtIHtTdHJpbmd9IGVuY2Fwc3VsYXRpb24gV2hldGhlciB0byBlbWl0IHN0eWxlcyBmb3IgdmlldyBlbmNhcHN1bGF0aW9uLiBWYWx1ZXMgYXJlOlxuLy8vICAgICAqIGBvbmAgLSB3b3JrcyBmb3IgYEVtdWxhdGVkYCwgYE5hdGl2ZWAsIGFuZCBgU2hhZG93RG9tYFxuLy8vICAgICAqIGBvZmZgIC0gd29ya3MgZm9yIGBOb25lYFxuLy8vICAgICAqIGBhbnlgIC0gd29ya3MgZm9yIGFsbCBlbmNhcHN1bGF0aW9uIG1vZGVzIGJ5IGVtaXR0aW5nIHRoZSBDU1MgdHdpY2UgKGRlZmF1bHQpLlxuQG1peGluIGhpZ2gtY29udHJhc3QoJHRhcmdldDogYWN0aXZlLCAkZW5jYXBzdWxhdGlvbjogJ2FueScpIHtcbiAgQGlmICgkdGFyZ2V0ICE9ICdhY3RpdmUnIGFuZCAkdGFyZ2V0ICE9ICdibGFjay1vbi13aGl0ZScgYW5kICR0YXJnZXQgIT0gJ3doaXRlLW9uLWJsYWNrJykge1xuICAgIEBlcnJvciAnVW5rbm93biBjZGstaGlnaC1jb250cmFzdCB2YWx1ZSBcIiN7JHRhcmdldH1cIiBwcm92aWRlZC4gJyArXG4gICAgICAgICAgICdBbGxvd2VkIHZhbHVlcyBhcmUgXCJhY3RpdmVcIiwgXCJibGFjay1vbi13aGl0ZVwiLCBhbmQgXCJ3aGl0ZS1vbi1ibGFja1wiJztcbiAgfVxuXG4gIEBpZiAoJGVuY2Fwc3VsYXRpb24gIT0gJ29uJyBhbmQgJGVuY2Fwc3VsYXRpb24gIT0gJ29mZicgYW5kICRlbmNhcHN1bGF0aW9uICE9ICdhbnknKSB7XG4gICAgQGVycm9yICdVbmtub3duIGNkay1oaWdoLWNvbnRyYXN0IGVuY2Fwc3VsYXRpb24gXCIjeyRlbmNhcHN1bGF0aW9ufVwiIHByb3ZpZGVkLiAnICtcbiAgICAgICAgICAgJ0FsbG93ZWQgdmFsdWVzIGFyZSBcIm9uXCIsIFwib2ZmXCIsIGFuZCBcImFueVwiJztcbiAgfVxuXG4gIC8vIElmIHRoZSBzZWxlY3RvciBjb250ZXh0IGhhcyBtdWx0aXBsZSBwYXJ0cywgc3VjaCBhcyBgLnNlY3Rpb24sIC5yZWdpb25gLCBqdXN0IGRvaW5nXG4gIC8vIGAuY2RrLWhpZ2gtY29udHJhc3QteHh4ICN7Jn1gIHdpbGwgb25seSBhcHBseSB0aGUgcGFyZW50IHNlbGVjdG9yIHRvIHRoZSBmaXJzdCBwYXJ0IG9mIHRoZVxuICAvLyBjb250ZXh0LiBXZSBhZGRyZXNzIHRoaXMgYnkgbmVzdGluZyB0aGUgc2VsZWN0b3IgY29udGV4dCB1bmRlciAuY2RrLWhpZ2gtY29udHJhc3QuXG4gIEBhdC1yb290IHtcbiAgICAkc2VsZWN0b3ItY29udGV4dDogI3smfTtcblxuICAgIEBpZiAoJGVuY2Fwc3VsYXRpb24gIT0gJ29uJykge1xuICAgICAgLy8gTm90ZSB0aGF0IGlmIHRoaXMgc2VsZWN0b3IgaXMgdXBkYXRlZCwgdGhlIHNhbWUgY2hhbmdlIGhhcyB0byBiZSBtYWRlIGluc2lkZVxuICAgICAgLy8gYF9vdmVybGF5LnNjc3NgIHdoaWNoIGNhbid0IGRlcGVuZCBvbiB0aGlzIG1peGluIGR1ZSB0byBzb21lIGluZnJhc3RydWN0dXJlIGxpbWl0YXRpb25zLlxuICAgICAgLmNkay1oaWdoLWNvbnRyYXN0LSN7JHRhcmdldH0ge1xuICAgICAgICBAaW5jbHVkZSBfb3B0aW9uYWxseS1uZXN0LWNvbnRlbnQoJHNlbGVjdG9yLWNvbnRleHQpIHtcbiAgICAgICAgICBAY29udGVudDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIEBpZiAoJGVuY2Fwc3VsYXRpb24gIT0gJ29mZicpIHtcbiAgICAgIC5jZGstaGlnaC1jb250cmFzdC0jeyR0YXJnZXR9IDpob3N0IHtcbiAgICAgICAgQGluY2x1ZGUgX29wdGlvbmFsbHktbmVzdC1jb250ZW50KCRzZWxlY3Rvci1jb250ZXh0KSB7XG4gICAgICAgICAgQGNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vIFdlIHdhbnQgb3ZlcmxheXMgdG8gYWx3YXlzIGFwcGVhciBvdmVyIHVzZXIgY29udGVudCwgc28gc2V0IGEgYmFzZWxpbmVcbi8vIHZlcnkgaGlnaCB6LWluZGV4IGZvciB0aGUgb3ZlcmxheSBjb250YWluZXIsIHdoaWNoIGlzIHdoZXJlIHdlIGNyZWF0ZSB0aGUgbmV3XG4vLyBzdGFja2luZyBjb250ZXh0IGZvciBhbGwgb3ZlcmxheXMuXG4kb3ZlcmxheS1jb250YWluZXItei1pbmRleDogMTAwMCAhZGVmYXVsdDtcbiRvdmVybGF5LXotaW5kZXg6IDEwMDAgIWRlZmF1bHQ7XG4kb3ZlcmxheS1iYWNrZHJvcC16LWluZGV4OiAxMDAwICFkZWZhdWx0O1xuXG4vLyBCYWNrZ3JvdW5kIGNvbG9yIGZvciBhbGwgb2YgdGhlIGJhY2tkcm9wc1xuJG92ZXJsYXktYmFja2Ryb3AtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4zMikgIWRlZmF1bHQ7XG5cbi8vIERlZmF1bHQgYmFja2Ryb3AgYW5pbWF0aW9uIGlzIGJhc2VkIG9uIHRoZSBNYXRlcmlhbCBEZXNpZ24gc3dpZnQtZWFzZS1vdXQuXG4kYmFja2Ryb3AtYW5pbWF0aW9uLWR1cmF0aW9uOiA0MDBtcyAhZGVmYXVsdDtcbiRiYWNrZHJvcC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKSAhZGVmYXVsdDtcblxuLy8vIEVtaXRzIHN0cnVjdHVyYWwgc3R5bGVzIHJlcXVpcmVkIGZvciBjZGsvb3ZlcmxheSB0byBmdW5jdGlvbi5cbkBtaXhpbiBvdmVybGF5KCkge1xuICAuY2RrLW92ZXJsYXktY29udGFpbmVyLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXIge1xuICAgIC8vIERpc2FibGUgZXZlbnRzIGZyb20gYmVpbmcgY2FwdHVyZWQgb24gdGhlIG92ZXJsYXkgY29udGFpbmVyLlxuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuXG4gICAgLy8gVGhlIGNvbnRhaW5lciBzaG91bGQgYmUgdGhlIHNpemUgb2YgdGhlIHZpZXdwb3J0LlxuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICB3aWR0aDogMTAwJTtcbiAgfVxuXG4gIC8vIFRoZSBvdmVybGF5LWNvbnRhaW5lciBpcyBhbiBpbnZpc2libGUgZWxlbWVudCB3aGljaCBjb250YWlucyBhbGwgaW5kaXZpZHVhbCBvdmVybGF5cy5cbiAgLmNkay1vdmVybGF5LWNvbnRhaW5lciB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIHotaW5kZXg6ICRvdmVybGF5LWNvbnRhaW5lci16LWluZGV4O1xuXG4gICAgJjplbXB0eSB7XG4gICAgICAvLyBIaWRlIHRoZSBlbGVtZW50IHdoZW4gaXQgZG9lc24ndCBoYXZlIGFueSBjaGlsZCBub2Rlcy4gVGhpcyBkb2Vzbid0XG4gICAgICAvLyBpbmNsdWRlIG92ZXJsYXlzIHRoYXQgaGF2ZSBiZWVuIGRldGFjaGVkLCByYXRoZXIgdGhhbiBkaXNwb3NlZC5cbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICB9XG5cbiAgLy8gV2UgdXNlIGFuIGV4dHJhIHdyYXBwZXIgZWxlbWVudCBpbiBvcmRlciB0byB1c2UgbWFrZSB0aGUgb3ZlcmxheSBpdHNlbGYgYSBmbGV4IGl0ZW0uXG4gIC8vIFRoaXMgbWFrZXMgY2VudGVyaW5nIHRoZSBvdmVybGF5IGVhc3kgd2l0aG91dCBydW5uaW5nIGludG8gdGhlIHN1YnBpeGVsIHJlbmRlcmluZ1xuICAvLyBwcm9ibGVtcyB0aWVkIHRvIHVzaW5nIGB0cmFuc2Zvcm1gIGFuZCB3aXRob3V0IGludGVyZmVyaW5nIHdpdGggdGhlIG90aGVyIHBvc2l0aW9uXG4gIC8vIHN0cmF0ZWdpZXMuXG4gIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgei1pbmRleDogJG92ZXJsYXktei1pbmRleDtcbiAgfVxuXG4gIC8vIEEgc2luZ2xlIG92ZXJsYXkgcGFuZS5cbiAgLmNkay1vdmVybGF5LXBhbmUge1xuICAgIC8vIE5vdGU6IGl0J3MgaW1wb3J0YW50IGZvciB0aGlzIG9uZSB0byBzdGFydCBvZmYgYGFic29sdXRlYCxcbiAgICAvLyBpbiBvcmRlciBmb3IgdXMgdG8gYmUgYWJsZSB0byBtZWFzdXJlIGl0IGNvcnJlY3RseS5cbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgcG9pbnRlci1ldmVudHM6IGF1dG87XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICB6LWluZGV4OiAkb3ZlcmxheS16LWluZGV4O1xuXG4gICAgLy8gRm9yIGNvbm5lY3RlZC1wb3NpdGlvbiBvdmVybGF5cywgd2Ugc2V0IGBkaXNwbGF5OiBmbGV4YCBpblxuICAgIC8vIG9yZGVyIHRvIGZvcmNlIGBtYXgtd2lkdGhgIGFuZCBgbWF4LWhlaWdodGAgdG8gdGFrZSBlZmZlY3QuXG4gICAgZGlzcGxheTogZmxleDtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgbWF4LWhlaWdodDogMTAwJTtcbiAgfVxuXG4gIC5jZGstb3ZlcmxheS1iYWNrZHJvcCB7XG4gICAgLy8gVE9ETyhqZWxib3Vybik6IHJldXNlIHNpZGVuYXYgZnVsbHNjcmVlbiBtaXhpbi5cbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGJvdHRvbTogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHJpZ2h0OiAwO1xuXG4gICAgei1pbmRleDogJG92ZXJsYXktYmFja2Ryb3Atei1pbmRleDtcbiAgICBwb2ludGVyLWV2ZW50czogYXV0bztcbiAgICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIHRyYW5zaXRpb246IG9wYWNpdHkgJGJhY2tkcm9wLWFuaW1hdGlvbi1kdXJhdGlvbiAkYmFja2Ryb3AtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjtcbiAgICBvcGFjaXR5OiAwO1xuXG4gICAgJi5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nIHtcbiAgICAgIG9wYWNpdHk6IDE7XG5cbiAgICAgIC8vIE5vdGUgdGhhdCB3ZSBjYW4ndCBpbXBvcnQgYW5kIHVzZSB0aGUgYGhpZ2gtY29udHJhc3RgIG1peGluIGZyb20gYF9hMTF5LnNjc3NgLCBiZWNhdXNlXG4gICAgICAvLyB0aGlzIGZpbGUgd2lsbCBiZSBjb3BpZWQgdG8gdGhlIHRvcC1sZXZlbCBgY2RrYCBwYWNrYWdlIHdoZW4gcHV0dGluZyB0b2dldGhlciB0aGUgZmlsZXNcbiAgICAgIC8vIGZvciBucG0uIEFueSByZWxhdGl2ZSBpbXBvcnQgcGF0aHMgd2UgdXNlIGhlcmUgd2lsbCBiZWNvbWUgaW52YWxpZCBvbmNlIHRoZSBmaWxlIGlzIGNvcGllZC5cbiAgICAgIC5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgJiB7XG4gICAgICAgIC8vIEluIGhpZ2ggY29udHJhc3QgbW9kZSB0aGUgcmdiYSBiYWNrZ3JvdW5kIHdpbGwgYmVjb21lIHNvbGlkXG4gICAgICAgIC8vIHNvIHdlIG5lZWQgdG8gZmFsbCBiYWNrIHRvIG1ha2luZyBpdCBvcGFxdWUgdXNpbmcgYG9wYWNpdHlgLlxuICAgICAgICBvcGFjaXR5OiAwLjY7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3Age1xuICAgIGJhY2tncm91bmQ6ICRvdmVybGF5LWJhY2tkcm9wLWNvbG9yO1xuICB9XG5cbiAgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wIHtcbiAgICAvLyBOb3RlOiBhcyBvZiBGaXJlZm94IDU3LCBoYXZpbmcgdGhlIGJhY2tkcm9wIGJlIGBiYWNrZ3JvdW5kOiBub25lYCB3aWxsIHByZXZlbnQgaXQgZnJvbVxuICAgIC8vIGNhcHR1cmluZyB0aGUgdXNlcidzIG1vdXNlIHNjcm9sbCBldmVudHMuIFNpbmNlIHdlIGFsc28gY2FuJ3QgdXNlIHNvbWV0aGluZyBsaWtlXG4gICAgLy8gYHJnYmEoMCwgMCwgMCwgMClgLCB3ZSB3b3JrIGFyb3VuZCB0aGUgaW5jb25zaXN0ZW5jeSBieSBub3Qgc2V0dGluZyB0aGUgYmFja2dyb3VuZCBhdFxuICAgIC8vIGFsbCBhbmQgdXNpbmcgYG9wYWNpdHlgIHRvIG1ha2UgdGhlIGVsZW1lbnQgdHJhbnNwYXJlbnQuXG4gICAgJiwgJi5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nIHtcbiAgICAgIG9wYWNpdHk6IDA7XG4gICAgfVxuICB9XG5cbiAgLy8gT3ZlcmxheSBwYXJlbnQgZWxlbWVudCB1c2VkIHdpdGggdGhlIGNvbm5lY3RlZCBwb3NpdGlvbiBzdHJhdGVneS4gVXNlZCB0byBjb25zdHJhaW4gdGhlXG4gIC8vIG92ZXJsYXkgZWxlbWVudCdzIHNpemUgdG8gZml0IHdpdGhpbiB0aGUgdmlld3BvcnQuXG4gIC5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgei1pbmRleDogJG92ZXJsYXktei1pbmRleDtcblxuICAgIC8vIFdlIHVzZSBgZGlzcGxheTogZmxleGAgb24gdGhpcyBlbGVtZW50IGV4Y2x1c2l2ZWx5IGZvciBjZW50ZXJpbmcgY29ubmVjdGVkIG92ZXJsYXlzLlxuICAgIC8vIFdoZW4gKm5vdCogY2VudGVyaW5nLCBhIHRvcC9sZWZ0L2JvdHRvbS9yaWdodCB3aWxsIGJlIHNldCB3aGljaCBvdmVycmlkZXMgdGhlIG5vcm1hbFxuICAgIC8vIGZsZXggbGF5b3V0LlxuICAgIGRpc3BsYXk6IGZsZXg7XG5cbiAgICAvLyBXZSB1c2UgdGhlIGBjb2x1bW5gIGRpcmVjdGlvbiBoZXJlIHRvIGF2b2lkIHNvbWUgZmxleGJveCBpc3N1ZXMgaW4gRWRnZVxuICAgIC8vIHdoZW4gdXNpbmcgdGhlIFwiZ3JvdyBhZnRlciBvcGVuXCIgb3B0aW9ucy5cbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXG4gICAgLy8gQWRkIHNvbWUgZGltZW5zaW9ucyBzbyB0aGUgZWxlbWVudCBoYXMgYW4gYGlubmVyVGV4dGAgd2hpY2ggc29tZSBwZW9wbGUgZGVwZW5kIG9uIGluIHRlc3RzLlxuICAgIG1pbi13aWR0aDogMXB4O1xuICAgIG1pbi1oZWlnaHQ6IDFweDtcbiAgfVxuXG4gIC8vIFVzZWQgd2hlbiBkaXNhYmxpbmcgZ2xvYmFsIHNjcm9sbGluZy5cbiAgLmNkay1nbG9iYWwtc2Nyb2xsYmxvY2sge1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcblxuICAgIC8vIE5lY2Vzc2FyeSBmb3IgdGhlIGNvbnRlbnQgbm90IHRvIGxvc2UgaXRzIHdpZHRoLiBOb3RlIHRoYXQgd2UncmUgdXNpbmcgMTAwJSwgaW5zdGVhZCBvZlxuICAgIC8vIDEwMHZ3LCBiZWNhdXNlIDEwMHZ3IGluY2x1ZGVzIHRoZSB3aWR0aCBwbHVzIHRoZSBzY3JvbGxiYXIsIHdoZXJlYXMgMTAwJSBpcyB0aGUgd2lkdGhcbiAgICAvLyB0aGF0IHRoZSBlbGVtZW50IGhhZCBiZWZvcmUgd2UgbWFkZSBpdCBgZml4ZWRgLlxuICAgIHdpZHRoOiAxMDAlO1xuXG4gICAgLy8gTm90ZTogdGhpcyB3aWxsIGFsd2F5cyBhZGQgYSBzY3JvbGxiYXIgdG8gd2hhdGV2ZXIgZWxlbWVudCBpdCBpcyBvbiwgd2hpY2ggY2FuXG4gICAgLy8gcG90ZW50aWFsbHkgcmVzdWx0IGluIGRvdWJsZSBzY3JvbGxiYXJzLiBJdCBzaG91bGRuJ3QgYmUgYW4gaXNzdWUsIGJlY2F1c2Ugd2Ugd29uJ3RcbiAgICAvLyBibG9jayBzY3JvbGxpbmcgb24gYSBwYWdlIHRoYXQgZG9lc24ndCBoYXZlIGEgc2Nyb2xsYmFyIGluIHRoZSBmaXJzdCBwbGFjZS5cbiAgICBvdmVyZmxvdy15OiBzY3JvbGw7XG4gIH1cbn1cbiIsIi8vIFN0cnVjdHVyYWwgc3R5bGVzIGZvciB0aGUgYXV0b3NpemUgdGV4dCBmaWVsZHMuXG5AbWl4aW4gdGV4dC1maWVsZC1hdXRvc2l6ZSgpIHtcbiAgLy8gUmVtb3ZlIHRoZSByZXNpemUgaGFuZGxlIG9uIGF1dG9zaXppbmcgdGV4dGFyZWFzLCBiZWNhdXNlIHdoYXRldmVyIGhlaWdodFxuICAvLyB0aGUgdXNlciByZXNpemVkIHRvIHdpbGwgYmUgb3ZlcndyaXR0ZW4gb25jZSB0aGV5IHN0YXJ0IHR5cGluZyBhZ2Fpbi5cbiAgdGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplIHtcbiAgICByZXNpemU6IG5vbmU7XG4gIH1cblxuICAvLyBUaGlzIGNsYXNzIGlzIHRlbXBvcmFyaWx5IGFwcGxpZWQgdG8gdGhlIHRleHRhcmVhIHdoZW4gaXQgaXMgYmVpbmcgbWVhc3VyZWQuIEl0IGlzIGltbWVkaWF0ZWx5XG4gIC8vIHJlbW92ZWQgd2hlbiBtZWFzdXJpbmcgaXMgY29tcGxldGUuIFdlIHVzZSBgIWltcG9ydGFudGAgcnVsZXMgaGVyZSB0byBtYWtlIHN1cmUgdXNlci1zcGVjaWZpZWRcbiAgLy8gcnVsZXMgZG8gbm90IGludGVyZmVyZSB3aXRoIHRoZSBtZWFzdXJlbWVudC5cbiAgdGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZyB7XG4gICAgQGluY2x1ZGUgX2F1dG9zaXplLW1lYXN1cmluZy1iYXNlO1xuICAgIGhlaWdodDogYXV0byAhaW1wb3J0YW50O1xuICAgIG92ZXJmbG93OiBoaWRkZW4gIWltcG9ydGFudDtcbiAgfVxuXG4gIC8vIFNpbWlsYXIgdG8gdGhlIGBjZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nYCBjbGFzcywgYnV0IG9ubHkgYXBwbGllZCBvbiBGaXJlZm94LiBXZSBuZWVkXG4gIC8vIHRvIHVzZSB0aGlzIGNsYXNzLCBiZWNhdXNlIEZpcmVmb3ggaGFzIGEgYnVnIHdoZXJlIGNoYW5naW5nIHRoZSBgb3ZlcmZsb3dgIGJyZWFrcyB0aGUgdXNlcidzXG4gIC8vIGFiaWxpdHkgdG8gdW5kby9yZWRvIHdoYXQgdGhleSB3ZXJlIHR5cGluZyAoc2VlICMxNjYyOSkuIFRoaXMgY2xhc3MgaXMgb25seSBzY29wZWQgdG8gRmlyZWZveCxcbiAgLy8gYmVjYXVzZSB0aGUgbWVhc3VyZW1lbnRzIHRoZXJlIGRvbid0IHNlZW0gdG8gYmUgYWZmZWN0ZWQgYnkgdGhlIGBoZWlnaHQ6IDBgLCB3aGVyZWFzIG9uIG90aGVyXG4gIC8vIGJyb3dzZXJzIHRoZXkgYXJlLCBlLmcuIENocm9tZSBkZXRlY3RzIGxvbmdlciB0ZXh0IGFuZCBJRSBkb2VzJ3QgcmVzaXplIGJhY2sgdG8gbm9ybWFsLlxuICAvLyBJZGVudGljYWwgaXNzdWUgcmVwb3J0OiBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD00NDg3ODRcbiAgdGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94IHtcbiAgICBAaW5jbHVkZSBfYXV0b3NpemUtbWVhc3VyaW5nLWJhc2U7XG4gICAgaGVpZ2h0OiAwICFpbXBvcnRhbnQ7XG4gIH1cbn1cblxuLy8gQ29yZSBzdHlsZXMgdGhhdCBlbmFibGUgbW9uaXRvcmluZyBhdXRvZmlsbCBzdGF0ZSBvZiB0ZXh0IGZpZWxkcy5cbkBtaXhpbiB0ZXh0LWZpZWxkLWF1dG9maWxsKCkge1xuICAvLyBLZXlmcmFtZXMgdGhhdCBhcHBseSBubyBzdHlsZXMsIGJ1dCBhbGxvdyB1cyB0byBtb25pdG9yIHdoZW4gYW4gdGV4dCBmaWVsZCBiZWNvbWVzIGF1dG9maWxsZWRcbiAgLy8gYnkgd2F0Y2hpbmcgZm9yIHRoZSBhbmltYXRpb24gZXZlbnRzIHRoYXQgYXJlIGZpcmVkIHdoZW4gdGhleSBzdGFydC4gTm90ZTogdGhlIC8qISovIGNvbW1lbnQgaXNcbiAgLy8gbmVlZGVkIHRvIHByZXZlbnQgTGliU2FzcyBmcm9tIHN0cmlwcGluZyB0aGUga2V5ZnJhbWVzIG91dC5cbiAgLy8gQmFzZWQgb246IGh0dHBzOi8vbWVkaXVtLmNvbS9AYnJ1bm4vZGV0ZWN0aW5nLWF1dG9maWxsZWQtZmllbGRzLWluLWphdmFzY3JpcHQtYWVkNTk4ZDI1ZGE3XG4gIEBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgey8qISovfVxuICBAa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCB7LyohKi99XG5cbiAgLmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZDotd2Via2l0LWF1dG9maWxsIHtcbiAgICAvLyBTaW5jZSBDaHJvbWUgODAgd2UgbmVlZCBhIDFtcyBkZWxheSwgb3IgdGhlIGFuaW1hdGlvbnN0YXJ0IGV2ZW50IHdvbid0IGZpcmUuXG4gICAgYW5pbWF0aW9uOiBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXM7XG4gIH1cblxuICAuY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCkge1xuICAgIC8vIFNpbmNlIENocm9tZSA4MCB3ZSBuZWVkIGEgMW1zIGRlbGF5LCBvciB0aGUgYW5pbWF0aW9uc3RhcnQgZXZlbnQgd29uJ3QgZmlyZS5cbiAgICBhbmltYXRpb246IGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXM7XG4gIH1cbn1cblxuQG1peGluIF9hdXRvc2l6ZS1tZWFzdXJpbmctYmFzZSB7XG4gIC8vIEhhdmluZyAycHggdG9wIGFuZCBib3R0b20gcGFkZGluZyBzZWVtcyB0byBmaXggYSBidWcgd2hlcmUgQ2hyb21lIGdldHMgYW4gaW5jb3JyZWN0XG4gIC8vIG1lYXN1cmVtZW50LiBXZSBqdXN0IGhhdmUgdG8gYWNjb3VudCBmb3IgaXQgbGF0ZXIgYW5kIHN1YnRyYWN0IGl0IG9mZiB0aGUgZmluYWwgcmVzdWx0LlxuICBwYWRkaW5nOiAycHggMCAhaW1wb3J0YW50O1xuICBib3gtc2l6aW5nOiBjb250ZW50LWJveCAhaW1wb3J0YW50O1xufVxuXG4vLyBVc2VkIHRvIGdlbmVyYXRlIFVJRHMgZm9yIGtleWZyYW1lcyB1c2VkIHRvIGNoYW5nZSB0aGUgdGV4dCBmaWVsZCBhdXRvZmlsbCBzdHlsZXMuXG4kYXV0b2ZpbGwtY29sb3ItZnJhbWUtY291bnQ6IDA7XG5cbi8vIE1peGluIHVzZWQgdG8gYXBwbHkgY3VzdG9tIGJhY2tncm91bmQgYW5kIGZvcmVncm91bmQgY29sb3JzIHRvIGFuIGF1dG9maWxsZWQgdGV4dCBmaWVsZC5cbi8vIEJhc2VkIG9uOiBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8yNzgxNTQ5L1xuLy8gcmVtb3ZpbmctaW5wdXQtYmFja2dyb3VuZC1jb2xvdXItZm9yLWNocm9tZS1hdXRvY29tcGxldGUjYW5zd2VyLTM3NDMyMjYwXG5AbWl4aW4gdGV4dC1maWVsZC1hdXRvZmlsbC1jb2xvcigkYmFja2dyb3VuZCwgJGZvcmVncm91bmQ6JycpIHtcbiAgQGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1jb2xvci0jeyRhdXRvZmlsbC1jb2xvci1mcmFtZS1jb3VudH0ge1xuICAgIHRvIHtcbiAgICAgIGJhY2tncm91bmQ6ICRiYWNrZ3JvdW5kO1xuICAgICAgQGlmICRmb3JlZ3JvdW5kICE9ICcnIHsgY29sb3I6ICRmb3JlZ3JvdW5kOyB9XG4gICAgfVxuICB9XG5cbiAgJjotd2Via2l0LWF1dG9maWxsIHtcbiAgICBhbmltYXRpb246IGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWNvbG9yLSN7JGF1dG9maWxsLWNvbG9yLWZyYW1lLWNvdW50fSBib3RoO1xuICB9XG5cbiAgJi5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWQ6LXdlYmtpdC1hdXRvZmlsbCB7XG4gICAgLy8gU2luY2UgQ2hyb21lIDgwIHdlIG5lZWQgYSAxbXMgZGVsYXkgZm9yIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0LCBvciB0aGUgYW5pbWF0aW9uc3RhcnRcbiAgICAvLyBldmVudCB3b24ndCBmaXJlLlxuICAgIGFuaW1hdGlvbjogY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zLFxuICAgICAgICAgICAgICAgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtY29sb3ItI3skYXV0b2ZpbGwtY29sb3ItZnJhbWUtY291bnR9IGJvdGg7XG4gIH1cblxuICAkYXV0b2ZpbGwtY29sb3ItZnJhbWUtY291bnQ6ICRhdXRvZmlsbC1jb2xvci1mcmFtZS1jb3VudCArIDEgIWdsb2JhbDtcbn1cblxuLy8gQGRlcHJlY2F0ZWQgVXNlIGBhdXRvc2l6ZWAgYW5kIGBhdXRvZmlsbGAgaW5zdGVhZC5cbkBtaXhpbiB0ZXh0LWZpZWxkIHtcbiAgQGluY2x1ZGUgdGV4dC1maWVsZC1hdXRvc2l6ZSgpO1xuICBAaW5jbHVkZSB0ZXh0LWZpZWxkLWF1dG9maWxsKCk7XG59XG4iLCJAdXNlICdzYXNzOm1hcCc7XG5AdXNlICcuLi9zdHlsZS9sYXlvdXQtY29tbW9uJztcblxuLy8vIE1peGluIHRoYXQgdHVybnMgb24gc3Ryb25nIGZvY3VzIGluZGljYXRvcnMuXG4vLy9cbi8vLyBAZXhhbXBsZVxuLy8vICAgLm15LWFwcCB7XG4vLy8gICAgIEBpbmNsdWRlIG1hdC1zdHJvbmctZm9jdXMtaW5kaWNhdG9ycygkY29uZmlnKTtcbi8vLyAgIH1cbkBtaXhpbiBzdHJvbmctZm9jdXMtaW5kaWNhdG9ycygkY29uZmlnOiAoKSkge1xuICAvLyBEZWZhdWx0IGZvY3VzIGluZGljYXRvciBjb25maWcuXG4gICRkZWZhdWx0LWNvbmZpZzogKFxuICAgIGJvcmRlci1zdHlsZTogc29saWQsXG4gICAgYm9yZGVyLXdpZHRoOiAzcHgsXG4gICAgYm9yZGVyLXJhZGl1czogNHB4LFxuICApO1xuXG4gIC8vIE1lcmdlIGRlZmF1bHQgY29uZmlnIHdpdGggdXNlciBjb25maWcuXG4gICRjb25maWc6IG1hcC5tZXJnZSgkZGVmYXVsdC1jb25maWcsICRjb25maWcpO1xuICAkYm9yZGVyLXN0eWxlOiBtYXAuZ2V0KCRjb25maWcsIGJvcmRlci1zdHlsZSk7XG4gICRib3JkZXItd2lkdGg6IG1hcC5nZXQoJGNvbmZpZywgYm9yZGVyLXdpZHRoKTtcbiAgJGJvcmRlci1yYWRpdXM6IG1hcC5nZXQoJGNvbmZpZywgYm9yZGVyLXJhZGl1cyk7XG5cbiAgLy8gQmFzZSBzdHlsZXMgZm9yIGZvY3VzIGluZGljYXRvcnMuXG4gIC5tYXQtZm9jdXMtaW5kaWNhdG9yOjpiZWZvcmUge1xuICAgIEBpbmNsdWRlIGxheW91dC1jb21tb24uZmlsbCgpO1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgYm9yZGVyOiAkYm9yZGVyLXdpZHRoICRib3JkZXItc3R5bGUgdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXM7XG4gIH1cblxuICAvLyBCeSBkZWZhdWx0LCBhbGwgZm9jdXMgaW5kaWNhdG9ycyBhcmUgZmx1c2ggd2l0aCB0aGUgYm91bmRpbmcgYm94IG9mIHRoZWlyXG4gIC8vIGhvc3QgZWxlbWVudC4gRm9yIHBhcnRpY3VsYXIgZWxlbWVudHMgKGxpc3RlZCBiZWxvdyksIGRlZmF1bHQgaW5zZXQvb2Zmc2V0XG4gIC8vIHZhbHVlcyBhcmUgbmVjZXNzYXJ5IHRvIGVuc3VyZSB0aGF0IHRoZSBmb2N1cyBpbmRpY2F0b3IgaXMgc3VmZmljaWVudGx5XG4gIC8vIGNvbnRyYXN0aXZlIGFuZCByZW5kZXJzIGFwcHJvcHJpYXRlbHkuXG5cbiAgLm1hdC1mb2N1cy1pbmRpY2F0b3IubWF0LWZsYXQtYnV0dG9uOjpiZWZvcmUsXG4gIC5tYXQtZm9jdXMtaW5kaWNhdG9yLm1hdC1yYWlzZWQtYnV0dG9uOjpiZWZvcmUsXG4gIC5tYXQtZm9jdXMtaW5kaWNhdG9yLm1hdC1mYWI6OmJlZm9yZSxcbiAgLm1hdC1mb2N1cy1pbmRpY2F0b3IubWF0LW1pbmktZmFiOjpiZWZvcmUsXG4gIC5tYXQtZm9jdXMtaW5kaWNhdG9yLm1hdC1jaGlwOjpiZWZvcmUsXG4gIC5tYXQtZm9jdXMtaW5kaWNhdG9yLm1hdC1zb3J0LWhlYWRlci1jb250YWluZXI6OmJlZm9yZSB7XG4gICAgbWFyZ2luOiAtKCRib3JkZXItd2lkdGggKyAycHgpO1xuICB9XG5cbiAgLm1hdC1mb2N1cy1pbmRpY2F0b3IubWF0LXN0cm9rZWQtYnV0dG9uOjpiZWZvcmUsXG4gIC5tYXQtZm9jdXMtaW5kaWNhdG9yLm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudDo6YmVmb3JlIHtcbiAgICBtYXJnaW46IC0oJGJvcmRlci13aWR0aCArIDNweCk7XG4gIH1cblxuICAubWF0LWZvY3VzLWluZGljYXRvci5tYXQtdGFiLWxpbms6OmJlZm9yZSxcbiAgLm1hdC1mb2N1cy1pbmRpY2F0b3IubWF0LXRhYi1sYWJlbDo6YmVmb3JlIHtcbiAgICBtYXJnaW46IDVweDtcbiAgfVxuXG4gIC8vIFJlbmRlciB0aGUgZm9jdXMgaW5kaWNhdG9yIG9uIGZvY3VzLiBEZWZpbmluZyBhIHBzZXVkbyBlbGVtZW50J3NcbiAgLy8gY29udGVudCB3aWxsIGNhdXNlIGl0IHRvIHJlbmRlci5cblxuICAvLyBDaGVja2JveGVzLCByYWRpb3MsIGFuZCBzbGlkZSB0b2dnbGVzIHJlbmRlciBmb2N1cyBpbmRpY2F0b3JzIHdoZW4gdGhlXG4gIC8vIGFzc29jaWF0ZWQgdmlzdWFsbHktaGlkZGVuIGlucHV0IGlzIGZvY3VzZWQuXG4gIC5tYXQtY2hlY2tib3gtaW5wdXQ6Zm9jdXMgfiAubWF0LWZvY3VzLWluZGljYXRvcjo6YmVmb3JlLFxuICAubWF0LXJhZGlvLWlucHV0OmZvY3VzIH4gLm1hdC1mb2N1cy1pbmRpY2F0b3I6OmJlZm9yZSxcbiAgLm1hdC1zbGlkZS10b2dnbGUtaW5wdXQ6Zm9jdXMgfiAubWF0LXNsaWRlLXRvZ2dsZS10aHVtYi1jb250YWluZXIgLm1hdC1mb2N1cy1pbmRpY2F0b3I6OmJlZm9yZSxcblxuICAvLyBGb3Igb3B0aW9ucywgcmVuZGVyIHRoZSBmb2N1cyBpbmRpY2F0b3Igd2hlbiB0aGUgY2xhc3MgLm1hdC1hY3RpdmVcbiAgLy8gaXMgcHJlc2VudC5cbiAgLm1hdC1mb2N1cy1pbmRpY2F0b3IubWF0LW9wdGlvbi5tYXQtYWN0aXZlOjpiZWZvcmUsXG5cbiAgLy8gRm9yIGNhbGVuZGFyIGNlbGxzLCByZW5kZXIgdGhlIGZvY3VzIGluZGljYXRvciB3aGVuIHRoZSBwYXJlbnQgY2VsbCBpc1xuICAvLyBmb2N1c2VkLlxuICAubWF0LWNhbGVuZGFyLWJvZHktY2VsbDpmb2N1cyAubWF0LWZvY3VzLWluZGljYXRvcjo6YmVmb3JlLFxuXG4gIC8vIFN0ZXBwZXIgaGVhZGVycyBoYXZlIHRoZSBmb2N1cyBpbmRpY2F0b3IgYXMgYSBkZXNjZW5kYW50LFxuICAvLyBiZWNhdXNlIGA6OmJlZm9yZWAgaXMgdXNlZCBmb3Igb3RoZXIgc3R5bGluZy5cbiAgLm1hdC1zdGVwLWhlYWRlcjpmb2N1cyAubWF0LWZvY3VzLWluZGljYXRvcjo6YmVmb3JlLFxuXG4gIC8vIEZvciBhbGwgb3RoZXIgY29tcG9uZW50cywgcmVuZGVyIHRoZSBmb2N1cyBpbmRpY2F0b3Igb24gZm9jdXMuXG4gIC5tYXQtZm9jdXMtaW5kaWNhdG9yOmZvY3VzOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICcnO1xuICB9XG59XG5cbi8vIE1peGluIHRoYXQgZW5zdXJlcyBmb2N1cyBpbmRpY2F0b3IgaG9zdCBlbGVtZW50cyBhcmUgcG9zaXRpb25lZCBzbyB0aGF0IHRoZSBmb2N1cyBpbmRpY2F0b3Jcbi8vIHBzZXVkbyBlbGVtZW50IHdpdGhpbiBpcyBwb3NpdGlvbmVkIHJlbGF0aXZlIHRvIHRoZSBob3N0LiBQcml2YXRlIG1peGluIGluY2x1ZGVkIHdpdGhpblxuLy8gYG1hdC1jb3JlYC5cbkBtaXhpbiBwcml2YXRlLXN0cm9uZy1mb2N1cy1pbmRpY2F0b3JzLXBvc2l0aW9uaW5nKCkge1xuICAubWF0LWZvY3VzLWluZGljYXRvciB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB9XG59XG4iLCJAdXNlICcuLi8uLi9jZGsvb3ZlcmxheSc7XG5AdXNlICcuLi8uLi9jZGsvYTExeSc7XG5AdXNlICcuLi8uLi9jZGsvdGV4dC1maWVsZCc7XG5cbi8vIENvcmUgc3R5bGVzIHRoYXQgY2FuIGJlIHVzZWQgdG8gYXBwbHkgbWF0ZXJpYWwgZGVzaWduIHRyZWF0bWVudHMgdG8gYW55IGVsZW1lbnQuXG5AdXNlICcuL3JpcHBsZS9yaXBwbGUnO1xuQHVzZSAnLi9mb2N1cy1pbmRpY2F0b3JzL2ZvY3VzLWluZGljYXRvcnMnO1xuQHVzZSAnLi90eXBvZ3JhcGh5L2FsbC10eXBvZ3JhcGh5JztcblxuLy8gTWl4aW4gdGhhdCByZW5kZXJzIGFsbCBvZiB0aGUgY29yZSBzdHlsZXMgdGhhdCBhcmUgbm90IHRoZW1lLWRlcGVuZGVudC5cbkBtaXhpbiBjb3JlKCR0eXBvZ3JhcGh5LWNvbmZpZzogbnVsbCkge1xuICBAaW5jbHVkZSBhbGwtdHlwb2dyYXBoeS5hbGwtY29tcG9uZW50LXR5cG9ncmFwaGllcygkdHlwb2dyYXBoeS1jb25maWcpO1xuICBAaW5jbHVkZSByaXBwbGUucmlwcGxlKCk7XG4gIEBpbmNsdWRlIGExMXkuYTExeS12aXN1YWxseS1oaWRkZW4oKTtcbiAgQGluY2x1ZGUgb3ZlcmxheS5vdmVybGF5KCk7XG4gIEBpbmNsdWRlIHRleHQtZmllbGQudGV4dC1maWVsZC1hdXRvc2l6ZSgpO1xuICBAaW5jbHVkZSB0ZXh0LWZpZWxkLnRleHQtZmllbGQtYXV0b2ZpbGwoKTtcblxuICBAaW5jbHVkZSBmb2N1cy1pbmRpY2F0b3JzLnByaXZhdGUtc3Ryb25nLWZvY3VzLWluZGljYXRvcnMtcG9zaXRpb25pbmcoKTtcbiAgQGluY2x1ZGUgX21kYy1jb3JlKCk7XG59XG5cbi8vIE1peGluIHRoYXQgcmVuZGVycyBhbGwgb2YgdGhlIGNvcmUgTURDIHN0eWxlcy4gUHJpdmF0ZSBtaXhpbiBpbmNsdWRlZCB3aXRoIGBtYXQtY29yZWAuXG5AbWl4aW4gX21kYy1jb3JlKCkge1xuICBAaW5jbHVkZSBfbWRjLXN0cm9uZy1mb2N1cy1pbmRpY2F0b3JzLXBvc2l0aW9uaW5nKCk7XG59XG5cbi8vIE1peGluIHRoYXQgZW5zdXJlcyBmb2N1cyBpbmRpY2F0b3IgaG9zdCBlbGVtZW50cyBhcmUgcG9zaXRpb25lZCBzbyB0aGF0IHRoZSBmb2N1cyBpbmRpY2F0b3Jcbi8vIHBzZXVkbyBlbGVtZW50IHdpdGhpbiBpcyBwb3NpdGlvbmVkIHJlbGF0aXZlIHRvIHRoZSBob3N0LiBQcml2YXRlIG1peGluIGluY2x1ZGVkIHdpdGhpblxuLy8gYF9tYXQtbWRjLWNvcmVgLlxuQG1peGluIF9tZGMtc3Ryb25nLWZvY3VzLWluZGljYXRvcnMtcG9zaXRpb25pbmcoKSB7XG4gIC5tYXQtbWRjLWZvY3VzLWluZGljYXRvciB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB9XG59XG4iLCJAdXNlICdzYXNzOm1hcCc7XG5AdXNlICdzYXNzOm1ldGEnO1xuQHVzZSAnLi4vdGhlbWluZy90aGVtaW5nJztcblxuLy8gQ29sb3JzIGZvciB0aGUgcmlwcGxlIGVsZW1lbnRzLlxuQG1peGluIGNvbG9yKCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAkZm9yZWdyb3VuZDogbWFwLmdldCgkY29uZmlnLCBmb3JlZ3JvdW5kKTtcbiAgJGZvcmVncm91bmQtYmFzZTogbWFwLmdldCgkZm9yZWdyb3VuZCwgYmFzZSk7XG4gICRjb2xvci1vcGFjaXR5OiAwLjE7XG5cbiAgLm1hdC1yaXBwbGUtZWxlbWVudCB7XG4gICAgLy8gSWYgdGhlIHJpcHBsZSBjb2xvciBpcyByZXNvbHZlcyB0byBhIGNvbG9yICp0eXBlKiwgd2UgY2FuIHVzZSBpdCBkaXJlY3RseSwgb3RoZXJ3aXNlXG4gICAgLy8gKGUuZy4gaXQgcmVzb2x2ZXMgdG8gYSBDU1MgdmFyaWFibGUpIHdlIGZhbGwgYmFjayB0byB1c2luZyB0aGUgY29sb3IgYW5kIHNldHRpbmcgYW4gb3BhY2l0eS5cbiAgICBAaWYgKG1ldGEudHlwZS1vZigkZm9yZWdyb3VuZC1iYXNlKSA9PSBjb2xvcikge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgkZm9yZWdyb3VuZC1iYXNlLCAkY29sb3Itb3BhY2l0eSk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRmb3JlZ3JvdW5kLWJhc2U7XG4gICAgICBvcGFjaXR5OiAkY29sb3Itb3BhY2l0eTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiB0aGVtaW5nLnByaXZhdGUtbGVnYWN5LWdldC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgQGluY2x1ZGUgdGhlbWluZy5wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LXJpcHBsZScpIHtcbiAgICAkY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkdGhlbWUpO1xuICAgIEBpZiAkY29sb3IgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBjb2xvcigkY29sb3IpO1xuICAgIH1cbiAgfVxufVxuIiwiQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnLi4vLi4vdGhlbWluZy90aGVtaW5nJztcblxuQG1peGluIGNvbG9yKCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAkaXMtZGFyay10aGVtZTogbWFwLmdldCgkY29uZmlnLCBpcy1kYXJrKTtcbiAgJHByaW1hcnk6IG1hcC5nZXQoJGNvbmZpZywgcHJpbWFyeSk7XG4gICRhY2NlbnQ6IG1hcC5nZXQoJGNvbmZpZywgYWNjZW50KTtcbiAgJHdhcm46IG1hcC5nZXQoJGNvbmZpZywgd2Fybik7XG4gICRiYWNrZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGJhY2tncm91bmQpO1xuXG4gIC8vIE5PVEUodHJhdmlza2F1Zm1hbik6IFdoaWxlIHRoZSBzcGVjIGNhbGxzIGZvciB0cmFuc2x1Y2VudCBibGFja3Mvd2hpdGVzIGZvciBkaXNhYmxlZCBjb2xvcnMsXG4gIC8vIHRoaXMgZG9lcyBub3Qgd29yayB3ZWxsIHdpdGggZWxlbWVudHMgbGF5ZXJlZCBvbiB0b3Agb2Ygb25lIGFub3RoZXIuIFRvIGdldCBhcm91bmQgdGhpcyB3ZVxuICAvLyBibGVuZCB0aGUgY29sb3JzIHRvZ2V0aGVyIGJhc2VkIG9uIHRoZSBiYXNlIGNvbG9yIGFuZCB0aGUgdGhlbWUgYmFja2dyb3VuZC5cbiAgJHdoaXRlLTMwcGN0LW9wYWNpdHktb24tZGFyazogIzY4Njg2ODtcbiAgJGJsYWNrLTI2cGN0LW9wYWNpdHktb24tbGlnaHQ6ICNiMGIwYjA7XG4gICRkaXNhYmxlZC1jb2xvcjogaWYoJGlzLWRhcmstdGhlbWUsICR3aGl0ZS0zMHBjdC1vcGFjaXR5LW9uLWRhcmssICRibGFjay0yNnBjdC1vcGFjaXR5LW9uLWxpZ2h0KTtcbiAgJGNvbG9yZWQtYm94LXNlbGVjdG9yOiAnLm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZCwgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZSc7XG5cbiAgLm1hdC1wc2V1ZG8tY2hlY2tib3gge1xuICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUobWFwLmdldCgkY29uZmlnLCBmb3JlZ3JvdW5kKSwgc2Vjb25kYXJ5LXRleHQpO1xuXG4gICAgJjo6YWZ0ZXIge1xuICAgICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYmFja2dyb3VuZCwgYmFja2dyb3VuZCk7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1wc2V1ZG8tY2hlY2tib3gtZGlzYWJsZWQge1xuICAgIGNvbG9yOiAkZGlzYWJsZWQtY29sb3I7XG4gIH1cblxuICAubWF0LXByaW1hcnkgLm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZCxcbiAgLm1hdC1wcmltYXJ5IC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGUge1xuICAgIGJhY2tncm91bmQ6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZShtYXAuZ2V0KCRjb25maWcsIHByaW1hcnkpKTtcbiAgfVxuXG4gIC8vIERlZmF1bHQgdG8gdGhlIGFjY2VudCBjb2xvci4gTm90ZSB0aGF0IHRoZSBwc2V1ZG8gY2hlY2tib3hlcyBhcmUgbWVhbnQgdG8gaW5oZXJpdCB0aGVcbiAgLy8gdGhlbWUgZnJvbSB0aGVpciBwYXJlbnQsIHJhdGhlciB0aGFuIGltcGxlbWVudGluZyB0aGVpciBvd24gdGhlbWluZywgd2hpY2ggaXMgd2h5IHdlXG4gIC8vIGRvbid0IGF0dGFjaCB0byB0aGUgYG1hdC0qYCBjbGFzc2VzLiBBbHNvIG5vdGUgdGhhdCB0aGlzIG5lZWRzIHRvIGJlIGJlbG93IGAubWF0LXByaW1hcnlgXG4gIC8vIGluIG9yZGVyIHRvIGFsbG93IGZvciB0aGUgY29sb3IgdG8gYmUgb3ZlcndyaXR0ZW4gaWYgdGhlIGNoZWNrYm94IGlzIGluc2lkZSBhIHBhcmVudCB0aGF0XG4gIC8vIGhhcyBgbWF0LWFjY2VudGAgYW5kIGlzIHBsYWNlZCBpbnNpZGUgYW5vdGhlciBwYXJlbnQgdGhhdCBoYXMgYG1hdC1wcmltYXJ5YC5cbiAgLm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZCxcbiAgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZSxcbiAgLm1hdC1hY2NlbnQgLm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZCxcbiAgLm1hdC1hY2NlbnQgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZSB7XG4gICAgYmFja2dyb3VuZDogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKG1hcC5nZXQoJGNvbmZpZywgYWNjZW50KSk7XG4gIH1cblxuICAubWF0LXdhcm4gLm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZCxcbiAgLm1hdC13YXJuIC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGUge1xuICAgIGJhY2tncm91bmQ6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZShtYXAuZ2V0KCRjb25maWcsIHdhcm4pKTtcbiAgfVxuXG4gIC5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWQsXG4gIC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGUge1xuICAgICYubWF0LXBzZXVkby1jaGVja2JveC1kaXNhYmxlZCB7XG4gICAgICBiYWNrZ3JvdW5kOiAkZGlzYWJsZWQtY29sb3I7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiB0eXBvZ3JhcGh5KCRjb25maWctb3ItdGhlbWUpIHt9XG5cbkBtaXhpbiBfZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZykge1xuICAkdGhlbWU6IHRoZW1pbmcucHJpdmF0ZS1sZWdhY3ktZ2V0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICBAaW5jbHVkZSB0aGVtaW5nLnByaXZhdGUtY2hlY2stZHVwbGljYXRlLXRoZW1lLXN0eWxlcygkdGhlbWUsICdtYXQtcHNldWRvLWNoZWNrYm94Jykge1xuICAgICRjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgJGRlbnNpdHk6IHRoZW1pbmcuZ2V0LWRlbnNpdHktY29uZmlnKCR0aGVtZSk7XG4gICAgJHR5cG9ncmFwaHk6IHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCR0aGVtZSk7XG5cbiAgICBAaWYgJGNvbG9yICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgX2RlbnNpdHkoJGRlbnNpdHkpO1xuICAgIH1cbiAgICBAaWYgJHR5cG9ncmFwaHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5KCR0eXBvZ3JhcGh5KTtcbiAgICB9XG4gIH1cbn1cbiIsIkB1c2UgJ3Nhc3M6bWFwJztcbkB1c2UgJ3RoZW1pbmcvdGhlbWluZyc7XG5AdXNlICcuL3N0eWxlL3ByaXZhdGUnO1xuQHVzZSAnLi9yaXBwbGUvcmlwcGxlLXRoZW1lJztcbkB1c2UgJy4vb3B0aW9uL29wdGlvbi10aGVtZSc7XG5AdXNlICcuL29wdGlvbi9vcHRncm91cC10aGVtZSc7XG5AdXNlICcuL3NlbGVjdGlvbi9wc2V1ZG8tY2hlY2tib3gvcHNldWRvLWNoZWNrYm94LXRoZW1lJztcbkB1c2UgJy4vc3R5bGUvZWxldmF0aW9uJztcblxuXG5AbWl4aW4gY29sb3IoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gIC8vIFdyYXBwZXIgZWxlbWVudCB0aGF0IHByb3ZpZGVzIHRoZSB0aGVtZSBiYWNrZ3JvdW5kIHdoZW4gdGhlIHVzZXIncyBjb250ZW50IGlzbid0XG4gIC8vIGluc2lkZSBvZiBhIGBtYXQtc2lkZW5hdi1jb250YWluZXJgLiBOb3RlIHRoYXQgd2UgbmVlZCB0byBleGNsdWRlIHRoZSBhbXBlcnNhbmRcbiAgLy8gc2VsZWN0b3IgaW4gY2FzZSB0aGUgbWl4aW4gaXMgaW5jbHVkZWQgYXQgdGhlIHRvcCBsZXZlbC5cbiAgLm1hdC1hcHAtYmFja2dyb3VuZCN7aWYoJiwgJywgJi5tYXQtYXBwLWJhY2tncm91bmQnLCAnJyl9IHtcbiAgICAkYmFja2dyb3VuZDogbWFwLmdldCgkY29uZmlnLCBiYWNrZ3JvdW5kKTtcbiAgICAkZm9yZWdyb3VuZDogbWFwLmdldCgkY29uZmlnLCBmb3JlZ3JvdW5kKTtcblxuICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYmFja2dyb3VuZCwgYmFja2dyb3VuZCk7XG4gICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgdGV4dCk7XG4gIH1cblxuICAvLyBQcm92aWRlcyBleHRlcm5hbCBDU1MgY2xhc3NlcyBmb3IgZWFjaCBlbGV2YXRpb24gdmFsdWUuIEVhY2ggQ1NTIGNsYXNzIGlzIGZvcm1hdHRlZCBhc1xuICAvLyBgbWF0LWVsZXZhdGlvbi16JHpWYWx1ZWAgd2hlcmUgYCR6VmFsdWVgIGNvcnJlc3BvbmRzIHRvIHRoZSB6LXNwYWNlIHRvIHdoaWNoIHRoZSBlbGVtZW50IGlzXG4gIC8vIGVsZXZhdGVkLlxuICBAZm9yICR6VmFsdWUgZnJvbSAwIHRocm91Z2ggMjQge1xuICAgIC4je2VsZXZhdGlvbi4kcHJlZml4fSN7JHpWYWx1ZX0ge1xuICAgICAgQGluY2x1ZGUgcHJpdmF0ZS5wcml2YXRlLXRoZW1lLWVsZXZhdGlvbigkelZhbHVlLCAkY29uZmlnKTtcbiAgICB9XG4gIH1cblxuICAvLyBNYXJrZXIgdGhhdCBpcyB1c2VkIHRvIGRldGVybWluZSB3aGV0aGVyIHRoZSB1c2VyIGhhcyBhZGRlZCBhIHRoZW1lIHRvIHRoZWlyIHBhZ2UuXG4gIEBhdC1yb290IHtcbiAgICAubWF0LXRoZW1lLWxvYWRlZC1tYXJrZXIge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gIH1cbn1cblxuLy8gTWl4aW4gdGhhdCByZW5kZXJzIGFsbCBvZiB0aGUgY29yZSBzdHlsZXMgdGhhdCBkZXBlbmQgb24gdGhlIHRoZW1lLlxuQG1peGluIHRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiB0aGVtaW5nLnByaXZhdGUtbGVnYWN5LWdldC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgLy8gV3JhcCB0aGUgc3ViLXRoZW1lIGluY2x1ZGVzIGluIHRoZSBkdXBsaWNhdGUgdGhlbWUgc3R5bGVzIG1peGluLiBUaGlzIGVuc3VyZXMgdGhhdFxuICAvLyB0aGVyZSB3b24ndCBiZSBtdWx0aXBsZSB3YXJuaW5ncy4gZS5nLiBpZiBgbWF0LWNvcmUtdGhlbWVgIHJlcG9ydHMgYSB3YXJuaW5nLCB0aGVuXG4gIC8vIHRoZSBpbXBvcnRlZCB0aGVtZXMgKHN1Y2ggYXMgYG1hdC1yaXBwbGUtdGhlbWVgKSBzaG91bGQgbm90IHJlcG9ydCBhZ2Fpbi5cbiAgQGluY2x1ZGUgdGhlbWluZy5wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LWNvcmUnKSB7XG4gICAgQGluY2x1ZGUgcmlwcGxlLXRoZW1lLnRoZW1lKCR0aGVtZSk7XG4gICAgQGluY2x1ZGUgb3B0aW9uLXRoZW1lLnRoZW1lKCR0aGVtZSk7XG4gICAgQGluY2x1ZGUgb3B0Z3JvdXAtdGhlbWUudGhlbWUoJHRoZW1lKTtcbiAgICBAaW5jbHVkZSBwc2V1ZG8tY2hlY2tib3gtdGhlbWUudGhlbWUoJHRoZW1lKTtcblxuICAgICRjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgQGlmICRjb2xvciAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIGNvbG9yKCRjb2xvcik7XG4gICAgfVxuICB9XG59XG4iLCJAdXNlICdzYXNzOm1hcCc7XG5AdXNlICdzYXNzOm1hdGgnO1xuQHVzZSAnc2FzczptZXRhJztcbkB1c2UgJ3ZhcmlhYmxlcyc7XG5cblxuLy8gQSBjb2xsZWN0aW9uIG9mIG1peGlucyBhbmQgQ1NTIGNsYXNzZXMgdGhhdCBjYW4gYmUgdXNlZCB0byBhcHBseSBlbGV2YXRpb24gdG8gYSBtYXRlcmlhbFxuLy8gZWxlbWVudC5cbi8vIFNlZTogaHR0cHM6Ly9tYXRlcmlhbC5pby9kZXNpZ24vZW52aXJvbm1lbnQvZWxldmF0aW9uLmh0bWxcbi8vIEV4YW1wbGVzOlxuLy9cbi8vXG4vLyAubWF0LWZvbyB7XG4vLyAgIEBpbmNsdWRlICRtYXQtZWxldmF0aW9uKDIpO1xuLy9cbi8vICAgJjphY3RpdmUge1xuLy8gICAgIEBpbmNsdWRlICRtYXQtZWxldmF0aW9uKDgpO1xuLy8gICB9XG4vLyB9XG4vL1xuLy8gPGRpdiBpZD1cImV4dGVybmFsLWNhcmRcIiBjbGFzcz1cIm1hdC1lbGV2YXRpb24tejJcIj48cD5Tb21lIGNvbnRlbnQ8L3A+PC9kaXY+XG4vL1xuLy8gRm9yIGFuIGV4cGxhbmF0aW9uIG9mIHRoZSBkZXNpZ24gYmVoaW5kIGhvdyBlbGV2YXRpb24gaXMgaW1wbGVtZW50ZWQsIHNlZSB0aGUgZGVzaWduIGRvYyBhdFxuLy8gaHR0cHM6Ly9nb28uZ2wvS3EwazlaLlxuXG4vLyBDb2xvcnMgZm9yIHVtYnJhLCBwZW51bWJyYSwgYW5kIGFtYmllbnQgc2hhZG93cy4gQXMgZGVzY3JpYmVkIGluIHRoZSBkZXNpZ24gZG9jLCBlYWNoIGVsZXZhdGlvblxuLy8gbGV2ZWwgaXMgY3JlYXRlZCB1c2luZyBhIHNldCBvZiAzIHNoYWRvdyB2YWx1ZXMsIG9uZSBmb3IgdW1icmEgKHRoZSBzaGFkb3cgcmVwcmVzZW50aW5nIHRoZVxuLy8gc3BhY2UgY29tcGxldGVseSBvYnNjdXJlZCBieSBhbiBvYmplY3QgcmVsYXRpdmUgdG8gaXRzIGxpZ2h0IHNvdXJjZSksIG9uZSBmb3IgcGVudW1icmEgKHRoZVxuLy8gc3BhY2UgcGFydGlhbGx5IG9ic2N1cmVkIGJ5IGFuIG9iamVjdCksIGFuZCBvbmUgZm9yIGFtYmllbnQgKHRoZSBzcGFjZSB3aGljaCBjb250YWlucyB0aGUgb2JqZWN0XG4vLyBpdHNlbGYpLiBGb3IgYSBmdXJ0aGVyIGV4cGxhbmF0aW9uIG9mIHRoZXNlIHRlcm1zIGFuZCB0aGVpciBtZWFuaW5ncywgc2VlXG4vLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9VbWJyYSxfcGVudW1icmFfYW5kX2FudHVtYnJhLlxuXG4vLyBNYXBzIGZvciB0aGUgZGlmZmVyZW50IHNoYWRvdyBzZXRzIGFuZCB0aGVpciB2YWx1ZXMgd2l0aGluIGVhY2ggei1zcGFjZS4gVGhlc2UgdmFsdWVzIHdlcmVcbi8vIGNyZWF0ZWQgYnkgdGFraW5nIGEgZmV3IHJlZmVyZW5jZSBzaGFkb3cgc2V0cyBjcmVhdGVkIGJ5IEdvb2dsZSdzIERlc2lnbmVycyBhbmQgaW50ZXJwb2xhdGluZ1xuLy8gYWxsIG9mIHRoZSB2YWx1ZXMgYmV0d2VlbiB0aGVtLlxuXG5AZnVuY3Rpb24gX2dldC11bWJyYS1tYXAoJGNvbG9yLCAkb3BhY2l0eSkge1xuICAkc2hhZG93LWNvbG9yOiBpZihtZXRhLnR5cGUtb2YoJGNvbG9yKSA9PSBjb2xvciwgcmdiYSgkY29sb3IsICRvcGFjaXR5ICogMC4yKSwgJGNvbG9yKTtcblxuICBAcmV0dXJuIChcbiAgICAwOiAnMHB4IDBweCAwcHggMHB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDE6ICcwcHggMnB4IDFweCAtMXB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDI6ICcwcHggM3B4IDFweCAtMnB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDM6ICcwcHggM3B4IDNweCAtMnB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDQ6ICcwcHggMnB4IDRweCAtMXB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDU6ICcwcHggM3B4IDVweCAtMXB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDY6ICcwcHggM3B4IDVweCAtMXB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDc6ICcwcHggNHB4IDVweCAtMnB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDg6ICcwcHggNXB4IDVweCAtM3B4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDk6ICcwcHggNXB4IDZweCAtM3B4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDEwOiAnMHB4IDZweCA2cHggLTNweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAxMTogJzBweCA2cHggN3B4IC00cHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMTI6ICcwcHggN3B4IDhweCAtNHB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDEzOiAnMHB4IDdweCA4cHggLTRweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAxNDogJzBweCA3cHggOXB4IC00cHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMTU6ICcwcHggOHB4IDlweCAtNXB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDE2OiAnMHB4IDhweCAxMHB4IC01cHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMTc6ICcwcHggOHB4IDExcHggLTVweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAxODogJzBweCA5cHggMTFweCAtNXB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDE5OiAnMHB4IDlweCAxMnB4IC02cHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMjA6ICcwcHggMTBweCAxM3B4IC02cHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMjE6ICcwcHggMTBweCAxM3B4IC02cHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMjI6ICcwcHggMTBweCAxNHB4IC02cHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMjM6ICcwcHggMTFweCAxNHB4IC03cHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMjQ6ICcwcHggMTFweCAxNXB4IC03cHggI3skc2hhZG93LWNvbG9yfSdcbiAgKTtcbn1cblxuQGZ1bmN0aW9uIF9nZXQtcGVudW1icmEtbWFwKCRjb2xvciwgJG9wYWNpdHkpIHtcbiAgJHNoYWRvdy1jb2xvcjogaWYobWV0YS50eXBlLW9mKCRjb2xvcikgPT0gY29sb3IsIHJnYmEoJGNvbG9yLCAkb3BhY2l0eSAqIDAuMTQpLCAkY29sb3IpO1xuXG4gIEByZXR1cm4gKFxuICAgIDA6ICcwcHggMHB4IDBweCAwcHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMTogJzBweCAxcHggMXB4IDBweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAyOiAnMHB4IDJweCAycHggMHB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDM6ICcwcHggM3B4IDRweCAwcHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgNDogJzBweCA0cHggNXB4IDBweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICA1OiAnMHB4IDVweCA4cHggMHB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDY6ICcwcHggNnB4IDEwcHggMHB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDc6ICcwcHggN3B4IDEwcHggMXB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDg6ICcwcHggOHB4IDEwcHggMXB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDk6ICcwcHggOXB4IDEycHggMXB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDEwOiAnMHB4IDEwcHggMTRweCAxcHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMTE6ICcwcHggMTFweCAxNXB4IDFweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAxMjogJzBweCAxMnB4IDE3cHggMnB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDEzOiAnMHB4IDEzcHggMTlweCAycHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMTQ6ICcwcHggMTRweCAyMXB4IDJweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAxNTogJzBweCAxNXB4IDIycHggMnB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDE2OiAnMHB4IDE2cHggMjRweCAycHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMTc6ICcwcHggMTdweCAyNnB4IDJweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAxODogJzBweCAxOHB4IDI4cHggMnB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDE5OiAnMHB4IDE5cHggMjlweCAycHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMjA6ICcwcHggMjBweCAzMXB4IDNweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAyMTogJzBweCAyMXB4IDMzcHggM3B4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDIyOiAnMHB4IDIycHggMzVweCAzcHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMjM6ICcwcHggMjNweCAzNnB4IDNweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAyNDogJzBweCAyNHB4IDM4cHggM3B4ICN7JHNoYWRvdy1jb2xvcn0nXG4gICk7XG59XG5cbkBmdW5jdGlvbiBfZ2V0LWFtYmllbnQtbWFwKCRjb2xvciwgJG9wYWNpdHkpIHtcbiAgJHNoYWRvdy1jb2xvcjogaWYobWV0YS50eXBlLW9mKCRjb2xvcikgPT0gY29sb3IsIHJnYmEoJGNvbG9yLCAkb3BhY2l0eSAqIDAuMTIpLCAkY29sb3IpO1xuXG4gIEByZXR1cm4gKFxuICAgIDA6ICcwcHggMHB4IDBweCAwcHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMTogJzBweCAxcHggM3B4IDBweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAyOiAnMHB4IDFweCA1cHggMHB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDM6ICcwcHggMXB4IDhweCAwcHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgNDogJzBweCAxcHggMTBweCAwcHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgNTogJzBweCAxcHggMTRweCAwcHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgNjogJzBweCAxcHggMThweCAwcHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgNzogJzBweCAycHggMTZweCAxcHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgODogJzBweCAzcHggMTRweCAycHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgOTogJzBweCAzcHggMTZweCAycHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMTA6ICcwcHggNHB4IDE4cHggM3B4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDExOiAnMHB4IDRweCAyMHB4IDNweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAxMjogJzBweCA1cHggMjJweCA0cHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMTM6ICcwcHggNXB4IDI0cHggNHB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDE0OiAnMHB4IDVweCAyNnB4IDRweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAxNTogJzBweCA2cHggMjhweCA1cHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMTY6ICcwcHggNnB4IDMwcHggNXB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDE3OiAnMHB4IDZweCAzMnB4IDVweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAxODogJzBweCA3cHggMzRweCA2cHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMTk6ICcwcHggN3B4IDM2cHggNnB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDIwOiAnMHB4IDhweCAzOHB4IDdweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAyMTogJzBweCA4cHggNDBweCA3cHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMjI6ICcwcHggOHB4IDQycHggN3B4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDIzOiAnMHB4IDlweCA0NHB4IDhweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAyNDogJzBweCA5cHggNDZweCA4cHggI3skc2hhZG93LWNvbG9yfSdcbiAgKTtcbn1cblxuLy8gVGhlIGRlZmF1bHQgZHVyYXRpb24gdmFsdWUgZm9yIGVsZXZhdGlvbiB0cmFuc2l0aW9ucy5cbiR0cmFuc2l0aW9uLWR1cmF0aW9uOiAyODBtcyAhZGVmYXVsdDtcblxuLy8gVGhlIGRlZmF1bHQgZWFzaW5nIHZhbHVlIGZvciBlbGV2YXRpb24gdHJhbnNpdGlvbnMuXG4kdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IHZhcmlhYmxlcy4kZmFzdC1vdXQtc2xvdy1pbi10aW1pbmctZnVuY3Rpb247XG5cbi8vIFRoZSBkZWZhdWx0IGNvbG9yIGZvciBlbGV2YXRpb24gc2hhZG93cy5cbiRjb2xvcjogYmxhY2sgIWRlZmF1bHQ7XG5cbi8vIFRoZSBkZWZhdWx0IG9wYWNpdHkgc2NhbGluZyB2YWx1ZSBmb3IgZWxldmF0aW9uIHNoYWRvd3MuXG4kb3BhY2l0eTogMSAhZGVmYXVsdDtcblxuLy8gUHJlZml4IGZvciBlbGV2YXRpb24tcmVsYXRlZCBzZWxlY3RvcnMuXG4kcHJlZml4OiAnbWF0LWVsZXZhdGlvbi16JztcblxuLy8gQXBwbGllcyB0aGUgY29ycmVjdCBjc3MgcnVsZXMgdG8gYW4gZWxlbWVudCB0byBnaXZlIGl0IHRoZSBlbGV2YXRpb24gc3BlY2lmaWVkIGJ5ICR6VmFsdWUuXG4vLyBUaGUgJHpWYWx1ZSBtdXN0IGJlIGJldHdlZW4gMCBhbmQgMjQuXG5AbWl4aW4gZWxldmF0aW9uKCR6VmFsdWUsICRjb2xvcjogJGNvbG9yLCAkb3BhY2l0eTogJG9wYWNpdHkpIHtcbiAgQGlmIG1ldGEudHlwZS1vZigkelZhbHVlKSAhPSBudW1iZXIgb3Igbm90IG1hdGguaXMtdW5pdGxlc3MoJHpWYWx1ZSkge1xuICAgIEBlcnJvciAnJHpWYWx1ZSBtdXN0IGJlIGEgdW5pdGxlc3MgbnVtYmVyJztcbiAgfVxuICBAaWYgJHpWYWx1ZSA8IDAgb3IgJHpWYWx1ZSA+IDI0IHtcbiAgICBAZXJyb3IgJyR6VmFsdWUgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDI0JztcbiAgfVxuXG4gIGJveC1zaGFkb3c6ICN7bWFwLmdldChfZ2V0LXVtYnJhLW1hcCgkY29sb3IsICRvcGFjaXR5KSwgJHpWYWx1ZSl9LFxuICAgICAgICAgICAgICAje21hcC5nZXQoX2dldC1wZW51bWJyYS1tYXAoJGNvbG9yLCAkb3BhY2l0eSksICR6VmFsdWUpfSxcbiAgICAgICAgICAgICAgI3ttYXAuZ2V0KF9nZXQtYW1iaWVudC1tYXAoJGNvbG9yLCAkb3BhY2l0eSksICR6VmFsdWUpfTtcbn1cblxuLy8gQXBwbGllcyB0aGUgZWxldmF0aW9uIHRvIGFuIGVsZW1lbnQgaW4gYSBtYW5uZXIgdGhhdCBhbGxvd3Ncbi8vIGNvbnN1bWVycyB0byBvdmVycmlkZSBpdCB2aWEgdGhlIE1hdGVyaWFsIGVsZXZhdGlvbiBjbGFzc2VzLlxuQG1peGluIG92ZXJyaWRhYmxlLWVsZXZhdGlvbihcbiAgICAkelZhbHVlLFxuICAgICRjb2xvcjogJGNvbG9yLFxuICAgICRvcGFjaXR5OiAkb3BhY2l0eSkge1xuICAmOm5vdChbY2xhc3MqPScjeyRwcmVmaXh9J10pIHtcbiAgICBAaW5jbHVkZSBlbGV2YXRpb24oJHpWYWx1ZSwgJGNvbG9yLCAkb3BhY2l0eSk7XG4gIH1cbn1cblxuLy8gUmV0dXJucyBhIHN0cmluZyB0aGF0IGNhbiBiZSB1c2VkIGFzIHRoZSB2YWx1ZSBmb3IgYSB0cmFuc2l0aW9uIHByb3BlcnR5IGZvciBlbGV2YXRpb24uXG4vLyBDYWxsaW5nIHRoaXMgZnVuY3Rpb24gZGlyZWN0bHkgaXMgdXNlZnVsIGluIHNpdHVhdGlvbnMgd2hlcmUgYSBjb21wb25lbnQgbmVlZHMgdG8gdHJhbnNpdGlvblxuLy8gbW9yZSB0aGFuIG9uZSBwcm9wZXJ0eS5cbi8vXG4vLyAuZm9vIHtcbi8vICAgdHJhbnNpdGlvbjogbWF0LWVsZXZhdGlvbi10cmFuc2l0aW9uLXByb3BlcnR5LXZhbHVlKCksIG9wYWNpdHkgMTAwbXMgZWFzZTtcbi8vIH1cbkBmdW5jdGlvbiBwcml2YXRlLXRyYW5zaXRpb24tcHJvcGVydHktdmFsdWUoXG4gICAgJGR1cmF0aW9uOiAkdHJhbnNpdGlvbi1kdXJhdGlvbixcbiAgICAkZWFzaW5nOiAkdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24pIHtcbiAgQHJldHVybiBib3gtc2hhZG93ICN7JGR1cmF0aW9ufSAjeyRlYXNpbmd9O1xufVxuXG4vLyBBcHBsaWVzIHRoZSBjb3JyZWN0IGNzcyBydWxlcyBuZWVkZWQgdG8gaGF2ZSBhbiBlbGVtZW50IHRyYW5zaXRpb24gYmV0d2VlbiBlbGV2YXRpb25zLlxuLy8gVGhpcyBtaXhpbiBzaG91bGQgYmUgYXBwbGllZCB0byBlbGVtZW50cyB3aG9zZSBlbGV2YXRpb24gdmFsdWVzIHdpbGwgY2hhbmdlIGRlcGVuZGluZyBvbiB0aGVpclxuLy8gY29udGV4dCAoZS5nLiB3aGVuIGFjdGl2ZSBvciBkaXNhYmxlZCkuXG4vL1xuLy8gTk9URSh0cmF2aXNrYXVmbWFuKTogQm90aCB0aGlzIG1peGluIGFuZCB0aGUgYWJvdmUgZnVuY3Rpb24gdXNlIGRlZmF1bHQgcGFyYW1ldGVycyBzbyB0aGV5IGNhblxuLy8gYmUgdXNlZCBpbiB0aGUgc2FtZSB3YXkgYnkgY2xpZW50cy5cbkBtaXhpbiBlbGV2YXRpb24tdHJhbnNpdGlvbihcbiAgICAkZHVyYXRpb246ICR0cmFuc2l0aW9uLWR1cmF0aW9uLFxuICAgICRlYXNpbmc6ICR0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbikge1xuICB0cmFuc2l0aW9uOiBwcml2YXRlLXRyYW5zaXRpb24tcHJvcGVydHktdmFsdWUoJGR1cmF0aW9uLCAkZWFzaW5nKTtcbn1cbiIsIkB1c2UgJ3Nhc3M6bWFwJztcbkB1c2UgJy4uL2NvcmUvc3R5bGUvcHJpdmF0ZSc7XG5AdXNlICcuLi9jb3JlL3RoZW1pbmcvdGhlbWluZyc7XG5cbkBtaXhpbiBjb2xvcigkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJGZvcmVncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgZm9yZWdyb3VuZCk7XG4gICRiYWNrZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGJhY2tncm91bmQpO1xuXG4gIC5tYXQtYXV0b2NvbXBsZXRlLXBhbmVsIHtcbiAgICBAaW5jbHVkZSBwcml2YXRlLnByaXZhdGUtdGhlbWUtb3ZlcnJpZGFibGUtZWxldmF0aW9uKDQsICRjb25maWcpO1xuICAgIGJhY2tncm91bmQ6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYmFja2dyb3VuZCwgY2FyZCk7XG4gICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgdGV4dCk7XG5cbiAgICAvLyBTZWxlY3RlZCBvcHRpb25zIGluIGF1dG9jb21wbGV0ZXMgc2hvdWxkIG5vdCBiZSBncmF5LCBidXQgd2VcbiAgICAvLyBvbmx5IHdhbnQgdG8gb3ZlcnJpZGUgdGhlIGJhY2tncm91bmQgZm9yIHNlbGVjdGVkIG9wdGlvbnMgaWZcbiAgICAvLyB0aGV5IGFyZSAqbm90KiBpbiBob3ZlciBvciBmb2N1cyBzdGF0ZS4gVGhpcyBjaGFuZ2UgaGFzIHRvIGJlXG4gICAgLy8gbWFkZSBoZXJlIGJlY2F1c2UgYmFzZSBvcHRpb24gc3R5bGVzIGFyZSBzaGFyZWQgYmV0d2VlbiB0aGVcbiAgICAvLyBhdXRvY29tcGxldGUgYW5kIHRoZSBzZWxlY3QuXG4gICAgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkOm5vdCgubWF0LWFjdGl2ZSk6bm90KDpob3Zlcikge1xuICAgICAgYmFja2dyb3VuZDogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLCBjYXJkKTtcblxuICAgICAgJjpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpIHtcbiAgICAgICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgdGV4dCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiB0eXBvZ3JhcGh5KCRjb25maWctb3ItdGhlbWUpIHt9XG5cbkBtaXhpbiBfZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZykge1xuICAkdGhlbWU6IHRoZW1pbmcucHJpdmF0ZS1sZWdhY3ktZ2V0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICBAaW5jbHVkZSB0aGVtaW5nLnByaXZhdGUtY2hlY2stZHVwbGljYXRlLXRoZW1lLXN0eWxlcygkdGhlbWUsICdtYXQtYXV0b2NvbXBsZXRlJykge1xuICAgICRjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgJGRlbnNpdHk6IHRoZW1pbmcuZ2V0LWRlbnNpdHktY29uZmlnKCR0aGVtZSk7XG4gICAgJHR5cG9ncmFwaHk6IHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCR0aGVtZSk7XG5cbiAgICBAaWYgJGNvbG9yICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgX2RlbnNpdHkoJGRlbnNpdHkpO1xuICAgIH1cbiAgICBAaWYgJHR5cG9ncmFwaHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5KCR0eXBvZ3JhcGh5KTtcbiAgICB9XG4gIH1cbn1cbiIsIkB1c2UgJ3Nhc3M6bWFwJztcbkB1c2UgJy4uL2NvcmUvdGhlbWluZy90aGVtaW5nJztcblxuQG1peGluIGNvbG9yKCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAkZm9yZWdyb3VuZDogbWFwLmdldCgkY29uZmlnLCBmb3JlZ3JvdW5kKTtcblxuICAubWF0LWRpdmlkZXIge1xuICAgIGJvcmRlci10b3AtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgZGl2aWRlcik7XG4gIH1cblxuICAubWF0LWRpdmlkZXItdmVydGljYWwge1xuICAgIGJvcmRlci1yaWdodC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBkaXZpZGVyKTtcbiAgfVxufVxuXG5AbWl4aW4gdHlwb2dyYXBoeSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gX2RlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIHRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiB0aGVtaW5nLnByaXZhdGUtbGVnYWN5LWdldC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgQGluY2x1ZGUgdGhlbWluZy5wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LWRpdmlkZXInKSB7XG4gICAgJGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJHRoZW1lKTtcbiAgICAkZGVuc2l0eTogdGhlbWluZy5nZXQtZGVuc2l0eS1jb25maWcoJHRoZW1lKTtcbiAgICAkdHlwb2dyYXBoeTogdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJHRoZW1lKTtcblxuICAgIEBpZiAkY29sb3IgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBjb2xvcigkY29sb3IpO1xuICAgIH1cbiAgICBAaWYgJGRlbnNpdHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBfZGVuc2l0eSgkZGVuc2l0eSk7XG4gICAgfVxuICAgIEBpZiAkdHlwb2dyYXBoeSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIHR5cG9ncmFwaHkoJHR5cG9ncmFwaHkpO1xuICAgIH1cbiAgfVxufVxuIiwiQG1peGluIHByaXZhdGUtZXhwYW5zaW9uLWZvY3VzIHtcbiAgLm1hdC1leHBhbnNpb24tcGFuZWwge1xuICAgICYgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLmNkay1rZXlib2FyZC1mb2N1c2VkLFxuICAgICYgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLmNkay1wcm9ncmFtLWZvY3VzZWQsXG4gICAgJjpub3QoLm1hdC1leHBhbmRlZCkgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyOmhvdmVyIHtcbiAgICAgICY6bm90KFthcmlhLWRpc2FibGVkPSd0cnVlJ10pIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCJAdXNlICdzYXNzOm1hcCc7XG5AdXNlICcuLi90aGVtaW5nL3RoZW1pbmcnO1xuXG4vLyBSZW5kZXJzIGEgZ3JhZGllbnQgZm9yIHNob3dpbmcgdGhlIGRhc2hlZCBsaW5lIHdoZW4gdGhlIGlucHV0IGlzIGRpc2FibGVkLlxuLy8gVW5saWtlIHVzaW5nIGEgYm9yZGVyLCBhIGdyYWRpZW50IGFsbG93cyB1cyB0byBhZGp1c3QgdGhlIHNwYWNpbmcgb2YgdGhlIGRvdHRlZCBsaW5lXG4vLyB0byBtYXRjaCB0aGUgTWF0ZXJpYWwgRGVzaWduIHNwZWMuXG5AbWl4aW4gcHJpdmF0ZS1jb250cm9sLWRpc2FibGVkLXVuZGVybGluZSgkY29sb3IpIHtcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCAkY29sb3IgMCUsICRjb2xvciAzMyUsIHRyYW5zcGFyZW50IDAlKTtcbiAgYmFja2dyb3VuZC1zaXplOiA0cHggMTAwJTtcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14O1xufVxuXG4vLyBGaWd1cmVzIG91dCB0aGUgY29sb3Igb2YgdGhlIHBsYWNlaG9sZGVyIGZvciBhIGZvcm0gY29udHJvbC5cbi8vIFVzZWQgcHJpbWFyaWx5IHRvIHByZXZlbnQgdGhlIHZhcmlvdXMgZm9ybSBjb250cm9scyBmcm9tXG4vLyBiZWNvbWluZyBvdXQgb2Ygc3luYyBzaW5jZSB0aGVzZSBjb2xvcnMgYXJlbid0IGluIGEgcGFsZXR0ZS5cbkBmdW5jdGlvbiBwcml2YXRlLWNvbnRyb2wtcGxhY2Vob2xkZXItY29sb3IoJGNvbmZpZykge1xuICAkZm9yZWdyb3VuZDogbWFwLmdldCgkY29uZmlnLCBmb3JlZ3JvdW5kKTtcbiAgJGlzLWRhcmstdGhlbWU6IG1hcC5nZXQoJGNvbmZpZywgaXMtZGFyayk7XG4gIEByZXR1cm4gdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBzZWNvbmRhcnktdGV4dCxcbiAgICBpZigkaXMtZGFyay10aGVtZSwgMC41LCAwLjQyKSk7XG59XG4iLCJAdXNlICdzYXNzOm1hcCc7XG5AdXNlICcuLi9jb3JlL3RoZW1pbmcvdGhlbWluZyc7XG5AdXNlICcuLi9jb3JlL3N0eWxlL2Zvcm0tY29tbW9uJztcblxuXG4vLyBUaGVtZSBzdHlsZXMgdGhhdCBvbmx5IGFwcGx5IHRvIHRoZSBzdGFuZGFyZCBhcHBlYXJhbmNlIG9mIHRoZSBmb3JtLWZpZWxkLlxuXG5AbWl4aW4gc3RhbmRhcmQtY29sb3IoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRmb3JlZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGZvcmVncm91bmQpO1xuICAkaXMtZGFyay10aGVtZTogbWFwLmdldCgkY29uZmlnLCBpcy1kYXJrKTtcbiAgJHVuZGVybGluZS1jb2xvcjpcbiAgICB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIGRpdmlkZXIsIGlmKCRpcy1kYXJrLXRoZW1lLCAwLjcsIDAuNDIpKTtcblxuICAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1zdGFuZGFyZCB7XG4gICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZSB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdW5kZXJsaW5lLWNvbG9yO1xuICAgIH1cblxuICAgICYubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZSB7XG4gICAgICBAaW5jbHVkZSBmb3JtLWNvbW1vbi5wcml2YXRlLWNvbnRyb2wtZGlzYWJsZWQtdW5kZXJsaW5lKCR1bmRlcmxpbmUtY29sb3IpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gc3RhbmRhcmQtdHlwb2dyYXBoeSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gcHJpdmF0ZS1mb3JtLWZpZWxkLXN0YW5kYXJkLWRlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIHN0YW5kYXJkLXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiB0aGVtaW5nLnByaXZhdGUtbGVnYWN5LWdldC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgQGluY2x1ZGUgdGhlbWluZy5wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LWZvcm0tZmllbGQtc3RhbmRhcmQnKSB7XG4gICAgJGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJHRoZW1lKTtcbiAgICAkZGVuc2l0eTogdGhlbWluZy5nZXQtZGVuc2l0eS1jb25maWcoJHRoZW1lKTtcbiAgICAkdHlwb2dyYXBoeTogdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJHRoZW1lKTtcblxuICAgIEBpZiAkY29sb3IgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBzdGFuZGFyZC1jb2xvcigkY29sb3IpO1xuICAgIH1cbiAgICBAaWYgJGRlbnNpdHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBwcml2YXRlLWZvcm0tZmllbGQtc3RhbmRhcmQtZGVuc2l0eSgkZGVuc2l0eSk7XG4gICAgfVxuICAgIEBpZiAkdHlwb2dyYXBoeSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIHN0YW5kYXJkLXR5cG9ncmFwaHkoJHR5cG9ncmFwaHkpO1xuICAgIH1cbiAgfVxufVxuIiwiQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnLi4vY29yZS90aGVtaW5nL3RoZW1pbmcnO1xuXG5AbWl4aW4gY29sb3IoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRwcmltYXJ5OiBtYXAuZ2V0KCRjb25maWcsIHByaW1hcnkpO1xuICAkYWNjZW50OiBtYXAuZ2V0KCRjb25maWcsIGFjY2VudCk7XG4gICR3YXJuOiBtYXAuZ2V0KCRjb25maWcsIHdhcm4pO1xuICAkYmFja2dyb3VuZDogbWFwLmdldCgkY29uZmlnLCBiYWNrZ3JvdW5kKTtcbiAgJGZvcmVncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgZm9yZWdyb3VuZCk7XG5cbiAgLm1hdC1pY29uIHtcbiAgICAmLm1hdC1wcmltYXJ5IHtcbiAgICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHByaW1hcnksIHRleHQpO1xuICAgIH1cblxuICAgICYubWF0LWFjY2VudCB7XG4gICAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRhY2NlbnQsIHRleHQpO1xuICAgIH1cblxuICAgICYubWF0LXdhcm4ge1xuICAgICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkd2FybiwgdGV4dCk7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiB0eXBvZ3JhcGh5KCRjb25maWctb3ItdGhlbWUpIHt9XG5cbkBtaXhpbiBfZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZykge1xuICAkdGhlbWU6IHRoZW1pbmcucHJpdmF0ZS1sZWdhY3ktZ2V0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICBAaW5jbHVkZSB0aGVtaW5nLnByaXZhdGUtY2hlY2stZHVwbGljYXRlLXRoZW1lLXN0eWxlcygkdGhlbWUsICdtYXQtaWNvbicpIHtcbiAgICAkY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkdGhlbWUpO1xuICAgICRkZW5zaXR5OiB0aGVtaW5nLmdldC1kZW5zaXR5LWNvbmZpZygkdGhlbWUpO1xuICAgICR0eXBvZ3JhcGh5OiB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkdGhlbWUpO1xuXG4gICAgQGlmICRjb2xvciAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIGNvbG9yKCRjb2xvcik7XG4gICAgfVxuICAgIEBpZiAkZGVuc2l0eSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIF9kZW5zaXR5KCRkZW5zaXR5KTtcbiAgICB9XG4gICAgQGlmICR0eXBvZ3JhcGh5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgdHlwb2dyYXBoeSgkdHlwb2dyYXBoeSk7XG4gICAgfVxuICB9XG59XG5cbiIsIi8vIHN0eWxlbGludC1kaXNhYmxlIG1hdGVyaWFsL25vLXByZWZpeGVzXG5AbWl4aW4gdXNlci1zZWxlY3QoJHZhbHVlKSB7XG4gIC13ZWJraXQtdXNlci1zZWxlY3Q6ICR2YWx1ZTtcbiAgLW1vei11c2VyLXNlbGVjdDogJHZhbHVlO1xuICAtbXMtdXNlci1zZWxlY3Q6ICR2YWx1ZTtcbiAgdXNlci1zZWxlY3Q6ICR2YWx1ZTtcbn1cblxuQG1peGluIGlucHV0LXBsYWNlaG9sZGVyIHtcbiAgJjo6cGxhY2Vob2xkZXIge1xuICAgIEBjb250ZW50O1xuICB9XG5cbiAgJjo6LW1vei1wbGFjZWhvbGRlciB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cblxuICAmOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHtcbiAgICBAY29udGVudDtcbiAgfVxuXG4gICY6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG5AbWl4aW4gY3Vyc29yLWdyYWIge1xuICBjdXJzb3I6IC13ZWJraXQtZ3JhYjtcbiAgY3Vyc29yOiBncmFiO1xufVxuXG5AbWl4aW4gY3Vyc29yLWdyYWJiaW5nIHtcbiAgY3Vyc29yOiAtd2Via2l0LWdyYWJiaW5nO1xuICBjdXJzb3I6IGdyYWJiaW5nO1xufVxuXG5AbWl4aW4gYmFja2ZhY2UtdmlzaWJpbGl0eSgkdmFsdWUpIHtcbiAgLXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5OiAkdmFsdWU7XG4gIGJhY2tmYWNlLXZpc2liaWxpdHk6ICR2YWx1ZTtcbn1cblxuQG1peGluIHBvc2l0aW9uLXN0aWNreSgkaW1wb3J0YW50OiBmYWxzZSkge1xuICBwb3NpdGlvbjogLXdlYmtpdC1zdGlja3kgI3tpZigkaW1wb3J0YW50LCAnIWltcG9ydGFudCcsICcnKX07XG4gIHBvc2l0aW9uOiBzdGlja3kgI3tpZigkaW1wb3J0YW50LCAnIWltcG9ydGFudCcsICcnKX07XG59XG4vLyBzdHlsZWxpbnQtZW5hYmxlXG4iLCJAdXNlICdzYXNzOm1hcCc7XG5AdXNlICdzYXNzOm1ldGEnO1xuQHVzZSAnc2Fzczpjb2xvcic7XG5AdXNlICcuLi9jb3JlL3RoZW1pbmcvdGhlbWluZyc7XG5cbi8vIEFwcHJveGltYXRlcyB0aGUgY29ycmVjdCBidWZmZXIgY29sb3IgYnkgdXNpbmcgYSBtaXggYmV0d2VlbiB0aGUgdGhlbWUgY29sb3Jcbi8vIGFuZCB0aGUgdGhlbWUncyBiYWNrZ3JvdW5kIGNvbG9yLlxuQGZ1bmN0aW9uIF9nZXQtYnVmZmVyLWNvbG9yKCR0aGVtZSwgJGJhY2tncm91bmQpIHtcbiAgJHRoZW1lLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHRoZW1lKTtcbiAgLy8gUmV0dXJuIGZhbGxiYWNrIGNvbG9yIGlmIHRoZSB0aGVtZSB1c2VzIHZhcmlhYmxlcyB0byBkZWZpbmUgY29sb3JzLlxuICBAaWYgKG1ldGEudHlwZS1vZigkdGhlbWUtY29sb3IpICE9ICdjb2xvcicgb3IgbWV0YS50eXBlLW9mKCRiYWNrZ3JvdW5kKSAhPSAnY29sb3InKSB7XG4gICAgQHJldHVybiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHRoZW1lLCBsaWdodGVyKTtcbiAgfVxuICBAcmV0dXJuIGNvbG9yLm1peCgkdGhlbWUtY29sb3IsICRiYWNrZ3JvdW5kLCAkd2VpZ2h0OiAyNSUpO1xufVxuXG5AbWl4aW4gY29sb3IoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRwcmltYXJ5OiBtYXAuZ2V0KCRjb25maWcsIHByaW1hcnkpO1xuICAkYWNjZW50OiBtYXAuZ2V0KCRjb25maWcsIGFjY2VudCk7XG4gICR3YXJuOiBtYXAuZ2V0KCRjb25maWcsIHdhcm4pO1xuICAkYmFja2dyb3VuZDogbWFwLmdldChtYXAuZ2V0KCRjb25maWcsIGJhY2tncm91bmQpLCBiYWNrZ3JvdW5kKTtcblxuICAubWF0LXByb2dyZXNzLWJhci1iYWNrZ3JvdW5kIHtcbiAgICBmaWxsOiBfZ2V0LWJ1ZmZlci1jb2xvcigkcHJpbWFyeSwgJGJhY2tncm91bmQpO1xuICB9XG5cbiAgLm1hdC1wcm9ncmVzcy1iYXItYnVmZmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBfZ2V0LWJ1ZmZlci1jb2xvcigkcHJpbWFyeSwgJGJhY2tncm91bmQpO1xuICB9XG5cbiAgLm1hdC1wcm9ncmVzcy1iYXItZmlsbDo6YWZ0ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkcHJpbWFyeSk7XG4gIH1cblxuICAubWF0LXByb2dyZXNzLWJhci5tYXQtYWNjZW50IHtcbiAgICAubWF0LXByb2dyZXNzLWJhci1iYWNrZ3JvdW5kIHtcbiAgICAgIGZpbGw6IF9nZXQtYnVmZmVyLWNvbG9yKCRhY2NlbnQsICRiYWNrZ3JvdW5kKTtcbiAgICB9XG5cbiAgICAubWF0LXByb2dyZXNzLWJhci1idWZmZXIge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogX2dldC1idWZmZXItY29sb3IoJGFjY2VudCwgJGJhY2tncm91bmQpO1xuICAgIH1cblxuICAgIC5tYXQtcHJvZ3Jlc3MtYmFyLWZpbGw6OmFmdGVyIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYWNjZW50KTtcbiAgICB9XG4gIH1cblxuICAubWF0LXByb2dyZXNzLWJhci5tYXQtd2FybiB7XG4gICAgLm1hdC1wcm9ncmVzcy1iYXItYmFja2dyb3VuZCB7XG4gICAgICBmaWxsOiBfZ2V0LWJ1ZmZlci1jb2xvcigkd2FybiwgJGJhY2tncm91bmQpO1xuICAgIH1cblxuICAgIC5tYXQtcHJvZ3Jlc3MtYmFyLWJ1ZmZlciB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBfZ2V0LWJ1ZmZlci1jb2xvcigkd2FybiwgJGJhY2tncm91bmQpO1xuICAgIH1cblxuICAgIC5tYXQtcHJvZ3Jlc3MtYmFyLWZpbGw6OmFmdGVyIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkd2Fybik7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiB0eXBvZ3JhcGh5KCRjb25maWctb3ItdGhlbWUpIHt9XG5cbkBtaXhpbiBfZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZykge1xuICAkdGhlbWU6IHRoZW1pbmcucHJpdmF0ZS1sZWdhY3ktZ2V0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICBAaW5jbHVkZSB0aGVtaW5nLnByaXZhdGUtY2hlY2stZHVwbGljYXRlLXRoZW1lLXN0eWxlcygkdGhlbWUsICdtYXQtcHJvZ3Jlc3MtYmFyJykge1xuICAgICRjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgJGRlbnNpdHk6IHRoZW1pbmcuZ2V0LWRlbnNpdHktY29uZmlnKCR0aGVtZSk7XG4gICAgJHR5cG9ncmFwaHk6IHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCR0aGVtZSk7XG5cbiAgICBAaWYgJGNvbG9yICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgX2RlbnNpdHkoJGRlbnNpdHkpO1xuICAgIH1cbiAgICBAaWYgJHR5cG9ncmFwaHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5KCR0eXBvZ3JhcGh5KTtcbiAgICB9XG4gIH1cbn1cblxuIiwiQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnLi4vY29yZS90aGVtaW5nL3RoZW1pbmcnO1xuXG5AbWl4aW4gY29sb3IoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRwcmltYXJ5OiBtYXAuZ2V0KCRjb25maWcsIHByaW1hcnkpO1xuICAkYWNjZW50OiBtYXAuZ2V0KCRjb25maWcsIGFjY2VudCk7XG4gICR3YXJuOiBtYXAuZ2V0KCRjb25maWcsIHdhcm4pO1xuXG4gIC5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lciwgLm1hdC1zcGlubmVyIHtcbiAgICBjaXJjbGUge1xuICAgICAgc3Ryb2tlOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHByaW1hcnkpO1xuICAgIH1cblxuICAgICYubWF0LWFjY2VudCBjaXJjbGUge1xuICAgICAgc3Ryb2tlOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGFjY2VudCk7XG4gICAgfVxuXG4gICAgJi5tYXQtd2FybiBjaXJjbGUge1xuICAgICAgc3Ryb2tlOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHdhcm4pO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gdHlwb2dyYXBoeSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gX2RlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIHRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiB0aGVtaW5nLnByaXZhdGUtbGVnYWN5LWdldC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgQGluY2x1ZGUgdGhlbWluZy5wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LXByb2dyZXNzLXNwaW5uZXInKSB7XG4gICAgJGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJHRoZW1lKTtcbiAgICAkZGVuc2l0eTogdGhlbWluZy5nZXQtZGVuc2l0eS1jb25maWcoJHRoZW1lKTtcbiAgICAkdHlwb2dyYXBoeTogdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJHRoZW1lKTtcblxuICAgIEBpZiAkY29sb3IgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBjb2xvcigkY29sb3IpO1xuICAgIH1cbiAgICBAaWYgJGRlbnNpdHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBfZGVuc2l0eSgkZGVuc2l0eSk7XG4gICAgfVxuICAgIEBpZiAkdHlwb2dyYXBoeSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIHR5cG9ncmFwaHkoJHR5cG9ncmFwaHkpO1xuICAgIH1cbiAgfVxufVxuIiwiQHVzZSAnc2Fzczpjb2xvcic7XG5AdXNlICdzYXNzOm1hcCc7XG5AdXNlICdzYXNzOm1ldGEnO1xuQHVzZSAnLi4vY29yZS9zdHlsZS9wcml2YXRlJztcbkB1c2UgJy4uL2NvcmUvdGhlbWluZy90aGVtaW5nJztcblxuQG1peGluIGNvbG9yKCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAkcHJpbWFyeTogbWFwLmdldCgkY29uZmlnLCBwcmltYXJ5KTtcbiAgJGFjY2VudDogbWFwLmdldCgkY29uZmlnLCBhY2NlbnQpO1xuICAkd2FybjogbWFwLmdldCgkY29uZmlnLCB3YXJuKTtcbiAgJGJhY2tncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgYmFja2dyb3VuZCk7XG4gICRmb3JlZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGZvcmVncm91bmQpO1xuXG4gICRkcmF3ZXItYmFja2dyb3VuZC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLCBkaWFsb2cpO1xuICAkZHJhd2VyLWNvbnRhaW5lci1iYWNrZ3JvdW5kLWNvbG9yOiAgdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLCBiYWNrZ3JvdW5kKTtcbiAgJGRyYXdlci1wdXNoLWJhY2tncm91bmQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYmFja2dyb3VuZCwgZGlhbG9nKTtcbiAgJGRyYXdlci1zaWRlLWJvcmRlcjogc29saWQgMXB4IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgZGl2aWRlcik7XG5cbiAgLm1hdC1kcmF3ZXItY29udGFpbmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZHJhd2VyLWNvbnRhaW5lci1iYWNrZ3JvdW5kLWNvbG9yO1xuICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIHRleHQpO1xuICB9XG5cbiAgLm1hdC1kcmF3ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRkcmF3ZXItYmFja2dyb3VuZC1jb2xvcjtcbiAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCB0ZXh0KTtcblxuICAgICYubWF0LWRyYXdlci1wdXNoIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRkcmF3ZXItcHVzaC1iYWNrZ3JvdW5kLWNvbG9yO1xuICAgIH1cblxuICAgICY6bm90KC5tYXQtZHJhd2VyLXNpZGUpIHtcbiAgICAgIC8vIFRoZSBlbGV2YXRpb24gb2Ygei0xNiBpcyBub3RlZCBpbiB0aGUgZGVzaWduIHNwZWNpZmljYXRpb25zLlxuICAgICAgLy8gU2VlIGh0dHBzOi8vbWF0ZXJpYWwuaW8vZGVzaWduL2NvbXBvbmVudHMvbmF2aWdhdGlvbi1kcmF3ZXIuaHRtbFxuICAgICAgQGluY2x1ZGUgcHJpdmF0ZS5wcml2YXRlLXRoZW1lLWVsZXZhdGlvbigxNiwgJGNvbmZpZyk7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1kcmF3ZXItc2lkZSB7XG4gICAgYm9yZGVyLXJpZ2h0OiAkZHJhd2VyLXNpZGUtYm9yZGVyO1xuXG4gICAgJi5tYXQtZHJhd2VyLWVuZCB7XG4gICAgICBib3JkZXItbGVmdDogJGRyYXdlci1zaWRlLWJvcmRlcjtcbiAgICAgIGJvcmRlci1yaWdodDogbm9uZTtcbiAgICB9XG4gIH1cblxuICBbZGlyPSdydGwnXSAubWF0LWRyYXdlci1zaWRlIHtcbiAgICBib3JkZXItbGVmdDogJGRyYXdlci1zaWRlLWJvcmRlcjtcbiAgICBib3JkZXItcmlnaHQ6IG5vbmU7XG5cbiAgICAmLm1hdC1kcmF3ZXItZW5kIHtcbiAgICAgIGJvcmRlci1sZWZ0OiBub25lO1xuICAgICAgYm9yZGVyLXJpZ2h0OiAkZHJhd2VyLXNpZGUtYm9yZGVyO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtZHJhd2VyLWJhY2tkcm9wLm1hdC1kcmF3ZXItc2hvd24ge1xuICAgICRvcGFjaXR5OiAwLjY7XG4gICAgJGJhY2tkcm9wLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGJhY2tncm91bmQsIGNhcmQsICRvcGFjaXR5KTtcblxuICAgIEBpZiAobWV0YS50eXBlLW9mKCRiYWNrZHJvcC1jb2xvcikgPT0gY29sb3IpIHtcbiAgICAgIC8vIFdlIHVzZSBpbnZlcnQoKSBoZXJlIHRvIGhhdmUgdGhlIGRhcmtlbiB0aGUgYmFja2dyb3VuZCBjb2xvciBleHBlY3RlZCB0byBiZSB1c2VkLiBJZiB0aGVcbiAgICAgIC8vIGJhY2tncm91bmQgaXMgbGlnaHQsIHdlIHVzZSBhIGRhcmsgYmFja2Ryb3AuIElmIHRoZSBiYWNrZ3JvdW5kIGlzIGRhcmssXG4gICAgICAvLyB3ZSB1c2UgYSBsaWdodCBiYWNrZHJvcC5cbiAgICAgIGJhY2tncm91bmQtY29sb3I6IGNvbG9yLmludmVydCgkYmFja2Ryb3AtY29sb3IpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAvLyBJZiB3ZSBjb3VsZG4ndCByZXNvbHZlIHRoZSBiYWNrZHJvcCBjb2xvciB0byBhIGNvbG9yIHZhbHVlLCBmYWxsIGJhY2sgdG8gdXNpbmdcbiAgICAgIC8vIGBvcGFjaXR5YCB0byBtYWtlIGl0IG9wYXF1ZSBzaW5jZSBpdHMgZW5kIHZhbHVlIGNvdWxkIGJlIGEgc29saWQgY29sb3IuXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFja2Ryb3AtY29sb3I7XG4gICAgICBvcGFjaXR5OiAkb3BhY2l0eTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHR5cG9ncmFwaHkoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIF9kZW5zaXR5KCRjb25maWctb3ItdGhlbWUpIHt9XG5cbkBtaXhpbiB0aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKSB7XG4gICR0aGVtZTogdGhlbWluZy5wcml2YXRlLWxlZ2FjeS1nZXQtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZyk7XG4gIEBpbmNsdWRlIHRoZW1pbmcucHJpdmF0ZS1jaGVjay1kdXBsaWNhdGUtdGhlbWUtc3R5bGVzKCR0aGVtZSwgJ21hdC1zaWRlbmF2Jykge1xuICAgICRjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgJGRlbnNpdHk6IHRoZW1pbmcuZ2V0LWRlbnNpdHktY29uZmlnKCR0aGVtZSk7XG4gICAgJHR5cG9ncmFwaHk6IHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCR0aGVtZSk7XG5cbiAgICBAaWYgJGNvbG9yICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgX2RlbnNpdHkoJGRlbnNpdHkpO1xuICAgIH1cbiAgICBAaWYgJHR5cG9ncmFwaHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5KCR0eXBvZ3JhcGh5KTtcbiAgICB9XG4gIH1cbn1cbiIsIkB1c2UgJ3Nhc3M6Y29sb3InO1xuQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnc2FzczptZXRhJztcbkB1c2UgJy4uL2NvcmUvdGhlbWluZy90aGVtaW5nJztcblxuQG1peGluIGNvbG9yKCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAkYmFja2dyb3VuZDogbWFwLmdldCgkY29uZmlnLCBiYWNrZ3JvdW5kKTtcbiAgJGZvcmVncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgZm9yZWdyb3VuZCk7XG5cbiAgLm1hdC1zb3J0LWhlYWRlci1hcnJvdyB7XG4gICAgJHRhYmxlLWJhY2tncm91bmQ6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYmFja2dyb3VuZCwgJ2NhcmQnKTtcbiAgICAkdGV4dC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBzZWNvbmRhcnktdGV4dCk7XG5cbiAgICAvLyBCZWNhdXNlIHRoZSBhcnJvdyBpcyBtYWRlIHVwIG9mIG11bHRpcGxlIGVsZW1lbnRzIHRoYXQgYXJlIHN0YWNrZWQgb24gdG9wIG9mIGVhY2ggb3RoZXIsXG4gICAgLy8gd2UgY2FuJ3QgdXNlIHRoZSBzZW1pLXRyYW5zcGFyZW50IGNvbG9yIGZyb20gdGhlIHRoZW1lIGRpcmVjdGx5LiBJZiB0aGUgdmFsdWUgaXMgYSBjb2xvclxuICAgIC8vICp0eXBlKiwgd2UgY29udmVydCBpdCBpbnRvIGEgc29saWQgY29sb3IgYnkgdGFraW5nIHRoZSBvcGFjaXR5IGZyb20gdGhlIHJnYmEgdmFsdWUgYW5kXG4gICAgLy8gdXNpbmcgdGhlIHZhbHVlIHRvIGRldGVybWluZSB0aGUgcGVyY2VudGFnZSBvZiB0aGUgYmFja2dyb3VuZCB0byBwdXQgaW50byBmb3JlZ3JvdW5kXG4gICAgLy8gd2hlbiBtaXhpbmcgdGhlIGNvbG9ycyB0b2dldGhlci4gT3RoZXJ3aXNlLCBpZiBpdCByZXNvbHZlcyB0byBzb21ldGhpbmcgZGlmZmVyZW50XG4gICAgLy8gKGUuZy4gaXQgcmVzb2x2ZXMgdG8gYSBDU1MgdmFyaWFibGUpLCB3ZSB1c2UgdGhlIGNvbG9yIGRpcmVjdGx5LlxuICAgIEBpZiAobWV0YS50eXBlLW9mKCR0YWJsZS1iYWNrZ3JvdW5kKSA9PSBjb2xvciBhbmQgbWV0YS50eXBlLW9mKCR0ZXh0LWNvbG9yKSA9PSBjb2xvcikge1xuICAgICAgJHRleHQtb3BhY2l0eTogb3BhY2l0eSgkdGV4dC1jb2xvcik7XG4gICAgICBjb2xvcjogY29sb3IubWl4KCR0YWJsZS1iYWNrZ3JvdW5kLCByZ2JhKCR0ZXh0LWNvbG9yLCAxKSwgKDEgLSAkdGV4dC1vcGFjaXR5KSAqIDEwMCUpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBjb2xvcjogJHRleHQtY29sb3I7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiB0eXBvZ3JhcGh5KCRjb25maWctb3ItdGhlbWUpIHt9XG5cbkBtaXhpbiBfZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZykge1xuICAkdGhlbWU6IHRoZW1pbmcucHJpdmF0ZS1sZWdhY3ktZ2V0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICBAaW5jbHVkZSB0aGVtaW5nLnByaXZhdGUtY2hlY2stZHVwbGljYXRlLXRoZW1lLXN0eWxlcygkdGhlbWUsICdtYXQtc29ydCcpIHtcbiAgICAkY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkdGhlbWUpO1xuICAgICRkZW5zaXR5OiB0aGVtaW5nLmdldC1kZW5zaXR5LWNvbmZpZygkdGhlbWUpO1xuICAgICR0eXBvZ3JhcGh5OiB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkdGhlbWUpO1xuXG4gICAgQGlmICRjb2xvciAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIGNvbG9yKCRjb2xvcik7XG4gICAgfVxuICAgIEBpZiAkZGVuc2l0eSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIF9kZW5zaXR5KCRkZW5zaXR5KTtcbiAgICB9XG4gICAgQGlmICR0eXBvZ3JhcGh5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgdHlwb2dyYXBoeSgkdHlwb2dyYXBoeSk7XG4gICAgfVxuICB9XG59XG4iLCIvKiBCcmVha3BvaW50cyBmb3IgTWVkaWEgUXVlcmllcyAqL1xuXG5AbWl4aW4gZm9yLXBob25lLW9ubHkge1xuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGggOiA1NzZweCkgeyBAY29udGVudDsgfVxufVxuQG1peGluIGZvci10YWJsZXQge1xuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDc2OHB4KSB7IEBjb250ZW50OyB9XG59XG5AbWl4aW4gZm9yLWRlc2t0b3Age1xuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDk5MnB4KSB7IEBjb250ZW50OyB9XG59XG5AbWl4aW4gZm9yLWRlc2t0b3AteGwge1xuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDEyMDBweCkgeyBAY29udGVudDsgfVxufVxuIl19 */\";","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJjb25maXJtYXRpb24tZGlhbG9nLmNvbXBvbmVudC5zY3NzIn0= */\";","export default \".mf-grid-table {\\n width: 100%;\\n}\\n.mf-grid-table .mat-header-cell {\\n font-size: 14px;\\n font-weight: 700;\\n}\\n.mf-grid-table .mat-cell {\\n font-size: 12px;\\n font-weight: 500;\\n}\\n.mf-grid-table .detail-row {\\n height: 0;\\n}\\n.mf-grid-table .detail-row .element-detail-wrapper {\\n overflow: hidden;\\n}\\n.mf-grid-table .detail-row .element-detail-wrapper .element-detail {\\n padding: 8px;\\n margin: 8px 0;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1mLWdyaWQuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDRSxXQUFBO0FBQ0Y7QUFDRTtFQUNFLGVBQUE7RUFDQSxnQkFBQTtBQUNKO0FBRUU7RUFDRSxlQUFBO0VBQ0EsZ0JBQUE7QUFBSjtBQUdFO0VBQ0UsU0FBQTtBQURKO0FBR0k7RUFDRSxnQkFBQTtBQUROO0FBRU07RUFDRSxZQUFBO0VBQ0EsYUFBQTtBQUFSIiwiZmlsZSI6Im1mLWdyaWQuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIubWYtZ3JpZC10YWJsZSB7XG4gIHdpZHRoOiAxMDAlO1xuXG4gIC5tYXQtaGVhZGVyLWNlbGwge1xuICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICB9XG5cbiAgLm1hdC1jZWxsIHtcbiAgICBmb250LXNpemU6IDEycHg7XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgfVxuXG4gIC5kZXRhaWwtcm93IHtcbiAgICBoZWlnaHQ6IDA7XG5cbiAgICAuZWxlbWVudC1kZXRhaWwtd3JhcHBlciB7XG4gICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgLmVsZW1lbnQtZGV0YWlsIHtcbiAgICAgICAgcGFkZGluZzogOHB4O1xuICAgICAgICBtYXJnaW46IDhweCAwO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19 */\";","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJtZm4tbW9kYWwuY29tcG9uZW50LnNjc3MifQ== */\";","export default \"@import url(\\\"//fonts.googleapis.com/icon?family=Material+Icons\\\");\\n/* You can add global styles to this file, and also import other style files */\\n.mat-badge-content {\\n font-weight: 600;\\n font-size: 12px;\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n}\\n.mat-badge-small .mat-badge-content {\\n font-size: 9px;\\n}\\n.mat-badge-large .mat-badge-content {\\n font-size: 24px;\\n}\\n.mat-h1, .mat-headline, .mat-typography h1 {\\n font: 400 24px/32px Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n letter-spacing: normal;\\n margin: 0 0 16px;\\n}\\n.mat-h2, .mat-title, .mat-typography h2 {\\n font: 500 20px/32px Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n letter-spacing: normal;\\n margin: 0 0 16px;\\n}\\n.mat-h3, .mat-subheading-2, .mat-typography h3 {\\n font: 400 16px/28px Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n letter-spacing: normal;\\n margin: 0 0 16px;\\n}\\n.mat-h4, .mat-subheading-1, .mat-typography h4 {\\n font: 400 15px/24px Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n letter-spacing: normal;\\n margin: 0 0 16px;\\n}\\n.mat-h5, .mat-typography h5 {\\n font: 400 calc(14px * 0.83)/20px Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n margin: 0 0 12px;\\n}\\n.mat-h6, .mat-typography h6 {\\n font: 400 calc(14px * 0.67)/20px Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n margin: 0 0 12px;\\n}\\n.mat-body-strong, .mat-body-2 {\\n font: 500 14px/24px Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n letter-spacing: normal;\\n}\\n.mat-body, .mat-body-1, .mat-typography {\\n font: 400 14px/20px Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n letter-spacing: normal;\\n}\\n.mat-body p, .mat-body-1 p, .mat-typography p {\\n margin: 0 0 12px;\\n}\\n.mat-small, .mat-caption {\\n font: 400 12px/20px Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n letter-spacing: normal;\\n}\\n.mat-display-4, .mat-typography .mat-display-4 {\\n font: 300 112px/112px Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n letter-spacing: -0.05em;\\n margin: 0 0 56px;\\n}\\n.mat-display-3, .mat-typography .mat-display-3 {\\n font: 400 56px/56px Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n letter-spacing: -0.02em;\\n margin: 0 0 64px;\\n}\\n.mat-display-2, .mat-typography .mat-display-2 {\\n font: 400 45px/48px Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n letter-spacing: -0.005em;\\n margin: 0 0 64px;\\n}\\n.mat-display-1, .mat-typography .mat-display-1 {\\n font: 400 34px/40px Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n letter-spacing: normal;\\n margin: 0 0 64px;\\n}\\n.mat-bottom-sheet-container {\\n font: 400 14px/20px Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n letter-spacing: normal;\\n}\\n.mat-button, .mat-raised-button, .mat-icon-button, .mat-stroked-button,\\n.mat-flat-button, .mat-fab, .mat-mini-fab {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n font-size: 14px;\\n font-weight: 500;\\n}\\n.mat-button-toggle {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n}\\n.mat-card {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n}\\n.mat-card-title {\\n font-size: 24px;\\n font-weight: 500;\\n}\\n.mat-card-header .mat-card-title {\\n font-size: 20px;\\n}\\n.mat-card-subtitle,\\n.mat-card-content {\\n font-size: 14px;\\n}\\n.mat-checkbox {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n}\\n.mat-checkbox-layout .mat-checkbox-label {\\n line-height: 24px;\\n}\\n.mat-chip {\\n font-size: 14px;\\n font-weight: 500;\\n}\\n.mat-chip .mat-chip-trailing-icon.mat-icon,\\n.mat-chip .mat-chip-remove.mat-icon {\\n font-size: 18px;\\n}\\n.mat-table {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n}\\n.mat-header-cell {\\n font-size: 12px;\\n font-weight: 500;\\n}\\n.mat-cell, .mat-footer-cell {\\n font-size: 14px;\\n}\\n.mat-calendar {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n}\\n.mat-calendar-body {\\n font-size: 13px;\\n}\\n.mat-calendar-body-label,\\n.mat-calendar-period-button {\\n font-size: 14px;\\n font-weight: 500;\\n}\\n.mat-calendar-table-header th {\\n font-size: 11px;\\n font-weight: 400;\\n}\\n.mat-dialog-title {\\n font: 500 20px/32px Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n letter-spacing: normal;\\n}\\n.mat-expansion-panel-header {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n font-size: 15px;\\n font-weight: 400;\\n}\\n.mat-expansion-panel-content {\\n font: 400 14px/20px Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n letter-spacing: normal;\\n}\\n.mat-form-field {\\n font-size: inherit;\\n font-weight: 400;\\n line-height: 1.125;\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n letter-spacing: normal;\\n}\\n.mat-form-field-wrapper {\\n padding-bottom: 1.34375em;\\n}\\n.mat-form-field-prefix .mat-icon,\\n.mat-form-field-suffix .mat-icon {\\n font-size: 150%;\\n line-height: 1.125;\\n}\\n.mat-form-field-prefix .mat-icon-button,\\n.mat-form-field-suffix .mat-icon-button {\\n height: 1.5em;\\n width: 1.5em;\\n}\\n.mat-form-field-prefix .mat-icon-button .mat-icon,\\n.mat-form-field-suffix .mat-icon-button .mat-icon {\\n height: 1.125em;\\n line-height: 1.125;\\n}\\n.mat-form-field-infix {\\n padding: 0.5em 0;\\n border-top: 0.84375em solid transparent;\\n}\\n.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,\\n.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.34375em) scale(0.75);\\n width: 133.3333333333%;\\n}\\n.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.34374em) scale(0.75);\\n width: 133.3333433333%;\\n}\\n.mat-form-field-label-wrapper {\\n top: -0.84375em;\\n padding-top: 0.84375em;\\n}\\n.mat-form-field-label {\\n top: 1.34375em;\\n}\\n.mat-form-field-underline {\\n bottom: 1.34375em;\\n}\\n.mat-form-field-subscript-wrapper {\\n font-size: 75%;\\n margin-top: 0.6666666667em;\\n top: calc(100% - 1.7916666667em);\\n}\\n.mat-form-field-appearance-legacy .mat-form-field-wrapper {\\n padding-bottom: 1.25em;\\n}\\n.mat-form-field-appearance-legacy .mat-form-field-infix {\\n padding: 0.4375em 0;\\n}\\n.mat-form-field-appearance-legacy.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,\\n.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.28125em) scale(0.75) perspective(100px) translateZ(0.001px);\\n -ms-transform: translateY(-1.28125em) scale(0.75);\\n width: 133.3333333333%;\\n}\\n.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-form-field-autofill-control:-webkit-autofill + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.28125em) scale(0.75) perspective(100px) translateZ(0.00101px);\\n -ms-transform: translateY(-1.28124em) scale(0.75);\\n width: 133.3333433333%;\\n}\\n.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.28125em) scale(0.75) perspective(100px) translateZ(0.00102px);\\n -ms-transform: translateY(-1.28123em) scale(0.75);\\n width: 133.3333533333%;\\n}\\n.mat-form-field-appearance-legacy .mat-form-field-label {\\n top: 1.28125em;\\n}\\n.mat-form-field-appearance-legacy .mat-form-field-underline {\\n bottom: 1.25em;\\n}\\n.mat-form-field-appearance-legacy .mat-form-field-subscript-wrapper {\\n margin-top: 0.5416666667em;\\n top: calc(100% - 1.6666666667em);\\n}\\n@media print {\\n .mat-form-field-appearance-legacy.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,\\n.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.28122em) scale(0.75);\\n }\\n .mat-form-field-appearance-legacy.mat-form-field-can-float .mat-form-field-autofill-control:-webkit-autofill + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.28121em) scale(0.75);\\n }\\n .mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.2812em) scale(0.75);\\n }\\n}\\n.mat-form-field-appearance-fill .mat-form-field-infix {\\n padding: 0.25em 0 0.75em 0;\\n}\\n.mat-form-field-appearance-fill .mat-form-field-label {\\n top: 1.09375em;\\n margin-top: -0.5em;\\n}\\n.mat-form-field-appearance-fill.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,\\n.mat-form-field-appearance-fill.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-0.59375em) scale(0.75);\\n width: 133.3333333333%;\\n}\\n.mat-form-field-appearance-fill.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-0.59374em) scale(0.75);\\n width: 133.3333433333%;\\n}\\n.mat-form-field-appearance-outline .mat-form-field-infix {\\n padding: 1em 0 1em 0;\\n}\\n.mat-form-field-appearance-outline .mat-form-field-label {\\n top: 1.84375em;\\n margin-top: -0.25em;\\n}\\n.mat-form-field-appearance-outline.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,\\n.mat-form-field-appearance-outline.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.59375em) scale(0.75);\\n width: 133.3333333333%;\\n}\\n.mat-form-field-appearance-outline.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.59374em) scale(0.75);\\n width: 133.3333433333%;\\n}\\n.mat-grid-tile-header,\\n.mat-grid-tile-footer {\\n font-size: 14px;\\n}\\n.mat-grid-tile-header .mat-line,\\n.mat-grid-tile-footer .mat-line {\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n display: block;\\n box-sizing: border-box;\\n}\\n.mat-grid-tile-header .mat-line:nth-child(n+2),\\n.mat-grid-tile-footer .mat-line:nth-child(n+2) {\\n font-size: 12px;\\n}\\ninput.mat-input-element {\\n margin-top: -0.0625em;\\n}\\n.mat-menu-item {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n font-size: 14px;\\n font-weight: 400;\\n}\\n.mat-paginator,\\n.mat-paginator-page-size .mat-select-trigger {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n font-size: 12px;\\n}\\n.mat-radio-button {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n}\\n.mat-select {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n}\\n.mat-select-trigger {\\n height: 1.125em;\\n}\\n.mat-slide-toggle-content {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n}\\n.mat-slider-thumb-label-text {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n font-size: 12px;\\n font-weight: 500;\\n}\\n.mat-stepper-vertical, .mat-stepper-horizontal {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n}\\n.mat-step-label {\\n font-size: 14px;\\n font-weight: 400;\\n}\\n.mat-step-sub-label-error {\\n font-weight: normal;\\n}\\n.mat-step-label-error {\\n font-size: 14px;\\n}\\n.mat-step-label-selected {\\n font-size: 14px;\\n font-weight: 500;\\n}\\n.mat-tab-group {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n}\\n.mat-tab-label, .mat-tab-link {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n font-size: 14px;\\n font-weight: 500;\\n}\\n.mat-toolbar,\\n.mat-toolbar h1,\\n.mat-toolbar h2,\\n.mat-toolbar h3,\\n.mat-toolbar h4,\\n.mat-toolbar h5,\\n.mat-toolbar h6 {\\n font: 500 20px/32px Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n letter-spacing: normal;\\n margin: 0;\\n}\\n.mat-tooltip {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n font-size: 10px;\\n padding-top: 6px;\\n padding-bottom: 6px;\\n}\\n.mat-tooltip-handset {\\n font-size: 14px;\\n padding-top: 8px;\\n padding-bottom: 8px;\\n}\\n.mat-list-item {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n}\\n.mat-list-option {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n}\\n.mat-list-base .mat-list-item {\\n font-size: 16px;\\n}\\n.mat-list-base .mat-list-item .mat-line {\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n display: block;\\n box-sizing: border-box;\\n}\\n.mat-list-base .mat-list-item .mat-line:nth-child(n+2) {\\n font-size: 14px;\\n}\\n.mat-list-base .mat-list-option {\\n font-size: 16px;\\n}\\n.mat-list-base .mat-list-option .mat-line {\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n display: block;\\n box-sizing: border-box;\\n}\\n.mat-list-base .mat-list-option .mat-line:nth-child(n+2) {\\n font-size: 14px;\\n}\\n.mat-list-base .mat-subheader {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n font-size: 14px;\\n font-weight: 500;\\n}\\n.mat-list-base[dense] .mat-list-item {\\n font-size: 12px;\\n}\\n.mat-list-base[dense] .mat-list-item .mat-line {\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n display: block;\\n box-sizing: border-box;\\n}\\n.mat-list-base[dense] .mat-list-item .mat-line:nth-child(n+2) {\\n font-size: 12px;\\n}\\n.mat-list-base[dense] .mat-list-option {\\n font-size: 12px;\\n}\\n.mat-list-base[dense] .mat-list-option .mat-line {\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n display: block;\\n box-sizing: border-box;\\n}\\n.mat-list-base[dense] .mat-list-option .mat-line:nth-child(n+2) {\\n font-size: 12px;\\n}\\n.mat-list-base[dense] .mat-subheader {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n font-size: 12px;\\n font-weight: 500;\\n}\\n.mat-option {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n font-size: 16px;\\n}\\n.mat-optgroup-label {\\n font: 500 14px/24px Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n letter-spacing: normal;\\n}\\n.mat-simple-snackbar {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n font-size: 14px;\\n}\\n.mat-simple-snackbar-action {\\n line-height: 1;\\n font-family: inherit;\\n font-size: inherit;\\n font-weight: 500;\\n}\\n.mat-tree {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n}\\n.mat-tree-node,\\n.mat-nested-tree-node {\\n font-weight: 400;\\n font-size: 14px;\\n}\\n.mat-ripple {\\n overflow: hidden;\\n position: relative;\\n}\\n.mat-ripple:not(:empty) {\\n transform: translateZ(0);\\n}\\n.mat-ripple.mat-ripple-unbounded {\\n overflow: visible;\\n}\\n.mat-ripple-element {\\n position: absolute;\\n border-radius: 50%;\\n pointer-events: none;\\n transition: opacity, transform 0ms cubic-bezier(0, 0, 0.2, 1);\\n transform: scale(0);\\n}\\n.cdk-high-contrast-active .mat-ripple-element {\\n display: none;\\n}\\n.cdk-visually-hidden {\\n border: 0;\\n clip: rect(0 0 0 0);\\n height: 1px;\\n margin: -1px;\\n overflow: hidden;\\n padding: 0;\\n position: absolute;\\n width: 1px;\\n white-space: nowrap;\\n outline: 0;\\n -webkit-appearance: none;\\n -moz-appearance: none;\\n}\\n.cdk-overlay-container, .cdk-global-overlay-wrapper {\\n pointer-events: none;\\n top: 0;\\n left: 0;\\n height: 100%;\\n width: 100%;\\n}\\n.cdk-overlay-container {\\n position: fixed;\\n z-index: 1000;\\n}\\n.cdk-overlay-container:empty {\\n display: none;\\n}\\n.cdk-global-overlay-wrapper {\\n display: flex;\\n position: absolute;\\n z-index: 1000;\\n}\\n.cdk-overlay-pane {\\n position: absolute;\\n pointer-events: auto;\\n box-sizing: border-box;\\n z-index: 1000;\\n display: flex;\\n max-width: 100%;\\n max-height: 100%;\\n}\\n.cdk-overlay-backdrop {\\n position: absolute;\\n top: 0;\\n bottom: 0;\\n left: 0;\\n right: 0;\\n z-index: 1000;\\n pointer-events: auto;\\n -webkit-tap-highlight-color: transparent;\\n transition: opacity 400ms cubic-bezier(0.25, 0.8, 0.25, 1);\\n opacity: 0;\\n}\\n.cdk-overlay-backdrop.cdk-overlay-backdrop-showing {\\n opacity: 1;\\n}\\n.cdk-high-contrast-active .cdk-overlay-backdrop.cdk-overlay-backdrop-showing {\\n opacity: 0.6;\\n}\\n.cdk-overlay-dark-backdrop {\\n background: rgba(0, 0, 0, 0.32);\\n}\\n.cdk-overlay-transparent-backdrop, .cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing {\\n opacity: 0;\\n}\\n.cdk-overlay-connected-position-bounding-box {\\n position: absolute;\\n z-index: 1000;\\n display: flex;\\n flex-direction: column;\\n min-width: 1px;\\n min-height: 1px;\\n}\\n.cdk-global-scrollblock {\\n position: fixed;\\n width: 100%;\\n overflow-y: scroll;\\n}\\ntextarea.cdk-textarea-autosize {\\n resize: none;\\n}\\ntextarea.cdk-textarea-autosize-measuring {\\n padding: 2px 0 !important;\\n box-sizing: content-box !important;\\n height: auto !important;\\n overflow: hidden !important;\\n}\\ntextarea.cdk-textarea-autosize-measuring-firefox {\\n padding: 2px 0 !important;\\n box-sizing: content-box !important;\\n height: 0 !important;\\n}\\n@keyframes cdk-text-field-autofill-start {\\n /*!*/\\n}\\n@keyframes cdk-text-field-autofill-end {\\n /*!*/\\n}\\n.cdk-text-field-autofill-monitored:-webkit-autofill {\\n animation: cdk-text-field-autofill-start 0s 1ms;\\n}\\n.cdk-text-field-autofill-monitored:not(:-webkit-autofill) {\\n animation: cdk-text-field-autofill-end 0s 1ms;\\n}\\n.mat-focus-indicator {\\n position: relative;\\n}\\n.mat-mdc-focus-indicator {\\n position: relative;\\n}\\n.mat-badge-content {\\n font-weight: 600;\\n font-size: 12px;\\n font-family: OpenSans, sans-serif;\\n}\\n.mat-badge-small .mat-badge-content {\\n font-size: 9px;\\n}\\n.mat-badge-large .mat-badge-content {\\n font-size: 24px;\\n}\\n.mat-h1, .mat-headline, .mat-typography h1 {\\n font: 400 24px/32px OpenSans, sans-serif;\\n letter-spacing: normal;\\n margin: 0 0 16px;\\n}\\n.mat-h2, .mat-title, .mat-typography h2 {\\n font: 500 20px/32px OpenSans, sans-serif;\\n letter-spacing: normal;\\n margin: 0 0 16px;\\n}\\n.mat-h3, .mat-subheading-2, .mat-typography h3 {\\n font: 400 16px/28px OpenSans, sans-serif;\\n letter-spacing: normal;\\n margin: 0 0 16px;\\n}\\n.mat-h4, .mat-subheading-1, .mat-typography h4 {\\n font: 400 15px/24px OpenSans, sans-serif;\\n letter-spacing: normal;\\n margin: 0 0 16px;\\n}\\n.mat-h5, .mat-typography h5 {\\n font: normal calc(16px * 0.83)/24px OpenSans, sans-serif;\\n margin: 0 0 12px;\\n}\\n.mat-h6, .mat-typography h6 {\\n font: normal calc(16px * 0.67)/24px OpenSans, sans-serif;\\n margin: 0 0 12px;\\n}\\n.mat-body-strong, .mat-body-2 {\\n font: 500 14px/24px OpenSans, sans-serif;\\n letter-spacing: normal;\\n}\\n.mat-body, .mat-body-1, .mat-typography {\\n font: normal 16px/24px OpenSans, sans-serif;\\n letter-spacing: normal;\\n}\\n.mat-body p, .mat-body-1 p, .mat-typography p {\\n margin: 0 0 12px;\\n}\\n.mat-small, .mat-caption {\\n font: 400 12px/20px OpenSans, sans-serif;\\n letter-spacing: normal;\\n}\\n.mat-display-4, .mat-typography .mat-display-4 {\\n font: 300 112px/112px OpenSans, sans-serif;\\n letter-spacing: -0.05em;\\n margin: 0 0 56px;\\n}\\n.mat-display-3, .mat-typography .mat-display-3 {\\n font: 400 56px/56px OpenSans, sans-serif;\\n letter-spacing: -0.02em;\\n margin: 0 0 64px;\\n}\\n.mat-display-2, .mat-typography .mat-display-2 {\\n font: 400 45px/48px OpenSans, sans-serif;\\n letter-spacing: -0.005em;\\n margin: 0 0 64px;\\n}\\n.mat-display-1, .mat-typography .mat-display-1 {\\n font: 400 34px/40px OpenSans, sans-serif;\\n letter-spacing: normal;\\n margin: 0 0 64px;\\n}\\n.mat-bottom-sheet-container {\\n font: normal 16px/24px OpenSans, sans-serif;\\n letter-spacing: normal;\\n}\\n.mat-button, .mat-raised-button, .mat-icon-button, .mat-stroked-button,\\n.mat-flat-button, .mat-fab, .mat-mini-fab {\\n font-family: OpenSans, sans-serif;\\n font-size: 14px;\\n font-weight: 500;\\n}\\n.mat-button-toggle {\\n font-family: OpenSans, sans-serif;\\n}\\n.mat-card {\\n font-family: OpenSans, sans-serif;\\n}\\n.mat-card-title {\\n font-size: 24px;\\n font-weight: 500;\\n}\\n.mat-card-header .mat-card-title {\\n font-size: 20px;\\n}\\n.mat-card-subtitle,\\n.mat-card-content {\\n font-size: 16px;\\n}\\n.mat-checkbox {\\n font-family: OpenSans, sans-serif;\\n}\\n.mat-checkbox-layout .mat-checkbox-label {\\n line-height: 24px;\\n}\\n.mat-chip {\\n font-size: 14px;\\n font-weight: 500;\\n}\\n.mat-chip .mat-chip-trailing-icon.mat-icon,\\n.mat-chip .mat-chip-remove.mat-icon {\\n font-size: 18px;\\n}\\n.mat-table {\\n font-family: OpenSans, sans-serif;\\n}\\n.mat-header-cell {\\n font-size: 12px;\\n font-weight: 500;\\n}\\n.mat-cell, .mat-footer-cell {\\n font-size: 16px;\\n}\\n.mat-calendar {\\n font-family: OpenSans, sans-serif;\\n}\\n.mat-calendar-body {\\n font-size: 13px;\\n}\\n.mat-calendar-body-label,\\n.mat-calendar-period-button {\\n font-size: 14px;\\n font-weight: 500;\\n}\\n.mat-calendar-table-header th {\\n font-size: 11px;\\n font-weight: normal;\\n}\\n.mat-dialog-title {\\n font: 500 20px/32px OpenSans, sans-serif;\\n letter-spacing: normal;\\n}\\n.mat-expansion-panel-header {\\n font-family: OpenSans, sans-serif;\\n font-size: 15px;\\n font-weight: 400;\\n}\\n.mat-expansion-panel-content {\\n font: normal 16px/24px OpenSans, sans-serif;\\n letter-spacing: normal;\\n}\\n.mat-form-field {\\n font-size: inherit;\\n font-weight: 400;\\n line-height: 1.125;\\n font-family: OpenSans, sans-serif;\\n letter-spacing: normal;\\n}\\n.mat-form-field-wrapper {\\n padding-bottom: 1.34375em;\\n}\\n.mat-form-field-prefix .mat-icon,\\n.mat-form-field-suffix .mat-icon {\\n font-size: 150%;\\n line-height: 1.125;\\n}\\n.mat-form-field-prefix .mat-icon-button,\\n.mat-form-field-suffix .mat-icon-button {\\n height: 1.5em;\\n width: 1.5em;\\n}\\n.mat-form-field-prefix .mat-icon-button .mat-icon,\\n.mat-form-field-suffix .mat-icon-button .mat-icon {\\n height: 1.125em;\\n line-height: 1.125;\\n}\\n.mat-form-field-infix {\\n padding: 0.5em 0;\\n border-top: 0.84375em solid transparent;\\n}\\n.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,\\n.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.34373em) scale(0.75);\\n width: 133.3333533333%;\\n}\\n.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.34372em) scale(0.75);\\n width: 133.3333633333%;\\n}\\n.mat-form-field-label-wrapper {\\n top: -0.84375em;\\n padding-top: 0.84375em;\\n}\\n.mat-form-field-label {\\n top: 1.34375em;\\n}\\n.mat-form-field-underline {\\n bottom: 1.34375em;\\n}\\n.mat-form-field-subscript-wrapper {\\n font-size: 75%;\\n margin-top: 0.6666666667em;\\n top: calc(100% - 1.7916666667em);\\n}\\n.mat-form-field-appearance-legacy .mat-form-field-wrapper {\\n padding-bottom: 1.25em;\\n}\\n.mat-form-field-appearance-legacy .mat-form-field-infix {\\n padding: 0.4375em 0;\\n}\\n.mat-form-field-appearance-legacy.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,\\n.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.28125em) scale(0.75) perspective(100px) translateZ(0.00106px);\\n -ms-transform: translateY(-1.28119em) scale(0.75);\\n width: 133.3333933333%;\\n}\\n.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-form-field-autofill-control:-webkit-autofill + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.28125em) scale(0.75) perspective(100px) translateZ(0.00107px);\\n -ms-transform: translateY(-1.28118em) scale(0.75);\\n width: 133.3334033333%;\\n}\\n.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.28125em) scale(0.75) perspective(100px) translateZ(0.00108px);\\n -ms-transform: translateY(-1.28117em) scale(0.75);\\n width: 133.3334133333%;\\n}\\n.mat-form-field-appearance-legacy .mat-form-field-label {\\n top: 1.28125em;\\n}\\n.mat-form-field-appearance-legacy .mat-form-field-underline {\\n bottom: 1.25em;\\n}\\n.mat-form-field-appearance-legacy .mat-form-field-subscript-wrapper {\\n margin-top: 0.5416666667em;\\n top: calc(100% - 1.6666666667em);\\n}\\n@media print {\\n .mat-form-field-appearance-legacy.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,\\n.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.28116em) scale(0.75);\\n }\\n .mat-form-field-appearance-legacy.mat-form-field-can-float .mat-form-field-autofill-control:-webkit-autofill + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.28115em) scale(0.75);\\n }\\n .mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.28114em) scale(0.75);\\n }\\n}\\n.mat-form-field-appearance-fill .mat-form-field-infix {\\n padding: 0.25em 0 0.75em 0;\\n}\\n.mat-form-field-appearance-fill .mat-form-field-label {\\n top: 1.09375em;\\n margin-top: -0.5em;\\n}\\n.mat-form-field-appearance-fill.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,\\n.mat-form-field-appearance-fill.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-0.59373em) scale(0.75);\\n width: 133.3333533333%;\\n}\\n.mat-form-field-appearance-fill.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-0.59372em) scale(0.75);\\n width: 133.3333633333%;\\n}\\n.mat-form-field-appearance-outline .mat-form-field-infix {\\n padding: 1em 0 1em 0;\\n}\\n.mat-form-field-appearance-outline .mat-form-field-label {\\n top: 1.84375em;\\n margin-top: -0.25em;\\n}\\n.mat-form-field-appearance-outline.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,\\n.mat-form-field-appearance-outline.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.59373em) scale(0.75);\\n width: 133.3333533333%;\\n}\\n.mat-form-field-appearance-outline.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.59372em) scale(0.75);\\n width: 133.3333633333%;\\n}\\n.mat-grid-tile-header,\\n.mat-grid-tile-footer {\\n font-size: 16px;\\n}\\n.mat-grid-tile-header .mat-line,\\n.mat-grid-tile-footer .mat-line {\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n display: block;\\n box-sizing: border-box;\\n}\\n.mat-grid-tile-header .mat-line:nth-child(n+2),\\n.mat-grid-tile-footer .mat-line:nth-child(n+2) {\\n font-size: 12px;\\n}\\ninput.mat-input-element {\\n margin-top: -0.0625em;\\n}\\n.mat-menu-item {\\n font-family: OpenSans, sans-serif;\\n font-size: 16px;\\n font-weight: normal;\\n}\\n.mat-paginator,\\n.mat-paginator-page-size .mat-select-trigger {\\n font-family: OpenSans, sans-serif;\\n font-size: 12px;\\n}\\n.mat-radio-button {\\n font-family: OpenSans, sans-serif;\\n}\\n.mat-select {\\n font-family: OpenSans, sans-serif;\\n}\\n.mat-select-trigger {\\n height: 1.125em;\\n}\\n.mat-slide-toggle-content {\\n font-family: OpenSans, sans-serif;\\n}\\n.mat-slider-thumb-label-text {\\n font-family: OpenSans, sans-serif;\\n font-size: 12px;\\n font-weight: 500;\\n}\\n.mat-stepper-vertical, .mat-stepper-horizontal {\\n font-family: OpenSans, sans-serif;\\n}\\n.mat-step-label {\\n font-size: 16px;\\n font-weight: normal;\\n}\\n.mat-step-sub-label-error {\\n font-weight: normal;\\n}\\n.mat-step-label-error {\\n font-size: 14px;\\n}\\n.mat-step-label-selected {\\n font-size: 14px;\\n font-weight: 500;\\n}\\n.mat-tab-group {\\n font-family: OpenSans, sans-serif;\\n}\\n.mat-tab-label, .mat-tab-link {\\n font-family: OpenSans, sans-serif;\\n font-size: 14px;\\n font-weight: 500;\\n}\\n.mat-toolbar,\\n.mat-toolbar h1,\\n.mat-toolbar h2,\\n.mat-toolbar h3,\\n.mat-toolbar h4,\\n.mat-toolbar h5,\\n.mat-toolbar h6 {\\n font: 500 20px/32px OpenSans, sans-serif;\\n letter-spacing: normal;\\n margin: 0;\\n}\\n.mat-tooltip {\\n font-family: OpenSans, sans-serif;\\n font-size: 10px;\\n padding-top: 6px;\\n padding-bottom: 6px;\\n}\\n.mat-tooltip-handset {\\n font-size: 14px;\\n padding-top: 8px;\\n padding-bottom: 8px;\\n}\\n.mat-list-item {\\n font-family: OpenSans, sans-serif;\\n}\\n.mat-list-option {\\n font-family: OpenSans, sans-serif;\\n}\\n.mat-list-base .mat-list-item {\\n font-size: 16px;\\n}\\n.mat-list-base .mat-list-item .mat-line {\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n display: block;\\n box-sizing: border-box;\\n}\\n.mat-list-base .mat-list-item .mat-line:nth-child(n+2) {\\n font-size: 16px;\\n}\\n.mat-list-base .mat-list-option {\\n font-size: 16px;\\n}\\n.mat-list-base .mat-list-option .mat-line {\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n display: block;\\n box-sizing: border-box;\\n}\\n.mat-list-base .mat-list-option .mat-line:nth-child(n+2) {\\n font-size: 16px;\\n}\\n.mat-list-base .mat-subheader {\\n font-family: OpenSans, sans-serif;\\n font-size: 14px;\\n font-weight: 500;\\n}\\n.mat-list-base[dense] .mat-list-item {\\n font-size: 12px;\\n}\\n.mat-list-base[dense] .mat-list-item .mat-line {\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n display: block;\\n box-sizing: border-box;\\n}\\n.mat-list-base[dense] .mat-list-item .mat-line:nth-child(n+2) {\\n font-size: 12px;\\n}\\n.mat-list-base[dense] .mat-list-option {\\n font-size: 12px;\\n}\\n.mat-list-base[dense] .mat-list-option .mat-line {\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n display: block;\\n box-sizing: border-box;\\n}\\n.mat-list-base[dense] .mat-list-option .mat-line:nth-child(n+2) {\\n font-size: 12px;\\n}\\n.mat-list-base[dense] .mat-subheader {\\n font-family: OpenSans, sans-serif;\\n font-size: 12px;\\n font-weight: 500;\\n}\\n.mat-option {\\n font-family: OpenSans, sans-serif;\\n font-size: 16px;\\n}\\n.mat-optgroup-label {\\n font: 500 14px/24px OpenSans, sans-serif;\\n letter-spacing: normal;\\n}\\n.mat-simple-snackbar {\\n font-family: OpenSans, sans-serif;\\n font-size: 16px;\\n}\\n.mat-simple-snackbar-action {\\n line-height: 1;\\n font-family: inherit;\\n font-size: inherit;\\n font-weight: 500;\\n}\\n.mat-tree {\\n font-family: OpenSans, sans-serif;\\n}\\n.mat-tree-node,\\n.mat-nested-tree-node {\\n font-weight: normal;\\n font-size: 16px;\\n}\\n.mat-typography h1, .mat-typography h2, .mat-typography h3, .mat-typography h4, .mat-typography h5, .mat-typography h6 {\\n font-family: BwModelica, monospace;\\n font-weight: bold;\\n}\\n.mat-ripple-element {\\n background-color: rgba(0, 0, 0, 0.1);\\n}\\n.mat-option {\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-option:hover:not(.mat-option-disabled), .mat-option:focus:not(.mat-option-disabled) {\\n background: rgba(0, 0, 0, 0.04);\\n}\\n.mat-option.mat-selected:not(.mat-option-multiple):not(.mat-option-disabled) {\\n background: rgba(0, 0, 0, 0.04);\\n}\\n.mat-option.mat-active {\\n background: rgba(0, 0, 0, 0.04);\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-option.mat-option-disabled {\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-primary .mat-option.mat-selected:not(.mat-option-disabled) {\\n color: #4775f5;\\n}\\n.mat-accent .mat-option.mat-selected:not(.mat-option-disabled) {\\n color: #f7cc71;\\n}\\n.mat-warn .mat-option.mat-selected:not(.mat-option-disabled) {\\n color: #fc8f76;\\n}\\n.mat-optgroup-label {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-optgroup-disabled .mat-optgroup-label {\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-pseudo-checkbox {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-pseudo-checkbox::after {\\n color: #fafafa;\\n}\\n.mat-pseudo-checkbox-disabled {\\n color: #b0b0b0;\\n}\\n.mat-primary .mat-pseudo-checkbox-checked,\\n.mat-primary .mat-pseudo-checkbox-indeterminate {\\n background: #4775f5;\\n}\\n.mat-pseudo-checkbox-checked,\\n.mat-pseudo-checkbox-indeterminate,\\n.mat-accent .mat-pseudo-checkbox-checked,\\n.mat-accent .mat-pseudo-checkbox-indeterminate {\\n background: #f7cc71;\\n}\\n.mat-warn .mat-pseudo-checkbox-checked,\\n.mat-warn .mat-pseudo-checkbox-indeterminate {\\n background: #fc8f76;\\n}\\n.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-disabled,\\n.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-disabled {\\n background: #b0b0b0;\\n}\\n.mat-app-background {\\n background-color: #fafafa;\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-elevation-z0 {\\n box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z1 {\\n box-shadow: 0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z2 {\\n box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z3 {\\n box-shadow: 0px 3px 3px -2px rgba(0, 0, 0, 0.2), 0px 3px 4px 0px rgba(0, 0, 0, 0.14), 0px 1px 8px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z4 {\\n box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z5 {\\n box-shadow: 0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 5px 8px 0px rgba(0, 0, 0, 0.14), 0px 1px 14px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z6 {\\n box-shadow: 0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z7 {\\n box-shadow: 0px 4px 5px -2px rgba(0, 0, 0, 0.2), 0px 7px 10px 1px rgba(0, 0, 0, 0.14), 0px 2px 16px 1px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z8 {\\n box-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.2), 0px 8px 10px 1px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z9 {\\n box-shadow: 0px 5px 6px -3px rgba(0, 0, 0, 0.2), 0px 9px 12px 1px rgba(0, 0, 0, 0.14), 0px 3px 16px 2px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z10 {\\n box-shadow: 0px 6px 6px -3px rgba(0, 0, 0, 0.2), 0px 10px 14px 1px rgba(0, 0, 0, 0.14), 0px 4px 18px 3px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z11 {\\n box-shadow: 0px 6px 7px -4px rgba(0, 0, 0, 0.2), 0px 11px 15px 1px rgba(0, 0, 0, 0.14), 0px 4px 20px 3px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z12 {\\n box-shadow: 0px 7px 8px -4px rgba(0, 0, 0, 0.2), 0px 12px 17px 2px rgba(0, 0, 0, 0.14), 0px 5px 22px 4px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z13 {\\n box-shadow: 0px 7px 8px -4px rgba(0, 0, 0, 0.2), 0px 13px 19px 2px rgba(0, 0, 0, 0.14), 0px 5px 24px 4px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z14 {\\n box-shadow: 0px 7px 9px -4px rgba(0, 0, 0, 0.2), 0px 14px 21px 2px rgba(0, 0, 0, 0.14), 0px 5px 26px 4px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z15 {\\n box-shadow: 0px 8px 9px -5px rgba(0, 0, 0, 0.2), 0px 15px 22px 2px rgba(0, 0, 0, 0.14), 0px 6px 28px 5px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z16 {\\n box-shadow: 0px 8px 10px -5px rgba(0, 0, 0, 0.2), 0px 16px 24px 2px rgba(0, 0, 0, 0.14), 0px 6px 30px 5px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z17 {\\n box-shadow: 0px 8px 11px -5px rgba(0, 0, 0, 0.2), 0px 17px 26px 2px rgba(0, 0, 0, 0.14), 0px 6px 32px 5px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z18 {\\n box-shadow: 0px 9px 11px -5px rgba(0, 0, 0, 0.2), 0px 18px 28px 2px rgba(0, 0, 0, 0.14), 0px 7px 34px 6px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z19 {\\n box-shadow: 0px 9px 12px -6px rgba(0, 0, 0, 0.2), 0px 19px 29px 2px rgba(0, 0, 0, 0.14), 0px 7px 36px 6px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z20 {\\n box-shadow: 0px 10px 13px -6px rgba(0, 0, 0, 0.2), 0px 20px 31px 3px rgba(0, 0, 0, 0.14), 0px 8px 38px 7px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z21 {\\n box-shadow: 0px 10px 13px -6px rgba(0, 0, 0, 0.2), 0px 21px 33px 3px rgba(0, 0, 0, 0.14), 0px 8px 40px 7px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z22 {\\n box-shadow: 0px 10px 14px -6px rgba(0, 0, 0, 0.2), 0px 22px 35px 3px rgba(0, 0, 0, 0.14), 0px 8px 42px 7px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z23 {\\n box-shadow: 0px 11px 14px -7px rgba(0, 0, 0, 0.2), 0px 23px 36px 3px rgba(0, 0, 0, 0.14), 0px 9px 44px 8px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z24 {\\n box-shadow: 0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 9px 46px 8px rgba(0, 0, 0, 0.12);\\n}\\n.mat-theme-loaded-marker {\\n display: none;\\n}\\n.mat-autocomplete-panel {\\n background: white;\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-autocomplete-panel:not([class*=mat-elevation-z]) {\\n box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-autocomplete-panel .mat-option.mat-selected:not(.mat-active):not(:hover) {\\n background: white;\\n}\\n.mat-autocomplete-panel .mat-option.mat-selected:not(.mat-active):not(:hover):not(.mat-option-disabled) {\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-badge-content {\\n color: white;\\n background: #4775f5;\\n}\\n.cdk-high-contrast-active .mat-badge-content {\\n outline: solid 1px;\\n border-radius: 0;\\n}\\n.mat-badge-accent .mat-badge-content {\\n background: #f7cc71;\\n color: white;\\n}\\n.mat-badge-warn .mat-badge-content {\\n color: white;\\n background: #fc8f76;\\n}\\n.mat-badge {\\n position: relative;\\n}\\n.mat-badge-hidden .mat-badge-content {\\n display: none;\\n}\\n.mat-badge-disabled .mat-badge-content {\\n background: #b9b9b9;\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-badge-content {\\n position: absolute;\\n text-align: center;\\n display: inline-block;\\n border-radius: 50%;\\n transition: transform 200ms ease-in-out;\\n transform: scale(0.6);\\n overflow: hidden;\\n white-space: nowrap;\\n text-overflow: ellipsis;\\n pointer-events: none;\\n}\\n.ng-animate-disabled .mat-badge-content,\\n.mat-badge-content._mat-animation-noopable {\\n transition: none;\\n}\\n.mat-badge-content.mat-badge-active {\\n transform: none;\\n}\\n.mat-badge-small .mat-badge-content {\\n width: 16px;\\n height: 16px;\\n line-height: 16px;\\n}\\n.mat-badge-small.mat-badge-above .mat-badge-content {\\n top: -8px;\\n}\\n.mat-badge-small.mat-badge-below .mat-badge-content {\\n bottom: -8px;\\n}\\n.mat-badge-small.mat-badge-before .mat-badge-content {\\n left: -16px;\\n}\\n[dir=rtl] .mat-badge-small.mat-badge-before .mat-badge-content {\\n left: auto;\\n right: -16px;\\n}\\n.mat-badge-small.mat-badge-after .mat-badge-content {\\n right: -16px;\\n}\\n[dir=rtl] .mat-badge-small.mat-badge-after .mat-badge-content {\\n right: auto;\\n left: -16px;\\n}\\n.mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content {\\n left: -8px;\\n}\\n[dir=rtl] .mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content {\\n left: auto;\\n right: -8px;\\n}\\n.mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content {\\n right: -8px;\\n}\\n[dir=rtl] .mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content {\\n right: auto;\\n left: -8px;\\n}\\n.mat-badge-medium .mat-badge-content {\\n width: 22px;\\n height: 22px;\\n line-height: 22px;\\n}\\n.mat-badge-medium.mat-badge-above .mat-badge-content {\\n top: -11px;\\n}\\n.mat-badge-medium.mat-badge-below .mat-badge-content {\\n bottom: -11px;\\n}\\n.mat-badge-medium.mat-badge-before .mat-badge-content {\\n left: -22px;\\n}\\n[dir=rtl] .mat-badge-medium.mat-badge-before .mat-badge-content {\\n left: auto;\\n right: -22px;\\n}\\n.mat-badge-medium.mat-badge-after .mat-badge-content {\\n right: -22px;\\n}\\n[dir=rtl] .mat-badge-medium.mat-badge-after .mat-badge-content {\\n right: auto;\\n left: -22px;\\n}\\n.mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content {\\n left: -11px;\\n}\\n[dir=rtl] .mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content {\\n left: auto;\\n right: -11px;\\n}\\n.mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content {\\n right: -11px;\\n}\\n[dir=rtl] .mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content {\\n right: auto;\\n left: -11px;\\n}\\n.mat-badge-large .mat-badge-content {\\n width: 28px;\\n height: 28px;\\n line-height: 28px;\\n}\\n.mat-badge-large.mat-badge-above .mat-badge-content {\\n top: -14px;\\n}\\n.mat-badge-large.mat-badge-below .mat-badge-content {\\n bottom: -14px;\\n}\\n.mat-badge-large.mat-badge-before .mat-badge-content {\\n left: -28px;\\n}\\n[dir=rtl] .mat-badge-large.mat-badge-before .mat-badge-content {\\n left: auto;\\n right: -28px;\\n}\\n.mat-badge-large.mat-badge-after .mat-badge-content {\\n right: -28px;\\n}\\n[dir=rtl] .mat-badge-large.mat-badge-after .mat-badge-content {\\n right: auto;\\n left: -28px;\\n}\\n.mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content {\\n left: -14px;\\n}\\n[dir=rtl] .mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content {\\n left: auto;\\n right: -14px;\\n}\\n.mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content {\\n right: -14px;\\n}\\n[dir=rtl] .mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content {\\n right: auto;\\n left: -14px;\\n}\\n.mat-bottom-sheet-container {\\n box-shadow: 0px 8px 10px -5px rgba(0, 0, 0, 0.2), 0px 16px 24px 2px rgba(0, 0, 0, 0.14), 0px 6px 30px 5px rgba(0, 0, 0, 0.12);\\n background: white;\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-button, .mat-icon-button, .mat-stroked-button {\\n color: inherit;\\n background: transparent;\\n}\\n.mat-button.mat-primary, .mat-icon-button.mat-primary, .mat-stroked-button.mat-primary {\\n color: #4775f5;\\n}\\n.mat-button.mat-accent, .mat-icon-button.mat-accent, .mat-stroked-button.mat-accent {\\n color: #f7cc71;\\n}\\n.mat-button.mat-warn, .mat-icon-button.mat-warn, .mat-stroked-button.mat-warn {\\n color: #fc8f76;\\n}\\n.mat-button.mat-primary.mat-button-disabled, .mat-button.mat-accent.mat-button-disabled, .mat-button.mat-warn.mat-button-disabled, .mat-button.mat-button-disabled.mat-button-disabled, .mat-icon-button.mat-primary.mat-button-disabled, .mat-icon-button.mat-accent.mat-button-disabled, .mat-icon-button.mat-warn.mat-button-disabled, .mat-icon-button.mat-button-disabled.mat-button-disabled, .mat-stroked-button.mat-primary.mat-button-disabled, .mat-stroked-button.mat-accent.mat-button-disabled, .mat-stroked-button.mat-warn.mat-button-disabled, .mat-stroked-button.mat-button-disabled.mat-button-disabled {\\n color: rgba(0, 0, 0, 0.26);\\n}\\n.mat-button.mat-primary .mat-button-focus-overlay, .mat-icon-button.mat-primary .mat-button-focus-overlay, .mat-stroked-button.mat-primary .mat-button-focus-overlay {\\n background-color: #4775f5;\\n}\\n.mat-button.mat-accent .mat-button-focus-overlay, .mat-icon-button.mat-accent .mat-button-focus-overlay, .mat-stroked-button.mat-accent .mat-button-focus-overlay {\\n background-color: #f7cc71;\\n}\\n.mat-button.mat-warn .mat-button-focus-overlay, .mat-icon-button.mat-warn .mat-button-focus-overlay, .mat-stroked-button.mat-warn .mat-button-focus-overlay {\\n background-color: #fc8f76;\\n}\\n.mat-button.mat-button-disabled .mat-button-focus-overlay, .mat-icon-button.mat-button-disabled .mat-button-focus-overlay, .mat-stroked-button.mat-button-disabled .mat-button-focus-overlay {\\n background-color: transparent;\\n}\\n.mat-button .mat-ripple-element, .mat-icon-button .mat-ripple-element, .mat-stroked-button .mat-ripple-element {\\n opacity: 0.1;\\n background-color: currentColor;\\n}\\n.mat-button-focus-overlay {\\n background: black;\\n}\\n.mat-stroked-button:not(.mat-button-disabled) {\\n border-color: rgba(0, 0, 0, 0.12);\\n}\\n.mat-flat-button, .mat-raised-button, .mat-fab, .mat-mini-fab {\\n color: rgba(0, 0, 0, 0.87);\\n background-color: white;\\n}\\n.mat-flat-button.mat-primary, .mat-raised-button.mat-primary, .mat-fab.mat-primary, .mat-mini-fab.mat-primary {\\n color: white;\\n}\\n.mat-flat-button.mat-accent, .mat-raised-button.mat-accent, .mat-fab.mat-accent, .mat-mini-fab.mat-accent {\\n color: white;\\n}\\n.mat-flat-button.mat-warn, .mat-raised-button.mat-warn, .mat-fab.mat-warn, .mat-mini-fab.mat-warn {\\n color: white;\\n}\\n.mat-flat-button.mat-primary.mat-button-disabled, .mat-flat-button.mat-accent.mat-button-disabled, .mat-flat-button.mat-warn.mat-button-disabled, .mat-flat-button.mat-button-disabled.mat-button-disabled, .mat-raised-button.mat-primary.mat-button-disabled, .mat-raised-button.mat-accent.mat-button-disabled, .mat-raised-button.mat-warn.mat-button-disabled, .mat-raised-button.mat-button-disabled.mat-button-disabled, .mat-fab.mat-primary.mat-button-disabled, .mat-fab.mat-accent.mat-button-disabled, .mat-fab.mat-warn.mat-button-disabled, .mat-fab.mat-button-disabled.mat-button-disabled, .mat-mini-fab.mat-primary.mat-button-disabled, .mat-mini-fab.mat-accent.mat-button-disabled, .mat-mini-fab.mat-warn.mat-button-disabled, .mat-mini-fab.mat-button-disabled.mat-button-disabled {\\n color: rgba(0, 0, 0, 0.26);\\n}\\n.mat-flat-button.mat-primary, .mat-raised-button.mat-primary, .mat-fab.mat-primary, .mat-mini-fab.mat-primary {\\n background-color: #4775f5;\\n}\\n.mat-flat-button.mat-accent, .mat-raised-button.mat-accent, .mat-fab.mat-accent, .mat-mini-fab.mat-accent {\\n background-color: #f7cc71;\\n}\\n.mat-flat-button.mat-warn, .mat-raised-button.mat-warn, .mat-fab.mat-warn, .mat-mini-fab.mat-warn {\\n background-color: #fc8f76;\\n}\\n.mat-flat-button.mat-primary.mat-button-disabled, .mat-flat-button.mat-accent.mat-button-disabled, .mat-flat-button.mat-warn.mat-button-disabled, .mat-flat-button.mat-button-disabled.mat-button-disabled, .mat-raised-button.mat-primary.mat-button-disabled, .mat-raised-button.mat-accent.mat-button-disabled, .mat-raised-button.mat-warn.mat-button-disabled, .mat-raised-button.mat-button-disabled.mat-button-disabled, .mat-fab.mat-primary.mat-button-disabled, .mat-fab.mat-accent.mat-button-disabled, .mat-fab.mat-warn.mat-button-disabled, .mat-fab.mat-button-disabled.mat-button-disabled, .mat-mini-fab.mat-primary.mat-button-disabled, .mat-mini-fab.mat-accent.mat-button-disabled, .mat-mini-fab.mat-warn.mat-button-disabled, .mat-mini-fab.mat-button-disabled.mat-button-disabled {\\n background-color: rgba(0, 0, 0, 0.12);\\n}\\n.mat-flat-button.mat-primary .mat-ripple-element, .mat-raised-button.mat-primary .mat-ripple-element, .mat-fab.mat-primary .mat-ripple-element, .mat-mini-fab.mat-primary .mat-ripple-element {\\n background-color: rgba(255, 255, 255, 0.1);\\n}\\n.mat-flat-button.mat-accent .mat-ripple-element, .mat-raised-button.mat-accent .mat-ripple-element, .mat-fab.mat-accent .mat-ripple-element, .mat-mini-fab.mat-accent .mat-ripple-element {\\n background-color: rgba(255, 255, 255, 0.1);\\n}\\n.mat-flat-button.mat-warn .mat-ripple-element, .mat-raised-button.mat-warn .mat-ripple-element, .mat-fab.mat-warn .mat-ripple-element, .mat-mini-fab.mat-warn .mat-ripple-element {\\n background-color: rgba(255, 255, 255, 0.1);\\n}\\n.mat-stroked-button:not([class*=mat-elevation-z]), .mat-flat-button:not([class*=mat-elevation-z]) {\\n box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-raised-button:not([class*=mat-elevation-z]) {\\n box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-raised-button:not(.mat-button-disabled):active:not([class*=mat-elevation-z]) {\\n box-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.2), 0px 8px 10px 1px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0, 0, 0, 0.12);\\n}\\n.mat-raised-button.mat-button-disabled:not([class*=mat-elevation-z]) {\\n box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-fab:not([class*=mat-elevation-z]), .mat-mini-fab:not([class*=mat-elevation-z]) {\\n box-shadow: 0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-fab:not(.mat-button-disabled):active:not([class*=mat-elevation-z]), .mat-mini-fab:not(.mat-button-disabled):active:not([class*=mat-elevation-z]) {\\n box-shadow: 0px 7px 8px -4px rgba(0, 0, 0, 0.2), 0px 12px 17px 2px rgba(0, 0, 0, 0.14), 0px 5px 22px 4px rgba(0, 0, 0, 0.12);\\n}\\n.mat-fab.mat-button-disabled:not([class*=mat-elevation-z]), .mat-mini-fab.mat-button-disabled:not([class*=mat-elevation-z]) {\\n box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-button-toggle-standalone,\\n.mat-button-toggle-group {\\n box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-button-toggle-standalone.mat-button-toggle-appearance-standard,\\n.mat-button-toggle-group-appearance-standard {\\n box-shadow: none;\\n}\\n.mat-button-toggle {\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-button-toggle .mat-button-toggle-focus-overlay {\\n background-color: rgba(0, 0, 0, 0.12);\\n}\\n.mat-button-toggle-appearance-standard {\\n color: rgba(0, 0, 0, 0.87);\\n background: white;\\n}\\n.mat-button-toggle-appearance-standard .mat-button-toggle-focus-overlay {\\n background-color: black;\\n}\\n.mat-button-toggle-group-appearance-standard .mat-button-toggle + .mat-button-toggle {\\n border-left: solid 1px rgba(0, 0, 0, 0.12);\\n}\\n[dir=rtl] .mat-button-toggle-group-appearance-standard .mat-button-toggle + .mat-button-toggle {\\n border-left: none;\\n border-right: solid 1px rgba(0, 0, 0, 0.12);\\n}\\n.mat-button-toggle-group-appearance-standard.mat-button-toggle-vertical .mat-button-toggle + .mat-button-toggle {\\n border-left: none;\\n border-right: none;\\n border-top: solid 1px rgba(0, 0, 0, 0.12);\\n}\\n.mat-button-toggle-checked {\\n background-color: #e0e0e0;\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-button-toggle-checked.mat-button-toggle-appearance-standard {\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-button-toggle-disabled {\\n color: rgba(0, 0, 0, 0.26);\\n background-color: #eeeeee;\\n}\\n.mat-button-toggle-disabled.mat-button-toggle-appearance-standard {\\n background: white;\\n}\\n.mat-button-toggle-disabled.mat-button-toggle-checked {\\n background-color: #bdbdbd;\\n}\\n.mat-button-toggle-standalone.mat-button-toggle-appearance-standard,\\n.mat-button-toggle-group-appearance-standard {\\n border: solid 1px rgba(0, 0, 0, 0.12);\\n}\\n.mat-button-toggle-appearance-standard .mat-button-toggle-label-content {\\n line-height: 48px;\\n}\\n.mat-card {\\n background: white;\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-card:not([class*=mat-elevation-z]) {\\n box-shadow: 0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-card.mat-card-flat:not([class*=mat-elevation-z]) {\\n box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-card-subtitle {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-checkbox-frame {\\n border-color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-checkbox-checkmark {\\n fill: #fafafa;\\n}\\n.mat-checkbox-checkmark-path {\\n stroke: #fafafa !important;\\n}\\n.mat-checkbox-mixedmark {\\n background-color: #fafafa;\\n}\\n.mat-checkbox-indeterminate.mat-primary .mat-checkbox-background, .mat-checkbox-checked.mat-primary .mat-checkbox-background {\\n background-color: #4775f5;\\n}\\n.mat-checkbox-indeterminate.mat-accent .mat-checkbox-background, .mat-checkbox-checked.mat-accent .mat-checkbox-background {\\n background-color: #f7cc71;\\n}\\n.mat-checkbox-indeterminate.mat-warn .mat-checkbox-background, .mat-checkbox-checked.mat-warn .mat-checkbox-background {\\n background-color: #fc8f76;\\n}\\n.mat-checkbox-disabled.mat-checkbox-checked .mat-checkbox-background, .mat-checkbox-disabled.mat-checkbox-indeterminate .mat-checkbox-background {\\n background-color: #b0b0b0;\\n}\\n.mat-checkbox-disabled:not(.mat-checkbox-checked) .mat-checkbox-frame {\\n border-color: #b0b0b0;\\n}\\n.mat-checkbox-disabled .mat-checkbox-label {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-checkbox .mat-ripple-element {\\n background-color: black;\\n}\\n.mat-checkbox-checked:not(.mat-checkbox-disabled).mat-primary .mat-ripple-element,\\n.mat-checkbox:active:not(.mat-checkbox-disabled).mat-primary .mat-ripple-element {\\n background: #4775f5;\\n}\\n.mat-checkbox-checked:not(.mat-checkbox-disabled).mat-accent .mat-ripple-element,\\n.mat-checkbox:active:not(.mat-checkbox-disabled).mat-accent .mat-ripple-element {\\n background: #f7cc71;\\n}\\n.mat-checkbox-checked:not(.mat-checkbox-disabled).mat-warn .mat-ripple-element,\\n.mat-checkbox:active:not(.mat-checkbox-disabled).mat-warn .mat-ripple-element {\\n background: #fc8f76;\\n}\\n.mat-chip.mat-standard-chip {\\n background-color: #e0e0e0;\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-chip.mat-standard-chip .mat-chip-remove {\\n color: rgba(0, 0, 0, 0.87);\\n opacity: 0.4;\\n}\\n.mat-chip.mat-standard-chip:not(.mat-chip-disabled):active {\\n box-shadow: 0px 3px 3px -2px rgba(0, 0, 0, 0.2), 0px 3px 4px 0px rgba(0, 0, 0, 0.14), 0px 1px 8px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-chip.mat-standard-chip:not(.mat-chip-disabled) .mat-chip-remove:hover {\\n opacity: 0.54;\\n}\\n.mat-chip.mat-standard-chip.mat-chip-disabled {\\n opacity: 0.4;\\n}\\n.mat-chip.mat-standard-chip::after {\\n background: black;\\n}\\n.mat-chip.mat-standard-chip.mat-chip-selected.mat-primary {\\n background-color: #4775f5;\\n color: white;\\n}\\n.mat-chip.mat-standard-chip.mat-chip-selected.mat-primary .mat-chip-remove {\\n color: white;\\n opacity: 0.4;\\n}\\n.mat-chip.mat-standard-chip.mat-chip-selected.mat-primary .mat-ripple-element {\\n background-color: rgba(255, 255, 255, 0.1);\\n}\\n.mat-chip.mat-standard-chip.mat-chip-selected.mat-warn {\\n background-color: #fc8f76;\\n color: white;\\n}\\n.mat-chip.mat-standard-chip.mat-chip-selected.mat-warn .mat-chip-remove {\\n color: white;\\n opacity: 0.4;\\n}\\n.mat-chip.mat-standard-chip.mat-chip-selected.mat-warn .mat-ripple-element {\\n background-color: rgba(255, 255, 255, 0.1);\\n}\\n.mat-chip.mat-standard-chip.mat-chip-selected.mat-accent {\\n background-color: #f7cc71;\\n color: white;\\n}\\n.mat-chip.mat-standard-chip.mat-chip-selected.mat-accent .mat-chip-remove {\\n color: white;\\n opacity: 0.4;\\n}\\n.mat-chip.mat-standard-chip.mat-chip-selected.mat-accent .mat-ripple-element {\\n background-color: rgba(255, 255, 255, 0.1);\\n}\\n.mat-table {\\n background: white;\\n}\\n.mat-table thead, .mat-table tbody, .mat-table tfoot,\\nmat-header-row, mat-row, mat-footer-row,\\n[mat-header-row], [mat-row], [mat-footer-row],\\n.mat-table-sticky {\\n background: inherit;\\n}\\nmat-row, mat-header-row, mat-footer-row,\\nth.mat-header-cell, td.mat-cell, td.mat-footer-cell {\\n border-bottom-color: rgba(0, 0, 0, 0.12);\\n}\\n.mat-header-cell {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-cell, .mat-footer-cell {\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-calendar-arrow {\\n border-top-color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-datepicker-toggle,\\n.mat-datepicker-content .mat-calendar-next-button,\\n.mat-datepicker-content .mat-calendar-previous-button {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-calendar-table-header {\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-calendar-table-header-divider::after {\\n background: rgba(0, 0, 0, 0.12);\\n}\\n.mat-calendar-body-label {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-calendar-body-cell-content,\\n.mat-date-range-input-separator {\\n color: rgba(0, 0, 0, 0.87);\\n border-color: transparent;\\n}\\n.mat-calendar-body-disabled > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical) {\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-form-field-disabled .mat-date-range-input-separator {\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-calendar-body-in-preview {\\n color: rgba(0, 0, 0, 0.24);\\n}\\n.mat-calendar-body-today:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical) {\\n border-color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-calendar-body-disabled > .mat-calendar-body-today:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical) {\\n border-color: rgba(0, 0, 0, 0.18);\\n}\\n.mat-calendar-body-in-range::before {\\n background: rgba(71, 117, 245, 0.2);\\n}\\n.mat-calendar-body-comparison-identical,\\n.mat-calendar-body-in-comparison-range::before {\\n background: rgba(249, 171, 0, 0.2);\\n}\\n.mat-calendar-body-comparison-bridge-start::before,\\n[dir=rtl] .mat-calendar-body-comparison-bridge-end::before {\\n background: linear-gradient(to right, rgba(71, 117, 245, 0.2) 50%, rgba(249, 171, 0, 0.2) 50%);\\n}\\n.mat-calendar-body-comparison-bridge-end::before,\\n[dir=rtl] .mat-calendar-body-comparison-bridge-start::before {\\n background: linear-gradient(to left, rgba(71, 117, 245, 0.2) 50%, rgba(249, 171, 0, 0.2) 50%);\\n}\\n.mat-calendar-body-in-range > .mat-calendar-body-comparison-identical,\\n.mat-calendar-body-in-comparison-range.mat-calendar-body-in-range::after {\\n background: #a8dab5;\\n}\\n.mat-calendar-body-comparison-identical.mat-calendar-body-selected,\\n.mat-calendar-body-in-comparison-range > .mat-calendar-body-selected {\\n background: #46a35e;\\n}\\n.mat-calendar-body-selected {\\n background-color: #4775f5;\\n color: white;\\n}\\n.mat-calendar-body-disabled > .mat-calendar-body-selected {\\n background-color: rgba(71, 117, 245, 0.4);\\n}\\n.mat-calendar-body-today.mat-calendar-body-selected {\\n box-shadow: inset 0 0 0 1px white;\\n}\\n.mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),\\n.cdk-keyboard-focused .mat-calendar-body-active > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),\\n.cdk-program-focused .mat-calendar-body-active > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical) {\\n background-color: rgba(71, 117, 245, 0.3);\\n}\\n.mat-datepicker-content {\\n box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12);\\n background-color: white;\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-datepicker-content.mat-accent .mat-calendar-body-in-range::before {\\n background: rgba(247, 204, 113, 0.2);\\n}\\n.mat-datepicker-content.mat-accent .mat-calendar-body-comparison-identical,\\n.mat-datepicker-content.mat-accent .mat-calendar-body-in-comparison-range::before {\\n background: rgba(249, 171, 0, 0.2);\\n}\\n.mat-datepicker-content.mat-accent .mat-calendar-body-comparison-bridge-start::before,\\n.mat-datepicker-content.mat-accent [dir=rtl] .mat-calendar-body-comparison-bridge-end::before {\\n background: linear-gradient(to right, rgba(247, 204, 113, 0.2) 50%, rgba(249, 171, 0, 0.2) 50%);\\n}\\n.mat-datepicker-content.mat-accent .mat-calendar-body-comparison-bridge-end::before,\\n.mat-datepicker-content.mat-accent [dir=rtl] .mat-calendar-body-comparison-bridge-start::before {\\n background: linear-gradient(to left, rgba(247, 204, 113, 0.2) 50%, rgba(249, 171, 0, 0.2) 50%);\\n}\\n.mat-datepicker-content.mat-accent .mat-calendar-body-in-range > .mat-calendar-body-comparison-identical,\\n.mat-datepicker-content.mat-accent .mat-calendar-body-in-comparison-range.mat-calendar-body-in-range::after {\\n background: #a8dab5;\\n}\\n.mat-datepicker-content.mat-accent .mat-calendar-body-comparison-identical.mat-calendar-body-selected,\\n.mat-datepicker-content.mat-accent .mat-calendar-body-in-comparison-range > .mat-calendar-body-selected {\\n background: #46a35e;\\n}\\n.mat-datepicker-content.mat-accent .mat-calendar-body-selected {\\n background-color: #f7cc71;\\n color: white;\\n}\\n.mat-datepicker-content.mat-accent .mat-calendar-body-disabled > .mat-calendar-body-selected {\\n background-color: rgba(247, 204, 113, 0.4);\\n}\\n.mat-datepicker-content.mat-accent .mat-calendar-body-today.mat-calendar-body-selected {\\n box-shadow: inset 0 0 0 1px white;\\n}\\n.mat-datepicker-content.mat-accent .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),\\n.mat-datepicker-content.mat-accent .cdk-keyboard-focused .mat-calendar-body-active > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),\\n.mat-datepicker-content.mat-accent .cdk-program-focused .mat-calendar-body-active > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical) {\\n background-color: rgba(247, 204, 113, 0.3);\\n}\\n.mat-datepicker-content.mat-warn .mat-calendar-body-in-range::before {\\n background: rgba(252, 143, 118, 0.2);\\n}\\n.mat-datepicker-content.mat-warn .mat-calendar-body-comparison-identical,\\n.mat-datepicker-content.mat-warn .mat-calendar-body-in-comparison-range::before {\\n background: rgba(249, 171, 0, 0.2);\\n}\\n.mat-datepicker-content.mat-warn .mat-calendar-body-comparison-bridge-start::before,\\n.mat-datepicker-content.mat-warn [dir=rtl] .mat-calendar-body-comparison-bridge-end::before {\\n background: linear-gradient(to right, rgba(252, 143, 118, 0.2) 50%, rgba(249, 171, 0, 0.2) 50%);\\n}\\n.mat-datepicker-content.mat-warn .mat-calendar-body-comparison-bridge-end::before,\\n.mat-datepicker-content.mat-warn [dir=rtl] .mat-calendar-body-comparison-bridge-start::before {\\n background: linear-gradient(to left, rgba(252, 143, 118, 0.2) 50%, rgba(249, 171, 0, 0.2) 50%);\\n}\\n.mat-datepicker-content.mat-warn .mat-calendar-body-in-range > .mat-calendar-body-comparison-identical,\\n.mat-datepicker-content.mat-warn .mat-calendar-body-in-comparison-range.mat-calendar-body-in-range::after {\\n background: #a8dab5;\\n}\\n.mat-datepicker-content.mat-warn .mat-calendar-body-comparison-identical.mat-calendar-body-selected,\\n.mat-datepicker-content.mat-warn .mat-calendar-body-in-comparison-range > .mat-calendar-body-selected {\\n background: #46a35e;\\n}\\n.mat-datepicker-content.mat-warn .mat-calendar-body-selected {\\n background-color: #fc8f76;\\n color: white;\\n}\\n.mat-datepicker-content.mat-warn .mat-calendar-body-disabled > .mat-calendar-body-selected {\\n background-color: rgba(252, 143, 118, 0.4);\\n}\\n.mat-datepicker-content.mat-warn .mat-calendar-body-today.mat-calendar-body-selected {\\n box-shadow: inset 0 0 0 1px white;\\n}\\n.mat-datepicker-content.mat-warn .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),\\n.mat-datepicker-content.mat-warn .cdk-keyboard-focused .mat-calendar-body-active > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),\\n.mat-datepicker-content.mat-warn .cdk-program-focused .mat-calendar-body-active > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical) {\\n background-color: rgba(252, 143, 118, 0.3);\\n}\\n.mat-datepicker-content-touch {\\n box-shadow: 0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 9px 46px 8px rgba(0, 0, 0, 0.12);\\n}\\n.mat-datepicker-toggle-active {\\n color: #4775f5;\\n}\\n.mat-datepicker-toggle-active.mat-accent {\\n color: #f7cc71;\\n}\\n.mat-datepicker-toggle-active.mat-warn {\\n color: #fc8f76;\\n}\\n.mat-date-range-input-inner[disabled] {\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-dialog-container {\\n box-shadow: 0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 9px 46px 8px rgba(0, 0, 0, 0.12);\\n background: white;\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-divider {\\n border-top-color: rgba(0, 0, 0, 0.12);\\n}\\n.mat-divider-vertical {\\n border-right-color: rgba(0, 0, 0, 0.12);\\n}\\n.mat-expansion-panel {\\n background: white;\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-expansion-panel:not([class*=mat-elevation-z]) {\\n box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-action-row {\\n border-top-color: rgba(0, 0, 0, 0.12);\\n}\\n.mat-expansion-panel .mat-expansion-panel-header.cdk-keyboard-focused:not([aria-disabled=true]), .mat-expansion-panel .mat-expansion-panel-header.cdk-program-focused:not([aria-disabled=true]), .mat-expansion-panel:not(.mat-expanded) .mat-expansion-panel-header:hover:not([aria-disabled=true]) {\\n background: rgba(0, 0, 0, 0.04);\\n}\\n@media (hover: none) {\\n .mat-expansion-panel:not(.mat-expanded):not([aria-disabled=true]) .mat-expansion-panel-header:hover {\\n background: white;\\n }\\n}\\n.mat-expansion-panel-header-title {\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-expansion-panel-header-description,\\n.mat-expansion-indicator::after {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-expansion-panel-header[aria-disabled=true] {\\n color: rgba(0, 0, 0, 0.26);\\n}\\n.mat-expansion-panel-header[aria-disabled=true] .mat-expansion-panel-header-title,\\n.mat-expansion-panel-header[aria-disabled=true] .mat-expansion-panel-header-description {\\n color: inherit;\\n}\\n.mat-expansion-panel-header {\\n height: 48px;\\n}\\n.mat-expansion-panel-header.mat-expanded {\\n height: 64px;\\n}\\n.mat-form-field-label {\\n color: rgba(0, 0, 0, 0.6);\\n}\\n.mat-hint {\\n color: rgba(0, 0, 0, 0.6);\\n}\\n.mat-form-field.mat-focused .mat-form-field-label {\\n color: #4775f5;\\n}\\n.mat-form-field.mat-focused .mat-form-field-label.mat-accent {\\n color: #f7cc71;\\n}\\n.mat-form-field.mat-focused .mat-form-field-label.mat-warn {\\n color: #fc8f76;\\n}\\n.mat-focused .mat-form-field-required-marker {\\n color: #f7cc71;\\n}\\n.mat-form-field-ripple {\\n background-color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-form-field.mat-focused .mat-form-field-ripple {\\n background-color: #4775f5;\\n}\\n.mat-form-field.mat-focused .mat-form-field-ripple.mat-accent {\\n background-color: #f7cc71;\\n}\\n.mat-form-field.mat-focused .mat-form-field-ripple.mat-warn {\\n background-color: #fc8f76;\\n}\\n.mat-form-field-type-mat-native-select.mat-focused:not(.mat-form-field-invalid) .mat-form-field-infix::after {\\n color: #4775f5;\\n}\\n.mat-form-field-type-mat-native-select.mat-focused:not(.mat-form-field-invalid).mat-accent .mat-form-field-infix::after {\\n color: #f7cc71;\\n}\\n.mat-form-field-type-mat-native-select.mat-focused:not(.mat-form-field-invalid).mat-warn .mat-form-field-infix::after {\\n color: #fc8f76;\\n}\\n.mat-form-field.mat-form-field-invalid .mat-form-field-label {\\n color: #fc8f76;\\n}\\n.mat-form-field.mat-form-field-invalid .mat-form-field-label.mat-accent,\\n.mat-form-field.mat-form-field-invalid .mat-form-field-label .mat-form-field-required-marker {\\n color: #fc8f76;\\n}\\n.mat-form-field.mat-form-field-invalid .mat-form-field-ripple,\\n.mat-form-field.mat-form-field-invalid .mat-form-field-ripple.mat-accent {\\n background-color: #fc8f76;\\n}\\n.mat-error {\\n color: #fc8f76;\\n}\\n.mat-form-field-appearance-legacy .mat-form-field-label {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-form-field-appearance-legacy .mat-hint {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-form-field-appearance-legacy .mat-form-field-underline {\\n background-color: rgba(0, 0, 0, 0.42);\\n}\\n.mat-form-field-appearance-legacy.mat-form-field-disabled .mat-form-field-underline {\\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.42) 0%, rgba(0, 0, 0, 0.42) 33%, transparent 0%);\\n background-size: 4px 100%;\\n background-repeat: repeat-x;\\n}\\n.mat-form-field-appearance-standard .mat-form-field-underline {\\n background-color: rgba(0, 0, 0, 0.42);\\n}\\n.mat-form-field-appearance-standard.mat-form-field-disabled .mat-form-field-underline {\\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.42) 0%, rgba(0, 0, 0, 0.42) 33%, transparent 0%);\\n background-size: 4px 100%;\\n background-repeat: repeat-x;\\n}\\n.mat-form-field-appearance-fill .mat-form-field-flex {\\n background-color: rgba(0, 0, 0, 0.04);\\n}\\n.mat-form-field-appearance-fill.mat-form-field-disabled .mat-form-field-flex {\\n background-color: rgba(0, 0, 0, 0.02);\\n}\\n.mat-form-field-appearance-fill .mat-form-field-underline::before {\\n background-color: rgba(0, 0, 0, 0.42);\\n}\\n.mat-form-field-appearance-fill.mat-form-field-disabled .mat-form-field-label {\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-form-field-appearance-fill.mat-form-field-disabled .mat-form-field-underline::before {\\n background-color: transparent;\\n}\\n.mat-form-field-appearance-outline .mat-form-field-outline {\\n color: rgba(0, 0, 0, 0.12);\\n}\\n.mat-form-field-appearance-outline .mat-form-field-outline-thick {\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-form-field-appearance-outline.mat-focused .mat-form-field-outline-thick {\\n color: #4775f5;\\n}\\n.mat-form-field-appearance-outline.mat-focused.mat-accent .mat-form-field-outline-thick {\\n color: #f7cc71;\\n}\\n.mat-form-field-appearance-outline.mat-focused.mat-warn .mat-form-field-outline-thick {\\n color: #fc8f76;\\n}\\n.mat-form-field-appearance-outline.mat-form-field-invalid.mat-form-field-invalid .mat-form-field-outline-thick {\\n color: #fc8f76;\\n}\\n.mat-form-field-appearance-outline.mat-form-field-disabled .mat-form-field-label {\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-form-field-appearance-outline.mat-form-field-disabled .mat-form-field-outline {\\n color: rgba(0, 0, 0, 0.06);\\n}\\n.mat-icon.mat-primary {\\n color: #4775f5;\\n}\\n.mat-icon.mat-accent {\\n color: #f7cc71;\\n}\\n.mat-icon.mat-warn {\\n color: #fc8f76;\\n}\\n.mat-form-field-type-mat-native-select .mat-form-field-infix::after {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-input-element:disabled,\\n.mat-form-field-type-mat-native-select.mat-form-field-disabled .mat-form-field-infix::after {\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-input-element {\\n caret-color: #4775f5;\\n}\\n.mat-input-element:-ms-input-placeholder {\\n color: rgba(0, 0, 0, 0.42);\\n}\\n.mat-input-element::placeholder {\\n color: rgba(0, 0, 0, 0.42);\\n}\\n.mat-input-element::-moz-placeholder {\\n color: rgba(0, 0, 0, 0.42);\\n}\\n.mat-input-element::-webkit-input-placeholder {\\n color: rgba(0, 0, 0, 0.42);\\n}\\n.mat-input-element:-ms-input-placeholder {\\n color: rgba(0, 0, 0, 0.42);\\n}\\n.mat-form-field.mat-accent .mat-input-element {\\n caret-color: #f7cc71;\\n}\\n.mat-form-field.mat-warn .mat-input-element,\\n.mat-form-field-invalid .mat-input-element {\\n caret-color: #fc8f76;\\n}\\n.mat-form-field-type-mat-native-select.mat-form-field-invalid .mat-form-field-infix::after {\\n color: #fc8f76;\\n}\\n.mat-list-base .mat-list-item {\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-list-base .mat-list-option {\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-list-base .mat-subheader {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-list-item-disabled {\\n background-color: #eeeeee;\\n}\\n.mat-list-option:hover, .mat-list-option:focus,\\n.mat-nav-list .mat-list-item:hover,\\n.mat-nav-list .mat-list-item:focus,\\n.mat-action-list .mat-list-item:hover,\\n.mat-action-list .mat-list-item:focus {\\n background: rgba(0, 0, 0, 0.04);\\n}\\n.mat-list-single-selected-option, .mat-list-single-selected-option:hover, .mat-list-single-selected-option:focus {\\n background: rgba(0, 0, 0, 0.12);\\n}\\n.mat-menu-panel {\\n background: white;\\n}\\n.mat-menu-panel:not([class*=mat-elevation-z]) {\\n box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-menu-item {\\n background: transparent;\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-menu-item[disabled], .mat-menu-item[disabled]::after,\\n.mat-menu-item[disabled] .mat-icon-no-color {\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-menu-item .mat-icon-no-color,\\n.mat-menu-item-submenu-trigger::after {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-menu-item:hover:not([disabled]),\\n.mat-menu-item.cdk-program-focused:not([disabled]),\\n.mat-menu-item.cdk-keyboard-focused:not([disabled]),\\n.mat-menu-item-highlighted:not([disabled]) {\\n background: rgba(0, 0, 0, 0.04);\\n}\\n.mat-paginator {\\n background: white;\\n}\\n.mat-paginator,\\n.mat-paginator-page-size .mat-select-trigger {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-paginator-decrement,\\n.mat-paginator-increment {\\n border-top: 2px solid rgba(0, 0, 0, 0.54);\\n border-right: 2px solid rgba(0, 0, 0, 0.54);\\n}\\n.mat-paginator-first,\\n.mat-paginator-last {\\n border-top: 2px solid rgba(0, 0, 0, 0.54);\\n}\\n.mat-icon-button[disabled] .mat-paginator-decrement,\\n.mat-icon-button[disabled] .mat-paginator-increment,\\n.mat-icon-button[disabled] .mat-paginator-first,\\n.mat-icon-button[disabled] .mat-paginator-last {\\n border-color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-paginator-container {\\n min-height: 56px;\\n}\\n.mat-progress-bar-background {\\n fill: #cdd9f9;\\n}\\n.mat-progress-bar-buffer {\\n background-color: #cdd9f9;\\n}\\n.mat-progress-bar-fill::after {\\n background-color: #4775f5;\\n}\\n.mat-progress-bar.mat-accent .mat-progress-bar-background {\\n fill: #f9efd8;\\n}\\n.mat-progress-bar.mat-accent .mat-progress-bar-buffer {\\n background-color: #f9efd8;\\n}\\n.mat-progress-bar.mat-accent .mat-progress-bar-fill::after {\\n background-color: #f7cc71;\\n}\\n.mat-progress-bar.mat-warn .mat-progress-bar-background {\\n fill: #fbdfd9;\\n}\\n.mat-progress-bar.mat-warn .mat-progress-bar-buffer {\\n background-color: #fbdfd9;\\n}\\n.mat-progress-bar.mat-warn .mat-progress-bar-fill::after {\\n background-color: #fc8f76;\\n}\\n.mat-progress-spinner circle, .mat-spinner circle {\\n stroke: #4775f5;\\n}\\n.mat-progress-spinner.mat-accent circle, .mat-spinner.mat-accent circle {\\n stroke: #f7cc71;\\n}\\n.mat-progress-spinner.mat-warn circle, .mat-spinner.mat-warn circle {\\n stroke: #fc8f76;\\n}\\n.mat-radio-outer-circle {\\n border-color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-radio-button.mat-primary.mat-radio-checked .mat-radio-outer-circle {\\n border-color: #4775f5;\\n}\\n.mat-radio-button.mat-primary .mat-radio-inner-circle,\\n.mat-radio-button.mat-primary .mat-radio-ripple .mat-ripple-element:not(.mat-radio-persistent-ripple), .mat-radio-button.mat-primary.mat-radio-checked .mat-radio-persistent-ripple, .mat-radio-button.mat-primary:active .mat-radio-persistent-ripple {\\n background-color: #4775f5;\\n}\\n.mat-radio-button.mat-accent.mat-radio-checked .mat-radio-outer-circle {\\n border-color: #f7cc71;\\n}\\n.mat-radio-button.mat-accent .mat-radio-inner-circle,\\n.mat-radio-button.mat-accent .mat-radio-ripple .mat-ripple-element:not(.mat-radio-persistent-ripple), .mat-radio-button.mat-accent.mat-radio-checked .mat-radio-persistent-ripple, .mat-radio-button.mat-accent:active .mat-radio-persistent-ripple {\\n background-color: #f7cc71;\\n}\\n.mat-radio-button.mat-warn.mat-radio-checked .mat-radio-outer-circle {\\n border-color: #fc8f76;\\n}\\n.mat-radio-button.mat-warn .mat-radio-inner-circle,\\n.mat-radio-button.mat-warn .mat-radio-ripple .mat-ripple-element:not(.mat-radio-persistent-ripple), .mat-radio-button.mat-warn.mat-radio-checked .mat-radio-persistent-ripple, .mat-radio-button.mat-warn:active .mat-radio-persistent-ripple {\\n background-color: #fc8f76;\\n}\\n.mat-radio-button.mat-radio-disabled.mat-radio-checked .mat-radio-outer-circle,\\n.mat-radio-button.mat-radio-disabled .mat-radio-outer-circle {\\n border-color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-radio-button.mat-radio-disabled .mat-radio-ripple .mat-ripple-element,\\n.mat-radio-button.mat-radio-disabled .mat-radio-inner-circle {\\n background-color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-radio-button.mat-radio-disabled .mat-radio-label-content {\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-radio-button .mat-ripple-element {\\n background-color: black;\\n}\\n.mat-select-value {\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-select-placeholder {\\n color: rgba(0, 0, 0, 0.42);\\n}\\n.mat-select-disabled .mat-select-value {\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-select-arrow {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-select-panel {\\n background: white;\\n}\\n.mat-select-panel:not([class*=mat-elevation-z]) {\\n box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-select-panel .mat-option.mat-selected:not(.mat-option-multiple) {\\n background: rgba(0, 0, 0, 0.12);\\n}\\n.mat-form-field.mat-focused.mat-primary .mat-select-arrow {\\n color: #4775f5;\\n}\\n.mat-form-field.mat-focused.mat-accent .mat-select-arrow {\\n color: #f7cc71;\\n}\\n.mat-form-field.mat-focused.mat-warn .mat-select-arrow {\\n color: #fc8f76;\\n}\\n.mat-form-field .mat-select.mat-select-invalid .mat-select-arrow {\\n color: #fc8f76;\\n}\\n.mat-form-field .mat-select.mat-select-disabled .mat-select-arrow {\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-drawer-container {\\n background-color: #fafafa;\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-drawer {\\n background-color: white;\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-drawer.mat-drawer-push {\\n background-color: white;\\n}\\n.mat-drawer:not(.mat-drawer-side) {\\n box-shadow: 0px 8px 10px -5px rgba(0, 0, 0, 0.2), 0px 16px 24px 2px rgba(0, 0, 0, 0.14), 0px 6px 30px 5px rgba(0, 0, 0, 0.12);\\n}\\n.mat-drawer-side {\\n border-right: solid 1px rgba(0, 0, 0, 0.12);\\n}\\n.mat-drawer-side.mat-drawer-end {\\n border-left: solid 1px rgba(0, 0, 0, 0.12);\\n border-right: none;\\n}\\n[dir=rtl] .mat-drawer-side {\\n border-left: solid 1px rgba(0, 0, 0, 0.12);\\n border-right: none;\\n}\\n[dir=rtl] .mat-drawer-side.mat-drawer-end {\\n border-left: none;\\n border-right: solid 1px rgba(0, 0, 0, 0.12);\\n}\\n.mat-drawer-backdrop.mat-drawer-shown {\\n background-color: rgba(0, 0, 0, 0.6);\\n}\\n.mat-slide-toggle.mat-checked .mat-slide-toggle-thumb {\\n background-color: #f7cc71;\\n}\\n.mat-slide-toggle.mat-checked .mat-slide-toggle-bar {\\n background-color: rgba(247, 204, 113, 0.54);\\n}\\n.mat-slide-toggle.mat-checked .mat-ripple-element {\\n background-color: #f7cc71;\\n}\\n.mat-slide-toggle.mat-primary.mat-checked .mat-slide-toggle-thumb {\\n background-color: #4775f5;\\n}\\n.mat-slide-toggle.mat-primary.mat-checked .mat-slide-toggle-bar {\\n background-color: rgba(71, 117, 245, 0.54);\\n}\\n.mat-slide-toggle.mat-primary.mat-checked .mat-ripple-element {\\n background-color: #4775f5;\\n}\\n.mat-slide-toggle.mat-warn.mat-checked .mat-slide-toggle-thumb {\\n background-color: #fc8f76;\\n}\\n.mat-slide-toggle.mat-warn.mat-checked .mat-slide-toggle-bar {\\n background-color: rgba(252, 143, 118, 0.54);\\n}\\n.mat-slide-toggle.mat-warn.mat-checked .mat-ripple-element {\\n background-color: #fc8f76;\\n}\\n.mat-slide-toggle:not(.mat-checked) .mat-ripple-element {\\n background-color: black;\\n}\\n.mat-slide-toggle-thumb {\\n box-shadow: 0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12);\\n background-color: #fafafa;\\n}\\n.mat-slide-toggle-bar {\\n background-color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-slider-track-background {\\n background-color: rgba(0, 0, 0, 0.26);\\n}\\n.mat-primary .mat-slider-track-fill,\\n.mat-primary .mat-slider-thumb,\\n.mat-primary .mat-slider-thumb-label {\\n background-color: #4775f5;\\n}\\n.mat-primary .mat-slider-thumb-label-text {\\n color: white;\\n}\\n.mat-primary .mat-slider-focus-ring {\\n background-color: rgba(71, 117, 245, 0.2);\\n}\\n.mat-accent .mat-slider-track-fill,\\n.mat-accent .mat-slider-thumb,\\n.mat-accent .mat-slider-thumb-label {\\n background-color: #f7cc71;\\n}\\n.mat-accent .mat-slider-thumb-label-text {\\n color: white;\\n}\\n.mat-accent .mat-slider-focus-ring {\\n background-color: rgba(247, 204, 113, 0.2);\\n}\\n.mat-warn .mat-slider-track-fill,\\n.mat-warn .mat-slider-thumb,\\n.mat-warn .mat-slider-thumb-label {\\n background-color: #fc8f76;\\n}\\n.mat-warn .mat-slider-thumb-label-text {\\n color: white;\\n}\\n.mat-warn .mat-slider-focus-ring {\\n background-color: rgba(252, 143, 118, 0.2);\\n}\\n.mat-slider:hover .mat-slider-track-background,\\n.cdk-focused .mat-slider-track-background {\\n background-color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-slider-disabled .mat-slider-track-background,\\n.mat-slider-disabled .mat-slider-track-fill,\\n.mat-slider-disabled .mat-slider-thumb {\\n background-color: rgba(0, 0, 0, 0.26);\\n}\\n.mat-slider-disabled:hover .mat-slider-track-background {\\n background-color: rgba(0, 0, 0, 0.26);\\n}\\n.mat-slider-min-value .mat-slider-focus-ring {\\n background-color: rgba(0, 0, 0, 0.12);\\n}\\n.mat-slider-min-value.mat-slider-thumb-label-showing .mat-slider-thumb,\\n.mat-slider-min-value.mat-slider-thumb-label-showing .mat-slider-thumb-label {\\n background-color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-slider-min-value.mat-slider-thumb-label-showing.cdk-focused .mat-slider-thumb,\\n.mat-slider-min-value.mat-slider-thumb-label-showing.cdk-focused .mat-slider-thumb-label {\\n background-color: rgba(0, 0, 0, 0.26);\\n}\\n.mat-slider-min-value:not(.mat-slider-thumb-label-showing) .mat-slider-thumb {\\n border-color: rgba(0, 0, 0, 0.26);\\n background-color: transparent;\\n}\\n.mat-slider-min-value:not(.mat-slider-thumb-label-showing):hover .mat-slider-thumb, .mat-slider-min-value:not(.mat-slider-thumb-label-showing).cdk-focused .mat-slider-thumb {\\n border-color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-slider-min-value:not(.mat-slider-thumb-label-showing):hover.mat-slider-disabled .mat-slider-thumb, .mat-slider-min-value:not(.mat-slider-thumb-label-showing).cdk-focused.mat-slider-disabled .mat-slider-thumb {\\n border-color: rgba(0, 0, 0, 0.26);\\n}\\n.mat-slider-has-ticks .mat-slider-wrapper::after {\\n border-color: rgba(0, 0, 0, 0.7);\\n}\\n.mat-slider-horizontal .mat-slider-ticks {\\n background-image: repeating-linear-gradient(to right, rgba(0, 0, 0, 0.7), rgba(0, 0, 0, 0.7) 2px, transparent 0, transparent);\\n background-image: -moz-repeating-linear-gradient(0.0001deg, rgba(0, 0, 0, 0.7), rgba(0, 0, 0, 0.7) 2px, transparent 0, transparent);\\n}\\n.mat-slider-vertical .mat-slider-ticks {\\n background-image: repeating-linear-gradient(to bottom, rgba(0, 0, 0, 0.7), rgba(0, 0, 0, 0.7) 2px, transparent 0, transparent);\\n}\\n.mat-step-header.cdk-keyboard-focused, .mat-step-header.cdk-program-focused, .mat-step-header:hover {\\n background-color: rgba(0, 0, 0, 0.04);\\n}\\n@media (hover: none) {\\n .mat-step-header:hover {\\n background: none;\\n }\\n}\\n.mat-step-header .mat-step-label,\\n.mat-step-header .mat-step-optional {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-step-header .mat-step-icon {\\n background-color: rgba(0, 0, 0, 0.54);\\n color: white;\\n}\\n.mat-step-header .mat-step-icon-selected,\\n.mat-step-header .mat-step-icon-state-done,\\n.mat-step-header .mat-step-icon-state-edit {\\n background-color: #4775f5;\\n color: white;\\n}\\n.mat-step-header.mat-accent .mat-step-icon {\\n color: white;\\n}\\n.mat-step-header.mat-accent .mat-step-icon-selected,\\n.mat-step-header.mat-accent .mat-step-icon-state-done,\\n.mat-step-header.mat-accent .mat-step-icon-state-edit {\\n background-color: #f7cc71;\\n color: white;\\n}\\n.mat-step-header.mat-warn .mat-step-icon {\\n color: white;\\n}\\n.mat-step-header.mat-warn .mat-step-icon-selected,\\n.mat-step-header.mat-warn .mat-step-icon-state-done,\\n.mat-step-header.mat-warn .mat-step-icon-state-edit {\\n background-color: #fc8f76;\\n color: white;\\n}\\n.mat-step-header .mat-step-icon-state-error {\\n background-color: transparent;\\n color: #fc8f76;\\n}\\n.mat-step-header .mat-step-label.mat-step-label-active {\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-step-header .mat-step-label.mat-step-label-error {\\n color: #fc8f76;\\n}\\n.mat-stepper-horizontal, .mat-stepper-vertical {\\n background-color: white;\\n}\\n.mat-stepper-vertical-line::before {\\n border-left-color: rgba(0, 0, 0, 0.12);\\n}\\n.mat-horizontal-stepper-header::before,\\n.mat-horizontal-stepper-header::after,\\n.mat-stepper-horizontal-line {\\n border-top-color: rgba(0, 0, 0, 0.12);\\n}\\n.mat-horizontal-stepper-header {\\n height: 72px;\\n}\\n.mat-stepper-label-position-bottom .mat-horizontal-stepper-header,\\n.mat-vertical-stepper-header {\\n padding: 24px 24px;\\n}\\n.mat-stepper-vertical-line::before {\\n top: -16px;\\n bottom: -16px;\\n}\\n.mat-stepper-label-position-bottom .mat-horizontal-stepper-header::after, .mat-stepper-label-position-bottom .mat-horizontal-stepper-header::before {\\n top: 36px;\\n}\\n.mat-stepper-label-position-bottom .mat-stepper-horizontal-line {\\n top: 36px;\\n}\\n.mat-sort-header-arrow {\\n color: #757575;\\n}\\n.mat-tab-nav-bar,\\n.mat-tab-header {\\n border-bottom: 1px solid rgba(0, 0, 0, 0.12);\\n}\\n.mat-tab-group-inverted-header .mat-tab-nav-bar,\\n.mat-tab-group-inverted-header .mat-tab-header {\\n border-top: 1px solid rgba(0, 0, 0, 0.12);\\n border-bottom: none;\\n}\\n.mat-tab-label, .mat-tab-link {\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-tab-label.mat-tab-disabled, .mat-tab-link.mat-tab-disabled {\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-tab-header-pagination-chevron {\\n border-color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron {\\n border-color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-tab-group[class*=mat-background-] .mat-tab-header,\\n.mat-tab-nav-bar[class*=mat-background-] {\\n border-bottom: none;\\n border-top: none;\\n}\\n.mat-tab-group.mat-primary .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-group.mat-primary .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),\\n.mat-tab-group.mat-primary .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),\\n.mat-tab-group.mat-primary .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-primary .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-primary .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),\\n.mat-tab-nav-bar.mat-primary .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),\\n.mat-tab-nav-bar.mat-primary .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled) {\\n background-color: rgba(104, 145, 255, 0.3);\\n}\\n.mat-tab-group.mat-primary .mat-ink-bar, .mat-tab-nav-bar.mat-primary .mat-ink-bar {\\n background-color: #4775f5;\\n}\\n.mat-tab-group.mat-primary.mat-background-primary > .mat-tab-header .mat-ink-bar, .mat-tab-group.mat-primary.mat-background-primary > .mat-tab-link-container .mat-ink-bar, .mat-tab-nav-bar.mat-primary.mat-background-primary > .mat-tab-header .mat-ink-bar, .mat-tab-nav-bar.mat-primary.mat-background-primary > .mat-tab-link-container .mat-ink-bar {\\n background-color: white;\\n}\\n.mat-tab-group.mat-accent .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-group.mat-accent .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),\\n.mat-tab-group.mat-accent .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),\\n.mat-tab-group.mat-accent .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-accent .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-accent .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),\\n.mat-tab-nav-bar.mat-accent .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),\\n.mat-tab-nav-bar.mat-accent .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled) {\\n background-color: rgba(255, 219, 142, 0.3);\\n}\\n.mat-tab-group.mat-accent .mat-ink-bar, .mat-tab-nav-bar.mat-accent .mat-ink-bar {\\n background-color: #f7cc71;\\n}\\n.mat-tab-group.mat-accent.mat-background-accent > .mat-tab-header .mat-ink-bar, .mat-tab-group.mat-accent.mat-background-accent > .mat-tab-link-container .mat-ink-bar, .mat-tab-nav-bar.mat-accent.mat-background-accent > .mat-tab-header .mat-ink-bar, .mat-tab-nav-bar.mat-accent.mat-background-accent > .mat-tab-link-container .mat-ink-bar {\\n background-color: white;\\n}\\n.mat-tab-group.mat-warn .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-group.mat-warn .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),\\n.mat-tab-group.mat-warn .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),\\n.mat-tab-group.mat-warn .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-warn .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-warn .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),\\n.mat-tab-nav-bar.mat-warn .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),\\n.mat-tab-nav-bar.mat-warn .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled) {\\n background-color: rgba(255, 165, 145, 0.3);\\n}\\n.mat-tab-group.mat-warn .mat-ink-bar, .mat-tab-nav-bar.mat-warn .mat-ink-bar {\\n background-color: #fc8f76;\\n}\\n.mat-tab-group.mat-warn.mat-background-warn > .mat-tab-header .mat-ink-bar, .mat-tab-group.mat-warn.mat-background-warn > .mat-tab-link-container .mat-ink-bar, .mat-tab-nav-bar.mat-warn.mat-background-warn > .mat-tab-header .mat-ink-bar, .mat-tab-nav-bar.mat-warn.mat-background-warn > .mat-tab-link-container .mat-ink-bar {\\n background-color: white;\\n}\\n.mat-tab-group.mat-background-primary .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-group.mat-background-primary .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),\\n.mat-tab-group.mat-background-primary .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),\\n.mat-tab-group.mat-background-primary .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-background-primary .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-background-primary .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),\\n.mat-tab-nav-bar.mat-background-primary .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),\\n.mat-tab-nav-bar.mat-background-primary .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled) {\\n background-color: rgba(104, 145, 255, 0.3);\\n}\\n.mat-tab-group.mat-background-primary > .mat-tab-header, .mat-tab-group.mat-background-primary > .mat-tab-link-container, .mat-tab-group.mat-background-primary > .mat-tab-header-pagination, .mat-tab-nav-bar.mat-background-primary > .mat-tab-header, .mat-tab-nav-bar.mat-background-primary > .mat-tab-link-container, .mat-tab-nav-bar.mat-background-primary > .mat-tab-header-pagination {\\n background-color: #4775f5;\\n}\\n.mat-tab-group.mat-background-primary > .mat-tab-header .mat-tab-label, .mat-tab-group.mat-background-primary > .mat-tab-link-container .mat-tab-link, .mat-tab-nav-bar.mat-background-primary > .mat-tab-header .mat-tab-label, .mat-tab-nav-bar.mat-background-primary > .mat-tab-link-container .mat-tab-link {\\n color: white;\\n}\\n.mat-tab-group.mat-background-primary > .mat-tab-header .mat-tab-label.mat-tab-disabled, .mat-tab-group.mat-background-primary > .mat-tab-link-container .mat-tab-link.mat-tab-disabled, .mat-tab-nav-bar.mat-background-primary > .mat-tab-header .mat-tab-label.mat-tab-disabled, .mat-tab-nav-bar.mat-background-primary > .mat-tab-link-container .mat-tab-link.mat-tab-disabled {\\n color: rgba(255, 255, 255, 0.4);\\n}\\n.mat-tab-group.mat-background-primary > .mat-tab-header .mat-tab-header-pagination-chevron,\\n.mat-tab-group.mat-background-primary > .mat-tab-header-pagination .mat-tab-header-pagination-chevron,\\n.mat-tab-group.mat-background-primary > .mat-tab-link-container .mat-focus-indicator::before,\\n.mat-tab-group.mat-background-primary > .mat-tab-header .mat-focus-indicator::before, .mat-tab-nav-bar.mat-background-primary > .mat-tab-header .mat-tab-header-pagination-chevron,\\n.mat-tab-nav-bar.mat-background-primary > .mat-tab-header-pagination .mat-tab-header-pagination-chevron,\\n.mat-tab-nav-bar.mat-background-primary > .mat-tab-link-container .mat-focus-indicator::before,\\n.mat-tab-nav-bar.mat-background-primary > .mat-tab-header .mat-focus-indicator::before {\\n border-color: white;\\n}\\n.mat-tab-group.mat-background-primary > .mat-tab-header .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron,\\n.mat-tab-group.mat-background-primary > .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron, .mat-tab-nav-bar.mat-background-primary > .mat-tab-header .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron,\\n.mat-tab-nav-bar.mat-background-primary > .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron {\\n border-color: rgba(255, 255, 255, 0.4);\\n}\\n.mat-tab-group.mat-background-primary > .mat-tab-header .mat-ripple-element,\\n.mat-tab-group.mat-background-primary > .mat-tab-link-container .mat-ripple-element,\\n.mat-tab-group.mat-background-primary > .mat-tab-header-pagination .mat-ripple-element, .mat-tab-nav-bar.mat-background-primary > .mat-tab-header .mat-ripple-element,\\n.mat-tab-nav-bar.mat-background-primary > .mat-tab-link-container .mat-ripple-element,\\n.mat-tab-nav-bar.mat-background-primary > .mat-tab-header-pagination .mat-ripple-element {\\n background-color: rgba(255, 255, 255, 0.12);\\n}\\n.mat-tab-group.mat-background-accent .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-group.mat-background-accent .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),\\n.mat-tab-group.mat-background-accent .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),\\n.mat-tab-group.mat-background-accent .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-background-accent .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-background-accent .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),\\n.mat-tab-nav-bar.mat-background-accent .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),\\n.mat-tab-nav-bar.mat-background-accent .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled) {\\n background-color: rgba(255, 219, 142, 0.3);\\n}\\n.mat-tab-group.mat-background-accent > .mat-tab-header, .mat-tab-group.mat-background-accent > .mat-tab-link-container, .mat-tab-group.mat-background-accent > .mat-tab-header-pagination, .mat-tab-nav-bar.mat-background-accent > .mat-tab-header, .mat-tab-nav-bar.mat-background-accent > .mat-tab-link-container, .mat-tab-nav-bar.mat-background-accent > .mat-tab-header-pagination {\\n background-color: #f7cc71;\\n}\\n.mat-tab-group.mat-background-accent > .mat-tab-header .mat-tab-label, .mat-tab-group.mat-background-accent > .mat-tab-link-container .mat-tab-link, .mat-tab-nav-bar.mat-background-accent > .mat-tab-header .mat-tab-label, .mat-tab-nav-bar.mat-background-accent > .mat-tab-link-container .mat-tab-link {\\n color: white;\\n}\\n.mat-tab-group.mat-background-accent > .mat-tab-header .mat-tab-label.mat-tab-disabled, .mat-tab-group.mat-background-accent > .mat-tab-link-container .mat-tab-link.mat-tab-disabled, .mat-tab-nav-bar.mat-background-accent > .mat-tab-header .mat-tab-label.mat-tab-disabled, .mat-tab-nav-bar.mat-background-accent > .mat-tab-link-container .mat-tab-link.mat-tab-disabled {\\n color: rgba(255, 255, 255, 0.4);\\n}\\n.mat-tab-group.mat-background-accent > .mat-tab-header .mat-tab-header-pagination-chevron,\\n.mat-tab-group.mat-background-accent > .mat-tab-header-pagination .mat-tab-header-pagination-chevron,\\n.mat-tab-group.mat-background-accent > .mat-tab-link-container .mat-focus-indicator::before,\\n.mat-tab-group.mat-background-accent > .mat-tab-header .mat-focus-indicator::before, .mat-tab-nav-bar.mat-background-accent > .mat-tab-header .mat-tab-header-pagination-chevron,\\n.mat-tab-nav-bar.mat-background-accent > .mat-tab-header-pagination .mat-tab-header-pagination-chevron,\\n.mat-tab-nav-bar.mat-background-accent > .mat-tab-link-container .mat-focus-indicator::before,\\n.mat-tab-nav-bar.mat-background-accent > .mat-tab-header .mat-focus-indicator::before {\\n border-color: white;\\n}\\n.mat-tab-group.mat-background-accent > .mat-tab-header .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron,\\n.mat-tab-group.mat-background-accent > .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron, .mat-tab-nav-bar.mat-background-accent > .mat-tab-header .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron,\\n.mat-tab-nav-bar.mat-background-accent > .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron {\\n border-color: rgba(255, 255, 255, 0.4);\\n}\\n.mat-tab-group.mat-background-accent > .mat-tab-header .mat-ripple-element,\\n.mat-tab-group.mat-background-accent > .mat-tab-link-container .mat-ripple-element,\\n.mat-tab-group.mat-background-accent > .mat-tab-header-pagination .mat-ripple-element, .mat-tab-nav-bar.mat-background-accent > .mat-tab-header .mat-ripple-element,\\n.mat-tab-nav-bar.mat-background-accent > .mat-tab-link-container .mat-ripple-element,\\n.mat-tab-nav-bar.mat-background-accent > .mat-tab-header-pagination .mat-ripple-element {\\n background-color: rgba(255, 255, 255, 0.12);\\n}\\n.mat-tab-group.mat-background-warn .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-group.mat-background-warn .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),\\n.mat-tab-group.mat-background-warn .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),\\n.mat-tab-group.mat-background-warn .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-background-warn .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-background-warn .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),\\n.mat-tab-nav-bar.mat-background-warn .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),\\n.mat-tab-nav-bar.mat-background-warn .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled) {\\n background-color: rgba(255, 165, 145, 0.3);\\n}\\n.mat-tab-group.mat-background-warn > .mat-tab-header, .mat-tab-group.mat-background-warn > .mat-tab-link-container, .mat-tab-group.mat-background-warn > .mat-tab-header-pagination, .mat-tab-nav-bar.mat-background-warn > .mat-tab-header, .mat-tab-nav-bar.mat-background-warn > .mat-tab-link-container, .mat-tab-nav-bar.mat-background-warn > .mat-tab-header-pagination {\\n background-color: #fc8f76;\\n}\\n.mat-tab-group.mat-background-warn > .mat-tab-header .mat-tab-label, .mat-tab-group.mat-background-warn > .mat-tab-link-container .mat-tab-link, .mat-tab-nav-bar.mat-background-warn > .mat-tab-header .mat-tab-label, .mat-tab-nav-bar.mat-background-warn > .mat-tab-link-container .mat-tab-link {\\n color: white;\\n}\\n.mat-tab-group.mat-background-warn > .mat-tab-header .mat-tab-label.mat-tab-disabled, .mat-tab-group.mat-background-warn > .mat-tab-link-container .mat-tab-link.mat-tab-disabled, .mat-tab-nav-bar.mat-background-warn > .mat-tab-header .mat-tab-label.mat-tab-disabled, .mat-tab-nav-bar.mat-background-warn > .mat-tab-link-container .mat-tab-link.mat-tab-disabled {\\n color: rgba(255, 255, 255, 0.4);\\n}\\n.mat-tab-group.mat-background-warn > .mat-tab-header .mat-tab-header-pagination-chevron,\\n.mat-tab-group.mat-background-warn > .mat-tab-header-pagination .mat-tab-header-pagination-chevron,\\n.mat-tab-group.mat-background-warn > .mat-tab-link-container .mat-focus-indicator::before,\\n.mat-tab-group.mat-background-warn > .mat-tab-header .mat-focus-indicator::before, .mat-tab-nav-bar.mat-background-warn > .mat-tab-header .mat-tab-header-pagination-chevron,\\n.mat-tab-nav-bar.mat-background-warn > .mat-tab-header-pagination .mat-tab-header-pagination-chevron,\\n.mat-tab-nav-bar.mat-background-warn > .mat-tab-link-container .mat-focus-indicator::before,\\n.mat-tab-nav-bar.mat-background-warn > .mat-tab-header .mat-focus-indicator::before {\\n border-color: white;\\n}\\n.mat-tab-group.mat-background-warn > .mat-tab-header .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron,\\n.mat-tab-group.mat-background-warn > .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron, .mat-tab-nav-bar.mat-background-warn > .mat-tab-header .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron,\\n.mat-tab-nav-bar.mat-background-warn > .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron {\\n border-color: rgba(255, 255, 255, 0.4);\\n}\\n.mat-tab-group.mat-background-warn > .mat-tab-header .mat-ripple-element,\\n.mat-tab-group.mat-background-warn > .mat-tab-link-container .mat-ripple-element,\\n.mat-tab-group.mat-background-warn > .mat-tab-header-pagination .mat-ripple-element, .mat-tab-nav-bar.mat-background-warn > .mat-tab-header .mat-ripple-element,\\n.mat-tab-nav-bar.mat-background-warn > .mat-tab-link-container .mat-ripple-element,\\n.mat-tab-nav-bar.mat-background-warn > .mat-tab-header-pagination .mat-ripple-element {\\n background-color: rgba(255, 255, 255, 0.12);\\n}\\n.mat-toolbar {\\n background: whitesmoke;\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-toolbar.mat-primary {\\n background: #4775f5;\\n color: white;\\n}\\n.mat-toolbar.mat-accent {\\n background: #f7cc71;\\n color: white;\\n}\\n.mat-toolbar.mat-warn {\\n background: #fc8f76;\\n color: white;\\n}\\n.mat-toolbar .mat-form-field-underline,\\n.mat-toolbar .mat-form-field-ripple,\\n.mat-toolbar .mat-focused .mat-form-field-ripple {\\n background-color: currentColor;\\n}\\n.mat-toolbar .mat-form-field-label,\\n.mat-toolbar .mat-focused .mat-form-field-label,\\n.mat-toolbar .mat-select-value,\\n.mat-toolbar .mat-select-arrow,\\n.mat-toolbar .mat-form-field.mat-focused .mat-select-arrow {\\n color: inherit;\\n}\\n.mat-toolbar .mat-input-element {\\n caret-color: currentColor;\\n}\\n.mat-toolbar-multiple-rows {\\n min-height: 64px;\\n}\\n.mat-toolbar-row, .mat-toolbar-single-row {\\n height: 64px;\\n}\\n@media (max-width: 599px) {\\n .mat-toolbar-multiple-rows {\\n min-height: 56px;\\n }\\n\\n .mat-toolbar-row, .mat-toolbar-single-row {\\n height: 56px;\\n }\\n}\\n.mat-tooltip {\\n background: rgba(97, 97, 97, 0.9);\\n}\\n.mat-tree {\\n background: white;\\n}\\n.mat-tree-node,\\n.mat-nested-tree-node {\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-tree-node {\\n min-height: 48px;\\n}\\n.mat-snack-bar-container {\\n color: rgba(255, 255, 255, 0.7);\\n background: #323232;\\n box-shadow: 0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-simple-snackbar-action {\\n color: #f7cc71;\\n}\\n.status-chips_element {\\n font-size: 12px;\\n font-weight: normal;\\n padding: 4px 10px;\\n margin: 4px;\\n}\\n.status-chips_element.mat-success {\\n background: #10cf98;\\n color: white;\\n}\\n.mat-chip-list-stacked .status-chips_element {\\n margin: 4px 0;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3RoZW1lLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvYmFkZ2UvX2JhZGdlLXRoZW1lLnNjc3MiLCJzdGF0dXMtY2hpcHMuY29tcG9uZW50LnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZS90eXBvZ3JhcGh5L190eXBvZ3JhcGh5LnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZS90eXBvZ3JhcGh5L190eXBvZ3JhcGh5LXV0aWxzLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvYm90dG9tLXNoZWV0L19ib3R0b20tc2hlZXQtdGhlbWUuc2NzcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYW5ndWxhci9tYXRlcmlhbC9idXR0b24vX2J1dHRvbi10aGVtZS5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbi10b2dnbGUvX2J1dHRvbi10b2dnbGUtdGhlbWUuc2NzcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYW5ndWxhci9tYXRlcmlhbC9jYXJkL19jYXJkLXRoZW1lLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3gvX2NoZWNrYm94LXRoZW1lLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvY2hpcHMvX2NoaXBzLXRoZW1lLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGUvX3RhYmxlLXRoZW1lLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvZGF0ZXBpY2tlci9fZGF0ZXBpY2tlci10aGVtZS5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZy9fZGlhbG9nLXRoZW1lLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvZXhwYW5zaW9uL19leHBhbnNpb24tdGhlbWUuc2NzcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkL19mb3JtLWZpZWxkLXRoZW1lLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZC9fZm9ybS1maWVsZC1sZWdhY3ktdGhlbWUuc2NzcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkL19mb3JtLWZpZWxkLWZpbGwtdGhlbWUuc2NzcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkL19mb3JtLWZpZWxkLW91dGxpbmUtdGhlbWUuc2NzcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYW5ndWxhci9tYXRlcmlhbC9ncmlkLWxpc3QvX2dyaWQtbGlzdC10aGVtZS5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUvc3R5bGUvX2xpc3QtY29tbW9uLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQvX2lucHV0LXRoZW1lLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudS9fbWVudS10aGVtZS5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvci9fcGFnaW5hdG9yLXRoZW1lLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvcmFkaW8vX3JhZGlvLXRoZW1lLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0L19zZWxlY3QtdGhlbWUuc2NzcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYW5ndWxhci9tYXRlcmlhbC9zbGlkZS10b2dnbGUvX3NsaWRlLXRvZ2dsZS10aGVtZS5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL3NsaWRlci9fc2xpZGVyLXRoZW1lLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvc3RlcHBlci9fc3RlcHBlci10aGVtZS5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL3RhYnMvX3RhYnMtdGhlbWUuc2NzcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYW5ndWxhci9tYXRlcmlhbC90b29sYmFyL190b29sYmFyLXRoZW1lLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcC9fdG9vbHRpcC10aGVtZS5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL2xpc3QvX2xpc3QtdGhlbWUuc2NzcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYW5ndWxhci9tYXRlcmlhbC9jb3JlL29wdGlvbi9fb3B0aW9uLXRoZW1lLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZS9vcHRpb24vX29wdGdyb3VwLXRoZW1lLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvc25hY2stYmFyL19zbmFjay1iYXItdGhlbWUuc2NzcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYW5ndWxhci9tYXRlcmlhbC90cmVlL190cmVlLXRoZW1lLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZS9yaXBwbGUvX3JpcHBsZS5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL2Nkay9hMTF5L19pbmRleC5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL2Nkay9vdmVybGF5L19pbmRleC5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL2Nkay90ZXh0LWZpZWxkL19pbmRleC5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUvZm9jdXMtaW5kaWNhdG9ycy9fZm9jdXMtaW5kaWNhdG9ycy5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUvX2NvcmUuc2NzcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYW5ndWxhci9tYXRlcmlhbC9jb3JlL3JpcHBsZS9fcmlwcGxlLXRoZW1lLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZS9zZWxlY3Rpb24vcHNldWRvLWNoZWNrYm94L19wc2V1ZG8tY2hlY2tib3gtdGhlbWUuc2NzcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYW5ndWxhci9tYXRlcmlhbC9jb3JlL19jb3JlLXRoZW1lLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZS9zdHlsZS9fZWxldmF0aW9uLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvYXV0b2NvbXBsZXRlL19hdXRvY29tcGxldGUtdGhlbWUuc2NzcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYW5ndWxhci9tYXRlcmlhbC9kaXZpZGVyL19kaXZpZGVyLXRoZW1lLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvZXhwYW5zaW9uL19leHBhbnNpb24tbWl4aW5zLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZS9zdHlsZS9fZm9ybS1jb21tb24uc2NzcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkL19mb3JtLWZpZWxkLXN0YW5kYXJkLXRoZW1lLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbi9faWNvbi10aGVtZS5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUvc3R5bGUvX3ZlbmRvci1wcmVmaXhlcy5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLWJhci9fcHJvZ3Jlc3MtYmFyLXRoZW1lLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3Mtc3Bpbm5lci9fcHJvZ3Jlc3Mtc3Bpbm5lci10aGVtZS5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL3NpZGVuYXYvX3NpZGVuYXYtdGhlbWUuc2NzcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYW5ndWxhci9tYXRlcmlhbC9zb3J0L19zb3J0LXRoZW1lLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR1EsZ0VBQUE7QUFIUiw4RUFBQTtBQ21NRTtFQUNFLGdCQXhMVTtFQXlMVixlQTFMUTtFQTJMUixpREFBQTtBQ2hNSjtBRG1NRTtFQUVFLGNBQUE7QUNqTUo7QURvTUU7RUFDRSxlQUFBO0FDak1KO0FDd0tFO0VDdEdFLHdEQUFBO0VBY0Ysc0JBQUE7RUQwRkUsZ0JBQUE7QURwS0o7QUN1S0U7RUMzR0Usd0RBQUE7RUFjRixzQkFBQTtFRCtGRSxnQkFBQTtB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Rix5SEFBQTtBNUNrcUNGO0EyQ3B5Q0k7RUNrSUYsMEhBQUE7QTVDc3FDRjtBMkN4eUNJO0VDa0lGLDBIQUFBO0E1QzBxQ0Y7QTJDNXlDSTtFQ2tJRiwySEFBQTtBNUM4cUNGO0EyQ2h6Q0k7RUNrSUYsMkhBQUE7QTVDa3JDRjtBMkNwekNJO0VDa0lGLDJIQUFBO0E1Q3NyQ0Y7QTJDeHpDSTtFQ2tJRiwySEFBQTtBNUMwckNGO0EyQzV6Q0k7RUNrSUYsNEhBQUE7QTVDOHJDRjtBMkNoMENJO0VDa0lGLDRIQUFBO0E1Q2tzQ0Y7QTJDcDBDSTtFQ2tJRiw0SEFBQTtBNUNzc0NGO0EyQ3gwQ0k7RUNrSUYsNEhBQUE7QTVDMHNDRjtBMkM1MENJO0VDa0lGLDRIQUFBO0E1QzhzQ0Y7QTJDaDFDSTtFQ2tJRiw0SEFBQTtBNUNrdENGO0EyQ3AxQ0k7RUNrSUYsNkhBQUE7QTVDc3RDRjtBMkN4MUNJO0VDa0lGLDZIQUFBO0E1QzB0Q0Y7QTJDNTFDSTtFQ2tJRiw2SEFBQTtBNUM4dENGO0EyQ2gyQ0k7RUNrSUYsNkhBQUE7QTVDa3VDRjtBMkNwMkNJO0VDa0lGLDhIQUFBO0E1Q3N1Q0Y7QTJDeDJDSTtFQ2tJRiw4SEFBQTtBNUMwdUNGO0EyQzUyQ0k7RUNrSUYsOEhBQUE7QTVDOHVDRjtBMkNoM0NJO0VDa0lGLDhIQUFBO0E1Q2t2Q0Y7QTJDcDNDSTtFQ2tJRiw4SEFBQTtBNUNzdkNGO0EyQ2ozQ0k7RUFDRSxhQUFBO0EzQ28zQ047QTZDOTRDRTtFQUVFLGlCQUFBO0VBQ0EsMEJBQUE7QTdDZzVDSjtBNENwdkNFO0VBWEEsMEhBQUE7QTVDa3dDRjtBNkM1NENJO0VBQ0UsaUJBQUE7QTdDODRDTjtBNkM1NENNO0VBQ0UsMEJBQUE7QTdDODRDUjtBRGowQ0U7RUFDRSxZQUFBO0VBQ0EsbUJBQUE7QUNvMENKO0FvQ240Q0k7RXJDa0VFLGtCQUFBO0VBQ0EsZ0JBQUE7QUNvMENOO0FEL3pDSTtFQUNFLG1CQUFBO0VBQ0EsWUFBQTtBQ2swQ047QUQ3ekNJO0VBQ0UsWUFBQTtFQUNBLG1CQUFBO0FDZzBDTjtBRDV6Q0U7RUFDRSxrQkFBQTtBQyt6Q0o7QUQzekNJO0VBQ0UsYUFBQTtBQzh6Q047QUR6ekNJO0VBV0ksbUJBQUE7RUFNRiwwQkFBQTtBQzZ5Q047QUR6eUNFO0VBQ0Usa0JBQUE7RUFDQSxrQkFBQTtFQUNBLHFCQUFBO0VBQ0Esa0JBQUE7RUFDQSx1Q0FBQTtFQUNBLHFCQUFBO0VBQ0EsZ0JBQUE7RUFDQSxtQkFBQTtFQUNBLHVCQUFBO0VBQ0Esb0JBQUE7QUM0eUNKO0FEenlDRTs7RUFFRSxnQkFBQTtBQzR5Q0o7QUR2eUNFO0VBRUUsZUFBQTtBQ3l5Q0o7QUR4OENFO0VBQ0UsV0FOUztFQU9ULFlBUFM7RUFRVCxpQkFSUztBQ205Q2I7QUR2OENJO0VBQ0UsU0FBQTtBQ3k4Q047QURwOENJO0VBQ0UsWUFBQTtBQ3M4Q047QURqOENJO0VBQ0UsV0FBQTtBQ204Q047QUQ5N0NJO0VBQ0UsVUFBQTtFQUNBLFlBQUE7QUNnOENOO0FEMzdDSTtFQUNFLFlBQUE7QUM2N0NOO0FEeDdDSTtFQUNFLFdBQUE7RUFDQSxXQUFBO0FDMDdDTjtBRHA3Q007RUFDRSxVQUFBO0FDczdDUjtBRGo3Q007RUFDRSxVQUFBO0VBQ0EsV0FBQTtBQ203Q1I7QUQ5NkNNO0VBQ0UsV0FBQTtBQ2c3Q1I7QUQzNkNNO0VBQ0UsV0FBQTtFQUNBLFVBQUE7QUM2NkNSO0FEaC9DRTtFQUNFLFdBUFc7RUFRWCxZQVJXO0VBU1gsaUJBVFc7QUM0L0NmO0FELytDSTtFQUNFLFVBQUE7QUNpL0NOO0FENStDSTtFQUNFLGFBQUE7QUM4K0NOO0FEeitDSTtFQUNFLFdBQUE7QUMyK0NOO0FEdCtDSTtFQUNFLFVBQUE7RUFDQSxZQUFBO0FDdytDTjtBRG4rQ0k7RUFDRSxZQUFBO0FDcStDTjtBRGgrQ0k7RUFDRSxXQUFBO0VBQ0EsV0FBQTtBQ2srQ047QUQ1OUNNO0VBQ0UsV0FBQTtBQzg5Q1I7QUR6OUNNO0VBQ0UsVUFBQTtFQUNBLFlBQUE7QUMyOUNSO0FEdDlDTTtFQUNFLFlBQUE7QUN3OUNSO0FEbjlDTTtFQUNFLFdBQUE7RUFDQSxXQUFBO0FDcTlDUjtBRHhoREU7RUFDRSxXQUxTO0VBTVQsWUFOUztFQU9ULGlCQVBTO0FDa2lEYjtBRHZoREk7RUFDRSxVQUFBO0FDeWhETjtBRHBoREk7RUFDRSxhQUFBO0FDc2hETjtBRGpoREk7RUFDRSxXQUFBO0FDbWhETjtBRDlnREk7RUFDRSxVQUFBO0VBQ0EsWUFBQTtBQ2doRE47QUQzZ0RJO0VBQ0UsWUFBQTtBQzZnRE47QUR4Z0RJO0VBQ0UsV0FBQTtFQUNBLFdBQUE7QUMwZ0ROO0FEcGdETTtFQUNFLFdBQUE7QUNzZ0RSO0FEamdETTtFQUNFLFVBQUE7RUFDQSxZQUFBO0FDbWdEUjtBRDkvQ007RUFDRSxZQUFBO0FDZ2dEUjtBRDMvQ007RUFDRSxXQUFBO0VBQ0EsV0FBQTtBQzYvQ1I7QUd4a0RFO0V5Q2tKQSw2SEFBQTtFekNoSkUsaUJBQUE7RUFDQSwwQkFBQTtBSDJrREo7QUl6L0NFO0VBS0UsY0FBQTtFQUNBLHVCQUFBO0FKdy9DSjtBSXhoREU7RUFDRSxjQUFBO0FKMGhESjtBSXhoREU7RUFDRSxjQUFBO0FKMGhESjtBSXhoREU7RUFDRSxjQUFBO0FKMGhESjtBSXRoREk7RUFFRSwwQkFBQTtBSnVoRE47QUkxbERFO0VBQ0UseUJBQUE7QUo0bERKO0FJemxERTtFQUNFLHlCQUFBO0FKMmxESjtBSXhsREU7RUFDRSx5QkFBQTtBSjBsREo7QUl2bERFO0VBQ0UsNkJBQUE7QUp5bERKO0FJeGdESTtFQUNFLFlBeEdZO0VBeUdaLDhCQUFBO0FKMGdETjtBSXRnREU7RUFDRSxpQkFBQTtBSnlnREo7QUlwZ0RFO0VBQ0UsaUNBQUE7QUp1Z0RKO0FJcGdERTtFQUVFLDBCQUFBO0VBQ0EsdUJBQUE7QUpzZ0RKO0FJamtERTtFQUNFLFlBQUE7QUpta0RKO0FJamtERTtFQUNFLFlBQUE7QUpta0RKO0FJamtERTtFQUNFLFlBQUE7QUpta0RKO0FJL2pESTtFQUVFLDBCQUFBO0FKZ2tETjtBSTdrREU7RUFDRSx5QkFBQTtBSitrREo7QUk3a0RFO0VBQ0UseUJBQUE7QUora0RKO0FJN2tERTtFQUNFLHlCQUFBO0FKK2tESjtBSTNrREk7RUFFRSxxQ0FBQTtBSjRrRE47QUk5bURFO0VBWEEsMENBRG1CO0FKNm5EckI7QUk3bURFO0VBZkEsMENBRG1CO0FKZ29EckI7QUk1bURFO0VBbkJBLDBDQURtQjtBSm1vRHJCO0E0Q2hnREU7RUFYQSx3SEFBQTtBNUMrZ0RGO0E0Q3BnREU7RUFYQSx5SEFBQTtBNUNtaERGO0E0Q3hnREU7RUFYQSwySEFBQTtBNUNzaERGO0E0QzNnREU7RUFYQSx3SEFBQTtBNUN5aERGO0E0QzlnREU7RUFYQSwySEFBQTtBNUM2aERGO0E0Q2xoREU7RUFYQSw0SEFBQTtBNUNnaURGO0E0Q3JoREU7RUFYQSx3SEFBQTtBNUNtaURGO0FLbHJERTs7RXVDK0lBLHlIQUFBO0E1Q3dpREY7QUtsckRFOztFQUVFLGdCQUFBO0FMcXJESjtBS2xyREU7RUFDRSwwQkFBQTtBTHFyREo7QUtuckRJO0VBQ0UscUNBQUE7QUxxckROO0FLanJERTtFQUNFLDBCQUFBO0VBQ0EsaUJBQUE7QUxvckRKO0FLbHJESTtFQUNFLHVCQUFBO0FMb3JETjtBS2hyREU7RUFDRSwwQ0FBQTtBTG1yREo7QUtockRFO0VBQ0UsaUJBQUE7RUFDQSwyQ0FBQTtBTG1yREo7QUsvcURJO0VBQ0UsaUJBQUE7RUFDQSxrQkFBQTtFQUNBLHlDQUFBO0FMa3JETjtBSzlxREU7RUFDRSx5QkFBQTtFQUNBLDBCQUFBO0FMaXJESjtBSy9xREk7RUFDRSwwQkFBQTtBTGlyRE47QUs3cURFO0VBQ0UsMEJBQUE7RUFDQSx5QkFBQTtBTGdyREo7QUs5cURJO0VBQ0UsaUJBQUE7QUxnckROO0FLN3FESTtFQUNFLHlCQUFBO0FMK3FETjtBSzNxREU7O0VBRUUscUNBQUE7QUw4cURKO0FLNXBESTtFQUNFLGlCQUxjO0FMb3FEcEI7QU14dkRFO0VBRUUsaUJBQUE7RUFDQSwwQkFBQTtBTjB2REo7QTRDam1ERTtFQVhBLHlIQUFBO0E1QyttREY7QTRDcG1ERTtFQVhBLHdIQUFBO0E1Q2tuREY7QU14dkRFO0VBQ0UsMEJBQUE7QU4ydkRKO0FPenZERTtFQUNFLGlDQUFBO0FQNHZESjtBT3p2REU7RUFDRSxhQWRvQjtBUDB3RHhCO0FPenZERTtFQUdFLDBCQUFBO0FQMHZESjtBT3Z2REU7RUFDRSx5QkF4Qm9CO0FQa3hEeEI7QU90dkRJO0VBQ0UseUJBQUE7QVB5dkROO0FPdHZESTtFQUNFLHlCQUFBO0FQd3ZETjtBT3J2REk7RUFDRSx5QkFBQTtBUHV2RE47QU9odkRNO0VBQ0UseUJBdENXO0FQeXhEbkI7QU85dURNO0VBQ0UscUJBNUNXO0FQNHhEbkI7QU81dURJO0VBQ0UsMEJBQUE7QVA4dUROO0FPeHVERTtFQUNFLHVCQUFBO0FQMnVESjtBT3R1REk7O0VBQ0UsbUJBQUE7QVAwdUROO0FPdnVESTs7RUFDRSxtQkFBQTtBUDB1RE47QU92dURJOztFQUNFLG1CQUFBO0FQMHVETjtBUWx4REU7RUE1Q0EseUJBeUN3QjtFQXhDeEIsMEJBeUN3QjtBUnl4RDFCO0FRaDBERTtFQUNFLDBCQXNDc0I7RUFyQ3RCLFlBQUE7QVJrMERKO0FRdnhETTtFb0NtR0oseUhBQUE7QTVDdXJERjtBUXR4RE07RUFDRSxhQUFBO0FSd3hEUjtBUXB4REk7RUFDRSxZQUFBO0FSc3hETjtBUW54REk7RUFDRSxpQkFBQTtBUnF4RE47QVFoeERJO0VBbkVGLHlCQXlCRTtFQXhCRixZQXVCd0I7QVJnMEQxQjtBUXIxREU7RUFDRSxZQW9Cc0I7RUFuQnRCLFlBQUE7QVJ1MURKO0FRajBERTtFQVZBLDBDQURtQjtBUiswRHJCO0FReHhESTtFQXZFRix5QkF5QkU7RUF4QkYsWUF1QndCO0FSMjBEMUI7QVFoMkRFO0VBQ0UsWUFvQnNCO0VBbkJ0QixZQUFBO0FSazJESjtBUTUwREU7RUFWQSwwQ0FEbUI7QVIwMURyQjtBUS94REk7RUEzRUYseUJBeUJFO0VBeEJGLFlBdUJ3QjtBUnMxRDFCO0FRMzJERTtFQUNFLFlBb0JzQjtFQW5CdEIsWUFBQTtBUjYyREo7QVF2MURFO0VBVkEsMENBRG1CO0FScTJEckI7QVNyM0RFO0VBQ0UsaUJBQUE7QVR3M0RKO0FTcjNERTs7OztFQUlFLG1CQUFBO0FUdzNESjtBU3IzREU7O0VBRUUsd0NBQUE7QVR3M0RKO0FTcjNERTtFQUNFLDBCQUFBO0FUdzNESjtBU3IzREU7RUFDRSwwQkFBQTtBVHczREo7QVVuMURFO0VBQ0UscUNBQUE7QVZzMURKO0FVajFERTs7O0VBR0UsMEJBQUE7QVZvMURKO0FVajFERTtFQUNFLDBCQUFBO0FWbzFESjtBVWoxREU7RUFDRSwrQkFBQTtBVm8xREo7QVVqMURFO0VBQ0UsMEJBQUE7QVZvMURKO0FVajFERTs7RUFFRSwwQkFBQTtFQUNBLHlCQUFBO0FWbzFESjtBVTEzREU7RUEyQ0ksMEJBbENhO0FWcTNEbkI7QVUvMERFO0VBQ0UsMEJBdkNlO0FWeTNEbkI7QVUvMERFO0VBT0ksMEJBQUE7QVY0MEROO0FVdDRERTtFQXFFSSxpQ0FBQTtBVnEwRE47QVUxNERFO0VBOEVNLGlDQUFBO0FWZzBEUjtBVTl1REU7RUFDRSxtQ0F2TUE7QVZ3N0RKO0FVOXVERTs7RUFFRSxrQ0FWaUI7QVYydkRyQjtBVTl1REU7O0VBRUUsOEZBQUE7QVZpdkRKO0FVOXVERTs7RUFFRSw2RkFBQTtBVml2REo7QVU5dURFOztFQUVFLG1CQXhCYztBVnl3RGxCO0FVOXVERTs7RUFFRSxtQkE1QnVCO0FWNndEM0I7QVUvOERFO0VBQ0UseUJBQUE7RUFDQSxZQUFBO0FWazlESjtBVS84REU7RUFJSSx5Q0FBQTtBVis4RE47QVV0OERFO0VBQ0UsaUNBQUE7QVZ5OERKO0FVeDdERTs7O0VBUk0seUNBQUE7QVZzOERSO0FVbDJERTtFa0NRQSwwSEFBQTtFbENORSx1QkFBQTtFQUNBLDBCQUFBO0FWcTJESjtBVXB5REU7RUFDRSxvQ0F2TUE7QVY2K0RKO0FVbnlERTs7RUFFRSxrQ0FWaUI7QVYreURyQjtBVWx5REU7O0VBRUUsK0ZBQUE7QVZveURKO0FVanlERTs7RUFFRSw4RkFBQTtBVm15REo7QVVoeURFOztFQUVFLG1CQXhCYztBVjB6RGxCO0FVL3hERTs7RUFFRSxtQkE1QnVCO0FWNnpEM0I7QVUvL0RFO0VBQ0UseUJBQUE7RUFDQSxZQUFBO0FWaWdFSjtBVTkvREU7RUFJSSwwQ0FBQTtBVjYvRE47QVVwL0RFO0VBQ0UsaUNBQUE7QVZzL0RKO0FVcitERTs7O0VBUk0sMENBQUE7QVZrL0RSO0FVMTBERTtFQUNFLG9DQXZNQTtBVm1oRUo7QVV6MERFOztFQUVFLGtDQVZpQjtBVnExRHJCO0FVeDBERTs7RUFFRSwrRkFBQTtBVjAwREo7QVV2MERFOztFQUVFLDhGQUFBO0FWeTBESjtBVXQwREU7O0VBRUUsbUJBeEJjO0FWZzJEbEI7QVVyMERFOztFQUVFLG1CQTVCdUI7QVZtMkQzQjtBVXJpRUU7RUFDRSx5QkFBQTtFQUNBLFlBQUE7QVZ1aUVKO0FVcGlFRTtFQUlJLDBDQUFBO0FWbWlFTjtBVTFoRUU7RUFDRSxpQ0FBQTtBVjRoRUo7QVUzZ0VFOzs7RUFSTSwwQ0FBQTtBVndoRVI7QVV0NkRFO0VrQ05BLDhIQUFBO0E1Q2c3REY7QVV0NkRFO0VBQ0UsY0FBQTtBVnk2REo7QVV2NkRJO0VBQ0UsY0FBQTtBVnk2RE47QVV0NkRJO0VBQ0UsY0FBQTtBVnc2RE47QVVwNkRFO0VBQ0UsMEJBQUE7QVZ1NkRKO0FXL2tFRTtFaUNpSkEsOEhBQUE7RWpDL0lFLGlCQUFBO0VBQ0EsMEJBQUE7QVhrbEVKO0E4QzFsRUU7RUFDRSxxQ0FBQTtBOUM2bEVKO0E4QzFsRUU7RUFDRSx1Q0FBQTtBOUM2bEVKO0FZM2xFRTtFQUVFLGlCQUFBO0VBQ0EsMEJBQUE7QVo2bEVKO0E0Q3Q4REU7RUFYQSx5SEFBQTtBNUNvOURGO0FZN2xFRTtFQUNFLHFDQUFBO0FaZ21FSjtBK0NobkVNO0VuQ29CRiwrQkFBQTtBWmdtRUo7QVkzbEVFO0VBQ0U7SUFFRSxpQkFBQTtFWjZsRUo7QUFDRjtBWTFsRUU7RUFDRSwwQkFBQTtBWjRsRUo7QVl6bEVFOztFQUVFLDBCQUFBO0FaNGxFSjtBWXpsRUU7RUFDRSwwQkFBQTtBWjRsRUo7QVkxbEVJOztFQUVFLGNBQUE7QVo0bEVOO0FZL2pFSTtFQUNFLFlBTGU7QVp1a0VyQjtBWWhrRU07RUFDRSxZQVZZO0FaNGtFcEI7QWFybkVFO0VBQ0UseUJBWkE7QWJvb0VKO0Fhcm5FRTtFQUNFLHlCQWhCQTtBYndvRUo7QWFybkVFO0VBQ0UsY0FuQm9CO0FiMm9FeEI7QWF0bkVJO0VBQ0UsY0FoQnFCO0Fid29FM0I7QWFybkVJO0VBQ0UsY0FuQm1CO0FiMG9FekI7QWFubkVFO0VBQ0UsY0E5QnFCO0Fib3BFekI7QWFubkVFO0VBQ0UscUNBOUJBO0Fib3BFSjtBYWxuRUk7RUFDRSx5QkFoQ3NCO0FicXBFNUI7QWFubkVNO0VBQ0UseUJBckNtQjtBYjBwRTNCO0FhbG5FTTtFQUNFLHlCQXhDaUI7QWI0cEV6QjtBYTltRUk7RUFDRSxjQTlDc0I7QWIrcEU1QjtBYTltRUk7RUFDRSxjQXBEcUI7QWJvcUUzQjtBYTdtRUk7RUFDRSxjQXZEbUI7QWJzcUV6QjtBYXZtRUk7RUFDRSxjQWhFbUI7QWIwcUV6QjtBYXhtRU07O0VBRUUsY0FwRWlCO0FiOHFFekI7QWF0bUVJOztFQUVFLHlCQTFFbUI7QWJrckV6QjtBYXBtRUU7RUFDRSxjQS9FcUI7QWJzckV6QjtBY2pzRUk7RUFDRSwwQkFOVTtBZDBzRWhCO0FjanNFSTtFQUNFLDBCQVZVO0FkNnNFaEI7QWNoc0VJO0VBQ0UscUNBWkY7QWQ4c0VKO0FjL3JFSTtFa0N4QkYsNEdBQUE7RUFDQSx5QkFBQTtFQUNBLDJCQUFBO0FoRDB0RUY7QWlEcHRFSTtFQUNFLHFDQUpGO0FqRDJ0RUo7QWlEcHRFSTtFRFpGLDRHQUFBO0VBQ0EseUJBQUE7RUFDQSwyQkFBQTtBaERtdUVGO0FldHRFSTtFQUNFLHFDQVRGO0Fma3VFSjtBZXR0RUk7RUFDRSxxQ0FYRjtBZm11RUo7QWVydEVJO0VBQ0UscUNBYkY7QWZvdUVKO0FlbnRFTTtFQUNFLDBCQWpCaUI7QWZzdUV6QjtBZWx0RU07RUFDRSw2QkFBQTtBZm90RVI7QWdCaHVFSTtFQUNFLDBCQVhGO0FoQjh1RUo7QWdCaHVFSTtFQUNFLDBCQWJGO0FoQit1RUo7QWdCOXRFTTtFQUNFLGNBakJrQjtBaEJpdkUxQjtBZ0I3dEVNO0VBQ0UsY0FwQmlCO0FoQm12RXpCO0FnQjV0RU07RUFDRSxjQXZCZTtBaEJxdkV2QjtBZ0J4dEVNO0VBQ0UsY0E5QmU7QWhCd3ZFdkI7QWdCcnRFTTtFQUNFLDBCQTNDaUI7QWhCa3dFekI7QWdCcHRFTTtFQUNFLDBCQXRDSjtBaEI0dkVKO0FrRHp3RUk7RUFDRSxjQUFBO0FsRDR3RU47QWtEendFSTtFQUNFLGNBQUE7QWxEMndFTjtBa0R4d0VJO0VBQ0UsY0FBQTtBbEQwd0VOO0FtQi93RUU7RUFDRSwwQkFBQTtBbkJreEVKO0FtQi93RUU7O0VBRUUsMEJBQUE7QW5Ca3hFSjtBbUIvd0VFO0VBQ0Usb0JBQUE7QW5Ca3hFSjtBbURueUVFO0VoQ29CSSwwQkFBQTtBbkJreEVOO0FtRHR5RUU7RWhDb0JJLDBCQUFBO0FuQmt4RU47QW1EbHlFRTtFaENnQkksMEJBQUE7QW5CcXhFTjtBbURqeUVFO0VoQ1lJLDBCQUFBO0FuQnd4RU47QW1EaHlFRTtFaENRSSwwQkFBQTtBbkIyeEVOO0FtQnh3RUU7RUFDRSxvQkFBQTtBbkIyd0VKO0FtQnh3RUU7O0VBRUUsb0JBQUE7QW5CMndFSjtBbUJ4d0VFO0VBQ0UsY0FBQTtBbkIyd0VKO0E4Qnh6RUk7RUFDRSwwQkFBQTtBOUIyekVOO0E4Qnh6RUk7RUFDRSwwQkFBQTtBOUIwekVOO0E4QnZ6RUk7RUFDRSwwQkFBQTtBOUJ5ekVOO0E4QnJ6RUU7RUFDRSx5QkFBQTtBOUJ3ekVKO0E4Qmx6RUk7Ozs7O0VBQ0UsK0JBQUE7QTlCeXpFTjtBOEJwekVJO0VBQ0UsK0JBQUE7QTlCdXpFTjtBb0JuMUVFO0VBRUUsaUJBQUE7QXBCcTFFSjtBNEMzckVFO0VBWEEsMEhBQUE7QTVDeXNFRjtBb0JyMUVFO0VBQ0UsdUJBQUE7RUFDQSwwQkFBQTtBcEJ3MUVKO0FvQnIxRU07O0VBR0UsMEJBQUE7QXBCczFFUjtBb0JqMUVFOztFQUVFLDBCQUFBO0FwQm8xRUo7QW9CNzBFSTs7OztFQUNFLCtCQUFBO0FwQm0xRU47QXFCLzJFRTtFQUNFLGlCQUFBO0FyQmszRUo7QXFCLzJFRTs7RUFFRSwwQkFBQTtBckJrM0VKO0FxQi8yRUU7O0VBRUUseUNBQUE7RUFDQSwyQ0FBQTtBckJrM0VKO0FxQi8yRUU7O0VBRUUseUNBQUE7QXJCazNFSjtBcUI5MkVJOzs7O0VBSUUsaUNBQUE7QXJCaTNFTjtBcUIxMUVJO0VBQ0UsZ0JBTEs7QXJCazJFWDtBb0RuNEVFO0VBQ0UsYUFBQTtBcERzNEVKO0FvRG40RUU7RUFDRSx5QkFBQTtBcERzNEVKO0FvRG40RUU7RUFDRSx5QkFBQTtBcERzNEVKO0FvRGw0RUk7RUFDRSxhQUFBO0FwRHE0RU47QW9EbDRFSTtFQUNFLHlCQUFBO0FwRG80RU47QW9EajRFSTtFQUNFLHlCQUFBO0FwRG00RU47QW9EOTNFSTtFQUNFLGFBQUE7QXBEaTRFTjtBb0Q5M0VJO0VBQ0UseUJBQUE7QXBEZzRFTjtBb0Q3M0VJO0VBQ0UseUJBQUE7QXBEKzNFTjtBcURoN0VJO0VBQ0UsZUFBQTtBckRtN0VOO0FxRGg3RUk7RUFDRSxlQUFBO0FyRGs3RU47QXFELzZFSTtFQUNFLGVBQUE7QXJEaTdFTjtBc0IxNkVFO0VBQ0UsaUNBQUE7QXRCNjZFSjtBc0JsOEVFO0VBQ0UscUJBQUE7QXRCcThFSjtBc0JsOEVFOztFQUlFLHlCQUFBO0F0Qms4RUo7QXNCMThFRTtFQUNFLHFCQUFBO0F0QjQ4RUo7QXNCejhFRTs7RUFJRSx5QkFBQTtBdEJ5OEVKO0FzQmo5RUU7RUFDRSxxQkFBQTtBdEJtOUVKO0FzQmg5RUU7O0VBSUUseUJBQUE7QXRCZzlFSjtBc0IvNkVNOztFQUVFLGlDQUFBO0F0Qmk3RVI7QXNCOTZFTTs7RUFFRSxxQ0FBQTtBdEJnN0VSO0FzQjc2RU07RUFDRSwwQkFBQTtBdEIrNkVSO0FzQno2RUk7RUFDRSx1QkFBQTtBdEIyNkVOO0F1QjU5RUU7RUFDRSwwQkFBQTtBdkIrOUVKO0F1QjU5RUU7RUFDRSwwQkFBQTtBdkIrOUVKO0F1QjU5RUU7RUFDRSwwQkFBQTtBdkIrOUVKO0F1QjU5RUU7RUFDRSwwQkFBQTtBdkIrOUVKO0F1QjU5RUU7RUFDRSxpQkFBQTtBdkIrOUVKO0E0Q3gxRUU7RUFYQSwwSEFBQTtBNUNzMkVGO0F1Qi85RUk7RUFD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Q3YvRkU7O0VBRUUsMEJBQUE7QWxDMC9GSjtBa0NsK0ZJO0VBQ0UsZ0JBTEs7QWxDMCtGWDtBaUNwZ0dFO0VBR0UsK0JBQUE7RUFDQSxtQkFBQTtFVzZJRiwySEFBQTtBNUN5M0ZGO0FpQ2pnR0U7RUFDRSxjQUFBO0FqQ29nR0o7QUF0aEdFO0VBQ0UsZUFBQTtFQUNBLG1CQUFBO0VBQ0EsaUJBQUE7RUFDQSxXQUFBO0FBeWhHSjtBQXZoR0k7RUFDRSxtQkFBQTtFQUNBLFlBQUE7QUF5aEdOO0FBcmhHRTtFQUNFLGFBQUE7QUF1aEdKIiwiZmlsZSI6InN0YXR1cy1jaGlwcy5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi8qIFlvdSBjYW4gYWRkIGdsb2JhbCBzdHlsZXMgdG8gdGhpcyBmaWxlLCBhbmQgYWxzbyBpbXBvcnQgb3RoZXIgc3R5bGUgZmlsZXMgKi9cbkB1c2UgJ35AYW5ndWxhci9tYXRlcmlhbCcgYXMgbWF0O1xuQGltcG9ydCAnfkBhbmd1bGFyL21hdGVyaWFsL3RoZW1pbmcnO1xuQGltcG9ydCB1cmwoJy8vZm9udHMuZ29vZ2xlYXBpcy5jb20vaWNvbj9mYW1pbHk9TWF0ZXJpYWwrSWNvbnMnKTtcblxuQGluY2x1ZGUgbWF0LmNvcmUoKTtcblxuJG1mLWJ3LW1vZGVsaWNhOiBtYXQuZGVmaW5lLXR5cG9ncmFwaHktY29uZmlnKFxuICAkZm9udC1mYW1pbHk6ICdCd01vZGVsaWNhLCBtb25vc3BhY2UnLFxuICAkaGVhZGxpbmU6IG1hdC5kZWZpbmUtdHlwb2dyYXBoeS1sZXZlbCgzMnB4LCA0OHB4LCBib2xkKVxuKTtcblxuJG1mLW9wZW4tc2FuczogbWF0LmRlZmluZS10eXBvZ3JhcGh5LWNvbmZpZyhcbiAgJGZvbnQtZmFtaWx5OiAnT3BlblNhbnMsIHNhbnMtc2VyaWYnLFxuICAkYm9keS0xOiBtYXQuZGVmaW5lLXR5cG9ncmFwaHktbGV2ZWwoMTZweCwgMjRweCwgbm9ybWFsKVxuKTtcblxuQGluY2x1ZGUgbWF0LmFsbC1jb21wb25lbnQtdHlwb2dyYXBoaWVzKCRtZi1vcGVuLXNhbnMpO1xuXG4ubWF0LXR5cG9ncmFwaHkge1xuICBoMSwgaDIsIGgzLCBoNCwgaDUsIGg2IHtcbiAgICBmb250LWZhbWlseTogbWF0LmZvbnQtZmFtaWx5KCRtZi1idy1tb2RlbGljYSk7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIH1cbn1cblxuJG1mLWdyZWVuOiAoXG4gIDUwOiAjMjZkOWE2LFxuICAxMDA6ICMyNmQ5YTYsXG4gIDIwMDogIzI2ZDlhNixcbiAgMzAwOiAjMjZkOWE2LFxuICA0MDA6ICMyNmQ5YTYsXG4gIDUwMDogIzEwY2Y5OCxcbiAgNjAwOiAjMTBjZjk4LFxuICA3MDA6ICMxMGNmOTgsXG4gIDgwMDogIzEwY2Y5OCxcbiAgOTAwOiAjMTBjZjk4LFxuICBBMTAwOiAjMDU4MjVlLFxuICBBMjAwOiAjMDU4MjVlLFxuICBBNDAwOiAjMDU4MjVlLFxuICBBNzAwOiAjMDU4MjVlLFxuICBjb250cmFzdDogKFxuICAgIDUwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMTAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMjAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMzAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgNDAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgNTAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgNjAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgNzAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDgwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA5MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgQTEwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIEEyMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICBBNDAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgQTcwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICApXG4pO1xuJG1mLXJlZDogKFxuICA1MDogI2ZmYTU5MSxcbiAgMTAwOiAjZmZhNTkxLFxuICAyMDA6ICNmZmE1OTEsXG4gIDMwMDogI2ZmYTU5MSxcbiAgNDAwOiAjZmZhNTkxLFxuICA1MDA6ICNmYzhmNzYsXG4gIDYwMDogI2ZjOGY3NixcbiAgNzAwOiAjZmM4Zjc2LFxuICA4MDA6ICNmYzhmNzYsXG4gIDkwMDogI2ZjOGY3NixcbiAgQTEwMDogI2FmNTU0MSxcbiAgQTIwMDogI2FmNTU0MSxcbiAgQTQwMDogI2FmNTU0MSxcbiAgQTcwMDogI2FmNTU0MSxcbiAgY29udHJhc3Q6IChcbiAgICA1MDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDEwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDIwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDMwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDQwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDUwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDYwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDcwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA4MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgOTAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIEExMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICBBMjAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgQTQwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIEE3MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgKVxuKTtcbiRtZi15ZWxsb3c6IChcbiAgNTA6ICNmZmRiOGUsXG4gIDEwMDogI2ZmZGI4ZSxcbiAgMjAwOiAjZmZkYjhlLFxuICAzMDA6ICNmZmRiOGUsXG4gIDQwMDogI2ZmZGI4ZSxcbiAgNTAwOiAjZjdjYzcxLFxuICA2MDA6ICNmN2NjNzEsXG4gIDcwMDogI2Y3Y2M3MSxcbiAgODAwOiAjZjdjYzcxLFxuICA5MDA6ICNmN2NjNzEsXG4gIEExMDA6ICNhYTg3M2QsXG4gIEEyMDA6ICNhYTg3M2QsXG4gIEE0MDA6ICNhYTg3M2QsXG4gIEE3MDA6ICNhYTg3M2QsXG4gIGNvbnRyYXN0OiAoXG4gICAgNTA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAxMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAyMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAzMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA0MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA1MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA2MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA3MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgODAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDkwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICBBMTAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgQTIwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIEE0MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICBBNzAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gIClcbik7XG4kbWYtYmx1ZTogKFxuICA1MDogIzkyYWRmNyxcbiAgMTAwOiAjNjg5MWZmLFxuICAyMDA6ICM2MzhkZmYsXG4gIDMwMDogIzZkOTFmNyxcbiAgNDAwOiAjNGQ3YWY3LFxuICA1MDA6ICM0ODc1ZjUsXG4gIDYwMDogIzQ3NzVmNSxcbiAgNzAwOiAjNDc3NWY1LFxuICA4MDA6ICM0NDZkZjUsXG4gIDkwMDogIzQxNjlkYixcbiAgQTEwMDogIzIwNDRhOCxcbiAgQTIwMDogIzIwNDRhOCxcbiAgQTQwMDogIzIwNDRhOCxcbiAgQTcwMDogIzM1M2Y1MixcbiAgY29udHJhc3Q6IChcbiAgICA1MDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDEwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDIwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDMwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDQwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDUwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDYwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDcwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA4MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgOTAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIEExMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICBBMjAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgQTQwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIEE3MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgKVxuKTtcblxuJHByaW1hcnlUaGVtZTogJG1mLWJsdWU7XG4kYWNjZW50VGhlbWU6ICRtZi15ZWxsb3c7XG4kd2FyblRoZW1lOiAkbWYtcmVkO1xuJHN1Y2Nlc3NUaGVtZTogJG1mLWdyZWVuO1xuJGVsZXZhdGlvbjogNzAwO1xuJHByaW1hcnk6IG1hdC5kZWZpbmUtcGFsZXR0ZSgkcHJpbWFyeVRoZW1lLCAkZWxldmF0aW9uKTtcbiRhY2NlbnQ6ICBtYXQuZGVmaW5lLXBhbGV0dGUoJGFjY2VudFRoZW1lLCAkZWxldmF0aW9uKTtcbiR3YXJuOiAgICBtYXQuZGVmaW5lLXBhbGV0dGUoJHdhcm5UaGVtZSwgJGVsZXZhdGlvbik7XG4kc3VjY2VzczogICAgbWF0LmRlZmluZS1wYWxldHRlKCRzdWNjZXNzVGhlbWUsICRlbGV2YXRpb24pO1xuJHN1Y2Nlc3NUZXh0OiAgICBtYXQuZGVmaW5lLXBhbGV0dGUoJHN1Y2Nlc3NUaGVtZSwgQTcwMCk7XG5cblxuJG1hdC13aGl0ZTogKFxuICA1MDogI2ZmZmZmZixcbiAgMTAwOiAjZmZmZmZmLFxuICAyMDA6ICNmZmZmZmYsXG4gIDMwMDogI2ZmZmZmZixcbiAgNDAwOiAjZjBmMGYyLFxuICA1MDA6ICNmOWY5ZjksXG4gIDYwMDogI2ZiZmJmYixcbiAgNzAwOiAjZjZmNmY2LFxuICA4MDA6ICNmNGY0ZjQsXG4gIDkwMDogI2Y0ZjdmOSxcbiAgQTEwMDogI2U4ZWJlZSxcbiAgQTIwMDogI2M3YzljZCxcbiAgQTQwMDogIzllYTRhZSxcbiAgQTcwMDogIzliOWI5YixcbiAgY29udHJhc3Q6IChcbiAgICA1MDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDEwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDIwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDMwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDQwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDUwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDYwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDcwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA4MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgOTAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIEExMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICBBMjAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgQTQwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIEE3MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgKVxuKTtcbiRtYXQtYmxhY2s6IChcbiAgNTA6ICNiZmJmYmYsXG4gIDEwMDogI2FlYjJiYSxcbiAgMjAwOiAjOTQ5NDk0LFxuICAzMDA6ICM3MzczNzMsXG4gIDQwMDogIzYwNjA2MCxcbiAgNTAwOiAjNjI2MjYyLFxuICA2MDA6ICM0NzQ3NDcsXG4gIDcwMDogIzM0MzQzNCxcbiAgODAwOiAjMjQyNDI0LFxuICA5MDA6ICMyMzIzMjMsXG4gIEExMDA6ICMxNzE3MTcsXG4gIEEyMDA6ICMxMTExMTEsXG4gIEE0MDA6ICMwZTBlMGUsXG4gIEE3MDA6IGJsYWNrLFxuICBjb250cmFzdDogKFxuICAgIDUwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMTAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMjAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMzAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgNDAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgNTAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgNjAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgNzAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDgwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA5MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgQTEwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIEEyMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICBBNDAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgQTcwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICApXG4pO1xuXG4kdGhlbWU6IG1hdC5kZWZpbmUtbGlnaHQtdGhlbWUoJHByaW1hcnksICRhY2NlbnQsICR3YXJuKTtcblxuQGluY2x1ZGUgbWF0LmFsbC1jb21wb25lbnQtdGhlbWVzKCR0aGVtZSk7XG4iLCIvLyBUaGlzIGNvbnRhaW5zIGFsbCBvZiB0aGUgc3R5bGVzIGZvciB0aGUgYmFkZ2Vcbi8vIHJhdGhlciB0aGFuIGp1c3QgdGhlIGNvbG9yL3RoZW1lIGJlY2F1c2Ugb2Zcbi8vIG5vIHN0eWxlIHNoZWV0IHN1cHBvcnQgZm9yIGRpcmVjdGl2ZXMuXG5AdXNlICdzYXNzOmNvbG9yJztcbkB1c2UgJ3Nhc3M6bWFwJztcbkB1c2UgJ3Nhc3M6bWV0YSc7XG5AdXNlICcuLi9jb3JlL3RoZW1pbmcvdGhlbWluZyc7XG5AdXNlICcuLi9jb3JlL3R5cG9ncmFwaHkvdHlwb2dyYXBoeSc7XG5AdXNlICcuLi9jb3JlL3R5cG9ncmFwaHkvdHlwb2dyYXBoeS11dGlscyc7XG5AdXNlICcuLi8uLi9jZGsvYTExeSc7XG5cbiRmb250LXNpemU6IDEycHg7XG4kZm9udC13ZWlnaHQ6IDYwMDtcbiRkZWZhdWx0LXNpemU6IDIycHggIWRlZmF1bHQ7XG4kc21hbGwtc2l6ZTogJGRlZmF1bHQtc2l6ZSAtIDY7XG4kbGFyZ2Utc2l6ZTogJGRlZmF1bHQtc2l6ZSArIDY7XG5cbi8vIE1peGluIGZvciBidWlsZGluZyBvZmZzZXQgZ2l2ZW4gZGlmZmVyZW50IHNpemVzXG5AbWl4aW4gX2JhZGdlLXNpemUoJHNpemUpIHtcbiAgLm1hdC1iYWRnZS1jb250ZW50IHtcbiAgICB3aWR0aDogJHNpemU7XG4gICAgaGVpZ2h0OiAkc2l6ZTtcbiAgICBsaW5lLWhlaWdodDogJHNpemU7XG4gIH1cblxuICAmLm1hdC1iYWRnZS1hYm92ZSB7XG4gICAgLm1hdC1iYWRnZS1jb250ZW50IHtcbiAgICAgIHRvcDogLSRzaXplIC8gMjtcbiAgICB9XG4gIH1cblxuICAmLm1hdC1iYWRnZS1iZWxvdyB7XG4gICAgLm1hdC1iYWRnZS1jb250ZW50IHtcbiAgICAgIGJvdHRvbTogLSRzaXplIC8gMjtcbiAgICB9XG4gIH1cblxuICAmLm1hdC1iYWRnZS1iZWZvcmUge1xuICAgIC5tYXQtYmFkZ2UtY29udGVudCB7XG4gICAgICBsZWZ0OiAtJHNpemU7XG4gICAgfVxuICB9XG5cbiAgW2Rpcj0ncnRsJ10gJi5tYXQtYmFkZ2UtYmVmb3JlIHtcbiAgICAubWF0LWJhZGdlLWNvbnRlbnQge1xuICAgICAgbGVmdDogYXV0bztcbiAgICAgIHJpZ2h0OiAtJHNpemU7XG4gICAgfVxuICB9XG5cbiAgJi5tYXQtYmFkZ2UtYWZ0ZXIge1xuICAgIC5tYXQtYmFkZ2UtY29udGVudCB7XG4gICAgICByaWdodDogLSRzaXplO1xuICAgIH1cbiAgfVxuXG4gIFtkaXI9J3J0bCddICYubWF0LWJhZGdlLWFmdGVyIHtcbiAgICAubWF0LWJhZGdlLWNvbnRlbnQge1xuICAgICAgcmlnaHQ6IGF1dG87XG4gICAgICBsZWZ0OiAtJHNpemU7XG4gICAgfVxuICB9XG5cbiAgJi5tYXQtYmFkZ2Utb3ZlcmxhcCB7XG4gICAgJi5tYXQtYmFkZ2UtYmVmb3JlIHtcbiAgICAgIC5tYXQtYmFkZ2UtY29udGVudCB7XG4gICAgICAgIGxlZnQ6IC0kc2l6ZSAvIDI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgW2Rpcj0ncnRsJ10gJi5tYXQtYmFkZ2UtYmVmb3JlIHtcbiAgICAgIC5tYXQtYmFkZ2UtY29udGVudCB7XG4gICAgICAgIGxlZnQ6IGF1dG87XG4gICAgICAgIHJpZ2h0OiAtJHNpemUgLyAyO1xuICAgICAgfVxuICAgIH1cblxuICAgICYubWF0LWJhZGdlLWFmdGVyIHtcbiAgICAgIC5tYXQtYmFkZ2UtY29udGVudCB7XG4gICAgICAgIHJpZ2h0OiAtJHNpemUgLyAyO1xuICAgICAgfVxuICAgIH1cblxuICAgIFtkaXI9J3J0bCddICYubWF0LWJhZGdlLWFmdGVyIHtcbiAgICAgIC5tYXQtYmFkZ2UtY29udGVudCB7XG4gICAgICAgIHJpZ2h0OiBhdXRvO1xuICAgICAgICBsZWZ0OiAtJHNpemUgLyAyO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gY29sb3IoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRhY2NlbnQ6IG1hcC5nZXQoJGNvbmZpZywgYWNjZW50KTtcbiAgJHdhcm46IG1hcC5nZXQoJGNvbmZpZywgd2Fybik7XG4gICRwcmltYXJ5OiBtYXAuZ2V0KCRjb25maWcsIHByaW1hcnkpO1xuICAkYmFja2dyb3VuZDogbWFwLmdldCgkY29uZmlnLCBiYWNrZ3JvdW5kKTtcbiAgJGZvcmVncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgZm9yZWdyb3VuZCk7XG5cbiAgLm1hdC1iYWRnZS1jb250ZW50IHtcbiAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRwcmltYXJ5LCBkZWZhdWx0LWNvbnRyYXN0KTtcbiAgICBiYWNrZ3JvdW5kOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHByaW1hcnkpO1xuXG4gICAgQGluY2x1ZGUgYTExeS5oaWdoLWNvbnRyYXN0KGFjdGl2ZSwgb2ZmKSB7XG4gICAgICBvdXRsaW5lOiBzb2xpZCAxcHg7XG4gICAgICBib3JkZXItcmFkaXVzOiAwO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtYmFkZ2UtYWNjZW50IHtcbiAgICAubWF0LWJhZGdlLWNvbnRlbnQge1xuICAgICAgYmFja2dyb3VuZDogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRhY2NlbnQpO1xuICAgICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYWNjZW50LCBkZWZhdWx0LWNvbnRyYXN0KTtcbiAgICB9XG4gIH1cblxuICAubWF0LWJhZGdlLXdhcm4ge1xuICAgIC5tYXQtYmFkZ2UtY29udGVudCB7XG4gICAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCR3YXJuLCBkZWZhdWx0LWNvbnRyYXN0KTtcbiAgICAgIGJhY2tncm91bmQ6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkd2Fybik7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1iYWRnZSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB9XG5cbiAgLm1hdC1iYWRnZS1oaWRkZW4ge1xuICAgIC5tYXQtYmFkZ2UtY29udGVudCB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtYmFkZ2UtZGlzYWJsZWQge1xuICAgIC5tYXQtYmFkZ2UtY29udGVudCB7XG4gICAgICAkYXBwLWJhY2tncm91bmQ6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYmFja2dyb3VuZCwgJ2JhY2tncm91bmQnKTtcbiAgICAgICRiYWRnZS1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBkaXNhYmxlZC1idXR0b24pO1xuXG4gICAgICAvLyBUaGUgZGlzYWJsZWQgY29sb3IgdXN1YWxseSBoYXMgc29tZSBraW5kIG9mIG9wYWNpdHksIGJ1dCBiZWNhdXNlIHRoZSBiYWRnZSBpcyBvdmVybGF5ZWRcbiAgICAgIC8vIG9uIHRvcCBvZiBzb21ldGhpbmcgZWxzZSwgaXQgd29uJ3QgbG9vayBnb29kIGlmIGl0J3Mgb3BhcXVlLiBJZiBpdCBpcyBhIGNvbG9yICp0eXBlKixcbiAgICAgIC8vIHdlIGNvbnZlcnQgaXQgaW50byBhIHNvbGlkIGNvbG9yIGJ5IHRha2luZyB0aGUgb3BhY2l0eSBmcm9tIHRoZSByZ2JhIHZhbHVlIGFuZCB1c2luZ1xuICAgICAgLy8gdGhlIHZhbHVlIHRvIGRldGVybWluZSB0aGUgcGVyY2VudGFnZSBvZiB0aGUgYmFja2dyb3VuZCB0byBwdXQgaW50byBmb3JlZ3JvdW5kIHdoZW5cbiAgICAgIC8vIG1peGluZyB0aGUgY29sb3JzIHRvZ2V0aGVyLlxuICAgICAgQGlmIChtZXRhLnR5cGUtb2YoJGJhZGdlLWNvbG9yKSA9PSBjb2xvciBhbmQgbWV0YS50eXBlLW9mKCRhcHAtYmFja2dyb3VuZCkgPT0gY29sb3IpIHtcbiAgICAgICAgJGJhZGdlLW9wYWNpdHk6IG9wYWNpdHkoJGJhZGdlLWNvbG9yKTtcbiAgICAgICAgYmFja2dyb3VuZDogY29sb3IubWl4KCRhcHAtYmFja2dyb3VuZCwgcmdiYSgkYmFkZ2UtY29sb3IsIDEpLCAoMSAtICRiYWRnZS1vcGFjaXR5KSAqIDEwMCUpO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICBiYWNrZ3JvdW5kOiAkYmFkZ2UtY29sb3I7XG4gICAgICB9XG5cbiAgICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIGRpc2FibGVkLXRleHQpO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtYmFkZ2UtY29udGVudCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAyMDBtcyBlYXNlLWluLW91dDtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDAuNik7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICB9XG5cbiAgLm5nLWFuaW1hdGUtZGlzYWJsZWQgLm1hdC1iYWRnZS1jb250ZW50LFxuICAubWF0LWJhZGdlLWNvbnRlbnQuX21hdC1hbmltYXRpb24tbm9vcGFibGUge1xuICAgIHRyYW5zaXRpb246IG5vbmU7XG4gIH1cblxuICAvLyBUaGUgYWN0aXZlIGNsYXNzIGlzIGFkZGVkIGFmdGVyIHRoZSBlbGVtZW50IGlzIGFkZGVkXG4gIC8vIHNvIGl0IGNhbiBhbmltYXRlIHNjYWxlIHRvIGRlZmF1bHRcbiAgLm1hdC1iYWRnZS1jb250ZW50Lm1hdC1iYWRnZS1hY3RpdmUge1xuICAgIC8vIFNjYWxlIHRvIGBub25lYCBpbnN0ZWFkIG9mIGAxYCB0byBhdm9pZCBibHVycnkgdGV4dCBpbiBzb21lIGJyb3dzZXJzLlxuICAgIHRyYW5zZm9ybTogbm9uZTtcbiAgfVxuXG4gIC5tYXQtYmFkZ2Utc21hbGwge1xuICAgIEBpbmNsdWRlIF9iYWRnZS1zaXplKCRzbWFsbC1zaXplKTtcbiAgfVxuICAubWF0LWJhZGdlLW1lZGl1bSB7XG4gICAgQGluY2x1ZGUgX2JhZGdlLXNpemUoJGRlZmF1bHQtc2l6ZSk7XG4gIH1cbiAgLm1hdC1iYWRnZS1sYXJnZSB7XG4gICAgQGluY2x1ZGUgX2JhZGdlLXNpemUoJGxhcmdlLXNpemUpO1xuICB9XG59XG5cbkBtaXhpbiB0eXBvZ3JhcGh5KCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdHlwb2dyYXBoeS5wcml2YXRlLXR5cG9ncmFwaHktdG8tMjAxNC1jb25maWcoXG4gICAgICB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKSk7XG4gIC5tYXQtYmFkZ2UtY29udGVudCB7XG4gICAgZm9udC13ZWlnaHQ6ICRmb250LXdlaWdodDtcbiAgICBmb250LXNpemU6ICRmb250LXNpemU7XG4gICAgZm9udC1mYW1pbHk6IHR5cG9ncmFwaHktdXRpbHMuZm9udC1mYW1pbHkoJGNvbmZpZyk7XG4gIH1cblxuICAubWF0LWJhZGdlLXNtYWxsIC5tYXQtYmFkZ2UtY29udGVudCB7XG4gICAgLy8gU2V0IHRoZSBmb250IHNpemUgdG8gNzUlIG9mIHRoZSBvcmlnaW5hbC5cbiAgICBmb250LXNpemU6ICRmb250LXNpemUgKiAwLjc1O1xuICB9XG5cbiAgLm1hdC1iYWRnZS1sYXJnZSAubWF0LWJhZGdlLWNvbnRlbnQge1xuICAgIGZvbnQtc2l6ZTogJGZvbnQtc2l6ZSAqIDI7XG4gIH1cbn1cblxuQG1peGluIF9kZW5zaXR5KCRjb25maWctb3ItdGhlbWUpIHt9XG5cbkBtaXhpbiB0aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKSB7XG4gICR0aGVtZTogdGhlbWluZy5wcml2YXRlLWxlZ2FjeS1nZXQtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZyk7XG4gIEBpbmNsdWRlIHRoZW1pbmcucHJpdmF0ZS1jaGVjay1kdXBsaWNhdGUtdGhlbWUtc3R5bGVzKCR0aGVtZSwgJ21hdC1iYWRnZScpIHtcbiAgICAkY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkdGhlbWUpO1xuICAgICRkZW5zaXR5OiB0aGVtaW5nLmdldC1kZW5zaXR5LWNvbmZpZygkdGhlbWUpO1xuICAgICR0eXBvZ3JhcGh5OiB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkdGhlbWUpO1xuXG4gICAgQGlmICRjb2xvciAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIGNvbG9yKCRjb2xvcik7XG4gICAgfVxuICAgIEBpZiAkZGVuc2l0eSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIF9kZW5zaXR5KCRkZW5zaXR5KTtcbiAgICB9XG4gICAgQGlmICR0eXBvZ3JhcGh5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgdHlwb2dyYXBoeSgkdHlwb2dyYXBoeSk7XG4gICAgfVxuICB9XG59XG4iLCJAdXNlICd+QGFuZ3VsYXIvbWF0ZXJpYWwnIGFzIG1hdDtcbkBpbXBvcnQgXCIuLi8uLi8uLi90aGVtZVwiO1xuXG4uc3RhdHVzLWNoaXBzIHtcbiAgJl9lbGVtZW50IHtcbiAgICBmb250LXNpemU6IDEycHg7XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICBwYWRkaW5nOiA0cHggMTBweDtcbiAgICBtYXJnaW46IDRweDtcblxuICAgICYubWF0LXN1Y2Nlc3Mge1xuICAgICAgYmFja2dyb3VuZDogbWF0LmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHN1Y2Nlc3MpO1xuICAgICAgY29sb3I6IG1hdC5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRtYXQtd2hpdGUsIDUwKTtcbiAgICB9XG4gIH1cblxuICAubWF0LWNoaXAtbGlzdC1zdGFja2VkICZfZWxlbWVudCB7XG4gICAgbWFyZ2luOiA0cHggMDtcbiAgfVxufVxuIiwiQHVzZSAnc2FzczptYXAnO1xuQHVzZSAndHlwb2dyYXBoeS11dGlscyc7XG5AdXNlICcuLi90aGVtaW5nL3RoZW1pbmcnO1xuXG4vLy8gRGVmaW5lcyBhIHR5cG9ncmFwaHkgbGV2ZWwgZnJvbSB0aGUgTWF0ZXJpYWwgRGVzaWduIHNwZWMuXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRmb250LXNpemUgVGhlIGZvbnQtc2l6ZSBmb3IgdGhpcyBsZXZlbC5cbi8vLyBAcGFyYW0ge1N0cmluZyB8IE51bWJlcn0gJGxpbmUtaGVpZ2h0IFRoZSBsaW5lLWhlaWdodCBmb3IgdGhpcyBsZXZlbC5cbi8vLyBAcGFyYW0ge1N0cmluZyB8IE51bWJlcn0gJGZvbnQtd2VpZ2h0IFRoZSBmb250LXdlaWdodCBmb3IgdGhpcyBsZXZlbC5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGZvbnQtZmFtaWx5IFRoZSBmb250LWZhbWlseSBmb3IgdGhpcyBsZXZlbC5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGxldHRlci1zcGFjaW5nIFRoZSBsZXR0ZXItc3BhY2luZyBmb3IgdGhpcyBsZXZlbC5cbi8vLyBAcmV0dXJucyB7TWFwfSBBIG1hcCByZXByZXNlbnRpbmcgdGhlIGRlZmluaXRpb24gb2YgdGhpcyB0eXBwb2dyYXBoaWMgbGV2ZWwuXG5AZnVuY3Rpb24gZGVmaW5lLXR5cG9ncmFwaHktbGV2ZWwoXG4gICRmb250LXNpemUsXG4gICRsaW5lLWhlaWdodDogJGZvbnQtc2l6ZSxcbiAgJGZvbnQtd2VpZ2h0OiA0MDAsXG4gICRmb250LWZhbWlseTogbnVsbCxcbiAgJGxldHRlci1zcGFjaW5nOiBub3JtYWwpIHtcblxuICBAcmV0dXJuIChcbiAgICBmb250LXNpemU6ICRmb250LXNpemUsXG4gICAgbGluZS1oZWlnaHQ6ICRsaW5lLWhlaWdodCxcbiAgICBmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LFxuICAgIGZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHksXG4gICAgbGV0dGVyLXNwYWNpbmc6ICRsZXR0ZXItc3BhY2luZ1xuICApO1xufVxuXG4vLy8gRGVmaW5lcyBhIGNvbGxlY3Rpb24gb2YgdHlwb2dyYXBoeSBsZXZlbHMgdG8gY29uZmlndXJlIHR5cG9ncmFwaHkgZm9yIGFuIGFwcGxpY2F0aW9uLlxuLy8vIEFueSBsZXZlbCBub3Qgc3BlY2lmaWVkIGRlZmF1bHRzIHRvIHRoZSB2YWx1ZXMgZGVmaW5lZCBpbiB0aGUgTWF0ZXJpYWwgRGVzaWduIHNwZWNpZmljYXRpb246XG4vLy8gaHR0cHM6Ly9tYXRlcmlhbC5pby9ndWlkZWxpbmVzL3N0eWxlL3R5cG9ncmFwaHkuaHRtbC5cbi8vL1xuLy8vIE5vdGUgdGhhdCB0aGUgTWF0ZXJpYWwgRGVzaWduIHNwZWNpZmljYXRpb24gZG9lcyBub3QgZGVzY3JpYmUgZXhwbGljaXQgbGV0dGVyLXNwYWNpbmcgdmFsdWVzLlxuLy8vIFRoZSB2YWx1ZXMgaGVyZSBjb21lIGZyb20gcmV2ZXJzZSBlbmdpbmVlcmluZyB0aGUgTWF0ZXJpYWwgRGVzaWduIGV4YW1wbGVzLlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkZm9udC1mYW1pbHkgRGVmYXVsdCBmb250LWZhbWlseSBmb3IgbGV2ZWxzIHRoYXQgZG9uJ3Qgc3BlY2lmeSBmb250LWZhbWlseS5cbi8vLyBAcGFyYW0ge01hcH0gJGRpc3BsYXktNCBDb25maWd1cmF0aW9uIGZvciB0aGUgXCJkaXNwbGF5LTRcIiB0eXBvZ3JhcGhpYyBsZXZlbC5cbi8vLyBAcGFyYW0ge01hcH0gJGRpc3BsYXktMyBDb25maWd1cmF0aW9uIGZvciB0aGUgXCJkaXNwbGF5LTNcIiB0eXBvZ3JhcGhpYyBsZXZlbC5cbi8vLyBAcGFyYW0ge01hcH0gJGRpc3BsYXktMiBDb25maWd1cmF0aW9uIGZvciB0aGUgXCJkaXNwbGF5LTJcIiB0eXBvZ3JhcGhpYyBsZXZlbC5cbi8vLyBAcGFyYW0ge01hcH0gJGRpc3BsYXktMSBDb25maWd1cmF0aW9uIGZvciB0aGUgXCJkaXNwbGF5LTFcIiB0eXBvZ3JhcGhpYyBsZXZlbC5cbi8vLyBAcGFyYW0ge01hcH0gJGhlYWRsaW5lIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBcImhlYWRsaW5lXCIgdHlwb2dyYXBoaWMgbGV2ZWwuXG4vLy8gQHBhcmFtIHtNYXB9ICR0aXRsZSBDb25maWd1cmF0aW9uIGZvciB0aGUgXCJ0aXRsZVwiIHR5cG9ncmFwaGljIGxldmVsLlxuLy8vIEBwYXJhbSB7TWFwfSAkc3ViaGVhZGluZy0yIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBcInN1YmhlYWRpbmctMlwiIHR5cG9ncmFwaGljIGxldmVsLlxuLy8vIEBwYXJhbSB7TWFwfSAkc3ViaGVhZGluZy0xIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBcInN1YmhlYWRpbmctMVwiIHR5cG9ncmFwaGljIGxldmVsLlxuLy8vIEBwYXJhbSB7TWFwfSAkYm9keS0yIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBcImJvZHktMlwiIHR5cG9ncmFwaGljIGxldmVsLlxuLy8vIEBwYXJhbSB7TWFwfSAkYm9keS0xIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBcImJvZHktMVwiIHR5cG9ncmFwaGljIGxldmVsLlxuLy8vIEBwYXJhbSB7TWFwfSAkY2FwdGlvbiBDb25maWd1cmF0aW9uIGZvciB0aGUgXCJjYXB0aW9uXCIgdHlwb2dyYXBoaWMgbGV2ZWwuXG4vLy8gQHBhcmFtIHtNYXB9ICRidXR0b24gQ29uZmlndXJhdGlvbiBmb3IgdGhlIFwiYnV0dG9uXCIgdHlwb2dyYXBoaWMgbGV2ZWwuXG4vLy8gQHBhcmFtIHtNYXB9ICRpbnB1dCBDb25maWd1cmF0aW9uIGZvciB0aGUgXCJpbnB1dFwiIHR5cG9ncmFwaGljIGxldmVsLlxuLy8vIEByZXR1cm5zIHtNYXB9IEEgdHlwb2dyYXBoeSBjb25maWcgZm9yIHRoZSBhcHBsaWNhdGlvbi5cbkBmdW5jdGlvbiBkZWZpbmUtdHlwb2dyYXBoeS1jb25maWcoXG4gICRmb250LWZhbWlseTogICAnUm9ib3RvLCBcIkhlbHZldGljYSBOZXVlXCIsIHNhbnMtc2VyaWYnLFxuICAkZGlzcGxheS00OiAgICAgZGVmaW5lLXR5cG9ncmFwaHktbGV2ZWwoMTEycHgsIDExMnB4LCAzMDAsICRsZXR0ZXItc3BhY2luZzogLTAuMDVlbSksXG4gICRkaXNwbGF5LTM6ICAgICBkZWZpbmUtdHlwb2dyYXBoeS1sZXZlbCg1NnB4LCA1NnB4LCA0MDAsICRsZXR0ZXItc3BhY2luZzogLTAuMDJlbSksXG4gICRkaXNwbGF5LTI6ICAgICBkZWZpbmUtdHlwb2dyYXBoeS1sZXZlbCg0NXB4LCA0OHB4LCA0MDAsICRsZXR0ZXItc3BhY2luZzogLTAuMDA1ZW0pLFxuICAkZGlzcGxheS0xOiAgICAgZGVmaW5lLXR5cG9ncmFwaHktbGV2ZWwoMzRweCwgNDBweCwgNDAwKSxcbiAgJGhlYWRsaW5lOiAgICAgIGRlZmluZS10eXBvZ3JhcGh5LWxldmVsKDI0cHgsIDMycHgsIDQwMCksXG4gICR0aXRsZTogICAgICAgICBkZWZpbmUtdHlwb2dyYXBoeS1sZXZlbCgyMHB4LCAzMnB4LCA1MDApLFxuICAkc3ViaGVhZGluZy0yOiAgZGVmaW5lLXR5cG9ncmFwaHktbGV2ZWwoMTZweCwgMjhweCwgNDAwKSxcbiAgJHN1YmhlYWRpbmctMTogIGRlZmluZS10eXBvZ3JhcGh5LWxldmVsKDE1cHgsIDI0cHgsIDQwMCksXG4gICRib2R5LTI6ICAgICAgICBkZWZpbmUtdHlwb2dyYXBoeS1sZXZlbCgxNHB4LCAyNHB4LCA1MDApLFxuICAkYm9keS0xOiAgICAgICAgZGVmaW5lLXR5cG9ncmFwaHktbGV2ZWwoMTRweCwgMjBweCwgNDAwKSxcbiAgJGNhcHRpb246ICAgICAgIGRlZmluZS10eXBvZ3JhcGh5LWxldmVsKDEycHgsIDIwcHgsIDQwMCksXG4gICRidXR0b246ICAgICAgICBkZWZpbmUtdHlwb2dyYXBoeS1sZXZlbCgxNHB4LCAxNHB4LCA1MDApLFxuICAvLyBMaW5lLWhlaWdodCBtdXN0IGJlIHVuaXQtbGVzcyBmcmFjdGlvbiBvZiB0aGUgZm9udC1zaXplLlxuICAkaW5wdXQ6ICAgICAgICAgZGVmaW5lLXR5cG9ncmFwaHktbGV2ZWwoaW5oZXJpdCwgMS4xMjUsIDQwMClcbikge1xuXG4gIC8vIERlY2xhcmUgYW4gaW5pdGlhbCBtYXAgd2l0aCBhbGwgb2YgdGhlIGxldmVscy5cbiAgJGNvbmZpZzogKFxuICAgIGRpc3BsYXktNDogICAgICAkZGlzcGxheS00LFxuICAgIGRpc3BsYXktMzogICAgICAkZGlzcGxheS0zLFxuICAgIGRpc3BsYXktMjogICAgICAkZGlzcGxheS0yLFxuICAgIGRpc3BsYXktMTogICAgICAkZGlzcGxheS0xLFxuICAgIGhlYWRsaW5lOiAgICAgICAkaGVhZGxpbmUsXG4gICAgdGl0bGU6ICAgICAgICAgICR0aXRsZSxcbiAgICBzdWJoZWFkaW5nLTI6ICAgJHN1YmhlYWRpbmctMixcbiAgICBzdWJoZWFkaW5nLTE6ICAgJHN1YmhlYWRpbmctMSxcbiAgICBib2R5LTI6ICAgICAgICAgJGJvZHktMixcbiAgICBib2R5LTE6ICAgICAgICAgJGJvZHktMSxcbiAgICBjYXB0aW9uOiAgICAgICAgJGNhcHRpb24sXG4gICAgYnV0dG9uOiAgICAgICAgICRidXR0b24sXG4gICAgaW5wdXQ6ICAgICAgICAgICRpbnB1dCxcbiAgKTtcblxuICAvLyBMb29wIHRocm91Z2ggdGhlIGxldmVscyBhbmQgc2V0IHRoZSBgZm9udC1mYW1pbHlgIG9mIHRoZSBvbmVzIHRoYXQgZG9uJ3QgaGF2ZSBvbmUgdG8gdGhlIGJhc2UuXG4gIC8vIE5vdGUgdGhhdCBTYXNzIGNhbid0IG1vZGlmeSBtYXBzIGluIHBsYWNlLCB3aGljaCBtZWFucyB0aGF0IHdlIG5lZWQgdG8gbWVyZ2UgYW5kIHJlLWFzc2lnbi5cbiAgQGVhY2ggJGtleSwgJGxldmVsIGluICRjb25maWcge1xuICAgIEBpZiBtYXAuZ2V0KCRsZXZlbCwgZm9udC1mYW1pbHkpID09IG51bGwge1xuICAgICAgJG5ldy1sZXZlbDogbWFwLm1lcmdlKCRsZXZlbCwgKGZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHkpKTtcbiAgICAgICRjb25maWc6IG1hcC5tZXJnZSgkY29uZmlnLCAoJGtleTogJG5ldy1sZXZlbCkpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEFkZCB0aGUgYmFzZSBmb250IGZhbWlseSB0byB0aGUgY29uZmlnLlxuICBAcmV0dXJuIG1hcC5tZXJnZSgkY29uZmlnLCAoZm9udC1mYW1pbHk6ICRmb250LWZhbWlseSkpO1xufVxuXG4vLyBXaGV0aGVyIGEgY29uZmlnIGlzIGZvciB0aGUgTWF0ZXJpYWwgRGVzaWduIDIwMTggdHlwb2dyYXBoeSBzeXN0ZW0uXG5AZnVuY3Rpb24gcHJpdmF0ZS10eXBvZ3JhcGh5LWlzLTIwMTgtY29uZmlnKCRjb25maWcpIHtcbiAgQHJldHVybiBtYXAuZ2V0KCRjb25maWcsIGhlYWRsaW5lLTEpICE9IG51bGw7XG59XG5cbi8vIFdoZXRoZXIgYSBjb25maWcgaXMgZm9yIHRoZSBNYXRlcmlhbCBEZXNpZ24gMjAxNCB0eXBvZ3JhcGh5IHN5c3RlbS5cbkBmdW5jdGlvbiBwcml2YXRlLXR5cG9ncmFwaHktaXMtMjAxNC1jb25maWcoJGNvbmZpZykge1xuICBAcmV0dXJuIG1hcC5nZXQoJGNvbmZpZywgaGVhZGxpbmUpICE9IG51bGw7XG59XG5cbi8vIEdpdmVuIGEgY29uZmlnIGZvciBlaXRoZXIgdGhlIDIwMTQgb3IgMjAxOCBNYXRlcmlhbCBEZXNpZ24gdHlwb2dyYXBoeSBzeXN0ZW0sXG4vLyBwcm9kdWNlcyBhIG5vcm1hbGl6ZWQgdHlwb2dyYXBoeSBjb25maWcgZm9yIHRoZSAyMDE0IE1hdGVyaWFsIERlc2lnbiB0eXBvZ3JhcGh5IHN5c3RlbS5cbi8vIDIwMTQgLSBodHRwczovL21hdGVyaWFsLmlvL2FyY2hpdmUvZ3VpZGVsaW5lcy9zdHlsZS90eXBvZ3JhcGh5Lmh0bWwjdHlwb2dyYXBoeS1zdHlsZXNcbi8vIDIwMTggLSBodHRwczovL21hdGVyaWFsLmlvL2Rlc2lnbi90eXBvZ3JhcGh5L3RoZS10eXBlLXN5c3RlbS5odG1sI3R5cGUtc2NhbGVcbi8vXG4vLyBDb21wb25lbnRzIHVzaW5nIHRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIG1pZ3JhdGVkIHRvIG5vcm1hbGl6ZSB0byB0aGUgMjAxOCBzdHlsZSBjb25maWcgaW5zdGVhZC5cbi8vIE5ldyBjb21wb25lbnRzIHNob3VsZCBub3QgdXNlIHRoaXMgZnVuY3Rpb24uXG5AZnVuY3Rpb24gcHJpdmF0ZS10eXBvZ3JhcGh5LXRvLTIwMTQtY29uZmlnKCRjb25maWcpIHtcbiAgQGlmICRjb25maWcgPT0gbnVsbCB7XG4gICAgQHJldHVybiBudWxsO1xuICB9XG4gIEBpZiBub3QgcHJpdmF0ZS10eXBvZ3JhcGh5LWlzLTIwMTQtY29uZmlnKCRjb25maWcpIHtcbiAgICAkYXJnczogKFxuICAgICAgICBkaXNwbGF5LTQ6IG1hcC5nZXQoJGNvbmZpZywgaGVhZGxpbmUtMSksXG4gICAgICAgIGRpc3BsYXktMzogbWFwLmdldCgkY29uZmlnLCBoZWFkbGluZS0yKSxcbiAgICAgICAgZGlzcGxheS0yOiBtYXAuZ2V0KCRjb25maWcsIGhlYWRsaW5lLTMpLFxuICAgICAgICBkaXNwbGF5LTE6IG1hcC5nZXQoJGNvbmZpZywgaGVhZGxpbmUtNCksXG4gICAgICAgIGhlYWRsaW5lOiBtYXAuZ2V0KCRjb25maWcsIGhlYWRsaW5lLTUpLFxuICAgICAgICB0aXRsZTogbWFwLmdldCgkY29uZmlnLCBoZWFkbGluZS02KSxcbiAgICAgICAgc3ViaGVhZGluZy0yOiBtYXAuZ2V0KCRjb25maWcsIHN1YnRpdGxlLTEpLFxuICAgICAgICBzdWJoZWFkaW5nLTE6IG1hcC5nZXQoJGNvbmZpZywgc3VidGl0bGUtMiksXG4gICAgICAgIGJvZHktMjogbWFwLmdldCgkY29uZmlnLCBib2R5LTEpLFxuICAgICAgICBib2R5LTE6IG1hcC5nZXQoJGNvbmZpZywgYm9keS0yKSxcbiAgICAgICAgYnV0dG9uOiBtYXAuZ2V0KCRjb25maWcsIGJ1dHRvbiksXG4gICAgICAgIGNhcHRpb246IG1hcC5nZXQoJGNvbmZpZywgY2FwdGlvbiksXG4gICAgKTtcbiAgICAkbm9uLW51bGwtYXJnczogKCk7XG4gICAgQGVhY2ggJGtleSwgJHZhbHVlIGluICRhcmdzIHtcbiAgICAgIEBpZiAkdmFsdWUgIT0gbnVsbCB7XG4gICAgICAgICRub24tbnVsbC1hcmdzOiBtYXAubWVyZ2UoJG5vbi1udWxsLWFyZ3MsICgka2V5OiAkdmFsdWUpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgQHJldHVybiBkZWZpbmUtdHlwb2dyYXBoeS1jb25maWcoJG5vbi1udWxsLWFyZ3MuLi4pO1xuICB9XG4gIEByZXR1cm4gJGNvbmZpZztcbn1cblxuLy8gR2l2ZW4gYSBjb25maWcgZm9yIGVpdGhlciB0aGUgMjAxNCBvciAyMDE4IE1hdGVyaWFsIERlc2lnbiB0eXBvZ3JhcGh5IHN5c3RlbSxcbi8vIHByb2R1Y2VzIGEgbm9ybWFsaXplZCB0eXBvZ3JhcGh5IGNvbmZpZyBmb3IgdGhlIDIwMTggTWF0ZXJpYWwgRGVzaWduIHR5cG9ncmFwaHkgc3lzdGVtLlxuLy8gMjAxNCAtIGh0dHBzOi8vbWF0ZXJpYWwuaW8vYXJjaGl2ZS9ndWlkZWxpbmVzL3N0eWxlL3R5cG9ncmFwaHkuaHRtbCN0eXBvZ3JhcGh5LXN0eWxlc1xuLy8gMjAxOCAtIGh0dHBzOi8vbWF0ZXJpYWwuaW8vZGVzaWduL3R5cG9ncmFwaHkvdGhlLXR5cGUtc3lzdGVtLmh0bWwjdHlwZS1zY2FsZVxuQGZ1bmN0aW9uIHByaXZhdGUtdHlwb2dyYXBoeS10by0yMDE4LWNvbmZpZygkY29uZmlnKSB7XG4gIEBpZiAkY29uZmlnID09IG51bGwge1xuICAgIEByZXR1cm4gbnVsbDtcbiAgfVxuICBAaWYgbm90IHByaXZhdGUtdHlwb2dyYXBoeS1pcy0yMDE4LWNvbmZpZygkY29uZmlnKSB7XG4gICAgQHJldHVybiAoXG4gICAgICAgIGhlYWRsaW5lLTE6IG1hcC5nZXQoJGNvbmZpZywgZGlzcGxheS00KSxcbiAgICAgICAgaGVhZGxpbmUtMjogbWFwLmdldCgkY29uZmlnLCBkaXNwbGF5LTMpLFxuICAgICAgICBoZWFkbGluZS0zOiBtYXAuZ2V0KCRjb25maWcsIGRpc3BsYXktMiksXG4gICAgICAgIGhlYWRsaW5lLTQ6IG1hcC5nZXQoJGNvbmZpZywgZGlzcGxheS0xKSxcbiAgICAgICAgaGVhZGxpbmUtNTogbWFwLmdldCgkY29uZmlnLCBoZWFkbGluZSksXG4gICAgICAgIGhlYWRsaW5lLTY6IG1hcC5nZXQoJGNvbmZpZywgdGl0bGUpLFxuICAgICAgICBzdWJ0aXRsZS0xOiBtYXAuZ2V0KCRjb25maWcsIHN1YmhlYWRpbmctMiksXG4gICAgICAgIHN1YnRpdGxlLTI6IG1hcC5nZXQoJGNvbmZpZywgc3ViaGVhZGluZy0xKSxcbiAgICAgICAgYm9keS0xOiBtYXAuZ2V0KCRjb25maWcsIGJvZHktMiksXG4gICAgICAgIGJvZHktMjogbWFwLmdldCgkY29uZmlnLCBib2R5LTEpLFxuICAgICAgICBidXR0b246IG1hcC5nZXQoJGNvbmZpZywgYnV0dG9uKSxcbiAgICAgICAgY2FwdGlvbjogbWFwLmdldCgkY29uZmlnLCBjYXB0aW9uKSxcbiAgICAgICAgb3ZlcmxpbmU6IGlmKG1hcC5nZXQoJGNvbmZpZywgb3ZlcmxpbmUpLCBtYXAuZ2V0KCRjb25maWcsIG92ZXJsaW5lKSxcbiAgICAgICAgICAgIGRlZmluZS10eXBvZ3JhcGh5LWxldmVsKDEycHgsIDMycHgsIDUwMClcbiAgICAgICAgKVxuICAgICk7XG4gIH1cbiAgQHJldHVybiAkY29uZmlnO1xufVxuXG4vLyBzdHlsZWxpbnQtZGlzYWJsZSBtYXRlcmlhbC90aGVtZS1taXhpbi1hcGlcblxuLy8vIEVtaXRzIGJhc2VsaW5lIHR5cG9ncmFwaGljIHN0eWxlcyBiYXNlZCBvbiBhIGdpdmVuIGNvbmZpZy5cbi8vLyBAcGFyYW0ge01hcH0gJGNvbmZpZy1vci10aGVtZSBBIHR5cG9ncmFwaHkgY29uZmlnIGZvciBhbiBlbnRpcmUgdGhlbWUuXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRzZWxlY3RvciBBbmNlc3RvciBzZWxlY3RvciB1bmRlciB3aGljaCBuYXRpdmUgZWxlbWVudHMsIHN1Y2ggYXMgaDEsIHdpbGxcbi8vLyAgICAgYmUgc3R5bGVkLlxuQG1peGluIHR5cG9ncmFwaHktaGllcmFyY2h5KCRjb25maWctb3ItdGhlbWUsICRzZWxlY3RvcjogJy5tYXQtdHlwb2dyYXBoeScpIHtcbiAgJGNvbmZpZzogcHJpdmF0ZS10eXBvZ3JhcGh5LXRvLTIwMTQtY29uZmlnKHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCRjb25maWctb3ItdGhlbWUpKTtcblxuICAubWF0LWgxLCAubWF0LWhlYWRsaW5lLCAjeyRzZWxlY3Rvcn0gaDEge1xuICAgIEBpbmNsdWRlIHR5cG9ncmFwaHktdXRpbHMudHlwb2dyYXBoeS1sZXZlbCgkY29uZmlnLCBoZWFkbGluZSk7XG4gICAgbWFyZ2luOiAwIDAgMTZweDtcbiAgfVxuXG4gIC5tYXQtaDIsIC5tYXQtdGl0bGUsICN7JHNlbGVjdG9yfSBoMiB7XG4gICAgQGluY2x1ZGUgdHlwb2dyYXBoeS11dGlscy50eXBvZ3JhcGh5LWxldmVsKCRjb25maWcsIHRpdGxlKTtcbiAgICBtYXJnaW46IDAgMCAxNnB4O1xuICB9XG5cbiAgLm1hdC1oMywgLm1hdC1zdWJoZWFkaW5nLTIsICN7JHNlbGVjdG9yfSBoMyB7XG4gICAgQGluY2x1ZGUgdHlwb2dyYXBoeS11dGlscy50eXBvZ3JhcGh5LWxldmVsKCRjb25maWcsIHN1YmhlYWRpbmctMik7XG4gICAgbWFyZ2luOiAwIDAgMTZweDtcbiAgfVxuXG4gIC5tYXQtaDQsIC5tYXQtc3ViaGVhZGluZy0xLCAjeyRzZWxlY3Rvcn0gaDQge1xuICAgIEBpbmNsdWRlIHR5cG9ncmFwaHktdXRpbHMudHlwb2dyYXBoeS1sZXZlbCgkY29uZmlnLCBzdWJoZWFkaW5nLTEpO1xuICAgIG1hcmdpbjogMCAwIDE2cHg7XG4gIH1cblxuICAvLyBOb3RlOiB0aGUgc3BlYyBkb2Vzbid0IGhhdmUgYW55dGhpbmcgdGhhdCB3b3VsZCBjb3JyZXNwb25kIHRvIGg1IGFuZCBoNiwgYnV0IHdlIGFkZCB0aGVzZSBmb3JcbiAgLy8gY29uc2lzdGVuY3kuIFRoZSBmb250IHNpemVzIGNvbWUgZnJvbSB0aGUgQ2hyb21lIHVzZXIgYWdlbnQgc3R5bGVzIHdoaWNoIGhhdmUgaDUgYXQgMC44M2VtXG4gIC8vIGFuZCBoNiBhdCAwLjY3ZW0uXG4gIC5tYXQtaDUsICN7JHNlbGVjdG9yfSBoNSB7XG4gICAgQGluY2x1ZGUgdHlwb2dyYXBoeS11dGlscy5mb250LXNob3J0aGFuZChcbiAgICAgICAvLyBjYWxjIGlzIHVzZWQgaGVyZSB0byBzdXBwb3J0IGNzcyB2YXJpYWJsZXNcbiAgICAgIGNhbGMoI3t0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtc2l6ZSgkY29uZmlnLCBib2R5LTEpfSAqIDAuODMpLFxuICAgICAgdHlwb2dyYXBoeS11dGlscy5mb250LXdlaWdodCgkY29uZmlnLCBib2R5LTEpLFxuICAgICAgdHlwb2dyYXBoeS11dGlscy5saW5lLWhlaWdodCgkY29uZmlnLCBib2R5LTEpLFxuICAgICAgdHlwb2dyYXBoeS11dGlscy5mb250LWZhbWlseSgkY29uZmlnLCBib2R5LTEpXG4gICAgKTtcblxuICAgIG1hcmdpbjogMCAwIDEycHg7XG4gIH1cblxuICAubWF0LWg2LCAjeyRzZWxlY3Rvcn0gaDYge1xuICAgIEBpbmNsdWRlIHR5cG9ncmFwaHktdXRpbHMuZm9udC1zaG9ydGhhbmQoXG4gICAgICAgLy8gY2FsYyBpcyB1c2VkIGhlcmUgdG8gc3VwcG9ydCBjc3MgdmFyaWFibGVzXG4gICAgICBjYWxjKCN7dHlwb2dyYXBoeS11dGlscy5mb250LXNpemUoJGNvbmZpZywgYm9keS0xKX0gKiAwLjY3KSxcbiAgICAgIHR5cG9ncmFwaHktdXRpbHMuZm9udC13ZWlnaHQoJGNvbmZpZywgYm9keS0xKSxcbiAgICAgIHR5cG9ncmFwaHktdXRpbHMubGluZS1oZWlnaHQoJGNvbmZpZywgYm9keS0xKSxcbiAgICAgIHR5cG9ncmFwaHktdXRpbHMuZm9udC1mYW1pbHkoJGNvbmZpZywgYm9keS0xKVxuICAgICk7XG5cbiAgICBtYXJnaW46IDAgMCAxMnB4O1xuICB9XG5cbiAgLm1hdC1ib2R5LXN0cm9uZywgLm1hdC1ib2R5LTIge1xuICAgIEBpbmNsdWRlIHR5cG9ncmFwaHktdXRpbHMudHlwb2dyYXBoeS1sZXZlbCgkY29uZmlnLCBib2R5LTIpO1xuICB9XG5cbiAgLm1hdC1ib2R5LCAubWF0LWJvZHktMSwgI3skc2VsZWN0b3J9IHtcbiAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5LXV0aWxzLnR5cG9ncmFwaHktbGV2ZWwoJGNvbmZpZywgYm9keS0xKTtcblxuICAgIHAge1xuICAgICAgbWFyZ2luOiAwIDAgMTJweDtcbiAgICB9XG4gIH1cblxuICAubWF0LXNtYWxsLCAubWF0LWNhcHRpb24ge1xuICAgIEBpbmNsdWRlIHR5cG9ncmFwaHktdXRpbHMudHlwb2dyYXBoeS1sZXZlbCgkY29uZmlnLCBjYXB0aW9uKTtcbiAgfVxuXG4gIC5tYXQtZGlzcGxheS00LCAjeyRzZWxlY3Rvcn0gLm1hdC1kaXNwbGF5LTQge1xuICAgIEBpbmNsdWRlIHR5cG9ncmFwaHktdXRpbHMudHlwb2dyYXBoeS1sZXZlbCgkY29uZmlnLCBkaXNwbGF5LTQpO1xuICAgIG1hcmdpbjogMCAwIDU2cHg7XG4gIH1cblxuICAubWF0LWRpc3BsYXktMywgI3skc2VsZWN0b3J9IC5tYXQtZGlzcGxheS0zIHtcbiAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5LXV0aWxzLnR5cG9ncmFwaHktbGV2ZWwoJGNvbmZpZywgZGlzcGxheS0zKTtcbiAgICBtYXJnaW46IDAgMCA2NHB4O1xuICB9XG5cbiAgLm1hdC1kaXNwbGF5LTIsICN7JHNlbGVjdG9yfSAubWF0LWRpc3BsYXktMiB7XG4gICAgQGluY2x1ZGUgdHlwb2dyYXBoeS11dGlscy50eXBvZ3JhcGh5LWxldmVsKCRjb25maWcsIGRpc3BsYXktMik7XG4gICAgbWFyZ2luOiAwIDAgNjRweDtcbiAgfVxuXG4gIC5tYXQtZGlzcGxheS0xLCAjeyRzZWxlY3Rvcn0gLm1hdC1kaXNwbGF5LTEge1xuICAgIEBpbmNsdWRlIHR5cG9ncmFwaHktdXRpbHMudHlwb2dyYXBoeS1sZXZlbCgkY29uZmlnLCBkaXNwbGF5LTEpO1xuICAgIG1hcmdpbjogMCAwIDY0cHg7XG4gIH1cbn1cblxuLy8gc3R5bGVsaW50LWVuYWJsZSBtYXRlcmlhbC90aGVtZS1taXhpbi1hcGlcbiIsIkB1c2UgJ3Nhc3M6bWFwJztcbkB1c2UgJ3Nhc3M6bWV0YSc7XG5AdXNlICdzYXNzOnN0cmluZyc7XG5cblxuLy8gVXRpbGl0eSBmb3IgZmV0Y2hpbmcgYSBuZXN0ZWQgdmFsdWUgZnJvbSBhIHR5cG9ncmFwaHkgY29uZmlnLlxuQGZ1bmN0aW9uIF9tYXQtZ2V0LXR5cGUtdmFsdWUoJGNvbmZpZywgJGxldmVsLCAkbmFtZSkge1xuICBAcmV0dXJuIG1hcC5nZXQobWFwLmdldCgkY29uZmlnLCAkbGV2ZWwpLCAkbmFtZSk7XG59XG5cbi8vLyBHZXRzIHRoZSBmb250IHNpemUgZm9yIGEgbGV2ZWwgaW5zaWRlIGEgdHlwb2dyYXBoeSBjb25maWcuXG4vLy8gQHBhcmFtIHtNYXB9ICRjb25maWcgQSB0eXBvZ3JhcGh5IGNvbmZpZy5cbi8vLyBAcGFyYW0ge01hcH0gJGxldmVsIEEgdHlwb2dyYXBoeSBsZXZlbC5cbkBmdW5jdGlvbiBmb250LXNpemUoJGNvbmZpZywgJGxldmVsKSB7XG4gIEByZXR1cm4gX21hdC1nZXQtdHlwZS12YWx1ZSgkY29uZmlnLCAkbGV2ZWwsIGZvbnQtc2l6ZSk7XG59XG5cbi8vLyBHZXRzIHRoZSBsaW5lIGhlaWdodCBmb3IgYSBsZXZlbCBpbnNpZGUgYSB0eXBvZ3JhcGh5IGNvbmZpZy5cbi8vLyBAcGFyYW0ge01hcH0gJGNvbmZpZyBBIHR5cG9ncmFwaHkgY29uZmlnLlxuLy8vIEBwYXJhbSB7TWFwfSAkbGV2ZWwgQSB0eXBvZ3JhcGh5IGxldmVsLlxuQGZ1bmN0aW9uIGxpbmUtaGVpZ2h0KCRjb25maWcsICRsZXZlbCkge1xuICBAcmV0dXJuIF9tYXQtZ2V0LXR5cGUtdmFsdWUoJGNvbmZpZywgJGxldmVsLCBsaW5lLWhlaWdodCk7XG59XG5cbi8vLyBHZXRzIHRoZSBmb250IHdlaWdodCBmb3IgYSBsZXZlbCBpbnNpZGUgYSB0eXBvZ3JhcGh5IGNvbmZpZy5cbi8vLyBAcGFyYW0ge01hcH0gJGNvbmZpZyBBIHR5cG9ncmFwaHkgY29uZmlnLlxuLy8vIEBwYXJhbSB7TWFwfSAkbGV2ZWwgQSB0eXBvZ3JhcGh5IGxldmVsLlxuQGZ1bmN0aW9uIGZvbnQtd2VpZ2h0KCRjb25maWcsICRsZXZlbCkge1xuICBAcmV0dXJuIF9tYXQtZ2V0LXR5cGUtdmFsdWUoJGNvbmZpZywgJGxldmVsLCBmb250LXdlaWdodCk7XG59XG5cbi8vLyBHZXRzIHRoZSBsZXR0ZXIgc3BhY2luZyBmb3IgYSBsZXZlbCBpbnNpZGUgYSB0eXBvZ3JhcGh5IGNvbmZpZy5cbi8vLyBAcGFyYW0ge01hcH0gJGNvbmZpZyBBIHR5cG9ncmFwaHkgY29uZmlnLlxuLy8vIEBwYXJhbSB7TWFwfSAkbGV2ZWwgQSB0eXBvZ3JhcGh5IGxldmVsLlxuQGZ1bmN0aW9uIGxldHRlci1zcGFjaW5nKCRjb25maWcsICRsZXZlbCkge1xuICBAcmV0dXJuIF9tYXQtZ2V0LXR5cGUtdmFsdWUoJGNvbmZpZywgJGxldmVsLCBsZXR0ZXItc3BhY2luZyk7XG59XG5cbi8vLyBHZXRzIHRoZSBmb250LWZhbWlseSBmcm9tIGEgdHlwb2dyYXBoeSBjb25maWcgYW5kIHJlbW92ZXMgdGhlIHF1b3RlcyBhcm91bmQgaXQuXG4vLy8gQHBhcmFtIHtNYXB9ICRjb25maWcgQSB0eXBvZ3JhcGh5IGNvbmZpZy5cbi8vLyBAcGFyYW0ge01hcH0gJGxldmVsIEEgdHlwb2dyYXBoeSBsZXZlbC5cbkBmdW5jdGlvbiBmb250LWZhbWlseSgkY29uZmlnLCAkbGV2ZWw6IG51bGwpIHtcbiAgJGZvbnQtZmFtaWx5OiBtYXAuZ2V0KCRjb25maWcsIGZvbnQtZmFtaWx5KTtcblxuICBAaWYgJGxldmVsICE9IG51bGwge1xuICAgICRmb250LWZhbWlseTogX21hdC1nZXQtdHlwZS12YWx1ZSgkY29uZmlnLCAkbGV2ZWwsIGZvbnQtZmFtaWx5KTtcbiAgfVxuXG4gIC8vIEd1YXJkIGFnYWluc3QgdW5xdW90aW5nIG5vbi1zdHJpbmcgdmFsdWVzLCBiZWNhdXNlIGl0J3MgZGVwcmVjYXRlZC5cbiAgQHJldHVybiBpZihtZXRhLnR5cGUtb2YoJGZvbnQtZmFtaWx5KSA9PSBzdHJpbmcsIHN0cmluZy51bnF1b3RlKCRmb250LWZhbWlseSksICRmb250LWZhbWlseSk7XG59XG5cbi8vLyBPdXRwdXRzIHRoZSBzaG9ydGhhbmQgYGZvbnRgIENTUyBwcm9wZXJ0eSwgYmFzZWQgb24gYSBzZXQgb2YgdHlwb2dyYXBoeSB2YWx1ZXMuIEZhbGxzIGJhY2sgdG9cbi8vLyB0aGUgaW5kaXZpZHVhbCBwcm9wZXJ0aWVzIGlmIGEgdmFsdWUgdGhhdCBpc24ndCBhbGxvd2VkIGluIHRoZSBzaG9ydGhhbmQgaXMgcGFzc2VkIGluLlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkZm9udC1zaXplIFRoZSBmb250LXNpemUgdmFsdWUuXG4vLy8gQHBhcmFtIHtTdHJpbmcgfCBOdW1iZXJ9ICRmb250LXdlaWdodCBUaGUgZm9udC13ZWlnaHQgdmFsdWUuXG4vLy8gQHBhcmFtIHtTdHJpbmcgfCBOdW1iZXJ9ICRsaW5lLWhlaWdodCBUaGUgbGluZS1oZWlnaHQgdmFsdWUuXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRmb250LWZhbWlseSBUaGUgZm9udC1mYW1pbHkgdmFsdWUuXG4vLy8gQHJldHVybnMge1N0cmluZ30gVGhlIGBmb250YCBzaG9ydGhhbmQgdmFsdWUgY29tYmluaW5nIHRoZSBnaXZlbiBwYXJ0cy5cbkBtaXhpbiBmb250LXNob3J0aGFuZCgkZm9udC1zaXplLCAkZm9udC13ZWlnaHQsICRsaW5lLWhlaWdodCwgJGZvbnQtZmFtaWx5KSB7XG4gIC8vIElmIGFueSBvZiB0aGUgdmFsdWVzIGFyZSBzZXQgdG8gYGluaGVyaXRgLCB3ZSBjYW4ndCB1c2UgdGhlIHNob3J0aGFuZFxuICAvLyBzbyB3ZSBmYWxsIGJhY2sgdG8gcGFzc2luZyBpbiB0aGUgaW5kaXZpZHVhbCBwcm9wZXJ0aWVzLlxuICBAaWYgKCRmb250LXNpemUgPT0gaW5oZXJpdCBvclxuICAgICAgICRmb250LXdlaWdodCA9PSBpbmhlcml0IG9yXG4gICAgICAgJGxpbmUtaGVpZ2h0ID09IGluaGVyaXQgb3JcbiAgICAgICAkZm9udC1mYW1pbHkgPT0gaW5oZXJpdCBvclxuICAgICAgICRmb250LXNpemUgPT0gbnVsbCBvclxuICAgICAgICRmb250LXdlaWdodCA9PSBudWxsIG9yXG4gICAgICAgJGxpbmUtaGVpZ2h0ID09IG51bGwgb3JcbiAgICAgICAkZm9udC1mYW1pbHkgPT0gbnVsbCkge1xuXG4gICAgZm9udC1zaXplOiAkZm9udC1zaXplO1xuICAgIGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQ7XG4gICAgbGluZS1oZWlnaHQ6ICRsaW5lLWhlaWdodDtcbiAgICBmb250LWZhbWlseTogJGZvbnQtZmFtaWx5O1xuICB9XG4gIEBlbHNlIHtcbiAgICAvLyBPdGhlcndpc2UgdXNlIHRoZSBzaG9ydGhhbmQgYGZvbnRgLCBiZWNhdXNlIGl0J3MgdGhlIGxlYXN0IGFtb3VudCBvZiBieXRlcy4gTm90ZVxuICAgIC8vIHRoYXQgd2UgbmVlZCB0byB1c2UgaW50ZXJwb2xhdGlvbiBmb3IgYGZvbnQtc2l6ZS9saW5lLWhlaWdodGAgaW4gb3JkZXIgdG8gcHJldmVudFxuICAgIC8vIFNhc3MgZnJvbSBkaXZpZGluZyB0aGUgdHdvIHZhbHVlcy5cbiAgICBmb250OiAkZm9udC13ZWlnaHQgI3skZm9udC1zaXplfS8jeyRsaW5lLWhlaWdodH0gJGZvbnQtZmFtaWx5O1xuICB9XG59XG5cbi8vLyBFbWl0cyBDU1Mgc3R5bGVzIGZvciB0aGUgZ2l2ZW4gdHlwb2dyYXBoeSBsZXZlbC5cbi8vLyBAcGFyYW0ge01hcH0gJGNvbmZpZyBBIHR5cG9ncmFwaHkgY29uZmlnLlxuLy8vIEBwYXJhbSB7TWFwfSAkbGV2ZWwgQSB0eXBvZ3JhcGh5IGxldmVsLlxuQG1peGluIHR5cG9ncmFwaHktbGV2ZWwoJGNvbmZpZywgJGxldmVsKSB7XG4gICRmb250LXNpemU6IGZvbnQtc2l6ZSgkY29uZmlnLCAkbGV2ZWwpO1xuICAkZm9udC13ZWlnaHQ6IGZvbnQtd2VpZ2h0KCRjb25maWcsICRsZXZlbCk7XG4gICRsaW5lLWhlaWdodDogbGluZS1oZWlnaHQoJGNvbmZpZywgJGxldmVsKTtcbiAgJGZvbnQtZmFtaWx5OiBmb250LWZhbWlseSgkY29uZmlnLCAkbGV2ZWwpO1xuXG4gIEBpbmNsdWRlIGZvbnQtc2hvcnRoYW5kKCRmb250LXNpemUsICRmb250LXdlaWdodCwgJGxpbmUtaGVpZ2h0LCAkZm9udC1mYW1pbHkpO1xuICBsZXR0ZXItc3BhY2luZzogbGV0dGVyLXNwYWNpbmcoJGNvbmZpZywgJGxldmVsKTtcbn1cbiIsIkB1c2UgJ3Nhc3M6bWFwJztcbkB1c2UgJy4uL2NvcmUvc3R5bGUvcHJpdmF0ZSc7XG5AdXNlICcuLi9jb3JlL3R5cG9ncmFwaHkvdHlwb2dyYXBoeSc7XG5AdXNlICcuLi9jb3JlL3R5cG9ncmFwaHkvdHlwb2dyYXBoeS11dGlscyc7XG5AdXNlICcuLi9jb3JlL3RoZW1pbmcvdGhlbWluZyc7XG5cbkBtaXhpbiBjb2xvcigkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJGJhY2tncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgYmFja2dyb3VuZCk7XG4gICRmb3JlZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGZvcmVncm91bmQpO1xuXG4gIC5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lciB7XG4gICAgQGluY2x1ZGUgcHJpdmF0ZS5wcml2YXRlLXRoZW1lLWVsZXZhdGlvbigxNiwgJGNvbmZpZyk7XG4gICAgYmFja2dyb3VuZDogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLCBkaWFsb2cpO1xuICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIHRleHQpO1xuICB9XG59XG5cbkBtaXhpbiB0eXBvZ3JhcGh5KCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdHlwb2dyYXBoeS5wcml2YXRlLXR5cG9ncmFwaHktdG8tMjAxNC1jb25maWcoXG4gICAgICB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKSk7XG4gIC5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lciB7XG4gICAgQGluY2x1ZGUgdHlwb2dyYXBoeS11dGlscy50eXBvZ3JhcGh5LWxldmVsKCRjb25maWcsIGJvZHktMSk7XG4gIH1cbn1cblxuQG1peGluIF9kZW5zaXR5KCRjb25maWctb3ItdGhlbWUpIHt9XG5cbkBtaXhpbiB0aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKSB7XG4gICR0aGVtZTogdGhlbWluZy5wcml2YXRlLWxlZ2FjeS1nZXQtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZyk7XG4gIEBpbmNsdWRlIHRoZW1pbmcucHJpdmF0ZS1jaGVjay1kdXBsaWNhdGUtdGhlbWUtc3R5bGVzKCR0aGVtZSwgJ21hdC1ib3R0b20tc2hlZXQnKSB7XG4gICAgJGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJHRoZW1lKTtcbiAgICAkZGVuc2l0eTogdGhlbWluZy5nZXQtZGVuc2l0eS1jb25maWcoJHRoZW1lKTtcbiAgICAkdHlwb2dyYXBoeTogdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJHRoZW1lKTtcblxuICAgIEBpZiAkY29sb3IgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBjb2xvcigkY29sb3IpO1xuICAgIH1cbiAgICBAaWYgJGRlbnNpdHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBfZGVuc2l0eSgkZGVuc2l0eSk7XG4gICAgfVxuICAgIEBpZiAkdHlwb2dyYXBoeSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIHR5cG9ncmFwaHkoJHR5cG9ncmFwaHkpO1xuICAgIH1cbiAgfVxufVxuIiwiQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnc2FzczptZXRhJztcbkB1c2UgJy4uL2NvcmUvdGhlbWluZy90aGVtaW5nJztcbkB1c2UgJy4uL2NvcmUvc3R5bGUvcHJpdmF0ZSc7XG5AdXNlICcuLi9jb3JlL3R5cG9ncmFwaHkvdHlwb2dyYXBoeSc7XG5AdXNlICcuLi9jb3JlL3R5cG9ncmFwaHkvdHlwb2dyYXBoeS11dGlscyc7XG5cbiRfcmlwcGxlLW9wYWNpdHk6IDAuMTtcblxuLy8gQXBwbGllcyBhIGZvY3VzIHN0eWxlIHRvIGFuIG1hdC1idXR0b24gZWxlbWVudCBmb3IgZWFjaCBvZiB0aGUgc3VwcG9ydGVkIHBhbGV0dGVzLlxuQG1peGluIF9mb2N1cy1vdmVybGF5LWNvbG9yKCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAkcHJpbWFyeTogbWFwLmdldCgkY29uZmlnLCBwcmltYXJ5KTtcbiAgJGFjY2VudDogbWFwLmdldCgkY29uZmlnLCBhY2NlbnQpO1xuICAkd2FybjogbWFwLmdldCgkY29uZmlnLCB3YXJuKTtcblxuICAmLm1hdC1wcmltYXJ5IC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXkge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkcHJpbWFyeSk7XG4gIH1cblxuICAmLm1hdC1hY2NlbnQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRhY2NlbnQpO1xuICB9XG5cbiAgJi5tYXQtd2FybiAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5IHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHdhcm4pO1xuICB9XG5cbiAgJi5tYXQtYnV0dG9uLWRpc2FibGVkIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXkge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICB9XG59XG5cbi8vIEFwcGxpZXMgdGhlIGJhY2tncm91bmQgY29sb3IgZm9yIGEgcmlwcGxlLiBJZiB0aGUgdmFsdWUgcHJvdmlkZWQgaXMgbm90IGEgU2FzcyBjb2xvcixcbi8vIHdlIGFzc3VtZSB0aGF0IHdlJ3ZlIGJlZW4gZ2l2ZW4gYSBDU1MgdmFyaWFibGUuIFNpbmNlIHdlIGNhbid0IHBlcmZvcm0gYWxwaGEtYmxlbmRpbmdcbi8vIG9uIGEgQ1NTIHZhcmlhYmxlLCB3ZSBpbnN0ZWFkIGFkZCB0aGUgb3BhY2l0eSBkaXJlY3RseSB0byB0aGUgcmlwcGxlIGVsZW1lbnQuXG5AbWl4aW4gX3JpcHBsZS1iYWNrZ3JvdW5kKCRwYWxldHRlLCAkaHVlLCAkb3BhY2l0eSkge1xuICAkYmFja2dyb3VuZC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRwYWxldHRlLCAkaHVlLCAkb3BhY2l0eSk7XG4gIGJhY2tncm91bmQtY29sb3I6ICRiYWNrZ3JvdW5kLWNvbG9yO1xuICBAaWYgKG1ldGEudHlwZS1vZigkYmFja2dyb3VuZC1jb2xvcikgIT0gY29sb3IpIHtcbiAgICBvcGFjaXR5OiAkb3BhY2l0eTtcbiAgfVxufVxuXG5AbWl4aW4gX3JpcHBsZS1jb2xvcigkdGhlbWUsICRodWUsICRvcGFjaXR5OiAkX3JpcHBsZS1vcGFjaXR5KSB7XG4gICRwcmltYXJ5OiBtYXAuZ2V0KCR0aGVtZSwgcHJpbWFyeSk7XG4gICRhY2NlbnQ6IG1hcC5nZXQoJHRoZW1lLCBhY2NlbnQpO1xuICAkd2FybjogbWFwLmdldCgkdGhlbWUsIHdhcm4pO1xuXG4gICYubWF0LXByaW1hcnkgLm1hdC1yaXBwbGUtZWxlbWVudCB7XG4gICAgQGluY2x1ZGUgX3JpcHBsZS1iYWNrZ3JvdW5kKCRwcmltYXJ5LCAkaHVlLCAkb3BhY2l0eSk7XG4gIH1cblxuICAmLm1hdC1hY2NlbnQgLm1hdC1yaXBwbGUtZWxlbWVudCB7XG4gICAgQGluY2x1ZGUgX3JpcHBsZS1iYWNrZ3JvdW5kKCRhY2NlbnQsICRodWUsICRvcGFjaXR5KTtcbiAgfVxuXG4gICYubWF0LXdhcm4gLm1hdC1yaXBwbGUtZWxlbWVudCB7XG4gICAgQGluY2x1ZGUgX3JpcHBsZS1iYWNrZ3JvdW5kKCR3YXJuLCAkaHVlLCAkb3BhY2l0eSk7XG4gIH1cbn1cblxuLy8gQXBwbGllcyBhIHByb3BlcnR5IHRvIGFuIG1hdC1idXR0b24gZWxlbWVudCBmb3IgZWFjaCBvZiB0aGUgc3VwcG9ydGVkIHBhbGV0dGVzLlxuQG1peGluIF90aGVtZS1wcm9wZXJ0eSgkdGhlbWUsICRwcm9wZXJ0eSwgJGh1ZSkge1xuICAkcHJpbWFyeTogbWFwLmdldCgkdGhlbWUsIHByaW1hcnkpO1xuICAkYWNjZW50OiBtYXAuZ2V0KCR0aGVtZSwgYWNjZW50KTtcbiAgJHdhcm46IG1hcC5nZXQoJHRoZW1lLCB3YXJuKTtcbiAgJGJhY2tncm91bmQ6IG1hcC5nZXQoJHRoZW1lLCBiYWNrZ3JvdW5kKTtcbiAgJGZvcmVncm91bmQ6IG1hcC5nZXQoJHRoZW1lLCBmb3JlZ3JvdW5kKTtcblxuICAmLm1hdC1wcmltYXJ5IHtcbiAgICAjeyRwcm9wZXJ0eX06IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkcHJpbWFyeSwgJGh1ZSk7XG4gIH1cbiAgJi5tYXQtYWNjZW50IHtcbiAgICAjeyRwcm9wZXJ0eX06IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYWNjZW50LCAkaHVlKTtcbiAgfVxuICAmLm1hdC13YXJuIHtcbiAgICAjeyRwcm9wZXJ0eX06IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkd2FybiwgJGh1ZSk7XG4gIH1cblxuICAmLm1hdC1wcmltYXJ5LCAmLm1hdC1hY2NlbnQsICYubWF0LXdhcm4sICYubWF0LWJ1dHRvbi1kaXNhYmxlZCB7XG4gICAgJi5tYXQtYnV0dG9uLWRpc2FibGVkIHtcbiAgICAgICRwYWxldHRlOiBpZigkcHJvcGVydHkgPT0gJ2NvbG9yJywgJGZvcmVncm91bmQsICRiYWNrZ3JvdW5kKTtcbiAgICAgICN7JHByb3BlcnR5fTogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRwYWxldHRlLCBkaXNhYmxlZC1idXR0b24pO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gY29sb3IoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRwcmltYXJ5OiBtYXAuZ2V0KCRjb25maWcsIHByaW1hcnkpO1xuICAkYWNjZW50OiBtYXAuZ2V0KCRjb25maWcsIGFjY2VudCk7XG4gICR3YXJuOiBtYXAuZ2V0KCRjb25maWcsIHdhcm4pO1xuICAkYmFja2dyb3VuZDogbWFwLmdldCgkY29uZmlnLCBiYWNrZ3JvdW5kKTtcbiAgJGZvcmVncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgZm9yZWdyb3VuZCk7XG5cbiAgLm1hdC1idXR0b24sIC5tYXQtaWNvbi1idXR0b24sIC5tYXQtc3Ryb2tlZC1idXR0b24ge1xuICAgIC8vIEJ1dHRvbnMgd2l0aG91dCBhIGJhY2tncm91bmQgY29sb3Igc2hvdWxkIGluaGVyaXQgdGhlIGZvbnQgY29sb3IuIFRoaXMgaXMgbmVjZXNzYXJ5IHRvXG4gICAgLy8gZW5zdXJlIHRoYXQgdGhlIGJ1dHRvbiBpcyByZWFkYWJsZSBvbiBjdXN0b20gYmFja2dyb3VuZCBjb2xvcnMuIEl0J3Mgd3JvbmcgdG8gYWx3YXlzIGFzc3VtZVxuICAgIC8vIHRoYXQgdGhvc2UgYnV0dG9ucyBhcmUgYWx3YXlzIHBsYWNlZCBpbnNpZGUgb2YgY29udGFpbmVycyB3aXRoIHRoZSBkZWZhdWx0IGJhY2tncm91bmRcbiAgICAvLyBjb2xvciBvZiB0aGUgdGhlbWUgKGUuZy4gdGhlbWVkIHRvb2xiYXJzKS5cbiAgICBjb2xvcjogaW5oZXJpdDtcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcblxuICAgIEBpbmNsdWRlIF90aGVtZS1wcm9wZXJ0eSgkY29uZmlnLCAnY29sb3InLCB0ZXh0KTtcbiAgICBAaW5jbHVkZSBfZm9jdXMtb3ZlcmxheS1jb2xvcigkY29uZmlnKTtcblxuICAgIC8vIFNldHVwIHRoZSByaXBwbGUgY29sb3IgdG8gYmUgYmFzZWQgb24gdGhlIHRleHQgY29sb3IuIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSByaXBwbGVzXG4gICAgLy8gYXJlIG1hdGNoaW5nIHdpdGggdGhlIGN1cnJlbnQgdGhlbWUgcGFsZXR0ZSBhbmQgYXJlIGluIGNvbnRyYXN0IHRvIHRoZSBiYWNrZ3JvdW5kIGNvbG9yXG4gICAgLy8gKGUuZyBpbiB0aGVtZWQgdG9vbGJhcnMpLlxuICAgIC5tYXQtcmlwcGxlLWVsZW1lbnQge1xuICAgICAgb3BhY2l0eTogJF9yaXBwbGUtb3BhY2l0eTtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IGN1cnJlbnRDb2xvcjtcbiAgICB9XG4gIH1cblxuICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5IHtcbiAgICBiYWNrZ3JvdW5kOiBtYXAuZ2V0KCRmb3JlZ3JvdW5kLCBiYXNlKTtcbiAgfVxuXG4gIC8vIE5vdGU6IHRoaXMgbmVlZHMgYSBiaXQgZXh0cmEgc3BlY2lmaWNpdHksIGJlY2F1c2Ugd2UncmUgbm90IGd1YXJhbnRlZWQgdGhlIGluY2x1c2lvblxuICAvLyBvcmRlciBvZiB0aGUgdGhlbWUgc3R5bGVzIGFuZCB0aGUgYnV0dG9uIHJlc2V0IG1heSBlbmQgdXAgcmVzZXR0aW5nIHRoaXMgYXMgd2VsbC5cbiAgLm1hdC1zdHJva2VkLWJ1dHRvbjpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpIHtcbiAgICBib3JkZXItY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgZGl2aWRlcik7XG4gIH1cblxuICAubWF0LWZsYXQtYnV0dG9uLCAubWF0LXJhaXNlZC1idXR0b24sIC5tYXQtZmFiLCAubWF0LW1pbmktZmFiIHtcbiAgICAvLyBEZWZhdWx0IGZvbnQgYW5kIGJhY2tncm91bmQgY29sb3Igd2hlbiBub3QgdXNpbmcgYW55IGNvbG9yIHBhbGV0dGUuXG4gICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgdGV4dCk7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLCByYWlzZWQtYnV0dG9uKTtcblxuICAgIEBpbmNsdWRlIF90aGVtZS1wcm9wZXJ0eSgkY29uZmlnLCAnY29sb3InLCBkZWZhdWx0LWNvbnRyYXN0KTtcbiAgICBAaW5jbHVkZSBfdGhlbWUtcHJvcGVydHkoJGNvbmZpZywgJ2JhY2tncm91bmQtY29sb3InLCBkZWZhdWx0KTtcbiAgICBAaW5jbHVkZSBfcmlwcGxlLWNvbG9yKCRjb25maWcsIGRlZmF1bHQtY29udHJhc3QpO1xuICB9XG5cbiAgLm1hdC1zdHJva2VkLWJ1dHRvbiwgLm1hdC1mbGF0LWJ1dHRvbiB7XG4gICAgQGluY2x1ZGUgcHJpdmF0ZS5wcml2YXRlLXRoZW1lLW92ZXJyaWRhYmxlLWVsZXZhdGlvbigwLCAkY29uZmlnKTtcbiAgfVxuXG4gIC5tYXQtcmFpc2VkLWJ1dHRvbiB7XG4gICAgQGluY2x1ZGUgcHJpdmF0ZS5wcml2YXRlLXRoZW1lLW92ZXJyaWRhYmxlLWVsZXZhdGlvbigyLCAkY29uZmlnKTtcblxuICAgICY6bm90KC5tYXQtYnV0dG9uLWRpc2FibGVkKTphY3RpdmUge1xuICAgICAgQGluY2x1ZGUgcHJpdmF0ZS5wcml2YXRlLXRoZW1lLW92ZXJyaWRhYmxlLWVsZXZhdGlvbig4LCAkY29uZmlnKTtcbiAgICB9XG5cbiAgICAmLm1hdC1idXR0b24tZGlzYWJsZWQge1xuICAgICAgQGluY2x1ZGUgcHJpdmF0ZS5wcml2YXRlLXRoZW1lLW92ZXJyaWRhYmxlLWVsZXZhdGlvbigwLCAkY29uZmlnKTtcbiAgICB9XG4gIH1cblxuICAubWF0LWZhYiwgLm1hdC1taW5pLWZhYiB7XG4gICAgQGluY2x1ZGUgcHJpdmF0ZS5wcml2YXRlLXRoZW1lLW92ZXJyaWRhYmxlLWVsZXZhdGlvbig2LCAkY29uZmlnKTtcblxuICAgICY6bm90KC5tYXQtYnV0dG9uLWRpc2FibGVkKTphY3RpdmUge1xuICAgICAgQGluY2x1ZGUgcHJpdmF0ZS5wcml2YXRlLXRoZW1lLW92ZXJyaWRhYmxlLWVsZXZhdGlvbigxMiwgJGNvbmZpZyk7XG4gICAgfVxuXG4gICAgJi5tYXQtYnV0dG9uLWRpc2FibGVkIHtcbiAgICAgIEBpbmNsdWRlIHByaXZhdGUucHJpdmF0ZS10aGVtZS1vdmVycmlkYWJsZS1lbGV2YXRpb24oMCwgJGNvbmZpZyk7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiB0eXBvZ3JhcGh5KCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdHlwb2dyYXBoeS5wcml2YXRlLXR5cG9ncmFwaHktdG8tMjAxNC1jb25maWcoXG4gICAgICB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKSk7XG4gIC5tYXQtYnV0dG9uLCAubWF0LXJhaXNlZC1idXR0b24sIC5tYXQtaWNvbi1idXR0b24sIC5tYXQtc3Ryb2tlZC1idXR0b24sXG4gIC5tYXQtZmxhdC1idXR0b24sIC5tYXQtZmFiLCAubWF0LW1pbmktZmFiIHtcbiAgICBmb250OiB7XG4gICAgICBmYW1pbHk6IHR5cG9ncmFwaHktdXRpbHMuZm9udC1mYW1pbHkoJGNvbmZpZywgYnV0dG9uKTtcbiAgICAgIHNpemU6IHR5cG9ncmFwaHktdXRpbHMuZm9udC1zaXplKCRjb25maWcsIGJ1dHRvbik7XG4gICAgICB3ZWlnaHQ6IHR5cG9ncmFwaHktdXRpbHMuZm9udC13ZWlnaHQoJGNvbmZpZywgYnV0dG9uKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIF9kZW5zaXR5KCRjb25maWctb3ItdGhlbWUpIHt9XG5cbkBtaXhpbiB0aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKSB7XG4gICR0aGVtZTogdGhlbWluZy5wcml2YXRlLWxlZ2FjeS1nZXQtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZyk7XG4gIEBpbmNsdWRlIHRoZW1pbmcucHJpdmF0ZS1jaGVjay1kdXBsaWNhdGUtdGhlbWUtc3R5bGVzKCR0aGVtZSwgJ21hdC1idXR0b24nKSB7XG4gICAgJGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJHRoZW1lKTtcbiAgICAkZGVuc2l0eTogdGhlbWluZy5nZXQtZGVuc2l0eS1jb25maWcoJHRoZW1lKTtcbiAgICAkdHlwb2dyYXBoeTogdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJHRoZW1lKTtcblxuICAgIEBpZiAkY29sb3IgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBjb2xvcigkY29sb3IpO1xuICAgIH1cbiAgICBAaWYgJGRlbnNpdHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBfZGVuc2l0eSgkZGVuc2l0eSk7XG4gICAgfVxuICAgIEBpZiAkdHlwb2dyYXBoeSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIHR5cG9ncmFwaHkoJHR5cG9ncmFwaHkpO1xuICAgIH1cbiAgfVxufVxuIiwiQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnLi4vY29yZS9zdHlsZS9wcml2YXRlJztcbkB1c2UgJy4uL2NvcmUvdGhlbWluZy90aGVtaW5nJztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5JztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5LXV0aWxzJztcbkB1c2UgJy4uL2NvcmUvZGVuc2l0eS9wcml2YXRlL2NvbXBhdGliaWxpdHknO1xuQHVzZSAnLi9idXR0b24tdG9nZ2xlLXZhcmlhYmxlcyc7XG5cbkBtaXhpbiBjb2xvcigkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJGZvcmVncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgZm9yZWdyb3VuZCk7XG4gICRiYWNrZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGJhY2tncm91bmQpO1xuICAkZGl2aWRlci1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBkaXZpZGVyKTtcblxuICAubWF0LWJ1dHRvbi10b2dnbGUtc3RhbmRhbG9uZSxcbiAgLm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwIHtcbiAgICBAaW5jbHVkZSBwcml2YXRlLnByaXZhdGUtdGhlbWUtZWxldmF0aW9uKDIsICRjb25maWcpO1xuICB9XG5cbiAgLm1hdC1idXR0b24tdG9nZ2xlLXN0YW5kYWxvbmUubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZCxcbiAgLm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmQge1xuICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gIH1cblxuICAubWF0LWJ1dHRvbi10b2dnbGUge1xuICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIGhpbnQtdGV4dCk7XG5cbiAgICAubWF0LWJ1dHRvbi10b2dnbGUtZm9jdXMtb3ZlcmxheSB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGJhY2tncm91bmQsIGZvY3VzZWQtYnV0dG9uKTtcbiAgICB9XG4gIH1cblxuICAubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZCB7XG4gICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgdGV4dCk7XG4gICAgYmFja2dyb3VuZDogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLCBjYXJkKTtcblxuICAgIC5tYXQtYnV0dG9uLXRvZ2dsZS1mb2N1cy1vdmVybGF5IHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYmFja2dyb3VuZCwgZm9jdXNlZC1idXR0b24sIDEpO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkIC5tYXQtYnV0dG9uLXRvZ2dsZSArIC5tYXQtYnV0dG9uLXRvZ2dsZSB7XG4gICAgYm9yZGVyLWxlZnQ6IHNvbGlkIDFweCAkZGl2aWRlci1jb2xvcjtcbiAgfVxuXG4gIFtkaXI9J3J0bCddIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkIC5tYXQtYnV0dG9uLXRvZ2dsZSArIC5tYXQtYnV0dG9uLXRvZ2dsZSB7XG4gICAgYm9yZGVyLWxlZnQ6IG5vbmU7XG4gICAgYm9yZGVyLXJpZ2h0OiBzb2xpZCAxcHggJGRpdmlkZXItY29sb3I7XG4gIH1cblxuICAubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAtYXBwZWFyYW5jZS1zdGFuZGFyZC5tYXQtYnV0dG9uLXRvZ2dsZS12ZXJ0aWNhbCB7XG4gICAgLm1hdC1idXR0b24tdG9nZ2xlICsgLm1hdC1idXR0b24tdG9nZ2xlIHtcbiAgICAgIGJvcmRlci1sZWZ0OiBub25lO1xuICAgICAgYm9yZGVyLXJpZ2h0OiBub25lO1xuICAgICAgYm9yZGVyLXRvcDogc29saWQgMXB4ICRkaXZpZGVyLWNvbG9yO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtYnV0dG9uLXRvZ2dsZS1jaGVja2VkIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGJhY2tncm91bmQsIHNlbGVjdGVkLWJ1dHRvbik7XG4gICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgc2Vjb25kYXJ5LXRleHQpO1xuXG4gICAgJi5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkIHtcbiAgICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIHRleHQpO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtYnV0dG9uLXRvZ2dsZS1kaXNhYmxlZCB7XG4gICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgZGlzYWJsZWQtYnV0dG9uKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGJhY2tncm91bmQsIGRpc2FibGVkLWJ1dHRvbi10b2dnbGUpO1xuXG4gICAgJi5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkIHtcbiAgICAgIGJhY2tncm91bmQ6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYmFja2dyb3VuZCwgY2FyZCk7XG4gICAgfVxuXG4gICAgJi5tYXQtYnV0dG9uLXRvZ2dsZS1jaGVja2VkIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYmFja2dyb3VuZCwgc2VsZWN0ZWQtZGlzYWJsZWQtYnV0dG9uKTtcbiAgICB9XG4gIH1cblxuICAubWF0LWJ1dHRvbi10b2dnbGUtc3RhbmRhbG9uZS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkLFxuICAubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAtYXBwZWFyYW5jZS1zdGFuZGFyZCB7XG4gICAgYm9yZGVyOiBzb2xpZCAxcHggJGRpdmlkZXItY29sb3I7XG4gIH1cbn1cblxuQG1peGluIHR5cG9ncmFwaHkoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0eXBvZ3JhcGh5LnByaXZhdGUtdHlwb2dyYXBoeS10by0yMDE0LWNvbmZpZyhcbiAgICAgIHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCRjb25maWctb3ItdGhlbWUpKTtcbiAgLm1hdC1idXR0b24tdG9nZ2xlIHtcbiAgICBmb250LWZhbWlseTogdHlwb2dyYXBoeS11dGlscy5mb250LWZhbWlseSgkY29uZmlnKTtcbiAgfVxufVxuXG5AbWl4aW4gZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRkZW5zaXR5LXNjYWxlOiB0aGVtaW5nLmdldC1kZW5zaXR5LWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJHN0YW5kYXJkLWhlaWdodDogY29tcGF0aWJpbGl0eS5wcml2YXRlLWRlbnNpdHktcHJvcC12YWx1ZShcbiAgICAgIGJ1dHRvbi10b2dnbGUtdmFyaWFibGVzLiRzdGFuZGFyZC1kZW5zaXR5LWNvbmZpZywgJGRlbnNpdHktc2NhbGUsIGhlaWdodCk7XG5cbiAgQGluY2x1ZGUgY29tcGF0aWJpbGl0eS5wcml2YXRlLWRlbnNpdHktbGVnYWN5LWNvbXBhdGliaWxpdHkoKSB7XG4gICAgLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmQgLm1hdC1idXR0b24tdG9nZ2xlLWxhYmVsLWNvbnRlbnQge1xuICAgICAgbGluZS1oZWlnaHQ6ICRzdGFuZGFyZC1oZWlnaHQ7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiB0aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKSB7XG4gICR0aGVtZTogdGhlbWluZy5wcml2YXRlLWxlZ2FjeS1nZXQtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZyk7XG4gIEBpbmNsdWRlIHRoZW1pbmcucHJpdmF0ZS1jaGVjay1kdXBsaWNhdGUtdGhlbWUtc3R5bGVzKCR0aGVtZSwgJ21hdC1idXR0b24tdG9nZ2xlJykge1xuICAgICRjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgJGRlbnNpdHk6IHRoZW1pbmcuZ2V0LWRlbnNpdHktY29uZmlnKCR0aGVtZSk7XG4gICAgJHR5cG9ncmFwaHk6IHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCR0aGVtZSk7XG5cbiAgICBAaWYgJGNvbG9yICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgZGVuc2l0eSgkZGVuc2l0eSk7XG4gICAgfVxuICAgIEBpZiAkdHlwb2dyYXBoeSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIHR5cG9ncmFwaHkoJHR5cG9ncmFwaHkpO1xuICAgIH1cbiAgfVxufVxuIiwiQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnLi4vY29yZS90aGVtaW5nL3RoZW1pbmcnO1xuQHVzZSAnLi4vY29yZS9zdHlsZS9wcml2YXRlJztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5JztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5LXV0aWxzJztcblxuXG5AbWl4aW4gY29sb3IoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRiYWNrZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGJhY2tncm91bmQpO1xuICAkZm9yZWdyb3VuZDogbWFwLmdldCgkY29uZmlnLCBmb3JlZ3JvdW5kKTtcblxuICAubWF0LWNhcmQge1xuICAgIEBpbmNsdWRlIHByaXZhdGUucHJpdmF0ZS10aGVtZS1vdmVycmlkYWJsZS1lbGV2YXRpb24oMSwgJGNvbmZpZyk7XG4gICAgYmFja2dyb3VuZDogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLCBjYXJkKTtcbiAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCB0ZXh0KTtcblxuICAgIC8vIE5lZWRzIGV4dHJhIHNwZWNpZmljaXR5IHRvIGJlIGFibGUgdG8gb3ZlcnJpZGUgdGhlIGVsZXZhdGlvbiBzZWxlY3RvcnMuXG4gICAgJi5tYXQtY2FyZC1mbGF0IHtcbiAgICAgIEBpbmNsdWRlIHByaXZhdGUucHJpdmF0ZS10aGVtZS1vdmVycmlkYWJsZS1lbGV2YXRpb24oMCwgJGNvbmZpZyk7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1jYXJkLXN1YnRpdGxlIHtcbiAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBzZWNvbmRhcnktdGV4dCk7XG4gIH1cbn1cblxuQG1peGluIHR5cG9ncmFwaHkoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0eXBvZ3JhcGh5LnByaXZhdGUtdHlwb2dyYXBoeS10by0yMDE0LWNvbmZpZyhcbiAgICAgIHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCRjb25maWctb3ItdGhlbWUpKTtcbiAgLm1hdC1jYXJkIHtcbiAgICBmb250LWZhbWlseTogdHlwb2dyYXBoeS11dGlscy5mb250LWZhbWlseSgkY29uZmlnKTtcbiAgfVxuXG4gIC5tYXQtY2FyZC10aXRsZSB7XG4gICAgZm9udDoge1xuICAgICAgc2l6ZTogdHlwb2dyYXBoeS11dGlscy5mb250LXNpemUoJGNvbmZpZywgaGVhZGxpbmUpO1xuICAgICAgd2VpZ2h0OiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtd2VpZ2h0KCRjb25maWcsIHRpdGxlKTtcbiAgICB9XG4gIH1cblxuICAubWF0LWNhcmQtaGVhZGVyIC5tYXQtY2FyZC10aXRsZSB7XG4gICAgZm9udC1zaXplOiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtc2l6ZSgkY29uZmlnLCB0aXRsZSk7XG4gIH1cblxuICAubWF0LWNhcmQtc3VidGl0bGUsXG4gIC5tYXQtY2FyZC1jb250ZW50IHtcbiAgICBmb250LXNpemU6IHR5cG9ncmFwaHktdXRpbHMuZm9udC1zaXplKCRjb25maWcsIGJvZHktMSk7XG4gIH1cbn1cblxuQG1peGluIF9kZW5zaXR5KCRjb25maWctb3ItdGhlbWUpIHt9XG5cbkBtaXhpbiB0aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKSB7XG4gICR0aGVtZTogdGhlbWluZy5wcml2YXRlLWxlZ2FjeS1nZXQtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZyk7XG4gIEBpbmNsdWRlIHRoZW1pbmcucHJpdmF0ZS1jaGVjay1kdXBsaWNhdGUtdGhlbWUtc3R5bGVzKCR0aGVtZSwgJ21hdC1jYXJkJykge1xuICAgICRjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgJGRlbnNpdHk6IHRoZW1pbmcuZ2V0LWRlbnNpdHktY29uZmlnKCR0aGVtZSk7XG4gICAgJHR5cG9ncmFwaHk6IHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCR0aGVtZSk7XG5cbiAgICBAaWYgJGNvbG9yICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgX2RlbnNpdHkoJGRlbnNpdHkpO1xuICAgIH1cbiAgICBAaWYgJHR5cG9ncmFwaHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5KCR0eXBvZ3JhcGh5KTtcbiAgICB9XG4gIH1cbn1cbiIsIkB1c2UgJ3Nhc3M6bWFwJztcbkB1c2UgJy4uL2NvcmUvdGhlbWluZy90aGVtaW5nJztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5JztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5LXV0aWxzJztcblxuXG5AbWl4aW4gY29sb3IoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRpcy1kYXJrLXRoZW1lOiBtYXAuZ2V0KCRjb25maWcsIGlzLWRhcmspO1xuICAkcHJpbWFyeTogbWFwLmdldCgkY29uZmlnLCBwcmltYXJ5KTtcbiAgJGFjY2VudDogbWFwLmdldCgkY29uZmlnLCBhY2NlbnQpO1xuICAkd2FybjogbWFwLmdldCgkY29uZmlnLCB3YXJuKTtcbiAgJGJhY2tncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgYmFja2dyb3VuZCk7XG4gICRmb3JlZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGZvcmVncm91bmQpO1xuXG5cbiAgLy8gVGhlIGNvbG9yIG9mIHRoZSBjaGVja2JveCdzIGNoZWNrbWFyayAvIG1peGVkbWFyay5cbiAgJGNoZWNrYm94LW1hcmstY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYmFja2dyb3VuZCwgYmFja2dyb3VuZCk7XG5cbiAgLy8gTk9URSh0cmF2aXNrYXVmbWFuKTogV2hpbGUgdGhlIHNwZWMgY2FsbHMgZm9yIHRyYW5zbHVjZW50IGJsYWNrcy93aGl0ZXMgZm9yIGRpc2FibGVkIGNvbG9ycyxcbiAgLy8gdGhpcyBkb2VzIG5vdCB3b3JrIHdlbGwgd2l0aCBlbGVtZW50cyBsYXllcmVkIG9uIHRvcCBvZiBvbmUgYW5vdGhlci4gVG8gZ2V0IGFyb3VuZCB0aGlzIHdlXG4gIC8vIGJsZW5kIHRoZSBjb2xvcnMgdG9nZXRoZXIgYmFzZWQgb24gdGhlIGJhc2UgY29sb3IgYW5kIHRoZSB0aGVtZSBiYWNrZ3JvdW5kLlxuICAkd2hpdGUtMzBwY3Qtb3BhY2l0eS1vbi1kYXJrOiAjNjg2ODY4O1xuICAkYmxhY2stMjZwY3Qtb3BhY2l0eS1vbi1saWdodDogI2IwYjBiMDtcbiAgJGRpc2FibGVkLWNvbG9yOiBpZigkaXMtZGFyay10aGVtZSwgJHdoaXRlLTMwcGN0LW9wYWNpdHktb24tZGFyaywgJGJsYWNrLTI2cGN0LW9wYWNpdHktb24tbGlnaHQpO1xuXG4gIC5tYXQtY2hlY2tib3gtZnJhbWUge1xuICAgIGJvcmRlci1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBzZWNvbmRhcnktdGV4dCk7XG4gIH1cblxuICAubWF0LWNoZWNrYm94LWNoZWNrbWFyayB7XG4gICAgZmlsbDogJGNoZWNrYm94LW1hcmstY29sb3I7XG4gIH1cblxuICAubWF0LWNoZWNrYm94LWNoZWNrbWFyay1wYXRoIHtcbiAgICAvLyAhaW1wb3J0YW50IGlzIG5lZWRlZCBoZXJlIGJlY2F1c2UgYSBzdHJva2UgbXVzdCBiZSBzZXQgYXMgYW5cbiAgICAvLyBhdHRyaWJ1dGUgb24gdGhlIFNWRyBpbiBvcmRlciBmb3IgbGluZSBhbmltYXRpb24gdG8gd29yayBwcm9wZXJseS5cbiAgICBzdHJva2U6ICRjaGVja2JveC1tYXJrLWNvbG9yICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWF0LWNoZWNrYm94LW1peGVkbWFyayB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNoZWNrYm94LW1hcmstY29sb3I7XG4gIH1cblxuICAubWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUsIC5tYXQtY2hlY2tib3gtY2hlY2tlZCB7XG4gICAgJi5tYXQtcHJpbWFyeSAubWF0LWNoZWNrYm94LWJhY2tncm91bmQge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRwcmltYXJ5KTtcbiAgICB9XG5cbiAgICAmLm1hdC1hY2NlbnQgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYWNjZW50KTtcbiAgICB9XG5cbiAgICAmLm1hdC13YXJuIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHdhcm4pO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtY2hlY2tib3gtZGlzYWJsZWQge1xuICAgICYubWF0LWNoZWNrYm94LWNoZWNrZWQsXG4gICAgJi5tYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZSB7XG4gICAgICAubWF0LWNoZWNrYm94LWJhY2tncm91bmQge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZGlzYWJsZWQtY29sb3I7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJjpub3QoLm1hdC1jaGVja2JveC1jaGVja2VkKSB7XG4gICAgICAubWF0LWNoZWNrYm94LWZyYW1lIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAkZGlzYWJsZWQtY29sb3I7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLm1hdC1jaGVja2JveC1sYWJlbCB7XG4gICAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBzZWNvbmRhcnktdGV4dCk7XG4gICAgfVxuICB9XG5cbiAgLy8gU3dpdGNoIHRoaXMgdG8gYSBzb2xpZCBjb2xvciBzaW5jZSB3ZSdyZSB1c2luZyBgb3BhY2l0eWBcbiAgLy8gdG8gY29udHJvbCBob3cgb3BhcXVlIHRoZSByaXBwbGUgc2hvdWxkIGJlLlxuICAubWF0LWNoZWNrYm94IC5tYXQtcmlwcGxlLWVsZW1lbnQge1xuICAgIGJhY2tncm91bmQtY29sb3I6IG1hcC5nZXQobWFwLmdldCgkY29uZmlnLCBmb3JlZ3JvdW5kKSwgYmFzZSk7XG4gIH1cblxuICAubWF0LWNoZWNrYm94LWNoZWNrZWQ6bm90KC5tYXQtY2hlY2tib3gtZGlzYWJsZWQpLFxuICAubWF0LWNoZWNrYm94OmFjdGl2ZTpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkge1xuICAgICYubWF0LXByaW1hcnkgLm1hdC1yaXBwbGUtZWxlbWVudCB7XG4gICAgICBiYWNrZ3JvdW5kOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHByaW1hcnkpO1xuICAgIH1cblxuICAgICYubWF0LWFjY2VudCAubWF0LXJpcHBsZS1lbGVtZW50IHtcbiAgICAgIGJhY2tncm91bmQ6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYWNjZW50KTtcbiAgICB9XG5cbiAgICAmLm1hdC13YXJuIC5tYXQtcmlwcGxlLWVsZW1lbnQge1xuICAgICAgYmFja2dyb3VuZDogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCR3YXJuKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHR5cG9ncmFwaHkoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0eXBvZ3JhcGh5LnByaXZhdGUtdHlwb2dyYXBoeS10by0yMDE0LWNvbmZpZyhcbiAgICAgIHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCRjb25maWctb3ItdGhlbWUpKTtcbiAgLm1hdC1jaGVja2JveCB7XG4gICAgZm9udC1mYW1pbHk6IHR5cG9ncmFwaHktdXRpbHMuZm9udC1mYW1pbHkoJGNvbmZpZyk7XG4gIH1cblxuICAvLyBUT0RPKGthcmEpOiBSZW1vdmUgdGhpcyBzdHlsZSB3aGVuIGZpeGluZyB2ZXJ0aWNhbCBiYXNlbGluZVxuICAubWF0LWNoZWNrYm94LWxheW91dCAubWF0LWNoZWNrYm94LWxhYmVsIHtcbiAgICBsaW5lLWhlaWdodDogdHlwb2dyYXBoeS11dGlscy5saW5lLWhlaWdodCgkY29uZmlnLCBib2R5LTIpO1xuICB9XG59XG5cbkBtaXhpbiBfZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZykge1xuICAkdGhlbWU6IHRoZW1pbmcucHJpdmF0ZS1sZWdhY3ktZ2V0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICBAaW5jbHVkZSB0aGVtaW5nLnByaXZhdGUtY2hlY2stZHVwbGljYXRlLXRoZW1lLXN0eWxlcygkdGhlbWUsICdtYXQtY2hlY2tib3gnKSB7XG4gICAgJGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJHRoZW1lKTtcbiAgICAkZGVuc2l0eTogdGhlbWluZy5nZXQtZGVuc2l0eS1jb25maWcoJHRoZW1lKTtcbiAgICAkdHlwb2dyYXBoeTogdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJHRoZW1lKTtcblxuICAgIEBpZiAkY29sb3IgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBjb2xvcigkY29sb3IpO1xuICAgIH1cbiAgICBAaWYgJGRlbnNpdHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBfZGVuc2l0eSgkZGVuc2l0eSk7XG4gICAgfVxuICAgIEBpZiAkdHlwb2dyYXBoeSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIHR5cG9ncmFwaHkoJHR5cG9ncmFwaHkpO1xuICAgIH1cbiAgfVxufVxuIiwiQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnc2FzczptZXRhJztcbkB1c2UgJy4uL2NvcmUvc3R5bGUvcHJpdmF0ZSc7XG5AdXNlICcuLi9jb3JlL3RoZW1pbmcvdGhlbWluZyc7XG5AdXNlICcuLi9jb3JlL3R5cG9ncmFwaHkvdHlwb2dyYXBoeSc7XG5AdXNlICcuLi9jb3JlL3R5cG9ncmFwaHkvdHlwb2dyYXBoeS11dGlscyc7XG5cbiRjaGlwLXJlbW92ZS1mb250LXNpemU6IDE4cHg7XG5cbkBtaXhpbiBfZWxlbWVudC1jb2xvcigkZm9yZWdyb3VuZCwgJGJhY2tncm91bmQpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmQ7XG4gIGNvbG9yOiAkZm9yZWdyb3VuZDtcblxuICAubWF0LWNoaXAtcmVtb3ZlIHtcbiAgICBjb2xvcjogJGZvcmVncm91bmQ7XG4gICAgb3BhY2l0eTogMC40O1xuICB9XG59XG5cblxuLy8gQXBwbGllcyB0aGUgYmFja2dyb3VuZCBjb2xvciBmb3IgYSByaXBwbGUgZWxlbWVudC5cbi8vIElmIHRoZSBjb2xvciB2YWx1ZSBwcm92aWRlZCBpcyBub3QgYSBTYXNzIGNvbG9yLFxuLy8gd2UgYXNzdW1lIHRoYXQgd2UndmUgYmVlbiBnaXZlbiBhIENTUyB2YXJpYWJsZS5cbi8vIFNpbmNlIHdlIGNhbid0IHBlcmZvcm0gYWxwaGEtYmxlbmRpbmcgb24gYSBDU1MgdmFyaWFibGUsXG4vLyB3ZSBpbnN0ZWFkIGFkZCB0aGUgb3BhY2l0eSBkaXJlY3RseSB0byB0aGUgcmlwcGxlIGVsZW1lbnQuXG5AbWl4aW4gX3JpcHBsZS1iYWNrZ3JvdW5kKCRwYWxldHRlLCAkZGVmYXVsdC1jb250cmFzdCwgJG9wYWNpdHkpIHtcbiAgJGJhY2tncm91bmQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkcGFsZXR0ZSwgJGRlZmF1bHQtY29udHJhc3QsICRvcGFjaXR5KTtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmQtY29sb3I7XG4gIEBpZiAobWV0YS50eXBlLW9mKCRiYWNrZ3JvdW5kLWNvbG9yKSAhPSBjb2xvcikge1xuICAgIG9wYWNpdHk6ICRvcGFjaXR5O1xuICB9XG59XG5cbkBtaXhpbiBfcGFsZXR0ZS1zdHlsZXMoJHBhbGV0dGUpIHtcbiAgQGluY2x1ZGUgX2VsZW1lbnQtY29sb3IodGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRwYWxldHRlLCBkZWZhdWx0LWNvbnRyYXN0KSxcbiAgICB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHBhbGV0dGUpKTtcblxuICAubWF0LXJpcHBsZS1lbGVtZW50IHtcbiAgICBAaW5jbHVkZSBfcmlwcGxlLWJhY2tncm91bmQoJHBhbGV0dGUsIGRlZmF1bHQtY29udHJhc3QsIDAuMSk7XG4gIH1cbn1cblxuQG1peGluIGNvbG9yKCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAkaXMtZGFyay10aGVtZTogbWFwLmdldCgkY29uZmlnLCBpcy1kYXJrKTtcbiAgJHByaW1hcnk6IG1hcC5nZXQoJGNvbmZpZywgcHJpbWFyeSk7XG4gICRhY2NlbnQ6IG1hcC5nZXQoJGNvbmZpZywgYWNjZW50KTtcbiAgJHdhcm46IG1hcC5nZXQoJGNvbmZpZywgd2Fybik7XG4gICRiYWNrZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGJhY2tncm91bmQpO1xuICAkZm9yZWdyb3VuZDogbWFwLmdldCgkY29uZmlnLCBmb3JlZ3JvdW5kKTtcblxuICAkdW5zZWxlY3RlZC1iYWNrZ3JvdW5kOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGJhY2tncm91bmQsIHVuc2VsZWN0ZWQtY2hpcCk7XG4gICR1bnNlbGVjdGVkLWZvcmVncm91bmQ6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgdGV4dCk7XG5cbiAgLm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwIHtcbiAgICBAaW5jbHVkZSBfZWxlbWVudC1jb2xvcigkdW5zZWxlY3RlZC1mb3JlZ3JvdW5kLCAkdW5zZWxlY3RlZC1iYWNrZ3JvdW5kKTtcblxuICAgICY6bm90KC5tYXQtY2hpcC1kaXNhYmxlZCkge1xuICAgICAgJjphY3RpdmUge1xuICAgICAgICBAaW5jbHVkZSBwcml2YXRlLnByaXZhdGUtdGhlbWUtZWxldmF0aW9uKDMsICRjb25maWcpO1xuICAgICAgfVxuXG4gICAgICAubWF0LWNoaXAtcmVtb3ZlOmhvdmVyIHtcbiAgICAgICAgb3BhY2l0eTogMC41NDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLm1hdC1jaGlwLWRpc2FibGVkIHtcbiAgICAgIG9wYWNpdHk6IDAuNDtcbiAgICB9XG5cbiAgICAmOjphZnRlciB7XG4gICAgICBiYWNrZ3JvdW5kOiBtYXAuZ2V0KCRmb3JlZ3JvdW5kLCBiYXNlKTtcbiAgICB9XG4gIH1cblxuICAubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQge1xuICAgICYubWF0LXByaW1hcnkge1xuICAgICAgQGluY2x1ZGUgX3BhbGV0dGUtc3R5bGVzKCRwcmltYXJ5KTtcbiAgICB9XG5cbiAgICAmLm1hdC13YXJuIHtcbiAgICAgIEBpbmNsdWRlIF9wYWxldHRlLXN0eWxlcygkd2Fybik7XG4gICAgfVxuXG4gICAgJi5tYXQtYWNjZW50IHtcbiAgICAgIEBpbmNsdWRlIF9wYWxldHRlLXN0eWxlcygkYWNjZW50KTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHR5cG9ncmFwaHkoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0eXBvZ3JhcGh5LnByaXZhdGUtdHlwb2dyYXBoeS10by0yMDE0LWNvbmZpZyhcbiAgICAgIHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCRjb25maWctb3ItdGhlbWUpKTtcbiAgLm1hdC1jaGlwIHtcbiAgICBmb250LXNpemU6IHR5cG9ncmFwaHktdXRpbHMuZm9udC1zaXplKCRjb25maWcsIGJvZHktMik7XG4gICAgZm9udC13ZWlnaHQ6IHR5cG9ncmFwaHktdXRpbHMuZm9udC13ZWlnaHQoJGNvbmZpZywgYm9keS0yKTtcblxuICAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uLFxuICAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb24ge1xuICAgICAgZm9udC1zaXplOiAkY2hpcC1yZW1vdmUtZm9udC1zaXplO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gX2RlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIHRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiB0aGVtaW5nLnByaXZhdGUtbGVnYWN5LWdldC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgQGluY2x1ZGUgdGhlbWluZy5wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LWNoaXBzJykge1xuICAgICRjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgJGRlbnNpdHk6IHRoZW1pbmcuZ2V0LWRlbnNpdHktY29uZmlnKCR0aGVtZSk7XG4gICAgJHR5cG9ncmFwaHk6IHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCR0aGVtZSk7XG5cbiAgICBAaWYgJGNvbG9yICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgX2RlbnNpdHkoJGRlbnNpdHkpO1xuICAgIH1cbiAgICBAaWYgJHR5cG9ncmFwaHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5KCR0eXBvZ3JhcGh5KTtcbiAgICB9XG4gIH1cbn1cblxuXG4iLCJAdXNlICdzYXNzOm1hcCc7XG5AdXNlICcuLi9jb3JlL3RoZW1pbmcvdGhlbWluZyc7XG5AdXNlICcuLi9jb3JlL3R5cG9ncmFwaHkvdHlwb2dyYXBoeSc7XG5AdXNlICcuLi9jb3JlL3R5cG9ncmFwaHkvdHlwb2dyYXBoeS11dGlscyc7XG5cbkBtaXhpbiBjb2xvcigkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJGJhY2tncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgYmFja2dyb3VuZCk7XG4gICRmb3JlZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGZvcmVncm91bmQpO1xuXG4gIC5tYXQtdGFibGUge1xuICAgIGJhY2tncm91bmQ6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYmFja2dyb3VuZCwgJ2NhcmQnKTtcbiAgfVxuXG4gIC5tYXQtdGFibGUgdGhlYWQsIC5tYXQtdGFibGUgdGJvZHksIC5tYXQtdGFibGUgdGZvb3QsXG4gIG1hdC1oZWFkZXItcm93LCBtYXQtcm93LCBtYXQtZm9vdGVyLXJvdyxcbiAgW21hdC1oZWFkZXItcm93XSwgW21hdC1yb3ddLCBbbWF0LWZvb3Rlci1yb3ddLFxuICAubWF0LXRhYmxlLXN0aWNreSB7XG4gICAgYmFja2dyb3VuZDogaW5oZXJpdDtcbiAgfVxuXG4gIG1hdC1yb3csIG1hdC1oZWFkZXItcm93LCBtYXQtZm9vdGVyLXJvdyxcbiAgdGgubWF0LWhlYWRlci1jZWxsLCB0ZC5tYXQtY2VsbCwgdGQubWF0LWZvb3Rlci1jZWxsIHtcbiAgICBib3JkZXItYm90dG9tLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIGRpdmlkZXIpO1xuICB9XG5cbiAgLm1hdC1oZWFkZXItY2VsbCB7XG4gICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgc2Vjb25kYXJ5LXRleHQpO1xuICB9XG5cbiAgLm1hdC1jZWxsLCAubWF0LWZvb3Rlci1jZWxsIHtcbiAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCB0ZXh0KTtcbiAgfVxufVxuXG5AbWl4aW4gdHlwb2dyYXBoeSgkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHR5cG9ncmFwaHkucHJpdmF0ZS10eXBvZ3JhcGh5LXRvLTIwMTQtY29uZmlnKFxuICAgICAgdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJGNvbmZpZy1vci10aGVtZSkpO1xuICAubWF0LXRhYmxlIHtcbiAgICBmb250LWZhbWlseTogdHlwb2dyYXBoeS11dGlscy5mb250LWZhbWlseSgkY29uZmlnKTtcbiAgfVxuXG4gIC5tYXQtaGVhZGVyLWNlbGwge1xuICAgIGZvbnQtc2l6ZTogdHlwb2dyYXBoeS11dGlscy5mb250LXNpemUoJGNvbmZpZywgY2FwdGlvbik7XG4gICAgZm9udC13ZWlnaHQ6IHR5cG9ncmFwaHktdXRpbHMuZm9udC13ZWlnaHQoJGNvbmZpZywgYm9keS0yKTtcbiAgfVxuXG4gIC5tYXQtY2VsbCwgLm1hdC1mb290ZXItY2VsbCB7XG4gICAgZm9udC1zaXplOiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtc2l6ZSgkY29uZmlnLCBib2R5LTEpO1xuICB9XG59XG5cbkBtaXhpbiBfZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZykge1xuICAkdGhlbWU6IHRoZW1pbmcucHJpdmF0ZS1sZWdhY3ktZ2V0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICBAaW5jbHVkZSB0aGVtaW5nLnByaXZhdGUtY2hlY2stZHVwbGljYXRlLXRoZW1lLXN0eWxlcygkdGhlbWUsICdtYXQtdGFibGUnKSB7XG4gICAgJGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJHRoZW1lKTtcbiAgICAkZGVuc2l0eTogdGhlbWluZy5nZXQtZGVuc2l0eS1jb25maWcoJHRoZW1lKTtcbiAgICAkdHlwb2dyYXBoeTogdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJHRoZW1lKTtcblxuICAgIEBpZiAkY29sb3IgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBjb2xvcigkY29sb3IpO1xuICAgIH1cbiAgICBAaWYgJGRlbnNpdHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBfZGVuc2l0eSgkZGVuc2l0eSk7XG4gICAgfVxuICAgIEBpZiAkdHlwb2dyYXBoeSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIHR5cG9ncmFwaHkoJHR5cG9ncmFwaHkpO1xuICAgIH1cbiAgfVxufVxuIiwiQHVzZSAnc2Fzczpjb2xvcic7XG5AdXNlICdzYXNzOm1hcCc7XG5AdXNlICdzYXNzOm1hdGgnO1xuQHVzZSAnc2FzczptZXRhJztcbkB1c2UgJy4uL2NvcmUvc3R5bGUvcHJpdmF0ZSc7XG5AdXNlICcuLi9jb3JlL3RoZW1pbmcvdGhlbWluZyc7XG5AdXNlICcuLi9jb3JlL3R5cG9ncmFwaHkvdHlwb2dyYXBoeSc7XG5AdXNlICcuLi9jb3JlL3R5cG9ncmFwaHkvdHlwb2dyYXBoeS11dGlscyc7XG5cblxuJHNlbGVjdGVkLXRvZGF5LWJveC1zaGFkb3ctd2lkdGg6IDFweDtcbiRzZWxlY3RlZC1mYWRlLWFtb3VudDogMC42O1xuJHJhbmdlLWZhZGUtYW1vdW50OiAwLjI7XG4kdG9kYXktZmFkZS1hbW91bnQ6IDAuMjtcbiRjYWxlbmRhci1ib2R5LWZvbnQtc2l6ZTogMTNweCAhZGVmYXVsdDtcbiRjYWxlbmRhci13ZWVrZGF5LXRhYmxlLWZvbnQtc2l6ZTogMTFweCAhZGVmYXVsdDtcblxuQG1peGluIF9jb2xvcigkcGFsZXR0ZSkge1xuICBAaW5jbHVkZSBkYXRlLXJhbmdlLWNvbG9ycyhcbiAgICB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHBhbGV0dGUsIGRlZmF1bHQsICRyYW5nZS1mYWRlLWFtb3VudCkpO1xuXG4gIC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRwYWxldHRlKTtcbiAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRwYWxldHRlLCBkZWZhdWx0LWNvbnRyYXN0KTtcbiAgfVxuXG4gIC5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZCA+IC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCB7XG4gICAgJGJhY2tncm91bmQ6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkcGFsZXR0ZSk7XG5cbiAgICBAaWYgKG1ldGEudHlwZS1vZigkYmFja2dyb3VuZCkgPT0gY29sb3IpIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IGNvbG9yLmFkanVzdCgkYmFja2dyb3VuZCwgJGFscGhhOiAtJHNlbGVjdGVkLWZhZGUtYW1vdW50KTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgLy8gSWYgd2UgY291bGRuJ3QgcmVzb2x2ZSB0byBiYWNrZ3JvdW5kIHRvIGEgY29sb3IgKGUuZy4gaXQncyBhIENTUyB2YXJpYWJsZSksXG4gICAgICAvLyBmYWxsIGJhY2sgdG8gZmFkaW5nIHRoZSBjb250ZW50IG91dCB2aWEgYG9wYWNpdHlgLlxuICAgICAgb3BhY2l0eTogJHRvZGF5LWZhZGUtYW1vdW50O1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtY2FsZW5kYXItYm9keS10b2RheS5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCB7XG4gICAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDAgJHNlbGVjdGVkLXRvZGF5LWJveC1zaGFkb3ctd2lkdGhcbiAgICAgICAgICAgICAgICB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHBhbGV0dGUsIGRlZmF1bHQtY29udHJhc3QpO1xuICB9XG5cbiAgLm1hdC1jYWxlbmRhci1ib2R5LWNlbGw6bm90KC5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZCk6aG92ZXIsXG4gIC5jZGsta2V5Ym9hcmQtZm9jdXNlZCAubWF0LWNhbGVuZGFyLWJvZHktYWN0aXZlLFxuICAuY2RrLXByb2dyYW0tZm9jdXNlZCAubWF0LWNhbGVuZGFyLWJvZHktYWN0aXZlIHtcbiAgICAmID4gLm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudCB7XG4gICAgICBAaW5jbHVkZSBfdW5zZWxlY3RlZC1jZWxsIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRwYWxldHRlLCAwLjMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLyBVdGlsaXR5IG1peGluIHRvIHRhcmdldCBjZWxscyB0aGF0IGFyZW4ndCBzZWxlY3RlZC4gVXNlZCB0byBtYWtlIHNlbGVjdG9yIGVhc2llciB0byBmb2xsb3cuXG5AbWl4aW4gX3Vuc2VsZWN0ZWQtY2VsbCB7XG4gICY6bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbkBtaXhpbiBjb2xvcigkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJGZvcmVncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgZm9yZWdyb3VuZCk7XG4gICRiYWNrZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGJhY2tncm91bmQpO1xuICAkZGlzYWJsZWQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgZGlzYWJsZWQtdGV4dCk7XG5cbiAgLm1hdC1jYWxlbmRhci1hcnJvdyB7XG4gICAgYm9yZGVyLXRvcC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBpY29uKTtcbiAgfVxuXG4gIC8vIFRoZSBwcmV2L25leHQgYnV0dG9ucyBuZWVkIGEgYml0IG1vcmUgc3BlY2lmaWNpdHkgdG9cbiAgLy8gYXZvaWQgYmVpbmcgb3ZlcndyaXR0ZW4gYnkgdGhlIC5tYXQtaWNvbi1idXR0b24uXG4gIC5tYXQtZGF0ZXBpY2tlci10b2dnbGUsXG4gIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50IC5tYXQtY2FsZW5kYXItbmV4dC1idXR0b24sXG4gIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50IC5tYXQtY2FsZW5kYXItcHJldmlvdXMtYnV0dG9uIHtcbiAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBpY29uKTtcbiAgfVxuXG4gIC5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyIHtcbiAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBoaW50LXRleHQpO1xuICB9XG5cbiAgLm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXItZGl2aWRlcjo6YWZ0ZXIge1xuICAgIGJhY2tncm91bmQ6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgZGl2aWRlcik7XG4gIH1cblxuICAubWF0LWNhbGVuZGFyLWJvZHktbGFiZWwge1xuICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIHNlY29uZGFyeS10ZXh0KTtcbiAgfVxuXG4gIC5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnQsXG4gIC5tYXQtZGF0ZS1yYW5nZS1pbnB1dC1zZXBhcmF0b3Ige1xuICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIHRleHQpO1xuICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIH1cblxuICAubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWQgPiAubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50IHtcbiAgICBAaW5jbHVkZSBfdW5zZWxlY3RlZC1jZWxsIHtcbiAgICAgIGNvbG9yOiAkZGlzYWJsZWQtY29sb3I7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkIC5tYXQtZGF0ZS1yYW5nZS1pbnB1dC1zZXBhcmF0b3Ige1xuICAgIGNvbG9yOiAkZGlzYWJsZWQtY29sb3I7XG4gIH1cblxuICAubWF0LWNhbGVuZGFyLWJvZHktaW4tcHJldmlldyB7XG4gICAgJGRpdmlkZXItY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgZGl2aWRlcik7XG5cbiAgICBAaWYgbWV0YS50eXBlLW9mKCRkaXZpZGVyLWNvbG9yKSA9PSBjb2xvciB7XG4gICAgICAvLyBUaGUgZGl2aWRlciBjb2xvciBpcyBzZXQgdW5kZXIgdGhlIGFzc3VtcHRpb24gdGhhdCBpdCdsbCBiZSB1c2VkXG4gICAgICAvLyBmb3IgYSBzb2xpZCBib3JkZXIsIGJ1dCBiZWNhdXNlIHdlJ3JlIHVzaW5nIGEgZGFzaGVkIGJvcmRlciBmb3IgdGhlXG4gICAgICAvLyBwcmV2aWV3IHJhbmdlLCB3ZSBuZWVkIHRvIGJ1bXAgaXRzIG9wYWNpdHkgdG8gZW5zdXJlIHRoYXQgaXQncyB2aXNpYmxlLlxuICAgICAgY29sb3I6IHJnYmEoJGRpdmlkZXItY29sb3IsIG1hdGgubWluKG9wYWNpdHkoJGRpdmlkZXItY29sb3IpICogMiwgMSkpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBjb2xvcjogJGRpdmlkZXItY29sb3I7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5IHtcbiAgICBAaW5jbHVkZSBfdW5zZWxlY3RlZC1jZWxsIHtcbiAgICAgIC8vIE5vdGU6IHRob3VnaCBpdCdzIG5vdCB0ZXh0LCB0aGUgYm9yZGVyIGlzIGEgaGludCBhYm91dCB0aGUgZmFjdCB0aGF0IHRoaXMgaXMgdG9kYXkncyBkYXRlLFxuICAgICAgLy8gc28gd2UgdXNlIHRoZSBoaW50IGNvbG9yLlxuICAgICAgYm9yZGVyLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIGhpbnQtdGV4dCk7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkID4gLm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5IHtcbiAgICBAaW5jbHVkZSBfdW5zZWxlY3RlZC1jZWxsIHtcbiAgICAgICRjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBoaW50LXRleHQpO1xuXG4gICAgICBAaWYgKG1ldGEudHlwZS1vZigkY29sb3IpID09IGNvbG9yKSB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogY29sb3IuYWRqdXN0KCRjb2xvciwgJGFscGhhOiAtJHRvZGF5LWZhZGUtYW1vdW50KTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgLy8gSWYgdGhlIGNvbG9yIGRpZG4ndCByZXNvbHZlIHRvIGEgY29sb3IgdmFsdWUsIGJ1dCBzb21ldGhpbmcgbGlrZSBhIENTUyB2YXJpYWJsZSwgd2UgY2FuJ3RcbiAgICAgICAgLy8gZmFkZSBpdCBvdXQgc28gd2UgZmFsbCBiYWNrIHRvIHJlZHVjaW5nIHRoZSBlbGVtZW50IG9wYWNpdHkuIE5vdGUgdGhhdCB3ZSBkb24ndCB1c2UgdGhlXG4gICAgICAgIC8vICRtYXQtZGF0ZXBpY2tlci10b2RheS1mYWRlLWFtb3VudCwgYmVjYXVzZSBoaW50IHRleHQgdXN1YWxseSBoYXMgc29tZSBvcGFjaXR5IGFwcGxpZWRcbiAgICAgICAgLy8gdG8gaXQgYWxyZWFkeSBhbmQgd2UgZG9uJ3Qgd2FudCB0aGVtIHRvIHN0YWNrIG9uIHRvcCBvZiBlYWNoIG90aGVyLlxuICAgICAgICBvcGFjaXR5OiAwLjU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgX2NvbG9yKG1hcC5nZXQoJGNvbmZpZywgcHJpbWFyeSkpO1xuXG4gIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50IHtcbiAgICBAaW5jbHVkZSBwcml2YXRlLnByaXZhdGUtdGhlbWUtZWxldmF0aW9uKDQsICRjb25maWcpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYmFja2dyb3VuZCwgY2FyZCk7XG4gICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgdGV4dCk7XG5cbiAgICAmLm1hdC1hY2NlbnQge1xuICAgICAgQGluY2x1ZGUgX2NvbG9yKG1hcC5nZXQoJGNvbmZpZywgYWNjZW50KSk7XG4gICAgfVxuXG4gICAgJi5tYXQtd2FybiB7XG4gICAgICBAaW5jbHVkZSBfY29sb3IobWFwLmdldCgkY29uZmlnLCB3YXJuKSk7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQtdG91Y2gge1xuICAgIEBpbmNsdWRlIHByaXZhdGUucHJpdmF0ZS10aGVtZS1lbGV2YXRpb24oMjQsICRjb25maWcpO1xuICB9XG5cbiAgLm1hdC1kYXRlcGlja2VyLXRvZ2dsZS1hY3RpdmUge1xuICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUobWFwLmdldCgkY29uZmlnLCBwcmltYXJ5KSwgdGV4dCk7XG5cbiAgICAmLm1hdC1hY2NlbnQge1xuICAgICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZShtYXAuZ2V0KCRjb25maWcsIGFjY2VudCksIHRleHQpO1xuICAgIH1cblxuICAgICYubWF0LXdhcm4ge1xuICAgICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZShtYXAuZ2V0KCRjb25maWcsIHdhcm4pLCB0ZXh0KTtcbiAgICB9XG4gIH1cblxuICAubWF0LWRhdGUtcmFuZ2UtaW5wdXQtaW5uZXJbZGlzYWJsZWRdIHtcbiAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBkaXNhYmxlZC10ZXh0KTtcbiAgfVxufVxuXG5AbWl4aW4gdHlwb2dyYXBoeSgkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHR5cG9ncmFwaHkucHJpdmF0ZS10eXBvZ3JhcGh5LXRvLTIwMTQtY29uZmlnKFxuICAgICAgdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJGNvbmZpZy1vci10aGVtZSkpO1xuICAubWF0LWNhbGVuZGFyIHtcbiAgICBmb250LWZhbWlseTogdHlwb2dyYXBoeS11dGlscy5mb250LWZhbWlseSgkY29uZmlnKTtcbiAgfVxuXG4gIC5tYXQtY2FsZW5kYXItYm9keSB7XG4gICAgZm9udC1zaXplOiAkY2FsZW5kYXItYm9keS1mb250LXNpemU7XG4gIH1cblxuICAubWF0LWNhbGVuZGFyLWJvZHktbGFiZWwsXG4gIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbiB7XG4gICAgZm9udDoge1xuICAgICAgc2l6ZTogdHlwb2dyYXBoeS11dGlscy5mb250LXNpemUoJGNvbmZpZywgYnV0dG9uKTtcbiAgICAgIHdlaWdodDogdHlwb2dyYXBoeS11dGlscy5mb250LXdlaWdodCgkY29uZmlnLCBidXR0b24pO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyIHRoIHtcbiAgICBmb250OiB7XG4gICAgICBzaXplOiAkY2FsZW5kYXItd2Vla2RheS10YWJsZS1mb250LXNpemU7XG4gICAgICB3ZWlnaHQ6IHR5cG9ncmFwaHktdXRpbHMuZm9udC13ZWlnaHQoJGNvbmZpZywgYm9keS0xKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGRhdGUtcmFuZ2UtY29sb3JzKFxuICAkcmFuZ2UtY29sb3IsXG4gICRjb21wYXJpc29uLWNvbG9yOiByZ2JhKCNmOWFiMDAsICRyYW5nZS1mYWRlLWFtb3VudCksXG4gICRvdmVybGFwLWNvbG9yOiAjYThkYWI1LFxuICAkb3ZlcmxhcC1zZWxlY3RlZC1jb2xvcjogY29sb3IuYWRqdXN0KCRvdmVybGFwLWNvbG9yLCAkbGlnaHRuZXNzOiAtMzAlKSkge1xuXG4gIC5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZTo6YmVmb3JlIHtcbiAgICBiYWNrZ3JvdW5kOiAkcmFuZ2UtY29sb3I7XG4gIH1cblxuICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwsXG4gIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlOjpiZWZvcmUge1xuICAgIGJhY2tncm91bmQ6ICRjb21wYXJpc29uLWNvbG9yO1xuICB9XG5cbiAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLXN0YXJ0OjpiZWZvcmUsXG4gIFtkaXI9J3J0bCddIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmQ6OmJlZm9yZSB7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCAkcmFuZ2UtY29sb3IgNTAlLCAkY29tcGFyaXNvbi1jb2xvciA1MCUpO1xuICB9XG5cbiAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZDo6YmVmb3JlLFxuICBbZGlyPSdydGwnXSAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnQ6OmJlZm9yZSB7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIGxlZnQsICRyYW5nZS1jb2xvciA1MCUsICRjb21wYXJpc29uLWNvbG9yIDUwJSk7XG4gIH1cblxuICAubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2UgPiAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwsXG4gIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlOjphZnRlciB7XG4gICAgYmFja2dyb3VuZDogJG92ZXJsYXAtY29sb3I7XG4gIH1cblxuICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQsXG4gIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlID4gLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkIHtcbiAgICBiYWNrZ3JvdW5kOiAkb3ZlcmxhcC1zZWxlY3RlZC1jb2xvcjtcbiAgfVxufVxuXG5AbWl4aW4gX2RlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIHRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiB0aGVtaW5nLnByaXZhdGUtbGVnYWN5LWdldC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgQGluY2x1ZGUgdGhlbWluZy5wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LWRhdGVwaWNrZXInKSB7XG4gICAgJGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJHRoZW1lKTtcbiAgICAkZGVuc2l0eTogdGhlbWluZy5nZXQtZGVuc2l0eS1jb25maWcoJHRoZW1lKTtcbiAgICAkdHlwb2dyYXBoeTogdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJHRoZW1lKTtcblxuICAgIEBpZiAkY29sb3IgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBjb2xvcigkY29sb3IpO1xuICAgIH1cbiAgICBAaWYgJGRlbnNpdHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBfZGVuc2l0eSgkZGVuc2l0eSk7XG4gICAgfVxuICAgIEBpZiAkdHlwb2dyYXBoeSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIHR5cG9ncmFwaHkoJHR5cG9ncmFwaHkpO1xuICAgIH1cbiAgfVxufVxuIiwiQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnLi4vY29yZS9zdHlsZS9wcml2YXRlJztcbkB1c2UgJy4uL2NvcmUvdGhlbWluZy90aGVtaW5nJztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5JztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5LXV0aWxzJztcblxuXG5AbWl4aW4gY29sb3IoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRiYWNrZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGJhY2tncm91bmQpO1xuICAkZm9yZWdyb3VuZDogbWFwLmdldCgkY29uZmlnLCBmb3JlZ3JvdW5kKTtcblxuICAubWF0LWRpYWxvZy1jb250YWluZXIge1xuICAgIEBpbmNsdWRlIHByaXZhdGUucHJpdmF0ZS10aGVtZS1lbGV2YXRpb24oMjQsICRjb25maWcpO1xuICAgIGJhY2tncm91bmQ6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYmFja2dyb3VuZCwgZGlhbG9nKTtcbiAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCB0ZXh0KTtcbiAgfVxufVxuXG5AbWl4aW4gdHlwb2dyYXBoeSgkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHR5cG9ncmFwaHkucHJpdmF0ZS10eXBvZ3JhcGh5LXRvLTIwMTQtY29uZmlnKFxuICAgICAgdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJGNvbmZpZy1vci10aGVtZSkpO1xuICAubWF0LWRpYWxvZy10aXRsZSB7XG4gICAgQGluY2x1ZGUgdHlwb2dyYXBoeS11dGlscy50eXBvZ3JhcGh5LWxldmVsKCRjb25maWcsIHRpdGxlKTtcbiAgfVxufVxuXG5AbWl4aW4gX2RlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIHRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiB0aGVtaW5nLnByaXZhdGUtbGVnYWN5LWdldC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgQGluY2x1ZGUgdGhlbWluZy5wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LWRpYWxvZycpIHtcbiAgICAkY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkdGhlbWUpO1xuICAgICRkZW5zaXR5OiB0aGVtaW5nLmdldC1kZW5zaXR5LWNvbmZpZygkdGhlbWUpO1xuICAgICR0eXBvZ3JhcGh5OiB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkdGhlbWUpO1xuXG4gICAgQGlmICRjb2xvciAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIGNvbG9yKCRjb2xvcik7XG4gICAgfVxuICAgIEBpZiAkZGVuc2l0eSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIF9kZW5zaXR5KCRkZW5zaXR5KTtcbiAgICB9XG4gICAgQGlmICR0eXBvZ3JhcGh5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgdHlwb2dyYXBoeSgkdHlwb2dyYXBoeSk7XG4gICAgfVxuICB9XG59XG4iLCJAdXNlICdzYXNzOm1hcCc7XG5AdXNlICcuLi9jb3JlL2RlbnNpdHkvcHJpdmF0ZS9jb21wYXRpYmlsaXR5JztcbkB1c2UgJy4uL2NvcmUvdGhlbWluZy90aGVtaW5nJztcbkB1c2UgJy4uL2NvcmUvc3R5bGUvcHJpdmF0ZSc7XG5AdXNlICcuLi9jb3JlL3R5cG9ncmFwaHkvdHlwb2dyYXBoeSc7XG5AdXNlICcuLi9jb3JlL3R5cG9ncmFwaHkvdHlwb2dyYXBoeS11dGlscyc7XG5AdXNlICcuL2V4cGFuc2lvbi12YXJpYWJsZXMnO1xuQHVzZSAnLi9leHBhbnNpb24tbWl4aW5zJztcblxuQG1peGluIGNvbG9yKCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAkYmFja2dyb3VuZDogbWFwLmdldCgkY29uZmlnLCBiYWNrZ3JvdW5kKTtcbiAgJGZvcmVncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgZm9yZWdyb3VuZCk7XG5cbiAgLm1hdC1leHBhbnNpb24tcGFuZWwge1xuICAgIEBpbmNsdWRlIHByaXZhdGUucHJpdmF0ZS10aGVtZS1vdmVycmlkYWJsZS1lbGV2YXRpb24oMiwgJGNvbmZpZyk7XG4gICAgYmFja2dyb3VuZDogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLCBjYXJkKTtcbiAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCB0ZXh0KTtcbiAgfVxuXG4gIC5tYXQtYWN0aW9uLXJvdyB7XG4gICAgYm9yZGVyLXRvcC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBkaXZpZGVyKTtcbiAgfVxuXG4gIEBpbmNsdWRlIGV4cGFuc2lvbi1taXhpbnMucHJpdmF0ZS1leHBhbnNpb24tZm9jdXMge1xuICAgIGJhY2tncm91bmQ6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYmFja2dyb3VuZCwgaG92ZXIpO1xuICB9XG5cbiAgLy8gRGlzYWJsZSB0aGUgaG92ZXIgb24gdG91Y2ggZGV2aWNlcyBzaW5jZSBpdCBjYW4gYXBwZWFyIGxpa2UgaXQgaXMgc3R1Y2suIFdlIGNhbid0IHVzZVxuICAvLyBgQG1lZGlhIChob3ZlcilgIGFib3ZlLCBiZWNhdXNlIHRoZSBkZXNrdG9wIHN1cHBvcnQgYnJvd3NlciBzdXBwb3J0IGlzbid0IGdyZWF0LlxuICBAbWVkaWEgKGhvdmVyOiBub25lKSB7XG4gICAgLm1hdC1leHBhbnNpb24tcGFuZWw6bm90KC5tYXQtZXhwYW5kZWQpOm5vdChbYXJpYS1kaXNhYmxlZD0ndHJ1ZSddKVxuICAgICAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQ6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYmFja2dyb3VuZCwgY2FyZCk7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLXRpdGxlIHtcbiAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCB0ZXh0KTtcbiAgfVxuXG4gIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci1kZXNjcmlwdGlvbixcbiAgLm1hdC1leHBhbnNpb24taW5kaWNhdG9yOjphZnRlciB7XG4gICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgc2Vjb25kYXJ5LXRleHQpO1xuICB9XG5cbiAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW2FyaWEtZGlzYWJsZWQ9J3RydWUnXSB7XG4gICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgZGlzYWJsZWQtYnV0dG9uKTtcblxuICAgIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci10aXRsZSxcbiAgICAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXItZGVzY3JpcHRpb24ge1xuICAgICAgY29sb3I6IGluaGVyaXQ7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiB0eXBvZ3JhcGh5KCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdHlwb2dyYXBoeS5wcml2YXRlLXR5cG9ncmFwaHktdG8tMjAxNC1jb25maWcoXG4gICAgICB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKSk7XG4gIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlciB7XG4gICAgZm9udDoge1xuICAgICAgZmFtaWx5OiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtZmFtaWx5KCRjb25maWcsIHN1YmhlYWRpbmctMSk7XG4gICAgICBzaXplOiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtc2l6ZSgkY29uZmlnLCBzdWJoZWFkaW5nLTEpO1xuICAgICAgd2VpZ2h0OiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtd2VpZ2h0KCRjb25maWcsIHN1YmhlYWRpbmctMSk7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudCB7XG4gICAgQGluY2x1ZGUgdHlwb2dyYXBoeS11dGlscy50eXBvZ3JhcGh5LWxldmVsKCRjb25maWcsIGJvZHktMSk7XG4gIH1cbn1cblxuQG1peGluIGRlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge1xuICAkZGVuc2l0eS1zY2FsZTogdGhlbWluZy5nZXQtZGVuc2l0eS1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRleHBhbmRlZC1oZWlnaHQ6IGNvbXBhdGliaWxpdHkucHJpdmF0ZS1kZW5zaXR5LXByb3AtdmFsdWUoXG4gICAgICAgIGV4cGFuc2lvbi12YXJpYWJsZXMuJGhlYWRlci1kZW5zaXR5LWNvbmZpZywgJGRlbnNpdHktc2NhbGUsIGV4cGFuZGVkLWhlaWdodCk7XG4gICRjb2xsYXBzZWQtaGVpZ2h0OiBjb21wYXRpYmlsaXR5LnByaXZhdGUtZGVuc2l0eS1wcm9wLXZhbHVlKFxuICAgICAgZXhwYW5zaW9uLXZhcmlhYmxlcy4kaGVhZGVyLWRlbnNpdHktY29uZmlnLCAkZGVuc2l0eS1zY2FsZSwgY29sbGFwc2VkLWhlaWdodCk7XG5cbiAgQGluY2x1ZGUgY29tcGF0aWJpbGl0eS5wcml2YXRlLWRlbnNpdHktbGVnYWN5LWNvbXBhdGliaWxpdHkoKSB7XG4gICAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyIHtcbiAgICAgIGhlaWdodDogJGNvbGxhcHNlZC1oZWlnaHQ7XG5cbiAgICAgICYubWF0LWV4cGFuZGVkIHtcbiAgICAgICAgaGVpZ2h0OiAkZXhwYW5kZWQtaGVpZ2h0O1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZykge1xuICAkdGhlbWU6IHRoZW1pbmcucHJpdmF0ZS1sZWdhY3ktZ2V0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICBAaW5jbHVkZSB0aGVtaW5nLnByaXZhdGUtY2hlY2stZHVwbGljYXRlLXRoZW1lLXN0eWxlcygkdGhlbWUsICdtYXQtZXhwYW5zaW9uJykge1xuICAgICRjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgJGRlbnNpdHk6IHRoZW1pbmcuZ2V0LWRlbnNpdHktY29uZmlnKCR0aGVtZSk7XG4gICAgJHR5cG9ncmFwaHk6IHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCR0aGVtZSk7XG5cbiAgICBAaWYgJGNvbG9yICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgZGVuc2l0eSgkZGVuc2l0eSk7XG4gICAgfVxuICAgIEBpZiAkdHlwb2dyYXBoeSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIHR5cG9ncmFwaHkoJHR5cG9ncmFwaHkpO1xuICAgIH1cbiAgfVxufVxuIiwiQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnLi4vY29yZS90aGVtaW5nL3RoZW1pbmcnO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHknO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHktdXRpbHMnO1xuXG5AdXNlICcuL2Zvcm0tZmllbGQtZmlsbC10aGVtZS5zY3NzJztcbkB1c2UgJy4vZm9ybS1maWVsZC1sZWdhY3ktdGhlbWUuc2Nzcyc7XG5AdXNlICcuL2Zvcm0tZmllbGQtb3V0bGluZS10aGVtZS5zY3NzJztcbkB1c2UgJy4vZm9ybS1maWVsZC1zdGFuZGFyZC10aGVtZS5zY3NzJztcblxuLy8gQ29sb3Igc3R5bGVzIHRoYXQgYXBwbHkgdG8gYWxsIGFwcGVhcmFuY2VzIG9mIHRoZSBmb3JtLWZpZWxkLlxuQG1peGluIGNvbG9yKCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAkcHJpbWFyeTogbWFwLmdldCgkY29uZmlnLCBwcmltYXJ5KTtcbiAgJGFjY2VudDogbWFwLmdldCgkY29uZmlnLCBhY2NlbnQpO1xuICAkd2FybjogbWFwLmdldCgkY29uZmlnLCB3YXJuKTtcbiAgJGJhY2tncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgYmFja2dyb3VuZCk7XG4gICRmb3JlZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGZvcmVncm91bmQpO1xuICAkaXMtZGFyay10aGVtZTogbWFwLmdldCgkY29uZmlnLCBpcy1kYXJrKTtcblxuICAvLyBMYWJlbCBjb2xvcnMuIFJlcXVpcmVkIGlzIHVzZWQgZm9yIHRoZSBgKmAgc3RhciBzaG93biBpbiB0aGUgbGFiZWwuXG4gICRsYWJlbC1jb2xvcjpcbiAgICB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIHNlY29uZGFyeS10ZXh0LCBpZigkaXMtZGFyay10aGVtZSwgMC43LCAwLjYpKTtcbiAgJGZvY3VzZWQtbGFiZWwtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkcHJpbWFyeSwgdGV4dCk7XG4gICRyZXF1aXJlZC1sYWJlbC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRhY2NlbnQsIHRleHQpO1xuXG4gIC8vIFVuZGVybGluZSBjb2xvcnMuXG4gICR1bmRlcmxpbmUtY29sb3ItYmFzZTpcbiAgICB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIGRpdmlkZXIsIGlmKCRpcy1kYXJrLXRoZW1lLCAxLCAwLjg3KSk7XG4gICR1bmRlcmxpbmUtY29sb3ItYWNjZW50OiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGFjY2VudCwgdGV4dCk7XG4gICR1bmRlcmxpbmUtY29sb3Itd2FybjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCR3YXJuLCB0ZXh0KTtcbiAgJHVuZGVybGluZS1mb2N1c2VkLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHByaW1hcnksIHRleHQpO1xuXG4gIC5tYXQtZm9ybS1maWVsZC1sYWJlbCB7XG4gICAgY29sb3I6ICRsYWJlbC1jb2xvcjtcbiAgfVxuXG4gIC5tYXQtaGludCB7XG4gICAgY29sb3I6ICRsYWJlbC1jb2xvcjtcbiAgfVxuXG4gIC5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZCAubWF0LWZvcm0tZmllbGQtbGFiZWwge1xuICAgIGNvbG9yOiAkZm9jdXNlZC1sYWJlbC1jb2xvcjtcblxuICAgICYubWF0LWFjY2VudCB7XG4gICAgICBjb2xvcjogJHVuZGVybGluZS1jb2xvci1hY2NlbnQ7XG4gICAgfVxuXG4gICAgJi5tYXQtd2FybiB7XG4gICAgICBjb2xvcjogJHVuZGVybGluZS1jb2xvci13YXJuO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtZm9jdXNlZCAubWF0LWZvcm0tZmllbGQtcmVxdWlyZWQtbWFya2VyIHtcbiAgICBjb2xvcjogJHJlcXVpcmVkLWxhYmVsLWNvbG9yO1xuICB9XG5cbiAgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHVuZGVybGluZS1jb2xvci1iYXNlO1xuICB9XG5cbiAgLm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkIHtcbiAgICAubWF0LWZvcm0tZmllbGQtcmlwcGxlIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICR1bmRlcmxpbmUtZm9jdXNlZC1jb2xvcjtcblxuICAgICAgJi5tYXQtYWNjZW50IHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHVuZGVybGluZS1jb2xvci1hY2NlbnQ7XG4gICAgICB9XG5cbiAgICAgICYubWF0LXdhcm4ge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdW5kZXJsaW5lLWNvbG9yLXdhcm47XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QubWF0LWZvY3VzZWQ6bm90KC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkKSB7XG4gICAgLm1hdC1mb3JtLWZpZWxkLWluZml4OjphZnRlciB7XG4gICAgICBjb2xvcjogJHVuZGVybGluZS1mb2N1c2VkLWNvbG9yO1xuICAgIH1cblxuICAgICYubWF0LWFjY2VudCAubWF0LWZvcm0tZmllbGQtaW5maXg6OmFmdGVyIHtcbiAgICAgIGNvbG9yOiAkdW5kZXJsaW5lLWNvbG9yLWFjY2VudDtcbiAgICB9XG5cbiAgICAmLm1hdC13YXJuIC5tYXQtZm9ybS1maWVsZC1pbmZpeDo6YWZ0ZXIge1xuICAgICAgY29sb3I6ICR1bmRlcmxpbmUtY29sb3Itd2FybjtcbiAgICB9XG4gIH1cblxuICAvLyBTdHlsaW5nIGZvciB0aGUgZXJyb3Igc3RhdGUgb2YgdGhlIGZvcm0gZmllbGQuIE5vdGUgdGhhdCB3aGlsZSB0aGUgc2FtZSBjYW4gYmVcbiAgLy8gYWNoaWV2ZWQgd2l0aCB0aGUgbmctKiBjbGFzc2VzLCB3ZSB1c2UgdGhpcyBhcHByb2FjaCBpbiBvcmRlciB0byBlbnN1cmUgdGhhdCB0aGUgc2FtZVxuICAvLyBsb2dpYyBpcyB1c2VkIHRvIHN0eWxlIHRoZSBlcnJvciBzdGF0ZSBhbmQgdG8gc2hvdyB0aGUgZXJyb3IgbWVzc2FnZXMuXG4gIC5tYXQtZm9ybS1maWVsZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkIHtcbiAgICAubWF0LWZvcm0tZmllbGQtbGFiZWwge1xuICAgICAgY29sb3I6ICR1bmRlcmxpbmUtY29sb3Itd2FybjtcblxuICAgICAgJi5tYXQtYWNjZW50LFxuICAgICAgLm1hdC1mb3JtLWZpZWxkLXJlcXVpcmVkLW1hcmtlciB7XG4gICAgICAgIGNvbG9yOiAkdW5kZXJsaW5lLWNvbG9yLXdhcm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZSxcbiAgICAubWF0LWZvcm0tZmllbGQtcmlwcGxlLm1hdC1hY2NlbnQge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHVuZGVybGluZS1jb2xvci13YXJuO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtZXJyb3Ige1xuICAgIGNvbG9yOiAkdW5kZXJsaW5lLWNvbG9yLXdhcm47XG4gIH1cblxuICBAaW5jbHVkZSBmb3JtLWZpZWxkLWxlZ2FjeS10aGVtZS5sZWdhY3ktY29sb3IoJGNvbmZpZyk7XG4gIEBpbmNsdWRlIGZvcm0tZmllbGQtc3RhbmRhcmQtdGhlbWUuc3RhbmRhcmQtY29sb3IoJGNvbmZpZyk7XG4gIEBpbmNsdWRlIGZvcm0tZmllbGQtZmlsbC10aGVtZS5maWxsLWNvbG9yKCRjb25maWcpO1xuICBAaW5jbHVkZSBmb3JtLWZpZWxkLW91dGxpbmUtdGhlbWUub3V0bGluZS1jb2xvcigkY29uZmlnKTtcbn1cblxuLy8gVXNlZCB0byBtYWtlIGluc3RhbmNlcyBvZiB0aGUgX21hdC1mb3JtLWZpZWxkLWxhYmVsLWZsb2F0aW5nIG1peGluIG5lZ2xpZ2libHkgZGlmZmVyZW50LFxuLy8gYW5kIHByZXZlbnQgR29vZ2xlJ3MgQ1NTIE9wdGltaXplciBmcm9tIGNvbGxhcHNpbmcgdGhlIGRlY2xhcmF0aW9ucy4gVGhpcyBpcyBuZWVkZWQgYmVjYXVzZSBzb21lXG4vLyBvZiB0aGUgc2VsZWN0b3JzIGNvbnRhaW4gcHNldWRvLWNsYXNzZXMgbm90IHJlY29nbml6ZWQgaW4gYWxsIGJyb3dzZXJzLiBJZiBhIGJyb3dzZXIgZW5jb3VudGVyc1xuLy8gYW4gdW5rbm93biBwc2V1ZG8tY2xhc3MgaXQgd2lsbCBkaXNjYXJkIHRoZSBlbnRpcmUgcnVsZSBzZXQuXG4kZGVkdXBlOiAwO1xuXG4vLyBBcHBsaWVzIGEgZmxvYXRpbmcgbGFiZWwgYWJvdmUgdGhlIGZvcm0gZmllbGQgY29udHJvbCBpdHNlbGYuXG5AbWl4aW4gX2xhYmVsLWZsb2F0aW5nKCRmb250LXNjYWxlLCAkaW5maXgtcGFkZGluZywgJGluZml4LW1hcmdpbi10b3ApIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0kaW5maXgtbWFyZ2luLXRvcCAtICRpbmZpeC1wYWRkaW5nICsgJGRlZHVwZSlcbiAgICAgICAgICAgICBzY2FsZSgkZm9udC1zY2FsZSk7XG4gIHdpZHRoOiAxMDAlIC8gJGZvbnQtc2NhbGUgKyAkZGVkdXBlO1xuXG4gICRkZWR1cGU6ICRkZWR1cGUgKyAwLjAwMDAxICFnbG9iYWw7XG59XG5cbkBtaXhpbiB0eXBvZ3JhcGh5KCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdHlwb2dyYXBoeS5wcml2YXRlLXR5cG9ncmFwaHktdG8tMjAxNC1jb25maWcoXG4gICAgICB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKSk7XG4gIC8vIFRoZSB1bml0LWxlc3MgbGluZS1oZWlnaHQgZnJvbSB0aGUgZm9udCBjb25maWcuXG4gICRsaW5lLWhlaWdodDogdHlwb2dyYXBoeS11dGlscy5saW5lLWhlaWdodCgkY29uZmlnLCBpbnB1dCk7XG5cbiAgLy8gVGhlIGFtb3VudCB0byBzY2FsZSB0aGUgZm9udCBmb3IgdGhlIGZsb2F0aW5nIGxhYmVsIGFuZCBzdWJzY3JpcHQuXG4gICRzdWJzY3JpcHQtZm9udC1zY2FsZTogMC43NTtcbiAgLy8gVGhlIGFtb3VudCB0byBzY2FsZSB0aGUgZm9udCBmb3IgdGhlIHByZWZpeCBhbmQgc3VmZml4IGljb25zLlxuICAkcHJlZml4LXN1ZmZpeC1pY29uLWZvbnQtc2NhbGU6IDEuNTtcblxuICAvLyBUaGUgcGFkZGluZyBvbiB0aGUgaW5maXguIE1vY2tzIHNob3cgaGFsZiBvZiB0aGUgdGV4dCBzaXplLlxuICAkaW5maXgtcGFkZGluZzogMC41ZW07XG4gIC8vIFRoZSBtYXJnaW4gYXBwbGllZCB0byB0aGUgZm9ybS1maWVsZC1pbmZpeCB0byByZXNlcnZlIHNwYWNlIGZvciB0aGUgZmxvYXRpbmcgbGFiZWwuXG4gICRpbmZpeC1tYXJnaW4tdG9wOiAxZW0gKiAkbGluZS1oZWlnaHQgKiAkc3Vic2NyaXB0LWZvbnQtc2NhbGU7XG4gIC8vIEZvbnQgc2l6ZSB0byB1c2UgZm9yIHRoZSBsYWJlbCBhbmQgc3Vic2NyaXB0IHRleHQuXG4gICRzdWJzY3JpcHQtZm9udC1zaXplOiAkc3Vic2NyaXB0LWZvbnQtc2NhbGUgKiAxMDAlO1xuICAvLyBGb250IHNpemUgdG8gdXNlIGZvciB0aGUgZm9yIHRoZSBwcmVmaXggYW5kIHN1ZmZpeCBpY29ucy5cbiAgJHByZWZpeC1zdWZmaXgtaWNvbi1mb250LXNpemU6ICRwcmVmaXgtc3VmZml4LWljb24tZm9udC1zY2FsZSAqIDEwMCU7XG4gIC8vIFRoZSBzcGFjZSBiZXR3ZWVuIHRoZSBib3R0b20gb2YgdGhlIC5tYXQtZm9ybS1maWVsZC1mbGV4IGFyZWEgYW5kIHRoZSBzdWJzY3JpcHQgd3JhcHBlci5cbiAgLy8gTW9ja3Mgc2hvdyBoYWxmIG9mIHRoZSB0ZXh0IHNpemUsIGJ1dCB0aGlzIG1hcmdpbiBpcyBhcHBsaWVkIHRvIGFuIGVsZW1lbnQgd2l0aCB0aGUgc3Vic2NyaXB0XG4gIC8vIHRleHQgZm9udCBzaXplLCBzbyB3ZSBuZWVkIHRvIGRpdmlkZSBieSB0aGUgc2NhbGUgZmFjdG9yIHRvIG1ha2UgaXQgaGFsZiBvZiB0aGUgb3JpZ2luYWwgdGV4dFxuICAvLyBzaXplLlxuICAkc3Vic2NyaXB0LW1hcmdpbi10b3A6IDAuNWVtIC8gJHN1YnNjcmlwdC1mb250LXNjYWxlO1xuICAvLyBUaGUgcGFkZGluZyBhcHBsaWVkIHRvIHRoZSBmb3JtLWZpZWxkLXdyYXBwZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgdGhlIHN1YnNjcmlwdCwgc2luY2UgaXQnc1xuICAvLyBhYnNvbHV0ZWx5IHBvc2l0aW9uZWQuIFRoaXMgaXMgYSBjb21iaW5hdGlvbiBvZiB0aGUgc3Vic2NyaXB0J3MgbWFyZ2luIGFuZCBsaW5lLWhlaWdodCwgYnV0IHdlXG4gIC8vIG5lZWQgdG8gbXVsdGlwbHkgYnkgdGhlIHN1YnNjcmlwdCBmb250IHNjYWxlIGZhY3RvciBzaW5jZSB0aGUgd3JhcHBlciBoYXMgYSBsYXJnZXIgZm9udCBzaXplLlxuICAkd3JhcHBlci1wYWRkaW5nLWJvdHRvbTogKCRzdWJzY3JpcHQtbWFyZ2luLXRvcCArICRsaW5lLWhlaWdodCkgKiAkc3Vic2NyaXB0LWZvbnQtc2NhbGU7XG5cbiAgLm1hdC1mb3JtLWZpZWxkIHtcbiAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5LXV0aWxzLnR5cG9ncmFwaHktbGV2ZWwoJGNvbmZpZywgaW5wdXQpO1xuICB9XG5cbiAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXIge1xuICAgIHBhZGRpbmctYm90dG9tOiAkd3JhcHBlci1wYWRkaW5nLWJvdHRvbTtcbiAgfVxuXG4gIC5tYXQtZm9ybS1maWVsZC1wcmVmaXgsXG4gIC5tYXQtZm9ybS1maWVsZC1zdWZmaXgge1xuICAgIC8vIEFsbG93IGljb25zIGluIGEgcHJlZml4IG9yIHN1ZmZpeCB0byBhZGFwdCB0byB0aGUgY29ycmVjdCBzaXplLlxuICAgIC5tYXQtaWNvbiB7XG4gICAgICBmb250LXNpemU6ICRwcmVmaXgtc3VmZml4LWljb24tZm9udC1zaXplO1xuICAgICAgbGluZS1oZWlnaHQ6ICRsaW5lLWhlaWdodDtcbiAgICB9XG5cbiAgICAvLyBBbGxvdyBpY29uIGJ1dHRvbnMgaW4gYSBwcmVmaXggb3Igc3VmZml4IHRvIGFkYXB0IHRvIHRoZSBjb3JyZWN0IHNpemUuXG4gICAgLm1hdC1pY29uLWJ1dHRvbiB7XG4gICAgICBoZWlnaHQ6ICRwcmVmaXgtc3VmZml4LWljb24tZm9udC1zY2FsZSAqIDFlbTtcbiAgICAgIHdpZHRoOiAkcHJlZml4LXN1ZmZpeC1pY29uLWZvbnQtc2NhbGUgKiAxZW07XG5cbiAgICAgIC5tYXQtaWNvbiB7XG4gICAgICAgIGhlaWdodDogJGxpbmUtaGVpZ2h0ICogMWVtO1xuICAgICAgICBsaW5lLWhlaWdodDogJGxpbmUtaGVpZ2h0O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5tYXQtZm9ybS1maWVsZC1pbmZpeCB7XG4gICAgcGFkZGluZzogJGluZml4LXBhZGRpbmcgMDtcbiAgICAvLyBUaHJvd3Mgb2ZmIHRoZSBiYXNlbGluZSBpZiB3ZSBkbyBpdCBhcyBhIHJlYWwgbWFyZ2luLCBzbyB3ZSBkbyBpdCBhcyBhIGJvcmRlciBpbnN0ZWFkLlxuICAgIGJvcmRlci10b3A6ICRpbmZpeC1tYXJnaW4tdG9wIHNvbGlkIHRyYW5zcGFyZW50O1xuICB9XG5cbiAgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdCB7XG4gICAgJi5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXQgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLFxuICAgIC5tYXQtaW5wdXQtc2VydmVyOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVsIHtcbiAgICAgIEBpbmNsdWRlIF9sYWJlbC1mbG9hdGluZyhcbiAgICAgICAgICAgICAgJHN1YnNjcmlwdC1mb250LXNjYWxlLCAkaW5maXgtcGFkZGluZywgJGluZml4LW1hcmdpbi10b3ApO1xuICAgIH1cblxuICAgIC8vIFNlcnZlci1zaWRlIHJlbmRlcmVkIG1hdElucHV0IHdpdGggYSBsYWJlbCBhdHRyaWJ1dGUgYnV0IGxhYmVsIG5vdCBzaG93blxuICAgIC8vICh1c2VkIGFzIGEgcHVyZSBDU1Mgc3RhbmQtaW4gZm9yIG1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdCkuXG4gICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJcbiAgICAgICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsIHtcbiAgICAgIEBpbmNsdWRlIF9sYWJlbC1mbG9hdGluZyhcbiAgICAgICAgICAgICAgJHN1YnNjcmlwdC1mb250LXNjYWxlLCAkaW5maXgtcGFkZGluZywgJGluZml4LW1hcmdpbi10b3ApO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIHtcbiAgICB0b3A6IC0kaW5maXgtbWFyZ2luLXRvcDtcbiAgICBwYWRkaW5nLXRvcDogJGluZml4LW1hcmdpbi10b3A7XG4gIH1cblxuICAubWF0LWZvcm0tZmllbGQtbGFiZWwge1xuICAgIHRvcDogJGluZml4LW1hcmdpbi10b3AgKyAkaW5maXgtcGFkZGluZztcbiAgfVxuXG4gIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmUge1xuICAgIC8vIFdlIHdhbnQgdGhlIHVuZGVybGluZSB0byBzdGFydCBhdCB0aGUgZW5kIG9mIHRoZSBjb250ZW50IGJveCwgbm90IHRoZSBwYWRkaW5nIGJveCxcbiAgICAvLyBzbyB3ZSBtb3ZlIGl0IHVwIGJ5IHRoZSBwYWRkaW5nIGFtb3VudC5cbiAgICBib3R0b206ICR3cmFwcGVyLXBhZGRpbmctYm90dG9tO1xuICB9XG5cbiAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyIHtcbiAgICBmb250LXNpemU6ICRzdWJzY3JpcHQtZm9udC1zaXplO1xuICAgIG1hcmdpbi10b3A6ICRzdWJzY3JpcHQtbWFyZ2luLXRvcDtcblxuICAgIC8vIFdlIHdhbnQgdGhlIHN1YnNjcmlwdCB0byBzdGFydCBhdCB0aGUgZW5kIG9mIHRoZSBjb250ZW50IGJveCwgbm90IHRoZSBwYWRkaW5nIGJveCxcbiAgICAvLyBzbyB3ZSBtb3ZlIGl0IHVwIGJ5IHRoZSBwYWRkaW5nIGFtb3VudCAoYWRqdXN0ZWQgZm9yIHRoZSBzbWFsbGVyIGZvbnQgc2l6ZSk7XG4gICAgdG9wOiBjYWxjKDEwMCUgLSAjeyR3cmFwcGVyLXBhZGRpbmctYm90dG9tIC8gJHN1YnNjcmlwdC1mb250LXNjYWxlfSk7XG4gIH1cblxuICBAaW5jbHVkZSBmb3JtLWZpZWxkLWxlZ2FjeS10aGVtZS5sZWdhY3ktdHlwb2dyYXBoeSgkY29uZmlnKTtcbiAgQGluY2x1ZGUgZm9ybS1maWVsZC1zdGFuZGFyZC10aGVtZS5zdGFuZGFyZC10eXBvZ3JhcGh5KCRjb25maWcpO1xuICBAaW5jbHVkZSBmb3JtLWZpZWxkLWZpbGwtdGhlbWUuZmlsbC10eXBvZ3JhcGh5KCRjb25maWcpO1xuICBAaW5jbHVkZSBmb3JtLWZpZWxkLW91dGxpbmUtdGhlbWUub3V0bGluZS10eXBvZ3JhcGh5KCRjb25maWcpO1xufVxuXG5AbWl4aW4gZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRkZW5zaXR5LXNjYWxlOiB0aGVtaW5nLmdldC1kZW5zaXR5LWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgQGluY2x1ZGUgZm9ybS1maWVsZC1sZWdhY3ktdGhlbWUucHJpdmF0ZS1mb3JtLWZpZWxkLWxlZ2FjeS1kZW5zaXR5KCRkZW5zaXR5LXNjYWxlKTtcbiAgQGluY2x1ZGUgZm9ybS1maWVsZC1zdGFuZGFyZC10aGVtZS5wcml2YXRlLWZvcm0tZmllbGQtc3RhbmRhcmQtZGVuc2l0eSgkZGVuc2l0eS1zY2FsZSk7XG4gIEBpbmNsdWRlIGZvcm0tZmllbGQtZmlsbC10aGVtZS5wcml2YXRlLWZvcm0tZmllbGQtZmlsbC1kZW5zaXR5KCRkZW5zaXR5LXNjYWxlKTtcbiAgQGluY2x1ZGUgZm9ybS1maWVsZC1vdXRsaW5lLXRoZW1lLnByaXZhdGUtZm9ybS1maWVsZC1vdXRsaW5lLWRlbnNpdHkoJGRlbnNpdHktc2NhbGUpO1xufVxuXG5AbWl4aW4gdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZykge1xuICAkdGhlbWU6IHRoZW1pbmcucHJpdmF0ZS1sZWdhY3ktZ2V0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICBAaW5jbHVkZSB0aGVtaW5nLnByaXZhdGUtY2hlY2stZHVwbGljYXRlLXRoZW1lLXN0eWxlcygkdGhlbWUsICdtYXQtZm9ybS1maWVsZCcpIHtcbiAgICAkY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkdGhlbWUpO1xuICAgICRkZW5zaXR5OiB0aGVtaW5nLmdldC1kZW5zaXR5LWNvbmZpZygkdGhlbWUpO1xuICAgICR0eXBvZ3JhcGh5OiB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkdGhlbWUpO1xuXG4gICAgQGlmICRjb2xvciAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIGNvbG9yKCRjb2xvcik7XG4gICAgfVxuICAgIEBpZiAkZGVuc2l0eSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIGRlbnNpdHkoJGRlbnNpdHkpO1xuICAgIH1cbiAgICBAaWYgJHR5cG9ncmFwaHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5KCR0eXBvZ3JhcGh5KTtcbiAgICB9XG4gIH1cbn1cbiIsIkB1c2UgJ3Nhc3M6bWFwJztcbkB1c2UgJy4uL2NvcmUvdGhlbWluZy90aGVtaW5nJztcbkB1c2UgJy4uL2NvcmUvc3R5bGUvZm9ybS1jb21tb24nO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHknO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHktdXRpbHMnO1xuXG5cbi8vIFRoZW1lIHN0eWxlcyB0aGF0IG9ubHkgYXBwbHkgdG8gdGhlIGxlZ2FjeSBhcHBlYXJhbmNlIG9mIHRoZSBmb3JtLWZpZWxkLlxuXG5AbWl4aW4gbGVnYWN5LWNvbG9yKCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAkZm9yZWdyb3VuZDogbWFwLmdldCgkY29uZmlnLCBmb3JlZ3JvdW5kKTtcbiAgJGlzLWRhcmstdGhlbWU6IG1hcC5nZXQoJGNvbmZpZywgaXMtZGFyayk7XG5cbiAgJGxhYmVsLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIHNlY29uZGFyeS10ZXh0KTtcbiAgJHVuZGVybGluZS1jb2xvcjpcbiAgICB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIGRpdmlkZXIsIGlmKCRpcy1kYXJrLXRoZW1lLCAwLjcsIDAuNDIpKTtcblxuICAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kge1xuICAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbCB7XG4gICAgICBjb2xvcjogJGxhYmVsLWNvbG9yO1xuICAgIH1cblxuICAgIC5tYXQtaGludCB7XG4gICAgICBjb2xvcjogJGxhYmVsLWNvbG9yO1xuICAgIH1cblxuICAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmUge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHVuZGVybGluZS1jb2xvcjtcbiAgICB9XG5cbiAgICAmLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmUge1xuICAgICAgQGluY2x1ZGUgZm9ybS1jb21tb24ucHJpdmF0ZS1jb250cm9sLWRpc2FibGVkLXVuZGVybGluZSgkdW5kZXJsaW5lLWNvbG9yKTtcbiAgICB9XG4gIH1cbn1cblxuLy8gVXNlZCB0byBtYWtlIGluc3RhbmNlcyBvZiB0aGUgX21hdC1mb3JtLWZpZWxkLWxhYmVsLWZsb2F0aW5nIG1peGluIG5lZ2xpZ2libHkgZGlmZmVyZW50LFxuLy8gYW5kIHByZXZlbnQgR29vZ2xlJ3MgQ1NTIE9wdGltaXplciBmcm9tIGNvbGxhcHNpbmcgdGhlIGRlY2xhcmF0aW9ucy4gVGhpcyBpcyBuZWVkZWQgYmVjYXVzZSBzb21lXG4vLyBvZiB0aGUgc2VsZWN0b3JzIGNvbnRhaW4gcHNldWRvLWNsYXNzZXMgbm90IHJlY29nbml6ZWQgaW4gYWxsIGJyb3dzZXJzLiBJZiBhIGJyb3dzZXIgZW5jb3VudGVyc1xuLy8gYW4gdW5rbm93biBwc2V1ZG8tY2xhc3MgaXQgd2lsbCBkaXNjYXJkIHRoZSBlbnRpcmUgcnVsZSBzZXQuXG4kbGVnYWN5LWRlZHVwZTogMDtcblxuLy8gQXBwbGllcyBhIGZsb2F0aW5nIGxhYmVsIGFib3ZlIHRoZSBmb3JtIGZpZWxkIGNvbnRyb2wgaXRzZWxmLlxuQG1peGluIF9sYWJlbC1mbG9hdGluZygkZm9udC1zY2FsZSwgJGluZml4LXBhZGRpbmcsICRpbmZpeC1tYXJnaW4tdG9wKSB7XG4gIC8vIFdlIHVzZSBwZXJzcGVjdGl2ZSB0byBmaXggdGhlIHRleHQgYmx1cnJpbmVzcyBhcyBkZXNjcmliZWQgaGVyZTpcbiAgLy8gaHR0cDovL3d3dy51c2VyYWdlbnRtYW4uY29tL2Jsb2cvMjAxNC8wNS8wNC9maXhpbmctdHlwb2dyYXBoeS1pbnNpZGUtb2YtMi1kLWNzcy10cmFuc2Zvcm1zL1xuICAvLyBUaGlzIHJlc3VsdHMgaW4gYSBzbWFsbCBqaXR0ZXIgYWZ0ZXIgdGhlIGxhYmVsIGZsb2F0cyBvbiBGaXJlZm94LCB3aGljaCB0aGVcbiAgLy8gdHJhbnNsYXRlWiBmaXhlcy5cbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0kaW5maXgtbWFyZ2luLXRvcCAtICRpbmZpeC1wYWRkaW5nKSBzY2FsZSgkZm9udC1zY2FsZSkgcGVyc3BlY3RpdmUoMTAwcHgpXG4gIHRyYW5zbGF0ZVooMC4wMDFweCArICRsZWdhY3ktZGVkdXBlKTtcbiAgLy8gVGhlIHRyaWNrcyBhYm92ZSB1c2VkIHRvIHNtb290aCBvdXQgdGhlIGFuaW1hdGlvbiBvbiBjaHJvbWUgYW5kIGZpcmVmb3ggYWN0dWFsbHkgbWFrZSB0aGluZ3NcbiAgLy8gd29yc2Ugb24gSUUsIHNvIHdlIGRvbid0IGluY2x1ZGUgdGhlbSBpbiB0aGUgSUUgdmVyc2lvbi5cbiAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtJGluZml4LW1hcmdpbi10b3AgLSAkaW5maXgtcGFkZGluZyArICRsZWdhY3ktZGVkdXBlKVxuICAgICAgICAgICAgICAgICAgc2NhbGUoJGZvbnQtc2NhbGUpO1xuXG4gIHdpZHRoOiAxMDAlIC8gJGZvbnQtc2NhbGUgKyAkbGVnYWN5LWRlZHVwZTtcblxuICAkbGVnYWN5LWRlZHVwZTogJGxlZ2FjeS1kZWR1cGUgKyAwLjAwMDAxICFnbG9iYWw7XG59XG5cbi8vIFNhbWUgYXMgbWl4aW4gYWJvdmUsIGJ1dCBvbWl0cyB0aGUgdHJhbnNsYXRlWiBmb3IgcHJpbnRpbmcgcHVycG9zZXMuXG5AbWl4aW4gX2xhYmVsLWZsb2F0aW5nLXByaW50KCRmb250LXNjYWxlLCAkaW5maXgtcGFkZGluZywgJGluZml4LW1hcmdpbi10b3ApIHtcbiAgLy8gVGhpcyByZXN1bHRzIGluIGEgc21hbGwgaml0dGVyIGFmdGVyIHRoZSBsYWJlbCBmbG9hdHMgb24gRmlyZWZveCwgd2hpY2ggdGhlXG4gIC8vIHRyYW5zbGF0ZVogZml4ZXMuXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtJGluZml4LW1hcmdpbi10b3AgLSAkaW5maXgtcGFkZGluZyArICRsZWdhY3ktZGVkdXBlKVxuICAgICAgICAgICAgICAgICAgc2NhbGUoJGZvbnQtc2NhbGUpO1xuICAvLyBUaGUgdHJpY2tzIGFib3ZlIHVzZWQgdG8gc21vb3RoIG91dCB0aGUgYW5pbWF0aW9uIG9uIGNocm9tZSBhbmQgZmlyZWZveCBhY3R1YWxseSBtYWtlIHRoaW5nc1xuICAvLyB3b3JzZSBvbiBJRSwgc28gd2UgZG9uJ3QgaW5jbHVkZSB0aGVtIGluIHRoZSBJRSB2ZXJzaW9uLlxuICAkbGVnYWN5LWRlZHVwZTogJGxlZ2FjeS1kZWR1cGUgKyAwLjAwMDAxICFnbG9iYWw7XG59XG5cbkBtaXhpbiBsZWdhY3ktdHlwb2dyYXBoeSgkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHR5cG9ncmFwaHkucHJpdmF0ZS10eXBvZ3JhcGh5LXRvLTIwMTQtY29uZmlnKFxuICAgICAgdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJGNvbmZpZy1vci10aGVtZSkpO1xuICAvLyBUaGUgdW5pdC1sZXNzIGxpbmUtaGVpZ2h0IGZyb20gdGhlIGZvbnQgY29uZmlnLlxuICAkbGluZS1oZWlnaHQ6IHR5cG9ncmFwaHktdXRpbHMubGluZS1oZWlnaHQoJGNvbmZpZywgaW5wdXQpO1xuICAvLyBUaGUgYW1vdW50IHRvIHNjYWxlIHRoZSBmb250IGZvciB0aGUgZmxvYXRpbmcgbGFiZWwgYW5kIHN1YnNjcmlwdC5cbiAgJHN1YnNjcmlwdC1mb250LXNjYWxlOiAwLjc1O1xuICAvLyBUaGUgYW1vdW50IG9mIHNwYWNlIGJldHdlZW4gdGhlIHRvcCBvZiB0aGUgbGluZSBhbmQgdGhlIHRvcCBvZiB0aGUgYWN0dWFsIHRleHRcbiAgLy8gKGFzIGEgZnJhY3Rpb24gb2YgdGhlIGZvbnQtc2l6ZSkuXG4gICRsaW5lLXNwYWNpbmc6ICgkbGluZS1oZWlnaHQgLSAxKSAvIDI7XG4gIC8vIFRoZSBwYWRkaW5nIG9uIHRoZSBpbmZpeC4gTW9ja3Mgc2hvdyBoYWxmIG9mIHRoZSB0ZXh0IHNpemUsIGJ1dCBzZWVtIHRvIG1lYXN1cmUgZnJvbSB0aGUgZWRnZVxuICAvLyBvZiB0aGUgdGV4dCBpdHNlbGYsIG5vdCB0aGUgZWRnZSBvZiB0aGUgbGluZTsgdGhlcmVmb3JlIHdlIHN1YnRyYWN0IG9mZiB0aGUgbGluZSBzcGFjaW5nLlxuICAkaW5maXgtcGFkZGluZzogMC41ZW0gLSAkbGluZS1zcGFjaW5nO1xuICAvLyBUaGUgbWFyZ2luIGFwcGxpZWQgdG8gdGhlIGZvcm0tZmllbGQtaW5maXggdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgdGhlIGZsb2F0aW5nIGxhYmVsLlxuICAkaW5maXgtbWFyZ2luLXRvcDogMWVtICogJGxpbmUtaGVpZ2h0ICogJHN1YnNjcmlwdC1mb250LXNjYWxlO1xuICAvLyBUaGUgc3BhY2UgYmV0d2VlbiB0aGUgYm90dG9tIG9mIHRoZSAubWF0LWZvcm0tZmllbGQtZmxleCBhcmVhIGFuZCB0aGUgc3Vic2NyaXB0IHdyYXBwZXIuXG4gIC8vIE1vY2tzIHNob3cgaGFsZiBvZiB0aGUgdGV4dCBzaXplLCBidXQgdGhpcyBtYXJnaW4gaXMgYXBwbGllZCB0byBhbiBlbGVtZW50IHdpdGggdGhlIHN1YnNjcmlwdFxuICAvLyB0ZXh0IGZvbnQgc2l6ZSwgc28gd2UgbmVlZCB0byBkaXZpZGUgYnkgdGhlIHNjYWxlIGZhY3RvciB0byBtYWtlIGl0IGhhbGYgb2YgdGhlIG9yaWdpbmFsIHRleHRcbiAgLy8gc2l6ZS4gV2UgYWdhaW4gbmVlZCB0byBzdWJ0cmFjdCBvZmYgdGhlIGxpbmUgc3BhY2luZyBzaW5jZSB0aGUgbW9ja3MgbWVhc3VyZSB0byB0aGUgZWRnZSBvZiB0aGVcbiAgLy8gdGV4dCwgbm90IHRoZSAgZWRnZSBvZiB0aGUgbGluZS5cbiAgJHN1YnNjcmlwdC1tYXJnaW4tdG9wOiAwLjVlbSAvICRzdWJzY3JpcHQtZm9udC1zY2FsZSAtICgkbGluZS1zcGFjaW5nICogMik7XG4gIC8vIFRoZSBwYWRkaW5nIGFwcGxpZWQgdG8gdGhlIGZvcm0tZmllbGQtd3JhcHBlciB0byByZXNlcnZlIHNwYWNlIGZvciB0aGUgc3Vic2NyaXB0LCBzaW5jZSBpdCdzXG4gIC8vIGFic29sdXRlbHkgcG9zaXRpb25lZC4gVGhpcyBpcyBhIGNvbWJpbmF0aW9uIG9mIHRoZSBzdWJzY3JpcHQncyBtYXJnaW4gYW5kIGxpbmUtaGVpZ2h0LCBidXQgd2VcbiAgLy8gbmVlZCB0byBtdWx0aXBseSBieSB0aGUgc3Vic2NyaXB0IGZvbnQgc2NhbGUgZmFjdG9yIHNpbmNlIHRoZSB3cmFwcGVyIGhhcyBhIGxhcmdlciBmb250IHNpemUuXG4gICR3cmFwcGVyLXBhZGRpbmctYm90dG9tOiAoJHN1YnNjcmlwdC1tYXJnaW4tdG9wICsgJGxpbmUtaGVpZ2h0KSAqICRzdWJzY3JpcHQtZm9udC1zY2FsZTtcblxuICAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kge1xuICAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyIHtcbiAgICAgIHBhZGRpbmctYm90dG9tOiAkd3JhcHBlci1wYWRkaW5nLWJvdHRvbTtcbiAgICB9XG5cbiAgICAubWF0LWZvcm0tZmllbGQtaW5maXgge1xuICAgICAgcGFkZGluZzogJGluZml4LXBhZGRpbmcgMDtcbiAgICB9XG5cbiAgICAmLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdCB7XG4gICAgICAmLm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdCAubWF0LWZvcm0tZmllbGQtbGFiZWwsXG4gICAgICAubWF0LWlucHV0LXNlcnZlcjpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtZm9ybS1maWVsZC1sYWJlbCB7XG4gICAgICAgIEBpbmNsdWRlIF9sYWJlbC1mbG9hdGluZyhcbiAgICAgICAgICAgICAgICAkc3Vic2NyaXB0LWZvbnQtc2NhbGUsICRpbmZpeC1wYWRkaW5nLCAkaW5maXgtbWFyZ2luLXRvcCk7XG4gICAgICB9XG5cbiAgICAgIC8vIEBicmVha2luZy1jaGFuZ2UgOC4wLjAgd2lsbCByZWx5IG9uIEF1dG9maWxsTW9uaXRvciBpbnN0ZWFkLlxuICAgICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2w6LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyXG4gICAgICAubWF0LWZvcm0tZmllbGQtbGFiZWwge1xuICAgICAgICBAaW5jbHVkZSBfbGFiZWwtZmxvYXRpbmcoXG4gICAgICAgICAgICAgICAgJHN1YnNjcmlwdC1mb250LXNjYWxlLCAkaW5maXgtcGFkZGluZywgJGluZml4LW1hcmdpbi10b3ApO1xuICAgICAgfVxuXG4gICAgICAvLyBTZXJ2ZXItc2lkZSByZW5kZXJlZCBtYXRJbnB1dCB3aXRoIGEgbGFiZWwgYXR0cmlidXRlIGJ1dCBsYWJlbCBub3Qgc2hvd25cbiAgICAgIC8vICh1c2VkIGFzIGEgcHVyZSBDU1Mgc3RhbmQtaW4gZm9yIG1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdCkuXG4gICAgICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlclxuICAgICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsIHtcbiAgICAgICAgQGluY2x1ZGUgX2xhYmVsLWZsb2F0aW5nKFxuICAgICAgICAgICAgICAgICRzdWJzY3JpcHQtZm9udC1zY2FsZSwgJGluZml4LXBhZGRpbmcsICRpbmZpeC1tYXJnaW4tdG9wKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAubWF0LWZvcm0tZmllbGQtbGFiZWwge1xuICAgICAgdG9wOiAkaW5maXgtbWFyZ2luLXRvcCArICRpbmZpeC1wYWRkaW5nO1xuICAgIH1cblxuICAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmUge1xuICAgICAgLy8gV2Ugd2FudCB0aGUgdW5kZXJsaW5lIHRvIHN0YXJ0IGF0IHRoZSBlbmQgb2YgdGhlIGNvbnRlbnQgYm94LCBub3QgdGhlIHBhZGRpbmcgYm94LFxuICAgICAgLy8gc28gd2UgbW92ZSBpdCB1cCBieSB0aGUgcGFkZGluZyBhbW91bnQuXG4gICAgICBib3R0b206ICR3cmFwcGVyLXBhZGRpbmctYm90dG9tO1xuICAgIH1cblxuICAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlciB7XG4gICAgICBtYXJnaW4tdG9wOiAkc3Vic2NyaXB0LW1hcmdpbi10b3A7XG5cbiAgICAgIC8vIFdlIHdhbnQgdGhlIHN1YnNjcmlwdCB0byBzdGFydCBhdCB0aGUgZW5kIG9mIHRoZSBjb250ZW50IGJveCwgbm90IHRoZSBwYWRkaW5nIGJveCxcbiAgICAgIC8vIHNvIHdlIG1vdmUgaXQgdXAgYnkgdGhlIHBhZGRpbmcgYW1vdW50IChhZGp1c3RlZCBmb3IgdGhlIHNtYWxsZXIgZm9udCBzaXplKTtcbiAgICAgIHRvcDogY2FsYygxMDAlIC0gI3skd3JhcHBlci1wYWRkaW5nLWJvdHRvbSAvICRzdWJzY3JpcHQtZm9udC1zY2FsZX0pO1xuICAgIH1cbiAgfVxuXG4gIC8vIHRyYW5zbGF0ZVogY2F1c2VzIHRoZSBsYWJlbCB0byBub3QgYXBwZWFyIHdoaWxlIHByaW50aW5nLCBzbyB3ZSBvdmVycmlkZSBpdCB0byBub3RcbiAgLy8gYXBwbHkgdHJhbnNsYXRlWiB3aGlsZSBwcmludGluZ1xuICBAbWVkaWEgcHJpbnQge1xuICAgIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSB7XG4gICAgICAmLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdCB7XG4gICAgICAgICYubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0IC5tYXQtZm9ybS1maWVsZC1sYWJlbCxcbiAgICAgICAgLm1hdC1pbnB1dC1zZXJ2ZXI6Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWwge1xuICAgICAgICAgIEBpbmNsdWRlIF9sYWJlbC1mbG9hdGluZy1wcmludChcbiAgICAgICAgICAgICAgICAgICRzdWJzY3JpcHQtZm9udC1zY2FsZSwgJGluZml4LXBhZGRpbmcsICRpbmZpeC1tYXJnaW4tdG9wKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEBicmVha2luZy1jaGFuZ2UgOC4wLjAgd2lsbCByZWx5IG9uIEF1dG9maWxsTW9uaXRvciBpbnN0ZWFkLlxuICAgICAgICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbDotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJcbiAgICAgICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsIHtcbiAgICAgICAgICBAaW5jbHVkZSBfbGFiZWwtZmxvYXRpbmctcHJpbnQoXG4gICAgICAgICAgICAgICAgICAkc3Vic2NyaXB0LWZvbnQtc2NhbGUsICRpbmZpeC1wYWRkaW5nLCAkaW5maXgtbWFyZ2luLXRvcCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTZXJ2ZXItc2lkZSByZW5kZXJlZCBtYXRJbnB1dCB3aXRoIGEgbGFiZWwgYXR0cmlidXRlIGJ1dCBsYWJlbCBub3Qgc2hvd25cbiAgICAgICAgLy8gKHVzZWQgYXMgYSBwdXJlIENTUyBzdGFuZC1pbiBmb3IgbWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0KS5cbiAgICAgICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJcbiAgICAgICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsIHtcbiAgICAgICAgICBAaW5jbHVkZSBfbGFiZWwtZmxvYXRpbmctcHJpbnQoXG4gICAgICAgICAgICAgICAgICAkc3Vic2NyaXB0LWZvbnQtc2NhbGUsICRpbmZpeC1wYWRkaW5nLCAkaW5maXgtbWFyZ2luLXRvcCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHByaXZhdGUtZm9ybS1maWVsZC1sZWdhY3ktZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gbGVnYWN5LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiB0aGVtaW5nLnByaXZhdGUtbGVnYWN5LWdldC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgQGluY2x1ZGUgdGhlbWluZy5wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LWZvcm0tZmllbGQtbGVnYWN5Jykge1xuICAgICRjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgJGRlbnNpdHk6IHRoZW1pbmcuZ2V0LWRlbnNpdHktY29uZmlnKCR0aGVtZSk7XG4gICAgJHR5cG9ncmFwaHk6IHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCR0aGVtZSk7XG5cbiAgICBAaWYgJGNvbG9yICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgbGVnYWN5LWNvbG9yKCRjb2xvcik7XG4gICAgfVxuICAgIEBpZiAkZGVuc2l0eSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIHByaXZhdGUtZm9ybS1maWVsZC1sZWdhY3ktZGVuc2l0eSgkZGVuc2l0eSk7XG4gICAgfVxuICAgIEBpZiAkdHlwb2dyYXBoeSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIGxlZ2FjeS10eXBvZ3JhcGh5KCR0eXBvZ3JhcGh5KTtcbiAgICB9XG4gIH1cbn1cbiIsIkB1c2UgJ3Nhc3M6bWFwJztcbkB1c2UgJy4uL2NvcmUvdGhlbWluZy90aGVtaW5nJztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5JztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5LXV0aWxzJztcblxuXG4vLyBUaGVtZSBzdHlsZXMgdGhhdCBvbmx5IGFwcGx5IHRvIHRoZSBmaWxsIGFwcGVhcmFuY2Ugb2YgdGhlIGZvcm0tZmllbGQuXG5cbkBtaXhpbiBmaWxsLWNvbG9yKCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAkZm9yZWdyb3VuZDogbWFwLmdldCgkY29uZmlnLCBmb3JlZ3JvdW5kKTtcbiAgJGlzLWRhcmstdGhlbWU6IG1hcC5nZXQoJGNvbmZpZywgaXMtZGFyayk7XG5cbiAgJGZpbGwtYmFja2dyb3VuZDpcbiAgICB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIGJhc2UsIGlmKCRpcy1kYXJrLXRoZW1lLCAwLjEsIDAuMDQpKTtcbiAgJGZpbGwtZGlzYWJsZWQtYmFja2dyb3VuZDpcbiAgICB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIGJhc2UsIGlmKCRpcy1kYXJrLXRoZW1lLCAwLjA1LCAwLjAyKSk7XG4gICR1bmRlcmxpbmUtY29sb3I6XG4gICAgdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBkaXZpZGVyLCBpZigkaXMtZGFyay10aGVtZSwgMC41LCAwLjQyKSk7XG4gICRsYWJlbC1kaXNhYmxlZC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBkaXNhYmxlZC10ZXh0KTtcblxuICAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsIHtcbiAgICAubWF0LWZvcm0tZmllbGQtZmxleCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZmlsbC1iYWNrZ3JvdW5kO1xuICAgIH1cblxuICAgICYubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQgLm1hdC1mb3JtLWZpZWxkLWZsZXgge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGZpbGwtZGlzYWJsZWQtYmFja2dyb3VuZDtcbiAgICB9XG5cbiAgICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lOjpiZWZvcmUge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHVuZGVybGluZS1jb2xvcjtcbiAgICB9XG5cbiAgICAmLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkIHtcbiAgICAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbCB7XG4gICAgICAgIGNvbG9yOiAkbGFiZWwtZGlzYWJsZWQtY29sb3I7XG4gICAgICB9XG5cbiAgICAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmU6OmJlZm9yZSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLyBVc2VkIHRvIG1ha2UgaW5zdGFuY2VzIG9mIHRoZSBfbWF0LWZvcm0tZmllbGQtbGFiZWwtZmxvYXRpbmcgbWl4aW4gbmVnbGlnaWJseSBkaWZmZXJlbnQsXG4vLyBhbmQgcHJldmVudCBHb29nbGUncyBDU1MgT3B0aW1pemVyIGZyb20gY29sbGFwc2luZyB0aGUgZGVjbGFyYXRpb25zLiBUaGlzIGlzIG5lZWRlZCBiZWNhdXNlIHNvbWVcbi8vIG9mIHRoZSBzZWxlY3RvcnMgY29udGFpbiBwc2V1ZG8tY2xhc3NlcyBub3QgcmVjb2duaXplZCBpbiBhbGwgYnJvd3NlcnMuIElmIGEgYnJvd3NlciBlbmNvdW50ZXJzXG4vLyBhbiB1bmtub3duIHBzZXVkby1jbGFzcyBpdCB3aWxsIGRpc2NhcmQgdGhlIGVudGlyZSBydWxlIHNldC5cbiRmaWxsLWRlZHVwZTogMDtcblxuLy8gQXBwbGllcyBhIGZsb2F0aW5nIGxhYmVsIGFib3ZlIHRoZSBmb3JtIGZpZWxkIGNvbnRyb2wgaXRzZWxmLlxuQG1peGluIF9sYWJlbC1mbG9hdGluZygkZm9udC1zY2FsZSwgJGluZml4LXBhZGRpbmcsICRpbmZpeC1tYXJnaW4tdG9wKSB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtJGluZml4LW1hcmdpbi10b3AgLSAkaW5maXgtcGFkZGluZyArICRmaWxsLWRlZHVwZSlcbiAgICAgICAgICAgICBzY2FsZSgkZm9udC1zY2FsZSk7XG4gIHdpZHRoOiAxMDAlIC8gJGZvbnQtc2NhbGUgKyAkZmlsbC1kZWR1cGU7XG5cbiAgJGZpbGwtZGVkdXBlOiAkZmlsbC1kZWR1cGUgKyAwLjAwMDAxICFnbG9iYWw7XG59XG5cbkBtaXhpbiBmaWxsLXR5cG9ncmFwaHkoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0eXBvZ3JhcGh5LnByaXZhdGUtdHlwb2dyYXBoeS10by0yMDE0LWNvbmZpZyhcbiAgICAgIHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCRjb25maWctb3ItdGhlbWUpKTtcbiAgLy8gVGhlIHVuaXQtbGVzcyBsaW5lLWhlaWdodCBmcm9tIHRoZSBmb250IGNvbmZpZy5cbiAgJGxpbmUtaGVpZ2h0OiB0eXBvZ3JhcGh5LXV0aWxzLmxpbmUtaGVpZ2h0KCRjb25maWcsIGlucHV0KTtcbiAgLy8gVGhlIGFtb3VudCB0byBzY2FsZSB0aGUgZm9udCBmb3IgdGhlIGZsb2F0aW5nIGxhYmVsIGFuZCBzdWJzY3JpcHQuXG4gICRzdWJzY3JpcHQtZm9udC1zY2FsZTogMC43NTtcbiAgLy8gVGhlIHBhZGRpbmcgb24gdG9wIG9mIHRoZSBpbmZpeC5cbiAgJGluZml4LXBhZGRpbmctdG9wOiAwLjI1ZW07XG4gIC8vIFRoZSBwYWRkaW5nIGJlbG93IHRoZSBpbmZpeC5cbiAgJGluZml4LXBhZGRpbmctYm90dG9tOiAwLjc1ZW07XG4gIC8vIFRoZSBtYXJnaW4gYXBwbGllZCB0byB0aGUgZm9ybS1maWVsZC1pbmZpeCB0byByZXNlcnZlIHNwYWNlIGZvciB0aGUgZmxvYXRpbmcgbGFiZWwuXG4gICRpbmZpeC1tYXJnaW4tdG9wOiAxZW0gKiAkbGluZS1oZWlnaHQgKiAkc3Vic2NyaXB0LWZvbnQtc2NhbGU7XG4gIC8vIFRoZSBhbW91bnQgd2Ugb2Zmc2V0IHRoZSBsYWJlbCBmcm9tIHRoZSBpbnB1dCB0ZXh0IGluIHRoZSBmaWxsIGFwcGVhcmFuY2UuXG4gICRmaWxsLWFwcGVhcmFuY2UtbGFiZWwtb2Zmc2V0OiAtMC41ZW07XG5cbiAgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbCB7XG4gICAgLm1hdC1mb3JtLWZpZWxkLWluZml4IHtcbiAgICAgIHBhZGRpbmc6ICRpbmZpeC1wYWRkaW5nLXRvcCAwICRpbmZpeC1wYWRkaW5nLWJvdHRvbSAwO1xuICAgIH1cblxuICAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbCB7XG4gICAgICB0b3A6ICRpbmZpeC1tYXJnaW4tdG9wICsgJGluZml4LXBhZGRpbmctdG9wO1xuICAgICAgbWFyZ2luLXRvcDogJGZpbGwtYXBwZWFyYW5jZS1sYWJlbC1vZmZzZXQ7XG4gICAgfVxuXG4gICAgJi5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQge1xuICAgICAgJi5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXQgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLFxuICAgICAgLm1hdC1pbnB1dC1zZXJ2ZXI6Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWwge1xuICAgICAgICBAaW5jbHVkZSBfbGFiZWwtZmxvYXRpbmcoXG4gICAgICAgICAgICAgICAgJHN1YnNjcmlwdC1mb250LXNjYWxlLCAkaW5maXgtcGFkZGluZy10b3AgKyAkZmlsbC1hcHBlYXJhbmNlLWxhYmVsLW9mZnNldCxcbiAgICAgICAgICAgICAgICAkaW5maXgtbWFyZ2luLXRvcCk7XG4gICAgICB9XG5cbiAgICAgIC8vIFNlcnZlci1zaWRlIHJlbmRlcmVkIG1hdElucHV0IHdpdGggYSBsYWJlbCBhdHRyaWJ1dGUgYnV0IGxhYmVsIG5vdCBzaG93blxuICAgICAgLy8gKHVzZWQgYXMgYSBwdXJlIENTUyBzdGFuZC1pbiBmb3IgbWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0KS5cbiAgICAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyXG4gICAgICAubWF0LWZvcm0tZmllbGQtbGFiZWwge1xuICAgICAgICBAaW5jbHVkZSBfbGFiZWwtZmxvYXRpbmcoXG4gICAgICAgICAgICAgICAgJHN1YnNjcmlwdC1mb250LXNjYWxlLCAkaW5maXgtcGFkZGluZy10b3AgKyAkZmlsbC1hcHBlYXJhbmNlLWxhYmVsLW9mZnNldCxcbiAgICAgICAgICAgICAgICAkaW5maXgtbWFyZ2luLXRvcCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBwcml2YXRlLWZvcm0tZmllbGQtZmlsbC1kZW5zaXR5KCRjb25maWctb3ItdGhlbWUpIHt9XG5cbkBtaXhpbiBmaWxsLXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiB0aGVtaW5nLnByaXZhdGUtbGVnYWN5LWdldC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgQGluY2x1ZGUgdGhlbWluZy5wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LWZvcm0tZmllbGQtZmlsbCcpIHtcbiAgICAkY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkdGhlbWUpO1xuICAgICRkZW5zaXR5OiB0aGVtaW5nLmdldC1kZW5zaXR5LWNvbmZpZygkdGhlbWUpO1xuICAgICR0eXBvZ3JhcGh5OiB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkdGhlbWUpO1xuXG4gICAgQGlmICRjb2xvciAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIGZpbGwtY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgcHJpdmF0ZS1mb3JtLWZpZWxkLWZpbGwtZGVuc2l0eSgkZGVuc2l0eSk7XG4gICAgfVxuICAgIEBpZiAkdHlwb2dyYXBoeSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIGZpbGwtdHlwb2dyYXBoeSgkdHlwb2dyYXBoeSk7XG4gICAgfVxuICB9XG59XG4iLCJAdXNlICdzYXNzOm1hcCc7XG5AdXNlICcuLi9jb3JlL3RoZW1pbmcvdGhlbWluZyc7XG5AdXNlICcuLi9jb3JlL3R5cG9ncmFwaHkvdHlwb2dyYXBoeSc7XG5AdXNlICcuLi9jb3JlL3R5cG9ncmFwaHkvdHlwb2dyYXBoeS11dGlscyc7XG5cblxuLy8gVGhlbWUgc3R5bGVzIHRoYXQgb25seSBhcHBseSB0byB0aGUgb3V0bGluZSBhcHBlYXJhbmNlIG9mIHRoZSBmb3JtLWZpZWxkLlxuXG5AbWl4aW4gb3V0bGluZS1jb2xvcigkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJHByaW1hcnk6IG1hcC5nZXQoJGNvbmZpZywgcHJpbWFyeSk7XG4gICRhY2NlbnQ6IG1hcC5nZXQoJGNvbmZpZywgYWNjZW50KTtcbiAgJHdhcm46IG1hcC5nZXQoJGNvbmZpZywgd2Fybik7XG4gICRmb3JlZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGZvcmVncm91bmQpO1xuICAkaXMtZGFyay10aGVtZTogbWFwLmdldCgkY29uZmlnLCBpcy1kYXJrKTtcblxuICAkbGFiZWwtZGlzYWJsZWQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgZGlzYWJsZWQtdGV4dCk7XG4gICRvdXRsaW5lLWNvbG9yOlxuICAgIHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgZGl2aWRlciwgaWYoJGlzLWRhcmstdGhlbWUsIDAuMywgMC4xMikpO1xuICAkb3V0bGluZS1jb2xvci1ob3ZlcjpcbiAgICB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIGRpdmlkZXIsIGlmKCRpcy1kYXJrLXRoZW1lLCAxLCAwLjg3KSk7XG4gICRvdXRsaW5lLWNvbG9yLXByaW1hcnk6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkcHJpbWFyeSk7XG4gICRvdXRsaW5lLWNvbG9yLWFjY2VudDogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRhY2NlbnQpO1xuICAkb3V0bGluZS1jb2xvci13YXJuOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHdhcm4pO1xuICAkb3V0bGluZS1jb2xvci1kaXNhYmxlZDpcbiAgICB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIGRpdmlkZXIsIGlmKCRpcy1kYXJrLXRoZW1lLCAwLjE1LCAwLjA2KSk7XG5cbiAgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZSB7XG4gICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUge1xuICAgICAgY29sb3I6ICRvdXRsaW5lLWNvbG9yO1xuICAgIH1cblxuICAgIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNrIHtcbiAgICAgIGNvbG9yOiAkb3V0bGluZS1jb2xvci1ob3ZlcjtcbiAgICB9XG5cbiAgICAmLm1hdC1mb2N1c2VkIHtcbiAgICAgIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNrIHtcbiAgICAgICAgY29sb3I6ICRvdXRsaW5lLWNvbG9yLXByaW1hcnk7XG4gICAgICB9XG5cbiAgICAgICYubWF0LWFjY2VudCAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGljayB7XG4gICAgICAgIGNvbG9yOiAkb3V0bGluZS1jb2xvci1hY2NlbnQ7XG4gICAgICB9XG5cbiAgICAgICYubWF0LXdhcm4gLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2sge1xuICAgICAgICBjb2xvcjogJG91dGxpbmUtY29sb3Itd2FybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBDbGFzcyByZXBlYXRlZCBzbyB0aGF0IHJ1bGUgaXMgc3BlY2lmaWMgZW5vdWdoIHRvIG92ZXJyaWRlIGZvY3VzZWQgYWNjZW50IGNvbG9yIGNhc2UuXG4gICAgJi5tYXQtZm9ybS1maWVsZC1pbnZhbGlkLm1hdC1mb3JtLWZpZWxkLWludmFsaWQge1xuICAgICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2sge1xuICAgICAgICBjb2xvcjogJG91dGxpbmUtY29sb3Itd2FybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkIHtcbiAgICAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbCB7XG4gICAgICAgIGNvbG9yOiAkbGFiZWwtZGlzYWJsZWQtY29sb3I7XG4gICAgICB9XG5cbiAgICAgIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lIHtcbiAgICAgICAgY29sb3I6ICRvdXRsaW5lLWNvbG9yLWRpc2FibGVkO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLyBVc2VkIHRvIG1ha2UgaW5zdGFuY2VzIG9mIHRoZSBfbWF0LWZvcm0tZmllbGQtbGFiZWwtZmxvYXRpbmcgbWl4aW4gbmVnbGlnaWJseSBkaWZmZXJlbnQsXG4vLyBhbmQgcHJldmVudCBHb29nbGUncyBDU1MgT3B0aW1pemVyIGZyb20gY29sbGFwc2luZyB0aGUgZGVjbGFyYXRpb25zLiBUaGlzIGlzIG5lZWRlZCBiZWNhdXNlIHNvbWVcbi8vIG9mIHRoZSBzZWxlY3RvcnMgY29udGFpbiBwc2V1ZG8tY2xhc3NlcyBub3QgcmVjb2duaXplZCBpbiBhbGwgYnJvd3NlcnMuIElmIGEgYnJvd3NlciBlbmNvdW50ZXJzXG4vLyBhbiB1bmtub3duIHBzZXVkby1jbGFzcyBpdCB3aWxsIGRpc2NhcmQgdGhlIGVudGlyZSBydWxlIHNldC5cbiRvdXRsaW5lLWRlZHVwZTogMDtcblxuLy8gQXBwbGllcyBhIGZsb2F0aW5nIGxhYmVsIGFib3ZlIHRoZSBmb3JtIGZpZWxkIGNvbnRyb2wgaXRzZWxmLlxuQG1peGluIF9sYWJlbC1mbG9hdGluZygkZm9udC1zY2FsZSwgJGluZml4LXBhZGRpbmcsICRpbmZpeC1tYXJnaW4tdG9wKSB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtJGluZml4LW1hcmdpbi10b3AgLSAkaW5maXgtcGFkZGluZyArICRvdXRsaW5lLWRlZHVwZSlcbiAgc2NhbGUoJGZvbnQtc2NhbGUpO1xuICB3aWR0aDogMTAwJSAvICRmb250LXNjYWxlICsgJG91dGxpbmUtZGVkdXBlO1xuXG4gICRvdXRsaW5lLWRlZHVwZTogJG91dGxpbmUtZGVkdXBlICsgMC4wMDAwMSAhZ2xvYmFsO1xufVxuXG5AbWl4aW4gb3V0bGluZS10eXBvZ3JhcGh5KCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdHlwb2dyYXBoeS5wcml2YXRlLXR5cG9ncmFwaHktdG8tMjAxNC1jb25maWcoXG4gICAgICB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKSk7XG4gIC8vIFRoZSB1bml0LWxlc3MgbGluZS1oZWlnaHQgZnJvbSB0aGUgZm9udCBjb25maWcuXG4gICRsaW5lLWhlaWdodDogdHlwb2dyYXBoeS11dGlscy5saW5lLWhlaWdodCgkY29uZmlnLCBpbnB1dCk7XG4gIC8vIFRoZSBhbW91bnQgdG8gc2NhbGUgdGhlIGZvbnQgZm9yIHRoZSBmbG9hdGluZyBsYWJlbCBhbmQgc3Vic2NyaXB0LlxuICAkc3Vic2NyaXB0LWZvbnQtc2NhbGU6IDAuNzU7XG4gIC8vIFRoZSBwYWRkaW5nIGFib3ZlIGFuZCBiZWxvdyB0aGUgaW5maXguXG4gICRpbmZpeC1wYWRkaW5nOiAxZW07XG4gIC8vIFRoZSBtYXJnaW4gYXBwbGllZCB0byB0aGUgZm9ybS1maWVsZC1pbmZpeCB0byByZXNlcnZlIHNwYWNlIGZvciB0aGUgZmxvYXRpbmcgbGFiZWwuXG4gICRpbmZpeC1tYXJnaW4tdG9wOiAxZW0gKiAkbGluZS1oZWlnaHQgKiAkc3Vic2NyaXB0LWZvbnQtc2NhbGU7XG4gIC8vIFRoZSBzcGFjZSBiZXR3ZWVuIHRoZSBib3R0b20gb2YgdGhlIC5tYXQtZm9ybS1maWVsZC1mbGV4IGFyZWEgYW5kIHRoZSBzdWJzY3JpcHQgd3JhcHBlci5cbiAgLy8gTW9ja3Mgc2hvdyBoYWxmIG9mIHRoZSB0ZXh0IHNpemUsIGJ1dCB0aGlzIG1hcmdpbiBpcyBhcHBsaWVkIHRvIGFuIGVsZW1lbnQgd2l0aCB0aGUgc3Vic2NyaXB0XG4gIC8vIHRleHQgZm9udCBzaXplLCBzbyB3ZSBuZWVkIHRvIGRpdmlkZSBieSB0aGUgc2NhbGUgZmFjdG9yIHRvIG1ha2UgaXQgaGFsZiBvZiB0aGUgb3JpZ2luYWwgdGV4dFxuICAvLyBzaXplLlxuICAkc3Vic2NyaXB0LW1hcmdpbi10b3A6IDAuNWVtIC8gJHN1YnNjcmlwdC1mb250LXNjYWxlO1xuICAvLyBUaGUgcGFkZGluZyBhcHBsaWVkIHRvIHRoZSBmb3JtLWZpZWxkLXdyYXBwZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgdGhlIHN1YnNjcmlwdCwgc2luY2UgaXQnc1xuICAvLyBhYnNvbHV0ZWx5IHBvc2l0aW9uZWQuIFRoaXMgaXMgYSBjb21iaW5hdGlvbiBvZiB0aGUgc3Vic2NyaXB0J3MgbWFyZ2luIGFuZCBsaW5lLWhlaWdodCwgYnV0IHdlXG4gIC8vIG5lZWQgdG8gbXVsdGlwbHkgYnkgdGhlIHN1YnNjcmlwdCBmb250IHNjYWxlIGZhY3RvciBzaW5jZSB0aGUgd3JhcHBlciBoYXMgYSBsYXJnZXIgZm9udCBzaXplLlxuICAkd3JhcHBlci1wYWRkaW5nLWJvdHRvbTogKCRzdWJzY3JpcHQtbWFyZ2luLXRvcCArICRsaW5lLWhlaWdodCkgKiAkc3Vic2NyaXB0LWZvbnQtc2NhbGU7XG4gIC8vIFRoZSBhbW91bnQgd2Ugb2Zmc2V0IHRoZSBsYWJlbCBmcm9tIHRoZSBpbnB1dCB0ZXh0IGluIHRoZSBvdXRsaW5lIGFwcGVhcmFuY2UuXG4gICRvdXRsaW5lLWFwcGVhcmFuY2UtbGFiZWwtb2Zmc2V0OiAtMC4yNWVtO1xuXG4gIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUge1xuICAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeCB7XG4gICAgICBwYWRkaW5nOiAkaW5maXgtcGFkZGluZyAwICRpbmZpeC1wYWRkaW5nIDA7XG4gICAgfVxuXG4gICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsIHtcbiAgICAgIHRvcDogJGluZml4LW1hcmdpbi10b3AgKyAkaW5maXgtcGFkZGluZztcbiAgICAgIG1hcmdpbi10b3A6ICRvdXRsaW5lLWFwcGVhcmFuY2UtbGFiZWwtb2Zmc2V0O1xuICAgIH1cblxuICAgICYubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IHtcbiAgICAgICYubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0IC5tYXQtZm9ybS1maWVsZC1sYWJlbCxcbiAgICAgIC5tYXQtaW5wdXQtc2VydmVyOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVsIHtcbiAgICAgICAgQGluY2x1ZGUgX2xhYmVsLWZsb2F0aW5nKFxuICAgICAgICAgICAgICAgICRzdWJzY3JpcHQtZm9udC1zY2FsZSwgJGluZml4LXBhZGRpbmcgKyAkb3V0bGluZS1hcHBlYXJhbmNlLWxhYmVsLW9mZnNldCxcbiAgICAgICAgICAgICAgICAkaW5maXgtbWFyZ2luLXRvcCk7XG4gICAgICB9XG5cbiAgICAgIC8vIFNlcnZlci1zaWRlIHJlbmRlcmVkIG1hdElucHV0IHdpdGggYSBsYWJlbCBhdHRyaWJ1dGUgYnV0IGxhYmVsIG5vdCBzaG93blxuICAgICAgLy8gKHVzZWQgYXMgYSBwdXJlIENTUyBzdGFuZC1pbiBmb3IgbWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0KS5cbiAgICAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyXG4gICAgICAubWF0LWZvcm0tZmllbGQtbGFiZWwge1xuICAgICAgICBAaW5jbHVkZSBfbGFiZWwtZmxvYXRpbmcoXG4gICAgICAgICAgICAgICAgJHN1YnNjcmlwdC1mb250LXNjYWxlLCAkaW5maXgtcGFkZGluZyArICRvdXRsaW5lLWFwcGVhcmFuY2UtbGFiZWwtb2Zmc2V0LFxuICAgICAgICAgICAgICAgICRpbmZpeC1tYXJnaW4tdG9wKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHByaXZhdGUtZm9ybS1maWVsZC1vdXRsaW5lLWRlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIG91dGxpbmUtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZykge1xuICAkdGhlbWU6IHRoZW1pbmcucHJpdmF0ZS1sZWdhY3ktZ2V0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICBAaW5jbHVkZSB0aGVtaW5nLnByaXZhdGUtY2hlY2stZHVwbGljYXRlLXRoZW1lLXN0eWxlcygkdGhlbWUsICdtYXQtZm9ybS1maWVsZC1vdXRsaW5lJykge1xuICAgICRjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgJGRlbnNpdHk6IHRoZW1pbmcuZ2V0LWRlbnNpdHktY29uZmlnKCR0aGVtZSk7XG4gICAgJHR5cG9ncmFwaHk6IHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCR0aGVtZSk7XG5cbiAgICBAaWYgJGNvbG9yICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgb3V0bGluZS1jb2xvcigkY29sb3IpO1xuICAgIH1cbiAgICBAaWYgJGRlbnNpdHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBwcml2YXRlLWZvcm0tZmllbGQtb3V0bGluZS1kZW5zaXR5KCRkZW5zaXR5KTtcbiAgICB9XG4gICAgQGlmICR0eXBvZ3JhcGh5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgb3V0bGluZS10eXBvZ3JhcGh5KCR0eXBvZ3JhcGh5KTtcbiAgICB9XG4gIH1cbn1cblxuIiwiQHVzZSAnLi4vY29yZS90aGVtaW5nL3RoZW1pbmcnO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHknO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHktdXRpbHMnO1xuQHVzZSAnLi4vY29yZS9zdHlsZS9saXN0LWNvbW1vbic7XG5cblxuLy8gSW5jbHVkZSB0aGlzIGVtcHR5IG1peGluIGZvciBjb25zaXN0ZW5jeSB3aXRoIHRoZSBvdGhlciBjb21wb25lbnRzLlxuQG1peGluIGNvbG9yKCRjb25maWctb3ItdGhlbWUpIHt9XG5cbkBtaXhpbiB0eXBvZ3JhcGh5KCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdHlwb2dyYXBoeS5wcml2YXRlLXR5cG9ncmFwaHktdG8tMjAxNC1jb25maWcoXG4gICAgICB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKSk7XG4gIC5tYXQtZ3JpZC10aWxlLWhlYWRlcixcbiAgLm1hdC1ncmlkLXRpbGUtZm9vdGVyIHtcbiAgICBAaW5jbHVkZSBsaXN0LWNvbW1vbi5iYXNlKHR5cG9ncmFwaHktdXRpbHMuZm9udC1zaXplKCRjb25maWcsIGNhcHRpb24pKTtcbiAgICBmb250LXNpemU6IHR5cG9ncmFwaHktdXRpbHMuZm9udC1zaXplKCRjb25maWcsIGJvZHktMSk7XG4gIH1cbn1cblxuQG1peGluIF9kZW5zaXR5KCRjb25maWctb3ItdGhlbWUpIHt9XG5cbkBtaXhpbiB0aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKSB7XG4gICR0aGVtZTogdGhlbWluZy5wcml2YXRlLWxlZ2FjeS1nZXQtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZyk7XG4gIEBpbmNsdWRlIHRoZW1pbmcucHJpdmF0ZS1jaGVjay1kdXBsaWNhdGUtdGhlbWUtc3R5bGVzKCR0aGVtZSwgJ21hdC1ncmlkLWxpc3QnKSB7XG4gICAgJGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJHRoZW1lKTtcbiAgICAkZGVuc2l0eTogdGhlbWluZy5nZXQtZGVuc2l0eS1jb25maWcoJHRoZW1lKTtcbiAgICAkdHlwb2dyYXBoeTogdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJHRoZW1lKTtcblxuICAgIEBpZiAkY29sb3IgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBjb2xvcigkY29sb3IpO1xuICAgIH1cbiAgICBAaWYgJGRlbnNpdHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBfZGVuc2l0eSgkZGVuc2l0eSk7XG4gICAgfVxuICAgIEBpZiAkdHlwb2dyYXBoeSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIHR5cG9ncmFwaHkoJHR5cG9ncmFwaHkpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gVGhpcyBtaXhpbiB3aWxsIGVuc3VyZSB0aGF0IGxpbmVzIHRoYXQgb3ZlcmZsb3cgdGhlIGNvbnRhaW5lciB3aWxsIGhpZGUgdGhlIG92ZXJmbG93IGFuZFxuLy8gdHJ1bmNhdGUgbmVhdGx5IHdpdGggYW4gZWxsaXBzaXMuXG5AbWl4aW4gdHJ1bmNhdGUtbGluZSgpIHtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG59XG5cbi8vIE1peGluIHRvIHByb3ZpZGUgYWxsIG1hdC1saW5lIHN0eWxlcywgY2hhbmdpbmcgc2Vjb25kYXJ5IGZvbnQgc2l6ZSBiYXNlZCBvbiB3aGV0aGVyIHRoZSBsaXN0XG4vLyBpcyBpbiBkZW5zZSBtb2RlLlxuQG1peGluIGJhc2UoJHNlY29uZGFyeS1mb250LXNpemUpIHtcbiAgLm1hdC1saW5lIHtcbiAgICBAaW5jbHVkZSB0cnVuY2F0ZS1saW5lKCk7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcblxuICAgIC8vIGFsbCBsaW5lcyBidXQgdGhlIHRvcCBsaW5lIHNob3VsZCBoYXZlIHNtYWxsZXIgdGV4dFxuICAgICY6bnRoLWNoaWxkKG4rMikge1xuICAgICAgZm9udC1zaXplOiAkc2Vjb25kYXJ5LWZvbnQtc2l6ZTtcbiAgICB9XG4gIH1cbn1cblxuLy8gVGhpcyBtaXhpbiBub3JtYWxpemVzIGRlZmF1bHQgZWxlbWVudCBzdHlsZXMsIGUuZy4gZm9udCB3ZWlnaHQgZm9yIGhlYWRpbmcgdGV4dC5cbkBtaXhpbiBub3JtYWxpemUtdGV4dCgpIHtcbiAgJiA+ICoge1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgZm9udC1zaXplOiBpbmhlcml0O1xuICB9XG59XG5cbi8vIFRoaXMgbWl4aW4gcHJvdmlkZXMgYmFzZSBzdHlsZXMgZm9yIHRoZSB3cmFwcGVyIGFyb3VuZCBtYXQtbGluZSBlbGVtZW50cyBpbiBhIGxpc3QuXG5AbWl4aW4gd3JhcHBlci1iYXNlKCkge1xuICBAaW5jbHVkZSBub3JtYWxpemUtdGV4dCgpO1xuXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGZsZXg6IGF1dG87XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgLy8gTXVzdCByZW1vdmUgd3JhcHBlciB3aGVuIGxpbmVzIGFyZSBlbXB0eSBvciBpdCB0YWtlcyB1cCBob3Jpem9udGFsXG4gIC8vIHNwYWNlIGFuZCBwdXNoZXMgb3RoZXIgZWxlbWVudHMgdG8gdGhlIHJpZ2h0LlxuICAmOmVtcHR5IHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG4iLCJAdXNlICdzYXNzOm1hcCc7XG5AdXNlICcuLi9jb3JlL3RoZW1pbmcvcGFsZXR0ZSc7XG5AdXNlICcuLi9jb3JlL3RoZW1pbmcvdGhlbWluZyc7XG5AdXNlICcuLi9jb3JlL3N0eWxlL2Zvcm0tY29tbW9uJztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5JztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5LXV0aWxzJztcbkB1c2UgJy4uL2NvcmUvc3R5bGUvdmVuZG9yLXByZWZpeGVzJztcblxuXG5AbWl4aW4gY29sb3IoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRwcmltYXJ5OiBtYXAuZ2V0KCRjb25maWcsIHByaW1hcnkpO1xuICAkYWNjZW50OiBtYXAuZ2V0KCRjb25maWcsIGFjY2VudCk7XG4gICR3YXJuOiBtYXAuZ2V0KCRjb25maWcsIHdhcm4pO1xuICAkZm9yZWdyb3VuZDogbWFwLmdldCgkY29uZmlnLCBmb3JlZ3JvdW5kKTtcblxuICAubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdCAubWF0LWZvcm0tZmllbGQtaW5maXg6OmFmdGVyIHtcbiAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBzZWNvbmRhcnktdGV4dCk7XG4gIH1cblxuICAubWF0LWlucHV0LWVsZW1lbnQ6ZGlzYWJsZWQsXG4gIC5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkIC5tYXQtZm9ybS1maWVsZC1pbmZpeDo6YWZ0ZXIge1xuICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIGRpc2FibGVkLXRleHQpO1xuICB9XG5cbiAgLm1hdC1pbnB1dC1lbGVtZW50IHtcbiAgICBjYXJldC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRwcmltYXJ5LCB0ZXh0KTtcblxuICAgIEBpbmNsdWRlIHZlbmRvci1wcmVmaXhlcy5pbnB1dC1wbGFjZWhvbGRlciB7XG4gICAgICBjb2xvcjogZm9ybS1jb21tb24ucHJpdmF0ZS1jb250cm9sLXBsYWNlaG9sZGVyLWNvbG9yKCRjb25maWcpO1xuICAgIH1cblxuICAgIC8vIE9uIGRhcmsgdGhlbWVzIHdlIHNldCB0aGUgbmF0aXZlIGBzZWxlY3RgIGNvbG9yIHRvIHNvbWUgc2hhZGUgb2Ygd2hpdGUsXG4gICAgLy8gaG93ZXZlciB0aGUgY29sb3IgcHJvcGFnYXRlcyB0byBhbGwgb2YgdGhlIGBvcHRpb25gIGVsZW1lbnRzLCB3aGljaCBhcmVcbiAgICAvLyBhbHdheXMgb24gYSB3aGl0ZSBiYWNrZ3JvdW5kIGluc2lkZSB0aGUgZHJvcGRvd24sIGNhdXNpbmcgdGhlbSB0byBibGVuZCBpbi5cbiAgICAvLyBTaW5jZSB3ZSBjYW4ndCBjaGFuZ2UgYmFja2dyb3VuZCBvZiB0aGUgZHJvcGRvd24sIHdlIG5lZWQgdG8gZXhwbGljaXRseVxuICAgIC8vIHJlc2V0IHRoZSBjb2xvciBvZiB0aGUgb3B0aW9ucyB0byBzb21ldGhpbmcgZGFyay5cbiAgICBAaWYgKG1hcC5nZXQoJGNvbmZpZywgaXMtZGFyaykpIHtcbiAgICAgIG9wdGlvbiB7XG4gICAgICAgIGNvbG9yOiBwYWxldHRlLiRkYXJrLXByaW1hcnktdGV4dDtcbiAgICAgIH1cblxuICAgICAgb3B0aW9uOmRpc2FibGVkIHtcbiAgICAgICAgY29sb3I6IHBhbGV0dGUuJGRhcmstZGlzYWJsZWQtdGV4dDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAubWF0LWZvcm0tZmllbGQubWF0LWFjY2VudCAubWF0LWlucHV0LWVsZW1lbnQge1xuICAgIGNhcmV0LWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGFjY2VudCwgdGV4dCk7XG4gIH1cblxuICAubWF0LWZvcm0tZmllbGQubWF0LXdhcm4gLm1hdC1pbnB1dC1lbGVtZW50LFxuICAubWF0LWZvcm0tZmllbGQtaW52YWxpZCAubWF0LWlucHV0LWVsZW1lbnQge1xuICAgIGNhcmV0LWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHdhcm4sIHRleHQpO1xuICB9XG5cbiAgLm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QubWF0LWZvcm0tZmllbGQtaW52YWxpZCAubWF0LWZvcm0tZmllbGQtaW5maXg6OmFmdGVyIHtcbiAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCR3YXJuLCB0ZXh0KTtcbiAgfVxufVxuXG5AbWl4aW4gdHlwb2dyYXBoeSgkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHR5cG9ncmFwaHkucHJpdmF0ZS10eXBvZ3JhcGh5LXRvLTIwMTQtY29uZmlnKFxuICAgICAgdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJGNvbmZpZy1vci10aGVtZSkpO1xuICAvLyBUaGUgdW5pdC1sZXNzIGxpbmUtaGVpZ2h0IGZyb20gdGhlIGZvbnQgY29uZmlnLlxuICAkbGluZS1oZWlnaHQ6IHR5cG9ncmFwaHktdXRpbHMubGluZS1oZWlnaHQoJGNvbmZpZywgaW5wdXQpO1xuXG4gIC8vIFRoZSBhbW91bnQgb2Ygc3BhY2UgYmV0d2VlbiB0aGUgdG9wIG9mIHRoZSBsaW5lIGFuZCB0aGUgdG9wIG9mIHRoZSBhY3R1YWwgdGV4dFxuICAvLyAoYXMgYSBmcmFjdGlvbiBvZiB0aGUgZm9udC1zaXplKS5cbiAgJGxpbmUtc3BhY2luZzogKCRsaW5lLWhlaWdodCAtIDEpIC8gMjtcblxuICAvLyA8aW5wdXQ+IGVsZW1lbnRzIHNlZW0gdG8gaGF2ZSB0aGVpciBoZWlnaHQgc2V0IHNsaWdodGx5IHRvbyBsYXJnZSBvbiBTYWZhcmkgY2F1c2luZyB0aGUgdGV4dCB0b1xuICAvLyBiZSBtaXNhbGlnbmVkIHcuci50LiB0aGUgcGxhY2Vob2xkZXIuIEFkZGluZyB0aGlzIG1hcmdpbiBjb3JyZWN0cyBpdC5cbiAgaW5wdXQubWF0LWlucHV0LWVsZW1lbnQge1xuICAgIG1hcmdpbi10b3A6IC0kbGluZS1zcGFjaW5nICogMWVtO1xuICB9XG59XG5cbkBtaXhpbiBfZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZykge1xuICAkdGhlbWU6IHRoZW1pbmcucHJpdmF0ZS1sZWdhY3ktZ2V0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICBAaW5jbHVkZSB0aGVtaW5nLnByaXZhdGUtY2hlY2stZHVwbGljYXRlLXRoZW1lLXN0eWxlcygkdGhlbWUsICdtYXQtaW5wdXQnKSB7XG4gICAgJGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJHRoZW1lKTtcbiAgICAkZGVuc2l0eTogdGhlbWluZy5nZXQtZGVuc2l0eS1jb25maWcoJHRoZW1lKTtcbiAgICAkdHlwb2dyYXBoeTogdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJHRoZW1lKTtcblxuICAgIEBpZiAkY29sb3IgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBjb2xvcigkY29sb3IpO1xuICAgIH1cbiAgICBAaWYgJGRlbnNpdHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBfZGVuc2l0eSgkZGVuc2l0eSk7XG4gICAgfVxuICAgIEBpZiAkdHlwb2dyYXBoeSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIHR5cG9ncmFwaHkoJHR5cG9ncmFwaHkpO1xuICAgIH1cbiAgfVxufVxuIiwiQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnLi4vY29yZS9zdHlsZS9wcml2YXRlJztcbkB1c2UgJy4uL2NvcmUvdGhlbWluZy90aGVtaW5nJztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5JztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5LXV0aWxzJztcblxuXG5AbWl4aW4gY29sb3IoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRiYWNrZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGJhY2tncm91bmQpO1xuICAkZm9yZWdyb3VuZDogbWFwLmdldCgkY29uZmlnLCBmb3JlZ3JvdW5kKTtcblxuICAubWF0LW1lbnUtcGFuZWwge1xuICAgIEBpbmNsdWRlIHByaXZhdGUucHJpdmF0ZS10aGVtZS1vdmVycmlkYWJsZS1lbGV2YXRpb24oNCwgJGNvbmZpZyk7XG4gICAgYmFja2dyb3VuZDogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLCAnY2FyZCcpO1xuICB9XG5cbiAgLm1hdC1tZW51LWl0ZW0ge1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsICd0ZXh0Jyk7XG5cbiAgICAmW2Rpc2FibGVkXSB7XG4gICAgICAmLFxuICAgICAgJjo6YWZ0ZXIsXG4gICAgICAubWF0LWljb24tbm8tY29sb3Ige1xuICAgICAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCAnZGlzYWJsZWQnKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAubWF0LW1lbnUtaXRlbSAubWF0LWljb24tbm8tY29sb3IsXG4gIC5tYXQtbWVudS1pdGVtLXN1Ym1lbnUtdHJpZ2dlcjo6YWZ0ZXIge1xuICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsICdpY29uJyk7XG4gIH1cblxuICAubWF0LW1lbnUtaXRlbTpob3ZlcixcbiAgLm1hdC1tZW51LWl0ZW0uY2RrLXByb2dyYW0tZm9jdXNlZCxcbiAgLm1hdC1tZW51LWl0ZW0uY2RrLWtleWJvYXJkLWZvY3VzZWQsXG4gIC5tYXQtbWVudS1pdGVtLWhpZ2hsaWdodGVkIHtcbiAgICAmOm5vdChbZGlzYWJsZWRdKSB7XG4gICAgICBiYWNrZ3JvdW5kOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGJhY2tncm91bmQsICdob3ZlcicpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gdHlwb2dyYXBoeSgkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHR5cG9ncmFwaHkucHJpdmF0ZS10eXBvZ3JhcGh5LXRvLTIwMTQtY29uZmlnKFxuICAgICAgdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJGNvbmZpZy1vci10aGVtZSkpO1xuICAubWF0LW1lbnUtaXRlbSB7XG4gICAgZm9udDoge1xuICAgICAgZmFtaWx5OiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtZmFtaWx5KCRjb25maWcsIGJvZHktMSk7XG4gICAgICBzaXplOiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtc2l6ZSgkY29uZmlnLCBib2R5LTEpO1xuICAgICAgd2VpZ2h0OiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtd2VpZ2h0KCRjb25maWcsIGJvZHktMSk7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBfZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZykge1xuICAkdGhlbWU6IHRoZW1pbmcucHJpdmF0ZS1sZWdhY3ktZ2V0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICBAaW5jbHVkZSB0aGVtaW5nLnByaXZhdGUtY2hlY2stZHVwbGljYXRlLXRoZW1lLXN0eWxlcygkdGhlbWUsICdtYXQtbWVudScpIHtcbiAgICAkY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkdGhlbWUpO1xuICAgICRkZW5zaXR5OiB0aGVtaW5nLmdldC1kZW5zaXR5LWNvbmZpZygkdGhlbWUpO1xuICAgICR0eXBvZ3JhcGh5OiB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkdGhlbWUpO1xuXG4gICAgQGlmICRjb2xvciAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIGNvbG9yKCRjb2xvcik7XG4gICAgfVxuICAgIEBpZiAkZGVuc2l0eSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIF9kZW5zaXR5KCRkZW5zaXR5KTtcbiAgICB9XG4gICAgQGlmICR0eXBvZ3JhcGh5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgdHlwb2dyYXBoeSgkdHlwb2dyYXBoeSk7XG4gICAgfVxuICB9XG59XG5cbiIsIkB1c2UgJ3Nhc3M6bWFwJztcbkB1c2UgJy4uL2NvcmUvdGhlbWluZy90aGVtaW5nJztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5JztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5LXV0aWxzJztcbkB1c2UgJy4uL2NvcmUvZGVuc2l0eS9wcml2YXRlL2NvbXBhdGliaWxpdHknO1xuQHVzZSAnLi9wYWdpbmF0b3ItdmFyaWFibGVzJztcblxuQG1peGluIGNvbG9yKCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAkZm9yZWdyb3VuZDogbWFwLmdldCgkY29uZmlnLCBmb3JlZ3JvdW5kKTtcbiAgJGJhY2tncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgYmFja2dyb3VuZCk7XG5cbiAgLm1hdC1wYWdpbmF0b3Ige1xuICAgIGJhY2tncm91bmQ6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYmFja2dyb3VuZCwgJ2NhcmQnKTtcbiAgfVxuXG4gIC5tYXQtcGFnaW5hdG9yLFxuICAubWF0LXBhZ2luYXRvci1wYWdlLXNpemUgLm1hdC1zZWxlY3QtdHJpZ2dlciB7XG4gICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgc2Vjb25kYXJ5LXRleHQpO1xuICB9XG5cbiAgLm1hdC1wYWdpbmF0b3ItZGVjcmVtZW50LFxuICAubWF0LXBhZ2luYXRvci1pbmNyZW1lbnQge1xuICAgIGJvcmRlci10b3A6IDJweCBzb2xpZCB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsICdpY29uJyk7XG4gICAgYm9yZGVyLXJpZ2h0OiAycHggc29saWQgdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCAnaWNvbicpO1xuICB9XG5cbiAgLm1hdC1wYWdpbmF0b3ItZmlyc3QsXG4gIC5tYXQtcGFnaW5hdG9yLWxhc3Qge1xuICAgIGJvcmRlci10b3A6IDJweCBzb2xpZCB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsICdpY29uJyk7XG4gIH1cblxuICAubWF0LWljb24tYnV0dG9uW2Rpc2FibGVkXSB7XG4gICAgLm1hdC1wYWdpbmF0b3ItZGVjcmVtZW50LFxuICAgIC5tYXQtcGFnaW5hdG9yLWluY3JlbWVudCxcbiAgICAubWF0LXBhZ2luYXRvci1maXJzdCxcbiAgICAubWF0LXBhZ2luYXRvci1sYXN0IHtcbiAgICAgIGJvcmRlci1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCAnZGlzYWJsZWQnKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHR5cG9ncmFwaHkoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0eXBvZ3JhcGh5LnByaXZhdGUtdHlwb2dyYXBoeS10by0yMDE0LWNvbmZpZyhcbiAgICAgIHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCRjb25maWctb3ItdGhlbWUpKTtcbiAgLm1hdC1wYWdpbmF0b3IsXG4gIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZSAubWF0LXNlbGVjdC10cmlnZ2VyIHtcbiAgICBmb250OiB7XG4gICAgICBmYW1pbHk6IHR5cG9ncmFwaHktdXRpbHMuZm9udC1mYW1pbHkoJGNvbmZpZywgY2FwdGlvbik7XG4gICAgICBzaXplOiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtc2l6ZSgkY29uZmlnLCBjYXB0aW9uKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGRlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge1xuICAkZGVuc2l0eS1zY2FsZTogdGhlbWluZy5nZXQtZGVuc2l0eS1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRoZWlnaHQ6IGNvbXBhdGliaWxpdHkucHJpdmF0ZS1kZW5zaXR5LXByb3AtdmFsdWUocGFnaW5hdG9yLXZhcmlhYmxlcy4kZGVuc2l0eS1jb25maWcsXG4gICAgJGRlbnNpdHktc2NhbGUsIGhlaWdodCk7XG5cbiAgQGluY2x1ZGUgY29tcGF0aWJpbGl0eS5wcml2YXRlLWRlbnNpdHktbGVnYWN5LWNvbXBhdGliaWxpdHkoKSB7XG4gICAgLm1hdC1wYWdpbmF0b3ItY29udGFpbmVyIHtcbiAgICAgIG1pbi1oZWlnaHQ6ICRoZWlnaHQ7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiB0aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKSB7XG4gICR0aGVtZTogdGhlbWluZy5wcml2YXRlLWxlZ2FjeS1nZXQtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZyk7XG4gIEBpbmNsdWRlIHRoZW1pbmcucHJpdmF0ZS1jaGVjay1kdXBsaWNhdGUtdGhlbWUtc3R5bGVzKCR0aGVtZSwgJ21hdC1wYWdpbmF0b3InKSB7XG4gICAgJGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJHRoZW1lKTtcbiAgICAkZGVuc2l0eTogdGhlbWluZy5nZXQtZGVuc2l0eS1jb25maWcoJHRoZW1lKTtcbiAgICAkdHlwb2dyYXBoeTogdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJHRoZW1lKTtcblxuICAgIEBpZiAkY29sb3IgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBjb2xvcigkY29sb3IpO1xuICAgIH1cbiAgICBAaWYgJGRlbnNpdHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBkZW5zaXR5KCRkZW5zaXR5KTtcbiAgICB9XG4gICAgQGlmICR0eXBvZ3JhcGh5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgdHlwb2dyYXBoeSgkdHlwb2dyYXBoeSk7XG4gICAgfVxuICB9XG59XG4iLCJAdXNlICdzYXNzOm1hcCc7XG5AdXNlICcuLi9jb3JlL3RoZW1pbmcvdGhlbWluZyc7XG5AdXNlICcuLi9jb3JlL3R5cG9ncmFwaHkvdHlwb2dyYXBoeSc7XG5AdXNlICcuLi9jb3JlL3R5cG9ncmFwaHkvdHlwb2dyYXBoeS11dGlscyc7XG5cbkBtaXhpbiBfY29sb3IoJHBhbGV0dGUpIHtcbiAgJi5tYXQtcmFkaW8tY2hlY2tlZCAubWF0LXJhZGlvLW91dGVyLWNpcmNsZSB7XG4gICAgYm9yZGVyLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHBhbGV0dGUpO1xuICB9XG5cbiAgLm1hdC1yYWRpby1pbm5lci1jaXJjbGUsXG4gIC5tYXQtcmFkaW8tcmlwcGxlIC5tYXQtcmlwcGxlLWVsZW1lbnQ6bm90KC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGUpLFxuICAmLm1hdC1yYWRpby1jaGVja2VkIC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGUsXG4gICY6YWN0aXZlIC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGUge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkcGFsZXR0ZSk7XG4gIH1cbn1cblxuQG1peGluIGNvbG9yKCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAkcHJpbWFyeTogbWFwLmdldCgkY29uZmlnLCBwcmltYXJ5KTtcbiAgJGFjY2VudDogbWFwLmdldCgkY29uZmlnLCBhY2NlbnQpO1xuICAkd2FybjogbWFwLmdldCgkY29uZmlnLCB3YXJuKTtcbiAgJGJhY2tncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgYmFja2dyb3VuZCk7XG4gICRmb3JlZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGZvcmVncm91bmQpO1xuXG4gIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlIHtcbiAgICBib3JkZXItY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgc2Vjb25kYXJ5LXRleHQpO1xuICB9XG5cbiAgLm1hdC1yYWRpby1idXR0b24ge1xuICAgICYubWF0LXByaW1hcnkge1xuICAgICAgQGluY2x1ZGUgX2NvbG9yKCRwcmltYXJ5KTtcbiAgICB9XG5cbiAgICAmLm1hdC1hY2NlbnQge1xuICAgICAgQGluY2x1ZGUgX2NvbG9yKCRhY2NlbnQpO1xuICAgIH1cblxuICAgICYubWF0LXdhcm4ge1xuICAgICAgQGluY2x1ZGUgX2NvbG9yKCR3YXJuKTtcbiAgICB9XG5cbiAgICAvLyBUaGlzIG5lZWRzIGV4dHJhIHNwZWNpZmljaXR5LCBiZWNhdXNlIHRoZSBjbGFzc2VzIGFib3ZlIGFyZSBjb21iaW5lZFxuICAgIC8vIChlLmcuIGAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtYWNjZW50YCkgd2hpY2ggaW5jcmVhc2VzIHRoZWlyIHNwZWNpZmljaXR5IGEgbG90LlxuICAgIC8vIFRPRE86IGNvbnNpZGVyIG1ha2luZyB0aGUgc2VsZWN0b3JzIGludG8gZGVzY2VuZGFudHMgKGAubWF0LXByaW1hcnkgLm1hdC1yYWRpby1idXR0b25gKS5cbiAgICAmLm1hdC1yYWRpby1kaXNhYmxlZCB7XG4gICAgICAmLm1hdC1yYWRpby1jaGVja2VkIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlLFxuICAgICAgLm1hdC1yYWRpby1vdXRlci1jaXJjbGUge1xuICAgICAgICBib3JkZXItY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgZGlzYWJsZWQpO1xuICAgICAgfVxuXG4gICAgICAubWF0LXJhZGlvLXJpcHBsZSAubWF0LXJpcHBsZS1lbGVtZW50LFxuICAgICAgLm1hdC1yYWRpby1pbm5lci1jaXJjbGUge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIGRpc2FibGVkKTtcbiAgICAgIH1cblxuICAgICAgLm1hdC1yYWRpby1sYWJlbC1jb250ZW50IHtcbiAgICAgICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgZGlzYWJsZWQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFN3aXRjaCB0aGlzIHRvIGEgc29saWQgY29sb3Igc2luY2Ugd2UncmUgdXNpbmcgYG9wYWNpdHlgXG4gICAgLy8gdG8gY29udHJvbCBob3cgb3BhcXVlIHRoZSByaXBwbGUgc2hvdWxkIGJlLlxuICAgIC5tYXQtcmlwcGxlLWVsZW1lbnQge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogbWFwLmdldCgkZm9yZWdyb3VuZCwgYmFzZSk7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiB0eXBvZ3JhcGh5KCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdHlwb2dyYXBoeS5wcml2YXRlLXR5cG9ncmFwaHktdG8tMjAxNC1jb25maWcoXG4gICAgICB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKSk7XG4gIC5tYXQtcmFkaW8tYnV0dG9uIHtcbiAgICBmb250LWZhbWlseTogdHlwb2dyYXBoeS11dGlscy5mb250LWZhbWlseSgkY29uZmlnKTtcbiAgfVxufVxuXG5AbWl4aW4gX2RlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIHRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiB0aGVtaW5nLnByaXZhdGUtbGVnYWN5LWdldC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgQGluY2x1ZGUgdGhlbWluZy5wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LXJhZGlvJykge1xuICAgICRjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgJGRlbnNpdHk6IHRoZW1pbmcuZ2V0LWRlbnNpdHktY29uZmlnKCR0aGVtZSk7XG4gICAgJHR5cG9ncmFwaHk6IHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCR0aGVtZSk7XG5cbiAgICBAaWYgJGNvbG9yICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgX2RlbnNpdHkoJGRlbnNpdHkpO1xuICAgIH1cbiAgICBAaWYgJHR5cG9ncmFwaHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5KCR0eXBvZ3JhcGh5KTtcbiAgICB9XG4gIH1cbn1cbiIsIkB1c2UgJ3Nhc3M6bWFwJztcbkB1c2UgJy4uL2NvcmUvdGhlbWluZy90aGVtaW5nJztcbkB1c2UgJy4uL2NvcmUvc3R5bGUvcHJpdmF0ZSc7XG5AdXNlICcuLi9jb3JlL3N0eWxlL2Zvcm0tY29tbW9uJztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5JztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5LXV0aWxzJztcblxuXG5AbWl4aW4gY29sb3IoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRmb3JlZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGZvcmVncm91bmQpO1xuICAkYmFja2dyb3VuZDogbWFwLmdldCgkY29uZmlnLCBiYWNrZ3JvdW5kKTtcbiAgJHByaW1hcnk6IG1hcC5nZXQoJGNvbmZpZywgcHJpbWFyeSk7XG4gICRhY2NlbnQ6IG1hcC5nZXQoJGNvbmZpZywgYWNjZW50KTtcbiAgJHdhcm46IG1hcC5nZXQoJGNvbmZpZywgd2Fybik7XG5cbiAgLm1hdC1zZWxlY3QtdmFsdWUge1xuICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIHRleHQpO1xuICB9XG5cbiAgLm1hdC1zZWxlY3QtcGxhY2Vob2xkZXIge1xuICAgIGNvbG9yOiBmb3JtLWNvbW1vbi5wcml2YXRlLWNvbnRyb2wtcGxhY2Vob2xkZXItY29sb3IoJGNvbmZpZyk7XG4gIH1cblxuICAubWF0LXNlbGVjdC1kaXNhYmxlZCAubWF0LXNlbGVjdC12YWx1ZSB7XG4gICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgZGlzYWJsZWQtdGV4dCk7XG4gIH1cblxuICAubWF0LXNlbGVjdC1hcnJvdyB7XG4gICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgc2Vjb25kYXJ5LXRleHQpO1xuICB9XG5cbiAgLm1hdC1zZWxlY3QtcGFuZWwge1xuICAgIGJhY2tncm91bmQ6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYmFja2dyb3VuZCwgY2FyZCk7XG4gICAgQGluY2x1ZGUgcHJpdmF0ZS5wcml2YXRlLXRoZW1lLW92ZXJyaWRhYmxlLWVsZXZhdGlvbig0LCAkY29uZmlnKTtcblxuICAgIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZDpub3QoLm1hdC1vcHRpb24tbXVsdGlwbGUpIHtcbiAgICAgIGJhY2tncm91bmQ6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYmFja2dyb3VuZCwgaG92ZXIsIDAuMTIpO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtZm9ybS1maWVsZCB7XG4gICAgJi5tYXQtZm9jdXNlZCB7XG4gICAgICAmLm1hdC1wcmltYXJ5IC5tYXQtc2VsZWN0LWFycm93IHtcbiAgICAgICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkcHJpbWFyeSwgdGV4dCk7XG4gICAgICB9XG5cbiAgICAgICYubWF0LWFjY2VudCAubWF0LXNlbGVjdC1hcnJvdyB7XG4gICAgICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGFjY2VudCwgdGV4dCk7XG4gICAgICB9XG5cbiAgICAgICYubWF0LXdhcm4gLm1hdC1zZWxlY3QtYXJyb3cge1xuICAgICAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCR3YXJuLCB0ZXh0KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAubWF0LXNlbGVjdC5tYXQtc2VsZWN0LWludmFsaWQgLm1hdC1zZWxlY3QtYXJyb3cge1xuICAgICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkd2FybiwgdGV4dCk7XG4gICAgfVxuXG4gICAgLm1hdC1zZWxlY3QubWF0LXNlbGVjdC1kaXNhYmxlZCAubWF0LXNlbGVjdC1hcnJvdyB7XG4gICAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBkaXNhYmxlZC10ZXh0KTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHR5cG9ncmFwaHkoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0eXBvZ3JhcGh5LnByaXZhdGUtdHlwb2dyYXBoeS10by0yMDE0LWNvbmZpZyhcbiAgICAgIHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCRjb25maWctb3ItdGhlbWUpKTtcbiAgLy8gVGhlIHVuaXQtbGVzcyBsaW5lLWhlaWdodCBmcm9tIHRoZSBmb250IGNvbmZpZy5cbiAgJGxpbmUtaGVpZ2h0OiB0eXBvZ3JhcGh5LXV0aWxzLmxpbmUtaGVpZ2h0KCRjb25maWcsIGlucHV0KTtcblxuICAubWF0LXNlbGVjdCB7XG4gICAgZm9udC1mYW1pbHk6IHR5cG9ncmFwaHktdXRpbHMuZm9udC1mYW1pbHkoJGNvbmZpZyk7XG4gIH1cblxuICAubWF0LXNlbGVjdC10cmlnZ2VyIHtcbiAgICBoZWlnaHQ6ICRsaW5lLWhlaWdodCAqIDFlbTtcbiAgfVxufVxuXG5AbWl4aW4gX2RlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIHRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiB0aGVtaW5nLnByaXZhdGUtbGVnYWN5LWdldC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgQGluY2x1ZGUgdGhlbWluZy5wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LXNlbGVjdCcpIHtcbiAgICAkY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkdGhlbWUpO1xuICAgICRkZW5zaXR5OiB0aGVtaW5nLmdldC1kZW5zaXR5LWNvbmZpZygkdGhlbWUpO1xuICAgICR0eXBvZ3JhcGh5OiB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkdGhlbWUpO1xuXG4gICAgQGlmICRjb2xvciAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIGNvbG9yKCRjb2xvcik7XG4gICAgfVxuICAgIEBpZiAkZGVuc2l0eSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIF9kZW5zaXR5KCRkZW5zaXR5KTtcbiAgICB9XG4gICAgQGlmICR0eXBvZ3JhcGh5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgdHlwb2dyYXBoeSgkdHlwb2dyYXBoeSk7XG4gICAgfVxuICB9XG59XG4iLCJAdXNlICdzYXNzOm1hcCc7XG5AdXNlICcuLi9jb3JlL3N0eWxlL3ByaXZhdGUnO1xuQHVzZSAnLi4vY29yZS90aGVtaW5nL3BhbGV0dGUnO1xuQHVzZSAnLi4vY29yZS90aGVtaW5nL3RoZW1pbmcnO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHknO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHktdXRpbHMnO1xuXG5AbWl4aW4gX2NoZWNrZWQtY29sb3IoJHBhbGV0dGUsICR0aHVtYi1jaGVja2VkLWh1ZSkge1xuICAmLm1hdC1jaGVja2VkIHtcbiAgICAubWF0LXNsaWRlLXRvZ2dsZS10aHVtYiB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHBhbGV0dGUsICR0aHVtYi1jaGVja2VkLWh1ZSk7XG4gICAgfVxuXG4gICAgLm1hdC1zbGlkZS10b2dnbGUtYmFyIHtcbiAgICAgIC8vIE9wYWNpdHkgaXMgZGV0ZXJtaW5lZCBmcm9tIHRoZSBzcGVjcyBmb3IgdGhlIHNlbGVjdGlvbiBjb250cm9scy5cbiAgICAgIC8vIFNlZTogaHR0cHM6Ly9tYXRlcmlhbC5pby9kZXNpZ24vY29tcG9uZW50cy9zZWxlY3Rpb24tY29udHJvbHMuaHRtbCNzcGVjc1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRwYWxldHRlLCAkdGh1bWItY2hlY2tlZC1odWUsIDAuNTQpO1xuICAgIH1cblxuICAgIC5tYXQtcmlwcGxlLWVsZW1lbnQge1xuICAgICAgLy8gU2V0IG5vIG9wYWNpdHkgZm9yIHRoZSByaXBwbGVzIGJlY2F1c2UgdGhlIHJpcHBsZSBvcGFjaXR5IHdpbGwgYmUgYWRqdXN0ZWQgZHluYW1pY2FsbHlcbiAgICAgIC8vIGJhc2VkIG9uIHRoZSB0eXBlIG9mIGludGVyYWN0aW9uIHdpdGggdGhlIHNsaWRlLXRvZ2dsZSAoZS5nLiBmb3IgaG92ZXIsIGZvY3VzKVxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRwYWxldHRlLCAkdGh1bWItY2hlY2tlZC1odWUpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gY29sb3IoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRpcy1kYXJrOiBtYXAuZ2V0KCRjb25maWcsIGlzLWRhcmspO1xuICAkcHJpbWFyeTogbWFwLmdldCgkY29uZmlnLCBwcmltYXJ5KTtcbiAgJGFjY2VudDogbWFwLmdldCgkY29uZmlnLCBhY2NlbnQpO1xuICAkd2FybjogbWFwLmdldCgkY29uZmlnLCB3YXJuKTtcbiAgJGJhY2tncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgYmFja2dyb3VuZCk7XG4gICRmb3JlZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGZvcmVncm91bmQpO1xuXG4gIC8vIENvbG9yIGh1ZXMgYXJlIGJhc2VkIG9uIHRoZSBzcGVjcyB3aGljaCBicmllZmx5IHNob3cgdGhlIGh1ZXMgdGhhdCBhcmUgYXBwbGllZCB0byBhIHN3aXRjaC5cbiAgLy8gVGhlIDIwMTggc3BlY3Mgbm8gbG9uZ2VyIGRlc2NyaWJlIGhvdyBkYXJrIHN3aXRjaGVzIHNob3VsZCBsb29rIGxpa2UuIER1ZSB0byB0aGUgbGFjayBvZlxuICAvLyBpbmZvcm1hdGlvbiBmb3IgZGFyayB0aGVtZWQgc3dpdGNoZXMsIHdlIHBhcnRpYWxseSBrZWVwIHRoZSBvbGQgYmVoYXZpb3IgdGhhdCBpcyBiYXNlZCBvblxuICAvLyB0aGUgcHJldmlvdXMgc3BlY2lmaWNhdGlvbnMuIEZvciB0aGUgY2hlY2tlZCBjb2xvciB3ZSBhbHdheXMgdXNlIHRoZSBgZGVmYXVsdGAgaHVlIGJlY2F1c2VcbiAgLy8gdGhhdCBmb2xsb3dzIE1EQyBhbmQgYWxzbyBtYWtlcyBpdCBlYXNpZXIgZm9yIHBlb3BsZSB0byBjcmVhdGUgYSBjdXN0b20gdGhlbWUgd2l0aG91dCBuZWVkaW5nXG4gIC8vIHRvIHNwZWNpZnkgZWFjaCBodWUgaW5kaXZpZHVhbGx5LlxuICAkdGh1bWItdW5jaGVja2VkLWh1ZTogaWYoJGlzLWRhcmssIDQwMCwgNTApO1xuICAkdGh1bWItY2hlY2tlZC1odWU6IGRlZmF1bHQ7XG5cbiAgJGJhci11bmNoZWNrZWQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgZGlzYWJsZWQpO1xuICAkcmlwcGxlLXVuY2hlY2tlZC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBiYXNlKTtcblxuICAubWF0LXNsaWRlLXRvZ2dsZSB7XG4gICAgQGluY2x1ZGUgX2NoZWNrZWQtY29sb3IoJGFjY2VudCwgJHRodW1iLWNoZWNrZWQtaHVlKTtcblxuICAgICYubWF0LXByaW1hcnkge1xuICAgICAgQGluY2x1ZGUgX2NoZWNrZWQtY29sb3IoJHByaW1hcnksICR0aHVtYi1jaGVja2VkLWh1ZSk7XG4gICAgfVxuXG4gICAgJi5tYXQtd2FybiB7XG4gICAgICBAaW5jbHVkZSBfY2hlY2tlZC1jb2xvcigkd2FybiwgJHRodW1iLWNoZWNrZWQtaHVlKTtcbiAgICB9XG5cbiAgICAmOm5vdCgubWF0LWNoZWNrZWQpIC5tYXQtcmlwcGxlLWVsZW1lbnQge1xuICAgICAgLy8gU2V0IG5vIG9wYWNpdHkgZm9yIHRoZSByaXBwbGVzIGJlY2F1c2UgdGhlIHJpcHBsZSBvcGFjaXR5IHdpbGwgYmUgYWRqdXN0ZWQgZHluYW1pY2FsbHlcbiAgICAgIC8vIGJhc2VkIG9uIHRoZSB0eXBlIG9mIGludGVyYWN0aW9uIHdpdGggdGhlIHNsaWRlLXRvZ2dsZSAoZS5nLiBmb3IgaG92ZXIsIGZvY3VzKVxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHJpcHBsZS11bmNoZWNrZWQtY29sb3I7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1zbGlkZS10b2dnbGUtdGh1bWIge1xuICAgIEBpbmNsdWRlIHByaXZhdGUucHJpdmF0ZS10aGVtZS1lbGV2YXRpb24oMSwgJGNvbmZpZyk7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKHBhbGV0dGUuJGdyZXktcGFsZXR0ZSwgJHRodW1iLXVuY2hlY2tlZC1odWUpO1xuICB9XG5cbiAgLm1hdC1zbGlkZS10b2dnbGUtYmFyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFyLXVuY2hlY2tlZC1jb2xvcjtcbiAgfVxufVxuXG5AbWl4aW4gdHlwb2dyYXBoeSgkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHR5cG9ncmFwaHkucHJpdmF0ZS10eXBvZ3JhcGh5LXRvLTIwMTQtY29uZmlnKFxuICAgICAgdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJGNvbmZpZy1vci10aGVtZSkpO1xuICAubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50IHtcbiAgICBmb250LWZhbWlseTogdHlwb2dyYXBoeS11dGlscy5mb250LWZhbWlseSgkY29uZmlnKTtcbiAgfVxufVxuXG5AbWl4aW4gX2RlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIHRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiB0aGVtaW5nLnByaXZhdGUtbGVnYWN5LWdldC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgQGluY2x1ZGUgdGhlbWluZy5wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LXNsaWRlLXRvZ2dsZScpIHtcbiAgICAkY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkdGhlbWUpO1xuICAgICRkZW5zaXR5OiB0aGVtaW5nLmdldC1kZW5zaXR5LWNvbmZpZygkdGhlbWUpO1xuICAgICR0eXBvZ3JhcGh5OiB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkdGhlbWUpO1xuXG4gICAgQGlmICRjb2xvciAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIGNvbG9yKCRjb2xvcik7XG4gICAgfVxuICAgIEBpZiAkZGVuc2l0eSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIF9kZW5zaXR5KCRkZW5zaXR5KTtcbiAgICB9XG4gICAgQGlmICR0eXBvZ3JhcGh5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgdHlwb2dyYXBoeSgkdHlwb2dyYXBoeSk7XG4gICAgfVxuICB9XG59XG5cbiIsIkB1c2UgJ3Nhc3M6bWFwJztcbkB1c2UgJ3Nhc3M6bWV0YSc7XG5AdXNlICcuLi9jb3JlL3RoZW1pbmcvdGhlbWluZyc7XG5AdXNlICcuLi9jb3JlL3R5cG9ncmFwaHkvdHlwb2dyYXBoeSc7XG5AdXNlICcuLi9jb3JlL3R5cG9ncmFwaHkvdHlwb2dyYXBoeS11dGlscyc7XG5cbkBtaXhpbiBfaW5uZXItY29udGVudC10aGVtZSgkcGFsZXR0ZSkge1xuICAubWF0LXNsaWRlci10cmFjay1maWxsLFxuICAubWF0LXNsaWRlci10aHVtYixcbiAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWwge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkcGFsZXR0ZSk7XG4gIH1cblxuICAubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0IHtcbiAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRwYWxldHRlLCBkZWZhdWx0LWNvbnRyYXN0KTtcbiAgfVxuXG4gIC5tYXQtc2xpZGVyLWZvY3VzLXJpbmcge1xuICAgICRvcGFjaXR5OiAwLjI7XG4gICAgJGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHBhbGV0dGUsIGRlZmF1bHQsICRvcGFjaXR5KTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3I7XG5cbiAgICAvLyBgbWF0LWNvbG9yYCB1c2VzIGByZ2JhYCBmb3IgdGhlIG9wYWNpdHkgd2hpY2ggd29uJ3Qgd29yayB3aXRoXG4gICAgLy8gQ1NTIHZhcmlhYmxlcyBzbyB3ZSBuZWVkIHRvIHVzZSBgb3BhY2l0eWAgYXMgYSBmYWxsYmFjay5cbiAgICBAaWYgKG1ldGEudHlwZS1vZigkY29sb3IpICE9IGNvbG9yKSB7XG4gICAgICBvcGFjaXR5OiAkb3BhY2l0eTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGNvbG9yKCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAkcHJpbWFyeTogbWFwLmdldCgkY29uZmlnLCBwcmltYXJ5KTtcbiAgJGFjY2VudDogbWFwLmdldCgkY29uZmlnLCBhY2NlbnQpO1xuICAkd2FybjogbWFwLmdldCgkY29uZmlnLCB3YXJuKTtcbiAgJGJhY2tncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgYmFja2dyb3VuZCk7XG4gICRmb3JlZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGZvcmVncm91bmQpO1xuXG4gICRtYXQtc2xpZGVyLW9mZi1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBzbGlkZXItb2ZmKTtcbiAgJG1hdC1zbGlkZXItb2ZmLWZvY3VzZWQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgc2xpZGVyLW9mZi1hY3RpdmUpO1xuICAkbWF0LXNsaWRlci1kaXNhYmxlZC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBzbGlkZXItb2ZmKTtcbiAgJG1hdC1zbGlkZXItbGFiZWxlZC1taW4tdmFsdWUtdGh1bWItY29sb3I6XG4gICAgdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBzbGlkZXItbWluKTtcbiAgJG1hdC1zbGlkZXItbGFiZWxlZC1taW4tdmFsdWUtdGh1bWItbGFiZWwtY29sb3I6XG4gICAgdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBzbGlkZXItb2ZmKTtcbiAgJG1hdC1zbGlkZXItdGljay1vcGFjaXR5OiAwLjc7XG4gICRtYXQtc2xpZGVyLXRpY2stY29sb3I6XG4gICAgdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBiYXNlLCAkbWF0LXNsaWRlci10aWNrLW9wYWNpdHkpO1xuICAkbWF0LXNsaWRlci10aWNrLXNpemU6IDJweDtcblxuICAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5kIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkbWF0LXNsaWRlci1vZmYtY29sb3I7XG4gIH1cblxuICAubWF0LXByaW1hcnkge1xuICAgIEBpbmNsdWRlIF9pbm5lci1jb250ZW50LXRoZW1lKCRwcmltYXJ5KTtcbiAgfVxuXG4gIC5tYXQtYWNjZW50IHtcbiAgICBAaW5jbHVkZSBfaW5uZXItY29udGVudC10aGVtZSgkYWNjZW50KTtcbiAgfVxuXG4gIC5tYXQtd2FybiB7XG4gICAgQGluY2x1ZGUgX2lubmVyLWNvbnRlbnQtdGhlbWUoJHdhcm4pO1xuICB9XG5cbiAgLm1hdC1zbGlkZXI6aG92ZXIsXG4gIC5jZGstZm9jdXNlZCB7XG4gICAgLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkbWF0LXNsaWRlci1vZmYtZm9jdXNlZC1jb2xvcjtcbiAgICB9XG4gIH1cblxuICAubWF0LXNsaWRlci1kaXNhYmxlZCB7XG4gICAgLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZCxcbiAgICAubWF0LXNsaWRlci10cmFjay1maWxsLFxuICAgIC5tYXQtc2xpZGVyLXRodW1iIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRtYXQtc2xpZGVyLWRpc2FibGVkLWNvbG9yO1xuICAgIH1cblxuICAgICY6aG92ZXIge1xuICAgICAgLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZCB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRtYXQtc2xpZGVyLWRpc2FibGVkLWNvbG9yO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5tYXQtc2xpZGVyLW1pbi12YWx1ZSB7XG4gICAgLm1hdC1zbGlkZXItZm9jdXMtcmluZyB7XG4gICAgICAkb3BhY2l0eTogMC4xMjtcbiAgICAgICRjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBiYXNlLCAkb3BhY2l0eSk7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3I7XG5cbiAgICAgIC8vIGBtYXQtY29sb3JgIHVzZXMgYHJnYmFgIGZvciB0aGUgb3BhY2l0eSB3aGljaCB3b24ndCB3b3JrIHdpdGhcbiAgICAgIC8vIENTUyB2YXJpYWJsZXMgc28gd2UgbmVlZCB0byB1c2UgYG9wYWNpdHlgIGFzIGEgZmFsbGJhY2suXG4gICAgICBAaWYgKG1ldGEudHlwZS1vZigkY29sb3IpICE9IGNvbG9yKSB7XG4gICAgICAgIG9wYWNpdHk6ICRvcGFjaXR5O1xuICAgICAgfVxuICAgIH1cblxuICAgICYubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nIHtcbiAgICAgIC5tYXQtc2xpZGVyLXRodW1iLFxuICAgICAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWwge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkbWF0LXNsaWRlci1sYWJlbGVkLW1pbi12YWx1ZS10aHVtYi1jb2xvcjtcbiAgICAgIH1cblxuICAgICAgJi5jZGstZm9jdXNlZCB7XG4gICAgICAgIC5tYXQtc2xpZGVyLXRodW1iLFxuICAgICAgICAubWF0LXNsaWRlci10aHVtYi1sYWJlbCB7XG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJG1hdC1zbGlkZXItbGFiZWxlZC1taW4tdmFsdWUtdGh1bWItbGFiZWwtY29sb3I7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAmOm5vdCgubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nKSB7XG4gICAgICAubWF0LXNsaWRlci10aHVtYiB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogJG1hdC1zbGlkZXItb2ZmLWNvbG9yO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgIH1cblxuICAgICAgJjpob3ZlcixcbiAgICAgICYuY2RrLWZvY3VzZWQge1xuICAgICAgICAubWF0LXNsaWRlci10aHVtYiB7XG4gICAgICAgICAgYm9yZGVyLWNvbG9yOiAkbWF0LXNsaWRlci1vZmYtZm9jdXNlZC1jb2xvcjtcbiAgICAgICAgfVxuXG4gICAgICAgICYubWF0LXNsaWRlci1kaXNhYmxlZCAubWF0LXNsaWRlci10aHVtYiB7XG4gICAgICAgICAgYm9yZGVyLWNvbG9yOiAkbWF0LXNsaWRlci1kaXNhYmxlZC1jb2xvcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5tYXQtc2xpZGVyLWhhcy10aWNrcyAubWF0LXNsaWRlci13cmFwcGVyOjphZnRlciB7XG4gICAgYm9yZGVyLWNvbG9yOiAkbWF0LXNsaWRlci10aWNrLWNvbG9yO1xuXG4gICAgLy8gYG1hdC1jb2xvcmAgdXNlcyBgcmdiYWAgZm9yIHRoZSBvcGFjaXR5IHdoaWNoIHdvbid0IHdvcmsgd2l0aFxuICAgIC8vIENTUyB2YXJpYWJsZXMgc28gd2UgbmVlZCB0byB1c2UgYG9wYWNpdHlgIGFzIGEgZmFsbGJhY2suXG4gICAgQGlmIChtZXRhLnR5cGUtb2YoJG1hdC1zbGlkZXItdGljay1jb2xvcikgIT0gY29sb3IpIHtcbiAgICAgIG9wYWNpdHk6ICRtYXQtc2xpZGVyLXRpY2stb3BhY2l0eTtcbiAgICB9XG4gIH1cblxuICAubWF0LXNsaWRlci1ob3Jpem9udGFsIC5tYXQtc2xpZGVyLXRpY2tzIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiByZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCAkbWF0LXNsaWRlci10aWNrLWNvbG9yLFxuICAgICAgICAkbWF0LXNsaWRlci10aWNrLWNvbG9yICRtYXQtc2xpZGVyLXRpY2stc2l6ZSwgdHJhbnNwYXJlbnQgMCwgdHJhbnNwYXJlbnQpO1xuICAgIC8vIEZpcmVmb3ggZG9lc24ndCBkcmF3IHRoZSBncmFkaWVudCBjb3JyZWN0bHkgd2l0aCAndG8gcmlnaHQnXG4gICAgLy8gKHNlZSBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzE0MzE5KS5cbiAgICBiYWNrZ3JvdW5kLWltYWdlOiAtbW96LXJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQoMC4wMDAxZGVnLCAkbWF0LXNsaWRlci10aWNrLWNvbG9yLFxuICAgICAgICAkbWF0LXNsaWRlci10aWNrLWNvbG9yICRtYXQtc2xpZGVyLXRpY2stc2l6ZSwgdHJhbnNwYXJlbnQgMCwgdHJhbnNwYXJlbnQpO1xuXG4gICAgLy8gYG1hdC1jb2xvcmAgdXNlcyBgcmdiYWAgZm9yIHRoZSBvcGFjaXR5IHdoaWNoIHdvbid0IHdvcmsgd2l0aFxuICAgIC8vIENTUyB2YXJpYWJsZXMgc28gd2UgbmVlZCB0byB1c2UgYG9wYWNpdHlgIGFzIGEgZmFsbGJhY2suXG4gICAgQGlmIChtZXRhLnR5cGUtb2YoJG1hdC1zbGlkZXItdGljay1jb2xvcikgIT0gY29sb3IpIHtcbiAgICAgIG9wYWNpdHk6ICRtYXQtc2xpZGVyLXRpY2stb3BhY2l0eTtcbiAgICB9XG4gIH1cblxuICAubWF0LXNsaWRlci12ZXJ0aWNhbCAubWF0LXNsaWRlci10aWNrcyB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogcmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCh0byBib3R0b20sICRtYXQtc2xpZGVyLXRpY2stY29sb3IsXG4gICAgICAgICRtYXQtc2xpZGVyLXRpY2stY29sb3IgJG1hdC1zbGlkZXItdGljay1zaXplLCB0cmFuc3BhcmVudCAwLCB0cmFuc3BhcmVudCk7XG5cbiAgICAvLyBgbWF0LWNvbG9yYCB1c2VzIGByZ2JhYCBmb3IgdGhlIG9wYWNpdHkgd2hpY2ggd29uJ3Qgd29yayB3aXRoXG4gICAgLy8gQ1NTIHZhcmlhYmxlcyBzbyB3ZSBuZWVkIHRvIHVzZSBgb3BhY2l0eWAgYXMgYSBmYWxsYmFjay5cbiAgICBAaWYgKG1ldGEudHlwZS1vZigkbWF0LXNsaWRlci10aWNrLWNvbG9yKSAhPSBjb2xvcikge1xuICAgICAgb3BhY2l0eTogJG1hdC1zbGlkZXItdGljay1vcGFjaXR5O1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gdHlwb2dyYXBoeSgkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHR5cG9ncmFwaHkucHJpdmF0ZS10eXBvZ3JhcGh5LXRvLTIwMTQtY29uZmlnKFxuICAgICAgdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJGNvbmZpZy1vci10aGVtZSkpO1xuICAubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0IHtcbiAgICBmb250OiB7XG4gICAgICBmYW1pbHk6IHR5cG9ncmFwaHktdXRpbHMuZm9udC1mYW1pbHkoJGNvbmZpZyk7XG4gICAgICBzaXplOiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtc2l6ZSgkY29uZmlnLCBjYXB0aW9uKTtcbiAgICAgIHdlaWdodDogdHlwb2dyYXBoeS11dGlscy5mb250LXdlaWdodCgkY29uZmlnLCBib2R5LTIpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gX2RlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIHRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiB0aGVtaW5nLnByaXZhdGUtbGVnYWN5LWdldC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgQGluY2x1ZGUgdGhlbWluZy5wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LXNsaWRlcicpIHtcbiAgICAkY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkdGhlbWUpO1xuICAgICRkZW5zaXR5OiB0aGVtaW5nLmdldC1kZW5zaXR5LWNvbmZpZygkdGhlbWUpO1xuICAgICR0eXBvZ3JhcGh5OiB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkdGhlbWUpO1xuXG4gICAgQGlmICRjb2xvciAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIGNvbG9yKCRjb2xvcik7XG4gICAgfVxuICAgIEBpZiAkZGVuc2l0eSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIF9kZW5zaXR5KCRkZW5zaXR5KTtcbiAgICB9XG4gICAgQGlmICR0eXBvZ3JhcGh5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgdHlwb2dyYXBoeSgkdHlwb2dyYXBoeSk7XG4gICAgfVxuICB9XG59XG4iLCJAdXNlICdzYXNzOm1hcCc7XG5AdXNlICcuLi9jb3JlL3RoZW1pbmcvdGhlbWluZyc7XG5AdXNlICcuLi9jb3JlL3R5cG9ncmFwaHkvdHlwb2dyYXBoeSc7XG5AdXNlICcuLi9jb3JlL3R5cG9ncmFwaHkvdHlwb2dyYXBoeS11dGlscyc7XG5AdXNlICcuLi9jb3JlL2RlbnNpdHkvcHJpdmF0ZS9jb21wYXRpYmlsaXR5JztcbkB1c2UgJy4vc3RlcHBlci12YXJpYWJsZXMnO1xuXG5AbWl4aW4gY29sb3IoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRmb3JlZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGZvcmVncm91bmQpO1xuICAkYmFja2dyb3VuZDogbWFwLmdldCgkY29uZmlnLCBiYWNrZ3JvdW5kKTtcbiAgJHByaW1hcnk6IG1hcC5nZXQoJGNvbmZpZywgcHJpbWFyeSk7XG4gICRhY2NlbnQ6IG1hcC5nZXQoJGNvbmZpZywgYWNjZW50KTtcbiAgJHdhcm46IG1hcC5nZXQoJGNvbmZpZywgd2Fybik7XG5cbiAgLm1hdC1zdGVwLWhlYWRlciB7XG4gICAgJi5jZGsta2V5Ym9hcmQtZm9jdXNlZCxcbiAgICAmLmNkay1wcm9ncmFtLWZvY3VzZWQsXG4gICAgJjpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGJhY2tncm91bmQsIGhvdmVyKTtcbiAgICB9XG5cbiAgICAvLyBPbiB0b3VjaCBkZXZpY2VzIHRoZSA6aG92ZXIgc3RhdGUgd2lsbCBsaW5nZXIgb24gdGhlIGVsZW1lbnQgYWZ0ZXIgYSB0YXAuXG4gICAgLy8gUmVzZXQgaXQgdmlhIGBAbWVkaWFgIGFmdGVyIHRoZSBkZWNsYXJhdGlvbiwgYmVjYXVzZSB0aGUgbWVkaWEgcXVlcnkgaXNuJ3RcbiAgICAvLyBzdXBwb3J0ZWQgYnkgYWxsIGJyb3dzZXJzIHlldC5cbiAgICBAbWVkaWEgKGhvdmVyOiBub25lKSB7XG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAubWF0LXN0ZXAtbGFiZWwsXG4gICAgLm1hdC1zdGVwLW9wdGlvbmFsIHtcbiAgICAgIC8vIFRPRE8oam9zZXBocGVycm90dCk6IFVwZGF0ZSB0byB1c2luZyBhIGNvcnJlY3RlZCBkaXNhYmxlZC10ZXh0IGNvbnRyYXN0XG4gICAgICAvLyBpbnN0ZWFkIG9mIHNlY29uZGFyeS10ZXh0LlxuICAgICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgc2Vjb25kYXJ5LXRleHQpO1xuICAgIH1cblxuICAgIC5tYXQtc3RlcC1pY29uIHtcbiAgICAgIC8vIFRPRE8oam9zZXBocGVycm90dCk6IFVwZGF0ZSB0byB1c2luZyBhIGNvcnJlY3RlZCBkaXNhYmxlZC10ZXh0IGNvbnRyYXN0XG4gICAgICAvLyBpbnN0ZWFkIG9mIHNlY29uZGFyeS10ZXh0LlxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBzZWNvbmRhcnktdGV4dCk7XG4gICAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRwcmltYXJ5LCBkZWZhdWx0LWNvbnRyYXN0KTtcbiAgICB9XG5cbiAgICAubWF0LXN0ZXAtaWNvbi1zZWxlY3RlZCxcbiAgICAubWF0LXN0ZXAtaWNvbi1zdGF0ZS1kb25lLFxuICAgIC5tYXQtc3RlcC1pY29uLXN0YXRlLWVkaXQge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRwcmltYXJ5KTtcbiAgICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHByaW1hcnksIGRlZmF1bHQtY29udHJhc3QpO1xuICAgIH1cblxuICAgICYubWF0LWFjY2VudCB7XG4gICAgICAubWF0LXN0ZXAtaWNvbiB7XG4gICAgICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGFjY2VudCwgZGVmYXVsdC1jb250cmFzdCk7XG4gICAgICB9XG5cbiAgICAgIC5tYXQtc3RlcC1pY29uLXNlbGVjdGVkLFxuICAgICAgLm1hdC1zdGVwLWljb24tc3RhdGUtZG9uZSxcbiAgICAgIC5tYXQtc3RlcC1pY29uLXN0YXRlLWVkaXQge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGFjY2VudCk7XG4gICAgICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGFjY2VudCwgZGVmYXVsdC1jb250cmFzdCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJi5tYXQtd2FybiB7XG4gICAgICAubWF0LXN0ZXAtaWNvbiB7XG4gICAgICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHdhcm4sIGRlZmF1bHQtY29udHJhc3QpO1xuICAgICAgfVxuXG4gICAgICAubWF0LXN0ZXAtaWNvbi1zZWxlY3RlZCxcbiAgICAgIC5tYXQtc3RlcC1pY29uLXN0YXRlLWRvbmUsXG4gICAgICAubWF0LXN0ZXAtaWNvbi1zdGF0ZS1lZGl0IHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCR3YXJuKTtcbiAgICAgICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkd2FybiwgZGVmYXVsdC1jb250cmFzdCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLm1hdC1zdGVwLWljb24tc3RhdGUtZXJyb3Ige1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCR3YXJuLCB0ZXh0KTtcbiAgICB9XG5cbiAgICAubWF0LXN0ZXAtbGFiZWwubWF0LXN0ZXAtbGFiZWwtYWN0aXZlIHtcbiAgICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIHRleHQpO1xuICAgIH1cblxuICAgIC5tYXQtc3RlcC1sYWJlbC5tYXQtc3RlcC1sYWJlbC1lcnJvciB7XG4gICAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCR3YXJuLCB0ZXh0KTtcbiAgICB9XG4gIH1cblxuICAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbCwgLm1hdC1zdGVwcGVyLXZlcnRpY2FsIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGJhY2tncm91bmQsIGNhcmQpO1xuICB9XG5cbiAgLm1hdC1zdGVwcGVyLXZlcnRpY2FsLWxpbmU6OmJlZm9yZSB7XG4gICAgYm9yZGVyLWxlZnQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgZGl2aWRlcik7XG4gIH1cblxuICAubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXI6OmJlZm9yZSxcbiAgLm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVyOjphZnRlcixcbiAgLm1hdC1zdGVwcGVyLWhvcml6b250YWwtbGluZSB7XG4gICAgYm9yZGVyLXRvcC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBkaXZpZGVyKTtcbiAgfVxufVxuXG5AbWl4aW4gdHlwb2dyYXBoeSgkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHR5cG9ncmFwaHkucHJpdmF0ZS10eXBvZ3JhcGh5LXRvLTIwMTQtY29uZmlnKFxuICAgICAgdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJGNvbmZpZy1vci10aGVtZSkpO1xuICAubWF0LXN0ZXBwZXItdmVydGljYWwsIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsIHtcbiAgICBmb250LWZhbWlseTogdHlwb2dyYXBoeS11dGlscy5mb250LWZhbWlseSgkY29uZmlnKTtcbiAgfVxuXG4gIC5tYXQtc3RlcC1sYWJlbCB7XG4gICAgZm9udDoge1xuICAgICAgc2l6ZTogdHlwb2dyYXBoeS11dGlscy5mb250LXNpemUoJGNvbmZpZywgYm9keS0xKTtcbiAgICAgIHdlaWdodDogdHlwb2dyYXBoeS11dGlscy5mb250LXdlaWdodCgkY29uZmlnLCBib2R5LTEpO1xuICAgIH07XG4gIH1cblxuICAubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yIHtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICB9XG5cbiAgLm1hdC1zdGVwLWxhYmVsLWVycm9yIHtcbiAgICBmb250LXNpemU6IHR5cG9ncmFwaHktdXRpbHMuZm9udC1zaXplKCRjb25maWcsIGJvZHktMik7XG4gIH1cblxuICAubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWQge1xuICAgIGZvbnQ6IHtcbiAgICAgIHNpemU6IHR5cG9ncmFwaHktdXRpbHMuZm9udC1zaXplKCRjb25maWcsIGJvZHktMik7XG4gICAgICB3ZWlnaHQ6IHR5cG9ncmFwaHktdXRpbHMuZm9udC13ZWlnaHQoJGNvbmZpZywgYm9keS0yKTtcbiAgICB9O1xuICB9XG59XG5cbkBtaXhpbiBkZW5zaXR5KCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGRlbnNpdHktc2NhbGU6IHRoZW1pbmcuZ2V0LWRlbnNpdHktY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAkaGVpZ2h0OiBjb21wYXRpYmlsaXR5LnByaXZhdGUtZGVuc2l0eS1wcm9wLXZhbHVlKHN0ZXBwZXItdmFyaWFibGVzLiRkZW5zaXR5LWNvbmZpZyxcbiAgICAkZGVuc2l0eS1zY2FsZSwgaGVpZ2h0KTtcbiAgJHZlcnRpY2FsLXBhZGRpbmc6ICgkaGVpZ2h0IC0gc3RlcHBlci12YXJpYWJsZXMuJGxhYmVsLWhlYWRlci1oZWlnaHQpIC8gMjtcblxuICBAaW5jbHVkZSBjb21wYXRpYmlsaXR5LnByaXZhdGUtZGVuc2l0eS1sZWdhY3ktY29tcGF0aWJpbGl0eSgpIHtcbiAgICAubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXIge1xuICAgICAgaGVpZ2h0OiAkaGVpZ2h0O1xuICAgIH1cblxuICAgIC5tYXQtc3RlcHBlci1sYWJlbC1wb3NpdGlvbi1ib3R0b20gLm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVyLFxuICAgIC5tYXQtdmVydGljYWwtc3RlcHBlci1oZWFkZXIge1xuICAgICAgcGFkZGluZzogJHZlcnRpY2FsLXBhZGRpbmcgc3RlcHBlci12YXJpYWJsZXMuJHNpZGUtZ2FwO1xuICAgIH1cblxuICAgIC8vIEVuc3VyZXMgdGhhdCB0aGUgdmVydGljYWwgbGluZXMgZm9yIHRoZSBzdGVwIGNvbnRlbnQgZXhjZWVkIGludG8gdGhlIHN0ZXBcbiAgICAvLyBoZWFkZXJzIHdpdGggYSBnaXZlbiBkaXN0YW5jZSAoYCRtYXQtc3RlcHBlci1saW5lLWdhcGApIHRvIHRoZSBzdGVwIGljb24uXG4gICAgLm1hdC1zdGVwcGVyLXZlcnRpY2FsLWxpbmU6OmJlZm9yZSB7XG4gICAgICB0b3A6IHN0ZXBwZXItdmFyaWFibGVzLiRsaW5lLWdhcCAtICR2ZXJ0aWNhbC1wYWRkaW5nO1xuICAgICAgYm90dG9tOiBzdGVwcGVyLXZhcmlhYmxlcy4kbGluZS1nYXAgLSAkdmVydGljYWwtcGFkZGluZztcbiAgICB9XG5cbiAgICAvLyBFbnN1cmVzIHRoYXQgdGhlIGhvcml6b250YWwgbGluZXMgZm9yIHRoZSBzdGVwIGhlYWRlciBhcmUgY2VudGVyZWQgdmVydGljYWxseS5cbiAgICAubWF0LXN0ZXBwZXItbGFiZWwtcG9zaXRpb24tYm90dG9tIC5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlciB7XG4gICAgICAmOjphZnRlciwgJjo6YmVmb3JlIHtcbiAgICAgICAgdG9wOiAkdmVydGljYWwtcGFkZGluZyArIHN0ZXBwZXItdmFyaWFibGVzLiRsYWJlbC1oZWFkZXItaGVpZ2h0IC8gMjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBFbnN1cmVzIHRoYXQgdGhlIGhvcml6b250YWwgbGluZSBmb3IgdGhlIHN0ZXAgY29udGVudCBpcyBhbGlnbmVkIGNlbnRlcmVkIHZlcnRpY2FsbHkuXG4gICAgLm1hdC1zdGVwcGVyLWxhYmVsLXBvc2l0aW9uLWJvdHRvbSAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbC1saW5lIHtcbiAgICAgIHRvcDogJHZlcnRpY2FsLXBhZGRpbmcgKyBzdGVwcGVyLXZhcmlhYmxlcy4kbGFiZWwtaGVhZGVyLWhlaWdodCAvIDI7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiB0aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKSB7XG4gICR0aGVtZTogdGhlbWluZy5wcml2YXRlLWxlZ2FjeS1nZXQtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZyk7XG4gIEBpbmNsdWRlIHRoZW1pbmcucHJpdmF0ZS1jaGVjay1kdXBsaWNhdGUtdGhlbWUtc3R5bGVzKCR0aGVtZSwgJ21hdC1zdGVwcGVyJykge1xuICAgICRjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgJGRlbnNpdHk6IHRoZW1pbmcuZ2V0LWRlbnNpdHktY29uZmlnKCR0aGVtZSk7XG4gICAgJHR5cG9ncmFwaHk6IHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCR0aGVtZSk7XG5cbiAgICBAaWYgJGNvbG9yICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgZGVuc2l0eSgkZGVuc2l0eSk7XG4gICAgfVxuICAgIEBpZiAkdHlwb2dyYXBoeSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIHR5cG9ncmFwaHkoJHR5cG9ncmFwaHkpO1xuICAgIH1cbiAgfVxufVxuIiwiQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnLi4vY29yZS90aGVtaW5nL3RoZW1pbmcnO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHknO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHktdXRpbHMnO1xuXG5AbWl4aW4gY29sb3IoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRwcmltYXJ5OiBtYXAuZ2V0KCRjb25maWcsIHByaW1hcnkpO1xuICAkYWNjZW50OiBtYXAuZ2V0KCRjb25maWcsIGFjY2VudCk7XG4gICR3YXJuOiBtYXAuZ2V0KCRjb25maWcsIHdhcm4pO1xuICAkYmFja2dyb3VuZDogbWFwLmdldCgkY29uZmlnLCBiYWNrZ3JvdW5kKTtcbiAgJGZvcmVncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgZm9yZWdyb3VuZCk7XG4gICRoZWFkZXItYm9yZGVyOiAxcHggc29saWQgdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBkaXZpZGVyKTtcblxuICAubWF0LXRhYi1uYXYtYmFyLFxuICAubWF0LXRhYi1oZWFkZXIge1xuICAgIGJvcmRlci1ib3R0b206ICRoZWFkZXItYm9yZGVyO1xuICB9XG5cbiAgLm1hdC10YWItZ3JvdXAtaW52ZXJ0ZWQtaGVhZGVyIHtcbiAgICAubWF0LXRhYi1uYXYtYmFyLFxuICAgIC5tYXQtdGFiLWhlYWRlciB7XG4gICAgICBib3JkZXItdG9wOiAkaGVhZGVyLWJvcmRlcjtcbiAgICAgIGJvcmRlci1ib3R0b206IG5vbmU7XG4gICAgfVxuICB9XG5cbiAgLm1hdC10YWItbGFiZWwsIC5tYXQtdGFiLWxpbmsge1xuICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIHRleHQpO1xuXG4gICAgJi5tYXQtdGFiLWRpc2FibGVkIHtcbiAgICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIGRpc2FibGVkLXRleHQpO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24ge1xuICAgIGJvcmRlci1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCB0ZXh0KTtcbiAgfVxuXG4gIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24ge1xuICAgIGJvcmRlci1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBkaXNhYmxlZC10ZXh0KTtcbiAgfVxuXG4gIC8vIFJlbW92ZSBoZWFkZXIgYm9yZGVyIHdoZW4gdGhlcmUgaXMgYSBiYWNrZ3JvdW5kIGNvbG9yXG4gIC5tYXQtdGFiLWdyb3VwW2NsYXNzKj0nbWF0LWJhY2tncm91bmQtJ10gLm1hdC10YWItaGVhZGVyLFxuICAubWF0LXRhYi1uYXYtYmFyW2NsYXNzKj0nbWF0LWJhY2tncm91bmQtJ10ge1xuICAgIGJvcmRlci1ib3R0b206IG5vbmU7XG4gICAgYm9yZGVyLXRvcDogbm9uZTtcbiAgfVxuXG4gIC5tYXQtdGFiLWdyb3VwLCAubWF0LXRhYi1uYXYtYmFyIHtcbiAgICAkdGhlbWUtY29sb3JzOiAoXG4gICAgICBwcmltYXJ5OiAkcHJpbWFyeSxcbiAgICAgIGFjY2VudDogJGFjY2VudCxcbiAgICAgIHdhcm46ICR3YXJuXG4gICAgKTtcblxuICAgIEBlYWNoICRuYW1lLCAkY29sb3IgaW4gJHRoZW1lLWNvbG9ycyB7XG4gICAgICAvLyBTZXQgdGhlIGZvcmVncm91bmQgY29sb3Igb2YgdGhlIHRhYnNcbiAgICAgICYubWF0LSN7JG5hbWV9IHtcbiAgICAgICAgQGluY2x1ZGUgX2xhYmVsLWZvY3VzLWNvbG9yKCRjb2xvcik7XG4gICAgICAgIEBpbmNsdWRlIF9pbmstYmFyLWNvbG9yKCRjb2xvcik7XG5cbiAgICAgICAgLy8gT3ZlcnJpZGUgaW5rIGJhciB3aGVuIGJhY2tncm91bmQgY29sb3IgaXMgdGhlIHNhbWVcbiAgICAgICAgJi5tYXQtYmFja2dyb3VuZC0jeyRuYW1lfSB7XG4gICAgICAgICAgPiAubWF0LXRhYi1oZWFkZXIsID4gLm1hdC10YWItbGluay1jb250YWluZXIge1xuICAgICAgICAgICAgQGluY2x1ZGUgX2luay1iYXItY29sb3IoJGNvbG9yLCBkZWZhdWx0LWNvbnRyYXN0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBAZWFjaCAkbmFtZSwgJGNvbG9yIGluICR0aGVtZS1jb2xvcnMge1xuICAgICAgLy8gU2V0IGJhY2tncm91bmQgY29sb3Igb2YgdGhlIHRhYnMgYW5kIG92ZXJyaWRlIGZvY3VzIGNvbG9yXG4gICAgICAmLm1hdC1iYWNrZ3JvdW5kLSN7JG5hbWV9IHtcbiAgICAgICAgQGluY2x1ZGUgX2xhYmVsLWZvY3VzLWNvbG9yKCRjb2xvcik7XG4gICAgICAgIEBpbmNsdWRlIF90YWJzLWJhY2tncm91bmQoJGNvbG9yKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuQG1peGluIF9pbmstYmFyLWNvbG9yKCRjb2xvciwgJGh1ZTogZGVmYXVsdCkge1xuICAubWF0LWluay1iYXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkY29sb3IsICRodWUpO1xuICB9XG59XG5cbkBtaXhpbiBfbGFiZWwtZm9jdXMtY29sb3IoJHRhYi1mb2N1cy1jb2xvcikge1xuICAubWF0LXRhYi1sYWJlbCxcbiAgLm1hdC10YWItbGluayB7XG4gICAgJi5jZGsta2V5Ym9hcmQtZm9jdXNlZCxcbiAgICAmLmNkay1wcm9ncmFtLWZvY3VzZWQge1xuICAgICAgJjpub3QoLm1hdC10YWItZGlzYWJsZWQpIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCR0YWItZm9jdXMtY29sb3IsIGxpZ2h0ZXIsIDAuMyk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBfdGFicy1iYWNrZ3JvdW5kKCRiYWNrZ3JvdW5kLWNvbG9yKSB7XG4gIC8vIE5vdGUgdGhhdCB0aGVzZSBzZWxlY3RvcnMgdGFyZ2V0IGRpcmVjdCBkZXNjZW5kYW50cyBzb1xuICAvLyB0aGF0IHRoZSBzdHlsZXMgZG9uJ3QgYXBwbHkgdG8gYW55IG5lc3RlZCB0YWIgZ3JvdXBzLlxuXG4gIC8vIFNldCBiYWNrZ3JvdW5kIGNvbG9yIGZvciB0aGUgdGFiIGdyb3VwXG4gID4gLm1hdC10YWItaGVhZGVyLCA+IC5tYXQtdGFiLWxpbmstY29udGFpbmVyLCA+IC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGJhY2tncm91bmQtY29sb3IpO1xuICB9XG5cbiAgLy8gU2V0IGxhYmVscyB0byBjb250cmFzdCBhZ2FpbnN0IGJhY2tncm91bmRcbiAgPiAubWF0LXRhYi1oZWFkZXIgLm1hdC10YWItbGFiZWwsID4gLm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC10YWItbGluayB7XG4gICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYmFja2dyb3VuZC1jb2xvciwgZGVmYXVsdC1jb250cmFzdCk7XG5cbiAgICAmLm1hdC10YWItZGlzYWJsZWQge1xuICAgICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYmFja2dyb3VuZC1jb2xvciwgZGVmYXVsdC1jb250cmFzdCwgMC40KTtcbiAgICB9XG4gIH1cblxuICAvLyBTZXQgcGFnaW5hdGlvbiBjaGV2cm9ucyB0byBjb250cmFzdCBiYWNrZ3JvdW5kXG4gID4gLm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sXG4gID4gLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24gLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbixcbiAgPiAubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LWZvY3VzLWluZGljYXRvcjo6YmVmb3JlLFxuICA+IC5tYXQtdGFiLWhlYWRlciAubWF0LWZvY3VzLWluZGljYXRvcjo6YmVmb3JlIHtcbiAgICBib3JkZXItY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYmFja2dyb3VuZC1jb2xvciwgZGVmYXVsdC1jb250cmFzdCk7XG4gIH1cblxuICA+IC5tYXQtdGFiLWhlYWRlciAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uLFxuICA+IC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24ge1xuICAgIGJvcmRlci1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLWNvbG9yLCBkZWZhdWx0LWNvbnRyYXN0LCAwLjQpO1xuICB9XG5cbiAgLy8gU2V0IHJpcHBsZXMgY29sb3IgdG8gYmUgdGhlIGNvbnRyYXN0IGNvbG9yIG9mIHRoZSBuZXcgYmFja2dyb3VuZC4gT3RoZXJ3aXNlIHRoZSByaXBwbGVcbiAgLy8gY29sb3Igd2lsbCBiZSBiYXNlZCBvbiB0aGUgYXBwIGJhY2tncm91bmQgY29sb3IuXG4gID4gLm1hdC10YWItaGVhZGVyIC5tYXQtcmlwcGxlLWVsZW1lbnQsXG4gID4gLm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC1yaXBwbGUtZWxlbWVudCxcbiAgPiAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbiAubWF0LXJpcHBsZS1lbGVtZW50IHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGJhY2tncm91bmQtY29sb3IsIGRlZmF1bHQtY29udHJhc3QsIDAuMTIpO1xuICB9XG59XG5cbkBtaXhpbiB0eXBvZ3JhcGh5KCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdHlwb2dyYXBoeS5wcml2YXRlLXR5cG9ncmFwaHktdG8tMjAxNC1jb25maWcoXG4gICAgICB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKSk7XG4gIC5tYXQtdGFiLWdyb3VwIHtcbiAgICBmb250LWZhbWlseTogdHlwb2dyYXBoeS11dGlscy5mb250LWZhbWlseSgkY29uZmlnKTtcbiAgfVxuXG4gIC5tYXQtdGFiLWxhYmVsLCAubWF0LXRhYi1saW5rIHtcbiAgICBmb250OiB7XG4gICAgICBmYW1pbHk6IHR5cG9ncmFwaHktdXRpbHMuZm9udC1mYW1pbHkoJGNvbmZpZywgYnV0dG9uKTtcbiAgICAgIHNpemU6IHR5cG9ncmFwaHktdXRpbHMuZm9udC1zaXplKCRjb25maWcsIGJ1dHRvbik7XG4gICAgICB3ZWlnaHQ6IHR5cG9ncmFwaHktdXRpbHMuZm9udC13ZWlnaHQoJGNvbmZpZywgYnV0dG9uKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIF9kZW5zaXR5KCRjb25maWctb3ItdGhlbWUpIHt9XG5cbkBtaXhpbiB0aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKSB7XG4gICR0aGVtZTogdGhlbWluZy5wcml2YXRlLWxlZ2FjeS1nZXQtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZyk7XG4gIEBpbmNsdWRlIHRoZW1pbmcucHJpdmF0ZS1jaGVjay1kdXBsaWNhdGUtdGhlbWUtc3R5bGVzKCR0aGVtZSwgJ21hdC10YWJzJykge1xuICAgICRjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgJGRlbnNpdHk6IHRoZW1pbmcuZ2V0LWRlbnNpdHktY29uZmlnKCR0aGVtZSk7XG4gICAgJHR5cG9ncmFwaHk6IHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCR0aGVtZSk7XG5cbiAgICBAaWYgJGNvbG9yICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgX2RlbnNpdHkoJGRlbnNpdHkpO1xuICAgIH1cbiAgICBAaWYgJHR5cG9ncmFwaHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5KCR0eXBvZ3JhcGh5KTtcbiAgICB9XG4gIH1cbn1cbiIsIkB1c2UgJ3Nhc3M6bWFwJztcbkB1c2UgJy4uL2NvcmUvZGVuc2l0eS9wcml2YXRlL2NvbXBhdGliaWxpdHknO1xuQHVzZSAnLi4vY29yZS9zdHlsZS92YXJpYWJsZXMnO1xuQHVzZSAnLi4vY29yZS90aGVtaW5nL3RoZW1pbmcnO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHknO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHktdXRpbHMnO1xuQHVzZSAnLi90b29sYmFyLXZhcmlhYmxlcyc7XG5cbkBtaXhpbiBfaGVpZ2h0KCRoZWlnaHQpIHtcbiAgLm1hdC10b29sYmFyLW11bHRpcGxlLXJvd3Mge1xuICAgIG1pbi1oZWlnaHQ6ICRoZWlnaHQ7XG4gIH1cbiAgLm1hdC10b29sYmFyLXJvdywgLm1hdC10b29sYmFyLXNpbmdsZS1yb3cge1xuICAgIGhlaWdodDogJGhlaWdodDtcbiAgfVxufVxuXG5AbWl4aW4gX3BhbGV0dGUtc3R5bGVzKCRwYWxldHRlKSB7XG4gIGJhY2tncm91bmQ6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkcGFsZXR0ZSk7XG4gIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHBhbGV0dGUsIGRlZmF1bHQtY29udHJhc3QpO1xufVxuXG5AbWl4aW4gX2Zvcm0tZmllbGQtb3ZlcnJpZGVzIHtcbiAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZSxcbiAgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZSxcbiAgLm1hdC1mb2N1c2VkIC5tYXQtZm9ybS1maWVsZC1yaXBwbGUge1xuICAgIGJhY2tncm91bmQtY29sb3I6IGN1cnJlbnRDb2xvcjtcbiAgfVxuXG4gIC5tYXQtZm9ybS1maWVsZC1sYWJlbCxcbiAgLm1hdC1mb2N1c2VkIC5tYXQtZm9ybS1maWVsZC1sYWJlbCxcbiAgLm1hdC1zZWxlY3QtdmFsdWUsXG4gIC5tYXQtc2VsZWN0LWFycm93LFxuICAubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWQgLm1hdC1zZWxlY3QtYXJyb3cge1xuICAgIGNvbG9yOiBpbmhlcml0O1xuICB9XG5cbiAgLm1hdC1pbnB1dC1lbGVtZW50IHtcbiAgICBjYXJldC1jb2xvcjogY3VycmVudENvbG9yO1xuICB9XG59XG5cbkBtaXhpbiBjb2xvcigkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJHByaW1hcnk6IG1hcC5nZXQoJGNvbmZpZywgcHJpbWFyeSk7XG4gICRhY2NlbnQ6IG1hcC5nZXQoJGNvbmZpZywgYWNjZW50KTtcbiAgJHdhcm46IG1hcC5nZXQoJGNvbmZpZywgd2Fybik7XG4gICRiYWNrZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGJhY2tncm91bmQpO1xuICAkZm9yZWdyb3VuZDogbWFwLmdldCgkY29uZmlnLCBmb3JlZ3JvdW5kKTtcblxuICAubWF0LXRvb2xiYXIge1xuICAgIGJhY2tncm91bmQ6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYmFja2dyb3VuZCwgYXBwLWJhcik7XG4gICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgdGV4dCk7XG5cbiAgICAmLm1hdC1wcmltYXJ5IHtcbiAgICAgIEBpbmNsdWRlIF9wYWxldHRlLXN0eWxlcygkcHJpbWFyeSk7XG4gICAgfVxuXG4gICAgJi5tYXQtYWNjZW50IHtcbiAgICAgIEBpbmNsdWRlIF9wYWxldHRlLXN0eWxlcygkYWNjZW50KTtcbiAgICB9XG5cbiAgICAmLm1hdC13YXJuIHtcbiAgICAgIEBpbmNsdWRlIF9wYWxldHRlLXN0eWxlcygkd2Fybik7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgX2Zvcm0tZmllbGQtb3ZlcnJpZGVzO1xuICB9XG59XG5cbkBtaXhpbiB0eXBvZ3JhcGh5KCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdHlwb2dyYXBoeS5wcml2YXRlLXR5cG9ncmFwaHktdG8tMjAxNC1jb25maWcoXG4gICAgICB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKSk7XG4gIC5tYXQtdG9vbGJhcixcbiAgLm1hdC10b29sYmFyIGgxLFxuICAubWF0LXRvb2xiYXIgaDIsXG4gIC5tYXQtdG9vbGJhciBoMyxcbiAgLm1hdC10b29sYmFyIGg0LFxuICAubWF0LXRvb2xiYXIgaDUsXG4gIC5tYXQtdG9vbGJhciBoNiB7XG4gICAgQGluY2x1ZGUgdHlwb2dyYXBoeS11dGlscy50eXBvZ3JhcGh5LWxldmVsKCRjb25maWcsIHRpdGxlKTtcbiAgICBtYXJnaW46IDA7XG4gIH1cbn1cblxuQG1peGluIGRlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge1xuICAkZGVuc2l0eS1zY2FsZTogdGhlbWluZy5nZXQtZGVuc2l0eS1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRoZWlnaHQtZGVza3RvcDogY29tcGF0aWJpbGl0eS5wcml2YXRlLWRlbnNpdHktcHJvcC12YWx1ZShcbiAgICAgIHRvb2xiYXItdmFyaWFibGVzLiRkZXNrdG9wLWRlbnNpdHktY29uZmlnLCAkZGVuc2l0eS1zY2FsZSwgaGVpZ2h0KTtcbiAgJGhlaWdodC1tb2JpbGU6IGNvbXBhdGliaWxpdHkucHJpdmF0ZS1kZW5zaXR5LXByb3AtdmFsdWUoXG4gICAgICB0b29sYmFyLXZhcmlhYmxlcy4kbW9iaWxlLWRlbnNpdHktY29uZmlnLCAkZGVuc2l0eS1zY2FsZSwgaGVpZ2h0KTtcblxuICBAaW5jbHVkZSBjb21wYXRpYmlsaXR5LnByaXZhdGUtZGVuc2l0eS1sZWdhY3ktY29tcGF0aWJpbGl0eSgpIHtcbiAgICAvLyBTZXQgdGhlIGRlZmF1bHQgaGVpZ2h0IGZvciB0aGUgdG9vbGJhci5cbiAgICBAaW5jbHVkZSBfaGVpZ2h0KCRoZWlnaHQtZGVza3RvcCk7XG5cbiAgICAvLyBBcyBwZXIgc3BlY3MsIHRvb2xiYXJzIHNob3VsZCBoYXZlIGEgZGlmZmVyZW50IGhlaWdodCBpbiBtb2JpbGUgZGV2aWNlcy4gVGhpcyBoYXMgYmVlblxuICAgIC8vIHNwZWNpZmllZCBpbiB0aGUgb2xkIGd1aWRlbGluZXMgYW5kIGlzIHN0aWxsIG9ic2VydmFibGUgaW4gdGhlIG5ldyBzcGVjaWZpY2F0aW9ucyBieVxuICAgIC8vIGxvb2tpbmcgYXQgdGhlIHNwZWMgaW1hZ2VzLiBTZWU6IGh0dHBzOi8vbWF0ZXJpYWwuaW8vZGVzaWduL2NvbXBvbmVudHMvYXBwLWJhcnMtdG9wLmh0bWwjYW5hdG9teVxuICAgIEBtZWRpYSAodmFyaWFibGVzLiR4c21hbGwpIHtcbiAgICAgIEBpbmNsdWRlIF9oZWlnaHQoJGhlaWdodC1tb2JpbGUpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZykge1xuICAkdGhlbWU6IHRoZW1pbmcucHJpdmF0ZS1sZWdhY3ktZ2V0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICBAaW5jbHVkZSB0aGVtaW5nLnByaXZhdGUtY2hlY2stZHVwbGljYXRlLXRoZW1lLXN0eWxlcygkdGhlbWUsICdtYXQtdG9vbGJhcicpIHtcbiAgICAkY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkdGhlbWUpO1xuICAgICRkZW5zaXR5OiB0aGVtaW5nLmdldC1kZW5zaXR5LWNvbmZpZygkdGhlbWUpO1xuICAgICR0eXBvZ3JhcGh5OiB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkdGhlbWUpO1xuXG4gICAgQGlmICRjb2xvciAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIGNvbG9yKCRjb2xvcik7XG4gICAgfVxuICAgIEBpZiAkZGVuc2l0eSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIGRlbnNpdHkoJGRlbnNpdHkpO1xuICAgIH1cbiAgICBAaWYgJHR5cG9ncmFwaHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5KCR0eXBvZ3JhcGh5KTtcbiAgICB9XG4gIH1cbn1cbiIsIkB1c2UgJ3Nhc3M6bWFwJztcbkB1c2UgJy4uL2NvcmUvdGhlbWluZy90aGVtaW5nJztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5JztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5LXV0aWxzJztcblxuJHRhcmdldC1oZWlnaHQ6IDIycHg7XG4kZm9udC1zaXplOiAxMHB4O1xuJHZlcnRpY2FsLXBhZGRpbmc6ICgkdGFyZ2V0LWhlaWdodCAtICRmb250LXNpemUpIC8gMjtcblxuJGhhbmRzZXQtdGFyZ2V0LWhlaWdodDogMzBweDtcbiRoYW5kc2V0LWZvbnQtc2l6ZTogMTRweDtcbiRoYW5kc2V0LXZlcnRpY2FsLXBhZGRpbmc6XG4gICAgKCRoYW5kc2V0LXRhcmdldC1oZWlnaHQgLSAkaGFuZHNldC1mb250LXNpemUpIC8gMjtcblxuQG1peGluIGNvbG9yKCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAkYmFja2dyb3VuZDogbWFwLmdldCgkY29uZmlnLCBiYWNrZ3JvdW5kKTtcblxuICAubWF0LXRvb2x0aXAge1xuICAgIGJhY2tncm91bmQ6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYmFja2dyb3VuZCwgdG9vbHRpcCwgMC45KTtcbiAgfVxufVxuXG5AbWl4aW4gdHlwb2dyYXBoeSgkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHR5cG9ncmFwaHkucHJpdmF0ZS10eXBvZ3JhcGh5LXRvLTIwMTQtY29uZmlnKFxuICAgICAgdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJGNvbmZpZy1vci10aGVtZSkpO1xuICAubWF0LXRvb2x0aXAge1xuICAgIGZvbnQtZmFtaWx5OiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtZmFtaWx5KCRjb25maWcpO1xuICAgIGZvbnQtc2l6ZTogJGZvbnQtc2l6ZTtcbiAgICBwYWRkaW5nLXRvcDogJHZlcnRpY2FsLXBhZGRpbmc7XG4gICAgcGFkZGluZy1ib3R0b206ICR2ZXJ0aWNhbC1wYWRkaW5nO1xuICB9XG5cbiAgLm1hdC10b29sdGlwLWhhbmRzZXQge1xuICAgIGZvbnQtc2l6ZTogJGhhbmRzZXQtZm9udC1zaXplO1xuICAgIHBhZGRpbmctdG9wOiAkaGFuZHNldC12ZXJ0aWNhbC1wYWRkaW5nO1xuICAgIHBhZGRpbmctYm90dG9tOiAkaGFuZHNldC12ZXJ0aWNhbC1wYWRkaW5nO1xuICB9XG59XG5cbkBtaXhpbiBfZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZykge1xuICAkdGhlbWU6IHRoZW1pbmcucHJpdmF0ZS1sZWdhY3ktZ2V0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICBAaW5jbHVkZSB0aGVtaW5nLnByaXZhdGUtY2hlY2stZHVwbGljYXRlLXRoZW1lLXN0eWxlcygkdGhlbWUsICdtYXQtdG9vbHRpcCcpIHtcbiAgICAkY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkdGhlbWUpO1xuICAgICRkZW5zaXR5OiB0aGVtaW5nLmdldC1kZW5zaXR5LWNvbmZpZygkdGhlbWUpO1xuICAgICR0eXBvZ3JhcGh5OiB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkdGhlbWUpO1xuXG4gICAgQGlmICRjb2xvciAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIGNvbG9yKCRjb2xvcik7XG4gICAgfVxuICAgIEBpZiAkZGVuc2l0eSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIF9kZW5zaXR5KCRkZW5zaXR5KTtcbiAgICB9XG4gICAgQGlmICR0eXBvZ3JhcGh5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgdHlwb2dyYXBoeSgkdHlwb2dyYXBoeSk7XG4gICAgfVxuICB9XG59XG5cbiIsIkB1c2UgJ3Nhc3M6bWFwJztcbkB1c2UgJy4uL2NvcmUvdGhlbWluZy90aGVtaW5nJztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5JztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5LXV0aWxzJztcbkB1c2UgJy4uL2NvcmUvc3R5bGUvbGlzdC1jb21tb24nO1xuXG5cbkBtaXhpbiBjb2xvcigkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJGJhY2tncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgYmFja2dyb3VuZCk7XG4gICRmb3JlZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGZvcmVncm91bmQpO1xuXG4gIC5tYXQtbGlzdC1iYXNlIHtcbiAgICAubWF0LWxpc3QtaXRlbSB7XG4gICAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCB0ZXh0KTtcbiAgICB9XG5cbiAgICAubWF0LWxpc3Qtb3B0aW9uIHtcbiAgICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIHRleHQpO1xuICAgIH1cblxuICAgIC5tYXQtc3ViaGVhZGVyIHtcbiAgICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIHNlY29uZGFyeS10ZXh0KTtcbiAgICB9XG4gIH1cblxuICAubWF0LWxpc3QtaXRlbS1kaXNhYmxlZCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLCBkaXNhYmxlZC1saXN0LW9wdGlvbik7XG4gIH1cblxuICAubWF0LWxpc3Qtb3B0aW9uLFxuICAubWF0LW5hdi1saXN0IC5tYXQtbGlzdC1pdGVtLFxuICAubWF0LWFjdGlvbi1saXN0IC5tYXQtbGlzdC1pdGVtIHtcbiAgICAmOmhvdmVyLCAmOmZvY3VzIHtcbiAgICAgIGJhY2tncm91bmQ6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYmFja2dyb3VuZCwgJ2hvdmVyJyk7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1saXN0LXNpbmdsZS1zZWxlY3RlZC1vcHRpb24ge1xuICAgICYsICY6aG92ZXIsICY6Zm9jdXMge1xuICAgICAgYmFja2dyb3VuZDogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLCBob3ZlciwgMC4xMik7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiB0eXBvZ3JhcGh5KCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdHlwb2dyYXBoeS5wcml2YXRlLXR5cG9ncmFwaHktdG8tMjAxNC1jb25maWcoXG4gICAgICB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKSk7XG4gICRmb250LWZhbWlseTogdHlwb2dyYXBoeS11dGlscy5mb250LWZhbWlseSgkY29uZmlnKTtcblxuICAubWF0LWxpc3QtaXRlbSB7XG4gICAgZm9udC1mYW1pbHk6ICRmb250LWZhbWlseTtcbiAgfVxuXG4gIC5tYXQtbGlzdC1vcHRpb24ge1xuICAgIGZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHk7XG4gIH1cblxuICAvLyBEZWZhdWx0IGxpc3RcbiAgLm1hdC1saXN0LWJhc2Uge1xuICAgIC5tYXQtbGlzdC1pdGVtIHtcbiAgICAgIGZvbnQtc2l6ZTogdHlwb2dyYXBoeS11dGlscy5mb250LXNpemUoJGNvbmZpZywgc3ViaGVhZGluZy0yKTtcbiAgICAgIEBpbmNsdWRlIGxpc3QtY29tbW9uLmJhc2UodHlwb2dyYXBoeS11dGlscy5mb250LXNpemUoJGNvbmZpZywgYm9keS0xKSk7XG4gICAgfVxuXG4gICAgLm1hdC1saXN0LW9wdGlvbiB7XG4gICAgICBmb250LXNpemU6IHR5cG9ncmFwaHktdXRpbHMuZm9udC1zaXplKCRjb25maWcsIHN1YmhlYWRpbmctMik7XG4gICAgICBAaW5jbHVkZSBsaXN0LWNvbW1vbi5iYXNlKHR5cG9ncmFwaHktdXRpbHMuZm9udC1zaXplKCRjb25maWcsIGJvZHktMSkpO1xuICAgIH1cblxuICAgIC5tYXQtc3ViaGVhZGVyIHtcbiAgICAgIGZvbnQtZmFtaWx5OiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtZmFtaWx5KCRjb25maWcsIGJvZHktMik7XG4gICAgICBmb250LXNpemU6IHR5cG9ncmFwaHktdXRpbHMuZm9udC1zaXplKCRjb25maWcsIGJvZHktMik7XG4gICAgICBmb250LXdlaWdodDogdHlwb2dyYXBoeS11dGlscy5mb250LXdlaWdodCgkY29uZmlnLCBib2R5LTIpO1xuICAgIH1cbiAgfVxuXG4gIC8vIERlbnNlIGxpc3RcbiAgLm1hdC1saXN0LWJhc2VbZGVuc2VdIHtcbiAgICAubWF0LWxpc3QtaXRlbSB7XG4gICAgICBmb250LXNpemU6IHR5cG9ncmFwaHktdXRpbHMuZm9udC1zaXplKCRjb25maWcsIGNhcHRpb24pO1xuICAgICAgQGluY2x1ZGUgbGlzdC1jb21tb24uYmFzZSh0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtc2l6ZSgkY29uZmlnLCBjYXB0aW9uKSk7XG4gICAgfVxuXG4gICAgLm1hdC1saXN0LW9wdGlvbiB7XG4gICAgICBmb250LXNpemU6IHR5cG9ncmFwaHktdXRpbHMuZm9udC1zaXplKCRjb25maWcsIGNhcHRpb24pO1xuICAgICAgQGluY2x1ZGUgbGlzdC1jb21tb24uYmFzZSh0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtc2l6ZSgkY29uZmlnLCBjYXB0aW9uKSk7XG4gICAgfVxuXG4gICAgLm1hdC1zdWJoZWFkZXIge1xuICAgICAgZm9udC1mYW1pbHk6ICRmb250LWZhbWlseTtcbiAgICAgIGZvbnQtc2l6ZTogdHlwb2dyYXBoeS11dGlscy5mb250LXNpemUoJGNvbmZpZywgY2FwdGlvbik7XG4gICAgICBmb250LXdlaWdodDogdHlwb2dyYXBoeS11dGlscy5mb250LXdlaWdodCgkY29uZmlnLCBib2R5LTIpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gX2RlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIHRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiB0aGVtaW5nLnByaXZhdGUtbGVnYWN5LWdldC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgQGluY2x1ZGUgdGhlbWluZy5wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LWxpc3QnKSB7XG4gICAgJGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJHRoZW1lKTtcbiAgICAkZGVuc2l0eTogdGhlbWluZy5nZXQtZGVuc2l0eS1jb25maWcoJHRoZW1lKTtcbiAgICAkdHlwb2dyYXBoeTogdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJHRoZW1lKTtcblxuICAgIEBpZiAkY29sb3IgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBjb2xvcigkY29sb3IpO1xuICAgIH1cbiAgICBAaWYgJGRlbnNpdHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBfZGVuc2l0eSgkZGVuc2l0eSk7XG4gICAgfVxuICAgIEBpZiAkdHlwb2dyYXBoeSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIHR5cG9ncmFwaHkoJHR5cG9ncmFwaHkpO1xuICAgIH1cbiAgfVxufVxuIiwiQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnLi4vdGhlbWluZy90aGVtaW5nJztcbkB1c2UgJy4uL3R5cG9ncmFwaHkvdHlwb2dyYXBoeSc7XG5AdXNlICcuLi90eXBvZ3JhcGh5L3R5cG9ncmFwaHktdXRpbHMnO1xuXG5AbWl4aW4gY29sb3IoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRmb3JlZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGZvcmVncm91bmQpO1xuICAkYmFja2dyb3VuZDogbWFwLmdldCgkY29uZmlnLCBiYWNrZ3JvdW5kKTtcbiAgJHByaW1hcnk6IG1hcC5nZXQoJGNvbmZpZywgcHJpbWFyeSk7XG4gICRhY2NlbnQ6IG1hcC5nZXQoJGNvbmZpZywgYWNjZW50KTtcbiAgJHdhcm46IG1hcC5nZXQoJGNvbmZpZywgd2Fybik7XG5cbiAgLm1hdC1vcHRpb24ge1xuICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIHRleHQpO1xuXG4gICAgJjpob3Zlcjpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpLFxuICAgICY6Zm9jdXM6bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKSB7XG4gICAgICBiYWNrZ3JvdW5kOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGJhY2tncm91bmQsIGhvdmVyKTtcbiAgICB9XG5cbiAgICAvLyBJbiBtdWx0aXBsZSBtb2RlIHRoZXJlIGlzIGEgY2hlY2tib3ggdG8gc2hvdyB0aGF0IHRoZSBvcHRpb24gaXMgc2VsZWN0ZWQuXG4gICAgJi5tYXQtc2VsZWN0ZWQ6bm90KC5tYXQtb3B0aW9uLW11bHRpcGxlKTpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpIHtcbiAgICAgIGJhY2tncm91bmQ6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYmFja2dyb3VuZCwgaG92ZXIpO1xuICAgIH1cblxuICAgICYubWF0LWFjdGl2ZSB7XG4gICAgICBiYWNrZ3JvdW5kOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGJhY2tncm91bmQsIGhvdmVyKTtcbiAgICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIHRleHQpO1xuICAgIH1cblxuICAgICYubWF0LW9wdGlvbi1kaXNhYmxlZCB7XG4gICAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBoaW50LXRleHQpO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtcHJpbWFyeSAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWQ6bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKSB7XG4gICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkcHJpbWFyeSwgdGV4dCk7XG4gIH1cblxuICAubWF0LWFjY2VudCAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWQ6bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKSB7XG4gICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYWNjZW50LCB0ZXh0KTtcbiAgfVxuXG4gIC5tYXQtd2FybiAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWQ6bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKSB7XG4gICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkd2FybiwgdGV4dCk7XG4gIH1cbn1cblxuQG1peGluIHR5cG9ncmFwaHkoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0eXBvZ3JhcGh5LnByaXZhdGUtdHlwb2dyYXBoeS10by0yMDE0LWNvbmZpZyhcbiAgICAgIHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCRjb25maWctb3ItdGhlbWUpKTtcbiAgLm1hdC1vcHRpb24ge1xuICAgIGZvbnQ6IHtcbiAgICAgIGZhbWlseTogdHlwb2dyYXBoeS11dGlscy5mb250LWZhbWlseSgkY29uZmlnKTtcbiAgICAgIHNpemU6IHR5cG9ncmFwaHktdXRpbHMuZm9udC1zaXplKCRjb25maWcsIHN1YmhlYWRpbmctMik7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBfZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZykge1xuICAkdGhlbWU6IHRoZW1pbmcucHJpdmF0ZS1sZWdhY3ktZ2V0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICBAaW5jbHVkZSB0aGVtaW5nLnByaXZhdGUtY2hlY2stZHVwbGljYXRlLXRoZW1lLXN0eWxlcygkdGhlbWUsICdtYXQtb3B0aW9uJykge1xuICAgICRjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgJGRlbnNpdHk6IHRoZW1pbmcuZ2V0LWRlbnNpdHktY29uZmlnKCR0aGVtZSk7XG4gICAgJHR5cG9ncmFwaHk6IHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCR0aGVtZSk7XG5cbiAgICBAaWYgJGNvbG9yICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgX2RlbnNpdHkoJGRlbnNpdHkpO1xuICAgIH1cbiAgICBAaWYgJHR5cG9ncmFwaHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5KCR0eXBvZ3JhcGh5KTtcbiAgICB9XG4gIH1cbn1cbiIsIkB1c2UgJ3Nhc3M6bWFwJztcbkB1c2UgJy4uL3RoZW1pbmcvdGhlbWluZyc7XG5AdXNlICcuLi90eXBvZ3JhcGh5L3R5cG9ncmFwaHknO1xuQHVzZSAnLi4vdHlwb2dyYXBoeS90eXBvZ3JhcGh5LXV0aWxzJztcblxuQG1peGluIGNvbG9yKCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAkZm9yZWdyb3VuZDogbWFwLmdldCgkY29uZmlnLCBmb3JlZ3JvdW5kKTtcblxuICAubWF0LW9wdGdyb3VwLWxhYmVsIHtcbiAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBzZWNvbmRhcnktdGV4dCk7XG4gIH1cblxuICAubWF0LW9wdGdyb3VwLWRpc2FibGVkIC5tYXQtb3B0Z3JvdXAtbGFiZWwge1xuICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIGhpbnQtdGV4dCk7XG4gIH1cbn1cblxuQG1peGluIHR5cG9ncmFwaHkoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0eXBvZ3JhcGh5LnByaXZhdGUtdHlwb2dyYXBoeS10by0yMDE0LWNvbmZpZyhcbiAgICAgIHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCRjb25maWctb3ItdGhlbWUpKTtcbiAgLm1hdC1vcHRncm91cC1sYWJlbCB7XG4gICAgQGluY2x1ZGUgdHlwb2dyYXBoeS11dGlscy50eXBvZ3JhcGh5LWxldmVsKCRjb25maWcsIGJvZHktMik7XG4gIH1cbn1cblxuQG1peGluIF9kZW5zaXR5KCRjb25maWctb3ItdGhlbWUpIHt9XG5cbkBtaXhpbiB0aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKSB7XG4gICR0aGVtZTogdGhlbWluZy5wcml2YXRlLWxlZ2FjeS1nZXQtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZyk7XG4gIEBpbmNsdWRlIHRoZW1pbmcucHJpdmF0ZS1jaGVjay1kdXBsaWNhdGUtdGhlbWUtc3R5bGVzKCR0aGVtZSwgJ21hdC1vcHRncm91cCcpIHtcbiAgICAkY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkdGhlbWUpO1xuICAgICRkZW5zaXR5OiB0aGVtaW5nLmdldC1kZW5zaXR5LWNvbmZpZygkdGhlbWUpO1xuICAgICR0eXBvZ3JhcGh5OiB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkdGhlbWUpO1xuXG4gICAgQGlmICRjb2xvciAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIGNvbG9yKCRjb2xvcik7XG4gICAgfVxuICAgIEBpZiAkZGVuc2l0eSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIF9kZW5zaXR5KCRkZW5zaXR5KTtcbiAgICB9XG4gICAgQGlmICR0eXBvZ3JhcGh5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgdHlwb2dyYXBoeSgkdHlwb2dyYXBoeSk7XG4gICAgfVxuICB9XG59XG4iLCJAdXNlICdzYXNzOm1hcCc7XG5AdXNlICcuLi9jb3JlL3R5cG9ncmFwaHkvdHlwb2dyYXBoeSc7XG5AdXNlICcuLi9jb3JlL3R5cG9ncmFwaHkvdHlwb2dyYXBoeS11dGlscyc7XG5AdXNlICcuLi9jb3JlL3RoZW1pbmcvdGhlbWluZyc7XG5AdXNlICcuLi9jb3JlL3RoZW1pbmcvcGFsZXR0ZSc7XG5AdXNlICcuLi9jb3JlL3N0eWxlL3ByaXZhdGUnO1xuXG5AbWl4aW4gY29sb3IoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRpcy1kYXJrLXRoZW1lOiBtYXAuZ2V0KCRjb25maWcsIGlzLWRhcmspO1xuICAkYWNjZW50OiBtYXAuZ2V0KCRjb25maWcsIGFjY2VudCk7XG5cbiAgLm1hdC1zbmFjay1iYXItY29udGFpbmVyIHtcbiAgICAvLyBVc2UgdGhlIHByaW1hcnkgdGV4dCBvbiB0aGUgZGFyayB0aGVtZSwgZXZlbiB0aG91Z2ggdGhlIGxpZ2h0ZXIgb25lIHVzZXNcbiAgICAvLyBhIHNlY29uZGFyeSwgYmVjYXVzZSB0aGUgY29udHJhc3Qgb24gdGhlIGxpZ2h0IHByaW1hcnkgdGV4dCBpcyBwb29yLlxuICAgIGNvbG9yOiBpZigkaXMtZGFyay10aGVtZSwgcGFsZXR0ZS4kZGFyay1wcmltYXJ5LXRleHQsIHBhbGV0dGUuJGxpZ2h0LXNlY29uZGFyeS10ZXh0KTtcbiAgICBiYWNrZ3JvdW5kOiBpZigkaXMtZGFyay10aGVtZSwgbWFwLmdldChwYWxldHRlLiRncmV5LXBhbGV0dGUsIDUwKSwgIzMyMzIzMik7XG5cbiAgICBAaW5jbHVkZSBwcml2YXRlLnByaXZhdGUtdGhlbWUtZWxldmF0aW9uKDYsICRjb25maWcpO1xuICB9XG5cbiAgLm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uIHtcbiAgICBjb2xvcjogaWYoJGlzLWRhcmstdGhlbWUsIGluaGVyaXQsIHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYWNjZW50LCB0ZXh0KSk7XG4gIH1cbn1cblxuQG1peGluIHR5cG9ncmFwaHkoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0eXBvZ3JhcGh5LnByaXZhdGUtdHlwb2dyYXBoeS10by0yMDE0LWNvbmZpZyhcbiAgICAgIHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCRjb25maWctb3ItdGhlbWUpKTtcbiAgLm1hdC1zaW1wbGUtc25hY2tiYXIge1xuICAgIGZvbnQ6IHtcbiAgICAgIGZhbWlseTogdHlwb2dyYXBoeS11dGlscy5mb250LWZhbWlseSgkY29uZmlnLCBib2R5LTEpO1xuICAgICAgc2l6ZTogdHlwb2dyYXBoeS11dGlscy5mb250LXNpemUoJGNvbmZpZywgYm9keS0xKTtcbiAgICB9XG4gIH1cblxuICAubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb24ge1xuICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgIGZvbnQ6IHtcbiAgICAgIGZhbWlseTogaW5oZXJpdDtcbiAgICAgIHNpemU6IGluaGVyaXQ7XG4gICAgICB3ZWlnaHQ6IHR5cG9ncmFwaHktdXRpbHMuZm9udC13ZWlnaHQoJGNvbmZpZywgYnV0dG9uKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIF9kZW5zaXR5KCRjb25maWctb3ItdGhlbWUpIHt9XG5cbkBtaXhpbiB0aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKSB7XG4gICR0aGVtZTogdGhlbWluZy5wcml2YXRlLWxlZ2FjeS1nZXQtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZyk7XG4gIEBpbmNsdWRlIHRoZW1pbmcucHJpdmF0ZS1jaGVjay1kdXBsaWNhdGUtdGhlbWUtc3R5bGVzKCR0aGVtZSwgJ21hdC1zbmFjay1iYXInKSB7XG4gICAgJGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJHRoZW1lKTtcbiAgICAkZGVuc2l0eTogdGhlbWluZy5nZXQtZGVuc2l0eS1jb25maWcoJHRoZW1lKTtcbiAgICAkdHlwb2dyYXBoeTogdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJHRoZW1lKTtcblxuICAgIEBpZiAkY29sb3IgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBjb2xvcigkY29sb3IpO1xuICAgIH1cbiAgICBAaWYgJGRlbnNpdHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBfZGVuc2l0eSgkZGVuc2l0eSk7XG4gICAgfVxuICAgIEBpZiAkdHlwb2dyYXBoeSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIHR5cG9ncmFwaHkoJHR5cG9ncmFwaHkpO1xuICAgIH1cbiAgfVxufVxuIiwiQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnLi4vY29yZS9kZW5zaXR5L3ByaXZhdGUvY29tcGF0aWJpbGl0eSc7XG5AdXNlICcuLi9jb3JlL3RoZW1pbmcvdGhlbWluZyc7XG5AdXNlICcuLi9jb3JlL3R5cG9ncmFwaHkvdHlwb2dyYXBoeSc7XG5AdXNlICcuLi9jb3JlL3R5cG9ncmFwaHkvdHlwb2dyYXBoeS11dGlscyc7XG5AdXNlICcuL3RyZWUtdmFyaWFibGVzJztcblxuQG1peGluIGNvbG9yKCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAkYmFja2dyb3VuZDogbWFwLmdldCgkY29uZmlnLCBiYWNrZ3JvdW5kKTtcbiAgJGZvcmVncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgZm9yZWdyb3VuZCk7XG5cbiAgLm1hdC10cmVlIHtcbiAgICBiYWNrZ3JvdW5kOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGJhY2tncm91bmQsICdjYXJkJyk7XG4gIH1cblxuICAubWF0LXRyZWUtbm9kZSxcbiAgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlIHtcbiAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCB0ZXh0KTtcbiAgfVxufVxuXG5AbWl4aW4gdHlwb2dyYXBoeSgkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHR5cG9ncmFwaHkucHJpdmF0ZS10eXBvZ3JhcGh5LXRvLTIwMTQtY29uZmlnKFxuICAgICAgdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJGNvbmZpZy1vci10aGVtZSkpO1xuICAubWF0LXRyZWUge1xuICAgIGZvbnQtZmFtaWx5OiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtZmFtaWx5KCRjb25maWcpO1xuICB9XG5cbiAgLm1hdC10cmVlLW5vZGUsXG4gIC5tYXQtbmVzdGVkLXRyZWUtbm9kZSB7XG4gICAgZm9udC13ZWlnaHQ6IHR5cG9ncmFwaHktdXRpbHMuZm9udC13ZWlnaHQoJGNvbmZpZywgYm9keS0xKTtcbiAgICBmb250LXNpemU6IHR5cG9ncmFwaHktdXRpbHMuZm9udC1zaXplKCRjb25maWcsIGJvZHktMSk7XG4gIH1cbn1cblxuQG1peGluIGRlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge1xuICAkZGVuc2l0eS1zY2FsZTogdGhlbWluZy5nZXQtZGVuc2l0eS1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRoZWlnaHQ6IGNvbXBhdGliaWxpdHkucHJpdmF0ZS1kZW5zaXR5LXByb3AtdmFsdWUodHJlZS12YXJpYWJsZXMuJGRlbnNpdHktY29uZmlnLFxuICAgICRkZW5zaXR5LXNjYWxlLCBoZWlnaHQpO1xuXG4gIEBpbmNsdWRlIGNvbXBhdGliaWxpdHkucHJpdmF0ZS1kZW5zaXR5LWxlZ2FjeS1jb21wYXRpYmlsaXR5KCkge1xuICAgIC5tYXQtdHJlZS1ub2RlIHtcbiAgICAgIG1pbi1oZWlnaHQ6ICRoZWlnaHQ7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiB0aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKSB7XG4gICR0aGVtZTogdGhlbWluZy5wcml2YXRlLWxlZ2FjeS1nZXQtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZyk7XG4gIEBpbmNsdWRlIHRoZW1pbmcucHJpdmF0ZS1jaGVjay1kdXBsaWNhdGUtdGhlbWUtc3R5bGVzKCR0aGVtZSwgJ21hdC10cmVlJykge1xuICAgICRjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgJGRlbnNpdHk6IHRoZW1pbmcuZ2V0LWRlbnNpdHktY29uZmlnKCR0aGVtZSk7XG4gICAgJHR5cG9ncmFwaHk6IHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCR0aGVtZSk7XG5cbiAgICBAaWYgJGNvbG9yICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgZGVuc2l0eSgkZGVuc2l0eSk7XG4gICAgfVxuICAgIEBpZiAkdHlwb2dyYXBoeSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIHR5cG9ncmFwaHkoJHR5cG9ncmFwaHkpO1xuICAgIH1cbiAgfVxufVxuXG4iLCJAdXNlICcuLi8uLi8uLi9jZGsvYTExeSc7XG5cbkBtaXhpbiByaXBwbGUoKSB7XG4gIC8vIFRoZSBob3N0IGVsZW1lbnQgb2YgYW4gbWF0LXJpcHBsZSBkaXJlY3RpdmUgc2hvdWxkIGFsd2F5cyBoYXZlIGEgcG9zaXRpb24gb2YgXCJhYnNvbHV0ZVwiIG9yXG4gIC8vIFwicmVsYXRpdmVcIiBzbyB0aGF0IHRoZSByaXBwbGVzIGluc2lkZSBhcmUgY29ycmVjdGx5IHBvc2l0aW9uZWQgcmVsYXRpdmVseSB0byB0aGUgY29udGFpbmVyLlxuICAubWF0LXJpcHBsZSB7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAgIC8vIEJ5IGRlZmF1bHQsIGV2ZXJ5IHJpcHBsZSBjb250YWluZXIgc2hvdWxkIGhhdmUgcG9zaXRpb246IHJlbGF0aXZlIGluIGZhdm9yIG9mIGNyZWF0aW5nIGFuXG4gICAgLy8gZWFzeSBBUEkgZm9yIGRldmVsb3BlcnMgdXNpbmcgdGhlIE1hdFJpcHBsZSBkaXJlY3RpdmUuXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgLy8gUHJvbW90ZSBjb250YWluZXJzIHRoYXQgaGF2ZSByaXBwbGVzIHRvIGEgbmV3IGxheWVyLiBXZSB3YW50IHRvIHRhcmdldCBgOm5vdCg6ZW1wdHkpYCxcbiAgICAvLyBiZWNhdXNlIHdlIGRvbid0IHdhbnQgYWxsIHJpcHBsZSBjb250YWluZXJzIHRvIGhhdmUgdGhlaXIgb3duIGxheWVyIHNpbmNlIHRoZXkncmUgdXNlZCBpbiBhXG4gICAgLy8gbG90IG9mIHBsYWNlcyBhbmQgdGhlIGxheWVyIGlzIG9ubHkgcmVsZXZhbnQgd2hpbGUgYW5pbWF0aW5nLiBOb3RlIHRoYXQgaWRlYWxseSB3ZSdkIHVzZVxuICAgIC8vIHRoZSBgY29udGFpbmAgcHJvcGVydHkgaGVyZSAoc2VlICMxMzE3NSksIGJlY2F1c2UgYDplbXB0eWAgY2FuIGJlIGJyb2tlbiBieSBoYXZpbmcgZXh0cmFcbiAgICAvLyB0ZXh0IGluc2lkZSB0aGUgZWxlbWVudCwgYnV0IGl0IGlzbid0IHZlcnkgd2VsbCBzdXBwb3J0ZWQgeWV0LlxuICAgICY6bm90KDplbXB0eSkge1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDApO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVkIHtcbiAgICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgfVxuXG4gIC5tYXQtcmlwcGxlLWVsZW1lbnQge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG5cbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5LCB0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMCk7XG5cbiAgICAvLyBJbiBoaWdoIGNvbnRyYXN0IG1vZGUgdGhlIHJpcHBsZSBpcyBvcGFxdWUsIGNhdXNpbmcgaXQgdG8gb2JzdHJ1Y3QgdGhlIGNvbnRlbnQuXG4gICAgQGluY2x1ZGUgYTExeS5oaWdoLWNvbnRyYXN0KGFjdGl2ZSwgb2ZmKSB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbiAgfVxufVxuIiwiLy8vIEVtaXRzIGEgQ1NTIGNsYXNzLCBgLmNkay12aXN1YWxseS1oaWRkZW5gLiBUaGlzIGNsYXNzIGNhbiBiZSBhcHBsaWVkIHRvIGFuIGVsZW1lbnRcbi8vLyB0byBtYWtlIHRoYXQgZWxlbWVudCB2aXN1YWxseSBoaWRkZW4gd2hpbGUgcmVtYWluaW5nIGF2YWlsYWJsZSB0byBhc3NpdGl2ZSB0ZWNobm9sb2d5LlxuQG1peGluIGExMXktdmlzdWFsbHktaGlkZGVuKCkge1xuICAuY2RrLXZpc3VhbGx5LWhpZGRlbiB7XG4gICAgYm9yZGVyOiAwO1xuICAgIGNsaXA6IHJlY3QoMCAwIDAgMCk7XG4gICAgaGVpZ2h0OiAxcHg7XG4gICAgbWFyZ2luOiAtMXB4O1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgcGFkZGluZzogMDtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgd2lkdGg6IDFweDtcblxuICAgIC8vIFRoaXMgd29ya3MgYXJvdW5kIGEgQ2hyb21lIGJ1ZyB0aGF0IGNhbiBjYXVzZSB0aGUgdGFiIHRvIGNyYXNoIHdoZW4gbGFyZ2UgYW1vdW50cyBvZlxuICAgIC8vIG5vbi1FbmdsaXNoIHRleHQgZ2V0IHdyYXBwZWQ6IGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTEyMDE0NDRcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuXG4gICAgLy8gQXZvaWQgYnJvd3NlcnMgcmVuZGVyaW5nIHRoZSBmb2N1cyByaW5nIGluIHNvbWUgY2FzZXMuXG4gICAgb3V0bGluZTogMDtcblxuICAgIC8vIEF2b2lkIHNvbWUgY2FzZXMgd2hlcmUgdGhlIGJyb3dzZXIgd2lsbCBzdGlsbCByZW5kZXIgdGhlIG5hdGl2ZSBjb250cm9scyAoc2VlICM5MDQ5KS5cbiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgLW1vei1hcHBlYXJhbmNlOiBub25lO1xuICB9XG59XG5cbi8vLyBAZGVwcmVjYXRlZCBVc2UgYGExMXktdmlzdWFsbHktaGlkZGVuYC5cbkBtaXhpbiBhMTF5KCkge1xuICBAaW5jbHVkZSBhMTF5LXZpc3VhbGx5LWhpZGRlbjtcbn1cblxuLy8vIEVtaXRzIHRoZSBtaXhpbidzIGNvbnRlbnQgbmVzdGVkIHVuZGVyIGAkc2VsZWN0b3ItY29udGV4dGAgaWYgYCRzZWxlY3Rvci1jb250ZXh0YFxuLy8vIGlzIG5vbi1lbXB0eS5cbi8vLyBAcGFyYW0ge1N0cmluZ30gc2VsZWN0b3ItY29udGV4dCBUaGUgc2VsZWN0b3IgdW5kZXIgd2hpY2ggdG8gbmVzdCB0aGUgbWl4aW4ncyBjb250ZW50LlxuQG1peGluIF9vcHRpb25hbGx5LW5lc3QtY29udGVudCgkc2VsZWN0b3ItY29udGV4dCkge1xuICBAaWYgKCRzZWxlY3Rvci1jb250ZXh0ID09ICcnKSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbiAgQGVsc2Uge1xuICAgICN7JHNlbGVjdG9yLWNvbnRleHR9IHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuXG4vLy8gQXBwbGllcyBzdHlsZXMgZm9yIHVzZXJzIGluIGhpZ2ggY29udHJhc3QgbW9kZS4gTm90ZSB0aGF0IHRoaXMgb25seSBhcHBsaWVzXG4vLy8gdG8gTWljcm9zb2Z0IGJyb3dzZXJzLiBDaHJvbWUgY2FuIGJlIGluY2x1ZGVkIGJ5IGNoZWNraW5nIGZvciB0aGUgYGh0bWxbaGNdYFxuLy8vIGF0dHJpYnV0ZSwgaG93ZXZlciBDaHJvbWUgaGFuZGxlcyBoaWdoIGNvbnRyYXN0IGRpZmZlcmVudGx5LlxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9IHRhcmdldCBUeXBlIG9mIGhpZ2ggY29udHJhc3Qgc2V0dGluZyB0byB0YXJnZXQuIERlZmF1bHRzIHRvIGBhY3RpdmVgLCBjYW4gYmVcbi8vLyAgICAgYHdoaXRlLW9uLWJsYWNrYCBvciBgYmxhY2stb24td2hpdGVgLlxuLy8vIEBwYXJhbSB7U3RyaW5nfSBlbmNhcHN1bGF0aW9uIFdoZXRoZXIgdG8gZW1pdCBzdHlsZXMgZm9yIHZpZXcgZW5jYXBzdWxhdGlvbi4gVmFsdWVzIGFyZTpcbi8vLyAgICAgKiBgb25gIC0gd29ya3MgZm9yIGBFbXVsYXRlZGAsIGBOYXRpdmVgLCBhbmQgYFNoYWRvd0RvbWBcbi8vLyAgICAgKiBgb2ZmYCAtIHdvcmtzIGZvciBgTm9uZWBcbi8vLyAgICAgKiBgYW55YCAtIHdvcmtzIGZvciBhbGwgZW5jYXBzdWxhdGlvbiBtb2RlcyBieSBlbWl0dGluZyB0aGUgQ1NTIHR3aWNlIChkZWZhdWx0KS5cbkBtaXhpbiBoaWdoLWNvbnRyYXN0KCR0YXJnZXQ6IGFjdGl2ZSwgJGVuY2Fwc3VsYXRpb246ICdhbnknKSB7XG4gIEBpZiAoJHRhcmdldCAhPSAnYWN0aXZlJyBhbmQgJHRhcmdldCAhPSAnYmxhY2stb24td2hpdGUnIGFuZCAkdGFyZ2V0ICE9ICd3aGl0ZS1vbi1ibGFjaycpIHtcbiAgICBAZXJyb3IgJ1Vua25vd24gY2RrLWhpZ2gtY29udHJhc3QgdmFsdWUgXCIjeyR0YXJnZXR9XCIgcHJvdmlkZWQuICcgK1xuICAgICAgICAgICAnQWxsb3dlZCB2YWx1ZXMgYXJlIFwiYWN0aXZlXCIsIFwiYmxhY2stb24td2hpdGVcIiwgYW5kIFwid2hpdGUtb24tYmxhY2tcIic7XG4gIH1cblxuICBAaWYgKCRlbmNhcHN1bGF0aW9uICE9ICdvbicgYW5kICRlbmNhcHN1bGF0aW9uICE9ICdvZmYnIGFuZCAkZW5jYXBzdWxhdGlvbiAhPSAnYW55Jykge1xuICAgIEBlcnJvciAnVW5rbm93biBjZGstaGlnaC1jb250cmFzdCBlbmNhcHN1bGF0aW9uIFwiI3skZW5jYXBzdWxhdGlvbn1cIiBwcm92aWRlZC4gJyArXG4gICAgICAgICAgICdBbGxvd2VkIHZhbHVlcyBhcmUgXCJvblwiLCBcIm9mZlwiLCBhbmQgXCJhbnlcIic7XG4gIH1cblxuICAvLyBJZiB0aGUgc2VsZWN0b3IgY29udGV4dCBoYXMgbXVsdGlwbGUgcGFydHMsIHN1Y2ggYXMgYC5zZWN0aW9uLCAucmVnaW9uYCwganVzdCBkb2luZ1xuICAvLyBgLmNkay1oaWdoLWNvbnRyYXN0LXh4eCAjeyZ9YCB3aWxsIG9ubHkgYXBwbHkgdGhlIHBhcmVudCBzZWxlY3RvciB0byB0aGUgZmlyc3QgcGFydCBvZiB0aGVcbiAgLy8gY29udGV4dC4gV2UgYWRkcmVzcyB0aGlzIGJ5IG5lc3RpbmcgdGhlIHNlbGVjdG9yIGNvbnRleHQgdW5kZXIgLmNkay1oaWdoLWNvbnRyYXN0LlxuICBAYXQtcm9vdCB7XG4gICAgJHNlbGVjdG9yLWNvbnRleHQ6ICN7Jn07XG5cbiAgICBAaWYgKCRlbmNhcHN1bGF0aW9uICE9ICdvbicpIHtcbiAgICAgIC8vIE5vdGUgdGhhdCBpZiB0aGlzIHNlbGVjdG9yIGlzIHVwZGF0ZWQsIHRoZSBzYW1lIGNoYW5nZSBoYXMgdG8gYmUgbWFkZSBpbnNpZGVcbiAgICAgIC8vIGBfb3ZlcmxheS5zY3NzYCB3aGljaCBjYW4ndCBkZXBlbmQgb24gdGhpcyBtaXhpbiBkdWUgdG8gc29tZSBpbmZyYXN0cnVjdHVyZSBsaW1pdGF0aW9ucy5cbiAgICAgIC5jZGstaGlnaC1jb250cmFzdC0jeyR0YXJnZXR9IHtcbiAgICAgICAgQGluY2x1ZGUgX29wdGlvbmFsbHktbmVzdC1jb250ZW50KCRzZWxlY3Rvci1jb250ZXh0KSB7XG4gICAgICAgICAgQGNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBAaWYgKCRlbmNhcHN1bGF0aW9uICE9ICdvZmYnKSB7XG4gICAgICAuY2RrLWhpZ2gtY29udHJhc3QtI3skdGFyZ2V0fSA6aG9zdCB7XG4gICAgICAgIEBpbmNsdWRlIF9vcHRpb25hbGx5LW5lc3QtY29udGVudCgkc2VsZWN0b3ItY29udGV4dCkge1xuICAgICAgICAgIEBjb250ZW50O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvLyBXZSB3YW50IG92ZXJsYXlzIHRvIGFsd2F5cyBhcHBlYXIgb3ZlciB1c2VyIGNvbnRlbnQsIHNvIHNldCBhIGJhc2VsaW5lXG4vLyB2ZXJ5IGhpZ2ggei1pbmRleCBmb3IgdGhlIG92ZXJsYXkgY29udGFpbmVyLCB3aGljaCBpcyB3aGVyZSB3ZSBjcmVhdGUgdGhlIG5ld1xuLy8gc3RhY2tpbmcgY29udGV4dCBmb3IgYWxsIG92ZXJsYXlzLlxuJG92ZXJsYXktY29udGFpbmVyLXotaW5kZXg6IDEwMDAgIWRlZmF1bHQ7XG4kb3ZlcmxheS16LWluZGV4OiAxMDAwICFkZWZhdWx0O1xuJG92ZXJsYXktYmFja2Ryb3Atei1pbmRleDogMTAwMCAhZGVmYXVsdDtcblxuLy8gQmFja2dyb3VuZCBjb2xvciBmb3IgYWxsIG9mIHRoZSBiYWNrZHJvcHNcbiRvdmVybGF5LWJhY2tkcm9wLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMzIpICFkZWZhdWx0O1xuXG4vLyBEZWZhdWx0IGJhY2tkcm9wIGFuaW1hdGlvbiBpcyBiYXNlZCBvbiB0aGUgTWF0ZXJpYWwgRGVzaWduIHN3aWZ0LWVhc2Utb3V0LlxuJGJhY2tkcm9wLWFuaW1hdGlvbi1kdXJhdGlvbjogNDAwbXMgIWRlZmF1bHQ7XG4kYmFja2Ryb3AtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSkgIWRlZmF1bHQ7XG5cbi8vLyBFbWl0cyBzdHJ1Y3R1cmFsIHN0eWxlcyByZXF1aXJlZCBmb3IgY2RrL292ZXJsYXkgdG8gZnVuY3Rpb24uXG5AbWl4aW4gb3ZlcmxheSgpIHtcbiAgLmNkay1vdmVybGF5LWNvbnRhaW5lciwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyIHtcbiAgICAvLyBEaXNhYmxlIGV2ZW50cyBmcm9tIGJlaW5nIGNhcHR1cmVkIG9uIHRoZSBvdmVybGF5IGNvbnRhaW5lci5cbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcblxuICAgIC8vIFRoZSBjb250YWluZXIgc2hvdWxkIGJlIHRoZSBzaXplIG9mIHRoZSB2aWV3cG9ydC5cbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cblxuICAvLyBUaGUgb3ZlcmxheS1jb250YWluZXIgaXMgYW4gaW52aXNpYmxlIGVsZW1lbnQgd2hpY2ggY29udGFpbnMgYWxsIGluZGl2aWR1YWwgb3ZlcmxheXMuXG4gIC5jZGstb3ZlcmxheS1jb250YWluZXIge1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICB6LWluZGV4OiAkb3ZlcmxheS1jb250YWluZXItei1pbmRleDtcblxuICAgICY6ZW1wdHkge1xuICAgICAgLy8gSGlkZSB0aGUgZWxlbWVudCB3aGVuIGl0IGRvZXNuJ3QgaGF2ZSBhbnkgY2hpbGQgbm9kZXMuIFRoaXMgZG9lc24ndFxuICAgICAgLy8gaW5jbHVkZSBvdmVybGF5cyB0aGF0IGhhdmUgYmVlbiBkZXRhY2hlZCwgcmF0aGVyIHRoYW4gZGlzcG9zZWQuXG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbiAgfVxuXG4gIC8vIFdlIHVzZSBhbiBleHRyYSB3cmFwcGVyIGVsZW1lbnQgaW4gb3JkZXIgdG8gdXNlIG1ha2UgdGhlIG92ZXJsYXkgaXRzZWxmIGEgZmxleCBpdGVtLlxuICAvLyBUaGlzIG1ha2VzIGNlbnRlcmluZyB0aGUgb3ZlcmxheSBlYXN5IHdpdGhvdXQgcnVubmluZyBpbnRvIHRoZSBzdWJwaXhlbCByZW5kZXJpbmdcbiAgLy8gcHJvYmxlbXMgdGllZCB0byB1c2luZyBgdHJhbnNmb3JtYCBhbmQgd2l0aG91dCBpbnRlcmZlcmluZyB3aXRoIHRoZSBvdGhlciBwb3NpdGlvblxuICAvLyBzdHJhdGVnaWVzLlxuICAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHotaW5kZXg6ICRvdmVybGF5LXotaW5kZXg7XG4gIH1cblxuICAvLyBBIHNpbmdsZSBvdmVybGF5IHBhbmUuXG4gIC5jZGstb3ZlcmxheS1wYW5lIHtcbiAgICAvLyBOb3RlOiBpdCdzIGltcG9ydGFudCBmb3IgdGhpcyBvbmUgdG8gc3RhcnQgb2ZmIGBhYnNvbHV0ZWAsXG4gICAgLy8gaW4gb3JkZXIgZm9yIHVzIHRvIGJlIGFibGUgdG8gbWVhc3VyZSBpdCBjb3JyZWN0bHkuXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHBvaW50ZXItZXZlbnRzOiBhdXRvO1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgei1pbmRleDogJG92ZXJsYXktei1pbmRleDtcblxuICAgIC8vIEZvciBjb25uZWN0ZWQtcG9zaXRpb24gb3ZlcmxheXMsIHdlIHNldCBgZGlzcGxheTogZmxleGAgaW5cbiAgICAvLyBvcmRlciB0byBmb3JjZSBgbWF4LXdpZHRoYCBhbmQgYG1heC1oZWlnaHRgIHRvIHRha2UgZWZmZWN0LlxuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgIG1heC1oZWlnaHQ6IDEwMCU7XG4gIH1cblxuICAuY2RrLW92ZXJsYXktYmFja2Ryb3Age1xuICAgIC8vIFRPRE8oamVsYm91cm4pOiByZXVzZSBzaWRlbmF2IGZ1bGxzY3JlZW4gbWl4aW4uXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBib3R0b206IDA7XG4gICAgbGVmdDogMDtcbiAgICByaWdodDogMDtcblxuICAgIHotaW5kZXg6ICRvdmVybGF5LWJhY2tkcm9wLXotaW5kZXg7XG4gICAgcG9pbnRlci1ldmVudHM6IGF1dG87XG4gICAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5ICRiYWNrZHJvcC1hbmltYXRpb24tZHVyYXRpb24gJGJhY2tkcm9wLWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb247XG4gICAgb3BhY2l0eTogMDtcblxuICAgICYuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZyB7XG4gICAgICBvcGFjaXR5OiAxO1xuXG4gICAgICAvLyBOb3RlIHRoYXQgd2UgY2FuJ3QgaW1wb3J0IGFuZCB1c2UgdGhlIGBoaWdoLWNvbnRyYXN0YCBtaXhpbiBmcm9tIGBfYTExeS5zY3NzYCwgYmVjYXVzZVxuICAgICAgLy8gdGhpcyBmaWxlIHdpbGwgYmUgY29waWVkIHRvIHRoZSB0b3AtbGV2ZWwgYGNka2AgcGFja2FnZSB3aGVuIHB1dHRpbmcgdG9nZXRoZXIgdGhlIGZpbGVzXG4gICAgICAvLyBmb3IgbnBtLiBBbnkgcmVsYXRpdmUgaW1wb3J0IHBhdGhzIHdlIHVzZSBoZXJlIHdpbGwgYmVjb21lIGludmFsaWQgb25jZSB0aGUgZmlsZSBpcyBjb3BpZWQuXG4gICAgICAuY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlICYge1xuICAgICAgICAvLyBJbiBoaWdoIGNvbnRyYXN0IG1vZGUgdGhlIHJnYmEgYmFja2dyb3VuZCB3aWxsIGJlY29tZSBzb2xpZFxuICAgICAgICAvLyBzbyB3ZSBuZWVkIHRvIGZhbGwgYmFjayB0byBtYWtpbmcgaXQgb3BhcXVlIHVzaW5nIGBvcGFjaXR5YC5cbiAgICAgICAgb3BhY2l0eTogMC42O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wIHtcbiAgICBiYWNrZ3JvdW5kOiAkb3ZlcmxheS1iYWNrZHJvcC1jb2xvcjtcbiAgfVxuXG4gIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcCB7XG4gICAgLy8gTm90ZTogYXMgb2YgRmlyZWZveCA1NywgaGF2aW5nIHRoZSBiYWNrZHJvcCBiZSBgYmFja2dyb3VuZDogbm9uZWAgd2lsbCBwcmV2ZW50IGl0IGZyb21cbiAgICAvLyBjYXB0dXJpbmcgdGhlIHVzZXIncyBtb3VzZSBzY3JvbGwgZXZlbnRzLiBTaW5jZSB3ZSBhbHNvIGNhbid0IHVzZSBzb21ldGhpbmcgbGlrZVxuICAgIC8vIGByZ2JhKDAsIDAsIDAsIDApYCwgd2Ugd29yayBhcm91bmQgdGhlIGluY29uc2lzdGVuY3kgYnkgbm90IHNldHRpbmcgdGhlIGJhY2tncm91bmQgYXRcbiAgICAvLyBhbGwgYW5kIHVzaW5nIGBvcGFjaXR5YCB0byBtYWtlIHRoZSBlbGVtZW50IHRyYW5zcGFyZW50LlxuICAgICYsICYuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZyB7XG4gICAgICBvcGFjaXR5OiAwO1xuICAgIH1cbiAgfVxuXG4gIC8vIE92ZXJsYXkgcGFyZW50IGVsZW1lbnQgdXNlZCB3aXRoIHRoZSBjb25uZWN0ZWQgcG9zaXRpb24gc3RyYXRlZ3kuIFVzZWQgdG8gY29uc3RyYWluIHRoZVxuICAvLyBvdmVybGF5IGVsZW1lbnQncyBzaXplIHRvIGZpdCB3aXRoaW4gdGhlIHZpZXdwb3J0LlxuICAuY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHotaW5kZXg6ICRvdmVybGF5LXotaW5kZXg7XG5cbiAgICAvLyBXZSB1c2UgYGRpc3BsYXk6IGZsZXhgIG9uIHRoaXMgZWxlbWVudCBleGNsdXNpdmVseSBmb3IgY2VudGVyaW5nIGNvbm5lY3RlZCBvdmVybGF5cy5cbiAgICAvLyBXaGVuICpub3QqIGNlbnRlcmluZywgYSB0b3AvbGVmdC9ib3R0b20vcmlnaHQgd2lsbCBiZSBzZXQgd2hpY2ggb3ZlcnJpZGVzIHRoZSBub3JtYWxcbiAgICAvLyBmbGV4IGxheW91dC5cbiAgICBkaXNwbGF5OiBmbGV4O1xuXG4gICAgLy8gV2UgdXNlIHRoZSBgY29sdW1uYCBkaXJlY3Rpb24gaGVyZSB0byBhdm9pZCBzb21lIGZsZXhib3ggaXNzdWVzIGluIEVkZ2VcbiAgICAvLyB3aGVuIHVzaW5nIHRoZSBcImdyb3cgYWZ0ZXIgb3BlblwiIG9wdGlvbnMuXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblxuICAgIC8vIEFkZCBzb21lIGRpbWVuc2lvbnMgc28gdGhlIGVsZW1lbnQgaGFzIGFuIGBpbm5lclRleHRgIHdoaWNoIHNvbWUgcGVvcGxlIGRlcGVuZCBvbiBpbiB0ZXN0cy5cbiAgICBtaW4td2lkdGg6IDFweDtcbiAgICBtaW4taGVpZ2h0OiAxcHg7XG4gIH1cblxuICAvLyBVc2VkIHdoZW4gZGlzYWJsaW5nIGdsb2JhbCBzY3JvbGxpbmcuXG4gIC5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG5cbiAgICAvLyBOZWNlc3NhcnkgZm9yIHRoZSBjb250ZW50IG5vdCB0byBsb3NlIGl0cyB3aWR0aC4gTm90ZSB0aGF0IHdlJ3JlIHVzaW5nIDEwMCUsIGluc3RlYWQgb2ZcbiAgICAvLyAxMDB2dywgYmVjYXVzZSAxMDB2dyBpbmNsdWRlcyB0aGUgd2lkdGggcGx1cyB0aGUgc2Nyb2xsYmFyLCB3aGVyZWFzIDEwMCUgaXMgdGhlIHdpZHRoXG4gICAgLy8gdGhhdCB0aGUgZWxlbWVudCBoYWQgYmVmb3JlIHdlIG1hZGUgaXQgYGZpeGVkYC5cbiAgICB3aWR0aDogMTAwJTtcblxuICAgIC8vIE5vdGU6IHRoaXMgd2lsbCBhbHdheXMgYWRkIGEgc2Nyb2xsYmFyIHRvIHdoYXRldmVyIGVsZW1lbnQgaXQgaXMgb24sIHdoaWNoIGNhblxuICAgIC8vIHBvdGVudGlhbGx5IHJlc3VsdCBpbiBkb3VibGUgc2Nyb2xsYmFycy4gSXQgc2hvdWxkbid0IGJlIGFuIGlzc3VlLCBiZWNhdXNlIHdlIHdvbid0XG4gICAgLy8gYmxvY2sgc2Nyb2xsaW5nIG9uIGEgcGFnZSB0aGF0IGRvZXNuJ3QgaGF2ZSBhIHNjcm9sbGJhciBpbiB0aGUgZmlyc3QgcGxhY2UuXG4gICAgb3ZlcmZsb3cteTogc2Nyb2xsO1xuICB9XG59XG4iLCIvLyBTdHJ1Y3R1cmFsIHN0eWxlcyBmb3IgdGhlIGF1dG9zaXplIHRleHQgZmllbGRzLlxuQG1peGluIHRleHQtZmllbGQtYXV0b3NpemUoKSB7XG4gIC8vIFJlbW92ZSB0aGUgcmVzaXplIGhhbmRsZSBvbiBhdXRvc2l6aW5nIHRleHRhcmVhcywgYmVjYXVzZSB3aGF0ZXZlciBoZWlnaHRcbiAgLy8gdGhlIHVzZXIgcmVzaXplZCB0byB3aWxsIGJlIG92ZXJ3cml0dGVuIG9uY2UgdGhleSBzdGFydCB0eXBpbmcgYWdhaW4uXG4gIHRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZSB7XG4gICAgcmVzaXplOiBub25lO1xuICB9XG5cbiAgLy8gVGhpcyBjbGFzcyBpcyB0ZW1wb3JhcmlseSBhcHBsaWVkIHRvIHRoZSB0ZXh0YXJlYSB3aGVuIGl0IGlzIGJlaW5nIG1lYXN1cmVkLiBJdCBpcyBpbW1lZGlhdGVseVxuICAvLyByZW1vdmVkIHdoZW4gbWVhc3VyaW5nIGlzIGNvbXBsZXRlLiBXZSB1c2UgYCFpbXBvcnRhbnRgIHJ1bGVzIGhlcmUgdG8gbWFrZSBzdXJlIHVzZXItc3BlY2lmaWVkXG4gIC8vIHJ1bGVzIGRvIG5vdCBpbnRlcmZlcmUgd2l0aCB0aGUgbWVhc3VyZW1lbnQuXG4gIHRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmcge1xuICAgIEBpbmNsdWRlIF9hdXRvc2l6ZS1tZWFzdXJpbmctYmFzZTtcbiAgICBoZWlnaHQ6IGF1dG8gIWltcG9ydGFudDtcbiAgICBvdmVyZmxvdzogaGlkZGVuICFpbXBvcnRhbnQ7XG4gIH1cblxuICAvLyBTaW1pbGFyIHRvIHRoZSBgY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ2AgY2xhc3MsIGJ1dCBvbmx5IGFwcGxpZWQgb24gRmlyZWZveC4gV2UgbmVlZFxuICAvLyB0byB1c2UgdGhpcyBjbGFzcywgYmVjYXVzZSBGaXJlZm94IGhhcyBhIGJ1ZyB3aGVyZSBjaGFuZ2luZyB0aGUgYG92ZXJmbG93YCBicmVha3MgdGhlIHVzZXInc1xuICAvLyBhYmlsaXR5IHRvIHVuZG8vcmVkbyB3aGF0IHRoZXkgd2VyZSB0eXBpbmcgKHNlZSAjMTY2MjkpLiBUaGlzIGNsYXNzIGlzIG9ubHkgc2NvcGVkIHRvIEZpcmVmb3gsXG4gIC8vIGJlY2F1c2UgdGhlIG1lYXN1cmVtZW50cyB0aGVyZSBkb24ndCBzZWVtIHRvIGJlIGFmZmVjdGVkIGJ5IHRoZSBgaGVpZ2h0OiAwYCwgd2hlcmVhcyBvbiBvdGhlclxuICAvLyBicm93c2VycyB0aGV5IGFyZSwgZS5nLiBDaHJvbWUgZGV0ZWN0cyBsb25nZXIgdGV4dCBhbmQgSUUgZG9lcyd0IHJlc2l6ZSBiYWNrIHRvIG5vcm1hbC5cbiAgLy8gSWRlbnRpY2FsIGlzc3VlIHJlcG9ydDogaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQ4Nzg0XG4gIHRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveCB7XG4gICAgQGluY2x1ZGUgX2F1dG9zaXplLW1lYXN1cmluZy1iYXNlO1xuICAgIGhlaWdodDogMCAhaW1wb3J0YW50O1xuICB9XG59XG5cbi8vIENvcmUgc3R5bGVzIHRoYXQgZW5hYmxlIG1vbml0b3JpbmcgYXV0b2ZpbGwgc3RhdGUgb2YgdGV4dCBmaWVsZHMuXG5AbWl4aW4gdGV4dC1maWVsZC1hdXRvZmlsbCgpIHtcbiAgLy8gS2V5ZnJhbWVzIHRoYXQgYXBwbHkgbm8gc3R5bGVzLCBidXQgYWxsb3cgdXMgdG8gbW9uaXRvciB3aGVuIGFuIHRleHQgZmllbGQgYmVjb21lcyBhdXRvZmlsbGVkXG4gIC8vIGJ5IHdhdGNoaW5nIGZvciB0aGUgYW5pbWF0aW9uIGV2ZW50cyB0aGF0IGFyZSBmaXJlZCB3aGVuIHRoZXkgc3RhcnQuIE5vdGU6IHRoZSAvKiEqLyBjb21tZW50IGlzXG4gIC8vIG5lZWRlZCB0byBwcmV2ZW50IExpYlNhc3MgZnJvbSBzdHJpcHBpbmcgdGhlIGtleWZyYW1lcyBvdXQuXG4gIC8vIEJhc2VkIG9uOiBodHRwczovL21lZGl1bS5jb20vQGJydW5uL2RldGVjdGluZy1hdXRvZmlsbGVkLWZpZWxkcy1pbi1qYXZhc2NyaXB0LWFlZDU5OGQyNWRhN1xuICBAa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IHsvKiEqL31cbiAgQGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgey8qISovfVxuXG4gIC5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWQ6LXdlYmtpdC1hdXRvZmlsbCB7XG4gICAgLy8gU2luY2UgQ2hyb21lIDgwIHdlIG5lZWQgYSAxbXMgZGVsYXksIG9yIHRoZSBhbmltYXRpb25zdGFydCBldmVudCB3b24ndCBmaXJlLlxuICAgIGFuaW1hdGlvbjogY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zO1xuICB9XG5cbiAgLmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZDpub3QoOi13ZWJraXQtYXV0b2ZpbGwpIHtcbiAgICAvLyBTaW5jZSBDaHJvbWUgODAgd2UgbmVlZCBhIDFtcyBkZWxheSwgb3IgdGhlIGFuaW1hdGlvbnN0YXJ0IGV2ZW50IHdvbid0IGZpcmUuXG4gICAgYW5pbWF0aW9uOiBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zO1xuICB9XG59XG5cbkBtaXhpbiBfYXV0b3NpemUtbWVhc3VyaW5nLWJhc2Uge1xuICAvLyBIYXZpbmcgMnB4IHRvcCBhbmQgYm90dG9tIHBhZGRpbmcgc2VlbXMgdG8gZml4IGEgYnVnIHdoZXJlIENocm9tZSBnZXRzIGFuIGluY29ycmVjdFxuICAvLyBtZWFzdXJlbWVudC4gV2UganVzdCBoYXZlIHRvIGFjY291bnQgZm9yIGl0IGxhdGVyIGFuZCBzdWJ0cmFjdCBpdCBvZmYgdGhlIGZpbmFsIHJlc3VsdC5cbiAgcGFkZGluZzogMnB4IDAgIWltcG9ydGFudDtcbiAgYm94LXNpemluZzogY29udGVudC1ib3ggIWltcG9ydGFudDtcbn1cblxuLy8gVXNlZCB0byBnZW5lcmF0ZSBVSURzIGZvciBrZXlmcmFtZXMgdXNlZCB0byBjaGFuZ2UgdGhlIHRleHQgZmllbGQgYXV0b2ZpbGwgc3R5bGVzLlxuJGF1dG9maWxsLWNvbG9yLWZyYW1lLWNvdW50OiAwO1xuXG4vLyBNaXhpbiB1c2VkIHRvIGFwcGx5IGN1c3RvbSBiYWNrZ3JvdW5kIGFuZCBmb3JlZ3JvdW5kIGNvbG9ycyB0byBhbiBhdXRvZmlsbGVkIHRleHQgZmllbGQuXG4vLyBCYXNlZCBvbjogaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMjc4MTU0OS9cbi8vIHJlbW92aW5nLWlucHV0LWJhY2tncm91bmQtY29sb3VyLWZvci1jaHJvbWUtYXV0b2NvbXBsZXRlI2Fuc3dlci0zNzQzMjI2MFxuQG1peGluIHRleHQtZmllbGQtYXV0b2ZpbGwtY29sb3IoJGJhY2tncm91bmQsICRmb3JlZ3JvdW5kOicnKSB7XG4gIEBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtY29sb3ItI3skYXV0b2ZpbGwtY29sb3ItZnJhbWUtY291bnR9IHtcbiAgICB0byB7XG4gICAgICBiYWNrZ3JvdW5kOiAkYmFja2dyb3VuZDtcbiAgICAgIEBpZiAkZm9yZWdyb3VuZCAhPSAnJyB7IGNvbG9yOiAkZm9yZWdyb3VuZDsgfVxuICAgIH1cbiAgfVxuXG4gICY6LXdlYmtpdC1hdXRvZmlsbCB7XG4gICAgYW5pbWF0aW9uOiBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1jb2xvci0jeyRhdXRvZmlsbC1jb2xvci1mcmFtZS1jb3VudH0gYm90aDtcbiAgfVxuXG4gICYuY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkOi13ZWJraXQtYXV0b2ZpbGwge1xuICAgIC8vIFNpbmNlIENocm9tZSA4MCB3ZSBuZWVkIGEgMW1zIGRlbGF5IGZvciBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCwgb3IgdGhlIGFuaW1hdGlvbnN0YXJ0XG4gICAgLy8gZXZlbnQgd29uJ3QgZmlyZS5cbiAgICBhbmltYXRpb246IGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtcyxcbiAgICAgICAgICAgICAgIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWNvbG9yLSN7JGF1dG9maWxsLWNvbG9yLWZyYW1lLWNvdW50fSBib3RoO1xuICB9XG5cbiAgJGF1dG9maWxsLWNvbG9yLWZyYW1lLWNvdW50OiAkYXV0b2ZpbGwtY29sb3ItZnJhbWUtY291bnQgKyAxICFnbG9iYWw7XG59XG5cbi8vIEBkZXByZWNhdGVkIFVzZSBgYXV0b3NpemVgIGFuZCBgYXV0b2ZpbGxgIGluc3RlYWQuXG5AbWl4aW4gdGV4dC1maWVsZCB7XG4gIEBpbmNsdWRlIHRleHQtZmllbGQtYXV0b3NpemUoKTtcbiAgQGluY2x1ZGUgdGV4dC1maWVsZC1hdXRvZmlsbCgpO1xufVxuIiwiQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnLi4vc3R5bGUvbGF5b3V0LWNvbW1vbic7XG5cbi8vLyBNaXhpbiB0aGF0IHR1cm5zIG9uIHN0cm9uZyBmb2N1cyBpbmRpY2F0b3JzLlxuLy8vXG4vLy8gQGV4YW1wbGVcbi8vLyAgIC5teS1hcHAge1xuLy8vICAgICBAaW5jbHVkZSBtYXQtc3Ryb25nLWZvY3VzLWluZGljYXRvcnMoJGNvbmZpZyk7XG4vLy8gICB9XG5AbWl4aW4gc3Ryb25nLWZvY3VzLWluZGljYXRvcnMoJGNvbmZpZzogKCkpIHtcbiAgLy8gRGVmYXVsdCBmb2N1cyBpbmRpY2F0b3IgY29uZmlnLlxuICAkZGVmYXVsdC1jb25maWc6IChcbiAgICBib3JkZXItc3R5bGU6IHNvbGlkLFxuICAgIGJvcmRlci13aWR0aDogM3B4LFxuICAgIGJvcmRlci1yYWRpdXM6IDRweCxcbiAgKTtcblxuICAvLyBNZXJnZSBkZWZhdWx0IGNvbmZpZyB3aXRoIHVzZXIgY29uZmlnLlxuICAkY29uZmlnOiBtYXAubWVyZ2UoJGRlZmF1bHQtY29uZmlnLCAkY29uZmlnKTtcbiAgJGJvcmRlci1zdHlsZTogbWFwLmdldCgkY29uZmlnLCBib3JkZXItc3R5bGUpO1xuICAkYm9yZGVyLXdpZHRoOiBtYXAuZ2V0KCRjb25maWcsIGJvcmRlci13aWR0aCk7XG4gICRib3JkZXItcmFkaXVzOiBtYXAuZ2V0KCRjb25maWcsIGJvcmRlci1yYWRpdXMpO1xuXG4gIC8vIEJhc2Ugc3R5bGVzIGZvciBmb2N1cyBpbmRpY2F0b3JzLlxuICAubWF0LWZvY3VzLWluZGljYXRvcjo6YmVmb3JlIHtcbiAgICBAaW5jbHVkZSBsYXlvdXQtY29tbW9uLmZpbGwoKTtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIGJvcmRlcjogJGJvcmRlci13aWR0aCAkYm9yZGVyLXN0eWxlIHRyYW5zcGFyZW50O1xuICAgIGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzO1xuICB9XG5cbiAgLy8gQnkgZGVmYXVsdCwgYWxsIGZvY3VzIGluZGljYXRvcnMgYXJlIGZsdXNoIHdpdGggdGhlIGJvdW5kaW5nIGJveCBvZiB0aGVpclxuICAvLyBob3N0IGVsZW1lbnQuIEZvciBwYXJ0aWN1bGFyIGVsZW1lbnRzIChsaXN0ZWQgYmVsb3cpLCBkZWZhdWx0IGluc2V0L29mZnNldFxuICAvLyB2YWx1ZXMgYXJlIG5lY2Vzc2FyeSB0byBlbnN1cmUgdGhhdCB0aGUgZm9jdXMgaW5kaWNhdG9yIGlzIHN1ZmZpY2llbnRseVxuICAvLyBjb250cmFzdGl2ZSBhbmQgcmVuZGVycyBhcHByb3ByaWF0ZWx5LlxuXG4gIC5tYXQtZm9jdXMtaW5kaWNhdG9yLm1hdC1mbGF0LWJ1dHRvbjo6YmVmb3JlLFxuICAubWF0LWZvY3VzLWluZGljYXRvci5tYXQtcmFpc2VkLWJ1dHRvbjo6YmVmb3JlLFxuICAubWF0LWZvY3VzLWluZGljYXRvci5tYXQtZmFiOjpiZWZvcmUsXG4gIC5tYXQtZm9jdXMtaW5kaWNhdG9yLm1hdC1taW5pLWZhYjo6YmVmb3JlLFxuICAubWF0LWZvY3VzLWluZGljYXRvci5tYXQtY2hpcDo6YmVmb3JlLFxuICAubWF0LWZvY3VzLWluZGljYXRvci5tYXQtc29ydC1oZWFkZXItY29udGFpbmVyOjpiZWZvcmUge1xuICAgIG1hcmdpbjogLSgkYm9yZGVyLXdpZHRoICsgMnB4KTtcbiAgfVxuXG4gIC5tYXQtZm9jdXMtaW5kaWNhdG9yLm1hdC1zdHJva2VkLWJ1dHRvbjo6YmVmb3JlLFxuICAubWF0LWZvY3VzLWluZGljYXRvci5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnQ6OmJlZm9yZSB7XG4gICAgbWFyZ2luOiAtKCRib3JkZXItd2lkdGggKyAzcHgpO1xuICB9XG5cbiAgLm1hdC1mb2N1cy1pbmRpY2F0b3IubWF0LXRhYi1saW5rOjpiZWZvcmUsXG4gIC5tYXQtZm9jdXMtaW5kaWNhdG9yLm1hdC10YWItbGFiZWw6OmJlZm9yZSB7XG4gICAgbWFyZ2luOiA1cHg7XG4gIH1cblxuICAvLyBSZW5kZXIgdGhlIGZvY3VzIGluZGljYXRvciBvbiBmb2N1cy4gRGVmaW5pbmcgYSBwc2V1ZG8gZWxlbWVudCdzXG4gIC8vIGNvbnRlbnQgd2lsbCBjYXVzZSBpdCB0byByZW5kZXIuXG5cbiAgLy8gQ2hlY2tib3hlcywgcmFkaW9zLCBhbmQgc2xpZGUgdG9nZ2xlcyByZW5kZXIgZm9jdXMgaW5kaWNhdG9ycyB3aGVuIHRoZVxuICAvLyBhc3NvY2lhdGVkIHZpc3VhbGx5LWhpZGRlbiBpbnB1dCBpcyBmb2N1c2VkLlxuICAubWF0LWNoZWNrYm94LWlucHV0OmZvY3VzIH4gLm1hdC1mb2N1cy1pbmRpY2F0b3I6OmJlZm9yZSxcbiAgLm1hdC1yYWRpby1pbnB1dDpmb2N1cyB+IC5tYXQtZm9jdXMtaW5kaWNhdG9yOjpiZWZvcmUsXG4gIC5tYXQtc2xpZGUtdG9nZ2xlLWlucHV0OmZvY3VzIH4gLm1hdC1zbGlkZS10b2dnbGUtdGh1bWItY29udGFpbmVyIC5tYXQtZm9jdXMtaW5kaWNhdG9yOjpiZWZvcmUsXG5cbiAgLy8gRm9yIG9wdGlvbnMsIHJlbmRlciB0aGUgZm9jdXMgaW5kaWNhdG9yIHdoZW4gdGhlIGNsYXNzIC5tYXQtYWN0aXZlXG4gIC8vIGlzIHByZXNlbnQuXG4gIC5tYXQtZm9jdXMtaW5kaWNhdG9yLm1hdC1vcHRpb24ubWF0LWFjdGl2ZTo6YmVmb3JlLFxuXG4gIC8vIEZvciBjYWxlbmRhciBjZWxscywgcmVuZGVyIHRoZSBmb2N1cyBpbmRpY2F0b3Igd2hlbiB0aGUgcGFyZW50IGNlbGwgaXNcbiAgLy8gZm9jdXNlZC5cbiAgLm1hdC1jYWxlbmRhci1ib2R5LWNlbGw6Zm9jdXMgLm1hdC1mb2N1cy1pbmRpY2F0b3I6OmJlZm9yZSxcblxuICAvLyBTdGVwcGVyIGhlYWRlcnMgaGF2ZSB0aGUgZm9jdXMgaW5kaWNhdG9yIGFzIGEgZGVzY2VuZGFudCxcbiAgLy8gYmVjYXVzZSBgOjpiZWZvcmVgIGlzIHVzZWQgZm9yIG90aGVyIHN0eWxpbmcuXG4gIC5tYXQtc3RlcC1oZWFkZXI6Zm9jdXMgLm1hdC1mb2N1cy1pbmRpY2F0b3I6OmJlZm9yZSxcblxuICAvLyBGb3IgYWxsIG90aGVyIGNvbXBvbmVudHMsIHJlbmRlciB0aGUgZm9jdXMgaW5kaWNhdG9yIG9uIGZvY3VzLlxuICAubWF0LWZvY3VzLWluZGljYXRvcjpmb2N1czo6YmVmb3JlIHtcbiAgICBjb250ZW50OiAnJztcbiAgfVxufVxuXG4vLyBNaXhpbiB0aGF0IGVuc3VyZXMgZm9jdXMgaW5kaWNhdG9yIGhvc3QgZWxlbWVudHMgYXJlIHBvc2l0aW9uZWQgc28gdGhhdCB0aGUgZm9jdXMgaW5kaWNhdG9yXG4vLyBwc2V1ZG8gZWxlbWVudCB3aXRoaW4gaXMgcG9zaXRpb25lZCByZWxhdGl2ZSB0byB0aGUgaG9zdC4gUHJpdmF0ZSBtaXhpbiBpbmNsdWRlZCB3aXRoaW5cbi8vIGBtYXQtY29yZWAuXG5AbWl4aW4gcHJpdmF0ZS1zdHJvbmctZm9jdXMtaW5kaWNhdG9ycy1wb3NpdGlvbmluZygpIHtcbiAgLm1hdC1mb2N1cy1pbmRpY2F0b3Ige1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgfVxufVxuIiwiQHVzZSAnLi4vLi4vY2RrL292ZXJsYXknO1xuQHVzZSAnLi4vLi4vY2RrL2ExMXknO1xuQHVzZSAnLi4vLi4vY2RrL3RleHQtZmllbGQnO1xuXG4vLyBDb3JlIHN0eWxlcyB0aGF0IGNhbiBiZSB1c2VkIHRvIGFwcGx5IG1hdGVyaWFsIGRlc2lnbiB0cmVhdG1lbnRzIHRvIGFueSBlbGVtZW50LlxuQHVzZSAnLi9yaXBwbGUvcmlwcGxlJztcbkB1c2UgJy4vZm9jdXMtaW5kaWNhdG9ycy9mb2N1cy1pbmRpY2F0b3JzJztcbkB1c2UgJy4vdHlwb2dyYXBoeS9hbGwtdHlwb2dyYXBoeSc7XG5cbi8vIE1peGluIHRoYXQgcmVuZGVycyBhbGwgb2YgdGhlIGNvcmUgc3R5bGVzIHRoYXQgYXJlIG5vdCB0aGVtZS1kZXBlbmRlbnQuXG5AbWl4aW4gY29yZSgkdHlwb2dyYXBoeS1jb25maWc6IG51bGwpIHtcbiAgQGluY2x1ZGUgYWxsLXR5cG9ncmFwaHkuYWxsLWNvbXBvbmVudC10eXBvZ3JhcGhpZXMoJHR5cG9ncmFwaHktY29uZmlnKTtcbiAgQGluY2x1ZGUgcmlwcGxlLnJpcHBsZSgpO1xuICBAaW5jbHVkZSBhMTF5LmExMXktdmlzdWFsbHktaGlkZGVuKCk7XG4gIEBpbmNsdWRlIG92ZXJsYXkub3ZlcmxheSgpO1xuICBAaW5jbHVkZSB0ZXh0LWZpZWxkLnRleHQtZmllbGQtYXV0b3NpemUoKTtcbiAgQGluY2x1ZGUgdGV4dC1maWVsZC50ZXh0LWZpZWxkLWF1dG9maWxsKCk7XG5cbiAgQGluY2x1ZGUgZm9jdXMtaW5kaWNhdG9ycy5wcml2YXRlLXN0cm9uZy1mb2N1cy1pbmRpY2F0b3JzLXBvc2l0aW9uaW5nKCk7XG4gIEBpbmNsdWRlIF9tZGMtY29yZSgpO1xufVxuXG4vLyBNaXhpbiB0aGF0IHJlbmRlcnMgYWxsIG9mIHRoZSBjb3JlIE1EQyBzdHlsZXMuIFByaXZhdGUgbWl4aW4gaW5jbHVkZWQgd2l0aCBgbWF0LWNvcmVgLlxuQG1peGluIF9tZGMtY29yZSgpIHtcbiAgQGluY2x1ZGUgX21kYy1zdHJvbmctZm9jdXMtaW5kaWNhdG9ycy1wb3NpdGlvbmluZygpO1xufVxuXG4vLyBNaXhpbiB0aGF0IGVuc3VyZXMgZm9jdXMgaW5kaWNhdG9yIGhvc3QgZWxlbWVudHMgYXJlIHBvc2l0aW9uZWQgc28gdGhhdCB0aGUgZm9jdXMgaW5kaWNhdG9yXG4vLyBwc2V1ZG8gZWxlbWVudCB3aXRoaW4gaXMgcG9zaXRpb25lZCByZWxhdGl2ZSB0byB0aGUgaG9zdC4gUHJpdmF0ZSBtaXhpbiBpbmNsdWRlZCB3aXRoaW5cbi8vIGBfbWF0LW1kYy1jb3JlYC5cbkBtaXhpbiBfbWRjLXN0cm9uZy1mb2N1cy1pbmRpY2F0b3JzLXBvc2l0aW9uaW5nKCkge1xuICAubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3Ige1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgfVxufVxuIiwiQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnc2FzczptZXRhJztcbkB1c2UgJy4uL3RoZW1pbmcvdGhlbWluZyc7XG5cbi8vIENvbG9ycyBmb3IgdGhlIHJpcHBsZSBlbGVtZW50cy5cbkBtaXhpbiBjb2xvcigkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJGZvcmVncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgZm9yZWdyb3VuZCk7XG4gICRmb3JlZ3JvdW5kLWJhc2U6IG1hcC5nZXQoJGZvcmVncm91bmQsIGJhc2UpO1xuICAkY29sb3Itb3BhY2l0eTogMC4xO1xuXG4gIC5tYXQtcmlwcGxlLWVsZW1lbnQge1xuICAgIC8vIElmIHRoZSByaXBwbGUgY29sb3IgaXMgcmVzb2x2ZXMgdG8gYSBjb2xvciAqdHlwZSosIHdlIGNhbiB1c2UgaXQgZGlyZWN0bHksIG90aGVyd2lzZVxuICAgIC8vIChlLmcuIGl0IHJlc29sdmVzIHRvIGEgQ1NTIHZhcmlhYmxlKSB3ZSBmYWxsIGJhY2sgdG8gdXNpbmcgdGhlIGNvbG9yIGFuZCBzZXR0aW5nIGFuIG9wYWNpdHkuXG4gICAgQGlmIChtZXRhLnR5cGUtb2YoJGZvcmVncm91bmQtYmFzZSkgPT0gY29sb3IpIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoJGZvcmVncm91bmQtYmFzZSwgJGNvbG9yLW9wYWNpdHkpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZm9yZWdyb3VuZC1iYXNlO1xuICAgICAgb3BhY2l0eTogJGNvbG9yLW9wYWNpdHk7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiB0aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKSB7XG4gICR0aGVtZTogdGhlbWluZy5wcml2YXRlLWxlZ2FjeS1nZXQtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZyk7XG4gIEBpbmNsdWRlIHRoZW1pbmcucHJpdmF0ZS1jaGVjay1kdXBsaWNhdGUtdGhlbWUtc3R5bGVzKCR0aGVtZSwgJ21hdC1yaXBwbGUnKSB7XG4gICAgJGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJHRoZW1lKTtcbiAgICBAaWYgJGNvbG9yICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gIH1cbn1cbiIsIkB1c2UgJ3Nhc3M6bWFwJztcbkB1c2UgJy4uLy4uL3RoZW1pbmcvdGhlbWluZyc7XG5cbkBtaXhpbiBjb2xvcigkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJGlzLWRhcmstdGhlbWU6IG1hcC5nZXQoJGNvbmZpZywgaXMtZGFyayk7XG4gICRwcmltYXJ5OiBtYXAuZ2V0KCRjb25maWcsIHByaW1hcnkpO1xuICAkYWNjZW50OiBtYXAuZ2V0KCRjb25maWcsIGFjY2VudCk7XG4gICR3YXJuOiBtYXAuZ2V0KCRjb25maWcsIHdhcm4pO1xuICAkYmFja2dyb3VuZDogbWFwLmdldCgkY29uZmlnLCBiYWNrZ3JvdW5kKTtcblxuICAvLyBOT1RFKHRyYXZpc2thdWZtYW4pOiBXaGlsZSB0aGUgc3BlYyBjYWxscyBmb3IgdHJhbnNsdWNlbnQgYmxhY2tzL3doaXRlcyBmb3IgZGlzYWJsZWQgY29sb3JzLFxuICAvLyB0aGlzIGRvZXMgbm90IHdvcmsgd2VsbCB3aXRoIGVsZW1lbnRzIGxheWVyZWQgb24gdG9wIG9mIG9uZSBhbm90aGVyLiBUbyBnZXQgYXJvdW5kIHRoaXMgd2VcbiAgLy8gYmxlbmQgdGhlIGNvbG9ycyB0b2dldGhlciBiYXNlZCBvbiB0aGUgYmFzZSBjb2xvciBhbmQgdGhlIHRoZW1lIGJhY2tncm91bmQuXG4gICR3aGl0ZS0zMHBjdC1vcGFjaXR5LW9uLWRhcms6ICM2ODY4Njg7XG4gICRibGFjay0yNnBjdC1vcGFjaXR5LW9uLWxpZ2h0OiAjYjBiMGIwO1xuICAkZGlzYWJsZWQtY29sb3I6IGlmKCRpcy1kYXJrLXRoZW1lLCAkd2hpdGUtMzBwY3Qtb3BhY2l0eS1vbi1kYXJrLCAkYmxhY2stMjZwY3Qtb3BhY2l0eS1vbi1saWdodCk7XG4gICRjb2xvcmVkLWJveC1zZWxlY3RvcjogJy5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWQsIC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGUnO1xuXG4gIC5tYXQtcHNldWRvLWNoZWNrYm94IHtcbiAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKG1hcC5nZXQoJGNvbmZpZywgZm9yZWdyb3VuZCksIHNlY29uZGFyeS10ZXh0KTtcblxuICAgICY6OmFmdGVyIHtcbiAgICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGJhY2tncm91bmQsIGJhY2tncm91bmQpO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtcHNldWRvLWNoZWNrYm94LWRpc2FibGVkIHtcbiAgICBjb2xvcjogJGRpc2FibGVkLWNvbG9yO1xuICB9XG5cbiAgLm1hdC1wcmltYXJ5IC5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWQsXG4gIC5tYXQtcHJpbWFyeSAubWF0LXBzZXVkby1jaGVja2JveC1pbmRldGVybWluYXRlIHtcbiAgICBiYWNrZ3JvdW5kOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUobWFwLmdldCgkY29uZmlnLCBwcmltYXJ5KSk7XG4gIH1cblxuICAvLyBEZWZhdWx0IHRvIHRoZSBhY2NlbnQgY29sb3IuIE5vdGUgdGhhdCB0aGUgcHNldWRvIGNoZWNrYm94ZXMgYXJlIG1lYW50IHRvIGluaGVyaXQgdGhlXG4gIC8vIHRoZW1lIGZyb20gdGhlaXIgcGFyZW50LCByYXRoZXIgdGhhbiBpbXBsZW1lbnRpbmcgdGhlaXIgb3duIHRoZW1pbmcsIHdoaWNoIGlzIHdoeSB3ZVxuICAvLyBkb24ndCBhdHRhY2ggdG8gdGhlIGBtYXQtKmAgY2xhc3Nlcy4gQWxzbyBub3RlIHRoYXQgdGhpcyBuZWVkcyB0byBiZSBiZWxvdyBgLm1hdC1wcmltYXJ5YFxuICAvLyBpbiBvcmRlciB0byBhbGxvdyBmb3IgdGhlIGNvbG9yIHRvIGJlIG92ZXJ3cml0dGVuIGlmIHRoZSBjaGVja2JveCBpcyBpbnNpZGUgYSBwYXJlbnQgdGhhdFxuICAvLyBoYXMgYG1hdC1hY2NlbnRgIGFuZCBpcyBwbGFjZWQgaW5zaWRlIGFub3RoZXIgcGFyZW50IHRoYXQgaGFzIGBtYXQtcHJpbWFyeWAuXG4gIC5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWQsXG4gIC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGUsXG4gIC5tYXQtYWNjZW50IC5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWQsXG4gIC5tYXQtYWNjZW50IC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGUge1xuICAgIGJhY2tncm91bmQ6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZShtYXAuZ2V0KCRjb25maWcsIGFjY2VudCkpO1xuICB9XG5cbiAgLm1hdC13YXJuIC5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWQsXG4gIC5tYXQtd2FybiAubWF0LXBzZXVkby1jaGVja2JveC1pbmRldGVybWluYXRlIHtcbiAgICBiYWNrZ3JvdW5kOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUobWFwLmdldCgkY29uZmlnLCB3YXJuKSk7XG4gIH1cblxuICAubWF0LXBzZXVkby1jaGVja2JveC1jaGVja2VkLFxuICAubWF0LXBzZXVkby1jaGVja2JveC1pbmRldGVybWluYXRlIHtcbiAgICAmLm1hdC1wc2V1ZG8tY2hlY2tib3gtZGlzYWJsZWQge1xuICAgICAgYmFja2dyb3VuZDogJGRpc2FibGVkLWNvbG9yO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gdHlwb2dyYXBoeSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gX2RlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIHRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiB0aGVtaW5nLnByaXZhdGUtbGVnYWN5LWdldC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgQGluY2x1ZGUgdGhlbWluZy5wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LXBzZXVkby1jaGVja2JveCcpIHtcbiAgICAkY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkdGhlbWUpO1xuICAgICRkZW5zaXR5OiB0aGVtaW5nLmdldC1kZW5zaXR5LWNvbmZpZygkdGhlbWUpO1xuICAgICR0eXBvZ3JhcGh5OiB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkdGhlbWUpO1xuXG4gICAgQGlmICRjb2xvciAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIGNvbG9yKCRjb2xvcik7XG4gICAgfVxuICAgIEBpZiAkZGVuc2l0eSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIF9kZW5zaXR5KCRkZW5zaXR5KTtcbiAgICB9XG4gICAgQGlmICR0eXBvZ3JhcGh5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgdHlwb2dyYXBoeSgkdHlwb2dyYXBoeSk7XG4gICAgfVxuICB9XG59XG4iLCJAdXNlICdzYXNzOm1hcCc7XG5AdXNlICd0aGVtaW5nL3RoZW1pbmcnO1xuQHVzZSAnLi9zdHlsZS9wcml2YXRlJztcbkB1c2UgJy4vcmlwcGxlL3JpcHBsZS10aGVtZSc7XG5AdXNlICcuL29wdGlvbi9vcHRpb24tdGhlbWUnO1xuQHVzZSAnLi9vcHRpb24vb3B0Z3JvdXAtdGhlbWUnO1xuQHVzZSAnLi9zZWxlY3Rpb24vcHNldWRvLWNoZWNrYm94L3BzZXVkby1jaGVja2JveC10aGVtZSc7XG5AdXNlICcuL3N0eWxlL2VsZXZhdGlvbic7XG5cblxuQG1peGluIGNvbG9yKCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAvLyBXcmFwcGVyIGVsZW1lbnQgdGhhdCBwcm92aWRlcyB0aGUgdGhlbWUgYmFja2dyb3VuZCB3aGVuIHRoZSB1c2VyJ3MgY29udGVudCBpc24ndFxuICAvLyBpbnNpZGUgb2YgYSBgbWF0LXNpZGVuYXYtY29udGFpbmVyYC4gTm90ZSB0aGF0IHdlIG5lZWQgdG8gZXhjbHVkZSB0aGUgYW1wZXJzYW5kXG4gIC8vIHNlbGVjdG9yIGluIGNhc2UgdGhlIG1peGluIGlzIGluY2x1ZGVkIGF0IHRoZSB0b3AgbGV2ZWwuXG4gIC5tYXQtYXBwLWJhY2tncm91bmQje2lmKCYsICcsICYubWF0LWFwcC1iYWNrZ3JvdW5kJywgJycpfSB7XG4gICAgJGJhY2tncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgYmFja2dyb3VuZCk7XG4gICAgJGZvcmVncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgZm9yZWdyb3VuZCk7XG5cbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGJhY2tncm91bmQsIGJhY2tncm91bmQpO1xuICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIHRleHQpO1xuICB9XG5cbiAgLy8gUHJvdmlkZXMgZXh0ZXJuYWwgQ1NTIGNsYXNzZXMgZm9yIGVhY2ggZWxldmF0aW9uIHZhbHVlLiBFYWNoIENTUyBjbGFzcyBpcyBmb3JtYXR0ZWQgYXNcbiAgLy8gYG1hdC1lbGV2YXRpb24teiR6VmFsdWVgIHdoZXJlIGAkelZhbHVlYCBjb3JyZXNwb25kcyB0byB0aGUgei1zcGFjZSB0byB3aGljaCB0aGUgZWxlbWVudCBpc1xuICAvLyBlbGV2YXRlZC5cbiAgQGZvciAkelZhbHVlIGZyb20gMCB0aHJvdWdoIDI0IHtcbiAgICAuI3tlbGV2YXRpb24uJHByZWZpeH0jeyR6VmFsdWV9IHtcbiAgICAgIEBpbmNsdWRlIHByaXZhdGUucHJpdmF0ZS10aGVtZS1lbGV2YXRpb24oJHpWYWx1ZSwgJGNvbmZpZyk7XG4gICAgfVxuICB9XG5cbiAgLy8gTWFya2VyIHRoYXQgaXMgdXNlZCB0byBkZXRlcm1pbmUgd2hldGhlciB0aGUgdXNlciBoYXMgYWRkZWQgYSB0aGVtZSB0byB0aGVpciBwYWdlLlxuICBAYXQtcm9vdCB7XG4gICAgLm1hdC10aGVtZS1sb2FkZWQtbWFya2VyIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICB9XG59XG5cbi8vIE1peGluIHRoYXQgcmVuZGVycyBhbGwgb2YgdGhlIGNvcmUgc3R5bGVzIHRoYXQgZGVwZW5kIG9uIHRoZSB0aGVtZS5cbkBtaXhpbiB0aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKSB7XG4gICR0aGVtZTogdGhlbWluZy5wcml2YXRlLWxlZ2FjeS1nZXQtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZyk7XG4gIC8vIFdyYXAgdGhlIHN1Yi10aGVtZSBpbmNsdWRlcyBpbiB0aGUgZHVwbGljYXRlIHRoZW1lIHN0eWxlcyBtaXhpbi4gVGhpcyBlbnN1cmVzIHRoYXRcbiAgLy8gdGhlcmUgd29uJ3QgYmUgbXVsdGlwbGUgd2FybmluZ3MuIGUuZy4gaWYgYG1hdC1jb3JlLXRoZW1lYCByZXBvcnRzIGEgd2FybmluZywgdGhlblxuICAvLyB0aGUgaW1wb3J0ZWQgdGhlbWVzIChzdWNoIGFzIGBtYXQtcmlwcGxlLXRoZW1lYCkgc2hvdWxkIG5vdCByZXBvcnQgYWdhaW4uXG4gIEBpbmNsdWRlIHRoZW1pbmcucHJpdmF0ZS1jaGVjay1kdXBsaWNhdGUtdGhlbWUtc3R5bGVzKCR0aGVtZSwgJ21hdC1jb3JlJykge1xuICAgIEBpbmNsdWRlIHJpcHBsZS10aGVtZS50aGVtZSgkdGhlbWUpO1xuICAgIEBpbmNsdWRlIG9wdGlvbi10aGVtZS50aGVtZSgkdGhlbWUpO1xuICAgIEBpbmNsdWRlIG9wdGdyb3VwLXRoZW1lLnRoZW1lKCR0aGVtZSk7XG4gICAgQGluY2x1ZGUgcHNldWRvLWNoZWNrYm94LXRoZW1lLnRoZW1lKCR0aGVtZSk7XG5cbiAgICAkY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkdGhlbWUpO1xuICAgIEBpZiAkY29sb3IgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBjb2xvcigkY29sb3IpO1xuICAgIH1cbiAgfVxufVxuIiwiQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnc2FzczptYXRoJztcbkB1c2UgJ3Nhc3M6bWV0YSc7XG5AdXNlICd2YXJpYWJsZXMnO1xuXG5cbi8vIEEgY29sbGVjdGlvbiBvZiBtaXhpbnMgYW5kIENTUyBjbGFzc2VzIHRoYXQgY2FuIGJlIHVzZWQgdG8gYXBwbHkgZWxldmF0aW9uIHRvIGEgbWF0ZXJpYWxcbi8vIGVsZW1lbnQuXG4vLyBTZWU6IGh0dHBzOi8vbWF0ZXJpYWwuaW8vZGVzaWduL2Vudmlyb25tZW50L2VsZXZhdGlvbi5odG1sXG4vLyBFeGFtcGxlczpcbi8vXG4vL1xuLy8gLm1hdC1mb28ge1xuLy8gICBAaW5jbHVkZSAkbWF0LWVsZXZhdGlvbigyKTtcbi8vXG4vLyAgICY6YWN0aXZlIHtcbi8vICAgICBAaW5jbHVkZSAkbWF0LWVsZXZhdGlvbig4KTtcbi8vICAgfVxuLy8gfVxuLy9cbi8vIDxkaXYgaWQ9XCJleHRlcm5hbC1jYXJkXCIgY2xhc3M9XCJtYXQtZWxldmF0aW9uLXoyXCI+PHA+U29tZSBjb250ZW50PC9wPjwvZGl2PlxuLy9cbi8vIEZvciBhbiBleHBsYW5hdGlvbiBvZiB0aGUgZGVzaWduIGJlaGluZCBob3cgZWxldmF0aW9uIGlzIGltcGxlbWVudGVkLCBzZWUgdGhlIGRlc2lnbiBkb2MgYXRcbi8vIGh0dHBzOi8vZ29vLmdsL0txMGs5Wi5cblxuLy8gQ29sb3JzIGZvciB1bWJyYSwgcGVudW1icmEsIGFuZCBhbWJpZW50IHNoYWRvd3MuIEFzIGRlc2NyaWJlZCBpbiB0aGUgZGVzaWduIGRvYywgZWFjaCBlbGV2YXRpb25cbi8vIGxldmVsIGlzIGNyZWF0ZWQgdXNpbmcgYSBzZXQgb2YgMyBzaGFkb3cgdmFsdWVzLCBvbmUgZm9yIHVtYnJhICh0aGUgc2hhZG93IHJlcHJlc2VudGluZyB0aGVcbi8vIHNwYWNlIGNvbXBsZXRlbHkgb2JzY3VyZWQgYnkgYW4gb2JqZWN0IHJlbGF0aXZlIHRvIGl0cyBsaWdodCBzb3VyY2UpLCBvbmUgZm9yIHBlbnVtYnJhICh0aGVcbi8vIHNwYWNlIHBhcnRpYWxseSBvYnNjdXJlZCBieSBhbiBvYmplY3QpLCBhbmQgb25lIGZvciBhbWJpZW50ICh0aGUgc3BhY2Ugd2hpY2ggY29udGFpbnMgdGhlIG9iamVjdFxuLy8gaXRzZWxmKS4gRm9yIGEgZnVydGhlciBleHBsYW5hdGlvbiBvZiB0aGVzZSB0ZXJtcyBhbmQgdGhlaXIgbWVhbmluZ3MsIHNlZVxuLy8gaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVW1icmEsX3BlbnVtYnJhX2FuZF9hbnR1bWJyYS5cblxuLy8gTWFwcyBmb3IgdGhlIGRpZmZlcmVudCBzaGFkb3cgc2V0cyBhbmQgdGhlaXIgdmFsdWVzIHdpdGhpbiBlYWNoIHotc3BhY2UuIFRoZXNlIHZhbHVlcyB3ZXJlXG4vLyBjcmVhdGVkIGJ5IHRha2luZyBhIGZldyByZWZlcmVuY2Ugc2hhZG93IHNldHMgY3JlYXRlZCBieSBHb29nbGUncyBEZXNpZ25lcnMgYW5kIGludGVycG9sYXRpbmdcbi8vIGFsbCBvZiB0aGUgdmFsdWVzIGJldHdlZW4gdGhlbS5cblxuQGZ1bmN0aW9uIF9nZXQtdW1icmEtbWFwKCRjb2xvciwgJG9wYWNpdHkpIHtcbiAgJHNoYWRvdy1jb2xvcjogaWYobWV0YS50eXBlLW9mKCRjb2xvcikgPT0gY29sb3IsIHJnYmEoJGNvbG9yLCAkb3BhY2l0eSAqIDAuMiksICRjb2xvcik7XG5cbiAgQHJldHVybiAoXG4gICAgMDogJzBweCAwcHggMHB4IDBweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAxOiAnMHB4IDJweCAxcHggLTFweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAyOiAnMHB4IDNweCAxcHggLTJweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAzOiAnMHB4IDNweCAzcHggLTJweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICA0OiAnMHB4IDJweCA0cHggLTFweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICA1OiAnMHB4IDNweCA1cHggLTFweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICA2OiAnMHB4IDNweCA1cHggLTFweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICA3OiAnMHB4IDRweCA1cHggLTJweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICA4OiAnMHB4IDVweCA1cHggLTNweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICA5OiAnMHB4IDVweCA2cHggLTNweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAxMDogJzBweCA2cHggNnB4IC0zcHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMTE6ICcwcHggNnB4IDdweCAtNHB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDEyOiAnMHB4IDdweCA4cHggLTRweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAxMzogJzBweCA3cHggOHB4IC00cHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMTQ6ICcwcHggN3B4IDlweCAtNHB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDE1OiAnMHB4IDhweCA5cHggLTVweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAxNjogJzBweCA4cHggMTBweCAtNXB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDE3OiAnMHB4IDhweCAxMXB4IC01cHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMTg6ICcwcHggOXB4IDExcHggLTVweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAxOTogJzBweCA5cHggMTJweCAtNnB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDIwOiAnMHB4IDEwcHggMTNweCAtNnB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDIxOiAnMHB4IDEwcHggMTNweCAtNnB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDIyOiAnMHB4IDEwcHggMTRweCAtNnB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDIzOiAnMHB4IDExcHggMTRweCAtN3B4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDI0OiAnMHB4IDExcHggMTVweCAtN3B4ICN7JHNoYWRvdy1jb2xvcn0nXG4gICk7XG59XG5cbkBmdW5jdGlvbiBfZ2V0LXBlbnVtYnJhLW1hcCgkY29sb3IsICRvcGFjaXR5KSB7XG4gICRzaGFkb3ctY29sb3I6IGlmKG1ldGEudHlwZS1vZigkY29sb3IpID09IGNvbG9yLCByZ2JhKCRjb2xvciwgJG9wYWNpdHkgKiAwLjE0KSwgJGNvbG9yKTtcblxuICBAcmV0dXJuIChcbiAgICAwOiAnMHB4IDBweCAwcHggMHB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDE6ICcwcHggMXB4IDFweCAwcHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMjogJzBweCAycHggMnB4IDBweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAzOiAnMHB4IDNweCA0cHggMHB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDQ6ICcwcHggNHB4IDVweCAwcHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgNTogJzBweCA1cHggOHB4IDBweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICA2OiAnMHB4IDZweCAxMHB4IDBweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICA3OiAnMHB4IDdweCAxMHB4IDFweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICA4OiAnMHB4IDhweCAxMHB4IDFweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICA5OiAnMHB4IDlweCAxMnB4IDFweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAxMDogJzBweCAxMHB4IDE0cHggMXB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDExOiAnMHB4IDExcHggMTVweCAxcHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMTI6ICcwcHggMTJweCAxN3B4IDJweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAxMzogJzBweCAxM3B4IDE5cHggMnB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDE0OiAnMHB4IDE0cHggMjFweCAycHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMTU6ICcwcHggMTVweCAyMnB4IDJweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAxNjogJzBweCAxNnB4IDI0cHggMnB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDE3OiAnMHB4IDE3cHggMjZweCAycHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMTg6ICcwcHggMThweCAyOHB4IDJweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAxOTogJzBweCAxOXB4IDI5cHggMnB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDIwOiAnMHB4IDIwcHggMzFweCAzcHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMjE6ICcwcHggMjFweCAzM3B4IDNweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAyMjogJzBweCAyMnB4IDM1cHggM3B4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDIzOiAnMHB4IDIzcHggMzZweCAzcHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMjQ6ICcwcHggMjRweCAzOHB4IDNweCAjeyRzaGFkb3ctY29sb3J9J1xuICApO1xufVxuXG5AZnVuY3Rpb24gX2dldC1hbWJpZW50LW1hcCgkY29sb3IsICRvcGFjaXR5KSB7XG4gICRzaGFkb3ctY29sb3I6IGlmKG1ldGEudHlwZS1vZigkY29sb3IpID09IGNvbG9yLCByZ2JhKCRjb2xvciwgJG9wYWNpdHkgKiAwLjEyKSwgJGNvbG9yKTtcblxuICBAcmV0dXJuIChcbiAgICAwOiAnMHB4IDBweCAwcHggMHB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDE6ICcwcHggMXB4IDNweCAwcHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMjogJzBweCAxcHggNXB4IDBweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAzOiAnMHB4IDFweCA4cHggMHB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDQ6ICcwcHggMXB4IDEwcHggMHB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDU6ICcwcHggMXB4IDE0cHggMHB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDY6ICcwcHggMXB4IDE4cHggMHB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDc6ICcwcHggMnB4IDE2cHggMXB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDg6ICcwcHggM3B4IDE0cHggMnB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDk6ICcwcHggM3B4IDE2cHggMnB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDEwOiAnMHB4IDRweCAxOHB4IDNweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAxMTogJzBweCA0cHggMjBweCAzcHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMTI6ICcwcHggNXB4IDIycHggNHB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDEzOiAnMHB4IDVweCAyNHB4IDRweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAxNDogJzBweCA1cHggMjZweCA0cHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMTU6ICcwcHggNnB4IDI4cHggNXB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDE2OiAnMHB4IDZweCAzMHB4IDVweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAxNzogJzBweCA2cHggMzJweCA1cHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMTg6ICcwcHggN3B4IDM0cHggNnB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDE5OiAnMHB4IDdweCAzNnB4IDZweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAyMDogJzBweCA4cHggMzhweCA3cHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMjE6ICcwcHggOHB4IDQwcHggN3B4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDIyOiAnMHB4IDhweCA0MnB4IDdweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAyMzogJzBweCA5cHggNDRweCA4cHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMjQ6ICcwcHggOXB4IDQ2cHggOHB4ICN7JHNoYWRvdy1jb2xvcn0nXG4gICk7XG59XG5cbi8vIFRoZSBkZWZhdWx0IGR1cmF0aW9uIHZhbHVlIGZvciBlbGV2YXRpb24gdHJhbnNpdGlvbnMuXG4kdHJhbnNpdGlvbi1kdXJhdGlvbjogMjgwbXMgIWRlZmF1bHQ7XG5cbi8vIFRoZSBkZWZhdWx0IGVhc2luZyB2YWx1ZSBmb3IgZWxldmF0aW9uIHRyYW5zaXRpb25zLlxuJHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiB2YXJpYWJsZXMuJGZhc3Qtb3V0LXNsb3ctaW4tdGltaW5nLWZ1bmN0aW9uO1xuXG4vLyBUaGUgZGVmYXVsdCBjb2xvciBmb3IgZWxldmF0aW9uIHNoYWRvd3MuXG4kY29sb3I6IGJsYWNrICFkZWZhdWx0O1xuXG4vLyBUaGUgZGVmYXVsdCBvcGFjaXR5IHNjYWxpbmcgdmFsdWUgZm9yIGVsZXZhdGlvbiBzaGFkb3dzLlxuJG9wYWNpdHk6IDEgIWRlZmF1bHQ7XG5cbi8vIFByZWZpeCBmb3IgZWxldmF0aW9uLXJlbGF0ZWQgc2VsZWN0b3JzLlxuJHByZWZpeDogJ21hdC1lbGV2YXRpb24teic7XG5cbi8vIEFwcGxpZXMgdGhlIGNvcnJlY3QgY3NzIHJ1bGVzIHRvIGFuIGVsZW1lbnQgdG8gZ2l2ZSBpdCB0aGUgZWxldmF0aW9uIHNwZWNpZmllZCBieSAkelZhbHVlLlxuLy8gVGhlICR6VmFsdWUgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDI0LlxuQG1peGluIGVsZXZhdGlvbigkelZhbHVlLCAkY29sb3I6ICRjb2xvciwgJG9wYWNpdHk6ICRvcGFjaXR5KSB7XG4gIEBpZiBtZXRhLnR5cGUtb2YoJHpWYWx1ZSkgIT0gbnVtYmVyIG9yIG5vdCBtYXRoLmlzLXVuaXRsZXNzKCR6VmFsdWUpIHtcbiAgICBAZXJyb3IgJyR6VmFsdWUgbXVzdCBiZSBhIHVuaXRsZXNzIG51bWJlcic7XG4gIH1cbiAgQGlmICR6VmFsdWUgPCAwIG9yICR6VmFsdWUgPiAyNCB7XG4gICAgQGVycm9yICckelZhbHVlIG11c3QgYmUgYmV0d2VlbiAwIGFuZCAyNCc7XG4gIH1cblxuICBib3gtc2hhZG93OiAje21hcC5nZXQoX2dldC11bWJyYS1tYXAoJGNvbG9yLCAkb3BhY2l0eSksICR6VmFsdWUpfSxcbiAgICAgICAgICAgICAgI3ttYXAuZ2V0KF9nZXQtcGVudW1icmEtbWFwKCRjb2xvciwgJG9wYWNpdHkpLCAkelZhbHVlKX0sXG4gICAgICAgICAgICAgICN7bWFwLmdldChfZ2V0LWFtYmllbnQtbWFwKCRjb2xvciwgJG9wYWNpdHkpLCAkelZhbHVlKX07XG59XG5cbi8vIEFwcGxpZXMgdGhlIGVsZXZhdGlvbiB0byBhbiBlbGVtZW50IGluIGEgbWFubmVyIHRoYXQgYWxsb3dzXG4vLyBjb25zdW1lcnMgdG8gb3ZlcnJpZGUgaXQgdmlhIHRoZSBNYXRlcmlhbCBlbGV2YXRpb24gY2xhc3Nlcy5cbkBtaXhpbiBvdmVycmlkYWJsZS1lbGV2YXRpb24oXG4gICAgJHpWYWx1ZSxcbiAgICAkY29sb3I6ICRjb2xvcixcbiAgICAkb3BhY2l0eTogJG9wYWNpdHkpIHtcbiAgJjpub3QoW2NsYXNzKj0nI3skcHJlZml4fSddKSB7XG4gICAgQGluY2x1ZGUgZWxldmF0aW9uKCR6VmFsdWUsICRjb2xvciwgJG9wYWNpdHkpO1xuICB9XG59XG5cbi8vIFJldHVybnMgYSBzdHJpbmcgdGhhdCBjYW4gYmUgdXNlZCBhcyB0aGUgdmFsdWUgZm9yIGEgdHJhbnNpdGlvbiBwcm9wZXJ0eSBmb3IgZWxldmF0aW9uLlxuLy8gQ2FsbGluZyB0aGlzIGZ1bmN0aW9uIGRpcmVjdGx5IGlzIHVzZWZ1bCBpbiBzaXR1YXRpb25zIHdoZXJlIGEgY29tcG9uZW50IG5lZWRzIHRvIHRyYW5zaXRpb25cbi8vIG1vcmUgdGhhbiBvbmUgcHJvcGVydHkuXG4vL1xuLy8gLmZvbyB7XG4vLyAgIHRyYW5zaXRpb246IG1hdC1lbGV2YXRpb24tdHJhbnNpdGlvbi1wcm9wZXJ0eS12YWx1ZSgpLCBvcGFjaXR5IDEwMG1zIGVhc2U7XG4vLyB9XG5AZnVuY3Rpb24gcHJpdmF0ZS10cmFuc2l0aW9uLXByb3BlcnR5LXZhbHVlKFxuICAgICRkdXJhdGlvbjogJHRyYW5zaXRpb24tZHVyYXRpb24sXG4gICAgJGVhc2luZzogJHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uKSB7XG4gIEByZXR1cm4gYm94LXNoYWRvdyAjeyRkdXJhdGlvbn0gI3skZWFzaW5nfTtcbn1cblxuLy8gQXBwbGllcyB0aGUgY29ycmVjdCBjc3MgcnVsZXMgbmVlZGVkIHRvIGhhdmUgYW4gZWxlbWVudCB0cmFuc2l0aW9uIGJldHdlZW4gZWxldmF0aW9ucy5cbi8vIFRoaXMgbWl4aW4gc2hvdWxkIGJlIGFwcGxpZWQgdG8gZWxlbWVudHMgd2hvc2UgZWxldmF0aW9uIHZhbHVlcyB3aWxsIGNoYW5nZSBkZXBlbmRpbmcgb24gdGhlaXJcbi8vIGNvbnRleHQgKGUuZy4gd2hlbiBhY3RpdmUgb3IgZGlzYWJsZWQpLlxuLy9cbi8vIE5PVEUodHJhdmlza2F1Zm1hbik6IEJvdGggdGhpcyBtaXhpbiBhbmQgdGhlIGFib3ZlIGZ1bmN0aW9uIHVzZSBkZWZhdWx0IHBhcmFtZXRlcnMgc28gdGhleSBjYW5cbi8vIGJlIHVzZWQgaW4gdGhlIHNhbWUgd2F5IGJ5IGNsaWVudHMuXG5AbWl4aW4gZWxldmF0aW9uLXRyYW5zaXRpb24oXG4gICAgJGR1cmF0aW9uOiAkdHJhbnNpdGlvbi1kdXJhdGlvbixcbiAgICAkZWFzaW5nOiAkdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24pIHtcbiAgdHJhbnNpdGlvbjogcHJpdmF0ZS10cmFuc2l0aW9uLXByb3BlcnR5LXZhbHVlKCRkdXJhdGlvbiwgJGVhc2luZyk7XG59XG4iLCJAdXNlICdzYXNzOm1hcCc7XG5AdXNlICcuLi9jb3JlL3N0eWxlL3ByaXZhdGUnO1xuQHVzZSAnLi4vY29yZS90aGVtaW5nL3RoZW1pbmcnO1xuXG5AbWl4aW4gY29sb3IoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRmb3JlZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGZvcmVncm91bmQpO1xuICAkYmFja2dyb3VuZDogbWFwLmdldCgkY29uZmlnLCBiYWNrZ3JvdW5kKTtcblxuICAubWF0LWF1dG9jb21wbGV0ZS1wYW5lbCB7XG4gICAgQGluY2x1ZGUgcHJpdmF0ZS5wcml2YXRlLXRoZW1lLW92ZXJyaWRhYmxlLWVsZXZhdGlvbig0LCAkY29uZmlnKTtcbiAgICBiYWNrZ3JvdW5kOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGJhY2tncm91bmQsIGNhcmQpO1xuICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIHRleHQpO1xuXG4gICAgLy8gU2VsZWN0ZWQgb3B0aW9ucyBpbiBhdXRvY29tcGxldGVzIHNob3VsZCBub3QgYmUgZ3JheSwgYnV0IHdlXG4gICAgLy8gb25seSB3YW50IHRvIG92ZXJyaWRlIHRoZSBiYWNrZ3JvdW5kIGZvciBzZWxlY3RlZCBvcHRpb25zIGlmXG4gICAgLy8gdGhleSBhcmUgKm5vdCogaW4gaG92ZXIgb3IgZm9jdXMgc3RhdGUuIFRoaXMgY2hhbmdlIGhhcyB0byBiZVxuICAgIC8vIG1hZGUgaGVyZSBiZWNhdXNlIGJhc2Ugb3B0aW9uIHN0eWxlcyBhcmUgc2hhcmVkIGJldHdlZW4gdGhlXG4gICAgLy8gYXV0b2NvbXBsZXRlIGFuZCB0aGUgc2VsZWN0LlxuICAgIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZDpub3QoLm1hdC1hY3RpdmUpOm5vdCg6aG92ZXIpIHtcbiAgICAgIGJhY2tncm91bmQ6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYmFja2dyb3VuZCwgY2FyZCk7XG5cbiAgICAgICY6bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKSB7XG4gICAgICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIHRleHQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gdHlwb2dyYXBoeSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gX2RlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIHRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiB0aGVtaW5nLnByaXZhdGUtbGVnYWN5LWdldC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgQGluY2x1ZGUgdGhlbWluZy5wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LWF1dG9jb21wbGV0ZScpIHtcbiAgICAkY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkdGhlbWUpO1xuICAgICRkZW5zaXR5OiB0aGVtaW5nLmdldC1kZW5zaXR5LWNvbmZpZygkdGhlbWUpO1xuICAgICR0eXBvZ3JhcGh5OiB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkdGhlbWUpO1xuXG4gICAgQGlmICRjb2xvciAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIGNvbG9yKCRjb2xvcik7XG4gICAgfVxuICAgIEBpZiAkZGVuc2l0eSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIF9kZW5zaXR5KCRkZW5zaXR5KTtcbiAgICB9XG4gICAgQGlmICR0eXBvZ3JhcGh5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgdHlwb2dyYXBoeSgkdHlwb2dyYXBoeSk7XG4gICAgfVxuICB9XG59XG4iLCJAdXNlICdzYXNzOm1hcCc7XG5AdXNlICcuLi9jb3JlL3RoZW1pbmcvdGhlbWluZyc7XG5cbkBtaXhpbiBjb2xvcigkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJGZvcmVncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgZm9yZWdyb3VuZCk7XG5cbiAgLm1hdC1kaXZpZGVyIHtcbiAgICBib3JkZXItdG9wLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIGRpdmlkZXIpO1xuICB9XG5cbiAgLm1hdC1kaXZpZGVyLXZlcnRpY2FsIHtcbiAgICBib3JkZXItcmlnaHQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgZGl2aWRlcik7XG4gIH1cbn1cblxuQG1peGluIHR5cG9ncmFwaHkoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIF9kZW5zaXR5KCRjb25maWctb3ItdGhlbWUpIHt9XG5cbkBtaXhpbiB0aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKSB7XG4gICR0aGVtZTogdGhlbWluZy5wcml2YXRlLWxlZ2FjeS1nZXQtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZyk7XG4gIEBpbmNsdWRlIHRoZW1pbmcucHJpdmF0ZS1jaGVjay1kdXBsaWNhdGUtdGhlbWUtc3R5bGVzKCR0aGVtZSwgJ21hdC1kaXZpZGVyJykge1xuICAgICRjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgJGRlbnNpdHk6IHRoZW1pbmcuZ2V0LWRlbnNpdHktY29uZmlnKCR0aGVtZSk7XG4gICAgJHR5cG9ncmFwaHk6IHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCR0aGVtZSk7XG5cbiAgICBAaWYgJGNvbG9yICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgX2RlbnNpdHkoJGRlbnNpdHkpO1xuICAgIH1cbiAgICBAaWYgJHR5cG9ncmFwaHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5KCR0eXBvZ3JhcGh5KTtcbiAgICB9XG4gIH1cbn1cbiIsIkBtaXhpbiBwcml2YXRlLWV4cGFuc2lvbi1mb2N1cyB7XG4gIC5tYXQtZXhwYW5zaW9uLXBhbmVsIHtcbiAgICAmIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci5jZGsta2V5Ym9hcmQtZm9jdXNlZCxcbiAgICAmIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci5jZGstcHJvZ3JhbS1mb2N1c2VkLFxuICAgICY6bm90KC5tYXQtZXhwYW5kZWQpIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcjpob3ZlciB7XG4gICAgICAmOm5vdChbYXJpYS1kaXNhYmxlZD0ndHJ1ZSddKSB7XG4gICAgICAgIEBjb250ZW50O1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnLi4vdGhlbWluZy90aGVtaW5nJztcblxuLy8gUmVuZGVycyBhIGdyYWRpZW50IGZvciBzaG93aW5nIHRoZSBkYXNoZWQgbGluZSB3aGVuIHRoZSBpbnB1dCBpcyBkaXNhYmxlZC5cbi8vIFVubGlrZSB1c2luZyBhIGJvcmRlciwgYSBncmFkaWVudCBhbGxvd3MgdXMgdG8gYWRqdXN0IHRoZSBzcGFjaW5nIG9mIHRoZSBkb3R0ZWQgbGluZVxuLy8gdG8gbWF0Y2ggdGhlIE1hdGVyaWFsIERlc2lnbiBzcGVjLlxuQG1peGluIHByaXZhdGUtY29udHJvbC1kaXNhYmxlZC11bmRlcmxpbmUoJGNvbG9yKSB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgJGNvbG9yIDAlLCAkY29sb3IgMzMlLCB0cmFuc3BhcmVudCAwJSk7XG4gIGJhY2tncm91bmQtc2l6ZTogNHB4IDEwMCU7XG4gIGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQteDtcbn1cblxuLy8gRmlndXJlcyBvdXQgdGhlIGNvbG9yIG9mIHRoZSBwbGFjZWhvbGRlciBmb3IgYSBmb3JtIGNvbnRyb2wuXG4vLyBVc2VkIHByaW1hcmlseSB0byBwcmV2ZW50IHRoZSB2YXJpb3VzIGZvcm0gY29udHJvbHMgZnJvbVxuLy8gYmVjb21pbmcgb3V0IG9mIHN5bmMgc2luY2UgdGhlc2UgY29sb3JzIGFyZW4ndCBpbiBhIHBhbGV0dGUuXG5AZnVuY3Rpb24gcHJpdmF0ZS1jb250cm9sLXBsYWNlaG9sZGVyLWNvbG9yKCRjb25maWcpIHtcbiAgJGZvcmVncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgZm9yZWdyb3VuZCk7XG4gICRpcy1kYXJrLXRoZW1lOiBtYXAuZ2V0KCRjb25maWcsIGlzLWRhcmspO1xuICBAcmV0dXJuIHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgc2Vjb25kYXJ5LXRleHQsXG4gICAgaWYoJGlzLWRhcmstdGhlbWUsIDAuNSwgMC40MikpO1xufVxuIiwiQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnLi4vY29yZS90aGVtaW5nL3RoZW1pbmcnO1xuQHVzZSAnLi4vY29yZS9zdHlsZS9mb3JtLWNvbW1vbic7XG5cblxuLy8gVGhlbWUgc3R5bGVzIHRoYXQgb25seSBhcHBseSB0byB0aGUgc3RhbmRhcmQgYXBwZWFyYW5jZSBvZiB0aGUgZm9ybS1maWVsZC5cblxuQG1peGluIHN0YW5kYXJkLWNvbG9yKCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAkZm9yZWdyb3VuZDogbWFwLmdldCgkY29uZmlnLCBmb3JlZ3JvdW5kKTtcbiAgJGlzLWRhcmstdGhlbWU6IG1hcC5nZXQoJGNvbmZpZywgaXMtZGFyayk7XG4gICR1bmRlcmxpbmUtY29sb3I6XG4gICAgdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBkaXZpZGVyLCBpZigkaXMtZGFyay10aGVtZSwgMC43LCAwLjQyKSk7XG5cbiAgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utc3RhbmRhcmQge1xuICAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmUge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHVuZGVybGluZS1jb2xvcjtcbiAgICB9XG5cbiAgICAmLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmUge1xuICAgICAgQGluY2x1ZGUgZm9ybS1jb21tb24ucHJpdmF0ZS1jb250cm9sLWRpc2FibGVkLXVuZGVybGluZSgkdW5kZXJsaW5lLWNvbG9yKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHN0YW5kYXJkLXR5cG9ncmFwaHkoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIHByaXZhdGUtZm9ybS1maWVsZC1zdGFuZGFyZC1kZW5zaXR5KCRjb25maWctb3ItdGhlbWUpIHt9XG5cbkBtaXhpbiBzdGFuZGFyZC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKSB7XG4gICR0aGVtZTogdGhlbWluZy5wcml2YXRlLWxlZ2FjeS1nZXQtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZyk7XG4gIEBpbmNsdWRlIHRoZW1pbmcucHJpdmF0ZS1jaGVjay1kdXBsaWNhdGUtdGhlbWUtc3R5bGVzKCR0aGVtZSwgJ21hdC1mb3JtLWZpZWxkLXN0YW5kYXJkJykge1xuICAgICRjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgJGRlbnNpdHk6IHRoZW1pbmcuZ2V0LWRlbnNpdHktY29uZmlnKCR0aGVtZSk7XG4gICAgJHR5cG9ncmFwaHk6IHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCR0aGVtZSk7XG5cbiAgICBAaWYgJGNvbG9yICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgc3RhbmRhcmQtY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgcHJpdmF0ZS1mb3JtLWZpZWxkLXN0YW5kYXJkLWRlbnNpdHkoJGRlbnNpdHkpO1xuICAgIH1cbiAgICBAaWYgJHR5cG9ncmFwaHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBzdGFuZGFyZC10eXBvZ3JhcGh5KCR0eXBvZ3JhcGh5KTtcbiAgICB9XG4gIH1cbn1cbiIsIkB1c2UgJ3Nhc3M6bWFwJztcbkB1c2UgJy4uL2NvcmUvdGhlbWluZy90aGVtaW5nJztcblxuQG1peGluIGNvbG9yKCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAkcHJpbWFyeTogbWFwLmdldCgkY29uZmlnLCBwcmltYXJ5KTtcbiAgJGFjY2VudDogbWFwLmdldCgkY29uZmlnLCBhY2NlbnQpO1xuICAkd2FybjogbWFwLmdldCgkY29uZmlnLCB3YXJuKTtcbiAgJGJhY2tncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgYmFja2dyb3VuZCk7XG4gICRmb3JlZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGZvcmVncm91bmQpO1xuXG4gIC5tYXQtaWNvbiB7XG4gICAgJi5tYXQtcHJpbWFyeSB7XG4gICAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRwcmltYXJ5LCB0ZXh0KTtcbiAgICB9XG5cbiAgICAmLm1hdC1hY2NlbnQge1xuICAgICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYWNjZW50LCB0ZXh0KTtcbiAgICB9XG5cbiAgICAmLm1hdC13YXJuIHtcbiAgICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHdhcm4sIHRleHQpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gdHlwb2dyYXBoeSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gX2RlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIHRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiB0aGVtaW5nLnByaXZhdGUtbGVnYWN5LWdldC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgQGluY2x1ZGUgdGhlbWluZy5wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LWljb24nKSB7XG4gICAgJGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJHRoZW1lKTtcbiAgICAkZGVuc2l0eTogdGhlbWluZy5nZXQtZGVuc2l0eS1jb25maWcoJHRoZW1lKTtcbiAgICAkdHlwb2dyYXBoeTogdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJHRoZW1lKTtcblxuICAgIEBpZiAkY29sb3IgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBjb2xvcigkY29sb3IpO1xuICAgIH1cbiAgICBAaWYgJGRlbnNpdHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBfZGVuc2l0eSgkZGVuc2l0eSk7XG4gICAgfVxuICAgIEBpZiAkdHlwb2dyYXBoeSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIHR5cG9ncmFwaHkoJHR5cG9ncmFwaHkpO1xuICAgIH1cbiAgfVxufVxuXG4iLCIvLyBzdHlsZWxpbnQtZGlzYWJsZSBtYXRlcmlhbC9uby1wcmVmaXhlc1xuQG1peGluIHVzZXItc2VsZWN0KCR2YWx1ZSkge1xuICAtd2Via2l0LXVzZXItc2VsZWN0OiAkdmFsdWU7XG4gIC1tb3otdXNlci1zZWxlY3Q6ICR2YWx1ZTtcbiAgLW1zLXVzZXItc2VsZWN0OiAkdmFsdWU7XG4gIHVzZXItc2VsZWN0OiAkdmFsdWU7XG59XG5cbkBtaXhpbiBpbnB1dC1wbGFjZWhvbGRlciB7XG4gICY6OnBsYWNlaG9sZGVyIHtcbiAgICBAY29udGVudDtcbiAgfVxuXG4gICY6Oi1tb3otcGxhY2Vob2xkZXIge1xuICAgIEBjb250ZW50O1xuICB9XG5cbiAgJjo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cblxuICAmOi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuQG1peGluIGN1cnNvci1ncmFiIHtcbiAgY3Vyc29yOiAtd2Via2l0LWdyYWI7XG4gIGN1cnNvcjogZ3JhYjtcbn1cblxuQG1peGluIGN1cnNvci1ncmFiYmluZyB7XG4gIGN1cnNvcjogLXdlYmtpdC1ncmFiYmluZztcbiAgY3Vyc29yOiBncmFiYmluZztcbn1cblxuQG1peGluIGJhY2tmYWNlLXZpc2liaWxpdHkoJHZhbHVlKSB7XG4gIC13ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eTogJHZhbHVlO1xuICBiYWNrZmFjZS12aXNpYmlsaXR5OiAkdmFsdWU7XG59XG5cbkBtaXhpbiBwb3NpdGlvbi1zdGlja3koJGltcG9ydGFudDogZmFsc2UpIHtcbiAgcG9zaXRpb246IC13ZWJraXQtc3RpY2t5ICN7aWYoJGltcG9ydGFudCwgJyFpbXBvcnRhbnQnLCAnJyl9O1xuICBwb3NpdGlvbjogc3RpY2t5ICN7aWYoJGltcG9ydGFudCwgJyFpbXBvcnRhbnQnLCAnJyl9O1xufVxuLy8gc3R5bGVsaW50LWVuYWJsZVxuIiwiQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnc2FzczptZXRhJztcbkB1c2UgJ3Nhc3M6Y29sb3InO1xuQHVzZSAnLi4vY29yZS90aGVtaW5nL3RoZW1pbmcnO1xuXG4vLyBBcHByb3hpbWF0ZXMgdGhlIGNvcnJlY3QgYnVmZmVyIGNvbG9yIGJ5IHVzaW5nIGEgbWl4IGJldHdlZW4gdGhlIHRoZW1lIGNvbG9yXG4vLyBhbmQgdGhlIHRoZW1lJ3MgYmFja2dyb3VuZCBjb2xvci5cbkBmdW5jdGlvbiBfZ2V0LWJ1ZmZlci1jb2xvcigkdGhlbWUsICRiYWNrZ3JvdW5kKSB7XG4gICR0aGVtZS1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCR0aGVtZSk7XG4gIC8vIFJldHVybiBmYWxsYmFjayBjb2xvciBpZiB0aGUgdGhlbWUgdXNlcyB2YXJpYWJsZXMgdG8gZGVmaW5lIGNvbG9ycy5cbiAgQGlmIChtZXRhLnR5cGUtb2YoJHRoZW1lLWNvbG9yKSAhPSAnY29sb3InIG9yIG1ldGEudHlwZS1vZigkYmFja2dyb3VuZCkgIT0gJ2NvbG9yJykge1xuICAgIEByZXR1cm4gdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCR0aGVtZSwgbGlnaHRlcik7XG4gIH1cbiAgQHJldHVybiBjb2xvci5taXgoJHRoZW1lLWNvbG9yLCAkYmFja2dyb3VuZCwgJHdlaWdodDogMjUlKTtcbn1cblxuQG1peGluIGNvbG9yKCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAkcHJpbWFyeTogbWFwLmdldCgkY29uZmlnLCBwcmltYXJ5KTtcbiAgJGFjY2VudDogbWFwLmdldCgkY29uZmlnLCBhY2NlbnQpO1xuICAkd2FybjogbWFwLmdldCgkY29uZmlnLCB3YXJuKTtcbiAgJGJhY2tncm91bmQ6IG1hcC5nZXQobWFwLmdldCgkY29uZmlnLCBiYWNrZ3JvdW5kKSwgYmFja2dyb3VuZCk7XG5cbiAgLm1hdC1wcm9ncmVzcy1iYXItYmFja2dyb3VuZCB7XG4gICAgZmlsbDogX2dldC1idWZmZXItY29sb3IoJHByaW1hcnksICRiYWNrZ3JvdW5kKTtcbiAgfVxuXG4gIC5tYXQtcHJvZ3Jlc3MtYmFyLWJ1ZmZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogX2dldC1idWZmZXItY29sb3IoJHByaW1hcnksICRiYWNrZ3JvdW5kKTtcbiAgfVxuXG4gIC5tYXQtcHJvZ3Jlc3MtYmFyLWZpbGw6OmFmdGVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHByaW1hcnkpO1xuICB9XG5cbiAgLm1hdC1wcm9ncmVzcy1iYXIubWF0LWFjY2VudCB7XG4gICAgLm1hdC1wcm9ncmVzcy1iYXItYmFja2dyb3VuZCB7XG4gICAgICBmaWxsOiBfZ2V0LWJ1ZmZlci1jb2xvcigkYWNjZW50LCAkYmFja2dyb3VuZCk7XG4gICAgfVxuXG4gICAgLm1hdC1wcm9ncmVzcy1iYXItYnVmZmVyIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IF9nZXQtYnVmZmVyLWNvbG9yKCRhY2NlbnQsICRiYWNrZ3JvdW5kKTtcbiAgICB9XG5cbiAgICAubWF0LXByb2dyZXNzLWJhci1maWxsOjphZnRlciB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGFjY2VudCk7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1wcm9ncmVzcy1iYXIubWF0LXdhcm4ge1xuICAgIC5tYXQtcHJvZ3Jlc3MtYmFyLWJhY2tncm91bmQge1xuICAgICAgZmlsbDogX2dldC1idWZmZXItY29sb3IoJHdhcm4sICRiYWNrZ3JvdW5kKTtcbiAgICB9XG5cbiAgICAubWF0LXByb2dyZXNzLWJhci1idWZmZXIge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogX2dldC1idWZmZXItY29sb3IoJHdhcm4sICRiYWNrZ3JvdW5kKTtcbiAgICB9XG5cbiAgICAubWF0LXByb2dyZXNzLWJhci1maWxsOjphZnRlciB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHdhcm4pO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gdHlwb2dyYXBoeSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gX2RlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIHRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiB0aGVtaW5nLnByaXZhdGUtbGVnYWN5LWdldC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgQGluY2x1ZGUgdGhlbWluZy5wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LXByb2dyZXNzLWJhcicpIHtcbiAgICAkY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkdGhlbWUpO1xuICAgICRkZW5zaXR5OiB0aGVtaW5nLmdldC1kZW5zaXR5LWNvbmZpZygkdGhlbWUpO1xuICAgICR0eXBvZ3JhcGh5OiB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkdGhlbWUpO1xuXG4gICAgQGlmICRjb2xvciAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIGNvbG9yKCRjb2xvcik7XG4gICAgfVxuICAgIEBpZiAkZGVuc2l0eSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIF9kZW5zaXR5KCRkZW5zaXR5KTtcbiAgICB9XG4gICAgQGlmICR0eXBvZ3JhcGh5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgdHlwb2dyYXBoeSgkdHlwb2dyYXBoeSk7XG4gICAgfVxuICB9XG59XG5cbiIsIkB1c2UgJ3Nhc3M6bWFwJztcbkB1c2UgJy4uL2NvcmUvdGhlbWluZy90aGVtaW5nJztcblxuQG1peGluIGNvbG9yKCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAkcHJpbWFyeTogbWFwLmdldCgkY29uZmlnLCBwcmltYXJ5KTtcbiAgJGFjY2VudDogbWFwLmdldCgkY29uZmlnLCBhY2NlbnQpO1xuICAkd2FybjogbWFwLmdldCgkY29uZmlnLCB3YXJuKTtcblxuICAubWF0LXByb2dyZXNzLXNwaW5uZXIsIC5tYXQtc3Bpbm5lciB7XG4gICAgY2lyY2xlIHtcbiAgICAgIHN0cm9rZTogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRwcmltYXJ5KTtcbiAgICB9XG5cbiAgICAmLm1hdC1hY2NlbnQgY2lyY2xlIHtcbiAgICAgIHN0cm9rZTogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRhY2NlbnQpO1xuICAgIH1cblxuICAgICYubWF0LXdhcm4gY2lyY2xlIHtcbiAgICAgIHN0cm9rZTogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCR3YXJuKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHR5cG9ncmFwaHkoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIF9kZW5zaXR5KCRjb25maWctb3ItdGhlbWUpIHt9XG5cbkBtaXhpbiB0aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKSB7XG4gICR0aGVtZTogdGhlbWluZy5wcml2YXRlLWxlZ2FjeS1nZXQtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZyk7XG4gIEBpbmNsdWRlIHRoZW1pbmcucHJpdmF0ZS1jaGVjay1kdXBsaWNhdGUtdGhlbWUtc3R5bGVzKCR0aGVtZSwgJ21hdC1wcm9ncmVzcy1zcGlubmVyJykge1xuICAgICRjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgJGRlbnNpdHk6IHRoZW1pbmcuZ2V0LWRlbnNpdHktY29uZmlnKCR0aGVtZSk7XG4gICAgJHR5cG9ncmFwaHk6IHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCR0aGVtZSk7XG5cbiAgICBAaWYgJGNvbG9yICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgX2RlbnNpdHkoJGRlbnNpdHkpO1xuICAgIH1cbiAgICBAaWYgJHR5cG9ncmFwaHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5KCR0eXBvZ3JhcGh5KTtcbiAgICB9XG4gIH1cbn1cbiIsIkB1c2UgJ3Nhc3M6Y29sb3InO1xuQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnc2FzczptZXRhJztcbkB1c2UgJy4uL2NvcmUvc3R5bGUvcHJpdmF0ZSc7XG5AdXNlICcuLi9jb3JlL3RoZW1pbmcvdGhlbWluZyc7XG5cbkBtaXhpbiBjb2xvcigkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJHByaW1hcnk6IG1hcC5nZXQoJGNvbmZpZywgcHJpbWFyeSk7XG4gICRhY2NlbnQ6IG1hcC5nZXQoJGNvbmZpZywgYWNjZW50KTtcbiAgJHdhcm46IG1hcC5nZXQoJGNvbmZpZywgd2Fybik7XG4gICRiYWNrZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGJhY2tncm91bmQpO1xuICAkZm9yZWdyb3VuZDogbWFwLmdldCgkY29uZmlnLCBmb3JlZ3JvdW5kKTtcblxuICAkZHJhd2VyLWJhY2tncm91bmQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYmFja2dyb3VuZCwgZGlhbG9nKTtcbiAgJGRyYXdlci1jb250YWluZXItYmFja2dyb3VuZC1jb2xvcjogIHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYmFja2dyb3VuZCwgYmFja2dyb3VuZCk7XG4gICRkcmF3ZXItcHVzaC1iYWNrZ3JvdW5kLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGJhY2tncm91bmQsIGRpYWxvZyk7XG4gICRkcmF3ZXItc2lkZS1ib3JkZXI6IHNvbGlkIDFweCB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIGRpdmlkZXIpO1xuXG4gIC5tYXQtZHJhd2VyLWNvbnRhaW5lciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGRyYXdlci1jb250YWluZXItYmFja2dyb3VuZC1jb2xvcjtcbiAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCB0ZXh0KTtcbiAgfVxuXG4gIC5tYXQtZHJhd2VyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZHJhd2VyLWJhY2tncm91bmQtY29sb3I7XG4gICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgdGV4dCk7XG5cbiAgICAmLm1hdC1kcmF3ZXItcHVzaCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZHJhd2VyLXB1c2gtYmFja2dyb3VuZC1jb2xvcjtcbiAgICB9XG5cbiAgICAmOm5vdCgubWF0LWRyYXdlci1zaWRlKSB7XG4gICAgICAvLyBUaGUgZWxldmF0aW9uIG9mIHotMTYgaXMgbm90ZWQgaW4gdGhlIGRlc2lnbiBzcGVjaWZpY2F0aW9ucy5cbiAgICAgIC8vIFNlZSBodHRwczovL21hdGVyaWFsLmlvL2Rlc2lnbi9jb21wb25lbnRzL25hdmlnYXRpb24tZHJhd2VyLmh0bWxcbiAgICAgIEBpbmNsdWRlIHByaXZhdGUucHJpdmF0ZS10aGVtZS1lbGV2YXRpb24oMTYsICRjb25maWcpO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtZHJhd2VyLXNpZGUge1xuICAgIGJvcmRlci1yaWdodDogJGRyYXdlci1zaWRlLWJvcmRlcjtcblxuICAgICYubWF0LWRyYXdlci1lbmQge1xuICAgICAgYm9yZGVyLWxlZnQ6ICRkcmF3ZXItc2lkZS1ib3JkZXI7XG4gICAgICBib3JkZXItcmlnaHQ6IG5vbmU7XG4gICAgfVxuICB9XG5cbiAgW2Rpcj0ncnRsJ10gLm1hdC1kcmF3ZXItc2lkZSB7XG4gICAgYm9yZGVyLWxlZnQ6ICRkcmF3ZXItc2lkZS1ib3JkZXI7XG4gICAgYm9yZGVyLXJpZ2h0OiBub25lO1xuXG4gICAgJi5tYXQtZHJhd2VyLWVuZCB7XG4gICAgICBib3JkZXItbGVmdDogbm9uZTtcbiAgICAgIGJvcmRlci1yaWdodDogJGRyYXdlci1zaWRlLWJvcmRlcjtcbiAgICB9XG4gIH1cblxuICAubWF0LWRyYXdlci1iYWNrZHJvcC5tYXQtZHJhd2VyLXNob3duIHtcbiAgICAkb3BhY2l0eTogMC42O1xuICAgICRiYWNrZHJvcC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLCBjYXJkLCAkb3BhY2l0eSk7XG5cbiAgICBAaWYgKG1ldGEudHlwZS1vZigkYmFja2Ryb3AtY29sb3IpID09IGNvbG9yKSB7XG4gICAgICAvLyBXZSB1c2UgaW52ZXJ0KCkgaGVyZSB0byBoYXZlIHRoZSBkYXJrZW4gdGhlIGJhY2tncm91bmQgY29sb3IgZXhwZWN0ZWQgdG8gYmUgdXNlZC4gSWYgdGhlXG4gICAgICAvLyBiYWNrZ3JvdW5kIGlzIGxpZ2h0LCB3ZSB1c2UgYSBkYXJrIGJhY2tkcm9wLiBJZiB0aGUgYmFja2dyb3VuZCBpcyBkYXJrLFxuICAgICAgLy8gd2UgdXNlIGEgbGlnaHQgYmFja2Ryb3AuXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBjb2xvci5pbnZlcnQoJGJhY2tkcm9wLWNvbG9yKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgLy8gSWYgd2UgY291bGRuJ3QgcmVzb2x2ZSB0aGUgYmFja2Ryb3AgY29sb3IgdG8gYSBjb2xvciB2YWx1ZSwgZmFsbCBiYWNrIHRvIHVzaW5nXG4gICAgICAvLyBgb3BhY2l0eWAgdG8gbWFrZSBpdCBvcGFxdWUgc2luY2UgaXRzIGVuZCB2YWx1ZSBjb3VsZCBiZSBhIHNvbGlkIGNvbG9yLlxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tkcm9wLWNvbG9yO1xuICAgICAgb3BhY2l0eTogJG9wYWNpdHk7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiB0eXBvZ3JhcGh5KCRjb25maWctb3ItdGhlbWUpIHt9XG5cbkBtaXhpbiBfZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZykge1xuICAkdGhlbWU6IHRoZW1pbmcucHJpdmF0ZS1sZWdhY3ktZ2V0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICBAaW5jbHVkZSB0aGVtaW5nLnByaXZhdGUtY2hlY2stZHVwbGljYXRlLXRoZW1lLXN0eWxlcygkdGhlbWUsICdtYXQtc2lkZW5hdicpIHtcbiAgICAkY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkdGhlbWUpO1xuICAgICRkZW5zaXR5OiB0aGVtaW5nLmdldC1kZW5zaXR5LWNvbmZpZygkdGhlbWUpO1xuICAgICR0eXBvZ3JhcGh5OiB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkdGhlbWUpO1xuXG4gICAgQGlmICRjb2xvciAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIGNvbG9yKCRjb2xvcik7XG4gICAgfVxuICAgIEBpZiAkZGVuc2l0eSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIF9kZW5zaXR5KCRkZW5zaXR5KTtcbiAgICB9XG4gICAgQGlmICR0eXBvZ3JhcGh5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgdHlwb2dyYXBoeSgkdHlwb2dyYXBoeSk7XG4gICAgfVxuICB9XG59XG4iLCJAdXNlICdzYXNzOmNvbG9yJztcbkB1c2UgJ3Nhc3M6bWFwJztcbkB1c2UgJ3Nhc3M6bWV0YSc7XG5AdXNlICcuLi9jb3JlL3RoZW1pbmcvdGhlbWluZyc7XG5cbkBtaXhpbiBjb2xvcigkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJGJhY2tncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgYmFja2dyb3VuZCk7XG4gICRmb3JlZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGZvcmVncm91bmQpO1xuXG4gIC5tYXQtc29ydC1oZWFkZXItYXJyb3cge1xuICAgICR0YWJsZS1iYWNrZ3JvdW5kOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGJhY2tncm91bmQsICdjYXJkJyk7XG4gICAgJHRleHQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgc2Vjb25kYXJ5LXRleHQpO1xuXG4gICAgLy8gQmVjYXVzZSB0aGUgYXJyb3cgaXMgbWFkZSB1cCBvZiBtdWx0aXBsZSBlbGVtZW50cyB0aGF0IGFyZSBzdGFja2VkIG9uIHRvcCBvZiBlYWNoIG90aGVyLFxuICAgIC8vIHdlIGNhbid0IHVzZSB0aGUgc2VtaS10cmFuc3BhcmVudCBjb2xvciBmcm9tIHRoZSB0aGVtZSBkaXJlY3RseS4gSWYgdGhlIHZhbHVlIGlzIGEgY29sb3JcbiAgICAvLyAqdHlwZSosIHdlIGNvbnZlcnQgaXQgaW50byBhIHNvbGlkIGNvbG9yIGJ5IHRha2luZyB0aGUgb3BhY2l0eSBmcm9tIHRoZSByZ2JhIHZhbHVlIGFuZFxuICAgIC8vIHVzaW5nIHRoZSB2YWx1ZSB0byBkZXRlcm1pbmUgdGhlIHBlcmNlbnRhZ2Ugb2YgdGhlIGJhY2tncm91bmQgdG8gcHV0IGludG8gZm9yZWdyb3VuZFxuICAgIC8vIHdoZW4gbWl4aW5nIHRoZSBjb2xvcnMgdG9nZXRoZXIuIE90aGVyd2lzZSwgaWYgaXQgcmVzb2x2ZXMgdG8gc29tZXRoaW5nIGRpZmZlcmVudFxuICAgIC8vIChlLmcuIGl0IHJlc29sdmVzIHRvIGEgQ1NTIHZhcmlhYmxlKSwgd2UgdXNlIHRoZSBjb2xvciBkaXJlY3RseS5cbiAgICBAaWYgKG1ldGEudHlwZS1vZigkdGFibGUtYmFja2dyb3VuZCkgPT0gY29sb3IgYW5kIG1ldGEudHlwZS1vZigkdGV4dC1jb2xvcikgPT0gY29sb3IpIHtcbiAgICAgICR0ZXh0LW9wYWNpdHk6IG9wYWNpdHkoJHRleHQtY29sb3IpO1xuICAgICAgY29sb3I6IGNvbG9yLm1peCgkdGFibGUtYmFja2dyb3VuZCwgcmdiYSgkdGV4dC1jb2xvciwgMSksICgxIC0gJHRleHQtb3BhY2l0eSkgKiAxMDAlKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgY29sb3I6ICR0ZXh0LWNvbG9yO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gdHlwb2dyYXBoeSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gX2RlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIHRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiB0aGVtaW5nLnByaXZhdGUtbGVnYWN5LWdldC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgQGluY2x1ZGUgdGhlbWluZy5wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LXNvcnQnKSB7XG4gICAgJGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJHRoZW1lKTtcbiAgICAkZGVuc2l0eTogdGhlbWluZy5nZXQtZGVuc2l0eS1jb25maWcoJHRoZW1lKTtcbiAgICAkdHlwb2dyYXBoeTogdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJHRoZW1lKTtcblxuICAgIEBpZiAkY29sb3IgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBjb2xvcigkY29sb3IpO1xuICAgIH1cbiAgICBAaWYgJGRlbnNpdHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBfZGVuc2l0eSgkZGVuc2l0eSk7XG4gICAgfVxuICAgIEBpZiAkdHlwb2dyYXBoeSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIHR5cG9ncmFwaHkoJHR5cG9ncmFwaHkpO1xuICAgIH1cbiAgfVxufVxuIl19 */\";","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJ1bmRlci1jb25zdHJ1Y3Rpb24uY29tcG9uZW50LnNjc3MifQ== */\";","export default \"@import url(\\\"//fonts.googleapis.com/icon?family=Material+Icons\\\");\\n/* You can add global styles to this file, and also import other style files */\\n.mat-badge-content {\\n font-weight: 600;\\n font-size: 12px;\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n}\\n.mat-badge-small .mat-badge-content {\\n font-size: 9px;\\n}\\n.mat-badge-large .mat-badge-content {\\n font-size: 24px;\\n}\\n.mat-h1, .mat-headline, .mat-typography h1 {\\n font: 400 24px/32px Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n letter-spacing: normal;\\n margin: 0 0 16px;\\n}\\n.mat-h2, .mat-title, .mat-typography h2 {\\n font: 500 20px/32px Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n letter-spacing: normal;\\n margin: 0 0 16px;\\n}\\n.mat-h3, .mat-subheading-2, .mat-typography h3 {\\n font: 400 16px/28px Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n letter-spacing: normal;\\n margin: 0 0 16px;\\n}\\n.mat-h4, .mat-subheading-1, .mat-typography h4 {\\n font: 400 15px/24px Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n letter-spacing: normal;\\n margin: 0 0 16px;\\n}\\n.mat-h5, .mat-typography h5 {\\n font: 400 calc(14px * 0.83)/20px Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n margin: 0 0 12px;\\n}\\n.mat-h6, .mat-typography h6 {\\n font: 400 calc(14px * 0.67)/20px Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n margin: 0 0 12px;\\n}\\n.mat-body-strong, .mat-body-2 {\\n font: 500 14px/24px Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n letter-spacing: normal;\\n}\\n.mat-body, .mat-body-1, .mat-typography {\\n font: 400 14px/20px Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n letter-spacing: normal;\\n}\\n.mat-body p, .mat-body-1 p, .mat-typography p {\\n margin: 0 0 12px;\\n}\\n.mat-small, .mat-caption {\\n font: 400 12px/20px Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n letter-spacing: normal;\\n}\\n.mat-display-4, .mat-typography .mat-display-4 {\\n font: 300 112px/112px Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n letter-spacing: -0.05em;\\n margin: 0 0 56px;\\n}\\n.mat-display-3, .mat-typography .mat-display-3 {\\n font: 400 56px/56px Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n letter-spacing: -0.02em;\\n margin: 0 0 64px;\\n}\\n.mat-display-2, .mat-typography .mat-display-2 {\\n font: 400 45px/48px Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n letter-spacing: -0.005em;\\n margin: 0 0 64px;\\n}\\n.mat-display-1, .mat-typography .mat-display-1 {\\n font: 400 34px/40px Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n letter-spacing: normal;\\n margin: 0 0 64px;\\n}\\n.mat-bottom-sheet-container {\\n font: 400 14px/20px Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n letter-spacing: normal;\\n}\\n.mat-button, .mat-raised-button, .mat-icon-button, .mat-stroked-button,\\n.mat-flat-button, .mat-fab, .mat-mini-fab {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n font-size: 14px;\\n font-weight: 500;\\n}\\n.mat-button-toggle {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n}\\n.mat-card {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n}\\n.mat-card-title {\\n font-size: 24px;\\n font-weight: 500;\\n}\\n.mat-card-header .mat-card-title {\\n font-size: 20px;\\n}\\n.mat-card-subtitle,\\n.mat-card-content {\\n font-size: 14px;\\n}\\n.mat-checkbox {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n}\\n.mat-checkbox-layout .mat-checkbox-label {\\n line-height: 24px;\\n}\\n.mat-chip {\\n font-size: 14px;\\n font-weight: 500;\\n}\\n.mat-chip .mat-chip-trailing-icon.mat-icon,\\n.mat-chip .mat-chip-remove.mat-icon {\\n font-size: 18px;\\n}\\n.mat-table {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n}\\n.mat-header-cell {\\n font-size: 12px;\\n font-weight: 500;\\n}\\n.mat-cell, .mat-footer-cell {\\n font-size: 14px;\\n}\\n.mat-calendar {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n}\\n.mat-calendar-body {\\n font-size: 13px;\\n}\\n.mat-calendar-body-label,\\n.mat-calendar-period-button {\\n font-size: 14px;\\n font-weight: 500;\\n}\\n.mat-calendar-table-header th {\\n font-size: 11px;\\n font-weight: 400;\\n}\\n.mat-dialog-title {\\n font: 500 20px/32px Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n letter-spacing: normal;\\n}\\n.mat-expansion-panel-header {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n font-size: 15px;\\n font-weight: 400;\\n}\\n.mat-expansion-panel-content {\\n font: 400 14px/20px Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n letter-spacing: normal;\\n}\\n.mat-form-field {\\n font-size: inherit;\\n font-weight: 400;\\n line-height: 1.125;\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n letter-spacing: normal;\\n}\\n.mat-form-field-wrapper {\\n padding-bottom: 1.34375em;\\n}\\n.mat-form-field-prefix .mat-icon,\\n.mat-form-field-suffix .mat-icon {\\n font-size: 150%;\\n line-height: 1.125;\\n}\\n.mat-form-field-prefix .mat-icon-button,\\n.mat-form-field-suffix .mat-icon-button {\\n height: 1.5em;\\n width: 1.5em;\\n}\\n.mat-form-field-prefix .mat-icon-button .mat-icon,\\n.mat-form-field-suffix .mat-icon-button .mat-icon {\\n height: 1.125em;\\n line-height: 1.125;\\n}\\n.mat-form-field-infix {\\n padding: 0.5em 0;\\n border-top: 0.84375em solid transparent;\\n}\\n.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,\\n.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.34375em) scale(0.75);\\n width: 133.3333333333%;\\n}\\n.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.34374em) scale(0.75);\\n width: 133.3333433333%;\\n}\\n.mat-form-field-label-wrapper {\\n top: -0.84375em;\\n padding-top: 0.84375em;\\n}\\n.mat-form-field-label {\\n top: 1.34375em;\\n}\\n.mat-form-field-underline {\\n bottom: 1.34375em;\\n}\\n.mat-form-field-subscript-wrapper {\\n font-size: 75%;\\n margin-top: 0.6666666667em;\\n top: calc(100% - 1.7916666667em);\\n}\\n.mat-form-field-appearance-legacy .mat-form-field-wrapper {\\n padding-bottom: 1.25em;\\n}\\n.mat-form-field-appearance-legacy .mat-form-field-infix {\\n padding: 0.4375em 0;\\n}\\n.mat-form-field-appearance-legacy.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,\\n.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.28125em) scale(0.75) perspective(100px) translateZ(0.001px);\\n -ms-transform: translateY(-1.28125em) scale(0.75);\\n width: 133.3333333333%;\\n}\\n.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-form-field-autofill-control:-webkit-autofill + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.28125em) scale(0.75) perspective(100px) translateZ(0.00101px);\\n -ms-transform: translateY(-1.28124em) scale(0.75);\\n width: 133.3333433333%;\\n}\\n.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.28125em) scale(0.75) perspective(100px) translateZ(0.00102px);\\n -ms-transform: translateY(-1.28123em) scale(0.75);\\n width: 133.3333533333%;\\n}\\n.mat-form-field-appearance-legacy .mat-form-field-label {\\n top: 1.28125em;\\n}\\n.mat-form-field-appearance-legacy .mat-form-field-underline {\\n bottom: 1.25em;\\n}\\n.mat-form-field-appearance-legacy .mat-form-field-subscript-wrapper {\\n margin-top: 0.5416666667em;\\n top: calc(100% - 1.6666666667em);\\n}\\n@media print {\\n .mat-form-field-appearance-legacy.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,\\n.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.28122em) scale(0.75);\\n }\\n .mat-form-field-appearance-legacy.mat-form-field-can-float .mat-form-field-autofill-control:-webkit-autofill + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.28121em) scale(0.75);\\n }\\n .mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.2812em) scale(0.75);\\n }\\n}\\n.mat-form-field-appearance-fill .mat-form-field-infix {\\n padding: 0.25em 0 0.75em 0;\\n}\\n.mat-form-field-appearance-fill .mat-form-field-label {\\n top: 1.09375em;\\n margin-top: -0.5em;\\n}\\n.mat-form-field-appearance-fill.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,\\n.mat-form-field-appearance-fill.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-0.59375em) scale(0.75);\\n width: 133.3333333333%;\\n}\\n.mat-form-field-appearance-fill.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-0.59374em) scale(0.75);\\n width: 133.3333433333%;\\n}\\n.mat-form-field-appearance-outline .mat-form-field-infix {\\n padding: 1em 0 1em 0;\\n}\\n.mat-form-field-appearance-outline .mat-form-field-label {\\n top: 1.84375em;\\n margin-top: -0.25em;\\n}\\n.mat-form-field-appearance-outline.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,\\n.mat-form-field-appearance-outline.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.59375em) scale(0.75);\\n width: 133.3333333333%;\\n}\\n.mat-form-field-appearance-outline.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.59374em) scale(0.75);\\n width: 133.3333433333%;\\n}\\n.mat-grid-tile-header,\\n.mat-grid-tile-footer {\\n font-size: 14px;\\n}\\n.mat-grid-tile-header .mat-line,\\n.mat-grid-tile-footer .mat-line {\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n display: block;\\n box-sizing: border-box;\\n}\\n.mat-grid-tile-header .mat-line:nth-child(n+2),\\n.mat-grid-tile-footer .mat-line:nth-child(n+2) {\\n font-size: 12px;\\n}\\ninput.mat-input-element {\\n margin-top: -0.0625em;\\n}\\n.mat-menu-item {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n font-size: 14px;\\n font-weight: 400;\\n}\\n.mat-paginator,\\n.mat-paginator-page-size .mat-select-trigger {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n font-size: 12px;\\n}\\n.mat-radio-button {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n}\\n.mat-select {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n}\\n.mat-select-trigger {\\n height: 1.125em;\\n}\\n.mat-slide-toggle-content {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n}\\n.mat-slider-thumb-label-text {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n font-size: 12px;\\n font-weight: 500;\\n}\\n.mat-stepper-vertical, .mat-stepper-horizontal {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n}\\n.mat-step-label {\\n font-size: 14px;\\n font-weight: 400;\\n}\\n.mat-step-sub-label-error {\\n font-weight: normal;\\n}\\n.mat-step-label-error {\\n font-size: 14px;\\n}\\n.mat-step-label-selected {\\n font-size: 14px;\\n font-weight: 500;\\n}\\n.mat-tab-group {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n}\\n.mat-tab-label, .mat-tab-link {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n font-size: 14px;\\n font-weight: 500;\\n}\\n.mat-toolbar,\\n.mat-toolbar h1,\\n.mat-toolbar h2,\\n.mat-toolbar h3,\\n.mat-toolbar h4,\\n.mat-toolbar h5,\\n.mat-toolbar h6 {\\n font: 500 20px/32px Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n letter-spacing: normal;\\n margin: 0;\\n}\\n.mat-tooltip {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n font-size: 10px;\\n padding-top: 6px;\\n padding-bottom: 6px;\\n}\\n.mat-tooltip-handset {\\n font-size: 14px;\\n padding-top: 8px;\\n padding-bottom: 8px;\\n}\\n.mat-list-item {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n}\\n.mat-list-option {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n}\\n.mat-list-base .mat-list-item {\\n font-size: 16px;\\n}\\n.mat-list-base .mat-list-item .mat-line {\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n display: block;\\n box-sizing: border-box;\\n}\\n.mat-list-base .mat-list-item .mat-line:nth-child(n+2) {\\n font-size: 14px;\\n}\\n.mat-list-base .mat-list-option {\\n font-size: 16px;\\n}\\n.mat-list-base .mat-list-option .mat-line {\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n display: block;\\n box-sizing: border-box;\\n}\\n.mat-list-base .mat-list-option .mat-line:nth-child(n+2) {\\n font-size: 14px;\\n}\\n.mat-list-base .mat-subheader {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n font-size: 14px;\\n font-weight: 500;\\n}\\n.mat-list-base[dense] .mat-list-item {\\n font-size: 12px;\\n}\\n.mat-list-base[dense] .mat-list-item .mat-line {\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n display: block;\\n box-sizing: border-box;\\n}\\n.mat-list-base[dense] .mat-list-item .mat-line:nth-child(n+2) {\\n font-size: 12px;\\n}\\n.mat-list-base[dense] .mat-list-option {\\n font-size: 12px;\\n}\\n.mat-list-base[dense] .mat-list-option .mat-line {\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n display: block;\\n box-sizing: border-box;\\n}\\n.mat-list-base[dense] .mat-list-option .mat-line:nth-child(n+2) {\\n font-size: 12px;\\n}\\n.mat-list-base[dense] .mat-subheader {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n font-size: 12px;\\n font-weight: 500;\\n}\\n.mat-option {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n font-size: 16px;\\n}\\n.mat-optgroup-label {\\n font: 500 14px/24px Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n letter-spacing: normal;\\n}\\n.mat-simple-snackbar {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n font-size: 14px;\\n}\\n.mat-simple-snackbar-action {\\n line-height: 1;\\n font-family: inherit;\\n font-size: inherit;\\n font-weight: 500;\\n}\\n.mat-tree {\\n font-family: Roboto, \\\"Helvetica Neue\\\", sans-serif;\\n}\\n.mat-tree-node,\\n.mat-nested-tree-node {\\n font-weight: 400;\\n font-size: 14px;\\n}\\n.mat-ripple {\\n overflow: hidden;\\n position: relative;\\n}\\n.mat-ripple:not(:empty) {\\n transform: translateZ(0);\\n}\\n.mat-ripple.mat-ripple-unbounded {\\n overflow: visible;\\n}\\n.mat-ripple-element {\\n position: absolute;\\n border-radius: 50%;\\n pointer-events: none;\\n transition: opacity, transform 0ms cubic-bezier(0, 0, 0.2, 1);\\n transform: scale(0);\\n}\\n.cdk-high-contrast-active .mat-ripple-element {\\n display: none;\\n}\\n.cdk-visually-hidden {\\n border: 0;\\n clip: rect(0 0 0 0);\\n height: 1px;\\n margin: -1px;\\n overflow: hidden;\\n padding: 0;\\n position: absolute;\\n width: 1px;\\n white-space: nowrap;\\n outline: 0;\\n -webkit-appearance: none;\\n -moz-appearance: none;\\n}\\n.cdk-overlay-container, .cdk-global-overlay-wrapper {\\n pointer-events: none;\\n top: 0;\\n left: 0;\\n height: 100%;\\n width: 100%;\\n}\\n.cdk-overlay-container {\\n position: fixed;\\n z-index: 1000;\\n}\\n.cdk-overlay-container:empty {\\n display: none;\\n}\\n.cdk-global-overlay-wrapper {\\n display: flex;\\n position: absolute;\\n z-index: 1000;\\n}\\n.cdk-overlay-pane {\\n position: absolute;\\n pointer-events: auto;\\n box-sizing: border-box;\\n z-index: 1000;\\n display: flex;\\n max-width: 100%;\\n max-height: 100%;\\n}\\n.cdk-overlay-backdrop {\\n position: absolute;\\n top: 0;\\n bottom: 0;\\n left: 0;\\n right: 0;\\n z-index: 1000;\\n pointer-events: auto;\\n -webkit-tap-highlight-color: transparent;\\n transition: opacity 400ms cubic-bezier(0.25, 0.8, 0.25, 1);\\n opacity: 0;\\n}\\n.cdk-overlay-backdrop.cdk-overlay-backdrop-showing {\\n opacity: 1;\\n}\\n.cdk-high-contrast-active .cdk-overlay-backdrop.cdk-overlay-backdrop-showing {\\n opacity: 0.6;\\n}\\n.cdk-overlay-dark-backdrop {\\n background: rgba(0, 0, 0, 0.32);\\n}\\n.cdk-overlay-transparent-backdrop, .cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing {\\n opacity: 0;\\n}\\n.cdk-overlay-connected-position-bounding-box {\\n position: absolute;\\n z-index: 1000;\\n display: flex;\\n flex-direction: column;\\n min-width: 1px;\\n min-height: 1px;\\n}\\n.cdk-global-scrollblock {\\n position: fixed;\\n width: 100%;\\n overflow-y: scroll;\\n}\\ntextarea.cdk-textarea-autosize {\\n resize: none;\\n}\\ntextarea.cdk-textarea-autosize-measuring {\\n padding: 2px 0 !important;\\n box-sizing: content-box !important;\\n height: auto !important;\\n overflow: hidden !important;\\n}\\ntextarea.cdk-textarea-autosize-measuring-firefox {\\n padding: 2px 0 !important;\\n box-sizing: content-box !important;\\n height: 0 !important;\\n}\\n@keyframes cdk-text-field-autofill-start {\\n /*!*/\\n}\\n@keyframes cdk-text-field-autofill-end {\\n /*!*/\\n}\\n.cdk-text-field-autofill-monitored:-webkit-autofill {\\n animation: cdk-text-field-autofill-start 0s 1ms;\\n}\\n.cdk-text-field-autofill-monitored:not(:-webkit-autofill) {\\n animation: cdk-text-field-autofill-end 0s 1ms;\\n}\\n.mat-focus-indicator {\\n position: relative;\\n}\\n.mat-mdc-focus-indicator {\\n position: relative;\\n}\\n.mat-badge-content {\\n font-weight: 600;\\n font-size: 12px;\\n font-family: OpenSans, sans-serif;\\n}\\n.mat-badge-small .mat-badge-content {\\n font-size: 9px;\\n}\\n.mat-badge-large .mat-badge-content {\\n font-size: 24px;\\n}\\n.mat-h1, .mat-headline, .mat-typography h1 {\\n font: 400 24px/32px OpenSans, sans-serif;\\n letter-spacing: normal;\\n margin: 0 0 16px;\\n}\\n.mat-h2, .mat-title, .mat-typography h2 {\\n font: 500 20px/32px OpenSans, sans-serif;\\n letter-spacing: normal;\\n margin: 0 0 16px;\\n}\\n.mat-h3, .mat-subheading-2, .mat-typography h3 {\\n font: 400 16px/28px OpenSans, sans-serif;\\n letter-spacing: normal;\\n margin: 0 0 16px;\\n}\\n.mat-h4, .mat-subheading-1, .mat-typography h4 {\\n font: 400 15px/24px OpenSans, sans-serif;\\n letter-spacing: normal;\\n margin: 0 0 16px;\\n}\\n.mat-h5, .mat-typography h5 {\\n font: normal calc(16px * 0.83)/24px OpenSans, sans-serif;\\n margin: 0 0 12px;\\n}\\n.mat-h6, .mat-typography h6 {\\n font: normal calc(16px * 0.67)/24px OpenSans, sans-serif;\\n margin: 0 0 12px;\\n}\\n.mat-body-strong, .mat-body-2 {\\n font: 500 14px/24px OpenSans, sans-serif;\\n letter-spacing: normal;\\n}\\n.mat-body, .mat-body-1, .mat-typography {\\n font: normal 16px/24px OpenSans, sans-serif;\\n letter-spacing: normal;\\n}\\n.mat-body p, .mat-body-1 p, .mat-typography p {\\n margin: 0 0 12px;\\n}\\n.mat-small, .mat-caption {\\n font: 400 12px/20px OpenSans, sans-serif;\\n letter-spacing: normal;\\n}\\n.mat-display-4, .mat-typography .mat-display-4 {\\n font: 300 112px/112px OpenSans, sans-serif;\\n letter-spacing: -0.05em;\\n margin: 0 0 56px;\\n}\\n.mat-display-3, .mat-typography .mat-display-3 {\\n font: 400 56px/56px OpenSans, sans-serif;\\n letter-spacing: -0.02em;\\n margin: 0 0 64px;\\n}\\n.mat-display-2, .mat-typography .mat-display-2 {\\n font: 400 45px/48px OpenSans, sans-serif;\\n letter-spacing: -0.005em;\\n margin: 0 0 64px;\\n}\\n.mat-display-1, .mat-typography .mat-display-1 {\\n font: 400 34px/40px OpenSans, sans-serif;\\n letter-spacing: normal;\\n margin: 0 0 64px;\\n}\\n.mat-bottom-sheet-container {\\n font: normal 16px/24px OpenSans, sans-serif;\\n letter-spacing: normal;\\n}\\n.mat-button, .mat-raised-button, .mat-icon-button, .mat-stroked-button,\\n.mat-flat-button, .mat-fab, .mat-mini-fab {\\n font-family: OpenSans, sans-serif;\\n font-size: 14px;\\n font-weight: 500;\\n}\\n.mat-button-toggle {\\n font-family: OpenSans, sans-serif;\\n}\\n.mat-card {\\n font-family: OpenSans, sans-serif;\\n}\\n.mat-card-title {\\n font-size: 24px;\\n font-weight: 500;\\n}\\n.mat-card-header .mat-card-title {\\n font-size: 20px;\\n}\\n.mat-card-subtitle,\\n.mat-card-content {\\n font-size: 16px;\\n}\\n.mat-checkbox {\\n font-family: OpenSans, sans-serif;\\n}\\n.mat-checkbox-layout .mat-checkbox-label {\\n line-height: 24px;\\n}\\n.mat-chip {\\n font-size: 14px;\\n font-weight: 500;\\n}\\n.mat-chip .mat-chip-trailing-icon.mat-icon,\\n.mat-chip .mat-chip-remove.mat-icon {\\n font-size: 18px;\\n}\\n.mat-table {\\n font-family: OpenSans, sans-serif;\\n}\\n.mat-header-cell {\\n font-size: 12px;\\n font-weight: 500;\\n}\\n.mat-cell, .mat-footer-cell {\\n font-size: 16px;\\n}\\n.mat-calendar {\\n font-family: OpenSans, sans-serif;\\n}\\n.mat-calendar-body {\\n font-size: 13px;\\n}\\n.mat-calendar-body-label,\\n.mat-calendar-period-button {\\n font-size: 14px;\\n font-weight: 500;\\n}\\n.mat-calendar-table-header th {\\n font-size: 11px;\\n font-weight: normal;\\n}\\n.mat-dialog-title {\\n font: 500 20px/32px OpenSans, sans-serif;\\n letter-spacing: normal;\\n}\\n.mat-expansion-panel-header {\\n font-family: OpenSans, sans-serif;\\n font-size: 15px;\\n font-weight: 400;\\n}\\n.mat-expansion-panel-content {\\n font: normal 16px/24px OpenSans, sans-serif;\\n letter-spacing: normal;\\n}\\n.mat-form-field {\\n font-size: inherit;\\n font-weight: 400;\\n line-height: 1.125;\\n font-family: OpenSans, sans-serif;\\n letter-spacing: normal;\\n}\\n.mat-form-field-wrapper {\\n padding-bottom: 1.34375em;\\n}\\n.mat-form-field-prefix .mat-icon,\\n.mat-form-field-suffix .mat-icon {\\n font-size: 150%;\\n line-height: 1.125;\\n}\\n.mat-form-field-prefix .mat-icon-button,\\n.mat-form-field-suffix .mat-icon-button {\\n height: 1.5em;\\n width: 1.5em;\\n}\\n.mat-form-field-prefix .mat-icon-button .mat-icon,\\n.mat-form-field-suffix .mat-icon-button .mat-icon {\\n height: 1.125em;\\n line-height: 1.125;\\n}\\n.mat-form-field-infix {\\n padding: 0.5em 0;\\n border-top: 0.84375em solid transparent;\\n}\\n.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,\\n.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.34373em) scale(0.75);\\n width: 133.3333533333%;\\n}\\n.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.34372em) scale(0.75);\\n width: 133.3333633333%;\\n}\\n.mat-form-field-label-wrapper {\\n top: -0.84375em;\\n padding-top: 0.84375em;\\n}\\n.mat-form-field-label {\\n top: 1.34375em;\\n}\\n.mat-form-field-underline {\\n bottom: 1.34375em;\\n}\\n.mat-form-field-subscript-wrapper {\\n font-size: 75%;\\n margin-top: 0.6666666667em;\\n top: calc(100% - 1.7916666667em);\\n}\\n.mat-form-field-appearance-legacy .mat-form-field-wrapper {\\n padding-bottom: 1.25em;\\n}\\n.mat-form-field-appearance-legacy .mat-form-field-infix {\\n padding: 0.4375em 0;\\n}\\n.mat-form-field-appearance-legacy.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,\\n.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.28125em) scale(0.75) perspective(100px) translateZ(0.00106px);\\n -ms-transform: translateY(-1.28119em) scale(0.75);\\n width: 133.3333933333%;\\n}\\n.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-form-field-autofill-control:-webkit-autofill + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.28125em) scale(0.75) perspective(100px) translateZ(0.00107px);\\n -ms-transform: translateY(-1.28118em) scale(0.75);\\n width: 133.3334033333%;\\n}\\n.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.28125em) scale(0.75) perspective(100px) translateZ(0.00108px);\\n -ms-transform: translateY(-1.28117em) scale(0.75);\\n width: 133.3334133333%;\\n}\\n.mat-form-field-appearance-legacy .mat-form-field-label {\\n top: 1.28125em;\\n}\\n.mat-form-field-appearance-legacy .mat-form-field-underline {\\n bottom: 1.25em;\\n}\\n.mat-form-field-appearance-legacy .mat-form-field-subscript-wrapper {\\n margin-top: 0.5416666667em;\\n top: calc(100% - 1.6666666667em);\\n}\\n@media print {\\n .mat-form-field-appearance-legacy.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,\\n.mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.28116em) scale(0.75);\\n }\\n .mat-form-field-appearance-legacy.mat-form-field-can-float .mat-form-field-autofill-control:-webkit-autofill + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.28115em) scale(0.75);\\n }\\n .mat-form-field-appearance-legacy.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.28114em) scale(0.75);\\n }\\n}\\n.mat-form-field-appearance-fill .mat-form-field-infix {\\n padding: 0.25em 0 0.75em 0;\\n}\\n.mat-form-field-appearance-fill .mat-form-field-label {\\n top: 1.09375em;\\n margin-top: -0.5em;\\n}\\n.mat-form-field-appearance-fill.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,\\n.mat-form-field-appearance-fill.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-0.59373em) scale(0.75);\\n width: 133.3333533333%;\\n}\\n.mat-form-field-appearance-fill.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-0.59372em) scale(0.75);\\n width: 133.3333633333%;\\n}\\n.mat-form-field-appearance-outline .mat-form-field-infix {\\n padding: 1em 0 1em 0;\\n}\\n.mat-form-field-appearance-outline .mat-form-field-label {\\n top: 1.84375em;\\n margin-top: -0.25em;\\n}\\n.mat-form-field-appearance-outline.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label,\\n.mat-form-field-appearance-outline.mat-form-field-can-float .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.59373em) scale(0.75);\\n width: 133.3333533333%;\\n}\\n.mat-form-field-appearance-outline.mat-form-field-can-float .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper .mat-form-field-label {\\n transform: translateY(-1.59372em) scale(0.75);\\n width: 133.3333633333%;\\n}\\n.mat-grid-tile-header,\\n.mat-grid-tile-footer {\\n font-size: 16px;\\n}\\n.mat-grid-tile-header .mat-line,\\n.mat-grid-tile-footer .mat-line {\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n display: block;\\n box-sizing: border-box;\\n}\\n.mat-grid-tile-header .mat-line:nth-child(n+2),\\n.mat-grid-tile-footer .mat-line:nth-child(n+2) {\\n font-size: 12px;\\n}\\ninput.mat-input-element {\\n margin-top: -0.0625em;\\n}\\n.mat-menu-item {\\n font-family: OpenSans, sans-serif;\\n font-size: 16px;\\n font-weight: normal;\\n}\\n.mat-paginator,\\n.mat-paginator-page-size .mat-select-trigger {\\n font-family: OpenSans, sans-serif;\\n font-size: 12px;\\n}\\n.mat-radio-button {\\n font-family: OpenSans, sans-serif;\\n}\\n.mat-select {\\n font-family: OpenSans, sans-serif;\\n}\\n.mat-select-trigger {\\n height: 1.125em;\\n}\\n.mat-slide-toggle-content {\\n font-family: OpenSans, sans-serif;\\n}\\n.mat-slider-thumb-label-text {\\n font-family: OpenSans, sans-serif;\\n font-size: 12px;\\n font-weight: 500;\\n}\\n.mat-stepper-vertical, .mat-stepper-horizontal {\\n font-family: OpenSans, sans-serif;\\n}\\n.mat-step-label {\\n font-size: 16px;\\n font-weight: normal;\\n}\\n.mat-step-sub-label-error {\\n font-weight: normal;\\n}\\n.mat-step-label-error {\\n font-size: 14px;\\n}\\n.mat-step-label-selected {\\n font-size: 14px;\\n font-weight: 500;\\n}\\n.mat-tab-group {\\n font-family: OpenSans, sans-serif;\\n}\\n.mat-tab-label, .mat-tab-link {\\n font-family: OpenSans, sans-serif;\\n font-size: 14px;\\n font-weight: 500;\\n}\\n.mat-toolbar,\\n.mat-toolbar h1,\\n.mat-toolbar h2,\\n.mat-toolbar h3,\\n.mat-toolbar h4,\\n.mat-toolbar h5,\\n.mat-toolbar h6 {\\n font: 500 20px/32px OpenSans, sans-serif;\\n letter-spacing: normal;\\n margin: 0;\\n}\\n.mat-tooltip {\\n font-family: OpenSans, sans-serif;\\n font-size: 10px;\\n padding-top: 6px;\\n padding-bottom: 6px;\\n}\\n.mat-tooltip-handset {\\n font-size: 14px;\\n padding-top: 8px;\\n padding-bottom: 8px;\\n}\\n.mat-list-item {\\n font-family: OpenSans, sans-serif;\\n}\\n.mat-list-option {\\n font-family: OpenSans, sans-serif;\\n}\\n.mat-list-base .mat-list-item {\\n font-size: 16px;\\n}\\n.mat-list-base .mat-list-item .mat-line {\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n display: block;\\n box-sizing: border-box;\\n}\\n.mat-list-base .mat-list-item .mat-line:nth-child(n+2) {\\n font-size: 16px;\\n}\\n.mat-list-base .mat-list-option {\\n font-size: 16px;\\n}\\n.mat-list-base .mat-list-option .mat-line {\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n display: block;\\n box-sizing: border-box;\\n}\\n.mat-list-base .mat-list-option .mat-line:nth-child(n+2) {\\n font-size: 16px;\\n}\\n.mat-list-base .mat-subheader {\\n font-family: OpenSans, sans-serif;\\n font-size: 14px;\\n font-weight: 500;\\n}\\n.mat-list-base[dense] .mat-list-item {\\n font-size: 12px;\\n}\\n.mat-list-base[dense] .mat-list-item .mat-line {\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n display: block;\\n box-sizing: border-box;\\n}\\n.mat-list-base[dense] .mat-list-item .mat-line:nth-child(n+2) {\\n font-size: 12px;\\n}\\n.mat-list-base[dense] .mat-list-option {\\n font-size: 12px;\\n}\\n.mat-list-base[dense] .mat-list-option .mat-line {\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n display: block;\\n box-sizing: border-box;\\n}\\n.mat-list-base[dense] .mat-list-option .mat-line:nth-child(n+2) {\\n font-size: 12px;\\n}\\n.mat-list-base[dense] .mat-subheader {\\n font-family: OpenSans, sans-serif;\\n font-size: 12px;\\n font-weight: 500;\\n}\\n.mat-option {\\n font-family: OpenSans, sans-serif;\\n font-size: 16px;\\n}\\n.mat-optgroup-label {\\n font: 500 14px/24px OpenSans, sans-serif;\\n letter-spacing: normal;\\n}\\n.mat-simple-snackbar {\\n font-family: OpenSans, sans-serif;\\n font-size: 16px;\\n}\\n.mat-simple-snackbar-action {\\n line-height: 1;\\n font-family: inherit;\\n font-size: inherit;\\n font-weight: 500;\\n}\\n.mat-tree {\\n font-family: OpenSans, sans-serif;\\n}\\n.mat-tree-node,\\n.mat-nested-tree-node {\\n font-weight: normal;\\n font-size: 16px;\\n}\\n.mat-typography h1, .mat-typography h2, .mat-typography h3, .mat-typography h4, .mat-typography h5, .mat-typography h6 {\\n font-family: BwModelica, monospace;\\n font-weight: bold;\\n}\\n.mat-ripple-element {\\n background-color: rgba(0, 0, 0, 0.1);\\n}\\n.mat-option {\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-option:hover:not(.mat-option-disabled), .mat-option:focus:not(.mat-option-disabled) {\\n background: rgba(0, 0, 0, 0.04);\\n}\\n.mat-option.mat-selected:not(.mat-option-multiple):not(.mat-option-disabled) {\\n background: rgba(0, 0, 0, 0.04);\\n}\\n.mat-option.mat-active {\\n background: rgba(0, 0, 0, 0.04);\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-option.mat-option-disabled {\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-primary .mat-option.mat-selected:not(.mat-option-disabled) {\\n color: #4775f5;\\n}\\n.mat-accent .mat-option.mat-selected:not(.mat-option-disabled) {\\n color: #f7cc71;\\n}\\n.mat-warn .mat-option.mat-selected:not(.mat-option-disabled) {\\n color: #fc8f76;\\n}\\n.mat-optgroup-label {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-optgroup-disabled .mat-optgroup-label {\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-pseudo-checkbox {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-pseudo-checkbox::after {\\n color: #fafafa;\\n}\\n.mat-pseudo-checkbox-disabled {\\n color: #b0b0b0;\\n}\\n.mat-primary .mat-pseudo-checkbox-checked,\\n.mat-primary .mat-pseudo-checkbox-indeterminate {\\n background: #4775f5;\\n}\\n.mat-pseudo-checkbox-checked,\\n.mat-pseudo-checkbox-indeterminate,\\n.mat-accent .mat-pseudo-checkbox-checked,\\n.mat-accent .mat-pseudo-checkbox-indeterminate {\\n background: #f7cc71;\\n}\\n.mat-warn .mat-pseudo-checkbox-checked,\\n.mat-warn .mat-pseudo-checkbox-indeterminate {\\n background: #fc8f76;\\n}\\n.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-disabled,\\n.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-disabled {\\n background: #b0b0b0;\\n}\\n.mat-app-background {\\n background-color: #fafafa;\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-elevation-z0 {\\n box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z1 {\\n box-shadow: 0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z2 {\\n box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z3 {\\n box-shadow: 0px 3px 3px -2px rgba(0, 0, 0, 0.2), 0px 3px 4px 0px rgba(0, 0, 0, 0.14), 0px 1px 8px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z4 {\\n box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z5 {\\n box-shadow: 0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 5px 8px 0px rgba(0, 0, 0, 0.14), 0px 1px 14px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z6 {\\n box-shadow: 0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z7 {\\n box-shadow: 0px 4px 5px -2px rgba(0, 0, 0, 0.2), 0px 7px 10px 1px rgba(0, 0, 0, 0.14), 0px 2px 16px 1px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z8 {\\n box-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.2), 0px 8px 10px 1px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z9 {\\n box-shadow: 0px 5px 6px -3px rgba(0, 0, 0, 0.2), 0px 9px 12px 1px rgba(0, 0, 0, 0.14), 0px 3px 16px 2px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z10 {\\n box-shadow: 0px 6px 6px -3px rgba(0, 0, 0, 0.2), 0px 10px 14px 1px rgba(0, 0, 0, 0.14), 0px 4px 18px 3px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z11 {\\n box-shadow: 0px 6px 7px -4px rgba(0, 0, 0, 0.2), 0px 11px 15px 1px rgba(0, 0, 0, 0.14), 0px 4px 20px 3px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z12 {\\n box-shadow: 0px 7px 8px -4px rgba(0, 0, 0, 0.2), 0px 12px 17px 2px rgba(0, 0, 0, 0.14), 0px 5px 22px 4px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z13 {\\n box-shadow: 0px 7px 8px -4px rgba(0, 0, 0, 0.2), 0px 13px 19px 2px rgba(0, 0, 0, 0.14), 0px 5px 24px 4px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z14 {\\n box-shadow: 0px 7px 9px -4px rgba(0, 0, 0, 0.2), 0px 14px 21px 2px rgba(0, 0, 0, 0.14), 0px 5px 26px 4px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z15 {\\n box-shadow: 0px 8px 9px -5px rgba(0, 0, 0, 0.2), 0px 15px 22px 2px rgba(0, 0, 0, 0.14), 0px 6px 28px 5px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z16 {\\n box-shadow: 0px 8px 10px -5px rgba(0, 0, 0, 0.2), 0px 16px 24px 2px rgba(0, 0, 0, 0.14), 0px 6px 30px 5px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z17 {\\n box-shadow: 0px 8px 11px -5px rgba(0, 0, 0, 0.2), 0px 17px 26px 2px rgba(0, 0, 0, 0.14), 0px 6px 32px 5px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z18 {\\n box-shadow: 0px 9px 11px -5px rgba(0, 0, 0, 0.2), 0px 18px 28px 2px rgba(0, 0, 0, 0.14), 0px 7px 34px 6px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z19 {\\n box-shadow: 0px 9px 12px -6px rgba(0, 0, 0, 0.2), 0px 19px 29px 2px rgba(0, 0, 0, 0.14), 0px 7px 36px 6px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z20 {\\n box-shadow: 0px 10px 13px -6px rgba(0, 0, 0, 0.2), 0px 20px 31px 3px rgba(0, 0, 0, 0.14), 0px 8px 38px 7px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z21 {\\n box-shadow: 0px 10px 13px -6px rgba(0, 0, 0, 0.2), 0px 21px 33px 3px rgba(0, 0, 0, 0.14), 0px 8px 40px 7px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z22 {\\n box-shadow: 0px 10px 14px -6px rgba(0, 0, 0, 0.2), 0px 22px 35px 3px rgba(0, 0, 0, 0.14), 0px 8px 42px 7px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z23 {\\n box-shadow: 0px 11px 14px -7px rgba(0, 0, 0, 0.2), 0px 23px 36px 3px rgba(0, 0, 0, 0.14), 0px 9px 44px 8px rgba(0, 0, 0, 0.12);\\n}\\n.mat-elevation-z24 {\\n box-shadow: 0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 9px 46px 8px rgba(0, 0, 0, 0.12);\\n}\\n.mat-theme-loaded-marker {\\n display: none;\\n}\\n.mat-autocomplete-panel {\\n background: white;\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-autocomplete-panel:not([class*=mat-elevation-z]) {\\n box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-autocomplete-panel .mat-option.mat-selected:not(.mat-active):not(:hover) {\\n background: white;\\n}\\n.mat-autocomplete-panel .mat-option.mat-selected:not(.mat-active):not(:hover):not(.mat-option-disabled) {\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-badge-content {\\n color: white;\\n background: #4775f5;\\n}\\n.cdk-high-contrast-active .mat-badge-content {\\n outline: solid 1px;\\n border-radius: 0;\\n}\\n.mat-badge-accent .mat-badge-content {\\n background: #f7cc71;\\n color: white;\\n}\\n.mat-badge-warn .mat-badge-content {\\n color: white;\\n background: #fc8f76;\\n}\\n.mat-badge {\\n position: relative;\\n}\\n.mat-badge-hidden .mat-badge-content {\\n display: none;\\n}\\n.mat-badge-disabled .mat-badge-content {\\n background: #b9b9b9;\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-badge-content {\\n position: absolute;\\n text-align: center;\\n display: inline-block;\\n border-radius: 50%;\\n transition: transform 200ms ease-in-out;\\n transform: scale(0.6);\\n overflow: hidden;\\n white-space: nowrap;\\n text-overflow: ellipsis;\\n pointer-events: none;\\n}\\n.ng-animate-disabled .mat-badge-content,\\n.mat-badge-content._mat-animation-noopable {\\n transition: none;\\n}\\n.mat-badge-content.mat-badge-active {\\n transform: none;\\n}\\n.mat-badge-small .mat-badge-content {\\n width: 16px;\\n height: 16px;\\n line-height: 16px;\\n}\\n.mat-badge-small.mat-badge-above .mat-badge-content {\\n top: -8px;\\n}\\n.mat-badge-small.mat-badge-below .mat-badge-content {\\n bottom: -8px;\\n}\\n.mat-badge-small.mat-badge-before .mat-badge-content {\\n left: -16px;\\n}\\n[dir=rtl] .mat-badge-small.mat-badge-before .mat-badge-content {\\n left: auto;\\n right: -16px;\\n}\\n.mat-badge-small.mat-badge-after .mat-badge-content {\\n right: -16px;\\n}\\n[dir=rtl] .mat-badge-small.mat-badge-after .mat-badge-content {\\n right: auto;\\n left: -16px;\\n}\\n.mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content {\\n left: -8px;\\n}\\n[dir=rtl] .mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content {\\n left: auto;\\n right: -8px;\\n}\\n.mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content {\\n right: -8px;\\n}\\n[dir=rtl] .mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content {\\n right: auto;\\n left: -8px;\\n}\\n.mat-badge-medium .mat-badge-content {\\n width: 22px;\\n height: 22px;\\n line-height: 22px;\\n}\\n.mat-badge-medium.mat-badge-above .mat-badge-content {\\n top: -11px;\\n}\\n.mat-badge-medium.mat-badge-below .mat-badge-content {\\n bottom: -11px;\\n}\\n.mat-badge-medium.mat-badge-before .mat-badge-content {\\n left: -22px;\\n}\\n[dir=rtl] .mat-badge-medium.mat-badge-before .mat-badge-content {\\n left: auto;\\n right: -22px;\\n}\\n.mat-badge-medium.mat-badge-after .mat-badge-content {\\n right: -22px;\\n}\\n[dir=rtl] .mat-badge-medium.mat-badge-after .mat-badge-content {\\n right: auto;\\n left: -22px;\\n}\\n.mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content {\\n left: -11px;\\n}\\n[dir=rtl] .mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content {\\n left: auto;\\n right: -11px;\\n}\\n.mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content {\\n right: -11px;\\n}\\n[dir=rtl] .mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content {\\n right: auto;\\n left: -11px;\\n}\\n.mat-badge-large .mat-badge-content {\\n width: 28px;\\n height: 28px;\\n line-height: 28px;\\n}\\n.mat-badge-large.mat-badge-above .mat-badge-content {\\n top: -14px;\\n}\\n.mat-badge-large.mat-badge-below .mat-badge-content {\\n bottom: -14px;\\n}\\n.mat-badge-large.mat-badge-before .mat-badge-content {\\n left: -28px;\\n}\\n[dir=rtl] .mat-badge-large.mat-badge-before .mat-badge-content {\\n left: auto;\\n right: -28px;\\n}\\n.mat-badge-large.mat-badge-after .mat-badge-content {\\n right: -28px;\\n}\\n[dir=rtl] .mat-badge-large.mat-badge-after .mat-badge-content {\\n right: auto;\\n left: -28px;\\n}\\n.mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content {\\n left: -14px;\\n}\\n[dir=rtl] .mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content {\\n left: auto;\\n right: -14px;\\n}\\n.mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content {\\n right: -14px;\\n}\\n[dir=rtl] .mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content {\\n right: auto;\\n left: -14px;\\n}\\n.mat-bottom-sheet-container {\\n box-shadow: 0px 8px 10px -5px rgba(0, 0, 0, 0.2), 0px 16px 24px 2px rgba(0, 0, 0, 0.14), 0px 6px 30px 5px rgba(0, 0, 0, 0.12);\\n background: white;\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-button, .mat-icon-button, .mat-stroked-button {\\n color: inherit;\\n background: transparent;\\n}\\n.mat-button.mat-primary, .mat-icon-button.mat-primary, .mat-stroked-button.mat-primary {\\n color: #4775f5;\\n}\\n.mat-button.mat-accent, .mat-icon-button.mat-accent, .mat-stroked-button.mat-accent {\\n color: #f7cc71;\\n}\\n.mat-button.mat-warn, .mat-icon-button.mat-warn, .mat-stroked-button.mat-warn {\\n color: #fc8f76;\\n}\\n.mat-button.mat-primary.mat-button-disabled, .mat-button.mat-accent.mat-button-disabled, .mat-button.mat-warn.mat-button-disabled, .mat-button.mat-button-disabled.mat-button-disabled, .mat-icon-button.mat-primary.mat-button-disabled, .mat-icon-button.mat-accent.mat-button-disabled, .mat-icon-button.mat-warn.mat-button-disabled, .mat-icon-button.mat-button-disabled.mat-button-disabled, .mat-stroked-button.mat-primary.mat-button-disabled, .mat-stroked-button.mat-accent.mat-button-disabled, .mat-stroked-button.mat-warn.mat-button-disabled, .mat-stroked-button.mat-button-disabled.mat-button-disabled {\\n color: rgba(0, 0, 0, 0.26);\\n}\\n.mat-button.mat-primary .mat-button-focus-overlay, .mat-icon-button.mat-primary .mat-button-focus-overlay, .mat-stroked-button.mat-primary .mat-button-focus-overlay {\\n background-color: #4775f5;\\n}\\n.mat-button.mat-accent .mat-button-focus-overlay, .mat-icon-button.mat-accent .mat-button-focus-overlay, .mat-stroked-button.mat-accent .mat-button-focus-overlay {\\n background-color: #f7cc71;\\n}\\n.mat-button.mat-warn .mat-button-focus-overlay, .mat-icon-button.mat-warn .mat-button-focus-overlay, .mat-stroked-button.mat-warn .mat-button-focus-overlay {\\n background-color: #fc8f76;\\n}\\n.mat-button.mat-button-disabled .mat-button-focus-overlay, .mat-icon-button.mat-button-disabled .mat-button-focus-overlay, .mat-stroked-button.mat-button-disabled .mat-button-focus-overlay {\\n background-color: transparent;\\n}\\n.mat-button .mat-ripple-element, .mat-icon-button .mat-ripple-element, .mat-stroked-button .mat-ripple-element {\\n opacity: 0.1;\\n background-color: currentColor;\\n}\\n.mat-button-focus-overlay {\\n background: black;\\n}\\n.mat-stroked-button:not(.mat-button-disabled) {\\n border-color: rgba(0, 0, 0, 0.12);\\n}\\n.mat-flat-button, .mat-raised-button, .mat-fab, .mat-mini-fab {\\n color: rgba(0, 0, 0, 0.87);\\n background-color: white;\\n}\\n.mat-flat-button.mat-primary, .mat-raised-button.mat-primary, .mat-fab.mat-primary, .mat-mini-fab.mat-primary {\\n color: white;\\n}\\n.mat-flat-button.mat-accent, .mat-raised-button.mat-accent, .mat-fab.mat-accent, .mat-mini-fab.mat-accent {\\n color: white;\\n}\\n.mat-flat-button.mat-warn, .mat-raised-button.mat-warn, .mat-fab.mat-warn, .mat-mini-fab.mat-warn {\\n color: white;\\n}\\n.mat-flat-button.mat-primary.mat-button-disabled, .mat-flat-button.mat-accent.mat-button-disabled, .mat-flat-button.mat-warn.mat-button-disabled, .mat-flat-button.mat-button-disabled.mat-button-disabled, .mat-raised-button.mat-primary.mat-button-disabled, .mat-raised-button.mat-accent.mat-button-disabled, .mat-raised-button.mat-warn.mat-button-disabled, .mat-raised-button.mat-button-disabled.mat-button-disabled, .mat-fab.mat-primary.mat-button-disabled, .mat-fab.mat-accent.mat-button-disabled, .mat-fab.mat-warn.mat-button-disabled, .mat-fab.mat-button-disabled.mat-button-disabled, .mat-mini-fab.mat-primary.mat-button-disabled, .mat-mini-fab.mat-accent.mat-button-disabled, .mat-mini-fab.mat-warn.mat-button-disabled, .mat-mini-fab.mat-button-disabled.mat-button-disabled {\\n color: rgba(0, 0, 0, 0.26);\\n}\\n.mat-flat-button.mat-primary, .mat-raised-button.mat-primary, .mat-fab.mat-primary, .mat-mini-fab.mat-primary {\\n background-color: #4775f5;\\n}\\n.mat-flat-button.mat-accent, .mat-raised-button.mat-accent, .mat-fab.mat-accent, .mat-mini-fab.mat-accent {\\n background-color: #f7cc71;\\n}\\n.mat-flat-button.mat-warn, .mat-raised-button.mat-warn, .mat-fab.mat-warn, .mat-mini-fab.mat-warn {\\n background-color: #fc8f76;\\n}\\n.mat-flat-button.mat-primary.mat-button-disabled, .mat-flat-button.mat-accent.mat-button-disabled, .mat-flat-button.mat-warn.mat-button-disabled, .mat-flat-button.mat-button-disabled.mat-button-disabled, .mat-raised-button.mat-primary.mat-button-disabled, .mat-raised-button.mat-accent.mat-button-disabled, .mat-raised-button.mat-warn.mat-button-disabled, .mat-raised-button.mat-button-disabled.mat-button-disabled, .mat-fab.mat-primary.mat-button-disabled, .mat-fab.mat-accent.mat-button-disabled, .mat-fab.mat-warn.mat-button-disabled, .mat-fab.mat-button-disabled.mat-button-disabled, .mat-mini-fab.mat-primary.mat-button-disabled, .mat-mini-fab.mat-accent.mat-button-disabled, .mat-mini-fab.mat-warn.mat-button-disabled, .mat-mini-fab.mat-button-disabled.mat-button-disabled {\\n background-color: rgba(0, 0, 0, 0.12);\\n}\\n.mat-flat-button.mat-primary .mat-ripple-element, .mat-raised-button.mat-primary .mat-ripple-element, .mat-fab.mat-primary .mat-ripple-element, .mat-mini-fab.mat-primary .mat-ripple-element {\\n background-color: rgba(255, 255, 255, 0.1);\\n}\\n.mat-flat-button.mat-accent .mat-ripple-element, .mat-raised-button.mat-accent .mat-ripple-element, .mat-fab.mat-accent .mat-ripple-element, .mat-mini-fab.mat-accent .mat-ripple-element {\\n background-color: rgba(255, 255, 255, 0.1);\\n}\\n.mat-flat-button.mat-warn .mat-ripple-element, .mat-raised-button.mat-warn .mat-ripple-element, .mat-fab.mat-warn .mat-ripple-element, .mat-mini-fab.mat-warn .mat-ripple-element {\\n background-color: rgba(255, 255, 255, 0.1);\\n}\\n.mat-stroked-button:not([class*=mat-elevation-z]), .mat-flat-button:not([class*=mat-elevation-z]) {\\n box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-raised-button:not([class*=mat-elevation-z]) {\\n box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-raised-button:not(.mat-button-disabled):active:not([class*=mat-elevation-z]) {\\n box-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.2), 0px 8px 10px 1px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0, 0, 0, 0.12);\\n}\\n.mat-raised-button.mat-button-disabled:not([class*=mat-elevation-z]) {\\n box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-fab:not([class*=mat-elevation-z]), .mat-mini-fab:not([class*=mat-elevation-z]) {\\n box-shadow: 0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-fab:not(.mat-button-disabled):active:not([class*=mat-elevation-z]), .mat-mini-fab:not(.mat-button-disabled):active:not([class*=mat-elevation-z]) {\\n box-shadow: 0px 7px 8px -4px rgba(0, 0, 0, 0.2), 0px 12px 17px 2px rgba(0, 0, 0, 0.14), 0px 5px 22px 4px rgba(0, 0, 0, 0.12);\\n}\\n.mat-fab.mat-button-disabled:not([class*=mat-elevation-z]), .mat-mini-fab.mat-button-disabled:not([class*=mat-elevation-z]) {\\n box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-button-toggle-standalone,\\n.mat-button-toggle-group {\\n box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-button-toggle-standalone.mat-button-toggle-appearance-standard,\\n.mat-button-toggle-group-appearance-standard {\\n box-shadow: none;\\n}\\n.mat-button-toggle {\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-button-toggle .mat-button-toggle-focus-overlay {\\n background-color: rgba(0, 0, 0, 0.12);\\n}\\n.mat-button-toggle-appearance-standard {\\n color: rgba(0, 0, 0, 0.87);\\n background: white;\\n}\\n.mat-button-toggle-appearance-standard .mat-button-toggle-focus-overlay {\\n background-color: black;\\n}\\n.mat-button-toggle-group-appearance-standard .mat-button-toggle + .mat-button-toggle {\\n border-left: solid 1px rgba(0, 0, 0, 0.12);\\n}\\n[dir=rtl] .mat-button-toggle-group-appearance-standard .mat-button-toggle + .mat-button-toggle {\\n border-left: none;\\n border-right: solid 1px rgba(0, 0, 0, 0.12);\\n}\\n.mat-button-toggle-group-appearance-standard.mat-button-toggle-vertical .mat-button-toggle + .mat-button-toggle {\\n border-left: none;\\n border-right: none;\\n border-top: solid 1px rgba(0, 0, 0, 0.12);\\n}\\n.mat-button-toggle-checked {\\n background-color: #e0e0e0;\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-button-toggle-checked.mat-button-toggle-appearance-standard {\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-button-toggle-disabled {\\n color: rgba(0, 0, 0, 0.26);\\n background-color: #eeeeee;\\n}\\n.mat-button-toggle-disabled.mat-button-toggle-appearance-standard {\\n background: white;\\n}\\n.mat-button-toggle-disabled.mat-button-toggle-checked {\\n background-color: #bdbdbd;\\n}\\n.mat-button-toggle-standalone.mat-button-toggle-appearance-standard,\\n.mat-button-toggle-group-appearance-standard {\\n border: solid 1px rgba(0, 0, 0, 0.12);\\n}\\n.mat-button-toggle-appearance-standard .mat-button-toggle-label-content {\\n line-height: 48px;\\n}\\n.mat-card {\\n background: white;\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-card:not([class*=mat-elevation-z]) {\\n box-shadow: 0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-card.mat-card-flat:not([class*=mat-elevation-z]) {\\n box-shadow: 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-card-subtitle {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-checkbox-frame {\\n border-color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-checkbox-checkmark {\\n fill: #fafafa;\\n}\\n.mat-checkbox-checkmark-path {\\n stroke: #fafafa !important;\\n}\\n.mat-checkbox-mixedmark {\\n background-color: #fafafa;\\n}\\n.mat-checkbox-indeterminate.mat-primary .mat-checkbox-background, .mat-checkbox-checked.mat-primary .mat-checkbox-background {\\n background-color: #4775f5;\\n}\\n.mat-checkbox-indeterminate.mat-accent .mat-checkbox-background, .mat-checkbox-checked.mat-accent .mat-checkbox-background {\\n background-color: #f7cc71;\\n}\\n.mat-checkbox-indeterminate.mat-warn .mat-checkbox-background, .mat-checkbox-checked.mat-warn .mat-checkbox-background {\\n background-color: #fc8f76;\\n}\\n.mat-checkbox-disabled.mat-checkbox-checked .mat-checkbox-background, .mat-checkbox-disabled.mat-checkbox-indeterminate .mat-checkbox-background {\\n background-color: #b0b0b0;\\n}\\n.mat-checkbox-disabled:not(.mat-checkbox-checked) .mat-checkbox-frame {\\n border-color: #b0b0b0;\\n}\\n.mat-checkbox-disabled .mat-checkbox-label {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-checkbox .mat-ripple-element {\\n background-color: black;\\n}\\n.mat-checkbox-checked:not(.mat-checkbox-disabled).mat-primary .mat-ripple-element,\\n.mat-checkbox:active:not(.mat-checkbox-disabled).mat-primary .mat-ripple-element {\\n background: #4775f5;\\n}\\n.mat-checkbox-checked:not(.mat-checkbox-disabled).mat-accent .mat-ripple-element,\\n.mat-checkbox:active:not(.mat-checkbox-disabled).mat-accent .mat-ripple-element {\\n background: #f7cc71;\\n}\\n.mat-checkbox-checked:not(.mat-checkbox-disabled).mat-warn .mat-ripple-element,\\n.mat-checkbox:active:not(.mat-checkbox-disabled).mat-warn .mat-ripple-element {\\n background: #fc8f76;\\n}\\n.mat-chip.mat-standard-chip {\\n background-color: #e0e0e0;\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-chip.mat-standard-chip .mat-chip-remove {\\n color: rgba(0, 0, 0, 0.87);\\n opacity: 0.4;\\n}\\n.mat-chip.mat-standard-chip:not(.mat-chip-disabled):active {\\n box-shadow: 0px 3px 3px -2px rgba(0, 0, 0, 0.2), 0px 3px 4px 0px rgba(0, 0, 0, 0.14), 0px 1px 8px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-chip.mat-standard-chip:not(.mat-chip-disabled) .mat-chip-remove:hover {\\n opacity: 0.54;\\n}\\n.mat-chip.mat-standard-chip.mat-chip-disabled {\\n opacity: 0.4;\\n}\\n.mat-chip.mat-standard-chip::after {\\n background: black;\\n}\\n.mat-chip.mat-standard-chip.mat-chip-selected.mat-primary {\\n background-color: #4775f5;\\n color: white;\\n}\\n.mat-chip.mat-standard-chip.mat-chip-selected.mat-primary .mat-chip-remove {\\n color: white;\\n opacity: 0.4;\\n}\\n.mat-chip.mat-standard-chip.mat-chip-selected.mat-primary .mat-ripple-element {\\n background-color: rgba(255, 255, 255, 0.1);\\n}\\n.mat-chip.mat-standard-chip.mat-chip-selected.mat-warn {\\n background-color: #fc8f76;\\n color: white;\\n}\\n.mat-chip.mat-standard-chip.mat-chip-selected.mat-warn .mat-chip-remove {\\n color: white;\\n opacity: 0.4;\\n}\\n.mat-chip.mat-standard-chip.mat-chip-selected.mat-warn .mat-ripple-element {\\n background-color: rgba(255, 255, 255, 0.1);\\n}\\n.mat-chip.mat-standard-chip.mat-chip-selected.mat-accent {\\n background-color: #f7cc71;\\n color: white;\\n}\\n.mat-chip.mat-standard-chip.mat-chip-selected.mat-accent .mat-chip-remove {\\n color: white;\\n opacity: 0.4;\\n}\\n.mat-chip.mat-standard-chip.mat-chip-selected.mat-accent .mat-ripple-element {\\n background-color: rgba(255, 255, 255, 0.1);\\n}\\n.mat-table {\\n background: white;\\n}\\n.mat-table thead, .mat-table tbody, .mat-table tfoot,\\nmat-header-row, mat-row, mat-footer-row,\\n[mat-header-row], [mat-row], [mat-footer-row],\\n.mat-table-sticky {\\n background: inherit;\\n}\\nmat-row, mat-header-row, mat-footer-row,\\nth.mat-header-cell, td.mat-cell, td.mat-footer-cell {\\n border-bottom-color: rgba(0, 0, 0, 0.12);\\n}\\n.mat-header-cell {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-cell, .mat-footer-cell {\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-calendar-arrow {\\n border-top-color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-datepicker-toggle,\\n.mat-datepicker-content .mat-calendar-next-button,\\n.mat-datepicker-content .mat-calendar-previous-button {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-calendar-table-header {\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-calendar-table-header-divider::after {\\n background: rgba(0, 0, 0, 0.12);\\n}\\n.mat-calendar-body-label {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-calendar-body-cell-content,\\n.mat-date-range-input-separator {\\n color: rgba(0, 0, 0, 0.87);\\n border-color: transparent;\\n}\\n.mat-calendar-body-disabled > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical) {\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-form-field-disabled .mat-date-range-input-separator {\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-calendar-body-in-preview {\\n color: rgba(0, 0, 0, 0.24);\\n}\\n.mat-calendar-body-today:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical) {\\n border-color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-calendar-body-disabled > .mat-calendar-body-today:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical) {\\n border-color: rgba(0, 0, 0, 0.18);\\n}\\n.mat-calendar-body-in-range::before {\\n background: rgba(71, 117, 245, 0.2);\\n}\\n.mat-calendar-body-comparison-identical,\\n.mat-calendar-body-in-comparison-range::before {\\n background: rgba(249, 171, 0, 0.2);\\n}\\n.mat-calendar-body-comparison-bridge-start::before,\\n[dir=rtl] .mat-calendar-body-comparison-bridge-end::before {\\n background: linear-gradient(to right, rgba(71, 117, 245, 0.2) 50%, rgba(249, 171, 0, 0.2) 50%);\\n}\\n.mat-calendar-body-comparison-bridge-end::before,\\n[dir=rtl] .mat-calendar-body-comparison-bridge-start::before {\\n background: linear-gradient(to left, rgba(71, 117, 245, 0.2) 50%, rgba(249, 171, 0, 0.2) 50%);\\n}\\n.mat-calendar-body-in-range > .mat-calendar-body-comparison-identical,\\n.mat-calendar-body-in-comparison-range.mat-calendar-body-in-range::after {\\n background: #a8dab5;\\n}\\n.mat-calendar-body-comparison-identical.mat-calendar-body-selected,\\n.mat-calendar-body-in-comparison-range > .mat-calendar-body-selected {\\n background: #46a35e;\\n}\\n.mat-calendar-body-selected {\\n background-color: #4775f5;\\n color: white;\\n}\\n.mat-calendar-body-disabled > .mat-calendar-body-selected {\\n background-color: rgba(71, 117, 245, 0.4);\\n}\\n.mat-calendar-body-today.mat-calendar-body-selected {\\n box-shadow: inset 0 0 0 1px white;\\n}\\n.mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),\\n.cdk-keyboard-focused .mat-calendar-body-active > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),\\n.cdk-program-focused .mat-calendar-body-active > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical) {\\n background-color: rgba(71, 117, 245, 0.3);\\n}\\n.mat-datepicker-content {\\n box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12);\\n background-color: white;\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-datepicker-content.mat-accent .mat-calendar-body-in-range::before {\\n background: rgba(247, 204, 113, 0.2);\\n}\\n.mat-datepicker-content.mat-accent .mat-calendar-body-comparison-identical,\\n.mat-datepicker-content.mat-accent .mat-calendar-body-in-comparison-range::before {\\n background: rgba(249, 171, 0, 0.2);\\n}\\n.mat-datepicker-content.mat-accent .mat-calendar-body-comparison-bridge-start::before,\\n.mat-datepicker-content.mat-accent [dir=rtl] .mat-calendar-body-comparison-bridge-end::before {\\n background: linear-gradient(to right, rgba(247, 204, 113, 0.2) 50%, rgba(249, 171, 0, 0.2) 50%);\\n}\\n.mat-datepicker-content.mat-accent .mat-calendar-body-comparison-bridge-end::before,\\n.mat-datepicker-content.mat-accent [dir=rtl] .mat-calendar-body-comparison-bridge-start::before {\\n background: linear-gradient(to left, rgba(247, 204, 113, 0.2) 50%, rgba(249, 171, 0, 0.2) 50%);\\n}\\n.mat-datepicker-content.mat-accent .mat-calendar-body-in-range > .mat-calendar-body-comparison-identical,\\n.mat-datepicker-content.mat-accent .mat-calendar-body-in-comparison-range.mat-calendar-body-in-range::after {\\n background: #a8dab5;\\n}\\n.mat-datepicker-content.mat-accent .mat-calendar-body-comparison-identical.mat-calendar-body-selected,\\n.mat-datepicker-content.mat-accent .mat-calendar-body-in-comparison-range > .mat-calendar-body-selected {\\n background: #46a35e;\\n}\\n.mat-datepicker-content.mat-accent .mat-calendar-body-selected {\\n background-color: #f7cc71;\\n color: white;\\n}\\n.mat-datepicker-content.mat-accent .mat-calendar-body-disabled > .mat-calendar-body-selected {\\n background-color: rgba(247, 204, 113, 0.4);\\n}\\n.mat-datepicker-content.mat-accent .mat-calendar-body-today.mat-calendar-body-selected {\\n box-shadow: inset 0 0 0 1px white;\\n}\\n.mat-datepicker-content.mat-accent .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),\\n.mat-datepicker-content.mat-accent .cdk-keyboard-focused .mat-calendar-body-active > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),\\n.mat-datepicker-content.mat-accent .cdk-program-focused .mat-calendar-body-active > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical) {\\n background-color: rgba(247, 204, 113, 0.3);\\n}\\n.mat-datepicker-content.mat-warn .mat-calendar-body-in-range::before {\\n background: rgba(252, 143, 118, 0.2);\\n}\\n.mat-datepicker-content.mat-warn .mat-calendar-body-comparison-identical,\\n.mat-datepicker-content.mat-warn .mat-calendar-body-in-comparison-range::before {\\n background: rgba(249, 171, 0, 0.2);\\n}\\n.mat-datepicker-content.mat-warn .mat-calendar-body-comparison-bridge-start::before,\\n.mat-datepicker-content.mat-warn [dir=rtl] .mat-calendar-body-comparison-bridge-end::before {\\n background: linear-gradient(to right, rgba(252, 143, 118, 0.2) 50%, rgba(249, 171, 0, 0.2) 50%);\\n}\\n.mat-datepicker-content.mat-warn .mat-calendar-body-comparison-bridge-end::before,\\n.mat-datepicker-content.mat-warn [dir=rtl] .mat-calendar-body-comparison-bridge-start::before {\\n background: linear-gradient(to left, rgba(252, 143, 118, 0.2) 50%, rgba(249, 171, 0, 0.2) 50%);\\n}\\n.mat-datepicker-content.mat-warn .mat-calendar-body-in-range > .mat-calendar-body-comparison-identical,\\n.mat-datepicker-content.mat-warn .mat-calendar-body-in-comparison-range.mat-calendar-body-in-range::after {\\n background: #a8dab5;\\n}\\n.mat-datepicker-content.mat-warn .mat-calendar-body-comparison-identical.mat-calendar-body-selected,\\n.mat-datepicker-content.mat-warn .mat-calendar-body-in-comparison-range > .mat-calendar-body-selected {\\n background: #46a35e;\\n}\\n.mat-datepicker-content.mat-warn .mat-calendar-body-selected {\\n background-color: #fc8f76;\\n color: white;\\n}\\n.mat-datepicker-content.mat-warn .mat-calendar-body-disabled > .mat-calendar-body-selected {\\n background-color: rgba(252, 143, 118, 0.4);\\n}\\n.mat-datepicker-content.mat-warn .mat-calendar-body-today.mat-calendar-body-selected {\\n box-shadow: inset 0 0 0 1px white;\\n}\\n.mat-datepicker-content.mat-warn .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),\\n.mat-datepicker-content.mat-warn .cdk-keyboard-focused .mat-calendar-body-active > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),\\n.mat-datepicker-content.mat-warn .cdk-program-focused .mat-calendar-body-active > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical) {\\n background-color: rgba(252, 143, 118, 0.3);\\n}\\n.mat-datepicker-content-touch {\\n box-shadow: 0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 9px 46px 8px rgba(0, 0, 0, 0.12);\\n}\\n.mat-datepicker-toggle-active {\\n color: #4775f5;\\n}\\n.mat-datepicker-toggle-active.mat-accent {\\n color: #f7cc71;\\n}\\n.mat-datepicker-toggle-active.mat-warn {\\n color: #fc8f76;\\n}\\n.mat-date-range-input-inner[disabled] {\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-dialog-container {\\n box-shadow: 0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 9px 46px 8px rgba(0, 0, 0, 0.12);\\n background: white;\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-divider {\\n border-top-color: rgba(0, 0, 0, 0.12);\\n}\\n.mat-divider-vertical {\\n border-right-color: rgba(0, 0, 0, 0.12);\\n}\\n.mat-expansion-panel {\\n background: white;\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-expansion-panel:not([class*=mat-elevation-z]) {\\n box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-action-row {\\n border-top-color: rgba(0, 0, 0, 0.12);\\n}\\n.mat-expansion-panel .mat-expansion-panel-header.cdk-keyboard-focused:not([aria-disabled=true]), .mat-expansion-panel .mat-expansion-panel-header.cdk-program-focused:not([aria-disabled=true]), .mat-expansion-panel:not(.mat-expanded) .mat-expansion-panel-header:hover:not([aria-disabled=true]) {\\n background: rgba(0, 0, 0, 0.04);\\n}\\n@media (hover: none) {\\n .mat-expansion-panel:not(.mat-expanded):not([aria-disabled=true]) .mat-expansion-panel-header:hover {\\n background: white;\\n }\\n}\\n.mat-expansion-panel-header-title {\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-expansion-panel-header-description,\\n.mat-expansion-indicator::after {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-expansion-panel-header[aria-disabled=true] {\\n color: rgba(0, 0, 0, 0.26);\\n}\\n.mat-expansion-panel-header[aria-disabled=true] .mat-expansion-panel-header-title,\\n.mat-expansion-panel-header[aria-disabled=true] .mat-expansion-panel-header-description {\\n color: inherit;\\n}\\n.mat-expansion-panel-header {\\n height: 48px;\\n}\\n.mat-expansion-panel-header.mat-expanded {\\n height: 64px;\\n}\\n.mat-form-field-label {\\n color: rgba(0, 0, 0, 0.6);\\n}\\n.mat-hint {\\n color: rgba(0, 0, 0, 0.6);\\n}\\n.mat-form-field.mat-focused .mat-form-field-label {\\n color: #4775f5;\\n}\\n.mat-form-field.mat-focused .mat-form-field-label.mat-accent {\\n color: #f7cc71;\\n}\\n.mat-form-field.mat-focused .mat-form-field-label.mat-warn {\\n color: #fc8f76;\\n}\\n.mat-focused .mat-form-field-required-marker {\\n color: #f7cc71;\\n}\\n.mat-form-field-ripple {\\n background-color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-form-field.mat-focused .mat-form-field-ripple {\\n background-color: #4775f5;\\n}\\n.mat-form-field.mat-focused .mat-form-field-ripple.mat-accent {\\n background-color: #f7cc71;\\n}\\n.mat-form-field.mat-focused .mat-form-field-ripple.mat-warn {\\n background-color: #fc8f76;\\n}\\n.mat-form-field-type-mat-native-select.mat-focused:not(.mat-form-field-invalid) .mat-form-field-infix::after {\\n color: #4775f5;\\n}\\n.mat-form-field-type-mat-native-select.mat-focused:not(.mat-form-field-invalid).mat-accent .mat-form-field-infix::after {\\n color: #f7cc71;\\n}\\n.mat-form-field-type-mat-native-select.mat-focused:not(.mat-form-field-invalid).mat-warn .mat-form-field-infix::after {\\n color: #fc8f76;\\n}\\n.mat-form-field.mat-form-field-invalid .mat-form-field-label {\\n color: #fc8f76;\\n}\\n.mat-form-field.mat-form-field-invalid .mat-form-field-label.mat-accent,\\n.mat-form-field.mat-form-field-invalid .mat-form-field-label .mat-form-field-required-marker {\\n color: #fc8f76;\\n}\\n.mat-form-field.mat-form-field-invalid .mat-form-field-ripple,\\n.mat-form-field.mat-form-field-invalid .mat-form-field-ripple.mat-accent {\\n background-color: #fc8f76;\\n}\\n.mat-error {\\n color: #fc8f76;\\n}\\n.mat-form-field-appearance-legacy .mat-form-field-label {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-form-field-appearance-legacy .mat-hint {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-form-field-appearance-legacy .mat-form-field-underline {\\n background-color: rgba(0, 0, 0, 0.42);\\n}\\n.mat-form-field-appearance-legacy.mat-form-field-disabled .mat-form-field-underline {\\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.42) 0%, rgba(0, 0, 0, 0.42) 33%, transparent 0%);\\n background-size: 4px 100%;\\n background-repeat: repeat-x;\\n}\\n.mat-form-field-appearance-standard .mat-form-field-underline {\\n background-color: rgba(0, 0, 0, 0.42);\\n}\\n.mat-form-field-appearance-standard.mat-form-field-disabled .mat-form-field-underline {\\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.42) 0%, rgba(0, 0, 0, 0.42) 33%, transparent 0%);\\n background-size: 4px 100%;\\n background-repeat: repeat-x;\\n}\\n.mat-form-field-appearance-fill .mat-form-field-flex {\\n background-color: rgba(0, 0, 0, 0.04);\\n}\\n.mat-form-field-appearance-fill.mat-form-field-disabled .mat-form-field-flex {\\n background-color: rgba(0, 0, 0, 0.02);\\n}\\n.mat-form-field-appearance-fill .mat-form-field-underline::before {\\n background-color: rgba(0, 0, 0, 0.42);\\n}\\n.mat-form-field-appearance-fill.mat-form-field-disabled .mat-form-field-label {\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-form-field-appearance-fill.mat-form-field-disabled .mat-form-field-underline::before {\\n background-color: transparent;\\n}\\n.mat-form-field-appearance-outline .mat-form-field-outline {\\n color: rgba(0, 0, 0, 0.12);\\n}\\n.mat-form-field-appearance-outline .mat-form-field-outline-thick {\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-form-field-appearance-outline.mat-focused .mat-form-field-outline-thick {\\n color: #4775f5;\\n}\\n.mat-form-field-appearance-outline.mat-focused.mat-accent .mat-form-field-outline-thick {\\n color: #f7cc71;\\n}\\n.mat-form-field-appearance-outline.mat-focused.mat-warn .mat-form-field-outline-thick {\\n color: #fc8f76;\\n}\\n.mat-form-field-appearance-outline.mat-form-field-invalid.mat-form-field-invalid .mat-form-field-outline-thick {\\n color: #fc8f76;\\n}\\n.mat-form-field-appearance-outline.mat-form-field-disabled .mat-form-field-label {\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-form-field-appearance-outline.mat-form-field-disabled .mat-form-field-outline {\\n color: rgba(0, 0, 0, 0.06);\\n}\\n.mat-icon.mat-primary {\\n color: #4775f5;\\n}\\n.mat-icon.mat-accent {\\n color: #f7cc71;\\n}\\n.mat-icon.mat-warn {\\n color: #fc8f76;\\n}\\n.mat-form-field-type-mat-native-select .mat-form-field-infix::after {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-input-element:disabled,\\n.mat-form-field-type-mat-native-select.mat-form-field-disabled .mat-form-field-infix::after {\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-input-element {\\n caret-color: #4775f5;\\n}\\n.mat-input-element:-ms-input-placeholder {\\n color: rgba(0, 0, 0, 0.42);\\n}\\n.mat-input-element::placeholder {\\n color: rgba(0, 0, 0, 0.42);\\n}\\n.mat-input-element::-moz-placeholder {\\n color: rgba(0, 0, 0, 0.42);\\n}\\n.mat-input-element::-webkit-input-placeholder {\\n color: rgba(0, 0, 0, 0.42);\\n}\\n.mat-input-element:-ms-input-placeholder {\\n color: rgba(0, 0, 0, 0.42);\\n}\\n.mat-form-field.mat-accent .mat-input-element {\\n caret-color: #f7cc71;\\n}\\n.mat-form-field.mat-warn .mat-input-element,\\n.mat-form-field-invalid .mat-input-element {\\n caret-color: #fc8f76;\\n}\\n.mat-form-field-type-mat-native-select.mat-form-field-invalid .mat-form-field-infix::after {\\n color: #fc8f76;\\n}\\n.mat-list-base .mat-list-item {\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-list-base .mat-list-option {\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-list-base .mat-subheader {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-list-item-disabled {\\n background-color: #eeeeee;\\n}\\n.mat-list-option:hover, .mat-list-option:focus,\\n.mat-nav-list .mat-list-item:hover,\\n.mat-nav-list .mat-list-item:focus,\\n.mat-action-list .mat-list-item:hover,\\n.mat-action-list .mat-list-item:focus {\\n background: rgba(0, 0, 0, 0.04);\\n}\\n.mat-list-single-selected-option, .mat-list-single-selected-option:hover, .mat-list-single-selected-option:focus {\\n background: rgba(0, 0, 0, 0.12);\\n}\\n.mat-menu-panel {\\n background: white;\\n}\\n.mat-menu-panel:not([class*=mat-elevation-z]) {\\n box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-menu-item {\\n background: transparent;\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-menu-item[disabled], .mat-menu-item[disabled]::after,\\n.mat-menu-item[disabled] .mat-icon-no-color {\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-menu-item .mat-icon-no-color,\\n.mat-menu-item-submenu-trigger::after {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-menu-item:hover:not([disabled]),\\n.mat-menu-item.cdk-program-focused:not([disabled]),\\n.mat-menu-item.cdk-keyboard-focused:not([disabled]),\\n.mat-menu-item-highlighted:not([disabled]) {\\n background: rgba(0, 0, 0, 0.04);\\n}\\n.mat-paginator {\\n background: white;\\n}\\n.mat-paginator,\\n.mat-paginator-page-size .mat-select-trigger {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-paginator-decrement,\\n.mat-paginator-increment {\\n border-top: 2px solid rgba(0, 0, 0, 0.54);\\n border-right: 2px solid rgba(0, 0, 0, 0.54);\\n}\\n.mat-paginator-first,\\n.mat-paginator-last {\\n border-top: 2px solid rgba(0, 0, 0, 0.54);\\n}\\n.mat-icon-button[disabled] .mat-paginator-decrement,\\n.mat-icon-button[disabled] .mat-paginator-increment,\\n.mat-icon-button[disabled] .mat-paginator-first,\\n.mat-icon-button[disabled] .mat-paginator-last {\\n border-color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-paginator-container {\\n min-height: 56px;\\n}\\n.mat-progress-bar-background {\\n fill: #cdd9f9;\\n}\\n.mat-progress-bar-buffer {\\n background-color: #cdd9f9;\\n}\\n.mat-progress-bar-fill::after {\\n background-color: #4775f5;\\n}\\n.mat-progress-bar.mat-accent .mat-progress-bar-background {\\n fill: #f9efd8;\\n}\\n.mat-progress-bar.mat-accent .mat-progress-bar-buffer {\\n background-color: #f9efd8;\\n}\\n.mat-progress-bar.mat-accent .mat-progress-bar-fill::after {\\n background-color: #f7cc71;\\n}\\n.mat-progress-bar.mat-warn .mat-progress-bar-background {\\n fill: #fbdfd9;\\n}\\n.mat-progress-bar.mat-warn .mat-progress-bar-buffer {\\n background-color: #fbdfd9;\\n}\\n.mat-progress-bar.mat-warn .mat-progress-bar-fill::after {\\n background-color: #fc8f76;\\n}\\n.mat-progress-spinner circle, .mat-spinner circle {\\n stroke: #4775f5;\\n}\\n.mat-progress-spinner.mat-accent circle, .mat-spinner.mat-accent circle {\\n stroke: #f7cc71;\\n}\\n.mat-progress-spinner.mat-warn circle, .mat-spinner.mat-warn circle {\\n stroke: #fc8f76;\\n}\\n.mat-radio-outer-circle {\\n border-color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-radio-button.mat-primary.mat-radio-checked .mat-radio-outer-circle {\\n border-color: #4775f5;\\n}\\n.mat-radio-button.mat-primary .mat-radio-inner-circle,\\n.mat-radio-button.mat-primary .mat-radio-ripple .mat-ripple-element:not(.mat-radio-persistent-ripple), .mat-radio-button.mat-primary.mat-radio-checked .mat-radio-persistent-ripple, .mat-radio-button.mat-primary:active .mat-radio-persistent-ripple {\\n background-color: #4775f5;\\n}\\n.mat-radio-button.mat-accent.mat-radio-checked .mat-radio-outer-circle {\\n border-color: #f7cc71;\\n}\\n.mat-radio-button.mat-accent .mat-radio-inner-circle,\\n.mat-radio-button.mat-accent .mat-radio-ripple .mat-ripple-element:not(.mat-radio-persistent-ripple), .mat-radio-button.mat-accent.mat-radio-checked .mat-radio-persistent-ripple, .mat-radio-button.mat-accent:active .mat-radio-persistent-ripple {\\n background-color: #f7cc71;\\n}\\n.mat-radio-button.mat-warn.mat-radio-checked .mat-radio-outer-circle {\\n border-color: #fc8f76;\\n}\\n.mat-radio-button.mat-warn .mat-radio-inner-circle,\\n.mat-radio-button.mat-warn .mat-radio-ripple .mat-ripple-element:not(.mat-radio-persistent-ripple), .mat-radio-button.mat-warn.mat-radio-checked .mat-radio-persistent-ripple, .mat-radio-button.mat-warn:active .mat-radio-persistent-ripple {\\n background-color: #fc8f76;\\n}\\n.mat-radio-button.mat-radio-disabled.mat-radio-checked .mat-radio-outer-circle,\\n.mat-radio-button.mat-radio-disabled .mat-radio-outer-circle {\\n border-color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-radio-button.mat-radio-disabled .mat-radio-ripple .mat-ripple-element,\\n.mat-radio-button.mat-radio-disabled .mat-radio-inner-circle {\\n background-color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-radio-button.mat-radio-disabled .mat-radio-label-content {\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-radio-button .mat-ripple-element {\\n background-color: black;\\n}\\n.mat-select-value {\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-select-placeholder {\\n color: rgba(0, 0, 0, 0.42);\\n}\\n.mat-select-disabled .mat-select-value {\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-select-arrow {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-select-panel {\\n background: white;\\n}\\n.mat-select-panel:not([class*=mat-elevation-z]) {\\n box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-select-panel .mat-option.mat-selected:not(.mat-option-multiple) {\\n background: rgba(0, 0, 0, 0.12);\\n}\\n.mat-form-field.mat-focused.mat-primary .mat-select-arrow {\\n color: #4775f5;\\n}\\n.mat-form-field.mat-focused.mat-accent .mat-select-arrow {\\n color: #f7cc71;\\n}\\n.mat-form-field.mat-focused.mat-warn .mat-select-arrow {\\n color: #fc8f76;\\n}\\n.mat-form-field .mat-select.mat-select-invalid .mat-select-arrow {\\n color: #fc8f76;\\n}\\n.mat-form-field .mat-select.mat-select-disabled .mat-select-arrow {\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-drawer-container {\\n background-color: #fafafa;\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-drawer {\\n background-color: white;\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-drawer.mat-drawer-push {\\n background-color: white;\\n}\\n.mat-drawer:not(.mat-drawer-side) {\\n box-shadow: 0px 8px 10px -5px rgba(0, 0, 0, 0.2), 0px 16px 24px 2px rgba(0, 0, 0, 0.14), 0px 6px 30px 5px rgba(0, 0, 0, 0.12);\\n}\\n.mat-drawer-side {\\n border-right: solid 1px rgba(0, 0, 0, 0.12);\\n}\\n.mat-drawer-side.mat-drawer-end {\\n border-left: solid 1px rgba(0, 0, 0, 0.12);\\n border-right: none;\\n}\\n[dir=rtl] .mat-drawer-side {\\n border-left: solid 1px rgba(0, 0, 0, 0.12);\\n border-right: none;\\n}\\n[dir=rtl] .mat-drawer-side.mat-drawer-end {\\n border-left: none;\\n border-right: solid 1px rgba(0, 0, 0, 0.12);\\n}\\n.mat-drawer-backdrop.mat-drawer-shown {\\n background-color: rgba(0, 0, 0, 0.6);\\n}\\n.mat-slide-toggle.mat-checked .mat-slide-toggle-thumb {\\n background-color: #f7cc71;\\n}\\n.mat-slide-toggle.mat-checked .mat-slide-toggle-bar {\\n background-color: rgba(247, 204, 113, 0.54);\\n}\\n.mat-slide-toggle.mat-checked .mat-ripple-element {\\n background-color: #f7cc71;\\n}\\n.mat-slide-toggle.mat-primary.mat-checked .mat-slide-toggle-thumb {\\n background-color: #4775f5;\\n}\\n.mat-slide-toggle.mat-primary.mat-checked .mat-slide-toggle-bar {\\n background-color: rgba(71, 117, 245, 0.54);\\n}\\n.mat-slide-toggle.mat-primary.mat-checked .mat-ripple-element {\\n background-color: #4775f5;\\n}\\n.mat-slide-toggle.mat-warn.mat-checked .mat-slide-toggle-thumb {\\n background-color: #fc8f76;\\n}\\n.mat-slide-toggle.mat-warn.mat-checked .mat-slide-toggle-bar {\\n background-color: rgba(252, 143, 118, 0.54);\\n}\\n.mat-slide-toggle.mat-warn.mat-checked .mat-ripple-element {\\n background-color: #fc8f76;\\n}\\n.mat-slide-toggle:not(.mat-checked) .mat-ripple-element {\\n background-color: black;\\n}\\n.mat-slide-toggle-thumb {\\n box-shadow: 0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12);\\n background-color: #fafafa;\\n}\\n.mat-slide-toggle-bar {\\n background-color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-slider-track-background {\\n background-color: rgba(0, 0, 0, 0.26);\\n}\\n.mat-primary .mat-slider-track-fill,\\n.mat-primary .mat-slider-thumb,\\n.mat-primary .mat-slider-thumb-label {\\n background-color: #4775f5;\\n}\\n.mat-primary .mat-slider-thumb-label-text {\\n color: white;\\n}\\n.mat-primary .mat-slider-focus-ring {\\n background-color: rgba(71, 117, 245, 0.2);\\n}\\n.mat-accent .mat-slider-track-fill,\\n.mat-accent .mat-slider-thumb,\\n.mat-accent .mat-slider-thumb-label {\\n background-color: #f7cc71;\\n}\\n.mat-accent .mat-slider-thumb-label-text {\\n color: white;\\n}\\n.mat-accent .mat-slider-focus-ring {\\n background-color: rgba(247, 204, 113, 0.2);\\n}\\n.mat-warn .mat-slider-track-fill,\\n.mat-warn .mat-slider-thumb,\\n.mat-warn .mat-slider-thumb-label {\\n background-color: #fc8f76;\\n}\\n.mat-warn .mat-slider-thumb-label-text {\\n color: white;\\n}\\n.mat-warn .mat-slider-focus-ring {\\n background-color: rgba(252, 143, 118, 0.2);\\n}\\n.mat-slider:hover .mat-slider-track-background,\\n.cdk-focused .mat-slider-track-background {\\n background-color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-slider-disabled .mat-slider-track-background,\\n.mat-slider-disabled .mat-slider-track-fill,\\n.mat-slider-disabled .mat-slider-thumb {\\n background-color: rgba(0, 0, 0, 0.26);\\n}\\n.mat-slider-disabled:hover .mat-slider-track-background {\\n background-color: rgba(0, 0, 0, 0.26);\\n}\\n.mat-slider-min-value .mat-slider-focus-ring {\\n background-color: rgba(0, 0, 0, 0.12);\\n}\\n.mat-slider-min-value.mat-slider-thumb-label-showing .mat-slider-thumb,\\n.mat-slider-min-value.mat-slider-thumb-label-showing .mat-slider-thumb-label {\\n background-color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-slider-min-value.mat-slider-thumb-label-showing.cdk-focused .mat-slider-thumb,\\n.mat-slider-min-value.mat-slider-thumb-label-showing.cdk-focused .mat-slider-thumb-label {\\n background-color: rgba(0, 0, 0, 0.26);\\n}\\n.mat-slider-min-value:not(.mat-slider-thumb-label-showing) .mat-slider-thumb {\\n border-color: rgba(0, 0, 0, 0.26);\\n background-color: transparent;\\n}\\n.mat-slider-min-value:not(.mat-slider-thumb-label-showing):hover .mat-slider-thumb, .mat-slider-min-value:not(.mat-slider-thumb-label-showing).cdk-focused .mat-slider-thumb {\\n border-color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-slider-min-value:not(.mat-slider-thumb-label-showing):hover.mat-slider-disabled .mat-slider-thumb, .mat-slider-min-value:not(.mat-slider-thumb-label-showing).cdk-focused.mat-slider-disabled .mat-slider-thumb {\\n border-color: rgba(0, 0, 0, 0.26);\\n}\\n.mat-slider-has-ticks .mat-slider-wrapper::after {\\n border-color: rgba(0, 0, 0, 0.7);\\n}\\n.mat-slider-horizontal .mat-slider-ticks {\\n background-image: repeating-linear-gradient(to right, rgba(0, 0, 0, 0.7), rgba(0, 0, 0, 0.7) 2px, transparent 0, transparent);\\n background-image: -moz-repeating-linear-gradient(0.0001deg, rgba(0, 0, 0, 0.7), rgba(0, 0, 0, 0.7) 2px, transparent 0, transparent);\\n}\\n.mat-slider-vertical .mat-slider-ticks {\\n background-image: repeating-linear-gradient(to bottom, rgba(0, 0, 0, 0.7), rgba(0, 0, 0, 0.7) 2px, transparent 0, transparent);\\n}\\n.mat-step-header.cdk-keyboard-focused, .mat-step-header.cdk-program-focused, .mat-step-header:hover {\\n background-color: rgba(0, 0, 0, 0.04);\\n}\\n@media (hover: none) {\\n .mat-step-header:hover {\\n background: none;\\n }\\n}\\n.mat-step-header .mat-step-label,\\n.mat-step-header .mat-step-optional {\\n color: rgba(0, 0, 0, 0.54);\\n}\\n.mat-step-header .mat-step-icon {\\n background-color: rgba(0, 0, 0, 0.54);\\n color: white;\\n}\\n.mat-step-header .mat-step-icon-selected,\\n.mat-step-header .mat-step-icon-state-done,\\n.mat-step-header .mat-step-icon-state-edit {\\n background-color: #4775f5;\\n color: white;\\n}\\n.mat-step-header.mat-accent .mat-step-icon {\\n color: white;\\n}\\n.mat-step-header.mat-accent .mat-step-icon-selected,\\n.mat-step-header.mat-accent .mat-step-icon-state-done,\\n.mat-step-header.mat-accent .mat-step-icon-state-edit {\\n background-color: #f7cc71;\\n color: white;\\n}\\n.mat-step-header.mat-warn .mat-step-icon {\\n color: white;\\n}\\n.mat-step-header.mat-warn .mat-step-icon-selected,\\n.mat-step-header.mat-warn .mat-step-icon-state-done,\\n.mat-step-header.mat-warn .mat-step-icon-state-edit {\\n background-color: #fc8f76;\\n color: white;\\n}\\n.mat-step-header .mat-step-icon-state-error {\\n background-color: transparent;\\n color: #fc8f76;\\n}\\n.mat-step-header .mat-step-label.mat-step-label-active {\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-step-header .mat-step-label.mat-step-label-error {\\n color: #fc8f76;\\n}\\n.mat-stepper-horizontal, .mat-stepper-vertical {\\n background-color: white;\\n}\\n.mat-stepper-vertical-line::before {\\n border-left-color: rgba(0, 0, 0, 0.12);\\n}\\n.mat-horizontal-stepper-header::before,\\n.mat-horizontal-stepper-header::after,\\n.mat-stepper-horizontal-line {\\n border-top-color: rgba(0, 0, 0, 0.12);\\n}\\n.mat-horizontal-stepper-header {\\n height: 72px;\\n}\\n.mat-stepper-label-position-bottom .mat-horizontal-stepper-header,\\n.mat-vertical-stepper-header {\\n padding: 24px 24px;\\n}\\n.mat-stepper-vertical-line::before {\\n top: -16px;\\n bottom: -16px;\\n}\\n.mat-stepper-label-position-bottom .mat-horizontal-stepper-header::after, .mat-stepper-label-position-bottom .mat-horizontal-stepper-header::before {\\n top: 36px;\\n}\\n.mat-stepper-label-position-bottom .mat-stepper-horizontal-line {\\n top: 36px;\\n}\\n.mat-sort-header-arrow {\\n color: #757575;\\n}\\n.mat-tab-nav-bar,\\n.mat-tab-header {\\n border-bottom: 1px solid rgba(0, 0, 0, 0.12);\\n}\\n.mat-tab-group-inverted-header .mat-tab-nav-bar,\\n.mat-tab-group-inverted-header .mat-tab-header {\\n border-top: 1px solid rgba(0, 0, 0, 0.12);\\n border-bottom: none;\\n}\\n.mat-tab-label, .mat-tab-link {\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-tab-label.mat-tab-disabled, .mat-tab-link.mat-tab-disabled {\\n color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-tab-header-pagination-chevron {\\n border-color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron {\\n border-color: rgba(0, 0, 0, 0.38);\\n}\\n.mat-tab-group[class*=mat-background-] .mat-tab-header,\\n.mat-tab-nav-bar[class*=mat-background-] {\\n border-bottom: none;\\n border-top: none;\\n}\\n.mat-tab-group.mat-primary .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-group.mat-primary .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),\\n.mat-tab-group.mat-primary .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),\\n.mat-tab-group.mat-primary .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-primary .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-primary .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),\\n.mat-tab-nav-bar.mat-primary .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),\\n.mat-tab-nav-bar.mat-primary .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled) {\\n background-color: rgba(104, 145, 255, 0.3);\\n}\\n.mat-tab-group.mat-primary .mat-ink-bar, .mat-tab-nav-bar.mat-primary .mat-ink-bar {\\n background-color: #4775f5;\\n}\\n.mat-tab-group.mat-primary.mat-background-primary > .mat-tab-header .mat-ink-bar, .mat-tab-group.mat-primary.mat-background-primary > .mat-tab-link-container .mat-ink-bar, .mat-tab-nav-bar.mat-primary.mat-background-primary > .mat-tab-header .mat-ink-bar, .mat-tab-nav-bar.mat-primary.mat-background-primary > .mat-tab-link-container .mat-ink-bar {\\n background-color: white;\\n}\\n.mat-tab-group.mat-accent .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-group.mat-accent .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),\\n.mat-tab-group.mat-accent .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),\\n.mat-tab-group.mat-accent .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-accent .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-accent .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),\\n.mat-tab-nav-bar.mat-accent .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),\\n.mat-tab-nav-bar.mat-accent .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled) {\\n background-color: rgba(255, 219, 142, 0.3);\\n}\\n.mat-tab-group.mat-accent .mat-ink-bar, .mat-tab-nav-bar.mat-accent .mat-ink-bar {\\n background-color: #f7cc71;\\n}\\n.mat-tab-group.mat-accent.mat-background-accent > .mat-tab-header .mat-ink-bar, .mat-tab-group.mat-accent.mat-background-accent > .mat-tab-link-container .mat-ink-bar, .mat-tab-nav-bar.mat-accent.mat-background-accent > .mat-tab-header .mat-ink-bar, .mat-tab-nav-bar.mat-accent.mat-background-accent > .mat-tab-link-container .mat-ink-bar {\\n background-color: white;\\n}\\n.mat-tab-group.mat-warn .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-group.mat-warn .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),\\n.mat-tab-group.mat-warn .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),\\n.mat-tab-group.mat-warn .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-warn .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-warn .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),\\n.mat-tab-nav-bar.mat-warn .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),\\n.mat-tab-nav-bar.mat-warn .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled) {\\n background-color: rgba(255, 165, 145, 0.3);\\n}\\n.mat-tab-group.mat-warn .mat-ink-bar, .mat-tab-nav-bar.mat-warn .mat-ink-bar {\\n background-color: #fc8f76;\\n}\\n.mat-tab-group.mat-warn.mat-background-warn > .mat-tab-header .mat-ink-bar, .mat-tab-group.mat-warn.mat-background-warn > .mat-tab-link-container .mat-ink-bar, .mat-tab-nav-bar.mat-warn.mat-background-warn > .mat-tab-header .mat-ink-bar, .mat-tab-nav-bar.mat-warn.mat-background-warn > .mat-tab-link-container .mat-ink-bar {\\n background-color: white;\\n}\\n.mat-tab-group.mat-background-primary .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-group.mat-background-primary .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),\\n.mat-tab-group.mat-background-primary .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),\\n.mat-tab-group.mat-background-primary .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-background-primary .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-background-primary .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),\\n.mat-tab-nav-bar.mat-background-primary .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),\\n.mat-tab-nav-bar.mat-background-primary .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled) {\\n background-color: rgba(104, 145, 255, 0.3);\\n}\\n.mat-tab-group.mat-background-primary > .mat-tab-header, .mat-tab-group.mat-background-primary > .mat-tab-link-container, .mat-tab-group.mat-background-primary > .mat-tab-header-pagination, .mat-tab-nav-bar.mat-background-primary > .mat-tab-header, .mat-tab-nav-bar.mat-background-primary > .mat-tab-link-container, .mat-tab-nav-bar.mat-background-primary > .mat-tab-header-pagination {\\n background-color: #4775f5;\\n}\\n.mat-tab-group.mat-background-primary > .mat-tab-header .mat-tab-label, .mat-tab-group.mat-background-primary > .mat-tab-link-container .mat-tab-link, .mat-tab-nav-bar.mat-background-primary > .mat-tab-header .mat-tab-label, .mat-tab-nav-bar.mat-background-primary > .mat-tab-link-container .mat-tab-link {\\n color: white;\\n}\\n.mat-tab-group.mat-background-primary > .mat-tab-header .mat-tab-label.mat-tab-disabled, .mat-tab-group.mat-background-primary > .mat-tab-link-container .mat-tab-link.mat-tab-disabled, .mat-tab-nav-bar.mat-background-primary > .mat-tab-header .mat-tab-label.mat-tab-disabled, .mat-tab-nav-bar.mat-background-primary > .mat-tab-link-container .mat-tab-link.mat-tab-disabled {\\n color: rgba(255, 255, 255, 0.4);\\n}\\n.mat-tab-group.mat-background-primary > .mat-tab-header .mat-tab-header-pagination-chevron,\\n.mat-tab-group.mat-background-primary > .mat-tab-header-pagination .mat-tab-header-pagination-chevron,\\n.mat-tab-group.mat-background-primary > .mat-tab-link-container .mat-focus-indicator::before,\\n.mat-tab-group.mat-background-primary > .mat-tab-header .mat-focus-indicator::before, .mat-tab-nav-bar.mat-background-primary > .mat-tab-header .mat-tab-header-pagination-chevron,\\n.mat-tab-nav-bar.mat-background-primary > .mat-tab-header-pagination .mat-tab-header-pagination-chevron,\\n.mat-tab-nav-bar.mat-background-primary > .mat-tab-link-container .mat-focus-indicator::before,\\n.mat-tab-nav-bar.mat-background-primary > .mat-tab-header .mat-focus-indicator::before {\\n border-color: white;\\n}\\n.mat-tab-group.mat-background-primary > .mat-tab-header .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron,\\n.mat-tab-group.mat-background-primary > .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron, .mat-tab-nav-bar.mat-background-primary > .mat-tab-header .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron,\\n.mat-tab-nav-bar.mat-background-primary > .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron {\\n border-color: rgba(255, 255, 255, 0.4);\\n}\\n.mat-tab-group.mat-background-primary > .mat-tab-header .mat-ripple-element,\\n.mat-tab-group.mat-background-primary > .mat-tab-link-container .mat-ripple-element,\\n.mat-tab-group.mat-background-primary > .mat-tab-header-pagination .mat-ripple-element, .mat-tab-nav-bar.mat-background-primary > .mat-tab-header .mat-ripple-element,\\n.mat-tab-nav-bar.mat-background-primary > .mat-tab-link-container .mat-ripple-element,\\n.mat-tab-nav-bar.mat-background-primary > .mat-tab-header-pagination .mat-ripple-element {\\n background-color: rgba(255, 255, 255, 0.12);\\n}\\n.mat-tab-group.mat-background-accent .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-group.mat-background-accent .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),\\n.mat-tab-group.mat-background-accent .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),\\n.mat-tab-group.mat-background-accent .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-background-accent .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-background-accent .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),\\n.mat-tab-nav-bar.mat-background-accent .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),\\n.mat-tab-nav-bar.mat-background-accent .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled) {\\n background-color: rgba(255, 219, 142, 0.3);\\n}\\n.mat-tab-group.mat-background-accent > .mat-tab-header, .mat-tab-group.mat-background-accent > .mat-tab-link-container, .mat-tab-group.mat-background-accent > .mat-tab-header-pagination, .mat-tab-nav-bar.mat-background-accent > .mat-tab-header, .mat-tab-nav-bar.mat-background-accent > .mat-tab-link-container, .mat-tab-nav-bar.mat-background-accent > .mat-tab-header-pagination {\\n background-color: #f7cc71;\\n}\\n.mat-tab-group.mat-background-accent > .mat-tab-header .mat-tab-label, .mat-tab-group.mat-background-accent > .mat-tab-link-container .mat-tab-link, .mat-tab-nav-bar.mat-background-accent > .mat-tab-header .mat-tab-label, .mat-tab-nav-bar.mat-background-accent > .mat-tab-link-container .mat-tab-link {\\n color: white;\\n}\\n.mat-tab-group.mat-background-accent > .mat-tab-header .mat-tab-label.mat-tab-disabled, .mat-tab-group.mat-background-accent > .mat-tab-link-container .mat-tab-link.mat-tab-disabled, .mat-tab-nav-bar.mat-background-accent > .mat-tab-header .mat-tab-label.mat-tab-disabled, .mat-tab-nav-bar.mat-background-accent > .mat-tab-link-container .mat-tab-link.mat-tab-disabled {\\n color: rgba(255, 255, 255, 0.4);\\n}\\n.mat-tab-group.mat-background-accent > .mat-tab-header .mat-tab-header-pagination-chevron,\\n.mat-tab-group.mat-background-accent > .mat-tab-header-pagination .mat-tab-header-pagination-chevron,\\n.mat-tab-group.mat-background-accent > .mat-tab-link-container .mat-focus-indicator::before,\\n.mat-tab-group.mat-background-accent > .mat-tab-header .mat-focus-indicator::before, .mat-tab-nav-bar.mat-background-accent > .mat-tab-header .mat-tab-header-pagination-chevron,\\n.mat-tab-nav-bar.mat-background-accent > .mat-tab-header-pagination .mat-tab-header-pagination-chevron,\\n.mat-tab-nav-bar.mat-background-accent > .mat-tab-link-container .mat-focus-indicator::before,\\n.mat-tab-nav-bar.mat-background-accent > .mat-tab-header .mat-focus-indicator::before {\\n border-color: white;\\n}\\n.mat-tab-group.mat-background-accent > .mat-tab-header .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron,\\n.mat-tab-group.mat-background-accent > .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron, .mat-tab-nav-bar.mat-background-accent > .mat-tab-header .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron,\\n.mat-tab-nav-bar.mat-background-accent > .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron {\\n border-color: rgba(255, 255, 255, 0.4);\\n}\\n.mat-tab-group.mat-background-accent > .mat-tab-header .mat-ripple-element,\\n.mat-tab-group.mat-background-accent > .mat-tab-link-container .mat-ripple-element,\\n.mat-tab-group.mat-background-accent > .mat-tab-header-pagination .mat-ripple-element, .mat-tab-nav-bar.mat-background-accent > .mat-tab-header .mat-ripple-element,\\n.mat-tab-nav-bar.mat-background-accent > .mat-tab-link-container .mat-ripple-element,\\n.mat-tab-nav-bar.mat-background-accent > .mat-tab-header-pagination .mat-ripple-element {\\n background-color: rgba(255, 255, 255, 0.12);\\n}\\n.mat-tab-group.mat-background-warn .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-group.mat-background-warn .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),\\n.mat-tab-group.mat-background-warn .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),\\n.mat-tab-group.mat-background-warn .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-background-warn .mat-tab-label.cdk-keyboard-focused:not(.mat-tab-disabled), .mat-tab-nav-bar.mat-background-warn .mat-tab-label.cdk-program-focused:not(.mat-tab-disabled),\\n.mat-tab-nav-bar.mat-background-warn .mat-tab-link.cdk-keyboard-focused:not(.mat-tab-disabled),\\n.mat-tab-nav-bar.mat-background-warn .mat-tab-link.cdk-program-focused:not(.mat-tab-disabled) {\\n background-color: rgba(255, 165, 145, 0.3);\\n}\\n.mat-tab-group.mat-background-warn > .mat-tab-header, .mat-tab-group.mat-background-warn > .mat-tab-link-container, .mat-tab-group.mat-background-warn > .mat-tab-header-pagination, .mat-tab-nav-bar.mat-background-warn > .mat-tab-header, .mat-tab-nav-bar.mat-background-warn > .mat-tab-link-container, .mat-tab-nav-bar.mat-background-warn > .mat-tab-header-pagination {\\n background-color: #fc8f76;\\n}\\n.mat-tab-group.mat-background-warn > .mat-tab-header .mat-tab-label, .mat-tab-group.mat-background-warn > .mat-tab-link-container .mat-tab-link, .mat-tab-nav-bar.mat-background-warn > .mat-tab-header .mat-tab-label, .mat-tab-nav-bar.mat-background-warn > .mat-tab-link-container .mat-tab-link {\\n color: white;\\n}\\n.mat-tab-group.mat-background-warn > .mat-tab-header .mat-tab-label.mat-tab-disabled, .mat-tab-group.mat-background-warn > .mat-tab-link-container .mat-tab-link.mat-tab-disabled, .mat-tab-nav-bar.mat-background-warn > .mat-tab-header .mat-tab-label.mat-tab-disabled, .mat-tab-nav-bar.mat-background-warn > .mat-tab-link-container .mat-tab-link.mat-tab-disabled {\\n color: rgba(255, 255, 255, 0.4);\\n}\\n.mat-tab-group.mat-background-warn > .mat-tab-header .mat-tab-header-pagination-chevron,\\n.mat-tab-group.mat-background-warn > .mat-tab-header-pagination .mat-tab-header-pagination-chevron,\\n.mat-tab-group.mat-background-warn > .mat-tab-link-container .mat-focus-indicator::before,\\n.mat-tab-group.mat-background-warn > .mat-tab-header .mat-focus-indicator::before, .mat-tab-nav-bar.mat-background-warn > .mat-tab-header .mat-tab-header-pagination-chevron,\\n.mat-tab-nav-bar.mat-background-warn > .mat-tab-header-pagination .mat-tab-header-pagination-chevron,\\n.mat-tab-nav-bar.mat-background-warn > .mat-tab-link-container .mat-focus-indicator::before,\\n.mat-tab-nav-bar.mat-background-warn > .mat-tab-header .mat-focus-indicator::before {\\n border-color: white;\\n}\\n.mat-tab-group.mat-background-warn > .mat-tab-header .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron,\\n.mat-tab-group.mat-background-warn > .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron, .mat-tab-nav-bar.mat-background-warn > .mat-tab-header .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron,\\n.mat-tab-nav-bar.mat-background-warn > .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron {\\n border-color: rgba(255, 255, 255, 0.4);\\n}\\n.mat-tab-group.mat-background-warn > .mat-tab-header .mat-ripple-element,\\n.mat-tab-group.mat-background-warn > .mat-tab-link-container .mat-ripple-element,\\n.mat-tab-group.mat-background-warn > .mat-tab-header-pagination .mat-ripple-element, .mat-tab-nav-bar.mat-background-warn > .mat-tab-header .mat-ripple-element,\\n.mat-tab-nav-bar.mat-background-warn > .mat-tab-link-container .mat-ripple-element,\\n.mat-tab-nav-bar.mat-background-warn > .mat-tab-header-pagination .mat-ripple-element {\\n background-color: rgba(255, 255, 255, 0.12);\\n}\\n.mat-toolbar {\\n background: whitesmoke;\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-toolbar.mat-primary {\\n background: #4775f5;\\n color: white;\\n}\\n.mat-toolbar.mat-accent {\\n background: #f7cc71;\\n color: white;\\n}\\n.mat-toolbar.mat-warn {\\n background: #fc8f76;\\n color: white;\\n}\\n.mat-toolbar .mat-form-field-underline,\\n.mat-toolbar .mat-form-field-ripple,\\n.mat-toolbar .mat-focused .mat-form-field-ripple {\\n background-color: currentColor;\\n}\\n.mat-toolbar .mat-form-field-label,\\n.mat-toolbar .mat-focused .mat-form-field-label,\\n.mat-toolbar .mat-select-value,\\n.mat-toolbar .mat-select-arrow,\\n.mat-toolbar .mat-form-field.mat-focused .mat-select-arrow {\\n color: inherit;\\n}\\n.mat-toolbar .mat-input-element {\\n caret-color: currentColor;\\n}\\n.mat-toolbar-multiple-rows {\\n min-height: 64px;\\n}\\n.mat-toolbar-row, .mat-toolbar-single-row {\\n height: 64px;\\n}\\n@media (max-width: 599px) {\\n .mat-toolbar-multiple-rows {\\n min-height: 56px;\\n }\\n\\n .mat-toolbar-row, .mat-toolbar-single-row {\\n height: 56px;\\n }\\n}\\n.mat-tooltip {\\n background: rgba(97, 97, 97, 0.9);\\n}\\n.mat-tree {\\n background: white;\\n}\\n.mat-tree-node,\\n.mat-nested-tree-node {\\n color: rgba(0, 0, 0, 0.87);\\n}\\n.mat-tree-node {\\n min-height: 48px;\\n}\\n.mat-snack-bar-container {\\n color: rgba(255, 255, 255, 0.7);\\n background: #323232;\\n box-shadow: 0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12);\\n}\\n.mat-simple-snackbar-action {\\n color: #f7cc71;\\n}\\n.cursor-pointer {\\n cursor: pointer;\\n}\\n.cursor-not-allowed {\\n cursor: not-allowed !important;\\n}\\n.cursor-text {\\n cursor: text;\\n}\\n.full-width, .three-dots-no-wrap {\\n width: 100%;\\n}\\n.three-dots {\\n overflow: hidden;\\n text-overflow: ellipsis;\\n}\\n.three-dots-no-wrap {\\n display: inline-block;\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n}\\n.no-copy {\\n -webkit-user-select: none;\\n /* Chrome all / Safari all */\\n /* Firefox all */\\n -ms-user-select: none;\\n /* IE 10+ */\\n user-select: none;\\n /* Likely future */\\n}\\n.position-absolute {\\n position: absolute;\\n}\\n.position-relative {\\n position: relative;\\n}\\n.position-fixed {\\n position: fixed;\\n}\\n.float-left {\\n float: left;\\n}\\n.float-right {\\n float: right;\\n}\\n.full-height {\\n height: 100vh;\\n}\\n.full-height.fit {\\n height: calc( (100vh - 50px) - 50px);\\n}\\n.pull-right {\\n float: right;\\n}\\n.pull-left {\\n float: left;\\n}\\n.max-width {\\n max-width: 780px;\\n}\\n.max-height-100 {\\n max-height: 100%;\\n}\\n.scroll-view {\\n overflow: auto;\\n height: 100%;\\n}\\n/* Breakpoints for Media Queries */\\n.user-details {\\n max-height: 100%;\\n overflow-y: auto;\\n}\\n.user-details_header {\\n display: grid;\\n grid-gap: 20px;\\n grid-template-columns: 120px 1fr;\\n grid-template-rows: 120px;\\n}\\n@media only screen and (max-width: 576px) {\\n .user-details_header {\\n grid-template-rows: auto;\\n grid-template-columns: 230px;\\n }\\n}\\n.user-details_header_logo {\\n width: 120px;\\n height: 120px;\\n background-color: white;\\n border-radius: 7px;\\n border: 4px solid #92adf7;\\n position: relative;\\n}\\n.user-details_header_logo img {\\n max-height: 100%;\\n}\\n.user-details_header_logo_upload {\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n opacity: 0;\\n transition: 0.3s;\\n}\\n.user-details_header_logo_upload:hover {\\n opacity: 1;\\n}\\n.user-details_header_logo_upload input {\\n display: none;\\n}\\n.user-details_header_details {\\n border-right: 1px solid #e8ebee;\\n}\\n@media only screen and (max-width: 576px) {\\n .user-details_header_details {\\n word-break: break-all;\\n border-right: none;\\n }\\n}\\n.user-details_header .avatar {\\n height: 100%;\\n width: 100%;\\n}\\n.user-details_header a.user-email {\\n margin-left: 7px;\\n}\\n.user-details_header_email-icon {\\n color: white;\\n font-size: 20px;\\n padding: 6px;\\n}\\n.user-details_header_company {\\n color: #949494;\\n}\\n.user-details_header_company .organization {\\n margin: 0 0 20px;\\n}\\n.user-details_header_company .position {\\n min-height: 24px;\\n}\\n.user-details_section-title {\\n margin: 20px 0;\\n height: 34px;\\n background: #f4f7f9;\\n}\\n.user-details .email-icon-container {\\n border-radius: 50%;\\n background-color: #10CF98;\\n box-shadow: 0 0 5px #10CF98;\\n}\\n.user-details .user-details-avatar {\\n width: 100%;\\n height: 100%;\\n font-size: 34px;\\n background-size: cover;\\n border-radius: 5px;\\n background-color: white;\\n}\\n.user-details .user-default-avatar {\\n width: 82px;\\n height: 82px;\\n font-size: 82px;\\n background-size: cover;\\n border-radius: 5px;\\n background-color: white;\\n}\\n.user-details .user-default-avatar .material-icons {\\n font-size: 34px;\\n}\\n.user-details button.upload-image {\\n top: 36px;\\n background-color: #3275F6;\\n opacity: 0.7;\\n padding: 2px 5px;\\n color: white;\\n border-radius: 0;\\n font-size: 0.75rem;\\n}\\n.mat-input-element, .mat-form-field-label {\\n min-height: 1.4rem;\\n line-height: 1.4rem;\\n}\\n@media only screen and (max-width: 576px) {\\n #user-personal-data {\\n flex-direction: column;\\n }\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3RoZW1lLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvYmFkZ2UvX2JhZGdlLXRoZW1lLnNjc3MiLCJ1c2VyLWRldGFpbHMuY29tcG9uZW50LnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZS90eXBvZ3JhcGh5L190eXBvZ3JhcGh5LnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZS90eXBvZ3JhcGh5L190eXBvZ3JhcGh5LXV0aWxzLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvYm90dG9tLXNoZWV0L19ib3R0b20tc2hlZXQtdGhlbWUuc2NzcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYW5ndWxhci9tYXRlcmlhbC9idXR0b24vX2J1dHRvbi10aGVtZS5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbi10b2dnbGUvX2J1dHRvbi10b2dnbGUtdGhlbWUuc2NzcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYW5ndWxhci9tYXRlcmlhbC9jYXJkL19jYXJkLXRoZW1lLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3gvX2NoZWNrYm94LXRoZW1lLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvY2hpcHMvX2NoaXBzLXRoZW1lLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGUvX3RhYmxlLXRoZW1lLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvZGF0ZXBpY2tlci9fZGF0ZXBpY2tlci10aGVtZS5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZy9fZGlhbG9nLXRoZW1lLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvZXhwYW5zaW9uL19leHBhbnNpb24tdGhlbWUuc2NzcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkL19mb3JtLWZpZWxkLXRoZW1lLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZC9fZm9ybS1maWVsZC1sZWdhY3ktdGhlbWUuc2NzcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkL19mb3JtLWZpZWxkLWZpbGwtdGhlbWUuc2NzcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkL19mb3JtLWZpZWxkLW91dGxpbmUtdGhlbWUuc2NzcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYW5ndWxhci9tYXRlcmlhbC9ncmlkLWxpc3QvX2dyaWQtbGlzdC10aGVtZS5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUvc3R5bGUvX2xpc3QtY29tbW9uLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQvX2lucHV0LXRoZW1lLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudS9fbWVudS10aGVtZS5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvci9fcGFnaW5hdG9yLXRoZW1lLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvcmFkaW8vX3JhZGlvLXRoZW1lLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0L19zZWxlY3QtdGhlbWUuc2NzcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYW5ndWxhci9tYXRlcmlhbC9zbGlkZS10b2dnbGUvX3NsaWRlLXRvZ2dsZS10aGVtZS5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL3NsaWRlci9fc2xpZGVyLXRoZW1lLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvc3RlcHBlci9fc3RlcHBlci10aGVtZS5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL3RhYnMvX3RhYnMtdGhlbWUuc2NzcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYW5ndWxhci9tYXRlcmlhbC90b29sYmFyL190b29sYmFyLXRoZW1lLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcC9fdG9vbHRpcC10aGVtZS5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL2xpc3QvX2xpc3QtdGhlbWUuc2NzcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYW5ndWxhci9tYXRlcmlhbC9jb3JlL29wdGlvbi9fb3B0aW9uLXRoZW1lLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZS9vcHRpb24vX29wdGdyb3VwLXRoZW1lLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvc25hY2stYmFyL19zbmFjay1iYXItdGhlbWUuc2NzcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYW5ndWxhci9tYXRlcmlhbC90cmVlL190cmVlLXRoZW1lLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZS9yaXBwbGUvX3JpcHBsZS5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL2Nkay9hMTF5L19pbmRleC5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL2Nkay9vdmVybGF5L19pbmRleC5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL2Nkay90ZXh0LWZpZWxkL19pbmRleC5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUvZm9jdXMtaW5kaWNhdG9ycy9fZm9jdXMtaW5kaWNhdG9ycy5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUvX2NvcmUuc2NzcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYW5ndWxhci9tYXRlcmlhbC9jb3JlL3JpcHBsZS9fcmlwcGxlLXRoZW1lLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZS9zZWxlY3Rpb24vcHNldWRvLWNoZWNrYm94L19wc2V1ZG8tY2hlY2tib3gtdGhlbWUuc2NzcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYW5ndWxhci9tYXRlcmlhbC9jb3JlL19jb3JlLXRoZW1lLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZS9zdHlsZS9fZWxldmF0aW9uLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvYXV0b2NvbXBsZXRlL19hdXRvY29tcGxldGUtdGhlbWUuc2NzcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYW5ndWxhci9tYXRlcmlhbC9kaXZpZGVyL19kaXZpZGVyLXRoZW1lLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvZXhwYW5zaW9uL19leHBhbnNpb24tbWl4aW5zLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZS9zdHlsZS9fZm9ybS1jb21tb24uc2NzcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkL19mb3JtLWZpZWxkLXN0YW5kYXJkLXRoZW1lLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbi9faWNvbi10aGVtZS5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUvc3R5bGUvX3ZlbmRvci1wcmVmaXhlcy5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLWJhci9fcHJvZ3Jlc3MtYmFyLXRoZW1lLnNjc3MiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3Mtc3Bpbm5lci9fcHJvZ3Jlc3Mtc3Bpbm5lci10aGVtZS5zY3NzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbmd1bGFyL21hdGVyaWFsL3NpZGVuYXYvX3NpZGVuYXYtdGhlbWUuc2NzcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AYW5ndWxhci9tYXRlcmlhbC9zb3J0L19zb3J0LXRoZW1lLnNjc3MiLCIuLi8uLi8uLi9oZWxwZXJzLnNjc3MiLCIuLi8uLi8uLi9icmVha3BvaW50cy5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdRLGdFQUFBO0FBSFIsOEVBQUE7QUNtTUU7RUFDRSxnQkF4TFU7RUF5TFYsZUExTFE7RUEyTFIsaURBQUE7QUNoTUo7QURtTUU7RUFFRSxjQUFBO0FDak1KO0FEb01FO0VBQ0UsZUFBQTtBQ2pNSjtBQ3dLRTtFQ3RHRSx3REFBQTtFQWNGLHNCQUFBO0VEMEZFLGdC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QUFBO0E1QzBwQ0Y7QTJDNXhDSTtFQ2tJRix5SEFBQTtBNUM4cENGO0EyQ2h5Q0k7RUNrSUYseUhBQUE7QTVDa3FDRjtBMkNweUNJO0VDa0lGLDBIQUFBO0E1Q3NxQ0Y7QTJDeHlDSTtFQ2tJRiwwSEFBQTtBNUMwcUNGO0EyQzV5Q0k7RUNrSUYsMkhBQUE7QTVDOHFDRjtBMkNoekNJO0VDa0lGLDJIQUFBO0E1Q2tyQ0Y7QTJDcHpDSTtFQ2tJRiwySEFBQTtBNUNzckNGO0EyQ3h6Q0k7RUNrSUYsMkhBQUE7QTVDMHJDRjtBMkM1ekNJO0VDa0lGLDRIQUFBO0E1QzhyQ0Y7QTJDaDBDSTtFQ2tJRiw0SEFBQTtBNUNrc0NGO0EyQ3AwQ0k7RUNrSUYsNEhBQUE7QTVDc3NDRjtBMkN4MENJO0VDa0lGLDRIQUFBO0E1QzBzQ0Y7QTJDNTBDSTtFQ2tJRiw0SEFBQTtBNUM4c0NGO0EyQ2gxQ0k7RUNrSUYsNEhBQUE7QTVDa3RDRjtBMkNwMUNJO0VDa0lGLDZIQUFBO0E1Q3N0Q0Y7QTJDeDFDSTtFQ2tJRiw2SEFBQTtBNUMwdENGO0EyQzUxQ0k7RUNrSUYsNkhBQUE7QTVDOHRDRjtBMkNoMkNJO0VDa0lGLDZIQUFBO0E1Q2t1Q0Y7QTJDcDJDSTtFQ2tJRiw4SEFBQTtBNUNzdUNGO0EyQ3gyQ0k7RUNrSUYsOEhBQUE7QTVDMHVDRjtBMkM1MkNJO0VDa0lGLDhIQUFBO0E1Qzh1Q0Y7QTJDaDNDSTtFQ2tJRiw4SEFBQTtBNUNrdkNGO0EyQ3AzQ0k7RUNrSUYsOEhBQUE7QTVDc3ZDRjtBMkNqM0NJO0VBQ0UsYUFBQTtBM0NvM0NOO0E2Qzk0Q0U7RUFFRSxpQkFBQTtFQUNBLDBCQUFBO0E3Q2c1Q0o7QTRDcHZDRTtFQVhBLDBIQUFBO0E1Q2t3Q0Y7QTZDNTRDSTtFQUNFLGlCQUFBO0E3Qzg0Q047QTZDNTRDTTtFQUNFLDBCQUFBO0E3Qzg0Q1I7QURqMENFO0VBQ0UsWUFBQTtFQUNBLG1CQUFBO0FDbzBDSjtBb0NuNENJO0VyQ2tFRSxrQkFBQTtFQUNBLGdCQUFBO0FDbzBDTjtBRC96Q0k7RUFDRSxtQkFBQTtFQUNBLFlB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QWhCaXZFMUI7QWdCN3RFTTtFQUNFLGNBcEJpQjtBaEJtdkV6QjtBZ0I1dEVNO0VBQ0UsY0F2QmU7QWhCcXZFdkI7QWdCeHRFTTtFQUNFLGNBOUJlO0FoQnd2RXZCO0FnQnJ0RU07RUFDRSwwQkEzQ2lCO0FoQmt3RXpCO0FnQnB0RU07RUFDRSwwQkF0Q0o7QWhCNHZFSjtBa0R6d0VJO0VBQ0UsY0FBQTtBbEQ0d0VOO0FrRHp3RUk7RUFDRSxjQUFBO0FsRDJ3RU47QWtEeHdFSTtFQUNFLGNBQUE7QWxEMHdFTjtBbUIvd0VFO0VBQ0UsMEJBQUE7QW5Ca3hFSjtBbUIvd0VFOztFQUVFLDBCQUFBO0FuQmt4RUo7QW1CL3dFRTtFQUNFLG9CQUFBO0FuQmt4RUo7QW1EbnlFRTtFaENvQkksMEJBQUE7QW5Ca3hFTjtBbUR0eUVFO0VoQ29CSSwwQkFBQTtBbkJreEVOO0FtRGx5RUU7RWhDZ0JJLDBCQUFBO0FuQnF4RU47QW1EanlFRTtFaENZSSwwQkFBQTtBbkJ3eEVOO0FtRGh5RUU7RWhDUUksMEJBQUE7QW5CMnhFTjtBbUJ4d0VFO0VBQ0Usb0JBQUE7QW5CMndFSjtBbUJ4d0VFOztFQUVFLG9CQUFBO0FuQjJ3RUo7QW1CeHdFRTtFQUNFLGNBQUE7QW5CMndFSjtBOEJ4ekVJO0VBQ0UsMEJBQUE7QTlCMnpFTjtBOEJ4ekVJO0VBQ0UsMEJBQUE7QTlCMHpFTjtBOEJ2ekVJO0VBQ0UsMEJBQUE7QTlCeXpFTjtBOEJyekVFO0VBQ0UseUJBQUE7QTlCd3pFSjtBOEJsekVJOzs7OztFQUNFLCtCQUFBO0E5Qnl6RU47QThCcHpFSTtFQUNFLCtCQUFBO0E5QnV6RU47QW9CbjFFRTtFQUVFLGlCQUFBO0FwQnExRUo7QTRDM3JFRTtFQVhBLDBIQUFBO0E1Q3lzRUY7QW9CcjFFRTtFQUNFLHVCQUFBO0VBQ0EsMEJBQUE7QXBCdzFFSjtBb0JyMUVNOztFQUdFLDBCQUFBO0FwQnMxRVI7QW9CajFFRTs7RUFFRSwwQkFBQTtBcEJvMUVKO0FvQjcwRUk7Ozs7RUFDRSwrQkFBQTtBcEJtMUVOO0FxQi8yRUU7RUFDRSxpQkFBQTtBckJrM0VKO0FxQi8yRUU7O0VBRUUsMEJBQUE7QXJCazNFSjtBcUIvMkVFOztFQUVFLHlDQUFBO0VBQ0EsMkNBQUE7QXJCazNFSjtBcUIvMkVFOztFQUVFLHlDQUFBO0FyQmszRUo7QXFCOTJFSTs7OztFQUlFLGlDQUFBO0FyQmkzRU47QXFCMTFFSTtFQUNFLGdCQUxLO0FyQmsyRVg7QW9EbjRFRTtFQUNFLGFBQUE7QXBEczRFSjtBb0RuNEVFO0VBQ0UseUJBQUE7QXBEczRFSjtBb0RuNEVFO0VBQ0UseUJBQUE7QXBEczRFSjtBb0RsNEVJO0VBQ0UsYUFBQTtBcERxNEVOO0FvRGw0RUk7RUFDRSx5QkFBQTtBcERvNEVOO0FvRGo0RUk7RUFDRSx5QkFBQTtBcERtNEVOO0FvRDkzRUk7RUFDRSxhQUFBO0FwRGk0RU47QW9EOTNFSTtFQUNFLHlCQUFBO0FwRGc0RU47QW9ENzNFSTtFQUNFLHlCQUFBO0FwRCszRU47QXFEaDdFSTtFQUNFLGVBQUE7QXJEbTdFTjtBcURoN0VJO0VBQ0UsZUFBQTtBckRrN0VOO0FxRC82RUk7RUFDRSxlQUFBO0FyRGk3RU47QXNCMTZFRTtFQUNFLGlDQUFBO0F0QjY2RUo7QXNCbDhFRTtFQUNFLHFCQUFBO0F0QnE4RUo7QXNCbDhFRTs7RUFJRSx5QkFBQTtBdEJrOEVKO0FzQjE4RUU7RUFDRSxxQkFBQTtBdEI0OEVKO0FzQno4RUU7O0VBSUUseUJBQUE7QXRCeThFSjtBc0JqOUVFO0VBQ0UscUJBQUE7QXRCbTlFSjtBc0JoOUVFOztFQUlFLHlCQUFBO0F0Qmc5RUo7QXNCLzZFTTs7RUFFRSxpQ0FBQTtBdEJpN0VSO0FzQjk2RU07O0VBRUUscUNBQUE7QXRCZzdFUjtBc0I3NkVNO0VBQ0UsMEJBQUE7QXRCKzZFUjtBc0J6NkVJO0VBQ0UsdUJBQUE7QXRCMjZFTjtBdUI1OUVFO0VBQ0UsMEJBQUE7QXZCKzlFSjtBdUI1OUVFO0VBQ0UsMEJBQUE7QXZCKzlFSjtBdUI1OUVFO0VBQ0UsMEJBQUE7QXZCKzlFSjtBdUI1OUVFO0VBQ0UsMEJBQUE7QXZCKzlFSjtBdUI1OUVFO0VBQ0UsaUJBQUE7QXZCKzlFSjtBNEN4MUVFO0VBWEEsMEhBQUE7QTVDczJFRjtBdUIvOUVJO0VBQ0UsK0JBQUE7QXZCaStFTjtBdUIzOUVNO0VBQ0UsY0FBQTtBdkI4OUVSO0F1QjM5RU07RUFDRSxjQUFBO0F2QjY5RVI7QXVCMTlFTTtFQUNFLGNBQUE7QXZCNDlFUjtBdUJ4OUVJO0VBQ0UsY0FBQTtBdkIwOUVOO0F1QnY5RUk7RUFDRSwwQkFBQTtBdkJ5OUVOO0FzRG5nRkU7RUFDRSx5QkFMbUM7RUFNbkMsMEJBQUE7QXREc2dGSjtBc0RuZ0ZFO0VBQ0UsdUJBWHdCO0VBWXhCLDBCQUFBO0F0RHNnRko7QXNEcGdGSTtFQUNFLHVCQWIyQjtBdERtaEZqQztBc0RuZ0ZJO0VWNkhGLDZIQUFBO0E1Q3k0RUY7QXNELy9FRTtFQUNFLDJDQXZCbUI7QXREeWhGdkI7QXNEaGdGSTtFQUNFLDBDQTFCaUI7RUEyQmpCLGtCQUFBO0F0RGtnRk47QXNEOS9FRTtFQUNFLDBDQWhDbUI7RUFpQ25CLGtCQUFBO0F0RGlnRko7QXNELy9FSTtFQUNFLGlCQUFBO0VBQ0EsMkNBckNpQjtBdERzaUZ2QjtBc0Q3L0VFO0VBUUksb0NBQUE7QXREeS9FTjtBd0JsakZJO0VBQ0UseUJBQUE7QXhCcWpGTjtBd0JsakZJO0VBR0UsMkNBQUE7QXhCa2pGTjtBd0IvaUZJO0VBR0UseUJBQUE7QXhCK2lGTjtBd0I1akZJO0VBQ0UseUJBQUE7QXhCOGpGTjtBd0IzakZJO0VBR0UsMENBQUE7QXhCMmpGTjtBd0J4akZJO0VBR0UseUJBQUE7QXhCd2pGTjtBd0Jya0ZJO0VBQ0UseUJBQUE7QXhCdWtGTjtBd0Jwa0ZJO0VBR0UsMkNBQUE7QXhCb2tGTjtBd0Jqa0ZJO0VBR0UseUJBQUE7QXhCaWtGTjtBd0I1aEZJO0VBR0UsdUJBaEJxQjtBeEI0aUYzQjtBd0J4aEZFO0VvQjJGQSx5SEFBQTtFcEJ6RkUseUJBQUE7QXhCMmhGSjtBd0J4aEZFO0VBQ0UscUNBM0JvQjtBeEJzakZ4QjtBeUJqakZFO0VBQ0UscUNBYnFCO0F6QmlrRnpCO0F5QmhtRkU7OztFQUdFLHlCQUFBO0F6Qm1tRko7QXlCaG1GRTtFQUNFLFlBQUE7QXpCa21GSjtBeUIvbEZFO0VBR0UseUNBRFE7QXpCZ21GWjtBeUI1bUZFOzs7RUFHRSx5QkFBQTtBekIrbUZKO0F5QjVtRkU7RUFDRSxZQUFBO0F6QjhtRko7QXlCM21GRTtFQUdFLDBDQURRO0F6QjRtRlo7QXlCeG5GRTs7O0VBR0UseUJBQUE7QXpCMm5GSjtBeUJ4bkZFO0VBQ0UsWUFBQTtBekIwbkZKO0F5QnZuRkU7RUFHRSwwQ0FEUTtBekJ3bkZaO0F5QnZrRkk7O0VBQ0UscUNBOUIyQjtBekJ5bUZqQztBeUJ0a0ZJOzs7RUFHRSxxQ0FyQ3dCO0F6QjhtRjlCO0F5QnJrRk07RUFDRSxxQ0ExQ3NCO0F6QmluRjlCO0F5QmprRkk7RUFHRSxxQ0FEUTtBekJta0ZkO0F5QnhqRk07O0VBRUUscUNBN0RKO0F6QnVuRko7QXlCdGpGUTs7RUFFRSxxQ0FqRU47QXpCeW5GSjtBeUJsakZNO0VBQ0UsaUNBOUVpQjtFQStFakIsNkJBQUE7QXpCb2pGUjtBeUIvaUZRO0VBQ0UsaUNBcEZ1QjtBekJxb0ZqQztBeUI5aUZRO0VBQ0UsaUNBdkZvQjtBekJ1b0Y5QjtBeUIxaUZFO0VBQ0UsZ0NBdkZBO0F6Qm9vRko7QXlCcGlGRTtFQUNFLDZIQUFBO0VBSUEsbUlBQUE7QXpCb2lGSjtBeUIxaEZFO0VBQ0UsOEhBQUE7QXpCNmhGSjtBMEI1cUZJO0VBR0UscUNBQUE7QTFCNnFGTjtBMEJ2cUZJO0VBQ0U7SUFDRSxnQkFBQTtFMUJ5cUZOO0FBQ0Y7QTBCdHFGSTs7RUFJRSwwQkFBQTtBMUJzcUZOO0EwQm5xRkk7RUFHRSxxQ0FBQTtFQUNBLFlBQUE7QTFCbXFGTjtBMEJocUZJOzs7RUFHRSx5QkFBQTtFQUNBLFlBQUE7QTFCa3FGTjtBMEI5cEZNO0VBQ0UsWUFBQTtBMUJncUZSO0EwQjdwRk07OztFQUdFLHlCQUFBO0VBQ0EsWUFBQTtBMUIrcEZSO0EwQjFwRk07RUFDRSxZQUFBO0ExQjRwRlI7QTBCenBGTTs7O0VBR0UseUJBQUE7RUFDQSxZQUFBO0ExQjJwRlI7QTBCdnBGSTtFQUNFLDZCQUFBO0VBQ0EsY0FBQTtBMUJ5cEZOO0EwQnRwRkk7RUFDRSwwQkFBQTtBMUJ3cEZOO0EwQnJwRkk7RUFDRSxjQUFBO0ExQnVwRk47QTBCbnBGRTtFQUNFLHVCQUFBO0ExQnNwRko7QTBCbnBGRTtFQUNFLHNDQUFBO0ExQnNwRko7QTBCbnBGRTs7O0VBR0UscUNBQUE7QTFCc3BGSjtBMEI3bUZJO0VBQ0UsWUFOSztBMUJzbkZYO0EwQjdtRkk7O0VBRUUsa0JBQUE7QTFCZ25GTjtBMEIzbUZJO0VBQ0UsVUFBQTtFQUNBLGFBQUE7QTFCOG1GTjtBMEJ6bUZNO0VBQ0UsU0FBQTtBMUI0bUZSO0EwQnZtRkk7RUFDRSxTQUFBO0ExQjBtRk47QXVEendGRTtFQVlJLGNBQUE7QXZEaXdGTjtBMkJ6d0ZFOztFQUVFLDRDQUpjO0EzQmd4RmxCO0EyQnh3Rkk7O0VBRUUseUNBVlk7RUFXWixtQkFBQTtBM0Iyd0ZOO0EyQnZ3RkU7RUFDRSwwQkFBQTtBM0Iwd0ZKO0EyQnh3Rkk7RUFDRSwwQkFBQTtBM0Iwd0ZOO0EyQnR3RkU7RUFDRSxpQ0FBQTtBM0J5d0ZKO0EyQnR3RkU7RUFDRSxpQ0FBQTtBM0J5d0ZKO0EyQnJ3RkU7O0VBRUUsbUJBQUE7RUFDQSxnQkFBQTtBM0J3d0ZKO0EyQjF0Rk07Ozs7O0VBQ0UsMENBQUE7QTNCaXVGUjtBMkI1dUZFO0VBQ0UseUJBQUE7QTNCOHVGSjtBMkIvdUZFO0VBQ0UsdUJBQUE7QTNCaXZGSjtBMkJ4dUZNOzs7OztFQUNFLDBDQUFBO0EzQjh1RlI7QTJCenZGRTtFQUNFLHlCQUFBO0EzQjJ2Rko7QTJCNXZGRTtFQUNFLHVCQUFBO0EzQjh2Rko7QTJCcnZGTTs7Ozs7RUFDRSwwQ0FBQTtBM0IydkZSO0EyQnR3RkU7RUFDRSx5QkFBQTtBM0J3d0ZKO0EyQnp3RkU7RUFDRSx1QkFBQTtBM0Iyd0ZKO0EyQmx3Rk07Ozs7O0VBQ0UsMENBQUE7QTNCd3dGUjtBMkI3dkZFO0VBQ0UseUJBQUE7QTNCK3ZGSjtBMkIzdkZFO0VBQ0UsWUFBQTtBM0I2dkZKO0EyQjN2Rkk7RUFDRSwrQkFBQTtBM0I2dkZOO0EyQnh2RkU7Ozs7Ozs7RUFJRSxtQkFBQTtBM0I2dkZKO0EyQjF2RkU7OztFQUVFLHNDQUFBO0EzQjZ2Rko7QTJCeHZGRTs7Ozs7RUFHRSwyQ0FBQTtBM0I0dkZKO0EyQnZ5Rk07Ozs7O0VBQ0UsMENBQUE7QTNCNnlGUjtBMkJseUZFO0VBQ0UseUJBQUE7QTNCb3lGSjtBMkJoeUZFO0VBQ0UsWUFBQTtBM0JreUZKO0EyQmh5Rkk7RUFDRSwrQkFBQTtBM0JreUZOO0EyQjd4RkU7Ozs7Ozs7RUFJRSxtQkFBQTtBM0JreUZKO0EyQi94RkU7OztFQUVFLHNDQUFBO0EzQmt5Rko7QTJCN3hGRTs7Ozs7RUFHRSwyQ0FBQTtBM0JpeUZKO0EyQjUwRk07Ozs7O0VBQ0UsMENBQUE7QTNCazFGUjtBMkJ2MEZFO0VBQ0UseUJBQUE7QTNCeTBGSjtBMkJyMEZFO0VBQ0UsWUFBQTtBM0J1MEZKO0EyQnIwRkk7RUFDRSwrQkFBQTtBM0J1MEZOO0EyQmwwRkU7Ozs7Ozs7RUFJRSxtQkFBQTtBM0J1MEZKO0EyQnAwRkU7OztFQUVFLHNDQUFBO0EzQnUwRko7QTJCbDBGRTs7Ozs7RUFHRSwyQ0FBQTtBM0JzMEZKO0E0QjU1RkU7RUFDRSxzQkFBQTtFQUNBLDBCQUFBO0E1Qis1Rko7QTRCNzVGSTtFQXBDRixtQkFBQTtFQUNBLFlBQUE7QTVCbzhGRjtBNEI3NUZJO0VBeENGLG1CQUFBO0VBQ0EsWUFBQTtBNUJ3OEZGO0E0Qjc1Rkk7RUE1Q0YsbUJBQUE7RUFDQSxZQUFBO0E1QjQ4RkY7QTRCeDhGRTs7O0VBR0UsOEJBQUE7QTVCMDhGSjtBNEJ2OEZFOzs7OztFQUtFLGNBQUE7QTVCeThGSjtBNEJ0OEZFO0VBQ0UseUJBQUE7QTVCdzhGSjtBNEJyK0ZFO0VBQ0UsZ0JBNkVlO0E1QjI1Rm5CO0E0QnQrRkU7RUFDRSxZQTBFZTtBNUIrNUZuQjtBNEJuNUZJO0VBMUZGO0lBQ0UsZ0JBK0VjO0U1Qms2RmhCOztFNEIvK0ZBO0lBQ0UsWUE0RWM7RTVCczZGaEI7QUFDRjtBNkI5K0ZFO0VBQ0UsaUNBQUE7QTdCZy9GSjtBa0N2L0ZFO0VBQ0UsaUJBQUE7QWxDMC9GSjtBa0N2L0ZFOztFQUVFLDBCQUFBO0FsQzAvRko7QWtDbCtGSTtFQUNFLGdCQUxLO0FsQzArRlg7QWlDcGdHRTtFQUdFLCtCQUFBO0VBQ0EsbUJBQUE7RVc2SUYsMkhBQUE7QTVDeTNGRjtBaUNqZ0dFO0VBQ0UsY0FBQTtBakNvZ0dKO0F3RHZoR0E7RUFDRSxlQUFBO0F4RDBoR0Y7QXdEeGhHQTtFQUNHLDhCQUFBO0F4RDJoR0g7QXdEemhHQTtFQUNFLFlBQUE7QXhENGhHRjtBd0R6aEdBO0VBQ0UsV0FBQTtBeEQ0aEdGO0F3RHpoR0E7RUFDRSxnQkFBQTtFQUNBLHVCQUFBO0F4RDRoR0Y7QXdEemhHQTtFQUVFLHFCQUFBO0VBQ0EsbUJBQUE7RUFDQSxnQkFBQTtFQUNBLHVCQUFBO0F4RDJoR0Y7QXdEeGhHQTtFQUNFLHlCQUFBO0VBQTRCLDRCQUFBO0VBQ0EsZ0JBQUE7RUFDNUIscUJBQUE7RUFBNEIsV0FBQTtFQUM1QixpQkFBQTtFQUE0QixrQkFBQTtBeEQraEc5QjtBd0QzaEdBO0VBQ0Usa0JBQUE7QXhEOGhHRjtBd0Q1aEdBO0VBQ0Usa0JBQUE7QXhEK2hHRjtBd0Q3aEdBO0VBQ0UsZUFBQTtBeERnaUdGO0F3RDVoR0E7RUFDRSxXQUFBO0F4RCtoR0Y7QXdEN2hHQTtFQUNFLFlBQUE7QXhEZ2lHRjtBd0Q5aEdBO0VBQ0UsYUF2RFc7QXhEd2xHYjtBd0RoaUdFO0VBQ0Usb0NBQUE7QXhEa2lHSjtBd0QvaEdBO0VBQ0UsWUFBQTtBeERraUdGO0F3RGhpR0E7RUFDRSxXQUFBO0F4RG1pR0Y7QXdEamlHQTtFQUNFLGdCQUFBO0F4RG9pR0Y7QXdEamlHQTtFQUNFLGdCQUFBO0F4RG9pR0Y7QXdEamlHQTtFQUNFLGNBQUE7RUFDQSxZQUFBO0F4RG9pR0Y7QXlEam5HQSxrQ0FBQTtBekRLQTtFQUNFLGdCQUFBO0VBQ0EsZ0JBQUE7QUFnbkdGO0FBOW1HRTtFQUNFLGFBQUE7RUFDQSxjQUFBO0VBQ0EsZ0NBQUE7RUFDQSx5QkFBQTtBQWduR0o7QXlEMW5HRTtFekRNQTtJQU1JLHdCQUFBO0lBQ0EsNEJBQUE7RUFrbkdKO0FBQ0Y7QUFobkdJO0VBQ0UsWUFBQTtFQUNBLGFBQUE7RUFDQSx1QkFBQTtFQUNBLGtCQUFBO0VBQ0EseUJBQUE7RUFDQSxrQkFBQTtBQWtuR047QUFobkdNO0VBQ0UsZ0JBQUE7QUFrbkdSO0FBL21HTTtFQUNFLGtCQUFBO0VBQ0EsTUFBQTtFQUNBLE9BQUE7RUFDQSxXQUFBO0VBQ0EsWUFBQTtFQUNBLFVBQUE7RUFDQSxnQkFBQTtBQWluR1I7QUEvbUdRO0VBQ0UsVUFBQTtBQWluR1Y7QUE5bUdRO0VBQ0UsYUFBQTtBQWduR1Y7QUEzbUdJO0VBS0UsK0JBQUE7QUF5bUdOO0F5RDdwR0U7RXpEK0NFO0lBRUkscUJBQUE7SUFDQSxrQkFBQTtFQWduR047QUFDRjtBQXptR0k7RUFDRSxZQUFBO0VBQ0EsV0FBQTtBQTJtR047QUF4bUdJO0VBQ0UsZ0JBQUE7QUEwbUdOO0FBdm1HSTtFQUNFLFlBQUE7RUFDQSxlQUFBO0VBQ0EsWUFBQTtBQXltR047QUF0bUdJO0VBQ0UsY0FBQTtBQXdtR047QUF0bUdNO0VBQ0UsZ0JBQUE7QUF3bUdSO0FBcm1HTTtFQUNFLGdCQUFBO0FBdW1HUjtBQWxtR0U7RUFDRSxjQUFBO0VBQ0EsWUFBQTtFQUNBLG1CQUFBO0FBb21HSjtBQWptR0U7RUFDRSxrQkFBQTtFQUNBLHlCQUFBO0VBQ0EsMkJBQUE7QUFtbUdKO0FBaG1HRTtFQUNFLFdBQUE7RUFDQSxZQUFBO0VBQ0EsZUFBQTtFQUNBLHNCQUFBO0VBQ0Esa0JBQUE7RUFDQSx1QkFBQTtBQWttR0o7QUE5bEdFO0VBQ0UsV0FBQTtFQUNBLFlBQUE7RUFDQSxlQUFBO0VBQ0Esc0JBQUE7RUFDQSxrQkFBQTtFQUNBLHVCQUFBO0FBZ21HSjtBQTlsR0k7RUFDRSxlQUFBO0FBZ21HTjtBQTVsR0U7RUFDRSxTQUFBO0VBQ0EseUJBQUE7RUFDQSxZQUFBO0VBQ0EsZ0JBQUE7RUFDQSxZQUFBO0VBQ0EsZ0JBQUE7RUFDQSxrQkFBQTtBQThsR0o7QUExbEdBO0VBQ0Usa0JBQUE7RUFDQSxtQkFBQTtBQTZsR0Y7QXlEbnVHRTtFekR5SUY7SUFFSSxzQkFBQTtFQTZsR0Y7QUFDRiIsImZpbGUiOiJ1c2VyLWRldGFpbHMuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBZb3UgY2FuIGFkZCBnbG9iYWwgc3R5bGVzIHRvIHRoaXMgZmlsZSwgYW5kIGFsc28gaW1wb3J0IG90aGVyIHN0eWxlIGZpbGVzICovXG5AdXNlICd+QGFuZ3VsYXIvbWF0ZXJpYWwnIGFzIG1hdDtcbkBpbXBvcnQgJ35AYW5ndWxhci9tYXRlcmlhbC90aGVtaW5nJztcbkBpbXBvcnQgdXJsKCcvL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2ljb24/ZmFtaWx5PU1hdGVyaWFsK0ljb25zJyk7XG5cbkBpbmNsdWRlIG1hdC5jb3JlKCk7XG5cbiRtZi1idy1tb2RlbGljYTogbWF0LmRlZmluZS10eXBvZ3JhcGh5LWNvbmZpZyhcbiAgJGZvbnQtZmFtaWx5OiAnQndNb2RlbGljYSwgbW9ub3NwYWNlJyxcbiAgJGhlYWRsaW5lOiBtYXQuZGVmaW5lLXR5cG9ncmFwaHktbGV2ZWwoMzJweCwgNDhweCwgYm9sZClcbik7XG5cbiRtZi1vcGVuLXNhbnM6IG1hdC5kZWZpbmUtdHlwb2dyYXBoeS1jb25maWcoXG4gICRmb250LWZhbWlseTogJ09wZW5TYW5zLCBzYW5zLXNlcmlmJyxcbiAgJGJvZHktMTogbWF0LmRlZmluZS10eXBvZ3JhcGh5LWxldmVsKDE2cHgsIDI0cHgsIG5vcm1hbClcbik7XG5cbkBpbmNsdWRlIG1hdC5hbGwtY29tcG9uZW50LXR5cG9ncmFwaGllcygkbWYtb3Blbi1zYW5zKTtcblxuLm1hdC10eXBvZ3JhcGh5IHtcbiAgaDEsIGgyLCBoMywgaDQsIGg1LCBoNiB7XG4gICAgZm9udC1mYW1pbHk6IG1hdC5mb250LWZhbWlseSgkbWYtYnctbW9kZWxpY2EpO1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICB9XG59XG5cbiRtZi1ncmVlbjogKFxuICA1MDogIzI2ZDlhNixcbiAgMTAwOiAjMjZkOWE2LFxuICAyMDA6ICMyNmQ5YTYsXG4gIDMwMDogIzI2ZDlhNixcbiAgNDAwOiAjMjZkOWE2LFxuICA1MDA6ICMxMGNmOTgsXG4gIDYwMDogIzEwY2Y5OCxcbiAgNzAwOiAjMTBjZjk4LFxuICA4MDA6ICMxMGNmOTgsXG4gIDkwMDogIzEwY2Y5OCxcbiAgQTEwMDogIzA1ODI1ZSxcbiAgQTIwMDogIzA1ODI1ZSxcbiAgQTQwMDogIzA1ODI1ZSxcbiAgQTcwMDogIzA1ODI1ZSxcbiAgY29udHJhc3Q6IChcbiAgICA1MDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDEwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDIwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDMwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDQwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDUwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDYwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDcwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA4MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgOTAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIEExMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICBBMjAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgQTQwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIEE3MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgKVxuKTtcbiRtZi1yZWQ6IChcbiAgNTA6ICNmZmE1OTEsXG4gIDEwMDogI2ZmYTU5MSxcbiAgMjAwOiAjZmZhNTkxLFxuICAzMDA6ICNmZmE1OTEsXG4gIDQwMDogI2ZmYTU5MSxcbiAgNTAwOiAjZmM4Zjc2LFxuICA2MDA6ICNmYzhmNzYsXG4gIDcwMDogI2ZjOGY3NixcbiAgODAwOiAjZmM4Zjc2LFxuICA5MDA6ICNmYzhmNzYsXG4gIEExMDA6ICNhZjU1NDEsXG4gIEEyMDA6ICNhZjU1NDEsXG4gIEE0MDA6ICNhZjU1NDEsXG4gIEE3MDA6ICNhZjU1NDEsXG4gIGNvbnRyYXN0OiAoXG4gICAgNTA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAxMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAyMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAzMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA0MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA1MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA2MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA3MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgODAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDkwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICBBMTAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgQTIwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIEE0MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICBBNzAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gIClcbik7XG4kbWYteWVsbG93OiAoXG4gIDUwOiAjZmZkYjhlLFxuICAxMDA6ICNmZmRiOGUsXG4gIDIwMDogI2ZmZGI4ZSxcbiAgMzAwOiAjZmZkYjhlLFxuICA0MDA6ICNmZmRiOGUsXG4gIDUwMDogI2Y3Y2M3MSxcbiAgNjAwOiAjZjdjYzcxLFxuICA3MDA6ICNmN2NjNzEsXG4gIDgwMDogI2Y3Y2M3MSxcbiAgOTAwOiAjZjdjYzcxLFxuICBBMTAwOiAjYWE4NzNkLFxuICBBMjAwOiAjYWE4NzNkLFxuICBBNDAwOiAjYWE4NzNkLFxuICBBNzAwOiAjYWE4NzNkLFxuICBjb250cmFzdDogKFxuICAgIDUwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMTAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMjAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgMzAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgNDAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgNTAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgNjAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgNzAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDgwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA5MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgQTEwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIEEyMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICBBNDAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgQTcwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICApXG4pO1xuJG1mLWJsdWU6IChcbiAgNTA6ICM5MmFkZjcsXG4gIDEwMDogIzY4OTFmZixcbiAgMjAwOiAjNjM4ZGZmLFxuICAzMDA6ICM2ZDkxZjcsXG4gIDQwMDogIzRkN2FmNyxcbiAgNTAwOiAjNDg3NWY1LFxuICA2MDA6ICM0Nzc1ZjUsXG4gIDcwMDogIzQ3NzVmNSxcbiAgODAwOiAjNDQ2ZGY1LFxuICA5MDA6ICM0MTY5ZGIsXG4gIEExMDA6ICMyMDQ0YTgsXG4gIEEyMDA6ICMyMDQ0YTgsXG4gIEE0MDA6ICMyMDQ0YTgsXG4gIEE3MDA6ICMzNTNmNTIsXG4gIGNvbnRyYXN0OiAoXG4gICAgNTA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAxMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAyMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAzMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA0MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA1MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA2MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA3MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgODAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDkwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICBBMTAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgQTIwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIEE0MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICBBNzAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gIClcbik7XG5cbiRwcmltYXJ5VGhlbWU6ICRtZi1ibHVlO1xuJGFjY2VudFRoZW1lOiAkbWYteWVsbG93O1xuJHdhcm5UaGVtZTogJG1mLXJlZDtcbiRzdWNjZXNzVGhlbWU6ICRtZi1ncmVlbjtcbiRlbGV2YXRpb246IDcwMDtcbiRwcmltYXJ5OiBtYXQuZGVmaW5lLXBhbGV0dGUoJHByaW1hcnlUaGVtZSwgJGVsZXZhdGlvbik7XG4kYWNjZW50OiAgbWF0LmRlZmluZS1wYWxldHRlKCRhY2NlbnRUaGVtZSwgJGVsZXZhdGlvbik7XG4kd2FybjogICAgbWF0LmRlZmluZS1wYWxldHRlKCR3YXJuVGhlbWUsICRlbGV2YXRpb24pO1xuJHN1Y2Nlc3M6ICAgIG1hdC5kZWZpbmUtcGFsZXR0ZSgkc3VjY2Vzc1RoZW1lLCAkZWxldmF0aW9uKTtcbiRzdWNjZXNzVGV4dDogICAgbWF0LmRlZmluZS1wYWxldHRlKCRzdWNjZXNzVGhlbWUsIEE3MDApO1xuXG5cbiRtYXQtd2hpdGU6IChcbiAgNTA6ICNmZmZmZmYsXG4gIDEwMDogI2ZmZmZmZixcbiAgMjAwOiAjZmZmZmZmLFxuICAzMDA6ICNmZmZmZmYsXG4gIDQwMDogI2YwZjBmMixcbiAgNTAwOiAjZjlmOWY5LFxuICA2MDA6ICNmYmZiZmIsXG4gIDcwMDogI2Y2ZjZmNixcbiAgODAwOiAjZjRmNGY0LFxuICA5MDA6ICNmNGY3ZjksXG4gIEExMDA6ICNlOGViZWUsXG4gIEEyMDA6ICNjN2M5Y2QsXG4gIEE0MDA6ICM5ZWE0YWUsXG4gIEE3MDA6ICM5YjliOWIsXG4gIGNvbnRyYXN0OiAoXG4gICAgNTA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAxMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAyMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICAzMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA0MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA1MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA2MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICA3MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgODAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIDkwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICBBMTAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgQTIwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIEE0MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICBBNzAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gIClcbik7XG4kbWF0LWJsYWNrOiAoXG4gIDUwOiAjYmZiZmJmLFxuICAxMDA6ICNhZWIyYmEsXG4gIDIwMDogIzk0OTQ5NCxcbiAgMzAwOiAjNzM3MzczLFxuICA0MDA6ICM2MDYwNjAsXG4gIDUwMDogIzYyNjI2MixcbiAgNjAwOiAjNDc0NzQ3LFxuICA3MDA6ICMzNDM0MzQsXG4gIDgwMDogIzI0MjQyNCxcbiAgOTAwOiAjMjMyMzIzLFxuICBBMTAwOiAjMTcxNzE3LFxuICBBMjAwOiAjMTExMTExLFxuICBBNDAwOiAjMGUwZTBlLFxuICBBNzAwOiBibGFjayxcbiAgY29udHJhc3Q6IChcbiAgICA1MDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDEwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDIwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDMwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDQwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDUwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDYwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIDcwMDogJGxpZ2h0LXByaW1hcnktdGV4dCxcbiAgICA4MDA6ICRsaWdodC1wcmltYXJ5LXRleHQsXG4gICAgOTAwOiAkbGlnaHQtcHJpbWFyeS10ZXh0LFxuICAgIEExMDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgICBBMjAwOiAkZGFyay1wcmltYXJ5LXRleHQsXG4gICAgQTQwMDogJGRhcmstcHJpbWFyeS10ZXh0LFxuICAgIEE3MDA6ICRkYXJrLXByaW1hcnktdGV4dCxcbiAgKVxuKTtcblxuJHRoZW1lOiBtYXQuZGVmaW5lLWxpZ2h0LXRoZW1lKCRwcmltYXJ5LCAkYWNjZW50LCAkd2Fybik7XG5cbkBpbmNsdWRlIG1hdC5hbGwtY29tcG9uZW50LXRoZW1lcygkdGhlbWUpO1xuIiwiLy8gVGhpcyBjb250YWlucyBhbGwgb2YgdGhlIHN0eWxlcyBmb3IgdGhlIGJhZGdlXG4vLyByYXRoZXIgdGhhbiBqdXN0IHRoZSBjb2xvci90aGVtZSBiZWNhdXNlIG9mXG4vLyBubyBzdHlsZSBzaGVldCBzdXBwb3J0IGZvciBkaXJlY3RpdmVzLlxuQHVzZSAnc2Fzczpjb2xvcic7XG5AdXNlICdzYXNzOm1hcCc7XG5AdXNlICdzYXNzOm1ldGEnO1xuQHVzZSAnLi4vY29yZS90aGVtaW5nL3RoZW1pbmcnO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHknO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHktdXRpbHMnO1xuQHVzZSAnLi4vLi4vY2RrL2ExMXknO1xuXG4kZm9udC1zaXplOiAxMnB4O1xuJGZvbnQtd2VpZ2h0OiA2MDA7XG4kZGVmYXVsdC1zaXplOiAyMnB4ICFkZWZhdWx0O1xuJHNtYWxsLXNpemU6ICRkZWZhdWx0LXNpemUgLSA2O1xuJGxhcmdlLXNpemU6ICRkZWZhdWx0LXNpemUgKyA2O1xuXG4vLyBNaXhpbiBmb3IgYnVpbGRpbmcgb2Zmc2V0IGdpdmVuIGRpZmZlcmVudCBzaXplc1xuQG1peGluIF9iYWRnZS1zaXplKCRzaXplKSB7XG4gIC5tYXQtYmFkZ2UtY29udGVudCB7XG4gICAgd2lkdGg6ICRzaXplO1xuICAgIGhlaWdodDogJHNpemU7XG4gICAgbGluZS1oZWlnaHQ6ICRzaXplO1xuICB9XG5cbiAgJi5tYXQtYmFkZ2UtYWJvdmUge1xuICAgIC5tYXQtYmFkZ2UtY29udGVudCB7XG4gICAgICB0b3A6IC0kc2l6ZSAvIDI7XG4gICAgfVxuICB9XG5cbiAgJi5tYXQtYmFkZ2UtYmVsb3cge1xuICAgIC5tYXQtYmFkZ2UtY29udGVudCB7XG4gICAgICBib3R0b206IC0kc2l6ZSAvIDI7XG4gICAgfVxuICB9XG5cbiAgJi5tYXQtYmFkZ2UtYmVmb3JlIHtcbiAgICAubWF0LWJhZGdlLWNvbnRlbnQge1xuICAgICAgbGVmdDogLSRzaXplO1xuICAgIH1cbiAgfVxuXG4gIFtkaXI9J3J0bCddICYubWF0LWJhZGdlLWJlZm9yZSB7XG4gICAgLm1hdC1iYWRnZS1jb250ZW50IHtcbiAgICAgIGxlZnQ6IGF1dG87XG4gICAgICByaWdodDogLSRzaXplO1xuICAgIH1cbiAgfVxuXG4gICYubWF0LWJhZGdlLWFmdGVyIHtcbiAgICAubWF0LWJhZGdlLWNvbnRlbnQge1xuICAgICAgcmlnaHQ6IC0kc2l6ZTtcbiAgICB9XG4gIH1cblxuICBbZGlyPSdydGwnXSAmLm1hdC1iYWRnZS1hZnRlciB7XG4gICAgLm1hdC1iYWRnZS1jb250ZW50IHtcbiAgICAgIHJpZ2h0OiBhdXRvO1xuICAgICAgbGVmdDogLSRzaXplO1xuICAgIH1cbiAgfVxuXG4gICYubWF0LWJhZGdlLW92ZXJsYXAge1xuICAgICYubWF0LWJhZGdlLWJlZm9yZSB7XG4gICAgICAubWF0LWJhZGdlLWNvbnRlbnQge1xuICAgICAgICBsZWZ0OiAtJHNpemUgLyAyO1xuICAgICAgfVxuICAgIH1cblxuICAgIFtkaXI9J3J0bCddICYubWF0LWJhZGdlLWJlZm9yZSB7XG4gICAgICAubWF0LWJhZGdlLWNvbnRlbnQge1xuICAgICAgICBsZWZ0OiBhdXRvO1xuICAgICAgICByaWdodDogLSRzaXplIC8gMjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLm1hdC1iYWRnZS1hZnRlciB7XG4gICAgICAubWF0LWJhZGdlLWNvbnRlbnQge1xuICAgICAgICByaWdodDogLSRzaXplIC8gMjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBbZGlyPSdydGwnXSAmLm1hdC1iYWRnZS1hZnRlciB7XG4gICAgICAubWF0LWJhZGdlLWNvbnRlbnQge1xuICAgICAgICByaWdodDogYXV0bztcbiAgICAgICAgbGVmdDogLSRzaXplIC8gMjtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGNvbG9yKCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAkYWNjZW50OiBtYXAuZ2V0KCRjb25maWcsIGFjY2VudCk7XG4gICR3YXJuOiBtYXAuZ2V0KCRjb25maWcsIHdhcm4pO1xuICAkcHJpbWFyeTogbWFwLmdldCgkY29uZmlnLCBwcmltYXJ5KTtcbiAgJGJhY2tncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgYmFja2dyb3VuZCk7XG4gICRmb3JlZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGZvcmVncm91bmQpO1xuXG4gIC5tYXQtYmFkZ2UtY29udGVudCB7XG4gICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkcHJpbWFyeSwgZGVmYXVsdC1jb250cmFzdCk7XG4gICAgYmFja2dyb3VuZDogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRwcmltYXJ5KTtcblxuICAgIEBpbmNsdWRlIGExMXkuaGlnaC1jb250cmFzdChhY3RpdmUsIG9mZikge1xuICAgICAgb3V0bGluZTogc29saWQgMXB4O1xuICAgICAgYm9yZGVyLXJhZGl1czogMDtcbiAgICB9XG4gIH1cblxuICAubWF0LWJhZGdlLWFjY2VudCB7XG4gICAgLm1hdC1iYWRnZS1jb250ZW50IHtcbiAgICAgIGJhY2tncm91bmQ6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYWNjZW50KTtcbiAgICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGFjY2VudCwgZGVmYXVsdC1jb250cmFzdCk7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1iYWRnZS13YXJuIHtcbiAgICAubWF0LWJhZGdlLWNvbnRlbnQge1xuICAgICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkd2FybiwgZGVmYXVsdC1jb250cmFzdCk7XG4gICAgICBiYWNrZ3JvdW5kOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHdhcm4pO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtYmFkZ2Uge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgfVxuXG4gIC5tYXQtYmFkZ2UtaGlkZGVuIHtcbiAgICAubWF0LWJhZGdlLWNvbnRlbnQge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gIH1cblxuICAubWF0LWJhZGdlLWRpc2FibGVkIHtcbiAgICAubWF0LWJhZGdlLWNvbnRlbnQge1xuICAgICAgJGFwcC1iYWNrZ3JvdW5kOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGJhY2tncm91bmQsICdiYWNrZ3JvdW5kJyk7XG4gICAgICAkYmFkZ2UtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgZGlzYWJsZWQtYnV0dG9uKTtcblxuICAgICAgLy8gVGhlIGRpc2FibGVkIGNvbG9yIHVzdWFsbHkgaGFzIHNvbWUga2luZCBvZiBvcGFjaXR5LCBidXQgYmVjYXVzZSB0aGUgYmFkZ2UgaXMgb3ZlcmxheWVkXG4gICAgICAvLyBvbiB0b3Agb2Ygc29tZXRoaW5nIGVsc2UsIGl0IHdvbid0IGxvb2sgZ29vZCBpZiBpdCdzIG9wYXF1ZS4gSWYgaXQgaXMgYSBjb2xvciAqdHlwZSosXG4gICAgICAvLyB3ZSBjb252ZXJ0IGl0IGludG8gYSBzb2xpZCBjb2xvciBieSB0YWtpbmcgdGhlIG9wYWNpdHkgZnJvbSB0aGUgcmdiYSB2YWx1ZSBhbmQgdXNpbmdcbiAgICAgIC8vIHRoZSB2YWx1ZSB0byBkZXRlcm1pbmUgdGhlIHBlcmNlbnRhZ2Ugb2YgdGhlIGJhY2tncm91bmQgdG8gcHV0IGludG8gZm9yZWdyb3VuZCB3aGVuXG4gICAgICAvLyBtaXhpbmcgdGhlIGNvbG9ycyB0b2dldGhlci5cbiAgICAgIEBpZiAobWV0YS50eXBlLW9mKCRiYWRnZS1jb2xvcikgPT0gY29sb3IgYW5kIG1ldGEudHlwZS1vZigkYXBwLWJhY2tncm91bmQpID09IGNvbG9yKSB7XG4gICAgICAgICRiYWRnZS1vcGFjaXR5OiBvcGFjaXR5KCRiYWRnZS1jb2xvcik7XG4gICAgICAgIGJhY2tncm91bmQ6IGNvbG9yLm1peCgkYXBwLWJhY2tncm91bmQsIHJnYmEoJGJhZGdlLWNvbG9yLCAxKSwgKDEgLSAkYmFkZ2Utb3BhY2l0eSkgKiAxMDAlKTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgYmFja2dyb3VuZDogJGJhZGdlLWNvbG9yO1xuICAgICAgfVxuXG4gICAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBkaXNhYmxlZC10ZXh0KTtcbiAgICB9XG4gIH1cblxuICAubWF0LWJhZGdlLWNvbnRlbnQge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMjAwbXMgZWFzZS1pbi1vdXQ7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgwLjYpO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgfVxuXG4gIC5uZy1hbmltYXRlLWRpc2FibGVkIC5tYXQtYmFkZ2UtY29udGVudCxcbiAgLm1hdC1iYWRnZS1jb250ZW50Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIHtcbiAgICB0cmFuc2l0aW9uOiBub25lO1xuICB9XG5cbiAgLy8gVGhlIGFjdGl2ZSBjbGFzcyBpcyBhZGRlZCBhZnRlciB0aGUgZWxlbWVudCBpcyBhZGRlZFxuICAvLyBzbyBpdCBjYW4gYW5pbWF0ZSBzY2FsZSB0byBkZWZhdWx0XG4gIC5tYXQtYmFkZ2UtY29udGVudC5tYXQtYmFkZ2UtYWN0aXZlIHtcbiAgICAvLyBTY2FsZSB0byBgbm9uZWAgaW5zdGVhZCBvZiBgMWAgdG8gYXZvaWQgYmx1cnJ5IHRleHQgaW4gc29tZSBicm93c2Vycy5cbiAgICB0cmFuc2Zvcm06IG5vbmU7XG4gIH1cblxuICAubWF0LWJhZGdlLXNtYWxsIHtcbiAgICBAaW5jbHVkZSBfYmFkZ2Utc2l6ZSgkc21hbGwtc2l6ZSk7XG4gIH1cbiAgLm1hdC1iYWRnZS1tZWRpdW0ge1xuICAgIEBpbmNsdWRlIF9iYWRnZS1zaXplKCRkZWZhdWx0LXNpemUpO1xuICB9XG4gIC5tYXQtYmFkZ2UtbGFyZ2Uge1xuICAgIEBpbmNsdWRlIF9iYWRnZS1zaXplKCRsYXJnZS1zaXplKTtcbiAgfVxufVxuXG5AbWl4aW4gdHlwb2dyYXBoeSgkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHR5cG9ncmFwaHkucHJpdmF0ZS10eXBvZ3JhcGh5LXRvLTIwMTQtY29uZmlnKFxuICAgICAgdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJGNvbmZpZy1vci10aGVtZSkpO1xuICAubWF0LWJhZGdlLWNvbnRlbnQge1xuICAgIGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQ7XG4gICAgZm9udC1zaXplOiAkZm9udC1zaXplO1xuICAgIGZvbnQtZmFtaWx5OiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtZmFtaWx5KCRjb25maWcpO1xuICB9XG5cbiAgLm1hdC1iYWRnZS1zbWFsbCAubWF0LWJhZGdlLWNvbnRlbnQge1xuICAgIC8vIFNldCB0aGUgZm9udCBzaXplIHRvIDc1JSBvZiB0aGUgb3JpZ2luYWwuXG4gICAgZm9udC1zaXplOiAkZm9udC1zaXplICogMC43NTtcbiAgfVxuXG4gIC5tYXQtYmFkZ2UtbGFyZ2UgLm1hdC1iYWRnZS1jb250ZW50IHtcbiAgICBmb250LXNpemU6ICRmb250LXNpemUgKiAyO1xuICB9XG59XG5cbkBtaXhpbiBfZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZykge1xuICAkdGhlbWU6IHRoZW1pbmcucHJpdmF0ZS1sZWdhY3ktZ2V0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICBAaW5jbHVkZSB0aGVtaW5nLnByaXZhdGUtY2hlY2stZHVwbGljYXRlLXRoZW1lLXN0eWxlcygkdGhlbWUsICdtYXQtYmFkZ2UnKSB7XG4gICAgJGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJHRoZW1lKTtcbiAgICAkZGVuc2l0eTogdGhlbWluZy5nZXQtZGVuc2l0eS1jb25maWcoJHRoZW1lKTtcbiAgICAkdHlwb2dyYXBoeTogdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJHRoZW1lKTtcblxuICAgIEBpZiAkY29sb3IgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBjb2xvcigkY29sb3IpO1xuICAgIH1cbiAgICBAaWYgJGRlbnNpdHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBfZGVuc2l0eSgkZGVuc2l0eSk7XG4gICAgfVxuICAgIEBpZiAkdHlwb2dyYXBoeSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIHR5cG9ncmFwaHkoJHR5cG9ncmFwaHkpO1xuICAgIH1cbiAgfVxufVxuIiwiQHVzZSAnfkBhbmd1bGFyL21hdGVyaWFsJyBhcyBtYXQ7XG5AaW1wb3J0IFwiLi4vLi4vLi4vdGhlbWVcIjtcbkBpbXBvcnQgXCIuLi8uLi8uLi9oZWxwZXJzXCI7XG5AaW1wb3J0IFwiLi4vLi4vLi4vYnJlYWtwb2ludHNcIjtcblxuLnVzZXItZGV0YWlscyB7XG4gIG1heC1oZWlnaHQ6IDEwMCU7XG4gIG92ZXJmbG93LXk6IGF1dG87XG5cbiAgJl9oZWFkZXIge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC1nYXA6IDIwcHg7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxMjBweCAxZnI7XG4gICAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiAxMjBweDtcbiAgICBAaW5jbHVkZSBmb3ItcGhvbmUtb25seSB7XG4gICAgICBncmlkLXRlbXBsYXRlLXJvd3M6IGF1dG87XG4gICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDIzMHB4O1xuICAgIH1cblxuICAgICZfbG9nbyB7XG4gICAgICB3aWR0aDogMTIwcHg7XG4gICAgICBoZWlnaHQ6IDEyMHB4O1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogbWF0LmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJG1hdC13aGl0ZSwgNTApO1xuICAgICAgYm9yZGVyLXJhZGl1czogN3B4O1xuICAgICAgYm9yZGVyOiA0cHggc29saWQgbWF0LmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJG1mLWJsdWUsIDUwKTtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgICAgaW1nIHtcbiAgICAgICAgbWF4LWhlaWdodDogMTAwJTtcbiAgICAgIH1cblxuICAgICAgJl91cGxvYWQge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogMDtcbiAgICAgICAgbGVmdDogMDtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgdHJhbnNpdGlvbjogLjNzO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIH1cblxuICAgICAgICBpbnB1dCB7XG4gICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICZfZGV0YWlscyB7XG4gICAgICBAaW5jbHVkZSBmb3ItcGhvbmUtb25seSB7XG4gICAgICAgIHdvcmQtYnJlYWs6IGJyZWFrLWFsbDtcbiAgICAgICAgYm9yZGVyLXJpZ2h0OiBub25lO1xuICAgICAgfVxuICAgICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgbWF0LmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJG1hdC13aGl0ZSwgQTEwMCk7XG4gICAgfVxuXG4gICAgaDMudXNlcm5hbWUge1xuICAgIH1cblxuICAgIC5hdmF0YXIge1xuICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgfVxuXG4gICAgYS51c2VyLWVtYWlsIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiA3cHg7XG4gICAgfVxuXG4gICAgJl9lbWFpbC1pY29uIHtcbiAgICAgIGNvbG9yOiBtYXQuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkbWF0LXdoaXRlLCAxMDApO1xuICAgICAgZm9udC1zaXplOiAyMHB4O1xuICAgICAgcGFkZGluZzogNnB4O1xuICAgIH1cblxuICAgICZfY29tcGFueSB7XG4gICAgICBjb2xvcjogbWF0LmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJG1hdC1ibGFjaywgMjAwKTtcblxuICAgICAgLm9yZ2FuaXphdGlvbiB7XG4gICAgICAgIG1hcmdpbjogMCAwIDIwcHg7XG4gICAgICB9XG5cbiAgICAgIC5wb3NpdGlvbiB7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDI0cHg7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgJl9zZWN0aW9uLXRpdGxlIHtcbiAgICBtYXJnaW46IDIwcHggMDtcbiAgICBoZWlnaHQ6IDM0cHg7XG4gICAgYmFja2dyb3VuZDogbWF0LmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJG1hdC13aGl0ZSwgOTAwKTtcbiAgfVxuXG4gIC5lbWFpbC1pY29uLWNvbnRhaW5lciB7XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICMxMENGOTg7XG4gICAgYm94LXNoYWRvdzogMCAwIDVweCAjMTBDRjk4O1xuICB9XG5cbiAgLnVzZXItZGV0YWlscy1hdmF0YXIge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBmb250LXNpemU6IDM0cHg7XG4gICAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcbiAgICBib3JkZXItcmFkaXVzOiA1cHg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogbWF0LmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJG1hdC13aGl0ZSwgNTApO1xuXG4gIH1cblxuICAudXNlci1kZWZhdWx0LWF2YXRhciB7XG4gICAgd2lkdGg6IDgycHg7XG4gICAgaGVpZ2h0OiA4MnB4O1xuICAgIGZvbnQtc2l6ZTogODJweDtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xuICAgIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtYXQuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkbWF0LXdoaXRlLCA1MCk7XG5cbiAgICAubWF0ZXJpYWwtaWNvbnMge1xuICAgICAgZm9udC1zaXplOiAzNHB4O1xuICAgIH1cbiAgfVxuXG4gIGJ1dHRvbi51cGxvYWQtaW1hZ2Uge1xuICAgIHRvcDogMzZweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzI3NUY2O1xuICAgIG9wYWNpdHk6IDAuNztcbiAgICBwYWRkaW5nOiAycHggNXB4O1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICBib3JkZXItcmFkaXVzOiAwO1xuICAgIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgfVxufVxuXG4ubWF0LWlucHV0LWVsZW1lbnQsIC5tYXQtZm9ybS1maWVsZC1sYWJlbCB7XG4gIG1pbi1oZWlnaHQ6IDEuNHJlbTtcbiAgbGluZS1oZWlnaHQ6IDEuNHJlbTtcbn1cblxuI3VzZXItcGVyc29uYWwtZGF0YSB7XG4gIEBpbmNsdWRlIGZvci1waG9uZS1vbmx5IHtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICB9XG59XG4iLCJAdXNlICdzYXNzOm1hcCc7XG5AdXNlICd0eXBvZ3JhcGh5LXV0aWxzJztcbkB1c2UgJy4uL3RoZW1pbmcvdGhlbWluZyc7XG5cbi8vLyBEZWZpbmVzIGEgdHlwb2dyYXBoeSBsZXZlbCBmcm9tIHRoZSBNYXRlcmlhbCBEZXNpZ24gc3BlYy5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGZvbnQtc2l6ZSBUaGUgZm9udC1zaXplIGZvciB0aGlzIGxldmVsLlxuLy8vIEBwYXJhbSB7U3RyaW5nIHwgTnVtYmVyfSAkbGluZS1oZWlnaHQgVGhlIGxpbmUtaGVpZ2h0IGZvciB0aGlzIGxldmVsLlxuLy8vIEBwYXJhbSB7U3RyaW5nIHwgTnVtYmVyfSAkZm9udC13ZWlnaHQgVGhlIGZvbnQtd2VpZ2h0IGZvciB0aGlzIGxldmVsLlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkZm9udC1mYW1pbHkgVGhlIGZvbnQtZmFtaWx5IGZvciB0aGlzIGxldmVsLlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkbGV0dGVyLXNwYWNpbmcgVGhlIGxldHRlci1zcGFjaW5nIGZvciB0aGlzIGxldmVsLlxuLy8vIEByZXR1cm5zIHtNYXB9IEEgbWFwIHJlcHJlc2VudGluZyB0aGUgZGVmaW5pdGlvbiBvZiB0aGlzIHR5cHBvZ3JhcGhpYyBsZXZlbC5cbkBmdW5jdGlvbiBkZWZpbmUtdHlwb2dyYXBoeS1sZXZlbChcbiAgJGZvbnQtc2l6ZSxcbiAgJGxpbmUtaGVpZ2h0OiAkZm9udC1zaXplLFxuICAkZm9udC13ZWlnaHQ6IDQwMCxcbiAgJGZvbnQtZmFtaWx5OiBudWxsLFxuICAkbGV0dGVyLXNwYWNpbmc6IG5vcm1hbCkge1xuXG4gIEByZXR1cm4gKFxuICAgIGZvbnQtc2l6ZTogJGZvbnQtc2l6ZSxcbiAgICBsaW5lLWhlaWdodDogJGxpbmUtaGVpZ2h0LFxuICAgIGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQsXG4gICAgZm9udC1mYW1pbHk6ICRmb250LWZhbWlseSxcbiAgICBsZXR0ZXItc3BhY2luZzogJGxldHRlci1zcGFjaW5nXG4gICk7XG59XG5cbi8vLyBEZWZpbmVzIGEgY29sbGVjdGlvbiBvZiB0eXBvZ3JhcGh5IGxldmVscyB0byBjb25maWd1cmUgdHlwb2dyYXBoeSBmb3IgYW4gYXBwbGljYXRpb24uXG4vLy8gQW55IGxldmVsIG5vdCBzcGVjaWZpZWQgZGVmYXVsdHMgdG8gdGhlIHZhbHVlcyBkZWZpbmVkIGluIHRoZSBNYXRlcmlhbCBEZXNpZ24gc3BlY2lmaWNhdGlvbjpcbi8vLyBodHRwczovL21hdGVyaWFsLmlvL2d1aWRlbGluZXMvc3R5bGUvdHlwb2dyYXBoeS5odG1sLlxuLy8vXG4vLy8gTm90ZSB0aGF0IHRoZSBNYXRlcmlhbCBEZXNpZ24gc3BlY2lmaWNhdGlvbiBkb2VzIG5vdCBkZXNjcmliZSBleHBsaWNpdCBsZXR0ZXItc3BhY2luZyB2YWx1ZXMuXG4vLy8gVGhlIHZhbHVlcyBoZXJlIGNvbWUgZnJvbSByZXZlcnNlIGVuZ2luZWVyaW5nIHRoZSBNYXRlcmlhbCBEZXNpZ24gZXhhbXBsZXMuXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRmb250LWZhbWlseSBEZWZhdWx0IGZvbnQtZmFtaWx5IGZvciBsZXZlbHMgdGhhdCBkb24ndCBzcGVjaWZ5IGZvbnQtZmFtaWx5LlxuLy8vIEBwYXJhbSB7TWFwfSAkZGlzcGxheS00IENvbmZpZ3VyYXRpb24gZm9yIHRoZSBcImRpc3BsYXktNFwiIHR5cG9ncmFwaGljIGxldmVsLlxuLy8vIEBwYXJhbSB7TWFwfSAkZGlzcGxheS0zIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBcImRpc3BsYXktM1wiIHR5cG9ncmFwaGljIGxldmVsLlxuLy8vIEBwYXJhbSB7TWFwfSAkZGlzcGxheS0yIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBcImRpc3BsYXktMlwiIHR5cG9ncmFwaGljIGxldmVsLlxuLy8vIEBwYXJhbSB7TWFwfSAkZGlzcGxheS0xIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBcImRpc3BsYXktMVwiIHR5cG9ncmFwaGljIGxldmVsLlxuLy8vIEBwYXJhbSB7TWFwfSAkaGVhZGxpbmUgQ29uZmlndXJhdGlvbiBmb3IgdGhlIFwiaGVhZGxpbmVcIiB0eXBvZ3JhcGhpYyBsZXZlbC5cbi8vLyBAcGFyYW0ge01hcH0gJHRpdGxlIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBcInRpdGxlXCIgdHlwb2dyYXBoaWMgbGV2ZWwuXG4vLy8gQHBhcmFtIHtNYXB9ICRzdWJoZWFkaW5nLTIgQ29uZmlndXJhdGlvbiBmb3IgdGhlIFwic3ViaGVhZGluZy0yXCIgdHlwb2dyYXBoaWMgbGV2ZWwuXG4vLy8gQHBhcmFtIHtNYXB9ICRzdWJoZWFkaW5nLTEgQ29uZmlndXJhdGlvbiBmb3IgdGhlIFwic3ViaGVhZGluZy0xXCIgdHlwb2dyYXBoaWMgbGV2ZWwuXG4vLy8gQHBhcmFtIHtNYXB9ICRib2R5LTIgQ29uZmlndXJhdGlvbiBmb3IgdGhlIFwiYm9keS0yXCIgdHlwb2dyYXBoaWMgbGV2ZWwuXG4vLy8gQHBhcmFtIHtNYXB9ICRib2R5LTEgQ29uZmlndXJhdGlvbiBmb3IgdGhlIFwiYm9keS0xXCIgdHlwb2dyYXBoaWMgbGV2ZWwuXG4vLy8gQHBhcmFtIHtNYXB9ICRjYXB0aW9uIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBcImNhcHRpb25cIiB0eXBvZ3JhcGhpYyBsZXZlbC5cbi8vLyBAcGFyYW0ge01hcH0gJGJ1dHRvbiBDb25maWd1cmF0aW9uIGZvciB0aGUgXCJidXR0b25cIiB0eXBvZ3JhcGhpYyBsZXZlbC5cbi8vLyBAcGFyYW0ge01hcH0gJGlucHV0IENvbmZpZ3VyYXRpb24gZm9yIHRoZSBcImlucHV0XCIgdHlwb2dyYXBoaWMgbGV2ZWwuXG4vLy8gQHJldHVybnMge01hcH0gQSB0eXBvZ3JhcGh5IGNvbmZpZyBmb3IgdGhlIGFwcGxpY2F0aW9uLlxuQGZ1bmN0aW9uIGRlZmluZS10eXBvZ3JhcGh5LWNvbmZpZyhcbiAgJGZvbnQtZmFtaWx5OiAgICdSb2JvdG8sIFwiSGVsdmV0aWNhIE5ldWVcIiwgc2Fucy1zZXJpZicsXG4gICRkaXNwbGF5LTQ6ICAgICBkZWZpbmUtdHlwb2dyYXBoeS1sZXZlbCgxMTJweCwgMTEycHgsIDMwMCwgJGxldHRlci1zcGFjaW5nOiAtMC4wNWVtKSxcbiAgJGRpc3BsYXktMzogICAgIGRlZmluZS10eXBvZ3JhcGh5LWxldmVsKDU2cHgsIDU2cHgsIDQwMCwgJGxldHRlci1zcGFjaW5nOiAtMC4wMmVtKSxcbiAgJGRpc3BsYXktMjogICAgIGRlZmluZS10eXBvZ3JhcGh5LWxldmVsKDQ1cHgsIDQ4cHgsIDQwMCwgJGxldHRlci1zcGFjaW5nOiAtMC4wMDVlbSksXG4gICRkaXNwbGF5LTE6ICAgICBkZWZpbmUtdHlwb2dyYXBoeS1sZXZlbCgzNHB4LCA0MHB4LCA0MDApLFxuICAkaGVhZGxpbmU6ICAgICAgZGVmaW5lLXR5cG9ncmFwaHktbGV2ZWwoMjRweCwgMzJweCwgNDAwKSxcbiAgJHRpdGxlOiAgICAgICAgIGRlZmluZS10eXBvZ3JhcGh5LWxldmVsKDIwcHgsIDMycHgsIDUwMCksXG4gICRzdWJoZWFkaW5nLTI6ICBkZWZpbmUtdHlwb2dyYXBoeS1sZXZlbCgxNnB4LCAyOHB4LCA0MDApLFxuICAkc3ViaGVhZGluZy0xOiAgZGVmaW5lLXR5cG9ncmFwaHktbGV2ZWwoMTVweCwgMjRweCwgNDAwKSxcbiAgJGJvZHktMjogICAgICAgIGRlZmluZS10eXBvZ3JhcGh5LWxldmVsKDE0cHgsIDI0cHgsIDUwMCksXG4gICRib2R5LTE6ICAgICAgICBkZWZpbmUtdHlwb2dyYXBoeS1sZXZlbCgxNHB4LCAyMHB4LCA0MDApLFxuICAkY2FwdGlvbjogICAgICAgZGVmaW5lLXR5cG9ncmFwaHktbGV2ZWwoMTJweCwgMjBweCwgNDAwKSxcbiAgJGJ1dHRvbjogICAgICAgIGRlZmluZS10eXBvZ3JhcGh5LWxldmVsKDE0cHgsIDE0cHgsIDUwMCksXG4gIC8vIExpbmUtaGVpZ2h0IG11c3QgYmUgdW5pdC1sZXNzIGZyYWN0aW9uIG9mIHRoZSBmb250LXNpemUuXG4gICRpbnB1dDogICAgICAgICBkZWZpbmUtdHlwb2dyYXBoeS1sZXZlbChpbmhlcml0LCAxLjEyNSwgNDAwKVxuKSB7XG5cbiAgLy8gRGVjbGFyZSBhbiBpbml0aWFsIG1hcCB3aXRoIGFsbCBvZiB0aGUgbGV2ZWxzLlxuICAkY29uZmlnOiAoXG4gICAgZGlzcGxheS00OiAgICAgICRkaXNwbGF5LTQsXG4gICAgZGlzcGxheS0zOiAgICAgICRkaXNwbGF5LTMsXG4gICAgZGlzcGxheS0yOiAgICAgICRkaXNwbGF5LTIsXG4gICAgZGlzcGxheS0xOiAgICAgICRkaXNwbGF5LTEsXG4gICAgaGVhZGxpbmU6ICAgICAgICRoZWFkbGluZSxcbiAgICB0aXRsZTogICAgICAgICAgJHRpdGxlLFxuICAgIHN1YmhlYWRpbmctMjogICAkc3ViaGVhZGluZy0yLFxuICAgIHN1YmhlYWRpbmctMTogICAkc3ViaGVhZGluZy0xLFxuICAgIGJvZHktMjogICAgICAgICAkYm9keS0yLFxuICAgIGJvZHktMTogICAgICAgICAkYm9keS0xLFxuICAgIGNhcHRpb246ICAgICAgICAkY2FwdGlvbixcbiAgICBidXR0b246ICAgICAgICAgJGJ1dHRvbixcbiAgICBpbnB1dDogICAgICAgICAgJGlucHV0LFxuICApO1xuXG4gIC8vIExvb3AgdGhyb3VnaCB0aGUgbGV2ZWxzIGFuZCBzZXQgdGhlIGBmb250LWZhbWlseWAgb2YgdGhlIG9uZXMgdGhhdCBkb24ndCBoYXZlIG9uZSB0byB0aGUgYmFzZS5cbiAgLy8gTm90ZSB0aGF0IFNhc3MgY2FuJ3QgbW9kaWZ5IG1hcHMgaW4gcGxhY2UsIHdoaWNoIG1lYW5zIHRoYXQgd2UgbmVlZCB0byBtZXJnZSBhbmQgcmUtYXNzaWduLlxuICBAZWFjaCAka2V5LCAkbGV2ZWwgaW4gJGNvbmZpZyB7XG4gICAgQGlmIG1hcC5nZXQoJGxldmVsLCBmb250LWZhbWlseSkgPT0gbnVsbCB7XG4gICAgICAkbmV3LWxldmVsOiBtYXAubWVyZ2UoJGxldmVsLCAoZm9udC1mYW1pbHk6ICRmb250LWZhbWlseSkpO1xuICAgICAgJGNvbmZpZzogbWFwLm1lcmdlKCRjb25maWcsICgka2V5OiAkbmV3LWxldmVsKSk7XG4gICAgfVxuICB9XG5cbiAgLy8gQWRkIHRoZSBiYXNlIGZvbnQgZmFtaWx5IHRvIHRoZSBjb25maWcuXG4gIEByZXR1cm4gbWFwLm1lcmdlKCRjb25maWcsIChmb250LWZhbWlseTogJGZvbnQtZmFtaWx5KSk7XG59XG5cbi8vIFdoZXRoZXIgYSBjb25maWcgaXMgZm9yIHRoZSBNYXRlcmlhbCBEZXNpZ24gMjAxOCB0eXBvZ3JhcGh5IHN5c3RlbS5cbkBmdW5jdGlvbiBwcml2YXRlLXR5cG9ncmFwaHktaXMtMjAxOC1jb25maWcoJGNvbmZpZykge1xuICBAcmV0dXJuIG1hcC5nZXQoJGNvbmZpZywgaGVhZGxpbmUtMSkgIT0gbnVsbDtcbn1cblxuLy8gV2hldGhlciBhIGNvbmZpZyBpcyBmb3IgdGhlIE1hdGVyaWFsIERlc2lnbiAyMDE0IHR5cG9ncmFwaHkgc3lzdGVtLlxuQGZ1bmN0aW9uIHByaXZhdGUtdHlwb2dyYXBoeS1pcy0yMDE0LWNvbmZpZygkY29uZmlnKSB7XG4gIEByZXR1cm4gbWFwLmdldCgkY29uZmlnLCBoZWFkbGluZSkgIT0gbnVsbDtcbn1cblxuLy8gR2l2ZW4gYSBjb25maWcgZm9yIGVpdGhlciB0aGUgMjAxNCBvciAyMDE4IE1hdGVyaWFsIERlc2lnbiB0eXBvZ3JhcGh5IHN5c3RlbSxcbi8vIHByb2R1Y2VzIGEgbm9ybWFsaXplZCB0eXBvZ3JhcGh5IGNvbmZpZyBmb3IgdGhlIDIwMTQgTWF0ZXJpYWwgRGVzaWduIHR5cG9ncmFwaHkgc3lzdGVtLlxuLy8gMjAxNCAtIGh0dHBzOi8vbWF0ZXJpYWwuaW8vYXJjaGl2ZS9ndWlkZWxpbmVzL3N0eWxlL3R5cG9ncmFwaHkuaHRtbCN0eXBvZ3JhcGh5LXN0eWxlc1xuLy8gMjAxOCAtIGh0dHBzOi8vbWF0ZXJpYWwuaW8vZGVzaWduL3R5cG9ncmFwaHkvdGhlLXR5cGUtc3lzdGVtLmh0bWwjdHlwZS1zY2FsZVxuLy9cbi8vIENvbXBvbmVudHMgdXNpbmcgdGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgbWlncmF0ZWQgdG8gbm9ybWFsaXplIHRvIHRoZSAyMDE4IHN0eWxlIGNvbmZpZyBpbnN0ZWFkLlxuLy8gTmV3IGNvbXBvbmVudHMgc2hvdWxkIG5vdCB1c2UgdGhpcyBmdW5jdGlvbi5cbkBmdW5jdGlvbiBwcml2YXRlLXR5cG9ncmFwaHktdG8tMjAxNC1jb25maWcoJGNvbmZpZykge1xuICBAaWYgJGNvbmZpZyA9PSBudWxsIHtcbiAgICBAcmV0dXJuIG51bGw7XG4gIH1cbiAgQGlmIG5vdCBwcml2YXRlLXR5cG9ncmFwaHktaXMtMjAxNC1jb25maWcoJGNvbmZpZykge1xuICAgICRhcmdzOiAoXG4gICAgICAgIGRpc3BsYXktNDogbWFwLmdldCgkY29uZmlnLCBoZWFkbGluZS0xKSxcbiAgICAgICAgZGlzcGxheS0zOiBtYXAuZ2V0KCRjb25maWcsIGhlYWRsaW5lLTIpLFxuICAgICAgICBkaXNwbGF5LTI6IG1hcC5nZXQoJGNvbmZpZywgaGVhZGxpbmUtMyksXG4gICAgICAgIGRpc3BsYXktMTogbWFwLmdldCgkY29uZmlnLCBoZWFkbGluZS00KSxcbiAgICAgICAgaGVhZGxpbmU6IG1hcC5nZXQoJGNvbmZpZywgaGVhZGxpbmUtNSksXG4gICAgICAgIHRpdGxlOiBtYXAuZ2V0KCRjb25maWcsIGhlYWRsaW5lLTYpLFxuICAgICAgICBzdWJoZWFkaW5nLTI6IG1hcC5nZXQoJGNvbmZpZywgc3VidGl0bGUtMSksXG4gICAgICAgIHN1YmhlYWRpbmctMTogbWFwLmdldCgkY29uZmlnLCBzdWJ0aXRsZS0yKSxcbiAgICAgICAgYm9keS0yOiBtYXAuZ2V0KCRjb25maWcsIGJvZHktMSksXG4gICAgICAgIGJvZHktMTogbWFwLmdldCgkY29uZmlnLCBib2R5LTIpLFxuICAgICAgICBidXR0b246IG1hcC5nZXQoJGNvbmZpZywgYnV0dG9uKSxcbiAgICAgICAgY2FwdGlvbjogbWFwLmdldCgkY29uZmlnLCBjYXB0aW9uKSxcbiAgICApO1xuICAgICRub24tbnVsbC1hcmdzOiAoKTtcbiAgICBAZWFjaCAka2V5LCAkdmFsdWUgaW4gJGFyZ3Mge1xuICAgICAgQGlmICR2YWx1ZSAhPSBudWxsIHtcbiAgICAgICAgJG5vbi1udWxsLWFyZ3M6IG1hcC5tZXJnZSgkbm9uLW51bGwtYXJncywgKCRrZXk6ICR2YWx1ZSkpO1xuICAgICAgfVxuICAgIH1cbiAgICBAcmV0dXJuIGRlZmluZS10eXBvZ3JhcGh5LWNvbmZpZygkbm9uLW51bGwtYXJncy4uLik7XG4gIH1cbiAgQHJldHVybiAkY29uZmlnO1xufVxuXG4vLyBHaXZlbiBhIGNvbmZpZyBmb3IgZWl0aGVyIHRoZSAyMDE0IG9yIDIwMTggTWF0ZXJpYWwgRGVzaWduIHR5cG9ncmFwaHkgc3lzdGVtLFxuLy8gcHJvZHVjZXMgYSBub3JtYWxpemVkIHR5cG9ncmFwaHkgY29uZmlnIGZvciB0aGUgMjAxOCBNYXRlcmlhbCBEZXNpZ24gdHlwb2dyYXBoeSBzeXN0ZW0uXG4vLyAyMDE0IC0gaHR0cHM6Ly9tYXRlcmlhbC5pby9hcmNoaXZlL2d1aWRlbGluZXMvc3R5bGUvdHlwb2dyYXBoeS5odG1sI3R5cG9ncmFwaHktc3R5bGVzXG4vLyAyMDE4IC0gaHR0cHM6Ly9tYXRlcmlhbC5pby9kZXNpZ24vdHlwb2dyYXBoeS90aGUtdHlwZS1zeXN0ZW0uaHRtbCN0eXBlLXNjYWxlXG5AZnVuY3Rpb24gcHJpdmF0ZS10eXBvZ3JhcGh5LXRvLTIwMTgtY29uZmlnKCRjb25maWcpIHtcbiAgQGlmICRjb25maWcgPT0gbnVsbCB7XG4gICAgQHJldHVybiBudWxsO1xuICB9XG4gIEBpZiBub3QgcHJpdmF0ZS10eXBvZ3JhcGh5LWlzLTIwMTgtY29uZmlnKCRjb25maWcpIHtcbiAgICBAcmV0dXJuIChcbiAgICAgICAgaGVhZGxpbmUtMTogbWFwLmdldCgkY29uZmlnLCBkaXNwbGF5LTQpLFxuICAgICAgICBoZWFkbGluZS0yOiBtYXAuZ2V0KCRjb25maWcsIGRpc3BsYXktMyksXG4gICAgICAgIGhlYWRsaW5lLTM6IG1hcC5nZXQoJGNvbmZpZywgZGlzcGxheS0yKSxcbiAgICAgICAgaGVhZGxpbmUtNDogbWFwLmdldCgkY29uZmlnLCBkaXNwbGF5LTEpLFxuICAgICAgICBoZWFkbGluZS01OiBtYXAuZ2V0KCRjb25maWcsIGhlYWRsaW5lKSxcbiAgICAgICAgaGVhZGxpbmUtNjogbWFwLmdldCgkY29uZmlnLCB0aXRsZSksXG4gICAgICAgIHN1YnRpdGxlLTE6IG1hcC5nZXQoJGNvbmZpZywgc3ViaGVhZGluZy0yKSxcbiAgICAgICAgc3VidGl0bGUtMjogbWFwLmdldCgkY29uZmlnLCBzdWJoZWFkaW5nLTEpLFxuICAgICAgICBib2R5LTE6IG1hcC5nZXQoJGNvbmZpZywgYm9keS0yKSxcbiAgICAgICAgYm9keS0yOiBtYXAuZ2V0KCRjb25maWcsIGJvZHktMSksXG4gICAgICAgIGJ1dHRvbjogbWFwLmdldCgkY29uZmlnLCBidXR0b24pLFxuICAgICAgICBjYXB0aW9uOiBtYXAuZ2V0KCRjb25maWcsIGNhcHRpb24pLFxuICAgICAgICBvdmVybGluZTogaWYobWFwLmdldCgkY29uZmlnLCBvdmVybGluZSksIG1hcC5nZXQoJGNvbmZpZywgb3ZlcmxpbmUpLFxuICAgICAgICAgICAgZGVmaW5lLXR5cG9ncmFwaHktbGV2ZWwoMTJweCwgMzJweCwgNTAwKVxuICAgICAgICApXG4gICAgKTtcbiAgfVxuICBAcmV0dXJuICRjb25maWc7XG59XG5cbi8vIHN0eWxlbGludC1kaXNhYmxlIG1hdGVyaWFsL3RoZW1lLW1peGluLWFwaVxuXG4vLy8gRW1pdHMgYmFzZWxpbmUgdHlwb2dyYXBoaWMgc3R5bGVzIGJhc2VkIG9uIGEgZ2l2ZW4gY29uZmlnLlxuLy8vIEBwYXJhbSB7TWFwfSAkY29uZmlnLW9yLXRoZW1lIEEgdHlwb2dyYXBoeSBjb25maWcgZm9yIGFuIGVudGlyZSB0aGVtZS5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJHNlbGVjdG9yIEFuY2VzdG9yIHNlbGVjdG9yIHVuZGVyIHdoaWNoIG5hdGl2ZSBlbGVtZW50cywgc3VjaCBhcyBoMSwgd2lsbFxuLy8vICAgICBiZSBzdHlsZWQuXG5AbWl4aW4gdHlwb2dyYXBoeS1oaWVyYXJjaHkoJGNvbmZpZy1vci10aGVtZSwgJHNlbGVjdG9yOiAnLm1hdC10eXBvZ3JhcGh5Jykge1xuICAkY29uZmlnOiBwcml2YXRlLXR5cG9ncmFwaHktdG8tMjAxNC1jb25maWcodGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJGNvbmZpZy1vci10aGVtZSkpO1xuXG4gIC5tYXQtaDEsIC5tYXQtaGVhZGxpbmUsICN7JHNlbGVjdG9yfSBoMSB7XG4gICAgQGluY2x1ZGUgdHlwb2dyYXBoeS11dGlscy50eXBvZ3JhcGh5LWxldmVsKCRjb25maWcsIGhlYWRsaW5lKTtcbiAgICBtYXJnaW46IDAgMCAxNnB4O1xuICB9XG5cbiAgLm1hdC1oMiwgLm1hdC10aXRsZSwgI3skc2VsZWN0b3J9IGgyIHtcbiAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5LXV0aWxzLnR5cG9ncmFwaHktbGV2ZWwoJGNvbmZpZywgdGl0bGUpO1xuICAgIG1hcmdpbjogMCAwIDE2cHg7XG4gIH1cblxuICAubWF0LWgzLCAubWF0LXN1YmhlYWRpbmctMiwgI3skc2VsZWN0b3J9IGgzIHtcbiAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5LXV0aWxzLnR5cG9ncmFwaHktbGV2ZWwoJGNvbmZpZywgc3ViaGVhZGluZy0yKTtcbiAgICBtYXJnaW46IDAgMCAxNnB4O1xuICB9XG5cbiAgLm1hdC1oNCwgLm1hdC1zdWJoZWFkaW5nLTEsICN7JHNlbGVjdG9yfSBoNCB7XG4gICAgQGluY2x1ZGUgdHlwb2dyYXBoeS11dGlscy50eXBvZ3JhcGh5LWxldmVsKCRjb25maWcsIHN1YmhlYWRpbmctMSk7XG4gICAgbWFyZ2luOiAwIDAgMTZweDtcbiAgfVxuXG4gIC8vIE5vdGU6IHRoZSBzcGVjIGRvZXNuJ3QgaGF2ZSBhbnl0aGluZyB0aGF0IHdvdWxkIGNvcnJlc3BvbmQgdG8gaDUgYW5kIGg2LCBidXQgd2UgYWRkIHRoZXNlIGZvclxuICAvLyBjb25zaXN0ZW5jeS4gVGhlIGZvbnQgc2l6ZXMgY29tZSBmcm9tIHRoZSBDaHJvbWUgdXNlciBhZ2VudCBzdHlsZXMgd2hpY2ggaGF2ZSBoNSBhdCAwLjgzZW1cbiAgLy8gYW5kIGg2IGF0IDAuNjdlbS5cbiAgLm1hdC1oNSwgI3skc2VsZWN0b3J9IGg1IHtcbiAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtc2hvcnRoYW5kKFxuICAgICAgIC8vIGNhbGMgaXMgdXNlZCBoZXJlIHRvIHN1cHBvcnQgY3NzIHZhcmlhYmxlc1xuICAgICAgY2FsYygje3R5cG9ncmFwaHktdXRpbHMuZm9udC1zaXplKCRjb25maWcsIGJvZHktMSl9ICogMC44MyksXG4gICAgICB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtd2VpZ2h0KCRjb25maWcsIGJvZHktMSksXG4gICAgICB0eXBvZ3JhcGh5LXV0aWxzLmxpbmUtaGVpZ2h0KCRjb25maWcsIGJvZHktMSksXG4gICAgICB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtZmFtaWx5KCRjb25maWcsIGJvZHktMSlcbiAgICApO1xuXG4gICAgbWFyZ2luOiAwIDAgMTJweDtcbiAgfVxuXG4gIC5tYXQtaDYsICN7JHNlbGVjdG9yfSBoNiB7XG4gICAgQGluY2x1ZGUgdHlwb2dyYXBoeS11dGlscy5mb250LXNob3J0aGFuZChcbiAgICAgICAvLyBjYWxjIGlzIHVzZWQgaGVyZSB0byBzdXBwb3J0IGNzcyB2YXJpYWJsZXNcbiAgICAgIGNhbGMoI3t0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtc2l6ZSgkY29uZmlnLCBib2R5LTEpfSAqIDAuNjcpLFxuICAgICAgdHlwb2dyYXBoeS11dGlscy5mb250LXdlaWdodCgkY29uZmlnLCBib2R5LTEpLFxuICAgICAgdHlwb2dyYXBoeS11dGlscy5saW5lLWhlaWdodCgkY29uZmlnLCBib2R5LTEpLFxuICAgICAgdHlwb2dyYXBoeS11dGlscy5mb250LWZhbWlseSgkY29uZmlnLCBib2R5LTEpXG4gICAgKTtcblxuICAgIG1hcmdpbjogMCAwIDEycHg7XG4gIH1cblxuICAubWF0LWJvZHktc3Ryb25nLCAubWF0LWJvZHktMiB7XG4gICAgQGluY2x1ZGUgdHlwb2dyYXBoeS11dGlscy50eXBvZ3JhcGh5LWxldmVsKCRjb25maWcsIGJvZHktMik7XG4gIH1cblxuICAubWF0LWJvZHksIC5tYXQtYm9keS0xLCAjeyRzZWxlY3Rvcn0ge1xuICAgIEBpbmNsdWRlIHR5cG9ncmFwaHktdXRpbHMudHlwb2dyYXBoeS1sZXZlbCgkY29uZmlnLCBib2R5LTEpO1xuXG4gICAgcCB7XG4gICAgICBtYXJnaW46IDAgMCAxMnB4O1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtc21hbGwsIC5tYXQtY2FwdGlvbiB7XG4gICAgQGluY2x1ZGUgdHlwb2dyYXBoeS11dGlscy50eXBvZ3JhcGh5LWxldmVsKCRjb25maWcsIGNhcHRpb24pO1xuICB9XG5cbiAgLm1hdC1kaXNwbGF5LTQsICN7JHNlbGVjdG9yfSAubWF0LWRpc3BsYXktNCB7XG4gICAgQGluY2x1ZGUgdHlwb2dyYXBoeS11dGlscy50eXBvZ3JhcGh5LWxldmVsKCRjb25maWcsIGRpc3BsYXktNCk7XG4gICAgbWFyZ2luOiAwIDAgNTZweDtcbiAgfVxuXG4gIC5tYXQtZGlzcGxheS0zLCAjeyRzZWxlY3Rvcn0gLm1hdC1kaXNwbGF5LTMge1xuICAgIEBpbmNsdWRlIHR5cG9ncmFwaHktdXRpbHMudHlwb2dyYXBoeS1sZXZlbCgkY29uZmlnLCBkaXNwbGF5LTMpO1xuICAgIG1hcmdpbjogMCAwIDY0cHg7XG4gIH1cblxuICAubWF0LWRpc3BsYXktMiwgI3skc2VsZWN0b3J9IC5tYXQtZGlzcGxheS0yIHtcbiAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5LXV0aWxzLnR5cG9ncmFwaHktbGV2ZWwoJGNvbmZpZywgZGlzcGxheS0yKTtcbiAgICBtYXJnaW46IDAgMCA2NHB4O1xuICB9XG5cbiAgLm1hdC1kaXNwbGF5LTEsICN7JHNlbGVjdG9yfSAubWF0LWRpc3BsYXktMSB7XG4gICAgQGluY2x1ZGUgdHlwb2dyYXBoeS11dGlscy50eXBvZ3JhcGh5LWxldmVsKCRjb25maWcsIGRpc3BsYXktMSk7XG4gICAgbWFyZ2luOiAwIDAgNjRweDtcbiAgfVxufVxuXG4vLyBzdHlsZWxpbnQtZW5hYmxlIG1hdGVyaWFsL3RoZW1lLW1peGluLWFwaVxuIiwiQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnc2FzczptZXRhJztcbkB1c2UgJ3Nhc3M6c3RyaW5nJztcblxuXG4vLyBVdGlsaXR5IGZvciBmZXRjaGluZyBhIG5lc3RlZCB2YWx1ZSBmcm9tIGEgdHlwb2dyYXBoeSBjb25maWcuXG5AZnVuY3Rpb24gX21hdC1nZXQtdHlwZS12YWx1ZSgkY29uZmlnLCAkbGV2ZWwsICRuYW1lKSB7XG4gIEByZXR1cm4gbWFwLmdldChtYXAuZ2V0KCRjb25maWcsICRsZXZlbCksICRuYW1lKTtcbn1cblxuLy8vIEdldHMgdGhlIGZvbnQgc2l6ZSBmb3IgYSBsZXZlbCBpbnNpZGUgYSB0eXBvZ3JhcGh5IGNvbmZpZy5cbi8vLyBAcGFyYW0ge01hcH0gJGNvbmZpZyBBIHR5cG9ncmFwaHkgY29uZmlnLlxuLy8vIEBwYXJhbSB7TWFwfSAkbGV2ZWwgQSB0eXBvZ3JhcGh5IGxldmVsLlxuQGZ1bmN0aW9uIGZvbnQtc2l6ZSgkY29uZmlnLCAkbGV2ZWwpIHtcbiAgQHJldHVybiBfbWF0LWdldC10eXBlLXZhbHVlKCRjb25maWcsICRsZXZlbCwgZm9udC1zaXplKTtcbn1cblxuLy8vIEdldHMgdGhlIGxpbmUgaGVpZ2h0IGZvciBhIGxldmVsIGluc2lkZSBhIHR5cG9ncmFwaHkgY29uZmlnLlxuLy8vIEBwYXJhbSB7TWFwfSAkY29uZmlnIEEgdHlwb2dyYXBoeSBjb25maWcuXG4vLy8gQHBhcmFtIHtNYXB9ICRsZXZlbCBBIHR5cG9ncmFwaHkgbGV2ZWwuXG5AZnVuY3Rpb24gbGluZS1oZWlnaHQoJGNvbmZpZywgJGxldmVsKSB7XG4gIEByZXR1cm4gX21hdC1nZXQtdHlwZS12YWx1ZSgkY29uZmlnLCAkbGV2ZWwsIGxpbmUtaGVpZ2h0KTtcbn1cblxuLy8vIEdldHMgdGhlIGZvbnQgd2VpZ2h0IGZvciBhIGxldmVsIGluc2lkZSBhIHR5cG9ncmFwaHkgY29uZmlnLlxuLy8vIEBwYXJhbSB7TWFwfSAkY29uZmlnIEEgdHlwb2dyYXBoeSBjb25maWcuXG4vLy8gQHBhcmFtIHtNYXB9ICRsZXZlbCBBIHR5cG9ncmFwaHkgbGV2ZWwuXG5AZnVuY3Rpb24gZm9udC13ZWlnaHQoJGNvbmZpZywgJGxldmVsKSB7XG4gIEByZXR1cm4gX21hdC1nZXQtdHlwZS12YWx1ZSgkY29uZmlnLCAkbGV2ZWwsIGZvbnQtd2VpZ2h0KTtcbn1cblxuLy8vIEdldHMgdGhlIGxldHRlciBzcGFjaW5nIGZvciBhIGxldmVsIGluc2lkZSBhIHR5cG9ncmFwaHkgY29uZmlnLlxuLy8vIEBwYXJhbSB7TWFwfSAkY29uZmlnIEEgdHlwb2dyYXBoeSBjb25maWcuXG4vLy8gQHBhcmFtIHtNYXB9ICRsZXZlbCBBIHR5cG9ncmFwaHkgbGV2ZWwuXG5AZnVuY3Rpb24gbGV0dGVyLXNwYWNpbmcoJGNvbmZpZywgJGxldmVsKSB7XG4gIEByZXR1cm4gX21hdC1nZXQtdHlwZS12YWx1ZSgkY29uZmlnLCAkbGV2ZWwsIGxldHRlci1zcGFjaW5nKTtcbn1cblxuLy8vIEdldHMgdGhlIGZvbnQtZmFtaWx5IGZyb20gYSB0eXBvZ3JhcGh5IGNvbmZpZyBhbmQgcmVtb3ZlcyB0aGUgcXVvdGVzIGFyb3VuZCBpdC5cbi8vLyBAcGFyYW0ge01hcH0gJGNvbmZpZyBBIHR5cG9ncmFwaHkgY29uZmlnLlxuLy8vIEBwYXJhbSB7TWFwfSAkbGV2ZWwgQSB0eXBvZ3JhcGh5IGxldmVsLlxuQGZ1bmN0aW9uIGZvbnQtZmFtaWx5KCRjb25maWcsICRsZXZlbDogbnVsbCkge1xuICAkZm9udC1mYW1pbHk6IG1hcC5nZXQoJGNvbmZpZywgZm9udC1mYW1pbHkpO1xuXG4gIEBpZiAkbGV2ZWwgIT0gbnVsbCB7XG4gICAgJGZvbnQtZmFtaWx5OiBfbWF0LWdldC10eXBlLXZhbHVlKCRjb25maWcsICRsZXZlbCwgZm9udC1mYW1pbHkpO1xuICB9XG5cbiAgLy8gR3VhcmQgYWdhaW5zdCB1bnF1b3Rpbmcgbm9uLXN0cmluZyB2YWx1ZXMsIGJlY2F1c2UgaXQncyBkZXByZWNhdGVkLlxuICBAcmV0dXJuIGlmKG1ldGEudHlwZS1vZigkZm9udC1mYW1pbHkpID09IHN0cmluZywgc3RyaW5nLnVucXVvdGUoJGZvbnQtZmFtaWx5KSwgJGZvbnQtZmFtaWx5KTtcbn1cblxuLy8vIE91dHB1dHMgdGhlIHNob3J0aGFuZCBgZm9udGAgQ1NTIHByb3BlcnR5LCBiYXNlZCBvbiBhIHNldCBvZiB0eXBvZ3JhcGh5IHZhbHVlcy4gRmFsbHMgYmFjayB0b1xuLy8vIHRoZSBpbmRpdmlkdWFsIHByb3BlcnRpZXMgaWYgYSB2YWx1ZSB0aGF0IGlzbid0IGFsbG93ZWQgaW4gdGhlIHNob3J0aGFuZCBpcyBwYXNzZWQgaW4uXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRmb250LXNpemUgVGhlIGZvbnQtc2l6ZSB2YWx1ZS5cbi8vLyBAcGFyYW0ge1N0cmluZyB8IE51bWJlcn0gJGZvbnQtd2VpZ2h0IFRoZSBmb250LXdlaWdodCB2YWx1ZS5cbi8vLyBAcGFyYW0ge1N0cmluZyB8IE51bWJlcn0gJGxpbmUtaGVpZ2h0IFRoZSBsaW5lLWhlaWdodCB2YWx1ZS5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGZvbnQtZmFtaWx5IFRoZSBmb250LWZhbWlseSB2YWx1ZS5cbi8vLyBAcmV0dXJucyB7U3RyaW5nfSBUaGUgYGZvbnRgIHNob3J0aGFuZCB2YWx1ZSBjb21iaW5pbmcgdGhlIGdpdmVuIHBhcnRzLlxuQG1peGluIGZvbnQtc2hvcnRoYW5kKCRmb250LXNpemUsICRmb250LXdlaWdodCwgJGxpbmUtaGVpZ2h0LCAkZm9udC1mYW1pbHkpIHtcbiAgLy8gSWYgYW55IG9mIHRoZSB2YWx1ZXMgYXJlIHNldCB0byBgaW5oZXJpdGAsIHdlIGNhbid0IHVzZSB0aGUgc2hvcnRoYW5kXG4gIC8vIHNvIHdlIGZhbGwgYmFjayB0byBwYXNzaW5nIGluIHRoZSBpbmRpdmlkdWFsIHByb3BlcnRpZXMuXG4gIEBpZiAoJGZvbnQtc2l6ZSA9PSBpbmhlcml0IG9yXG4gICAgICAgJGZvbnQtd2VpZ2h0ID09IGluaGVyaXQgb3JcbiAgICAgICAkbGluZS1oZWlnaHQgPT0gaW5oZXJpdCBvclxuICAgICAgICRmb250LWZhbWlseSA9PSBpbmhlcml0IG9yXG4gICAgICAgJGZvbnQtc2l6ZSA9PSBudWxsIG9yXG4gICAgICAgJGZvbnQtd2VpZ2h0ID09IG51bGwgb3JcbiAgICAgICAkbGluZS1oZWlnaHQgPT0gbnVsbCBvclxuICAgICAgICRmb250LWZhbWlseSA9PSBudWxsKSB7XG5cbiAgICBmb250LXNpemU6ICRmb250LXNpemU7XG4gICAgZm9udC13ZWlnaHQ6ICRmb250LXdlaWdodDtcbiAgICBsaW5lLWhlaWdodDogJGxpbmUtaGVpZ2h0O1xuICAgIGZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIC8vIE90aGVyd2lzZSB1c2UgdGhlIHNob3J0aGFuZCBgZm9udGAsIGJlY2F1c2UgaXQncyB0aGUgbGVhc3QgYW1vdW50IG9mIGJ5dGVzLiBOb3RlXG4gICAgLy8gdGhhdCB3ZSBuZWVkIHRvIHVzZSBpbnRlcnBvbGF0aW9uIGZvciBgZm9udC1zaXplL2xpbmUtaGVpZ2h0YCBpbiBvcmRlciB0byBwcmV2ZW50XG4gICAgLy8gU2FzcyBmcm9tIGRpdmlkaW5nIHRoZSB0d28gdmFsdWVzLlxuICAgIGZvbnQ6ICRmb250LXdlaWdodCAjeyRmb250LXNpemV9LyN7JGxpbmUtaGVpZ2h0fSAkZm9udC1mYW1pbHk7XG4gIH1cbn1cblxuLy8vIEVtaXRzIENTUyBzdHlsZXMgZm9yIHRoZSBnaXZlbiB0eXBvZ3JhcGh5IGxldmVsLlxuLy8vIEBwYXJhbSB7TWFwfSAkY29uZmlnIEEgdHlwb2dyYXBoeSBjb25maWcuXG4vLy8gQHBhcmFtIHtNYXB9ICRsZXZlbCBBIHR5cG9ncmFwaHkgbGV2ZWwuXG5AbWl4aW4gdHlwb2dyYXBoeS1sZXZlbCgkY29uZmlnLCAkbGV2ZWwpIHtcbiAgJGZvbnQtc2l6ZTogZm9udC1zaXplKCRjb25maWcsICRsZXZlbCk7XG4gICRmb250LXdlaWdodDogZm9udC13ZWlnaHQoJGNvbmZpZywgJGxldmVsKTtcbiAgJGxpbmUtaGVpZ2h0OiBsaW5lLWhlaWdodCgkY29uZmlnLCAkbGV2ZWwpO1xuICAkZm9udC1mYW1pbHk6IGZvbnQtZmFtaWx5KCRjb25maWcsICRsZXZlbCk7XG5cbiAgQGluY2x1ZGUgZm9udC1zaG9ydGhhbmQoJGZvbnQtc2l6ZSwgJGZvbnQtd2VpZ2h0LCAkbGluZS1oZWlnaHQsICRmb250LWZhbWlseSk7XG4gIGxldHRlci1zcGFjaW5nOiBsZXR0ZXItc3BhY2luZygkY29uZmlnLCAkbGV2ZWwpO1xufVxuIiwiQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnLi4vY29yZS9zdHlsZS9wcml2YXRlJztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5JztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5LXV0aWxzJztcbkB1c2UgJy4uL2NvcmUvdGhlbWluZy90aGVtaW5nJztcblxuQG1peGluIGNvbG9yKCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAkYmFja2dyb3VuZDogbWFwLmdldCgkY29uZmlnLCBiYWNrZ3JvdW5kKTtcbiAgJGZvcmVncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgZm9yZWdyb3VuZCk7XG5cbiAgLm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyIHtcbiAgICBAaW5jbHVkZSBwcml2YXRlLnByaXZhdGUtdGhlbWUtZWxldmF0aW9uKDE2LCAkY29uZmlnKTtcbiAgICBiYWNrZ3JvdW5kOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGJhY2tncm91bmQsIGRpYWxvZyk7XG4gICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgdGV4dCk7XG4gIH1cbn1cblxuQG1peGluIHR5cG9ncmFwaHkoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0eXBvZ3JhcGh5LnByaXZhdGUtdHlwb2dyYXBoeS10by0yMDE0LWNvbmZpZyhcbiAgICAgIHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCRjb25maWctb3ItdGhlbWUpKTtcbiAgLm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyIHtcbiAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5LXV0aWxzLnR5cG9ncmFwaHktbGV2ZWwoJGNvbmZpZywgYm9keS0xKTtcbiAgfVxufVxuXG5AbWl4aW4gX2RlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIHRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiB0aGVtaW5nLnByaXZhdGUtbGVnYWN5LWdldC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgQGluY2x1ZGUgdGhlbWluZy5wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LWJvdHRvbS1zaGVldCcpIHtcbiAgICAkY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkdGhlbWUpO1xuICAgICRkZW5zaXR5OiB0aGVtaW5nLmdldC1kZW5zaXR5LWNvbmZpZygkdGhlbWUpO1xuICAgICR0eXBvZ3JhcGh5OiB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkdGhlbWUpO1xuXG4gICAgQGlmICRjb2xvciAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIGNvbG9yKCRjb2xvcik7XG4gICAgfVxuICAgIEBpZiAkZGVuc2l0eSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIF9kZW5zaXR5KCRkZW5zaXR5KTtcbiAgICB9XG4gICAgQGlmICR0eXBvZ3JhcGh5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgdHlwb2dyYXBoeSgkdHlwb2dyYXBoeSk7XG4gICAgfVxuICB9XG59XG4iLCJAdXNlICdzYXNzOm1hcCc7XG5AdXNlICdzYXNzOm1ldGEnO1xuQHVzZSAnLi4vY29yZS90aGVtaW5nL3RoZW1pbmcnO1xuQHVzZSAnLi4vY29yZS9zdHlsZS9wcml2YXRlJztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5JztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5LXV0aWxzJztcblxuJF9yaXBwbGUtb3BhY2l0eTogMC4xO1xuXG4vLyBBcHBsaWVzIGEgZm9jdXMgc3R5bGUgdG8gYW4gbWF0LWJ1dHRvbiBlbGVtZW50IGZvciBlYWNoIG9mIHRoZSBzdXBwb3J0ZWQgcGFsZXR0ZXMuXG5AbWl4aW4gX2ZvY3VzLW92ZXJsYXktY29sb3IoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRwcmltYXJ5OiBtYXAuZ2V0KCRjb25maWcsIHByaW1hcnkpO1xuICAkYWNjZW50OiBtYXAuZ2V0KCRjb25maWcsIGFjY2VudCk7XG4gICR3YXJuOiBtYXAuZ2V0KCRjb25maWcsIHdhcm4pO1xuXG4gICYubWF0LXByaW1hcnkgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRwcmltYXJ5KTtcbiAgfVxuXG4gICYubWF0LWFjY2VudCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5IHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGFjY2VudCk7XG4gIH1cblxuICAmLm1hdC13YXJuIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXkge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkd2Fybik7XG4gIH1cblxuICAmLm1hdC1idXR0b24tZGlzYWJsZWQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIH1cbn1cblxuLy8gQXBwbGllcyB0aGUgYmFja2dyb3VuZCBjb2xvciBmb3IgYSByaXBwbGUuIElmIHRoZSB2YWx1ZSBwcm92aWRlZCBpcyBub3QgYSBTYXNzIGNvbG9yLFxuLy8gd2UgYXNzdW1lIHRoYXQgd2UndmUgYmVlbiBnaXZlbiBhIENTUyB2YXJpYWJsZS4gU2luY2Ugd2UgY2FuJ3QgcGVyZm9ybSBhbHBoYS1ibGVuZGluZ1xuLy8gb24gYSBDU1MgdmFyaWFibGUsIHdlIGluc3RlYWQgYWRkIHRoZSBvcGFjaXR5IGRpcmVjdGx5IHRvIHRoZSByaXBwbGUgZWxlbWVudC5cbkBtaXhpbiBfcmlwcGxlLWJhY2tncm91bmQoJHBhbGV0dGUsICRodWUsICRvcGFjaXR5KSB7XG4gICRiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHBhbGV0dGUsICRodWUsICRvcGFjaXR5KTtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmQtY29sb3I7XG4gIEBpZiAobWV0YS50eXBlLW9mKCRiYWNrZ3JvdW5kLWNvbG9yKSAhPSBjb2xvcikge1xuICAgIG9wYWNpdHk6ICRvcGFjaXR5O1xuICB9XG59XG5cbkBtaXhpbiBfcmlwcGxlLWNvbG9yKCR0aGVtZSwgJGh1ZSwgJG9wYWNpdHk6ICRfcmlwcGxlLW9wYWNpdHkpIHtcbiAgJHByaW1hcnk6IG1hcC5nZXQoJHRoZW1lLCBwcmltYXJ5KTtcbiAgJGFjY2VudDogbWFwLmdldCgkdGhlbWUsIGFjY2VudCk7XG4gICR3YXJuOiBtYXAuZ2V0KCR0aGVtZSwgd2Fybik7XG5cbiAgJi5tYXQtcHJpbWFyeSAubWF0LXJpcHBsZS1lbGVtZW50IHtcbiAgICBAaW5jbHVkZSBfcmlwcGxlLWJhY2tncm91bmQoJHByaW1hcnksICRodWUsICRvcGFjaXR5KTtcbiAgfVxuXG4gICYubWF0LWFjY2VudCAubWF0LXJpcHBsZS1lbGVtZW50IHtcbiAgICBAaW5jbHVkZSBfcmlwcGxlLWJhY2tncm91bmQoJGFjY2VudCwgJGh1ZSwgJG9wYWNpdHkpO1xuICB9XG5cbiAgJi5tYXQtd2FybiAubWF0LXJpcHBsZS1lbGVtZW50IHtcbiAgICBAaW5jbHVkZSBfcmlwcGxlLWJhY2tncm91bmQoJHdhcm4sICRodWUsICRvcGFjaXR5KTtcbiAgfVxufVxuXG4vLyBBcHBsaWVzIGEgcHJvcGVydHkgdG8gYW4gbWF0LWJ1dHRvbiBlbGVtZW50IGZvciBlYWNoIG9mIHRoZSBzdXBwb3J0ZWQgcGFsZXR0ZXMuXG5AbWl4aW4gX3RoZW1lLXByb3BlcnR5KCR0aGVtZSwgJHByb3BlcnR5LCAkaHVlKSB7XG4gICRwcmltYXJ5OiBtYXAuZ2V0KCR0aGVtZSwgcHJpbWFyeSk7XG4gICRhY2NlbnQ6IG1hcC5nZXQoJHRoZW1lLCBhY2NlbnQpO1xuICAkd2FybjogbWFwLmdldCgkdGhlbWUsIHdhcm4pO1xuICAkYmFja2dyb3VuZDogbWFwLmdldCgkdGhlbWUsIGJhY2tncm91bmQpO1xuICAkZm9yZWdyb3VuZDogbWFwLmdldCgkdGhlbWUsIGZvcmVncm91bmQpO1xuXG4gICYubWF0LXByaW1hcnkge1xuICAgICN7JHByb3BlcnR5fTogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRwcmltYXJ5LCAkaHVlKTtcbiAgfVxuICAmLm1hdC1hY2NlbnQge1xuICAgICN7JHByb3BlcnR5fTogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRhY2NlbnQsICRodWUpO1xuICB9XG4gICYubWF0LXdhcm4ge1xuICAgICN7JHByb3BlcnR5fTogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCR3YXJuLCAkaHVlKTtcbiAgfVxuXG4gICYubWF0LXByaW1hcnksICYubWF0LWFjY2VudCwgJi5tYXQtd2FybiwgJi5tYXQtYnV0dG9uLWRpc2FibGVkIHtcbiAgICAmLm1hdC1idXR0b24tZGlzYWJsZWQge1xuICAgICAgJHBhbGV0dGU6IGlmKCRwcm9wZXJ0eSA9PSAnY29sb3InLCAkZm9yZWdyb3VuZCwgJGJhY2tncm91bmQpO1xuICAgICAgI3skcHJvcGVydHl9OiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHBhbGV0dGUsIGRpc2FibGVkLWJ1dHRvbik7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBjb2xvcigkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJHByaW1hcnk6IG1hcC5nZXQoJGNvbmZpZywgcHJpbWFyeSk7XG4gICRhY2NlbnQ6IG1hcC5nZXQoJGNvbmZpZywgYWNjZW50KTtcbiAgJHdhcm46IG1hcC5nZXQoJGNvbmZpZywgd2Fybik7XG4gICRiYWNrZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGJhY2tncm91bmQpO1xuICAkZm9yZWdyb3VuZDogbWFwLmdldCgkY29uZmlnLCBmb3JlZ3JvdW5kKTtcblxuICAubWF0LWJ1dHRvbiwgLm1hdC1pY29uLWJ1dHRvbiwgLm1hdC1zdHJva2VkLWJ1dHRvbiB7XG4gICAgLy8gQnV0dG9ucyB3aXRob3V0IGEgYmFja2dyb3VuZCBjb2xvciBzaG91bGQgaW5oZXJpdCB0aGUgZm9udCBjb2xvci4gVGhpcyBpcyBuZWNlc3NhcnkgdG9cbiAgICAvLyBlbnN1cmUgdGhhdCB0aGUgYnV0dG9uIGlzIHJlYWRhYmxlIG9uIGN1c3RvbSBiYWNrZ3JvdW5kIGNvbG9ycy4gSXQncyB3cm9uZyB0byBhbHdheXMgYXNzdW1lXG4gICAgLy8gdGhhdCB0aG9zZSBidXR0b25zIGFyZSBhbHdheXMgcGxhY2VkIGluc2lkZSBvZiBjb250YWluZXJzIHdpdGggdGhlIGRlZmF1bHQgYmFja2dyb3VuZFxuICAgIC8vIGNvbG9yIG9mIHRoZSB0aGVtZSAoZS5nLiB0aGVtZWQgdG9vbGJhcnMpLlxuICAgIGNvbG9yOiBpbmhlcml0O1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuXG4gICAgQGluY2x1ZGUgX3RoZW1lLXByb3BlcnR5KCRjb25maWcsICdjb2xvcicsIHRleHQpO1xuICAgIEBpbmNsdWRlIF9mb2N1cy1vdmVybGF5LWNvbG9yKCRjb25maWcpO1xuXG4gICAgLy8gU2V0dXAgdGhlIHJpcHBsZSBjb2xvciB0byBiZSBiYXNlZCBvbiB0aGUgdGV4dCBjb2xvci4gVGhpcyBlbnN1cmVzIHRoYXQgdGhlIHJpcHBsZXNcbiAgICAvLyBhcmUgbWF0Y2hpbmcgd2l0aCB0aGUgY3VycmVudCB0aGVtZSBwYWxldHRlIGFuZCBhcmUgaW4gY29udHJhc3QgdG8gdGhlIGJhY2tncm91bmQgY29sb3JcbiAgICAvLyAoZS5nIGluIHRoZW1lZCB0b29sYmFycykuXG4gICAgLm1hdC1yaXBwbGUtZWxlbWVudCB7XG4gICAgICBvcGFjaXR5OiAkX3JpcHBsZS1vcGFjaXR5O1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogY3VycmVudENvbG9yO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXkge1xuICAgIGJhY2tncm91bmQ6IG1hcC5nZXQoJGZvcmVncm91bmQsIGJhc2UpO1xuICB9XG5cbiAgLy8gTm90ZTogdGhpcyBuZWVkcyBhIGJpdCBleHRyYSBzcGVjaWZpY2l0eSwgYmVjYXVzZSB3ZSdyZSBub3QgZ3VhcmFudGVlZCB0aGUgaW5jbHVzaW9uXG4gIC8vIG9yZGVyIG9mIHRoZSB0aGVtZSBzdHlsZXMgYW5kIHRoZSBidXR0b24gcmVzZXQgbWF5IGVuZCB1cCByZXNldHRpbmcgdGhpcyBhcyB3ZWxsLlxuICAubWF0LXN0cm9rZWQtYnV0dG9uOm5vdCgubWF0LWJ1dHRvbi1kaXNhYmxlZCkge1xuICAgIGJvcmRlci1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBkaXZpZGVyKTtcbiAgfVxuXG4gIC5tYXQtZmxhdC1idXR0b24sIC5tYXQtcmFpc2VkLWJ1dHRvbiwgLm1hdC1mYWIsIC5tYXQtbWluaS1mYWIge1xuICAgIC8vIERlZmF1bHQgZm9udCBhbmQgYmFja2dyb3VuZCBjb2xvciB3aGVuIG5vdCB1c2luZyBhbnkgY29sb3IgcGFsZXR0ZS5cbiAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCB0ZXh0KTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGJhY2tncm91bmQsIHJhaXNlZC1idXR0b24pO1xuXG4gICAgQGluY2x1ZGUgX3RoZW1lLXByb3BlcnR5KCRjb25maWcsICdjb2xvcicsIGRlZmF1bHQtY29udHJhc3QpO1xuICAgIEBpbmNsdWRlIF90aGVtZS1wcm9wZXJ0eSgkY29uZmlnLCAnYmFja2dyb3VuZC1jb2xvcicsIGRlZmF1bHQpO1xuICAgIEBpbmNsdWRlIF9yaXBwbGUtY29sb3IoJGNvbmZpZywgZGVmYXVsdC1jb250cmFzdCk7XG4gIH1cblxuICAubWF0LXN0cm9rZWQtYnV0dG9uLCAubWF0LWZsYXQtYnV0dG9uIHtcbiAgICBAaW5jbHVkZSBwcml2YXRlLnByaXZhdGUtdGhlbWUtb3ZlcnJpZGFibGUtZWxldmF0aW9uKDAsICRjb25maWcpO1xuICB9XG5cbiAgLm1hdC1yYWlzZWQtYnV0dG9uIHtcbiAgICBAaW5jbHVkZSBwcml2YXRlLnByaXZhdGUtdGhlbWUtb3ZlcnJpZGFibGUtZWxldmF0aW9uKDIsICRjb25maWcpO1xuXG4gICAgJjpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpOmFjdGl2ZSB7XG4gICAgICBAaW5jbHVkZSBwcml2YXRlLnByaXZhdGUtdGhlbWUtb3ZlcnJpZGFibGUtZWxldmF0aW9uKDgsICRjb25maWcpO1xuICAgIH1cblxuICAgICYubWF0LWJ1dHRvbi1kaXNhYmxlZCB7XG4gICAgICBAaW5jbHVkZSBwcml2YXRlLnByaXZhdGUtdGhlbWUtb3ZlcnJpZGFibGUtZWxldmF0aW9uKDAsICRjb25maWcpO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtZmFiLCAubWF0LW1pbmktZmFiIHtcbiAgICBAaW5jbHVkZSBwcml2YXRlLnByaXZhdGUtdGhlbWUtb3ZlcnJpZGFibGUtZWxldmF0aW9uKDYsICRjb25maWcpO1xuXG4gICAgJjpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpOmFjdGl2ZSB7XG4gICAgICBAaW5jbHVkZSBwcml2YXRlLnByaXZhdGUtdGhlbWUtb3ZlcnJpZGFibGUtZWxldmF0aW9uKDEyLCAkY29uZmlnKTtcbiAgICB9XG5cbiAgICAmLm1hdC1idXR0b24tZGlzYWJsZWQge1xuICAgICAgQGluY2x1ZGUgcHJpdmF0ZS5wcml2YXRlLXRoZW1lLW92ZXJyaWRhYmxlLWVsZXZhdGlvbigwLCAkY29uZmlnKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHR5cG9ncmFwaHkoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0eXBvZ3JhcGh5LnByaXZhdGUtdHlwb2dyYXBoeS10by0yMDE0LWNvbmZpZyhcbiAgICAgIHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCRjb25maWctb3ItdGhlbWUpKTtcbiAgLm1hdC1idXR0b24sIC5tYXQtcmFpc2VkLWJ1dHRvbiwgLm1hdC1pY29uLWJ1dHRvbiwgLm1hdC1zdHJva2VkLWJ1dHRvbixcbiAgLm1hdC1mbGF0LWJ1dHRvbiwgLm1hdC1mYWIsIC5tYXQtbWluaS1mYWIge1xuICAgIGZvbnQ6IHtcbiAgICAgIGZhbWlseTogdHlwb2dyYXBoeS11dGlscy5mb250LWZhbWlseSgkY29uZmlnLCBidXR0b24pO1xuICAgICAgc2l6ZTogdHlwb2dyYXBoeS11dGlscy5mb250LXNpemUoJGNvbmZpZywgYnV0dG9uKTtcbiAgICAgIHdlaWdodDogdHlwb2dyYXBoeS11dGlscy5mb250LXdlaWdodCgkY29uZmlnLCBidXR0b24pO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gX2RlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIHRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiB0aGVtaW5nLnByaXZhdGUtbGVnYWN5LWdldC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgQGluY2x1ZGUgdGhlbWluZy5wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LWJ1dHRvbicpIHtcbiAgICAkY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkdGhlbWUpO1xuICAgICRkZW5zaXR5OiB0aGVtaW5nLmdldC1kZW5zaXR5LWNvbmZpZygkdGhlbWUpO1xuICAgICR0eXBvZ3JhcGh5OiB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkdGhlbWUpO1xuXG4gICAgQGlmICRjb2xvciAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIGNvbG9yKCRjb2xvcik7XG4gICAgfVxuICAgIEBpZiAkZGVuc2l0eSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIF9kZW5zaXR5KCRkZW5zaXR5KTtcbiAgICB9XG4gICAgQGlmICR0eXBvZ3JhcGh5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgdHlwb2dyYXBoeSgkdHlwb2dyYXBoeSk7XG4gICAgfVxuICB9XG59XG4iLCJAdXNlICdzYXNzOm1hcCc7XG5AdXNlICcuLi9jb3JlL3N0eWxlL3ByaXZhdGUnO1xuQHVzZSAnLi4vY29yZS90aGVtaW5nL3RoZW1pbmcnO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHknO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHktdXRpbHMnO1xuQHVzZSAnLi4vY29yZS9kZW5zaXR5L3ByaXZhdGUvY29tcGF0aWJpbGl0eSc7XG5AdXNlICcuL2J1dHRvbi10b2dnbGUtdmFyaWFibGVzJztcblxuQG1peGluIGNvbG9yKCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAkZm9yZWdyb3VuZDogbWFwLmdldCgkY29uZmlnLCBmb3JlZ3JvdW5kKTtcbiAgJGJhY2tncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgYmFja2dyb3VuZCk7XG4gICRkaXZpZGVyLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIGRpdmlkZXIpO1xuXG4gIC5tYXQtYnV0dG9uLXRvZ2dsZS1zdGFuZGFsb25lLFxuICAubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAge1xuICAgIEBpbmNsdWRlIHByaXZhdGUucHJpdmF0ZS10aGVtZS1lbGV2YXRpb24oMiwgJGNvbmZpZyk7XG4gIH1cblxuICAubWF0LWJ1dHRvbi10b2dnbGUtc3RhbmRhbG9uZS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkLFxuICAubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAtYXBwZWFyYW5jZS1zdGFuZGFyZCB7XG4gICAgYm94LXNoYWRvdzogbm9uZTtcbiAgfVxuXG4gIC5tYXQtYnV0dG9uLXRvZ2dsZSB7XG4gICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgaGludC10ZXh0KTtcblxuICAgIC5tYXQtYnV0dG9uLXRvZ2dsZS1mb2N1cy1vdmVybGF5IHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYmFja2dyb3VuZCwgZm9jdXNlZC1idXR0b24pO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkIHtcbiAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCB0ZXh0KTtcbiAgICBiYWNrZ3JvdW5kOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGJhY2tncm91bmQsIGNhcmQpO1xuXG4gICAgLm1hdC1idXR0b24tdG9nZ2xlLWZvY3VzLW92ZXJsYXkge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLCBmb2N1c2VkLWJ1dHRvbiwgMSk7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmQgLm1hdC1idXR0b24tdG9nZ2xlICsgLm1hdC1idXR0b24tdG9nZ2xlIHtcbiAgICBib3JkZXItbGVmdDogc29saWQgMXB4ICRkaXZpZGVyLWNvbG9yO1xuICB9XG5cbiAgW2Rpcj0ncnRsJ10gLm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmQgLm1hdC1idXR0b24tdG9nZ2xlICsgLm1hdC1idXR0b24tdG9nZ2xlIHtcbiAgICBib3JkZXItbGVmdDogbm9uZTtcbiAgICBib3JkZXItcmlnaHQ6IHNvbGlkIDFweCAkZGl2aWRlci1jb2xvcjtcbiAgfVxuXG4gIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkLm1hdC1idXR0b24tdG9nZ2xlLXZlcnRpY2FsIHtcbiAgICAubWF0LWJ1dHRvbi10b2dnbGUgKyAubWF0LWJ1dHRvbi10b2dnbGUge1xuICAgICAgYm9yZGVyLWxlZnQ6IG5vbmU7XG4gICAgICBib3JkZXItcmlnaHQ6IG5vbmU7XG4gICAgICBib3JkZXItdG9wOiBzb2xpZCAxcHggJGRpdmlkZXItY29sb3I7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1idXR0b24tdG9nZ2xlLWNoZWNrZWQge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYmFja2dyb3VuZCwgc2VsZWN0ZWQtYnV0dG9uKTtcbiAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBzZWNvbmRhcnktdGV4dCk7XG5cbiAgICAmLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmQge1xuICAgICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgdGV4dCk7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1idXR0b24tdG9nZ2xlLWRpc2FibGVkIHtcbiAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBkaXNhYmxlZC1idXR0b24pO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYmFja2dyb3VuZCwgZGlzYWJsZWQtYnV0dG9uLXRvZ2dsZSk7XG5cbiAgICAmLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmQge1xuICAgICAgYmFja2dyb3VuZDogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLCBjYXJkKTtcbiAgICB9XG5cbiAgICAmLm1hdC1idXR0b24tdG9nZ2xlLWNoZWNrZWQge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLCBzZWxlY3RlZC1kaXNhYmxlZC1idXR0b24pO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtYnV0dG9uLXRvZ2dsZS1zdGFuZGFsb25lLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmQsXG4gIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkIHtcbiAgICBib3JkZXI6IHNvbGlkIDFweCAkZGl2aWRlci1jb2xvcjtcbiAgfVxufVxuXG5AbWl4aW4gdHlwb2dyYXBoeSgkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHR5cG9ncmFwaHkucHJpdmF0ZS10eXBvZ3JhcGh5LXRvLTIwMTQtY29uZmlnKFxuICAgICAgdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJGNvbmZpZy1vci10aGVtZSkpO1xuICAubWF0LWJ1dHRvbi10b2dnbGUge1xuICAgIGZvbnQtZmFtaWx5OiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtZmFtaWx5KCRjb25maWcpO1xuICB9XG59XG5cbkBtaXhpbiBkZW5zaXR5KCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGRlbnNpdHktc2NhbGU6IHRoZW1pbmcuZ2V0LWRlbnNpdHktY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAkc3RhbmRhcmQtaGVpZ2h0OiBjb21wYXRpYmlsaXR5LnByaXZhdGUtZGVuc2l0eS1wcm9wLXZhbHVlKFxuICAgICAgYnV0dG9uLXRvZ2dsZS12YXJpYWJsZXMuJHN0YW5kYXJkLWRlbnNpdHktY29uZmlnLCAkZGVuc2l0eS1zY2FsZSwgaGVpZ2h0KTtcblxuICBAaW5jbHVkZSBjb21wYXRpYmlsaXR5LnByaXZhdGUtZGVuc2l0eS1sZWdhY3ktY29tcGF0aWJpbGl0eSgpIHtcbiAgICAubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZCAubWF0LWJ1dHRvbi10b2dnbGUtbGFiZWwtY29udGVudCB7XG4gICAgICBsaW5lLWhlaWdodDogJHN0YW5kYXJkLWhlaWdodDtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiB0aGVtaW5nLnByaXZhdGUtbGVnYWN5LWdldC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgQGluY2x1ZGUgdGhlbWluZy5wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LWJ1dHRvbi10b2dnbGUnKSB7XG4gICAgJGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJHRoZW1lKTtcbiAgICAkZGVuc2l0eTogdGhlbWluZy5nZXQtZGVuc2l0eS1jb25maWcoJHRoZW1lKTtcbiAgICAkdHlwb2dyYXBoeTogdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJHRoZW1lKTtcblxuICAgIEBpZiAkY29sb3IgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBjb2xvcigkY29sb3IpO1xuICAgIH1cbiAgICBAaWYgJGRlbnNpdHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBkZW5zaXR5KCRkZW5zaXR5KTtcbiAgICB9XG4gICAgQGlmICR0eXBvZ3JhcGh5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgdHlwb2dyYXBoeSgkdHlwb2dyYXBoeSk7XG4gICAgfVxuICB9XG59XG4iLCJAdXNlICdzYXNzOm1hcCc7XG5AdXNlICcuLi9jb3JlL3RoZW1pbmcvdGhlbWluZyc7XG5AdXNlICcuLi9jb3JlL3N0eWxlL3ByaXZhdGUnO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHknO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHktdXRpbHMnO1xuXG5cbkBtaXhpbiBjb2xvcigkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJGJhY2tncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgYmFja2dyb3VuZCk7XG4gICRmb3JlZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGZvcmVncm91bmQpO1xuXG4gIC5tYXQtY2FyZCB7XG4gICAgQGluY2x1ZGUgcHJpdmF0ZS5wcml2YXRlLXRoZW1lLW92ZXJyaWRhYmxlLWVsZXZhdGlvbigxLCAkY29uZmlnKTtcbiAgICBiYWNrZ3JvdW5kOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGJhY2tncm91bmQsIGNhcmQpO1xuICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIHRleHQpO1xuXG4gICAgLy8gTmVlZHMgZXh0cmEgc3BlY2lmaWNpdHkgdG8gYmUgYWJsZSB0byBvdmVycmlkZSB0aGUgZWxldmF0aW9uIHNlbGVjdG9ycy5cbiAgICAmLm1hdC1jYXJkLWZsYXQge1xuICAgICAgQGluY2x1ZGUgcHJpdmF0ZS5wcml2YXRlLXRoZW1lLW92ZXJyaWRhYmxlLWVsZXZhdGlvbigwLCAkY29uZmlnKTtcbiAgICB9XG4gIH1cblxuICAubWF0LWNhcmQtc3VidGl0bGUge1xuICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIHNlY29uZGFyeS10ZXh0KTtcbiAgfVxufVxuXG5AbWl4aW4gdHlwb2dyYXBoeSgkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHR5cG9ncmFwaHkucHJpdmF0ZS10eXBvZ3JhcGh5LXRvLTIwMTQtY29uZmlnKFxuICAgICAgdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJGNvbmZpZy1vci10aGVtZSkpO1xuICAubWF0LWNhcmQge1xuICAgIGZvbnQtZmFtaWx5OiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtZmFtaWx5KCRjb25maWcpO1xuICB9XG5cbiAgLm1hdC1jYXJkLXRpdGxlIHtcbiAgICBmb250OiB7XG4gICAgICBzaXplOiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtc2l6ZSgkY29uZmlnLCBoZWFkbGluZSk7XG4gICAgICB3ZWlnaHQ6IHR5cG9ncmFwaHktdXRpbHMuZm9udC13ZWlnaHQoJGNvbmZpZywgdGl0bGUpO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtY2FyZC1oZWFkZXIgLm1hdC1jYXJkLXRpdGxlIHtcbiAgICBmb250LXNpemU6IHR5cG9ncmFwaHktdXRpbHMuZm9udC1zaXplKCRjb25maWcsIHRpdGxlKTtcbiAgfVxuXG4gIC5tYXQtY2FyZC1zdWJ0aXRsZSxcbiAgLm1hdC1jYXJkLWNvbnRlbnQge1xuICAgIGZvbnQtc2l6ZTogdHlwb2dyYXBoeS11dGlscy5mb250LXNpemUoJGNvbmZpZywgYm9keS0xKTtcbiAgfVxufVxuXG5AbWl4aW4gX2RlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIHRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiB0aGVtaW5nLnByaXZhdGUtbGVnYWN5LWdldC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgQGluY2x1ZGUgdGhlbWluZy5wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LWNhcmQnKSB7XG4gICAgJGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJHRoZW1lKTtcbiAgICAkZGVuc2l0eTogdGhlbWluZy5nZXQtZGVuc2l0eS1jb25maWcoJHRoZW1lKTtcbiAgICAkdHlwb2dyYXBoeTogdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJHRoZW1lKTtcblxuICAgIEBpZiAkY29sb3IgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBjb2xvcigkY29sb3IpO1xuICAgIH1cbiAgICBAaWYgJGRlbnNpdHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBfZGVuc2l0eSgkZGVuc2l0eSk7XG4gICAgfVxuICAgIEBpZiAkdHlwb2dyYXBoeSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIHR5cG9ncmFwaHkoJHR5cG9ncmFwaHkpO1xuICAgIH1cbiAgfVxufVxuIiwiQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnLi4vY29yZS90aGVtaW5nL3RoZW1pbmcnO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHknO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHktdXRpbHMnO1xuXG5cbkBtaXhpbiBjb2xvcigkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJGlzLWRhcmstdGhlbWU6IG1hcC5nZXQoJGNvbmZpZywgaXMtZGFyayk7XG4gICRwcmltYXJ5OiBtYXAuZ2V0KCRjb25maWcsIHByaW1hcnkpO1xuICAkYWNjZW50OiBtYXAuZ2V0KCRjb25maWcsIGFjY2VudCk7XG4gICR3YXJuOiBtYXAuZ2V0KCRjb25maWcsIHdhcm4pO1xuICAkYmFja2dyb3VuZDogbWFwLmdldCgkY29uZmlnLCBiYWNrZ3JvdW5kKTtcbiAgJGZvcmVncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgZm9yZWdyb3VuZCk7XG5cblxuICAvLyBUaGUgY29sb3Igb2YgdGhlIGNoZWNrYm94J3MgY2hlY2ttYXJrIC8gbWl4ZWRtYXJrLlxuICAkY2hlY2tib3gtbWFyay1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLCBiYWNrZ3JvdW5kKTtcblxuICAvLyBOT1RFKHRyYXZpc2thdWZtYW4pOiBXaGlsZSB0aGUgc3BlYyBjYWxscyBmb3IgdHJhbnNsdWNlbnQgYmxhY2tzL3doaXRlcyBmb3IgZGlzYWJsZWQgY29sb3JzLFxuICAvLyB0aGlzIGRvZXMgbm90IHdvcmsgd2VsbCB3aXRoIGVsZW1lbnRzIGxheWVyZWQgb24gdG9wIG9mIG9uZSBhbm90aGVyLiBUbyBnZXQgYXJvdW5kIHRoaXMgd2VcbiAgLy8gYmxlbmQgdGhlIGNvbG9ycyB0b2dldGhlciBiYXNlZCBvbiB0aGUgYmFzZSBjb2xvciBhbmQgdGhlIHRoZW1lIGJhY2tncm91bmQuXG4gICR3aGl0ZS0zMHBjdC1vcGFjaXR5LW9uLWRhcms6ICM2ODY4Njg7XG4gICRibGFjay0yNnBjdC1vcGFjaXR5LW9uLWxpZ2h0OiAjYjBiMGIwO1xuICAkZGlzYWJsZWQtY29sb3I6IGlmKCRpcy1kYXJrLXRoZW1lLCAkd2hpdGUtMzBwY3Qtb3BhY2l0eS1vbi1kYXJrLCAkYmxhY2stMjZwY3Qtb3BhY2l0eS1vbi1saWdodCk7XG5cbiAgLm1hdC1jaGVja2JveC1mcmFtZSB7XG4gICAgYm9yZGVyLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIHNlY29uZGFyeS10ZXh0KTtcbiAgfVxuXG4gIC5tYXQtY2hlY2tib3gtY2hlY2ttYXJrIHtcbiAgICBmaWxsOiAkY2hlY2tib3gtbWFyay1jb2xvcjtcbiAgfVxuXG4gIC5tYXQtY2hlY2tib3gtY2hlY2ttYXJrLXBhdGgge1xuICAgIC8vICFpbXBvcnRhbnQgaXMgbmVlZGVkIGhlcmUgYmVjYXVzZSBhIHN0cm9rZSBtdXN0IGJlIHNldCBhcyBhblxuICAgIC8vIGF0dHJpYnV0ZSBvbiB0aGUgU1ZHIGluIG9yZGVyIGZvciBsaW5lIGFuaW1hdGlvbiB0byB3b3JrIHByb3Blcmx5LlxuICAgIHN0cm9rZTogJGNoZWNrYm94LW1hcmstY29sb3IgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tYXQtY2hlY2tib3gtbWl4ZWRtYXJrIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY2hlY2tib3gtbWFyay1jb2xvcjtcbiAgfVxuXG4gIC5tYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZSwgLm1hdC1jaGVja2JveC1jaGVja2VkIHtcbiAgICAmLm1hdC1wcmltYXJ5IC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHByaW1hcnkpO1xuICAgIH1cblxuICAgICYubWF0LWFjY2VudCAubWF0LWNoZWNrYm94LWJhY2tncm91bmQge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRhY2NlbnQpO1xuICAgIH1cblxuICAgICYubWF0LXdhcm4gLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkd2Fybik7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1jaGVja2JveC1kaXNhYmxlZCB7XG4gICAgJi5tYXQtY2hlY2tib3gtY2hlY2tlZCxcbiAgICAmLm1hdC1jaGVja2JveC1pbmRldGVybWluYXRlIHtcbiAgICAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZCB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRkaXNhYmxlZC1jb2xvcjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmOm5vdCgubWF0LWNoZWNrYm94LWNoZWNrZWQpIHtcbiAgICAgIC5tYXQtY2hlY2tib3gtZnJhbWUge1xuICAgICAgICBib3JkZXItY29sb3I6ICRkaXNhYmxlZC1jb2xvcjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAubWF0LWNoZWNrYm94LWxhYmVsIHtcbiAgICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIHNlY29uZGFyeS10ZXh0KTtcbiAgICB9XG4gIH1cblxuICAvLyBTd2l0Y2ggdGhpcyB0byBhIHNvbGlkIGNvbG9yIHNpbmNlIHdlJ3JlIHVzaW5nIGBvcGFjaXR5YFxuICAvLyB0byBjb250cm9sIGhvdyBvcGFxdWUgdGhlIHJpcHBsZSBzaG91bGQgYmUuXG4gIC5tYXQtY2hlY2tib3ggLm1hdC1yaXBwbGUtZWxlbWVudCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogbWFwLmdldChtYXAuZ2V0KCRjb25maWcsIGZvcmVncm91bmQpLCBiYXNlKTtcbiAgfVxuXG4gIC5tYXQtY2hlY2tib3gtY2hlY2tlZDpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCksXG4gIC5tYXQtY2hlY2tib3g6YWN0aXZlOm5vdCgubWF0LWNoZWNrYm94LWRpc2FibGVkKSB7XG4gICAgJi5tYXQtcHJpbWFyeSAubWF0LXJpcHBsZS1lbGVtZW50IHtcbiAgICAgIGJhY2tncm91bmQ6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkcHJpbWFyeSk7XG4gICAgfVxuXG4gICAgJi5tYXQtYWNjZW50IC5tYXQtcmlwcGxlLWVsZW1lbnQge1xuICAgICAgYmFja2dyb3VuZDogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRhY2NlbnQpO1xuICAgIH1cblxuICAgICYubWF0LXdhcm4gLm1hdC1yaXBwbGUtZWxlbWVudCB7XG4gICAgICBiYWNrZ3JvdW5kOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHdhcm4pO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gdHlwb2dyYXBoeSgkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHR5cG9ncmFwaHkucHJpdmF0ZS10eXBvZ3JhcGh5LXRvLTIwMTQtY29uZmlnKFxuICAgICAgdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJGNvbmZpZy1vci10aGVtZSkpO1xuICAubWF0LWNoZWNrYm94IHtcbiAgICBmb250LWZhbWlseTogdHlwb2dyYXBoeS11dGlscy5mb250LWZhbWlseSgkY29uZmlnKTtcbiAgfVxuXG4gIC8vIFRPRE8oa2FyYSk6IFJlbW92ZSB0aGlzIHN0eWxlIHdoZW4gZml4aW5nIHZlcnRpY2FsIGJhc2VsaW5lXG4gIC5tYXQtY2hlY2tib3gtbGF5b3V0IC5tYXQtY2hlY2tib3gtbGFiZWwge1xuICAgIGxpbmUtaGVpZ2h0OiB0eXBvZ3JhcGh5LXV0aWxzLmxpbmUtaGVpZ2h0KCRjb25maWcsIGJvZHktMik7XG4gIH1cbn1cblxuQG1peGluIF9kZW5zaXR5KCRjb25maWctb3ItdGhlbWUpIHt9XG5cbkBtaXhpbiB0aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKSB7XG4gICR0aGVtZTogdGhlbWluZy5wcml2YXRlLWxlZ2FjeS1nZXQtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZyk7XG4gIEBpbmNsdWRlIHRoZW1pbmcucHJpdmF0ZS1jaGVjay1kdXBsaWNhdGUtdGhlbWUtc3R5bGVzKCR0aGVtZSwgJ21hdC1jaGVja2JveCcpIHtcbiAgICAkY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkdGhlbWUpO1xuICAgICRkZW5zaXR5OiB0aGVtaW5nLmdldC1kZW5zaXR5LWNvbmZpZygkdGhlbWUpO1xuICAgICR0eXBvZ3JhcGh5OiB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkdGhlbWUpO1xuXG4gICAgQGlmICRjb2xvciAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIGNvbG9yKCRjb2xvcik7XG4gICAgfVxuICAgIEBpZiAkZGVuc2l0eSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIF9kZW5zaXR5KCRkZW5zaXR5KTtcbiAgICB9XG4gICAgQGlmICR0eXBvZ3JhcGh5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgdHlwb2dyYXBoeSgkdHlwb2dyYXBoeSk7XG4gICAgfVxuICB9XG59XG4iLCJAdXNlICdzYXNzOm1hcCc7XG5AdXNlICdzYXNzOm1ldGEnO1xuQHVzZSAnLi4vY29yZS9zdHlsZS9wcml2YXRlJztcbkB1c2UgJy4uL2NvcmUvdGhlbWluZy90aGVtaW5nJztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5JztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5LXV0aWxzJztcblxuJGNoaXAtcmVtb3ZlLWZvbnQtc2l6ZTogMThweDtcblxuQG1peGluIF9lbGVtZW50LWNvbG9yKCRmb3JlZ3JvdW5kLCAkYmFja2dyb3VuZCkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFja2dyb3VuZDtcbiAgY29sb3I6ICRmb3JlZ3JvdW5kO1xuXG4gIC5tYXQtY2hpcC1yZW1vdmUge1xuICAgIGNvbG9yOiAkZm9yZWdyb3VuZDtcbiAgICBvcGFjaXR5OiAwLjQ7XG4gIH1cbn1cblxuXG4vLyBBcHBsaWVzIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIGZvciBhIHJpcHBsZSBlbGVtZW50LlxuLy8gSWYgdGhlIGNvbG9yIHZhbHVlIHByb3ZpZGVkIGlzIG5vdCBhIFNhc3MgY29sb3IsXG4vLyB3ZSBhc3N1bWUgdGhhdCB3ZSd2ZSBiZWVuIGdpdmVuIGEgQ1NTIHZhcmlhYmxlLlxuLy8gU2luY2Ugd2UgY2FuJ3QgcGVyZm9ybSBhbHBoYS1ibGVuZGluZyBvbiBhIENTUyB2YXJpYWJsZSxcbi8vIHdlIGluc3RlYWQgYWRkIHRoZSBvcGFjaXR5IGRpcmVjdGx5IHRvIHRoZSByaXBwbGUgZWxlbWVudC5cbkBtaXhpbiBfcmlwcGxlLWJhY2tncm91bmQoJHBhbGV0dGUsICRkZWZhdWx0LWNvbnRyYXN0LCAkb3BhY2l0eSkge1xuICAkYmFja2dyb3VuZC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRwYWxldHRlLCAkZGVmYXVsdC1jb250cmFzdCwgJG9wYWNpdHkpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFja2dyb3VuZC1jb2xvcjtcbiAgQGlmIChtZXRhLnR5cGUtb2YoJGJhY2tncm91bmQtY29sb3IpICE9IGNvbG9yKSB7XG4gICAgb3BhY2l0eTogJG9wYWNpdHk7XG4gIH1cbn1cblxuQG1peGluIF9wYWxldHRlLXN0eWxlcygkcGFsZXR0ZSkge1xuICBAaW5jbHVkZSBfZWxlbWVudC1jb2xvcih0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHBhbGV0dGUsIGRlZmF1bHQtY29udHJhc3QpLFxuICAgIHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkcGFsZXR0ZSkpO1xuXG4gIC5tYXQtcmlwcGxlLWVsZW1lbnQge1xuICAgIEBpbmNsdWRlIF9yaXBwbGUtYmFja2dyb3VuZCgkcGFsZXR0ZSwgZGVmYXVsdC1jb250cmFzdCwgMC4xKTtcbiAgfVxufVxuXG5AbWl4aW4gY29sb3IoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRpcy1kYXJrLXRoZW1lOiBtYXAuZ2V0KCRjb25maWcsIGlzLWRhcmspO1xuICAkcHJpbWFyeTogbWFwLmdldCgkY29uZmlnLCBwcmltYXJ5KTtcbiAgJGFjY2VudDogbWFwLmdldCgkY29uZmlnLCBhY2NlbnQpO1xuICAkd2FybjogbWFwLmdldCgkY29uZmlnLCB3YXJuKTtcbiAgJGJhY2tncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgYmFja2dyb3VuZCk7XG4gICRmb3JlZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGZvcmVncm91bmQpO1xuXG4gICR1bnNlbGVjdGVkLWJhY2tncm91bmQ6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYmFja2dyb3VuZCwgdW5zZWxlY3RlZC1jaGlwKTtcbiAgJHVuc2VsZWN0ZWQtZm9yZWdyb3VuZDogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCB0ZXh0KTtcblxuICAubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAge1xuICAgIEBpbmNsdWRlIF9lbGVtZW50LWNvbG9yKCR1bnNlbGVjdGVkLWZvcmVncm91bmQsICR1bnNlbGVjdGVkLWJhY2tncm91bmQpO1xuXG4gICAgJjpub3QoLm1hdC1jaGlwLWRpc2FibGVkKSB7XG4gICAgICAmOmFjdGl2ZSB7XG4gICAgICAgIEBpbmNsdWRlIHByaXZhdGUucHJpdmF0ZS10aGVtZS1lbGV2YXRpb24oMywgJGNvbmZpZyk7XG4gICAgICB9XG5cbiAgICAgIC5tYXQtY2hpcC1yZW1vdmU6aG92ZXIge1xuICAgICAgICBvcGFjaXR5OiAwLjU0O1xuICAgICAgfVxuICAgIH1cblxuICAgICYubWF0LWNoaXAtZGlzYWJsZWQge1xuICAgICAgb3BhY2l0eTogMC40O1xuICAgIH1cblxuICAgICY6OmFmdGVyIHtcbiAgICAgIGJhY2tncm91bmQ6IG1hcC5nZXQoJGZvcmVncm91bmQsIGJhc2UpO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZCB7XG4gICAgJi5tYXQtcHJpbWFyeSB7XG4gICAgICBAaW5jbHVkZSBfcGFsZXR0ZS1zdHlsZXMoJHByaW1hcnkpO1xuICAgIH1cblxuICAgICYubWF0LXdhcm4ge1xuICAgICAgQGluY2x1ZGUgX3BhbGV0dGUtc3R5bGVzKCR3YXJuKTtcbiAgICB9XG5cbiAgICAmLm1hdC1hY2NlbnQge1xuICAgICAgQGluY2x1ZGUgX3BhbGV0dGUtc3R5bGVzKCRhY2NlbnQpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gdHlwb2dyYXBoeSgkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHR5cG9ncmFwaHkucHJpdmF0ZS10eXBvZ3JhcGh5LXRvLTIwMTQtY29uZmlnKFxuICAgICAgdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJGNvbmZpZy1vci10aGVtZSkpO1xuICAubWF0LWNoaXAge1xuICAgIGZvbnQtc2l6ZTogdHlwb2dyYXBoeS11dGlscy5mb250LXNpemUoJGNvbmZpZywgYm9keS0yKTtcbiAgICBmb250LXdlaWdodDogdHlwb2dyYXBoeS11dGlscy5mb250LXdlaWdodCgkY29uZmlnLCBib2R5LTIpO1xuXG4gICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb24sXG4gICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbiB7XG4gICAgICBmb250LXNpemU6ICRjaGlwLXJlbW92ZS1mb250LXNpemU7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBfZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZykge1xuICAkdGhlbWU6IHRoZW1pbmcucHJpdmF0ZS1sZWdhY3ktZ2V0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICBAaW5jbHVkZSB0aGVtaW5nLnByaXZhdGUtY2hlY2stZHVwbGljYXRlLXRoZW1lLXN0eWxlcygkdGhlbWUsICdtYXQtY2hpcHMnKSB7XG4gICAgJGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJHRoZW1lKTtcbiAgICAkZGVuc2l0eTogdGhlbWluZy5nZXQtZGVuc2l0eS1jb25maWcoJHRoZW1lKTtcbiAgICAkdHlwb2dyYXBoeTogdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJHRoZW1lKTtcblxuICAgIEBpZiAkY29sb3IgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBjb2xvcigkY29sb3IpO1xuICAgIH1cbiAgICBAaWYgJGRlbnNpdHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBfZGVuc2l0eSgkZGVuc2l0eSk7XG4gICAgfVxuICAgIEBpZiAkdHlwb2dyYXBoeSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIHR5cG9ncmFwaHkoJHR5cG9ncmFwaHkpO1xuICAgIH1cbiAgfVxufVxuXG5cbiIsIkB1c2UgJ3Nhc3M6bWFwJztcbkB1c2UgJy4uL2NvcmUvdGhlbWluZy90aGVtaW5nJztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5JztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5LXV0aWxzJztcblxuQG1peGluIGNvbG9yKCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAkYmFja2dyb3VuZDogbWFwLmdldCgkY29uZmlnLCBiYWNrZ3JvdW5kKTtcbiAgJGZvcmVncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgZm9yZWdyb3VuZCk7XG5cbiAgLm1hdC10YWJsZSB7XG4gICAgYmFja2dyb3VuZDogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLCAnY2FyZCcpO1xuICB9XG5cbiAgLm1hdC10YWJsZSB0aGVhZCwgLm1hdC10YWJsZSB0Ym9keSwgLm1hdC10YWJsZSB0Zm9vdCxcbiAgbWF0LWhlYWRlci1yb3csIG1hdC1yb3csIG1hdC1mb290ZXItcm93LFxuICBbbWF0LWhlYWRlci1yb3ddLCBbbWF0LXJvd10sIFttYXQtZm9vdGVyLXJvd10sXG4gIC5tYXQtdGFibGUtc3RpY2t5IHtcbiAgICBiYWNrZ3JvdW5kOiBpbmhlcml0O1xuICB9XG5cbiAgbWF0LXJvdywgbWF0LWhlYWRlci1yb3csIG1hdC1mb290ZXItcm93LFxuICB0aC5tYXQtaGVhZGVyLWNlbGwsIHRkLm1hdC1jZWxsLCB0ZC5tYXQtZm9vdGVyLWNlbGwge1xuICAgIGJvcmRlci1ib3R0b20tY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgZGl2aWRlcik7XG4gIH1cblxuICAubWF0LWhlYWRlci1jZWxsIHtcbiAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBzZWNvbmRhcnktdGV4dCk7XG4gIH1cblxuICAubWF0LWNlbGwsIC5tYXQtZm9vdGVyLWNlbGwge1xuICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIHRleHQpO1xuICB9XG59XG5cbkBtaXhpbiB0eXBvZ3JhcGh5KCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdHlwb2dyYXBoeS5wcml2YXRlLXR5cG9ncmFwaHktdG8tMjAxNC1jb25maWcoXG4gICAgICB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKSk7XG4gIC5tYXQtdGFibGUge1xuICAgIGZvbnQtZmFtaWx5OiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtZmFtaWx5KCRjb25maWcpO1xuICB9XG5cbiAgLm1hdC1oZWFkZXItY2VsbCB7XG4gICAgZm9udC1zaXplOiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtc2l6ZSgkY29uZmlnLCBjYXB0aW9uKTtcbiAgICBmb250LXdlaWdodDogdHlwb2dyYXBoeS11dGlscy5mb250LXdlaWdodCgkY29uZmlnLCBib2R5LTIpO1xuICB9XG5cbiAgLm1hdC1jZWxsLCAubWF0LWZvb3Rlci1jZWxsIHtcbiAgICBmb250LXNpemU6IHR5cG9ncmFwaHktdXRpbHMuZm9udC1zaXplKCRjb25maWcsIGJvZHktMSk7XG4gIH1cbn1cblxuQG1peGluIF9kZW5zaXR5KCRjb25maWctb3ItdGhlbWUpIHt9XG5cbkBtaXhpbiB0aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKSB7XG4gICR0aGVtZTogdGhlbWluZy5wcml2YXRlLWxlZ2FjeS1nZXQtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZyk7XG4gIEBpbmNsdWRlIHRoZW1pbmcucHJpdmF0ZS1jaGVjay1kdXBsaWNhdGUtdGhlbWUtc3R5bGVzKCR0aGVtZSwgJ21hdC10YWJsZScpIHtcbiAgICAkY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkdGhlbWUpO1xuICAgICRkZW5zaXR5OiB0aGVtaW5nLmdldC1kZW5zaXR5LWNvbmZpZygkdGhlbWUpO1xuICAgICR0eXBvZ3JhcGh5OiB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkdGhlbWUpO1xuXG4gICAgQGlmICRjb2xvciAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIGNvbG9yKCRjb2xvcik7XG4gICAgfVxuICAgIEBpZiAkZGVuc2l0eSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIF9kZW5zaXR5KCRkZW5zaXR5KTtcbiAgICB9XG4gICAgQGlmICR0eXBvZ3JhcGh5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgdHlwb2dyYXBoeSgkdHlwb2dyYXBoeSk7XG4gICAgfVxuICB9XG59XG4iLCJAdXNlICdzYXNzOmNvbG9yJztcbkB1c2UgJ3Nhc3M6bWFwJztcbkB1c2UgJ3Nhc3M6bWF0aCc7XG5AdXNlICdzYXNzOm1ldGEnO1xuQHVzZSAnLi4vY29yZS9zdHlsZS9wcml2YXRlJztcbkB1c2UgJy4uL2NvcmUvdGhlbWluZy90aGVtaW5nJztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5JztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5LXV0aWxzJztcblxuXG4kc2VsZWN0ZWQtdG9kYXktYm94LXNoYWRvdy13aWR0aDogMXB4O1xuJHNlbGVjdGVkLWZhZGUtYW1vdW50OiAwLjY7XG4kcmFuZ2UtZmFkZS1hbW91bnQ6IDAuMjtcbiR0b2RheS1mYWRlLWFtb3VudDogMC4yO1xuJGNhbGVuZGFyLWJvZHktZm9udC1zaXplOiAxM3B4ICFkZWZhdWx0O1xuJGNhbGVuZGFyLXdlZWtkYXktdGFibGUtZm9udC1zaXplOiAxMXB4ICFkZWZhdWx0O1xuXG5AbWl4aW4gX2NvbG9yKCRwYWxldHRlKSB7XG4gIEBpbmNsdWRlIGRhdGUtcmFuZ2UtY29sb3JzKFxuICAgIHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkcGFsZXR0ZSwgZGVmYXVsdCwgJHJhbmdlLWZhZGUtYW1vdW50KSk7XG5cbiAgLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHBhbGV0dGUpO1xuICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHBhbGV0dGUsIGRlZmF1bHQtY29udHJhc3QpO1xuICB9XG5cbiAgLm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkID4gLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkIHtcbiAgICAkYmFja2dyb3VuZDogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRwYWxldHRlKTtcblxuICAgIEBpZiAobWV0YS50eXBlLW9mKCRiYWNrZ3JvdW5kKSA9PSBjb2xvcikge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogY29sb3IuYWRqdXN0KCRiYWNrZ3JvdW5kLCAkYWxwaGE6IC0kc2VsZWN0ZWQtZmFkZS1hbW91bnQpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAvLyBJZiB3ZSBjb3VsZG4ndCByZXNvbHZlIHRvIGJhY2tncm91bmQgdG8gYSBjb2xvciAoZS5nLiBpdCdzIGEgQ1NTIHZhcmlhYmxlKSxcbiAgICAgIC8vIGZhbGwgYmFjayB0byBmYWRpbmcgdGhlIGNvbnRlbnQgb3V0IHZpYSBgb3BhY2l0eWAuXG4gICAgICBvcGFjaXR5OiAkdG9kYXktZmFkZS1hbW91bnQ7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5Lm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkIHtcbiAgICBib3gtc2hhZG93OiBpbnNldCAwIDAgMCAkc2VsZWN0ZWQtdG9kYXktYm94LXNoYWRvdy13aWR0aFxuICAgICAgICAgICAgICAgIHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkcGFsZXR0ZSwgZGVmYXVsdC1jb250cmFzdCk7XG4gIH1cblxuICAubWF0LWNhbGVuZGFyLWJvZHktY2VsbDpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkKTpob3ZlcixcbiAgLmNkay1rZXlib2FyZC1mb2N1c2VkIC5tYXQtY2FsZW5kYXItYm9keS1hY3RpdmUsXG4gIC5jZGstcHJvZ3JhbS1mb2N1c2VkIC5tYXQtY2FsZW5kYXItYm9keS1hY3RpdmUge1xuICAgICYgPiAubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50IHtcbiAgICAgIEBpbmNsdWRlIF91bnNlbGVjdGVkLWNlbGwge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHBhbGV0dGUsIDAuMyk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vIFV0aWxpdHkgbWl4aW4gdG8gdGFyZ2V0IGNlbGxzIHRoYXQgYXJlbid0IHNlbGVjdGVkLiBVc2VkIHRvIG1ha2Ugc2VsZWN0b3IgZWFzaWVyIHRvIGZvbGxvdy5cbkBtaXhpbiBfdW5zZWxlY3RlZC1jZWxsIHtcbiAgJjpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuQG1peGluIGNvbG9yKCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAkZm9yZWdyb3VuZDogbWFwLmdldCgkY29uZmlnLCBmb3JlZ3JvdW5kKTtcbiAgJGJhY2tncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgYmFja2dyb3VuZCk7XG4gICRkaXNhYmxlZC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBkaXNhYmxlZC10ZXh0KTtcblxuICAubWF0LWNhbGVuZGFyLWFycm93IHtcbiAgICBib3JkZXItdG9wLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIGljb24pO1xuICB9XG5cbiAgLy8gVGhlIHByZXYvbmV4dCBidXR0b25zIG5lZWQgYSBiaXQgbW9yZSBzcGVjaWZpY2l0eSB0b1xuICAvLyBhdm9pZCBiZWluZyBvdmVyd3JpdHRlbiBieSB0aGUgLm1hdC1pY29uLWJ1dHRvbi5cbiAgLm1hdC1kYXRlcGlja2VyLXRvZ2dsZSxcbiAgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQgLm1hdC1jYWxlbmRhci1uZXh0LWJ1dHRvbixcbiAgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQgLm1hdC1jYWxlbmRhci1wcmV2aW91cy1idXR0b24ge1xuICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIGljb24pO1xuICB9XG5cbiAgLm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXIge1xuICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIGhpbnQtdGV4dCk7XG4gIH1cblxuICAubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlci1kaXZpZGVyOjphZnRlciB7XG4gICAgYmFja2dyb3VuZDogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBkaXZpZGVyKTtcbiAgfVxuXG4gIC5tYXQtY2FsZW5kYXItYm9keS1sYWJlbCB7XG4gICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgc2Vjb25kYXJ5LXRleHQpO1xuICB9XG5cbiAgLm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudCxcbiAgLm1hdC1kYXRlLXJhbmdlLWlucHV0LXNlcGFyYXRvciB7XG4gICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgdGV4dCk7XG4gICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgfVxuXG4gIC5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZCA+IC5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnQge1xuICAgIEBpbmNsdWRlIF91bnNlbGVjdGVkLWNlbGwge1xuICAgICAgY29sb3I6ICRkaXNhYmxlZC1jb2xvcjtcbiAgICB9XG4gIH1cblxuICAubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQgLm1hdC1kYXRlLXJhbmdlLWlucHV0LXNlcGFyYXRvciB7XG4gICAgY29sb3I6ICRkaXNhYmxlZC1jb2xvcjtcbiAgfVxuXG4gIC5tYXQtY2FsZW5kYXItYm9keS1pbi1wcmV2aWV3IHtcbiAgICAkZGl2aWRlci1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBkaXZpZGVyKTtcblxuICAgIEBpZiBtZXRhLnR5cGUtb2YoJGRpdmlkZXItY29sb3IpID09IGNvbG9yIHtcbiAgICAgIC8vIFRoZSBkaXZpZGVyIGNvbG9yIGlzIHNldCB1bmRlciB0aGUgYXNzdW1wdGlvbiB0aGF0IGl0J2xsIGJlIHVzZWRcbiAgICAgIC8vIGZvciBhIHNvbGlkIGJvcmRlciwgYnV0IGJlY2F1c2Ugd2UncmUgdXNpbmcgYSBkYXNoZWQgYm9yZGVyIGZvciB0aGVcbiAgICAgIC8vIHByZXZpZXcgcmFuZ2UsIHdlIG5lZWQgdG8gYnVtcCBpdHMgb3BhY2l0eSB0byBlbnN1cmUgdGhhdCBpdCdzIHZpc2libGUuXG4gICAgICBjb2xvcjogcmdiYSgkZGl2aWRlci1jb2xvciwgbWF0aC5taW4ob3BhY2l0eSgkZGl2aWRlci1jb2xvcikgKiAyLCAxKSk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIGNvbG9yOiAkZGl2aWRlci1jb2xvcjtcbiAgICB9XG4gIH1cblxuICAubWF0LWNhbGVuZGFyLWJvZHktdG9kYXkge1xuICAgIEBpbmNsdWRlIF91bnNlbGVjdGVkLWNlbGwge1xuICAgICAgLy8gTm90ZTogdGhvdWdoIGl0J3Mgbm90IHRleHQsIHRoZSBib3JkZXIgaXMgYSBoaW50IGFib3V0IHRoZSBmYWN0IHRoYXQgdGhpcyBpcyB0b2RheSdzIGRhdGUsXG4gICAgICAvLyBzbyB3ZSB1c2UgdGhlIGhpbnQgY29sb3IuXG4gICAgICBib3JkZXItY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgaGludC10ZXh0KTtcbiAgICB9XG4gIH1cblxuICAubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWQgPiAubWF0LWNhbGVuZGFyLWJvZHktdG9kYXkge1xuICAgIEBpbmNsdWRlIF91bnNlbGVjdGVkLWNlbGwge1xuICAgICAgJGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIGhpbnQtdGV4dCk7XG5cbiAgICAgIEBpZiAobWV0YS50eXBlLW9mKCRjb2xvcikgPT0gY29sb3IpIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiBjb2xvci5hZGp1c3QoJGNvbG9yLCAkYWxwaGE6IC0kdG9kYXktZmFkZS1hbW91bnQpO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAvLyBJZiB0aGUgY29sb3IgZGlkbid0IHJlc29sdmUgdG8gYSBjb2xvciB2YWx1ZSwgYnV0IHNvbWV0aGluZyBsaWtlIGEgQ1NTIHZhcmlhYmxlLCB3ZSBjYW4ndFxuICAgICAgICAvLyBmYWRlIGl0IG91dCBzbyB3ZSBmYWxsIGJhY2sgdG8gcmVkdWNpbmcgdGhlIGVsZW1lbnQgb3BhY2l0eS4gTm90ZSB0aGF0IHdlIGRvbid0IHVzZSB0aGVcbiAgICAgICAgLy8gJG1hdC1kYXRlcGlja2VyLXRvZGF5LWZhZGUtYW1vdW50LCBiZWNhdXNlIGhpbnQgdGV4dCB1c3VhbGx5IGhhcyBzb21lIG9wYWNpdHkgYXBwbGllZFxuICAgICAgICAvLyB0byBpdCBhbHJlYWR5IGFuZCB3ZSBkb24ndCB3YW50IHRoZW0gdG8gc3RhY2sgb24gdG9wIG9mIGVhY2ggb3RoZXIuXG4gICAgICAgIG9wYWNpdHk6IDAuNTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBfY29sb3IobWFwLmdldCgkY29uZmlnLCBwcmltYXJ5KSk7XG5cbiAgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQge1xuICAgIEBpbmNsdWRlIHByaXZhdGUucHJpdmF0ZS10aGVtZS1lbGV2YXRpb24oNCwgJGNvbmZpZyk7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLCBjYXJkKTtcbiAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCB0ZXh0KTtcblxuICAgICYubWF0LWFjY2VudCB7XG4gICAgICBAaW5jbHVkZSBfY29sb3IobWFwLmdldCgkY29uZmlnLCBhY2NlbnQpKTtcbiAgICB9XG5cbiAgICAmLm1hdC13YXJuIHtcbiAgICAgIEBpbmNsdWRlIF9jb2xvcihtYXAuZ2V0KCRjb25maWcsIHdhcm4pKTtcbiAgICB9XG4gIH1cblxuICAubWF0LWRhdGVwaWNrZXItY29udGVudC10b3VjaCB7XG4gICAgQGluY2x1ZGUgcHJpdmF0ZS5wcml2YXRlLXRoZW1lLWVsZXZhdGlvbigyNCwgJGNvbmZpZyk7XG4gIH1cblxuICAubWF0LWRhdGVwaWNrZXItdG9nZ2xlLWFjdGl2ZSB7XG4gICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZShtYXAuZ2V0KCRjb25maWcsIHByaW1hcnkpLCB0ZXh0KTtcblxuICAgICYubWF0LWFjY2VudCB7XG4gICAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKG1hcC5nZXQoJGNvbmZpZywgYWNjZW50KSwgdGV4dCk7XG4gICAgfVxuXG4gICAgJi5tYXQtd2FybiB7XG4gICAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKG1hcC5nZXQoJGNvbmZpZywgd2FybiksIHRleHQpO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtZGF0ZS1yYW5nZS1pbnB1dC1pbm5lcltkaXNhYmxlZF0ge1xuICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIGRpc2FibGVkLXRleHQpO1xuICB9XG59XG5cbkBtaXhpbiB0eXBvZ3JhcGh5KCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdHlwb2dyYXBoeS5wcml2YXRlLXR5cG9ncmFwaHktdG8tMjAxNC1jb25maWcoXG4gICAgICB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKSk7XG4gIC5tYXQtY2FsZW5kYXIge1xuICAgIGZvbnQtZmFtaWx5OiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtZmFtaWx5KCRjb25maWcpO1xuICB9XG5cbiAgLm1hdC1jYWxlbmRhci1ib2R5IHtcbiAgICBmb250LXNpemU6ICRjYWxlbmRhci1ib2R5LWZvbnQtc2l6ZTtcbiAgfVxuXG4gIC5tYXQtY2FsZW5kYXItYm9keS1sYWJlbCxcbiAgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uIHtcbiAgICBmb250OiB7XG4gICAgICBzaXplOiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtc2l6ZSgkY29uZmlnLCBidXR0b24pO1xuICAgICAgd2VpZ2h0OiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtd2VpZ2h0KCRjb25maWcsIGJ1dHRvbik7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXIgdGgge1xuICAgIGZvbnQ6IHtcbiAgICAgIHNpemU6ICRjYWxlbmRhci13ZWVrZGF5LXRhYmxlLWZvbnQtc2l6ZTtcbiAgICAgIHdlaWdodDogdHlwb2dyYXBoeS11dGlscy5mb250LXdlaWdodCgkY29uZmlnLCBib2R5LTEpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gZGF0ZS1yYW5nZS1jb2xvcnMoXG4gICRyYW5nZS1jb2xvcixcbiAgJGNvbXBhcmlzb24tY29sb3I6IHJnYmEoI2Y5YWIwMCwgJHJhbmdlLWZhZGUtYW1vdW50KSxcbiAgJG92ZXJsYXAtY29sb3I6ICNhOGRhYjUsXG4gICRvdmVybGFwLXNlbGVjdGVkLWNvbG9yOiBjb2xvci5hZGp1c3QoJG92ZXJsYXAtY29sb3IsICRsaWdodG5lc3M6IC0zMCUpKSB7XG5cbiAgLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlOjpiZWZvcmUge1xuICAgIGJhY2tncm91bmQ6ICRyYW5nZS1jb2xvcjtcbiAgfVxuXG4gIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCxcbiAgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2U6OmJlZm9yZSB7XG4gICAgYmFja2dyb3VuZDogJGNvbXBhcmlzb24tY29sb3I7XG4gIH1cblxuICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnQ6OmJlZm9yZSxcbiAgW2Rpcj0ncnRsJ10gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZDo6YmVmb3JlIHtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsICRyYW5nZS1jb2xvciA1MCUsICRjb21wYXJpc29uLWNvbG9yIDUwJSk7XG4gIH1cblxuICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2UtZW5kOjpiZWZvcmUsXG4gIFtkaXI9J3J0bCddIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydDo6YmVmb3JlIHtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gbGVmdCwgJHJhbmdlLWNvbG9yIDUwJSwgJGNvbXBhcmlzb24tY29sb3IgNTAlKTtcbiAgfVxuXG4gIC5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZSA+IC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCxcbiAgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2UubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2U6OmFmdGVyIHtcbiAgICBiYWNrZ3JvdW5kOiAkb3ZlcmxhcC1jb2xvcjtcbiAgfVxuXG4gIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCxcbiAgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2UgPiAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQge1xuICAgIGJhY2tncm91bmQ6ICRvdmVybGFwLXNlbGVjdGVkLWNvbG9yO1xuICB9XG59XG5cbkBtaXhpbiBfZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZykge1xuICAkdGhlbWU6IHRoZW1pbmcucHJpdmF0ZS1sZWdhY3ktZ2V0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICBAaW5jbHVkZSB0aGVtaW5nLnByaXZhdGUtY2hlY2stZHVwbGljYXRlLXRoZW1lLXN0eWxlcygkdGhlbWUsICdtYXQtZGF0ZXBpY2tlcicpIHtcbiAgICAkY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkdGhlbWUpO1xuICAgICRkZW5zaXR5OiB0aGVtaW5nLmdldC1kZW5zaXR5LWNvbmZpZygkdGhlbWUpO1xuICAgICR0eXBvZ3JhcGh5OiB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkdGhlbWUpO1xuXG4gICAgQGlmICRjb2xvciAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIGNvbG9yKCRjb2xvcik7XG4gICAgfVxuICAgIEBpZiAkZGVuc2l0eSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIF9kZW5zaXR5KCRkZW5zaXR5KTtcbiAgICB9XG4gICAgQGlmICR0eXBvZ3JhcGh5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgdHlwb2dyYXBoeSgkdHlwb2dyYXBoeSk7XG4gICAgfVxuICB9XG59XG4iLCJAdXNlICdzYXNzOm1hcCc7XG5AdXNlICcuLi9jb3JlL3N0eWxlL3ByaXZhdGUnO1xuQHVzZSAnLi4vY29yZS90aGVtaW5nL3RoZW1pbmcnO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHknO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHktdXRpbHMnO1xuXG5cbkBtaXhpbiBjb2xvcigkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJGJhY2tncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgYmFja2dyb3VuZCk7XG4gICRmb3JlZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGZvcmVncm91bmQpO1xuXG4gIC5tYXQtZGlhbG9nLWNvbnRhaW5lciB7XG4gICAgQGluY2x1ZGUgcHJpdmF0ZS5wcml2YXRlLXRoZW1lLWVsZXZhdGlvbigyNCwgJGNvbmZpZyk7XG4gICAgYmFja2dyb3VuZDogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLCBkaWFsb2cpO1xuICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIHRleHQpO1xuICB9XG59XG5cbkBtaXhpbiB0eXBvZ3JhcGh5KCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdHlwb2dyYXBoeS5wcml2YXRlLXR5cG9ncmFwaHktdG8tMjAxNC1jb25maWcoXG4gICAgICB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKSk7XG4gIC5tYXQtZGlhbG9nLXRpdGxlIHtcbiAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5LXV0aWxzLnR5cG9ncmFwaHktbGV2ZWwoJGNvbmZpZywgdGl0bGUpO1xuICB9XG59XG5cbkBtaXhpbiBfZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZykge1xuICAkdGhlbWU6IHRoZW1pbmcucHJpdmF0ZS1sZWdhY3ktZ2V0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICBAaW5jbHVkZSB0aGVtaW5nLnByaXZhdGUtY2hlY2stZHVwbGljYXRlLXRoZW1lLXN0eWxlcygkdGhlbWUsICdtYXQtZGlhbG9nJykge1xuICAgICRjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgJGRlbnNpdHk6IHRoZW1pbmcuZ2V0LWRlbnNpdHktY29uZmlnKCR0aGVtZSk7XG4gICAgJHR5cG9ncmFwaHk6IHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCR0aGVtZSk7XG5cbiAgICBAaWYgJGNvbG9yICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgX2RlbnNpdHkoJGRlbnNpdHkpO1xuICAgIH1cbiAgICBAaWYgJHR5cG9ncmFwaHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5KCR0eXBvZ3JhcGh5KTtcbiAgICB9XG4gIH1cbn1cbiIsIkB1c2UgJ3Nhc3M6bWFwJztcbkB1c2UgJy4uL2NvcmUvZGVuc2l0eS9wcml2YXRlL2NvbXBhdGliaWxpdHknO1xuQHVzZSAnLi4vY29yZS90aGVtaW5nL3RoZW1pbmcnO1xuQHVzZSAnLi4vY29yZS9zdHlsZS9wcml2YXRlJztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5JztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5LXV0aWxzJztcbkB1c2UgJy4vZXhwYW5zaW9uLXZhcmlhYmxlcyc7XG5AdXNlICcuL2V4cGFuc2lvbi1taXhpbnMnO1xuXG5AbWl4aW4gY29sb3IoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRiYWNrZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGJhY2tncm91bmQpO1xuICAkZm9yZWdyb3VuZDogbWFwLmdldCgkY29uZmlnLCBmb3JlZ3JvdW5kKTtcblxuICAubWF0LWV4cGFuc2lvbi1wYW5lbCB7XG4gICAgQGluY2x1ZGUgcHJpdmF0ZS5wcml2YXRlLXRoZW1lLW92ZXJyaWRhYmxlLWVsZXZhdGlvbigyLCAkY29uZmlnKTtcbiAgICBiYWNrZ3JvdW5kOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGJhY2tncm91bmQsIGNhcmQpO1xuICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIHRleHQpO1xuICB9XG5cbiAgLm1hdC1hY3Rpb24tcm93IHtcbiAgICBib3JkZXItdG9wLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIGRpdmlkZXIpO1xuICB9XG5cbiAgQGluY2x1ZGUgZXhwYW5zaW9uLW1peGlucy5wcml2YXRlLWV4cGFuc2lvbi1mb2N1cyB7XG4gICAgYmFja2dyb3VuZDogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLCBob3Zlcik7XG4gIH1cblxuICAvLyBEaXNhYmxlIHRoZSBob3ZlciBvbiB0b3VjaCBkZXZpY2VzIHNpbmNlIGl0IGNhbiBhcHBlYXIgbGlrZSBpdCBpcyBzdHVjay4gV2UgY2FuJ3QgdXNlXG4gIC8vIGBAbWVkaWEgKGhvdmVyKWAgYWJvdmUsIGJlY2F1c2UgdGhlIGRlc2t0b3Agc3VwcG9ydCBicm93c2VyIHN1cHBvcnQgaXNuJ3QgZ3JlYXQuXG4gIEBtZWRpYSAoaG92ZXI6IG5vbmUpIHtcbiAgICAubWF0LWV4cGFuc2lvbi1wYW5lbDpub3QoLm1hdC1leHBhbmRlZCk6bm90KFthcmlhLWRpc2FibGVkPSd0cnVlJ10pXG4gICAgICAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZDogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLCBjYXJkKTtcbiAgICB9XG4gIH1cblxuICAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXItdGl0bGUge1xuICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIHRleHQpO1xuICB9XG5cbiAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLWRlc2NyaXB0aW9uLFxuICAubWF0LWV4cGFuc2lvbi1pbmRpY2F0b3I6OmFmdGVyIHtcbiAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBzZWNvbmRhcnktdGV4dCk7XG4gIH1cblxuICAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbYXJpYS1kaXNhYmxlZD0ndHJ1ZSddIHtcbiAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBkaXNhYmxlZC1idXR0b24pO1xuXG4gICAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLXRpdGxlLFxuICAgIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci1kZXNjcmlwdGlvbiB7XG4gICAgICBjb2xvcjogaW5oZXJpdDtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHR5cG9ncmFwaHkoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0eXBvZ3JhcGh5LnByaXZhdGUtdHlwb2dyYXBoeS10by0yMDE0LWNvbmZpZyhcbiAgICAgIHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCRjb25maWctb3ItdGhlbWUpKTtcbiAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyIHtcbiAgICBmb250OiB7XG4gICAgICBmYW1pbHk6IHR5cG9ncmFwaHktdXRpbHMuZm9udC1mYW1pbHkoJGNvbmZpZywgc3ViaGVhZGluZy0xKTtcbiAgICAgIHNpemU6IHR5cG9ncmFwaHktdXRpbHMuZm9udC1zaXplKCRjb25maWcsIHN1YmhlYWRpbmctMSk7XG4gICAgICB3ZWlnaHQ6IHR5cG9ncmFwaHktdXRpbHMuZm9udC13ZWlnaHQoJGNvbmZpZywgc3ViaGVhZGluZy0xKTtcbiAgICB9XG4gIH1cblxuICAubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50IHtcbiAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5LXV0aWxzLnR5cG9ncmFwaHktbGV2ZWwoJGNvbmZpZywgYm9keS0xKTtcbiAgfVxufVxuXG5AbWl4aW4gZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRkZW5zaXR5LXNjYWxlOiB0aGVtaW5nLmdldC1kZW5zaXR5LWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJGV4cGFuZGVkLWhlaWdodDogY29tcGF0aWJpbGl0eS5wcml2YXRlLWRlbnNpdHktcHJvcC12YWx1ZShcbiAgICAgICAgZXhwYW5zaW9uLXZhcmlhYmxlcy4kaGVhZGVyLWRlbnNpdHktY29uZmlnLCAkZGVuc2l0eS1zY2FsZSwgZXhwYW5kZWQtaGVpZ2h0KTtcbiAgJGNvbGxhcHNlZC1oZWlnaHQ6IGNvbXBhdGliaWxpdHkucHJpdmF0ZS1kZW5zaXR5LXByb3AtdmFsdWUoXG4gICAgICBleHBhbnNpb24tdmFyaWFibGVzLiRoZWFkZXItZGVuc2l0eS1jb25maWcsICRkZW5zaXR5LXNjYWxlLCBjb2xsYXBzZWQtaGVpZ2h0KTtcblxuICBAaW5jbHVkZSBjb21wYXRpYmlsaXR5LnByaXZhdGUtZGVuc2l0eS1sZWdhY3ktY29tcGF0aWJpbGl0eSgpIHtcbiAgICAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXIge1xuICAgICAgaGVpZ2h0OiAkY29sbGFwc2VkLWhlaWdodDtcblxuICAgICAgJi5tYXQtZXhwYW5kZWQge1xuICAgICAgICBoZWlnaHQ6ICRleHBhbmRlZC1oZWlnaHQ7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiB0aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKSB7XG4gICR0aGVtZTogdGhlbWluZy5wcml2YXRlLWxlZ2FjeS1nZXQtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZyk7XG4gIEBpbmNsdWRlIHRoZW1pbmcucHJpdmF0ZS1jaGVjay1kdXBsaWNhdGUtdGhlbWUtc3R5bGVzKCR0aGVtZSwgJ21hdC1leHBhbnNpb24nKSB7XG4gICAgJGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJHRoZW1lKTtcbiAgICAkZGVuc2l0eTogdGhlbWluZy5nZXQtZGVuc2l0eS1jb25maWcoJHRoZW1lKTtcbiAgICAkdHlwb2dyYXBoeTogdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJHRoZW1lKTtcblxuICAgIEBpZiAkY29sb3IgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBjb2xvcigkY29sb3IpO1xuICAgIH1cbiAgICBAaWYgJGRlbnNpdHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBkZW5zaXR5KCRkZW5zaXR5KTtcbiAgICB9XG4gICAgQGlmICR0eXBvZ3JhcGh5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgdHlwb2dyYXBoeSgkdHlwb2dyYXBoeSk7XG4gICAgfVxuICB9XG59XG4iLCJAdXNlICdzYXNzOm1hcCc7XG5AdXNlICcuLi9jb3JlL3RoZW1pbmcvdGhlbWluZyc7XG5AdXNlICcuLi9jb3JlL3R5cG9ncmFwaHkvdHlwb2dyYXBoeSc7XG5AdXNlICcuLi9jb3JlL3R5cG9ncmFwaHkvdHlwb2dyYXBoeS11dGlscyc7XG5cbkB1c2UgJy4vZm9ybS1maWVsZC1maWxsLXRoZW1lLnNjc3MnO1xuQHVzZSAnLi9mb3JtLWZpZWxkLWxlZ2FjeS10aGVtZS5zY3NzJztcbkB1c2UgJy4vZm9ybS1maWVsZC1vdXRsaW5lLXRoZW1lLnNjc3MnO1xuQHVzZSAnLi9mb3JtLWZpZWxkLXN0YW5kYXJkLXRoZW1lLnNjc3MnO1xuXG4vLyBDb2xvciBzdHlsZXMgdGhhdCBhcHBseSB0byBhbGwgYXBwZWFyYW5jZXMgb2YgdGhlIGZvcm0tZmllbGQuXG5AbWl4aW4gY29sb3IoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRwcmltYXJ5OiBtYXAuZ2V0KCRjb25maWcsIHByaW1hcnkpO1xuICAkYWNjZW50OiBtYXAuZ2V0KCRjb25maWcsIGFjY2VudCk7XG4gICR3YXJuOiBtYXAuZ2V0KCRjb25maWcsIHdhcm4pO1xuICAkYmFja2dyb3VuZDogbWFwLmdldCgkY29uZmlnLCBiYWNrZ3JvdW5kKTtcbiAgJGZvcmVncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgZm9yZWdyb3VuZCk7XG4gICRpcy1kYXJrLXRoZW1lOiBtYXAuZ2V0KCRjb25maWcsIGlzLWRhcmspO1xuXG4gIC8vIExhYmVsIGNvbG9ycy4gUmVxdWlyZWQgaXMgdXNlZCBmb3IgdGhlIGAqYCBzdGFyIHNob3duIGluIHRoZSBsYWJlbC5cbiAgJGxhYmVsLWNvbG9yOlxuICAgIHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgc2Vjb25kYXJ5LXRleHQsIGlmKCRpcy1kYXJrLXRoZW1lLCAwLjcsIDAuNikpO1xuICAkZm9jdXNlZC1sYWJlbC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRwcmltYXJ5LCB0ZXh0KTtcbiAgJHJlcXVpcmVkLWxhYmVsLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGFjY2VudCwgdGV4dCk7XG5cbiAgLy8gVW5kZXJsaW5lIGNvbG9ycy5cbiAgJHVuZGVybGluZS1jb2xvci1iYXNlOlxuICAgIHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgZGl2aWRlciwgaWYoJGlzLWRhcmstdGhlbWUsIDEsIDAuODcpKTtcbiAgJHVuZGVybGluZS1jb2xvci1hY2NlbnQ6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYWNjZW50LCB0ZXh0KTtcbiAgJHVuZGVybGluZS1jb2xvci13YXJuOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHdhcm4sIHRleHQpO1xuICAkdW5kZXJsaW5lLWZvY3VzZWQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkcHJpbWFyeSwgdGV4dCk7XG5cbiAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsIHtcbiAgICBjb2xvcjogJGxhYmVsLWNvbG9yO1xuICB9XG5cbiAgLm1hdC1oaW50IHtcbiAgICBjb2xvcjogJGxhYmVsLWNvbG9yO1xuICB9XG5cbiAgLm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkIC5tYXQtZm9ybS1maWVsZC1sYWJlbCB7XG4gICAgY29sb3I6ICRmb2N1c2VkLWxhYmVsLWNvbG9yO1xuXG4gICAgJi5tYXQtYWNjZW50IHtcbiAgICAgIGNvbG9yOiAkdW5kZXJsaW5lLWNvbG9yLWFjY2VudDtcbiAgICB9XG5cbiAgICAmLm1hdC13YXJuIHtcbiAgICAgIGNvbG9yOiAkdW5kZXJsaW5lLWNvbG9yLXdhcm47XG4gICAgfVxuICB9XG5cbiAgLm1hdC1mb2N1c2VkIC5tYXQtZm9ybS1maWVsZC1yZXF1aXJlZC1tYXJrZXIge1xuICAgIGNvbG9yOiAkcmVxdWlyZWQtbGFiZWwtY29sb3I7XG4gIH1cblxuICAubWF0LWZvcm0tZmllbGQtcmlwcGxlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdW5kZXJsaW5lLWNvbG9yLWJhc2U7XG4gIH1cblxuICAubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWQge1xuICAgIC5tYXQtZm9ybS1maWVsZC1yaXBwbGUge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHVuZGVybGluZS1mb2N1c2VkLWNvbG9yO1xuXG4gICAgICAmLm1hdC1hY2NlbnQge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdW5kZXJsaW5lLWNvbG9yLWFjY2VudDtcbiAgICAgIH1cblxuICAgICAgJi5tYXQtd2FybiB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR1bmRlcmxpbmUtY29sb3Itd2FybjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdC5tYXQtZm9jdXNlZDpub3QoLm1hdC1mb3JtLWZpZWxkLWludmFsaWQpIHtcbiAgICAubWF0LWZvcm0tZmllbGQtaW5maXg6OmFmdGVyIHtcbiAgICAgIGNvbG9yOiAkdW5kZXJsaW5lLWZvY3VzZWQtY29sb3I7XG4gICAgfVxuXG4gICAgJi5tYXQtYWNjZW50IC5tYXQtZm9ybS1maWVsZC1pbmZpeDo6YWZ0ZXIge1xuICAgICAgY29sb3I6ICR1bmRlcmxpbmUtY29sb3ItYWNjZW50O1xuICAgIH1cblxuICAgICYubWF0LXdhcm4gLm1hdC1mb3JtLWZpZWxkLWluZml4OjphZnRlciB7XG4gICAgICBjb2xvcjogJHVuZGVybGluZS1jb2xvci13YXJuO1xuICAgIH1cbiAgfVxuXG4gIC8vIFN0eWxpbmcgZm9yIHRoZSBlcnJvciBzdGF0ZSBvZiB0aGUgZm9ybSBmaWVsZC4gTm90ZSB0aGF0IHdoaWxlIHRoZSBzYW1lIGNhbiBiZVxuICAvLyBhY2hpZXZlZCB3aXRoIHRoZSBuZy0qIGNsYXNzZXMsIHdlIHVzZSB0aGlzIGFwcHJvYWNoIGluIG9yZGVyIHRvIGVuc3VyZSB0aGF0IHRoZSBzYW1lXG4gIC8vIGxvZ2ljIGlzIHVzZWQgdG8gc3R5bGUgdGhlIGVycm9yIHN0YXRlIGFuZCB0byBzaG93IHRoZSBlcnJvciBtZXNzYWdlcy5cbiAgLm1hdC1mb3JtLWZpZWxkLm1hdC1mb3JtLWZpZWxkLWludmFsaWQge1xuICAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbCB7XG4gICAgICBjb2xvcjogJHVuZGVybGluZS1jb2xvci13YXJuO1xuXG4gICAgICAmLm1hdC1hY2NlbnQsXG4gICAgICAubWF0LWZvcm0tZmllbGQtcmVxdWlyZWQtbWFya2VyIHtcbiAgICAgICAgY29sb3I6ICR1bmRlcmxpbmUtY29sb3Itd2FybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAubWF0LWZvcm0tZmllbGQtcmlwcGxlLFxuICAgIC5tYXQtZm9ybS1maWVsZC1yaXBwbGUubWF0LWFjY2VudCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdW5kZXJsaW5lLWNvbG9yLXdhcm47XG4gICAgfVxuICB9XG5cbiAgLm1hdC1lcnJvciB7XG4gICAgY29sb3I6ICR1bmRlcmxpbmUtY29sb3Itd2FybjtcbiAgfVxuXG4gIEBpbmNsdWRlIGZvcm0tZmllbGQtbGVnYWN5LXRoZW1lLmxlZ2FjeS1jb2xvcigkY29uZmlnKTtcbiAgQGluY2x1ZGUgZm9ybS1maWVsZC1zdGFuZGFyZC10aGVtZS5zdGFuZGFyZC1jb2xvcigkY29uZmlnKTtcbiAgQGluY2x1ZGUgZm9ybS1maWVsZC1maWxsLXRoZW1lLmZpbGwtY29sb3IoJGNvbmZpZyk7XG4gIEBpbmNsdWRlIGZvcm0tZmllbGQtb3V0bGluZS10aGVtZS5vdXRsaW5lLWNvbG9yKCRjb25maWcpO1xufVxuXG4vLyBVc2VkIHRvIG1ha2UgaW5zdGFuY2VzIG9mIHRoZSBfbWF0LWZvcm0tZmllbGQtbGFiZWwtZmxvYXRpbmcgbWl4aW4gbmVnbGlnaWJseSBkaWZmZXJlbnQsXG4vLyBhbmQgcHJldmVudCBHb29nbGUncyBDU1MgT3B0aW1pemVyIGZyb20gY29sbGFwc2luZyB0aGUgZGVjbGFyYXRpb25zLiBUaGlzIGlzIG5lZWRlZCBiZWNhdXNlIHNvbWVcbi8vIG9mIHRoZSBzZWxlY3RvcnMgY29udGFpbiBwc2V1ZG8tY2xhc3NlcyBub3QgcmVjb2duaXplZCBpbiBhbGwgYnJvd3NlcnMuIElmIGEgYnJvd3NlciBlbmNvdW50ZXJzXG4vLyBhbiB1bmtub3duIHBzZXVkby1jbGFzcyBpdCB3aWxsIGRpc2NhcmQgdGhlIGVudGlyZSBydWxlIHNldC5cbiRkZWR1cGU6IDA7XG5cbi8vIEFwcGxpZXMgYSBmbG9hdGluZyBsYWJlbCBhYm92ZSB0aGUgZm9ybSBmaWVsZCBjb250cm9sIGl0c2VsZi5cbkBtaXhpbiBfbGFiZWwtZmxvYXRpbmcoJGZvbnQtc2NhbGUsICRpbmZpeC1wYWRkaW5nLCAkaW5maXgtbWFyZ2luLXRvcCkge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLSRpbmZpeC1tYXJnaW4tdG9wIC0gJGluZml4LXBhZGRpbmcgKyAkZGVkdXBlKVxuICAgICAgICAgICAgIHNjYWxlKCRmb250LXNjYWxlKTtcbiAgd2lkdGg6IDEwMCUgLyAkZm9udC1zY2FsZSArICRkZWR1cGU7XG5cbiAgJGRlZHVwZTogJGRlZHVwZSArIDAuMDAwMDEgIWdsb2JhbDtcbn1cblxuQG1peGluIHR5cG9ncmFwaHkoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0eXBvZ3JhcGh5LnByaXZhdGUtdHlwb2dyYXBoeS10by0yMDE0LWNvbmZpZyhcbiAgICAgIHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCRjb25maWctb3ItdGhlbWUpKTtcbiAgLy8gVGhlIHVuaXQtbGVzcyBsaW5lLWhlaWdodCBmcm9tIHRoZSBmb250IGNvbmZpZy5cbiAgJGxpbmUtaGVpZ2h0OiB0eXBvZ3JhcGh5LXV0aWxzLmxpbmUtaGVpZ2h0KCRjb25maWcsIGlucHV0KTtcblxuICAvLyBUaGUgYW1vdW50IHRvIHNjYWxlIHRoZSBmb250IGZvciB0aGUgZmxvYXRpbmcgbGFiZWwgYW5kIHN1YnNjcmlwdC5cbiAgJHN1YnNjcmlwdC1mb250LXNjYWxlOiAwLjc1O1xuICAvLyBUaGUgYW1vdW50IHRvIHNjYWxlIHRoZSBmb250IGZvciB0aGUgcHJlZml4IGFuZCBzdWZmaXggaWNvbnMuXG4gICRwcmVmaXgtc3VmZml4LWljb24tZm9udC1zY2FsZTogMS41O1xuXG4gIC8vIFRoZSBwYWRkaW5nIG9uIHRoZSBpbmZpeC4gTW9ja3Mgc2hvdyBoYWxmIG9mIHRoZSB0ZXh0IHNpemUuXG4gICRpbmZpeC1wYWRkaW5nOiAwLjVlbTtcbiAgLy8gVGhlIG1hcmdpbiBhcHBsaWVkIHRvIHRoZSBmb3JtLWZpZWxkLWluZml4IHRvIHJlc2VydmUgc3BhY2UgZm9yIHRoZSBmbG9hdGluZyBsYWJlbC5cbiAgJGluZml4LW1hcmdpbi10b3A6IDFlbSAqICRsaW5lLWhlaWdodCAqICRzdWJzY3JpcHQtZm9udC1zY2FsZTtcbiAgLy8gRm9udCBzaXplIHRvIHVzZSBmb3IgdGhlIGxhYmVsIGFuZCBzdWJzY3JpcHQgdGV4dC5cbiAgJHN1YnNjcmlwdC1mb250LXNpemU6ICRzdWJzY3JpcHQtZm9udC1zY2FsZSAqIDEwMCU7XG4gIC8vIEZvbnQgc2l6ZSB0byB1c2UgZm9yIHRoZSBmb3IgdGhlIHByZWZpeCBhbmQgc3VmZml4IGljb25zLlxuICAkcHJlZml4LXN1ZmZpeC1pY29uLWZvbnQtc2l6ZTogJHByZWZpeC1zdWZmaXgtaWNvbi1mb250LXNjYWxlICogMTAwJTtcbiAgLy8gVGhlIHNwYWNlIGJldHdlZW4gdGhlIGJvdHRvbSBvZiB0aGUgLm1hdC1mb3JtLWZpZWxkLWZsZXggYXJlYSBhbmQgdGhlIHN1YnNjcmlwdCB3cmFwcGVyLlxuICAvLyBNb2NrcyBzaG93IGhhbGYgb2YgdGhlIHRleHQgc2l6ZSwgYnV0IHRoaXMgbWFyZ2luIGlzIGFwcGxpZWQgdG8gYW4gZWxlbWVudCB3aXRoIHRoZSBzdWJzY3JpcHRcbiAgLy8gdGV4dCBmb250IHNpemUsIHNvIHdlIG5lZWQgdG8gZGl2aWRlIGJ5IHRoZSBzY2FsZSBmYWN0b3IgdG8gbWFrZSBpdCBoYWxmIG9mIHRoZSBvcmlnaW5hbCB0ZXh0XG4gIC8vIHNpemUuXG4gICRzdWJzY3JpcHQtbWFyZ2luLXRvcDogMC41ZW0gLyAkc3Vic2NyaXB0LWZvbnQtc2NhbGU7XG4gIC8vIFRoZSBwYWRkaW5nIGFwcGxpZWQgdG8gdGhlIGZvcm0tZmllbGQtd3JhcHBlciB0byByZXNlcnZlIHNwYWNlIGZvciB0aGUgc3Vic2NyaXB0LCBzaW5jZSBpdCdzXG4gIC8vIGFic29sdXRlbHkgcG9zaXRpb25lZC4gVGhpcyBpcyBhIGNvbWJpbmF0aW9uIG9mIHRoZSBzdWJzY3JpcHQncyBtYXJnaW4gYW5kIGxpbmUtaGVpZ2h0LCBidXQgd2VcbiAgLy8gbmVlZCB0byBtdWx0aXBseSBieSB0aGUgc3Vic2NyaXB0IGZvbnQgc2NhbGUgZmFjdG9yIHNpbmNlIHRoZSB3cmFwcGVyIGhhcyBhIGxhcmdlciBmb250IHNpemUuXG4gICR3cmFwcGVyLXBhZGRpbmctYm90dG9tOiAoJHN1YnNjcmlwdC1tYXJnaW4tdG9wICsgJGxpbmUtaGVpZ2h0KSAqICRzdWJzY3JpcHQtZm9udC1zY2FsZTtcblxuICAubWF0LWZvcm0tZmllbGQge1xuICAgIEBpbmNsdWRlIHR5cG9ncmFwaHktdXRpbHMudHlwb2dyYXBoeS1sZXZlbCgkY29uZmlnLCBpbnB1dCk7XG4gIH1cblxuICAubWF0LWZvcm0tZmllbGQtd3JhcHBlciB7XG4gICAgcGFkZGluZy1ib3R0b206ICR3cmFwcGVyLXBhZGRpbmctYm90dG9tO1xuICB9XG5cbiAgLm1hdC1mb3JtLWZpZWxkLXByZWZpeCxcbiAgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeCB7XG4gICAgLy8gQWxsb3cgaWNvbnMgaW4gYSBwcmVmaXggb3Igc3VmZml4IHRvIGFkYXB0IHRvIHRoZSBjb3JyZWN0IHNpemUuXG4gICAgLm1hdC1pY29uIHtcbiAgICAgIGZvbnQtc2l6ZTogJHByZWZpeC1zdWZmaXgtaWNvbi1mb250LXNpemU7XG4gICAgICBsaW5lLWhlaWdodDogJGxpbmUtaGVpZ2h0O1xuICAgIH1cblxuICAgIC8vIEFsbG93IGljb24gYnV0dG9ucyBpbiBhIHByZWZpeCBvciBzdWZmaXggdG8gYWRhcHQgdG8gdGhlIGNvcnJlY3Qgc2l6ZS5cbiAgICAubWF0LWljb24tYnV0dG9uIHtcbiAgICAgIGhlaWdodDogJHByZWZpeC1zdWZmaXgtaWNvbi1mb250LXNjYWxlICogMWVtO1xuICAgICAgd2lkdGg6ICRwcmVmaXgtc3VmZml4LWljb24tZm9udC1zY2FsZSAqIDFlbTtcblxuICAgICAgLm1hdC1pY29uIHtcbiAgICAgICAgaGVpZ2h0OiAkbGluZS1oZWlnaHQgKiAxZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAkbGluZS1oZWlnaHQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLm1hdC1mb3JtLWZpZWxkLWluZml4IHtcbiAgICBwYWRkaW5nOiAkaW5maXgtcGFkZGluZyAwO1xuICAgIC8vIFRocm93cyBvZmYgdGhlIGJhc2VsaW5lIGlmIHdlIGRvIGl0IGFzIGEgcmVhbCBtYXJnaW4sIHNvIHdlIGRvIGl0IGFzIGEgYm9yZGVyIGluc3RlYWQuXG4gICAgYm9yZGVyLXRvcDogJGluZml4LW1hcmdpbi10b3Agc29saWQgdHJhbnNwYXJlbnQ7XG4gIH1cblxuICAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IHtcbiAgICAmLm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdCAubWF0LWZvcm0tZmllbGQtbGFiZWwsXG4gICAgLm1hdC1pbnB1dC1zZXJ2ZXI6Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWwge1xuICAgICAgQGluY2x1ZGUgX2xhYmVsLWZsb2F0aW5nKFxuICAgICAgICAgICAgICAkc3Vic2NyaXB0LWZvbnQtc2NhbGUsICRpbmZpeC1wYWRkaW5nLCAkaW5maXgtbWFyZ2luLXRvcCk7XG4gICAgfVxuXG4gICAgLy8gU2VydmVyLXNpZGUgcmVuZGVyZWQgbWF0SW5wdXQgd2l0aCBhIGxhYmVsIGF0dHJpYnV0ZSBidXQgbGFiZWwgbm90IHNob3duXG4gICAgLy8gKHVzZWQgYXMgYSBwdXJlIENTUyBzdGFuZC1pbiBmb3IgbWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0KS5cbiAgICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlclxuICAgICAgICAubWF0LWZvcm0tZmllbGQtbGFiZWwge1xuICAgICAgQGluY2x1ZGUgX2xhYmVsLWZsb2F0aW5nKFxuICAgICAgICAgICAgICAkc3Vic2NyaXB0LWZvbnQtc2NhbGUsICRpbmZpeC1wYWRkaW5nLCAkaW5maXgtbWFyZ2luLXRvcCk7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIge1xuICAgIHRvcDogLSRpbmZpeC1tYXJnaW4tdG9wO1xuICAgIHBhZGRpbmctdG9wOiAkaW5maXgtbWFyZ2luLXRvcDtcbiAgfVxuXG4gIC5tYXQtZm9ybS1maWVsZC1sYWJlbCB7XG4gICAgdG9wOiAkaW5maXgtbWFyZ2luLXRvcCArICRpbmZpeC1wYWRkaW5nO1xuICB9XG5cbiAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZSB7XG4gICAgLy8gV2Ugd2FudCB0aGUgdW5kZXJsaW5lIHRvIHN0YXJ0IGF0IHRoZSBlbmQgb2YgdGhlIGNvbnRlbnQgYm94LCBub3QgdGhlIHBhZGRpbmcgYm94LFxuICAgIC8vIHNvIHdlIG1vdmUgaXQgdXAgYnkgdGhlIHBhZGRpbmcgYW1vdW50LlxuICAgIGJvdHRvbTogJHdyYXBwZXItcGFkZGluZy1ib3R0b207XG4gIH1cblxuICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXIge1xuICAgIGZvbnQtc2l6ZTogJHN1YnNjcmlwdC1mb250LXNpemU7XG4gICAgbWFyZ2luLXRvcDogJHN1YnNjcmlwdC1tYXJnaW4tdG9wO1xuXG4gICAgLy8gV2Ugd2FudCB0aGUgc3Vic2NyaXB0IHRvIHN0YXJ0IGF0IHRoZSBlbmQgb2YgdGhlIGNvbnRlbnQgYm94LCBub3QgdGhlIHBhZGRpbmcgYm94LFxuICAgIC8vIHNvIHdlIG1vdmUgaXQgdXAgYnkgdGhlIHBhZGRpbmcgYW1vdW50IChhZGp1c3RlZCBmb3IgdGhlIHNtYWxsZXIgZm9udCBzaXplKTtcbiAgICB0b3A6IGNhbGMoMTAwJSAtICN7JHdyYXBwZXItcGFkZGluZy1ib3R0b20gLyAkc3Vic2NyaXB0LWZvbnQtc2NhbGV9KTtcbiAgfVxuXG4gIEBpbmNsdWRlIGZvcm0tZmllbGQtbGVnYWN5LXRoZW1lLmxlZ2FjeS10eXBvZ3JhcGh5KCRjb25maWcpO1xuICBAaW5jbHVkZSBmb3JtLWZpZWxkLXN0YW5kYXJkLXRoZW1lLnN0YW5kYXJkLXR5cG9ncmFwaHkoJGNvbmZpZyk7XG4gIEBpbmNsdWRlIGZvcm0tZmllbGQtZmlsbC10aGVtZS5maWxsLXR5cG9ncmFwaHkoJGNvbmZpZyk7XG4gIEBpbmNsdWRlIGZvcm0tZmllbGQtb3V0bGluZS10aGVtZS5vdXRsaW5lLXR5cG9ncmFwaHkoJGNvbmZpZyk7XG59XG5cbkBtaXhpbiBkZW5zaXR5KCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGRlbnNpdHktc2NhbGU6IHRoZW1pbmcuZ2V0LWRlbnNpdHktY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICBAaW5jbHVkZSBmb3JtLWZpZWxkLWxlZ2FjeS10aGVtZS5wcml2YXRlLWZvcm0tZmllbGQtbGVnYWN5LWRlbnNpdHkoJGRlbnNpdHktc2NhbGUpO1xuICBAaW5jbHVkZSBmb3JtLWZpZWxkLXN0YW5kYXJkLXRoZW1lLnByaXZhdGUtZm9ybS1maWVsZC1zdGFuZGFyZC1kZW5zaXR5KCRkZW5zaXR5LXNjYWxlKTtcbiAgQGluY2x1ZGUgZm9ybS1maWVsZC1maWxsLXRoZW1lLnByaXZhdGUtZm9ybS1maWVsZC1maWxsLWRlbnNpdHkoJGRlbnNpdHktc2NhbGUpO1xuICBAaW5jbHVkZSBmb3JtLWZpZWxkLW91dGxpbmUtdGhlbWUucHJpdmF0ZS1mb3JtLWZpZWxkLW91dGxpbmUtZGVuc2l0eSgkZGVuc2l0eS1zY2FsZSk7XG59XG5cbkBtaXhpbiB0aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKSB7XG4gICR0aGVtZTogdGhlbWluZy5wcml2YXRlLWxlZ2FjeS1nZXQtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZyk7XG4gIEBpbmNsdWRlIHRoZW1pbmcucHJpdmF0ZS1jaGVjay1kdXBsaWNhdGUtdGhlbWUtc3R5bGVzKCR0aGVtZSwgJ21hdC1mb3JtLWZpZWxkJykge1xuICAgICRjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgJGRlbnNpdHk6IHRoZW1pbmcuZ2V0LWRlbnNpdHktY29uZmlnKCR0aGVtZSk7XG4gICAgJHR5cG9ncmFwaHk6IHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCR0aGVtZSk7XG5cbiAgICBAaWYgJGNvbG9yICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgZGVuc2l0eSgkZGVuc2l0eSk7XG4gICAgfVxuICAgIEBpZiAkdHlwb2dyYXBoeSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIHR5cG9ncmFwaHkoJHR5cG9ncmFwaHkpO1xuICAgIH1cbiAgfVxufVxuIiwiQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnLi4vY29yZS90aGVtaW5nL3RoZW1pbmcnO1xuQHVzZSAnLi4vY29yZS9zdHlsZS9mb3JtLWNvbW1vbic7XG5AdXNlICcuLi9jb3JlL3R5cG9ncmFwaHkvdHlwb2dyYXBoeSc7XG5AdXNlICcuLi9jb3JlL3R5cG9ncmFwaHkvdHlwb2dyYXBoeS11dGlscyc7XG5cblxuLy8gVGhlbWUgc3R5bGVzIHRoYXQgb25seSBhcHBseSB0byB0aGUgbGVnYWN5IGFwcGVhcmFuY2Ugb2YgdGhlIGZvcm0tZmllbGQuXG5cbkBtaXhpbiBsZWdhY3ktY29sb3IoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRmb3JlZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGZvcmVncm91bmQpO1xuICAkaXMtZGFyay10aGVtZTogbWFwLmdldCgkY29uZmlnLCBpcy1kYXJrKTtcblxuICAkbGFiZWwtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgc2Vjb25kYXJ5LXRleHQpO1xuICAkdW5kZXJsaW5lLWNvbG9yOlxuICAgIHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgZGl2aWRlciwgaWYoJGlzLWRhcmstdGhlbWUsIDAuNywgMC40MikpO1xuXG4gIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSB7XG4gICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsIHtcbiAgICAgIGNvbG9yOiAkbGFiZWwtY29sb3I7XG4gICAgfVxuXG4gICAgLm1hdC1oaW50IHtcbiAgICAgIGNvbG9yOiAkbGFiZWwtY29sb3I7XG4gICAgfVxuXG4gICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZSB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdW5kZXJsaW5lLWNvbG9yO1xuICAgIH1cblxuICAgICYubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZSB7XG4gICAgICBAaW5jbHVkZSBmb3JtLWNvbW1vbi5wcml2YXRlLWNvbnRyb2wtZGlzYWJsZWQtdW5kZXJsaW5lKCR1bmRlcmxpbmUtY29sb3IpO1xuICAgIH1cbiAgfVxufVxuXG4vLyBVc2VkIHRvIG1ha2UgaW5zdGFuY2VzIG9mIHRoZSBfbWF0LWZvcm0tZmllbGQtbGFiZWwtZmxvYXRpbmcgbWl4aW4gbmVnbGlnaWJseSBkaWZmZXJlbnQsXG4vLyBhbmQgcHJldmVudCBHb29nbGUncyBDU1MgT3B0aW1pemVyIGZyb20gY29sbGFwc2luZyB0aGUgZGVjbGFyYXRpb25zLiBUaGlzIGlzIG5lZWRlZCBiZWNhdXNlIHNvbWVcbi8vIG9mIHRoZSBzZWxlY3RvcnMgY29udGFpbiBwc2V1ZG8tY2xhc3NlcyBub3QgcmVjb2duaXplZCBpbiBhbGwgYnJvd3NlcnMuIElmIGEgYnJvd3NlciBlbmNvdW50ZXJzXG4vLyBhbiB1bmtub3duIHBzZXVkby1jbGFzcyBpdCB3aWxsIGRpc2NhcmQgdGhlIGVudGlyZSBydWxlIHNldC5cbiRsZWdhY3ktZGVkdXBlOiAwO1xuXG4vLyBBcHBsaWVzIGEgZmxvYXRpbmcgbGFiZWwgYWJvdmUgdGhlIGZvcm0gZmllbGQgY29udHJvbCBpdHNlbGYuXG5AbWl4aW4gX2xhYmVsLWZsb2F0aW5nKCRmb250LXNjYWxlLCAkaW5maXgtcGFkZGluZywgJGluZml4LW1hcmdpbi10b3ApIHtcbiAgLy8gV2UgdXNlIHBlcnNwZWN0aXZlIHRvIGZpeCB0aGUgdGV4dCBibHVycmluZXNzIGFzIGRlc2NyaWJlZCBoZXJlOlxuICAvLyBodHRwOi8vd3d3LnVzZXJhZ2VudG1hbi5jb20vYmxvZy8yMDE0LzA1LzA0L2ZpeGluZy10eXBvZ3JhcGh5LWluc2lkZS1vZi0yLWQtY3NzLXRyYW5zZm9ybXMvXG4gIC8vIFRoaXMgcmVzdWx0cyBpbiBhIHNtYWxsIGppdHRlciBhZnRlciB0aGUgbGFiZWwgZmxvYXRzIG9uIEZpcmVmb3gsIHdoaWNoIHRoZVxuICAvLyB0cmFuc2xhdGVaIGZpeGVzLlxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLSRpbmZpeC1tYXJnaW4tdG9wIC0gJGluZml4LXBhZGRpbmcpIHNjYWxlKCRmb250LXNjYWxlKSBwZXJzcGVjdGl2ZSgxMDBweClcbiAgdHJhbnNsYXRlWigwLjAwMXB4ICsgJGxlZ2FjeS1kZWR1cGUpO1xuICAvLyBUaGUgdHJpY2tzIGFib3ZlIHVzZWQgdG8gc21vb3RoIG91dCB0aGUgYW5pbWF0aW9uIG9uIGNocm9tZSBhbmQgZmlyZWZveCBhY3R1YWxseSBtYWtlIHRoaW5nc1xuICAvLyB3b3JzZSBvbiBJRSwgc28gd2UgZG9uJ3QgaW5jbHVkZSB0aGVtIGluIHRoZSBJRSB2ZXJzaW9uLlxuICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0kaW5maXgtbWFyZ2luLXRvcCAtICRpbmZpeC1wYWRkaW5nICsgJGxlZ2FjeS1kZWR1cGUpXG4gICAgICAgICAgICAgICAgICBzY2FsZSgkZm9udC1zY2FsZSk7XG5cbiAgd2lkdGg6IDEwMCUgLyAkZm9udC1zY2FsZSArICRsZWdhY3ktZGVkdXBlO1xuXG4gICRsZWdhY3ktZGVkdXBlOiAkbGVnYWN5LWRlZHVwZSArIDAuMDAwMDEgIWdsb2JhbDtcbn1cblxuLy8gU2FtZSBhcyBtaXhpbiBhYm92ZSwgYnV0IG9taXRzIHRoZSB0cmFuc2xhdGVaIGZvciBwcmludGluZyBwdXJwb3Nlcy5cbkBtaXhpbiBfbGFiZWwtZmxvYXRpbmctcHJpbnQoJGZvbnQtc2NhbGUsICRpbmZpeC1wYWRkaW5nLCAkaW5maXgtbWFyZ2luLXRvcCkge1xuICAvLyBUaGlzIHJlc3VsdHMgaW4gYSBzbWFsbCBqaXR0ZXIgYWZ0ZXIgdGhlIGxhYmVsIGZsb2F0cyBvbiBGaXJlZm94LCB3aGljaCB0aGVcbiAgLy8gdHJhbnNsYXRlWiBmaXhlcy5cbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0kaW5maXgtbWFyZ2luLXRvcCAtICRpbmZpeC1wYWRkaW5nICsgJGxlZ2FjeS1kZWR1cGUpXG4gICAgICAgICAgICAgICAgICBzY2FsZSgkZm9udC1zY2FsZSk7XG4gIC8vIFRoZSB0cmlja3MgYWJvdmUgdXNlZCB0byBzbW9vdGggb3V0IHRoZSBhbmltYXRpb24gb24gY2hyb21lIGFuZCBmaXJlZm94IGFjdHVhbGx5IG1ha2UgdGhpbmdzXG4gIC8vIHdvcnNlIG9uIElFLCBzbyB3ZSBkb24ndCBpbmNsdWRlIHRoZW0gaW4gdGhlIElFIHZlcnNpb24uXG4gICRsZWdhY3ktZGVkdXBlOiAkbGVnYWN5LWRlZHVwZSArIDAuMDAwMDEgIWdsb2JhbDtcbn1cblxuQG1peGluIGxlZ2FjeS10eXBvZ3JhcGh5KCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdHlwb2dyYXBoeS5wcml2YXRlLXR5cG9ncmFwaHktdG8tMjAxNC1jb25maWcoXG4gICAgICB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKSk7XG4gIC8vIFRoZSB1bml0LWxlc3MgbGluZS1oZWlnaHQgZnJvbSB0aGUgZm9udCBjb25maWcuXG4gICRsaW5lLWhlaWdodDogdHlwb2dyYXBoeS11dGlscy5saW5lLWhlaWdodCgkY29uZmlnLCBpbnB1dCk7XG4gIC8vIFRoZSBhbW91bnQgdG8gc2NhbGUgdGhlIGZvbnQgZm9yIHRoZSBmbG9hdGluZyBsYWJlbCBhbmQgc3Vic2NyaXB0LlxuICAkc3Vic2NyaXB0LWZvbnQtc2NhbGU6IDAuNzU7XG4gIC8vIFRoZSBhbW91bnQgb2Ygc3BhY2UgYmV0d2VlbiB0aGUgdG9wIG9mIHRoZSBsaW5lIGFuZCB0aGUgdG9wIG9mIHRoZSBhY3R1YWwgdGV4dFxuICAvLyAoYXMgYSBmcmFjdGlvbiBvZiB0aGUgZm9udC1zaXplKS5cbiAgJGxpbmUtc3BhY2luZzogKCRsaW5lLWhlaWdodCAtIDEpIC8gMjtcbiAgLy8gVGhlIHBhZGRpbmcgb24gdGhlIGluZml4LiBNb2NrcyBzaG93IGhhbGYgb2YgdGhlIHRleHQgc2l6ZSwgYnV0IHNlZW0gdG8gbWVhc3VyZSBmcm9tIHRoZSBlZGdlXG4gIC8vIG9mIHRoZSB0ZXh0IGl0c2VsZiwgbm90IHRoZSBlZGdlIG9mIHRoZSBsaW5lOyB0aGVyZWZvcmUgd2Ugc3VidHJhY3Qgb2ZmIHRoZSBsaW5lIHNwYWNpbmcuXG4gICRpbmZpeC1wYWRkaW5nOiAwLjVlbSAtICRsaW5lLXNwYWNpbmc7XG4gIC8vIFRoZSBtYXJnaW4gYXBwbGllZCB0byB0aGUgZm9ybS1maWVsZC1pbmZpeCB0byByZXNlcnZlIHNwYWNlIGZvciB0aGUgZmxvYXRpbmcgbGFiZWwuXG4gICRpbmZpeC1tYXJnaW4tdG9wOiAxZW0gKiAkbGluZS1oZWlnaHQgKiAkc3Vic2NyaXB0LWZvbnQtc2NhbGU7XG4gIC8vIFRoZSBzcGFjZSBiZXR3ZWVuIHRoZSBib3R0b20gb2YgdGhlIC5tYXQtZm9ybS1maWVsZC1mbGV4IGFyZWEgYW5kIHRoZSBzdWJzY3JpcHQgd3JhcHBlci5cbiAgLy8gTW9ja3Mgc2hvdyBoYWxmIG9mIHRoZSB0ZXh0IHNpemUsIGJ1dCB0aGlzIG1hcmdpbiBpcyBhcHBsaWVkIHRvIGFuIGVsZW1lbnQgd2l0aCB0aGUgc3Vic2NyaXB0XG4gIC8vIHRleHQgZm9udCBzaXplLCBzbyB3ZSBuZWVkIHRvIGRpdmlkZSBieSB0aGUgc2NhbGUgZmFjdG9yIHRvIG1ha2UgaXQgaGFsZiBvZiB0aGUgb3JpZ2luYWwgdGV4dFxuICAvLyBzaXplLiBXZSBhZ2FpbiBuZWVkIHRvIHN1YnRyYWN0IG9mZiB0aGUgbGluZSBzcGFjaW5nIHNpbmNlIHRoZSBtb2NrcyBtZWFzdXJlIHRvIHRoZSBlZGdlIG9mIHRoZVxuICAvLyB0ZXh0LCBub3QgdGhlICBlZGdlIG9mIHRoZSBsaW5lLlxuICAkc3Vic2NyaXB0LW1hcmdpbi10b3A6IDAuNWVtIC8gJHN1YnNjcmlwdC1mb250LXNjYWxlIC0gKCRsaW5lLXNwYWNpbmcgKiAyKTtcbiAgLy8gVGhlIHBhZGRpbmcgYXBwbGllZCB0byB0aGUgZm9ybS1maWVsZC13cmFwcGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIHRoZSBzdWJzY3JpcHQsIHNpbmNlIGl0J3NcbiAgLy8gYWJzb2x1dGVseSBwb3NpdGlvbmVkLiBUaGlzIGlzIGEgY29tYmluYXRpb24gb2YgdGhlIHN1YnNjcmlwdCdzIG1hcmdpbiBhbmQgbGluZS1oZWlnaHQsIGJ1dCB3ZVxuICAvLyBuZWVkIHRvIG11bHRpcGx5IGJ5IHRoZSBzdWJzY3JpcHQgZm9udCBzY2FsZSBmYWN0b3Igc2luY2UgdGhlIHdyYXBwZXIgaGFzIGEgbGFyZ2VyIGZvbnQgc2l6ZS5cbiAgJHdyYXBwZXItcGFkZGluZy1ib3R0b206ICgkc3Vic2NyaXB0LW1hcmdpbi10b3AgKyAkbGluZS1oZWlnaHQpICogJHN1YnNjcmlwdC1mb250LXNjYWxlO1xuXG4gIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSB7XG4gICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXIge1xuICAgICAgcGFkZGluZy1ib3R0b206ICR3cmFwcGVyLXBhZGRpbmctYm90dG9tO1xuICAgIH1cblxuICAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeCB7XG4gICAgICBwYWRkaW5nOiAkaW5maXgtcGFkZGluZyAwO1xuICAgIH1cblxuICAgICYubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IHtcbiAgICAgICYubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0IC5tYXQtZm9ybS1maWVsZC1sYWJlbCxcbiAgICAgIC5tYXQtaW5wdXQtc2VydmVyOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVsIHtcbiAgICAgICAgQGluY2x1ZGUgX2xhYmVsLWZsb2F0aW5nKFxuICAgICAgICAgICAgICAgICRzdWJzY3JpcHQtZm9udC1zY2FsZSwgJGluZml4LXBhZGRpbmcsICRpbmZpeC1tYXJnaW4tdG9wKTtcbiAgICAgIH1cblxuICAgICAgLy8gQGJyZWFraW5nLWNoYW5nZSA4LjAuMCB3aWxsIHJlbHkgb24gQXV0b2ZpbGxNb25pdG9yIGluc3RlYWQuXG4gICAgICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbDotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJcbiAgICAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbCB7XG4gICAgICAgIEBpbmNsdWRlIF9sYWJlbC1mbG9hdGluZyhcbiAgICAgICAgICAgICAgICAkc3Vic2NyaXB0LWZvbnQtc2NhbGUsICRpbmZpeC1wYWRkaW5nLCAkaW5maXgtbWFyZ2luLXRvcCk7XG4gICAgICB9XG5cbiAgICAgIC8vIFNlcnZlci1zaWRlIHJlbmRlcmVkIG1hdElucHV0IHdpdGggYSBsYWJlbCBhdHRyaWJ1dGUgYnV0IGxhYmVsIG5vdCBzaG93blxuICAgICAgLy8gKHVzZWQgYXMgYSBwdXJlIENTUyBzdGFuZC1pbiBmb3IgbWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0KS5cbiAgICAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyXG4gICAgICAubWF0LWZvcm0tZmllbGQtbGFiZWwge1xuICAgICAgICBAaW5jbHVkZSBfbGFiZWwtZmxvYXRpbmcoXG4gICAgICAgICAgICAgICAgJHN1YnNjcmlwdC1mb250LXNjYWxlLCAkaW5maXgtcGFkZGluZywgJGluZml4LW1hcmdpbi10b3ApO1xuICAgICAgfVxuICAgIH1cblxuICAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbCB7XG4gICAgICB0b3A6ICRpbmZpeC1tYXJnaW4tdG9wICsgJGluZml4LXBhZGRpbmc7XG4gICAgfVxuXG4gICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZSB7XG4gICAgICAvLyBXZSB3YW50IHRoZSB1bmRlcmxpbmUgdG8gc3RhcnQgYXQgdGhlIGVuZCBvZiB0aGUgY29udGVudCBib3gsIG5vdCB0aGUgcGFkZGluZyBib3gsXG4gICAgICAvLyBzbyB3ZSBtb3ZlIGl0IHVwIGJ5IHRoZSBwYWRkaW5nIGFtb3VudC5cbiAgICAgIGJvdHRvbTogJHdyYXBwZXItcGFkZGluZy1ib3R0b207XG4gICAgfVxuXG4gICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyIHtcbiAgICAgIG1hcmdpbi10b3A6ICRzdWJzY3JpcHQtbWFyZ2luLXRvcDtcblxuICAgICAgLy8gV2Ugd2FudCB0aGUgc3Vic2NyaXB0IHRvIHN0YXJ0IGF0IHRoZSBlbmQgb2YgdGhlIGNvbnRlbnQgYm94LCBub3QgdGhlIHBhZGRpbmcgYm94LFxuICAgICAgLy8gc28gd2UgbW92ZSBpdCB1cCBieSB0aGUgcGFkZGluZyBhbW91bnQgKGFkanVzdGVkIGZvciB0aGUgc21hbGxlciBmb250IHNpemUpO1xuICAgICAgdG9wOiBjYWxjKDEwMCUgLSAjeyR3cmFwcGVyLXBhZGRpbmctYm90dG9tIC8gJHN1YnNjcmlwdC1mb250LXNjYWxlfSk7XG4gICAgfVxuICB9XG5cbiAgLy8gdHJhbnNsYXRlWiBjYXVzZXMgdGhlIGxhYmVsIHRvIG5vdCBhcHBlYXIgd2hpbGUgcHJpbnRpbmcsIHNvIHdlIG92ZXJyaWRlIGl0IHRvIG5vdFxuICAvLyBhcHBseSB0cmFuc2xhdGVaIHdoaWxlIHByaW50aW5nXG4gIEBtZWRpYSBwcmludCB7XG4gICAgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5IHtcbiAgICAgICYubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IHtcbiAgICAgICAgJi5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXQgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLFxuICAgICAgICAubWF0LWlucHV0LXNlcnZlcjpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtZm9ybS1maWVsZC1sYWJlbCB7XG4gICAgICAgICAgQGluY2x1ZGUgX2xhYmVsLWZsb2F0aW5nLXByaW50KFxuICAgICAgICAgICAgICAgICAgJHN1YnNjcmlwdC1mb250LXNjYWxlLCAkaW5maXgtcGFkZGluZywgJGluZml4LW1hcmdpbi10b3ApO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQGJyZWFraW5nLWNoYW5nZSA4LjAuMCB3aWxsIHJlbHkgb24gQXV0b2ZpbGxNb25pdG9yIGluc3RlYWQuXG4gICAgICAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlclxuICAgICAgICAubWF0LWZvcm0tZmllbGQtbGFiZWwge1xuICAgICAgICAgIEBpbmNsdWRlIF9sYWJlbC1mbG9hdGluZy1wcmludChcbiAgICAgICAgICAgICAgICAgICRzdWJzY3JpcHQtZm9udC1zY2FsZSwgJGluZml4LXBhZGRpbmcsICRpbmZpeC1tYXJnaW4tdG9wKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFNlcnZlci1zaWRlIHJlbmRlcmVkIG1hdElucHV0IHdpdGggYSBsYWJlbCBhdHRyaWJ1dGUgYnV0IGxhYmVsIG5vdCBzaG93blxuICAgICAgICAvLyAodXNlZCBhcyBhIHB1cmUgQ1NTIHN0YW5kLWluIGZvciBtYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXQpLlxuICAgICAgICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlclxuICAgICAgICAubWF0LWZvcm0tZmllbGQtbGFiZWwge1xuICAgICAgICAgIEBpbmNsdWRlIF9sYWJlbC1mbG9hdGluZy1wcmludChcbiAgICAgICAgICAgICAgICAgICRzdWJzY3JpcHQtZm9udC1zY2FsZSwgJGluZml4LXBhZGRpbmcsICRpbmZpeC1tYXJnaW4tdG9wKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gcHJpdmF0ZS1mb3JtLWZpZWxkLWxlZ2FjeS1kZW5zaXR5KCRjb25maWctb3ItdGhlbWUpIHt9XG5cbkBtaXhpbiBsZWdhY3ktdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZykge1xuICAkdGhlbWU6IHRoZW1pbmcucHJpdmF0ZS1sZWdhY3ktZ2V0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICBAaW5jbHVkZSB0aGVtaW5nLnByaXZhdGUtY2hlY2stZHVwbGljYXRlLXRoZW1lLXN0eWxlcygkdGhlbWUsICdtYXQtZm9ybS1maWVsZC1sZWdhY3knKSB7XG4gICAgJGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJHRoZW1lKTtcbiAgICAkZGVuc2l0eTogdGhlbWluZy5nZXQtZGVuc2l0eS1jb25maWcoJHRoZW1lKTtcbiAgICAkdHlwb2dyYXBoeTogdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJHRoZW1lKTtcblxuICAgIEBpZiAkY29sb3IgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBsZWdhY3ktY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgcHJpdmF0ZS1mb3JtLWZpZWxkLWxlZ2FjeS1kZW5zaXR5KCRkZW5zaXR5KTtcbiAgICB9XG4gICAgQGlmICR0eXBvZ3JhcGh5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgbGVnYWN5LXR5cG9ncmFwaHkoJHR5cG9ncmFwaHkpO1xuICAgIH1cbiAgfVxufVxuIiwiQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnLi4vY29yZS90aGVtaW5nL3RoZW1pbmcnO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHknO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHktdXRpbHMnO1xuXG5cbi8vIFRoZW1lIHN0eWxlcyB0aGF0IG9ubHkgYXBwbHkgdG8gdGhlIGZpbGwgYXBwZWFyYW5jZSBvZiB0aGUgZm9ybS1maWVsZC5cblxuQG1peGluIGZpbGwtY29sb3IoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRmb3JlZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGZvcmVncm91bmQpO1xuICAkaXMtZGFyay10aGVtZTogbWFwLmdldCgkY29uZmlnLCBpcy1kYXJrKTtcblxuICAkZmlsbC1iYWNrZ3JvdW5kOlxuICAgIHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgYmFzZSwgaWYoJGlzLWRhcmstdGhlbWUsIDAuMSwgMC4wNCkpO1xuICAkZmlsbC1kaXNhYmxlZC1iYWNrZ3JvdW5kOlxuICAgIHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgYmFzZSwgaWYoJGlzLWRhcmstdGhlbWUsIDAuMDUsIDAuMDIpKTtcbiAgJHVuZGVybGluZS1jb2xvcjpcbiAgICB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIGRpdmlkZXIsIGlmKCRpcy1kYXJrLXRoZW1lLCAwLjUsIDAuNDIpKTtcbiAgJGxhYmVsLWRpc2FibGVkLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIGRpc2FibGVkLXRleHQpO1xuXG4gIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwge1xuICAgIC5tYXQtZm9ybS1maWVsZC1mbGV4IHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRmaWxsLWJhY2tncm91bmQ7XG4gICAgfVxuXG4gICAgJi5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZCAubWF0LWZvcm0tZmllbGQtZmxleCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZmlsbC1kaXNhYmxlZC1iYWNrZ3JvdW5kO1xuICAgIH1cblxuICAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmU6OmJlZm9yZSB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdW5kZXJsaW5lLWNvbG9yO1xuICAgIH1cblxuICAgICYubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQge1xuICAgICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsIHtcbiAgICAgICAgY29sb3I6ICRsYWJlbC1kaXNhYmxlZC1jb2xvcjtcbiAgICAgIH1cblxuICAgICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZTo6YmVmb3JlIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vIFVzZWQgdG8gbWFrZSBpbnN0YW5jZXMgb2YgdGhlIF9tYXQtZm9ybS1maWVsZC1sYWJlbC1mbG9hdGluZyBtaXhpbiBuZWdsaWdpYmx5IGRpZmZlcmVudCxcbi8vIGFuZCBwcmV2ZW50IEdvb2dsZSdzIENTUyBPcHRpbWl6ZXIgZnJvbSBjb2xsYXBzaW5nIHRoZSBkZWNsYXJhdGlvbnMuIFRoaXMgaXMgbmVlZGVkIGJlY2F1c2Ugc29tZVxuLy8gb2YgdGhlIHNlbGVjdG9ycyBjb250YWluIHBzZXVkby1jbGFzc2VzIG5vdCByZWNvZ25pemVkIGluIGFsbCBicm93c2Vycy4gSWYgYSBicm93c2VyIGVuY291bnRlcnNcbi8vIGFuIHVua25vd24gcHNldWRvLWNsYXNzIGl0IHdpbGwgZGlzY2FyZCB0aGUgZW50aXJlIHJ1bGUgc2V0LlxuJGZpbGwtZGVkdXBlOiAwO1xuXG4vLyBBcHBsaWVzIGEgZmxvYXRpbmcgbGFiZWwgYWJvdmUgdGhlIGZvcm0gZmllbGQgY29udHJvbCBpdHNlbGYuXG5AbWl4aW4gX2xhYmVsLWZsb2F0aW5nKCRmb250LXNjYWxlLCAkaW5maXgtcGFkZGluZywgJGluZml4LW1hcmdpbi10b3ApIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0kaW5maXgtbWFyZ2luLXRvcCAtICRpbmZpeC1wYWRkaW5nICsgJGZpbGwtZGVkdXBlKVxuICAgICAgICAgICAgIHNjYWxlKCRmb250LXNjYWxlKTtcbiAgd2lkdGg6IDEwMCUgLyAkZm9udC1zY2FsZSArICRmaWxsLWRlZHVwZTtcblxuICAkZmlsbC1kZWR1cGU6ICRmaWxsLWRlZHVwZSArIDAuMDAwMDEgIWdsb2JhbDtcbn1cblxuQG1peGluIGZpbGwtdHlwb2dyYXBoeSgkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHR5cG9ncmFwaHkucHJpdmF0ZS10eXBvZ3JhcGh5LXRvLTIwMTQtY29uZmlnKFxuICAgICAgdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJGNvbmZpZy1vci10aGVtZSkpO1xuICAvLyBUaGUgdW5pdC1sZXNzIGxpbmUtaGVpZ2h0IGZyb20gdGhlIGZvbnQgY29uZmlnLlxuICAkbGluZS1oZWlnaHQ6IHR5cG9ncmFwaHktdXRpbHMubGluZS1oZWlnaHQoJGNvbmZpZywgaW5wdXQpO1xuICAvLyBUaGUgYW1vdW50IHRvIHNjYWxlIHRoZSBmb250IGZvciB0aGUgZmxvYXRpbmcgbGFiZWwgYW5kIHN1YnNjcmlwdC5cbiAgJHN1YnNjcmlwdC1mb250LXNjYWxlOiAwLjc1O1xuICAvLyBUaGUgcGFkZGluZyBvbiB0b3Agb2YgdGhlIGluZml4LlxuICAkaW5maXgtcGFkZGluZy10b3A6IDAuMjVlbTtcbiAgLy8gVGhlIHBhZGRpbmcgYmVsb3cgdGhlIGluZml4LlxuICAkaW5maXgtcGFkZGluZy1ib3R0b206IDAuNzVlbTtcbiAgLy8gVGhlIG1hcmdpbiBhcHBsaWVkIHRvIHRoZSBmb3JtLWZpZWxkLWluZml4IHRvIHJlc2VydmUgc3BhY2UgZm9yIHRoZSBmbG9hdGluZyBsYWJlbC5cbiAgJGluZml4LW1hcmdpbi10b3A6IDFlbSAqICRsaW5lLWhlaWdodCAqICRzdWJzY3JpcHQtZm9udC1zY2FsZTtcbiAgLy8gVGhlIGFtb3VudCB3ZSBvZmZzZXQgdGhlIGxhYmVsIGZyb20gdGhlIGlucHV0IHRleHQgaW4gdGhlIGZpbGwgYXBwZWFyYW5jZS5cbiAgJGZpbGwtYXBwZWFyYW5jZS1sYWJlbC1vZmZzZXQ6IC0wLjVlbTtcblxuICAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsIHtcbiAgICAubWF0LWZvcm0tZmllbGQtaW5maXgge1xuICAgICAgcGFkZGluZzogJGluZml4LXBhZGRpbmctdG9wIDAgJGluZml4LXBhZGRpbmctYm90dG9tIDA7XG4gICAgfVxuXG4gICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsIHtcbiAgICAgIHRvcDogJGluZml4LW1hcmdpbi10b3AgKyAkaW5maXgtcGFkZGluZy10b3A7XG4gICAgICBtYXJnaW4tdG9wOiAkZmlsbC1hcHBlYXJhbmNlLWxhYmVsLW9mZnNldDtcbiAgICB9XG5cbiAgICAmLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdCB7XG4gICAgICAmLm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdCAubWF0LWZvcm0tZmllbGQtbGFiZWwsXG4gICAgICAubWF0LWlucHV0LXNlcnZlcjpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtZm9ybS1maWVsZC1sYWJlbCB7XG4gICAgICAgIEBpbmNsdWRlIF9sYWJlbC1mbG9hdGluZyhcbiAgICAgICAgICAgICAgICAkc3Vic2NyaXB0LWZvbnQtc2NhbGUsICRpbmZpeC1wYWRkaW5nLXRvcCArICRmaWxsLWFwcGVhcmFuY2UtbGFiZWwtb2Zmc2V0LFxuICAgICAgICAgICAgICAgICRpbmZpeC1tYXJnaW4tdG9wKTtcbiAgICAgIH1cblxuICAgICAgLy8gU2VydmVyLXNpZGUgcmVuZGVyZWQgbWF0SW5wdXQgd2l0aCBhIGxhYmVsIGF0dHJpYnV0ZSBidXQgbGFiZWwgbm90IHNob3duXG4gICAgICAvLyAodXNlZCBhcyBhIHB1cmUgQ1NTIHN0YW5kLWluIGZvciBtYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXQpLlxuICAgICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJcbiAgICAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbCB7XG4gICAgICAgIEBpbmNsdWRlIF9sYWJlbC1mbG9hdGluZyhcbiAgICAgICAgICAgICAgICAkc3Vic2NyaXB0LWZvbnQtc2NhbGUsICRpbmZpeC1wYWRkaW5nLXRvcCArICRmaWxsLWFwcGVhcmFuY2UtbGFiZWwtb2Zmc2V0LFxuICAgICAgICAgICAgICAgICRpbmZpeC1tYXJnaW4tdG9wKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHByaXZhdGUtZm9ybS1maWVsZC1maWxsLWRlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIGZpbGwtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZykge1xuICAkdGhlbWU6IHRoZW1pbmcucHJpdmF0ZS1sZWdhY3ktZ2V0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICBAaW5jbHVkZSB0aGVtaW5nLnByaXZhdGUtY2hlY2stZHVwbGljYXRlLXRoZW1lLXN0eWxlcygkdGhlbWUsICdtYXQtZm9ybS1maWVsZC1maWxsJykge1xuICAgICRjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgJGRlbnNpdHk6IHRoZW1pbmcuZ2V0LWRlbnNpdHktY29uZmlnKCR0aGVtZSk7XG4gICAgJHR5cG9ncmFwaHk6IHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCR0aGVtZSk7XG5cbiAgICBAaWYgJGNvbG9yICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgZmlsbC1jb2xvcigkY29sb3IpO1xuICAgIH1cbiAgICBAaWYgJGRlbnNpdHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBwcml2YXRlLWZvcm0tZmllbGQtZmlsbC1kZW5zaXR5KCRkZW5zaXR5KTtcbiAgICB9XG4gICAgQGlmICR0eXBvZ3JhcGh5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgZmlsbC10eXBvZ3JhcGh5KCR0eXBvZ3JhcGh5KTtcbiAgICB9XG4gIH1cbn1cbiIsIkB1c2UgJ3Nhc3M6bWFwJztcbkB1c2UgJy4uL2NvcmUvdGhlbWluZy90aGVtaW5nJztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5JztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5LXV0aWxzJztcblxuXG4vLyBUaGVtZSBzdHlsZXMgdGhhdCBvbmx5IGFwcGx5IHRvIHRoZSBvdXRsaW5lIGFwcGVhcmFuY2Ugb2YgdGhlIGZvcm0tZmllbGQuXG5cbkBtaXhpbiBvdXRsaW5lLWNvbG9yKCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAkcHJpbWFyeTogbWFwLmdldCgkY29uZmlnLCBwcmltYXJ5KTtcbiAgJGFjY2VudDogbWFwLmdldCgkY29uZmlnLCBhY2NlbnQpO1xuICAkd2FybjogbWFwLmdldCgkY29uZmlnLCB3YXJuKTtcbiAgJGZvcmVncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgZm9yZWdyb3VuZCk7XG4gICRpcy1kYXJrLXRoZW1lOiBtYXAuZ2V0KCRjb25maWcsIGlzLWRhcmspO1xuXG4gICRsYWJlbC1kaXNhYmxlZC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBkaXNhYmxlZC10ZXh0KTtcbiAgJG91dGxpbmUtY29sb3I6XG4gICAgdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBkaXZpZGVyLCBpZigkaXMtZGFyay10aGVtZSwgMC4zLCAwLjEyKSk7XG4gICRvdXRsaW5lLWNvbG9yLWhvdmVyOlxuICAgIHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgZGl2aWRlciwgaWYoJGlzLWRhcmstdGhlbWUsIDEsIDAuODcpKTtcbiAgJG91dGxpbmUtY29sb3ItcHJpbWFyeTogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRwcmltYXJ5KTtcbiAgJG91dGxpbmUtY29sb3ItYWNjZW50OiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGFjY2VudCk7XG4gICRvdXRsaW5lLWNvbG9yLXdhcm46IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkd2Fybik7XG4gICRvdXRsaW5lLWNvbG9yLWRpc2FibGVkOlxuICAgIHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgZGl2aWRlciwgaWYoJGlzLWRhcmstdGhlbWUsIDAuMTUsIDAuMDYpKTtcblxuICAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIHtcbiAgICAubWF0LWZvcm0tZmllbGQtb3V0bGluZSB7XG4gICAgICBjb2xvcjogJG91dGxpbmUtY29sb3I7XG4gICAgfVxuXG4gICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2sge1xuICAgICAgY29sb3I6ICRvdXRsaW5lLWNvbG9yLWhvdmVyO1xuICAgIH1cblxuICAgICYubWF0LWZvY3VzZWQge1xuICAgICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2sge1xuICAgICAgICBjb2xvcjogJG91dGxpbmUtY29sb3ItcHJpbWFyeTtcbiAgICAgIH1cblxuICAgICAgJi5tYXQtYWNjZW50IC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNrIHtcbiAgICAgICAgY29sb3I6ICRvdXRsaW5lLWNvbG9yLWFjY2VudDtcbiAgICAgIH1cblxuICAgICAgJi5tYXQtd2FybiAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGljayB7XG4gICAgICAgIGNvbG9yOiAkb3V0bGluZS1jb2xvci13YXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIENsYXNzIHJlcGVhdGVkIHNvIHRoYXQgcnVsZSBpcyBzcGVjaWZpYyBlbm91Z2ggdG8gb3ZlcnJpZGUgZm9jdXNlZCBhY2NlbnQgY29sb3IgY2FzZS5cbiAgICAmLm1hdC1mb3JtLWZpZWxkLWludmFsaWQubWF0LWZvcm0tZmllbGQtaW52YWxpZCB7XG4gICAgICAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGljayB7XG4gICAgICAgIGNvbG9yOiAkb3V0bGluZS1jb2xvci13YXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgICYubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQge1xuICAgICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsIHtcbiAgICAgICAgY29sb3I6ICRsYWJlbC1kaXNhYmxlZC1jb2xvcjtcbiAgICAgIH1cblxuICAgICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUge1xuICAgICAgICBjb2xvcjogJG91dGxpbmUtY29sb3ItZGlzYWJsZWQ7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vIFVzZWQgdG8gbWFrZSBpbnN0YW5jZXMgb2YgdGhlIF9tYXQtZm9ybS1maWVsZC1sYWJlbC1mbG9hdGluZyBtaXhpbiBuZWdsaWdpYmx5IGRpZmZlcmVudCxcbi8vIGFuZCBwcmV2ZW50IEdvb2dsZSdzIENTUyBPcHRpbWl6ZXIgZnJvbSBjb2xsYXBzaW5nIHRoZSBkZWNsYXJhdGlvbnMuIFRoaXMgaXMgbmVlZGVkIGJlY2F1c2Ugc29tZVxuLy8gb2YgdGhlIHNlbGVjdG9ycyBjb250YWluIHBzZXVkby1jbGFzc2VzIG5vdCByZWNvZ25pemVkIGluIGFsbCBicm93c2Vycy4gSWYgYSBicm93c2VyIGVuY291bnRlcnNcbi8vIGFuIHVua25vd24gcHNldWRvLWNsYXNzIGl0IHdpbGwgZGlzY2FyZCB0aGUgZW50aXJlIHJ1bGUgc2V0LlxuJG91dGxpbmUtZGVkdXBlOiAwO1xuXG4vLyBBcHBsaWVzIGEgZmxvYXRpbmcgbGFiZWwgYWJvdmUgdGhlIGZvcm0gZmllbGQgY29udHJvbCBpdHNlbGYuXG5AbWl4aW4gX2xhYmVsLWZsb2F0aW5nKCRmb250LXNjYWxlLCAkaW5maXgtcGFkZGluZywgJGluZml4LW1hcmdpbi10b3ApIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0kaW5maXgtbWFyZ2luLXRvcCAtICRpbmZpeC1wYWRkaW5nICsgJG91dGxpbmUtZGVkdXBlKVxuICBzY2FsZSgkZm9udC1zY2FsZSk7XG4gIHdpZHRoOiAxMDAlIC8gJGZvbnQtc2NhbGUgKyAkb3V0bGluZS1kZWR1cGU7XG5cbiAgJG91dGxpbmUtZGVkdXBlOiAkb3V0bGluZS1kZWR1cGUgKyAwLjAwMDAxICFnbG9iYWw7XG59XG5cbkBtaXhpbiBvdXRsaW5lLXR5cG9ncmFwaHkoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0eXBvZ3JhcGh5LnByaXZhdGUtdHlwb2dyYXBoeS10by0yMDE0LWNvbmZpZyhcbiAgICAgIHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCRjb25maWctb3ItdGhlbWUpKTtcbiAgLy8gVGhlIHVuaXQtbGVzcyBsaW5lLWhlaWdodCBmcm9tIHRoZSBmb250IGNvbmZpZy5cbiAgJGxpbmUtaGVpZ2h0OiB0eXBvZ3JhcGh5LXV0aWxzLmxpbmUtaGVpZ2h0KCRjb25maWcsIGlucHV0KTtcbiAgLy8gVGhlIGFtb3VudCB0byBzY2FsZSB0aGUgZm9udCBmb3IgdGhlIGZsb2F0aW5nIGxhYmVsIGFuZCBzdWJzY3JpcHQuXG4gICRzdWJzY3JpcHQtZm9udC1zY2FsZTogMC43NTtcbiAgLy8gVGhlIHBhZGRpbmcgYWJvdmUgYW5kIGJlbG93IHRoZSBpbmZpeC5cbiAgJGluZml4LXBhZGRpbmc6IDFlbTtcbiAgLy8gVGhlIG1hcmdpbiBhcHBsaWVkIHRvIHRoZSBmb3JtLWZpZWxkLWluZml4IHRvIHJlc2VydmUgc3BhY2UgZm9yIHRoZSBmbG9hdGluZyBsYWJlbC5cbiAgJGluZml4LW1hcmdpbi10b3A6IDFlbSAqICRsaW5lLWhlaWdodCAqICRzdWJzY3JpcHQtZm9udC1zY2FsZTtcbiAgLy8gVGhlIHNwYWNlIGJldHdlZW4gdGhlIGJvdHRvbSBvZiB0aGUgLm1hdC1mb3JtLWZpZWxkLWZsZXggYXJlYSBhbmQgdGhlIHN1YnNjcmlwdCB3cmFwcGVyLlxuICAvLyBNb2NrcyBzaG93IGhhbGYgb2YgdGhlIHRleHQgc2l6ZSwgYnV0IHRoaXMgbWFyZ2luIGlzIGFwcGxpZWQgdG8gYW4gZWxlbWVudCB3aXRoIHRoZSBzdWJzY3JpcHRcbiAgLy8gdGV4dCBmb250IHNpemUsIHNvIHdlIG5lZWQgdG8gZGl2aWRlIGJ5IHRoZSBzY2FsZSBmYWN0b3IgdG8gbWFrZSBpdCBoYWxmIG9mIHRoZSBvcmlnaW5hbCB0ZXh0XG4gIC8vIHNpemUuXG4gICRzdWJzY3JpcHQtbWFyZ2luLXRvcDogMC41ZW0gLyAkc3Vic2NyaXB0LWZvbnQtc2NhbGU7XG4gIC8vIFRoZSBwYWRkaW5nIGFwcGxpZWQgdG8gdGhlIGZvcm0tZmllbGQtd3JhcHBlciB0byByZXNlcnZlIHNwYWNlIGZvciB0aGUgc3Vic2NyaXB0LCBzaW5jZSBpdCdzXG4gIC8vIGFic29sdXRlbHkgcG9zaXRpb25lZC4gVGhpcyBpcyBhIGNvbWJpbmF0aW9uIG9mIHRoZSBzdWJzY3JpcHQncyBtYXJnaW4gYW5kIGxpbmUtaGVpZ2h0LCBidXQgd2VcbiAgLy8gbmVlZCB0byBtdWx0aXBseSBieSB0aGUgc3Vic2NyaXB0IGZvbnQgc2NhbGUgZmFjdG9yIHNpbmNlIHRoZSB3cmFwcGVyIGhhcyBhIGxhcmdlciBmb250IHNpemUuXG4gICR3cmFwcGVyLXBhZGRpbmctYm90dG9tOiAoJHN1YnNjcmlwdC1tYXJnaW4tdG9wICsgJGxpbmUtaGVpZ2h0KSAqICRzdWJzY3JpcHQtZm9udC1zY2FsZTtcbiAgLy8gVGhlIGFtb3VudCB3ZSBvZmZzZXQgdGhlIGxhYmVsIGZyb20gdGhlIGlucHV0IHRleHQgaW4gdGhlIG91dGxpbmUgYXBwZWFyYW5jZS5cbiAgJG91dGxpbmUtYXBwZWFyYW5jZS1sYWJlbC1vZmZzZXQ6IC0wLjI1ZW07XG5cbiAgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZSB7XG4gICAgLm1hdC1mb3JtLWZpZWxkLWluZml4IHtcbiAgICAgIHBhZGRpbmc6ICRpbmZpeC1wYWRkaW5nIDAgJGluZml4LXBhZGRpbmcgMDtcbiAgICB9XG5cbiAgICAubWF0LWZvcm0tZmllbGQtbGFiZWwge1xuICAgICAgdG9wOiAkaW5maXgtbWFyZ2luLXRvcCArICRpbmZpeC1wYWRkaW5nO1xuICAgICAgbWFyZ2luLXRvcDogJG91dGxpbmUtYXBwZWFyYW5jZS1sYWJlbC1vZmZzZXQ7XG4gICAgfVxuXG4gICAgJi5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQge1xuICAgICAgJi5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXQgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLFxuICAgICAgLm1hdC1pbnB1dC1zZXJ2ZXI6Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWwge1xuICAgICAgICBAaW5jbHVkZSBfbGFiZWwtZmxvYXRpbmcoXG4gICAgICAgICAgICAgICAgJHN1YnNjcmlwdC1mb250LXNjYWxlLCAkaW5maXgtcGFkZGluZyArICRvdXRsaW5lLWFwcGVhcmFuY2UtbGFiZWwtb2Zmc2V0LFxuICAgICAgICAgICAgICAgICRpbmZpeC1tYXJnaW4tdG9wKTtcbiAgICAgIH1cblxuICAgICAgLy8gU2VydmVyLXNpZGUgcmVuZGVyZWQgbWF0SW5wdXQgd2l0aCBhIGxhYmVsIGF0dHJpYnV0ZSBidXQgbGFiZWwgbm90IHNob3duXG4gICAgICAvLyAodXNlZCBhcyBhIHB1cmUgQ1NTIHN0YW5kLWluIGZvciBtYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXQpLlxuICAgICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJcbiAgICAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbCB7XG4gICAgICAgIEBpbmNsdWRlIF9sYWJlbC1mbG9hdGluZyhcbiAgICAgICAgICAgICAgICAkc3Vic2NyaXB0LWZvbnQtc2NhbGUsICRpbmZpeC1wYWRkaW5nICsgJG91dGxpbmUtYXBwZWFyYW5jZS1sYWJlbC1vZmZzZXQsXG4gICAgICAgICAgICAgICAgJGluZml4LW1hcmdpbi10b3ApO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gcHJpdmF0ZS1mb3JtLWZpZWxkLW91dGxpbmUtZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gb3V0bGluZS10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKSB7XG4gICR0aGVtZTogdGhlbWluZy5wcml2YXRlLWxlZ2FjeS1nZXQtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZyk7XG4gIEBpbmNsdWRlIHRoZW1pbmcucHJpdmF0ZS1jaGVjay1kdXBsaWNhdGUtdGhlbWUtc3R5bGVzKCR0aGVtZSwgJ21hdC1mb3JtLWZpZWxkLW91dGxpbmUnKSB7XG4gICAgJGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJHRoZW1lKTtcbiAgICAkZGVuc2l0eTogdGhlbWluZy5nZXQtZGVuc2l0eS1jb25maWcoJHRoZW1lKTtcbiAgICAkdHlwb2dyYXBoeTogdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJHRoZW1lKTtcblxuICAgIEBpZiAkY29sb3IgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBvdXRsaW5lLWNvbG9yKCRjb2xvcik7XG4gICAgfVxuICAgIEBpZiAkZGVuc2l0eSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIHByaXZhdGUtZm9ybS1maWVsZC1vdXRsaW5lLWRlbnNpdHkoJGRlbnNpdHkpO1xuICAgIH1cbiAgICBAaWYgJHR5cG9ncmFwaHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBvdXRsaW5lLXR5cG9ncmFwaHkoJHR5cG9ncmFwaHkpO1xuICAgIH1cbiAgfVxufVxuXG4iLCJAdXNlICcuLi9jb3JlL3RoZW1pbmcvdGhlbWluZyc7XG5AdXNlICcuLi9jb3JlL3R5cG9ncmFwaHkvdHlwb2dyYXBoeSc7XG5AdXNlICcuLi9jb3JlL3R5cG9ncmFwaHkvdHlwb2dyYXBoeS11dGlscyc7XG5AdXNlICcuLi9jb3JlL3N0eWxlL2xpc3QtY29tbW9uJztcblxuXG4vLyBJbmNsdWRlIHRoaXMgZW1wdHkgbWl4aW4gZm9yIGNvbnNpc3RlbmN5IHdpdGggdGhlIG90aGVyIGNvbXBvbmVudHMuXG5AbWl4aW4gY29sb3IoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIHR5cG9ncmFwaHkoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0eXBvZ3JhcGh5LnByaXZhdGUtdHlwb2dyYXBoeS10by0yMDE0LWNvbmZpZyhcbiAgICAgIHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCRjb25maWctb3ItdGhlbWUpKTtcbiAgLm1hdC1ncmlkLXRpbGUtaGVhZGVyLFxuICAubWF0LWdyaWQtdGlsZS1mb290ZXIge1xuICAgIEBpbmNsdWRlIGxpc3QtY29tbW9uLmJhc2UodHlwb2dyYXBoeS11dGlscy5mb250LXNpemUoJGNvbmZpZywgY2FwdGlvbikpO1xuICAgIGZvbnQtc2l6ZTogdHlwb2dyYXBoeS11dGlscy5mb250LXNpemUoJGNvbmZpZywgYm9keS0xKTtcbiAgfVxufVxuXG5AbWl4aW4gX2RlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIHRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiB0aGVtaW5nLnByaXZhdGUtbGVnYWN5LWdldC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgQGluY2x1ZGUgdGhlbWluZy5wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LWdyaWQtbGlzdCcpIHtcbiAgICAkY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkdGhlbWUpO1xuICAgICRkZW5zaXR5OiB0aGVtaW5nLmdldC1kZW5zaXR5LWNvbmZpZygkdGhlbWUpO1xuICAgICR0eXBvZ3JhcGh5OiB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkdGhlbWUpO1xuXG4gICAgQGlmICRjb2xvciAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIGNvbG9yKCRjb2xvcik7XG4gICAgfVxuICAgIEBpZiAkZGVuc2l0eSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIF9kZW5zaXR5KCRkZW5zaXR5KTtcbiAgICB9XG4gICAgQGlmICR0eXBvZ3JhcGh5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgdHlwb2dyYXBoeSgkdHlwb2dyYXBoeSk7XG4gICAgfVxuICB9XG59XG4iLCIvLyBUaGlzIG1peGluIHdpbGwgZW5zdXJlIHRoYXQgbGluZXMgdGhhdCBvdmVyZmxvdyB0aGUgY29udGFpbmVyIHdpbGwgaGlkZSB0aGUgb3ZlcmZsb3cgYW5kXG4vLyB0cnVuY2F0ZSBuZWF0bHkgd2l0aCBhbiBlbGxpcHNpcy5cbkBtaXhpbiB0cnVuY2F0ZS1saW5lKCkge1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbn1cblxuLy8gTWl4aW4gdG8gcHJvdmlkZSBhbGwgbWF0LWxpbmUgc3R5bGVzLCBjaGFuZ2luZyBzZWNvbmRhcnkgZm9udCBzaXplIGJhc2VkIG9uIHdoZXRoZXIgdGhlIGxpc3Rcbi8vIGlzIGluIGRlbnNlIG1vZGUuXG5AbWl4aW4gYmFzZSgkc2Vjb25kYXJ5LWZvbnQtc2l6ZSkge1xuICAubWF0LWxpbmUge1xuICAgIEBpbmNsdWRlIHRydW5jYXRlLWxpbmUoKTtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuXG4gICAgLy8gYWxsIGxpbmVzIGJ1dCB0aGUgdG9wIGxpbmUgc2hvdWxkIGhhdmUgc21hbGxlciB0ZXh0XG4gICAgJjpudGgtY2hpbGQobisyKSB7XG4gICAgICBmb250LXNpemU6ICRzZWNvbmRhcnktZm9udC1zaXplO1xuICAgIH1cbiAgfVxufVxuXG4vLyBUaGlzIG1peGluIG5vcm1hbGl6ZXMgZGVmYXVsdCBlbGVtZW50IHN0eWxlcywgZS5nLiBmb250IHdlaWdodCBmb3IgaGVhZGluZyB0ZXh0LlxuQG1peGluIG5vcm1hbGl6ZS10ZXh0KCkge1xuICAmID4gKiB7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICBmb250LXNpemU6IGluaGVyaXQ7XG4gIH1cbn1cblxuLy8gVGhpcyBtaXhpbiBwcm92aWRlcyBiYXNlIHN0eWxlcyBmb3IgdGhlIHdyYXBwZXIgYXJvdW5kIG1hdC1saW5lIGVsZW1lbnRzIGluIGEgbGlzdC5cbkBtaXhpbiB3cmFwcGVyLWJhc2UoKSB7XG4gIEBpbmNsdWRlIG5vcm1hbGl6ZS10ZXh0KCk7XG5cbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgZmxleDogYXV0bztcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAvLyBNdXN0IHJlbW92ZSB3cmFwcGVyIHdoZW4gbGluZXMgYXJlIGVtcHR5IG9yIGl0IHRha2VzIHVwIGhvcml6b250YWxcbiAgLy8gc3BhY2UgYW5kIHB1c2hlcyBvdGhlciBlbGVtZW50cyB0byB0aGUgcmlnaHQuXG4gICY6ZW1wdHkge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cbiIsIkB1c2UgJ3Nhc3M6bWFwJztcbkB1c2UgJy4uL2NvcmUvdGhlbWluZy9wYWxldHRlJztcbkB1c2UgJy4uL2NvcmUvdGhlbWluZy90aGVtaW5nJztcbkB1c2UgJy4uL2NvcmUvc3R5bGUvZm9ybS1jb21tb24nO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHknO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHktdXRpbHMnO1xuQHVzZSAnLi4vY29yZS9zdHlsZS92ZW5kb3ItcHJlZml4ZXMnO1xuXG5cbkBtaXhpbiBjb2xvcigkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJHByaW1hcnk6IG1hcC5nZXQoJGNvbmZpZywgcHJpbWFyeSk7XG4gICRhY2NlbnQ6IG1hcC5nZXQoJGNvbmZpZywgYWNjZW50KTtcbiAgJHdhcm46IG1hcC5nZXQoJGNvbmZpZywgd2Fybik7XG4gICRmb3JlZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGZvcmVncm91bmQpO1xuXG4gIC5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0IC5tYXQtZm9ybS1maWVsZC1pbmZpeDo6YWZ0ZXIge1xuICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIHNlY29uZGFyeS10ZXh0KTtcbiAgfVxuXG4gIC5tYXQtaW5wdXQtZWxlbWVudDpkaXNhYmxlZCxcbiAgLm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQgLm1hdC1mb3JtLWZpZWxkLWluZml4OjphZnRlciB7XG4gICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgZGlzYWJsZWQtdGV4dCk7XG4gIH1cblxuICAubWF0LWlucHV0LWVsZW1lbnQge1xuICAgIGNhcmV0LWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHByaW1hcnksIHRleHQpO1xuXG4gICAgQGluY2x1ZGUgdmVuZG9yLXByZWZpeGVzLmlucHV0LXBsYWNlaG9sZGVyIHtcbiAgICAgIGNvbG9yOiBmb3JtLWNvbW1vbi5wcml2YXRlLWNvbnRyb2wtcGxhY2Vob2xkZXItY29sb3IoJGNvbmZpZyk7XG4gICAgfVxuXG4gICAgLy8gT24gZGFyayB0aGVtZXMgd2Ugc2V0IHRoZSBuYXRpdmUgYHNlbGVjdGAgY29sb3IgdG8gc29tZSBzaGFkZSBvZiB3aGl0ZSxcbiAgICAvLyBob3dldmVyIHRoZSBjb2xvciBwcm9wYWdhdGVzIHRvIGFsbCBvZiB0aGUgYG9wdGlvbmAgZWxlbWVudHMsIHdoaWNoIGFyZVxuICAgIC8vIGFsd2F5cyBvbiBhIHdoaXRlIGJhY2tncm91bmQgaW5zaWRlIHRoZSBkcm9wZG93biwgY2F1c2luZyB0aGVtIHRvIGJsZW5kIGluLlxuICAgIC8vIFNpbmNlIHdlIGNhbid0IGNoYW5nZSBiYWNrZ3JvdW5kIG9mIHRoZSBkcm9wZG93biwgd2UgbmVlZCB0byBleHBsaWNpdGx5XG4gICAgLy8gcmVzZXQgdGhlIGNvbG9yIG9mIHRoZSBvcHRpb25zIHRvIHNvbWV0aGluZyBkYXJrLlxuICAgIEBpZiAobWFwLmdldCgkY29uZmlnLCBpcy1kYXJrKSkge1xuICAgICAgb3B0aW9uIHtcbiAgICAgICAgY29sb3I6IHBhbGV0dGUuJGRhcmstcHJpbWFyeS10ZXh0O1xuICAgICAgfVxuXG4gICAgICBvcHRpb246ZGlzYWJsZWQge1xuICAgICAgICBjb2xvcjogcGFsZXR0ZS4kZGFyay1kaXNhYmxlZC10ZXh0O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5tYXQtZm9ybS1maWVsZC5tYXQtYWNjZW50IC5tYXQtaW5wdXQtZWxlbWVudCB7XG4gICAgY2FyZXQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYWNjZW50LCB0ZXh0KTtcbiAgfVxuXG4gIC5tYXQtZm9ybS1maWVsZC5tYXQtd2FybiAubWF0LWlucHV0LWVsZW1lbnQsXG4gIC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkIC5tYXQtaW5wdXQtZWxlbWVudCB7XG4gICAgY2FyZXQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkd2FybiwgdGV4dCk7XG4gIH1cblxuICAubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkIC5tYXQtZm9ybS1maWVsZC1pbmZpeDo6YWZ0ZXIge1xuICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHdhcm4sIHRleHQpO1xuICB9XG59XG5cbkBtaXhpbiB0eXBvZ3JhcGh5KCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdHlwb2dyYXBoeS5wcml2YXRlLXR5cG9ncmFwaHktdG8tMjAxNC1jb25maWcoXG4gICAgICB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKSk7XG4gIC8vIFRoZSB1bml0LWxlc3MgbGluZS1oZWlnaHQgZnJvbSB0aGUgZm9udCBjb25maWcuXG4gICRsaW5lLWhlaWdodDogdHlwb2dyYXBoeS11dGlscy5saW5lLWhlaWdodCgkY29uZmlnLCBpbnB1dCk7XG5cbiAgLy8gVGhlIGFtb3VudCBvZiBzcGFjZSBiZXR3ZWVuIHRoZSB0b3Agb2YgdGhlIGxpbmUgYW5kIHRoZSB0b3Agb2YgdGhlIGFjdHVhbCB0ZXh0XG4gIC8vIChhcyBhIGZyYWN0aW9uIG9mIHRoZSBmb250LXNpemUpLlxuICAkbGluZS1zcGFjaW5nOiAoJGxpbmUtaGVpZ2h0IC0gMSkgLyAyO1xuXG4gIC8vIDxpbnB1dD4gZWxlbWVudHMgc2VlbSB0byBoYXZlIHRoZWlyIGhlaWdodCBzZXQgc2xpZ2h0bHkgdG9vIGxhcmdlIG9uIFNhZmFyaSBjYXVzaW5nIHRoZSB0ZXh0IHRvXG4gIC8vIGJlIG1pc2FsaWduZWQgdy5yLnQuIHRoZSBwbGFjZWhvbGRlci4gQWRkaW5nIHRoaXMgbWFyZ2luIGNvcnJlY3RzIGl0LlxuICBpbnB1dC5tYXQtaW5wdXQtZWxlbWVudCB7XG4gICAgbWFyZ2luLXRvcDogLSRsaW5lLXNwYWNpbmcgKiAxZW07XG4gIH1cbn1cblxuQG1peGluIF9kZW5zaXR5KCRjb25maWctb3ItdGhlbWUpIHt9XG5cbkBtaXhpbiB0aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKSB7XG4gICR0aGVtZTogdGhlbWluZy5wcml2YXRlLWxlZ2FjeS1nZXQtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZyk7XG4gIEBpbmNsdWRlIHRoZW1pbmcucHJpdmF0ZS1jaGVjay1kdXBsaWNhdGUtdGhlbWUtc3R5bGVzKCR0aGVtZSwgJ21hdC1pbnB1dCcpIHtcbiAgICAkY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkdGhlbWUpO1xuICAgICRkZW5zaXR5OiB0aGVtaW5nLmdldC1kZW5zaXR5LWNvbmZpZygkdGhlbWUpO1xuICAgICR0eXBvZ3JhcGh5OiB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkdGhlbWUpO1xuXG4gICAgQGlmICRjb2xvciAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIGNvbG9yKCRjb2xvcik7XG4gICAgfVxuICAgIEBpZiAkZGVuc2l0eSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIF9kZW5zaXR5KCRkZW5zaXR5KTtcbiAgICB9XG4gICAgQGlmICR0eXBvZ3JhcGh5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgdHlwb2dyYXBoeSgkdHlwb2dyYXBoeSk7XG4gICAgfVxuICB9XG59XG4iLCJAdXNlICdzYXNzOm1hcCc7XG5AdXNlICcuLi9jb3JlL3N0eWxlL3ByaXZhdGUnO1xuQHVzZSAnLi4vY29yZS90aGVtaW5nL3RoZW1pbmcnO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHknO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHktdXRpbHMnO1xuXG5cbkBtaXhpbiBjb2xvcigkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJGJhY2tncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgYmFja2dyb3VuZCk7XG4gICRmb3JlZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGZvcmVncm91bmQpO1xuXG4gIC5tYXQtbWVudS1wYW5lbCB7XG4gICAgQGluY2x1ZGUgcHJpdmF0ZS5wcml2YXRlLXRoZW1lLW92ZXJyaWRhYmxlLWVsZXZhdGlvbig0LCAkY29uZmlnKTtcbiAgICBiYWNrZ3JvdW5kOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGJhY2tncm91bmQsICdjYXJkJyk7XG4gIH1cblxuICAubWF0LW1lbnUtaXRlbSB7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgJ3RleHQnKTtcblxuICAgICZbZGlzYWJsZWRdIHtcbiAgICAgICYsXG4gICAgICAmOjphZnRlcixcbiAgICAgIC5tYXQtaWNvbi1uby1jb2xvciB7XG4gICAgICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsICdkaXNhYmxlZCcpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5tYXQtbWVudS1pdGVtIC5tYXQtaWNvbi1uby1jb2xvcixcbiAgLm1hdC1tZW51LWl0ZW0tc3VibWVudS10cmlnZ2VyOjphZnRlciB7XG4gICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgJ2ljb24nKTtcbiAgfVxuXG4gIC5tYXQtbWVudS1pdGVtOmhvdmVyLFxuICAubWF0LW1lbnUtaXRlbS5jZGstcHJvZ3JhbS1mb2N1c2VkLFxuICAubWF0LW1lbnUtaXRlbS5jZGsta2V5Ym9hcmQtZm9jdXNlZCxcbiAgLm1hdC1tZW51LWl0ZW0taGlnaGxpZ2h0ZWQge1xuICAgICY6bm90KFtkaXNhYmxlZF0pIHtcbiAgICAgIGJhY2tncm91bmQ6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYmFja2dyb3VuZCwgJ2hvdmVyJyk7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiB0eXBvZ3JhcGh5KCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdHlwb2dyYXBoeS5wcml2YXRlLXR5cG9ncmFwaHktdG8tMjAxNC1jb25maWcoXG4gICAgICB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKSk7XG4gIC5tYXQtbWVudS1pdGVtIHtcbiAgICBmb250OiB7XG4gICAgICBmYW1pbHk6IHR5cG9ncmFwaHktdXRpbHMuZm9udC1mYW1pbHkoJGNvbmZpZywgYm9keS0xKTtcbiAgICAgIHNpemU6IHR5cG9ncmFwaHktdXRpbHMuZm9udC1zaXplKCRjb25maWcsIGJvZHktMSk7XG4gICAgICB3ZWlnaHQ6IHR5cG9ncmFwaHktdXRpbHMuZm9udC13ZWlnaHQoJGNvbmZpZywgYm9keS0xKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIF9kZW5zaXR5KCRjb25maWctb3ItdGhlbWUpIHt9XG5cbkBtaXhpbiB0aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKSB7XG4gICR0aGVtZTogdGhlbWluZy5wcml2YXRlLWxlZ2FjeS1nZXQtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZyk7XG4gIEBpbmNsdWRlIHRoZW1pbmcucHJpdmF0ZS1jaGVjay1kdXBsaWNhdGUtdGhlbWUtc3R5bGVzKCR0aGVtZSwgJ21hdC1tZW51Jykge1xuICAgICRjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgJGRlbnNpdHk6IHRoZW1pbmcuZ2V0LWRlbnNpdHktY29uZmlnKCR0aGVtZSk7XG4gICAgJHR5cG9ncmFwaHk6IHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCR0aGVtZSk7XG5cbiAgICBAaWYgJGNvbG9yICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgX2RlbnNpdHkoJGRlbnNpdHkpO1xuICAgIH1cbiAgICBAaWYgJHR5cG9ncmFwaHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5KCR0eXBvZ3JhcGh5KTtcbiAgICB9XG4gIH1cbn1cblxuIiwiQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnLi4vY29yZS90aGVtaW5nL3RoZW1pbmcnO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHknO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHktdXRpbHMnO1xuQHVzZSAnLi4vY29yZS9kZW5zaXR5L3ByaXZhdGUvY29tcGF0aWJpbGl0eSc7XG5AdXNlICcuL3BhZ2luYXRvci12YXJpYWJsZXMnO1xuXG5AbWl4aW4gY29sb3IoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRmb3JlZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGZvcmVncm91bmQpO1xuICAkYmFja2dyb3VuZDogbWFwLmdldCgkY29uZmlnLCBiYWNrZ3JvdW5kKTtcblxuICAubWF0LXBhZ2luYXRvciB7XG4gICAgYmFja2dyb3VuZDogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLCAnY2FyZCcpO1xuICB9XG5cbiAgLm1hdC1wYWdpbmF0b3IsXG4gIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZSAubWF0LXNlbGVjdC10cmlnZ2VyIHtcbiAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBzZWNvbmRhcnktdGV4dCk7XG4gIH1cblxuICAubWF0LXBhZ2luYXRvci1kZWNyZW1lbnQsXG4gIC5tYXQtcGFnaW5hdG9yLWluY3JlbWVudCB7XG4gICAgYm9yZGVyLXRvcDogMnB4IHNvbGlkIHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgJ2ljb24nKTtcbiAgICBib3JkZXItcmlnaHQ6IDJweCBzb2xpZCB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsICdpY29uJyk7XG4gIH1cblxuICAubWF0LXBhZ2luYXRvci1maXJzdCxcbiAgLm1hdC1wYWdpbmF0b3ItbGFzdCB7XG4gICAgYm9yZGVyLXRvcDogMnB4IHNvbGlkIHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgJ2ljb24nKTtcbiAgfVxuXG4gIC5tYXQtaWNvbi1idXR0b25bZGlzYWJsZWRdIHtcbiAgICAubWF0LXBhZ2luYXRvci1kZWNyZW1lbnQsXG4gICAgLm1hdC1wYWdpbmF0b3ItaW5jcmVtZW50LFxuICAgIC5tYXQtcGFnaW5hdG9yLWZpcnN0LFxuICAgIC5tYXQtcGFnaW5hdG9yLWxhc3Qge1xuICAgICAgYm9yZGVyLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsICdkaXNhYmxlZCcpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gdHlwb2dyYXBoeSgkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHR5cG9ncmFwaHkucHJpdmF0ZS10eXBvZ3JhcGh5LXRvLTIwMTQtY29uZmlnKFxuICAgICAgdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJGNvbmZpZy1vci10aGVtZSkpO1xuICAubWF0LXBhZ2luYXRvcixcbiAgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplIC5tYXQtc2VsZWN0LXRyaWdnZXIge1xuICAgIGZvbnQ6IHtcbiAgICAgIGZhbWlseTogdHlwb2dyYXBoeS11dGlscy5mb250LWZhbWlseSgkY29uZmlnLCBjYXB0aW9uKTtcbiAgICAgIHNpemU6IHR5cG9ncmFwaHktdXRpbHMuZm9udC1zaXplKCRjb25maWcsIGNhcHRpb24pO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRkZW5zaXR5LXNjYWxlOiB0aGVtaW5nLmdldC1kZW5zaXR5LWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJGhlaWdodDogY29tcGF0aWJpbGl0eS5wcml2YXRlLWRlbnNpdHktcHJvcC12YWx1ZShwYWdpbmF0b3ItdmFyaWFibGVzLiRkZW5zaXR5LWNvbmZpZyxcbiAgICAkZGVuc2l0eS1zY2FsZSwgaGVpZ2h0KTtcblxuICBAaW5jbHVkZSBjb21wYXRpYmlsaXR5LnByaXZhdGUtZGVuc2l0eS1sZWdhY3ktY29tcGF0aWJpbGl0eSgpIHtcbiAgICAubWF0LXBhZ2luYXRvci1jb250YWluZXIge1xuICAgICAgbWluLWhlaWdodDogJGhlaWdodDtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiB0aGVtaW5nLnByaXZhdGUtbGVnYWN5LWdldC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgQGluY2x1ZGUgdGhlbWluZy5wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LXBhZ2luYXRvcicpIHtcbiAgICAkY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkdGhlbWUpO1xuICAgICRkZW5zaXR5OiB0aGVtaW5nLmdldC1kZW5zaXR5LWNvbmZpZygkdGhlbWUpO1xuICAgICR0eXBvZ3JhcGh5OiB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkdGhlbWUpO1xuXG4gICAgQGlmICRjb2xvciAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIGNvbG9yKCRjb2xvcik7XG4gICAgfVxuICAgIEBpZiAkZGVuc2l0eSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIGRlbnNpdHkoJGRlbnNpdHkpO1xuICAgIH1cbiAgICBAaWYgJHR5cG9ncmFwaHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5KCR0eXBvZ3JhcGh5KTtcbiAgICB9XG4gIH1cbn1cbiIsIkB1c2UgJ3Nhc3M6bWFwJztcbkB1c2UgJy4uL2NvcmUvdGhlbWluZy90aGVtaW5nJztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5JztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5LXV0aWxzJztcblxuQG1peGluIF9jb2xvcigkcGFsZXR0ZSkge1xuICAmLm1hdC1yYWRpby1jaGVja2VkIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlIHtcbiAgICBib3JkZXItY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkcGFsZXR0ZSk7XG4gIH1cblxuICAubWF0LXJhZGlvLWlubmVyLWNpcmNsZSxcbiAgLm1hdC1yYWRpby1yaXBwbGUgLm1hdC1yaXBwbGUtZWxlbWVudDpub3QoLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZSksXG4gICYubWF0LXJhZGlvLWNoZWNrZWQgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZSxcbiAgJjphY3RpdmUgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRwYWxldHRlKTtcbiAgfVxufVxuXG5AbWl4aW4gY29sb3IoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRwcmltYXJ5OiBtYXAuZ2V0KCRjb25maWcsIHByaW1hcnkpO1xuICAkYWNjZW50OiBtYXAuZ2V0KCRjb25maWcsIGFjY2VudCk7XG4gICR3YXJuOiBtYXAuZ2V0KCRjb25maWcsIHdhcm4pO1xuICAkYmFja2dyb3VuZDogbWFwLmdldCgkY29uZmlnLCBiYWNrZ3JvdW5kKTtcbiAgJGZvcmVncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgZm9yZWdyb3VuZCk7XG5cbiAgLm1hdC1yYWRpby1vdXRlci1jaXJjbGUge1xuICAgIGJvcmRlci1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBzZWNvbmRhcnktdGV4dCk7XG4gIH1cblxuICAubWF0LXJhZGlvLWJ1dHRvbiB7XG4gICAgJi5tYXQtcHJpbWFyeSB7XG4gICAgICBAaW5jbHVkZSBfY29sb3IoJHByaW1hcnkpO1xuICAgIH1cblxuICAgICYubWF0LWFjY2VudCB7XG4gICAgICBAaW5jbHVkZSBfY29sb3IoJGFjY2VudCk7XG4gICAgfVxuXG4gICAgJi5tYXQtd2FybiB7XG4gICAgICBAaW5jbHVkZSBfY29sb3IoJHdhcm4pO1xuICAgIH1cblxuICAgIC8vIFRoaXMgbmVlZHMgZXh0cmEgc3BlY2lmaWNpdHksIGJlY2F1c2UgdGhlIGNsYXNzZXMgYWJvdmUgYXJlIGNvbWJpbmVkXG4gICAgLy8gKGUuZy4gYC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1hY2NlbnRgKSB3aGljaCBpbmNyZWFzZXMgdGhlaXIgc3BlY2lmaWNpdHkgYSBsb3QuXG4gICAgLy8gVE9ETzogY29uc2lkZXIgbWFraW5nIHRoZSBzZWxlY3RvcnMgaW50byBkZXNjZW5kYW50cyAoYC5tYXQtcHJpbWFyeSAubWF0LXJhZGlvLWJ1dHRvbmApLlxuICAgICYubWF0LXJhZGlvLWRpc2FibGVkIHtcbiAgICAgICYubWF0LXJhZGlvLWNoZWNrZWQgLm1hdC1yYWRpby1vdXRlci1jaXJjbGUsXG4gICAgICAubWF0LXJhZGlvLW91dGVyLWNpcmNsZSB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBkaXNhYmxlZCk7XG4gICAgICB9XG5cbiAgICAgIC5tYXQtcmFkaW8tcmlwcGxlIC5tYXQtcmlwcGxlLWVsZW1lbnQsXG4gICAgICAubWF0LXJhZGlvLWlubmVyLWNpcmNsZSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgZGlzYWJsZWQpO1xuICAgICAgfVxuXG4gICAgICAubWF0LXJhZGlvLWxhYmVsLWNvbnRlbnQge1xuICAgICAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBkaXNhYmxlZCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gU3dpdGNoIHRoaXMgdG8gYSBzb2xpZCBjb2xvciBzaW5jZSB3ZSdyZSB1c2luZyBgb3BhY2l0eWBcbiAgICAvLyB0byBjb250cm9sIGhvdyBvcGFxdWUgdGhlIHJpcHBsZSBzaG91bGQgYmUuXG4gICAgLm1hdC1yaXBwbGUtZWxlbWVudCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBtYXAuZ2V0KCRmb3JlZ3JvdW5kLCBiYXNlKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHR5cG9ncmFwaHkoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0eXBvZ3JhcGh5LnByaXZhdGUtdHlwb2dyYXBoeS10by0yMDE0LWNvbmZpZyhcbiAgICAgIHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCRjb25maWctb3ItdGhlbWUpKTtcbiAgLm1hdC1yYWRpby1idXR0b24ge1xuICAgIGZvbnQtZmFtaWx5OiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtZmFtaWx5KCRjb25maWcpO1xuICB9XG59XG5cbkBtaXhpbiBfZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZykge1xuICAkdGhlbWU6IHRoZW1pbmcucHJpdmF0ZS1sZWdhY3ktZ2V0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICBAaW5jbHVkZSB0aGVtaW5nLnByaXZhdGUtY2hlY2stZHVwbGljYXRlLXRoZW1lLXN0eWxlcygkdGhlbWUsICdtYXQtcmFkaW8nKSB7XG4gICAgJGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJHRoZW1lKTtcbiAgICAkZGVuc2l0eTogdGhlbWluZy5nZXQtZGVuc2l0eS1jb25maWcoJHRoZW1lKTtcbiAgICAkdHlwb2dyYXBoeTogdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJHRoZW1lKTtcblxuICAgIEBpZiAkY29sb3IgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBjb2xvcigkY29sb3IpO1xuICAgIH1cbiAgICBAaWYgJGRlbnNpdHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBfZGVuc2l0eSgkZGVuc2l0eSk7XG4gICAgfVxuICAgIEBpZiAkdHlwb2dyYXBoeSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIHR5cG9ncmFwaHkoJHR5cG9ncmFwaHkpO1xuICAgIH1cbiAgfVxufVxuIiwiQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnLi4vY29yZS90aGVtaW5nL3RoZW1pbmcnO1xuQHVzZSAnLi4vY29yZS9zdHlsZS9wcml2YXRlJztcbkB1c2UgJy4uL2NvcmUvc3R5bGUvZm9ybS1jb21tb24nO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHknO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHktdXRpbHMnO1xuXG5cbkBtaXhpbiBjb2xvcigkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJGZvcmVncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgZm9yZWdyb3VuZCk7XG4gICRiYWNrZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGJhY2tncm91bmQpO1xuICAkcHJpbWFyeTogbWFwLmdldCgkY29uZmlnLCBwcmltYXJ5KTtcbiAgJGFjY2VudDogbWFwLmdldCgkY29uZmlnLCBhY2NlbnQpO1xuICAkd2FybjogbWFwLmdldCgkY29uZmlnLCB3YXJuKTtcblxuICAubWF0LXNlbGVjdC12YWx1ZSB7XG4gICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgdGV4dCk7XG4gIH1cblxuICAubWF0LXNlbGVjdC1wbGFjZWhvbGRlciB7XG4gICAgY29sb3I6IGZvcm0tY29tbW9uLnByaXZhdGUtY29udHJvbC1wbGFjZWhvbGRlci1jb2xvcigkY29uZmlnKTtcbiAgfVxuXG4gIC5tYXQtc2VsZWN0LWRpc2FibGVkIC5tYXQtc2VsZWN0LXZhbHVlIHtcbiAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBkaXNhYmxlZC10ZXh0KTtcbiAgfVxuXG4gIC5tYXQtc2VsZWN0LWFycm93IHtcbiAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBzZWNvbmRhcnktdGV4dCk7XG4gIH1cblxuICAubWF0LXNlbGVjdC1wYW5lbCB7XG4gICAgYmFja2dyb3VuZDogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLCBjYXJkKTtcbiAgICBAaW5jbHVkZSBwcml2YXRlLnByaXZhdGUtdGhlbWUtb3ZlcnJpZGFibGUtZWxldmF0aW9uKDQsICRjb25maWcpO1xuXG4gICAgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkOm5vdCgubWF0LW9wdGlvbi1tdWx0aXBsZSkge1xuICAgICAgYmFja2dyb3VuZDogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLCBob3ZlciwgMC4xMik7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1mb3JtLWZpZWxkIHtcbiAgICAmLm1hdC1mb2N1c2VkIHtcbiAgICAgICYubWF0LXByaW1hcnkgLm1hdC1zZWxlY3QtYXJyb3cge1xuICAgICAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRwcmltYXJ5LCB0ZXh0KTtcbiAgICAgIH1cblxuICAgICAgJi5tYXQtYWNjZW50IC5tYXQtc2VsZWN0LWFycm93IHtcbiAgICAgICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYWNjZW50LCB0ZXh0KTtcbiAgICAgIH1cblxuICAgICAgJi5tYXQtd2FybiAubWF0LXNlbGVjdC1hcnJvdyB7XG4gICAgICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHdhcm4sIHRleHQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC5tYXQtc2VsZWN0Lm1hdC1zZWxlY3QtaW52YWxpZCAubWF0LXNlbGVjdC1hcnJvdyB7XG4gICAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCR3YXJuLCB0ZXh0KTtcbiAgICB9XG5cbiAgICAubWF0LXNlbGVjdC5tYXQtc2VsZWN0LWRpc2FibGVkIC5tYXQtc2VsZWN0LWFycm93IHtcbiAgICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIGRpc2FibGVkLXRleHQpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gdHlwb2dyYXBoeSgkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHR5cG9ncmFwaHkucHJpdmF0ZS10eXBvZ3JhcGh5LXRvLTIwMTQtY29uZmlnKFxuICAgICAgdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJGNvbmZpZy1vci10aGVtZSkpO1xuICAvLyBUaGUgdW5pdC1sZXNzIGxpbmUtaGVpZ2h0IGZyb20gdGhlIGZvbnQgY29uZmlnLlxuICAkbGluZS1oZWlnaHQ6IHR5cG9ncmFwaHktdXRpbHMubGluZS1oZWlnaHQoJGNvbmZpZywgaW5wdXQpO1xuXG4gIC5tYXQtc2VsZWN0IHtcbiAgICBmb250LWZhbWlseTogdHlwb2dyYXBoeS11dGlscy5mb250LWZhbWlseSgkY29uZmlnKTtcbiAgfVxuXG4gIC5tYXQtc2VsZWN0LXRyaWdnZXIge1xuICAgIGhlaWdodDogJGxpbmUtaGVpZ2h0ICogMWVtO1xuICB9XG59XG5cbkBtaXhpbiBfZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZykge1xuICAkdGhlbWU6IHRoZW1pbmcucHJpdmF0ZS1sZWdhY3ktZ2V0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICBAaW5jbHVkZSB0aGVtaW5nLnByaXZhdGUtY2hlY2stZHVwbGljYXRlLXRoZW1lLXN0eWxlcygkdGhlbWUsICdtYXQtc2VsZWN0Jykge1xuICAgICRjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgJGRlbnNpdHk6IHRoZW1pbmcuZ2V0LWRlbnNpdHktY29uZmlnKCR0aGVtZSk7XG4gICAgJHR5cG9ncmFwaHk6IHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCR0aGVtZSk7XG5cbiAgICBAaWYgJGNvbG9yICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgX2RlbnNpdHkoJGRlbnNpdHkpO1xuICAgIH1cbiAgICBAaWYgJHR5cG9ncmFwaHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5KCR0eXBvZ3JhcGh5KTtcbiAgICB9XG4gIH1cbn1cbiIsIkB1c2UgJ3Nhc3M6bWFwJztcbkB1c2UgJy4uL2NvcmUvc3R5bGUvcHJpdmF0ZSc7XG5AdXNlICcuLi9jb3JlL3RoZW1pbmcvcGFsZXR0ZSc7XG5AdXNlICcuLi9jb3JlL3RoZW1pbmcvdGhlbWluZyc7XG5AdXNlICcuLi9jb3JlL3R5cG9ncmFwaHkvdHlwb2dyYXBoeSc7XG5AdXNlICcuLi9jb3JlL3R5cG9ncmFwaHkvdHlwb2dyYXBoeS11dGlscyc7XG5cbkBtaXhpbiBfY2hlY2tlZC1jb2xvcigkcGFsZXR0ZSwgJHRodW1iLWNoZWNrZWQtaHVlKSB7XG4gICYubWF0LWNoZWNrZWQge1xuICAgIC5tYXQtc2xpZGUtdG9nZ2xlLXRodW1iIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkcGFsZXR0ZSwgJHRodW1iLWNoZWNrZWQtaHVlKTtcbiAgICB9XG5cbiAgICAubWF0LXNsaWRlLXRvZ2dsZS1iYXIge1xuICAgICAgLy8gT3BhY2l0eSBpcyBkZXRlcm1pbmVkIGZyb20gdGhlIHNwZWNzIGZvciB0aGUgc2VsZWN0aW9uIGNvbnRyb2xzLlxuICAgICAgLy8gU2VlOiBodHRwczovL21hdGVyaWFsLmlvL2Rlc2lnbi9jb21wb25lbnRzL3NlbGVjdGlvbi1jb250cm9scy5odG1sI3NwZWNzXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHBhbGV0dGUsICR0aHVtYi1jaGVja2VkLWh1ZSwgMC41NCk7XG4gICAgfVxuXG4gICAgLm1hdC1yaXBwbGUtZWxlbWVudCB7XG4gICAgICAvLyBTZXQgbm8gb3BhY2l0eSBmb3IgdGhlIHJpcHBsZXMgYmVjYXVzZSB0aGUgcmlwcGxlIG9wYWNpdHkgd2lsbCBiZSBhZGp1c3RlZCBkeW5hbWljYWxseVxuICAgICAgLy8gYmFzZWQgb24gdGhlIHR5cGUgb2YgaW50ZXJhY3Rpb24gd2l0aCB0aGUgc2xpZGUtdG9nZ2xlIChlLmcuIGZvciBob3ZlciwgZm9jdXMpXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHBhbGV0dGUsICR0aHVtYi1jaGVja2VkLWh1ZSk7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBjb2xvcigkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJGlzLWRhcms6IG1hcC5nZXQoJGNvbmZpZywgaXMtZGFyayk7XG4gICRwcmltYXJ5OiBtYXAuZ2V0KCRjb25maWcsIHByaW1hcnkpO1xuICAkYWNjZW50OiBtYXAuZ2V0KCRjb25maWcsIGFjY2VudCk7XG4gICR3YXJuOiBtYXAuZ2V0KCRjb25maWcsIHdhcm4pO1xuICAkYmFja2dyb3VuZDogbWFwLmdldCgkY29uZmlnLCBiYWNrZ3JvdW5kKTtcbiAgJGZvcmVncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgZm9yZWdyb3VuZCk7XG5cbiAgLy8gQ29sb3IgaHVlcyBhcmUgYmFzZWQgb24gdGhlIHNwZWNzIHdoaWNoIGJyaWVmbHkgc2hvdyB0aGUgaHVlcyB0aGF0IGFyZSBhcHBsaWVkIHRvIGEgc3dpdGNoLlxuICAvLyBUaGUgMjAxOCBzcGVjcyBubyBsb25nZXIgZGVzY3JpYmUgaG93IGRhcmsgc3dpdGNoZXMgc2hvdWxkIGxvb2sgbGlrZS4gRHVlIHRvIHRoZSBsYWNrIG9mXG4gIC8vIGluZm9ybWF0aW9uIGZvciBkYXJrIHRoZW1lZCBzd2l0Y2hlcywgd2UgcGFydGlhbGx5IGtlZXAgdGhlIG9sZCBiZWhhdmlvciB0aGF0IGlzIGJhc2VkIG9uXG4gIC8vIHRoZSBwcmV2aW91cyBzcGVjaWZpY2F0aW9ucy4gRm9yIHRoZSBjaGVja2VkIGNvbG9yIHdlIGFsd2F5cyB1c2UgdGhlIGBkZWZhdWx0YCBodWUgYmVjYXVzZVxuICAvLyB0aGF0IGZvbGxvd3MgTURDIGFuZCBhbHNvIG1ha2VzIGl0IGVhc2llciBmb3IgcGVvcGxlIHRvIGNyZWF0ZSBhIGN1c3RvbSB0aGVtZSB3aXRob3V0IG5lZWRpbmdcbiAgLy8gdG8gc3BlY2lmeSBlYWNoIGh1ZSBpbmRpdmlkdWFsbHkuXG4gICR0aHVtYi11bmNoZWNrZWQtaHVlOiBpZigkaXMtZGFyaywgNDAwLCA1MCk7XG4gICR0aHVtYi1jaGVja2VkLWh1ZTogZGVmYXVsdDtcblxuICAkYmFyLXVuY2hlY2tlZC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBkaXNhYmxlZCk7XG4gICRyaXBwbGUtdW5jaGVja2VkLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIGJhc2UpO1xuXG4gIC5tYXQtc2xpZGUtdG9nZ2xlIHtcbiAgICBAaW5jbHVkZSBfY2hlY2tlZC1jb2xvcigkYWNjZW50LCAkdGh1bWItY2hlY2tlZC1odWUpO1xuXG4gICAgJi5tYXQtcHJpbWFyeSB7XG4gICAgICBAaW5jbHVkZSBfY2hlY2tlZC1jb2xvcigkcHJpbWFyeSwgJHRodW1iLWNoZWNrZWQtaHVlKTtcbiAgICB9XG5cbiAgICAmLm1hdC13YXJuIHtcbiAgICAgIEBpbmNsdWRlIF9jaGVja2VkLWNvbG9yKCR3YXJuLCAkdGh1bWItY2hlY2tlZC1odWUpO1xuICAgIH1cblxuICAgICY6bm90KC5tYXQtY2hlY2tlZCkgLm1hdC1yaXBwbGUtZWxlbWVudCB7XG4gICAgICAvLyBTZXQgbm8gb3BhY2l0eSBmb3IgdGhlIHJpcHBsZXMgYmVjYXVzZSB0aGUgcmlwcGxlIG9wYWNpdHkgd2lsbCBiZSBhZGp1c3RlZCBkeW5hbWljYWxseVxuICAgICAgLy8gYmFzZWQgb24gdGhlIHR5cGUgb2YgaW50ZXJhY3Rpb24gd2l0aCB0aGUgc2xpZGUtdG9nZ2xlIChlLmcuIGZvciBob3ZlciwgZm9jdXMpXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkcmlwcGxlLXVuY2hlY2tlZC1jb2xvcjtcbiAgICB9XG4gIH1cblxuICAubWF0LXNsaWRlLXRvZ2dsZS10aHVtYiB7XG4gICAgQGluY2x1ZGUgcHJpdmF0ZS5wcml2YXRlLXRoZW1lLWVsZXZhdGlvbigxLCAkY29uZmlnKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUocGFsZXR0ZS4kZ3JleS1wYWxldHRlLCAkdGh1bWItdW5jaGVja2VkLWh1ZSk7XG4gIH1cblxuICAubWF0LXNsaWRlLXRvZ2dsZS1iYXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRiYXItdW5jaGVja2VkLWNvbG9yO1xuICB9XG59XG5cbkBtaXhpbiB0eXBvZ3JhcGh5KCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdHlwb2dyYXBoeS5wcml2YXRlLXR5cG9ncmFwaHktdG8tMjAxNC1jb25maWcoXG4gICAgICB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKSk7XG4gIC5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnQge1xuICAgIGZvbnQtZmFtaWx5OiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtZmFtaWx5KCRjb25maWcpO1xuICB9XG59XG5cbkBtaXhpbiBfZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZykge1xuICAkdGhlbWU6IHRoZW1pbmcucHJpdmF0ZS1sZWdhY3ktZ2V0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICBAaW5jbHVkZSB0aGVtaW5nLnByaXZhdGUtY2hlY2stZHVwbGljYXRlLXRoZW1lLXN0eWxlcygkdGhlbWUsICdtYXQtc2xpZGUtdG9nZ2xlJykge1xuICAgICRjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgJGRlbnNpdHk6IHRoZW1pbmcuZ2V0LWRlbnNpdHktY29uZmlnKCR0aGVtZSk7XG4gICAgJHR5cG9ncmFwaHk6IHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCR0aGVtZSk7XG5cbiAgICBAaWYgJGNvbG9yICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgX2RlbnNpdHkoJGRlbnNpdHkpO1xuICAgIH1cbiAgICBAaWYgJHR5cG9ncmFwaHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5KCR0eXBvZ3JhcGh5KTtcbiAgICB9XG4gIH1cbn1cblxuIiwiQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnc2FzczptZXRhJztcbkB1c2UgJy4uL2NvcmUvdGhlbWluZy90aGVtaW5nJztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5JztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5LXV0aWxzJztcblxuQG1peGluIF9pbm5lci1jb250ZW50LXRoZW1lKCRwYWxldHRlKSB7XG4gIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGwsXG4gIC5tYXQtc2xpZGVyLXRodW1iLFxuICAubWF0LXNsaWRlci10aHVtYi1sYWJlbCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRwYWxldHRlKTtcbiAgfVxuXG4gIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHQge1xuICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHBhbGV0dGUsIGRlZmF1bHQtY29udHJhc3QpO1xuICB9XG5cbiAgLm1hdC1zbGlkZXItZm9jdXMtcmluZyB7XG4gICAgJG9wYWNpdHk6IDAuMjtcbiAgICAkY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkcGFsZXR0ZSwgZGVmYXVsdCwgJG9wYWNpdHkpO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvcjtcblxuICAgIC8vIGBtYXQtY29sb3JgIHVzZXMgYHJnYmFgIGZvciB0aGUgb3BhY2l0eSB3aGljaCB3b24ndCB3b3JrIHdpdGhcbiAgICAvLyBDU1MgdmFyaWFibGVzIHNvIHdlIG5lZWQgdG8gdXNlIGBvcGFjaXR5YCBhcyBhIGZhbGxiYWNrLlxuICAgIEBpZiAobWV0YS50eXBlLW9mKCRjb2xvcikgIT0gY29sb3IpIHtcbiAgICAgIG9wYWNpdHk6ICRvcGFjaXR5O1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gY29sb3IoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRwcmltYXJ5OiBtYXAuZ2V0KCRjb25maWcsIHByaW1hcnkpO1xuICAkYWNjZW50OiBtYXAuZ2V0KCRjb25maWcsIGFjY2VudCk7XG4gICR3YXJuOiBtYXAuZ2V0KCRjb25maWcsIHdhcm4pO1xuICAkYmFja2dyb3VuZDogbWFwLmdldCgkY29uZmlnLCBiYWNrZ3JvdW5kKTtcbiAgJGZvcmVncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgZm9yZWdyb3VuZCk7XG5cbiAgJG1hdC1zbGlkZXItb2ZmLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIHNsaWRlci1vZmYpO1xuICAkbWF0LXNsaWRlci1vZmYtZm9jdXNlZC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBzbGlkZXItb2ZmLWFjdGl2ZSk7XG4gICRtYXQtc2xpZGVyLWRpc2FibGVkLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIHNsaWRlci1vZmYpO1xuICAkbWF0LXNsaWRlci1sYWJlbGVkLW1pbi12YWx1ZS10aHVtYi1jb2xvcjpcbiAgICB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIHNsaWRlci1taW4pO1xuICAkbWF0LXNsaWRlci1sYWJlbGVkLW1pbi12YWx1ZS10aHVtYi1sYWJlbC1jb2xvcjpcbiAgICB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIHNsaWRlci1vZmYpO1xuICAkbWF0LXNsaWRlci10aWNrLW9wYWNpdHk6IDAuNztcbiAgJG1hdC1zbGlkZXItdGljay1jb2xvcjpcbiAgICB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIGJhc2UsICRtYXQtc2xpZGVyLXRpY2stb3BhY2l0eSk7XG4gICRtYXQtc2xpZGVyLXRpY2stc2l6ZTogMnB4O1xuXG4gIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmQge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRtYXQtc2xpZGVyLW9mZi1jb2xvcjtcbiAgfVxuXG4gIC5tYXQtcHJpbWFyeSB7XG4gICAgQGluY2x1ZGUgX2lubmVyLWNvbnRlbnQtdGhlbWUoJHByaW1hcnkpO1xuICB9XG5cbiAgLm1hdC1hY2NlbnQge1xuICAgIEBpbmNsdWRlIF9pbm5lci1jb250ZW50LXRoZW1lKCRhY2NlbnQpO1xuICB9XG5cbiAgLm1hdC13YXJuIHtcbiAgICBAaW5jbHVkZSBfaW5uZXItY29udGVudC10aGVtZSgkd2Fybik7XG4gIH1cblxuICAubWF0LXNsaWRlcjpob3ZlcixcbiAgLmNkay1mb2N1c2VkIHtcbiAgICAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5kIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRtYXQtc2xpZGVyLW9mZi1mb2N1c2VkLWNvbG9yO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtc2xpZGVyLWRpc2FibGVkIHtcbiAgICAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5kLFxuICAgIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGwsXG4gICAgLm1hdC1zbGlkZXItdGh1bWIge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJG1hdC1zbGlkZXItZGlzYWJsZWQtY29sb3I7XG4gICAgfVxuXG4gICAgJjpob3ZlciB7XG4gICAgICAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5kIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJG1hdC1zbGlkZXItZGlzYWJsZWQtY29sb3I7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLm1hdC1zbGlkZXItbWluLXZhbHVlIHtcbiAgICAubWF0LXNsaWRlci1mb2N1cy1yaW5nIHtcbiAgICAgICRvcGFjaXR5OiAwLjEyO1xuICAgICAgJGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIGJhc2UsICRvcGFjaXR5KTtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvcjtcblxuICAgICAgLy8gYG1hdC1jb2xvcmAgdXNlcyBgcmdiYWAgZm9yIHRoZSBvcGFjaXR5IHdoaWNoIHdvbid0IHdvcmsgd2l0aFxuICAgICAgLy8gQ1NTIHZhcmlhYmxlcyBzbyB3ZSBuZWVkIHRvIHVzZSBgb3BhY2l0eWAgYXMgYSBmYWxsYmFjay5cbiAgICAgIEBpZiAobWV0YS50eXBlLW9mKCRjb2xvcikgIT0gY29sb3IpIHtcbiAgICAgICAgb3BhY2l0eTogJG9wYWNpdHk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJi5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcge1xuICAgICAgLm1hdC1zbGlkZXItdGh1bWIsXG4gICAgICAubWF0LXNsaWRlci10aHVtYi1sYWJlbCB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRtYXQtc2xpZGVyLWxhYmVsZWQtbWluLXZhbHVlLXRodW1iLWNvbG9yO1xuICAgICAgfVxuXG4gICAgICAmLmNkay1mb2N1c2VkIHtcbiAgICAgICAgLm1hdC1zbGlkZXItdGh1bWIsXG4gICAgICAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsIHtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkbWF0LXNsaWRlci1sYWJlbGVkLW1pbi12YWx1ZS10aHVtYi1sYWJlbC1jb2xvcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICY6bm90KC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcpIHtcbiAgICAgIC5tYXQtc2xpZGVyLXRodW1iIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAkbWF0LXNsaWRlci1vZmYtY29sb3I7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgfVxuXG4gICAgICAmOmhvdmVyLFxuICAgICAgJi5jZGstZm9jdXNlZCB7XG4gICAgICAgIC5tYXQtc2xpZGVyLXRodW1iIHtcbiAgICAgICAgICBib3JkZXItY29sb3I6ICRtYXQtc2xpZGVyLW9mZi1mb2N1c2VkLWNvbG9yO1xuICAgICAgICB9XG5cbiAgICAgICAgJi5tYXQtc2xpZGVyLWRpc2FibGVkIC5tYXQtc2xpZGVyLXRodW1iIHtcbiAgICAgICAgICBib3JkZXItY29sb3I6ICRtYXQtc2xpZGVyLWRpc2FibGVkLWNvbG9yO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLm1hdC1zbGlkZXItaGFzLXRpY2tzIC5tYXQtc2xpZGVyLXdyYXBwZXI6OmFmdGVyIHtcbiAgICBib3JkZXItY29sb3I6ICRtYXQtc2xpZGVyLXRpY2stY29sb3I7XG5cbiAgICAvLyBgbWF0LWNvbG9yYCB1c2VzIGByZ2JhYCBmb3IgdGhlIG9wYWNpdHkgd2hpY2ggd29uJ3Qgd29yayB3aXRoXG4gICAgLy8gQ1NTIHZhcmlhYmxlcyBzbyB3ZSBuZWVkIHRvIHVzZSBgb3BhY2l0eWAgYXMgYSBmYWxsYmFjay5cbiAgICBAaWYgKG1ldGEudHlwZS1vZigkbWF0LXNsaWRlci10aWNrLWNvbG9yKSAhPSBjb2xvcikge1xuICAgICAgb3BhY2l0eTogJG1hdC1zbGlkZXItdGljay1vcGFjaXR5O1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtc2xpZGVyLWhvcml6b250YWwgLm1hdC1zbGlkZXItdGlja3Mge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IHJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQodG8gcmlnaHQsICRtYXQtc2xpZGVyLXRpY2stY29sb3IsXG4gICAgICAgICRtYXQtc2xpZGVyLXRpY2stY29sb3IgJG1hdC1zbGlkZXItdGljay1zaXplLCB0cmFuc3BhcmVudCAwLCB0cmFuc3BhcmVudCk7XG4gICAgLy8gRmlyZWZveCBkb2Vzbid0IGRyYXcgdGhlIGdyYWRpZW50IGNvcnJlY3RseSB3aXRoICd0byByaWdodCdcbiAgICAvLyAoc2VlIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTEzMTQzMTkpLlxuICAgIGJhY2tncm91bmQtaW1hZ2U6IC1tb3otcmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCgwLjAwMDFkZWcsICRtYXQtc2xpZGVyLXRpY2stY29sb3IsXG4gICAgICAgICRtYXQtc2xpZGVyLXRpY2stY29sb3IgJG1hdC1zbGlkZXItdGljay1zaXplLCB0cmFuc3BhcmVudCAwLCB0cmFuc3BhcmVudCk7XG5cbiAgICAvLyBgbWF0LWNvbG9yYCB1c2VzIGByZ2JhYCBmb3IgdGhlIG9wYWNpdHkgd2hpY2ggd29uJ3Qgd29yayB3aXRoXG4gICAgLy8gQ1NTIHZhcmlhYmxlcyBzbyB3ZSBuZWVkIHRvIHVzZSBgb3BhY2l0eWAgYXMgYSBmYWxsYmFjay5cbiAgICBAaWYgKG1ldGEudHlwZS1vZigkbWF0LXNsaWRlci10aWNrLWNvbG9yKSAhPSBjb2xvcikge1xuICAgICAgb3BhY2l0eTogJG1hdC1zbGlkZXItdGljay1vcGFjaXR5O1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtc2xpZGVyLXZlcnRpY2FsIC5tYXQtc2xpZGVyLXRpY2tzIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiByZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgJG1hdC1zbGlkZXItdGljay1jb2xvcixcbiAgICAgICAgJG1hdC1zbGlkZXItdGljay1jb2xvciAkbWF0LXNsaWRlci10aWNrLXNpemUsIHRyYW5zcGFyZW50IDAsIHRyYW5zcGFyZW50KTtcblxuICAgIC8vIGBtYXQtY29sb3JgIHVzZXMgYHJnYmFgIGZvciB0aGUgb3BhY2l0eSB3aGljaCB3b24ndCB3b3JrIHdpdGhcbiAgICAvLyBDU1MgdmFyaWFibGVzIHNvIHdlIG5lZWQgdG8gdXNlIGBvcGFjaXR5YCBhcyBhIGZhbGxiYWNrLlxuICAgIEBpZiAobWV0YS50eXBlLW9mKCRtYXQtc2xpZGVyLXRpY2stY29sb3IpICE9IGNvbG9yKSB7XG4gICAgICBvcGFjaXR5OiAkbWF0LXNsaWRlci10aWNrLW9wYWNpdHk7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiB0eXBvZ3JhcGh5KCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdHlwb2dyYXBoeS5wcml2YXRlLXR5cG9ncmFwaHktdG8tMjAxNC1jb25maWcoXG4gICAgICB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKSk7XG4gIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHQge1xuICAgIGZvbnQ6IHtcbiAgICAgIGZhbWlseTogdHlwb2dyYXBoeS11dGlscy5mb250LWZhbWlseSgkY29uZmlnKTtcbiAgICAgIHNpemU6IHR5cG9ncmFwaHktdXRpbHMuZm9udC1zaXplKCRjb25maWcsIGNhcHRpb24pO1xuICAgICAgd2VpZ2h0OiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtd2VpZ2h0KCRjb25maWcsIGJvZHktMik7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBfZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZykge1xuICAkdGhlbWU6IHRoZW1pbmcucHJpdmF0ZS1sZWdhY3ktZ2V0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICBAaW5jbHVkZSB0aGVtaW5nLnByaXZhdGUtY2hlY2stZHVwbGljYXRlLXRoZW1lLXN0eWxlcygkdGhlbWUsICdtYXQtc2xpZGVyJykge1xuICAgICRjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgJGRlbnNpdHk6IHRoZW1pbmcuZ2V0LWRlbnNpdHktY29uZmlnKCR0aGVtZSk7XG4gICAgJHR5cG9ncmFwaHk6IHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCR0aGVtZSk7XG5cbiAgICBAaWYgJGNvbG9yICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgX2RlbnNpdHkoJGRlbnNpdHkpO1xuICAgIH1cbiAgICBAaWYgJHR5cG9ncmFwaHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5KCR0eXBvZ3JhcGh5KTtcbiAgICB9XG4gIH1cbn1cbiIsIkB1c2UgJ3Nhc3M6bWFwJztcbkB1c2UgJy4uL2NvcmUvdGhlbWluZy90aGVtaW5nJztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5JztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5LXV0aWxzJztcbkB1c2UgJy4uL2NvcmUvZGVuc2l0eS9wcml2YXRlL2NvbXBhdGliaWxpdHknO1xuQHVzZSAnLi9zdGVwcGVyLXZhcmlhYmxlcyc7XG5cbkBtaXhpbiBjb2xvcigkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJGZvcmVncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgZm9yZWdyb3VuZCk7XG4gICRiYWNrZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGJhY2tncm91bmQpO1xuICAkcHJpbWFyeTogbWFwLmdldCgkY29uZmlnLCBwcmltYXJ5KTtcbiAgJGFjY2VudDogbWFwLmdldCgkY29uZmlnLCBhY2NlbnQpO1xuICAkd2FybjogbWFwLmdldCgkY29uZmlnLCB3YXJuKTtcblxuICAubWF0LXN0ZXAtaGVhZGVyIHtcbiAgICAmLmNkay1rZXlib2FyZC1mb2N1c2VkLFxuICAgICYuY2RrLXByb2dyYW0tZm9jdXNlZCxcbiAgICAmOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYmFja2dyb3VuZCwgaG92ZXIpO1xuICAgIH1cblxuICAgIC8vIE9uIHRvdWNoIGRldmljZXMgdGhlIDpob3ZlciBzdGF0ZSB3aWxsIGxpbmdlciBvbiB0aGUgZWxlbWVudCBhZnRlciBhIHRhcC5cbiAgICAvLyBSZXNldCBpdCB2aWEgYEBtZWRpYWAgYWZ0ZXIgdGhlIGRlY2xhcmF0aW9uLCBiZWNhdXNlIHRoZSBtZWRpYSBxdWVyeSBpc24ndFxuICAgIC8vIHN1cHBvcnRlZCBieSBhbGwgYnJvd3NlcnMgeWV0LlxuICAgIEBtZWRpYSAoaG92ZXI6IG5vbmUpIHtcbiAgICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgICAgfVxuICAgIH1cblxuICAgIC5tYXQtc3RlcC1sYWJlbCxcbiAgICAubWF0LXN0ZXAtb3B0aW9uYWwge1xuICAgICAgLy8gVE9ETyhqb3NlcGhwZXJyb3R0KTogVXBkYXRlIHRvIHVzaW5nIGEgY29ycmVjdGVkIGRpc2FibGVkLXRleHQgY29udHJhc3RcbiAgICAgIC8vIGluc3RlYWQgb2Ygc2Vjb25kYXJ5LXRleHQuXG4gICAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBzZWNvbmRhcnktdGV4dCk7XG4gICAgfVxuXG4gICAgLm1hdC1zdGVwLWljb24ge1xuICAgICAgLy8gVE9ETyhqb3NlcGhwZXJyb3R0KTogVXBkYXRlIHRvIHVzaW5nIGEgY29ycmVjdGVkIGRpc2FibGVkLXRleHQgY29udHJhc3RcbiAgICAgIC8vIGluc3RlYWQgb2Ygc2Vjb25kYXJ5LXRleHQuXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIHNlY29uZGFyeS10ZXh0KTtcbiAgICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHByaW1hcnksIGRlZmF1bHQtY29udHJhc3QpO1xuICAgIH1cblxuICAgIC5tYXQtc3RlcC1pY29uLXNlbGVjdGVkLFxuICAgIC5tYXQtc3RlcC1pY29uLXN0YXRlLWRvbmUsXG4gICAgLm1hdC1zdGVwLWljb24tc3RhdGUtZWRpdCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHByaW1hcnkpO1xuICAgICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkcHJpbWFyeSwgZGVmYXVsdC1jb250cmFzdCk7XG4gICAgfVxuXG4gICAgJi5tYXQtYWNjZW50IHtcbiAgICAgIC5tYXQtc3RlcC1pY29uIHtcbiAgICAgICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYWNjZW50LCBkZWZhdWx0LWNvbnRyYXN0KTtcbiAgICAgIH1cblxuICAgICAgLm1hdC1zdGVwLWljb24tc2VsZWN0ZWQsXG4gICAgICAubWF0LXN0ZXAtaWNvbi1zdGF0ZS1kb25lLFxuICAgICAgLm1hdC1zdGVwLWljb24tc3RhdGUtZWRpdCB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYWNjZW50KTtcbiAgICAgICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYWNjZW50LCBkZWZhdWx0LWNvbnRyYXN0KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLm1hdC13YXJuIHtcbiAgICAgIC5tYXQtc3RlcC1pY29uIHtcbiAgICAgICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkd2FybiwgZGVmYXVsdC1jb250cmFzdCk7XG4gICAgICB9XG5cbiAgICAgIC5tYXQtc3RlcC1pY29uLXNlbGVjdGVkLFxuICAgICAgLm1hdC1zdGVwLWljb24tc3RhdGUtZG9uZSxcbiAgICAgIC5tYXQtc3RlcC1pY29uLXN0YXRlLWVkaXQge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHdhcm4pO1xuICAgICAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCR3YXJuLCBkZWZhdWx0LWNvbnRyYXN0KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAubWF0LXN0ZXAtaWNvbi1zdGF0ZS1lcnJvciB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHdhcm4sIHRleHQpO1xuICAgIH1cblxuICAgIC5tYXQtc3RlcC1sYWJlbC5tYXQtc3RlcC1sYWJlbC1hY3RpdmUge1xuICAgICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgdGV4dCk7XG4gICAgfVxuXG4gICAgLm1hdC1zdGVwLWxhYmVsLm1hdC1zdGVwLWxhYmVsLWVycm9yIHtcbiAgICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHdhcm4sIHRleHQpO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsLCAubWF0LXN0ZXBwZXItdmVydGljYWwge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYmFja2dyb3VuZCwgY2FyZCk7XG4gIH1cblxuICAubWF0LXN0ZXBwZXItdmVydGljYWwtbGluZTo6YmVmb3JlIHtcbiAgICBib3JkZXItbGVmdC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBkaXZpZGVyKTtcbiAgfVxuXG4gIC5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlcjo6YmVmb3JlLFxuICAubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXI6OmFmdGVyLFxuICAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbC1saW5lIHtcbiAgICBib3JkZXItdG9wLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIGRpdmlkZXIpO1xuICB9XG59XG5cbkBtaXhpbiB0eXBvZ3JhcGh5KCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdHlwb2dyYXBoeS5wcml2YXRlLXR5cG9ncmFwaHktdG8tMjAxNC1jb25maWcoXG4gICAgICB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKSk7XG4gIC5tYXQtc3RlcHBlci12ZXJ0aWNhbCwgLm1hdC1zdGVwcGVyLWhvcml6b250YWwge1xuICAgIGZvbnQtZmFtaWx5OiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtZmFtaWx5KCRjb25maWcpO1xuICB9XG5cbiAgLm1hdC1zdGVwLWxhYmVsIHtcbiAgICBmb250OiB7XG4gICAgICBzaXplOiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtc2l6ZSgkY29uZmlnLCBib2R5LTEpO1xuICAgICAgd2VpZ2h0OiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtd2VpZ2h0KCRjb25maWcsIGJvZHktMSk7XG4gICAgfTtcbiAgfVxuXG4gIC5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3Ige1xuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIH1cblxuICAubWF0LXN0ZXAtbGFiZWwtZXJyb3Ige1xuICAgIGZvbnQtc2l6ZTogdHlwb2dyYXBoeS11dGlscy5mb250LXNpemUoJGNvbmZpZywgYm9keS0yKTtcbiAgfVxuXG4gIC5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZCB7XG4gICAgZm9udDoge1xuICAgICAgc2l6ZTogdHlwb2dyYXBoeS11dGlscy5mb250LXNpemUoJGNvbmZpZywgYm9keS0yKTtcbiAgICAgIHdlaWdodDogdHlwb2dyYXBoeS11dGlscy5mb250LXdlaWdodCgkY29uZmlnLCBib2R5LTIpO1xuICAgIH07XG4gIH1cbn1cblxuQG1peGluIGRlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge1xuICAkZGVuc2l0eS1zY2FsZTogdGhlbWluZy5nZXQtZGVuc2l0eS1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRoZWlnaHQ6IGNvbXBhdGliaWxpdHkucHJpdmF0ZS1kZW5zaXR5LXByb3AtdmFsdWUoc3RlcHBlci12YXJpYWJsZXMuJGRlbnNpdHktY29uZmlnLFxuICAgICRkZW5zaXR5LXNjYWxlLCBoZWlnaHQpO1xuICAkdmVydGljYWwtcGFkZGluZzogKCRoZWlnaHQgLSBzdGVwcGVyLXZhcmlhYmxlcy4kbGFiZWwtaGVhZGVyLWhlaWdodCkgLyAyO1xuXG4gIEBpbmNsdWRlIGNvbXBhdGliaWxpdHkucHJpdmF0ZS1kZW5zaXR5LWxlZ2FjeS1jb21wYXRpYmlsaXR5KCkge1xuICAgIC5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlciB7XG4gICAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gICAgfVxuXG4gICAgLm1hdC1zdGVwcGVyLWxhYmVsLXBvc2l0aW9uLWJvdHRvbSAubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXIsXG4gICAgLm1hdC12ZXJ0aWNhbC1zdGVwcGVyLWhlYWRlciB7XG4gICAgICBwYWRkaW5nOiAkdmVydGljYWwtcGFkZGluZyBzdGVwcGVyLXZhcmlhYmxlcy4kc2lkZS1nYXA7XG4gICAgfVxuXG4gICAgLy8gRW5zdXJlcyB0aGF0IHRoZSB2ZXJ0aWNhbCBsaW5lcyBmb3IgdGhlIHN0ZXAgY29udGVudCBleGNlZWQgaW50byB0aGUgc3RlcFxuICAgIC8vIGhlYWRlcnMgd2l0aCBhIGdpdmVuIGRpc3RhbmNlIChgJG1hdC1zdGVwcGVyLWxpbmUtZ2FwYCkgdG8gdGhlIHN0ZXAgaWNvbi5cbiAgICAubWF0LXN0ZXBwZXItdmVydGljYWwtbGluZTo6YmVmb3JlIHtcbiAgICAgIHRvcDogc3RlcHBlci12YXJpYWJsZXMuJGxpbmUtZ2FwIC0gJHZlcnRpY2FsLXBhZGRpbmc7XG4gICAgICBib3R0b206IHN0ZXBwZXItdmFyaWFibGVzLiRsaW5lLWdhcCAtICR2ZXJ0aWNhbC1wYWRkaW5nO1xuICAgIH1cblxuICAgIC8vIEVuc3VyZXMgdGhhdCB0aGUgaG9yaXpvbnRhbCBsaW5lcyBmb3IgdGhlIHN0ZXAgaGVhZGVyIGFyZSBjZW50ZXJlZCB2ZXJ0aWNhbGx5LlxuICAgIC5tYXQtc3RlcHBlci1sYWJlbC1wb3NpdGlvbi1ib3R0b20gLm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVyIHtcbiAgICAgICY6OmFmdGVyLCAmOjpiZWZvcmUge1xuICAgICAgICB0b3A6ICR2ZXJ0aWNhbC1wYWRkaW5nICsgc3RlcHBlci12YXJpYWJsZXMuJGxhYmVsLWhlYWRlci1oZWlnaHQgLyAyO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEVuc3VyZXMgdGhhdCB0aGUgaG9yaXpvbnRhbCBsaW5lIGZvciB0aGUgc3RlcCBjb250ZW50IGlzIGFsaWduZWQgY2VudGVyZWQgdmVydGljYWxseS5cbiAgICAubWF0LXN0ZXBwZXItbGFiZWwtcG9zaXRpb24tYm90dG9tIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsLWxpbmUge1xuICAgICAgdG9wOiAkdmVydGljYWwtcGFkZGluZyArIHN0ZXBwZXItdmFyaWFibGVzLiRsYWJlbC1oZWFkZXItaGVpZ2h0IC8gMjtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiB0aGVtaW5nLnByaXZhdGUtbGVnYWN5LWdldC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgQGluY2x1ZGUgdGhlbWluZy5wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LXN0ZXBwZXInKSB7XG4gICAgJGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJHRoZW1lKTtcbiAgICAkZGVuc2l0eTogdGhlbWluZy5nZXQtZGVuc2l0eS1jb25maWcoJHRoZW1lKTtcbiAgICAkdHlwb2dyYXBoeTogdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJHRoZW1lKTtcblxuICAgIEBpZiAkY29sb3IgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBjb2xvcigkY29sb3IpO1xuICAgIH1cbiAgICBAaWYgJGRlbnNpdHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBkZW5zaXR5KCRkZW5zaXR5KTtcbiAgICB9XG4gICAgQGlmICR0eXBvZ3JhcGh5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgdHlwb2dyYXBoeSgkdHlwb2dyYXBoeSk7XG4gICAgfVxuICB9XG59XG4iLCJAdXNlICdzYXNzOm1hcCc7XG5AdXNlICcuLi9jb3JlL3RoZW1pbmcvdGhlbWluZyc7XG5AdXNlICcuLi9jb3JlL3R5cG9ncmFwaHkvdHlwb2dyYXBoeSc7XG5AdXNlICcuLi9jb3JlL3R5cG9ncmFwaHkvdHlwb2dyYXBoeS11dGlscyc7XG5cbkBtaXhpbiBjb2xvcigkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJHByaW1hcnk6IG1hcC5nZXQoJGNvbmZpZywgcHJpbWFyeSk7XG4gICRhY2NlbnQ6IG1hcC5nZXQoJGNvbmZpZywgYWNjZW50KTtcbiAgJHdhcm46IG1hcC5nZXQoJGNvbmZpZywgd2Fybik7XG4gICRiYWNrZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGJhY2tncm91bmQpO1xuICAkZm9yZWdyb3VuZDogbWFwLmdldCgkY29uZmlnLCBmb3JlZ3JvdW5kKTtcbiAgJGhlYWRlci1ib3JkZXI6IDFweCBzb2xpZCB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIGRpdmlkZXIpO1xuXG4gIC5tYXQtdGFiLW5hdi1iYXIsXG4gIC5tYXQtdGFiLWhlYWRlciB7XG4gICAgYm9yZGVyLWJvdHRvbTogJGhlYWRlci1ib3JkZXI7XG4gIH1cblxuICAubWF0LXRhYi1ncm91cC1pbnZlcnRlZC1oZWFkZXIge1xuICAgIC5tYXQtdGFiLW5hdi1iYXIsXG4gICAgLm1hdC10YWItaGVhZGVyIHtcbiAgICAgIGJvcmRlci10b3A6ICRoZWFkZXItYm9yZGVyO1xuICAgICAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbiAgICB9XG4gIH1cblxuICAubWF0LXRhYi1sYWJlbCwgLm1hdC10YWItbGluayB7XG4gICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgdGV4dCk7XG5cbiAgICAmLm1hdC10YWItZGlzYWJsZWQge1xuICAgICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgZGlzYWJsZWQtdGV4dCk7XG4gICAgfVxuICB9XG5cbiAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbiB7XG4gICAgYm9yZGVyLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIHRleHQpO1xuICB9XG5cbiAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWQgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbiB7XG4gICAgYm9yZGVyLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIGRpc2FibGVkLXRleHQpO1xuICB9XG5cbiAgLy8gUmVtb3ZlIGhlYWRlciBib3JkZXIgd2hlbiB0aGVyZSBpcyBhIGJhY2tncm91bmQgY29sb3JcbiAgLm1hdC10YWItZ3JvdXBbY2xhc3MqPSdtYXQtYmFja2dyb3VuZC0nXSAubWF0LXRhYi1oZWFkZXIsXG4gIC5tYXQtdGFiLW5hdi1iYXJbY2xhc3MqPSdtYXQtYmFja2dyb3VuZC0nXSB7XG4gICAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbiAgICBib3JkZXItdG9wOiBub25lO1xuICB9XG5cbiAgLm1hdC10YWItZ3JvdXAsIC5tYXQtdGFiLW5hdi1iYXIge1xuICAgICR0aGVtZS1jb2xvcnM6IChcbiAgICAgIHByaW1hcnk6ICRwcmltYXJ5LFxuICAgICAgYWNjZW50OiAkYWNjZW50LFxuICAgICAgd2FybjogJHdhcm5cbiAgICApO1xuXG4gICAgQGVhY2ggJG5hbWUsICRjb2xvciBpbiAkdGhlbWUtY29sb3JzIHtcbiAgICAgIC8vIFNldCB0aGUgZm9yZWdyb3VuZCBjb2xvciBvZiB0aGUgdGFic1xuICAgICAgJi5tYXQtI3skbmFtZX0ge1xuICAgICAgICBAaW5jbHVkZSBfbGFiZWwtZm9jdXMtY29sb3IoJGNvbG9yKTtcbiAgICAgICAgQGluY2x1ZGUgX2luay1iYXItY29sb3IoJGNvbG9yKTtcblxuICAgICAgICAvLyBPdmVycmlkZSBpbmsgYmFyIHdoZW4gYmFja2dyb3VuZCBjb2xvciBpcyB0aGUgc2FtZVxuICAgICAgICAmLm1hdC1iYWNrZ3JvdW5kLSN7JG5hbWV9IHtcbiAgICAgICAgICA+IC5tYXQtdGFiLWhlYWRlciwgPiAubWF0LXRhYi1saW5rLWNvbnRhaW5lciB7XG4gICAgICAgICAgICBAaW5jbHVkZSBfaW5rLWJhci1jb2xvcigkY29sb3IsIGRlZmF1bHQtY29udHJhc3QpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIEBlYWNoICRuYW1lLCAkY29sb3IgaW4gJHRoZW1lLWNvbG9ycyB7XG4gICAgICAvLyBTZXQgYmFja2dyb3VuZCBjb2xvciBvZiB0aGUgdGFicyBhbmQgb3ZlcnJpZGUgZm9jdXMgY29sb3JcbiAgICAgICYubWF0LWJhY2tncm91bmQtI3skbmFtZX0ge1xuICAgICAgICBAaW5jbHVkZSBfbGFiZWwtZm9jdXMtY29sb3IoJGNvbG9yKTtcbiAgICAgICAgQGluY2x1ZGUgX3RhYnMtYmFja2dyb3VuZCgkY29sb3IpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gX2luay1iYXItY29sb3IoJGNvbG9yLCAkaHVlOiBkZWZhdWx0KSB7XG4gIC5tYXQtaW5rLWJhciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRjb2xvciwgJGh1ZSk7XG4gIH1cbn1cblxuQG1peGluIF9sYWJlbC1mb2N1cy1jb2xvcigkdGFiLWZvY3VzLWNvbG9yKSB7XG4gIC5tYXQtdGFiLWxhYmVsLFxuICAubWF0LXRhYi1saW5rIHtcbiAgICAmLmNkay1rZXlib2FyZC1mb2N1c2VkLFxuICAgICYuY2RrLXByb2dyYW0tZm9jdXNlZCB7XG4gICAgICAmOm5vdCgubWF0LXRhYi1kaXNhYmxlZCkge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHRhYi1mb2N1cy1jb2xvciwgbGlnaHRlciwgMC4zKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuQG1peGluIF90YWJzLWJhY2tncm91bmQoJGJhY2tncm91bmQtY29sb3IpIHtcbiAgLy8gTm90ZSB0aGF0IHRoZXNlIHNlbGVjdG9ycyB0YXJnZXQgZGlyZWN0IGRlc2NlbmRhbnRzIHNvXG4gIC8vIHRoYXQgdGhlIHN0eWxlcyBkb24ndCBhcHBseSB0byBhbnkgbmVzdGVkIHRhYiBncm91cHMuXG5cbiAgLy8gU2V0IGJhY2tncm91bmQgY29sb3IgZm9yIHRoZSB0YWIgZ3JvdXBcbiAgPiAubWF0LXRhYi1oZWFkZXIsID4gLm1hdC10YWItbGluay1jb250YWluZXIsID4gLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24ge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYmFja2dyb3VuZC1jb2xvcik7XG4gIH1cblxuICAvLyBTZXQgbGFiZWxzIHRvIGNvbnRyYXN0IGFnYWluc3QgYmFja2dyb3VuZFxuICA+IC5tYXQtdGFiLWhlYWRlciAubWF0LXRhYi1sYWJlbCwgPiAubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LXRhYi1saW5rIHtcbiAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLWNvbG9yLCBkZWZhdWx0LWNvbnRyYXN0KTtcblxuICAgICYubWF0LXRhYi1kaXNhYmxlZCB7XG4gICAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLWNvbG9yLCBkZWZhdWx0LWNvbnRyYXN0LCAwLjQpO1xuICAgIH1cbiAgfVxuXG4gIC8vIFNldCBwYWdpbmF0aW9uIGNoZXZyb25zIHRvIGNvbnRyYXN0IGJhY2tncm91bmRcbiAgPiAubWF0LXRhYi1oZWFkZXIgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbixcbiAgPiAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbiAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uLFxuICA+IC5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtZm9jdXMtaW5kaWNhdG9yOjpiZWZvcmUsXG4gID4gLm1hdC10YWItaGVhZGVyIC5tYXQtZm9jdXMtaW5kaWNhdG9yOjpiZWZvcmUge1xuICAgIGJvcmRlci1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLWNvbG9yLCBkZWZhdWx0LWNvbnRyYXN0KTtcbiAgfVxuXG4gID4gLm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sXG4gID4gLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWQgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbiB7XG4gICAgYm9yZGVyLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGJhY2tncm91bmQtY29sb3IsIGRlZmF1bHQtY29udHJhc3QsIDAuNCk7XG4gIH1cblxuICAvLyBTZXQgcmlwcGxlcyBjb2xvciB0byBiZSB0aGUgY29udHJhc3QgY29sb3Igb2YgdGhlIG5ldyBiYWNrZ3JvdW5kLiBPdGhlcndpc2UgdGhlIHJpcHBsZVxuICAvLyBjb2xvciB3aWxsIGJlIGJhc2VkIG9uIHRoZSBhcHAgYmFja2dyb3VuZCBjb2xvci5cbiAgPiAubWF0LXRhYi1oZWFkZXIgLm1hdC1yaXBwbGUtZWxlbWVudCxcbiAgPiAubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LXJpcHBsZS1lbGVtZW50LFxuICA+IC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uIC5tYXQtcmlwcGxlLWVsZW1lbnQge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYmFja2dyb3VuZC1jb2xvciwgZGVmYXVsdC1jb250cmFzdCwgMC4xMik7XG4gIH1cbn1cblxuQG1peGluIHR5cG9ncmFwaHkoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0eXBvZ3JhcGh5LnByaXZhdGUtdHlwb2dyYXBoeS10by0yMDE0LWNvbmZpZyhcbiAgICAgIHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCRjb25maWctb3ItdGhlbWUpKTtcbiAgLm1hdC10YWItZ3JvdXAge1xuICAgIGZvbnQtZmFtaWx5OiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtZmFtaWx5KCRjb25maWcpO1xuICB9XG5cbiAgLm1hdC10YWItbGFiZWwsIC5tYXQtdGFiLWxpbmsge1xuICAgIGZvbnQ6IHtcbiAgICAgIGZhbWlseTogdHlwb2dyYXBoeS11dGlscy5mb250LWZhbWlseSgkY29uZmlnLCBidXR0b24pO1xuICAgICAgc2l6ZTogdHlwb2dyYXBoeS11dGlscy5mb250LXNpemUoJGNvbmZpZywgYnV0dG9uKTtcbiAgICAgIHdlaWdodDogdHlwb2dyYXBoeS11dGlscy5mb250LXdlaWdodCgkY29uZmlnLCBidXR0b24pO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gX2RlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIHRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiB0aGVtaW5nLnByaXZhdGUtbGVnYWN5LWdldC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgQGluY2x1ZGUgdGhlbWluZy5wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LXRhYnMnKSB7XG4gICAgJGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJHRoZW1lKTtcbiAgICAkZGVuc2l0eTogdGhlbWluZy5nZXQtZGVuc2l0eS1jb25maWcoJHRoZW1lKTtcbiAgICAkdHlwb2dyYXBoeTogdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJHRoZW1lKTtcblxuICAgIEBpZiAkY29sb3IgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBjb2xvcigkY29sb3IpO1xuICAgIH1cbiAgICBAaWYgJGRlbnNpdHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBfZGVuc2l0eSgkZGVuc2l0eSk7XG4gICAgfVxuICAgIEBpZiAkdHlwb2dyYXBoeSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIHR5cG9ncmFwaHkoJHR5cG9ncmFwaHkpO1xuICAgIH1cbiAgfVxufVxuIiwiQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnLi4vY29yZS9kZW5zaXR5L3ByaXZhdGUvY29tcGF0aWJpbGl0eSc7XG5AdXNlICcuLi9jb3JlL3N0eWxlL3ZhcmlhYmxlcyc7XG5AdXNlICcuLi9jb3JlL3RoZW1pbmcvdGhlbWluZyc7XG5AdXNlICcuLi9jb3JlL3R5cG9ncmFwaHkvdHlwb2dyYXBoeSc7XG5AdXNlICcuLi9jb3JlL3R5cG9ncmFwaHkvdHlwb2dyYXBoeS11dGlscyc7XG5AdXNlICcuL3Rvb2xiYXItdmFyaWFibGVzJztcblxuQG1peGluIF9oZWlnaHQoJGhlaWdodCkge1xuICAubWF0LXRvb2xiYXItbXVsdGlwbGUtcm93cyB7XG4gICAgbWluLWhlaWdodDogJGhlaWdodDtcbiAgfVxuICAubWF0LXRvb2xiYXItcm93LCAubWF0LXRvb2xiYXItc2luZ2xlLXJvdyB7XG4gICAgaGVpZ2h0OiAkaGVpZ2h0O1xuICB9XG59XG5cbkBtaXhpbiBfcGFsZXR0ZS1zdHlsZXMoJHBhbGV0dGUpIHtcbiAgYmFja2dyb3VuZDogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRwYWxldHRlKTtcbiAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkcGFsZXR0ZSwgZGVmYXVsdC1jb250cmFzdCk7XG59XG5cbkBtaXhpbiBfZm9ybS1maWVsZC1vdmVycmlkZXMge1xuICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lLFxuICAubWF0LWZvcm0tZmllbGQtcmlwcGxlLFxuICAubWF0LWZvY3VzZWQgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogY3VycmVudENvbG9yO1xuICB9XG5cbiAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLFxuICAubWF0LWZvY3VzZWQgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLFxuICAubWF0LXNlbGVjdC12YWx1ZSxcbiAgLm1hdC1zZWxlY3QtYXJyb3csXG4gIC5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZCAubWF0LXNlbGVjdC1hcnJvdyB7XG4gICAgY29sb3I6IGluaGVyaXQ7XG4gIH1cblxuICAubWF0LWlucHV0LWVsZW1lbnQge1xuICAgIGNhcmV0LWNvbG9yOiBjdXJyZW50Q29sb3I7XG4gIH1cbn1cblxuQG1peGluIGNvbG9yKCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAkcHJpbWFyeTogbWFwLmdldCgkY29uZmlnLCBwcmltYXJ5KTtcbiAgJGFjY2VudDogbWFwLmdldCgkY29uZmlnLCBhY2NlbnQpO1xuICAkd2FybjogbWFwLmdldCgkY29uZmlnLCB3YXJuKTtcbiAgJGJhY2tncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgYmFja2dyb3VuZCk7XG4gICRmb3JlZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGZvcmVncm91bmQpO1xuXG4gIC5tYXQtdG9vbGJhciB7XG4gICAgYmFja2dyb3VuZDogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLCBhcHAtYmFyKTtcbiAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCB0ZXh0KTtcblxuICAgICYubWF0LXByaW1hcnkge1xuICAgICAgQGluY2x1ZGUgX3BhbGV0dGUtc3R5bGVzKCRwcmltYXJ5KTtcbiAgICB9XG5cbiAgICAmLm1hdC1hY2NlbnQge1xuICAgICAgQGluY2x1ZGUgX3BhbGV0dGUtc3R5bGVzKCRhY2NlbnQpO1xuICAgIH1cblxuICAgICYubWF0LXdhcm4ge1xuICAgICAgQGluY2x1ZGUgX3BhbGV0dGUtc3R5bGVzKCR3YXJuKTtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBfZm9ybS1maWVsZC1vdmVycmlkZXM7XG4gIH1cbn1cblxuQG1peGluIHR5cG9ncmFwaHkoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0eXBvZ3JhcGh5LnByaXZhdGUtdHlwb2dyYXBoeS10by0yMDE0LWNvbmZpZyhcbiAgICAgIHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCRjb25maWctb3ItdGhlbWUpKTtcbiAgLm1hdC10b29sYmFyLFxuICAubWF0LXRvb2xiYXIgaDEsXG4gIC5tYXQtdG9vbGJhciBoMixcbiAgLm1hdC10b29sYmFyIGgzLFxuICAubWF0LXRvb2xiYXIgaDQsXG4gIC5tYXQtdG9vbGJhciBoNSxcbiAgLm1hdC10b29sYmFyIGg2IHtcbiAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5LXV0aWxzLnR5cG9ncmFwaHktbGV2ZWwoJGNvbmZpZywgdGl0bGUpO1xuICAgIG1hcmdpbjogMDtcbiAgfVxufVxuXG5AbWl4aW4gZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRkZW5zaXR5LXNjYWxlOiB0aGVtaW5nLmdldC1kZW5zaXR5LWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJGhlaWdodC1kZXNrdG9wOiBjb21wYXRpYmlsaXR5LnByaXZhdGUtZGVuc2l0eS1wcm9wLXZhbHVlKFxuICAgICAgdG9vbGJhci12YXJpYWJsZXMuJGRlc2t0b3AtZGVuc2l0eS1jb25maWcsICRkZW5zaXR5LXNjYWxlLCBoZWlnaHQpO1xuICAkaGVpZ2h0LW1vYmlsZTogY29tcGF0aWJpbGl0eS5wcml2YXRlLWRlbnNpdHktcHJvcC12YWx1ZShcbiAgICAgIHRvb2xiYXItdmFyaWFibGVzLiRtb2JpbGUtZGVuc2l0eS1jb25maWcsICRkZW5zaXR5LXNjYWxlLCBoZWlnaHQpO1xuXG4gIEBpbmNsdWRlIGNvbXBhdGliaWxpdHkucHJpdmF0ZS1kZW5zaXR5LWxlZ2FjeS1jb21wYXRpYmlsaXR5KCkge1xuICAgIC8vIFNldCB0aGUgZGVmYXVsdCBoZWlnaHQgZm9yIHRoZSB0b29sYmFyLlxuICAgIEBpbmNsdWRlIF9oZWlnaHQoJGhlaWdodC1kZXNrdG9wKTtcblxuICAgIC8vIEFzIHBlciBzcGVjcywgdG9vbGJhcnMgc2hvdWxkIGhhdmUgYSBkaWZmZXJlbnQgaGVpZ2h0IGluIG1vYmlsZSBkZXZpY2VzLiBUaGlzIGhhcyBiZWVuXG4gICAgLy8gc3BlY2lmaWVkIGluIHRoZSBvbGQgZ3VpZGVsaW5lcyBhbmQgaXMgc3RpbGwgb2JzZXJ2YWJsZSBpbiB0aGUgbmV3IHNwZWNpZmljYXRpb25zIGJ5XG4gICAgLy8gbG9va2luZyBhdCB0aGUgc3BlYyBpbWFnZXMuIFNlZTogaHR0cHM6Ly9tYXRlcmlhbC5pby9kZXNpZ24vY29tcG9uZW50cy9hcHAtYmFycy10b3AuaHRtbCNhbmF0b215XG4gICAgQG1lZGlhICh2YXJpYWJsZXMuJHhzbWFsbCkge1xuICAgICAgQGluY2x1ZGUgX2hlaWdodCgkaGVpZ2h0LW1vYmlsZSk7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiB0aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKSB7XG4gICR0aGVtZTogdGhlbWluZy5wcml2YXRlLWxlZ2FjeS1nZXQtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZyk7XG4gIEBpbmNsdWRlIHRoZW1pbmcucHJpdmF0ZS1jaGVjay1kdXBsaWNhdGUtdGhlbWUtc3R5bGVzKCR0aGVtZSwgJ21hdC10b29sYmFyJykge1xuICAgICRjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgJGRlbnNpdHk6IHRoZW1pbmcuZ2V0LWRlbnNpdHktY29uZmlnKCR0aGVtZSk7XG4gICAgJHR5cG9ncmFwaHk6IHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCR0aGVtZSk7XG5cbiAgICBAaWYgJGNvbG9yICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgZGVuc2l0eSgkZGVuc2l0eSk7XG4gICAgfVxuICAgIEBpZiAkdHlwb2dyYXBoeSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIHR5cG9ncmFwaHkoJHR5cG9ncmFwaHkpO1xuICAgIH1cbiAgfVxufVxuIiwiQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnLi4vY29yZS90aGVtaW5nL3RoZW1pbmcnO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHknO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHktdXRpbHMnO1xuXG4kdGFyZ2V0LWhlaWdodDogMjJweDtcbiRmb250LXNpemU6IDEwcHg7XG4kdmVydGljYWwtcGFkZGluZzogKCR0YXJnZXQtaGVpZ2h0IC0gJGZvbnQtc2l6ZSkgLyAyO1xuXG4kaGFuZHNldC10YXJnZXQtaGVpZ2h0OiAzMHB4O1xuJGhhbmRzZXQtZm9udC1zaXplOiAxNHB4O1xuJGhhbmRzZXQtdmVydGljYWwtcGFkZGluZzpcbiAgICAoJGhhbmRzZXQtdGFyZ2V0LWhlaWdodCAtICRoYW5kc2V0LWZvbnQtc2l6ZSkgLyAyO1xuXG5AbWl4aW4gY29sb3IoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRiYWNrZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGJhY2tncm91bmQpO1xuXG4gIC5tYXQtdG9vbHRpcCB7XG4gICAgYmFja2dyb3VuZDogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLCB0b29sdGlwLCAwLjkpO1xuICB9XG59XG5cbkBtaXhpbiB0eXBvZ3JhcGh5KCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdHlwb2dyYXBoeS5wcml2YXRlLXR5cG9ncmFwaHktdG8tMjAxNC1jb25maWcoXG4gICAgICB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKSk7XG4gIC5tYXQtdG9vbHRpcCB7XG4gICAgZm9udC1mYW1pbHk6IHR5cG9ncmFwaHktdXRpbHMuZm9udC1mYW1pbHkoJGNvbmZpZyk7XG4gICAgZm9udC1zaXplOiAkZm9udC1zaXplO1xuICAgIHBhZGRpbmctdG9wOiAkdmVydGljYWwtcGFkZGluZztcbiAgICBwYWRkaW5nLWJvdHRvbTogJHZlcnRpY2FsLXBhZGRpbmc7XG4gIH1cblxuICAubWF0LXRvb2x0aXAtaGFuZHNldCB7XG4gICAgZm9udC1zaXplOiAkaGFuZHNldC1mb250LXNpemU7XG4gICAgcGFkZGluZy10b3A6ICRoYW5kc2V0LXZlcnRpY2FsLXBhZGRpbmc7XG4gICAgcGFkZGluZy1ib3R0b206ICRoYW5kc2V0LXZlcnRpY2FsLXBhZGRpbmc7XG4gIH1cbn1cblxuQG1peGluIF9kZW5zaXR5KCRjb25maWctb3ItdGhlbWUpIHt9XG5cbkBtaXhpbiB0aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKSB7XG4gICR0aGVtZTogdGhlbWluZy5wcml2YXRlLWxlZ2FjeS1nZXQtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZyk7XG4gIEBpbmNsdWRlIHRoZW1pbmcucHJpdmF0ZS1jaGVjay1kdXBsaWNhdGUtdGhlbWUtc3R5bGVzKCR0aGVtZSwgJ21hdC10b29sdGlwJykge1xuICAgICRjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgJGRlbnNpdHk6IHRoZW1pbmcuZ2V0LWRlbnNpdHktY29uZmlnKCR0aGVtZSk7XG4gICAgJHR5cG9ncmFwaHk6IHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCR0aGVtZSk7XG5cbiAgICBAaWYgJGNvbG9yICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgX2RlbnNpdHkoJGRlbnNpdHkpO1xuICAgIH1cbiAgICBAaWYgJHR5cG9ncmFwaHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5KCR0eXBvZ3JhcGh5KTtcbiAgICB9XG4gIH1cbn1cblxuIiwiQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnLi4vY29yZS90aGVtaW5nL3RoZW1pbmcnO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHknO1xuQHVzZSAnLi4vY29yZS90eXBvZ3JhcGh5L3R5cG9ncmFwaHktdXRpbHMnO1xuQHVzZSAnLi4vY29yZS9zdHlsZS9saXN0LWNvbW1vbic7XG5cblxuQG1peGluIGNvbG9yKCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAkYmFja2dyb3VuZDogbWFwLmdldCgkY29uZmlnLCBiYWNrZ3JvdW5kKTtcbiAgJGZvcmVncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgZm9yZWdyb3VuZCk7XG5cbiAgLm1hdC1saXN0LWJhc2Uge1xuICAgIC5tYXQtbGlzdC1pdGVtIHtcbiAgICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIHRleHQpO1xuICAgIH1cblxuICAgIC5tYXQtbGlzdC1vcHRpb24ge1xuICAgICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgdGV4dCk7XG4gICAgfVxuXG4gICAgLm1hdC1zdWJoZWFkZXIge1xuICAgICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgc2Vjb25kYXJ5LXRleHQpO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtbGlzdC1pdGVtLWRpc2FibGVkIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGJhY2tncm91bmQsIGRpc2FibGVkLWxpc3Qtb3B0aW9uKTtcbiAgfVxuXG4gIC5tYXQtbGlzdC1vcHRpb24sXG4gIC5tYXQtbmF2LWxpc3QgLm1hdC1saXN0LWl0ZW0sXG4gIC5tYXQtYWN0aW9uLWxpc3QgLm1hdC1saXN0LWl0ZW0ge1xuICAgICY6aG92ZXIsICY6Zm9jdXMge1xuICAgICAgYmFja2dyb3VuZDogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLCAnaG92ZXInKTtcbiAgICB9XG4gIH1cblxuICAubWF0LWxpc3Qtc2luZ2xlLXNlbGVjdGVkLW9wdGlvbiB7XG4gICAgJiwgJjpob3ZlciwgJjpmb2N1cyB7XG4gICAgICBiYWNrZ3JvdW5kOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGJhY2tncm91bmQsIGhvdmVyLCAwLjEyKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHR5cG9ncmFwaHkoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0eXBvZ3JhcGh5LnByaXZhdGUtdHlwb2dyYXBoeS10by0yMDE0LWNvbmZpZyhcbiAgICAgIHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCRjb25maWctb3ItdGhlbWUpKTtcbiAgJGZvbnQtZmFtaWx5OiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtZmFtaWx5KCRjb25maWcpO1xuXG4gIC5tYXQtbGlzdC1pdGVtIHtcbiAgICBmb250LWZhbWlseTogJGZvbnQtZmFtaWx5O1xuICB9XG5cbiAgLm1hdC1saXN0LW9wdGlvbiB7XG4gICAgZm9udC1mYW1pbHk6ICRmb250LWZhbWlseTtcbiAgfVxuXG4gIC8vIERlZmF1bHQgbGlzdFxuICAubWF0LWxpc3QtYmFzZSB7XG4gICAgLm1hdC1saXN0LWl0ZW0ge1xuICAgICAgZm9udC1zaXplOiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtc2l6ZSgkY29uZmlnLCBzdWJoZWFkaW5nLTIpO1xuICAgICAgQGluY2x1ZGUgbGlzdC1jb21tb24uYmFzZSh0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtc2l6ZSgkY29uZmlnLCBib2R5LTEpKTtcbiAgICB9XG5cbiAgICAubWF0LWxpc3Qtb3B0aW9uIHtcbiAgICAgIGZvbnQtc2l6ZTogdHlwb2dyYXBoeS11dGlscy5mb250LXNpemUoJGNvbmZpZywgc3ViaGVhZGluZy0yKTtcbiAgICAgIEBpbmNsdWRlIGxpc3QtY29tbW9uLmJhc2UodHlwb2dyYXBoeS11dGlscy5mb250LXNpemUoJGNvbmZpZywgYm9keS0xKSk7XG4gICAgfVxuXG4gICAgLm1hdC1zdWJoZWFkZXIge1xuICAgICAgZm9udC1mYW1pbHk6IHR5cG9ncmFwaHktdXRpbHMuZm9udC1mYW1pbHkoJGNvbmZpZywgYm9keS0yKTtcbiAgICAgIGZvbnQtc2l6ZTogdHlwb2dyYXBoeS11dGlscy5mb250LXNpemUoJGNvbmZpZywgYm9keS0yKTtcbiAgICAgIGZvbnQtd2VpZ2h0OiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtd2VpZ2h0KCRjb25maWcsIGJvZHktMik7XG4gICAgfVxuICB9XG5cbiAgLy8gRGVuc2UgbGlzdFxuICAubWF0LWxpc3QtYmFzZVtkZW5zZV0ge1xuICAgIC5tYXQtbGlzdC1pdGVtIHtcbiAgICAgIGZvbnQtc2l6ZTogdHlwb2dyYXBoeS11dGlscy5mb250LXNpemUoJGNvbmZpZywgY2FwdGlvbik7XG4gICAgICBAaW5jbHVkZSBsaXN0LWNvbW1vbi5iYXNlKHR5cG9ncmFwaHktdXRpbHMuZm9udC1zaXplKCRjb25maWcsIGNhcHRpb24pKTtcbiAgICB9XG5cbiAgICAubWF0LWxpc3Qtb3B0aW9uIHtcbiAgICAgIGZvbnQtc2l6ZTogdHlwb2dyYXBoeS11dGlscy5mb250LXNpemUoJGNvbmZpZywgY2FwdGlvbik7XG4gICAgICBAaW5jbHVkZSBsaXN0LWNvbW1vbi5iYXNlKHR5cG9ncmFwaHktdXRpbHMuZm9udC1zaXplKCRjb25maWcsIGNhcHRpb24pKTtcbiAgICB9XG5cbiAgICAubWF0LXN1YmhlYWRlciB7XG4gICAgICBmb250LWZhbWlseTogJGZvbnQtZmFtaWx5O1xuICAgICAgZm9udC1zaXplOiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtc2l6ZSgkY29uZmlnLCBjYXB0aW9uKTtcbiAgICAgIGZvbnQtd2VpZ2h0OiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtd2VpZ2h0KCRjb25maWcsIGJvZHktMik7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBfZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZykge1xuICAkdGhlbWU6IHRoZW1pbmcucHJpdmF0ZS1sZWdhY3ktZ2V0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICBAaW5jbHVkZSB0aGVtaW5nLnByaXZhdGUtY2hlY2stZHVwbGljYXRlLXRoZW1lLXN0eWxlcygkdGhlbWUsICdtYXQtbGlzdCcpIHtcbiAgICAkY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkdGhlbWUpO1xuICAgICRkZW5zaXR5OiB0aGVtaW5nLmdldC1kZW5zaXR5LWNvbmZpZygkdGhlbWUpO1xuICAgICR0eXBvZ3JhcGh5OiB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkdGhlbWUpO1xuXG4gICAgQGlmICRjb2xvciAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIGNvbG9yKCRjb2xvcik7XG4gICAgfVxuICAgIEBpZiAkZGVuc2l0eSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIF9kZW5zaXR5KCRkZW5zaXR5KTtcbiAgICB9XG4gICAgQGlmICR0eXBvZ3JhcGh5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgdHlwb2dyYXBoeSgkdHlwb2dyYXBoeSk7XG4gICAgfVxuICB9XG59XG4iLCJAdXNlICdzYXNzOm1hcCc7XG5AdXNlICcuLi90aGVtaW5nL3RoZW1pbmcnO1xuQHVzZSAnLi4vdHlwb2dyYXBoeS90eXBvZ3JhcGh5JztcbkB1c2UgJy4uL3R5cG9ncmFwaHkvdHlwb2dyYXBoeS11dGlscyc7XG5cbkBtaXhpbiBjb2xvcigkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJGZvcmVncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgZm9yZWdyb3VuZCk7XG4gICRiYWNrZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGJhY2tncm91bmQpO1xuICAkcHJpbWFyeTogbWFwLmdldCgkY29uZmlnLCBwcmltYXJ5KTtcbiAgJGFjY2VudDogbWFwLmdldCgkY29uZmlnLCBhY2NlbnQpO1xuICAkd2FybjogbWFwLmdldCgkY29uZmlnLCB3YXJuKTtcblxuICAubWF0LW9wdGlvbiB7XG4gICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgdGV4dCk7XG5cbiAgICAmOmhvdmVyOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCksXG4gICAgJjpmb2N1czpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpIHtcbiAgICAgIGJhY2tncm91bmQ6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYmFja2dyb3VuZCwgaG92ZXIpO1xuICAgIH1cblxuICAgIC8vIEluIG11bHRpcGxlIG1vZGUgdGhlcmUgaXMgYSBjaGVja2JveCB0byBzaG93IHRoYXQgdGhlIG9wdGlvbiBpcyBzZWxlY3RlZC5cbiAgICAmLm1hdC1zZWxlY3RlZDpub3QoLm1hdC1vcHRpb24tbXVsdGlwbGUpOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCkge1xuICAgICAgYmFja2dyb3VuZDogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLCBob3Zlcik7XG4gICAgfVxuXG4gICAgJi5tYXQtYWN0aXZlIHtcbiAgICAgIGJhY2tncm91bmQ6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYmFja2dyb3VuZCwgaG92ZXIpO1xuICAgICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgdGV4dCk7XG4gICAgfVxuXG4gICAgJi5tYXQtb3B0aW9uLWRpc2FibGVkIHtcbiAgICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIGhpbnQtdGV4dCk7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1wcmltYXJ5IC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZDpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpIHtcbiAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRwcmltYXJ5LCB0ZXh0KTtcbiAgfVxuXG4gIC5tYXQtYWNjZW50IC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZDpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpIHtcbiAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRhY2NlbnQsIHRleHQpO1xuICB9XG5cbiAgLm1hdC13YXJuIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZDpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpIHtcbiAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCR3YXJuLCB0ZXh0KTtcbiAgfVxufVxuXG5AbWl4aW4gdHlwb2dyYXBoeSgkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHR5cG9ncmFwaHkucHJpdmF0ZS10eXBvZ3JhcGh5LXRvLTIwMTQtY29uZmlnKFxuICAgICAgdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJGNvbmZpZy1vci10aGVtZSkpO1xuICAubWF0LW9wdGlvbiB7XG4gICAgZm9udDoge1xuICAgICAgZmFtaWx5OiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtZmFtaWx5KCRjb25maWcpO1xuICAgICAgc2l6ZTogdHlwb2dyYXBoeS11dGlscy5mb250LXNpemUoJGNvbmZpZywgc3ViaGVhZGluZy0yKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIF9kZW5zaXR5KCRjb25maWctb3ItdGhlbWUpIHt9XG5cbkBtaXhpbiB0aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKSB7XG4gICR0aGVtZTogdGhlbWluZy5wcml2YXRlLWxlZ2FjeS1nZXQtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZyk7XG4gIEBpbmNsdWRlIHRoZW1pbmcucHJpdmF0ZS1jaGVjay1kdXBsaWNhdGUtdGhlbWUtc3R5bGVzKCR0aGVtZSwgJ21hdC1vcHRpb24nKSB7XG4gICAgJGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJHRoZW1lKTtcbiAgICAkZGVuc2l0eTogdGhlbWluZy5nZXQtZGVuc2l0eS1jb25maWcoJHRoZW1lKTtcbiAgICAkdHlwb2dyYXBoeTogdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJHRoZW1lKTtcblxuICAgIEBpZiAkY29sb3IgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBjb2xvcigkY29sb3IpO1xuICAgIH1cbiAgICBAaWYgJGRlbnNpdHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBfZGVuc2l0eSgkZGVuc2l0eSk7XG4gICAgfVxuICAgIEBpZiAkdHlwb2dyYXBoeSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIHR5cG9ncmFwaHkoJHR5cG9ncmFwaHkpO1xuICAgIH1cbiAgfVxufVxuIiwiQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnLi4vdGhlbWluZy90aGVtaW5nJztcbkB1c2UgJy4uL3R5cG9ncmFwaHkvdHlwb2dyYXBoeSc7XG5AdXNlICcuLi90eXBvZ3JhcGh5L3R5cG9ncmFwaHktdXRpbHMnO1xuXG5AbWl4aW4gY29sb3IoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRmb3JlZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGZvcmVncm91bmQpO1xuXG4gIC5tYXQtb3B0Z3JvdXAtbGFiZWwge1xuICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIHNlY29uZGFyeS10ZXh0KTtcbiAgfVxuXG4gIC5tYXQtb3B0Z3JvdXAtZGlzYWJsZWQgLm1hdC1vcHRncm91cC1sYWJlbCB7XG4gICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgaGludC10ZXh0KTtcbiAgfVxufVxuXG5AbWl4aW4gdHlwb2dyYXBoeSgkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHR5cG9ncmFwaHkucHJpdmF0ZS10eXBvZ3JhcGh5LXRvLTIwMTQtY29uZmlnKFxuICAgICAgdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJGNvbmZpZy1vci10aGVtZSkpO1xuICAubWF0LW9wdGdyb3VwLWxhYmVsIHtcbiAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5LXV0aWxzLnR5cG9ncmFwaHktbGV2ZWwoJGNvbmZpZywgYm9keS0yKTtcbiAgfVxufVxuXG5AbWl4aW4gX2RlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIHRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiB0aGVtaW5nLnByaXZhdGUtbGVnYWN5LWdldC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgQGluY2x1ZGUgdGhlbWluZy5wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LW9wdGdyb3VwJykge1xuICAgICRjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgJGRlbnNpdHk6IHRoZW1pbmcuZ2V0LWRlbnNpdHktY29uZmlnKCR0aGVtZSk7XG4gICAgJHR5cG9ncmFwaHk6IHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCR0aGVtZSk7XG5cbiAgICBAaWYgJGNvbG9yICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgX2RlbnNpdHkoJGRlbnNpdHkpO1xuICAgIH1cbiAgICBAaWYgJHR5cG9ncmFwaHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5KCR0eXBvZ3JhcGh5KTtcbiAgICB9XG4gIH1cbn1cbiIsIkB1c2UgJ3Nhc3M6bWFwJztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5JztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5LXV0aWxzJztcbkB1c2UgJy4uL2NvcmUvdGhlbWluZy90aGVtaW5nJztcbkB1c2UgJy4uL2NvcmUvdGhlbWluZy9wYWxldHRlJztcbkB1c2UgJy4uL2NvcmUvc3R5bGUvcHJpdmF0ZSc7XG5cbkBtaXhpbiBjb2xvcigkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJGlzLWRhcmstdGhlbWU6IG1hcC5nZXQoJGNvbmZpZywgaXMtZGFyayk7XG4gICRhY2NlbnQ6IG1hcC5nZXQoJGNvbmZpZywgYWNjZW50KTtcblxuICAubWF0LXNuYWNrLWJhci1jb250YWluZXIge1xuICAgIC8vIFVzZSB0aGUgcHJpbWFyeSB0ZXh0IG9uIHRoZSBkYXJrIHRoZW1lLCBldmVuIHRob3VnaCB0aGUgbGlnaHRlciBvbmUgdXNlc1xuICAgIC8vIGEgc2Vjb25kYXJ5LCBiZWNhdXNlIHRoZSBjb250cmFzdCBvbiB0aGUgbGlnaHQgcHJpbWFyeSB0ZXh0IGlzIHBvb3IuXG4gICAgY29sb3I6IGlmKCRpcy1kYXJrLXRoZW1lLCBwYWxldHRlLiRkYXJrLXByaW1hcnktdGV4dCwgcGFsZXR0ZS4kbGlnaHQtc2Vjb25kYXJ5LXRleHQpO1xuICAgIGJhY2tncm91bmQ6IGlmKCRpcy1kYXJrLXRoZW1lLCBtYXAuZ2V0KHBhbGV0dGUuJGdyZXktcGFsZXR0ZSwgNTApLCAjMzIzMjMyKTtcblxuICAgIEBpbmNsdWRlIHByaXZhdGUucHJpdmF0ZS10aGVtZS1lbGV2YXRpb24oNiwgJGNvbmZpZyk7XG4gIH1cblxuICAubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb24ge1xuICAgIGNvbG9yOiBpZigkaXMtZGFyay10aGVtZSwgaW5oZXJpdCwgdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRhY2NlbnQsIHRleHQpKTtcbiAgfVxufVxuXG5AbWl4aW4gdHlwb2dyYXBoeSgkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHR5cG9ncmFwaHkucHJpdmF0ZS10eXBvZ3JhcGh5LXRvLTIwMTQtY29uZmlnKFxuICAgICAgdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJGNvbmZpZy1vci10aGVtZSkpO1xuICAubWF0LXNpbXBsZS1zbmFja2JhciB7XG4gICAgZm9udDoge1xuICAgICAgZmFtaWx5OiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtZmFtaWx5KCRjb25maWcsIGJvZHktMSk7XG4gICAgICBzaXplOiB0eXBvZ3JhcGh5LXV0aWxzLmZvbnQtc2l6ZSgkY29uZmlnLCBib2R5LTEpO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbiB7XG4gICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgZm9udDoge1xuICAgICAgZmFtaWx5OiBpbmhlcml0O1xuICAgICAgc2l6ZTogaW5oZXJpdDtcbiAgICAgIHdlaWdodDogdHlwb2dyYXBoeS11dGlscy5mb250LXdlaWdodCgkY29uZmlnLCBidXR0b24pO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gX2RlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIHRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiB0aGVtaW5nLnByaXZhdGUtbGVnYWN5LWdldC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgQGluY2x1ZGUgdGhlbWluZy5wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LXNuYWNrLWJhcicpIHtcbiAgICAkY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkdGhlbWUpO1xuICAgICRkZW5zaXR5OiB0aGVtaW5nLmdldC1kZW5zaXR5LWNvbmZpZygkdGhlbWUpO1xuICAgICR0eXBvZ3JhcGh5OiB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkdGhlbWUpO1xuXG4gICAgQGlmICRjb2xvciAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIGNvbG9yKCRjb2xvcik7XG4gICAgfVxuICAgIEBpZiAkZGVuc2l0eSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIF9kZW5zaXR5KCRkZW5zaXR5KTtcbiAgICB9XG4gICAgQGlmICR0eXBvZ3JhcGh5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgdHlwb2dyYXBoeSgkdHlwb2dyYXBoeSk7XG4gICAgfVxuICB9XG59XG4iLCJAdXNlICdzYXNzOm1hcCc7XG5AdXNlICcuLi9jb3JlL2RlbnNpdHkvcHJpdmF0ZS9jb21wYXRpYmlsaXR5JztcbkB1c2UgJy4uL2NvcmUvdGhlbWluZy90aGVtaW5nJztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5JztcbkB1c2UgJy4uL2NvcmUvdHlwb2dyYXBoeS90eXBvZ3JhcGh5LXV0aWxzJztcbkB1c2UgJy4vdHJlZS12YXJpYWJsZXMnO1xuXG5AbWl4aW4gY29sb3IoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRiYWNrZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGJhY2tncm91bmQpO1xuICAkZm9yZWdyb3VuZDogbWFwLmdldCgkY29uZmlnLCBmb3JlZ3JvdW5kKTtcblxuICAubWF0LXRyZWUge1xuICAgIGJhY2tncm91bmQ6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYmFja2dyb3VuZCwgJ2NhcmQnKTtcbiAgfVxuXG4gIC5tYXQtdHJlZS1ub2RlLFxuICAubWF0LW5lc3RlZC10cmVlLW5vZGUge1xuICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIHRleHQpO1xuICB9XG59XG5cbkBtaXhpbiB0eXBvZ3JhcGh5KCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdHlwb2dyYXBoeS5wcml2YXRlLXR5cG9ncmFwaHktdG8tMjAxNC1jb25maWcoXG4gICAgICB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKSk7XG4gIC5tYXQtdHJlZSB7XG4gICAgZm9udC1mYW1pbHk6IHR5cG9ncmFwaHktdXRpbHMuZm9udC1mYW1pbHkoJGNvbmZpZyk7XG4gIH1cblxuICAubWF0LXRyZWUtbm9kZSxcbiAgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlIHtcbiAgICBmb250LXdlaWdodDogdHlwb2dyYXBoeS11dGlscy5mb250LXdlaWdodCgkY29uZmlnLCBib2R5LTEpO1xuICAgIGZvbnQtc2l6ZTogdHlwb2dyYXBoeS11dGlscy5mb250LXNpemUoJGNvbmZpZywgYm9keS0xKTtcbiAgfVxufVxuXG5AbWl4aW4gZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRkZW5zaXR5LXNjYWxlOiB0aGVtaW5nLmdldC1kZW5zaXR5LWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJGhlaWdodDogY29tcGF0aWJpbGl0eS5wcml2YXRlLWRlbnNpdHktcHJvcC12YWx1ZSh0cmVlLXZhcmlhYmxlcy4kZGVuc2l0eS1jb25maWcsXG4gICAgJGRlbnNpdHktc2NhbGUsIGhlaWdodCk7XG5cbiAgQGluY2x1ZGUgY29tcGF0aWJpbGl0eS5wcml2YXRlLWRlbnNpdHktbGVnYWN5LWNvbXBhdGliaWxpdHkoKSB7XG4gICAgLm1hdC10cmVlLW5vZGUge1xuICAgICAgbWluLWhlaWdodDogJGhlaWdodDtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiB0aGVtaW5nLnByaXZhdGUtbGVnYWN5LWdldC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgQGluY2x1ZGUgdGhlbWluZy5wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LXRyZWUnKSB7XG4gICAgJGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJHRoZW1lKTtcbiAgICAkZGVuc2l0eTogdGhlbWluZy5nZXQtZGVuc2l0eS1jb25maWcoJHRoZW1lKTtcbiAgICAkdHlwb2dyYXBoeTogdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJHRoZW1lKTtcblxuICAgIEBpZiAkY29sb3IgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBjb2xvcigkY29sb3IpO1xuICAgIH1cbiAgICBAaWYgJGRlbnNpdHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBkZW5zaXR5KCRkZW5zaXR5KTtcbiAgICB9XG4gICAgQGlmICR0eXBvZ3JhcGh5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgdHlwb2dyYXBoeSgkdHlwb2dyYXBoeSk7XG4gICAgfVxuICB9XG59XG5cbiIsIkB1c2UgJy4uLy4uLy4uL2Nkay9hMTF5JztcblxuQG1peGluIHJpcHBsZSgpIHtcbiAgLy8gVGhlIGhvc3QgZWxlbWVudCBvZiBhbiBtYXQtcmlwcGxlIGRpcmVjdGl2ZSBzaG91bGQgYWx3YXlzIGhhdmUgYSBwb3NpdGlvbiBvZiBcImFic29sdXRlXCIgb3JcbiAgLy8gXCJyZWxhdGl2ZVwiIHNvIHRoYXQgdGhlIHJpcHBsZXMgaW5zaWRlIGFyZSBjb3JyZWN0bHkgcG9zaXRpb25lZCByZWxhdGl2ZWx5IHRvIHRoZSBjb250YWluZXIuXG4gIC5tYXQtcmlwcGxlIHtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICAgLy8gQnkgZGVmYXVsdCwgZXZlcnkgcmlwcGxlIGNvbnRhaW5lciBzaG91bGQgaGF2ZSBwb3NpdGlvbjogcmVsYXRpdmUgaW4gZmF2b3Igb2YgY3JlYXRpbmcgYW5cbiAgICAvLyBlYXN5IEFQSSBmb3IgZGV2ZWxvcGVycyB1c2luZyB0aGUgTWF0UmlwcGxlIGRpcmVjdGl2ZS5cbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAvLyBQcm9tb3RlIGNvbnRhaW5lcnMgdGhhdCBoYXZlIHJpcHBsZXMgdG8gYSBuZXcgbGF5ZXIuIFdlIHdhbnQgdG8gdGFyZ2V0IGA6bm90KDplbXB0eSlgLFxuICAgIC8vIGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCBhbGwgcmlwcGxlIGNvbnRhaW5lcnMgdG8gaGF2ZSB0aGVpciBvd24gbGF5ZXIgc2luY2UgdGhleSdyZSB1c2VkIGluIGFcbiAgICAvLyBsb3Qgb2YgcGxhY2VzIGFuZCB0aGUgbGF5ZXIgaXMgb25seSByZWxldmFudCB3aGlsZSBhbmltYXRpbmcuIE5vdGUgdGhhdCBpZGVhbGx5IHdlJ2QgdXNlXG4gICAgLy8gdGhlIGBjb250YWluYCBwcm9wZXJ0eSBoZXJlIChzZWUgIzEzMTc1KSwgYmVjYXVzZSBgOmVtcHR5YCBjYW4gYmUgYnJva2VuIGJ5IGhhdmluZyBleHRyYVxuICAgIC8vIHRleHQgaW5zaWRlIHRoZSBlbGVtZW50LCBidXQgaXQgaXNuJ3QgdmVyeSB3ZWxsIHN1cHBvcnRlZCB5ZXQuXG4gICAgJjpub3QoOmVtcHR5KSB7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCk7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWQge1xuICAgIG92ZXJmbG93OiB2aXNpYmxlO1xuICB9XG5cbiAgLm1hdC1yaXBwbGUtZWxlbWVudCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcblxuICAgIHRyYW5zaXRpb246IG9wYWNpdHksIHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgwKTtcblxuICAgIC8vIEluIGhpZ2ggY29udHJhc3QgbW9kZSB0aGUgcmlwcGxlIGlzIG9wYXF1ZSwgY2F1c2luZyBpdCB0byBvYnN0cnVjdCB0aGUgY29udGVudC5cbiAgICBAaW5jbHVkZSBhMTF5LmhpZ2gtY29udHJhc3QoYWN0aXZlLCBvZmYpIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICB9XG59XG4iLCIvLy8gRW1pdHMgYSBDU1MgY2xhc3MsIGAuY2RrLXZpc3VhbGx5LWhpZGRlbmAuIFRoaXMgY2xhc3MgY2FuIGJlIGFwcGxpZWQgdG8gYW4gZWxlbWVudFxuLy8vIHRvIG1ha2UgdGhhdCBlbGVtZW50IHZpc3VhbGx5IGhpZGRlbiB3aGlsZSByZW1haW5pbmcgYXZhaWxhYmxlIHRvIGFzc2l0aXZlIHRlY2hub2xvZ3kuXG5AbWl4aW4gYTExeS12aXN1YWxseS1oaWRkZW4oKSB7XG4gIC5jZGstdmlzdWFsbHktaGlkZGVuIHtcbiAgICBib3JkZXI6IDA7XG4gICAgY2xpcDogcmVjdCgwIDAgMCAwKTtcbiAgICBoZWlnaHQ6IDFweDtcbiAgICBtYXJnaW46IC0xcHg7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBwYWRkaW5nOiAwO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB3aWR0aDogMXB4O1xuXG4gICAgLy8gVGhpcyB3b3JrcyBhcm91bmQgYSBDaHJvbWUgYnVnIHRoYXQgY2FuIGNhdXNlIHRoZSB0YWIgdG8gY3Jhc2ggd2hlbiBsYXJnZSBhbW91bnRzIG9mXG4gICAgLy8gbm9uLUVuZ2xpc2ggdGV4dCBnZXQgd3JhcHBlZDogaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9MTIwMTQ0NFxuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cbiAgICAvLyBBdm9pZCBicm93c2VycyByZW5kZXJpbmcgdGhlIGZvY3VzIHJpbmcgaW4gc29tZSBjYXNlcy5cbiAgICBvdXRsaW5lOiAwO1xuXG4gICAgLy8gQXZvaWQgc29tZSBjYXNlcyB3aGVyZSB0aGUgYnJvd3NlciB3aWxsIHN0aWxsIHJlbmRlciB0aGUgbmF0aXZlIGNvbnRyb2xzIChzZWUgIzkwNDkpLlxuICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgICAtbW96LWFwcGVhcmFuY2U6IG5vbmU7XG4gIH1cbn1cblxuLy8vIEBkZXByZWNhdGVkIFVzZSBgYTExeS12aXN1YWxseS1oaWRkZW5gLlxuQG1peGluIGExMXkoKSB7XG4gIEBpbmNsdWRlIGExMXktdmlzdWFsbHktaGlkZGVuO1xufVxuXG4vLy8gRW1pdHMgdGhlIG1peGluJ3MgY29udGVudCBuZXN0ZWQgdW5kZXIgYCRzZWxlY3Rvci1jb250ZXh0YCBpZiBgJHNlbGVjdG9yLWNvbnRleHRgXG4vLy8gaXMgbm9uLWVtcHR5LlxuLy8vIEBwYXJhbSB7U3RyaW5nfSBzZWxlY3Rvci1jb250ZXh0IFRoZSBzZWxlY3RvciB1bmRlciB3aGljaCB0byBuZXN0IHRoZSBtaXhpbidzIGNvbnRlbnQuXG5AbWl4aW4gX29wdGlvbmFsbHktbmVzdC1jb250ZW50KCRzZWxlY3Rvci1jb250ZXh0KSB7XG4gIEBpZiAoJHNlbGVjdG9yLWNvbnRleHQgPT0gJycpIHtcbiAgICBAY29udGVudDtcbiAgfVxuICBAZWxzZSB7XG4gICAgI3skc2VsZWN0b3ItY29udGV4dH0ge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG5cbi8vLyBBcHBsaWVzIHN0eWxlcyBmb3IgdXNlcnMgaW4gaGlnaCBjb250cmFzdCBtb2RlLiBOb3RlIHRoYXQgdGhpcyBvbmx5IGFwcGxpZXNcbi8vLyB0byBNaWNyb3NvZnQgYnJvd3NlcnMuIENocm9tZSBjYW4gYmUgaW5jbHVkZWQgYnkgY2hlY2tpbmcgZm9yIHRoZSBgaHRtbFtoY11gXG4vLy8gYXR0cmlidXRlLCBob3dldmVyIENocm9tZSBoYW5kbGVzIGhpZ2ggY29udHJhc3QgZGlmZmVyZW50bHkuXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gdGFyZ2V0IFR5cGUgb2YgaGlnaCBjb250cmFzdCBzZXR0aW5nIHRvIHRhcmdldC4gRGVmYXVsdHMgdG8gYGFjdGl2ZWAsIGNhbiBiZVxuLy8vICAgICBgd2hpdGUtb24tYmxhY2tgIG9yIGBibGFjay1vbi13aGl0ZWAuXG4vLy8gQHBhcmFtIHtTdHJpbmd9IGVuY2Fwc3VsYXRpb24gV2hldGhlciB0byBlbWl0IHN0eWxlcyBmb3IgdmlldyBlbmNhcHN1bGF0aW9uLiBWYWx1ZXMgYXJlOlxuLy8vICAgICAqIGBvbmAgLSB3b3JrcyBmb3IgYEVtdWxhdGVkYCwgYE5hdGl2ZWAsIGFuZCBgU2hhZG93RG9tYFxuLy8vICAgICAqIGBvZmZgIC0gd29ya3MgZm9yIGBOb25lYFxuLy8vICAgICAqIGBhbnlgIC0gd29ya3MgZm9yIGFsbCBlbmNhcHN1bGF0aW9uIG1vZGVzIGJ5IGVtaXR0aW5nIHRoZSBDU1MgdHdpY2UgKGRlZmF1bHQpLlxuQG1peGluIGhpZ2gtY29udHJhc3QoJHRhcmdldDogYWN0aXZlLCAkZW5jYXBzdWxhdGlvbjogJ2FueScpIHtcbiAgQGlmICgkdGFyZ2V0ICE9ICdhY3RpdmUnIGFuZCAkdGFyZ2V0ICE9ICdibGFjay1vbi13aGl0ZScgYW5kICR0YXJnZXQgIT0gJ3doaXRlLW9uLWJsYWNrJykge1xuICAgIEBlcnJvciAnVW5rbm93biBjZGstaGlnaC1jb250cmFzdCB2YWx1ZSBcIiN7JHRhcmdldH1cIiBwcm92aWRlZC4gJyArXG4gICAgICAgICAgICdBbGxvd2VkIHZhbHVlcyBhcmUgXCJhY3RpdmVcIiwgXCJibGFjay1vbi13aGl0ZVwiLCBhbmQgXCJ3aGl0ZS1vbi1ibGFja1wiJztcbiAgfVxuXG4gIEBpZiAoJGVuY2Fwc3VsYXRpb24gIT0gJ29uJyBhbmQgJGVuY2Fwc3VsYXRpb24gIT0gJ29mZicgYW5kICRlbmNhcHN1bGF0aW9uICE9ICdhbnknKSB7XG4gICAgQGVycm9yICdVbmtub3duIGNkay1oaWdoLWNvbnRyYXN0IGVuY2Fwc3VsYXRpb24gXCIjeyRlbmNhcHN1bGF0aW9ufVwiIHByb3ZpZGVkLiAnICtcbiAgICAgICAgICAgJ0FsbG93ZWQgdmFsdWVzIGFyZSBcIm9uXCIsIFwib2ZmXCIsIGFuZCBcImFueVwiJztcbiAgfVxuXG4gIC8vIElmIHRoZSBzZWxlY3RvciBjb250ZXh0IGhhcyBtdWx0aXBsZSBwYXJ0cywgc3VjaCBhcyBgLnNlY3Rpb24sIC5yZWdpb25gLCBqdXN0IGRvaW5nXG4gIC8vIGAuY2RrLWhpZ2gtY29udHJhc3QteHh4ICN7Jn1gIHdpbGwgb25seSBhcHBseSB0aGUgcGFyZW50IHNlbGVjdG9yIHRvIHRoZSBmaXJzdCBwYXJ0IG9mIHRoZVxuICAvLyBjb250ZXh0LiBXZSBhZGRyZXNzIHRoaXMgYnkgbmVzdGluZyB0aGUgc2VsZWN0b3IgY29udGV4dCB1bmRlciAuY2RrLWhpZ2gtY29udHJhc3QuXG4gIEBhdC1yb290IHtcbiAgICAkc2VsZWN0b3ItY29udGV4dDogI3smfTtcblxuICAgIEBpZiAoJGVuY2Fwc3VsYXRpb24gIT0gJ29uJykge1xuICAgICAgLy8gTm90ZSB0aGF0IGlmIHRoaXMgc2VsZWN0b3IgaXMgdXBkYXRlZCwgdGhlIHNhbWUgY2hhbmdlIGhhcyB0byBiZSBtYWRlIGluc2lkZVxuICAgICAgLy8gYF9vdmVybGF5LnNjc3NgIHdoaWNoIGNhbid0IGRlcGVuZCBvbiB0aGlzIG1peGluIGR1ZSB0byBzb21lIGluZnJhc3RydWN0dXJlIGxpbWl0YXRpb25zLlxuICAgICAgLmNkay1oaWdoLWNvbnRyYXN0LSN7JHRhcmdldH0ge1xuICAgICAgICBAaW5jbHVkZSBfb3B0aW9uYWxseS1uZXN0LWNvbnRlbnQoJHNlbGVjdG9yLWNvbnRleHQpIHtcbiAgICAgICAgICBAY29udGVudDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIEBpZiAoJGVuY2Fwc3VsYXRpb24gIT0gJ29mZicpIHtcbiAgICAgIC5jZGstaGlnaC1jb250cmFzdC0jeyR0YXJnZXR9IDpob3N0IHtcbiAgICAgICAgQGluY2x1ZGUgX29wdGlvbmFsbHktbmVzdC1jb250ZW50KCRzZWxlY3Rvci1jb250ZXh0KSB7XG4gICAgICAgICAgQGNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vIFdlIHdhbnQgb3ZlcmxheXMgdG8gYWx3YXlzIGFwcGVhciBvdmVyIHVzZXIgY29udGVudCwgc28gc2V0IGEgYmFzZWxpbmVcbi8vIHZlcnkgaGlnaCB6LWluZGV4IGZvciB0aGUgb3ZlcmxheSBjb250YWluZXIsIHdoaWNoIGlzIHdoZXJlIHdlIGNyZWF0ZSB0aGUgbmV3XG4vLyBzdGFja2luZyBjb250ZXh0IGZvciBhbGwgb3ZlcmxheXMuXG4kb3ZlcmxheS1jb250YWluZXItei1pbmRleDogMTAwMCAhZGVmYXVsdDtcbiRvdmVybGF5LXotaW5kZXg6IDEwMDAgIWRlZmF1bHQ7XG4kb3ZlcmxheS1iYWNrZHJvcC16LWluZGV4OiAxMDAwICFkZWZhdWx0O1xuXG4vLyBCYWNrZ3JvdW5kIGNvbG9yIGZvciBhbGwgb2YgdGhlIGJhY2tkcm9wc1xuJG92ZXJsYXktYmFja2Ryb3AtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4zMikgIWRlZmF1bHQ7XG5cbi8vIERlZmF1bHQgYmFja2Ryb3AgYW5pbWF0aW9uIGlzIGJhc2VkIG9uIHRoZSBNYXRlcmlhbCBEZXNpZ24gc3dpZnQtZWFzZS1vdXQuXG4kYmFja2Ryb3AtYW5pbWF0aW9uLWR1cmF0aW9uOiA0MDBtcyAhZGVmYXVsdDtcbiRiYWNrZHJvcC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKSAhZGVmYXVsdDtcblxuLy8vIEVtaXRzIHN0cnVjdHVyYWwgc3R5bGVzIHJlcXVpcmVkIGZvciBjZGsvb3ZlcmxheSB0byBmdW5jdGlvbi5cbkBtaXhpbiBvdmVybGF5KCkge1xuICAuY2RrLW92ZXJsYXktY29udGFpbmVyLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXIge1xuICAgIC8vIERpc2FibGUgZXZlbnRzIGZyb20gYmVpbmcgY2FwdHVyZWQgb24gdGhlIG92ZXJsYXkgY29udGFpbmVyLlxuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuXG4gICAgLy8gVGhlIGNvbnRhaW5lciBzaG91bGQgYmUgdGhlIHNpemUgb2YgdGhlIHZpZXdwb3J0LlxuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICB3aWR0aDogMTAwJTtcbiAgfVxuXG4gIC8vIFRoZSBvdmVybGF5LWNvbnRhaW5lciBpcyBhbiBpbnZpc2libGUgZWxlbWVudCB3aGljaCBjb250YWlucyBhbGwgaW5kaXZpZHVhbCBvdmVybGF5cy5cbiAgLmNkay1vdmVybGF5LWNvbnRhaW5lciB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIHotaW5kZXg6ICRvdmVybGF5LWNvbnRhaW5lci16LWluZGV4O1xuXG4gICAgJjplbXB0eSB7XG4gICAgICAvLyBIaWRlIHRoZSBlbGVtZW50IHdoZW4gaXQgZG9lc24ndCBoYXZlIGFueSBjaGlsZCBub2Rlcy4gVGhpcyBkb2Vzbid0XG4gICAgICAvLyBpbmNsdWRlIG92ZXJsYXlzIHRoYXQgaGF2ZSBiZWVuIGRldGFjaGVkLCByYXRoZXIgdGhhbiBkaXNwb3NlZC5cbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICB9XG5cbiAgLy8gV2UgdXNlIGFuIGV4dHJhIHdyYXBwZXIgZWxlbWVudCBpbiBvcmRlciB0byB1c2UgbWFrZSB0aGUgb3ZlcmxheSBpdHNlbGYgYSBmbGV4IGl0ZW0uXG4gIC8vIFRoaXMgbWFrZXMgY2VudGVyaW5nIHRoZSBvdmVybGF5IGVhc3kgd2l0aG91dCBydW5uaW5nIGludG8gdGhlIHN1YnBpeGVsIHJlbmRlcmluZ1xuICAvLyBwcm9ibGVtcyB0aWVkIHRvIHVzaW5nIGB0cmFuc2Zvcm1gIGFuZCB3aXRob3V0IGludGVyZmVyaW5nIHdpdGggdGhlIG90aGVyIHBvc2l0aW9uXG4gIC8vIHN0cmF0ZWdpZXMuXG4gIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgei1pbmRleDogJG92ZXJsYXktei1pbmRleDtcbiAgfVxuXG4gIC8vIEEgc2luZ2xlIG92ZXJsYXkgcGFuZS5cbiAgLmNkay1vdmVybGF5LXBhbmUge1xuICAgIC8vIE5vdGU6IGl0J3MgaW1wb3J0YW50IGZvciB0aGlzIG9uZSB0byBzdGFydCBvZmYgYGFic29sdXRlYCxcbiAgICAvLyBpbiBvcmRlciBmb3IgdXMgdG8gYmUgYWJsZSB0byBtZWFzdXJlIGl0IGNvcnJlY3RseS5cbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgcG9pbnRlci1ldmVudHM6IGF1dG87XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICB6LWluZGV4OiAkb3ZlcmxheS16LWluZGV4O1xuXG4gICAgLy8gRm9yIGNvbm5lY3RlZC1wb3NpdGlvbiBvdmVybGF5cywgd2Ugc2V0IGBkaXNwbGF5OiBmbGV4YCBpblxuICAgIC8vIG9yZGVyIHRvIGZvcmNlIGBtYXgtd2lkdGhgIGFuZCBgbWF4LWhlaWdodGAgdG8gdGFrZSBlZmZlY3QuXG4gICAgZGlzcGxheTogZmxleDtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgbWF4LWhlaWdodDogMTAwJTtcbiAgfVxuXG4gIC5jZGstb3ZlcmxheS1iYWNrZHJvcCB7XG4gICAgLy8gVE9ETyhqZWxib3Vybik6IHJldXNlIHNpZGVuYXYgZnVsbHNjcmVlbiBtaXhpbi5cbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGJvdHRvbTogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHJpZ2h0OiAwO1xuXG4gICAgei1pbmRleDogJG92ZXJsYXktYmFja2Ryb3Atei1pbmRleDtcbiAgICBwb2ludGVyLWV2ZW50czogYXV0bztcbiAgICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIHRyYW5zaXRpb246IG9wYWNpdHkgJGJhY2tkcm9wLWFuaW1hdGlvbi1kdXJhdGlvbiAkYmFja2Ryb3AtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjtcbiAgICBvcGFjaXR5OiAwO1xuXG4gICAgJi5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nIHtcbiAgICAgIG9wYWNpdHk6IDE7XG5cbiAgICAgIC8vIE5vdGUgdGhhdCB3ZSBjYW4ndCBpbXBvcnQgYW5kIHVzZSB0aGUgYGhpZ2gtY29udHJhc3RgIG1peGluIGZyb20gYF9hMTF5LnNjc3NgLCBiZWNhdXNlXG4gICAgICAvLyB0aGlzIGZpbGUgd2lsbCBiZSBjb3BpZWQgdG8gdGhlIHRvcC1sZXZlbCBgY2RrYCBwYWNrYWdlIHdoZW4gcHV0dGluZyB0b2dldGhlciB0aGUgZmlsZXNcbiAgICAgIC8vIGZvciBucG0uIEFueSByZWxhdGl2ZSBpbXBvcnQgcGF0aHMgd2UgdXNlIGhlcmUgd2lsbCBiZWNvbWUgaW52YWxpZCBvbmNlIHRoZSBmaWxlIGlzIGNvcGllZC5cbiAgICAgIC5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgJiB7XG4gICAgICAgIC8vIEluIGhpZ2ggY29udHJhc3QgbW9kZSB0aGUgcmdiYSBiYWNrZ3JvdW5kIHdpbGwgYmVjb21lIHNvbGlkXG4gICAgICAgIC8vIHNvIHdlIG5lZWQgdG8gZmFsbCBiYWNrIHRvIG1ha2luZyBpdCBvcGFxdWUgdXNpbmcgYG9wYWNpdHlgLlxuICAgICAgICBvcGFjaXR5OiAwLjY7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3Age1xuICAgIGJhY2tncm91bmQ6ICRvdmVybGF5LWJhY2tkcm9wLWNvbG9yO1xuICB9XG5cbiAgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wIHtcbiAgICAvLyBOb3RlOiBhcyBvZiBGaXJlZm94IDU3LCBoYXZpbmcgdGhlIGJhY2tkcm9wIGJlIGBiYWNrZ3JvdW5kOiBub25lYCB3aWxsIHByZXZlbnQgaXQgZnJvbVxuICAgIC8vIGNhcHR1cmluZyB0aGUgdXNlcidzIG1vdXNlIHNjcm9sbCBldmVudHMuIFNpbmNlIHdlIGFsc28gY2FuJ3QgdXNlIHNvbWV0aGluZyBsaWtlXG4gICAgLy8gYHJnYmEoMCwgMCwgMCwgMClgLCB3ZSB3b3JrIGFyb3VuZCB0aGUgaW5jb25zaXN0ZW5jeSBieSBub3Qgc2V0dGluZyB0aGUgYmFja2dyb3VuZCBhdFxuICAgIC8vIGFsbCBhbmQgdXNpbmcgYG9wYWNpdHlgIHRvIG1ha2UgdGhlIGVsZW1lbnQgdHJhbnNwYXJlbnQuXG4gICAgJiwgJi5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nIHtcbiAgICAgIG9wYWNpdHk6IDA7XG4gICAgfVxuICB9XG5cbiAgLy8gT3ZlcmxheSBwYXJlbnQgZWxlbWVudCB1c2VkIHdpdGggdGhlIGNvbm5lY3RlZCBwb3NpdGlvbiBzdHJhdGVneS4gVXNlZCB0byBjb25zdHJhaW4gdGhlXG4gIC8vIG92ZXJsYXkgZWxlbWVudCdzIHNpemUgdG8gZml0IHdpdGhpbiB0aGUgdmlld3BvcnQuXG4gIC5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgei1pbmRleDogJG92ZXJsYXktei1pbmRleDtcblxuICAgIC8vIFdlIHVzZSBgZGlzcGxheTogZmxleGAgb24gdGhpcyBlbGVtZW50IGV4Y2x1c2l2ZWx5IGZvciBjZW50ZXJpbmcgY29ubmVjdGVkIG92ZXJsYXlzLlxuICAgIC8vIFdoZW4gKm5vdCogY2VudGVyaW5nLCBhIHRvcC9sZWZ0L2JvdHRvbS9yaWdodCB3aWxsIGJlIHNldCB3aGljaCBvdmVycmlkZXMgdGhlIG5vcm1hbFxuICAgIC8vIGZsZXggbGF5b3V0LlxuICAgIGRpc3BsYXk6IGZsZXg7XG5cbiAgICAvLyBXZSB1c2UgdGhlIGBjb2x1bW5gIGRpcmVjdGlvbiBoZXJlIHRvIGF2b2lkIHNvbWUgZmxleGJveCBpc3N1ZXMgaW4gRWRnZVxuICAgIC8vIHdoZW4gdXNpbmcgdGhlIFwiZ3JvdyBhZnRlciBvcGVuXCIgb3B0aW9ucy5cbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXG4gICAgLy8gQWRkIHNvbWUgZGltZW5zaW9ucyBzbyB0aGUgZWxlbWVudCBoYXMgYW4gYGlubmVyVGV4dGAgd2hpY2ggc29tZSBwZW9wbGUgZGVwZW5kIG9uIGluIHRlc3RzLlxuICAgIG1pbi13aWR0aDogMXB4O1xuICAgIG1pbi1oZWlnaHQ6IDFweDtcbiAgfVxuXG4gIC8vIFVzZWQgd2hlbiBkaXNhYmxpbmcgZ2xvYmFsIHNjcm9sbGluZy5cbiAgLmNkay1nbG9iYWwtc2Nyb2xsYmxvY2sge1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcblxuICAgIC8vIE5lY2Vzc2FyeSBmb3IgdGhlIGNvbnRlbnQgbm90IHRvIGxvc2UgaXRzIHdpZHRoLiBOb3RlIHRoYXQgd2UncmUgdXNpbmcgMTAwJSwgaW5zdGVhZCBvZlxuICAgIC8vIDEwMHZ3LCBiZWNhdXNlIDEwMHZ3IGluY2x1ZGVzIHRoZSB3aWR0aCBwbHVzIHRoZSBzY3JvbGxiYXIsIHdoZXJlYXMgMTAwJSBpcyB0aGUgd2lkdGhcbiAgICAvLyB0aGF0IHRoZSBlbGVtZW50IGhhZCBiZWZvcmUgd2UgbWFkZSBpdCBgZml4ZWRgLlxuICAgIHdpZHRoOiAxMDAlO1xuXG4gICAgLy8gTm90ZTogdGhpcyB3aWxsIGFsd2F5cyBhZGQgYSBzY3JvbGxiYXIgdG8gd2hhdGV2ZXIgZWxlbWVudCBpdCBpcyBvbiwgd2hpY2ggY2FuXG4gICAgLy8gcG90ZW50aWFsbHkgcmVzdWx0IGluIGRvdWJsZSBzY3JvbGxiYXJzLiBJdCBzaG91bGRuJ3QgYmUgYW4gaXNzdWUsIGJlY2F1c2Ugd2Ugd29uJ3RcbiAgICAvLyBibG9jayBzY3JvbGxpbmcgb24gYSBwYWdlIHRoYXQgZG9lc24ndCBoYXZlIGEgc2Nyb2xsYmFyIGluIHRoZSBmaXJzdCBwbGFjZS5cbiAgICBvdmVyZmxvdy15OiBzY3JvbGw7XG4gIH1cbn1cbiIsIi8vIFN0cnVjdHVyYWwgc3R5bGVzIGZvciB0aGUgYXV0b3NpemUgdGV4dCBmaWVsZHMuXG5AbWl4aW4gdGV4dC1maWVsZC1hdXRvc2l6ZSgpIHtcbiAgLy8gUmVtb3ZlIHRoZSByZXNpemUgaGFuZGxlIG9uIGF1dG9zaXppbmcgdGV4dGFyZWFzLCBiZWNhdXNlIHdoYXRldmVyIGhlaWdodFxuICAvLyB0aGUgdXNlciByZXNpemVkIHRvIHdpbGwgYmUgb3ZlcndyaXR0ZW4gb25jZSB0aGV5IHN0YXJ0IHR5cGluZyBhZ2Fpbi5cbiAgdGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplIHtcbiAgICByZXNpemU6IG5vbmU7XG4gIH1cblxuICAvLyBUaGlzIGNsYXNzIGlzIHRlbXBvcmFyaWx5IGFwcGxpZWQgdG8gdGhlIHRleHRhcmVhIHdoZW4gaXQgaXMgYmVpbmcgbWVhc3VyZWQuIEl0IGlzIGltbWVkaWF0ZWx5XG4gIC8vIHJlbW92ZWQgd2hlbiBtZWFzdXJpbmcgaXMgY29tcGxldGUuIFdlIHVzZSBgIWltcG9ydGFudGAgcnVsZXMgaGVyZSB0byBtYWtlIHN1cmUgdXNlci1zcGVjaWZpZWRcbiAgLy8gcnVsZXMgZG8gbm90IGludGVyZmVyZSB3aXRoIHRoZSBtZWFzdXJlbWVudC5cbiAgdGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZyB7XG4gICAgQGluY2x1ZGUgX2F1dG9zaXplLW1lYXN1cmluZy1iYXNlO1xuICAgIGhlaWdodDogYXV0byAhaW1wb3J0YW50O1xuICAgIG92ZXJmbG93OiBoaWRkZW4gIWltcG9ydGFudDtcbiAgfVxuXG4gIC8vIFNpbWlsYXIgdG8gdGhlIGBjZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nYCBjbGFzcywgYnV0IG9ubHkgYXBwbGllZCBvbiBGaXJlZm94LiBXZSBuZWVkXG4gIC8vIHRvIHVzZSB0aGlzIGNsYXNzLCBiZWNhdXNlIEZpcmVmb3ggaGFzIGEgYnVnIHdoZXJlIGNoYW5naW5nIHRoZSBgb3ZlcmZsb3dgIGJyZWFrcyB0aGUgdXNlcidzXG4gIC8vIGFiaWxpdHkgdG8gdW5kby9yZWRvIHdoYXQgdGhleSB3ZXJlIHR5cGluZyAoc2VlICMxNjYyOSkuIFRoaXMgY2xhc3MgaXMgb25seSBzY29wZWQgdG8gRmlyZWZveCxcbiAgLy8gYmVjYXVzZSB0aGUgbWVhc3VyZW1lbnRzIHRoZXJlIGRvbid0IHNlZW0gdG8gYmUgYWZmZWN0ZWQgYnkgdGhlIGBoZWlnaHQ6IDBgLCB3aGVyZWFzIG9uIG90aGVyXG4gIC8vIGJyb3dzZXJzIHRoZXkgYXJlLCBlLmcuIENocm9tZSBkZXRlY3RzIGxvbmdlciB0ZXh0IGFuZCBJRSBkb2VzJ3QgcmVzaXplIGJhY2sgdG8gbm9ybWFsLlxuICAvLyBJZGVudGljYWwgaXNzdWUgcmVwb3J0OiBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD00NDg3ODRcbiAgdGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94IHtcbiAgICBAaW5jbHVkZSBfYXV0b3NpemUtbWVhc3VyaW5nLWJhc2U7XG4gICAgaGVpZ2h0OiAwICFpbXBvcnRhbnQ7XG4gIH1cbn1cblxuLy8gQ29yZSBzdHlsZXMgdGhhdCBlbmFibGUgbW9uaXRvcmluZyBhdXRvZmlsbCBzdGF0ZSBvZiB0ZXh0IGZpZWxkcy5cbkBtaXhpbiB0ZXh0LWZpZWxkLWF1dG9maWxsKCkge1xuICAvLyBLZXlmcmFtZXMgdGhhdCBhcHBseSBubyBzdHlsZXMsIGJ1dCBhbGxvdyB1cyB0byBtb25pdG9yIHdoZW4gYW4gdGV4dCBmaWVsZCBiZWNvbWVzIGF1dG9maWxsZWRcbiAgLy8gYnkgd2F0Y2hpbmcgZm9yIHRoZSBhbmltYXRpb24gZXZlbnRzIHRoYXQgYXJlIGZpcmVkIHdoZW4gdGhleSBzdGFydC4gTm90ZTogdGhlIC8qISovIGNvbW1lbnQgaXNcbiAgLy8gbmVlZGVkIHRvIHByZXZlbnQgTGliU2FzcyBmcm9tIHN0cmlwcGluZyB0aGUga2V5ZnJhbWVzIG91dC5cbiAgLy8gQmFzZWQgb246IGh0dHBzOi8vbWVkaXVtLmNvbS9AYnJ1bm4vZGV0ZWN0aW5nLWF1dG9maWxsZWQtZmllbGRzLWluLWphdmFzY3JpcHQtYWVkNTk4ZDI1ZGE3XG4gIEBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgey8qISovfVxuICBAa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCB7LyohKi99XG5cbiAgLmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZDotd2Via2l0LWF1dG9maWxsIHtcbiAgICAvLyBTaW5jZSBDaHJvbWUgODAgd2UgbmVlZCBhIDFtcyBkZWxheSwgb3IgdGhlIGFuaW1hdGlvbnN0YXJ0IGV2ZW50IHdvbid0IGZpcmUuXG4gICAgYW5pbWF0aW9uOiBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXM7XG4gIH1cblxuICAuY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCkge1xuICAgIC8vIFNpbmNlIENocm9tZSA4MCB3ZSBuZWVkIGEgMW1zIGRlbGF5LCBvciB0aGUgYW5pbWF0aW9uc3RhcnQgZXZlbnQgd29uJ3QgZmlyZS5cbiAgICBhbmltYXRpb246IGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXM7XG4gIH1cbn1cblxuQG1peGluIF9hdXRvc2l6ZS1tZWFzdXJpbmctYmFzZSB7XG4gIC8vIEhhdmluZyAycHggdG9wIGFuZCBib3R0b20gcGFkZGluZyBzZWVtcyB0byBmaXggYSBidWcgd2hlcmUgQ2hyb21lIGdldHMgYW4gaW5jb3JyZWN0XG4gIC8vIG1lYXN1cmVtZW50LiBXZSBqdXN0IGhhdmUgdG8gYWNjb3VudCBmb3IgaXQgbGF0ZXIgYW5kIHN1YnRyYWN0IGl0IG9mZiB0aGUgZmluYWwgcmVzdWx0LlxuICBwYWRkaW5nOiAycHggMCAhaW1wb3J0YW50O1xuICBib3gtc2l6aW5nOiBjb250ZW50LWJveCAhaW1wb3J0YW50O1xufVxuXG4vLyBVc2VkIHRvIGdlbmVyYXRlIFVJRHMgZm9yIGtleWZyYW1lcyB1c2VkIHRvIGNoYW5nZSB0aGUgdGV4dCBmaWVsZCBhdXRvZmlsbCBzdHlsZXMuXG4kYXV0b2ZpbGwtY29sb3ItZnJhbWUtY291bnQ6IDA7XG5cbi8vIE1peGluIHVzZWQgdG8gYXBwbHkgY3VzdG9tIGJhY2tncm91bmQgYW5kIGZvcmVncm91bmQgY29sb3JzIHRvIGFuIGF1dG9maWxsZWQgdGV4dCBmaWVsZC5cbi8vIEJhc2VkIG9uOiBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8yNzgxNTQ5L1xuLy8gcmVtb3ZpbmctaW5wdXQtYmFja2dyb3VuZC1jb2xvdXItZm9yLWNocm9tZS1hdXRvY29tcGxldGUjYW5zd2VyLTM3NDMyMjYwXG5AbWl4aW4gdGV4dC1maWVsZC1hdXRvZmlsbC1jb2xvcigkYmFja2dyb3VuZCwgJGZvcmVncm91bmQ6JycpIHtcbiAgQGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1jb2xvci0jeyRhdXRvZmlsbC1jb2xvci1mcmFtZS1jb3VudH0ge1xuICAgIHRvIHtcbiAgICAgIGJhY2tncm91bmQ6ICRiYWNrZ3JvdW5kO1xuICAgICAgQGlmICRmb3JlZ3JvdW5kICE9ICcnIHsgY29sb3I6ICRmb3JlZ3JvdW5kOyB9XG4gICAgfVxuICB9XG5cbiAgJjotd2Via2l0LWF1dG9maWxsIHtcbiAgICBhbmltYXRpb246IGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWNvbG9yLSN7JGF1dG9maWxsLWNvbG9yLWZyYW1lLWNvdW50fSBib3RoO1xuICB9XG5cbiAgJi5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWQ6LXdlYmtpdC1hdXRvZmlsbCB7XG4gICAgLy8gU2luY2UgQ2hyb21lIDgwIHdlIG5lZWQgYSAxbXMgZGVsYXkgZm9yIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0LCBvciB0aGUgYW5pbWF0aW9uc3RhcnRcbiAgICAvLyBldmVudCB3b24ndCBmaXJlLlxuICAgIGFuaW1hdGlvbjogY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zLFxuICAgICAgICAgICAgICAgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtY29sb3ItI3skYXV0b2ZpbGwtY29sb3ItZnJhbWUtY291bnR9IGJvdGg7XG4gIH1cblxuICAkYXV0b2ZpbGwtY29sb3ItZnJhbWUtY291bnQ6ICRhdXRvZmlsbC1jb2xvci1mcmFtZS1jb3VudCArIDEgIWdsb2JhbDtcbn1cblxuLy8gQGRlcHJlY2F0ZWQgVXNlIGBhdXRvc2l6ZWAgYW5kIGBhdXRvZmlsbGAgaW5zdGVhZC5cbkBtaXhpbiB0ZXh0LWZpZWxkIHtcbiAgQGluY2x1ZGUgdGV4dC1maWVsZC1hdXRvc2l6ZSgpO1xuICBAaW5jbHVkZSB0ZXh0LWZpZWxkLWF1dG9maWxsKCk7XG59XG4iLCJAdXNlICdzYXNzOm1hcCc7XG5AdXNlICcuLi9zdHlsZS9sYXlvdXQtY29tbW9uJztcblxuLy8vIE1peGluIHRoYXQgdHVybnMgb24gc3Ryb25nIGZvY3VzIGluZGljYXRvcnMuXG4vLy9cbi8vLyBAZXhhbXBsZVxuLy8vICAgLm15LWFwcCB7XG4vLy8gICAgIEBpbmNsdWRlIG1hdC1zdHJvbmctZm9jdXMtaW5kaWNhdG9ycygkY29uZmlnKTtcbi8vLyAgIH1cbkBtaXhpbiBzdHJvbmctZm9jdXMtaW5kaWNhdG9ycygkY29uZmlnOiAoKSkge1xuICAvLyBEZWZhdWx0IGZvY3VzIGluZGljYXRvciBjb25maWcuXG4gICRkZWZhdWx0LWNvbmZpZzogKFxuICAgIGJvcmRlci1zdHlsZTogc29saWQsXG4gICAgYm9yZGVyLXdpZHRoOiAzcHgsXG4gICAgYm9yZGVyLXJhZGl1czogNHB4LFxuICApO1xuXG4gIC8vIE1lcmdlIGRlZmF1bHQgY29uZmlnIHdpdGggdXNlciBjb25maWcuXG4gICRjb25maWc6IG1hcC5tZXJnZSgkZGVmYXVsdC1jb25maWcsICRjb25maWcpO1xuICAkYm9yZGVyLXN0eWxlOiBtYXAuZ2V0KCRjb25maWcsIGJvcmRlci1zdHlsZSk7XG4gICRib3JkZXItd2lkdGg6IG1hcC5nZXQoJGNvbmZpZywgYm9yZGVyLXdpZHRoKTtcbiAgJGJvcmRlci1yYWRpdXM6IG1hcC5nZXQoJGNvbmZpZywgYm9yZGVyLXJhZGl1cyk7XG5cbiAgLy8gQmFzZSBzdHlsZXMgZm9yIGZvY3VzIGluZGljYXRvcnMuXG4gIC5tYXQtZm9jdXMtaW5kaWNhdG9yOjpiZWZvcmUge1xuICAgIEBpbmNsdWRlIGxheW91dC1jb21tb24uZmlsbCgpO1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgYm9yZGVyOiAkYm9yZGVyLXdpZHRoICRib3JkZXItc3R5bGUgdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXM7XG4gIH1cblxuICAvLyBCeSBkZWZhdWx0LCBhbGwgZm9jdXMgaW5kaWNhdG9ycyBhcmUgZmx1c2ggd2l0aCB0aGUgYm91bmRpbmcgYm94IG9mIHRoZWlyXG4gIC8vIGhvc3QgZWxlbWVudC4gRm9yIHBhcnRpY3VsYXIgZWxlbWVudHMgKGxpc3RlZCBiZWxvdyksIGRlZmF1bHQgaW5zZXQvb2Zmc2V0XG4gIC8vIHZhbHVlcyBhcmUgbmVjZXNzYXJ5IHRvIGVuc3VyZSB0aGF0IHRoZSBmb2N1cyBpbmRpY2F0b3IgaXMgc3VmZmljaWVudGx5XG4gIC8vIGNvbnRyYXN0aXZlIGFuZCByZW5kZXJzIGFwcHJvcHJpYXRlbHkuXG5cbiAgLm1hdC1mb2N1cy1pbmRpY2F0b3IubWF0LWZsYXQtYnV0dG9uOjpiZWZvcmUsXG4gIC5tYXQtZm9jdXMtaW5kaWNhdG9yLm1hdC1yYWlzZWQtYnV0dG9uOjpiZWZvcmUsXG4gIC5tYXQtZm9jdXMtaW5kaWNhdG9yLm1hdC1mYWI6OmJlZm9yZSxcbiAgLm1hdC1mb2N1cy1pbmRpY2F0b3IubWF0LW1pbmktZmFiOjpiZWZvcmUsXG4gIC5tYXQtZm9jdXMtaW5kaWNhdG9yLm1hdC1jaGlwOjpiZWZvcmUsXG4gIC5tYXQtZm9jdXMtaW5kaWNhdG9yLm1hdC1zb3J0LWhlYWRlci1jb250YWluZXI6OmJlZm9yZSB7XG4gICAgbWFyZ2luOiAtKCRib3JkZXItd2lkdGggKyAycHgpO1xuICB9XG5cbiAgLm1hdC1mb2N1cy1pbmRpY2F0b3IubWF0LXN0cm9rZWQtYnV0dG9uOjpiZWZvcmUsXG4gIC5tYXQtZm9jdXMtaW5kaWNhdG9yLm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudDo6YmVmb3JlIHtcbiAgICBtYXJnaW46IC0oJGJvcmRlci13aWR0aCArIDNweCk7XG4gIH1cblxuICAubWF0LWZvY3VzLWluZGljYXRvci5tYXQtdGFiLWxpbms6OmJlZm9yZSxcbiAgLm1hdC1mb2N1cy1pbmRpY2F0b3IubWF0LXRhYi1sYWJlbDo6YmVmb3JlIHtcbiAgICBtYXJnaW46IDVweDtcbiAgfVxuXG4gIC8vIFJlbmRlciB0aGUgZm9jdXMgaW5kaWNhdG9yIG9uIGZvY3VzLiBEZWZpbmluZyBhIHBzZXVkbyBlbGVtZW50J3NcbiAgLy8gY29udGVudCB3aWxsIGNhdXNlIGl0IHRvIHJlbmRlci5cblxuICAvLyBDaGVja2JveGVzLCByYWRpb3MsIGFuZCBzbGlkZSB0b2dnbGVzIHJlbmRlciBmb2N1cyBpbmRpY2F0b3JzIHdoZW4gdGhlXG4gIC8vIGFzc29jaWF0ZWQgdmlzdWFsbHktaGlkZGVuIGlucHV0IGlzIGZvY3VzZWQuXG4gIC5tYXQtY2hlY2tib3gtaW5wdXQ6Zm9jdXMgfiAubWF0LWZvY3VzLWluZGljYXRvcjo6YmVmb3JlLFxuICAubWF0LXJhZGlvLWlucHV0OmZvY3VzIH4gLm1hdC1mb2N1cy1pbmRpY2F0b3I6OmJlZm9yZSxcbiAgLm1hdC1zbGlkZS10b2dnbGUtaW5wdXQ6Zm9jdXMgfiAubWF0LXNsaWRlLXRvZ2dsZS10aHVtYi1jb250YWluZXIgLm1hdC1mb2N1cy1pbmRpY2F0b3I6OmJlZm9yZSxcblxuICAvLyBGb3Igb3B0aW9ucywgcmVuZGVyIHRoZSBmb2N1cyBpbmRpY2F0b3Igd2hlbiB0aGUgY2xhc3MgLm1hdC1hY3RpdmVcbiAgLy8gaXMgcHJlc2VudC5cbiAgLm1hdC1mb2N1cy1pbmRpY2F0b3IubWF0LW9wdGlvbi5tYXQtYWN0aXZlOjpiZWZvcmUsXG5cbiAgLy8gRm9yIGNhbGVuZGFyIGNlbGxzLCByZW5kZXIgdGhlIGZvY3VzIGluZGljYXRvciB3aGVuIHRoZSBwYXJlbnQgY2VsbCBpc1xuICAvLyBmb2N1c2VkLlxuICAubWF0LWNhbGVuZGFyLWJvZHktY2VsbDpmb2N1cyAubWF0LWZvY3VzLWluZGljYXRvcjo6YmVmb3JlLFxuXG4gIC8vIFN0ZXBwZXIgaGVhZGVycyBoYXZlIHRoZSBmb2N1cyBpbmRpY2F0b3IgYXMgYSBkZXNjZW5kYW50LFxuICAvLyBiZWNhdXNlIGA6OmJlZm9yZWAgaXMgdXNlZCBmb3Igb3RoZXIgc3R5bGluZy5cbiAgLm1hdC1zdGVwLWhlYWRlcjpmb2N1cyAubWF0LWZvY3VzLWluZGljYXRvcjo6YmVmb3JlLFxuXG4gIC8vIEZvciBhbGwgb3RoZXIgY29tcG9uZW50cywgcmVuZGVyIHRoZSBmb2N1cyBpbmRpY2F0b3Igb24gZm9jdXMuXG4gIC5tYXQtZm9jdXMtaW5kaWNhdG9yOmZvY3VzOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICcnO1xuICB9XG59XG5cbi8vIE1peGluIHRoYXQgZW5zdXJlcyBmb2N1cyBpbmRpY2F0b3IgaG9zdCBlbGVtZW50cyBhcmUgcG9zaXRpb25lZCBzbyB0aGF0IHRoZSBmb2N1cyBpbmRpY2F0b3Jcbi8vIHBzZXVkbyBlbGVtZW50IHdpdGhpbiBpcyBwb3NpdGlvbmVkIHJlbGF0aXZlIHRvIHRoZSBob3N0LiBQcml2YXRlIG1peGluIGluY2x1ZGVkIHdpdGhpblxuLy8gYG1hdC1jb3JlYC5cbkBtaXhpbiBwcml2YXRlLXN0cm9uZy1mb2N1cy1pbmRpY2F0b3JzLXBvc2l0aW9uaW5nKCkge1xuICAubWF0LWZvY3VzLWluZGljYXRvciB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB9XG59XG4iLCJAdXNlICcuLi8uLi9jZGsvb3ZlcmxheSc7XG5AdXNlICcuLi8uLi9jZGsvYTExeSc7XG5AdXNlICcuLi8uLi9jZGsvdGV4dC1maWVsZCc7XG5cbi8vIENvcmUgc3R5bGVzIHRoYXQgY2FuIGJlIHVzZWQgdG8gYXBwbHkgbWF0ZXJpYWwgZGVzaWduIHRyZWF0bWVudHMgdG8gYW55IGVsZW1lbnQuXG5AdXNlICcuL3JpcHBsZS9yaXBwbGUnO1xuQHVzZSAnLi9mb2N1cy1pbmRpY2F0b3JzL2ZvY3VzLWluZGljYXRvcnMnO1xuQHVzZSAnLi90eXBvZ3JhcGh5L2FsbC10eXBvZ3JhcGh5JztcblxuLy8gTWl4aW4gdGhhdCByZW5kZXJzIGFsbCBvZiB0aGUgY29yZSBzdHlsZXMgdGhhdCBhcmUgbm90IHRoZW1lLWRlcGVuZGVudC5cbkBtaXhpbiBjb3JlKCR0eXBvZ3JhcGh5LWNvbmZpZzogbnVsbCkge1xuICBAaW5jbHVkZSBhbGwtdHlwb2dyYXBoeS5hbGwtY29tcG9uZW50LXR5cG9ncmFwaGllcygkdHlwb2dyYXBoeS1jb25maWcpO1xuICBAaW5jbHVkZSByaXBwbGUucmlwcGxlKCk7XG4gIEBpbmNsdWRlIGExMXkuYTExeS12aXN1YWxseS1oaWRkZW4oKTtcbiAgQGluY2x1ZGUgb3ZlcmxheS5vdmVybGF5KCk7XG4gIEBpbmNsdWRlIHRleHQtZmllbGQudGV4dC1maWVsZC1hdXRvc2l6ZSgpO1xuICBAaW5jbHVkZSB0ZXh0LWZpZWxkLnRleHQtZmllbGQtYXV0b2ZpbGwoKTtcblxuICBAaW5jbHVkZSBmb2N1cy1pbmRpY2F0b3JzLnByaXZhdGUtc3Ryb25nLWZvY3VzLWluZGljYXRvcnMtcG9zaXRpb25pbmcoKTtcbiAgQGluY2x1ZGUgX21kYy1jb3JlKCk7XG59XG5cbi8vIE1peGluIHRoYXQgcmVuZGVycyBhbGwgb2YgdGhlIGNvcmUgTURDIHN0eWxlcy4gUHJpdmF0ZSBtaXhpbiBpbmNsdWRlZCB3aXRoIGBtYXQtY29yZWAuXG5AbWl4aW4gX21kYy1jb3JlKCkge1xuICBAaW5jbHVkZSBfbWRjLXN0cm9uZy1mb2N1cy1pbmRpY2F0b3JzLXBvc2l0aW9uaW5nKCk7XG59XG5cbi8vIE1peGluIHRoYXQgZW5zdXJlcyBmb2N1cyBpbmRpY2F0b3IgaG9zdCBlbGVtZW50cyBhcmUgcG9zaXRpb25lZCBzbyB0aGF0IHRoZSBmb2N1cyBpbmRpY2F0b3Jcbi8vIHBzZXVkbyBlbGVtZW50IHdpdGhpbiBpcyBwb3NpdGlvbmVkIHJlbGF0aXZlIHRvIHRoZSBob3N0LiBQcml2YXRlIG1peGluIGluY2x1ZGVkIHdpdGhpblxuLy8gYF9tYXQtbWRjLWNvcmVgLlxuQG1peGluIF9tZGMtc3Ryb25nLWZvY3VzLWluZGljYXRvcnMtcG9zaXRpb25pbmcoKSB7XG4gIC5tYXQtbWRjLWZvY3VzLWluZGljYXRvciB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB9XG59XG4iLCJAdXNlICdzYXNzOm1hcCc7XG5AdXNlICdzYXNzOm1ldGEnO1xuQHVzZSAnLi4vdGhlbWluZy90aGVtaW5nJztcblxuLy8gQ29sb3JzIGZvciB0aGUgcmlwcGxlIGVsZW1lbnRzLlxuQG1peGluIGNvbG9yKCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAkZm9yZWdyb3VuZDogbWFwLmdldCgkY29uZmlnLCBmb3JlZ3JvdW5kKTtcbiAgJGZvcmVncm91bmQtYmFzZTogbWFwLmdldCgkZm9yZWdyb3VuZCwgYmFzZSk7XG4gICRjb2xvci1vcGFjaXR5OiAwLjE7XG5cbiAgLm1hdC1yaXBwbGUtZWxlbWVudCB7XG4gICAgLy8gSWYgdGhlIHJpcHBsZSBjb2xvciBpcyByZXNvbHZlcyB0byBhIGNvbG9yICp0eXBlKiwgd2UgY2FuIHVzZSBpdCBkaXJlY3RseSwgb3RoZXJ3aXNlXG4gICAgLy8gKGUuZy4gaXQgcmVzb2x2ZXMgdG8gYSBDU1MgdmFyaWFibGUpIHdlIGZhbGwgYmFjayB0byB1c2luZyB0aGUgY29sb3IgYW5kIHNldHRpbmcgYW4gb3BhY2l0eS5cbiAgICBAaWYgKG1ldGEudHlwZS1vZigkZm9yZWdyb3VuZC1iYXNlKSA9PSBjb2xvcikge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgkZm9yZWdyb3VuZC1iYXNlLCAkY29sb3Itb3BhY2l0eSk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRmb3JlZ3JvdW5kLWJhc2U7XG4gICAgICBvcGFjaXR5OiAkY29sb3Itb3BhY2l0eTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiB0aGVtaW5nLnByaXZhdGUtbGVnYWN5LWdldC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgQGluY2x1ZGUgdGhlbWluZy5wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LXJpcHBsZScpIHtcbiAgICAkY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkdGhlbWUpO1xuICAgIEBpZiAkY29sb3IgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBjb2xvcigkY29sb3IpO1xuICAgIH1cbiAgfVxufVxuIiwiQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnLi4vLi4vdGhlbWluZy90aGVtaW5nJztcblxuQG1peGluIGNvbG9yKCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAkaXMtZGFyay10aGVtZTogbWFwLmdldCgkY29uZmlnLCBpcy1kYXJrKTtcbiAgJHByaW1hcnk6IG1hcC5nZXQoJGNvbmZpZywgcHJpbWFyeSk7XG4gICRhY2NlbnQ6IG1hcC5nZXQoJGNvbmZpZywgYWNjZW50KTtcbiAgJHdhcm46IG1hcC5nZXQoJGNvbmZpZywgd2Fybik7XG4gICRiYWNrZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGJhY2tncm91bmQpO1xuXG4gIC8vIE5PVEUodHJhdmlza2F1Zm1hbik6IFdoaWxlIHRoZSBzcGVjIGNhbGxzIGZvciB0cmFuc2x1Y2VudCBibGFja3Mvd2hpdGVzIGZvciBkaXNhYmxlZCBjb2xvcnMsXG4gIC8vIHRoaXMgZG9lcyBub3Qgd29yayB3ZWxsIHdpdGggZWxlbWVudHMgbGF5ZXJlZCBvbiB0b3Agb2Ygb25lIGFub3RoZXIuIFRvIGdldCBhcm91bmQgdGhpcyB3ZVxuICAvLyBibGVuZCB0aGUgY29sb3JzIHRvZ2V0aGVyIGJhc2VkIG9uIHRoZSBiYXNlIGNvbG9yIGFuZCB0aGUgdGhlbWUgYmFja2dyb3VuZC5cbiAgJHdoaXRlLTMwcGN0LW9wYWNpdHktb24tZGFyazogIzY4Njg2ODtcbiAgJGJsYWNrLTI2cGN0LW9wYWNpdHktb24tbGlnaHQ6ICNiMGIwYjA7XG4gICRkaXNhYmxlZC1jb2xvcjogaWYoJGlzLWRhcmstdGhlbWUsICR3aGl0ZS0zMHBjdC1vcGFjaXR5LW9uLWRhcmssICRibGFjay0yNnBjdC1vcGFjaXR5LW9uLWxpZ2h0KTtcbiAgJGNvbG9yZWQtYm94LXNlbGVjdG9yOiAnLm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZCwgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZSc7XG5cbiAgLm1hdC1wc2V1ZG8tY2hlY2tib3gge1xuICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUobWFwLmdldCgkY29uZmlnLCBmb3JlZ3JvdW5kKSwgc2Vjb25kYXJ5LXRleHQpO1xuXG4gICAgJjo6YWZ0ZXIge1xuICAgICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYmFja2dyb3VuZCwgYmFja2dyb3VuZCk7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1wc2V1ZG8tY2hlY2tib3gtZGlzYWJsZWQge1xuICAgIGNvbG9yOiAkZGlzYWJsZWQtY29sb3I7XG4gIH1cblxuICAubWF0LXByaW1hcnkgLm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZCxcbiAgLm1hdC1wcmltYXJ5IC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGUge1xuICAgIGJhY2tncm91bmQ6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZShtYXAuZ2V0KCRjb25maWcsIHByaW1hcnkpKTtcbiAgfVxuXG4gIC8vIERlZmF1bHQgdG8gdGhlIGFjY2VudCBjb2xvci4gTm90ZSB0aGF0IHRoZSBwc2V1ZG8gY2hlY2tib3hlcyBhcmUgbWVhbnQgdG8gaW5oZXJpdCB0aGVcbiAgLy8gdGhlbWUgZnJvbSB0aGVpciBwYXJlbnQsIHJhdGhlciB0aGFuIGltcGxlbWVudGluZyB0aGVpciBvd24gdGhlbWluZywgd2hpY2ggaXMgd2h5IHdlXG4gIC8vIGRvbid0IGF0dGFjaCB0byB0aGUgYG1hdC0qYCBjbGFzc2VzLiBBbHNvIG5vdGUgdGhhdCB0aGlzIG5lZWRzIHRvIGJlIGJlbG93IGAubWF0LXByaW1hcnlgXG4gIC8vIGluIG9yZGVyIHRvIGFsbG93IGZvciB0aGUgY29sb3IgdG8gYmUgb3ZlcndyaXR0ZW4gaWYgdGhlIGNoZWNrYm94IGlzIGluc2lkZSBhIHBhcmVudCB0aGF0XG4gIC8vIGhhcyBgbWF0LWFjY2VudGAgYW5kIGlzIHBsYWNlZCBpbnNpZGUgYW5vdGhlciBwYXJlbnQgdGhhdCBoYXMgYG1hdC1wcmltYXJ5YC5cbiAgLm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZCxcbiAgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZSxcbiAgLm1hdC1hY2NlbnQgLm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZCxcbiAgLm1hdC1hY2NlbnQgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZSB7XG4gICAgYmFja2dyb3VuZDogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKG1hcC5nZXQoJGNvbmZpZywgYWNjZW50KSk7XG4gIH1cblxuICAubWF0LXdhcm4gLm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZCxcbiAgLm1hdC13YXJuIC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGUge1xuICAgIGJhY2tncm91bmQ6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZShtYXAuZ2V0KCRjb25maWcsIHdhcm4pKTtcbiAgfVxuXG4gIC5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWQsXG4gIC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGUge1xuICAgICYubWF0LXBzZXVkby1jaGVja2JveC1kaXNhYmxlZCB7XG4gICAgICBiYWNrZ3JvdW5kOiAkZGlzYWJsZWQtY29sb3I7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiB0eXBvZ3JhcGh5KCRjb25maWctb3ItdGhlbWUpIHt9XG5cbkBtaXhpbiBfZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZykge1xuICAkdGhlbWU6IHRoZW1pbmcucHJpdmF0ZS1sZWdhY3ktZ2V0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICBAaW5jbHVkZSB0aGVtaW5nLnByaXZhdGUtY2hlY2stZHVwbGljYXRlLXRoZW1lLXN0eWxlcygkdGhlbWUsICdtYXQtcHNldWRvLWNoZWNrYm94Jykge1xuICAgICRjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgJGRlbnNpdHk6IHRoZW1pbmcuZ2V0LWRlbnNpdHktY29uZmlnKCR0aGVtZSk7XG4gICAgJHR5cG9ncmFwaHk6IHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCR0aGVtZSk7XG5cbiAgICBAaWYgJGNvbG9yICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgX2RlbnNpdHkoJGRlbnNpdHkpO1xuICAgIH1cbiAgICBAaWYgJHR5cG9ncmFwaHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5KCR0eXBvZ3JhcGh5KTtcbiAgICB9XG4gIH1cbn1cbiIsIkB1c2UgJ3Nhc3M6bWFwJztcbkB1c2UgJ3RoZW1pbmcvdGhlbWluZyc7XG5AdXNlICcuL3N0eWxlL3ByaXZhdGUnO1xuQHVzZSAnLi9yaXBwbGUvcmlwcGxlLXRoZW1lJztcbkB1c2UgJy4vb3B0aW9uL29wdGlvbi10aGVtZSc7XG5AdXNlICcuL29wdGlvbi9vcHRncm91cC10aGVtZSc7XG5AdXNlICcuL3NlbGVjdGlvbi9wc2V1ZG8tY2hlY2tib3gvcHNldWRvLWNoZWNrYm94LXRoZW1lJztcbkB1c2UgJy4vc3R5bGUvZWxldmF0aW9uJztcblxuXG5AbWl4aW4gY29sb3IoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gIC8vIFdyYXBwZXIgZWxlbWVudCB0aGF0IHByb3ZpZGVzIHRoZSB0aGVtZSBiYWNrZ3JvdW5kIHdoZW4gdGhlIHVzZXIncyBjb250ZW50IGlzbid0XG4gIC8vIGluc2lkZSBvZiBhIGBtYXQtc2lkZW5hdi1jb250YWluZXJgLiBOb3RlIHRoYXQgd2UgbmVlZCB0byBleGNsdWRlIHRoZSBhbXBlcnNhbmRcbiAgLy8gc2VsZWN0b3IgaW4gY2FzZSB0aGUgbWl4aW4gaXMgaW5jbHVkZWQgYXQgdGhlIHRvcCBsZXZlbC5cbiAgLm1hdC1hcHAtYmFja2dyb3VuZCN7aWYoJiwgJywgJi5tYXQtYXBwLWJhY2tncm91bmQnLCAnJyl9IHtcbiAgICAkYmFja2dyb3VuZDogbWFwLmdldCgkY29uZmlnLCBiYWNrZ3JvdW5kKTtcbiAgICAkZm9yZWdyb3VuZDogbWFwLmdldCgkY29uZmlnLCBmb3JlZ3JvdW5kKTtcblxuICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYmFja2dyb3VuZCwgYmFja2dyb3VuZCk7XG4gICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgdGV4dCk7XG4gIH1cblxuICAvLyBQcm92aWRlcyBleHRlcm5hbCBDU1MgY2xhc3NlcyBmb3IgZWFjaCBlbGV2YXRpb24gdmFsdWUuIEVhY2ggQ1NTIGNsYXNzIGlzIGZvcm1hdHRlZCBhc1xuICAvLyBgbWF0LWVsZXZhdGlvbi16JHpWYWx1ZWAgd2hlcmUgYCR6VmFsdWVgIGNvcnJlc3BvbmRzIHRvIHRoZSB6LXNwYWNlIHRvIHdoaWNoIHRoZSBlbGVtZW50IGlzXG4gIC8vIGVsZXZhdGVkLlxuICBAZm9yICR6VmFsdWUgZnJvbSAwIHRocm91Z2ggMjQge1xuICAgIC4je2VsZXZhdGlvbi4kcHJlZml4fSN7JHpWYWx1ZX0ge1xuICAgICAgQGluY2x1ZGUgcHJpdmF0ZS5wcml2YXRlLXRoZW1lLWVsZXZhdGlvbigkelZhbHVlLCAkY29uZmlnKTtcbiAgICB9XG4gIH1cblxuICAvLyBNYXJrZXIgdGhhdCBpcyB1c2VkIHRvIGRldGVybWluZSB3aGV0aGVyIHRoZSB1c2VyIGhhcyBhZGRlZCBhIHRoZW1lIHRvIHRoZWlyIHBhZ2UuXG4gIEBhdC1yb290IHtcbiAgICAubWF0LXRoZW1lLWxvYWRlZC1tYXJrZXIge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gIH1cbn1cblxuLy8gTWl4aW4gdGhhdCByZW5kZXJzIGFsbCBvZiB0aGUgY29yZSBzdHlsZXMgdGhhdCBkZXBlbmQgb24gdGhlIHRoZW1lLlxuQG1peGluIHRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiB0aGVtaW5nLnByaXZhdGUtbGVnYWN5LWdldC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgLy8gV3JhcCB0aGUgc3ViLXRoZW1lIGluY2x1ZGVzIGluIHRoZSBkdXBsaWNhdGUgdGhlbWUgc3R5bGVzIG1peGluLiBUaGlzIGVuc3VyZXMgdGhhdFxuICAvLyB0aGVyZSB3b24ndCBiZSBtdWx0aXBsZSB3YXJuaW5ncy4gZS5nLiBpZiBgbWF0LWNvcmUtdGhlbWVgIHJlcG9ydHMgYSB3YXJuaW5nLCB0aGVuXG4gIC8vIHRoZSBpbXBvcnRlZCB0aGVtZXMgKHN1Y2ggYXMgYG1hdC1yaXBwbGUtdGhlbWVgKSBzaG91bGQgbm90IHJlcG9ydCBhZ2Fpbi5cbiAgQGluY2x1ZGUgdGhlbWluZy5wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LWNvcmUnKSB7XG4gICAgQGluY2x1ZGUgcmlwcGxlLXRoZW1lLnRoZW1lKCR0aGVtZSk7XG4gICAgQGluY2x1ZGUgb3B0aW9uLXRoZW1lLnRoZW1lKCR0aGVtZSk7XG4gICAgQGluY2x1ZGUgb3B0Z3JvdXAtdGhlbWUudGhlbWUoJHRoZW1lKTtcbiAgICBAaW5jbHVkZSBwc2V1ZG8tY2hlY2tib3gtdGhlbWUudGhlbWUoJHRoZW1lKTtcblxuICAgICRjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgQGlmICRjb2xvciAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIGNvbG9yKCRjb2xvcik7XG4gICAgfVxuICB9XG59XG4iLCJAdXNlICdzYXNzOm1hcCc7XG5AdXNlICdzYXNzOm1hdGgnO1xuQHVzZSAnc2FzczptZXRhJztcbkB1c2UgJ3ZhcmlhYmxlcyc7XG5cblxuLy8gQSBjb2xsZWN0aW9uIG9mIG1peGlucyBhbmQgQ1NTIGNsYXNzZXMgdGhhdCBjYW4gYmUgdXNlZCB0byBhcHBseSBlbGV2YXRpb24gdG8gYSBtYXRlcmlhbFxuLy8gZWxlbWVudC5cbi8vIFNlZTogaHR0cHM6Ly9tYXRlcmlhbC5pby9kZXNpZ24vZW52aXJvbm1lbnQvZWxldmF0aW9uLmh0bWxcbi8vIEV4YW1wbGVzOlxuLy9cbi8vXG4vLyAubWF0LWZvbyB7XG4vLyAgIEBpbmNsdWRlICRtYXQtZWxldmF0aW9uKDIpO1xuLy9cbi8vICAgJjphY3RpdmUge1xuLy8gICAgIEBpbmNsdWRlICRtYXQtZWxldmF0aW9uKDgpO1xuLy8gICB9XG4vLyB9XG4vL1xuLy8gPGRpdiBpZD1cImV4dGVybmFsLWNhcmRcIiBjbGFzcz1cIm1hdC1lbGV2YXRpb24tejJcIj48cD5Tb21lIGNvbnRlbnQ8L3A+PC9kaXY+XG4vL1xuLy8gRm9yIGFuIGV4cGxhbmF0aW9uIG9mIHRoZSBkZXNpZ24gYmVoaW5kIGhvdyBlbGV2YXRpb24gaXMgaW1wbGVtZW50ZWQsIHNlZSB0aGUgZGVzaWduIGRvYyBhdFxuLy8gaHR0cHM6Ly9nb28uZ2wvS3EwazlaLlxuXG4vLyBDb2xvcnMgZm9yIHVtYnJhLCBwZW51bWJyYSwgYW5kIGFtYmllbnQgc2hhZG93cy4gQXMgZGVzY3JpYmVkIGluIHRoZSBkZXNpZ24gZG9jLCBlYWNoIGVsZXZhdGlvblxuLy8gbGV2ZWwgaXMgY3JlYXRlZCB1c2luZyBhIHNldCBvZiAzIHNoYWRvdyB2YWx1ZXMsIG9uZSBmb3IgdW1icmEgKHRoZSBzaGFkb3cgcmVwcmVzZW50aW5nIHRoZVxuLy8gc3BhY2UgY29tcGxldGVseSBvYnNjdXJlZCBieSBhbiBvYmplY3QgcmVsYXRpdmUgdG8gaXRzIGxpZ2h0IHNvdXJjZSksIG9uZSBmb3IgcGVudW1icmEgKHRoZVxuLy8gc3BhY2UgcGFydGlhbGx5IG9ic2N1cmVkIGJ5IGFuIG9iamVjdCksIGFuZCBvbmUgZm9yIGFtYmllbnQgKHRoZSBzcGFjZSB3aGljaCBjb250YWlucyB0aGUgb2JqZWN0XG4vLyBpdHNlbGYpLiBGb3IgYSBmdXJ0aGVyIGV4cGxhbmF0aW9uIG9mIHRoZXNlIHRlcm1zIGFuZCB0aGVpciBtZWFuaW5ncywgc2VlXG4vLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9VbWJyYSxfcGVudW1icmFfYW5kX2FudHVtYnJhLlxuXG4vLyBNYXBzIGZvciB0aGUgZGlmZmVyZW50IHNoYWRvdyBzZXRzIGFuZCB0aGVpciB2YWx1ZXMgd2l0aGluIGVhY2ggei1zcGFjZS4gVGhlc2UgdmFsdWVzIHdlcmVcbi8vIGNyZWF0ZWQgYnkgdGFraW5nIGEgZmV3IHJlZmVyZW5jZSBzaGFkb3cgc2V0cyBjcmVhdGVkIGJ5IEdvb2dsZSdzIERlc2lnbmVycyBhbmQgaW50ZXJwb2xhdGluZ1xuLy8gYWxsIG9mIHRoZSB2YWx1ZXMgYmV0d2VlbiB0aGVtLlxuXG5AZnVuY3Rpb24gX2dldC11bWJyYS1tYXAoJGNvbG9yLCAkb3BhY2l0eSkge1xuICAkc2hhZG93LWNvbG9yOiBpZihtZXRhLnR5cGUtb2YoJGNvbG9yKSA9PSBjb2xvciwgcmdiYSgkY29sb3IsICRvcGFjaXR5ICogMC4yKSwgJGNvbG9yKTtcblxuICBAcmV0dXJuIChcbiAgICAwOiAnMHB4IDBweCAwcHggMHB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDE6ICcwcHggMnB4IDFweCAtMXB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDI6ICcwcHggM3B4IDFweCAtMnB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDM6ICcwcHggM3B4IDNweCAtMnB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDQ6ICcwcHggMnB4IDRweCAtMXB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDU6ICcwcHggM3B4IDVweCAtMXB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDY6ICcwcHggM3B4IDVweCAtMXB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDc6ICcwcHggNHB4IDVweCAtMnB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDg6ICcwcHggNXB4IDVweCAtM3B4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDk6ICcwcHggNXB4IDZweCAtM3B4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDEwOiAnMHB4IDZweCA2cHggLTNweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAxMTogJzBweCA2cHggN3B4IC00cHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMTI6ICcwcHggN3B4IDhweCAtNHB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDEzOiAnMHB4IDdweCA4cHggLTRweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAxNDogJzBweCA3cHggOXB4IC00cHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMTU6ICcwcHggOHB4IDlweCAtNXB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDE2OiAnMHB4IDhweCAxMHB4IC01cHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMTc6ICcwcHggOHB4IDExcHggLTVweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAxODogJzBweCA5cHggMTFweCAtNXB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDE5OiAnMHB4IDlweCAxMnB4IC02cHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMjA6ICcwcHggMTBweCAxM3B4IC02cHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMjE6ICcwcHggMTBweCAxM3B4IC02cHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMjI6ICcwcHggMTBweCAxNHB4IC02cHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMjM6ICcwcHggMTFweCAxNHB4IC03cHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMjQ6ICcwcHggMTFweCAxNXB4IC03cHggI3skc2hhZG93LWNvbG9yfSdcbiAgKTtcbn1cblxuQGZ1bmN0aW9uIF9nZXQtcGVudW1icmEtbWFwKCRjb2xvciwgJG9wYWNpdHkpIHtcbiAgJHNoYWRvdy1jb2xvcjogaWYobWV0YS50eXBlLW9mKCRjb2xvcikgPT0gY29sb3IsIHJnYmEoJGNvbG9yLCAkb3BhY2l0eSAqIDAuMTQpLCAkY29sb3IpO1xuXG4gIEByZXR1cm4gKFxuICAgIDA6ICcwcHggMHB4IDBweCAwcHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMTogJzBweCAxcHggMXB4IDBweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAyOiAnMHB4IDJweCAycHggMHB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDM6ICcwcHggM3B4IDRweCAwcHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgNDogJzBweCA0cHggNXB4IDBweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICA1OiAnMHB4IDVweCA4cHggMHB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDY6ICcwcHggNnB4IDEwcHggMHB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDc6ICcwcHggN3B4IDEwcHggMXB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDg6ICcwcHggOHB4IDEwcHggMXB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDk6ICcwcHggOXB4IDEycHggMXB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDEwOiAnMHB4IDEwcHggMTRweCAxcHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMTE6ICcwcHggMTFweCAxNXB4IDFweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAxMjogJzBweCAxMnB4IDE3cHggMnB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDEzOiAnMHB4IDEzcHggMTlweCAycHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMTQ6ICcwcHggMTRweCAyMXB4IDJweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAxNTogJzBweCAxNXB4IDIycHggMnB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDE2OiAnMHB4IDE2cHggMjRweCAycHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMTc6ICcwcHggMTdweCAyNnB4IDJweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAxODogJzBweCAxOHB4IDI4cHggMnB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDE5OiAnMHB4IDE5cHggMjlweCAycHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMjA6ICcwcHggMjBweCAzMXB4IDNweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAyMTogJzBweCAyMXB4IDMzcHggM3B4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDIyOiAnMHB4IDIycHggMzVweCAzcHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMjM6ICcwcHggMjNweCAzNnB4IDNweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAyNDogJzBweCAyNHB4IDM4cHggM3B4ICN7JHNoYWRvdy1jb2xvcn0nXG4gICk7XG59XG5cbkBmdW5jdGlvbiBfZ2V0LWFtYmllbnQtbWFwKCRjb2xvciwgJG9wYWNpdHkpIHtcbiAgJHNoYWRvdy1jb2xvcjogaWYobWV0YS50eXBlLW9mKCRjb2xvcikgPT0gY29sb3IsIHJnYmEoJGNvbG9yLCAkb3BhY2l0eSAqIDAuMTIpLCAkY29sb3IpO1xuXG4gIEByZXR1cm4gKFxuICAgIDA6ICcwcHggMHB4IDBweCAwcHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMTogJzBweCAxcHggM3B4IDBweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAyOiAnMHB4IDFweCA1cHggMHB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDM6ICcwcHggMXB4IDhweCAwcHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgNDogJzBweCAxcHggMTBweCAwcHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgNTogJzBweCAxcHggMTRweCAwcHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgNjogJzBweCAxcHggMThweCAwcHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgNzogJzBweCAycHggMTZweCAxcHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgODogJzBweCAzcHggMTRweCAycHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgOTogJzBweCAzcHggMTZweCAycHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMTA6ICcwcHggNHB4IDE4cHggM3B4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDExOiAnMHB4IDRweCAyMHB4IDNweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAxMjogJzBweCA1cHggMjJweCA0cHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMTM6ICcwcHggNXB4IDI0cHggNHB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDE0OiAnMHB4IDVweCAyNnB4IDRweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAxNTogJzBweCA2cHggMjhweCA1cHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMTY6ICcwcHggNnB4IDMwcHggNXB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDE3OiAnMHB4IDZweCAzMnB4IDVweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAxODogJzBweCA3cHggMzRweCA2cHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMTk6ICcwcHggN3B4IDM2cHggNnB4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDIwOiAnMHB4IDhweCAzOHB4IDdweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAyMTogJzBweCA4cHggNDBweCA3cHggI3skc2hhZG93LWNvbG9yfScsXG4gICAgMjI6ICcwcHggOHB4IDQycHggN3B4ICN7JHNoYWRvdy1jb2xvcn0nLFxuICAgIDIzOiAnMHB4IDlweCA0NHB4IDhweCAjeyRzaGFkb3ctY29sb3J9JyxcbiAgICAyNDogJzBweCA5cHggNDZweCA4cHggI3skc2hhZG93LWNvbG9yfSdcbiAgKTtcbn1cblxuLy8gVGhlIGRlZmF1bHQgZHVyYXRpb24gdmFsdWUgZm9yIGVsZXZhdGlvbiB0cmFuc2l0aW9ucy5cbiR0cmFuc2l0aW9uLWR1cmF0aW9uOiAyODBtcyAhZGVmYXVsdDtcblxuLy8gVGhlIGRlZmF1bHQgZWFzaW5nIHZhbHVlIGZvciBlbGV2YXRpb24gdHJhbnNpdGlvbnMuXG4kdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IHZhcmlhYmxlcy4kZmFzdC1vdXQtc2xvdy1pbi10aW1pbmctZnVuY3Rpb247XG5cbi8vIFRoZSBkZWZhdWx0IGNvbG9yIGZvciBlbGV2YXRpb24gc2hhZG93cy5cbiRjb2xvcjogYmxhY2sgIWRlZmF1bHQ7XG5cbi8vIFRoZSBkZWZhdWx0IG9wYWNpdHkgc2NhbGluZyB2YWx1ZSBmb3IgZWxldmF0aW9uIHNoYWRvd3MuXG4kb3BhY2l0eTogMSAhZGVmYXVsdDtcblxuLy8gUHJlZml4IGZvciBlbGV2YXRpb24tcmVsYXRlZCBzZWxlY3RvcnMuXG4kcHJlZml4OiAnbWF0LWVsZXZhdGlvbi16JztcblxuLy8gQXBwbGllcyB0aGUgY29ycmVjdCBjc3MgcnVsZXMgdG8gYW4gZWxlbWVudCB0byBnaXZlIGl0IHRoZSBlbGV2YXRpb24gc3BlY2lmaWVkIGJ5ICR6VmFsdWUuXG4vLyBUaGUgJHpWYWx1ZSBtdXN0IGJlIGJldHdlZW4gMCBhbmQgMjQuXG5AbWl4aW4gZWxldmF0aW9uKCR6VmFsdWUsICRjb2xvcjogJGNvbG9yLCAkb3BhY2l0eTogJG9wYWNpdHkpIHtcbiAgQGlmIG1ldGEudHlwZS1vZigkelZhbHVlKSAhPSBudW1iZXIgb3Igbm90IG1hdGguaXMtdW5pdGxlc3MoJHpWYWx1ZSkge1xuICAgIEBlcnJvciAnJHpWYWx1ZSBtdXN0IGJlIGEgdW5pdGxlc3MgbnVtYmVyJztcbiAgfVxuICBAaWYgJHpWYWx1ZSA8IDAgb3IgJHpWYWx1ZSA+IDI0IHtcbiAgICBAZXJyb3IgJyR6VmFsdWUgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDI0JztcbiAgfVxuXG4gIGJveC1zaGFkb3c6ICN7bWFwLmdldChfZ2V0LXVtYnJhLW1hcCgkY29sb3IsICRvcGFjaXR5KSwgJHpWYWx1ZSl9LFxuICAgICAgICAgICAgICAje21hcC5nZXQoX2dldC1wZW51bWJyYS1tYXAoJGNvbG9yLCAkb3BhY2l0eSksICR6VmFsdWUpfSxcbiAgICAgICAgICAgICAgI3ttYXAuZ2V0KF9nZXQtYW1iaWVudC1tYXAoJGNvbG9yLCAkb3BhY2l0eSksICR6VmFsdWUpfTtcbn1cblxuLy8gQXBwbGllcyB0aGUgZWxldmF0aW9uIHRvIGFuIGVsZW1lbnQgaW4gYSBtYW5uZXIgdGhhdCBhbGxvd3Ncbi8vIGNvbnN1bWVycyB0byBvdmVycmlkZSBpdCB2aWEgdGhlIE1hdGVyaWFsIGVsZXZhdGlvbiBjbGFzc2VzLlxuQG1peGluIG92ZXJyaWRhYmxlLWVsZXZhdGlvbihcbiAgICAkelZhbHVlLFxuICAgICRjb2xvcjogJGNvbG9yLFxuICAgICRvcGFjaXR5OiAkb3BhY2l0eSkge1xuICAmOm5vdChbY2xhc3MqPScjeyRwcmVmaXh9J10pIHtcbiAgICBAaW5jbHVkZSBlbGV2YXRpb24oJHpWYWx1ZSwgJGNvbG9yLCAkb3BhY2l0eSk7XG4gIH1cbn1cblxuLy8gUmV0dXJucyBhIHN0cmluZyB0aGF0IGNhbiBiZSB1c2VkIGFzIHRoZSB2YWx1ZSBmb3IgYSB0cmFuc2l0aW9uIHByb3BlcnR5IGZvciBlbGV2YXRpb24uXG4vLyBDYWxsaW5nIHRoaXMgZnVuY3Rpb24gZGlyZWN0bHkgaXMgdXNlZnVsIGluIHNpdHVhdGlvbnMgd2hlcmUgYSBjb21wb25lbnQgbmVlZHMgdG8gdHJhbnNpdGlvblxuLy8gbW9yZSB0aGFuIG9uZSBwcm9wZXJ0eS5cbi8vXG4vLyAuZm9vIHtcbi8vICAgdHJhbnNpdGlvbjogbWF0LWVsZXZhdGlvbi10cmFuc2l0aW9uLXByb3BlcnR5LXZhbHVlKCksIG9wYWNpdHkgMTAwbXMgZWFzZTtcbi8vIH1cbkBmdW5jdGlvbiBwcml2YXRlLXRyYW5zaXRpb24tcHJvcGVydHktdmFsdWUoXG4gICAgJGR1cmF0aW9uOiAkdHJhbnNpdGlvbi1kdXJhdGlvbixcbiAgICAkZWFzaW5nOiAkdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24pIHtcbiAgQHJldHVybiBib3gtc2hhZG93ICN7JGR1cmF0aW9ufSAjeyRlYXNpbmd9O1xufVxuXG4vLyBBcHBsaWVzIHRoZSBjb3JyZWN0IGNzcyBydWxlcyBuZWVkZWQgdG8gaGF2ZSBhbiBlbGVtZW50IHRyYW5zaXRpb24gYmV0d2VlbiBlbGV2YXRpb25zLlxuLy8gVGhpcyBtaXhpbiBzaG91bGQgYmUgYXBwbGllZCB0byBlbGVtZW50cyB3aG9zZSBlbGV2YXRpb24gdmFsdWVzIHdpbGwgY2hhbmdlIGRlcGVuZGluZyBvbiB0aGVpclxuLy8gY29udGV4dCAoZS5nLiB3aGVuIGFjdGl2ZSBvciBkaXNhYmxlZCkuXG4vL1xuLy8gTk9URSh0cmF2aXNrYXVmbWFuKTogQm90aCB0aGlzIG1peGluIGFuZCB0aGUgYWJvdmUgZnVuY3Rpb24gdXNlIGRlZmF1bHQgcGFyYW1ldGVycyBzbyB0aGV5IGNhblxuLy8gYmUgdXNlZCBpbiB0aGUgc2FtZSB3YXkgYnkgY2xpZW50cy5cbkBtaXhpbiBlbGV2YXRpb24tdHJhbnNpdGlvbihcbiAgICAkZHVyYXRpb246ICR0cmFuc2l0aW9uLWR1cmF0aW9uLFxuICAgICRlYXNpbmc6ICR0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbikge1xuICB0cmFuc2l0aW9uOiBwcml2YXRlLXRyYW5zaXRpb24tcHJvcGVydHktdmFsdWUoJGR1cmF0aW9uLCAkZWFzaW5nKTtcbn1cbiIsIkB1c2UgJ3Nhc3M6bWFwJztcbkB1c2UgJy4uL2NvcmUvc3R5bGUvcHJpdmF0ZSc7XG5AdXNlICcuLi9jb3JlL3RoZW1pbmcvdGhlbWluZyc7XG5cbkBtaXhpbiBjb2xvcigkY29uZmlnLW9yLXRoZW1lKSB7XG4gICRjb25maWc6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkY29uZmlnLW9yLXRoZW1lKTtcbiAgJGZvcmVncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgZm9yZWdyb3VuZCk7XG4gICRiYWNrZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGJhY2tncm91bmQpO1xuXG4gIC5tYXQtYXV0b2NvbXBsZXRlLXBhbmVsIHtcbiAgICBAaW5jbHVkZSBwcml2YXRlLnByaXZhdGUtdGhlbWUtb3ZlcnJpZGFibGUtZWxldmF0aW9uKDQsICRjb25maWcpO1xuICAgIGJhY2tncm91bmQ6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYmFja2dyb3VuZCwgY2FyZCk7XG4gICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgdGV4dCk7XG5cbiAgICAvLyBTZWxlY3RlZCBvcHRpb25zIGluIGF1dG9jb21wbGV0ZXMgc2hvdWxkIG5vdCBiZSBncmF5LCBidXQgd2VcbiAgICAvLyBvbmx5IHdhbnQgdG8gb3ZlcnJpZGUgdGhlIGJhY2tncm91bmQgZm9yIHNlbGVjdGVkIG9wdGlvbnMgaWZcbiAgICAvLyB0aGV5IGFyZSAqbm90KiBpbiBob3ZlciBvciBmb2N1cyBzdGF0ZS4gVGhpcyBjaGFuZ2UgaGFzIHRvIGJlXG4gICAgLy8gbWFkZSBoZXJlIGJlY2F1c2UgYmFzZSBvcHRpb24gc3R5bGVzIGFyZSBzaGFyZWQgYmV0d2VlbiB0aGVcbiAgICAvLyBhdXRvY29tcGxldGUgYW5kIHRoZSBzZWxlY3QuXG4gICAgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkOm5vdCgubWF0LWFjdGl2ZSk6bm90KDpob3Zlcikge1xuICAgICAgYmFja2dyb3VuZDogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLCBjYXJkKTtcblxuICAgICAgJjpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpIHtcbiAgICAgICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgdGV4dCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiB0eXBvZ3JhcGh5KCRjb25maWctb3ItdGhlbWUpIHt9XG5cbkBtaXhpbiBfZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZykge1xuICAkdGhlbWU6IHRoZW1pbmcucHJpdmF0ZS1sZWdhY3ktZ2V0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICBAaW5jbHVkZSB0aGVtaW5nLnByaXZhdGUtY2hlY2stZHVwbGljYXRlLXRoZW1lLXN0eWxlcygkdGhlbWUsICdtYXQtYXV0b2NvbXBsZXRlJykge1xuICAgICRjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgJGRlbnNpdHk6IHRoZW1pbmcuZ2V0LWRlbnNpdHktY29uZmlnKCR0aGVtZSk7XG4gICAgJHR5cG9ncmFwaHk6IHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCR0aGVtZSk7XG5cbiAgICBAaWYgJGNvbG9yICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgX2RlbnNpdHkoJGRlbnNpdHkpO1xuICAgIH1cbiAgICBAaWYgJHR5cG9ncmFwaHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5KCR0eXBvZ3JhcGh5KTtcbiAgICB9XG4gIH1cbn1cbiIsIkB1c2UgJ3Nhc3M6bWFwJztcbkB1c2UgJy4uL2NvcmUvdGhlbWluZy90aGVtaW5nJztcblxuQG1peGluIGNvbG9yKCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAkZm9yZWdyb3VuZDogbWFwLmdldCgkY29uZmlnLCBmb3JlZ3JvdW5kKTtcblxuICAubWF0LWRpdmlkZXIge1xuICAgIGJvcmRlci10b3AtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgZGl2aWRlcik7XG4gIH1cblxuICAubWF0LWRpdmlkZXItdmVydGljYWwge1xuICAgIGJvcmRlci1yaWdodC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBkaXZpZGVyKTtcbiAgfVxufVxuXG5AbWl4aW4gdHlwb2dyYXBoeSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gX2RlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIHRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiB0aGVtaW5nLnByaXZhdGUtbGVnYWN5LWdldC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgQGluY2x1ZGUgdGhlbWluZy5wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LWRpdmlkZXInKSB7XG4gICAgJGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJHRoZW1lKTtcbiAgICAkZGVuc2l0eTogdGhlbWluZy5nZXQtZGVuc2l0eS1jb25maWcoJHRoZW1lKTtcbiAgICAkdHlwb2dyYXBoeTogdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJHRoZW1lKTtcblxuICAgIEBpZiAkY29sb3IgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBjb2xvcigkY29sb3IpO1xuICAgIH1cbiAgICBAaWYgJGRlbnNpdHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBfZGVuc2l0eSgkZGVuc2l0eSk7XG4gICAgfVxuICAgIEBpZiAkdHlwb2dyYXBoeSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIHR5cG9ncmFwaHkoJHR5cG9ncmFwaHkpO1xuICAgIH1cbiAgfVxufVxuIiwiQG1peGluIHByaXZhdGUtZXhwYW5zaW9uLWZvY3VzIHtcbiAgLm1hdC1leHBhbnNpb24tcGFuZWwge1xuICAgICYgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLmNkay1rZXlib2FyZC1mb2N1c2VkLFxuICAgICYgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLmNkay1wcm9ncmFtLWZvY3VzZWQsXG4gICAgJjpub3QoLm1hdC1leHBhbmRlZCkgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyOmhvdmVyIHtcbiAgICAgICY6bm90KFthcmlhLWRpc2FibGVkPSd0cnVlJ10pIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCJAdXNlICdzYXNzOm1hcCc7XG5AdXNlICcuLi90aGVtaW5nL3RoZW1pbmcnO1xuXG4vLyBSZW5kZXJzIGEgZ3JhZGllbnQgZm9yIHNob3dpbmcgdGhlIGRhc2hlZCBsaW5lIHdoZW4gdGhlIGlucHV0IGlzIGRpc2FibGVkLlxuLy8gVW5saWtlIHVzaW5nIGEgYm9yZGVyLCBhIGdyYWRpZW50IGFsbG93cyB1cyB0byBhZGp1c3QgdGhlIHNwYWNpbmcgb2YgdGhlIGRvdHRlZCBsaW5lXG4vLyB0byBtYXRjaCB0aGUgTWF0ZXJpYWwgRGVzaWduIHNwZWMuXG5AbWl4aW4gcHJpdmF0ZS1jb250cm9sLWRpc2FibGVkLXVuZGVybGluZSgkY29sb3IpIHtcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCAkY29sb3IgMCUsICRjb2xvciAzMyUsIHRyYW5zcGFyZW50IDAlKTtcbiAgYmFja2dyb3VuZC1zaXplOiA0cHggMTAwJTtcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14O1xufVxuXG4vLyBGaWd1cmVzIG91dCB0aGUgY29sb3Igb2YgdGhlIHBsYWNlaG9sZGVyIGZvciBhIGZvcm0gY29udHJvbC5cbi8vIFVzZWQgcHJpbWFyaWx5IHRvIHByZXZlbnQgdGhlIHZhcmlvdXMgZm9ybSBjb250cm9scyBmcm9tXG4vLyBiZWNvbWluZyBvdXQgb2Ygc3luYyBzaW5jZSB0aGVzZSBjb2xvcnMgYXJlbid0IGluIGEgcGFsZXR0ZS5cbkBmdW5jdGlvbiBwcml2YXRlLWNvbnRyb2wtcGxhY2Vob2xkZXItY29sb3IoJGNvbmZpZykge1xuICAkZm9yZWdyb3VuZDogbWFwLmdldCgkY29uZmlnLCBmb3JlZ3JvdW5kKTtcbiAgJGlzLWRhcmstdGhlbWU6IG1hcC5nZXQoJGNvbmZpZywgaXMtZGFyayk7XG4gIEByZXR1cm4gdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBzZWNvbmRhcnktdGV4dCxcbiAgICBpZigkaXMtZGFyay10aGVtZSwgMC41LCAwLjQyKSk7XG59XG4iLCJAdXNlICdzYXNzOm1hcCc7XG5AdXNlICcuLi9jb3JlL3RoZW1pbmcvdGhlbWluZyc7XG5AdXNlICcuLi9jb3JlL3N0eWxlL2Zvcm0tY29tbW9uJztcblxuXG4vLyBUaGVtZSBzdHlsZXMgdGhhdCBvbmx5IGFwcGx5IHRvIHRoZSBzdGFuZGFyZCBhcHBlYXJhbmNlIG9mIHRoZSBmb3JtLWZpZWxkLlxuXG5AbWl4aW4gc3RhbmRhcmQtY29sb3IoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRmb3JlZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGZvcmVncm91bmQpO1xuICAkaXMtZGFyay10aGVtZTogbWFwLmdldCgkY29uZmlnLCBpcy1kYXJrKTtcbiAgJHVuZGVybGluZS1jb2xvcjpcbiAgICB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIGRpdmlkZXIsIGlmKCRpcy1kYXJrLXRoZW1lLCAwLjcsIDAuNDIpKTtcblxuICAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1zdGFuZGFyZCB7XG4gICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZSB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdW5kZXJsaW5lLWNvbG9yO1xuICAgIH1cblxuICAgICYubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZSB7XG4gICAgICBAaW5jbHVkZSBmb3JtLWNvbW1vbi5wcml2YXRlLWNvbnRyb2wtZGlzYWJsZWQtdW5kZXJsaW5lKCR1bmRlcmxpbmUtY29sb3IpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gc3RhbmRhcmQtdHlwb2dyYXBoeSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gcHJpdmF0ZS1mb3JtLWZpZWxkLXN0YW5kYXJkLWRlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIHN0YW5kYXJkLXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiB0aGVtaW5nLnByaXZhdGUtbGVnYWN5LWdldC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgQGluY2x1ZGUgdGhlbWluZy5wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LWZvcm0tZmllbGQtc3RhbmRhcmQnKSB7XG4gICAgJGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJHRoZW1lKTtcbiAgICAkZGVuc2l0eTogdGhlbWluZy5nZXQtZGVuc2l0eS1jb25maWcoJHRoZW1lKTtcbiAgICAkdHlwb2dyYXBoeTogdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJHRoZW1lKTtcblxuICAgIEBpZiAkY29sb3IgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBzdGFuZGFyZC1jb2xvcigkY29sb3IpO1xuICAgIH1cbiAgICBAaWYgJGRlbnNpdHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBwcml2YXRlLWZvcm0tZmllbGQtc3RhbmRhcmQtZGVuc2l0eSgkZGVuc2l0eSk7XG4gICAgfVxuICAgIEBpZiAkdHlwb2dyYXBoeSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIHN0YW5kYXJkLXR5cG9ncmFwaHkoJHR5cG9ncmFwaHkpO1xuICAgIH1cbiAgfVxufVxuIiwiQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnLi4vY29yZS90aGVtaW5nL3RoZW1pbmcnO1xuXG5AbWl4aW4gY29sb3IoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRwcmltYXJ5OiBtYXAuZ2V0KCRjb25maWcsIHByaW1hcnkpO1xuICAkYWNjZW50OiBtYXAuZ2V0KCRjb25maWcsIGFjY2VudCk7XG4gICR3YXJuOiBtYXAuZ2V0KCRjb25maWcsIHdhcm4pO1xuICAkYmFja2dyb3VuZDogbWFwLmdldCgkY29uZmlnLCBiYWNrZ3JvdW5kKTtcbiAgJGZvcmVncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgZm9yZWdyb3VuZCk7XG5cbiAgLm1hdC1pY29uIHtcbiAgICAmLm1hdC1wcmltYXJ5IHtcbiAgICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHByaW1hcnksIHRleHQpO1xuICAgIH1cblxuICAgICYubWF0LWFjY2VudCB7XG4gICAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRhY2NlbnQsIHRleHQpO1xuICAgIH1cblxuICAgICYubWF0LXdhcm4ge1xuICAgICAgY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkd2FybiwgdGV4dCk7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiB0eXBvZ3JhcGh5KCRjb25maWctb3ItdGhlbWUpIHt9XG5cbkBtaXhpbiBfZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZykge1xuICAkdGhlbWU6IHRoZW1pbmcucHJpdmF0ZS1sZWdhY3ktZ2V0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICBAaW5jbHVkZSB0aGVtaW5nLnByaXZhdGUtY2hlY2stZHVwbGljYXRlLXRoZW1lLXN0eWxlcygkdGhlbWUsICdtYXQtaWNvbicpIHtcbiAgICAkY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkdGhlbWUpO1xuICAgICRkZW5zaXR5OiB0aGVtaW5nLmdldC1kZW5zaXR5LWNvbmZpZygkdGhlbWUpO1xuICAgICR0eXBvZ3JhcGh5OiB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkdGhlbWUpO1xuXG4gICAgQGlmICRjb2xvciAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIGNvbG9yKCRjb2xvcik7XG4gICAgfVxuICAgIEBpZiAkZGVuc2l0eSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIF9kZW5zaXR5KCRkZW5zaXR5KTtcbiAgICB9XG4gICAgQGlmICR0eXBvZ3JhcGh5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgdHlwb2dyYXBoeSgkdHlwb2dyYXBoeSk7XG4gICAgfVxuICB9XG59XG5cbiIsIi8vIHN0eWxlbGludC1kaXNhYmxlIG1hdGVyaWFsL25vLXByZWZpeGVzXG5AbWl4aW4gdXNlci1zZWxlY3QoJHZhbHVlKSB7XG4gIC13ZWJraXQtdXNlci1zZWxlY3Q6ICR2YWx1ZTtcbiAgLW1vei11c2VyLXNlbGVjdDogJHZhbHVlO1xuICAtbXMtdXNlci1zZWxlY3Q6ICR2YWx1ZTtcbiAgdXNlci1zZWxlY3Q6ICR2YWx1ZTtcbn1cblxuQG1peGluIGlucHV0LXBsYWNlaG9sZGVyIHtcbiAgJjo6cGxhY2Vob2xkZXIge1xuICAgIEBjb250ZW50O1xuICB9XG5cbiAgJjo6LW1vei1wbGFjZWhvbGRlciB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cblxuICAmOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHtcbiAgICBAY29udGVudDtcbiAgfVxuXG4gICY6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG5AbWl4aW4gY3Vyc29yLWdyYWIge1xuICBjdXJzb3I6IC13ZWJraXQtZ3JhYjtcbiAgY3Vyc29yOiBncmFiO1xufVxuXG5AbWl4aW4gY3Vyc29yLWdyYWJiaW5nIHtcbiAgY3Vyc29yOiAtd2Via2l0LWdyYWJiaW5nO1xuICBjdXJzb3I6IGdyYWJiaW5nO1xufVxuXG5AbWl4aW4gYmFja2ZhY2UtdmlzaWJpbGl0eSgkdmFsdWUpIHtcbiAgLXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5OiAkdmFsdWU7XG4gIGJhY2tmYWNlLXZpc2liaWxpdHk6ICR2YWx1ZTtcbn1cblxuQG1peGluIHBvc2l0aW9uLXN0aWNreSgkaW1wb3J0YW50OiBmYWxzZSkge1xuICBwb3NpdGlvbjogLXdlYmtpdC1zdGlja3kgI3tpZigkaW1wb3J0YW50LCAnIWltcG9ydGFudCcsICcnKX07XG4gIHBvc2l0aW9uOiBzdGlja3kgI3tpZigkaW1wb3J0YW50LCAnIWltcG9ydGFudCcsICcnKX07XG59XG4vLyBzdHlsZWxpbnQtZW5hYmxlXG4iLCJAdXNlICdzYXNzOm1hcCc7XG5AdXNlICdzYXNzOm1ldGEnO1xuQHVzZSAnc2Fzczpjb2xvcic7XG5AdXNlICcuLi9jb3JlL3RoZW1pbmcvdGhlbWluZyc7XG5cbi8vIEFwcHJveGltYXRlcyB0aGUgY29ycmVjdCBidWZmZXIgY29sb3IgYnkgdXNpbmcgYSBtaXggYmV0d2VlbiB0aGUgdGhlbWUgY29sb3Jcbi8vIGFuZCB0aGUgdGhlbWUncyBiYWNrZ3JvdW5kIGNvbG9yLlxuQGZ1bmN0aW9uIF9nZXQtYnVmZmVyLWNvbG9yKCR0aGVtZSwgJGJhY2tncm91bmQpIHtcbiAgJHRoZW1lLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHRoZW1lKTtcbiAgLy8gUmV0dXJuIGZhbGxiYWNrIGNvbG9yIGlmIHRoZSB0aGVtZSB1c2VzIHZhcmlhYmxlcyB0byBkZWZpbmUgY29sb3JzLlxuICBAaWYgKG1ldGEudHlwZS1vZigkdGhlbWUtY29sb3IpICE9ICdjb2xvcicgb3IgbWV0YS50eXBlLW9mKCRiYWNrZ3JvdW5kKSAhPSAnY29sb3InKSB7XG4gICAgQHJldHVybiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHRoZW1lLCBsaWdodGVyKTtcbiAgfVxuICBAcmV0dXJuIGNvbG9yLm1peCgkdGhlbWUtY29sb3IsICRiYWNrZ3JvdW5kLCAkd2VpZ2h0OiAyNSUpO1xufVxuXG5AbWl4aW4gY29sb3IoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRwcmltYXJ5OiBtYXAuZ2V0KCRjb25maWcsIHByaW1hcnkpO1xuICAkYWNjZW50OiBtYXAuZ2V0KCRjb25maWcsIGFjY2VudCk7XG4gICR3YXJuOiBtYXAuZ2V0KCRjb25maWcsIHdhcm4pO1xuICAkYmFja2dyb3VuZDogbWFwLmdldChtYXAuZ2V0KCRjb25maWcsIGJhY2tncm91bmQpLCBiYWNrZ3JvdW5kKTtcblxuICAubWF0LXByb2dyZXNzLWJhci1iYWNrZ3JvdW5kIHtcbiAgICBmaWxsOiBfZ2V0LWJ1ZmZlci1jb2xvcigkcHJpbWFyeSwgJGJhY2tncm91bmQpO1xuICB9XG5cbiAgLm1hdC1wcm9ncmVzcy1iYXItYnVmZmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBfZ2V0LWJ1ZmZlci1jb2xvcigkcHJpbWFyeSwgJGJhY2tncm91bmQpO1xuICB9XG5cbiAgLm1hdC1wcm9ncmVzcy1iYXItZmlsbDo6YWZ0ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkcHJpbWFyeSk7XG4gIH1cblxuICAubWF0LXByb2dyZXNzLWJhci5tYXQtYWNjZW50IHtcbiAgICAubWF0LXByb2dyZXNzLWJhci1iYWNrZ3JvdW5kIHtcbiAgICAgIGZpbGw6IF9nZXQtYnVmZmVyLWNvbG9yKCRhY2NlbnQsICRiYWNrZ3JvdW5kKTtcbiAgICB9XG5cbiAgICAubWF0LXByb2dyZXNzLWJhci1idWZmZXIge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogX2dldC1idWZmZXItY29sb3IoJGFjY2VudCwgJGJhY2tncm91bmQpO1xuICAgIH1cblxuICAgIC5tYXQtcHJvZ3Jlc3MtYmFyLWZpbGw6OmFmdGVyIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYWNjZW50KTtcbiAgICB9XG4gIH1cblxuICAubWF0LXByb2dyZXNzLWJhci5tYXQtd2FybiB7XG4gICAgLm1hdC1wcm9ncmVzcy1iYXItYmFja2dyb3VuZCB7XG4gICAgICBmaWxsOiBfZ2V0LWJ1ZmZlci1jb2xvcigkd2FybiwgJGJhY2tncm91bmQpO1xuICAgIH1cblxuICAgIC5tYXQtcHJvZ3Jlc3MtYmFyLWJ1ZmZlciB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBfZ2V0LWJ1ZmZlci1jb2xvcigkd2FybiwgJGJhY2tncm91bmQpO1xuICAgIH1cblxuICAgIC5tYXQtcHJvZ3Jlc3MtYmFyLWZpbGw6OmFmdGVyIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkd2Fybik7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiB0eXBvZ3JhcGh5KCRjb25maWctb3ItdGhlbWUpIHt9XG5cbkBtaXhpbiBfZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZykge1xuICAkdGhlbWU6IHRoZW1pbmcucHJpdmF0ZS1sZWdhY3ktZ2V0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICBAaW5jbHVkZSB0aGVtaW5nLnByaXZhdGUtY2hlY2stZHVwbGljYXRlLXRoZW1lLXN0eWxlcygkdGhlbWUsICdtYXQtcHJvZ3Jlc3MtYmFyJykge1xuICAgICRjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgJGRlbnNpdHk6IHRoZW1pbmcuZ2V0LWRlbnNpdHktY29uZmlnKCR0aGVtZSk7XG4gICAgJHR5cG9ncmFwaHk6IHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCR0aGVtZSk7XG5cbiAgICBAaWYgJGNvbG9yICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgX2RlbnNpdHkoJGRlbnNpdHkpO1xuICAgIH1cbiAgICBAaWYgJHR5cG9ncmFwaHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5KCR0eXBvZ3JhcGh5KTtcbiAgICB9XG4gIH1cbn1cblxuIiwiQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnLi4vY29yZS90aGVtaW5nL3RoZW1pbmcnO1xuXG5AbWl4aW4gY29sb3IoJGNvbmZpZy1vci10aGVtZSkge1xuICAkY29uZmlnOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJGNvbmZpZy1vci10aGVtZSk7XG4gICRwcmltYXJ5OiBtYXAuZ2V0KCRjb25maWcsIHByaW1hcnkpO1xuICAkYWNjZW50OiBtYXAuZ2V0KCRjb25maWcsIGFjY2VudCk7XG4gICR3YXJuOiBtYXAuZ2V0KCRjb25maWcsIHdhcm4pO1xuXG4gIC5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lciwgLm1hdC1zcGlubmVyIHtcbiAgICBjaXJjbGUge1xuICAgICAgc3Ryb2tlOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHByaW1hcnkpO1xuICAgIH1cblxuICAgICYubWF0LWFjY2VudCBjaXJjbGUge1xuICAgICAgc3Ryb2tlOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGFjY2VudCk7XG4gICAgfVxuXG4gICAgJi5tYXQtd2FybiBjaXJjbGUge1xuICAgICAgc3Ryb2tlOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHdhcm4pO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gdHlwb2dyYXBoeSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gX2RlbnNpdHkoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIHRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpIHtcbiAgJHRoZW1lOiB0aGVtaW5nLnByaXZhdGUtbGVnYWN5LWdldC10aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKTtcbiAgQGluY2x1ZGUgdGhlbWluZy5wcml2YXRlLWNoZWNrLWR1cGxpY2F0ZS10aGVtZS1zdHlsZXMoJHRoZW1lLCAnbWF0LXByb2dyZXNzLXNwaW5uZXInKSB7XG4gICAgJGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1jb25maWcoJHRoZW1lKTtcbiAgICAkZGVuc2l0eTogdGhlbWluZy5nZXQtZGVuc2l0eS1jb25maWcoJHRoZW1lKTtcbiAgICAkdHlwb2dyYXBoeTogdGhlbWluZy5nZXQtdHlwb2dyYXBoeS1jb25maWcoJHRoZW1lKTtcblxuICAgIEBpZiAkY29sb3IgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBjb2xvcigkY29sb3IpO1xuICAgIH1cbiAgICBAaWYgJGRlbnNpdHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSBfZGVuc2l0eSgkZGVuc2l0eSk7XG4gICAgfVxuICAgIEBpZiAkdHlwb2dyYXBoeSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIHR5cG9ncmFwaHkoJHR5cG9ncmFwaHkpO1xuICAgIH1cbiAgfVxufVxuIiwiQHVzZSAnc2Fzczpjb2xvcic7XG5AdXNlICdzYXNzOm1hcCc7XG5AdXNlICdzYXNzOm1ldGEnO1xuQHVzZSAnLi4vY29yZS9zdHlsZS9wcml2YXRlJztcbkB1c2UgJy4uL2NvcmUvdGhlbWluZy90aGVtaW5nJztcblxuQG1peGluIGNvbG9yKCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAkcHJpbWFyeTogbWFwLmdldCgkY29uZmlnLCBwcmltYXJ5KTtcbiAgJGFjY2VudDogbWFwLmdldCgkY29uZmlnLCBhY2NlbnQpO1xuICAkd2FybjogbWFwLmdldCgkY29uZmlnLCB3YXJuKTtcbiAgJGJhY2tncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgYmFja2dyb3VuZCk7XG4gICRmb3JlZ3JvdW5kOiBtYXAuZ2V0KCRjb25maWcsIGZvcmVncm91bmQpO1xuXG4gICRkcmF3ZXItYmFja2dyb3VuZC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLCBkaWFsb2cpO1xuICAkZHJhd2VyLWNvbnRhaW5lci1iYWNrZ3JvdW5kLWNvbG9yOiAgdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRiYWNrZ3JvdW5kLCBiYWNrZ3JvdW5kKTtcbiAgJGRyYXdlci1wdXNoLWJhY2tncm91bmQtY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYmFja2dyb3VuZCwgZGlhbG9nKTtcbiAgJGRyYXdlci1zaWRlLWJvcmRlcjogc29saWQgMXB4IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkZm9yZWdyb3VuZCwgZGl2aWRlcik7XG5cbiAgLm1hdC1kcmF3ZXItY29udGFpbmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZHJhd2VyLWNvbnRhaW5lci1iYWNrZ3JvdW5kLWNvbG9yO1xuICAgIGNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGZvcmVncm91bmQsIHRleHQpO1xuICB9XG5cbiAgLm1hdC1kcmF3ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRkcmF3ZXItYmFja2dyb3VuZC1jb2xvcjtcbiAgICBjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCB0ZXh0KTtcblxuICAgICYubWF0LWRyYXdlci1wdXNoIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRkcmF3ZXItcHVzaC1iYWNrZ3JvdW5kLWNvbG9yO1xuICAgIH1cblxuICAgICY6bm90KC5tYXQtZHJhd2VyLXNpZGUpIHtcbiAgICAgIC8vIFRoZSBlbGV2YXRpb24gb2Ygei0xNiBpcyBub3RlZCBpbiB0aGUgZGVzaWduIHNwZWNpZmljYXRpb25zLlxuICAgICAgLy8gU2VlIGh0dHBzOi8vbWF0ZXJpYWwuaW8vZGVzaWduL2NvbXBvbmVudHMvbmF2aWdhdGlvbi1kcmF3ZXIuaHRtbFxuICAgICAgQGluY2x1ZGUgcHJpdmF0ZS5wcml2YXRlLXRoZW1lLWVsZXZhdGlvbigxNiwgJGNvbmZpZyk7XG4gICAgfVxuICB9XG5cbiAgLm1hdC1kcmF3ZXItc2lkZSB7XG4gICAgYm9yZGVyLXJpZ2h0OiAkZHJhd2VyLXNpZGUtYm9yZGVyO1xuXG4gICAgJi5tYXQtZHJhd2VyLWVuZCB7XG4gICAgICBib3JkZXItbGVmdDogJGRyYXdlci1zaWRlLWJvcmRlcjtcbiAgICAgIGJvcmRlci1yaWdodDogbm9uZTtcbiAgICB9XG4gIH1cblxuICBbZGlyPSdydGwnXSAubWF0LWRyYXdlci1zaWRlIHtcbiAgICBib3JkZXItbGVmdDogJGRyYXdlci1zaWRlLWJvcmRlcjtcbiAgICBib3JkZXItcmlnaHQ6IG5vbmU7XG5cbiAgICAmLm1hdC1kcmF3ZXItZW5kIHtcbiAgICAgIGJvcmRlci1sZWZ0OiBub25lO1xuICAgICAgYm9yZGVyLXJpZ2h0OiAkZHJhd2VyLXNpZGUtYm9yZGVyO1xuICAgIH1cbiAgfVxuXG4gIC5tYXQtZHJhd2VyLWJhY2tkcm9wLm1hdC1kcmF3ZXItc2hvd24ge1xuICAgICRvcGFjaXR5OiAwLjY7XG4gICAgJGJhY2tkcm9wLWNvbG9yOiB0aGVtaW5nLmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJGJhY2tncm91bmQsIGNhcmQsICRvcGFjaXR5KTtcblxuICAgIEBpZiAobWV0YS50eXBlLW9mKCRiYWNrZHJvcC1jb2xvcikgPT0gY29sb3IpIHtcbiAgICAgIC8vIFdlIHVzZSBpbnZlcnQoKSBoZXJlIHRvIGhhdmUgdGhlIGRhcmtlbiB0aGUgYmFja2dyb3VuZCBjb2xvciBleHBlY3RlZCB0byBiZSB1c2VkLiBJZiB0aGVcbiAgICAgIC8vIGJhY2tncm91bmQgaXMgbGlnaHQsIHdlIHVzZSBhIGRhcmsgYmFja2Ryb3AuIElmIHRoZSBiYWNrZ3JvdW5kIGlzIGRhcmssXG4gICAgICAvLyB3ZSB1c2UgYSBsaWdodCBiYWNrZHJvcC5cbiAgICAgIGJhY2tncm91bmQtY29sb3I6IGNvbG9yLmludmVydCgkYmFja2Ryb3AtY29sb3IpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAvLyBJZiB3ZSBjb3VsZG4ndCByZXNvbHZlIHRoZSBiYWNrZHJvcCBjb2xvciB0byBhIGNvbG9yIHZhbHVlLCBmYWxsIGJhY2sgdG8gdXNpbmdcbiAgICAgIC8vIGBvcGFjaXR5YCB0byBtYWtlIGl0IG9wYXF1ZSBzaW5jZSBpdHMgZW5kIHZhbHVlIGNvdWxkIGJlIGEgc29saWQgY29sb3IuXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFja2Ryb3AtY29sb3I7XG4gICAgICBvcGFjaXR5OiAkb3BhY2l0eTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHR5cG9ncmFwaHkoJGNvbmZpZy1vci10aGVtZSkge31cblxuQG1peGluIF9kZW5zaXR5KCRjb25maWctb3ItdGhlbWUpIHt9XG5cbkBtaXhpbiB0aGVtZSgkdGhlbWUtb3ItY29sb3ItY29uZmlnKSB7XG4gICR0aGVtZTogdGhlbWluZy5wcml2YXRlLWxlZ2FjeS1nZXQtdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZyk7XG4gIEBpbmNsdWRlIHRoZW1pbmcucHJpdmF0ZS1jaGVjay1kdXBsaWNhdGUtdGhlbWUtc3R5bGVzKCR0aGVtZSwgJ21hdC1zaWRlbmF2Jykge1xuICAgICRjb2xvcjogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCR0aGVtZSk7XG4gICAgJGRlbnNpdHk6IHRoZW1pbmcuZ2V0LWRlbnNpdHktY29uZmlnKCR0aGVtZSk7XG4gICAgJHR5cG9ncmFwaHk6IHRoZW1pbmcuZ2V0LXR5cG9ncmFwaHktY29uZmlnKCR0aGVtZSk7XG5cbiAgICBAaWYgJGNvbG9yICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgY29sb3IoJGNvbG9yKTtcbiAgICB9XG4gICAgQGlmICRkZW5zaXR5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgX2RlbnNpdHkoJGRlbnNpdHkpO1xuICAgIH1cbiAgICBAaWYgJHR5cG9ncmFwaHkgIT0gbnVsbCB7XG4gICAgICBAaW5jbHVkZSB0eXBvZ3JhcGh5KCR0eXBvZ3JhcGh5KTtcbiAgICB9XG4gIH1cbn1cbiIsIkB1c2UgJ3Nhc3M6Y29sb3InO1xuQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnc2FzczptZXRhJztcbkB1c2UgJy4uL2NvcmUvdGhlbWluZy90aGVtaW5nJztcblxuQG1peGluIGNvbG9yKCRjb25maWctb3ItdGhlbWUpIHtcbiAgJGNvbmZpZzogdGhlbWluZy5nZXQtY29sb3ItY29uZmlnKCRjb25maWctb3ItdGhlbWUpO1xuICAkYmFja2dyb3VuZDogbWFwLmdldCgkY29uZmlnLCBiYWNrZ3JvdW5kKTtcbiAgJGZvcmVncm91bmQ6IG1hcC5nZXQoJGNvbmZpZywgZm9yZWdyb3VuZCk7XG5cbiAgLm1hdC1zb3J0LWhlYWRlci1hcnJvdyB7XG4gICAgJHRhYmxlLWJhY2tncm91bmQ6IHRoZW1pbmcuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkYmFja2dyb3VuZCwgJ2NhcmQnKTtcbiAgICAkdGV4dC1jb2xvcjogdGhlbWluZy5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRmb3JlZ3JvdW5kLCBzZWNvbmRhcnktdGV4dCk7XG5cbiAgICAvLyBCZWNhdXNlIHRoZSBhcnJvdyBpcyBtYWRlIHVwIG9mIG11bHRpcGxlIGVsZW1lbnRzIHRoYXQgYXJlIHN0YWNrZWQgb24gdG9wIG9mIGVhY2ggb3RoZXIsXG4gICAgLy8gd2UgY2FuJ3QgdXNlIHRoZSBzZW1pLXRyYW5zcGFyZW50IGNvbG9yIGZyb20gdGhlIHRoZW1lIGRpcmVjdGx5LiBJZiB0aGUgdmFsdWUgaXMgYSBjb2xvclxuICAgIC8vICp0eXBlKiwgd2UgY29udmVydCBpdCBpbnRvIGEgc29saWQgY29sb3IgYnkgdGFraW5nIHRoZSBvcGFjaXR5IGZyb20gdGhlIHJnYmEgdmFsdWUgYW5kXG4gICAgLy8gdXNpbmcgdGhlIHZhbHVlIHRvIGRldGVybWluZSB0aGUgcGVyY2VudGFnZSBvZiB0aGUgYmFja2dyb3VuZCB0byBwdXQgaW50byBmb3JlZ3JvdW5kXG4gICAgLy8gd2hlbiBtaXhpbmcgdGhlIGNvbG9ycyB0b2dldGhlci4gT3RoZXJ3aXNlLCBpZiBpdCByZXNvbHZlcyB0byBzb21ldGhpbmcgZGlmZmVyZW50XG4gICAgLy8gKGUuZy4gaXQgcmVzb2x2ZXMgdG8gYSBDU1MgdmFyaWFibGUpLCB3ZSB1c2UgdGhlIGNvbG9yIGRpcmVjdGx5LlxuICAgIEBpZiAobWV0YS50eXBlLW9mKCR0YWJsZS1iYWNrZ3JvdW5kKSA9PSBjb2xvciBhbmQgbWV0YS50eXBlLW9mKCR0ZXh0LWNvbG9yKSA9PSBjb2xvcikge1xuICAgICAgJHRleHQtb3BhY2l0eTogb3BhY2l0eSgkdGV4dC1jb2xvcik7XG4gICAgICBjb2xvcjogY29sb3IubWl4KCR0YWJsZS1iYWNrZ3JvdW5kLCByZ2JhKCR0ZXh0LWNvbG9yLCAxKSwgKDEgLSAkdGV4dC1vcGFjaXR5KSAqIDEwMCUpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBjb2xvcjogJHRleHQtY29sb3I7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiB0eXBvZ3JhcGh5KCRjb25maWctb3ItdGhlbWUpIHt9XG5cbkBtaXhpbiBfZGVuc2l0eSgkY29uZmlnLW9yLXRoZW1lKSB7fVxuXG5AbWl4aW4gdGhlbWUoJHRoZW1lLW9yLWNvbG9yLWNvbmZpZykge1xuICAkdGhlbWU6IHRoZW1pbmcucHJpdmF0ZS1sZWdhY3ktZ2V0LXRoZW1lKCR0aGVtZS1vci1jb2xvci1jb25maWcpO1xuICBAaW5jbHVkZSB0aGVtaW5nLnByaXZhdGUtY2hlY2stZHVwbGljYXRlLXRoZW1lLXN0eWxlcygkdGhlbWUsICdtYXQtc29ydCcpIHtcbiAgICAkY29sb3I6IHRoZW1pbmcuZ2V0LWNvbG9yLWNvbmZpZygkdGhlbWUpO1xuICAgICRkZW5zaXR5OiB0aGVtaW5nLmdldC1kZW5zaXR5LWNvbmZpZygkdGhlbWUpO1xuICAgICR0eXBvZ3JhcGh5OiB0aGVtaW5nLmdldC10eXBvZ3JhcGh5LWNvbmZpZygkdGhlbWUpO1xuXG4gICAgQGlmICRjb2xvciAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIGNvbG9yKCRjb2xvcik7XG4gICAgfVxuICAgIEBpZiAkZGVuc2l0eSAhPSBudWxsIHtcbiAgICAgIEBpbmNsdWRlIF9kZW5zaXR5KCRkZW5zaXR5KTtcbiAgICB9XG4gICAgQGlmICR0eXBvZ3JhcGh5ICE9IG51bGwge1xuICAgICAgQGluY2x1ZGUgdHlwb2dyYXBoeSgkdHlwb2dyYXBoeSk7XG4gICAgfVxuICB9XG59XG4iLCJAdXNlICd+QGFuZ3VsYXIvbWF0ZXJpYWwnIGFzIG1hdDtcbiRmdWxsaGVpZ2h0OiAxMDB2aDtcblxuLmN1cnNvci1wb2ludGVyIHtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuLmN1cnNvci1ub3QtYWxsb3dlZCB7XG4gICBjdXJzb3I6IG5vdC1hbGxvd2VkICFpbXBvcnRhbnQ7XG4gfVxuLmN1cnNvci10ZXh0IHtcbiAgY3Vyc29yOiB0ZXh0O1xufVxuXG4uZnVsbC13aWR0aCB7XG4gIHdpZHRoOiAxMDAlO1xufVxuLy9UaHJlZSBkb3RzIChtdWx0aWxpbmUpIG9uIGV2ZXJ5IGVsZW1lbnQgdGhhdCBnb2VzIG91dCBvZiB0aGUgYm94XG4udGhyZWUtZG90cyB7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xufVxuLy9UaHJlZSBkb3RzIChzaW5nbGVsaW5lKSBwZXJmZWN0IHdvcmxkICB3aWR0aCBuZWVkIHRvIGJlIGFkZGVkXG4udGhyZWUtZG90cy1uby13cmFwIHtcbiAgQGV4dGVuZCAuZnVsbC13aWR0aDtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbn1cblxuLm5vLWNvcHkge1xuICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOyAgLyogQ2hyb21lIGFsbCAvIFNhZmFyaSBhbGwgKi9cbiAgLW1vei11c2VyLXNlbGVjdDogbm9uZTsgICAgIC8qIEZpcmVmb3ggYWxsICovXG4gIC1tcy11c2VyLXNlbGVjdDogbm9uZTsgICAgICAvKiBJRSAxMCsgKi9cbiAgdXNlci1zZWxlY3Q6IG5vbmU7ICAgICAgICAgIC8qIExpa2VseSBmdXR1cmUgKi9cbn1cblxuLy9Qb3NpdGlvbmluZ1xuLnBvc2l0aW9uLWFic29sdXRlIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xufVxuLnBvc2l0aW9uLXJlbGF0aXZlIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuLnBvc2l0aW9uLWZpeGVkIHtcbiAgcG9zaXRpb246IGZpeGVkO1xufVxuXG4vL2Zsb2F0c1xuLmZsb2F0LWxlZnQge1xuICBmbG9hdDogbGVmdDtcbn1cbi5mbG9hdC1yaWdodCB7XG4gIGZsb2F0OiByaWdodDtcbn1cbi5mdWxsLWhlaWdodCB7XG4gIGhlaWdodDogJGZ1bGxoZWlnaHQ7XG4gICYuZml0IHtcbiAgICBoZWlnaHQ6IGNhbGMoICgjeyRmdWxsaGVpZ2h0fSAtIDUwcHgpIC0gNTBweCk7XG4gIH1cbn1cbi5wdWxsLXJpZ2h0IHtcbiAgZmxvYXQ6IHJpZ2h0O1xufVxuLnB1bGwtbGVmdCB7XG4gIGZsb2F0OiBsZWZ0O1xufVxuLm1heC13aWR0aCB7XG4gIG1heC13aWR0aDogNzgwcHg7XG59XG5cbi5tYXgtaGVpZ2h0LTEwMCB7XG4gIG1heC1oZWlnaHQ6IDEwMCU7XG59XG5cbi5zY3JvbGwtdmlldyB7XG4gIG92ZXJmbG93OiBhdXRvO1xuICBoZWlnaHQ6IDEwMCU7XG59XG5cbkBtaXhpbiBzY3JvbGxiYXIge1xuICA6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgICB3aWR0aDogMTBweDtcbiAgICBoZWlnaHQ6IDEwcHg7XG4gIH1cbiAgLyogVHJhY2sgKi9cbiAgOjotd2Via2l0LXNjcm9sbGJhci10cmFjayB7XG4gICAgLXdlYmtpdC1ib3gtc2hhZG93OiBub25lO1xuICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMTBweDsgYm9yZGVyLXJhZGl1czogMTBweDtcbiAgfVxuICAvKiBIYW5kbGUgKi9cbiAgOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7XG4gICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAxMHB4OyBib3JkZXItcmFkaXVzOiAxMHB4O1xuICAgIGJhY2tncm91bmQ6IG1hdC5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRtYXQtd2hpdGUsIEEyMDApO1xuICAgIC13ZWJraXQtYm94LXNoYWRvdzogaW5zZXQgMCAwIDZweCBtYXQuZ2V0LWNvbG9yLWZyb20tcGFsZXR0ZSgkbWF0LXdoaXRlLCBBMjAwKTtcbiAgfVxuICA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOndpbmRvdy1pbmFjdGl2ZSB7XG4gICAgYmFja2dyb3VuZDogbWF0LmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJG1hdC13aGl0ZSwgQTIwMCk7XG4gIH1cbn1cblxuQG1peGluIGJlZm9yZUNhcmRCb3gge1xuICBjb250ZW50OiAnJztcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIGhlaWdodDogMTAwJTtcbiAgd2lkdGg6IDZweDtcbiAgYm9yZGVyLXJhZGl1czogN3B4IDAgMCA3cHg7XG4gIGJhY2tncm91bmQ6IG1hdC5nZXQtY29sb3ItZnJvbS1wYWxldHRlKCRwcmltYXJ5LCAwLjI1KTtcbn1cblxuQG1peGluIGJlZm9yZUNhcmRCb3hIb3ZlciB7XG4gIEBleHRlbmQgLm1hdC1lbGV2YXRpb24tejg7XG4gICY6OmJlZm9yZSB7XG4gICAgYmFja2dyb3VuZDogbWF0LmdldC1jb2xvci1mcm9tLXBhbGV0dGUoJHByaW1hcnksICRlbGV2YXRpb24pO1xuICB9XG59XG5cbiR0ZXN0OiAxMDBweDtcbiIsIi8qIEJyZWFrcG9pbnRzIGZvciBNZWRpYSBRdWVyaWVzICovXG5cbkBtaXhpbiBmb3ItcGhvbmUtb25seSB7XG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aCA6IDU3NnB4KSB7IEBjb250ZW50OyB9XG59XG5AbWl4aW4gZm9yLXRhYmxldCB7XG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogNzY4cHgpIHsgQGNvbnRlbnQ7IH1cbn1cbkBtaXhpbiBmb3ItZGVza3RvcCB7XG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogOTkycHgpIHsgQGNvbnRlbnQ7IH1cbn1cbkBtaXhpbiBmb3ItZGVza3RvcC14bCB7XG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogMTIwMHB4KSB7IEBjb250ZW50OyB9XG59XG4iXX0= */\";","export default \"\\n\\n\\n\\n\";","export default \"
\\n \\n
\\n\";","export default \"
\\n

Cookie Policy

\\n

This policy outlines how this website sets cookies on your computer.

\\n\\n \\n \\n \\n What Are Cookies?\\n \\n\\n Cookies are small files created by most websites to help improve your web experience. They are either stored\\n in the memory (session cookies) or on the hard drive (persistent cookies) of your computer or other device.\\n\\n \\n\\n \\n \\n Analytics Cookies we set\\n \\n\\n

These cookies allow us to count page visits and traffic sources so we can measure and improve the\\n performance of our site, using a service provided by Google Analytics.

\\n

Full details of the cookies used for analytics can be found at Cookies & Google Analytics in\\n documentation for Google's Analytics tracking code. You can also read Google's Privacy Policy for Google\\n Analytics.

\\n\\n
\\n\\n \\n \\n Third party cookies that may be set\\n \\n\\n We use a number of external services to enhance visitor experience on our site. If you already use these\\n platforms their cookies may be set through our website. Data may then be collected by these companies that\\n enables them to serve up adverts on other sites that they think are relevant to your interests. Such cookies\\n may include, but are not limited to social media cookies, Google Cookies, etc.\\n\\n \\n\\n \\n \\n Local Shared Objects (Flash Cookies)\\n \\n\\n Flash Cookies are employed by Adobe Flash Player to deliver video content playback features and for saving\\n preferences. They are stored in a similar way to standard cookies. The Adobe website provides comprehensive\\n information on how to manage Flash cookies.\\n\\n \\n\\n \\n \\n How to disable cookies\\n \\n\\n

Most internet browsers automatically accept cookies, but you can set your browser to refuse cookies or\\n show you when a cookie is set. If you choose to refuse cookies, some features of the website may not\\n work correctly.

\\n

Find out how to manage cookies at allaboutcookies.org.

\\n\\n
\\n\\n \\n \\n Further Information\\n \\n\\n Please contact BGO Software OOD if you require further information about cookies set by our website.\\n\\n \\n
\\n
\\n\";","export default \"
\\n

Privacy Policy

\\n

\\n We do not sell or mine your data or share it for any reason - except to safely provide these great form-building\\n capabilities to you, our customer.\\n

\\n

\\n We collect the bare minimum of personal data necessary to create and administer accounts. The forms you build\\n and the entries you collect using MetaForms are yours alone.\\n

\\n\\n \\n\\n

Your Information

\\n\\n \\n \\n Personal Data We Collect\\n \\n\\n

We collect the minimum amount of personal data required to provide form building services.

\\n

\\n When you sign up to use MetaForms, you provide:\\n

\\n
    \\n
  • your first and last name,
  • \\n
  • your email address,
  • \\n
  • the name of your organization,
  • \\n
  • a password for your account, and
  • \\n
  • your IP address.
  • \\n
\\n

\\n We also collect some of this information when you contact us. Additionally, your email address may be\\n provided to us by someone you know when they invite you to join their organization in MetaForms, or when\\n they configure notification emails for their forms.\\n

\\n

\\n All of this information must be accurately provided to use MetaForms. If you are unable or unwilling to\\n provide this information, you will not be able to sign up for an account or upgrade to a paid plan.\\n

\\n

\\n We record information about how and when you use MetaForms, including, for example, your IP address,\\n time, date, browser used, and actions you have taken within the application. This information helps us\\n to improve our services both for you and for all our users.\\n

\\n\\n
\\n\\n \\n \\n How We Use Personal Data\\n \\n\\n

\\n We use this personal information to provide form building services, not to mine or sell your data.\\n

\\n

\\n We use your personal information to provide services to you and to communicate with you:\\n

\\n
    \\n
  • We show your first and last name in MetaForms when you log in\\n and when other users of your organization interact with your account, such as when viewing\\n organization users.\\n
  • \\n
  • We use your email address as your username when you log in. We\\n also use your email address to send notification emails from MetaForms, including announcements\\n about new product features.\\n
  • \\n
  • We use your organization name throughout MetaForms so that you\\n and your customers know which organization you are interacting with.\\n
  • \\n
  • We use your password solely to verify access to your account.\\n We do not store your actual password, just an undecipherable representation (encrypted hash).\\n
  • \\n
  • We use your IP address to personalize MetaForms based on where\\n you are located and to help prevent fraud or abuse of our service.\\n
  • \\n
\\n

\\n We use cookies to assist in delivering the services and to provide a positive and personalized user\\n experience. Our cookies are used to identify unique visitors to MetaForms and to provide you with easy\\n access to the services when you log in. If you have your browser set to reject cookies, you will not be\\n able to log into MetaForms. MetaForms does not use cookies on your public or embedded forms, and does\\n not track your customers when they fill out your forms.\\n

\\n\\n
\\n\\n \\n \\n Reasons We Share Personal Data\\n \\n\\n

\\n We share information with authorized third parties to provide form building services, and with\\n authorities to reduce crime and abuse.\\n

\\n

\\n Personal information we gather is for internal use only and we will not authorize the release of this\\n information to anyone outside MetaForms, except as clearly described below.\\n

\\n

\\n We may release the information we collect to authorized third parties so they can perform functions on\\n our behalf and on behalf of you, our customer. These third parties have agreed to use at least the same\\n level of privacy protections described in this Privacy Policy and are permitted to use the information\\n only for the purpose of performing these functions.\\n

\\n

\\n Should you breach our Terms of Service, or if we are under a duty to disclose or share your personal\\n data in order to comply with any legal obligations, we may disclose your information to a relevant\\n authority. This may include exchanging information with other companies and organizations for the\\n purposes of fraud protection and credit risk reduction. Specifically, we may release the information we\\n collect to third parties when we believe it is appropriate to comply with the law, to enforce our legal\\n rights, to protect the rights and safety of others, or to assist with industry efforts to control fraud,\\n spam or other undesirable conduct.\\n

\\n\\n
\\n\\n \\n \\n How to Access & Control Your Personal Data\\n \\n\\n

\\n You can access, download, update or remove your information at any time by logging in to your account.\\n

\\n

\\n You can opt out of marketing emails by clicking the link at the bottom of each email.\\n

\\n

\\n You can easily access or modify your personal information in MetaForms at any time:\\n

\\n
    \\n
  • You can access and modify your personal information by logging into MetaForms using your email\\n address and password. On this page you can edit your name and email address and change your\\n password.\\n
  • \\n
  • If you have forgotten your password, you can reset your password.
  • \\n
\\n

\\n When you change your personal information, we make every effort to update this information in all of our\\n systems. However, some historical data, may reflect the information provided at the time the information\\n was initially recorded. This historical data will not affect your future use of MetaForms or new\\n communications with us.\\n

\\n

\\n You can opt out or remove your personal information from MetaForms at any time.\\n

\\n

\\n Opting out of receiving marketing emails will not affect your ability to use MetaForms. Conversely,\\n deleting your account will not affect your ability to receive marketing emails and become aware of\\n future product features you may be interested in.\\n

\\n

\\n When you delete your account, we make every effort to remove your personal information from all of our\\n systems. However, some historical data, like previous support requests you submitted, will be retained\\n for customer support purposes. After deleting your account, your organization, forms and entries will no\\n longer be accessible or recoverable, and you will no longer receive notifications from MetaForms about\\n your account.\\n

\\n\\n
\\n\\n \\n \\n Data Collected by You\\n \\n\\n

\\n You are responsible for obtaining consent and maintaining any personal information you collect with your\\n forms.\\n

\\n

\\n While MetaForms only collects the personal information necessary to provide form building services, you\\n may collect a wide variety of information from your customers using the forms you create with our\\n service.\\n

\\n

\\n We have no direct relationship with your customers, so you are responsible for making sure you have\\n obtained the appropriate permission for us to collect and process information about these individuals.\\n

\\n

\\n If one of our users has collected your information using a MetaForm, please contact the form owner\\n directly to assist with obtaining, correcting, or removing this information. If you feel the form has\\n collected information about you in a way that violates our Terms of Service.\\n

\\n\\n
\\n\\n \\n \\n Authorized Third Parties\\n \\n\\n

\\n We use a number of authorized third-parties to provide form building services. They are not permitted to\\n use information we share with them for any other purpose.\\n

\\n

\\n We use third parties to assist us in processing your personal information, and we require these third\\n parties to comply with our Privacy Policy and any other appropriate confidentiality and security\\n measures.\\n

\\n\\n
\\n\\n \\n \\n Accuracy and Retention of Data\\n \\n\\n

\\n You can easily update your information at any time by logging into your account.\\n

\\n

\\n Deleted information may be retained in backups, but if you delete your organization, all of your forms\\n and entries will be permanently deleted.\\n

\\n

\\n We will retain your information for as long as your account is active or as long as your information is\\n necessary to provide you with our services. We may also retain and use your information to comply with\\n our legal obligations, resolve disputes, prevent abuse, and enforce our agreements.\\n

\\n

\\n Organization information you delete during your use of MetaForms may be retained in secure backups.\\n However, if you delete your organization, all of the organization’s forms and entries will be\\n permanently deleted and will not be recoverable.\\n

\\n\\n
\\n\\n

Policy

\\n\\n \\n \\n Compliance with Laws\\n \\n\\n

\\n Our servers and data are securely stored in geo-redundant datacenters.\\n

\\n

\\n We meet the privacy adequacy provisions of the GDPR:\\n

\\n
    \\n
  • If you have a privacy or data use concern related to MetaForms, please first email us so we can\\n promptly address the issue.\\n
  • \\n
  • If you're collecting personal information about anyone in the European Economic Area (EEA), you must\\n sign our Data Processing Addendum to be compliant with the General Data Protection Regulations.\\n
  • \\n
\\n\\n
\\n\\n \\n \\n Scope\\n \\n\\n

This Privacy Policy applies to your use of MetaForms in any form.

\\n

\\n References in this Policy to \\\"you\\\" are to any customer for the Services and any individual user of the\\n Services (and \\\"your\\\" should be construed accordingly); and references in this Policy to \\\"us\\\" are to BGO\\n Software OOD (and \\\"we\\\" and \\\"our\\\" should be construed accordingly).\\n

\\n\\n
\\n\\n \\n \\n Changes\\n \\n\\n

We may update this Privacy Policy from time to time.

\\n

We may change this Privacy Policy at any time and from time to time. The most recent version of the\\n Privacy Policy is reflected by the modification date located at the bottom. All updates and amendments\\n are effective immediately upon notice, which we may give by any means, including, but not limited to, by\\n posting a revised version of this Privacy Policy or other notice on MetaForms.

\\n\\n
\\n\\n
\\n\\n
\\n\";","export default \"
\\n

Terms of Use

\\n\\n \\n \\n \\n 1. Introduction\\n \\n\\n
    \\n
  • \\n 1.1 This terms of service policy (the \\\"Policy\\\") sets out the rules governing:\\n
      \\n
    • (a) the use of Metaforms Manager, Metaforms Navigator,\\n the \\\"Services\\\"); and\\n
    • \\n
    • (b) the transmission, storage and processing of\\n content by you, or by any person on your behalf, using the Services (\\\"Content\\\").\\n
    • \\n
    • (c) this is a legal agreement.
    • \\n
    \\n
  • \\n
  • 1.2 MetaForms (or the \\\"Service\\\") is an online form building\\n service.\\n
  • \\n
  • 1.3 MetaForms allows you to build and publish online forms\\n (your \\\"Forms\\\"), and manage form submissions (your \\\"Entry\\\" or \\\"Entries\\\").\\n
  • \\n
  • 1.4 MetaForms is owned and operated by BGO Software OOD,\\n (\\\"MetaForms,\\\" \\\"we,\\\" or \\\"us\\\" should be construed accordingly).\\n
  • \\n
  • 1.5 MetaForms has employees (\\\"our Team\\\").
  • \\n
  • 1.6 By using the Services, you agree to the rules set out in\\n this Policy.\\n
  • \\n
  • 1.7 We will ask for your express agreement to the terms of\\n this Policy before you upload or submit any Content or otherwise use the Services.\\n
  • \\n
  • 1.8 You are at least 18 years of age or the applicable age of\\n majority in your geographic area; and you possess the legal right and ability to enter into this\\n Agreement and open an Account on your behalf or the organization you represent.\\n
  • \\n
\\n\\n
\\n\\n \\n \\n 2. General usage rules\\n \\n\\n
    \\n
  • 2.1 You must not use the Services in any way that causes, or\\n may cause, damage to the Services or impairment of the availability or accessibility of the\\n Services.\\n
  • \\n
  • \\n 2.2 You must not use the Services:\\n
      \\n
    • (a) in any way that is unlawful, illegal, fraudulent,\\n deceptive or harmful; or\\n
    • \\n
    • (b) in connection with any unlawful, illegal,\\n fraudulent, deceptive or harmful purpose or activity.\\n
    • \\n
    \\n
  • \\n
  • 2.3 You must ensure that all Content complies with the\\n provisions of this Policy.\\n
  • \\n
\\n\\n
\\n\\n \\n \\n 3. Unlawful Content\\n \\n\\n
    \\n
  • 3.1 Content must not be illegal or unlawful, must not infringe\\n any person's legal rights, and must not be capable of giving rise to legal action against any person\\n (in each case in any jurisdiction and under any applicable law).\\n
  • \\n
  • \\n 3.2 Content, and the use of Content by us in any manner\\n licensed or otherwise authorized by you, must not:\\n
      \\n
    • (a) be libelous or maliciously false;
    • \\n
    • (b) be obscene or indecent;
    • \\n
    • (c) infringe any copyright, moral right, database\\n right, trade mark right, design right, right in passing off, or other intellectual property\\n right;\\n
    • \\n
    • (d) infringe any right of confidence, right of privacy\\n or right under data protection legislation;\\n
    • \\n
    • (e) constitute negligent advice or contain any\\n negligent statement;\\n
    • \\n
    • (f) constitute an incitement to commit a crime,\\n instructions for the commission of a crime or the promotion of criminal activity;\\n
    • \\n
    • (g) be in contempt of any court, or in breach of any\\n court order;\\n
    • \\n
    • (h) constitute a breach of racial or religious hatred\\n or discrimination legislation;\\n
    • \\n
    • (i) be blasphemous;
    • \\n
    • (j) constitute a breach of official secrets\\n legislation; or\\n
    • \\n
    • (k) constitute a breach of any contractual obligation\\n owed to any person.\\n
    • \\n
    \\n
  • \\n
  • 3.3 You must ensure that Content is not and has never been the\\n subject of any threatened or actual legal proceedings or other similar complaint.\\n
  • \\n
\\n\\n
\\n\\n \\n \\n 4. Graphic material\\n \\n\\n
    \\n
  • 4.1 Content must be appropriate for all persons who have\\n access to or are likely to access the Content in question, and in particular for children over 12\\n years of age.\\n
  • \\n
  • 4.2 Content must not depict violence in an explicit, graphic\\n or gratuitous manner.\\n
  • \\n
  • 4.3 Content must not be pornographic or sexually explicit.\\n
  • \\n
\\n\\n
\\n\\n \\n \\n 5. Factual accuracy\\n \\n\\n
    \\n
  • 5.1 Content must not be untrue, false, inaccurate or\\n misleading.\\n
  • \\n
  • 5.2 Statements of fact contained in Content and relating to\\n persons (legal or natural) must be true; and statements of opinion contained in Content and relating\\n to persons (legal or natural) must be reasonable, be honestly held and indicate the basis of the\\n opinion.\\n
  • \\n
\\n\\n
\\n\\n \\n \\n 6. Negligent advice\\n \\n\\n
    \\n
  • 6.1 Content must not consist of or contain any advice,\\n instructions or other information that may be acted upon and could, if acted upon, cause death,\\n illness or personal injury, damage to property, or any other loss or damage.\\n
  • \\n
\\n\\n
\\n\\n \\n \\n 7. Etiquette\\n \\n\\n
    \\n
  • 7.1 Content must be appropriate, civil and tasteful, and\\n accord with generally accepted standards of etiquette and behavior on the internet.\\n
  • \\n
  • 7.2 Content must not be offensive, deceptive, threatening,\\n abusive, harassing, menacing, hateful, discriminatory or inflammatory.\\n
  • \\n
  • 7.3 Content must not be liable to cause annoyance,\\n inconvenience or needless anxiety.\\n
  • \\n
  • 7.4 You must not use the Services to send any hostile\\n communication or any communication intended to insult, including such communications directed at a\\n particular person or group of people.\\n
  • \\n
  • 7.5 You must not use the Services for the purpose of\\n deliberately upsetting or offending others.\\n
  • \\n
  • 7.6 You must not unnecessarily flood the Services with\\n material relating to a particular subject or subject area, whether alone or in conjunction with\\n others.\\n
  • \\n
  • 7.7 You must ensure that Content does not duplicate other\\n content available through the Services.\\n
  • \\n
  • 7.8 You must ensure that Content is appropriately categorized.\\n
  • \\n
  • 7.9 You should use appropriate and informative titles for all\\n Content.\\n
  • \\n
  • 7.10 You must at all times be courteous and polite to other\\n users of the Services.\\n
  • \\n
\\n\\n
\\n\\n \\n \\n 8. Spam\\n \\n\\n
    \\n
  • 8.1 You must not send any spam or other marketing\\n communications to any person using any email address or other contact details made available through\\n the Services or that you find using the Services.\\n
  • \\n
  • 8.2 You must not use the Services to promote, host or operate\\n any chain letters, Ponzi schemes, pyramid schemes, matrix programs, multi-level marketing schemes,\\n \\\"get rich quick\\\" schemes or similar letters, schemes or programs.\\n
  • \\n
  • 8.3 You must not use the Services in any way which is liable\\n to result in the blacklisting of any of our IP addresses.\\n
  • \\n
\\n\\n
\\n\\n \\n \\n 9. Regulated businesses\\n \\n\\n
    \\n
  • 9.1 You must not use the Services for any purpose relating to\\n gambling, gaming, betting, lotteries, sweepstakes, prize competitions or any gambling-related\\n activity.\\n
  • \\n
  • 9.2 You must not use the Services for any purpose relating\\n to[the offering for sale, sale or distribution of knives, guns or other weapons.\\n
  • \\n
\\n\\n
\\n\\n \\n \\n 10. Monitoring\\n \\n\\n
    \\n
  • 10.1 You acknowledge that we do not actively monitor the\\n Content or the use of the Services.\\n
  • \\n
\\n\\n
\\n\\n \\n \\n 11. Data mining\\n \\n\\n
    \\n
  • 11.1 You must not conduct any systematic or automated data\\n scraping, data mining, data extraction or data harvesting, or other systematic or automated data\\n collection activity, by means of or in relation to the Services.\\n
  • \\n
\\n\\n
\\n\\n \\n \\n 12. Hyperlinks\\n \\n\\n
    \\n
  • 12.1 You must not link to any material using or by means of\\n the Services that would, if it were made available through the Services, breach the provisions of\\n this Policy.\\n
  • \\n
\\n\\n
\\n\\n \\n \\n 13. Harmful software\\n \\n\\n
    \\n
  • 13.1 The Content must not contain or consist of, and you must\\n not promote, distribute or execute by means of the Services, any viruses, worms, spyware, adware or\\n other harmful or malicious software, programs, routines, applications or technologies.\\n
  • \\n
  • 13.2 The Content must not contain or consist of, and you must\\n not promote, distribute or execute by means of the Services, any software, programs, routines,\\n applications or technologies that will or may have a material negative effect upon the performance\\n of a computer or introduce material security risks to a computer.\\n
  • \\n
\\n\\n
\\n\\n \\n \\n 14. Changes\\n \\n\\n
    \\n
  • 14.1 If we need to change these terms, we'll let you know,\\n since they will immediately apply to your use of MetaForms.\\n
  • \\n
  • 14.2 We may change any of the Terms by posting revised Terms\\n of Service on our Website and/or by sending an email to the last email address you gave us. Unless\\n you terminate your account within ten (10) days, the new Terms will be effective immediately and\\n apply to any continued or new use of MetaForms. We may change the Website, the Service, or any\\n features of the Service at any time.\\n
  • \\n
\\n\\n
\\n\\n \\n \\n 15. Username and Password\\n \\n\\n
    \\n
  • 15.1 You are responsible for your username and password—do not\\n share or lose them!\\n
  • \\n
  • 15.2 You're responsible for keeping your account username and\\n password confidential. You're also responsible for any account that you have access to, whether or\\n not you authorized the use. You'll immediately notify us of any unauthorized use of your accounts.\\n We're not responsible for any losses due to stolen or hacked passwords.\\n
  • \\n
  • 15.3 We don't have access to your current password, and for\\n security reasons, we cannot change your password. You can change your password at any time under\\n account settings. If you have forgotten your password, you can use the \\\"forgot password\\\" option on\\n the login page to reset your password. If you have forgotten the email address you used to sign up,\\n we will do our best to help, but cannot change the email address of an account or otherwise change\\n access to an account or organization data.\\n
  • \\n
\\n\\n
\\n\\n \\n \\n 16. Account Disputes\\n \\n\\n
    \\n
  • 16.1 You are responsible for maintaining ownership of your\\n account—we'd rather not get caught up in office politics.\\n
  • \\n
  • 16.2 We don't know the inner workings of your organization or\\n the nature of your personal relationships, and we don't arbitrate disputes over who owns an account.\\n You won't request access to or information about an account that's not yours, and you'll resolve any\\n account-related disputes directly with the other party. We decide who owns an organization account\\n based on the Users assigned the role of Owner for the organization.\\n
  • \\n
\\n\\n
\\n\\n \\n \\n 17. BGO Software Rights\\n \\n\\n
    \\n
  • 17.1 You will respect our proprietary rights in the Website\\n and the software used to provide MetaForms. Proprietary rights include patents, trademarks, service\\n marks, trade secrets, and copyrights.\\n
  • \\n
  • \\n 17.2 You may not:\\n
      \\n
    • (a) Market, distribute, sublicense, publicly display,\\n sell, assign, pledge, lease, rent, or otherwise make available to any third party the\\n Website or Services, except as specifically allowed through a referral, affiliate, reseller\\n or white label agreement approved by MetaForms;\\n
    • \\n
    • (b) Reverse compile, reverse engineer, reverse\\n assemble, or otherwise attempt, directly or indirectly, to obtain or create source code for\\n the Website or Services for any reason;\\n
    • \\n
    • (c) Modify or create derivative works of the Website\\n or Services;\\n
    • \\n
    • (d) Interfere with or disrupt the integrity or\\n performance of the Website or Services;\\n
    • \\n
    • (e) Attempt to gain unauthorized access to the Website\\n or Services or their related systems or networks; or\\n
    • \\n
    • (f) Remove any copyright, trademark, or other notices\\n or legends from the Website or Services.\\n
    • \\n
    \\n
  • \\n
\\n\\n
\\n\\n \\n \\n 18. Your Rights\\n \\n\\n
    \\n
  • 18.1 Subject to the terms of this Agreement, we grant to you a\\n non-exclusive, revocable, non-transferable, limited license, without right of sublicense, to access\\n and use the Website and Services solely with supported browsers through the internet for your own\\n purposes.\\n
  • \\n
  • 18.2 You represent and warrant (legally promise) that you\\n either own or have permission to use all of the Content uploaded to the Website, including your\\n Forms and Entries. You are responsible for this information, and for activity that occurs under your\\n Account.\\n
  • \\n
  • 18.3 We claim no intellectual property rights over the Content you provide to the Website. Your profile, Forms, Entries and materials uploaded remain yours.\\n However, when you share form templates, share entries, or otherwise provide access to this Content\\n by others through your use of the Website, you agree to allow others to view and share any Content\\n you add.\\n
  • \\n
\\n\\n
\\n\\n \\n \\n 19. Compliance with Laws\\n \\n\\n
    \\n
  • 19.1 Our servers and data are securely stored in geo-redundant\\n datacenters.\\n
  • \\n
  • \\n 19.2 We meet the privacy adequacy provisions of the GDPR:\\n
    \\n If you have a privacy or data use concern related to MetaForms, please first email us so we can\\n promptly address the issue.
    \\n If you're collecting personal information about anyone in the European Economic Area (EEA), you must\\n be compliant with the General Data Protection Regulations.\\n
  • \\n
\\n\\n
\\n\\n \\n \\n 20. Assignments\\n \\n\\n
    \\n
  • 20.1 You cannot assign your rights in this agreement to anyone\\n else.\\n
  • \\n
  • 20.2 You may not assign any of your rights under this\\n agreement to anyone else. We may assign our rights to any other individual or entity at our\\n discretion.\\n
  • \\n
\\n\\n
\\n\\n \\n \\n 21. Force Majeure\\n \\n\\n
    \\n
  • 21.1 We'll do our best to keep MetaForms running 24/7, but\\n some outage events are beyond our control.\\n
  • \\n
  • 21.2 We won't be held liable for any delays or failure in\\n performance of any part of the Service, from any cause beyond our control. This includes, but is not\\n limited to, acts of God, changes to law or regulations, embargoes, war, terrorist acts, riots,\\n fires, earthquakes, nuclear accidents, apocalypse, floods, strikes, power blackouts, volcanic\\n action, unusually severe weather conditions, and acts of hackers or third-party internet service\\n providers.\\n
  • \\n
\\n\\n
\\n
\\n
\\n\";","export default \"
\\n
\\n
\\n \\\"Metaforms\\n
\\n
\\n\\n\\n
\\n\\n
\\n \\n
\\n\\n\\n

You are not currently a member of any organization.

\\n

\\n\\n
\\n \\n If you want to create an organization, click here , or\\n join an existing one.\\n \\n Please click here to continue to\\n \\n , or wait for the automatic redirect\\n \\n\\n

\\n\\n
\\n \\n
\\n
\\n\\n
\\n
\\n
\\n\";","export default \"
\\n
\\n
\\n \\n cardTitleLength/2\\\"\\n [ngStyle]=\\\"cardPrimaryColor\\\"\\n [matTooltip]=\\\"card.displayName\\\"\\n matTooltipPosition=\\\"above\\\"\\n [matTooltipDisabled]=\\\"card.displayName.length < cardTitleLength\\\">\\n {{card.displayName| shorten : cardTitleLength : '...'}}\\n \\n \\n \\n cardTitleLength/2\\\"\\n [ngStyle]=\\\"cardPrimaryColor\\\"\\n [matTooltip]=\\\"card.formName\\\"\\n matTooltipPosition=\\\"above\\\"\\n [matTooltipDisabled]=\\\"!card.formName || card.formName.length < cardTitleLength\\\">\\n {{card.formName| shorten : cardTitleLength : '...'}}\\n \\n \\n\\n \\n cardTitleLength/2\\\"\\n [matTooltip]=\\\"card.name\\\"\\n matTooltipPosition=\\\"above\\\"\\n [matTooltipDisabled]=\\\"card.name && card.name?.length < cardTitleLength\\\">\\n {{card.name| shorten : cardTitleLength : '...'}} \\n (default)\\n \\n \\n\\n\\n {{card.createdAt | date : 'dd MMM y'}}\\n
\\n
\\n\\n \\n\\n \\n
\\n\";","export default \"
\\n
\\n
\\n \\n cardTitleLength/2\\\"\\n [matTooltip]=\\\"card?.card?.name\\\"\\n matTooltipPosition=\\\"above\\\"\\n [matTooltipDisabled]=\\\"card?.card?.name?.length < cardTitleLength\\\"\\n [ngStyle]=\\\"cardPrimaryColor\\\">\\n {{card.card.name | shorten : cardTitleLength : '...'}}\\n \\n \\n {{ card?.original?.agentFirstName }} {{ card?.original?.agentLastName }}\\n \\n \\n\\n\\n \\n cardTitleLength/2\\\"\\n [matTooltip]=\\\"card?.original?.displayName\\\"\\n matTooltipPosition=\\\"above\\\"\\n [matTooltipDisabled]=\\\"card?.original?.displayName?.length < cardTitleLength\\\"\\n [ngStyle]=\\\"cardPrimaryColor\\\">\\n {{card?.original?.displayName | shorten : cardTitleLength : '...'}}\\n \\n \\n\\n \\n cardTitleLength/2\\\"\\n [matTooltip]=\\\"card?.card?.name\\\"\\n matTooltipPosition=\\\"above\\\"\\n [matTooltipDisabled]=\\\"!card?.card?.name || card?.card?.name?.length < cardTitleLength\\\"\\n [ngStyle]=\\\"cardPrimaryColor\\\"\\n >\\n {{card?.card?.name| shorten : cardTitleLength : '...'}}\\n \\n \\n\\n \\n cardTitleLength/2\\\"\\n [matTooltip]=\\\"card?.card?.name\\\"\\n matTooltipPosition=\\\"above\\\"\\n [ngStyle]=\\\"cardPrimaryColor\\\"\\n [matTooltipDisabled]=\\\"card?.card?.name && card?.card?.name?.length < cardTitleLength\\\">\\n {{card?.card?.name| shorten : cardTitleLength : '...'}} \\n (default)\\n \\n \\n \\n {{ card?.card?.displayDate }}\\n \\n \\n {{card?.card?.date | date : 'dd MMM y'}}\\n \\n \\n \\n\\n
\\n
\\n \\n \\n \\n \\n \\n \\n\\n \\n\\n
\\n\\n\\n\\n \\n survey\\n report\\n form\\n \\n\\n\";","export default \"
\\n \\n
\\n\";","export default \"

{{ data.title }}

\\n
\\n

\\n {{ data.message }}\\n

\\n
\\n
\\n \\n \\n
\\n\";","export default \"
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
\\n \\n \\n \\n
\\n \\n
\\n No assigned forms\\n \\n \\n \\n
\\n\\n \\n \\n \\n \\n \\n \\n
{{ column.label }}\\n \\n \\n \\n \\n {{row[column.field]}}\\n \\n
\\n \\n \\n
\\n\\n\";","export default \"

{{ (data | async)?.title }}

\\n\\n\\n {{ (data | async)?.description }}\\n\\n\";","export default \"\\n \\n \\n {{status.title}}\\n \\n \\n\\n\\n \\n {{ noStatusPlaceholder }}\\n \\n\\n\\n\";","export default \"
\\n \\n
\\n\";","export default \"
\\n
\\n
\\n \\n
\\n
\\n \\n

{{(user | async).firstName + ' ' + (user | async).lastName}}

\\n

\\n email\\n {{(user | async).email}}\\n

\\n
\\n
\\n \\n

{{(user | async).position}}

\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n

\\n Details\\n

\\n
\\n
\\n
\\n \\n \\n required\\n \\n \\n \\n \\n required\\n \\n \\n
\\n
\\n
\\n
\\n \\n \\n required\\n \\n \\n \\n \\n required\\n \\n \\n
\\n
\\n
\\n
\\n\\n \\n \\n \\n\\n \\n \\n Maximum allowed length of the PIN code is 16 symbols\\n \\n\\n
\\n
\\n\\n
\\n
\\n \\n \\n \\n
\\n
\\n
\\n\\n
\\n
\\n

\\n Additional fields\\n

\\n \\n \\n \\n
\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n\\n\\n\";"],"sourceRoot":"webpack:///"}