{"ast":null,"code":"import _classCallCheck from \"C:/Users/piotr.pekala/Desktop/gns3-web-ui/node_modules/@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"C:/Users/piotr.pekala/Desktop/gns3-web-ui/node_modules/@babel/runtime/helpers/esm/createClass\";\nimport _regeneratorRuntime from \"C:/Users/piotr.pekala/Desktop/gns3-web-ui/node_modules/@babel/runtime/regenerator\";\nimport { __awaiter } from \"tslib\";\nimport { ViewContainerRef } from '@angular/core';\nimport * as Mousetrap from 'mousetrap';\nimport { from, Observable, Subscription } from 'rxjs';\nimport { map, mergeMap } from 'rxjs/operators';\nimport { D3MapComponent } from '../../cartography/components/d3-map/d3-map.component';\nimport { MapDrawing } from '../../cartography/models/map/map-drawing';\nimport { MapLabel } from '../../cartography/models/map/map-label';\nimport { MapLink } from '../../cartography/models/map/map-link';\nimport { MapNode } from '../../cartography/models/map/map-node';\nimport { AddBlankProjectDialogComponent } from '../projects/add-blank-project-dialog/add-blank-project-dialog.component';\nimport { ConfirmationBottomSheetComponent } from '../projects/confirmation-bottomsheet/confirmation-bottomsheet.component';\nimport { EditProjectDialogComponent } from '../projects/edit-project-dialog/edit-project-dialog.component';\nimport { ImportProjectDialogComponent } from '../projects/import-project-dialog/import-project-dialog.component';\nimport { NavigationDialogComponent } from '../projects/navigation-dialog/navigation-dialog.component';\nimport { SaveProjectDialogComponent } from '../projects/save-project-dialog/save-project-dialog.component';\nimport { ContextMenuComponent } from './context-menu/context-menu.component';\nimport { NewTemplateDialogComponent } from './new-template-dialog/new-template-dialog.component';\nimport { ProjectMapMenuComponent } from './project-map-menu/project-map-menu.component';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/router\";\nimport * as i2 from \"../../services/server.service\";\nimport * as i3 from \"../../services/project.service\";\nimport * as i4 from \"../../services/node.service\";\nimport * as i5 from \"../../services/drawing.service\";\nimport * as i6 from \"../../common/progress/progress.service\";\nimport * as i7 from \"../../handlers/project-web-service-handler\";\nimport * as i8 from \"../../cartography/services/map-change-detector-ref\";\nimport * as i9 from \"../../cartography/widgets/node\";\nimport * as i10 from \"../../cartography/widgets/drawings\";\nimport * as i11 from \"../../cartography/widgets/link\";\nimport * as i12 from \"../../cartography/widgets/label\";\nimport * as i13 from \"../../cartography/widgets/interface-label\";\nimport * as i14 from \"../../cartography/converters/map/map-node-to-node-converter\";\nimport * as i15 from \"../../cartography/converters/map/map-drawing-to-drawing-converter\";\nimport * as i16 from \"../../cartography/converters/map/map-label-to-label-converter\";\nimport * as i17 from \"../../cartography/converters/map/map-link-to-link-converter\";\nimport * as i18 from \"../../cartography/converters/map/map-link-node-to-link-node-converter\";\nimport * as i19 from \"../../cartography/datasources/nodes-datasource\";\nimport * as i20 from \"../../cartography/datasources/links-datasource\";\nimport * as i21 from \"../../cartography/datasources/drawings-datasource\";\nimport * as i22 from \"../../services/settings.service\";\nimport * as i23 from \"../../services/tools.service\";\nimport * as i24 from \"../../cartography/managers/selection-manager\";\nimport * as i25 from \"../../cartography/tools/selection-tool\";\nimport * as i26 from \"../../services/recentlyOpenedProject.service\";\nimport * as i27 from \"../../cartography/events/moving-event-source\";\nimport * as i28 from \"../../services/mapScale.service\";\nimport * as i29 from \"./helpers/node-created-label-styles-fixer\";\nimport * as i30 from \"../../services/toaster.service\";\nimport * as i31 from \"@angular/material/dialog\";\nimport * as i32 from \"../../cartography/datasources/map-datasource\";\nimport * as i33 from \"../../services/mapsettings.service\";\nimport * as i34 from \"../../cartography/widgets/links/ethernet-link\";\nimport * as i35 from \"../../cartography/widgets/links/serial-link\";\nimport * as i36 from \"@angular/material/bottom-sheet\";\nimport * as i37 from \"../../services/notification.service\";\nimport * as i38 from \"../../services/theme.service\";\nimport * as i39 from \"@angular/platform-browser\";\nimport * as i40 from \"../../services/nodeConsole.service\";\nimport * as i41 from \"../../services/symbol.service\";\nimport * as i42 from \"@angular/common\";\nimport * as i43 from \"@angular/material/button\";\nimport * as i44 from \"@angular/material/tooltip\";\nimport * as i45 from \"@angular/material/menu\";\nimport * as i46 from \"./nodes-menu/nodes-menu.component\";\nimport * as i47 from \"./context-menu/context-menu.component\";\nimport * as i48 from \"@angular/material/icon\";\nimport * as i49 from \"./import-appliance/import-appliance.component\";\nimport * as i50 from \"@angular/material/checkbox\";\nimport * as i51 from \"@angular/forms\";\nimport * as i52 from \"./project-map-menu/project-map-menu.component\";\nimport * as i53 from \"../../common/progress/progress.component\";\nimport * as i54 from \"../drawings-listeners/drawing-dragged/drawing-dragged.component\";\nimport * as i55 from \"../drawings-listeners/drawing-resized/drawing-resized.component\";\nimport * as i56 from \"../drawings-listeners/interface-label-dragged/interface-label-dragged.component\";\nimport * as i57 from \"../drawings-listeners/link-created/link-created.component\";\nimport * as i58 from \"../drawings-listeners/node-dragged/node-dragged.component\";\nimport * as i59 from \"../drawings-listeners/node-label-dragged/node-label-dragged.component\";\nimport * as i60 from \"../drawings-listeners/text-added/text-added.component\";\nimport * as i61 from \"../drawings-listeners/text-edited/text-edited.component\";\nimport * as i62 from \"../../cartography/components/d3-map/d3-map.component\";\nimport * as i63 from \"../../cartography/components/experimental-map/experimental-map.component\";\nimport * as i64 from \"../template/template.component\";\nimport * as i65 from \"../snapshots/snapshot-menu-item/snapshot-menu-item.component\";\nimport * as i66 from \"./draw-link-tool/draw-link-tool.component\";\nimport * as i67 from \"./console-wrapper/console-wrapper.component\";\nvar _c0 = [\"topologySummaryContainer\"];\n\nfunction ProjectMapComponent_div_0_app_d3_map_1_Template(rf, ctx) {\n if (rf & 1) {\n var _r15 = i0.ɵɵgetCurrentView();\n\n i0.ɵɵelementStart(0, \"app-d3-map\", 38);\n i0.ɵɵlistener(\"nodeDragged\", function ProjectMapComponent_div_0_app_d3_map_1_Template_app_d3_map_nodeDragged_0_listener($event) {\n i0.ɵɵrestoreView(_r15);\n var ctx_r14 = i0.ɵɵnextContext(2);\n return ctx_r14.onNodeDragged($event);\n })(\"drawingDragged\", function ProjectMapComponent_div_0_app_d3_map_1_Template_app_d3_map_drawingDragged_0_listener($event) {\n i0.ɵɵrestoreView(_r15);\n var ctx_r16 = i0.ɵɵnextContext(2);\n return ctx_r16.onDrawingDragged($event);\n })(\"onLinkCreated\", function ProjectMapComponent_div_0_app_d3_map_1_Template_app_d3_map_onLinkCreated_0_listener($event) {\n i0.ɵɵrestoreView(_r15);\n var ctx_r17 = i0.ɵɵnextContext(2);\n return ctx_r17.onLinkCreated($event);\n })(\"onDrawingResized\", function ProjectMapComponent_div_0_app_d3_map_1_Template_app_d3_map_onDrawingResized_0_listener($event) {\n i0.ɵɵrestoreView(_r15);\n var ctx_r18 = i0.ɵɵnextContext(2);\n return ctx_r18.onDrawingResized($event);\n });\n i0.ɵɵelementEnd();\n }\n\n if (rf & 2) {\n var ctx_r3 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"server\", ctx_r3.server)(\"project\", ctx_r3.project)(\"symbols\", ctx_r3.symbols)(\"nodes\", ctx_r3.nodes)(\"links\", ctx_r3.links)(\"drawings\", ctx_r3.drawings)(\"width\", ctx_r3.project.scene_width)(\"height\", ctx_r3.project.scene_height)(\"show-interface-labels\", ctx_r3.isInterfaceLabelVisible)(\"readonly\", ctx_r3.inReadOnlyMode);\n }\n}\n\nfunction ProjectMapComponent_div_0_app_experimental_map_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"app-experimental-map\", 39);\n }\n\n if (rf & 2) {\n var ctx_r4 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"symbols\", ctx_r4.symbols)(\"nodes\", ctx_r4.nodes)(\"links\", ctx_r4.links)(\"drawings\", ctx_r4.drawings)(\"width\", ctx_r4.project.scene_width)(\"height\", ctx_r4.project.scene_height)(\"show-interface-labels\", ctx_r4.isInterfaceLabelVisible)(\"selection-tool\", ctx_r4.tools.selection)(\"moving-tool\", ctx_r4.tools.moving)(\"draw-link-tool\", ctx_r4.tools.draw_link)(\"readonly\", ctx_r4.inReadOnlyMode);\n }\n}\n\nfunction ProjectMapComponent_div_0_mat_icon_5_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"mat-icon\", 40);\n }\n}\n\nfunction ProjectMapComponent_div_0_mat_icon_6_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"mat-icon\", 41);\n }\n}\n\nvar _c1 = function _c1(a0) {\n return {\n lightTheme: a0\n };\n};\n\nvar _c2 = function _c2(a0) {\n return {\n selected: a0\n };\n};\n\nfunction ProjectMapComponent_div_0_div_8_Template(rf, ctx) {\n if (rf & 1) {\n var _r20 = i0.ɵɵgetCurrentView();\n\n i0.ɵɵelementStart(0, \"div\", 42);\n i0.ɵɵelementStart(1, \"app-template\", 43);\n i0.ɵɵlistener(\"onNodeCreation\", function ProjectMapComponent_div_0_div_8_Template_app_template_onNodeCreation_1_listener($event) {\n i0.ɵɵrestoreView(_r20);\n var ctx_r19 = i0.ɵɵnextContext(2);\n return ctx_r19.onNodeCreation($event);\n });\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(2, \"button\", 44);\n i0.ɵɵlistener(\"click\", function ProjectMapComponent_div_0_div_8_Template_button_click_2_listener() {\n i0.ɵɵrestoreView(_r20);\n var ctx_r21 = i0.ɵɵnextContext(2);\n return ctx_r21.toggleDrawLineMode();\n });\n i0.ɵɵelementStart(3, \"mat-icon\");\n i0.ɵɵtext(4, \"timeline\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementEnd();\n i0.ɵɵelementEnd();\n }\n\n if (rf & 2) {\n var ctx_r7 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction1(5, _c1, ctx_r7.isLightThemeEnabled));\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"server\", ctx_r7.server)(\"project\", ctx_r7.project);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction1(7, _c2, ctx_r7.tools.draw_link))(\"color\", ctx_r7.tools.draw_link ? \"primary\" : \"basic\");\n }\n}\n\nfunction ProjectMapComponent_div_0_div_143_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 26);\n i0.ɵɵelement(1, \"app-snapshot-menu-item\", 12);\n i0.ɵɵelementEnd();\n }\n\n if (rf & 2) {\n var ctx_r11 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"server\", ctx_r11.server)(\"project\", ctx_r11.project);\n }\n}\n\nfunction ProjectMapComponent_div_0_app_draw_link_tool_145_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"app-draw-link-tool\", 45);\n }\n\n if (rf & 2) {\n var ctx_r12 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"links\", ctx_r12.links);\n }\n}\n\nfunction ProjectMapComponent_div_0_app_console_wrapper_155_Template(rf, ctx) {\n if (rf & 1) {\n var _r23 = i0.ɵɵgetCurrentView();\n\n i0.ɵɵelementStart(0, \"app-console-wrapper\", 46);\n i0.ɵɵlistener(\"closeConsole\", function ProjectMapComponent_div_0_app_console_wrapper_155_Template_app_console_wrapper_closeConsole_0_listener($event) {\n i0.ɵɵrestoreView(_r23);\n var ctx_r22 = i0.ɵɵnextContext(2);\n return ctx_r22.toggleShowConsole($event);\n });\n i0.ɵɵelementEnd();\n }\n\n if (rf & 2) {\n var ctx_r13 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"server\", ctx_r13.server)(\"project\", ctx_r13.project);\n }\n}\n\nvar _c3 = function _c3(a0, a1) {\n return {\n unmarkedLight: a0,\n marked: a1\n };\n};\n\nvar _c4 = function _c4(a1) {\n return [\"/server\", a1, \"projects\"];\n};\n\nvar _c5 = function _c5() {\n return [\"/servers\"];\n};\n\nvar _c6 = function _c6(a0) {\n return {\n visible: a0\n };\n};\n\nfunction ProjectMapComponent_div_0_Template(rf, ctx) {\n if (rf & 1) {\n var _r25 = i0.ɵɵgetCurrentView();\n\n i0.ɵɵelementStart(0, \"div\", 2);\n i0.ɵɵtemplate(1, ProjectMapComponent_div_0_app_d3_map_1_Template, 1, 10, \"app-d3-map\", 3);\n i0.ɵɵtemplate(2, ProjectMapComponent_div_0_app_experimental_map_2_Template, 1, 11, \"app-experimental-map\", 4);\n i0.ɵɵelementStart(3, \"div\", 5);\n i0.ɵɵelementStart(4, \"button\", 6);\n i0.ɵɵtemplate(5, ProjectMapComponent_div_0_mat_icon_5_Template, 1, 0, \"mat-icon\", 7);\n i0.ɵɵtemplate(6, ProjectMapComponent_div_0_mat_icon_6_Template, 1, 0, \"mat-icon\", 8);\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(7, \"div\", 9);\n i0.ɵɵtemplate(8, ProjectMapComponent_div_0_div_8_Template, 5, 9, \"div\", 10);\n i0.ɵɵelementStart(9, \"div\", 11);\n i0.ɵɵelement(10, \"app-nodes-menu\", 12);\n i0.ɵɵelement(11, \"app-context-menu\", 13);\n i0.ɵɵelementEnd();\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(12, \"div\");\n i0.ɵɵelementStart(13, \"button\", 14);\n i0.ɵɵlistener(\"click\", function ProjectMapComponent_div_0_Template_button_click_13_listener() {\n i0.ɵɵrestoreView(_r25);\n var ctx_r24 = i0.ɵɵnextContext();\n return ctx_r24.toggleShowTopologySummary(!ctx_r24.isTopologySummaryVisible);\n });\n i0.ɵɵelementStart(14, \"mat-icon\");\n i0.ɵɵtext(15, \"toc\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementEnd();\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(16, \"mat-menu\", 15, 16);\n i0.ɵɵelementStart(18, \"button\", 17);\n i0.ɵɵelementStart(19, \"mat-icon\");\n i0.ɵɵtext(20, \"work\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(21, \"span\");\n i0.ɵɵtext(22, \"Go to projects\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(23, \"button\", 17);\n i0.ɵɵelementStart(24, \"mat-icon\");\n i0.ɵɵtext(25, \"developer_board\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(26, \"span\");\n i0.ɵɵtext(27, \"Go to servers\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(28, \"button\", 17);\n i0.ɵɵelementStart(29, \"mat-icon\");\n i0.ɵɵtext(30, \"settings_applications\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(31, \"span\");\n i0.ɵɵtext(32, \"Go to preferences\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(33, \"button\", 17);\n i0.ɵɵelementStart(34, \"mat-icon\");\n i0.ɵɵtext(35, \"info\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(36, \"span\");\n i0.ɵɵtext(37, \"Go to system status\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(38, \"button\", 18);\n i0.ɵɵelementStart(39, \"mat-icon\");\n i0.ɵɵtext(40, \"settings\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(41, \"span\");\n i0.ɵɵtext(42, \"Go to settings\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(43, \"button\", 19);\n i0.ɵɵlistener(\"click\", function ProjectMapComponent_div_0_Template_button_click_43_listener() {\n i0.ɵɵrestoreView(_r25);\n var ctx_r26 = i0.ɵɵnextContext();\n return ctx_r26.addNewTemplate();\n });\n i0.ɵɵelementStart(44, \"mat-icon\");\n i0.ɵɵtext(45, \"control_point\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(46, \"span\");\n i0.ɵɵtext(47, \"New template\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementEnd();\n i0.ɵɵelement(48, \"app-import-appliance\", 12);\n i0.ɵɵelementStart(49, \"button\", 20);\n i0.ɵɵelementStart(50, \"mat-icon\");\n i0.ɵɵtext(51, \"settings\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(52, \"span\");\n i0.ɵɵtext(53, \"Project settings\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(54, \"button\", 20);\n i0.ɵɵelementStart(55, \"mat-icon\");\n i0.ɵɵtext(56, \"view_module\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(57, \"span\");\n i0.ɵɵtext(58, \"Map settings\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementEnd();\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(59, \"mat-menu\", 15, 21);\n i0.ɵɵelementStart(61, \"div\");\n i0.ɵɵelementStart(62, \"button\", 19);\n i0.ɵɵlistener(\"click\", function ProjectMapComponent_div_0_Template_button_click_62_listener() {\n i0.ɵɵrestoreView(_r25);\n var ctx_r27 = i0.ɵɵnextContext();\n return ctx_r27.addNewProject();\n });\n i0.ɵɵelementStart(63, \"mat-icon\");\n i0.ɵɵtext(64, \"add\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(65, \"span\");\n i0.ɵɵtext(66, \"Add new blank project\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(67, \"button\", 19);\n i0.ɵɵlistener(\"click\", function ProjectMapComponent_div_0_Template_button_click_67_listener() {\n i0.ɵɵrestoreView(_r25);\n var ctx_r28 = i0.ɵɵnextContext();\n return ctx_r28.saveProject();\n });\n i0.ɵɵelementStart(68, \"mat-icon\");\n i0.ɵɵtext(69, \"save\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(70, \"span\");\n i0.ɵɵtext(71, \"Save project as\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(72, \"button\", 19);\n i0.ɵɵlistener(\"click\", function ProjectMapComponent_div_0_Template_button_click_72_listener() {\n i0.ɵɵrestoreView(_r25);\n var ctx_r29 = i0.ɵɵnextContext();\n return ctx_r29.editProject();\n });\n i0.ɵɵelementStart(73, \"mat-icon\");\n i0.ɵɵtext(74, \"edit\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(75, \"span\");\n i0.ɵɵtext(76, \"Edit project\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(77, \"button\", 19);\n i0.ɵɵlistener(\"click\", function ProjectMapComponent_div_0_Template_button_click_77_listener() {\n i0.ɵɵrestoreView(_r25);\n var ctx_r30 = i0.ɵɵnextContext();\n return ctx_r30.exportProject();\n });\n i0.ɵɵelementStart(78, \"mat-icon\");\n i0.ɵɵtext(79, \"call_made\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(80, \"span\");\n i0.ɵɵtext(81, \"Export portable project\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(82, \"button\", 19);\n i0.ɵɵlistener(\"click\", function ProjectMapComponent_div_0_Template_button_click_82_listener() {\n i0.ɵɵrestoreView(_r25);\n var ctx_r31 = i0.ɵɵnextContext();\n return ctx_r31.importProject();\n });\n i0.ɵɵelementStart(83, \"mat-icon\");\n i0.ɵɵtext(84, \"call_received\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(85, \"span\");\n i0.ɵɵtext(86, \"Import portable project\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(87, \"button\", 19);\n i0.ɵɵlistener(\"click\", function ProjectMapComponent_div_0_Template_button_click_87_listener() {\n i0.ɵɵrestoreView(_r25);\n var ctx_r32 = i0.ɵɵnextContext();\n return ctx_r32.closeProject();\n });\n i0.ɵɵelementStart(88, \"mat-icon\");\n i0.ɵɵtext(89, \"close\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(90, \"span\");\n i0.ɵɵtext(91, \"Close project\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(92, \"button\", 19);\n i0.ɵɵlistener(\"click\", function ProjectMapComponent_div_0_Template_button_click_92_listener() {\n i0.ɵɵrestoreView(_r25);\n var ctx_r33 = i0.ɵɵnextContext();\n return ctx_r33.deleteProject();\n });\n i0.ɵɵelementStart(93, \"mat-icon\");\n i0.ɵɵtext(94, \"delete\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(95, \"span\");\n i0.ɵɵtext(96, \"Delete project\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementEnd();\n i0.ɵɵelementEnd();\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(97, \"mat-menu\", 15, 22);\n i0.ɵɵelementStart(99, \"div\", 23);\n i0.ɵɵelementStart(100, \"mat-checkbox\", 24);\n i0.ɵɵlistener(\"change\", function ProjectMapComponent_div_0_Template_mat_checkbox_change_100_listener($event) {\n i0.ɵɵrestoreView(_r25);\n var ctx_r34 = i0.ɵɵnextContext();\n return ctx_r34.toggleShowInterfaceLabels($event.checked);\n });\n i0.ɵɵtext(101, \" Show interface labels \");\n i0.ɵɵelementEnd();\n i0.ɵɵelement(102, \"br\");\n i0.ɵɵelementStart(103, \"mat-checkbox\", 24);\n i0.ɵɵlistener(\"change\", function ProjectMapComponent_div_0_Template_mat_checkbox_change_103_listener($event) {\n i0.ɵɵrestoreView(_r25);\n var ctx_r35 = i0.ɵɵnextContext();\n return ctx_r35.toggleShowConsole($event.checked);\n });\n i0.ɵɵtext(104, \" Show console \");\n i0.ɵɵelementEnd();\n i0.ɵɵelement(105, \"br\");\n i0.ɵɵelementStart(106, \"mat-checkbox\", 24);\n i0.ɵɵlistener(\"change\", function ProjectMapComponent_div_0_Template_mat_checkbox_change_106_listener($event) {\n i0.ɵɵrestoreView(_r25);\n var ctx_r36 = i0.ɵɵnextContext();\n return ctx_r36.toggleShowTopologySummary($event.checked);\n });\n i0.ɵɵtext(107, \" Show topology/servers summary \");\n i0.ɵɵelementEnd();\n i0.ɵɵelement(108, \"br\");\n i0.ɵɵelementStart(109, \"mat-checkbox\", 24);\n i0.ɵɵlistener(\"change\", function ProjectMapComponent_div_0_Template_mat_checkbox_change_109_listener($event) {\n i0.ɵɵrestoreView(_r25);\n var ctx_r37 = i0.ɵɵnextContext();\n return ctx_r37.toggleNotifications($event.checked);\n });\n i0.ɵɵtext(110, \" Show notifications \");\n i0.ɵɵelementEnd();\n i0.ɵɵelement(111, \"br\");\n i0.ɵɵelementStart(112, \"mat-checkbox\", 24);\n i0.ɵɵlistener(\"change\", function ProjectMapComponent_div_0_Template_mat_checkbox_change_112_listener($event) {\n i0.ɵɵrestoreView(_r25);\n var ctx_r38 = i0.ɵɵnextContext();\n return ctx_r38.toggleLayers($event.checked);\n });\n i0.ɵɵtext(113, \" Show layers \");\n i0.ɵɵelementEnd();\n i0.ɵɵelement(114, \"br\");\n i0.ɵɵelementStart(115, \"mat-checkbox\", 24);\n i0.ɵɵlistener(\"change\", function ProjectMapComponent_div_0_Template_mat_checkbox_change_115_listener($event) {\n i0.ɵɵrestoreView(_r25);\n var ctx_r39 = i0.ɵɵnextContext();\n return ctx_r39.toggleGrid($event.checked);\n });\n i0.ɵɵtext(116, \" Show grid \");\n i0.ɵɵelementEnd();\n i0.ɵɵelement(117, \"br\");\n i0.ɵɵelementStart(118, \"mat-checkbox\", 24);\n i0.ɵɵlistener(\"change\", function ProjectMapComponent_div_0_Template_mat_checkbox_change_118_listener($event) {\n i0.ɵɵrestoreView(_r25);\n var ctx_r40 = i0.ɵɵnextContext();\n return ctx_r40.toggleSnapToGrid($event.checked);\n });\n i0.ɵɵtext(119, \" Snap to grid \");\n i0.ɵɵelementEnd();\n i0.ɵɵelement(120, \"br\");\n i0.ɵɵelementStart(121, \"mat-checkbox\", 24);\n i0.ɵɵlistener(\"change\", function ProjectMapComponent_div_0_Template_mat_checkbox_change_121_listener($event) {\n i0.ɵɵrestoreView(_r25);\n var ctx_r41 = i0.ɵɵnextContext();\n return ctx_r41.toggleSymbolScaling($event.checked);\n });\n i0.ɵɵtext(122, \" Scale symbols \");\n i0.ɵɵelementEnd();\n i0.ɵɵelement(123, \"br\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementEnd();\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(124, \"div\", 25);\n i0.ɵɵelementStart(125, \"div\", 26);\n i0.ɵɵelementStart(126, \"button\", 27);\n i0.ɵɵlistener(\"click\", function ProjectMapComponent_div_0_Template_button_click_126_listener() {\n i0.ɵɵrestoreView(_r25);\n var ctx_r42 = i0.ɵɵnextContext();\n return ctx_r42.toggleMovingMode();\n });\n i0.ɵɵelementStart(127, \"mat-icon\");\n i0.ɵɵtext(128, \"near_me\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(129, \"button\", 28);\n i0.ɵɵlistener(\"click\", function ProjectMapComponent_div_0_Template_button_click_129_listener() {\n i0.ɵɵrestoreView(_r25);\n var ctx_r43 = i0.ɵɵnextContext();\n return ctx_r43.toggleMovingMode();\n });\n i0.ɵɵelementStart(130, \"mat-icon\");\n i0.ɵɵtext(131, \"zoom_out_map\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(132, \"button\", 29);\n i0.ɵɵlistener(\"click\", function ProjectMapComponent_div_0_Template_button_click_132_listener() {\n i0.ɵɵrestoreView(_r25);\n var ctx_r44 = i0.ɵɵnextContext();\n return ctx_r44.zoomIn();\n });\n i0.ɵɵelementStart(133, \"mat-icon\");\n i0.ɵɵtext(134, \"zoom_in\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(135, \"button\", 30);\n i0.ɵɵlistener(\"click\", function ProjectMapComponent_div_0_Template_button_click_135_listener() {\n i0.ɵɵrestoreView(_r25);\n var ctx_r45 = i0.ɵɵnextContext();\n return ctx_r45.resetZoom();\n });\n i0.ɵɵelementStart(136, \"mat-icon\");\n i0.ɵɵtext(137, \"adjust\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(138, \"button\", 31);\n i0.ɵɵlistener(\"click\", function ProjectMapComponent_div_0_Template_button_click_138_listener() {\n i0.ɵɵrestoreView(_r25);\n var ctx_r46 = i0.ɵɵnextContext();\n return ctx_r46.zoomOut();\n });\n i0.ɵɵelementStart(139, \"mat-icon\");\n i0.ɵɵtext(140, \"zoom_out\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementEnd();\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(141, \"div\", 26);\n i0.ɵɵelement(142, \"app-project-map-menu\", 12);\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(143, ProjectMapComponent_div_0_div_143_Template, 2, 2, \"div\", 32);\n i0.ɵɵelementEnd();\n i0.ɵɵelement(144, \"app-progress\");\n i0.ɵɵtemplate(145, ProjectMapComponent_div_0_app_draw_link_tool_145_Template, 1, 1, \"app-draw-link-tool\", 33);\n i0.ɵɵelement(146, \"app-drawing-dragged\", 12);\n i0.ɵɵelement(147, \"app-drawing-resized\", 34);\n i0.ɵɵelement(148, \"app-interface-label-dragged\", 34);\n i0.ɵɵelement(149, \"app-link-created\", 12);\n i0.ɵɵelement(150, \"app-node-dragged\", 12);\n i0.ɵɵelement(151, \"app-node-label-dragged\", 34);\n i0.ɵɵelementStart(152, \"app-text-added\", 35);\n i0.ɵɵlistener(\"drawingSaved\", function ProjectMapComponent_div_0_Template_app_text_added_drawingSaved_152_listener() {\n i0.ɵɵrestoreView(_r25);\n var ctx_r47 = i0.ɵɵnextContext();\n return ctx_r47.onDrawingSaved();\n });\n i0.ɵɵelementEnd();\n i0.ɵɵelement(153, \"app-text-edited\", 34);\n i0.ɵɵelementStart(154, \"div\", 36);\n i0.ɵɵtemplate(155, ProjectMapComponent_div_0_app_console_wrapper_155_Template, 1, 2, \"app-console-wrapper\", 37);\n i0.ɵɵelementEnd();\n i0.ɵɵelementEnd();\n }\n\n if (rf & 2) {\n var _r8 = i0.ɵɵreference(17);\n\n var _r9 = i0.ɵɵreference(60);\n\n var _r10 = i0.ɵɵreference(98);\n\n var ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction1(53, _c1, ctx_r0.isLightThemeEnabled));\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"ngIf\", !ctx_r0.settings.angular_map);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"ngIf\", ctx_r0.settings.angular_map);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction1(55, _c1, ctx_r0.isLightThemeEnabled));\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"matMenuTriggerFor\", _r8);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"ngIf\", !ctx_r0.isLightThemeEnabled);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"ngIf\", ctx_r0.isLightThemeEnabled);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngIf\", !ctx_r0.readonly);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"server\", ctx_r0.server)(\"project\", ctx_r0.project);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"project\", ctx_r0.project)(\"server\", ctx_r0.server);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction2(57, _c3, !ctx_r0.isTopologySummaryVisible && ctx_r0.isLightThemeEnabled, ctx_r0.isTopologySummaryVisible));\n i0.ɵɵadvance(3);\n i0.ɵɵproperty(\"overlapTrigger\", false);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"routerLink\", i0.ɵɵpureFunction1(60, _c4, ctx_r0.server.id));\n i0.ɵɵadvance(5);\n i0.ɵɵproperty(\"routerLink\", i0.ɵɵpureFunction0(62, _c5));\n i0.ɵɵadvance(5);\n i0.ɵɵpropertyInterpolate1(\"routerLink\", \"/server/\", ctx_r0.server.id, \"/preferences\");\n i0.ɵɵadvance(5);\n i0.ɵɵpropertyInterpolate1(\"routerLink\", \"/server/\", ctx_r0.server.id, \"/systemstatus\");\n i0.ɵɵadvance(15);\n i0.ɵɵproperty(\"server\", ctx_r0.server)(\"project\", ctx_r0.project);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"matMenuTriggerFor\", _r9);\n i0.ɵɵadvance(5);\n i0.ɵɵproperty(\"matMenuTriggerFor\", _r10);\n i0.ɵɵadvance(5);\n i0.ɵɵproperty(\"overlapTrigger\", false);\n i0.ɵɵadvance(38);\n i0.ɵɵproperty(\"overlapTrigger\", false);\n i0.ɵɵadvance(3);\n i0.ɵɵproperty(\"ngModel\", ctx_r0.isInterfaceLabelVisible);\n i0.ɵɵadvance(3);\n i0.ɵɵproperty(\"ngModel\", ctx_r0.isConsoleVisible);\n i0.ɵɵadvance(3);\n i0.ɵɵproperty(\"ngModel\", ctx_r0.isTopologySummaryVisible);\n i0.ɵɵadvance(3);\n i0.ɵɵproperty(\"ngModel\", ctx_r0.notificationsVisibility);\n i0.ɵɵadvance(3);\n i0.ɵɵproperty(\"ngModel\", ctx_r0.layersVisibility);\n i0.ɵɵadvance(3);\n i0.ɵɵproperty(\"ngModel\", ctx_r0.gridVisibility);\n i0.ɵɵadvance(3);\n i0.ɵɵproperty(\"ngModel\", ctx_r0.project.snap_to_grid);\n i0.ɵɵadvance(3);\n i0.ɵɵproperty(\"ngModel\", ctx_r0.symbolScaling);\n i0.ɵɵadvance(3);\n i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction1(63, _c1, ctx_r0.isLightThemeEnabled));\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"color\", ctx_r0.tools.moving ? \"basic\" : \"primary\");\n i0.ɵɵadvance(3);\n i0.ɵɵproperty(\"color\", ctx_r0.tools.moving ? \"primary\" : \"basic\");\n i0.ɵɵadvance(13);\n i0.ɵɵproperty(\"server\", ctx_r0.server)(\"project\", ctx_r0.project);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"ngIf\", !ctx_r0.readonly);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngIf\", ctx_r0.tools.draw_link);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"server\", ctx_r0.server)(\"project\", ctx_r0.project);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"server\", ctx_r0.server);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"server\", ctx_r0.server);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"server\", ctx_r0.server)(\"project\", ctx_r0.project);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"server\", ctx_r0.server)(\"project\", ctx_r0.project);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"server\", ctx_r0.server);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"server\", ctx_r0.server)(\"project\", ctx_r0.project);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"server\", ctx_r0.server);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction1(65, _c6, !ctx_r0.isConsoleVisible));\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"ngIf\", ctx_r0.project);\n }\n}\n\nfunction ProjectMapComponent_ng_template_1_Template(rf, ctx) {}\n\nexport var ProjectMapComponent = /*#__PURE__*/function () {\n function ProjectMapComponent(route, serverService, projectService, nodeService, drawingService, progressService, projectWebServiceHandler, mapChangeDetectorRef, nodeWidget, drawingsWidget, linkWidget, labelWidget, interfaceLabelWidget, mapNodeToNode, mapDrawingToDrawing, mapLabelToLabel, mapLinkToLink, mapLinkNodeToLinkNode, nodesDataSource, linksDataSource, drawingsDataSource, settingsService, toolsService, selectionManager, selectionTool, recentlyOpenedProjectService, movingEventSource, mapScaleService, nodeCreatedLabelStylesFixer, toasterService, dialog, router, mapNodesDataSource, mapLinksDataSource, mapDrawingsDataSource, mapSymbolsDataSource, mapSettingsService, ethernetLinkWidget, serialLinkWidget, bottomSheet, notificationService, themeService, title, nodeConsoleService, symbolService, cd, cfr, injector) {\n _classCallCheck(this, ProjectMapComponent);\n\n this.route = route;\n this.serverService = serverService;\n this.projectService = projectService;\n this.nodeService = nodeService;\n this.drawingService = drawingService;\n this.progressService = progressService;\n this.projectWebServiceHandler = projectWebServiceHandler;\n this.mapChangeDetectorRef = mapChangeDetectorRef;\n this.nodeWidget = nodeWidget;\n this.drawingsWidget = drawingsWidget;\n this.linkWidget = linkWidget;\n this.labelWidget = labelWidget;\n this.interfaceLabelWidget = interfaceLabelWidget;\n this.mapNodeToNode = mapNodeToNode;\n this.mapDrawingToDrawing = mapDrawingToDrawing;\n this.mapLabelToLabel = mapLabelToLabel;\n this.mapLinkToLink = mapLinkToLink;\n this.mapLinkNodeToLinkNode = mapLinkNodeToLinkNode;\n this.nodesDataSource = nodesDataSource;\n this.linksDataSource = linksDataSource;\n this.drawingsDataSource = drawingsDataSource;\n this.settingsService = settingsService;\n this.toolsService = toolsService;\n this.selectionManager = selectionManager;\n this.selectionTool = selectionTool;\n this.recentlyOpenedProjectService = recentlyOpenedProjectService;\n this.movingEventSource = movingEventSource;\n this.mapScaleService = mapScaleService;\n this.nodeCreatedLabelStylesFixer = nodeCreatedLabelStylesFixer;\n this.toasterService = toasterService;\n this.dialog = dialog;\n this.router = router;\n this.mapNodesDataSource = mapNodesDataSource;\n this.mapLinksDataSource = mapLinksDataSource;\n this.mapDrawingsDataSource = mapDrawingsDataSource;\n this.mapSymbolsDataSource = mapSymbolsDataSource;\n this.mapSettingsService = mapSettingsService;\n this.ethernetLinkWidget = ethernetLinkWidget;\n this.serialLinkWidget = serialLinkWidget;\n this.bottomSheet = bottomSheet;\n this.notificationService = notificationService;\n this.themeService = themeService;\n this.title = title;\n this.nodeConsoleService = nodeConsoleService;\n this.symbolService = symbolService;\n this.cd = cd;\n this.cfr = cfr;\n this.injector = injector;\n this.nodes = [];\n this.links = [];\n this.drawings = [];\n this.symbols = [];\n this.isProjectMapMenuVisible = false;\n this.isConsoleVisible = true;\n this.isTopologySummaryVisible = true;\n this.isInterfaceLabelVisible = false;\n this.notificationsVisibility = false;\n this.layersVisibility = false;\n this.gridVisibility = false;\n this.toolbarVisibility = true;\n this.symbolScaling = true;\n this.tools = {\n selection: true,\n moving: false,\n draw_link: false,\n text_editing: true\n };\n this.inReadOnlyMode = false;\n this.scrollX = 0;\n this.scrollY = 0;\n this.scrollEnabled = false;\n this.isLightThemeEnabled = false;\n this.projectMapSubscription = new Subscription();\n }\n\n _createClass(ProjectMapComponent, [{\n key: \"ngOnInit\",\n value: function ngOnInit() {\n var _this = this;\n\n this.getSettings();\n this.progressService.activate();\n\n if (this.serverService.isServiceInitialized) {\n this.getData();\n } else {\n this.projectMapSubscription.add(this.serverService.serviceInitialized.subscribe(function (val) {\n if (val) _this.getData();\n }));\n }\n\n this.addSubscriptions();\n this.addKeyboardListeners();\n this.themeService.themeChanged.subscribe(function (value) {\n _this.themeService.getActualTheme() === 'light' ? _this.isLightThemeEnabled = true : _this.isLightThemeEnabled = false;\n });\n }\n }, {\n key: \"getSettings\",\n value: function getSettings() {\n var _this2 = this;\n\n this.themeService.getActualTheme() === 'light' ? this.isLightThemeEnabled = true : this.isLightThemeEnabled = false;\n this.cd.detectChanges();\n this.settings = this.settingsService.getAll();\n this.symbolScaling = this.mapSettingsService.getSymbolScaling();\n this.isConsoleVisible = this.mapSettingsService.isLogConsoleVisible;\n this.mapSettingsService.logConsoleSubject.subscribe(function (value) {\n return _this2.isConsoleVisible = value;\n });\n this.notificationsVisibility = localStorage.getItem('notificationsVisibility') === 'true' ? true : false;\n this.layersVisibility = localStorage.getItem('layersVisibility') === 'true' ? true : false;\n this.gridVisibility = localStorage.getItem('gridVisibility') === 'true' ? true : false;\n }\n }, {\n key: \"lazyLoadTopologySummary\",\n value: function lazyLoadTopologySummary() {\n return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {\n var _yield$import, TopologySummaryComponent;\n\n return _regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (!this.isTopologySummaryVisible) {\n _context.next = 10;\n break;\n }\n\n _context.next = 3;\n return import('../topology-summary/topology-summary.component');\n\n case 3:\n _yield$import = _context.sent;\n TopologySummaryComponent = _yield$import.TopologySummaryComponent;\n this.instance = this.topologySummaryContainer.createComponent(TopologySummaryComponent);\n this.instance.instance.server = this.server;\n this.instance.instance.project = this.project;\n _context.next = 11;\n break;\n\n case 10:\n if (this.instance) {\n if (this.instance.instance) {\n this.instance.instance.ngOnDestroy();\n this.instance.destroy();\n }\n }\n\n case 11:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n }\n }, {\n key: \"addSubscriptions\",\n value: function addSubscriptions() {\n var _this3 = this;\n\n this.projectMapSubscription.add(this.mapSettingsService.mapRenderedEmitter.subscribe(function (value) {\n if (_this3.scrollEnabled) _this3.centerCanvas();\n }));\n this.projectMapSubscription.add(this.drawingsDataSource.changes.subscribe(function (drawings) {\n _this3.drawings = drawings;\n\n _this3.mapChangeDetectorRef.detectChanges();\n }));\n this.projectMapSubscription.add(this.nodesDataSource.changes.subscribe(function (nodes) {\n if (!_this3.server) return;\n nodes.forEach(function (node) {\n return __awaiter(_this3, void 0, void 0, /*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {\n return _regeneratorRuntime.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n node.symbol_url = \"\".concat(this.server.protocol, \"//\").concat(this.server.host, \":\").concat(this.server.port, \"/v2/symbols/\").concat(node.symbol, \"/raw\"); // if (node.width == 0 && node.height == 0) {\n // let symbolDimensions = await this.symbolService.getDimensions(this.server, node.symbol).toPromise();\n // node.width = symbolDimensions.width;\n // node.height = symbolDimensions.height;\n // }\n\n case 1:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n });\n _this3.nodes = nodes;\n if (_this3.mapSettingsService.getSymbolScaling()) _this3.applyScalingOfNodeSymbols();\n\n _this3.mapChangeDetectorRef.detectChanges();\n }));\n this.projectMapSubscription.add(this.linksDataSource.changes.subscribe(function (links) {\n _this3.links = links;\n\n _this3.mapChangeDetectorRef.detectChanges();\n }));\n this.projectMapSubscription.add(this.projectWebServiceHandler.errorNotificationEmitter.subscribe(function (message) {\n _this3.showMessage({\n type: 'error',\n message: message\n });\n }));\n this.projectMapSubscription.add(this.projectWebServiceHandler.warningNotificationEmitter.subscribe(function (message) {\n _this3.showMessage({\n type: 'warning',\n message: message\n });\n }));\n this.projectMapSubscription.add(this.mapSettingsService.symbolScalingSubject.subscribe(function (value) {\n if (value) _this3.applyScalingOfNodeSymbols();\n }));\n }\n }, {\n key: \"applyScalingOfNodeSymbols\",\n value: function applyScalingOfNodeSymbols() {\n var _this4 = this;\n\n this.nodesDataSource.getItems().forEach(function (node) {\n if (node.height > _this4.symbolService.getMaximumSymbolSize()) {\n var newDimensions = _this4.symbolService.scaleDimensionsForNode(node);\n\n node.width = newDimensions.width;\n node.height = newDimensions.height;\n }\n });\n }\n }, {\n key: \"getData\",\n value: function getData() {\n var _this5 = this;\n\n var routeSub = this.route.paramMap.subscribe(function (paramMap) {\n var server_id = parseInt(paramMap.get('server_id'), 10);\n from(_this5.serverService.get(server_id)).pipe(mergeMap(function (server) {\n if (!server) _this5.router.navigate(['/servers']);\n _this5.server = server;\n return _this5.projectService.get(server, paramMap.get('project_id')).pipe(map(function (project) {\n return project;\n }));\n }), mergeMap(function (project) {\n _this5.project = project;\n if (!project) _this5.router.navigate(['/servers']);\n\n _this5.projectService.open(_this5.server, _this5.project.project_id);\n\n _this5.title.setTitle(_this5.project.name);\n\n _this5.isInterfaceLabelVisible = _this5.mapSettingsService.showInterfaceLabels;\n\n _this5.toggleShowTopologySummary(_this5.mapSettingsService.isTopologySummaryVisible);\n\n _this5.recentlyOpenedProjectService.setServerId(_this5.server.id.toString());\n\n _this5.recentlyOpenedProjectService.setProjectId(_this5.project.project_id);\n\n if (_this5.project.status === 'opened') {\n return new Observable(function (observer) {\n observer.next(_this5.project);\n });\n } else {\n return _this5.projectService.open(_this5.server, _this5.project.project_id);\n }\n })).subscribe(function (project) {\n _this5.onProjectLoad(project);\n }, function (error) {\n _this5.progressService.setError(error);\n }, function () {\n _this5.progressService.deactivate();\n });\n });\n this.projectMapSubscription.add(routeSub);\n }\n }, {\n key: \"addKeyboardListeners\",\n value: function addKeyboardListeners() {\n var _this6 = this;\n\n Mousetrap.bind('ctrl++', function (event) {\n event.preventDefault();\n\n _this6.zoomIn();\n });\n Mousetrap.bind('ctrl+-', function (event) {\n event.preventDefault();\n\n _this6.zoomOut();\n });\n Mousetrap.bind('ctrl+0', function (event) {\n event.preventDefault();\n\n _this6.resetZoom();\n });\n Mousetrap.bind('ctrl+a', function (event) {\n event.preventDefault();\n\n var allNodes = _this6.mapNodesDataSource.getItems();\n\n var allDrawings = _this6.mapDrawingsDataSource.getItems();\n\n var allLinks = _this6.mapLinksDataSource.getItems();\n\n var allSymbols = _this6.mapSymbolsDataSource.getItems();\n\n _this6.selectionManager.setSelected(allNodes.concat(allDrawings).concat(allLinks).concat(allSymbols));\n });\n Mousetrap.bind('ctrl+h', function (event) {\n event.preventDefault();\n _this6.toolbarVisibility = !_this6.toolbarVisibility;\n });\n Mousetrap.bind('ctrl+shift+a', function (event) {\n event.preventDefault();\n\n _this6.selectionManager.setSelected([]);\n });\n Mousetrap.bind('ctrl+shift+s', function (event) {\n event.preventDefault();\n\n _this6.router.navigate(['/server', _this6.server.id, 'preferences']);\n });\n Mousetrap.bind('del', function (event) {\n event.preventDefault();\n\n _this6.deleteItems();\n });\n }\n }, {\n key: \"deleteItems\",\n value: function deleteItems() {\n var _this7 = this;\n\n this.bottomSheet.open(ConfirmationBottomSheetComponent);\n var bottomSheetRef = this.bottomSheet._openedBottomSheetRef;\n bottomSheetRef.instance.message = 'Do you want to delete all selected objects?';\n var bottomSheetSubscription = bottomSheetRef.afterDismissed().subscribe(function (result) {\n if (result) {\n var selected = _this7.selectionManager.getSelected();\n\n selected.filter(function (item) {\n return item instanceof MapNode;\n }).forEach(function (item) {\n var node = _this7.mapNodeToNode.convert(item);\n\n _this7.nodeService.delete(_this7.server, node).subscribe(function (data) {\n _this7.toasterService.success('Node has been deleted');\n });\n });\n }\n });\n }\n }, {\n key: \"onProjectLoad\",\n value: function onProjectLoad(project) {\n var _this8 = this;\n\n this.readonly = this.projectService.isReadOnly(project);\n var subscription = this.projectService.nodes(this.server, project.project_id).pipe(mergeMap(function (nodes) {\n _this8.nodesDataSource.set(nodes);\n\n return _this8.projectService.links(_this8.server, project.project_id);\n }), mergeMap(function (links) {\n _this8.linksDataSource.set(links);\n\n return _this8.projectService.drawings(_this8.server, project.project_id);\n })).subscribe(function (drawings) {\n _this8.drawingsDataSource.set(drawings);\n\n _this8.setUpMapCallbacks();\n\n _this8.setUpProjectWS(project);\n\n _this8.progressService.deactivate();\n });\n this.projectMapSubscription.add(subscription);\n }\n }, {\n key: \"setUpProjectWS\",\n value: function setUpProjectWS(project) {\n var _this9 = this;\n\n this.projectws = new WebSocket(this.notificationService.projectNotificationsPath(this.server, project.project_id));\n\n this.projectws.onmessage = function (event) {\n _this9.projectWebServiceHandler.handleMessage(JSON.parse(event.data));\n };\n\n this.projectws.onerror = function (event) {\n _this9.toasterService.error(\"Connection to host lost. Error: \".concat(event.data));\n };\n }\n }, {\n key: \"setUpWS\",\n value: function setUpWS() {\n this.ws = new WebSocket(this.notificationService.notificationsPath(this.server));\n }\n }, {\n key: \"setUpMapCallbacks\",\n value: function setUpMapCallbacks() {\n var _this10 = this;\n\n if (!this.readonly) {\n this.toolsService.selectionToolActivation(true);\n }\n\n var onLinkContextMenu = this.linkWidget.onContextMenu.subscribe(function (eventLink) {\n var link = _this10.mapLinkToLink.convert(eventLink.link);\n\n _this10.contextMenu.openMenuForListOfElements([], [], [], [link], eventLink.event.pageY, eventLink.event.pageX);\n });\n var onEthernetLinkContextMenu = this.ethernetLinkWidget.onContextMenu.subscribe(function (eventLink) {\n var link = _this10.mapLinkToLink.convert(eventLink.link);\n\n _this10.contextMenu.openMenuForListOfElements([], [], [], [link], eventLink.event.pageY, eventLink.event.pageX);\n });\n var onSerialLinkContextMenu = this.serialLinkWidget.onContextMenu.subscribe(function (eventLink) {\n var link = _this10.mapLinkToLink.convert(eventLink.link);\n\n _this10.contextMenu.openMenuForListOfElements([], [], [], [link], eventLink.event.pageY, eventLink.event.pageX);\n });\n var onNodeContextMenu = this.nodeWidget.onContextMenu.subscribe(function (eventNode) {\n var node = _this10.mapNodeToNode.convert(eventNode.node);\n\n _this10.contextMenu.openMenuForNode(node, eventNode.event.pageY, eventNode.event.pageX);\n });\n var onDrawingContextMenu = this.drawingsWidget.onContextMenu.subscribe(function (eventDrawing) {\n var drawing = _this10.mapDrawingToDrawing.convert(eventDrawing.drawing);\n\n _this10.contextMenu.openMenuForDrawing(drawing, eventDrawing.event.pageY, eventDrawing.event.pageX);\n });\n var onLabelContextMenu = this.labelWidget.onContextMenu.subscribe(function (eventLabel) {\n var label = _this10.mapLabelToLabel.convert(eventLabel.label);\n\n var node = _this10.nodes.find(function (n) {\n return n.node_id === eventLabel.label.nodeId;\n });\n\n _this10.contextMenu.openMenuForLabel(label, node, eventLabel.event.screenY - 60, eventLabel.event.screenX);\n });\n var onInterfaceLabelContextMenu = this.interfaceLabelWidget.onContextMenu.subscribe(function (eventInterfaceLabel) {\n var linkNode = _this10.mapLinkNodeToLinkNode.convert(eventInterfaceLabel.interfaceLabel);\n\n var link = _this10.links.find(function (l) {\n return l.link_id === eventInterfaceLabel.interfaceLabel.linkId;\n });\n\n _this10.contextMenu.openMenuForInterfaceLabel(linkNode, link, eventInterfaceLabel.event.pageY, eventInterfaceLabel.event.pageX);\n });\n var onContextMenu = this.selectionTool.contextMenuOpened.subscribe(function (event) {\n var selectedItems = _this10.selectionManager.getSelected();\n\n if (selectedItems.length < 2 || !(event instanceof MouseEvent)) return;\n var drawings = [];\n var nodes = [];\n var labels = [];\n var links = [];\n selectedItems.forEach(function (elem) {\n if (elem instanceof MapDrawing) {\n drawings.push(_this10.mapDrawingToDrawing.convert(elem));\n } else if (elem instanceof MapNode) {\n nodes.push(_this10.mapNodeToNode.convert(elem));\n } else if (elem instanceof MapLabel) {\n labels.push(_this10.mapLabelToLabel.convert(elem));\n } else if (elem instanceof MapLink) {\n links.push(_this10.mapLinkToLink.convert(elem));\n }\n });\n\n _this10.contextMenu.openMenuForListOfElements(drawings, nodes, labels, links, event.pageY, event.pageX);\n });\n this.projectMapSubscription.add(onLinkContextMenu);\n this.projectMapSubscription.add(onEthernetLinkContextMenu);\n this.projectMapSubscription.add(onSerialLinkContextMenu);\n this.projectMapSubscription.add(onNodeContextMenu);\n this.projectMapSubscription.add(onDrawingContextMenu);\n this.projectMapSubscription.add(onContextMenu);\n this.projectMapSubscription.add(onLabelContextMenu);\n this.projectMapSubscription.add(onInterfaceLabelContextMenu);\n this.mapChangeDetectorRef.detectChanges();\n }\n }, {\n key: \"onNodeCreation\",\n value: function onNodeCreation(nodeAddedEvent) {\n var _this11 = this;\n\n if (!nodeAddedEvent) {\n return;\n }\n\n nodeAddedEvent.x = nodeAddedEvent.x / this.mapScaleService.getScale();\n nodeAddedEvent.y = nodeAddedEvent.y / this.mapScaleService.getScale();\n this.progressService.activate();\n this.nodeService.createFromTemplate(this.server, this.project, nodeAddedEvent.template, nodeAddedEvent.x, nodeAddedEvent.y, nodeAddedEvent.server).subscribe(function (node) {\n // if (nodeAddedEvent.name !== nodeAddedEvent.template.name) {\n // node.name = nodeAddedEvent.name;\n // this.nodeService.updateNode(this.server, node).subscribe(()=>{});\n // }\n _this11.projectService.nodes(_this11.server, _this11.project.project_id).subscribe(function (nodes) {\n nodes.filter(function (node) {\n return node.label.style === null;\n }).forEach(function (node) {\n var fixedNode = _this11.nodeCreatedLabelStylesFixer.fix(node);\n\n _this11.nodeService.updateLabel(_this11.server, node, fixedNode.label).subscribe();\n });\n\n _this11.nodesDataSource.set(nodes);\n\n nodeAddedEvent.numberOfNodes--;\n\n if (nodeAddedEvent.numberOfNodes > 0) {\n nodeAddedEvent.x = nodeAddedEvent.x + 50 < _this11.project.scene_width / 2 ? nodeAddedEvent.x + 50 : nodeAddedEvent.x;\n nodeAddedEvent.y = nodeAddedEvent.y + 50 < _this11.project.scene_height / 2 ? nodeAddedEvent.y + 50 : nodeAddedEvent.y;\n\n _this11.onNodeCreation(nodeAddedEvent);\n } else {\n _this11.progressService.deactivate();\n }\n });\n }, function (error) {\n _this11.toasterService.error(error.error.message);\n\n _this11.progressService.deactivate();\n });\n }\n }, {\n key: \"fitInView\",\n value: function fitInView() {\n this.drawings.forEach(function (drawing) {\n var splittedSvg = drawing.svg.split('\"');\n var height = parseInt(splittedSvg[1], 10);\n var width = parseInt(splittedSvg[3], 10);\n drawing.element = {\n width: width,\n height: height\n };\n });\n\n if (this.nodes.length === 0 && this.drawings.length === 0) {\n return;\n }\n\n var minX, maxX, minY, maxY;\n var borderedNodes = [];\n this.nodes.forEach(function (n) {\n var borderedNode = new BorderedNode();\n borderedNode.node = n;\n borderedNode.top = n.y;\n borderedNode.left = n.x;\n borderedNode.bottom = n.y + n.height;\n borderedNode.right = n.x + n.width;\n\n if (n.y + n.label.y < borderedNode.top) {\n borderedNode.top = n.y + n.label.y;\n }\n\n if (n.x + n.label.x < borderedNode.left) {\n borderedNode.left = n.x + n.label.x;\n }\n\n if (n.y + n.label.y > borderedNode.bottom) {\n borderedNode.bottom = n.y + n.label.y;\n }\n\n if (n.x + n.label.x > borderedNode.right) {\n borderedNode.right = n.x + n.label.x;\n }\n\n borderedNodes.push(borderedNode);\n });\n var nodeMinX = borderedNodes.sort(function (n, m) {\n return n.left - m.left;\n })[0];\n var nodeMaxX = borderedNodes.sort(function (n, m) {\n return n.right - m.right;\n })[borderedNodes.length - 1];\n var nodeMinY = borderedNodes.sort(function (n, m) {\n return n.top - m.top;\n })[0];\n var nodeMaxY = borderedNodes.sort(function (n, m) {\n return n.bottom - m.bottom;\n })[borderedNodes.length - 1];\n var borderedDrawings = [];\n this.drawings.forEach(function (n) {\n var borderedDrawing = new BorderedDrawing();\n borderedDrawing.drawing = n;\n borderedDrawing.top = n.y;\n borderedDrawing.left = n.x;\n borderedDrawing.bottom = n.y + n.element.height;\n borderedDrawing.right = n.x + n.element.width;\n borderedDrawings.push(borderedDrawing);\n });\n var drawingMinX = borderedDrawings.sort(function (n, m) {\n return n.left - m.left;\n })[0];\n var drawingMaxX = borderedDrawings.sort(function (n, m) {\n return n.right - m.right;\n })[borderedDrawings.length - 1];\n var drawingMinY = borderedDrawings.sort(function (n, m) {\n return n.top - m.top;\n })[0];\n var drawingMaxY = borderedDrawings.sort(function (n, m) {\n return n.bottom - m.bottom;\n })[borderedDrawings.length - 1];\n\n if (drawingMinX && nodeMinX) {\n if (nodeMinX.left < drawingMinX.left) {\n minX = nodeMinX.left;\n } else {\n minX = drawingMinX.left;\n }\n\n if (nodeMaxX.right > drawingMaxX.right) {\n maxX = nodeMaxX.right;\n } else {\n maxX = drawingMaxX.right;\n }\n\n if (nodeMinY.top < drawingMinY.top) {\n minY = nodeMinY.top;\n } else {\n minY = drawingMinY.top;\n }\n\n if (nodeMaxY.bottom > drawingMaxY.bottom) {\n maxY = nodeMaxY.bottom;\n } else {\n maxY = drawingMaxY.bottom;\n }\n } else if (nodeMinX && !drawingMinX) {\n minX = nodeMinX.left;\n maxX = nodeMaxX.right;\n minY = nodeMinY.top;\n maxY = nodeMaxY.bottom;\n } else if (drawingMinX && !nodeMinX) {\n minX = drawingMinX.left;\n maxX = drawingMaxX.right;\n minY = drawingMinY.top;\n maxY = drawingMaxY.bottom;\n } else {\n minX = 0;\n maxX = 0;\n minY = 0;\n maxY = 0;\n }\n\n var margin = 20;\n minX = minX - margin;\n maxX = maxX + margin;\n minY = minY - margin;\n maxY = maxY + margin;\n var windowWidth = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;\n var windowHeight = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;\n var widthOfAreaToShow = maxX - minX;\n var heightOfAreaToShow = maxY - minY;\n var widthToSceneWidthRatio = widthOfAreaToShow / windowWidth;\n var heightToSceneHeightRatio = heightOfAreaToShow / windowHeight;\n var scale = 1 / Math.max(widthToSceneWidthRatio, heightToSceneHeightRatio);\n\n if (scale !== this.mapScaleService.currentScale) {\n this.mapScaleService.setScale(scale);\n this.project.scene_width = this.project.scene_width * scale;\n this.project.scene_height = this.project.scene_height * scale;\n\n if (heightToSceneHeightRatio < widthOfAreaToShow) {\n this.scrollX = minX * scale - (windowWidth - widthOfAreaToShow * scale) / 2 + this.project.scene_width / 2;\n this.scrollY = minY * scale + this.project.scene_height / 2;\n } else {\n this.scrollX = minX * scale + this.project.scene_width / 2;\n this.scrollY = minY * scale - (windowHeight - heightOfAreaToShow * scale) / 2 + this.project.scene_height / 2;\n }\n } else {\n this.scrollX = minX * scale + this.project.scene_width / 2;\n this.scrollY = minY * scale + this.project.scene_height / 2;\n }\n\n this.scrollEnabled = true;\n }\n }, {\n key: \"centerCanvas\",\n value: function centerCanvas() {\n window.scrollTo(this.scrollX, this.scrollY);\n this.scrollEnabled = false;\n }\n }, {\n key: \"centerView\",\n value: function centerView() {\n if (this.project) {\n var scrollX = this.project.scene_width - document.documentElement.clientWidth > 0 ? (this.project.scene_width - document.documentElement.clientWidth) / 2 : 0;\n var scrollY = this.project.scene_height - document.documentElement.clientHeight > 0 ? (this.project.scene_height - document.documentElement.clientHeight) / 2 : 0;\n window.scrollTo(scrollX, scrollY);\n } else {\n this.toasterService.error('Please wait until all components are loaded.');\n }\n }\n }, {\n key: \"onDrawingSaved\",\n value: function onDrawingSaved() {\n this.projectMapMenuComponent.resetDrawToolChoice();\n }\n }, {\n key: \"readonly\",\n get: function get() {\n return this.inReadOnlyMode;\n },\n set: function set(value) {\n this.inReadOnlyMode = value;\n\n if (value) {\n this.tools.selection = false;\n this.toolsService.selectionToolActivation(false);\n } else {\n this.tools.selection = true;\n this.toolsService.selectionToolActivation(true);\n }\n }\n }, {\n key: \"toggleSymbolScaling\",\n value: function toggleSymbolScaling(value) {\n this.symbolScaling = value;\n this.mapSettingsService.setSymbolScaling(value);\n }\n }, {\n key: \"toggleMovingMode\",\n value: function toggleMovingMode() {\n this.tools.moving = !this.tools.moving;\n this.movingEventSource.movingModeState.emit(this.tools.moving);\n\n if (!this.readonly) {\n this.tools.selection = !this.tools.moving;\n this.toolsService.selectionToolActivation(this.tools.selection);\n }\n }\n }, {\n key: \"toggleDrawLineMode\",\n value: function toggleDrawLineMode() {\n this.tools.draw_link = !this.tools.draw_link;\n this.toolsService.drawLinkToolActivation(this.tools.draw_link);\n }\n }, {\n key: \"toggleShowInterfaceLabels\",\n value: function toggleShowInterfaceLabels(enabled) {\n this.isInterfaceLabelVisible = enabled;\n this.mapSettingsService.toggleShowInterfaceLabels(this.isInterfaceLabelVisible);\n this.mapSettingsService.mapRenderedEmitter.emit(true);\n }\n }, {\n key: \"toggleShowConsole\",\n value: function toggleShowConsole(visible) {\n this.isConsoleVisible = visible;\n this.mapSettingsService.toggleLogConsole(this.isConsoleVisible);\n }\n }, {\n key: \"toggleShowTopologySummary\",\n value: function toggleShowTopologySummary(visible) {\n this.isTopologySummaryVisible = visible;\n this.mapSettingsService.toggleTopologySummary(this.isTopologySummaryVisible);\n this.lazyLoadTopologySummary();\n }\n }, {\n key: \"toggleNotifications\",\n value: function toggleNotifications(visible) {\n this.notificationsVisibility = visible;\n\n if (this.notificationsVisibility) {\n localStorage.setItem('notificationsVisibility', 'true');\n } else {\n localStorage.removeItem('notificationsVisibility');\n }\n }\n }, {\n key: \"toggleLayers\",\n value: function toggleLayers(visible) {\n this.layersVisibility = visible;\n this.mapSettingsService.toggleLayers(visible);\n\n if (this.layersVisibility) {\n localStorage.setItem('layersVisibility', 'true');\n } else {\n localStorage.removeItem('layersVisibility');\n }\n\n this.mapChild.applyMapSettingsChanges();\n }\n }, {\n key: \"toggleGrid\",\n value: function toggleGrid(visible) {\n this.gridVisibility = visible;\n\n if (this.gridVisibility) {\n localStorage.setItem('gridVisibility', 'true');\n } else {\n localStorage.removeItem('gridVisibility');\n }\n\n this.mapChild.gridVisibility = this.gridVisibility ? 1 : 0;\n }\n }, {\n key: \"toggleSnapToGrid\",\n value: function toggleSnapToGrid(enabled) {\n this.project.snap_to_grid = enabled;\n }\n }, {\n key: \"showMessage\",\n value: function showMessage(msg) {\n if (this.notificationsVisibility) {\n if (msg.type === 'error') this.toasterService.error(msg.message);\n if (msg.type === 'warning') this.toasterService.warning(msg.message);\n }\n }\n }, {\n key: \"hideMenu\",\n value: function hideMenu() {\n this.projectMapMenuComponent.resetDrawToolChoice();\n this.isProjectMapMenuVisible = false;\n }\n }, {\n key: \"showMenu\",\n value: function showMenu() {\n this.isProjectMapMenuVisible = true;\n }\n }, {\n key: \"zoomIn\",\n value: function zoomIn() {\n this.mapScaleService.setScale(this.mapScaleService.getScale() + 0.1);\n }\n }, {\n key: \"zoomOut\",\n value: function zoomOut() {\n var currentScale = this.mapScaleService.getScale();\n\n if (currentScale - 0.1 > 0) {\n this.mapScaleService.setScale(currentScale - 0.1);\n }\n }\n }, {\n key: \"resetZoom\",\n value: function resetZoom() {\n this.mapScaleService.resetToDefault();\n }\n }, {\n key: \"addNewProject\",\n value: function addNewProject() {\n var dialogRef = this.dialog.open(AddBlankProjectDialogComponent, {\n width: '400px',\n autoFocus: false,\n disableClose: true\n });\n var instance = dialogRef.componentInstance;\n instance.server = this.server;\n }\n }, {\n key: \"saveProject\",\n value: function saveProject() {\n var dialogRef = this.dialog.open(SaveProjectDialogComponent, {\n width: '400px',\n autoFocus: false,\n disableClose: true\n });\n var instance = dialogRef.componentInstance;\n instance.server = this.server;\n instance.project = this.project;\n }\n }, {\n key: \"editProject\",\n value: function editProject() {\n var dialogRef = this.dialog.open(EditProjectDialogComponent, {\n width: '600px',\n autoFocus: false,\n disableClose: true\n });\n var instance = dialogRef.componentInstance;\n instance.server = this.server;\n instance.project = this.project;\n }\n }, {\n key: \"importProject\",\n value: function importProject() {\n var _this12 = this;\n\n var uuid = '';\n var dialogRef = this.dialog.open(ImportProjectDialogComponent, {\n width: '400px',\n autoFocus: false,\n disableClose: true\n });\n var instance = dialogRef.componentInstance;\n instance.server = this.server;\n var subscription = dialogRef.componentInstance.onImportProject.subscribe(function (projectId) {\n uuid = projectId;\n });\n dialogRef.afterClosed().subscribe(function () {\n subscription.unsubscribe();\n\n if (uuid) {\n _this12.bottomSheet.open(NavigationDialogComponent);\n\n var bottomSheetRef = _this12.bottomSheet._openedBottomSheetRef;\n bottomSheetRef.instance.projectMessage = 'imported project';\n var bottomSheetSubscription = bottomSheetRef.afterDismissed().subscribe(function (result) {\n if (result) {\n _this12.projectService.open(_this12.server, uuid).subscribe(function () {\n _this12.router.navigate(['/server', _this12.server.id, 'project', uuid]);\n });\n }\n });\n }\n });\n }\n }, {\n key: \"exportProject\",\n value: function exportProject() {\n if (this.nodes.filter(function (node) {\n return node.node_type === 'virtualbox';\n }).length > 0) {\n this.toasterService.error('Map with VirtualBox machines cannot be exported.');\n } else if (this.nodes.filter(function (node) {\n return node.status === 'started' && node.node_type === 'vpcs' || node.status === 'started' && node.node_type === 'virtualbox' || node.status === 'started' && node.node_type === 'vmware';\n }).length > 0) {\n this.toasterService.error('Project with running nodes cannot be exported.');\n } else {\n location.assign(this.projectService.getExportPath(this.server, this.project));\n }\n }\n }, {\n key: \"uploadImageFile\",\n value: function uploadImageFile(event) {\n this.readImageFile(event.target);\n }\n }, {\n key: \"readImageFile\",\n value: function readImageFile(fileInput) {\n var _this13 = this;\n\n var file = fileInput.files[0];\n var fileReader = new FileReader();\n var imageToUpload = new Image();\n\n fileReader.onloadend = function () {\n var image = fileReader.result;\n var svg = \"\\n\\n\");\n\n _this13.drawingService.add(_this13.server, _this13.project.project_id, -(imageToUpload.width / 2), -(imageToUpload.height / 2), svg).subscribe(function () {});\n };\n\n imageToUpload.onload = function () {\n fileReader.readAsDataURL(file);\n };\n\n imageToUpload.src = window.URL.createObjectURL(file);\n }\n }, {\n key: \"closeProject\",\n value: function closeProject() {\n var _this14 = this;\n\n this.bottomSheet.open(ConfirmationBottomSheetComponent);\n var bottomSheetRef = this.bottomSheet._openedBottomSheetRef;\n bottomSheetRef.instance.message = 'Do you want to close the project?';\n var bottomSheetSubscription = bottomSheetRef.afterDismissed().subscribe(function (result) {\n if (result) {\n _this14.projectService.close(_this14.server, _this14.project.project_id).subscribe(function () {\n _this14.router.navigate(['/server', _this14.server.id, 'projects']);\n });\n }\n });\n }\n }, {\n key: \"deleteProject\",\n value: function deleteProject() {\n var _this15 = this;\n\n this.bottomSheet.open(ConfirmationBottomSheetComponent);\n var bottomSheetRef = this.bottomSheet._openedBottomSheetRef;\n bottomSheetRef.instance.message = 'Do you want to delete the project?';\n var bottomSheetSubscription = bottomSheetRef.afterDismissed().subscribe(function (result) {\n if (result) {\n _this15.projectService.delete(_this15.server, _this15.project.project_id).subscribe(function () {\n _this15.router.navigate(['/server', _this15.server.id, 'projects']);\n });\n }\n });\n }\n }, {\n key: \"addNewTemplate\",\n value: function addNewTemplate() {\n var dialogRef = this.dialog.open(NewTemplateDialogComponent, {\n width: '1000px',\n maxHeight: '700px',\n autoFocus: false,\n disableClose: true\n });\n var instance = dialogRef.componentInstance;\n instance.server = this.server;\n instance.project = this.project;\n }\n }, {\n key: \"ngOnDestroy\",\n value: function ngOnDestroy() {\n this.nodeConsoleService.openConsoles = 0;\n this.title.setTitle('GNS3 Web UI');\n this.drawingsDataSource.clear();\n this.nodesDataSource.clear();\n this.linksDataSource.clear();\n\n if (this.projectws) {\n if (this.projectws.OPEN) this.projectws.close();\n }\n\n if (this.ws) {\n if (this.ws.OPEN) this.ws.close();\n }\n\n this.projectMapSubscription.unsubscribe();\n }\n }]);\n\n return ProjectMapComponent;\n}();\n\nProjectMapComponent.ɵfac = function ProjectMapComponent_Factory(t) {\n return new (t || ProjectMapComponent)(i0.ɵɵdirectiveInject(i1.ActivatedRoute), i0.ɵɵdirectiveInject(i2.ServerService), i0.ɵɵdirectiveInject(i3.ProjectService), i0.ɵɵdirectiveInject(i4.NodeService), i0.ɵɵdirectiveInject(i5.DrawingService), i0.ɵɵdirectiveInject(i6.ProgressService), i0.ɵɵdirectiveInject(i7.ProjectWebServiceHandler), i0.ɵɵdirectiveInject(i8.MapChangeDetectorRef), i0.ɵɵdirectiveInject(i9.NodeWidget), i0.ɵɵdirectiveInject(i10.DrawingsWidget), i0.ɵɵdirectiveInject(i11.LinkWidget), i0.ɵɵdirectiveInject(i12.LabelWidget), i0.ɵɵdirectiveInject(i13.InterfaceLabelWidget), i0.ɵɵdirectiveInject(i14.MapNodeToNodeConverter), i0.ɵɵdirectiveInject(i15.MapDrawingToDrawingConverter), i0.ɵɵdirectiveInject(i16.MapLabelToLabelConverter), i0.ɵɵdirectiveInject(i17.MapLinkToLinkConverter), i0.ɵɵdirectiveInject(i18.MapLinkNodeToLinkNodeConverter), i0.ɵɵdirectiveInject(i19.NodesDataSource), i0.ɵɵdirectiveInject(i20.LinksDataSource), i0.ɵɵdirectiveInject(i21.DrawingsDataSource), i0.ɵɵdirectiveInject(i22.SettingsService), i0.ɵɵdirectiveInject(i23.ToolsService), i0.ɵɵdirectiveInject(i24.SelectionManager), i0.ɵɵdirectiveInject(i25.SelectionTool), i0.ɵɵdirectiveInject(i26.RecentlyOpenedProjectService), i0.ɵɵdirectiveInject(i27.MovingEventSource), i0.ɵɵdirectiveInject(i28.MapScaleService), i0.ɵɵdirectiveInject(i29.NodeCreatedLabelStylesFixer), i0.ɵɵdirectiveInject(i30.ToasterService), i0.ɵɵdirectiveInject(i31.MatDialog), i0.ɵɵdirectiveInject(i1.Router), i0.ɵɵdirectiveInject(i32.MapNodesDataSource), i0.ɵɵdirectiveInject(i32.MapLinksDataSource), i0.ɵɵdirectiveInject(i32.MapDrawingsDataSource), i0.ɵɵdirectiveInject(i32.MapSymbolsDataSource), i0.ɵɵdirectiveInject(i33.MapSettingsService), i0.ɵɵdirectiveInject(i34.EthernetLinkWidget), i0.ɵɵdirectiveInject(i35.SerialLinkWidget), i0.ɵɵdirectiveInject(i36.MatBottomSheet), i0.ɵɵdirectiveInject(i37.NotificationService), i0.ɵɵdirectiveInject(i38.ThemeService), i0.ɵɵdirectiveInject(i39.Title), i0.ɵɵdirectiveInject(i40.NodeConsoleService), i0.ɵɵdirectiveInject(i41.SymbolService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i0.ComponentFactoryResolver), i0.ɵɵdirectiveInject(i0.Injector));\n};\n\nProjectMapComponent.ɵcmp = /*@__PURE__*/i0.ɵɵdefineComponent({\n type: ProjectMapComponent,\n selectors: [[\"app-project-map\"]],\n viewQuery: function ProjectMapComponent_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(ContextMenuComponent, 5);\n i0.ɵɵviewQuery(D3MapComponent, 5);\n i0.ɵɵviewQuery(ProjectMapMenuComponent, 5);\n i0.ɵɵviewQuery(_c0, 5, ViewContainerRef);\n }\n\n if (rf & 2) {\n var _t;\n\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.contextMenu = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.mapChild = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.projectMapMenuComponent = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.topologySummaryContainer = _t.first);\n }\n },\n decls: 3,\n vars: 1,\n consts: [[\"class\", \"project-map\", 3, \"ngClass\", 4, \"ngIf\"], [\"topologySummaryContainer\", \"\"], [1, \"project-map\", 3, \"ngClass\"], [3, \"server\", \"project\", \"symbols\", \"nodes\", \"links\", \"drawings\", \"width\", \"height\", \"show-interface-labels\", \"readonly\", \"nodeDragged\", \"drawingDragged\", \"onLinkCreated\", \"onDrawingResized\", 4, \"ngIf\"], [3, \"symbols\", \"nodes\", \"links\", \"drawings\", \"width\", \"height\", \"show-interface-labels\", \"selection-tool\", \"moving-tool\", \"draw-link-tool\", \"readonly\", 4, \"ngIf\"], [\"id\", \"project-titlebar\", 3, \"ngClass\"], [\"matTooltip\", \"Open menu\", \"matTooltipClass\", \"custom-tooltip\", \"mat-icon-button\", \"\", 1, \"gns3-button\", \"menu-button\", 3, \"matMenuTriggerFor\"], [\"svgIcon\", \"gns3\", 4, \"ngIf\"], [\"svgIcon\", \"gns3black\", 4, \"ngIf\"], [1, \"project-titlebar-controls\"], [\"class\", \"menu-button-group primary-controls\", 3, \"ngClass\", 4, \"ngIf\"], [1, \"menu-button-group\"], [3, \"server\", \"project\"], [3, \"project\", \"server\"], [\"matTooltip\", \"Toggle topology/servers summary\", \"matTooltipClass\", \"custom-tooltip\", \"mat-icon-button\", \"\", 3, \"ngClass\", \"click\"], [3, \"overlapTrigger\"], [\"mainMenu\", \"matMenu\"], [\"mat-menu-item\", \"\", 3, \"routerLink\"], [\"mat-menu-item\", \"\", \"routerLink\", \"/settings\"], [\"mat-menu-item\", \"\", 3, \"click\"], [\"mat-menu-item\", \"\", 3, \"matMenuTriggerFor\"], [\"projectMenu\", \"matMenu\"], [\"viewMenu\", \"matMenu\"], [1, \"options-item\"], [3, \"ngModel\", \"change\"], [\"id\", \"project-toolbar\", 3, \"ngClass\"], [1, \"section\"], [\"matTooltip\", \"Selection mode\", \"matTooltipClass\", \"custom-tooltip\", \"mat-icon-button\", \"\", 1, \"selection-button\", \"menu-button\", 3, \"color\", \"click\"], [\"matTooltip\", \"Pan workspace\", \"matTooltipClass\", \"custom-tooltip\", \"mat-icon-button\", \"\", 1, \"pan-button\", \"menu-button\", 3, \"color\", \"click\"], [\"matTooltip\", \"Zoom in\", \"matTooltipClass\", \"custom-tooltip\", \"mat-icon-button\", \"\", 1, \"zoom-button\", 3, \"click\"], [\"matTooltip\", \"Reset zoom\", \"matTooltipClass\", \"custom-tooltip\", \"mat-icon-button\", \"\", 1, \"reset-zoom-button\", 3, \"click\"], [\"matTooltip\", \"Zoom out\", \"matTooltipClass\", \"custom-tooltip\", \"mat-icon-button\", \"\", 1, \"zoom-button\", 3, \"click\"], [\"class\", \"section\", 4, \"ngIf\"], [3, \"links\", 4, \"ngIf\"], [3, \"server\"], [3, \"server\", \"project\", \"drawingSaved\"], [3, \"ngClass\"], [3, \"server\", \"project\", \"closeConsole\", 4, \"ngIf\"], [3, \"server\", \"project\", \"symbols\", \"nodes\", \"links\", \"drawings\", \"width\", \"height\", \"show-interface-labels\", \"readonly\", \"nodeDragged\", \"drawingDragged\", \"onLinkCreated\", \"onDrawingResized\"], [3, \"symbols\", \"nodes\", \"links\", \"drawings\", \"width\", \"height\", \"show-interface-labels\", \"selection-tool\", \"moving-tool\", \"draw-link-tool\", \"readonly\"], [\"svgIcon\", \"gns3\"], [\"svgIcon\", \"gns3black\"], [1, \"menu-button-group\", \"primary-controls\", 3, \"ngClass\"], [3, \"server\", \"project\", \"onNodeCreation\"], [\"matTooltip\", \"Add a link\", \"matTooltipClass\", \"custom-tooltip\", \"mat-icon-button\", \"\", 1, \"menu-button\", 3, \"ngClass\", \"color\", \"click\"], [3, \"links\"], [3, \"server\", \"project\", \"closeConsole\"]],\n template: function ProjectMapComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, ProjectMapComponent_div_0_Template, 156, 67, \"div\", 0);\n i0.ɵɵtemplate(1, ProjectMapComponent_ng_template_1_Template, 0, 0, \"ng-template\", null, 1, i0.ɵɵtemplateRefExtractor);\n }\n\n if (rf & 2) {\n i0.ɵɵproperty(\"ngIf\", ctx.project);\n }\n },\n directives: [i42.NgIf, i42.NgClass, i43.MatButton, i44.MatTooltip, i45.MatMenuTrigger, i46.NodesMenuComponent, i47.ContextMenuComponent, i48.MatIcon, i45.MatMenu, i45.MatMenuItem, i1.RouterLink, i49.ImportApplianceComponent, i50.MatCheckbox, i51.NgControlStatus, i51.NgModel, i52.ProjectMapMenuComponent, i53.ProgressComponent, i54.DrawingDraggedComponent, i55.DrawingResizedComponent, i56.InterfaceLabelDraggedComponent, i57.LinkCreatedComponent, i58.NodeDraggedComponent, i59.NodeLabelDraggedComponent, i60.TextAddedComponent, i61.TextEditedComponent, i62.D3MapComponent, i63.ExperimentalMapComponent, i64.TemplateComponent, i65.SnapshotMenuItemComponent, i66.DrawLinkToolComponent, i67.ConsoleWrapperComponent],\n styles: [\".wrapper {\\n height: 600px;\\n}\\n\\napp-root,\\napp-project-map,\\n.project-map,\\napp-map {\\n width: auto;\\n}\\n\\ng.node:hover {\\n background-color: #0097a7;\\n}\\n\\n.project-map {\\n background-color: #e8ecef;\\n}\\n\\n#project-titlebar {\\n position: fixed;\\n top: 0px;\\n left: 0px;\\n right: 0px;\\n height: 60px;\\n padding: 0px 20px;\\n background-color: #20313b;\\n display: flex;\\n justify-content: space-between;\\n align-items: center;\\n box-shadow: 3px 3px 10px rgba(0, 0, 0, 0.2);\\n z-index: 2;\\n}\\n\\n#project-titlebar .gns3-button {\\n position: relative;\\n top: -2px;\\n}\\n\\n#project-titlebar .gns3-button mat-icon {\\n width: 30px !important;\\n height: 30px !important;\\n}\\n\\n#project-titlebar .primary-controls {\\n border-right: 1px solid rgba(255, 255, 255, 0.3);\\n padding-right: 15px;\\n margin-right: 15px;\\n}\\n\\n#project-titlebar .primary-controls.lightTheme {\\n border-right: 1px solid black;\\n}\\n\\n#project-titlebar .menu-button-group {\\n display: flex;\\n align-items: center;\\n height: 24px;\\n}\\n\\n#project-titlebar .menu-button {\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n height: 36px;\\n width: 36px;\\n margin: 0px 8px;\\n border-radius: 18px;\\n background: none;\\n font-size: 20px;\\n}\\n\\n#project-titlebar .add-menu-button mat-icon {\\n font-size: 28px !important;\\n}\\n\\n#project-titlebar .selected {\\n background: rgba(0, 151, 167, 0.1);\\n}\\n\\n#project-titlebar .selected mat-icon {\\n color: #0097a7 !important;\\n}\\n\\n#project-titlebar .project-titlebar-controls {\\n display: flex;\\n align-items: center;\\n}\\n\\n#project-titlebar.lightTheme {\\n background-color: white !important;\\n}\\n\\n#project-titlebar.lightTheme .selected mat-icon {\\n color: #0097a7 !important;\\n}\\n\\n#project-toolbar {\\n position: fixed;\\n top: 60px;\\n left: 0px;\\n width: 50px;\\n margin: 20px;\\n background-color: #20313b;\\n border-radius: 6px;\\n box-shadow: 1px 1px 10px rgba(0, 0, 0, 0.2);\\n z-index: 2;\\n}\\n\\n#project-toolbar mat-icon {\\n font-size: 20px;\\n}\\n\\n#project-toolbar .menu-button {\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n height: 36px;\\n width: 36px;\\n border-radius: 18px;\\n background: none;\\n margin: 2px 0px;\\n}\\n\\n#project-toolbar .zoom-button {\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n height: 36px;\\n width: 36px;\\n border-radius: 18px;\\n background: none;\\n margin: 2px 0px;\\n color: white;\\n}\\n\\n#project-toolbar .zoom-button mat-icon {\\n font-size: 24px !important;\\n}\\n\\n#project-toolbar .reset-zoom-button {\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n height: 36px;\\n width: 36px;\\n border-radius: 18px;\\n background: none;\\n margin: 2px 0px;\\n color: white;\\n}\\n\\n#project-toolbar .reset-zoom-button mat-icon {\\n font-size: 18px !important;\\n}\\n\\n#project-toolbar .selection-button {\\n margin-bottom: 0px !important;\\n}\\n\\n#project-toolbar .snapshot-button mat-icon {\\n font-size: 16px;\\n}\\n\\n#project-toolbar .section {\\n display: flex;\\n flex-direction: column;\\n justify-content: center;\\n align-items: center;\\n border-top: 1px solid rgba(255, 255, 255, 0.3);\\n padding: 5px 0px;\\n}\\n\\n#project-toolbar .section:first-child {\\n border: none;\\n}\\n\\n#project-toolbar.lightTheme {\\n background-color: rgba(244, 248, 252, 0.95) !important;\\n}\\n\\n#project-toolbar.lightTheme .zoom-button {\\n opacity: 0.7;\\n color: black;\\n}\\n\\n#project-toolbar.lightTheme .reset-zoom-button {\\n opacity: 0.7;\\n color: black;\\n}\\n\\n#project-toolbar.lightTheme .section {\\n border-top: 1px solid rgba(0, 0, 0, 0.1);\\n}\\n\\n#project-toolbar.lightTheme .section:first-child {\\n border: none;\\n}\\n\\nimg {\\n filter: invert(1);\\n}\\n\\n.lightTheme {\\n color: black !important;\\n}\\n\\n.darkTheme {\\n color: white !important;\\n}\\n\\n#show-menu-wrapper {\\n position: fixed;\\n background: transparent;\\n top: 0px;\\n left: 92px;\\n background: #263238;\\n height: 72px;\\n padding-top: 16px;\\n}\\n\\n#show-menu-wrapper .arrow-button {\\n outline: 0 !important;\\n}\\n\\n.shadowed {\\n box-shadow: 0 4px 8px -4px rgba(0, 0, 0, 0.2), 0 6px 20px -20px rgba(0, 0, 0, 0.19);\\n}\\n\\n.non-visible {\\n display: none;\\n}\\n\\n#menu-wrapper {\\n position: fixed;\\n background: transparent;\\n top: 0px;\\n left: 92px;\\n right: 0px;\\n background: #263238;\\n height: 72px;\\n padding-top: 16px;\\n padding-bottom: 16px;\\n transition: 35s;\\n width: 0;\\n overflow: hidden;\\n transition: 0.15s;\\n box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);\\n display: flex;\\n}\\n\\n#menu-wrapper .menu-button {\\n outline: 0 !important;\\n transition: 0.5s;\\n margin-bottom: 16px;\\n width: 40px;\\n margin-right: 12px !important;\\n margin-left: 12px !important;\\n background: transparent;\\n padding: 0;\\n border: none;\\n background-color: transparent;\\n}\\n\\n#menu-wrapper .arrow-button {\\n outline: 0 !important;\\n transition: 0.5s;\\n margin-bottom: 16px;\\n}\\n\\n.extended {\\n width: 830px !important;\\n height: 100%;\\n overflow: hidden;\\n}\\n\\nmat-divider.divider {\\n height: 40px;\\n margin-left: 1px;\\n margin-right: 7px;\\n width: 10px;\\n color: gray;\\n}\\n\\n@-moz-document url-prefix() {\\n /** fixes gray background of drawing menu on Firefox **/\\n .mat-drawer-content {\\n display: inline !important;\\n }\\n}\\n\\n.shadow {\\n box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);\\n}\\n\\n.mat-drawer-backdrop.mat-drawer-shown {\\n background-color: transparent;\\n}\\n\\n.project-toolbar .mat-toolbar-multiple-rows {\\n width: auto !important;\\n}\\n\\n.loading-spinner {\\n position: absolute;\\n top: 50%;\\n width: 100px;\\n margin-left: -50px;\\n margin-top: -50px;\\n left: 50%;\\n}\\n\\nline.selected {\\n stroke: #0097a7 !important;\\n}\\n\\nsvg.map image:hover,\\nsvg.map image.chosen,\\ng.selected {\\n -moz-filter: grayscale(100%);\\n -ms-filter: grayscale(100%);\\n -o-filter: grayscale(100%);\\n filter: grayscale(100%);\\n filter: gray;\\n filter: url(\\\"#grayscale\\\");\\n /* Chrome doesn't support CSS filters on SVG */\\n}\\n\\npath.selected {\\n stroke: darkred;\\n}\\n\\n.selected > .interface_label_border {\\n stroke: black;\\n fill: none;\\n}\\n\\n.selection-line-tool .selection {\\n fill: #7ccbe1;\\n stroke: #66aec2;\\n fill-opacity: 0.3;\\n stroke-opacity: 0.7;\\n stroke-width: 1;\\n stroke-dasharray: 5, 5;\\n}\\n\\ng.node text,\\n.noselect {\\n -webkit-touch-callout: none;\\n -webkit-user-select: none;\\n user-select: none;\\n}\\n\\n/* Disable outline after button click */\\n\\n.project-toolbar button {\\n outline: 0;\\n border: none;\\n -moz-outline-style: none;\\n}\\n\\n.options-item {\\n padding-left: 15px;\\n padding-right: 15px;\\n}\\n\\n.context-menu-items .mat-menu-item {\\n line-height: 24px !important;\\n height: 24px !important;\\n font-size: 13px !important;\\n padding: 0 6px;\\n outline: none !important;\\n}\\n\\n.context-menu-items .mat-menu-item .mat-icon {\\n margin-right: 3px;\\n}\\n\\n.context-menu-items .mat-menu-item:focus {\\n background: none;\\n}\\n\\n.visible {\\n display: none;\\n}\\n\\nmat-menu-panel {\\n min-height: 0px;\\n}\\n\\n.unmarked {\\n color: white !important;\\n}\\n\\n.unmarkedLight {\\n color: black !important;\\n}\\n\\n.marked {\\n color: #0097a7 !important;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInByb2plY3QtbWFwLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsYUFBQTtBQUNGOztBQUVBOzs7O0VBSUUsV0FBQTtBQUNGOztBQUVBO0VBQ0UseUJBQUE7QUFDRjs7QUFFQTtFQUNFLHlCQUFBO0FBQ0Y7O0FBRUE7RUFDRSxlQUFBO0VBQ0EsUUFBQTtFQUNBLFNBQUE7RUFDQSxVQUFBO0VBQ0EsWUFBQTtFQUNBLGlCQUFBO0VBQ0EseUJBQUE7RUFDQSxhQUFBO0VBQ0EsOEJBQUE7RUFDQSxtQkFBQTtFQUNBLDJDQUFBO0VBQ0EsVUFBQTtBQUNGOztBQUNFO0VBQ0Usa0JBQUE7RUFDQSxTQUFBO0FBQ0o7O0FBQ0k7RUFDRSxzQkFBQTtFQUNBLHVCQUFBO0FBQ047O0FBR0U7RUFDRSxnREFBQTtFQUNBLG1CQUFBO0VBQ0Esa0JBQUE7QUFESjs7QUFHSTtFQUNFLDZCQUFBO0FBRE47O0FBS0U7RUFDRSxhQUFBO0VBQ0EsbUJBQUE7RUFDQSxZQUFBO0FBSEo7O0FBTUU7RUFDRSxhQUFBO0VBQ0EsdUJBQUE7RUFDQSxtQkFBQTtFQUNBLFlBQUE7RUFDQSxXQUFBO0VBQ0EsZUFBQTtFQUNBLG1CQUFBO0VBQ0EsZ0JBQUE7RUFDQSxlQUFBO0FBSko7O0FBT0U7RUFDRSwwQkFBQTtBQUxKOztBQVFFO0VBQ0Usa0NBQUE7QUFOSjs7QUFRSTtFQUNFLHlCQUFBO0FBTk47O0FBVUU7RUFDRSxhQUFBO0VBQ0EsbUJBQUE7QUFSSjs7QUFXRTtFQUNFLGtDQUFBO0FBVEo7O0FBV0k7RUFDRSx5QkFBQTtBQVROOztBQWNBO0VBQ0UsZUFBQTtFQUNBLFNBQUE7RUFDQSxTQUFBO0VBQ0EsV0FBQTtFQUNBLFlBQUE7RUFDQSx5QkFBQTtFQUNBLGtCQUFBO0VBQ0EsMkNBQUE7RUFDQSxVQUFBO0FBWEY7O0FBYUU7RUFDRSxlQUFBO0FBWEo7O0FBY0U7RUFDRSxhQUFBO0VBQ0EsdUJBQUE7RUFDQSxtQkFBQTtFQUNBLFlBQUE7RUFDQSxX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Rjs7QUFnQ0E7RUFDRSxrQkFBQTtFQUNBLG1CQUFBO0FBN0JGOztBQWdDQTtFQUNFLDRCQUFBO0VBQ0EsdUJBQUE7RUFDQSwwQkFBQTtFQUNBLGNBQUE7RUFDQSx3QkFBQTtBQTdCRjs7QUFnQ0E7RUFDRSxpQkFBQTtBQTdCRjs7QUFnQ0E7RUFDRSxnQkFBQTtBQTdCRjs7QUFnQ0E7RUFDRSxhQUFBO0FBN0JGOztBQWdDQTtFQUNFLGVBQUE7QUE3QkY7O0FBZ0NBO0VBQ0UsdUJBQUE7QUE3QkY7O0FBZ0NBO0VBQ0UsdUJBQUE7QUE3QkY7O0FBZ0NBO0VBQ0UseUJBQUE7QUE3QkYiLCJmaWxlIjoicHJvamVjdC1tYXAuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIud3JhcHBlciB7XHJcbiAgaGVpZ2h0OiA2MDBweDtcclxufVxyXG5cclxuYXBwLXJvb3QsXHJcbmFwcC1wcm9qZWN0LW1hcCxcclxuLnByb2plY3QtbWFwLFxyXG5hcHAtbWFwIHtcclxuICB3aWR0aDogYXV0bztcclxufVxyXG5cclxuZy5ub2RlOmhvdmVyIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA5N2E3O1xyXG59XHJcblxyXG4ucHJvamVjdC1tYXAge1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICNlOGVjZWY7XHJcbn1cclxuXHJcbiNwcm9qZWN0LXRpdGxlYmFyIHtcclxuICBwb3NpdGlvbjogZml4ZWQ7XHJcbiAgdG9wOiAwcHg7XHJcbiAgbGVmdDogMHB4O1xyXG4gIHJpZ2h0OiAwcHg7XHJcbiAgaGVpZ2h0OiA2MHB4O1xyXG4gIHBhZGRpbmc6IDBweCAyMHB4O1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICMyMDMxM2I7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICBib3gtc2hhZG93OiAzcHggM3B4IDEwcHggcmdiYSgwLCAwLCAwLCAwLjIpO1xyXG4gIHotaW5kZXg6IDI7XHJcblxyXG4gIC5nbnMzLWJ1dHRvbiB7XHJcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICB0b3A6IC0ycHg7XHJcblxyXG4gICAgbWF0LWljb24ge1xyXG4gICAgICB3aWR0aDogMzBweCAhaW1wb3J0YW50O1xyXG4gICAgICBoZWlnaHQ6IDMwcHggIWltcG9ydGFudDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5wcmltYXJ5LWNvbnRyb2xzIHtcclxuICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zKTtcclxuICAgIHBhZGRpbmctcmlnaHQ6IDE1cHg7XHJcbiAgICBtYXJnaW4tcmlnaHQ6IDE1cHg7XHJcblxyXG4gICAgJi5saWdodFRoZW1lIHtcclxuICAgICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgYmxhY2s7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAubWVudS1idXR0b24tZ3JvdXAge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICBoZWlnaHQ6IDI0cHg7XHJcbiAgfVxyXG5cclxuICAubWVudS1idXR0b24ge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgIGhlaWdodDogMzZweDtcclxuICAgIHdpZHRoOiAzNnB4O1xyXG4gICAgbWFyZ2luOiAwcHggOHB4O1xyXG4gICAgYm9yZGVyLXJhZGl1czogMThweDtcclxuICAgIGJhY2tncm91bmQ6IG5vbmU7XHJcbiAgICBmb250LXNpemU6IDIwcHg7XHJcbiAgfVxyXG5cclxuICAuYWRkLW1lbnUtYnV0dG9uIG1hdC1pY29uIHtcclxuICAgIGZvbnQtc2l6ZTogMjhweCAhaW1wb3J0YW50O1xyXG4gIH1cclxuXHJcbiAgLnNlbGVjdGVkIHtcclxuICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMTUxLCAxNjcsIDAuMSk7XHJcblxyXG4gICAgbWF0LWljb24ge1xyXG4gICAgICBjb2xvcjogIzAwOTdhNyAhaW1wb3J0YW50O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLnByb2plY3QtdGl0bGViYXItY29udHJvbHMge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgfVxyXG5cclxuICAmLmxpZ2h0VGhlbWUge1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGUgIWltcG9ydGFudDtcclxuXHJcbiAgICAuc2VsZWN0ZWQgbWF0LWljb24ge1xyXG4gICAgICBjb2xvcjogIzAwOTdhNyAhaW1wb3J0YW50O1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuI3Byb2plY3QtdG9vbGJhciB7XHJcbiAgcG9zaXRpb246IGZpeGVkO1xyXG4gIHRvcDogNjBweDtcclxuICBsZWZ0OiAwcHg7XHJcbiAgd2lkdGg6IDUwcHg7XHJcbiAgbWFyZ2luOiAyMHB4O1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICMyMDMxM2I7XHJcbiAgYm9yZGVyLXJhZGl1czogNnB4O1xyXG4gIGJveC1zaGFkb3c6IDFweCAxcHggMTBweCByZ2JhKDAsIDAsIDAsIDAuMik7XHJcbiAgei1pbmRleDogMjtcclxuXHJcbiAgbWF0LWljb24ge1xyXG4gICAgZm9udC1zaXplOiAyMHB4O1xyXG4gIH1cclxuXHJcbiAgLm1lbnUtYnV0dG9uIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICBoZWlnaHQ6IDM2cHg7XHJcbiAgICB3aWR0aDogMzZweDtcclxuICAgIGJvcmRlci1yYWRpdXM6IDE4cHg7XHJcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xyXG4gICAgbWFyZ2luOiAycHggMHB4O1xyXG4gIH1cclxuXHJcbiAgLnpvb20tYnV0dG9uIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICBoZWlnaHQ6IDM2cHg7XHJcbiAgICB3aWR0aDogMzZweDtcclxuICAgIGJvcmRlci1yYWRpdXM6IDE4cHg7XHJcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xyXG4gICAgbWFyZ2luOiAycHggMHB4O1xyXG4gICAgY29sb3I6IHdoaXRlO1xyXG5cclxuICAgIG1hdC1pY29uIHtcclxuICAgICAgZm9udC1zaXplOiAyNHB4ICFpbXBvcnRhbnQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAucmVzZXQtem9vbS1idXR0b24ge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgIGhlaWdodDogMzZweDtcclxuICAgIHdpZHRoOiAzNnB4O1xyXG4gICAgYm9yZGVyLXJhZGl1czogMThweDtcclxuICAgIGJhY2tncm91bmQ6IG5vbmU7XHJcbiAgICBtYXJnaW46IDJweCAwcHg7XHJcbiAgICBjb2xvcjogd2hpdGU7XHJcblxyXG4gICAgbWF0LWljb24ge1xyXG4gICAgICBmb250LXNpemU6IDE4cHggIWltcG9ydGFudDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5zZWxlY3Rpb24tYnV0dG9uIHtcclxuICAgIG1hcmdpbi1ib3R0b206IDBweCAhaW1wb3J0YW50O1xyXG4gIH1cclxuXHJcbiAgLnNuYXBzaG90LWJ1dHRvbiBtYXQtaWNvbiB7XHJcbiAgICBmb250LXNpemU6IDE2cHg7XHJcbiAgfVxyXG5cclxuICAuc2VjdGlvbiB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMyk7XHJcbiAgICBwYWRkaW5nOiA1cHggMHB4O1xyXG5cclxuICAgICY6Zmlyc3QtY2hpbGQge1xyXG4gICAgICBib3JkZXI6IG5vbmU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmLmxpZ2h0VGhlbWUge1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNDQsIDI0OCwgMjUyLCAwLjk1KSAhaW1wb3J0YW50O1xyXG5cclxuICAgIC56b29tLWJ1dHRvbiB7XHJcbiAgICAgIG9wYWNpdHk6IDAuNztcclxuICAgICAgY29sb3I6IGJsYWNrO1xyXG4gICAgfVxyXG5cclxuICAgIC5yZXNldC16b29tLWJ1dHRvbiB7XHJcbiAgICAgIG9wYWNpdHk6IDAuNztcclxuICAgICAgY29sb3I6IGJsYWNrO1xyXG4gICAgfVxyXG5cclxuICAgIC5zZWN0aW9uIHtcclxuICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4xKTtcclxuXHJcbiAgICAgICY6Zmlyc3QtY2hpbGQge1xyXG4gICAgICAgIGJvcmRlcjogbm9uZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuaW1nIHtcclxuICAtd2Via2l0LWZpbHRlcjogaW52ZXJ0KDEpO1xyXG4gIGZpbHRlcjogaW52ZXJ0KDEpO1xyXG59XHJcblxyXG4ubGlnaHRUaGVtZSB7XHJcbiAgY29sb3I6IGJsYWNrICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi5kYXJrVGhlbWUge1xyXG4gIGNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4jc2hvdy1tZW51LXdyYXBwZXIge1xyXG4gIHBvc2l0aW9uOiBmaXhlZDtcclxuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcclxuICB0b3A6IDBweDtcclxuICBsZWZ0OiA5MnB4O1xyXG4gIGJhY2tncm91bmQ6ICMyNjMyMzg7XHJcbiAgaGVpZ2h0OiA3MnB4O1xyXG4gIHBhZGRpbmctdG9wOiAxNnB4O1xyXG5cclxuICAuYXJyb3ctYnV0dG9uIHtcclxuICAgIG91dGxpbmU6IDAgIWltcG9ydGFudDtcclxuICB9XHJcbn1cclxuXHJcbi5zaGFkb3dlZCB7XHJcbiAgYm94LXNoYWRvdzogMCA0cHggOHB4IC00cHggcmdiYSgwLCAwLCAwLCAwLjIpLCAwIDZweCAyMHB4IC0yMHB4IHJnYmEoMCwgMCwgMCwgMC4xOSk7XHJcbn1cclxuXHJcbi5ub24tdmlzaWJsZSB7XHJcbiAgZGlzcGxheTogbm9uZTtcclxufVxyXG5cclxuI21lbnUtd3JhcHBlciB7XHJcbiAgcG9zaXRpb246IGZpeGVkO1xyXG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xyXG4gIHRvcDogMHB4O1xyXG4gIGxlZnQ6IDkycHg7XHJcbiAgcmlnaHQ6IDBweDtcclxuICBiYWNrZ3JvdW5kOiAjMjYzMjM4O1xyXG4gIGhlaWdodDogNzJweDtcclxuICBwYWRkaW5nLXRvcDogMTZweDtcclxuICBwYWRkaW5nLWJvdHRvbTogMTZweDtcclxuICB0cmFuc2l0aW9uOiAzNXM7XHJcbiAgd2lkdGg6IDA7XHJcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICB0cmFuc2l0aW9uOiAwLjE1cztcclxuICBib3gtc2hhZG93OiAwIDRweCA4cHggMCByZ2JhKDAsIDAsIDAsIDAuMiksIDAgNnB4IDIwcHggMCByZ2JhKDAsIDAsIDAsIDAuMTkpO1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcblxyXG4gIC5tZW51LWJ1dHRvbiB7XHJcbiAgICBvdXRsaW5lOiAwICFpbXBvcnRhbnQ7XHJcbiAgICB0cmFuc2l0aW9uOiAwLjVzO1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMTZweDtcclxuICAgIHdpZHRoOiA0MHB4O1xyXG4gICAgbWFyZ2luLXJpZ2h0OiAxMnB4ICFpbXBvcnRhbnQ7XHJcbiAgICBtYXJnaW4tbGVmdDogMTJweCAhaW1wb3J0YW50O1xyXG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XHJcbiAgICBwYWRkaW5nOiAwO1xyXG4gICAgYm9yZGVyOiBub25lO1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiAgfVxyXG5cclxuICAuYXJyb3ctYnV0dG9uIHtcclxuICAgIG91dGxpbmU6IDAgIWltcG9ydGFudDtcclxuICAgIHRyYW5zaXRpb246IDAuNXM7XHJcbiAgICBtYXJnaW4tYm90dG9tOiAxNnB4O1xyXG4gIH1cclxufVxyXG5cclxuLmV4dGVuZGVkIHtcclxuICB3aWR0aDogODMwcHggIWltcG9ydGFudDtcclxuICBoZWlnaHQ6IDEwMCU7XHJcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcclxufVxyXG5cclxubWF0LWRpdmlkZXIuZGl2aWRlciB7XHJcbiAgaGVpZ2h0OiA0MHB4O1xyXG4gIG1hcmdpbi1sZWZ0OiAxcHg7XHJcbiAgbWFyZ2luLXJpZ2h0OiA3cHg7XHJcbiAgd2lkdGg6IDEwcHg7XHJcbiAgY29sb3I6IGdyYXk7XHJcbn1cclxuXHJcbkAtbW96LWRvY3VtZW50IHVybC1wcmVmaXgoKSB7XHJcbiAgLyoqIGZpeGVzIGdyYXkgYmFja2dyb3VuZCBvZiBkcmF3aW5nIG1lbnUgb24gRmlyZWZveCAqKi9cclxuICAubWF0LWRyYXdlci1jb250ZW50IHtcclxuICAgIGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50O1xyXG4gIH1cclxufVxyXG5cclxuLnNoYWRvdyB7XHJcbiAgYm94LXNoYWRvdzogMCA0cHggOHB4IDAgcmdiYSgwLCAwLCAwLCAwLjIpLCAwIDZweCAyMHB4IDAgcmdiYSgwLCAwLCAwLCAwLjE5KTtcclxufVxyXG5cclxuLm1hdC1kcmF3ZXItYmFja2Ryb3AubWF0LWRyYXdlci1zaG93biB7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbn1cclxuXHJcbi5wcm9qZWN0LXRvb2xiYXIgLm1hdC10b29sYmFyLW11bHRpcGxlLXJvd3Mge1xyXG4gIHdpZHRoOiBhdXRvICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi5sb2FkaW5nLXNwaW5uZXIge1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICB0b3A6IDUwJTtcclxuICB3aWR0aDogMTAwcHg7XHJcbiAgbWFyZ2luLWxlZnQ6IC01MHB4O1xyXG4gIG1hcmdpbi10b3A6IC01MHB4O1xyXG4gIGxlZnQ6IDUwJTtcclxufVxyXG5cclxubGluZS5zZWxlY3RlZCB7XHJcbiAgc3Ryb2tlOiAjMDA5N2E3ICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbnN2Zy5tYXAgaW1hZ2U6aG92ZXIsXHJcbnN2Zy5tYXAgaW1hZ2UuY2hvc2VuLFxyXG5nLnNlbGVjdGVkIHtcclxuICAtd2Via2l0LWZpbHRlcjogZ3JheXNjYWxlKDEwMCUpO1xyXG4gIC1tb3otZmlsdGVyOiBncmF5c2NhbGUoMTAwJSk7XHJcbiAgLW1zLWZpbHRlcjogZ3JheXNjYWxlKDEwMCUpO1xyXG4gIC1vLWZpbHRlcjogZ3JheXNjYWxlKDEwMCUpO1xyXG4gIGZpbHRlcjogZ3JheXNjYWxlKDEwMCUpO1xyXG4gIGZpbHRlcjogZ3JheTtcclxuICBmaWx0ZXI6IHVybCgnI2dyYXlzY2FsZScpOyAvKiBDaHJvbWUgZG9lc24ndCBzdXBwb3J0IENTUyBmaWx0ZXJzIG9uIFNWRyAqL1xyXG59XHJcblxyXG5wYXRoLnNlbGVjdGVkIHtcclxuICBzdHJva2U6IGRhcmtyZWQ7XHJcbn1cclxuXHJcbi5zZWxlY3RlZCA+IC5pbnRlcmZhY2VfbGFiZWxfYm9yZGVyIHtcclxuICBzdHJva2U6IGJsYWNrO1xyXG4gIGZpbGw6IG5vbmU7XHJcbn1cclxuXHJcbi5zZWxlY3Rpb24tbGluZS10b29sIC5zZWxlY3Rpb24ge1xyXG4gIGZpbGw6ICM3Y2NiZTE7XHJcbiAgc3Ryb2tlOiAjNjZhZWMyO1xyXG4gIGZpbGwtb3BhY2l0eTogMC4zO1xyXG4gIHN0cm9rZS1vcGFjaXR5OiAwLjc7XHJcbiAgc3Ryb2tlLXdpZHRoOiAxO1xyXG4gIHN0cm9rZS1kYXNoYXJyYXk6IDUsIDU7XHJcbn1cclxuXHJcbmcubm9kZSB0ZXh0LFxyXG4ubm9zZWxlY3Qge1xyXG4gIC13ZWJraXQtdG91Y2gtY2FsbG91dDogbm9uZTtcclxuICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lO1xyXG4gIC1raHRtbC11c2VyLXNlbGVjdDogbm9uZTtcclxuICAtbW96LXVzZXItc2VsZWN0OiBub25lO1xyXG4gIC1tcy11c2VyLXNlbGVjdDogbm9uZTtcclxuICB1c2VyLXNlbGVjdDogbm9uZTtcclxufVxyXG5cclxuLyogRGlzYWJsZSBvdXRsaW5lIGFmdGVyIGJ1dHRvbiBjbGljayAqL1xyXG4ucHJvamVjdC10b29sYmFyIGJ1dHRvbiB7XHJcbiAgb3V0bGluZTogMDtcclxuICBib3JkZXI6IG5vbmU7XHJcbiAgLW1vei1vdXRsaW5lLXN0eWxlOiBub25lO1xyXG59XHJcblxyXG4ub3B0aW9ucy1pdGVtIHtcclxuICBwYWRkaW5nLWxlZnQ6IDE1cHg7XHJcbiAgcGFkZGluZy1yaWdodDogMTVweDtcclxufVxyXG5cclxuLmNvbnRleHQtbWVudS1pdGVtcyAubWF0LW1lbnUtaXRlbSB7XHJcbiAgbGluZS1oZWlnaHQ6IDI0cHggIWltcG9ydGFudDtcclxuICBoZWlnaHQ6IDI0cHggIWltcG9ydGFudDtcclxuICBmb250LXNpemU6IDEzcHggIWltcG9ydGFudDtcclxuICBwYWRkaW5nOiAwIDZweDtcclxuICBvdXRsaW5lOiBub25lICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi5jb250ZXh0LW1lbnUtaXRlbXMgLm1hdC1tZW51LWl0ZW0gLm1hdC1pY29uIHtcclxuICBtYXJnaW4tcmlnaHQ6IDNweDtcclxufVxyXG5cclxuLmNvbnRleHQtbWVudS1pdGVtcyAubWF0LW1lbnUtaXRlbTpmb2N1cyB7XHJcbiAgYmFja2dyb3VuZDogbm9uZTtcclxufVxyXG5cclxuLnZpc2libGUge1xyXG4gIGRpc3BsYXk6IG5vbmU7XHJcbn1cclxuXHJcbm1hdC1tZW51LXBhbmVsIHtcclxuICBtaW4taGVpZ2h0OiAwcHg7XHJcbn1cclxuXHJcbi51bm1hcmtlZCB7XHJcbiAgY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi51bm1hcmtlZExpZ2h0IHtcclxuICBjb2xvcjogYmxhY2sgIWltcG9ydGFudDtcclxufVxyXG5cclxuLm1hcmtlZCB7XHJcbiAgY29sb3I6ICMwMDk3YTcgIWltcG9ydGFudDtcclxufVxyXG4iXX0= */\"],\n encapsulation: 2\n});\nexport var BorderedNode = function BorderedNode() {\n _classCallCheck(this, BorderedNode);\n};\nexport var BorderedDrawing = function BorderedDrawing() {\n _classCallCheck(this, BorderedDrawing);\n};","map":{"version":3,"sources":["C:/Users/piotr.pekala/Desktop/gns3-web-ui/src/app/components/project-map/project-map.component.ts"],"names":["__awaiter","ViewContainerRef","Mousetrap","from","Observable","Subscription","map","mergeMap","D3MapComponent","MapDrawing","MapLabel","MapLink","MapNode","AddBlankProjectDialogComponent","ConfirmationBottomSheetComponent","EditProjectDialogComponent","ImportProjectDialogComponent","NavigationDialogComponent","SaveProjectDialogComponent","ContextMenuComponent","NewTemplateDialogComponent","ProjectMapMenuComponent","i0","i1","i2","i3","i4","i5","i6","i7","i8","i9","i10","i11","i12","i13","i14","i15","i16","i17","i18","i19","i20","i21","i22","i23","i24","i25","i26","i27","i28","i29","i30","i31","i32","i33","i34","i35","i36","i37","i38","i39","i40","i41","i42","i43","i44","i45","i46","i47","i48","i49","i50","i51","i52","i53","i54","i55","i56","i57","i58","i59","i60","i61","i62","i63","i64","i65","i66","i67","_c0","ProjectMapComponent_div_0_app_d3_map_1_Template","rf","ctx","_r15","ɵɵgetCurrentView","ɵɵelementStart","ɵɵlistener","ProjectMapComponent_div_0_app_d3_map_1_Template_app_d3_map_nodeDragged_0_listener","$event","ɵɵrestoreView","ctx_r14","ɵɵnextContext","onNodeDragged","ProjectMapComponent_div_0_app_d3_map_1_Template_app_d3_map_drawingDragged_0_listener","ctx_r16","onDrawingDragged","ProjectMapComponent_div_0_app_d3_map_1_Template_app_d3_map_onLinkCreated_0_listener","ctx_r17","onLinkCreated","ProjectMapComponent_div_0_app_d3_map_1_Template_app_d3_map_onDrawingResized_0_listener","ctx_r18","onDrawingResized","ɵɵelementEnd","ctx_r3","ɵɵproperty","server","project","symbols","nodes","links","drawings","scene_width","scene_height","isInterfaceLabelVisible","inReadOnlyMode","ProjectMapComponent_div_0_app_experimental_map_2_Template","ɵɵelement","ctx_r4","tools","selection","moving","draw_link","ProjectMapComponent_div_0_mat_icon_5_Template","ProjectMapComponent_div_0_mat_icon_6_Template","_c1","a0","lightTheme","_c2","selected","ProjectMapComponent_div_0_div_8_Template","_r20","ProjectMapComponent_div_0_div_8_Template_app_template_onNodeCreation_1_listener","ctx_r19","onNodeCreation","ProjectMapComponent_div_0_div_8_Template_button_click_2_listener","ctx_r21","toggleDrawLineMode","ɵɵtext","ctx_r7","ɵɵpureFunction1","isLightThemeEnabled","ɵɵadvance","ProjectMapComponent_div_0_div_143_Template","ctx_r11","ProjectMapComponent_div_0_app_draw_link_tool_145_Template","ctx_r12","ProjectMapComponent_div_0_app_console_wrapper_155_Template","_r23","ProjectMapComponent_div_0_app_console_wrapper_155_Template_app_console_wrapper_closeConsole_0_listener","ctx_r22","toggleShowConsole","ctx_r13","_c3","a1","unmarkedLight","marked","_c4","_c5","_c6","visible","ProjectMapComponent_div_0_Template","_r25","ɵɵtemplate","ProjectMapComponent_div_0_Template_button_click_13_listener","ctx_r24","toggleShowTopologySummary","isTopologySummaryVisible","ProjectMapComponent_div_0_Template_button_click_43_listener","ctx_r26","addNewTemplate","ProjectMapComponent_div_0_Template_button_click_62_listener","ctx_r27","addNewProject","ProjectMapComponent_div_0_Template_button_click_67_listener","ctx_r28","saveProject","ProjectMapComponent_div_0_Template_button_click_72_listener","ctx_r29","editProject","ProjectMapComponent_div_0_Template_button_click_77_listener","ctx_r30","exportProject","ProjectMapComponent_div_0_Template_button_click_82_listener","ctx_r31","importProject","ProjectMapComponent_div_0_Template_button_click_87_listener","ctx_r32","closeProject","ProjectMapComponent_div_0_Template_button_click_92_listener","ctx_r33","deleteProject","ProjectMapComponent_div_0_Template_mat_checkbox_change_100_listener","ctx_r34","toggleShowInterfaceLabels","checked","ProjectMapComponent_div_0_Template_mat_checkbox_change_103_listener","ctx_r35","ProjectMapComponent_div_0_Template_mat_checkbox_change_106_listener","ctx_r36","ProjectMapComponent_div_0_Template_mat_checkbox_change_109_listener","ctx_r37","toggleNotifications","ProjectMapComponent_div_0_Template_mat_checkbox_change_112_listener","ctx_r38","toggleLayers","ProjectMapComponent_div_0_Template_mat_checkbox_change_115_listener","ctx_r39","toggleGrid","ProjectMapComponent_div_0_Template_mat_checkbox_change_118_listener","ctx_r40","toggleSnapToGrid","ProjectMapComponent_div_0_Template_mat_checkbox_change_121_listener","ctx_r41","toggleSymbolScaling","ProjectMapComponent_div_0_Template_button_click_126_listener","ctx_r42","toggleMovingMode","ProjectMapComponent_div_0_Template_button_click_129_listener","ctx_r43","ProjectMapComponent_div_0_Template_button_click_132_listener","ctx_r44","zoomIn","ProjectMapComponent_div_0_Template_button_click_135_listener","ctx_r45","resetZoom","ProjectMapComponent_div_0_Template_button_click_138_listener","ctx_r46","zoomOut","ProjectMapComponent_div_0_Template_app_text_added_drawingSaved_152_listener","ctx_r47","onDrawingSaved","_r8","ɵɵreference","_r9","_r10","ctx_r0","settings","angular_map","readonly","ɵɵpureFunction2","id","ɵɵpureFunction0","ɵɵpropertyInterpolate1","isConsoleVisible","notificationsVisibility","layersVisibility","gridVisibility","snap_to_grid","symbolScaling","ProjectMapComponent_ng_template_1_Template","ProjectMapComponent","route","serverService","projectService","nodeService","drawingService","progressService","projectWebServiceHandler","mapChangeDetectorRef","nodeWidget","drawingsWidget","linkWidget","labelWidget","interfaceLabelWidget","mapNodeToNode","mapDrawingToDrawing","mapLabelToLabel","mapLinkToLink","mapLinkNodeToLinkNode","nodesDataSource","linksDataSource","drawingsDataSource","settingsService","toolsService","selectionManager","selectionTool","recentlyOpenedProjectService","movingEventSource","mapScaleService","nodeCreatedLabelStylesFixer","toasterService","dialog","router","mapNodesDataSource","mapLinksDataSource","mapDrawingsDataSource","mapSymbolsDataSource","mapSettingsService","ethernetLinkWidget","serialLinkWidget","bottomSheet","notificationService","themeService","title","nodeConsoleService","symbolService","cd","cfr","injector","isProjectMapMenuVisible","toolbarVisibility","text_editing","scrollX","scrollY","scrollEnabled","projectMapSubscription","getSettings","activate","isServiceInitialized","getData","add","serviceInitialized","subscribe","val","addSubscriptions","addKeyboardListeners","themeChanged","value","getActualTheme","detectChanges","getAll","getSymbolScaling","isLogConsoleVisible","logConsoleSubject","localStorage","getItem","TopologySummaryComponent","instance","topologySummaryContainer","createComponent","ngOnDestroy","destroy","mapRenderedEmitter","centerCanvas","changes","forEach","node","symbol_url","protocol","host","port","symbol","applyScalingOfNodeSymbols","errorNotificationEmitter","message","showMessage","type","warningNotificationEmitter","symbolScalingSubject","getItems","height","getMaximumSymbolSize","newDimensions","scaleDimensionsForNode","width","routeSub","paramMap","server_id","parseInt","get","pipe","navigate","open","project_id","setTitle","name","showInterfaceLabels","setServerId","toString","setProjectId","status","observer","next","onProjectLoad","error","setError","deactivate","bind","event","preventDefault","allNodes","allDrawings","allLinks","allSymbols","setSelected","concat","deleteItems","bottomSheetRef","_openedBottomSheetRef","bottomSheetSubscription","afterDismissed","result","getSelected","filter","item","convert","delete","data","success","isReadOnly","subscription","set","setUpMapCallbacks","setUpProjectWS","projectws","WebSocket","projectNotificationsPath","onmessage","handleMessage","JSON","parse","onerror","ws","notificationsPath","selectionToolActivation","onLinkContextMenu","onContextMenu","eventLink","link","contextMenu","openMenuForListOfElements","pageY","pageX","onEthernetLinkContextMenu","onSerialLinkContextMenu","onNodeContextMenu","eventNode","openMenuForNode","onDrawingContextMenu","eventDrawing","drawing","openMenuForDrawing","onLabelContextMenu","eventLabel","label","find","n","node_id","nodeId","openMenuForLabel","screenY","screenX","onInterfaceLabelContextMenu","eventInterfaceLabel","linkNode","interfaceLabel","l","link_id","linkId","openMenuForInterfaceLabel","contextMenuOpened","selectedItems","length","MouseEvent","labels","elem","push","nodeAddedEvent","x","getScale","y","createFromTemplate","template","style","fixedNode","fix","updateLabel","numberOfNodes","splittedSvg","svg","split","element","minX","maxX","minY","maxY","borderedNodes","borderedNode","BorderedNode","top","left","bottom","right","nodeMinX","sort","m","nodeMaxX","nodeMinY","nodeMaxY","borderedDrawings","borderedDrawing","BorderedDrawing","drawingMinX","drawingMaxX","drawingMinY","drawingMaxY","margin","windowWidth","window","innerWidth","document","documentElement","clientWidth","body","windowHeight","innerHeight","clientHeight","widthOfAreaToShow","heightOfAreaToShow","widthToSceneWidthRatio","heightToSceneHeightRatio","scale","Math","max","currentScale","setScale","scrollTo","projectMapMenuComponent","resetDrawToolChoice","setSymbolScaling","movingModeState","emit","drawLinkToolActivation","enabled","toggleLogConsole","toggleTopologySummary","lazyLoadTopologySummary","setItem","removeItem","mapChild","applyMapSettingsChanges","msg","warning","resetToDefault","dialogRef","autoFocus","disableClose","componentInstance","uuid","onImportProject","projectId","afterClosed","unsubscribe","projectMessage","node_type","location","assign","getExportPath","readImageFile","target","fileInput","file","files","fileReader","FileReader","imageToUpload","Image","onloadend","image","onload","readAsDataURL","src","URL","createObjectURL","close","maxHeight","openConsoles","clear","OPEN","ɵfac","ProjectMapComponent_Factory","t","ɵɵdirectiveInject","ActivatedRoute","ServerService","ProjectService","NodeService","DrawingService","ProgressService","ProjectWebServiceHandler","MapChangeDetectorRef","NodeWidget","DrawingsWidget","LinkWidget","LabelWidget","InterfaceLabelWidget","MapNodeToNodeConverter","MapDrawingToDrawingConverter","MapLabelToLabelConverter","MapLinkToLinkConverter","MapLinkNodeToLinkNodeConverter","NodesDataSource","LinksDataSource","DrawingsDataSource","SettingsService","ToolsService","SelectionManager","SelectionTool","RecentlyOpenedProjectService","MovingEventSource","MapScaleService","NodeCreatedLabelStylesFixer","ToasterService","MatDialog","Router","MapNodesDataSource","MapLinksDataSource","MapDrawingsDataSource","MapSymbolsDataSource","MapSettingsService","EthernetLinkWidget","SerialLinkWidget","MatBottomSheet","NotificationService","ThemeService","Title","NodeConsoleService","SymbolService","ChangeDetectorRef","ComponentFactoryResolver","Injector","ɵcmp","ɵɵdefineComponent","selectors","viewQuery","ProjectMapComponent_Query","ɵɵviewQuery","_t","ɵɵqueryRefresh","ɵɵloadQuery","first","decls","vars","consts","ProjectMapComponent_Template","ɵɵtemplateRefExtractor","directives","NgIf","NgClass","MatButton","MatTooltip","MatMenuTrigger","NodesMenuComponent","MatIcon","MatMenu","MatMenuItem","RouterLink","ImportApplianceComponent","MatCheckbox","NgControlStatus","NgModel","ProgressComponent","DrawingDraggedComponent","DrawingResizedComponent","InterfaceLabelDraggedComponent","LinkCreatedComponent","NodeDraggedComponent","NodeLabelDraggedComponent","TextAddedComponent","TextEditedComponent","ExperimentalMapComponent","TemplateComponent","SnapshotMenuItemComponent","DrawLinkToolComponent","ConsoleWrapperComponent","styles","encapsulation"],"mappings":"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","sourcesContent":["import { __awaiter } from \"tslib\";\r\nimport { ViewContainerRef } from '@angular/core';\r\nimport * as Mousetrap from 'mousetrap';\r\nimport { from, Observable, Subscription } from 'rxjs';\r\nimport { map, mergeMap } from 'rxjs/operators';\r\nimport { D3MapComponent } from '../../cartography/components/d3-map/d3-map.component';\r\nimport { MapDrawing } from '../../cartography/models/map/map-drawing';\r\nimport { MapLabel } from '../../cartography/models/map/map-label';\r\nimport { MapLink } from '../../cartography/models/map/map-link';\r\nimport { MapNode } from '../../cartography/models/map/map-node';\r\nimport { AddBlankProjectDialogComponent } from '../projects/add-blank-project-dialog/add-blank-project-dialog.component';\r\nimport { ConfirmationBottomSheetComponent } from '../projects/confirmation-bottomsheet/confirmation-bottomsheet.component';\r\nimport { EditProjectDialogComponent } from '../projects/edit-project-dialog/edit-project-dialog.component';\r\nimport { ImportProjectDialogComponent } from '../projects/import-project-dialog/import-project-dialog.component';\r\nimport { NavigationDialogComponent } from '../projects/navigation-dialog/navigation-dialog.component';\r\nimport { SaveProjectDialogComponent } from '../projects/save-project-dialog/save-project-dialog.component';\r\nimport { ContextMenuComponent } from './context-menu/context-menu.component';\r\nimport { NewTemplateDialogComponent } from './new-template-dialog/new-template-dialog.component';\r\nimport { ProjectMapMenuComponent } from './project-map-menu/project-map-menu.component';\r\nimport * as i0 from \"@angular/core\";\r\nimport * as i1 from \"@angular/router\";\r\nimport * as i2 from \"../../services/server.service\";\r\nimport * as i3 from \"../../services/project.service\";\r\nimport * as i4 from \"../../services/node.service\";\r\nimport * as i5 from \"../../services/drawing.service\";\r\nimport * as i6 from \"../../common/progress/progress.service\";\r\nimport * as i7 from \"../../handlers/project-web-service-handler\";\r\nimport * as i8 from \"../../cartography/services/map-change-detector-ref\";\r\nimport * as i9 from \"../../cartography/widgets/node\";\r\nimport * as i10 from \"../../cartography/widgets/drawings\";\r\nimport * as i11 from \"../../cartography/widgets/link\";\r\nimport * as i12 from \"../../cartography/widgets/label\";\r\nimport * as i13 from \"../../cartography/widgets/interface-label\";\r\nimport * as i14 from \"../../cartography/converters/map/map-node-to-node-converter\";\r\nimport * as i15 from \"../../cartography/converters/map/map-drawing-to-drawing-converter\";\r\nimport * as i16 from \"../../cartography/converters/map/map-label-to-label-converter\";\r\nimport * as i17 from \"../../cartography/converters/map/map-link-to-link-converter\";\r\nimport * as i18 from \"../../cartography/converters/map/map-link-node-to-link-node-converter\";\r\nimport * as i19 from \"../../cartography/datasources/nodes-datasource\";\r\nimport * as i20 from \"../../cartography/datasources/links-datasource\";\r\nimport * as i21 from \"../../cartography/datasources/drawings-datasource\";\r\nimport * as i22 from \"../../services/settings.service\";\r\nimport * as i23 from \"../../services/tools.service\";\r\nimport * as i24 from \"../../cartography/managers/selection-manager\";\r\nimport * as i25 from \"../../cartography/tools/selection-tool\";\r\nimport * as i26 from \"../../services/recentlyOpenedProject.service\";\r\nimport * as i27 from \"../../cartography/events/moving-event-source\";\r\nimport * as i28 from \"../../services/mapScale.service\";\r\nimport * as i29 from \"./helpers/node-created-label-styles-fixer\";\r\nimport * as i30 from \"../../services/toaster.service\";\r\nimport * as i31 from \"@angular/material/dialog\";\r\nimport * as i32 from \"../../cartography/datasources/map-datasource\";\r\nimport * as i33 from \"../../services/mapsettings.service\";\r\nimport * as i34 from \"../../cartography/widgets/links/ethernet-link\";\r\nimport * as i35 from \"../../cartography/widgets/links/serial-link\";\r\nimport * as i36 from \"@angular/material/bottom-sheet\";\r\nimport * as i37 from \"../../services/notification.service\";\r\nimport * as i38 from \"../../services/theme.service\";\r\nimport * as i39 from \"@angular/platform-browser\";\r\nimport * as i40 from \"../../services/nodeConsole.service\";\r\nimport * as i41 from \"../../services/symbol.service\";\r\nimport * as i42 from \"@angular/common\";\r\nimport * as i43 from \"@angular/material/button\";\r\nimport * as i44 from \"@angular/material/tooltip\";\r\nimport * as i45 from \"@angular/material/menu\";\r\nimport * as i46 from \"./nodes-menu/nodes-menu.component\";\r\nimport * as i47 from \"./context-menu/context-menu.component\";\r\nimport * as i48 from \"@angular/material/icon\";\r\nimport * as i49 from \"./import-appliance/import-appliance.component\";\r\nimport * as i50 from \"@angular/material/checkbox\";\r\nimport * as i51 from \"@angular/forms\";\r\nimport * as i52 from \"./project-map-menu/project-map-menu.component\";\r\nimport * as i53 from \"../../common/progress/progress.component\";\r\nimport * as i54 from \"../drawings-listeners/drawing-dragged/drawing-dragged.component\";\r\nimport * as i55 from \"../drawings-listeners/drawing-resized/drawing-resized.component\";\r\nimport * as i56 from \"../drawings-listeners/interface-label-dragged/interface-label-dragged.component\";\r\nimport * as i57 from \"../drawings-listeners/link-created/link-created.component\";\r\nimport * as i58 from \"../drawings-listeners/node-dragged/node-dragged.component\";\r\nimport * as i59 from \"../drawings-listeners/node-label-dragged/node-label-dragged.component\";\r\nimport * as i60 from \"../drawings-listeners/text-added/text-added.component\";\r\nimport * as i61 from \"../drawings-listeners/text-edited/text-edited.component\";\r\nimport * as i62 from \"../../cartography/components/d3-map/d3-map.component\";\r\nimport * as i63 from \"../../cartography/components/experimental-map/experimental-map.component\";\r\nimport * as i64 from \"../template/template.component\";\r\nimport * as i65 from \"../snapshots/snapshot-menu-item/snapshot-menu-item.component\";\r\nimport * as i66 from \"./draw-link-tool/draw-link-tool.component\";\r\nimport * as i67 from \"./console-wrapper/console-wrapper.component\";\r\nconst _c0 = [\"topologySummaryContainer\"];\r\nfunction ProjectMapComponent_div_0_app_d3_map_1_Template(rf, ctx) { if (rf & 1) {\r\n const _r15 = i0.ɵɵgetCurrentView();\r\n i0.ɵɵelementStart(0, \"app-d3-map\", 38);\r\n i0.ɵɵlistener(\"nodeDragged\", function ProjectMapComponent_div_0_app_d3_map_1_Template_app_d3_map_nodeDragged_0_listener($event) { i0.ɵɵrestoreView(_r15); const ctx_r14 = i0.ɵɵnextContext(2); return ctx_r14.onNodeDragged($event); })(\"drawingDragged\", function ProjectMapComponent_div_0_app_d3_map_1_Template_app_d3_map_drawingDragged_0_listener($event) { i0.ɵɵrestoreView(_r15); const ctx_r16 = i0.ɵɵnextContext(2); return ctx_r16.onDrawingDragged($event); })(\"onLinkCreated\", function ProjectMapComponent_div_0_app_d3_map_1_Template_app_d3_map_onLinkCreated_0_listener($event) { i0.ɵɵrestoreView(_r15); const ctx_r17 = i0.ɵɵnextContext(2); return ctx_r17.onLinkCreated($event); })(\"onDrawingResized\", function ProjectMapComponent_div_0_app_d3_map_1_Template_app_d3_map_onDrawingResized_0_listener($event) { i0.ɵɵrestoreView(_r15); const ctx_r18 = i0.ɵɵnextContext(2); return ctx_r18.onDrawingResized($event); });\r\n i0.ɵɵelementEnd();\r\n} if (rf & 2) {\r\n const ctx_r3 = i0.ɵɵnextContext(2);\r\n i0.ɵɵproperty(\"server\", ctx_r3.server)(\"project\", ctx_r3.project)(\"symbols\", ctx_r3.symbols)(\"nodes\", ctx_r3.nodes)(\"links\", ctx_r3.links)(\"drawings\", ctx_r3.drawings)(\"width\", ctx_r3.project.scene_width)(\"height\", ctx_r3.project.scene_height)(\"show-interface-labels\", ctx_r3.isInterfaceLabelVisible)(\"readonly\", ctx_r3.inReadOnlyMode);\r\n} }\r\nfunction ProjectMapComponent_div_0_app_experimental_map_2_Template(rf, ctx) { if (rf & 1) {\r\n i0.ɵɵelement(0, \"app-experimental-map\", 39);\r\n} if (rf & 2) {\r\n const ctx_r4 = i0.ɵɵnextContext(2);\r\n i0.ɵɵproperty(\"symbols\", ctx_r4.symbols)(\"nodes\", ctx_r4.nodes)(\"links\", ctx_r4.links)(\"drawings\", ctx_r4.drawings)(\"width\", ctx_r4.project.scene_width)(\"height\", ctx_r4.project.scene_height)(\"show-interface-labels\", ctx_r4.isInterfaceLabelVisible)(\"selection-tool\", ctx_r4.tools.selection)(\"moving-tool\", ctx_r4.tools.moving)(\"draw-link-tool\", ctx_r4.tools.draw_link)(\"readonly\", ctx_r4.inReadOnlyMode);\r\n} }\r\nfunction ProjectMapComponent_div_0_mat_icon_5_Template(rf, ctx) { if (rf & 1) {\r\n i0.ɵɵelement(0, \"mat-icon\", 40);\r\n} }\r\nfunction ProjectMapComponent_div_0_mat_icon_6_Template(rf, ctx) { if (rf & 1) {\r\n i0.ɵɵelement(0, \"mat-icon\", 41);\r\n} }\r\nconst _c1 = function (a0) { return { lightTheme: a0 }; };\r\nconst _c2 = function (a0) { return { selected: a0 }; };\r\nfunction ProjectMapComponent_div_0_div_8_Template(rf, ctx) { if (rf & 1) {\r\n const _r20 = i0.ɵɵgetCurrentView();\r\n i0.ɵɵelementStart(0, \"div\", 42);\r\n i0.ɵɵelementStart(1, \"app-template\", 43);\r\n i0.ɵɵlistener(\"onNodeCreation\", function ProjectMapComponent_div_0_div_8_Template_app_template_onNodeCreation_1_listener($event) { i0.ɵɵrestoreView(_r20); const ctx_r19 = i0.ɵɵnextContext(2); return ctx_r19.onNodeCreation($event); });\r\n i0.ɵɵelementEnd();\r\n i0.ɵɵelementStart(2, \"button\", 44);\r\n i0.ɵɵlistener(\"click\", function ProjectMapComponent_div_0_div_8_Template_button_click_2_listener() { i0.ɵɵrestoreView(_r20); const ctx_r21 = i0.ɵɵnextContext(2); return ctx_r21.toggleDrawLineMode(); });\r\n i0.ɵɵelementStart(3, \"mat-icon\");\r\n i0.ɵɵtext(4, \"timeline\");\r\n i0.ɵɵelementEnd();\r\n i0.ɵɵelementEnd();\r\n i0.ɵɵelementEnd();\r\n} if (rf & 2) {\r\n const ctx_r7 = i0.ɵɵnextContext(2);\r\n i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction1(5, _c1, ctx_r7.isLightThemeEnabled));\r\n i0.ɵɵadvance(1);\r\n i0.ɵɵproperty(\"server\", ctx_r7.server)(\"project\", ctx_r7.project);\r\n i0.ɵɵadvance(1);\r\n i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction1(7, _c2, ctx_r7.tools.draw_link))(\"color\", ctx_r7.tools.draw_link ? \"primary\" : \"basic\");\r\n} }\r\nfunction ProjectMapComponent_div_0_div_143_Template(rf, ctx) { if (rf & 1) {\r\n i0.ɵɵelementStart(0, \"div\", 26);\r\n i0.ɵɵelement(1, \"app-snapshot-menu-item\", 12);\r\n i0.ɵɵelementEnd();\r\n} if (rf & 2) {\r\n const ctx_r11 = i0.ɵɵnextContext(2);\r\n i0.ɵɵadvance(1);\r\n i0.ɵɵproperty(\"server\", ctx_r11.server)(\"project\", ctx_r11.project);\r\n} }\r\nfunction ProjectMapComponent_div_0_app_draw_link_tool_145_Template(rf, ctx) { if (rf & 1) {\r\n i0.ɵɵelement(0, \"app-draw-link-tool\", 45);\r\n} if (rf & 2) {\r\n const ctx_r12 = i0.ɵɵnextContext(2);\r\n i0.ɵɵproperty(\"links\", ctx_r12.links);\r\n} }\r\nfunction ProjectMapComponent_div_0_app_console_wrapper_155_Template(rf, ctx) { if (rf & 1) {\r\n const _r23 = i0.ɵɵgetCurrentView();\r\n i0.ɵɵelementStart(0, \"app-console-wrapper\", 46);\r\n i0.ɵɵlistener(\"closeConsole\", function ProjectMapComponent_div_0_app_console_wrapper_155_Template_app_console_wrapper_closeConsole_0_listener($event) { i0.ɵɵrestoreView(_r23); const ctx_r22 = i0.ɵɵnextContext(2); return ctx_r22.toggleShowConsole($event); });\r\n i0.ɵɵelementEnd();\r\n} if (rf & 2) {\r\n const ctx_r13 = i0.ɵɵnextContext(2);\r\n i0.ɵɵproperty(\"server\", ctx_r13.server)(\"project\", ctx_r13.project);\r\n} }\r\nconst _c3 = function (a0, a1) { return { unmarkedLight: a0, marked: a1 }; };\r\nconst _c4 = function (a1) { return [\"/server\", a1, \"projects\"]; };\r\nconst _c5 = function () { return [\"/servers\"]; };\r\nconst _c6 = function (a0) { return { visible: a0 }; };\r\nfunction ProjectMapComponent_div_0_Template(rf, ctx) { if (rf & 1) {\r\n const _r25 = i0.ɵɵgetCurrentView();\r\n i0.ɵɵelementStart(0, \"div\", 2);\r\n i0.ɵɵtemplate(1, ProjectMapComponent_div_0_app_d3_map_1_Template, 1, 10, \"app-d3-map\", 3);\r\n i0.ɵɵtemplate(2, ProjectMapComponent_div_0_app_experimental_map_2_Template, 1, 11, \"app-experimental-map\", 4);\r\n i0.ɵɵelementStart(3, \"div\", 5);\r\n i0.ɵɵelementStart(4, \"button\", 6);\r\n i0.ɵɵtemplate(5, ProjectMapComponent_div_0_mat_icon_5_Template, 1, 0, \"mat-icon\", 7);\r\n i0.ɵɵtemplate(6, ProjectMapComponent_div_0_mat_icon_6_Template, 1, 0, \"mat-icon\", 8);\r\n i0.ɵɵelementEnd();\r\n i0.ɵɵelementStart(7, \"div\", 9);\r\n i0.ɵɵtemplate(8, ProjectMapComponent_div_0_div_8_Template, 5, 9, \"div\", 10);\r\n i0.ɵɵelementStart(9, \"div\", 11);\r\n i0.ɵɵelement(10, \"app-nodes-menu\", 12);\r\n i0.ɵɵelement(11, \"app-context-menu\", 13);\r\n i0.ɵɵelementEnd();\r\n i0.ɵɵelementEnd();\r\n i0.ɵɵelementStart(12, \"div\");\r\n i0.ɵɵelementStart(13, \"button\", 14);\r\n i0.ɵɵlistener(\"click\", function ProjectMapComponent_div_0_Template_button_click_13_listener() { i0.ɵɵrestoreView(_r25); const ctx_r24 = i0.ɵɵnextContext(); return ctx_r24.toggleShowTopologySummary(!ctx_r24.isTopologySummaryVisible); });\r\n i0.ɵɵelementStart(14, \"mat-icon\");\r\n i0.ɵɵtext(15, \"toc\");\r\n i0.ɵɵelementEnd();\r\n i0.ɵɵelementEnd();\r\n i0.ɵɵelementEnd();\r\n i0.ɵɵelementStart(16, \"mat-menu\", 15, 16);\r\n i0.ɵɵelementStart(18, \"button\", 17);\r\n i0.ɵɵelementStart(19, \"mat-icon\");\r\n i0.ɵɵtext(20, \"work\");\r\n i0.ɵɵelementEnd();\r\n i0.ɵɵelementStart(21, \"span\");\r\n i0.ɵɵtext(22, \"Go to projects\");\r\n i0.ɵɵelementEnd();\r\n i0.ɵɵelementEnd();\r\n i0.ɵɵelementStart(23, \"button\", 17);\r\n i0.ɵɵelementStart(24, \"mat-icon\");\r\n i0.ɵɵtext(25, \"developer_board\");\r\n i0.ɵɵelementEnd();\r\n i0.ɵɵelementStart(26, \"span\");\r\n i0.ɵɵtext(27, \"Go to servers\");\r\n i0.ɵɵelementEnd();\r\n i0.ɵɵelementEnd();\r\n i0.ɵɵelementStart(28, \"button\", 17);\r\n i0.ɵɵelementStart(29, \"mat-icon\");\r\n i0.ɵɵtext(30, \"settings_applications\");\r\n i0.ɵɵelementEnd();\r\n i0.ɵɵelementStart(31, \"span\");\r\n i0.ɵɵtext(32, \"Go to preferences\");\r\n i0.ɵɵelementEnd();\r\n i0.ɵɵelementEnd();\r\n i0.ɵɵelementStart(33, \"button\", 17);\r\n i0.ɵɵelementStart(34, \"mat-icon\");\r\n i0.ɵɵtext(35, \"info\");\r\n i0.ɵɵelementEnd();\r\n i0.ɵɵelementStart(36, \"span\");\r\n i0.ɵɵtext(37, \"Go to system status\");\r\n i0.ɵɵelementEnd();\r\n i0.ɵɵelementEnd();\r\n i0.ɵɵelementStart(38, \"button\", 18);\r\n i0.ɵɵelementStart(39, \"mat-icon\");\r\n i0.ɵɵtext(40, \"settings\");\r\n i0.ɵɵelementEnd();\r\n i0.ɵɵelementStart(41, \"span\");\r\n i0.ɵɵtext(42, \"Go to settings\");\r\n i0.ɵɵelementEnd();\r\n i0.ɵɵelementEnd();\r\n i0.ɵɵelementStart(43, \"button\", 19);\r\n i0.ɵɵlistener(\"click\", function ProjectMapComponent_div_0_Template_button_click_43_listener() { i0.ɵɵrestoreView(_r25); const ctx_r26 = i0.ɵɵnextContext(); return ctx_r26.addNewTemplate(); });\r\n i0.ɵɵelementStart(44, \"mat-icon\");\r\n i0.ɵɵtext(45, \"control_point\");\r\n i0.ɵɵelementEnd();\r\n i0.ɵɵelementStart(46, \"span\");\r\n i0.ɵɵtext(47, \"New template\");\r\n i0.ɵɵelementEnd();\r\n i0.ɵɵelementEnd();\r\n i0.ɵɵelement(48, \"app-import-appliance\", 12);\r\n i0.ɵɵelementStart(49, \"button\", 20);\r\n i0.ɵɵelementStart(50, \"mat-icon\");\r\n i0.ɵɵtext(51, \"settings\");\r\n i0.ɵɵelementEnd();\r\n i0.ɵɵelementStart(52, \"span\");\r\n i0.ɵɵtext(53, \"Project settings\");\r\n i0.ɵɵelementEnd();\r\n i0.ɵɵelementEnd();\r\n i0.ɵɵelementStart(54, \"button\", 20);\r\n i0.ɵɵelementStart(55, \"mat-icon\");\r\n i0.ɵɵtext(56, \"view_module\");\r\n i0.ɵɵelementEnd();\r\n i0.ɵɵelementStart(57, \"span\");\r\n i0.ɵɵtext(58, \"Map settings\");\r\n i0.ɵɵelementEnd();\r\n i0.ɵɵelementEnd();\r\n i0.ɵɵelementEnd();\r\n i0.ɵɵelementStart(59, \"mat-menu\", 15, 21);\r\n i0.ɵɵelementStart(61, \"div\");\r\n i0.ɵɵelementStart(62, \"button\", 19);\r\n i0.ɵɵlistener(\"click\", function ProjectMapComponent_div_0_Template_button_click_62_listener() { i0.ɵɵrestoreView(_r25); const ctx_r27 = i0.ɵɵnextContext(); return ctx_r27.addNewProject(); });\r\n i0.ɵɵelementStart(63, \"mat-icon\");\r\n i0.ɵɵtext(64, \"add\");\r\n i0.ɵɵelementEnd();\r\n i0.ɵɵelementStart(65, \"span\");\r\n i0.ɵɵtext(66, \"Add new blank project\");\r\n i0.ɵɵelementEnd();\r\n i0.ɵɵelementEnd();\r\n i0.ɵɵelementStart(67, \"button\", 19);\r\n i0.ɵɵlistener(\"click\", function ProjectMapComponent_div_0_Template_button_click_67_listener() { i0.ɵɵrestoreView(_r25); const ctx_r28 = i0.ɵɵnextContext(); return ctx_r28.saveProject(); });\r\n i0.ɵɵelementStart(68, \"mat-icon\");\r\n i0.ɵɵtext(69, \"save\");\r\n i0.ɵɵelementEnd();\r\n i0.ɵɵelementStart(70, \"span\");\r\n i0.ɵɵtext(71, \"Save project as\");\r\n i0.ɵɵelementEnd();\r\n i0.ɵɵelementEnd();\r\n i0.ɵɵelementStart(72, \"button\", 19);\r\n i0.ɵɵlistener(\"click\", function ProjectMapComponent_div_0_Template_button_click_72_listener() { i0.ɵɵrestoreView(_r25); const ctx_r29 = i0.ɵɵnextContext(); return ctx_r29.editProject(); });\r\n i0.ɵɵelementStart(73, \"mat-icon\");\r\n i0.ɵɵtext(74, \"edit\");\r\n i0.ɵɵelementEnd();\r\n i0.ɵɵelementStart(75, \"span\");\r\n i0.ɵɵtext(76, \"Edit project\");\r\n i0.ɵɵelementEnd();\r\n i0.ɵɵelementEnd();\r\n i0.ɵɵelementStart(77, \"button\", 19);\r\n i0.ɵɵlistener(\"click\", function ProjectMapComponent_div_0_Template_button_click_77_listener() { i0.ɵɵrestoreView(_r25); const ctx_r30 = i0.ɵɵnextContext(); return ctx_r30.exportProject(); });\r\n i0.ɵɵelementStart(78, \"mat-icon\");\r\n i0.ɵɵtext(79, \"call_made\");\r\n i0.ɵɵelementEnd();\r\n i0.ɵɵelementStart(80, \"span\");\r\n i0.ɵɵtext(81, \"Export portable project\");\r\n i0.ɵɵelementEnd();\r\n i0.ɵɵelementEnd();\r\n i0.ɵɵelementStart(82, \"button\", 19);\r\n i0.ɵɵlistener(\"click\", function ProjectMapComponent_div_0_Template_button_click_82_listener() { i0.ɵɵrestoreView(_r25); const ctx_r31 = i0.ɵɵnextContext(); return ctx_r31.importProject(); });\r\n i0.ɵɵelementStart(83, \"mat-icon\");\r\n i0.ɵɵtext(84, \"call_received\");\r\n i0.ɵɵelementEnd();\r\n i0.ɵɵelementStart(85, \"span\");\r\n i0.ɵɵtext(86, \"Import portable project\");\r\n i0.ɵɵelementEnd();\r\n i0.ɵɵelementEnd();\r\n i0.ɵɵelementStart(87, \"button\", 19);\r\n i0.ɵɵlistener(\"click\", function ProjectMapComponent_div_0_Template_button_click_87_listener() { i0.ɵɵrestoreView(_r25); const ctx_r32 = i0.ɵɵnextContext(); return ctx_r32.closeProject(); });\r\n i0.ɵɵelementStart(88, \"mat-icon\");\r\n i0.ɵɵtext(89, \"close\");\r\n i0.ɵɵelementEnd();\r\n i0.ɵɵelementStart(90, \"span\");\r\n i0.ɵɵtext(91, \"Close project\");\r\n i0.ɵɵelementEnd();\r\n i0.ɵɵelementEnd();\r\n i0.ɵɵelementStart(92, \"button\", 19);\r\n i0.ɵɵlistener(\"click\", function ProjectMapComponent_div_0_Template_button_click_92_listener() { i0.ɵɵrestoreView(_r25); const ctx_r33 = i0.ɵɵnextContext(); return ctx_r33.deleteProject(); });\r\n i0.ɵɵelementStart(93, \"mat-icon\");\r\n i0.ɵɵtext(94, \"delete\");\r\n i0.ɵɵelementEnd();\r\n i0.ɵɵelementStart(95, \"span\");\r\n i0.ɵɵtext(96, \"Delete project\");\r\n i0.ɵɵelementEnd();\r\n i0.ɵɵelementEnd();\r\n i0.ɵɵelementEnd();\r\n i0.ɵɵelementEnd();\r\n i0.ɵɵelementStart(97, \"mat-menu\", 15, 22);\r\n i0.ɵɵelementStart(99, \"div\", 23);\r\n i0.ɵɵelementStart(100, \"mat-checkbox\", 24);\r\n i0.ɵɵlistener(\"change\", function ProjectMapComponent_div_0_Template_mat_checkbox_change_100_listener($event) { i0.ɵɵrestoreView(_r25); const ctx_r34 = i0.ɵɵnextContext(); return ctx_r34.toggleShowInterfaceLabels($event.checked); });\r\n i0.ɵɵtext(101, \" Show interface labels \");\r\n i0.ɵɵelementEnd();\r\n i0.ɵɵelement(102, \"br\");\r\n i0.ɵɵelementStart(103, \"mat-checkbox\", 24);\r\n i0.ɵɵlistener(\"change\", function ProjectMapComponent_div_0_Template_mat_checkbox_change_103_listener($event) { i0.ɵɵrestoreView(_r25); const ctx_r35 = i0.ɵɵnextContext(); return ctx_r35.toggleShowConsole($event.checked); });\r\n i0.ɵɵtext(104, \" Show console \");\r\n i0.ɵɵelementEnd();\r\n i0.ɵɵelement(105, \"br\");\r\n i0.ɵɵelementStart(106, \"mat-checkbox\", 24);\r\n i0.ɵɵlistener(\"change\", function ProjectMapComponent_div_0_Template_mat_checkbox_change_106_listener($event) { i0.ɵɵrestoreView(_r25); const ctx_r36 = i0.ɵɵnextContext(); return ctx_r36.toggleShowTopologySummary($event.checked); });\r\n i0.ɵɵtext(107, \" Show topology/servers summary \");\r\n i0.ɵɵelementEnd();\r\n i0.ɵɵelement(108, \"br\");\r\n i0.ɵɵelementStart(109, \"mat-checkbox\", 24);\r\n i0.ɵɵlistener(\"change\", function ProjectMapComponent_div_0_Template_mat_checkbox_change_109_listener($event) { i0.ɵɵrestoreView(_r25); const ctx_r37 = i0.ɵɵnextContext(); return ctx_r37.toggleNotifications($event.checked); });\r\n i0.ɵɵtext(110, \" Show notifications \");\r\n i0.ɵɵelementEnd();\r\n i0.ɵɵelement(111, \"br\");\r\n i0.ɵɵelementStart(112, \"mat-checkbox\", 24);\r\n i0.ɵɵlistener(\"change\", function ProjectMapComponent_div_0_Template_mat_checkbox_change_112_listener($event) { i0.ɵɵrestoreView(_r25); const ctx_r38 = i0.ɵɵnextContext(); return ctx_r38.toggleLayers($event.checked); });\r\n i0.ɵɵtext(113, \" Show layers \");\r\n i0.ɵɵelementEnd();\r\n i0.ɵɵelement(114, \"br\");\r\n i0.ɵɵelementStart(115, \"mat-checkbox\", 24);\r\n i0.ɵɵlistener(\"change\", function ProjectMapComponent_div_0_Template_mat_checkbox_change_115_listener($event) { i0.ɵɵrestoreView(_r25); const ctx_r39 = i0.ɵɵnextContext(); return ctx_r39.toggleGrid($event.checked); });\r\n i0.ɵɵtext(116, \" Show grid \");\r\n i0.ɵɵelementEnd();\r\n i0.ɵɵelement(117, \"br\");\r\n i0.ɵɵelementStart(118, \"mat-checkbox\", 24);\r\n i0.ɵɵlistener(\"change\", function ProjectMapComponent_div_0_Template_mat_checkbox_change_118_listener($event) { i0.ɵɵrestoreView(_r25); const ctx_r40 = i0.ɵɵnextContext(); return ctx_r40.toggleSnapToGrid($event.checked); });\r\n i0.ɵɵtext(119, \" Snap to grid \");\r\n i0.ɵɵelementEnd();\r\n i0.ɵɵelement(120, \"br\");\r\n i0.ɵɵelementStart(121, \"mat-checkbox\", 24);\r\n i0.ɵɵlistener(\"change\", function ProjectMapComponent_div_0_Template_mat_checkbox_change_121_listener($event) { i0.ɵɵrestoreView(_r25); const ctx_r41 = i0.ɵɵnextContext(); return ctx_r41.toggleSymbolScaling($event.checked); });\r\n i0.ɵɵtext(122, \" Scale symbols \");\r\n i0.ɵɵelementEnd();\r\n i0.ɵɵelement(123, \"br\");\r\n i0.ɵɵelementEnd();\r\n i0.ɵɵelementEnd();\r\n i0.ɵɵelementEnd();\r\n i0.ɵɵelementStart(124, \"div\", 25);\r\n i0.ɵɵelementStart(125, \"div\", 26);\r\n i0.ɵɵelementStart(126, \"button\", 27);\r\n i0.ɵɵlistener(\"click\", function ProjectMapComponent_div_0_Template_button_click_126_listener() { i0.ɵɵrestoreView(_r25); const ctx_r42 = i0.ɵɵnextContext(); return ctx_r42.toggleMovingMode(); });\r\n i0.ɵɵelementStart(127, \"mat-icon\");\r\n i0.ɵɵtext(128, \"near_me\");\r\n i0.ɵɵelementEnd();\r\n i0.ɵɵelementEnd();\r\n i0.ɵɵelementStart(129, \"button\", 28);\r\n i0.ɵɵlistener(\"click\", function ProjectMapComponent_div_0_Template_button_click_129_listener() { i0.ɵɵrestoreView(_r25); const ctx_r43 = i0.ɵɵnextContext(); return ctx_r43.toggleMovingMode(); });\r\n i0.ɵɵelementStart(130, \"mat-icon\");\r\n i0.ɵɵtext(131, \"zoom_out_map\");\r\n i0.ɵɵelementEnd();\r\n i0.ɵɵelementEnd();\r\n i0.ɵɵelementStart(132, \"button\", 29);\r\n i0.ɵɵlistener(\"click\", function ProjectMapComponent_div_0_Template_button_click_132_listener() { i0.ɵɵrestoreView(_r25); const ctx_r44 = i0.ɵɵnextContext(); return ctx_r44.zoomIn(); });\r\n i0.ɵɵelementStart(133, \"mat-icon\");\r\n i0.ɵɵtext(134, \"zoom_in\");\r\n i0.ɵɵelementEnd();\r\n i0.ɵɵelementEnd();\r\n i0.ɵɵelementStart(135, \"button\", 30);\r\n i0.ɵɵlistener(\"click\", function ProjectMapComponent_div_0_Template_button_click_135_listener() { i0.ɵɵrestoreView(_r25); const ctx_r45 = i0.ɵɵnextContext(); return ctx_r45.resetZoom(); });\r\n i0.ɵɵelementStart(136, \"mat-icon\");\r\n i0.ɵɵtext(137, \"adjust\");\r\n i0.ɵɵelementEnd();\r\n i0.ɵɵelementEnd();\r\n i0.ɵɵelementStart(138, \"button\", 31);\r\n i0.ɵɵlistener(\"click\", function ProjectMapComponent_div_0_Template_button_click_138_listener() { i0.ɵɵrestoreView(_r25); const ctx_r46 = i0.ɵɵnextContext(); return ctx_r46.zoomOut(); });\r\n i0.ɵɵelementStart(139, \"mat-icon\");\r\n i0.ɵɵtext(140, \"zoom_out\");\r\n i0.ɵɵelementEnd();\r\n i0.ɵɵelementEnd();\r\n i0.ɵɵelementEnd();\r\n i0.ɵɵelementStart(141, \"div\", 26);\r\n i0.ɵɵelement(142, \"app-project-map-menu\", 12);\r\n i0.ɵɵelementEnd();\r\n i0.ɵɵtemplate(143, ProjectMapComponent_div_0_div_143_Template, 2, 2, \"div\", 32);\r\n i0.ɵɵelementEnd();\r\n i0.ɵɵelement(144, \"app-progress\");\r\n i0.ɵɵtemplate(145, ProjectMapComponent_div_0_app_draw_link_tool_145_Template, 1, 1, \"app-draw-link-tool\", 33);\r\n i0.ɵɵelement(146, \"app-drawing-dragged\", 12);\r\n i0.ɵɵelement(147, \"app-drawing-resized\", 34);\r\n i0.ɵɵelement(148, \"app-interface-label-dragged\", 34);\r\n i0.ɵɵelement(149, \"app-link-created\", 12);\r\n i0.ɵɵelement(150, \"app-node-dragged\", 12);\r\n i0.ɵɵelement(151, \"app-node-label-dragged\", 34);\r\n i0.ɵɵelementStart(152, \"app-text-added\", 35);\r\n i0.ɵɵlistener(\"drawingSaved\", function ProjectMapComponent_div_0_Template_app_text_added_drawingSaved_152_listener() { i0.ɵɵrestoreView(_r25); const ctx_r47 = i0.ɵɵnextContext(); return ctx_r47.onDrawingSaved(); });\r\n i0.ɵɵelementEnd();\r\n i0.ɵɵelement(153, \"app-text-edited\", 34);\r\n i0.ɵɵelementStart(154, \"div\", 36);\r\n i0.ɵɵtemplate(155, ProjectMapComponent_div_0_app_console_wrapper_155_Template, 1, 2, \"app-console-wrapper\", 37);\r\n i0.ɵɵelementEnd();\r\n i0.ɵɵelementEnd();\r\n} if (rf & 2) {\r\n const _r8 = i0.ɵɵreference(17);\r\n const _r9 = i0.ɵɵreference(60);\r\n const _r10 = i0.ɵɵreference(98);\r\n const ctx_r0 = i0.ɵɵnextContext();\r\n i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction1(53, _c1, ctx_r0.isLightThemeEnabled));\r\n i0.ɵɵadvance(1);\r\n i0.ɵɵproperty(\"ngIf\", !ctx_r0.settings.angular_map);\r\n i0.ɵɵadvance(1);\r\n i0.ɵɵproperty(\"ngIf\", ctx_r0.settings.angular_map);\r\n i0.ɵɵadvance(1);\r\n i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction1(55, _c1, ctx_r0.isLightThemeEnabled));\r\n i0.ɵɵadvance(1);\r\n i0.ɵɵproperty(\"matMenuTriggerFor\", _r8);\r\n i0.ɵɵadvance(1);\r\n i0.ɵɵproperty(\"ngIf\", !ctx_r0.isLightThemeEnabled);\r\n i0.ɵɵadvance(1);\r\n i0.ɵɵproperty(\"ngIf\", ctx_r0.isLightThemeEnabled);\r\n i0.ɵɵadvance(2);\r\n i0.ɵɵproperty(\"ngIf\", !ctx_r0.readonly);\r\n i0.ɵɵadvance(2);\r\n i0.ɵɵproperty(\"server\", ctx_r0.server)(\"project\", ctx_r0.project);\r\n i0.ɵɵadvance(1);\r\n i0.ɵɵproperty(\"project\", ctx_r0.project)(\"server\", ctx_r0.server);\r\n i0.ɵɵadvance(2);\r\n i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction2(57, _c3, !ctx_r0.isTopologySummaryVisible && ctx_r0.isLightThemeEnabled, ctx_r0.isTopologySummaryVisible));\r\n i0.ɵɵadvance(3);\r\n i0.ɵɵproperty(\"overlapTrigger\", false);\r\n i0.ɵɵadvance(2);\r\n i0.ɵɵproperty(\"routerLink\", i0.ɵɵpureFunction1(60, _c4, ctx_r0.server.id));\r\n i0.ɵɵadvance(5);\r\n i0.ɵɵproperty(\"routerLink\", i0.ɵɵpureFunction0(62, _c5));\r\n i0.ɵɵadvance(5);\r\n i0.ɵɵpropertyInterpolate1(\"routerLink\", \"/server/\", ctx_r0.server.id, \"/preferences\");\r\n i0.ɵɵadvance(5);\r\n i0.ɵɵpropertyInterpolate1(\"routerLink\", \"/server/\", ctx_r0.server.id, \"/systemstatus\");\r\n i0.ɵɵadvance(15);\r\n i0.ɵɵproperty(\"server\", ctx_r0.server)(\"project\", ctx_r0.project);\r\n i0.ɵɵadvance(1);\r\n i0.ɵɵproperty(\"matMenuTriggerFor\", _r9);\r\n i0.ɵɵadvance(5);\r\n i0.ɵɵproperty(\"matMenuTriggerFor\", _r10);\r\n i0.ɵɵadvance(5);\r\n i0.ɵɵproperty(\"overlapTrigger\", false);\r\n i0.ɵɵadvance(38);\r\n i0.ɵɵproperty(\"overlapTrigger\", false);\r\n i0.ɵɵadvance(3);\r\n i0.ɵɵproperty(\"ngModel\", ctx_r0.isInterfaceLabelVisible);\r\n i0.ɵɵadvance(3);\r\n i0.ɵɵproperty(\"ngModel\", ctx_r0.isConsoleVisible);\r\n i0.ɵɵadvance(3);\r\n i0.ɵɵproperty(\"ngModel\", ctx_r0.isTopologySummaryVisible);\r\n i0.ɵɵadvance(3);\r\n i0.ɵɵproperty(\"ngModel\", ctx_r0.notificationsVisibility);\r\n i0.ɵɵadvance(3);\r\n i0.ɵɵproperty(\"ngModel\", ctx_r0.layersVisibility);\r\n i0.ɵɵadvance(3);\r\n i0.ɵɵproperty(\"ngModel\", ctx_r0.gridVisibility);\r\n i0.ɵɵadvance(3);\r\n i0.ɵɵproperty(\"ngModel\", ctx_r0.project.snap_to_grid);\r\n i0.ɵɵadvance(3);\r\n i0.ɵɵproperty(\"ngModel\", ctx_r0.symbolScaling);\r\n i0.ɵɵadvance(3);\r\n i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction1(63, _c1, ctx_r0.isLightThemeEnabled));\r\n i0.ɵɵadvance(2);\r\n i0.ɵɵproperty(\"color\", ctx_r0.tools.moving ? \"basic\" : \"primary\");\r\n i0.ɵɵadvance(3);\r\n i0.ɵɵproperty(\"color\", ctx_r0.tools.moving ? \"primary\" : \"basic\");\r\n i0.ɵɵadvance(13);\r\n i0.ɵɵproperty(\"server\", ctx_r0.server)(\"project\", ctx_r0.project);\r\n i0.ɵɵadvance(1);\r\n i0.ɵɵproperty(\"ngIf\", !ctx_r0.readonly);\r\n i0.ɵɵadvance(2);\r\n i0.ɵɵproperty(\"ngIf\", ctx_r0.tools.draw_link);\r\n i0.ɵɵadvance(1);\r\n i0.ɵɵproperty(\"server\", ctx_r0.server)(\"project\", ctx_r0.project);\r\n i0.ɵɵadvance(1);\r\n i0.ɵɵproperty(\"server\", ctx_r0.server);\r\n i0.ɵɵadvance(1);\r\n i0.ɵɵproperty(\"server\", ctx_r0.server);\r\n i0.ɵɵadvance(1);\r\n i0.ɵɵproperty(\"server\", ctx_r0.server)(\"project\", ctx_r0.project);\r\n i0.ɵɵadvance(1);\r\n i0.ɵɵproperty(\"server\", ctx_r0.server)(\"project\", ctx_r0.project);\r\n i0.ɵɵadvance(1);\r\n i0.ɵɵproperty(\"server\", ctx_r0.server);\r\n i0.ɵɵadvance(1);\r\n i0.ɵɵproperty(\"server\", ctx_r0.server)(\"project\", ctx_r0.project);\r\n i0.ɵɵadvance(1);\r\n i0.ɵɵproperty(\"server\", ctx_r0.server);\r\n i0.ɵɵadvance(1);\r\n i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction1(65, _c6, !ctx_r0.isConsoleVisible));\r\n i0.ɵɵadvance(1);\r\n i0.ɵɵproperty(\"ngIf\", ctx_r0.project);\r\n} }\r\nfunction ProjectMapComponent_ng_template_1_Template(rf, ctx) { }\r\nexport class ProjectMapComponent {\r\n constructor(route, serverService, projectService, nodeService, drawingService, progressService, projectWebServiceHandler, mapChangeDetectorRef, nodeWidget, drawingsWidget, linkWidget, labelWidget, interfaceLabelWidget, mapNodeToNode, mapDrawingToDrawing, mapLabelToLabel, mapLinkToLink, mapLinkNodeToLinkNode, nodesDataSource, linksDataSource, drawingsDataSource, settingsService, toolsService, selectionManager, selectionTool, recentlyOpenedProjectService, movingEventSource, mapScaleService, nodeCreatedLabelStylesFixer, toasterService, dialog, router, mapNodesDataSource, mapLinksDataSource, mapDrawingsDataSource, mapSymbolsDataSource, mapSettingsService, ethernetLinkWidget, serialLinkWidget, bottomSheet, notificationService, themeService, title, nodeConsoleService, symbolService, cd, cfr, injector) {\r\n this.route = route;\r\n this.serverService = serverService;\r\n this.projectService = projectService;\r\n this.nodeService = nodeService;\r\n this.drawingService = drawingService;\r\n this.progressService = progressService;\r\n this.projectWebServiceHandler = projectWebServiceHandler;\r\n this.mapChangeDetectorRef = mapChangeDetectorRef;\r\n this.nodeWidget = nodeWidget;\r\n this.drawingsWidget = drawingsWidget;\r\n this.linkWidget = linkWidget;\r\n this.labelWidget = labelWidget;\r\n this.interfaceLabelWidget = interfaceLabelWidget;\r\n this.mapNodeToNode = mapNodeToNode;\r\n this.mapDrawingToDrawing = mapDrawingToDrawing;\r\n this.mapLabelToLabel = mapLabelToLabel;\r\n this.mapLinkToLink = mapLinkToLink;\r\n this.mapLinkNodeToLinkNode = mapLinkNodeToLinkNode;\r\n this.nodesDataSource = nodesDataSource;\r\n this.linksDataSource = linksDataSource;\r\n this.drawingsDataSource = drawingsDataSource;\r\n this.settingsService = settingsService;\r\n this.toolsService = toolsService;\r\n this.selectionManager = selectionManager;\r\n this.selectionTool = selectionTool;\r\n this.recentlyOpenedProjectService = recentlyOpenedProjectService;\r\n this.movingEventSource = movingEventSource;\r\n this.mapScaleService = mapScaleService;\r\n this.nodeCreatedLabelStylesFixer = nodeCreatedLabelStylesFixer;\r\n this.toasterService = toasterService;\r\n this.dialog = dialog;\r\n this.router = router;\r\n this.mapNodesDataSource = mapNodesDataSource;\r\n this.mapLinksDataSource = mapLinksDataSource;\r\n this.mapDrawingsDataSource = mapDrawingsDataSource;\r\n this.mapSymbolsDataSource = mapSymbolsDataSource;\r\n this.mapSettingsService = mapSettingsService;\r\n this.ethernetLinkWidget = ethernetLinkWidget;\r\n this.serialLinkWidget = serialLinkWidget;\r\n this.bottomSheet = bottomSheet;\r\n this.notificationService = notificationService;\r\n this.themeService = themeService;\r\n this.title = title;\r\n this.nodeConsoleService = nodeConsoleService;\r\n this.symbolService = symbolService;\r\n this.cd = cd;\r\n this.cfr = cfr;\r\n this.injector = injector;\r\n this.nodes = [];\r\n this.links = [];\r\n this.drawings = [];\r\n this.symbols = [];\r\n this.isProjectMapMenuVisible = false;\r\n this.isConsoleVisible = true;\r\n this.isTopologySummaryVisible = true;\r\n this.isInterfaceLabelVisible = false;\r\n this.notificationsVisibility = false;\r\n this.layersVisibility = false;\r\n this.gridVisibility = false;\r\n this.toolbarVisibility = true;\r\n this.symbolScaling = true;\r\n this.tools = {\r\n selection: true,\r\n moving: false,\r\n draw_link: false,\r\n text_editing: true,\r\n };\r\n this.inReadOnlyMode = false;\r\n this.scrollX = 0;\r\n this.scrollY = 0;\r\n this.scrollEnabled = false;\r\n this.isLightThemeEnabled = false;\r\n this.projectMapSubscription = new Subscription();\r\n }\r\n ngOnInit() {\r\n this.getSettings();\r\n this.progressService.activate();\r\n if (this.serverService.isServiceInitialized) {\r\n this.getData();\r\n }\r\n else {\r\n this.projectMapSubscription.add(this.serverService.serviceInitialized.subscribe((val) => {\r\n if (val)\r\n this.getData();\r\n }));\r\n }\r\n this.addSubscriptions();\r\n this.addKeyboardListeners();\r\n this.themeService.themeChanged.subscribe((value) => {\r\n this.themeService.getActualTheme() === 'light'\r\n ? (this.isLightThemeEnabled = true)\r\n : (this.isLightThemeEnabled = false);\r\n });\r\n }\r\n getSettings() {\r\n this.themeService.getActualTheme() === 'light'\r\n ? (this.isLightThemeEnabled = true)\r\n : (this.isLightThemeEnabled = false);\r\n this.cd.detectChanges();\r\n this.settings = this.settingsService.getAll();\r\n this.symbolScaling = this.mapSettingsService.getSymbolScaling();\r\n this.isConsoleVisible = this.mapSettingsService.isLogConsoleVisible;\r\n this.mapSettingsService.logConsoleSubject.subscribe((value) => (this.isConsoleVisible = value));\r\n this.notificationsVisibility = localStorage.getItem('notificationsVisibility') === 'true' ? true : false;\r\n this.layersVisibility = localStorage.getItem('layersVisibility') === 'true' ? true : false;\r\n this.gridVisibility = localStorage.getItem('gridVisibility') === 'true' ? true : false;\r\n }\r\n lazyLoadTopologySummary() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (this.isTopologySummaryVisible) {\r\n const { TopologySummaryComponent } = yield import('../topology-summary/topology-summary.component');\r\n this.instance = this.topologySummaryContainer.createComponent(TopologySummaryComponent);\r\n this.instance.instance.server = this.server;\r\n this.instance.instance.project = this.project;\r\n }\r\n else if (this.instance) {\r\n if (this.instance.instance) {\r\n this.instance.instance.ngOnDestroy();\r\n this.instance.destroy();\r\n }\r\n }\r\n });\r\n }\r\n addSubscriptions() {\r\n this.projectMapSubscription.add(this.mapSettingsService.mapRenderedEmitter.subscribe((value) => {\r\n if (this.scrollEnabled)\r\n this.centerCanvas();\r\n }));\r\n this.projectMapSubscription.add(this.drawingsDataSource.changes.subscribe((drawings) => {\r\n this.drawings = drawings;\r\n this.mapChangeDetectorRef.detectChanges();\r\n }));\r\n this.projectMapSubscription.add(this.nodesDataSource.changes.subscribe((nodes) => {\r\n if (!this.server)\r\n return;\r\n nodes.forEach((node) => __awaiter(this, void 0, void 0, function* () {\r\n node.symbol_url = `${this.server.protocol}//${this.server.host}:${this.server.port}/v2/symbols/${node.symbol}/raw`;\r\n // if (node.width == 0 && node.height == 0) {\r\n // let symbolDimensions = await this.symbolService.getDimensions(this.server, node.symbol).toPromise();\r\n // node.width = symbolDimensions.width;\r\n // node.height = symbolDimensions.height;\r\n // }\r\n }));\r\n this.nodes = nodes;\r\n if (this.mapSettingsService.getSymbolScaling())\r\n this.applyScalingOfNodeSymbols();\r\n this.mapChangeDetectorRef.detectChanges();\r\n }));\r\n this.projectMapSubscription.add(this.linksDataSource.changes.subscribe((links) => {\r\n this.links = links;\r\n this.mapChangeDetectorRef.detectChanges();\r\n }));\r\n this.projectMapSubscription.add(this.projectWebServiceHandler.errorNotificationEmitter.subscribe((message) => {\r\n this.showMessage({\r\n type: 'error',\r\n message: message,\r\n });\r\n }));\r\n this.projectMapSubscription.add(this.projectWebServiceHandler.warningNotificationEmitter.subscribe((message) => {\r\n this.showMessage({\r\n type: 'warning',\r\n message: message,\r\n });\r\n }));\r\n this.projectMapSubscription.add(this.mapSettingsService.symbolScalingSubject.subscribe((value) => {\r\n if (value)\r\n this.applyScalingOfNodeSymbols();\r\n }));\r\n }\r\n applyScalingOfNodeSymbols() {\r\n this.nodesDataSource.getItems().forEach((node) => {\r\n if (node.height > this.symbolService.getMaximumSymbolSize()) {\r\n let newDimensions = this.symbolService.scaleDimensionsForNode(node);\r\n node.width = newDimensions.width;\r\n node.height = newDimensions.height;\r\n }\r\n });\r\n }\r\n getData() {\r\n const routeSub = this.route.paramMap.subscribe((paramMap) => {\r\n const server_id = parseInt(paramMap.get('server_id'), 10);\r\n from(this.serverService.get(server_id))\r\n .pipe(mergeMap((server) => {\r\n if (!server)\r\n this.router.navigate(['/servers']);\r\n this.server = server;\r\n return this.projectService.get(server, paramMap.get('project_id')).pipe(map((project) => {\r\n return project;\r\n }));\r\n }), mergeMap((project) => {\r\n this.project = project;\r\n if (!project)\r\n this.router.navigate(['/servers']);\r\n this.projectService.open(this.server, this.project.project_id);\r\n this.title.setTitle(this.project.name);\r\n this.isInterfaceLabelVisible = this.mapSettingsService.showInterfaceLabels;\r\n this.toggleShowTopologySummary(this.mapSettingsService.isTopologySummaryVisible);\r\n this.recentlyOpenedProjectService.setServerId(this.server.id.toString());\r\n this.recentlyOpenedProjectService.setProjectId(this.project.project_id);\r\n if (this.project.status === 'opened') {\r\n return new Observable((observer) => {\r\n observer.next(this.project);\r\n });\r\n }\r\n else {\r\n return this.projectService.open(this.server, this.project.project_id);\r\n }\r\n }))\r\n .subscribe((project) => {\r\n this.onProjectLoad(project);\r\n }, (error) => {\r\n this.progressService.setError(error);\r\n }, () => {\r\n this.progressService.deactivate();\r\n });\r\n });\r\n this.projectMapSubscription.add(routeSub);\r\n }\r\n addKeyboardListeners() {\r\n Mousetrap.bind('ctrl++', (event) => {\r\n event.preventDefault();\r\n this.zoomIn();\r\n });\r\n Mousetrap.bind('ctrl+-', (event) => {\r\n event.preventDefault();\r\n this.zoomOut();\r\n });\r\n Mousetrap.bind('ctrl+0', (event) => {\r\n event.preventDefault();\r\n this.resetZoom();\r\n });\r\n Mousetrap.bind('ctrl+a', (event) => {\r\n event.preventDefault();\r\n let allNodes = this.mapNodesDataSource.getItems();\r\n let allDrawings = this.mapDrawingsDataSource.getItems();\r\n let allLinks = this.mapLinksDataSource.getItems();\r\n let allSymbols = this.mapSymbolsDataSource.getItems();\r\n this.selectionManager.setSelected(allNodes.concat(allDrawings).concat(allLinks).concat(allSymbols));\r\n });\r\n Mousetrap.bind('ctrl+h', (event) => {\r\n event.preventDefault();\r\n this.toolbarVisibility = !this.toolbarVisibility;\r\n });\r\n Mousetrap.bind('ctrl+shift+a', (event) => {\r\n event.preventDefault();\r\n this.selectionManager.setSelected([]);\r\n });\r\n Mousetrap.bind('ctrl+shift+s', (event) => {\r\n event.preventDefault();\r\n this.router.navigate(['/server', this.server.id, 'preferences']);\r\n });\r\n Mousetrap.bind('del', (event) => {\r\n event.preventDefault();\r\n this.deleteItems();\r\n });\r\n }\r\n deleteItems() {\r\n this.bottomSheet.open(ConfirmationBottomSheetComponent);\r\n let bottomSheetRef = this.bottomSheet._openedBottomSheetRef;\r\n bottomSheetRef.instance.message = 'Do you want to delete all selected objects?';\r\n const bottomSheetSubscription = bottomSheetRef.afterDismissed().subscribe((result) => {\r\n if (result) {\r\n const selected = this.selectionManager.getSelected();\r\n selected\r\n .filter((item) => item instanceof MapNode)\r\n .forEach((item) => {\r\n const node = this.mapNodeToNode.convert(item);\r\n this.nodeService.delete(this.server, node).subscribe((data) => {\r\n this.toasterService.success('Node has been deleted');\r\n });\r\n });\r\n }\r\n });\r\n }\r\n onProjectLoad(project) {\r\n this.readonly = this.projectService.isReadOnly(project);\r\n const subscription = this.projectService\r\n .nodes(this.server, project.project_id)\r\n .pipe(mergeMap((nodes) => {\r\n this.nodesDataSource.set(nodes);\r\n return this.projectService.links(this.server, project.project_id);\r\n }), mergeMap((links) => {\r\n this.linksDataSource.set(links);\r\n return this.projectService.drawings(this.server, project.project_id);\r\n }))\r\n .subscribe((drawings) => {\r\n this.drawingsDataSource.set(drawings);\r\n this.setUpMapCallbacks();\r\n this.setUpProjectWS(project);\r\n this.progressService.deactivate();\r\n });\r\n this.projectMapSubscription.add(subscription);\r\n }\r\n setUpProjectWS(project) {\r\n this.projectws = new WebSocket(this.notificationService.projectNotificationsPath(this.server, project.project_id));\r\n this.projectws.onmessage = (event) => {\r\n this.projectWebServiceHandler.handleMessage(JSON.parse(event.data));\r\n };\r\n this.projectws.onerror = (event) => {\r\n this.toasterService.error(`Connection to host lost. Error: ${event.data}`);\r\n };\r\n }\r\n setUpWS() {\r\n this.ws = new WebSocket(this.notificationService.notificationsPath(this.server));\r\n }\r\n setUpMapCallbacks() {\r\n if (!this.readonly) {\r\n this.toolsService.selectionToolActivation(true);\r\n }\r\n const onLinkContextMenu = this.linkWidget.onContextMenu.subscribe((eventLink) => {\r\n const link = this.mapLinkToLink.convert(eventLink.link);\r\n this.contextMenu.openMenuForListOfElements([], [], [], [link], eventLink.event.pageY, eventLink.event.pageX);\r\n });\r\n const onEthernetLinkContextMenu = this.ethernetLinkWidget.onContextMenu.subscribe((eventLink) => {\r\n const link = this.mapLinkToLink.convert(eventLink.link);\r\n this.contextMenu.openMenuForListOfElements([], [], [], [link], eventLink.event.pageY, eventLink.event.pageX);\r\n });\r\n const onSerialLinkContextMenu = this.serialLinkWidget.onContextMenu.subscribe((eventLink) => {\r\n const link = this.mapLinkToLink.convert(eventLink.link);\r\n this.contextMenu.openMenuForListOfElements([], [], [], [link], eventLink.event.pageY, eventLink.event.pageX);\r\n });\r\n const onNodeContextMenu = this.nodeWidget.onContextMenu.subscribe((eventNode) => {\r\n const node = this.mapNodeToNode.convert(eventNode.node);\r\n this.contextMenu.openMenuForNode(node, eventNode.event.pageY, eventNode.event.pageX);\r\n });\r\n const onDrawingContextMenu = this.drawingsWidget.onContextMenu.subscribe((eventDrawing) => {\r\n const drawing = this.mapDrawingToDrawing.convert(eventDrawing.drawing);\r\n this.contextMenu.openMenuForDrawing(drawing, eventDrawing.event.pageY, eventDrawing.event.pageX);\r\n });\r\n const onLabelContextMenu = this.labelWidget.onContextMenu.subscribe((eventLabel) => {\r\n const label = this.mapLabelToLabel.convert(eventLabel.label);\r\n const node = this.nodes.find((n) => n.node_id === eventLabel.label.nodeId);\r\n this.contextMenu.openMenuForLabel(label, node, eventLabel.event.screenY - 60, eventLabel.event.screenX);\r\n });\r\n const onInterfaceLabelContextMenu = this.interfaceLabelWidget.onContextMenu.subscribe((eventInterfaceLabel) => {\r\n const linkNode = this.mapLinkNodeToLinkNode.convert(eventInterfaceLabel.interfaceLabel);\r\n const link = this.links.find((l) => l.link_id === eventInterfaceLabel.interfaceLabel.linkId);\r\n this.contextMenu.openMenuForInterfaceLabel(linkNode, link, eventInterfaceLabel.event.pageY, eventInterfaceLabel.event.pageX);\r\n });\r\n const onContextMenu = this.selectionTool.contextMenuOpened.subscribe((event) => {\r\n const selectedItems = this.selectionManager.getSelected();\r\n if (selectedItems.length < 2 || !(event instanceof MouseEvent))\r\n return;\r\n let drawings = [];\r\n let nodes = [];\r\n let labels = [];\r\n let links = [];\r\n selectedItems.forEach((elem) => {\r\n if (elem instanceof MapDrawing) {\r\n drawings.push(this.mapDrawingToDrawing.convert(elem));\r\n }\r\n else if (elem instanceof MapNode) {\r\n nodes.push(this.mapNodeToNode.convert(elem));\r\n }\r\n else if (elem instanceof MapLabel) {\r\n labels.push(this.mapLabelToLabel.convert(elem));\r\n }\r\n else if (elem instanceof MapLink) {\r\n links.push(this.mapLinkToLink.convert(elem));\r\n }\r\n });\r\n this.contextMenu.openMenuForListOfElements(drawings, nodes, labels, links, event.pageY, event.pageX);\r\n });\r\n this.projectMapSubscription.add(onLinkContextMenu);\r\n this.projectMapSubscription.add(onEthernetLinkContextMenu);\r\n this.projectMapSubscription.add(onSerialLinkContextMenu);\r\n this.projectMapSubscription.add(onNodeContextMenu);\r\n this.projectMapSubscription.add(onDrawingContextMenu);\r\n this.projectMapSubscription.add(onContextMenu);\r\n this.projectMapSubscription.add(onLabelContextMenu);\r\n this.projectMapSubscription.add(onInterfaceLabelContextMenu);\r\n this.mapChangeDetectorRef.detectChanges();\r\n }\r\n onNodeCreation(nodeAddedEvent) {\r\n if (!nodeAddedEvent) {\r\n return;\r\n }\r\n nodeAddedEvent.x = nodeAddedEvent.x / this.mapScaleService.getScale();\r\n nodeAddedEvent.y = nodeAddedEvent.y / this.mapScaleService.getScale();\r\n this.progressService.activate();\r\n this.nodeService\r\n .createFromTemplate(this.server, this.project, nodeAddedEvent.template, nodeAddedEvent.x, nodeAddedEvent.y, nodeAddedEvent.server)\r\n .subscribe((node) => {\r\n // if (nodeAddedEvent.name !== nodeAddedEvent.template.name) {\r\n // node.name = nodeAddedEvent.name;\r\n // this.nodeService.updateNode(this.server, node).subscribe(()=>{});\r\n // }\r\n this.projectService.nodes(this.server, this.project.project_id).subscribe((nodes) => {\r\n nodes\r\n .filter((node) => node.label.style === null)\r\n .forEach((node) => {\r\n const fixedNode = this.nodeCreatedLabelStylesFixer.fix(node);\r\n this.nodeService.updateLabel(this.server, node, fixedNode.label).subscribe();\r\n });\r\n this.nodesDataSource.set(nodes);\r\n nodeAddedEvent.numberOfNodes--;\r\n if (nodeAddedEvent.numberOfNodes > 0) {\r\n nodeAddedEvent.x =\r\n nodeAddedEvent.x + 50 < this.project.scene_width / 2 ? nodeAddedEvent.x + 50 : nodeAddedEvent.x;\r\n nodeAddedEvent.y =\r\n nodeAddedEvent.y + 50 < this.project.scene_height / 2 ? nodeAddedEvent.y + 50 : nodeAddedEvent.y;\r\n this.onNodeCreation(nodeAddedEvent);\r\n }\r\n else {\r\n this.progressService.deactivate();\r\n }\r\n });\r\n }, (error) => {\r\n this.toasterService.error(error.error.message);\r\n this.progressService.deactivate();\r\n });\r\n }\r\n fitInView() {\r\n this.drawings.forEach((drawing) => {\r\n let splittedSvg = drawing.svg.split('\"');\r\n let height = parseInt(splittedSvg[1], 10);\r\n let width = parseInt(splittedSvg[3], 10);\r\n drawing.element = {\r\n width: width,\r\n height: height,\r\n };\r\n });\r\n if (this.nodes.length === 0 && this.drawings.length === 0) {\r\n return;\r\n }\r\n let minX, maxX, minY, maxY;\r\n let borderedNodes = [];\r\n this.nodes.forEach((n) => {\r\n let borderedNode = new BorderedNode();\r\n borderedNode.node = n;\r\n borderedNode.top = n.y;\r\n borderedNode.left = n.x;\r\n borderedNode.bottom = n.y + n.height;\r\n borderedNode.right = n.x + n.width;\r\n if (n.y + n.label.y < borderedNode.top) {\r\n borderedNode.top = n.y + n.label.y;\r\n }\r\n if (n.x + n.label.x < borderedNode.left) {\r\n borderedNode.left = n.x + n.label.x;\r\n }\r\n if (n.y + n.label.y > borderedNode.bottom) {\r\n borderedNode.bottom = n.y + n.label.y;\r\n }\r\n if (n.x + n.label.x > borderedNode.right) {\r\n borderedNode.right = n.x + n.label.x;\r\n }\r\n borderedNodes.push(borderedNode);\r\n });\r\n let nodeMinX = borderedNodes.sort((n, m) => n.left - m.left)[0];\r\n let nodeMaxX = borderedNodes.sort((n, m) => n.right - m.right)[borderedNodes.length - 1];\r\n let nodeMinY = borderedNodes.sort((n, m) => n.top - m.top)[0];\r\n let nodeMaxY = borderedNodes.sort((n, m) => n.bottom - m.bottom)[borderedNodes.length - 1];\r\n let borderedDrawings = [];\r\n this.drawings.forEach((n) => {\r\n let borderedDrawing = new BorderedDrawing();\r\n borderedDrawing.drawing = n;\r\n borderedDrawing.top = n.y;\r\n borderedDrawing.left = n.x;\r\n borderedDrawing.bottom = n.y + n.element.height;\r\n borderedDrawing.right = n.x + n.element.width;\r\n borderedDrawings.push(borderedDrawing);\r\n });\r\n let drawingMinX = borderedDrawings.sort((n, m) => n.left - m.left)[0];\r\n let drawingMaxX = borderedDrawings.sort((n, m) => n.right - m.right)[borderedDrawings.length - 1];\r\n let drawingMinY = borderedDrawings.sort((n, m) => n.top - m.top)[0];\r\n let drawingMaxY = borderedDrawings.sort((n, m) => n.bottom - m.bottom)[borderedDrawings.length - 1];\r\n if (drawingMinX && nodeMinX) {\r\n if (nodeMinX.left < drawingMinX.left) {\r\n minX = nodeMinX.left;\r\n }\r\n else {\r\n minX = drawingMinX.left;\r\n }\r\n if (nodeMaxX.right > drawingMaxX.right) {\r\n maxX = nodeMaxX.right;\r\n }\r\n else {\r\n maxX = drawingMaxX.right;\r\n }\r\n if (nodeMinY.top < drawingMinY.top) {\r\n minY = nodeMinY.top;\r\n }\r\n else {\r\n minY = drawingMinY.top;\r\n }\r\n if (nodeMaxY.bottom > drawingMaxY.bottom) {\r\n maxY = nodeMaxY.bottom;\r\n }\r\n else {\r\n maxY = drawingMaxY.bottom;\r\n }\r\n }\r\n else if (nodeMinX && !drawingMinX) {\r\n minX = nodeMinX.left;\r\n maxX = nodeMaxX.right;\r\n minY = nodeMinY.top;\r\n maxY = nodeMaxY.bottom;\r\n }\r\n else if (drawingMinX && !nodeMinX) {\r\n minX = drawingMinX.left;\r\n maxX = drawingMaxX.right;\r\n minY = drawingMinY.top;\r\n maxY = drawingMaxY.bottom;\r\n }\r\n else {\r\n minX = 0;\r\n maxX = 0;\r\n minY = 0;\r\n maxY = 0;\r\n }\r\n let margin = 20;\r\n minX = minX - margin;\r\n maxX = maxX + margin;\r\n minY = minY - margin;\r\n maxY = maxY + margin;\r\n let windowWidth = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;\r\n let windowHeight = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;\r\n let widthOfAreaToShow = maxX - minX;\r\n let heightOfAreaToShow = maxY - minY;\r\n let widthToSceneWidthRatio = widthOfAreaToShow / windowWidth;\r\n let heightToSceneHeightRatio = heightOfAreaToShow / windowHeight;\r\n let scale = 1 / Math.max(widthToSceneWidthRatio, heightToSceneHeightRatio);\r\n if (scale !== this.mapScaleService.currentScale) {\r\n this.mapScaleService.setScale(scale);\r\n this.project.scene_width = this.project.scene_width * scale;\r\n this.project.scene_height = this.project.scene_height * scale;\r\n if (heightToSceneHeightRatio < widthOfAreaToShow) {\r\n this.scrollX = minX * scale - (windowWidth - widthOfAreaToShow * scale) / 2 + this.project.scene_width / 2;\r\n this.scrollY = minY * scale + this.project.scene_height / 2;\r\n }\r\n else {\r\n this.scrollX = minX * scale + this.project.scene_width / 2;\r\n this.scrollY = minY * scale - (windowHeight - heightOfAreaToShow * scale) / 2 + this.project.scene_height / 2;\r\n }\r\n }\r\n else {\r\n this.scrollX = minX * scale + this.project.scene_width / 2;\r\n this.scrollY = minY * scale + this.project.scene_height / 2;\r\n }\r\n this.scrollEnabled = true;\r\n }\r\n centerCanvas() {\r\n window.scrollTo(this.scrollX, this.scrollY);\r\n this.scrollEnabled = false;\r\n }\r\n centerView() {\r\n if (this.project) {\r\n let scrollX = this.project.scene_width - document.documentElement.clientWidth > 0\r\n ? (this.project.scene_width - document.documentElement.clientWidth) / 2\r\n : 0;\r\n let scrollY = this.project.scene_height - document.documentElement.clientHeight > 0\r\n ? (this.project.scene_height - document.documentElement.clientHeight) / 2\r\n : 0;\r\n window.scrollTo(scrollX, scrollY);\r\n }\r\n else {\r\n this.toasterService.error('Please wait until all components are loaded.');\r\n }\r\n }\r\n onDrawingSaved() {\r\n this.projectMapMenuComponent.resetDrawToolChoice();\r\n }\r\n set readonly(value) {\r\n this.inReadOnlyMode = value;\r\n if (value) {\r\n this.tools.selection = false;\r\n this.toolsService.selectionToolActivation(false);\r\n }\r\n else {\r\n this.tools.selection = true;\r\n this.toolsService.selectionToolActivation(true);\r\n }\r\n }\r\n get readonly() {\r\n return this.inReadOnlyMode;\r\n }\r\n toggleSymbolScaling(value) {\r\n this.symbolScaling = value;\r\n this.mapSettingsService.setSymbolScaling(value);\r\n }\r\n toggleMovingMode() {\r\n this.tools.moving = !this.tools.moving;\r\n this.movingEventSource.movingModeState.emit(this.tools.moving);\r\n if (!this.readonly) {\r\n this.tools.selection = !this.tools.moving;\r\n this.toolsService.selectionToolActivation(this.tools.selection);\r\n }\r\n }\r\n toggleDrawLineMode() {\r\n this.tools.draw_link = !this.tools.draw_link;\r\n this.toolsService.drawLinkToolActivation(this.tools.draw_link);\r\n }\r\n toggleShowInterfaceLabels(enabled) {\r\n this.isInterfaceLabelVisible = enabled;\r\n this.mapSettingsService.toggleShowInterfaceLabels(this.isInterfaceLabelVisible);\r\n this.mapSettingsService.mapRenderedEmitter.emit(true);\r\n }\r\n toggleShowConsole(visible) {\r\n this.isConsoleVisible = visible;\r\n this.mapSettingsService.toggleLogConsole(this.isConsoleVisible);\r\n }\r\n toggleShowTopologySummary(visible) {\r\n this.isTopologySummaryVisible = visible;\r\n this.mapSettingsService.toggleTopologySummary(this.isTopologySummaryVisible);\r\n this.lazyLoadTopologySummary();\r\n }\r\n toggleNotifications(visible) {\r\n this.notificationsVisibility = visible;\r\n if (this.notificationsVisibility) {\r\n localStorage.setItem('notificationsVisibility', 'true');\r\n }\r\n else {\r\n localStorage.removeItem('notificationsVisibility');\r\n }\r\n }\r\n toggleLayers(visible) {\r\n this.layersVisibility = visible;\r\n this.mapSettingsService.toggleLayers(visible);\r\n if (this.layersVisibility) {\r\n localStorage.setItem('layersVisibility', 'true');\r\n }\r\n else {\r\n localStorage.removeItem('layersVisibility');\r\n }\r\n this.mapChild.applyMapSettingsChanges();\r\n }\r\n toggleGrid(visible) {\r\n this.gridVisibility = visible;\r\n if (this.gridVisibility) {\r\n localStorage.setItem('gridVisibility', 'true');\r\n }\r\n else {\r\n localStorage.removeItem('gridVisibility');\r\n }\r\n this.mapChild.gridVisibility = this.gridVisibility ? 1 : 0;\r\n }\r\n toggleSnapToGrid(enabled) {\r\n this.project.snap_to_grid = enabled;\r\n }\r\n showMessage(msg) {\r\n if (this.notificationsVisibility) {\r\n if (msg.type === 'error')\r\n this.toasterService.error(msg.message);\r\n if (msg.type === 'warning')\r\n this.toasterService.warning(msg.message);\r\n }\r\n }\r\n hideMenu() {\r\n this.projectMapMenuComponent.resetDrawToolChoice();\r\n this.isProjectMapMenuVisible = false;\r\n }\r\n showMenu() {\r\n this.isProjectMapMenuVisible = true;\r\n }\r\n zoomIn() {\r\n this.mapScaleService.setScale(this.mapScaleService.getScale() + 0.1);\r\n }\r\n zoomOut() {\r\n let currentScale = this.mapScaleService.getScale();\r\n if (currentScale - 0.1 > 0) {\r\n this.mapScaleService.setScale(currentScale - 0.1);\r\n }\r\n }\r\n resetZoom() {\r\n this.mapScaleService.resetToDefault();\r\n }\r\n addNewProject() {\r\n const dialogRef = this.dialog.open(AddBlankProjectDialogComponent, {\r\n width: '400px',\r\n autoFocus: false,\r\n disableClose: true,\r\n });\r\n let instance = dialogRef.componentInstance;\r\n instance.server = this.server;\r\n }\r\n saveProject() {\r\n const dialogRef = this.dialog.open(SaveProjectDialogComponent, {\r\n width: '400px',\r\n autoFocus: false,\r\n disableClose: true,\r\n });\r\n let instance = dialogRef.componentInstance;\r\n instance.server = this.server;\r\n instance.project = this.project;\r\n }\r\n editProject() {\r\n const dialogRef = this.dialog.open(EditProjectDialogComponent, {\r\n width: '600px',\r\n autoFocus: false,\r\n disableClose: true,\r\n });\r\n let instance = dialogRef.componentInstance;\r\n instance.server = this.server;\r\n instance.project = this.project;\r\n }\r\n importProject() {\r\n let uuid = '';\r\n const dialogRef = this.dialog.open(ImportProjectDialogComponent, {\r\n width: '400px',\r\n autoFocus: false,\r\n disableClose: true,\r\n });\r\n let instance = dialogRef.componentInstance;\r\n instance.server = this.server;\r\n const subscription = dialogRef.componentInstance.onImportProject.subscribe((projectId) => {\r\n uuid = projectId;\r\n });\r\n dialogRef.afterClosed().subscribe(() => {\r\n subscription.unsubscribe();\r\n if (uuid) {\r\n this.bottomSheet.open(NavigationDialogComponent);\r\n let bottomSheetRef = this.bottomSheet._openedBottomSheetRef;\r\n bottomSheetRef.instance.projectMessage = 'imported project';\r\n const bottomSheetSubscription = bottomSheetRef.afterDismissed().subscribe((result) => {\r\n if (result) {\r\n this.projectService.open(this.server, uuid).subscribe(() => {\r\n this.router.navigate(['/server', this.server.id, 'project', uuid]);\r\n });\r\n }\r\n });\r\n }\r\n });\r\n }\r\n exportProject() {\r\n if (this.nodes.filter((node) => node.node_type === 'virtualbox').length > 0) {\r\n this.toasterService.error('Map with VirtualBox machines cannot be exported.');\r\n }\r\n else if (this.nodes.filter((node) => (node.status === 'started' && node.node_type === 'vpcs') ||\r\n (node.status === 'started' && node.node_type === 'virtualbox') ||\r\n (node.status === 'started' && node.node_type === 'vmware')).length > 0) {\r\n this.toasterService.error('Project with running nodes cannot be exported.');\r\n }\r\n else {\r\n location.assign(this.projectService.getExportPath(this.server, this.project));\r\n }\r\n }\r\n uploadImageFile(event) {\r\n this.readImageFile(event.target);\r\n }\r\n readImageFile(fileInput) {\r\n let file = fileInput.files[0];\r\n let fileReader = new FileReader();\r\n let imageToUpload = new Image();\r\n fileReader.onloadend = () => {\r\n let image = fileReader.result;\r\n let svg = `\\n\\n`;\r\n this.drawingService\r\n .add(this.server, this.project.project_id, -(imageToUpload.width / 2), -(imageToUpload.height / 2), svg)\r\n .subscribe(() => { });\r\n };\r\n imageToUpload.onload = () => {\r\n fileReader.readAsDataURL(file);\r\n };\r\n imageToUpload.src = window.URL.createObjectURL(file);\r\n }\r\n closeProject() {\r\n this.bottomSheet.open(ConfirmationBottomSheetComponent);\r\n let bottomSheetRef = this.bottomSheet._openedBottomSheetRef;\r\n bottomSheetRef.instance.message = 'Do you want to close the project?';\r\n const bottomSheetSubscription = bottomSheetRef.afterDismissed().subscribe((result) => {\r\n if (result) {\r\n this.projectService.close(this.server, this.project.project_id).subscribe(() => {\r\n this.router.navigate(['/server', this.server.id, 'projects']);\r\n });\r\n }\r\n });\r\n }\r\n deleteProject() {\r\n this.bottomSheet.open(ConfirmationBottomSheetComponent);\r\n let bottomSheetRef = this.bottomSheet._openedBottomSheetRef;\r\n bottomSheetRef.instance.message = 'Do you want to delete the project?';\r\n const bottomSheetSubscription = bottomSheetRef.afterDismissed().subscribe((result) => {\r\n if (result) {\r\n this.projectService.delete(this.server, this.project.project_id).subscribe(() => {\r\n this.router.navigate(['/server', this.server.id, 'projects']);\r\n });\r\n }\r\n });\r\n }\r\n addNewTemplate() {\r\n const dialogRef = this.dialog.open(NewTemplateDialogComponent, {\r\n width: '1000px',\r\n maxHeight: '700px',\r\n autoFocus: false,\r\n disableClose: true,\r\n });\r\n let instance = dialogRef.componentInstance;\r\n instance.server = this.server;\r\n instance.project = this.project;\r\n }\r\n ngOnDestroy() {\r\n this.nodeConsoleService.openConsoles = 0;\r\n this.title.setTitle('GNS3 Web UI');\r\n this.drawingsDataSource.clear();\r\n this.nodesDataSource.clear();\r\n this.linksDataSource.clear();\r\n if (this.projectws) {\r\n if (this.projectws.OPEN)\r\n this.projectws.close();\r\n }\r\n if (this.ws) {\r\n if (this.ws.OPEN)\r\n this.ws.close();\r\n }\r\n this.projectMapSubscription.unsubscribe();\r\n }\r\n}\r\nProjectMapComponent.ɵfac = function ProjectMapComponent_Factory(t) { return new (t || ProjectMapComponent)(i0.ɵɵdirectiveInject(i1.ActivatedRoute), i0.ɵɵdirectiveInject(i2.ServerService), i0.ɵɵdirectiveInject(i3.ProjectService), i0.ɵɵdirectiveInject(i4.NodeService), i0.ɵɵdirectiveInject(i5.DrawingService), i0.ɵɵdirectiveInject(i6.ProgressService), i0.ɵɵdirectiveInject(i7.ProjectWebServiceHandler), i0.ɵɵdirectiveInject(i8.MapChangeDetectorRef), i0.ɵɵdirectiveInject(i9.NodeWidget), i0.ɵɵdirectiveInject(i10.DrawingsWidget), i0.ɵɵdirectiveInject(i11.LinkWidget), i0.ɵɵdirectiveInject(i12.LabelWidget), i0.ɵɵdirectiveInject(i13.InterfaceLabelWidget), i0.ɵɵdirectiveInject(i14.MapNodeToNodeConverter), i0.ɵɵdirectiveInject(i15.MapDrawingToDrawingConverter), i0.ɵɵdirectiveInject(i16.MapLabelToLabelConverter), i0.ɵɵdirectiveInject(i17.MapLinkToLinkConverter), i0.ɵɵdirectiveInject(i18.MapLinkNodeToLinkNodeConverter), i0.ɵɵdirectiveInject(i19.NodesDataSource), i0.ɵɵdirectiveInject(i20.LinksDataSource), i0.ɵɵdirectiveInject(i21.DrawingsDataSource), i0.ɵɵdirectiveInject(i22.SettingsService), i0.ɵɵdirectiveInject(i23.ToolsService), i0.ɵɵdirectiveInject(i24.SelectionManager), i0.ɵɵdirectiveInject(i25.SelectionTool), i0.ɵɵdirectiveInject(i26.RecentlyOpenedProjectService), i0.ɵɵdirectiveInject(i27.MovingEventSource), i0.ɵɵdirectiveInject(i28.MapScaleService), i0.ɵɵdirectiveInject(i29.NodeCreatedLabelStylesFixer), i0.ɵɵdirectiveInject(i30.ToasterService), i0.ɵɵdirectiveInject(i31.MatDialog), i0.ɵɵdirectiveInject(i1.Router), i0.ɵɵdirectiveInject(i32.MapNodesDataSource), i0.ɵɵdirectiveInject(i32.MapLinksDataSource), i0.ɵɵdirectiveInject(i32.MapDrawingsDataSource), i0.ɵɵdirectiveInject(i32.MapSymbolsDataSource), i0.ɵɵdirectiveInject(i33.MapSettingsService), i0.ɵɵdirectiveInject(i34.EthernetLinkWidget), i0.ɵɵdirectiveInject(i35.SerialLinkWidget), i0.ɵɵdirectiveInject(i36.MatBottomSheet), i0.ɵɵdirectiveInject(i37.NotificationService), i0.ɵɵdirectiveInject(i38.ThemeService), i0.ɵɵdirectiveInject(i39.Title), i0.ɵɵdirectiveInject(i40.NodeConsoleService), i0.ɵɵdirectiveInject(i41.SymbolService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i0.ComponentFactoryResolver), i0.ɵɵdirectiveInject(i0.Injector)); };\r\nProjectMapComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ProjectMapComponent, selectors: [[\"app-project-map\"]], viewQuery: function ProjectMapComponent_Query(rf, ctx) { if (rf & 1) {\r\n i0.ɵɵviewQuery(ContextMenuComponent, 5);\r\n i0.ɵɵviewQuery(D3MapComponent, 5);\r\n i0.ɵɵviewQuery(ProjectMapMenuComponent, 5);\r\n i0.ɵɵviewQuery(_c0, 5, ViewContainerRef);\r\n } if (rf & 2) {\r\n let _t;\r\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.contextMenu = _t.first);\r\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.mapChild = _t.first);\r\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.projectMapMenuComponent = _t.first);\r\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.topologySummaryContainer = _t.first);\r\n } }, decls: 3, vars: 1, consts: [[\"class\", \"project-map\", 3, \"ngClass\", 4, \"ngIf\"], [\"topologySummaryContainer\", \"\"], [1, \"project-map\", 3, \"ngClass\"], [3, \"server\", \"project\", \"symbols\", \"nodes\", \"links\", \"drawings\", \"width\", \"height\", \"show-interface-labels\", \"readonly\", \"nodeDragged\", \"drawingDragged\", \"onLinkCreated\", \"onDrawingResized\", 4, \"ngIf\"], [3, \"symbols\", \"nodes\", \"links\", \"drawings\", \"width\", \"height\", \"show-interface-labels\", \"selection-tool\", \"moving-tool\", \"draw-link-tool\", \"readonly\", 4, \"ngIf\"], [\"id\", \"project-titlebar\", 3, \"ngClass\"], [\"matTooltip\", \"Open menu\", \"matTooltipClass\", \"custom-tooltip\", \"mat-icon-button\", \"\", 1, \"gns3-button\", \"menu-button\", 3, \"matMenuTriggerFor\"], [\"svgIcon\", \"gns3\", 4, \"ngIf\"], [\"svgIcon\", \"gns3black\", 4, \"ngIf\"], [1, \"project-titlebar-controls\"], [\"class\", \"menu-button-group primary-controls\", 3, \"ngClass\", 4, \"ngIf\"], [1, \"menu-button-group\"], [3, \"server\", \"project\"], [3, \"project\", \"server\"], [\"matTooltip\", \"Toggle topology/servers summary\", \"matTooltipClass\", \"custom-tooltip\", \"mat-icon-button\", \"\", 3, \"ngClass\", \"click\"], [3, \"overlapTrigger\"], [\"mainMenu\", \"matMenu\"], [\"mat-menu-item\", \"\", 3, \"routerLink\"], [\"mat-menu-item\", \"\", \"routerLink\", \"/settings\"], [\"mat-menu-item\", \"\", 3, \"click\"], [\"mat-menu-item\", \"\", 3, \"matMenuTriggerFor\"], [\"projectMenu\", \"matMenu\"], [\"viewMenu\", \"matMenu\"], [1, \"options-item\"], [3, \"ngModel\", \"change\"], [\"id\", \"project-toolbar\", 3, \"ngClass\"], [1, \"section\"], [\"matTooltip\", \"Selection mode\", \"matTooltipClass\", \"custom-tooltip\", \"mat-icon-button\", \"\", 1, \"selection-button\", \"menu-button\", 3, \"color\", \"click\"], [\"matTooltip\", \"Pan workspace\", \"matTooltipClass\", \"custom-tooltip\", \"mat-icon-button\", \"\", 1, \"pan-button\", \"menu-button\", 3, \"color\", \"click\"], [\"matTooltip\", \"Zoom in\", \"matTooltipClass\", \"custom-tooltip\", \"mat-icon-button\", \"\", 1, \"zoom-button\", 3, \"click\"], [\"matTooltip\", \"Reset zoom\", \"matTooltipClass\", \"custom-tooltip\", \"mat-icon-button\", \"\", 1, \"reset-zoom-button\", 3, \"click\"], [\"matTooltip\", \"Zoom out\", \"matTooltipClass\", \"custom-tooltip\", \"mat-icon-button\", \"\", 1, \"zoom-button\", 3, \"click\"], [\"class\", \"section\", 4, \"ngIf\"], [3, \"links\", 4, \"ngIf\"], [3, \"server\"], [3, \"server\", \"project\", \"drawingSaved\"], [3, \"ngClass\"], [3, \"server\", \"project\", \"closeConsole\", 4, \"ngIf\"], [3, \"server\", \"project\", \"symbols\", \"nodes\", \"links\", \"drawings\", \"width\", \"height\", \"show-interface-labels\", \"readonly\", \"nodeDragged\", \"drawingDragged\", \"onLinkCreated\", \"onDrawingResized\"], [3, \"symbols\", \"nodes\", \"links\", \"drawings\", \"width\", \"height\", \"show-interface-labels\", \"selection-tool\", \"moving-tool\", \"draw-link-tool\", \"readonly\"], [\"svgIcon\", \"gns3\"], [\"svgIcon\", \"gns3black\"], [1, \"menu-button-group\", \"primary-controls\", 3, \"ngClass\"], [3, \"server\", \"project\", \"onNodeCreation\"], [\"matTooltip\", \"Add a link\", \"matTooltipClass\", \"custom-tooltip\", \"mat-icon-button\", \"\", 1, \"menu-button\", 3, \"ngClass\", \"color\", \"click\"], [3, \"links\"], [3, \"server\", \"project\", \"closeConsole\"]], template: function ProjectMapComponent_Template(rf, ctx) { if (rf & 1) {\r\n i0.ɵɵtemplate(0, ProjectMapComponent_div_0_Template, 156, 67, \"div\", 0);\r\n i0.ɵɵtemplate(1, ProjectMapComponent_ng_template_1_Template, 0, 0, \"ng-template\", null, 1, i0.ɵɵtemplateRefExtractor);\r\n } if (rf & 2) {\r\n i0.ɵɵproperty(\"ngIf\", ctx.project);\r\n } }, directives: [i42.NgIf, i42.NgClass, i43.MatButton, i44.MatTooltip, i45.MatMenuTrigger, i46.NodesMenuComponent, i47.ContextMenuComponent, i48.MatIcon, i45.MatMenu, i45.MatMenuItem, i1.RouterLink, i49.ImportApplianceComponent, i50.MatCheckbox, i51.NgControlStatus, i51.NgModel, i52.ProjectMapMenuComponent, i53.ProgressComponent, i54.DrawingDraggedComponent, i55.DrawingResizedComponent, i56.InterfaceLabelDraggedComponent, i57.LinkCreatedComponent, i58.NodeDraggedComponent, i59.NodeLabelDraggedComponent, i60.TextAddedComponent, i61.TextEditedComponent, i62.D3MapComponent, i63.ExperimentalMapComponent, i64.TemplateComponent, i65.SnapshotMenuItemComponent, i66.DrawLinkToolComponent, i67.ConsoleWrapperComponent], styles: [\".wrapper {\\n height: 600px;\\n}\\n\\napp-root,\\napp-project-map,\\n.project-map,\\napp-map {\\n width: auto;\\n}\\n\\ng.node:hover {\\n background-color: #0097a7;\\n}\\n\\n.project-map {\\n background-color: #e8ecef;\\n}\\n\\n#project-titlebar {\\n position: fixed;\\n top: 0px;\\n left: 0px;\\n right: 0px;\\n height: 60px;\\n padding: 0px 20px;\\n background-color: #20313b;\\n display: flex;\\n justify-content: space-between;\\n align-items: center;\\n box-shadow: 3px 3px 10px rgba(0, 0, 0, 0.2);\\n z-index: 2;\\n}\\n\\n#project-titlebar .gns3-button {\\n position: relative;\\n top: -2px;\\n}\\n\\n#project-titlebar .gns3-button mat-icon {\\n width: 30px !important;\\n height: 30px !important;\\n}\\n\\n#project-titlebar .primary-controls {\\n border-right: 1px solid rgba(255, 255, 255, 0.3);\\n padding-right: 15px;\\n margin-right: 15px;\\n}\\n\\n#project-titlebar .primary-controls.lightTheme {\\n border-right: 1px solid black;\\n}\\n\\n#project-titlebar .menu-button-group {\\n display: flex;\\n align-items: center;\\n height: 24px;\\n}\\n\\n#project-titlebar .menu-button {\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n height: 36px;\\n width: 36px;\\n margin: 0px 8px;\\n border-radius: 18px;\\n background: none;\\n font-size: 20px;\\n}\\n\\n#project-titlebar .add-menu-button mat-icon {\\n font-size: 28px !important;\\n}\\n\\n#project-titlebar .selected {\\n background: rgba(0, 151, 167, 0.1);\\n}\\n\\n#project-titlebar .selected mat-icon {\\n color: #0097a7 !important;\\n}\\n\\n#project-titlebar .project-titlebar-controls {\\n display: flex;\\n align-items: center;\\n}\\n\\n#project-titlebar.lightTheme {\\n background-color: white !important;\\n}\\n\\n#project-titlebar.lightTheme .selected mat-icon {\\n color: #0097a7 !important;\\n}\\n\\n#project-toolbar {\\n position: fixed;\\n top: 60px;\\n left: 0px;\\n width: 50px;\\n margin: 20px;\\n background-color: #20313b;\\n border-radius: 6px;\\n box-shadow: 1px 1px 10px rgba(0, 0, 0, 0.2);\\n z-index: 2;\\n}\\n\\n#project-toolbar mat-icon {\\n font-size: 20px;\\n}\\n\\n#project-toolbar .menu-button {\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n height: 36px;\\n width: 36px;\\n border-radius: 18px;\\n background: none;\\n margin: 2px 0px;\\n}\\n\\n#project-toolbar .zoom-button {\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n height: 36px;\\n width: 36px;\\n border-radius: 18px;\\n background: none;\\n margin: 2px 0px;\\n color: white;\\n}\\n\\n#project-toolbar .zoom-button mat-icon {\\n font-size: 24px !important;\\n}\\n\\n#project-toolbar .reset-zoom-button {\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n height: 36px;\\n width: 36px;\\n border-radius: 18px;\\n background: none;\\n margin: 2px 0px;\\n color: white;\\n}\\n\\n#project-toolbar .reset-zoom-button mat-icon {\\n font-size: 18px !important;\\n}\\n\\n#project-toolbar .selection-button {\\n margin-bottom: 0px !important;\\n}\\n\\n#project-toolbar .snapshot-button mat-icon {\\n font-size: 16px;\\n}\\n\\n#project-toolbar .section {\\n display: flex;\\n flex-direction: column;\\n justify-content: center;\\n align-items: center;\\n border-top: 1px solid rgba(255, 255, 255, 0.3);\\n padding: 5px 0px;\\n}\\n\\n#project-toolbar .section:first-child {\\n border: none;\\n}\\n\\n#project-toolbar.lightTheme {\\n background-color: rgba(244, 248, 252, 0.95) !important;\\n}\\n\\n#project-toolbar.lightTheme .zoom-button {\\n opacity: 0.7;\\n color: black;\\n}\\n\\n#project-toolbar.lightTheme .reset-zoom-button {\\n opacity: 0.7;\\n color: black;\\n}\\n\\n#project-toolbar.lightTheme .section {\\n border-top: 1px solid rgba(0, 0, 0, 0.1);\\n}\\n\\n#project-toolbar.lightTheme .section:first-child {\\n border: none;\\n}\\n\\nimg {\\n filter: invert(1);\\n}\\n\\n.lightTheme {\\n color: black !important;\\n}\\n\\n.darkTheme {\\n color: white !important;\\n}\\n\\n#show-menu-wrapper {\\n position: fixed;\\n background: transparent;\\n top: 0px;\\n left: 92px;\\n background: #263238;\\n height: 72px;\\n padding-top: 16px;\\n}\\n\\n#show-menu-wrapper .arrow-button {\\n outline: 0 !important;\\n}\\n\\n.shadowed {\\n box-shadow: 0 4px 8px -4px rgba(0, 0, 0, 0.2), 0 6px 20px -20px rgba(0, 0, 0, 0.19);\\n}\\n\\n.non-visible {\\n display: none;\\n}\\n\\n#menu-wrapper {\\n position: fixed;\\n background: transparent;\\n top: 0px;\\n left: 92px;\\n right: 0px;\\n background: #263238;\\n height: 72px;\\n padding-top: 16px;\\n padding-bottom: 16px;\\n transition: 35s;\\n width: 0;\\n overflow: hidden;\\n transition: 0.15s;\\n box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);\\n display: flex;\\n}\\n\\n#menu-wrapper .menu-button {\\n outline: 0 !important;\\n transition: 0.5s;\\n margin-bottom: 16px;\\n width: 40px;\\n margin-right: 12px !important;\\n margin-left: 12px !important;\\n background: transparent;\\n padding: 0;\\n border: none;\\n background-color: transparent;\\n}\\n\\n#menu-wrapper .arrow-button {\\n outline: 0 !important;\\n transition: 0.5s;\\n margin-bottom: 16px;\\n}\\n\\n.extended {\\n width: 830px !important;\\n height: 100%;\\n overflow: hidden;\\n}\\n\\nmat-divider.divider {\\n height: 40px;\\n margin-left: 1px;\\n margin-right: 7px;\\n width: 10px;\\n color: gray;\\n}\\n\\n@-moz-document url-prefix() {\\n /** fixes gray background of drawing menu on Firefox **/\\n .mat-drawer-content {\\n display: inline !important;\\n }\\n}\\n\\n.shadow {\\n box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);\\n}\\n\\n.mat-drawer-backdrop.mat-drawer-shown {\\n background-color: transparent;\\n}\\n\\n.project-toolbar .mat-toolbar-multiple-rows {\\n width: auto !important;\\n}\\n\\n.loading-spinner {\\n position: absolute;\\n top: 50%;\\n width: 100px;\\n margin-left: -50px;\\n margin-top: -50px;\\n left: 50%;\\n}\\n\\nline.selected {\\n stroke: #0097a7 !important;\\n}\\n\\nsvg.map image:hover,\\nsvg.map image.chosen,\\ng.selected {\\n -moz-filter: grayscale(100%);\\n -ms-filter: grayscale(100%);\\n -o-filter: grayscale(100%);\\n filter: grayscale(100%);\\n filter: gray;\\n filter: url(\\\"#grayscale\\\");\\n /* Chrome doesn't support CSS filters on SVG */\\n}\\n\\npath.selected {\\n stroke: darkred;\\n}\\n\\n.selected > .interface_label_border {\\n stroke: black;\\n fill: none;\\n}\\n\\n.selection-line-tool .selection {\\n fill: #7ccbe1;\\n stroke: #66aec2;\\n fill-opacity: 0.3;\\n stroke-opacity: 0.7;\\n stroke-width: 1;\\n stroke-dasharray: 5, 5;\\n}\\n\\ng.node text,\\n.noselect {\\n -webkit-touch-callout: none;\\n -webkit-user-select: none;\\n user-select: none;\\n}\\n\\n/* Disable outline after button click */\\n\\n.project-toolbar button {\\n outline: 0;\\n border: none;\\n -moz-outline-style: none;\\n}\\n\\n.options-item {\\n padding-left: 15px;\\n padding-right: 15px;\\n}\\n\\n.context-menu-items .mat-menu-item {\\n line-height: 24px !important;\\n height: 24px !important;\\n font-size: 13px !important;\\n padding: 0 6px;\\n outline: none !important;\\n}\\n\\n.context-menu-items .mat-menu-item .mat-icon {\\n margin-right: 3px;\\n}\\n\\n.context-menu-items .mat-menu-item:focus {\\n background: none;\\n}\\n\\n.visible {\\n display: none;\\n}\\n\\nmat-menu-panel {\\n min-height: 0px;\\n}\\n\\n.unmarked {\\n color: white !important;\\n}\\n\\n.unmarkedLight {\\n color: black !important;\\n}\\n\\n.marked {\\n color: #0097a7 !important;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInByb2plY3QtbWFwLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsYUFBQTtBQUNGOztBQUVBOzs7O0VBSUUsV0FBQTtBQUNGOztBQUVBO0VBQ0UseUJBQUE7QUFDRjs7QUFFQTtFQUNFLHlCQUFBO0FBQ0Y7O0FBRUE7RUFDRSxlQUFBO0VBQ0EsUUFBQTtFQUNBLFNBQUE7RUFDQSxVQUFBO0VBQ0EsWUFBQTtFQUNBLGlCQUFBO0VBQ0EseUJBQUE7RUFDQSxhQUFBO0VBQ0EsOEJBQUE7RUFDQSxtQkFBQTtFQUNBLDJDQUFBO0VBQ0EsVUFBQTtBQUNGOztBQUNFO0VBQ0Usa0JBQUE7RUFDQSxTQUFBO0FBQ0o7O0FBQ0k7RUFDRSxzQkFBQTtFQUNBLHVCQUFBO0FBQ047O0FBR0U7RUFDRSxnREFBQTtFQUNBLG1CQUFBO0VBQ0Esa0JBQUE7QUFESjs7QUFHSTtFQUNFLDZCQUFBO0FBRE47O0FBS0U7RUFDRSxhQUFBO0VBQ0EsbUJBQUE7RUFDQSxZQUFBO0FBSEo7O0FBTUU7RUFDRSxhQUFBO0VBQ0EsdUJBQUE7RUFDQSxtQkFBQTtFQUNBLFlBQUE7RUFDQSxXQUFBO0VBQ0EsZUFBQTtFQUNBLG1CQUFBO0VBQ0EsZ0JBQUE7RUFDQSxlQUFBO0FBSko7O0FBT0U7RUFDRSwwQkFBQTtBQUxKOztBQVFFO0VBQ0Usa0NBQUE7QUFOSjs7QUFRSTtFQUNFLHlCQUFBO0FBTk47O0FBVUU7RUFDRSxhQUFBO0VBQ0EsbUJBQUE7QUFSSjs7QUFXRTtFQUNFLGtDQUFBO0FBVEo7O0FBV0k7RUFDRSx5QkFBQTtBQVROOztBQWNBO0VBQ0UsZUFBQTtFQUNBLFNBQUE7RUFDQSxTQUFBO0VBQ0EsV0FBQTtFQUNBLFlBQUE7RUFDQSx5QkFBQTtFQUNBLGtCQUFBO0VBQ0EsMkNBQUE7RUFDQSxVQUFBO0FBWEY7O0FBYUU7RUFDRSxlQUFBO0FBWEo7O0FBY0U7RUFDRSxhQUFBO0VBQ0EsdUJBQUE7RUFDQSxtQkFBQTtFQUNBLFlBQUE7RUFDQSxX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Rjs7QUFnQ0E7RUFDRSxrQkFBQTtFQUNBLG1CQUFBO0FBN0JGOztBQWdDQTtFQUNFLDRCQUFBO0VBQ0EsdUJBQUE7RUFDQSwwQkFBQTtFQUNBLGNBQUE7RUFDQSx3QkFBQTtBQTdCRjs7QUFnQ0E7RUFDRSxpQkFBQTtBQTdCRjs7QUFnQ0E7RUFDRSxnQkFBQTtBQTdCRjs7QUFnQ0E7RUFDRSxhQUFBO0FBN0JGOztBQWdDQTtFQUNFLGVBQUE7QUE3QkY7O0FBZ0NBO0VBQ0UsdUJBQUE7QUE3QkY7O0FBZ0NBO0VBQ0UsdUJBQUE7QUE3QkY7O0FBZ0NBO0VBQ0UseUJBQUE7QUE3QkYiLCJmaWxlIjoicHJvamVjdC1tYXAuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIud3JhcHBlciB7XHJcbiAgaGVpZ2h0OiA2MDBweDtcclxufVxyXG5cclxuYXBwLXJvb3QsXHJcbmFwcC1wcm9qZWN0LW1hcCxcclxuLnByb2plY3QtbWFwLFxyXG5hcHAtbWFwIHtcclxuICB3aWR0aDogYXV0bztcclxufVxyXG5cclxuZy5ub2RlOmhvdmVyIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA5N2E3O1xyXG59XHJcblxyXG4ucHJvamVjdC1tYXAge1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICNlOGVjZWY7XHJcbn1cclxuXHJcbiNwcm9qZWN0LXRpdGxlYmFyIHtcclxuICBwb3NpdGlvbjogZml4ZWQ7XHJcbiAgdG9wOiAwcHg7XHJcbiAgbGVmdDogMHB4O1xyXG4gIHJpZ2h0OiAwcHg7XHJcbiAgaGVpZ2h0OiA2MHB4O1xyXG4gIHBhZGRpbmc6IDBweCAyMHB4O1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICMyMDMxM2I7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICBib3gtc2hhZG93OiAzcHggM3B4IDEwcHggcmdiYSgwLCAwLCAwLCAwLjIpO1xyXG4gIHotaW5kZXg6IDI7XHJcblxyXG4gIC5nbnMzLWJ1dHRvbiB7XHJcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICB0b3A6IC0ycHg7XHJcblxyXG4gICAgbWF0LWljb24ge1xyXG4gICAgICB3aWR0aDogMzBweCAhaW1wb3J0YW50O1xyXG4gICAgICBoZWlnaHQ6IDMwcHggIWltcG9ydGFudDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5wcmltYXJ5LWNvbnRyb2xzIHtcclxuICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zKTtcclxuICAgIHBhZGRpbmctcmlnaHQ6IDE1cHg7XHJcbiAgICBtYXJnaW4tcmlnaHQ6IDE1cHg7XHJcblxyXG4gICAgJi5saWdodFRoZW1lIHtcclxuICAgICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgYmxhY2s7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAubWVudS1idXR0b24tZ3JvdXAge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICBoZWlnaHQ6IDI0cHg7XHJcbiAgfVxyXG5cclxuICAubWVudS1idXR0b24ge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgIGhlaWdodDogMzZweDtcclxuICAgIHdpZHRoOiAzNnB4O1xyXG4gICAgbWFyZ2luOiAwcHggOHB4O1xyXG4gICAgYm9yZGVyLXJhZGl1czogMThweDtcclxuICAgIGJhY2tncm91bmQ6IG5vbmU7XHJcbiAgICBmb250LXNpemU6IDIwcHg7XHJcbiAgfVxyXG5cclxuICAuYWRkLW1lbnUtYnV0dG9uIG1hdC1pY29uIHtcclxuICAgIGZvbnQtc2l6ZTogMjhweCAhaW1wb3J0YW50O1xyXG4gIH1cclxuXHJcbiAgLnNlbGVjdGVkIHtcclxuICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMTUxLCAxNjcsIDAuMSk7XHJcblxyXG4gICAgbWF0LWljb24ge1xyXG4gICAgICBjb2xvcjogIzAwOTdhNyAhaW1wb3J0YW50O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLnByb2plY3QtdGl0bGViYXItY29udHJvbHMge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgfVxyXG5cclxuICAmLmxpZ2h0VGhlbWUge1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGUgIWltcG9ydGFudDtcclxuXHJcbiAgICAuc2VsZWN0ZWQgbWF0LWljb24ge1xyXG4gICAgICBjb2xvcjogIzAwOTdhNyAhaW1wb3J0YW50O1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuI3Byb2plY3QtdG9vbGJhciB7XHJcbiAgcG9zaXRpb246IGZpeGVkO1xyXG4gIHRvcDogNjBweDtcclxuICBsZWZ0OiAwcHg7XHJcbiAgd2lkdGg6IDUwcHg7XHJcbiAgbWFyZ2luOiAyMHB4O1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICMyMDMxM2I7XHJcbiAgYm9yZGVyLXJhZGl1czogNnB4O1xyXG4gIGJveC1zaGFkb3c6IDFweCAxcHggMTBweCByZ2JhKDAsIDAsIDAsIDAuMik7XHJcbiAgei1pbmRleDogMjtcclxuXHJcbiAgbWF0LWljb24ge1xyXG4gICAgZm9udC1zaXplOiAyMHB4O1xyXG4gIH1cclxuXHJcbiAgLm1lbnUtYnV0dG9uIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICBoZWlnaHQ6IDM2cHg7XHJcbiAgICB3aWR0aDogMzZweDtcclxuICAgIGJvcmRlci1yYWRpdXM6IDE4cHg7XHJcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xyXG4gICAgbWFyZ2luOiAycHggMHB4O1xyXG4gIH1cclxuXHJcbiAgLnpvb20tYnV0dG9uIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICBoZWlnaHQ6IDM2cHg7XHJcbiAgICB3aWR0aDogMzZweDtcclxuICAgIGJvcmRlci1yYWRpdXM6IDE4cHg7XHJcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xyXG4gICAgbWFyZ2luOiAycHggMHB4O1xyXG4gICAgY29sb3I6IHdoaXRlO1xyXG5cclxuICAgIG1hdC1pY29uIHtcclxuICAgICAgZm9udC1zaXplOiAyNHB4ICFpbXBvcnRhbnQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAucmVzZXQtem9vbS1idXR0b24ge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgIGhlaWdodDogMzZweDtcclxuICAgIHdpZHRoOiAzNnB4O1xyXG4gICAgYm9yZGVyLXJhZGl1czogMThweDtcclxuICAgIGJhY2tncm91bmQ6IG5vbmU7XHJcbiAgICBtYXJnaW46IDJweCAwcHg7XHJcbiAgICBjb2xvcjogd2hpdGU7XHJcblxyXG4gICAgbWF0LWljb24ge1xyXG4gICAgICBmb250LXNpemU6IDE4cHggIWltcG9ydGFudDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5zZWxlY3Rpb24tYnV0dG9uIHtcclxuICAgIG1hcmdpbi1ib3R0b206IDBweCAhaW1wb3J0YW50O1xyXG4gIH1cclxuXHJcbiAgLnNuYXBzaG90LWJ1dHRvbiBtYXQtaWNvbiB7XHJcbiAgICBmb250LXNpemU6IDE2cHg7XHJcbiAgfVxyXG5cclxuICAuc2VjdGlvbiB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMyk7XHJcbiAgICBwYWRkaW5nOiA1cHggMHB4O1xyXG5cclxuICAgICY6Zmlyc3QtY2hpbGQge1xyXG4gICAgICBib3JkZXI6IG5vbmU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmLmxpZ2h0VGhlbWUge1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNDQsIDI0OCwgMjUyLCAwLjk1KSAhaW1wb3J0YW50O1xyXG5cclxuICAgIC56b29tLWJ1dHRvbiB7XHJcbiAgICAgIG9wYWNpdHk6IDAuNztcclxuICAgICAgY29sb3I6IGJsYWNrO1xyXG4gICAgfVxyXG5cclxuICAgIC5yZXNldC16b29tLWJ1dHRvbiB7XHJcbiAgICAgIG9wYWNpdHk6IDAuNztcclxuICAgICAgY29sb3I6IGJsYWNrO1xyXG4gICAgfVxyXG5cclxuICAgIC5zZWN0aW9uIHtcclxuICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4xKTtcclxuXHJcbiAgICAgICY6Zmlyc3QtY2hpbGQge1xyXG4gICAgICAgIGJvcmRlcjogbm9uZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuaW1nIHtcclxuICAtd2Via2l0LWZpbHRlcjogaW52ZXJ0KDEpO1xyXG4gIGZpbHRlcjogaW52ZXJ0KDEpO1xyXG59XHJcblxyXG4ubGlnaHRUaGVtZSB7XHJcbiAgY29sb3I6IGJsYWNrICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi5kYXJrVGhlbWUge1xyXG4gIGNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4jc2hvdy1tZW51LXdyYXBwZXIge1xyXG4gIHBvc2l0aW9uOiBmaXhlZDtcclxuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcclxuICB0b3A6IDBweDtcclxuICBsZWZ0OiA5MnB4O1xyXG4gIGJhY2tncm91bmQ6ICMyNjMyMzg7XHJcbiAgaGVpZ2h0OiA3MnB4O1xyXG4gIHBhZGRpbmctdG9wOiAxNnB4O1xyXG5cclxuICAuYXJyb3ctYnV0dG9uIHtcclxuICAgIG91dGxpbmU6IDAgIWltcG9ydGFudDtcclxuICB9XHJcbn1cclxuXHJcbi5zaGFkb3dlZCB7XHJcbiAgYm94LXNoYWRvdzogMCA0cHggOHB4IC00cHggcmdiYSgwLCAwLCAwLCAwLjIpLCAwIDZweCAyMHB4IC0yMHB4IHJnYmEoMCwgMCwgMCwgMC4xOSk7XHJcbn1cclxuXHJcbi5ub24tdmlzaWJsZSB7XHJcbiAgZGlzcGxheTogbm9uZTtcclxufVxyXG5cclxuI21lbnUtd3JhcHBlciB7XHJcbiAgcG9zaXRpb246IGZpeGVkO1xyXG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xyXG4gIHRvcDogMHB4O1xyXG4gIGxlZnQ6IDkycHg7XHJcbiAgcmlnaHQ6IDBweDtcclxuICBiYWNrZ3JvdW5kOiAjMjYzMjM4O1xyXG4gIGhlaWdodDogNzJweDtcclxuICBwYWRkaW5nLXRvcDogMTZweDtcclxuICBwYWRkaW5nLWJvdHRvbTogMTZweDtcclxuICB0cmFuc2l0aW9uOiAzNXM7XHJcbiAgd2lkdGg6IDA7XHJcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICB0cmFuc2l0aW9uOiAwLjE1cztcclxuICBib3gtc2hhZG93OiAwIDRweCA4cHggMCByZ2JhKDAsIDAsIDAsIDAuMiksIDAgNnB4IDIwcHggMCByZ2JhKDAsIDAsIDAsIDAuMTkpO1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcblxyXG4gIC5tZW51LWJ1dHRvbiB7XHJcbiAgICBvdXRsaW5lOiAwICFpbXBvcnRhbnQ7XHJcbiAgICB0cmFuc2l0aW9uOiAwLjVzO1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMTZweDtcclxuICAgIHdpZHRoOiA0MHB4O1xyXG4gICAgbWFyZ2luLXJpZ2h0OiAxMnB4ICFpbXBvcnRhbnQ7XHJcbiAgICBtYXJnaW4tbGVmdDogMTJweCAhaW1wb3J0YW50O1xyXG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XHJcbiAgICBwYWRkaW5nOiAwO1xyXG4gICAgYm9yZGVyOiBub25lO1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiAgfVxyXG5cclxuICAuYXJyb3ctYnV0dG9uIHtcclxuICAgIG91dGxpbmU6IDAgIWltcG9ydGFudDtcclxuICAgIHRyYW5zaXRpb246IDAuNXM7XHJcbiAgICBtYXJnaW4tYm90dG9tOiAxNnB4O1xyXG4gIH1cclxufVxyXG5cclxuLmV4dGVuZGVkIHtcclxuICB3aWR0aDogODMwcHggIWltcG9ydGFudDtcclxuICBoZWlnaHQ6IDEwMCU7XHJcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcclxufVxyXG5cclxubWF0LWRpdmlkZXIuZGl2aWRlciB7XHJcbiAgaGVpZ2h0OiA0MHB4O1xyXG4gIG1hcmdpbi1sZWZ0OiAxcHg7XHJcbiAgbWFyZ2luLXJpZ2h0OiA3cHg7XHJcbiAgd2lkdGg6IDEwcHg7XHJcbiAgY29sb3I6IGdyYXk7XHJcbn1cclxuXHJcbkAtbW96LWRvY3VtZW50IHVybC1wcmVmaXgoKSB7XHJcbiAgLyoqIGZpeGVzIGdyYXkgYmFja2dyb3VuZCBvZiBkcmF3aW5nIG1lbnUgb24gRmlyZWZveCAqKi9cclxuICAubWF0LWRyYXdlci1jb250ZW50IHtcclxuICAgIGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50O1xyXG4gIH1cclxufVxyXG5cclxuLnNoYWRvdyB7XHJcbiAgYm94LXNoYWRvdzogMCA0cHggOHB4IDAgcmdiYSgwLCAwLCAwLCAwLjIpLCAwIDZweCAyMHB4IDAgcmdiYSgwLCAwLCAwLCAwLjE5KTtcclxufVxyXG5cclxuLm1hdC1kcmF3ZXItYmFja2Ryb3AubWF0LWRyYXdlci1zaG93biB7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbn1cclxuXHJcbi5wcm9qZWN0LXRvb2xiYXIgLm1hdC10b29sYmFyLW11bHRpcGxlLXJvd3Mge1xyXG4gIHdpZHRoOiBhdXRvICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi5sb2FkaW5nLXNwaW5uZXIge1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICB0b3A6IDUwJTtcclxuICB3aWR0aDogMTAwcHg7XHJcbiAgbWFyZ2luLWxlZnQ6IC01MHB4O1xyXG4gIG1hcmdpbi10b3A6IC01MHB4O1xyXG4gIGxlZnQ6IDUwJTtcclxufVxyXG5cclxubGluZS5zZWxlY3RlZCB7XHJcbiAgc3Ryb2tlOiAjMDA5N2E3ICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbnN2Zy5tYXAgaW1hZ2U6aG92ZXIsXHJcbnN2Zy5tYXAgaW1hZ2UuY2hvc2VuLFxyXG5nLnNlbGVjdGVkIHtcclxuICAtd2Via2l0LWZpbHRlcjogZ3JheXNjYWxlKDEwMCUpO1xyXG4gIC1tb3otZmlsdGVyOiBncmF5c2NhbGUoMTAwJSk7XHJcbiAgLW1zLWZpbHRlcjogZ3JheXNjYWxlKDEwMCUpO1xyXG4gIC1vLWZpbHRlcjogZ3JheXNjYWxlKDEwMCUpO1xyXG4gIGZpbHRlcjogZ3JheXNjYWxlKDEwMCUpO1xyXG4gIGZpbHRlcjogZ3JheTtcclxuICBmaWx0ZXI6IHVybCgnI2dyYXlzY2FsZScpOyAvKiBDaHJvbWUgZG9lc24ndCBzdXBwb3J0IENTUyBmaWx0ZXJzIG9uIFNWRyAqL1xyXG59XHJcblxyXG5wYXRoLnNlbGVjdGVkIHtcclxuICBzdHJva2U6IGRhcmtyZWQ7XHJcbn1cclxuXHJcbi5zZWxlY3RlZCA+IC5pbnRlcmZhY2VfbGFiZWxfYm9yZGVyIHtcclxuICBzdHJva2U6IGJsYWNrO1xyXG4gIGZpbGw6IG5vbmU7XHJcbn1cclxuXHJcbi5zZWxlY3Rpb24tbGluZS10b29sIC5zZWxlY3Rpb24ge1xyXG4gIGZpbGw6ICM3Y2NiZTE7XHJcbiAgc3Ryb2tlOiAjNjZhZWMyO1xyXG4gIGZpbGwtb3BhY2l0eTogMC4zO1xyXG4gIHN0cm9rZS1vcGFjaXR5OiAwLjc7XHJcbiAgc3Ryb2tlLXdpZHRoOiAxO1xyXG4gIHN0cm9rZS1kYXNoYXJyYXk6IDUsIDU7XHJcbn1cclxuXHJcbmcubm9kZSB0ZXh0LFxyXG4ubm9zZWxlY3Qge1xyXG4gIC13ZWJraXQtdG91Y2gtY2FsbG91dDogbm9uZTtcclxuICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lO1xyXG4gIC1raHRtbC11c2VyLXNlbGVjdDogbm9uZTtcclxuICAtbW96LXVzZXItc2VsZWN0OiBub25lO1xyXG4gIC1tcy11c2VyLXNlbGVjdDogbm9uZTtcclxuICB1c2VyLXNlbGVjdDogbm9uZTtcclxufVxyXG5cclxuLyogRGlzYWJsZSBvdXRsaW5lIGFmdGVyIGJ1dHRvbiBjbGljayAqL1xyXG4ucHJvamVjdC10b29sYmFyIGJ1dHRvbiB7XHJcbiAgb3V0bGluZTogMDtcclxuICBib3JkZXI6IG5vbmU7XHJcbiAgLW1vei1vdXRsaW5lLXN0eWxlOiBub25lO1xyXG59XHJcblxyXG4ub3B0aW9ucy1pdGVtIHtcclxuICBwYWRkaW5nLWxlZnQ6IDE1cHg7XHJcbiAgcGFkZGluZy1yaWdodDogMTVweDtcclxufVxyXG5cclxuLmNvbnRleHQtbWVudS1pdGVtcyAubWF0LW1lbnUtaXRlbSB7XHJcbiAgbGluZS1oZWlnaHQ6IDI0cHggIWltcG9ydGFudDtcclxuICBoZWlnaHQ6IDI0cHggIWltcG9ydGFudDtcclxuICBmb250LXNpemU6IDEzcHggIWltcG9ydGFudDtcclxuICBwYWRkaW5nOiAwIDZweDtcclxuICBvdXRsaW5lOiBub25lICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi5jb250ZXh0LW1lbnUtaXRlbXMgLm1hdC1tZW51LWl0ZW0gLm1hdC1pY29uIHtcclxuICBtYXJnaW4tcmlnaHQ6IDNweDtcclxufVxyXG5cclxuLmNvbnRleHQtbWVudS1pdGVtcyAubWF0LW1lbnUtaXRlbTpmb2N1cyB7XHJcbiAgYmFja2dyb3VuZDogbm9uZTtcclxufVxyXG5cclxuLnZpc2libGUge1xyXG4gIGRpc3BsYXk6IG5vbmU7XHJcbn1cclxuXHJcbm1hdC1tZW51LXBhbmVsIHtcclxuICBtaW4taGVpZ2h0OiAwcHg7XHJcbn1cclxuXHJcbi51bm1hcmtlZCB7XHJcbiAgY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi51bm1hcmtlZExpZ2h0IHtcclxuICBjb2xvcjogYmxhY2sgIWltcG9ydGFudDtcclxufVxyXG5cclxuLm1hcmtlZCB7XHJcbiAgY29sb3I6ICMwMDk3YTcgIWltcG9ydGFudDtcclxufVxyXG4iXX0= */\"], encapsulation: 2 });\r\nexport class BorderedNode {\r\n}\r\nexport class BorderedDrawing {\r\n}\r\n"]},"metadata":{},"sourceType":"module"}