@onemrvapublic/design-system 17.0.59 → 17.0.60
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/layout/src/components/layout/layout.component.mjs +3 -3
- package/esm2022/mat-file-upload/src/components/onemrva-mat-file-upload/onemrva-mat-file-upload.component.mjs +3 -3
- package/esm2022/mat-input-country/src/countries.mjs +10 -1
- package/esm2022/mat-input-country/src/onemrva-mat-input-country.component.mjs +8 -1
- package/esm2022/mat-table-of-content/src/onemrva-mat-table-of-content.directive.mjs +2 -2
- package/esm2022/mat-timepicker/src/clock/clock.component.mjs +3 -3
- package/esm2022/mat-timepicker/src/onemrva-mat-timepicker.component.mjs +6 -2
- package/fesm2022/onemrvapublic-design-system-layout.mjs +2 -2
- package/fesm2022/onemrvapublic-design-system-layout.mjs.map +1 -1
- package/fesm2022/onemrvapublic-design-system-mat-file-upload.mjs +2 -2
- package/fesm2022/onemrvapublic-design-system-mat-file-upload.mjs.map +1 -1
- package/fesm2022/onemrvapublic-design-system-mat-input-country.mjs +16 -0
- package/fesm2022/onemrvapublic-design-system-mat-input-country.mjs.map +1 -1
- package/fesm2022/onemrvapublic-design-system-mat-table-of-content.mjs +1 -1
- package/fesm2022/onemrvapublic-design-system-mat-table-of-content.mjs.map +1 -1
- package/fesm2022/onemrvapublic-design-system-mat-timepicker.mjs +7 -3
- package/fesm2022/onemrvapublic-design-system-mat-timepicker.mjs.map +1 -1
- package/layout/src/components/layout/_layout-mixin.component.scss +12 -0
- package/layout/src/components/layout/layout.component.scss +3 -3
- package/mat-file-upload/src/components/onemrva-mat-file-upload/onemrva-mat-file-upload.component.scss +1 -1
- package/mat-table-of-content/src/_onemrva-mat-table-of-content.component.scss +1 -1
- package/mat-task-list/src/onemrva-mat-task-list.component.scss +1 -0
- package/mat-timepicker/src/onemrva-mat-timepicker.component.d.ts +2 -1
- package/package.json +1 -1
|
@@ -128,14 +128,14 @@ export class LayoutComponent {
|
|
|
128
128
|
this.drawer.open();
|
|
129
129
|
}
|
|
130
130
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: LayoutComponent, deps: [{ token: i1.TranslateService }, { token: i0.ChangeDetectorRef }, { token: i2.BreakpointObserver }, { token: DOCUMENT }, { token: i3.OnemrvaDrawerService }], target: i0.ɵɵFactoryTarget.Component });
|
|
131
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: LayoutComponent, selector: "onemrva-layout", inputs: { fluid: "fluid", logo: "logo", languages: "languages", environment: "environment", logoRedictionUrl: "logoRedictionUrl", profile: "profile", id: "id", role: "role" }, outputs: { login: "login", logout: "logout" }, queries: [{ propertyName: "title", first: true, predicate: LayoutTitleComponent, descendants: true }, { propertyName: "loginMenu", first: true, predicate: LayoutLoginMenuComponent, descendants: true }, { propertyName: "content", first: true, predicate: LayoutContentComponent, descendants: true }, { propertyName: "afterNav", first: true, predicate: LayoutAfterNavComponent, descendants: true }, { propertyName: "footer", first: true, predicate: LayoutFooterComponent, descendants: true }, { propertyName: "routes", predicate: LayoutRouteComponent }], viewQueries: [{ propertyName: "drawer", first: true, predicate: MatDrawer, descendants: true, static: true }, { propertyName: "drawerHost", first: true, predicate: DrawerHostDirective, descendants: true, static: true }], ngImport: i0, template: "<mat-drawer-container\n class=\"example-container\"\n [hasBackdrop]=\"drawerService.hasBackdrop\"\n autosize\n>\n <div class=\"app-content\">\n <ng-container\n *ngIf=\"\n environment && (environment === env.LOCAL || environment === env.TEST)\n \"\n >\n <div class=\"environment\" [class]=\"environment\">\n {{ environment }}\n </div>\n\n <button\n id=\"accessibility_fab\"\n mat-fab\n color=\"accent\"\n aria-label=\"Accessibility check\"\n matTooltip=\"Accessibility check\"\n onclick=\"javascript:(function() {var _p='//openfed.github.io/AccessibilityCheck/build/';var _i=function(s,cb) {var sc=document.createElement('script');sc.onload = function() {sc.onload = null;sc.onreadystatechange = null;cb.call(this);};sc.onreadystatechange = function(){if(/^(complete|loaded)$/.test(this.readyState) === true){sc.onreadystatechange = null;sc.onload();}};sc.src=s;if (document.head) {document.head.appendChild(sc);} else {document.getElementsByTagName('head')[0].appendChild(sc);}}; var options={path:_p};_i(_p+'HTMLCS.js',function(){HTMLCSAuditor.run('WCAG2AA',null,options);});})();\"\n >\n <mat-icon>accessibility</mat-icon>\n </button>\n </ng-container>\n <mat-toolbar class=\"mat-elevation-z4\">\n <div\n [class.container]=\"!fluid\"\n [class.container-fluid]=\"fluid\"\n class=\"nav-container\"\n style=\"display: flex; align-items: center\"\n >\n {{ logoRedictionUrl }}\n <img\n class=\"logo\"\n [src]=\"logo\"\n [attr.data-cy]=\"'onemrva_logo_' + translateService.currentLang\"\n alt=\"Logo ONEM/RVA\"\n [routerLink]=\"\n logoRedictionUrl !== null ? logoRedictionUrl : undefined\n \"\n [ngStyle]=\"{\n cursor: logoRedictionUrl !== null ? 'pointer' : 'default'\n }\"\n />\n <div class=\"application-title\" [ngClass]=\"{ 'small-screen': isSmall }\">\n <ng-container *ngIf=\"title?.template as titleTpl\">\n <ng-container *ngTemplateOutlet=\"titleTpl\"></ng-container>\n </ng-container>\n </div>\n\n <div style=\"flex: 1\"></div>\n <nav\n mat-tab-nav-bar\n style=\"display: flex; align-items: center\"\n style=\"display: flex; align-items: center\"\n [tabPanel]=\"tabPanel\"\n *ngIf=\"!isSmall\"\n >\n <ng-container *ngFor=\"let e of routes?.toArray(); let i = index\">\n <a\n mat-tab-link\n [routerLink]=\"e.routerLink\"\n [routerLinkActiveOptions]=\"{ exact: !e.hasSubroutes() }\"\n #rla=\"routerLinkActive\"\n routerLinkActive=\"mdc-tab--active\"\n [active]=\"rla.isActive || e.isRouteActive()\"\n >\n <ng-container *ngIf=\"e.template as routeTemplate\">\n <ng-container *ngTemplateOutlet=\"routeTemplate\"> </ng-container>\n </ng-container>\n </a>\n </ng-container>\n </nav>\n\n <mat-tab-nav-panel #tabPanel></mat-tab-nav-panel>\n\n <ng-container *ngIf=\"afterNav?.template as tpl\">\n <ng-container *ngTemplateOutlet=\"tpl\"></ng-container>\n </ng-container>\n\n <mat-divider\n vertical\n style=\"height: 1em; align-self: center\"\n *ngIf=\"!isSmall && routes?.toArray()?.length\"\n ></mat-divider>\n\n <mat-tab-group\n class=\"language-tabs\"\n [selectedIndex]=\"selectedIndex\"\n (selectedIndexChange)=\"changeLanguage($event)\"\n *ngIf=\"!isSmall\"\n >\n <mat-tab *ngFor=\"let lang of languages\">\n <div *matTabLabel [attr.data-cy]=\"'language_' + lang.code\">\n {{ lang.label }}\n </div>\n </mat-tab>\n </mat-tab-group>\n\n <ng-container *ngIf=\"profile !== null\">\n <mat-divider\n vertical\n style=\"height: 1em; align-self: center\"\n *ngIf=\"!isSmall\"\n ></mat-divider>\n <button\n disableRipple\n data-cy=\"accountMenu\"\n class=\"account-button\"\n [matMenuTriggerFor]=\"menu\"\n mat-icon-button\n attr.aria-label=\"{{ 'layout.profile' | translate }}\"\n >\n <mat-icon *ngIf=\"!profile.isLoggedIn\" class=\"large\"\n >account_circle</mat-icon\n >\n\n <onemrva-mat-avatar\n *ngIf=\"profile.isLoggedIn\"\n initials=\"{{ profile.initials() }}\"\n color=\"accent\"\n size=\"extrasmall\"\n ></onemrva-mat-avatar>\n </button>\n <mat-menu #menu=\"matMenu\">\n <ng-container *ngIf=\"profile.isLoggedIn; else notConnected\">\n <p class=\"accountName\">\n {{ profile.firstName }} {{ profile.lastName }}\n </p>\n <mat-divider style=\"align-self: stretch\"></mat-divider>\n\n <ng-container *ngIf=\"loginMenu?.template as menuLoginTpl\">\n <ng-container *ngTemplateOutlet=\"menuLoginTpl\"></ng-container>\n </ng-container>\n\n <button\n type=\"button\"\n class=\"mat-mdc-menu-item\"\n mat-menu-itemMrzapoie\n data-cy=\"logoutButton\"\n (click)=\"doLogout()\"\n attr.aria-label=\"{{ 'layout.logout' | translate }}\"\n >\n <mat-icon>logout</mat-icon>{{ \"layout.logout\" | translate }}\n </button>\n </ng-container>\n <ng-template #notConnected>\n <button\n type=\"button\"\n mat-menu-item\n data-cy=\"loginButton\"\n (click)=\"doLogin()\"\n attr.aria-label=\"{{ 'layout.login' | translate }}\"\n >\n <mat-icon>login</mat-icon>{{ \"layout.login\" | translate }}\n </button>\n </ng-template>\n </mat-menu>\n </ng-container>\n <ng-container\n *ngIf=\"\n isSmall &&\n (routes?.toArray()?.length || (languages && languages.length > 1))\n \"\n >\n <button\n type=\"button\"\n mat-icon-button\n class=\"menu-button\"\n data-cy=\"smallDeviceMenu\"\n (click)=\"toggleSideNav()\"\n attr.aria-label=\"{{ 'layout.menu' | translate }}\"\n >\n <mat-icon>menu</mat-icon>\n </button>\n </ng-container>\n </div>\n </mat-toolbar>\n\n <ng-container>\n <div [id]=\"id\" [attr.role]=\"role\" class=\"onemrva-layout-content\" *ngIf=\"content?.template as tpl\">\n <ng-container *ngTemplateOutlet=\"tpl\"></ng-container>\n </div>\n\n <footer class=\"onemrva-footer\" *ngIf=\"footer?.template as footer\">\n <ng-container *ngTemplateOutlet=\"footer\"></ng-container>\n </footer>\n </ng-container>\n </div>\n\n <mat-drawer\n class=\"onemrva-drawer mobile-menu-sidebar\"\n mode=\"over\"\n position=\"end\"\n >\n <ng-template drawerhost></ng-template>\n </mat-drawer>\n</mat-drawer-container>\n", styles: [".mat-mdc-tab-nav-bar .mat-mdc-tab-header{height:42px!important}.logo{align-self:center;cursor:pointer}.application-title{font-size:1rem;font-weight:700;font-size:20px;height:42px}:host .mat-toolbar{background:white;position:fixed;top:0;height:90px;z-index:400}.accountName{margin:16px;line-height:16px;font-weight:700}:host{position:relative}:host router-outlet{display:block;margin-bottom:90px}:host .environment{position:fixed;top:0;left:0;z-index:24000;width:60px;height:50px;padding:15px 20px;font-weight:700;font-size:16px;border-radius:0 0 100%;color:#fff;display:none}:host .environment.LOCAL{background-color:#ff000080;display:block}:host .environment.TEST{background-color:#3366cc80;display:block}:host .environment.VAL{background-color:#00993380;display:block}:host a:active{outline:none}.s-menu .s-menu-languages{display:flex}.s-menu .s-menu-item.active{font-weight:700!important}.s-menu .s-menu-item:hover{cursor:pointer;font-weight:700}.onemrva-layout-content{padding-top:90px;min-height:calc(100vh - 90px)}.onemrva-footer{text-align:center;padding:9.5px}onemrva-mat-avatar.clickable{cursor:pointer}.mat-mdc-menu-content button.active>*{font-weight:700!important}.mat-mdc-menu-content button mat-icon{font-size:18px!important;height:18px;width:18px}.mat-mdc-menu-content button span{font-size:14px!important}#accessibility_fab{position:fixed;bottom:16px;left:16px}nav a.disabled{pointer-events:none}.menu-close-button{float:right}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i5.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i5.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "component", type: i6.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "component", type: i7.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i8.MatDrawer, selector: "mat-drawer", inputs: ["position", "mode", "disableClose", "autoFocus", "opened"], outputs: ["openedChange", "opened", "openedStart", "closed", "closedStart", "positionChanged"], exportAs: ["matDrawer"] }, { kind: "component", type: i8.MatDrawerContainer, selector: "mat-drawer-container", inputs: ["autosize", "hasBackdrop"], outputs: ["backdropClick"], exportAs: ["matDrawerContainer"] }, { kind: "directive", type: i9.MatTabLabel, selector: "[mat-tab-label], [matTabLabel]" }, { kind: "component", type: i9.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass"], exportAs: ["matTab"] }, { kind: "component", type: i9.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple", "fitInkBarToContent", "mat-stretch-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "preserveContent", "backgroundColor"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }, { kind: "component", type: i9.MatTabNav, selector: "[mat-tab-nav-bar]", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "animationDuration", "backgroundColor", "disableRipple", "tabPanel"], exportAs: ["matTabNavBar", "matTabNav"] }, { kind: "component", type: i9.MatTabNavPanel, selector: "mat-tab-nav-panel", inputs: ["id"], exportAs: ["matTabNavPanel"] }, { kind: "component", type: i9.MatTabLink, selector: "[mat-tab-link], [matTabLink]", inputs: ["disabled", "disableRipple", "tabIndex", "active", "id"], exportAs: ["matTabLink"] }, { kind: "component", type: i10.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i10.MatFabButton, selector: "button[mat-fab]", inputs: ["extended"], exportAs: ["matButton"] }, { kind: "component", type: i11.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i11.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i11.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: i12.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i13.OnemrvaMatAvatarComponent, selector: "onemrva-mat-avatar", inputs: ["id", "roundShape", "initials", "icon", "src", "size", "color"] }, { kind: "directive", type: i14.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: i15.DrawerHostDirective, selector: "[drawerhost]" }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }] });
|
|
131
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: LayoutComponent, selector: "onemrva-layout", inputs: { fluid: "fluid", logo: "logo", languages: "languages", environment: "environment", logoRedictionUrl: "logoRedictionUrl", profile: "profile", id: "id", role: "role" }, outputs: { login: "login", logout: "logout" }, queries: [{ propertyName: "title", first: true, predicate: LayoutTitleComponent, descendants: true }, { propertyName: "loginMenu", first: true, predicate: LayoutLoginMenuComponent, descendants: true }, { propertyName: "content", first: true, predicate: LayoutContentComponent, descendants: true }, { propertyName: "afterNav", first: true, predicate: LayoutAfterNavComponent, descendants: true }, { propertyName: "footer", first: true, predicate: LayoutFooterComponent, descendants: true }, { propertyName: "routes", predicate: LayoutRouteComponent }], viewQueries: [{ propertyName: "drawer", first: true, predicate: MatDrawer, descendants: true, static: true }, { propertyName: "drawerHost", first: true, predicate: DrawerHostDirective, descendants: true, static: true }], ngImport: i0, template: "<mat-drawer-container\n class=\"example-container\"\n [hasBackdrop]=\"drawerService.hasBackdrop\"\n autosize\n>\n <div class=\"app-content\">\n <header>\n <mat-toolbar class=\"mat-elevation-z4\">\n <div class=\"environment\" [class]=\"environment\">\n {{ environment }}\n </div>\n <div\n [class.container]=\"!fluid\"\n [class.container-fluid]=\"fluid\"\n class=\"nav-container flex-center\"\n >\n {{ logoRedictionUrl }}\n <img\n class=\"logo\"\n [src]=\"logo\"\n [attr.data-cy]=\"'onemrva_logo_' + translateService.currentLang\"\n alt=\"Logo ONEM/RVA\"\n [routerLink]=\"\n logoRedictionUrl !== null ? logoRedictionUrl : undefined\n \"\n [ngStyle]=\"{\n cursor: logoRedictionUrl !== null ? 'pointer' : 'default'\n }\"\n />\n <div class=\"application-title\" [ngClass]=\"{ 'small-screen': isSmall }\">\n <ng-container *ngIf=\"title?.template as titleTpl\">\n <ng-container *ngTemplateOutlet=\"titleTpl\"></ng-container>\n </ng-container>\n </div>\n\n <div style=\"flex: 1\"></div>\n <div class=\"flex-center\"\n mat-tab-nav-bar\n [tabPanel]=\"tabPanel\"\n *ngIf=\"!isSmall\"\n >\n <ng-container *ngFor=\"let e of routes?.toArray(); let i = index\">\n <a\n mat-tab-link\n [routerLink]=\"e.routerLink\"\n [routerLinkActiveOptions]=\"{ exact: !e.hasSubroutes() }\"\n #rla=\"routerLinkActive\"\n routerLinkActive=\"mdc-tab--active\"\n [active]=\"rla.isActive || e.isRouteActive()\"\n >\n <ng-container *ngIf=\"e.template as routeTemplate\">\n <ng-container *ngTemplateOutlet=\"routeTemplate\"> </ng-container>\n </ng-container>\n </a>\n </ng-container>\n </div>\n\n <mat-tab-nav-panel #tabPanel></mat-tab-nav-panel>\n\n <ng-container *ngIf=\"afterNav?.template as tpl\">\n <ng-container *ngTemplateOutlet=\"tpl\"></ng-container>\n </ng-container>\n\n <mat-divider\n vertical\n style=\"height: 1em; align-self: center\"\n *ngIf=\"!isSmall && routes?.toArray()?.length\"\n ></mat-divider>\n\n <mat-tab-group\n class=\"language-tabs\"\n [selectedIndex]=\"selectedIndex\"\n (selectedIndexChange)=\"changeLanguage($event)\"\n *ngIf=\"!isSmall\"\n >\n <mat-tab *ngFor=\"let lang of languages\">\n <div *matTabLabel [attr.data-cy]=\"'language_' + lang.code\">\n {{ lang.label }}\n </div>\n </mat-tab>\n </mat-tab-group>\n\n <ng-container *ngIf=\"profile !== null\">\n <mat-divider\n vertical\n style=\"height: 1em; align-self: center\"\n *ngIf=\"!isSmall\"\n ></mat-divider>\n <button\n disableRipple\n data-cy=\"accountMenu\"\n class=\"account-button\"\n [matMenuTriggerFor]=\"menu\"\n mat-icon-button\n attr.aria-label=\"{{ 'layout.profile' | translate }}\"\n >\n <mat-icon *ngIf=\"!profile.isLoggedIn\" class=\"large\"\n >account_circle</mat-icon\n >\n\n <onemrva-mat-avatar\n *ngIf=\"profile.isLoggedIn\"\n initials=\"{{ profile.initials() }}\"\n color=\"accent\"\n size=\"extrasmall\"\n ></onemrva-mat-avatar>\n </button>\n <mat-menu #menu=\"matMenu\">\n <ng-container *ngIf=\"profile.isLoggedIn; else notConnected\">\n <p class=\"accountName\">\n {{ profile.firstName }} {{ profile.lastName }}\n </p>\n <mat-divider style=\"align-self: stretch\"></mat-divider>\n\n <ng-container *ngIf=\"loginMenu?.template as menuLoginTpl\">\n <ng-container *ngTemplateOutlet=\"menuLoginTpl\"></ng-container>\n </ng-container>\n\n <button\n type=\"button\"\n class=\"mat-mdc-menu-item\"\n mat-menu-itemMrzapoie\n data-cy=\"logoutButton\"\n (click)=\"doLogout()\"\n attr.aria-label=\"{{ 'layout.logout' | translate }}\"\n >\n <mat-icon>logout</mat-icon>{{ \"layout.logout\" | translate }}\n </button>\n </ng-container>\n <ng-template #notConnected>\n <button\n type=\"button\"\n mat-menu-item\n data-cy=\"loginButton\"\n (click)=\"doLogin()\"\n attr.aria-label=\"{{ 'layout.login' | translate }}\"\n >\n <mat-icon>login</mat-icon>{{ \"layout.login\" | translate }}\n </button>\n </ng-template>\n </mat-menu>\n </ng-container>\n <ng-container\n *ngIf=\"\n isSmall &&\n (routes?.toArray()?.length || (languages && languages.length > 1))\n \"\n >\n <button\n type=\"button\"\n mat-icon-button\n class=\"menu-button\"\n data-cy=\"smallDeviceMenu\"\n (click)=\"toggleSideNav()\"\n attr.aria-label=\"{{ 'layout.menu' | translate }}\"\n >\n <mat-icon>menu</mat-icon>\n </button>\n </ng-container>\n </div>\n </mat-toolbar>\n </header>\n <ng-container>\n <div [id]=\"id\" [attr.role]=\"role\" class=\"onemrva-layout-content\" *ngIf=\"content?.template as tpl\">\n <ng-container *ngTemplateOutlet=\"tpl\"></ng-container>\n </div>\n\n <footer class=\"onemrva-footer\" *ngIf=\"footer?.template as footer\">\n <ng-container *ngTemplateOutlet=\"footer\"></ng-container>\n\n <ng-container\n *ngIf=\"\n environment && (environment === env.LOCAL || environment === env.TEST)\n \"\n >\n <button\n id=\"accessibility_fab\"\n mat-fab\n color=\"accent\"\n aria-label=\"Accessibility check\"\n matTooltip=\"Accessibility check\"\n onclick=\"javascript:(function() {var _p='//openfed.github.io/AccessibilityCheck/build/';var _i=function(s,cb) {var sc=document.createElement('script');sc.onload = function() {sc.onload = null;sc.onreadystatechange = null;cb.call(this);};sc.onreadystatechange = function(){if(/^(complete|loaded)$/.test(this.readyState) === true){sc.onreadystatechange = null;sc.onload();}};sc.src=s;if (document.head) {document.head.appendChild(sc);} else {document.getElementsByTagName('head')[0].appendChild(sc);}}; var options={path:_p};_i(_p+'HTMLCS.js',function(){HTMLCSAuditor.run('WCAG2AA',null,options);});})();\"\n >\n <mat-icon>accessibility</mat-icon>\n </button>\n </ng-container>\n </footer>\n </ng-container>\n </div>\n\n <mat-drawer\n class=\"onemrva-drawer mobile-menu-sidebar\"\n mode=\"over\"\n position=\"end\"\n >\n <ng-template drawerhost></ng-template>\n </mat-drawer>\n</mat-drawer-container>\n", styles: [".mat-mdc-tab-nav-bar .mat-mdc-tab-header{height:42px!important}.logo{align-self:center;cursor:pointer}.application-title{font-size:1rem;font-weight:700;font-size:20px;height:42px}:host .mat-toolbar{background:white;position:fixed;top:0;height:90px;z-index:400}.accountName{margin:16px;line-height:16px;font-weight:700}:host{position:relative}:host router-outlet{display:block;margin-bottom:90px}:host .environment{position:fixed;top:0;left:0;z-index:24000;width:60px;height:50px;padding:15px 20px;font-weight:700;font-size:16px;border-radius:0 0 100%;color:#fff;display:none}:host .environment.LOCAL{background:transparent linear-gradient(90deg,#de2174 0%,#EB142A 100%) 0% 0% no-repeat padding-box;display:block}:host .environment.TEST{background-color:#36c;display:block}:host .environment.VAL{background-color:#093;display:block}:host a:active{outline:none}.s-menu .s-menu-languages{display:flex}.s-menu .s-menu-item.active{font-weight:700!important}.s-menu .s-menu-item:hover{cursor:pointer;font-weight:700}.onemrva-layout-content{padding-top:90px;min-height:calc(100vh - 90px)}.onemrva-footer{text-align:center;padding:9.5px}onemrva-mat-avatar.clickable{cursor:pointer}.mat-mdc-menu-content button.active>*{font-weight:700!important}.mat-mdc-menu-content button mat-icon{font-size:18px!important;height:18px;width:18px}.mat-mdc-menu-content button span{font-size:14px!important}#accessibility_fab{position:fixed;bottom:16px;left:16px}nav a.disabled{pointer-events:none}.menu-close-button{float:right}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i5.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i5.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "component", type: i6.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "component", type: i7.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i8.MatDrawer, selector: "mat-drawer", inputs: ["position", "mode", "disableClose", "autoFocus", "opened"], outputs: ["openedChange", "opened", "openedStart", "closed", "closedStart", "positionChanged"], exportAs: ["matDrawer"] }, { kind: "component", type: i8.MatDrawerContainer, selector: "mat-drawer-container", inputs: ["autosize", "hasBackdrop"], outputs: ["backdropClick"], exportAs: ["matDrawerContainer"] }, { kind: "directive", type: i9.MatTabLabel, selector: "[mat-tab-label], [matTabLabel]" }, { kind: "component", type: i9.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass"], exportAs: ["matTab"] }, { kind: "component", type: i9.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple", "fitInkBarToContent", "mat-stretch-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "preserveContent", "backgroundColor"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }, { kind: "component", type: i9.MatTabNav, selector: "[mat-tab-nav-bar]", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "animationDuration", "backgroundColor", "disableRipple", "tabPanel"], exportAs: ["matTabNavBar", "matTabNav"] }, { kind: "component", type: i9.MatTabNavPanel, selector: "mat-tab-nav-panel", inputs: ["id"], exportAs: ["matTabNavPanel"] }, { kind: "component", type: i9.MatTabLink, selector: "[mat-tab-link], [matTabLink]", inputs: ["disabled", "disableRipple", "tabIndex", "active", "id"], exportAs: ["matTabLink"] }, { kind: "component", type: i10.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i10.MatFabButton, selector: "button[mat-fab]", inputs: ["extended"], exportAs: ["matButton"] }, { kind: "component", type: i11.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i11.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i11.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: i12.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i13.OnemrvaMatAvatarComponent, selector: "onemrva-mat-avatar", inputs: ["id", "roundShape", "initials", "icon", "src", "size", "color"] }, { kind: "directive", type: i14.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: i15.DrawerHostDirective, selector: "[drawerhost]" }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }] });
|
|
132
132
|
}
|
|
133
133
|
__decorate([
|
|
134
134
|
CoerceBooleanInput(true)
|
|
135
135
|
], LayoutComponent.prototype, "fluid", void 0);
|
|
136
136
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: LayoutComponent, decorators: [{
|
|
137
137
|
type: Component,
|
|
138
|
-
args: [{ selector: 'onemrva-layout', template: "<mat-drawer-container\n class=\"example-container\"\n [hasBackdrop]=\"drawerService.hasBackdrop\"\n autosize\n>\n <div class=\"app-content\">\n <
|
|
138
|
+
args: [{ selector: 'onemrva-layout', template: "<mat-drawer-container\n class=\"example-container\"\n [hasBackdrop]=\"drawerService.hasBackdrop\"\n autosize\n>\n <div class=\"app-content\">\n <header>\n <mat-toolbar class=\"mat-elevation-z4\">\n <div class=\"environment\" [class]=\"environment\">\n {{ environment }}\n </div>\n <div\n [class.container]=\"!fluid\"\n [class.container-fluid]=\"fluid\"\n class=\"nav-container flex-center\"\n >\n {{ logoRedictionUrl }}\n <img\n class=\"logo\"\n [src]=\"logo\"\n [attr.data-cy]=\"'onemrva_logo_' + translateService.currentLang\"\n alt=\"Logo ONEM/RVA\"\n [routerLink]=\"\n logoRedictionUrl !== null ? logoRedictionUrl : undefined\n \"\n [ngStyle]=\"{\n cursor: logoRedictionUrl !== null ? 'pointer' : 'default'\n }\"\n />\n <div class=\"application-title\" [ngClass]=\"{ 'small-screen': isSmall }\">\n <ng-container *ngIf=\"title?.template as titleTpl\">\n <ng-container *ngTemplateOutlet=\"titleTpl\"></ng-container>\n </ng-container>\n </div>\n\n <div style=\"flex: 1\"></div>\n <div class=\"flex-center\"\n mat-tab-nav-bar\n [tabPanel]=\"tabPanel\"\n *ngIf=\"!isSmall\"\n >\n <ng-container *ngFor=\"let e of routes?.toArray(); let i = index\">\n <a\n mat-tab-link\n [routerLink]=\"e.routerLink\"\n [routerLinkActiveOptions]=\"{ exact: !e.hasSubroutes() }\"\n #rla=\"routerLinkActive\"\n routerLinkActive=\"mdc-tab--active\"\n [active]=\"rla.isActive || e.isRouteActive()\"\n >\n <ng-container *ngIf=\"e.template as routeTemplate\">\n <ng-container *ngTemplateOutlet=\"routeTemplate\"> </ng-container>\n </ng-container>\n </a>\n </ng-container>\n </div>\n\n <mat-tab-nav-panel #tabPanel></mat-tab-nav-panel>\n\n <ng-container *ngIf=\"afterNav?.template as tpl\">\n <ng-container *ngTemplateOutlet=\"tpl\"></ng-container>\n </ng-container>\n\n <mat-divider\n vertical\n style=\"height: 1em; align-self: center\"\n *ngIf=\"!isSmall && routes?.toArray()?.length\"\n ></mat-divider>\n\n <mat-tab-group\n class=\"language-tabs\"\n [selectedIndex]=\"selectedIndex\"\n (selectedIndexChange)=\"changeLanguage($event)\"\n *ngIf=\"!isSmall\"\n >\n <mat-tab *ngFor=\"let lang of languages\">\n <div *matTabLabel [attr.data-cy]=\"'language_' + lang.code\">\n {{ lang.label }}\n </div>\n </mat-tab>\n </mat-tab-group>\n\n <ng-container *ngIf=\"profile !== null\">\n <mat-divider\n vertical\n style=\"height: 1em; align-self: center\"\n *ngIf=\"!isSmall\"\n ></mat-divider>\n <button\n disableRipple\n data-cy=\"accountMenu\"\n class=\"account-button\"\n [matMenuTriggerFor]=\"menu\"\n mat-icon-button\n attr.aria-label=\"{{ 'layout.profile' | translate }}\"\n >\n <mat-icon *ngIf=\"!profile.isLoggedIn\" class=\"large\"\n >account_circle</mat-icon\n >\n\n <onemrva-mat-avatar\n *ngIf=\"profile.isLoggedIn\"\n initials=\"{{ profile.initials() }}\"\n color=\"accent\"\n size=\"extrasmall\"\n ></onemrva-mat-avatar>\n </button>\n <mat-menu #menu=\"matMenu\">\n <ng-container *ngIf=\"profile.isLoggedIn; else notConnected\">\n <p class=\"accountName\">\n {{ profile.firstName }} {{ profile.lastName }}\n </p>\n <mat-divider style=\"align-self: stretch\"></mat-divider>\n\n <ng-container *ngIf=\"loginMenu?.template as menuLoginTpl\">\n <ng-container *ngTemplateOutlet=\"menuLoginTpl\"></ng-container>\n </ng-container>\n\n <button\n type=\"button\"\n class=\"mat-mdc-menu-item\"\n mat-menu-itemMrzapoie\n data-cy=\"logoutButton\"\n (click)=\"doLogout()\"\n attr.aria-label=\"{{ 'layout.logout' | translate }}\"\n >\n <mat-icon>logout</mat-icon>{{ \"layout.logout\" | translate }}\n </button>\n </ng-container>\n <ng-template #notConnected>\n <button\n type=\"button\"\n mat-menu-item\n data-cy=\"loginButton\"\n (click)=\"doLogin()\"\n attr.aria-label=\"{{ 'layout.login' | translate }}\"\n >\n <mat-icon>login</mat-icon>{{ \"layout.login\" | translate }}\n </button>\n </ng-template>\n </mat-menu>\n </ng-container>\n <ng-container\n *ngIf=\"\n isSmall &&\n (routes?.toArray()?.length || (languages && languages.length > 1))\n \"\n >\n <button\n type=\"button\"\n mat-icon-button\n class=\"menu-button\"\n data-cy=\"smallDeviceMenu\"\n (click)=\"toggleSideNav()\"\n attr.aria-label=\"{{ 'layout.menu' | translate }}\"\n >\n <mat-icon>menu</mat-icon>\n </button>\n </ng-container>\n </div>\n </mat-toolbar>\n </header>\n <ng-container>\n <div [id]=\"id\" [attr.role]=\"role\" class=\"onemrva-layout-content\" *ngIf=\"content?.template as tpl\">\n <ng-container *ngTemplateOutlet=\"tpl\"></ng-container>\n </div>\n\n <footer class=\"onemrva-footer\" *ngIf=\"footer?.template as footer\">\n <ng-container *ngTemplateOutlet=\"footer\"></ng-container>\n\n <ng-container\n *ngIf=\"\n environment && (environment === env.LOCAL || environment === env.TEST)\n \"\n >\n <button\n id=\"accessibility_fab\"\n mat-fab\n color=\"accent\"\n aria-label=\"Accessibility check\"\n matTooltip=\"Accessibility check\"\n onclick=\"javascript:(function() {var _p='//openfed.github.io/AccessibilityCheck/build/';var _i=function(s,cb) {var sc=document.createElement('script');sc.onload = function() {sc.onload = null;sc.onreadystatechange = null;cb.call(this);};sc.onreadystatechange = function(){if(/^(complete|loaded)$/.test(this.readyState) === true){sc.onreadystatechange = null;sc.onload();}};sc.src=s;if (document.head) {document.head.appendChild(sc);} else {document.getElementsByTagName('head')[0].appendChild(sc);}}; var options={path:_p};_i(_p+'HTMLCS.js',function(){HTMLCSAuditor.run('WCAG2AA',null,options);});})();\"\n >\n <mat-icon>accessibility</mat-icon>\n </button>\n </ng-container>\n </footer>\n </ng-container>\n </div>\n\n <mat-drawer\n class=\"onemrva-drawer mobile-menu-sidebar\"\n mode=\"over\"\n position=\"end\"\n >\n <ng-template drawerhost></ng-template>\n </mat-drawer>\n</mat-drawer-container>\n", styles: [".mat-mdc-tab-nav-bar .mat-mdc-tab-header{height:42px!important}.logo{align-self:center;cursor:pointer}.application-title{font-size:1rem;font-weight:700;font-size:20px;height:42px}:host .mat-toolbar{background:white;position:fixed;top:0;height:90px;z-index:400}.accountName{margin:16px;line-height:16px;font-weight:700}:host{position:relative}:host router-outlet{display:block;margin-bottom:90px}:host .environment{position:fixed;top:0;left:0;z-index:24000;width:60px;height:50px;padding:15px 20px;font-weight:700;font-size:16px;border-radius:0 0 100%;color:#fff;display:none}:host .environment.LOCAL{background:transparent linear-gradient(90deg,#de2174 0%,#EB142A 100%) 0% 0% no-repeat padding-box;display:block}:host .environment.TEST{background-color:#36c;display:block}:host .environment.VAL{background-color:#093;display:block}:host a:active{outline:none}.s-menu .s-menu-languages{display:flex}.s-menu .s-menu-item.active{font-weight:700!important}.s-menu .s-menu-item:hover{cursor:pointer;font-weight:700}.onemrva-layout-content{padding-top:90px;min-height:calc(100vh - 90px)}.onemrva-footer{text-align:center;padding:9.5px}onemrva-mat-avatar.clickable{cursor:pointer}.mat-mdc-menu-content button.active>*{font-weight:700!important}.mat-mdc-menu-content button mat-icon{font-size:18px!important;height:18px;width:18px}.mat-mdc-menu-content button span{font-size:14px!important}#accessibility_fab{position:fixed;bottom:16px;left:16px}nav a.disabled{pointer-events:none}.menu-close-button{float:right}\n"] }]
|
|
139
139
|
}], ctorParameters: () => [{ type: i1.TranslateService }, { type: i0.ChangeDetectorRef }, { type: i2.BreakpointObserver }, { type: Document, decorators: [{
|
|
140
140
|
type: Inject,
|
|
141
141
|
args: [DOCUMENT]
|
|
@@ -184,4 +184,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImpor
|
|
|
184
184
|
}], role: [{
|
|
185
185
|
type: Input
|
|
186
186
|
}] } });
|
|
187
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29uZW1ydmEvZGVzaWduLXN5c3RlbS9sYXlvdXQvc3JjL2NvbXBvbmVudHMvbGF5b3V0L2xheW91dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbmVtcnZhL2Rlc2lnbi1zeXN0ZW0vbGF5b3V0L3NyYy9jb21wb25lbnRzL2xheW91dC9sYXlvdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFFTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLGVBQWUsRUFDZixLQUFLLEVBS0wsTUFBTSxFQUNOLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNOLFNBQVMsR0FFVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUU5RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNwRixPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUU5RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUVyRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDM0QsT0FBTyxFQUVMLFdBQVcsR0FFWixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUVqRixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUM1RixPQUFPLEVBQUUsU0FBUyxF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QjtnQkFHRCxLQUFLO3NCQUF4QyxZQUFZO3VCQUFDLG9CQUFvQjtnQkFDTSxTQUFTO3NCQUFoRCxZQUFZO3VCQUFDLHdCQUF3QjtnQkFDQSxPQUFPO3NCQUE1QyxZQUFZO3VCQUFDLHNCQUFzQjtnQkFDRyxRQUFRO3NCQUE5QyxZQUFZO3VCQUFDLHVCQUF1QjtnQkFHckMsTUFBTTtzQkFETCxZQUFZO3VCQUFDLHFCQUFxQjtnQkFLbkMsS0FBSztzQkFGSixLQUFLO2dCQUtOLElBQUk7c0JBREgsS0FBSztnQkFJTixTQUFTO3NCQURSLEtBQUs7Z0JBSU4sV0FBVztzQkFEVixLQUFLO2dCQUlOLGdCQUFnQjtzQkFEZixLQUFLO2dCQU9OLE9BQU87c0JBRE4sS0FBSztnQkFJTixLQUFLO3NCQURKLE1BQU07Z0JBSVAsTUFBTTtzQkFETCxNQUFNO2dCQVFpQyxNQUFNO3NCQUE3QyxTQUFTO3VCQUFDLFNBQVMsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBRXRDLFVBQVU7c0JBRFQsU0FBUzt1QkFBQyxtQkFBbUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBSWhELEVBQUU7c0JBREQsS0FBSztnQkFJTixJQUFJO3NCQURILEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgSW5wdXQsXG4gIEFmdGVyVmlld0luaXQsXG4gIE9uRGVzdHJveSxcbiAgUXVlcnlMaXN0LFxuICBPbkluaXQsXG4gIEluamVjdCxcbiAgaXNEZXZNb2RlLFxuICBFdmVudEVtaXR0ZXIsXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkLFxuICBFbGVtZW50UmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IExheW91dFJvdXRlQ29tcG9uZW50IH0gZnJvbSAnLi4vbGF5b3V0LXJvdXRlL2xheW91dC1yb3V0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgTGF5b3V0Q29udGVudENvbXBvbmVudCB9IGZyb20gJy4uL2xheW91dC1jb250ZW50L2xheW91dC1jb250ZW50LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IExheW91dFRpdGxlQ29tcG9uZW50IH0gZnJvbSAnLi4vbGF5b3V0LXRpdGxlL2xheW91dC10aXRsZS5jb21wb25lbnQnO1xuXG5pbXBvcnQgeyBDb2VyY2VCb29sZWFuSW5wdXQgfSBmcm9tICcuLi8uLi9kZWNvcmF0b3JzL2NvZXJjZS1ib29sZWFuLWlucHV0LmRlY29yYXRvcic7XG5cbmltcG9ydCB7IEVudmlyb25tZW50IH0gZnJvbSAnLi4vLi4vZW51bXMvZW52aXJvbm1lbnQuZW51bSc7XG5pbXBvcnQge1xuICBCcmVha3BvaW50T2JzZXJ2ZXIsXG4gIEJyZWFrcG9pbnRzLFxuICBCcmVha3BvaW50U3RhdGUsXG59IGZyb20gJ0Bhbmd1bGFyL2Nkay9sYXlvdXQnO1xuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTGF5b3V0Rm9vdGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vbGF5b3V0LWZvb3Rlci9sYXlvdXQtZm9vdGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBPbmVtUnZhUHJvZmlsZSB9IGZyb20gJy4uLy4uL21vZGVscy9vbmVtcnZhLXByb2ZpbGUubW9kZWwnO1xuaW1wb3J0IHsgTGF5b3V0TG9naW5NZW51Q29tcG9uZW50IH0gZnJvbSAnLi4vbGF5b3V0LWxvZ2luLW1lbnUvbGF5b3V0LWxvZ2luLW1lbnUuY29tcG9uZW50JztcbmltcG9ydCB7IE1hdERyYXdlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NpZGVuYXYnO1xuaW1wb3J0IHsgRHJhd2VySG9zdERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvZHJhd2VyLWhvc3QuZGlyZWN0aXZlJztcbmltcG9ydCB7IE9uZW1ydmFEcmF3ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZHJhd2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgTGF5b3V0U2lkZW5hdkNvbXBvbmVudCB9IGZyb20gJy4uL2xheW91dC1zaWRlbmF2L2xheW91dC1zaWRlbmF2LmNvbXBvbmVudCc7XG5pbXBvcnQge0xheW91dEFmdGVyTmF2Q29tcG9uZW50fSBmcm9tIFwiLi4vbGF5b3V0LWFmdGVyLW5hdi9sYXlvdXQtYWZ0ZXItbmF2LmNvbXBvbmVudFwiO1xuaW1wb3J0IHtPbmVtUnZhTGFuZ3VhZ2V9IGZyb20gXCIuLi8uLi9tb2RlbHMvb25lbS1sYW5ndWFnZS5tb2RlbFwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvbmVtcnZhLWxheW91dCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9sYXlvdXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9sYXlvdXQuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgTGF5b3V0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICBAQ29udGVudENoaWxkcmVuKExheW91dFJvdXRlQ29tcG9uZW50KVxuICByb3V0ZXM/OiBRdWVyeUxpc3Q8TGF5b3V0Um91dGVDb21wb25lbnQ+O1xuXG4gIEBDb250ZW50Q2hpbGQoTGF5b3V0VGl0bGVDb21wb25lbnQpIHRpdGxlPzogTGF5b3V0VGl0bGVDb21wb25lbnQ7XG4gIEBDb250ZW50Q2hpbGQoTGF5b3V0TG9naW5NZW51Q29tcG9uZW50KSBsb2dpbk1lbnU/OiBMYXlvdXRMb2dpbk1lbnVDb21wb25lbnQ7XG4gIEBDb250ZW50Q2hpbGQoTGF5b3V0Q29udGVudENvbXBvbmVudCkgY29udGVudD86IExheW91dENvbnRlbnRDb21wb25lbnQ7XG4gIEBDb250ZW50Q2hpbGQoTGF5b3V0QWZ0ZXJOYXZDb21wb25lbnQpIGFmdGVyTmF2PzogTGF5b3V0QWZ0ZXJOYXZDb21wb25lbnQ7XG5cbiAgQENvbnRlbnRDaGlsZChMYXlvdXRGb290ZXJDb21wb25lbnQpXG4gIGZvb3Rlcj86IExheW91dEZvb3RlckNvbXBvbmVudDtcblxuICBASW5wdXQoKVxuICBAQ29lcmNlQm9vbGVhbklucHV0KHRydWUpXG4gIGZsdWlkOiBhbnkgPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBsb2dvOiBzdHJpbmcgPSAnJzsgLy8gY3VzdG9tIGxvZ28sIGVtcHR5IHN0cmluZyB3aWxsIHNob3cgZGVmYXVsdCBvbmVtL3J2YS9uZW8vbGZhIGxvY2FsaXNlZCBsb2dvXG5cbiAgQElucHV0KClcbiAgbGFuZ3VhZ2VzOiBPbmVtUnZhTGFuZ3VhZ2VbXSA9IFtdOyAvLyBsaXN0IG9mIGxhbmd1YWdlc1xuXG4gIEBJbnB1dCgpXG4gIGVudmlyb25tZW50PzogRW52aXJvbm1lbnQ7IC8vIHBvc3NpYmxlIGVudmlyb25tZW50IHRvIHNob3cgb24gdGhlIGZyb250ZW5kIExPQ0FMLCBURVNULCBWQUwsIFBST0RcblxuICBASW5wdXQoKVxuICBsb2dvUmVkaWN0aW9uVXJsPzogc3RyaW5nIHwgYW55W10gfCBudWxsID0gJyc7IC8vIHZhbHVlIGZvciByb3V0ZXJMaW5rIGZyb20gbG9nby4gXCJcIiBieSBkZWZhdWx0LiBEZWFjdGl2YXRlZCB3aGVuIHNldCB0byBudWxsXG5cbiAgc2VsZWN0ZWRJbmRleCA9IDA7XG4gIGRlc3Ryb3lOb3RpZmllciQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xuXG4gIEBJbnB1dCgpXG4gIHByb2ZpbGU6IE9uZW1SdmFQcm9maWxlIHwgbnVsbCA9IG51bGw7IC8vIFRvIGJlIGRlZmluZWQgZm9yIGFwcGxpY2F0aW9uIHdpdGggYXV0aGVudGljYXRpb25cblxuICBAT3V0cHV0KClcbiAgbG9naW46IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBAT3V0cHV0KClcbiAgbG9nb3V0OiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIC8vICAgIGlzTG9nb3V0VXNlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGVudiA9IEVudmlyb25tZW50O1xuXG4gIGlzU21hbGwgPSB0cnVlO1xuXG4gIEBWaWV3Q2hpbGQoTWF0RHJhd2VyLCB7IHN0YXRpYzogdHJ1ZSB9KSBkcmF3ZXIhOiBNYXREcmF3ZXI7XG4gIEBWaWV3Q2hpbGQoRHJhd2VySG9zdERpcmVjdGl2ZSwgeyBzdGF0aWM6IHRydWUgfSlcbiAgZHJhd2VySG9zdCE6IERyYXdlckhvc3REaXJlY3RpdmU7XG5cbiAgQElucHV0KClcbiAgaWQ6IHN0cmluZyA9IFwibWFpblwiO1xuXG4gIEBJbnB1dCgpXG4gIHJvbGU6IHN0cmluZyA9IFwibWFpblwiO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHB1YmxpYyBicmVha3BvaW50T2JzZXJ2ZXI6IEJyZWFrcG9pbnRPYnNlcnZlcixcbiAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIGRvY3VtZW50OiBEb2N1bWVudCxcbiAgICBwdWJsaWMgZHJhd2VyU2VydmljZTogT25lbXJ2YURyYXdlclNlcnZpY2VcbiAgKSB7XG4gICAgLy8gICAgICB0aGlzLmlzTG9nb3V0VXNlZCA9IHRoaXMubG9nb3V0Lm9ic2VydmVycy5sZW5ndGggPiAwO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5zZWxlY3RlZEluZGV4ID0gdGhpcy5sYW5ndWFnZXMuZmluZEluZGV4KFxuICAgICAgKGwpID0+IGwuY29kZSA9PT0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmN1cnJlbnRMYW5nXG4gICAgKTtcblxuICAgIHRoaXMuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmxhbmcgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuY3VycmVudExhbmc7XG5cbiAgICB0aGlzLmJyZWFrcG9pbnRPYnNlcnZlclxuICAgICAgLm9ic2VydmUoW0JyZWFrcG9pbnRzLlhTbWFsbCwgQnJlYWtwb2ludHMuU21hbGxdKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveU5vdGlmaWVyJCkpXG4gICAgICAuc3Vic2NyaWJlKChzdGF0ZTogQnJlYWtwb2ludFN0YXRlKSA9PiB7XG4gICAgICAgIGlmIChzdGF0ZS5tYXRjaGVzKSB7XG4gICAgICAgICAgdGhpcy5pc1NtYWxsID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmRyYXdlclNlcnZpY2UuY2xvc2UoKTtcbiAgICAgICAgICB0aGlzLmlzU21hbGwgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICBpZiAodGhpcy5sb2dvID09PSAnJykge1xuICAgICAgdGhpcy5sb2dvID0gYC9hc3NldHMvbG9nb18ke3RoaXMudHJhbnNsYXRlU2VydmljZS5jdXJyZW50TGFuZ30uc3ZnYDtcbiAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5vbkxhbmdDaGFuZ2VcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveU5vdGlmaWVyJCkpXG4gICAgICAgIC5zdWJzY3JpYmUoKGxhbmcpID0+IHtcbiAgICAgICAgICB0aGlzLmxvZ28gPSBgL2Fzc2V0cy9sb2dvXyR7bGFuZy5sYW5nfS5zdmdgO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLm9uTGFuZ0NoYW5nZVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveU5vdGlmaWVyJCkpXG4gICAgICAuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICB0aGlzLnNlbGVjdGVkSW5kZXggPSB0aGlzLmxhbmd1YWdlcy5maW5kSW5kZXgoXG4gICAgICAgICAgKGxhbmcpID0+IGxhbmcuY29kZSA9PT0gZXZlbnQubGFuZ1xuICAgICAgICApO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLmRyYXdlclNlcnZpY2UuaG9zdCA9IHRoaXMuZHJhd2VySG9zdDtcbiAgICB0aGlzLmRyYXdlclNlcnZpY2UuZHJhd2VyID0gdGhpcy5kcmF3ZXI7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgaWYgKGlzRGV2TW9kZSgpKSB7XG4gICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3lOb3RpZmllciQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveU5vdGlmaWVyJC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgZG9Mb2dvdXQoKSB7XG4gICAgdGhpcy5sb2dvdXQubmV4dCgpO1xuICB9XG5cbiAgZG9Mb2dpbigpIHtcbiAgICB0aGlzLmxvZ2luLm5leHQoKTtcbiAgfVxuXG4gIGNoYW5nZUxhbmd1YWdlKGluZGV4OiBudW1iZXIpIHtcbiAgICBjb25zdCBsYW5ndWFnZSA9IHRoaXMubGFuZ3VhZ2VzW2luZGV4XTtcbiAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudXNlKGxhbmd1YWdlLmNvZGUpO1xuICAgIHRoaXMuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmxhbmcgPSBsYW5ndWFnZS5jb2RlO1xuICB9XG5cbiAgdG9nZ2xlU2lkZU5hdigpIHtcbiAgICB0aGlzLmRyYXdlckhvc3Qudmlld0NvbnRhaW5lclJlZi5jbGVhcigpO1xuICAgIGNvbnN0IGNvbXBvbmVudFJlZiA9IHRoaXMuZHJhd2VySG9zdC52aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudChcbiAgICAgIExheW91dFNpZGVuYXZDb21wb25lbnRcbiAgICApO1xuICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5pc1NtYWxsID0gdGhpcy5pc1NtYWxsO1xuICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5sYW5ndWFnZXMgPSB0aGlzLmxhbmd1YWdlcztcbiAgICBjb21wb25lbnRSZWYuaW5zdGFuY2Uucm91dGVzID0gdGhpcy5yb3V0ZXM7XG4gICAgdGhpcy5kcmF3ZXJTZXJ2aWNlLmhhc0JhY2tkcm9wID0gZmFsc2U7XG5cbiAgICB0aGlzLmRyYXdlci5vcGVuKCk7XG4gIH1cbn1cbiIsIjxtYXQtZHJhd2VyLWNvbnRhaW5lclxuICBjbGFzcz1cImV4YW1wbGUtY29udGFpbmVyXCJcbiAgW2hhc0JhY2tkcm9wXT1cImRyYXdlclNlcnZpY2UuaGFzQmFja2Ryb3BcIlxuICBhdXRvc2l6ZVxuPlxuICA8ZGl2IGNsYXNzPVwiYXBwLWNvbnRlbnRcIj5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICAqbmdJZj1cIlxuICAgICAgICBlbnZpcm9ubWVudCAmJiAoZW52aXJvbm1lbnQgPT09IGVudi5MT0NBTCB8fCBlbnZpcm9ubWVudCA9PT0gZW52LlRFU1QpXG4gICAgICBcIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJlbnZpcm9ubWVudFwiIFtjbGFzc109XCJlbnZpcm9ubWVudFwiPlxuICAgICAgICB7eyBlbnZpcm9ubWVudCB9fVxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxidXR0b25cbiAgICAgICAgaWQ9XCJhY2Nlc3NpYmlsaXR5X2ZhYlwiXG4gICAgICAgIG1hdC1mYWJcbiAgICAgICAgY29sb3I9XCJhY2NlbnRcIlxuICAgICAgICBhcmlhLWxhYmVsPVwiQWNjZXNzaWJpbGl0eSBjaGVja1wiXG4gICAgICAgIG1hdFRvb2x0aXA9XCJBY2Nlc3NpYmlsaXR5IGNoZWNrXCJcbiAgICAgICAgb25jbGljaz1cImphdmFzY3JpcHQ6KGZ1bmN0aW9uKCkge3ZhciBfcD0nLy9vcGVuZmVkLmdpdGh1Yi5pby9BY2Nlc3NpYmlsaXR5Q2hlY2svYnVpbGQvJzt2YXIgX2k9ZnVuY3Rpb24ocyxjYikge3ZhciBzYz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtzYy5vbmxvYWQgPSBmdW5jdGlvbigpIHtzYy5vbmxvYWQgPSBudWxsO3NjLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IG51bGw7Y2IuY2FsbCh0aGlzKTt9O3NjLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKCl7aWYoL14oY29tcGxldGV8bG9hZGVkKSQvLnRlc3QodGhpcy5yZWFkeVN0YXRlKSA9PT0gdHJ1ZSl7c2Mub25yZWFkeXN0YXRlY2hhbmdlID0gbnVsbDtzYy5vbmxvYWQoKTt9fTtzYy5zcmM9cztpZiAoZG9jdW1lbnQuaGVhZCkge2RvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoc2MpO30gZWxzZSB7ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXS5hcHBlbmRDaGlsZChzYyk7fX07IHZhciBvcHRpb25zPXtwYXRoOl9wfTtfaShfcCsnSFRNTENTLmpzJyxmdW5jdGlvbigpe0hUTUxDU0F1ZGl0b3IucnVuKCdXQ0FHMkFBJyxudWxsLG9wdGlvbnMpO30pO30pKCk7XCJcbiAgICAgID5cbiAgICAgICAgPG1hdC1pY29uPmFjY2Vzc2liaWxpdHk8L21hdC1pY29uPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG1hdC10b29sYmFyIGNsYXNzPVwibWF0LWVsZXZhdGlvbi16NFwiPlxuICAgICAgPGRpdlxuICAgICAgICBbY2xhc3MuY29udGFpbmVyXT1cIiFmbHVpZFwiXG4gICAgICAgIFtjbGFzcy5jb250YWluZXItZmx1aWRdPVwiZmx1aWRcIlxuICAgICAgICBjbGFzcz1cIm5hdi1jb250YWluZXJcIlxuICAgICAgICBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXJcIlxuICAgICAgPlxuICAgICAgICB7eyBsb2dvUmVkaWN0aW9uVXJsIH19XG4gICAgICAgIDxpbWdcbiAgICAgICAgICBjbGFzcz1cImxvZ29cIlxuICAgICAgICAgIFtzcmNdPVwibG9nb1wiXG4gICAgICAgICAgW2F0dHIuZGF0YS1jeV09XCInb25lbXJ2YV9sb2dvXycgKyB0cmFuc2xhdGVTZXJ2aWNlLmN1cnJlbnRMYW5nXCJcbiAgICAgICAgICBhbHQ9XCJMb2dvIE9ORU0vUlZBXCJcbiAgICAgICAgICBbcm91dGVyTGlua109XCJcbiAgICAgICAgICAgIGxvZ29SZWRpY3Rpb25VcmwgIT09IG51bGwgPyBsb2dvUmVkaWN0aW9uVXJsIDogdW5kZWZpbmVkXG4gICAgICAgICAgXCJcbiAgICAgICAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAgICAgICBjdXJzb3I6IGxvZ29SZWRpY3Rpb25VcmwgIT09IG51bGwgPyAncG9pbnRlcicgOiAnZGVmYXVsdCdcbiAgICAgICAgICB9XCJcbiAgICAgICAgLz5cbiAgICAgICAgPGRpdiBjbGFzcz1cImFwcGxpY2F0aW9uLXRpdGxlXCIgW25nQ2xhc3NdPVwieyAnc21hbGwtc2NyZWVuJzogaXNTbWFsbCB9XCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRpdGxlPy50ZW1wbGF0ZSBhcyB0aXRsZVRwbFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRpdGxlVHBsXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgc3R5bGU9XCJmbGV4OiAxXCI+PC9kaXY+XG4gICAgICAgIDxuYXZcbiAgICAgICAgICBtYXQtdGFiLW5hdi1iYXJcbiAgICAgICAgICBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXJcIlxuICAgICAgICAgIHN0eWxlPVwiZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlclwiXG4gICAgICAgICAgW3RhYlBhbmVsXT1cInRhYlBhbmVsXCJcbiAgICAgICAgICAqbmdJZj1cIiFpc1NtYWxsXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGUgb2Ygcm91dGVzPy50b0FycmF5KCk7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgIG1hdC10YWItbGlua1xuICAgICAgICAgICAgICBbcm91dGVyTGlua109XCJlLnJvdXRlckxpbmtcIlxuICAgICAgICAgICAgICBbcm91dGVyTGlua0FjdGl2ZU9wdGlvbnNdPVwieyBleGFjdDogIWUuaGFzU3Vicm91dGVzKCkgfVwiXG4gICAgICAgICAgICAgICNybGE9XCJyb3V0ZXJMaW5rQWN0aXZlXCJcbiAgICAgICAgICAgICAgcm91dGVyTGlua0FjdGl2ZT1cIm1kYy10YWItLWFjdGl2ZVwiXG4gICAgICAgICAgICAgIFthY3RpdmVdPVwicmxhLmlzQWN0aXZlIHx8IGUuaXNSb3V0ZUFjdGl2ZSgpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImUudGVtcGxhdGUgYXMgcm91dGVUZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJyb3V0ZVRlbXBsYXRlXCI+IDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uYXY+XG5cbiAgICAgICAgPG1hdC10YWItbmF2LXBhbmVsICN0YWJQYW5lbD48L21hdC10YWItbmF2LXBhbmVsPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhZnRlck5hdj8udGVtcGxhdGUgYXMgdHBsXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRwbFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8bWF0LWRpdmlkZXJcbiAgICAgICAgICB2ZXJ0aWNhbFxuICAgICAgICAgIHN0eWxlPVwiaGVpZ2h0OiAxZW07IGFsaWduLXNlbGY6IGNlbnRlclwiXG4gICAgICAgICAgKm5nSWY9XCIhaXNTbWFsbCAmJiByb3V0ZXM/LnRvQXJyYXkoKT8ubGVuZ3RoXCJcbiAgICAgICAgPjwvbWF0LWRpdmlkZXI+XG5cbiAgICAgICAgPG1hdC10YWItZ3JvdXBcbiAgICAgICAgICBjbGFzcz1cImxhbmd1YWdlLXRhYnNcIlxuICAgICAgICAgIFtzZWxlY3RlZEluZGV4XT1cInNlbGVjdGVkSW5kZXhcIlxuICAgICAgICAgIChzZWxlY3RlZEluZGV4Q2hhbmdlKT1cImNoYW5nZUxhbmd1YWdlKCRldmVudClcIlxuICAgICAgICAgICpuZ0lmPVwiIWlzU21hbGxcIlxuICAgICAgICA+XG4gICAgICAgICAgPG1hdC10YWIgKm5nRm9yPVwibGV0IGxhbmcgb2YgbGFuZ3VhZ2VzXCI+XG4gICAgICAgICAgICA8ZGl2ICptYXRUYWJMYWJlbCBbYXR0ci5kYXRhLWN5XT1cIidsYW5ndWFnZV8nICsgbGFuZy5jb2RlXCI+XG4gICAgICAgICAgICAgIHt7IGxhbmcubGFiZWwgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbWF0LXRhYj5cbiAgICAgICAgPC9tYXQtdGFiLWdyb3VwPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwcm9maWxlICE9PSBudWxsXCI+XG4gICAgICAgICAgPG1hdC1kaXZpZGVyXG4gICAgICAgICAgICB2ZXJ0aWNhbFxuICAgICAgICAgICAgc3R5bGU9XCJoZWlnaHQ6IDFlbTsgYWxpZ24tc2VsZjogY2VudGVyXCJcbiAgICAgICAgICAgICpuZ0lmPVwiIWlzU21hbGxcIlxuICAgICAgICAgID48L21hdC1kaXZpZGVyPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGRpc2FibGVSaXBwbGVcbiAgICAgICAgICAgIGRhdGEtY3k9XCJhY2NvdW50TWVudVwiXG4gICAgICAgICAgICBjbGFzcz1cImFjY291bnQtYnV0dG9uXCJcbiAgICAgICAgICAgIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51XCJcbiAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgYXR0ci5hcmlhLWxhYmVsPVwie3sgJ2xheW91dC5wcm9maWxlJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwiIXByb2ZpbGUuaXNMb2dnZWRJblwiIGNsYXNzPVwibGFyZ2VcIlxuICAgICAgICAgICAgICA+YWNjb3VudF9jaXJjbGU8L21hdC1pY29uXG4gICAgICAgICAgICA+XG5cbiAgICAgICAgICAgIDxvbmVtcnZhLW1hdC1hdmF0YXJcbiAgICAgICAgICAgICAgKm5nSWY9XCJwcm9maWxlLmlzTG9nZ2VkSW5cIlxuICAgICAgICAgICAgICBpbml0aWFscz1cInt7IHByb2ZpbGUuaW5pdGlhbHMoKSB9fVwiXG4gICAgICAgICAgICAgIGNvbG9yPVwiYWNjZW50XCJcbiAgICAgICAgICAgICAgc2l6ZT1cImV4dHJhc21hbGxcIlxuICAgICAgICAgICAgPjwvb25lbXJ2YS1tYXQtYXZhdGFyPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDxtYXQtbWVudSAjbWVudT1cIm1hdE1lbnVcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwcm9maWxlLmlzTG9nZ2VkSW47IGVsc2Ugbm90Q29ubmVjdGVkXCI+XG4gICAgICAgICAgICAgIDxwIGNsYXNzPVwiYWNjb3VudE5hbWVcIj5cbiAgICAgICAgICAgICAgICB7eyBwcm9maWxlLmZpcnN0TmFtZSB9fSB7eyBwcm9maWxlLmxhc3ROYW1lIH19XG4gICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgPG1hdC1kaXZpZGVyIHN0eWxlPVwiYWxpZ24tc2VsZjogc3RyZXRjaFwiPjwvbWF0LWRpdmlkZXI+XG5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxvZ2luTWVudT8udGVtcGxhdGUgYXMgbWVudUxvZ2luVHBsXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm1lbnVMb2dpblRwbFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJtYXQtbWRjLW1lbnUtaXRlbVwiXG4gICAgICAgICAgICAgICAgbWF0LW1lbnUtaXRlbU1yemFwb2llXG4gICAgICAgICAgICAgICAgZGF0YS1jeT1cImxvZ291dEJ1dHRvblwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImRvTG9nb3V0KClcIlxuICAgICAgICAgICAgICAgIGF0dHIuYXJpYS1sYWJlbD1cInt7ICdsYXlvdXQubG9nb3V0JyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24+bG9nb3V0PC9tYXQtaWNvbj57eyBcImxheW91dC5sb2dvdXRcIiB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNub3RDb25uZWN0ZWQ+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBtYXQtbWVudS1pdGVtXG4gICAgICAgICAgICAgICAgZGF0YS1jeT1cImxvZ2luQnV0dG9uXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZG9Mb2dpbigpXCJcbiAgICAgICAgICAgICAgICBhdHRyLmFyaWEtbGFiZWw9XCJ7eyAnbGF5b3V0LmxvZ2luJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24+bG9naW48L21hdC1pY29uPnt7IFwibGF5b3V0LmxvZ2luXCIgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvbWF0LW1lbnU+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgIGlzU21hbGwgJiZcbiAgICAgICAgICAgIChyb3V0ZXM/LnRvQXJyYXkoKT8ubGVuZ3RoIHx8IChsYW5ndWFnZXMgJiYgbGFuZ3VhZ2VzLmxlbmd0aCA+IDEpKVxuICAgICAgICAgIFwiXG4gICAgICAgID5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgY2xhc3M9XCJtZW51LWJ1dHRvblwiXG4gICAgICAgICAgICBkYXRhLWN5PVwic21hbGxEZXZpY2VNZW51XCJcbiAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVTaWRlTmF2KClcIlxuICAgICAgICAgICAgYXR0ci5hcmlhLWxhYmVsPVwie3sgJ2xheW91dC5tZW51JyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPG1hdC1pY29uPm1lbnU8L21hdC1pY29uPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbWF0LXRvb2xiYXI+XG5cbiAgICA8bmctY29udGFpbmVyPlxuICAgICAgPGRpdiBbaWRdPVwiaWRcIiBbYXR0ci5yb2xlXT1cInJvbGVcIiBjbGFzcz1cIm9uZW1ydmEtbGF5b3V0LWNvbnRlbnRcIiAqbmdJZj1cImNvbnRlbnQ/LnRlbXBsYXRlIGFzIHRwbFwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidHBsXCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGZvb3RlciBjbGFzcz1cIm9uZW1ydmEtZm9vdGVyXCIgKm5nSWY9XCJmb290ZXI/LnRlbXBsYXRlIGFzIGZvb3RlclwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZm9vdGVyXCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8L2Zvb3Rlcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG5cbiAgPG1hdC1kcmF3ZXJcbiAgICBjbGFzcz1cIm9uZW1ydmEtZHJhd2VyIG1vYmlsZS1tZW51LXNpZGViYXJcIlxuICAgIG1vZGU9XCJvdmVyXCJcbiAgICBwb3NpdGlvbj1cImVuZFwiXG4gID5cbiAgICA8bmctdGVtcGxhdGUgZHJhd2VyaG9zdD48L25nLXRlbXBsYXRlPlxuICA8L21hdC1kcmF3ZXI+XG48L21hdC1kcmF3ZXItY29udGFpbmVyPlxuIl19
|
|
187
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29uZW1ydmEvZGVzaWduLXN5c3RlbS9sYXlvdXQvc3JjL2NvbXBvbmVudHMvbGF5b3V0L2xheW91dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbmVtcnZhL2Rlc2lnbi1zeXN0ZW0vbGF5b3V0L3NyYy9jb21wb25lbnRzL2xheW91dC9sYXlvdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFFTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLGVBQWUsRUFDZixLQUFLLEVBS0wsTUFBTSxFQUNOLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNOLFNBQVMsR0FFVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUU5RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNwRixPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUU5RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUVyRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDM0QsT0FBTyxFQUVMLFdBQVcsR0FFWixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUVqRixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUM1RixPQUFPLEVBQUUsU0FBUyxF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QjtnQkFHRCxLQUFLO3NCQUF4QyxZQUFZO3VCQUFDLG9CQUFvQjtnQkFDTSxTQUFTO3NCQUFoRCxZQUFZO3VCQUFDLHdCQUF3QjtnQkFDQSxPQUFPO3NCQUE1QyxZQUFZO3VCQUFDLHNCQUFzQjtnQkFDRyxRQUFRO3NCQUE5QyxZQUFZO3VCQUFDLHVCQUF1QjtnQkFHckMsTUFBTTtzQkFETCxZQUFZO3VCQUFDLHFCQUFxQjtnQkFLbkMsS0FBSztzQkFGSixLQUFLO2dCQUtOLElBQUk7c0JBREgsS0FBSztnQkFJTixTQUFTO3NCQURSLEtBQUs7Z0JBSU4sV0FBVztzQkFEVixLQUFLO2dCQUlOLGdCQUFnQjtzQkFEZixLQUFLO2dCQU9OLE9BQU87c0JBRE4sS0FBSztnQkFJTixLQUFLO3NCQURKLE1BQU07Z0JBSVAsTUFBTTtzQkFETCxNQUFNO2dCQVFpQyxNQUFNO3NCQUE3QyxTQUFTO3VCQUFDLFNBQVMsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBRXRDLFVBQVU7c0JBRFQsU0FBUzt1QkFBQyxtQkFBbUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBSWhELEVBQUU7c0JBREQsS0FBSztnQkFJTixJQUFJO3NCQURILEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgSW5wdXQsXG4gIEFmdGVyVmlld0luaXQsXG4gIE9uRGVzdHJveSxcbiAgUXVlcnlMaXN0LFxuICBPbkluaXQsXG4gIEluamVjdCxcbiAgaXNEZXZNb2RlLFxuICBFdmVudEVtaXR0ZXIsXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkLFxuICBFbGVtZW50UmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IExheW91dFJvdXRlQ29tcG9uZW50IH0gZnJvbSAnLi4vbGF5b3V0LXJvdXRlL2xheW91dC1yb3V0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgTGF5b3V0Q29udGVudENvbXBvbmVudCB9IGZyb20gJy4uL2xheW91dC1jb250ZW50L2xheW91dC1jb250ZW50LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IExheW91dFRpdGxlQ29tcG9uZW50IH0gZnJvbSAnLi4vbGF5b3V0LXRpdGxlL2xheW91dC10aXRsZS5jb21wb25lbnQnO1xuXG5pbXBvcnQgeyBDb2VyY2VCb29sZWFuSW5wdXQgfSBmcm9tICcuLi8uLi9kZWNvcmF0b3JzL2NvZXJjZS1ib29sZWFuLWlucHV0LmRlY29yYXRvcic7XG5cbmltcG9ydCB7IEVudmlyb25tZW50IH0gZnJvbSAnLi4vLi4vZW51bXMvZW52aXJvbm1lbnQuZW51bSc7XG5pbXBvcnQge1xuICBCcmVha3BvaW50T2JzZXJ2ZXIsXG4gIEJyZWFrcG9pbnRzLFxuICBCcmVha3BvaW50U3RhdGUsXG59IGZyb20gJ0Bhbmd1bGFyL2Nkay9sYXlvdXQnO1xuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTGF5b3V0Rm9vdGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vbGF5b3V0LWZvb3Rlci9sYXlvdXQtZm9vdGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBPbmVtUnZhUHJvZmlsZSB9IGZyb20gJy4uLy4uL21vZGVscy9vbmVtcnZhLXByb2ZpbGUubW9kZWwnO1xuaW1wb3J0IHsgTGF5b3V0TG9naW5NZW51Q29tcG9uZW50IH0gZnJvbSAnLi4vbGF5b3V0LWxvZ2luLW1lbnUvbGF5b3V0LWxvZ2luLW1lbnUuY29tcG9uZW50JztcbmltcG9ydCB7IE1hdERyYXdlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NpZGVuYXYnO1xuaW1wb3J0IHsgRHJhd2VySG9zdERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvZHJhd2VyLWhvc3QuZGlyZWN0aXZlJztcbmltcG9ydCB7IE9uZW1ydmFEcmF3ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZHJhd2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgTGF5b3V0U2lkZW5hdkNvbXBvbmVudCB9IGZyb20gJy4uL2xheW91dC1zaWRlbmF2L2xheW91dC1zaWRlbmF2LmNvbXBvbmVudCc7XG5pbXBvcnQge0xheW91dEFmdGVyTmF2Q29tcG9uZW50fSBmcm9tIFwiLi4vbGF5b3V0LWFmdGVyLW5hdi9sYXlvdXQtYWZ0ZXItbmF2LmNvbXBvbmVudFwiO1xuaW1wb3J0IHtPbmVtUnZhTGFuZ3VhZ2V9IGZyb20gXCIuLi8uLi9tb2RlbHMvb25lbS1sYW5ndWFnZS5tb2RlbFwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvbmVtcnZhLWxheW91dCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9sYXlvdXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9sYXlvdXQuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgTGF5b3V0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICBAQ29udGVudENoaWxkcmVuKExheW91dFJvdXRlQ29tcG9uZW50KVxuICByb3V0ZXM/OiBRdWVyeUxpc3Q8TGF5b3V0Um91dGVDb21wb25lbnQ+O1xuXG4gIEBDb250ZW50Q2hpbGQoTGF5b3V0VGl0bGVDb21wb25lbnQpIHRpdGxlPzogTGF5b3V0VGl0bGVDb21wb25lbnQ7XG4gIEBDb250ZW50Q2hpbGQoTGF5b3V0TG9naW5NZW51Q29tcG9uZW50KSBsb2dpbk1lbnU/OiBMYXlvdXRMb2dpbk1lbnVDb21wb25lbnQ7XG4gIEBDb250ZW50Q2hpbGQoTGF5b3V0Q29udGVudENvbXBvbmVudCkgY29udGVudD86IExheW91dENvbnRlbnRDb21wb25lbnQ7XG4gIEBDb250ZW50Q2hpbGQoTGF5b3V0QWZ0ZXJOYXZDb21wb25lbnQpIGFmdGVyTmF2PzogTGF5b3V0QWZ0ZXJOYXZDb21wb25lbnQ7XG5cbiAgQENvbnRlbnRDaGlsZChMYXlvdXRGb290ZXJDb21wb25lbnQpXG4gIGZvb3Rlcj86IExheW91dEZvb3RlckNvbXBvbmVudDtcblxuICBASW5wdXQoKVxuICBAQ29lcmNlQm9vbGVhbklucHV0KHRydWUpXG4gIGZsdWlkOiBhbnkgPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBsb2dvOiBzdHJpbmcgPSAnJzsgLy8gY3VzdG9tIGxvZ28sIGVtcHR5IHN0cmluZyB3aWxsIHNob3cgZGVmYXVsdCBvbmVtL3J2YS9uZW8vbGZhIGxvY2FsaXNlZCBsb2dvXG5cbiAgQElucHV0KClcbiAgbGFuZ3VhZ2VzOiBPbmVtUnZhTGFuZ3VhZ2VbXSA9IFtdOyAvLyBsaXN0IG9mIGxhbmd1YWdlc1xuXG4gIEBJbnB1dCgpXG4gIGVudmlyb25tZW50PzogRW52aXJvbm1lbnQ7IC8vIHBvc3NpYmxlIGVudmlyb25tZW50IHRvIHNob3cgb24gdGhlIGZyb250ZW5kIExPQ0FMLCBURVNULCBWQUwsIFBST0RcblxuICBASW5wdXQoKVxuICBsb2dvUmVkaWN0aW9uVXJsPzogc3RyaW5nIHwgYW55W10gfCBudWxsID0gJyc7IC8vIHZhbHVlIGZvciByb3V0ZXJMaW5rIGZyb20gbG9nby4gXCJcIiBieSBkZWZhdWx0LiBEZWFjdGl2YXRlZCB3aGVuIHNldCB0byBudWxsXG5cbiAgc2VsZWN0ZWRJbmRleCA9IDA7XG4gIGRlc3Ryb3lOb3RpZmllciQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xuXG4gIEBJbnB1dCgpXG4gIHByb2ZpbGU6IE9uZW1SdmFQcm9maWxlIHwgbnVsbCA9IG51bGw7IC8vIFRvIGJlIGRlZmluZWQgZm9yIGFwcGxpY2F0aW9uIHdpdGggYXV0aGVudGljYXRpb25cblxuICBAT3V0cHV0KClcbiAgbG9naW46IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBAT3V0cHV0KClcbiAgbG9nb3V0OiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIC8vICAgIGlzTG9nb3V0VXNlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGVudiA9IEVudmlyb25tZW50O1xuXG4gIGlzU21hbGwgPSB0cnVlO1xuXG4gIEBWaWV3Q2hpbGQoTWF0RHJhd2VyLCB7IHN0YXRpYzogdHJ1ZSB9KSBkcmF3ZXIhOiBNYXREcmF3ZXI7XG4gIEBWaWV3Q2hpbGQoRHJhd2VySG9zdERpcmVjdGl2ZSwgeyBzdGF0aWM6IHRydWUgfSlcbiAgZHJhd2VySG9zdCE6IERyYXdlckhvc3REaXJlY3RpdmU7XG5cbiAgQElucHV0KClcbiAgaWQ6IHN0cmluZyA9IFwibWFpblwiO1xuXG4gIEBJbnB1dCgpXG4gIHJvbGU6IHN0cmluZyA9IFwibWFpblwiO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHB1YmxpYyBicmVha3BvaW50T2JzZXJ2ZXI6IEJyZWFrcG9pbnRPYnNlcnZlcixcbiAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIGRvY3VtZW50OiBEb2N1bWVudCxcbiAgICBwdWJsaWMgZHJhd2VyU2VydmljZTogT25lbXJ2YURyYXdlclNlcnZpY2VcbiAgKSB7XG4gICAgLy8gICAgICB0aGlzLmlzTG9nb3V0VXNlZCA9IHRoaXMubG9nb3V0Lm9ic2VydmVycy5sZW5ndGggPiAwO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5zZWxlY3RlZEluZGV4ID0gdGhpcy5sYW5ndWFnZXMuZmluZEluZGV4KFxuICAgICAgKGwpID0+IGwuY29kZSA9PT0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmN1cnJlbnRMYW5nXG4gICAgKTtcblxuICAgIHRoaXMuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmxhbmcgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuY3VycmVudExhbmc7XG5cbiAgICB0aGlzLmJyZWFrcG9pbnRPYnNlcnZlclxuICAgICAgLm9ic2VydmUoW0JyZWFrcG9pbnRzLlhTbWFsbCwgQnJlYWtwb2ludHMuU21hbGxdKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveU5vdGlmaWVyJCkpXG4gICAgICAuc3Vic2NyaWJlKChzdGF0ZTogQnJlYWtwb2ludFN0YXRlKSA9PiB7XG4gICAgICAgIGlmIChzdGF0ZS5tYXRjaGVzKSB7XG4gICAgICAgICAgdGhpcy5pc1NtYWxsID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmRyYXdlclNlcnZpY2UuY2xvc2UoKTtcbiAgICAgICAgICB0aGlzLmlzU21hbGwgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICBpZiAodGhpcy5sb2dvID09PSAnJykge1xuICAgICAgdGhpcy5sb2dvID0gYC9hc3NldHMvbG9nb18ke3RoaXMudHJhbnNsYXRlU2VydmljZS5jdXJyZW50TGFuZ30uc3ZnYDtcbiAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5vbkxhbmdDaGFuZ2VcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveU5vdGlmaWVyJCkpXG4gICAgICAgIC5zdWJzY3JpYmUoKGxhbmcpID0+IHtcbiAgICAgICAgICB0aGlzLmxvZ28gPSBgL2Fzc2V0cy9sb2dvXyR7bGFuZy5sYW5nfS5zdmdgO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLm9uTGFuZ0NoYW5nZVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveU5vdGlmaWVyJCkpXG4gICAgICAuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICB0aGlzLnNlbGVjdGVkSW5kZXggPSB0aGlzLmxhbmd1YWdlcy5maW5kSW5kZXgoXG4gICAgICAgICAgKGxhbmcpID0+IGxhbmcuY29kZSA9PT0gZXZlbnQubGFuZ1xuICAgICAgICApO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLmRyYXdlclNlcnZpY2UuaG9zdCA9IHRoaXMuZHJhd2VySG9zdDtcbiAgICB0aGlzLmRyYXdlclNlcnZpY2UuZHJhd2VyID0gdGhpcy5kcmF3ZXI7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgaWYgKGlzRGV2TW9kZSgpKSB7XG4gICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3lOb3RpZmllciQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveU5vdGlmaWVyJC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgZG9Mb2dvdXQoKSB7XG4gICAgdGhpcy5sb2dvdXQubmV4dCgpO1xuICB9XG5cbiAgZG9Mb2dpbigpIHtcbiAgICB0aGlzLmxvZ2luLm5leHQoKTtcbiAgfVxuXG4gIGNoYW5nZUxhbmd1YWdlKGluZGV4OiBudW1iZXIpIHtcbiAgICBjb25zdCBsYW5ndWFnZSA9IHRoaXMubGFuZ3VhZ2VzW2luZGV4XTtcbiAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudXNlKGxhbmd1YWdlLmNvZGUpO1xuICAgIHRoaXMuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmxhbmcgPSBsYW5ndWFnZS5jb2RlO1xuICB9XG5cbiAgdG9nZ2xlU2lkZU5hdigpIHtcbiAgICB0aGlzLmRyYXdlckhvc3Qudmlld0NvbnRhaW5lclJlZi5jbGVhcigpO1xuICAgIGNvbnN0IGNvbXBvbmVudFJlZiA9IHRoaXMuZHJhd2VySG9zdC52aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudChcbiAgICAgIExheW91dFNpZGVuYXZDb21wb25lbnRcbiAgICApO1xuICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5pc1NtYWxsID0gdGhpcy5pc1NtYWxsO1xuICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5sYW5ndWFnZXMgPSB0aGlzLmxhbmd1YWdlcztcbiAgICBjb21wb25lbnRSZWYuaW5zdGFuY2Uucm91dGVzID0gdGhpcy5yb3V0ZXM7XG4gICAgdGhpcy5kcmF3ZXJTZXJ2aWNlLmhhc0JhY2tkcm9wID0gZmFsc2U7XG5cbiAgICB0aGlzLmRyYXdlci5vcGVuKCk7XG4gIH1cbn1cbiIsIjxtYXQtZHJhd2VyLWNvbnRhaW5lclxuICBjbGFzcz1cImV4YW1wbGUtY29udGFpbmVyXCJcbiAgW2hhc0JhY2tkcm9wXT1cImRyYXdlclNlcnZpY2UuaGFzQmFja2Ryb3BcIlxuICBhdXRvc2l6ZVxuPlxuICA8ZGl2IGNsYXNzPVwiYXBwLWNvbnRlbnRcIj5cbiAgICA8aGVhZGVyPlxuICAgIDxtYXQtdG9vbGJhciBjbGFzcz1cIm1hdC1lbGV2YXRpb24tejRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJlbnZpcm9ubWVudFwiIFtjbGFzc109XCJlbnZpcm9ubWVudFwiPlxuICAgICAgICB7eyBlbnZpcm9ubWVudCB9fVxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgIFtjbGFzcy5jb250YWluZXJdPVwiIWZsdWlkXCJcbiAgICAgICAgW2NsYXNzLmNvbnRhaW5lci1mbHVpZF09XCJmbHVpZFwiXG4gICAgICAgIGNsYXNzPVwibmF2LWNvbnRhaW5lciBmbGV4LWNlbnRlclwiXG4gICAgICA+XG4gICAgICAgIHt7IGxvZ29SZWRpY3Rpb25VcmwgfX1cbiAgICAgICAgPGltZ1xuICAgICAgICAgIGNsYXNzPVwibG9nb1wiXG4gICAgICAgICAgW3NyY109XCJsb2dvXCJcbiAgICAgICAgICBbYXR0ci5kYXRhLWN5XT1cIidvbmVtcnZhX2xvZ29fJyArIHRyYW5zbGF0ZVNlcnZpY2UuY3VycmVudExhbmdcIlxuICAgICAgICAgIGFsdD1cIkxvZ28gT05FTS9SVkFcIlxuICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cIlxuICAgICAgICAgICAgbG9nb1JlZGljdGlvblVybCAhPT0gbnVsbCA/IGxvZ29SZWRpY3Rpb25VcmwgOiB1bmRlZmluZWRcbiAgICAgICAgICBcIlxuICAgICAgICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgICAgIGN1cnNvcjogbG9nb1JlZGljdGlvblVybCAhPT0gbnVsbCA/ICdwb2ludGVyJyA6ICdkZWZhdWx0J1xuICAgICAgICAgIH1cIlxuICAgICAgICAvPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwbGljYXRpb24tdGl0bGVcIiBbbmdDbGFzc109XCJ7ICdzbWFsbC1zY3JlZW4nOiBpc1NtYWxsIH1cIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGl0bGU/LnRlbXBsYXRlIGFzIHRpdGxlVHBsXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGl0bGVUcGxcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBzdHlsZT1cImZsZXg6IDFcIj48L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtY2VudGVyXCJcbiAgICAgICAgICBtYXQtdGFiLW5hdi1iYXJcbiAgICAgICAgICBbdGFiUGFuZWxdPVwidGFiUGFuZWxcIlxuICAgICAgICAgICpuZ0lmPVwiIWlzU21hbGxcIlxuICAgICAgICA+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZSBvZiByb3V0ZXM/LnRvQXJyYXkoKTsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgbWF0LXRhYi1saW5rXG4gICAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cImUucm91dGVyTGlua1wiXG4gICAgICAgICAgICAgIFtyb3V0ZXJMaW5rQWN0aXZlT3B0aW9uc109XCJ7IGV4YWN0OiAhZS5oYXNTdWJyb3V0ZXMoKSB9XCJcbiAgICAgICAgICAgICAgI3JsYT1cInJvdXRlckxpbmtBY3RpdmVcIlxuICAgICAgICAgICAgICByb3V0ZXJMaW5rQWN0aXZlPVwibWRjLXRhYi0tYWN0aXZlXCJcbiAgICAgICAgICAgICAgW2FjdGl2ZV09XCJybGEuaXNBY3RpdmUgfHwgZS5pc1JvdXRlQWN0aXZlKClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZS50ZW1wbGF0ZSBhcyByb3V0ZVRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInJvdXRlVGVtcGxhdGVcIj4gPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9hPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8bWF0LXRhYi1uYXYtcGFuZWwgI3RhYlBhbmVsPjwvbWF0LXRhYi1uYXYtcGFuZWw+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFmdGVyTmF2Py50ZW1wbGF0ZSBhcyB0cGxcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidHBsXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxtYXQtZGl2aWRlclxuICAgICAgICAgIHZlcnRpY2FsXG4gICAgICAgICAgc3R5bGU9XCJoZWlnaHQ6IDFlbTsgYWxpZ24tc2VsZjogY2VudGVyXCJcbiAgICAgICAgICAqbmdJZj1cIiFpc1NtYWxsICYmIHJvdXRlcz8udG9BcnJheSgpPy5sZW5ndGhcIlxuICAgICAgICA+PC9tYXQtZGl2aWRlcj5cblxuICAgICAgICA8bWF0LXRhYi1ncm91cFxuICAgICAgICAgIGNsYXNzPVwibGFuZ3VhZ2UtdGFic1wiXG4gICAgICAgICAgW3NlbGVjdGVkSW5kZXhdPVwic2VsZWN0ZWRJbmRleFwiXG4gICAgICAgICAgKHNlbGVjdGVkSW5kZXhDaGFuZ2UpPVwiY2hhbmdlTGFuZ3VhZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgKm5nSWY9XCIhaXNTbWFsbFwiXG4gICAgICAgID5cbiAgICAgICAgICA8bWF0LXRhYiAqbmdGb3I9XCJsZXQgbGFuZyBvZiBsYW5ndWFnZXNcIj5cbiAgICAgICAgICAgIDxkaXYgKm1hdFRhYkxhYmVsIFthdHRyLmRhdGEtY3ldPVwiJ2xhbmd1YWdlXycgKyBsYW5nLmNvZGVcIj5cbiAgICAgICAgICAgICAge3sgbGFuZy5sYWJlbCB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9tYXQtdGFiPlxuICAgICAgICA8L21hdC10YWItZ3JvdXA+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInByb2ZpbGUgIT09IG51bGxcIj5cbiAgICAgICAgICA8bWF0LWRpdmlkZXJcbiAgICAgICAgICAgIHZlcnRpY2FsXG4gICAgICAgICAgICBzdHlsZT1cImhlaWdodDogMWVtOyBhbGlnbi1zZWxmOiBjZW50ZXJcIlxuICAgICAgICAgICAgKm5nSWY9XCIhaXNTbWFsbFwiXG4gICAgICAgICAgPjwvbWF0LWRpdmlkZXI+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgZGlzYWJsZVJpcHBsZVxuICAgICAgICAgICAgZGF0YS1jeT1cImFjY291bnRNZW51XCJcbiAgICAgICAgICAgIGNsYXNzPVwiYWNjb3VudC1idXR0b25cIlxuICAgICAgICAgICAgW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVcIlxuICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICBhdHRyLmFyaWEtbGFiZWw9XCJ7eyAnbGF5b3V0LnByb2ZpbGUnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCIhcHJvZmlsZS5pc0xvZ2dlZEluXCIgY2xhc3M9XCJsYXJnZVwiXG4gICAgICAgICAgICAgID5hY2NvdW50X2NpcmNsZTwvbWF0LWljb25cbiAgICAgICAgICAgID5cblxuICAgICAgICAgICAgPG9uZW1ydmEtbWF0LWF2YXRhclxuICAgICAgICAgICAgICAqbmdJZj1cInByb2ZpbGUuaXNMb2dnZWRJblwiXG4gICAgICAgICAgICAgIGluaXRpYWxzPVwie3sgcHJvZmlsZS5pbml0aWFscygpIH19XCJcbiAgICAgICAgICAgICAgY29sb3I9XCJhY2NlbnRcIlxuICAgICAgICAgICAgICBzaXplPVwiZXh0cmFzbWFsbFwiXG4gICAgICAgICAgICA+PC9vbmVtcnZhLW1hdC1hdmF0YXI+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPG1hdC1tZW51ICNtZW51PVwibWF0TWVudVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInByb2ZpbGUuaXNMb2dnZWRJbjsgZWxzZSBub3RDb25uZWN0ZWRcIj5cbiAgICAgICAgICAgICAgPHAgY2xhc3M9XCJhY2NvdW50TmFtZVwiPlxuICAgICAgICAgICAgICAgIHt7IHByb2ZpbGUuZmlyc3ROYW1lIH19IHt7IHByb2ZpbGUubGFzdE5hbWUgfX1cbiAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8bWF0LWRpdmlkZXIgc3R5bGU9XCJhbGlnbi1zZWxmOiBzdHJldGNoXCI+PC9tYXQtZGl2aWRlcj5cblxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibG9naW5NZW51Py50ZW1wbGF0ZSBhcyBtZW51TG9naW5UcGxcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibWVudUxvZ2luVHBsXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm1hdC1tZGMtbWVudS1pdGVtXCJcbiAgICAgICAgICAgICAgICBtYXQtbWVudS1pdGVtTXJ6YXBvaWVcbiAgICAgICAgICAgICAgICBkYXRhLWN5PVwibG9nb3V0QnV0dG9uXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZG9Mb2dvdXQoKVwiXG4gICAgICAgICAgICAgICAgYXR0ci5hcmlhLWxhYmVsPVwie3sgJ2xheW91dC5sb2dvdXQnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5sb2dvdXQ8L21hdC1pY29uPnt7IFwibGF5b3V0LmxvZ291dFwiIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI25vdENvbm5lY3RlZD5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIG1hdC1tZW51LWl0ZW1cbiAgICAgICAgICAgICAgICBkYXRhLWN5PVwibG9naW5CdXR0b25cIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJkb0xvZ2luKClcIlxuICAgICAgICAgICAgICAgIGF0dHIuYXJpYS1sYWJlbD1cInt7ICdsYXlvdXQubG9naW4nIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5sb2dpbjwvbWF0LWljb24+e3sgXCJsYXlvdXQubG9naW5cIiB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9tYXQtbWVudT5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgaXNTbWFsbCAmJlxuICAgICAgICAgICAgKHJvdXRlcz8udG9BcnJheSgpPy5sZW5ndGggfHwgKGxhbmd1YWdlcyAmJiBsYW5ndWFnZXMubGVuZ3RoID4gMSkpXG4gICAgICAgICAgXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICBjbGFzcz1cIm1lbnUtYnV0dG9uXCJcbiAgICAgICAgICAgIGRhdGEtY3k9XCJzbWFsbERldmljZU1lbnVcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVNpZGVOYXYoKVwiXG4gICAgICAgICAgICBhdHRyLmFyaWEtbGFiZWw9XCJ7eyAnbGF5b3V0Lm1lbnUnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8bWF0LWljb24+bWVudTwvbWF0LWljb24+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9tYXQtdG9vbGJhcj5cbiAgICA8L2hlYWRlcj5cbiAgICA8bmctY29udGFpbmVyPlxuICAgICAgPGRpdiBbaWRdPVwiaWRcIiBbYXR0ci5yb2xlXT1cInJvbGVcIiBjbGFzcz1cIm9uZW1ydmEtbGF5b3V0LWNvbnRlbnRcIiAqbmdJZj1cImNvbnRlbnQ/LnRlbXBsYXRlIGFzIHRwbFwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidHBsXCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGZvb3RlciBjbGFzcz1cIm9uZW1ydmEtZm9vdGVyXCIgKm5nSWY9XCJmb290ZXI/LnRlbXBsYXRlIGFzIGZvb3RlclwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZm9vdGVyXCI+PC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgIGVudmlyb25tZW50ICYmIChlbnZpcm9ubWVudCA9PT0gZW52LkxPQ0FMIHx8IGVudmlyb25tZW50ID09PSBlbnYuVEVTVClcbiAgICAgIFwiXG4gICAgICAgID5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBpZD1cImFjY2Vzc2liaWxpdHlfZmFiXCJcbiAgICAgICAgICAgIG1hdC1mYWJcbiAgICAgICAgICAgIGNvbG9yPVwiYWNjZW50XCJcbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJBY2Nlc3NpYmlsaXR5IGNoZWNrXCJcbiAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJBY2Nlc3NpYmlsaXR5IGNoZWNrXCJcbiAgICAgICAgICAgIG9uY2xpY2s9XCJqYXZhc2NyaXB0OihmdW5jdGlvbigpIHt2YXIgX3A9Jy8vb3BlbmZlZC5naXRodWIuaW8vQWNjZXNzaWJpbGl0eUNoZWNrL2J1aWxkLyc7dmFyIF9pPWZ1bmN0aW9uKHMsY2IpIHt2YXIgc2M9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7c2Mub25sb2FkID0gZnVuY3Rpb24oKSB7c2Mub25sb2FkID0gbnVsbDtzYy5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBudWxsO2NiLmNhbGwodGhpcyk7fTtzYy5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpe2lmKC9eKGNvbXBsZXRlfGxvYWRlZCkkLy50ZXN0KHRoaXMucmVhZHlTdGF0ZSkgPT09IHRydWUpe3NjLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IG51bGw7c2Mub25sb2FkKCk7fX07c2Muc3JjPXM7aWYgKGRvY3VtZW50LmhlYWQpIHtkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHNjKTt9IGVsc2Uge2RvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF0uYXBwZW5kQ2hpbGQoc2MpO319OyB2YXIgb3B0aW9ucz17cGF0aDpfcH07X2koX3ArJ0hUTUxDUy5qcycsZnVuY3Rpb24oKXtIVE1MQ1NBdWRpdG9yLnJ1bignV0NBRzJBQScsbnVsbCxvcHRpb25zKTt9KTt9KSgpO1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPG1hdC1pY29uPmFjY2Vzc2liaWxpdHk8L21hdC1pY29uPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZm9vdGVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cblxuICA8bWF0LWRyYXdlclxuICAgIGNsYXNzPVwib25lbXJ2YS1kcmF3ZXIgbW9iaWxlLW1lbnUtc2lkZWJhclwiXG4gICAgbW9kZT1cIm92ZXJcIlxuICAgIHBvc2l0aW9uPVwiZW5kXCJcbiAgPlxuICAgIDxuZy10ZW1wbGF0ZSBkcmF3ZXJob3N0PjwvbmctdGVtcGxhdGU+XG4gIDwvbWF0LWRyYXdlcj5cbjwvbWF0LWRyYXdlci1jb250YWluZXI+XG4iXX0=
|
|
@@ -105,7 +105,7 @@ export class OnemrvaMatFileUploadComponent {
|
|
|
105
105
|
}, 400);
|
|
106
106
|
}
|
|
107
107
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: OnemrvaMatFileUploadComponent, deps: [{ token: i1.MatDialog }, { token: i2.OnemrvaMatFileUploadStore }], target: i0.ɵɵFactoryTarget.Component });
|
|
108
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: OnemrvaMatFileUploadComponent, selector: "onemrva-mat-file-upload", inputs: { accept: "accept", maxFileSize: "maxFileSize", uploadOnDrop: "uploadOnDrop", initialFiles: "initialFiles", errorMessage: "errorMessage", filePanelTemplate: "filePanelTemplate", dataCy: "dataCy" }, host: { properties: { "attr.data-cy": "this.dataCy" } }, viewQueries: [{ propertyName: "fileDropRef", first: true, predicate: ["fileDropRef"], descendants: true }], ngImport: i0, template: "<ng-container *ngIf=\"files$ | async as files\">\n <div\n class=\"onemrva-mat-file-upload-drop-area\"\n appDnd\n [ngClass]=\"{ filein: files.length > 0 }\"\n (fileDropped)=\"onFileDropped($event)\"\n [ngClass]=\"{ 'fu-error': errorMessage !== '' }\"\n >\n <input\n type=\"file\"\n #fileDropRef\n [attr.id]=\"inputId\"\n role=\"button\"\n multiple\n (change)=\"fileBrowseHandler($event)\"\n accept=\"{{ acceptString }}\"\n />\n <p class=\"outer\">\n <span class=\"inner\"\n ><mat-icon class=\"onemrva-upload\">download</mat-icon></span\n >\n <span class=\"inner\">{{ \"file.upload.drag.and.drop\" | translate }}</span>\n <span class=\"inner\"\n >{{ \"file.upload.or\" | translate }}\n <label for=\"{{ inputId }}\"
|
|
108
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: OnemrvaMatFileUploadComponent, selector: "onemrva-mat-file-upload", inputs: { accept: "accept", maxFileSize: "maxFileSize", uploadOnDrop: "uploadOnDrop", initialFiles: "initialFiles", errorMessage: "errorMessage", filePanelTemplate: "filePanelTemplate", dataCy: "dataCy" }, host: { properties: { "attr.data-cy": "this.dataCy" } }, viewQueries: [{ propertyName: "fileDropRef", first: true, predicate: ["fileDropRef"], descendants: true }], ngImport: i0, template: "<ng-container *ngIf=\"files$ | async as files\">\n <div\n class=\"onemrva-mat-file-upload-drop-area\"\n appDnd\n [ngClass]=\"{ filein: files.length > 0 }\"\n (fileDropped)=\"onFileDropped($event)\"\n [ngClass]=\"{ 'fu-error': errorMessage !== '' }\"\n >\n <input\n type=\"file\"\n #fileDropRef\n [attr.id]=\"inputId\"\n role=\"button\"\n multiple\n (change)=\"fileBrowseHandler($event)\"\n accept=\"{{ acceptString }}\"\n />\n <p class=\"outer\">\n <span class=\"inner\"\n ><mat-icon class=\"onemrva-upload\">download</mat-icon></span\n >\n <span class=\"inner\">{{ \"file.upload.drag.and.drop\" | translate }}</span>\n <span class=\"inner\"\n >{{ \"file.upload.or\" | translate }}\n <label for=\"{{ inputId }}\" class=\"content\">{{\n \"file.upload.browse.for.file\" | translate\n }}</label></span\n >\n <span class=\"inner\" aria-disabled=\"true\"\n ><span *ngIf=\"maxFileSize > 0\"\n >{{ \"file.upload.maximum\" | translate }} {{ maxFileSizeFormatted }}\n <span *ngIf=\"acceptString.length > 0\">{{ \"| \" }}</span>\n {{ acceptString }}</span\n ></span\n >\n </p>\n <ul class=\"files-list\">\n <li *ngFor=\"let file of files\">\n <ng-container\n *ngTemplateOutlet=\"\n filePanelTemplate;\n context: { file, $implicit: file }\n \"\n ></ng-container>\n </li>\n </ul>\n </div>\n <mat-error *ngIf=\"errorMessage\">{{ errorMessage | translate }}</mat-error>\n <mat-error\n *ngIf=\"fileUploadErrorMessage$ | async as fileUploadErrorMessage\"\n >{{ fileUploadErrorMessage | translate }}</mat-error\n >\n</ng-container>\n", dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i5.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i6.DndDirective, selector: "[appDnd]", outputs: ["fileDropped"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }], animations: [
|
|
109
109
|
trigger('inOutAnimation', [
|
|
110
110
|
state('in', style({ opacity: 1 })),
|
|
111
111
|
transition(':enter', [
|
|
@@ -153,7 +153,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImpor
|
|
|
153
153
|
])),
|
|
154
154
|
]),
|
|
155
155
|
]),
|
|
156
|
-
], template: "<ng-container *ngIf=\"files$ | async as files\">\n <div\n class=\"onemrva-mat-file-upload-drop-area\"\n appDnd\n [ngClass]=\"{ filein: files.length > 0 }\"\n (fileDropped)=\"onFileDropped($event)\"\n [ngClass]=\"{ 'fu-error': errorMessage !== '' }\"\n >\n <input\n type=\"file\"\n #fileDropRef\n [attr.id]=\"inputId\"\n role=\"button\"\n multiple\n (change)=\"fileBrowseHandler($event)\"\n accept=\"{{ acceptString }}\"\n />\n <p class=\"outer\">\n <span class=\"inner\"\n ><mat-icon class=\"onemrva-upload\">download</mat-icon></span\n >\n <span class=\"inner\">{{ \"file.upload.drag.and.drop\" | translate }}</span>\n <span class=\"inner\"\n >{{ \"file.upload.or\" | translate }}\n <label for=\"{{ inputId }}\"
|
|
156
|
+
], template: "<ng-container *ngIf=\"files$ | async as files\">\n <div\n class=\"onemrva-mat-file-upload-drop-area\"\n appDnd\n [ngClass]=\"{ filein: files.length > 0 }\"\n (fileDropped)=\"onFileDropped($event)\"\n [ngClass]=\"{ 'fu-error': errorMessage !== '' }\"\n >\n <input\n type=\"file\"\n #fileDropRef\n [attr.id]=\"inputId\"\n role=\"button\"\n multiple\n (change)=\"fileBrowseHandler($event)\"\n accept=\"{{ acceptString }}\"\n />\n <p class=\"outer\">\n <span class=\"inner\"\n ><mat-icon class=\"onemrva-upload\">download</mat-icon></span\n >\n <span class=\"inner\">{{ \"file.upload.drag.and.drop\" | translate }}</span>\n <span class=\"inner\"\n >{{ \"file.upload.or\" | translate }}\n <label for=\"{{ inputId }}\" class=\"content\">{{\n \"file.upload.browse.for.file\" | translate\n }}</label></span\n >\n <span class=\"inner\" aria-disabled=\"true\"\n ><span *ngIf=\"maxFileSize > 0\"\n >{{ \"file.upload.maximum\" | translate }} {{ maxFileSizeFormatted }}\n <span *ngIf=\"acceptString.length > 0\">{{ \"| \" }}</span>\n {{ acceptString }}</span\n ></span\n >\n </p>\n <ul class=\"files-list\">\n <li *ngFor=\"let file of files\">\n <ng-container\n *ngTemplateOutlet=\"\n filePanelTemplate;\n context: { file, $implicit: file }\n \"\n ></ng-container>\n </li>\n </ul>\n </div>\n <mat-error *ngIf=\"errorMessage\">{{ errorMessage | translate }}</mat-error>\n <mat-error\n *ngIf=\"fileUploadErrorMessage$ | async as fileUploadErrorMessage\"\n >{{ fileUploadErrorMessage | translate }}</mat-error\n >\n</ng-container>\n" }]
|
|
157
157
|
}], ctorParameters: () => [{ type: i1.MatDialog }, { type: i2.OnemrvaMatFileUploadStore }], propDecorators: { accept: [{
|
|
158
158
|
type: Input
|
|
159
159
|
}], maxFileSize: [{
|
|
@@ -175,4 +175,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImpor
|
|
|
175
175
|
type: ViewChild,
|
|
176
176
|
args: [`fileDropRef`]
|
|
177
177
|
}] } });
|
|
178
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib25lbXJ2YS1tYXQtZmlsZS11cGxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb25lbXJ2YS9kZXNpZ24tc3lzdGVtL21hdC1maWxlLXVwbG9hZC9zcmMvY29tcG9uZW50cy9vbmVtcnZhLW1hdC1maWxlLXVwbG9hZC9vbmVtcnZhLW1hdC1maWxlLXVwbG9hZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbmVtcnZhL2Rlc2lnbi1zeXN0ZW0vbWF0LWZpbGUtdXBsb2FkL3NyYy9jb21wb25lbnRzL29uZW1ydmEtbWF0LWZpbGUtdXBsb2FkL29uZW1ydmEtbWF0LWZpbGUtdXBsb2FkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBR0wsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDekMsT0FBTyxFQUNMLEtBQUssRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE9BQU8sRUFDUCxPQUFPLEVBQ1AsVUFBVSxHQUNYLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUNMLFdBQVcsR0FHWixNQUFNLGtDQUFrQyxDQUFDOzs7Ozs7Ozs7QUFHMUMsSUFBSSxPQUFPLEdBQUcsQ0FBQyxDQUFDO0FBbUNoQixNQUFNLE9BQU8sNkJBQTZCO0lBNEMvQjtJQUNDO0lBM0NWLE1BQU0sR0FBa0IsRUFBRSxDQUFDO0lBQzNCLFlBQVksR0FBRyxFQUFFLENBQUM7SUFHbEIsV0FBVyxHQUFXLENBQUMsQ0FBQztJQUd4QixZQUFZLEdBQVksSUFBSSxDQUFDO0lBRzdCLFlBQVksR0FBbUIsRUFBRSxDQUFDO0lBR2xDLFlBQVksR0FBVyxFQUFFLENBQUM7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S0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUM7aUNBQ2pDLENBQUMsQ0FDSDs2QkFDRixDQUFDOzRCQUNGLFVBQVUsQ0FBQyxRQUFRLEVBQUU7Z0NBQ25CLE9BQU8sQ0FDTCxHQUFHLEVBQ0gsU0FBUyxDQUFDO29DQUNSLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDO29DQUNoQyxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQztvQ0FDdEMsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUM7b0NBQ3BDLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDO29DQUN0QyxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQztpQ0FDakMsQ0FBQyxDQUNIOzZCQUNGLENBQUM7eUJBQ0gsQ0FBQztxQkFDSDtzSEFJRCxNQUFNO3NCQURMLEtBQUs7Z0JBS04sV0FBVztzQkFEVixLQUFLO2dCQUlOLFlBQVk7c0JBRFgsS0FBSztnQkFJTixZQUFZO3NCQURYLEtBQUs7Z0JBSU4sWUFBWTtzQkFEWCxLQUFLO2dCQU9HLGlCQUFpQjtzQkFBekIsS0FBSztnQkFjQyxNQUFNO3NCQUZaLFdBQVc7dUJBQUMsY0FBYzs7c0JBQzFCLEtBQUs7Z0JBSU4sV0FBVztzQkFEVixTQUFTO3VCQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1pbWVUeXBlcyB9IGZyb20gJ21pbWUtd3JhcHBlcic7XG5pbXBvcnQge1xuICBzdGF0ZSxcbiAga2V5ZnJhbWVzLFxuICBzdHlsZSxcbiAgYW5pbWF0ZSxcbiAgdHJpZ2dlcixcbiAgdHJhbnNpdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQge1xuICBmb3JtYXRCeXRlcyxcbiAgUHJvZ3Jlc3NGaWxlLFxuICBSZWZlcmVuY2VkUHJvZ3Jlc3NGaWxlLFxufSBmcm9tICcuLi8uLi9tb2RlbHMvcHJvZ3Jlc3MtZmlsZS5tb2RlbCc7XG5pbXBvcnQgeyBPbmVtcnZhTWF0RmlsZVVwbG9hZFN0b3JlIH0gZnJvbSAnLi4vLi4vb25lbXJ2YS1tYXQtZmlsZS11cGxvYWQuc3RvcmUnO1xuXG5sZXQgTkVYVF9JRCA9IDA7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ29uZW1ydmEtbWF0LWZpbGUtdXBsb2FkJyxcbiAgdGVtcGxhdGVVcmw6ICdvbmVtcnZhLW1hdC1maWxlLXVwbG9hZC5jb21wb25lbnQuaHRtbCcsXG4gIGFuaW1hdGlvbnM6IFtcbiAgICB0cmlnZ2VyKCdpbk91dEFuaW1hdGlvbicsIFtcbiAgICAgIHN0YXRlKCdpbicsIHN0eWxlKHsgb3BhY2l0eTogMSB9KSksXG4gICAgICB0cmFuc2l0aW9uKCc6ZW50ZXInLCBbXG4gICAgICAgIGFuaW1hdGUoXG4gICAgICAgICAgMzAwLFxuICAgICAgICAgIGtleWZyYW1lcyhbXG4gICAgICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDAsIG9mZnNldDogMCB9KSxcbiAgICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMC4yNSwgb2Zmc2V0OiAwLjI1IH0pLFxuICAgICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAwLjUsIG9mZnNldDogMC41IH0pLFxuICAgICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAwLjc1LCBvZmZzZXQ6IDAuNzUgfSksXG4gICAgICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDEsIG9mZnNldDogMSB9KSxcbiAgICAgICAgICBdKVxuICAgICAgICApLFxuICAgICAgXSksXG4gICAgICB0cmFuc2l0aW9uKCc6bGVhdmUnLCBbXG4gICAgICAgIGFuaW1hdGUoXG4gICAgICAgICAgMzAwLFxuICAgICAgICAgIGtleWZyYW1lcyhbXG4gICAgICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDEsIG9mZnNldDogMCB9KSxcbiAgICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMC43NSwgb2Zmc2V0OiAwLjI1IH0pLFxuICAgICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAwLjUsIG9mZnNldDogMC41IH0pLFxuICAgICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAwLjI1LCBvZmZzZXQ6IDAuNzUgfSksXG4gICAgICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDAsIG9mZnNldDogMSB9KSxcbiAgICAgICAgICBdKVxuICAgICAgICApLFxuICAgICAgXSksXG4gICAgXSksXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIE9uZW1ydmFNYXRGaWxlVXBsb2FkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KClcbiAgYWNjZXB0OiBBcnJheTxzdHJpbmc+ID0gW107XG4gIGFjY2VwdFN0cmluZyA9ICcnO1xuXG4gIEBJbnB1dCgpXG4gIG1heEZpbGVTaXplOiBudW1iZXIgPSAwO1xuXG4gIEBJbnB1dCgpXG4gIHVwbG9hZE9uRHJvcDogYm9vbGVhbiA9IHRydWU7XG5cbiAgQElucHV0KClcbiAgaW5pdGlhbEZpbGVzOiBQcm9ncmVzc0ZpbGVbXSA9IFtdO1xuXG4gIEBJbnB1dCgpXG4gIGVycm9yTWVzc2FnZTogc3RyaW5nID0gJyc7XG5cbiAgZmlsZVVwbG9hZEVycm9yTWVzc2FnZSQ6IE9ic2VydmFibGU8c3RyaW5nPjtcblxuICBmaWxlcyQ6IE9ic2VydmFibGU8UmVmZXJlbmNlZFByb2dyZXNzRmlsZVtdPjtcblxuICBASW5wdXQoKSBmaWxlUGFuZWxUZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgcmV0cnlGaWxlID0gbmV3IEV2ZW50RW1pdHRlcjx7IGluZGV4OiBudW1iZXI7IGNtcFJlZjogc3ltYm9sIH0+KCk7XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGBkYXRhLWN5YCBvZiB0aGUgZWxlbWVudC4gSWYgbm90IHNldCwgdGhlIGZpcnN0IGNvbXBvbmVudCBpbnN0YW5jZSB3aWxsIGhhdmUgYGRhdGEtY3lgID0gYFwib25lbXJ2YS1tYXQtbXVsdGktc2VsZWN0LTBcImAuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYGh0bWxcbiAgICogPG9uZW1ydmEtbWF0LW11bHRpLXNlbGVjdCBpZD1cIm15LWZpcnN0LW11bHRpLXNlbGVjdFwiPjwvb25lbXJ2YS1tYXQtbXVsdGktc2VsZWN0PlxuICAgKiBgYGBcbiAgICovXG4gIEBIb3N0QmluZGluZygnYXR0ci5kYXRhLWN5JylcbiAgQElucHV0KClcbiAgcHVibGljIGRhdGFDeSA9IGBvbmVtcnZhLW1hdC1tdWx0aS1zZWxlY3QtJHtORVhUX0lEKyt9YDtcblxuICBAVmlld0NoaWxkKGBmaWxlRHJvcFJlZmApXG4gIGZpbGVEcm9wUmVmITogRWxlbWVudFJlZjtcblxuICBpbnB1dElkID0gYGZpbGVEcm9wUmVmLSR7TkVYVF9JRH1gO1xuICBtYXhGaWxlU2l6ZUZvcm1hdHRlZDogc3RyaW5nID0gJyc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGRpYWxvZzogTWF0RGlhbG9nLFxuICAgIHByaXZhdGUgZmlsZVVwbG9hZFN0b3JlOiBPbmVtcnZhTWF0RmlsZVVwbG9hZFN0b3JlXG4gICkge1xuICAgIHRoaXMuZmlsZXMkID0gZmlsZVVwbG9hZFN0b3JlLmZpbGVzJDtcblxuICAgIHRoaXMuZmlsZVVwbG9hZEVycm9yTWVzc2FnZSQgPSB0aGlzLmZpbGVVcGxvYWRTdG9yZS5maWxlVXBsb2FkRXJyb3IkO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYWNjZXB0Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuYWNjZXB0U3RyaW5nID0gdGhpcy5hY2NlcHRcbiAgICAgICAgLm1hcCgodmFsKSA9PiB7XG4gICAgICAgICAgY29uc3QgdCA9IG1pbWVUeXBlcy5nZXRFeHRlbnNpb24odmFsKTtcbiAgICAgICAgICByZXR1cm4gYC4ke3R9YDtcbiAgICAgICAgfSlcbiAgICAgICAgLmZpbHRlcigodmFsKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHZhbC5sZW5ndGggPiAxO1xuICAgICAgICB9KVxuICAgICAgICAuam9pbignLCAnKTtcblxuICAgICAgdGhpcy5maWxlVXBsb2FkU3RvcmUuc2V0QWNjZXB0KHRoaXMuYWNjZXB0KTtcbiAgICB9XG5cbiAgICB0aGlzLm1heEZpbGVTaXplRm9ybWF0dGVkID0gZm9ybWF0Qnl0ZXModGhpcy5tYXhGaWxlU2l6ZSk7XG4gICAgdGhpcy5maWxlVXBsb2FkU3RvcmUuc2V0TWF4RmlsZVNpemUodGhpcy5tYXhGaWxlU2l6ZSk7XG4gIH1cblxuICAvKipcbiAgICogb24gZmlsZSBkcm9wIGhhbmRsZXJcbiAgICovXG4gIG9uRmlsZURyb3BwZWQoJGV2ZW50OiBGaWxlTGlzdCkge1xuICAgIHRoaXMucHJlcGFyZUZpbGVzTGlzdCgkZXZlbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIGhhbmRsZSBmaWxlIGZyb20gYnJvd3NpbmdcbiAgICovXG4gIGZpbGVCcm93c2VIYW5kbGVyKCRldmVudDogRXZlbnQpIHtcbiAgICBsZXQgZWxtID0gJGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50LFxuICAgICAgZmlsZXMgPSBlbG0uZmlsZXMgYXMgRmlsZUxpc3Q7XG5cbiAgICB0aGlzLnByZXBhcmVGaWxlc0xpc3QoZmlsZXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgRmlsZXMgbGlzdCB0byBub3JtYWwgYXJyYXkgbGlzdFxuICAgKiBAcGFyYW0gZmlsZXMgKEZpbGVzIExpc3QpXG4gICAqL1xuICBwcmVwYXJlRmlsZXNMaXN0KGZpbGVzOiBGaWxlTGlzdCkge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgY29uc3QgZnM6IFByb2dyZXNzRmlsZVtdID0gW107XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZpbGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGxldCBmaWxlID0gZmlsZXMuaXRlbShpKTtcbiAgICAgICAgaWYgKGZpbGUgPT09IG51bGwpIGNvbnRpbnVlO1xuXG4gICAgICAgIGxldCBpdGVtOiBQcm9ncmVzc0ZpbGUgPSB7XG4gICAgICAgICAgZmlsZSxcbiAgICAgICAgICBwcm9ncmVzczogMCxcbiAgICAgICAgICBtZXNzYWdlOiAnJyxcbiAgICAgICAgICBjb2xvcjogJ3ByaW1hcnknLFxuICAgICAgICAgIHVybDogbnVsbCxcbiAgICAgICAgICBpZDogbnVsbCxcbiAgICAgICAgICBlbmFibGVQcm9ncmVzc0JhcjogdGhpcy51cGxvYWRPbkRyb3AsXG5cbiAgICAgICAgICBuYW1lOiBmaWxlIS5uYW1lLFxuICAgICAgICAgIGxhc3RNb2RpZmllZDogZmlsZSEubGFzdE1vZGlmaWVkLFxuICAgICAgICAgIHNpemU6IGZpbGUhLnNpemUsXG4gICAgICAgICAgdHlwZTogZmlsZSEudHlwZSxcbiAgICAgICAgfTtcblxuICAgICAgICBmcy5wdXNoKGl0ZW0pO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy51cGxvYWRPbkRyb3ApIHRoaXMuZmlsZVVwbG9hZFN0b3JlLnVwbG9hZEZpbGVzKGZzKTtcbiAgICAgIGVsc2UgdGhpcy5maWxlVXBsb2FkU3RvcmUuYWRkU2V2ZXJhbEZvclBvdGVudGlhbFVwbG9hZChmcyk7XG5cbiAgICAgIHRoaXMuZmlsZURyb3BSZWYubmF0aXZlRWxlbWVudC52YWx1ZSA9IG51bGw7XG4gICAgfSwgNDAwKTtcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpbGVzJCB8IGFzeW5jIGFzIGZpbGVzXCI+XG4gIDxkaXZcbiAgICBjbGFzcz1cIm9uZW1ydmEtbWF0LWZpbGUtdXBsb2FkLWRyb3AtYXJlYVwiXG4gICAgYXBwRG5kXG4gICAgW25nQ2xhc3NdPVwieyBmaWxlaW46IGZpbGVzLmxlbmd0aCA+IDAgfVwiXG4gICAgKGZpbGVEcm9wcGVkKT1cIm9uRmlsZURyb3BwZWQoJGV2ZW50KVwiXG4gICAgW25nQ2xhc3NdPVwieyAnZnUtZXJyb3InOiBlcnJvck1lc3NhZ2UgIT09ICcnIH1cIlxuICA+XG4gICAgPGlucHV0XG4gICAgICB0eXBlPVwiZmlsZVwiXG4gICAgICAjZmlsZURyb3BSZWZcbiAgICAgIFthdHRyLmlkXT1cImlucHV0SWRcIlxuICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICBtdWx0aXBsZVxuICAgICAgKGNoYW5nZSk9XCJmaWxlQnJvd3NlSGFuZGxlcigkZXZlbnQpXCJcbiAgICAgIGFjY2VwdD1cInt7IGFjY2VwdFN0cmluZyB9fVwiXG4gICAgLz5cbiAgICA8cCBjbGFzcz1cIm91dGVyXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cImlubmVyXCJcbiAgICAgICAgPjxtYXQtaWNvbiBjbGFzcz1cIm9uZW1ydmEtdXBsb2FkXCI+ZG93bmxvYWQ8L21hdC1pY29uPjwvc3BhblxuICAgICAgPlxuICAgICAgPHNwYW4gY2xhc3M9XCJpbm5lclwiPnt7IFwiZmlsZS51cGxvYWQuZHJhZy5hbmQuZHJvcFwiIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3M9XCJpbm5lclwiXG4gICAgICAgID57eyBcImZpbGUudXBsb2FkLm9yXCIgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPGxhYmVsIGZvcj1cInt7IGlucHV0SWQgfX1cIiByb2xlPVwiYnV0dG9uXCIgY2xhc3M9XCJjb250ZW50XCI+e3tcbiAgICAgICAgICBcImZpbGUudXBsb2FkLmJyb3dzZS5mb3IuZmlsZVwiIHwgdHJhbnNsYXRlXG4gICAgICAgIH19PC9sYWJlbD48L3NwYW5cbiAgICAgID5cbiAgICAgIDxzcGFuIGNsYXNzPVwiaW5uZXJcIlxuICAgICAgICA+PHNwYW4gKm5nSWY9XCJtYXhGaWxlU2l6ZSA+IDBcIlxuICAgICAgICAgID57eyBcImZpbGUudXBsb2FkLm1heGltdW1cIiB8IHRyYW5zbGF0ZSB9fSB7eyBtYXhGaWxlU2l6ZUZvcm1hdHRlZCB9fVxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwiYWNjZXB0U3RyaW5nLmxlbmd0aCA+IDBcIj57eyBcInwgXCIgfX08L3NwYW4+XG4gICAgICAgICAge3sgYWNjZXB0U3RyaW5nIH19PC9zcGFuXG4gICAgICAgID48L3NwYW5cbiAgICAgID5cbiAgICA8L3A+XG4gICAgPHVsIGNsYXNzPVwiZmlsZXMtbGlzdFwiPlxuICAgICAgPGxpICpuZ0Zvcj1cImxldCBmaWxlIG9mIGZpbGVzXCI+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgZmlsZVBhbmVsVGVtcGxhdGU7XG4gICAgICAgICAgICBjb250ZXh0OiB7IGZpbGUsICRpbXBsaWNpdDogZmlsZSB9XG4gICAgICAgICAgXCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICA8L2Rpdj5cbiAgPG1hdC1lcnJvciAqbmdJZj1cImVycm9yTWVzc2FnZVwiPnt7IGVycm9yTWVzc2FnZSB8IHRyYW5zbGF0ZSB9fTwvbWF0LWVycm9yPlxuICA8bWF0LWVycm9yXG4gICAgKm5nSWY9XCJmaWxlVXBsb2FkRXJyb3JNZXNzYWdlJCB8IGFzeW5jIGFzIGZpbGVVcGxvYWRFcnJvck1lc3NhZ2VcIlxuICAgID57eyBmaWxlVXBsb2FkRXJyb3JNZXNzYWdlIHwgdHJhbnNsYXRlIH19PC9tYXQtZXJyb3JcbiAgPlxuPC9uZy1jb250YWluZXI+XG4iXX0=
|
|
178
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib25lbXJ2YS1tYXQtZmlsZS11cGxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb25lbXJ2YS9kZXNpZ24tc3lzdGVtL21hdC1maWxlLXVwbG9hZC9zcmMvY29tcG9uZW50cy9vbmVtcnZhLW1hdC1maWxlLXVwbG9hZC9vbmVtcnZhLW1hdC1maWxlLXVwbG9hZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbmVtcnZhL2Rlc2lnbi1zeXN0ZW0vbWF0LWZpbGUtdXBsb2FkL3NyYy9jb21wb25lbnRzL29uZW1ydmEtbWF0LWZpbGUtdXBsb2FkL29uZW1ydmEtbWF0LWZpbGUtdXBsb2FkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBR0wsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDekMsT0FBTyxFQUNMLEtBQUssRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE9BQU8sRUFDUCxPQUFPLEVBQ1AsVUFBVSxHQUNYLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUNMLFdBQVcsR0FHWixNQUFNLGtDQUFrQyxDQUFDOzs7Ozs7Ozs7QUFHMUMsSUFBSSxPQUFPLEdBQUcsQ0FBQyxDQUFDO0FBbUNoQixNQUFNLE9BQU8sNkJBQTZCO0lBNEMvQjtJQUNDO0lBM0NWLE1BQU0sR0FBa0IsRUFBRSxDQUFDO0lBQzNCLFlBQVksR0FBRyxFQUFFLENBQUM7SUFHbEIsV0FBVyxHQUFXLENBQUMsQ0FBQztJQUd4QixZQUFZLEdBQVksSUFBSSxDQUFDO0lBRzdCLFlBQVksR0FBbUIsRUFBRSxDQUFDO0lBR2xDLFlBQVksR0FBVyxFQUFFLENBQUM7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S0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUM7aUNBQ2pDLENBQUMsQ0FDSDs2QkFDRixDQUFDOzRCQUNGLFVBQVUsQ0FBQyxRQUFRLEVBQUU7Z0NBQ25CLE9BQU8sQ0FDTCxHQUFHLEVBQ0gsU0FBUyxDQUFDO29DQUNSLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDO29DQUNoQyxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQztvQ0FDdEMsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUM7b0NBQ3BDLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDO29DQUN0QyxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQztpQ0FDakMsQ0FBQyxDQUNIOzZCQUNGLENBQUM7eUJBQ0gsQ0FBQztxQkFDSDtzSEFJRCxNQUFNO3NCQURMLEtBQUs7Z0JBS04sV0FBVztzQkFEVixLQUFLO2dCQUlOLFlBQVk7c0JBRFgsS0FBSztnQkFJTixZQUFZO3NCQURYLEtBQUs7Z0JBSU4sWUFBWTtzQkFEWCxLQUFLO2dCQU9HLGlCQUFpQjtzQkFBekIsS0FBSztnQkFjQyxNQUFNO3NCQUZaLFdBQVc7dUJBQUMsY0FBYzs7c0JBQzFCLEtBQUs7Z0JBSU4sV0FBVztzQkFEVixTQUFTO3VCQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1pbWVUeXBlcyB9IGZyb20gJ21pbWUtd3JhcHBlcic7XG5pbXBvcnQge1xuICBzdGF0ZSxcbiAga2V5ZnJhbWVzLFxuICBzdHlsZSxcbiAgYW5pbWF0ZSxcbiAgdHJpZ2dlcixcbiAgdHJhbnNpdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQge1xuICBmb3JtYXRCeXRlcyxcbiAgUHJvZ3Jlc3NGaWxlLFxuICBSZWZlcmVuY2VkUHJvZ3Jlc3NGaWxlLFxufSBmcm9tICcuLi8uLi9tb2RlbHMvcHJvZ3Jlc3MtZmlsZS5tb2RlbCc7XG5pbXBvcnQgeyBPbmVtcnZhTWF0RmlsZVVwbG9hZFN0b3JlIH0gZnJvbSAnLi4vLi4vb25lbXJ2YS1tYXQtZmlsZS11cGxvYWQuc3RvcmUnO1xuXG5sZXQgTkVYVF9JRCA9IDA7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ29uZW1ydmEtbWF0LWZpbGUtdXBsb2FkJyxcbiAgdGVtcGxhdGVVcmw6ICdvbmVtcnZhLW1hdC1maWxlLXVwbG9hZC5jb21wb25lbnQuaHRtbCcsXG4gIGFuaW1hdGlvbnM6IFtcbiAgICB0cmlnZ2VyKCdpbk91dEFuaW1hdGlvbicsIFtcbiAgICAgIHN0YXRlKCdpbicsIHN0eWxlKHsgb3BhY2l0eTogMSB9KSksXG4gICAgICB0cmFuc2l0aW9uKCc6ZW50ZXInLCBbXG4gICAgICAgIGFuaW1hdGUoXG4gICAgICAgICAgMzAwLFxuICAgICAgICAgIGtleWZyYW1lcyhbXG4gICAgICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDAsIG9mZnNldDogMCB9KSxcbiAgICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMC4yNSwgb2Zmc2V0OiAwLjI1IH0pLFxuICAgICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAwLjUsIG9mZnNldDogMC41IH0pLFxuICAgICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAwLjc1LCBvZmZzZXQ6IDAuNzUgfSksXG4gICAgICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDEsIG9mZnNldDogMSB9KSxcbiAgICAgICAgICBdKVxuICAgICAgICApLFxuICAgICAgXSksXG4gICAgICB0cmFuc2l0aW9uKCc6bGVhdmUnLCBbXG4gICAgICAgIGFuaW1hdGUoXG4gICAgICAgICAgMzAwLFxuICAgICAgICAgIGtleWZyYW1lcyhbXG4gICAgICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDEsIG9mZnNldDogMCB9KSxcbiAgICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMC43NSwgb2Zmc2V0OiAwLjI1IH0pLFxuICAgICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAwLjUsIG9mZnNldDogMC41IH0pLFxuICAgICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAwLjI1LCBvZmZzZXQ6IDAuNzUgfSksXG4gICAgICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDAsIG9mZnNldDogMSB9KSxcbiAgICAgICAgICBdKVxuICAgICAgICApLFxuICAgICAgXSksXG4gICAgXSksXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIE9uZW1ydmFNYXRGaWxlVXBsb2FkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KClcbiAgYWNjZXB0OiBBcnJheTxzdHJpbmc+ID0gW107XG4gIGFjY2VwdFN0cmluZyA9ICcnO1xuXG4gIEBJbnB1dCgpXG4gIG1heEZpbGVTaXplOiBudW1iZXIgPSAwO1xuXG4gIEBJbnB1dCgpXG4gIHVwbG9hZE9uRHJvcDogYm9vbGVhbiA9IHRydWU7XG5cbiAgQElucHV0KClcbiAgaW5pdGlhbEZpbGVzOiBQcm9ncmVzc0ZpbGVbXSA9IFtdO1xuXG4gIEBJbnB1dCgpXG4gIGVycm9yTWVzc2FnZTogc3RyaW5nID0gJyc7XG5cbiAgZmlsZVVwbG9hZEVycm9yTWVzc2FnZSQ6IE9ic2VydmFibGU8c3RyaW5nPjtcblxuICBmaWxlcyQ6IE9ic2VydmFibGU8UmVmZXJlbmNlZFByb2dyZXNzRmlsZVtdPjtcblxuICBASW5wdXQoKSBmaWxlUGFuZWxUZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgcmV0cnlGaWxlID0gbmV3IEV2ZW50RW1pdHRlcjx7IGluZGV4OiBudW1iZXI7IGNtcFJlZjogc3ltYm9sIH0+KCk7XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGBkYXRhLWN5YCBvZiB0aGUgZWxlbWVudC4gSWYgbm90IHNldCwgdGhlIGZpcnN0IGNvbXBvbmVudCBpbnN0YW5jZSB3aWxsIGhhdmUgYGRhdGEtY3lgID0gYFwib25lbXJ2YS1tYXQtbXVsdGktc2VsZWN0LTBcImAuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYGh0bWxcbiAgICogPG9uZW1ydmEtbWF0LW11bHRpLXNlbGVjdCBpZD1cIm15LWZpcnN0LW11bHRpLXNlbGVjdFwiPjwvb25lbXJ2YS1tYXQtbXVsdGktc2VsZWN0PlxuICAgKiBgYGBcbiAgICovXG4gIEBIb3N0QmluZGluZygnYXR0ci5kYXRhLWN5JylcbiAgQElucHV0KClcbiAgcHVibGljIGRhdGFDeSA9IGBvbmVtcnZhLW1hdC1tdWx0aS1zZWxlY3QtJHtORVhUX0lEKyt9YDtcblxuICBAVmlld0NoaWxkKGBmaWxlRHJvcFJlZmApXG4gIGZpbGVEcm9wUmVmITogRWxlbWVudFJlZjtcblxuICBpbnB1dElkID0gYGZpbGVEcm9wUmVmLSR7TkVYVF9JRH1gO1xuICBtYXhGaWxlU2l6ZUZvcm1hdHRlZDogc3RyaW5nID0gJyc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGRpYWxvZzogTWF0RGlhbG9nLFxuICAgIHByaXZhdGUgZmlsZVVwbG9hZFN0b3JlOiBPbmVtcnZhTWF0RmlsZVVwbG9hZFN0b3JlXG4gICkge1xuICAgIHRoaXMuZmlsZXMkID0gZmlsZVVwbG9hZFN0b3JlLmZpbGVzJDtcblxuICAgIHRoaXMuZmlsZVVwbG9hZEVycm9yTWVzc2FnZSQgPSB0aGlzLmZpbGVVcGxvYWRTdG9yZS5maWxlVXBsb2FkRXJyb3IkO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYWNjZXB0Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuYWNjZXB0U3RyaW5nID0gdGhpcy5hY2NlcHRcbiAgICAgICAgLm1hcCgodmFsKSA9PiB7XG4gICAgICAgICAgY29uc3QgdCA9IG1pbWVUeXBlcy5nZXRFeHRlbnNpb24odmFsKTtcbiAgICAgICAgICByZXR1cm4gYC4ke3R9YDtcbiAgICAgICAgfSlcbiAgICAgICAgLmZpbHRlcigodmFsKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHZhbC5sZW5ndGggPiAxO1xuICAgICAgICB9KVxuICAgICAgICAuam9pbignLCAnKTtcblxuICAgICAgdGhpcy5maWxlVXBsb2FkU3RvcmUuc2V0QWNjZXB0KHRoaXMuYWNjZXB0KTtcbiAgICB9XG5cbiAgICB0aGlzLm1heEZpbGVTaXplRm9ybWF0dGVkID0gZm9ybWF0Qnl0ZXModGhpcy5tYXhGaWxlU2l6ZSk7XG4gICAgdGhpcy5maWxlVXBsb2FkU3RvcmUuc2V0TWF4RmlsZVNpemUodGhpcy5tYXhGaWxlU2l6ZSk7XG4gIH1cblxuICAvKipcbiAgICogb24gZmlsZSBkcm9wIGhhbmRsZXJcbiAgICovXG4gIG9uRmlsZURyb3BwZWQoJGV2ZW50OiBGaWxlTGlzdCkge1xuICAgIHRoaXMucHJlcGFyZUZpbGVzTGlzdCgkZXZlbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIGhhbmRsZSBmaWxlIGZyb20gYnJvd3NpbmdcbiAgICovXG4gIGZpbGVCcm93c2VIYW5kbGVyKCRldmVudDogRXZlbnQpIHtcbiAgICBsZXQgZWxtID0gJGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50LFxuICAgICAgZmlsZXMgPSBlbG0uZmlsZXMgYXMgRmlsZUxpc3Q7XG5cbiAgICB0aGlzLnByZXBhcmVGaWxlc0xpc3QoZmlsZXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgRmlsZXMgbGlzdCB0byBub3JtYWwgYXJyYXkgbGlzdFxuICAgKiBAcGFyYW0gZmlsZXMgKEZpbGVzIExpc3QpXG4gICAqL1xuICBwcmVwYXJlRmlsZXNMaXN0KGZpbGVzOiBGaWxlTGlzdCkge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgY29uc3QgZnM6IFByb2dyZXNzRmlsZVtdID0gW107XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZpbGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGxldCBmaWxlID0gZmlsZXMuaXRlbShpKTtcbiAgICAgICAgaWYgKGZpbGUgPT09IG51bGwpIGNvbnRpbnVlO1xuXG4gICAgICAgIGxldCBpdGVtOiBQcm9ncmVzc0ZpbGUgPSB7XG4gICAgICAgICAgZmlsZSxcbiAgICAgICAgICBwcm9ncmVzczogMCxcbiAgICAgICAgICBtZXNzYWdlOiAnJyxcbiAgICAgICAgICBjb2xvcjogJ3ByaW1hcnknLFxuICAgICAgICAgIHVybDogbnVsbCxcbiAgICAgICAgICBpZDogbnVsbCxcbiAgICAgICAgICBlbmFibGVQcm9ncmVzc0JhcjogdGhpcy51cGxvYWRPbkRyb3AsXG5cbiAgICAgICAgICBuYW1lOiBmaWxlIS5uYW1lLFxuICAgICAgICAgIGxhc3RNb2RpZmllZDogZmlsZSEubGFzdE1vZGlmaWVkLFxuICAgICAgICAgIHNpemU6IGZpbGUhLnNpemUsXG4gICAgICAgICAgdHlwZTogZmlsZSEudHlwZSxcbiAgICAgICAgfTtcblxuICAgICAgICBmcy5wdXNoKGl0ZW0pO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy51cGxvYWRPbkRyb3ApIHRoaXMuZmlsZVVwbG9hZFN0b3JlLnVwbG9hZEZpbGVzKGZzKTtcbiAgICAgIGVsc2UgdGhpcy5maWxlVXBsb2FkU3RvcmUuYWRkU2V2ZXJhbEZvclBvdGVudGlhbFVwbG9hZChmcyk7XG5cbiAgICAgIHRoaXMuZmlsZURyb3BSZWYubmF0aXZlRWxlbWVudC52YWx1ZSA9IG51bGw7XG4gICAgfSwgNDAwKTtcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpbGVzJCB8IGFzeW5jIGFzIGZpbGVzXCI+XG4gIDxkaXZcbiAgICBjbGFzcz1cIm9uZW1ydmEtbWF0LWZpbGUtdXBsb2FkLWRyb3AtYXJlYVwiXG4gICAgYXBwRG5kXG4gICAgW25nQ2xhc3NdPVwieyBmaWxlaW46IGZpbGVzLmxlbmd0aCA+IDAgfVwiXG4gICAgKGZpbGVEcm9wcGVkKT1cIm9uRmlsZURyb3BwZWQoJGV2ZW50KVwiXG4gICAgW25nQ2xhc3NdPVwieyAnZnUtZXJyb3InOiBlcnJvck1lc3NhZ2UgIT09ICcnIH1cIlxuICA+XG4gICAgPGlucHV0XG4gICAgICB0eXBlPVwiZmlsZVwiXG4gICAgICAjZmlsZURyb3BSZWZcbiAgICAgIFthdHRyLmlkXT1cImlucHV0SWRcIlxuICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICBtdWx0aXBsZVxuICAgICAgKGNoYW5nZSk9XCJmaWxlQnJvd3NlSGFuZGxlcigkZXZlbnQpXCJcbiAgICAgIGFjY2VwdD1cInt7IGFjY2VwdFN0cmluZyB9fVwiXG4gICAgLz5cbiAgICA8cCBjbGFzcz1cIm91dGVyXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cImlubmVyXCJcbiAgICAgICAgPjxtYXQtaWNvbiBjbGFzcz1cIm9uZW1ydmEtdXBsb2FkXCI+ZG93bmxvYWQ8L21hdC1pY29uPjwvc3BhblxuICAgICAgPlxuICAgICAgPHNwYW4gY2xhc3M9XCJpbm5lclwiPnt7IFwiZmlsZS51cGxvYWQuZHJhZy5hbmQuZHJvcFwiIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3M9XCJpbm5lclwiXG4gICAgICAgID57eyBcImZpbGUudXBsb2FkLm9yXCIgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPGxhYmVsIGZvcj1cInt7IGlucHV0SWQgfX1cIiBjbGFzcz1cImNvbnRlbnRcIj57e1xuICAgICAgICAgIFwiZmlsZS51cGxvYWQuYnJvd3NlLmZvci5maWxlXCIgfCB0cmFuc2xhdGVcbiAgICAgICAgfX08L2xhYmVsPjwvc3BhblxuICAgICAgPlxuICAgICAgPHNwYW4gY2xhc3M9XCJpbm5lclwiIGFyaWEtZGlzYWJsZWQ9XCJ0cnVlXCJcbiAgICAgICAgPjxzcGFuICpuZ0lmPVwibWF4RmlsZVNpemUgPiAwXCJcbiAgICAgICAgICA+e3sgXCJmaWxlLnVwbG9hZC5tYXhpbXVtXCIgfCB0cmFuc2xhdGUgfX0ge3sgbWF4RmlsZVNpemVGb3JtYXR0ZWQgfX1cbiAgICAgICAgICA8c3BhbiAqbmdJZj1cImFjY2VwdFN0cmluZy5sZW5ndGggPiAwXCI+e3sgXCJ8IFwiIH19PC9zcGFuPlxuICAgICAgICAgIHt7IGFjY2VwdFN0cmluZyB9fTwvc3BhblxuICAgICAgICA+PC9zcGFuXG4gICAgICA+XG4gICAgPC9wPlxuICAgIDx1bCBjbGFzcz1cImZpbGVzLWxpc3RcIj5cbiAgICAgIDxsaSAqbmdGb3I9XCJsZXQgZmlsZSBvZiBmaWxlc1wiPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgIGZpbGVQYW5lbFRlbXBsYXRlO1xuICAgICAgICAgICAgY29udGV4dDogeyBmaWxlLCAkaW1wbGljaXQ6IGZpbGUgfVxuICAgICAgICAgIFwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgPC9kaXY+XG4gIDxtYXQtZXJyb3IgKm5nSWY9XCJlcnJvck1lc3NhZ2VcIj57eyBlcnJvck1lc3NhZ2UgfCB0cmFuc2xhdGUgfX08L21hdC1lcnJvcj5cbiAgPG1hdC1lcnJvclxuICAgICpuZ0lmPVwiZmlsZVVwbG9hZEVycm9yTWVzc2FnZSQgfCBhc3luYyBhcyBmaWxlVXBsb2FkRXJyb3JNZXNzYWdlXCJcbiAgICA+e3sgZmlsZVVwbG9hZEVycm9yTWVzc2FnZSB8IHRyYW5zbGF0ZSB9fTwvbWF0LWVycm9yXG4gID5cbjwvbmctY29udGFpbmVyPlxuIl19
|