From f897ac035826a2c4ab1df59e070b3045f070cbb5 Mon Sep 17 00:00:00 2001 From: Paulo Gustavo Veiga Date: Tue, 8 Feb 2022 18:19:43 -0800 Subject: [PATCH] Fix wrong merge --- packages/editor/package.json | 2 +- packages/mindplot/assets/icons/arrow_down.gif | Bin 62 -> 0 bytes packages/mindplot/assets/icons/arrow_down.png | Bin 379 -> 0 bytes packages/mindplot/assets/icons/arrow_left.png | Bin 345 -> 0 bytes .../mindplot/assets/icons/arrow_merge.png | Bin 484 -> 0 bytes .../mindplot/assets/icons/arrow_right.png | Bin 409 -> 0 bytes packages/mindplot/assets/icons/arrow_up.png | Bin 372 -> 0 bytes .../icons/arrowc_rotate_anticlockwise.png | Bin 608 -> 0 bytes .../assets/icons/arrowc_rotate_clockwise.png | Bin 602 -> 0 bytes .../assets/icons/arrowc_turn_left.png | Bin 516 -> 0 bytes .../assets/icons/arrowc_turn_right.png | Bin 489 -> 0 bytes packages/mindplot/assets/icons/bomb.png | Bin 793 -> 0 bytes .../mindplot/assets/icons/bulb_light_off.png | Bin 700 -> 0 bytes .../mindplot/assets/icons/bulb_light_on.png | Bin 782 -> 0 bytes packages/mindplot/assets/icons/chart_bar.png | Bin 541 -> 0 bytes .../mindplot/assets/icons/chart_curve.png | Bin 710 -> 0 bytes packages/mindplot/assets/icons/chart_line.png | Bin 526 -> 0 bytes .../assets/icons/chart_organisation.png | Bin 444 -> 0 bytes packages/mindplot/assets/icons/chart_pie.png | Bin 918 -> 0 bytes packages/mindplot/assets/icons/close.png | Bin 3758 -> 0 bytes .../mindplot/assets/icons/face_crying.png | Bin 936 -> 0 bytes packages/mindplot/assets/icons/face_plain.png | Bin 894 -> 0 bytes packages/mindplot/assets/icons/face_sad.png | Bin 918 -> 0 bytes .../mindplot/assets/icons/face_smile-big.png | Bin 896 -> 0 bytes packages/mindplot/assets/icons/face_smile.png | Bin 919 -> 0 bytes .../mindplot/assets/icons/face_surprise.png | Bin 917 -> 0 bytes packages/mindplot/assets/icons/face_wink.png | Bin 914 -> 0 bytes packages/mindplot/assets/icons/flag_blue.png | Bin 671 -> 0 bytes packages/mindplot/assets/icons/flag_green.png | Bin 672 -> 0 bytes .../mindplot/assets/icons/flag_orange.png | Bin 669 -> 0 bytes packages/mindplot/assets/icons/flag_pink.png | Bin 651 -> 0 bytes .../mindplot/assets/icons/flag_purple.png | Bin 656 -> 0 bytes .../mindplot/assets/icons/flag_yellow.png | Bin 671 -> 0 bytes packages/mindplot/assets/icons/funy_angel.png | Bin 992 -> 0 bytes .../mindplot/assets/icons/funy_devilish.png | Bin 855 -> 0 bytes .../mindplot/assets/icons/funy_glasses.png | Bin 949 -> 0 bytes packages/mindplot/assets/icons/funy_grin.png | Bin 905 -> 0 bytes packages/mindplot/assets/icons/funy_kiss.png | Bin 919 -> 0 bytes .../mindplot/assets/icons/funy_monkey.png | Bin 784 -> 0 bytes .../mindplot/assets/icons/gener_female.png | Bin 590 -> 0 bytes packages/mindplot/assets/icons/gener_male.png | Bin 629 -> 0 bytes packages/mindplot/assets/icons/hard_cd.png | Bin 673 -> 0 bytes .../mindplot/assets/icons/hard_computer.png | Bin 667 -> 0 bytes .../mindplot/assets/icons/hard_controller.png | Bin 666 -> 0 bytes .../mindplot/assets/icons/hard_drive_cd.png | Bin 734 -> 0 bytes .../assets/icons/hard_driver_disk.png | Bin 620 -> 0 bytes packages/mindplot/assets/icons/hard_ipod.png | Bin 463 -> 0 bytes .../mindplot/assets/icons/hard_keyboard.png | Bin 570 -> 0 bytes packages/mindplot/assets/icons/hard_mouse.png | Bin 634 -> 0 bytes .../mindplot/assets/icons/hard_printer.png | Bin 731 -> 0 bytes packages/mindplot/assets/icons/lock_close.png | Bin 749 -> 0 bytes packages/mindplot/assets/icons/lock_open.png | Bin 727 -> 0 bytes packages/mindplot/assets/icons/mail_edit.png | Bin 880 -> 0 bytes .../mindplot/assets/icons/mail_envelop.png | Bin 641 -> 0 bytes packages/mindplot/assets/icons/mail_list.png | Bin 566 -> 0 bytes .../mindplot/assets/icons/mail_mailbox.png | Bin 555 -> 0 bytes .../mindplot/assets/icons/money_coins.png | Bin 732 -> 0 bytes .../mindplot/assets/icons/money_dollar.png | Bin 630 -> 0 bytes packages/mindplot/assets/icons/money_euro.png | Bin 605 -> 0 bytes .../mindplot/assets/icons/money_money.png | Bin 738 -> 0 bytes .../mindplot/assets/icons/money_pound.png | Bin 565 -> 0 bytes packages/mindplot/assets/icons/money_ruby.png | Bin 592 -> 0 bytes packages/mindplot/assets/icons/money_yen.png | Bin 562 -> 0 bytes packages/mindplot/assets/icons/number_1.png | Bin 3442 -> 0 bytes packages/mindplot/assets/icons/number_2.png | Bin 3573 -> 0 bytes packages/mindplot/assets/icons/number_3.png | Bin 3667 -> 0 bytes packages/mindplot/assets/icons/number_4.png | Bin 3629 -> 0 bytes packages/mindplot/assets/icons/number_5.png | Bin 3642 -> 0 bytes packages/mindplot/assets/icons/number_6.png | Bin 3688 -> 0 bytes packages/mindplot/assets/icons/number_7.png | Bin 3530 -> 0 bytes packages/mindplot/assets/icons/number_8.png | Bin 3681 -> 0 bytes packages/mindplot/assets/icons/number_9.png | Bin 3697 -> 0 bytes .../mindplot/assets/icons/object_bell.png | Bin 789 -> 0 bytes .../mindplot/assets/icons/object_cake.png | Bin 676 -> 0 bytes .../mindplot/assets/icons/object_camera.png | Bin 665 -> 0 bytes .../assets/icons/object_clanbomber.png | Bin 793 -> 0 bytes .../mindplot/assets/icons/object_clip.png | Bin 391 -> 0 bytes .../mindplot/assets/icons/object_house.png | Bin 806 -> 0 bytes packages/mindplot/assets/icons/object_key.png | Bin 612 -> 0 bytes .../assets/icons/object_magnifier.png | Bin 615 -> 0 bytes .../mindplot/assets/icons/object_music.png | Bin 385 -> 0 bytes .../mindplot/assets/icons/object_palette.png | Bin 856 -> 0 bytes .../mindplot/assets/icons/object_pencil.png | Bin 450 -> 0 bytes .../mindplot/assets/icons/object_phone.png | Bin 488 -> 0 bytes .../mindplot/assets/icons/object_rainbow.png | Bin 655 -> 0 bytes .../mindplot/assets/icons/object_star.png | Bin 670 -> 0 bytes .../mindplot/assets/icons/object_wizard.png | Bin 570 -> 0 bytes packages/mindplot/assets/icons/onoff_add.png | Bin 733 -> 0 bytes .../mindplot/assets/icons/onoff_clock.png | Bin 882 -> 0 bytes .../mindplot/assets/icons/onoff_clock_red.png | Bin 889 -> 0 bytes .../mindplot/assets/icons/onoff_delete.png | Bin 715 -> 0 bytes .../mindplot/assets/icons/people_female1.png | Bin 663 -> 0 bytes .../mindplot/assets/icons/people_female2.png | Bin 722 -> 0 bytes .../mindplot/assets/icons/people_group.png | Bin 753 -> 0 bytes .../mindplot/assets/icons/people_male1.png | Bin 748 -> 0 bytes .../mindplot/assets/icons/people_male2.png | Bin 741 -> 0 bytes .../mindplot/assets/icons/sign_cancel.png | Bin 587 -> 0 bytes .../mindplot/assets/icons/sign_closed.png | Bin 715 -> 0 bytes .../assets/icons/sign_exclamation.png | Bin 701 -> 0 bytes packages/mindplot/assets/icons/sign_help.png | Bin 786 -> 0 bytes packages/mindplot/assets/icons/sign_info.png | Bin 778 -> 0 bytes packages/mindplot/assets/icons/sign_stop.png | Bin 700 -> 0 bytes .../mindplot/assets/icons/sign_warning.png | Bin 666 -> 0 bytes packages/mindplot/assets/icons/soft_bug.png | Bin 774 -> 0 bytes .../mindplot/assets/icons/soft_cursor.png | Bin 354 -> 0 bytes .../mindplot/assets/icons/soft_database.png | Bin 390 -> 0 bytes .../assets/icons/soft_database_table.png | Bin 726 -> 0 bytes packages/mindplot/assets/icons/soft_feed.png | Bin 691 -> 0 bytes .../assets/icons/soft_folder_explore.png | Bin 679 -> 0 bytes .../mindplot/assets/icons/soft_penguin.png | Bin 696 -> 0 bytes packages/mindplot/assets/icons/soft_rss.png | Bin 530 -> 0 bytes .../assets/icons/soft_stuff_folder.png | Bin 537 -> 0 bytes .../assets/icons/sport_basketball.png | Bin 977 -> 0 bytes .../mindplot/assets/icons/sport_football.png | Bin 875 -> 0 bytes packages/mindplot/assets/icons/sport_golf.png | Bin 504 -> 0 bytes .../mindplot/assets/icons/sport_raquet.png | Bin 719 -> 0 bytes .../assets/icons/sport_shuttlecock.png | Bin 683 -> 0 bytes .../mindplot/assets/icons/sport_soccer.png | Bin 517 -> 0 bytes .../mindplot/assets/icons/sport_tennis.png | Bin 884 -> 0 bytes packages/mindplot/assets/icons/tag_blue.png | Bin 586 -> 0 bytes .../mindplot/assets/icons/tag_blue_add.png | Bin 824 -> 0 bytes .../mindplot/assets/icons/tag_blue_add2.png | Bin 836 -> 0 bytes packages/mindplot/assets/icons/tag_green.png | Bin 613 -> 0 bytes packages/mindplot/assets/icons/tag_orange.png | Bin 586 -> 0 bytes packages/mindplot/assets/icons/tag_pink.png | Bin 579 -> 0 bytes packages/mindplot/assets/icons/tag_purple.png | Bin 599 -> 0 bytes packages/mindplot/assets/icons/tag_red.png | Bin 592 -> 0 bytes packages/mindplot/assets/icons/tag_yellow.png | Bin 586 -> 0 bytes packages/mindplot/assets/icons/task_0.png | Bin 3225 -> 0 bytes packages/mindplot/assets/icons/task_100.png | Bin 3221 -> 0 bytes packages/mindplot/assets/icons/task_25.png | Bin 3300 -> 0 bytes packages/mindplot/assets/icons/task_50.png | Bin 3297 -> 0 bytes packages/mindplot/assets/icons/task_75.png | Bin 3285 -> 0 bytes .../assets/icons/thumb_thumb_down.png | Bin 601 -> 0 bytes .../mindplot/assets/icons/thumb_thumb_up.png | Bin 619 -> 0 bytes packages/mindplot/assets/icons/tick_cross.png | Bin 655 -> 0 bytes packages/mindplot/assets/icons/tick_tick.png | Bin 537 -> 0 bytes .../mindplot/assets/icons/time_calendar.png | Bin 572 -> 0 bytes packages/mindplot/assets/icons/time_clock.png | Bin 793 -> 0 bytes .../mindplot/assets/icons/time_hourglass.png | Bin 744 -> 0 bytes .../assets/icons/weather_clear-night.png | Bin 961 -> 0 bytes .../mindplot/assets/icons/weather_clear.png | Bin 682 -> 0 bytes .../assets/icons/weather_few-clouds-night.png | Bin 965 -> 0 bytes .../assets/icons/weather_few-clouds.png | Bin 763 -> 0 bytes .../assets/icons/weather_overcast.png | Bin 975 -> 0 bytes .../assets/icons/weather_severe-alert.png | Bin 977 -> 0 bytes .../icons/weather_showers-scattered.png | Bin 1045 -> 0 bytes .../mindplot/assets/icons/weather_showers.png | Bin 959 -> 0 bytes .../mindplot/assets/icons/weather_snow.png | Bin 998 -> 0 bytes .../mindplot/assets/icons/weather_storm.png | Bin 1031 -> 0 bytes packages/mindplot/assets/images/links.png | Bin 2631 -> 0 bytes packages/mindplot/assets/images/notes.png | Bin 2240 -> 0 bytes .../mindplot/assets/images/shape-circle.png | Bin 2416 -> 0 bytes .../mindplot/assets/images/shape-line.png | Bin 1966 -> 0 bytes .../assets/images/shape-rectangle-round.png | Bin 2303 -> 0 bytes .../assets/images/shape-rectangle.png | Bin 2055 -> 0 bytes .../playground.test.js/container.snap.png | Bin 195797 -> 0 bytes .../playground.test.js/editor.snap.png | Bin 142474 -> 0 bytes packages/mindplot/src/components/.gitignore | 1 - .../src/components/ActionDispatcher.js | 111 - .../mindplot/src/components/CentralTopic.js | 68 - packages/mindplot/src/components/Command.js | 57 - .../mindplot/src/components/CommandContext.js | 112 - packages/mindplot/src/components/Designer.js | 999 --- .../src/components/DesignerKeyboard.js | 432 -- .../mindplot/src/components/DesignerModel.js | 181 - packages/mindplot/src/components/Events.js | 71 - packages/mindplot/src/components/Keyboard.js | 29 - .../src/components/LocalStorageManager.js | 63 - packages/mindplot/src/components/MainTopic.js | 158 - packages/mindplot/src/components/NodeGraph.js | 188 - .../src/components/PersistenceManager.js | 80 - .../mindplot/src/components/Relationship.js | 335 - .../src/components/RelationshipPivot.js | 162 - .../src/components/RestPersistenceManager.js | 161 - .../mindplot/src/components/ScreenManager.js | 152 - .../src/components/ShrinkConnector.js | 109 - .../components/StandaloneActionDispatcher.js | 264 - packages/mindplot/src/components/Topic.js | 1338 ---- .../mindplot/src/components/TopicConfig.js | 36 - packages/mindplot/src/components/Workspace.js | 221 - .../commands/AddFeatureToTopicCommand.js | 68 - .../commands/AddRelationshipCommand.js | 53 - .../components/commands/AddTopicCommand.js | 92 - .../commands/ChangeFeatureToTopicCommand.js | 64 - .../src/components/commands/DeleteCommand.js | 179 - .../components/commands/DragTopicCommand.js | 101 - .../commands/GenericFunctionCommand.js | 96 - .../commands/MoveControlPointCommand.js | 122 - .../commands/RemoveFeatureFromTopicCommand.js | 61 - packages/mindplot/src/components/footer.js | 7 - packages/mindplot/src/components/lang/ca.js | 61 - .../mindplot/src/components/lang/pt_BR.js | 53 - .../mindplot/src/components/lang/zh_CN.js | 53 - .../mindplot/src/components/lang/zh_TW.js | 53 - .../layout/ChildrenSorterStrategy.js | 61 - .../bootstrap/css/bootstrap-colorpicker.css | 214 - .../css/bootstrap-colorpicker.min.css | 9 - .../bootstrap/css/bootstrap-theme.css | 347 - .../bootstrap/css/bootstrap-theme.css.map | 1 - .../bootstrap/css/bootstrap-theme.min.css | 7 - .../libraries/bootstrap/css/bootstrap.css | 5785 ----------------- .../libraries/bootstrap/css/bootstrap.css.map | 1 - .../libraries/bootstrap/css/bootstrap.min.css | 7 - .../fonts/glyphicons-halflings-regular.eot | Bin 20335 -> 0 bytes .../fonts/glyphicons-halflings-regular.svg | 229 - .../fonts/glyphicons-halflings-regular.ttf | Bin 41280 -> 0 bytes .../fonts/glyphicons-halflings-regular.woff | Bin 23320 -> 0 bytes .../alpha-horizontal.png | Bin 3635 -> 0 bytes .../img/bootstrap-colorpicker/alpha.png | Bin 3271 -> 0 bytes .../bootstrap-colorpicker/hue-horizontal.png | Bin 2837 -> 0 bytes .../img/bootstrap-colorpicker/hue.png | Bin 2972 -> 0 bytes .../img/bootstrap-colorpicker/saturation.png | Bin 8817 -> 0 bytes .../img/glyphicons-halflings-blue.png | Bin 4207 -> 0 bytes .../bootstrap/js/bootstrap-colorpicker.js | 947 --- .../bootstrap/js/bootstrap-colorpicker.min.js | 103 - .../libraries/bootstrap/js/bootstrap.js | 1860 ------ .../libraries/bootstrap/js/bootstrap.min.js | 39 - .../src/components/model/FeatureModel.js | 95 - .../mindplot/src/components/model/IMindmap.js | 175 - .../src/components/model/INodeModel.js | 424 -- .../src/components/model/IconModel.js | 46 - .../src/components/model/LinkModel.js | 72 - .../mindplot/src/components/model/Mindmap.js | 180 - .../src/components/model/NodeModel.js | 235 - .../src/components/model/NoteModel.js | 47 - .../src/components/model/RelationshipModel.js | 140 - .../persistence/Beta2PelaMigrator.js | 60 - .../components/persistence/ModelCodeName.js | 29 - .../persistence/Pela2TangoMigrator.js | 94 - .../persistence/XMLSerializerBeta.js | 325 - .../persistence/XMLSerializerFactory.js | 90 - .../persistence/XMLSerializerPela.js | 509 -- .../persistence/XMLSerializerTango.js | 27 - .../src/components/persistence/index.js | 17 - .../mindplot/src/components/widget/IMenu.js | 114 - .../mindplot/src/components/widget/Menu.js | 488 -- packages/mindplot/src/index.js | 17 - packages/mindplot/src/indexLoader.js | 43 - .../bootstrap/css/bootstrap-colorpicker.css | 214 - .../css/bootstrap-colorpicker.min.css | 9 - .../bootstrap/css/bootstrap-theme.css | 347 - .../bootstrap/css/bootstrap-theme.css.map | 1 - .../bootstrap/css/bootstrap-theme.min.css | 7 - .../map-render/bootstrap/css/bootstrap.css | 5785 ----------------- .../bootstrap/css/bootstrap.css.map | 1 - .../bootstrap/css/bootstrap.min.css | 7 - .../map-render/css/compatibility.less | 148 - .../playground/map-render/css/editor.less | 167 - .../playground/map-render/css/embedded.less | 106 - .../playground/map-render/css/header.less | 125 - .../playground/map-render/css/toolbar.less | 153 - .../map-render/css/widget/skin2.less | 3 - .../playground/map-render/html/container.html | 68 - .../playground/map-render/html/container.json | 17 - .../test/playground/map-render/html/drag.html | 220 - .../playground/map-render/html/editor.html | 115 - .../playground/map-render/html/embedded.html | 101 - .../playground/map-render/html/viewmode.html | 15 - .../map-render/images/ajax-loader.gif | Bin 6820 -> 0 bytes .../map-render/images/btn-bg-hover.png | Bin 571 -> 0 bytes .../map-render/images/btn-bg-normal.png | Bin 553 -> 0 bytes .../map-render/images/btne-bg-hover.png | Bin 1025 -> 0 bytes .../map-render/images/btne-bg-normal.png | Bin 1058 -> 0 bytes .../map-render/images/btne-bg-selected.png | Bin 1203 -> 0 bytes .../playground/map-render/images/discard.png | Bin 562 -> 0 bytes .../playground/map-render/images/export.png | Bin 728 -> 0 bytes .../playground/map-render/images/favicon.ico | Bin 1150 -> 0 bytes .../map-render/images/font-bold.png | Bin 666 -> 0 bytes .../map-render/images/font-color.png | Bin 986 -> 0 bytes .../map-render/images/font-italic.png | Bin 627 -> 0 bytes .../map-render/images/font-size.png | Bin 864 -> 0 bytes .../map-render/images/font-type.png | Bin 916 -> 0 bytes .../playground/map-render/images/history.png | Bin 1739 -> 0 bytes .../map-render/images/logo-135x135.png | Bin 11990 -> 0 bytes .../map-render/images/logo-head-only.png | Bin 5332 -> 0 bytes .../map-render/images/logo-medium.png | Bin 13338 -> 0 bytes .../map-render/images/logo-small.png | Bin 7530 -> 0 bytes .../map-render/images/logo-xsmall.png | Bin 13314 -> 0 bytes .../playground/map-render/images/print.png | Bin 532 -> 0 bytes .../playground/map-render/images/public.png | Bin 1773 -> 0 bytes .../playground/map-render/images/redo.png | Bin 608 -> 0 bytes .../playground/map-render/images/save.png | Bin 730 -> 0 bytes .../playground/map-render/images/share.png | Bin 527 -> 0 bytes .../test/playground/map-render/images/tag.png | Bin 946 -> 0 bytes .../map-render/images/topic-add.png | Bin 1037 -> 0 bytes .../map-render/images/topic-border.png | Bin 882 -> 0 bytes .../map-render/images/topic-color.png | Bin 1492 -> 0 bytes .../map-render/images/topic-delete.png | Bin 1002 -> 0 bytes .../map-render/images/topic-icon.png | Bin 916 -> 0 bytes .../map-render/images/topic-link.png | Bin 1124 -> 0 bytes .../map-render/images/topic-note.png | Bin 405 -> 0 bytes .../map-render/images/topic-relation.png | Bin 360 -> 0 bytes .../map-render/images/topic-shape.png | Bin 877 -> 0 bytes .../playground/map-render/images/undo.png | Bin 585 -> 0 bytes .../playground/map-render/images/zoom-in.png | Bin 790 -> 0 bytes .../playground/map-render/images/zoom-out.png | Bin 817 -> 0 bytes .../test/playground/map-render/js/editor.js | 17 - .../test/playground/map-render/js/embedded.js | 18 - .../test/playground/map-render/js/viewmode.js | 17 - .../playground/map-render/samples/complex.xml | 352 - .../map-render/samples/emptyNodes.xml | 239 - .../playground/map-render/samples/huge.xml | 386 -- .../map-render/samples/img-support.xml | 48 - .../playground/map-render/samples/issue.xml | 120 - .../playground/map-render/samples/sample2.xml | 29 - .../playground/map-render/samples/sample3.xml | 9 - .../playground/map-render/samples/sample4.xml | 10 - .../map-render/samples/welcome-reloaded.xml | 48 - .../playground/map-render/samples/welcome.xml | 70 - .../test/unit/BalancedTestSuite.test.js | 328 - .../test/unit/EventsTestSuite.test.js | 61 - .../mindplot/test/unit/FreeTestSuite.test.js | 275 - .../test/unit/SymmetricTestSuite.test.js | 94 - packages/mindplot/test/unit/TestSuite.js | 8 - .../mindplot/test/unit/resources/welcome.xml | 48 - packages/web2d/src/components/Font.js | 84 - .../src/components/peer/svg/ArialFont.js | 36 - .../web2d/src/components/peer/svg/Font.js | 94 - .../src/components/peer/svg/TahomaFont.js | 36 - .../src/components/peer/svg/TimesFont.js | 36 - .../src/components/peer/svg/VerdanaFont.js | 36 - packages/webapp/stats.json | 1 - packages/webapp/webpack.common.js | 4 - 324 files changed, 1 insertion(+), 29342 deletions(-) delete mode 100644 packages/mindplot/assets/icons/arrow_down.gif delete mode 100755 packages/mindplot/assets/icons/arrow_down.png delete mode 100755 packages/mindplot/assets/icons/arrow_left.png delete mode 100755 packages/mindplot/assets/icons/arrow_merge.png delete mode 100755 packages/mindplot/assets/icons/arrow_right.png delete mode 100755 packages/mindplot/assets/icons/arrow_up.png delete mode 100755 packages/mindplot/assets/icons/arrowc_rotate_anticlockwise.png delete mode 100755 packages/mindplot/assets/icons/arrowc_rotate_clockwise.png delete mode 100755 packages/mindplot/assets/icons/arrowc_turn_left.png delete mode 100755 packages/mindplot/assets/icons/arrowc_turn_right.png delete mode 100755 packages/mindplot/assets/icons/bomb.png delete mode 100644 packages/mindplot/assets/icons/bulb_light_off.png delete mode 100644 packages/mindplot/assets/icons/bulb_light_on.png delete mode 100755 packages/mindplot/assets/icons/chart_bar.png delete mode 100755 packages/mindplot/assets/icons/chart_curve.png delete mode 100755 packages/mindplot/assets/icons/chart_line.png delete mode 100755 packages/mindplot/assets/icons/chart_organisation.png delete mode 100755 packages/mindplot/assets/icons/chart_pie.png delete mode 100644 packages/mindplot/assets/icons/close.png delete mode 100644 packages/mindplot/assets/icons/face_crying.png delete mode 100644 packages/mindplot/assets/icons/face_plain.png delete mode 100644 packages/mindplot/assets/icons/face_sad.png delete mode 100644 packages/mindplot/assets/icons/face_smile-big.png delete mode 100644 packages/mindplot/assets/icons/face_smile.png delete mode 100644 packages/mindplot/assets/icons/face_surprise.png delete mode 100644 packages/mindplot/assets/icons/face_wink.png delete mode 100755 packages/mindplot/assets/icons/flag_blue.png delete mode 100755 packages/mindplot/assets/icons/flag_green.png delete mode 100755 packages/mindplot/assets/icons/flag_orange.png delete mode 100755 packages/mindplot/assets/icons/flag_pink.png delete mode 100755 packages/mindplot/assets/icons/flag_purple.png delete mode 100755 packages/mindplot/assets/icons/flag_yellow.png delete mode 100644 packages/mindplot/assets/icons/funy_angel.png delete mode 100644 packages/mindplot/assets/icons/funy_devilish.png delete mode 100644 packages/mindplot/assets/icons/funy_glasses.png delete mode 100644 packages/mindplot/assets/icons/funy_grin.png delete mode 100644 packages/mindplot/assets/icons/funy_kiss.png delete mode 100644 packages/mindplot/assets/icons/funy_monkey.png delete mode 100755 packages/mindplot/assets/icons/gener_female.png delete mode 100755 packages/mindplot/assets/icons/gener_male.png delete mode 100755 packages/mindplot/assets/icons/hard_cd.png delete mode 100755 packages/mindplot/assets/icons/hard_computer.png delete mode 100755 packages/mindplot/assets/icons/hard_controller.png delete mode 100755 packages/mindplot/assets/icons/hard_drive_cd.png delete mode 100755 packages/mindplot/assets/icons/hard_driver_disk.png delete mode 100755 packages/mindplot/assets/icons/hard_ipod.png delete mode 100755 packages/mindplot/assets/icons/hard_keyboard.png delete mode 100755 packages/mindplot/assets/icons/hard_mouse.png delete mode 100755 packages/mindplot/assets/icons/hard_printer.png delete mode 100755 packages/mindplot/assets/icons/lock_close.png delete mode 100755 packages/mindplot/assets/icons/lock_open.png delete mode 100755 packages/mindplot/assets/icons/mail_edit.png delete mode 100755 packages/mindplot/assets/icons/mail_envelop.png delete mode 100755 packages/mindplot/assets/icons/mail_list.png delete mode 100755 packages/mindplot/assets/icons/mail_mailbox.png delete mode 100644 packages/mindplot/assets/icons/money_coins.png delete mode 100755 packages/mindplot/assets/icons/money_dollar.png delete mode 100755 packages/mindplot/assets/icons/money_euro.png delete mode 100755 packages/mindplot/assets/icons/money_money.png delete mode 100755 packages/mindplot/assets/icons/money_pound.png delete mode 100644 packages/mindplot/assets/icons/money_ruby.png delete mode 100755 packages/mindplot/assets/icons/money_yen.png delete mode 100755 packages/mindplot/assets/icons/number_1.png delete mode 100755 packages/mindplot/assets/icons/number_2.png delete mode 100755 packages/mindplot/assets/icons/number_3.png delete mode 100755 packages/mindplot/assets/icons/number_4.png delete mode 100755 packages/mindplot/assets/icons/number_5.png delete mode 100755 packages/mindplot/assets/icons/number_6.png delete mode 100755 packages/mindplot/assets/icons/number_7.png delete mode 100755 packages/mindplot/assets/icons/number_8.png delete mode 100755 packages/mindplot/assets/icons/number_9.png delete mode 100755 packages/mindplot/assets/icons/object_bell.png delete mode 100755 packages/mindplot/assets/icons/object_cake.png delete mode 100755 packages/mindplot/assets/icons/object_camera.png delete mode 100755 packages/mindplot/assets/icons/object_clanbomber.png delete mode 100755 packages/mindplot/assets/icons/object_clip.png delete mode 100755 packages/mindplot/assets/icons/object_house.png delete mode 100755 packages/mindplot/assets/icons/object_key.png delete mode 100755 packages/mindplot/assets/icons/object_magnifier.png delete mode 100755 packages/mindplot/assets/icons/object_music.png delete mode 100755 packages/mindplot/assets/icons/object_palette.png delete mode 100755 packages/mindplot/assets/icons/object_pencil.png delete mode 100755 packages/mindplot/assets/icons/object_phone.png delete mode 100755 packages/mindplot/assets/icons/object_rainbow.png delete mode 100755 packages/mindplot/assets/icons/object_star.png delete mode 100755 packages/mindplot/assets/icons/object_wizard.png delete mode 100644 packages/mindplot/assets/icons/onoff_add.png delete mode 100644 packages/mindplot/assets/icons/onoff_clock.png delete mode 100644 packages/mindplot/assets/icons/onoff_clock_red.png delete mode 100644 packages/mindplot/assets/icons/onoff_delete.png delete mode 100755 packages/mindplot/assets/icons/people_female1.png delete mode 100755 packages/mindplot/assets/icons/people_female2.png delete mode 100755 packages/mindplot/assets/icons/people_group.png delete mode 100755 packages/mindplot/assets/icons/people_male1.png delete mode 100755 packages/mindplot/assets/icons/people_male2.png delete mode 100755 packages/mindplot/assets/icons/sign_cancel.png delete mode 100755 packages/mindplot/assets/icons/sign_closed.png delete mode 100755 packages/mindplot/assets/icons/sign_exclamation.png delete mode 100755 packages/mindplot/assets/icons/sign_help.png delete mode 100755 packages/mindplot/assets/icons/sign_info.png delete mode 100755 packages/mindplot/assets/icons/sign_stop.png delete mode 100755 packages/mindplot/assets/icons/sign_warning.png delete mode 100755 packages/mindplot/assets/icons/soft_bug.png delete mode 100755 packages/mindplot/assets/icons/soft_cursor.png delete mode 100755 packages/mindplot/assets/icons/soft_database.png delete mode 100755 packages/mindplot/assets/icons/soft_database_table.png delete mode 100755 packages/mindplot/assets/icons/soft_feed.png delete mode 100755 packages/mindplot/assets/icons/soft_folder_explore.png delete mode 100755 packages/mindplot/assets/icons/soft_penguin.png delete mode 100755 packages/mindplot/assets/icons/soft_rss.png delete mode 100755 packages/mindplot/assets/icons/soft_stuff_folder.png delete mode 100644 packages/mindplot/assets/icons/sport_basketball.png delete mode 100644 packages/mindplot/assets/icons/sport_football.png delete mode 100644 packages/mindplot/assets/icons/sport_golf.png delete mode 100644 packages/mindplot/assets/icons/sport_raquet.png delete mode 100644 packages/mindplot/assets/icons/sport_shuttlecock.png delete mode 100644 packages/mindplot/assets/icons/sport_soccer.png delete mode 100644 packages/mindplot/assets/icons/sport_tennis.png delete mode 100755 packages/mindplot/assets/icons/tag_blue.png delete mode 100755 packages/mindplot/assets/icons/tag_blue_add.png delete mode 100755 packages/mindplot/assets/icons/tag_blue_add2.png delete mode 100755 packages/mindplot/assets/icons/tag_green.png delete mode 100755 packages/mindplot/assets/icons/tag_orange.png delete mode 100755 packages/mindplot/assets/icons/tag_pink.png delete mode 100755 packages/mindplot/assets/icons/tag_purple.png delete mode 100755 packages/mindplot/assets/icons/tag_red.png delete mode 100755 packages/mindplot/assets/icons/tag_yellow.png delete mode 100755 packages/mindplot/assets/icons/task_0.png delete mode 100755 packages/mindplot/assets/icons/task_100.png delete mode 100755 packages/mindplot/assets/icons/task_25.png delete mode 100755 packages/mindplot/assets/icons/task_50.png delete mode 100755 packages/mindplot/assets/icons/task_75.png delete mode 100755 packages/mindplot/assets/icons/thumb_thumb_down.png delete mode 100755 packages/mindplot/assets/icons/thumb_thumb_up.png delete mode 100644 packages/mindplot/assets/icons/tick_cross.png delete mode 100644 packages/mindplot/assets/icons/tick_tick.png delete mode 100755 packages/mindplot/assets/icons/time_calendar.png delete mode 100755 packages/mindplot/assets/icons/time_clock.png delete mode 100755 packages/mindplot/assets/icons/time_hourglass.png delete mode 100644 packages/mindplot/assets/icons/weather_clear-night.png delete mode 100644 packages/mindplot/assets/icons/weather_clear.png delete mode 100644 packages/mindplot/assets/icons/weather_few-clouds-night.png delete mode 100644 packages/mindplot/assets/icons/weather_few-clouds.png delete mode 100644 packages/mindplot/assets/icons/weather_overcast.png delete mode 100644 packages/mindplot/assets/icons/weather_severe-alert.png delete mode 100644 packages/mindplot/assets/icons/weather_showers-scattered.png delete mode 100644 packages/mindplot/assets/icons/weather_showers.png delete mode 100644 packages/mindplot/assets/icons/weather_snow.png delete mode 100644 packages/mindplot/assets/icons/weather_storm.png delete mode 100644 packages/mindplot/assets/images/links.png delete mode 100644 packages/mindplot/assets/images/notes.png delete mode 100644 packages/mindplot/assets/images/shape-circle.png delete mode 100644 packages/mindplot/assets/images/shape-line.png delete mode 100644 packages/mindplot/assets/images/shape-rectangle-round.png delete mode 100644 packages/mindplot/assets/images/shape-rectangle.png delete mode 100644 packages/mindplot/cypress/snapshots/playground.test.js/container.snap.png delete mode 100644 packages/mindplot/cypress/snapshots/playground.test.js/editor.snap.png delete mode 100644 packages/mindplot/src/components/.gitignore delete mode 100644 packages/mindplot/src/components/ActionDispatcher.js delete mode 100644 packages/mindplot/src/components/CentralTopic.js delete mode 100644 packages/mindplot/src/components/Command.js delete mode 100644 packages/mindplot/src/components/CommandContext.js delete mode 100644 packages/mindplot/src/components/Designer.js delete mode 100644 packages/mindplot/src/components/DesignerKeyboard.js delete mode 100644 packages/mindplot/src/components/DesignerModel.js delete mode 100644 packages/mindplot/src/components/Events.js delete mode 100644 packages/mindplot/src/components/Keyboard.js delete mode 100644 packages/mindplot/src/components/LocalStorageManager.js delete mode 100644 packages/mindplot/src/components/MainTopic.js delete mode 100644 packages/mindplot/src/components/NodeGraph.js delete mode 100644 packages/mindplot/src/components/PersistenceManager.js delete mode 100644 packages/mindplot/src/components/Relationship.js delete mode 100644 packages/mindplot/src/components/RelationshipPivot.js delete mode 100644 packages/mindplot/src/components/RestPersistenceManager.js delete mode 100644 packages/mindplot/src/components/ScreenManager.js delete mode 100644 packages/mindplot/src/components/ShrinkConnector.js delete mode 100644 packages/mindplot/src/components/StandaloneActionDispatcher.js delete mode 100644 packages/mindplot/src/components/Topic.js delete mode 100644 packages/mindplot/src/components/TopicConfig.js delete mode 100644 packages/mindplot/src/components/Workspace.js delete mode 100644 packages/mindplot/src/components/commands/AddFeatureToTopicCommand.js delete mode 100644 packages/mindplot/src/components/commands/AddRelationshipCommand.js delete mode 100644 packages/mindplot/src/components/commands/AddTopicCommand.js delete mode 100644 packages/mindplot/src/components/commands/ChangeFeatureToTopicCommand.js delete mode 100644 packages/mindplot/src/components/commands/DeleteCommand.js delete mode 100644 packages/mindplot/src/components/commands/DragTopicCommand.js delete mode 100644 packages/mindplot/src/components/commands/GenericFunctionCommand.js delete mode 100644 packages/mindplot/src/components/commands/MoveControlPointCommand.js delete mode 100644 packages/mindplot/src/components/commands/RemoveFeatureFromTopicCommand.js delete mode 100644 packages/mindplot/src/components/footer.js delete mode 100644 packages/mindplot/src/components/lang/ca.js delete mode 100644 packages/mindplot/src/components/lang/pt_BR.js delete mode 100644 packages/mindplot/src/components/lang/zh_CN.js delete mode 100644 packages/mindplot/src/components/lang/zh_TW.js delete mode 100644 packages/mindplot/src/components/layout/ChildrenSorterStrategy.js delete mode 100644 packages/mindplot/src/components/libraries/bootstrap/css/bootstrap-colorpicker.css delete mode 100644 packages/mindplot/src/components/libraries/bootstrap/css/bootstrap-colorpicker.min.css delete mode 100644 packages/mindplot/src/components/libraries/bootstrap/css/bootstrap-theme.css delete mode 100644 packages/mindplot/src/components/libraries/bootstrap/css/bootstrap-theme.css.map delete mode 100644 packages/mindplot/src/components/libraries/bootstrap/css/bootstrap-theme.min.css delete mode 100644 packages/mindplot/src/components/libraries/bootstrap/css/bootstrap.css delete mode 100644 packages/mindplot/src/components/libraries/bootstrap/css/bootstrap.css.map delete mode 100644 packages/mindplot/src/components/libraries/bootstrap/css/bootstrap.min.css delete mode 100644 packages/mindplot/src/components/libraries/bootstrap/fonts/glyphicons-halflings-regular.eot delete mode 100644 packages/mindplot/src/components/libraries/bootstrap/fonts/glyphicons-halflings-regular.svg delete mode 100644 packages/mindplot/src/components/libraries/bootstrap/fonts/glyphicons-halflings-regular.ttf delete mode 100644 packages/mindplot/src/components/libraries/bootstrap/fonts/glyphicons-halflings-regular.woff delete mode 100644 packages/mindplot/src/components/libraries/bootstrap/img/bootstrap-colorpicker/alpha-horizontal.png delete mode 100644 packages/mindplot/src/components/libraries/bootstrap/img/bootstrap-colorpicker/alpha.png delete mode 100644 packages/mindplot/src/components/libraries/bootstrap/img/bootstrap-colorpicker/hue-horizontal.png delete mode 100644 packages/mindplot/src/components/libraries/bootstrap/img/bootstrap-colorpicker/hue.png delete mode 100644 packages/mindplot/src/components/libraries/bootstrap/img/bootstrap-colorpicker/saturation.png delete mode 100644 packages/mindplot/src/components/libraries/bootstrap/img/glyphicons-halflings-blue.png delete mode 100644 packages/mindplot/src/components/libraries/bootstrap/js/bootstrap-colorpicker.js delete mode 100644 packages/mindplot/src/components/libraries/bootstrap/js/bootstrap-colorpicker.min.js delete mode 100644 packages/mindplot/src/components/libraries/bootstrap/js/bootstrap.js delete mode 100644 packages/mindplot/src/components/libraries/bootstrap/js/bootstrap.min.js delete mode 100644 packages/mindplot/src/components/model/FeatureModel.js delete mode 100644 packages/mindplot/src/components/model/IMindmap.js delete mode 100644 packages/mindplot/src/components/model/INodeModel.js delete mode 100644 packages/mindplot/src/components/model/IconModel.js delete mode 100644 packages/mindplot/src/components/model/LinkModel.js delete mode 100644 packages/mindplot/src/components/model/Mindmap.js delete mode 100644 packages/mindplot/src/components/model/NodeModel.js delete mode 100644 packages/mindplot/src/components/model/NoteModel.js delete mode 100644 packages/mindplot/src/components/model/RelationshipModel.js delete mode 100644 packages/mindplot/src/components/persistence/Beta2PelaMigrator.js delete mode 100644 packages/mindplot/src/components/persistence/ModelCodeName.js delete mode 100644 packages/mindplot/src/components/persistence/Pela2TangoMigrator.js delete mode 100644 packages/mindplot/src/components/persistence/XMLSerializerBeta.js delete mode 100644 packages/mindplot/src/components/persistence/XMLSerializerFactory.js delete mode 100644 packages/mindplot/src/components/persistence/XMLSerializerPela.js delete mode 100644 packages/mindplot/src/components/persistence/XMLSerializerTango.js delete mode 100644 packages/mindplot/src/components/persistence/index.js delete mode 100644 packages/mindplot/src/components/widget/IMenu.js delete mode 100644 packages/mindplot/src/components/widget/Menu.js delete mode 100644 packages/mindplot/src/index.js delete mode 100644 packages/mindplot/src/indexLoader.js delete mode 100644 packages/mindplot/test/playground/map-render/bootstrap/css/bootstrap-colorpicker.css delete mode 100644 packages/mindplot/test/playground/map-render/bootstrap/css/bootstrap-colorpicker.min.css delete mode 100644 packages/mindplot/test/playground/map-render/bootstrap/css/bootstrap-theme.css delete mode 100644 packages/mindplot/test/playground/map-render/bootstrap/css/bootstrap-theme.css.map delete mode 100644 packages/mindplot/test/playground/map-render/bootstrap/css/bootstrap-theme.min.css delete mode 100644 packages/mindplot/test/playground/map-render/bootstrap/css/bootstrap.css delete mode 100644 packages/mindplot/test/playground/map-render/bootstrap/css/bootstrap.css.map delete mode 100644 packages/mindplot/test/playground/map-render/bootstrap/css/bootstrap.min.css delete mode 100644 packages/mindplot/test/playground/map-render/css/compatibility.less delete mode 100644 packages/mindplot/test/playground/map-render/css/editor.less delete mode 100644 packages/mindplot/test/playground/map-render/css/embedded.less delete mode 100644 packages/mindplot/test/playground/map-render/css/header.less delete mode 100644 packages/mindplot/test/playground/map-render/css/toolbar.less delete mode 100644 packages/mindplot/test/playground/map-render/css/widget/skin2.less delete mode 100644 packages/mindplot/test/playground/map-render/html/container.html delete mode 100644 packages/mindplot/test/playground/map-render/html/container.json delete mode 100644 packages/mindplot/test/playground/map-render/html/drag.html delete mode 100644 packages/mindplot/test/playground/map-render/html/editor.html delete mode 100644 packages/mindplot/test/playground/map-render/html/embedded.html delete mode 100644 packages/mindplot/test/playground/map-render/html/viewmode.html delete mode 100644 packages/mindplot/test/playground/map-render/images/ajax-loader.gif delete mode 100644 packages/mindplot/test/playground/map-render/images/btn-bg-hover.png delete mode 100644 packages/mindplot/test/playground/map-render/images/btn-bg-normal.png delete mode 100644 packages/mindplot/test/playground/map-render/images/btne-bg-hover.png delete mode 100644 packages/mindplot/test/playground/map-render/images/btne-bg-normal.png delete mode 100644 packages/mindplot/test/playground/map-render/images/btne-bg-selected.png delete mode 100644 packages/mindplot/test/playground/map-render/images/discard.png delete mode 100644 packages/mindplot/test/playground/map-render/images/export.png delete mode 100644 packages/mindplot/test/playground/map-render/images/favicon.ico delete mode 100644 packages/mindplot/test/playground/map-render/images/font-bold.png delete mode 100644 packages/mindplot/test/playground/map-render/images/font-color.png delete mode 100644 packages/mindplot/test/playground/map-render/images/font-italic.png delete mode 100644 packages/mindplot/test/playground/map-render/images/font-size.png delete mode 100644 packages/mindplot/test/playground/map-render/images/font-type.png delete mode 100644 packages/mindplot/test/playground/map-render/images/history.png delete mode 100644 packages/mindplot/test/playground/map-render/images/logo-135x135.png delete mode 100644 packages/mindplot/test/playground/map-render/images/logo-head-only.png delete mode 100644 packages/mindplot/test/playground/map-render/images/logo-medium.png delete mode 100644 packages/mindplot/test/playground/map-render/images/logo-small.png delete mode 100644 packages/mindplot/test/playground/map-render/images/logo-xsmall.png delete mode 100644 packages/mindplot/test/playground/map-render/images/print.png delete mode 100644 packages/mindplot/test/playground/map-render/images/public.png delete mode 100644 packages/mindplot/test/playground/map-render/images/redo.png delete mode 100644 packages/mindplot/test/playground/map-render/images/save.png delete mode 100644 packages/mindplot/test/playground/map-render/images/share.png delete mode 100644 packages/mindplot/test/playground/map-render/images/tag.png delete mode 100644 packages/mindplot/test/playground/map-render/images/topic-add.png delete mode 100644 packages/mindplot/test/playground/map-render/images/topic-border.png delete mode 100644 packages/mindplot/test/playground/map-render/images/topic-color.png delete mode 100644 packages/mindplot/test/playground/map-render/images/topic-delete.png delete mode 100644 packages/mindplot/test/playground/map-render/images/topic-icon.png delete mode 100644 packages/mindplot/test/playground/map-render/images/topic-link.png delete mode 100644 packages/mindplot/test/playground/map-render/images/topic-note.png delete mode 100644 packages/mindplot/test/playground/map-render/images/topic-relation.png delete mode 100644 packages/mindplot/test/playground/map-render/images/topic-shape.png delete mode 100644 packages/mindplot/test/playground/map-render/images/undo.png delete mode 100644 packages/mindplot/test/playground/map-render/images/zoom-in.png delete mode 100644 packages/mindplot/test/playground/map-render/images/zoom-out.png delete mode 100644 packages/mindplot/test/playground/map-render/js/editor.js delete mode 100644 packages/mindplot/test/playground/map-render/js/embedded.js delete mode 100644 packages/mindplot/test/playground/map-render/js/viewmode.js delete mode 100644 packages/mindplot/test/playground/map-render/samples/complex.xml delete mode 100644 packages/mindplot/test/playground/map-render/samples/emptyNodes.xml delete mode 100644 packages/mindplot/test/playground/map-render/samples/huge.xml delete mode 100644 packages/mindplot/test/playground/map-render/samples/img-support.xml delete mode 100644 packages/mindplot/test/playground/map-render/samples/issue.xml delete mode 100644 packages/mindplot/test/playground/map-render/samples/sample2.xml delete mode 100644 packages/mindplot/test/playground/map-render/samples/sample3.xml delete mode 100644 packages/mindplot/test/playground/map-render/samples/sample4.xml delete mode 100644 packages/mindplot/test/playground/map-render/samples/welcome-reloaded.xml delete mode 100644 packages/mindplot/test/playground/map-render/samples/welcome.xml delete mode 100644 packages/mindplot/test/unit/BalancedTestSuite.test.js delete mode 100644 packages/mindplot/test/unit/EventsTestSuite.test.js delete mode 100644 packages/mindplot/test/unit/FreeTestSuite.test.js delete mode 100644 packages/mindplot/test/unit/SymmetricTestSuite.test.js delete mode 100644 packages/mindplot/test/unit/TestSuite.js delete mode 100644 packages/mindplot/test/unit/resources/welcome.xml delete mode 100644 packages/web2d/src/components/Font.js delete mode 100644 packages/web2d/src/components/peer/svg/ArialFont.js delete mode 100644 packages/web2d/src/components/peer/svg/Font.js delete mode 100644 packages/web2d/src/components/peer/svg/TahomaFont.js delete mode 100644 packages/web2d/src/components/peer/svg/TimesFont.js delete mode 100644 packages/web2d/src/components/peer/svg/VerdanaFont.js delete mode 100644 packages/webapp/stats.json diff --git a/packages/editor/package.json b/packages/editor/package.json index 181f2320..b08accde 100644 --- a/packages/editor/package.json +++ b/packages/editor/package.json @@ -53,4 +53,4 @@ "react-dom": "^17.0.0", "react-intl": "^5.24.3" } -} \ No newline at end of file +} diff --git a/packages/mindplot/assets/icons/arrow_down.gif b/packages/mindplot/assets/icons/arrow_down.gif deleted file mode 100644 index 552f123ee92f3eb1618dd02f41da07a4a4b20e3d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 62 zcmZ?wbhEHb0fhdEP)RB*?~^j!LKVQ>(O&A{Xr%)RXLn#U zs4LtZ6rCMFY5|B2$)yG$6aaIFq$gGR5;6H z{Qv(y10{fofkH6I3@AO3$p*x`Nil#0jeqs;pT9Ds7{CaN1)$9r#n~kE{`~pF@bLXZ zhF?E_GyM7i!oL`P0x_8Wj$ni2F7#hzWPxfvDaITYg5=lqDRUe#ScX*(E2x=9XYzD6%FONbQIbA#VsuBq0ij+PPf#`3M zpvPY0@wz6#pQ1M#cCJ4HtBQCgjp?eMD}Ow?B1lUn;`#{$MeS% z{6Rm$gJCR2mS9S5Qr^HNj0iI6M|{5JQ7pJHG!RSBu=Xz)&p=c#F*=4sGKu^2{X2Z< zASEEw`V6Q2&NEMPuTwY#5DA1Cf aOZ5%-nC^v5N+ApY0000R?Tq zGVv2KE7Z7pXp|hY^6c!l2pu8r9`r#8FX*(Z}}-0u-VE7Xmm$kEBD`Ue+E-|mR(`ukw6g% p&9mG6w#wHUuW*nL5>vZR zlg{G&%mT~|kL3ei%GW0*UOHUMs5XI$4uxe-L?I@SAefq*207}Iqtjm#e5*fP53AiC z)C|RQfwzxx<#_WfANRGZx{+tFDl8~Q?;~Ve=lM^*8UTTnVL?HTDz8uta0D@d28E9S z_)i8aLz^UE6PPKymi;2GJ`34{eIia-CtfAt0H61rk0 SPTNud0000*nn(6-Ko08>y5Bipj zFuyiPrdN8pDqvvkw%oSbD|$YUB3aMBizpn!0@bH?0kAfUJ+m=Vt{!e1UD z_AQ7AnZ&Yq3oU^QbQ$1o#v~>3AqYSCl3VwJuGp2*ve%Mr?A16`oZg&5Nc6*_Q~a<`f+n=r+3NUh>M=H*cV_-chG}N7Vspn9Y`Se z0C&>eX!bRrM=;=eq7!GFC$R4w=n|A@e`7&l%LDhi6W$FLp7k-fKe@oJG0^dCs2ftC zB0v*S$*EwIXr4EM`7n&hl5iB`A4lL?b)cQ2aNKqjRZp2DO_QVx^`6pHR5;7E zlj%-cQ51!F4&J~xM61?D4NeiKN{NVy6X-Qqxk8=MfEX_jL}^8BK|~N7FhJC_i5-lo zIHJodz)CX1Y{)@S~!d8q1l+bMV!}{YL?7wC( z%edaW=F&F+ z($9?`K8YY%uR)_%0MQCxd3ndPa;Y~P?U+0ni$XZM7r6Hug|3%ZMP*Zkl*~_HJgCLk zA%$#B#@zrWY4GPt5fc}9icOq|ZdVP>t`f>G-FQBfO2-8VoE7L?C-B-QL8&<(Elc$< z9F9VNpaHd~Mzw{9XMM@!tpI_e9I`cn>D7RVpdQ8}3WkFbsCW7qu?h_iA<}x2LUHGS zH_L_8E5^i;Hs-n?bM4!dqv}ItRGh3xVBa~)+_!mXcGsfbDMZdlCbCp%NFPW!OYKP{ oAG`}3ZPvA8-a>7*bay4g1#tO$)YSGB-# z09u8rA}2Xye`S%*{zU3D^_fPdmiyPg-%=noKoSatC_xfp1wO}z@<18F!7w5ZBTtQy zk>Q?#Vu_u^$z|>m7x@d+R@cH9d2;6$#K=oAGXHn~_+m9`^0Ksl zybr&x6m>QAki2vjRQTUKo@})pZ5^O0;;V6NP3$@V;4k*yCND4)s8xvJbzU?;j6jsI zmJlOe00i|<1M%2^mY^!=O@UVms-Tw!6e7N`0#c#W>-;y{_WlDAEgOIU0000T|{kC~{~#l_0}%A4(11APN%oTu?? z=X074W`VoO1edlFk(}Pe+k{l13cG z@Zg{ebmFvrg4(aE)ymt0PXG|#hrbo`l9pd&CJJNeG5oRLh@uE|LN0g+kPAk_jD!Dj z_W)6I$xu?r4rM_XOv2giIes?kpb5$I1f+0vQ(N0DRX_d*AT>Qam_gH;poF6zhu1W2 zZM?3O0ATjZ%VV0p@0F|Xy0#$W%*eA545VUQHZIT}1^_dzn{lzTg$Dx@C_=$eZ`855 zuv2PZ+%F%lcB{7yKrj%JgDv*_6XP~T7zIHv>jS`+?hIW08PEt5;h|3hYY}w9A7ik8 fw0GAAdk6dl5~BQt8lE;000000NkvXXu0mjf^Ze9L diff --git a/packages/mindplot/assets/icons/bomb.png b/packages/mindplot/assets/icons/bomb.png deleted file mode 100755 index 1be37974adf9de2880e568e700cdcc9037c78804..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 793 zcmV+!1LpjRP)_K8L+b&88i{a`h`7P#Ww_cAT-3>7iG?d zKQ=FfJTtdc)9<~|e5oamr>PvpaLsiMK% z)`3JKfz0M{+kjr+tJMf=)!zW)RDC`lVzC%#5o2Rx@Or(N z+pwWr_G0Cy#KMLfiChPqPN$_Y0QGvkUkCxe-;Z!O3?8>yEmSHM!)YC#@*XrA4QQHX z0BF760&r5HP@qa>L#*q%0boI`Rx<$XRMi0R97hX46Bz=Guz(YJks&PLZ=UBdyUk`p zsZ`>ej0K>|afib(q9}^d4OeFfM;4ipp)QvTJ3Bi(j$5}tCq9+UX8HLVTi_P?ApdRO zZnqn4=W;oEbYjW^%*@QBNDxgXlO=9ZRaFCIR%heN3`nQbC8{1JXzH(jfvvZ<_c95_ zgTY{*$Kx^fYu?80?k<*>m$`D3z?1*|Or`|_fk8U72%SNQDjC;Ho*|D@?i7hr`}2PR X#`)v2r!)w#00000NkvXXu0mjfQIK%^ diff --git a/packages/mindplot/assets/icons/bulb_light_off.png b/packages/mindplot/assets/icons/bulb_light_off.png deleted file mode 100644 index e95b8c5b1244a41c9dfacd733ec652a532052a45..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 700 zcmV;t0z>_YP)!y2hX0`01t+}>V>!L2Ii?(iJ%bC$d(ON6}*wnOwG9V2N zOG`{7!B5mwL_|_S2m}#C`CdG|@7W+M+U(-lIXipb-}9Vv-Vy*Mg_?2)&x|dud>nH6 z+Pg4Y7{H$F@$4DL`b~nbIs5knvB+k zHj8ub763Kx9CrFf76K8`6xv9LChyt?+yu)3H}{cgBtWFDjV( zT46G1p#RVaN{MFkER1%KNN}rd=ywA89=YD?5^*~T(5|_U4sv3(jyQy?qF#!I-YIcK zeuGD!Ck%N2HSJIh+U=tYeo@e&trgAm(x7tzP$_D_zeF>F>u*g-I^VNp4(M<9KQ~%~ z3}FWb=nBN{ra3RFTFeCC z!$l`CCu*vADm$NUP}Jde?Il#nFW_p845!NWW$Et^{&SQIRV}^fRyMzZQmIB=eG~3I zc!HA^Wx-;#MFG+)=LYmWJqQGXuvo_MLh%Zf$0hUI2Iy7tvy~@~#>&eNWlKvX*<(i} i@%N3@m$wc0AN>MB3Mf9{XhoL*00000XYhLR!1P*SpVQi>)dUV<_*6qInHGcnEb zQfX6|c{lO4l#RKaZC-XZ&u-_k%Q@eEE?Qa!_Tt0u@H@}<^E~``A^=3}gr(l4vU*i7 zyV6Lx=4yE7RGGkx6gV71cjvY=iqb#p!ylZn>j-Cf+b>x95wMRT==lzjH$f681f9ze zR{P)>$i_z3RfAovII&B>n%*Ds>XegyS_9EX5sW0f1d*FX&^tjGBX?Rzej4t{=ddW_ z9h>UH!(o9}TURNVdq{y5qM#$E1yaxnNWKtKkRh^p1YA9U=z#4*HY{(h_k{(nnF>pQ znJ2Y6(rFb^z)nJ2pnqIQ&_2v{yl+xxUhm5uO{Q#!J8DY)klFdV&qIn(Wzh!))n z^W^$!aM&X3bCX~Vo|JLOLCb!-`g!yN7b-yh!|sbVZ|M~fElQAyiB?lO%sjz z7TJ==TTk%_A{ znxkIa+E~RC#EKF{U0G~y<6)R9(uCp7&f7|JN}RHwEO@{EgbF~D3a1<@ip|9yZb^6$ fo@6A$W#9P^w2GuX0-m@}00000NkvXXu0mjfB69Bi diff --git a/packages/mindplot/assets/icons/chart_curve.png b/packages/mindplot/assets/icons/chart_curve.png deleted file mode 100755 index 01e933a619caa8c6cb9fcee5d9eae853e97abace..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 710 zcmV;%0y+JOP)RLq zBa83f%q*uO+hkn-px3iWUBhj*zEtZ=#J?K1BwoS4fri4we+W?%x_!2UEjG9A57v+ddMu0 zbbp6n;=LcDNq6gD2L9C2J@8#y?*rTbgTj6Ps|^D5|MCj{`@<*H#t`wKg(3XGf2QyU zf0@G{{9_BdAC4aSKNVGeAq>dh`~N>9tN(u{wmT>x9B`-HYmvir?8JeOFVbz5u> zH|V#x^ai*A`gyzm|72hZ`OUy04pZPY)6&ahrsWHdS>_MiW?QUvoolwwWxnYbrv=9G zAbFr`rQinWXqscE(MN|a!$l4~hCDEFhknBjyGi=*G17r<_V)jl zB|4H8rP?#iOLZRs>9-bTIvMExwy4+UuxQe`XV#)U8P$NSZU2ojH2n=T)ZNqrEM0*# zI5i4uc*w#O3aL7Q*+%*5QW{Y@8K%V=Ja7ZFGq?QL&e;54D`OK7Z~U*7wgHIO|JMZJ s)OG(gKsaSB6tDTOk-Qp=;RaBG0e_Hjj63iYg#Z8m07*qoM6N<$g46R|L;wH) diff --git a/packages/mindplot/assets/icons/chart_line.png b/packages/mindplot/assets/icons/chart_line.png deleted file mode 100755 index 85020f3205adc903896aae3ac8b2431d81d25a92..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 526 zcmV+p0`dKcP)vZ>%h3)%~ z#+IbJ;FFDG??-c+T_21rm1LV#4~LF)_b?ghyQZ9u#u#o3H=L6>&|AoXU?qv@1Je4>AlGSTjH9nQnv` zZj`d7z#wVmBfa>gsDTLdFI#`g-3Fu!5 z$Es7u?8}cWwJkZs2@EU)U|{|IH*L!Qck23oaHd4px(fwB|2_x$_YKg$rO1-+wT;%l zQ`7tXR!Mt3P6M2(&pepC=Hh>#e_xW77aS^%7ub~^eqd9yzkqI;iK+$w0LJvVLF}yV Q@Bjb+07*qoM6N<$f}^baNdN!< diff --git a/packages/mindplot/assets/icons/chart_organisation.png b/packages/mindplot/assets/icons/chart_organisation.png deleted file mode 100755 index c32d25c16f8b399f0cf5681651d2871a48207627..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 444 zcmV;t0YmF_A89qTKGV%LqLqA&{k|D2>yV7qLmg~*x1@cbjz3zP!z2FhV16<-TNNz zuIz$fLNt0{xWmll%$dUkM1*+|PHJ2ZGvdmC35A3UoF6R(-~DS$BH+@Xy#VYsLyQ>z zxq>v8$ny|FSR~0W2u4ic`k5mcbEIiLksz4Y#KyE{9LLn}_oq&%6$}Oga?Zh83$3-^ zU4V1$eaMkz85m>bTh*c{3ch%tltQ=L4Q7$u>-Ff*JP6K)r(~Ul_41v6uR1rSij#*! zl14&E?hS3Iagod#Oo#p}d7WbijUO{Mqc5?@<$>unxw*22 z?bQuGkPsSMOgEm)qR1=cLLyZOm>T65_V?)|o0p=i_uUiST44Cz-W mqJp!8r`H!$*8T4x&4Leh&Epbde3h>N0000 z)5~v^RUF3g=bd?{7w4U(okA~6ODQu&AyTU)qaihDP=g^ZV5Kfhx?#trq@YHED?=nm z8X{F=Fli(%K&l}`AXu0%WX=(eO^E>Cfm*WCSBpMff|A0@P&0}b- z@vu|b_butF9--78p(rVogpgvCg!(S1p8cR&zh3^)8!?W*Wjq8aNzH zSpmoJP*=GgH>dKrnER?fW_*%Wj@zr0*Zui{_|PN3iC>TI+Zak*tPO9#w7Q3JJCC3a zV5jvo&RzX%snXq-j2JJCCKFaPcWV{5XYKvx54R5jK;Xmiqfw#6K%KP_V|Ed#`y;sT ztRPX@g88|-V2s`i>)nU8)Kx_5YbwyzXn{x#yz=&N6aWHTQcq{~E~`XS$nyzsS73cG z3QL6WP3FRQEO`2wAm>1$IgG-LK(wkHZA}qNaO(LBV0(k1a%AlSlq*pcu+U!h1V)QL zgVw}BN1A;dn&m(!J1{?U7yV-=mn2ht$Ch6^GqI93 ze+WNbT38m_O&H+JhxUC)WkQh%K3KqM@|PRK9ha^TE=rQe56?E8-@O!mOY_{s^E~~+ zrER?s(gWuj#5~m2gfP8eLrE$<02qDwZRYF#Q&Vl1x2yzvG^f0?x!E#`zrkO#K}6uf z191&uyJ(I-hT*FvIFc>{fH_#|IIB4w*PKo}@s=_t-U8qAV2))0#vr+bkRFJD&g~Ht zCg+jKWo*w;eE?u;o0&f2Z>pWiGPkB0;zk~!#wPeSgJuLNI7oO%#KI^Pr%}w^geyh& z?9h=#00@LWKC|erv2Np98pst8YG{N{93Bxo5>O($wzBNzVh zg|)61U)Dl=s^Xhk-THM1{5S%=@JIV|JKj0xDM_xYzV}>pVm|e*{jX;NfaR@ES)NqA sTB$w0a+2D0+Z&ca0*O=8=#zfKm;e9(07*qoM6N<$f`+80v;Y7A diff --git a/packages/mindplot/assets/icons/close.png b/packages/mindplot/assets/icons/close.png deleted file mode 100644 index 4de1c3815e716b295b9968d52f5012c0ffb7c6b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3758 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 diff --git a/packages/mindplot/assets/icons/face_crying.png b/packages/mindplot/assets/icons/face_crying.png deleted file mode 100644 index a7e3f49fbca2ddc4712ed7bbbcb5482f9cda43b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 936 zcmV;Z16TZsP)Mh53JODVWnpw>WFU8GbZ8({Xk{Qr zNlj3Y*^6%g00Q($L_t(I%cYZBXk1kkhQGb{nKL=fG%1tL)YdkEVlatqjCDGUQSd=p zEw&U2v0^nElm<2CO+;F#tsvCkH4zy>@+u7_NYsig^hq;@*h@@(XjF31=GIKoq%&vE znKOI)5GuBP^m|_G=V!4#!5s{B&?W=fB7Bh`5K%0$#@53+L|?L7_ue@#{-;Ppj;=*7o<}GP zj0J&@@qMUF;boV&`sL9%UBRxMpXd<)2_QYvb#HXXL-qvwT8~ikI_Pl(A?HjJ+I3a`xu~O4U zPOayMfv?%SJB7#>Hb38RZSspjeM!n9Eme;_gI+j8_lbSH{X&dFF~E-4l#~LcC>p`N z+jevR!4EKh4-if6#ki#w04Y2Yp;!aLXoRwn(y%7vlJg}>3J`+zPJwk{pVzAUp;RCg zZ$P*vv3i4mC@O-{MNHt+Ke~xBt3<@opamH4vQzvvzQX%|z65~};RpmoR|71vcvx7XuBIV>f{o!Ao0?(- z8=jz;FYxh{B)YRu}ns; z3%Bn$>5bea(=9T+ojumipKcWe5(KQ;=!jwAsJ@3k4DPb=fAbF@zBcB0Ue8+q0000< KMNUMnLSTY~uBcN0 diff --git a/packages/mindplot/assets/icons/face_plain.png b/packages/mindplot/assets/icons/face_plain.png deleted file mode 100644 index a6761bd10e9d512abdd967229228df53734cdb14..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 894 zcmV-^1A+XBP)Mh53JODVWnpw>WFU8GbZ8({Xk{Qr zNlj3Y*^6%g00PQML_t(I%cYY|XjE4ihM(`;Gxuha%p^|882Y2FwwR=C7CKI+)QX!z zMK@hU!G$`DnoU}YQ0Sr{-Lw`#5dRpYEwzhMf(-?Y6bmi2Bq5Hm!~{XRi4@aLnPieN z$=shg$3>9VWa+d1zL$6LKEf)-`pK(E^-3TaB1xf{wXP|e7z5eU=Ihn>^1sI( zyC>K7=6+)BU7(sEm?QjWlJdwU{=Ri>)VQWEdxnW80>=93aUROG&JWI}y;K4-_Y2}^ zuo|KO8wAjj!=J5i_sdU8Cdu2|Pnih-1)zKio$sGc$J}Y`;xLkU7Lpqw@f;*KAc<#S zp@?gzdHK+>v@Dy#;|6N1pM1x*cXIB!CUAh}O-N%0;w2ET5pkQ5cp7Pb0UV2$jI+M` zt=!F{IuD>!NN?MYeVF-S!~uzEz8xIr`1$M5xPi~kUFYJDw~)jpz{i$;BbD8YU9R^6 zDDla}+Pe`GB9059862AA>d$vTV*Gw%n#;fb1){(L(GszAH?nLq0GfzYWEPRIf{oTA z^@tz7It)sncAue(hq1nooxhDli`ZHjyk>|o-4>3%cZ9n4B3J{aj#K%A*vwDZ#d&1&A<83{k+?Ge(aMmD zM;O_1;8@NLC$ZHj&>o@`SPM~z4QiNLfFxfbh`+|Y!4spI0&n~`q*k}@?l+&7e5VU} z{s1fo*lGp4Fo$_qg+Nd*9VBdgl|R2fQBtj5-x?RjKXQA_d{9Vt?Z~xd_n^~Vh?fMv zLO3%;dF%?Md!wVO)$7~(g+H+-;4#GyojkRAuhhs8v0`IfiV}AQww;XD*!a{u0{u56 U&))pRivR!s07*qoM6N<$f*0eM>Hq)$ diff --git a/packages/mindplot/assets/icons/face_sad.png b/packages/mindplot/assets/icons/face_sad.png deleted file mode 100644 index fa258956ae0f075e793bd2451d58989703c6563c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 918 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 diff --git a/packages/mindplot/assets/icons/face_wink.png b/packages/mindplot/assets/icons/face_wink.png deleted file mode 100644 index 46be685577ce2122c83c5190cd1c6dedb87ef82c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 914 zcmV;D18w|?P)Mh53JODVWnpw>WFU8GbZ8({Xk{Qr zNlj3Y*^6%g00Q1gL_t(I%cYY~Xp?6g$3M^WzIoGFO>1gmZAFGtY-`OxW6ZQ}LMJSA zf*`f9gVM`->By(C~S;QFo!X`2-2ws^`fBDL0h`4u2tzs2cs%xMw_OtZQg%* z9uGmB_PFo)_xtkY`$zB=#{21&zU&sRNZ^YICPi(jtO_uk98y2MeJ}p=7?+O7G$y-J z4f}csL|Z}Df;*4*^geT=7y0MzjWK1ZzT^)~y+JVEPuy4(H(CbH#DbAEsQFt6!vt-D z@1k87>QXqx61gA0ET}LCcYm*@03?8P$h3Su6bo3hX!{-_{4Rvwfi)W;ya`da8J4E8 z^ekJCpN@&L%Dhq_$NTAR-1TwFT3ZVS5Ud4Nfn^sF-p;_+x4D_kBiHQ&LlX>#Sl_lk z_4^647eGpn?uL$|sD%-P0XKhr!guE;N%WitQ!+B~h{@b@Ff7197w!;Aeu6Gnx&ch# zkO)NEP>=5*42#Z#?Q|a6%!!i%sIWJ&iO$ZCs&;9>UnUT1LzH!*>VZ$hS4(KG#PrNl zsQ9llvL7-uIKX=?G4#Sca(_Pqy9mM6;1dBbF)5n5CR%Y`aP9VWM*m2Y+FhV=eI4bp z$Dh+vMC$^aJ)h-pM>AU@OK7_UCPe^K*N}Dd6KUzV97%u3qbDUUUHOH{oX2e5p*dDd z`?e-}(s9}nhY-bE`1uFukjR3@q{bMY8@ZT{esF;1XFszp9wD{o0A^@AQfxrfG=XoU z7iLh;e?u9om>a!{2pPlRSBsSWjL~hMo=#cbeJab7U|I+%k-iDOhjwk0U5(WZ?O^8e z;8-HV`>%^sZ}sKQeN}LbR*a@&$VH7PEumk`qZa=KS0J|>!&}wPUl#@ovOd_iVha)~3#~Ygh$29>KGa1bdH!g|-+n z%l(K(260cnR7PZA*&f5ViJWk2f?gO&<^&{{2pC@~psYOx{~+*b81ROHwh-W{t3t5R zfUAcy8L&$R7VqU%llVxB*$-TP4VVK!!+YQ{1?q!9``6#^&vyc*d<{N4Fv7TFIs?*V zVE#eNEVW7OU_j1YAe-u>mqKrV*3ZC0Dhr{9JVTgBH3a zw-MOd1e_w^+FNRU0B}<`6@-^H`-eRI8uYrge*@EsyqvK^`lfvjY@_h@W`KJMSbKop zAHe;7z(u1Nuh*cfdJEdlt!IEw0o1wyC*2TZt#4=mjuUi~!k&*bMpx`-Zr%6cESDIq zaoS|ycJT@Z=oCP8Ci0}*C*evrP)&0?`y^1R5;6} z(_KtbVHgK+*KHTwb z3U8KEr|M6CKHF5d&eQVNxr*Xd#pN8o{Cp0%jbBO9Pl3P2cIMh>fmjREstPwbsR%UAN&a~0&W97_+{w2 zzK;Pe5g_}Da_b3Y$=5(~fG&DU3P+ZQ@qA?rj`(8?e(XnAv>p1lR%ogzEDpDzrF16) z>>$A2s?J^XXy3bIMu@`YByICjm?Ii^mmGBZV2)~`4mZPIM`5A2nrR066HnGEYA&=F z{ItC{p*~!JTj5FqSfV=gCp=^dW8^+e7-xWNN zxg9h5B6J9LGr&<6$h%weF5k=nw=Wx9Cml;Jj>-7nQg?!GIQQV{9x_4d_iwmJ{{Z)# z5>8sc{Dg*|7C@Q@mHF%nZwj!Ba~VLi89@E#6*A|x)Vtp=Lby^Yqxhx(00004ivzpbHDZi=bC5qnA}gbx{;l2uf03R8|my(u#;mYn9sOOTwU8g0`)u zMs1^{U1LJk?Nk zB2EGh$v{EMs)*5?nf0`kfYS)g;`;s}c$%Q=0SvtPz29_|BBg@9=UTKW^CTcz2J}ak zE%aqZw#z_SB9taTZ6>seMLiDj<`?3#o?-KGpEX^S>eK9X1L%!J=m=aJWPodb{z7S;HU8`uU^vQi&Mg6L00000NkvXXu0mjf D3;i%v diff --git a/packages/mindplot/assets/icons/flag_pink.png b/packages/mindplot/assets/icons/flag_pink.png deleted file mode 100755 index 5f15e526c0a3244f5dca94d7d6f0eb8f28e99c7c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 651 zcmV;60(AX}P)d+j7)2IFP!RM|;6qPprtQl^u+-aqSi}MFlnvfmsk?R-o-Gupj{b7%)rcR2bHge)vq!@bbYa3An=n z<*|lTk-eWn&pM#_2J}#jh5#E?Hqhx1em|E7pr|gu(nJS3ZXcC^EDmV1+m9pV!$%HW z@&OeT^{bRbZCeSMpit4>t>x{(+5)(Ts-WgpT|2$oPW9&jRr7pUO!00L?qAWVA3t`b!EDVfFf(juaajm2ewGR{_!ijCMa-%ku z>$op!<~*r02llbqYHiJS(kyd+tkv+ibN;>WSsXOT3wQD7h4Y^0$MYPXQv{%>ko@_!-JTr^1YfBMxRMTQ8AJL!*9Aeer6K*nRJ;@dF@_iub z17@P6i(vxv1F@bA`kEO6Us?`4JQ! z+XpBxssP=ppWO*3a76=;vz89E!L&k7RBB#s#=4x|`{;RWi+t!IE^*bqWO#wVi zZaDrJ`239IDQR~A@SPN4Q)MLfe0(Ho6*XLA>R!qE%?Pz?(Q&$j0%Z!&arDJqo0|XS zU@}q{la?&y6AStZF0gbbNC9Iwvjvd{hnLO2;v)S6++;8BDhT)x)T;{uh~F3KnqFOq_yZYrcmh=dA~yr_$e+EQlLNOGM%Ml;i# zU7Vw6Zfq9mSh}^jHcU1p^JCLZD)&8iwzFjZJLh0y1$p5v{=642&yVMMd0qklkxl-4 z(M8=Y*1b6uGPP|>4YuT`RLb%n4=(L%zJGQLxM;W>UlFiB6XECJF0cUu7*7+ty}2;F z$iZSFgb#K51w;U7TAHJ!%Yznj4XknkpGg9?Cj=tncaV(Pu*kZQi0HutwHVN~Vz#dy z?bmnnK*b+mb6>}?_`=jZ#9R*%o32OVJB?(ZAJO?1uu&s|o*D$)H=w90g!f}38ZYGW zz$O8p=(;nXx{H4CfX`SUBs_Xqz?h(#i-rRvaF3io=dD6abXW1kNIxP?iIpSj?Wx$b z3_jBy_|1Dc;0l--67ewKMJxQCo0xJ+mkbSu;p!Ft4Rlf0oS|{aQrJ-ezvUp8Lx_x3 zf|*qy86QQ=Pa*1S#uu{;V{K(HlSg^LnFh2}S$JV`x&48y2sa2SQ(^A?I@lE=Sas)EyF>d_)lVCHYIEUy zbsEa6J9wZZ4XE4CdrjneSRacpBp1O#uEo2il0@cCa0R6=D|ZSVWX`|hBK-r%dTNTZ z0=`-mC$j>CVtvDr^a`&E=)8S^2dY;CJYW8W{JA0X?l;dl(LPG4VetR}002ovPDHLk FV1l@oDiiMh53JODVWnpw>WFU8GbZ8({Xk{Qr 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 diff --git a/packages/mindplot/assets/icons/funy_grin.png b/packages/mindplot/assets/icons/funy_grin.png deleted file mode 100644 index d15cf2d45ae513a4cf72d175f08526643e43327e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 905 zcmV;419tq0P)Mh53JODVWnpw>WFU8GbZ8({Xk{Qr zNlj3Y*^6%g00PxXL_t(I%dL}5XcTuChoAq7VnGz4s09%v>mlODMe!qgQA-FZD3O|Vv-lBfOBF)W#u^i56Rk0` zv$ON}Ad$vX4?gGj_q^}n{R!S7*GaqLDXqd4NjzboQIJ7D?+55fb@`{?ofrQJCX}M+ zu1cjF&GlOe#Opu_gF8*>*>Bi`mzlWRpY?-&M=Hbc0zs~mg!)qS*M57<(v1lI^mT-) zfz-frk**7|Mv8?Q9-Z7h=||bT_NYG$pa3XEx@*7bvI4;|3WDwyFW#NBr_2z>%|K^xm9cNmY#fCw`~*_B7F0 zjHqT4HdY{BIn~?i|M~0qpnp$MO0=3yZTNOCLN~Z_{TavhZz6MW6Q?fyNoG$InI9Ut zaAS&C^aJFRs~D-zk#pr%07Vo@2IBPy=_Ax2nSC3OLPIDDnID@$2td%aa}`LS>=3Z( z5pyyLpy6SlR&eg(5HQ65;mb7@;92#XDzCN0pn;94w zprN4w+qTJ_Y(Y9RpiuzObyYgv(}&2A z$b&>-k=kS5y3EEcJD9q;i`m&(bX^A^91a6uSr)=~nHoGmVqF_{?iwPb_5i5Iv+~}y z<)bZ&Yu8n;j600{F@&aqQB^~^>56 zDYw7otKF6!tKiA_2##t{_DZN)fS~t+>iA;Zmqi|*KQt*UeeMh53JODVWnpw>WFU8GbZ8({Xk{Qr zNlj3Y*^6%g00QGlL_t(I%dM0DYt(fd#~-iv=W`$Lv)yLf-8R3`JTyaDh`akCL%|A- zSRvAINDz%P6@)12FOd2N{3TMyQFE2GBpMNnNRU96ciUW}EnU-^E$`;-=I(O$`P|+6 z-4DkC_1B(1zg|zCUw8_SAeEp`G_RrwV^9bhMb20Z#m|v=^j`jZJW97zNQOIOp_MIr zh;Hvd+4X2|iCfdZ5S+cj;@Ei6*!0HFG58Qc>L}gQ)%Gv<9)4NU^DC5!vmD%g7ev4q zE{#WU8=hiU#3D8DwQhEnd*WwmBnm((B)i_|l7XM**d4t}>SiMob754lj)}Q2Ki^!- zj&&oP{vku`$RQ;@$yEg^m7p)Yt1}dAb$GjLic?=~+ zxAFeLDcm-P=A9j(^fBoJko22mw;p@1MOD8+If4qhh~uKxxQK0IDrK}^!jwvA?*Ycw zRI2;={gaOuVo6$U4B<7AEtE4QkU9_{d$qvGJELqk&_?FREUnKq68m5ih+vG56OMu= zT+6_q#I6Tzz-Z>a%QO1!4W8V*mHXfRMR;us%a@m!`7{H@)LIR=U~2i<2-xl!HvX8QS+;tXr&!2~e z26FxVEa&dg5EV?>$7+0m{P-0J$Pj>voi&O4#ALCQ@xYFvOCIa@In1~Pu3a1Ey3WHs zO|Yd5b~`H>kNo6RF?PlzY8C)-RqyQ!0~a>;98tl@)3m?xJ$A5)x2Um#!umZf?uM7} z?p63>@GC8KRxeZ^-ooe!)on^T+4RhgP}9z5aUxMvpdM2$;4R!De|?1ffmEzT1EOT>7!yETO$D(T9y63;$M+pGygTqi+%tA002ovPDHLkV1hqAuUh~B diff --git a/packages/mindplot/assets/icons/funy_monkey.png b/packages/mindplot/assets/icons/funy_monkey.png deleted file mode 100644 index 69db8fa5b5e06ac699018e5c702ca91c8c532018..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 784 zcmV+r1MmEaP)L zli!O}br{A!@AsUUvvcN*PRoj2bd{Sd&NeBNKgtoI$b@CrRd8V!1(&)>D!MAN#r}YZ z2&9X;sBZE?K^>w+DXC>41BYZ+*I7!CwJsuQnVoZX&+MG@eZ5h!jDmVDUmiX@ygZMn zD*s3BUk^i-;9$n^l0tuKS?>t9jWC~B&ROKcTD@f-^vk^jLzRN-h<@T4M#?>_e$lh! zGsJok4)?gtUXM#yru#4H0qn5AH1$ z*5pqBn07m^RLi{p_{B#7%kcOF!{ZZZXNBP-$Jlq|7-<~hukAq_4_|4`p$PxJ>I?cnLVR2H#f_{ z!51m`KAI+In$T=EIX!ui{!*E#3#WAMmu9mW+1*o(aKL7t^BLREQobBQf|8?Z||@EY}#5i93I-kp@HX! zqKL2+;(IQ+j0-j;o9W`#!cB}YfA(@q@AtqepMEv{V|1f&1;_6})!>QJ-R06HASO$8 zT`xcXG{-lWuSKeS_D~b|Rf3};^4{L+HgCuFs?+_*IpR+b|c|M;Eh@2BjA=}RjL zZ`SJJM-Kt+*0~RK)WCLyeueb{zX@Em@B_%nTD{fy+b#T8nSZzZv+e+GZy^;e&C$XD O0000kKBI*XX`r^Xa>XhWCbuJe`$z&$u+?!#3$#k($ zYR7OtSWq_`d@g`$Q!*K&ZitJ+5!`(XL1V(834FnW{-jyU1<<@%I!hcMIOuP83PwdK z*l+r5lmxLch5Ar*ZfG!cXl4Sq?@jccD}`>kRWP^o1)w)Y=bn%cFn5jGRP`5i>mIDv z2FzDFu0Fd+ofzKNG34TD{s_Gn3P1j6BN;?lB8iM7+R5OhhUVH){t}gE0;iXy(&+6F zVe2~Ed}_rA#R-PYEZsRSiN$aE&zM0T3!L_-$#*xTexwFS&LebIg|Kz|gm0{WzxgAP z+8bw8?LkA+?uyz}@w3IXZ=L$e>JLp?JK9_dQ16R#s!!&07-##4dm(}|53Gf@6rdFA z8GuCfNuhL&K=dI04?tQ!smiP_tF4idL}xi0;rP>1z;BVkXSJz1o%8PH0@!<3s4|Hq c@8sS41@Sp1TCQ_Hr~m)}07*qoM6N<$f@uN`6aWAK diff --git a/packages/mindplot/assets/icons/gener_male.png b/packages/mindplot/assets/icons/gener_male.png deleted file mode 100755 index 25d6ea91d1a333470832b933af79184039c98e1f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 629 zcmV-*0*d{KP)v4+f|_@RWw>5)RM`NuV&uI^xiO$D8`6BxXk0tJ?EWs<_-8>2;-) zWKcp3o`T%Jbv8DZ00H?+2@8dyT21gt$m6G*2l$?iC6Iztstut4r2wd-3P8bM5!|^x z6MJ9rp47dzLZAW(K~IDt2)_Q5!O~ibDk+Onsseb-MV?(yFmrC!xqLisbKh@i`-x=iJSj(h!<$+YCJC zMh+7C(a}Ik*keF=COGS#EATV${Oe*7f!k~yXly>8nc$8|D~`n~7tbU)p80iOW6x*> zfhd3a=HED-HQ7{p(#WSK4HSf6DS~k8V+{yoc_aZyUS8kc%l3kxbZR=z9LMhG;Wrw3 z8^CWiKHr1Xmw!h<2Y=(jgSQm?7a{$E6f%b+jDrMKM)1nw&G3%||GEwVKPFC*l;udx P00000NkvXXu0mjfxkDO? diff --git a/packages/mindplot/assets/icons/hard_cd.png b/packages/mindplot/assets/icons/hard_cd.png deleted file mode 100755 index ef4322357cbc34e0b5eeed34f9fdf553a1de2ee7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 673 zcmV;S0$%-zP)fk+XBT$+GFLor|=G~7Z=&Bd_^zJLLP z{dbOmhNM(Q`mp7h`OloWYysF>=iU40Tf#?V356IC6~fPKul?5pw+W80zw#nVEgemD zincj})E^?AZGqXAKHDz@mch}3iwfqB3rPo#(gwa141DiTF(xO6U^eE%d{-hX0gf3o z8{W?(@4ZV6pRS)EXbxQZMi1!D!oC#YJOO&yAsn%9V=twmsxF*P_%ZxvD(XXc8T9DS zr0103x=g@fvEJ!1y5C7b$Hz+ryB7+I5>V>_sj5lWnV>%bWD?LRmBAb^h}fbg923Y3 zqK41OM-q_X|0W}n)p3}pGlwoCoNU0Ppf+VweFB8`9D=Abd!7lXx6+7Cma$90A4ue; zVKQTfc(bHa=}i!!qJ}b>M^UnvkNQWze=dVN?ZJ22Mf(14f#NRkt=PP(cyuKepkb#y3Gz>xmDvuMC zIuoRtGlX&@?9*%nGA0rvwq8W9jW)GLrXJl50KN-ci9ozQ$MNkH;k<IV|^+8goU4jB6C^%Mg5h>3Q7RCr>7r_DEKw7k44$|vUmJAm;${=2wBT`(Pek9N? z+*$Z3+nYyu(=ufrbdbTWW%|!LE6aD^rgi=em@XcV9q^{200000NkvXX Hu0mjf|3D;c diff --git a/packages/mindplot/assets/icons/hard_computer.png b/packages/mindplot/assets/icons/hard_computer.png deleted file mode 100755 index 9bc37dce369d66bdf38393b191df4d7e6c7ccd54..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 667 zcmV;M0%ZM(P)a!u4Ek1OWvhNg%r^rdTXsY3VK8?SdPP#w89em&*t9`8-y> z{{XWmi9uo#0y2mREC>R)tyU|D<2Xwun+7u3ce~yHC8N{n5>SE*7ca{{mxCuK52M#x z6?VgqVUHr69iApkt_fp7}UIJIX)^0!0b=W3KH zu#9)c?;$B!KqeOeo#x5*?d$d(>1am)Y%kbK4HaZEF7DqvCglmk2%DRMFl4hCO2bI^ zX=T@9j!era3Mj9K%ggW14jP4g$@9D^u1>q%4oF>&Q{%YG^bC$1Iv|Sn?VXTj+j1A` z_4;iBxjK9L%sJ01;N^>_f2ih9=zM1B|Mb6I%0_FShXA!&ZGuYnYi{m5Mm>)<#Bd!= zpw*3PwK}@fZ5>`FlHMWvu( zlg*1#VHC#iD%uAHty;DTg0}q?ty;8bDFzCDreJ80{BB+R< zJENR4PZMQi-K$n$6{M+e{`y zCzHvi{{^55g~BV5NOa+FIKC8%#WFEpk_S+;0uA4flMsu=wvk9g@eiQYYGoUZ#;;nf zwk?;-FdB`3VHmiWEa5y`gl|tCa~huHAQ%j?r0MVf0GiFFt=sK#C%yTk;Ec=V5(eW1 zy!^<*iw^+Bx5qH>dSE^ra{Kc6JlJfuBMv}5)@Yi~=Nw?K*=zV6|Ft zLOAX<8jU;B^k)=l4vT=l&3kn^9UxVL)9GYU)9I9}vfXZjQmOn(B@&4pQul^EU^1CN zHk*ZXIt^qGkTG9cEEbJkuV?WZo6QC!5(!Z8c%13?`&?OQ#B#^uF;uHnNTpKPc_2n0 zqyCI{R;g4puH&IXp%AEOGKB zFaZe_Htgq(0OW7HPl9o7Hk+@=e6O@xZTY%@-!Rz$1Rlkwh5!Hn07*qoM6N<$f($t; AN&o-= diff --git a/packages/mindplot/assets/icons/hard_drive_cd.png b/packages/mindplot/assets/icons/hard_drive_cd.png deleted file mode 100755 index 1850b701cf20400207e7c4ce777940ec1645f43c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 734 zcmV<40wMj0P)D#T)oK}@`dJc1(dv;c^7(ug?CMS@EEn0?c*sF z3P%K-mYq3^jLc5Vc7U&qeYB>sSiC!n&6bXU$Aw?*ANcTP2ld^3Ts~H+MJzd|s z^YP1Hc07G_>)Lgir!F1{Qn4GcTg%?koHo<=1qRN{}nPDolOeI^o4N5I>! zU$N=L=sg~ zDx#dOA*B0N~cqPsWI(^rbbkh)DS0_H_UN0C4l_kvWIm2#Kyy6%BCh z(yIUf003&1xdx>t$*eR2ZvXxT0001Z_R$y3Iju92q*wg58};}zm(OaAH=p|y0002M zh5O5#fxp|~jc?yi@+7$`d4Q6Hl%z;WiWG??NXR{Hx%)pMd~SE0000OQI diff --git a/packages/mindplot/assets/icons/hard_ipod.png b/packages/mindplot/assets/icons/hard_ipod.png deleted file mode 100755 index 3f768da5025d894324c7fa6fc74763f42995f460..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 463 zcmV;=0WkiFP)qrt0hl7pI`Dr$rJ)1%#!m}(}?)Q8C%hu~P z&*$@ZsT)vdK!&|8zes6Pj1N&eUReJ`yuV>;nnucw0cwRZqU);x5X_mKSbSEdYhBl; z0GJP%irE%X*WG{_OK!=Ch zOWQ$|ChD2{a5$vx_S-*#TZ9g))rvNojk!lrL~$Hb5CpB*=SGmFLUCD^mceefGw-9( z=tP6QkAZYflEgU9dV%b_cLe+t2B0bK>f?^+)j$Bo<1y*ArlKh97|`KY1}?y4GBI6U z5vSAX{{X@;G!77-A;&D8M}xOCP49p%jzo#BYdscH_X9`;wbP{~X{rDK002ovPDHLk FV1mD6$SME; diff --git a/packages/mindplot/assets/icons/hard_keyboard.png b/packages/mindplot/assets/icons/hard_keyboard.png deleted file mode 100755 index 898d402d70c5bd88c168e548e2c2fdad009e1796..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 570 zcmV-A0>%A_P)*`a8*+wFR*)hbh_o6Y7qVU;jPxsytzx2T?qC@#N7E3V-W(78^qTtcL0FFmlBz5|hKo6fQCQbi_Vm zg+fR;d%p!KXrNejEi=F1j*`0sM==2=;t{-@ieUG+gr6s6^hxPUntw5hH?N{}R*muG#iOLLgQ-DDLPW}%f1vx-$*I7)nw zfcOL-13nN51fSzuPw%;K2WgWo(hFy1bAI3VopUb-0Nis+mgRTP0@LZVJ|2(TBuVN& z+EA%fUX@BES3aM=&1SO_aeA}o`uduja5${`{r8$SgJ{Xf~Tbl0moIh539=3k7k0hr@BL z31l*v6h>rm(PgvQz-%_7bK^2GKBhxqVhC2NHLeLH5{diea;bsnvREvrBMKvce}u`E zg2iIl7>&lanm|$%@6in#7|0w)qY)KsG#Vg^A_#&|Ch+0@&2hPl3mJES?)xCRvYE+s z-4Xcgu}8<%1@onPeh#Z-k^REHGlaqtS+3C&f+gG|YbRG-_ zK;8rdgF)bV{)@q2&^;-DALaP?p!n(Ir6dUQ6>oa5+wDEF=^rMO>F8guCh$M?8yO%b UQwmBS=l}o!07*qoM6N<$g0ICJX#fBK diff --git a/packages/mindplot/assets/icons/hard_printer.png b/packages/mindplot/assets/icons/hard_printer.png deleted file mode 100755 index a350d1871536eb28fe2949936de1c79c1c26269d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 731 zcmV<10wn#3P)^msfbTI z9jQ^EwMRD5xNEm*sJPjH^k)@gXT@kl5ii6#6jNXX`Yb0kVgq(zut?ZfbRr+DS= z>q{33dTpWN$tl6c7nxE)4Qur1GCxuUnp5Y z5HK(>u&W4&EXz<>UtfnPivJ`O3Zb4K8yl-}7K;Uh5XR!-B2uXo6E#Dr&Ck!D<$0b5 zXEK?PNF*3;w;Rc15`MqGDN4rSaGd2kJ3GNmOiaM%^D*ppJL2&;mX?;95{t!PwOY^e z?d|R0=pOKTy$qMj1$rk8qtS@b(NQ*LUtb@(y1JlNtJzsS-`3U!Ze(Pn>hXBkfzr6} z{3Vv(2AlG1;RQN6I#_mYZVs)jt>6p>!_3go(6&ye1Mdo>SRyz&A^1T#%t=UROW6Bf zz^9CeqErU&3`3<-Da~6HQ^UW&yCT)$Cu diff --git a/packages/mindplot/assets/icons/lock_close.png b/packages/mindplot/assets/icons/lock_close.png deleted file mode 100755 index 2ebc4f6f9663e32cad77d67ef93ab8843dfea3c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 749 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 diff --git a/packages/mindplot/assets/icons/money_coins.png b/packages/mindplot/assets/icons/money_coins.png deleted file mode 100644 index 0ca9074d66e7a008dbdd265a48ff37f454941be9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 732 zcmV<20wev2P)7$(F5I~EPw2+A2=20Sy*#|n7r8sf)7*RgqMLv3&KWmL+^F4r z7i0Z}>kq&FSJ~Z9+<5!dQFwCOz1ndvw%m_4J#=sT@Q1U19`B}1iL1?~3va{ZF~|VI zfHw0WI@T{zdi2I_>3m@YYk3d;l(JU>d+bPFLOo8G;T$3)1!qp*$dock%HEEk|V0 z3L2&;r~p>tQh+yD{T!MxBF4;%7xC6JH1CtlE}+w%Xkuu&haUcdHC?=ZKr(+GZJfIQ zJ6@GU%>XYSae67{=&NN{rB<>+N;FbBA#_{A0WZW7cXJ0E=}(_?dx9< zr?bEW55s(NboZ^^cb|S1s~AxnBh?-gQ{Ob@*3}OO`vCi&FRqICO$~lSg*6r5QDf7DTmJy^bFNy&p3d3; O0000JP)!DK;9Y=n` ztyZT|d*HtN4z^AtY@ehNsx1Av5@058(+4Yyzw@m$wtszqQ04yGbJhSW-PK+Sn9kpy z6c5&sKH5aCB||O zo)n!;Re(Lq>NlD(Y>~Mm^&rNjF{+zqQYLCFW%O8ObHbFoO{oHG8H;vpFN|zULKkF} znE;czLyw9^s&5nLicTfoh(h`)V!g47a4i6T`6XNhM{_uCpf3fOH)+aUm{Pd%0$HCQ zD`b=e=_a}-!2e?bhS(t8*Bx}jxG|(Bs-8zXGwpDVhfpKF$YwKX2WZW0hO6n{GpNkbaQ6*W`Eo;3}_R5=XK< z0YsI0n43^|QWPahLjCo*dA`zf@Kp|7fal9I=-yn{U+4i*ot*tN)m|#kBeuVS2r=(P z$&2x{rKt;Dqx=3$7Mb}P++9YHsIwW%;gx^mfN*2lS#X?@Zq5b--LhKUKO1nouBZGU QkpKVy07*qoM6N<$f-OlOxc~qF diff --git a/packages/mindplot/assets/icons/money_euro.png b/packages/mindplot/assets/icons/money_euro.png deleted file mode 100755 index b322ba9296ace62bce4768154d1d451b9df80066..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 605 zcmV-j0;2tiP)sEfkJ^DF^$1U^B4aT>wGyd_KRG3vZ26WF5%bR^MyEuu}!xvI7 zQ4}Uoe0wYvMUju7*jEvjh~~QmnJ%%90SQCmB9*gJSni~-bU}(xuT=+5g+%PHky=$b ztAtNLSnMEvw{i+rv0BowTGVPSi~WZvat{y|&Z~_L5?u;UhnclI<{p)vqxEUT<*BQz zvfi)z!DrXF*rA9oQM7h$yYT+pnbu*xRfYK$;(Lka*052{Pob5$<(3yn4BoU+h_@+x zjWTEN9@;zO2(O!)yifUEJ2BIPhREJWCnrPQoj|d77oF@Qw9+?S2`ddhQ_U#es#KOk rI$x!XulBQYygdf5{#9;h@W1*4h?>zEyRGj_00000NkvXXu0mjfeSH?O diff --git a/packages/mindplot/assets/icons/money_money.png b/packages/mindplot/assets/icons/money_money.png deleted file mode 100755 index 42c52d05f6f8242e4de6fd953d9fcfcfcde81f3e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 738 zcmV<80v-K{P)kKmx=vV@a|w4d?1G z{A&|1yzGF~TZ8KHTl_r*T3@s<=A;pUk6t|eFbv0%74?%+OlCdki0e@06yy3x1%Foo zZA8IP3kLWJ+!ohD8&$%-Xu;s38IP9-L1$fP3CnTSerf$50rgDty6Lr^*!3d)Z5bO| z-!b-f1e)3AZ8+nCGAzU8!LrRAB^VQ3$5hYdKYA07xLVs{S`MaSy~ut|Ll;xQn;C~< zTE=EZ#ZWme+JuKV0b`<5t|FFt=DRug$%=#6R&beFSRGVu!=XktGv>d{p(*$PrItbs zC%{@V&UayoG-zyPh^uwrJq0zft&6HKksgOU)PPF&4Gy0B97SX;1Yuth&KvTM@H8_D zI|j&k17#5C^Q5`mXHM}n5yer~ z1v@0vf}XSMShQ`!KZ;`Qm@#H#oe^ U8%xtYa{vGU07*qoM6N<$f()ing#Z8m diff --git a/packages/mindplot/assets/icons/money_pound.png b/packages/mindplot/assets/icons/money_pound.png deleted file mode 100755 index b71136463797cbd9bbee7601fd27ee7f4c6bff02..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 565 zcmV-50?Pe~P)~-Etk+scx`tkipse7HYewM-t*f6pyf05Vqlz=?Cx-0Cb?Vi*;@osiZSU+ z^MlKA`@6uHPjYa_ijgecBXjczsZ>Mi@*n=3>DY{yjc@Ll<4u5-uIkC+1B5~qe(Bm+ z;PP}WTC5-BG(>Ycrr0cP2>e(Vov||w@?{NPQqcRC1e-Pfm5JGwcv|N(6|e~fJ(I-# zDloE^U=A;IM9j24k1+6jQtwQ(^~)4tx?RN8H5RtL3JiJUu1H?PK~{sA>T3EHzIy}* zmsSzKc)+h{$!Hqb5*0IDhghg#C#B+dtZYJMtdcTDmQ(ayfK6N@D61f+)`{O^TU5>F zD|q=51{Xg7Sk*m2oNVGRwv#G4M?*~0FL87wP4|u}*gRCwJ{%hOFyI^y+h_dwx=&C* zPO9MKJFG`;;0{tS0gCx8iaCD)9m71|a0S+0Nv4YZV;!NihP@*VyRrsOxk7R5;7c zlif>`Q5?tj7Yw@ZCMtTF^Q|ZedeJhM%QPCR*bs8V79p$QTo7e94yQNXRs-{0?hOn_-8n0AMO@u1Ts zNl8QzJs1#rz%RBt?ux>l+amAvh+J!{$lkaqv}+Erb-6j2xp>K4GLQnNB*W`hFg*?P z^AL@~(h~Z+wfcWEXHqV^Tq-#z$7Y#o0;yFxA!00F}F2dX# zjE$iOgT#G4*1TR6kB1Gnn@>$meCh2a>c5YuIvFn-R2W@>4@M*m@-|jiDV?b)bccgA zyPfsMM!rjy>+1O2)5Eg29Z_*2p&qGnmS!OH?vZ(4>QB01d>j%9n4QINxkyT(Dos?I zjaWF$*IQmh`SF-?xU%xMEfjq1=6qY*g&lgG_cXv$BGoIWyfO5 zp>pdV*O+y=&6@N2WWFo(%RtT`Q(H^6zn^a%epE~Kx^mEJ{c8`luC$nc*z9j|4Ms8aJK-laz2{eQ&bu=6;*0K>sc1K0N)?)o3UDjKX9=-hzDU3LGfw^jbPZm~2VXaK~yc|hm3 z{CAn)*q^jA?tbg8#{c#mw*7bm5g7w*Eoj-@@V|X;%m4lZz5h$r7rnQvH5VY-01z(O zRPcYwp-KOH_jUizSe|yDU^IgLKQC~9>87Ip#TyF#*Ke==Kk2}P|I-gm{ok^^`G5BE zjQ?57(*Nfz&v}W{fPhK<4So}R8+`k`8^k&t94FzhQIz{|S5h|M&0i`(L}E z>VL}or2k3t6aNEUxDTfRZf$N2uB|Q&Am@h73_Z}ZtNVZUvW(9`QvwfIS6Ve#mRmMh zl$#Uh1-n|?hMZ;D|HEg7-M6f;B+d&IKLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z0007=Nkl6o#LB@8}(K97Pfpg~%`*O4E?Sg>FQ{NXQB+aiK!EP#Pj> zBcv@XP&bM$tW}`&x5!B})1)64S*D4ETA&r7C0hO^%*^$EUkjaa6g+TN=bZPv@A=^>b_M$%&ES*N@z}_i4V)X$JON0tOWz*lyLe!s8Aura4HCjjAYm z&{Huyx4@e#7o2vhUQTtB33%u0oRY0AzF|G%V7&IMypU6lL&S!K7FTt?Z0`Fq0}7KnTUCbDj~6h9gorR?M}gkc~IFH#5u zAb^H~9PCzIi>_|cR6r}qNF~&&Q}61lsCT^}&TgaoYUz*K{Oqnx00Su{LV}QBv+9&& zqykthfR>$$CP01lCX&)cQ9z|eaqbPs+g~Hn!cateLXcJZn^qd zb$fP5@WuWx8!K)PwXS};#wG>e@q1x?uoqiap856nqV{y;vl3*n5NX>-e5juCd}KVw z8XQE;rL(Q4TRVnFzt0N5<1>@8hn+2e+I&7IBL8S&rJ^9;eVc8*eBbqFx1IkF03MD| US>eu%xBvhE07*qoM6N<$f_*+}-T(jq diff --git a/packages/mindplot/assets/icons/number_2.png b/packages/mindplot/assets/icons/number_2.png deleted file mode 100755 index c1f38f54d45d8632726a78a11bd442585932a7c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3573 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 diff --git a/packages/mindplot/assets/icons/number_4.png b/packages/mindplot/assets/icons/number_4.png deleted file mode 100755 index 5195f57582e21abe5149fdd032f5d85ae50738ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3629 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 Ef|8+(od5s; diff --git a/packages/mindplot/assets/icons/number_8.png b/packages/mindplot/assets/icons/number_8.png deleted file mode 100755 index cd26e35c52b752efb3584a6b93e59739bc552200..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3681 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 P00000NkvXXu0mjfp#An> diff --git a/packages/mindplot/assets/icons/object_bell.png b/packages/mindplot/assets/icons/object_bell.png deleted file mode 100755 index 6e0015df4f737ded7e7e14b546616e704f023226..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 789 zcmV+w1M2*VP)w3Y+732PG_{dW-vWnGW?ek+eegcN?|t9z2?7xGKN@MGRD*J^ z&rlky@ZUE!D5>oxB^64H+e}Jso>dhAcXJ|I^4Pu&0hSi(IWgLX71SJg^}9{IANt4a z6@3vO@*Gyvx&UJ2j;g6eXHOcITv{wUTQS>}4p&n=2Fk;r%w^@S*8a(S*4l9Z?xB2q zbEz@ceIA}S32-WSa5Toip*ae*h-LZ>K#V(y+NX@kSg_V%$^H^^#w5(VjmNa^Al#Zr zxKskTv?tM3%<%;PqbiC^j8kOR6?gv~_-2jxYPk=$UI?e|FeaO0Fjl)4b{QYeM$$#= z33NONUJd|;c@3 zEdc1N;!Mt4u3_FH!uuLNdh0_mSQm{kBBv%A#u5&?pX`FYmIHU&F-*wfPx9%`;Lgug8DbunAt zBaI+kWJ7UF0I#(WUwSj4$>*c9h=G}AiU3$-A0$Ax*`Bq(7C5v$WSb3D;V`_ofN@<0 zyyGH_s4k);Wh-=dcVI!ug{|Qbq&Jv@e+2kN0@9!>-iNlrSST`i(3d5k^wJhQO4^KW zF%1@J6soS$C)Ne{CC_FFV2Y&a z4Co4YFjq&xTp5X`tPqr@&_w?P@T)qFu}N};o>QJmcZySJ(R-Md ToJi+(00000NkvXXu0mjf*@atu diff --git a/packages/mindplot/assets/icons/object_cake.png b/packages/mindplot/assets/icons/object_cake.png deleted file mode 100755 index 4ef151aeef90cba37e483fff6db393e3f3c215a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 676 zcmV;V0$crwP)zhG}s4?zzVdkG3gj2<%zA*q!$2x>uX%NDCytJWaYrPXj4 zU1!!qgC^xq+`MO3-MxA@QLjVPPv?85H*G=(KHPIYzrN>QxF!Im4#IxZ@krPd?&kid z_ZSiplU6Pr0XN$E74*}446)Vy(5l0Tt?p~}o7mB#KX>@D#~Be*<>IiI~I2tp#x z12i!dI9uRn_jAuUmOh`s_#3O#Q@}+t$Jn&L2-mkQOn%5i(=-?p`Lj?c!2VW(AbHes1cgEB@zPzW^m!s{<8 zH^}g>l=Q%z`79itWZZZq>1T&4kE_!Ru7HeXVR6SO2noJcy-wyON8U|XUoeAf zHk*)T8OiUqhEc#)EX_nb3VMysq8mBfIar@DEC@xNQ&ko5*l*<1J}BWse+#xk2O71^ zZKRS>{bS{FIWTbz8yidq6)TE@^|cgAnWrExWsHLC$l+FDW*C*!T_{XINt{JZ95tYc z_p#09P!;b%OW8qQ$`}Pj@4<%r;2b2&DJYXe*!EsR<%dl-6KGEyY2+ae zQs4@dsSC*31|bfe!20Q-oXHShTsI61&!<8X5%II3+V+8k*E-I+hzUk`L)aOtuD0000< KMNUMnLSTY|9xOrt diff --git a/packages/mindplot/assets/icons/object_camera.png b/packages/mindplot/assets/icons/object_camera.png deleted file mode 100755 index 8536d1a795888d8d396ac4211b639c6395dd08e6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 665 zcmV;K0%rY*P)gJ-O!jxnD7oNLq;%;3B=$mW~C-A78b#}Ym zUa~ApY&IL$YPE8+w{2VKx^DRW{x^j};R(m*^Z8S9-^=ClFHtNO4^>s2WHK4B90Evd zRNvv@{p&Eky~2wRC-6pYqSb0Y8jr^>3G5|f?PqEtk*KFqDSspqL8sF}uh+wHIK<_n z6MX#q6V3T;+&aAjAq2YJ?gK?pbdSdaP1D3|HoL3QsY$Qbi+a6|a5#)~It`Knl7dhu zghr!*N~MB8Ab@N(i+;b4$z&p9n$6}7jROaR0fNCGwg*Re{(gmpDPU86x^Us%)obw2 z=aha6oFxO>?KYy(sFbSkv{)<Xg3cSx! zV*;wSwBMGSfGRX({TECm3Yn@1ESF0eb3TJT z!7c-;DBO+#(G_BEZ~a#M_t*Fbci5Cwkwgrt00000NkvXXu0mjf2e~nc diff --git a/packages/mindplot/assets/icons/object_clanbomber.png b/packages/mindplot/assets/icons/object_clanbomber.png deleted file mode 100755 index 1be37974adf9de2880e568e700cdcc9037c78804..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 793 zcmV+!1LpjRP)_K8L+b&88i{a`h`7P#Ww_cAT-3>7iG?d zKQ=FfJTtdc)9<~|e5oamr>PvpaLsiMK% z)`3JKfz0M{+kjr+tJMf=)!zW)RDC`lVzC%#5o2Rx@Or(N z+pwWr_G0Cy#KMLfiChPqPN$_Y0QGvkUkCxe-;Z!O3?8>yEmSHM!)YC#@*XrA4QQHX z0BF760&r5HP@qa>L#*q%0boI`Rx<$XRMi0R97hX46Bz=Guz(YJks&PLZ=UBdyUk`p zsZ`>ej0K>|afib(q9}^d4OeFfM;4ipp)QvTJ3Bi(j$5}tCq9+UX8HLVTi_P?ApdRO zZnqn4=W;oEbYjW^%*@QBNDxgXlO=9ZRaFCIR%heN3`nQbC8{1JXzH(jfvvZ<_c95_ zgTY{*$Kx^fYu?80?k<*>m$`D3z?1*|Or`|_fk8U72%SNQDjC;Ho*|D@?i7hr`}2PR X#`)v2r!)w#00000NkvXXu0mjfQIK%^ diff --git a/packages/mindplot/assets/icons/object_clip.png b/packages/mindplot/assets/icons/object_clip.png deleted file mode 100755 index ea897cc9f18ca49aa0f30bad4e6b67e4afc7f498..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 391 zcmV;20eJq2P)`oHYyCmI1nr3DC<^9@PyNudrDc9~P$75b!T6T2tv<*K=EzTZ+r6P_ zRz+%oP}1KIqEP)v;U&v3%|^C`Ga3?LtY&4dQB4Oz;1v;J%z!D&%WRH@BZ?x; z3)8@IUIv@hG|@IwyHLC`l{1<4BK>wam95g|i|?Cfzt876&-Zx_0f5*l-9`IJI&mHu zE6$@xB)6N}7VeR;!X8D!TAw;;&0Bsj?A071cO>X3K0wl7WZ1;Tg!4LHyNcnzoeQ7t zNW`aSlm8WXYkek&ir$13=ngczvf zV0vnjNpCF&K8px}dunv+`LIb-sOC$_jD(;IBI$xC|7`(+9cA>Vir_V#z{?k7SX^Ah z^71m~W@q439Ycqfhi7+gp#A14n1n1!e>$EdeATG|f798Y=ggzwEKH2Q!qU2QA(Se?dwqG69%>n$6rtE z%F(845Az8c{w(XgimJg96!jLMz?zS6I1HUm2baqQx7&@nx;lhHA!r6vs2|fqJETOu zLxeu2OQ(3(au%dg>AcZsWI(zXn9XJg1cLe8k~0h0wOL=&HK}7X k{AKr*U4z7Szv)i%9gTgghwgU$Q~&?~07*qoM6N<$g31kYk^lez diff --git a/packages/mindplot/assets/icons/object_key.png b/packages/mindplot/assets/icons/object_key.png deleted file mode 100755 index 4ec1a928140311ff30a0a9120e958096c77f446e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 612 zcmV-q0-ODbP)nmX^MrbE*gmZ6|p*GkKoxa?X?hD9M+@sRvFH{EqYA??u6x z2pu{uGnrwz*>rh zfvUA@7b#acN?M*mBG3rQV?e^+0R5m3YXWyRZL5Bt@3vAw{9JaEW$}=f4bXO52yBH{ z;G~ZN|GLn>k~{On3Swd-Sy(gFkOdyw-RP%&exwl01RJRp))TI*SsngruhZksQ*NT%!X?K0000gNuvOO$0ks zMIj=HnnBRUR?tKXG11rxCU4&7dG4NbuvR2_mEvc)n?Cow;~Wve|KR^>9@p5l)|QB+ z$jmun3q#x>;ss-PW_mnr2MHVzLAl1RW&0?VkixF*4t!St0YVb2wnKdU(kmOHiL;aW zK8Xte%(k>MVGG$E4no6dcNnb>BhVHHGD&1pv4YZ68kE2V03t5#PCEFm7=ad$6)+3B zTCmn*?A?=u(o~ET7~-7g0)ZB=6|lumi4}B}MLgy~Ysy6)Q5%Al7|05&1z3Jpu>cF8 z3?VXs*3<}%h3`5Wld)N2zJnk%Agw<~3k)sPTLFd=F5;d8-bj-09SkQuynfflNcZLN z!^_37fdZvzrq=9~mp*($%mcDRKC&qvaaZuX+C=AT6O*~tHl>0mcP<_q>-z%$xO(@! zYluq5a8VQI$S@4?r*v;gPo!QQ%pX3A#>xx4t=w-L6COWx?aj&`f+!YePsFtj=hOQR zP3=E2j@9L7s8;T^&s?u(Hdpu?CubjMrGn{t_37>9$|AD)QE08weJlKn8|OyjL~7oP zC8mPT`jzuH*Dh^I0048RGafUIT)4H~*m8m>egI0iH=(LB%b@@O002ovPDHLkV1lw0 B3klCE>?a@fNhGaV ftv%qM$TQzJ6;XjO8erVL00000NkvXXu0mjfw}q7O diff --git a/packages/mindplot/assets/icons/object_palette.png b/packages/mindplot/assets/icons/object_palette.png deleted file mode 100755 index 73c5b3f243d98d089dd9e025edc81b939c1a9320..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 856 zcmV-e1E>6nP)PbXFR5;6x zQ`<|^Q5@e>|3Fq06ckj13SKAzrBX7=2LmNa=VjAGbC_kBmo!b(h0(lh&dtlb&FNfD zmuquN(K1t)x?D|-M01+g{cLIqvEiq)K|Q2K51*IA`CQKDe7`gRw4E?o66yPi8&Nn? z6l%~H1nUQ%T@&i^1O5KKw~aW)k2+%HG368DWXx)cVb)1u?vucz;=oXT3q3jhU%Im| z1?(s=#*a)g@)(;l>H@5fX<;>n14d_9M|`nnP-6AN3z#%q4DzF(Nk5nWM_|14<{lEc zYPuy4KilYl*ag-mA8dVe2Tbuq#03kAEX>O@@Lksg>YW6tl(V+B2dCW}0wgkfx|Qv4 z-D>azy5k)pmaZ6BhrO`cMMsS?2x;x!C{kX=N`E6pB`Ii0bgLj_hNq!8%(hX_#U?!j zKiGk=Hh5$0c^KwfGl^?D=47dOtiAw2KNAm$$b9o7%%}<>OK>*QNXr%9w1k|LfQ{U2 zSbTi2+))I}Pzx-B&9LZXSZvF~o2CeGlzvc4uVc3ME*4%1(7-xD(S|uUCaD1_sK#7S ztY9n_un1WWgXlK28Rs!v7K;_~=D2b`P734*5Qt!^h`~~a5OuM~Hfisl25mar^a_}} zg_v*2Bt^;WEyLcAGWiUsw{`FkNI_Ti5|L(1@j^*TA*!PfgVy)tDpxOv#%F0dOfNa0 zdc|1jYs3&aBQ0Zq#{l)Z8sgGaTq&(WaY+Uil^l#q(oh+BaNO|=WH5X?GktSNWOaL* z*ZNp}GN_(f2a)O)VOE@kDJ~t8MZuVBOvi$ni}tLGC}Zpk**1wJva900hs{igrph=+ z+^OPVd@W&MNyEpqoQ;kge+VO-3U?f3JDTsf%0@_u%bjJIsY%3=wv>=dpyM%#>wcRc z+$m+(U9dwMf67h5I&QPOO-M5_z-8e1J$HL#g&=&d>pz$2H|k=JCX$xdMNxRq1}l<=psl5*5Xz9i;M}s*NP=ugs7Q#8Z;Dyx|}!`#}xw_C3!B-yaPC&0j)XcpuX@rNfq|q}N(wJOjA& z>u+z?dfJEuLePrqzy!)73pvLjxk4d6XNZt?hm_iYES{i}J5y3l?}PPNYDBR7oPc~6 zL^d)Bi4Q2L3pnp!nFxN9c2E+=@XAl&+;2m6a~kZj1r3Mz3C=hmUG<{+vWR@t4q?fJ zhFc(ozZD#Mx`^Q~g1v=K6!QnfuqyD4>U4EjF0eamL}Jx| z%&`kR-H+3GBYr*Qx}frLU4`%n9(`uSomzw)t%%NagXkA*R5Mbv9VLDp1wMo$cOMa~ s3Wm%r7^bwK$2$}-<~D8p`#1iScU4^XCLAA~0ssI207*qoM6N<$g3sK(Qvd(} diff --git a/packages/mindplot/assets/icons/object_phone.png b/packages/mindplot/assets/icons/object_phone.png deleted file mode 100755 index c39f162f854a7c412fab9b6ff38fffdc61754a58..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 488 zcmVP)A1 zOEJ*J2%-6P-uFsN(314vc)81apZC3Y?}U^RyNqtPD}x|FyWJM~eFHm=EXyz)4*%_2 z`9-hS>nKH+LWpCvJW_K{ee2+Qy$;K=iUCm+-8LExR4SE?bDE}l5@MQWF@R2<=i#hh zg==L9Gagssz>e{B{#CAk4$LM@iPnXHWk?Xw`LOUEW#s_FFc8NvgbK8&R^1S*OrR37 zn*ts~sNlPI6{FG%N)TkF%_zHVFy=yhaAh z=X2P$4d3_SI1Uzzg$DC~VGUH@|Ab+u8hXXmW8$M^Z}tgueu#dCAu^FHtQeV(HM&<>-oby}}zNt6*; zqOz!R7;sXQCXnvAh%NsOY!BYTPS6Ya_FvE=N~N0XvE{pt>_abd<38j9C$Sf5#*g^{ z6#d#i;i$++U%QNK=q`5eyJ3V~u*Q$0G+EWp#2~B(nj<_bDs2zkL~hK7Lhu+$HfYV9 zg88}w#kZGWr6!PHZ*X)j?F`*Ue##H?v8xKkTTpy+9>!)Dj4xM}tnU%z-?{#Jvq5LV z)@YN0%~$O(K6n)LZPSD2E1d`=S}^f`2uGvZfdMJLnQPaaO}!IFvKxB>&n|bMcm4$0 zUpC_Oiw1-@0yr|I9f+!ueRKzf;l|(20%tyTVPvrtXKnCG%!j^695MYP&h*dy8jxmG zh3GwXFus{<)0uFafajiFK;M%%ru8Id^v`&@kgN`{8&+n{jEe5+VD{Q{CLD|<6d0af zLr+L2Y>HMnV2KT5NtiRE;&b?xw@c1+=e2n-zL{&& zned;z;Q))>W;sY6uKp4No)iE8002ovPDHLkV1im2E0q8M diff --git a/packages/mindplot/assets/icons/object_star.png b/packages/mindplot/assets/icons/object_star.png deleted file mode 100755 index b88c8578956ceec4ff17f81995b8652f6aa2b58d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 670 zcmV;P0%84$P)rx?szq&Dw38OK zY!^{rCAFy_2z8TV&4=Ube7+y|oYO*02OOyb5BD7I^ZdAQt`ZS+tMaFrb6^=AxbXHx zH;=|4CCm%L{PZwSS3v3G^sH+#W3JcR_xs(&`Tqt8^J9}d0vU#im5^f#04JL4qMaI^seoYDXwB>7;oyw=|M z1!ayym?6XvqV3ae_f95{py8ukt2TxB^!VIzRRh4#rNu~y^X+P>L{SXo3_|Qqm>9wY zz(9!5s#OBElpmj4DRyjO`0`RiEIkUg%7D)8y}}Ye3}prow;JG>UQOIs{kfZSJ9bYz zskMPbH9)1H6FDf)1=ZKVfe+;jf`a(O{!9meiN~~d0iA$0qX=t0D6Ydx4#RO76h@#R z9_k7Z;$fv6G>QeZ{Yu0n&xL4%!?l}UPj4!j&Vs@?dl=y8#_IQ`5I-5a_T$dJtJ_~5 z4&186>klZh{hfba%A_P)hUn2-Navsqo?5A8 zh}}V^=%7@_%C;=H{tGpIj5CMu*>5J=i;m^t2QTySd)}9aAppozC}++wDz`eOViU-dbRRoz=JsVlZk>N%^azhi%=xTCt9`LQjtqNFW~e|R=r9= z`@I3J^#z@aD5yBuq2DLQO#|4uFW6R5kzPZ+h&6Af&5}POarL&lA~3t5R1i7uh*ffDw@qEs=HBW ze?CI~MkvG6H-MF7r{Yv4kw_q&PNP^XqFgTHXlH@RpLO}3aV{T{Ez=8lo;PHV$Ads1 zfOtF(s5%5V>3qE|&{lueV1Y1j%GF zXt&#NI-LlGLPN>_18TJzN~Mxf*f6pY5Dteo^|P&3>(H{!KTr&_wGRQWb^rhX07*qo IM6N<$g7V1&P5=M^ diff --git a/packages/mindplot/assets/icons/onoff_add.png b/packages/mindplot/assets/icons/onoff_add.png deleted file mode 100644 index 6332fefea4be19eeadf211b0b202b272e8564898..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 733 zcmV<30wVp1P)9VHk(~TedF+gQSL8D5xnVSSWAVY>J9b+m>@{iq7_KE}go~11+5s4;8hc+i0Xa zI1j@EX5!S+Me6HNqKzU5YQwL;-W5$p%ZMKMeR<%zp69-~?<4?8|C8S?bklXr4v&Ov zb&06v2|-x?qB`90yn>Qi%Sh2^G4n)$ZdyvTPf9}1)_buUT7>`e2G&2VU@~Bb(o+Mz zi4)>IxlSY${Dj4k={-9RzU^W5g9|2V5RZ2ZulL9s2xQbZ@r6eP9Ra5u(s|C0Nj#&4>wTSkb?%#=9?@ z^oxDy-O@tyN{L@by(WWvQ3%CyEu8x{+#Jb4-h&K9Owi)2pgg+heWDyked|3R$$kL@A z#sp1v-r+=G4B8D6DqsDH0@7OztA7aT9qc1Py{()w`m``?Y0&gi2=ROcc-9+nU^I6< zT=e_Y=vSnG@?3Ue{BW5ONFttcE!R-R_W4O01|0-|K-YNXLo2`4Qv z`r1LxR6#yf3FB%T95gJnaKKivA~Z}S9A(ZxEDK}O3T04USJ P00000NkvXXu0mjf^IS-S diff --git a/packages/mindplot/assets/icons/onoff_clock.png b/packages/mindplot/assets/icons/onoff_clock.png deleted file mode 100644 index e2672c20676177efb2fdea593b8f000fd5f12342..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 882 zcmV-&1C9KNP)Zkp%;s8}r$h6cUMpt8KZ&`memftw9r2BH zXZp!+CFaEnJk?xA$eKJbHrNPn>;Axd{TeCT;zL2Z2lqOE#$fse--k~9GCAnb$WrIY zUzF=05;%7ScRp;-^ba=g4+!_yjOVxZHrAy=-Qy;3W{V_ws3i3@rj zN6Uq**d4Ifp5hMksmBf!JrmJQC(GkeNV1GOW##ZtQFwF|H80+P{}RL%{YNk_%ft(I z#;Cz`v~ti@ZP83cwQ@*mu2Dwn=d>z@4RV(M%#h6&LDo!N4vuc zo|;?G=MQ0U0&vMd?WX`v6t{tSSteePbgELlMO}xKy8^QHBD{2ALkbX%5TpZC;3a)d zD?(MwgLzpdUa8!vFvP diff --git a/packages/mindplot/assets/icons/onoff_clock_red.png b/packages/mindplot/assets/icons/onoff_clock_red.png deleted file mode 100644 index 2842cc3386709236ba7608965c716054c08ecfe0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 889 zcmV-<1BU#GP)Q5?pHNP6ih=t5yPA=98JOh~fJLk|&ANKv*VsNrUUhFJuyu9hv;ma*PeD|1sb z>Y+6B(ON1k?Ls1ni`{d>-PzgMnb~o6oZ0z0Gv!$Q;deOv&;R@2e1}5;prXCh96}{w zm@q_`r}zJc^cMd)A0#Bt^eOfsl|Z->eQlYT4n2kVDmx(DT>U~VF7hfxg^Xe?V5al) zynOxgXX2ZJ(A21nA@hTTM8hC(k2=Q<9`(zUz2IM1*zk>|g6OOU-+UcxM-$j~H@L>D z;4hRR%ez)LUuWzl@>xPK8D!k za&Y(WfN467V8_O|^!>g%*_GlW+GOfeGnM(-o#2~rEfTrgwGbb85N*GO*u-}z@-)<# z4C&if2(B84Ep?b|IE0Djq}b=Wx$lTJ`FB94jyR)EJNQR;5p8LNUaG2srfJNS7LS8- zTtuY(CPJmTV7G6%Xk?%-YEhw=YpOxaQI4sPUrbSJYb#_~HuimeePG`WLpqTU#!&?> zEyHUX=t;9}ZfJSgh)*k~f!%ILcXu}`Dk?BEGz5WRq3y^3?Y@r4hIGa>AkW0GcN(D` z+6P678DdG2;B-0-@yN)C(c>m*XqjmUHj)=g-85?;=j3=JwU-eqIgaq#VPjZP6buXu zKoA5olfaXHNQbjPSJ@C=vwrppvFsz2eEC^0ogT1f$`DuM_`mcXW3}REYYRfTxnNeM zR+ex@MR}N5`OPnn85Thj3{Lf|nei9p{NS07HJ>oC4}Mrzlg<+1Y8PEBfUp0jJpx4B>@E+cy3`^(Gw`Mf+2&yxZm<$to~Vpgvg&QKNR z_f#1(r6svZt%iF?s+n<8X?B&!h3g9Dbb8_=MX}!;HiQSAh`bp^WMl~Z-44teO7W_Y zV4thSL{h;rJY7!l3%5J4H1!tIzB`Dv+YxO(haWeausGZYkI8^hWj6mzo=L0{%;yxzh{5!Htr?51 zvG|W62MzC8BZ76hRpCyO2zOn<%e)K>NHge!-~)Ap33OdWw6hsLYbCxGNt0%wk_2z7 zfyYvXheSG)5HRK1VB~%mq7Dmurw#bi@hEcOr3&G1ZiF*$M=&9nB#VNf&Q^r$4G5kp zTURh&s)E0%5&hyVD}sp<72~zmAY`Y(9aqO6CXF%=zFHGzO-A&I(pE}v70YQxCPJ{Y z4L+?5-crdLn3ZRPEs!A4ehEY3ZRpL~w9>@aMN+{F4dI@v&>(QDHQum!mG~E^$OS8l z!7?%Uwib*ROP67Hw`ika)gX-(8Ia`-u_IEhxG7U<13kSsMW+$lbb2dUMm5p6pa}cjgA+U$^mJ^AjD?&bdi)8~y+Q002ovPDHLkV1g8IMc@Dc diff --git a/packages/mindplot/assets/icons/people_female1.png b/packages/mindplot/assets/icons/people_female1.png deleted file mode 100755 index 7c71de03b2b38cdf3aba691e3a3334b712ea4d5e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 663 zcmV;I0%-k-P)^@R5;6} zlU-<1VHn33^g%H_Q)k_G9ovjfnFiK+H+Wv4;+`mU!eP_1WYT1cBMG4+b^?L6?AK< zB&!jFQPqM`i@@k4u(!!^rBRBL3hHN70i&#iOH+^0u48x?v*GiYACKJzT+r-=qk+oz zUpus;svxs4gSf1jroEXH?t1wdY3Aof0-iGMy6$K8JD3_XyAT<+1dUmit6yK(! zNF_M9n(Bm#E9}vQx7n3q{&nCY)~18Vynj^W_e>bi@1BCANxml61a_7c$XmJMZk?*# z;GcZLxX)MuKlTCU=6xU;ncBCjL?Amju!Wp&&M@$uZ9p#m5yGvf5Ue8*EJF}(aLDzJ zAlPvPBtx=PWAE0I3CKlubR6lS2?)Vw;GM(ZEgZ6)VF+v#S+fswc_vu$Vh-L#8KE%#xl>f)!T)$#yRmO>TTOvB+HZ zV8!UbBF$h)Z%6VHiyt@rn*}fK8xy1uKWEQR=pEqAk+P7{#x6 x&>pVMG)#i!=x;v%@<9vjT^KNkD*ncQ;SaYr!-X7+DklH{002ovPDHLkV1noBEY$!2 diff --git a/packages/mindplot/assets/icons/people_female2.png b/packages/mindplot/assets/icons/people_female2.png deleted file mode 100755 index 30383c2de517fd22945a87b0528d2821ec4d49ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 722 zcmV;@0xkWCP)3!D zZfa?ojY$@yCfls+a1%C3!?bPMoJoiMdi{ifAhYP=;XUyGJ@1Lv1Axc>uU*mi_s!1e4vIF-H#zjvi{6P9o7zm~Hif`95cSO@Tw_#RTVDspTCI z?1WjG!bBB?H3jy17EBr*CLT#JGjJG|1`1Y%7iN^+_#&sEmmS*TR?wE>{mu5i50)3r zn0j6Zo9P&A#u&_fP@^wz+rsO{#Px0kH{x~-S%>do+MvP0OBF%Q^sPn}YIyzzw?{}< z(i?*=pB}Br+>1rSU3`Dj!LTr*1f9DNClXJN#^0{pys98gNpFg+%29?Cu`%T6g0wUU zjn_^wEcJC$EeI~$jk2`tLa|P3?vTXF_G9381A1*0Xm}??wJ{CS0RhBM zc(^l?fyc8lgo$?{qD0u7+*rH8B}lF-EKX`Vjux|sVJUcXP=K;$@hH+?Kz?@=vfD#Z zF_Z*JKOYHlF5)Y*s$Bw89_QC|mk`%`&!M!R$57mNks0T8MIx(>i*!{G`1MDTsR@Rq zHy?wUzCT=oS66+VR-K3x9KkI^DhbArRilynARJe;T+&7mNf;zg`8Z#B5H@`QhO_;g zF2QJ1N{%td=O@1|5Yf`zr0~+JgiHJpF5U@Ke!wEh6s&lKk7|J@t(W>ll_$K7EDLm= zDcwUZEC8V;{s<`wARKUph`3*C9+vx!w+KAl{>Fdd57Mf(G`SI(6vnfMgxg){D+Lwutc1Si0swhN#FwOv#}l83ts6rCW;r!9Q9l zl<41549yYiq6clJ;(J(YgF_14nmKFB@QK(mo6I~sr{BJxJ$rsp0HSt^ntND0Z;o48 z>O2Ckm9}n?$F`*>$L{;{zT>f+bCm7tpaqw^4q@%k z&cHHt3=3xZmt6rQ_dtDM#)Xwp66-Thu=<9?(zFvpy0gAr0U4Z3smE5f@pZNr!NoqT zEjSPuCQzMw(H;?yvf{+e;!7(;4hv)+d%cjKFiBL%egy0aeCof8z<>rLEjMsF|CBRH z86WcxAYvS6H;Yq)jY1Z-rrjWiu~m;clLmJlDAE7UhMJ*jBxp}s&nQkrZvqDXxsiv3 zSJ78>4W2GFIu$$+Ic&5Pq{1?zhIy(24enCZy35e>z6~XgVx$x%k(+>tPw)9SL~R?4 zs${`1bqjTFC3F)dxIIw>)!QP7$vk+;^#2c5r{lsjtwKYnfnn+j{~{GK;|I8rvPFU z5NbS#W7m)ofjNER&&ggR6fXi0xd4%4143#8JZlhXW+2TN#8b=5@L&-EUlY^cTT=>w zb_~+jfcRCYfdj}H0J49#sP#gtxE~%YBJiQ3AjMgoQJKuMITA}Iz|zizG7pw|7R*XF j=$D`QjOCK>V3B}dL4UFUkhgq600000NkvXXu0mjf1x-zB diff --git a/packages/mindplot/assets/icons/people_male1.png b/packages/mindplot/assets/icons/people_male1.png deleted file mode 100755 index b3454e15fb60fe8704a574b0ac35c4d0c902d738..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 748 zcmV|@r@oVseQC_m=rUfa}difiP=7Q#%M zshc`Wm&;AX{0?nQQx{}VMAAhV>V;rJ@&0>zF9w3lqKhA#^YHwCJm(xv5P+cnVawvp ztLfDxoZV2f8Bnl7AZ12EoSxeFR|2V6RIW~mf*~;sdI}9M6f$-Qvg7taoFz1FDj&57n{Mq4D7Y_TdR9C(EO|SzKHEmo zPOn#{+hEQ;;thBNzT#Oh`*z)EZQ(_1cpLEJT{q48TPx~`^I%-$NUju1T~|0)V}~FC6c#zk#8D6LRk;) zT0D?8Orf&Nhs26LtPbknDLzd41-|Ax#58f}=OyC^;x)af?Do-=bz1iyEv%?$mbQ(# zwJpuiQJP8?X_`#S8b+U_G6=ziYB!xPAcq{)ZJ0bECH@ zYx#`n8^Wzn^J!4>=q^bltNO15ry?0ecSLkjpT@vlid!jk)Fjf7&)q_V5zGs#3N%6* zbW~7Hg=&P0&~Y(|g>$hC9FL?;ttzPDZbpZu9OLb33^e2;FNTGJxScp1&q4M+y2ntQ z?C(=hpU$3~`Thx0eHwi0x`q+!d5k@|0_WHe%sG3e-s^MM`xM-ig!VcIA7H}X1ot~L zg=MLB4w-Q;Bi!!u2|I+Qb;0{{4Q53YX6+4_aXena{nmt*!YG7ua~`qc>o=?@U?rOU znS7%>klzi*muXnbM6i@4FR@s^8vTjDgy&%J?w?`u>NYMDFa_2%0SQ(qJE<3=<8Bzo zfdU60e*y(^$RF%r$kl)p7=7tlCDa$+J7w>}DU(O#~fk>pYuRvHi1E9^msg{tLeV XM&GIRvfA7%00000NkvXXu0mjf&%8>| diff --git a/packages/mindplot/assets/icons/sign_cancel.png b/packages/mindplot/assets/icons/sign_cancel.png deleted file mode 100755 index c149c2bc017d5ce5a8ae9330dd7dbd012482e0f4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 587 zcmV-R0<`^!P)FS^-G}e*;M)Q6>s#cP zI`Y#S($G6W`W@NI5g|L-MKl0Zmu$m^(0~^Lwo5OO~d#(vPfzC4}Mrzlg<+1Y8PEBfUp0jJpx4B>@E+cy3`^(Gw`Mf+2&yxZm<$to~Vpgvg&QKNR z_f#1(r6svZt%iF?s+n<8X?B&!h3g9Dbb8_=MX}!;HiQSAh`bp^WMl~Z-44teO7W_Y zV4thSL{h;rJY7!l3%5J4H1!tIzB`Dv+YxO(haWeausGZYkI8^hWj6mzo=L0{%;yxzh{5!Htr?51 zvG|W62MzC8BZ76hRpCyO2zOn<%e)K>NHge!-~)Ap33OdWw6hsLYbCxGNt0%wk_2z7 zfyYvXheSG)5HRK1VB~%mq7Dmurw#bi@hEcOr3&G1ZiF*$M=&9nB#VNf&Q^r$4G5kp zTURh&s)E0%5&hyVD}sp<72~zmAY`Y(9aqO6CXF%=zFHGzO-A&I(pE}v70YQxCPJ{Y z4L+?5-crdLn3ZRPEs!A4ehEY3ZRpL~w9>@aMN+{F4dI@v&>(QDHQum!mG~E^$OS8l z!7?%Uwib*ROP67Hw`ika)gX-(8Ia`-u_IEhxG7U<13kSsMW+$lbb2dUMm5p6pa}cjgA+U$^mJ^AjD?&bdi)8~y+Q002ovPDHLkV1g8IMc@Dc diff --git a/packages/mindplot/assets/icons/sign_exclamation.png b/packages/mindplot/assets/icons/sign_exclamation.png deleted file mode 100755 index c37bd062e60c3b38fc82e4d1f236a8ac2fae9d8c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 701 zcmV;u0z&N#0$9Ug7g~-`rQ^qx~m@y2OU8A z#zh~=7n#Z$Z*fx-GOtDf07cgx0suCz_W(2~Y(0tf@FX@P6EPuM_dgn$vj9LucO)%W zw%HgMW>=#oL>nZ>M&NEf08>)#)k<{$fCT_r>rPi=BV=hFh6WS^qqze>C6Ek}o{M5% za|@JGowu0t{&hgNzySHZxy@LTNh);YzZ2zSp_ zl$^T&Dnc|NLb&RD_!4>pt@VHdP)ZGER%5ZmWEe$lryR&y;2u^3cOkO4#6c%-(EY6a{600000NkvXXu0mjfxS2AI diff --git a/packages/mindplot/assets/icons/sign_help.png b/packages/mindplot/assets/icons/sign_help.png deleted file mode 100755 index 5c870176d4dea68aab9e51166cc3d7a582f326d6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 786 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 A&j0`b diff --git a/packages/mindplot/assets/icons/soft_bug.png b/packages/mindplot/assets/icons/soft_bug.png deleted file mode 100755 index 2d5fb90ec6ee08f53947e0266a87b03f75893446..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 774 zcmV+h1Nr=kP) zlgUq0Q544c8(ae&UR$8ps&snq6^bPY3v3xAmMW74Di$h~GCH6E3TaYs2#6A<7K*gC z777H71_Wa;(dfp+g-drPCSWu)#PInZi72LJ;o?i~$-U=y&UbQ89Dul3%3P+Axkzc* zbH-y;QF=hR{qLItf%ci2_&e5wNo0gnVatG?ul6Zw=o$I9Ljfn*ic3`U?>IfEim3g{ zujU&$-hy6wn;w(xme|zJm;lWJxtTFfM)q0`kX!Vu0+d${$}LCddK1<^htTe-fUYL3 zB`SdNsZD>RgvLj1<^@h6_+cDRK2Brcr2~>%$*5S)hyV33PV^teac3%|4lz@8p4?)5 z?t5o^?q+%^%)Yygo~I^U4VR!bTnWuE35hcWrfCDR3q+sxJ79e7Fg`&)RCqLA^2^y^ z0laVfadW90_Fz8Brm|r47sB^u1VgI>kanj)Z4`zMSfHlm8>CwXa$JVM`$2RrmZB-3 zN10m-!;BvH*Br3V8t`DH7m`jf#2upVDXl{5ff18_pzCPK1Zu$$CKKvd8FGeFf)+K<|x33pc7P&S#3GZT4mEw;nr(Ze*F z3&*?-4U-lm*#tber5 z%S_ceqB`b3ko6r~BbvDwdohTvP(3a(pq{x#T$yQsu#OKwEe}KuH^Mh@nxg_(Nw136 zq#a^3xNBke)In+!?qk3%4wB69{pF`Tzg`07*qoM6N<$ Eg55P&8UO$Q diff --git a/packages/mindplot/assets/icons/soft_cursor.png b/packages/mindplot/assets/icons/soft_cursor.png deleted file mode 100755 index 532f532d87ef60b5f2cdcdeb573ec949d2918def..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 354 zcmV-o0iFJdP)I0T{~(qIu$a8Oa`;1VJZ+NJ#? z)Z`G6Xm=;i@Oy^O@W4+X<|%s@Z9U8K%Cou=JW=N{umR|dc<1KC5j-&Bmny}u z1Gr;ImmX!ZVOvnb2Z3IG9yvhp5kdn#W^JX2LP{w9t>Mgm0h`0-w1g7ei1zafe zdny~;a&&9~i}?5QG&nFlE(hRq9e(XsJj>7i0YpGB?|)P=F8}}l07*qoM6N<$f=`l= A>i_@% diff --git a/packages/mindplot/assets/icons/soft_database.png b/packages/mindplot/assets/icons/soft_database.png deleted file mode 100755 index 3d09261a26eb97c6dedc1d3504cbc2cf915eb642..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 390 zcmV;10eSw3P);1k*-!zk~CMF9Bv_3(^PCOq;T&uF!>{(iS?1OX-eX zKw9bunxR5FrF6QaYs~9>A4#zW^dwIvCpq(+cfR?U`T6-{9LHUqo16RKcDwUVr?cX4 zIN~hJDs48~aRAJ}U_2g=KAB9SP$;0;Y@*$6Ly{z<(`i^NmbL#1W@l#$wOS3;YPBOE zJ;7`?L*?Ga6XzC292wl75}>gDz`(>h?is$JPxm#0jGnotoK|nAVM5$DQ z!C*kO-aeF@+Ejy?nVHEp8V&F~k7BWicsx!aH9kHLRpcQ?L&JFBAB4i&kAaVUxVvzh z3a-EY0%m%8nhI7|SE(QpiBL#sG#VUMM9}*(0mg2(Q$Zq;z|PJNd_Euiem@;jtJN@i za|c2MmsL?PR;yKNwOUA}QuO=7;V@#c7!{~gs?J7hAlsE7U#g?$aRkhSTqLq6iuCu9 z10_j_=;?Dc?4cZ386qH0HkgHTDT|HmGR`W4V2noNQJqfLJEot)q{V_UtsW+m31cP~ zDwWEi3HYBSoF4M;T?VaIdqinn1HZ9}32qs-PdwPbCf+WI6n9jl0-8cjV3%1FB%B&r z+`mzSliyLSH0dxYE}rk&=!uCa*V>()2znj`_XYjtbt>@4FLHnJE|G`xv)Ba@oLBny z1%3K7c4fiB^4{k6E8Pif0kNy62}b@9+bpQb1=l6TxbDZwj&S={?7%qx-u`rsG(Zp`-rh=e^=%((1yvsuf5d=&62Zj)Y zH&JviNS_F4_Hj|T(1j4$p-!}kixP9&dB4uv^MveG?dGf%sUCoc2!IFxD6wHRA2^dX zXRVk!-qSfk(jcaUKn#RP48(whfPlJUpApdrA!TQi_4D+fVoM;3I0gZ8{=Xv~Po;geVA+Em9@0Wq2 zr>OTZEGR05L=gf1T;ucCxq6Q6EgJiH@@-lVaAlQyw`jIF^c=&IVnj|95hHbE_cnt| zTzZQ?F4Ne@(bH(~&3nM%m)I@ID{@jJ2qZPjr)jhpe9hViOwH5k&|T#EmmL3(vHeUQ zq^!t^Al6JD;=mHq^Bg?J-8-zG2Od7gZbknG;K9czYjPqG*xjPo0k(c4%lPXTpw(qq z@aGMnxtFS(np+2kC} z7P02O874ZkJH$v#nCUVx$({yDN`IX@o2wyvTD#e`qN`_w5<}$3F+_|B!lwB?F)%&66ocFx{jBe!85I&EQ#75Y65B5(Mx_0d{Cg3j-*JeIvt~v(9 ztY`S8F>>s+V~sTmN;}4H=Z!HS)(DKjt$rUaPhR;f5G}c|OUlyu`rOm=z&+MjoL2Ek zTm0^)e6oN~%J`&=(gmjK2N~YhK_xcK zEoV5BWBb;K=H{^+EtW(wWXLTdS4FOhvL)n}sIMf1VICJdydZX>U~@QG{;*1X#WjC) zr1dbuM}d?FAAx%5Xv>qN8EFR2i(h1**=X>G)oOfg_U7?X#32k3>qH~N`C9QvE@}^n zGhqY6++vD;yw#&i6Q>Sed3?u6;$N;m{5aHRIk}}XyzB+bjo7>Llo{{)Y8o@oYqL`? z&lySlkNcO8o-Otluk{V>>wfd%Vbe(Bf8CuZo#-Fld&_&*ZX~f0KLJ#yHcZ$RnzjG{ N002ovPDHLkV1ga8B{-MRO+d-q3;Nq=BQ5k|pUEm)WqMHu)e1HsCoBnZl&D2fWC zaQI+^Ypcj~qlqjN+KQ~b2pMEyMH{Ql+1>s2yE7NkMta~2=N!)coZtD~5&$KI!t?Ad z$MG3K5aJfgx?{!872ITuZRI#lqksTdtyb{7RJQ~`I$^U_K{Co%zhNU}Spi{>7Y)dA z2T(yWOq>p(RuxZ;w1ML7gxm{mzWemI`nN(<|yr*`feZQuYV#H)Ari z1=G>vINi|>i=~44z?}aDs8rU})cijABZaAtpP*_$DD;f_AnVU~YcQ}?MFF~@lnxDf zyNq(_WL&)Po|mVtd(wFiQob0&DT1hhg-xfS-QxYqH-fm1@dyFt8i e#x0i4_uw}&{+U-AleQoL0000l0ldN diff --git a/packages/mindplot/assets/icons/soft_rss.png b/packages/mindplot/assets/icons/soft_rss.png deleted file mode 100755 index 1dc6ff30ba5020600aa4ba2646beb9eb25dc978f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 530 zcmV+t0`2{YP)8MDR)G%QU0LxY1jsDL`i z5Y)<<0mFa+Gyv?I-SF1`9OhtF)?#(7@ZwPg0IYohcf#rgRl*cR36-)JAyh$ycISTR z#|RJ*0Y`3-+O5RfdxRPJ@Fmbb_UtP8y?FXu?dZjo$& zzrG9Rp9<^S_%m{rBJa8vxT8 UVM82oKL7v#07*qoM6N<$f={^a^#A|> diff --git a/packages/mindplot/assets/icons/soft_stuff_folder.png b/packages/mindplot/assets/icons/soft_stuff_folder.png deleted file mode 100755 index 784e8fa48234f4f64b6922a6758f254ee0ca08ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 537 zcmV+!0_OdRP)x(K@^6+>g^d@v4;gkbWsEoXE%32*i1tcpTNXd5CcIl)ECgqz|2rE6EW}s7R?kl za1q`0GCkMruC6-2LANtwVlsgzsp4?{@7$`KBv!G66>Vie3h?3OmEEkjwdLG0PgLVi z`!N((f$A@n17Ldj#`};0I3@iHJ5M{#IZz|UIYRm4(!uV7eYIYIwQf&}_2J~}>pQ^n z6o8--^T(=hkBNQ_k{-_GWE;FMW7!p}f{NG3nHZ{D5<3d8&tLh%a4AqqnjMkr3m&fkMdECD3N5}Unig5wy40;>lo4j~k+e}v)` zR6)J8Mk*u=SpB`p6o)7j?S0T@9?bz#m@l>gc*zk__|*!FMcHwP!gwLJvS~9c0px8E zWhK4BUhe$KN9UVKPOxMNOv5-kgi^#pr|CgFd+|MrUGt z(8O1>C5urLHi^@yWCP5`g3ciz`jb5EQ)*Y6Fs<>YtYdi|Z$7iUj3J%5by<|2kMLF%Vl==ZZUK6wy_(+9Q< z#T14bqdL@$b8EdeIz8+6c$_2ho3Dm{@b&e$Ge3_}-Rz{0jFFqou>0@<9I}9N8OgM; z%o28~L@}#V+0e<-wM$(X#VN%q&IP>T<7}wsNzJa1pI2!+-p&1+vlMe>gj2y4bfY+( zc-#sVjvVFcW|Uxuba`lGP)X0m2=Cn{{K7LVUKplqfx{If^3>yCmJl{*$t0Fxl1*xC z=Sn!%C#m&RqbFAnDEjy$`qOa~+rr^@5@-!_>+4_XIyQiez!oyT+Ino$!0U4%Oaoj2 zvRUYlROO}6D+6fD8Rjovg{n%zE$uY*>|x^j3Di^`A=%gnY$1URSSFII2BVN6k+s$o z)0Fgz)&_S~x*a{WL?M%+F5H027hw9gd4!PJ-xtAO1(IbVTpontVdLH^g(BC)U*CN4 zQD$@H{ZL>xmBuug^(1YNgg^)^MIomax%2xPm=+aoiH7dO%#4il-IdWx(V}!xr0!g= zx-sxz|Gg35!xKFNeoH;% zRI>;DPCQAsGd&r#7FHA4(HHytKb{^=?hyV3XQ-8jhtkdh00000NkvXXu0mjfe#+H3 diff --git a/packages/mindplot/assets/icons/sport_football.png b/packages/mindplot/assets/icons/sport_football.png deleted file mode 100644 index 199f0f7f1c105db4d1da7923635ca4d1665b0618..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 875 zcmV-x1C;!UP)@uM zZrZKLQ08ITY#wSOr^)1q^3X-^zFU_|=8x~6ukZWw`Fy`03IMg#Q84MtI+(OwT`YR^ zV3Vj?^HwNTaMD`&0lplTt79Z>+eQn6urr&!LYc$xS7tL>WK7y@7dr>N0yf5al^FXV zLsw}Y7`B^#-7zO#%jvgKj-OtjYmA}ET{4Eq58sgU) ze_Mc+%rp;W7QIu=E5MLM0By4nQ^TL2uFOYUdL$YX0#O%x3Vk)D&@_v{KW#TNk2~o1 zJUcQ{Rek(IO!O`w32A=(Pd%2UB(9XD zCY7s8^6xpB2zkG~K0LdDM|18c{->}XW@ZJ)H4y#zi6N+Ou(xMXVl;FhpMV*0e*bg5@jLI;QHC){F;>`R6}I=gLXzN-t$s1{H|6% zFkP}V>jwBIwl2afcT19fK!@kT))+NX;>*FcvdkFBbFQH!B@C~lJjt{J3?{SOHlifR z2~YeTK=5R!nb8GGC14LJ9^Hl{IRxUHMzJvYpRtQ{X-ldG#PEas+&AjIl(d#PxV(4ao^#JV?>+&chcHA(W9zrcuzIeZN_*SKBfUBi{Yn_Ku88)CIy(5o z14=m5T;5${pO7EA36uz_sNoww%td4ohv#73M1nBfuf4Ii#Zb`Xkx?c^#Wj|EB;1+9 zTAO`3)Mn^#lUbsMOIsNead(bTs~hdEii`#-c%_#Z93Byp8u;Rfb|2RBC;KZL62xLk z1l1Nr<$n(?o+_Scw@RxHl?15^Rr)FwKC;G~!x?W|M;u9M&TQbFkgoE9M-rMS(BuHC5Cr@S`IdWv({{8!lckbMoyLt2GqP1(+3W4PDYCe1Rtni5wCoUg8 zd^mp3o;@i$cI*h>v}sfPnl)<{EnT|w&iwiF)o^M)bLI@s@#Du|A3Ju;1!zdulP6Dl zA3b`s_36{6u^TpQ2%I~2?u_Zvrx#$=eERfhCZNWNhYlU813JGKsA<;Y$B#EXfBw7@ zXvl6LI}2#LSAT#1CaeY=J$h6QsQJLUb?Yi`-MUo-)UX?9NE^rnK$rA9eE4u1&|41e z?d>P98n9;Tey{XN2VSpQwJPYrg9mF~zI>SrvKfe{1NobPhSUNBx4faDVFy+N7O&eG z?9;UO$FgP1N`Z=DHn#&cgPh-S_wLT8m6ersSPhu8Xp6aX)sCNw7caKiyLT@r z@TT9te}D6{XU__OnzwJ;woSXDqT*IjQIQl@1EN|sE8CT9`8{XOob$ktc3-`Eb3|G@tVF^4Eohg|=AJL2lbZDeI!mXYyuU{BM`P`n65=@@E$5OP&}eExPHN zKIK+vY3a;@f&veidKArFy%Sm*+j@RD6s~$7-+SV}bKc^tr1HtNDW%s+?`qkyWy}Bf z@8AF5xN+nEth|yFnVFfKgz^d4fY#Pl$?op%{~tbl_zz5?|I@PzPo$-#5v3XKf}G;o z6~NH`pOTSxA|)k-Xw4{Lkert3o0yo$PKss_1^|BXzSrUmnOy(?002ovPDHLkV1jkM BXjuRN diff --git a/packages/mindplot/assets/icons/sport_shuttlecock.png b/packages/mindplot/assets/icons/sport_shuttlecock.png deleted file mode 100644 index 917287fa0ba063e436798e7e1015745ca53bd612..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 683 zcmV;c0#yBpP)`0Ff_) z6e&KX(`h$k5oZ~J5u9y)zyE$Bk+^QPTGuQV%Y(lJAkE{v8jHo$!C9#h+Aw-No*ght z^l`{um25Vfi-I5ww8;=op`M_|ag-U@4_cbSRV2wryWPHJv)M$}FCj1rIcqYRM%n`O z`Wh7 zK2s_adXd;QTrA;c|W~1W4#eyUX=D7{S)QhURZu{wV*E*$t7xfmZ+P$ zmmY}TY|LJ*Do=`RwN9cf(bdybHtXB|IE<|AeS z=Ja%Q-prWI^L^G71JLJ zE8`y7X+TRKbJ}7QEf&P-lZHVDtk4w%9mAH2<2r{UzpN1_~X;&AtPx+O1GL)H&d;Z}BMq6_~4ugAk%x{bD~00000NkvXX Hu0mjfw(0T$ diff --git a/packages/mindplot/assets/icons/sport_tennis.png b/packages/mindplot/assets/icons/sport_tennis.png deleted file mode 100644 index e88a6efa1d04cdeb47a10bdfad46da5562c2653d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 884 zcmV-)1B?8LP)HdtBYdE!qbq|qw^eo+5Go%YI zri}HfQL{4YHLp zUYR_SM+pD;A5hEG#uyVikJyhc>OuUH*p2Haf+~YXw0D(yP z#Q*(9(Elu|vyH(=ODdkx5mLt9X6SV0s#(EJlNopd*b6`zY)?PWbNk=W%i`{rgTK z{0us}i=QdsNYlJNPjhXKpx95be1d}7@A^tuKZDZ-mxQS1ZLZ8z!(N+N zm!bN`MYp~Sa9^t*iP5CRm{p9Zgh~=Y60sr^mW*cp^&j2BPXGUM-@5B#(`4ZQ0000< KMNUMnLSTXp`kIXZ diff --git a/packages/mindplot/assets/icons/tag_blue.png b/packages/mindplot/assets/icons/tag_blue.png deleted file mode 100755 index 9757fc6ed6597438eb8e5a70a1ab2402cdebd5d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 586 zcmV-Q0=4~#P)6YY{78#rvt}vj%qrc zN=UU@y$E6COaj9&r1NAlaUpajQlL~SorN%pOwHs*2laYgHBA$?ZOd~4Rw@5yFm2?1ZIg`0V-$-;GT1Fi5dB7wUSNi^%`^Ge62m>OBeX610Nsukl}DhDG-mxT?nhyYH!4he7Ri8 zrq0Ti&UXUvqX&F@JcJAe14@BNBqAY_QZAPjF(Y3r7P9H_kB#@LgFAf>xz>Qp&n=|a z>ro1XLZK^nmO`PRh#C2OK0ktd7l6-A;O5?fz1gNnCX)yR0O@bCBUcYl8WI`Z$=pAO5+H7Btd z01!Y-V9hJyQW=?8H!%EXkpK7V=fq!MKWqQ``bGQC&mR;2|6`D6WMtWJcv4_0HUj_x zi1FOA7;}*3e}8_>XR@2I7$~L<#L__g7ljN5VHd@2N0_Ou_aI7;#vRx{&@}ztqOD(00a;dBLkDo|KGpY z0ohtW%n!90hJQoFRQ~+T@c++Wj6ehkAeKMBe!XM(_df*4J_E$cK>UBog|w-^fBt5W;E`nb@#hDF1fK*$ z5AUt(zkYmTa6&TxAb^F>|q9Y9}5ep(xo2IPaH=nhEXx+CitPTx4gz{#7v%IucNxCDd&BVS+gAn^d48~7fB<47 zHao9Qvxxfr{ZF@uim245C-3h96PQud!n2hief#ze>$zQMn;AW=x5o_|JWE7-C<<-`IiwGnEx0Y z<>kRHdh+DSt6jTxiMhGC!NUX~fIu$z{_fp7FbAaQ!ygug`8OFEcvu-3#5oxl&c9`1 z*#DG)K~YhWK}t%B0qD9{+qP|ky96MBKnA$qxpU|Hn>TMj&SZE4bo#G1|&CZ~ji1lW)bKtsMf zTFt=zXD5TPrU`?LkSfFes~Z?jTsh3};Le*~fB<4bjuIy)r=vixxB^q>cTh@H7i41a zm;cA`^wuH<0}XwKzf6A_^d(&x{xbe%u+X&vX~_l%ASU#9b#-+G8*<^oh3}x$sR1

`k!K$5e&@ O0000^5T)AZ%#@G{_P{NCN^P z(J0zvSn~SSm(Ur);-M~8^*;61*VRI`T1BN&LAhK;sZ>I-SVW;vfUfJv=ko^ugnc0x zhJodBxe>iyk3%w<%wC8holUJ4(iv>tL{`DQt zPOsyUbO_Cmc&*iHkqbm3ku`|GcC^OhF>jj9W*GkH;^g!iUVpib_h*=@udp4h(P+e*zL_~ZmJjh(y^BxULwq>9zXoYE8sq{#pN~U0C6!8vY)5N2 z9P*}mw}7X$O^qTtJef1ACWvJT9^wt-)Zh0r~j#0bT`f;-zv6 z^Tmw22!%rMcs!TaUX<-8s;X-B`+Xbo+_uWuFa z1yIPc?DTrQ7KvRhmt*TG|L=EYQ=LqFX;=Lp`4}jx6BE-@00000NkvXXu0mjf=s_29 diff --git a/packages/mindplot/assets/icons/tag_orange.png b/packages/mindplot/assets/icons/tag_orange.png deleted file mode 100755 index 454a59f30ca04916c30b5da70821b236df7dd934..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 586 zcmV-Q0=4~#P)YYm{!ci%zG5cDs#MtA%E>iAJM=dcBTXt#$=Kxm1c}S>T)> z)oeDCkaD?v5u%VY38vGjbe>Em9)x-#1qy}2S%^ZB=`y)dqgt)jH=7L{$B}&kmP#dL zv)PjngPi@y?F z?msb!MgKs27C;q`$Nl1^87)}9-#;n72%w5aqyBI>%t#yv1bin~`G3EwaPlhB@q!hxI!PKQbx4SpL{`r}VmgkO zKJ1rs_WIV^Cp$u~*F(44MZ4WbtJOlY*+iq!K)qf^tya4OAlxdU)9GNp-=EcdKIf2f zxqK5MkTVHpvl(}uPNxop&R7Z*3Wci>fg)2gxzRzjTCMB44$HFmIRQ(h60+IsMTkJI z$3`aJvdFXbdX25Rfl*oUyUApNd_Ip%CUXW6$oUxAwr!Budf7tzCgJ6?1fzU_jK^b2 zfn+jy0uk7ZrmCvEX}8;PXYF3X>c?-ad@8i>vI7~7Mw9~4Xw-oSl}hCko6%Ghg*TZa zojb2QDqe$2yuO1BheJw%P$$M1@gl$?5#tJcsvfD&-d}drYvCA3ZZKYBvF_B1^w22%tHlRHzus60N_IkZ8=MgV0M=TZ-Baw(nn|S=hBxdI) z;;R6va5(H{FKyC-4F-dY;+p`fU@++R`~4<~Jsywi;wt~|cV(__CjM~k{x92pJ|?T2 RMYR9`002ovPDHLkV1iy62OIzZ diff --git a/packages/mindplot/assets/icons/tag_purple.png b/packages/mindplot/assets/icons/tag_purple.png deleted file mode 100755 index ebaf0e8743fc33cf152cb7694b865e8d8adbfa90..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 599 zcmV-d0;v6oP)GWQRM3$+Tx>2G~D3qqtDdzLJ$P+M| z%_5OV?1V_vbzR8Cf4JqIVHo)K^%pXcv3TotyGW%{h{xkw5Q#dkEiV=ekof!9z?%~d z=g(E7!z)Oq(;*j#L?RmyiObN>-n-ERY$OQs{fC-WE z`TR3JBO8xbMN0KSbiO^m!^f-pEr_bBgH6ZV(+;jrKl87%5H3QY5S&iu(~XVt z`Q%tE#s-6d3Aucs;QCb?w-;^voEneC7ITEh5sgOWa5&8962;=`54d^#1;35CDRwv< z7ITTajw2Wh%6`9}(Iu`wF^PG8L%bJ2;q&>deAA2$Oi`4b;)4JRkH=$mxm=9IcDvoO l^OXPhyYjA9E`GA_{V$1@FaBct0}KEF002ovPDHLkV1kGx8r%Q? diff --git a/packages/mindplot/assets/icons/tag_red.png b/packages/mindplot/assets/icons/tag_red.png deleted file mode 100755 index 6ebb37d25f58c68246d8ad6a015295dfa5367870..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 592 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 LNkvXXu0mjfx*G>x diff --git a/packages/mindplot/assets/icons/task_100.png b/packages/mindplot/assets/icons/task_100.png deleted file mode 100755 index d9e7a29d6c7319aaeb80aa5091e0b48cfecf382f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3221 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 Hu0mjf(IW=h diff --git a/packages/mindplot/assets/icons/task_25.png b/packages/mindplot/assets/icons/task_25.png deleted file mode 100755 index a029e29de624a2d075e4f19683885058f7b31f4d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3300 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 diff --git a/packages/mindplot/assets/icons/task_75.png b/packages/mindplot/assets/icons/task_75.png deleted file mode 100755 index 55fcb1af9d7d6aea26e29b5242c82a1453fd3749..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3285 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 diff --git a/packages/mindplot/assets/icons/thumb_thumb_up.png b/packages/mindplot/assets/icons/thumb_thumb_up.png deleted file mode 100755 index 2bd16ccf294bd944c6bf17fa0345885469980820..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 619 zcmV-x0+juUP)EAdBAPtT3aD}=*%{NbB*ZGcS?IC*5jinhDl=TC) z^a(zA>EnR9^9j#^IEMZn^!id5#SnEtL|{9h>X0|4DCpP8H?Ix=ni&xHWU$qNT21yZ z5^*RX2qmP^fMQ*vP*nzi&BkZ)YfvhI(E`_#urPuk5&HpnzVw-Gc(=*`uwjlh!P+m)3pz5ENXE;8&W2W*v~T!vOF>0KmQeQ*+S#{tWRxh00jSgfv7 zu5dK}P{{s0ADkp>$Chu@w&3}~KY;h%H7W`eKSHGuEoyT++I zn$b9r%cFfhHe2K68PkBu*@^<$y+7xQ$wJ~;c5aBx$R=xq*41Wo zhwQus_VOgm0hughj}MhOvs#{>Vg09Y8WxjWUJY5YW zJ?&8eG!59Cz=|E%Ns@013KLWOLV)CObIIj_5{>{#k%TEAMs_GbdDV`x-iYsGH z#=Z{USAQA>NY(}X7=3{K8#Hs{AQG2a)rMyf zFQK~pm1x3+7!nu%-M`k}``c>^00{o_1pjWJUTfl8mg=3qGEl8H@}^@w`VUx0_$uy4 z2FhRqKX}xI*?Tv1DJd8z#F#0c%*~rM30HE1@2o5m~}ZyoWhqv>ql{V z1ZGE0lgcoK^lx+eqc*rAX1Ky;Xx3U%u#zG!m-;eD1Qsn@kf3|F9qz~|95=&g3(7!X zB}JAT>RU;a%vaNOGnJ%e1=K6eAh43c(QN8RQ6~GP%O}Jju$~Ld*%`mO1pk}@P)Ff}Nlc zJ+V-1gdjvrBToYb_&=5JJoz%#Q=n#p0PUsg;0_wW6hzWF z6d(Z#0TH%uy+T9>YJjQ_4o41w#S|V(NC8qn46yPY0ExQO163;l8LV%BTT)_{lxVdB zLqhH!O}vfXt+G~AtirG?JdRPE!p4;(u<%+06sOr5$!l?%`w$ZJisblGeq3lk?M znK(IF&Lv~|%q&@!^#Q8MB|waLDd+L)A8Bgth=QmR)CiKix0+Qk`lsOTj2++4X|3MA z_x{3e%gn9zko@i4h1Ih`tu0ZJsAx1qji_-~z~`EB*FHYdKr%;k=xO&(k^EfNlSiKZ>5l+xr|%SFOV@6-ysFmD2F5 ze93OiS+LaQym;|2f6tbH%~V`D+ND?vc>4J^KSLxEMifJQ`8>*~y^+pGr&o-n=LJ zGWB(yB#;DR8&Lhqi{0(#wc#SwSB~jZKzIFx`8od>2Fo-Pfe7*M8^q#qw2yTxiXzd~ zRaz|F*rr78G`JZXG*YX~5K@5k>G@0HdlBo-6v1jHye?%qRwO@+-hO7J^4LlPG>@A1#{ zQFl4x7tnG)+cz_2Mq_f*H!U)kgg{iHqxT)Yr3ec@K!`)z_%h1c0Y2Eu(dMPkrhq5v zY+bKWfx|sTiOEB71HuwS*CDzA%ReBv4*7Zy7RM0n6`5#chfOJK`ze)Y6>d6Z?UmyNHH!3DdsP-ARyDo}1HO+>7_um7 zx_gj{+_aU_OUH_~Jd?KI#ICZujD`of2mDpCv_zFGE%6}tfL|j!WGu_i-u>4%{%d{$ X7`zMSfT21V00000NkvXXu0mjfkBx0` diff --git a/packages/mindplot/assets/icons/time_hourglass.png b/packages/mindplot/assets/icons/time_hourglass.png deleted file mode 100755 index 57b03ce7a61aa3b47d20235987a1c1918c5cb535..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 744 zcmVP)9Rl#FaScf1rbdiwsJlF($-D2a$MB1QH?*P$(@5T4@;&OA53{ z62x9;g=MzM@3B}Z6q2JnuH-? zUBh=^5nso`tIMpW;}SD*?>znX))|eYdi7(c&C5YW8_t?tIU z>Ny7&^Pebhjth`srpO|asbD=?gpU+WKXx%hg}DA%|J1=w1E3bQW2brAk)glQS%iL- z`SP4IjX^57**EKJK0N;yU_Z*GguxzUVD)Dq(FOHK%^eAtSc;pSVFoq==$r8wjtx+n z;uq8_iQsA|i!@V3bf!VptWTH>59QQ$XGs&d#Zun48g&^nWN z^4`U@k2?PS6UX#XYTlj3cBYJ6iA9-|t1JhG+#TUO+}j1X$SI>}h@{JnYgEm?zE!PH_n1WWbi67KiySvhR`0&B~Ua$As-0XZM0E7_ly>wyh)z_!5)s8xc>>X^g zzrRaamN>#8O%rzac8TH+(^qHo$jIm`Qpy_u&f?O-sONbHvIrq?9EY8q zZ8}kmk_uB8vMgm{e6l8lcta?qCeNK6kx7yeM;$6#VXY;s2lVy#<2Vij11Hg1lI0oJ zTDEt#7(P4fD5a)ERaF;tO%q2EX_`R=p64T6mpJNRZAB2&>82@Le{Zq3w?m`ZAP54A zq8O9bT7=`EY8qna-_W`#WvyUv@CCH4A%vi>uMg?E;5hX1oXT1ND}@mE(=3}hH86-) ziYSTc935dTgkcDPwU$<^1wc_02qEa@JzUrQSrkR_ZM(hM^F1G3(=@`6)2CnLWPd-# z7^GCsTIYE_Lbx;=EjHVa3uDZ>0B&#G`^LDg#P5z02!XPB9H~H$$m(i~e ze)%5w_p j)AbKkRecBCK92K0k|1G{aY4T400000NkvXXu0mjf5y8v5 diff --git a/packages/mindplot/assets/icons/weather_clear.png b/packages/mindplot/assets/icons/weather_clear.png deleted file mode 100644 index 7dc15ea96efad0905b544473015fc80b7fe7b4f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 682 zcmV;b0#*HqP)W! z3fe_~f&YQDYv&?Y5flVLjk<|wlX-0z3ufq(Vbc5^nq2rNXI-1yenaLfYLBs4~uT(Wh49B7U*xz_+u1=$qv z#gBA8SHroS)t|T}=?H7zVP)z=>1pR}i_}fvD$u&?1ps~|en?~6bxZe}9X<=GS_lQS z^p52HV{Cm+h>@sg^hz1yDhbrk{?gLd%#L1yR1NrXR2oBd;5xcVT(!w3&nhvlLIdaO zoBHg~8PE!tZ6+S`pOL0!qP-_P?`WgfkFYag0u!<5)MQt z;R23XKNR=>7Evr>Y_OJxWEq7?PyqdeumH&-ge3@N*;I{jaHoyN{$p>f{lHq)$ diff --git a/packages/mindplot/assets/icons/weather_few-clouds-night.png b/packages/mindplot/assets/icons/weather_few-clouds-night.png deleted file mode 100644 index d69efec9810eebca203e673210cfbe7c806205c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 965 zcmV;$13LVPP)*zW3hu?P5X+UG%`= z**xd)@NkaBf3Ul^GwZtUr>^VXNs?p^!1w)UX`23=B*}x#jjb1N?^|yPZO3uG%;$q| zR+d+Wu3fus1^GPM7?e~T9Ut=W(N7}FvagdQ+1uRM(*GLl?(Nu~=lwD>Gkf!HV|^&g zGNcm3BEoZhk|d>6DiH()9zOa}J$?G;W2MyX&5bQ>1K76x#r$0Ty|u>rP^WvzdArHQ z#Ti+aVc8Z!^f^Co5%#(?R`2>VGqdlyuKN{$wY#@7o6F@M-~a6MVzbpmN=dIDB89~F zeJZ1)7_CW@lzbr|$OjY)CBA#`ZQSqo7H#0;#_C$GAN5JIg!bhHA{Jy?W7{^CWzlT4 z=!QK!*CR<2gos&LUdh?E{fX^)-uu(jH{5=|PcID7Mx(W+SST<&GJ<7Ul*?D~eHW<& z#u!>>O{S-BSf1zIakbWqzVFiuL*iI~9=!J8;DC#E8{4)S8yjP4YLY05DHQXR%cBJO zfHY0(t}%vg=QU6Mc*5!FDZ|6Vbi*#ow^yiEYe*?LIXPi}f1h%>LaWuJR;$riT?a7E zhaau4w=dh*>+=gNEiGfTVX^)WP{8OxbfuC=rMNmW zf&q*+B#ENkZsWK%_4x%H$GK+%2qB2$7~l6%Y9Ll`u889p5y!+LMo58W4eH}K&R{my zK1iY{TDx+k==7rqAp~I96?E0qg}CrRd~Fo!#>c{qO2M5w{{dH`J8|d2 zXctvnXjBxX3KkT__p8AsZIiaQ_a@%C$Az{8O9#$khVy-VXMQuHsw}i@HoYE*hcdaL zg?hpZssV&PghpUN1DQ==v*~R>A(Y8|`nMMhd0-I%Eul;<_;SQ*OXp8cQTJMhsC zr0;5c<3qD*=Sfv<#Ty6b`>=nr_o9S#H*gT>oRvl>%7kH$AYk&Z(m%eF&g3D^8%)!VK}NtqlD|g{|X|god9)E^}yy~ zX@CZ75kubIN?%2}76!^FC4?&87-~ykzk&v!(_jk_Oh8ZutpEb(B7{bicr8Yup>0UI z4t8s-!sJArSk&e12bUMGqlAo4cl#ICxj)`qe&4(2Z2yJN^C0MMY1J{ zGvnYm(@aiI(V9#G@ZjNnzf>yq)KW-cb=ULp^*<9WNqlQ*ZfeH!JUrK>uC9*dZEbj- zM{%r3ba53L~DEd3S!Y1)oKOTb8$VF`ue5#zK>V&07#`$h{*mq zgHR^-EOGeGHw|=XWMqVLxkRa4#&H~~)e2+90#nn|_`Z*-QmIw|p3eJ?zV%N%dYroy ti9~h;)&>eHB3g4-MnsIYcFDjRSg-&9002ovPDHLkV1g<{Unl?o diff --git a/packages/mindplot/assets/icons/weather_overcast.png b/packages/mindplot/assets/icons/weather_overcast.png deleted file mode 100644 index 0045129b8759981e0bf80204eb6c319cae56f36e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 975 zcmV;=12FuFP)g1W^UEh6hyU%Pk3T>ug;I(riU4S6Xh3UC6h*xA_Pcl8JO2fxlo(?a@SK$L zJs@q2c^~-v*wL~2#c#gG7<1Pn`48;6F4=63J9k!J@7ew6xzT)~BbUuJg;98R&uP{_N0W{d*ggQi-;!ed@HJUFp zCX%VlA1lkfFTL=}`ROZ{dE($O0_bsFcW--JJ55c^3=Rw;r6ST1LQ1+ix6{|xkJg&4 zTebl4z}d5Bx(^H=KnQ`7Ql36mIPL%&5v?JNLTa@dD=W*)&K1$x@L(oGQ*$%f>`rI? z+WeVJ=Am)dby3#Z!yO&l@H`J~3`$D;z-NAb4!5y^QzxIn_v>7qo?>xvksaH2V2v3~ zCX#5ak)wrte>#=wHr6^fZ(e8emq})>{z|#L##6^n0id-eolY}7Jw>UsgyT5g_di^^ zAcVLrM-CsFTwJ=9nVm0YS8uP1v9S~M_4XsBOKa=>M3H8_woVZEq>?F)j2K zsaHyQUI90(wd2;@qGk=Pu=&CQquWA7oDA5gh99&lYuY{y9L0m zT|Kz2d-~|;m=gn13LM8Fj6!_hM=3=ZhEysQysC#+t+F%M?MNvc|iUNPeVl8S%NC5Qq_4qVR8&OKVDy8_R zqdo4d{p3>_j=w}#>!~>J^Wt zQRsRWPrZlobb>msmjg~GLMa-f&r|o^41qupUC-ihID}H_OmAP0O^ZasZ-kGBUTg4p zM4?zj%+7JlaR|%(`?xP(#(MH3&#qpj=y32?<{AImD@do)Tdf?7 zM6mdLR8>_`Sy_p-xfx3!fUEK_)wl1Ube-f{GN+V!PXgm>$>dw>AAGdc*w#jNc9vt8 zwmsev0B{WsQeIr-XfR0ri|MV+Cr{o6K9jLnORjq=aji)+Ylnrv7K>r=`2cV_oz&FS z0B|rG#dhixPLrAA=}oPBD)HrfrZsN@kU|W5J337I&6@;o+}Mrj=;-L4*t!M>`K7ay zI=^3AO{a&Y6#Zfho;%Xiv>1v+EGCPE#<8*8h4%J#0OscAc4w;>E|6JTV)^02d^VM8 zHc5Ej9S)mw^Yi!;i9HuXq0s(c!#Oa()6=JMxm@PeRO&-94(Zsrb4M!b>$e%D5=ODO zT|52$Sw2rDoo0Du<#Lkb3f1N=V}BnVP)1<>VM*AxcRx z(VuMX?d_$eX~HlJn5KbDCL{jHW^+=?Fd^h?A;gKP$n0KgbMGmuIh(lm|CFU;?X z#bV&L4ZB(e=N#PPsP{L}fz&`-B%)z{VSe!H)t?#wJf#e!2Lqlbo`^)E#57GrBOM5Z zLNHAeuHzsW45Gcg9Xs-y*x9-hx~@Z2RU(8)4W$PI6u@v#S2qtVi8T@Fa_|8!WerwkxWv6pm|3#48yovU~`l!CD^+b2QmUR7b zf55Nk`u^jAfl#ql#cpg?)R&9&(*AxJstgNo$@3ot+ zdxGwAJc4c10RYs5f*K+bmQc!qahAmgV`fe?a;Y0|_Poe@HQ zu{8PO$$dj-9u9>XzC3bxf8fTJ%VwvqZ2tJsa7(RPL*lt}jf~Ong^<$<08C7i7-Q_4 zkQ#_q%I0>)=t-qc`QZ4`lv*DQA`~oOj*?rtt|N8q{BFkRg^(KDQz;u7Jv&1Wht-Cq z(R8xofxaFEfNx_X2PsK#Wuq(~+S`QL%fD8gn)_Dj*!f38e&6zFI=T12f&1#D#5SrZ z?7ib71OCof8@oT!2tvvF+S*Ncu6X+6soBC~qZ8iZZ|k3Z`s%?+MN!@z8%?RvXq&RX zGYm>eo(d^_%YSW(2V>ju-Nm1)uH(KrcWDmKKjK~UGEJNee&%%WArNmgeAy_BMIjv{10bmXcuGjTLQFzkaN%WJ4gQkJ$RtD`c_(b P00000NkvXXu0mjf0;%3A diff --git a/packages/mindplot/assets/icons/weather_showers.png b/packages/mindplot/assets/icons/weather_showers.png deleted file mode 100644 index d9685d242bbb306a574adac8a08afd61f9e304c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 959 zcmV;w13>(VP)cUm61$ChtEe1qEV#S@HNLM22!n#rj6)U(iSeJqesTGZa9mh6in#sR;?8;|%8reV z3ui5H9HT>x2_ur7rkFf1nVp%QZjn-qSF6>#eqH=+UK~GhtQDxg_`=E7I5wCl;?|)d zu3uM5k;~<%c{K+6_Y!RRtW>XZ{`|Ko&?AATM@L69;Bd~-o$J9Evs?ZB16XSj2&$_q zY}PjMeV@KPc>z3^QA*7nIdnt{A;{3JU|h9paNyk8x!^q`a!ReNPAD!`+luHA@>24^Is6=bEOxs+s@#XB~L; zSIQghu>??3zVXb_iA>$>5QI&l#t!4d-2`EiAZ#*}Z(}RE*8jD(O)Usx;H;E_%(+sb zx2H4n{6qKNrj~04KTOy+(1nr$KTOy*O{VVb<;q5gA13^;STWAocV7GI)g803fs{hL z{L~}+Rn$lcbb>ZJOcZ+XbwZ#M`m(LmO_M+;R5vv%>p|)q9}f)nzhwNyOA zY7moJhe=W@p5gL(NVctoif33_tMkqGmm=W3&wlwJY>(q>LEe9Iej!cmQT_)Zgm%u& h&YpSp)7?aXzX5{#t|NXs>Qev!002ovPDHLkV1g@wy}|$h diff --git a/packages/mindplot/assets/icons/weather_snow.png b/packages/mindplot/assets/icons/weather_snow.png deleted file mode 100644 index a83d855981fb90633803a74257679c3a3ff24019..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 998 zcmVSGm{OG{Sx72v zB+Z`+;-ae*r6>wTr6?g_T?RrHTBsC3id0JxqSZ}os!%~tn+esHCYi)$)X}sgOp-}5 z^XA?AX5L&EsX|K+oXy8MhwuB~2=2qk=rF)8Ddibs%(DPOh#!L>I1Z$T2H(3!FYYs1 zKx4=bUEkmNTqIuKAhcGb)9K*auT%LT2wH(VK>5EQ>#n&;O8J!#A}6K%sk3u`q`CQV zA*IB!EaG)_vSoKmL`sWz+o{mIvfVFuO55dR@y@=O)M6}QwpU#KoALs+01QH zQyrz?xvZ>Yn7DkY1k_l-%dM?@r7>kp*-#a(Li-wDZ?UGjdh1qUkI&JlH7qIF^W+{Wr5v;Yv{D#j zh(;eFpU+V&74h$Gar@39+qOAutgo|>x z9_6sgn#wYA&n?dfNIE3B-PI%xxE|4je!!SeD_g{M5qU)t7qQI$_vmO$)#?L5_06@2!7KmV+Hq?Yp3Mk=}S!#TI7 zyU&@pe91j}?5*%$8JE;jp0V#|xV@a^ov%;eWinWn5FF`hp`Zh751r|S7bf!levEJ(*xV*KQ;#HckI9dY#{_sG{#t5^8n!kMb8h|dvIWA zZgF$y>0MD4*F4h8IlxpJgZcdCN92{-YGcP67YKp}fBv4@3V|_(;0n34g U;~0);{{R3007*qoM6N<$g0%zDegFUf diff --git a/packages/mindplot/assets/icons/weather_storm.png b/packages/mindplot/assets/icons/weather_storm.png deleted file mode 100644 index feebe1d4e2aebc95b8cd5bea560e1173a0476e2d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1031 zcmV+i1o-=jP)Fci}P@+&ML}xC~e#r&~57z;(jt?IfR@H)( z5|Ql@+-hfFXb6Q+DizTZX+>qDjO*7|aqirh51^g{c&#%D!Y$?I)A|Bs)4fl6;A|AYijj9Xl zCJX>va1c?L6Va*j7tVW?jSBu;TtKBct;Wj8d@8L@|KvE`x!gJL3)P&L?8XuNI4@QoSNeh z(Z@t|k|&eh#{P7ANcq@lNtqgYc;(n*Z57fy*kUE`vpq+lM;=fC?wy%h^%9npshaJy z^`!R=O_+NP4FF6}BAwn>aDBIsYW>~@kP*ckBXRY#VypwpW8?R2(O&FLr>kLr}tbgPhVPbG<`Xd%i7~O$TegkD{+B3nHMU zxfvXQ#u&q{Xc)_eyzN%g_!GN`i35yqbfRPQ4{1nTD{S7p0PyLhcVXK0KQi^a^f`QA z-J$3&Prjc5Q+xM+H+=fGwv2&@@bU-G{`(66{sw*~w9TjbR<8g6002ovPDHLkV1fjV B(ux28 diff --git a/packages/mindplot/assets/images/links.png b/packages/mindplot/assets/images/links.png deleted file mode 100644 index dd3b830f4d60e143d90897e23518c250433e85bb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2631 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 diff --git a/packages/mindplot/assets/images/notes.png b/packages/mindplot/assets/images/notes.png deleted file mode 100644 index bf438b1d5a61ef39032796fd5dde53201dce4aec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2240 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 F@DENm_hSG6 diff --git a/packages/mindplot/assets/images/shape-circle.png b/packages/mindplot/assets/images/shape-circle.png deleted file mode 100644 index cae3eead66ad75eca6dda69e1ccfb723d453a84d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2416 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 iQuq_5T74&z6k< diff --git a/packages/mindplot/cypress/snapshots/playground.test.js/container.snap.png b/packages/mindplot/cypress/snapshots/playground.test.js/container.snap.png deleted file mode 100644 index ca5ce98e23f5229bf929a97ff0893a45241d2484..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 195797 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 ja} zLw2^wkfGH9Y#qL+o(k;AnUZXJuj>bRoIjj1d`ZdT#U~Nu6o_h6F0+B6MMpOv`8kay z)!k~nmzq}GvT-93_iB7m+AVzi7oYs2k3ABNW$^O*|9ML@p7v|0_e8)a@A&Fck2fjf zD_#-o(UkJhy*Ty1{Erj=^v+39(F$0f(Kk(QH7erqD_^efuZ(7m>dxBv6L|mWCD)7K zWFqOP%EnR67OeU3LtOyPIo(mvIa|DFw!Q~j@hZDSg6xk-P&J9cS|zX9%^;FG7{w(1xhM-&wh zae-=gt=jEWD?m{-bwGj~B1rw5sg|@CE#*?~0C_e~@E@+l5&Cf-TR(`G^jS95=^zb8gm zkozE|jhmGNFtZVqaFhm}Kbp6)8`vvE6xy=vs;D~r`Df9~N~mYSlv5{yg(-C%f4@EY z=u8TtXDdUC{onI3AqcgeYi!XIfn4~g|0zhQxM#`9N8RGjuHz=D4)?R_v?f2+47@t? z$EuWReOB(iLi>Ihg|$PVx>eFzY_Rjo^pCE?fu$p^xSWtn6CPzRSI9!`?ME+s{+VN) z^?4fqu6H0f+g+9&-?PfZ3t`qtJ;Mf1CCE!+3$UQ$uP2hH#YomsrcC3@nQ*PXq5HT0 z-F@rSvhspSBqHU7aaHP~N25qc|5Keh+rIha<&6Fy?X`oHjd^gNB~_bGpr`;DCXpqZ zOA}8_w9D?;xNo=PuIm2X?-9iC5u%^I3eSyou;lvFrnVZj@gkP^h|VJY_^*GRZW>4v ziowBSxYZDGemi12(NENQ?%0NfW6M%a7$%k87(pVyWw-BcRf0J%UcGU{@>4U$bW<9- z0nGym2t?V(HI4j<8t;GV9tJ-^26D2VL%m(snJU$1@Er2WhvZ;7h|nah<<#4o6PD;J z*^)6Q$KnKc!8bjwI;8hi&wC#p?fu8>%2GF1MF2WXs(V`MA)&!Q&qa@#7NgNUCiMXw z9<{NV;mNE2Ntk+w%ITUfNHa5GB=WdBf49Wb6Zap^NO8vN|aLv%gRgy+&Sy%Nzs5svd7BTw5}p%R)d<7x90v6-kX1qX6`)^ytA9EQFzhN(41HE_S_8#67Lx9&N-YRjK}(0%9WTu!Adi^@P~$sxk~VrW4H>5c?J zcigJ?FcN=w2^@&tySmxeB#9Bf^c_^I`;*?+ri+{aPyO|;PYQsA0+uW>>5WiGw=SjP zJL$zZwTxSA{!&xj+;ah2p-M~{UPuuN z#O~Sr_1BfT6pA9Y>t}qx(|wca%nGC613>$++7w0hWkpDo85?Qmdg3kB`J!P>$^s$& zo%Gp$&^KRwHdhXp@;Jtisx+WuC!Kf)l&*efrG}Yx^kbGTX_doL@a(50j|!HhL0bjM z_ENH{po4;JrER~^@n-5F2)zGw6$kPbP94rQZKS-Vl&4|)WAs!Re51w@#WlWtsHe#k- zVYJ-#%Np)C@iJLHhk%mw^%#-4lrSMeyKYz>X5}OG(Dp@PNyN#GJJ+i$tSR|RxAxdu zyMEI(V3&TUtWH>{?>`= z&fq=^UNSiq=iKc@K;mxhr1sXGo$K9PDOrmu^I3L^BkGZJnv@kg1?JbzOIo-gDyU;ewj{uiO(LREsVhUVFkzsdVD-AA(>Tcm|kS5nwNOGaTXJI#*s5( zY6^rCQICR%c)Glazv%w$yB`>!btc_Bx*9sB2%d#t$)Mj1oE1%yKI)~2*#Ex$Yk$Q} zhWeU!a{6w(71c>Pq{W86Cj-_H7G<^=cj+F!H=yV;^`z0#lMFT$)bw?X9sFZ(Is`YC zbt$OC?A3591Z4$?)dWM zDEFOmWt5?E-dol``yPcx^CK-R5RkxfG2(_neq>((_coHK zu2{8d3Q0AQ`8C=*Alx;LaZkdD$& zzjM9GG}bvD;mTXq91K#PW?LAtxaRp`PY$8j4rUG7K``iE{Saj;PF6)QLDZ=aRwY?I79T69W0g$4egg zD(3eTE|Ag8R}7<%dWvd|kp1w6h34q3g-EsCxMFf%u&{=c4&j|z^D|7%%0AthshLH|b|&9KU}@iGh%gVl10z4CF=!&T_qa3WAMZ15Bi%ve+TAmy1s zjzEzKo<~rd0PJCG|L*hdvCB_|{8LY$wah2)Dd4H7V1Gn1=xx^g_S4Z4;FT|eQY_mJ zI(?Pa({QmawTt2-~fJv)V1<$+hGm@nL0_{=-Z&j`e<>JT6w;27_1Bxaw6A5p@DJFz6nw{gFSxkXUroT;1nT)x}_BLxD!T|3#>v)=~bPbnO>I6Pa|?a z{kI3uvDF{8SY-1biuH)VJfL1m?W-nslXb6*l{UkYw?FxE`2sN7<2wJaz8^kx%KK~^ z4~yf7&AbTjU&l3@CF(h9->Cy22^r+|4AH!@N2KnZ&iXtfN%666Og$w?$CQ9Y&U44& z0@M8gK=ZGkzLBqGLknX6^UfSchH8W$s465hzzV;I zt0MQ=!#7o&t3QfYfw2!D*SMF6YOA^tOzX}~4Fr~AS{AQ#gwkP(Dv!e{9={mG6aw+p zH6MLs3YOjyD4_4I{>7)u`axcelASSn!5I%o1;w5^H}P;nFelywKm796G^&VfWHqaL z0!o81s=Gs^A3~GF!$jo<_6(m(57L)O#m1Snb`<=4uU|xq9ykxR74xa|4`qZfg|Ii0 z$=Jk?>ZI>;oS_}oG`k+1Vbzo$Zc>9IC6e9x9bM5G-+gh>mA8HNd+RsiWuNq8tS?qI z`bk1~o>*#sMA=1#zfkNSa?n9N^oE_i``^!ry^;a1quBLw-XP%$wtPXbgPb2cISB6D zwr3z%r02Z22V`a3cMsJKp26jHqN+`szRl&360<)BYpth$;oJE#_U#?rY*M#>P!xb@Vuj*o`I^f(G zud4`wblzbAS_jYMr(JdROcPpiy^4EU?V<*R4itfBH`O~pf%Nq?qnAY;`@7%$vhC@& zele;27%1<3=ptfnj!^&AR?F3zvOBl#n^xEVc$sA`_G;7Ckp{HbGx3S1z}>fDA*N!= zbti4E6EGB*{5>c-3tv>t;l5kllv$D-ZoBAj%eXEn7pjmAIfO*{tD+wL6QN-hQ zI&T+W(zb2oT9C!4JOFGuj*m?BsRrEQxJl@0I($vzJ z2<7&Xnwwk>j7VB`#qU`QUIQDb1naq6Q(5n2?LKM@hI?IKh;KgEGG^1pGiam=Y5et! zo^Ik)H~Ffa-!vocnBv6Nu4Ku@Jh9#E*46x4ew7rkx#>;q0C$yy(eD5Ltu0S}!k~q^ zFEzaev$Xl5|8WV!@N7#9XSZ%X;M}9$dFP#*sfR`_F^W?Q{7zi$GgTm`%@`UrNJgkZ zfXqmCKcwk!6Yq!q3RsO)H08f5Q!J@ic_< zCHb}-i)2>pTs;@eq17Ng>0ZK8@K|2N#AocTqT}k2%ehY^D@9mW=-8!;-&tsM$hk)i z9Uh_gsOCwY@f)+z17i==kEqjA{h($Z|1ouEEu>t1lA)1iPxi%!Z1_;wvb5S0Z#D4g zehmg=!w9=wmZWYUrhG7tAPm@x!p!;?blO@ECYH@%@30@ zlTYdCKd%{~3%Ou9tl-jWhd;FaAQQNtEJZ&(Wbyi~knrA8^hQ0=OT6$x9#7*7=dMX6sW3pg8jeXhga**ia@%dUb=&_xePxHr z$jb=kg}MSq&Vl1vG?sI#RN*2DLvoK`l^hZbUAxK38>w&o@34r1xX2BE_0@x_>`J&9 zF*LuVS+ht4FW~`@(t5`cKk;Gp1sv!pLDK6m@om4uNMj2`@2fwdXxBXt$D2IJmu$Z1 ziw*BRVI;F=xm~w3xn=lN148nO-nI$uxo0ooqIbN9x?JMHkRmjd5jKFp?IwGAOnCak zu1BjLA$1+bMBA}r$JZ0LOgpeiPJ1BR$WB%+(>^CIYrh9PH8GxvBE!f9#F#E^>AUZq zc>UjgD}JUe&JjXMqvl9&p(A#}jVq_@6HiR`Uql*RaIDj`|1R4lFrYXou+Zu8l__IG=Xy=aTzDHr@L-ul`M$ zJHEKUBPO;lqZAc9D&*D(-zuf=yH3wV@4VB9eG1v36kWSf{bsV>q{C}~t<_IGHFKY2 zX9dc#%<}7j<4VA*CbCp{qt?uwbEq+s4~+L=QJ!PV2_qHqwi+Dz&3%k8CQ zAP}C~)Ci)f#hq6Gjsfr%lZJ(YX6fHBA38bbBIrMu$<$pKoF(GAFCAsLZ z;VD7b2glJv0OeA`$7-cj9GfV{7)`N#GKGQx0~)4TcmDj?ut-oh4^EA@yDfD^<9MIw z@gQ1T!~6FcO~e`w?bw@LX!^=3^qU<|%Xq1Z<+IjwidLQLq7@w7ldgi1q{i{Z@jCOQ8GbsG*^1z-CUQ%?R@O-SnV3bHWV{tMR`|on`>X>GEuF3=9+KY0 zG;mP-xXc12-U?wpYE%jRkxzE}<_{iep$vJ{bqgyf_O*r4G92g!37ZJ7-i??Pz!jiq z@%pIllI6Snb|3sTZOoU*?cG-9PO8dAcUgZSx^1Kns-Q_q7Z*LvosdicvffesHr3hl zomA>mbMt;KS&CrD)$Hi`Xj))=qD`k7f%!{U?~4eacq2N90MG5yvHpR71YaNMOR9nm zCaxC}j6A5e&0VXWwwCWSZXi|Vqk!~60$|O+x&uwyeq6xZ()m`3{6IvmFkORWNDBea z%8`fxb-A6niUpPKLbTRU_Fx{G-l6-?Jt|#!`Tra4`&9k^dEMeYb{?8GG5R^sTj$EI z9Oa!x*d99@|LcEze?qOTP=EIa_>&%24Jy5RdFBth-S`Sc?!*Is_(zv?+WnjP!>vnZ z|4`fAY#8MD<6rML@t4#hX%VQoanfFR%t}&^AQfp^NC&;LH#Gsg!N~iwGq#Ybxg+bX zXiyd$sqnSWO6m%m)@oD?uyxL0Pg-i`*xnap7V(R7_wE+Q)!(|{2fsNel30%~MbT%Z z7HozalTS>%#M`9(Ts*pM6TvRJm^l0v)Gt$8lV$outeZ23FS+o_E9dihyZOU{`dgc% zSvqd9@t4}2kTz}9)W0Z zJTZiAIpzf>WDD_Sja=E6z=feqLtt<&N5 zgD+VAnldw)X+Ru-UnoM3Uv%-s)9htKP1yy&NEHr9rD#tT+>p z4F*Z4)cSSn%tC%3-M6EfmpbXX;(-+YPGTt4TxmM=&??-mGU`fLnkUvpk96JdV4p1 zw_eM&ROv~zs9RDrS5LFSygYqG$$picy6B}rde#vGL8`psVV-h@*;VZpWR zY_YB&vghG?ZY?BpYz_evj1VCdz8uWbUJ6{_b^;&VsB}k;?5l*$@V9f%oi=&$&*Pc~ z+FlJ}pp0MaP)jkzrK)SH5&0x7&ngNq>`>IQX@_y5Th%;%Oy`{KHcfwTkQSsg)S8hh z7vBwnkQ5=`qp7;F4oy3bGPmN-=9%StyC;Hw+QU|4i?%cD_ z{sk>&B~|onv)Q$Tm(MJL-qDcMYC>i%De2;KZ{GfyCqU-6pr)O@cmaYyu89K8r zDc>NykG||ddP$G+6~!dHD@S=tHWI4t*G53pQgC8&}=7X%h;UO1*lY_2v*+9aHkR z{`~s}XMD4+qH{8*y`0C=(EX=@uO%w8fipP_HSCJID@Id*&r2`8)QrMj?~c>Kul+R& zW^m>`w7;wr8_Q6oDsfnkPPKfU`>M)lDur^n8EX)-vExlQeKbso6{k(77*)$33=9vW z<*AqLw41(zYRz?vIT6G4nZY%BSdeza z^i8acwjFwxA!fsnQBLCk`c}E`Z0qg`+PJkmtWYK+X{(>rVXjj|14x>a9n2`#B2NwA zZsRDEv-GP}SsjFb_>xY#!P|ZI6IWFU$+CuYtR{FlS+IJ6bmU=gV0RF1dCvULFBW*I zyJBs*%MopMlOy}hhRy^V$FQperC`y8f=Ef!ez{AwC**8#;#bu3(~7&_{$R9V6T~`)LCK=t$Y{z2!2vzu+p^^}!HE93+Kg63gpylh>sZ%ScdjJ>-j`DHbfj}5o z*Z0qShE@YlcW`=xji<}HPD9M67*=W@jH1nB zVsYIKH_U8zGKzbYysGE108c9+?iq^eE|-`Y3rguUuJmw1n<9f%Hw`iQwQ$-WhGb!p zpl+Cf0JJ$NYp-4+$m>vE*cj{%vlu#C5+8CAzJj|G)&Vs9^9 z1jzJH1KQ#-i^+8L0gjE*LV&(veV5a~Yh9;$gH4C8Zv+Revm1IX6lU`zQ4WU>IQPE( z(_7VMdfiJa-x#rDT_c?`G2O5<&pm4Dqfm!-Cs#b-iMImu=G&GZ%c~*2M#5j#dLi^O zK%SR!tl!y9W_N){&k;GL4==)_wl;AuLNlTT)wei{lnqd6DZLVqYt_B|7hX55(Z3MI z=BJ)^+9D-L@L;`B_CuElH!C4yR|la^0o~t8-pLl z9Vk50j19LkyUmghjJ%f7l+w%tEEIr+r1f)DuY(`h^}9t7?Np#CX?=do>qwtx*K>5_ zAwRj%JTYS6pg}|zbz1Rhh_lZ3PwB|DU9XSv`PQxF@OlT4NlRmL(~u)1Ud}FHX|%GcdOUWI5$TV^+Qmb>`_3KP zD?6+rd?Bl7$vy;1v7=TIC@3@U%xnS#0HP$=0$x-buz%&smAf5BpDpKVZTcXQ z*<^tE!o$e%D6=?L_svZ8rAHrsd;m>4YkQp1m+au52&`0q@1exM+i|c3aVy)Vom#JJ zsta4|859Wh{UuV6oFuVVS=m}bSOd{;B%FRN4MM%$aeaK@mKq0B z@c}&2n2R6#HQ;J{=^%tsk;YPdY!4A@w3;z89&oOl==MAA2ptcmPG^pzIa{Rm zqr2?XXVXqKMEZsfmQDHnR#lX30%zX=17?Ts$U1k5#yODMV+Ioe@|M=s4%^vVb<;G~060#j z4z20RBZ<*a?E}Q4PMW@9RQb>&;M>k0Sl+qF%3N3*lZ?*aXTAc|-Jr?E0U9mL7RSZ# zCd$zGMfjAswW#*-8+s{A250xxnX&>GN(V>&86>OU4+wDi4R6+iZ12qs{4%{-+U6{fx5jMpf<&b zXPI`tqx&ySgG-=~T`Ohl9T!#D{^C#IViA(0l@zXny{v{~A%i>*-x>1@d~eOovnm2D z+47x-bW6XpG8jA)zNhX{{W5g=tU7hL2=SV|2V!rlNugRAbzl9o(>4#5SQBuS66=NS z*F))AVzU<<`y(8!m!zXs(pMd5>4H`L0M*p{$w+P!PsoG72$@QlDp^jD}RH|Y2HmCy}2s9H67)HbtHrl4(ZrXEx` zMoi+-m$C6GS-flHhEaS7KW>n{`?YNHNodA*>d+y5!E`_An?(2fyEQ}moG}G=R2gLx zr4xbwE4+5(A@thUKogr!pE>gy^pvkNtsyhe@Rntu$lV%a5~BExWTCL|Ea6G(No!w_ zMyH1Sj3D}HMWu%-Gv&x=BCvzO(zZ; z9)j^(JoKvD?^*)YqKn&&eNDV!Hxjt@6s&MOx3d~B_WRXp%&gHF2#?<9dz`RG*&%g{ zZ%8K(eN7Y=E7q*ZSfbq_DahhsjrLx7KtMq4#^(X)@^Lb+?>}Mhm5-IbO}MJ@BY5%1 zpMol(bI7b8gdto+~lI<3@-bw53-Z+??V5pE!sI_V0DoJ@e!?_-OaDT_`wiDtW8r#Yjr2^c` zu>tAyPExo))7OuFR8WgGm9xSME}_L`L3v|0oXF8Pz4wDJ*||o_pH*Y$w_p3O|L(E# zSn;-K?ug}A;HYv$FdF z%^_({^~mX((Bu|j{?pq zx#hOMyGokO;Hs1E{COHQHC_gfBbA?h{A|pfif|Rutq&RAT^lEIBKo6HRet;Ja$FS+ zccB9hKRgEe0spYnrx%Tm(cKxvZxCcI7Gz{0F`!hWQ2gAzai7;p!_ zU_IcXMOqJbD$!lvgi?B55OrS#RR(VeVmlr`RIxYv3pr>eJg{Jk8CT8kzE~V| zRi+1bxb`%9~gRJjKJ`kn=!*t&!-<> z8P7&%1tp`Sn&*2oiI6jdS4NV-mgZ|2Y(S+rPBRNhGVzCuxg+yFG6(Tiit;SGm6`X}@#LPjmcw3raew#$m!r8_Q~J(b(;%Kbl4JP4tneJGA+%)aL96})>M176iY25@zwgTk3QWB+GzF1g4 zPEkBz-Rp#U^eV}uKfUwP=&fF{Md zZ{4e@52`E|uzG$$GXag(+LLJtR(kpWPcJflEgr;bpptV}amKXbNHXCO601z1E7Wz9 zBTrcW!yo^+8fvx{3QjlL3BQmNFN(h39<-b;WwrDmnocDk`P=MtA?h?2ed?9wWo^xg z7^okOvg9-420?ZDqO+2ay%=QtkYk!p!g{}DJp^GyQ)IH3AnmXi$I8*Wtizf=be6x1 z22^#dnfgqfpJGiy1?+wmbjOXv&cb=VZCrQ(dX#>%>xwAhpn=HE*%(_b9PQ&8IpRP4 z;`$f<@|RxB8_q|qXx5fV8PFvK{xKMz1t3zy?N5?TJXJwspM*gaF33EQ*;+M69(~L) zar<*9fu~3P-oi33VSUahh5UvYXu>9%hNQWH!gebJql?L4GC*x;{}n4H5%DHQ5fL`j zf>*ZN*7Dl$_*j%c^LhaB=4uYiFdn3zD#CgnOQ?Rc6$s-zYqPeOG^!_jL7L}Bkg8=q z{b#m|uIA2MN{A^#mkaZe0S~M7UGMlQh;Nm=!4L!jN;ULCr8GIRm`QJ_#?U0K$bT4t zoH4YB<8u%1yg-<#ip$QRKg%n5y3A=rn%Z>HV5r3w>bmrvgrA@>sTK6OP#*zuo_lD@sdy|%OvA(Bhi5s=Xg*`lAr8roo5r!pXn+;Y zPO;Ra_PxVLY+-dKCA;gH|NPd+{OM{rlm8}T%$f43(NLr1 zc)X_K`OR;pH}y)nUd?;rl=!<*VJ;ijxiSe%d?4ccpj)aa_n+|j8I?Grv>^~ZSJzf- zUbk(&R+Ti?P*AL61G!z~>Rev6%N#3iYz7^TYP+CJtl{2};bxO-i-l^;AcmohU1PRO z=>4C%k*IJ$v1^^x`yW7z;z*-)+7qr!!LH z?i5`LgXF%>Z)H|`emtG1Z+`klI@VBx38__?G0MB^gFvh>XLV>Uop2+ zrnECXl5f0GGb97_z~mCERnt;}LrL02MY>Efz5h;f%=oz?g(9UvghO=YX+M=j50&sR zJq%;3vF+~Gt~Gd#ikISRhGyLQl1?!-{5&FvUe76Xr=Wsh_k13;kwZBg-5*)lDKp)B z0gb`Dfpze@j<~+*Yx3kaYjrnww9iYtIiI}sSR!ooC2g@U969A%j{K;V$MbmA1hiE?aB91%qJY?HOk(S>x20kvY>8>10iV z(D&)a1uMP$=2vNbYPE1kJ$*?*KDfve1+5sC@e8+bNlxDb30xeS!&tHJ0I#+?xwA4M z0}b@w3*OozGZ=ySs3bo+j$otlbdVJ7gGHs8V3SKepv`Mg@(ADu5f71amH&UD15 z+*4CVgWwP7G67w|V$h1;&joe#YF$|=&(ai?^i?BbUvXPMcFZzzp$o4&smmoC@v!C@ z1weI4ypmKOR1=E$#}BU9Yzam}Sjuw>7kaUR`2ASBvDhGgq6Bc}WJqHgA&B1`Uq$oz zq&3n$o#WBo*;N658hV!YYt5}I?g=644Q8D}r^=toLzr7|FXCbn$bwmvA9K+oY8hl%$Rj8)T`DT|x85$7s^3Y1r__0zE=j^UmH9yfMv z$_H7c3AkEd#i)r+?d(jSD65>Z2 z29$~DAPGN4KSCj>cS9zx6w=Y(Mq$V)u}_RfAw-VJbuWw`f4CVhJ~aU%o8Cp=7ht|O z$}0pNW=7Rt(J|j!?qP3o>g(_31`Zlj09psZ7ew9%woD5No-X#)!fM9TrcxqZPxr1s zx5uk|9s6geL5vO~n*?9ZA%&jlGg5B6PF#}HoC{5FoUaV$b}E9UtQYVu6{!i@=pU6} zw)}nPkIuz3KqNu~#wb>j47HsoFDe6WD}5sv#TkhRVgzi zUfANS34eN&wu#}AwrU8~ZVw_3qGe06qC$tL994GQZl$DsWk`AwMxNXG*SAh;UW;$icy3WM72 z=`yE%oD_^D{Ol0PojVWZu*L)-1Yyxg>JmOf7`W)N%kKXd@s2F26Aw0hrG$EMuBu@+ z(6w3z8z9!>w#Y%np;<28c1qU>sOV}HO7)7ler*JVN*5ojTxakSCeAhU;)>3NeXs?4}AWL?(L zxt-Qrb=e$U__2Kt% zP5bd?B)cSdR&v*i{WAF^?Sw{#N{M4=fXK&0<4xBfiZ;%w*e7eh_4{w!GSJzY20ACx z4|jzGAs!{fkvOLU5`+GHQaTcjQQ@SDAW3MRIS7Kmecs|Vj*dB&I=lmT_V4kmuXBAN zhTL=QJ9feZgQDl!f*#HEWy=mj4VyE7CRpB(eWnm?V-LCb=z^FA#32$*Uov{hmuAtAN4D1^6w6F%>~bb__@)^8rFe&#>Alq!!rdQ?RovxvD}{17xBc8pFa1V+@uC13;2=An6wWV_hs=56hQH1x8;pX{@f(j%S}9r8!^iHs@4ni2XHXAH?cG5f zqa0?BDhgf~w69~BMLm#VxD?6fC`@s}k`O_yuOw7&P)}(@Q$6O>v8%(O5fKsCXiafV zux;(PyE6CtF`aZI=tO<9A zTzl7VckHautj(1p=3MfNx+Ctsv)N6jH~Q$v8*7Yh)2h*5E`6@eWv>q!{OGgwZaKC8 zrO!O^#PiR8a_`#>_O5tC!y|iD9zFND2YSt_`rA&wuiaz7)sN5JdCTCPCoUM!bKkd? zpSI+yZfErGFGH>P*xZieWwPV^Q{sv@ZZ2>~f=)+Kj~!p%k3TMQCw&Xny1LSS|20It zJrGh>fv{qh00v)DOVm~9H64Diw?QRx3D(CMS6O(i3(rp<(ZcJ(7CQr!Vy(u!3#uDx z6iqL@NyqA?9iuCrS#rIj`9nJ2UUCh74n%RqDwB&5C}YH%;i0PU1Ix#Ei{o#Ja_c;A zfivQ{cQyZTxvJ))DR8cIG~U-`>#!-??LY1#qxaIp{1a%qZa1sGo zc03p!GId|^N9p3VMSrHT2w+l@V}jB@t=>b**SW8+b|9aOB#wcn zov^2yswht!{6rnsQrr&0@&mIo8GKAevU}`F0Y% zy==*1<9NTNwX=e8f>*xWmQHc3SUz)Qhx4r#$6&42fRh|5Fec*rxKGkKbf4b0d>z8q zz33R)>afa^S-ieOWFL|s2hVD`ZhgFo>`u$>-Hz3au9&+fQ`pNFH0V}C0G5!ip3|~w zhsv_O5&p?$(SZ3XI#?8K>@{D&SE2FUr#Yg z95dnCsZy*r?B;pk*DGMeTn>0O#AA2_1gxV`vt8D7s9yZFF=Hy~RvTIa=DE;@lDbr1 z_SsE!GnE42<=FxKo`xi<>pRmFBr)t7fv@7n3H|I1ANjoO;)+ z>t8Ffj2XQwT@-0)e){~(>>U`Ci3M5}eSZTfs~i9|zj(XOSpC;2RvQ)HdqZ7RKJnz4 zmHN#tzIOoI7UV!Oq@VM2WqB-i#SUFTDiD9Wji=)kSkZ-0`*HZx9cS!0|zg<=B{a z)grB|901DDwk6!^1s$tH)LQKHFN#Y_m3Bp| zz?UD;b1yoUXny-mZ{@ZN0J2WTbuUN=HUtdaRiDp6(3aTyF2I5$Z07N^uRAII7_(cC zCAx!SB<^!`>Ubi%o7RG=CWaV5?_K*Th!-XNrfUfDoFXIee3X@w`j^|U`e6^9ZL6pS zn(0|~lKl3B6ADl$@lSgGc>}ffR}rWtPc@BW2$*k?l%(z+mPLdq&I2->*vVYtaI)7r zR1rPmYysrkNTmZ?KHE-GV;p6ng=Xncz4U%}-&sYT=<2djMucUSpC})$Ra)+M_n9yv znfO!aMNG*(5qCrKRg8&?zQP05JmcD70ixCn$DX z7?^5Lml#lFd4E@4N8JkBK0AMNjWtHY%4-@6&dW2Gu}aQiz<~8vH&P3D*>hE#8KJDk z8?C2WF?A>Q3Jmr_*y>UZJ@VXe>7C}I9`ChZ3-a?id&(dmLRKuY=k0Dnlqndq^>Zi! z-(9J=_DmKUVp9Bc&U|Uj9U-k>e>6xqs7+=&&{Zk8*UxD`W(&`uSW^e6OUrdBCuz>k z#Cb~hfpm+RjPT5b&qFx6@R+)&8HnyAUw(hN{Zu`>WRldJjdaPG zYBR;4UFnlIGL-|w3|Q9sM$caikV+GSFh|!O2%pw!>z2Vg&uw;hxu-6CJ{Z>(v)6QL z|CrCVVePoP9DRX$Ex1Pq-|s=dnJS`#sZQ?rgx^ z`D2Ur66c(C^~29LX7K?fK{c;1?jh*o8#HU|60>itvv=(?TUQ&yo|HBwHcKf@Vpx55x#DV|(3nzQ)#`n- zt~+Vf92O84!Fv?RDWw-{zBmtkr)e$FN}Rsf0E}P#ub*D^Oi{1A=F6&dzvGFwpR2J; zJlt0&qZqKVC%&?q`!rb52C)hf=kG38PK`Q+7Wl*;|MbjG)l2&Yfwb`vM;swQbw2Sw z{OYDn<>ebdIu^`IxOxY<6G?=?MaEO~jQ{id^n_~vcxjfcNCOizaLl`j3>oI|+CQ$m zMh|S4IIBp4c0H8}a;PVC-&A63?R*_baGNv0HI4=BO>Ou;U%*?R0dzf;=&_vD4tHB* zUm>WdKd3*OgBs#=vt3{SC~})dw+OF8LRtMpnxKUNr`%BH3a`4Z$PT=3A;eWGIs1m5 z13!44eQfIIS=uD9_nj)kr+QYQ`qyAg#o2@PHPf^|{i)vf)}??!ZKC(;0dlSvI0v1a z6?FE??#@7Kjx{^vic2oOxC6wrt{ub>+b9}47g$Z|!k8lQRZ4$BhEE$?C#@LiLE1jeTC5u%rQ^&isb=R{#mJP)SNfGBKyBJ|? zJZrAgBHs$1)2~*eMhUietGc)Pd}a3evF=lT>~qv zo=91*f>Nbp0cYX6cbTw~d27Rb0?obxh1N@=7YNg-N{zt%`EK#BfkZ}vTObo41Bu@@ znCr004s*2YK{6C0UjO-dm%TKDsq4FGhLD8|N7c!NH_-`NP<#CP1dEw%Mz37IzIQ)b zY;(~*n&}qme&`PtM~u;~-87FJb9~mtO3M6<)sqY{C)0cFc{A-cq+N2oC^~L{>>kkm z&_y1l6s+EHk99^6H8x#dc%nDZQu?wOs7!z1HsPh_y!5tAIy1&ZahbcJ%0e z!1FZQ4is7&G-{NIoGSkl*dw&Z^{<3KlYlP~06YA|YO9?_k&Lril42z}*xlvyX+At$ zrP;05)Rik5vnF4(Y*|B&2P2MaG4@Or07KIJPv9jb@#cHQ1DzueF{;k{v8RzbRp>c& za-U3C8z_e{9x>tNiM&4-t(wX6yNgb0AYDZUhRQ;mLv_J^>DGh;1mLK{Ea8-MhR5@{yprceJ_CBC}?bqf!=jduF;pe+}t&5 zdp^)3&=*s}m5n9PEcWXdmzk*})LWXm50f#L+b=yAktx#<*y~WlYxO>aLSOzM5S?&0 z@}FEIJcn3f+% zgn81^NOhcSDY_<#wqg1et;XM<^I$ zx9qA(uU9C%y!O%bQLGv7x(Lb*tUy%VWq-$z0zvGJtijGKZ$vSZPRLsKS~_91s3`I9 z^lHkuOEJZvzzd{PWLHvuCX;?4aH5Fgg{k&Hu9R;TG^7$xkk^fqIS)w92rS^wwRza z@%Ism0huVyqE8h%$0C$6`By*0u%Eiz0ZIVObvhLQJHWk66FK*&l<*szOBKJ-5vOjL z3?q-X3&n*y8mF-}f<<|)N5q_GtfscPv0p(Sh=r|S{{Z@+adjcuA3|cnCTk0y+_EJE z9Q7#+TGtqA4hbrj0wZOG&dOlp6&B&q3eihGWFEnmBg$5|B16bqed5ImXq zupgfFIUIV&5Sl#zXvm_BV<#<)0-G|Jb7KV-L3)=Y*b z?b?F$T{#E#{I17d5qEiX-WqFx{?Y!5&4h*?DKl^Sa}a20M<-{5D@kS`niNfNFI5e-J}=r-`a?hgS3!?y}Q~YA!$8 zZ_uE(2)raum1q+)p-D0^{?EWfZ<`z5LLL`tK!Xq+FXbUf=OO=7z-tH(wG_G_zBLOL z5MCHfX;4mi>)WpW?9W9s}2o7z7Xz-N2^z_u7fS*R8;Pi z&i}Zg>n1Ht)!cLYkI3TM5-!E57$v}rSv%?wDJ#l;lk9d&9Z67ZzamjQ7)V)SvV=5R zU;x22OJ2An)61etj&_9Lu_Q%7#XdD-hYQ|L;wpaBWTkI_G%K@n0iPT)uGS{Iypd>h z)g50RTx%csmm`jD6!5VZG#sWKIwH{NJgtTx~pp z7mW7RKP=7}Im8xLB; z1v~^&wP=&Dk9oA8dE8?p_H#0+OhbCDXJ?k}KJdIJPEJ!8UL+G^!7FmuXsD7+6x+0U zb1N8B(CCXVmb>oFz2QSgTc*yZ6N7<5X1k8!UD0$zi-xF{$E^oj6~C6+MuX0i-YOv} zlfI)Yn>h1aJ!S9q&q=^Ci^vAdWKEBldqXrIpvCbKL=j*{G6EEe2LR`VgFGn!7OC5G zRRA(IlApJXE>Tj2U;t|z4N!;_Q#aNj)R5P~gws#HYs45p6WZ(*LFc-dsd+bze&n|4 zeaRS10@q710YJ5d(GJ^0QP!wPSFfIm7HZg}N&OE2I(T`j(dmNDLs`V%fK|%j3$<^Y zsTpX(O`lC!*`eyq8(ZqSt<87I=Ut#D8>+%}uVWSY09j|r$^pnKRJfVWns#``C2|h= zlhe-;KCb`1Wp2JxwMAic@6?qoV?PdPRm3 zDRwBAlL(3b%Bow;e{;?(4`i!DARZH8c1Ja*Ik}doBchSNVU*=Z0PPt@N)!kSz?!Hc z$fWE3M2M;@Z@iXf%k@f!?1Z#JR-30 zr%<3UPAayA(yU7fZFgDll-n;ITo%?-ORnEm{wMBdJR&rMM$=uAxXnz3_junpgR7g@ z35so`j0q7Z9Zvpxwe>^rSTO@2>?CSad%zL^dTyqsW4rj!b-EF1Zr?aH;(DoNMEY>X z-Mismt2dO%9j)n1Z!9;iqTE<%kQv04cK%i49QRy6c3mYq&#|89?u~TczwG_t+P`uC zTXOw$Vy9suhRk|$_wWAEz5KTCwn|^4Zk6Xem0>#*<{DV3E#WC<1q~{VnY*$>2hBr4 z=;aQpNqIjat1WlZNeA_Yum1j`3Iz??gV3@WREjYsbIcM9>_^4v!MfJ=j8S4vMtWQf z{}yBX9pKbg*pgM6Sd3L~IAN~|@VISoynMTNmE#U0+(oumDl8kxCsv>;oqZs8yPH53 z%XokOx@7MU|Izq$dc}PUYgD5{rE8@)uDAK~Pizm8e0%NQ7ROaS=9mX1vj=*}bvJkZ z;~)NTwO2Ec#Dj<_`gHbv2>rU7zs-D@w2nl3XwE@|q;)%WhCb`mbGoF#Gt%5AXh~qJI@$H83V1$5-6;)~WKzCZ~US zkOO*}c)B6NTiPoqMa-gZ3dp>3$LBjg$_pvd{gLUU%k}~RFrD7~HM-oWS1q8dqs~^e zt>ftP{Kb)%U*^Sj|L&8k(%F-LV$7V@E2e42^OW0f`|to2PBxWGMsr0uPlp^O>Hl44xrsmSDQHXTj@@ zn(37GVgf-P$caLapRgCw;X0+cJl%Pate10Rx*$C=>BzVNcD0*~bEOR^8myjU02Wsx zz~kA(LlfJWJ3$AYL?9W5HlA|={Vc=DrWU7J(J&V`j^`Q=y8k-jonC1LSBvJfk>ZTi zC|BoIR!VWK*Jx1UcL)6{5Xt-9cithv4j9G;sT_K%0RN&Ur379C-^BW%E<>a~ajN+t zIMSjt%#2QL+crr2kQAzM07Hw!gz~^9HSfX-43S`{ThwU~?AU8HX;RrB(uFdbb9K{a zW!tO<|NPQP>!RnV-q+7}_*L(^q4W?cDI)&E-A8o2nH;2+8gOnnCXMMXv+(k93`xWf z#?l9I+OQB}KuAh=!LCDoh|(o6CU?Lz=h0t}87|@U9?N>eid$hq5G;P!VZAScAH=~? zy9tQa`-$*8$t_Yi@B_}?J7;WlE{6Sz{*OG8Lq?0SuEI){E5`>4$^&hw~&{=1Rf+IRH== zra0HkgN?;*b|Nqm#9P0cz`@{jhL05JoA35 zskg^FeYLX18YdX!!e1Z%#+mLx_;^Dw#>?gI(bdKsuI zw~ss2?BSC<-HlUzeSF&Lc6|43kRJ=5)MoJ#`Seu!Lo)bQh%V?~W*GPbs)iktw3^?) zPM=WA)EUfw%v0)gqC#Z3x-$NFvBXWZRk+Xv_CalB(zk<+9Mj>Ku{ud@Gj=;}u05mB z*T}wOW6xR}*A4Ac;Tt7dnymv%LE@G838S6y@}nJ%Al9U-ZQ7)(pyHeb3x;u|%c#{u z4^6S1j@V$$Z(X(Xn`X&)uG+ErP#vv#y@Y2gJoUPd3?AIXa>{{ECZfGPyA%O0Xgh$|eZQl1ruQRl=!GT{wc1QdZ&{Y<)y9UB2Hn$ZaO_Edu1s$^!| zAO7%kji~0J&nY+jxk!@H)>{9L_hzSF|62GN5=ub0|2XUEr>f|dtIMg`zXr-NGmbdj zi)Pb#OOFxTm>s4qr!-?3*k*Ld`N-JzeQ?Jq^0(zC@mx!_u70+H=Ld<@&w{y^6UD&a z(GBBCB}r-IB*~Pk;(C)c5TLaJI^%MZ!^G<6*$WY}_hXlGV4Cox(#WKPTW(PtWYn6# zke*S*Q%p9M)Buh25nN7cuqsMqHtVLPWC#R$Wr!Sc$Ui=b<09B6+M(=m)hbYO+Gkt$ z{CTA>h-WQH1wYZFnZLs1`IVdr?2;wb2aZI#9Irh+p7CgFIq7FDl%b2I=?RJAK$Jx~ zyg(xxgx`HGPa|#uARgQ4W)Ux_$VjJcx4cMPk#D zVxbpYy#fVGD01v7MGA=BD);i5p+l^hi=-n%93LX&x)&sK_yEtnF-g$&zmt6U@As%2 zXS5kzLRL21U6B(6DWzG7NlPXRG#2_I?@+Dz^q4>o$I=CFPqeAN1v!5LDM!LJ*4w5=H>;=*Wp{#}aYT*Ni@eB|;0@xAgsd#%YMo>Ft<^r4py;Vhj~;@~9<#tV$X) zm8b;T6nP6Tly&eMb@7vmoj6vM+YgR7s{MPXQ3D<33ha|8@CL2{fTuW~fZOwR>I@UkEyvOwq3j}G2 z#dwvStMK*ez;oinq)XrmGEAxSUcnQH2=g6>AquaclwrSuv5hmd_J3JyR6;WLl>^V5pVqZ>$Nxi^6opi zS5*N>#}F(EQpWOBq_xR!=(zPYz1_dXacgh#@&Ed{;>O5%H)o1;jq#h6y%FSHZl^?L zo7JQNRiu!xIIaItRoUMo{PVB4z&q(Rwl!pv#kYO?ZMqb?wYQk8pzKugkhEruh}mdF z9y0ZWiuH|uM3YVJvjl5Mr-1-?dN>xS;^F)(8ngY1Q=Btx1u0Cw#~$lRY$!wC-rRG2 z!*PLOII-Q*s^d8?-RGEiaof53Pu1 z9IKX{I$JNu<(Hr13dgMKP`v};rn&9cymnc~*hXQas82gpq4gTeWdZWB_XT_8!qaKY zEX;xSH%r_$==I=(b^rEb+LGwS>oY50#m5fL>e4jG({n`Htgt49DX~#83FfHG!-{rV+m&`;KHJSD=>q{IB007ob*V1#w7GMIHQJ ztSjRIlSb2B-BuliyC|qqacvm?$#Ha6XU9b(S}06Nh&tzrOgSKH6lxCHjFdUa5ge(W zF3-5qduIyR3!69ZMLr5IQV6x5zN_Pg95O6RC^$_rfN*T^_)IR4)5k-77p0|sNde-h z(n`>w#y|N?99-(*p8w(|=_)dP4>3UCvr)$m@1N}#YrtBj1#R#hUmd2RPRC`7H*PKg zbr9Pn4!wv(xiS!wIWE$xHbi3kz!Ra?i)J|FbI2rPPZehjfLW{8E(@tQd`Xgx_C-eW zwySD#3%k|0WW$k)v#%f@p6{XEtf^0xJakuTUCo%e7@ik9j9*oTh~{;`r5t7KmWr9zfJ$13@yj9~LA zStdOF>X9HwpxdmRa&PWFStH)BKrHBts*eAz0~rFBUZlAClwI`p+mmd@5;jam_Q6L% zebb?Bmj^56osu>yFfI5pqC*y1+e`fzNPY6%c)|$c-sBK%bu>WAubY)(+kW>OJy=r7 zLi0jF&4)4TZc=m8-etRQKS4Ta`BJ?MfgFu?+$OYnHJ9=LAZA!TFK#169nRINWpGQp z3pwG&`8&Y3j%Hi!_&2{OnIRXXFXeBwHqs%XteR$kR{UIfoir%^s<}e;R21KcUwZZskZqM0G7#j=n-6Igb)T zkr#2!cwDem`hB@uX-u76z}r>*T{xqIxI{q%XL4JKu1j(C&mS%P;3%eX|6F@uvyPp< zPjZU>eEX{Z6O2}R_QYp>c~sCZFT)Xst{ej8Rj%`#VzHr?-E!L{&6_uH@L|@kim?D< zYUHwZ+Yg^NsK#T%T!U6x$MCf zf6n0pi0aH%M>W6tDs-4!aS6TQ%*uowOLO`=}&HBl!6MI)H9YQ@w?C+__2bL}eo zDEFYenV;Giju0GE{C5e+!I?|q(V#&Wzu z8YCpJxo2XmXV+%s{x}rB9kyX?x>G z=YG1q1ky0N^c#FE!J^x%7$ zJUe^#)BYOnm*(3dm)%-r4*-dM*R@C4590zPwa!EGykb58R*Oc9YXAp_1;MTms#{`d z`N=2e*boY+R@muT50^Q;kqe=pXXtRZ3@BD{#92;~%0vPhpk-CDicnu6iqfDGufr>E z-&9X>M5}xph$4oj4(U72R{uab^mJf{#Y_5)0=oeA6j^|3J^e!QG6k(5VCe)}=@TZ1 z$buDVI(F#r6h%-bAPA6E86I2O@X}0_^^Ao3^$#1hhlQJ@(ZD{8!Ff8939CFVIC7f3 zMZw1bvP!w2WgrjL!aY|Ay7H8AQ1KCg7lEf3&J5jU0|m+T0xIr% zZJRdw`kM&m$^pV608g=}%QO=Nb%z^oyjInn=5{Z)&|S+JlT1MmIp0Wi zGq@p@f@2VN(hnITQVl)(p|hF-vaESFQL$->ix08KK=VFMWFd)ksRu&?XFJdFyA)hq z+Eg2m;iRH*{ZLf7XGx^pUjL@G^N&d2M>Pe0q3aN+1h55C8F=6dX@LZuE{kPzWbYno z5(piVzdibBnzB2sG!tElEP>6=QiDbjVbPI0W*#{89N&_G))*LxI-yd93jakkIR0>A z5o>K%AmIfUe1pEWu{LLou)9i$O*c_Jt;e3Yy*Se`>g2qxWPB|qJfvCjJqEg)jx zGas+j{R|-_vO3l>##-d1AH{KZ}Mr)v_4|d*lvyqpI zvvD{RLU>t+RpP><$~B(6K1C(CA)1b?D3T%-N@g3!GXL0Pe*^h4e1M~o)TJju;Am1( zi&rs&X5=s4fV+@I548Xqq@0Pu!iyBg5eyQ@6q;cdGa1nM_;jPq0+mcd{Eq9sGXu_N z83Qy`?l{2xB5Bf>=r}Bwd9jK^6~qsg^?T#EQ8{54W5*ex#G!}ASr~5>BTet(rx*9z z{e?${E5YzN2a%RoCzVe;u^%{4nZTWiNP&509WO@U9HyER0<@5tttKuV<4QXA4AJVnk6QJ1|{}{EyE_Vs8K2!y7Qw#>k{OJv>3droYFh8`RPMuEl zvjQ4@p!Q=)NwSPREJG!9OjqKNL&8Bc%o*hzYIVVl0Iz6()08GpOsn<0(=db*wu>PQ zp7gK9_+C{We0wHy(t)?8Mo5oKmv!g+=3B(#*n&AY?V?{Oq2iw4EUV6PJQk!3>8EI9a} zgJ?~|YGMQ_pk?n)!e>X0EIz^cNCvIk9Oh4E#bZ!CG_7Bz1V|M`+6O02tOYK$1&lO3 zw<}k7sJW!~Q;Q;2tb%P9!!dtGQ-jd(NGXGr1Y>Xe`Zx$}7iRG4=a#x3;R`_@m2oJx zM2$>=sKw~=F7g=5IRj&nO=mrQeugENsnzXVDzsOe8Np#f@afsX0np^mfAaLXdcN+t zg3vtOSo|0G%z)m<-SO?ost?&>rG{teEYW{csbLpb-3*xv31|k^&Jmd8Cl+gkD#so> z{jIlR3(%U_4{;P!LgReQ;V9cQ%(OPYhXF-IKLDwgRkb9|cyB^iZ9LOP$gn&Vf#NLZ z-fxdPjwNt%EI2*+W4t;@yHxV)u;jH1D=EXn;1~9ocl~SW&f=#NUzNv|KUzh+-A_G{ zjPY?ks|CCe%x?jfV>6-Q#y{b^^}sYJtSg&?J_%HOXo&I+N{{XKlc@$GOS|&TTeYOJ z+MJ<(S?9;6PH@y+)l?XF+`&35fwRlCuU$5P9)p3b1?`PO4Fu_m4NHRkVANVe`!+1B zE725?(gz>Q=aMBAvW6G$UxNrB1n`J=M&Vnj)JMJMj;I! zcoE$UA(fA98>Jx7GkG{lKb8KihIo5A_{`q%W2Ne4*iJ;UbTK?v3kEt)mUt|c2 z@gopbRanfTzyr=%smMZ-wam*keE7i!*$gwky$5{ivLG}U8F}1R)*f=MYAHX^nn*;P zS@_O7_nUCxVDiQ@3QnhqK8y$sEw+jih)liE3c3m`3|FGk$h5-=aWY-Eu%gsuQxWhu zQZqFydQ_D?zWTm{PVF4>EiPHRAlRrHij1hcol$8=!)uGw++IsD^B)*?|XM@I#9sBn3<@5UG7*Mv2mj6iOyvAmv)x@fA=7F zd=vg^K>p2*VF2Es&1j=E;+iz*H%3BYc5-uDHf@s3T)ox|-52%veqMnXiUM3B^9qVQ z`^#4rjUcDCgO_I{>TgO{FJ8mJ)EfA{%$Wyln>2m;J~a>q+E_FDdj3EDaVU$BPtzWL z;q$Fs*HTLwI1O6={ErmeOUDuEk8Xa9TXe>zBYiY^^5TUHYrCfp^kf}cLs>a**T2t` zgi2g$X8y%|VR)HDt*?snfuHa7i*gN1-sH)4d3MS5nL^yyh*;@xTeplynCC_6Atrj9 z&Y~?N210qiBD5~NbmxxmMs@ZZQUKcc@ieUWPjB_KnGDOw?%=cK6(B1A^3<1y+nD0e zjzfURqZVIxQd*n8{pwGxGlh&p6I-WGL9j+1M*O}(NZ#w&3o~DGWWP$iQE};u-}cQn zt%fxnUa9N(ub=vi^+ zGrnj2yw=q=-I1l)xl^Yh>17sdFCoevrJ_{IOb zdziQn+B5IVD$t)x>uHF4PGdO^yX zc|zSX*TsEY@q2wkIcS^+>N@-EBUp~3wP$6#xyma;VaLb+BAlq#tR7hZg3N7uahgY- zK~gMd@^e*$tR0UkIW3W?G7q9E{c-;fd2bz;W!k-a&)6MUI0k~ZF&1_!1}fNvn4pL- z7J@|ziUl?p3@RXuiZP0aibxqC7COoZ21p5r1&B(+`(1!FkIwV{_Pamt{$tN)W>mc6 zy3Xr7R~+kD$HEv1Tn*IpHa>I$PBdPo%A;Ng|3iA=Q?;o$v;ANfJ=m+zE<8mQogp*j zdLgF?u`TzrlIRz$G@{DvD`UpEH;gAek*X&dv?67`z@ojHk3yMT5_n7lX?L4eP#r(gds)+o zyjEiR?b%AzS?f;ZIRIt4XnJ1dCzy0yV7W(R74ra5kaK7{fLCFgX;)a;Mq8;nYt8v{ zLvo;W9%F9auH1I#4Z>@P6fZr@IJdmPl6E6M$`U_<^-x?CU*bjssMPnEb^}njay9H) zu1i`43lMe~V&wN2L`bU11Bk}~Ot0*uSwJ^2XP*p(oc=7AR$&|^N5~r-lcHFTbPy< zuld~jix(yaLx}&~8j&z{iYaa5rU1lgyVDD>*4}XKtg+krpzOg1wQ=r2{_@F zgsTua&=~y3gIf)2jF}N4-2EC<5TN367yK#KgQM~318Aibn{8OeFf(AQ6fiBQbe2eB z+VCWgziE-ki(F=V4UqDVbWDLdxl50EOI)lHz6Vh9Xe-aFHmtLi=Rd=flPZSIU;8fdD=cDkd&aO8-r?Pf$r)YxE3VoSI z4S|UWqCoz4(rkfsjNgmU7*v61w3Cs-bz2ThpzPF+aR~$}GF=jPMSk=8wr9935=mq*Jel%A1x?*Ht0oEUu3#$AvQ5h>0Gw}`Wg&xGY*eH# z4%kgF2btkbS6((PpH5un1DMEU0L+*Y-5w@MyTuo#_Oa2&zw@me0iO3LXN6FxDO8{* z@%-uRV5>$1k?y5amw?P@6O#%K%~0sODHvBt`nnrxKvxRx1pd+kEm%24O6u7V`&wu_ zzhE{GPDw}yM}YApIpShe=xY$1fSFccq!Mg{rO<^v2E`|u^vF?@nS)EW95Yr^wMFNb6N>>M3Yy=C zco&quIs~v~R~DUTj0J0Mh)I&kXFwC^)Gfkubw4$24B!G-D)=*-1rUD$8HMDytiEWU zv3=%&uA<#2Ty%R+0FNdK*hCC*_Tm(1cuUwhUD`u zhIy`MBRQkE%yLN^1NBI5Y@XlafBidc=P(E;qE{rk^~`qnM{MdYA%5#ATeJwJhx;PSuL)kT8TPViCT{6)rS_nS(f)J3ag?N zgrbdf4q}sQEggIu@!=L$6j`*#j7iQ| zO2Y!^^EMCX^4EmOcoc6B+bwZ`OwwkQk&dGXLJpwN?A~I~ZSR@YcM`=$biKVPQ z&%f+DH{TJdToSpGPSTJgk%h*mPYyV7`m{6^+N~tGCrg)30U0*Xs+vZN9fjMd@WD>o z;KrM~W8Q5Y(1a7gJlhlC(DE2FuKdfziAgBq%W>lDVgA!5oRlLVFS6m7vg8Lyj~2)-x>n z$W)QBXE5^(4G946x!(WnxyKa&g|<^M0qf+Dr<*=E7J(Y@gjTb#%CH)x{Gh$NZQ{$9 zTfjv3VE3eG9=_%QVHQ5u+=11r`Px(9LQR+bNcGM~o^D%?u8A1y;k zq7|}dk96x@Fp1l;gq{vK*=OJaQ#_Em7Lgi{lrVl2^?Y2`4bjBM1;7vxDGP|hs@h7@ z7f!Ro7l!;xZkm19VgKUj5=LNa+oUlWH*vLkHM>Gp&;A8&M z=@gB_fkc{_L`al;u1F^dLLoalaW-Z06O}S!m|3)Psm$P1OErRAcLuS#bil~GEGD(c zxO!M|1{CW06~A){m7z(Kk1OafKyQR{*>ITVGz<;BKsbTln(lAXBCa1{7_{C*j6z=| z@TrJU%?I(iQJk$&vKybxW|8U72rtwEOQjMaMJ+-|5kCbQ7gZeal(FzW%jcZ|AIL&e z2v;kGJ7~tC(G%2$$z9UX$+aNY?F4O=R$39}fZ#=-Ez|1&TlVrWsk>~Y)JMKS7v2L` zfGC(Gk}Z(a0zU#s%%^kz(I6_OLZuWz2$Bj0QwExvnkKM?rR_5ow3|MWGbHwa>))=O z0l=fgOA_eeT-klVD**r0jjq9=k<3HLjsz|g4??zLk%`SBI8`!yjL1ktv4vTLa=NGi zP+}*&Ug?d_4DF@Na=*g~&7}FCLV(af+EKA?O`Vc-4B&xJmT^}ULPQgSRM`o&_A`V` z>?$dA@%fbX1c9T!k063h71c3xj9;L=gB24tf`ke{*!XGHla$J@)zx@TxtyvEMIkf> z4wKXjbR=7#Z~i$QR7re^v=qtghpx&}gyaPyR+AEP3~!P4&;pSP?^Cn_$Si~+Mq4%r zFJhX)f9CO3fZLf$PA(5%G< z4tfO3Km~5ox+`-9eGy(TXlM%Hx>PDSbaF-5A*5PTsTkgX#Tw30OGgEJPG>wOsWQRw zjjvBB9W#fucSDC5F^%(!bYrF>}bD@s$t_vOqupx3$O^sG`n*f5k>Ed>UHROvNViXa8mKM@iF# zi3=(Ck{?1aBu`sjqtGJEB+~jx)23agMR5a-9*|5Czkt_FtCYM7T$Cm9i?MOl`#|c~bgi#Ck2nf0jT; z4x%AYYVM>)G8K}#j?^vKWh>M8abb$OohRerfnvxm*ws?MVCny16@h7}*JA=QGZST& zI@cw3s+}c*`%VfO3ki{MB(IX-|E6;r4zwY*Ofns`1%b_klS{U_0K~7%qChzkCJYrU z4*g~-{umUr7HZGi%oJDDQm%imS`77y>fa#GcQz@kjoA1G?W)qT4ghtI+SlW|u zbx7=SZ_IY3@oXpaN4QB=P@XuUy37hDEFJ0-GiCbp8;k=F#~Pvzx^fjjp@16{NCEnU zi^SUcv0bI-cH|$49M>BZDmKrdm?}O;2=&wzXgY^#B_m3!Q~3k)x+@qg4W^X9X#I5I za0+OKq9;*d&}Dxn%Wj7pw#vjF+i@gwv= zB1lMmLQBT`a#={p$-ujL5ZK``2)NANIs19%cnl39N(=?j3dCjs6RNDzbhs8wg9K*%2sF4Hyg_3s2&!tAzN> zEV8wX{zMjshc5k^z-MGh6o$Am=m8vKKj>f}-qJq=Rs#WO-uanA`J=xI(wwj)MI8jz zttVpc`hLMs8KSXP#5NTQTEmVIR6-4hsn6%_@jJ1Z4 z+yH(ASQ;&zw8-d|Z2}qKh06uo4f+s03$svt@8}W8Tv0>h==0o$5RbCEM7xvFUG5DD zWT~;1Q6AZXGQ*H9AW)&Ob1tBCM)HZxV~)ypaD0j=BDDtx3acq>b~Z5np0qK6PI2-J z(Rc*cBm~2AEL^fg!I>r+#WRvj^4Q)bT&XDHTDT~xf`$tgNZ&FA<&$vUC(WKc7AFX@ zLa-@?Yg(dVSkOP#9djaLa5z0_0wa()&CZivEIw7}{Ir44nn=4Ux{DQwXa1F$n9lt8 zpy5o90R=(zr~&K|QKy3N2F304f7nDU`H%1Uf5b7BeogRfQVlt3>>LK(q>$;s=K5s@ z^k*8PpuJ9Hs|m-Cy()spkO-eM$Wb&QA&Dw6*OpQa`~zvNBk!k%`7boaOR}f%=uCkX zIehs1S;$k!AXFSL{9oys;Xnw#jk2}~qybRTCyFBSu3-KS?cXS9-b(78! zL6OUa9;9)I-NDC>0+4}hv~m^bg*3)-`*)ameFJ6-eIz1K1-PU-0A-jmdn3pn^Ad=9 ziMrg^e4N1}6ImbPJo+OIF*}qmmDsH~Oz957^APVyZA%&$35F?DQ6M!W)`sb}4bmxj z%usM7MqnWFvkuSQx`2!AOYb0ixb5J+`fdC=(0(iF?#e>MDac!sC8!0{D38c7BsY#7~ z>-qF#OPd_B9o>apxqCP5oU=o1TewnBh6y6mQ=yRJz=XNQ+xbP?S>$Li_k6YV?f`dC z@dx|4|5%c3zWywR0s0mC#-mb!xCHEjf^}*6%9WZZ)~_%#LuEdjbU>szu$m~z)IyL^ zbaFto&5-RCd|wH_Oj(a$lSscSh&%Y+Md*ZQ;S9@EbZT%yrV|wgAP&Gc@?=YAfp-X7 z3<0NDVvMwmxBGnU``=PPt3bq##c||#^O$801H>#zKFuL8ZeXaHvqHL>g*Ei;pKnl$ z1p+dJvnUF4!ofa2ll8hG=>s#F7N_2I+dAGGO;QPkg+hh;_Wk?yg+2x;O_&nGpJ&s` zt{_{YrvNag9}tU37_TOafIgZ0;stHKqhMo9?I7+D5*6*)w8>Lh9l)BvQdjP`T;}6K z3rTwM;s((7zYu#L<5e9U99p5`2fO&_Sl6q_ho!&fv}2=19u3wb!O1*I8ILGgh-3`y zU!b9s#-u9}|0eO?S$ZZiNu08o7$*cZJSAmGc4u)Pp`_~t@28jrV@3uFkrrQH(mVOv z#e0O7wiiZ3;mB#CSWHG?VP!>Uw)7i8K`g8Xb}pT%9ET(bg`9X4>}7CZJ5iAn-ZuF? z`&5Z*=F!1YPt?X^HtoGc8IZ30-pD_s8yx73-LB9UQo!Wnd?zqGv=M<8;N(&RpczX# zQ@XP)4e5=5dGSDpgc;`{Zj79#JokdPkJg6!;W7z4hCYcjh7|QU>zEc80L}_%2WHS` zoE3%;w#9u=CY0&Wb?c@PvrCG|wUF+xQ?CluO$es6WKq%M@JTKVPSP5F-Vd(vtnga! zr6{4GAt-Mq+lUeSQKd@--kiNbuD!P_HGO5Z^OCeZloIdgm$qtgPFmYSRltb$j5 z5oR>H4v)!nC32UeC(Xy;ZQwlbz?f8F6~azN>jPerwsWqKga6;zqEha$#F7v=u@p3| z3u^@n!XprO1N9Q`VMyo(%r1kH8Hq)|F<>mMCo+Ao`wuP4ycl?;9QX-nwm|zNfJ09J zcIV*%5KFb4Nr8CMK+hr|#gtircVGgsOXvdfg2=-XW-SF#{hi%O#WPLvAHrb{bE_Y- zb}gI%c0~iU9z7sf8d4q{;R;mYF8yO~OFvl8Uq}g<4Ac;gw1krAFX9VUHl}L~CXTZL z=MK-1NGkzpe#lN>V2Bw#AWtlkfYMn(+QR^f6il8}J9WTDb3gdlMUuKf_y!db#ZA~D zU?b!xrMtR1^#!8pA1`P;p|k+bAf|Lt z*EgahFZ06TF^NPuY>t0nH@}eK@?v7ycLZXR&XWT%I#&*nY%bt@0o`zjub~K1ENV?T zg)(ZC8!`*oC{VsD@vWLRX;RBgNue4&?$o)a)}iY)wOTjS5?XGpQhm}`wI^+VnLqZN zqtiu2^s~bYS6GLR+wr9Nih=39#w=}ipyBQddh>g3snMavbk$?^T~0WSsBHYGa>p@7 zsV#m_DRRr%+0VF+#(AUQfHwnWpc(4NYItXm49U!NSy50AHQG%uOX%^2^U$*PgH*KK zxfxfPqyt1Bk(^jnBlqXhd8+zFFLgz~psO;0hbTq?dnez9@lQNXFu|smp}$n?6!xu{ z6L1CSNb(`71Q-@U@9C7Jp;uaFr56(cdzkA4EdoPJ6T|dGsRgYfc!i(UnHt0hi{u48f5CTJkZ80@N7T4Y zo60~+v=fC$RR-I|cRTS@vv$msbh$0k-%xL%ezo7Cg`W%I6lXS4R(7C@ee&$|P8Z`$ zr1gS{G0MuyhyM6uJ)H+8=y-W?wzq)H$e09hqB21Y8vyfG1Uh7XD@4&S7rITDk)N4A z@FprvLm+&?GUA#MSqQ0#AF^Cx05#EMd{2?Fz>sRc$zW5%rcFi0~9h5=`m5|e5GaRc}f#Db(= zAWB#QIzPxYL>LD`LFQhXy1+w~SO;_zfM+i2l8-=U5Kq;`Wh*OfLp2hwxQ$ij+t_TxeNKUzxPBKW!Q|O<{}~(jz4z z7mGQ&OB0eto(}1qS9>-34zv(K zRmM}J5$Gf73bl?PEXin=i6q6Mw#s0cOu=daQ^t1Yt|7>GMBK#@Q6+elF|S0U9W?X( z`}YaU1L!1%U>j1K?MesSGP{CVAR7SR3Ib_n;uJS6TQ-S_A&|R__hzDeZdGUL^=6RN zm@(JJbaC13>}-#M4|#-Xz-&+^`r(itaPV?Kq$;T+s!~40feIEf@ZsNoQ&O$KvZ+Hf zrFdxIYub**%q0(!%Ayt>nfBD-;Hj!3ZOt|&L3m2VNdOjNsKY)SHyH~peVX6hD)N^OUN^v{v$zoH zh@*i-rda;-S_5VY;{cQw^Ww8%LnYAK8A*|J$TmklNx5BA(jgbTMJ#ViWMueDG19sha=RgRnQ}+ACUgyg^bu_ zIsKp_aYOY+I7z?m9>zl)K=4UM^vY&IpTksQ41N3?<8qAW&i!dpL;P{BJnc$D6ISC| z^$~m(HPStNe!WT|k|L?2eeMJJk&RYi4?2ydzX{Vu-sS(yYHMJxzI`2@z7ZW`k;JL> zFe+-ji(ELp8gBH@V>d#;N4RkL3d-x!M5d1!a(8bjBH8W5=wd)KWw48v18QL|2z1>x z@oz1tGrC~vJ0sQ~_V;fxwB9Z#;x>%mD`qlE&jUfH{<94`wrP35Y?)^7|1=W%$o4C9TS1!b^UPxX0HHV$yfYt8`sLXn6X$&EY|+~bgce$1^?7iV`7nDptJR8;n^&+RIuz-G&WuDGcF^BdLK z1oG)zPS_aa$@s4o0Yj}-Fkhe97Ayq~iGbb19)#bL1+s32hGN3X{xY5=B-W%4jUBO^ zLs?N7@@n?|$5_#a@_z+KJd-Z@y54_$LT7v^?TT%8CyrsHn`vLMTNii39H5nY1gVGQ zep5S03oP6rC6tNUZz&uJFupNb&#fsX@sxzg*U6%N}0U0?mrRgK)8Xg zj6@~l&3c)UVGLdoOKD9mN^*c_&-B11@?g3kHg7~7q1GxCmkBx$1g618HGskG`XkA6 z(dOKuhU|FB*0MDvd{PsL^_vx}C}(Hgx}R;}i`Wo?lGuszw491}w#rN5Fw;C zl>MRglo{uW(Z1M#ou|%!Y*mgQ$7V_FMJG?Zg#U61Nkk)1pD9c<@*%1cs4eb6`brF7 zZ?RHPhR4wA5CSdCJH7Sm*T+iQc6{ntx+yo|=wlsQRm){KtTsUA zcUM>oPw;6SB(7pr!2i4NK{C*UWnp_Y9D!&FM~x}I7iY1Ca8SDA8)O`-Ja5{J6bS$6 z%YRZWLTOBDUxWyTXh&#C+7@mwPv}fXk0w2gkH1GzAYc~6dT|od_(o?jxga(ZNkYij zD-E67o^akHURO0uUsG4N2|_0pNN_@SU(1Lv%Dc;^036dk3{Z1M$^$!z8TeOoZRjgOUkw|yYjwl^<%!muM z-8X?67!TDQoRk`Hh$MdEZ%G`;gKT7?oey`!#w#i+`t%L;DT{Lka1O+xq#6k+%L9OE zQx0$@;*Zd;aOu*eT?DZdO=JktLKBnJX+$OyxNPwaKK6U~_MfZwmL&-SAT{gnh7~A%?s6xikEnqk z_?)BxN*_umTOIS*^wzg~#=_CdL2|h7UHOW3-|p1^cx(y^*;=e+7RtB4`$?pS4pHf0 z$ysGO$!rl0yWm@$X+w!hmyt2Kmnh`|9|q#IaB}pn2XQQ=>HgQfqea_*uICuML}nu} zMCx?HgaU&Vg=dh>LkIz!MS;B8Z9rbi)GVX{_*t;fS0UQ7*JseAo&7PNmG=c zaJITP1-P;~Ad+|x0T@7Y1XdK(=K4&#CKYl9rdSSN5jUIu_H8PmhYbpUY)QlcF1q0+ z72L{^^XC~+svzp`hs@-lL8X#lI4^9veYn9DrsN7xMN|X+#0eyn^~66r9b{Al9-Obf zNYPsoU~&qKzbVvJLCUEO(9f2z`hVrxayxwW4JHc&(5h7{lRkci{rB1`-3pFSM}ix?{uyPZu;iTVaW;|mrAinB4@ z3R>7U<>t*5h=kq*$Y&{2rcn~OE#gJ!z_8|+8zSvH3{PX8uuThUnZjrQVFne-V^GJo z+bIT5&Mnj;8zw~-9?az>y`^yvAlZ^G1`61k-IkaXPy9IOsuD=Z31wTVDpq~kIY57yF}HEU|M*?kih`*VaHuW>gI zAC4eqI4nY7%7EJY;2LOESa(kl> z$O#o?D4;bdOiR)g~Se^fM$7Zir zDO}55%!Hm?e$9N!6`0QvDOC2hGQft+CT^${W{ zI!WxMv8YqcnKOrO9BF@n)x1RkWe5u)+FKJQ)P+VUA^w zZSLH)LiV8u22o3BA%878FXJ=Ym5*3kX>Kkmjo5JX{zlS3Gn9D{t=?f|6>le}C|_`pC*<^V`y=nUXmrE1l0cGJxpH(CKF(bp$x#JDy% zOrn0eXWzc%?N|gUmqT!1PKW5cfx)X0lb3}7BB1E)EsSP(R$4$4JgoO0K2Xb+TbIes zuz6+10)$U8z^q&U@>Txut|T`R8aVa9=WtS_0?q}~AQdo+8V*DU;p#(Y*g=2?RfIxl zOVB1BxrzS)sfaSE5T+F&#?gxxl^Nm4yvrFvHRA$%aPWivec9t=^b}86_$f%lV5BTq zwuOrpN!^sJ2mn;p8e+dUPeFQ|pDgytDu^#>d6VKFn}O3Tv|yMWcKJ~r)u5-{%Q#t$ ziE~$GhIkJyDO@4bQXsbOf(b1XMJcS|VA(BuHXuh%U4r z86hEzSJpvBx&coGibw*<9FgrI{sK}d)f34)FxY^P*(gM=z!>57#VA%oD~N{H+YtW{ zR}_g=@hhCUvv4XTDuPI1IAjiAqnj?8304b5^RjCm}<@R7T$|tpmRYf#X*+&DG3G`HZ|lOQif)v+b!3;pQOORUPYLl z`AoV1XV@p2)*#v_f3wD{rHnkHNX%Hj3fku8eIVQ?dv0#2*1ml;Z6X;y#o$?xCHR|+ zE)mYjxN#}d1ni>kfg2ZI1&b{@gpiKOy|=X(un&w&R9Z$O=z~?`#1e0UNS~z}10pP_ zMjFwn$hAs(&n<|=G%<`=MkqT7$aO_nQ$b-+sNfjmB<@9YMG`2p5YV?a&uXxr?G2dp8hv<53%IXd$XOuqznv7(7 z(yo!r<{9|zMr)CF6&U}=Hv)y2rItRbIxPnxmRU#v3CYA_cB}xSDbe<#utM3 z5x$OPW+DP1Lea-Au-7SD%U+_YB#l+_FvzK$-@Y{=A-g`j?jYe?Im5~q1`$qB&_7Oo zS!b~j+L+*B#4J@I7qf3#iFhgrm(-BEyAq?y*i`h9seOpDk!UX>l15Psg2orqEBNz| zZt^ZQJDfDv?aF*E4_X(firz)MPc96+9i)WKBJS7EZ#NxAXrswkFi{;ODH7fYGM}uE zaM@%~8xcuJ$Y5|mM~0`T0(nNC;ZxTN76O4f3&JmY-+St zhRf6`s-R8`lj;tT3$gT9b}ZJCADmtCxI5tiKrNUUw%&=!SJdk+tf_|Qvi7Te-%4=G82mgb(&oOIa7 zXD32DL8MmGY2Xh5Y|_sCb}j3!;8D3Xk<_Ixs(UUJ9Z^Gc0Iaw z9RjaG^c=+Q^Y{9@%hm?^)mQ(NoP5sLeEm<6&u-dFzy2pDbo`EZa~aw$({7hV5&1}? zQ%N)7p;A=29CM!bMR;o#sjkMk=9$P4Pog^_)E+#yahKT?+EVQ#01{vqe9tBZltO;b zxQ*upGS5Ngr->hBYaB*1z(=Y^@L^@_nXZifwM851^EKr}PR?9*nx0)eD(0+T$T+;q zJhD)m-55Rz@B`A^hs%UEd<#H5F%gn}(l3sTvIEZ~rVr&zu2x2wU>1pIs?zu^ZpWq( zM++n<=>wD)$r1r82E+I)`zNG-<&sol_uMX6FwXF`KDhSk`fPOmoN2eWRW)qy^&Kt7 zfDy66`ud!H+^hv-Z74MokqXsUhs~UH5`2e~`Q?^Aw9jq1B4D>oA(Y>pU3o(WeZGv%oNDmVzD0gP@erlkhp zk<>3>2f@wug=|mOzG&c+ zIWacr%9II%!cU1-F!Z&AEDIs*O20WGc(l9qfEw;@^G>v~*!t+7H@-#d_Sj~hCuT?j=b~cPBCRdoEOQ2S?cKZaFcN%p?MW(& zo*DHuiTW{YCenHfs|TnG)L7BK|9-v*kae98_VdD$$5-h~B&18iu&0F-yuBt{l$Wm{ zLV=1x8@vQrM&R{Yl&NS%NfJo|0s~-H8S6)6PswvA<;K#1tZ4UBcoL>0foriVi5fkL z6Ns=0WkI~MA(Q+L+e-m9A~krJ)S>w4!NTi7rv@JmwJZE2{se{BsQCB^1Dbg>SBqNlGj)?Z( z-5;gWjY9@f3SL~a zqJ0H^#nX|5j)-1{(ct7;v38qVS~-;eSB=a8q89ODUzkknI0?4hEmNDyL|sBDanOLb zLdCOw8?af@Gp2|K(w_yVX=@v-n0GK!}k3jDuUQhW3^0JS5>(K z#R?D%yo2OJ((MEJU1ma%B(ZfSWbz*j)2kG5wP?%&E|Zcehlbc-mmpt6V+sm_LzmMJ z4hSdH8yPie!8{Ma_{utXv_ySKUth(Uk&vzWt$NvzDxQox6E(S89es8&??d`q0jlru zAZ7GCJS~c?0Lj|{=+jq9y39TYa1w?i)NmR7A%m96B4-6vXnY1>F_pf`qODKPPnXJm zLM|KzCp30D9`Tt)a&02yyChQ*O~8ro$YUsL>Jf?9f7>0N0C;)y6yM|#$&_+V#UF%4 zR3e<1YYv^3DvKcVQn@7kkcm#qmZ{TA*QQUOCLk(6tGRXzIhJk++jqM?Oi=+NIV_bv zhtUq!F2!bSVJ5oRnT%gyI`DNcl^1W`EWlD}aic{1^O$!7}TOpH31^k#w z2e$O`3UVw87eH{LNru9L6NA;lmh_f6OCqH%L6S_Ze7r=qH;s9e_z4z?-5g~$kwoBt zRU~cVJZOfZ^u3AtuV76W!+q-dcL_QrYDO(X9v>PXrBiO@^ekG0&UY1O(F((=x!dM1 zY{{T0(p7}dNKmBTOCiA{I(o@M0F?38kd8z-5N-wf2xP;_)Q#aL$P|Iqt9!$0{Bw4I zGn*m`%$-_~1#imChvhGWp#f~fqyEhSHSO;Pq9=_F1kBUvq?W&ynkLJqwdhun4*`&I~+jROsZmnkNqr0`w|JUQtLxGj^*2&G9yX%_El zmZT}UFSjPx5ibQW1!mmlf6QlN_`$jCGX)3>k-NkN{Z$>{8(l9 zrlL@c)r&pFXVk|+5q537|C=G*F4FL&&;AsNL+qAvnUp-m`9pmV`z*{Om+q96N? zAPqGBCjP{gIkG$p96~mZ7KnM%?UW?^yyQ~@3o~V8Rs)tnxLb?P$8N!~gWtixg5)aW zj1l}EiHXsZ9$6}2aKtk22_!7KvXv`;bJ4l^e4qAqdF&cR8{@i@$r(j64Ya2X``?}OjQ_l7^u~OZUdxt$Mn5aj0V%z zYBKt20w!DLYG)0(E_xIjjS8 zupp_xqE-a3QnC#%ld_!VX-6OOMlyTqo5H?ibT;WPRX^r%v*T|{mplAeC`;%vW;43V zv?JGrnnt5Z4bw9+yumO4_0Cebrk*K%P@Dq6?WFelPilD()`LQi1AA@m=th?7`NvH`Wz%9pn;62{;`KyZY0|4_dMTfkF-+5w(V26IoVK;%SPZNvG2V**H zmPKEJh@FEzDu2$_<2zT5pTf;LB1C)=MwDcFXm-Gfzk)LpRFwo;j6EYc4Yu!wPvFsxXp^bJSw=MYlc(vtpn`Jkm7=GE|osdeST zgO08Jg;6Ry6MnirjAr>X{zPGkKW$Q%scWKaBncZaZ>6E4N$?q)S>xZ(W(} zPst%`33bVbH3k3@HlMIYkfw<*dTUN^mZ$=$m!g6Z^q~m9jx@<;H;QrN(WIiLjuuV= zJQ*4OPAdd?Q8Or(cZHls#jljTiAjn#hw68e5|9+dj%8+=g1`|rkls?s*3#CN@{I@) zc(qrmU;m1b;r8}8h=^EuX0P!_b3=xJu+C^#QA7v#nL0SJ$wDNddTz^ix)@yT-7b{Oq5&wfzwhC zT5Y+TX&iUF&Wefm{np>fy0?5sjS(Zwnx9FjwQZ(bl9}t4DMNHSIqcatxn`SjPufO~ zTOM`bdD}jg?itqE1MiJfPn_%T-s^&2fpxIbgcx`U)R1E;H<>*bC<|-3h+j_J0_Qmw zU2F4j{;=W+;kC_2KaW*U5Y;<~YA(9E>5Jn?_S|Kz;3z4X@fE>fn*GxCvH|*{e&S*r#T@naF1luyTX)U#)+$-vcKP0NN#I)9JIsTwb@q={9@9Ujsy4pw^tne7#Cj@w{PFRLY~`+h?drO;7t^w{&|+lSuTq= z-p2Q&KBq8EBYuu~TnhML4(}@n@F?h~Zh3P| z^M1?27+h-9xA`TM>ei(8@W>iv_kI+t1KCPv*fbMTDyv(pQ@2U1+0rJH(ef*70q^3d z&ukm`{;%O+oQdhVAD5M^W<2qRx;6LtX`j+$Imx23Fjv_g-y64DRfdUhosl(J~wjJ^W1f{A)sC*aVqy zy{hyirLS}k2{HC^)>(eC-OBm7Gc&oD(ookBX0VhIRa_?aOTb z;3D%+XXJMQGdu;_6>)>bFT8D+ryj>c84M(NVE_K*_eV6z^HnM6MmXQ?-3i^`Th`CA zThe&&LfaO|R81zA!NJaz${am!#1bsRbm5 zMEl#m^3RVc$=5G%Qpu~&RTRYX8Fw{GY<$+dSsa{DS)I4kwRrmUS!$YHaa!<89iMmZ zIYAMSPgXOn%g@K0zK@xHM%#1XAvSK@_#hX3I<(lz$1-wp;W+A{xBI0XOm@wr();Yr zoo&cmJ!I=3#AEUJwqEKgA8WU$)vq5VQW6j|MHkmdBO{~P%yUL#^vwu$D<|)>?BLCH zT1YD!tt5TmeZgqd_!H=qm)yB})xNH6=6dJSTdHcC zP&Me)oDAo%KFiVFvj!&(PHvGQDzQEm;T>n&6@7pS@j|0;bIGBYSC;)xUwYZ0BuT%p zCQA{TfdyH4vyDq`qDt{Rx#c!l{^|78pX1#~mKSvH)TuAp?{oMNz3lxlecv!;!7m5% zZJXG{_6q()Hz=vm>44N<*hzM8mth)Dp8+by`nnxI{;OSs(oIvGQ4$iGyEQa(4E9Vm zE2_-wfgR<(DShCY4<04ic00yc8v-Ak`aRz!FNQYtV@qtkIi|*Vj+@@a` zuD_DQlD;y;=^k#T^fKsBF+q%i__WN|1@E9{Zq-|cQm*JoKf z%q=?L$}+F_3At}q`U-#EvW?OtFZ+OkdJ3IGlW_0wP@51E%etxe8wuso#xu2~K5>>d?*R^A%1 z?_lj7QE89PnYlfFyej0`myhUuXROEksOzhYjAQbwva>fws?0oNvE=6CvnS&H%rpMz zz2x^^-ThWi^T`i!nnxemj1>FqJ}+|$LZZKX#P_cvz1PXvrdQhHA!GJ`xsiQ3Mef1Y zD(B~2`_swwyr0#>ob9z{QS0o`IiS~L{-51*};Of;MDZnw#0U-A1>yBnXcC|Uc{b#n*G1D3yc zh{zde)OSg5liAA-Z&|YDbwA`n#z|j~;#P@iZ-=&_28OvLQ_$+s%D; z|BrS{A6xmR_v+EmV1(+lPyZA4pmo_5EuE=e{Z?$T<<_kg%hr9H@324HhixhQ-@tTc zMSgs3`M2pKniKUJY2SIHVQ6MH_jdHwaXzkDhrfAg*v$sx>m=Rkc>3H*gPT)a_wPT; z4Bx7C1}7F~_ilRJAU-xIJbYc}S?aw94I2LCEBM_b$KCA?HV@mYJ9}Yzn6r2HUcDBW zn0TzO>T$+0yUHG?qN=Hgv_2?%*u%fv1;4xc>79BMTFSrE1QuD7*`~!KwI`;2yfnum@bU!B#KIYEEZ=Sqq((~%=s+v(bhqL|p!C$^oSqzNQo`9my z8*G2m`Cn~Ciw6M2uODY0E4!Bt&i`9>?fiD*-A$L*)73LOa-_i+_gjQ+MJo!LAJjK} zmRkECNBo4AefRPcbLa|WZ`In1+V4(Kx{arUY>dle%j0JGLDUC}4f%d`2T(78`P-u_eX{Ai_b zR*?()-PPT9!7I`ds~fLh&ukERrDDwsOGEFx)H&Iv_BX4@+K-(ei>?-Ez9yX4dbb#u zxnb#3b$=_gN9&cZ_2(zly?LD$`!y5>CMI{MkZ1PxunwuJ5)_}h!g$iiIxVM{KiJNl z+uHx*ae*0aPOa+*YLYz_x1ZhHBkfAnP{XLBGkWf+SkQ#Ub!Bn2hkgBo74^q9Z~y$CY>%iqEiJBIc;hlFc+q)9wJ)2f^v1gN7?f-| zizF>(xRJ5(#DBe!B}P_Huw_qzU#XJcm2T*Nef^Ao+<4@HdpQZ~a|W14b^7Jjx}r}{ zMWOm>H+@?1M`cf50kko2uWjhE?9^UNBO*3gq&-~D&DU>^it2%P zy76|7ezyUE(F?2A9XO9&a!T*~Or=Wyc=YU&te~=+K@7ir>#B7-J-SfT{iN=xeT^HG z9>}jgc+)k{;n|xtzj_eXnO6$j0v9$eKiFTL@$dXLePF@+Rqi@7o1N&OJw?a)*pL6; zr;2l1#}nO^>%6yKQ@=skU)*hIyv0e+$GEHV zqNT@9C?@GRAC>=a;t%I~>L@0S7}iL8s?)>~N;-_g@M-F_Pv8q>g6O}@8BIM;VSW0bry7O{vs#;%im<3 zr`#>Wl08p2_ta_QDE}{e&CLD7COWjQw9(<~Ulyn>9O>Ntef}EzVH0bOuT!gP#VJ#G zdFgFM9;*GpdQdl|^6%uiKnn)lELu6s5)ta7cY(WmFUiXE4B>4n$U*(ndN_d(Wmw`TdeIylPyF1r^k*e=So&i9_G zGeN9@fT$WKx=>b0q8tVwY_FT`(c`2|I*#5XKU?-Rz-t{sy97iyp(=o>ACo_kw2Z3|K*>obf1&o|6T{}s9$u>jcjyk(ul=V?|PqrHcmZ1Us>uNhk6ETZA<^X zSa7c-R$KM^MD4C5mpb&H&O#9bL8%^o*voM%9bXT-o zw^MZ3ua17dj@M=%>ztF%G@hd*i*UHtP^H%0>NhC+_X>Qq;B4dgg~ka+elAUO?ZTOVY&q9f%Ro`K2yGkJQCV#1Uk%IF9H-*2bJn4{W(TWzA5^cSFaPlMgCe}HB58t>&JmHQkbF0?jw-#sQ99tvn?O$ zls%9-D*ckA<9TP1hsqxpi}POvzdi56#u024NcO<6iPdC!QM<;CD=i%NfbF($+^#UK zv3#x#I-!LD#6jw4 zA5+6oiN9>)$zE|xJagRZycRF~>c@%`qs3$H-OvFaUiNLF|kUs-b-4QUHXY?N@X@-=C;EdOK;9B$9QmZ zj!9@-k$%4O#*LL{`7g;j>k=AU_nGPX$B$=xzA2?EoOK=9Y+j{H7e4*VovRd{s+<3! zh01xesJ6k!-%%CFjnc@Ql3|lJfRkRjMoJA0s6*Sl815gC^Gw}g^2O9Ai(^+tHQO`A zUW|y&%;Ce-##fgG40m}O8sFq?a10eFn-89wx6KBprRq>&z-k-6lcz6jVSVMPs5Z7`&E~am7!7rBJIq3IlOMufJ~gE>6OYMc?Uut#}`=J?UZLD?;Y2*d2gP$ z(znmIx&F*|ei?;1cLV2c9hc_5IO^z%qFX*e5eMSm`^;Ybc)`^A=!{ekKK`r9r8m>y zW_oPsa5~`QFMZ=f>+j9=`w-HUe`>n?_+`!TIcP)8Gr?6kKP+`*_OjMdr@HMlCbC{MvCr78S z=}N5~eHFwP+S~X>Wo-wo#m;TJML*Emtvtp+(QV&%UN%nYRP9N;VYv3TUPB!m!=_K~ zZ+2A*>$^R2H>~KhY&Fd?FF#oA8-Fk}%{>0iZt66Bg44%^B)>fA$g9UHMye@hHuF-* zm2!2RI=h+P?(CoY9Lhp$n+vP^uD%GF4TeI{&hHDe6 zXv-CFyH{K9e7!nmjz^~b8+Fqso3=M=p*P)>09Oe-XlkKk_Jg>=E!LdKReP->KQXXAS6) z>;<3y>>1NXA=J?0OA1uRY_%(16Q8!%$6}+b!N$HvdTH-gUTm+m^~=K>e{f*BvE4_v zyKy$_wjb!N?G=+jVL0@mdT7BQlj3;WzuUOXPC9pDSoIS*R8}f&$Psx>-0mhNPoH%&l+_~qG%PhCfdX{an zHDZUWo7<}7?HYy)7dm#(#GlnZ;;OZ{d=rjpx#sVZ58ifS2D7$zqDENE7Z>RldUZT~ z@v4-x>AX4Rc&x*Gow9p*mb5P?=xLJge9(wEi{!d9X3m_fqp*+O?{wI4ip0XQs~=4$ zdVeq9TqC=;JOkU8#?R8@i|#!Adb>B+P`>?n{M}Yl$(P#*ExdiNX`RjPFemcg>e~8` z=@LNvtr+HYUUl>^9^uxq4fXZ;Q5&|{S*z?QRyP~1R=t~(a=((GZ2HHduMIH2^!n`W z*~O7A1-FLR4FJt9y@Km4t=~^#wN(Dj_;4=quj{p&ktZKp{)DH}Cp4wAiRHb(&MgNR ztzI3yy-)G3BS+ets8{>zRePIPsBd+xne8LDk~g6g=k?}y`h1?x{ts8G^w_YoOK;6# z%FNw89evwYEC2I1rb1KeT*-k!eRn{{2lWX-e3qcZMj^?0)DuRB^53~OuIpJ_ed z`tOgX_pPHy*FJc$T{p$1XR+^Rw;S)~J~!(6_PD=yym61JGT`_@4XdPCfxQx%RjS~- zF??;9TD`fe*IjO8QS*O4mTPeQB2w6 zJa&>u>(I`%s!yCnYoHjf!+Q+3Ox|+HWaY{|8ig(;&Y{KkN*tYv3Lq;dd2Q`tv~p!b zwV$+yjA&48k8|64?c0oNHF5O*A&2(#TsP#`g%#FKeo(2xk;Bz1jn@9b3zmmjk8M3F z$lI{-ke{koYE^GYg`cZc+BM{-3O_6Atu6nNz1pGWeIbJ`xODWWk(E{I#GEIKtt~0Z zAMd!OdX>$aUL2d&kC_qGt5y2F+OfhZW7_!rRH0tAR_lJMRH3t0l60PGD+PtWjsXI8s)G2*pZA(4ai$ksvCliiO$?>YZ|9)mzHlPDXtb%&u;HFo$|}u- z*bSv4Ykfzbq^mW%w5qnnvAWk}9ym8Vgk|j>mlK*Z$Rx0+ca>>%CZ1v$b&Z>>YF&`y zm$-ki1ubZKLYC^jd;jP*$EN;rY)qRTKbL-WdPqrdhS}3M{@upo}r{MJqMGEX)S zHmu%3bFIC7z00|e`Yv61O4!vZvn?An(KDrSsX^sQ)eW7skFqP;R_G8V>^)Mqhky3V z(xfBow?#|5p4`_qn%u+sZgbJ;{^b{gw?USMZF|8gZd+~U%vpUCHzZpo=B4GmH4nYL z%<@0XE^RA8T znHS?x(t6S4fWmm&jhCXM8y9~_D{!Pt$y*R$)1_EU5G;VlKzS(K* zPfBcgw#wK_Q|qj{R=dv`$US%aX4h)lwnpmRH=e$}_4m5I|M;Q%;BG^=PTulU<;rcU zU5~g<_tbobWfmsfI(aeEzGgLh0|WbGQ+H{PHu|~Ju0z$1HNTtiS3UK@=j{rg_!RZm zuuQBh^rgY?oOWiO)?B;RUg_VSp;3j>XPEIf{KCBG|A)2jfT#NZ{*P{TMY

0T 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 { - ActionDispatcher._instance = dispatcher; -}; - -ActionDispatcher.getInstance = () => ActionDispatcher._instance; - -export default ActionDispatcher; diff --git a/packages/mindplot/src/components/CentralTopic.js b/packages/mindplot/src/components/CentralTopic.js deleted file mode 100644 index 25fcfa00..00000000 --- a/packages/mindplot/src/components/CentralTopic.js +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright [2015] [wisemapping] - * - * Licensed under WiseMapping Public License, Version 1.0 (the "License"). - * It is basically the Apache License, Version 2.0 (the "License") plus the - * "powered by wisemapping" text requirement on every single page; - * you may not use this file except in compliance with the License. - * You may obtain a copy of the license at - * - * http://www.wisemapping.org/license - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import { Point } from '@wisemapping/web2d'; -import { $assert } from '@wisemapping/core-js'; -import Topic from './Topic'; -import Shape from './util/Shape'; - -class CentralTopic extends Topic { - _registerEvents() { - super._registerEvents(); - - // This disable the drag of the central topic. - // But solves the problem of deselecting the nodes when the screen is clicked. - this.addEvent('mousedown', (event) => { - event.stopPropagation(); - }); - } - - /** */ - workoutIncomingConnectionPoint() { - return this.getPosition(); - } - - /** */ - setCursor(type) { - super.setCursor(type === 'move' ? 'default' : type); - } - - /** */ - updateTopicShape() { } - - _updatePositionOnChangeSize() { - // Center main topic ... - const zeroPoint = new Point(0, 0); - this.setPosition(zeroPoint); - } - - /** */ - getShrinkConnector() { - return null; - } - - /** */ - workoutOutgoingConnectionPoint(targetPosition) { - $assert(targetPosition, 'targetPoint can not be null'); - const pos = this.getPosition(); - const isAtRight = Shape.isAtRight(targetPosition, pos); - const size = this.getSize(); - return Shape.calculateRectConnectionPoint(pos, size, !isAtRight); - } -} - -export default CentralTopic; diff --git a/packages/mindplot/src/components/Command.js b/packages/mindplot/src/components/Command.js deleted file mode 100644 index f259b7ea..00000000 --- a/packages/mindplot/src/components/Command.js +++ /dev/null @@ -1,57 +0,0 @@ -/* -* Copyright [2015] [wisemapping] -* -* Licensed under WiseMapping Public License, Version 1.0 (the "License"). -* It is basically the Apache License, Version 2.0 (the "License") plus the -* "powered by wisemapping" text requirement on every single page; -* you may not use this file except in compliance with the License. -* You may obtain a copy of the license at -* -* http://www.wisemapping.org/license -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -import { $defined } from '@wisemapping/core-js'; - -class Command { - /** - * @classdesc The command base class for handling do/undo mindmap operations - * @constructs - */ - constructor() { - this._id = Command._nextUUID(); - } - - // eslint-disable-next-line no-unused-vars - execute(commandContext) { - throw new Error('execute must be implemented.'); - } - - // eslint-disable-next-line no-unused-vars - undoExecute(commandContext) { - throw new Error('undo must be implemented.'); - } - - /** - * Returns the unique id of this command - * @returns {Number} command id - */ - getId() { - return this._id; - } -} - -Command._nextUUID = function _nextUUID() { - if (!$defined(Command._uuid)) { - Command._uuid = 1; - } - - Command._uuid += 1; - return Command._uuid; -}; - -export default Command; diff --git a/packages/mindplot/src/components/CommandContext.js b/packages/mindplot/src/components/CommandContext.js deleted file mode 100644 index f89bddb0..00000000 --- a/packages/mindplot/src/components/CommandContext.js +++ /dev/null @@ -1,112 +0,0 @@ -/* - * Copyright [2015] [wisemapping] - * - * Licensed under WiseMapping Public License, Version 1.0 (the "License"). - * It is basically the Apache License, Version 2.0 (the "License") plus the - * "powered by wisemapping" text requirement on every single page; - * you may not use this file except in compliance with the License. - * You may obtain a copy of the license at - * - * http://www.wisemapping.org/license - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import { $assert, $defined } from '@wisemapping/core-js'; -import EventBus from './layout/EventBus'; -import NodeModel from './model/NodeModel'; - -class CommandContext { - constructor(designer) { - $assert(designer, 'designer can not be null'); - this._designer = designer; - } - - /** */ - findTopics(topicIds) { - $assert($defined(topicIds), 'topicsIds can not be null'); - const topicsIds = Array.isArray(topicIds) ? topicIds : [topicIds]; - const designerTopics = this._designer.getModel().getTopics(); - const result = designerTopics.filter((topic) => topicsIds.includes(topic.getId())); - - if (result.length !== topicsIds.length) { - const ids = designerTopics.map((topic) => topic.getId()); - $assert( - result.length === topicsIds.length, - `Could not find topic. Result:${result - } Filter Criteria:${topicsIds - } Current Topics: [${ids - }]`, - ); - } - return result; - } - - /** */ - deleteTopic(topic) { - this._designer.removeTopic(topic); - } - - /** */ - createTopic(model) { - $assert(model, 'model can not be null'); - return this._designer.nodeModelToNodeGraph(model); - } - - /** */ - createModel() { - const mindmap = this._designer.getMindmap(); - return mindmap.createNode(NodeModel.MAIN_TOPIC_TYPE); - } - - /** */ - addTopic(topic) { - const mindmap = this._designer.getMindmap(); - return mindmap.addBranch(topic.getModel()); - } - - /** */ - connect(childTopic, parentTopic) { - childTopic.connectTo(parentTopic, this._designer._workspace); - } - - /** */ - disconnect(topic) { - topic.disconnect(this._designer._workspace); - } - - /** */ - addRelationship(model) { - $assert(model, 'model cannot be null'); - return this._designer.addRelationship(model); - } - - /** */ - deleteRelationship(relationship) { - this._designer.deleteRelationship(relationship); - } - - /** */ - findRelationships(relationshipIds) { - $assert($defined(relationshipIds), 'relId can not be null'); - const relIds = Array.isArray(relationshipIds) ? relationshipIds : [relationshipIds]; - - const designerRel = this._designer.getModel().getRelationships(); - return designerRel.filter((rel) => relIds.includes(rel.getId())); - } - - /** */ - moveTopic(topic, position) { - $assert(topic, 'topic cannot be null'); - $assert(position, 'position cannot be null'); - EventBus.instance.fireEvent(EventBus.events.NodeMoveEvent, { - node: topic.getModel(), - position, - }); - } -} -// eslint-disable-next-line import/prefer-default-export -export default CommandContext; diff --git a/packages/mindplot/src/components/Designer.js b/packages/mindplot/src/components/Designer.js deleted file mode 100644 index 634fb3a4..00000000 --- a/packages/mindplot/src/components/Designer.js +++ /dev/null @@ -1,999 +0,0 @@ -/* - * Copyright [2015] [wisemapping] - * - * Licensed under WiseMapping Public License, Version 1.0 (the "License"). - * It is basically the Apache License, Version 2.0 (the "License") plus the - * "powered by wisemapping" text requirement on every single page; - * you may not use this file except in compliance with the License. - * You may obtain a copy of the license at - * - * http://www.wisemapping.org/license - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import { $assert, $defined } from '@wisemapping/core-js'; -import $ from 'jquery'; -import Messages, { $msg } from './Messages'; - -import Events from './Events'; -import StandaloneActionDispatcher from './StandaloneActionDispatcher'; - -import CommandContext from './CommandContext'; -import ActionDispatcher from './ActionDispatcher'; - -import DesignerModel from './DesignerModel'; -import DesignerKeyboard from './DesignerKeyboard'; - -import ScreenManager from './ScreenManager'; -import Workspace from './Workspace'; - -import DragConnector from './DragConnector'; -import DragManager from './DragManager'; -import RelationshipPivot from './RelationshipPivot'; -import Relationship from './Relationship'; - -import TopicEventDispatcher, { TopicEvent } from './TopicEventDispatcher'; -import TopicFeature from './TopicFeature'; - -import { create } from './NodeGraphUtils'; - -import EventBus from './layout/EventBus'; -import EventBusDispatcher from './layout/EventBusDispatcher'; - -import LayoutManager from './layout/LayoutManager'; - -import INodeModel, { TopicShape } from './model/INodeModel'; -import { $notify } from './widget/ToolbarNotifier'; - -class Designer extends Events { - constructor(options, divElement) { - $assert(options, 'options must be defined'); - $assert(options.zoom, 'zoom must be defined'); - $assert(options.size, 'size must be defined'); - $assert(divElement, 'divElement must be defined'); - super(); - - // Set up i18n location ... - Messages.init(options.locale); - - this._options = options; - - // Set full div elem render area ... - divElement.css(options.size); - - // Dispatcher manager ... - const commandContext = new CommandContext(this); - this._actionDispatcher = new StandaloneActionDispatcher(commandContext); - - const me = this; - this._actionDispatcher.addEvent('modelUpdate', (event) => { - me.fireEvent('modelUpdate', event); - }); - - ActionDispatcher.setInstance(this._actionDispatcher); - this._model = new DesignerModel(options); - - // Init Screen manager.. - const screenManager = new ScreenManager(divElement); - this._workspace = new Workspace(screenManager, this._model.getZoom()); - - // Init layout manager ... - this._eventBussDispatcher = new EventBusDispatcher(this.getModel()); - - // Register events - if (!this.isReadOnly()) { - // Register mouse events ... - this._registerMouseEvents(); - - // Register keyboard events ... - DesignerKeyboard.register(this); - - this._dragManager = this._buildDragManager(this._workspace); - } - this._registerWheelEvents(); - - this._relPivot = new RelationshipPivot(this._workspace, this); - - // Set editor working area ... - this.setViewPort(options.viewPort); - - TopicEventDispatcher.configure(this.isReadOnly()); - this._clipboard = []; - - // Hack: There are static reference to designer variable. Needs to be reviewed. - global.designer = this; - } - - /** - * @private - */ - _registerWheelEvents() { - const zoomFactor = 1.006; - const me = this; - // Zoom In and Zoom Out must active event - $(document).on('mousewheel', (event) => { - if (event.deltaY > 0) { - me.zoomIn(zoomFactor); - } else { - me.zoomOut(zoomFactor); - } - event.preventDefault(); - }); - } - - /** - * @param {String} type the event type - * @param {Function} listener - * forwards to the TopicEventDispatcher or the parent Events class, depending on the type - */ - addEvent(type, listener) { - if (type === TopicEvent.EDIT || type === TopicEvent.CLICK) { - const editor = TopicEventDispatcher.getInstance(); - editor.addEvent(type, listener); - } else { - super.addEvent(type, listener); - } - } - - /** - * @private - */ - _registerMouseEvents() { - const workspace = this._workspace; - const screenManager = workspace.getScreenManager(); - const me = this; - // Initialize workspace event listeners. - screenManager.addEvent('update', () => { - // Topic must be set to his original state. All editors must be closed. - const topics = me.getModel().getTopics(); - topics.forEach((object) => { - object.closeEditors(); - }); - - // Clean some selected nodes on event .. - if (me._cleanScreen) me._cleanScreen(); - }); - - // Deselect on click ... - screenManager.addEvent('click', (event) => { - me.onObjectFocusEvent(null, event); - }); - - // Create nodes on double click... - screenManager.addEvent('dblclick', (event) => { - if (workspace.isWorkspaceEventsEnabled()) { - const mousePos = screenManager.getWorkspaceMousePosition(event); - const centralTopic = me.getModel().getCentralTopic(); - const model = me._createChildModel(centralTopic, mousePos); - this._actionDispatcher.addTopics([model], [centralTopic.getId()]); - } - }); - } - - /** - * @private - * @param {mindplot.Workspace} workspace - * @return {mindplot.DragManager} the new dragManager for the workspace with events - * registered - */ - _buildDragManager(workspace) { - const designerModel = this.getModel(); - const dragConnector = new DragConnector(designerModel, this._workspace); - const dragManager = new DragManager(workspace, this._eventBussDispatcher); - const topics = designerModel.getTopics(); - - // Enable all mouse events. - dragManager.addEvent('startdragging', () => { - topics.forEach((topic) => topic.setMouseEventsEnabled(false)); - }); - - dragManager.addEvent('dragging', (event, dragTopic) => { - dragTopic.updateFreeLayout(event); - if (!dragTopic.isFreeLayoutOn(event)) { - // The node is being drag. Is the connection still valid ? - dragConnector.checkConnection(dragTopic); - - if (!dragTopic.isVisible() && dragTopic.isConnected()) { - dragTopic.setVisibility(true); - } - } - }); - - dragManager.addEvent('enddragging', (event, dragTopic) => { - topics.forEach((topic) => topic.setMouseEventsEnabled(true)); - dragTopic.applyChanges(workspace); - }); - - return dragManager; - } - - /** - * @param {{width:Number, height:Number}} size - * sets width and height of the workspace - */ - setViewPort(size) { - this._workspace.setViewPort(size); - const model = this.getModel(); - this._workspace.setZoom(model.getZoom(), true); - } - - /** - * @private - * @param {mindplot.model.NodeModel} model - * @param {Boolean} readOnly - * @return {mindplot.CentralTopic|mindplot.MainTopic} the topic to the given model, - * connected, added to the drag manager, with events registered - complying type & read mode - */ - _buildNodeGraph(model, readOnly) { - // Create node graph ... - const topic = create(model, { readOnly }); - this.getModel().addTopic(topic); - const me = this; - // Add Topic events ... - if (!readOnly) { - // If a node had gained focus, clean the rest of the nodes ... - topic.addEvent('mousedown', (event) => { - me.onObjectFocusEvent(topic, event); - }); - - // Register node listeners ... - if (topic.getType() !== INodeModel.CENTRAL_TOPIC_TYPE) { - // Central Topic doesn't support to be dragged - this._dragManager.add(topic); - } - } - - // Connect Topic ... - const isConnected = model.isConnected(); - if (isConnected) { - // Improve this ... - const targetTopicModel = model.getParent(); - - // Find target topic with the same model ... - const topics = this.getModel().getTopics(); - const targetTopic = topics.find((t) => t.getModel() === targetTopicModel); - if (targetTopic) { - model.disconnect(); - } else { - $assert(targetTopic, 'Could not find a topic to connect'); - } - topic.connectTo(targetTopic, this._workspace); - } - - topic.addEvent('ontblur', () => { - const topics = me.getModel().filterSelectedTopics(); - const rels = me.getModel().filterSelectedRelationships(); - - if (topics.length === 0 || rels.length === 0) { - me.fireEvent('onblur'); - } - }); - - topic.addEvent('ontfocus', () => { - const topics = me.getModel().filterSelectedTopics(); - const rels = me.getModel().filterSelectedRelationships(); - - if (topics.length === 1 || rels.length === 1) { - me.fireEvent('onfocus'); - } - }); - - return topic; - } - - /** - * @param {?mindplot.Topic} currentObject - * @param {Event=} event - * sets focus to the given currentObject and removes it from any other objects if not - * triggered with Ctrl pressed - */ - onObjectFocusEvent(currentObject, event) { - // Close node editors .. - const topics = this.getModel().getTopics(); - topics.forEach((topic) => topic.closeEditors()); - - const model = this.getModel(); - const objects = model.getEntities(); - objects.forEach((object) => { - // Disable all nodes on focus but not the current if Ctrl key isn't being pressed - if (!$defined(event) || (!event.ctrlKey && !event.metaKey)) { - if (object.isOnFocus() && object !== currentObject) { - object.setOnFocus(false); - } - } - }); - } - - /** sets focus to all model entities, i.e. relationships and topics */ - selectAll() { - const model = this.getModel(); - const objects = model.getEntities(); - objects.forEach((object) => { - object.setOnFocus(true); - }); - } - - /** removes focus from all model entities, i.e. relationships and topics */ - deselectAll() { - const objects = this.getModel().getEntities(); - objects.forEach((object) => { - object.setOnFocus(false); - }); - } - - /** - * Set the zoom of the map - * @param {Number} zoom number between 0.3 and 1.9 - */ - setZoom(zoom) { - if (zoom > 1.9 || zoom < 0.3) { - $notify($msg('ZOOM_IN_ERROR')); - return; - } - this.getModel().setZoom(zoom); - this._workspace.setZoom(zoom); - } - - /** - * @param {Number=} factor - * zoom out by the given factor, or 1.2, if undefined - */ - zoomOut(factor = 1.2) { - const model = this.getModel(); - const scale = model.getZoom() * factor; - if (scale <= 1.9) { - model.setZoom(scale); - this._workspace.setZoom(scale); - } else { - $notify($msg('ZOOM_ERROR')); - } - } - - /** - * @param {Number=} factor - * zoom in by the given factor, or 1.2, if undefined - */ - zoomIn(factor = 1.2) { - const model = this.getModel(); - const scale = model.getZoom() / factor; - - if (scale >= 0.3) { - model.setZoom(scale); - this._workspace.setZoom(scale); - } else { - $notify($msg('ZOOM_ERROR')); - } - } - - /** copy selected topics to a private clipboard */ - copyToClipboard() { - let topics = this.getModel().filterSelectedTopics(); - if (topics.length <= 0) { - // If there are more than one node selected, - $notify($msg('AT_LEAST_ONE_TOPIC_MUST_BE_SELECTED')); - return; - } - - // Exclude central topic .. - topics = topics.filter((topic) => !topic.isCentralTopic()); - - this._clipboard = topics.map((topic) => { - const nodeModel = topic.getModel().deepCopy(); - - // Change position to make the new topic evident... - const pos = nodeModel.getPosition(); - nodeModel.setPosition(pos.x + 60 * Math.sign(pos.x), pos.y + 30); - - return nodeModel; - }); - - $notify($msg('SELECTION_COPIED_TO_CLIPBOARD')); - } - - /** paste clipboard contents to the mindmap */ - pasteClipboard() { - if (this._clipboard.length === 0) { - $notify($msg('CLIPBOARD_IS_EMPTY')); - return; - } - this._actionDispatcher.addTopics(this._clipboard); - this._clipboard = []; - } - - /** @return {mindplot.DesignerModel} model */ - getModel() { - return this._model; - } - - /** collapse the subtree of the selected topic */ - shrinkSelectedBranch() { - const nodes = this.getModel().filterSelectedTopics(); - if (nodes.length <= 0 || nodes.length !== 1) { - // If there are more than one node selected, - $notify($msg('ONLY_ONE_TOPIC_MUST_BE_SELECTED_COLLAPSE')); - return; - } - // Execute event ... - const topic = nodes[0]; - if (topic.getType() !== INodeModel.CENTRAL_TOPIC_TYPE) { - this._actionDispatcher.shrinkBranch([topic.getId()], !topic.areChildrenShrunken()); - } - } - - /** create a NodeModel for the selected node's child and add it via the ActionDispatcher */ - createChildForSelectedNode() { - const nodes = this.getModel().filterSelectedTopics(); - if (nodes.length <= 0) { - // If there are more than one node selected, - $notify($msg('ONE_TOPIC_MUST_BE_SELECTED')); - return; - } - if (nodes.length !== 1) { - // If there are more than one node selected, - $notify($msg('ONLY_ONE_TOPIC_MUST_BE_SELECTED')); - return; - } - - // Add new node ... - const parentTopic = nodes[0]; - const parentTopicId = parentTopic.getId(); - const childModel = this._createChildModel(parentTopic); - - // Execute event ... - this._actionDispatcher.addTopics([childModel], [parentTopicId]); - } - - /** - * @private - */ - _copyNodeProps(sourceModel, targetModel) { - // I don't copy the font size if the target is the source is the central topic. - if (sourceModel.getType() !== INodeModel.CENTRAL_TOPIC_TYPE) { - const fontSize = sourceModel.getFontSize(); - if (fontSize) { - targetModel.setFontSize(fontSize); - } - } - - const fontFamily = sourceModel.getFontFamily(); - if (fontFamily) { - targetModel.setFontFamily(fontFamily); - } - - const fontColor = sourceModel.getFontColor(); - if (fontColor) { - targetModel.setFontColor(fontColor); - } - - const fontWeight = sourceModel.getFontWeight(); - if (fontWeight) { - targetModel.setFontWeight(fontWeight); - } - - const fontStyle = sourceModel.getFontStyle(); - if (fontStyle) { - targetModel.setFontStyle(fontStyle); - } - - const shape = sourceModel.getShapeType(); - if (shape) { - targetModel.setShapeType(shape); - } - - const borderColor = sourceModel.getBorderColor(); - if (borderColor) { - targetModel.setBorderColor(borderColor); - } - - const backgroundColor = sourceModel.getBackgroundColor(); - if (backgroundColor) { - targetModel.setBackgroundColor(backgroundColor); - } - } - - /** - * @private - * @param {Topic} topic the parent topic of the child to create the NodeModel for - * @param {Point} mousePos the mouse position - * @return {NodeModel} the node model for the new child - */ - _createChildModel(topic, mousePos) { - // Create a new node ... - const parentModel = topic.getModel(); - const mindmap = parentModel.getMindmap(); - const childModel = mindmap.createNode(); - - // Create a new node ... - const layoutManager = this._eventBussDispatcher.getLayoutManager(); - const result = layoutManager.predict(topic.getId(), null, mousePos); - childModel.setOrder(result.order); - - const { position } = result; - childModel.setPosition(position.x, position.y); - - this._copyNodeProps(parentModel, childModel); - - return childModel; - } - - addDraggedNode(event, model) { - $assert(event, 'event can not be null'); - $assert(model, 'model can not be null'); - - // Position far from the visual area ... - model.setPosition(1000, 1000); - - this._actionDispatcher.addTopics([model]); - const topic = this.getModel().findTopicById(model.getId()); - - // Simulate a mouse down event to start the dragging ... - topic.fireEvent('mousedown', event); - } - - /** - * creates a sibling or child node of the selected node, if the selected node is the - * central topic - */ - createSiblingForSelectedNode() { - const nodes = this.getModel().filterSelectedTopics(); - if (nodes.length <= 0) { - // If there are no nodes selected, - $notify($msg('ONE_TOPIC_MUST_BE_SELECTED')); - return; - } - if (nodes.length > 1) { - // If there are more than one node selected, - $notify($msg('ONLY_ONE_TOPIC_MUST_BE_SELECTED')); - return; - } - - const topic = nodes[0]; - if (!topic.getOutgoingConnectedTopic()) { - // Central topic and isolated topics .... - // Central topic doesn't have siblings ... - this.createChildForSelectedNode(); - } else { - const parentTopic = topic.getOutgoingConnectedTopic(); - const siblingModel = this._createSiblingModel(topic); - - // Hack: if parent is central topic, add node below not on opposite side. - // This should be done in the layout - if (parentTopic.getType() === INodeModel.CENTRAL_TOPIC_TYPE) { - siblingModel.setOrder(topic.getOrder() + 2); - } - - const parentTopicId = parentTopic.getId(); - this._actionDispatcher.addTopics([siblingModel], [parentTopicId]); - } - } - - /** - * @private - * @param {mindplot.Topic} topic the topic to create the sibling to - * @return {mindplot.NodeModel} the node model of the sibling - */ - _createSiblingModel(topic) { - let result = null; - let model = null; - const parentTopic = topic.getOutgoingConnectedTopic(); - if (parentTopic != null) { - // Create a new node ... - model = topic.getModel(); - const mindmap = model.getMindmap(); - result = mindmap.createNode(); - - // Create a new node ... - const order = topic.getOrder() + 1; - result.setOrder(order); - result.setPosition(10, 10); // Set a dummy position ... - } - - this._copyNodeProps(model, result); - - return result; - } - - /** - * @param {Event} event - */ - showRelPivot(event) { - const nodes = this.getModel().filterSelectedTopics(); - if (nodes.length <= 0) { - // This could not happen ... - $notify($msg('RELATIONSHIP_COULD_NOT_BE_CREATED')); - return; - } - - // Current mouse position .... - const screen = this._workspace.getScreenManager(); - const pos = screen.getWorkspaceMousePosition(event); - - // create a connection ... - this._relPivot.start(nodes[0], pos); - } - - /** @return {{zoom:Number}} the zoom */ - getMindmapProperties() { - const model = this.getModel(); - return { zoom: model.getZoom() }; - } - - /** - * @param {mindplot.Mindmap} model - * @throws will throw an error if mindmapModel is null or undefined - */ - loadMap(model) { - $assert(model, 'mindmapModel can not be null'); - this._mindmap = model; - - // Init layout manager ... - const size = { width: 25, height: 25 }; - const layoutManager = new LayoutManager(model.getCentralTopic().getId(), size); - const me = this; - layoutManager.addEvent('change', (event) => { - const id = event.getId(); - const topic = me.getModel().findTopicById(id); - topic.setPosition(event.getPosition()); - topic.setOrder(event.getOrder()); - }); - this._eventBussDispatcher.setLayoutManager(layoutManager); - - // Building node graph ... - const branches = model.getBranches(); - branches.forEach((branch) => { - const nodeGraph = this.nodeModelToNodeGraph(branch); - nodeGraph.setBranchVisibility(true); - }); - - // Connect relationships ... - const relationships = model.getRelationships(); - relationships.forEach((relationship) => this._relationshipModelToRelationship(relationship)); - - // Place the focus on the Central Topic - const centralTopic = this.getModel().getCentralTopic(); - this.goToNode(centralTopic); - - // Finally, sort the map ... - EventBus.instance.fireEvent(EventBus.events.DoLayout); - - this.fireEvent('loadSuccess'); - } - - /** */ - getMindmap() { - return this._mindmap; - } - - /** */ - undo() { - // @Todo: This is a hack... - this._actionDispatcher._actionRunner.undo(); - } - - /** */ - redo() { - this._actionDispatcher._actionRunner.redo(); - } - - /** */ - isReadOnly() { - return this._options.readOnly; - } - - /** - * @param {mindplot.model.NodeModel} nodeModel - * @return {mindplot.Topic} the topic (extends mindplot.NodeGraph) created to the model - */ - nodeModelToNodeGraph(nodeModel) { - $assert(nodeModel, 'Node model can not be null'); - let children = nodeModel.getChildren().slice(); - children = children.sort((a, b) => a.getOrder() - b.getOrder()); - - const result = this._buildNodeGraph(nodeModel, this.isReadOnly()); - result.setVisibility(false); - - this._workspace.append(result); - children.forEach((child) => { - if ($defined(child)) { - this.nodeModelToNodeGraph(child); - } - }); - return result; - } - - /** - * @private - * @param {mindplot.model.RelationshipModel} model - * @return {mindplot.Relationship} the relationship created to the model - * @throws will throw an error if model is null or undefined - */ - _relationshipModelToRelationship(model) { - $assert(model, 'Node model can not be null'); - - const result = this._buildRelationshipShape(model); - - const sourceTopic = result.getSourceTopic(); - sourceTopic.addRelationship(result); - - const targetTopic = result.getTargetTopic(); - targetTopic.addRelationship(result); - - result.setVisibility(sourceTopic.isVisible() && targetTopic.isVisible()); - - this._workspace.append(result); - return result; - } - - /** - * @param {mindplot.model.RelationshipModel} model - * @return {mindplot.Relationship} the relationship added to the mindmap - */ - addRelationship(model) { - const mindmap = this.getMindmap(); - mindmap.addRelationship(model); - return this._relationshipModelToRelationship(model); - } - - /** - * deletes the relationship from the linked topics, DesignerModel, Workspace and Mindmap - * @param {mindplot.Relationship} rel the relationship to delete - */ - deleteRelationship(rel) { - const sourceTopic = rel.getSourceTopic(); - sourceTopic.deleteRelationship(rel); - - const targetTopic = rel.getTargetTopic(); - targetTopic.deleteRelationship(rel); - - this.getModel().removeRelationship(rel); - this._workspace.removeChild(rel); - - const mindmap = this.getMindmap(); - mindmap.deleteRelationship(rel.getModel()); - } - - /** - * @private - * @param {mindplot.model.RelationshipModel} model - * @return {mindplot.Relationship} the new relationship with events registered - * @throws will throw an error if the target topic cannot be found - */ - _buildRelationshipShape(model) { - const dmodel = this.getModel(); - - const sourceTopicId = model.getFromNode(); - const sourceTopic = dmodel.findTopicById(sourceTopicId); - - const targetTopicId = model.getToNode(); - const targetTopic = dmodel.findTopicById(targetTopicId); - $assert( - targetTopic, - `targetTopic could not be found:${targetTopicId},${dmodel - .getTopics() - .map((e) => e.getId())}`, - ); - - // Build relationship line .... - const result = new Relationship(sourceTopic, targetTopic, model); - const me = this; - - result.addEvent('ontblur', () => { - const topics = me.getModel().filterSelectedTopics(); - const rels = me.getModel().filterSelectedRelationships(); - - if (topics.length === 0 || rels.length === 0) { - me.fireEvent('onblur'); - } - }); - - result.addEvent('ontfocus', () => { - const topics = me.getModel().filterSelectedTopics(); - const rels = me.getModel().filterSelectedRelationships(); - - if (topics.length === 1 || rels.length === 1) { - me.fireEvent('onfocus'); - } - }); - - // Append it to the workspace ... - dmodel.addRelationship(result); - - return result; - } - - /** - * @param {mindplot.Topic} node the topic to remove - * removes the given topic and its children from Workspace, DesignerModel and NodeModel - */ - removeTopic(node) { - if (!node.isCentralTopic()) { - const parent = node._parent; - node.disconnect(this._workspace); - - // remove children - while (node.getChildren().length > 0) { - this.removeTopic(node.getChildren()[0]); - } - - this._workspace.removeChild(node); - this.getModel().removeTopic(node); - - // Delete this node from the model... - const model = node.getModel(); - model.deleteNode(); - - if ($defined(parent)) { - this.goToNode(parent); - } - } - } - - /** - * @private - */ - _resetEdition() { - const screenManager = this._workspace.getScreenManager(); - screenManager.fireEvent('update'); - screenManager.fireEvent('mouseup'); - this._relPivot.dispose(); - } - - /** */ - deleteSelectedEntities() { - // Is there some action in progress ?. - this._resetEdition(); - - const topics = this.getModel().filterSelectedTopics(); - const relation = this.getModel().filterSelectedRelationships(); - if (topics.length <= 0 && relation.length <= 0) { - // If there are more than one node selected, - $notify($msg('ENTITIES_COULD_NOT_BE_DELETED')); - return; - } - if (topics.length === 1 && topics[0].isCentralTopic()) { - $notify($msg('CENTRAL_TOPIC_CAN_NOT_BE_DELETED')); - return; - } - - // If the central topic has been selected, I must filter ir - const topicIds = topics - .filter((topic) => !topic.isCentralTopic()) - .map((topic) => topic.getId()); - - const relIds = relation.map((rel) => rel.getId()); - - // Finally delete the topics ... - if (topicIds.length > 0 || relIds.length > 0) { - this._actionDispatcher.deleteEntities(topicIds, relIds); - } - } - - /** */ - changeFontFamily(font) { - const topicsIds = this.getModel().filterTopicsIds(); - if (topicsIds.length > 0) { - this._actionDispatcher.changeFontFamilyToTopic(topicsIds, font); - } - } - - /** */ - changeFontStyle() { - const topicsIds = this.getModel().filterTopicsIds(); - if (topicsIds.length > 0) { - this._actionDispatcher.changeFontStyleToTopic(topicsIds); - } - } - - /** */ - changeFontColor(color) { - $assert(color, 'color can not be null'); - - const topicsIds = this.getModel().filterTopicsIds(); - if (topicsIds.length > 0) { - this._actionDispatcher.changeFontColorToTopic(topicsIds, color); - } - } - - /** */ - changeBackgroundColor(color) { - const validateFunc = (topic) => topic.getShapeType() !== TopicShape.LINE; - const validateError = 'Color can not be set to line topics.'; - - const topicsIds = this.getModel().filterTopicsIds(validateFunc, validateError); - if (topicsIds.length > 0) { - this._actionDispatcher.changeBackgroundColorToTopic(topicsIds, color); - } - } - - /** */ - changeBorderColor(color) { - const validateFunc = (topic) => topic.getShapeType() !== TopicShape.LINE; - const validateError = 'Color can not be set to line topics.'; - const topicsIds = this.getModel().filterTopicsIds(validateFunc, validateError); - if (topicsIds.length > 0) { - this._actionDispatcher.changeBorderColorToTopic(topicsIds, color); - } - } - - /** */ - changeFontSize(size) { - const topicsIds = this.getModel().filterTopicsIds(); - if (topicsIds.length > 0) { - this._actionDispatcher.changeFontSizeToTopic(topicsIds, size); - } - } - - /** */ - changeTopicShape(shape) { - const validateFunc = (topic) => !( - topic.getType() === INodeModel.CENTRAL_TOPIC_TYPE && shape === TopicShape.LINE - ); - - const validateError = 'Central Topic shape can not be changed to line figure.'; - const topicsIds = this.getModel().filterTopicsIds(validateFunc, validateError); - if (topicsIds.length > 0) { - this._actionDispatcher.changeShapeTypeToTopic(topicsIds, shape); - } - } - - /** */ - changeFontWeight() { - const topicsIds = this.getModel().filterTopicsIds(); - if (topicsIds.length > 0) { - this._actionDispatcher.changeFontWeightToTopic(topicsIds); - } - } - - /** */ - addIconType(iconType) { - const topicsIds = this.getModel().filterTopicsIds(); - if (topicsIds.length > 0) { - this._actionDispatcher.addFeatureToTopic(topicsIds[0], TopicFeature.Icon.id, { - id: iconType, - }); - } - } - - /** - * lets the selected topic open the link editor where the user can define or modify an - * existing link - */ - addLink() { - const model = this.getModel(); - const topic = model.selectedTopic(); - if (topic) { - topic.showLinkEditor(); - this.onObjectFocusEvent(); - } - } - - /** */ - addNote() { - const model = this.getModel(); - const topic = model.selectedTopic(); - if (topic) { - topic.showNoteEditor(); - this.onObjectFocusEvent(); - } - } - - /** - * @param {mindplot.Topic} node - * sets the focus to the given node - */ - goToNode(node) { - node.setOnFocus(true); - this.onObjectFocusEvent(node); - } - - /** @return {mindplot.Workspace} */ - getWorkSpace() { - return this._workspace; - } -} - -export default Designer; diff --git a/packages/mindplot/src/components/DesignerKeyboard.js b/packages/mindplot/src/components/DesignerKeyboard.js deleted file mode 100644 index 0c8bae05..00000000 --- a/packages/mindplot/src/components/DesignerKeyboard.js +++ /dev/null @@ -1,432 +0,0 @@ -/* - * Copyright [2015] [wisemapping] - * - * Licensed under WiseMapping Public License, Version 1.0 (the "License"). - * It is basically the Apache License, Version 2.0 (the "License") plus the - * "powered by wisemapping" text requirement on every single page; - * you may not use this file except in compliance with the License. - * You may obtain a copy of the license at - * - * http://www.wisemapping.org/license - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import $ from 'jquery'; -import { $assert } from '@wisemapping/core-js'; -import Keyboard from './Keyboard'; - -class DesignerKeyboard extends Keyboard { - constructor(designer) { - super(designer); - $assert(designer, 'designer can not be null'); - this._registerEvents(designer); - } - - _registerEvents(designer) { - // Try with the keyboard .. - const model = designer.getModel(); - this.addShortcut( - ['backspace'], (event) => { - event.preventDefault(); - event.stopPropagation(); - designer.deleteSelectedEntities(); - }, - ); - this.addShortcut( - ['space'], () => { - designer.shrinkSelectedBranch(); - }, - ); - this.addShortcut( - ['f2'], (event) => { - event.stopPropagation(); - event.preventDefault(); - const node = model.selectedTopic(); - if (node) { - node.showTextEditor(); - } - }, - ); - this.addShortcut( - ['del'], (event) => { - designer.deleteSelectedEntities(); - event.preventDefault(); - event.stopPropagation(); - }, - ); - this.addShortcut( - ['enter'], () => { - designer.createSiblingForSelectedNode(); - }, - ); - this.addShortcut( - ['insert'], (event) => { - designer.createChildForSelectedNode(); - event.preventDefault(); - event.stopPropagation(); - }, - ); - this.addShortcut( - ['tab'], (event) => { - designer.createChildForSelectedNode(); - event.preventDefault(); - event.stopPropagation(); - }, - ); - this.addShortcut( - ['meta+enter'], (event) => { - event.preventDefault(); - event.stopPropagation(); - designer.createChildForSelectedNode(); - }, - ); - this.addShortcut( - ['ctrl+z', 'meta+z'], (event) => { - event.preventDefault(event); - event.stopPropagation(); - designer.undo(); - }, - ); - this.addShortcut( - ['ctrl+c', 'meta+c'], (event) => { - event.preventDefault(event); - event.stopPropagation(); - designer.copyToClipboard(); - }, - ); - this.addShortcut( - ['ctrl+v', 'meta+v'], (event) => { - event.preventDefault(event); - event.stopPropagation(); - designer.pasteClipboard(); - }, - ); - this.addShortcut( - ['ctrl+shift+z', 'meta+shift+z', 'ctrl+y', 'meta+y'], (event) => { - event.preventDefault(); - event.stopPropagation(); - designer.redo(); - }, - ); - this.addShortcut( - ['ctrl+a', 'meta+a'], (event) => { - event.preventDefault(); - event.stopPropagation(); - designer.selectAll(); - }, - ); - this.addShortcut( - ['ctrl+b', 'meta+b'], (event) => { - event.preventDefault(); - event.stopPropagation(); - - designer.changeFontWeight(); - }, - ); - this.addShortcut( - ['ctrl+s', 'meta+s'], (event) => { - event.preventDefault(); - event.stopPropagation(); - $(document).find('#save').trigger('click'); - }, - ); - this.addShortcut( - ['ctrl+i', 'meta+i'], (event) => { - event.preventDefault(); - event.stopPropagation(); - - designer.changeFontStyle(); - }, - ); - this.addShortcut( - ['ctrl+shift+a', 'meta+shift+a'], (event) => { - event.preventDefault(); - event.stopPropagation(); - - designer.deselectAll(); - }, - ); - this.addShortcut( - ['meta+=', 'ctrl+='], (event) => { - event.preventDefault(); - event.stopPropagation(); - - designer.zoomIn(); - }, - ); - this.addShortcut( - ['meta+-', 'ctrl+-'], (event) => { - event.preventDefault(); - event.stopPropagation(); - - designer.zoomOut(); - }, - ); - const me = this; - this.addShortcut( - 'right', (event) => { - const node = model.selectedTopic(); - if (node) { - if (node.isCentralTopic()) { - me._goToSideChild(designer, node, 'RIGHT'); - } else if (node.getPosition().x < 0) { - me._goToParent(designer, node); - } else if (!node.areChildrenShrunken()) { - me._goToChild(designer, node); - } - } else { - const centralTopic = model.getCentralTopic(); - me._goToNode(designer, centralTopic); - } - event.preventDefault(); - event.stopPropagation(); - }, - ); - this.addShortcut( - 'left', (event) => { - const node = model.selectedTopic(); - if (node) { - if (node.isCentralTopic()) { - me._goToSideChild(designer, node, 'LEFT'); - } else if (node.getPosition().x > 0) { - me._goToParent(designer, node); - } else if (!node.areChildrenShrunken()) { - me._goToChild(designer, node); - } - } else { - const centralTopic = model.getCentralTopic(); - me._goToNode(designer, centralTopic); - } - event.preventDefault(); - event.stopPropagation(); - }, - ); - this.addShortcut( - 'up', (event) => { - const node = model.selectedTopic(); - if (node) { - if (!node.isCentralTopic()) { - me._goToBrother(designer, node, 'UP'); - } - } else { - const centralTopic = model.getCentralTopic(); - me._goToNode(designer, centralTopic); - } - event.preventDefault(); - event.stopPropagation(); - }, - ); - this.addShortcut( - 'down', (event) => { - const node = model.selectedTopic(); - if (node) { - if (!node.isCentralTopic()) { - me._goToBrother(designer, node, 'DOWN'); - } - } else { - const centralTopic = model.getCentralTopic(); - me._goToNode(designer, centralTopic); - } - event.preventDefault(); - event.stopPropagation(); - }, - ); - const excludes = ['esc', 'escape', 'f1', 'f3', 'f4', 'f5', 'f6', 'f7', 'f8', 'f9', 'f10', 'f11', 'f12']; - - $(document).on('keypress', (event) => { - let keyCode; - // Firefox doesn't skip special keys for keypress event... - if (event.key && excludes.includes(event.key.toLowerCase())) { - return; - } - // Sometimes Firefox doesn't contain keyCode value - if (event.key && event.keyCode === 0) { - keyCode = event.charCode; - } else { - keyCode = event.keyCode; - } - - const specialKey = $.hotkeys.specialKeys[keyCode]; - if (['enter', 'capslock'].indexOf(specialKey) === -1 && !$.hotkeys.shiftNums[keyCode]) { - const nodes = designer.getModel().filterSelectedTopics(); - if (nodes.length > 0) { - // If a modifier is press, the key selected must be ignored. - const pressKey = String.fromCharCode(keyCode); - if (event.ctrlKey || event.altKey || event.metaKey) { - return; - } - nodes[0].showTextEditor(pressKey); - event.stopPropagation(); - } - } - }); - } - - _goToBrother(designer, node, direction) { - const parent = node.getParent(); - if (parent) { - const brothers = parent.getChildren(); - - let target = node; - const { y } = node.getPosition(); - const { x } = node.getPosition(); - let dist = null; - for (let i = 0; i < brothers.length; i++) { - const sameSide = (x * brothers[i].getPosition().x) >= 0; - if (brothers[i] !== node && sameSide) { - const brother = brothers[i]; - const brotherY = brother.getPosition().y; - if (direction === 'DOWN' && brotherY > y) { - let distancia = y - brotherY; - if (distancia < 0) { - distancia *= (-1); - } - if (dist == null || dist > distancia) { - dist = distancia; - target = brothers[i]; - } - } else if (direction === 'UP' && brotherY < y) { - let distance = y - brotherY; - if (distance < 0) { - distance *= (-1); - } - if (dist == null || dist > distance) { - dist = distance; - target = brothers[i]; - } - } - } - } - this._goToNode(designer, target); - } - } - - _goToSideChild(designer, node, side) { - const children = node.getChildren(); - if (children.length > 0) { - let target = children[0]; - let top = null; - for (let i = 0; i < children.length; i++) { - const child = children[i]; - const childY = child.getPosition().y; - if (side === 'LEFT' && child.getPosition().x < 0) { - if (top == null || childY < top) { - target = child; - top = childY; - } - } - if (side === 'RIGHT' && child.getPosition().x > 0) { - if (top == null || childY < top) { - target = child; - top = childY; - } - } - } - - this._goToNode(designer, target); - } - } - - _goToParent(designer, node) { - const parent = node.getParent(); - if (parent) { - this._goToNode(designer, parent); - } - } - - _goToChild(designer, node) { - const children = node.getChildren(); - if (children.length > 0) { - let target = children[0]; - let top = target.getPosition().y; - for (let i = 0; i < children.length; i++) { - const child = children[i]; - if (child.getPosition().y < top) { - top = child.getPosition().y; - target = child; - } - } - this._goToNode(designer, target); - } - } - - _goToNode(designer, node) { - // First deselect all the nodes ... - designer.deselectAll(); - - // Give focus to the selected node.... - node.setOnFocus(true); - } -} - -DesignerKeyboard.specialKeys = { - 8: 'backspace', - 9: 'tab', - 10: 'return', - 13: 'enter', - 16: 'shift', - 17: 'ctrl', - 18: 'alt', - 19: 'pause', - 20: 'capslock', - 27: 'esc', - 32: 'space', - 33: 'pageup', - 34: 'pagedown', - 35: 'end', - 36: 'home', - 37: 'left', - 38: 'up', - 39: 'right', - 40: 'down', - 45: 'insert', - 46: 'del', - 96: '0', - 97: '1', - 98: '2', - 99: '3', - 100: '4', - 101: '5', - 102: '6', - 103: '7', - 104: '8', - 105: '9', - 106: '*', - 107: '+', - 109: '-', - 110: '.', - 111: '/', - 112: 'f1', - 113: 'f2', - 114: 'f3', - 115: 'f4', - 116: 'f5', - 117: 'f6', - 118: 'f7', - 119: 'f8', - 120: 'f9', - 121: 'f10', - 122: 'f11', - 123: 'f12', - 144: 'numlock', - 145: 'scroll', - 186: ';', - 191: '/', - 220: '\\', - 222: "'", - 224: 'meta', -}; - -DesignerKeyboard.register = function register(designer) { - this._instance = new DesignerKeyboard(designer); -}; - -DesignerKeyboard.getInstance = function getInstance() { - return this._instance; -}; - -export default DesignerKeyboard; diff --git a/packages/mindplot/src/components/DesignerModel.js b/packages/mindplot/src/components/DesignerModel.js deleted file mode 100644 index cce4674a..00000000 --- a/packages/mindplot/src/components/DesignerModel.js +++ /dev/null @@ -1,181 +0,0 @@ -/* - * Copyright [2015] [wisemapping] - * - * Licensed under WiseMapping Public License, Version 1.0 (the "License"). - * It is basically the Apache License, Version 2.0 (the "License") plus the - * "powered by wisemapping" text requirement on every single page; - * you may not use this file except in compliance with the License. - * You may obtain a copy of the license at - * - * http://www.wisemapping.org/license - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import { $assert, $defined } from '@wisemapping/core-js'; -import Events from './Events'; -import { $notify } from './widget/ToolbarNotifier'; - -class DesignerModel extends Events { - constructor(options) { - super(); - this._zoom = options.zoom; - this._topics = []; - this._relationships = []; - } - - /** @return {Number} zoom between 0.3 (largest text) and 1.9 */ - getZoom() { - return this._zoom; - } - - /** @param {Number} zoom number between 0.3 and 1.9 to set the zoom to */ - setZoom(zoom) { - this._zoom = zoom; - } - - /** @return {@link mindplot.Topic[]} all topics */ - getTopics() { - return this._topics; - } - - /** @return {mindplot.Relationship[]} all relationships */ - getRelationships() { - return this._relationships; - } - - /** @return {mindplot.CentralTopic} the central topic */ - getCentralTopic() { - const topics = this.getTopics(); - return topics[0]; - } - - /** @return {mindplot.Topic[]} selected topics */ - filterSelectedTopics() { - const result = []; - for (let i = 0; i < this._topics.length; i++) { - if (this._topics[i].isOnFocus()) { - result.push(this._topics[i]); - } - } - return result; - } - - /** - * @return {mindplot.Relationship[]} selected relationships - */ - filterSelectedRelationships() { - const result = []; - for (let i = 0; i < this._relationships.length; i++) { - if (this._relationships[i].isOnFocus()) { - result.push(this._relationships[i]); - } - } - return result; - } - - /** - * @return {Array.} all topics and relationships - */ - getEntities() { - let result = [].concat(this._topics); - result = result.concat(this._relationships); - return result; - } - - /** - * removes occurrences of the given topic from the topic array - * @param {mindplot.Topic} topic the topic to remove - */ - removeTopic(topic) { - $assert(topic, 'topic can not be null'); - this._topics = this._topics.filter((t) => t !== topic); - } - - /** - * removes occurrences of the given relationship from the relationship array - * @param {mindplot.Relationship} rel the relationship to remove - */ - removeRelationship(rel) { - $assert(rel, 'rel can not be null'); - this._relationships = this._relationships.filter((r) => r !== rel); - } - - /** - * adds the given topic to the topic array - * @param {mindplot.Topic} topic the topic to add - * @throws will throw an error if topic is null or undefined - * @throws will throw an error if the topic's id is not a number - */ - addTopic(topic) { - $assert(topic, 'topic can not be null'); - $assert(typeof topic.getId() === 'number', `id is not a number:${topic.getId()}`); - this._topics.push(topic); - } - - /** - * adds the given relationship to the relationship array - * @param {mindplot.Relationship} rel the relationship to add - * @throws will throw an error if rel is null or undefined - */ - addRelationship(rel) { - $assert(rel, 'rel can not be null'); - this._relationships.push(rel); - } - - /** - * @param {Function=} validate a function to validate nodes - * @param {String=} errorMsg an error message to display if the validation fails - * @return {String} returns an array of the selected (and, if applicable, valid) topics' ids - */ - filterTopicsIds(validate, errorMsg) { - const result = []; - const topics = this.filterSelectedTopics(); - - let isValid = true; - for (let i = 0; i < topics.length; i++) { - const selectedNode = topics[i]; - if ($defined(validate)) { - isValid = validate(selectedNode); - } - - // Add node only if it's valid. - if (isValid) { - result.push(selectedNode.getId()); - } else { - $notify(errorMsg); - } - } - return result; - } - - /** - * @return {mindplot.Topic} the first selected topic if one or more are found by the - * filterSelectedTopics function, null otherwise - */ - selectedTopic() { - const topics = this.filterSelectedTopics(); - return (topics.length > 0) ? topics[0] : null; - } - - /** - * @param {String} id the id of the topic to be retrieved - * @return {mindplot.Topic} the topic with the respective id - */ - findTopicById(id) { - let result = null; - for (let i = 0; i < this._topics.length; i++) { - const topic = this._topics[i]; - if (topic.getId() === id) { - result = topic; - break; - } - } - return result; - } -} - -export default DesignerModel; diff --git a/packages/mindplot/src/components/Events.js b/packages/mindplot/src/components/Events.js deleted file mode 100644 index ddd48836..00000000 --- a/packages/mindplot/src/components/Events.js +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright [2015] [wisemapping] - * - * Licensed under WiseMapping Public License, Version 1.0 (the "License"). - * It is basically the Apache License, Version 2.0 (the "License") plus the - * "powered by wisemapping" text requirement on every single page; - * you may not use this file except in compliance with the License. - * You may obtain a copy of the license at - * - * http://www.wisemapping.org/license - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -class Events { - constructor() { - this.$events = {}; - } - - static _removeOn(string) { - return string.replace(/^on([A-Z])/, (full, first) => first.toLowerCase()); - } - - addEvent(typeName, fn, internal) { - const type = Events._removeOn(typeName); - - // Add function had not been added yet - const funByType = this.$events[type] ? this.$events[type] : []; - if (!funByType.includes(fn)) { - funByType.push(fn); - this.$events[type] = funByType; - } - - // Mark reference ... - // eslint-disable-next-line no-param-reassign - fn.internal = Boolean(internal); - return this; - } - - fireEvent(typeName, eventArgs, delay) { - const type = Events._removeOn(typeName); - const events = this.$events[type]; - if (!events) return this; - - const args = Array.isArray(eventArgs) ? eventArgs : [eventArgs]; - events.forEach(((fn) => { - if (delay) { - fn.delay(delay, this, args); - } else { - fn.apply(this, args); - } - })); - return this; - } - - removeEvent(typeName, fn) { - const type = Events._removeOn(typeName); - const events = this.$events[type]; - if (events && !fn.internal) { - const index = events.indexOf(fn); - if (index !== -1) events.splice(index, 1); - } - return this; - } -} - -export default Events; diff --git a/packages/mindplot/src/components/Keyboard.js b/packages/mindplot/src/components/Keyboard.js deleted file mode 100644 index 30b97144..00000000 --- a/packages/mindplot/src/components/Keyboard.js +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright [2015] [wisemapping] - * - * Licensed under WiseMapping Public License, Version 1.0 (the "License"). - * It is basically the Apache License, Version 2.0 (the "License") plus the - * "powered by wisemapping" text requirement on every single page; - * you may not use this file except in compliance with the License. - * You may obtain a copy of the license at - * - * http://www.wisemapping.org/license - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import $ from 'jquery'; - -class Keyboard { - addShortcut(shortcuts, callback) { - const shortcutsArray = Array.isArray(shortcuts) ? shortcuts : [shortcuts]; - shortcutsArray.forEach((shortcut) => { - $(document).bind('keydown', shortcut, callback); - }); - } -} - -export default Keyboard; diff --git a/packages/mindplot/src/components/LocalStorageManager.js b/packages/mindplot/src/components/LocalStorageManager.js deleted file mode 100644 index ce8b28bb..00000000 --- a/packages/mindplot/src/components/LocalStorageManager.js +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright [2015] [wisemapping] - * - * Licensed under WiseMapping Public License, Version 1.0 (the "License"). - * It is basically the Apache License, Version 2.0 (the "License") plus the - * "powered by wisemapping" text requirement on every single page; - * you may not use this file except in compliance with the License. - * You may obtain a copy of the license at - * - * http://www.wisemapping.org/license - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import $ from 'jquery'; -import PersistenceManager from './PersistenceManager'; - -class LocalStorageManager extends PersistenceManager { - constructor(documentUrl, forceLoad) { - super(); - this.documentUrl = documentUrl; - this.forceLoad = forceLoad; - } - - saveMapXml(mapId, mapXml, pref, saveHistory, events) { - localStorage.setItem(`${mapId}-xml`, mapXml); - } - - discardChanges(mapId) { - localStorage.removeItem(`${mapId}-xml`); - } - - loadMapDom(mapId) { - let xml = localStorage.getItem(`${mapId}-xml`); - if (xml == null || this.forceLoad) { - $.ajax({ - url: this.documentUrl.replace('{id}', mapId), - headers: { 'Content-Type': 'text/plain', Accept: 'application/xml' }, - type: 'get', - dataType: 'text', - async: false, - success(response) { - xml = response; - }, - }); - // If I could not load it from a file, hard code one. - if (xml == null) { - throw new Error('Map could not be loaded'); - } - } - - return $.parseXML(xml); - } - - unlockMap(mindmap) { - // Ignore, no implementation required ... - } -} - -export default LocalStorageManager; diff --git a/packages/mindplot/src/components/MainTopic.js b/packages/mindplot/src/components/MainTopic.js deleted file mode 100644 index 12c3f37c..00000000 --- a/packages/mindplot/src/components/MainTopic.js +++ /dev/null @@ -1,158 +0,0 @@ -/* - * Copyright [2015] [wisemapping] - * - * Licensed under WiseMapping Public License, Version 1.0 (the "License"). - * It is basically the Apache License, Version 2.0 (the "License") plus the - * "powered by wisemapping" text requirement on every single page; - * you may not use this file except in compliance with the License. - * You may obtain a copy of the license at - * - * http://www.wisemapping.org/license - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import { $assert, $defined } from '@wisemapping/core-js'; -import { Point, Group } from '@wisemapping/web2d'; - -import Topic from './Topic'; -import { TopicShape } from './model/INodeModel'; -import Shape from './util/Shape'; - -class MainTopic extends Topic { - /** - * @extends mindplot.Topic - * @constructs - * @param model - * @param options - */ - constructor(model, options) { - super(model, options); - this.INNER_RECT_ATTRIBUTES = { stroke: '0.5 solid #009900' }; - } - - _buildDragShape() { - const innerShape = this._buildShape(this.INNER_RECT_ATTRIBUTES, this.getShapeType()); - const size = this.getSize(); - innerShape.setSize(size.width, size.height); - innerShape.setPosition(0, 0); - innerShape.setOpacity(0.5); - innerShape.setCursor('default'); - innerShape.setVisibility(true); - - const brColor = this.getBorderColor(); - innerShape.setAttribute('strokeColor', brColor); - - const bgColor = this.getBackgroundColor(); - innerShape.setAttribute('fillColor', bgColor); - - // Create group ... - const groupAttributes = { - width: 100, - height: 100, - coordSizeWidth: 100, - coordSizeHeight: 100, - }; - const group = new Group(groupAttributes); - group.append(innerShape); - - // Add Text ... - if (this.getShapeType() !== TopicShape.IMAGE) { - const textShape = this._buildTextShape(true); - const text = this.getText(); - textShape.setText(text); - textShape.setOpacity(0.5); - group.append(textShape); - } - return group; - } - - /** */ - // eslint-disable-next-line no-unused-vars - updateTopicShape(targetTopic, workspace) { - // Change figure based on the connected topic ... - const model = this.getModel(); - let shapeType = model.getShapeType(); - if (!targetTopic.isCentralTopic()) { - if (!$defined(shapeType)) { - // Get the real shape type ... - shapeType = this.getShapeType(); - this._setShapeType(shapeType, false); - } - } - } - - /** */ - disconnect(workspace) { - super.disconnect(workspace); - const model = this.getModel(); - let shapeType = model.getShapeType(); - if (!$defined(shapeType)) { - // Change figure ... - shapeType = this.getShapeType(); - this._setShapeType(TopicShape.ROUNDED_RECT, false); - } - const innerShape = this.getInnerShape(); - innerShape.setVisibility(true); - } - - _updatePositionOnChangeSize(oldSize, newSize) { - const xOffset = Math.round((newSize.width - oldSize.width) / 2); - const pos = this.getPosition(); - if ($defined(pos)) { - if (pos.x > 0) { - pos.x += xOffset; - } else { - pos.x -= xOffset; - } - this.setPosition(pos); - } - } - - /** */ - workoutIncomingConnectionPoint(sourcePosition) { - return Shape.workoutIncomingConnectionPoint(this, sourcePosition); - } - - /** */ - workoutOutgoingConnectionPoint(targetPosition) { - $assert(targetPosition, 'targetPoint can not be null'); - const pos = this.getPosition(); - const isAtRight = Shape.isAtRight(targetPosition, pos); - const size = this.getSize(); - - let result; - if (this.getShapeType() === TopicShape.LINE) { - result = new Point(); - const groupPosition = this._elem2d.getPosition(); - const innerShareSize = this.getInnerShape().getSize(); - - if (innerShareSize) { - const magicCorrectionNumber = 0.3; - if (!isAtRight) { - result.x = groupPosition.x + innerShareSize.width - magicCorrectionNumber; - } else { - result.x = groupPosition.x + magicCorrectionNumber; - } - result.y = groupPosition.y + innerShareSize.height; - } else { - // Hack: When the size has not being defined. This is because the node has not being added. - // Try to do our best ... - if (!isAtRight) { - result.x = pos.x + size.width / 2; - } else { - result.x = pos.x - size.width / 2; - } - result.y = pos.y + size.height / 2; - } - } else { - result = Shape.calculateRectConnectionPoint(pos, size, isAtRight, true); - } - return result; - } -} - -export default MainTopic; diff --git a/packages/mindplot/src/components/NodeGraph.js b/packages/mindplot/src/components/NodeGraph.js deleted file mode 100644 index a57ede5a..00000000 --- a/packages/mindplot/src/components/NodeGraph.js +++ /dev/null @@ -1,188 +0,0 @@ -/* - * Copyright [2015] [wisemapping] - * - * Licensed under WiseMapping Public License, Version 1.0 (the "License"). - * It is basically the Apache License, Version 2.0 (the "License") plus the - * "powered by wisemapping" text requirement on every single page; - * you may not use this file except in compliance with the License. - * You may obtain a copy of the license at - * - * http://www.wisemapping.org/license - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import { $assert } from '@wisemapping/core-js'; -import TopicConfig from './TopicConfig'; -import DragTopic from './DragTopic'; - -class NodeGraph { - /** - * @constructs - * @param {mindplot.model.NodeModel} nodeModel - * @param {Object} options - * @throws will throw an error if nodeModel is null or undefined - */ - constructor(nodeModel, options) { - $assert(nodeModel, 'model can not be null'); - - this._options = options; - this._mouseEvents = true; - this.setModel(nodeModel); - this._onFocus = false; - this._size = { width: 50, height: 20 }; - } - - /** @return true if option is set to read-only */ - isReadOnly() { - return this._options.readOnly; - } - - /** @return model type */ - getType() { - const model = this.getModel(); - return model.getType(); - } - - /** - * @param {String} id - * @throws will throw an error if the topic id is not a number - */ - setId(id) { - $assert(typeof id === 'number', `id is not a number:${id}`); - this.getModel().setId(id); - } - - _set2DElement(elem2d) { - this._elem2d = elem2d; - } - - /** - * @return 2D element - * @throws will throw an error if the element is null or undefined within node graph - */ - get2DElement() { - $assert(this._elem2d, 'NodeGraph has not been initialized properly'); - return this._elem2d; - } - - /** @abstract */ - setPosition(point, fireEvent) { - throw new Error('Unsupported operation'); - } - - /** */ - addEvent(type, listener) { - const elem = this.get2DElement(); - elem.addEvent(type, listener); - } - - /** */ - removeEvent(type, listener) { - const elem = this.get2DElement(); - elem.removeEvent(type, listener); - } - - /** */ - fireEvent(type, event) { - const elem = this.get2DElement(); - elem.trigger(type, event); - } - - /** */ - setMouseEventsEnabled(isEnabled) { - this._mouseEvents = isEnabled; - } - - /** */ - isMouseEventsEnabled() { - return this._mouseEvents; - } - - /** @return {Object} size */ - getSize() { - return this._size; - } - - /** @param {Object} size */ - setSize(size) { - this._size.width = parseInt(size.width, 10); - this._size.height = parseInt(size.height, 10); - } - - /** - * @return {mindplot.model.NodeModel} the node model - */ - getModel() { - $assert(this._model, 'Model has not been initialized yet'); - return this._model; - } - - /** - * @param {mindplot.NodeModel} model the node model - * @throws will throw an error if model is null or undefined - */ - setModel(model) { - $assert(model, 'Model can not be null'); - this._model = model; - } - - /** */ - getId() { - return this._model.getId(); - } - - /** */ - setOnFocus(focus) { - if (this._onFocus !== focus) { - this._onFocus = focus; - const outerShape = this.getOuterShape(); - if (focus) { - outerShape.setFill(TopicConfig.OUTER_SHAPE_ATTRIBUTES_FOCUS.fillColor); - outerShape.setOpacity(1); - } else { - outerShape.setFill(TopicConfig.OUTER_SHAPE_ATTRIBUTES.fillColor); - outerShape.setOpacity(0); - } - this.setCursor('move'); - - // In any case, always try to hide the editor ... - this.closeEditors(); - - // Fire event ... - this.fireEvent(focus ? 'ontfocus' : 'ontblur', this); - } - } - - /** @return {Boolean} true if the node graph is on focus */ - isOnFocus() { - return this._onFocus; - } - - /** */ - dispose(workspace) { - this.setOnFocus(false); - workspace.removeChild(this); - } - - /** */ - createDragNode(layoutManager) { - const dragShape = this._buildDragShape(); - return new DragTopic(dragShape, this, layoutManager); - } - - _buildDragShape() { - $assert(false, '_buildDragShape must be implemented by all nodes.'); - } - - /** */ - getPosition() { - const model = this.getModel(); - return model.getPosition(); - } -} - -export default NodeGraph; diff --git a/packages/mindplot/src/components/PersistenceManager.js b/packages/mindplot/src/components/PersistenceManager.js deleted file mode 100644 index 8344a7b3..00000000 --- a/packages/mindplot/src/components/PersistenceManager.js +++ /dev/null @@ -1,80 +0,0 @@ -/* eslint-disable no-unused-vars */ -/* - * Copyright [2015] [wisemapping] - * - * Licensed under WiseMapping Public License, Version 1.0 (the "License"). - * It is basically the Apache License, Version 2.0 (the "License") plus the - * "powered by wisemapping" text requirement on every single page; - * you may not use this file except in compliance with the License. - * You may obtain a copy of the license at - * - * http://www.wisemapping.org/license - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import { $assert, innerXML } from '@wisemapping/core-js'; -import XMLSerializerFactory from './persistence/XMLSerializerFactory'; - -class PersistenceManager { - save(mindmap, editorProperties, saveHistory, events, sync) { - $assert(mindmap, 'mindmap can not be null'); - $assert(editorProperties, 'editorProperties can not be null'); - - const mapId = mindmap.getId(); - $assert(mapId, 'mapId can not be null'); - - const serializer = XMLSerializerFactory.getSerializerFromMindmap(mindmap); - const domMap = serializer.toXML(mindmap); - const mapXml = innerXML(domMap); - - const pref = JSON.stringify(editorProperties); - try { - this.saveMapXml(mapId, mapXml, pref, saveHistory, events, sync); - } catch (e) { - console.error(e); - events.onError(this._buildError()); - } - } - - load(mapId) { - $assert(mapId, 'mapId can not be null'); - const domDocument = this.loadMapDom(mapId); - return PersistenceManager.loadFromDom(mapId, domDocument); - } - - discardChanges(mapId) { - throw new Error('Method must be implemented'); - } - - loadMapDom(mapId) { - throw new Error('Method must be implemented'); - } - - saveMapXml(mapId, mapXml, pref, saveHistory, events, sync) { - throw new Error('Method must be implemented'); - } - - unlockMap(mindmap) { - throw new Error('Method must be implemented'); - } -} - -PersistenceManager.init = (instance) => { - PersistenceManager._instance = instance; -}; - -PersistenceManager.getInstance = () => PersistenceManager._instance; - -PersistenceManager.loadFromDom = function loadFromDom(mapId, mapDom) { - $assert(mapId, 'mapId can not be null'); - $assert(mapDom, 'mapDom can not be null'); - - const serializer = XMLSerializerFactory.getSerializerFromDocument(mapDom); - return serializer.loadFromDom(mapDom, mapId); -}; - -export default PersistenceManager; diff --git a/packages/mindplot/src/components/Relationship.js b/packages/mindplot/src/components/Relationship.js deleted file mode 100644 index 04c77472..00000000 --- a/packages/mindplot/src/components/Relationship.js +++ /dev/null @@ -1,335 +0,0 @@ -/* - * Copyright [2015] [wisemapping] - * - * Licensed under WiseMapping Public License, Version 1.0 (the "License"). - * It is basically the Apache License, Version 2.0 (the "License") plus the - * "powered by wisemapping" text requirement on every single page; - * you may not use this file except in compliance with the License. - * You may obtain a copy of the license at - * - * http://www.wisemapping.org/license - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import { Arrow, Point } from '@wisemapping/web2d'; -import { $assert, $defined } from '@wisemapping/core-js'; - -import ConnectionLine from './ConnectionLine'; -import ControlPoint from './ControlPoint'; - -import INodeModel from './model/INodeModel'; - -import Shape from './util/Shape'; - -class Relationship extends ConnectionLine { - constructor(sourceNode, targetNode, model) { - $assert(sourceNode, 'sourceNode can not be null'); - $assert(targetNode, 'targetNode can not be null'); - - super(sourceNode, targetNode, model.getLineType()); - this.setModel(model); - - const strokeColor = Relationship.getStrokeColor(); - - this._line2d.setIsSrcControlPointCustom(false); - this._line2d.setIsDestControlPointCustom(false); - this._line2d.setCursor('pointer'); - this._line2d.setStroke(1, 'solid', strokeColor); - this._line2d.setDashed(4, 2); - this._focusShape = this._createLine(this.getLineType(), ConnectionLine.SIMPLE_CURVED); - this._focusShape.setStroke(2, 'solid', '#3f96ff'); - - const ctrlPoints = this._line2d.getControlPoints(); - this._focusShape.setSrcControlPoint(ctrlPoints[0]); - this._focusShape.setDestControlPoint(ctrlPoints[1]); - this._focusShape.setVisibility(false); - this._onFocus = false; - this._isInWorkspace = false; - this._controlPointsController = new ControlPoint(); - - this._startArrow = new Arrow(); - this._startArrow.setStrokeColor(strokeColor); - this._startArrow.setStrokeWidth(2); - this.setShowStartArrow(true); - - // Share style is disable ... - if (this._showEndArrow) { - this._endArrow = new Arrow(); - this._endArrow.setStrokeColor(strokeColor); - this._endArrow.setStrokeWidth(2); - } - - // Position the line ... - if ($defined(model.getSrcCtrlPoint())) { - const srcPoint = { ...model.getSrcCtrlPoint() }; - this.setSrcControlPoint(srcPoint); - } - if ($defined(model.getDestCtrlPoint())) { - const destPoint = { ...model.getDestCtrlPoint() }; - this.setDestControlPoint(destPoint); - } - } - - setStroke(color, style, opacity) { - super.setStroke(color, style, opacity); - this._startArrow.setStrokeColor(color); - } - - redraw() { - const line2d = this._line2d; - const sourceTopic = this._sourceTopic; - const sourcePosition = sourceTopic.getPosition(); - - const targetTopic = this._targetTopic; - let targetPosition = targetTopic.getPosition(); - if (targetTopic.getType() === INodeModel.CENTRAL_TOPIC_TYPE) { - targetPosition = Shape.workoutIncomingConnectionPoint(targetTopic, sourcePosition); - } - - this._line2d.setStroke(2); - const ctrlPoints = this._line2d.getControlPoints(); - if (!this._line2d.isDestControlPointCustom() && !this._line2d.isSrcControlPointCustom()) { - const defaultPoints = Shape.calculateDefaultControlPoints( - sourcePosition, - targetPosition, - ); - ctrlPoints[0].x = defaultPoints[0].x; - ctrlPoints[0].y = defaultPoints[0].y; - - ctrlPoints[1].x = defaultPoints[1].x; - ctrlPoints[1].y = defaultPoints[1].y; - } - - const spoint = new Point(); - spoint.x = parseInt(ctrlPoints[0].x, 10) + parseInt(sourcePosition.x, 10); - spoint.y = parseInt(ctrlPoints[0].y, 10) + parseInt(sourcePosition.y, 10); - - const tpoint = new Point(); - tpoint.x = parseInt(ctrlPoints[1].x, 10) + parseInt(targetPosition.x, 10); - tpoint.y = parseInt(ctrlPoints[1].y, 10) + parseInt(targetPosition.y, 10); - - const sPos = Shape.calculateRelationShipPointCoordinates(sourceTopic, spoint); - const tPos = Shape.calculateRelationShipPointCoordinates(targetTopic, tpoint); - - line2d.setFrom(sPos.x, sPos.y); - line2d.setTo(tPos.x, tPos.y); - - line2d.moveToFront(); - - // Positionate Arrows - this._positionArrows(); - - // Add connector ... - this._positionateConnector(targetTopic); - - if (this.isOnFocus()) { - this._refreshShape(); - } - this._focusShape.moveToBack(); - this._controlPointsController.redraw(); - } - - _positionArrows() { - const tpos = this._line2d.getTo(); - const spos = this._line2d.getFrom(); - - this._startArrow.setFrom(spos.x, spos.y); - this._startArrow.moveToBack(); - - if (this._endArrow) { - this._endArrow.setFrom(tpos.x, tpos.y); - this._endArrow.moveToBack(); - } - - if (this._line2d.getType() === 'CurvedLine') { - const controlPoints = this._line2d.getControlPoints(); - this._startArrow.setControlPoint(controlPoints[0]); - if (this._endArrow) { - this._endArrow.setControlPoint(controlPoints[1]); - } - } else { - this._startArrow.setControlPoint(this._line2d.getTo()); - if (this._endArrow) { - this._endArrow.setControlPoint(this._line2d.getFrom()); - } - } - - if (this._showEndArrow) { - this._endArrow.setVisibility(this.isVisible()); - } - this._startArrow.setVisibility(this.isVisible() && this._showStartArrow); - } - - addToWorkspace(workspace) { - workspace.append(this._focusShape); - workspace.append(this._controlPointsController); - - this._controlPointControllerListener = this._initializeControlPointController.bind(this); - this._line2d.addEvent('click', this._controlPointControllerListener); - this._isInWorkspace = true; - - workspace.append(this._startArrow); - if (this._endArrow) workspace.append(this._endArrow); - - super.addToWorkspace(workspace); - this._positionArrows(); - this.redraw(); - } - - _initializeControlPointController() { - this.setOnFocus(true); - } - - removeFromWorkspace(workspace) { - workspace.removeChild(this._focusShape); - workspace.removeChild(this._controlPointsController); - this._line2d.removeEvent('click', this._controlPointControllerListener); - this._isInWorkspace = false; - workspace.removeChild(this._startArrow); - if (this._endArrow) workspace.removeChild(this._endArrow); - - super.removeFromWorkspace(workspace); - } - - // eslint-disable-next-line class-methods-use-this - getType() { - return Relationship.type; - } - - setOnFocus(focus) { - // Change focus shape - if (this.isOnFocus() !== focus) { - if (focus) { - this._refreshShape(); - this._controlPointsController.setLine(this); - } - this._focusShape.setVisibility(focus); - - this._controlPointsController.setVisibility(focus); - this._onFocus = focus; - this.fireEvent(focus ? 'ontfocus' : 'ontblur', this); - } - } - - _refreshShape() { - const sPos = this._line2d.getFrom(); - const tPos = this._line2d.getTo(); - const ctrlPoints = this._line2d.getControlPoints(); - this._focusShape.setFrom(sPos.x, sPos.y); - this._focusShape.setTo(tPos.x, tPos.y); - const shapeCtrlPoints = this._focusShape.getControlPoints(); - shapeCtrlPoints[0].x = ctrlPoints[0].x; - shapeCtrlPoints[0].y = ctrlPoints[0].y; - shapeCtrlPoints[1].x = ctrlPoints[1].x; - shapeCtrlPoints[1].y = ctrlPoints[1].y; - this._focusShape.updateLine(); - } - - addEvent(eventType, listener) { - let type = eventType; - // Translate to web 2d events ... - if (type === 'onfocus') { - type = 'mousedown'; - } - - const line = this._line2d; - line.addEvent(type, listener); - } - - isOnFocus() { - return this._onFocus; - } - - isInWorkspace() { - return this._isInWorkspace; - } - - setVisibility(value) { - super.setVisibility(value); - if (this._showEndArrow) this._endArrow.setVisibility(this._showEndArrow); - this._startArrow.setVisibility(this._showStartArrow && value); - } - - setOpacity(opacity) { - super.setOpacity(opacity); - if (this._showEndArrow) this._endArrow.setOpacity(opacity); - if (this._showStartArrow) this._startArrow.setOpacity(opacity); - } - - setShowEndArrow(visible) { - this._showEndArrow = visible; - if (this._isInWorkspace) this.redraw(); - } - - setShowStartArrow(visible) { - this._showStartArrow = visible; - if (this._isInWorkspace) this.redraw(); - } - - setFrom(x, y) { - $assert($defined(x), 'x must be defined'); - $assert($defined(y), 'y must be defined'); - - this._line2d.setFrom(x, y); - this._startArrow.setFrom(x, y); - } - - setTo(x, y) { - $assert($defined(x), 'x must be defined'); - $assert($defined(y), 'y must be defined'); - - this._line2d.setTo(x, y); - if (this._endArrow) this._endArrow.setFrom(x, y); - } - - setSrcControlPoint(control) { - this._line2d.setSrcControlPoint(control); - this._startArrow.setControlPoint(control); - } - - setDestControlPoint(control) { - this._line2d.setDestControlPoint(control); - if (this._showEndArrow) this._endArrow.setControlPoint(control); - } - - getControlPoints() { - return this._line2d.getControlPoints(); - } - - isSrcControlPointCustom() { - return this._line2d.isSrcControlPointCustom(); - } - - isDestControlPointCustom() { - return this._line2d.isDestControlPointCustom(); - } - - setIsSrcControlPointCustom(isCustom) { - this._line2d.setIsSrcControlPointCustom(isCustom); - } - - setIsDestControlPointCustom(isCustom) { - this._line2d.setIsDestControlPointCustom(isCustom); - } - - getId() { - return this._model.getId(); - } - - fireEvent(type, event) { - const elem = this._line2d; - elem.trigger(type, event); - } -} - -Relationship.getStrokeColor = function getStrokeColor() { - return '#9b74e6'; -}; - -Relationship.type = 'Relationship'; - -export default Relationship; diff --git a/packages/mindplot/src/components/RelationshipPivot.js b/packages/mindplot/src/components/RelationshipPivot.js deleted file mode 100644 index 70a35ec2..00000000 --- a/packages/mindplot/src/components/RelationshipPivot.js +++ /dev/null @@ -1,162 +0,0 @@ -/* - * Copyright [2015] [wisemapping] - * - * Licensed under WiseMapping Public License, Version 1.0 (the "License"). - * It is basically the Apache License, Version 2.0 (the "License") plus the - * "powered by wisemapping" text requirement on every single page; - * you may not use this file except in compliance with the License. - * You may obtain a copy of the license at - * - * http://www.wisemapping.org/license - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import { CurvedLine, Arrow, Point } from '@wisemapping/web2d'; -import { $assert } from '@wisemapping/core-js'; -import Relationship from './Relationship'; -import INodeModel from './model/INodeModel'; -import Shape from './util/Shape'; - -class RelationshipPivot { - constructor(workspace, designer) { - $assert(workspace, 'workspace can not be null'); - $assert(designer, 'designer can not be null'); - this._workspace = workspace; - this._designer = designer; - - // FIXME: the aim of the migration is remove .bind mootools method, please remove these! - this._mouseMoveEvent = this._mouseMove.bind(this); - this._onClickEvent = this._cleanOnMouseClick.bind(this); - this._onTopicClick = this._connectOnFocus.bind(this); - } - - start(sourceTopic, targetPos) { - $assert(sourceTopic, 'sourceTopic can not be null'); - $assert(targetPos, 'targetPos can not be null'); - - this.dispose(); - this._sourceTopic = sourceTopic; - if (sourceTopic != null) { - this._workspace.enableWorkspaceEvents(false); - - const sourcePos = sourceTopic.getPosition(); - const strokeColor = Relationship.getStrokeColor(); - - this._pivot = new CurvedLine(); - this._pivot.setStyle(CurvedLine.SIMPLE_LINE); - - const fromPos = this._calculateFromPosition(sourcePos); - this._pivot.setFrom(fromPos.x, fromPos.y); - - this._pivot.setTo(targetPos.x, targetPos.y); - this._pivot.setStroke(2, 'solid', strokeColor); - this._pivot.setDashed(4, 2); - - this._startArrow = new Arrow(); - this._startArrow.setStrokeColor(strokeColor); - this._startArrow.setStrokeWidth(2); - this._startArrow.setFrom(sourcePos.x, sourcePos.y); - - this._workspace.append(this._pivot); - this._workspace.append(this._startArrow); - - this._workspace.addEvent('mousemove', this._mouseMoveEvent); - this._workspace.addEvent('click', this._onClickEvent); - - // Register focus events on all topics ... - const model = this._designer.getModel(); - const topics = model.getTopics(); - topics.forEach((topic) => { - topic.addEvent('ontfocus', this._onTopicClick); - }); - } - } - - dispose() { - const workspace = this._workspace; - - if (this._isActive()) { - workspace.removeEvent('mousemove', this._mouseMoveEvent); - workspace.removeEvent('click', this._onClickEvent); - - const model = this._designer.getModel(); - const topics = model.getTopics(); - - topics.forEach(((topic) => { - topic.removeEvent('ontfocus', this._onTopicClick); - })); - - workspace.removeChild(this._pivot); - workspace.removeChild(this._startArrow); - workspace.enableWorkspaceEvents(true); - - this._sourceTopic = null; - this._pivot = null; - this._startArrow = null; - } - } - - _mouseMove(event) { - const screen = this._workspace.getScreenManager(); - const pos = screen.getWorkspaceMousePosition(event); - - // Leave the arrow a couple of pixels away from the cursor. - const sourcePosition = this._sourceTopic.getPosition(); - const gapDistance = Math.sign(pos.x - sourcePosition.x) * 5; - - const sPos = this._calculateFromPosition(pos); - this._pivot.setFrom(sPos.x, sPos.y); - - // Update target position ... - this._pivot.setTo(pos.x - gapDistance, pos.y); - - const controlPoints = this._pivot.getControlPoints(); - this._startArrow.setFrom(pos.x - gapDistance, pos.y); - this._startArrow.setControlPoint(controlPoints[1]); - - event.stopPropagation(); - return false; - } - - _cleanOnMouseClick(event) { - // The user clicks on a desktop on in other element that is not a node. - this.dispose(); - event.stopPropagation(); - } - - _calculateFromPosition(toPosition) { - // Calculate origin position ... - let sourcePosition = this._sourceTopic.getPosition(); - if (this._sourceTopic.getType() === INodeModel.CENTRAL_TOPIC_TYPE) { - sourcePosition = Shape.workoutIncomingConnectionPoint(this._sourceTopic, toPosition); - } - const controlPoint = Shape.calculateDefaultControlPoints(sourcePosition, toPosition); - - const spoint = new Point(); - spoint.x = parseInt(controlPoint[0].x, 10) + parseInt(sourcePosition.x, 10); - spoint.y = parseInt(controlPoint[0].y, 10) + parseInt(sourcePosition.y, 10); - return Shape.calculateRelationShipPointCoordinates(this._sourceTopic, spoint); - } - - _connectOnFocus(event, targetTopic) { - const sourceTopic = this._sourceTopic; - const mindmap = this._designer.getMindmap(); - - // Avoid circular connections ... - if (targetTopic.getId() !== sourceTopic.getId()) { - const relModel = mindmap.createRelationship(targetTopic.getId(), sourceTopic.getId()); - this._designer._actionDispatcher.addRelationship(relModel); - } - this.dispose(); - } - - _isActive() { - return this._pivot != null; - } -} - -export default RelationshipPivot; diff --git a/packages/mindplot/src/components/RestPersistenceManager.js b/packages/mindplot/src/components/RestPersistenceManager.js deleted file mode 100644 index a912369a..00000000 --- a/packages/mindplot/src/components/RestPersistenceManager.js +++ /dev/null @@ -1,161 +0,0 @@ -/* - * Copyright [2015] [wisemapping] - * - * Licensed under WiseMapping Public License, Version 1.0 (the "License"). - * It is basically the Apache License, Version 2.0 (the "License") plus the - * "powered by wisemapping" text requirement on every single page; - * you may not use this file except in compliance with the License. - * You may obtain a copy of the license at - * - * http://www.wisemapping.org/license - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import { $assert } from '@wisemapping/core-js'; -import $ from 'jquery'; -import { $msg } from './Messages'; -import PersistenceManager from './PersistenceManager'; - -class RESTPersistenceManager extends PersistenceManager { - constructor(options) { - $assert(options.documentUrl, 'documentUrl can not be null'); - $assert(options.revertUrl, 'revertUrl can not be null'); - $assert(options.lockUrl, 'lockUrl can not be null'); - $assert(options.session, 'session can not be null'); - $assert(options.timestamp, 'timestamp can not be null'); - super(); - - this.documentUrl = options.documentUrl; - this.revertUrl = options.revertUrl; - this.lockUrl = options.lockUrl; - this.timestamp = options.timestamp; - this.session = options.session; - } - - saveMapXml(mapId, mapXml, pref, saveHistory, events, sync) { - const data = { - id: mapId, - xml: mapXml, - properties: pref, - }; - - const persistence = this; - let query = `minor=${!saveHistory}`; - query = `${query}×tamp=${this.timestamp}`; - query = `${query}&session=${this.session}`; - - if (!persistence.onSave) { - // Mark save in process and fire a event unlocking the save ... - persistence.onSave = true; - persistence.clearTimeout = setTimeout(() => { - persistence.clearTimeout = null; - persistence.onSave = false; - }, 10000); - - $.ajax({ - url: `${this.documentUrl.replace('{id}', mapId)}?${query}`, - type: 'put', - dataType: 'json', - data: JSON.stringify(data), - contentType: 'application/json; charset=utf-8', - async: !sync, - - success(successData, textStatus, jqXHRresponseText) { - persistence.timestamp = successData; - events.onSuccess(); - }, - error(jqXHR, textStatus, errorThrown) { - events.onError(persistence._buildError()); - }, - complete() { - // Clear event timeout ... - if (persistence.clearTimeout) { - clearTimeout(persistence.clearTimeout); - } - persistence.onSave = false; - }, - fail(xhr, textStatus) { - const { responseText } = xhr; - let userMsg = { severity: 'SEVERE', message: $msg('SAVE_COULD_NOT_BE_COMPLETED') }; - - const contentType = xhr.getResponseHeader('Content-Type'); - if (contentType != null && contentType.indexOf('application/json') !== -1) { - let serverMsg = null; - try { - serverMsg = $.parseJSON(responseText); - serverMsg = serverMsg.globalSeverity ? serverMsg : null; - } catch (e) { - // Message could not be decoded ... - } - userMsg = persistence._buildError(serverMsg); - } else if (this.status === 405) { - userMsg = { severity: 'SEVERE', message: $msg('SESSION_EXPIRED') }; - } - events.onError(userMsg); - persistence.onSave = false; - }, - }); - } - } - - discardChanges(mapId) { - $.ajax({ - url: this.revertUrl.replace('{id}', mapId), - async: false, - method: 'post', - headers: { 'Content-Type': 'application/json; charset=utf-8', Accept: 'application/json' }, - }); - } - - unlockMap(mindmap) { - const mapId = mindmap.getId(); - $.ajax({ - url: this.lockUrl.replace('{id}', mapId), - async: false, - method: 'put', - headers: { 'Content-Type': 'text/plain' }, - data: 'false', - }); - } - - _buildError(jsonSeverResponse) { - let message = jsonSeverResponse ? jsonSeverResponse.globalErrors[0] : null; - let severity = jsonSeverResponse ? jsonSeverResponse.globalSeverity : null; - - if (!message) { - message = $msg('SAVE_COULD_NOT_BE_COMPLETED'); - } - - if (!severity) { - severity = 'INFO'; - } - return { severity, message }; - } - - loadMapDom(mapId) { - // Let's try to open one from the local directory ... - let xml; - $.ajax({ - url: `${this.documentUrl.replace('{id}', mapId)}/xml`, - method: 'get', - async: false, - headers: { 'Content-Type': 'text/plain', Accept: 'application/xml' }, - success(responseText) { - xml = responseText; - }, - }); - - // If I could not load it from a file, hard code one. - if (xml == null) { - throw new Error('Map could not be loaded'); - } - - return xml; - } -} - -export default RESTPersistenceManager; diff --git a/packages/mindplot/src/components/ScreenManager.js b/packages/mindplot/src/components/ScreenManager.js deleted file mode 100644 index bcc6eba3..00000000 --- a/packages/mindplot/src/components/ScreenManager.js +++ /dev/null @@ -1,152 +0,0 @@ -/* - * Copyright [2015] [wisemapping] - * - * Licensed under WiseMapping Public License, Version 1.0 (the "License"). - * It is basically the Apache License, Version 2.0 (the "License") plus the - * "powered by wisemapping" text requirement on every single page; - * you may not use this file except in compliance with the License. - * You may obtain a copy of the license at - * - * http://www.wisemapping.org/license - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import { $assert } from '@wisemapping/core-js'; -import { Point } from '@wisemapping/web2d'; - -class ScreenManager { - constructor(divElement) { - $assert(divElement, 'can not be null'); - this._divContainer = divElement; - this._padding = { x: 0, y: 0 }; - - // Ignore default click event propagation. Prevent 'click' event on drag. - this._clickEvents = []; - this._divContainer.bind('click', (event) => { - event.stopPropagation(); - }); - - this._divContainer.bind('dblclick', (event) => { - event.stopPropagation(); - event.preventDefault(); - }); - } - - setScale(scale) { - $assert(scale, 'Screen scale can not be null'); - this._scale = scale; - } - - addEvent(event, listener) { - if (event === 'click') this._clickEvents.push(listener); - else this._divContainer.bind(event, listener); - } - - removeEvent(event, listener) { - if (event === 'click') { - this._clickEvents.remove(listener); - } else { - this._divContainer.unbind(event, listener); - } - } - - fireEvent(type, event) { - if (type === 'click') { - this._clickEvents.forEach((listener) => { - listener(type, event); - }); - } else { - this._divContainer.trigger(type, event); - } - } - - _getElementPosition(elem) { - // Retrieve current element position. - const elementPosition = elem.getPosition(); - let { x } = elementPosition; - let { y } = elementPosition; - - // Add workspace offset. - x -= this._padding.x; - y -= this._padding.y; - - // Scale coordinate in order to be relative to the workspace. That's coord/size; - x /= this._scale; - y /= this._scale; - - // Remove decimal part.. - return { x, y }; - } - - getWorkspaceIconPosition(e) { - // Retrieve current icon position. - const image = e.getImage(); - const elementPosition = image.getPosition(); - const imageSize = e.getSize(); - - // Add group offset - const iconGroup = e.getGroup(); - const group = iconGroup.getNativeElement(); - const coordOrigin = group.getCoordOrigin(); - const groupSize = group.getSize(); - const coordSize = group.getCoordSize(); - - const scale = { - x: coordSize.width / parseInt(groupSize.width, 10), - y: coordSize.height / parseInt(groupSize.height, 10), - }; - - let x = (elementPosition.x - coordOrigin.x - parseInt(imageSize.width, 10) / 2) / scale.x; - let y = (elementPosition.y - coordOrigin.y - parseInt(imageSize.height, 10) / 2) / scale.y; - - // Retrieve iconGroup Position - const groupPosition = iconGroup.getPosition(); - x += groupPosition.x; - y += groupPosition.y; - - // Retrieve topic Position - const topic = iconGroup.getTopic(); - const topicPosition = this._getElementPosition(topic); - topicPosition.x -= parseInt(topic.getSize().width, 10) / 2; - - // Remove decimal part.. - return { x: x + topicPosition.x, y: y + topicPosition.y }; - } - - getWorkspaceMousePosition(event) { - // Retrieve current mouse position. - let x = event.clientX; - let y = event.clientY; - - // FIXME: paulo: why? Subtract div position. - /* var containerPosition = this.getContainer().position(); - x = x - containerPosition.x; - y = y - containerPosition.y; */ - - // Scale coordinate in order to be relative to the workspace. That's coordSize/size; - x *= this._scale; - y *= this._scale; - - // Add workspace offset. - x += this._padding.x; - y += this._padding.y; - - // Remove decimal part.. - return new Point(x, y); - } - - getContainer() { - return this._divContainer; - } - - setOffset(x, y) { - this._padding.x = x; - this._padding.y = y; - } -} - -export default ScreenManager; diff --git a/packages/mindplot/src/components/ShrinkConnector.js b/packages/mindplot/src/components/ShrinkConnector.js deleted file mode 100644 index 49be5e9c..00000000 --- a/packages/mindplot/src/components/ShrinkConnector.js +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Copyright [2015] [wisemapping] - * - * Licensed under WiseMapping Public License, Version 1.0 (the "License"). - * It is basically the Apache License, Version 2.0 (the "License") plus the - * "powered by wisemapping" text requirement on every single page; - * you may not use this file except in compliance with the License. - * You may obtain a copy of the license at - * - * http://www.wisemapping.org/license - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import { Elipse } from '@wisemapping/web2d'; - -import TopicConfig from './TopicConfig'; -import ActionDispatcher from './ActionDispatcher'; - -class ShirinkConnector { - constructor(topic) { - const ellipse = new Elipse(TopicConfig.INNER_RECT_ATTRIBUTES); - this._ellipse = ellipse; - ellipse.setFill('rgb(62,118,179)'); - - ellipse.setSize(TopicConfig.CONNECTOR_WIDTH, TopicConfig.CONNECTOR_WIDTH); - ellipse.addEvent('click', (event) => { - const model = topic.getModel(); - const collapse = !model.areChildrenShrunken(); - - const topicId = topic.getId(); - const actionDispatcher = ActionDispatcher.getInstance(); - actionDispatcher.shrinkBranch([topicId], collapse); - - event.stopPropagation(); - }); - - ellipse.addEvent('mousedown', (event) => { - // Avoid node creation ... - event.stopPropagation(); - }); - - ellipse.addEvent('dblclick', (event) => { - // Avoid node creation ... - event.stopPropagation(); - }); - - ellipse.addEvent('mouseover', () => { - ellipse.setFill('rgb(153, 0, 255)'); - }); - const me = this; - ellipse.addEvent('mouseout', () => { - const color = topic.getBackgroundColor(); - me.setFill(color); - }); - - ellipse.setCursor('default'); - this._fillColor = '#f7f7f7'; - const model = topic.getModel(); - this.changeRender(model.areChildrenShrunken()); - } - - changeRender(isShrink) { - const elipse = this._ellipse; - if (isShrink) { - elipse.setStroke('2', 'solid'); - } else { - elipse.setStroke('1', 'solid'); - } - } - - setVisibility(value) { - this._ellipse.setVisibility(value); - } - - setOpacity(opacity) { - this._ellipse.setOpacity(opacity); - } - - setFill(color) { - this._fillColor = color; - this._ellipse.setFill(color); - } - - setAttribute(name, value) { - this._ellipse.setAttribute(name, value); - } - - addToWorkspace(group) { - group.append(this._ellipse); - } - - setPosition(x, y) { - this._ellipse.setPosition(x, y); - } - - moveToBack() { - this._ellipse.moveToBack(); - } - - moveToFront() { - this._ellipse.moveToFront(); - } -} - -export default ShirinkConnector; diff --git a/packages/mindplot/src/components/StandaloneActionDispatcher.js b/packages/mindplot/src/components/StandaloneActionDispatcher.js deleted file mode 100644 index 581d59f6..00000000 --- a/packages/mindplot/src/components/StandaloneActionDispatcher.js +++ /dev/null @@ -1,264 +0,0 @@ -/* - * Copyright [2015] [wisemapping] - * - * Licensed under WiseMapping Public License, Version 1.0 (the "License"). - * It is basically the Apache License, Version 2.0 (the "License") plus the - * "powered by wisemapping" text requirement on every single page; - * you may not use this file except in compliance with the License. - * You may obtain a copy of the license at - * - * http://www.wisemapping.org/license - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import { $defined, $assert } from '@wisemapping/core-js'; -import ActionDispatcher from './ActionDispatcher'; -import DesignerActionRunner from './DesignerActionRunner'; -import AddTopicCommand from './commands/AddTopicCommand'; -import AddRelationshipCommand from './commands/AddRelationshipCommand'; -import AddFeatureToTopicCommand from './commands/AddFeatureToTopicCommand'; -import DeleteCommand from './commands/DeleteCommand'; -import RemoveFeatureFromTopicCommand from './commands/RemoveFeatureFromTopicCommand'; -import DragTopicCommand from './commands/DragTopicCommand'; -import GenericFunctionCommand from './commands/GenericFunctionCommand'; -import MoveControlPointCommand from './commands/MoveControlPointCommand'; -import ChangeFeatureToTopicCommand from './commands/ChangeFeatureToTopicCommand'; -import EventBus from './layout/EventBus'; - -class StandaloneActionDispatcher extends ActionDispatcher { - constructor(commandContext) { - super(commandContext); - this._actionRunner = new DesignerActionRunner(commandContext, this); - } - - /** */ - addTopics(models, parentTopicsId) { - const command = new AddTopicCommand(models, parentTopicsId); - this.execute(command); - } - - /** */ - addRelationship(model) { - const command = new AddRelationshipCommand(model); - this.execute(command); - } - - /** */ - deleteEntities(topicsIds, relIds) { - const command = new DeleteCommand(topicsIds, relIds); - this.execute(command); - } - - /** */ - dragTopic(topicId, position, order, parentTopic) { - const command = new DragTopicCommand(topicId, position, order, parentTopic); - this.execute(command); - } - - /** */ - moveTopic(topicId, position) { - $assert($defined(topicId), 'topicsId can not be null'); - $assert($defined(position), 'position can not be null'); - - const commandFunc = (topic, value) => { - const result = topic.getPosition(); - EventBus.instance.fireEvent(EventBus.events.NodeMoveEvent, { - node: topic.getModel(), - position: value, - }); - return result; - }; - - const command = new GenericFunctionCommand(commandFunc, topicId, position); - this.execute(command); - } - - /** */ - moveControlPoint(ctrlPoint, point) { - const command = new MoveControlPointCommand(ctrlPoint, point); - this.execute(command); - } - - /** */ - changeFontStyleToTopic(topicsIds) { - const commandFunc = (topic) => { - const result = topic.getFontStyle(); - const style = result === 'italic' ? 'normal' : 'italic'; - topic.setFontStyle(style, true); - return result; - }; - const command = new GenericFunctionCommand(commandFunc, topicsIds); - this.execute(command); - } - - /** */ - changeTextToTopic(topicsIds, text) { - $assert($defined(topicsIds), 'topicsIds can not be null'); - - const commandFunc = (topic, value) => { - const result = topic.getText(); - topic.setText(value); - return result; - }; - commandFunc.commandType = 'changeTextToTopic'; - - const command = new GenericFunctionCommand(commandFunc, topicsIds, text); - this.execute(command); - } - - /** */ - changeFontFamilyToTopic(topicIds, fontFamily) { - $assert(topicIds, 'topicIds can not be null'); - $assert(fontFamily, 'fontFamily can not be null'); - - const commandFunc = (topic, commandFontFamily) => { - const result = topic.getFontFamily(); - topic.setFontFamily(commandFontFamily, true); - - topic._adjustShapes(); - return result; - }; - - const command = new GenericFunctionCommand(commandFunc, topicIds, fontFamily); - this.execute(command); - } - - /** */ - changeFontColorToTopic(topicsIds, color) { - $assert(topicsIds, 'topicIds can not be null'); - $assert(color, 'color can not be null'); - - const commandFunc = (topic, commandColor) => { - const result = topic.getFontColor(); - topic.setFontColor(commandColor, true); - return result; - }; - - const command = new GenericFunctionCommand(commandFunc, topicsIds, color); - command.discardDuplicated = 'fontColorCommandId'; - this.execute(command); - } - - /** */ - changeBackgroundColorToTopic(topicsIds, color) { - $assert(topicsIds, 'topicIds can not be null'); - $assert(color, 'color can not be null'); - - const commandFunc = (topic, commandColor) => { - const result = topic.getBackgroundColor(); - topic.setBackgroundColor(commandColor); - return result; - }; - - const command = new GenericFunctionCommand(commandFunc, topicsIds, color); - command.discardDuplicated = 'backColor'; - this.execute(command); - } - - /** */ - changeBorderColorToTopic(topicsIds, color) { - $assert(topicsIds, 'topicIds can not be null'); - $assert(color, 'topicIds can not be null'); - - const commandFunc = (topic, commandColor) => { - const result = topic.getBorderColor(); - topic.setBorderColor(commandColor); - return result; - }; - - const command = new GenericFunctionCommand(commandFunc, topicsIds, color); - command.discardDuplicated = 'borderColorCommandId'; - this.execute(command); - } - - /** */ - changeFontSizeToTopic(topicsIds, size) { - $assert(topicsIds, 'topicIds can not be null'); - $assert(size, 'size can not be null'); - - const commandFunc = (topic, commandSize) => { - const result = topic.getFontSize(); - topic.setFontSize(commandSize, true); - - topic._adjustShapes(); - return result; - }; - - const command = new GenericFunctionCommand(commandFunc, topicsIds, size); - this.execute(command); - } - - /** */ - changeShapeTypeToTopic(topicsIds, shapeType) { - $assert(topicsIds, 'topicsIds can not be null'); - $assert(shapeType, 'shapeType can not be null'); - - const commandFunc = (topic, commandShapeType) => { - const result = topic.getShapeType(); - topic.setShapeType(commandShapeType, true); - return result; - }; - - const command = new GenericFunctionCommand(commandFunc, topicsIds, shapeType); - this.execute(command); - } - - /** */ - changeFontWeightToTopic(topicsIds) { - $assert(topicsIds, 'topicsIds can not be null'); - - const commandFunc = (topic) => { - const result = topic.getFontWeight(); - const weight = result === 'bold' ? 'normal' : 'bold'; - topic.setFontWeight(weight, true); - - topic._adjustShapes(); - return result; - }; - - const command = new GenericFunctionCommand(commandFunc, topicsIds); - this.execute(command); - } - - /** */ - shrinkBranch(topicsIds, collapse) { - $assert(topicsIds, 'topicsIds can not be null'); - - const commandFunc = (topic, isShrink) => { - topic.setChildrenShrunken(isShrink); - return !isShrink; - }; - - const command = new GenericFunctionCommand(commandFunc, topicsIds, collapse); - this.execute(command, false); - } - - /** */ - addFeatureToTopic(topicId, featureType, attributes) { - const command = new AddFeatureToTopicCommand(topicId, featureType, attributes); - this.execute(command); - } - - /** */ - changeFeatureToTopic(topicId, featureId, attributes) { - const command = new ChangeFeatureToTopicCommand(topicId, featureId, attributes); - this.execute(command); - } - - /** */ - removeFeatureFromTopic(topicId, featureId) { - const command = new RemoveFeatureFromTopicCommand(topicId, featureId); - this.execute(command); - } - - /** */ - execute(command) { - this._actionRunner.execute(command); - } -} - -export default StandaloneActionDispatcher; diff --git a/packages/mindplot/src/components/Topic.js b/packages/mindplot/src/components/Topic.js deleted file mode 100644 index 3c17f3e5..00000000 --- a/packages/mindplot/src/components/Topic.js +++ /dev/null @@ -1,1338 +0,0 @@ -/* - * Copyright [2015] [wisemapping] - * - * Licensed under WiseMapping Public License, Version 1.0 (the "License"). - * It is basically the Apache License, Version 2.0 (the "License") plus the - * "powered by wisemapping" text requirement on every single page; - * you may not use this file except in compliance with the License. - * You may obtain a copy of the license at - * - * http://www.wisemapping.org/license - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import $ from 'jquery'; -import { $assert, $defined } from '@wisemapping/core-js'; -import { - Rect, Image, Line, Text, Group, -} from '@wisemapping/web2d'; - -import NodeGraph from './NodeGraph'; -import TopicConfig from './TopicConfig'; -import TopicStyle from './TopicStyle'; -import TopicFeature from './TopicFeature'; -import ConnectionLine from './ConnectionLine'; -import IconGroup from './IconGroup'; -import FadeEffect from './util/FadeEffect'; -import EventBus from './layout/EventBus'; -import ShirinkConnector from './ShrinkConnector'; -import NoteEditor from './widget/NoteEditor'; -import ActionDispatcher from './ActionDispatcher'; -import LinkEditor from './widget/LinkEditor'; - -import TopicEventDispatcher, { TopicEvent } from './TopicEventDispatcher'; -import INodeModel, { TopicShape } from './model/INodeModel'; - -class Topic extends NodeGraph { - /** - * @extends mindplot.NodeGraph - * @constructs - * @param model - * @param options - */ - constructor(model, options) { - super(model, options); - this._children = []; - this._parent = null; - this._relationships = []; - this._isInWorkspace = false; - this._buildTopicShape(); - - // Position a topic .... - const pos = model.getPosition(); - if (pos != null && this.isCentralTopic()) { - this.setPosition(pos); - } - - // Register events for the topic ... - if (!this.isReadOnly()) { - this._registerEvents(); - } - } - - _registerEvents() { - this.setMouseEventsEnabled(true); - - // Prevent click on the topics being propagated ... - this.addEvent('click', (event) => { - event.stopPropagation(); - }); - const me = this; - this.addEvent('dblclick', (event) => { - me._getTopicEventDispatcher().show(me); - event.stopPropagation(); - }); - } - - /** - * @param {String} type the topic shape type - * @see {@link mindplot.model.INodeModel} - */ - setShapeType(type) { - this._setShapeType(type, true); - } - - /** @return {mindplot.Topic} parent topic */ - getParent() { - return this._parent; - } - - _setShapeType(type, updateModel) { - // Remove inner shape figure ... - const model = this.getModel(); - if ($defined(updateModel) && updateModel) { - model.setShapeType(type); - } - - const oldInnerShape = this.getInnerShape(); - if (oldInnerShape != null) { - this._removeInnerShape(); - - // Create a new one ... - const innerShape = this.getInnerShape(); - - // Update figure size ... - const size = this.getSize(); - this.setSize(size, true); - - const group = this.get2DElement(); - group.append(innerShape); - - // Move text to the front ... - const text = this.getTextShape(); - text.moveToFront(); - - // Move iconGroup to front ... - const iconGroup = this.getIconGroup(); - if ($defined(iconGroup)) { - iconGroup.moveToFront(); - } - - // Move connector to front - const connector = this.getShrinkConnector(); - if ($defined(connector)) { - connector.moveToFront(); - } - } - } - - /** @return {String} topic shape type */ - getShapeType() { - const model = this.getModel(); - let result = model.getShapeType(); - if (!$defined(result)) { - result = TopicStyle.defaultShapeType(this); - } - return result; - } - - _removeInnerShape() { - const group = this.get2DElement(); - const innerShape = this.getInnerShape(); - group.removeChild(innerShape); - this._innerShape = null; - return innerShape; - } - - getInnerShape() { - if (!$defined(this._innerShape)) { - // Create inner box. - this._innerShape = this._buildShape( - TopicConfig.INNER_RECT_ATTRIBUTES, - this.getShapeType(), - ); - - // Update bgcolor ... - const bgColor = this.getBackgroundColor(); - this._setBackgroundColor(bgColor, false); - - // Update border color ... - const brColor = this.getBorderColor(); - this._setBorderColor(brColor, false); - - // Define the pointer ... - if (!this.isCentralTopic() && !this.isReadOnly()) { - this._innerShape.setCursor('move'); - } else { - this._innerShape.setCursor('default'); - } - } - return this._innerShape; - } - - _buildShape(attributes, shapeType) { - $assert(attributes, 'attributes can not be null'); - $assert(shapeType, 'shapeType can not be null'); - - let result; - if (shapeType === TopicShape.RECTANGLE) { - result = new Rect(0, attributes); - } else if (shapeType === TopicShape.IMAGE) { - const model = this.getModel(); - const url = model.getImageUrl(); - const size = model.getImageSize(); - - result = new Image(); - result.setHref(url); - result.setSize(size.width, size.height); - - result.getSize = function getSize() { - return model.getImageSize(); - }; - - result.setPosition = function setPosition() { }; - } else if (shapeType === TopicShape.ELLIPSE) { - result = new Rect(0.9, attributes); - } else if (shapeType === TopicShape.ROUNDED_RECT) { - result = new Rect(0.3, attributes); - } else if (shapeType === TopicShape.LINE) { - result = new Line({ strokeColor: '#495879', strokeWidth: 1 }); - result.setSize = function setSize(width, height) { - this.size = { width, height }; - result.setFrom(0, height); - result.setTo(width, height); - - // Lines will have the same color of the default connection lines... - const stokeColor = ConnectionLine.getStrokeColor(); - result.setStroke(1, 'solid', stokeColor); - }; - - result.getSize = function getSize() { - return this.size; - }; - - result.setPosition = function setPosition() { }; - result.setFill = function setFill() { }; - result.setStroke = function setStroke() { }; - } else { - $assert(false, `Unsupported figure shapeType:${shapeType}`); - } - result.setPosition(0, 0); - return result; - } - - /** @param {String} type the cursor type, either 'pointer', 'default' or 'move' */ - setCursor(type) { - const innerShape = this.getInnerShape(); - innerShape.setCursor(type); - - const outerShape = this.getOuterShape(); - outerShape.setCursor(type); - - const textShape = this.getTextShape(); - textShape.setCursor(type); - } - - /** @return outer shape */ - getOuterShape() { - if (!$defined(this._outerShape)) { - const rect = this._buildShape( - TopicConfig.OUTER_SHAPE_ATTRIBUTES, - TopicShape.ROUNDED_RECT, - ); - rect.setPosition(-2, -3); - rect.setOpacity(0); - this._outerShape = rect; - } - - return this._outerShape; - } - - /** @return text shape */ - getTextShape() { - if (!$defined(this._text)) { - this._text = this._buildTextShape(false); - - // Set Text ... - const text = this.getText(); - this._setText(text, false); - } - - return this._text; - } - - /** @return icon group */ - getOrBuildIconGroup() { - if (!$defined(this._iconsGroup)) { - this._iconsGroup = this._buildIconGroup(); - const group = this.get2DElement(); - group.append(this._iconsGroup.getNativeElement()); - this._iconsGroup.moveToFront(); - } - return this._iconsGroup; - } - - /** */ - getIconGroup() { - return this._iconsGroup; - } - - _buildIconGroup() { - const textHeight = this.getTextShape().getFontHeight(); - const result = new IconGroup(this.getId(), textHeight); - const padding = TopicStyle.getInnerPadding(this); - result.setPosition(padding, padding); - - // Load topic features ... - const model = this.getModel(); - const featuresModel = model.getFeatures(); - for (let i = 0; i < featuresModel.length; i++) { - const featureModel = featuresModel[i]; - const icon = TopicFeature.createIcon(this, featureModel, this.isReadOnly()); - result.addIcon( - icon, - featureModel.getType() === TopicFeature.Icon.id && !this.isReadOnly(), - ); - } - - return result; - } - - /** - * assigns the new feature model to the topic's node model and adds the respective icon - * @param {mindplot.model.FeatureModel} featureModel - * @return {mindplot.Icon} the icon corresponding to the feature model - */ - addFeature(featureModel) { - const iconGroup = this.getOrBuildIconGroup(); - this.closeEditors(); - - // Update model ... - const model = this.getModel(); - model.addFeature(featureModel); - - const result = TopicFeature.createIcon(this, featureModel, this.isReadOnly()); - iconGroup.addIcon( - result, - featureModel.getType() === TopicFeature.Icon.id && !this.isReadOnly(), - ); - - this._adjustShapes(); - return result; - } - - /** */ - findFeatureById(id) { - const model = this.getModel(); - return model.findFeatureById(id); - } - - /** */ - removeFeature(featureModel) { - $assert(featureModel, 'featureModel could not be null'); - - // Removing the icon from MODEL - const model = this.getModel(); - model.removeFeature(featureModel); - - // Removing the icon from UI - const iconGroup = this.getIconGroup(); - if ($defined(iconGroup)) { - iconGroup.removeIconByModel(featureModel); - } - this._adjustShapes(); - } - - /** */ - addRelationship(relationship) { - this._relationships.push(relationship); - } - - /** */ - deleteRelationship(relationship) { - this._relationships = this._relationships.filter((r) => r !== relationship); - } - - /** */ - getRelationships() { - return this._relationships; - } - - _buildTextShape(readOnly) { - const result = new Text(); - const family = this.getFontFamily(); - const size = this.getFontSize(); - const weight = this.getFontWeight(); - const style = this.getFontStyle(); - result.setFont(family, size, style, weight); - - const color = this.getFontColor(); - result.setColor(color); - - if (!readOnly) { - // Propagate mouse events ... - if (!this.isCentralTopic()) { - result.setCursor('move'); - } else { - result.setCursor('default'); - } - } - - return result; - } - - /** */ - setFontFamily(value, updateModel) { - const textShape = this.getTextShape(); - textShape.setFontFamily(value); - if ($defined(updateModel) && updateModel) { - const model = this.getModel(); - model.setFontFamily(value); - } - this._adjustShapes(updateModel); - } - - /** */ - setFontSize(value, updateModel) { - const textShape = this.getTextShape(); - textShape.setSize(value); - - if ($defined(updateModel) && updateModel) { - const model = this.getModel(); - model.setFontSize(value); - } - this._adjustShapes(updateModel); - } - - /** */ - setFontStyle(value, updateModel) { - const textShape = this.getTextShape(); - textShape.setStyle(value); - if ($defined(updateModel) && updateModel) { - const model = this.getModel(); - model.setFontStyle(value); - } - this._adjustShapes(updateModel); - } - - /** */ - setFontWeight(value, updateModel) { - const textShape = this.getTextShape(); - textShape.setWeight(value); - if ($defined(updateModel) && updateModel) { - const model = this.getModel(); - model.setFontWeight(value); - } - this._adjustShapes(); - } - - /** */ - getFontWeight() { - const model = this.getModel(); - let result = model.getFontWeight(); - if (!$defined(result)) { - const font = TopicStyle.defaultFontStyle(this); - result = font.weight; - } - return result; - } - - /** */ - getFontFamily() { - const model = this.getModel(); - let result = model.getFontFamily(); - if (!$defined(result)) { - const font = TopicStyle.defaultFontStyle(this); - result = font.font; - } - return result; - } - - /** */ - getFontColor() { - const model = this.getModel(); - let result = model.getFontColor(); - if (!$defined(result)) { - const font = TopicStyle.defaultFontStyle(this); - result = font.color; - } - return result; - } - - /** */ - getFontStyle() { - const model = this.getModel(); - let result = model.getFontStyle(); - if (!$defined(result)) { - const font = TopicStyle.defaultFontStyle(this); - result = font.style; - } - return result; - } - - /** */ - getFontSize() { - const model = this.getModel(); - let result = model.getFontSize(); - if (!$defined(result)) { - const font = TopicStyle.defaultFontStyle(this); - result = font.size; - } - return result; - } - - /** */ - setFontColor(value, updateModel) { - const textShape = this.getTextShape(); - textShape.setColor(value); - if ($defined(updateModel) && updateModel) { - const model = this.getModel(); - model.setFontColor(value); - } - } - - _setText(text, updateModel) { - const textShape = this.getTextShape(); - textShape.setText(text == null ? TopicStyle.defaultText(this) : text); - - if ($defined(updateModel) && updateModel) { - const model = this.getModel(); - model.setText(text); - } - } - - /** */ - setText(text) { - // Avoid empty nodes ... - if (!text || $.trim(text).length === 0) { - this._setText(null, true); - } else { - this._setText(text, true); - } - - this._adjustShapes(); - } - - /** */ - getText() { - const model = this.getModel(); - let result = model.getText(); - if (!$defined(result)) { - result = TopicStyle.defaultText(this); - } - return result; - } - - /** */ - setBackgroundColor(color) { - this._setBackgroundColor(color, true); - } - - _setBackgroundColor(color, updateModel) { - const innerShape = this.getInnerShape(); - innerShape.setFill(color); - - const connector = this.getShrinkConnector(); - if (connector) { - connector.setFill(color); - } - - if ($defined(updateModel) && updateModel) { - const model = this.getModel(); - model.setBackgroundColor(color); - } - } - - /** */ - getBackgroundColor() { - const model = this.getModel(); - let result = model.getBackgroundColor(); - if (!$defined(result)) { - result = TopicStyle.defaultBackgroundColor(this); - } - return result; - } - - /** */ - setBorderColor(color) { - this._setBorderColor(color, true); - } - - _setBorderColor(color, updateModel) { - const innerShape = this.getInnerShape(); - innerShape.setAttribute('strokeColor', color); - - const connector = this.getShrinkConnector(); - if (connector) { - connector.setAttribute('strokeColor', color); - } - - if ($defined(updateModel) && updateModel) { - const model = this.getModel(); - model.setBorderColor(color); - } - } - - /** */ - getBorderColor() { - const model = this.getModel(); - let result = model.getBorderColor(); - if (!$defined(result)) { - result = TopicStyle.defaultBorderColor(this); - } - return result; - } - - _buildTopicShape() { - const groupAttributes = { - width: 100, - height: 100, - coordSizeWidth: 100, - coordSizeHeight: 100, - }; - const group = new Group(groupAttributes); - this._set2DElement(group); - - // Shape must be build based on the model width ... - const outerShape = this.getOuterShape(); - const innerShape = this.getInnerShape(); - const textShape = this.getTextShape(); - - // Add to the group ... - group.append(outerShape); - group.append(innerShape); - group.append(textShape); - - // Update figure size ... - const model = this.getModel(); - if (model.getFeatures().length !== 0) { - this.getOrBuildIconGroup(); - } - - const shrinkConnector = this.getShrinkConnector(); - if ($defined(shrinkConnector)) { - shrinkConnector.addToWorkspace(group); - } - - // Register listeners ... - this._registerDefaultListenersToElement(group, this); - } - - _registerDefaultListenersToElement(elem, topic) { - const mouseOver = function mouseOver(event) { - if (topic.isMouseEventsEnabled()) { - topic.handleMouseOver(event); - } - }; - elem.addEvent('mouseover', mouseOver); - - const outout = function outout(event) { - if (topic.isMouseEventsEnabled()) { - topic.handleMouseOut(event); - } - }; - elem.addEvent('mouseout', outout); - - const me = this; - // Focus events ... - elem.addEvent('mousedown', (event) => { - const isMac = window.navigator.platform.toUpperCase().indexOf('MAC') >= 0; - if (!me.isReadOnly()) { - // Disable topic selection of readOnly mode ... - let value = true; - if ((event.metaKey && isMac) || (event.ctrlKey && !isMac)) { - value = !me.isOnFocus(); - event.stopPropagation(); - event.preventDefault(); - } - topic.setOnFocus(value); - } - - const eventDispatcher = me._getTopicEventDispatcher(); - eventDispatcher.process(TopicEvent.CLICK, me); - event.stopPropagation(); - }); - } - - /** */ - areChildrenShrunken() { - const model = this.getModel(); - return model.areChildrenShrunken() && !this.isCentralTopic(); - } - - /** */ - isCollapsed() { - let result = false; - - let current = this.getParent(); - while (current && !result) { - result = current.areChildrenShrunken(); - current = current.getParent(); - } - return result; - } - - /** */ - setChildrenShrunken(value) { - // Update Model ... - const model = this.getModel(); - model.setChildrenShrunken(value); - - // Change render base on the state. - const shrinkConnector = this.getShrinkConnector(); - if ($defined(shrinkConnector)) { - shrinkConnector.changeRender(value); - } - - // Do some fancy animation .... - const elements = this._flatten2DElements(this); - const fade = new FadeEffect(elements, !value); - const me = this; - fade.addEvent('complete', () => { - // Set focus on the parent node ... - if (value) { - me.setOnFocus(true); - } - - // Set focus in false for all the children ... - elements.forEach((elem) => { - if (elem.setOnFocus) { - elem.setOnFocus(false); - } - }); - }); - fade.start(); - - EventBus.instance.fireEvent(EventBus.events.NodeShrinkEvent, model); - } - - /** */ - getShrinkConnector() { - let result = this._connector; - if (this._connector == null) { - this._connector = new ShirinkConnector(this); - this._connector.setVisibility(false); - result = this._connector; - } - return result; - } - - /** */ - handleMouseOver() { - const outerShape = this.getOuterShape(); - outerShape.setOpacity(1); - } - - /** */ - handleMouseOut() { - const outerShape = this.getOuterShape(); - if (!this.isOnFocus()) { - outerShape.setOpacity(0); - } - } - - /** */ - showTextEditor(text) { - this._getTopicEventDispatcher().show(this, { text }); - } - - /** */ - showNoteEditor() { - const topicId = this.getId(); - const model = this.getModel(); - const editorModel = { - getValue() { - const notes = model.findFeatureByType(TopicFeature.Note.id); - let result; - if (notes.length > 0) result = notes[0].getText(); - - return result; - }, - - setValue(value) { - const dispatcher = ActionDispatcher.getInstance(); - const notes = model.findFeatureByType(TopicFeature.Note.id); - if (!$defined(value)) { - const featureId = notes[0].getId(); - dispatcher.removeFeatureFromTopic(topicId, featureId); - } else if (notes.length > 0) { - dispatcher.changeFeatureToTopic(topicId, notes[0].getId(), { - text: value, - }); - } else { - dispatcher.addFeatureToTopic(topicId, TopicFeature.Note.id, { - text: value, - }); - } - }, - }; - const editor = new NoteEditor(editorModel); - this.closeEditors(); - editor.show(); - } - - /** opens a dialog where the user can enter or edit an existing link associated with this topic */ - showLinkEditor() { - const topicId = this.getId(); - const model = this.getModel(); - const editorModel = { - getValue() { - // @param {mindplot.model.LinkModel[]} links - const links = model.findFeatureByType(TopicFeature.Link.id); - let result; - if (links.length > 0) result = links[0].getUrl(); - - return result; - }, - - setValue(value) { - const dispatcher = ActionDispatcher.getInstance(); - const links = model.findFeatureByType(TopicFeature.Link.id); - if (!$defined(value)) { - const featureId = links[0].getId(); - dispatcher.removeFeatureFromTopic(topicId, featureId); - } else if (links.length > 0) { - dispatcher.changeFeatureToTopic(topicId, links[0].getId(), { - url: value, - }); - } else { - dispatcher.addFeatureToTopic(topicId, TopicFeature.Link.id, { - url: value, - }); - } - }, - }; - - this.closeEditors(); - const editor = new LinkEditor(editorModel); - editor.show(); - } - - /** */ - closeEditors() { - this._getTopicEventDispatcher().close(true); - } - - _getTopicEventDispatcher() { - return TopicEventDispatcher.getInstance(); - } - - /** - * Point: references the center of the rect shape.!!! - */ - setPosition(point) { - $assert(point, 'position can not be null'); - // allowed param reassign to avoid risks of existing code relying in this side-effect - // eslint-disable-next-line no-param-reassign - point.x = Math.ceil(point.x); - // eslint-disable-next-line no-param-reassign - point.y = Math.ceil(point.y); - - // Update model's position ... - const model = this.getModel(); - model.setPosition(point.x, point.y); - - // Elements are positioned in the center. - // All topic element must be positioned based on the innerShape. - const size = this.getSize(); - - const cx = point.x - size.width / 2; - const cy = point.y - size.height / 2; - - // Update visual position. - this._elem2d.setPosition(cx, cy); - - // Update connection lines ... - this._updateConnectionLines(); - - // Check object state. - this.invariant(); - } - - /** */ - getOutgoingLine() { - return this._outgoingLine; - } - - /** */ - getIncomingLines() { - const result = []; - const children = this.getChildren(); - for (let i = 0; i < children.length; i++) { - const node = children[i]; - const line = node.getOutgoingLine(); - if ($defined(line)) { - result.push(line); - } - } - return result; - } - - /** */ - getOutgoingConnectedTopic() { - let result = null; - const line = this.getOutgoingLine(); - if ($defined(line)) { - result = line.getTargetTopic(); - } - return result; - } - - _updateConnectionLines() { - // Update this to parent line ... - const outgoingLine = this.getOutgoingLine(); - if ($defined(outgoingLine)) { - outgoingLine.redraw(); - } - - // Update all the incoming lines ... - const incomingLines = this.getIncomingLines(); - for (let i = 0; i < incomingLines.length; i++) { - incomingLines[i].redraw(); - } - - // Update relationship lines - for (let j = 0; j < this._relationships.length; j++) { - this._relationships[j].redraw(); - } - } - - /** */ - setBranchVisibility(value) { - let current = this; - let parent = this; - while (parent != null && !parent.isCentralTopic()) { - current = parent; - parent = current.getParent(); - } - current.setVisibility(value); - } - - /** */ - setVisibility(value) { - this._setTopicVisibility(value); - - // Hide all children... - this._setChildrenVisibility(value); - - // If there there are connection to the node, topic must be hidden. - this._setRelationshipLinesVisibility(value); - - // If it's connected, the connection must be rendered. - const outgoingLine = this.getOutgoingLine(); - if (outgoingLine) { - outgoingLine.setVisibility(value); - } - } - - /** */ - moveToBack() { - // Update relationship lines - for (let j = 0; j < this._relationships.length; j++) { - this._relationships[j].moveToBack(); - } - const connector = this.getShrinkConnector(); - if ($defined(connector)) { - connector.moveToBack(); - } - - this.get2DElement().moveToBack(); - } - - /** */ - moveToFront() { - this.get2DElement().moveToFront(); - const connector = this.getShrinkConnector(); - if ($defined(connector)) { - connector.moveToFront(); - } - // Update relationship lines - for (let j = 0; j < this._relationships.length; j++) { - this._relationships[j].moveToFront(); - } - } - - /** */ - isVisible() { - const elem = this.get2DElement(); - return elem.isVisible(); - } - - _setRelationshipLinesVisibility(value) { - this._relationships.forEach((relationship) => { - const sourceTopic = relationship.getSourceTopic(); - const targetTopic = relationship.getTargetTopic(); - - const targetParent = targetTopic.getModel().getParent(); - const sourceParent = sourceTopic.getModel().getParent(); - relationship.setVisibility( - value - && (targetParent == null || !targetParent.areChildrenShrunken()) - && (sourceParent == null || !sourceParent.areChildrenShrunken()), - ); - }); - } - - _setTopicVisibility(value) { - const elem = this.get2DElement(); - elem.setVisibility(value); - - if (this.getIncomingLines().length > 0) { - const connector = this.getShrinkConnector(); - if ($defined(connector)) { - connector.setVisibility(value); - } - } - - const textShape = this.getTextShape(); - textShape.setVisibility(this.getShapeType() !== TopicShape.IMAGE ? value : false); - } - - /** */ - setOpacity(opacity) { - const elem = this.get2DElement(); - elem.setOpacity(opacity); - - const connector = this.getShrinkConnector(); - if ($defined(connector)) { - connector.setOpacity(opacity); - } - const textShape = this.getTextShape(); - textShape.setOpacity(opacity); - } - - _setChildrenVisibility(isVisible) { - // Hide all children. - const children = this.getChildren(); - const model = this.getModel(); - - const visibility = isVisible ? !model.areChildrenShrunken() : isVisible; - children.forEach((child) => { - child.setVisibility(visibility); - const outgoingLine = child.getOutgoingLine(); - outgoingLine.setVisibility(visibility); - }); - } - - /** */ - invariant() { - const line = this._outgoingLine; - const model = this.getModel(); - const isConnected = model.isConnected(); - - // Check consistency... - if ((isConnected && !line) || (!isConnected && line)) { - // $assert(false,'Illegal state exception.'); - } - } - - /** */ - setSize(size, force) { - $assert(size, 'size can not be null'); - $assert($defined(size.width), 'size seem not to be a valid element'); - const roundedSize = { width: Math.ceil(size.width), height: Math.ceil(size.height) }; - - const oldSize = this.getSize(); - const hasSizeChanged = oldSize.width !== roundedSize.width - || oldSize.height !== roundedSize.height; - if (hasSizeChanged || force) { - NodeGraph.prototype.setSize.call(this, roundedSize); - - const outerShape = this.getOuterShape(); - const innerShape = this.getInnerShape(); - - outerShape.setSize(roundedSize.width + 4, roundedSize.height + 6); - innerShape.setSize(roundedSize.width, roundedSize.height); - - // Update the figure position(ej: central topic must be centered) and children position. - this._updatePositionOnChangeSize(oldSize, roundedSize); - - if (hasSizeChanged) { - EventBus.instance.fireEvent(EventBus.events.NodeResizeEvent, { - node: this.getModel(), - size: roundedSize, - }); - } - } - } - - _updatePositionOnChangeSize() { - $assert(false, 'this method must be overwrited.'); - } - - /** */ - disconnect(workspace) { - const outgoingLine = this.getOutgoingLine(); - if ($defined(outgoingLine)) { - $assert(workspace, 'workspace can not be null'); - - this._outgoingLine = null; - - // Disconnect nodes ... - const targetTopic = outgoingLine.getTargetTopic(); - targetTopic.removeChild(this); - - // Update model ... - const childModel = this.getModel(); - childModel.disconnect(); - - this._parent = null; - - // Remove graphical element from the workspace... - outgoingLine.removeFromWorkspace(workspace); - - // Remove from workspace. - EventBus.instance.fireEvent(EventBus.events.NodeDisconnectEvent, this.getModel()); - - // Change text based on the current connection ... - const model = this.getModel(); - if (!model.getText()) { - const text = this.getText(); - this._setText(text, false); - } - if (!model.getFontSize()) { - const size = this.getFontSize(); - this.setFontSize(size, false); - } - - // Hide connection line?. - if (targetTopic.getChildren().length === 0) { - const connector = targetTopic.getShrinkConnector(); - if ($defined(connector)) { - connector.setVisibility(false); - } - } - } - } - - /** */ - getOrder() { - const model = this.getModel(); - return model.getOrder(); - } - - /** */ - setOrder(value) { - const model = this.getModel(); - model.setOrder(value); - } - - /** */ - connectTo(targetTopic, workspace) { - $assert(!this._outgoingLine, 'Could not connect an already connected node'); - $assert(targetTopic !== this, 'Circular connection are not allowed'); - $assert(targetTopic, 'Parent Graph can not be null'); - $assert(workspace, 'Workspace can not be null'); - - // Connect Graphical Nodes ... - targetTopic.append(this); - this._parent = targetTopic; - - // Update model ... - const targetModel = targetTopic.getModel(); - const childModel = this.getModel(); - childModel.connectTo(targetModel); - - // Create a connection line ... - const outgoingLine = new ConnectionLine(this, targetTopic); - outgoingLine.setVisibility(false); - - this._outgoingLine = outgoingLine; - workspace.append(outgoingLine); - - // Update figure is necessary. - this.updateTopicShape(targetTopic); - - // Change text based on the current connection ... - const model = this.getModel(); - if (!model.getText()) { - const text = this.getText(); - this._setText(text, false); - } - if (!model.getFontSize()) { - const size = this.getFontSize(); - this.setFontSize(size, false); - } - this.getTextShape(); - - // Display connection node... - const connector = targetTopic.getShrinkConnector(); - if ($defined(connector)) { - connector.setVisibility(true); - } - - // Redraw line ... - outgoingLine.redraw(); - - // Fire connection event ... - if (this.isInWorkspace()) { - EventBus.instance.fireEvent(EventBus.events.NodeConnectEvent, { - parentNode: targetTopic.getModel(), - childNode: this.getModel(), - }); - } - } - - /** */ - append(child) { - const children = this.getChildren(); - children.push(child); - } - - /** */ - removeChild(child) { - const children = this.getChildren(); - this._children = children.filter((c) => c !== child); - } - - /** */ - getChildren() { - let result = this._children; - if (!$defined(result)) { - this._children = []; - result = this._children; - } - return result; - } - - /** */ - removeFromWorkspace(workspace) { - const elem2d = this.get2DElement(); - workspace.removeChild(elem2d); - const line = this.getOutgoingLine(); - if ($defined(line)) { - workspace.removeChild(line); - } - this._isInWorkspace = false; - EventBus.instance.fireEvent(EventBus.events.NodeRemoved, this.getModel()); - } - - /** */ - addToWorkspace(workspace) { - const elem = this.get2DElement(); - workspace.append(elem); - if (!this.isInWorkspace()) { - if (!this.isCentralTopic()) { - EventBus.instance.fireEvent(EventBus.events.NodeAdded, this.getModel()); - } - - if (this.getModel().isConnected()) { - EventBus.instance.fireEvent(EventBus.events.NodeConnectEvent, { - parentNode: this.getOutgoingConnectedTopic().getModel(), - childNode: this.getModel(), - }); - } - } - this._isInWorkspace = true; - this._adjustShapes(); - } - - /** */ - isInWorkspace() { - return this._isInWorkspace; - } - - /** */ - createDragNode(layoutManager) { - const result = super.createDragNode(layoutManager); - - // Is the node already connected ? - const targetTopic = this.getOutgoingConnectedTopic(); - if ($defined(targetTopic)) { - result.connectTo(targetTopic); - result.setVisibility(false); - } - - // If a drag node is create for it, let's hide the editor. - this._getTopicEventDispatcher().close(); - - return result; - } - - _adjustShapes() { - if (this._isInWorkspace) { - const textShape = this.getTextShape(); - if (this.getShapeType() !== TopicShape.IMAGE) { - const textWidth = textShape.getWidth(); - - let textHeight = textShape.getHeight(); - textHeight = textHeight !== 0 ? textHeight : 20; - - const topicPadding = TopicStyle.getInnerPadding(this); - - // Adjust the icon size to the size of the text ... - const iconGroup = this.getOrBuildIconGroup(); - const fontHeight = this.getTextShape().getFontHeight(); - iconGroup.setPosition(topicPadding, topicPadding); - iconGroup.seIconSize(fontHeight, fontHeight); - - // Add a extra padding between the text and the icons - let iconsWidth = iconGroup.getSize().width; - if (iconsWidth !== 0) { - iconsWidth += textHeight / 4; - } - - const height = textHeight + topicPadding * 2; - const width = textWidth + iconsWidth + topicPadding * 2; - - this.setSize({ width, height }); - - // Position node ... - textShape.setPosition(topicPadding + iconsWidth, topicPadding); - } else { - // In case of images, the size if fixed ... - const size = this.getModel().getImageSize(); - this.setSize(size); - } - } - } - - _flatten2DElements(topic) { - let result = []; - - const children = topic.getChildren(); - children.forEach((child) => { - result.push(child); - result.push(child.getOutgoingLine()); - - const relationships = child.getRelationships(); - result = result.concat(relationships); - - if (!child.areChildrenShrunken()) { - const innerChilds = this._flatten2DElements(child); - result = result.concat(innerChilds); - } - }); - return result; - } - - /** - * @param childTopic - * @return {Boolean} true if childtopic is a child topic of this topic or the topic itself - */ - isChildTopic(childTopic) { - let result = this.getId() === childTopic.getId(); - if (!result) { - const children = this.getChildren(); - for (let i = 0; i < children.length; i++) { - const parent = children[i]; - result = parent.isChildTopic(childTopic); - if (result) { - break; - } - } - } - return result; - } - - /** @return {Boolean} true if the topic is the central topic of the map */ - isCentralTopic() { - return this.getModel().getType() === INodeModel.CENTRAL_TOPIC_TYPE; - } -} - -export default Topic; diff --git a/packages/mindplot/src/components/TopicConfig.js b/packages/mindplot/src/components/TopicConfig.js deleted file mode 100644 index d1a94b8f..00000000 --- a/packages/mindplot/src/components/TopicConfig.js +++ /dev/null @@ -1,36 +0,0 @@ -/** - * @constant - * @type {Number} - * @default - */ -const CONNECTOR_WIDTH = 6; -/** - * @constant - * @type {Object} - * @default - */ -const OUTER_SHAPE_ATTRIBUTES = { - fillColor: 'rgb(252,235,192)', - stroke: '1 dot rgb(241,163,39)', - x: 0, - y: 0, -}; -/** - * @constant - * @type {Object} - * @default - */ -const OUTER_SHAPE_ATTRIBUTES_FOCUS = { fillColor: 'rgb(244,184,45)', x: 0, y: 0 }; -/** - * @constant - * @type {Object} - * @default - * */ -const INNER_RECT_ATTRIBUTES = { stroke: '2 solid' }; - -export default { - CONNECTOR_WIDTH, - OUTER_SHAPE_ATTRIBUTES, - OUTER_SHAPE_ATTRIBUTES_FOCUS, - INNER_RECT_ATTRIBUTES, -}; diff --git a/packages/mindplot/src/components/Workspace.js b/packages/mindplot/src/components/Workspace.js deleted file mode 100644 index 558a2c81..00000000 --- a/packages/mindplot/src/components/Workspace.js +++ /dev/null @@ -1,221 +0,0 @@ -/* - * Copyright [2015] [wisemapping] - * - * Licensed under WiseMapping Public License, Version 1.0 (the "License"). - * It is basically the Apache License, Version 2.0 (the "License") plus the - * "powered by wisemapping" text requirement on every single page; - * you may not use this file except in compliance with the License. - * You may obtain a copy of the license at - * - * http://www.wisemapping.org/license - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import { $assert, $defined } from '@wisemapping/core-js'; -import { Workspace as Workspace2D, Toolkit } from '@wisemapping/web2d'; - -class Workspace { - constructor(screenManager, zoom) { - // Create a suitable container ... - $assert(screenManager, 'Div container can not be null'); - $assert(zoom, 'zoom container can not be null'); - - this._zoom = zoom; - this._screenManager = screenManager; - - const divContainer = screenManager.getContainer(); - this._screenWidth = parseInt(divContainer.css('width'), 10); - this._screenHeight = parseInt(divContainer.css('height'), 10); - - // Initialize web2d workspace. - const workspace = this._createWorkspace(); - this._workspace = workspace; - - // Append to the workspace... - workspace.addItAsChildTo(divContainer); - this.setZoom(zoom, true); - - // Register drag events ... - this._registerDragEvents(); - this._eventsEnabled = true; - } - - _createWorkspace() { - // Initialize workspace ... - const coordOriginX = -(this._screenWidth / 2); - const coordOriginY = -(this._screenHeight / 2); - - const workspaceProfile = { - width: `${this._screenWidth}px`, - height: `${this._screenHeight}px`, - coordSizeWidth: this._screenWidth, - coordSizeHeight: this._screenHeight, - coordOriginX, - coordOriginY, - fillColor: 'transparent', - strokeWidth: 0, - }; - Toolkit.init(); - return new Workspace2D(workspaceProfile); - } - - append(shape) { - if ($defined(shape.addToWorkspace)) { - shape.addToWorkspace(this); - } else { - this._workspace.append(shape); - } - } - - removeChild(shape) { - // Element is a node, not a web2d element? - if ($defined(shape.removeFromWorkspace)) { - shape.removeFromWorkspace(this); - } else { - this._workspace.removeChild(shape); - } - } - - addEvent(type, listener) { - this._workspace.addEvent(type, listener); - } - - removeEvent(type, listener) { - $assert(type, 'type can not be null'); - $assert(listener, 'listener can not be null'); - this._workspace.removeEvent(type, listener); - } - - getSize() { - return this._workspace.getCoordSize(); - } - - setZoom(zoom, center) { - this._zoom = zoom; - const workspace = this._workspace; - - // Update coord scale... - const coordWidth = zoom * this._screenWidth; - const coordHeight = zoom * this._screenHeight; - workspace.setCoordSize(coordWidth, coordHeight); - - // View port coords ... - if (this._viewPort) { - this._viewPort.width *= zoom; - this._viewPort.height *= zoom; - } - - // Center topic.... - let coordOriginX; - let coordOriginY; - - if (center) { - if (this._viewPort) { - coordOriginX = -(this._viewPort.width / 2); - coordOriginY = -(this._viewPort.height / 2); - } else { - coordOriginX = -(coordWidth / 2); - coordOriginY = -(coordHeight / 2); - } - } else { - const coordOrigin = workspace.getCoordOrigin(); - coordOriginX = coordOrigin.x; - coordOriginY = coordOrigin.y; - } - - workspace.setCoordOrigin(coordOriginX, coordOriginY); - - // Update screen. - this._screenManager.setOffset(coordOriginX, coordOriginY); - this._screenManager.setScale(zoom); - - // Some changes in the screen. Let's fire an update event... - this._screenManager.fireEvent('update'); - } - - getScreenManager() { - return this._screenManager; - } - - enableWorkspaceEvents(value) { - this._eventsEnabled = value; - } - - isWorkspaceEventsEnabled() { - return this._eventsEnabled; - } - - dumpNativeChart() { - return this._workspace.dumpNativeChart(); - } - - _registerDragEvents() { - const workspace = this._workspace; - const screenManager = this._screenManager; - const mWorkspace = this; - const mouseDownListener = function mouseDownListener(event) { - if (!$defined(workspace._mouseMoveListener)) { - if (mWorkspace.isWorkspaceEventsEnabled()) { - mWorkspace.enableWorkspaceEvents(false); - - const mouseDownPosition = screenManager.getWorkspaceMousePosition(event); - const originalCoordOrigin = workspace.getCoordOrigin(); - - let wasDragged = false; - workspace._mouseMoveListener = (mouseMoveEvent) => { - const currentMousePosition = screenManager.getWorkspaceMousePosition(mouseMoveEvent); - - const offsetX = currentMousePosition.x - mouseDownPosition.x; - const coordOriginX = -offsetX + originalCoordOrigin.x; - - const offsetY = currentMousePosition.y - mouseDownPosition.y; - const coordOriginY = -offsetY + originalCoordOrigin.y; - - workspace.setCoordOrigin(coordOriginX, coordOriginY); - - // Change cursor. - window.document.body.style.cursor = 'move'; - mouseMoveEvent.preventDefault(); - - // Fire drag event ... - screenManager.fireEvent('update'); - wasDragged = true; - }; - screenManager.addEvent('mousemove', workspace._mouseMoveListener); - - // Register mouse up listeners ... - workspace._mouseUpListener = () => { - screenManager.removeEvent('mousemove', workspace._mouseMoveListener); - screenManager.removeEvent('mouseup', workspace._mouseUpListener); - workspace._mouseUpListener = null; - workspace._mouseMoveListener = null; - window.document.body.style.cursor = 'default'; - - // Update screen manager offset. - const coordOrigin = workspace.getCoordOrigin(); - screenManager.setOffset(coordOrigin.x, coordOrigin.y); - mWorkspace.enableWorkspaceEvents(true); - - if (!wasDragged) { - screenManager.fireEvent('click'); - } - }; - screenManager.addEvent('mouseup', workspace._mouseUpListener); - } - } else { - workspace._mouseUpListener(); - } - }; - screenManager.addEvent('mousedown', mouseDownListener); - } - - setViewPort(size) { - this._viewPort = size; - } -} - -export default Workspace; diff --git a/packages/mindplot/src/components/commands/AddFeatureToTopicCommand.js b/packages/mindplot/src/components/commands/AddFeatureToTopicCommand.js deleted file mode 100644 index 2bc75758..00000000 --- a/packages/mindplot/src/components/commands/AddFeatureToTopicCommand.js +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright [2015] [wisemapping] - * - * Licensed under WiseMapping Public License, Version 1.0 (the "License"). - * It is basically the Apache License, Version 2.0 (the "License") plus the - * "powered by wisemapping" text requirement on every single page; - * you may not use this file except in compliance with the License. - * You may obtain a copy of the license at - * - * http://www.wisemapping.org/license - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import { $assert, $defined } from '@wisemapping/core-js'; -import Command from '../Command'; - -class AddFeatureToTopicCommand extends Command { - /* - * @classdesc This command class handles do/undo of adding features to topics, e.g. an - * icon or a note. For a reference of existing features, refer to {@link mindplot.TopicFeature} - * @constructs - * @param {String} topicId the id of the topic - * @param {String} featureType the id of the feature type to add, e.g. "icon" - * @param {Object} attributes the attribute(s) of the respective feature model - * @extends mindplot.Command - * @see mindplot.model.FeatureModel and subclasses - */ - constructor(topicId, featureType, attributes) { - $assert($defined(topicId), 'topicId can not be null'); - $assert(featureType, 'featureType can not be null'); - $assert(attributes, 'attributes can not be null'); - - super(); - this._topicId = topicId; - this._featureType = featureType; - this._attributes = attributes; - this._featureModel = null; - } - - /** - * Overrides abstract parent method - */ - execute(commandContext) { - const topic = commandContext.findTopics(this._topicId)[0]; - - // Feature must be created only one time. - if (!this._featureModel) { - const model = topic.getModel(); - this._featureModel = model.createFeature(this._featureType, this._attributes); - } - topic.addFeature(this._featureModel); - } - - /** - * Overrides abstract parent method - * @see {@link mindplot.Command.undoExecute} - */ - undoExecute(commandContext) { - const topic = commandContext.findTopics(this._topicId)[0]; - topic.removeFeature(this._featureModel); - } -} - -export default AddFeatureToTopicCommand; diff --git a/packages/mindplot/src/components/commands/AddRelationshipCommand.js b/packages/mindplot/src/components/commands/AddRelationshipCommand.js deleted file mode 100644 index df914d92..00000000 --- a/packages/mindplot/src/components/commands/AddRelationshipCommand.js +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright [2015] [wisemapping] - * - * Licensed under WiseMapping Public License, Version 1.0 (the "License"). - * It is basically the Apache License, Version 2.0 (the "License") plus the - * "powered by wisemapping" text requirement on every single page; - * you may not use this file except in compliance with the License. - * You may obtain a copy of the license at - * - * http://www.wisemapping.org/license - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import { $assert } from '@wisemapping/core-js'; -import Command from '../Command'; - -class AddRelationshipCommand extends Command { - /** - * @classdesc This command class handles do/undo of adding a relationship to a topic. - * @constructs - * @param {XMLDOM} model - * @extends mindplot.Command - */ - constructor(model) { - $assert(model, 'Relationship model can not be null'); - - super(); - this._model = model; - } - - /** - * Overrides abstract parent method - */ - execute(commandContext) { - const relationship = commandContext.addRelationship(this._model); - relationship.setOnFocus(true); - } - - /** - * Overrides abstract parent method - * @see {@link mindplot.Command.undoExecute} - */ - undoExecute(commandContext) { - const rel = commandContext.findRelationships(this._model.getId()); - commandContext.deleteRelationship(rel[0]); - } -} - -export default AddRelationshipCommand; diff --git a/packages/mindplot/src/components/commands/AddTopicCommand.js b/packages/mindplot/src/components/commands/AddTopicCommand.js deleted file mode 100644 index 7df5907a..00000000 --- a/packages/mindplot/src/components/commands/AddTopicCommand.js +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Copyright [2015] [wisemapping] - * - * Licensed under WiseMapping Public License, Version 1.0 (the "License"). - * It is basically the Apache License, Version 2.0 (the "License") plus the - * "powered by wisemapping" text requirement on every single page; - * you may not use this file except in compliance with the License. - * You may obtain a copy of the license at - * - * http://www.wisemapping.org/license - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import { $assert, $defined } from '@wisemapping/core-js'; -import Command from '../Command'; - -class AddTopicCommand extends Command { - /** - * @classdesc This command class handles do/undo of adding one or multiple topics to - * the mindmap. - * @constructs - * @param {Array} models one or multiple models - * @param {Array} parentTopicsId ids of the parent topics to add the children to, or null - * when attaching a dragged node or a node/branch from clipboard - * @extends mindplot.Command - */ - constructor(models, parentTopicsId) { - $assert(models, 'models can not be null'); - $assert(parentTopicsId == null || parentTopicsId.length === models.length, 'parents and models must have the same size'); - - super(); - this._models = models; - this._parentsIds = parentTopicsId; - } - - /** - * Overrides abstract parent method - */ - execute(commandContext) { - const me = this; - this._models.forEach((model, index) => { - // Add a new topic ... - const topic = commandContext.createTopic(model); - - // Connect to topic ... - if (me._parentsIds) { - const parentId = me._parentsIds[index]; - if ($defined(parentId)) { - const parentTopic = commandContext.findTopics(parentId)[0]; - commandContext.connect(topic, parentTopic); - } - } else { - commandContext.addTopic(topic); - } - - // Select just created node ... - const designer = commandContext._designer; - designer.onObjectFocusEvent(topic); - topic.setOnFocus(true); - - // Render node ... - topic.setVisibility(true); - }); - } - - /** - * Overrides abstract parent method - * @see {@link mindplot.Command.undoExecute} - */ - undoExecute(commandContext) { - // Delete disconnected the nodes. Create a copy of the topics ... - const clonedModel = []; - this._models.forEach((model) => { - clonedModel.push(model.clone()); - }); - - // Finally, remove the nodes ... - this._models.forEach((model) => { - const topicId = model.getId(); - const topic = commandContext.findTopics(topicId)[0]; - commandContext.deleteTopic(topic); - }); - - this._models = clonedModel; - } -} - -export default AddTopicCommand; diff --git a/packages/mindplot/src/components/commands/ChangeFeatureToTopicCommand.js b/packages/mindplot/src/components/commands/ChangeFeatureToTopicCommand.js deleted file mode 100644 index 2ef6bbee..00000000 --- a/packages/mindplot/src/components/commands/ChangeFeatureToTopicCommand.js +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright [2015] [wisemapping] - * - * Licensed under WiseMapping Public License, Version 1.0 (the "License"). - * It is basically the Apache License, Version 2.0 (the "License") plus the - * "powered by wisemapping" text requirement on every single page; - * you may not use this file except in compliance with the License. - * You may obtain a copy of the license at - * - * http://www.wisemapping.org/license - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import { $assert, $defined } from '@wisemapping/core-js'; -import Command from '../Command'; - -class ChangeFeatureToTopicCommand extends Command { - /** - * @extends mindplot.Command - * @constructs - * @param topicId - * @param featureId - * @param attributes - * @throws will throw an error if topicId is null or undefined - * @throws will throw an error if featureId is null or undefined - * @throws will throw an error if attributes is null or undefined - */ - constructor(topicId, featureId, attributes) { - $assert($defined(topicId), 'topicId can not be null'); - $assert($defined(featureId), 'featureId can not be null'); - $assert($defined(attributes), 'attributes can not be null'); - - super(); - this._topicId = topicId; - this._featureId = featureId; - this._attributes = attributes; - } - - /** - * Overrides abstract parent method - */ - execute(commandContext) { - const topic = commandContext.findTopics(this._topicId)[0]; - const feature = topic.findFeatureById(this._featureId); - - const oldAttributes = feature.getAttributes(); - feature.setAttributes(this._attributes); - this._attributes = oldAttributes; - } - - /** - * Overrides abstract parent method - * @see {@link mindplot.Command.undoExecute} - */ - undoExecute(commandContext) { - this.execute(commandContext); - } -} - -export default ChangeFeatureToTopicCommand; diff --git a/packages/mindplot/src/components/commands/DeleteCommand.js b/packages/mindplot/src/components/commands/DeleteCommand.js deleted file mode 100644 index a868336a..00000000 --- a/packages/mindplot/src/components/commands/DeleteCommand.js +++ /dev/null @@ -1,179 +0,0 @@ -/* - * Copyright [2015] [wisemapping] - * - * Licensed under WiseMapping Public License, Version 1.0 (the "License"). - * It is basically the Apache License, Version 2.0 (the "License") plus the - * "powered by wisemapping" text requirement on every single page; - * you may not use this file except in compliance with the License. - * You may obtain a copy of the license at - * - * http://www.wisemapping.org/license - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import { $assert, $defined } from '@wisemapping/core-js'; -import Command from '../Command'; - -class DeleteCommand extends Command { - /** - * @classdesc This command class handles do/undo of deleting a topic. - * @constructs - * @param {Array} topicIds ids of the topics to delete - * @param {Array} relIds ids of the relationships connected to the topics - * @extends mindplot.Command - */ - constructor(topicIds, relIds) { - $assert($defined(relIds), 'topicIds can not be null'); - - super(); - this._relIds = relIds; - this._topicIds = topicIds; - this._deletedTopicModels = []; - this._deletedRelModel = []; - this._parentTopicIds = []; - } - - /** - * Overrides abstract parent method - */ - execute(commandContext) { - // If a parent has been selected for deletion, the children must be excluded from the delete ... - const topics = this._filterChildren(this._topicIds, commandContext); - - if (topics.length > 0) { - topics.forEach(((topic) => { - // In case that it's editing text node, force close without update ... - topic.closeEditors(); - - const model = topic.getModel(); - - // Delete relationships - const relationships = this._collectInDepthRelationships(topic); - this._deletedRelModel = this._deletedRelModel.concat( - relationships.map((rel) => rel.getModel().clone()), - ); - - relationships.forEach((relationship) => { - commandContext.deleteRelationship(relationship); - }); - - // Store information for undo ... - const clonedModel = model.clone(); - this._deletedTopicModels.push(clonedModel); - const outTopic = topic.getOutgoingConnectedTopic(); - let outTopicId = null; - if (outTopic != null) { - outTopicId = outTopic.getId(); - } - this._parentTopicIds.push(outTopicId); - - // Finally, delete the topic from the workspace... - commandContext.deleteTopic(topic); - })); - } - - const rels = commandContext.findRelationships(this._relIds); - if (rels.length > 0) { - rels.forEach(((rel) => { - this._deletedRelModel.push(rel.getModel().clone()); - commandContext.deleteRelationship(rel); - })); - } - } - - /** - * Overrides abstract parent method - * @see {@link mindplot.Command.undoExecute} - */ - undoExecute(commandContext) { - // Add all the topics ... - this._deletedTopicModels.forEach((model) => { - commandContext.createTopic(model); - }); - - // Do they need to be connected ? - this._deletedTopicModels.forEach(((topicModel, index) => { - const topics = commandContext.findTopics(topicModel.getId()); - - const parentId = this._parentTopicIds[index]; - if (parentId) { - const parentTopics = commandContext.findTopics(parentId); - commandContext.connect(topics[0], parentTopics[0]); - } - })); - - // Add rebuild relationships ... - this._deletedRelModel.forEach((model) => { - commandContext.addRelationship(model); - }); - - // Finally display the topics ... - this._deletedTopicModels.forEach((topicModel) => { - const topics = commandContext.findTopics(topicModel.getId()); - topics[0].setBranchVisibility(true); - }); - - // Focus on last recovered topic .. - if (this._deletedTopicModels.length > 0) { - const firstTopic = this._deletedTopicModels[0]; - const topic = commandContext.findTopics(firstTopic.getId())[0]; - topic.setOnFocus(true); - } - - this._deletedTopicModels = []; - this._parentTopicIds = []; - this._deletedRelModel = []; - } - - _filterChildren(topicIds, commandContext) { - const topics = commandContext.findTopics(topicIds); - - const result = []; - topics.forEach((topic) => { - let parent = topic.getParent(); - let found = false; - while (parent != null && !found) { - found = topicIds.includes(parent.getId()); - if (found) { - break; - } - parent = parent.getParent(); - } - - if (!found) { - result.push(topic); - } - }); - - return result; - } - - _collectInDepthRelationships(topic) { - let result = []; - result = result.concat(topic.getRelationships()); - - const children = topic.getChildren(); - const rels = children.map(((t) => this._collectInDepthRelationships(t))); - result = result.concat(rels.flat()); - - if (result.length > 0) { - // Filter for unique ... - result = result.sort((a, b) => a.getModel().getId() - b.getModel().getId()); - const ret = [result[0]]; - // start loop at 1 as element 0 can never be a duplicate - for (let i = 1; i < result.length; i++) { - if (result[i - 1] !== result[i]) { - ret.push(result[i]); - } - } - result = ret; - } - return result; - } -} - -export default DeleteCommand; diff --git a/packages/mindplot/src/components/commands/DragTopicCommand.js b/packages/mindplot/src/components/commands/DragTopicCommand.js deleted file mode 100644 index 0bdeede3..00000000 --- a/packages/mindplot/src/components/commands/DragTopicCommand.js +++ /dev/null @@ -1,101 +0,0 @@ -/* - * Copyright [2015] [wisemapping] - * - * Licensed under WiseMapping Public License, Version 1.0 (the "License"). - * It is basically the Apache License, Version 2.0 (the "License") plus the - * "powered by wisemapping" text requirement on every single page; - * you may not use this file except in compliance with the License. - * You may obtain a copy of the license at - * - * http://www.wisemapping.org/license - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import { $assert, $defined } from '@wisemapping/core-js'; -import Command from '../Command'; - -class DragTopicCommand extends Command { - /** - * @classdesc This command class handles do/undo of dragging a topic to a new position. - * @constructs - * @param {String} topicId id of the topic to drag - * @param {Object} position - * @param {Number} order the order property (children are displayed in order from 0 to n) - * @param {mindplot.Topic} parentTopic the topic to be made the dragged topic's new parent - * @extends mindplot.Command - */ - constructor(topicId, position, order, parentTopic) { - $assert(topicId, 'topicId must be defined'); - super(); - - this._topicsId = topicId; - if ($defined(parentTopic)) { - this._parentId = parentTopic.getId(); - } - - this._position = position; - this._order = order; - } - - /** - * Overrides abstract parent method - */ - execute(commandContext) { - const topic = commandContext.findTopics(this._topicsId)[0]; - topic.setVisibility(false); - - // Save old position ... - const origParentTopic = topic.getOutgoingConnectedTopic(); - - // In this case, topics are positioned using order ... - const origOrder = topic.getOrder(); - const origPosition = topic.getPosition(); - - // Disconnect topic .. - if ($defined(origParentTopic) && origParentTopic !== this._parentId) { - commandContext.disconnect(topic); - } - - // Set topic order ... - if (this._order != null) { - topic.setOrder(this._order); - } else if (this._position != null) { - commandContext.moveTopic(topic, this._position); - } else { - $assert('Illegal command state exception.'); - } - - // Finally, connect topic ... - if (origParentTopic !== this._parentId) { - if ($defined(this._parentId)) { - const parentTopic = commandContext.findTopics(this._parentId)[0]; - commandContext.connect(topic, parentTopic); - } - - // Backup old parent id ... - this._parentId = null; - if ($defined(origParentTopic)) { - this._parentId = origParentTopic.getId(); - } - } - topic.setVisibility(true); - - // Store for undo ... - this._order = origOrder; - this._position = origPosition; - } - - /** - * Overrides abstract parent method - * @see {@link mindplot.Command.undoExecute} - */ - undoExecute(commandContext) { - this.execute(commandContext); - } -} - -export default DragTopicCommand; diff --git a/packages/mindplot/src/components/commands/GenericFunctionCommand.js b/packages/mindplot/src/components/commands/GenericFunctionCommand.js deleted file mode 100644 index 98a9f8c0..00000000 --- a/packages/mindplot/src/components/commands/GenericFunctionCommand.js +++ /dev/null @@ -1,96 +0,0 @@ -/* - * Copyright [2015] [wisemapping] - * - * Licensed under WiseMapping Public License, Version 1.0 (the "License"). - * It is basically the Apache License, Version 2.0 (the "License") plus the - * "powered by wisemapping" text requirement on every single page; - * you may not use this file except in compliance with the License. - * You may obtain a copy of the license at - * - * http://www.wisemapping.org/license - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import { $assert, $defined } from '@wisemapping/core-js'; -import Command from '../Command'; - -class GenericFunctionCommand extends Command { - /** - * @classdesc This command handles do/undo of different actions, e.g. moving topics to - * a different position, changing text or font,... (for full reference check the - * StandaloneActionDispatcher i.e. the ActionDispatcher subclass in use) - * @constructs - * @param {Function} commandFunc the function the command shall execute - * @param {String|Array} topicsIds the ids of the topics affected - * @param {Object} [value] value arbitrary value necessary for the execution of the function, - * e.g. color, font family or text - * @extends mindplot.Command - */ - constructor(commandFunc, topicsIds, value) { - $assert(commandFunc, 'commandFunc must be defined'); - $assert($defined(topicsIds), 'topicsIds must be defined'); - - super(); - this._value = value; - this._topicsId = topicsIds; - this._commandFunc = commandFunc; - this._oldValues = []; - } - - /** - * Overrides abstract parent method - */ - execute(commandContext) { - if (!this.applied) { - let topics = null; - try { - topics = commandContext.findTopics(this._topicsId); - } catch (e) { - if (this._commandFunc.commandType !== 'changeTextToTopic') { - // Workaround: For some reason, there is a combination of events that involves - // making some modification and firing out of focus event. This is causing - // that a remove node try to be removed. - // In some other life, I will come with the solution. Almost aways occurs with IE9. - // I could be related with some change of order in sets o something similar. - throw e; - } - } - - if (topics != null) { - const me = this; - topics.forEach((topic) => { - const oldValue = me._commandFunc(topic, me._value); - me._oldValues.push(oldValue); - }); - } - this.applied = true; - } else { - throw new Error('Command can not be applied two times in a row.'); - } - } - - /** - * Overrides abstract parent method - * @see {@link mindplot.Command.undoExecute} - */ - undoExecute(commandContext) { - if (this.applied) { - const topics = commandContext.findTopics(this._topicsId); - - topics.forEach(((topic, index) => { - this._commandFunc(topic, this._oldValues[index]); - })); - - this.applied = false; - this._oldValues = []; - } else { - throw new Error('undo can not be applied.'); - } - } -} - -export default GenericFunctionCommand; diff --git a/packages/mindplot/src/components/commands/MoveControlPointCommand.js b/packages/mindplot/src/components/commands/MoveControlPointCommand.js deleted file mode 100644 index 28ca20a2..00000000 --- a/packages/mindplot/src/components/commands/MoveControlPointCommand.js +++ /dev/null @@ -1,122 +0,0 @@ -/* - * Copyright [2015] [wisemapping] - * - * Licensed under WiseMapping Public License, Version 1.0 (the "License"). - * It is basically the Apache License, Version 2.0 (the "License") plus the - * "powered by wisemapping" text requirement on every single page; - * you may not use this file except in compliance with the License. - * You may obtain a copy of the license at - * - * http://www.wisemapping.org/license - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import { $assert, $defined } from '@wisemapping/core-js'; -import Command from '../Command'; - -class MoveControlPointCommand extends Command { - /** - * @classdesc This command handles do/undo of changing the control points of a relationship - * arrow. These are the two points that appear when the relationship is on focus. They - * influence how the arrow is drawn (not the source or the destination topic nor the arrow - * direction) - * @constructs - * @param {ControlPoint} ctrlPointController - * @param {Number} point 0 for the destination control point, 1 for the source control point - * @param ctrlPointController {ControlPoint} - * @param point {Number} 0 for the destination control point, 1 for the source control point - */ - constructor(ctrlPointController, point) { - $assert(ctrlPointController, 'line can not be null'); - $assert($defined(point), 'point can not be null'); - - super(); - this._ctrlPointControler = ctrlPointController; - this._line = ctrlPointController._line; - this._controlPoint = { ...this._ctrlPointControler.getControlPoint(point) }; - this._oldControlPoint = { ...this._ctrlPointControler.getOriginalCtrlPoint(point) }; - this._originalEndPoint = this._ctrlPointControler.getOriginalEndPoint(point); - switch (point) { - case 0: - this._wasCustom = this._line.getLine().isSrcControlPointCustom(); - this._endPoint = { ...this._line.getLine().getFrom() }; - break; - case 1: - this._wasCustom = this._line.getLine().isDestControlPointCustom(); - this._endPoint = { ...this._line.getLine().getTo() }; - break; - default: - break; - } - this._point = point; - } - - /** - * Overrides abstract parent method - */ - execute() { - const model = this._line.getModel(); - switch (this._point) { - case 0: - model.setSrcCtrlPoint({ ...this._controlPoint }); - this._line.setFrom(this._endPoint.x, this._endPoint.y); - this._line.setIsSrcControlPointCustom(true); - this._line.setSrcControlPoint({ ...this._controlPoint }); - break; - case 1: - model.setDestCtrlPoint({ ...this._controlPoint }); - this._wasCustom = this._line.getLine().isDestControlPointCustom(); - this._line.setTo(this._endPoint.x, this._endPoint.y); - this._line.setIsDestControlPointCustom(true); - this._line.setDestControlPoint({ ...this._controlPoint }); - break; - default: - break; - } - if (this._line.isOnFocus()) { - this._line._refreshShape(); - this._ctrlPointControler.setLine(this._line); - } - this._line.getLine().updateLine(this._point); - } - - /** - * Overrides abstract parent method - * @see {@link mindplot.Command.undoExecute} - */ - undoExecute() { - const line = this._line; - const model = line.getModel(); - switch (this._point) { - case 0: - if ($defined(this._oldControlPoint)) { - line.setFrom(this._originalEndPoint.x, this._originalEndPoint.y); - model.setSrcCtrlPoint({ ...this._oldControlPoint }); - line.setSrcControlPoint({ ...this._oldControlPoint }); - line.setIsSrcControlPointCustom(this._wasCustom); - } - break; - case 1: - if ($defined(this._oldControlPoint)) { - line.setTo(this._originalEndPoint.x, this._originalEndPoint.y); - model.setDestCtrlPoint({ ...this._oldControlPoint }); - line.setDestControlPoint({ ...this._oldControlPoint }); - line.setIsDestControlPointCustom(this._wasCustom); - } - break; - default: - break; - } - this._line.getLine().updateLine(this._point); - if (this._line.isOnFocus()) { - this._ctrlPointControler.setLine(line); - line._refreshShape(); - } - } -} - -export default MoveControlPointCommand; diff --git a/packages/mindplot/src/components/commands/RemoveFeatureFromTopicCommand.js b/packages/mindplot/src/components/commands/RemoveFeatureFromTopicCommand.js deleted file mode 100644 index bfec8ae2..00000000 --- a/packages/mindplot/src/components/commands/RemoveFeatureFromTopicCommand.js +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright [2015] [wisemapping] - * - * Licensed under WiseMapping Public License, Version 1.0 (the "License"). - * It is basically the Apache License, Version 2.0 (the "License") plus the - * "powered by wisemapping" text requirement on every single page; - * you may not use this file except in compliance with the License. - * You may obtain a copy of the license at - * - * http://www.wisemapping.org/license - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import { $assert, $defined } from '@wisemapping/core-js'; -import Command from '../Command'; - -class RemoveFeatureFromTopicCommand extends Command { - /** - * @classdesc This command handles do/undo of removing a feature from a topic, e.g. an icon or - * a note. For a reference of existing features, refer to {@link mindplot.TopicFeature}. - * @constructs - * @param {String} topicId id of the topic to remove the feature from - * @param {String} featureId id of the feature to remove - * @extends mindplot.Command - */ - constructor(topicId, featureId) { - $assert($defined(topicId), 'topicId can not be null'); - $assert(featureId, 'iconModel can not be null'); - - super(); - this._topicId = topicId; - this._featureId = featureId; - this._oldFeature = null; - } - - /** - * Overrides abstract parent method - */ - execute(commandContext) { - const topic = commandContext.findTopics(this._topicId)[0]; - const feature = topic.findFeatureById(this._featureId); - topic.removeFeature(feature); - this._oldFeature = feature; - } - - /** - * Overrides abstract parent method - * @see {@link mindplot.Command.undoExecute} - */ - undoExecute(commandContext) { - const topic = commandContext.findTopics(this._topicId)[0]; - topic.addFeature(this._oldFeature); - this._oldFeature = null; - } -} - -export default RemoveFeatureFromTopicCommand; diff --git a/packages/mindplot/src/components/footer.js b/packages/mindplot/src/components/footer.js deleted file mode 100644 index 0d30003a..00000000 --- a/packages/mindplot/src/components/footer.js +++ /dev/null @@ -1,7 +0,0 @@ -import $ from 'jquery'; - -try { - $(document).trigger('loadcomplete', 'mind'); -} catch (e) { - console.error(e.stack); -} diff --git a/packages/mindplot/src/components/lang/ca.js b/packages/mindplot/src/components/lang/ca.js deleted file mode 100644 index 5682d468..00000000 --- a/packages/mindplot/src/components/lang/ca.js +++ /dev/null @@ -1,61 +0,0 @@ -const CA = { - DISCARD_CHANGES: 'Descartar els canvis', - SAVE: 'Desar', - INSERT: 'Inserir', - ZOOM_IN: 'Apropar', - ZOOM_OUT: 'Allunyar', - TOPIC_BORDER_COLOR: 'Color del bord', - TOPIC_SHAPE: 'Forma del Tòpic', - TOPIC_ADD: 'Afegir Tòpic', - TOPIC_DELETE: 'Esborrar Tòpic', - TOPIC_ICON: 'Afegir Icona', - TOPIC_LINK: 'Afegir Enllaç', - TOPIC_NOTE: 'Afegir Nota', - TOPIC_COLOR: 'Color del Tòpic', - TOPIC_RELATIONSHIP: 'Relació', - FONT_FAMILY: 'Tipus de font', - FONT_SIZE: 'Mida del text', - FONT_BOLD: 'Negreta', - FONT_ITALIC: 'Itàlica', - FONT_COLOR: 'Color del Text', - UNDO: 'Refer', - NOTE: 'Nota', - LOADING: 'Carregant ...', - PRINT: 'Imprimir', - PUBLISH: 'Publicar', - REDO: 'Desfer', - ADD_TOPIC: 'Afegir Tòpic', - COLLABORATE: 'Compartir', - EXPORT: 'Exportar', - HISTORY: 'Història', - SAVE_COMPLETE: 'Desat completat', - SAVING: 'Gravant ...', - ONE_TOPIC_MUST_BE_SELECTED: 'No ha estat possible crear un nou tòpic. Com a mínim ha de seleccionar un tòpic.', - ONLY_ONE_TOPIC_MUST_BE_SELECTED: "No ha estar possible crear un nou tòpic. Només un tòpic ha d'estar seleccionat.", - SAVE_COULD_NOT_BE_COMPLETED: "No s'ha pogut desar. Provi més tard.", - UNEXPECTED_ERROR_LOADING: "Ho sentim, un error ha esdevingut inesperadament. Provi recarregant l'editor, si el problema continua contacti a support@wisemapping.com.", - ZOOM_ERROR: 'No es pot fer més zoom.', - ZOOM_IN_ERROR: 'El zoom és massa creixent.', - MAIN_TOPIC: 'Tòpic principal', - SUB_TOPIC: 'Tòpic secundari', - ISOLATED_TOPIC: 'Tòpic aïllat', - CENTRAL_TOPIC: 'Tòpic central', - ONLY_ONE_TOPIC_MUST_BE_SELECTED_COLLAPSE: "Els tòpics fills no es poden col·lapsar. Només un tòpic ha d'estar seleccionat.", - SHORTCUTS: 'Accessos directes', - ENTITIES_COULD_NOT_BE_DELETED: 'El tòpic o la relució no poden ser esborrats. Com a mínim ha de seleccionar un.', - AT_LEAST_ONE_TOPIC_MUST_BE_SELECTED: 'Com a mínim ha de seleccionar un tòpic.', - CLIPBOARD_IS_EMPTY: 'Res a copiar.', - CENTRAL_TOPIC_CAN_NOT_BE_DELETED: 'El tòpic central no pot esborrar-se.', - RELATIONSHIP_COULD_NOT_BE_CREATED: "La relució no s'ha pout drear. Primer has de seleccionar una relució pare.", - SELECTION_COPIED_TO_CLIPBOARD: 'Tòpics copiats', - WRITE_YOUR_TEXT_HERE: 'Escriu aquí la teva nota ...', - REMOVE: 'Esborrar', - ACCEPT: 'Acceptar', - CANCEL: 'Cancel·lar', - LINK: 'Enllaç', - OPEN_LINK: 'Obrir Enllaç', - SESSION_EXPIRED: 'La seva sessió ha finalitzat. Si us plau, torni a connectar-se.', - DUMMY: '', -}; - -export default CA; diff --git a/packages/mindplot/src/components/lang/pt_BR.js b/packages/mindplot/src/components/lang/pt_BR.js deleted file mode 100644 index c35819bc..00000000 --- a/packages/mindplot/src/components/lang/pt_BR.js +++ /dev/null @@ -1,53 +0,0 @@ -const PT_BR = { - ZOOM_IN: 'Ampliar', - ZOOM_OUT: 'Reduzir', - TOPIC_SHAPE: 'Forma do T\u00f3pico', - TOPIC_ADD: 'Adicionar T\u00f3pico', - TOPIC_DELETE: 'Deletar T\u00f3pico', - TOPIC_ICON: 'Adicionar \u00cdcone', - TOPIC_LINK: 'Adicionar Link', - TOPIC_RELATIONSHIP: 'Relacionamento', - TOPIC_COLOR: 'Cor do T\u00f3pico', - TOPIC_BORDER_COLOR: 'Cor da Borda do T\u00f3pico', - TOPIC_NOTE: 'Adicionar Nota', - FONT_FAMILY: 'Tipo de Fonte', - FONT_SIZE: 'Tamanho da Fonte', - FONT_BOLD: 'Fonte Negrito', - FONT_ITALIC: 'Fonte It\u00e1lico', - UNDO: 'Desfazer', - REDO: 'Refazer', - INSERT: 'Inserir', - SAVE: 'Salvar', - NOTE: 'Nota', - ADD_TOPIC: 'Adicionar T\u00f3pico', - LOADING: 'Carregando ...', - EXPORT: 'Exportar', - PRINT: 'Imprimir', - PUBLISH: 'Publicar', - COLLABORATE: 'Colaborar', - HISTORY: 'Hist\u00f3ria', - DISCARD_CHANGES: 'Descartar Altera\u00e7\u00f5es', - FONT_COLOR: 'Cor da Fonte', - SAVING: 'Salvando ...', - SAVE_COMPLETE: 'Salvamento Completo', - ZOOM_IN_ERROR: 'Zoom excessivo.', - ZOOM_ERROR: 'N\u00e3o \u00e9 poss\u00edvel aplicar mais zoom.', - ONLY_ONE_TOPIC_MUST_BE_SELECTED: 'N\u00e3o foi poss\u00edvel criar t\u00f3pico. Apenas um t\u00f3pico deve ser selecionado.', - ONE_TOPIC_MUST_BE_SELECTED: 'N\u00e3o foi poss\u00edvel criar t\u00f3pico. Um t\u00f3pico deve ser selecionado.', - SAVE_COULD_NOT_BE_COMPLETED: 'Salvamento n\u00e3o pode ser completado. Tente novamente mais tarde.', - UNEXPECTED_ERROR_LOADING: 'Ocorreu um erro inesperado.\nTente recarregar novamente o editor. Se o problema persistir, contacte-nos em support@wisemapping.com.', - MAIN_TOPIC: 'T\u00f3pico Principal', - SUB_TOPIC: 'Sub T\u00f3pico', - ISOLATED_TOPIC: 'T\u00f3pico Isolado', - CENTRAL_TOPIC: 'T\u00f3pico Central', - SHORTCUTS: 'Atalho', - ENTITIES_COULD_NOT_BE_DELETED: 'O tópico ou a relação não pode ser apagado. Seleccionar pelo menos um.', - AT_LEAST_ONE_TOPIC_MUST_BE_SELECTED: 'Pelo menos um tópico deve ser selecionado', - CLIPBOARD_IS_EMPTY: 'Nada para copiar. Clipboard está vazio.', - CENTRAL_TOPIC_CAN_NOT_BE_DELETED: 'O tópico central não pode ser apagado.', - RELATIONSHIP_COULD_NOT_BE_CREATED: 'A relação não pode ser criada. Uma relação pai deve ser selecionada primeiro.', - SELECTION_COPIED_TO_CLIPBOARD: 'Tópicos copiados ao clipboard.', - ONLY_ONE_TOPIC_MUST_BE_SELECTED_COLLAPSE: 'Tópicos filhos não podem ser colapsados. Só um tópico deve ser selecionado.', -}; - -export default PT_BR; diff --git a/packages/mindplot/src/components/lang/zh_CN.js b/packages/mindplot/src/components/lang/zh_CN.js deleted file mode 100644 index 5d056929..00000000 --- a/packages/mindplot/src/components/lang/zh_CN.js +++ /dev/null @@ -1,53 +0,0 @@ -const ZH_CN = { - ZOOM_IN: '放大', - ZOOM_OUT: '缩小', - TOPIC_SHAPE: '节点外形', - TOPIC_ADD: '添加节点', - TOPIC_DELETE: '删除节点', - TOPIC_ICON: '加入图标', - TOPIC_LINK: '添加链接', - TOPIC_RELATIONSHIP: '关系', - TOPIC_COLOR: '节点颜色', - TOPIC_BORDER_COLOR: '边框颜色', - TOPIC_NOTE: '添加注释', - FONT_FAMILY: '字体', - FONT_SIZE: '文字大小', - FONT_BOLD: '粗体', - FONT_ITALIC: '斜体', - UNDO: '撤销', - REDO: '重做', - INSERT: '插入', - SAVE: '保存', - NOTE: '注释', - ADD_TOPIC: '添加节点', - LOADING: '载入中……', - EXPORT: '导出', - PRINT: '打印', - PUBLISH: '公开', - COLLABORATE: '共享', - HISTORY: '历史', - DISCARD_CHANGES: '清除改变', - FONT_COLOR: '文本颜色', - SAVING: '保存中……', - SAVE_COMPLETE: '完成保存', - ZOOM_IN_ERROR: '缩放过多。', - ZOOM_ERROR: '不能再缩放。', - ONLY_ONE_TOPIC_MUST_BE_SELECTED: '不能创建节点。仅能选择一个节点。', - ONE_TOPIC_MUST_BE_SELECTED: '不能创建节点。必须选择一个节点。', - ONLY_ONE_TOPIC_MUST_BE_SELECTED_COLLAPSE: '子节点不能折叠。必须选择一个节点。', - SAVE_COULD_NOT_BE_COMPLETED: '保存未完成。稍后再试。', - UNEXPECTED_ERROR_LOADING: '抱歉,突遭错误,我们无法处理你的请求。\n尝试重新装载编辑器。如果问题依然存在请联系support@wisemapping.com。', - MAIN_TOPIC: '主节点', - SUB_TOPIC: '子节点', - ISOLATED_TOPIC: '独立节点', - CENTRAL_TOPIC: '中心节点', - SHORTCUTS: '快捷键', - ENTITIES_COULD_NOT_BE_DELETED: '不能删除节点或者关系。至少应选择一个对象。', - AT_LEAST_ONE_TOPIC_MUST_BE_SELECTED: '至少应选择一个节点。', - CLIPBOARD_IS_EMPTY: '无法拷贝。 粘贴板是空的。', - CENTRAL_TOPIC_CAN_NOT_BE_DELETED: '不能删除根节点。', - RELATIONSHIP_COULD_NOT_BE_CREATED: '不能创建关系。 应先选择创建关系的一对上级节点。', - SELECTION_COPIED_TO_CLIPBOARD: '节点已拷贝到粘贴板。', -}; - -export default ZH_CN; diff --git a/packages/mindplot/src/components/lang/zh_TW.js b/packages/mindplot/src/components/lang/zh_TW.js deleted file mode 100644 index 9f899171..00000000 --- a/packages/mindplot/src/components/lang/zh_TW.js +++ /dev/null @@ -1,53 +0,0 @@ -const ZH_TW = { - ZOOM_IN: '放大', - ZOOM_OUT: '縮小', - TOPIC_SHAPE: '節點外形', - TOPIC_ADD: '添加節點', - TOPIC_DELETE: '刪除節點', - TOPIC_ICON: '加入圖示', - TOPIC_LINK: '添加鏈接', - TOPIC_RELATIONSHIP: '關係', - TOPIC_COLOR: '節點顏色', - TOPIC_BORDER_COLOR: '邊框顏色', - TOPIC_NOTE: '添加注釋', - FONT_FAMILY: '字體', - FONT_SIZE: '文字大小', - FONT_BOLD: '粗體', - FONT_ITALIC: '斜體', - UNDO: '撤銷', - REDO: '重做', - INSERT: '插入', - SAVE: '保存', - NOTE: '注釋', - ADD_TOPIC: '添加節點', - LOADING: '載入中……', - EXPORT: '導出', - PRINT: '列印', - PUBLISH: '公開', - COLLABORATE: '共用', - HISTORY: '歷史', - DISCARD_CHANGES: '清除改變', - FONT_COLOR: '文本顏色', - SAVING: '保存中……', - SAVE_COMPLETE: '完成保存', - ZOOM_IN_ERROR: '縮放過多。', - ZOOM_ERROR: '不能再縮放。', - ONLY_ONE_TOPIC_MUST_BE_SELECTED: '不能創建節點。僅能選擇一個節點。', - ONE_TOPIC_MUST_BE_SELECTED: '不能創建節點。必須選擇一個節點。', - ONLY_ONE_TOPIC_MUST_BE_SELECTED_COLLAPSE: '子節點不能折疊。必須選擇一個節點。', - SAVE_COULD_NOT_BE_COMPLETED: '保存未完成。稍後再試。', - UNEXPECTED_ERROR_LOADING: '抱歉,突遭錯誤,我們無法處理你的請求。\n嘗試重新裝載編輯器。如果問題依然存在請聯繫support@wisemapping.com。', - MAIN_TOPIC: '主節點', - SUB_TOPIC: '子節點', - ISOLATED_TOPIC: '獨立節點', - CENTRAL_TOPIC: '中心節點', - SHORTCUTS: '快捷鍵', - ENTITIES_COULD_NOT_BE_DELETED: '不能刪除節點或者關係。至少應選擇一個對象。', - AT_LEAST_ONE_TOPIC_MUST_BE_SELECTED: '至少應選擇一個節點。', - CLIPBOARD_IS_EMPTY: '無法拷貝。 粘貼板是空的。', - CENTRAL_TOPIC_CAN_NOT_BE_DELETED: '不能刪除根節點。', - RELATIONSHIP_COULD_NOT_BE_CREATED: '不能創建關係。 應先選擇創建關係的一對上級節點。', - SELECTION_COPIED_TO_CLIPBOARD: '節點已拷貝到粘貼板。', -}; - -export default ZH_TW; diff --git a/packages/mindplot/src/components/layout/ChildrenSorterStrategy.js b/packages/mindplot/src/components/layout/ChildrenSorterStrategy.js deleted file mode 100644 index 4053d4f3..00000000 --- a/packages/mindplot/src/components/layout/ChildrenSorterStrategy.js +++ /dev/null @@ -1,61 +0,0 @@ -/* eslint-disable no-unused-vars */ -/* eslint-disable class-methods-use-this */ -/* - * Copyright [2015] [wisemapping] - * - * Licensed under WiseMapping Public License, Version 1.0 (the "License"). - * It is basically the Apache License, Version 2.0 (the "License") plus the - * "powered by wisemapping" text requirement on every single page; - * you may not use this file except in compliance with the License. - * You may obtain a copy of the license at - * - * http://www.wisemapping.org/license - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -class ChildrenSorterStrategy { - computeChildrenIdByHeights(treeSet, node) { - throw new Error('Method must be implemented'); - } - - /** @abstract */ - computeOffsets(treeSet, node) { - throw new Error('Method must be implemented'); - } - - /** @abstract */ - insert(treeSet, parent, child, order) { - throw new Error('Method must be implemented'); - } - - /** @abstract */ - detach(treeSet, node) { - throw new Error('Method must be implemented'); - } - - /** @abstract */ - predict(treeSet, parent, node, position, free) { - throw new Error('Method must be implemented'); - } - - /** @abstract */ - verify(treeSet, node) { - throw new Error('Method must be implemented'); - } - - /** @abstract */ - getChildDirection(treeSet, node) { - throw new Error('Method must be implemented'); - } - - /** @abstract */ - toString() { - throw new Error('Method must be implemented: print name'); - } -} - -export default ChildrenSorterStrategy; diff --git a/packages/mindplot/src/components/libraries/bootstrap/css/bootstrap-colorpicker.css b/packages/mindplot/src/components/libraries/bootstrap/css/bootstrap-colorpicker.css deleted file mode 100644 index 28d2bca7..00000000 --- a/packages/mindplot/src/components/libraries/bootstrap/css/bootstrap-colorpicker.css +++ /dev/null @@ -1,214 +0,0 @@ -/*! - * Bootstrap Colorpicker - * http://mjolnic.github.io/bootstrap-colorpicker/ - * - * Originally written by (c) 2012 Stefan Petre - * Licensed under the Apache License v2.0 - * http://www.apache.org/licenses/LICENSE-2.0.txt - * - */ - -.colorpicker-saturation { - float: left; - width: 100px; - height: 100px; - cursor: crosshair; - background-image: url("../img/bootstrap-colorpicker/saturation.png"); -} - -.colorpicker-saturation i { - position: absolute; - top: 0; - left: 0; - display: block; - width: 5px; - height: 5px; - margin: -4px 0 0 -4px; - border: 1px solid #000; - -webkit-border-radius: 5px; - -moz-border-radius: 5px; - border-radius: 5px; -} - -.colorpicker-saturation i b { - display: block; - width: 5px; - height: 5px; - border: 1px solid #fff; - -webkit-border-radius: 5px; - -moz-border-radius: 5px; - border-radius: 5px; -} - -.colorpicker-hue, -.colorpicker-alpha { - float: left; - width: 15px; - height: 100px; - margin-bottom: 4px; - margin-left: 4px; - cursor: row-resize; -} - -.colorpicker-hue i, -.colorpicker-alpha i { - position: absolute; - top: 0; - left: 0; - display: block; - width: 100%; - height: 1px; - margin-top: -1px; - background: #000; - border-top: 1px solid #fff; -} - -.colorpicker-hue { - background-image: url("../img/bootstrap-colorpicker/hue.png"); -} - -.colorpicker-alpha { - display: none; - background-image: url("../img/bootstrap-colorpicker/alpha.png"); -} - -.colorpicker { - top: 0; - left: 0; - z-index: 2500; - min-width: 130px; - padding: 4px; - margin-top: 1px; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - *zoom: 1; -} - -.colorpicker:before, -.colorpicker:after { - display: table; - line-height: 0; - content: ""; -} - -.colorpicker:after { - clear: both; -} - -.colorpicker:before { - position: absolute; - top: -7px; - left: 6px; - display: inline-block; - border-right: 7px solid transparent; - border-bottom: 7px solid #ccc; - border-left: 7px solid transparent; - border-bottom-color: rgba(0, 0, 0, 0.2); - content: ''; -} - -.colorpicker:after { - position: absolute; - top: -6px; - left: 7px; - display: inline-block; - border-right: 6px solid transparent; - border-bottom: 6px solid #ffffff; - border-left: 6px solid transparent; - content: ''; -} - -.colorpicker div { - position: relative; -} - -.colorpicker.colorpicker-with-alpha { - min-width: 140px; -} - -.colorpicker.colorpicker-with-alpha .colorpicker-alpha { - display: block; -} - -.colorpicker-color { - height: 10px; - margin-top: 5px; - clear: both; - background-image: url("../img/bootstrap-colorpicker/alpha.png"); - background-position: 0 100%; -} - -.colorpicker-color div { - height: 10px; -} - -.colorpicker-element .input-group-addon i { - display: block; - width: 16px; - height: 16px; - cursor: pointer; -} - -.colorpicker.colorpicker-inline { - position: relative; - display: inline-block; - float: none; -} - -.colorpicker.colorpicker-horizontal { - width: 110px; - height: auto; - min-width: 110px; -} - -.colorpicker.colorpicker-horizontal .colorpicker-saturation { - margin-bottom: 4px; -} - -.colorpicker.colorpicker-horizontal .colorpicker-color { - width: 100px; -} - -.colorpicker.colorpicker-horizontal .colorpicker-hue, -.colorpicker.colorpicker-horizontal .colorpicker-alpha { - float: left; - width: 100px; - height: 15px; - margin-bottom: 4px; - margin-left: 0; - cursor: col-resize; -} - -.colorpicker.colorpicker-horizontal .colorpicker-hue i, -.colorpicker.colorpicker-horizontal .colorpicker-alpha i { - position: absolute; - top: 0; - left: 0; - display: block; - width: 1px; - height: 15px; - margin-top: 0; - background: #ffffff; - border: none; -} - -.colorpicker.colorpicker-horizontal .colorpicker-hue { - background-image: url("../img/bootstrap-colorpicker/hue-horizontal.png"); -} - -.colorpicker.colorpicker-horizontal .colorpicker-alpha { - background-image: url("../img/bootstrap-colorpicker/alpha-horizontal.png"); -} - -.colorpicker.colorpicker-hidden { - display: none; -} - -.colorpicker.colorpicker-visible { - display: block; -} - -.colorpicker-inline.colorpicker-visible { - display: inline-block; -} \ No newline at end of file diff --git a/packages/mindplot/src/components/libraries/bootstrap/css/bootstrap-colorpicker.min.css b/packages/mindplot/src/components/libraries/bootstrap/css/bootstrap-colorpicker.min.css deleted file mode 100644 index d48417fa..00000000 --- a/packages/mindplot/src/components/libraries/bootstrap/css/bootstrap-colorpicker.min.css +++ /dev/null @@ -1,9 +0,0 @@ -/*! - * Bootstrap Colorpicker - * http://mjolnic.github.io/bootstrap-colorpicker/ - * - * Originally written by (c) 2012 Stefan Petre - * Licensed under the Apache License v2.0 - * http://www.apache.org/licenses/LICENSE-2.0.txt - * - */.colorpicker-saturation{float:left;width:100px;height:100px;cursor:crosshair;background-image:url("../img/bootstrap-colorpicker/saturation.png")}.colorpicker-saturation i{position:absolute;top:0;left:0;display:block;width:5px;height:5px;margin:-4px 0 0 -4px;border:1px solid #000;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.colorpicker-saturation i b{display:block;width:5px;height:5px;border:1px solid #fff;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.colorpicker-hue,.colorpicker-alpha{float:left;width:15px;height:100px;margin-bottom:4px;margin-left:4px;cursor:row-resize}.colorpicker-hue i,.colorpicker-alpha i{position:absolute;top:0;left:0;display:block;width:100%;height:1px;margin-top:-1px;background:#000;border-top:1px solid #fff}.colorpicker-hue{background-image:url("../img/bootstrap-colorpicker/hue.png")}.colorpicker-alpha{display:none;background-image:url("../img/bootstrap-colorpicker/alpha.png")}.colorpicker{top:0;left:0;z-index:2500;min-width:130px;padding:4px;margin-top:1px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;*zoom:1}.colorpicker:before,.colorpicker:after{display:table;line-height:0;content:""}.colorpicker:after{clear:both}.colorpicker:before{position:absolute;top:-7px;left:6px;display:inline-block;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-left:7px solid transparent;border-bottom-color:rgba(0,0,0,0.2);content:''}.colorpicker:after{position:absolute;top:-6px;left:7px;display:inline-block;border-right:6px solid transparent;border-bottom:6px solid #fff;border-left:6px solid transparent;content:''}.colorpicker div{position:relative}.colorpicker.colorpicker-with-alpha{min-width:140px}.colorpicker.colorpicker-with-alpha .colorpicker-alpha{display:block}.colorpicker-color{height:10px;margin-top:5px;clear:both;background-image:url("../img/bootstrap-colorpicker/alpha.png");background-position:0 100%}.colorpicker-color div{height:10px}.colorpicker-element .input-group-addon i{display:block;width:16px;height:16px;cursor:pointer}.colorpicker.colorpicker-inline{position:relative;display:inline-block;float:none}.colorpicker.colorpicker-horizontal{width:110px;height:auto;min-width:110px}.colorpicker.colorpicker-horizontal .colorpicker-saturation{margin-bottom:4px}.colorpicker.colorpicker-horizontal .colorpicker-color{width:100px}.colorpicker.colorpicker-horizontal .colorpicker-hue,.colorpicker.colorpicker-horizontal .colorpicker-alpha{float:left;width:100px;height:15px;margin-bottom:4px;margin-left:0;cursor:col-resize}.colorpicker.colorpicker-horizontal .colorpicker-hue i,.colorpicker.colorpicker-horizontal .colorpicker-alpha i{position:absolute;top:0;left:0;display:block;width:1px;height:15px;margin-top:0;background:#fff;border:0}.colorpicker.colorpicker-horizontal .colorpicker-hue{background-image:url("../img/bootstrap-colorpicker/hue-horizontal.png")}.colorpicker.colorpicker-horizontal .colorpicker-alpha{background-image:url("../img/bootstrap-colorpicker/alpha-horizontal.png")}.colorpicker.colorpicker-hidden{display:none}.colorpicker.colorpicker-visible{display:block}.colorpicker-inline.colorpicker-visible{display:inline-block} \ No newline at end of file diff --git a/packages/mindplot/src/components/libraries/bootstrap/css/bootstrap-theme.css b/packages/mindplot/src/components/libraries/bootstrap/css/bootstrap-theme.css deleted file mode 100644 index a4069929..00000000 --- a/packages/mindplot/src/components/libraries/bootstrap/css/bootstrap-theme.css +++ /dev/null @@ -1,347 +0,0 @@ -/*! - * Bootstrap v3.1.1 (http://getbootstrap.com) - * Copyright 2011-2014 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - */ - -.btn-default, -.btn-primary, -.btn-success, -.btn-info, -.btn-warning, -.btn-danger { - text-shadow: 0 -1px 0 rgba(0, 0, 0, .2); - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075); -} -.btn-default:active, -.btn-primary:active, -.btn-success:active, -.btn-info:active, -.btn-warning:active, -.btn-danger:active, -.btn-default.active, -.btn-primary.active, -.btn-success.active, -.btn-info.active, -.btn-warning.active, -.btn-danger.active { - -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); - box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); -} -.btn:active, -.btn.active { - background-image: none; -} -.btn-default { - text-shadow: 0 1px 0 #fff; - background-image: -webkit-linear-gradient(top, #fff 0%, #e0e0e0 100%); - background-image: linear-gradient(to bottom, #fff 0%, #e0e0e0 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - background-repeat: repeat-x; - border-color: #dbdbdb; - border-color: #ccc; -} -.btn-default:hover, -.btn-default:focus { - background-color: #e0e0e0; - background-position: 0 -15px; -} -.btn-default:active, -.btn-default.active { - background-color: #e0e0e0; - border-color: #dbdbdb; -} -.btn-primary { - background-image: -webkit-linear-gradient(top, #428bca 0%, #2d6ca2 100%); - background-image: linear-gradient(to bottom, #428bca 0%, #2d6ca2 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff2d6ca2', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - background-repeat: repeat-x; - border-color: #2b669a; -} -.btn-primary:hover, -.btn-primary:focus { - background-color: #2d6ca2; - background-position: 0 -15px; -} -.btn-primary:active, -.btn-primary.active { - background-color: #2d6ca2; - border-color: #2b669a; -} -.btn-success { - background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%); - background-image: linear-gradient(to bottom, #5cb85c 0%, #419641 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - background-repeat: repeat-x; - border-color: #3e8f3e; -} -.btn-success:hover, -.btn-success:focus { - background-color: #419641; - background-position: 0 -15px; -} -.btn-success:active, -.btn-success.active { - background-color: #419641; - border-color: #3e8f3e; -} -.btn-info { - background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%); - background-image: linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - background-repeat: repeat-x; - border-color: #28a4c9; -} -.btn-info:hover, -.btn-info:focus { - background-color: #2aabd2; - background-position: 0 -15px; -} -.btn-info:active, -.btn-info.active { - background-color: #2aabd2; - border-color: #28a4c9; -} -.btn-warning { - background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%); - background-image: linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - background-repeat: repeat-x; - border-color: #e38d13; -} -.btn-warning:hover, -.btn-warning:focus { - background-color: #eb9316; - background-position: 0 -15px; -} -.btn-warning:active, -.btn-warning.active { - background-color: #eb9316; - border-color: #e38d13; -} -.btn-danger { - background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%); - background-image: linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - background-repeat: repeat-x; - border-color: #b92c28; -} -.btn-danger:hover, -.btn-danger:focus { - background-color: #c12e2a; - background-position: 0 -15px; -} -.btn-danger:active, -.btn-danger.active { - background-color: #c12e2a; - border-color: #b92c28; -} -.thumbnail, -.img-thumbnail { - -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075); - box-shadow: 0 1px 2px rgba(0, 0, 0, .075); -} -.dropdown-menu > li > a:hover, -.dropdown-menu > li > a:focus { - background-color: #e8e8e8; - background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); - background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0); - background-repeat: repeat-x; -} -.dropdown-menu > .active > a, -.dropdown-menu > .active > a:hover, -.dropdown-menu > .active > a:focus { - background-color: #357ebd; - background-image: -webkit-linear-gradient(top, #428bca 0%, #357ebd 100%); - background-image: linear-gradient(to bottom, #428bca 0%, #357ebd 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0); - background-repeat: repeat-x; -} -.navbar-default { - background-image: -webkit-linear-gradient(top, #fff 0%, #f8f8f8 100%); - background-image: linear-gradient(to bottom, #fff 0%, #f8f8f8 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - background-repeat: repeat-x; - border-radius: 4px; - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075); -} -.navbar-default .navbar-nav > .active > a { - background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f3f3f3 100%); - background-image: linear-gradient(to bottom, #ebebeb 0%, #f3f3f3 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff3f3f3', GradientType=0); - background-repeat: repeat-x; - -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075); - box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075); -} -.navbar-brand, -.navbar-nav > li > a { - text-shadow: 0 1px 0 rgba(255, 255, 255, .25); -} -.navbar-inverse { - background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222 100%); - background-image: linear-gradient(to bottom, #3c3c3c 0%, #222 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0); - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - background-repeat: repeat-x; -} -.navbar-inverse .navbar-nav > .active > a { - background-image: -webkit-linear-gradient(top, #222 0%, #282828 100%); - background-image: linear-gradient(to bottom, #222 0%, #282828 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff282828', GradientType=0); - background-repeat: repeat-x; - -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25); - box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25); -} -.navbar-inverse .navbar-brand, -.navbar-inverse .navbar-nav > li > a { - text-shadow: 0 -1px 0 rgba(0, 0, 0, .25); -} -.navbar-static-top, -.navbar-fixed-top, -.navbar-fixed-bottom { - border-radius: 0; -} -.alert { - text-shadow: 0 1px 0 rgba(255, 255, 255, .2); - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05); -} -.alert-success { - background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%); - background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0); - background-repeat: repeat-x; - border-color: #b2dba1; -} -.alert-info { - background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%); - background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0); - background-repeat: repeat-x; - border-color: #9acfea; -} -.alert-warning { - background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%); - background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0); - background-repeat: repeat-x; - border-color: #f5e79e; -} -.alert-danger { - background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%); - background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0); - background-repeat: repeat-x; - border-color: #dca7a7; -} -.progress { - background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%); - background-image: linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0); - background-repeat: repeat-x; -} -.progress-bar { - background-image: -webkit-linear-gradient(top, #428bca 0%, #3071a9 100%); - background-image: linear-gradient(to bottom, #428bca 0%, #3071a9 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3071a9', GradientType=0); - background-repeat: repeat-x; -} -.progress-bar-success { - background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%); - background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0); - background-repeat: repeat-x; -} -.progress-bar-info { - background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%); - background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0); - background-repeat: repeat-x; -} -.progress-bar-warning { - background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%); - background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0); - background-repeat: repeat-x; -} -.progress-bar-danger { - background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%); - background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0); - background-repeat: repeat-x; -} -.list-group { - border-radius: 4px; - -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075); - box-shadow: 0 1px 2px rgba(0, 0, 0, .075); -} -.list-group-item.active, -.list-group-item.active:hover, -.list-group-item.active:focus { - text-shadow: 0 -1px 0 #3071a9; - background-image: -webkit-linear-gradient(top, #428bca 0%, #3278b3 100%); - background-image: linear-gradient(to bottom, #428bca 0%, #3278b3 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3278b3', GradientType=0); - background-repeat: repeat-x; - border-color: #3278b3; -} -.panel { - -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .05); - box-shadow: 0 1px 2px rgba(0, 0, 0, .05); -} -.panel-default > .panel-heading { - background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); - background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0); - background-repeat: repeat-x; -} -.panel-primary > .panel-heading { - background-image: -webkit-linear-gradient(top, #428bca 0%, #357ebd 100%); - background-image: linear-gradient(to bottom, #428bca 0%, #357ebd 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0); - background-repeat: repeat-x; -} -.panel-success > .panel-heading { - background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%); - background-image: linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0); - background-repeat: repeat-x; -} -.panel-info > .panel-heading { - background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%); - background-image: linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0); - background-repeat: repeat-x; -} -.panel-warning > .panel-heading { - background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%); - background-image: linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0); - background-repeat: repeat-x; -} -.panel-danger > .panel-heading { - background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%); - background-image: linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0); - background-repeat: repeat-x; -} -.well { - background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%); - background-image: linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0); - background-repeat: repeat-x; - border-color: #dcdcdc; - -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1); - box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1); -} -/*# sourceMappingURL=bootstrap-theme.css.map */ diff --git a/packages/mindplot/src/components/libraries/bootstrap/css/bootstrap-theme.css.map b/packages/mindplot/src/components/libraries/bootstrap/css/bootstrap-theme.css.map deleted file mode 100644 index b36fc9a4..00000000 --- a/packages/mindplot/src/components/libraries/bootstrap/css/bootstrap-theme.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["less/theme.less","less/mixins.less"],"names":[],"mappings":"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","sourcesContent":["\n//\n// Load core variables and mixins\n// --------------------------------------------------\n\n@import \"variables.less\";\n@import \"mixins.less\";\n\n\n\n//\n// Buttons\n// --------------------------------------------------\n\n// Common styles\n.btn-default,\n.btn-primary,\n.btn-success,\n.btn-info,\n.btn-warning,\n.btn-danger {\n text-shadow: 0 -1px 0 rgba(0,0,0,.2);\n @shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 1px rgba(0,0,0,.075);\n .box-shadow(@shadow);\n\n // Reset the shadow\n &:active,\n &.active {\n .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n }\n}\n\n// Mixin for generating new styles\n.btn-styles(@btn-color: #555) {\n #gradient > .vertical(@start-color: @btn-color; @end-color: darken(@btn-color, 12%));\n .reset-filter(); // Disable gradients for IE9 because filter bleeds through rounded corners\n background-repeat: repeat-x;\n border-color: darken(@btn-color, 14%);\n\n &:hover,\n &:focus {\n background-color: darken(@btn-color, 12%);\n background-position: 0 -15px;\n }\n\n &:active,\n &.active {\n background-color: darken(@btn-color, 12%);\n border-color: darken(@btn-color, 14%);\n }\n}\n\n// Common styles\n.btn {\n // Remove the gradient for the pressed/active state\n &:active,\n &.active {\n background-image: none;\n }\n}\n\n// Apply the mixin to the buttons\n.btn-default { .btn-styles(@btn-default-bg); text-shadow: 0 1px 0 #fff; border-color: #ccc; }\n.btn-primary { .btn-styles(@btn-primary-bg); }\n.btn-success { .btn-styles(@btn-success-bg); }\n.btn-info { .btn-styles(@btn-info-bg); }\n.btn-warning { .btn-styles(@btn-warning-bg); }\n.btn-danger { .btn-styles(@btn-danger-bg); }\n\n\n\n//\n// Images\n// --------------------------------------------------\n\n.thumbnail,\n.img-thumbnail {\n .box-shadow(0 1px 2px rgba(0,0,0,.075));\n}\n\n\n\n//\n// Dropdowns\n// --------------------------------------------------\n\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n #gradient > .vertical(@start-color: @dropdown-link-hover-bg; @end-color: darken(@dropdown-link-hover-bg, 5%));\n background-color: darken(@dropdown-link-hover-bg, 5%);\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%));\n background-color: darken(@dropdown-link-active-bg, 5%);\n}\n\n\n\n//\n// Navbar\n// --------------------------------------------------\n\n// Default navbar\n.navbar-default {\n #gradient > .vertical(@start-color: lighten(@navbar-default-bg, 10%); @end-color: @navbar-default-bg);\n .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered\n border-radius: @navbar-border-radius;\n @shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 5px rgba(0,0,0,.075);\n .box-shadow(@shadow);\n\n .navbar-nav > .active > a {\n #gradient > .vertical(@start-color: darken(@navbar-default-bg, 5%); @end-color: darken(@navbar-default-bg, 2%));\n .box-shadow(inset 0 3px 9px rgba(0,0,0,.075));\n }\n}\n.navbar-brand,\n.navbar-nav > li > a {\n text-shadow: 0 1px 0 rgba(255,255,255,.25);\n}\n\n// Inverted navbar\n.navbar-inverse {\n #gradient > .vertical(@start-color: lighten(@navbar-inverse-bg, 10%); @end-color: @navbar-inverse-bg);\n .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered\n\n .navbar-nav > .active > a {\n #gradient > .vertical(@start-color: @navbar-inverse-bg; @end-color: lighten(@navbar-inverse-bg, 2.5%));\n .box-shadow(inset 0 3px 9px rgba(0,0,0,.25));\n }\n\n .navbar-brand,\n .navbar-nav > li > a {\n text-shadow: 0 -1px 0 rgba(0,0,0,.25);\n }\n}\n\n// Undo rounded corners in static and fixed navbars\n.navbar-static-top,\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n border-radius: 0;\n}\n\n\n\n//\n// Alerts\n// --------------------------------------------------\n\n// Common styles\n.alert {\n text-shadow: 0 1px 0 rgba(255,255,255,.2);\n @shadow: inset 0 1px 0 rgba(255,255,255,.25), 0 1px 2px rgba(0,0,0,.05);\n .box-shadow(@shadow);\n}\n\n// Mixin for generating new styles\n.alert-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 7.5%));\n border-color: darken(@color, 15%);\n}\n\n// Apply the mixin to the alerts\n.alert-success { .alert-styles(@alert-success-bg); }\n.alert-info { .alert-styles(@alert-info-bg); }\n.alert-warning { .alert-styles(@alert-warning-bg); }\n.alert-danger { .alert-styles(@alert-danger-bg); }\n\n\n\n//\n// Progress bars\n// --------------------------------------------------\n\n// Give the progress background some depth\n.progress {\n #gradient > .vertical(@start-color: darken(@progress-bg, 4%); @end-color: @progress-bg)\n}\n\n// Mixin for generating new styles\n.progress-bar-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 10%));\n}\n\n// Apply the mixin to the progress bars\n.progress-bar { .progress-bar-styles(@progress-bar-bg); }\n.progress-bar-success { .progress-bar-styles(@progress-bar-success-bg); }\n.progress-bar-info { .progress-bar-styles(@progress-bar-info-bg); }\n.progress-bar-warning { .progress-bar-styles(@progress-bar-warning-bg); }\n.progress-bar-danger { .progress-bar-styles(@progress-bar-danger-bg); }\n\n\n\n//\n// List groups\n// --------------------------------------------------\n\n.list-group {\n border-radius: @border-radius-base;\n .box-shadow(0 1px 2px rgba(0,0,0,.075));\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n text-shadow: 0 -1px 0 darken(@list-group-active-bg, 10%);\n #gradient > .vertical(@start-color: @list-group-active-bg; @end-color: darken(@list-group-active-bg, 7.5%));\n border-color: darken(@list-group-active-border, 7.5%);\n}\n\n\n\n//\n// Panels\n// --------------------------------------------------\n\n// Common styles\n.panel {\n .box-shadow(0 1px 2px rgba(0,0,0,.05));\n}\n\n// Mixin for generating new styles\n.panel-heading-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 5%));\n}\n\n// Apply the mixin to the panel headings only\n.panel-default > .panel-heading { .panel-heading-styles(@panel-default-heading-bg); }\n.panel-primary > .panel-heading { .panel-heading-styles(@panel-primary-heading-bg); }\n.panel-success > .panel-heading { .panel-heading-styles(@panel-success-heading-bg); }\n.panel-info > .panel-heading { .panel-heading-styles(@panel-info-heading-bg); }\n.panel-warning > .panel-heading { .panel-heading-styles(@panel-warning-heading-bg); }\n.panel-danger > .panel-heading { .panel-heading-styles(@panel-danger-heading-bg); }\n\n\n\n//\n// Wells\n// --------------------------------------------------\n\n.well {\n #gradient > .vertical(@start-color: darken(@well-bg, 5%); @end-color: @well-bg);\n border-color: darken(@well-bg, 10%);\n @shadow: inset 0 1px 3px rgba(0,0,0,.05), 0 1px 0 rgba(255,255,255,.1);\n .box-shadow(@shadow);\n}\n","//\n// Mixins\n// --------------------------------------------------\n\n\n// Utilities\n// -------------------------\n\n// Clearfix\n// Source: http://nicolasgallagher.com/micro-clearfix-hack/\n//\n// For modern browsers\n// 1. The space content is one way to avoid an Opera bug when the\n// contenteditable attribute is included anywhere else in the document.\n// Otherwise it causes space to appear at the top and bottom of elements\n// that are clearfixed.\n// 2. The use of `table` rather than `block` is only necessary if using\n// `:before` to contain the top-margins of child elements.\n.clearfix() {\n &:before,\n &:after {\n content: \" \"; // 1\n display: table; // 2\n }\n &:after {\n clear: both;\n }\n}\n\n// WebKit-style focus\n.tab-focus() {\n // Default\n outline: thin dotted;\n // WebKit\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\n\n// Center-align a block level element\n.center-block() {\n display: block;\n margin-left: auto;\n margin-right: auto;\n}\n\n// Sizing shortcuts\n.size(@width; @height) {\n width: @width;\n height: @height;\n}\n.square(@size) {\n .size(@size; @size);\n}\n\n// Placeholder text\n.placeholder(@color: @input-color-placeholder) {\n &::-moz-placeholder { color: @color; // Firefox\n opacity: 1; } // See https://github.com/twbs/bootstrap/pull/11526\n &:-ms-input-placeholder { color: @color; } // Internet Explorer 10+\n &::-webkit-input-placeholder { color: @color; } // Safari and Chrome\n}\n\n// Text overflow\n// Requires inline-block or block for proper styling\n.text-overflow() {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n// CSS image replacement\n//\n// Heads up! v3 launched with with only `.hide-text()`, but per our pattern for\n// mixins being reused as classes with the same name, this doesn't hold up. As\n// of v3.0.1 we have added `.text-hide()` and deprecated `.hide-text()`. Note\n// that we cannot chain the mixins together in Less, so they are repeated.\n//\n// Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757\n\n// Deprecated as of v3.0.1 (will be removed in v4)\n.hide-text() {\n font: ~\"0/0\" a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0;\n}\n// New mixin to use as of v3.0.1\n.text-hide() {\n .hide-text();\n}\n\n\n\n// CSS3 PROPERTIES\n// --------------------------------------------------\n\n// Single side border-radius\n.border-top-radius(@radius) {\n border-top-right-radius: @radius;\n border-top-left-radius: @radius;\n}\n.border-right-radius(@radius) {\n border-bottom-right-radius: @radius;\n border-top-right-radius: @radius;\n}\n.border-bottom-radius(@radius) {\n border-bottom-right-radius: @radius;\n border-bottom-left-radius: @radius;\n}\n.border-left-radius(@radius) {\n border-bottom-left-radius: @radius;\n border-top-left-radius: @radius;\n}\n\n// Drop shadows\n//\n// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's\n// supported browsers that have box shadow capabilities now support the\n// standard `box-shadow` property.\n.box-shadow(@shadow) {\n -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1\n box-shadow: @shadow;\n}\n\n// Transitions\n.transition(@transition) {\n -webkit-transition: @transition;\n transition: @transition;\n}\n.transition-property(@transition-property) {\n -webkit-transition-property: @transition-property;\n transition-property: @transition-property;\n}\n.transition-delay(@transition-delay) {\n -webkit-transition-delay: @transition-delay;\n transition-delay: @transition-delay;\n}\n.transition-duration(@transition-duration) {\n -webkit-transition-duration: @transition-duration;\n transition-duration: @transition-duration;\n}\n.transition-transform(@transition) {\n -webkit-transition: -webkit-transform @transition;\n -moz-transition: -moz-transform @transition;\n -o-transition: -o-transform @transition;\n transition: transform @transition;\n}\n\n// Transformations\n.rotate(@degrees) {\n -webkit-transform: rotate(@degrees);\n -ms-transform: rotate(@degrees); // IE9 only\n transform: rotate(@degrees);\n}\n.scale(@ratio; @ratio-y...) {\n -webkit-transform: scale(@ratio, @ratio-y);\n -ms-transform: scale(@ratio, @ratio-y); // IE9 only\n transform: scale(@ratio, @ratio-y);\n}\n.translate(@x; @y) {\n -webkit-transform: translate(@x, @y);\n -ms-transform: translate(@x, @y); // IE9 only\n transform: translate(@x, @y);\n}\n.skew(@x; @y) {\n -webkit-transform: skew(@x, @y);\n -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+\n transform: skew(@x, @y);\n}\n.translate3d(@x; @y; @z) {\n -webkit-transform: translate3d(@x, @y, @z);\n transform: translate3d(@x, @y, @z);\n}\n\n.rotateX(@degrees) {\n -webkit-transform: rotateX(@degrees);\n -ms-transform: rotateX(@degrees); // IE9 only\n transform: rotateX(@degrees);\n}\n.rotateY(@degrees) {\n -webkit-transform: rotateY(@degrees);\n -ms-transform: rotateY(@degrees); // IE9 only\n transform: rotateY(@degrees);\n}\n.perspective(@perspective) {\n -webkit-perspective: @perspective;\n -moz-perspective: @perspective;\n perspective: @perspective;\n}\n.perspective-origin(@perspective) {\n -webkit-perspective-origin: @perspective;\n -moz-perspective-origin: @perspective;\n perspective-origin: @perspective;\n}\n.transform-origin(@origin) {\n -webkit-transform-origin: @origin;\n -moz-transform-origin: @origin;\n -ms-transform-origin: @origin; // IE9 only\n transform-origin: @origin;\n}\n\n// Animations\n.animation(@animation) {\n -webkit-animation: @animation;\n animation: @animation;\n}\n.animation-name(@name) {\n -webkit-animation-name: @name;\n animation-name: @name;\n}\n.animation-duration(@duration) {\n -webkit-animation-duration: @duration;\n animation-duration: @duration;\n}\n.animation-timing-function(@timing-function) {\n -webkit-animation-timing-function: @timing-function;\n animation-timing-function: @timing-function;\n}\n.animation-delay(@delay) {\n -webkit-animation-delay: @delay;\n animation-delay: @delay;\n}\n.animation-iteration-count(@iteration-count) {\n -webkit-animation-iteration-count: @iteration-count;\n animation-iteration-count: @iteration-count;\n}\n.animation-direction(@direction) {\n -webkit-animation-direction: @direction;\n animation-direction: @direction;\n}\n\n// Backface visibility\n// Prevent browsers from flickering when using CSS 3D transforms.\n// Default value is `visible`, but can be changed to `hidden`\n.backface-visibility(@visibility){\n -webkit-backface-visibility: @visibility;\n -moz-backface-visibility: @visibility;\n backface-visibility: @visibility;\n}\n\n// Box sizing\n.box-sizing(@boxmodel) {\n -webkit-box-sizing: @boxmodel;\n -moz-box-sizing: @boxmodel;\n box-sizing: @boxmodel;\n}\n\n// User select\n// For selecting text on the page\n.user-select(@select) {\n -webkit-user-select: @select;\n -moz-user-select: @select;\n -ms-user-select: @select; // IE10+\n user-select: @select;\n}\n\n// Resize anything\n.resizable(@direction) {\n resize: @direction; // Options: horizontal, vertical, both\n overflow: auto; // Safari fix\n}\n\n// CSS3 Content Columns\n.content-columns(@column-count; @column-gap: @grid-gutter-width) {\n -webkit-column-count: @column-count;\n -moz-column-count: @column-count;\n column-count: @column-count;\n -webkit-column-gap: @column-gap;\n -moz-column-gap: @column-gap;\n column-gap: @column-gap;\n}\n\n// Optional hyphenation\n.hyphens(@mode: auto) {\n word-wrap: break-word;\n -webkit-hyphens: @mode;\n -moz-hyphens: @mode;\n -ms-hyphens: @mode; // IE10+\n -o-hyphens: @mode;\n hyphens: @mode;\n}\n\n// Opacity\n.opacity(@opacity) {\n opacity: @opacity;\n // IE8 filter\n @opacity-ie: (@opacity * 100);\n filter: ~\"alpha(opacity=@{opacity-ie})\";\n}\n\n\n\n// GRADIENTS\n// --------------------------------------------------\n\n#gradient {\n\n // Horizontal gradient, from left to right\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .horizontal(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(left, color-stop(@start-color @start-percent), color-stop(@end-color @end-percent)); // Safari 5.1-6, Chrome 10+\n background-image: linear-gradient(to right, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n // Vertical gradient, from top to bottom\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .vertical(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: linear-gradient(to bottom, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n .directional(@start-color: #555; @end-color: #333; @deg: 45deg) {\n background-repeat: repeat-x;\n background-image: -webkit-linear-gradient(@deg, @start-color, @end-color); // Safari 5.1-6, Chrome 10+\n background-image: linear-gradient(@deg, @start-color, @end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n }\n .horizontal-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(to right, @start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .vertical-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .radial(@inner-color: #555; @outer-color: #333) {\n background-image: -webkit-radial-gradient(circle, @inner-color, @outer-color);\n background-image: radial-gradient(circle, @inner-color, @outer-color);\n background-repeat: no-repeat;\n }\n .striped(@color: rgba(255,255,255,.15); @angle: 45deg) {\n background-image: -webkit-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n }\n}\n\n// Reset filters for IE\n//\n// When you need to remove a gradient background, do not forget to use this to reset\n// the IE filter for IE9 and below.\n.reset-filter() {\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(enabled = false)\"));\n}\n\n\n\n// Retina images\n//\n// Short retina mixin for setting background-image and -size\n\n.img-retina(@file-1x; @file-2x; @width-1x; @height-1x) {\n background-image: url(\"@{file-1x}\");\n\n @media\n only screen and (-webkit-min-device-pixel-ratio: 2),\n only screen and ( min--moz-device-pixel-ratio: 2),\n only screen and ( -o-min-device-pixel-ratio: 2/1),\n only screen and ( min-device-pixel-ratio: 2),\n only screen and ( min-resolution: 192dpi),\n only screen and ( min-resolution: 2dppx) {\n background-image: url(\"@{file-2x}\");\n background-size: @width-1x @height-1x;\n }\n}\n\n\n// Responsive image\n//\n// Keep images from scaling beyond the width of their parents.\n\n.img-responsive(@display: block) {\n display: @display;\n max-width: 100%; // Part 1: Set a maximum relative to the parent\n height: auto; // Part 2: Scale the height according to the width, otherwise you get stretching\n}\n\n\n// COMPONENT MIXINS\n// --------------------------------------------------\n\n// Horizontal dividers\n// -------------------------\n// Dividers (basically an hr) within dropdowns and nav lists\n.nav-divider(@color: #e5e5e5) {\n height: 1px;\n margin: ((@line-height-computed / 2) - 1) 0;\n overflow: hidden;\n background-color: @color;\n}\n\n// Panels\n// -------------------------\n.panel-variant(@border; @heading-text-color; @heading-bg-color; @heading-border) {\n border-color: @border;\n\n & > .panel-heading {\n color: @heading-text-color;\n background-color: @heading-bg-color;\n border-color: @heading-border;\n\n + .panel-collapse .panel-body {\n border-top-color: @border;\n }\n }\n & > .panel-footer {\n + .panel-collapse .panel-body {\n border-bottom-color: @border;\n }\n }\n}\n\n// Alerts\n// -------------------------\n.alert-variant(@background; @border; @text-color) {\n background-color: @background;\n border-color: @border;\n color: @text-color;\n\n hr {\n border-top-color: darken(@border, 5%);\n }\n .alert-link {\n color: darken(@text-color, 10%);\n }\n}\n\n// Tables\n// -------------------------\n.table-row-variant(@state; @background) {\n // Exact selectors below required to override `.table-striped` and prevent\n // inheritance to nested tables.\n .table > thead > tr,\n .table > tbody > tr,\n .table > tfoot > tr {\n > td.@{state},\n > th.@{state},\n &.@{state} > td,\n &.@{state} > th {\n background-color: @background;\n }\n }\n\n // Hover states for `.table-hover`\n // Note: this is not available for cells or rows within `thead` or `tfoot`.\n .table-hover > tbody > tr {\n > td.@{state}:hover,\n > th.@{state}:hover,\n &.@{state}:hover > td,\n &.@{state}:hover > th {\n background-color: darken(@background, 5%);\n }\n }\n}\n\n// List Groups\n// -------------------------\n.list-group-item-variant(@state; @background; @color) {\n .list-group-item-@{state} {\n color: @color;\n background-color: @background;\n\n a& {\n color: @color;\n\n .list-group-item-heading { color: inherit; }\n\n &:hover,\n &:focus {\n color: @color;\n background-color: darken(@background, 5%);\n }\n &.active,\n &.active:hover,\n &.active:focus {\n color: #fff;\n background-color: @color;\n border-color: @color;\n }\n }\n }\n}\n\n// Button variants\n// -------------------------\n// Easily pump out default styles, as well as :hover, :focus, :active,\n// and disabled options for all buttons\n.button-variant(@color; @background; @border) {\n color: @color;\n background-color: @background;\n border-color: @border;\n\n &:hover,\n &:focus,\n &:active,\n &.active,\n .open .dropdown-toggle& {\n color: @color;\n background-color: darken(@background, 8%);\n border-color: darken(@border, 12%);\n }\n &:active,\n &.active,\n .open .dropdown-toggle& {\n background-image: none;\n }\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n &,\n &:hover,\n &:focus,\n &:active,\n &.active {\n background-color: @background;\n border-color: @border;\n }\n }\n\n .badge {\n color: @background;\n background-color: @color;\n }\n}\n\n// Button sizes\n// -------------------------\n.button-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n padding: @padding-vertical @padding-horizontal;\n font-size: @font-size;\n line-height: @line-height;\n border-radius: @border-radius;\n}\n\n// Pagination\n// -------------------------\n.pagination-size(@padding-vertical; @padding-horizontal; @font-size; @border-radius) {\n > li {\n > a,\n > span {\n padding: @padding-vertical @padding-horizontal;\n font-size: @font-size;\n }\n &:first-child {\n > a,\n > span {\n .border-left-radius(@border-radius);\n }\n }\n &:last-child {\n > a,\n > span {\n .border-right-radius(@border-radius);\n }\n }\n }\n}\n\n// Labels\n// -------------------------\n.label-variant(@color) {\n background-color: @color;\n &[href] {\n &:hover,\n &:focus {\n background-color: darken(@color, 10%);\n }\n }\n}\n\n// Contextual backgrounds\n// -------------------------\n.bg-variant(@color) {\n background-color: @color;\n a&:hover {\n background-color: darken(@color, 10%);\n }\n}\n\n// Typography\n// -------------------------\n.text-emphasis-variant(@color) {\n color: @color;\n a&:hover {\n color: darken(@color, 10%);\n }\n}\n\n// Navbar vertical align\n// -------------------------\n// Vertically center elements in the navbar.\n// Example: an element has a height of 30px, so write out `.navbar-vertical-align(30px);` to calculate the appropriate top margin.\n.navbar-vertical-align(@element-height) {\n margin-top: ((@navbar-height - @element-height) / 2);\n margin-bottom: ((@navbar-height - @element-height) / 2);\n}\n\n// Progress bars\n// -------------------------\n.progress-bar-variant(@color) {\n background-color: @color;\n .progress-striped & {\n #gradient > .striped();\n }\n}\n\n// Responsive utilities\n// -------------------------\n// More easily include all the states for responsive-utilities.less.\n.responsive-visibility() {\n display: block !important;\n table& { display: table; }\n tr& { display: table-row !important; }\n th&,\n td& { display: table-cell !important; }\n}\n\n.responsive-invisibility() {\n display: none !important;\n}\n\n\n// Grid System\n// -----------\n\n// Centered container element\n.container-fixed() {\n margin-right: auto;\n margin-left: auto;\n padding-left: (@grid-gutter-width / 2);\n padding-right: (@grid-gutter-width / 2);\n &:extend(.clearfix all);\n}\n\n// Creates a wrapper for a series of columns\n.make-row(@gutter: @grid-gutter-width) {\n margin-left: (@gutter / -2);\n margin-right: (@gutter / -2);\n &:extend(.clearfix all);\n}\n\n// Generate the extra small columns\n.make-xs-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n float: left;\n width: percentage((@columns / @grid-columns));\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n}\n.make-xs-column-offset(@columns) {\n @media (min-width: @screen-xs-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-xs-column-push(@columns) {\n @media (min-width: @screen-xs-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-xs-column-pull(@columns) {\n @media (min-width: @screen-xs-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n\n\n// Generate the small columns\n.make-sm-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n\n @media (min-width: @screen-sm-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-offset(@columns) {\n @media (min-width: @screen-sm-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-push(@columns) {\n @media (min-width: @screen-sm-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-pull(@columns) {\n @media (min-width: @screen-sm-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n\n\n// Generate the medium columns\n.make-md-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n\n @media (min-width: @screen-md-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-offset(@columns) {\n @media (min-width: @screen-md-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-push(@columns) {\n @media (min-width: @screen-md-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-pull(@columns) {\n @media (min-width: @screen-md-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n\n\n// Generate the large columns\n.make-lg-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n\n @media (min-width: @screen-lg-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-offset(@columns) {\n @media (min-width: @screen-lg-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-push(@columns) {\n @media (min-width: @screen-lg-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-pull(@columns) {\n @media (min-width: @screen-lg-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n\n\n// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `@grid-columns`.\n\n.make-grid-columns() {\n // Common styles for all sizes of grid columns, widths 1-12\n .col(@index) when (@index = 1) { // initial\n @item: ~\".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}\";\n .col((@index + 1), @item);\n }\n .col(@index, @list) when (@index =< @grid-columns) { // general; \"=<\" isn't a typo\n @item: ~\".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}\";\n .col((@index + 1), ~\"@{list}, @{item}\");\n }\n .col(@index, @list) when (@index > @grid-columns) { // terminal\n @{list} {\n position: relative;\n // Prevent columns from collapsing when empty\n min-height: 1px;\n // Inner gutter via padding\n padding-left: (@grid-gutter-width / 2);\n padding-right: (@grid-gutter-width / 2);\n }\n }\n .col(1); // kickstart it\n}\n\n.float-grid-columns(@class) {\n .col(@index) when (@index = 1) { // initial\n @item: ~\".col-@{class}-@{index}\";\n .col((@index + 1), @item);\n }\n .col(@index, @list) when (@index =< @grid-columns) { // general\n @item: ~\".col-@{class}-@{index}\";\n .col((@index + 1), ~\"@{list}, @{item}\");\n }\n .col(@index, @list) when (@index > @grid-columns) { // terminal\n @{list} {\n float: left;\n }\n }\n .col(1); // kickstart it\n}\n\n.calc-grid-column(@index, @class, @type) when (@type = width) and (@index > 0) {\n .col-@{class}-@{index} {\n width: percentage((@index / @grid-columns));\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = push) {\n .col-@{class}-push-@{index} {\n left: percentage((@index / @grid-columns));\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = pull) {\n .col-@{class}-pull-@{index} {\n right: percentage((@index / @grid-columns));\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = offset) {\n .col-@{class}-offset-@{index} {\n margin-left: percentage((@index / @grid-columns));\n }\n}\n\n// Basic looping in LESS\n.loop-grid-columns(@index, @class, @type) when (@index >= 0) {\n .calc-grid-column(@index, @class, @type);\n // next iteration\n .loop-grid-columns((@index - 1), @class, @type);\n}\n\n// Create grid for specific class\n.make-grid(@class) {\n .float-grid-columns(@class);\n .loop-grid-columns(@grid-columns, @class, width);\n .loop-grid-columns(@grid-columns, @class, pull);\n .loop-grid-columns(@grid-columns, @class, push);\n .loop-grid-columns(@grid-columns, @class, offset);\n}\n\n// Form validation states\n//\n// Used in forms.less to generate the form validation CSS for warnings, errors,\n// and successes.\n\n.form-control-validation(@text-color: #555; @border-color: #ccc; @background-color: #f5f5f5) {\n // Color the label and help text\n .help-block,\n .control-label,\n .radio,\n .checkbox,\n .radio-inline,\n .checkbox-inline {\n color: @text-color;\n }\n // Set the border and box shadow on specific inputs to match\n .form-control {\n border-color: @border-color;\n .box-shadow(inset 0 1px 1px rgba(0,0,0,.075)); // Redeclare so transitions work\n &:focus {\n border-color: darken(@border-color, 10%);\n @shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 6px lighten(@border-color, 20%);\n .box-shadow(@shadow);\n }\n }\n // Set validation states also for addons\n .input-group-addon {\n color: @text-color;\n border-color: @border-color;\n background-color: @background-color;\n }\n // Optional feedback icon\n .form-control-feedback {\n color: @text-color;\n }\n}\n\n// Form control focus state\n//\n// Generate a customized focus state and for any input with the specified color,\n// which defaults to the `@input-focus-border` variable.\n//\n// We highly encourage you to not customize the default value, but instead use\n// this to tweak colors on an as-needed basis. This aesthetic change is based on\n// WebKit's default styles, but applicable to a wider range of browsers. Its\n// usability and accessibility should be taken into account with any change.\n//\n// Example usage: change the default blue border and shadow to white for better\n// contrast against a dark gray background.\n\n.form-control-focus(@color: @input-border-focus) {\n @color-rgba: rgba(red(@color), green(@color), blue(@color), .6);\n &:focus {\n border-color: @color;\n outline: 0;\n .box-shadow(~\"inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px @{color-rgba}\");\n }\n}\n\n// Form control sizing\n//\n// Relative text size, padding, and border-radii changes for form controls. For\n// horizontal sizing, wrap controls in the predefined grid classes. ``\n// element gets special love because it's special, and that's a fact!\n\n.input-size(@input-height; @padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n height: @input-height;\n padding: @padding-vertical @padding-horizontal;\n font-size: @font-size;\n line-height: @line-height;\n border-radius: @border-radius;\n\n select& {\n height: @input-height;\n line-height: @input-height;\n }\n\n textarea&,\n select[multiple]& {\n height: auto;\n }\n}\n","//\n// Variables\n// --------------------------------------------------\n\n\n//== Colors\n//\n//## Gray and brand colors for use across Bootstrap.\n\n@gray-darker: lighten(#000, 13.5%); // #222\n@gray-dark: lighten(#000, 20%); // #333\n@gray: lighten(#000, 33.5%); // #555\n@gray-light: lighten(#000, 60%); // #999\n@gray-lighter: lighten(#000, 93.5%); // #eee\n\n@brand-primary: #428bca;\n@brand-success: #5cb85c;\n@brand-info: #5bc0de;\n@brand-warning: #f0ad4e;\n@brand-danger: #d9534f;\n\n\n//== Scaffolding\n//\n// ## Settings for some of the most global styles.\n\n//** Background color for ``.\n@body-bg: #fff;\n//** Global text color on ``.\n@text-color: @gray-dark;\n\n//** Global textual link color.\n@link-color: @brand-primary;\n//** Link hover color set via `darken()` function.\n@link-hover-color: darken(@link-color, 15%);\n\n\n//== Typography\n//\n//## Font, line-height, and color for body text, headings, and more.\n\n@font-family-sans-serif: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n@font-family-serif: Georgia, \"Times New Roman\", Times, serif;\n//** Default monospace fonts for ``, ``, and `

`.\n@font-family-monospace:   Menlo, Monaco, Consolas, \"Courier New\", monospace;\n@font-family-base:        @font-family-sans-serif;\n\n@font-size-base:          13px;\n@font-size-large:         ceil((@font-size-base * 1.25)); // ~18px\n@font-size-small:         ceil((@font-size-base * 0.85)); // ~12px\n\n@font-size-h1:            floor((@font-size-base * 2.6)); // ~36px\n@font-size-h2:            floor((@font-size-base * 2.15)); // ~30px\n@font-size-h3:            ceil((@font-size-base * 1.7)); // ~24px\n@font-size-h4:            ceil((@font-size-base * 1.25)); // ~18px\n@font-size-h5:            @font-size-base;\n@font-size-h6:            ceil((@font-size-base * 0.85)); // ~12px\n\n//** Unit-less `line-height` for use in components like buttons.\n@line-height-base:        1.428571429; // 20/14\n//** Computed \"line-height\" (`font-size` * `line-height`) for use with `margin`, `padding`, etc.\n@line-height-computed:    floor((@font-size-base * @line-height-base)); // ~20px\n\n//** By default, this inherits from the ``.\n@headings-font-family:    inherit;\n@headings-font-weight:    500;\n@headings-line-height:    1.1;\n@headings-color:          inherit;\n\n\n//-- Iconography\n//\n//## Specify custom locations of the include Glyphicons icon font. Useful for those including Bootstrap via Bower.\n\n@icon-font-path:          \"../fonts/\";\n@icon-font-name:          \"glyphicons-halflings-regular\";\n@icon-font-svg-id:        \"glyphicons_halflingsregular\";\n\n//== Components\n//\n//## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start).\n\n@padding-base-vertical:     6px;\n@padding-base-horizontal:   12px;\n\n@padding-large-vertical:    10px;\n@padding-large-horizontal:  16px;\n\n@padding-small-vertical:    5px;\n@padding-small-horizontal:  10px;\n\n@padding-xs-vertical:       1px;\n@padding-xs-horizontal:     5px;\n\n@line-height-large:         1.33;\n@line-height-small:         1.5;\n\n@border-radius-base:        4px;\n@border-radius-large:       6px;\n@border-radius-small:       3px;\n\n//** Global color for active items (e.g., navs or dropdowns).\n@component-active-color:    #fff;\n//** Global background color for active items (e.g., navs or dropdowns).\n@component-active-bg:       @brand-primary;\n\n//** Width of the `border` for generating carets that indicator dropdowns.\n@caret-width-base:          4px;\n//** Carets increase slightly in size for larger components.\n@caret-width-large:         5px;\n\n\n//== Tables\n//\n//## Customizes the `.table` component with basic values, each used across all table variations.\n\n//** Padding for ``s and ``s.\n@table-cell-padding:            8px;\n//** Padding for cells in `.table-condensed`.\n@table-condensed-cell-padding:  5px;\n\n//** Default background color used for all tables.\n@table-bg:                      transparent;\n//** Background color used for `.table-striped`.\n@table-bg-accent:               #f9f9f9;\n//** Background color used for `.table-hover`.\n@table-bg-hover:                #f5f5f5;\n@table-bg-active:               @table-bg-hover;\n\n//** Border color for table and cell borders.\n@table-border-color:            #ddd;\n\n\n//== Buttons\n//\n//## For each of Bootstrap's buttons, define text, background and border color.\n\n@btn-font-weight:                normal;\n\n@btn-default-color:              #333;\n@btn-default-bg:                 #fff;\n@btn-default-border:             #ccc;\n\n@btn-primary-color:              #fff;\n@btn-primary-bg:                 @brand-primary;\n@btn-primary-border:             darken(@btn-primary-bg, 5%);\n\n@btn-success-color:              #fff;\n@btn-success-bg:                 @brand-success;\n@btn-success-border:             darken(@btn-success-bg, 5%);\n\n@btn-info-color:                 #fff;\n@btn-info-bg:                    @brand-info;\n@btn-info-border:                darken(@btn-info-bg, 5%);\n\n@btn-warning-color:              #fff;\n@btn-warning-bg:                 @brand-warning;\n@btn-warning-border:             darken(@btn-warning-bg, 5%);\n\n@btn-danger-color:               #fff;\n@btn-danger-bg:                  @brand-danger;\n@btn-danger-border:              darken(@btn-danger-bg, 5%);\n\n@btn-link-disabled-color:        @gray-light;\n\n\n//== Forms\n//\n//##\n\n//** `` background color\n@input-bg:                       #fff;\n//** `` background color\n@input-bg-disabled:              @gray-lighter;\n\n//** Text color for ``s\n@input-color:                    @gray;\n//** `` border color\n@input-border:                   #ccc;\n//** `` border radius\n@input-border-radius:            @border-radius-base;\n//** Border color for inputs on focus\n@input-border-focus:             #66afe9;\n\n//** Placeholder text color\n@input-color-placeholder:        @gray-light;\n\n//** Default `.form-control` height\n@input-height-base:              (@line-height-computed + (@padding-base-vertical * 2) + 2);\n//** Large `.form-control` height\n@input-height-large:             (ceil(@font-size-large * @line-height-large) + (@padding-large-vertical * 2) + 2);\n//** Small `.form-control` height\n@input-height-small:             (floor(@font-size-small * @line-height-small) + (@padding-small-vertical * 2) + 2);\n\n@legend-color:                   @gray-dark;\n@legend-border-color:            #e5e5e5;\n\n//** Background color for textual input addons\n@input-group-addon-bg:           @gray-lighter;\n//** Border color for textual input addons\n@input-group-addon-border-color: @input-border;\n\n\n//== Dropdowns\n//\n//## Dropdown menu container and contents.\n\n//** Background for the dropdown menu.\n@dropdown-bg:                    #fff;\n//** Dropdown menu `border-color`.\n@dropdown-border:                rgba(0,0,0,.15);\n//** Dropdown menu `border-color` **for IE8**.\n@dropdown-fallback-border:       #ccc;\n//** Divider color for between dropdown items.\n@dropdown-divider-bg:            #e5e5e5;\n\n//** Dropdown link text color.\n@dropdown-link-color:            @gray-dark;\n//** Hover color for dropdown links.\n@dropdown-link-hover-color:      darken(@gray-dark, 5%);\n//** Hover background for dropdown links.\n@dropdown-link-hover-bg:         #f5f5f5;\n\n//** Active dropdown menu item text color.\n@dropdown-link-active-color:     @component-active-color;\n//** Active dropdown menu item background color.\n@dropdown-link-active-bg:        @component-active-bg;\n\n//** Disabled dropdown menu item background color.\n@dropdown-link-disabled-color:   @gray-light;\n\n//** Text color for headers within dropdown menus.\n@dropdown-header-color:          @gray-light;\n\n// Note: Deprecated @dropdown-caret-color as of v3.1.0\n@dropdown-caret-color:           #000;\n\n\n//-- Z-index master list\n//\n// Warning: Avoid customizing these values. They're used for a bird's eye view\n// of components dependent on the z-axis and are designed to all work together.\n//\n// Note: These variables are not generated into the Customizer.\n\n@zindex-navbar:            1000;\n@zindex-dropdown:          1000;\n@zindex-popover:           1010;\n@zindex-tooltip:           1030;\n@zindex-navbar-fixed:      1030;\n@zindex-modal-background:  1040;\n@zindex-modal:             1050;\n\n\n//== Media queries breakpoints\n//\n//## Define the breakpoints at which your layout will change, adapting to different screen sizes.\n\n// Extra small screen / phone\n// Note: Deprecated @screen-xs and @screen-phone as of v3.0.1\n@screen-xs:                  480px;\n@screen-xs-min:              @screen-xs;\n@screen-phone:               @screen-xs-min;\n\n// Small screen / tablet\n// Note: Deprecated @screen-sm and @screen-tablet as of v3.0.1\n@screen-sm:                  768px;\n@screen-sm-min:              @screen-sm;\n@screen-tablet:              @screen-sm-min;\n\n// Medium screen / desktop\n// Note: Deprecated @screen-md and @screen-desktop as of v3.0.1\n@screen-md:                  992px;\n@screen-md-min:              @screen-md;\n@screen-desktop:             @screen-md-min;\n\n// Large screen / wide desktop\n// Note: Deprecated @screen-lg and @screen-lg-desktop as of v3.0.1\n@screen-lg:                  1200px;\n@screen-lg-min:              @screen-lg;\n@screen-lg-desktop:          @screen-lg-min;\n\n// So media queries don't overlap when required, provide a maximum\n@screen-xs-max:              (@screen-sm-min - 1);\n@screen-sm-max:              (@screen-md-min - 1);\n@screen-md-max:              (@screen-lg-min - 1);\n\n\n//== Grid system\n//\n//## Define your custom responsive grid.\n\n//** Number of columns in the grid.\n@grid-columns:              12;\n//** Padding between columns. Gets divided in half for the left and right.\n@grid-gutter-width:         30px;\n// Navbar collapse\n//** Point at which the navbar becomes uncollapsed.\n@grid-float-breakpoint:     @screen-sm-min;\n//** Point at which the navbar begins collapsing.\n@grid-float-breakpoint-max: (@grid-float-breakpoint - 1);\n\n\n//== Container sizes\n//\n//## Define the maximum width of `.container` for different screen sizes.\n\n// Small screen / tablet\n@container-tablet:             ((720px + @grid-gutter-width));\n//** For `@screen-sm-min` and up.\n@container-sm:                 @container-tablet;\n\n// Medium screen / desktop\n@container-desktop:            ((940px + @grid-gutter-width));\n//** For `@screen-md-min` and up.\n@container-md:                 @container-desktop;\n\n// Large screen / wide desktop\n@container-large-desktop:      ((1140px + @grid-gutter-width));\n//** For `@screen-lg-min` and up.\n@container-lg:                 @container-large-desktop;\n\n\n//== Navbar\n//\n//##\n\n// Basics of a navbar\n@navbar-height:                    50px;\n@navbar-margin-bottom:             @line-height-computed;\n@navbar-border-radius:             @border-radius-base;\n@navbar-padding-horizontal:        floor((@grid-gutter-width / 2));\n@navbar-padding-vertical:          ((@navbar-height - @line-height-computed) / 2);\n@navbar-collapse-max-height:       340px;\n\n@navbar-default-color:             #777;\n@navbar-default-bg:                #f8f8f8;\n@navbar-default-border:            darken(@navbar-default-bg, 6.5%);\n\n// Navbar links\n@navbar-default-link-color:                #777;\n@navbar-default-link-hover-color:          #333;\n@navbar-default-link-hover-bg:             transparent;\n@navbar-default-link-active-color:         #555;\n@navbar-default-link-active-bg:            darken(@navbar-default-bg, 6.5%);\n@navbar-default-link-disabled-color:       #ccc;\n@navbar-default-link-disabled-bg:          transparent;\n\n// Navbar brand label\n@navbar-default-brand-color:               @navbar-default-link-color;\n@navbar-default-brand-hover-color:         darken(@navbar-default-brand-color, 10%);\n@navbar-default-brand-hover-bg:            transparent;\n\n// Navbar toggle\n@navbar-default-toggle-hover-bg:           #ddd;\n@navbar-default-toggle-icon-bar-bg:        #888;\n@navbar-default-toggle-border-color:       #ddd;\n\n\n// Inverted navbar\n// Reset inverted navbar basics\n@navbar-inverse-color:                      @gray-light;\n@navbar-inverse-bg:                         #222;\n@navbar-inverse-border:                     darken(@navbar-inverse-bg, 10%);\n\n// Inverted navbar links\n@navbar-inverse-link-color:                 @gray-light;\n@navbar-inverse-link-hover-color:           #fff;\n@navbar-inverse-link-hover-bg:              transparent;\n@navbar-inverse-link-active-color:          @navbar-inverse-link-hover-color;\n@navbar-inverse-link-active-bg:             darken(@navbar-inverse-bg, 10%);\n@navbar-inverse-link-disabled-color:        #444;\n@navbar-inverse-link-disabled-bg:           transparent;\n\n// Inverted navbar brand label\n@navbar-inverse-brand-color:                @navbar-inverse-link-color;\n@navbar-inverse-brand-hover-color:          #fff;\n@navbar-inverse-brand-hover-bg:             transparent;\n\n// Inverted navbar toggle\n@navbar-inverse-toggle-hover-bg:            #333;\n@navbar-inverse-toggle-icon-bar-bg:         #fff;\n@navbar-inverse-toggle-border-color:        #333;\n\n\n//== Navs\n//\n//##\n\n//=== Shared nav styles\n@nav-link-padding:                          10px 15px;\n@nav-link-hover-bg:                         @gray-lighter;\n\n@nav-disabled-link-color:                   @gray-light;\n@nav-disabled-link-hover-color:             @gray-light;\n\n@nav-open-link-hover-color:                 #fff;\n\n//== Tabs\n@nav-tabs-border-color:                     #ddd;\n\n@nav-tabs-link-hover-border-color:          @gray-lighter;\n\n@nav-tabs-active-link-hover-bg:             @body-bg;\n@nav-tabs-active-link-hover-color:          @gray;\n@nav-tabs-active-link-hover-border-color:   #ddd;\n\n@nav-tabs-justified-link-border-color:            #ddd;\n@nav-tabs-justified-active-link-border-color:     @body-bg;\n\n//== Pills\n@nav-pills-border-radius:                   @border-radius-base;\n@nav-pills-active-link-hover-bg:            @component-active-bg;\n@nav-pills-active-link-hover-color:         @component-active-color;\n\n\n//== Pagination\n//\n//##\n\n@pagination-color:                     @link-color;\n@pagination-bg:                        #fff;\n@pagination-border:                    #ddd;\n\n@pagination-hover-color:               @link-hover-color;\n@pagination-hover-bg:                  @gray-lighter;\n@pagination-hover-border:              #ddd;\n\n@pagination-active-color:              #fff;\n@pagination-active-bg:                 @brand-primary;\n@pagination-active-border:             @brand-primary;\n\n@pagination-disabled-color:            @gray-light;\n@pagination-disabled-bg:               #fff;\n@pagination-disabled-border:           #ddd;\n\n\n//== Pager\n//\n//##\n\n@pager-bg:                             @pagination-bg;\n@pager-border:                         @pagination-border;\n@pager-border-radius:                  15px;\n\n@pager-hover-bg:                       @pagination-hover-bg;\n\n@pager-active-bg:                      @pagination-active-bg;\n@pager-active-color:                   @pagination-active-color;\n\n@pager-disabled-color:                 @pagination-disabled-color;\n\n\n//== Jumbotron\n//\n//##\n\n@jumbotron-padding:              30px;\n@jumbotron-color:                inherit;\n@jumbotron-bg:                   @gray-lighter;\n@jumbotron-heading-color:        inherit;\n@jumbotron-font-size:            ceil((@font-size-base * 1.5));\n\n\n//== Form states and alerts\n//\n//## Define colors for form feedback states and, by default, alerts.\n\n@state-success-text:             #3c763d;\n@state-success-bg:               #dff0d8;\n@state-success-border:           darken(spin(@state-success-bg, -10), 5%);\n\n@state-info-text:                #31708f;\n@state-info-bg:                  #d9edf7;\n@state-info-border:              darken(spin(@state-info-bg, -10), 7%);\n\n@state-warning-text:             #8a6d3b;\n@state-warning-bg:               #fcf8e3;\n@state-warning-border:           darken(spin(@state-warning-bg, -10), 5%);\n\n@state-danger-text:              #a94442;\n@state-danger-bg:                #f2dede;\n@state-danger-border:            darken(spin(@state-danger-bg, -10), 5%);\n\n\n//== Tooltips\n//\n//##\n\n//** Tooltip max width\n@tooltip-max-width:           200px;\n//** Tooltip text color\n@tooltip-color:               #fff;\n//** Tooltip background color\n@tooltip-bg:                  #000;\n@tooltip-opacity:             .9;\n\n//** Tooltip arrow width\n@tooltip-arrow-width:         5px;\n//** Tooltip arrow color\n@tooltip-arrow-color:         @tooltip-bg;\n\n\n//== Popovers\n//\n//##\n\n//** Popover body background color\n@popover-bg:                          #fff;\n//** Popover maximum width\n@popover-max-width:                   276px;\n//** Popover border color\n@popover-border-color:                rgba(0,0,0,.2);\n//** Popover fallback border color\n@popover-fallback-border-color:       #ccc;\n\n//** Popover title background color\n@popover-title-bg:                    darken(@popover-bg, 3%);\n\n//** Popover arrow width\n@popover-arrow-width:                 10px;\n//** Popover arrow color\n@popover-arrow-color:                 #fff;\n\n//** Popover outer arrow width\n@popover-arrow-outer-width:           (@popover-arrow-width + 1);\n//** Popover outer arrow color\n@popover-arrow-outer-color:           fadein(@popover-border-color, 5%);\n//** Popover outer arrow fallback color\n@popover-arrow-outer-fallback-color:  darken(@popover-fallback-border-color, 20%);\n\n\n//== Labels\n//\n//##\n\n//** Default label background color\n@label-default-bg:            @gray-light;\n//** Primary label background color\n@label-primary-bg:            @brand-primary;\n//** Success label background color\n@label-success-bg:            @brand-success;\n//** Info label background color\n@label-info-bg:               @brand-info;\n//** Warning label background color\n@label-warning-bg:            @brand-warning;\n//** Danger label background color\n@label-danger-bg:             @brand-danger;\n\n//** Default label text color\n@label-color:                 #fff;\n//** Default text color of a linked label\n@label-link-hover-color:      #fff;\n\n\n//== Modals\n//\n//##\n\n//** Padding applied to the modal body\n@modal-inner-padding:         20px;\n\n//** Padding applied to the modal title\n@modal-title-padding:         15px;\n//** Modal title line-height\n@modal-title-line-height:     @line-height-base;\n\n//** Background color of modal content area\n@modal-content-bg:                             #fff;\n//** Modal content border color\n@modal-content-border-color:                   rgba(0,0,0,.2);\n//** Modal content border color **for IE8**\n@modal-content-fallback-border-color:          #999;\n\n//** Modal backdrop background color\n@modal-backdrop-bg:           #000;\n//** Modal backdrop opacity\n@modal-backdrop-opacity:      .5;\n//** Modal header border color\n@modal-header-border-color:   #e5e5e5;\n//** Modal footer border color\n@modal-footer-border-color:   @modal-header-border-color;\n\n@modal-lg:                    900px;\n@modal-md:                    600px;\n@modal-sm:                    300px;\n\n\n//== Alerts\n//\n//## Define alert colors, border radius, and padding.\n\n@alert-padding:               15px;\n@alert-border-radius:         @border-radius-base;\n@alert-link-font-weight:      bold;\n\n@alert-success-bg:            @state-success-bg;\n@alert-success-text:          @state-success-text;\n@alert-success-border:        @state-success-border;\n\n@alert-info-bg:               @state-info-bg;\n@alert-info-text:             @state-info-text;\n@alert-info-border:           @state-info-border;\n\n@alert-warning-bg:            @state-warning-bg;\n@alert-warning-text:          @state-warning-text;\n@alert-warning-border:        @state-warning-border;\n\n@alert-danger-bg:             @state-danger-bg;\n@alert-danger-text:           @state-danger-text;\n@alert-danger-border:         @state-danger-border;\n\n\n//== Progress bars\n//\n//##\n\n//** Background color of the whole progress component\n@progress-bg:                 #f5f5f5;\n//** Progress bar text color\n@progress-bar-color:          #fff;\n\n//** Default progress bar color\n@progress-bar-bg:             @brand-primary;\n//** Success progress bar color\n@progress-bar-success-bg:     @brand-success;\n//** Warning progress bar color\n@progress-bar-warning-bg:     @brand-warning;\n//** Danger progress bar color\n@progress-bar-danger-bg:      @brand-danger;\n//** Info progress bar color\n@progress-bar-info-bg:        @brand-info;\n\n\n//== List group\n//\n//##\n\n//** Background color on `.list-group-item`\n@list-group-bg:                 #fff;\n//** `.list-group-item` border color\n@list-group-border:             #ddd;\n//** List group border radius\n@list-group-border-radius:      @border-radius-base;\n\n//** Background color of single list elements on hover\n@list-group-hover-bg:           #f5f5f5;\n//** Text color of active list elements\n@list-group-active-color:       @component-active-color;\n//** Background color of active list elements\n@list-group-active-bg:          @component-active-bg;\n//** Border color of active list elements\n@list-group-active-border:      @list-group-active-bg;\n@list-group-active-text-color:  lighten(@list-group-active-bg, 40%);\n\n@list-group-link-color:         #555;\n@list-group-link-heading-color: #333;\n\n\n//== Panels\n//\n//##\n\n@panel-bg:                    #fff;\n@panel-body-padding:          15px;\n@panel-border-radius:         @border-radius-base;\n\n//** Border color for elements within panels\n@panel-inner-border:          #ddd;\n@panel-footer-bg:             #f5f5f5;\n\n@panel-default-text:          @gray-dark;\n@panel-default-border:        #ddd;\n@panel-default-heading-bg:    #f5f5f5;\n\n@panel-primary-text:          #fff;\n@panel-primary-border:        @brand-primary;\n@panel-primary-heading-bg:    @brand-primary;\n\n@panel-success-text:          @state-success-text;\n@panel-success-border:        @state-success-border;\n@panel-success-heading-bg:    @state-success-bg;\n\n@panel-info-text:             @state-info-text;\n@panel-info-border:           @state-info-border;\n@panel-info-heading-bg:       @state-info-bg;\n\n@panel-warning-text:          @state-warning-text;\n@panel-warning-border:        @state-warning-border;\n@panel-warning-heading-bg:    @state-warning-bg;\n\n@panel-danger-text:           @state-danger-text;\n@panel-danger-border:         @state-danger-border;\n@panel-danger-heading-bg:     @state-danger-bg;\n\n\n//== Thumbnails\n//\n//##\n\n//** Padding around the thumbnail image\n@thumbnail-padding:           4px;\n//** Thumbnail background color\n@thumbnail-bg:                @body-bg;\n//** Thumbnail border color\n@thumbnail-border:            #ddd;\n//** Thumbnail border radius\n@thumbnail-border-radius:     @border-radius-base;\n\n//** Custom text color for thumbnail captions\n@thumbnail-caption-color:     @text-color;\n//** Padding around the thumbnail caption\n@thumbnail-caption-padding:   9px;\n\n\n//== Wells\n//\n//##\n\n@well-bg:                     #f5f5f5;\n@well-border:                 darken(@well-bg, 7%);\n\n\n//== Badges\n//\n//##\n\n@badge-color:                 #fff;\n//** Linked badge text color on hover\n@badge-link-hover-color:      #fff;\n@badge-bg:                    @gray-light;\n\n//** Badge text color in active nav link\n@badge-active-color:          @link-color;\n//** Badge background color in active nav link\n@badge-active-bg:             #fff;\n\n@badge-font-weight:           bold;\n@badge-line-height:           1;\n@badge-border-radius:         10px;\n\n\n//== Breadcrumbs\n//\n//##\n\n@breadcrumb-padding-vertical:   8px;\n@breadcrumb-padding-horizontal: 15px;\n//** Breadcrumb background color\n@breadcrumb-bg:                 #f5f5f5;\n//** Breadcrumb text color\n@breadcrumb-color:              #ccc;\n//** Text color of current page in the breadcrumb\n@breadcrumb-active-color:       @gray-light;\n//** Textual separator for between breadcrumb elements\n@breadcrumb-separator:          \"/\";\n\n\n//== Carousel\n//\n//##\n\n@carousel-text-shadow:                        0 1px 2px rgba(0,0,0,.6);\n\n@carousel-control-color:                      #fff;\n@carousel-control-width:                      15%;\n@carousel-control-opacity:                    .5;\n@carousel-control-font-size:                  20px;\n\n@carousel-indicator-active-bg:                #fff;\n@carousel-indicator-border-color:             #fff;\n\n@carousel-caption-color:                      #fff;\n\n\n//== Close\n//\n//##\n\n@close-font-weight:           bold;\n@close-color:                 #000;\n@close-text-shadow:           0 1px 0 #fff;\n\n\n//== Code\n//\n//##\n\n@code-color:                  #c7254e;\n@code-bg:                     #f9f2f4;\n\n@kbd-color:                   #fff;\n@kbd-bg:                      #333;\n\n@pre-bg:                      #f5f5f5;\n@pre-color:                   @gray-dark;\n@pre-border-color:            #ccc;\n@pre-scrollable-max-height:   340px;\n\n\n//== Type\n//\n//##\n\n//** Text muted color\n@text-muted:                  @gray-light;\n//** Abbreviations and acronyms border color\n@abbr-border-color:           @gray-light;\n//** Headings small color\n@headings-small-color:        @gray-light;\n//** Blockquote small color\n@blockquote-small-color:      @gray-light;\n//** Blockquote font size\n@blockquote-font-size:        (@font-size-base * 1.25);\n//** Blockquote border color\n@blockquote-border-color:     @gray-lighter;\n//** Page header border color\n@page-header-border-color:    @gray-lighter;\n\n\n//== Miscellaneous\n//\n//##\n\n//** Horizontal line color.\n@hr-border:                   @gray-lighter;\n\n//** Horizontal offset for forms and lists.\n@component-offset-horizontal: 180px;\n","//\n// Thumbnails\n// --------------------------------------------------\n\n\n// Mixin and adjust the regular image class\n.thumbnail {\n  display: block;\n  padding: @thumbnail-padding;\n  margin-bottom: @line-height-computed;\n  line-height: @line-height-base;\n  background-color: @thumbnail-bg;\n  border: 1px solid @thumbnail-border;\n  border-radius: @thumbnail-border-radius;\n  .transition(all .2s ease-in-out);\n\n  > img,\n  a > img {\n    &:extend(.img-responsive);\n    margin-left: auto;\n    margin-right: auto;\n  }\n\n  // Add a hover state for linked versions only\n  a&:hover,\n  a&:focus,\n  a&.active {\n    border-color: @link-color;\n  }\n\n  // Image captions\n  .caption {\n    padding: @thumbnail-caption-padding;\n    color: @thumbnail-caption-color;\n  }\n}\n","//\n// Carousel\n// --------------------------------------------------\n\n\n// Wrapper for the slide container and indicators\n.carousel {\n  position: relative;\n}\n\n.carousel-inner {\n  position: relative;\n  overflow: hidden;\n  width: 100%;\n\n  > .item {\n    display: none;\n    position: relative;\n    .transition(.6s ease-in-out left);\n\n    // Account for jankitude on images\n    > img,\n    > a > img {\n      &:extend(.img-responsive);\n      line-height: 1;\n    }\n  }\n\n  > .active,\n  > .next,\n  > .prev { display: block; }\n\n  > .active {\n    left: 0;\n  }\n\n  > .next,\n  > .prev {\n    position: absolute;\n    top: 0;\n    width: 100%;\n  }\n\n  > .next {\n    left: 100%;\n  }\n  > .prev {\n    left: -100%;\n  }\n  > .next.left,\n  > .prev.right {\n    left: 0;\n  }\n\n  > .active.left {\n    left: -100%;\n  }\n  > .active.right {\n    left: 100%;\n  }\n\n}\n\n// Left/right controls for nav\n// ---------------------------\n\n.carousel-control {\n  position: absolute;\n  top: 0;\n  left: 0;\n  bottom: 0;\n  width: @carousel-control-width;\n  .opacity(@carousel-control-opacity);\n  font-size: @carousel-control-font-size;\n  color: @carousel-control-color;\n  text-align: center;\n  text-shadow: @carousel-text-shadow;\n  // We can't have this transition here because WebKit cancels the carousel\n  // animation if you trip this while in the middle of another animation.\n\n  // Set gradients for backgrounds\n  &.left {\n    #gradient > .horizontal(@start-color: rgba(0,0,0,.5); @end-color: rgba(0,0,0,.0001));\n  }\n  &.right {\n    left: auto;\n    right: 0;\n    #gradient > .horizontal(@start-color: rgba(0,0,0,.0001); @end-color: rgba(0,0,0,.5));\n  }\n\n  // Hover/focus state\n  &:hover,\n  &:focus {\n    outline: none;\n    color: @carousel-control-color;\n    text-decoration: none;\n    .opacity(.9);\n  }\n\n  // Toggles\n  .icon-prev,\n  .icon-next,\n  .glyphicon-chevron-left,\n  .glyphicon-chevron-right {\n    position: absolute;\n    top: 50%;\n    z-index: 5;\n    display: inline-block;\n  }\n  .icon-prev,\n  .glyphicon-chevron-left {\n    left: 50%;\n  }\n  .icon-next,\n  .glyphicon-chevron-right {\n    right: 50%;\n  }\n  .icon-prev,\n  .icon-next {\n    width:  20px;\n    height: 20px;\n    margin-top: -10px;\n    margin-left: -10px;\n    font-family: serif;\n  }\n\n  .icon-prev {\n    &:before {\n      content: '\\2039';// SINGLE LEFT-POINTING ANGLE QUOTATION MARK (U+2039)\n    }\n  }\n  .icon-next {\n    &:before {\n      content: '\\203a';// SINGLE RIGHT-POINTING ANGLE QUOTATION MARK (U+203A)\n    }\n  }\n}\n\n// Optional indicator pips\n//\n// Add an unordered list with the following class and add a list item for each\n// slide your carousel holds.\n\n.carousel-indicators {\n  position: absolute;\n  bottom: 10px;\n  left: 50%;\n  z-index: 15;\n  width: 60%;\n  margin-left: -30%;\n  padding-left: 0;\n  list-style: none;\n  text-align: center;\n\n  li {\n    display: inline-block;\n    width:  10px;\n    height: 10px;\n    margin: 1px;\n    text-indent: -999px;\n    border: 1px solid @carousel-indicator-border-color;\n    border-radius: 10px;\n    cursor: pointer;\n\n    // IE8-9 hack for event handling\n    //\n    // Internet Explorer 8-9 does not support clicks on elements without a set\n    // `background-color`. We cannot use `filter` since that's not viewed as a\n    // background color by the browser. Thus, a hack is needed.\n    //\n    // For IE8, we set solid black as it doesn't support `rgba()`. For IE9, we\n    // set alpha transparency for the best results possible.\n    background-color: #000 \\9; // IE8\n    background-color: rgba(0,0,0,0); // IE9\n  }\n  .active {\n    margin: 0;\n    width:  12px;\n    height: 12px;\n    background-color: @carousel-indicator-active-bg;\n  }\n}\n\n// Optional captions\n// -----------------------------\n// Hidden by default for smaller viewports\n.carousel-caption {\n  position: absolute;\n  left: 15%;\n  right: 15%;\n  bottom: 20px;\n  z-index: 10;\n  padding-top: 20px;\n  padding-bottom: 20px;\n  color: @carousel-caption-color;\n  text-align: center;\n  text-shadow: @carousel-text-shadow;\n  & .btn {\n    text-shadow: none; // No shadow for button elements in carousel-caption\n  }\n}\n\n\n// Scale up controls for tablets and up\n@media screen and (min-width: @screen-sm-min) {\n\n  // Scale up the controls a smidge\n  .carousel-control {\n    .glyphicon-chevron-left,\n    .glyphicon-chevron-right,\n    .icon-prev,\n    .icon-next {\n      width: 30px;\n      height: 30px;\n      margin-top: -15px;\n      margin-left: -15px;\n      font-size: 30px;\n    }\n  }\n\n  // Show and left align the captions\n  .carousel-caption {\n    left: 20%;\n    right: 20%;\n    padding-bottom: 30px;\n  }\n\n  // Move up the indicators\n  .carousel-indicators {\n    bottom: 20px;\n  }\n}\n","//\n// Typography\n// --------------------------------------------------\n\n\n// Headings\n// -------------------------\n\nh1, h2, h3, h4, h5, h6,\n.h1, .h2, .h3, .h4, .h5, .h6 {\n  font-family: @headings-font-family;\n  font-weight: @headings-font-weight;\n  line-height: @headings-line-height;\n  color: @headings-color;\n\n  small,\n  .small {\n    font-weight: normal;\n    line-height: 1;\n    color: @headings-small-color;\n  }\n}\n\nh1, .h1,\nh2, .h2,\nh3, .h3 {\n  margin-top: @line-height-computed;\n  margin-bottom: (@line-height-computed / 2);\n\n  small,\n  .small {\n    font-size: 65%;\n  }\n}\nh4, .h4,\nh5, .h5,\nh6, .h6 {\n  margin-top: (@line-height-computed / 2);\n  margin-bottom: (@line-height-computed / 2);\n\n  small,\n  .small {\n    font-size: 75%;\n  }\n}\n\nh1, .h1 { font-size: @font-size-h1; }\nh2, .h2 { font-size: @font-size-h2; }\nh3, .h3 { font-size: @font-size-h3; }\nh4, .h4 { font-size: @font-size-h4; }\nh5, .h5 { font-size: @font-size-h5; }\nh6, .h6 { font-size: @font-size-h6; }\n\n\n// Body text\n// -------------------------\n\np {\n  margin: 0 0 (@line-height-computed / 2);\n}\n\n.lead {\n  margin-bottom: @line-height-computed;\n  font-size: floor((@font-size-base * 1.15));\n  font-weight: 200;\n  line-height: 1.4;\n\n  @media (min-width: @screen-sm-min) {\n    font-size: (@font-size-base * 1.5);\n  }\n}\n\n\n// Emphasis & misc\n// -------------------------\n\n// Ex: 14px base font * 85% = about 12px\nsmall,\n.small  { font-size: 85%; }\n\n// Undo browser default styling\ncite    { font-style: normal; }\n\n// Alignment\n.text-left           { text-align: left; }\n.text-right          { text-align: right; }\n.text-center         { text-align: center; }\n.text-justify        { text-align: justify; }\n\n// Contextual colors\n.text-muted {\n  color: @text-muted;\n}\n.text-primary {\n  .text-emphasis-variant(@brand-primary);\n}\n.text-success {\n  .text-emphasis-variant(@state-success-text);\n}\n.text-info {\n  .text-emphasis-variant(@state-info-text);\n}\n.text-warning {\n  .text-emphasis-variant(@state-warning-text);\n}\n.text-danger {\n  .text-emphasis-variant(@state-danger-text);\n}\n\n// Contextual backgrounds\n// For now we'll leave these alongside the text classes until v4 when we can\n// safely shift things around (per SemVer rules).\n.bg-primary {\n  // Given the contrast here, this is the only class to have its color inverted\n  // automatically.\n  color: #fff;\n  .bg-variant(@brand-primary);\n}\n.bg-success {\n  .bg-variant(@state-success-bg);\n}\n.bg-info {\n  .bg-variant(@state-info-bg);\n}\n.bg-warning {\n  .bg-variant(@state-warning-bg);\n}\n.bg-danger {\n  .bg-variant(@state-danger-bg);\n}\n\n\n// Page header\n// -------------------------\n\n.page-header {\n  padding-bottom: ((@line-height-computed / 2) - 1);\n  margin: (@line-height-computed * 2) 0 @line-height-computed;\n  border-bottom: 1px solid @page-header-border-color;\n}\n\n\n// Lists\n// --------------------------------------------------\n\n// Unordered and Ordered lists\nul,\nol {\n  margin-top: 0;\n  margin-bottom: (@line-height-computed / 2);\n  ul,\n  ol {\n    margin-bottom: 0;\n  }\n}\n\n// List options\n\n// Unstyled keeps list items block level, just removes default browser padding and list-style\n.list-unstyled {\n  padding-left: 0;\n  list-style: none;\n}\n\n// Inline turns list items into inline-block\n.list-inline {\n  .list-unstyled();\n  margin-left: -5px;\n\n  > li {\n    display: inline-block;\n    padding-left: 5px;\n    padding-right: 5px;\n  }\n}\n\n// Description Lists\ndl {\n  margin-top: 0; // Remove browser default\n  margin-bottom: @line-height-computed;\n}\ndt,\ndd {\n  line-height: @line-height-base;\n}\ndt {\n  font-weight: bold;\n}\ndd {\n  margin-left: 0; // Undo browser default\n}\n\n// Horizontal description lists\n//\n// Defaults to being stacked without any of the below styles applied, until the\n// grid breakpoint is reached (default of ~768px).\n\n@media (min-width: @grid-float-breakpoint) {\n  .dl-horizontal {\n    dt {\n      float: left;\n      width: (@component-offset-horizontal - 20);\n      clear: left;\n      text-align: right;\n      .text-overflow();\n    }\n    dd {\n      margin-left: @component-offset-horizontal;\n      &:extend(.clearfix all); // Clear the floated `dt` if an empty `dd` is present\n    }\n  }\n}\n\n// MISC\n// ----\n\n// Abbreviations and acronyms\nabbr[title],\n// Add data-* attribute to help out our tooltip plugin, per https://github.com/twbs/bootstrap/issues/5257\nabbr[data-original-title] {\n  cursor: help;\n  border-bottom: 1px dotted @abbr-border-color;\n}\n.initialism {\n  font-size: 90%;\n  text-transform: uppercase;\n}\n\n// Blockquotes\nblockquote {\n  padding: (@line-height-computed / 2) @line-height-computed;\n  margin: 0 0 @line-height-computed;\n  font-size: @blockquote-font-size;\n  border-left: 5px solid @blockquote-border-color;\n\n  p,\n  ul,\n  ol {\n    &:last-child {\n      margin-bottom: 0;\n    }\n  }\n\n  // Note: Deprecated small and .small as of v3.1.0\n  // Context: https://github.com/twbs/bootstrap/issues/11660\n  footer,\n  small,\n  .small {\n    display: block;\n    font-size: 80%; // back to default font-size\n    line-height: @line-height-base;\n    color: @blockquote-small-color;\n\n    &:before {\n      content: '\\2014 \\00A0'; // em dash, nbsp\n    }\n  }\n}\n\n// Opposite alignment of blockquote\n//\n// Heads up: `blockquote.pull-right` has been deprecated as of v3.1.0.\n.blockquote-reverse,\nblockquote.pull-right {\n  padding-right: 15px;\n  padding-left: 0;\n  border-right: 5px solid @blockquote-border-color;\n  border-left: 0;\n  text-align: right;\n\n  // Account for citation\n  footer,\n  small,\n  .small {\n    &:before { content: ''; }\n    &:after {\n      content: '\\00A0 \\2014'; // nbsp, em dash\n    }\n  }\n}\n\n// Quotes\nblockquote:before,\nblockquote:after {\n  content: \"\";\n}\n\n// Addresses\naddress {\n  margin-bottom: @line-height-computed;\n  font-style: normal;\n  line-height: @line-height-base;\n}\n","//\n// Code (inline and block)\n// --------------------------------------------------\n\n\n// Inline and block code styles\ncode,\nkbd,\npre,\nsamp {\n  font-family: @font-family-monospace;\n}\n\n// Inline code\ncode {\n  padding: 2px 4px;\n  font-size: 90%;\n  color: @code-color;\n  background-color: @code-bg;\n  white-space: nowrap;\n  border-radius: @border-radius-base;\n}\n\n// User input typically entered via keyboard\nkbd {\n  padding: 2px 4px;\n  font-size: 90%;\n  color: @kbd-color;\n  background-color: @kbd-bg;\n  border-radius: @border-radius-small;\n  box-shadow: inset 0 -1px 0 rgba(0,0,0,.25);\n}\n\n// Blocks of code\npre {\n  display: block;\n  padding: ((@line-height-computed - 1) / 2);\n  margin: 0 0 (@line-height-computed / 2);\n  font-size: (@font-size-base - 1); // 14px to 13px\n  line-height: @line-height-base;\n  word-break: break-all;\n  word-wrap: break-word;\n  color: @pre-color;\n  background-color: @pre-bg;\n  border: 1px solid @pre-border-color;\n  border-radius: @border-radius-base;\n\n  // Account for some code outputs that place code tags in pre tags\n  code {\n    padding: 0;\n    font-size: inherit;\n    color: inherit;\n    white-space: pre-wrap;\n    background-color: transparent;\n    border-radius: 0;\n  }\n}\n\n// Enable scrollable blocks of code\n.pre-scrollable {\n  max-height: @pre-scrollable-max-height;\n  overflow-y: scroll;\n}\n","//\n// Grid system\n// --------------------------------------------------\n\n\n// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n.container {\n  .container-fixed();\n\n  @media (min-width: @screen-sm-min) {\n    width: @container-sm;\n  }\n  @media (min-width: @screen-md-min) {\n    width: @container-md;\n  }\n  @media (min-width: @screen-lg-min) {\n    width: @container-lg;\n  }\n}\n\n\n// Fluid container\n//\n// Utilizes the mixin meant for fixed width containers, but without any defined\n// width for fluid, full width layouts.\n\n.container-fluid {\n  .container-fixed();\n}\n\n\n// Row\n//\n// Rows contain and clear the floats of your columns.\n\n.row {\n  .make-row();\n}\n\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n.make-grid-columns();\n\n\n// Extra small grid\n//\n// Columns, offsets, pushes, and pulls for extra small devices like\n// smartphones.\n\n.make-grid(xs);\n\n\n// Small grid\n//\n// Columns, offsets, pushes, and pulls for the small device range, from phones\n// to tablets.\n\n@media (min-width: @screen-sm-min) {\n  .make-grid(sm);\n}\n\n\n// Medium grid\n//\n// Columns, offsets, pushes, and pulls for the desktop device range.\n\n@media (min-width: @screen-md-min) {\n  .make-grid(md);\n}\n\n\n// Large grid\n//\n// Columns, offsets, pushes, and pulls for the large desktop device range.\n\n@media (min-width: @screen-lg-min) {\n  .make-grid(lg);\n}\n","//\n// Tables\n// --------------------------------------------------\n\n\ntable {\n  max-width: 100%;\n  background-color: @table-bg;\n}\nth {\n  text-align: left;\n}\n\n\n// Baseline styles\n\n.table {\n  width: 100%;\n  margin-bottom: @line-height-computed;\n  // Cells\n  > thead,\n  > tbody,\n  > tfoot {\n    > tr {\n      > th,\n      > td {\n        padding: @table-cell-padding;\n        line-height: @line-height-base;\n        vertical-align: top;\n        border-top: 1px solid @table-border-color;\n      }\n    }\n  }\n  // Bottom align for column headings\n  > thead > tr > th {\n    vertical-align: bottom;\n    border-bottom: 2px solid @table-border-color;\n  }\n  // Remove top border from thead by default\n  > caption + thead,\n  > colgroup + thead,\n  > thead:first-child {\n    > tr:first-child {\n      > th,\n      > td {\n        border-top: 0;\n      }\n    }\n  }\n  // Account for multiple tbody instances\n  > tbody + tbody {\n    border-top: 2px solid @table-border-color;\n  }\n\n  // Nesting\n  .table {\n    background-color: @body-bg;\n  }\n}\n\n\n// Condensed table w/ half padding\n\n.table-condensed {\n  > thead,\n  > tbody,\n  > tfoot {\n    > tr {\n      > th,\n      > td {\n        padding: @table-condensed-cell-padding;\n      }\n    }\n  }\n}\n\n\n// Bordered version\n//\n// Add borders all around the table and between all the columns.\n\n.table-bordered {\n  border: 1px solid @table-border-color;\n  > thead,\n  > tbody,\n  > tfoot {\n    > tr {\n      > th,\n      > td {\n        border: 1px solid @table-border-color;\n      }\n    }\n  }\n  > thead > tr {\n    > th,\n    > td {\n      border-bottom-width: 2px;\n    }\n  }\n}\n\n\n// Zebra-striping\n//\n// Default zebra-stripe styles (alternating gray and transparent backgrounds)\n\n.table-striped {\n  > tbody > tr:nth-child(odd) {\n    > td,\n    > th {\n      background-color: @table-bg-accent;\n    }\n  }\n}\n\n\n// Hover effect\n//\n// Placed here since it has to come after the potential zebra striping\n\n.table-hover {\n  > tbody > tr:hover {\n    > td,\n    > th {\n      background-color: @table-bg-hover;\n    }\n  }\n}\n\n\n// Table cell sizing\n//\n// Reset default table behavior\n\ntable col[class*=\"col-\"] {\n  position: static; // Prevent border hiding in Firefox and IE9/10 (see https://github.com/twbs/bootstrap/issues/11623)\n  float: none;\n  display: table-column;\n}\ntable {\n  td,\n  th {\n    &[class*=\"col-\"] {\n      position: static; // Prevent border hiding in Firefox and IE9/10 (see https://github.com/twbs/bootstrap/issues/11623)\n      float: none;\n      display: table-cell;\n    }\n  }\n}\n\n\n// Table backgrounds\n//\n// Exact selectors below required to override `.table-striped` and prevent\n// inheritance to nested tables.\n\n// Generate the contextual variants\n.table-row-variant(active; @table-bg-active);\n.table-row-variant(success; @state-success-bg);\n.table-row-variant(info; @state-info-bg);\n.table-row-variant(warning; @state-warning-bg);\n.table-row-variant(danger; @state-danger-bg);\n\n\n// Responsive tables\n//\n// Wrap your tables in `.table-responsive` and we'll make them mobile friendly\n// by enabling horizontal scrolling. Only applies <768px. Everything above that\n// will display normally.\n\n@media (max-width: @screen-xs-max) {\n  .table-responsive {\n    width: 100%;\n    margin-bottom: (@line-height-computed * 0.75);\n    overflow-y: hidden;\n    overflow-x: scroll;\n    -ms-overflow-style: -ms-autohiding-scrollbar;\n    border: 1px solid @table-border-color;\n    -webkit-overflow-scrolling: touch;\n\n    // Tighten up spacing\n    > .table {\n      margin-bottom: 0;\n\n      // Ensure the content doesn't wrap\n      > thead,\n      > tbody,\n      > tfoot {\n        > tr {\n          > th,\n          > td {\n            white-space: nowrap;\n          }\n        }\n      }\n    }\n\n    // Special overrides for the bordered tables\n    > .table-bordered {\n      border: 0;\n\n      // Nuke the appropriate borders so that the parent can handle them\n      > thead,\n      > tbody,\n      > tfoot {\n        > tr {\n          > th:first-child,\n          > td:first-child {\n            border-left: 0;\n          }\n          > th:last-child,\n          > td:last-child {\n            border-right: 0;\n          }\n        }\n      }\n\n      // Only nuke the last row's bottom-border in `tbody` and `tfoot` since\n      // chances are there will be only one `tr` in a `thead` and that would\n      // remove the border altogether.\n      > tbody,\n      > tfoot {\n        > tr:last-child {\n          > th,\n          > td {\n            border-bottom: 0;\n          }\n        }\n      }\n\n    }\n  }\n}\n","//\n// Forms\n// --------------------------------------------------\n\n\n// Normalize non-controls\n//\n// Restyle and baseline non-control form elements.\n\nfieldset {\n  padding: 0;\n  margin: 0;\n  border: 0;\n  // Chrome and Firefox set a `min-width: -webkit-min-content;` on fieldsets,\n  // so we reset that to ensure it behaves more like a standard block element.\n  // See https://github.com/twbs/bootstrap/issues/12359.\n  min-width: 0;\n}\n\nlegend {\n  display: block;\n  width: 100%;\n  padding: 0;\n  margin-bottom: @line-height-computed;\n  font-size: (@font-size-base * 1.5);\n  line-height: inherit;\n  color: @legend-color;\n  border: 0;\n  border-bottom: 1px solid @legend-border-color;\n}\n\nlabel {\n  display: inline-block;\n  margin-bottom: 5px;\n  font-weight: bold;\n}\n\n\n// Normalize form controls\n//\n// While most of our form styles require extra classes, some basic normalization\n// is required to ensure optimum display with or without those classes to better\n// address browser inconsistencies.\n\n// Override content-box in Normalize (* isn't specific enough)\ninput[type=\"search\"] {\n  .box-sizing(border-box);\n}\n\n// Position radios and checkboxes better\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n  margin: 4px 0 0;\n  margin-top: 1px \\9; /* IE8-9 */\n  line-height: normal;\n}\n\n// Set the height of file controls to match text inputs\ninput[type=\"file\"] {\n  display: block;\n}\n\n// Make range inputs behave like textual form controls\ninput[type=\"range\"] {\n  display: block;\n  width: 100%;\n}\n\n// Make multiple select elements height not fixed\nselect[multiple],\nselect[size] {\n  height: auto;\n}\n\n// Focus for file, radio, and checkbox\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus {\n  .tab-focus();\n}\n\n// Adjust output element\noutput {\n  display: block;\n  padding-top: (@padding-base-vertical + 1);\n  font-size: @font-size-base;\n  line-height: @line-height-base;\n  color: @input-color;\n}\n\n\n// Common form controls\n//\n// Shared size and type resets for form controls. Apply `.form-control` to any\n// of the following form controls:\n//\n// select\n// textarea\n// input[type=\"text\"]\n// input[type=\"password\"]\n// input[type=\"datetime\"]\n// input[type=\"datetime-local\"]\n// input[type=\"date\"]\n// input[type=\"month\"]\n// input[type=\"time\"]\n// input[type=\"week\"]\n// input[type=\"number\"]\n// input[type=\"email\"]\n// input[type=\"url\"]\n// input[type=\"search\"]\n// input[type=\"tel\"]\n// input[type=\"color\"]\n\n.form-control {\n  display: block;\n  width: 100%;\n  height: @input-height-base; // Make inputs at least the height of their button counterpart (base line-height + padding + border)\n  padding: @padding-base-vertical @padding-base-horizontal;\n  font-size: @font-size-base;\n  line-height: @line-height-base;\n  color: @input-color;\n  background-color: @input-bg;\n  background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n  border: 1px solid @input-border;\n  border-radius: @input-border-radius;\n  .box-shadow(inset 0 1px 1px rgba(0,0,0,.075));\n  .transition(~\"border-color ease-in-out .15s, box-shadow ease-in-out .15s\");\n\n  // Customize the `:focus` state to imitate native WebKit styles.\n  .form-control-focus();\n\n  // Placeholder\n  .placeholder();\n\n  // Disabled and read-only inputs\n  //\n  // HTML5 says that controls under a fieldset > legend:first-child won't be\n  // disabled if the fieldset is disabled. Due to implementation difficulty, we\n  // don't honor that edge case; we style them as disabled anyway.\n  &[disabled],\n  &[readonly],\n  fieldset[disabled] & {\n    cursor: not-allowed;\n    background-color: @input-bg-disabled;\n    opacity: 1; // iOS fix for unreadable disabled content\n  }\n\n  // Reset height for `textarea`s\n  textarea& {\n    height: auto;\n  }\n}\n\n\n// Search inputs in iOS\n//\n// This overrides the extra rounded corners on search inputs in iOS so that our\n// `.form-control` class can properly style them. Note that this cannot simply\n// be added to `.form-control` as it's not specific enough. For details, see\n// https://github.com/twbs/bootstrap/issues/11586.\n\ninput[type=\"search\"] {\n  -webkit-appearance: none;\n}\n\n\n// Special styles for iOS date input\n//\n// In Mobile Safari, date inputs require a pixel line-height that matches the\n// given height of the input.\n\ninput[type=\"date\"] {\n  line-height: @input-height-base;\n}\n\n\n// Form groups\n//\n// Designed to help with the organization and spacing of vertical forms. For\n// horizontal forms, use the predefined grid classes.\n\n.form-group {\n  margin-bottom: 15px;\n}\n\n\n// Checkboxes and radios\n//\n// Indent the labels to position radios/checkboxes as hanging controls.\n\n.radio,\n.checkbox {\n  display: block;\n  min-height: @line-height-computed; // clear the floating input if there is no label text\n  margin-top: 10px;\n  margin-bottom: 10px;\n  padding-left: 20px;\n  label {\n    display: inline;\n    font-weight: normal;\n    cursor: pointer;\n  }\n}\n.radio input[type=\"radio\"],\n.radio-inline input[type=\"radio\"],\n.checkbox input[type=\"checkbox\"],\n.checkbox-inline input[type=\"checkbox\"] {\n  float: left;\n  margin-left: -20px;\n}\n.radio + .radio,\n.checkbox + .checkbox {\n  margin-top: -5px; // Move up sibling radios or checkboxes for tighter spacing\n}\n\n// Radios and checkboxes on same line\n.radio-inline,\n.checkbox-inline {\n  display: inline-block;\n  padding-left: 20px;\n  margin-bottom: 0;\n  vertical-align: middle;\n  font-weight: normal;\n  cursor: pointer;\n}\n.radio-inline + .radio-inline,\n.checkbox-inline + .checkbox-inline {\n  margin-top: 0;\n  margin-left: 10px; // space out consecutive inline controls\n}\n\n// Apply same disabled cursor tweak as for inputs\n//\n// Note: Neither radios nor checkboxes can be readonly.\ninput[type=\"radio\"],\ninput[type=\"checkbox\"],\n.radio,\n.radio-inline,\n.checkbox,\n.checkbox-inline {\n  &[disabled],\n  fieldset[disabled] & {\n    cursor: not-allowed;\n  }\n}\n\n\n// Form control sizing\n//\n// Build on `.form-control` with modifier classes to decrease or increase the\n// height and font-size of form controls.\n\n.input-sm {\n  .input-size(@input-height-small; @padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @border-radius-small);\n}\n\n.input-lg {\n  .input-size(@input-height-large; @padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @border-radius-large);\n}\n\n\n// Form control feedback states\n//\n// Apply contextual and semantic states to individual form controls.\n\n.has-feedback {\n  // Enable absolute positioning\n  position: relative;\n\n  // Ensure icons don't overlap text\n  .form-control {\n    padding-right: (@input-height-base * 1.25);\n  }\n\n  // Feedback icon (requires .glyphicon classes)\n  .form-control-feedback {\n    position: absolute;\n    top: (@line-height-computed + 5); // Height of the `label` and its margin\n    right: 0;\n    display: block;\n    width: @input-height-base;\n    height: @input-height-base;\n    line-height: @input-height-base;\n    text-align: center;\n  }\n}\n\n// Feedback states\n.has-success {\n  .form-control-validation(@state-success-text; @state-success-text; @state-success-bg);\n}\n.has-warning {\n  .form-control-validation(@state-warning-text; @state-warning-text; @state-warning-bg);\n}\n.has-error {\n  .form-control-validation(@state-danger-text; @state-danger-text; @state-danger-bg);\n}\n\n\n// Static form control text\n//\n// Apply class to a `p` element to make any string of text align with labels in\n// a horizontal form layout.\n\n.form-control-static {\n  margin-bottom: 0; // Remove default margin from `p`\n}\n\n\n// Help text\n//\n// Apply to any element you wish to create light text for placement immediately\n// below a form control. Use for general help, formatting, or instructional text.\n\n.help-block {\n  display: block; // account for any element using help-block\n  margin-top: 5px;\n  margin-bottom: 10px;\n  color: lighten(@text-color, 25%); // lighten the text some for contrast\n}\n\n\n\n// Inline forms\n//\n// Make forms appear inline(-block) by adding the `.form-inline` class. Inline\n// forms begin stacked on extra small (mobile) devices and then go inline when\n// viewports reach <768px.\n//\n// Requires wrapping inputs and labels with `.form-group` for proper display of\n// default HTML form controls and our custom form controls (e.g., input groups).\n//\n// Heads up! This is mixin-ed into `.navbar-form` in navbars.less.\n\n.form-inline {\n\n  // Kick in the inline\n  @media (min-width: @screen-sm-min) {\n    // Inline-block all the things for \"inline\"\n    .form-group {\n      display: inline-block;\n      margin-bottom: 0;\n      vertical-align: middle;\n    }\n\n    // In navbar-form, allow folks to *not* use `.form-group`\n    .form-control {\n      display: inline-block;\n      width: auto; // Prevent labels from stacking above inputs in `.form-group`\n      vertical-align: middle;\n    }\n    // Input groups need that 100% width though\n    .input-group > .form-control {\n      width: 100%;\n    }\n\n    .control-label {\n      margin-bottom: 0;\n      vertical-align: middle;\n    }\n\n    // Remove default margin on radios/checkboxes that were used for stacking, and\n    // then undo the floating of radios and checkboxes to match (which also avoids\n    // a bug in WebKit: https://github.com/twbs/bootstrap/issues/1969).\n    .radio,\n    .checkbox {\n      display: inline-block;\n      margin-top: 0;\n      margin-bottom: 0;\n      padding-left: 0;\n      vertical-align: middle;\n    }\n    .radio input[type=\"radio\"],\n    .checkbox input[type=\"checkbox\"] {\n      float: none;\n      margin-left: 0;\n    }\n\n    // Validation states\n    //\n    // Reposition the icon because it's now within a grid column and columns have\n    // `position: relative;` on them. Also accounts for the grid gutter padding.\n    .has-feedback .form-control-feedback {\n      top: 0;\n    }\n  }\n}\n\n\n// Horizontal forms\n//\n// Horizontal forms are built on grid classes and allow you to create forms with\n// labels on the left and inputs on the right.\n\n.form-horizontal {\n\n  // Consistent vertical alignment of labels, radios, and checkboxes\n  .control-label,\n  .radio,\n  .checkbox,\n  .radio-inline,\n  .checkbox-inline {\n    margin-top: 0;\n    margin-bottom: 0;\n    padding-top: (@padding-base-vertical + 1); // Default padding plus a border\n  }\n  // Account for padding we're adding to ensure the alignment and of help text\n  // and other content below items\n  .radio,\n  .checkbox {\n    min-height: (@line-height-computed + (@padding-base-vertical + 1));\n  }\n\n  // Make form groups behave like rows\n  .form-group {\n    .make-row();\n  }\n\n  .form-control-static {\n    padding-top: (@padding-base-vertical + 1);\n  }\n\n  // Only right align form labels here when the columns stop stacking\n  @media (min-width: @screen-sm-min) {\n    .control-label {\n      text-align: right;\n    }\n  }\n\n  // Validation states\n  //\n  // Reposition the icon because it's now within a grid column and columns have\n  // `position: relative;` on them. Also accounts for the grid gutter padding.\n  .has-feedback .form-control-feedback {\n    top: 0;\n    right: (@grid-gutter-width / 2);\n  }\n}\n","//\n// Buttons\n// --------------------------------------------------\n\n\n// Base styles\n// --------------------------------------------------\n\n.btn {\n  display: inline-block;\n  margin-bottom: 0; // For input.btn\n  font-weight: @btn-font-weight;\n  text-align: center;\n  vertical-align: middle;\n  cursor: pointer;\n  background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n  border: 1px solid transparent;\n  white-space: nowrap;\n  .button-size(@padding-base-vertical; @padding-base-horizontal; @font-size-base; @line-height-base; @border-radius-base);\n  .user-select(none);\n\n  &,\n  &:active,\n  &.active {\n    &:focus {\n      .tab-focus();\n    }\n  }\n\n  &:hover,\n  &:focus {\n    color: @btn-default-color;\n    text-decoration: none;\n  }\n\n  &:active,\n  &.active {\n    outline: 0;\n    background-image: none;\n    .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n  }\n\n  &.disabled,\n  &[disabled],\n  fieldset[disabled] & {\n    cursor: not-allowed;\n    pointer-events: none; // Future-proof disabling of clicks\n    .opacity(.65);\n    .box-shadow(none);\n  }\n}\n\n\n// Alternate buttons\n// --------------------------------------------------\n\n.btn-default {\n  .button-variant(@btn-default-color; @btn-default-bg; @btn-default-border);\n}\n.btn-primary {\n  .button-variant(@btn-primary-color; @btn-primary-bg; @btn-primary-border);\n}\n// Success appears as green\n.btn-success {\n  .button-variant(@btn-success-color; @btn-success-bg; @btn-success-border);\n}\n// Info appears as blue-green\n.btn-info {\n  .button-variant(@btn-info-color; @btn-info-bg; @btn-info-border);\n}\n// Warning appears as orange\n.btn-warning {\n  .button-variant(@btn-warning-color; @btn-warning-bg; @btn-warning-border);\n}\n// Danger and error appear as red\n.btn-danger {\n  .button-variant(@btn-danger-color; @btn-danger-bg; @btn-danger-border);\n}\n\n\n// Link buttons\n// -------------------------\n\n// Make a button look and behave like a link\n.btn-link {\n  color: @link-color;\n  font-weight: normal;\n  cursor: pointer;\n  border-radius: 0;\n\n  &,\n  &:active,\n  &[disabled],\n  fieldset[disabled] & {\n    background-color: transparent;\n    .box-shadow(none);\n  }\n  &,\n  &:hover,\n  &:focus,\n  &:active {\n    border-color: transparent;\n  }\n  &:hover,\n  &:focus {\n    color: @link-hover-color;\n    text-decoration: underline;\n    background-color: transparent;\n  }\n  &[disabled],\n  fieldset[disabled] & {\n    &:hover,\n    &:focus {\n      color: @btn-link-disabled-color;\n      text-decoration: none;\n    }\n  }\n}\n\n\n// Button Sizes\n// --------------------------------------------------\n\n.btn-lg {\n  // line-height: ensure even-numbered height of button next to large input\n  .button-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @border-radius-large);\n}\n.btn-sm {\n  // line-height: ensure proper height of button next to small input\n  .button-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @border-radius-small);\n}\n.btn-xs {\n  .button-size(@padding-xs-vertical; @padding-xs-horizontal; @font-size-small; @line-height-small; @border-radius-small);\n}\n\n\n// Block button\n// --------------------------------------------------\n\n.btn-block {\n  display: block;\n  width: 100%;\n  padding-left: 0;\n  padding-right: 0;\n}\n\n// Vertically space out multiple block buttons\n.btn-block + .btn-block {\n  margin-top: 5px;\n}\n\n// Specificity overrides\ninput[type=\"submit\"],\ninput[type=\"reset\"],\ninput[type=\"button\"] {\n  &.btn-block {\n    width: 100%;\n  }\n}\n","//\n// Button groups\n// --------------------------------------------------\n\n// Make the div behave like a button\n.btn-group,\n.btn-group-vertical {\n  position: relative;\n  display: inline-block;\n  vertical-align: middle; // match .btn alignment given font-size hack above\n  > .btn {\n    position: relative;\n    float: left;\n    // Bring the \"active\" button to the front\n    &:hover,\n    &:focus,\n    &:active,\n    &.active {\n      z-index: 2;\n    }\n    &:focus {\n      // Remove focus outline when dropdown JS adds it after closing the menu\n      outline: none;\n    }\n  }\n}\n\n// Prevent double borders when buttons are next to each other\n.btn-group {\n  .btn + .btn,\n  .btn + .btn-group,\n  .btn-group + .btn,\n  .btn-group + .btn-group {\n    margin-left: -1px;\n  }\n}\n\n// Optional: Group multiple button groups together for a toolbar\n.btn-toolbar {\n  margin-left: -5px; // Offset the first child's margin\n  &:extend(.clearfix all);\n\n  .btn-group,\n  .input-group {\n    float: left;\n  }\n  > .btn,\n  > .btn-group,\n  > .input-group {\n    margin-left: 5px;\n  }\n}\n\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n  border-radius: 0;\n}\n\n// Set corners individual because sometimes a single button can be in a .btn-group and we need :first-child and :last-child to both match\n.btn-group > .btn:first-child {\n  margin-left: 0;\n  &:not(:last-child):not(.dropdown-toggle) {\n    .border-right-radius(0);\n  }\n}\n// Need .dropdown-toggle since :last-child doesn't apply given a .dropdown-menu immediately after it\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n  .border-left-radius(0);\n}\n\n// Custom edits for including btn-groups within btn-groups (useful for including dropdown buttons within a btn-group)\n.btn-group > .btn-group {\n  float: left;\n}\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n  border-radius: 0;\n}\n.btn-group > .btn-group:first-child {\n  > .btn:last-child,\n  > .dropdown-toggle {\n    .border-right-radius(0);\n  }\n}\n.btn-group > .btn-group:last-child > .btn:first-child {\n  .border-left-radius(0);\n}\n\n// On active and open, don't show outline\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n  outline: 0;\n}\n\n\n// Sizing\n//\n// Remix the default button sizing classes into new ones for easier manipulation.\n\n.btn-group-xs > .btn { &:extend(.btn-xs); }\n.btn-group-sm > .btn { &:extend(.btn-sm); }\n.btn-group-lg > .btn { &:extend(.btn-lg); }\n\n\n// Split button dropdowns\n// ----------------------\n\n// Give the line between buttons some depth\n.btn-group > .btn + .dropdown-toggle {\n  padding-left: 8px;\n  padding-right: 8px;\n}\n.btn-group > .btn-lg + .dropdown-toggle {\n  padding-left: 12px;\n  padding-right: 12px;\n}\n\n// The clickable button for toggling the menu\n// Remove the gradient and set the same inset shadow as the :active state\n.btn-group.open .dropdown-toggle {\n  .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n\n  // Show no shadow for `.btn-link` since it has no other button styles.\n  &.btn-link {\n    .box-shadow(none);\n  }\n}\n\n\n// Reposition the caret\n.btn .caret {\n  margin-left: 0;\n}\n// Carets in other button sizes\n.btn-lg .caret {\n  border-width: @caret-width-large @caret-width-large 0;\n  border-bottom-width: 0;\n}\n// Upside down carets for .dropup\n.dropup .btn-lg .caret {\n  border-width: 0 @caret-width-large @caret-width-large;\n}\n\n\n// Vertical button groups\n// ----------------------\n\n.btn-group-vertical {\n  > .btn,\n  > .btn-group,\n  > .btn-group > .btn {\n    display: block;\n    float: none;\n    width: 100%;\n    max-width: 100%;\n  }\n\n  // Clear floats so dropdown menus can be properly placed\n  > .btn-group {\n    &:extend(.clearfix all);\n    > .btn {\n      float: none;\n    }\n  }\n\n  > .btn + .btn,\n  > .btn + .btn-group,\n  > .btn-group + .btn,\n  > .btn-group + .btn-group {\n    margin-top: -1px;\n    margin-left: 0;\n  }\n}\n\n.btn-group-vertical > .btn {\n  &:not(:first-child):not(:last-child) {\n    border-radius: 0;\n  }\n  &:first-child:not(:last-child) {\n    border-top-right-radius: @border-radius-base;\n    .border-bottom-radius(0);\n  }\n  &:last-child:not(:first-child) {\n    border-bottom-left-radius: @border-radius-base;\n    .border-top-radius(0);\n  }\n}\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n  border-radius: 0;\n}\n.btn-group-vertical > .btn-group:first-child:not(:last-child) {\n  > .btn:last-child,\n  > .dropdown-toggle {\n    .border-bottom-radius(0);\n  }\n}\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n  .border-top-radius(0);\n}\n\n\n\n// Justified button groups\n// ----------------------\n\n.btn-group-justified {\n  display: table;\n  width: 100%;\n  table-layout: fixed;\n  border-collapse: separate;\n  > .btn,\n  > .btn-group {\n    float: none;\n    display: table-cell;\n    width: 1%;\n  }\n  > .btn-group .btn {\n    width: 100%;\n  }\n}\n\n\n// Checkbox and radio options\n[data-toggle=\"buttons\"] > .btn > input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn > input[type=\"checkbox\"] {\n  display: none;\n}\n","//\n// Component animations\n// --------------------------------------------------\n\n// Heads up!\n//\n// We don't use the `.opacity()` mixin here since it causes a bug with text\n// fields in IE7-8. Source: https://github.com/twitter/bootstrap/pull/3552.\n\n.fade {\n  opacity: 0;\n  .transition(opacity .15s linear);\n  &.in {\n    opacity: 1;\n  }\n}\n\n.collapse {\n  display: none;\n  &.in {\n    display: block;\n  }\n}\n.collapsing {\n  position: relative;\n  height: 0;\n  overflow: hidden;\n  .transition(height .35s ease);\n}\n","//\n// Glyphicons for Bootstrap\n//\n// Since icons are fonts, they can be placed anywhere text is placed and are\n// thus automatically sized to match the surrounding child. To use, create an\n// inline element with the appropriate classes, like so:\n//\n//  Star\n\n// Import the fonts\n@font-face {\n  font-family: 'Glyphicons Halflings';\n  src: ~\"url('@{icon-font-path}@{icon-font-name}.eot')\";\n  src: ~\"url('@{icon-font-path}@{icon-font-name}.eot?#iefix') format('embedded-opentype')\",\n       ~\"url('@{icon-font-path}@{icon-font-name}.woff') format('woff')\",\n       ~\"url('@{icon-font-path}@{icon-font-name}.ttf') format('truetype')\",\n       ~\"url('@{icon-font-path}@{icon-font-name}.svg#@{icon-font-svg-id}') format('svg')\";\n}\n\n// Catchall baseclass\n.glyphicon {\n  position: relative;\n  top: 1px;\n  display: inline-block;\n  font-family: 'Glyphicons Halflings';\n  font-style: normal;\n  font-weight: normal;\n  line-height: 1;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n\n// Individual icons\n.glyphicon-asterisk               { &:before { content: \"\\2a\"; } }\n.glyphicon-plus                   { &:before { content: \"\\2b\"; } }\n.glyphicon-euro                   { &:before { content: \"\\20ac\"; } }\n.glyphicon-minus                  { &:before { content: \"\\2212\"; } }\n.glyphicon-cloud                  { &:before { content: \"\\2601\"; } }\n.glyphicon-envelope               { &:before { content: \"\\2709\"; } }\n.glyphicon-pencil                 { &:before { content: \"\\270f\"; } }\n.glyphicon-glass                  { &:before { content: \"\\e001\"; } }\n.glyphicon-music                  { &:before { content: \"\\e002\"; } }\n.glyphicon-search                 { &:before { content: \"\\e003\"; } }\n.glyphicon-heart                  { &:before { content: \"\\e005\"; } }\n.glyphicon-star                   { &:before { content: \"\\e006\"; } }\n.glyphicon-star-empty             { &:before { content: \"\\e007\"; } }\n.glyphicon-user                   { &:before { content: \"\\e008\"; } }\n.glyphicon-film                   { &:before { content: \"\\e009\"; } }\n.glyphicon-th-large               { &:before { content: \"\\e010\"; } }\n.glyphicon-th                     { &:before { content: \"\\e011\"; } }\n.glyphicon-th-list                { &:before { content: \"\\e012\"; } }\n.glyphicon-ok                     { &:before { content: \"\\e013\"; } }\n.glyphicon-remove                 { &:before { content: \"\\e014\"; } }\n.glyphicon-zoom-in                { &:before { content: \"\\e015\"; } }\n.glyphicon-zoom-out               { &:before { content: \"\\e016\"; } }\n.glyphicon-off                    { &:before { content: \"\\e017\"; } }\n.glyphicon-signal                 { &:before { content: \"\\e018\"; } }\n.glyphicon-cog                    { &:before { content: \"\\e019\"; } }\n.glyphicon-trash                  { &:before { content: \"\\e020\"; } }\n.glyphicon-home                   { &:before { content: \"\\e021\"; } }\n.glyphicon-file                   { &:before { content: \"\\e022\"; } }\n.glyphicon-time                   { &:before { content: \"\\e023\"; } }\n.glyphicon-road                   { &:before { content: \"\\e024\"; } }\n.glyphicon-download-alt           { &:before { content: \"\\e025\"; } }\n.glyphicon-download               { &:before { content: \"\\e026\"; } }\n.glyphicon-upload                 { &:before { content: \"\\e027\"; } }\n.glyphicon-inbox                  { &:before { content: \"\\e028\"; } }\n.glyphicon-play-circle            { &:before { content: \"\\e029\"; } }\n.glyphicon-repeat                 { &:before { content: \"\\e030\"; } }\n.glyphicon-refresh                { &:before { content: \"\\e031\"; } }\n.glyphicon-list-alt               { &:before { content: \"\\e032\"; } }\n.glyphicon-lock                   { &:before { content: \"\\e033\"; } }\n.glyphicon-flag                   { &:before { content: \"\\e034\"; } }\n.glyphicon-headphones             { &:before { content: \"\\e035\"; } }\n.glyphicon-volume-off             { &:before { content: \"\\e036\"; } }\n.glyphicon-volume-down            { &:before { content: \"\\e037\"; } }\n.glyphicon-volume-up              { &:before { content: \"\\e038\"; } }\n.glyphicon-qrcode                 { &:before { content: \"\\e039\"; } }\n.glyphicon-barcode                { &:before { content: \"\\e040\"; } }\n.glyphicon-tag                    { &:before { content: \"\\e041\"; } }\n.glyphicon-tags                   { &:before { content: \"\\e042\"; } }\n.glyphicon-book                   { &:before { content: \"\\e043\"; } }\n.glyphicon-bookmark               { &:before { content: \"\\e044\"; } }\n.glyphicon-print                  { &:before { content: \"\\e045\"; } }\n.glyphicon-camera                 { &:before { content: \"\\e046\"; } }\n.glyphicon-font                   { &:before { content: \"\\e047\"; } }\n.glyphicon-bold                   { &:before { content: \"\\e048\"; } }\n.glyphicon-italic                 { &:before { content: \"\\e049\"; } }\n.glyphicon-text-height            { &:before { content: \"\\e050\"; } }\n.glyphicon-text-width             { &:before { content: \"\\e051\"; } }\n.glyphicon-align-left             { &:before { content: \"\\e052\"; } }\n.glyphicon-align-center           { &:before { content: \"\\e053\"; } }\n.glyphicon-align-right            { &:before { content: \"\\e054\"; } }\n.glyphicon-align-justify          { &:before { content: \"\\e055\"; } }\n.glyphicon-list                   { &:before { content: \"\\e056\"; } }\n.glyphicon-indent-left            { &:before { content: \"\\e057\"; } }\n.glyphicon-indent-right           { &:before { content: \"\\e058\"; } }\n.glyphicon-facetime-video         { &:before { content: \"\\e059\"; } }\n.glyphicon-picture                { &:before { content: \"\\e060\"; } }\n.glyphicon-map-marker             { &:before { content: \"\\e062\"; } }\n.glyphicon-adjust                 { &:before { content: \"\\e063\"; } }\n.glyphicon-tint                   { &:before { content: \"\\e064\"; } }\n.glyphicon-edit                   { &:before { content: \"\\e065\"; } }\n.glyphicon-share                  { &:before { content: \"\\e066\"; } }\n.glyphicon-check                  { &:before { content: \"\\e067\"; } }\n.glyphicon-move                   { &:before { content: \"\\e068\"; } }\n.glyphicon-step-backward          { &:before { content: \"\\e069\"; } }\n.glyphicon-fast-backward          { &:before { content: \"\\e070\"; } }\n.glyphicon-backward               { &:before { content: \"\\e071\"; } }\n.glyphicon-play                   { &:before { content: \"\\e072\"; } }\n.glyphicon-pause                  { &:before { content: \"\\e073\"; } }\n.glyphicon-stop                   { &:before { content: \"\\e074\"; } }\n.glyphicon-forward                { &:before { content: \"\\e075\"; } }\n.glyphicon-fast-forward           { &:before { content: \"\\e076\"; } }\n.glyphicon-step-forward           { &:before { content: \"\\e077\"; } }\n.glyphicon-eject                  { &:before { content: \"\\e078\"; } }\n.glyphicon-chevron-left           { &:before { content: \"\\e079\"; } }\n.glyphicon-chevron-right          { &:before { content: \"\\e080\"; } }\n.glyphicon-plus-sign              { &:before { content: \"\\e081\"; } }\n.glyphicon-minus-sign             { &:before { content: \"\\e082\"; } }\n.glyphicon-remove-sign            { &:before { content: \"\\e083\"; } }\n.glyphicon-ok-sign                { &:before { content: \"\\e084\"; } }\n.glyphicon-question-sign          { &:before { content: \"\\e085\"; } }\n.glyphicon-info-sign              { &:before { content: \"\\e086\"; } }\n.glyphicon-screenshot             { &:before { content: \"\\e087\"; } }\n.glyphicon-remove-circle          { &:before { content: \"\\e088\"; } }\n.glyphicon-ok-circle              { &:before { content: \"\\e089\"; } }\n.glyphicon-ban-circle             { &:before { content: \"\\e090\"; } }\n.glyphicon-arrow-left             { &:before { content: \"\\e091\"; } }\n.glyphicon-arrow-right            { &:before { content: \"\\e092\"; } }\n.glyphicon-arrow-up               { &:before { content: \"\\e093\"; } }\n.glyphicon-arrow-down             { &:before { content: \"\\e094\"; } }\n.glyphicon-share-alt              { &:before { content: \"\\e095\"; } }\n.glyphicon-resize-full            { &:before { content: \"\\e096\"; } }\n.glyphicon-resize-small           { &:before { content: \"\\e097\"; } }\n.glyphicon-exclamation-sign       { &:before { content: \"\\e101\"; } }\n.glyphicon-gift                   { &:before { content: \"\\e102\"; } }\n.glyphicon-leaf                   { &:before { content: \"\\e103\"; } }\n.glyphicon-fire                   { &:before { content: \"\\e104\"; } }\n.glyphicon-eye-open               { &:before { content: \"\\e105\"; } }\n.glyphicon-eye-close              { &:before { content: \"\\e106\"; } }\n.glyphicon-warning-sign           { &:before { content: \"\\e107\"; } }\n.glyphicon-plane                  { &:before { content: \"\\e108\"; } }\n.glyphicon-calendar               { &:before { content: \"\\e109\"; } }\n.glyphicon-random                 { &:before { content: \"\\e110\"; } }\n.glyphicon-comment                { &:before { content: \"\\e111\"; } }\n.glyphicon-magnet                 { &:before { content: \"\\e112\"; } }\n.glyphicon-chevron-up             { &:before { content: \"\\e113\"; } }\n.glyphicon-chevron-down           { &:before { content: \"\\e114\"; } }\n.glyphicon-retweet                { &:before { content: \"\\e115\"; } }\n.glyphicon-shopping-cart          { &:before { content: \"\\e116\"; } }\n.glyphicon-folder-close           { &:before { content: \"\\e117\"; } }\n.glyphicon-folder-open            { &:before { content: \"\\e118\"; } }\n.glyphicon-resize-vertical        { &:before { content: \"\\e119\"; } }\n.glyphicon-resize-horizontal      { &:before { content: \"\\e120\"; } }\n.glyphicon-hdd                    { &:before { content: \"\\e121\"; } }\n.glyphicon-bullhorn               { &:before { content: \"\\e122\"; } }\n.glyphicon-bell                   { &:before { content: \"\\e123\"; } }\n.glyphicon-certificate            { &:before { content: \"\\e124\"; } }\n.glyphicon-thumbs-up              { &:before { content: \"\\e125\"; } }\n.glyphicon-thumbs-down            { &:before { content: \"\\e126\"; } }\n.glyphicon-hand-right             { &:before { content: \"\\e127\"; } }\n.glyphicon-hand-left              { &:before { content: \"\\e128\"; } }\n.glyphicon-hand-up                { &:before { content: \"\\e129\"; } }\n.glyphicon-hand-down              { &:before { content: \"\\e130\"; } }\n.glyphicon-circle-arrow-right     { &:before { content: \"\\e131\"; } }\n.glyphicon-circle-arrow-left      { &:before { content: \"\\e132\"; } }\n.glyphicon-circle-arrow-up        { &:before { content: \"\\e133\"; } }\n.glyphicon-circle-arrow-down      { &:before { content: \"\\e134\"; } }\n.glyphicon-globe                  { &:before { content: \"\\e135\"; } }\n.glyphicon-wrench                 { &:before { content: \"\\e136\"; } }\n.glyphicon-tasks                  { &:before { content: \"\\e137\"; } }\n.glyphicon-filter                 { &:before { content: \"\\e138\"; } }\n.glyphicon-briefcase              { &:before { content: \"\\e139\"; } }\n.glyphicon-fullscreen             { &:before { content: \"\\e140\"; } }\n.glyphicon-dashboard              { &:before { content: \"\\e141\"; } }\n.glyphicon-paperclip              { &:before { content: \"\\e142\"; } }\n.glyphicon-heart-empty            { &:before { content: \"\\e143\"; } }\n.glyphicon-link                   { &:before { content: \"\\e144\"; } }\n.glyphicon-phone                  { &:before { content: \"\\e145\"; } }\n.glyphicon-pushpin                { &:before { content: \"\\e146\"; } }\n.glyphicon-usd                    { &:before { content: \"\\e148\"; } }\n.glyphicon-gbp                    { &:before { content: \"\\e149\"; } }\n.glyphicon-sort                   { &:before { content: \"\\e150\"; } }\n.glyphicon-sort-by-alphabet       { &:before { content: \"\\e151\"; } }\n.glyphicon-sort-by-alphabet-alt   { &:before { content: \"\\e152\"; } }\n.glyphicon-sort-by-order          { &:before { content: \"\\e153\"; } }\n.glyphicon-sort-by-order-alt      { &:before { content: \"\\e154\"; } }\n.glyphicon-sort-by-attributes     { &:before { content: \"\\e155\"; } }\n.glyphicon-sort-by-attributes-alt { &:before { content: \"\\e156\"; } }\n.glyphicon-unchecked              { &:before { content: \"\\e157\"; } }\n.glyphicon-expand                 { &:before { content: \"\\e158\"; } }\n.glyphicon-collapse-down          { &:before { content: \"\\e159\"; } }\n.glyphicon-collapse-up            { &:before { content: \"\\e160\"; } }\n.glyphicon-log-in                 { &:before { content: \"\\e161\"; } }\n.glyphicon-flash                  { &:before { content: \"\\e162\"; } }\n.glyphicon-log-out                { &:before { content: \"\\e163\"; } }\n.glyphicon-new-window             { &:before { content: \"\\e164\"; } }\n.glyphicon-record                 { &:before { content: \"\\e165\"; } }\n.glyphicon-save                   { &:before { content: \"\\e166\"; } }\n.glyphicon-open                   { &:before { content: \"\\e167\"; } }\n.glyphicon-saved                  { &:before { content: \"\\e168\"; } }\n.glyphicon-import                 { &:before { content: \"\\e169\"; } }\n.glyphicon-export                 { &:before { content: \"\\e170\"; } }\n.glyphicon-send                   { &:before { content: \"\\e171\"; } }\n.glyphicon-floppy-disk            { &:before { content: \"\\e172\"; } }\n.glyphicon-floppy-saved           { &:before { content: \"\\e173\"; } }\n.glyphicon-floppy-remove          { &:before { content: \"\\e174\"; } }\n.glyphicon-floppy-save            { &:before { content: \"\\e175\"; } }\n.glyphicon-floppy-open            { &:before { content: \"\\e176\"; } }\n.glyphicon-credit-card            { &:before { content: \"\\e177\"; } }\n.glyphicon-transfer               { &:before { content: \"\\e178\"; } }\n.glyphicon-cutlery                { &:before { content: \"\\e179\"; } }\n.glyphicon-header                 { &:before { content: \"\\e180\"; } }\n.glyphicon-compressed             { &:before { content: \"\\e181\"; } }\n.glyphicon-earphone               { &:before { content: \"\\e182\"; } }\n.glyphicon-phone-alt              { &:before { content: \"\\e183\"; } }\n.glyphicon-tower                  { &:before { content: \"\\e184\"; } }\n.glyphicon-stats                  { &:before { content: \"\\e185\"; } }\n.glyphicon-sd-video               { &:before { content: \"\\e186\"; } }\n.glyphicon-hd-video               { &:before { content: \"\\e187\"; } }\n.glyphicon-subtitles              { &:before { content: \"\\e188\"; } }\n.glyphicon-sound-stereo           { &:before { content: \"\\e189\"; } }\n.glyphicon-sound-dolby            { &:before { content: \"\\e190\"; } }\n.glyphicon-sound-5-1              { &:before { content: \"\\e191\"; } }\n.glyphicon-sound-6-1              { &:before { content: \"\\e192\"; } }\n.glyphicon-sound-7-1              { &:before { content: \"\\e193\"; } }\n.glyphicon-copyright-mark         { &:before { content: \"\\e194\"; } }\n.glyphicon-registration-mark      { &:before { content: \"\\e195\"; } }\n.glyphicon-cloud-download         { &:before { content: \"\\e197\"; } }\n.glyphicon-cloud-upload           { &:before { content: \"\\e198\"; } }\n.glyphicon-tree-conifer           { &:before { content: \"\\e199\"; } }\n.glyphicon-tree-deciduous         { &:before { content: \"\\e200\"; } }\n","//\n// Dropdown menus\n// --------------------------------------------------\n\n\n// Dropdown arrow/caret\n.caret {\n  display: inline-block;\n  width: 0;\n  height: 0;\n  margin-left: 2px;\n  vertical-align: middle;\n  border-top:   @caret-width-base solid;\n  border-right: @caret-width-base solid transparent;\n  border-left:  @caret-width-base solid transparent;\n}\n\n// The dropdown wrapper (div)\n.dropdown {\n  position: relative;\n}\n\n// Prevent the focus on the dropdown toggle when closing dropdowns\n.dropdown-toggle:focus {\n  outline: 0;\n}\n\n// The dropdown menu (ul)\n.dropdown-menu {\n  position: absolute;\n  top: 100%;\n  left: 0;\n  z-index: @zindex-dropdown;\n  display: none; // none by default, but block on \"open\" of the menu\n  float: left;\n  min-width: 160px;\n  padding: 5px 0;\n  margin: 2px 0 0; // override default ul\n  list-style: none;\n  font-size: @font-size-base;\n  background-color: @dropdown-bg;\n  border: 1px solid @dropdown-fallback-border; // IE8 fallback\n  border: 1px solid @dropdown-border;\n  border-radius: @border-radius-base;\n  .box-shadow(0 6px 12px rgba(0,0,0,.175));\n  background-clip: padding-box;\n\n  // Aligns the dropdown menu to right\n  //\n  // Deprecated as of 3.1.0 in favor of `.dropdown-menu-[dir]`\n  &.pull-right {\n    right: 0;\n    left: auto;\n  }\n\n  // Dividers (basically an hr) within the dropdown\n  .divider {\n    .nav-divider(@dropdown-divider-bg);\n  }\n\n  // Links within the dropdown menu\n  > li > a {\n    display: block;\n    padding: 3px 20px;\n    clear: both;\n    font-weight: normal;\n    line-height: @line-height-base;\n    color: @dropdown-link-color;\n    white-space: nowrap; // prevent links from randomly breaking onto new lines\n  }\n}\n\n// Hover/Focus state\n.dropdown-menu > li > a {\n  &:hover,\n  &:focus {\n    text-decoration: none;\n    color: @dropdown-link-hover-color;\n    background-color: @dropdown-link-hover-bg;\n  }\n}\n\n// Active state\n.dropdown-menu > .active > a {\n  &,\n  &:hover,\n  &:focus {\n    color: @dropdown-link-active-color;\n    text-decoration: none;\n    outline: 0;\n    background-color: @dropdown-link-active-bg;\n  }\n}\n\n// Disabled state\n//\n// Gray out text and ensure the hover/focus state remains gray\n\n.dropdown-menu > .disabled > a {\n  &,\n  &:hover,\n  &:focus {\n    color: @dropdown-link-disabled-color;\n  }\n}\n// Nuke hover/focus effects\n.dropdown-menu > .disabled > a {\n  &:hover,\n  &:focus {\n    text-decoration: none;\n    background-color: transparent;\n    background-image: none; // Remove CSS gradient\n    .reset-filter();\n    cursor: not-allowed;\n  }\n}\n\n// Open state for the dropdown\n.open {\n  // Show the menu\n  > .dropdown-menu {\n    display: block;\n  }\n\n  // Remove the outline when :focus is triggered\n  > a {\n    outline: 0;\n  }\n}\n\n// Menu positioning\n//\n// Add extra class to `.dropdown-menu` to flip the alignment of the dropdown\n// menu with the parent.\n.dropdown-menu-right {\n  left: auto; // Reset the default from `.dropdown-menu`\n  right: 0;\n}\n// With v3, we enabled auto-flipping if you have a dropdown within a right\n// aligned nav component. To enable the undoing of that, we provide an override\n// to restore the default dropdown menu alignment.\n//\n// This is only for left-aligning a dropdown menu within a `.navbar-right` or\n// `.pull-right` nav component.\n.dropdown-menu-left {\n  left: 0;\n  right: auto;\n}\n\n// Dropdown section headers\n.dropdown-header {\n  display: block;\n  padding: 3px 20px;\n  font-size: @font-size-small;\n  line-height: @line-height-base;\n  color: @dropdown-header-color;\n}\n\n// Backdrop to catch body clicks on mobile, etc.\n.dropdown-backdrop {\n  position: fixed;\n  left: 0;\n  right: 0;\n  bottom: 0;\n  top: 0;\n  z-index: (@zindex-dropdown - 10);\n}\n\n// Right aligned dropdowns\n.pull-right > .dropdown-menu {\n  right: 0;\n  left: auto;\n}\n\n// Allow for dropdowns to go bottom up (aka, dropup-menu)\n//\n// Just add .dropup after the standard .dropdown class and you're set, bro.\n// TODO: abstract this so that the navbar fixed styles are not placed here?\n\n.dropup,\n.navbar-fixed-bottom .dropdown {\n  // Reverse the caret\n  .caret {\n    border-top: 0;\n    border-bottom: @caret-width-base solid;\n    content: \"\";\n  }\n  // Different positioning for bottom up menu\n  .dropdown-menu {\n    top: auto;\n    bottom: 100%;\n    margin-bottom: 1px;\n  }\n}\n\n\n// Component alignment\n//\n// Reiterate per navbar.less and the modified component alignment there.\n\n@media (min-width: @grid-float-breakpoint) {\n  .navbar-right {\n    .dropdown-menu {\n      .dropdown-menu-right();\n    }\n    // Necessary for overrides of the default right aligned menu.\n    // Will remove come v4 in all likelihood.\n    .dropdown-menu-left {\n      .dropdown-menu-left();\n    }\n  }\n}\n\n","//\n// Input groups\n// --------------------------------------------------\n\n// Base styles\n// -------------------------\n.input-group {\n  position: relative; // For dropdowns\n  display: table;\n  border-collapse: separate; // prevent input groups from inheriting border styles from table cells when placed within a table\n\n  // Undo padding and float of grid classes\n  &[class*=\"col-\"] {\n    float: none;\n    padding-left: 0;\n    padding-right: 0;\n  }\n\n  .form-control {\n    // Ensure that the input is always above the *appended* addon button for\n    // proper border colors.\n    position: relative;\n    z-index: 2;\n\n    // IE9 fubars the placeholder attribute in text inputs and the arrows on\n    // select elements in input groups. To fix it, we float the input. Details:\n    // https://github.com/twbs/bootstrap/issues/11561#issuecomment-28936855\n    float: left;\n\n    width: 100%;\n    margin-bottom: 0;\n  }\n}\n\n// Sizing options\n//\n// Remix the default form control sizing classes into new ones for easier\n// manipulation.\n\n.input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn { .input-lg(); }\n.input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn { .input-sm(); }\n\n\n// Display as table-cell\n// -------------------------\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n  display: table-cell;\n\n  &:not(:first-child):not(:last-child) {\n    border-radius: 0;\n  }\n}\n// Addon and addon wrapper for buttons\n.input-group-addon,\n.input-group-btn {\n  width: 1%;\n  white-space: nowrap;\n  vertical-align: middle; // Match the inputs\n}\n\n// Text input groups\n// -------------------------\n.input-group-addon {\n  padding: @padding-base-vertical @padding-base-horizontal;\n  font-size: @font-size-base;\n  font-weight: normal;\n  line-height: 1;\n  color: @input-color;\n  text-align: center;\n  background-color: @input-group-addon-bg;\n  border: 1px solid @input-group-addon-border-color;\n  border-radius: @border-radius-base;\n\n  // Sizing\n  &.input-sm {\n    padding: @padding-small-vertical @padding-small-horizontal;\n    font-size: @font-size-small;\n    border-radius: @border-radius-small;\n  }\n  &.input-lg {\n    padding: @padding-large-vertical @padding-large-horizontal;\n    font-size: @font-size-large;\n    border-radius: @border-radius-large;\n  }\n\n  // Nuke default margins from checkboxes and radios to vertically center within.\n  input[type=\"radio\"],\n  input[type=\"checkbox\"] {\n    margin-top: 0;\n  }\n}\n\n// Reset rounded corners\n.input-group .form-control:first-child,\n.input-group-addon:first-child,\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group > .btn,\n.input-group-btn:first-child > .dropdown-toggle,\n.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n  .border-right-radius(0);\n}\n.input-group-addon:first-child {\n  border-right: 0;\n}\n.input-group .form-control:last-child,\n.input-group-addon:last-child,\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group > .btn,\n.input-group-btn:last-child > .dropdown-toggle,\n.input-group-btn:first-child > .btn:not(:first-child),\n.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n  .border-left-radius(0);\n}\n.input-group-addon:last-child {\n  border-left: 0;\n}\n\n// Button input groups\n// -------------------------\n.input-group-btn {\n  position: relative;\n  // Jankily prevent input button groups from wrapping with `white-space` and\n  // `font-size` in combination with `inline-block` on buttons.\n  font-size: 0;\n  white-space: nowrap;\n\n  // Negative margin for spacing, position for bringing hovered/focused/actived\n  // element above the siblings.\n  > .btn {\n    position: relative;\n    + .btn {\n      margin-left: -1px;\n    }\n    // Bring the \"active\" button to the front\n    &:hover,\n    &:focus,\n    &:active {\n      z-index: 2;\n    }\n  }\n\n  // Negative margin to only have a 1px border between the two\n  &:first-child {\n    > .btn,\n    > .btn-group {\n      margin-right: -1px;\n    }\n  }\n  &:last-child {\n    > .btn,\n    > .btn-group {\n      margin-left: -1px;\n    }\n  }\n}\n","//\n// Navs\n// --------------------------------------------------\n\n\n// Base class\n// --------------------------------------------------\n\n.nav {\n  margin-bottom: 0;\n  padding-left: 0; // Override default ul/ol\n  list-style: none;\n  &:extend(.clearfix all);\n\n  > li {\n    position: relative;\n    display: block;\n\n    > a {\n      position: relative;\n      display: block;\n      padding: @nav-link-padding;\n      &:hover,\n      &:focus {\n        text-decoration: none;\n        background-color: @nav-link-hover-bg;\n      }\n    }\n\n    // Disabled state sets text to gray and nukes hover/tab effects\n    &.disabled > a {\n      color: @nav-disabled-link-color;\n\n      &:hover,\n      &:focus {\n        color: @nav-disabled-link-hover-color;\n        text-decoration: none;\n        background-color: transparent;\n        cursor: not-allowed;\n      }\n    }\n  }\n\n  // Open dropdowns\n  .open > a {\n    &,\n    &:hover,\n    &:focus {\n      background-color: @nav-link-hover-bg;\n      border-color: @link-color;\n    }\n  }\n\n  // Nav dividers (deprecated with v3.0.1)\n  //\n  // This should have been removed in v3 with the dropping of `.nav-list`, but\n  // we missed it. We don't currently support this anywhere, but in the interest\n  // of maintaining backward compatibility in case you use it, it's deprecated.\n  .nav-divider {\n    .nav-divider();\n  }\n\n  // Prevent IE8 from misplacing imgs\n  //\n  // See https://github.com/h5bp/html5-boilerplate/issues/984#issuecomment-3985989\n  > li > a > img {\n    max-width: none;\n  }\n}\n\n\n// Tabs\n// -------------------------\n\n// Give the tabs something to sit on\n.nav-tabs {\n  border-bottom: 1px solid @nav-tabs-border-color;\n  > li {\n    float: left;\n    // Make the list-items overlay the bottom border\n    margin-bottom: -1px;\n\n    // Actual tabs (as links)\n    > a {\n      margin-right: 2px;\n      line-height: @line-height-base;\n      border: 1px solid transparent;\n      border-radius: @border-radius-base @border-radius-base 0 0;\n      &:hover {\n        border-color: @nav-tabs-link-hover-border-color @nav-tabs-link-hover-border-color @nav-tabs-border-color;\n      }\n    }\n\n    // Active state, and its :hover to override normal :hover\n    &.active > a {\n      &,\n      &:hover,\n      &:focus {\n        color: @nav-tabs-active-link-hover-color;\n        background-color: @nav-tabs-active-link-hover-bg;\n        border: 1px solid @nav-tabs-active-link-hover-border-color;\n        border-bottom-color: transparent;\n        cursor: default;\n      }\n    }\n  }\n  // pulling this in mainly for less shorthand\n  &.nav-justified {\n    .nav-justified();\n    .nav-tabs-justified();\n  }\n}\n\n\n// Pills\n// -------------------------\n.nav-pills {\n  > li {\n    float: left;\n\n    // Links rendered as pills\n    > a {\n      border-radius: @nav-pills-border-radius;\n    }\n    + li {\n      margin-left: 2px;\n    }\n\n    // Active state\n    &.active > a {\n      &,\n      &:hover,\n      &:focus {\n        color: @nav-pills-active-link-hover-color;\n        background-color: @nav-pills-active-link-hover-bg;\n      }\n    }\n  }\n}\n\n\n// Stacked pills\n.nav-stacked {\n  > li {\n    float: none;\n    + li {\n      margin-top: 2px;\n      margin-left: 0; // no need for this gap between nav items\n    }\n  }\n}\n\n\n// Nav variations\n// --------------------------------------------------\n\n// Justified nav links\n// -------------------------\n\n.nav-justified {\n  width: 100%;\n\n  > li {\n    float: none;\n     > a {\n      text-align: center;\n      margin-bottom: 5px;\n    }\n  }\n\n  > .dropdown .dropdown-menu {\n    top: auto;\n    left: auto;\n  }\n\n  @media (min-width: @screen-sm-min) {\n    > li {\n      display: table-cell;\n      width: 1%;\n      > a {\n        margin-bottom: 0;\n      }\n    }\n  }\n}\n\n// Move borders to anchors instead of bottom of list\n//\n// Mixin for adding on top the shared `.nav-justified` styles for our tabs\n.nav-tabs-justified {\n  border-bottom: 0;\n\n  > li > a {\n    // Override margin from .nav-tabs\n    margin-right: 0;\n    border-radius: @border-radius-base;\n  }\n\n  > .active > a,\n  > .active > a:hover,\n  > .active > a:focus {\n    border: 1px solid @nav-tabs-justified-link-border-color;\n  }\n\n  @media (min-width: @screen-sm-min) {\n    > li > a {\n      border-bottom: 1px solid @nav-tabs-justified-link-border-color;\n      border-radius: @border-radius-base @border-radius-base 0 0;\n    }\n    > .active > a,\n    > .active > a:hover,\n    > .active > a:focus {\n      border-bottom-color: @nav-tabs-justified-active-link-border-color;\n    }\n  }\n}\n\n\n// Tabbable tabs\n// -------------------------\n\n// Hide tabbable panes to start, show them when `.active`\n.tab-content {\n  > .tab-pane {\n    display: none;\n  }\n  > .active {\n    display: block;\n  }\n}\n\n\n// Dropdowns\n// -------------------------\n\n// Specific dropdowns\n.nav-tabs .dropdown-menu {\n  // make dropdown border overlap tab border\n  margin-top: -1px;\n  // Remove the top rounded corners here since there is a hard edge above the menu\n  .border-top-radius(0);\n}\n","//\n// Navbars\n// --------------------------------------------------\n\n\n// Wrapper and base class\n//\n// Provide a static navbar from which we expand to create full-width, fixed, and\n// other navbar variations.\n\n.navbar {\n  position: relative;\n  min-height: @navbar-height; // Ensure a navbar always shows (e.g., without a .navbar-brand in collapsed mode)\n  margin-bottom: @navbar-margin-bottom;\n  border: 1px solid transparent;\n\n  // Prevent floats from breaking the navbar\n  &:extend(.clearfix all);\n\n  @media (min-width: @grid-float-breakpoint) {\n    border-radius: @navbar-border-radius;\n  }\n}\n\n\n// Navbar heading\n//\n// Groups `.navbar-brand` and `.navbar-toggle` into a single component for easy\n// styling of responsive aspects.\n\n.navbar-header {\n  &:extend(.clearfix all);\n\n  @media (min-width: @grid-float-breakpoint) {\n    float: left;\n  }\n}\n\n\n// Navbar collapse (body)\n//\n// Group your navbar content into this for easy collapsing and expanding across\n// various device sizes. By default, this content is collapsed when <768px, but\n// will expand past that for a horizontal display.\n//\n// To start (on mobile devices) the navbar links, forms, and buttons are stacked\n// vertically and include a `max-height` to overflow in case you have too much\n// content for the user's viewport.\n\n.navbar-collapse {\n  max-height: @navbar-collapse-max-height;\n  overflow-x: visible;\n  padding-right: @navbar-padding-horizontal;\n  padding-left:  @navbar-padding-horizontal;\n  border-top: 1px solid transparent;\n  box-shadow: inset 0 1px 0 rgba(255,255,255,.1);\n  &:extend(.clearfix all);\n  -webkit-overflow-scrolling: touch;\n\n  &.in {\n    overflow-y: auto;\n  }\n\n  @media (min-width: @grid-float-breakpoint) {\n    width: auto;\n    border-top: 0;\n    box-shadow: none;\n\n    &.collapse {\n      display: block !important;\n      height: auto !important;\n      padding-bottom: 0; // Override default setting\n      overflow: visible !important;\n    }\n\n    &.in {\n      overflow-y: visible;\n    }\n\n    // Undo the collapse side padding for navbars with containers to ensure\n    // alignment of right-aligned contents.\n    .navbar-fixed-top &,\n    .navbar-static-top &,\n    .navbar-fixed-bottom & {\n      padding-left: 0;\n      padding-right: 0;\n    }\n  }\n}\n\n\n// Both navbar header and collapse\n//\n// When a container is present, change the behavior of the header and collapse.\n\n.container,\n.container-fluid {\n  > .navbar-header,\n  > .navbar-collapse {\n    margin-right: -@navbar-padding-horizontal;\n    margin-left:  -@navbar-padding-horizontal;\n\n    @media (min-width: @grid-float-breakpoint) {\n      margin-right: 0;\n      margin-left:  0;\n    }\n  }\n}\n\n\n//\n// Navbar alignment options\n//\n// Display the navbar across the entirety of the page or fixed it to the top or\n// bottom of the page.\n\n// Static top (unfixed, but 100% wide) navbar\n.navbar-static-top {\n  z-index: @zindex-navbar;\n  border-width: 0 0 1px;\n\n  @media (min-width: @grid-float-breakpoint) {\n    border-radius: 0;\n  }\n}\n\n// Fix the top/bottom navbars when screen real estate supports it\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n  position: fixed;\n  right: 0;\n  left: 0;\n  z-index: @zindex-navbar-fixed;\n\n  // Undo the rounded corners\n  @media (min-width: @grid-float-breakpoint) {\n    border-radius: 0;\n  }\n}\n.navbar-fixed-top {\n  top: 0;\n  border-width: 0 0 1px;\n}\n.navbar-fixed-bottom {\n  bottom: 0;\n  margin-bottom: 0; // override .navbar defaults\n  border-width: 1px 0 0;\n}\n\n\n// Brand/project name\n\n.navbar-brand {\n  float: left;\n  padding: @navbar-padding-vertical @navbar-padding-horizontal;\n  font-size: @font-size-large;\n  line-height: @line-height-computed;\n  height: @navbar-height;\n\n  &:hover,\n  &:focus {\n    text-decoration: none;\n  }\n\n  @media (min-width: @grid-float-breakpoint) {\n    .navbar > .container &,\n    .navbar > .container-fluid & {\n      margin-left: -@navbar-padding-horizontal;\n    }\n  }\n}\n\n\n// Navbar toggle\n//\n// Custom button for toggling the `.navbar-collapse`, powered by the collapse\n// JavaScript plugin.\n\n.navbar-toggle {\n  position: relative;\n  float: right;\n  margin-right: @navbar-padding-horizontal;\n  padding: 9px 10px;\n  .navbar-vertical-align(34px);\n  background-color: transparent;\n  background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n  border: 1px solid transparent;\n  border-radius: @border-radius-base;\n\n  // We remove the `outline` here, but later compensate by attaching `:hover`\n  // styles to `:focus`.\n  &:focus {\n    outline: none;\n  }\n\n  // Bars\n  .icon-bar {\n    display: block;\n    width: 22px;\n    height: 2px;\n    border-radius: 1px;\n  }\n  .icon-bar + .icon-bar {\n    margin-top: 4px;\n  }\n\n  @media (min-width: @grid-float-breakpoint) {\n    display: none;\n  }\n}\n\n\n// Navbar nav links\n//\n// Builds on top of the `.nav` components with its own modifier class to make\n// the nav the full height of the horizontal nav (above 768px).\n\n.navbar-nav {\n  margin: (@navbar-padding-vertical / 2) -@navbar-padding-horizontal;\n\n  > li > a {\n    padding-top:    10px;\n    padding-bottom: 10px;\n    line-height: @line-height-computed;\n  }\n\n  @media (max-width: @grid-float-breakpoint-max) {\n    // Dropdowns get custom display when collapsed\n    .open .dropdown-menu {\n      position: static;\n      float: none;\n      width: auto;\n      margin-top: 0;\n      background-color: transparent;\n      border: 0;\n      box-shadow: none;\n      > li > a,\n      .dropdown-header {\n        padding: 5px 15px 5px 25px;\n      }\n      > li > a {\n        line-height: @line-height-computed;\n        &:hover,\n        &:focus {\n          background-image: none;\n        }\n      }\n    }\n  }\n\n  // Uncollapse the nav\n  @media (min-width: @grid-float-breakpoint) {\n    float: left;\n    margin: 0;\n\n    > li {\n      float: left;\n      > a {\n        padding-top:    @navbar-padding-vertical;\n        padding-bottom: @navbar-padding-vertical;\n      }\n    }\n\n    &.navbar-right:last-child {\n      margin-right: -@navbar-padding-horizontal;\n    }\n  }\n}\n\n\n// Component alignment\n//\n// Repurpose the pull utilities as their own navbar utilities to avoid specificity\n// issues with parents and chaining. Only do this when the navbar is uncollapsed\n// though so that navbar contents properly stack and align in mobile.\n\n@media (min-width: @grid-float-breakpoint) {\n  .navbar-left  { .pull-left(); }\n  .navbar-right { .pull-right(); }\n}\n\n\n// Navbar form\n//\n// Extension of the `.form-inline` with some extra flavor for optimum display in\n// our navbars.\n\n.navbar-form {\n  margin-left: -@navbar-padding-horizontal;\n  margin-right: -@navbar-padding-horizontal;\n  padding: 10px @navbar-padding-horizontal;\n  border-top: 1px solid transparent;\n  border-bottom: 1px solid transparent;\n  @shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1);\n  .box-shadow(@shadow);\n\n  // Mixin behavior for optimum display\n  .form-inline();\n\n  .form-group {\n    @media (max-width: @grid-float-breakpoint-max) {\n      margin-bottom: 5px;\n    }\n  }\n\n  // Vertically center in expanded, horizontal navbar\n  .navbar-vertical-align(@input-height-base);\n\n  // Undo 100% width for pull classes\n  @media (min-width: @grid-float-breakpoint) {\n    width: auto;\n    border: 0;\n    margin-left: 0;\n    margin-right: 0;\n    padding-top: 0;\n    padding-bottom: 0;\n    .box-shadow(none);\n\n    // Outdent the form if last child to line up with content down the page\n    &.navbar-right:last-child {\n      margin-right: -@navbar-padding-horizontal;\n    }\n  }\n}\n\n\n// Dropdown menus\n\n// Menu position and menu carets\n.navbar-nav > li > .dropdown-menu {\n  margin-top: 0;\n  .border-top-radius(0);\n}\n// Menu position and menu caret support for dropups via extra dropup class\n.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\n  .border-bottom-radius(0);\n}\n\n\n// Buttons in navbars\n//\n// Vertically center a button within a navbar (when *not* in a form).\n\n.navbar-btn {\n  .navbar-vertical-align(@input-height-base);\n\n  &.btn-sm {\n    .navbar-vertical-align(@input-height-small);\n  }\n  &.btn-xs {\n    .navbar-vertical-align(22);\n  }\n}\n\n\n// Text in navbars\n//\n// Add a class to make any element properly align itself vertically within the navbars.\n\n.navbar-text {\n  .navbar-vertical-align(@line-height-computed);\n\n  @media (min-width: @grid-float-breakpoint) {\n    float: left;\n    margin-left: @navbar-padding-horizontal;\n    margin-right: @navbar-padding-horizontal;\n\n    // Outdent the form if last child to line up with content down the page\n    &.navbar-right:last-child {\n      margin-right: 0;\n    }\n  }\n}\n\n// Alternate navbars\n// --------------------------------------------------\n\n// Default navbar\n.navbar-default {\n  background-color: @navbar-default-bg;\n  border-color: @navbar-default-border;\n\n  .navbar-brand {\n    color: @navbar-default-brand-color;\n    &:hover,\n    &:focus {\n      color: @navbar-default-brand-hover-color;\n      background-color: @navbar-default-brand-hover-bg;\n    }\n  }\n\n  .navbar-text {\n    color: @navbar-default-color;\n  }\n\n  .navbar-nav {\n    > li > a {\n      color: @navbar-default-link-color;\n\n      &:hover,\n      &:focus {\n        color: @navbar-default-link-hover-color;\n        background-color: @navbar-default-link-hover-bg;\n      }\n    }\n    > .active > a {\n      &,\n      &:hover,\n      &:focus {\n        color: @navbar-default-link-active-color;\n        background-color: @navbar-default-link-active-bg;\n      }\n    }\n    > .disabled > a {\n      &,\n      &:hover,\n      &:focus {\n        color: @navbar-default-link-disabled-color;\n        background-color: @navbar-default-link-disabled-bg;\n      }\n    }\n  }\n\n  .navbar-toggle {\n    border-color: @navbar-default-toggle-border-color;\n    &:hover,\n    &:focus {\n      background-color: @navbar-default-toggle-hover-bg;\n    }\n    .icon-bar {\n      background-color: @navbar-default-toggle-icon-bar-bg;\n    }\n  }\n\n  .navbar-collapse,\n  .navbar-form {\n    border-color: @navbar-default-border;\n  }\n\n  // Dropdown menu items\n  .navbar-nav {\n    // Remove background color from open dropdown\n    > .open > a {\n      &,\n      &:hover,\n      &:focus {\n        background-color: @navbar-default-link-active-bg;\n        color: @navbar-default-link-active-color;\n      }\n    }\n\n    @media (max-width: @grid-float-breakpoint-max) {\n      // Dropdowns get custom display when collapsed\n      .open .dropdown-menu {\n        > li > a {\n          color: @navbar-default-link-color;\n          &:hover,\n          &:focus {\n            color: @navbar-default-link-hover-color;\n            background-color: @navbar-default-link-hover-bg;\n          }\n        }\n        > .active > a {\n          &,\n          &:hover,\n          &:focus {\n            color: @navbar-default-link-active-color;\n            background-color: @navbar-default-link-active-bg;\n          }\n        }\n        > .disabled > a {\n          &,\n          &:hover,\n          &:focus {\n            color: @navbar-default-link-disabled-color;\n            background-color: @navbar-default-link-disabled-bg;\n          }\n        }\n      }\n    }\n  }\n\n\n  // Links in navbars\n  //\n  // Add a class to ensure links outside the navbar nav are colored correctly.\n\n  .navbar-link {\n    color: @navbar-default-link-color;\n    &:hover {\n      color: @navbar-default-link-hover-color;\n    }\n  }\n\n}\n\n// Inverse navbar\n\n.navbar-inverse {\n  background-color: @navbar-inverse-bg;\n  border-color: @navbar-inverse-border;\n\n  .navbar-brand {\n    color: @navbar-inverse-brand-color;\n    &:hover,\n    &:focus {\n      color: @navbar-inverse-brand-hover-color;\n      background-color: @navbar-inverse-brand-hover-bg;\n    }\n  }\n\n  .navbar-text {\n    color: @navbar-inverse-color;\n  }\n\n  .navbar-nav {\n    > li > a {\n      color: @navbar-inverse-link-color;\n\n      &:hover,\n      &:focus {\n        color: @navbar-inverse-link-hover-color;\n        background-color: @navbar-inverse-link-hover-bg;\n      }\n    }\n    > .active > a {\n      &,\n      &:hover,\n      &:focus {\n        color: @navbar-inverse-link-active-color;\n        background-color: @navbar-inverse-link-active-bg;\n      }\n    }\n    > .disabled > a {\n      &,\n      &:hover,\n      &:focus {\n        color: @navbar-inverse-link-disabled-color;\n        background-color: @navbar-inverse-link-disabled-bg;\n      }\n    }\n  }\n\n  // Darken the responsive nav toggle\n  .navbar-toggle {\n    border-color: @navbar-inverse-toggle-border-color;\n    &:hover,\n    &:focus {\n      background-color: @navbar-inverse-toggle-hover-bg;\n    }\n    .icon-bar {\n      background-color: @navbar-inverse-toggle-icon-bar-bg;\n    }\n  }\n\n  .navbar-collapse,\n  .navbar-form {\n    border-color: darken(@navbar-inverse-bg, 7%);\n  }\n\n  // Dropdowns\n  .navbar-nav {\n    > .open > a {\n      &,\n      &:hover,\n      &:focus {\n        background-color: @navbar-inverse-link-active-bg;\n        color: @navbar-inverse-link-active-color;\n      }\n    }\n\n    @media (max-width: @grid-float-breakpoint-max) {\n      // Dropdowns get custom display\n      .open .dropdown-menu {\n        > .dropdown-header {\n          border-color: @navbar-inverse-border;\n        }\n        .divider {\n          background-color: @navbar-inverse-border;\n        }\n        > li > a {\n          color: @navbar-inverse-link-color;\n          &:hover,\n          &:focus {\n            color: @navbar-inverse-link-hover-color;\n            background-color: @navbar-inverse-link-hover-bg;\n          }\n        }\n        > .active > a {\n          &,\n          &:hover,\n          &:focus {\n            color: @navbar-inverse-link-active-color;\n            background-color: @navbar-inverse-link-active-bg;\n          }\n        }\n        > .disabled > a {\n          &,\n          &:hover,\n          &:focus {\n            color: @navbar-inverse-link-disabled-color;\n            background-color: @navbar-inverse-link-disabled-bg;\n          }\n        }\n      }\n    }\n  }\n\n  .navbar-link {\n    color: @navbar-inverse-link-color;\n    &:hover {\n      color: @navbar-inverse-link-hover-color;\n    }\n  }\n\n}\n","//\n// Utility classes\n// --------------------------------------------------\n\n\n// Floats\n// -------------------------\n\n.clearfix {\n  .clearfix();\n}\n.center-block {\n  .center-block();\n}\n.pull-right {\n  float: right !important;\n}\n.pull-left {\n  float: left !important;\n}\n\n\n// Toggling content\n// -------------------------\n\n// Note: Deprecated .hide in favor of .hidden or .sr-only (as appropriate) in v3.0.1\n.hide {\n  display: none !important;\n}\n.show {\n  display: block !important;\n}\n.invisible {\n  visibility: hidden;\n}\n.text-hide {\n  .text-hide();\n}\n\n\n// Hide from screenreaders and browsers\n//\n// Credit: HTML5 Boilerplate\n\n.hidden {\n  display: none !important;\n  visibility: hidden !important;\n}\n\n\n// For Affix plugin\n// -------------------------\n\n.affix {\n  position: fixed;\n}\n","//\n// Breadcrumbs\n// --------------------------------------------------\n\n\n.breadcrumb {\n  padding: @breadcrumb-padding-vertical @breadcrumb-padding-horizontal;\n  margin-bottom: @line-height-computed;\n  list-style: none;\n  background-color: @breadcrumb-bg;\n  border-radius: @border-radius-base;\n\n  > li {\n    display: inline-block;\n\n    + li:before {\n      content: \"@{breadcrumb-separator}\\00a0\"; // Unicode space added since inline-block means non-collapsing white-space\n      padding: 0 5px;\n      color: @breadcrumb-color;\n    }\n  }\n\n  > .active {\n    color: @breadcrumb-active-color;\n  }\n}\n","//\n// Pagination (multiple pages)\n// --------------------------------------------------\n.pagination {\n  display: inline-block;\n  padding-left: 0;\n  margin: @line-height-computed 0;\n  border-radius: @border-radius-base;\n\n  > li {\n    display: inline; // Remove list-style and block-level defaults\n    > a,\n    > span {\n      position: relative;\n      float: left; // Collapse white-space\n      padding: @padding-base-vertical @padding-base-horizontal;\n      line-height: @line-height-base;\n      text-decoration: none;\n      color: @pagination-color;\n      background-color: @pagination-bg;\n      border: 1px solid @pagination-border;\n      margin-left: -1px;\n    }\n    &:first-child {\n      > a,\n      > span {\n        margin-left: 0;\n        .border-left-radius(@border-radius-base);\n      }\n    }\n    &:last-child {\n      > a,\n      > span {\n        .border-right-radius(@border-radius-base);\n      }\n    }\n  }\n\n  > li > a,\n  > li > span {\n    &:hover,\n    &:focus {\n      color: @pagination-hover-color;\n      background-color: @pagination-hover-bg;\n      border-color: @pagination-hover-border;\n    }\n  }\n\n  > .active > a,\n  > .active > span {\n    &,\n    &:hover,\n    &:focus {\n      z-index: 2;\n      color: @pagination-active-color;\n      background-color: @pagination-active-bg;\n      border-color: @pagination-active-border;\n      cursor: default;\n    }\n  }\n\n  > .disabled {\n    > span,\n    > span:hover,\n    > span:focus,\n    > a,\n    > a:hover,\n    > a:focus {\n      color: @pagination-disabled-color;\n      background-color: @pagination-disabled-bg;\n      border-color: @pagination-disabled-border;\n      cursor: not-allowed;\n    }\n  }\n}\n\n// Sizing\n// --------------------------------------------------\n\n// Large\n.pagination-lg {\n  .pagination-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @border-radius-large);\n}\n\n// Small\n.pagination-sm {\n  .pagination-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @border-radius-small);\n}\n","//\n// Pager pagination\n// --------------------------------------------------\n\n\n.pager {\n  padding-left: 0;\n  margin: @line-height-computed 0;\n  list-style: none;\n  text-align: center;\n  &:extend(.clearfix all);\n  li {\n    display: inline;\n    > a,\n    > span {\n      display: inline-block;\n      padding: 5px 14px;\n      background-color: @pager-bg;\n      border: 1px solid @pager-border;\n      border-radius: @pager-border-radius;\n    }\n\n    > a:hover,\n    > a:focus {\n      text-decoration: none;\n      background-color: @pager-hover-bg;\n    }\n  }\n\n  .next {\n    > a,\n    > span {\n      float: right;\n    }\n  }\n\n  .previous {\n    > a,\n    > span {\n      float: left;\n    }\n  }\n\n  .disabled {\n    > a,\n    > a:hover,\n    > a:focus,\n    > span {\n      color: @pager-disabled-color;\n      background-color: @pager-bg;\n      cursor: not-allowed;\n    }\n  }\n\n}\n","//\n// Labels\n// --------------------------------------------------\n\n.label {\n  display: inline;\n  padding: .2em .6em .3em;\n  font-size: 75%;\n  font-weight: bold;\n  line-height: 1;\n  color: @label-color;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: baseline;\n  border-radius: .25em;\n\n  // Add hover effects, but only for links\n  &[href] {\n    &:hover,\n    &:focus {\n      color: @label-link-hover-color;\n      text-decoration: none;\n      cursor: pointer;\n    }\n  }\n\n  // Empty labels collapse automatically (not available in IE8)\n  &:empty {\n    display: none;\n  }\n\n  // Quick fix for labels in buttons\n  .btn & {\n    position: relative;\n    top: -1px;\n  }\n}\n\n// Colors\n// Contextual variations (linked labels get darker on :hover)\n\n.label-default {\n  .label-variant(@label-default-bg);\n}\n\n.label-primary {\n  .label-variant(@label-primary-bg);\n}\n\n.label-success {\n  .label-variant(@label-success-bg);\n}\n\n.label-info {\n  .label-variant(@label-info-bg);\n}\n\n.label-warning {\n  .label-variant(@label-warning-bg);\n}\n\n.label-danger {\n  .label-variant(@label-danger-bg);\n}\n","//\n// Badges\n// --------------------------------------------------\n\n\n// Base classes\n.badge {\n  display: inline-block;\n  min-width: 10px;\n  padding: 3px 7px;\n  font-size: @font-size-small;\n  font-weight: @badge-font-weight;\n  color: @badge-color;\n  line-height: @badge-line-height;\n  vertical-align: baseline;\n  white-space: nowrap;\n  text-align: center;\n  background-color: @badge-bg;\n  border-radius: @badge-border-radius;\n\n  // Empty badges collapse automatically (not available in IE8)\n  &:empty {\n    display: none;\n  }\n\n  // Quick fix for badges in buttons\n  .btn & {\n    position: relative;\n    top: -1px;\n  }\n  .btn-xs & {\n    top: 0;\n    padding: 1px 5px;\n  }\n}\n\n// Hover state, but only for links\na.badge {\n  &:hover,\n  &:focus {\n    color: @badge-link-hover-color;\n    text-decoration: none;\n    cursor: pointer;\n  }\n}\n\n// Account for counters in navs\na.list-group-item.active > .badge,\n.nav-pills > .active > a > .badge {\n  color: @badge-active-color;\n  background-color: @badge-active-bg;\n}\n.nav-pills > li > a > .badge {\n  margin-left: 3px;\n}\n","//\n// Jumbotron\n// --------------------------------------------------\n\n\n.jumbotron {\n  padding: @jumbotron-padding;\n  margin-bottom: @jumbotron-padding;\n  color: @jumbotron-color;\n  background-color: @jumbotron-bg;\n\n  h1,\n  .h1 {\n    color: @jumbotron-heading-color;\n  }\n  p {\n    margin-bottom: (@jumbotron-padding / 2);\n    font-size: @jumbotron-font-size;\n    font-weight: 200;\n  }\n\n  .container & {\n    border-radius: @border-radius-large; // Only round corners at higher resolutions if contained in a container\n  }\n\n  .container {\n    max-width: 100%;\n  }\n\n  @media screen and (min-width: @screen-sm-min) {\n    padding-top:    (@jumbotron-padding * 1.6);\n    padding-bottom: (@jumbotron-padding * 1.6);\n\n    .container & {\n      padding-left:  (@jumbotron-padding * 2);\n      padding-right: (@jumbotron-padding * 2);\n    }\n\n    h1,\n    .h1 {\n      font-size: (@font-size-base * 4.5);\n    }\n  }\n}\n","//\n// Alerts\n// --------------------------------------------------\n\n\n// Base styles\n// -------------------------\n\n.alert {\n  padding: @alert-padding;\n  margin-bottom: @line-height-computed;\n  border: 1px solid transparent;\n  border-radius: @alert-border-radius;\n\n  // Headings for larger alerts\n  h4 {\n    margin-top: 0;\n    // Specified for the h4 to prevent conflicts of changing @headings-color\n    color: inherit;\n  }\n  // Provide class for links that match alerts\n  .alert-link {\n    font-weight: @alert-link-font-weight;\n  }\n\n  // Improve alignment and spacing of inner content\n  > p,\n  > ul {\n    margin-bottom: 0;\n  }\n  > p + p {\n    margin-top: 5px;\n  }\n}\n\n// Dismissable alerts\n//\n// Expand the right padding and account for the close button's positioning.\n\n.alert-dismissable {\n padding-right: (@alert-padding + 20);\n\n  // Adjust close link position\n  .close {\n    position: relative;\n    top: -2px;\n    right: -21px;\n    color: inherit;\n  }\n}\n\n// Alternate styles\n//\n// Generate contextual modifier classes for colorizing the alert.\n\n.alert-success {\n  .alert-variant(@alert-success-bg; @alert-success-border; @alert-success-text);\n}\n.alert-info {\n  .alert-variant(@alert-info-bg; @alert-info-border; @alert-info-text);\n}\n.alert-warning {\n  .alert-variant(@alert-warning-bg; @alert-warning-border; @alert-warning-text);\n}\n.alert-danger {\n  .alert-variant(@alert-danger-bg; @alert-danger-border; @alert-danger-text);\n}\n","//\n// Progress bars\n// --------------------------------------------------\n\n\n// Bar animations\n// -------------------------\n\n// WebKit\n@-webkit-keyframes progress-bar-stripes {\n  from  { background-position: 40px 0; }\n  to    { background-position: 0 0; }\n}\n\n// Spec and IE10+\n@keyframes progress-bar-stripes {\n  from  { background-position: 40px 0; }\n  to    { background-position: 0 0; }\n}\n\n\n\n// Bar itself\n// -------------------------\n\n// Outer container\n.progress {\n  overflow: hidden;\n  height: @line-height-computed;\n  margin-bottom: @line-height-computed;\n  background-color: @progress-bg;\n  border-radius: @border-radius-base;\n  .box-shadow(inset 0 1px 2px rgba(0,0,0,.1));\n}\n\n// Bar of progress\n.progress-bar {\n  float: left;\n  width: 0%;\n  height: 100%;\n  font-size: @font-size-small;\n  line-height: @line-height-computed;\n  color: @progress-bar-color;\n  text-align: center;\n  background-color: @progress-bar-bg;\n  .box-shadow(inset 0 -1px 0 rgba(0,0,0,.15));\n  .transition(width .6s ease);\n}\n\n// Striped bars\n.progress-striped .progress-bar {\n  #gradient > .striped();\n  background-size: 40px 40px;\n}\n\n// Call animation for the active one\n.progress.active .progress-bar {\n  .animation(progress-bar-stripes 2s linear infinite);\n}\n\n\n\n// Variations\n// -------------------------\n\n.progress-bar-success {\n  .progress-bar-variant(@progress-bar-success-bg);\n}\n\n.progress-bar-info {\n  .progress-bar-variant(@progress-bar-info-bg);\n}\n\n.progress-bar-warning {\n  .progress-bar-variant(@progress-bar-warning-bg);\n}\n\n.progress-bar-danger {\n  .progress-bar-variant(@progress-bar-danger-bg);\n}\n","// Media objects\n// Source: http://stubbornella.org/content/?p=497\n// --------------------------------------------------\n\n\n// Common styles\n// -------------------------\n\n// Clear the floats\n.media,\n.media-body {\n  overflow: hidden;\n  zoom: 1;\n}\n\n// Proper spacing between instances of .media\n.media,\n.media .media {\n  margin-top: 15px;\n}\n.media:first-child {\n  margin-top: 0;\n}\n\n// For images and videos, set to block\n.media-object {\n  display: block;\n}\n\n// Reset margins on headings for tighter default spacing\n.media-heading {\n  margin: 0 0 5px;\n}\n\n\n// Media image alignment\n// -------------------------\n\n.media {\n  > .pull-left {\n    margin-right: 10px;\n  }\n  > .pull-right {\n    margin-left: 10px;\n  }\n}\n\n\n// Media list variation\n// -------------------------\n\n// Undo default ul/ol styles\n.media-list {\n  padding-left: 0;\n  list-style: none;\n}\n","//\n// List groups\n// --------------------------------------------------\n\n\n// Base class\n//\n// Easily usable on 

$hg^L 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